[U-Boot] [PATCH 09/12] drivers: net: designware: Add reading of DT phy-handle node
Janine Hagemann
j.hagemann at phytec.de
Thu Jun 14 09:48:53 UTC 2018
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>
---
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
+
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);
--
2.7.4
More information about the U-Boot
mailing list