Lines Matching refs:crtc

62 static struct mdp4_kms *get_kms(struct drm_crtc *crtc)
64 struct msm_drm_private *priv = crtc->dev->dev_private;
68 static void request_pending(struct drm_crtc *crtc, uint32_t pending)
70 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
73 mdp_irq_register(&get_kms(crtc)->base, &mdp4_crtc->vblank);
76 static void crtc_flush(struct drm_crtc *crtc)
78 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
79 struct mdp4_kms *mdp4_kms = get_kms(crtc);
83 drm_atomic_crtc_for_each_plane(plane, crtc) {
98 static void complete_flip(struct drm_crtc *crtc, struct drm_file *file)
100 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
101 struct drm_device *dev = crtc->dev;
110 drm_crtc_send_vblank_event(crtc, event);
138 /* setup mixer config, for which we need to consider all crtc's and
146 struct drm_crtc *crtc;
152 list_for_each_entry(crtc, &config->crtc_list, head) {
153 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
156 drm_atomic_crtc_for_each_plane(plane, crtc) {
167 static void blend_setup(struct drm_crtc *crtc)
169 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
170 struct mdp4_kms *mdp4_kms = get_kms(crtc);
180 drm_atomic_crtc_for_each_plane(plane, crtc) {
215 static void mdp4_crtc_mode_set_nofb(struct drm_crtc *crtc)
217 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
218 struct mdp4_kms *mdp4_kms = get_kms(crtc);
223 if (WARN_ON(!crtc->state))
226 mode = &crtc->state->adjusted_mode;
257 static void mdp4_crtc_atomic_disable(struct drm_crtc *crtc,
260 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
261 struct mdp4_kms *mdp4_kms = get_kms(crtc);
270 drm_crtc_vblank_off(crtc);
275 if (crtc->state->event && !crtc->state->active) {
278 drm_crtc_send_vblank_event(crtc, crtc->state->event);
279 crtc->state->event = NULL;
286 static void mdp4_crtc_atomic_enable(struct drm_crtc *crtc,
289 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
290 struct mdp4_kms *mdp4_kms = get_kms(crtc);
300 drm_crtc_vblank_on(crtc);
304 crtc_flush(crtc);
309 static int mdp4_crtc_atomic_check(struct drm_crtc *crtc,
312 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
318 static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc,
321 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
325 static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc,
328 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
329 struct drm_device *dev = crtc->dev;
332 DBG("%s: event: %p", mdp4_crtc->name, crtc->state->event);
337 mdp4_crtc->event = crtc->state->event;
338 crtc->state->event = NULL;
341 blend_setup(crtc);
342 crtc_flush(crtc);
343 request_pending(crtc, PENDING_FLIP);
354 static void update_cursor(struct drm_crtc *crtc)
356 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
357 struct mdp4_kms *mdp4_kms = get_kms(crtc);
402 static int mdp4_crtc_cursor_set(struct drm_crtc *crtc,
406 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
407 struct mdp4_kms *mdp4_kms = get_kms(crtc);
409 struct drm_device *dev = crtc->dev;
450 request_pending(crtc, PENDING_CURSOR);
459 static int mdp4_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
461 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
469 crtc_flush(crtc);
470 request_pending(crtc, PENDING_CURSOR);
499 struct drm_crtc *crtc = &mdp4_crtc->base;
500 struct msm_drm_private *priv = crtc->dev->dev_private;
503 mdp_irq_unregister(&get_kms(crtc)->base, &mdp4_crtc->vblank);
508 complete_flip(crtc, NULL);
512 update_cursor(crtc);
520 struct drm_crtc *crtc = &mdp4_crtc->base;
522 crtc_flush(crtc);
525 static void mdp4_crtc_wait_for_flush_done(struct drm_crtc *crtc)
527 struct drm_device *dev = crtc->dev;
528 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
529 struct mdp4_kms *mdp4_kms = get_kms(crtc);
532 ret = drm_crtc_vblank_get(crtc);
536 ret = wait_event_timeout(dev->vblank[drm_crtc_index(crtc)].queue,
541 dev_warn(dev->dev, "vblank time out, crtc=%s\n", mdp4_crtc->base.name);
545 drm_crtc_vblank_put(crtc);
548 uint32_t mdp4_crtc_vblank(struct drm_crtc *crtc)
550 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
555 void mdp4_crtc_set_config(struct drm_crtc *crtc, uint32_t config)
557 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
558 struct mdp4_kms *mdp4_kms = get_kms(crtc);
563 /* set interface for routing crtc->encoder: */
564 void mdp4_crtc_set_intf(struct drm_crtc *crtc, enum mdp4_intf intf, int mixer)
566 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
567 struct mdp4_kms *mdp4_kms = get_kms(crtc);
597 blend_setup(crtc);
604 void mdp4_crtc_wait_for_commit_done(struct drm_crtc *crtc)
610 mdp4_crtc_wait_for_flush_done(crtc);
624 /* initialize crtc */
629 struct drm_crtc *crtc = NULL;
639 crtc = &mdp4_crtc->base;
661 drm_crtc_helper_add(crtc, &mdp4_crtc_helper_funcs);
663 return crtc;