Commit 16704901 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amd/pm: Report pldm version and board voltage



Add support to report PLDM firmware version and board voltage on SMU
v13.0.12 SOCs.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarAsad Kamal <asad.kamal@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f6b7ce39
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -189,6 +189,7 @@ int smu_v13_0_12_get_max_metrics_size(void)

int smu_v13_0_12_setup_driver_pptable(struct smu_context *smu)
{
	struct smu_13_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
	struct smu_table_context *smu_table = &smu->smu_table;
	StaticMetricsTable_t *static_metrics = (StaticMetricsTable_t *)smu_table->metrics_table;
	struct PPTable_t *pptable =
@@ -237,6 +238,17 @@ int smu_v13_0_12_setup_driver_pptable(struct smu_context *smu)
		if (ret)
			return ret;

		if (smu_v13_0_6_cap_supported(smu, SMU_CAP(BOARD_VOLTAGE))) {
			if (!static_metrics->InputTelemetryVoltageInmV) {
				dev_warn(smu->adev->dev, "Invalid board voltage %d\n",
						static_metrics->InputTelemetryVoltageInmV);
			}
			dpm_context->board_volt = static_metrics->InputTelemetryVoltageInmV;
		}
		if (smu_v13_0_6_cap_supported(smu, SMU_CAP(PLDM_VERSION)) &&
			static_metrics->pldmVersion[0] != 0xFFFFFFFF)
			smu->adev->firmware.pldm_version =
				static_metrics->pldmVersion[0];
		pptable->Init = true;
	}

+5 −0
Original line number Diff line number Diff line
@@ -345,6 +345,11 @@ static void smu_v13_0_12_init_caps(struct smu_context *smu)

	if (fw_ver >= 0x00562500)
		smu_v13_0_6_cap_set(smu, SMU_CAP(HST_LIMIT_METRICS));

	if (fw_ver >= 0x04560100) {
		smu_v13_0_6_cap_set(smu, SMU_CAP(BOARD_VOLTAGE));
		smu_v13_0_6_cap_set(smu, SMU_CAP(PLDM_VERSION));
	}
}

static void smu_v13_0_6_init_caps(struct smu_context *smu)