Lines Matching refs:crtc
56 struct videomode *omap_crtc_timings(struct drm_crtc *crtc) in omap_crtc_timings() argument
58 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_timings()
62 enum omap_channel omap_crtc_channel(struct drm_crtc *crtc) in omap_crtc_channel() argument
64 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_channel()
68 static bool omap_crtc_is_pending(struct drm_crtc *crtc) in omap_crtc_is_pending() argument
70 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_is_pending()
74 spin_lock_irqsave(&crtc->dev->event_lock, flags); in omap_crtc_is_pending()
76 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in omap_crtc_is_pending()
81 int omap_crtc_wait_pending(struct drm_crtc *crtc) in omap_crtc_wait_pending() argument
83 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_wait_pending()
90 !omap_crtc_is_pending(crtc), in omap_crtc_wait_pending()
110 void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable) in omap_crtc_set_enabled() argument
112 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_set_enabled()
113 struct drm_device *dev = crtc->dev; in omap_crtc_set_enabled()
115 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_set_enabled()
125 omap_irq_enable_framedone(crtc, enable); in omap_crtc_set_enabled()
185 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_enable() local
186 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_enable()
197 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_disable() local
198 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_disable()
207 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_timings() local
208 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_timings()
218 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_lcd_config() local
219 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_lcd_config()
230 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_register_framedone() local
231 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_register_framedone()
249 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_unregister_framedone() local
250 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_unregister_framedone()
266 void omap_crtc_error_irq(struct drm_crtc *crtc, u32 irqstatus) in omap_crtc_error_irq() argument
268 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_error_irq()
279 void omap_crtc_vblank_irq(struct drm_crtc *crtc) in omap_crtc_vblank_irq() argument
281 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_vblank_irq()
286 spin_lock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
292 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
298 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_vblank_irq()
304 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
307 drm_crtc_vblank_put(crtc); in omap_crtc_vblank_irq()
315 void omap_crtc_framedone_irq(struct drm_crtc *crtc, uint32_t irqstatus) in omap_crtc_framedone_irq() argument
317 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_framedone_irq()
324 spin_lock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
327 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_framedone_irq()
331 spin_unlock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
337 void omap_crtc_flush(struct drm_crtc *crtc) in omap_crtc_flush() argument
339 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_flush()
340 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_flush()
396 static void omap_crtc_write_crtc_properties(struct drm_crtc *crtc) in omap_crtc_write_crtc_properties() argument
398 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_write_crtc_properties()
399 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_write_crtc_properties()
408 if (crtc->state->ctm) { in omap_crtc_write_crtc_properties()
409 struct drm_color_ctm *ctm = crtc->state->ctm->data; in omap_crtc_write_crtc_properties()
424 static void omap_crtc_destroy(struct drm_crtc *crtc) in omap_crtc_destroy() argument
426 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_destroy()
430 drm_crtc_cleanup(crtc); in omap_crtc_destroy()
435 static void omap_crtc_arm_event(struct drm_crtc *crtc) in omap_crtc_arm_event() argument
437 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_arm_event()
442 if (crtc->state->event) { in omap_crtc_arm_event()
443 omap_crtc->event = crtc->state->event; in omap_crtc_arm_event()
444 crtc->state->event = NULL; in omap_crtc_arm_event()
448 static void omap_crtc_atomic_enable(struct drm_crtc *crtc, in omap_crtc_atomic_enable() argument
451 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_enable()
452 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_enable()
453 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_enable()
464 drm_crtc_vblank_on(crtc); in omap_crtc_atomic_enable()
466 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_enable()
469 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
470 omap_crtc_arm_event(crtc); in omap_crtc_atomic_enable()
471 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
474 static void omap_crtc_atomic_disable(struct drm_crtc *crtc, in omap_crtc_atomic_disable() argument
477 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_disable()
478 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_disable()
479 struct drm_device *dev = crtc->dev; in omap_crtc_atomic_disable()
483 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
484 if (crtc->state->event) { in omap_crtc_atomic_disable()
485 drm_crtc_send_vblank_event(crtc, crtc->state->event); in omap_crtc_atomic_disable()
486 crtc->state->event = NULL; in omap_crtc_atomic_disable()
488 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
492 if (!omap_crtc_wait_pending(crtc)) in omap_crtc_atomic_disable()
495 drm_crtc_vblank_off(crtc); in omap_crtc_atomic_disable()
500 static enum drm_mode_status omap_crtc_mode_valid(struct drm_crtc *crtc, in omap_crtc_mode_valid() argument
503 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_mode_valid()
504 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_valid()
553 static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc) in omap_crtc_mode_set_nofb() argument
555 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_set_nofb()
556 struct drm_display_mode *mode = &crtc->state->adjusted_mode; in omap_crtc_mode_set_nofb()
564 static bool omap_crtc_is_manually_updated(struct drm_crtc *crtc) in omap_crtc_is_manually_updated() argument
566 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_is_manually_updated()
579 static int omap_crtc_atomic_check(struct drm_crtc *crtc, in omap_crtc_atomic_check() argument
583 crtc); in omap_crtc_atomic_check()
595 crtc->primary); in omap_crtc_atomic_check()
605 omap_crtc_state->manually_updated = omap_crtc_is_manually_updated(crtc); in omap_crtc_atomic_check()
611 static void omap_crtc_atomic_begin(struct drm_crtc *crtc, in omap_crtc_atomic_begin() argument
616 static void omap_crtc_atomic_flush(struct drm_crtc *crtc, in omap_crtc_atomic_flush() argument
619 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_flush()
620 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_flush()
621 struct omap_crtc_state *omap_crtc_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_flush()
624 if (crtc->state->color_mgmt_changed) { in omap_crtc_atomic_flush()
628 if (crtc->state->degamma_lut) { in omap_crtc_atomic_flush()
630 crtc->state->degamma_lut->data; in omap_crtc_atomic_flush()
631 length = crtc->state->degamma_lut->length / in omap_crtc_atomic_flush()
638 omap_crtc_write_crtc_properties(crtc); in omap_crtc_atomic_flush()
648 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
649 omap_crtc_flush(crtc); in omap_crtc_atomic_flush()
650 omap_crtc_arm_event(crtc); in omap_crtc_atomic_flush()
651 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
655 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_flush()
658 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
660 omap_crtc_arm_event(crtc); in omap_crtc_atomic_flush()
661 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
664 static int omap_crtc_atomic_set_property(struct drm_crtc *crtc, in omap_crtc_atomic_set_property() argument
669 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_set_property()
678 plane_state = drm_atomic_get_plane_state(state->state, crtc->primary); in omap_crtc_atomic_set_property()
682 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_set_property()
692 static int omap_crtc_atomic_get_property(struct drm_crtc *crtc, in omap_crtc_atomic_get_property() argument
697 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_get_property()
700 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_get_property()
710 static void omap_crtc_reset(struct drm_crtc *crtc) in omap_crtc_reset() argument
714 if (crtc->state) in omap_crtc_reset()
715 __drm_atomic_helper_crtc_destroy_state(crtc->state); in omap_crtc_reset()
717 kfree(crtc->state); in omap_crtc_reset()
721 __drm_atomic_helper_crtc_reset(crtc, &state->base); in omap_crtc_reset()
725 omap_crtc_duplicate_state(struct drm_crtc *crtc) in omap_crtc_duplicate_state() argument
729 if (WARN_ON(!crtc->state)) in omap_crtc_duplicate_state()
732 current_state = to_omap_crtc_state(crtc->state); in omap_crtc_duplicate_state()
738 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in omap_crtc_duplicate_state()
787 struct drm_crtc *crtc = NULL; in omap_crtc_init() local
800 crtc = &omap_crtc->base; in omap_crtc_init()
821 ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL, in omap_crtc_init()
830 drm_crtc_helper_add(crtc, &omap_crtc_helper_funcs); in omap_crtc_init()
842 drm_crtc_enable_color_mgmt(crtc, gamma_lut_size, true, 0); in omap_crtc_init()
843 drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size); in omap_crtc_init()
846 omap_plane_install_properties(crtc->primary, &crtc->base); in omap_crtc_init()
848 return crtc; in omap_crtc_init()