Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 3 | # shellcheck source=meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powerctrl_library.sh |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 4 | source /usr/libexec/nvme_powerctrl_library.sh |
| 5 | |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 6 | function set_gpio() { |
| 7 | #$1 gpio pin |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 8 | echo "$1" > /sys/class/gpio/export |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 9 | } |
| 10 | |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 11 | echo "Read Clock Gen Value is: $CLOCK_GEN_VALUE" |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 12 | |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 13 | ## Initial U2_PRESENT_N |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 14 | for i in "${!U2_PRESENT[@]}"; |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 15 | do |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 16 | set_gpio "${U2_PRESENT[$i]}"; |
| 17 | set_gpio_direction "${U2_PRESENT[$i]}" 'in'; |
| 18 | echo "Read $i SSD present: $(read_gpio_input "${U2_PRESENT[$i]}")" |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 19 | done |
| 20 | |
| 21 | ## Initial POWER_U2_EN |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 22 | for i in "${!POWER_U2[@]}"; |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 23 | do |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 24 | set_gpio "${POWER_U2[$i]}"; |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 25 | done |
| 26 | |
| 27 | ## Initial PWRGD_U2 |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 28 | for i in "${!PWRGD_U2[@]}"; |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 29 | do |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 30 | set_gpio "${PWRGD_U2[$i]}"; |
| 31 | set_gpio_direction "${PWRGD_U2[$i]}" 'in'; |
| 32 | echo "Read $i SSD Power Good: $(read_gpio_input "${PWRGD_U2[$i]}")" |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 33 | done |
| 34 | |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 35 | ## Initial RST_BMC_U2 |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 36 | for i in "${!RST_BMC_U2[@]}"; |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 37 | do |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 38 | set_gpio "${RST_BMC_U2[$i]}"; |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 39 | done |
| 40 | |
| 41 | ### Initial related Power by Present |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 42 | for i in {0..7}; |
| 43 | do |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 44 | update_value=$(printf '%x\n' "$((0x01 << i))") |
| 45 | if [ "$(read_gpio_input "${U2_PRESENT[$i]}")" == $PLUGGED ];then |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 46 | CLOCK_GEN_VALUE=$(printf '0x%x\n' \ |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 47 | "$((CLOCK_GEN_VALUE | 0x$update_value))") |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 48 | else |
Samuel Jiang | 8e5befe | 2019-10-02 11:19:39 +0800 | [diff] [blame] | 49 | set_gpio_direction "${RST_BMC_U2[$i]}" "low" |
| 50 | set_gpio_direction "${POWER_U2[$i]}" "low" |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 51 | |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 52 | CLOCK_GEN_VALUE=$(printf '0x%x\n' \ |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 53 | "$((CLOCK_GEN_VALUE & ~0x$update_value))") |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 54 | fi |
| 55 | done |
Patrick Williams | 8c22623 | 2023-04-15 20:05:21 -0500 | [diff] [blame^] | 56 | i2cset -y $I2C_BUS $CHIP_ADDR 0 "$CLOCK_GEN_VALUE" s |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 57 | echo "Read Clock Gen Value again is: $CLOCK_GEN_VALUE" |
Samuel Jiang | 94ca061 | 2019-03-21 13:47:13 +0800 | [diff] [blame] | 58 | |
Samuel Jiang | efc4e1d | 2019-04-25 14:43:23 +0800 | [diff] [blame] | 59 | exit 0; |