From 7d0f84a633d674313354852ddbecf888c8e47226 Mon Sep 17 00:00:00 2001 From: "Thang Q. Nguyen" Date: Thu, 23 Sep 2021 06:47:52 +0000 Subject: meta-ampere: mtjade: initialize GPIOs Several GPIOs should be configured properly when booting BMC. Currently, these GPIOs are configured in u-boot. However, some must be configured in Linux. For example, the BMC_READY GPIO should be set only after BMC is ready to work. This commit introduce platform-init service which starts after BMC boots to configure GPIOs pins required by hardware design. Tested: 1. Do A/C power, check GPIO227 is set to 0. 2. Reboot BMC, check GPIO227 is set to 0. 3. Run gpioinfo and check GPIO directions Signed-off-by: Thang Q. Nguyen Change-Id: Ie0cfe171659ad740c6a25297f2fcce259870d43d --- meta-ampere/meta-jade/conf/machine/mtjade.conf | 1 + .../platform/ampere-platform-init.bb | 28 +++++++++++ .../ampere-platform-init.service | 12 +++++ .../ampere-platform-init/ampere_platform_init.sh | 54 ++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init.bb create mode 100644 meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service create mode 100644 meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh diff --git a/meta-ampere/meta-jade/conf/machine/mtjade.conf b/meta-ampere/meta-jade/conf/machine/mtjade.conf index 2c948df6d..b0826a9b1 100644 --- a/meta-ampere/meta-jade/conf/machine/mtjade.conf +++ b/meta-ampere/meta-jade/conf/machine/mtjade.conf @@ -32,6 +32,7 @@ OBMC_IMAGE_EXTRA_INSTALL:append = "\ ampere-mac-update \ mtjade-gpio-config \ mtd-utils \ + ampere-platform-init \ " PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-ampere-apps" diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init.bb b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init.bb new file mode 100644 index 000000000..aaeb33ffe --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init.bb @@ -0,0 +1,28 @@ +SUMMARY = "Phosphor OpenBMC Mt.Jade Platform Init Service" +DESCRIPTION = "Phosphor OpenBMC Mt.Jade Platform Init Daemon" + +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +inherit systemd +inherit obmc-phosphor-systemd + +DEPENDS += "systemd" +RDEPENDS:${PN} += "libsystemd" +RDEPENDS:${PN} += "bash" + +SRC_URI = " \ + file://ampere_platform_init.sh \ + file://ampere-platform-init.service \ + " + +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE:${PN} = "ampere-platform-init.service" + +do_install () { + install -d ${D}${sbindir} + install -m 0755 ${WORKDIR}/ampere_platform_init.sh ${D}${sbindir}/ + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/ampere-platform-init.service ${D}${systemd_unitdir}/system +} diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service new file mode 100644 index 000000000..51b3caa1e --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere-platform-init.service @@ -0,0 +1,12 @@ +[Unit] +Description = Mt.Jade Platform Initialization + +[Service] +Restart=no +RemainAfterExit=true +Type=oneshot +ExecStart=/usr/sbin/ampere_platform_init.sh +StandardOutput=syslog + +[Install] +WantedBy=sysinit.target diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh new file mode 100644 index 000000000..a15be6046 --- /dev/null +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-platform-init/ampere_platform_init.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +source /usr/sbin/gpio-lib.sh + +# GPIOAC3 BMC_SPI0_BACKUP_SEL Boot from MAIN SPI-HOST +gpio_configure_output 227 0 + +# GPIOM4 S0_I2C9_ALERT_L +gpio_configure_input 100 + +# GPIOM5 S1_I2C9_ALERT_L +gpio_configure_input 101 + +# GPIOQ7 GPIO_BMC_VGA_FRONT_PRES_L +gpio_configure_input 135 + +# GPIOS0 GPIO_S0_VRHOT_L +gpio_configure_input 144 + +# GPIOS1 GPIO_S1_VRHOT_L +gpio_configure_input 145 + +# GPIOY3 BMC_VGA_SEL +gpio_direction_output 195 1 + +# GPIO_BMC_READY +gpio_direction_output 229 1 + +# ======================================================= +# Below GPIOs are controlled by other services so just +# initialize in A/C power only. +cmdline=`cat /proc/cmdline` +if [[ $cmdline == *resetreason=power* ]]; then + # BMC_GPIOR2_EXT_HIGHTEMP_L + gpio_direction_output 138 1 + + # GPIOS5 GPIO_BMC_VR_PMBUS_SEL_L + gpio_direction_output 149 1 + + # GPIOH7 GPIO_BMC_I2C6_RESET_L + gpio_configure_output 63 1 + + # GPIO_BMC_OCP_AUX_PWREN + gpio_configure_output 139 1 + + # GPIO_BMC_OCP_MAIN_PWREN + gpio_configure_output 140 0 + + # BMC_GPIOAC2_SPI0_PROGRAM_SEL + gpio_configure_output 226 0 + + # BMC_GPIOB0_I2C_BACKUP_SEL + gpio_configure_output 8 1 +fi -- cgit v1.2.3