disp: msm: sde: wait for pending vsync event in encoder disable

In some corner cases there is pending vsync timestamp event to
sf when encoder is getting disabled. This is keeping vblank irq
to be enabled after sde_encoder_virt_reset leading to NULL ptr
access. In these cases, wait for vsync event to be completed which
disables the irq.

Change-Id: If0a6be1fc282906fb1b9c0fd18ede1d31d2549b3
Signed-off-by: Raviteja Tamatam <quic_travitej@quicinc.com>
Signed-off-by: Akash Gajjar <quic_agajjar@quicinc.com>
这个提交包含在:
Raviteja Tamatam
2022-10-04 16:49:23 -07:00
提交者 Akash Gajjar
父节点 04e6f35c65
当前提交 a57c71fa4e
修改 2 个文件,包含 38 行新增0 行删除

查看文件

@@ -223,6 +223,7 @@ enum sde_sim_qsync_event {
* @ctl_done_supported boolean flag to indicate the availability of
* ctl done irq support for the hardware
* @dynamic_irqs_config bitmask config to enable encoder dynamic irqs
* @vsync_event_wq Queue to wait for the vsync event complete
*/
struct sde_encoder_virt {
struct drm_encoder base;
@@ -295,6 +296,7 @@ struct sde_encoder_virt {
bool ctl_done_supported;
unsigned long dynamic_irqs_config;
wait_queue_head_t vsync_event_wq;
};
#define to_sde_encoder_virt(x) container_of(x, struct sde_encoder_virt, base)