Lines Matching full: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 static 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()
186 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_enable() local
187 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_enable()
199 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_disable() local
200 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_disable()
209 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_timings() local
210 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_timings()
220 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_set_lcd_config() local
221 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_set_lcd_config()
232 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_register_framedone() local
233 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_register_framedone()
251 struct drm_crtc *crtc = priv->channels[channel]->crtc; in omap_crtc_dss_unregister_framedone() local
252 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_dss_unregister_framedone()
278 void omap_crtc_error_irq(struct drm_crtc *crtc, u32 irqstatus) in omap_crtc_error_irq() argument
280 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_error_irq()
291 void omap_crtc_vblank_irq(struct drm_crtc *crtc) in omap_crtc_vblank_irq() argument
293 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_vblank_irq()
298 spin_lock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
304 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
310 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_vblank_irq()
316 spin_unlock(&crtc->dev->event_lock); in omap_crtc_vblank_irq()
319 drm_crtc_vblank_put(crtc); in omap_crtc_vblank_irq()
327 void omap_crtc_framedone_irq(struct drm_crtc *crtc, uint32_t irqstatus) in omap_crtc_framedone_irq() argument
329 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_framedone_irq()
336 spin_lock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
339 drm_crtc_send_vblank_event(crtc, omap_crtc->event); in omap_crtc_framedone_irq()
343 spin_unlock(&crtc->dev->event_lock); in omap_crtc_framedone_irq()
349 void omap_crtc_flush(struct drm_crtc *crtc) in omap_crtc_flush() argument
351 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_flush()
352 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_flush()
365 struct drm_display_mode *mode = &omap_crtc->pipe->crtc->mode; in omap_crtc_manual_display_update()
394 static void omap_crtc_write_crtc_properties(struct drm_crtc *crtc) in omap_crtc_write_crtc_properties() argument
396 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_write_crtc_properties()
397 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_write_crtc_properties()
411 * CRTC Functions
414 static void omap_crtc_destroy(struct drm_crtc *crtc) in omap_crtc_destroy() argument
416 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_destroy()
420 drm_crtc_cleanup(crtc); in omap_crtc_destroy()
425 static void omap_crtc_arm_event(struct drm_crtc *crtc) in omap_crtc_arm_event() argument
427 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_arm_event()
432 if (crtc->state->event) { in omap_crtc_arm_event()
433 omap_crtc->event = crtc->state->event; in omap_crtc_arm_event()
434 crtc->state->event = NULL; in omap_crtc_arm_event()
438 static void omap_crtc_atomic_enable(struct drm_crtc *crtc, in omap_crtc_atomic_enable() argument
441 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_enable()
442 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_enable()
443 struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_enable()
454 drm_crtc_vblank_on(crtc); in omap_crtc_atomic_enable()
456 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_enable()
459 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
460 omap_crtc_arm_event(crtc); in omap_crtc_atomic_enable()
461 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_enable()
464 static void omap_crtc_atomic_disable(struct drm_crtc *crtc, in omap_crtc_atomic_disable() argument
467 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_disable()
468 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_disable()
469 struct drm_device *dev = crtc->dev; in omap_crtc_atomic_disable()
473 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
474 if (crtc->state->event) { in omap_crtc_atomic_disable()
475 drm_crtc_send_vblank_event(crtc, crtc->state->event); in omap_crtc_atomic_disable()
476 crtc->state->event = NULL; in omap_crtc_atomic_disable()
478 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_disable()
482 if (!omap_crtc_wait_pending(crtc)) in omap_crtc_atomic_disable()
485 drm_crtc_vblank_off(crtc); in omap_crtc_atomic_disable()
490 static enum drm_mode_status omap_crtc_mode_valid(struct drm_crtc *crtc, in omap_crtc_mode_valid() argument
493 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_mode_valid()
494 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_valid()
544 static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc) in omap_crtc_mode_set_nofb() argument
546 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_mode_set_nofb()
547 struct drm_display_mode *mode = &crtc->state->adjusted_mode; in omap_crtc_mode_set_nofb()
555 static bool omap_crtc_is_manually_updated(struct drm_crtc *crtc) in omap_crtc_is_manually_updated() argument
557 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_is_manually_updated()
571 static int omap_crtc_atomic_check(struct drm_crtc *crtc, in omap_crtc_atomic_check() argument
584 pri_state = drm_atomic_get_new_plane_state(state->state, crtc->primary); in omap_crtc_atomic_check()
593 /* Check if this CRTC is for a manually updated display */ in omap_crtc_atomic_check()
594 omap_crtc_state->manually_updated = omap_crtc_is_manually_updated(crtc); in omap_crtc_atomic_check()
600 static void omap_crtc_atomic_begin(struct drm_crtc *crtc, in omap_crtc_atomic_begin() argument
605 static void omap_crtc_atomic_flush(struct drm_crtc *crtc, in omap_crtc_atomic_flush() argument
608 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_flush()
609 struct omap_crtc *omap_crtc = to_omap_crtc(crtc); in omap_crtc_atomic_flush()
610 struct omap_crtc_state *omap_crtc_state = to_omap_crtc_state(crtc->state); in omap_crtc_atomic_flush()
613 if (crtc->state->color_mgmt_changed) { in omap_crtc_atomic_flush()
617 if (crtc->state->gamma_lut) { in omap_crtc_atomic_flush()
619 crtc->state->gamma_lut->data; in omap_crtc_atomic_flush()
620 length = crtc->state->gamma_lut->length / in omap_crtc_atomic_flush()
627 omap_crtc_write_crtc_properties(crtc); in omap_crtc_atomic_flush()
629 /* Only flush the CRTC if it is currently enabled. */ in omap_crtc_atomic_flush()
637 spin_lock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
638 omap_crtc_flush(crtc); in omap_crtc_atomic_flush()
639 omap_crtc_arm_event(crtc); in omap_crtc_atomic_flush()
640 spin_unlock_irq(&crtc->dev->event_lock); in omap_crtc_atomic_flush()
644 ret = drm_crtc_vblank_get(crtc); in omap_crtc_atomic_flush()
647 spin_lock_irq(&crtc->dev->event_lock); 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()
653 static int omap_crtc_atomic_set_property(struct drm_crtc *crtc, in omap_crtc_atomic_set_property() argument
658 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_set_property()
665 * always be mirrored in the crtc state correctly. in omap_crtc_atomic_set_property()
667 plane_state = drm_atomic_get_plane_state(state->state, crtc->primary); in omap_crtc_atomic_set_property()
671 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_set_property()
681 static int omap_crtc_atomic_get_property(struct drm_crtc *crtc, in omap_crtc_atomic_get_property() argument
686 struct omap_drm_private *priv = crtc->dev->dev_private; in omap_crtc_atomic_get_property()
689 if (property == crtc->primary->rotation_property) in omap_crtc_atomic_get_property()
699 static void omap_crtc_reset(struct drm_crtc *crtc) in omap_crtc_reset() argument
703 if (crtc->state) in omap_crtc_reset()
704 __drm_atomic_helper_crtc_destroy_state(crtc->state); in omap_crtc_reset()
706 kfree(crtc->state); in omap_crtc_reset()
710 __drm_atomic_helper_crtc_reset(crtc, &state->base); in omap_crtc_reset()
714 omap_crtc_duplicate_state(struct drm_crtc *crtc) in omap_crtc_duplicate_state() argument
718 if (WARN_ON(!crtc->state)) in omap_crtc_duplicate_state()
721 current_state = to_omap_crtc_state(crtc->state); in omap_crtc_duplicate_state()
727 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in omap_crtc_duplicate_state()
781 /* initialize crtc */
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()
824 dev_err(dev->dev, "%s(): could not init crtc for: %s\n", 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, 0, false, gamma_lut_size); 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()