summaryrefslogtreecommitdiff
path: root/meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh
diff options
context:
space:
mode:
authorBenjamin Fair <benjaminfair@google.com>2019-04-12 00:18:32 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2019-04-16 20:09:37 +0300
commit9729b8223b418aca8e46b8301459e423cf2eabbd (patch)
tree2740dacc4e06be689ceb5b31bf3fe0e74a706fe1 /meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh
parent299b3cd91320b47203f662428b28d60d94c5067b (diff)
downloadopenbmc-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.sh73
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