diff options
author | Ed Tanous <ed.tanous@intel.com> | 2019-06-20 19:46:38 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-20 19:46:38 +0300 |
commit | 43a183cc0926da36e3a218efa02ab4838ace316f (patch) | |
tree | 9ea192b408585fc2a19b54d196c3d56eaddc4acb /meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh | |
parent | 5575b1d27fc222f973d96dc06af0f21ba7656f28 (diff) | |
parent | 2c7e8f4ce61f2e0407c37e98e22bbb13e562b414 (diff) | |
download | openbmc-43a183cc0926da36e3a218efa02ab4838ace316f.tar.xz |
Merge pull request #12 from Intel-BMC/update
Update
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 | 82 |
1 files changed, 28 insertions, 54 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 index 91beec566..753c6c4cf 100644 --- 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 @@ -1,73 +1,47 @@ #!/bin/bash +source /usr/libexec/nvme_powerctrl_library.sh 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 recovery_power() +{ + set_gpio_direction "${POWER_U2[$1]}" "low" + sleep 0.2 + set_gpio_direction "${POWER_U2[$1]}" "high" + sleep 0.2 + check_powergood $1 } -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]}" +do + U2_PRESENT_STATUS[$i]=$(read_gpio_input ${U2_PRESENT[$i]}) done - ## Loop while while : do for i in {0..7}; do - ## 1 scend scan all loop + ## 1 second 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 + read_present=$(read_gpio_input ${U2_PRESENT[$i]}) + if [ "$read_present" != "${U2_PRESENT_STATUS[$i]}" ];then + U2_PRESENT_STATUS[$i]="$read_present" + if [ "$read_present" == $PLUGGED ];then + echo "NVME $i Enable Power" + enable_nvme_power $i + else + echo "NVME $i Disable Power" + disable_nvme_power $i + fi + else + if [ "${U2_PRESENT_STATUS[$i]}" == $PLUGGED ] && + [ $(read_gpio_input ${PWRGD_U2[$i]}) == 0 ];then + echo "NVME $i Recovery Power" + recovery_power $i + fi + fi done done |