aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/dc/dcn35
diff options
context:
space:
mode:
authorGravatar Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> 2023-10-05 11:48:44 -0400
committerGravatar Alex Deucher <alexander.deucher@amd.com> 2023-10-26 18:57:58 -0400
commitda2d16fcdda344b18ec9a4a55dff9805d5d781d2 (patch)
tree11ed56064172a1f5ddfe954b56111967cec09c1b /drivers/gpu/drm/amd/display/dc/dcn35
parentdrm/amd/display: implement map dc pipe with callback in DML2 (diff)
downloadlinux-da2d16fcdda344b18ec9a4a55dff9805d5d781d2.tar.gz
linux-da2d16fcdda344b18ec9a4a55dff9805d5d781d2.tar.bz2
linux-da2d16fcdda344b18ec9a4a55dff9805d5d781d2.zip
drm/amd/display: Fix IPS handshake for idle optimizations
[Why] Intermittent reboot hangs are observed introduced by "Improve x86 and dmub ips handshake". [How] Bring back the commit but fix the polling. Avoid hanging in place forever by bounding the delay and ensure that we still message DMCUB on IPS2 exit to notify driver idle has been cleared. Reviewed-by: Duncan Ma <duncan.ma@amd.com> Reviewed-by: Jun Lei <jun.lei@amd.com> Acked-by: Roman Li <roman.li@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/dcn35')
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn35/dcn35_init.c2
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_init.c b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_init.c
index 3ccf1c8cedda..296bf3a38cb9 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_init.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_init.c
@@ -120,6 +120,8 @@ static const struct hw_sequencer_funcs dcn35_funcs = {
.calc_blocks_to_ungate = dcn35_calc_blocks_to_ungate,
.block_power_control = dcn35_block_power_control,
.root_clock_control = dcn35_root_clock_control,
+ .set_idle_state = dcn35_set_idle_state,
+ .get_idle_state = dcn35_get_idle_state
};
static const struct hwseq_private_funcs dcn35_private_funcs = {
diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
index 4e333e2a3147..3c7c810bab1f 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
@@ -748,6 +748,8 @@ static const struct dc_debug_options debug_defaults_drv = {
.disable_z10 = false,
.ignore_pg = true,
.psp_disabled_wa = true,
+ .ips2_eval_delay_us = 200,
+ .ips2_entry_delay_us = 400
};
static const struct dc_panel_config panel_config_defaults = {