On Sun, 3 May 2020 at 09:28, Zhiqiang Hou <zhiqiang....@nxp.com> wrote: > > From: Hou Zhiqiang <zhiqiang....@nxp.com> > > When an eTSEC is configured to use TBI, configuration of the > TBI is done through the MIIM registers for that eTSEC. > For example, if a TBI interface is required on eTSEC2, then > the MIIM registers starting at offset 0x2_5520 are used to > configure it. > > Fixes: 9a1d6af55ecd ("net: tsec: Add driver model ethernet support") > Signed-off-by: Hou Zhiqiang <zhiqiang....@nxp.com> > --- > drivers/net/tsec.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c > index ce41aec5cf..31056f3117 100644 > --- a/drivers/net/tsec.c > +++ b/drivers/net/tsec.c > @@ -789,6 +789,7 @@ int tsec_probe(struct udevice *dev) > { > struct eth_pdata *pdata = dev_get_platdata(dev); > struct tsec_private *priv = dev_get_priv(dev); > + struct tsec_mii_mng __iomem *ext_phyregs_mii; > struct ofnode_phandle_args phandle_args; > u32 tbiaddr = CONFIG_SYS_TBIPA_VALUE; > struct fsl_pq_mdio_info mdio_info; > @@ -820,8 +821,8 @@ int tsec_probe(struct udevice *dev) > if (reg == FDT_ADDR_T_NONE) > return -ENOENT; > > - priv->phyregs_sgmii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0, > - MAP_NOCACHE); > + ext_phyregs_mii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0, > + MAP_NOCACHE); > > ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0, > &phandle_args); > @@ -830,6 +831,16 @@ int tsec_probe(struct udevice *dev) > > priv->tbiaddr = tbiaddr; > > + parent = ofnode_get_parent(phandle_args.node); > + if (!ofnode_valid(parent)) { > + printf("No parent node for TBI PHY?\n"); > + return -ENOENT; > + } > + > + reg = ofnode_get_addr_index(parent, 0);
Missing a check if (reg == FDT_ADDR_T_NONE) return -ENOENT; here? > + priv->phyregs_sgmii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0, > + MAP_NOCACHE); > + > phy_mode = dev_read_prop(dev, "phy-connection-type", NULL); > if (phy_mode) > pdata->phy_interface = phy_get_interface_by_name(phy_mode); > @@ -844,7 +855,7 @@ int tsec_probe(struct udevice *dev) > if (priv->interface == PHY_INTERFACE_MODE_SGMII) > priv->flags |= TSEC_SGMII; > > - mdio_info.regs = priv->phyregs_sgmii; > + mdio_info.regs = ext_phyregs_mii; > mdio_info.name = (char *)dev->name; > ret = fsl_pq_mdio_init(NULL, &mdio_info); > if (ret) > -- > 2.17.1 > With that: Reviewed-by: Vladimir Oltean <vladimir.olt...@nxp.com> Tested-by: Vladimir Oltean <vladimir.olt...@nxp.com> (on LS1021A) Thanks! -Vladimir