From 76e9a067929ff99ba7bc9197ecbb450b1960ee4d Mon Sep 17 00:00:00 2001 From: Matt Spinler Date: Tue, 20 Dec 2016 10:59:13 -0600 Subject: Witherspoon AVS Bus Control Perform an AVS bus workaround on the VRMs attached to the processor. The AVS bus is how the processor talks to the VRMs. After the workaround, this also provides services to disable the AVS bus so a VRM override can be run, and then enable it again afterwards. Change-Id: I68c48ffaafe5d7125556aa9d36cf11bf55ca93ac Signed-off-by: Matt Spinler --- .../recipes-phosphor/chassis/avsbus-control.bb | 40 ++++++++++++++++++++++ .../chassis/avsbus-control/avsbus-disable.sh | 12 +++++++ .../chassis/avsbus-control/avsbus-disable@.service | 14 ++++++++ .../chassis/avsbus-control/avsbus-enable.sh | 12 +++++++ .../chassis/avsbus-control/avsbus-enable@.service | 14 ++++++++ .../chassis/avsbus-control/avsbus-workaround.sh | 7 ++++ .../avsbus-control/avsbus-workaround@.service | 14 ++++++++ 7 files changed, 113 insertions(+) create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control.bb create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh create mode 100644 meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service (limited to 'meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis') diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control.bb b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control.bb new file mode 100644 index 000000000..4430429a4 --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control.bb @@ -0,0 +1,40 @@ +SUMMARY = "Witherspoon AVSBus control" +PR = "r1" + +inherit obmc-phosphor-systemd +inherit obmc-phosphor-license + +RDEPENDS_${PN} += "i2c-tools" + +S = "${WORKDIR}" +SRC_URI += "file://avsbus-workaround.sh \ + file://avsbus-enable.sh \ + file://avsbus-disable.sh" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/avsbus-workaround.sh \ + ${D}${bindir}/avsbus-workaround.sh + install -m 0755 ${WORKDIR}/avsbus-disable.sh \ + ${D}${bindir}/avsbus-disable.sh + install -m 0755 ${WORKDIR}/avsbus-enable.sh \ + ${D}${bindir}/avsbus-enable.sh +} + +TMPL_EN= "avsbus-enable@.service" +TMPL_DIS= "avsbus-disable@.service" +TMPL_WA= "avsbus-workaround@.service" +INSTFMT_EN= "avsbus-enable@{0}.service" +INSTFMT_DIS= "avsbus-disable@{0}.service" +INSTFMT_WA= "avsbus-workaround@{0}.service" +TGTFMT = "obmc-chassis-start@{0}.target" +FMT_EN = "../${TMPL_EN}:${TGTFMT}.wants/${INSTFMT_EN}" +FMT_DIS = "../${TMPL_DIS}:${TGTFMT}.wants/${INSTFMT_DIS}" +FMT_WA = "../${TMPL_WA}:${TGTFMT}.wants/${INSTFMT_WA}" + +SYSTEMD_SERVICE_${PN} += "${TMPL_EN}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_EN', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_SERVICE_${PN} += "${TMPL_DIS}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_DIS', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_SERVICE_${PN} += "${TMPL_WA}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_WA', 'OBMC_CHASSIS_INSTANCES')}" diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh new file mode 100644 index 000000000..1d7977c31 --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +i2cset -y 4 0x70 0x01 0x80 b # VDD 0 +i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set +i2cset -y 4 0x70 0x01 0x80 b # VCS 0 +i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset +i2cset -y 4 0x71 0x01 0x80 b # VDN 0 +i2cset -y 5 0x70 0x01 0x80 b # VDD 1 +i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set +i2cset -y 5 0x70 0x01 0x80 b # VCS 1 +i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset +i2cset -y 5 0x71 0x01 0x80 b # VDN 1 diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service new file mode 100644 index 000000000..1970f00b4 --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service @@ -0,0 +1,14 @@ +[Unit] +Description=Disable the AVS bus on the VRMs +Wants=avsbus-workaround@%i.service +After=avsbus-workaround@%i.service +Before=vrm-control@%i.service +Conflicts=obmc-chassis-stop@%i.target + +[Service] +ExecStart={bindir}/avsbus-disable.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-start@%i.target diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh new file mode 100644 index 000000000..8e857cf1c --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +i2cset -y 4 0x70 0x01 0xB0 b # VDD 0 +i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set +i2cset -y 4 0x70 0x01 0xB0 b # VCS 0 +i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset +i2cset -y 4 0x71 0x01 0xB0 b # VDN 0 +i2cset -y 5 0x70 0x01 0xB0 b # VDD 1 +i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set +i2cset -y 5 0x70 0x01 0xB0 b # VCS 1 +i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset +i2cset -y 5 0x71 0x01 0xB0 b # VDN 1 diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service new file mode 100644 index 000000000..9032f68df --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service @@ -0,0 +1,14 @@ +[Unit] +Description=Enable the AVS bus on VRMs +Wants=vrm-control@%i.service +After=vrm-control@%i.service +Before=vcs_off@%i.service +Conflicts=obmc-chassis-stop@%i.target + +[Service] +ExecStart={bindir}/avsbus-enable.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-start@%i.target diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh new file mode 100644 index 000000000..775c45d5d --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +i2cset -y 4 0x12 0x2E 0x23 b # VDD/VCS 0 +i2cset -y 4 0x13 0x2E 0x23 b # VDN 0 +i2cset -y 5 0x12 0x2E 0x23 b # VDD/VCS 1 +i2cset -y 5 0x13 0x2E 0x23 b # VDN 1 + diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service new file mode 100644 index 000000000..566237140 --- /dev/null +++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service @@ -0,0 +1,14 @@ +[Unit] +Description=Perform AVS bus workaround on VRMs +Wants=ucd_disable_vcs@%i.service +After=ucd_disable_vcs@%i.service +Before=avsbus-disable@%i.service +Conflicts=obmc-chassis-stop@%i.target + +[Service] +ExecStart={bindir}/avsbus-workaround.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-start@%i.target -- cgit v1.2.1