#!/bin/bash

# shellcheck source=meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powerctrl_library.sh
source /usr/libexec/nvme_powerctrl_library.sh

function set_gpio() {
  #$1 gpio pin
  echo "$1" > /sys/class/gpio/export
}

echo "Read Clock Gen Value is: $CLOCK_GEN_VALUE"

## Initial U2_PRESENT_N
for i in "${!U2_PRESENT[@]}";
do
    set_gpio "${U2_PRESENT[$i]}";
    set_gpio_direction "${U2_PRESENT[$i]}" 'in';
    echo "Read $i SSD present: $(read_gpio_input "${U2_PRESENT[$i]}")"
done

## Initial POWER_U2_EN
for i in "${!POWER_U2[@]}";
do
    set_gpio "${POWER_U2[$i]}";
done

## Initial PWRGD_U2
for i in "${!PWRGD_U2[@]}";
do
    set_gpio "${PWRGD_U2[$i]}";
    set_gpio_direction "${PWRGD_U2[$i]}" 'in';
    echo "Read $i SSD Power Good: $(read_gpio_input "${PWRGD_U2[$i]}")"
done

## Initial RST_BMC_U2
for i in "${!RST_BMC_U2[@]}";
do
    set_gpio "${RST_BMC_U2[$i]}";
done

### Initial related Power by Present
for i in {0..7};
do
    update_value=$(printf '%x\n' "$((0x01 << i))")
    if [ "$(read_gpio_input "${U2_PRESENT[$i]}")" == $PLUGGED ];then
        CLOCK_GEN_VALUE=$(printf '0x%x\n' \
        "$((CLOCK_GEN_VALUE | 0x$update_value))")
    else
        set_gpio_direction "${RST_BMC_U2[$i]}" "low"
        set_gpio_direction "${POWER_U2[$i]}" "low"

        CLOCK_GEN_VALUE=$(printf '0x%x\n' \
        "$((CLOCK_GEN_VALUE & ~0x$update_value))")
    fi
done
i2cset -y $I2C_BUS $CHIP_ADDR 0 "$CLOCK_GEN_VALUE" s
echo "Read Clock Gen Value again is: $CLOCK_GEN_VALUE"

exit 0;
