meta-facebook: yosemite4: Support sled power cycle

Description:
- Support sled power cycle
- Revise 12v power control and host power control

Design:
- Add sled power cycle action as chassis 0 by setting virtual i/o exp output port.
- Revise gpio setting and command parameter for 12v power control and host power control.

Test Case:
- Set sled cycle by phosphor-state-manager: pass
- Set 12V on/off/cycle by phosphor-state-manager: pass
- Set host on/off/cycle/reset by phosphor-state-manager: pass

Test Log:
root@yosemite4:~# busctl set-property xyz.openbmc_project.State.Chassis0 /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s "xyz.openbmc_project.State.Chassis.Transition.PowerCycle"
root@yosemite4:~# journalctl --since "20 second ago"
Jul 28 07:03:44 yosemite4 phosphor-chassis-state-manager[349]: Change to Chassis Requested Power State: xyz.openbmc_project.State.Chassis.Transition.PowerCycle
Jul 28 07:03:44 yosemite4 systemd[1]: Created slice Slice /system/chassis-powercycle.
Jul 28 07:03:44 yosemite4 systemd[1]: Starting Chassis Power Cycle: 0...
Jul 28 07:03:45 yosemite4 chassis-powercycle[661]: Starting sled cycle...

Change-Id: I6cdb26a2fd8d4d445ca41302d070a369a40c79dd
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle
index 27e83a9..0db82ce 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle
@@ -6,13 +6,15 @@
 # shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd
 source /usr/libexec/phosphor-state-manager/power-cmd
 
-GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$MEDUSA_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
+GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$SPIDER_BOARD_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
+GPIOCHIP_IO_EXP_SLED_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$MANAGEMENT_BOARD_IO_EXP_BUS_NUM-00$IO_EXP_SLED_PWR_CTRL_ADDR/"*gpiochip*)
 
 #IO 0:7 input port for showing slot 1:8 power status
 #IO 8:16 output port for controlling slot 1:8 power status
 CHASSIS_ID=$1
 IO_EXP_SLOT_PWR_STATUS=$((CHASSIS_ID - 1))
 IO_EXP_SLOT_PWR_CTRL=$((IO_EXP_SLOT_PWR_STATUS + 8))
+IO_EXP_SLED_CYCLE=12
 
 chassis-power-cycle()
 {
@@ -23,13 +25,13 @@
         chassis_status=$(gpioget "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_STATUS")
         if [ "$chassis_status" == "$STATE_ON" ]
         then
-            if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=0
+            if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=1
             then
                 echo "Failed to set slot$1 power off"
             fi
             sleep 10
         fi
-        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=1
+        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=0
         then
             echo "Failed to set slot$1 power on"
         fi
@@ -53,8 +55,11 @@
 
 if [ "$1" == 0 ]
 then
-    # TODO: SLED cycle
-    echo "SLED-cycle is not support for now"
+    echo "Starting sled cycle..."
+    if ! gpioset "$GPIOCHIP_IO_EXP_SLED_PWR_CTRL" "$IO_EXP_SLED_CYCLE"=1
+    then
+        echo "Failed to do sled cycle"
+    fi
 else
     echo "Starting slot$1 cycle"
     chassis-power-cycle "$1"
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff
index 3e1dd3c..991dbc5 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff
@@ -6,7 +6,7 @@
 # shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd
 source /usr/libexec/phosphor-state-manager/power-cmd
 
-GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$MEDUSA_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
+GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$SPIDER_BOARD_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
 
 #IO 0:7 input port for showing slot 1:8 power status
 #IO 8:16 output port for controlling slot 1:8 power status
@@ -17,7 +17,7 @@
 # Server 12v power off
 chassis-power-off()
 {
-        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=0
+        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=1
         then
                 echo "Failed to set slot$1 power off"
         fi
@@ -36,7 +36,7 @@
         fi
 }
 
-chassis_status=$(gpioget "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL $IO_EXP_SLOT_PWR_STATUS")
+chassis_status=$(gpioget "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_STATUS")
 if [ "$chassis_status" == "$STATE_ON" ]
 then
         chassis-power-off
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweron b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweron
index 31d1520..fbd6009 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweron
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/chassis-poweron
@@ -6,7 +6,7 @@
 # shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd
 source /usr/libexec/phosphor-state-manager/power-cmd
 
-GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$MEDUSA_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
+GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$SPIDER_BOARD_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
 
 #IO 0:7 input port for showing slot 1:8 power status
 #IO 8:16 output port for controlling slot 1:8 power status
@@ -17,7 +17,7 @@
 # Server 12v power on
 chassis-power-on()
 {
-        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=1
+        if ! gpioset "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_CTRL"=0
         then
                 echo "Failed to set slot$1 power on"
         fi
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powercycle b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powercycle
index ffa7e40..237e432 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powercycle
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powercycle
@@ -10,7 +10,7 @@
 # Set state effecter state: Entity ID 0x0000 for host power control, 0x3 for power cycle
 GETEID=$(busctl call "$MCTP_BUS_NAME" "$MCTP_OBJ_PATH" "$MCTP_INTF_NAME" LearnEndpoint say "mctpi2c$(($1-1))" 1 0x20)
 EID=$(echo "$GETEID" | awk '{print $2}')
-if ! pldmtool raw -m "$EID" -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x03
+if ! pldmtool raw -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x03 -m "$EID"
 then
     echo "Failed to set host$1 power cycle"
 else
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweroff b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweroff
index 2955050..df881ea 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweroff
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweroff
@@ -10,7 +10,7 @@
 # Set state effecter state: Entity ID 0x0000 for host power control, 0x2 for power off
 GETEID=$(busctl call "$MCTP_BUS_NAME" "$MCTP_OBJ_PATH" "$MCTP_INTF_NAME" LearnEndpoint say "mctpi2c$(($1-1))" 1 0x20)
 EID=$(echo "$GETEID" | awk '{print $2}')
-if ! pldmtool raw -m "$EID" -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x02
+if ! pldmtool raw -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x02 -m "$EID"
 then
     echo "Failed to set host$1 power off"
 else
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweron b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweron
index 915ee76..5dcb1da 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweron
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-poweron
@@ -8,7 +8,7 @@
 # Set state effecter state: Entity ID 0x0000 for host power control, 0x1 for power on
 GETEID=$(busctl call "$MCTP_BUS_NAME" "$MCTP_OBJ_PATH" "$MCTP_INTF_NAME" LearnEndpoint say "mctpi2c$(($1-1))" 1 0x20)
 EID=$(echo "$GETEID" | awk '{print $2}')
-if ! pldmtool raw -m "$EID" -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x01
+if ! pldmtool raw -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x01 -m "$EID"
 then
     echo "Failed to set host$1 power on"
 else
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powerreset b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powerreset
index c060105..d667899 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powerreset
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/host-powerreset
@@ -10,7 +10,7 @@
 # Set state effecter state: Entity ID 0x0000 for host power control, 0x4 for power reset
 GETEID=$(busctl call "$MCTP_BUS_NAME" "$MCTP_OBJ_PATH" "$MCTP_INTF_NAME" LearnEndpoint say "mctpi2c$(($1-1))" 1 0x20)
 EID=$(echo "$GETEID" | awk '{print $2}')
-if ! pldmtool raw -m "$EID" -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x04
+if ! pldmtool raw -d 0x80 0x02 0x39 0x00 0x00 0x01 0x00 0x04 -m "$EID"
 then
     echo "Failed to set host$1 power reset"
 else
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/power-cmd b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/power-cmd
index 759ed98..af5218a 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/power-cmd
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/power-cmd
@@ -3,10 +3,10 @@
 export STATE_OFF=0
 export STATE_ON=1
 export STATE_UNKNOWN=-1
-export MANAGEMENT_BOARD_IO_EXP_BUS_NUM="12"
-export MEDUSA_IO_EXP_BUS_NUM="11"
-export IO_EXP_SLOT_PWR_CTRL_ADDR="22"
-export IO_EXP_SLED_PWR_CTRL_ADDR="22"
+export MANAGEMENT_BOARD_IO_EXP_BUS_NUM="13"
+export SPIDER_BOARD_IO_EXP_BUS_NUM="28"
+export IO_EXP_SLOT_PWR_CTRL_ADDR="21"
+export IO_EXP_SLED_PWR_CTRL_ADDR="21"
 export CHASSIS_BUS_NAME="xyz.openbmc_project.State.Chassis"
 export CHASSIS_OBJ_PATH="/xyz/openbmc_project/state/chassis"
 export CHASSIS_INTF_NAME="xyz.openbmc_project.State.Chassis"