Lines Matching refs:ctx
94 struct vidi_context *ctx = crtc->ctx; in vidi_enable_vblank() local
96 if (ctx->suspended) in vidi_enable_vblank()
99 if (!test_and_set_bit(0, &ctx->irq_flags)) in vidi_enable_vblank()
100 ctx->vblank_on = true; in vidi_enable_vblank()
102 ctx->direct_vblank = true; in vidi_enable_vblank()
109 schedule_work(&ctx->work); in vidi_enable_vblank()
116 struct vidi_context *ctx = crtc->ctx; in vidi_disable_vblank() local
118 if (ctx->suspended) in vidi_disable_vblank()
121 if (test_and_clear_bit(0, &ctx->irq_flags)) in vidi_disable_vblank()
122 ctx->vblank_on = false; in vidi_disable_vblank()
128 struct vidi_context *ctx = crtc->ctx; in vidi_update_plane() local
130 if (ctx->suspended) in vidi_update_plane()
135 if (ctx->vblank_on) in vidi_update_plane()
136 schedule_work(&ctx->work); in vidi_update_plane()
141 struct vidi_context *ctx = crtc->ctx; in vidi_enable() local
143 mutex_lock(&ctx->lock); in vidi_enable()
145 ctx->suspended = false; in vidi_enable()
148 if (test_and_clear_bit(0, &ctx->irq_flags)) in vidi_enable()
149 vidi_enable_vblank(ctx->crtc); in vidi_enable()
151 mutex_unlock(&ctx->lock); in vidi_enable()
156 struct vidi_context *ctx = crtc->ctx; in vidi_disable() local
158 mutex_lock(&ctx->lock); in vidi_disable()
160 ctx->suspended = true; in vidi_disable()
162 mutex_unlock(&ctx->lock); in vidi_disable()
165 static int vidi_ctx_initialize(struct vidi_context *ctx, in vidi_ctx_initialize() argument
170 ctx->drm_dev = drm_dev; in vidi_ctx_initialize()
171 ctx->pipe = priv->pipe++; in vidi_ctx_initialize()
186 struct vidi_context *ctx = container_of(work, struct vidi_context, in vidi_fake_vblank_handler() local
190 if (ctx->pipe < 0) in vidi_fake_vblank_handler()
196 mutex_lock(&ctx->lock); in vidi_fake_vblank_handler()
198 if (ctx->direct_vblank) { in vidi_fake_vblank_handler()
199 drm_crtc_handle_vblank(&ctx->crtc->base); in vidi_fake_vblank_handler()
200 ctx->direct_vblank = false; in vidi_fake_vblank_handler()
201 mutex_unlock(&ctx->lock); in vidi_fake_vblank_handler()
205 mutex_unlock(&ctx->lock); in vidi_fake_vblank_handler()
208 struct exynos_drm_plane *plane = &ctx->planes[win]; in vidi_fake_vblank_handler()
213 exynos_drm_crtc_finish_update(ctx->crtc, plane); in vidi_fake_vblank_handler()
220 struct vidi_context *ctx = dev_get_drvdata(dev); in vidi_show_connection() local
223 mutex_lock(&ctx->lock); in vidi_show_connection()
225 rc = sprintf(buf, "%d\n", ctx->connected); in vidi_show_connection()
227 mutex_unlock(&ctx->lock); in vidi_show_connection()
236 struct vidi_context *ctx = dev_get_drvdata(dev); in vidi_store_connection() local
239 ret = kstrtoint(buf, 0, &ctx->connected); in vidi_store_connection()
243 if (ctx->connected > 1) in vidi_store_connection()
247 if (!ctx->raw_edid) in vidi_store_connection()
248 ctx->raw_edid = (struct edid *)fake_edid_info; in vidi_store_connection()
251 if (ctx->raw_edid != (struct edid *)fake_edid_info) { in vidi_store_connection()
258 drm_helper_hpd_irq_event(ctx->drm_dev); in vidi_store_connection()
269 struct vidi_context *ctx = dev_get_drvdata(drm_dev->dev); in vidi_connection_ioctl() local
282 if (ctx->connected == vidi->connection) { in vidi_connection_ioctl()
293 ctx->raw_edid = drm_edid_duplicate(raw_edid); in vidi_connection_ioctl()
294 if (!ctx->raw_edid) { in vidi_connection_ioctl()
303 if (ctx->raw_edid && ctx->raw_edid != in vidi_connection_ioctl()
305 kfree(ctx->raw_edid); in vidi_connection_ioctl()
306 ctx->raw_edid = NULL; in vidi_connection_ioctl()
310 ctx->connected = vidi->connection; in vidi_connection_ioctl()
311 drm_helper_hpd_irq_event(ctx->drm_dev); in vidi_connection_ioctl()
319 struct vidi_context *ctx = ctx_from_connector(connector); in vidi_detect() local
325 return ctx->connected ? connector_status_connected : in vidi_detect()
345 struct vidi_context *ctx = ctx_from_connector(connector); in vidi_get_modes() local
353 if (!ctx->raw_edid) { in vidi_get_modes()
358 edid_len = (1 + ctx->raw_edid->extensions) * EDID_LENGTH; in vidi_get_modes()
359 edid = kmemdup(ctx->raw_edid, edid_len, GFP_KERNEL); in vidi_get_modes()
372 struct vidi_context *ctx = ctx_from_connector(connector); in vidi_best_encoder() local
374 return &ctx->encoder; in vidi_best_encoder()
384 struct vidi_context *ctx = encoder_to_vidi(encoder); in vidi_create_connector() local
385 struct drm_connector *connector = &ctx->connector; in vidi_create_connector()
390 ret = drm_connector_init(ctx->drm_dev, connector, in vidi_create_connector()
438 struct vidi_context *ctx = dev_get_drvdata(dev); in vidi_bind() local
440 struct drm_encoder *encoder = &ctx->encoder; in vidi_bind()
446 vidi_ctx_initialize(ctx, drm_dev); in vidi_bind()
450 ret = exynos_plane_init(drm_dev, &ctx->planes[zpos], in vidi_bind()
451 1 << ctx->pipe, type, formats, in vidi_bind()
457 exynos_plane = &ctx->planes[DEFAULT_WIN]; in vidi_bind()
458 ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base, in vidi_bind()
459 ctx->pipe, EXYNOS_DISPLAY_TYPE_VIDI, in vidi_bind()
460 &vidi_crtc_ops, ctx); in vidi_bind()
461 if (IS_ERR(ctx->crtc)) { in vidi_bind()
463 return PTR_ERR(ctx->crtc); in vidi_bind()
502 struct vidi_context *ctx; in vidi_probe() local
505 ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); in vidi_probe()
506 if (!ctx) in vidi_probe()
509 ctx->pdev = pdev; in vidi_probe()
511 INIT_WORK(&ctx->work, vidi_fake_vblank_handler); in vidi_probe()
513 mutex_init(&ctx->lock); in vidi_probe()
515 platform_set_drvdata(pdev, ctx); in vidi_probe()
537 struct vidi_context *ctx = platform_get_drvdata(pdev); in vidi_remove() local
539 if (ctx->raw_edid != (struct edid *)fake_edid_info) { in vidi_remove()
540 kfree(ctx->raw_edid); in vidi_remove()
541 ctx->raw_edid = NULL; in vidi_remove()