blob: b229c79391e17fafcd499d5c71dacf5b055d9f8d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
|
#!/bin/bash
echo
echo "-----FPGA Ethanol<x> 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 -----------------
|