-
Type:
Bug
-
Resolution: Fixed
-
Priority:
High
-
Linux Core SDK
-
LCPD-44075
-
11.00
-
-
am62xx_sk-fs
We have had a customer trying to use mainline/upstream linux on T grade and S grade AM62x SoCs.
They were able to boot with 1.25GHz on T grade, while not able to boot with 1GHz on S grade (which should have booted without issues).
Both the upstream patch and this patch should have been pushed together, but since only half patch is up-streamed, it results in customer not being able to boot S grade AM62x SoC using mainline Linux.
As per customer there has been a recent addition of "fixup_a53_cpu_freq_by_speed_grade" function call which causes this issue. Without this they were able to boot earlier.
Relevant E2E thread: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1518619/am623-fixup-a53-cpu-frequency-by-speed-grade-problem
Temp WA:
diff --git a/arch/arm/mach-k3/am62x/am625_fdt.c b/arch/arm/mach-k3/am62x/am625_fdt.c
index 72de20735b..6cc753350b 100644
— a/arch/arm/mach-k3/am62x/am625_fdt.c
+++ b/arch/arm/mach-k3/am62x/am625_fdt.c
@@ -110,6 +110,26 @@ static void fdt_fixup_thermal_cooling_device_cpus_am625(void *blob, int core_nr)
}
}
+static void fdt_fixup_cpu_freq_nodes_am625(void *blob, int max_freq)
+{
+ if (max_freq >= 1250000000)
+ return;
+
+ if (max_freq <= 1000000000)
+
+ if (max_freq <= 800000000)
+ fdt_del_node_path(blob, "/opp-table/opp-1000000000");
+
+ if (max_freq <= 300000000)
+}
+
int ft_system_setup(void *blob, struct bd_info *bd)
{
fdt_fixup_cores_wdt_nodes_am625(blob, k3_get_core_nr());
@@ -117,6 +137,7 @@ int ft_system_setup(void *blob, struct bd_info *bd)
fdt_fixup_pru_node_am625(blob, k3_has_pru());
fdt_fixup_thermal_zone_nodes_am625(blob, k3_get_max_temp());
fdt_fixup_thermal_cooling_device_cpus_am625(blob, k3_get_core_nr());
+ fdt_fixup_cpu_freq_nodes_am625(blob, k3_get_a53_max_frequency());
fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000);
fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000);