Lines Matching refs:ctx

235 static struct vim2m_q_data *get_q_data(struct vim2m_ctx *ctx,
240 return &ctx->q_data[V4L2_M2M_SRC];
242 return &ctx->q_data[V4L2_M2M_DST];
439 static int device_process(struct vim2m_ctx *ctx,
443 struct vim2m_dev *dev = ctx->dev;
450 q_data_in = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
456 q_data_out = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
476 if (ctx->mode & MEM2MEM_VFLIP) {
496 if (ctx->mode & MEM2MEM_HFLIP)
500 ctx->mode & MEM2MEM_HFLIP);
519 if (ctx->mode & MEM2MEM_HFLIP)
531 if (ctx->mode & MEM2MEM_HFLIP)
538 ctx->mode & MEM2MEM_HFLIP);
548 if (ctx->mode & MEM2MEM_HFLIP)
567 struct vim2m_ctx *ctx = priv;
569 if (v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx) < ctx->translen
570 || v4l2_m2m_num_dst_bufs_ready(ctx->fh.m2m_ctx) < ctx->translen) {
571 dprintk(ctx->dev, 1, "Not enough buffers available\n");
580 struct vim2m_ctx *ctx = priv;
583 ctx->aborting = 1;
594 struct vim2m_ctx *ctx = priv;
597 src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
598 dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
602 &ctx->hdl);
604 device_process(ctx, src_buf, dst_buf);
608 &ctx->hdl);
611 schedule_delayed_work(&ctx->work_run, msecs_to_jiffies(ctx->transtime));
719 static int vidioc_g_fmt(struct vim2m_ctx *ctx, struct v4l2_format *f)
724 vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, f->type);
728 q_data = get_q_data(ctx, f->type);
738 f->fmt.pix.colorspace = ctx->colorspace;
739 f->fmt.pix.xfer_func = ctx->xfer_func;
740 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
741 f->fmt.pix.quantization = ctx->quant;
789 struct vim2m_ctx *ctx = file2ctx(file);
797 v4l2_err(&ctx->dev->v4l2_dev,
802 f->fmt.pix.colorspace = ctx->colorspace;
803 f->fmt.pix.xfer_func = ctx->xfer_func;
804 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
805 f->fmt.pix.quantization = ctx->quant;
814 struct vim2m_ctx *ctx = file2ctx(file);
822 v4l2_err(&ctx->dev->v4l2_dev,
833 static int vidioc_s_fmt(struct vim2m_ctx *ctx, struct v4l2_format *f)
838 vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, f->type);
842 q_data = get_q_data(ctx, f->type);
847 v4l2_err(&ctx->dev->v4l2_dev, "%s queue busy\n", __func__);
857 dprintk(ctx->dev, 1,
884 struct vim2m_ctx *ctx = file2ctx(file);
893 ctx->colorspace = f->fmt.pix.colorspace;
894 ctx->xfer_func = f->fmt.pix.xfer_func;
895 ctx->ycbcr_enc = f->fmt.pix.ycbcr_enc;
896 ctx->quant = f->fmt.pix.quantization;
903 struct vim2m_ctx *ctx =
909 ctx->mode |= MEM2MEM_HFLIP;
911 ctx->mode &= ~MEM2MEM_HFLIP;
916 ctx->mode |= MEM2MEM_VFLIP;
918 ctx->mode &= ~MEM2MEM_VFLIP;
922 ctx->transtime = ctrl->val;
923 if (ctx->transtime < 1)
924 ctx->transtime = 1;
928 ctx->translen = ctrl->val;
932 v4l2_err(&ctx->dev->v4l2_dev, "Invalid control\n");
982 struct vim2m_ctx *ctx = vb2_get_drv_priv(vq);
986 q_data = get_q_data(ctx, vq->type);
1002 dprintk(ctx->dev, 1, "%s: get %d buffer(s) of size %d each.\n",
1011 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1016 dprintk(ctx->dev, 1, "%s field isn't supported\n", __func__);
1025 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1028 dprintk(ctx->dev, 2, "type: %s\n", type_name(vb->vb2_queue->type));
1030 q_data = get_q_data(ctx, vb->vb2_queue->type);
1034 dprintk(ctx->dev, 1,
1049 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1051 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
1056 struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
1057 struct vim2m_q_data *q_data = get_q_data(ctx, q->type);
1063 ctx->aborting = 0;
1071 struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
1074 cancel_delayed_work_sync(&ctx->work_run);
1078 vbuf = v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
1080 vbuf = v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
1084 &ctx->hdl);
1091 struct vim2m_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1093 v4l2_ctrl_request_complete(vb->req_obj.req, &ctx->hdl);
1111 struct vim2m_ctx *ctx = priv;
1116 src_vq->drv_priv = ctx;
1121 src_vq->lock = &ctx->vb_mutex;
1130 dst_vq->drv_priv = ctx;
1135 dst_vq->lock = &ctx->vb_mutex;
1167 struct vim2m_ctx *ctx = NULL;
1173 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
1174 if (!ctx) {
1179 v4l2_fh_init(&ctx->fh, video_devdata(file));
1180 file->private_data = &ctx->fh;
1181 ctx->dev = dev;
1182 hdl = &ctx->hdl;
1193 kfree(ctx);
1196 ctx->fh.ctrl_handler = hdl;
1199 ctx->q_data[V4L2_M2M_SRC].fmt = &formats[0];
1200 ctx->q_data[V4L2_M2M_SRC].width = 640;
1201 ctx->q_data[V4L2_M2M_SRC].height = 480;
1202 ctx->q_data[V4L2_M2M_SRC].sizeimage =
1203 ctx->q_data[V4L2_M2M_SRC].width *
1204 ctx->q_data[V4L2_M2M_SRC].height *
1205 (ctx->q_data[V4L2_M2M_SRC].fmt->depth >> 3);
1206 ctx->q_data[V4L2_M2M_DST] = ctx->q_data[V4L2_M2M_SRC];
1207 ctx->colorspace = V4L2_COLORSPACE_REC709;
1209 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, ctx, &queue_init);
1211 mutex_init(&ctx->vb_mutex);
1212 INIT_DELAYED_WORK(&ctx->work_run, device_work);
1214 if (IS_ERR(ctx->fh.m2m_ctx)) {
1215 rc = PTR_ERR(ctx->fh.m2m_ctx);
1218 v4l2_fh_exit(&ctx->fh);
1219 kfree(ctx);
1223 v4l2_fh_add(&ctx->fh);
1227 ctx, ctx->fh.m2m_ctx);
1237 struct vim2m_ctx *ctx = file2ctx(file);
1239 dprintk(dev, 1, "Releasing instance %p\n", ctx);
1241 v4l2_fh_del(&ctx->fh);
1242 v4l2_fh_exit(&ctx->fh);
1243 v4l2_ctrl_handler_free(&ctx->hdl);
1245 v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
1247 kfree(ctx);