Lines Matching refs:pcdev
245 struct emmaprp_dev *pcdev = ctx->dev; in emmaprp_job_abort() local
249 dprintk(pcdev, "Aborting task\n"); in emmaprp_job_abort()
251 v4l2_m2m_job_finish(pcdev->m2m_dev, ctx->m2m_ctx); in emmaprp_job_abort()
257 struct emmaprp_dev *pcdev = ctx->dev; in emmaprp_lock() local
258 mutex_lock(&pcdev->dev_mutex); in emmaprp_lock()
264 struct emmaprp_dev *pcdev = ctx->dev; in emmaprp_unlock() local
265 mutex_unlock(&pcdev->dev_mutex); in emmaprp_unlock()
268 static inline void emmaprp_dump_regs(struct emmaprp_dev *pcdev) in emmaprp_dump_regs() argument
270 dprintk(pcdev, in emmaprp_dump_regs()
279 readl(pcdev->base_emma + PRP_SOURCE_Y_PTR), in emmaprp_dump_regs()
280 readl(pcdev->base_emma + PRP_SRC_FRAME_SIZE), in emmaprp_dump_regs()
281 readl(pcdev->base_emma + PRP_DEST_Y_PTR), in emmaprp_dump_regs()
282 readl(pcdev->base_emma + PRP_DEST_CR_PTR), in emmaprp_dump_regs()
283 readl(pcdev->base_emma + PRP_DEST_CB_PTR), in emmaprp_dump_regs()
284 readl(pcdev->base_emma + PRP_CH2_OUT_IMAGE_SIZE), in emmaprp_dump_regs()
285 readl(pcdev->base_emma + PRP_CNTL)); in emmaprp_dump_regs()
293 struct emmaprp_dev *pcdev = ctx->dev; in emmaprp_device_run() local
315 v4l2_err(&pcdev->v4l2_dev, in emmaprp_device_run()
321 writel(p_in, pcdev->base_emma + PRP_SOURCE_Y_PTR); in emmaprp_device_run()
323 pcdev->base_emma + PRP_SRC_FRAME_SIZE); in emmaprp_device_run()
326 writel(p_out, pcdev->base_emma + PRP_DEST_Y_PTR); in emmaprp_device_run()
327 writel(p_out + d_size, pcdev->base_emma + PRP_DEST_CB_PTR); in emmaprp_device_run()
329 pcdev->base_emma + PRP_DEST_CR_PTR); in emmaprp_device_run()
331 pcdev->base_emma + PRP_CH2_OUT_IMAGE_SIZE); in emmaprp_device_run()
334 tmp = readl(pcdev->base_emma + PRP_INTR_CNTL); in emmaprp_device_run()
338 pcdev->base_emma + PRP_INTR_CNTL); in emmaprp_device_run()
340 emmaprp_dump_regs(pcdev); in emmaprp_device_run()
343 tmp = readl(pcdev->base_emma + PRP_CNTL); in emmaprp_device_run()
347 pcdev->base_emma + PRP_CNTL); in emmaprp_device_run()
352 struct emmaprp_dev *pcdev = data; in emmaprp_irq() local
359 irqst = readl(pcdev->base_emma + PRP_INTRSTATUS); in emmaprp_irq()
360 writel(irqst, pcdev->base_emma + PRP_INTRSTATUS); in emmaprp_irq()
361 dprintk(pcdev, "irqst = 0x%08x\n", irqst); in emmaprp_irq()
363 curr_ctx = v4l2_m2m_get_curr_priv(pcdev->m2m_dev); in emmaprp_irq()
373 writel(PRP_CNTL_SWRST, pcdev->base_emma + PRP_CNTL); in emmaprp_irq()
386 spin_lock_irqsave(&pcdev->irqlock, flags); in emmaprp_irq()
389 spin_unlock_irqrestore(&pcdev->irqlock, flags); in emmaprp_irq()
393 v4l2_m2m_job_finish(pcdev->m2m_dev, curr_ctx->m2m_ctx); in emmaprp_irq()
789 struct emmaprp_dev *pcdev = video_drvdata(file); in emmaprp_open() local
797 ctx->dev = pcdev; in emmaprp_open()
799 if (mutex_lock_interruptible(&pcdev->dev_mutex)) { in emmaprp_open()
804 ctx->m2m_ctx = v4l2_m2m_ctx_init(pcdev->m2m_dev, ctx, &queue_init); in emmaprp_open()
809 mutex_unlock(&pcdev->dev_mutex); in emmaprp_open()
814 clk_prepare_enable(pcdev->clk_emma_ipg); in emmaprp_open()
815 clk_prepare_enable(pcdev->clk_emma_ahb); in emmaprp_open()
818 mutex_unlock(&pcdev->dev_mutex); in emmaprp_open()
820 dprintk(pcdev, "Created instance %p, m2m_ctx: %p\n", ctx, ctx->m2m_ctx); in emmaprp_open()
827 struct emmaprp_dev *pcdev = video_drvdata(file); in emmaprp_release() local
830 dprintk(pcdev, "Releasing instance %p\n", ctx); in emmaprp_release()
832 mutex_lock(&pcdev->dev_mutex); in emmaprp_release()
833 clk_disable_unprepare(pcdev->clk_emma_ahb); in emmaprp_release()
834 clk_disable_unprepare(pcdev->clk_emma_ipg); in emmaprp_release()
836 mutex_unlock(&pcdev->dev_mutex); in emmaprp_release()
845 struct emmaprp_dev *pcdev = video_drvdata(file); in emmaprp_poll() local
849 mutex_lock(&pcdev->dev_mutex); in emmaprp_poll()
851 mutex_unlock(&pcdev->dev_mutex); in emmaprp_poll()
857 struct emmaprp_dev *pcdev = video_drvdata(file); in emmaprp_mmap() local
861 if (mutex_lock_interruptible(&pcdev->dev_mutex)) in emmaprp_mmap()
864 mutex_unlock(&pcdev->dev_mutex); in emmaprp_mmap()
895 struct emmaprp_dev *pcdev; in emmaprp_probe() local
900 pcdev = devm_kzalloc(&pdev->dev, sizeof(*pcdev), GFP_KERNEL); in emmaprp_probe()
901 if (!pcdev) in emmaprp_probe()
904 spin_lock_init(&pcdev->irqlock); in emmaprp_probe()
906 pcdev->clk_emma_ipg = devm_clk_get(&pdev->dev, "ipg"); in emmaprp_probe()
907 if (IS_ERR(pcdev->clk_emma_ipg)) { in emmaprp_probe()
908 return PTR_ERR(pcdev->clk_emma_ipg); in emmaprp_probe()
911 pcdev->clk_emma_ahb = devm_clk_get(&pdev->dev, "ahb"); in emmaprp_probe()
912 if (IS_ERR(pcdev->clk_emma_ahb)) in emmaprp_probe()
913 return PTR_ERR(pcdev->clk_emma_ahb); in emmaprp_probe()
916 pcdev->base_emma = devm_ioremap_resource(&pdev->dev, res); in emmaprp_probe()
917 if (IS_ERR(pcdev->base_emma)) in emmaprp_probe()
918 return PTR_ERR(pcdev->base_emma); in emmaprp_probe()
920 ret = v4l2_device_register(&pdev->dev, &pcdev->v4l2_dev); in emmaprp_probe()
924 mutex_init(&pcdev->dev_mutex); in emmaprp_probe()
928 v4l2_err(&pcdev->v4l2_dev, "Failed to allocate video device\n"); in emmaprp_probe()
934 vfd->lock = &pcdev->dev_mutex; in emmaprp_probe()
935 vfd->v4l2_dev = &pcdev->v4l2_dev; in emmaprp_probe()
937 video_set_drvdata(vfd, pcdev); in emmaprp_probe()
939 pcdev->vfd = vfd; in emmaprp_probe()
940 v4l2_info(&pcdev->v4l2_dev, EMMAPRP_MODULE_NAME in emmaprp_probe()
943 platform_set_drvdata(pdev, pcdev); in emmaprp_probe()
947 dev_name(&pdev->dev), pcdev); in emmaprp_probe()
951 pcdev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev); in emmaprp_probe()
952 if (IS_ERR(pcdev->alloc_ctx)) { in emmaprp_probe()
953 v4l2_err(&pcdev->v4l2_dev, "Failed to alloc vb2 context\n"); in emmaprp_probe()
954 ret = PTR_ERR(pcdev->alloc_ctx); in emmaprp_probe()
958 pcdev->m2m_dev = v4l2_m2m_init(&m2m_ops); in emmaprp_probe()
959 if (IS_ERR(pcdev->m2m_dev)) { in emmaprp_probe()
960 v4l2_err(&pcdev->v4l2_dev, "Failed to init mem2mem device\n"); in emmaprp_probe()
961 ret = PTR_ERR(pcdev->m2m_dev); in emmaprp_probe()
967 v4l2_err(&pcdev->v4l2_dev, "Failed to register video device\n"); in emmaprp_probe()
975 v4l2_m2m_release(pcdev->m2m_dev); in emmaprp_probe()
977 vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx); in emmaprp_probe()
981 v4l2_device_unregister(&pcdev->v4l2_dev); in emmaprp_probe()
983 mutex_destroy(&pcdev->dev_mutex); in emmaprp_probe()
990 struct emmaprp_dev *pcdev = platform_get_drvdata(pdev); in emmaprp_remove() local
992 v4l2_info(&pcdev->v4l2_dev, "Removing " EMMAPRP_MODULE_NAME); in emmaprp_remove()
994 video_unregister_device(pcdev->vfd); in emmaprp_remove()
995 v4l2_m2m_release(pcdev->m2m_dev); in emmaprp_remove()
996 vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx); in emmaprp_remove()
997 v4l2_device_unregister(&pcdev->v4l2_dev); in emmaprp_remove()
998 mutex_destroy(&pcdev->dev_mutex); in emmaprp_remove()