Lines Matching full: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()
173 __func__, crtc->name, crtc->state->active ? "" : "not ", in tidss_crtc_atomic_flush()
174 drm_atomic_crtc_needs_modeset(crtc->state) ? "needs" : "doesn't need", in tidss_crtc_atomic_flush()
175 crtc->state->event); in tidss_crtc_atomic_flush()
178 * Flush CRTC changes with go bit only if new modeset is not in tidss_crtc_atomic_flush()
179 * coming, so CRTC is enabled trough out the commit. in tidss_crtc_atomic_flush()
181 if (drm_atomic_crtc_needs_modeset(crtc->state)) in tidss_crtc_atomic_flush()
188 /* We should have event if CRTC is enabled through out this commit. */ in tidss_crtc_atomic_flush()
189 if (WARN_ON(!crtc->state->event)) in tidss_crtc_atomic_flush()
193 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false); in tidss_crtc_atomic_flush()
196 tidss_crtc_position_planes(tidss, crtc, old_crtc_state, false); in tidss_crtc_atomic_flush()
198 WARN_ON(drm_crtc_vblank_get(crtc) != 0); in tidss_crtc_atomic_flush()
205 tcrtc->event = crtc->state->event; in tidss_crtc_atomic_flush()
206 crtc->state->event = NULL; in tidss_crtc_atomic_flush()
211 static void tidss_crtc_atomic_enable(struct drm_crtc *crtc, in tidss_crtc_atomic_enable() argument
215 crtc); in tidss_crtc_atomic_enable()
216 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_enable()
217 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_enable()
219 const struct drm_display_mode *mode = &crtc->state->adjusted_mode; in tidss_crtc_atomic_enable()
223 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_enable()
236 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true); in tidss_crtc_atomic_enable()
237 tidss_crtc_position_planes(tidss, crtc, old_state, true); in tidss_crtc_atomic_enable()
240 drm_crtc_vblank_on(crtc); in tidss_crtc_atomic_enable()
242 dispc_vp_prepare(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
244 dispc_vp_enable(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
248 if (crtc->state->event) { in tidss_crtc_atomic_enable()
249 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_enable()
250 crtc->state->event = NULL; in tidss_crtc_atomic_enable()
256 static void tidss_crtc_atomic_disable(struct drm_crtc *crtc, in tidss_crtc_atomic_disable() argument
259 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_disable()
260 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_disable()
264 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_disable()
282 dev_err(tidss->dev, "Timeout waiting for framedone on crtc %d", in tidss_crtc_atomic_disable()
288 if (crtc->state->event) { in tidss_crtc_atomic_disable()
289 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_disable()
290 crtc->state->event = NULL; in tidss_crtc_atomic_disable()
294 drm_crtc_vblank_off(crtc); in tidss_crtc_atomic_disable()
302 enum drm_mode_status tidss_crtc_mode_valid(struct drm_crtc *crtc, in tidss_crtc_mode_valid() argument
305 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_mode_valid()
306 struct drm_device *ddev = crtc->dev; in tidss_crtc_mode_valid()
323 static int tidss_crtc_enable_vblank(struct drm_crtc *crtc) in tidss_crtc_enable_vblank() argument
325 struct drm_device *ddev = crtc->dev; in tidss_crtc_enable_vblank()
332 tidss_irq_enable_vblank(crtc); in tidss_crtc_enable_vblank()
337 static void tidss_crtc_disable_vblank(struct drm_crtc *crtc) in tidss_crtc_disable_vblank() argument
339 struct drm_device *ddev = crtc->dev; in tidss_crtc_disable_vblank()
344 tidss_irq_disable_vblank(crtc); in tidss_crtc_disable_vblank()
349 static void tidss_crtc_reset(struct drm_crtc *crtc) in tidss_crtc_reset() argument
353 if (crtc->state) in tidss_crtc_reset()
354 __drm_atomic_helper_crtc_destroy_state(crtc->state); in tidss_crtc_reset()
356 kfree(crtc->state); in tidss_crtc_reset()
360 crtc->state = NULL; in tidss_crtc_reset()
364 __drm_atomic_helper_crtc_reset(crtc, &tcrtc->base); in tidss_crtc_reset()
367 static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc) in tidss_crtc_duplicate_state() argument
371 if (WARN_ON(!crtc->state)) in tidss_crtc_duplicate_state()
374 current_state = to_tidss_crtc_state(crtc->state); in tidss_crtc_duplicate_state()
380 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in tidss_crtc_duplicate_state()
390 static void tidss_crtc_destroy(struct drm_crtc *crtc) in tidss_crtc_destroy() argument
392 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_destroy()
394 drm_crtc_cleanup(crtc); in tidss_crtc_destroy()
414 struct drm_crtc *crtc; in tidss_crtc_create() local
426 crtc = &tcrtc->crtc; in tidss_crtc_create()
428 ret = drm_crtc_init_with_planes(&tidss->ddev, crtc, primary, in tidss_crtc_create()
435 drm_crtc_helper_add(crtc, &tidss_crtc_helper_funcs); in tidss_crtc_create()
445 drm_crtc_enable_color_mgmt(crtc, 0, has_ctm, gamma_lut_size); in tidss_crtc_create()
447 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size); in tidss_crtc_create()