Thanks a lot John. That was useful information.
Just a couple more question.
I am currently having TE0720-03-1QF module and when I use phytool to inspect the register 3 and register 4
root@dev:/opt# ./phytool read eth0/0x1A/3
0x0c10
root@dev:/opt# ./phytool read eth0/0x1A/4
0x7005
and then decode the SOM, REV, pcb_rev, speed_grade, temp_grade, model based on the above value using the example code given in zynq_fsbl/te_fsbl_hooks.c
// register 3
int rval3= 0x0c10;
int pcb_rev, speed_grade, temp_grade, model;
pcb_rev = (rval3 >>10) & 0x7;
// register 4
int rval4= 0x7005;
/* 0=C, 1=E, 2=I, 3=A */
speed_grade = (rval4 >> 12) & 3;
temp_grade = 0x43;
if ((rval4 & 0x3000)==0x1000) { temp_grade = 0x45; }
if ((rval4 & 0x3000)==0x2000) { temp_grade = 0x49; }
if ((rval4 & 0x3000)==0x3000) { temp_grade = 0x41; }
model = ((rval4 & 0xF00)==0) ? 0x46 : 0x52;
printf("\n\rSoM: TE0720-0%d-%d%c%c SC REV:%02x", pcb_rev, speed_grade, temp_grade, model, rval4 & 0xFF);
I get the following result
SoM: TE0720-03-3AF SC REV:05
Which seems to mis-match with the original Vendor Part number that is TE0720-03-1QF.
The temperature grade and the model seems to mismatch. Moreover, there is no entry for the device with a temperature grade Q,
the code only seems to have C,E,I,A . Unless A -> Automotive maps to Q ?
Can you please clarify the above.
Thanks,
Neels