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.

Some Ethernet issues happened after changing a PHY chip.



Hi all,

My board is configured with 2 mac ports with MII, RTL8201CP as phy chip

The LAN function works normal in most of the time.


But I found the following strange issues


1.

ifdown eth0 should turn off the LAN LED, but it didnt.

It seems like PHY didnt receive the command (but eth0 disappears in ifconfig)


Does this mean the configuration of PHY is not correct?


2.
eth0 down effects eth1 unable to work.  

After reviewing this post
http://e2e.ti.com/support/arm/sitara_arm/f/791/t/313461

I am sure that the energy detect power down mode of phy is disabled.

Does anyone have the same issue?

  • Hi Sophia,

    You say that the PHY is changed in your post name. Can you describe in more detail? Also what software do you use?

  • Hi Biser,

    BSP: linux-3.2.0-psp04.06.00.11

    -----------> in arch/arm/mach-omap2/devices.c

    static struct cpsw_slave_data am33xx_cpsw_slaves[] = {
    {
    .slave_reg_ofs = 0x200,
    .sliver_reg_ofs = 0xd80,
    .phy_id = "0:10", // <------------------------- CHANGED HERE
    .dual_emac_reserved_vlan = CPSW_PORT_VLAN_SLAVE_0,
    },
    {
    .slave_reg_ofs = 0x300,
    .sliver_reg_ofs = 0xdc0,
    .phy_id = "0:02", // <------------------------- CHANGED HERE
    .dual_emac_reserved_vlan = CPSW_PORT_VLAN_SLAVE_1,
    },
    };

    ---------> arch/arm/mach-omap2/board-am335xevm.c
    /* Module pin mux for mii1 */
    static struct pinmux_config mii1_pin_mux[] = {
    {"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_txen.mii1_txen", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"mii1_rxdv.mii1_rxdv", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_txd3.mii1_txd3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"mii1_txd2.mii1_txd2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"mii1_txd1.mii1_txd1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"mii1_txd0.mii1_txd0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"mii1_txclk.mii1_txclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_rxclk.mii1_rxclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_rxd3.mii1_rxd3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_rxd2.mii1_rxd2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
    {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
    {NULL, 0},
    };
    /* Module pin mux for mii2 */
    static struct pinmux_config mii2_pin_mux[] = {
    {"gpmc_wpn.mii2_rxerr", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a0.mii2_txen", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
    {"gpmc_a1.mii2_rxdv", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a2.mii2_txd3", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
    {"gpmc_a3.mii2_txd2", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
    {"gpmc_a4.mii2_txd1", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
    {"gpmc_a5.mii2_txd0", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
    {"gpmc_a6.mii2_txclk", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a7.mii2_rxclk", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a8.mii2_rxd3", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a9.mii2_rxd2", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a10.mii2_rxd1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"gpmc_a11.mii2_rxd0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
    {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
    {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
    {NULL, 0},
    };
  • I solved these issues.
    1. It needs to configure PHY register.
    2. It is an interrupt bug in network driver.