diff options
Diffstat (limited to 'meta-ampere')
19 files changed, 284 insertions, 52 deletions
diff --git a/meta-ampere/meta-common/recipes-ac01/packagegroups/packagegroup-ampere-apps.bb b/meta-ampere/meta-common/recipes-ac01/packagegroups/packagegroup-ampere-apps.bb index 856d3dc0a..ede8d9db5 100644 --- a/meta-ampere/meta-common/recipes-ac01/packagegroups/packagegroup-ampere-apps.bb +++ b/meta-ampere/meta-common/recipes-ac01/packagegroups/packagegroup-ampere-apps.bb @@ -31,9 +31,11 @@ RDEPENDS:${PN}-chassis = " \ SUMMARY:${PN}-system = "Ampere System" RDEPENDS:${PN}-system = " \ + smbios-mdr \ " SUMMARY:${PN}-flash = "Ampere Flash" RDEPENDS:${PN}-flash = " \ ampere-flash-utils \ + phosphor-software-manager \ " diff --git a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh new file mode 100755 index 000000000..af3e2bead --- /dev/null +++ b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# +# Copyright (c) 2021 Ampere Computing LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script updates the EDKII / SCP firmware. +# Author : Chanh Nguyen (chnguyen@amperecomputing.com) +# Date : Sep 7, 2021 +# Modified: + +usage () { + echo "Usage:" + echo " $(basename $0) <image path> " + echo "Where:" + echo " <image path>: the path link to folder, which include image file and MANIFEST" + echo "Example:" + echo " $(basename $0) /tmp/images/ghdh1393" +} + + +IMG_PATH="$1" +if [ ! -d $IMG_PATH ]; then + echo $IMG_PATH + echo "The folder $IMG_PATH does not exist" + usage + exit 1 +fi + +MANIFEST_PATH="${IMG_PATH}/MANIFEST" +if [ ! -f $MANIFEST_PATH ]; then + echo $MANIFEST_PATH + echo "The MANIFEST file $MANIFEST_PATH does not exist" + usage + exit 1 +fi + +EXTENDED_VERSION=$(awk '/ExtendedVersion/ {print}' ${MANIFEST_PATH} | cut -d "=" -f 2) + +# If the ExtendedVersion is empty, set default to update UEFI/EDKII on primary device +if [ -z "$EXTENDED_VERSION" ] +then + EXTENDED_VERSION="primary" +fi + +# Assign the command based on the ExtendedVersion +case ${EXTENDED_VERSION} in + "primary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_flash_bios.sh $IMAGE 1' + ;; + + "secondary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_flash_bios.sh $IMAGE 2' + ;; + + "scp-primary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 1' + ;; + + "scp-secondary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 2' + ;; + + "fru") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.bin" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh fru $IMAGE' + ;; + + *) + echo "Invalid ExtendedVersion: ${EXTENDED_VERSION}. Please check MANIFEST file!" + exit 1 + ;; +esac + + +if [ -z "$IMAGE" ] +then + echo "ERROR: The image file: No such file or directory" + exit 1 +else + eval $CMD +fi + +if [[ $? -ne 0 ]]; then + echo "ERROR: The firmware update not successfull" + exit 1 +fi diff --git a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-host-bios@.service b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-host-bios@.service index c344600b2..036b78928 100644 --- a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-host-bios@.service +++ b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-host-bios@.service @@ -4,4 +4,4 @@ Description=Ampere service for flashing the Host firmware image [Service] Type=oneshot RemainAfterExit=no -ExecStart=/usr/sbin/ampere_flash_bios.sh /tmp/images/%I/*.img +ExecStart=/usr/sbin/firmware_update.sh /tmp/images/%I diff --git a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend index f5a250d60..853e5464a 100644 --- a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend +++ b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend @@ -1,7 +1,18 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" +SRC_URI += " \ + file://firmware_update.sh \ + " + PACKAGECONFIG[flash_bios] = "-Dhost-bios-upgrade=enabled, -Dhost-bios-upgrade=disabled" -PACKAGECONFIG:append_ = " flash_bios" +PACKAGECONFIG:append = " flash_bios" + +SYSTEMD_SERVICE:${PN}:updater += "${@bb.utils.contains('PACKAGECONFIG', 'flash_bios', 'obmc-flash-host-bios@.service', '', d)}" + +RDEPENDS:${PN} += "bash" -SYSTEMD_SERVICE:${PN}-updater += "${@bb.utils.contains('PACKAGECONFIG', 'flash_bios', 'obmc-flash-host-bios@.service', '', d)}" +do_install:append() { + install -d ${D}/usr/sbin + install -m 0755 ${WORKDIR}/firmware_update.sh ${D}/usr/sbin/firmware_update.sh +} diff --git a/meta-ampere/meta-common/recipes-phosphor/ipmi/ampere-ipmi-oem.bb b/meta-ampere/meta-common/recipes-phosphor/ipmi/ampere-ipmi-oem.bb new file mode 100644 index 000000000..e0a6819b6 --- /dev/null +++ b/meta-ampere/meta-common/recipes-phosphor/ipmi/ampere-ipmi-oem.bb @@ -0,0 +1,32 @@ +SUMMARY = "Ampere OEM IPMI commands" +DESCRIPTION = "Ampere OEM IPMI commands" + +LICENSE = "Apache-2.0" +S = "${WORKDIR}" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +DEPENDS = "boost phosphor-ipmi-host phosphor-logging systemd libgpiod" + +inherit cmake obmc-phosphor-ipmiprovider-symlink + +EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1" + +LIBRARY_NAMES = "libzampoemcmds.so" + +S = "${WORKDIR}/git" +SRC_URI = "git://github.com/openbmc/ampere-ipmi-oem.git" +SRCREV = "1463f7013a17699081c1fbf506ee8d57827d1088" + +HOSTIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}" +NETIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}" + +FILES:${PN}:append = " ${libdir}/ipmid-providers/lib*${SOLIBS}" +FILES:${PN}:append = " ${libdir}/host-ipmid/lib*${SOLIBS}" +FILES:${PN}:append = " ${libdir}/net-ipmid/lib*${SOLIBS}" +FILES:${PN}-dev:append = " ${libdir}/ipmid-providers/lib*${SOLIBSDEV}" + +do_install:append(){ + install -d ${D}${includedir}/ampere-ipmi-oem + install -m 0644 -D ${S}/include/*.hpp ${D}${includedir}/ampere-ipmi-oem +} diff --git a/meta-ampere/meta-common/recipes-phosphor/smbios/smbios-mdr_git.bbappend b/meta-ampere/meta-common/recipes-phosphor/smbios/smbios-mdr_git.bbappend new file mode 100644 index 000000000..cbc9b80f8 --- /dev/null +++ b/meta-ampere/meta-common/recipes-phosphor/smbios/smbios-mdr_git.bbappend @@ -0,0 +1,3 @@ +PACKAGECONFIG:append = " smbios-ipmi-blob" + +PACKAGECONFIG:remove = " cpuinfo"
\ No newline at end of file diff --git a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager/ampere-reset-host-check@.service b/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager/ampere-reset-host-check@.service deleted file mode 100644 index 83f6581be..000000000 --- a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager/ampere-reset-host-check@.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Check Host%i status on BMC reset -Wants=phosphor-ipmi-host.service -After=phosphor-ipmi-host.service -Wants=obmc-host-reset-running@%i.target -Before=obmc-host-reset-running@%i.target -Wants=op-reset-chassis-on@%i.service -After=op-reset-chassis-on@%i.service -Conflicts=obmc-host-stop@%i.target -ConditionPathExists=/run/openbmc/chassis@%i-on - -[Service] -RemainAfterExit=yes -Type=oneshot -ExecStart=/usr/sbin/ampere_host_check.sh 1 0 - -[Install] -WantedBy=obmc-host-reset@%i.target
\ No newline at end of file diff --git a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend index b25ba5d94..03df6a30e 100644 --- a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend +++ b/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -4,12 +4,3 @@ DEPS_CFG = "resetreason.conf" DEPS_TGT = "phosphor-discover-system-state@.service" SYSTEMD_OVERRIDE:${PN}-discover:append = "${DEPS_CFG}:${DEPS_TGT}.d/${DEPS_CFG}" -FILES:${PN} += "${systemd_system_unitdir}/*" - -SRC_URI += " \ - file://ampere-reset-host-check@.service \ - " - -do_install:append() { - install -m 0644 ${WORKDIR}/ampere-reset-host-check@.service ${D}${systemd_unitdir}/system/phosphor-reset-host-check@.service -} diff --git a/meta-ampere/meta-jade/conf/local.conf.sample b/meta-ampere/meta-jade/conf/local.conf.sample index 1d3c71471..f393fceb2 100644 --- a/meta-ampere/meta-jade/conf/local.conf.sample +++ b/meta-ampere/meta-jade/conf/local.conf.sample @@ -81,8 +81,8 @@ DISTRO ?= "openbmc-phosphor" # - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) # - 'package_rpm' for rpm style packages # E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" -# We default to rpm: -PACKAGE_CLASSES ?= "package_rpm" +# We default to ipk: +PACKAGE_CLASSES ?= "package_ipk" # # SDK/ADT target architecture diff --git a/meta-ampere/meta-jade/conf/machine/mtjade.conf b/meta-ampere/meta-jade/conf/machine/mtjade.conf index 2c948df6d..b42557566 100644 --- a/meta-ampere/meta-jade/conf/machine/mtjade.conf +++ b/meta-ampere/meta-jade/conf/machine/mtjade.conf @@ -32,6 +32,8 @@ OBMC_IMAGE_EXTRA_INSTALL:append = "\ ampere-mac-update \ mtjade-gpio-config \ mtd-utils \ + ampere-platform-init \ + ampere-ipmi-oem \ " PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-ampere-apps" diff --git a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update.bb b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update.bb index b6ddfad80..b6ddfad80 100644 --- a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update.bb +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update.bb diff --git a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update/ampere_update_mac.service b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update/ampere_update_mac.service index 86f7a0346..3425e4571 100644 --- a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update/ampere_update_mac.service +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update/ampere_update_mac.service @@ -1,9 +1,10 @@ [Unit] Description=Updating MAC Address Service From FRU inventory -After=xyz.openbmc_project.Inventory.Manager.service +Requires=xyz.openbmc_project.EntityManager.service +After=xyz.openbmc_project.EntityManager.service [Service] -ExecStart=/usr/sbin/ampere_update_mac.sh +ExecStart=/usr/bin/env ampere_update_mac.sh SyslogIdentifier=ampere_update_mac.sh Type=oneshot RemainAfterExit=yes diff --git a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update/ampere_update_mac.sh b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update/ampere_update_mac.sh index 5dbdde771..4e4d6f3e7 100644 --- a/meta-ampere/meta-common/recipes-ac01/mac/ampere-mac-update/ampere_update_mac.sh +++ b/meta-ampere/meta-jade/recipes-ampere/platform/ampere-mac-update/ampere_update_mac.sh @@ -2,18 +2,17 @@ # # This script is used to get the MAC Address from FRU Inventory information -ETHERNET_INTERFACE="eth0" +ETHERNET_INTERFACE="eth1" +ETHERNET_NCSI="eth0" ENV_ETH="eth1addr" -ENV_MAC_ADDR=`fw_printenv` +ENV_MAC_ADDR=`fw_printenv | grep $ENV_ETH` -# Check if BMC MAC address is exported -if [[ $ENV_MAC_ADDR =~ $ENV_ETH ]]; then - echo "WARNING: BMC MAC address already exist!" - exit 0 -fi +# Workaround to dhcp NC-SI eth0 interface when BMC boot up +ifconfig ${ETHERNET_NCSI} down +ifconfig ${ETHERNET_NCSI} up # Read FRU Board Custom Field 1 to get the MAC address -CUSTOM_FIELD_1=`busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard xyz.openbmc_project.Inventory.Item.NetworkInterface MACAddress` +CUSTOM_FIELD_1=`busctl get-property xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/Mt_Jade_Motherboard xyz.openbmc_project.FruDevice BOARD_INFO_AM1` MAC_ADDR=`echo $CUSTOM_FIELD_1 | cut -d "\"" -f 2` # Check if BMC MAC address is exported @@ -23,6 +22,12 @@ if [ -z "${MAC_ADDR}" ]; then exit 1 fi +# Check if BMC MAC address is exported +if [[ $ENV_MAC_ADDR =~ $MAC_ADDR ]]; then + echo "WARNING: BMC MAC address already exist!" + exit 0 +fi + # Request to update the MAC address fw_setenv ${ENV_ETH} ${MAC_ADDR} 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..a2578fa2f --- /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_configure_output 195 1 + +# GPIO_BMC_READY +gpio_configure_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_configure_output 138 1 + + # GPIOS5 GPIO_BMC_VR_PMBUS_SEL_L + gpio_configure_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 diff --git a/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend index e9e6aa0ad..7136be64f 100644 --- a/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend +++ b/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend @@ -1,6 +1,14 @@ -RDEPENDS:${PN}-extras:append:mtjade = " webui-vue phosphor-image-signing phosphor-virtual-sensor" -RDEPENDS:${PN}-inventory:append:mtjade = " fault-monitor id-button psu-hotswap-reset" +RDEPENDS:${PN}-extras:append:mtjade = " \ + webui-vue \ + phosphor-image-signing \ + phosphor-virtual-sensor \ + " RDEPENDS:${PN}-inventory:append:mtjade = " \ - host-gpio-handling \ + fault-monitor \ + id-button \ + psu-hotswap-reset \ + host-gpio-handling \ + dbus-sensors \ + entity-manager \ " diff --git a/meta-ampere/meta-jade/recipes-phosphor/settings/phosphor-settings-manager/mtjade_settings.override.yml b/meta-ampere/meta-jade/recipes-phosphor/settings/phosphor-settings-manager/mtjade_settings.override.yml index 757371647..83a1623d6 100644 --- a/meta-ampere/meta-jade/recipes-phosphor/settings/phosphor-settings-manager/mtjade_settings.override.yml +++ b/meta-ampere/meta-jade/recipes-phosphor/settings/phosphor-settings-manager/mtjade_settings.override.yml @@ -29,3 +29,9 @@ Default: 100 Threshold: Default: 1 + +/xyz/openbmc_project/control/host0/power_restore_policy: + - Interface: xyz.openbmc_project.Control.Power.RestorePolicy + Properties: + PowerRestorePolicy: + Default: RestorePolicy::Policy::AlwaysOn diff --git a/meta-ampere/meta-jade/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-ampere/meta-jade/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json index dd218c0c9..f2722c881 100644 --- a/meta-ampere/meta-jade/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json +++ b/meta-ampere/meta-jade/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json @@ -4,8 +4,7 @@ "power_config": { "power_good_in": "PGOOD", "power_up_outs": [ - {"name": "BMC_SYS_PSON_L", "polarity": false}, - {"name": "BMC_READY", "polarity": true} + {"name": "BMC_SYS_PSON_L", "polarity": false} ], "reset_outs": [ {"name": "BMC_S0_SYSRESET_L", "polarity": false}, @@ -44,11 +43,6 @@ "name": "RESET_BUTTON", "pin": "R5", "direction": "both" - }, - { - "name": "BMC_READY", - "pin": "AC5", - "direction": "out" } ] } |