Lines Matching refs:ctx

158 	struct deinterlace_ctx *ctx = priv;  in deinterlace_job_ready()  local
159 struct deinterlace_dev *pcdev = ctx->dev; in deinterlace_job_ready()
161 if ((v4l2_m2m_num_src_bufs_ready(ctx->m2m_ctx) > 0) in deinterlace_job_ready()
162 && (v4l2_m2m_num_dst_bufs_ready(ctx->m2m_ctx) > 0) in deinterlace_job_ready()
163 && (atomic_read(&ctx->dev->busy) == 0)) { in deinterlace_job_ready()
175 struct deinterlace_ctx *ctx = priv; in deinterlace_job_abort() local
176 struct deinterlace_dev *pcdev = ctx->dev; in deinterlace_job_abort()
178 ctx->aborting = 1; in deinterlace_job_abort()
182 v4l2_m2m_job_finish(pcdev->m2m_dev, ctx->m2m_ctx); in deinterlace_job_abort()
187 struct deinterlace_ctx *ctx = priv; in deinterlace_lock() local
188 struct deinterlace_dev *pcdev = ctx->dev; in deinterlace_lock()
194 struct deinterlace_ctx *ctx = priv; in deinterlace_unlock() local
195 struct deinterlace_dev *pcdev = ctx->dev; in deinterlace_unlock()
224 static void deinterlace_issue_dma(struct deinterlace_ctx *ctx, int op, in deinterlace_issue_dma() argument
229 struct deinterlace_dev *pcdev = ctx->dev; in deinterlace_issue_dma()
238 src_buf = v4l2_m2m_next_src_buf(ctx->m2m_ctx); in deinterlace_issue_dma()
239 dst_buf = v4l2_m2m_next_dst_buf(ctx->m2m_ctx); in deinterlace_issue_dma()
257 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
258 ctx->xt->sgl[0].size = s_width; in deinterlace_issue_dma()
259 ctx->xt->sgl[0].icg = s_width; in deinterlace_issue_dma()
260 ctx->xt->src_start = p_in; in deinterlace_issue_dma()
261 ctx->xt->dst_start = p_out; in deinterlace_issue_dma()
264 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
265 ctx->xt->sgl[0].size = s_width; in deinterlace_issue_dma()
266 ctx->xt->sgl[0].icg = s_width; in deinterlace_issue_dma()
267 ctx->xt->src_start = p_in + s_size / 2; in deinterlace_issue_dma()
268 ctx->xt->dst_start = p_out + s_width; in deinterlace_issue_dma()
271 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
272 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
273 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
274 ctx->xt->src_start = p_in + s_size; in deinterlace_issue_dma()
275 ctx->xt->dst_start = p_out + s_size; in deinterlace_issue_dma()
278 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
279 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
280 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
281 ctx->xt->src_start = p_in + (9 * s_size) / 8; in deinterlace_issue_dma()
282 ctx->xt->dst_start = p_out + s_size + s_width / 2; in deinterlace_issue_dma()
285 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
286 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
287 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
288 ctx->xt->src_start = p_in + (5 * s_size) / 4; in deinterlace_issue_dma()
289 ctx->xt->dst_start = p_out + (5 * s_size) / 4; in deinterlace_issue_dma()
292 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
293 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
294 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
295 ctx->xt->src_start = p_in + (11 * s_size) / 8; in deinterlace_issue_dma()
296 ctx->xt->dst_start = p_out + (5 * s_size) / 4 + s_width / 2; in deinterlace_issue_dma()
299 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
300 ctx->xt->sgl[0].size = s_width; in deinterlace_issue_dma()
301 ctx->xt->sgl[0].icg = s_width; in deinterlace_issue_dma()
302 ctx->xt->src_start = p_in; in deinterlace_issue_dma()
303 ctx->xt->dst_start = p_out + s_width; in deinterlace_issue_dma()
306 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
307 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
308 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
309 ctx->xt->src_start = p_in + s_size; in deinterlace_issue_dma()
310 ctx->xt->dst_start = p_out + s_size + s_width / 2; in deinterlace_issue_dma()
313 ctx->xt->numf = s_height / 4; in deinterlace_issue_dma()
314 ctx->xt->sgl[0].size = s_width / 2; in deinterlace_issue_dma()
315 ctx->xt->sgl[0].icg = s_width / 2; in deinterlace_issue_dma()
316 ctx->xt->src_start = p_in + (5 * s_size) / 4; in deinterlace_issue_dma()
317 ctx->xt->dst_start = p_out + (5 * s_size) / 4 + s_width / 2; in deinterlace_issue_dma()
320 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
321 ctx->xt->sgl[0].size = s_width * 2; in deinterlace_issue_dma()
322 ctx->xt->sgl[0].icg = s_width * 2; in deinterlace_issue_dma()
323 ctx->xt->src_start = p_in; in deinterlace_issue_dma()
324 ctx->xt->dst_start = p_out; in deinterlace_issue_dma()
327 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
328 ctx->xt->sgl[0].size = s_width * 2; in deinterlace_issue_dma()
329 ctx->xt->sgl[0].icg = s_width * 2; in deinterlace_issue_dma()
330 ctx->xt->src_start = p_in + s_size; in deinterlace_issue_dma()
331 ctx->xt->dst_start = p_out + s_width * 2; in deinterlace_issue_dma()
335 ctx->xt->numf = s_height / 2; in deinterlace_issue_dma()
336 ctx->xt->sgl[0].size = s_width * 2; in deinterlace_issue_dma()
337 ctx->xt->sgl[0].icg = s_width * 2; in deinterlace_issue_dma()
338 ctx->xt->src_start = p_in; in deinterlace_issue_dma()
339 ctx->xt->dst_start = p_out + s_width * 2; in deinterlace_issue_dma()
344 ctx->xt->frame_size = 1; in deinterlace_issue_dma()
345 ctx->xt->dir = DMA_MEM_TO_MEM; in deinterlace_issue_dma()
346 ctx->xt->src_sgl = false; in deinterlace_issue_dma()
347 ctx->xt->dst_sgl = true; in deinterlace_issue_dma()
350 tx = dmadev->device_prep_interleaved_dma(chan, ctx->xt, flags); in deinterlace_issue_dma()
358 tx->callback_param = ctx; in deinterlace_issue_dma()
361 ctx->cookie = dmaengine_submit(tx); in deinterlace_issue_dma()
362 if (dma_submit_error(ctx->cookie)) { in deinterlace_issue_dma()
365 ctx->cookie, (unsigned)p_in, (unsigned)p_out, in deinterlace_issue_dma()
375 struct deinterlace_ctx *ctx = priv; in deinterlace_device_run() local
378 atomic_set(&ctx->dev->busy, 1); in deinterlace_device_run()
380 dprintk(ctx->dev, "%s: DMA try issue.\n", __func__); in deinterlace_device_run()
404 dprintk(ctx->dev, "%s: yuv420 interlaced tb.\n", in deinterlace_device_run()
406 deinterlace_issue_dma(ctx, YUV420_DMA_Y_ODD, 0); in deinterlace_device_run()
407 deinterlace_issue_dma(ctx, YUV420_DMA_Y_EVEN, 0); in deinterlace_device_run()
408 deinterlace_issue_dma(ctx, YUV420_DMA_U_ODD, 0); in deinterlace_device_run()
409 deinterlace_issue_dma(ctx, YUV420_DMA_U_EVEN, 0); in deinterlace_device_run()
410 deinterlace_issue_dma(ctx, YUV420_DMA_V_ODD, 0); in deinterlace_device_run()
411 deinterlace_issue_dma(ctx, YUV420_DMA_V_EVEN, 1); in deinterlace_device_run()
415 dprintk(ctx->dev, "%s: yuv420 interlaced line doubling.\n", in deinterlace_device_run()
417 deinterlace_issue_dma(ctx, YUV420_DMA_Y_ODD, 0); in deinterlace_device_run()
418 deinterlace_issue_dma(ctx, YUV420_DMA_Y_ODD_DOUBLING, 0); in deinterlace_device_run()
419 deinterlace_issue_dma(ctx, YUV420_DMA_U_ODD, 0); in deinterlace_device_run()
420 deinterlace_issue_dma(ctx, YUV420_DMA_U_ODD_DOUBLING, 0); in deinterlace_device_run()
421 deinterlace_issue_dma(ctx, YUV420_DMA_V_ODD, 0); in deinterlace_device_run()
422 deinterlace_issue_dma(ctx, YUV420_DMA_V_ODD_DOUBLING, 1); in deinterlace_device_run()
431 dprintk(ctx->dev, "%s: yuyv interlaced_tb.\n", in deinterlace_device_run()
433 deinterlace_issue_dma(ctx, YUYV_DMA_ODD, 0); in deinterlace_device_run()
434 deinterlace_issue_dma(ctx, YUYV_DMA_EVEN, 1); in deinterlace_device_run()
438 dprintk(ctx->dev, "%s: yuyv interlaced line doubling.\n", in deinterlace_device_run()
440 deinterlace_issue_dma(ctx, YUYV_DMA_ODD, 0); in deinterlace_device_run()
441 deinterlace_issue_dma(ctx, YUYV_DMA_EVEN_DOUBLING, 1); in deinterlace_device_run()
447 dprintk(ctx->dev, "%s: DMA issue done.\n", __func__); in deinterlace_device_run()
513 static int vidioc_g_fmt(struct deinterlace_ctx *ctx, struct v4l2_format *f) in vidioc_g_fmt() argument
518 vq = v4l2_m2m_get_vq(ctx->m2m_ctx, f->type); in vidioc_g_fmt()
539 f->fmt.pix.colorspace = ctx->colorspace; in vidioc_g_fmt()
575 struct deinterlace_ctx *ctx = priv; in vidioc_try_fmt_vid_cap() local
581 f->fmt.pix.colorspace = ctx->colorspace; in vidioc_try_fmt_vid_cap()
610 static int vidioc_s_fmt(struct deinterlace_ctx *ctx, struct v4l2_format *f) in vidioc_s_fmt() argument
615 vq = v4l2_m2m_get_vq(ctx->m2m_ctx, f->type); in vidioc_s_fmt()
624 v4l2_err(&ctx->dev->v4l2_dev, "%s queue busy\n", __func__); in vidioc_s_fmt()
630 v4l2_err(&ctx->dev->v4l2_dev, in vidioc_s_fmt()
652 dprintk(ctx->dev, in vidioc_s_fmt()
674 struct deinterlace_ctx *ctx = priv; in vidioc_s_fmt_vid_out() local
683 ctx->colorspace = f->fmt.pix.colorspace; in vidioc_s_fmt_vid_out()
691 struct deinterlace_ctx *ctx = priv; in vidioc_reqbufs() local
693 return v4l2_m2m_reqbufs(file, ctx->m2m_ctx, reqbufs); in vidioc_reqbufs()
699 struct deinterlace_ctx *ctx = priv; in vidioc_querybuf() local
701 return v4l2_m2m_querybuf(file, ctx->m2m_ctx, buf); in vidioc_querybuf()
706 struct deinterlace_ctx *ctx = priv; in vidioc_qbuf() local
708 return v4l2_m2m_qbuf(file, ctx->m2m_ctx, buf); in vidioc_qbuf()
713 struct deinterlace_ctx *ctx = priv; in vidioc_dqbuf() local
715 return v4l2_m2m_dqbuf(file, ctx->m2m_ctx, buf); in vidioc_dqbuf()
722 struct deinterlace_ctx *ctx = priv; in vidioc_streamon() local
729 v4l2_err(&ctx->dev->v4l2_dev, in vidioc_streamon()
739 v4l2_err(&ctx->dev->v4l2_dev, in vidioc_streamon()
748 v4l2_err(&ctx->dev->v4l2_dev, in vidioc_streamon()
758 return v4l2_m2m_streamon(file, ctx->m2m_ctx, type); in vidioc_streamon()
764 struct deinterlace_ctx *ctx = priv; in vidioc_streamoff() local
766 return v4l2_m2m_streamoff(file, ctx->m2m_ctx, type); in vidioc_streamoff()
805 struct deinterlace_ctx *ctx = vb2_get_drv_priv(vq); in deinterlace_queue_setup() local
824 alloc_ctxs[0] = ctx->dev->alloc_ctx; in deinterlace_queue_setup()
826 dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size); in deinterlace_queue_setup()
833 struct deinterlace_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue); in deinterlace_buf_prepare() local
836 dprintk(ctx->dev, "type: %d\n", vb->vb2_queue->type); in deinterlace_buf_prepare()
841 dprintk(ctx->dev, "%s data will not fit into plane (%lu < %lu)\n", in deinterlace_buf_prepare()
854 struct deinterlace_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue); in deinterlace_buf_queue() local
856 v4l2_m2m_buf_queue(ctx->m2m_ctx, vbuf); in deinterlace_buf_queue()
868 struct deinterlace_ctx *ctx = priv; in queue_init() local
873 src_vq->drv_priv = ctx; in queue_init()
890 dst_vq->drv_priv = ctx; in queue_init()
910 struct deinterlace_ctx *ctx = NULL; in deinterlace_open() local
912 ctx = kzalloc(sizeof *ctx, GFP_KERNEL); in deinterlace_open()
913 if (!ctx) in deinterlace_open()
916 file->private_data = ctx; in deinterlace_open()
917 ctx->dev = pcdev; in deinterlace_open()
919 ctx->m2m_ctx = v4l2_m2m_ctx_init(pcdev->m2m_dev, ctx, &queue_init); in deinterlace_open()
920 if (IS_ERR(ctx->m2m_ctx)) { in deinterlace_open()
921 int ret = PTR_ERR(ctx->m2m_ctx); in deinterlace_open()
923 kfree(ctx); in deinterlace_open()
927 ctx->xt = kzalloc(sizeof(struct dma_interleaved_template) + in deinterlace_open()
929 if (!ctx->xt) { in deinterlace_open()
930 kfree(ctx); in deinterlace_open()
934 ctx->colorspace = V4L2_COLORSPACE_REC709; in deinterlace_open()
936 dprintk(pcdev, "Created instance %p, m2m_ctx: %p\n", ctx, ctx->m2m_ctx); in deinterlace_open()
944 struct deinterlace_ctx *ctx = file->private_data; in deinterlace_release() local
946 dprintk(pcdev, "Releasing instance %p\n", ctx); in deinterlace_release()
948 v4l2_m2m_ctx_release(ctx->m2m_ctx); in deinterlace_release()
949 kfree(ctx->xt); in deinterlace_release()
950 kfree(ctx); in deinterlace_release()
958 struct deinterlace_ctx *ctx = file->private_data; in deinterlace_poll() local
961 deinterlace_lock(ctx); in deinterlace_poll()
962 ret = v4l2_m2m_poll(file, ctx->m2m_ctx, wait); in deinterlace_poll()
963 deinterlace_unlock(ctx); in deinterlace_poll()
970 struct deinterlace_ctx *ctx = file->private_data; in deinterlace_mmap() local
972 return v4l2_m2m_mmap(file, ctx->m2m_ctx, vma); in deinterlace_mmap()