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 |
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 --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);
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(+)