diff mbox series

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

Message ID 20220214125525.26954-3-peng.fan@oss.nxp.com
State Superseded
Delegated to: Stefano Babic
Headers show
Series [1/4] imx: imx8mp: detect i.MX8MP UltraLite when get cpu rev | expand

Commit Message

Peng Fan (OSS) Feb. 14, 2022, 12:55 p.m. UTC
From: Peng Fan <peng.fan@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@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/imx8m/soc.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 91ff7eca59..6802b6e478 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -1146,6 +1146,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
@@ -1240,6 +1271,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);