]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/fec_mxc.c
clk: Add Actions Semi OWL clock support
[u-boot] / drivers / net / fec_mxc.c
index 74d36f479ec9b59301cb2002c94e783986c0e564..694a0b2f7eb6cc9a4e7613f454be939edebce3d6 100644 (file)
@@ -1,11 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2009 Ilya Yanok, Emcraft Systems Ltd <yanok@emcraft.com>
  * (C) Copyright 2008,2009 Eric Jarrige <eric.jarrige@armadeus.org>
  * (C) Copyright 2008 Armadeus Systems nc
  * (C) Copyright 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
  * (C) Copyright 2007 Pengutronix, Juergen Beisert <j.beisert@pengutronix.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -1146,12 +1145,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
@@ -1230,7 +1229,7 @@ static int fec_phy_init(struct fec_priv *priv, struct udevice *dev)
        struct phy_device *phydev;
        int mask = 0xffffffff;
 
-#ifdef CONFIG_PHYLIB
+#ifdef CONFIG_FEC_MXC_PHYADDR
        mask = 1 << CONFIG_FEC_MXC_PHYADDR;
 #endif
 
@@ -1251,7 +1250,6 @@ static int fecmxc_probe(struct udevice *dev)
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct fec_priv *priv = dev_get_priv(dev);
        struct mii_dev *bus = NULL;
-       int dev_id = -1;
        uint32_t start;
        int ret;
 
@@ -1272,9 +1270,13 @@ static int fecmxc_probe(struct udevice *dev)
        }
 
        fec_reg_setup(priv);
-       priv->dev_id = (dev_id == -1) ? 0 : dev_id;
 
-       bus = fec_get_miibus((ulong)priv->eth, dev_id);
+       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;
@@ -1289,12 +1291,11 @@ static int fecmxc_probe(struct udevice *dev)
 
        return 0;
 
-err_timeout:
-       free(priv->phydev);
 err_phy:
        mdio_unregister(bus);
        free(bus);
 err_mii:
+err_timeout:
        fec_free_descs(priv);
        return ret;
 }
@@ -1340,6 +1341,10 @@ static int fecmxc_ofdata_to_platdata(struct udevice *dev)
 
 static const struct udevice_id fecmxc_ids[] = {
        { .compatible = "fsl,imx6q-fec" },
+       { .compatible = "fsl,imx6sl-fec" },
+       { .compatible = "fsl,imx6sx-fec" },
+       { .compatible = "fsl,imx6ul-fec" },
+       { .compatible = "fsl,imx53-fec" },
        { }
 };