[PATCH 4/6] imx: imx8m: soc: runtime drop extcon property from usbotg node

Peng Fan (OSS) peng.fan at oss.nxp.com
Thu Apr 7 09:55:54 CEST 2022


From: Peng Fan <peng.fan at nxp.com>

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 at nxp.com>
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 arch/arm/mach-imx/imx8m/soc.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 0ab55765c7c..e76d75269d7 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -1148,6 +1148,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 at 0/bus at 32c00000/usb at 32e40000",
+		"/soc at 0/bus at 32c00000/usb at 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
@@ -1242,6 +1273,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);
-- 
2.35.1



More information about the U-Boot mailing list