Lines Matching defs:fimc

27 #include "fimc-core.h"
28 #include "fimc-reg.h"
61 struct fimc_dev *fimc = ctx->fimc_dev;
63 if (!fimc_m2m_pending(fimc))
68 wait_event_timeout(fimc->irq_queue,
94 struct fimc_dev *fimc;
101 fimc = ctx->fimc_dev;
102 spin_lock_irqsave(&fimc->slock, flags);
104 set_bit(ST_M2M_PEND, &fimc->state);
130 if (fimc->m2m.ctx != ctx) {
132 fimc->m2m.ctx = ctx;
148 if (fimc->drv_data->alpha_color)
152 fimc_hw_set_input_addr(fimc, &sf->paddr);
153 fimc_hw_set_output_addr(fimc, &df->paddr, -1);
157 fimc_hw_activate_input_dma(fimc, true);
160 spin_unlock_irqrestore(&fimc->slock, flags);
231 struct fimc_dev *fimc = video_drvdata(file);
233 __fimc_vidioc_querycap(&fimc->pdev->dev, cap);
266 struct fimc_dev *fimc = ctx->fimc_dev;
267 const struct fimc_variant *variant = fimc->variant;
342 struct fimc_dev *fimc = ctx->fimc_dev;
355 v4l2_err(&fimc->m2m.vfd, "queue (%d) busy\n", f->type);
430 struct fimc_dev *fimc = ctx->fimc_dev;
436 v4l2_err(&fimc->m2m.vfd,
453 fimc->variant->min_inp_pixsize : fimc->variant->min_out_pixsize;
456 if (fimc->variant->min_vsize_align == 1)
459 halign = ffs(fimc->variant->min_vsize_align) - 1;
476 s->r.top = round_down(s->r.top, fimc->variant->hor_offs_align);
489 struct fimc_dev *fimc = ctx->fimc_dev;
511 v4l2_err(&fimc->m2m.vfd, "Out of scaler range\n");
605 struct fimc_dev *fimc = video_drvdata(file);
609 pr_debug("pid: %d, state: %#lx\n", task_pid_nr(current), fimc->state);
611 if (mutex_lock_interruptible(&fimc->lock))
617 if (test_bit(ST_CAPT_BUSY, &fimc->state))
625 v4l2_fh_init(&ctx->fh, &fimc->m2m.vfd);
626 ctx->fimc_dev = fimc;
648 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(fimc->m2m.m2m_dev, ctx, queue_init);
654 if (fimc->m2m.refcnt++ == 0)
655 set_bit(ST_M2M_RUN, &fimc->state);
661 mutex_unlock(&fimc->lock);
673 mutex_unlock(&fimc->lock);
680 struct fimc_dev *fimc = ctx->fimc_dev;
683 task_pid_nr(current), fimc->state, fimc->m2m.refcnt);
685 mutex_lock(&fimc->lock);
692 if (--fimc->m2m.refcnt <= 0)
693 clear_bit(ST_M2M_RUN, &fimc->state);
696 mutex_unlock(&fimc->lock);
714 int fimc_register_m2m_device(struct fimc_dev *fimc,
717 struct video_device *vfd = &fimc->m2m.vfd;
720 fimc->v4l2_dev = v4l2_dev;
728 vfd->lock = &fimc->lock;
733 snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id);
734 video_set_drvdata(vfd, fimc);
736 fimc->m2m.m2m_dev = v4l2_m2m_init(&m2m_ops);
737 if (IS_ERR(fimc->m2m.m2m_dev)) {
739 return PTR_ERR(fimc->m2m.m2m_dev);
757 v4l2_m2m_release(fimc->m2m.m2m_dev);
761 void fimc_unregister_m2m_device(struct fimc_dev *fimc)
763 if (!fimc)
766 if (fimc->m2m.m2m_dev)
767 v4l2_m2m_release(fimc->m2m.m2m_dev);
769 if (video_is_registered(&fimc->m2m.vfd)) {
770 video_unregister_device(&fimc->m2m.vfd);
771 media_entity_cleanup(&fimc->m2m.vfd.entity);