]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Add monitor patch skip disable crtc during psr and ips1
authorLewis Huang <lewis.huang@amd.com>
Fri, 17 May 2024 09:30:42 +0000 (17:30 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Jun 2024 19:24:16 +0000 (15:24 -0400)
[Why]
For some panel, it cannot handle pseudo vblank set by otg resync
when leave psr

[How]
The monitor patch will keep otg_on during enter IPS1.
And then we don't need to do otg resync when wake up.

Reviewed-by: Duncan Ma <duncan.ma@amd.com>
Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: Lewis Huang <lewis.huang@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index f4ba916003628ce91b4c3f638d5c7d02b4ac6f98..2397077d0b6747992532454a603cae530f34b38c 100644 (file)
@@ -304,6 +304,7 @@ struct dc_bug_wa {
                uint8_t dcfclk : 1;
                uint8_t dcfclk_ds: 1;
        } clock_update_disable_mask;
+       bool skip_psr_ips_crtc_disable;
        //Customer Specific WAs
        uint32_t force_backlight_start_level;
 };
index 4e6f7bf8a5b46cba6a4eb241f6469467414ccd6c..873993a6513c8eab034f33532d8413079fb56d3c 100644 (file)
@@ -1256,6 +1256,9 @@ static void dc_dmub_srv_notify_idle(const struct dc *dc, bool allow_idle)
 
        cmd.idle_opt_notify_idle.cntl_data.driver_idle = allow_idle;
 
+       if (dc->work_arounds.skip_psr_ips_crtc_disable)
+               cmd.idle_opt_notify_idle.cntl_data.skip_otg_disable = true;
+
        if (allow_idle) {
                volatile struct dmub_shared_state_ips_driver *ips_driver =
                        &dc_dmub_srv->dmub->shared_state[DMUB_SHARED_SHARE_FEATURE__IPS_DRIVER].data.ips_driver;
index 53ea4a57bd441a4632e2f92f161222f2aff34608..36c15ae43616d30cab84f4cbeebde7cabb117694 100644 (file)
@@ -1882,7 +1882,8 @@ struct dmub_rb_cmd_idle_opt_dcn_restore {
  */
 struct dmub_dcn_notify_idle_cntl_data {
        uint8_t driver_idle;
-       uint8_t reserved[59];
+       uint8_t skip_otg_disable;
+       uint8_t reserved[58];
 };
 
 /**