<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックI'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351084#M48829</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My develop env is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMX6DL board&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Linux kernel 3.0.35&lt;/P&gt;&lt;P&gt;&amp;nbsp; and my pin config is :&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_MDIO__ENET_MDIO,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_MDC__ENET_MDC,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_RXD1__ENET_RDATA_1,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_RXD0__ENET_RDATA_0, &lt;/P&gt;&lt;P&gt;MX6DL_PAD_RGMII_TX_CTL__ENET_ANATOP_ETHERNET_REF_OUT,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TXD1__ENET_TDATA_1,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TXD0__ENET_TDATA_0,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TX_EN__ENET_TX_EN,&lt;/P&gt;&lt;P&gt;in the board-mx6q_sabresd.c file:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static struct fec_platform_data fec_data __initdata = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mx6q_8720_fec_phy_init, //WWJ add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .phy = PHY_INTERFACE_MODE_RMII,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpio_irq = MX6_ENET_IRQ,&amp;nbsp; //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;#define SABRESD_LAN8720_RST IMX_GPIO_NR(1, 1)&lt;/P&gt;&lt;P&gt;static int mx6q_8720_fec_phy_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int val;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("WWJ============%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SABRESD_LAN8720_RST, "lan-reset");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(SABRESD_LAN8720_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(SABRESD_LAN8720_RST, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mxc_iomux_set_gpr_register(1, 21, 1, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset phy */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = phy_read(phydev, 0x0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(500);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("phydev-&amp;gt;addr = %x\n", phydev-&amp;gt;addr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write(phydev, 0x0, (val |BMCR_RESET));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = phy_read(phydev, 0x0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (val &amp;amp; BMCR_PDOWN) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write(phydev, 0x0, (val &amp;amp; ~BMCR_PDOWN));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and i added the follow function:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_set_gpr_register(1, 21, 1, 1);//WWJ add for FEC_RMII_CLK&lt;/P&gt;&lt;P&gt;in&amp;nbsp; static void __init mx6_sabresd_board_init(void);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the attachment is my hardware env.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 28 Sep 2014 01:52:41 GMT</pubDate>
    <dc:creator>wenjingwang</dc:creator>
    <dc:date>2014-09-28T01:52:41Z</dc:date>
    <item>
      <title>I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351084#M48829</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My develop env is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMX6DL board&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Linux kernel 3.0.35&lt;/P&gt;&lt;P&gt;&amp;nbsp; and my pin config is :&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_MDIO__ENET_MDIO,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_MDC__ENET_MDC,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_RXD1__ENET_RDATA_1,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_RXD0__ENET_RDATA_0, &lt;/P&gt;&lt;P&gt;MX6DL_PAD_RGMII_TX_CTL__ENET_ANATOP_ETHERNET_REF_OUT,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TXD1__ENET_TDATA_1,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TXD0__ENET_TDATA_0,&lt;/P&gt;&lt;P&gt;MX6DL_PAD_ENET_TX_EN__ENET_TX_EN,&lt;/P&gt;&lt;P&gt;in the board-mx6q_sabresd.c file:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static struct fec_platform_data fec_data __initdata = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init = mx6q_8720_fec_phy_init, //WWJ add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .phy = PHY_INTERFACE_MODE_RMII,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gpio_irq = MX6_ENET_IRQ,&amp;nbsp; //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;#define SABRESD_LAN8720_RST IMX_GPIO_NR(1, 1)&lt;/P&gt;&lt;P&gt;static int mx6q_8720_fec_phy_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int val;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("WWJ============%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SABRESD_LAN8720_RST, "lan-reset");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(SABRESD_LAN8720_RST, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(SABRESD_LAN8720_RST, 1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mxc_iomux_set_gpr_register(1, 21, 1, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset phy */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = phy_read(phydev, 0x0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(500);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("phydev-&amp;gt;addr = %x\n", phydev-&amp;gt;addr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write(phydev, 0x0, (val |BMCR_RESET));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = phy_read(phydev, 0x0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (val &amp;amp; BMCR_PDOWN) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write(phydev, 0x0, (val &amp;amp; ~BMCR_PDOWN));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and i added the follow function:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxc_iomux_set_gpr_register(1, 21, 1, 1);//WWJ add for FEC_RMII_CLK&lt;/P&gt;&lt;P&gt;in&amp;nbsp; static void __init mx6_sabresd_board_init(void);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the attachment is my hardware env.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 Sep 2014 01:52:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351084#M48829</guid>
      <dc:creator>wenjingwang</dc:creator>
      <dc:date>2014-09-28T01:52:41Z</dc:date>
    </item>
    <item>
      <title>Re: I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351085#M48830</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have you fixed the issue? We are encoutering similar issue with our custom board. Can you share the fix that worked for you?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Deepa&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Oct 2014 04:59:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351085#M48830</guid>
      <dc:creator>deepajosephine</dc:creator>
      <dc:date>2014-10-08T04:59:52Z</dc:date>
    </item>
    <item>
      <title>Re: I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351086#M48831</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi, i have not fix the issue. my change is follow:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/arch/arm/mach-mx6/board-mx6dl_sabresd.h b/arch/arm/mach-mx6/board-mx6dl_sabresd.h&lt;/P&gt;&lt;P&gt;index 12d9700..8aae892 100644&lt;/P&gt;&lt;P&gt;--- a/arch/arm/mach-mx6/board-mx6dl_sabresd.h&lt;/P&gt;&lt;P&gt;+++ b/arch/arm/mach-mx6/board-mx6dl_sabresd.h&lt;/P&gt;&lt;P&gt;@@ -52,25 +52,33 @@ static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* ENET */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_MDIO__ENET_MDIO,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_MDC__ENET_MDC,&lt;/P&gt;&lt;P&gt;+ /*&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TXC__ENET_RGMII_TXC,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TD0__ENET_RGMII_TD0,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TD1__ENET_RGMII_TD1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TD2__ENET_RGMII_TD2,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TD3__ENET_RGMII_TD3,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_TX_CTL__ENET_RGMII_TX_CTL,&lt;/P&gt;&lt;P&gt;+ */&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_RGMII_TX_CTL__ENET_ANATOP_ETHERNET_REF_OUT, //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK,&lt;/P&gt;&lt;P&gt;+ /*&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RXC__ENET_RGMII_RXC,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RD0__ENET_RGMII_RD0,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RD1__ENET_RGMII_RD1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RD2__ENET_RGMII_RD2,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RD3__ENET_RGMII_RD3,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_RGMII_RX_CTL__ENET_RGMII_RX_CTL,&lt;/P&gt;&lt;P&gt;+ */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* RGMII_nRST */&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_CRS_DV__GPIO_1_25,&lt;/P&gt;&lt;P&gt;+ // MX6DL_PAD_ENET_CRS_DV__GPIO_1_25,&amp;nbsp; WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN, //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* IEEE 1588 clock */&lt;/P&gt;&lt;P&gt; //use to mic MX6DL_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT,&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* RGMII Interrupt */&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_RXD1__GPIO_1_26,&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_ENET_RXD1__GPIO_1_26, WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_RXD1__ENET_RDATA_1, //WWJ add&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT, //WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* I2C1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_CSI0_DAT8__I2C1_SDA,&lt;/P&gt;&lt;P&gt;@@ -84,7 +92,7 @@ static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* I2C3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_GPIO_3__I2C3_SCL,&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_GPIO_6__I2C3_SDA,&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_GPIO_6__I2C3_SDA, WWJ delete&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* DISPLAY */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,&lt;/P&gt;&lt;P&gt;@@ -141,13 +149,16 @@ static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_D27__UART2_RXD,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* USB */&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_RX_ER__ANATOP_USBOTG_ID,&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_ENET_RX_ER__ANATOP_USBOTG_ID, WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_RX_ER__ENET_RX_ER, //WWJ add&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_TX_EN__ENET_TX_EN, //WWJ add&lt;/P&gt;&lt;P&gt; // MX6DL_PAD_EIM_D21__USBOH3_USBOTG_OC,&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* USB_OTG_PWR_EN */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_D22__GPIO_3_22,&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_D30__USBOH3_USBH1_OC,&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*USB_H1 PWR EN*/&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_TXD1__GPIO_1_29,&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_ENET_TXD1__GPIO_1_29, //WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_TXD1__ENET_TDATA_1, //WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*SD1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_SD1_CLK__USDHC1_CLK_50MHZ_40OHM,&lt;/P&gt;&lt;P&gt;@@ -235,7 +246,8 @@ static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* DISP_PWM */&lt;/P&gt;&lt;P&gt; // MX6DL_PAD_SD1_DAT3__PWM1_PWMO,&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* DISP0 power enable */&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_TXD0__GPIO_1_30,&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_ENET_TXD0__GPIO_1_30, WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_TXD0__ENET_TDATA_0, //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* DISP0_RD */&lt;/P&gt;&lt;P&gt; // MX6DL_PAD_EIM_D28__GPIO_3_28,&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* DISP_RST_B */&lt;/P&gt;&lt;P&gt;@@ -296,7 +308,8 @@ static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_DA13__GPIO_3_13, /* CHG_2_B&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_DA14__GPIO_3_14, /* FLT_2_B */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- MX6DL_PAD_ENET_RXD0__GPIO_1_27, /* UOK_B */&lt;/P&gt;&lt;P&gt;+ //MX6DL_PAD_ENET_RXD0__GPIO_1_27, /* UOK_B */ WWJ delete&lt;/P&gt;&lt;P&gt;+ MX6DL_PAD_ENET_RXD0__ENET_RDATA_0, //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_EIM_CS1__GPIO_2_24,&amp;nbsp;&amp;nbsp; /* DOK_B */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* TS_INT - MAX11801 */&lt;/P&gt;&lt;P&gt;diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c&lt;/P&gt;&lt;P&gt;index 0b8d144..3d748a9 100644&lt;/P&gt;&lt;P&gt;--- a/arch/arm/mach-mx6/board-mx6q_sabresd.c&lt;/P&gt;&lt;P&gt;+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c&lt;/P&gt;&lt;P&gt;@@ -211,6 +211,7 @@&lt;/P&gt;&lt;P&gt; #define SABRESD_EPDC_VCOM IMX_GPIO_NR(3, 17)&lt;/P&gt;&lt;P&gt; #define SABRESD_CHARGE_NOW IMX_GPIO_NR(1, 2)&lt;/P&gt;&lt;P&gt; #define SABRESD_CHARGE_DONE IMX_GPIO_NR(1, 1)&lt;/P&gt;&lt;P&gt;+#define SABRESD_LAN8720_RST IMX_GPIO_NR(1, 1)&lt;/P&gt;&lt;P&gt; // Frank Lee #define SABRESD_ELAN_CE IMX_GPIO_NR(2, 18)&lt;/P&gt;&lt;P&gt; // Frank Lee #define SABRESD_ELAN_RST IMX_GPIO_NR(3, 8)&lt;/P&gt;&lt;P&gt; // Frank Lee #define SABRESD_ELAN_INT IMX_GPIO_NR(3, 28)&lt;/P&gt;&lt;P&gt;@@ -327,10 +328,44 @@ static int mx6q_sabresd_fec_phy_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+//WWJ add begin&lt;/P&gt;&lt;P&gt;+//#define BMCR_RESET (1 &amp;lt;&amp;lt; 15)&lt;/P&gt;&lt;P&gt;+//#define BMCR_PDOWN ~(1 &amp;lt;&amp;lt; 11)&lt;/P&gt;&lt;P&gt;+static int mx6q_8720_fec_phy_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;+{&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int val;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset phy */&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("WWJ============%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_request(SABRESD_LAN8720_RST, "lan-reset");&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_direction_output(SABRESD_LAN8720_RST, 0);&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msleep(10);&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio_set_value(SABRESD_LAN8720_RST, 1);&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = phy_read(phydev, 0x0);&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (val &amp;amp; BMCR_PDOWN) {&lt;/P&gt;&lt;P&gt;+ phy_write(phydev, 0x0, (val &amp;amp; ~BMCR_PDOWN));&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;+ &lt;/P&gt;&lt;P&gt;+ //printk("TX_EN = %x\n", __raw_readl(ioremap(0x020e04fc, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ //printk("TXD1 = %x\n", __raw_readl(ioremap(0x020e0500, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ //printk("TXD0 = %x\n", __raw_readl(ioremap(0x020e0504, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("MDIO_SELECT = %x\n", __raw_readl(ioremap(0x020e0810, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("RXEN_SELECT = %x\n", __raw_readl(ioremap(0x020e0828, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("RXDATA_0 = %x\n", __raw_readl(ioremap(0x020e0818, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("RXDATA_1 = %x\n", __raw_readl(ioremap(0x020e081c, 4)));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s end\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;+ printk("");&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;+}&lt;/P&gt;&lt;P&gt;+//WWJ add end&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt; static struct fec_platform_data fec_data __initdata = {&lt;/P&gt;&lt;P&gt;- .init = mx6q_sabresd_fec_phy_init,&lt;/P&gt;&lt;P&gt;- .phy = PHY_INTERFACE_MODE_RGMII,&lt;/P&gt;&lt;P&gt;-// .gpio_irq = MX6_ENET_IRQ,&lt;/P&gt;&lt;P&gt;+ //.init = mx6q_sabresd_fec_phy_init, WWJ delete&lt;/P&gt;&lt;P&gt;+ .init = mx6q_8720_fec_phy_init, //WWJ add&lt;/P&gt;&lt;P&gt;+ //.phy = PHY_INTERFACE_MODE_RGMII, WWJ delete&lt;/P&gt;&lt;P&gt;+ .phy = PHY_INTERFACE_MODE_RMII, //WWJ add&lt;/P&gt;&lt;P&gt;+ .gpio_irq = MX6_ENET_IRQ,&amp;nbsp; //WWJ add&lt;/P&gt;&lt;P&gt; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #if 0&lt;/P&gt;&lt;P&gt;@@ -1976,6 +2011,7 @@ static void __init mx6_sabresd_board_init(void)&lt;/P&gt;&lt;P&gt;&amp;nbsp; ARRAY_SIZE(mx6dl_sabresd_pads));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (enet_to_gpio_6) {&lt;/P&gt;&lt;P&gt;+ printk("enet_to_gpio_6 is true============WWJ\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; iomux_v3_cfg_t enet_gpio_pad =&lt;/P&gt;&lt;P&gt;&amp;nbsp; MX6DL_PAD_GPIO_6__ENET_IRQ_TO_GPIO_6;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mxc_iomux_v3_setup_pad(enet_gpio_pad);&lt;/P&gt;&lt;P&gt;@@ -2025,6 +2061,7 @@ static void __init mx6_sabresd_board_init(void)&lt;/P&gt;&lt;P&gt;&amp;nbsp; mxc_iomux_set_gpr_register(1, 21, 1, 1);&lt;/P&gt;&lt;P&gt; #endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; gp_reg_id = sabresd_dvfscore_data.reg_id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; soc_reg_id = sabresd_dvfscore_data.soc_id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mx6q_sabresd_init_uart();&lt;/P&gt;&lt;P&gt;@@ -2088,8 +2125,10 @@ static void __init mx6_sabresd_board_init(void)&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_imx_i2c(0, &amp;amp;mx6q_sabresd_i2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_imx_i2c(1, &amp;amp;mx6q_sabresd_i2c_data);&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_imx_i2c(2, &amp;amp;mx6q_sabresd_i2c_data);&lt;/P&gt;&lt;P&gt;+ /* WWJ delete&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (cpu_is_mx6dl())&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_imx_i2c(3, &amp;amp;mx6q_sabresd_i2c_data);&lt;/P&gt;&lt;P&gt;+ */&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_register_board_info(0, mxc_i2c0_board_info,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ARRAY_SIZE(mxc_i2c0_board_info));&lt;/P&gt;&lt;P&gt;&amp;nbsp; i2c_register_board_info(1, mxc_i2c1_board_info,&lt;/P&gt;&lt;P&gt;@@ -2113,6 +2152,7 @@ static void __init mx6_sabresd_board_init(void)&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_mxc_hdmi(&amp;amp;hdmi_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx6q_add_anatop_thermal_imx(1, &amp;amp;mx6q_sabresd_anatop_thermal_data);&lt;/P&gt;&lt;P&gt;+ mxc_iomux_set_gpr_register(1, 21, 1, 1);//WWJ add for FEC_RMII_CLK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (enet_to_gpio_6)&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Make sure the IOMUX_OBSRV_MUX1 is set to ENET_IRQ. */&lt;/P&gt;&lt;P&gt;diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h b/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h&lt;/P&gt;&lt;P&gt;index 59f8399..1e04205 100644&lt;/P&gt;&lt;P&gt;--- a/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h&lt;/P&gt;&lt;P&gt;+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h&lt;/P&gt;&lt;P&gt;@@ -55,7 +55,7 @@&lt;/P&gt;&lt;P&gt;&amp;nbsp; PAD_CTL_DSE_34ohm&amp;nbsp;&amp;nbsp; | PAD_CTL_SRE_FAST&amp;nbsp;&amp;nbsp; | PAD_CTL_HYS)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_ENET_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE&amp;nbsp; | \&lt;/P&gt;&lt;P&gt;- PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \&lt;/P&gt;&lt;P&gt;+ PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_LOW | \&lt;/P&gt;&lt;P&gt;&amp;nbsp; PAD_CTL_DSE_40ohm&amp;nbsp;&amp;nbsp; | PAD_CTL_HYS)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_ENET_REF_CLK_PAD_CTRL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (PAD_CTL_PUE |&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2232,7 +2232,7 @@&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05B0, 0x01E0, 7, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05B4, 0x01E4, 1, 0x0828, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05B4, 0x01E4, 1, 0x0828, 1, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_CRS_DV__ESAI1_SCKT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05B4, 0x01E4, 2, 0x0840, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_CRS_DV__SPDIF_SPDIF_EXTCLK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2286,7 +2286,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RX_ER__ANATOP_USBOTG_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05C4, 0x01F4, 0, 0x0790, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RX_ER__ENET_RX_ER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05C4, 0x01F4, 1, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05C4, 0x01F4, 1, 0x0000, 0, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RX_ER__ESAI1_HCKR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05C4, 0x01F4, 2, 0x0834, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RX_ER__SPDIF_IN1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2303,7 +2303,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD0__OSC32K_32K_OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05C8, 0x01F8, 0, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD0__ENET_RDATA_0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05C8, 0x01F8, 1, 0x0818, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05C8, 0x01F8, 1, 0x0818, 1, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD0__ESAI1_HCKT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05C8, 0x01F8, 2, 0x0838, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD0__SPDIF_OUT1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2318,7 +2318,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD1__MLB_MLBSIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05CC, 0x01FC, 0, 0x08E4, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD1__ENET_RDATA_1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05CC, 0x01FC, 1, 0x081C, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05CC, 0x01FC, 1, 0x081C, 1, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD1__ESAI1_FST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05CC, 0x01FC, 2, 0x0830, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_RXD1__ENET_1588_EVENT3_OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2331,7 +2331,7 @@&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05CC, 0x01FC, 7, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TX_EN__ENET_TX_EN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05D0, 0x0200, 1, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05D0, 0x0200, 1, 0x0000, 0, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TX_EN__ESAI1_TX3_RX2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05D0, 0x0200, 2, 0x0850, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TX_EN__GPIO_1_28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2342,7 +2342,7 @@&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05D0, 0x0200, 9 | IOMUX_CONFIG_SION, 0x0880, 0, MX6DL_I2C_PAD_CTRL)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD0__ENET_TDATA_0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05D4, 0x0204, 1, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05D4, 0x0204, 1, 0x0000, 0, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD0__ESAI1_TX4_RX1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05D4, 0x0204, 2, 0x0854, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD0__GPIO_1_30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2353,7 +2353,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD1__MLB_MLBCLK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05D8, 0x0208, 0, 0x08DC, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD1__ENET_TDATA_1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05D8, 0x0208, 1, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05D8, 0x0208, 1, 0x0000, 0, MX6DL_ENET_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD1__ESAI1_TX2_RX3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05D8, 0x0208, 2, 0x084C, 0, MX6DL_ESAI_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_ENET_TXD1__ENET_1588_EVENT0_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -2402,7 +2402,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_GPIO_16__ENET_1588_EVENT2_IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05E4, 0x0214, 1, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x05E4, 0x0214, 0x12, 0x080C, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x05E4, 0x0214, 0x12, 0x080C, 1, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_GPIO_16__USDHC1_LCTL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x05E4, 0x0214, 3, 0x0000, 0, MX6DL_USDHC_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_GPIO_16__SPDIF_IN1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;@@ -3206,7 +3206,7 @@&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_RGMII_TX_CTL__MIPI_CORE_DPHY_TEST_IN_7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x06BC, 0x02D4, 6, 0x0000, 0, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_RGMII_TX_CTL__ENET_ANATOP_ETHERNET_REF_OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;- IOMUX_PAD(0x06BC, 0x02D4, 7, 0x080C, 1, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;+ IOMUX_PAD(0x06BC, 0x02D4, 0x17, 0x080C, 1, NO_PAD_CTRL)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define MX6DL_PAD_RGMII_TXC__USBOH3_H2_DATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp; IOMUX_PAD(0x06C0, 0x02D8, 0 | IOMUX_CONFIG_SION, 0x0000, 0, MX6DL_USB_HSIC_PAD_CTRL)&lt;/P&gt;&lt;P&gt;diff --git a/drivers/misc/ds28e10.c b/drivers/misc/ds28e10.c&lt;/P&gt;&lt;P&gt;index 1df31ea..faef97e 100755&lt;/P&gt;&lt;P&gt;--- a/drivers/misc/ds28e10.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/misc/ds28e10.c&lt;/P&gt;&lt;P&gt;@@ -7,6 +7,8 @@&lt;/P&gt;&lt;P&gt; #include &amp;lt;linux/interrupt.h&amp;gt;&lt;/P&gt;&lt;P&gt; //#include &amp;lt;mach/gpio_sf02.h&amp;gt;&lt;/P&gt;&lt;P&gt; #include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;+#include &amp;lt;linux/socket.h&amp;gt;&lt;/P&gt;&lt;P&gt;+#include &amp;lt;linux/netdevice.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define DRIVER_NAME "ds28e10"&lt;/P&gt;&lt;P&gt; #define EdbgOutputDebugString printk&lt;/P&gt;&lt;P&gt;@@ -90,7 +92,7 @@ unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExtensionSecret[28] =&amp;nbsp;&amp;nbsp;&amp;nbsp; //OTP memory data 0x00~0x1B can be as&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; //define basic 64-bit secret for DS28E10&lt;/P&gt;&lt;P&gt; //unsigned char DeviceSecret[8] = {0x12,0x29,0xfd,0x23,0x43,0x22,0x44,0x52};&lt;/P&gt;&lt;P&gt;-#if 1&lt;/P&gt;&lt;P&gt;+#if 0&lt;/P&gt;&lt;P&gt; unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret1[8] = {0x20,0x12,0x41,0xd0,0x40,0x22,0x41,0x51};&lt;/P&gt;&lt;P&gt; unsigned char DeviceSecret3[8] = {0x12,0x29,0xfd,0x23,0x43,0x22,0x44,0x52};&lt;/P&gt;&lt;P&gt; unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret2[8] = {0x11,0x04,0x48,0x0a,0x1a,0x02,0x32,0x14};&lt;/P&gt;&lt;P&gt;@@ -98,6 +100,13 @@ unsigned char DeviceSecret4[8] = {0x12,0x29,0xfd,0x23,0x43,0x22,0x44,0x52};&lt;/P&gt;&lt;P&gt; unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret[8]; //&amp;nbsp; = {0x31,0x16,0x89,0xda,0x5a,0x24,0x73,0x65};&lt;/P&gt;&lt;P&gt; #endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret1[8] = {0x20,0x12,0x41,0xc9,0x40,0x22,0x41,0x51};&lt;/P&gt;&lt;P&gt;+unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret3[8] = {0x12,0x29,0xfd,0x23,0x43,0x22,0x44,0x52};&lt;/P&gt;&lt;P&gt;+unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret2[8] = {0x22,0x07,0x37,0x00,0x08,0x14,0x21,0x03};&lt;/P&gt;&lt;P&gt;+unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret4[8] = {0x12,0x29,0xfd,0x23,0x43,0x22,0x44,0x52};&lt;/P&gt;&lt;P&gt;+unsigned char&amp;nbsp;&amp;nbsp; DeviceSecret[8]; //&amp;nbsp; = {0x42,0x19,0x78,0xc9,0x48,0x36,0x62,0x54};&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt; //define for opening I/O&lt;/P&gt;&lt;P&gt; //int fd;&lt;/P&gt;&lt;P&gt; unsigned int get;&lt;/P&gt;&lt;P&gt;@@ -736,6 +745,30 @@ static int Authenticate_DS28E10_By_64bitSecret(unsigned char *Challenge, unsigne&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i==20 ){ return Match_MAC;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else return UnMatch_MAC;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+extern struct net_device *mxc_fec_ndev;&lt;/P&gt;&lt;P&gt;+extern void mxc_set_mac_address(void *p);&lt;/P&gt;&lt;P&gt;+static struct delayed_work dwork;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+static void set_mac_address_work(struct work_struct *work)&lt;/P&gt;&lt;P&gt;+{&lt;/P&gt;&lt;P&gt;+ struct sockaddr p;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ if( mxc_fec_ndev != NULL )&lt;/P&gt;&lt;P&gt;+ {&lt;/P&gt;&lt;P&gt;+ printk("set_mac_address_work: hahahaha.........................\n");&lt;/P&gt;&lt;P&gt;+ p.sa_data[5] = OW_RomID[7];&lt;/P&gt;&lt;P&gt;+ p.sa_data[4] = OW_RomID[3];&lt;/P&gt;&lt;P&gt;+ p.sa_data[3] = OW_RomID[2];&lt;/P&gt;&lt;P&gt;+ p.sa_data[2] = OW_RomID[1];&lt;/P&gt;&lt;P&gt;+ p.sa_data[1] = OW_RomID[0];&lt;/P&gt;&lt;P&gt;+ p.sa_data[0] = 0x1E;&lt;/P&gt;&lt;P&gt;+ mxc_set_mac_address(&amp;amp;p);&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;+ else&lt;/P&gt;&lt;P&gt;+ schedule_delayed_work(&amp;amp;dwork, msecs_to_jiffies(10));&lt;/P&gt;&lt;P&gt;+}&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt; static int ds28e10_probe(struct platform_device* device)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int i, ret;&lt;/P&gt;&lt;P&gt;@@ -780,6 +813,9 @@ static int ds28e10_probe(struct platform_device* device)&lt;/P&gt;&lt;P&gt;&amp;nbsp; panic("keyboard error");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+// INIT_DELAYED_WORK(&amp;amp;dwork, set_mac_address_work);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+// schedule_delayed_work(&amp;amp;dwork, msecs_to_jiffies(10));&lt;/P&gt;&lt;P&gt; // gpio_free(res-&amp;gt;start);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;diff --git a/drivers/net/fec.c b/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;index 009db54..acb4752 100755&lt;/P&gt;&lt;P&gt;--- a/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;@@ -145,6 +145,7 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");&lt;/P&gt;&lt;P&gt; #define FEC_ENET_TS_AVAIL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint)0x00010000)&lt;/P&gt;&lt;P&gt; #define FEC_ENET_TS_TIMER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint)0x00008000)&lt;/P&gt;&lt;P&gt; #define FEC_ENET_MII_CLK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint)2500000)&lt;/P&gt;&lt;P&gt;+//#define FEC_ENET_MII_CLK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint)5000000) /*WWJ add*/&lt;/P&gt;&lt;P&gt; #define FEC_ENET_HOLD_TIME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((uint)0x100)&amp;nbsp; /* 2 internal clock cycle*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; #define FEC_DEFAULT_IMASK (FEC_ENET_TXF | FEC_ENET_RXF | FEC_ENET_MII)&lt;/P&gt;&lt;P&gt;@@ -288,12 +289,15 @@ void *fec_enet_get_pre_txbd(struct net_device *ndev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct fec_enet_private *fep = netdev_priv(ndev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct bufdesc *bdp = fep-&amp;gt;cur_tx;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;- if (bdp == fep-&amp;gt;tx_bd_base)&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;+ if (bdp == fep-&amp;gt;tx_bd_base){&lt;/P&gt;&lt;P&gt;+ printk("bdp == fep-&amp;gt;tx_bd_base == %x\n", bdp);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return bdp + TX_RING_SIZE;&lt;/P&gt;&lt;P&gt;- else&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;+ else{&lt;/P&gt;&lt;P&gt;+ printk("bdp = %x fep-&amp;gt;tx_bd_base = %x\n", bdp, fep-&amp;gt;tx_bd_base);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return bdp - 1;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* MTIP enet IP have one IC issue recorded at PDM ticket:TKT168103&lt;/P&gt;&lt;P&gt;@@ -326,6 +330,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long&amp;nbsp;&amp;nbsp; estatus;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long flags;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; spin_lock_irqsave(&amp;amp;fep-&amp;gt;hw_lock, flags);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!fep-&amp;gt;link) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Link is down or autonegotiation is in progress. */&lt;/P&gt;&lt;P&gt;@@ -429,6 +434,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; spin_unlock_irqrestore(&amp;amp;fep-&amp;gt;hw_lock, flags);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return NETDEV_TX_OK;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -439,6 +445,7 @@ fec_timeout(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ndev-&amp;gt;stats.tx_errors++;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; netif_device_detach(ndev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec_stop(ndev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -447,6 +454,7 @@ fec_timeout(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; ndev-&amp;gt;trans_start = jiffies; /* prevent tx timeout */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;link &amp;amp;&amp;amp; !fep-&amp;gt;tx_full)&lt;/P&gt;&lt;P&gt;&amp;nbsp; netif_wake_queue(ndev);&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static void&lt;/P&gt;&lt;P&gt;@@ -466,9 +474,11 @@ fec_rx_int_is_enabled(struct net_device *ndev, bool enabled)&lt;/P&gt;&lt;P&gt; #ifdef CONFIG_NET_POLL_CONTROLLER&lt;/P&gt;&lt;P&gt; static void fec_enet_netpoll(struct net_device *ndev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; disable_irq(ndev-&amp;gt;irq);&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec_enet_interrupt(ndev-&amp;gt;irq, ndev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; enable_irq(ndev-&amp;gt;irq);&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; #endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -486,7 +496,10 @@ fec_enet_tx(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; spin_lock(&amp;amp;fep-&amp;gt;hw_lock);&lt;/P&gt;&lt;P&gt;&amp;nbsp; bdp = fep-&amp;gt;dirty_tx;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========%s start bdp-&amp;gt;cbd_sc = %x\n", __FUNCTION__, bdp-&amp;gt;cbd_sc);&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (((status = bdp-&amp;gt;cbd_sc) &amp;amp; BD_ENET_TX_READY) == 0) {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========== in the while fep-&amp;gt;cur_tx = %x, bdp = %x, fep-&amp;gt;tx_full = %x", &lt;/P&gt;&lt;P&gt;+ fep-&amp;gt;cur_tx, bdp, fep-&amp;gt;tx_full);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (bdp == fep-&amp;gt;cur_tx &amp;amp;&amp;amp; fep-&amp;gt;tx_full == 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -837,15 +850,20 @@ fec_enet_interrupt(int irq, void *dev_id)&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint int_events;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ulong flags;&lt;/P&gt;&lt;P&gt;&amp;nbsp; irqreturn_t ret = IRQ_NONE;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int_events = readl(fep-&amp;gt;hwp + FEC_IEVENT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(int_events, fep-&amp;gt;hwp + FEC_IEVENT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("int_events = %x\n", int_events);&lt;/P&gt;&lt;P&gt;+ printk(" RX FEC_ENET_RXF= %x\n", FEC_ENET_RXF);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_events &amp;amp; FEC_ENET_RXF) {&lt;/P&gt;&lt;P&gt;+ printk("enter RX FEC_ENET_RXF= %x\n", FEC_ENET_RXF);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = IRQ_HANDLED;&lt;/P&gt;&lt;P&gt;&amp;nbsp; spin_lock_irqsave(&amp;amp;fep-&amp;gt;hw_lock, flags);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("fep-&amp;gt;use_napi = %d\n", fep-&amp;gt;use_napi);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;use_napi) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Disable the RX interrupt */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (napi_schedule_prep(&amp;amp;fep-&amp;gt;napi)) {&lt;/P&gt;&lt;P&gt;@@ -862,18 +880,25 @@ fec_enet_interrupt(int irq, void *dev_id)&lt;/P&gt;&lt;P&gt;&amp;nbsp; * descriptors. FEC handles all errors, we just discover&lt;/P&gt;&lt;P&gt;&amp;nbsp; * them as part of the transmit process.&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;+ printk(" TX FEC_ENET_TXF = %x\n", FEC_ENET_TXF);//WWJ&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_events &amp;amp; FEC_ENET_TXF) {&lt;/P&gt;&lt;P&gt;+ printk("enter TX FEC_ENET_TXF = %x\n", FEC_ENET_TXF);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = IRQ_HANDLED;&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec_enet_tx(ndev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk(" FEC_ENET_TS_TIMER = %x\n", FEC_ENET_TS_TIMER);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_events &amp;amp; FEC_ENET_TS_TIMER) {&lt;/P&gt;&lt;P&gt;+ printk("enter FEC_ENET_TS_TIMER = %x\n", FEC_ENET_TS_TIMER);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = IRQ_HANDLED;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;ptimer_present &amp;amp;&amp;amp; fpp)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fpp-&amp;gt;prtc++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk(" FEC_ENET_MII = %x\n", FEC_ENET_MII);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_events &amp;amp; FEC_ENET_MII) {&lt;/P&gt;&lt;P&gt;+ printk("enter FEC_ENET_MII = %x\n", FEC_ENET_MII);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = IRQ_HANDLED;&lt;/P&gt;&lt;P&gt;&amp;nbsp; complete(&amp;amp;fep-&amp;gt;mdio_done);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;@@ -944,10 +969,13 @@ static void fec_enet_adjust_link(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int status_change = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; spin_lock_irqsave(&amp;amp;fep-&amp;gt;hw_lock, flags);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Prevent a state halted on mii error */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;mii_timeout &amp;amp;&amp;amp; phy_dev-&amp;gt;state == PHY_HALTED) {&lt;/P&gt;&lt;P&gt;+ printk("fep-&amp;gt;mii_timeout = %d, phy_dev-&amp;gt;state = %d, PHY_HALTED = %d\n",&lt;/P&gt;&lt;P&gt;+ fep-&amp;gt;mii_timeout, phy_dev-&amp;gt;state, PHY_HALTED);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_dev-&amp;gt;state = PHY_RESUMING;&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto spin_unlock;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;@@ -987,6 +1015,8 @@ static int fec_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum)&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct fec_enet_private *fep = bus-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long time_left;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;mii_timeout = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; init_completion(&amp;amp;fep-&amp;gt;mdio_done);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1004,6 +1034,8 @@ static int fec_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -ETIMEDOUT;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;+ printk("FEC_MII_DATA = %x\n", readl(fep-&amp;gt;hwp + FEC_MII_DATA));//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* return value */&lt;/P&gt;&lt;P&gt;&amp;nbsp; return FEC_MMFR_DATA(readl(fep-&amp;gt;hwp + FEC_MII_DATA));&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;@@ -1014,6 +1046,7 @@ static int fec_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum,&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct fec_enet_private *fep = bus-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long time_left;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==============%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;mii_timeout = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; init_completion(&amp;amp;fep-&amp;gt;mdio_done);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1051,6 +1084,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_dev = NULL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* check for attached phy */&lt;/P&gt;&lt;P&gt;&amp;nbsp; for (phy_id = 0; (phy_id &amp;lt; PHY_MAX_ADDR); phy_id++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((fep-&amp;gt;mii_bus-&amp;gt;phy_mask &amp;amp; (1 &amp;lt;&amp;lt; phy_id)))&lt;/P&gt;&lt;P&gt;@@ -1066,12 +1100,15 @@ static int fec_enet_mii_probe(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phy_id &amp;gt;= PHY_MAX_ADDR) {&lt;/P&gt;&lt;P&gt;+ printk("WWJ ==========phy_id = %x\n", phy_id); //WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO "%s: no PHY, assuming direct connection "&lt;/P&gt;&lt;P&gt;&amp;nbsp; "to switch\n", ndev-&amp;gt;name);&lt;/P&gt;&lt;P&gt;&amp;nbsp; strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_id = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("phy_id = %x\n", phy_id); //WWJ&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; snprintf(phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_dev = phy_connect(ndev, phy_name, &amp;amp;fec_enet_adjust_link, 0,&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_interface);&lt;/P&gt;&lt;P&gt;@@ -1083,7 +1120,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* mask with MAC supported features */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (cpu_is_mx6q() || cpu_is_mx6dl())&lt;/P&gt;&lt;P&gt;- phy_dev-&amp;gt;supported &amp;amp;= PHY_GBIT_FEATURES;&lt;/P&gt;&lt;P&gt;+ phy_dev-&amp;gt;supported &amp;amp;= PHY_BASIC_FEATURES;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_dev-&amp;gt;supported &amp;amp;= PHY_BASIC_FEATURES;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1101,6 +1138,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_dev-&amp;gt;drv-&amp;gt;name, dev_name(&amp;amp;fep-&amp;gt;phy_dev-&amp;gt;dev),&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_dev-&amp;gt;irq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s end ok\n", __FUNCTION__);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1113,6 +1151,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; platform_get_device_id(fep-&amp;gt;pdev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; int err = -ENXIO, i;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=============%s start\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp; * The dual fec interfaces are not equivalent with enet-mac.&lt;/P&gt;&lt;P&gt;&amp;nbsp; * Here are the differences:&lt;/P&gt;&lt;P&gt;@@ -1146,7 +1185,14 @@ static int fec_enet_mii_init(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (cpu_is_mx6q() || cpu_is_mx6dl())&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_speed |= FEC_ENET_HOLD_TIME;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ //WWJ add bein&lt;/P&gt;&lt;P&gt;+ fep-&amp;gt;phy_speed &amp;amp;= ~(0x3F &amp;lt;&amp;lt; 1);&lt;/P&gt;&lt;P&gt;+ fep-&amp;gt;phy_speed |= (0xC &amp;lt;&amp;lt; 1);&lt;/P&gt;&lt;P&gt;+ //WWJ add end&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(fep-&amp;gt;phy_speed, fep-&amp;gt;hwp + FEC_MII_SPEED);&lt;/P&gt;&lt;P&gt;+ printk("mdc_clk rate = %d\n", clk_get_rate(fep-&amp;gt;mdc_clk));//WWJ&lt;/P&gt;&lt;P&gt;+ printk("FEC_MII_SPEED = %x\n", readl(fep-&amp;gt;hwp + FEC_MII_SPEED)); //WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;mii_bus = mdiobus_alloc();&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;mii_bus == NULL) {&lt;/P&gt;&lt;P&gt;@@ -1178,6 +1224,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (id_entry-&amp;gt;driver_data &amp;amp; FEC_QUIRK_ENET_MAC)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec0_mii_bus = fep-&amp;gt;mii_bus;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=============%s end ok\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; err_out_free_mdio_irq:&lt;/P&gt;&lt;P&gt;@@ -1185,6 +1232,7 @@ err_out_free_mdio_irq:&lt;/P&gt;&lt;P&gt; err_out_free_mdiobus:&lt;/P&gt;&lt;P&gt;&amp;nbsp; mdiobus_free(fep-&amp;gt;mii_bus);&lt;/P&gt;&lt;P&gt; err_out:&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s failed err = %d\n", __FUNCTION__, err);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; return err;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1245,11 +1293,16 @@ static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct phy_device *phydev = fep-&amp;gt;phy_dev;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int retVal = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- if (!netif_running(ndev))&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;+ if (!netif_running(ndev)){&lt;/P&gt;&lt;P&gt;+ printk("WWJ============netif_running failed ndev-&amp;gt;state = %u\n", ndev-&amp;gt;state);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -EINVAL;&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- if (!phydev)&lt;/P&gt;&lt;P&gt;+ if (!phydev){&lt;/P&gt;&lt;P&gt;+ printk("WWJ============phydev is null\n");//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -ENODEV;&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((cmd &amp;gt;= PTP_ENBL_TXTS_IOCTL) &amp;amp;&amp;amp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; (cmd &amp;lt;= PTP_FLUSH_TIMESTAMP)) {&lt;/P&gt;&lt;P&gt;@@ -1260,6 +1313,8 @@ static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else&lt;/P&gt;&lt;P&gt;&amp;nbsp; retVal = phy_mii_ioctl(phydev, rq, cmd);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end retVal= %d\n", __FUNCTION__, retVal);//WWJ add&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; return retVal;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1346,6 +1401,7 @@ fec_enet_open(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct fec_platform_data *pdata = fep-&amp;gt;pdev-&amp;gt;dev.platform_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;use_napi)&lt;/P&gt;&lt;P&gt;&amp;nbsp; napi_enable(&amp;amp;fep-&amp;gt;napi);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1369,9 +1425,12 @@ fec_enet_open(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;opened = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = -EINVAL;&lt;/P&gt;&lt;P&gt;- if (pdata-&amp;gt;init &amp;amp;&amp;amp; pdata-&amp;gt;init(fep-&amp;gt;phy_dev))&lt;/P&gt;&lt;P&gt;+ if (pdata-&amp;gt;init &amp;amp;&amp;amp; pdata-&amp;gt;init(fep-&amp;gt;phy_dev)){&lt;/P&gt;&lt;P&gt;+ printk("pdata-&amp;gt;init = %x, pdata-&amp;gt;init(fep-&amp;gt;phy_dev) = %d\n", pdata-&amp;gt;init);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1419,6 +1478,7 @@ static void set_multicast_list(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int i, bit, data, crc, tmp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned char hash;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ndev-&amp;gt;flags &amp;amp; IFF_PROMISC) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmp = readl(fep-&amp;gt;hwp + FEC_R_CNTRL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmp |= 0x8;&lt;/P&gt;&lt;P&gt;@@ -1476,6 +1536,8 @@ static void set_multicast_list(struct net_device *ndev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(tmp, fep-&amp;gt;hwp + FEC_GRP_HASH_TABLE_LOW);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Set a MAC change in hardware. */&lt;/P&gt;&lt;P&gt;@@ -1486,7 +1548,7 @@ fec_set_mac_address(struct net_device *ndev, void *p)&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct sockaddr *addr = p;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int i=0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- printk("fec_set_mac_address: ============== \n");&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; for( i=0; i&amp;lt;6; i++ )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("%d=0x%02x\n", i, addr-&amp;gt;sa_data[i]);&lt;/P&gt;&lt;P&gt;@@ -1505,6 +1567,8 @@ fec_set_mac_address(struct net_device *ndev, void *p)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;hwp + FEC_ADDR_LOW);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel((ndev-&amp;gt;dev_addr[5] &amp;lt;&amp;lt; 16) | (ndev-&amp;gt;dev_addr[4] &amp;lt;&amp;lt; 24),&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;hwp + FEC_ADDR_HIGH);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1512,7 +1576,10 @@ struct net_device *mxc_fec_ndev=0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; void mxc_set_mac_address(struct sockaddr *p)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec_set_mac_address(mxc_fec_ndev, (void*)p);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static const struct net_device_ops fec_netdev_ops = {&lt;/P&gt;&lt;P&gt;@@ -1629,6 +1696,7 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; int i, ret;&lt;/P&gt;&lt;P&gt;&amp;nbsp; u32 val, temp_mac[2], reg = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Whack a reset.&amp;nbsp; We should wait for this. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(1, fep-&amp;gt;hwp + FEC_ECNTRL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; udelay(10);&lt;/P&gt;&lt;P&gt;@@ -1697,6 +1765,8 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (id_entry-&amp;gt;driver_data &amp;amp; FEC_QUIRK_ENET_MAC) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = readl(fep-&amp;gt;hwp + FEC_R_CNTRL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("fep-&amp;gt;phy_interface = %d, PHY_INTERFACE_MODE_RMII = %d, PHY_INTERFACE_MODE_RGMII = %d\n",&lt;/P&gt;&lt;P&gt;+ fep-&amp;gt;phy_interface, PHY_INTERFACE_MODE_RMII, PHY_INTERFACE_MODE_RGMII);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MII or RMII */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;phy_interface == PHY_INTERFACE_MODE_RGMII)&lt;/P&gt;&lt;P&gt;&amp;nbsp; val |= (1 &amp;lt;&amp;lt; 6);&lt;/P&gt;&lt;P&gt;@@ -1711,6 +1781,13 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; val |= (1 &amp;lt;&amp;lt; 9);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ //WWJ add begin&lt;/P&gt;&lt;P&gt;+ if(fep-&amp;gt;phy_dev)&lt;/P&gt;&lt;P&gt;+ printk("fep-&amp;gt;phy_dev-&amp;gt;speed = %d\n", fep-&amp;gt;phy_dev-&amp;gt;speed);&lt;/P&gt;&lt;P&gt;+ else&lt;/P&gt;&lt;P&gt;+ printk("fep-&amp;gt;phy_dev is null\n");&lt;/P&gt;&lt;P&gt;+ //WWJ add end&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable pause frame&lt;/P&gt;&lt;P&gt;&amp;nbsp; * ENET pause frame has two issues as ticket TKT116501&lt;/P&gt;&lt;P&gt;&amp;nbsp; * The issues have been fixed on Rigel TO1.1 and Arik TO1.2&lt;/P&gt;&lt;P&gt;@@ -1720,8 +1797,10 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; (cpu_is_mx6dl() &amp;amp;&amp;amp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; (mx6dl_revision() &amp;gt;= IMX_CHIP_REVISION_1_1)))&lt;/P&gt;&lt;P&gt;&amp;nbsp; val |= FEC_ENET_FCE;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;+ printk("val = %x, reg = %x\n", val, FEC_R_CNTRL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(val, fep-&amp;gt;hwp + FEC_R_CNTRL);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("FEC_R_CNTRL = %x\n", readl(fep-&amp;gt;hwp + FEC_R_CNTRL));//WWJ &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;ptimer_present) {&lt;/P&gt;&lt;P&gt;@@ -1797,7 +1876,11 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* enable ENET store and forward mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(0x1 &amp;lt;&amp;lt; 8, fep-&amp;gt;hwp + FEC_X_WMRK);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(val, fep-&amp;gt;hwp + FEC_ECNTRL);&lt;/P&gt;&lt;P&gt;+ printk("val = %x\n", val);&lt;/P&gt;&lt;P&gt;+ printk("FEC_ECNTRL = %x\n", readl(fep-&amp;gt;hwp + FEC_ECNTRL)); //WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(0, fep-&amp;gt;hwp + FEC_R_DES_ACTIVE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1807,6 +1890,8 @@ fec_restart(struct net_device *dev, int duplex)&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = FEC_DEFAULT_IMASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(val, fep-&amp;gt;hwp + FEC_IMASK);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static void&lt;/P&gt;&lt;P&gt;@@ -1814,6 +1899,7 @@ fec_stop(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct fec_enet_private *fep = netdev_priv(dev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* We cannot expect a graceful transmit stop without link !!! */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;link) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; writel(1, fep-&amp;gt;hwp + FEC_X_CNTRL); /* Graceful transmit stop */&lt;/P&gt;&lt;P&gt;@@ -1850,6 +1936,7 @@ fec_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; int i, irq, ret = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct resource *r;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; r = platform_get_resource(pdev, IORESOURCE_MEM, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!r)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -ENXIO;&lt;/P&gt;&lt;P&gt;@@ -1884,7 +1971,9 @@ fec_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (pdata)&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;phy_interface = pdata-&amp;gt;phy;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("pdata-&amp;gt;gpio_irq = %d\n", pdata-&amp;gt;gpio_irq);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (pdata-&amp;gt;gpio_irq &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;+ printk("pdata-&amp;gt;gpio_irq &amp;gt; 0\n");//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_request(pdata-&amp;gt;gpio_irq, "gpio_enet_irq");&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_direction_input(pdata-&amp;gt;gpio_irq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1932,6 +2021,8 @@ fec_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto failed_mii_init;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("FEC_MII_SPEED = %x\n", readl(fep-&amp;gt;hwp + FEC_MII_SPEED)); //WWJ&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fec_ptp_malloc_priv(&amp;amp;(fep-&amp;gt;ptp_priv))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fep-&amp;gt;ptp_priv) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; fep-&amp;gt;ptp_priv-&amp;gt;hwp = fep-&amp;gt;hwp;&lt;/P&gt;&lt;P&gt;@@ -1955,6 +2046,7 @@ fec_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto failed_register;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mxc_fec_ndev = ndev;&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========fec_probe ok\n");//WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1964,6 +2056,7 @@ failed_register:&lt;/P&gt;&lt;P&gt;&amp;nbsp; fec_ptp_cleanup(fep-&amp;gt;ptp_priv);&lt;/P&gt;&lt;P&gt;&amp;nbsp; kfree(fep-&amp;gt;ptp_priv);&lt;/P&gt;&lt;P&gt; failed_mii_init:&lt;/P&gt;&lt;P&gt;+ printk("failed_mii_init failed\n"); //WWJ&lt;/P&gt;&lt;P&gt; failed_init:&lt;/P&gt;&lt;P&gt;&amp;nbsp; clk_disable(fep-&amp;gt;clk);&lt;/P&gt;&lt;P&gt;&amp;nbsp; clk_put(fep-&amp;gt;clk);&lt;/P&gt;&lt;P&gt;@@ -1985,6 +2078,8 @@ failed_ioremap:&lt;/P&gt;&lt;P&gt; failed_alloc_etherdev:&lt;/P&gt;&lt;P&gt;&amp;nbsp; release_mem_region(r-&amp;gt;start, resource_size(r));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s failed ret = %d\n", __FUNCTION__ ,ret);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c&lt;/P&gt;&lt;P&gt;index 6c58da2..1136d2f 100644&lt;/P&gt;&lt;P&gt;--- a/drivers/net/phy/mdio_bus.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/phy/mdio_bus.c&lt;/P&gt;&lt;P&gt;@@ -88,6 +88,7 @@ int mdiobus_register(struct mii_bus *bus)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int i, err;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========%s start bus = %x, bus-&amp;gt;name = %s, bus-&amp;gt;read = %x, bus-&amp;gt;write = %x\n", __FUNCTION__, bus, bus-&amp;gt;name, bus-&amp;gt;read, bus-&amp;gt;write);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (NULL == bus || NULL == bus-&amp;gt;name ||&lt;/P&gt;&lt;P&gt;&amp;nbsp; NULL == bus-&amp;gt;read ||&lt;/P&gt;&lt;P&gt;&amp;nbsp; NULL == bus-&amp;gt;write)&lt;/P&gt;&lt;P&gt;@@ -187,7 +188,7 @@ struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev = get_phy_device(bus, addr);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (IS_ERR(phydev) || phydev == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return phydev;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;+ printk("phy_device_register phy_id = %d, speed = %d, addr = %d\n", phydev-&amp;gt;phy_id, phydev-&amp;gt;speed, phydev-&amp;gt;addr);//WJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; err = phy_device_register(phydev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (err) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_device_free(phydev);&lt;/P&gt;&lt;P&gt;diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c&lt;/P&gt;&lt;P&gt;index a475957..1d0c96b 100644&lt;/P&gt;&lt;P&gt;--- a/drivers/net/phy/phy.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/phy/phy.c&lt;/P&gt;&lt;P&gt;@@ -317,15 +317,18 @@ int phy_mii_ioctl(struct phy_device *phydev,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch (cmd) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SIOCGMIIPHY:&lt;/P&gt;&lt;P&gt;+ printk("WWJ============SIOCGMIIPHY cmd\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; mii_data-&amp;gt;phy_id = phydev-&amp;gt;addr;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* fall through */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SIOCGMIIREG:&lt;/P&gt;&lt;P&gt;+ printk("WWJ============SIOCGMIIREG cmd\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; mii_data-&amp;gt;val_out = mdiobus_read(phydev-&amp;gt;bus, mii_data-&amp;gt;phy_id,&lt;/P&gt;&lt;P&gt;&amp;nbsp; mii_data-&amp;gt;reg_num);&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SIOCSMIIREG:&lt;/P&gt;&lt;P&gt;+ printk("WWJ============SIOCSMIIREG cmd\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (mii_data-&amp;gt;phy_id == phydev-&amp;gt;addr) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch(mii_data-&amp;gt;reg_num) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; case MII_BMCR:&lt;/P&gt;&lt;P&gt;@@ -365,6 +368,7 @@ int phy_mii_ioctl(struct phy_device *phydev,&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SIOCSHWTSTAMP:&lt;/P&gt;&lt;P&gt;+ printk("WWJ============SIOCSHWTSTAMP cmd\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;drv-&amp;gt;hwtstamp)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return phydev-&amp;gt;drv-&amp;gt;hwtstamp(phydev, ifr);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* fall through */&lt;/P&gt;&lt;P&gt;@@ -390,6 +394,7 @@ int phy_start_aneg(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int err;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; mutex_lock(&amp;amp;phydev-&amp;gt;lock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (AUTONEG_DISABLE == phydev-&amp;gt;autoneg)&lt;/P&gt;&lt;P&gt;@@ -400,6 +405,7 @@ int phy_start_aneg(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (err &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto out_unlock;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========phydev-&amp;gt;state = %d, PHY_HALTED = %d\n", phydev-&amp;gt;state, PHY_HALTED);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;state != PHY_HALTED) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (AUTONEG_ENABLE == phydev-&amp;gt;autoneg) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;state = PHY_AN;&lt;/P&gt;&lt;P&gt;@@ -410,9 +416,12 @@ int phy_start_aneg(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; out_unlock:&lt;/P&gt;&lt;P&gt;&amp;nbsp; mutex_unlock(&amp;amp;phydev-&amp;gt;lock);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return err;&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end wront err = %d\n", __FUNCTION__, err);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(phy_start_aneg);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -435,6 +444,7 @@ static void phy_change(struct work_struct *work);&lt;/P&gt;&lt;P&gt; void phy_start_machine(struct phy_device *phydev,&lt;/P&gt;&lt;P&gt;&amp;nbsp; void (*handler)(struct net_device *))&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;adjust_state = handler;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; schedule_delayed_work(&amp;amp;phydev-&amp;gt;state_queue, HZ);&lt;/P&gt;&lt;P&gt;@@ -593,6 +603,7 @@ int phy_start_interrupts(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; INIT_WORK(&amp;amp;phydev-&amp;gt;phy_queue, phy_change);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; atomic_set(&amp;amp;phydev-&amp;gt;irq_disable, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (request_irq(phydev-&amp;gt;irq, phy_interrupt,&lt;/P&gt;&lt;P&gt;&amp;nbsp; IRQF_SHARED,&lt;/P&gt;&lt;P&gt;@@ -601,6 +612,7 @@ int phy_start_interrupts(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING "%s: Can't get IRQ %d (PHY)\n",&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;bus-&amp;gt;name,&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;irq);&lt;/P&gt;&lt;P&gt;+ printk("WWJ========set phydev-&amp;gt;irq to PHY_POLL in %d\n", __LINE__); //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;irq = PHY_POLL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;@@ -744,6 +756,7 @@ void phy_start(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; mutex_lock(&amp;amp;phydev-&amp;gt;lock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start phydev-&amp;gt;state = %d\n", __FUNCTION__, phydev-&amp;gt;state);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch (phydev-&amp;gt;state) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; case PHY_STARTING:&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;state = PHY_PENDING;&lt;/P&gt;&lt;P&gt;@@ -757,6 +770,8 @@ void phy_start(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; mutex_unlock(&amp;amp;phydev-&amp;gt;lock);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(phy_stop);&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(phy_start);&lt;/P&gt;&lt;P&gt;@@ -778,6 +793,7 @@ void phy_state_machine(struct work_struct *work)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;adjust_state)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;adjust_state(phydev-&amp;gt;attached_dev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("phydev-&amp;gt;state = %d\n", phydev-&amp;gt;state); //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch(phydev-&amp;gt;state) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; case PHY_DOWN:&lt;/P&gt;&lt;P&gt;&amp;nbsp; case PHY_STARTING:&lt;/P&gt;&lt;P&gt;@@ -791,11 +807,13 @@ void phy_state_machine(struct work_struct *work)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case PHY_AN:&lt;/P&gt;&lt;P&gt;+ printk("PHY_AN(%d) state start\n", PHY_AN);&lt;/P&gt;&lt;P&gt;&amp;nbsp; err = phy_read_status(phydev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (err &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("phydev-&amp;gt;link = %d\n", phydev-&amp;gt;link);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* If the link is down, give up on&lt;/P&gt;&lt;P&gt;&amp;nbsp; * negotiation for now */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!phydev-&amp;gt;link) {&lt;/P&gt;&lt;P&gt;@@ -843,6 +861,7 @@ void phy_state_machine(struct work_struct *work)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;duplex ?&lt;/P&gt;&lt;P&gt;&amp;nbsp; "FULL" : "HALF");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;+ printk("PHY_AN(%d) state end\n", PHY_AN);&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case PHY_NOLINK:&lt;/P&gt;&lt;P&gt;&amp;nbsp; err = phy_read_status(phydev);&lt;/P&gt;&lt;P&gt;diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c&lt;/P&gt;&lt;P&gt;index ff109fe..98a1165 100644&lt;/P&gt;&lt;P&gt;--- a/drivers/net/phy/phy_device.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/phy/phy_device.c&lt;/P&gt;&lt;P&gt;@@ -247,6 +247,7 @@ struct phy_device * get_phy_device(struct mii_bus *bus, int addr)&lt;/P&gt;&lt;P&gt;&amp;nbsp; int r;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; r = get_phy_id(bus, addr, &amp;amp;phy_id);&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======%s, phy_id = %x, r = %d\n", __FUNCTION__, phy_id, r);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (r)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_PTR(r);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -274,6 +275,9 @@ int phy_device_register(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -EINVAL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;bus-&amp;gt;phy_map[phydev-&amp;gt;addr] = phydev;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("phy_device_register phy_id = %x, speed = %d, addr = %x\n", &lt;/P&gt;&lt;P&gt;+ phydev-&amp;gt;phy_id, phydev-&amp;gt;speed, phydev-&amp;gt;addr);//WJ add&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Run all of the fixups for this PHY */&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_scan_fixups(phydev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -322,6 +326,7 @@ EXPORT_SYMBOL(phy_find_first);&lt;/P&gt;&lt;P&gt; static void phy_prepare_link(struct phy_device *phydev,&lt;/P&gt;&lt;P&gt;&amp;nbsp; void (*handler)(struct net_device *))&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======%s start handler = %x\n", __FUNCTION__, handler); //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;adjust_link = handler;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -339,6 +344,7 @@ int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int rc;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc = phy_attach_direct(dev, phydev, flags, interface);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (rc)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rc;&lt;/P&gt;&lt;P&gt;@@ -348,6 +354,7 @@ int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;irq &amp;gt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_start_interrupts(phydev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(phy_connect_direct);&lt;/P&gt;&lt;P&gt;@@ -376,6 +383,7 @@ struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct device *d;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int rc;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start \n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Search the list of PHY devices on the mdio bus for the&lt;/P&gt;&lt;P&gt;&amp;nbsp; * PHY with the requested name */&lt;/P&gt;&lt;P&gt;&amp;nbsp; d = bus_find_device_by_name(&amp;amp;mdio_bus_type, NULL, bus_id);&lt;/P&gt;&lt;P&gt;@@ -389,6 +397,7 @@ struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (rc)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ERR_PTR(rc);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s end ok \n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return phydev;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(phy_connect);&lt;/P&gt;&lt;P&gt;@@ -677,7 +686,10 @@ EXPORT_SYMBOL(genphy_restart_aneg);&lt;/P&gt;&lt;P&gt; int genphy_config_aneg(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int result;&lt;/P&gt;&lt;P&gt;+ int i; //WWJ add&lt;/P&gt;&lt;P&gt;+ u32 val; //WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (AUTONEG_ENABLE != phydev-&amp;gt;autoneg)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return genphy_setup_forced(phydev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -703,6 +715,14 @@ int genphy_config_aneg(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (result &amp;gt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; result = genphy_restart_aneg(phydev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ //WWJ begin&lt;/P&gt;&lt;P&gt;+ for(i = 0; i &amp;lt; 32; i++){&lt;/P&gt;&lt;P&gt;+ val = phy_read(phydev, i);&lt;/P&gt;&lt;P&gt;+ printk("reg[%d] = %x\n", i, val);&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;+ //WWJ end &lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ===========%s end result=%d \n", __FUNCTION__, result);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return result;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(genphy_config_aneg);&lt;/P&gt;&lt;P&gt;@@ -758,11 +778,16 @@ int genphy_read_status(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Update the link, but return if there&lt;/P&gt;&lt;P&gt;&amp;nbsp; * was an error */&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s line %d start\n", __FUNCTION__, __LINE__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; err = genphy_update_link(phydev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (err)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return err;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ======phydev-&amp;gt;phy_id = %x\n", phydev-&amp;gt;phy_id);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (AUTONEG_ENABLE == phydev-&amp;gt;autoneg) {&lt;/P&gt;&lt;P&gt;+ printk("phydev-&amp;gt;supported = %x, SUPPORTED_1000baseT_Half = %x, SUPPORTED_1000baseT_Full= %x\n", &lt;/P&gt;&lt;P&gt;+ phydev-&amp;gt;supported, SUPPORTED_1000baseT_Half, SUPPORTED_1000baseT_Full);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;supported &amp;amp; (SUPPORTED_1000baseT_Half&lt;/P&gt;&lt;P&gt;&amp;nbsp; | SUPPORTED_1000baseT_Full)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; lpagb = phy_read(phydev, MII_STAT1000);&lt;/P&gt;&lt;P&gt;@@ -794,6 +819,10 @@ int genphy_read_status(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;duplex = DUPLEX_HALF;&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;pause = phydev-&amp;gt;asym_pause = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("lpagb = %x, LPA_1000FULL = %x, LPA_1000HALF = %x\n", lpagb, LPA_1000FULL,&lt;/P&gt;&lt;P&gt;+ LPA_1000HALF);&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;+ printk("lpa = %x, LPA_1000FULL = %x, LPA_1000HALF = %x\n", lpa, LPA_1000FULL, LPA_1000HALF);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (lpagb &amp;amp; (LPA_1000FULL | LPA_1000HALF)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;speed = SPEED_1000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -808,6 +837,7 @@ int genphy_read_status(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (lpa &amp;amp; LPA_10FULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;duplex = DUPLEX_FULL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("phydev-&amp;gt;duplex = %x\n", phydev-&amp;gt;duplex);//WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (phydev-&amp;gt;duplex == DUPLEX_FULL){&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;pause = lpa &amp;amp; LPA_PAUSE_CAP ? 1 : 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;asym_pause = lpa &amp;amp; LPA_PAUSE_ASYM ? 1 : 0;&lt;/P&gt;&lt;P&gt;@@ -832,6 +862,7 @@ int genphy_read_status(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;pause = phydev-&amp;gt;asym_pause = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(genphy_read_status);&lt;/P&gt;&lt;P&gt;@@ -841,6 +872,7 @@ static int genphy_config_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; int val;&lt;/P&gt;&lt;P&gt;&amp;nbsp; u32 features;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start\n", __FUNCTION__); //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* For now, I'll claim that the generic driver supports&lt;/P&gt;&lt;P&gt;&amp;nbsp; * all possible port types */&lt;/P&gt;&lt;P&gt;&amp;nbsp; features = (SUPPORTED_TP | SUPPORTED_MII&lt;/P&gt;&lt;P&gt;@@ -849,6 +881,7 @@ static int genphy_config_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Do we support autonegotiation? */&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = phy_read(phydev, MII_BMSR);&lt;/P&gt;&lt;P&gt;+ printk("phydev-&amp;gt;phy_id = %x\n", phydev-&amp;gt;phy_id);//WWJ add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (val &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return val;&lt;/P&gt;&lt;P&gt;@@ -880,6 +913,7 @@ static int genphy_config_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;supported = features;&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;advertising = features;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s end\n", __FUNCTION__); //WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; int genphy_suspend(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;@@ -927,6 +961,7 @@ static int phy_probe(struct device *dev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct device_driver *drv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int err = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ========%s start\n", __FUNCTION__ );//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev = to_phy_device(dev);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Make sure the driver is held.&lt;/P&gt;&lt;P&gt;@@ -934,10 +969,13 @@ static int phy_probe(struct device *dev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; drv = get_driver(phydev-&amp;gt;dev.driver);&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydrv = to_phy_driver(drv);&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;drv = phydrv;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========driver name = %s\n", phydrv-&amp;gt;name);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Disable the interrupt if the PHY doesn't support it */&lt;/P&gt;&lt;P&gt;- if (!(phydrv-&amp;gt;flags &amp;amp; PHY_HAS_INTERRUPT))&lt;/P&gt;&lt;P&gt;+ if (!(phydrv-&amp;gt;flags &amp;amp; PHY_HAS_INTERRUPT)){&lt;/P&gt;&lt;P&gt;+ printk("WWJ========set phydev-&amp;gt;irq to PHY_POLL in %d\n", __LINE__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; phydev-&amp;gt;irq = PHY_POLL;&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mutex_lock(&amp;amp;phydev-&amp;gt;lock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c&lt;/P&gt;&lt;P&gt;index 342505c..02d4a3b 100644&lt;/P&gt;&lt;P&gt;--- a/drivers/net/phy/smsc.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/phy/smsc.c&lt;/P&gt;&lt;P&gt;@@ -45,23 +45,28 @@&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static int smsc_phy_config_intr(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; int rc = phy_write (phydev, MII_LAN83C185_IM,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ((PHY_INTERRUPT_ENABLED == phydev-&amp;gt;interrupts)&lt;/P&gt;&lt;P&gt;&amp;nbsp; ? MII_LAN83C185_ISF_INT_PHYLIB_EVENTS&lt;/P&gt;&lt;P&gt;&amp;nbsp; : 0));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start rc = %d\n", __FUNCTION__, rc);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rc &amp;lt; 0 ? rc : 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static int smsc_phy_ack_interrupt(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; int rc = phy_read (phydev, MII_LAN83C185_ISF);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s end rc = %x\n", __FUNCTION__, rc);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rc &amp;lt; 0 ? rc : 0;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; static int smsc_phy_config_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (rc &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rc;&lt;/P&gt;&lt;P&gt;@@ -69,9 +74,11 @@ static int smsc_phy_config_init(struct phy_device *phydev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable energy detect mode for this SMSC Transceivers */&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc = phy_write(phydev, MII_LAN83C185_CTRL_STATUS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc | MII_LAN83C185_EDPWRDOWN);&lt;/P&gt;&lt;P&gt;+ printk("%s phydev-&amp;gt;phy_id = %x rc = %d", __FUNCTION__, phydev-&amp;gt;phy_id, rc);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (rc &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rc;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s end\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return smsc_phy_ack_interrupt (phydev);&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -204,6 +211,7 @@ static int __init smsc_init(void)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = phy_driver_register (&amp;amp;lan83c185_driver);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto err1;&lt;/P&gt;&lt;P&gt;@@ -221,9 +229,10 @@ static int __init smsc_init(void)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto err4;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = phy_driver_register (&amp;amp;lan8710_driver);&lt;/P&gt;&lt;P&gt;+ printk("&amp;amp;lan8710_driver register ret = %d\n", ret);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret)&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto err5;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;+ printk("WWJ=========%s end ok\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; err5:&lt;/P&gt;&lt;P&gt;@@ -235,6 +244,7 @@ err3:&lt;/P&gt;&lt;P&gt; err2:&lt;/P&gt;&lt;P&gt;&amp;nbsp; phy_driver_unregister (&amp;amp;lan83c185_driver);&lt;/P&gt;&lt;P&gt; err1:&lt;/P&gt;&lt;P&gt;+ printk("failed phy_driver_register ret = %d\n", ret);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h&lt;/P&gt;&lt;P&gt;index 056c45b..c8b511e 100644&lt;/P&gt;&lt;P&gt;--- a/include/linux/netdevice.h&lt;/P&gt;&lt;P&gt;+++ b/include/linux/netdevice.h&lt;/P&gt;&lt;P&gt;@@ -1804,6 +1804,7 @@ static inline void netif_tx_start_queue(struct netdev_queue *dev_queue)&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt; static inline void netif_start_queue(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; netif_tx_start_queue(netdev_get_tx_queue(dev, 0));&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -1911,6 +1912,7 @@ static inline int netif_tx_queue_frozen_or_stopped(const struct netdev_queue *de&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt; static inline int netif_running(const struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ==========%s start dev-&amp;gt;state = %lu\n", __FUNCTION__, dev-&amp;gt;state); //WWJ&lt;/P&gt;&lt;P&gt;&amp;nbsp; return test_bit(__LINK_STATE_START, &amp;amp;dev-&amp;gt;state);&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/net/core/dev.c b/net/core/dev.c&lt;/P&gt;&lt;P&gt;index a71eafc..e0be16b 100644&lt;/P&gt;&lt;P&gt;--- a/net/core/dev.c&lt;/P&gt;&lt;P&gt;+++ b/net/core/dev.c&lt;/P&gt;&lt;P&gt;@@ -1184,6 +1184,7 @@ int dev_open(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+ printk("WWJ================%s start, dev-&amp;gt;flags = %x\n", __FUNCTION__, dev-&amp;gt;flags);//WWJ add&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (dev-&amp;gt;flags &amp;amp; IFF_UP)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;diff --git a/net/core/link_watch.c b/net/core/link_watch.c&lt;/P&gt;&lt;P&gt;index 357bd4e..eea05b9 100644&lt;/P&gt;&lt;P&gt;--- a/net/core/link_watch.c&lt;/P&gt;&lt;P&gt;+++ b/net/core/link_watch.c&lt;/P&gt;&lt;P&gt;@@ -234,13 +234,18 @@ static void linkwatch_event(struct work_struct *dummy)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; void linkwatch_fire_event(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ=============%s start\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;&amp;nbsp; bool urgent = linkwatch_urgent_event(dev);&lt;/P&gt;&lt;P&gt;+ printk("urgent = %d\n", urgent);&lt;/P&gt;&lt;P&gt;+ printk("WWJ=======dev-&amp;gt;state = %x, __LINK_STATE_LINKWATCH_PENDING = %x\n", dev-&amp;gt;state,&amp;nbsp; __LINK_STATE_LINKWATCH_PENDING);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!test_and_set_bit(__LINK_STATE_LINKWATCH_PENDING, &amp;amp;dev-&amp;gt;state)) {&lt;/P&gt;&lt;P&gt;+ printk("test_and_set_bit ok\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;&amp;nbsp; linkwatch_add_event(dev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else if (!urgent)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; linkwatch_schedule_work(urgent);&lt;/P&gt;&lt;P&gt;+ printk("WWJ=============%s end\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(linkwatch_fire_event);&lt;/P&gt;&lt;P&gt;diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c&lt;/P&gt;&lt;P&gt;index b4c6809..abc5d37 100644&lt;/P&gt;&lt;P&gt;--- a/net/sched/sch_generic.c&lt;/P&gt;&lt;P&gt;+++ b/net/sched/sch_generic.c&lt;/P&gt;&lt;P&gt;@@ -298,12 +298,17 @@ static void dev_watchdog_down(struct net_device *dev)&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt; void netif_carrier_on(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ========%s start, __LINK_STATE_NOCARRIER = %x, dev-&amp;gt;state = %x\n", __FUNCTION__, __LINK_STATE_NOCARRIER, dev-&amp;gt;state);//WWJ&lt;/P&gt;&lt;P&gt;+ printk("dev-&amp;gt;reg_state = %x\n", dev-&amp;gt;reg_state);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &amp;amp;dev-&amp;gt;state)) {&lt;/P&gt;&lt;P&gt;+ printk("NETREG_UNINITIALIZED = %x\n", NETREG_UNINITIALIZED);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (dev-&amp;gt;reg_state == NETREG_UNINITIALIZED)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp; linkwatch_fire_event(dev);&lt;/P&gt;&lt;P&gt;- if (netif_running(dev))&lt;/P&gt;&lt;P&gt;+ if (netif_running(dev)){&lt;/P&gt;&lt;P&gt;+ printk("netif_running ok\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; __netdev_watchdog_up(dev);&lt;/P&gt;&lt;P&gt;+ }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; EXPORT_SYMBOL(netif_carrier_on);&lt;/P&gt;&lt;P&gt;@@ -316,6 +321,7 @@ EXPORT_SYMBOL(netif_carrier_on);&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt; void netif_carrier_off(struct net_device *dev)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;+ printk("WWJ============%s start\n", __FUNCTION__);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &amp;amp;dev-&amp;gt;state)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (dev-&amp;gt;reg_state == NETREG_UNINITIALIZED)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Oct 2014 06:46:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351086#M48831</guid>
      <dc:creator>wenjingwang</dc:creator>
      <dc:date>2014-10-10T06:46:26Z</dc:date>
    </item>
    <item>
      <title>Re: I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351087#M48832</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Our issue is fixed. It seemed to be due to the 50MHz ref clock not being looped to MAC. It required change in device tree.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Deepa&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Oct 2014 08:59:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351087#M48832</guid>
      <dc:creator>deepajosephine</dc:creator>
      <dc:date>2014-10-13T08:59:11Z</dc:date>
    </item>
    <item>
      <title>Re: I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351088#M48833</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;my issue is the MDC clock too hight and the pin_iomux was configued wrong by me, so the issue is fixed. Thank you!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Oct 2014 00:57:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351088#M48833</guid>
      <dc:creator>wenjingwang</dc:creator>
      <dc:date>2014-10-17T00:57:29Z</dc:date>
    </item>
    <item>
      <title>Re: I'm debugging eht phy LAN8720 driver, and i met the problem the eth0 can not get ip address, and can not ping ip after  i set the ip address manually.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351089#M48834</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello,can you describle the solution detailly?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jul 2016 16:05:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-m-debugging-eht-phy-LAN8720-driver-and-i-met-the-problem-the/m-p/351089#M48834</guid>
      <dc:creator>承王</dc:creator>
      <dc:date>2016-07-19T16:05:13Z</dc:date>
    </item>
  </channel>
</rss>

