Commit 02f8aa9f authored by Darren Powell's avatar Darren Powell Committed by Alex Deucher
Browse files

drm/amd/pm: Fix incorrect power limit readback in smu11 if POWER_SOURCE_DC



 when smu->adev->pm.ac_power == 0, message parameter with bit 16 set is saved
 to smu->current_power_limit.

Fixes: 0cb4c621 ("drm/amd/pm: correct power limit setting for SMU V11)"

Signed-off-by: default avatarDarren Powell <darren.powell@amd.com>
Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2d1ac1cb
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -984,6 +984,7 @@ int smu_v11_0_set_power_limit(struct smu_context *smu,
{
	int power_src;
	int ret = 0;
	uint32_t limit_param;

	if (limit_type != SMU_DEFAULT_PPT_LIMIT)
		return -EINVAL;
@@ -1006,10 +1007,10 @@ int smu_v11_0_set_power_limit(struct smu_context *smu,
	 * BIT 16-23: PowerSource
	 * BIT 0-15: PowerLimit
	 */
	limit &= 0xFFFF;
	limit |= 0 << 24;
	limit |= (power_src) << 16;
	ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetPptLimit, limit, NULL);
	limit_param  = (limit & 0xFFFF);
	limit_param |= 0 << 24;
	limit_param |= (power_src) << 16;
	ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetPptLimit, limit_param, NULL);
	if (ret) {
		dev_err(smu->adev->dev, "[%s] Set power limit Failed!\n", __func__);
		return ret;