Lines Matching refs:crtc

15 static int dcss_enable_vblank(struct drm_crtc *crtc)
17 struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
19 struct dcss_dev *dcss = crtc->dev->dev_private;
30 static void dcss_disable_vblank(struct drm_crtc *crtc)
32 struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
55 static void dcss_crtc_atomic_begin(struct drm_crtc *crtc,
58 drm_crtc_vblank_on(crtc);
61 static void dcss_crtc_atomic_flush(struct drm_crtc *crtc,
64 struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
68 spin_lock_irq(&crtc->dev->event_lock);
69 if (crtc->state->event) {
70 WARN_ON(drm_crtc_vblank_get(crtc));
71 drm_crtc_arm_vblank_event(crtc, crtc->state->event);
72 crtc->state->event = NULL;
74 spin_unlock_irq(&crtc->dev->event_lock);
80 static void dcss_crtc_atomic_enable(struct drm_crtc *crtc,
84 crtc);
85 struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
88 struct drm_display_mode *mode = &crtc->state->adjusted_mode;
116 static void dcss_crtc_atomic_disable(struct drm_crtc *crtc,
120 crtc);
121 struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
124 struct drm_display_mode *mode = &crtc->state->adjusted_mode;
129 spin_lock_irq(&crtc->dev->event_lock);
130 if (crtc->state->event) {
131 drm_crtc_send_vblank_event(crtc, crtc->state->event);
132 crtc->state->event = NULL;
134 spin_unlock_irq(&crtc->dev->event_lock);
144 if (!drm_mode_equal(mode, old_mode) || !crtc->state->active)
155 drm_crtc_vblank_off(crtc);
184 int dcss_crtc_init(struct dcss_crtc *crtc, struct drm_device *drm)
190 crtc->plane[0] = dcss_plane_init(drm, drm_crtc_mask(&crtc->base),
192 if (IS_ERR(crtc->plane[0]))
193 return PTR_ERR(crtc->plane[0]);
195 crtc->base.port = dcss->of_port;
197 drm_crtc_helper_add(&crtc->base, &dcss_helper_funcs);
198 ret = drm_crtc_init_with_planes(drm, &crtc->base, &crtc->plane[0]->base,
201 dev_err(dcss->dev, "failed to init crtc\n");
205 crtc->irq = platform_get_irq_byname(pdev, "vblank");
206 if (crtc->irq < 0)
207 return crtc->irq;
209 ret = request_irq(crtc->irq, dcss_crtc_irq_handler,
210 0, "dcss_drm", crtc);
216 disable_irq(crtc->irq);
221 void dcss_crtc_deinit(struct dcss_crtc *crtc, struct drm_device *drm)
223 free_irq(crtc->irq, crtc);