Fixup A53 CPU Frequency by Speed Grade Problem

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: High
    • Linux Core SDK
    • LCPD-44075
    • 11.00
    • Hide
      Upstream
      11.02
      Show
      Upstream 11.02
    • 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)

      { + fdt_del_node_path(blob, "/opp-table/opp-1250000000"); + fdt_del_node_path(blob, "/opp-table/opp-1400000000"); + }

      +
      + if (max_freq <= 800000000)
      + fdt_del_node_path(blob, "/opp-table/opp-1000000000");
      +
      + if (max_freq <= 300000000)

      { + fdt_del_node_path(blob, "/opp-table/opp-800000000"); + fdt_del_node_path(blob, "/opp-table/opp-600000000"); + fdt_del_node_path(blob, "/opp-table/opp-400000000"); + }

      +}
      +
      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);

            Assignee:
            TI User
            Reporter:
            TI User
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Connection: Intermediate to External PROD System
                EXTSYNC-5713 - Fixup A53 CPU Frequency by Speed Gr...
                SYNCHRONIZED
                • Last Sync Date: