Lines Matching refs:crtc

71 static struct mdp4_kms *get_kms(struct drm_crtc *crtc)  in get_kms()  argument
73 struct msm_drm_private *priv = crtc->dev->dev_private; in get_kms()
77 static void request_pending(struct drm_crtc *crtc, uint32_t pending) in request_pending() argument
79 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in request_pending()
82 mdp_irq_register(&get_kms(crtc)->base, &mdp4_crtc->vblank); in request_pending()
85 static void crtc_flush(struct drm_crtc *crtc) in crtc_flush() argument
87 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in crtc_flush()
88 struct mdp4_kms *mdp4_kms = get_kms(crtc); in crtc_flush()
92 drm_atomic_crtc_for_each_plane(plane, crtc) { in crtc_flush()
107 static void complete_flip(struct drm_crtc *crtc, struct drm_file *file) in complete_flip() argument
109 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in complete_flip()
110 struct drm_device *dev = crtc->dev; in complete_flip()
140 static void mdp4_crtc_destroy(struct drm_crtc *crtc) in mdp4_crtc_destroy() argument
142 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_destroy()
144 drm_crtc_cleanup(crtc); in mdp4_crtc_destroy()
150 static bool mdp4_crtc_mode_fixup(struct drm_crtc *crtc, in mdp4_crtc_mode_fixup() argument
177 struct drm_crtc *crtc; in setup_mixer() local
183 list_for_each_entry(crtc, &config->crtc_list, head) { in setup_mixer()
184 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in setup_mixer()
187 drm_atomic_crtc_for_each_plane(plane, crtc) { in setup_mixer()
198 static void blend_setup(struct drm_crtc *crtc) in blend_setup() argument
200 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in blend_setup()
201 struct mdp4_kms *mdp4_kms = get_kms(crtc); in blend_setup()
211 drm_atomic_crtc_for_each_plane(plane, crtc) { in blend_setup()
246 static void mdp4_crtc_mode_set_nofb(struct drm_crtc *crtc) in mdp4_crtc_mode_set_nofb() argument
248 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_mode_set_nofb()
249 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_mode_set_nofb()
254 if (WARN_ON(!crtc->state)) in mdp4_crtc_mode_set_nofb()
257 mode = &crtc->state->adjusted_mode; in mdp4_crtc_mode_set_nofb()
294 static void mdp4_crtc_disable(struct drm_crtc *crtc) in mdp4_crtc_disable() argument
296 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_disable()
297 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_disable()
310 static void mdp4_crtc_enable(struct drm_crtc *crtc) in mdp4_crtc_enable() argument
312 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_enable()
313 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_enable()
323 crtc_flush(crtc); in mdp4_crtc_enable()
328 static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, in mdp4_crtc_atomic_check() argument
331 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_check()
337 static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc, in mdp4_crtc_atomic_begin() argument
340 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_begin()
344 static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc, in mdp4_crtc_atomic_flush() argument
347 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_flush()
348 struct drm_device *dev = crtc->dev; in mdp4_crtc_atomic_flush()
351 DBG("%s: event: %p", mdp4_crtc->name, crtc->state->event); in mdp4_crtc_atomic_flush()
356 mdp4_crtc->event = crtc->state->event; in mdp4_crtc_atomic_flush()
359 blend_setup(crtc); in mdp4_crtc_atomic_flush()
360 crtc_flush(crtc); in mdp4_crtc_atomic_flush()
361 request_pending(crtc, PENDING_FLIP); in mdp4_crtc_atomic_flush()
364 static int mdp4_crtc_set_property(struct drm_crtc *crtc, in mdp4_crtc_set_property() argument
379 static void update_cursor(struct drm_crtc *crtc) in update_cursor() argument
381 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in update_cursor()
382 struct mdp4_kms *mdp4_kms = get_kms(crtc); in update_cursor()
426 static int mdp4_crtc_cursor_set(struct drm_crtc *crtc, in mdp4_crtc_cursor_set() argument
430 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cursor_set()
431 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_cursor_set()
432 struct drm_device *dev = crtc->dev; in mdp4_crtc_cursor_set()
473 request_pending(crtc, PENDING_CURSOR); in mdp4_crtc_cursor_set()
482 static int mdp4_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) in mdp4_crtc_cursor_move() argument
484 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cursor_move()
492 crtc_flush(crtc); in mdp4_crtc_cursor_move()
493 request_pending(crtc, PENDING_CURSOR); in mdp4_crtc_cursor_move()
523 struct drm_crtc *crtc = &mdp4_crtc->base; in mdp4_crtc_vblank_irq() local
524 struct msm_drm_private *priv = crtc->dev->dev_private; in mdp4_crtc_vblank_irq()
527 mdp_irq_unregister(&get_kms(crtc)->base, &mdp4_crtc->vblank); in mdp4_crtc_vblank_irq()
532 complete_flip(crtc, NULL); in mdp4_crtc_vblank_irq()
536 update_cursor(crtc); in mdp4_crtc_vblank_irq()
544 struct drm_crtc *crtc = &mdp4_crtc->base; in mdp4_crtc_err_irq() local
546 crtc_flush(crtc); in mdp4_crtc_err_irq()
549 static void mdp4_crtc_wait_for_flush_done(struct drm_crtc *crtc) in mdp4_crtc_wait_for_flush_done() argument
551 struct drm_device *dev = crtc->dev; in mdp4_crtc_wait_for_flush_done()
552 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_wait_for_flush_done()
553 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_wait_for_flush_done()
556 ret = drm_crtc_vblank_get(crtc); in mdp4_crtc_wait_for_flush_done()
560 ret = wait_event_timeout(dev->vblank[drm_crtc_index(crtc)].queue, in mdp4_crtc_wait_for_flush_done()
569 drm_crtc_vblank_put(crtc); in mdp4_crtc_wait_for_flush_done()
572 uint32_t mdp4_crtc_vblank(struct drm_crtc *crtc) in mdp4_crtc_vblank() argument
574 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_vblank()
578 void mdp4_crtc_cancel_pending_flip(struct drm_crtc *crtc, struct drm_file *file) in mdp4_crtc_cancel_pending_flip() argument
580 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cancel_pending_flip()
582 complete_flip(crtc, file); in mdp4_crtc_cancel_pending_flip()
586 void mdp4_crtc_set_config(struct drm_crtc *crtc, uint32_t config) in mdp4_crtc_set_config() argument
588 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_set_config()
589 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_set_config()
595 void mdp4_crtc_set_intf(struct drm_crtc *crtc, enum mdp4_intf intf, int mixer) in mdp4_crtc_set_intf() argument
597 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_set_intf()
598 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_set_intf()
628 blend_setup(crtc); in mdp4_crtc_set_intf()
635 void mdp4_crtc_wait_for_commit_done(struct drm_crtc *crtc) in mdp4_crtc_wait_for_commit_done() argument
641 mdp4_crtc_wait_for_flush_done(crtc); in mdp4_crtc_wait_for_commit_done()
653 struct drm_crtc *crtc = NULL; in mdp4_crtc_init() local
660 crtc = &mdp4_crtc->base; in mdp4_crtc_init()
681 drm_crtc_init_with_planes(dev, crtc, plane, NULL, &mdp4_crtc_funcs); in mdp4_crtc_init()
682 drm_crtc_helper_add(crtc, &mdp4_crtc_helper_funcs); in mdp4_crtc_init()
683 plane->crtc = crtc; in mdp4_crtc_init()
685 return crtc; in mdp4_crtc_init()