Hi Zhiqiang,

On Sun, 3 May 2020 at 09:28, Zhiqiang Hou <zhiqiang....@nxp.com> wrote:
>
> From: Hou Zhiqiang <zhiqiang....@nxp.com>
>
> 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 <zhiqiang....@nxp.com>
> ---

Reviewed-by: Vladimir Oltean <vladimir.olt...@nxp.com>
Tested-by: Vladimir Oltean <vladimir.olt...@nxp.com>

(on LS1021A)

>  drivers/net/tsec.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
> index f85cdcb97e..ce41aec5cf 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,11 @@ 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)
> +               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);
> --
> 2.17.1
>

Reply via email to