Lines Matching refs:ctx
183 static void mixer_regs_dump(struct mixer_context *ctx) in mixer_regs_dump() argument
188 (u32)readl(ctx->mixer_res.mixer_regs + reg_id)); \ in mixer_regs_dump()
215 static void vp_regs_dump(struct mixer_context *ctx) in vp_regs_dump() argument
220 (u32) readl(ctx->mixer_res.vp_regs + reg_id)); \ in vp_regs_dump()
272 static void mixer_vsync_set_update(struct mixer_context *ctx, bool enable) in mixer_vsync_set_update() argument
274 struct mixer_resources *res = &ctx->mixer_res; in mixer_vsync_set_update()
280 if (ctx->vp_enabled) in mixer_vsync_set_update()
285 static void mixer_cfg_scan(struct mixer_context *ctx, unsigned int height) in mixer_cfg_scan() argument
287 struct mixer_resources *res = &ctx->mixer_res; in mixer_cfg_scan()
291 val = (ctx->interlace ? MXR_CFG_SCAN_INTERLACE : in mixer_cfg_scan()
294 if (ctx->mxr_ver != MXR_VER_128_0_0_184) { in mixer_cfg_scan()
311 static void mixer_cfg_rgb_fmt(struct mixer_context *ctx, unsigned int height) in mixer_cfg_rgb_fmt() argument
313 struct mixer_resources *res = &ctx->mixer_res; in mixer_cfg_rgb_fmt()
352 static void mixer_cfg_layer(struct mixer_context *ctx, unsigned int win, in mixer_cfg_layer() argument
355 struct mixer_resources *res = &ctx->mixer_res; in mixer_cfg_layer()
366 if (ctx->vp_enabled) { in mixer_cfg_layer()
380 static void mixer_run(struct mixer_context *ctx) in mixer_run() argument
382 struct mixer_resources *res = &ctx->mixer_res; in mixer_run()
387 static void mixer_stop(struct mixer_context *ctx) in mixer_stop() argument
389 struct mixer_resources *res = &ctx->mixer_res; in mixer_stop()
399 static void vp_video_buffer(struct mixer_context *ctx, in vp_video_buffer() argument
402 struct mixer_resources *res = &ctx->mixer_res; in vp_video_buffer()
429 ctx->interlace = true; in vp_video_buffer()
438 ctx->interlace = false; in vp_video_buffer()
444 mixer_vsync_set_update(ctx, false); in vp_video_buffer()
447 val = (ctx->interlace ? ~0 : 0); in vp_video_buffer()
470 if (ctx->interlace) { in vp_video_buffer()
489 mixer_cfg_scan(ctx, mode->vdisplay); in vp_video_buffer()
490 mixer_cfg_rgb_fmt(ctx, mode->vdisplay); in vp_video_buffer()
491 mixer_cfg_layer(ctx, plane->zpos, true); in vp_video_buffer()
492 mixer_run(ctx); in vp_video_buffer()
494 mixer_vsync_set_update(ctx, true); in vp_video_buffer()
497 mixer_regs_dump(ctx); in vp_video_buffer()
498 vp_regs_dump(ctx); in vp_video_buffer()
501 static void mixer_layer_update(struct mixer_context *ctx) in mixer_layer_update() argument
503 struct mixer_resources *res = &ctx->mixer_res; in mixer_layer_update()
532 static void mixer_graph_buffer(struct mixer_context *ctx, in mixer_graph_buffer() argument
535 struct mixer_resources *res = &ctx->mixer_res; in mixer_graph_buffer()
585 ctx->interlace = true; in mixer_graph_buffer()
587 ctx->interlace = false; in mixer_graph_buffer()
590 mixer_vsync_set_update(ctx, false); in mixer_graph_buffer()
601 if (ctx->mxr_ver == MXR_VER_128_0_0_184 && in mixer_graph_buffer()
627 mixer_cfg_scan(ctx, mode->vdisplay); in mixer_graph_buffer()
628 mixer_cfg_rgb_fmt(ctx, mode->vdisplay); in mixer_graph_buffer()
629 mixer_cfg_layer(ctx, win, true); in mixer_graph_buffer()
632 if (ctx->mxr_ver == MXR_VER_16_0_33_0 || in mixer_graph_buffer()
633 ctx->mxr_ver == MXR_VER_128_0_0_184) in mixer_graph_buffer()
634 mixer_layer_update(ctx); in mixer_graph_buffer()
636 mixer_run(ctx); in mixer_graph_buffer()
638 mixer_vsync_set_update(ctx, true); in mixer_graph_buffer()
641 mixer_regs_dump(ctx); in mixer_graph_buffer()
644 static void vp_win_reset(struct mixer_context *ctx) in vp_win_reset() argument
646 struct mixer_resources *res = &ctx->mixer_res; in vp_win_reset()
659 static void mixer_win_reset(struct mixer_context *ctx) in mixer_win_reset() argument
661 struct mixer_resources *res = &ctx->mixer_res; in mixer_win_reset()
666 mixer_vsync_set_update(ctx, false); in mixer_win_reset()
685 if (ctx->vp_enabled) in mixer_win_reset()
711 if (ctx->vp_enabled) { in mixer_win_reset()
713 vp_win_reset(ctx); in mixer_win_reset()
720 if (ctx->vp_enabled) in mixer_win_reset()
723 mixer_vsync_set_update(ctx, true); in mixer_win_reset()
729 struct mixer_context *ctx = arg; in mixer_irq_handler() local
730 struct mixer_resources *res = &ctx->mixer_res; in mixer_irq_handler()
746 if (ctx->interlace) { in mixer_irq_handler()
758 drm_crtc_handle_vblank(&ctx->crtc->base); in mixer_irq_handler()
760 struct exynos_drm_plane *plane = &ctx->planes[win]; in mixer_irq_handler()
765 exynos_drm_crtc_finish_update(ctx->crtc, plane); in mixer_irq_handler()
769 if (atomic_read(&ctx->wait_vsync_event)) { in mixer_irq_handler()
770 atomic_set(&ctx->wait_vsync_event, 0); in mixer_irq_handler()
771 wake_up(&ctx->wait_vsync_queue); in mixer_irq_handler()
925 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_enable_vblank()
941 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_disable_vblank()
957 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_update_plane()
973 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_disable_plane()
993 struct mixer_context *mixer_ctx = crtc->ctx; in mixer_wait_for_vblank()
1021 struct mixer_context *ctx = crtc->ctx; in mixer_enable() local
1022 struct mixer_resources *res = &ctx->mixer_res; in mixer_enable()
1025 if (test_bit(MXR_BIT_POWERED, &ctx->flags)) in mixer_enable()
1028 pm_runtime_get_sync(ctx->dev); in mixer_enable()
1040 if (ctx->vp_enabled) { in mixer_enable()
1047 if (ctx->has_sclk) { in mixer_enable()
1058 set_bit(MXR_BIT_POWERED, &ctx->flags); in mixer_enable()
1062 if (test_bit(MXR_BIT_VSYNC, &ctx->flags)) { in mixer_enable()
1066 mixer_win_reset(ctx); in mixer_enable()
1071 struct mixer_context *ctx = crtc->ctx; in mixer_disable() local
1072 struct mixer_resources *res = &ctx->mixer_res; in mixer_disable()
1075 if (!test_bit(MXR_BIT_POWERED, &ctx->flags)) in mixer_disable()
1078 mixer_stop(ctx); in mixer_disable()
1079 mixer_regs_dump(ctx); in mixer_disable()
1082 mixer_disable_plane(crtc, &ctx->planes[i]); in mixer_disable()
1084 clear_bit(MXR_BIT_POWERED, &ctx->flags); in mixer_disable()
1088 if (ctx->vp_enabled) { in mixer_disable()
1090 if (ctx->has_sclk) in mixer_disable()
1094 pm_runtime_put_sync(ctx->dev); in mixer_disable()
1187 struct mixer_context *ctx = dev_get_drvdata(dev); in mixer_bind() local
1193 ret = mixer_initialize(ctx, drm_dev); in mixer_bind()
1211 ret = exynos_plane_init(drm_dev, &ctx->planes[zpos], in mixer_bind()
1212 1 << ctx->pipe, type, formats, fcount, in mixer_bind()
1218 exynos_plane = &ctx->planes[DEFAULT_WIN]; in mixer_bind()
1219 ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base, in mixer_bind()
1220 ctx->pipe, EXYNOS_DISPLAY_TYPE_HDMI, in mixer_bind()
1221 &mixer_crtc_ops, ctx); in mixer_bind()
1222 if (IS_ERR(ctx->crtc)) { in mixer_bind()
1223 mixer_ctx_remove(ctx); in mixer_bind()
1224 ret = PTR_ERR(ctx->crtc); in mixer_bind()
1231 devm_kfree(dev, ctx); in mixer_bind()
1237 struct mixer_context *ctx = dev_get_drvdata(dev); in mixer_unbind() local
1239 mixer_ctx_remove(ctx); in mixer_unbind()
1251 struct mixer_context *ctx; in mixer_probe() local
1254 ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); in mixer_probe()
1255 if (!ctx) { in mixer_probe()
1270 ctx->pdev = pdev; in mixer_probe()
1271 ctx->dev = dev; in mixer_probe()
1272 ctx->vp_enabled = drv->is_vp_enabled; in mixer_probe()
1273 ctx->has_sclk = drv->has_sclk; in mixer_probe()
1274 ctx->mxr_ver = drv->version; in mixer_probe()
1275 init_waitqueue_head(&ctx->wait_vsync_queue); in mixer_probe()
1276 atomic_set(&ctx->wait_vsync_event, 0); in mixer_probe()
1278 platform_set_drvdata(pdev, ctx); in mixer_probe()