summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta-ampere/meta-jade/conf/machine/mtjade.conf1
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config.bb44
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweroff@.service10
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere-gpio-poweron@.service10
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-gpio-config/ampere_gpio_utils.sh43
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-defs.sh8
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/gpio-lib.sh3
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 558a6f404..8c43cbd60 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 000000000..69fedd67a
--- /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 000000000..78862eb32
--- /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 000000000..09aa58826
--- /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 000000000..8e4f455bf
--- /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 fce59d581..7c887d409 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 fcc2d5411..8d1aa61d7 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))
}