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

drm/amd/powerplay: add JPEG power control for Renoir

By using its own JPEG PowerUp and PowerDown messages

v2: add argument to PowerDownJpeg message

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
a986e151 27f7ff32

+26
+26
drivers/gpu/drm/amd/powerplay/renoir_ppt.c
··· 301 301 return ret; 302 302 } 303 303 304 + static int renoir_dpm_set_jpeg_enable(struct smu_context *smu, bool enable) 305 + { 306 + struct smu_power_context *smu_power = &smu->smu_power; 307 + struct smu_power_gate *power_gate = &smu_power->power_gate; 308 + int ret = 0; 309 + 310 + if (enable) { 311 + if (smu_feature_is_enabled(smu, SMU_FEATURE_JPEG_PG_BIT)) { 312 + ret = smu_send_smc_msg_with_param(smu, SMU_MSG_PowerUpJpeg, 0); 313 + if (ret) 314 + return ret; 315 + } 316 + power_gate->jpeg_gated = false; 317 + } else { 318 + if (smu_feature_is_enabled(smu, SMU_FEATURE_JPEG_PG_BIT)) { 319 + ret = smu_send_smc_msg_with_param(smu, SMU_MSG_PowerDownJpeg, 0); 320 + if (ret) 321 + return ret; 322 + } 323 + power_gate->jpeg_gated = true; 324 + } 325 + 326 + return ret; 327 + } 328 + 304 329 static int renoir_force_dpm_limit_value(struct smu_context *smu, bool highest) 305 330 { 306 331 int ret = 0, i = 0; ··· 708 683 .print_clk_levels = renoir_print_clk_levels, 709 684 .get_current_power_state = renoir_get_current_power_state, 710 685 .dpm_set_uvd_enable = renoir_dpm_set_uvd_enable, 686 + .dpm_set_jpeg_enable = renoir_dpm_set_jpeg_enable, 711 687 .force_dpm_limit_value = renoir_force_dpm_limit_value, 712 688 .unforce_dpm_levels = renoir_unforce_dpm_levels, 713 689 .get_workload_type = renoir_get_workload_type,