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.

DP83869HM: DP83869 configured as a bridge, SGMII can not connect

Part Number: DP83869HM
Other Parts Discussed in Thread: DP83869

Tool/software:

 (1)   I use dp83869 as a RGMII to SGMII Bridge to connect SOC and switch.

   

 (2)   I configured the following registers to make dp83869 work in bridge mode:

   

(3) After the configuration,  when I power on the system,  I found the switch SGMII and DP83869 SGMII can not link up each other.

Can you help to analyze the reason?

Thanks.

  • Hi Chenglei, 

    Thank you for submitting your query, I am happy to assist. 

    I want to confirm a few things about your setup

    1. What speeds are you trying to achieve?
    2. Can we confirm that the switch supports Auto-negotiation?
    3. Can we check register 0x14[7] to confirm that SGMII Auto-negotiation is on?
    4. Can we check register 0x37[0] to confirm if Auto-negotiation is complete?

    Please note that the register 0x37 is an extended space register and will need to be accessed accordingly

    Best,

    Vivaan

    1. What speeds are you trying to achieve?

                Our speed is 1000 SGMII

            2. Can we  confirm that the switch supports Auto-negotiation?

                Yes, switch support Auto-negotiation and Auto-negotiation is on.

            3. Can we check register 0x14[7] to confirm that SGMII Auto-negotiation is on?

                Register 0x14 read out, value is 0x29c7. Bit7 is on.

            4. Can we check register 0x37[0] to confirm if Auto-negotiation is complete?

                Register 0x37 read out, value is 0x0

    It seems  Auto-negotiation is not complete. How to do next?

    Thanks a lot.

  • How to disable  Auto-negotiation?  How to lower down speed to 100M?

  • Hi Chenglei, 

    Thank you for providing the register values. You are correct, it look like the auto-negotiation process was not completed. Here are some things we can try

    • Check register 0x37[1]. If this value reads as 0, it means that the acknowledgement for the auto-negotiation was not received by the PHY from the Switch. Essentially, it would imply that the Switch was not responding to the auto-negotiation information from the PHY.
      • Based on this, I would like to verify that the switch supports SGMII Auto-negotiation. I realize you that you mentioned it does support auto-negotiation in your response, but there are 2 kinds of auto-negotiation, one for the cable (MDI) side and one for the SGMII side. I want to make sure that the SGMII side auto-negotiation is supported and on. 
      • I also would like to verify if the switch supports 4 or 6 wire SGMII. The DP83869 only supports 4-wire
    • Which device is being powered on first? If the PHY comes up before the Switch, a SGMII restart may be required for the Switch to receive the control information for link-up. This can be done by restarting the PHY using 0x1F=0x4000.
      • We can also try writing register 0x31[6:5] to increase the auto-negotiation timer, giving the PHY more time to complete auto-negotiation, then restarting the PHY

    Auto-negotiation can be disabled through the register 0x14[7]. I am not sure if disabling and forcing a connection at a certain speed would work for bridge mode, but we can try doing it as a debug step. We can try disabling MDI auto-negotiation, and forcing a specific speed through register 0x00. Writing bit 12 to 0 would disable auto-negotiation on the MDI side, and bits 13 and 6 can be used to force a specific speed. 

    Best, 

    Vivaan

    • make sure that the SGMII side auto-negotiation is supported and on

                Yes,  SGMII side auto-negotiation is supprotted. (Our switch is marvell6113)

    • I also would like to verify if the switch supports 4 or 6 wire SGMII. The DP83869 only supports 4-wire

                Our Marvell6113 switch connect dp83869 with 4-wire SGMII. 

    • Which device is being powered on first? If the PHY comes up before the Switch

                DP83869 bridge is powered on first. In my dp83869 initial sequence, I have done restarting the PHY using 0x1F=0x4000.

    • We can also try writing register 0x31[6:5] to increase the auto-negotiation timer

                I have tried increasing auto-negotiation timer to max 11ms, but it can not resolve the problem.

    • Auto-negotiation can be disabled through the register 0x14[7].

               I have tried setting register 0x14[7] to 0, the problem still not resolved.

    In addition, I found BMCR reg 0x00 power up default value is 0x2100, not as datasheet specified value 0x 1140.   

                                   BMSR reg 0x01 power up default value is 0x6149, not as datasheet specified value 0x 7949. 

    Our bit12 of reg 0x00 is zero by power-up default, why?

  • And the register reg0x6e read out value is 0x0454

  • [   10.013434] [    T1]   read reg(0x 0) = 0x140
    [   10.039296] [    T1]   read reg(0x 1) = 0x7949
    [   10.065963] [    T1]   read reg(0x 2) = 0x2000
    [   10.092629] [    T1]   read reg(0x 3) = 0xa0f3
    [   10.119297] [    T1]   read reg(0x 4) = 0x181
    [   10.145962] [    T1]   read reg(0x 5) = 0x0
    [   10.172629] [    T1]   read reg(0x 6) = 0x64
    [   10.199296] [    T1]   read reg(0x 7) = 0x2001
    [   10.225963] [    T1]   read reg(0x 8) = 0x0
    [   10.252629] [    T1]   read reg(0x 9) = 0x1300
    [   10.279296] [    T1]   read reg(0x a) = 0x0
    [   10.305963] [    T1]   read reg(0x b) = 0x0
    [   10.332629] [    T1]   read reg(0x c) = 0x0
    [   10.359296] [    T1]   read reg(0x d) = 0x401f
    [   10.385962] [    T1]   read reg(0x e) = 0x0
    [   10.412630] [    T1]   read reg(0x f) = 0xf000
    [   10.439297] [    T1]   read reg(0x10) = 0x5448
    [   10.465963] [    T1]   read reg(0x11) = 0xab02
    [   10.492630] [    T1]   read reg(0x12) = 0x0
    [   10.519296] [    T1]   read reg(0x13) = 0x40
    [   10.545963] [    T1]   read reg(0x14) = 0x29c7
    [   10.572629] [    T1]   read reg(0x15) = 0x0
    [   10.599296] [    T1]   read reg(0x16) = 0x0
    [   10.625963] [    T1]   read reg(0x17) = 0x40
    [   10.652629] [    T1]   read reg(0x18) = 0x6150
    [   10.679295] [    T1]   read reg(0x19) = 0x4404
    [   10.705963] [    T1]   read reg(0x1a) = 0x2
    [   10.732629] [    T1]   read reg(0x1b) = 0x0
    [   10.759296] [    T1]   read reg(0x1c) = 0x0
    [   10.785965] [    T1]   read reg(0x1d) = 0x0
    [   10.812630] [    T1]   read reg(0x1e) = 0x12
    [   10.839296] [    T1]   read reg(0x1f) = 0x0
    [   10.866279] [    T1]   read reg(0x  25) = 0x480
    [   10.866706] [    T1]   read reg(0x  2c) = 0x141f
    [   10.867132] [    T1]   read reg(0x  2d) = 0x0
    [   10.867557] [    T1]   read reg(0x  2e) = 0x221
    [   10.867982] [    T1]   read reg(0x  31) = 0x10b0
    [   10.868408] [    T1]   read reg(0x  32) = 0xd0
    [   10.868834] [    T1]   read reg(0x  33) = 0x0
    [   10.869261] [    T1]   read reg(0x  37) = 0x0
    [   10.869686] [    T1]   read reg(0x  39) = 0x0
    [   10.870111] [    T1]   read reg(0x  3a) = 0x0
    [   10.870537] [    T1]   read reg(0x  43) = 0x7a0
    [   10.870963] [    T1]   read reg(0x  4f) = 0x240
    [   10.871389] [    T1]   read reg(0x  55) = 0x0
    [   10.871815] [    T1]   read reg(0x  6e) = 0x454
    [   10.872240] [    T1]   read reg(0x  71) = 0x0
    [   10.872665] [    T1]   read reg(0x  72) = 0x0
    [   10.873087] [    T1]   read reg(0x  7b) = 0x5dc
    [   10.873510] [    T1]   read reg(0x  7c) = 0x7d
    [   10.873932] [    T1]   read reg(0x  86) = 0x37
    [   10.874355] [    T1]   read reg(0x  c6) = 0x0
    [   10.874777] [    T1]   read reg(0x  d6) = 0x0
    [   10.875199] [    T1]   read reg(0x  e9) = 0x9f22
    [   10.875621] [    T1]   read reg(0x  fe) = 0xe721
    [   10.876047] [    T1]   read reg(0x 134) = 0x1000
    [   10.876473] [    T1]   read reg(0x 135) = 0x0
    [   10.876899] [    T1]   read reg(0x 136) = 0x0
    [   10.877325] [    T1]   read reg(0x 137) = 0x0
    [   10.877750] [    T1]   read reg(0x 138) = 0x0
    [   10.878176] [    T1]   read reg(0x 139) = 0x0
    [   10.878601] [    T1]   read reg(0x 13a) = 0x0
    [   10.879027] [    T1]   read reg(0x 13b) = 0x0
    [   10.879452] [    T1]   read reg(0x 13c) = 0x0
    [   10.879878] [    T1]   read reg(0x 13d) = 0x0
    [   10.880303] [    T1]   read reg(0x 13e) = 0x0
    [   10.880729] [    T1]   read reg(0x 13f) = 0x0
    [   10.881155] [    T1]   read reg(0x 140) = 0x0
    [   10.881581] [    T1]   read reg(0x 141) = 0x0
    [   10.882006] [    T1]   read reg(0x 142) = 0x0
    [   10.882431] [    T1]   read reg(0x 143) = 0x0
    [   10.882858] [    T1]   read reg(0x 144) = 0x0
    [   10.883283] [    T1]   read reg(0x 145) = 0x0
    [   10.883709] [    T1]   read reg(0x 146) = 0x0
    [   10.884134] [    T1]   read reg(0x 147) = 0x0
    [   10.884560] [    T1]   read reg(0x 148) = 0x0
    [   10.884985] [    T1]   read reg(0x 149) = 0x0
    [   10.885410] [    T1]   read reg(0x 14a) = 0x0
    [   10.885836] [    T1]   read reg(0x 14b) = 0x0
    [   10.886262] [    T1]   read reg(0x 14c) = 0x0
    [   10.886688] [    T1]   read reg(0x 14d) = 0x0
    [   10.887113] [    T1]   read reg(0x 14e) = 0x0
    [   10.887539] [    T1]   read reg(0x 14f) = 0x0
    [   10.887964] [    T1]   read reg(0x 150) = 0x0
    [   10.888389] [    T1]   read reg(0x 151) = 0x0
    [   10.888814] [    T1]   read reg(0x 152) = 0x0
    [   10.889242] [    T1]   read reg(0x 153) = 0x0
    [   10.889667] [    T1]   read reg(0x 154) = 0x0
    [   10.890093] [    T1]   read reg(0x 155) = 0x0
    [   10.890519] [    T1]   read reg(0x 156) = 0x0
    [   10.890944] [    T1]   read reg(0x 157) = 0x0
    [   10.891370] [    T1]   read reg(0x 158) = 0x0
    [   10.891795] [    T1]   read reg(0x 159) = 0x0
    [   10.892220] [    T1]   read reg(0x 15a) = 0x0
    [   10.892646] [    T1]   read reg(0x 15b) = 0x0
    [   10.893072] [    T1]   read reg(0x 15c) = 0x0
    [   10.893498] [    T1]   read reg(0x 15d) = 0x0
    [   10.893923] [    T1]   read reg(0x 15e) = 0x0
    [   10.894349] [    T1]   read reg(0x 15f) = 0x0
    [   10.894774] [    T1]   read reg(0x 170) = 0xc0f
    [   10.895200] [    T1]   read reg(0x 172) = 0x0
    [   10.895625] [    T1]   read reg(0x 180) = 0x752
    [   10.896052] [    T1]   read reg(0x 181) = 0xc850
    [   10.896477] [    T1]   read reg(0x 182) = 0x5326
    [   10.896902] [    T1]   read reg(0x 183) = 0xa01e
    [   10.897328] [    T1]   read reg(0x 184) = 0xe976
    [   10.897754] [    T1]   read reg(0x 185) = 0x19cf
    [   10.898180] [    T1]   read reg(0x 190) = 0x0
    [   10.898606] [    T1]   read reg(0x 191) = 0x0
    [   10.899031] [    T1]   read reg(0x 192) = 0x0
    [   10.899456] [    T1]   read reg(0x 193) = 0x0
    [   10.899881] [    T1]   read reg(0x 194) = 0x0
    [   10.900307] [    T1]   read reg(0x 195) = 0x0
    [   10.900732] [    T1]   read reg(0x 196) = 0x0
    [   10.901158] [    T1]   read reg(0x 197) = 0x0
    [   10.901584] [    T1]   read reg(0x 198) = 0x0
    [   10.902010] [    T1]   read reg(0x 199) = 0x0
    [   10.902436] [    T1]   read reg(0x 1a4) = 0x0
    [   10.902863] [    T1]   read reg(0x 1a5) = 0x0
    [   10.903288] [    T1]   read reg(0x 1a6) = 0x0
    [   10.903714] [    T1]   read reg(0x 1a8) = 0x0
    [   10.904139] [    T1]   read reg(0x 1a9) = 0x0
    [   10.904565] [    T1]   read reg(0x 1df) = 0x43
    [   10.904991] [    T1]   read reg(0x 1e0) = 0x417a
    [   10.905417] [    T1]   read reg(0x 1ec) = 0x1ffd
    [   10.905842] [    T1]   read reg(0x c00) = 0x1140
    [   10.906269] [    T1]   read reg(0x c01) = 0x6149
    [   10.906695] [    T1]   read reg(0x c02) = 0x2000
    [   10.907120] [    T1]   read reg(0x c03) = 0xa0f3
    [   10.907546] [    T1]   read reg(0x c04) = 0x20
    [   10.907972] [    T1]   read reg(0x c05) = 0x0
    [   10.908397] [    T1]   read reg(0x c06) = 0x0
    [   10.908823] [    T1]   read reg(0x c07) = 0x2001
    [   10.909249] [    T1]   read reg(0x c08) = 0x0
    [   10.909675] [    T1]   read reg(0x c10) = 0x3148
    [   10.910102] [    T1]   read reg(0x c18) = 0x1ff
    [   10.910527] [    T1]   read reg(0x c19) = 0x0

  • The above is all the register value after initialization.

  • Hi Chenglei, 

    Thank you for all of this information. I am having some trouble understanding the register values. 

    0x01 power up default value is 0x6149
    0x00 power up default value is 0x2100

    You mentioned these registers are not initializing to the default values but the register dump you provided tells us that they are being initialized to 0x140 and 0x7949, not 0x2100 and 0x6149. Is this value being changed?

    For the register value of 0x6E

    Taking a look at the bits 11-9 above, it also looks like the auto-negotiation strap is set to disable, which is why bit 12 was 0 for you when you read it in register 0x00

    Our bit12 of reg 0x00 is zero by power-up default, why?

    This is for the MDI line auto-negotiation, which shouldn't matter when being used in bridge modes. 

    Can you also confirm that the extended register space access steps were followed while writing these registers to enable bridge mode? If possible, I'd like to read the register 0x1DF to make sure that the value 0x43.

    Can we probe the SGMII signals (SO_P/SO_N & SI_P/SI_N) to make sure they are as expected? It should look similar to the following

    Channel 1: SO_P

    Channel 2: SO_N

    Channel M1: CH1 - CH 2

    Best,

    Vivaan

  • Hi, :

    (1)  Out RX_D3 is pulled high by hardware, which leads to "reg 0x00 power up default value is 0x2100".  The reg dump is the value after I changed reg 0x00 to 0x1140. Because we have produced many boards, if we do not change hardware and keep RX_D3 pulled high,  how to set registers to make auto-nego successfully?

    (2) One more question:  Our soc MAC need a 125M clk input. DP83869 pin 40 is CLK_OUT.  Can we config CLK_OUT to 125M output? How to config?

    Thanks.

      

  • (2) One more question:  Our soc MAC need a 125M clk input. DP83869 pin 40 is CLK_OUT.  Can we config CLK_OUT to 125M output? How to config?

    --We use bridge mode, can we get 125M clk?

  • Hi Chenglei, 

    RX_D3 is supposed to be pulled high for Bridge mode configuration. Why are you changing this value to 0x1140?

    Could you provide a register dump without any changes, as it was after bootup? 

    Have you tried linking up in this configuration without changing these register values?

    Can you also confirm that the extended register space access steps were followed while writing these registers to enable bridge mode? If possible, I'd like to read the register 0x1DF to make sure that the value 0x43.

    Were you able to get confirmation on the above quote? This is crucial to write and read extended register spaces

    Can we probe the SGMII signals (SO_P/SO_N & SI_P/SI_N) to make sure they are as expected?

    Were you able to gather these waveforms?

    125MHz clock can be enabled on CLK_OUT using register 0x170. Any of the options that don't have "Divided by 5" should output a 125Mhz clock. Please note the requirements in the register map in the datasheet for modifying this register value.

    Best,

    Vivaan

  • Hi,

    I confirm read/write reg 0x00~0x1f using C22 and read/write reg after 0x20 using C45.  The register dump after boot up without any change are as following:

    [    6.577146] [    T1]   read reg(0x 0) = 0x2100
    [    6.603316] [    T1]   read reg(0x 1) = 0x6149
    [    6.629981] [    T1]   read reg(0x 2) = 0x2000
    [    6.656656] [    T1]   read reg(0x 3) = 0xa0f3
    [    6.683315] [    T1]   read reg(0x 4) = 0x20
    [    6.709981] [    T1]   read reg(0x 5) = 0x0
    [    6.736648] [    T1]   read reg(0x 6) = 0x0
    [    6.763315] [    T1]   read reg(0x 7) = 0x2001
    [    6.789981] [    T1]   read reg(0x 8) = 0x0
    [    6.816648] [    T1]   read reg(0x 9) = 0x1300
    [    6.843314] [    T1]   read reg(0x a) = 0x0
    [    6.869981] [    T1]   read reg(0x b) = 0x0
    [    6.896648] [    T1]   read reg(0x c) = 0x0
    [    6.923314] [    T1]   read reg(0x d) = 0x0
    [    6.949983] [    T1]   read reg(0x e) = 0x0
    [    6.976648] [    T1]   read reg(0x f) = 0xf000
    [    7.003315] [    T1]   read reg(0x10) = 0x5448
    [    7.029981] [    T1]   read reg(0x11) = 0xa802
    [    7.056648] [    T1]   read reg(0x12) = 0x0
    [    7.083314] [    T1]   read reg(0x13) = 0x40
    [    7.109979] [    T1]   read reg(0x14) = 0x29c7
    [    7.136648] [    T1]   read reg(0x15) = 0x0
    [    7.163314] [    T1]   read reg(0x16) = 0x0
    [    7.189981] [    T1]   read reg(0x17) = 0x40
    [    7.216647] [    T1]   read reg(0x18) = 0x6150
    [    7.243314] [    T1]   read reg(0x19) = 0x4404
    [    7.269981] [    T1]   read reg(0x1a) = 0x2
    [    7.296648] [    T1]   read reg(0x1b) = 0x0
    [    7.323313] [    T1]   read reg(0x1c) = 0x0
    [    7.349981] [    T1]   read reg(0x1d) = 0x0
    [    7.376648] [    T1]   read reg(0x1e) = 0x12
    [    7.403314] [    T1]   read reg(0x1f) = 0x0
    
    [    7.430297] [    T1]   read reg(0x  25) = 0x480
    [    7.430725] [    T1]   read reg(0x  2c) = 0x141f
    [    7.431151] [    T1]   read reg(0x  2d) = 0x0
    [    7.431577] [    T1]   read reg(0x  2e) = 0x221
    [    7.432002] [    T1]   read reg(0x  31) = 0x10b0
    [    7.432428] [    T1]   read reg(0x  32) = 0xd0
    [    7.432853] [    T1]   read reg(0x  33) = 0x0
    [    7.433279] [    T1]   read reg(0x  37) = 0x0
    [    7.433705] [    T1]   read reg(0x  39) = 0x0
    [    7.434130] [    T1]   read reg(0x  3a) = 0x0
    [    7.434556] [    T1]   read reg(0x  43) = 0x7a0
    [    7.434981] [    T1]   read reg(0x  4f) = 0x200
    [    7.435406] [    T1]   read reg(0x  55) = 0x0
    [    7.435831] [    T1]   read reg(0x  6e) = 0x454
    [    7.436255] [    T1]   read reg(0x  71) = 0x0
    [    7.436681] [    T1]   read reg(0x  72) = 0x0
    [    7.437107] [    T1]   read reg(0x  7b) = 0x5dc
    [    7.437532] [    T1]   read reg(0x  7c) = 0x7d
    [    7.437957] [    T1]   read reg(0x  86) = 0x77
    [    7.438383] [    T1]   read reg(0x  c6) = 0x0
    [    7.438808] [    T1]   read reg(0x  d6) = 0x0
    [    7.439233] [    T1]   read reg(0x  e9) = 0x9f22
    [    7.439658] [    T1]   read reg(0x  fe) = 0xe721
    [    7.440085] [    T1]   read reg(0x 134) = 0x1000
    [    7.440510] [    T1]   read reg(0x 135) = 0x0
    [    7.440936] [    T1]   read reg(0x 136) = 0x0
    [    7.441360] [    T1]   read reg(0x 137) = 0x0
    [    7.441786] [    T1]   read reg(0x 138) = 0x0
    [    7.442211] [    T1]   read reg(0x 139) = 0x0
    [    7.442636] [    T1]   read reg(0x 13a) = 0x0
    [    7.443061] [    T1]   read reg(0x 13b) = 0x0
    [    7.443487] [    T1]   read reg(0x 13c) = 0x0
    [    7.443912] [    T1]   read reg(0x 13d) = 0x0
    [    7.444337] [    T1]   read reg(0x 13e) = 0x0
    [    7.444761] [    T1]   read reg(0x 13f) = 0x0
    [    7.445187] [    T1]   read reg(0x 140) = 0x0
    [    7.445612] [    T1]   read reg(0x 141) = 0x0
    [    7.446037] [    T1]   read reg(0x 142) = 0x0
    [    7.446462] [    T1]   read reg(0x 143) = 0x0
    [    7.446888] [    T1]   read reg(0x 144) = 0x0
    [    7.447313] [    T1]   read reg(0x 145) = 0x0
    [    7.447738] [    T1]   read reg(0x 146) = 0x0
    [    7.448164] [    T1]   read reg(0x 147) = 0x0
    [    7.448590] [    T1]   read reg(0x 148) = 0x0
    [    7.449014] [    T1]   read reg(0x 149) = 0x0
    [    7.449440] [    T1]   read reg(0x 14a) = 0x0
    [    7.449865] [    T1]   read reg(0x 14b) = 0x0
    [    7.450298] [    T1]   read reg(0x 14c) = 0x0
    [    7.450723] [    T1]   read reg(0x 14d) = 0x0
    [    7.451148] [    T1]   read reg(0x 14e) = 0x0
    [    7.451573] [    T1]   read reg(0x 14f) = 0x0
    [    7.451998] [    T1]   read reg(0x 150) = 0x0
    [    7.452422] [    T1]   read reg(0x 151) = 0x0
    [    7.452848] [    T1]   read reg(0x 152) = 0x0
    [    7.453274] [    T1]   read reg(0x 153) = 0x0
    [    7.453698] [    T1]   read reg(0x 154) = 0x0
    [    7.454123] [    T1]   read reg(0x 155) = 0x0
    [    7.454548] [    T1]   read reg(0x 156) = 0x0
    [    7.454973] [    T1]   read reg(0x 157) = 0x0
    [    7.455397] [    T1]   read reg(0x 158) = 0x0
    [    7.455822] [    T1]   read reg(0x 159) = 0x0
    [    7.456247] [    T1]   read reg(0x 15a) = 0x0
    [    7.456672] [    T1]   read reg(0x 15b) = 0x0
    [    7.457096] [    T1]   read reg(0x 15c) = 0x0
    [    7.457521] [    T1]   read reg(0x 15d) = 0x0
    [    7.457946] [    T1]   read reg(0x 15e) = 0x0
    [    7.458370] [    T1]   read reg(0x 15f) = 0x0
    [    7.458795] [    T1]   read reg(0x 170) = 0xc0f
    [    7.459220] [    T1]   read reg(0x 172) = 0x0
    [    7.459645] [    T1]   read reg(0x 180) = 0x752
    [    7.460071] [    T1]   read reg(0x 181) = 0xc850
    [    7.460496] [    T1]   read reg(0x 182) = 0x5326
    [    7.460922] [    T1]   read reg(0x 183) = 0xa01e
    [    7.461346] [    T1]   read reg(0x 184) = 0xe976
    [    7.461771] [    T1]   read reg(0x 185) = 0x19cf
    [    7.462196] [    T1]   read reg(0x 190) = 0x0
    [    7.462621] [    T1]   read reg(0x 191) = 0x0
    [    7.463045] [    T1]   read reg(0x 192) = 0x0
    [    7.463471] [    T1]   read reg(0x 193) = 0x0
    [    7.463896] [    T1]   read reg(0x 194) = 0x0
    [    7.464321] [    T1]   read reg(0x 195) = 0x0
    [    7.464746] [    T1]   read reg(0x 196) = 0x0
    [    7.465171] [    T1]   read reg(0x 197) = 0x0
    [    7.465597] [    T1]   read reg(0x 198) = 0x0
    [    7.466022] [    T1]   read reg(0x 199) = 0x0
    [    7.466447] [    T1]   read reg(0x 1a4) = 0x0
    [    7.466874] [    T1]   read reg(0x 1a5) = 0x0
    [    7.467300] [    T1]   read reg(0x 1a6) = 0x0
    [    7.467725] [    T1]   read reg(0x 1a8) = 0x0
    [    7.468150] [    T1]   read reg(0x 1a9) = 0x0
    [    7.468576] [    T1]   read reg(0x 1df) = 0x42
    [    7.469001] [    T1]   read reg(0x 1e0) = 0x417a
    [    7.469426] [    T1]   read reg(0x 1ec) = 0x1ffd
    [    7.469852] [    T1]   read reg(0x c00) = 0x2100
    [    7.470278] [    T1]   read reg(0x c01) = 0x6149
    [    7.470702] [    T1]   read reg(0x c02) = 0x2000
    [    7.471127] [    T1]   read reg(0x c03) = 0xa0f3
    [    7.471553] [    T1]   read reg(0x c04) = 0x20
    [    7.471978] [    T1]   read reg(0x c05) = 0x0
    [    7.472402] [    T1]   read reg(0x c06) = 0x0
    [    7.472828] [    T1]   read reg(0x c07) = 0x2001
    [    7.473254] [    T1]   read reg(0x c08) = 0x0
    [    7.473679] [    T1]   read reg(0x c10) = 0x3148
    [    7.474103] [    T1]   read reg(0x c18) = 0x1ff
    [    7.474529] [    T1]   read reg(0x c19) = 0x0

  • Hi, 

        Our hardware only pulled up RX_D3 to high, and leave  RX_D2 and JTAG_TDO/GPIO_1 default low.  Boot-up mode is RGMII to 100Base-FX.

    After boot up, SGMII auto-nego was disabled.  And I tried to enable it, but failed.

    Can you help how to set registers to  make auto-negotiation successful?

  • After boot up, 83869 entered “RGMII to 100Base-FX” mode by strap. 

    " reg(0x 0) = 0x2100 " means auto-nego is disabled. 

  • I found this from datasheet:

    Our 83869 strp pin is in  “RGMII to 100Base-FX” mode.

    I wonder if we have ways to restart auto-nego when 83869 mode change from  “RGMII to 100Base-FX” mode to "GRMII SGMII bridge" mode by software.

  • Hi Chenglei, 

    Thank you for the register dump and all the information

    reg(0x 0) = 0x2100 " means auto-nego is disabled

    I think you are confusing the MDI auto-negotiation with the SGMII auto-negotiation. The auto-negotiation referred to in the register 0x00 is the MDI auto-negotiation. Since in Bridge Mode, the MDI side is not used, this setting is not applicable at all. The SGMII auto-negotiation can be checked through register 0x14 bit 7, which according to the register dump you provided, is on. 

    Additionally, can you read register 0xC00 after writing the following registers ONLY (to put the PHY into Bridge Mode)?

    I think this would confirm if the PHY is actually switching modes using that command since this register should change to reflect the new mode. 

    As mentioned in my earlier reply, it looks like the link partner is not responding to the auto-negotiation started by the PHY. TO get more information about this, I wanted to conduct the following test. This would tell us if there is an issue in the PHY signal or the link partner

    Can we probe the SGMII signals (SO_P/SO_N & SI_P/SI_N) to make sure they are as expected? It should look similar to the following

    Channel 1: SO_P

    Channel 2: SO_N

    Channel M1: CH1 - CH 2

    We can probe these signals from bootup to after writing the register changes to change into bridge mode. 

    Best,

    Vivaan

  • Hi, 

      We have resolved the "RGMII-to-SGMII Bridge Mode" problem from hardware side. 

      But I find another problem.  The SGMII port on our switch can only work as MAC mode, and can not be set to PHY mode.  You know, SGMII communication needs the SGMII two ends be set MAC mode and PHY mode respectively.   

       When 83869 in "RGMII-to-SGMII Bridge Mode", could the SGMII of the 83869 be set PHY mode?  Is there any register to set PHY mode?

  • Hi Chenglei, 

    Glad to know that the problem was resolved? What seemed to be the problem/fix in this case? It might help solve other peoples issues in the future so I like to keep track of things like this on E2E.

    The PHY acts only as a physical layer for ethernet communication. Because of this, it lacks the functionality of selecting modes. Ethernet switches can be used in multiple different configurations, switch to MAC, switch to PHY, and even switch to switch, which is why a switch needs different modes to differentiate between these use cases. 

    Best,

    Vivaan