[U-Boot] [PATCH 2/8] net: tsec: Fix offset of MDIO registers for DM_ETH
Bin Meng
bmeng.cn at gmail.com
Tue Jul 16 01:19:41 UTC 2019
Hi Vladimir,
On Tue, Jul 16, 2019 at 6:00 AM Vladimir Oltean <olteanv at gmail.com> wrote:
>
> Hi Joe,
>
> On Mon, 15 Jul 2019 at 21:00, Joe Hershberger <joe.hershberger at ni.com> wrote:
> >
> > On Sun, Jun 23, 2019 at 12:51 PM Vladimir Oltean <olteanv at gmail.com> wrote:
> > >
> > > By convention, the eTSEC MDIO controller nodes are defined in DT at
> > > 0x2d24000 and 0x2d50000, but actually U-boot does not touch the
> > > interrupt portion of the register map (MDIO_IEVENTM, MDIO_IMASKM,
> > > MDIO_EMAPM).
> > >
> > > That leaves only the MDIO bus registers (MDIO_MIIMCFG, MDIO_MIIMCOM,
> > > MDIO_MIIMADD, MDIO_MIIMADD, MDIO_MIIMCON, MDIO_MIIMSTAT) which start at
> > > the 0x520 offset.
> > >
> > > So shift the DT-defined register map by the offset of MDIO_MIIMCFG when
> > > mapping the MDIO bus registers.
> > >
> > > Signed-off-by: Vladimir Oltean <olteanv at gmail.com>
> >
> > Acked-by: Joe Hershberger <joe.hershberger at ni.com>
> >
> > > ---
> > > drivers/net/tsec.c | 13 +++++++------
> > > include/tsec.h | 4 +++-
> > > 2 files changed, 10 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
> > > index 53eb5470f4c8..576398676af7 100644
> > > --- a/drivers/net/tsec.c
> > > +++ b/drivers/net/tsec.c
> > > @@ -801,6 +801,7 @@ int tsec_probe(struct udevice *dev)
> > > u32 tbiaddr = CONFIG_SYS_TBIPA_VALUE;
> > > ofnode parent;
> > > const char *phy_mode;
> > > + fdt_addr_t reg;
> > > int ret;
> > >
> > > pdata->iobase = (phys_addr_t)dev_read_addr(dev);
> > > @@ -817,15 +818,15 @@ int tsec_probe(struct udevice *dev)
> > > }
> > >
> > > parent = ofnode_get_parent(phandle_args.node);
> > > - if (ofnode_valid(parent)) {
> > > - int reg = ofnode_get_addr_index(parent, 0);
> > > -
> > > - priv->phyregs_sgmii = (struct tsec_mii_mng *)reg;
> > > - } else {
> > > - debug("No parent node for PHY?\n");
> > > + if (!ofnode_valid(parent)) {
> > > + printf("No parent node for PHY?\n");
> > > return -ENOENT;
> > > }
> > >
> > > + reg = ofnode_get_addr_index(parent, 0);
> > > + priv->phyregs_sgmii = (struct tsec_mii_mng *)
> > > + (reg + TSEC_MDIO_REGS_OFFSET);
> >
> > I'm surprised not to see a .dts change in this patch as well or some
> > other consumer of this phyregs_sgmii member.
> >
>
> This surprises me as well, to be honest.
> Actually Bin Meng's patchset to convert the TSEC driver to DM never
> got completely merged. I suppose the LS1021A-TWR conversion was sort
> of mechanical and probably not tested on hardware, otherwise I can't
Actually I did test the LS1021A-TWR TSEC DM conversion patch when I
submitted it before. I vaguely remember the reason why it was not
merged was because DM ETH depended on DM PCI conversion and at that
time, DM PCI conversion on LS1021A was not ready.
> explain. There is no DT patch because this portion of the code never
> worked. The DM version of the TSEC driver had no (upstream?) users.
Regards,
Bin
More information about the U-Boot
mailing list