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.

Linux/AM3352: About Ethernet PHY DP83848T Porting Issue

Part Number: AM3352
Other Parts Discussed in Thread: DP83848T, DP83848C

Tool/software: Linux

Hi SIr 

We used latest SDK to do driver porting for DP83848T  and found below error message.

[ 1.196993] libphy: Fixed MDIO Bus: probed
[ 1.270905] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
[ 1.278614] davinci_mdio 4a101000.mdio: detected phy mask fffffffd
[ 1.286301] libphy: 4a101000.mdio: probed
[ 1.290353] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver NS DP83848C 10/100 Mbps PHY
[ 1.301595] cpsw 4a100000.ethernet: No slave[1] phy_id, phy-handle, or fixed-link property
[ 1.309923] cpsw 4a100000.ethernet: Detected MACID = d4:36:39:15:fc:d5
[ 1.316823] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
[ 1.323296] cpsw 4a100000.ethernet: ALE Table size 1024
[ 1.328605] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
[ 1.337997] i2c /dev entries driver

[ 21.539864] net eth0: initializing cpsw version 1.12 (0)
[ 21.731930] NS DP83848C 10/100 Mbps PHY 4a101000.mdio:01: attached PHY driver [NS DP83848C 10/100 Mbps PHY] (mii_bus:phy_addr=4a101000.mdio:01, irq=P)
[ 21.917175] Tom Debug: reg is 0xc5,line is 59
[ 21.968893] libphy: PHY not found
[ 22.030256] net eth0: phy "" not found on slave 1, err -19
[ 22.119341] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

please advise why the PHY is not fund ?

BR

Yimin

  • Hi,

    Can you share the dts file being used ? Was there any modification in it ?

  • Hi SIr

    We used am335x-evmsk.dts and modified below section

    cpsw_default: cpsw_default {
    pinctrl-single,pins = <
    /* Slave 1 */
    AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7) /* rmii1_int */
    AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* rmii1_crs_dv */
    AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE1) /* rmii1_rxer */
    AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii1_txen */
    AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii1_td1 */
    AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii1_td0 */
    AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* rmii1_rd1 */
    AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE1) /* rmii1_rd0 */
    AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_refclk */

    >;
    };

    davinci_mdio_default: davinci_mdio_default {
    pinctrl-single,pins = <
    /* MDIO */
    AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
    AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
    >;
    };

    &mac {
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&cpsw_default>;
    pinctrl-1 = <&cpsw_sleep>;
    //dual_emac = <1>;
    status = "okay";
    };

    &davinci_mdio {
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&davinci_mdio_default>;
    pinctrl-1 = <&davinci_mdio_sleep>;
    status = "okay";
    };

    &cpsw_emac0 {
    phy_id = <&davinci_mdio>, <1>;
    phy-mode = "rmii";
    };

    &phy_sel {
    rmii-clock-ext;
    };

    please advise

    BR
    Yimin
  • Hi Yimin,

    Can you add like following(make sure highlighted entries are present as below), this is taken from evm dts for am335x:

    &mac {

    pinctrl-names = "default", "sleep";

    pinctrl-0 = <&cpsw_default>;

    pinctrl-1 = <&cpsw_sleep>;

    status = "okay";

    slaves = <1>;

    };

    &davinci_mdio {

    pinctrl-names = "default", "sleep";

    pinctrl-0 = <&davinci_mdio_default>;

    pinctrl-1 = <&davinci_mdio_sleep>;

    status = "okay";

    ethphy0: ethernet-phy@0 {

    reg = <0>;

    };

    };

    &cpsw_emac0 {

    phy-handle = <&ethphy0>;

    phy-mode = "rmii";

    };

    Or depending on to which address emac is connected, you can try below too.

    &mac {

    pinctrl-names = "default", "sleep";

    pinctrl-0 = <&cpsw_default>;

    pinctrl-1 = <&cpsw_sleep>;

    status = "okay";

    slaves = <1>;

    };

    &davinci_mdio {

    pinctrl-names = "default", "sleep";

    pinctrl-0 = <&davinci_mdio_default>;

    pinctrl-1 = <&davinci_mdio_sleep>;

    status = "okay";

    ethphy1: ethernet-phy@1 {

    reg = <1>;

    };

    };

    &cpsw_emac0 {

    phy-handle = <&ethphy1>;

    phy-mode = "rmii";

    };

  • Hi,

    Could you also attach the full boot log? And what does ethool eth0 show?

    Best Regards,
    Schuyler
  • HW Issue and it was fixed

    thanks.