68 lines
1.6 KiB
Bash
68 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Purpose:
|
|
# The purpose of the script is to change the CB/CL ratio setting of the hotswap controller from 1.9x to 3.9x
|
|
|
|
I2C_BUS=11
|
|
CHIP_ADDR=0x15
|
|
GPIO_ID=91 #Revision ID
|
|
GPIO_BasePath=/sys/class/gpio
|
|
|
|
function set_hotswap_reg()
|
|
{
|
|
#set reg "0xd9" bit 3 to 1
|
|
i2cset -f -y $I2C_BUS $CHIP_ADDR 0xd9 0x08
|
|
}
|
|
|
|
function get_hotswap_value()
|
|
{
|
|
#get the value of reg "0xd9", return value should be "0x08"
|
|
i2cget -f -y $I2C_BUS $CHIP_ADDR 0xd9
|
|
}
|
|
|
|
function export_gpio()
|
|
{
|
|
if [ -d "$GPIO_BasePath/gpio$GPIO_ID" ]; then
|
|
echo "gpio$GPIO_ID folder exist, skip export."
|
|
else
|
|
echo "Export gpio$GPIO_ID..."
|
|
echo $GPIO_ID > $GPIO_BasePath/export
|
|
fi
|
|
}
|
|
|
|
function get_gpio_value()
|
|
{
|
|
cat $GPIO_BasePath/gpio$GPIO_ID/value
|
|
}
|
|
|
|
function setting_hotswap()
|
|
{
|
|
echo "setting hotswap controller..."
|
|
set_hotswap_reg
|
|
|
|
for i in {0..3};
|
|
do
|
|
if [ "$i" == "3" ];then
|
|
echo "change hotswap controller setting failed after retry 3 times."
|
|
else
|
|
hotswap_value=$(get_hotswap_value)
|
|
echo "get hotswap controller return value : $hotswap_value"
|
|
if [ "$hotswap_value" == "0x08" ];then
|
|
echo "change hotswap controller setting success."
|
|
break;
|
|
else
|
|
echo "hotswap controller setting failed, retry $i times..."
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
export_gpio
|
|
gpio_value=$(get_gpio_value)
|
|
if [ "$gpio_value" == "1" ];then
|
|
echo "gpio$GPIO_ID value is: $gpio_value, setting hotswap."
|
|
setting_hotswap
|
|
else
|
|
echo "gpio$GPIO_ID value is: $gpio_value, no need to set hotswap."
|
|
fi
|