diff mbox series

[U-Boot,v2,08/11] drivers: net: designware: Add reading of DT phy-handle node

Message ID 1531903608-29695-9-git-send-email-j.hagemann@phytec.de
State Superseded
Delegated to: Philipp Tomsich
Headers show
Series Add ethernet support for phyCORE-RK3288 | expand

Commit Message

Janine Hagemann July 18, 2018, 8:46 a.m. UTC
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@phytec.de>
---
v2: No changes
---
 drivers/net/designware.c | 11 ++++++++++-
 drivers/net/designware.h |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)

Comments

Joe Hershberger July 26, 2018, 7:39 p.m. UTC | #1
On Wed, Jul 18, 2018 at 3:46 AM, Janine Hagemann <j.hagemann@phytec.de> 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@phytec.de>
> ---
> v2: No changes

You dropped my Acks from this series. Please correct and resend.

-Joe

> ---
>  drivers/net/designware.c | 11 ++++++++++-
>  drivers/net/designware.h |  1 +
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
Grygorii Strashko July 26, 2018, 11:06 p.m. UTC | #2
On 07/18/2018 03:46 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@phytec.de>
> ---
> v2: No changes
> ---
>   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 cf12521..8cc7fb9 100644
> --- a/drivers/net/designware.c
> +++ b/drivers/net/designware.c
> @@ -467,7 +467,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
> @@ -486,6 +486,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

hence https://patchwork.ozlabs.org/cover/936380/ is merged you can't do this any more.
Instead you need to setup phydev->node.

[...]
diff mbox series

Patch

diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index cf12521..8cc7fb9 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -467,7 +467,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
@@ -486,6 +486,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
+
 	priv->phydev = phydev;
 	phy_config(phydev);
 
@@ -786,6 +791,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;
@@ -797,6 +803,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);