]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
soc/tegra: fuse: speedo-tegra210: Update speedo IDs
authorAaron Kling <webgeek1234@gmail.com>
Tue, 23 Sep 2025 16:58:05 +0000 (11:58 -0500)
committerThierry Reding <treding@nvidia.com>
Fri, 14 Nov 2025 16:17:33 +0000 (17:17 +0100)
Existing code only sets CPU and GPU speedo IDs 0 and 1. The CPU DVFS
code supports 11 IDs and nouveau supports 5. This aligns with what the
downstream vendor kernel supports. Align SKUs with the downstream list.

The Tegra210 CVB tables were added in the first referenced fixes commit.
Since then, all Tegra210 SoCs have tried to scale to 1.9 GHz, when the
supported devkits are only supposed to scale to 1.5 or 1.7 GHZ.
Overclocking should not be the default state.

Fixes: 2b2dbc2f94e5 ("clk: tegra: dfll: add CVB tables for Tegra210")
Fixes: 579db6e5d9b8 ("arm64: tegra: Enable DFLL support on Jetson Nano")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/fuse/speedo-tegra210.c

index 695d0b7f9a8abe53c497155603147420cda40b63..a8cc3632977230fbfda0f8c3bfa7b7b25c2378fe 100644 (file)
@@ -65,27 +65,51 @@ static void __init rev_sku_to_speedo_ids(struct tegra_sku_info *sku_info,
        sku_info->gpu_speedo_id = 0;
        *threshold = THRESHOLD_INDEX_0;
 
-       switch (sku) {
-       case 0x00: /* Engineering SKU */
-       case 0x01: /* Engineering SKU */
-       case 0x07:
-       case 0x17:
-       case 0x27:
-               if (speedo_rev >= 2)
+       if (sku_info->revision >= TEGRA_REVISION_A02) {
+               switch (sku) {
+               case 0x00: /* Engineering SKU */
+               case 0x01: /* Engineering SKU */
+               case 0x13:
+                       sku_info->cpu_speedo_id = 5;
+                       sku_info->gpu_speedo_id = 2;
+                       break;
+
+               case 0x07:
+               case 0x17:
+               case 0x1F:
+                       sku_info->cpu_speedo_id = 7;
+                       sku_info->gpu_speedo_id = 2;
+                       break;
+
+               case 0x27:
+                       sku_info->cpu_speedo_id = 1;
+                       sku_info->gpu_speedo_id = 2;
+                       break;
+
+               case 0x83:
+                       sku_info->cpu_speedo_id = 3;
+                       sku_info->gpu_speedo_id = 3;
+                       break;
+
+               case 0x87:
+                       sku_info->cpu_speedo_id = 2;
                        sku_info->gpu_speedo_id = 1;
-               break;
-
-       case 0x13:
-               if (speedo_rev >= 2)
-                       sku_info->gpu_speedo_id = 1;
-
-               sku_info->cpu_speedo_id = 1;
-               break;
-
-       default:
+                       break;
+
+               case 0x8F:
+                       sku_info->cpu_speedo_id = 9;
+                       sku_info->gpu_speedo_id = 2;
+                       break;
+
+               default:
+                       pr_err("Tegra210: unknown revision 2 or newer SKU %#04x\n", sku);
+                       /* Using the default for the error case */
+                       break;
+               }
+       } else if (sku == 0x00 || sku == 0x01 || sku == 0x07 || sku == 0x13 || sku == 0x17) {
+               sku_info->gpu_speedo_id = 1;
+       } else {
                pr_err("Tegra210: unknown SKU %#04x\n", sku);
-               /* Using the default for the error case */
-               break;
        }
 }