blob: b229c79391e17fafcd499d5c71dacf5b055d9f8d [file] [log] [blame]
Konstantin Aladysheva953aa62021-04-19 11:37:54 +03001#!/bin/bash
2echo
3echo "-----FPGA Ethanol<x> CRB Register Dump Utility"
4echo
5I2CBUS=2
6FPGAADDR=0x50
7
8# FPGA FW Version Information
9FPGA_REG=39
10DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
11MAJOR=$((DATA >> 4))
12MINOR=$((DATA & 0x0F))
13echo FPGA FW Version: $MAJOR.$MINOR
14
15# IP register information
16FPGA_REG=0
17IP_REG_MAX=3
18printf "IP Address Registers: "
19while [ $FPGA_REG -le $IP_REG_MAX ]
20 do
21 # not using printf as integer and hex values are the same for this use
22 DATA=$(i2cget -y $I2CBUS $FPGAADDR $FPGA_REG)
23 if [ $FPGA_REG -ne $IP_REG_MAX ] ; then
24 printf "%d." $DATA
25 else
26 printf "%d\n\n" $DATA
27 fi
28 let FPGA_REG=FPGA_REG+1
29 done
30
31# VDD block - Addresses 16 - 23
32FPGA_REG=16
33VDD_REG_MAX=23
34SOCKET=0
35
36while [ $FPGA_REG -le $VDD_REG_MAX ]
37 do
38 VDD_LOOP_CNT=0
39
40 while [ $VDD_LOOP_CNT -le 1 ]
41 do
42 if [ $VDD_LOOP_CNT -eq 0 ] ; then
43 VDD_LOOP_CNT_TXT="Enables"
44 else
45 VDD_LOOP_CNT_TXT="Power Goods"
46 fi
47 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
48 echo ----------FPGAreg$FPGA_REG-----P$SOCKET VDD $VDD_LOOP_CNT_TXT
49 echo VDD_18_DUAL : $((DATA & 0x01))
50 echo VDD_SOC_DUAL: $((((DATA & 0x02)) >> 1))
51 echo VDD_SPD_ABCD: $((((DATA & 0x04)) >> 2))
52 echo VDD_VPP_ABCD: $((((DATA & 0x08)) >> 3))
53 echo VDD_VTT_ABCD: $((((DATA & 0x10)) >> 4))
54 echo VDD_MEM_ABCD: $((((DATA & 0x20)) >> 5))
55 echo VDD_SPD_EFGH: $((((DATA & 0x40)) >> 6))
56 echo VDD_VPP_EFGH: $((((DATA & 0x80)) >> 7))
57
58 let FPGA_REG=FPGA_REG+1
59 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
60 echo VDD_VTT_EFGH : $((DATA & 0x01))
61 echo VDD_MEM_EFGH : $((((DATA & 0x02)) >> 1))
62 echo VDD_18_RUN-- : $((((DATA & 0x04)) >> 2))
63 echo VDD_SOC_RUN- : $((((DATA & 0x08)) >> 3))
64 echo VDD_CORE_RUN : $((((DATA & 0x10)) >> 4))
65 let FPGA_REG=FPGA_REG+1
66 let VDD_LOOP_CNT=VDD_LOOP_CNT+1
67 done
68 let SOCKET=SOCKET+1
69 done
70
71# Power State/Reset Data
72FPGA_REG=24
73DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
74echo ----------FPGAreg$FPGA_REG-----Power state Information:
75echo P0_SLP_S5_L--- : $((DATA & 0x01))
76echo P0_SLP_S3_L--- : $((((DATA & 0x02)) >> 1))
77echo ATX_PS_ON----- : $((((DATA & 0x04)) >> 2))
78echo FPGA_5_DUAL_EN : $((((DATA & 0x08)) >> 3))
79
80# Power Good information
81FPGA_REG=25
82DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
83echo ----------FPGAreg$FPGA_REG-----Power Good Information:
84echo VDD_33_DUAL_PG------- : $((DATA & 0x01))
85echo FPGA_VDD_CORE_DUAL_PG : $((((DATA & 0x02)) >> 1))
86echo MGMT_VDD_VPP_DUAL_PG- : $((((DATA & 0x04)) >> 2))
87echo MGMT_VDD_MEM_DUAL_PG- : $((((DATA & 0x08)) >> 3))
88echo MGMT_VDD_CORE_DUAL_PG : $((((DATA & 0x10)) >> 4))
89echo ATX_PWR_OK----------- : $((((DATA & 0x20)) >> 5))
90
91# Power and Reset Signals
92FPGA_REG=26
93PWRRST_REG_MAX=27
94SOCKET=0
95while [ $FPGA_REG -le $PWRRST_REG_MAX ]
96 do
97 DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
98 echo ----------FPGAreg$FPGA_REG-----P$SOCKET Power and Reset Signals:
99 echo RSMRST_L----------------- : $((DATA & 0x01))
100 echo PWR_GOOD----------------- : $((((DATA & 0x02)) >> 1))
101 echo PWRGD_OUT---------------- : $((((DATA & 0x04)) >> 2))
102 echo FPGA_PWROK_RESET_BUF_EN_L : $((((DATA & 0x08)) >> 3))
103 echo 33_PWROK----------------- : $((((DATA & 0x10)) >> 4))
104 echo VDD_CORE_RUN_PWROK------- : $((((DATA & 0x20)) >> 5))
105 echo VDD_SOC_RUN_PWROK-------- : $((((DATA & 0x40)) >> 6))
106 echo 33_RESET_L--------------- : $((((DATA & 0x80)) >> 7))
107 let FPGA_REG=FPGA_REG+1
108 done
109
110# Processor and power cable preset signals
111FPGA_REG=28
112DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
113echo ----------FPGAreg$FPGA_REG-----Processor and power cable preset signals:
114echo P0_PRESENT_L--------------------- : $((DATA & 0x01))
115echo P0_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $((((DATA & 0x02)) >> 1))
116echo P0_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $((((DATA & 0x04)) >> 2))
117echo P0_VDD_12_RUN_PLUG_PRSNT--------- : $((((DATA & 0x08)) >> 3))
118echo P1_PRESENT_L--------------------- : $((((DATA & 0x10)) >> 4))
119echo P1_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $((((DATA & 0x20)) >> 5))
120echo P1_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $((((DATA & 0x40)) >> 6))
121echo P1_VDD_12_RUN_PLUG_PRSNT--------- : $((((DATA & 0x80)) >> 7))
122
123# Board LEDs
124FPGA_REG=29
125DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
126echo ----------FPGAreg$FPGA_REG-----LED States:
127echo PWR_GOOD_LED--- : $((DATA & 0x01))
128echo PWROK_LED------ : $((((DATA & 0x02)) >> 1))
129echo RESET_LED_L---- : $((((DATA & 0x04)) >> 2))
130echo P0_PROCHOT_LED- : $((((DATA & 0x08)) >> 3))
131echo P1_PROCHOT_LED- : $((((DATA & 0x10)) >> 4))
132
133# VR thermal errors
134FPGA_REG=30
135DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
136echo ----------FPGAreg$FPGA_REG-----VR Thermal Errors:
137echo P0_VDD_MEM_ABCD_SUS_VRHOT_L : $((DATA & 0x01))
138echo P0_VDD_MEM_EFGH_SUS_VRHOT_L : $((((DATA & 0x02)) >> 1))
139echo P0_VDD_SOC_RUN_VRHOT_L----- : $((((DATA & 0x04)) >> 2))
140echo P0_VDD_CORE_RUN_VRHOT_L---- : $((((DATA & 0x08)) >> 3))
141echo P1_VDD_MEM_ABCD_SUS_VRHOT_L : $((((DATA & 0x10)) >> 4))
142echo P1_VDD_MEM_EFGH_SUS_VRHOT_L : $((((DATA & 0x20)) >> 5))
143echo P1_VDD_SOC_RUN_VRHOT_L----- : $((((DATA & 0x40)) >> 6))
144echo P1_VDD_CORE_RUN_VRHOT_L---- : $((((DATA & 0x80)) >> 7))
145
146# Processor and board Thermal Errors
147FPGA_REG=31
148DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
149echo ----------FPGAreg$FPGA_REG-----Processor and board Thermal Errors:
150echo FPGA_P0_THERMTRIP_L : $((DATA & 0x01))
151echo FPGA_P1_THERMTRIP_L : $((((DATA & 0x02)) >> 1))
152echo SENSOR_THERM_L----- : $((((DATA & 0x04)) >> 2))
153echo P0_PROCHOT_L------- : $((((DATA & 0x08)) >> 3))
154echo P1_PROCHOT_L------- : $((((DATA & 0x10)) >> 4))
155
156# AST2500 control Signals
157FPGA_REG=32
158DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
159echo ----------FPGAreg$FPGA_REG-----AST2500 Control Signals:
160echo MGMT_ASSERT_BMC_READY--- : $((DATA & 0x01))
161echo MGMT_ASSERT_LOCAL_LOCK-- : $((((DATA & 0x02)) >> 1))
162echo MGMT_ASSERT_PWR_BTN----- : $((((DATA & 0x04)) >> 2))
163echo MGMT_ASSERT_RST_BTN----- : $((((DATA & 0x08)) >> 3))
164echo MGMT_ASSERT_NMI_BTN----- : $((((DATA & 0x10)) >> 4))
165echo MGMT_ASSERT_P0_PROCHOT-- : $((((DATA & 0x20)) >> 5))
166echo MGMT_ASSERT_P1_PROCHOT-- : $((((DATA & 0x40)) >> 6))
167echo MGMT_ASSERT_WARM_RST_BTN : $((((DATA & 0x80)) >> 7))
168
169# FPGA processor control signals
170FPGA_REG=33
171DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
172echo ----------FPGAreg$FPGA_REG-----FPGA processor Control Signals:
173echo ASSERT_P0_PWROK_L-------- : $((DATA & 0x01))
174echo ASSERT_P0_RESET_L-------- : $((((DATA & 0x02)) >> 1))
175echo ASSERT_P0_PROCHOT_L------ : $((((DATA & 0x04)) >> 2))
176echo MGMT_SYS_MON_P0_PROCHOT_L : $((((DATA & 0x08)) >> 3))
177echo ASSERT_P1_PWROK_L-------- : $((((DATA & 0x10)) >> 4))
178echo ASSERT_P1_RESET_L-------- : $((((DATA & 0x20)) >> 5))
179echo ASSERT_P1_PROCHOT_L------ : $((((DATA & 0x40)) >> 6))
180echo MGMT_SYS_MON_P1_PROCHOT_L : $((((DATA & 0x80)) >> 7))
181
182# Buttons/Resets
183FPGA_REG=34
184DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
185echo ----------FPGAreg$FPGA_REG-----Button and Reset Signals:
186echo PWR_BTN_L----- : $((DATA & 0x01))
187echo RST_BTN_L----- : $((((DATA & 0x02)) >> 1))
188echo WARM_RST_BTN_L : $((((DATA & 0x04)) >> 2))
189echo NMI_BTN_L----- : $((((DATA & 0x08)) >> 3))
190echo FPGA_BTN_L---- : $((((DATA & 0x10)) >> 4))
191echo P0_PWR_BTN_L-- : $((((DATA & 0x20)) >> 5))
192echo P0_SYS_RESET_L : $((((DATA & 0x40)) >> 6))
193echo P0_KBRST_L---- : $((((DATA & 0x80)) >> 7))
194
195# Miscellaneous Block 1
196FPGA_REG=35
197DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
198echo ----------FPGAreg$FPGA_REG-----Miscellaneous 35 Signals:
199echo MGMT_AC_LOSS_L---------- : $((DATA & 0x01))
200echo P0_NV_FORCE_SELF_REFRESH : $((((DATA & 0x02)) >> 1))
201echo P1_NV_FORCE_SELF_REFRESH : $((((DATA & 0x04)) >> 2))
202echo P0_LOCAL_SPI_ROM_SEL_L-- : $((((DATA & 0x08)) >> 3))
203echo PCIE_SLOT4_HP_FON_L----- : $((((DATA & 0x10)) >> 4))
204echo P0_NMI_SYNC_FLOOD_L----- : $((((DATA & 0x20)) >> 5))
205echo FPGA_LPC_RST_L---------- : $((((DATA & 0x40)) >> 6))
206echo MGMT_SMBUS_ALERT_L------ : $((((DATA & 0x80)) >> 7))
207
208# Miscellaneous Block 2
209FPGA_REG=36
210SHUTDOWNERR=0
211DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
212echo ----------FPGAreg$FPGA_REG-----Miscellaneous 36 Signals:
213echo physical_pg------------------- : $((DATA & 0x01))
214echo shutdown_error---------------- : $((((DATA & 0x02)) >> 1))
215SHUTDOWNERR=$((((DATA & 0x02)) >> 1))
216echo P0_PRESENT_HDT---------------- : $((((DATA & 0x04)) >> 2))
217echo P1_PRESENT_HDT---------------- : $((((DATA & 0x08)) >> 3))
218echo DAP_EXT_P0_CORE_RUN_VOLTAGE_PG : $((((DATA & 0x10)) >> 4))
219echo FPGA_BRD_ID------------------- : $((((DATA & 0x20)) >> 5))
220echo FPGA_BRD_ID------------------- : $((((DATA & 0x40)) >> 6))
221echo MGMT_FPGA_RSVD---------------- : $((((DATA & 0x80)) >> 7))
222
223# Switch S1
224FPGA_REG=37
225DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
226echo ----------FPGAreg$FPGA_REG-----Switch Bank S1:
227if [ $((DATA & 0x01)) -eq 1 ] ; then
228 echo "FPGA_SW1-1 - OFF - P0 PwrReg PU with Proc"
229else
230 echo "FPGA_SW1-1 - ON - P0 PwrReg PU without Proc"
231fi
232if [ $((((DATA & 0x02)) >> 1)) -eq 1 ] ; then
233 echo "FPGA_SW1-1 - OFF - P1 PwrReg PU with Proc"
234else
235 echo "FPGA_SW1-1 - ON - P1 PwrReg PU without Proc"
236fi
237if [ $((((DATA & 0x04)) >> 2)) -eq 1 ] ; then
238 echo "FPGA_SW1-3 - OFF - ATX Connectors Valid"
239else
240 echo "FPGA_SW1-3 - ON - ATX Connectors Ignored"
241fi
242if [ $((((DATA & 0x08)) >> 3)) -eq 1 ] ; then
243 echo "FPGA_SW1-4 - OFF - Wait for BMC Boot"
244else
245 echo "FPGA_SW1-4 - ON - Do Not Wait for BMC Boot"
246fi
247if [ $((((DATA & 0x10)) >> 4)) -eq 1 ] ; then
248 echo "FPGA_SW1-5 - OFF - MemPwrReg PU after ATX"
249else
250 echo "FPGA_SW1-5 - ON - MemPwrReg PU before ATX"
251fi
252if [ $((((DATA & 0x20)) >> 5)) -eq 1 ] ; then
253 echo "FPGA_SW1-6 - OFF - DAP CORE Reg Bypass DISABLED"
254else
255 echo "FPGA_SW1-6 - ON - DAP CORE Reg Bypass ENABLED"
256fi
257if [ $((((DATA & 0x40)) >> 6)) -eq 1 ] ; then
258 echo "FPGA_SW1-7 - OFF - Bypass P0 in HDT JTAG Chain DISABLED"
259else
260 echo "FPGA_SW1-7 - ON - Bypass P0 in HDT JTAG Chain ENABLED"
261fi
262if [ $((((DATA & 0x80)) >> 7)) -eq 1 ] ; then
263 echo "FPGA_SW1-8 - OFF - Bypass P1 in HDT JTAG Chain DISABLED"
264else
265 echo "FPGA_SW1-8 - ON - Bypass P1 in HDT JTAG Chain ENABLED"
266fi
267
268# Switch S2
269FPGA_REG=38
270DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
271echo ----------FPGAreg$FPGA_REG-----Switch Bank S2:
272if [ $((DATA & 0x01)) -eq 1 ] ; then
273 echo "FPGA_SW2-1 - OFF - Boot from SPI ROM behind BMC"
274else
275 echo "FPGA_SW2-1 - ON - Boot from P0 local SPI ROM"
276fi
277if [ $((((DATA & 0x02)) >> 1)) -eq 1 ] ; then
278 echo "FPGA_SW2-2 - OFF - PCIe SLOT4 hot plug forced PwrON without driver"
279else
280 echo "FPGA_SW2-2 - ON - PCIe SLOT4 hot plug NOT forced PwrON without driver"
281fi
282if [ $((((DATA & 0x04)) >> 2)) -eq 1 ] ; then
283 echo "FPGA_SW2-3 - OFF - SMI testing DISABLED"
284else
285 echo "FPGA_SW2-3 - ON - SMI testing ENABLED"
286fi
287if [ $((((DATA & 0x08)) >> 3)) -eq 1 ] ; then
288 echo "FPGA_SW2-4 - OFF - PROCHOT testing DISABLED"
289else
290 echo "FPGA_SW2-4 - ON - PROCHOT testing ENABLED"
291fi
292if [ $((((DATA & 0x10)) >> 4)) -eq 1 ] ; then
293 echo "FPGA_SW2-5 - OFF - PwrCycle on post code C0 DISABLED"
294else
295 echo "FPGA_SW2-5 - ON - PwrCycle on post code C0 ENABLED"
296fi
297if [ $((((DATA & 0x20)) >> 5)) -eq 1 ] ; then
298 echo "FPGA_SW2-6 - OFF - PwrCycle Px DISABLED"
299else
300 echo "FPGA_SW2-6 - ON - PwrCycle - Px Present - RESET_L | Px Not Present VR PwrGood"
301fi
302if [ $((((DATA & 0x40)) >> 6)) -eq 1 ] ; then
303 echo "FPGA_SW2-7 - OFF - BMC IP Address display DISABLED"
304else
305 echo "FPGA_SW2-7 - ON - BMC IP Address display ENABLED"
306fi
307if [ $((((DATA & 0x80)) >> 7)) -eq 1 ] ; then
308 echo "FPGA_SW1-8 - OFF - FORCE_SELFREFRESH support diabled"
309else
310 echo "FPGA_SW1-8 - ON - FORCE_SELFREFRESH support diabled"
311fi
312
313# Powerup Error Group
314echo ------------------------Power and Thermal Error Group
315if [ $SHUTDOWNERR = 0 ] ; then
316 echo NO Shutdown Errors Detected
317fi
318
319FPGA_REG=40
320DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
321if [ $((DATA & 0x0F)) != 0 ] ; then
322 echo PU Error: PU1$((DATA & 0x0F))
323 echo $DATA
324fi
325
326FPGA_REG=41
327DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
328if [ $((DATA & 0x07)) != 0 ] ; then
329 echo PU Error: PU2$((DATA & 0x07))
330fi
331
332FPGA_REG=42
333DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
334if [ $((DATA & 0x0F)) != 0 ] ; then
335 echo PU Error: PU1$((DATA & 0x0F))
336fi
337
338FPGA_REG=43
339DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
340if [ $((DATA & 0x07)) != 0 ] ; then
341 echo PU Error: PU4$((DATA & 0x07))
342fi
343
344FPGA_REG=44
345DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
346if [ $((DATA & 0x03)) != 0 ] ; then
347 echo PU Error: PU5$((DATA & 0x03))
348fi
349
350FPGA_REG=45
351DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
352if [ $((DATA & 0x07)) != 0 ] ; then
353 echo PU Error: PU6$((DATA & 0x07))
354fi
355
356# Powerdown Error Group
357FPGA_REG=46
358DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
359if [ $((DATA & 0x0F)) != 0 ] ; then
360 echo PD Error: PD1$((DATA & 0x0F))
361fi
362
363FPGA_REG=47
364DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
365if [ $((DATA & 0x07)) != 0 ] ; then
366 echo PD Error: PD2$((DATA & 0x07))
367fi
368
369FPGA_REG=48
370DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
371if [ $((DATA & 0x0F)) != 0 ] ; then
372 echo PD Error: PD3$((DATA & 0x0F))
373fi
374
375FPGA_REG=49
376DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
377if [ $((DATA & 0x07)) != 0 ] ; then
378 echo PD Error: PD4$((DATA & 0x07))
379fi
380
381FPGA_REG=50
382DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
383if [ $((DATA & 0x03)) != 0 ] ; then
384 echo PD Error: PD5$((DATA & 0x03))
385fi
386
387FPGA_REG=51
388DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
389if [ $((DATA & 0x03)) != 0 ] ; then
390 echo PD Error: PD6$((DATA & 0x03))
391fi
392
393FPGA_REG=52
394DATA=$(i2cget -y $I2CBUS $FPGAADDR $(printf "0x%x" $FPGA_REG))
395if [ $((DATA & 0x0F)) != 0 ] ; then
396 echo Thermal Error: H_0$((DATA & 0x0F))
397fi
398echo ------------- end of data -----------------