Commit 40bea02f authored by Rex Zhu's avatar Rex Zhu Committed by Alex Deucher
Browse files

drm/amd/pp: Expose the smu support for SDMA PG cntl



SDMA IP can be power up/down via smu message

Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarRex Zhu <Rex.Zhu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c52dcf49
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1196,6 +1196,21 @@ static void pp_dpm_powergate_acp(void *handle, bool gate)
	hwmgr->hwmgr_func->powergate_acp(hwmgr, gate);
}

static void pp_dpm_powergate_sdma(void *handle, bool gate)
{
	struct pp_hwmgr *hwmgr = handle;

	if (!hwmgr)
		return;

	if (hwmgr->hwmgr_func->powergate_sdma == NULL) {
		pr_info("%s was not implemented.\n", __func__);
		return;
	}

	hwmgr->hwmgr_func->powergate_sdma(hwmgr, gate);
}

static int pp_set_powergating_by_smu(void *handle,
				uint32_t block_type, bool gate)
{
@@ -1218,6 +1233,9 @@ static int pp_set_powergating_by_smu(void *handle,
	case AMD_IP_BLOCK_TYPE_ACP:
		pp_dpm_powergate_acp(handle, gate);
		break;
	case AMD_IP_BLOCK_TYPE_SDMA:
		pp_dpm_powergate_sdma(handle, gate);
		break;
	default:
		break;
	}
+8 −0
Original line number Diff line number Diff line
@@ -1153,6 +1153,14 @@ static int smu10_powergate_mmhub(struct pp_hwmgr *hwmgr)
	return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerGateMmHub);
}

static int smu10_powergate_sdma(struct pp_hwmgr *hwmgr, bool gate)
{
	if (gate)
		return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerDownSdma);
	else
		return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerUpSdma);
}

static void smu10_powergate_vcn(struct pp_hwmgr *hwmgr, bool bgate)
{
	if (bgate) {
+1 −0
Original line number Diff line number Diff line
@@ -328,6 +328,7 @@ struct pp_hwmgr_func {
	int (*set_power_limit)(struct pp_hwmgr *hwmgr, uint32_t n);
	int (*powergate_mmhub)(struct pp_hwmgr *hwmgr);
	int (*smus_notify_pwe)(struct pp_hwmgr *hwmgr);
	int (*powergate_sdma)(struct pp_hwmgr *hwmgr, bool bgate);
	int (*enable_mgpu_fan_boost)(struct pp_hwmgr *hwmgr);
};