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.

AM437x eth1 is not responding

Other Parts Discussed in Thread: AM4372

Dear,

Recently i have developed a board which is broadly based on am437x-gp-evm. But i have connected  etherent in RGMII2 instead of RGMII1. Now ethernet link is established and the link status LED is also blinking. But i am not able to ping with other system?

I have changed the dts entry as per RGMII2 connection.  Please see the below ethernet related device tree entry which i have changed to make ethernet work. 


cpsw_default: cpsw_default {
pinctrl-single,pins = <
0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (C3) gpmc_a0.rgmii2_tctl */
0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (C5) gpmc_a1.rgmii2_rctl */
0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (E8) gpmc_a6.rgmii2_tclk */
0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (F6) gpmc_a7.rgmii2_rclk */
0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (E7) gpmc_a5.rgmii2_td0 */
0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (D7) gpmc_a4.rgmii2_td1 */
0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (A4) gpmc_a3.rgmii2_td2 */
0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2 ) /* (C6) gpmc_a2.rgmii2_td3 */
0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (D8) gpmc_a11.rgmii2_rd0 */
0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (G8) gpmc_a10.rgmii2_rd1 */
0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (B4) gpmc_a9.rgmii2_rd2 */
0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2 ) /* (F7) gpmc_a8.rgmii2_rd3 */
>;
};

/* Optional sleep pin settings. Must manually enter values in the below skeleton. */
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (C3) gpmc_a0.rgmii2_tctl */
0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (C5) gpmc_a1.rgmii2_rctl */
0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (E8) gpmc_a6.rgmii2_tclk */
0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (F6) gpmc_a7.rgmii2_rclk */
0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (E7) gpmc_a5.rgmii2_td0 */
0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (D7) gpmc_a4.rgmii2_td1 */
0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (A4) gpmc_a3.rgmii2_td2 */
0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (C6) gpmc_a2.rgmii2_td3 */
0x6c (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (D8) gpmc_a11.rgmii2_rd0 */
0x68 (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (G8) gpmc_a10.rgmii2_rd1 */
0x64 (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (B4) gpmc_a9.rgmii2_rd2 */
0x60 (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (F7) gpmc_a8.rgmii2_rd3 */
>;
};


davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* (A17) mdio_data.mdio_data */
0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B17) mdio_clk.mdio_clk */
>;
};

/* Optional sleep pin settings. Must manually enter values in the below skeleton. */
davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
0x148 (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (A17) mdio_data.mdio_data */
0x14c (PIN_INPUT | PULL_DISABLE | MUX_MODE7 ) /* (B17) mdio_clk.mdio_clk */

>;
};

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

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

/*&cpsw_emac1 to emac0 --wini */

&cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "rgmii";
};

Is there any problem in the above device tree entries? What are the changes i have to make to work with RGMII2 based ethernet?

Regards,

Winiston.P

  • Dear Biser,
    If i enter "ifconfig", i could not find "eth1". I can find only "eth0" , "lo" & "wlan0".
    I made the following changes as you said.

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

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

    &cpsw_emac1 {
    phy_id = <&davinci_mdio>, <1>;
    phy-mode = "rgmii-txid";
    };


    Still i am not able to ping with other systems.
    Does it necessary to change any other files? How do i configure rgmii2 as my default ethernet port?

    Regards,
    Winiston.P
  • I have asked the Ethernet experts to look at this. They will respond here.
  • Dear Biser,
    I am waiting for response...Thanks...

    Regards
    Winiston.P
  • Try changing this line here in the cpsw_emac1 node, the AM437x does not need to use internal delay.  

    phy-mode = "rgmii";

    The example on the wiki was for a am335x application. The DTS setup will make the second interface the primary ethernet interface. This means only eth0 will be listed when doing the ifconfig command.

    After making the change please check to see if any packets are transmitted by using wireshark when bringing up the interface or trying a ping.  Here is a link to some additional tips for looking at ethernet issues.

    software-dl.ti.com/.../index.html

  • Dear,

    Thanks for your reply. I have changed  the following line as you said,

    phy-mode = "rgmii";

    Still i am not able to ping with other system.

    Status led is blinking in the ethernet connector and i am able to set the ip address for eth0. But it is not pinging with other system.

    After setting ip address("ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up"), I can get the following output for "ifconfig eth0" command...

    eth0     Link encap:Ethernet   HWaddr C4:BE:84:CB:1C:76

              inet addr :192.168.1.10 Bcast"192.168.1.255 Mask:255.255.255.0

    UP BROADCAST MULTICAST MTU:1500 Metric:1

    RX packets:0 errors:0 dropped:0 overruns:0 frame:0

    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 (0.0B) TX bytes:0 (0.0B)

    Interrupt:109

    and if i enter "ping 192.168.1.15", i get the following output

    PING 192.168.1.15 (192.168.1.15) : 56 data bytes

    It is not receiving any data from the slave device. My slave device is windows based laptop. If i ping with your am437x-gp-evm, it is pinging properly.

    Should i make any change in "am4372.dtsi" file to make second rgmii port as default port. As of now i did not make any changes in the am4372.dtsi file.

    Thanks....

    Regards,

    Winiston.P