]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/amd/pm: Allow setting soft max frequency in VF
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 2 Apr 2024 03:37:54 +0000 (09:07 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Apr 2024 02:15:16 +0000 (22:15 -0400)
Setting soft max frequency for MCLK is allowed in 1VF mode in SMUv13.0.6
SOCs.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c

index ade8ec7a44b9b7a32cdd5fcca2fae5f2597e5088..16179e1708744b69dfb62a6b476f149faae8b6c2 100644 (file)
@@ -138,7 +138,7 @@ static const struct cmn2asic_msg_mapping smu_v13_0_6_message_map[SMU_MSG_MAX_COU
        MSG_MAP(SetToolsDramAddrHigh,                PPSMC_MSG_SetToolsDramAddrHigh,            0),
        MSG_MAP(SetToolsDramAddrLow,                 PPSMC_MSG_SetToolsDramAddrLow,             0),
        MSG_MAP(SetSoftMinByFreq,                    PPSMC_MSG_SetSoftMinByFreq,                0),
-       MSG_MAP(SetSoftMaxByFreq,                    PPSMC_MSG_SetSoftMaxByFreq,                0),
+       MSG_MAP(SetSoftMaxByFreq,                    PPSMC_MSG_SetSoftMaxByFreq,                1),
        MSG_MAP(GetMinDpmFreq,                       PPSMC_MSG_GetMinDpmFreq,                   1),
        MSG_MAP(GetMaxDpmFreq,                       PPSMC_MSG_GetMaxDpmFreq,                   1),
        MSG_MAP(GetDpmFreqByIndex,                   PPSMC_MSG_GetDpmFreqByIndex,               1),
@@ -1676,6 +1676,11 @@ static int smu_v13_0_6_set_soft_freq_limited_range(struct smu_context *smu,
                if (clk_type == SMU_UCLK) {
                        if (max == pstate_table->uclk_pstate.curr.max)
                                return 0;
+                       /* For VF, only allowed in FW versions 85.102 or greater */
+                       if (amdgpu_sriov_vf(adev) &&
+                           ((smu->smc_fw_version < 0x556600) ||
+                            (adev->flags & AMD_IS_APU)))
+                               return -EOPNOTSUPP;
                        /* Only max clock limiting is allowed for UCLK */
                        ret = smu_v13_0_set_soft_freq_limited_range(
                                smu, SMU_UCLK, 0, max);