
On 06/15/2011 01:50 PM, Fabio Estevam wrote:
Hi Stefano,
Hi Fabio,
Let me try to explain the problem I see with the current silicon detection mechanism:
On my board (srev=0x28), which is a TO2.0 silicon I get:
CPU: Freescale i.MX31 rev 2.0 at 531 MHz.Reset cause: WDOG
On Felix´s MX31ADS board (srev=0x20) (unknown chip version) he gets:
CPU: Freescale i.MX31 rev 2.0 unknown at 531 MHz.Reset cause: WDOG
Reading rev 2.0 on Felix´s case is misleading IMHO as we tend to think that we have a TO2.0 silicon on his board even though we get a "unknown" string.
Ok, so only reading the code we can know that version number + "unknown" give us the value of the srev register. We can explicitely expand the output to make things clearer.
if (srev == mx31_cpu_type[i].srev) return mx31_cpu_type[i].v;
- return srev | 0x8000; + return 0x8000;
IMHO in the case the revision is not recognized, it is better to print the value of the srev register, as it is done now.
Yes, agreed, but we should print srev as an hex number instead of a string as done today
If you agree I can implement the following logic:
When the chip version is detected let´s just leave as it is today:
CPU: Freescale i.MX31 rev 2.0 at 531 MHz.Reset cause: WDOG
When the chip version is not valid, then we print:
CPU: Freescale i.MX31 (unknown rev, srev=0x20) at 531 MHz.Reset cause: WDOG
Agree with your proposal.
Best regards, Stefano Babic