]> git.sur5r.net Git - u-boot/commitdiff
net: fec: sharing MDIO for two enet controllers
authorPeng Fan <peng.fan@nxp.com>
Wed, 28 Mar 2018 12:54:14 +0000 (20:54 +0800)
committerJoe Hershberger <joe.hershberger@ni.com>
Fri, 13 Apr 2018 20:47:38 +0000 (15:47 -0500)
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>
drivers/net/Kconfig
drivers/net/fec_mxc.c
include/configs/mx28evk.h

index 98573cb22a4fa6722bf90fc9a4b1fb42330a8fb7..3a374d88718397d6395113a8cb51d6ee0e2cf82e 100644 (file)
@@ -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.
index 1f752d75c76b75aff1d0345f45ba61652e4dad1d..1de72da10bdac2f2cbcdb02bd63f966cd5774a7a 100644 (file)
@@ -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;
index bc58ca5c62d8a2b36ff08bd676c0fd0b62b286e1..79d4c9b2ce35df62689347fa5170eee06fd2506b 100644 (file)
@@ -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