Lines Matching refs:mpp

86 		container_of(dev, struct vdpu_dev, mpp)
105 struct mpp_dev mpp; member
306 struct mpp_dev *mpp = session->mpp; in vdpu_alloc_task() local
316 mpp_task->hw_info = mpp->var->hw_info; in vdpu_alloc_task()
336 mpp_task_dump_mem_region(mpp, mpp_task); in vdpu_alloc_task()
337 mpp_task_dump_reg(mpp, mpp_task); in vdpu_alloc_task()
343 static int vdpu_run(struct mpp_dev *mpp, in vdpu_run() argument
349 u32 timing_en = mpp->srv->timing_en; in vdpu_run()
354 mpp_write_relaxed(mpp, VDPU2_REG_CLR_CACHE_BASE, 1); in vdpu_run()
362 mpp_write_req(mpp, task->reg, s, e, reg_en); in vdpu_run()
366 mpp_iommu_flush_tlb(mpp->iommu_info); in vdpu_run()
369 mpp->cur_task = mpp_task; in vdpu_run()
375 mpp_write(mpp, VDPU2_REG_DEC_EN, in vdpu_run()
385 static int vdpu_px30_run(struct mpp_dev *mpp, in vdpu_px30_run() argument
388 mpp_iommu_flush_tlb(mpp->iommu_info); in vdpu_px30_run()
389 return vdpu_run(mpp, mpp_task); in vdpu_px30_run()
392 static int vdpu_finish(struct mpp_dev *mpp, in vdpu_finish() argument
409 mpp_read_req(mpp, task->reg, s, e); in vdpu_finish()
414 dec_get = mpp_read_relaxed(mpp, VDPU2_REG_STREAM_RLC_BASE); in vdpu_finish()
425 static int vdpu_result(struct mpp_dev *mpp, in vdpu_result() argument
460 static int vdpu_procfs_remove(struct mpp_dev *mpp) in vdpu_procfs_remove() argument
462 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_procfs_remove()
472 static int vdpu_procfs_init(struct mpp_dev *mpp) in vdpu_procfs_init() argument
474 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_procfs_init()
476 dec->procfs = proc_mkdir(mpp->dev->of_node->name, mpp->srv->procfs); in vdpu_procfs_init()
484 mpp_procfs_create_common(dec->procfs, mpp); in vdpu_procfs_init()
489 dec->procfs, &mpp->session_max_buffers); in vdpu_procfs_init()
494 static inline int vdpu_procfs_remove(struct mpp_dev *mpp) in vdpu_procfs_remove() argument
499 static inline int vdpu_procfs_init(struct mpp_dev *mpp) in vdpu_procfs_init() argument
505 static int vdpu_init(struct mpp_dev *mpp) in vdpu_init() argument
508 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_init()
510 mpp->grf_info = &mpp->srv->grf_infos[MPP_DRIVER_VDPU2]; in vdpu_init()
513 ret = mpp_get_clk_info(mpp, &dec->aclk_info, "aclk_vcodec"); in vdpu_init()
516 ret = mpp_get_clk_info(mpp, &dec->hclk_info, "hclk_vcodec"); in vdpu_init()
523 dec->rst_a = mpp_reset_control_get(mpp, RST_TYPE_A, "video_a"); in vdpu_init()
526 dec->rst_h = mpp_reset_control_get(mpp, RST_TYPE_H, "video_h"); in vdpu_init()
533 static int vdpu_px30_init(struct mpp_dev *mpp) in vdpu_px30_init() argument
535 vdpu_init(mpp); in vdpu_px30_init()
536 return px30_workaround_combo_init(mpp); in vdpu_px30_init()
539 static int vdpu_clk_on(struct mpp_dev *mpp) in vdpu_clk_on() argument
541 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_clk_on()
549 static int vdpu_clk_off(struct mpp_dev *mpp) in vdpu_clk_off() argument
551 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_clk_off()
559 static int vdpu_set_freq(struct mpp_dev *mpp, in vdpu_set_freq() argument
562 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_set_freq()
570 static int vdpu_reduce_freq(struct mpp_dev *mpp) in vdpu_reduce_freq() argument
572 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_reduce_freq()
579 static int vdpu_irq(struct mpp_dev *mpp) in vdpu_irq() argument
581 mpp->irq_status = mpp_read(mpp, VDPU2_REG_DEC_INT); in vdpu_irq()
582 if (!(mpp->irq_status & VDPU2_DEC_INT_RAW)) in vdpu_irq()
585 mpp_write(mpp, VDPU2_REG_DEC_INT, 0); in vdpu_irq()
587 mpp_write(mpp, VDPU2_REG_DEC_EN, VDPU2_DEC_CLOCK_GATE_EN); in vdpu_irq()
592 static int vdpu_isr(struct mpp_dev *mpp) in vdpu_isr() argument
596 struct mpp_task *mpp_task = mpp->cur_task; in vdpu_isr()
600 dev_err(mpp->dev, "no current task\n"); in vdpu_isr()
604 mpp->cur_task = NULL; in vdpu_isr()
606 task->irq_status = mpp->irq_status; in vdpu_isr()
617 atomic_inc(&mpp->reset_request); in vdpu_isr()
626 static int vdpu_soft_reset(struct mpp_dev *mpp) in vdpu_soft_reset() argument
631 mpp_write(mpp, VDPU2_REG_SOFT_RESET, 1); in vdpu_soft_reset()
632 ret = readl_relaxed_poll_timeout(mpp->reg_base + VDPU2_REG_SOFT_RESET, in vdpu_soft_reset()
637 static int vdpu_reset(struct mpp_dev *mpp) in vdpu_reset() argument
639 struct vdpu_dev *dec = to_vdpu_dev(mpp); in vdpu_reset()
642 mpp_write(mpp, VDPU2_REG_DEC_EN, 0); in vdpu_reset()
643 mpp_write(mpp, VDPU2_REG_DEC_INT, 0); in vdpu_reset()
646 ret = vdpu_soft_reset(mpp); in vdpu_reset()
651 mpp_pmu_idle_request(mpp, true); in vdpu_reset()
657 mpp_pmu_idle_request(mpp, false); in vdpu_reset()
738 struct mpp_dev *mpp = NULL; in vdpu_probe() local
745 mpp = &dec->mpp; in vdpu_probe()
746 platform_set_drvdata(pdev, mpp); in vdpu_probe()
752 mpp->var = (struct mpp_dev_var *)match->data; in vdpu_probe()
754 mpp->core_id = of_alias_get_id(pdev->dev.of_node, "vdpu"); in vdpu_probe()
757 ret = mpp_dev_probe(mpp, pdev); in vdpu_probe()
763 ret = devm_request_threaded_irq(dev, mpp->irq, in vdpu_probe()
767 dev_name(dev), mpp); in vdpu_probe()
773 if (mpp->var->device_type == MPP_DEVICE_VDPU2) { in vdpu_probe()
774 mpp->srv->sub_devices[MPP_DEVICE_VDPU2_PP] = mpp; in vdpu_probe()
775 set_bit(MPP_DEVICE_VDPU2_PP, &mpp->srv->hw_support); in vdpu_probe()
778 mpp->session_max_buffers = VDPU2_SESSION_MAX_BUFFERS; in vdpu_probe()
779 vdpu_procfs_init(mpp); in vdpu_probe()
781 mpp_dev_register_srv(mpp, mpp->srv); in vdpu_probe()
790 struct mpp_dev *mpp = dev_get_drvdata(dev); in vdpu_remove() local
793 mpp_dev_remove(mpp); in vdpu_remove()
794 vdpu_procfs_remove(mpp); in vdpu_remove()