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.hagem...@phytec.de>
> Acked-by: Joe Hershberger <joe.hershber...@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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to