blob: b501540bd212c37c153e0e6884ed696380b101a6 [file] [log] [blame]
Lancelot Kao96a7ee32021-02-22 18:50:48 -06001#!/bin/bash
2
Charles Boyeraf721712022-02-09 09:17:35 -06003# Disable check for usage of the definitions within kudo-lib.sh
4# shellcheck disable=SC2034
5
Charles Boyerd7d34232022-02-09 08:32:22 -06006# get_gpio_num
7# Dynamically obtains GPIO number from chip base and I2C expanders through line name
8# line-name
9function get_gpio_num() {
10 #shellcheck disable=SC2207
11 CHIP_PIN=($(gpiofind "$1" | awk '{print substr ($1, 9 ), $2 }'))
12 #shellcheck disable=SC2128
13 if [ -z "$CHIP_PIN" ]; then
14 echo "Could not find GPIO with name: $1"
15 return 1
16 fi
17
18 if [ "${CHIP_PIN[0]}" -gt 7 ]; then
19 BUS_ADDR=$(gpiodetect | grep gpiochip"${CHIP_PIN[0]}" | awk '{print substr($2, 2, length($2) - 2)}')
20 GPIO_BASE=$(cat /sys/bus/i2c/devices/"$BUS_ADDR"/gpio/*/base)
21 echo "$((GPIO_BASE+CHIP_PIN[1]))"
22 else
23 echo "$((CHIP_PIN[0]*32+CHIP_PIN[1]))"
24 fi
25}
26
Lancelot Kao96a7ee32021-02-22 18:50:48 -060027# set_gpio_ctrl
Charles Boyerd7d34232022-02-09 08:32:22 -060028# line-name, high(1)/low(0)
Lancelot Kao96a7ee32021-02-22 18:50:48 -060029function set_gpio_ctrl() {
Charles Boyerd7d34232022-02-09 08:32:22 -060030 #shellcheck disable=SC2046
31 gpioset $(gpiofind "$1")="$2"
Lancelot Kao96a7ee32021-02-22 18:50:48 -060032}
33
34# get_gpio_ctrl
Charles Boyerd7d34232022-02-09 08:32:22 -060035# line-name
Lancelot Kao96a7ee32021-02-22 18:50:48 -060036function get_gpio_ctrl() {
Charles Boyerd7d34232022-02-09 08:32:22 -060037 GPIO_NUM=$(get_gpio_num "$1")
38 echo "$GPIO_NUM" > /sys/class/gpio/export
39 cat /sys/class/gpio/gpio"$GPIO_NUM"/value
40 echo "$GPIO_NUM" > /sys/class/gpio/unexport
Lancelot Kao96a7ee32021-02-22 18:50:48 -060041}
Charles Boyeraf721712022-02-09 09:17:35 -060042
Karthikeyan Sundaram0759c752021-11-24 14:33:55 -060043function get_scp_eeprom() {
Charles Boyer878175f2022-07-27 15:35:02 -050044 scp_eeprom_sel=$(get_gpio_ctrl BACKUP_SCP_SEL)
Karthikeyan Sundaram0759c752021-11-24 14:33:55 -060045 case $scp_eeprom_sel in
46 0)
47 echo " Using Secondary SCP EEPROM"
48 ;;
49 1)
50 echo " Using Primary SCP EEPROM"
51 ;;
52 esac
53}
54
Charles Boyeraf721712022-02-09 09:17:35 -060055# I2C Definitions
56# The array is (<bus> <address>), where address is in hexadecimal.
57I2C_BMC_CPLD=(13 76)
58I2C_MB_CPLD=(34 76)
59I2C_S0_SMPRO=(2 4f)
60I2C_S1_SMPRO=(2 4e)
61I2C_FANCTRL=(18 2c)
62I2C_BMC_PWRSEQ=(14 59)
63I2C_MB_PWRSEQ1=(32 40)
64I2C_MB_PWRSEQ2=(32 41)
65I2C_CPU_EEPROM=(40 50)
66I2C_S1_CLKGEN=(37 68)
67I2C_S1_PCIE_CLKGEN1=(16 6a)
68I2C_S1_PCIE_CLKGEN2=(17 67)
Charles Boyer5db75b82022-02-09 09:30:36 -060069
70# Board Version Definitions
71BOARDVER_EVT_LAST=64
72BOARDVER_DVT_LAST=127
Charles Boyer878175f2022-07-27 15:35:02 -050073BOARDVER_PVT_LAST=191