This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83825I: Specific register in device can't be written

Part Number: DP83825I

Hello everyone,

I need to enable the Auto Neg Interrupt in Register12 but I can't write into that register. As you can see other register writes are successful.

My sequence is as follows:

I reset the phy over SW by writing 0x8000 to Reg 0x0. Then I write into that register 0x7fff, then I try to write in to the registers my config. This is the result:

MDIO enable set 1  status [0]
Setting up RMII MDIO ...

RESET Phy 0x0000
MDIO read [0,0x0000] 0x3100  status 0

Write 0x0000    MDIO read [0,0x0000] 0x0000  status 0
Write 0x7FFF    MDIO read [0,0x0000] 0x7D80  status 0
MDIO read [0,0x0000] 0x7D80  status 0
Write 0x0003    MDIO read [0,0x0011] 0x0003  status 0
Write 0x0024    MDIO read [0,0x0012] 0x0024  status 0
Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0

First value is the data then the MDIO read, phy address and then register address and read Data.

I hope you can help me with this.

Thanks.

Regards

Anns

  • I can confirm that the LED toggle test passes. The following log shows the alternating values in the LED Register.

    MDIO enable set 1  status [0]
    Setting up RMII MDIO ...

    RESET Phy 0x0000
    MDIO read [0,0x0000] 0x3100  status 0
    MDIO read [0,0x0018] 0x0480  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    MDIO read [0,0x0018] 0x0010  status 0
    MDIO read [0,0x0018] 0x0012  status 0
    Write 0x0003    MDIO read [0,0x0011] 0x0003  status 0
    Write 0x0024    MDIO read [0,0x0012] 0x0024  status 0
    Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0
    Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0
    Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0
    Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0
    Write 0x0007    MDIO read [0,0x000c] 0x0000  status 0

    I can do multiple writes into Register 12, but no change. Why?

  • Hi Anns,

    You should not be writing to the reserved bits in register 0x0000. Why are you trying to write 0x7FFF to this register?

    Please try writing to register 0x000c before performing any other write and see what the outcome is.

    Thanks,

    David

  • We have taken out the write into 0x0, we understand it is not necessary. But putting the write into Register 0xC first, doesn't work either. Register value still 0x0.

  • Hi Anns,

    Can you send me a register dump, reading every register between 0x0000 and 0x001F?

    Thanks,

    David

  • MDIO read [0,0x0000] 0x0000  status 0
    MDIO read [0,0x0001] 0x7849  status 0
    MDIO read [0,0x0002] 0x2000  status 0
    MDIO read [0,0x0003] 0xA140  status 0
    MDIO read [0,0x0004] 0x01E1  status 0
    MDIO read [0,0x0005] 0x0000  status 0
    MDIO read [0,0x0006] 0x0004  status 0
    MDIO read [0,0x0007] 0x2001  status 0
    MDIO read [0,0x0008] 0x0000  status 0
    MDIO read [0,0x0009] 0x0000  status 0
    MDIO read [0,0x000a] 0x0100  status 0
    MDIO read [0,0x000b] 0x0000  status 0
    MDIO read [0,0x000c] 0x0000  status 0
    MDIO read [0,0x000d] 0x401F  status 0
    MDIO read [0,0x000d] 0x0000  status 0
    MDIO read [0,0x000f] 0x0000  status 0
    MDIO read [0,0x0010] 0x0082  status 0
    MDIO read [0,0x0011] 0x0003  status 0
    MDIO read [0,0x0012] 0x2024  status 0
    MDIO read [0,0x0013] 0x0000  status 0
    MDIO read [0,0x0014] 0x0000  status 0
    MDIO read [0,0x0015] 0x0000  status 0
    MDIO read [0,0x0016] 0x0100  status 0
    MDIO read [0,0x0017] 0x00A0  status 0
    MDIO read [0,0x0018] 0x0480  status 0
    MDIO read [0,0x0019] 0x8000  status 0
    MDIO read [0,0x001a] 0x0000  status 0
    MDIO read [0,0x001b] 0x007D  status 0
    MDIO read [0,0x001c] 0x05EE  status 0
    MDIO read [0,0x001d] 0x0000  status 0
    MDIO read [0,0x001e] 0x0002  status 0
    MDIO read [0,0x001f] 0x0000  status 0

    This dump is done after reset and register writes to our specific configuration. Among others we write into Register 12 0xF. But it remains zero. I write also into 0x12 and 0x17 and the correct values are written into it.
     

  • Hi Anns, 

    Let me check if I can replicate this issue in the lab and get back to you next week.

    Thanks,

    David

  • Hi Anns,

    I was able to replicate your observation in the lab. I am not sure why register 0x000C is un-writable, but this is not the correct register to enable interrupts. 

    To enable auto-negotiation interrupt, you should be writing a 1 to register 0x0012 bit[2], then register 0x0011 bit[1]. Let me know if this works.

    Thanks,

    David