summaryrefslogtreecommitdiff
path: root/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor
diff options
context:
space:
mode:
authorMatt Spinler <spinler@us.ibm.com>2018-05-25 20:29:33 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-05-30 21:21:40 +0300
commit713d1c77229ba667d5e299e8263adc06778c0795 (patch)
tree11182e629bf38c8cb511e78bd645a0a6a29a86fa /meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor
parent5e0a731fcb45debbdedf944b3de7258bb5604bd3 (diff)
downloadopenbmc-713d1c77229ba667d5e299e8263adc06778c0795.tar.xz
wspoon: Retry on VRM bind fails
Enhanced the ir35221-unbind-bind.sh script to: 1) Retry a few times on failures binding the device driver. 2) Still try to bind other devices even if one device fails. The script will still return a nonzero exit code if any of the binds fail. Tested: * Do several power cycles. * Modify script to fail a bind. Check that it returns nonzero. Change-Id: Ia235557292d792998a1c10260fe2bf8b2e631b2c Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Diffstat (limited to 'meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor')
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh65
1 files changed, 49 insertions, 16 deletions
diff --git a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh
index 5c100eb4f..160cc5d27 100644
--- a/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh
+++ b/meta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh
@@ -3,46 +3,79 @@
# Script to run on witherspoon BMC to unbind/bind the ir35221
# driver's devices
+status=0
+max_retries=3
+driver_path="/sys/bus/i2c/drivers/ir35221/"
+platform_path="/sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/"
+
+unbind_driver () {
+ echo $1 > $driver_path/unbind
+}
+
+bind_driver () {
+ device=$1
+ tries=0
+
+ until [ $tries -ge $max_retries ]; do
+ tries=$((tries+1))
+ ret=0
+ echo $device > $driver_path/bind || ret=$?
+ if [ $ret -ne 0 ]; then
+ echo "VRM $1 bind failed. Try $tries"
+ sleep 1
+ else
+ tries=$((max_retries+1))
+ fi
+ done
+
+ #Script will return a nonzero value if any binds fail.
+ if [ $ret -ne 0 ]; then
+ status=$ret
+ fi
+}
+
if [ "$1" = "unbind" ]
then
- if [ -e /sys/bus/i2c/drivers/ir35221/4-0070 ]
+ if [ -e $driver_path/4-0070 ]
then
- echo 4-0070 > /sys/bus/i2c/drivers/ir35221/$1
+ unbind_driver "4-0070"
fi
- if [ -e /sys/bus/i2c/drivers/ir35221/4-0071 ]
+ if [ -e $driver_path/4-0071 ]
then
- echo 4-0071 > /sys/bus/i2c/drivers/ir35221/$1
+ unbind_driver "4-0071"
fi
- if [ -e /sys/bus/i2c/drivers/ir35221/5-0070 ]
+ if [ -e $driver_path/5-0070 ]
then
- echo 5-0070 > /sys/bus/i2c/drivers/ir35221/$1
+ unbind_driver "5-0070"
fi
- if [ -e /sys/bus/i2c/drivers/ir35221/5-0071 ]
+ if [ -e $driver_path/5-0071 ]
then
- echo 5-0071 > /sys/bus/i2c/drivers/ir35221/$1
+ unbind_driver "5-0071"
fi
elif [ "$1" = "bind" ]
then
- if [ -e /sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/1e78a140.i2c-bus/i2c-4/4-0070 ]
+ if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0070 ]
then
- echo 4-0070 > /sys/bus/i2c/drivers/ir35221/$1
+ bind_driver "4-0070"
fi
- if [ -e /sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/1e78a140.i2c-bus/i2c-4/4-0071 ]
+ if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0071 ]
then
- echo 4-0071 > /sys/bus/i2c/drivers/ir35221/$1
+ bind_driver "4-0071"
fi
- if [ -e /sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/1e78a180.i2c-bus/i2c-5/5-0070 ]
+ if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0070 ]
then
- echo 5-0070 > /sys/bus/i2c/drivers/ir35221/$1
+ bind_driver "5-0070"
fi
- if [ -e /sys/devices/platform/ahb/ahb:apb/ahb:apb:i2c@1e78a000/1e78a180.i2c-bus/i2c-5/5-0071 ]
+ if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0071 ]
then
- echo 5-0071 > /sys/bus/i2c/drivers/ir35221/$1
+ bind_driver "5-0071"
fi
fi
+
+exit $status