Skip to content

Commit b78c772

Browse files
Abhinav Kumarrobclark
authored andcommitted
drm/msm/dp: add module parameter for PSR
On sc7280 where eDP is the primary display, PSR is causing IGT breakage even for basic test cases like kms_atomic and kms_atomic_transition. Most often the issue starts with below stack so providing that as reference Call trace: dpu_encoder_assign_crtc+0x64/0x6c dpu_crtc_enable+0x188/0x204 drm_atomic_helper_commit_modeset_enables+0xc0/0x274 msm_atomic_commit_tail+0x1a8/0x68c commit_tail+0xb0/0x160 drm_atomic_helper_commit+0x11c/0x124 drm_atomic_commit+0xb0/0xdc drm_atomic_connector_commit_dpms+0xf4/0x110 drm_mode_obj_set_property_ioctl+0x16c/0x3b0 drm_connector_property_set_ioctl+0x4c/0x74 drm_ioctl_kernel+0xec/0x15c drm_ioctl+0x264/0x408 __arm64_sys_ioctl+0x9c/0xd4 invoke_syscall+0x4c/0x110 el0_svc_common+0x94/0xfc do_el0_svc+0x3c/0xb0 el0_svc+0x2c/0x7c el0t_64_sync_handler+0x48/0x114 el0t_64_sync+0x190/0x194 ---[ end trace 0000000000000000 ]--- [drm-dp] dp_ctrl_push_idle: PUSH_IDLE pattern timedout Other basic use-cases still seem to work fine hence add a a module parameter to allow toggling psr enable/disable till PSR related issues are hashed out with IGT. Signed-off-by: Abhinav Kumar <[email protected]> Reviewed-by: Dmitry Baryshkov <[email protected]> Acked-by: Rob Clark <[email protected]> Patchwork: https://patchwork.freedesktop.org/patch/534420/ Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Rob Clark <[email protected]>
1 parent 173d427 commit b78c772

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/gpu/drm/msm/dp/dp_display.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
#include "dp_audio.h"
2929
#include "dp_debug.h"
3030

31+
static bool psr_enabled = false;
32+
module_param(psr_enabled, bool, 0);
33+
MODULE_PARM_DESC(psr_enabled, "enable PSR for eDP and DP displays");
34+
3135
#define HPD_STRING_SIZE 30
3236

3337
enum {
@@ -407,7 +411,7 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
407411

408412
edid = dp->panel->edid;
409413

410-
dp->dp_display.psr_supported = dp->panel->psr_cap.version;
414+
dp->dp_display.psr_supported = dp->panel->psr_cap.version && psr_enabled;
411415

412416
dp->audio_supported = drm_detect_monitor_audio(edid);
413417
dp_panel_handle_sink_request(dp->panel);

0 commit comments

Comments
 (0)