Lines Matching refs:crtc
66 static struct mdp4_kms *get_kms(struct drm_crtc *crtc) in get_kms() argument
68 struct msm_drm_private *priv = crtc->dev->dev_private; in get_kms()
72 static void request_pending(struct drm_crtc *crtc, uint32_t pending) in request_pending() argument
74 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in request_pending()
77 mdp_irq_register(&get_kms(crtc)->base, &mdp4_crtc->vblank); in request_pending()
80 static void crtc_flush(struct drm_crtc *crtc) in crtc_flush() argument
82 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in crtc_flush()
83 struct mdp4_kms *mdp4_kms = get_kms(crtc); in crtc_flush()
87 drm_atomic_crtc_for_each_plane(plane, crtc) { in crtc_flush()
100 static void complete_flip(struct drm_crtc *crtc, struct drm_file *file) in complete_flip() argument
102 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in complete_flip()
103 struct drm_device *dev = crtc->dev; in complete_flip()
133 static void mdp4_crtc_destroy(struct drm_crtc *crtc) in mdp4_crtc_destroy() argument
135 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_destroy()
137 drm_crtc_cleanup(crtc); in mdp4_crtc_destroy()
143 static bool mdp4_crtc_mode_fixup(struct drm_crtc *crtc, in mdp4_crtc_mode_fixup() argument
170 struct drm_crtc *crtc; in setup_mixer() local
176 list_for_each_entry(crtc, &config->crtc_list, head) { in setup_mixer()
177 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in setup_mixer()
180 drm_atomic_crtc_for_each_plane(plane, crtc) { in setup_mixer()
191 static void blend_setup(struct drm_crtc *crtc) in blend_setup() argument
193 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in blend_setup()
194 struct mdp4_kms *mdp4_kms = get_kms(crtc); in blend_setup()
204 drm_atomic_crtc_for_each_plane(plane, crtc) { in blend_setup()
239 static void mdp4_crtc_mode_set_nofb(struct drm_crtc *crtc) in mdp4_crtc_mode_set_nofb() argument
241 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_mode_set_nofb()
242 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_mode_set_nofb()
247 if (WARN_ON(!crtc->state)) in mdp4_crtc_mode_set_nofb()
250 mode = &crtc->state->adjusted_mode; in mdp4_crtc_mode_set_nofb()
287 static void mdp4_crtc_disable(struct drm_crtc *crtc) in mdp4_crtc_disable() argument
289 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_disable()
290 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_disable()
303 static void mdp4_crtc_enable(struct drm_crtc *crtc) in mdp4_crtc_enable() argument
305 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_enable()
306 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_enable()
316 crtc_flush(crtc); in mdp4_crtc_enable()
321 static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, in mdp4_crtc_atomic_check() argument
324 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_check()
330 static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc) in mdp4_crtc_atomic_begin() argument
332 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_begin()
336 static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc) in mdp4_crtc_atomic_flush() argument
338 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_atomic_flush()
339 struct drm_device *dev = crtc->dev; in mdp4_crtc_atomic_flush()
342 DBG("%s: event: %p", mdp4_crtc->name, crtc->state->event); in mdp4_crtc_atomic_flush()
347 mdp4_crtc->event = crtc->state->event; in mdp4_crtc_atomic_flush()
350 blend_setup(crtc); in mdp4_crtc_atomic_flush()
351 crtc_flush(crtc); in mdp4_crtc_atomic_flush()
352 request_pending(crtc, PENDING_FLIP); in mdp4_crtc_atomic_flush()
355 static int mdp4_crtc_set_property(struct drm_crtc *crtc, in mdp4_crtc_set_property() argument
370 static void update_cursor(struct drm_crtc *crtc) in update_cursor() argument
372 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in update_cursor()
373 struct mdp4_kms *mdp4_kms = get_kms(crtc); in update_cursor()
417 static int mdp4_crtc_cursor_set(struct drm_crtc *crtc, in mdp4_crtc_cursor_set() argument
421 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cursor_set()
422 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_cursor_set()
423 struct drm_device *dev = crtc->dev; in mdp4_crtc_cursor_set()
464 request_pending(crtc, PENDING_CURSOR); in mdp4_crtc_cursor_set()
473 static int mdp4_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) in mdp4_crtc_cursor_move() argument
475 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cursor_move()
483 crtc_flush(crtc); in mdp4_crtc_cursor_move()
484 request_pending(crtc, PENDING_CURSOR); in mdp4_crtc_cursor_move()
514 struct drm_crtc *crtc = &mdp4_crtc->base; in mdp4_crtc_vblank_irq() local
515 struct msm_drm_private *priv = crtc->dev->dev_private; in mdp4_crtc_vblank_irq()
518 mdp_irq_unregister(&get_kms(crtc)->base, &mdp4_crtc->vblank); in mdp4_crtc_vblank_irq()
523 complete_flip(crtc, NULL); in mdp4_crtc_vblank_irq()
527 update_cursor(crtc); in mdp4_crtc_vblank_irq()
535 struct drm_crtc *crtc = &mdp4_crtc->base; in mdp4_crtc_err_irq() local
537 crtc_flush(crtc); in mdp4_crtc_err_irq()
540 uint32_t mdp4_crtc_vblank(struct drm_crtc *crtc) in mdp4_crtc_vblank() argument
542 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_vblank()
546 void mdp4_crtc_cancel_pending_flip(struct drm_crtc *crtc, struct drm_file *file) in mdp4_crtc_cancel_pending_flip() argument
548 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_cancel_pending_flip()
550 complete_flip(crtc, file); in mdp4_crtc_cancel_pending_flip()
554 void mdp4_crtc_set_config(struct drm_crtc *crtc, uint32_t config) in mdp4_crtc_set_config() argument
556 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_set_config()
557 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_set_config()
563 void mdp4_crtc_set_intf(struct drm_crtc *crtc, enum mdp4_intf intf, int mixer) in mdp4_crtc_set_intf() argument
565 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); in mdp4_crtc_set_intf()
566 struct mdp4_kms *mdp4_kms = get_kms(crtc); in mdp4_crtc_set_intf()
596 blend_setup(crtc); in mdp4_crtc_set_intf()
612 struct drm_crtc *crtc = NULL; in mdp4_crtc_init() local
619 crtc = &mdp4_crtc->base; in mdp4_crtc_init()
640 drm_crtc_init_with_planes(dev, crtc, plane, NULL, &mdp4_crtc_funcs); in mdp4_crtc_init()
641 drm_crtc_helper_add(crtc, &mdp4_crtc_helper_funcs); in mdp4_crtc_init()
642 plane->crtc = crtc; in mdp4_crtc_init()
644 mdp4_plane_install_properties(plane, &crtc->base); in mdp4_crtc_init()
646 return crtc; in mdp4_crtc_init()