MLK-20546-2: drm/imx/dcss: check status bit when handling interrupts
Double check that the DTG IRQ STATUS register bit is set when handling
the vblank and CTXLD kick interrupts to make sure we avoid spurious
interrupts and kick the CTXLD in a bad moment.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
Reviewed-by: Robert Chiras <robert.chiras@nxp.com>
(cherry picked from commit cc56e4e07f
)
This commit is contained in:
parent
dd083eddfc
commit
fd4a0405a9
|
@ -358,6 +358,9 @@ static irqreturn_t dcss_crtc_irq_handler(int irq, void *dev_id)
|
|||
|
||||
dcss_trace_module(TRACE_DRM_CRTC, TRACE_VBLANK);
|
||||
|
||||
if (!dcss_dtg_vblank_irq_valid(dcss))
|
||||
return IRQ_HANDLED;
|
||||
|
||||
complete(&dcss_crtc->en_completion);
|
||||
|
||||
if (dcss_ctxld_is_flushed(dcss))
|
||||
|
|
|
@ -197,6 +197,9 @@ static irqreturn_t dcss_dtg_irq_handler(int irq, void *data)
|
|||
|
||||
status = dcss_readl(dtg->base_reg + DCSS_DTG_INT_STATUS);
|
||||
|
||||
if (!(status & LINE0_IRQ))
|
||||
return IRQ_HANDLED;
|
||||
|
||||
dcss_ctxld_kick(dtg->dcss);
|
||||
|
||||
dcss_writel(status & LINE0_IRQ, dtg->base_reg + DCSS_DTG_INT_CONTROL);
|
||||
|
@ -757,3 +760,12 @@ void dcss_dtg_vblank_irq_clear(struct dcss_soc *dcss)
|
|||
|
||||
dcss_update(LINE1_IRQ, LINE1_IRQ, reg);
|
||||
}
|
||||
|
||||
bool dcss_dtg_vblank_irq_valid(struct dcss_soc *dcss)
|
||||
{
|
||||
struct dcss_dtg_priv *dtg = dcss->dtg_priv;
|
||||
|
||||
return !!(dcss_readl(dtg->base_reg + DCSS_DTG_INT_STATUS) & LINE1_IRQ);
|
||||
}
|
||||
EXPORT_SYMBOL(dcss_dtg_vblank_irq_valid);
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@ bool dcss_dtg_global_alpha_changed(struct dcss_soc *dcss, int ch_num,
|
|||
int use_global_alpha);
|
||||
void dcss_dtg_css_set(struct dcss_soc *dcss, u32 pix_format);
|
||||
void dcss_dtg_ctxld_kick_irq_enable(struct dcss_soc *dcss, bool en);
|
||||
bool dcss_dtg_vblank_irq_valid(struct dcss_soc *dcss);
|
||||
|
||||
/* SUBSAM */
|
||||
void dcss_ss_sync_set(struct dcss_soc *dcss, struct videomode *vm,
|
||||
|
|
Loading…
Reference in New Issue