From 8281f1bd64d866cc52a519687a7622c6e18ae84d Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 22 Oct 2012 08:30:05 +0200 Subject: [PATCH] net: gem: Perform phy_detection for CONFIG_PHYLIB any tftp or networking operation will cause this undefined instruction issue: {{{ U-Boot-PetaLinux> run load_boot undefined instruction pc : [<3fb68900>] lr : [<3ff9ce00>] sp : 3fb65be8 ip : 000a0003 fp : 00000000 r10: 3fb697c8 r9 : 3fb697b0 r8 : 3fb65f68 r7 : 3fb66478 r6 : ffffffff r5 : 00000000 r4 : 3fb66500 r3 : 3fb688c8 r2 : 3fb66478 r1 : ffffffff r0 : 3fb66500 Flags: nzCv IRQs off FIQs off Mode SVC_32 Resetting CPU ... resetting ... }}} this is because the CONFIG_PHY_ADDR is not defined in Petalogix-arm-auto. workaround is to run phy_detection for CONFIG_PHYLIB or no CONFIG_PHYLIB. Signed-off-by: Jason Wu --- drivers/net/zynq_gem.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c index 7f29b63f4f8..2ab4abdefab 100644 --- a/drivers/net/zynq_gem.c +++ b/drivers/net/zynq_gem.c @@ -225,6 +225,7 @@ static int phy_rst(struct eth_device *dev) puts("\nPHY reset complete.\n"); return 0; } +#endif static void phy_detection(struct eth_device *dev) { @@ -261,7 +262,6 @@ static void phy_detection(struct eth_device *dev) } printf("PHY is not detected\n"); } -#endif static int zynq_gem_setup_mac(struct eth_device *dev) { @@ -345,6 +345,8 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis) /* Setup for Network Control register, MDIO, Rx and Tx enable */ setbits_le32(®s->nwctrl, ZYNQ_GEM_NWCTRL_MDEN_MASK ); + phy_detection(dev); + #ifdef CONFIG_PHYLIB /* interface - look at tsec */ phydev = phy_connect(priv->bus, priv->phyaddr, dev, 0); @@ -398,7 +400,6 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis) phywrite(dev, priv->phyaddr, 22, 0); /* page 0 */ #endif u16 tmp; - phy_detection(dev); /* link speed advertisement for autonegotiation */ phyread(dev, priv->phyaddr, 4, &tmp); -- 2.47.3