#!/bin/bash echo echo "-----FPGA Ethanol CRB Register Dump Utility" echo I2CBUS=2 FPGAADDR=0x50 # FPGA FW Version Information FPGA_REG=39 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) MAJOR=$((DATA >> 4)) MINOR=$((DATA & 0x0F)) echo FPGA FW Version: $MAJOR.$MINOR # IP register information FPGA_REG=0 IP_REG_MAX=3 printf "IP Address Registers: " while [ $FPGA_REG -le $IP_REG_MAX ] do # not using printf as integer and hex values are the same for this use DATA=$(i2cget -y $I2CBUS $FPGAADDR $FPGA_REG) if [ $FPGA_REG -ne $IP_REG_MAX ] ; then printf "%d." $DATA else printf "%d\n\n" $DATA fi let FPGA_REG=FPGA_REG+1 done # VDD block - Addresses 16 - 23 FPGA_REG=16 VDD_REG_MAX=23 SOCKET=0 while [ $FPGA_REG -le $VDD_REG_MAX ] do VDD_LOOP_CNT=0 while [ $VDD_LOOP_CNT -le 1 ] do if [ $VDD_LOOP_CNT -eq 0 ] ; then VDD_LOOP_CNT_TXT="Enables" else VDD_LOOP_CNT_TXT="Power Goods" fi DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----P$SOCKET VDD $VDD_LOOP_CNT_TXT echo VDD_18_DUAL : $((DATA & 0x01)) echo VDD_SOC_DUAL: $((((DATA & 0x02)) >> 1)) echo VDD_SPD_ABCD: $((((DATA & 0x04)) >> 2)) echo VDD_VPP_ABCD: $((((DATA & 0x08)) >> 3)) echo VDD_VTT_ABCD: $((((DATA & 0x10)) >> 4)) echo VDD_MEM_ABCD: $((((DATA & 0x20)) >> 5)) echo VDD_SPD_EFGH: $((((DATA & 0x40)) >> 6)) echo VDD_VPP_EFGH: $((((DATA & 0x80)) >> 7)) let FPGA_REG=FPGA_REG+1 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo VDD_VTT_EFGH : $((DATA & 0x01)) echo VDD_MEM_EFGH : $((((DATA & 0x02)) >> 1)) echo VDD_18_RUN-- : $((((DATA & 0x04)) >> 2)) echo VDD_SOC_RUN- : $((((DATA & 0x08)) >> 3)) echo VDD_CORE_RUN : $((((DATA & 0x10)) >> 4)) let FPGA_REG=FPGA_REG+1 let VDD_LOOP_CNT=VDD_LOOP_CNT+1 done let SOCKET=SOCKET+1 done # Power State/Reset Data FPGA_REG=24 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Power state Information: echo P0_SLP_S5_L--- : $((DATA & 0x01)) echo P0_SLP_S3_L--- : $((((DATA & 0x02)) >> 1)) echo ATX_PS_ON----- : $((((DATA & 0x04)) >> 2)) echo FPGA_5_DUAL_EN : $((((DATA & 0x08)) >> 3)) # Power Good information FPGA_REG=25 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Power Good Information: echo VDD_33_DUAL_PG------- : $((DATA & 0x01)) echo FPGA_VDD_CORE_DUAL_PG : $((((DATA & 0x02)) >> 1)) echo MGMT_VDD_VPP_DUAL_PG- : $((((DATA & 0x04)) >> 2)) echo MGMT_VDD_MEM_DUAL_PG- : $((((DATA & 0x08)) >> 3)) echo MGMT_VDD_CORE_DUAL_PG : $((((DATA & 0x10)) >> 4)) echo ATX_PWR_OK----------- : $((((DATA & 0x20)) >> 5)) # Power and Reset Signals FPGA_REG=26 PWRRST_REG_MAX=27 SOCKET=0 while [ $FPGA_REG -le $PWRRST_REG_MAX ] do DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----P$SOCKET Power and Reset Signals: echo RSMRST_L----------------- : $((DATA & 0x01)) echo PWR_GOOD----------------- : $((((DATA & 0x02)) >> 1)) echo PWRGD_OUT---------------- : $((((DATA & 0x04)) >> 2)) echo FPGA_PWROK_RESET_BUF_EN_L : $((((DATA & 0x08)) >> 3)) echo 33_PWROK----------------- : $((((DATA & 0x10)) >> 4)) echo VDD_CORE_RUN_PWROK------- : $((((DATA & 0x20)) >> 5)) echo VDD_SOC_RUN_PWROK-------- : $((((DATA & 0x40)) >> 6)) echo 33_RESET_L--------------- : $((((DATA & 0x80)) >> 7)) let FPGA_REG=FPGA_REG+1 done # Processor and power cable preset signals FPGA_REG=28 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Processor and power cable preset signals: echo P0_PRESENT_L--------------------- : $((DATA & 0x01)) echo P0_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $((((DATA & 0x02)) >> 1)) echo P0_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $((((DATA & 0x04)) >> 2)) echo P0_VDD_12_RUN_PLUG_PRSNT--------- : $((((DATA & 0x08)) >> 3)) echo P1_PRESENT_L--------------------- : $((((DATA & 0x10)) >> 4)) echo P1_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $((((DATA & 0x20)) >> 5)) echo P1_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $((((DATA & 0x40)) >> 6)) echo P1_VDD_12_RUN_PLUG_PRSNT--------- : $((((DATA & 0x80)) >> 7)) # Board LEDs FPGA_REG=29 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----LED States: echo PWR_GOOD_LED--- : $((DATA & 0x01)) echo PWROK_LED------ : $((((DATA & 0x02)) >> 1)) echo RESET_LED_L---- : $((((DATA & 0x04)) >> 2)) echo P0_PROCHOT_LED- : $((((DATA & 0x08)) >> 3)) echo P1_PROCHOT_LED- : $((((DATA & 0x10)) >> 4)) # VR thermal errors FPGA_REG=30 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----VR Thermal Errors: echo P0_VDD_MEM_ABCD_SUS_VRHOT_L : $((DATA & 0x01)) echo P0_VDD_MEM_EFGH_SUS_VRHOT_L : $((((DATA & 0x02)) >> 1)) echo P0_VDD_SOC_RUN_VRHOT_L----- : $((((DATA & 0x04)) >> 2)) echo P0_VDD_CORE_RUN_VRHOT_L---- : $((((DATA & 0x08)) >> 3)) echo P1_VDD_MEM_ABCD_SUS_VRHOT_L : $((((DATA & 0x10)) >> 4)) echo P1_VDD_MEM_EFGH_SUS_VRHOT_L : $((((DATA & 0x20)) >> 5)) echo P1_VDD_SOC_RUN_VRHOT_L----- : $((((DATA & 0x40)) >> 6)) echo P1_VDD_CORE_RUN_VRHOT_L---- : $((((DATA & 0x80)) >> 7)) # Processor and board Thermal Errors FPGA_REG=31 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Processor and board Thermal Errors: echo FPGA_P0_THERMTRIP_L : $((DATA & 0x01)) echo FPGA_P1_THERMTRIP_L : $((((DATA & 0x02)) >> 1)) echo SENSOR_THERM_L----- : $((((DATA & 0x04)) >> 2)) echo P0_PROCHOT_L------- : $((((DATA & 0x08)) >> 3)) echo P1_PROCHOT_L------- : $((((DATA & 0x10)) >> 4)) # AST2500 control Signals FPGA_REG=32 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----AST2500 Control Signals: echo MGMT_ASSERT_BMC_READY--- : $((DATA & 0x01)) echo MGMT_ASSERT_LOCAL_LOCK-- : $((((DATA & 0x02)) >> 1)) echo MGMT_ASSERT_PWR_BTN----- : $((((DATA & 0x04)) >> 2)) echo MGMT_ASSERT_RST_BTN----- : $((((DATA & 0x08)) >> 3)) echo MGMT_ASSERT_NMI_BTN----- : $((((DATA & 0x10)) >> 4)) echo MGMT_ASSERT_P0_PROCHOT-- : $((((DATA & 0x20)) >> 5)) echo MGMT_ASSERT_P1_PROCHOT-- : $((((DATA & 0x40)) >> 6)) echo MGMT_ASSERT_WARM_RST_BTN : $((((DATA & 0x80)) >> 7)) # FPGA processor control signals FPGA_REG=33 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----FPGA processor Control Signals: echo ASSERT_P0_PWROK_L-------- : $((DATA & 0x01)) echo ASSERT_P0_RESET_L-------- : $((((DATA & 0x02)) >> 1)) echo ASSERT_P0_PROCHOT_L------ : $((((DATA & 0x04)) >> 2)) echo MGMT_SYS_MON_P0_PROCHOT_L : $((((DATA & 0x08)) >> 3)) echo ASSERT_P1_PWROK_L-------- : $((((DATA & 0x10)) >> 4)) echo ASSERT_P1_RESET_L-------- : $((((DATA & 0x20)) >> 5)) echo ASSERT_P1_PROCHOT_L------ : $((((DATA & 0x40)) >> 6)) echo MGMT_SYS_MON_P1_PROCHOT_L : $((((DATA & 0x80)) >> 7)) # Buttons/Resets FPGA_REG=34 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Button and Reset Signals: echo PWR_BTN_L----- : $((DATA & 0x01)) echo RST_BTN_L----- : $((((DATA & 0x02)) >> 1)) echo WARM_RST_BTN_L : $((((DATA & 0x04)) >> 2)) echo NMI_BTN_L----- : $((((DATA & 0x08)) >> 3)) echo FPGA_BTN_L---- : $((((DATA & 0x10)) >> 4)) echo P0_PWR_BTN_L-- : $((((DATA & 0x20)) >> 5)) echo P0_SYS_RESET_L : $((((DATA & 0x40)) >> 6)) echo P0_KBRST_L---- : $((((DATA & 0x80)) >> 7)) # Miscellaneous Block 1 FPGA_REG=35 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Miscellaneous 35 Signals: echo MGMT_AC_LOSS_L---------- : $((DATA & 0x01)) echo P0_NV_FORCE_SELF_REFRESH : $((((DATA & 0x02)) >> 1)) echo P1_NV_FORCE_SELF_REFRESH : $((((DATA & 0x04)) >> 2)) echo P0_LOCAL_SPI_ROM_SEL_L-- : $((((DATA & 0x08)) >> 3)) echo PCIE_SLOT4_HP_FON_L----- : $((((DATA & 0x10)) >> 4)) echo P0_NMI_SYNC_FLOOD_L----- : $((((DATA & 0x20)) >> 5)) echo FPGA_LPC_RST_L---------- : $((((DATA & 0x40)) >> 6)) echo MGMT_SMBUS_ALERT_L------ : $((((DATA & 0x80)) >> 7)) # Miscellaneous Block 2 FPGA_REG=36 SHUTDOWNERR=0 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Miscellaneous 36 Signals: echo physical_pg------------------- : $((DATA & 0x01)) echo shutdown_error---------------- : $((((DATA & 0x02)) >> 1)) SHUTDOWNERR=$((((DATA & 0x02)) >> 1)) echo P0_PRESENT_HDT---------------- : $((((DATA & 0x04)) >> 2)) echo P1_PRESENT_HDT---------------- : $((((DATA & 0x08)) >> 3)) echo DAP_EXT_P0_CORE_RUN_VOLTAGE_PG : $((((DATA & 0x10)) >> 4)) echo FPGA_BRD_ID------------------- : $((((DATA & 0x20)) >> 5)) echo FPGA_BRD_ID------------------- : $((((DATA & 0x40)) >> 6)) echo MGMT_FPGA_RSVD---------------- : $((((DATA & 0x80)) >> 7)) # Switch S1 FPGA_REG=37 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Switch Bank S1: if [ $((DATA & 0x01)) -eq 1 ] ; then echo "FPGA_SW1-1 - OFF - P0 PwrReg PU with Proc" else echo "FPGA_SW1-1 - ON - P0 PwrReg PU without Proc" fi if [ $((((DATA & 0x02)) >> 1)) -eq 1 ] ; then echo "FPGA_SW1-1 - OFF - P1 PwrReg PU with Proc" else echo "FPGA_SW1-1 - ON - P1 PwrReg PU without Proc" fi if [ $((((DATA & 0x04)) >> 2)) -eq 1 ] ; then echo "FPGA_SW1-3 - OFF - ATX Connectors Valid" else echo "FPGA_SW1-3 - ON - ATX Connectors Ignored" fi if [ $((((DATA & 0x08)) >> 3)) -eq 1 ] ; then echo "FPGA_SW1-4 - OFF - Wait for BMC Boot" else echo "FPGA_SW1-4 - ON - Do Not Wait for BMC Boot" fi if [ $((((DATA & 0x10)) >> 4)) -eq 1 ] ; then echo "FPGA_SW1-5 - OFF - MemPwrReg PU after ATX" else echo "FPGA_SW1-5 - ON - MemPwrReg PU before ATX" fi if [ $((((DATA & 0x20)) >> 5)) -eq 1 ] ; then echo "FPGA_SW1-6 - OFF - DAP CORE Reg Bypass DISABLED" else echo "FPGA_SW1-6 - ON - DAP CORE Reg Bypass ENABLED" fi if [ $((((DATA & 0x40)) >> 6)) -eq 1 ] ; then echo "FPGA_SW1-7 - OFF - Bypass P0 in HDT JTAG Chain DISABLED" else echo "FPGA_SW1-7 - ON - Bypass P0 in HDT JTAG Chain ENABLED" fi if [ $((((DATA & 0x80)) >> 7)) -eq 1 ] ; then echo "FPGA_SW1-8 - OFF - Bypass P1 in HDT JTAG Chain DISABLED" else echo "FPGA_SW1-8 - ON - Bypass P1 in HDT JTAG Chain ENABLED" fi # Switch S2 FPGA_REG=38 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) echo ----------FPGAreg$FPGA_REG-----Switch Bank S2: if [ $((DATA & 0x01)) -eq 1 ] ; then echo "FPGA_SW2-1 - OFF - Boot from SPI ROM behind BMC" else echo "FPGA_SW2-1 - ON - Boot from P0 local SPI ROM" fi if [ $((((DATA & 0x02)) >> 1)) -eq 1 ] ; then echo "FPGA_SW2-2 - OFF - PCIe SLOT4 hot plug forced PwrON without driver" else echo "FPGA_SW2-2 - ON - PCIe SLOT4 hot plug NOT forced PwrON without driver" fi if [ $((((DATA & 0x04)) >> 2)) -eq 1 ] ; then echo "FPGA_SW2-3 - OFF - SMI testing DISABLED" else echo "FPGA_SW2-3 - ON - SMI testing ENABLED" fi if [ $((((DATA & 0x08)) >> 3)) -eq 1 ] ; then echo "FPGA_SW2-4 - OFF - PROCHOT testing DISABLED" else echo "FPGA_SW2-4 - ON - PROCHOT testing ENABLED" fi if [ $((((DATA & 0x10)) >> 4)) -eq 1 ] ; then echo "FPGA_SW2-5 - OFF - PwrCycle on post code C0 DISABLED" else echo "FPGA_SW2-5 - ON - PwrCycle on post code C0 ENABLED" fi if [ $((((DATA & 0x20)) >> 5)) -eq 1 ] ; then echo "FPGA_SW2-6 - OFF - PwrCycle Px DISABLED" else echo "FPGA_SW2-6 - ON - PwrCycle - Px Present - RESET_L | Px Not Present VR PwrGood" fi if [ $((((DATA & 0x40)) >> 6)) -eq 1 ] ; then echo "FPGA_SW2-7 - OFF - BMC IP Address display DISABLED" else echo "FPGA_SW2-7 - ON - BMC IP Address display ENABLED" fi if [ $((((DATA & 0x80)) >> 7)) -eq 1 ] ; then echo "FPGA_SW1-8 - OFF - FORCE_SELFREFRESH support diabled" else echo "FPGA_SW1-8 - ON - FORCE_SELFREFRESH support diabled" fi # Powerup Error Group echo ------------------------Power and Thermal Error Group if [ $SHUTDOWNERR = 0 ] ; then echo NO Shutdown Errors Detected fi FPGA_REG=40 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x0F)) != 0 ] ; then echo PU Error: PU1$((DATA & 0x0F)) echo $DATA fi FPGA_REG=41 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x07)) != 0 ] ; then echo PU Error: PU2$((DATA & 0x07)) fi FPGA_REG=42 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x0F)) != 0 ] ; then echo PU Error: PU1$((DATA & 0x0F)) fi FPGA_REG=43 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x07)) != 0 ] ; then echo PU Error: PU4$((DATA & 0x07)) fi FPGA_REG=44 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x03)) != 0 ] ; then echo PU Error: PU5$((DATA & 0x03)) fi FPGA_REG=45 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x07)) != 0 ] ; then echo PU Error: PU6$((DATA & 0x07)) fi # Powerdown Error Group FPGA_REG=46 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x0F)) != 0 ] ; then echo PD Error: PD1$((DATA & 0x0F)) fi FPGA_REG=47 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x07)) != 0 ] ; then echo PD Error: PD2$((DATA & 0x07)) fi FPGA_REG=48 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x0F)) != 0 ] ; then echo PD Error: PD3$((DATA & 0x0F)) fi FPGA_REG=49 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x07)) != 0 ] ; then echo PD Error: PD4$((DATA & 0x07)) fi FPGA_REG=50 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x03)) != 0 ] ; then echo PD Error: PD5$((DATA & 0x03)) fi FPGA_REG=51 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x03)) != 0 ] ; then echo PD Error: PD6$((DATA & 0x03)) fi FPGA_REG=52 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG)) if [ $((DATA & 0x0F)) != 0 ] ; then echo Thermal Error: H_0$((DATA & 0x0F)) fi echo ------------- end of data -----------------