Lines Matching defs:m2m

50 	struct mxc_isi_m2m *m2m;
52 /* Protects the m2m vb2 queues */
96 struct mxc_isi_m2m *m2m = &pipe->isi->m2m;
100 ctx = v4l2_m2m_get_curr_priv(m2m->m2m_dev);
102 dev_err(m2m->isi->dev,
118 v4l2_m2m_job_finish(m2m->m2m_dev, ctx->fh.m2m_ctx);
124 struct mxc_isi_m2m *m2m = ctx->m2m;
128 mxc_isi_channel_disable(m2m->pipe);
130 mutex_lock(&m2m->lock);
133 if (m2m->last_ctx != ctx) {
147 mxc_isi_channel_config(m2m->pipe, MXC_ISI_INPUT_MEM,
151 mxc_isi_channel_set_input_format(m2m->pipe,
154 mxc_isi_channel_set_output_format(m2m->pipe,
158 m2m->last_ctx = ctx;
161 mutex_unlock(&m2m->lock);
164 mxc_isi_channel_set_alpha(m2m->pipe, ctx->ctrls.alpha);
165 mxc_isi_channel_set_flip(m2m->pipe, ctx->ctrls.hflip, ctx->ctrls.vflip);
174 mxc_isi_channel_set_inbuf(m2m->pipe, src_buf->dma_addrs[0]);
175 mxc_isi_channel_set_outbuf(m2m->pipe, dst_buf->dma_addrs, MXC_ISI_BUF1);
176 mxc_isi_channel_set_outbuf(m2m->pipe, dst_buf->dma_addrs, MXC_ISI_BUF2);
178 mxc_isi_channel_enable(m2m->pipe);
180 mxc_isi_channel_m2m_start(m2m->pipe);
226 return mxc_isi_video_buffer_prepare(ctx->m2m->isi, vb2, qdata->info,
282 struct mxc_isi_m2m *m2m = ctx->m2m;
293 src_vq->dev = m2m->isi->dev;
307 dst_vq->dev = m2m->isi->dev;
422 return mxc_isi_format_try(ctx->m2m->pipe, pix, type);
493 struct mxc_isi_m2m *m2m = ctx->m2m;
498 mutex_lock(&m2m->lock);
500 if (m2m->usage_count == INT_MAX) {
513 if (m2m->usage_count == 0) {
514 ret = mxc_isi_channel_acquire(m2m->pipe,
520 mxc_isi_channel_get(m2m->pipe);
523 m2m->usage_count++;
530 ret = mxc_isi_channel_chain(m2m->pipe, bypass);
534 m2m->chained_count++;
542 mutex_unlock(&m2m->lock);
546 mutex_lock(&m2m->lock);
553 if (ctx->chained && --m2m->chained_count == 0)
554 mxc_isi_channel_unchain(m2m->pipe);
558 if (--m2m->usage_count == 0) {
559 mxc_isi_channel_put(m2m->pipe);
560 mxc_isi_channel_release(m2m->pipe);
564 mutex_unlock(&m2m->lock);
572 struct mxc_isi_m2m *m2m = ctx->m2m;
576 mutex_lock(&m2m->lock);
582 if (m2m->last_ctx == ctx)
583 m2m->last_ctx = NULL;
586 if (ctx->chained && --m2m->chained_count == 0)
587 mxc_isi_channel_unchain(m2m->pipe);
591 if (--m2m->usage_count == 0) {
592 mxc_isi_channel_disable(m2m->pipe);
593 mxc_isi_channel_put(m2m->pipe);
594 mxc_isi_channel_release(m2m->pipe);
597 WARN_ON(m2m->usage_count < 0);
599 mutex_unlock(&m2m->lock);
643 qdata->info = mxc_isi_format_try(ctx->m2m->pipe, &qdata->format, type);
649 struct mxc_isi_m2m *m2m = video_drvdata(file);
657 ctx->m2m = m2m;
663 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(m2m->m2m_dev, ctx,
678 ret = pm_runtime_resume_and_get(m2m->isi->dev);
699 struct mxc_isi_m2m *m2m = video_drvdata(file);
711 pm_runtime_put(m2m->isi->dev);
731 struct mxc_isi_m2m *m2m = &isi->m2m;
732 struct video_device *vdev = &m2m->vdev;
736 m2m->isi = isi;
737 m2m->pipe = &isi->pipes[0];
739 mutex_init(&m2m->lock);
742 snprintf(vdev->name, sizeof(vdev->name), "mxc_isi.m2m");
752 video_set_drvdata(vdev, m2m);
755 m2m->m2m_dev = v4l2_m2m_init(&mxc_isi_m2m_ops);
756 if (IS_ERR(m2m->m2m_dev)) {
757 dev_err(isi->dev, "failed to initialize m2m device\n");
758 ret = PTR_ERR(m2m->m2m_dev);
765 dev_err(isi->dev, "failed to register m2m device\n");
785 m2m->pad.flags = MEDIA_PAD_FL_SOURCE;
788 ret = media_entity_pads_init(&vdev->entity, 1, &m2m->pad);
797 &m2m->isi->crossbar.sd.entity,
798 m2m->isi->crossbar.num_sinks - 1,
804 m2m->intf = media_devnode_create(v4l2_dev->mdev, MEDIA_INTF_T_V4L_VIDEO,
806 if (!m2m->intf) {
811 link = media_create_intf_link(&vdev->entity, &m2m->intf->intf,
819 link = media_create_intf_link(&m2m->pipe->video.vdev.entity,
820 &m2m->intf->intf,
831 media_devnode_remove(m2m->intf);
839 v4l2_m2m_release(m2m->m2m_dev);
841 mutex_destroy(&m2m->lock);
847 struct mxc_isi_m2m *m2m = &isi->m2m;
848 struct video_device *vdev = &m2m->vdev;
852 v4l2_m2m_release(m2m->m2m_dev);
853 media_devnode_remove(m2m->intf);
855 mutex_destroy(&m2m->lock);