Commit 594a774d authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

drm/amd: Allow printing Renoir OD SCLK levels without setting dpm to manual



Several other ASICs allow printing OD SCLK levels without setting DPM
control to manual.  When OD is disabled it will show the range the
hardware supports. When OD is enabled it will show what values have been
programmed. Adjust Renoir to work the same.

Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reported-by: default avatarVicki Pfau <vi@endrift.com>
Link: https://lore.kernel.org/r/20250609031227.479079-2-superm1@kernel.org


Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c29521b5
Loading
Loading
Loading
Loading
+16 −21
Original line number Diff line number Diff line
@@ -497,7 +497,6 @@ static int renoir_print_clk_levels(struct smu_context *smu,
	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);
	bool cur_value_match_level = false;

	memset(&metrics, 0, sizeof(metrics));
@@ -510,7 +509,6 @@ static int renoir_print_clk_levels(struct smu_context *smu,

	switch (clk_type) {
	case SMU_OD_RANGE:
		if (smu_dpm_ctx->dpm_level == AMD_DPM_FORCED_LEVEL_MANUAL) {
		ret = smu_cmn_send_smc_msg_with_param(smu,
					SMU_MSG_GetMinGfxclkFrequency,
					0, &min);
@@ -522,16 +520,13 @@ static int renoir_print_clk_levels(struct smu_context *smu,
		if (ret)
			return ret;
		size += sysfs_emit_at(buf, size, "OD_RANGE\nSCLK: %10uMhz %10uMhz\n", min, max);
		}
		break;
	case SMU_OD_SCLK:
		if (smu_dpm_ctx->dpm_level == AMD_DPM_FORCED_LEVEL_MANUAL) {
		min = (smu->gfx_actual_hard_min_freq > 0) ? smu->gfx_actual_hard_min_freq : smu->gfx_default_hard_min_freq;
		max = (smu->gfx_actual_soft_max_freq > 0) ? smu->gfx_actual_soft_max_freq : smu->gfx_default_soft_max_freq;
		size += sysfs_emit_at(buf, size, "OD_SCLK\n");
		size += sysfs_emit_at(buf, size, "0:%10uMhz\n", min);
		size += sysfs_emit_at(buf, size, "1:%10uMhz\n", max);
		}
		break;
	case SMU_GFXCLK:
	case SMU_SCLK: