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.

AM3352: PING is not happening on Mii2 interface

Part Number: AM3352
Other Parts Discussed in Thread: DP83865, DP83843

We have AM335x based custom board.
The details are :

> uname -a
Linux am335x-evm 3.14.1+ #28 SMP Mon Jul 6 17:39:42 IST 2020 armv7l GNU/Linux

root@am335x-evm:~#  dmesg | grep phy
[    0.000000] Booting Linux on physical CPU 0x0
[    3.227088] libphy: Fixed MDIO Bus: probed
[    3.239718] 47401300.usb-phy supply vcc not found, using dummy regulator
[    3.269129] 47401b00.usb-phy supply vcc not found, using dummy regulator
[    3.771434] davinci_mdio 4a101000.mdio: detected phy mask fffffffa
[    3.791055] libphy: 4a101000.mdio: probed
[    3.795195] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver unknown
[    3.803267] davinci_mdio 4a101000.mdio: phy[2]: device 4a101000.mdio:02, driver TI DP83848
[   36.784465] net eth0: phy found : id is : 0x20005c90
                ************** inside file = drivers/net/ethernet/ti/cpsw-phy-sel.c, line num = 51, func = cpsw_gmii_sel_am3352 *************
[   38.784300] libphy: 4a101000.mdio:02 - Link is Up - 100/Full


root@am335x-evm:~#  dmesg | grep eth0
[   36.696929] net eth0: initializing cpsw version 1.12 (0)
[   36.784465] net eth0: phy found : id is : 0x20005c90
[   36.810248] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   36.816200] A link change request failed with some changes committed already. Interface eth0 may have been left with an inconsistent configuration, please check.
[   38.798395] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

[    3.668702] pinctrl-single 44e10800.pinmux: pin 44e10848.0 already requested by 48302000.epwmss; cannot claim for 4a100000.ethernet
[    3.680703] pinctrl-single 44e10800.pinmux: pin-18 (4a100000.ethernet) status -22
[    3.688271] pinctrl-single 44e10800.pinmux: could not request pin 18 (44e10848.0) from group cpsw_default  on device pinctrl-single
[    3.700217] cpsw 4a100000.ethernet: Error applying setting, reverse things back

The ethernet phy DP83848 is configured in 'mii' mode & connected to GMii2 port of the AM335x processor . The link is getting detected . But the ping is not happening. Please help.

The .dts files that are modified is attached.

The .dts file snippets are as below:

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

&davinci_mdio {

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

&cpsw_emac0 {
    compatible = "TI DP83848","NatSemi DP83865";
    phy_id = <&davinci_mdio>, <2>;
    phy-mode = "mii";
    status = "okay";
};


The .dtsi file snippet is:

    /* Slave 2 */
            AM33XX_IOPAD(0x878, PIN_INPUT | MUX_MODE1)        /* gpmc_ben1.gmii2_col(ETH1_COL) */
            AM33XX_IOPAD(0x870, PIN_INPUT | MUX_MODE1)        /* gpmc_wait0.gmii2_crs(ETH1_CRS) */
            AM33XX_IOPAD(0x874, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_wpn.gmii2_rxerr(ETH1_RXER) */
            AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gpmc_a0.gmii2_txen(ETH1_TXEN) */
            AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a1.gmii2_rxdv(ETH1_RXDV) */
            AM33XX_IOPAD(0x848, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gpmc_a2.gmii2_txd3(ETH1_TXD[3]) */
            AM33XX_IOPAD(0x84c, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gpmc_a3.gmii2_txd2(ETH1_TXD[2]) */
            AM33XX_IOPAD(0x850, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gpmc_a4.gmii2_txd1(ETH1_TXD[1]) */
            AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gpmc_a5.gmii2_txd0(ETH1_TXD[0]) */
            AM33XX_IOPAD(0x858, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a6.gmii2_txclk(ETH1_TXCLK) */
            AM33XX_IOPAD(0x85c, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a7.gmii2_rxclk(ETH1_RXCLK) */
            /*AM33XX_IOPAD(0x860, PIN_INPUT_PULLDOWN | MUX_MODE1)*/    /* gpmc_a8.gmii2_rxd3(ETH1_RXD[3]) */
            /*AM33XX_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE1)*/    /* gpmc_a9.gmii2_rxd2(ETH1_RXD[2]) */
            /*AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE1)*/    /* gpmc_a10.gmii2_rxd1(ETH1_RXD[1]) */
            /*AM33XX_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE1)*/    /* gpmc_a11.gmii2_rxd0(ETH1_RXD[0]) */
            AM33XX_IOPAD(0x860, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a8.gmii2_rxd3(ETH1_RXD[3]) */
            AM33XX_IOPAD(0x864, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a9.gmii2_rxd2(ETH1_RXD[2]) */
            AM33XX_IOPAD(0x868, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a10.gmii2_rxd1(ETH1_RXD[1]) */
            AM33XX_IOPAD(0x86c, PIN_INPUT_PULLUP | MUX_MODE1)    /* gpmc_a11.gmii2_rxd0(ETH1_RXD[0]) */

/* Slave 2 reset value */
            AM33XX_IOPAD(0x878, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x870, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x874, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x840, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x844, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x848, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x84c, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x850, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x854, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x858, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x85c, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x860, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7)
            AM33XX_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE7)
am335x-dts-files.zip

  • Hi,

    I believe there a few issues in your DTS file.

    In this link to the documentation  please go to this section Primary Interface on Second External Port and follow the example especially on where you place the active_slave flag. The DTS here is setting up two emac nodes to the same PHY.  Delete this &cpsw_emac0 node from the common dtsi file.

    &cpsw_emac0 {
    /*phy_id = <&davinci_mdio>, <0>; */
    phy_id = <&davinci_mdio>, <2>;
    phy-mode = "mii";
    };

    &cpsw_emac1 {
    compatible = "TI DP83848";
    phy_id = <&davinci_mdio>, <2>;
    phy-mode = "mii";
    };

    Best Regards,

    Schuyler

  • Hi Schuyler,

    Thanks for your valuable suggestion.

    After making the changes in the .dts file as per your reply, the eth0 interface is not showing as below:

    root@am335x-evm:~# ifconfig
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:2 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

    root@am335x-evm:~# dmesg | grep phy
    [    0.000000] Booting Linux on physical CPU 0x0
    [    3.227788] libphy: Fixed MDIO Bus: probed
    [    3.240887] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    3.270323] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    3.771258] davinci_mdio 4a101000.mdio: detected phy mask fffffffa
    [    3.791013] libphy: 4a101000.mdio: probed
    [    3.795141] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Marvell 88E1510
    [    3.803937] davinci_mdio 4a101000.mdio: phy[2]: device 4a101000.mdio:02, driver TI DP83848
    [    3.813118] Missing slave[0] phy_id property

    root@am335x-evm:~# dmesg | grep ethernet
    [    3.668612] pinctrl-single 44e10800.pinmux: pin 44e10848.0 already requested by 48302000.epwmss; cannot claim for 4a100000.ethernet
    [    3.680606] pinctrl-single 44e10800.pinmux: pin-18 (4a100000.ethernet) status -22
    [    3.700091] cpsw 4a100000.ethernet: Error applying setting, reverse things back
    [    3.831987] platform 4a100000.ethernet: omap_device_late_idle: enabled but no driver.  Idling

     

    The problem seems to be that the 4a101000.mdio:02 where the DP83843 phy driver is detecting has to be mapped to eth0 interface which I'm not able to do it. Please suggest.

     

     

    Regards,

    Ankush

  • Hi Schuyler,

    Thanks for your valuable suggestion.

    After making the changes in the .dts file as per your reply, the eth0 interface is not showing as below:

    root@am335x-evm:~# ifconfig
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:2 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

    root@am335x-evm:~# dmesg | grep phy
    [    0.000000] Booting Linux on physical CPU 0x0
    [    3.227788] libphy: Fixed MDIO Bus: probed
    [    3.240887] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    3.270323] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    3.771258] davinci_mdio 4a101000.mdio: detected phy mask fffffffa
    [    3.791013] libphy: 4a101000.mdio: probed
    [    3.795141] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Marvell 88E1510
    [    3.803937] davinci_mdio 4a101000.mdio: phy[2]: device 4a101000.mdio:02, driver TI DP83848
    [    3.813118] Missing slave[0] phy_id property

    root@am335x-evm:~# dmesg | grep ethernet
    [    3.668612] pinctrl-single 44e10800.pinmux: pin 44e10848.0 already requested by 48302000.epwmss; cannot claim for 4a100000.ethernet
    [    3.680606] pinctrl-single 44e10800.pinmux: pin-18 (4a100000.ethernet) status -22
    [    3.700091] cpsw 4a100000.ethernet: Error applying setting, reverse things back
    [    3.831987] platform 4a100000.ethernet: omap_device_late_idle: enabled but no driver.  Idling

     

    The problem seems to be that the 4a101000.mdio:02 where the DP83843 phy driver is detecting has to be mapped to eth0 interface which I'm not able to do it. Please suggest.

     

     

    Regards,

    Ankush

  • Hi,

    Can anyone help me on the above issue. I'm awaiting for the response...

  • Hi,

    I apologize I may misunderstood what you are trying to do. Could you please attach a portion of the schematic that shows the Ethernet connection? I see that are 2 PHYs being detected with addresses 0 and 2. Which PHY is going to which interface?

    Best Regards,

    Schuyler

  • Hi ,

    I have attached the snapshot of the Sitara PHY connections for your reference. I would like to mention here that :

    1.  The DP83848 PHY & the Marvel 88E1512 PHY devices share the same MDIO_CLK & MDIO_DATA lines of AM3352 Sitara processor.
    2.  The Marvel 88E1512 PHY tx & rx data lines are connected to KSZ9477 ethernet switch IC.
    3. Whereas, the DP83848 PHY device tx & rx data lines  is only connected to AM3352 processor. This is at this PHY device , the ping failure is happening.

    Kindly Help.am335x_PHY.zip

    Regards,

    Ankush

  • Hi,

    I'm awaiting your response....

  • please can anybody suggest me on the above issue ??

  • hi ,

    pls help me out in solving the issue....

  • Hi,

    Thanks for the schematic snippets, that helped make things clearer.

    I had misread what you are trying to do, the DTS nodes were correct before. Please return them to something like this, this will put the second PHY to second port.

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

    &cpsw_emac1 {
    compatible = "TI DP83848";
    phy_id = <&davinci_mdio>, <2>;
    phy-mode = "mii";
    };

    After changing the DTS file please try the following commands.

    The command ifconfig -a should show all the possible interfaces.

    If eth1 is listed after the ifconfig -a command then use ethtool eth1 to check link status.

    The link status is at the end of the ethtool output, indicates if link is detected or not. If the link is not detected then there is a possible hw issue regarding the PHY, this would be something like not getting a good reset. 

    Please post the outputs of the above ifconfig -a and the ethtool eth1 command.

    Best Regards,

    Schuyler

  • Hi Schuyler,

    Thanks for your late reply.

    Want to make few points clearer,

    1. Just to isolate the problem, we have now disconnected the 2nd PHY's (i.e., Marvel 88E1512) MDIO lines from AM335x  &  kept only DP83848 PHY connected to AM3352's Gmii2 port.
    2. Also changed the DP83848 PHY's hardware address to 00 from 02.


    Since now that only one PHY is connected to Sitara processor , the kernel debug log looks something like this:

     net eth0: initializing cpsw version 1.12 (0)
     net eth0: phy found : id is : 0x20005c90
     davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver TI DP83848
     libphy: 4a101000.mdio:00 - Link is Up - 100/Full

    As its clear that the link is getting detected.

    Accordingly my .dts file is modified as below:

    &mac {

        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        slaves = <1>;
        active_slave = <0>;
        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>, <0>;
        phy-mode = "mii";
    };


    &cpsw_emac1 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "mii";
    };

    Schuyler Patton said:
    The command ifconfig -a should show all the possible interfaces.

    ifconfig -a command still shows only eth0 interface as below:

    root@am335x-evm:~# ifconfig -a
    eth0      Link encap:Ethernet  HWaddr 6C:EC:EB:A4:04:4B   
              inet addr:10.3.3.15  Bcast:10.3.3.255  Mask:255.255.255.0
              inet6 addr: fe80::6eec:ebff:fea4:44b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000  
              RX bytes:0 (0.0 B)  TX bytes:7787 (7.6 KiB)
              Interrupt:56  

    lo        Link encap:Local Loopback   
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:2 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0  
              RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

    Schuyler Patton said:
    If eth1 is listed after the ifconfig -a command then use ethtool eth1 to check link status.

    The link status of eth0 is:

    root@am335x-evm:~# ethtool eth0
    Settings for eth0:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   10baseT/Half 10baseT/Full  
                                100baseT/Half 100baseT/Full  
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full  
                                100baseT/Half 100baseT/Full  
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full  
                                             100baseT/Half 100baseT/Full  
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 2
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000000 (0)

        Link detected: yes

    Also I have attached the DP83848 PHY device driver file for your reference.

    /*
     * Driver for the Texas Instruments DP83848 PHY
     *
     * Copyright (C) 2015 Texas Instruments Inc.
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2 of the License.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     */
    
    #include <linux/module.h>
    #include <linux/phy.h>
    
    #define DP83848_PHY_ID			0x20005c90
    
    /* Registers */
    #define DP83848_MICR			0x11
    #define DP83848_MISR			0x12
    
    /* MICR Register Fields */
    #define DP83848_MICR_INT_OE		BIT(0) /* Interrupt Output Enable */
    #define DP83848_MICR_INTEN		BIT(1) /* Interrupt Enable */
    
    /* MISR Register Fields */
    #define DP83848_MISR_RHF_INT_EN		BIT(0) /* Receive Error Counter */
    #define DP83848_MISR_FHF_INT_EN		BIT(1) /* False Carrier Counter */
    #define DP83848_MISR_ANC_INT_EN		BIT(2) /* Auto-negotiation complete */
    #define DP83848_MISR_DUP_INT_EN		BIT(3) /* Duplex Status */
    #define DP83848_MISR_SPD_INT_EN		BIT(4) /* Speed status */
    #define DP83848_MISR_LINK_INT_EN	BIT(5) /* Link status */
    #define DP83848_MISR_ED_INT_EN		BIT(6) /* Energy detect */
    #define DP83848_MISR_LQM_INT_EN		BIT(7) /* Link Quality Monitor */
    
    static int dp83848_ack_interrupt(struct phy_device *phydev)
    {
    	int err = phy_read(phydev, DP83848_MISR);
    
    	return err < 0 ? err : 0;
    }
    
    static int dp83848_config_intr(struct phy_device *phydev)
    {
    	int err;
    
    	if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
    		err = phy_write(phydev, DP83848_MICR,
    				DP83848_MICR_INT_OE |
    				DP83848_MICR_INTEN);
    		if (err < 0)
    			return err;
    
    		return phy_write(phydev, DP83848_MISR,
    				 DP83848_MISR_ANC_INT_EN |
    				 DP83848_MISR_DUP_INT_EN |
    				 DP83848_MISR_SPD_INT_EN |
    				 DP83848_MISR_LINK_INT_EN);
    	}
    
    	return phy_write(phydev, DP83848_MICR, 0x0);
    }
    
    static int dp83848_config_init(struct phy_device *phydev)
    {
    	int err;
    	int val;
    	int ret;
    
    	ret = genphy_soft_reset(phydev);
    	if (ret == 0)
    		printk("******Success!...INSIDE DP83848 driver ***********\n");
    			
    
    	err = genphy_config_init(phydev);
    	if (err < 0)
    		return err;
    
    	/* DP83620 always reports Auto Negotiation Ability on BMSR. Instead,
    	 * we check initial value of BMCR Auto negotiation enable bit
    	 */
    	val = phy_read(phydev, MII_BMCR);
    	if (!(val & BMCR_ANENABLE))
    		phydev->autoneg = AUTONEG_DISABLE;
    
    	return 0;
    }
    
    static struct mdio_device_id __maybe_unused dp83848_tbl[] = {
    	{ DP83848_PHY_ID, 0xfffffff0 },
    	{ }
    };
    MODULE_DEVICE_TABLE(mdio, dp83848_tbl);
    
    static struct phy_driver dp83848_driver[] = {
    	{
    		.phy_id		= DP83848_PHY_ID,
    		.phy_id_mask	= 0xfffffff0,
    		.name		= "TI DP83848",
    		.features	= PHY_BASIC_FEATURES,
    		.flags		= PHY_HAS_INTERRUPT,
    
    /*		.soft_reset	= genphy_soft_reset, */
    /*		.config_init	= genphy_config_init,*/
    		.config_init	= dp83848_config_init,
    		.suspend	= genphy_suspend,
    		.resume		= genphy_resume,
    		.config_aneg	= genphy_config_aneg,
    		.read_status	= genphy_read_status,
    
    		/* IRQ related */
    		.ack_interrupt	= dp83848_ack_interrupt,
    		.config_intr	= dp83848_config_intr,
    
    		.driver		= { .owner = THIS_MODULE, },
    	},
    };
    /*module_phy_driver(dp83848_driver);*/
    
    static int __init dp83848_init(void)
    {
    	return phy_driver_register(&dp83848_driver[0]);
    }
    
    static void __exit dp83848_exit(void)
    {
    	phy_driver_unregister(&dp83848_driver[0]);
    }
    
    module_init(dp83848_init);
    module_exit(dp83848_exit);
    
    MODULE_DESCRIPTION("Texas Instruments DP83848 PHY driver");
    MODULE_AUTHOR("Andrew F. Davis <afd@ti.com");
    MODULE_LICENSE("GPL");
    
    

  • Hi,

    Does that mean the interface is now working and able to ping? eth0 has an ip address, was it obtained dynamically or was it assigned statically?

    Best Regards,

    Schuyler

  • Schuyler Patton said:
    Does that mean the interface is now working and able to ping?

    No. The interface is still not working even though the 100 Mbps link is getting detected. The ping failure issue is still there.

    Schuyler Patton said:

    eth0 has an ip address, was it obtained dynamically or was it assigned statically?

    The IP address was assigned manually. through the below command:

    ifconfig eth0 10.3.3.15 netmask 255.255.255.0 up

  • Hi,

    Now that gmii1 is not used and only gmii2 two please try setting the active_slave = <1> in the cpsw node. The cpsw driver needs to know that the second port is the primary port. After setting the field please post the results of eth0 -S. You are looking to see if the tx packet count is increasing when sending ping packets.

    How is the reset line for the PHY attached? Is it to a gpio line?

    When you want to enable gmii1 you will need to set the active_slave back to 0. 

    Best Regards,

    Schuyler

  • Hi,

    The ping failure issue is solved.

    All this time i was looking into am335x-boneblack.dts only. The changes were made in am335x-evm.dts file also & then it worked for me.

    Thanks for ur suggestion.

    Regards,

    Ankush