Lines Matching refs:crtc
176 struct exynos_drm_crtc *crtc; member
261 static int fimd_enable_vblank(struct exynos_drm_crtc *crtc) in fimd_enable_vblank() argument
263 struct fimd_context *ctx = crtc->ctx; in fimd_enable_vblank()
293 static void fimd_disable_vblank(struct exynos_drm_crtc *crtc) in fimd_disable_vblank() argument
295 struct fimd_context *ctx = crtc->ctx; in fimd_disable_vblank()
317 static void fimd_wait_for_vblank(struct exynos_drm_crtc *crtc) in fimd_wait_for_vblank() argument
319 struct fimd_context *ctx = crtc->ctx; in fimd_wait_for_vblank()
363 static int fimd_clear_channels(struct exynos_drm_crtc *crtc) in fimd_clear_channels() argument
365 struct fimd_context *ctx = crtc->ctx; in fimd_clear_channels()
398 fimd_enable_vblank(ctx->crtc); in fimd_clear_channels()
399 fimd_wait_for_vblank(ctx->crtc); in fimd_clear_channels()
400 fimd_disable_vblank(ctx->crtc); in fimd_clear_channels()
414 static int fimd_atomic_check(struct exynos_drm_crtc *crtc, in fimd_atomic_check() argument
418 struct fimd_context *ctx = crtc->ctx; in fimd_atomic_check()
478 static void fimd_commit(struct exynos_drm_crtc *crtc) in fimd_commit() argument
480 struct fimd_context *ctx = crtc->ctx; in fimd_commit()
481 struct drm_display_mode *mode = &crtc->base.state->adjusted_mode; in fimd_commit()
803 static void fimd_atomic_begin(struct exynos_drm_crtc *crtc) in fimd_atomic_begin() argument
805 struct fimd_context *ctx = crtc->ctx; in fimd_atomic_begin()
815 static void fimd_atomic_flush(struct exynos_drm_crtc *crtc) in fimd_atomic_flush() argument
817 struct fimd_context *ctx = crtc->ctx; in fimd_atomic_flush()
826 exynos_crtc_handle_event(crtc); in fimd_atomic_flush()
829 static void fimd_update_plane(struct exynos_drm_crtc *crtc, in fimd_update_plane() argument
834 struct fimd_context *ctx = crtc->ctx; in fimd_update_plane()
855 size = pitch * state->crtc.h; in fimd_update_plane()
863 state->crtc.w, state->crtc.h); in fimd_update_plane()
866 buf_offsize = pitch - (state->crtc.w * cpp); in fimd_update_plane()
867 line_size = state->crtc.w * cpp; in fimd_update_plane()
875 val = VIDOSDxA_TOPLEFT_X(state->crtc.x) | in fimd_update_plane()
876 VIDOSDxA_TOPLEFT_Y(state->crtc.y) | in fimd_update_plane()
877 VIDOSDxA_TOPLEFT_X_E(state->crtc.x) | in fimd_update_plane()
878 VIDOSDxA_TOPLEFT_Y_E(state->crtc.y); in fimd_update_plane()
881 last_x = state->crtc.x + state->crtc.w; in fimd_update_plane()
884 last_y = state->crtc.y + state->crtc.h; in fimd_update_plane()
895 state->crtc.x, state->crtc.y, last_x, last_y); in fimd_update_plane()
902 val = state->crtc.w * state->crtc.h; in fimd_update_plane()
924 static void fimd_disable_plane(struct exynos_drm_crtc *crtc, in fimd_disable_plane() argument
927 struct fimd_context *ctx = crtc->ctx; in fimd_disable_plane()
939 static void fimd_atomic_enable(struct exynos_drm_crtc *crtc) in fimd_atomic_enable() argument
941 struct fimd_context *ctx = crtc->ctx; in fimd_atomic_enable()
955 fimd_enable_vblank(ctx->crtc); in fimd_atomic_enable()
957 fimd_commit(ctx->crtc); in fimd_atomic_enable()
960 static void fimd_atomic_disable(struct exynos_drm_crtc *crtc) in fimd_atomic_disable() argument
962 struct fimd_context *ctx = crtc->ctx; in fimd_atomic_disable()
974 fimd_disable_plane(crtc, &ctx->planes[i]); in fimd_atomic_disable()
976 fimd_enable_vblank(crtc); in fimd_atomic_disable()
977 fimd_wait_for_vblank(crtc); in fimd_atomic_disable()
978 fimd_disable_vblank(crtc); in fimd_atomic_disable()
1015 static void fimd_te_handler(struct exynos_drm_crtc *crtc) in fimd_te_handler() argument
1017 struct fimd_context *ctx = crtc->ctx; in fimd_te_handler()
1042 drm_crtc_handle_vblank(&ctx->crtc->base); in fimd_te_handler()
1082 drm_crtc_handle_vblank(&ctx->crtc->base); in fimd_irq_handler()
1128 ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base, in fimd_bind()
1130 if (IS_ERR(ctx->crtc)) in fimd_bind()
1131 return PTR_ERR(ctx->crtc); in fimd_bind()
1135 ctx->crtc->pipe_clk = &ctx->dp_clk; in fimd_bind()
1144 ret = fimd_clear_channels(ctx->crtc); in fimd_bind()
1157 fimd_atomic_disable(ctx->crtc); in fimd_unbind()