[U-Boot] [PATCH v3 3/7] drivers: net: designware: Add reading of DT phy-handle node

Grygorii Strashko grygorii.strashko at ti.com
Thu Aug 23 01:21:54 UTC 2018



On 08/22/2018 01:08 AM, Janine Hagemann wrote:
> Add the ability to read the phy-handle node of the
> gmac.  Upon reading this handle the phy-id
> can be stored based on the reg node in the DT.
> 
> The phy-handle also needs to be stored and passed
> to the phy to access any phy data that is available.
> 
> Signed-off-by: Janine Hagemann <j.hagemann at phytec.de>
> Acked-by: Joe Hershberger <joe.hershberger at ni.com>
> ---
> v3: - Add Acked-by
> ---
>   drivers/net/designware.c | 11 ++++++++++-
>   drivers/net/designware.h |  1 +
>   2 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/designware.c b/drivers/net/designware.c
> index 19db0a8..300dc55 100644
> --- a/drivers/net/designware.c
> +++ b/drivers/net/designware.c
> @@ -477,7 +477,7 @@ static int dw_phy_init(struct dw_eth_dev *priv, void *dev)
>   {
>   	struct phy_device *phydev;
>   	int mask = 0xffffffff, ret;
> -
> +	struct dw_eth_pdata *dw_pdata = dev_get_platdata(dev);
>   #ifdef CONFIG_PHY_ADDR
>   	mask = 1 << CONFIG_PHY_ADDR;
>   #endif
> @@ -496,6 +496,11 @@ static int dw_phy_init(struct dw_eth_dev *priv, void *dev)
>   	}
>   	phydev->advertising = phydev->supported;
>   
> +#ifdef CONFIG_DM_ETH
> +	if (dw_pdata->phy_of_handle)
> +		dev_set_of_offset(phydev->dev, dw_pdata->phy_of_handle);
> +#endif

And this has to be smth. like this:

 #ifdef CONFIG_DM_ETH
 	if (dw_pdata->phy_of_handle)
		phydev->node = offset_to_ofnode(dw_pdata->phy_of_handle);
 #endif

> +
>   	priv->phydev = phydev;
>   	phy_config(phydev);
>   
> @@ -803,6 +808,7 @@ int designware_eth_ofdata_to_platdata(struct udevice *dev)
>   	int reset_flags = GPIOD_IS_OUT;
>   #endif
>   	int ret = 0;
> +	int node = dev_of_offset(dev);
>   
>   	pdata->iobase = dev_read_addr(dev);
>   	pdata->phy_interface = -1;
> @@ -814,6 +820,9 @@ int designware_eth_ofdata_to_platdata(struct udevice *dev)
>   		return -EINVAL;
>   	}
>   
> +	dw_pdata->phy_of_handle = fdtdec_lookup_phandle(gd->fdt_blob, node,
> +							 "phy-handle");
> +
>   	pdata->max_speed = dev_read_u32_default(dev, "max-speed", 0);
>   
>   #ifdef CONFIG_DM_GPIO
> diff --git a/drivers/net/designware.h b/drivers/net/designware.h
> index dea12b7..a6b0443 100644
> --- a/drivers/net/designware.h
> +++ b/drivers/net/designware.h
> @@ -255,6 +255,7 @@ extern const struct eth_ops designware_eth_ops;
>   struct dw_eth_pdata {
>   	struct eth_pdata eth_pdata;
>   	u32 reset_delays[3];
> +	int phy_of_handle;
>   };
>   
>   int designware_eth_init(struct dw_eth_dev *priv, u8 *enetaddr);
> 

-- 
regards,
-grygorii


More information about the U-Boot mailing list