Lines Matching refs:crtc

23 	struct drm_device *ddev = tcrtc->crtc.dev;  in tidss_crtc_finish_page_flip()
51 drm_crtc_send_vblank_event(&tcrtc->crtc, event); in tidss_crtc_finish_page_flip()
55 drm_crtc_vblank_put(&tcrtc->crtc); in tidss_crtc_finish_page_flip()
58 void tidss_crtc_vblank_irq(struct drm_crtc *crtc) in tidss_crtc_vblank_irq() argument
60 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_vblank_irq()
62 drm_crtc_handle_vblank(crtc); in tidss_crtc_vblank_irq()
67 void tidss_crtc_framedone_irq(struct drm_crtc *crtc) in tidss_crtc_framedone_irq() argument
69 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_framedone_irq()
74 void tidss_crtc_error_irq(struct drm_crtc *crtc, u64 irqstatus) in tidss_crtc_error_irq() argument
76 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_error_irq()
78 dev_err_ratelimited(crtc->dev->dev, "CRTC%u SYNC LOST: (irq %llx)\n", in tidss_crtc_error_irq()
84 static int tidss_crtc_atomic_check(struct drm_crtc *crtc, in tidss_crtc_atomic_check() argument
88 crtc); in tidss_crtc_atomic_check()
89 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_check()
92 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_check()
120 struct drm_crtc *crtc, in tidss_crtc_position_planes() argument
125 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_position_planes()
126 struct drm_crtc_state *cstate = crtc->state; in tidss_crtc_position_planes()
140 if (pstate->crtc != crtc || !pstate->visible) in tidss_crtc_position_planes()
162 static void tidss_crtc_atomic_flush(struct drm_crtc *crtc, in tidss_crtc_atomic_flush() argument
166 crtc); in tidss_crtc_atomic_flush()
167 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_flush()
168 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_flush()
174 crtc->name, drm_atomic_crtc_needs_modeset(crtc->state), in tidss_crtc_atomic_flush()
175 crtc->state->enable, crtc->state->event); in tidss_crtc_atomic_flush()
178 if (!crtc->state->enable) in tidss_crtc_atomic_flush()
185 if (drm_atomic_crtc_needs_modeset(crtc->state)) in tidss_crtc_atomic_flush()
193 if (WARN_ON(!crtc->state->event)) in tidss_crtc_atomic_flush()
197 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false); in tidss_crtc_atomic_flush()
200 tidss_crtc_position_planes(tidss, crtc, old_crtc_state, false); in tidss_crtc_atomic_flush()
202 WARN_ON(drm_crtc_vblank_get(crtc) != 0); in tidss_crtc_atomic_flush()
209 tcrtc->event = crtc->state->event; in tidss_crtc_atomic_flush()
210 crtc->state->event = NULL; in tidss_crtc_atomic_flush()
215 static void tidss_crtc_atomic_enable(struct drm_crtc *crtc, in tidss_crtc_atomic_enable() argument
219 crtc); in tidss_crtc_atomic_enable()
220 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_enable()
221 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_enable()
223 const struct drm_display_mode *mode = &crtc->state->adjusted_mode; in tidss_crtc_atomic_enable()
227 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_enable()
240 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true); in tidss_crtc_atomic_enable()
241 tidss_crtc_position_planes(tidss, crtc, old_state, true); in tidss_crtc_atomic_enable()
244 drm_crtc_vblank_on(crtc); in tidss_crtc_atomic_enable()
246 dispc_vp_prepare(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
248 dispc_vp_enable(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
252 if (crtc->state->event) { in tidss_crtc_atomic_enable()
253 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_enable()
254 crtc->state->event = NULL; in tidss_crtc_atomic_enable()
260 static void tidss_crtc_atomic_disable(struct drm_crtc *crtc, in tidss_crtc_atomic_disable() argument
263 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_disable()
264 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_disable()
268 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_disable()
282 if (crtc->state->event) { in tidss_crtc_atomic_disable()
283 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_disable()
284 crtc->state->event = NULL; in tidss_crtc_atomic_disable()
288 drm_crtc_vblank_off(crtc); in tidss_crtc_atomic_disable()
296 enum drm_mode_status tidss_crtc_mode_valid(struct drm_crtc *crtc, in tidss_crtc_mode_valid() argument
299 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_mode_valid()
300 struct drm_device *ddev = crtc->dev; in tidss_crtc_mode_valid()
317 static int tidss_crtc_enable_vblank(struct drm_crtc *crtc) in tidss_crtc_enable_vblank() argument
319 struct drm_device *ddev = crtc->dev; in tidss_crtc_enable_vblank()
326 tidss_irq_enable_vblank(crtc); in tidss_crtc_enable_vblank()
331 static void tidss_crtc_disable_vblank(struct drm_crtc *crtc) in tidss_crtc_disable_vblank() argument
333 struct drm_device *ddev = crtc->dev; in tidss_crtc_disable_vblank()
338 tidss_irq_disable_vblank(crtc); in tidss_crtc_disable_vblank()
343 static void tidss_crtc_reset(struct drm_crtc *crtc) in tidss_crtc_reset() argument
347 if (crtc->state) in tidss_crtc_reset()
348 __drm_atomic_helper_crtc_destroy_state(crtc->state); in tidss_crtc_reset()
350 kfree(crtc->state); in tidss_crtc_reset()
354 crtc->state = NULL; in tidss_crtc_reset()
358 __drm_atomic_helper_crtc_reset(crtc, &tcrtc->base); in tidss_crtc_reset()
361 static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc) in tidss_crtc_duplicate_state() argument
365 if (WARN_ON(!crtc->state)) in tidss_crtc_duplicate_state()
368 current_state = to_tidss_crtc_state(crtc->state); in tidss_crtc_duplicate_state()
374 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in tidss_crtc_duplicate_state()
384 static void tidss_crtc_destroy(struct drm_crtc *crtc) in tidss_crtc_destroy() argument
386 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_destroy()
388 drm_crtc_cleanup(crtc); in tidss_crtc_destroy()
408 struct drm_crtc *crtc; in tidss_crtc_create() local
420 crtc = &tcrtc->crtc; in tidss_crtc_create()
422 ret = drm_crtc_init_with_planes(&tidss->ddev, crtc, primary, in tidss_crtc_create()
429 drm_crtc_helper_add(crtc, &tidss_crtc_helper_funcs); in tidss_crtc_create()
439 drm_crtc_enable_color_mgmt(crtc, 0, has_ctm, gamma_lut_size); in tidss_crtc_create()
441 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size); in tidss_crtc_create()