Lines Matching refs:gsc

25 #include "gsc-core.h"
30 struct gsc_dev *gsc = ctx->gsc_dev;
33 curr_ctx = v4l2_m2m_get_curr_priv(gsc->m2m.m2m_dev);
34 if (!gsc_m2m_pending(gsc) || (curr_ctx != ctx))
38 ret = wait_event_timeout(gsc->irq_queue,
147 struct gsc_dev *gsc;
155 gsc = ctx->gsc_dev;
156 spin_lock_irqsave(&gsc->slock, flags);
158 set_bit(ST_M2M_PEND, &gsc->state);
161 if (gsc->m2m.ctx != ctx) {
162 pr_debug("gsc->m2m.ctx = 0x%p, current_ctx = 0x%p",
163 gsc->m2m.ctx, ctx);
165 gsc->m2m.ctx = ctx;
172 wake_up(&gsc->irq_queue);
182 gsc_set_prefbuf(gsc, &ctx->s_frame);
183 gsc_hw_set_input_addr(gsc, &ctx->s_frame.addr, GSC_M2M_BUF_NUM);
184 gsc_hw_set_output_addr(gsc, &ctx->d_frame.addr, GSC_M2M_BUF_NUM);
187 gsc_hw_set_input_buf_masking(gsc, GSC_M2M_BUF_NUM, false);
188 gsc_hw_set_output_buf_masking(gsc, GSC_M2M_BUF_NUM, false);
189 gsc_hw_set_frm_done_irq_mask(gsc, false);
190 gsc_hw_set_gsc_irq_enable(gsc, true);
215 gsc_hw_enable_control(gsc, true);
217 spin_unlock_irqrestore(&gsc->slock, flags);
222 spin_unlock_irqrestore(&gsc->slock, flags);
289 struct gsc_dev *gsc = ctx->gsc_dev;
294 dev_name(&gsc->pdev->dev));
370 struct gsc_dev *gsc = ctx->gsc_dev;
374 gsc->variant->in_buf_cnt : gsc->variant->out_buf_cnt;
613 struct gsc_dev *gsc = video_drvdata(file);
617 pr_debug("pid: %d, state: 0x%lx", task_pid_nr(current), gsc->state);
619 if (mutex_lock_interruptible(&gsc->lock))
628 v4l2_fh_init(&ctx->fh, gsc->m2m.vfd);
638 ctx->gsc_dev = gsc;
648 ctx->m2m_ctx = v4l2_m2m_ctx_init(gsc->m2m.m2m_dev, ctx, queue_init);
655 if (gsc->m2m.refcnt++ == 0)
656 set_bit(ST_M2M_OPEN, &gsc->state);
658 pr_debug("gsc m2m driver is opened, ctx(0x%p)", ctx);
660 mutex_unlock(&gsc->lock);
670 mutex_unlock(&gsc->lock);
677 struct gsc_dev *gsc = ctx->gsc_dev;
680 task_pid_nr(current), gsc->state, gsc->m2m.refcnt);
682 mutex_lock(&gsc->lock);
689 if (--gsc->m2m.refcnt <= 0)
690 clear_bit(ST_M2M_OPEN, &gsc->state);
693 mutex_unlock(&gsc->lock);
701 struct gsc_dev *gsc = ctx->gsc_dev;
704 if (mutex_lock_interruptible(&gsc->lock))
708 mutex_unlock(&gsc->lock);
716 struct gsc_dev *gsc = ctx->gsc_dev;
719 if (mutex_lock_interruptible(&gsc->lock))
723 mutex_unlock(&gsc->lock);
742 int gsc_register_m2m_device(struct gsc_dev *gsc)
747 if (!gsc)
750 pdev = gsc->pdev;
752 gsc->vdev.fops = &gsc_m2m_fops;
753 gsc->vdev.ioctl_ops = &gsc_m2m_ioctl_ops;
754 gsc->vdev.release = video_device_release_empty;
755 gsc->vdev.lock = &gsc->lock;
756 gsc->vdev.vfl_dir = VFL_DIR_M2M;
757 gsc->vdev.v4l2_dev = &gsc->v4l2_dev;
758 gsc->vdev.device_caps = V4L2_CAP_STREAMING |
760 snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
761 GSC_MODULE_NAME, gsc->id);
763 video_set_drvdata(&gsc->vdev, gsc);
765 gsc->m2m.vfd = &gsc->vdev;
766 gsc->m2m.m2m_dev = v4l2_m2m_init(&gsc_m2m_ops);
767 if (IS_ERR(gsc->m2m.m2m_dev)) {
769 return PTR_ERR(gsc->m2m.m2m_dev);
772 ret = video_register_device(&gsc->vdev, VFL_TYPE_VIDEO, -1);
779 pr_debug("gsc m2m driver registered as /dev/video%d", gsc->vdev.num);
783 v4l2_m2m_release(gsc->m2m.m2m_dev);
788 void gsc_unregister_m2m_device(struct gsc_dev *gsc)
790 if (gsc) {
791 v4l2_m2m_release(gsc->m2m.m2m_dev);
792 video_unregister_device(&gsc->vdev);