drm/amd/pm: reverse mclk and fclk clocks levels for renoir
authorjsg <jsg@openbsd.org>
Mon, 19 Jun 2023 00:49:02 +0000 (00:49 +0000)
committerjsg <jsg@openbsd.org>
Mon, 19 Jun 2023 00:49:02 +0000 (00:49 +0000)
From Tim Huang
8db2ea7b80d6539c2c3d4e2ca96ca1bc56b982d9 in linux-6.1.y/6.1.33
55e02c14f9b5fd973ba32a16a715baa42617f9c6 in mainline linux

sys/dev/pci/drm/amd/pm/swsmu/smu12/renoir_ppt.c

index 5cdc071..8a8ba25 100644 (file)
@@ -494,7 +494,7 @@ static int renoir_set_fine_grain_gfx_freq_parameters(struct smu_context *smu)
 static int renoir_print_clk_levels(struct smu_context *smu,
                        enum smu_clk_type clk_type, char *buf)
 {
-       int i, size = 0, ret = 0;
+       int i, idx, size = 0, ret = 0;
        uint32_t cur_value = 0, value = 0, count = 0, min = 0, max = 0;
        SmuMetrics_t metrics;
        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
@@ -594,7 +594,8 @@ static int renoir_print_clk_levels(struct smu_context *smu,
        case SMU_VCLK:
        case SMU_DCLK:
                for (i = 0; i < count; i++) {
-                       ret = renoir_get_dpm_clk_limited(smu, clk_type, i, &value);
+                       idx = (clk_type == SMU_FCLK || clk_type == SMU_MCLK) ? (count - i - 1) : i;
+                       ret = renoir_get_dpm_clk_limited(smu, clk_type, idx, &value);
                        if (ret)
                                return ret;
                        if (!value)