net: macb: Fix ETH not found when clock not support
authorWenyou Yang <wenyou.yang@atmel.com>
Tue, 14 Feb 2017 08:24:40 +0000 (16:24 +0800)
committerTom Rini <trini@konsulko.com>
Thu, 2 Mar 2017 02:28:39 +0000 (21:28 -0500)
For the boards such as smartweb on which the clock driver isn't
supported, the ethernet fail to be found when booting up with
the below log.
---8<---
Net:   No ethernet found.
--->8---

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Tested-by: Heiko Schocher <hs@denx.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/macb.c

index 1c4bef97b6d18ef2549d88236f3322df1505a2c3..402e8668174c1c30a504442801c191771a7c5ff9 100644 (file)
@@ -113,7 +113,9 @@ struct macb_device {
        struct mii_dev          *bus;
 
 #ifdef CONFIG_DM_ETH
+#ifdef CONFIG_CLK
        unsigned long           pclk_rate;
+#endif
        phy_interface_t         phy_interface;
 #endif
 };
@@ -756,7 +758,7 @@ static int _macb_write_hwaddr(struct macb_device *macb, unsigned char *enetaddr)
 static u32 macb_mdc_clk_div(int id, struct macb_device *macb)
 {
        u32 config;
-#ifdef CONFIG_DM_ETH
+#if defined(CONFIG_DM_ETH) && defined(CONFIG_CLK)
        unsigned long macb_hz = macb->pclk_rate;
 #else
        unsigned long macb_hz = get_macb_pclk_rate(id);
@@ -778,7 +780,7 @@ static u32 gem_mdc_clk_div(int id, struct macb_device *macb)
 {
        u32 config;
 
-#ifdef CONFIG_DM_ETH
+#if defined(CONFIG_DM_ETH) && defined(CONFIG_CLK)
        unsigned long macb_hz = macb->pclk_rate;
 #else
        unsigned long macb_hz = get_macb_pclk_rate(id);
@@ -1002,6 +1004,7 @@ static const struct eth_ops macb_eth_ops = {
        .write_hwaddr   = macb_write_hwaddr,
 };
 
+#ifdef CONFIG_CLK
 static int macb_enable_clk(struct udevice *dev)
 {
        struct macb_device *macb = dev_get_priv(dev);
@@ -1025,13 +1028,13 @@ static int macb_enable_clk(struct udevice *dev)
 
        return 0;
 }
+#endif
 
 static int macb_eth_probe(struct udevice *dev)
 {
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct macb_device *macb = dev_get_priv(dev);
        const char *phy_mode;
-       int ret;
 
        phy_mode = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "phy-mode",
                               NULL);
@@ -1044,9 +1047,11 @@ static int macb_eth_probe(struct udevice *dev)
 
        macb->regs = (void *)pdata->iobase;
 
-       ret = macb_enable_clk(dev);
+#ifdef CONFIG_CLK
+       int ret = macb_enable_clk(dev);
        if (ret)
                return ret;
+#endif
 
        _macb_eth_initialize(macb);