]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx: imx8m: soc: runtime drop extcon property from usbotg node
authorPeng Fan <peng.fan@nxp.com>
Thu, 7 Apr 2022 07:55:54 +0000 (15:55 +0800)
committerStefano Babic <sbabic@denx.de>
Tue, 12 Apr 2022 17:10:44 +0000 (19:10 +0200)
The extcon is an decrepted property and not used by upstream Linux and
NXP 5.10 kernel, so we remove it before kicking linux in case it is in
dts. Otherwise distro kernel will not able to have usb function.

Reviewed-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/mach-imx/imx8m/soc.c

index 1f484e1cb27f129b8823a99f0a77ae4b0fd7a552..d47638e8a91a753b7908c0b686d460bc9116962e 100644 (file)
@@ -1152,6 +1152,37 @@ static int disable_cpu_nodes(void *blob, u32 disabled_cores)
        return 0;
 }
 
+#if defined(CONFIG_IMX8MM)
+static int cleanup_nodes_for_efi(void *blob)
+{
+       static const char * const usbotg_path[] = {
+               "/soc@0/bus@32c00000/usb@32e40000",
+               "/soc@0/bus@32c00000/usb@32e50000"
+               };
+       int nodeoff, i, rc;
+
+       for (i = 0; i < ARRAY_SIZE(usbotg_path); i++) {
+               nodeoff = fdt_path_offset(blob, usbotg_path[i]);
+               if (nodeoff < 0)
+                       continue; /* Not found, skip it */
+               debug("Found %s node\n", usbotg_path[i]);
+
+               rc = fdt_delprop(blob, nodeoff, "extcon");
+               if (rc == -FDT_ERR_NOTFOUND)
+                       continue;
+               if (rc) {
+                       printf("Unable to update property %s:%s, err=%s\n",
+                              usbotg_path[i], "extcon", fdt_strerror(rc));
+                       return rc;
+               }
+
+               printf("Remove %s:%s\n", usbotg_path[i], "extcon");
+       }
+
+       return 0;
+}
+#endif
+
 int ft_system_setup(void *blob, struct bd_info *bd)
 {
 #ifdef CONFIG_IMX8MQ
@@ -1246,6 +1277,8 @@ usb_modify_speed:
        else if (is_imx8mms() || is_imx8mmsl())
                disable_cpu_nodes(blob, 3);
 
+       cleanup_nodes_for_efi(blob);
+
 #elif defined(CONFIG_IMX8MN)
        if (is_imx8mnl() || is_imx8mndl() ||  is_imx8mnsl())
                disable_gpu_nodes(blob);