Lines Matching refs:crtc
71 static struct mdp5_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 mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in request_pending()
82 mdp_irq_register(&get_kms(crtc)->base, &mdp5_crtc->vblank); in request_pending()
85 static void crtc_flush(struct drm_crtc *crtc, u32 flush_mask) in crtc_flush() argument
87 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in crtc_flush()
98 static void crtc_flush_all(struct drm_crtc *crtc) in crtc_flush_all() argument
100 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in crtc_flush_all()
108 drm_atomic_crtc_for_each_plane(plane, crtc) { in crtc_flush_all()
114 crtc_flush(crtc, flush_mask); in crtc_flush_all()
118 static void complete_flip(struct drm_crtc *crtc, struct drm_file *file) in complete_flip() argument
120 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in complete_flip()
121 struct drm_device *dev = crtc->dev; in complete_flip()
141 drm_atomic_crtc_for_each_plane(plane, crtc) { in complete_flip()
145 if (mdp5_crtc->ctl && !crtc->state->enable) { in complete_flip()
161 static void mdp5_crtc_destroy(struct drm_crtc *crtc) in mdp5_crtc_destroy() argument
163 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_destroy()
165 drm_crtc_cleanup(crtc); in mdp5_crtc_destroy()
171 static bool mdp5_crtc_mode_fixup(struct drm_crtc *crtc, in mdp5_crtc_mode_fixup() argument
189 static void blend_setup(struct drm_crtc *crtc) in blend_setup() argument
191 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in blend_setup()
192 struct mdp5_kms *mdp5_kms = get_kms(crtc); in blend_setup()
207 drm_atomic_crtc_for_each_plane(plane, crtc) { in blend_setup()
239 static void mdp5_crtc_mode_set_nofb(struct drm_crtc *crtc) in mdp5_crtc_mode_set_nofb() argument
241 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_mode_set_nofb()
242 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_mode_set_nofb()
246 if (WARN_ON(!crtc->state)) in mdp5_crtc_mode_set_nofb()
249 mode = &crtc->state->adjusted_mode; in mdp5_crtc_mode_set_nofb()
267 static void mdp5_crtc_disable(struct drm_crtc *crtc) in mdp5_crtc_disable() argument
269 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_disable()
270 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_disable()
286 static void mdp5_crtc_enable(struct drm_crtc *crtc) in mdp5_crtc_enable() argument
288 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_enable()
289 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_enable()
314 static int mdp5_crtc_atomic_check(struct drm_crtc *crtc, in mdp5_crtc_atomic_check() argument
317 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_atomic_check()
318 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_atomic_check()
320 struct drm_device *dev = crtc->dev; in mdp5_crtc_atomic_check()
328 mdp5_crtc->ctl = mdp5_ctlm_request(mdp5_kms->ctlm, crtc); in mdp5_crtc_atomic_check()
370 static void mdp5_crtc_atomic_begin(struct drm_crtc *crtc) in mdp5_crtc_atomic_begin() argument
372 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_atomic_begin()
376 static void mdp5_crtc_atomic_flush(struct drm_crtc *crtc) in mdp5_crtc_atomic_flush() argument
378 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_atomic_flush()
379 struct drm_device *dev = crtc->dev; in mdp5_crtc_atomic_flush()
382 DBG("%s: event: %p", mdp5_crtc->name, crtc->state->event); in mdp5_crtc_atomic_flush()
387 mdp5_crtc->event = crtc->state->event; in mdp5_crtc_atomic_flush()
398 blend_setup(crtc); in mdp5_crtc_atomic_flush()
399 crtc_flush_all(crtc); in mdp5_crtc_atomic_flush()
400 request_pending(crtc, PENDING_FLIP); in mdp5_crtc_atomic_flush()
403 static int mdp5_crtc_set_property(struct drm_crtc *crtc, in mdp5_crtc_set_property() argument
410 static void get_roi(struct drm_crtc *crtc, uint32_t *roi_w, uint32_t *roi_h) in get_roi() argument
412 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in get_roi()
413 uint32_t xres = crtc->mode.hdisplay; in get_roi()
414 uint32_t yres = crtc->mode.vdisplay; in get_roi()
436 static int mdp5_crtc_cursor_set(struct drm_crtc *crtc, in mdp5_crtc_cursor_set() argument
440 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_cursor_set()
441 struct drm_device *dev = crtc->dev; in mdp5_crtc_cursor_set()
442 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_cursor_set()
486 get_roi(crtc, &roi_w, &roi_h); in mdp5_crtc_cursor_set()
513 crtc_flush(crtc, flush_mask); in mdp5_crtc_cursor_set()
519 request_pending(crtc, PENDING_CURSOR); in mdp5_crtc_cursor_set()
524 static int mdp5_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) in mdp5_crtc_cursor_move() argument
526 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_cursor_move()
527 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_cursor_move()
534 if (unlikely(!crtc->state->enable)) in mdp5_crtc_cursor_move()
540 get_roi(crtc, &roi_w, &roi_h); in mdp5_crtc_cursor_move()
551 crtc_flush(crtc, flush_mask); in mdp5_crtc_cursor_move()
581 struct drm_crtc *crtc = &mdp5_crtc->base; in mdp5_crtc_vblank_irq() local
582 struct msm_drm_private *priv = crtc->dev->dev_private; in mdp5_crtc_vblank_irq()
585 mdp_irq_unregister(&get_kms(crtc)->base, &mdp5_crtc->vblank); in mdp5_crtc_vblank_irq()
590 complete_flip(crtc, NULL); in mdp5_crtc_vblank_irq()
604 uint32_t mdp5_crtc_vblank(struct drm_crtc *crtc) in mdp5_crtc_vblank() argument
606 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_vblank()
610 void mdp5_crtc_cancel_pending_flip(struct drm_crtc *crtc, struct drm_file *file) in mdp5_crtc_cancel_pending_flip() argument
613 complete_flip(crtc, file); in mdp5_crtc_cancel_pending_flip()
617 void mdp5_crtc_set_intf(struct drm_crtc *crtc, struct mdp5_interface *intf) in mdp5_crtc_set_intf() argument
619 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_set_intf()
620 struct mdp5_kms *mdp5_kms = get_kms(crtc); in mdp5_crtc_set_intf()
621 int lm = mdp5_crtc_get_lm(crtc); in mdp5_crtc_set_intf()
640 int mdp5_crtc_get_lm(struct drm_crtc *crtc) in mdp5_crtc_get_lm() argument
642 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_get_lm()
643 return WARN_ON(!crtc) ? -EINVAL : mdp5_crtc->lm; in mdp5_crtc_get_lm()
646 struct mdp5_ctl *mdp5_crtc_get_ctl(struct drm_crtc *crtc) in mdp5_crtc_get_ctl() argument
648 struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc); in mdp5_crtc_get_ctl()
649 return WARN_ON(!crtc) ? NULL : mdp5_crtc->ctl; in mdp5_crtc_get_ctl()
656 struct drm_crtc *crtc = NULL; in mdp5_crtc_init() local
663 crtc = &mdp5_crtc->base; in mdp5_crtc_init()
677 drm_crtc_init_with_planes(dev, crtc, plane, NULL, &mdp5_crtc_funcs); in mdp5_crtc_init()
682 drm_crtc_helper_add(crtc, &mdp5_crtc_helper_funcs); in mdp5_crtc_init()
683 plane->crtc = crtc; in mdp5_crtc_init()
685 mdp5_plane_install_properties(plane, &crtc->base); in mdp5_crtc_init()
687 return crtc; in mdp5_crtc_init()