diff options
7 files changed, 118 insertions, 1 deletions
diff --git a/meta-ampere/meta-jade/conf/machine/mtjade.conf b/meta-ampere/meta-jade/conf/machine/mtjade.conf index 558a6f4044..8c43cbd600 100644 --- a/meta-ampere/meta-jade/conf/machine/mtjade.conf +++ b/meta-ampere/meta-jade/conf/machine/mtjade.conf @@ -33,6 +33,7 @@ OBMC_IMAGE_EXTRA_INSTALL_append = "\ ampere-usbnet \ ampere-flash-utils \ ampere-mac-update \ + mtjade-gpio-config \ " PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-ampere-apps" diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config.bb b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config.bb new file mode 100644 index 0000000000..69fedd67af --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config.bb @@ -0,0 +1,44 @@ +SUMMARY = "Ampere Computing LLC Utilities" +DESCRIPTION = "Ampere Utilities for Mt.Jade systems" +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +inherit systemd +inherit obmc-phosphor-systemd + +S = "${WORKDIR}" + +SRC_URI = " \ + file://ampere_gpio_utils.sh \ + " + +DEPENDS = "systemd" +RDEPENDS_${PN} = "bash" + +SYSTEMD_PACKAGES = "${PN}" + +SYSTEMD_SERVICE_${PN} = " \ + ampere-gpio-poweroff@.service \ + ampere-gpio-poweron@.service \ + " + +# chassis power on +CHASSIS_POWERON_SVC = "ampere-gpio-poweron@.service" +CHASSIS_POWERON_INSTMPL = "ampere-gpio-poweron@{0}.service" +CHASSIS_POWERON_TGTFMT = "obmc-chassis-poweron@{0}.target" +CHASSIS_POWERON_FMT = "../${CHASSIS_POWERON_SVC}:${CHASSIS_POWERON_TGTFMT}.requires/${CHASSIS_POWERON_INSTMPL}" +SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWERON_FMT', 'OBMC_CHASSIS_INSTANCES')}" + +# chassis power off +CHASSIS_POWEROFF_SVC = "ampere-gpio-poweroff@.service" +CHASSIS_POWEROFF_INSTMPL = "ampere-gpio-poweroff@{0}.service" +CHASSIS_POWEROFF_TGTFMT = "obmc-chassis-poweroff@{0}.target" +CHASSIS_POWEROFF_FMT = "../${CHASSIS_POWEROFF_SVC}:${CHASSIS_POWEROFF_TGTFMT}.requires/${CHASSIS_POWEROFF_INSTMPL}" +SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWEROFF_FMT', 'OBMC_CHASSIS_INSTANCES')}" + +do_install() { + install -d ${D}/usr/sbin + install -m 0755 ${WORKDIR}/ampere_gpio_utils.sh ${D}/${sbindir}/ +} + diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweroff@.service b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweroff@.service new file mode 100644 index 0000000000..78862eb327 --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweroff@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Ampere set GPIOs before power off +Requires=op-wait-power-off@%i.service +Before=op-wait-power-off@%i.service +Conflicts=obmc-chassis-poweron@%i.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/env ampere_gpio_utils.sh power off +SyslogIdentifier=ampere_gpio_utils
\ No newline at end of file diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweron@.service b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweron@.service new file mode 100644 index 0000000000..09aa58826a --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweron@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Ampere set GPIOs before power on +Requires=op-wait-power-on@%i.service +Before=op-wait-power-on@%i.service +Conflicts=obmc-chassis-poweroff@%i.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/env ampere_gpio_utils.sh power on +SyslogIdentifier=ampere_gpio_utils diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere_gpio_utils.sh b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere_gpio_utils.sh new file mode 100644 index 0000000000..8e4f455bfc --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere_gpio_utils.sh @@ -0,0 +1,43 @@ +#!/bin/bash +source /usr/sbin/gpio-defs.sh +source /usr/sbin/gpio-lib.sh + +function usage() { + echo "usage: ampere_gpio_utils.sh [power] [on|off]"; +} + +set_gpio_power_off() { + echo "Setting GPIO before Power off" + gpio_configure_output $OCP_AUX_PWREN 1 + gpio_configure_output $OCP_MAIN_PWREN 0 + gpio_configure_output $SPI0_PROGRAM_SEL 0 +} + +set_gpio_power_on() { + echo "Setting GPIO before Power on" + gpio_configure_output $OCP_AUX_PWREN 1 + gpio_configure_output $OCP_MAIN_PWREN 1 + gpio_configure_output $SPI0_PROGRAM_SEL 1 + gpio_configure_output $SPI0_BACKUP_SEL 0 +} + +if [ $# -lt 2 ]; then + echo "Total number of parameter=$#" + echo "Insufficient parameter" + usage; + exit 0; +fi + +if [ $1 == "power" ]; then + if [ $2 == "on" ]; then + set_gpio_power_on + elif [ $2 == "off" ]; then + set_gpio_power_off + fi + exit 0; +else + echo "Invalid parameter1=$1" + usage; + exit 0; +fi +exit 0; diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-defs.sh b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-defs.sh index fce59d581f..7c887d4090 100644 --- a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-defs.sh +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-defs.sh @@ -30,3 +30,11 @@ SLAVE_PRESENT_L=230 ### Common GPIOs SYS_PSON_L=42 BMC_READY=229 + +### OCP power selection +OCP_AUX_PWREN=139 +OCP_MAIN_PWREN=140 + +### SPI0 Mode selection +SPI0_PROGRAM_SEL=226 +SPI0_BACKUP_SEL=227 diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-lib.sh b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-lib.sh index fcc2d5411f..8d1aa61d77 100644 --- a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-lib.sh +++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-lib.sh @@ -1,7 +1,8 @@ #!/bin/bash +source /usr/sbin/gpio-defs.sh function gpio_number() { - GPIO_BASE=$(cat /sys/class/gpio/gpio*/base) + GPIO_BASE=$(cat /sys/class/gpio/gpiochip$GPIO_CHIP0_BASE/base) echo $((${GPIO_BASE} + $1)) } |