drivers: net: fsl-mc: add support for CONFIG_DM_ETH
authorIoana Ciornei <ioana.ciornei@nxp.com>
Wed, 18 Mar 2020 14:47:38 +0000 (16:47 +0200)
committerPriyanka Jain <priyanka.jain@nxp.com>
Wed, 29 Apr 2020 05:40:54 +0000 (11:10 +0530)
Make any adjustments necessary in order to support DPAA2 devices probed
using CONFIG_DM_ETH. While at it, fixup some styling issues aroung the
switch-case statement.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
drivers/net/fsl-mc/mc.c

index 07bbcc9b2311b87e8dd57bc1653284f0831f4357..fee372968a38e65f7ea2d5d01e1670b45767f53c 100644 (file)
@@ -174,9 +174,21 @@ enum mc_fixup_type {
 };
 
 static int mc_fixup_mac_addr(void *blob, int nodeoffset,
+#ifdef CONFIG_DM_ETH
+                            const char *propname, struct udevice *eth_dev,
+#else
                             const char *propname, struct eth_device *eth_dev,
+#endif
                             enum mc_fixup_type type)
 {
+#ifdef CONFIG_DM_ETH
+       struct eth_pdata *plat = dev_get_platdata(eth_dev);
+       unsigned char *enetaddr = plat->enetaddr;
+       int eth_index = eth_dev->seq;
+#else
+       unsigned char *enetaddr = eth_dev->enetaddr;
+       int eth_index = eth_dev->index;
+#endif
        int err = 0, len = 0, size, i;
        unsigned char env_enetaddr[ARP_HLEN];
        unsigned int enetaddr_32[ARP_HLEN];
@@ -184,23 +196,22 @@ static int mc_fixup_mac_addr(void *blob, int nodeoffset,
 
        switch (type) {
        case MC_FIXUP_DPL:
-       /* DPL likes its addresses on 32 * ARP_HLEN bits */
-       for (i = 0; i < ARP_HLEN; i++)
-               enetaddr_32[i] = cpu_to_fdt32(eth_dev->enetaddr[i]);
-       val = enetaddr_32;
-       len = sizeof(enetaddr_32);
-       break;
-
+               /* DPL likes its addresses on 32 * ARP_HLEN bits */
+               for (i = 0; i < ARP_HLEN; i++)
+                       enetaddr_32[i] = cpu_to_fdt32(enetaddr[i]);
+               val = enetaddr_32;
+               len = sizeof(enetaddr_32);
+               break;
        case MC_FIXUP_DPC:
-       val = eth_dev->enetaddr;
-       len = ARP_HLEN;
-       break;
+               val = enetaddr;
+               len = ARP_HLEN;
+               break;
        }
 
        /* MAC address property present */
        if (fdt_get_property(blob, nodeoffset, propname, NULL)) {
                /* u-boot MAC addr randomly assigned - leave the present one */
-               if (!eth_env_get_enetaddr_by_index("eth", eth_dev->index,
+               if (!eth_env_get_enetaddr_by_index("eth", eth_index,
                                                   env_enetaddr))
                        return err;
        } else {
@@ -250,7 +261,11 @@ const char *dpl_get_connection_endpoint(void *blob, char *endpoint)
 }
 
 static int mc_fixup_dpl_mac_addr(void *blob, int dpmac_id,
+#ifdef CONFIG_DM_ETH
+                                struct udevice *eth_dev)
+#else
                                 struct eth_device *eth_dev)
+#endif
 {
        int objoff = fdt_path_offset(blob, "/objects");
        int dpmacoff = -1, dpnioff = -1;
@@ -334,7 +349,11 @@ void fdt_fsl_mc_fixup_iommu_map_entry(void *blob)
 }
 
 static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
+#ifdef CONFIG_DM_ETH
+                                struct udevice *eth_dev)
+#else
                                 struct eth_device *eth_dev)
+#endif
 {
        int nodeoffset = fdt_path_offset(blob, "/board_info/ports"), noff;
        int err = 0;
@@ -377,8 +396,13 @@ static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
 static int mc_fixup_mac_addrs(void *blob, enum mc_fixup_type type)
 {
        int i, err = 0, ret = 0;
-       char ethname[ETH_NAME_LEN];
+#ifdef CONFIG_DM_ETH
+#define ETH_NAME_LEN 20
+       struct udevice *eth_dev;
+#else
        struct eth_device *eth_dev;
+#endif
+       char ethname[ETH_NAME_LEN];
 
        for (i = WRIOP1_DPMAC1; i < NUM_WRIOP_PORTS; i++) {
                /* port not enabled */