Lines Matching refs:crtc

26 	struct drm_device *ddev = tcrtc->crtc.dev;  in tidss_crtc_finish_page_flip()
54 drm_crtc_send_vblank_event(&tcrtc->crtc, event); in tidss_crtc_finish_page_flip()
58 drm_crtc_vblank_put(&tcrtc->crtc); in tidss_crtc_finish_page_flip()
61 void tidss_crtc_vblank_irq(struct drm_crtc *crtc) in tidss_crtc_vblank_irq() argument
63 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_vblank_irq()
65 drm_crtc_handle_vblank(crtc); in tidss_crtc_vblank_irq()
70 void tidss_crtc_framedone_irq(struct drm_crtc *crtc) in tidss_crtc_framedone_irq() argument
72 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_framedone_irq()
77 void tidss_crtc_error_irq(struct drm_crtc *crtc, u64 irqstatus) in tidss_crtc_error_irq() argument
79 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_error_irq()
81 dev_err_ratelimited(crtc->dev->dev, "CRTC%u SYNC LOST: (irq %llx)\n", in tidss_crtc_error_irq()
87 static int tidss_crtc_atomic_check(struct drm_crtc *crtc, in tidss_crtc_atomic_check() argument
91 crtc); in tidss_crtc_atomic_check()
92 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_check()
95 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_check()
123 struct drm_crtc *crtc, in tidss_crtc_position_planes() argument
128 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_position_planes()
129 struct drm_crtc_state *cstate = crtc->state; in tidss_crtc_position_planes()
143 if (pstate->crtc != crtc || !pstate->visible) in tidss_crtc_position_planes()
165 static void tidss_crtc_atomic_flush(struct drm_crtc *crtc, in tidss_crtc_atomic_flush() argument
169 crtc); in tidss_crtc_atomic_flush()
170 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_flush()
171 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_flush()
177 crtc->name, drm_atomic_crtc_needs_modeset(crtc->state), in tidss_crtc_atomic_flush()
178 crtc->state->enable, crtc->state->event); in tidss_crtc_atomic_flush()
181 if (!crtc->state->enable) in tidss_crtc_atomic_flush()
188 if (drm_atomic_crtc_needs_modeset(crtc->state)) in tidss_crtc_atomic_flush()
196 if (WARN_ON(!crtc->state->event)) in tidss_crtc_atomic_flush()
200 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false); in tidss_crtc_atomic_flush()
203 tidss_crtc_position_planes(tidss, crtc, old_crtc_state, false); in tidss_crtc_atomic_flush()
205 WARN_ON(drm_crtc_vblank_get(crtc) != 0); in tidss_crtc_atomic_flush()
212 tcrtc->event = crtc->state->event; in tidss_crtc_atomic_flush()
213 crtc->state->event = NULL; in tidss_crtc_atomic_flush()
218 static void tidss_crtc_atomic_enable(struct drm_crtc *crtc, in tidss_crtc_atomic_enable() argument
222 crtc); in tidss_crtc_atomic_enable()
223 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_enable()
224 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_enable()
226 const struct drm_display_mode *mode = &crtc->state->adjusted_mode; in tidss_crtc_atomic_enable()
230 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_enable()
243 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true); in tidss_crtc_atomic_enable()
244 tidss_crtc_position_planes(tidss, crtc, old_state, true); in tidss_crtc_atomic_enable()
247 drm_crtc_vblank_on(crtc); in tidss_crtc_atomic_enable()
249 dispc_vp_prepare(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
251 dispc_vp_enable(tidss->dispc, tcrtc->hw_videoport, crtc->state); in tidss_crtc_atomic_enable()
255 if (crtc->state->event) { in tidss_crtc_atomic_enable()
256 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_enable()
257 crtc->state->event = NULL; in tidss_crtc_atomic_enable()
263 static void tidss_crtc_atomic_disable(struct drm_crtc *crtc, in tidss_crtc_atomic_disable() argument
266 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_atomic_disable()
267 struct drm_device *ddev = crtc->dev; in tidss_crtc_atomic_disable()
271 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event); in tidss_crtc_atomic_disable()
285 if (crtc->state->event) { in tidss_crtc_atomic_disable()
286 drm_crtc_send_vblank_event(crtc, crtc->state->event); in tidss_crtc_atomic_disable()
287 crtc->state->event = NULL; in tidss_crtc_atomic_disable()
291 drm_crtc_vblank_off(crtc); in tidss_crtc_atomic_disable()
299 enum drm_mode_status tidss_crtc_mode_valid(struct drm_crtc *crtc, in tidss_crtc_mode_valid() argument
302 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_mode_valid()
303 struct drm_device *ddev = crtc->dev; in tidss_crtc_mode_valid()
320 static int tidss_crtc_enable_vblank(struct drm_crtc *crtc) in tidss_crtc_enable_vblank() argument
322 struct drm_device *ddev = crtc->dev; in tidss_crtc_enable_vblank()
329 tidss_irq_enable_vblank(crtc); in tidss_crtc_enable_vblank()
334 static void tidss_crtc_disable_vblank(struct drm_crtc *crtc) in tidss_crtc_disable_vblank() argument
336 struct drm_device *ddev = crtc->dev; in tidss_crtc_disable_vblank()
341 tidss_irq_disable_vblank(crtc); in tidss_crtc_disable_vblank()
346 static void tidss_crtc_reset(struct drm_crtc *crtc) in tidss_crtc_reset() argument
350 if (crtc->state) in tidss_crtc_reset()
351 __drm_atomic_helper_crtc_destroy_state(crtc->state); in tidss_crtc_reset()
353 kfree(crtc->state); in tidss_crtc_reset()
357 crtc->state = NULL; in tidss_crtc_reset()
361 __drm_atomic_helper_crtc_reset(crtc, &tcrtc->base); in tidss_crtc_reset()
364 static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc) in tidss_crtc_duplicate_state() argument
368 if (WARN_ON(!crtc->state)) in tidss_crtc_duplicate_state()
371 current_state = to_tidss_crtc_state(crtc->state); in tidss_crtc_duplicate_state()
377 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in tidss_crtc_duplicate_state()
387 static void tidss_crtc_destroy(struct drm_crtc *crtc) in tidss_crtc_destroy() argument
389 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc); in tidss_crtc_destroy()
391 drm_crtc_cleanup(crtc); in tidss_crtc_destroy()
411 struct drm_crtc *crtc; in tidss_crtc_create() local
423 crtc = &tcrtc->crtc; in tidss_crtc_create()
425 ret = drm_crtc_init_with_planes(&tidss->ddev, crtc, primary, in tidss_crtc_create()
432 drm_crtc_helper_add(crtc, &tidss_crtc_helper_funcs); in tidss_crtc_create()
442 drm_crtc_enable_color_mgmt(crtc, 0, has_ctm, gamma_lut_size); in tidss_crtc_create()
444 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size); in tidss_crtc_create()