Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/powerplay: add Powergate JPEG for Renoir

Similar to SDMA, VCN etc.

v2: add argument to both PowerUpJpeg and PowerDownJpeg messages

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Leo Liu and committed by
Alex Deucher
27f7ff32 43717ff6

+18
+2
drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
··· 1229 1229 if (adev->flags & AMD_IS_APU) { 1230 1230 smu_powergate_sdma(&adev->smu, false); 1231 1231 smu_powergate_vcn(&adev->smu, false); 1232 + smu_powergate_jpeg(&adev->smu, false); 1232 1233 smu_set_gfx_cgpg(&adev->smu, true); 1233 1234 } 1234 1235 ··· 1288 1287 if (adev->flags & AMD_IS_APU) { 1289 1288 smu_powergate_sdma(&adev->smu, true); 1290 1289 smu_powergate_vcn(&adev->smu, true); 1290 + smu_powergate_jpeg(&adev->smu, true); 1291 1291 } 1292 1292 1293 1293 ret = smu_stop_thermal_control(smu);
+2
drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
··· 58 58 59 59 int smu_v12_0_powergate_vcn(struct smu_context *smu, bool gate); 60 60 61 + int smu_v12_0_powergate_jpeg(struct smu_context *smu, bool gate); 62 + 61 63 int smu_v12_0_set_gfx_cgpg(struct smu_context *smu, bool enable); 62 64 63 65 uint32_t smu_v12_0_get_gfxoff_status(struct smu_context *smu);
+1
drivers/gpu/drm/amd/powerplay/renoir_ppt.c
··· 697 697 .check_fw_version = smu_v12_0_check_fw_version, 698 698 .powergate_sdma = smu_v12_0_powergate_sdma, 699 699 .powergate_vcn = smu_v12_0_powergate_vcn, 700 + .powergate_jpeg = smu_v12_0_powergate_jpeg, 700 701 .send_smc_msg = smu_v12_0_send_msg, 701 702 .send_smc_msg_with_param = smu_v12_0_send_msg_with_param, 702 703 .read_smc_arg = smu_v12_0_read_arg,
+2
drivers/gpu/drm/amd/powerplay/smu_internal.h
··· 42 42 ((smu)->ppt_funcs->powergate_sdma ? (smu)->ppt_funcs->powergate_sdma((smu), (gate)) : 0) 43 43 #define smu_powergate_vcn(smu, gate) \ 44 44 ((smu)->ppt_funcs->powergate_vcn ? (smu)->ppt_funcs->powergate_vcn((smu), (gate)) : 0) 45 + #define smu_powergate_jpeg(smu, gate) \ 46 + ((smu)->ppt_funcs->powergate_jpeg ? (smu)->ppt_funcs->powergate_jpeg((smu), (gate)) : 0) 45 47 46 48 #define smu_get_vbios_bootup_values(smu) \ 47 49 ((smu)->ppt_funcs->get_vbios_bootup_values ? (smu)->ppt_funcs->get_vbios_bootup_values((smu)) : 0)
+11
drivers/gpu/drm/amd/powerplay/smu_v12_0.c
··· 203 203 return smu_send_smc_msg(smu, SMU_MSG_PowerUpVcn); 204 204 } 205 205 206 + int smu_v12_0_powergate_jpeg(struct smu_context *smu, bool gate) 207 + { 208 + if (!(smu->adev->flags & AMD_IS_APU)) 209 + return 0; 210 + 211 + if (gate) 212 + return smu_send_smc_msg_with_param(smu, SMU_MSG_PowerDownJpeg, 0); 213 + else 214 + return smu_send_smc_msg_with_param(smu, SMU_MSG_PowerUpJpeg, 0); 215 + } 216 + 206 217 int smu_v12_0_set_gfx_cgpg(struct smu_context *smu, bool enable) 207 218 { 208 219 if (!(smu->adev->pg_flags & AMD_PG_SUPPORT_GFX_PG))