diff options
author | Benjamin Fair <benjaminfair@google.com> | 2019-04-12 00:18:32 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-04-16 20:09:37 +0300 |
commit | 9729b8223b418aca8e46b8301459e423cf2eabbd (patch) | |
tree | 2740dacc4e06be689ceb5b31bf3fe0e74a706fe1 /meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh | |
parent | 299b3cd91320b47203f662428b28d60d94c5067b (diff) | |
download | openbmc-9729b8223b418aca8e46b8301459e423cf2eabbd.tar.xz |
meta-quanta: gsj: move non-phosphor recipes out of recipes-phosphor
The usb-network and quanta-nvme-powerctrl recipes aren't part of
phosphor, so move them to the machine-spceific recipes-gsj folder
instead.
(From meta-quanta rev: a5787aa49f88aac01eed521e1b3e8f85b73f5c54)
Change-Id: I22b68e1e83dbd0ee3f98288052ffb302b7ef1ff5
Signed-off-by: Benjamin Fair <benjaminfair@google.com>
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh')
-rw-r--r-- | meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh b/meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh new file mode 100644 index 0000000000..91beec5667 --- /dev/null +++ b/meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +U2_PRESENT_STATUS=( 1 1 1 1 1 1 1 1 ) +U2_PRESENT=( 148 149 150 151 152 153 154 155 ) +POWER_U2=( 195 196 202 199 198 197 127 126 ) +PWRGD_U2=( 161 162 163 164 165 166 167 168 ) + + +function set_gpio_direction(){ + #$1 gpio pin, $2 'in','high','low' + echo $2 > /sys/class/gpio/gpio$1/direction +} + +function read_present_set_related_power(){ + #$1 read present number, $2 output power gpio + var="${U2_PRESENT_STATUS[$1]}" + # present 0 is plugged,present 1 is removal + if [ "$var" == "0" ];then + set_gpio_direction $2 "high" + else + set_gpio_direction $2 "low" + fi +} + +function update_u2_status(){ + #$1 read present gpio + var=$(cat /sys/class/gpio/gpio$2/value) + U2_PRESENT_STATUS[$1]="$var" +} + +function check_present_and_powergood(){ + #$2 present gpio, $3 powergood gpio + present=$(cat /sys/class/gpio/gpio$2/value) + pwrgd=$(cat /sys/class/gpio/gpio$3/value) + path=`expr $1` + if [ "$present" -eq 0 ] && [ "$pwrgd" -eq 1 ];then + busctl set-property xyz.openbmc_project.nvme.manager /xyz/openbmc_project/nvme/$path xyz.openbmc_project.Inventory.Item Present b true + else + busctl set-property xyz.openbmc_project.nvme.manager /xyz/openbmc_project/nvme/$path xyz.openbmc_project.Inventory.Item Present b false + if [ "$present" -eq "$pwrgd" ];then + #set fault led + busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/led\_u2\_$1\_fault xyz.openbmc_project.Led.Group Asserted b true + else + busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/led\_u2\_$1\_fault xyz.openbmc_project.Led.Group Asserted b false + fi + + fi + + +} + +##Initial U2 present status +for i in {0..7}; +do + update_u2_status $i "${U2_PRESENT[$i]}" +done + + +## Loop while +while : +do + for i in {0..7}; + do + ## 1 scend scan all loop + sleep 0.125 + read=$(cat /sys/class/gpio/gpio${U2_PRESENT[$i]}/value) + if [ "${U2_PRESENT_STATUS[$1]}" != read ];then + update_u2_status $i "${U2_PRESENT[$i]}" + read_present_set_related_power $i "${POWER_U2[$i]}" + check_present_and_powergood $i "${U2_PRESENT[$i]}" "${POWER_U2[$i]}" + fi + done +done |