From 4b0a676b04bc3d2b39c8973b76d827f9c32bbc75 Mon Sep 17 00:00:00 2001 From: Hoegeun Kwon Date: Mon, 29 Jan 2024 11:45:44 +0900 Subject: [PATCH] drm/verisilicon: vs_dc: Fix to disable interrupt on probe There is a case where interrupt enable is set in decon req before decon probe is completed. There is a problem that a kernel panic occurs if an interrupt is executed before the decon is bound. Disable interrupts before registering interrupts. Also, irq generated when the interrupt state is disabled is ignored. Change-Id: I0b611aadf6c16ea8f850eb570f569e7bad792ce1 Signed-off-by: Hoegeun Kwon Signed-off-by: Jaehoon Chung --- drivers/gpu/drm/verisilicon/vs_dc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/verisilicon/vs_dc.c b/drivers/gpu/drm/verisilicon/vs_dc.c index 4cf57fc0d71b..97d08a113be1 100644 --- a/drivers/gpu/drm/verisilicon/vs_dc.c +++ b/drivers/gpu/drm/verisilicon/vs_dc.c @@ -985,6 +985,8 @@ static irqreturn_t dc_isr(int irq, void *data) return IRQ_HANDLED; ret = dc_hw_get_interrupt(&dc->hw); + if (!ret) + return IRQ_HANDLED; for (i = 0; i < dc_info->panel_num; i++) drm_crtc_handle_vblank(&dc->crtc[i]->base); @@ -1163,6 +1165,8 @@ static int dc_probe(struct platform_device *pdev) return ret; } + dc_hw_enable_interrupt(&dc->hw, 0); + dc->irq = platform_get_irq(pdev, 0); /* do not autoenable, will be enabled later */ -- 2.34.1