aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVladimir Oltean <olteanv@gmail.com>2019-07-19 00:29:54 +0300
committerJoe Hershberger <joe.hershberger@ni.com>2019-07-25 13:13:31 -0500
commitbca686a4f90de853f010ce76d6ab9ea95b528907 (patch)
tree574e8e469205f0d30e945e65c66b0e8d40b4e2e5 /drivers
parent29db3107a526ecd795eb236e345434bf1fa3d0d4 (diff)
downloadu-boot-bca686a4f90de853f010ce76d6ab9ea95b528907.zip
u-boot-bca686a4f90de853f010ce76d6ab9ea95b528907.tar.gz
u-boot-bca686a4f90de853f010ce76d6ab9ea95b528907.tar.bz2
net: tsec: Fix offset of MDIO registers for DM_ETH
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> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/tsec.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 53eb547..5763986 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)