net: macb: Fix GMAC not work when enable DM_ETH

Always search the PHY to determine the macb->phy_addr before using
the PHY to fix "No PHY present" error.

Fix the wrong test of the GMAC's phy interface mode, it should be
PHY_INTERFACE_MODE_RGMII.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
Wenyou Yang 2017-04-20 11:13:13 +08:00 committed by Joe Hershberger
parent e09d0c8314
commit 6de046eaa7

View File

@ -450,7 +450,6 @@ static void macb_phy_reset(struct macb_device *macb, const char *name)
name, status); name, status);
} }
#ifdef CONFIG_MACB_SEARCH_PHY
static int macb_phy_find(struct macb_device *macb, const char *name) static int macb_phy_find(struct macb_device *macb, const char *name)
{ {
int i; int i;
@ -471,7 +470,6 @@ static int macb_phy_find(struct macb_device *macb, const char *name)
return 0; return 0;
} }
#endif /* CONFIG_MACB_SEARCH_PHY */
#ifdef CONFIG_DM_ETH #ifdef CONFIG_DM_ETH
static int macb_phy_init(struct udevice *dev, const char *name) static int macb_phy_init(struct udevice *dev, const char *name)
@ -488,11 +486,9 @@ static int macb_phy_init(struct macb_device *macb, const char *name)
int i; int i;
arch_get_mdio_control(name); arch_get_mdio_control(name);
#ifdef CONFIG_MACB_SEARCH_PHY
/* Auto-detect phy_addr */ /* Auto-detect phy_addr */
if (!macb_phy_find(macb, name)) if (!macb_phy_find(macb, name))
return 0; return 0;
#endif /* CONFIG_MACB_SEARCH_PHY */
/* Check if the PHY is up to snuff... */ /* Check if the PHY is up to snuff... */
phy_id = macb_mdio_read(macb, MII_PHYSID1); phy_id = macb_mdio_read(macb, MII_PHYSID1);
@ -667,7 +663,8 @@ static int _macb_init(struct macb_device *macb, const char *name)
* to select interface between RMII and MII. * to select interface between RMII and MII.
*/ */
#ifdef CONFIG_DM_ETH #ifdef CONFIG_DM_ETH
if (macb->phy_interface == PHY_INTERFACE_MODE_RMII) if ((macb->phy_interface == PHY_INTERFACE_MODE_RMII) ||
(macb->phy_interface == PHY_INTERFACE_MODE_RGMII))
gem_writel(macb, UR, GEM_BIT(RGMII)); gem_writel(macb, UR, GEM_BIT(RGMII));
else else
gem_writel(macb, UR, 0); gem_writel(macb, UR, 0);