summaryrefslogtreecommitdiffstats
path: root/meta-ibm/meta-witherspoon/recipes-phosphor/chassis/vrm-control/ir35221-unbind-bind.sh
blob: 160cc5d27b31aa78cf236986c33bb057eb32d488 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/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
OpenPOWER on IntegriCloud