summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/bridge/analogix/anx7625.h
diff options
context:
space:
mode:
authorHsin-Yi Wang <hsinyi@chromium.org>2024-01-18 04:58:14 +0300
committerDouglas Anderson <dianders@chromium.org>2024-01-22 19:53:42 +0300
commit4d5b7daa3c610af3f322ad1e91fc0c752ff32f0e (patch)
tree564af39151930ee281e2399a0b004629248632ab /drivers/gpu/drm/bridge/analogix/anx7625.h
parent4b5581f112075e46d73b34b9848be041e6c1e489 (diff)
downloadlinux-4d5b7daa3c610af3f322ad1e91fc0c752ff32f0e.tar.xz
drm/bridge: anx7625: Ensure bridge is suspended in disable()
Similar to commit 26db46bc9c67 ("drm/bridge: parade-ps8640: Ensure bridge is suspended in .post_disable()"). Add a mutex to ensure that aux transfer won't race with atomic_disable by holding the PM reference and prevent the bridge from suspend. Also we need to use pm_runtime_put_sync_suspend() to suspend the bridge instead of idle with pm_runtime_put_sync(). Fixes: 3203e497eb76 ("drm/bridge: anx7625: Synchronously run runtime suspend.") Fixes: adca62ec370c ("drm/bridge: anx7625: Support reading edid through aux channel") Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org> Tested-by: Xuxin Xiong <xuxinxiong@huaqin.corp-partner.google.com> Reviewed-by: Pin-yen Lin <treapking@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240118015916.2296741-1-hsinyi@chromium.org
Diffstat (limited to 'drivers/gpu/drm/bridge/analogix/anx7625.h')
-rw-r--r--drivers/gpu/drm/bridge/analogix/anx7625.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
index 66ebee7f3d83..39ed35d33836 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.h
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
@@ -475,6 +475,8 @@ struct anx7625_data {
struct workqueue_struct *hdcp_workqueue;
/* Lock for hdcp work queue */
struct mutex hdcp_wq_lock;
+ /* Lock for aux transfer and disable */
+ struct mutex aux_lock;
char edid_block;
struct display_timing dt;
u8 display_timing_valid;