Lines Matching refs:fimc

64 	struct fimc_dev *fimc = ctx->fimc_dev;  in fimc_m2m_shutdown()  local
67 if (!fimc_m2m_pending(fimc)) in fimc_m2m_shutdown()
72 ret = wait_event_timeout(fimc->irq_queue, in fimc_m2m_shutdown()
105 struct fimc_dev *fimc; in fimc_device_run() local
112 fimc = ctx->fimc_dev; in fimc_device_run()
113 spin_lock_irqsave(&fimc->slock, flags); in fimc_device_run()
115 set_bit(ST_M2M_PEND, &fimc->state); in fimc_device_run()
141 if (fimc->m2m.ctx != ctx) { in fimc_device_run()
143 fimc->m2m.ctx = ctx; in fimc_device_run()
159 if (fimc->drv_data->alpha_color) in fimc_device_run()
163 fimc_hw_set_input_addr(fimc, &sf->paddr); in fimc_device_run()
164 fimc_hw_set_output_addr(fimc, &df->paddr, -1); in fimc_device_run()
168 fimc_hw_activate_input_dma(fimc, true); in fimc_device_run()
171 spin_unlock_irqrestore(&fimc->slock, flags); in fimc_device_run()
244 struct fimc_dev *fimc = video_drvdata(file); in fimc_m2m_querycap() local
255 __fimc_vidioc_querycap(&fimc->pdev->dev, cap, caps); in fimc_m2m_querycap()
289 struct fimc_dev *fimc = ctx->fimc_dev; in fimc_try_fmt_mplane() local
290 const struct fimc_variant *variant = fimc->variant; in fimc_try_fmt_mplane()
365 struct fimc_dev *fimc = ctx->fimc_dev; in fimc_m2m_s_fmt_mplane() local
378 v4l2_err(&fimc->m2m.vfd, "queue (%d) busy\n", f->type); in fimc_m2m_s_fmt_mplane()
438 struct fimc_dev *fimc = ctx->fimc_dev; in fimc_m2m_try_crop() local
444 v4l2_err(&fimc->m2m.vfd, in fimc_m2m_try_crop()
456 fimc->variant->min_inp_pixsize : fimc->variant->min_out_pixsize; in fimc_m2m_try_crop()
459 if (fimc->variant->min_vsize_align == 1) in fimc_m2m_try_crop()
462 halign = ffs(fimc->variant->min_vsize_align) - 1; in fimc_m2m_try_crop()
479 cr->c.top = round_down(cr->c.top, fimc->variant->hor_offs_align); in fimc_m2m_try_crop()
491 struct fimc_dev *fimc = ctx->fimc_dev; in fimc_m2m_s_crop() local
514 v4l2_err(&fimc->m2m.vfd, "Out of scaler range\n"); in fimc_m2m_s_crop()
607 struct fimc_dev *fimc = video_drvdata(file); in fimc_m2m_open() local
611 pr_debug("pid: %d, state: %#lx\n", task_pid_nr(current), fimc->state); in fimc_m2m_open()
613 if (mutex_lock_interruptible(&fimc->lock)) in fimc_m2m_open()
619 if (test_bit(ST_CAPT_BUSY, &fimc->state)) in fimc_m2m_open()
627 v4l2_fh_init(&ctx->fh, &fimc->m2m.vfd); in fimc_m2m_open()
628 ctx->fimc_dev = fimc; in fimc_m2m_open()
650 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(fimc->m2m.m2m_dev, ctx, queue_init); in fimc_m2m_open()
656 if (fimc->m2m.refcnt++ == 0) in fimc_m2m_open()
657 set_bit(ST_M2M_RUN, &fimc->state); in fimc_m2m_open()
663 mutex_unlock(&fimc->lock); in fimc_m2m_open()
675 mutex_unlock(&fimc->lock); in fimc_m2m_open()
682 struct fimc_dev *fimc = ctx->fimc_dev; in fimc_m2m_release() local
685 task_pid_nr(current), fimc->state, fimc->m2m.refcnt); in fimc_m2m_release()
687 mutex_lock(&fimc->lock); in fimc_m2m_release()
694 if (--fimc->m2m.refcnt <= 0) in fimc_m2m_release()
695 clear_bit(ST_M2M_RUN, &fimc->state); in fimc_m2m_release()
698 mutex_unlock(&fimc->lock); in fimc_m2m_release()
716 int fimc_register_m2m_device(struct fimc_dev *fimc, in fimc_register_m2m_device() argument
719 struct video_device *vfd = &fimc->m2m.vfd; in fimc_register_m2m_device()
722 fimc->v4l2_dev = v4l2_dev; in fimc_register_m2m_device()
730 vfd->lock = &fimc->lock; in fimc_register_m2m_device()
733 snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id); in fimc_register_m2m_device()
734 video_set_drvdata(vfd, fimc); in fimc_register_m2m_device()
736 fimc->m2m.m2m_dev = v4l2_m2m_init(&m2m_ops); in fimc_register_m2m_device()
737 if (IS_ERR(fimc->m2m.m2m_dev)) { in fimc_register_m2m_device()
739 return PTR_ERR(fimc->m2m.m2m_dev); in fimc_register_m2m_device()
757 v4l2_m2m_release(fimc->m2m.m2m_dev); in fimc_register_m2m_device()
761 void fimc_unregister_m2m_device(struct fimc_dev *fimc) in fimc_unregister_m2m_device() argument
763 if (!fimc) in fimc_unregister_m2m_device()
766 if (fimc->m2m.m2m_dev) in fimc_unregister_m2m_device()
767 v4l2_m2m_release(fimc->m2m.m2m_dev); in fimc_unregister_m2m_device()
769 if (video_is_registered(&fimc->m2m.vfd)) { in fimc_unregister_m2m_device()
770 video_unregister_device(&fimc->m2m.vfd); in fimc_unregister_m2m_device()
771 media_entity_cleanup(&fimc->m2m.vfd.entity); in fimc_unregister_m2m_device()