
Hello Peng,
Am Montag, dem 14.02.2022 um 20:55 +0800 schrieb Peng Fan (OSS):
From: Peng Fan peng.fan@nxp.com
Beside the fused modules on iMX8MP Lite, this part has also fused GPU3D/2D, LVDS and MIPI DSI. So we have to disable them for kernel and also disable MIPI DSI in u-boot DTS for splash screen at runtime.
Signed-off-by: Ye Li ye.li@nxp.com Signed-off-by: Peng Fan peng.fan@nxp.com
arch/arm/mach-imx/imx8m/soc.c | 147 ++++++++++++++++++++++++++++++++-- 1 file changed, 142 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach- imx/imx8m/soc.c index e2d21bf6b8..91ff7eca59 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -905,6 +905,90 @@ static int low_drive_gpu_freq(void *blob) } #endif
[...]
+#ifdef CONFIG_OF_BOARD_FIXUP +#ifndef CONFIG_SPL_BUILD +int board_fix_fdt(void *fdt)
I stumbled over this already in the NXP U-Boot. We implemented there on top our own board_fix_fdt() callback on board level. So this caused a conflict. This will be a issue for upstream also when a imx8m* board tries to use it. Is there not any other way to solve this than implementing board callbacks on soc level?
Regards, Teresa
+{
- if (is_imx8mpul()) {
int i = 0;
int nodeoff, ret;
const char *status = "disabled";
static const char * const dsi_nodes[] = {
"/soc@0/bus@32c00000/mipi_dsi@32e60000",
"/soc@0/bus@32c00000/lcd-controller@32e80000",
"/dsi-host"
};
for (i = 0; i < ARRAY_SIZE(dsi_nodes); i++) {
nodeoff = fdt_path_offset(fdt, dsi_nodes[i]);
if (nodeoff > 0) {
+set_status:
ret = fdt_setprop(fdt, nodeoff,
"status", status,
strlen(status) + 1);
if (ret == -FDT_ERR_NOSPACE) {
ret = fdt_increase_size(fdt,
512);
if (!ret)
goto set_status;
}
}
}
- }
- return 0;
+} +#endif +#endif
#if !CONFIG_IS_ENABLED(SYSRESET) void reset_cpu(void) {