Lines Matching full:crtc
55 struct videomode *omap_crtc_timings(struct drm_crtc *crtc) in omap_crtc_timings() argument
57 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_timings()
61 enum omap_channel omap_crtc_channel(struct drm_crtc *crtc) in omap_crtc_channel() argument
63 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_channel()
67 static bool omap_crtc_is_pending(struct drm_crtc *crtc) in omap_crtc_is_pending() argument
69 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_is_pending()
73 spin_lock_irqsave(&crtc->dev->event_lock, flags); in omap_crtc_is_pending()
75 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in omap_crtc_is_pending()
80 int omap_crtc_wait_pending(struct drm_crtc *crtc) in omap_crtc_wait_pending() argument
82 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_wait_pending()
89 !omap_crtc_is_pending(crtc), in omap_crtc_wait_pending()
109 void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable) in omap_crtc_set_enabled() argument
111 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_set_enabled()
112 struct drm_device *dev = crtc->dev; in omap_crtc_set_enabled()
114 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_set_enabled()
124 omap_irq_enable_framedone(crtc, enable); in omap_crtc_set_enabled()
184 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_enable() local
185 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_enable()
196 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_disable() local
197 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_disable()
206 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_timings() local
207 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_timings()
217 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_lcd_config() local
218 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_lcd_config()
229 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_register_framedone() local
230 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_register_framedone()
248 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_unregister_framedone() local
249 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_unregister_framedone()
265 void omap_crtc_error_irq(struct drm_crtc *crtc, u32 irqstatus) in omap_crtc_error_irq() argument
267 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_error_irq()
278 void omap_crtc_vblank_irq(struct drm_crtc *crtc) in omap_crtc_vblank_irq() argument
280 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_vblank_irq()
285 spin_lock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
291 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
297 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_vblank_irq()
303 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
306 drm_crtc_vblank_put(crtc); in omap_crtc_vblank_irq()
314 void omap_crtc_framedone_irq(struct drm_crtc *crtc, uint32_t irqstatus) in omap_crtc_framedone_irq() argument
316 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_framedone_irq()
323 spin_lock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
326 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_framedone_irq()
330 spin_unlock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
336 void omap_crtc_flush(struct drm_crtc *crtc) in omap_crtc_flush() argument
338 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_flush()
339 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_flush()
395 static void omap_crtc_write_crtc_properties(struct drm_crtc *crtc) in omap_crtc_write_crtc_properties() argument
397 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_write_crtc_properties()
398 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_write_crtc_properties()
407 if (crtc->state->ctm) { in omap_crtc_write_crtc_properties()
408 struct drm_color_ctm *ctm = crtc->state->ctm->data; in omap_crtc_write_crtc_properties()
420 * CRTC Functions
423 static void omap_crtc_destroy(struct drm_crtc *crtc) in omap_crtc_destroy() argument
425 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_destroy()
429 drm_crtc_cleanup(crtc); in omap_crtc_destroy()
434 static void omap_crtc_arm_event(struct drm_crtc *crtc) in omap_crtc_arm_event() argument
436 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_arm_event()
441 if (crtc->state->event) { in omap_crtc_arm_event()
442 omap_crtc->event = crtc->state->event; in omap_crtc_arm_event()
443 crtc->state->event = NULL; in omap_crtc_arm_event()
447 static void omap_crtc_atomic_enable(struct drm_crtc *crtc, in omap_crtc_atomic_enable() argument
450 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_enable()
451 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_enable()
452 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_enable()
463 drm_crtc_vblank_on(crtc); in omap_crtc_atomic_enable()
465 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_enable()
468 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
469 omap_crtc_arm_event(crtc); in omap_crtc_atomic_enable()
470 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
473 static void omap_crtc_atomic_disable(struct drm_crtc *crtc, in omap_crtc_atomic_disable() argument
476 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_disable()
477 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_disable()
478 struct drm_device *dev = crtc->dev; in omap_crtc_atomic_disable()
482 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
483 if (crtc->state->event) { in omap_crtc_atomic_disable()
484 drm_crtc_send_vblank_event(crtc, crtc->state->event); in omap_crtc_atomic_disable()
485 crtc->state->event = NULL; in omap_crtc_atomic_disable()
487 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
491 if (!omap_crtc_wait_pending(crtc)) in omap_crtc_atomic_disable()
494 drm_crtc_vblank_off(crtc); in omap_crtc_atomic_disable()
499 static enum drm_mode_status omap_crtc_mode_valid(struct drm_crtc *crtc, in omap_crtc_mode_valid() argument
502 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_mode_valid()
503 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_valid()
552 static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc) in omap_crtc_mode_set_nofb() argument
554 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_set_nofb()
555 struct drm_display_mode *mode = &crtc->state->adjusted_mode; in omap_crtc_mode_set_nofb()
563 static bool omap_crtc_is_manually_updated(struct drm_crtc *crtc) in omap_crtc_is_manually_updated() argument
565 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_is_manually_updated()
578 static int omap_crtc_atomic_check(struct drm_crtc *crtc, in omap_crtc_atomic_check() argument
582 crtc); in omap_crtc_atomic_check()
594 crtc->primary); in omap_crtc_atomic_check()
603 /* Check if this CRTC is for a manually updated display */ in omap_crtc_atomic_check()
604 omap_crtc_state->manually_updated = omap_crtc_is_manually_updated(crtc); in omap_crtc_atomic_check()
610 static void omap_crtc_atomic_begin(struct drm_crtc *crtc, in omap_crtc_atomic_begin() argument
615 static void omap_crtc_atomic_flush(struct drm_crtc *crtc, in omap_crtc_atomic_flush() argument
618 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_flush()
619 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_flush()
620 struct omap_crtc_state *omap_crtc_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_flush()
623 if (crtc->state->color_mgmt_changed) { in omap_crtc_atomic_flush()
627 if (crtc->state->degamma_lut) { in omap_crtc_atomic_flush()
629 crtc->state->degamma_lut->data; in omap_crtc_atomic_flush()
630 length = crtc->state->degamma_lut->length / in omap_crtc_atomic_flush()
637 omap_crtc_write_crtc_properties(crtc); in omap_crtc_atomic_flush()
639 /* Only flush the CRTC if it is currently enabled. */ in omap_crtc_atomic_flush()
647 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
648 omap_crtc_flush(crtc); in omap_crtc_atomic_flush()
649 omap_crtc_arm_event(crtc); in omap_crtc_atomic_flush()
650 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
654 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_flush()
657 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
659 omap_crtc_arm_event(crtc); in omap_crtc_atomic_flush()
660 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
663 static int omap_crtc_atomic_set_property(struct drm_crtc *crtc, in omap_crtc_atomic_set_property() argument
668 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_set_property()
675 * always be mirrored in the crtc state correctly. in omap_crtc_atomic_set_property()
677 plane_state = drm_atomic_get_plane_state(state->state, crtc->primary); in omap_crtc_atomic_set_property()
681 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_set_property()
691 static int omap_crtc_atomic_get_property(struct drm_crtc *crtc, in omap_crtc_atomic_get_property() argument
696 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_get_property()
699 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_get_property()
709 static void omap_crtc_reset(struct drm_crtc *crtc) in omap_crtc_reset() argument
713 if (crtc->state) in omap_crtc_reset()
714 __drm_atomic_helper_crtc_destroy_state(crtc->state); in omap_crtc_reset()
716 kfree(crtc->state); in omap_crtc_reset()
720 __drm_atomic_helper_crtc_reset(crtc, &state->base); in omap_crtc_reset()
724 omap_crtc_duplicate_state(struct drm_crtc *crtc) in omap_crtc_duplicate_state() argument
728 if (WARN_ON(!crtc->state)) in omap_crtc_duplicate_state()
731 current_state = to_omap_crtc_state(crtc->state); in omap_crtc_duplicate_state()
737 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in omap_crtc_duplicate_state()
780 /* initialize crtc */
786 struct drm_crtc *crtc = NULL; in omap_crtc_init() local
799 crtc = &omap_crtc->base; in omap_crtc_init()
820 ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, in omap_crtc_init()
823 dev_err(dev->dev, "%s(): could not init crtc for: %s\n", in omap_crtc_init()
829 drm_crtc_helper_add(crtc, &omap_crtc_helper_funcs); in omap_crtc_init()
841 drm_crtc_enable_color_mgmt(crtc, gamma_lut_size, true, 0); in omap_crtc_init()
842 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size); in omap_crtc_init()
845 omap_plane_install_properties(crtc->primary, &crtc->base); in omap_crtc_init()
847 return crtc; in omap_crtc_init()