[PATCH] net: mvgbe: add support for differ PHY addresses
Chris Packham
judge.packham at gmail.com
Tue Apr 28 10:27:53 CEST 2020
Hi Pawel,
Sorry for the delay replying.
On Sun, 12 Apr 2020, 7:27 AM Pawel Dembicki, <paweldembicki at gmail.com>
wrote:
> PHYs on some boards have not subsequential addresses.
> This patch introduces define PHY_BASE_ADR2, which allow
> to configure separate PHY addresses for both interfaces.
>
These days this kind of information should really be coming via the
devicetree. Infact as far as I can tell the current code should support
specifying the phy address this way.
> Cc: Joe Hershberger <joe.hershberger at ni.com>
> Cc: Chris Packham <judge.packham at gmail.com>
> Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
> ---
> drivers/net/mvgbe.c | 23 ++++++++++++++++++++---
> drivers/net/mvgbe.h | 4 ++++
> 2 files changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/mvgbe.c b/drivers/net/mvgbe.c
> index 037e59ec6e..d40fb5af81 100644
> --- a/drivers/net/mvgbe.c
> +++ b/drivers/net/mvgbe.c
> @@ -874,7 +874,15 @@ int mvgbe_initialize(bd_t *bis)
> eth_register(dev);
>
> #if defined(CONFIG_PHYLIB)
> - mvgbe_phylib_init(dev, PHY_BASE_ADR + devnum);
> +
> + if (devnum == 0)
> + mvgbe_phylib_init(dev, PHY_BASE_ADR);
> + else
> +#if defined(PHY_BASE_ADR2)
> + mvgbe_phylib_init(dev, PHY_BASE_ADR2);
> +#else
> + mvgbe_phylib_init(dev, PHY_BASE_ADR + devnum);
> +#endif
> #elif defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
> int retval;
> struct mii_dev *mdiodev = mdio_alloc();
> @@ -888,8 +896,17 @@ int mvgbe_initialize(bd_t *bis)
> if (retval < 0)
> return retval;
> /* Set phy address of the port */
> - miiphy_write(dev->name, MV_PHY_ADR_REQUEST,
> - MV_PHY_ADR_REQUEST, PHY_BASE_ADR + devnum);
> + if (devnum == 0)
> + miiphy_write(dev->name, MV_PHY_ADR_REQUEST,
> + MV_PHY_ADR_REQUEST, PHY_BASE_ADR);
> + else
> +#if defined(PHY_BASE_ADR2)
> + miiphy_write(dev->name, MV_PHY_ADR_REQUEST,
> + MV_PHY_ADR_REQUEST, PHY_BASE_ADR2);
> +#else
> + miiphy_write(dev->name, MV_PHY_ADR_REQUEST,
> + MV_PHY_ADR_REQUEST, PHY_BASE_ADR +
> devnum);
> +#endif
> #endif
> }
> return 0;
> diff --git a/drivers/net/mvgbe.h b/drivers/net/mvgbe.h
> index 44541c0a85..f37d4c3d59 100644
> --- a/drivers/net/mvgbe.h
> +++ b/drivers/net/mvgbe.h
> @@ -18,6 +18,10 @@
> #define PHY_BASE_ADR 0x08 /* default phy base addr */
> #endif
>
> +#if defined(CONFIG_PHY_BASE_ADR2)
> +#define PHY_BASE_ADR2 CONFIG_PHY_BASE_ADR2
> +#endif
> +
> /* Constants */
> #define INT_CAUSE_UNMASK_ALL 0x0007ffff
> #define INT_CAUSE_UNMASK_ALL_EXT 0x0011ffff
> --
> 2.20.1
>
>
More information about the U-Boot
mailing list