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

drm/amdgpu/display: add flag for multi-display mclk switching

Add a dcfeaturemask flag for mclk switching. Disable by default;
enable once the feature has seen more testing.

Set amdgpu.dcfeaturemask=2 on the kernel command line in grub
to enable this.

Acked-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+9 -2
+3
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
··· 694 694 if (amdgpu_dc_feature_mask & DC_FBC_MASK) 695 695 init_data.flags.fbc_support = true; 696 696 697 + if (amdgpu_dc_feature_mask & DC_MULTI_MON_PP_MCLK_SWITCH_MASK) 698 + init_data.flags.multi_mon_pp_mclk_switch = true; 699 + 697 700 init_data.flags.power_down_display_on_boot = true; 698 701 699 702 #ifdef CONFIG_DRM_AMD_DC_DCN2_0
+4 -1
drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
··· 3025 3025 3026 3026 populate_initial_data(pipe, pipe_count, data); 3027 3027 3028 - calcs_output->all_displays_in_sync = all_displays_in_sync(pipe, pipe_count); 3028 + if (ctx->dc->config.multi_mon_pp_mclk_switch) 3029 + calcs_output->all_displays_in_sync = all_displays_in_sync(pipe, pipe_count); 3030 + else 3031 + calcs_output->all_displays_in_sync = false; 3029 3032 3030 3033 if (data->number_of_displays != 0) { 3031 3034 uint8_t yclk_lvl, sclk_lvl;
+1 -1
drivers/gpu/drm/amd/display/dc/dc.h
··· 220 220 bool power_down_display_on_boot; 221 221 bool edp_not_connected; 222 222 bool forced_clocks; 223 - 223 + bool multi_mon_pp_mclk_switch; 224 224 }; 225 225 226 226 enum visual_confirm {
+1
drivers/gpu/drm/amd/include/amd_shared.h
··· 142 142 143 143 enum DC_FEATURE_MASK { 144 144 DC_FBC_MASK = 0x1, 145 + DC_MULTI_MON_PP_MCLK_SWITCH_MASK = 0x2, 145 146 }; 146 147 147 148 enum amd_dpm_forced_level;