#!/bin/bash # Helper script to report firmware version for components on the system (MB CPLD, Backplane CPLD, …) # Author : Hieu Huynh (hieu.huynh@amperecomputing.com) # # Get MB CPLD firmware revision: # ampere_firmware_version.sh mb_cpld # # Get BMC CPLD firmware revision: # ampere_firmware_version.sh bmc_cpld # # Get Backplane CPLD firmware revision: # ampere_firmware_version.sh bp_cpld # : 1 for Front Backplane 1 # 2 for Front Backplane 2 # 3 for Front Backplane 3 # 4 for Rear Backplane 1 # 5 for Rear Backplane 2 # shellcheck disable=SC2046 do_mb_cpld_firmware_report() { echo "MB CPLD" gpioset $(gpiofind hpm-fw-recovery)=1 gpioset $(gpiofind jtag-program-sel)=1 sleep 1 ampere_cpldupdate_jtag -v ampere_cpldupdate_jtag -i } do_bmc_cpld_firmware_report() { echo "BMC CPLD (Only for DC-SCM board)" gpioset $(gpiofind jtag-program-sel)=0 sleep 1 ampere_cpldupdate_jtag -v ampere_cpldupdate_jtag -i } do_bp_cpld_firmware_report() { BP_ID=$1 if [[ $BP_ID == 1 ]]; then echo "Front Backplane 1 CPLD" ampere_cpldupdate_i2c -b 101 -s 0x40 -t 3 -v ampere_cpldupdate_i2c -b 101 -s 0x40 -t 3 -i elif [[ $BP_ID == 2 ]]; then echo "Front Backplane 2 CPLD" ampere_cpldupdate_i2c -b 102 -s 0x40 -t 3 -v ampere_cpldupdate_i2c -b 102 -s 0x40 -t 3 -i elif [[ $BP_ID == 3 ]]; then echo "Front Backplane 3 CPLD" ampere_cpldupdate_i2c -b 100 -s 0x40 -t 3 -v ampere_cpldupdate_i2c -b 100 -s 0x40 -t 3 -i elif [[ $BP_ID == 4 ]]; then echo "Rear Backplane 1 CPLD" ampere_cpldupdate_i2c -b 103 -s 0x40 -t 3 -v ampere_cpldupdate_i2c -b 103 -s 0x40 -t 3 -i elif [[ $BP_ID == 5 ]]; then echo "Rear Backplane 2 CPLD" ampere_cpldupdate_i2c -b 104 -s 0x40 -t 3 -v ampere_cpldupdate_i2c -b 104 -s 0x40 -t 3 -i fi } if [ $# -eq 0 ]; then echo "Usage:" echo " - Get MB CPLD firmware revision" echo " $(basename "$0") mb_cpld" echo " - Get BMC CPLD firmware revision" echo " $(basename "$0") bmc_cpld" echo " - Get Backplane CPLD firmware revision" echo " $(basename "$0") bp_cpld " echo " :" echo " 1 - FrontBP1" echo " 2 - FrontBP2" echo " 3 - FrontBP3" echo " 4 - RearBP1" echo " 5 - RearBP2" exit 0 fi TYPE=$1 ID=$2 if [[ $TYPE == "mb_cpld" ]]; then do_mb_cpld_firmware_report elif [[ $TYPE == "bmc_cpld" ]]; then do_bmc_cpld_firmware_report elif [[ $TYPE == "bp_cpld" ]]; then if [ -z "$ID" ]; then echo "Please choose backplanes id: 1 - FrontBP1, 2 - FrontBP2, 3 - FrontBP3, 4 - FrontBP4, 5 - FrontBP5" exit 0 elif [[ "$ID" -ge "1" ]] && [[ "$ID" -le "5" ]]; then do_bp_cpld_firmware_report "$ID" else echo "Backplanes id invalid" fi fi exit 0