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.

PROCESSOR-SDK-AM335X: U-Boot support for Marvell PHY

Part Number: PROCESSOR-SDK-AM335X

On a custom AM3352-based board, I am trying to enable CPSW to configure a Marvell 88e1116R PHY.  I am reasonably sure the Marvell driver should be working, as it does work on another (PowerPC-based) board.  The Sitara-based board does seem to detect the phy, but I don't see it actually try to configure it:

=> mdio list
cpsw:
1 - Marvell 88E1116R <--> cpsw

=> mii dump 1 0
0.     (0000)                 -- PHY control register --
  (8000:0000) 0.15    =     0    reset
  (4000:0000) 0.14    =     0    loopback
  (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
  (1000:0000) 0.12    =     0    A/N enable
  (0800:0000) 0.11    =     0    power-down
  (0400:0000) 0.10    =     0    isolate
  (0200:0000) 0. 9    =     0    restart A/N
  (0100:0000) 0. 8    =     0    duplex = half
  (0080:0000) 0. 7    =     0    collision test enable
  (003f:0000) 0. 5- 0 =     0    (reserved)


=> mii dump 1 1
1.     (794d)                 -- PHY status register --
  (8000:0000) 1.15    =     0    100BASE-T4 able
  (4000:4000) 1.14    =     1    100BASE-X  full duplex able
  (2000:2000) 1.13    =     1    100BASE-X  half duplex able
  (1000:1000) 1.12    =     1    10 Mbps    full duplex able
  (0800:0800) 1.11    =     1    10 Mbps    half duplex able
  (0400:0000) 1.10    =     0    100BASE-T2 full duplex able
  (0200:0000) 1. 9    =     0    100BASE-T2 half duplex able
  (0100:0100) 1. 8    =     1    extended status
  (0080:0000) 1. 7    =     0    (reserved)
  (0040:0040) 1. 6    =     1    MF preamble suppression
  (0020:0000) 1. 5    =     0    A/N complete
  (0010:0000) 1. 4    =     0    remote fault
  (0008:0008) 1. 3    =     1    A/N able
  (0004:0004) 1. 2    =     1    link status
  (0002:0000) 1. 1    =     0    jabber detect
  (0001:0001) 1. 0    =     1    extended capabilities

=> mii read 1 2
0141
=> mii read 1 3
0E40

=>  ping 192.168.83.64
link up on port 0, speed 10, half duplex
Using cpsw device

ARP Retry count exceeded; starting again
ping failed; host 192.168.83.64 is not alive


I disabled the device-tree config for the Ethernet, it has made any difference.  The MDIO comm seems to work, but the CPSW driver doesn't seem to want to call the configuration routines of the Marvell driver.  Any idea where I should be digging next?

  • Hi Vladimir,

    Do you have the CONFIG_PHY_MARVELL enabled in your u-boot (am335x_evm.h)? It enables the marvell phy driver located in drivers/net/phy/marvell.c

    Best Regards,
    Yordan
  • Yes, the PHY driver is being built, and upon further investigation the driver's config entry point is getting called.  The MDIO access to the PHY is also working.  Moreover, I enabled the PHY in the Linux Kernel and configured the address and pinmux in the Device Tree, and the interface appears to be working in Linux 100%! 

    So the U-Boot's CPSW (MAC) driver doesn't seem to be able to send and receive data via the Marvell PHY.