Hi, On Fri, Apr 09, 2021 at 09:35:07PM +0800, Kevin Tang wrote: > > > > > + } > > > > > + > > > > > + return MODE_OK; > > > > > +} > > > > > + > > > > > +static void sprd_crtc_atomic_enable(struct drm_crtc *crtc, > > > > > + struct drm_atomic_state *state) > > > > > +{ > > > > > + struct sprd_dpu *dpu = to_sprd_crtc(crtc); > > > > > + > > > > > + sprd_dpu_init(dpu); > > > > > + > > > > > + sprd_dpi_init(dpu); > > > > > + > > > > > + enable_irq(dpu->ctx.irq); > > > > > > > > Shouldn't this be in enable_vblank? And I would assume that you would > > > > have the interrupts enabled all the time, but disabled in your device? > > > > > > > It seems better to put in enable_vblank, i will try and test it... Thks > > > > > > And I would assume that you would > > > have the interrupts enabled all the time, but disabled in your device? > > > [kevin]I don’t quite understand this, can you help me explain it in > > > detail? > > > > You seem to have a register that enables and disables the interrupt in > > that device. The way we usually deal with them in this case is just to > > call request_irq in your bind/probe with the interrupts enabled at the > > controller level, and mask them when needed at the device level by > > clearing / setting that bit. > > > Yeah, we have display controller interrupts setting and clear register. > But the interrupts all been enabled in bootloader(eg, lk or uboot), > if the interrupt handler is active in the probe/bind phase by request_irq, > but the whole display pipeline is not ready, there maybe have some problems. It's fairly common to clear / ack the interrupts from the device before calling request_irq precisely to avoid that issue. Maxime