summaryrefslogtreecommitdiff
path: root/meta-amd/recipes-amd/amd-fpga/files/ethanolx/fpgardu.sh
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 -----------------