diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2020-04-22 21:06:02 +0300 |
---|---|---|
committer | Andrew Geissler <geissonator@yahoo.com> | 2020-04-27 19:52:12 +0300 |
commit | e161514219e0dc8a957dabbb8529fb9fcac4e115 (patch) | |
tree | 5de46006517d690f5793eec41281d60611228ecd /meta-ibm/recipes-phosphor/chassis/power-workarounds | |
parent | a3f54c8b8cbd50bc86efdc52cfb7d348d8c19d21 (diff) | |
download | openbmc-e161514219e0dc8a957dabbb8529fb9fcac4e115.tar.xz |
meta-ibm: move all meta-witherspoon metadata
The metadata common to all IBM systems is confusingly split between
meta-ibm and meta-witherspoon. Move everything to meta-ibm.
The meta-ibm README is re-written to more accurately reflect the scope
of the layer.
Allow the configuration samples (bblayers.conf.sample,
local.conf.sample) to be sourced from either meta-ibm or
meta-witherspoon until such a time that any workflows and tooling have
had the opportunity to move to meta-ibm.
(From meta-ibm rev: 6e05ef2e90b214eaf4e43ee7027bbbb1d8d09442)
Change-Id: I3ec890d5300f9649c974ea6b9dca93a2e8a889ab
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Diffstat (limited to 'meta-ibm/recipes-phosphor/chassis/power-workarounds')
4 files changed, 190 insertions, 0 deletions
diff --git a/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds.sh b/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds.sh new file mode 100644 index 000000000..dc1f4803b --- /dev/null +++ b/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# This should be run before power-on and used to patch/update power specific +# hardware settings. This is platform specific settings that must be +# updated/removed if not Swift. + +########## Program TPS53915 FSW to desired frequency ######### +# FREQUENCY_CONFIG D3h, bits 2:0 + +# AVDD, bus 3 addr 1D, set to 600khz +# 600khz = 1,0,0 +i2cset -y 3 0x1D 0xD3 0x04 b + +# 3.3VA, bus 3 addr 1C, set to 600khz +i2cset -y 3 0x1C 0xD3 0x04 b + +# 3.3VB, bus 3 addr 1B, set to 600khz +i2cset -y 3 0x1B 0xD3 0x04 b + +# 5.0V, bus 3 addr 1A, set to 850khz +# 850khz = 1,1,0 +i2cset -y 3 0x1A 0xD3 0x06 b +########## END Program TPS53915 FSW to desired frequency ######### + diff --git a/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds@.service b/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds@.service new file mode 100644 index 000000000..0926e033b --- /dev/null +++ b/meta-ibm/recipes-phosphor/chassis/power-workarounds/swift/power-workarounds@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Perform power workarounds on VRMs after PGOOD is up +Wants=obmc-power-on@%i.target +After=obmc-power-on@%i.target +Before=obmc-host-start-pre@%i.target +Conflicts=obmc-chassis-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/power-workarounds.sh +SyslogIdentifier=power-workarounds.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target diff --git a/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds.sh b/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds.sh new file mode 100644 index 000000000..d40579731 --- /dev/null +++ b/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds.sh @@ -0,0 +1,134 @@ +#!/bin/sh + +# ensure VCS ON_OFF_CONFIG set correctly from prior FW drivers +# A side +i2cset -y 4 0x70 0x00 0x01 b +i2cset -y 4 0x70 0x02 0x16 b #respond to ENABLE pin +i2cset -y 4 0x70 0x00 0x00 b +# B side +i2cset -y 5 0x70 0x00 0x01 b +i2cset -y 5 0x70 0x02 0x16 b #respond to ENABLE pin +i2cset -y 5 0x70 0x00 0x00 b + +# vddio = 1.0V, mdat/sdat PU enabled +i2cset -y 4 0x12 0xFF 0x00 b # VDD/VCS 0 +i2cset -y 4 0x12 0x2E 0x03 b # VDD/VCS 0 +i2cset -y 4 0x13 0xFF 0x00 b # VDN 0 +i2cset -y 4 0x13 0x2E 0x03 b # VDN 0 +i2cset -y 5 0x12 0xFF 0x00 b # VDD/VCS 1 +i2cset -y 5 0x12 0x2E 0x03 b # VDD/VCS 1 +i2cset -y 5 0x13 0xFF 0x00 b # VDN 1 +i2cset -y 5 0x13 0x2E 0x03 b # VDN 1 + +# A side VDDR - set to 1.23V +i2cset -y 4 0x71 0x00 0x01 +i2cset -y 4 0x71 0x21 0x3B 0x01 i +i2cset -y 4 0x71 0x00 0x00 + +# B side VDDR - set to 1.23V +i2cset -y 5 0x71 0x00 0x01 +i2cset -y 5 0x71 0x21 0x3B 0x01 i +i2cset -y 5 0x71 0x00 0x00 + +# VDN A - PGOOD_ON threshold +i2cset -y 4 0x71 0x00 0x00 b # PAGE +i2cset -y 4 0x71 0x5E 0xCD 0x00 i # set to 0.8V + +# VDN B - PGOOD_ON threshold +i2cset -y 5 0x71 0x00 0x00 b # PAGE +i2cset -y 5 0x71 0x5E 0xCD 0x00 i # set to 0.8V + +# unbind ucd driver to permit i2cset +ucd_retries=5 +ucd= + +ucdpath="/sys/bus/i2c/drivers/ucd9000" +if [ -e $ucdpath ] +then + ucd=`ls -1 $ucdpath | grep 64` + if [ -n "$ucd" ] + then + echo $ucd > $ucdpath/unbind + fi +fi + +# make sure VCS ON_OFF_CONFIG set correctly from old FW releases +i2cset -y 11 0x64 0x00 0x0E i +i2cset -y 11 0x64 0x02 0x16 i +i2cset -y 11 0x64 0x00 0x0F i +i2cset -y 11 0x64 0x02 0x16 i + +## move memory enables to align with VDN (VDN to VDDR leakage issue) +#GPO_CONFIG_1 (GPIO15) : mem 0 reg enables +i2cset -y 11 0x64 0xF7 0x00 i +i2cset -y 11 0x64 0xF8 0x15 0x6E 0x80 0x08 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i +#GPO_CONFIG_2 (GPIO7) : mem 1 reg enables +i2cset -y 11 0x64 0xF7 0x01 i +i2cset -y 11 0x64 0xF8 0x15 0x16 0x80 0x08 0x00 0x00 0x20 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i + +# change VDN delays based on UCD MFR_REVISION setting +REV=`i2cget -y 11 0x64 0x9B i 2|cut -f2 -d' '` +if [ "$REV" == "0x01" -o "$REV" == "0x02" ] ; then + # use 20ms delay for VDN + #TON_DELAY rail 8 + i2cset -y 11 0x64 0x00 0x07 i + i2cset -y 11 0x64 0x60 0x80 0xDA i + #TON_DELAY rail 9 + i2cset -y 11 0x64 0x00 0x08 i + i2cset -y 11 0x64 0x60 0x80 0xDA i +else + # use 70ms delay for VDN + #TON_DELAY rail 8 + i2cset -y 11 0x64 0x00 0x07 i + i2cset -y 11 0x64 0x60 0x30 0xEA i + #TON_DELAY rail 9 + i2cset -y 11 0x64 0x00 0x08 i + i2cset -y 11 0x64 0x60 0x30 0xEA i +fi + +# Raise AVDD +100mV +i2cset -y 11 0x64 0x00 0x09 i # set PAGE +i2cset -y 11 0x64 0xF5 0x81 i # set margin_config +i2cset -y 11 0x64 0x21 0x85 0x33 i # set VOUT_COMMAND + +# Increase over-current settings +#VDD A phase current +i2cset -y 4 0x12 0xFF 0x04 b # set window register high byte to 4 +i2cset -y 4 0x12 0x3C 0x80 b # Set to 64A +#VDD B phase current +i2cset -y 5 0x12 0xFF 0x04 b # set window register high byte to 4 +i2cset -y 5 0x12 0x3C 0x80 b # Set to 64A +#VDD A master OC fault to 445A +i2cset -y 4 0x70 0x00 0x00 b # PAGE +i2cset -y 4 0x70 0x46 0x08DE w +# VDD A master OC warn to 326A +i2cset -y 4 0x70 0x4A 0x08A3 w # A308 +#VDD B master OC fault to 445A +i2cset -y 5 0x70 0x00 0x00 b # PAGE +i2cset -y 5 0x70 0x46 0x08DE w +# VDD B master OC warn to 326A +i2cset -y 5 0x70 0x4A 0x08A3 w +#VCS phase current to 30A C/C +i2cset -y 4 0x12 0xFF 0x08 b # set window register to 8 +i2cset -y 4 0x12 0x3C 0x3C b # 30A +i2cset -y 5 0x12 0xFF 0x08 b # set window register to 8 +i2cset -y 5 0x12 0x3C 0x3C b # 30A +#VCS master OC to 43A +i2cset -y 4 0x70 0x00 0x01 # PAGE 1 +i2cset -y 4 0x70 0x46 0x0816 w # OC to 43A +i2cset -y 5 0x70 0x00 0x01 # PAGE 1 +i2cset -y 5 0x70 0x46 0x0816 w # OC to 43A + +# re-bind ucd driver only if we unbound it (i.e. ucd has been set with a value) +if [ -e $ucdpath -a -n "$ucd" ]; then + j=0 + until [ $j -ge $ucd_retries ] || [ -e $ucdpath/$ucd ]; do + j=$((j+1)) + echo $ucd > $ucdpath/bind || ret=$? + if [ $j -gt 1 ]; then + echo "rebinding UCD driver. Retry number $j" + sleep 1 + fi + done + if [ ! -e $ucdpath/$ucd ]; then exit $ret; fi +fi diff --git a/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds@.service b/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds@.service new file mode 100644 index 000000000..3bd1287ee --- /dev/null +++ b/meta-ibm/recipes-phosphor/chassis/power-workarounds/witherspoon/power-workarounds@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Perform power workarounds on VRMs +Wants=ir35221-on-unbind@%i.service +After=ir35221-on-unbind@%i.service +Before=avsbus-disable@%i.service +Before=obmc-power-on@%i.target +Conflicts=obmc-chassis-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/env power-workarounds.sh +SyslogIdentifier=power-workarounds.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target |