diff options
author | Allen.Wang <Allen_Wang@quantatw.com> | 2022-03-02 09:55:03 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2022-03-03 19:12:06 +0300 |
commit | 787c9c6b7023a338217e6139f66221ca997b5f73 (patch) | |
tree | 24c871b34bb4f6cf92d707f9b4a2a446732821f5 /meta-facebook | |
parent | f653fc3c2a6213d4181a494783f113839027ee0f (diff) | |
download | openbmc-787c9c6b7023a338217e6139f66221ca997b5f73.tar.xz |
meta-bletchley: motor-ctrl:check ac status before on/off and refine dfu cmd
a)
Block power on/off cmd if ac-relay is off.
b)
From official User Guide, to enter DFU mode must disconnect
the Host from power for at least 10 seconds, but power from
ac relay board maybe not be disappear immediately while pull
ac-relay control gpio to low.
Base on experiment result, expand wait time to 25 sec for
workaround.
Example:
a) When sled2 is ac-off
root@bletchley:/# power-ctrl sled2 on
sled2 is ac-off, please turn on ac before power on
root@bletchley:/# power-ctrl sled2 off
sled2 is already ac-off
b)
Tested 10 times into dfu mode successfully
root@bletchley:/# power-ctrl sled2 dfu
Set host2 DFU mode
SLED2: turn ac-off
set_gpio: set power-host2 = 0 success
SLED2: pressing power button
Motor go forward to press Power button
Power button switch triggered
SLED2: turn ac-on
set_gpio: set power-host2 = 1 success
SLED2: releasing host power button
Motor reverse to initial position successful
Change-Id: Idb006ed1c58fd1736fc9410ca86d86a6ec87a6b9
Signed-off-by: Allen.Wang <Allen_Wang@quantatw.com>
Diffstat (limited to 'meta-facebook')
-rwxr-xr-x | meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl index 643d7ca36b..9395b9d304 100755 --- a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl +++ b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl @@ -200,11 +200,21 @@ if [ "$SLED_PRESENT" != 0 ];then fi if [[ "$ACTION" == "on" ]]; then - echo "Power on ${SLED}" - trigger_power_button "$SLED_NUM" "$DELAY_POWER_ON" + if [ "$(get_ac_status "$SLED_NUM")" == "AC on" ];then + echo "Power on ${SLED}" + trigger_power_button "$SLED_NUM" "$DELAY_POWER_ON" + else + echo "${SLED} is ac-off, please turn on ac before power on" + exit 1 + fi elif [[ "$ACTION" == "off" ]];then - echo "Power off ${SLED}" - trigger_power_button "$SLED_NUM" "$DELAY_POWER_OFF" + if [ "$(get_ac_status "$SLED_NUM")" == "AC on" ];then + echo "Power off ${SLED}" + trigger_power_button "$SLED_NUM" "$DELAY_POWER_OFF" + else + echo "${SLED} is already ac-off" + exit 1 + fi elif [[ "$ACTION" == "status" ]];then get_ac_status "$SLED_NUM" #TODO : check or record Host(DC) power status @@ -215,12 +225,12 @@ elif [[ "$ACTION" == "ac-off" ]];then elif [[ "$ACTION" == "dfu" ]]; then echo "Set host$SLED_NUM DFU mode" - # turn ac off + # turn ac off, and hold for 25 seconds echo "SLED$SLED_NUM: turn ac-off" set_gpio "power-host${SLED_NUM}" 0 - sleep 1 + sleep 25 - # press power button, and hold for 10 seconds + # press power button echo "SLED$SLED_NUM: pressing power button" if ! press_power_button "$SLED_NUM"; then echo "SLED$SLED_NUM: press power button failed" @@ -228,7 +238,7 @@ elif [[ "$ACTION" == "dfu" ]]; then release_power_button "$SLED_NUM" exit 1 fi - sleep 10 + sleep 1 # turn ac on echo "SLED$SLED_NUM: turn ac-on" |