#!/bin/bash # ######################################################### # 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 $driver_path/4-0070 ] then unbind_driver "4-0070" fi if [ -e $driver_path/4-0071 ] then unbind_driver "4-0071" fi if [ -e $driver_path/5-0070 ] then unbind_driver "5-0070" fi if [ -e $driver_path/5-0071 ] then unbind_driver "5-0071" fi elif [ "$1" = "bind" ] then if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0070 ] then bind_driver "4-0070" fi if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0071 ] then bind_driver "4-0071" fi if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0070 ] then bind_driver "5-0070" fi if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0071 ] then bind_driver "5-0071" fi fi exit $status