Lines Matching refs:crtc

23 	struct drm_device *ddev = tcrtc->crtc.dev;
51 drm_crtc_send_vblank_event(&tcrtc->crtc, event);
55 drm_crtc_vblank_put(&tcrtc->crtc);
58 void tidss_crtc_vblank_irq(struct drm_crtc *crtc)
60 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
62 drm_crtc_handle_vblank(crtc);
67 void tidss_crtc_framedone_irq(struct drm_crtc *crtc)
69 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
74 void tidss_crtc_error_irq(struct drm_crtc *crtc, u64 irqstatus)
76 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
78 dev_err_ratelimited(crtc->dev->dev, "CRTC%u SYNC LOST: (irq %llx)\n",
84 static int tidss_crtc_atomic_check(struct drm_crtc *crtc,
88 crtc);
89 struct drm_device *ddev = crtc->dev;
92 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
120 struct drm_crtc *crtc,
125 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
126 struct drm_crtc_state *cstate = crtc->state;
140 if (pstate->crtc != crtc || !pstate->visible)
162 static void tidss_crtc_atomic_flush(struct drm_crtc *crtc,
166 crtc);
167 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
168 struct drm_device *ddev = crtc->dev;
173 __func__, crtc->name, crtc->state->active ? "" : "not ",
174 drm_atomic_crtc_needs_modeset(crtc->state) ? "needs" : "doesn't need",
175 crtc->state->event);
181 if (drm_atomic_crtc_needs_modeset(crtc->state))
189 if (WARN_ON(!crtc->state->event))
193 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false);
196 tidss_crtc_position_planes(tidss, crtc, old_crtc_state, false);
198 WARN_ON(drm_crtc_vblank_get(crtc) != 0);
205 tcrtc->event = crtc->state->event;
206 crtc->state->event = NULL;
211 static void tidss_crtc_atomic_enable(struct drm_crtc *crtc,
215 crtc);
216 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
217 struct drm_device *ddev = crtc->dev;
219 const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
223 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event);
236 dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true);
237 tidss_crtc_position_planes(tidss, crtc, old_state, true);
240 drm_crtc_vblank_on(crtc);
242 dispc_vp_prepare(tidss->dispc, tcrtc->hw_videoport, crtc->state);
244 dispc_vp_enable(tidss->dispc, tcrtc->hw_videoport, crtc->state);
248 if (crtc->state->event) {
249 drm_crtc_send_vblank_event(crtc, crtc->state->event);
250 crtc->state->event = NULL;
256 static void tidss_crtc_atomic_disable(struct drm_crtc *crtc,
259 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
260 struct drm_device *ddev = crtc->dev;
264 dev_dbg(ddev->dev, "%s, event %p\n", __func__, crtc->state->event);
282 dev_err(tidss->dev, "Timeout waiting for framedone on crtc %d",
288 if (crtc->state->event) {
289 drm_crtc_send_vblank_event(crtc, crtc->state->event);
290 crtc->state->event = NULL;
294 drm_crtc_vblank_off(crtc);
302 enum drm_mode_status tidss_crtc_mode_valid(struct drm_crtc *crtc,
305 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
306 struct drm_device *ddev = crtc->dev;
323 static int tidss_crtc_enable_vblank(struct drm_crtc *crtc)
325 struct drm_device *ddev = crtc->dev;
332 tidss_irq_enable_vblank(crtc);
337 static void tidss_crtc_disable_vblank(struct drm_crtc *crtc)
339 struct drm_device *ddev = crtc->dev;
344 tidss_irq_disable_vblank(crtc);
349 static void tidss_crtc_reset(struct drm_crtc *crtc)
353 if (crtc->state)
354 __drm_atomic_helper_crtc_destroy_state(crtc->state);
356 kfree(crtc->state);
360 crtc->state = NULL;
364 __drm_atomic_helper_crtc_reset(crtc, &tcrtc->base);
367 static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc)
371 if (WARN_ON(!crtc->state))
374 current_state = to_tidss_crtc_state(crtc->state);
380 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
390 static void tidss_crtc_destroy(struct drm_crtc *crtc)
392 struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
394 drm_crtc_cleanup(crtc);
414 struct drm_crtc *crtc;
426 crtc = &tcrtc->crtc;
428 ret = drm_crtc_init_with_planes(&tidss->ddev, crtc, primary,
435 drm_crtc_helper_add(crtc, &tidss_crtc_helper_funcs);
445 drm_crtc_enable_color_mgmt(crtc, 0, has_ctm, gamma_lut_size);
447 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size);