drm/amdgpu/display: add flag for multi-display mclk switching
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 22 Aug 2019 19:17:57 +0000 (14:17 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Aug 2019 16:33:00 +0000 (11:33 -0500)
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>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/include/amd_shared.h

index 6590317e41f3f6c5aa91838ccda117673cb37be1..15e256d3ab4723ec0eed8cb48be53d5459fe463e 100644 (file)
@@ -694,6 +694,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
        if (amdgpu_dc_feature_mask & DC_FBC_MASK)
                init_data.flags.fbc_support = true;
 
+       if (amdgpu_dc_feature_mask & DC_MULTI_MON_PP_MCLK_SWITCH_MASK)
+               init_data.flags.multi_mon_pp_mclk_switch = true;
+
        init_data.flags.power_down_display_on_boot = true;
 
 #ifdef CONFIG_DRM_AMD_DC_DCN2_0
index eca681d9d7f5ced14630508933f17d9e10b2852d..a1d49256fab733d85f52d8697aa08540f64a485a 100644 (file)
@@ -3025,7 +3025,10 @@ bool bw_calcs(struct dc_context *ctx,
 
        populate_initial_data(pipe, pipe_count, data);
 
-       calcs_output->all_displays_in_sync = all_displays_in_sync(pipe, pipe_count);
+       if (ctx->dc->config.multi_mon_pp_mclk_switch)
+               calcs_output->all_displays_in_sync = all_displays_in_sync(pipe, pipe_count);
+       else
+               calcs_output->all_displays_in_sync = false;
 
        if (data->number_of_displays != 0) {
                uint8_t yclk_lvl, sclk_lvl;
index 3ef269f824782c17e97c6d5d97d0351426933f70..5d4a2a9228f0dad73f0bb5f696a1cb321ac3e59e 100644 (file)
@@ -220,7 +220,7 @@ struct dc_config {
        bool power_down_display_on_boot;
        bool edp_not_connected;
        bool forced_clocks;
-
+       bool multi_mon_pp_mclk_switch;
 };
 
 enum visual_confirm {
index a0a7211438f226a171eb71cfb1754c575707af92..8889aaceec60a565996f60ddd25508d24f25cf99 100644 (file)
@@ -142,6 +142,7 @@ enum PP_FEATURE_MASK {
 
 enum DC_FEATURE_MASK {
        DC_FBC_MASK = 0x1,
+       DC_MULTI_MON_PP_MCLK_SWITCH_MASK = 0x2,
 };
 
 enum amd_dpm_forced_level;