I'm running linux 2.6.35 on a iMX53 QSB and on my own hardware
It seems that u-boot uses iim fuses to determine the board hardware revision level. When I boot the QSB, it indicates hardware Rev. B. When I boot my board, in indicates hardware Rev. A
After digging through the u-boot source code (talk about fun!!), I located mx53_loco.c which has a function called get_board_rev_from_fuse. This function is called to read IIM_BASE_ADDR + 0x878 to determine the revision level. If this returns 0x3, then it means board Rev B. If it returns 0x1 or nothing, the Rev A is returned. Since I have not programmed the IIM fuses, it seems to make sense that my board is showing Rev A.
I have tried to issue IIM read 0 0x878 but I get back
"Read fuse at bank:0 row:120."
I can't seam to read past location 120 in iim read. This has prevented me from reading the iim fuses in the qsb to confirm what value I should burn into the fuses for my own hardware. I have not tried to burn any fuse values because it must be right as they are one-time fuses.
Can you ask John : What is the correct command to program the iim fuses to indicate that the hardware should be Freescale QSB rev. B
Looks like the problem relates to the fact, that U-boot command
"iim" uses hexadecimal notation. So, please try using the next
commands to access the board rev. configuration byte.
iim blow 0 0x1E 3
iim read 0 0x1E
From uboot mx53_loco.c :
u32 get_board_rev_from_fuse(void)
{ u32 board_rev = readl(IIM_BASE_ADDR + 0x878);
return board_rev;}
0x878 = 0x800 + 0x78
0x1E = 0x78 / 4 = 30
Indeed, it works.
Thanks.
Hi,
I know, there's a long time.
I encounter the same revision problem. I guess the the correct command is "iim blow 0 30 3" (without cotes). It seems to correctly execute the command but when i read the value, it's still 0x0. Is there's something else to do ? Do you manage to change the revision ?
Rgds,
C.