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.

DP83826E: Link loss after successful autonegotiation completed

Part Number: DP83826E

I am using DP83826E with Linux SDK ti-processor-sdk-linux-rt-am335x-evm-07.03.00.005.

As soon as I connect the board to my laptop PC with a straight cable (so I expect the device to work in cross cable mode) I see the link going up and down.

I added some debug information to print the PHYSTS register.

Apparently, the device is trying every mode of operation starting from 10Base-T Half Duplex and then 100Base-T Full Duplex.

Even when the PHYSTS register detects signal and descrambler lock (0x4F15), the link will drop at next polling of the status register.

Which registers should I configure to have the PHY working in a cross cable mode ? (if I connect it to a switch it works!)

[ 54.483271] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 54.483518] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x4115
[ 54.483801] 000: prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 54.483822] 000: TI DP83826NC 4a332400.mdio:01: PHY state change NOLINK -> RUNNING
[ 54.483861] 000: IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 55.523375] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 55.523621] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0912
[ 55.523661] 000: prueth pruss_eth eth1: Link is Down
[ 55.523672] 000: TI DP83826NC 4a332400.mdio:01: PHY state change RUNNING -> NOLINK
[ 56.563312] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 56.563563] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0F15
[ 56.563845] 000: prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 56.563866] 000: TI DP83826NC 4a332400.mdio:01: PHY state change NOLINK -> RUNNING
[ 57.603273] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 57.603517] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x4912
[ 57.603560] 000: prueth pruss_eth eth1: Link is Down
[ 57.603570] 000: TI DP83826NC 4a332400.mdio:01: PHY state change RUNNING -> NOLINK
[ 58.643276] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 58.643523] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0902
[ 59.683270] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 59.683518] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x4F15
[ 59.683799] 000: prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 59.683821] 000: TI DP83826NC 4a332400.mdio:01: PHY state change NOLINK -> RUNNING
[ 60.723388] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 60.723634] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0912
[ 60.723674] 000: prueth pruss_eth eth1: Link is Down
[ 60.723686] 000: TI DP83826NC 4a332400.mdio:01: PHY state change RUNNING -> NOLINK
[ 61.763269] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 61.763514] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x4F15
[ 61.763796] 000: prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 61.763818] 000: TI DP83826NC 4a332400.mdio:01: PHY state change NOLINK -> RUNNING
[ 62.803317] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 62.803585] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x4912
[ 62.803626] 000: prueth pruss_eth eth1: Link is Down
[ 62.803637] 000: TI DP83826NC 4a332400.mdio:01: PHY state change RUNNING -> NOLINK
[ 63.843269] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 63.843515] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0902
[ 64.883273] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 64.883520] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x0912

I add register values when connected to an ethernet switch until I disconnect the cable:

[ 61.683376] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 61.683623] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x5115
[ 61.683908] 000: prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 61.683930] 000: TI DP83826NC 4a332400.mdio:01: PHY state change NOLINK -> RUNNING
[ 61.683971] 000: IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 62.723894] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 62.724149] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x5715
[ 63.763383] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x786D
[ 63.763628] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x5715

....................

[ 76.243409] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 76.243678] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x5912
[ 76.243722] 000: prueth pruss_eth eth1: Link is Down
[ 76.243732] 000: TI DP83826NC 4a332400.mdio:01: PHY state change RUNNING -> NOLINK
[ 77.283380] 000: TI DP83826NC 4a332400.mdio:01: BMSR [0x01] = 0x7849
[ 77.283629] 000: TI DP83826NC 4a332400.mdio:01: PHYSTS [0x10] = 0x5902