Lines Matching refs:ctx

240 static struct vim2m_q_data *get_q_data(struct vim2m_ctx *ctx,
245 return &ctx->q_data[V4L2_M2M_SRC];
247 return &ctx->q_data[V4L2_M2M_DST];
444 static int device_process(struct vim2m_ctx *ctx,
448 struct vim2m_dev *dev = ctx->dev;
455 q_data_in = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
461 q_data_out = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
481 if (ctx->mode & MEM2MEM_VFLIP) {
501 if (ctx->mode & MEM2MEM_HFLIP)
505 ctx->mode & MEM2MEM_HFLIP);
524 if (ctx->mode & MEM2MEM_HFLIP)
536 if (ctx->mode & MEM2MEM_HFLIP)
543 ctx->mode & MEM2MEM_HFLIP);
553 if (ctx->mode & MEM2MEM_HFLIP)
572 struct vim2m_ctx *ctx = priv;
574 if (v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx) < ctx->translen
575 || v4l2_m2m_num_dst_bufs_ready(ctx->fh.m2m_ctx) < ctx->translen) {
576 dprintk(ctx->dev, 1, "Not enough buffers available\n");
585 struct vim2m_ctx *ctx = priv;
588 ctx->aborting = 1;
599 struct vim2m_ctx *ctx = priv;
602 src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
603 dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
607 &ctx->hdl);
609 device_process(ctx, src_buf, dst_buf);
613 &ctx->hdl);
616 schedule_delayed_work(&ctx->work_run, msecs_to_jiffies(ctx->transtime));
729 static int vidioc_g_fmt(struct vim2m_ctx *ctx, struct v4l2_format *f)
734 vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, f->type);
738 q_data = get_q_data(ctx, f->type);
748 f->fmt.pix.colorspace = ctx->colorspace;
749 f->fmt.pix.xfer_func = ctx->xfer_func;
750 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
751 f->fmt.pix.quantization = ctx->quant;
799 struct vim2m_ctx *ctx = file2ctx(file);
807 v4l2_err(&ctx->dev->v4l2_dev,
812 f->fmt.pix.colorspace = ctx->colorspace;
813 f->fmt.pix.xfer_func = ctx->xfer_func;
814 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
815 f->fmt.pix.quantization = ctx->quant;
824 struct vim2m_ctx *ctx = file2ctx(file);
832 v4l2_err(&ctx->dev->v4l2_dev,
843 static int vidioc_s_fmt(struct vim2m_ctx *ctx, struct v4l2_format *f)
848 vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, f->type);
852 q_data = get_q_data(ctx, f->type);
857 v4l2_err(&ctx->dev->v4l2_dev, "%s queue busy\n", __func__);
867 dprintk(ctx->dev, 1,
894 struct vim2m_ctx *ctx = file2ctx(file);
903 ctx->colorspace = f->fmt.pix.colorspace;
904 ctx->xfer_func = f->fmt.pix.xfer_func;
905 ctx->ycbcr_enc = f->fmt.pix.ycbcr_enc;
906 ctx->quant = f->fmt.pix.quantization;
913 struct vim2m_ctx *ctx =
919 ctx->mode |= MEM2MEM_HFLIP;
921 ctx->mode &= ~MEM2MEM_HFLIP;
926 ctx->mode |= MEM2MEM_VFLIP;
928 ctx->mode &= ~MEM2MEM_VFLIP;
932 ctx->transtime = ctrl->val;
933 if (ctx->transtime < 1)
934 ctx->transtime = 1;
938 ctx->translen = ctrl->val;
942 v4l2_err(&ctx->dev->v4l2_dev, "Invalid control\n");
992 struct vim2m_ctx *ctx = vb2_get_drv_priv(vq);
996 q_data = get_q_data(ctx, vq->type);
1012 dprintk(ctx->dev, 1, "%s: get %d buffer(s) of size %d each.\n",
1021 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1026 dprintk(ctx->dev, 1, "%s field isn't supported\n", __func__);
1035 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1038 dprintk(ctx->dev, 2, "type: %s\n", type_name(vb->vb2_queue->type));
1040 q_data = get_q_data(ctx, vb->vb2_queue->type);
1044 dprintk(ctx->dev, 1,
1059 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1061 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
1066 struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
1067 struct vim2m_q_data *q_data = get_q_data(ctx, q->type);
1073 ctx->aborting = 0;
1081 struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
1084 cancel_delayed_work_sync(&ctx->work_run);
1088 vbuf = v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
1090 vbuf = v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
1094 &ctx->hdl);
1101 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1103 v4l2_ctrl_request_complete(vb->req_obj.req, &ctx->hdl);
1121 struct vim2m_ctx *ctx = priv;
1126 src_vq->drv_priv = ctx;
1131 src_vq->lock = &ctx->vb_mutex;
1140 dst_vq->drv_priv = ctx;
1145 dst_vq->lock = &ctx->vb_mutex;
1177 struct vim2m_ctx *ctx = NULL;
1183 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
1184 if (!ctx) {
1189 v4l2_fh_init(&ctx->fh, video_devdata(file));
1190 file->private_data = &ctx->fh;
1191 ctx->dev = dev;
1192 hdl = &ctx->hdl;
1203 kfree(ctx);
1206 ctx->fh.ctrl_handler = hdl;
1209 ctx->q_data[V4L2_M2M_SRC].fmt = &formats[0];
1210 ctx->q_data[V4L2_M2M_SRC].width = 640;
1211 ctx->q_data[V4L2_M2M_SRC].height = 480;
1212 ctx->q_data[V4L2_M2M_SRC].sizeimage =
1213 ctx->q_data[V4L2_M2M_SRC].width *
1214 ctx->q_data[V4L2_M2M_SRC].height *
1215 (ctx->q_data[V4L2_M2M_SRC].fmt->depth >> 3);
1216 ctx->q_data[V4L2_M2M_DST] = ctx->q_data[V4L2_M2M_SRC];
1217 ctx->colorspace = V4L2_COLORSPACE_REC709;
1219 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, ctx, &queue_init);
1221 mutex_init(&ctx->vb_mutex);
1222 INIT_DELAYED_WORK(&ctx->work_run, device_work);
1224 if (IS_ERR(ctx->fh.m2m_ctx)) {
1225 rc = PTR_ERR(ctx->fh.m2m_ctx);
1228 v4l2_fh_exit(&ctx->fh);
1229 kfree(ctx);
1233 v4l2_fh_add(&ctx->fh);
1237 ctx, ctx->fh.m2m_ctx);
1247 struct vim2m_ctx *ctx = file2ctx(file);
1249 dprintk(dev, 1, "Releasing instance %p\n", ctx);
1251 v4l2_fh_del(&ctx->fh);
1252 v4l2_fh_exit(&ctx->fh);
1253 v4l2_ctrl_handler_free(&ctx->hdl);
1255 v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
1257 kfree(ctx);