From: Fugang Duan Date: Fri, 25 Nov 2011 10:27:29 +0000 (+0800) Subject: ENGR00163040 - FEC : Fix ethernet cannot work after system sleep. X-Git-Tag: v3.0.35-fsl_4.1.0~2002 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=593e3dd54f53418ccab59cbb0c9e5eda2e455dc1;p=karo-tx-linux.git ENGR00163040 - FEC : Fix ethernet cannot work after system sleep. - Descript: Ethernet can't work in uboot and kernel DHCP throught press 'reset' key when send sleep command 'echo mem > /sys/power/state' - Cause: FEC driver will power down phy when system sleep. If just reset the board, FEC driver cannot run resume function. So, need power on phy in uboot and linux driver. Signed-off-by: Fugang Duan --- diff --git a/arch/arm/mach-mx6/board-mx6q_arm2.c b/arch/arm/mach-mx6/board-mx6q_arm2.c index 4274d3d22008..053d3574bfa2 100644 --- a/arch/arm/mach-mx6/board-mx6q_arm2.c +++ b/arch/arm/mach-mx6/board-mx6q_arm2.c @@ -104,6 +104,8 @@ #define MX6Q_SMD_CSI0_RST IMX_GPIO_NR(4, 5) #define MX6Q_SMD_CSI0_PWN IMX_GPIO_NR(5, 23) +#define BMCR_PDOWN 0x0800 /* PHY Powerdown */ + void __init early_console_setup(unsigned long base, struct clk *clk); static struct clk *sata_clk; static int esai_record; @@ -506,6 +508,10 @@ static int mx6q_arm2_fec_phy_init(struct phy_device *phydev) val |= 0x0100; phy_write(phydev, 0x1e, val); + /*check phy power*/ + val = phy_read(phydev, 0x0); + if (val & BMCR_PDOWN) + phy_write(phydev, 0x0, (val & ~BMCR_PDOWN)); return 0; }