Lines Matching refs:crtc
56 static void exynos_drm_crtc_dpms(struct drm_crtc *crtc, int mode) in exynos_drm_crtc_dpms() argument
58 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_dpms()
61 DRM_DEBUG_KMS("crtc[%d] mode[%d]\n", crtc->base.id, mode); in exynos_drm_crtc_dpms()
74 drm_crtc_vblank_off(crtc); in exynos_drm_crtc_dpms()
83 drm_crtc_vblank_on(crtc); in exynos_drm_crtc_dpms()
86 static void exynos_drm_crtc_prepare(struct drm_crtc *crtc) in exynos_drm_crtc_prepare() argument
91 static void exynos_drm_crtc_commit(struct drm_crtc *crtc) in exynos_drm_crtc_commit() argument
93 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_commit()
96 exynos_drm_crtc_dpms(crtc, DRM_MODE_DPMS_ON); in exynos_drm_crtc_commit()
98 exynos_plane_commit(crtc->primary); in exynos_drm_crtc_commit()
103 exynos_plane_dpms(crtc->primary, DRM_MODE_DPMS_ON); in exynos_drm_crtc_commit()
107 exynos_drm_crtc_mode_fixup(struct drm_crtc *crtc, in exynos_drm_crtc_mode_fixup() argument
111 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_mode_fixup()
121 exynos_drm_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode, in exynos_drm_crtc_mode_set() argument
125 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_mode_set()
127 struct drm_framebuffer *fb = crtc->primary->fb; in exynos_drm_crtc_mode_set()
135 memcpy(&crtc->mode, adjusted_mode, sizeof(*adjusted_mode)); in exynos_drm_crtc_mode_set()
141 manager->ops->mode_set(manager, &crtc->mode); in exynos_drm_crtc_mode_set()
143 return exynos_plane_mode_set(crtc->primary, crtc, fb, 0, 0, in exynos_drm_crtc_mode_set()
147 static int exynos_drm_crtc_mode_set_commit(struct drm_crtc *crtc, int x, int y, in exynos_drm_crtc_mode_set_commit() argument
150 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_mode_set_commit()
151 struct drm_framebuffer *fb = crtc->primary->fb; in exynos_drm_crtc_mode_set_commit()
165 ret = exynos_plane_mode_set(crtc->primary, crtc, fb, 0, 0, in exynos_drm_crtc_mode_set_commit()
170 exynos_drm_crtc_commit(crtc); in exynos_drm_crtc_mode_set_commit()
175 static int exynos_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, in exynos_drm_crtc_mode_set_base() argument
178 return exynos_drm_crtc_mode_set_commit(crtc, x, y, old_fb); in exynos_drm_crtc_mode_set_base()
181 static void exynos_drm_crtc_disable(struct drm_crtc *crtc) in exynos_drm_crtc_disable() argument
186 exynos_drm_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); in exynos_drm_crtc_disable()
188 drm_for_each_legacy_plane(plane, &crtc->dev->mode_config.plane_list) { in exynos_drm_crtc_disable()
189 if (plane->crtc != crtc) in exynos_drm_crtc_disable()
208 static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc, in exynos_drm_crtc_page_flip() argument
213 struct drm_device *dev = crtc->dev; in exynos_drm_crtc_page_flip()
215 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_page_flip()
216 struct drm_framebuffer *old_fb = crtc->primary->fb; in exynos_drm_crtc_page_flip()
247 crtc->primary->fb = fb; in exynos_drm_crtc_page_flip()
248 ret = exynos_drm_crtc_mode_set_commit(crtc, crtc->x, crtc->y, in exynos_drm_crtc_page_flip()
251 crtc->primary->fb = old_fb; in exynos_drm_crtc_page_flip()
267 static void exynos_drm_crtc_destroy(struct drm_crtc *crtc) in exynos_drm_crtc_destroy() argument
269 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_destroy()
270 struct exynos_drm_private *private = crtc->dev->dev_private; in exynos_drm_crtc_destroy()
272 private->crtc[exynos_crtc->pipe] = NULL; in exynos_drm_crtc_destroy()
274 drm_crtc_cleanup(crtc); in exynos_drm_crtc_destroy()
278 static int exynos_drm_crtc_set_property(struct drm_crtc *crtc, in exynos_drm_crtc_set_property() argument
282 struct drm_device *dev = crtc->dev; in exynos_drm_crtc_set_property()
284 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_set_property()
296 exynos_drm_crtc_commit(crtc); in exynos_drm_crtc_set_property()
299 exynos_plane_dpms(crtc->primary, DRM_MODE_DPMS_OFF); in exynos_drm_crtc_set_property()
323 static void exynos_drm_crtc_attach_mode_property(struct drm_crtc *crtc) in exynos_drm_crtc_attach_mode_property() argument
325 struct drm_device *dev = crtc->dev; in exynos_drm_crtc_attach_mode_property()
339 drm_object_attach_property(&crtc->base, prop, 0); in exynos_drm_crtc_attach_mode_property()
347 struct drm_crtc *crtc; in exynos_drm_crtc_create() local
367 manager->crtc = &exynos_crtc->drm_crtc; in exynos_drm_crtc_create()
368 crtc = &exynos_crtc->drm_crtc; in exynos_drm_crtc_create()
370 private->crtc[manager->pipe] = crtc; in exynos_drm_crtc_create()
372 ret = drm_crtc_init_with_planes(manager->drm_dev, crtc, plane, NULL, in exynos_drm_crtc_create()
377 drm_crtc_helper_add(crtc, &exynos_crtc_helper_funcs); in exynos_drm_crtc_create()
379 exynos_drm_crtc_attach_mode_property(crtc); in exynos_drm_crtc_create()
394 to_exynos_crtc(private->crtc[pipe]); in exynos_drm_crtc_enable_vblank()
410 to_exynos_crtc(private->crtc[pipe]); in exynos_drm_crtc_disable_vblank()
424 struct drm_crtc *drm_crtc = dev_priv->crtc[pipe]; in exynos_drm_crtc_finish_pageflip()
446 void exynos_drm_crtc_plane_mode_set(struct drm_crtc *crtc, in exynos_drm_crtc_plane_mode_set() argument
449 struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_plane_mode_set()
455 void exynos_drm_crtc_plane_commit(struct drm_crtc *crtc, int zpos) in exynos_drm_crtc_plane_commit() argument
457 struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_plane_commit()
463 void exynos_drm_crtc_plane_enable(struct drm_crtc *crtc, int zpos) in exynos_drm_crtc_plane_enable() argument
465 struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_plane_enable()
471 void exynos_drm_crtc_plane_disable(struct drm_crtc *crtc, int zpos) in exynos_drm_crtc_plane_disable() argument
473 struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_plane_disable()
483 struct drm_crtc *crtc; in exynos_drm_crtc_complete_scanout() local
489 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { in exynos_drm_crtc_complete_scanout()
490 manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_complete_scanout()
505 struct drm_crtc *crtc; in exynos_drm_crtc_get_pipe_from_type() local
507 list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head) { in exynos_drm_crtc_get_pipe_from_type()
510 exynos_crtc = to_exynos_crtc(crtc); in exynos_drm_crtc_get_pipe_from_type()
518 void exynos_drm_crtc_te_handler(struct drm_crtc *crtc) in exynos_drm_crtc_te_handler() argument
520 struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager; in exynos_drm_crtc_te_handler()