Message ID | 20190718213001.24815-3-olteanv@gmail.com |
---|---|
State | Accepted |
Commit | bca686a4f90de853f010ce76d6ab9ea95b528907 |
Delegated to: | Joe Hershberger |
Headers | show |
Series | NXP LS1021A-TSN Board | expand |
On Fri, Jul 19, 2019 at 5:32 AM Vladimir Oltean <olteanv@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@gmail.com> > Acked-by: Joe Hershberger <joe.hershberger@ni.com> > --- > Changes from v2: > > None. > > Changes from v1: > > None. > > drivers/net/tsec.c | 13 +++++++------ > include/tsec.h | 4 +++- > 2 files changed, 10 insertions(+), 7 deletions(-) > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Hi Vladimir, https://patchwork.ozlabs.org/patch/1133860/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git Thanks! -Joe
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); + ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0, &phandle_args); if (ret == 0) diff --git a/include/tsec.h b/include/tsec.h index e90095121bdd..b17fa957df5b 100644 --- a/include/tsec.h +++ b/include/tsec.h @@ -17,6 +17,8 @@ #include <config.h> #include <phy.h> +#define TSEC_MDIO_REGS_OFFSET 0x520 + #ifndef CONFIG_DM_ETH #ifdef CONFIG_ARCH_LS1021A @@ -27,7 +29,7 @@ #define TSEC_MDIO_OFFSET 0x01000 #endif -#define CONFIG_SYS_MDIO_BASE_ADDR (MDIO_BASE_ADDR + 0x520) +#define CONFIG_SYS_MDIO_BASE_ADDR (MDIO_BASE_ADDR + TSEC_MDIO_REGS_OFFSET) #define TSEC_GET_REGS(num, offset) \ (struct tsec __iomem *)\