Hi Zhiqiang, On Sun, 3 May 2020 at 09:28, Zhiqiang Hou <zhiqiang....@nxp.com> wrote: > > From: Hou Zhiqiang <zhiqiang....@nxp.com> > > The current code accesses eTSEC registers using physical > address directly, it's not correct, though no problem on > current platforms. It won't work on platforms, which does > not support 1:1 virtual-physical address map. > > Signed-off-by: Hou Zhiqiang <zhiqiang....@nxp.com> > ---
Reviewed-by: Vladimir Oltean <vladimir.olt...@nxp.com> Tested-by: Vladimir Oltean <vladimir.olt...@nxp.com> (on LS1021A) > drivers/net/tsec.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c > index f85cdcb97e..ce41aec5cf 100644 > --- a/drivers/net/tsec.c > +++ b/drivers/net/tsec.c > @@ -798,7 +798,7 @@ int tsec_probe(struct udevice *dev) > int ret; > > pdata->iobase = (phys_addr_t)dev_read_addr(dev); > - priv->regs = (struct tsec *)pdata->iobase; > + priv->regs = dev_remap_addr(dev); > > if (dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0, > &phandle_args)) { > @@ -817,8 +817,11 @@ int tsec_probe(struct udevice *dev) > } > > reg = ofnode_get_addr_index(parent, 0); > - priv->phyregs_sgmii = (struct tsec_mii_mng *) > - (reg + TSEC_MDIO_REGS_OFFSET); > + if (reg == FDT_ADDR_T_NONE) > + return -ENOENT; > + > + priv->phyregs_sgmii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0, > + MAP_NOCACHE); > > ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0, > &phandle_args); > -- > 2.17.1 >