[U-Boot] [v2] armv8: ls1028a: disable multimedia feature when not supported

From: Yuantian Tang andy.tang@nxp.com
Ls1028a has 4 personalities: Ls1028a, Ls1027a, Ls1017a and Ls1018a. Both Ls1027a and Ls1017a personalities are lower functionality version which doesn't support the multimedia subsystems, like LCD, GPU.
To disable multimedia feature on non-multimedia version, set the status property to disabled in dts nodes.
Signed-off-by: Tang Yuantian andy.tang@nxp.com Signed-off-by: Wen He wen.he_1@nxp.com --- change in v2: - use LS instead of the ls in commit message.
arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c index 19917b207a..ef0e2095a6 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c @@ -401,6 +401,24 @@ void fdt_fixup_remove_jr(void *blob) } #endif
+static void fdt_disable_multimedia(void *blob, unsigned int svr) +{ + int off; + + if (!((svr >> 10) & 0x1)) + return; + + /* Disable eDP/LCD node */ + off = fdt_node_offset_by_compatible(blob, -1, "arm,mali-dp500"); + if (off != -FDT_ERR_NOTFOUND) + fdt_status_disabled(blob, off); + + /* Disable GPU node */ + off = fdt_node_offset_by_compatible(blob, -1, "fsl,ls1028a-gpu"); + if (off != -FDT_ERR_NOTFOUND) + fdt_status_disabled(blob, off); +} + void ft_cpu_setup(void *blob, bd_t *bd) { struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); @@ -462,4 +480,7 @@ void ft_cpu_setup(void *blob, bd_t *bd) #ifdef CONFIG_HAS_FEATURE_ENHANCED_MSI fdt_fixup_msi(blob); #endif +#ifdef CONFIG_ARCH_LS1028A + fdt_disable_multimedia(blob, svr); +#endif }

-----Original Message----- From: U-Boot u-boot-bounces@lists.denx.de On Behalf Of Wen He Sent: Thursday, November 14, 2019 12:39 PM To: u-boot@lists.denx.de Cc: Andy Tang andy.tang@nxp.com Subject: [U-Boot] [v2] armv8: ls1028a: disable multimedia feature when not supported
From: Yuantian Tang andy.tang@nxp.com
Ls1028a has 4 personalities: Ls1028a, Ls1027a, Ls1017a and Ls1018a. Both Ls1027a and Ls1017a personalities are lower functionality version which doesn't support the multimedia subsystems, like LCD, GPU.
Please use LS
To disable multimedia feature on non-multimedia version, set the status property to disabled in dts nodes.
Signed-off-by: Tang Yuantian andy.tang@nxp.com Signed-off-by: Wen He wen.he_1@nxp.com
change in v2: - use LS instead of the ls in commit message.
arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c index 19917b207a..ef0e2095a6 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c @@ -401,6 +401,24 @@ void fdt_fixup_remove_jr(void *blob) } #endif
+static void fdt_disable_multimedia(void *blob, unsigned int svr) {
- int off;
- if (!((svr >> 10) & 0x1))
Don't use magic numbers
return;
- /* Disable eDP/LCD node */
- off = fdt_node_offset_by_compatible(blob, -1, "arm,mali-dp500");
- if (off != -FDT_ERR_NOTFOUND)
fdt_status_disabled(blob, off);
- /* Disable GPU node */
- off = fdt_node_offset_by_compatible(blob, -1, "fsl,ls1028a-gpu");
- if (off != -FDT_ERR_NOTFOUND)
fdt_status_disabled(blob, off);
+}
void ft_cpu_setup(void *blob, bd_t *bd) { struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); @@ -462,4 +480,7 @@ void ft_cpu_setup(void *blob, bd_t *bd) #ifdef CONFIG_HAS_FEATURE_ENHANCED_MSI fdt_fixup_msi(blob); #endif +#ifdef CONFIG_ARCH_LS1028A
- fdt_disable_multimedia(blob, svr);
+#endif } -- 2.17.1
-priyankajain
participants (2)
-
Priyanka Jain
-
Wen He