summaryrefslogtreecommitdiffstats
path: root/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/power-workarounds.sh
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/power-workarounds.sh')
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/power-workarounds.sh134
1 files changed, 134 insertions, 0 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/power-workarounds.sh b/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/power-workarounds.sh
new file mode 100644
index 000000000..d40579731
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/avsbus-control/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
OpenPOWER on IntegriCloud