From patchwork Sun May 3 14:48:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhiqiang Hou X-Patchwork-Id: 244938 List-Id: U-Boot discussion From: Zhiqiang.Hou at nxp.com (Zhiqiang Hou) Date: Sun, 3 May 2020 22:48:42 +0800 Subject: [PATCHv2 2/3] net: tsec: Access eTSEC registers using virtual address In-Reply-To: <20200503144843.36949-1-Zhiqiang.Hou@nxp.com> References: <20200503144843.36949-1-Zhiqiang.Hou@nxp.com> Message-ID: <20200503144843.36949-3-Zhiqiang.Hou@nxp.com> From: Hou Zhiqiang 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 --- V2: - Added error message for getting the external PHY MII reg. drivers/net/tsec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index f85cdcb97e..541f964d2e 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,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);