net: fsl-mc: fixup DPC: add /board/ports node if missing
authorRazvan Ionut Cirjan <razvanionut.cirjan@nxp.com>
Tue, 28 Apr 2020 13:09:59 +0000 (16:09 +0300)
committerPriyanka Jain <priyanka.jain@nxp.com>
Tue, 19 May 2020 03:52:08 +0000 (09:22 +0530)
The DPC fixup for MAC address and enet_if is not made if
/board/ports node is missing in DPC file.
Add /board/ports or /ports nodes if them are missing.

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

index 9c4ba7dbda690a89248e2939ee10a269f4fbe87b..36218420165d3710da45dcdf82bc87bbc96e802f 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright 2014 Freescale Semiconductor, Inc.
- * Copyright 2017-2018 NXP
+ * Copyright 2017-2018, 2020 NXP
  */
 #include <common.h>
 #include <command.h>
@@ -478,8 +478,19 @@ static int mc_fixup_dpc(u64 dpc_addr)
 
        /* fixup MAC addresses for dpmac ports */
        nodeoffset = fdt_path_offset(blob, "/board_info/ports");
-       if (nodeoffset < 0)
-               goto out;
+       if (nodeoffset < 0) {
+               err = fdt_increase_size(blob, 512);
+               if (err) {
+                       printf("fdt_increase_size: err=%s\n",
+                              fdt_strerror(err));
+                       goto out;
+               }
+               nodeoffset = fdt_path_offset(blob, "/board_info");
+               if (nodeoffset < 0)
+                       nodeoffset = fdt_add_subnode(blob, 0, "board_info");
+
+               nodeoffset = fdt_add_subnode(blob, nodeoffset, "ports");
+       }
 
        err = mc_fixup_mac_addrs(blob, MC_FIXUP_DPC);