[U-Boot] [PATCH] net: macb: Fix ETH not found when clock not support

Heiko Schocher hs at denx.de
Tue Feb 14 07:58:10 UTC 2017


Hello Wenyou,

Am 14.02.2017 um 08:04 schrieb Wenyou Yang:
> 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 at atmel.com>
> ---
>
>   drivers/net/macb.c | 13 +++++++++----
>   1 file changed, 9 insertions(+), 4 deletions(-)

Thanks!

$ git am -3 mbox
Wende an: net: macb: Fix ETH not found when clock not support
Verwende Informationen aus der Staging-Area, um ein Basisverzeichnis nachzustellen ...
M       drivers/net/macb.c
Falle zurück zum Patchen der Basis und zum 3-Wege-Merge ...
automatischer Merge von drivers/net/macb.c
pollux:u-boot-smartweb hs [master] $

Is your patch based on current mainline?

Beside of this, it fixed the problem on the smartweb and corvus
board, thanks!

So, please add my:

Tested-by: Heiko Schocher <hs at denx.de>

bye,
Heiko
>
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index 67d820fefa..d29e9b2bdd 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -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, "phy-mode", NULL);
>   	if (phy_mode)
> @@ -1043,9 +1046,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);
>
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list