summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Fan <[email protected]>2022-04-07 15:55:54 +0800
committerStefano Babic <[email protected]>2022-04-12 19:10:44 +0200
commit8325ef3d770b633573032f6e3211fe49b03f5cc9 (patch)
treed2f0fd749580a1b4175e843a0a739a0ad09be56e
parent35bb60787b882a2727b7dae086d72d7ff41dde26 (diff)
imx: imx8m: soc: runtime drop extcon property from usbotg node
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 <[email protected]> Signed-off-by: Peng Fan <[email protected]>
-rw-r--r--arch/arm/mach-imx/imx8m/soc.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 1f484e1cb27..d47638e8a91 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -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);