Reading Fuse

cancel
Showing results for 
Search instead for 
Did you mean: 

Reading Fuse

Jump to solution
650 Views
SteM
Contributor III

Hi all,

how can i read the iMX51 fuses inside a WEC700 driver?

I need to read the unique ID of the chip and my guess is that is contained in the fuses area.

My try is:

UINT8* pRegs;
    int val;
    PHYSICAL_ADDRESS phyAddr;
    ULONG ulSize = 0x840*sizeof(UINT8);
    phyAddr.QuadPart = CSP_BASE_REG_PA_IIM;
    pRegs = (UINT8*)MmMapIoSpace(phyAddr, ulSize, FALSE);
    RETAILMSG(1, (L":  %x\r\n", pRegs));

    val  = INREG32(&pRegs[0x820]);
    RETAILMSG(1, (L":  %x\r\n", val));

    val <<= 8;
    val |= INREG32(&pRegs[0x824]);
    RETAILMSG(1, (L":  %x\r\n", val));

but the driver hangs and the system stop to work.

How can i do it?

Thanks!

Labels (2)
0 Kudos
1 Solution
348 Views
JerryZeng
NXP Employee
NXP Employee

I don't see any code to enable IIM clock in your driver, so you violate the basic rule in the driver. I believe that's the root cause for your hang (and this is a typical case for a driver hang).

Please add following code before / after IIM access:

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_ENABLED_ALL);

    ......

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_DISABLED);

View solution in original post

0 Kudos
4 Replies
348 Views
JasonLiu
NXP Employee
NXP Employee

Please keep in mind, before any access to the register of one IP component, we need turn that IP component clock ON, otherwise, system bus will hang up and then system hang eventually.

349 Views
JerryZeng
NXP Employee
NXP Employee

I don't see any code to enable IIM clock in your driver, so you violate the basic rule in the driver. I believe that's the root cause for your hang (and this is a typical case for a driver hang).

Please add following code before / after IIM access:

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_ENABLED_ALL);

    ......

    DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_IIM, DDK_CLOCK_GATE_MODE_DISABLED);

0 Kudos
348 Views
SteM
Contributor III

Yes!

I added your code and it solved the problem.

Btw, I don't understand why there was no problem reading pRegs[0x20] and there was problem to read pRegs[0x820]...

Thanks a lot!

0 Kudos
348 Views
JerryZeng
NXP Employee
NXP Employee

pRegs[0x20] is for IIM register and pRegs[0x820] is for eFuse, maybe IIM register access only need IPG clock and this clock is enabled by other driver. Just guess.

0 Kudos