Lines Matching defs:ge2d

28 #include "ge2d-regs.h"
30 #define GE2D_NAME "meson-ge2d"
72 struct meson_ge2d *ge2d;
165 dev_warn(ctx->ge2d->dev, "%s: invalid buffer type\n", __func__);
170 static void ge2d_hw_start(struct meson_ge2d *ge2d)
172 struct ge2d_ctx *ctx = ge2d->curr;
176 regmap_update_bits(ge2d->map, GE2D_GEN_CTRL1,
178 regmap_update_bits(ge2d->map, GE2D_GEN_CTRL1,
184 regmap_write(ge2d->map, GE2D_SRC1_BADDR_CTRL,
186 regmap_write(ge2d->map, GE2D_SRC1_STRIDE_CTRL,
188 regmap_write(ge2d->map, GE2D_SRC2_BADDR_CTRL,
190 regmap_write(ge2d->map, GE2D_SRC2_STRIDE_CTRL,
192 regmap_write(ge2d->map, GE2D_DST1_BADDR_CTRL,
194 regmap_write(ge2d->map, GE2D_DST1_STRIDE_CTRL,
197 regmap_write(ge2d->map, GE2D_GEN_CTRL0, 0);
198 regmap_write(ge2d->map, GE2D_GEN_CTRL1,
203 regmap_write(ge2d->map, GE2D_GEN_CTRL2,
213 regmap_write(ge2d->map, GE2D_GEN_CTRL3,
216 regmap_write(ge2d->map, GE2D_SRC1_CLIPY_START_END,
219 regmap_write(ge2d->map, GE2D_SRC1_CLIPX_START_END,
222 regmap_write(ge2d->map, GE2D_SRC2_CLIPY_START_END,
225 regmap_write(ge2d->map, GE2D_SRC2_CLIPX_START_END,
228 regmap_write(ge2d->map, GE2D_DST_CLIPY_START_END,
231 regmap_write(ge2d->map, GE2D_DST_CLIPX_START_END,
235 regmap_write(ge2d->map, GE2D_SRC1_Y_START_END,
237 regmap_write(ge2d->map, GE2D_SRC1_X_START_END,
239 regmap_write(ge2d->map, GE2D_SRC2_Y_START_END,
241 regmap_write(ge2d->map, GE2D_SRC2_X_START_END,
243 regmap_write(ge2d->map, GE2D_DST_Y_START_END,
245 regmap_write(ge2d->map, GE2D_DST_X_START_END,
265 regmap_write(ge2d->map, GE2D_ALU_OP_CTRL, reg);
268 regmap_write(ge2d->map, GE2D_CMD_CTRL,
278 struct meson_ge2d *ge2d = ctx->ge2d;
280 ge2d->curr = ctx;
285 ge2d_hw_start(ge2d);
290 struct meson_ge2d *ge2d = priv;
293 regmap_read(ge2d->map, GE2D_STATUS0, &intr);
297 struct ge2d_ctx *ctx = ge2d->curr;
299 ge2d->curr = NULL;
313 v4l2_m2m_job_finish(ge2d->m2m_dev, ctx->fh.m2m_ctx);
411 src_vq->lock = &ctx->ge2d->mutex;
412 src_vq->dev = ctx->ge2d->v4l2_dev.dev;
425 dst_vq->lock = &ctx->ge2d->mutex;
426 dst_vq->dev = ctx->ge2d->v4l2_dev.dev;
508 struct meson_ge2d *ge2d = ctx->ge2d;
544 v4l2_err(&ge2d->v4l2_dev,
551 v4l2_err(&ge2d->v4l2_dev, "unsupported rectangle value.\n");
596 struct meson_ge2d *ge2d = ctx->ge2d;
610 v4l2_err(&ge2d->v4l2_dev, "queue (%d) bust\n", f->type);
671 struct meson_ge2d *ge2d = ctx->ge2d;
685 v4l2_err(&ge2d->v4l2_dev, "queue (%d) bust\n", f->type);
796 struct meson_ge2d *ge2d = ctx->ge2d;
812 v4l2_err(&ge2d->v4l2_dev, "%s failed\n", __func__);
835 struct meson_ge2d *ge2d = video_drvdata(file);
842 ctx->ge2d = ge2d;
848 if (mutex_lock_interruptible(&ge2d->mutex)) {
852 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(ge2d->m2m_dev, ctx, &queue_init);
855 mutex_unlock(&ge2d->mutex);
869 mutex_unlock(&ge2d->mutex);
878 struct meson_ge2d *ge2d = ctx->ge2d;
880 mutex_lock(&ge2d->mutex);
889 mutex_unlock(&ge2d->mutex);
904 .name = "meson-ge2d",
924 struct meson_ge2d *ge2d;
932 ge2d = devm_kzalloc(&pdev->dev, sizeof(*ge2d), GFP_KERNEL);
933 if (!ge2d)
936 ge2d->dev = &pdev->dev;
937 mutex_init(&ge2d->mutex);
943 ge2d->map = devm_regmap_init_mmio(ge2d->dev, regs,
945 if (IS_ERR(ge2d->map))
946 return PTR_ERR(ge2d->map);
949 ret = devm_request_irq(ge2d->dev, irq, ge2d_isr, 0,
950 dev_name(ge2d->dev), ge2d);
952 dev_err(ge2d->dev, "failed to request irq\n");
956 rst = devm_reset_control_get(ge2d->dev, NULL);
958 dev_err(ge2d->dev, "failed to get core reset controller\n");
962 ge2d->clk = devm_clk_get(ge2d->dev, NULL);
963 if (IS_ERR(ge2d->clk)) {
964 dev_err(ge2d->dev, "failed to get clock\n");
965 return PTR_ERR(ge2d->clk);
972 ret = clk_prepare_enable(ge2d->clk);
974 dev_err(ge2d->dev, "Cannot enable ge2d sclk: %d\n", ret);
978 ret = v4l2_device_register(&pdev->dev, &ge2d->v4l2_dev);
984 v4l2_err(&ge2d->v4l2_dev, "Failed to allocate video device\n");
990 vfd->lock = &ge2d->mutex;
991 vfd->v4l2_dev = &ge2d->v4l2_dev;
993 video_set_drvdata(vfd, ge2d);
994 ge2d->vfd = vfd;
996 platform_set_drvdata(pdev, ge2d);
997 ge2d->m2m_dev = v4l2_m2m_init(&ge2d_m2m_ops);
998 if (IS_ERR(ge2d->m2m_dev)) {
999 v4l2_err(&ge2d->v4l2_dev, "Failed to init mem2mem device\n");
1000 ret = PTR_ERR(ge2d->m2m_dev);
1006 v4l2_err(&ge2d->v4l2_dev, "Failed to register video device\n");
1010 v4l2_info(&ge2d->v4l2_dev, "Registered %s as /dev/%s\n",
1016 v4l2_m2m_release(ge2d->m2m_dev);
1018 video_device_release(ge2d->vfd);
1020 v4l2_device_unregister(&ge2d->v4l2_dev);
1022 clk_disable_unprepare(ge2d->clk);
1029 struct meson_ge2d *ge2d = platform_get_drvdata(pdev);
1031 video_unregister_device(ge2d->vfd);
1032 v4l2_m2m_release(ge2d->m2m_dev);
1033 v4l2_device_unregister(&ge2d->v4l2_dev);
1034 clk_disable_unprepare(ge2d->clk);
1039 .compatible = "amlogic,axg-ge2d",
1050 .name = "meson-ge2d",