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.

DP83822IF: Link never goes up unless RX cable is reconnected or switch/media converter is power cycled

Part Number: DP83822IF

Tool/software:

hello,

I am using DP83822IF and I do not understand why I always have to reconnect the RX fiber cable or power cycle the switch (partner) to get the link to go up.

After reconnecting, FX mode works perfectly fine with no issues until device is reset again.

Signal Detect (SD) level is always high.

I read register values and they indicate that link is valid, supports for 100base full/half duplex as well as 10base full/half duplex are also enabled, SOR1 also show correct strap values. 

A few things I see when link is not up (before reconnecting cable):

- 0x0001 = 0x784D;  Auto negotiation is not complete

- 0x0012 = 0x80FF; indicates change of link quality

- 0x0010 = 0x0285; MII interrupt pending, Auto-negotiation not complete

I tried restarting Auto-negotiation by writing 0x3300 to register 0x0000, but no luck.

Any advice or idea why this is happening and how to solve it? What register should I drive to drive the link up? 

  • Hi Louis,

    Are there any communication issues? I see link is up with 0x1[2] = '1'.

    DP83822 does not use auto-negotiation for 100Base-FX. This auto-negotiation flag is not relevant for communication in fiber mode.

    Thank you,

    Evan

  • Hi Evan,

    Thank you for the suggestion! The link partner (switch) only uses 100M Fiber mode. 

    Actually, I tried resetting PHY in the same ways as you mentioned:

    0x0[15] = '1' (PHY software reset)

    0x1F[15] = '1' (PHY hardware reset)

    However, none of this resulted in link up. 

    BUT.. I finally found a way to get the link to go up i.e. by initiating a Digital Restart:

    0x1F[14] = '1' (PHY digital restart)

    Do you know why I need to restart PHY?

    Also, as you can see, there is no communication issue since 0x1[2] = '1'. Once the link goes up, everything is perfect; no false carrier counter, no pending interrupt, etc.

    Thanks,

    Louis

  • Hi Louis,

    There may be some signal quality issue causing fiber fault detection to trigger, preventing link from coming up until PHY's state machine is restarted.

    Please try this register configuration to test link on start-up:

    0x40[13,6,5] = '111'

    Thank you,

    Evan

  • Hi Evan,

    Looks like you are correct but can you help me understand here:

    I wrote '11' to 0x40[6,5] and nothing happened. But as soon as I wrote '1' to 0x40[13] it shows continuous messages: 

    Interrupt FALSE_CARRIER_HF received. MISR1 = 0x82FF. FCSCR = 0xFF

    False carrier event counter is also full.

    Upon closer look, earlier, when I initiated Digital Reset, apparently the message shows Link is Up - 10Mbps/Half - flow control off

    When I wrote '0' back to 0x40[13], interrupt messages stopped and Digital Reset can get the Link Up (but with 10Mbps/Half).

    Is it even possible with the 100base FX mode? There shouldn't be auto negotiation for fiber mode, right?

    Thanks,

    Louis

  • Hi Louis,

    Please share the PHY register dump in the working and failing case. There is something unexpected happening on auto-negotiation - I would like to confirm PHY is set for fiber with auto-negotiation disabled.

    Register dump will allow me to confirm PHY configuration and any auto-neg advertisements being sent from link partner side.

    Thank you,

    Evan

  • Hi Evan,

    This is the PHY register dump. I wrote a script with phytool to get generate this dump. I will ask firmware engineer to generate it in a more official way. But i think it is good for now to see what is going on. I had to trim some registers that I didn't see in the datasheet and are showing 0x0000. Also, I don't know how to read values from registers 0x3000 and up.

    Register 0x00 = 0x3100
    Register 0x01 = 0x784d
    Register 0x02 = 0x2000
    Register 0x03 = 0xa240
    Register 0x04 = 0x01e1
    Register 0x05 = 0
    Register 0x06 = 0x0004
    Register 0x07 = 0x2001
    Register 0x08 = 0
    Register 0x09 = 0
    Register 0x0A = 0x4100
    Register 0x0B = 0x1000
    Register 0x0C = 0
    Register 0x0D = 0x801f
    Register 0x0E = 0
    Register 0x0F = 0
    Register 0x10 = 0x0285
    Register 0x11 = 0x010b
    Register 0x12 = 0x80ff
    Register 0x13 = 0x00f7
    Register 0x14 = 0
    Register 0x15 = 0
    Register 0x16 = 0x0100
    Register 0x17 = 0x004d
    Register 0x18 = 0x0400
    Register 0x19 = 0x8023
    Register 0x1A = 0
    Register 0x1B = 0x007d
    Register 0x1C = 0x05ee
    Register 0x1D = 0
    Register 0x1E = 0x0002
    Register 0x1F = 0
    Register 0x020 = 0x5668
    Register 0x021 = 0x5814
    Register 0x022 = 0x0718
    Register 0x023 = 0x081c
    Register 0x024 = 0xf01c
    Register 0x025 = 0x0200
    Register 0x027 = 0
    Register 0x02A = 0x7998
    Register 0x02B = 0xf810
    Register 0x02C = 0xff80
    Register 0x02D = 0x0100
    Register 0x03E = 0
    Register 0x03F = 0xb4ff
    Register 0x040 = 0xc11d
    Register 0x041 = 0
    Register 0x042 = 0
    Register 0x101 = 0x2002
    Register 0x102 = 0x0200
    Register 0x103 = 0x0008
    Register 0x104 = 0x0054
    Register 0x105 = 0x69bc
    Register 0x106 = 0xb0bb
    Register 0x107 = 0x0605
    Register 0x108 = 0x13bb
    Register 0x109 = 0x28ce
    Register 0x10A = 0x2040
    Register 0x10B = 0x0701
    Register 0x10C = 0x190d
    Register 0x10D = 0x6432
    Register 0x10E = 0xfa96
    Register 0x10F = 0x0300
    Register 0x110 = 0x0225
    Register 0x111 = 0x6003
    Register 0x112 = 0xc000
    Register 0x113 = 0x414f
    Register 0x114 = 0x400a
    Register 0x115 = 0x94c8
    Register 0x116 = 0x014a
    Register 0x117 = 0x8147
    Register 0x118 = 0x4620
    Register 0x119 = 0x015d
    Register 0x11A = 0
    Register 0x11B = 0
    Register 0x11C = 0
    Register 0x11D = 0
    Register 0x11E = 0
    Register 0x11F = 0
    Register 0x120 = 0x00a3
    Register 0x121 = 0x199a
    Register 0x122 = 0x1027
    Register 0x123 = 0x051c
    Register 0x124 = 0x1027
    Register 0x125 = 0xc289
    Register 0x126 = 0x461b
    Register 0x127 = 0x00a0
    Register 0x128 = 0x0444
    Register 0x129 = 0x000f
    Register 0x12A = 0
    Register 0x12B = 0
    Register 0x12C = 0
    Register 0x12D = 0
    Register 0x12E = 0
    Register 0x12F = 0
    Register 0x130 = 0x4750
    Register 0x131 = 0x228a
    Register 0x132 = 0x01ae
    Register 0x133 = 0
    Register 0x134 = 0
    Register 0x135 = 0
    Register 0x136 = 0
    Register 0x137 = 0
    Register 0x138 = 0
    Register 0x139 = 0
    Register 0x13A = 0
    Register 0x13B = 0
    Register 0x13C = 0
    Register 0x13D = 0
    Register 0x13E = 0
    Register 0x13F = 0
    Register 0x140 = 0
    Register 0x141 = 0
    Register 0x142 = 0
    Register 0x143 = 0
    Register 0x144 = 0
    Register 0x145 = 0
    Register 0x146 = 0
    Register 0x147 = 0
    Register 0x148 = 0
    Register 0x149 = 0
    Register 0x14A = 0
    Register 0x14B = 0
    Register 0x14C = 0
    Register 0x14D = 0
    Register 0x14E = 0
    Register 0x14F = 0
    Register 0x150 = 0x6a88
    Register 0x151 = 0x0002
    Register 0x152 = 0x6189
    Register 0x153 = 0x1436
    Register 0x154 = 0x0255
    Register 0x155 = 0x0001
    Register 0x170 = 0x0e52
    Register 0x171 = 0xc85c
    Register 0x172 = 0x5326
    Register 0x173 = 0xff1e
    Register 0x174 = 0xe976
    Register 0x175 = 0x19cf
    Register 0x176 = 0x31dd
    Register 0x177 = 0x189b
    Register 0x178 = 0x0ca9
    Register 0x179 = 0
    Register 0x17A = 0
    Register 0x17B = 0
    Register 0x17C = 0
    Register 0x17D = 0
    Register 0x17E = 0
    Register 0x17F = 0
    Register 0x180 = 0
    Register 0x181 = 0
    Register 0x182 = 0
    Register 0x183 = 0
    Register 0x184 = 0
    Register 0x185 = 0
    Register 0x186 = 0
    Register 0x187 = 0
    Register 0x188 = 0
    Register 0x189 = 0
    Register 0x18A = 0
    Register 0x214 = 0x0424
    Register 0x215 = 0x01af
    Register 0x216 = 0xa300
    Register 0x218 = 0x0003
    Register 0x21A = 0x0020
    Register 0x21B = 0x0240
    Register 0x21D = 0x0600
    Register 0x403 = 0x9fcf
    Register 0x404 = 0x0020
    Register 0x406 = 0x0080
    Register 0x407 = 0x0008
    Register 0x40D = 0x0008
    Register 0x40E = 0
    Register 0x40F = 0
    Register 0x410 = 0x2000
    Register 0x411 = 0x0809
    Register 0x412 = 0
    Register 0x413 = 0
    Register 0x414 = 0
    Register 0x415 = 0
    Register 0x416 = 0x0870
    Register 0x417 = 0
    Register 0x418 = 0
    Register 0x419 = 0
    Register 0x41A = 0
    Register 0x41B = 0
    Register 0x41C = 0
    Register 0x41D = 0
    Register 0x41E = 0x0003
    Register 0x41F = 0
    Register 0x420 = 0
    Register 0x421 = 0
    Register 0x422 = 0
    Register 0x423 = 0x0100
    Register 0x424 = 0x0025
    Register 0x425 = 0x00aa
    Register 0x426 = 0
    Register 0x427 = 0
    Register 0x428 = 0
    Register 0x430 = 0x0aaa
    Register 0x431 = 0x001f
    Register 0x450 = 0x0f41
    Register 0x451 = 0x0007
    Register 0x452 = 0x0c83
    Register 0x453 = 0x0052
    Register 0x454 = 0x0810
    Register 0x455 = 0x0101
    Register 0x456 = 0x0008
    Register 0x457 = 0x0420
    Register 0x458 = 0x0800
    Register 0x459 = 0
    Register 0x45A = 0
    Register 0x45B = 0
    Register 0x45C = 0
    Register 0x45D = 0
    Register 0x45E = 0
    Register 0x45F = 0
    Register 0x460 = 0x0551
    Register 0x461 = 0x0410
    Register 0x462 = 0
    Register 0x463 = 0
    Register 0x464 = 0
    Register 0x465 = 0xff00
    Register 0x466 = 0xff00
    Register 0x467 = 0x3bcf
    Register 0x468 = 0
    Register 0x469 = 0x0040
    Register 0x46A = 0x8103
    Register 0x46B = 0x0003
    Register 0x470 = 0x0a12
    Register 0x471 = 0x0014
    Register 0x4A0 = 0x00a1
    Register 0x4A1 = 0x100c
    Register 0x4A2 = 0
    Register 0x4A3 = 0
    Register 0x4A4 = 0
    Register 0x4A5 = 0
    Register 0x4A6 = 0
    Register 0x4A7 = 0
    Register 0x4A8 = 0
    Register 0x4A9 = 0
    Register 0x4AA = 0
    Register 0x4AB = 0
    Register 0x4AC = 0
    Register 0x4AD = 0
    Register 0x4AE = 0
    Register 0x4AF = 0
    Register 0x4B0 = 0
    Register 0x4B1 = 0
    Register 0x4B2 = 0
    Register 0x4B3 = 0
    Register 0x4B4 = 0
    Register 0x4B5 = 0
    Register 0x4B6 = 0
    Register 0x4B7 = 0
    Register 0x4B8 = 0
    Register 0x4B9 = 0
    Register 0x4BA = 0
    Register 0x4BB = 0
    Register 0x4BC = 0
    Register 0x4BD = 0
    Register 0x4BE = 0
    Register 0x4BF = 0
    Register 0x4C0 = 0
    Register 0x4C1 = 0
    Register 0x4C2 = 0
    Register 0x4C3 = 0
    Register 0x4C4 = 0
    Register 0x4C5 = 0
    Register 0x4C6 = 0
    Register 0x4C7 = 0
    Register 0x4C8 = 0
    Register 0x4C9 = 0
    Register 0x4CA = 0
    Register 0x4CB = 0
    Register 0x4CC = 0x000c
    Register 0x4CD = 0x0408
    Register 0x4CE = 0x0012
    Register 0x4CF = 0x291d
    Register 0x4D0 = 0x0302
    Register 0x4D1 = 0x018b
    Register 0x4D2 = 0x354a
    Register 0x4D3 = 0x0a96
    Register 0x4D4 = 0x7220
    Register 0x4D5 = 0xfbc1
    Register 0x4D6 = 0x01c1

    Louis

  • The dump before is for the failing case. This one here is from the working (10Mbps/Half):

    Register 0x0000 =  0x3100
    Register 0x0001 =  0x784d
    Register 0x0002 =  0x2000
    Register 0x0003 =  0xa240
    Register 0x0004 =  0x01e1
    Register 0x0005 =  0000
    Register 0x0006 =  0x0004
    Register 0x0007 =  0x2001
    Register 0x0008 =  0000
    Register 0x0009 =  0000
    Register 0x000A =  0x4100
    Register 0x000B =  0x1000
    Register 0x000C =  0000
    Register 0x000D =  0x401f
    Register 0x000E =  0000
    Register 0x000F =  0000
    Register 0x0010 =  0x0a85
    Register 0x0011 =  0x010b
    Register 0x0012 =  0x80ff
    Register 0x0013 =  0x00f7
    Register 0x0014 =  0x0001
    Register 0x0015 =  0000
    Register 0x0016 =  0x0100
    Register 0x0017 =  0x004d
    Register 0x0018 =  0x0400
    Register 0x0019 =  0x8023
    Register 0x001A =  0000
    Register 0x001B =  0x007d
    Register 0x001C =  0x05ee
    Register 0x001D =  0000
    Register 0x001E =  0x0002
    Register 0x001F =  0000
    Register 0x0020 =  0x5668
    Register 0x0021 =  0x5814
    Register 0x0022 =  0x0718
    Register 0x0023 =  0x081c
    Register 0x0024 =  0xf01c
    Register 0x0025 =  0x0200
    Register 0x0026 =  0000
    Register 0x0027 =  0000
    Register 0x0028 =  0000
    Register 0x0029 =  0000
    Register 0x002A =  0x7998
    Register 0x002B =  0xf810
    Register 0x002C =  0xff80
    Register 0x002D =  0x0100
    Register 0x002E =  0000
    Register 0x002F =  0000
    Register 0x0030 =  0000
    Register 0x0031 =  0000
    Register 0x0032 =  0000
    Register 0x0033 =  0000
    Register 0x0034 =  0000
    Register 0x0035 =  0000
    Register 0x0036 =  0000
    Register 0x0037 =  0000
    Register 0x0038 =  0000
    Register 0x0039 =  0000
    Register 0x003A =  0000
    Register 0x003B =  0000
    Register 0x003C =  0000
    Register 0x003D =  0000
    Register 0x003E =  0000
    Register 0x003F =  0xb4ff
    Register 0x0040 =  0xc11d
    Register 0x0041 =  0000
    Register 0x0042 =  0000
    Register 0x0101 =  0x2002
    Register 0x0102 =  0x0200
    Register 0x0103 =  0x0008
    Register 0x0104 =  0x0054
    Register 0x0105 =  0x69bc
    Register 0x0106 =  0xb0bb
    Register 0x0107 =  0x0605
    Register 0x0108 =  0x13bb
    Register 0x0109 =  0x28ce
    Register 0x010A =  0x2040
    Register 0x010B =  0x0701
    Register 0x010C =  0x190d
    Register 0x010D =  0x6432
    Register 0x010E =  0xfa96
    Register 0x010F =  0x0300
    Register 0x0110 =  0x0225
    Register 0x0111 =  0x6003
    Register 0x0112 =  0xc000
    Register 0x0113 =  0x414f
    Register 0x0114 =  0x400a
    Register 0x0115 =  0x94c8
    Register 0x0116 =  0x014a
    Register 0x0117 =  0x8147
    Register 0x0118 =  0x4620
    Register 0x0119 =  0x015d
    Register 0x011A =  0000
    Register 0x011B =  0000
    Register 0x011C =  0000
    Register 0x011D =  0000
    Register 0x011E =  0000
    Register 0x011F =  0000
    Register 0x0120 =  0x00a3
    Register 0x0121 =  0x199a
    Register 0x0122 =  0x1027
    Register 0x0123 =  0x051c
    Register 0x0124 =  0x1027
    Register 0x0125 =  0xc289
    Register 0x0126 =  0x461b
    Register 0x0127 =  0x00a0
    Register 0x0128 =  0x0444
    Register 0x0129 =  0x000f
    Register 0x012A =  0000
    Register 0x012B =  0000
    Register 0x012C =  0000
    Register 0x012D =  0000
    Register 0x012E =  0000
    Register 0x012F =  0000
    Register 0x0130 =  0x4750
    Register 0x0131 =  0x228a
    Register 0x0132 =  0x01ae
    Register 0x0133 =  0000
    Register 0x0134 =  0000
    Register 0x0135 =  0000
    Register 0x0136 =  0000
    Register 0x0137 =  0000
    Register 0x0138 =  0000
    Register 0x0139 =  0000
    Register 0x013A =  0000
    Register 0x013B =  0000
    Register 0x013C =  0000
    Register 0x013D =  0000
    Register 0x013E =  0000
    Register 0x013F =  0000
    Register 0x0140 =  0000
    Register 0x0141 =  0000
    Register 0x0142 =  0000
    Register 0x0143 =  0000
    Register 0x0144 =  0000
    Register 0x0145 =  0000
    Register 0x0146 =  0000
    Register 0x0147 =  0000
    Register 0x0148 =  0000
    Register 0x0149 =  0000
    Register 0x014A =  0000
    Register 0x014B =  0000
    Register 0x014C =  0000
    Register 0x014D =  0000
    Register 0x014E =  0000
    Register 0x014F =  0000
    Register 0x0150 =  0x6a88
    Register 0x0151 =  0x0002
    Register 0x0152 =  0x6189
    Register 0x0153 =  0x1436
    Register 0x0154 =  0x0255
    Register 0x0155 =  0x0001
    Register 0x0156 =  0000
    Register 0x0157 =  0000
    Register 0x0158 =  0000
    Register 0x0159 =  0000
    Register 0x015A =  0000
    Register 0x015B =  0000
    Register 0x015C =  0000
    Register 0x015D =  0000
    Register 0x015E =  0000
    Register 0x015F =  0000
    Register 0x0160 =  0000
    Register 0x0161 =  0000
    Register 0x0162 =  0000
    Register 0x0163 =  0000
    Register 0x0164 =  0000
    Register 0x0165 =  0000
    Register 0x0166 =  0000
    Register 0x0167 =  0000
    Register 0x0168 =  0000
    Register 0x0169 =  0000
    Register 0x016A =  0000
    Register 0x016B =  0000
    Register 0x016C =  0000
    Register 0x016D =  0000
    Register 0x016E =  0000
    Register 0x016F =  0000
    Register 0x0170 =  0x0e52
    Register 0x0171 =  0xc85c
    Register 0x0172 =  0x5326
    Register 0x0173 =  0xff1e
    Register 0x0174 =  0xe976
    Register 0x0175 =  0x19cf
    Register 0x0176 =  0x31dd
    Register 0x0177 =  0x189b
    Register 0x0178 =  0x0ca9
    Register 0x0179 =  0000
    Register 0x017A =  0000
    Register 0x017B =  0000
    Register 0x017C =  0000
    Register 0x017D =  0000
    Register 0x017E =  0000
    Register 0x017F =  0000
    Register 0x0180 =  0000
    Register 0x0181 =  0000
    Register 0x0182 =  0000
    Register 0x0183 =  0000
    Register 0x0184 =  0000
    Register 0x0185 =  0000
    Register 0x0186 =  0000
    Register 0x0187 =  0000
    Register 0x0188 =  0000
    Register 0x0189 =  0000
    Register 0x018A =  0000
    Register 0x018B =  0000
    Register 0x018C =  0000
    Register 0x018D =  0000
    Register 0x018E =  0000
    Register 0x018F =  0000
    Register 0x0190 =  0000
    Register 0x0191 =  0000
    Register 0x0192 =  0000
    Register 0x0193 =  0000
    Register 0x0194 =  0000
    Register 0x0195 =  0000
    Register 0x0196 =  0000
    Register 0x0197 =  0000
    Register 0x0198 =  0000
    Register 0x0199 =  0000
    Register 0x019A =  0000
    Register 0x019B =  0000
    Register 0x019C =  0000
    Register 0x019D =  0000
    Register 0x019E =  0000
    Register 0x019F =  0000
    Register 0x01A0 =  0000
    Register 0x01A1 =  0000
    Register 0x01A2 =  0000
    Register 0x01A3 =  0000
    Register 0x01A4 =  0000
    Register 0x01A5 =  0000
    Register 0x01A6 =  0000
    Register 0x01A7 =  0000
    Register 0x01A8 =  0000
    Register 0x01A9 =  0000
    Register 0x01AA =  0000
    Register 0x01AB =  0000
    Register 0x01AC =  0000
    Register 0x01AD =  0000
    Register 0x01AE =  0000
    Register 0x01AF =  0000
    Register 0x01B0 =  0000
    Register 0x01B1 =  0000
    Register 0x01B2 =  0000
    Register 0x01B3 =  0000
    Register 0x01B4 =  0000
    Register 0x01B5 =  0000
    Register 0x01B6 =  0000
    Register 0x01B7 =  0000
    Register 0x01B8 =  0000
    Register 0x01B9 =  0000
    Register 0x01BA =  0000
    Register 0x01BB =  0000
    Register 0x01BC =  0000
    Register 0x01BD =  0000
    Register 0x01BE =  0000
    Register 0x01BF =  0000
    Register 0x01C0 =  0000
    Register 0x01C1 =  0000
    Register 0x01C2 =  0000
    Register 0x01C3 =  0000
    Register 0x01C4 =  0000
    Register 0x01C5 =  0000
    Register 0x01C6 =  0000
    Register 0x01C7 =  0000
    Register 0x01C8 =  0000
    Register 0x01C9 =  0000
    Register 0x01CA =  0000
    Register 0x01CB =  0000
    Register 0x01CC =  0000
    Register 0x01CD =  0000
    Register 0x01CE =  0000
    Register 0x01CF =  0000
    Register 0x01D0 =  0000
    Register 0x01D1 =  0000
    Register 0x01D2 =  0000
    Register 0x01D3 =  0000
    Register 0x01D4 =  0000
    Register 0x01D5 =  0000
    Register 0x01D6 =  0000
    Register 0x01D7 =  0000
    Register 0x01D8 =  0000
    Register 0x01D9 =  0000
    Register 0x01DA =  0000
    Register 0x01DB =  0000
    Register 0x01DC =  0000
    Register 0x01DD =  0000
    Register 0x01DE =  0000
    Register 0x01DF =  0000
    Register 0x01E0 =  0000
    Register 0x01E1 =  0000
    Register 0x01E2 =  0000
    Register 0x01E3 =  0000
    Register 0x01E4 =  0000
    Register 0x01E5 =  0000
    Register 0x01E6 =  0000
    Register 0x01E7 =  0000
    Register 0x01E8 =  0000
    Register 0x01E9 =  0000
    Register 0x01EA =  0000
    Register 0x01EB =  0000
    Register 0x01EC =  0000
    Register 0x01ED =  0000
    Register 0x01EE =  0000
    Register 0x01EF =  0000
    Register 0x01F0 =  0000
    Register 0x01F1 =  0000
    Register 0x01F2 =  0000
    Register 0x01F3 =  0000
    Register 0x01F4 =  0000
    Register 0x01F5 =  0000
    Register 0x01F6 =  0000
    Register 0x01F7 =  0000
    Register 0x01F8 =  0000
    Register 0x01F9 =  0000
    Register 0x01FA =  0000
    Register 0x01FB =  0000
    Register 0x01FC =  0000
    Register 0x01FD =  0000
    Register 0x01FE =  0000
    Register 0x01FF =  0000
    Register 0x0200 =  0000
    Register 0x0201 =  0000
    Register 0x0202 =  0000
    Register 0x0203 =  0000
    Register 0x0204 =  0000
    Register 0x0205 =  0000
    Register 0x0206 =  0000
    Register 0x0207 =  0000
    Register 0x0208 =  0000
    Register 0x0209 =  0000
    Register 0x020A =  0000
    Register 0x020B =  0000
    Register 0x020C =  0000
    Register 0x020D =  0000
    Register 0x020E =  0000
    Register 0x020F =  0000
    Register 0x0210 =  0000
    Register 0x0211 =  0000
    Register 0x0212 =  0000
    Register 0x0213 =  0000
    Register 0x0214 =  0x0437
    Register 0x0215 =  0x01af
    Register 0x0216 =  0xa300
    Register 0x0217 =  0000
    Register 0x0218 =  0x0003
    Register 0x0219 =  0000
    Register 0x021A =  0x0020
    Register 0x021B =  0x0240
    Register 0x021C =  0000
    Register 0x021D =  0x0600
    Register 0x0403 =  0x9fcf
    Register 0x0404 =  0x0020
    Register 0x0405 =  0000
    Register 0x0406 =  0x0080
    Register 0x0407 =  0x0008
    Register 0x0408 =  0000
    Register 0x0409 =  0000
    Register 0x040A =  0000
    Register 0x040B =  0000
    Register 0x040C =  0000
    Register 0x040D =  0x0008
    Register 0x040E =  0000
    Register 0x040F =  0000
    Register 0x0410 =  0x2000
    Register 0x0411 =  0x0809
    Register 0x0412 =  0000
    Register 0x0413 =  0000
    Register 0x0414 =  0000
    Register 0x0415 =  0000
    Register 0x0416 =  0x0870
    Register 0x0417 =  0000
    Register 0x0418 =  0000
    Register 0x0419 =  0000
    Register 0x041A =  0000
    Register 0x041B =  0000
    Register 0x041C =  0000
    Register 0x041D =  0000
    Register 0x041E =  0x0003
    Register 0x041F =  0000
    Register 0x0420 =  0000
    Register 0x0421 =  0000
    Register 0x0422 =  0000
    Register 0x0423 =  0x0100
    Register 0x0424 =  0x0025
    Register 0x0425 =  0x00aa
    Register 0x0426 =  0000
    Register 0x0427 =  0000
    Register 0x0428 =  0000
    Register 0x0429 =  0000
    Register 0x042A =  0000
    Register 0x042B =  0000
    Register 0x042C =  0000
    Register 0x042D =  0000
    Register 0x042E =  0000
    Register 0x042F =  0000
    Register 0x0430 =  0x0aaa
    Register 0x0431 =  0x001f
    Register 0x0432 =  0000
    Register 0x0433 =  0000
    Register 0x0434 =  0000
    Register 0x0435 =  0000
    Register 0x0436 =  0000
    Register 0x0437 =  0000
    Register 0x0438 =  0000
    Register 0x0439 =  0000
    Register 0x043A =  0000
    Register 0x043B =  0000
    Register 0x043C =  0000
    Register 0x043D =  0000
    Register 0x043E =  0000
    Register 0x043F =  0000
    Register 0x0440 =  0000
    Register 0x0441 =  0000
    Register 0x0442 =  0000
    Register 0x0443 =  0000
    Register 0x0444 =  0000
    Register 0x0445 =  0000
    Register 0x0446 =  0000
    Register 0x0447 =  0000
    Register 0x0448 =  0000
    Register 0x0449 =  0000
    Register 0x044A =  0000
    Register 0x044B =  0000
    Register 0x044C =  0000
    Register 0x044D =  0000
    Register 0x044E =  0000
    Register 0x044F =  0000
    Register 0x0450 =  0x0f41
    Register 0x0451 =  0x0007
    Register 0x0452 =  0x0c83
    Register 0x0453 =  0x0052
    Register 0x0454 =  0x0810
    Register 0x0455 =  0x0101
    Register 0x0456 =  0x0008
    Register 0x0457 =  0x0420
    Register 0x0458 =  0x0800
    Register 0x0459 =  0000
    Register 0x045A =  0000
    Register 0x045B =  0000
    Register 0x045C =  0000
    Register 0x045D =  0000
    Register 0x045E =  0000
    Register 0x045F =  0000
    Register 0x0460 =  0x0551
    Register 0x0461 =  0x0410
    Register 0x0462 =  0000
    Register 0x0463 =  0000
    Register 0x0464 =  0000
    Register 0x0465 =  0xff00
    Register 0x0466 =  0xff00
    Register 0x0467 =  0x3bcf
    Register 0x0468 =  0000
    Register 0x0469 =  0x0040
    Register 0x046A =  0x8102
    Register 0x046B =  0x0001
    Register 0x046C =  0000
    Register 0x046D =  0000
    Register 0x046E =  0000
    Register 0x046F =  0000
    Register 0x0470 =  0x0a12
    Register 0x0471 =  0x0014
    Register 0x0472 =  0000
    Register 0x0473 =  0000
    Register 0x0474 =  0000
    Register 0x0475 =  0000
    Register 0x0476 =  0000
    Register 0x0477 =  0000
    Register 0x0478 =  0000
    Register 0x0479 =  0000
    Register 0x047A =  0000
    Register 0x047B =  0000
    Register 0x047C =  0000
    Register 0x047D =  0000
    Register 0x047E =  0000
    Register 0x047F =  0000
    Register 0x0480 =  0000
    Register 0x0481 =  0000
    Register 0x0482 =  0000
    Register 0x0483 =  0000
    Register 0x0484 =  0000
    Register 0x0485 =  0000
    Register 0x0486 =  0000
    Register 0x0487 =  0000
    Register 0x0488 =  0000
    Register 0x0489 =  0000
    Register 0x048A =  0000
    Register 0x048B =  0000
    Register 0x048C =  0000
    Register 0x048D =  0000
    Register 0x048E =  0000
    Register 0x048F =  0000
    Register 0x0490 =  0000
    Register 0x0491 =  0000
    Register 0x0492 =  0000
    Register 0x0493 =  0000
    Register 0x0494 =  0000
    Register 0x0495 =  0000
    Register 0x0496 =  0000
    Register 0x0497 =  0000
    Register 0x0498 =  0000
    Register 0x0499 =  0000
    Register 0x049A =  0000
    Register 0x049B =  0000
    Register 0x049C =  0000
    Register 0x049D =  0000
    Register 0x049E =  0000
    Register 0x049F =  0000
    Register 0x04A0 =  0x00a1
    Register 0x04A1 =  0x101c
    Register 0x04A2 =  0000
    Register 0x04A3 =  0000
    Register 0x04A4 =  0000
    Register 0x04A5 =  0000
    Register 0x04A6 =  0000
    Register 0x04A7 =  0000
    Register 0x04A8 =  0000
    Register 0x04A9 =  0000
    Register 0x04AA =  0000
    Register 0x04AB =  0000
    Register 0x04AC =  0000
    Register 0x04AD =  0000
    Register 0x04AE =  0000
    Register 0x04AF =  0000
    Register 0x04B0 =  0000
    Register 0x04B1 =  0000
    Register 0x04B2 =  0000
    Register 0x04B3 =  0000
    Register 0x04B4 =  0000
    Register 0x04B5 =  0000
    Register 0x04B6 =  0000
    Register 0x04B7 =  0000
    Register 0x04B8 =  0000
    Register 0x04B9 =  0000
    Register 0x04BA =  0000
    Register 0x04BB =  0000
    Register 0x04BC =  0000
    Register 0x04BD =  0000
    Register 0x04BE =  0000
    Register 0x04BF =  0000
    Register 0x04C0 =  0000
    Register 0x04C1 =  0000
    Register 0x04C2 =  0000
    Register 0x04C3 =  0000
    Register 0x04C4 =  0000
    Register 0x04C5 =  0000
    Register 0x04C6 =  0000
    Register 0x04C7 =  0000
    Register 0x04C8 =  0000
    Register 0x04C9 =  0000
    Register 0x04CA =  0000
    Register 0x04CB =  0000
    Register 0x04CC =  0x000c
    Register 0x04CD =  0x0408
    Register 0x04CE =  0x0012
    Register 0x04CF =  0x291d
    Register 0x04D0 =  0x0302
    Register 0x04D1 =  0x018b
    Register 0x04D2 =  0x354a
    Register 0x04D3 =  0x0a96
    Register 0x04D4 =  0x7220
    Register 0x04D5 =  0xfbc1
    Register 0x04D6 =  0x01c1
    Register 0x3000 =  0x3100
    Register 0x3001 =  0x784d
    Register 0x3002 =  0x2000
    Register 0x3003 =  0xa240
    Register 0x3004 =  0x01e1
    Register 0x3005 =  0000
    Register 0x3006 =  0x0004
    Register 0x3007 =  0x2001
    Register 0x3008 =  0000
    Register 0x3009 =  0000
    Register 0x300A =  0x4100
    Register 0x300B =  0x1000
    Register 0x300C =  0000
    Register 0x300D =  0000
    Register 0x300E =  0000
    Register 0x300F =  0000
    Register 0x3010 =  0x0285
    Register 0x3011 =  0x010b
    Register 0x3012 =  0x80ff
    Register 0x3013 =  0x00f7
    Register 0x3014 =  0000
    Register 0x3015 =  0000
    Register 0x3016 =  0x0100
    Register 0x703C =  0000
    Register 0x703D =  0000

    Thanks,

    Louis

  • Hi Louis,

    Thank you for sharing the register dumps. One confusion I have is in both working and failing cases, I see link up in 0x1[2] = '1'.
    Can you share more details about observation of failure? Is there a communication failure observed (ping / throughput) in either case? 

    Register 0x5 indicates the Link Partner has auto-negotiation disabled - please test with auto-negotiation disable with 0x0 = 0x2100.

    Thank you,

    Evan

  • Hi Evan,

    Yes, sorry you asked this before, there is a communication failure during link down where ping never goes through. But after link up, communication is fine, ping is always successful.

    In both failed and working case, I can see 62.5MHz waveform out of PHY's TX differential lines.. weird, that means it is already working in 100base, right?

    I am trying to work with the firmware engineer to understand the PHY initialization better during kernel initialization.

    I also tried this:

    ${dir}/mdio-tool w $dev 0x1F 0x8000
    ${dir}/mdio-tool w $dev 0x00 0x8000
    ${dir}/mdio-tool w $dev 0x00 0x2100
    ${dir}/mdio-tool w $dev 0x04 0x0101
    ${dir}/mdio-tool w $dev 0x00 0x0000
    ${dir}/mdio-tool w $dev 0x0A 0x4020
    ${dir}/mdio-tool w $dev 0x12 0x00FF
    ${dir}/mdio-tool w $dev 0x13 0x00BF


    But it won't get that link up.. 

    Can you give me a procedure / list of steps of what registers are essential to get fiber mode to work?

    Thanks!

    Louis

  • Hi Louis,

    Thanks for confirming. For Fiber mode, enabling FX_EN, SD_EN, and disabling auto-negotiation through straps or registers is sufficient.

    Is TX transmitting at 62.5M or 125M? In forced 100M fiber mode, I expect TX lines to transmit at 125M.

    Regarding your initialization script, please include 0x1F = 0x4000 as the final step, as you have validated digital reset to bring link up.

    Assuming this modified script is robust for link up and communication, is this acceptable for your end application?

    Thank you,

    Evan

  • Hi Evan,

    My bad, I forgot that 100base-FX uses NRZI, so the TX line is running at 125MHz because I see continuous almost square-like waveform at 62.5MHz. This means 125MHz data signaling in NRZI. Please correct me if I'm wrong. I can't attach a picture in here.

    Also, I managed to get it to work at 100Mbps / Full duplex. I took your input and adjusted my script to just disable auto-negotiation since FX_EN, SD_EN are already strapped. I didn't even include the Digital Reset 0x1F = 0x4000. So what I did is: 

    I wrote these to registers:

    ${dir}/mdio-tool w $dev 0x1F 0x8000
    ${dir}/mdio-tool w $dev 0x00 0x8000
    ${dir}/mdio-tool w $dev 0x00 0x2100

    then restarted interface by issuing ifconfig eth# down and up and that's it. It works! I guess PHY was initialized with the wrong config for non FX mode.

    Thank you!

    Louis

  • Hi Louis,

    You are correct regarding 125M NRZI waveform.

    Thanks for confirming this fiber configuration is working for link! Please let me know if you observe any other functional issues, otherwise considering this issue resolved.

    Best Regards,

    Evan