diff --git a/drivers/gpu/drm/vc4/vc4_firmware_kms.c b/drivers/gpu/drm/vc4/vc4_firmware_kms.c index 69f2f577d807..ad20e300d080 100644 --- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c +++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c @@ -1055,14 +1055,17 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data) vc4_crtc_handle_page_flip(crtc_list[0]); } - /* Check for the secondary display too */ - chan = readl(crtc_list[0]->regs + SMIDSW1); + if (crtc_list[1]) { + /* Check for the secondary display too */ + chan = readl(crtc_list[0]->regs + SMIDSW1); - if (chan & 1) { - writel(SMI_NEW, crtc_list[0]->regs + SMIDSW1); - if (crtc_list[1]->vblank_enabled) - drm_crtc_handle_vblank(&crtc_list[1]->base); - vc4_crtc_handle_page_flip(crtc_list[1]); + if (chan & 1) { + writel(SMI_NEW, crtc_list[0]->regs + SMIDSW1); + + if (crtc_list[1]->vblank_enabled) + drm_crtc_handle_vblank(&crtc_list[1]->base); + vc4_crtc_handle_page_flip(crtc_list[1]); + } } }