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.

DP83822I: DP83822 BIST register

Part Number: DP83822I


Hello,

I've got a DP83822 on my board - if I read register 0x16 (BISCR) after a reset it's always returning 0x0300 (Packet generate active).

I can reset via BMCR = 0x8000 or PHYRCR = 0x8000 or 0x4000 and it returns 0x0300 - the datasheet says the default should be 0 for bit(9) - why would this RO bit be set?

Dave

  • Hi Dave,

    The default register state is 0x0100 for register 0x16. Is there a boot-up sequence that gets written to the PHY?

    -Regards
    Aniruddha
  • Hi Aniruddha,

    I'm resetting the device by writing to the BMCR (0x0000) = 0x8000 or PHYRCR (0x001F) = 0x8000 or 0x4000 in U-BOOT and after the reset manually reading the register values - I'm not writing anything to the PHY in between. The register 0x16 is always coming up as 0x0300. Under what conditions can bit 9 of BISCR be set? I have no strapping resistors on my device - its all configured over the MDIO. Is there any test mode the PHY could be coming up in that would make BISCR = 0x0300?

    Kind regards,

    Dave

  • To clarify my sequence (in U-BOOT):
    mdio write mii0 1 31 8000              -- Reset
    mdio write mii0 1 0 0100               -- Force 10MBit full-duplex only
    mdio read mii0 1 0-31                  -- Read all registers

    Reading from bus mii0
    PHY at address 1:
    0 - 0x100
    1 - 0x7849
    2 - 0x2000
    3 - 0xa240
    4 - 0x181
    5 - 0x0
    6 - 0x4
    7 - 0x2001
    8 - 0x0
    9 - 0x0
    10 - 0x100
    11 - 0x1000
    12 - 0x0
    13 - 0x0
    14 - 0x0
    15 - 0x0
    16 - 0x7
    17 - 0x108
    18 - 0x7000
    19 - 0x0
    20 - 0x0
    21 - 0x0
    22 - 0x700                          -- BISCR
    23 - 0x65
    24 - 0x400
    25 - 0x21
    26 - 0x0
    27 - 0x7d
    28 - 0x5ee
    29 - 0x0
    30 - 0x102
    31 - 0x0

    mdio read mii0 1 0-31                  -- Read all registers again


    Reading from bus mii0
    PHY at address 1:
    0 - 0x100
    1 - 0x784d
    2 - 0x2000
    3 - 0xa240
    4 - 0x181
    5 - 0x0
    6 - 0x4
    7 - 0x2001
    8 - 0x0
    9 - 0x0
    10 - 0x100
    11 - 0x1000
    12 - 0x0
    13 - 0x0
    14 - 0x0
    15 - 0x0
    16 - 0x7
    17 - 0x108
    18 - 0x4000
    19 - 0x0
    20 - 0x0
    21 - 0x0
    22 - 0x300    -- BISCR stays at this value now - why is packet generator status 1?
    23 - 0x61
    24 - 0x400
    25 - 0x421
    26 - 0x0
    27 - 0x7d
    28 - 0x5ee
    29 - 0x0
    30 - 0x302
    31 - 0x0

    What I'm really trying to establish is why the Link Status bit in BMSR (bit 2) is getting set - I've disconnected the magnetics and shorted RD_P and RD_M pins at the termination resistors but still the PHY thinks a link has been established.

    Dave