From: Hou Zhiqiang Date: Sun, 3 May 2020 14:48:42 +0000 (+0800) Subject: net: tsec: Access eTSEC registers using virtual address X-Git-Tag: v2020.07-rc4~2^2~3 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bf67eb325bea748577f98fd5bb5f10348b223c2a;p=oweals%2Fu-boot.git net: tsec: Access eTSEC registers using virtual address 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 Reviewed-by: Vladimir Oltean Tested-by: Vladimir Oltean Reviewed-by: Priyanka Jain --- diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index c2e755f2b1..611cb040dc 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -800,7 +800,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)) { @@ -819,8 +819,13 @@ 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) { + printf("No 'reg' property of MII for external PHY\n"); + 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);