diff mbox series

net: gem: Add support for more PHYs on MDIO bus

Message ID b6c938cb1529b3a78a9fb0cc5c58475236192d9d.1598269549.git.michal.simek@xilinx.com
State Accepted
Commit 8c40e07aab8763d9a61d98bcce4bdf4a69566fe4
Delegated to: Michal Simek
Headers show
Series net: gem: Add support for more PHYs on MDIO bus | expand

Commit Message

Michal Simek Aug. 24, 2020, 11:45 a.m. UTC
Find out MDIO bus and enable MDIO access to it if this is done via
different GEM controller. Only works across GEM instances.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

 drivers/net/zynq_gem.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Michal Simek Sept. 23, 2020, 12:02 p.m. UTC | #1
po 24. 8. 2020 v 13:45 odesílatel Michal Simek <michal.simek@xilinx.com> napsal:
>
> Find out MDIO bus and enable MDIO access to it if this is done via
> different GEM controller. Only works across GEM instances.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  drivers/net/zynq_gem.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c
> index da4b6fba9ff6..8afec8bbfcff 100644
> --- a/drivers/net/zynq_gem.c
> +++ b/drivers/net/zynq_gem.c
> @@ -758,6 +758,9 @@ static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
>
>         if (!dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0,
>                                         &phandle_args)) {
> +               fdt_addr_t addr;
> +               ofnode parent;
> +
>                 debug("phy-handle does exist %s\n", dev->name);
>                 priv->phyaddr = ofnode_read_u32_default(phandle_args.node,
>                                                         "reg", -1);
> @@ -765,6 +768,13 @@ static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
>                 priv->max_speed = ofnode_read_u32_default(phandle_args.node,
>                                                           "max-speed",
>                                                           SPEED_1000);
> +
> +               parent = ofnode_get_parent(phandle_args.node);
> +               addr = ofnode_get_addr(parent);
> +               if (addr != FDT_ADDR_T_NONE) {
> +                       debug("MDIO bus not found %s\n", dev->name);
> +                       priv->mdiobase = (struct zynq_gem_regs *)addr;
> +               }
>         }
>
>         phy_mode = dev_read_prop(dev, "phy-mode", NULL);
> --
> 2.28.0
>

Applied.
M
diff mbox series

Patch

diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c
index da4b6fba9ff6..8afec8bbfcff 100644
--- a/drivers/net/zynq_gem.c
+++ b/drivers/net/zynq_gem.c
@@ -758,6 +758,9 @@  static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
 
 	if (!dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0,
 					&phandle_args)) {
+		fdt_addr_t addr;
+		ofnode parent;
+
 		debug("phy-handle does exist %s\n", dev->name);
 		priv->phyaddr = ofnode_read_u32_default(phandle_args.node,
 							"reg", -1);
@@ -765,6 +768,13 @@  static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
 		priv->max_speed = ofnode_read_u32_default(phandle_args.node,
 							  "max-speed",
 							  SPEED_1000);
+
+		parent = ofnode_get_parent(phandle_args.node);
+		addr = ofnode_get_addr(parent);
+		if (addr != FDT_ADDR_T_NONE) {
+			debug("MDIO bus not found %s\n", dev->name);
+			priv->mdiobase = (struct zynq_gem_regs *)addr;
+		}
 	}
 
 	phy_mode = dev_read_prop(dev, "phy-mode", NULL);