Lines Matching refs:crtc
45 static inline struct ipu_crtc *to_ipu_crtc(struct drm_crtc *crtc) in to_ipu_crtc() argument
47 return container_of(crtc, struct ipu_crtc, base); in to_ipu_crtc()
50 static void ipu_crtc_atomic_enable(struct drm_crtc *crtc, in ipu_crtc_atomic_enable() argument
53 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_crtc_atomic_enable()
82 static void ipu_crtc_atomic_disable(struct drm_crtc *crtc, in ipu_crtc_atomic_disable() argument
86 crtc); in ipu_crtc_atomic_disable()
87 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_crtc_atomic_disable()
101 drm_crtc_vblank_off(crtc); in ipu_crtc_atomic_disable()
103 spin_lock_irq(&crtc->dev->event_lock); in ipu_crtc_atomic_disable()
104 if (crtc->state->event && !crtc->state->active) { in ipu_crtc_atomic_disable()
105 drm_crtc_send_vblank_event(crtc, crtc->state->event); in ipu_crtc_atomic_disable()
106 crtc->state->event = NULL; in ipu_crtc_atomic_disable()
108 spin_unlock_irq(&crtc->dev->event_lock); in ipu_crtc_atomic_disable()
111 static void imx_drm_crtc_reset(struct drm_crtc *crtc) in imx_drm_crtc_reset() argument
115 if (crtc->state) in imx_drm_crtc_reset()
116 __drm_atomic_helper_crtc_destroy_state(crtc->state); in imx_drm_crtc_reset()
118 kfree(to_imx_crtc_state(crtc->state)); in imx_drm_crtc_reset()
119 crtc->state = NULL; in imx_drm_crtc_reset()
123 __drm_atomic_helper_crtc_reset(crtc, &state->base); in imx_drm_crtc_reset()
126 static struct drm_crtc_state *imx_drm_crtc_duplicate_state(struct drm_crtc *crtc) in imx_drm_crtc_duplicate_state() argument
134 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in imx_drm_crtc_duplicate_state()
136 WARN_ON(state->base.crtc != crtc); in imx_drm_crtc_duplicate_state()
137 state->base.crtc = crtc; in imx_drm_crtc_duplicate_state()
142 static void imx_drm_crtc_destroy_state(struct drm_crtc *crtc, in imx_drm_crtc_destroy_state() argument
149 static int ipu_enable_vblank(struct drm_crtc *crtc) in ipu_enable_vblank() argument
151 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_enable_vblank()
158 static void ipu_disable_vblank(struct drm_crtc *crtc) in ipu_disable_vblank() argument
160 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_disable_vblank()
178 struct drm_crtc *crtc = &ipu_crtc->base; in ipu_irq_handler() local
182 drm_crtc_handle_vblank(crtc); in ipu_irq_handler()
196 spin_lock_irqsave(&crtc->dev->event_lock, flags); in ipu_irq_handler()
197 drm_crtc_send_vblank_event(crtc, ipu_crtc->event); in ipu_irq_handler()
199 drm_crtc_vblank_put(crtc); in ipu_irq_handler()
200 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in ipu_irq_handler()
207 static bool ipu_crtc_mode_fixup(struct drm_crtc *crtc, in ipu_crtc_mode_fixup() argument
211 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_crtc_mode_fixup()
229 static int ipu_crtc_atomic_check(struct drm_crtc *crtc, in ipu_crtc_atomic_check() argument
233 crtc); in ipu_crtc_atomic_check()
234 u32 primary_plane_mask = drm_plane_mask(crtc->primary); in ipu_crtc_atomic_check()
242 static void ipu_crtc_atomic_begin(struct drm_crtc *crtc, in ipu_crtc_atomic_begin() argument
245 drm_crtc_vblank_on(crtc); in ipu_crtc_atomic_begin()
248 static void ipu_crtc_atomic_flush(struct drm_crtc *crtc, in ipu_crtc_atomic_flush() argument
251 spin_lock_irq(&crtc->dev->event_lock); in ipu_crtc_atomic_flush()
252 if (crtc->state->event) { in ipu_crtc_atomic_flush()
253 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_crtc_atomic_flush()
255 WARN_ON(drm_crtc_vblank_get(crtc)); in ipu_crtc_atomic_flush()
256 ipu_crtc->event = crtc->state->event; in ipu_crtc_atomic_flush()
257 crtc->state->event = NULL; in ipu_crtc_atomic_flush()
259 spin_unlock_irq(&crtc->dev->event_lock); in ipu_crtc_atomic_flush()
262 static void ipu_crtc_mode_set_nofb(struct drm_crtc *crtc) in ipu_crtc_mode_set_nofb() argument
264 struct drm_device *dev = crtc->dev; in ipu_crtc_mode_set_nofb()
266 struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); in ipu_crtc_mode_set_nofb()
267 struct drm_display_mode *mode = &crtc->state->adjusted_mode; in ipu_crtc_mode_set_nofb()
268 struct imx_crtc_state *imx_crtc_state = to_imx_crtc_state(crtc->state); in ipu_crtc_mode_set_nofb()
278 if (encoder->crtc == crtc) in ipu_crtc_mode_set_nofb()
372 struct drm_crtc *crtc; in ipu_drm_bind() local
392 crtc = &ipu_crtc->base; in ipu_drm_bind()
393 crtc->port = pdata->of_node; in ipu_drm_bind()
394 drm_crtc_helper_add(crtc, &ipu_helper_funcs); in ipu_drm_bind()