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.

AM5718: PHY: DP83848M connected to PRUSS2

Part Number: AM5718
Other Parts Discussed in Thread: TMDXIDK5718, TLK105L, DP83848C

Hi,

I'm using SDK-LINUX-AM57X 06_03_00_106 on our custom board.

Our board has 3 ethernet ports .

It is similer to TMDXIDK5718. But it doesn't have 2 Gigabit (1000Mb) Ethernet Ports.

All 3 ports are 100Mb Ethernet Ports on PRU-ICSS.

The PHY device DP83848MSQ/NOPB instead of TLK105L.

Mdio found PHY devices.

davinci_mdio 4b232400.mdio: phy[1]: device 4b232400.mdio:01, driver NS DP83848C 10/100 Mbps PHY  <- pruss1_emac0
davinci_mdio 4b2b2400.mdio: phy[1]: device 4b2b2400.mdio:01, driver NS DP83848C 10/100 Mbps PHY  <- pruss2_emac1
davinci_mdio 4b2b2400.mdio: phy[3]: device 4b2b2400.mdio:03, driver NS DP83848C 10/100 Mbps PHY  <- pruss2_emac0

pruss1_eth driver was initialized. But pruss2_eth(pruss2_emac0 and pruss2_emac1) not.

In prueth.c

"prueth_netdev_init" returned -517.

        /* connect PHY */
        emac->phydev = of_phy_connect(ndev, emac->phy_node,
                                      &emac_adjust_link, 0, emac->phy_if);
        if (!emac->phydev) {
                dev_dbg(prueth->dev, "couldn't connect to phy %s\n",
                        emac->phy_node->full_name);
                ret = -EPROBE_DEFER;
                goto free;
        }

"of_phy_connect" returned NULL.

Can you think of any reasons?

Regards,

Toshio Masuchi

  • Toshio, 

    Not sure if you made any breakthrough yet - otherwise, can you print out the phy addr as the driver understood, vs. what are the actual hardware configurations? most of my PHY debug ended up with incorrect phy addr. 

    Jian 

  • Hi Jian,

    Tahnks for your reply.

    This problem remains the same.

    We changed hardware settings as below.

    MDIO Address
     PRU1 emac0 -  Not connect
     PRU1 emac1 - 1
     PRU2 emac0 - 1
     PRU2 emac1 - 3
    " PRU1 emac1" driver is loaded. And ethernet packets are sent.
    But "PRU2 emac0" and "PRU2 emac1" are not loaded.
    If the PHY addresses are wrong, dmesg does not display.
    So I think that PHY addresses are right.
    davinci_mdio 4b232400.mdio: phy[1]: device 4b232400.mdio:01, driver NS DP83848C 10/100 Mbps PHY   <- pruss1_emac1
    davinci_mdio 4b2b2400.mdio: phy[1]: device 4b2b2400.mdio:01, driver NS DP83848C 10/100 Mbps PHY   <- pruss2_emac0
    davinci_mdio 4b2b2400.mdio: phy[3]: device 4b2b2400.mdio:03, driver NS DP83848C 10/100 Mbps PHY   <- pruss2_emac0

    Regards,

    Toshio

  • Sorry,

    I mistook in writing.

    The following is correct.
    davinci_mdio 4b232400.mdio: phy[1]: device 4b232400.mdio:01, driver NS DP83848C 10/100 Mbps PHY   <- pruss1_emac1
    davinci_mdio 4b2b2400.mdio: phy[1]: device 4b2b2400.mdio:01, driver NS DP83848C 10/100 Mbps PHY   <- pruss2_emac0
    davinci_mdio 4b2b2400.mdio: phy[3]: device 4b2b2400.mdio:03, driver NS DP83848C 10/100 Mbps PHY   <- pruss2_emac1
  • Hi Jian,

    You are right.

    Our board was incorrect.PHY address was different from software settings.

    Thanks,

    Toshio