1#!/bin/bash 2 3# Disable check for usage of the definitions within kudo-lib.sh 4# shellcheck disable=SC2034 5 6# 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 27# set_gpio_ctrl 28# line-name, high(1)/low(0) 29function set_gpio_ctrl() { 30 #shellcheck disable=SC2046 31 gpioset $(gpiofind "$1")="$2" 32} 33 34# get_gpio_ctrl 35# line-name 36function get_gpio_ctrl() { 37 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 41} 42 43function get_scp_eeprom() { 44 scp_eeprom_sel=$(get_gpio_ctrl BACKUP_SCP_SEL) 45 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 55# 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) 69 70# Board Version Definitions 71BOARDVER_EVT_LAST=64 72BOARDVER_DVT_LAST=127 73BOARDVER_PVT_LAST=191 74