net: fec: sharing MDIO for two enet controllers

On i.MX6SX, 6UL and 7D, there are two enet controllers each has a
MDIO port. But Some boards share one MDIO port for the two enets. So
introduce a configuration CONFIG_FEC_MXC_MDIO_BASE to indicate
the MDIO port for sharing.
In Kconfig, user needs enable CONFIG_FEC_MXC_SHARE_MDIO first to enter
the CONFIG_FEC_MXC_MDIO_BASE.

To i.MX28, adapt to use the new config

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
lime2-spi
Peng Fan 6 years ago committed by Joe Hershberger
parent 8b20386356
commit fbada4855d
  1. 13
      drivers/net/Kconfig
  2. 8
      drivers/net/fec_mxc.c
  3. 1
      include/configs/mx28evk.h

@ -155,9 +155,20 @@ config ETHOC
help
This MAC is present in OpenRISC and Xtensa XTFPGA boards.
config FEC_MXC_SHARE_MDIO
bool "Share the MDIO bus for FEC controller"
depends on FEC_MXC
config FEC_MXC_MDIO_BASE
hex "MDIO base address for the FEC controller"
depends on FEC_MXC_SHARE_MDIO
help
This specifies the MDIO registers base address. It is used when
two FEC controllers share MDIO bus.
config FEC_MXC
bool "FEC Ethernet controller"
depends on MX5 || MX6
depends on MX5 || MX6 || MX7
help
This driver supports the 10/100 Fast Ethernet controller for
NXP i.MX processors.

@ -1146,12 +1146,12 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr)
#endif
int ret;
#ifdef CONFIG_MX28
#ifdef CONFIG_FEC_MXC_MDIO_BASE
/*
* The i.MX28 has two ethernet interfaces, but they are not equal.
* Only the first one can access the MDIO bus.
*/
base_mii = MXS_ENET0_BASE;
base_mii = CONFIG_FEC_MXC_MDIO_BASE;
#else
base_mii = addr;
#endif
@ -1273,7 +1273,11 @@ static int fecmxc_probe(struct udevice *dev)
fec_reg_setup(priv);
priv->dev_id = dev->seq;
#ifdef CONFIG_FEC_MXC_MDIO_BASE
bus = fec_get_miibus((ulong)CONFIG_FEC_MXC_MDIO_BASE, dev->seq);
#else
bus = fec_get_miibus((ulong)priv->eth, dev->seq);
#endif
if (!bus) {
ret = -ENOMEM;
goto err_mii;

@ -65,6 +65,7 @@
/* FEC Ethernet on SoC */
#ifdef CONFIG_CMD_NET
#define CONFIG_FEC_MXC
#define CONFIG_FEC_MXC_MDIO_BASE MXS_ENET0_BASE
#define CONFIG_MX28_FEC_MAC_IN_OCOTP
#endif

Loading…
Cancel
Save