| #!/bin/bash |
| |
| export POWER_BTN_HIGH=0xFF |
| export POWER_BTN_LOW=0xFE |
| export RESET_BTN_HIGH=0xFF |
| export RESET_BTN_LOW=0xFD |
| export power_seq=( "$POWER_BTN_HIGH" "$POWER_BTN_LOW" "$POWER_BTN_HIGH" ) |
| export reset_seq=( "$RESET_BTN_HIGH" "$RESET_BTN_LOW" "$RESET_BTN_HIGH") |
| export SERVICE="xyz.openbmc_project.Ipmi.Channel.Ipmb" |
| export OBJECT_PATH="/xyz/openbmc_project/Ipmi/Channel/Ipmb" |
| export INTERFACE="org.openbmc.Ipmb" |
| export DATA_LEN=0x05 |
| export NETFN=0x06 |
| export LUN=0x00 |
| export CMD=0x52 |
| export STATE_OFF=0 |
| export STATE_ON=1 |
| export STATE_UNKNOWN=-1 |
| export CPLD_BUS_NUM=12 |
| export CPLD_PWR_CTRL_ADDR=0xf |
| export POW_ON_SLOT=0x01 |
| export POW_OFF_SLOT=0x00 |
| export PWRGD_SYS_PWROK_INDEX=12 |
| export IANA="0x15 0xA0 0x0" |
| export IANA_LEN=3 |
| 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" |
| export CHASSIS_PROPERTY_NAME="CurrentPowerState" |
| export HOST_BUS_NAME="xyz.openbmc_project.State.Host" |
| export HOST_OBJ_PATH="/xyz/openbmc_project/state/host" |
| export HOST_INTF_NAME="xyz.openbmc_project.State.Host" |
| export HOST_PROPERTY_NAME="CurrentHostState" |
| export CHASSIS_ON="xyz.openbmc_project.State.Chassis.PowerState.On" |
| export CHASSIS_OFF="xyz.openbmc_project.State.Chassis.PowerState.Off" |
| export HOST_ON="xyz.openbmc_project.State.Host.HostState.Running" |
| export HOST_OFF="xyz.openbmc_project.State.Host.HostState.Off" |
| export IPMB_CMD_COMPLETE_CODE_INDEX=2 |
| |
| host-power-status() |
| { |
| SLOT_ID=$1 |
| |
| response="$(busctl call "$SERVICE" "$OBJECT_PATH" "$INTERFACE" sendRequest yyyyay "$SLOT_ID" 0x38 "$LUN" 0x03 0x03 0x15 0xa0 0x00)" |
| result=$(echo "$response" | cut -d" " -f "$PWRGD_SYS_PWROK_INDEX") |
| res="$(( "$result" & 0x80 ))" |
| status="$(( "$res" >> 7 ))" |
| |
| echo "$status" |
| return 0 |
| } |
| |
| chassis-power-status() |
| { |
| slot=$1 |
| status=-1 |
| |
| if [ "$slot" -le 4 ] |
| then |
| response="$(i2cget -y "$CPLD_BUS_NUM" "$CPLD_PWR_CTRL_ADDR" 0x25)" |
| res="$(( "$response" >> slot ))" |
| status="$(( "$res" & 0x01 ))" |
| fi |
| |
| echo "$status" |
| return 0 |
| } |