summaryrefslogtreecommitdiffstats
path: root/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/vcs-control/zaius_vcs.sh
blob: 49bf0b04f5f1e1aac438f1bb8c748718fd72e3f1 (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
#!/bin/sh -e
# Read and control VCS rails by sending the UCD power sequencer I2C commands.
# This script assumes that the UCD is controlling VCS rails as GPIOs 5 and 6.
# Also assumes that those GPIOs are already enabled.

ucd_bus="0"
ucd_addr="0x64"
ucd_path="/sys/bus/i2c/drivers/ucd9000"
ucd_driver="${ucd_bus}-00${ucd_addr#0x}"
ucd_retries="5"

retry()
{
    local i=0
    until [ $i -ge $ucd_retries ]; do
        i=$((i+1))
        retry_output=`$@` && break
    done
    local ret=$?
    if [ $i -eq $ucd_retries ]; then exit $ret; fi
}

# Usage: ucd_get address
# Result stored in $ucd_reg
ucd_get()
{
    retry i2cget -f -y $ucd_bus $ucd_addr $1 b
    ucd_reg=$retry_output
}

# Usage: ucd_get address value
ucd_set()
{
    retry i2cset -f -y $ucd_bus $ucd_addr $1 $2 b
}

vcs_set_gpios()
{
    echo -e "\tSetting UCD GPIO 5 to $1"
    ucd_set 0xFA 5
    ucd_set 0xFB $1
    ucd_set 0xFB $1
    echo -e "\tSetting UCD GPIO 6 to $1"
    ucd_set 0xFA 6
    ucd_set 0xFB $1
    ucd_set 0xFB $1
}

vcs_get()
{
    echo Reading VCS settings
    ucd_set 0xFA 5
    ucd_get 0xFB
    local val=`echo $ucd_reg | grep -i -c 0x0f`
    echo -e "\tUCD GPIO 5 state=$val"
    ucd_set 0xFA 6
    ucd_get 0xFB
    local val=`echo $ucd_reg | grep -i -c 0x0f`
    echo -e "\tUCD GPIO 6 state=$val"
}


if [ "$1" == "on" ]; then
    echo Turning on VCS
    vcs_set_gpios 0x7
elif [ "$1" == "off" ]; then
    echo Turning off VCS
    vcs_set_gpios 0x3
else
    vcs_get
    echo "$0 <on|off>" to set state
fi
OpenPOWER on IntegriCloud