mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
drm/amd/pm: correct the gpo control for sienna cichlid
New SMC message was introduced for gpo control on sienna cichlid. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
0cb4c62125
commit
ac7804bb99
|
|
@ -209,6 +209,7 @@
|
|||
__SMU_DUMMY_MAP(SetSoftMinCclk), \
|
||||
__SMU_DUMMY_MAP(SetSoftMaxCclk), \
|
||||
__SMU_DUMMY_MAP(SetGpoFeaturePMask), \
|
||||
__SMU_DUMMY_MAP(DisallowGpo), \
|
||||
|
||||
#undef __SMU_DUMMY_MAP
|
||||
#define __SMU_DUMMY_MAP(type) SMU_MSG_##type
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@
|
|||
#define PPSMC_MSG_SetGpoFeaturePMask 0x45
|
||||
#define PPSMC_MSG_SetSMBUSInterrupt 0x46
|
||||
|
||||
#define PPSMC_Message_Count 0x47
|
||||
#define PPSMC_MSG_DisallowGpo 0x56
|
||||
|
||||
#define PPSMC_Message_Count 0x58
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ static struct cmn2asic_msg_mapping sienna_cichlid_message_map[SMU_MSG_MAX_COUNT]
|
|||
MSG_MAP(Mode1Reset, PPSMC_MSG_Mode1Reset, 0),
|
||||
MSG_MAP(SetMGpuFanBoostLimitRpm, PPSMC_MSG_SetMGpuFanBoostLimitRpm, 0),
|
||||
MSG_MAP(SetGpoFeaturePMask, PPSMC_MSG_SetGpoFeaturePMask, 0),
|
||||
MSG_MAP(DisallowGpo, PPSMC_MSG_DisallowGpo, 0),
|
||||
};
|
||||
|
||||
static struct cmn2asic_mapping sienna_cichlid_clk_map[SMU_CLK_COUNT] = {
|
||||
|
|
@ -2653,19 +2654,40 @@ static int sienna_cichlid_enable_mgpu_fan_boost(struct smu_context *smu)
|
|||
static int sienna_cichlid_gpo_control(struct smu_context *smu,
|
||||
bool enablement)
|
||||
{
|
||||
uint32_t smu_version;
|
||||
int ret = 0;
|
||||
|
||||
|
||||
if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DPM_GFX_GPO_BIT)) {
|
||||
if (enablement)
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_SetGpoFeaturePMask,
|
||||
GFX_GPO_PACE_MASK | GFX_GPO_DEM_MASK,
|
||||
NULL);
|
||||
else
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_SetGpoFeaturePMask,
|
||||
0,
|
||||
NULL);
|
||||
ret = smu_cmn_get_smc_version(smu, NULL, &smu_version);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (enablement) {
|
||||
if (smu_version < 0x003a2500) {
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_SetGpoFeaturePMask,
|
||||
GFX_GPO_PACE_MASK | GFX_GPO_DEM_MASK,
|
||||
NULL);
|
||||
} else {
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_DisallowGpo,
|
||||
0,
|
||||
NULL);
|
||||
}
|
||||
} else {
|
||||
if (smu_version < 0x003a2500) {
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_SetGpoFeaturePMask,
|
||||
0,
|
||||
NULL);
|
||||
} else {
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_DisallowGpo,
|
||||
1,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user