diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3146-drm-amd-powerplay-add-smu-message-name-support.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3146-drm-amd-powerplay-add-smu-message-name-support.patch | 313 |
1 files changed, 313 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3146-drm-amd-powerplay-add-smu-message-name-support.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3146-drm-amd-powerplay-add-smu-message-name-support.patch new file mode 100644 index 00000000..4efa6ae3 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3146-drm-amd-powerplay-add-smu-message-name-support.patch @@ -0,0 +1,313 @@ +From 349fb584033fb9b4321e45287749342229233713 Mon Sep 17 00:00:00 2001 +From: Kevin Wang <kevin1.wang@amd.com> +Date: Thu, 25 Jul 2019 10:32:48 +0800 +Subject: [PATCH 3146/4256] drm/amd/powerplay: add smu message name support + +add smu_get_message_name support in smu. + +Signed-off-by: Kevin Wang <kevin1.wang@amd.com> +Reviewed-by: Kenneth Feng <kenneth.feng@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 13 ++ + .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 1 + + drivers/gpu/drm/amd/powerplay/inc/smu_types.h | 205 +++++++++--------- + drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 12 +- + 4 files changed, 124 insertions(+), 107 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +index b78eeeab87da..ba403b5028eb 100644 +--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c ++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +@@ -30,6 +30,19 @@ + #include "atom.h" + #include "amd_pcie.h" + ++#undef __SMU_DUMMY_MAP ++#define __SMU_DUMMY_MAP(type) #type ++static const char* __smu_message_names[] = { ++ SMU_MESSAGE_TYPES ++}; ++ ++const char *smu_get_message_name(struct smu_context *smu, enum smu_message_type type) ++{ ++ if (type < 0 || type > SMU_MSG_MAX_COUNT) ++ return "unknow smu message"; ++ return __smu_message_names[type]; ++} ++ + int smu_get_smc_version(struct smu_context *smu, uint32_t *if_version, uint32_t *smu_version) + { + int ret = 0; +diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +index 397040a4d1b4..035f857922ec 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +@@ -804,5 +804,6 @@ enum amd_dpm_forced_level smu_get_performance_level(struct smu_context *smu); + int smu_force_performance_level(struct smu_context *smu, enum amd_dpm_forced_level level); + int smu_set_display_count(struct smu_context *smu, uint32_t count); + bool smu_clk_dpm_is_enabled(struct smu_context *smu, enum smu_clk_type clk_type); ++const char *smu_get_message_name(struct smu_context *smu, enum smu_message_type type); + + #endif +diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_types.h b/drivers/gpu/drm/amd/powerplay/inc/smu_types.h +index 29d14c162417..d42e3424e704 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/smu_types.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/smu_types.h +@@ -23,108 +23,112 @@ + #ifndef __SMU_TYPES_H__ + #define __SMU_TYPES_H__ + ++#define SMU_MESSAGE_TYPES \ ++ __SMU_DUMMY_MAP(TestMessage), \ ++ __SMU_DUMMY_MAP(GetSmuVersion), \ ++ __SMU_DUMMY_MAP(GetDriverIfVersion), \ ++ __SMU_DUMMY_MAP(SetAllowedFeaturesMaskLow), \ ++ __SMU_DUMMY_MAP(SetAllowedFeaturesMaskHigh), \ ++ __SMU_DUMMY_MAP(EnableAllSmuFeatures), \ ++ __SMU_DUMMY_MAP(DisableAllSmuFeatures), \ ++ __SMU_DUMMY_MAP(EnableSmuFeaturesLow), \ ++ __SMU_DUMMY_MAP(EnableSmuFeaturesHigh), \ ++ __SMU_DUMMY_MAP(DisableSmuFeaturesLow), \ ++ __SMU_DUMMY_MAP(DisableSmuFeaturesHigh), \ ++ __SMU_DUMMY_MAP(GetEnabledSmuFeaturesLow), \ ++ __SMU_DUMMY_MAP(GetEnabledSmuFeaturesHigh), \ ++ __SMU_DUMMY_MAP(SetWorkloadMask), \ ++ __SMU_DUMMY_MAP(SetPptLimit), \ ++ __SMU_DUMMY_MAP(SetDriverDramAddrHigh), \ ++ __SMU_DUMMY_MAP(SetDriverDramAddrLow), \ ++ __SMU_DUMMY_MAP(SetToolsDramAddrHigh), \ ++ __SMU_DUMMY_MAP(SetToolsDramAddrLow), \ ++ __SMU_DUMMY_MAP(TransferTableSmu2Dram), \ ++ __SMU_DUMMY_MAP(TransferTableDram2Smu), \ ++ __SMU_DUMMY_MAP(UseDefaultPPTable), \ ++ __SMU_DUMMY_MAP(UseBackupPPTable), \ ++ __SMU_DUMMY_MAP(RunBtc), \ ++ __SMU_DUMMY_MAP(RequestI2CBus), \ ++ __SMU_DUMMY_MAP(ReleaseI2CBus), \ ++ __SMU_DUMMY_MAP(SetFloorSocVoltage), \ ++ __SMU_DUMMY_MAP(SoftReset), \ ++ __SMU_DUMMY_MAP(StartBacoMonitor), \ ++ __SMU_DUMMY_MAP(CancelBacoMonitor), \ ++ __SMU_DUMMY_MAP(EnterBaco), \ ++ __SMU_DUMMY_MAP(SetSoftMinByFreq), \ ++ __SMU_DUMMY_MAP(SetSoftMaxByFreq), \ ++ __SMU_DUMMY_MAP(SetHardMinByFreq), \ ++ __SMU_DUMMY_MAP(SetHardMaxByFreq), \ ++ __SMU_DUMMY_MAP(GetMinDpmFreq), \ ++ __SMU_DUMMY_MAP(GetMaxDpmFreq), \ ++ __SMU_DUMMY_MAP(GetDpmFreqByIndex), \ ++ __SMU_DUMMY_MAP(GetDpmClockFreq), \ ++ __SMU_DUMMY_MAP(GetSsVoltageByDpm), \ ++ __SMU_DUMMY_MAP(SetMemoryChannelConfig), \ ++ __SMU_DUMMY_MAP(SetGeminiMode), \ ++ __SMU_DUMMY_MAP(SetGeminiApertureHigh), \ ++ __SMU_DUMMY_MAP(SetGeminiApertureLow), \ ++ __SMU_DUMMY_MAP(SetMinLinkDpmByIndex), \ ++ __SMU_DUMMY_MAP(OverridePcieParameters), \ ++ __SMU_DUMMY_MAP(OverDriveSetPercentage), \ ++ __SMU_DUMMY_MAP(SetMinDeepSleepDcefclk), \ ++ __SMU_DUMMY_MAP(ReenableAcDcInterrupt), \ ++ __SMU_DUMMY_MAP(NotifyPowerSource), \ ++ __SMU_DUMMY_MAP(SetUclkFastSwitch), \ ++ __SMU_DUMMY_MAP(SetUclkDownHyst), \ ++ __SMU_DUMMY_MAP(GfxDeviceDriverReset), \ ++ __SMU_DUMMY_MAP(GetCurrentRpm), \ ++ __SMU_DUMMY_MAP(SetVideoFps), \ ++ __SMU_DUMMY_MAP(SetTjMax), \ ++ __SMU_DUMMY_MAP(SetFanTemperatureTarget), \ ++ __SMU_DUMMY_MAP(PrepareMp1ForUnload), \ ++ __SMU_DUMMY_MAP(DramLogSetDramAddrHigh), \ ++ __SMU_DUMMY_MAP(DramLogSetDramAddrLow), \ ++ __SMU_DUMMY_MAP(DramLogSetDramSize), \ ++ __SMU_DUMMY_MAP(SetFanMaxRpm), \ ++ __SMU_DUMMY_MAP(SetFanMinPwm), \ ++ __SMU_DUMMY_MAP(ConfigureGfxDidt), \ ++ __SMU_DUMMY_MAP(NumOfDisplays), \ ++ __SMU_DUMMY_MAP(RemoveMargins), \ ++ __SMU_DUMMY_MAP(ReadSerialNumTop32), \ ++ __SMU_DUMMY_MAP(ReadSerialNumBottom32), \ ++ __SMU_DUMMY_MAP(SetSystemVirtualDramAddrHigh), \ ++ __SMU_DUMMY_MAP(SetSystemVirtualDramAddrLow), \ ++ __SMU_DUMMY_MAP(WaflTest), \ ++ __SMU_DUMMY_MAP(SetFclkGfxClkRatio), \ ++ __SMU_DUMMY_MAP(AllowGfxOff), \ ++ __SMU_DUMMY_MAP(DisallowGfxOff), \ ++ __SMU_DUMMY_MAP(GetPptLimit), \ ++ __SMU_DUMMY_MAP(GetDcModeMaxDpmFreq), \ ++ __SMU_DUMMY_MAP(GetDebugData), \ ++ __SMU_DUMMY_MAP(SetXgmiMode), \ ++ __SMU_DUMMY_MAP(RunAfllBtc), \ ++ __SMU_DUMMY_MAP(ExitBaco), \ ++ __SMU_DUMMY_MAP(PrepareMp1ForReset), \ ++ __SMU_DUMMY_MAP(PrepareMp1ForShutdown), \ ++ __SMU_DUMMY_MAP(SetMGpuFanBoostLimitRpm), \ ++ __SMU_DUMMY_MAP(GetAVFSVoltageByDpm), \ ++ __SMU_DUMMY_MAP(PowerUpVcn), \ ++ __SMU_DUMMY_MAP(PowerDownVcn), \ ++ __SMU_DUMMY_MAP(PowerUpJpeg), \ ++ __SMU_DUMMY_MAP(PowerDownJpeg), \ ++ __SMU_DUMMY_MAP(BacoAudioD3PME), \ ++ __SMU_DUMMY_MAP(ArmD3), \ ++ __SMU_DUMMY_MAP(RunGfxDcBtc), \ ++ __SMU_DUMMY_MAP(RunSocDcBtc), \ ++ __SMU_DUMMY_MAP(SetMemoryChannelEnable), \ ++ __SMU_DUMMY_MAP(SetDfSwitchType), \ ++ __SMU_DUMMY_MAP(GetVoltageByDpm), \ ++ __SMU_DUMMY_MAP(GetVoltageByDpmOverdrive), \ ++ __SMU_DUMMY_MAP(PowerUpVcn0), \ ++ __SMU_DUMMY_MAP(PowerDownVcn01), \ ++ __SMU_DUMMY_MAP(PowerUpVcn1), \ ++ __SMU_DUMMY_MAP(PowerDownVcn1), \ + ++#undef __SMU_DUMMY_MAP ++#define __SMU_DUMMY_MAP(type) SMU_MSG_##type + enum smu_message_type { +- SMU_MSG_TestMessage = 0, +- SMU_MSG_GetSmuVersion, +- SMU_MSG_GetDriverIfVersion, +- SMU_MSG_SetAllowedFeaturesMaskLow, +- SMU_MSG_SetAllowedFeaturesMaskHigh, +- SMU_MSG_EnableAllSmuFeatures, +- SMU_MSG_DisableAllSmuFeatures, +- SMU_MSG_EnableSmuFeaturesLow, +- SMU_MSG_EnableSmuFeaturesHigh, +- SMU_MSG_DisableSmuFeaturesLow, +- SMU_MSG_DisableSmuFeaturesHigh, +- SMU_MSG_GetEnabledSmuFeaturesLow, +- SMU_MSG_GetEnabledSmuFeaturesHigh, +- SMU_MSG_SetWorkloadMask, +- SMU_MSG_SetPptLimit, +- SMU_MSG_SetDriverDramAddrHigh, +- SMU_MSG_SetDriverDramAddrLow, +- SMU_MSG_SetToolsDramAddrHigh, +- SMU_MSG_SetToolsDramAddrLow, +- SMU_MSG_TransferTableSmu2Dram, +- SMU_MSG_TransferTableDram2Smu, +- SMU_MSG_UseDefaultPPTable, +- SMU_MSG_UseBackupPPTable, +- SMU_MSG_RunBtc, +- SMU_MSG_RequestI2CBus, +- SMU_MSG_ReleaseI2CBus, +- SMU_MSG_SetFloorSocVoltage, +- SMU_MSG_SoftReset, +- SMU_MSG_StartBacoMonitor, +- SMU_MSG_CancelBacoMonitor, +- SMU_MSG_EnterBaco, +- SMU_MSG_SetSoftMinByFreq, +- SMU_MSG_SetSoftMaxByFreq, +- SMU_MSG_SetHardMinByFreq, +- SMU_MSG_SetHardMaxByFreq, +- SMU_MSG_GetMinDpmFreq, +- SMU_MSG_GetMaxDpmFreq, +- SMU_MSG_GetDpmFreqByIndex, +- SMU_MSG_GetDpmClockFreq, +- SMU_MSG_GetSsVoltageByDpm, +- SMU_MSG_SetMemoryChannelConfig, +- SMU_MSG_SetGeminiMode, +- SMU_MSG_SetGeminiApertureHigh, +- SMU_MSG_SetGeminiApertureLow, +- SMU_MSG_SetMinLinkDpmByIndex, +- SMU_MSG_OverridePcieParameters, +- SMU_MSG_OverDriveSetPercentage, +- SMU_MSG_SetMinDeepSleepDcefclk, +- SMU_MSG_ReenableAcDcInterrupt, +- SMU_MSG_NotifyPowerSource, +- SMU_MSG_SetUclkFastSwitch, +- SMU_MSG_SetUclkDownHyst, +- SMU_MSG_GfxDeviceDriverReset, +- SMU_MSG_GetCurrentRpm, +- SMU_MSG_SetVideoFps, +- SMU_MSG_SetTjMax, +- SMU_MSG_SetFanTemperatureTarget, +- SMU_MSG_PrepareMp1ForUnload, +- SMU_MSG_DramLogSetDramAddrHigh, +- SMU_MSG_DramLogSetDramAddrLow, +- SMU_MSG_DramLogSetDramSize, +- SMU_MSG_SetFanMaxRpm, +- SMU_MSG_SetFanMinPwm, +- SMU_MSG_ConfigureGfxDidt, +- SMU_MSG_NumOfDisplays, +- SMU_MSG_RemoveMargins, +- SMU_MSG_ReadSerialNumTop32, +- SMU_MSG_ReadSerialNumBottom32, +- SMU_MSG_SetSystemVirtualDramAddrHigh, +- SMU_MSG_SetSystemVirtualDramAddrLow, +- SMU_MSG_WaflTest, +- SMU_MSG_SetFclkGfxClkRatio, +- SMU_MSG_AllowGfxOff, +- SMU_MSG_DisallowGfxOff, +- SMU_MSG_GetPptLimit, +- SMU_MSG_GetDcModeMaxDpmFreq, +- SMU_MSG_GetDebugData, +- SMU_MSG_SetXgmiMode, +- SMU_MSG_RunAfllBtc, +- SMU_MSG_ExitBaco, +- SMU_MSG_PrepareMp1ForReset, +- SMU_MSG_PrepareMp1ForShutdown, +- SMU_MSG_SetMGpuFanBoostLimitRpm, +- SMU_MSG_GetAVFSVoltageByDpm, +- SMU_MSG_PowerUpVcn, +- SMU_MSG_PowerDownVcn, +- SMU_MSG_PowerUpJpeg, +- SMU_MSG_PowerDownJpeg, +- SMU_MSG_BacoAudioD3PME, +- SMU_MSG_ArmD3, +- SMU_MSG_RunGfxDcBtc, +- SMU_MSG_RunSocDcBtc, +- SMU_MSG_SetMemoryChannelEnable, +- SMU_MSG_SetDfSwitchType, +- SMU_MSG_GetVoltageByDpm, +- SMU_MSG_GetVoltageByDpmOverdrive, +- SMU_MSG_PowerUpVcn0, +- SMU_MSG_PowerDownVcn01, +- SMU_MSG_PowerUpVcn1, +- SMU_MSG_PowerDownVcn1, ++ SMU_MESSAGE_TYPES + SMU_MSG_MAX_COUNT, + }; + +@@ -207,4 +211,3 @@ enum smu_feature_mask { + }; + + #endif +- +diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +index cee480b39ffc..95a182b20098 100644 +--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c ++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +@@ -102,8 +102,8 @@ static int smu_v11_0_send_msg(struct smu_context *smu, uint16_t msg) + ret = smu_v11_0_wait_for_response(smu); + + if (ret) +- pr_err("Failed to send message 0x%x, response 0x%x\n", index, +- ret); ++ pr_err("failed send message: %10s (%d) response %#x\n", ++ smu_get_message_name(smu, msg), index, ret); + + return ret; + +@@ -123,8 +123,8 @@ smu_v11_0_send_msg_with_param(struct smu_context *smu, uint16_t msg, + + ret = smu_v11_0_wait_for_response(smu); + if (ret) +- pr_err("Failed to send message 0x%x, response 0x%x, param 0x%x\n", +- index, ret, param); ++ pr_err("failed send message: %10s (%d) \tparam: 0x%08x response %#x\n", ++ smu_get_message_name(smu, msg), index, param, ret); + + WREG32_SOC15(MP1, 0, mmMP1_SMN_C2PMSG_90, 0); + +@@ -134,8 +134,8 @@ smu_v11_0_send_msg_with_param(struct smu_context *smu, uint16_t msg, + + ret = smu_v11_0_wait_for_response(smu); + if (ret) +- pr_err("Failed to send message 0x%x, response 0x%x param 0x%x\n", +- index, ret, param); ++ pr_err("failed send message: %10s (%d) \tparam: 0x%08x response %#x\n", ++ smu_get_message_name(smu, msg), index, param, ret); + + return ret; + } +-- +2.17.1 + |