[U-Boot] [PATCH 2/8] net: tsec: Fix offset of MDIO registers for DM_ETH
Joe Hershberger
joe.hershberger at ni.com
Mon Jul 15 17:53:57 UTC 2019
On Sun, Jun 23, 2019 at 12:51 PM Vladimir Oltean <olteanv at 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 at gmail.com>
Acked-by: Joe Hershberger <joe.hershberger at ni.com>
> ---
> drivers/net/tsec.c | 13 +++++++------
> include/tsec.h | 4 +++-
> 2 files changed, 10 insertions(+), 7 deletions(-)
>
> 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);
I'm surprised not to see a .dts change in this patch as well or some
other consumer of this phyregs_sgmii member.
> +
> 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 *)\
> --
> 2.17.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
More information about the U-Boot
mailing list