Setting IIM fuses for Hardware Revision

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Setting IIM fuses for Hardware Revision

1,150 Views
rb_ontario
Contributor I

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

0 Kudos
3 Replies

700 Views
Yuri
NXP Employee
NXP Employee

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 

0 Kudos

700 Views
christophe
Contributor V

Indeed, it works.

Thanks.

0 Kudos

700 Views
christophe
Contributor V

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.

0 Kudos