Lines Matching refs:mpp
38 container_of(dev, struct vdpp_dev, mpp)
78 struct mpp_dev mpp; member
227 struct mpp_dev *mpp = session->mpp; in vdpp_alloc_task() local
228 struct vdpp_hw_info *hw_info = to_vdpp_info(mpp->var->hw_info); in vdpp_alloc_task()
244 mpp_task->hw_info = mpp->var->hw_info; in vdpp_alloc_task()
263 mpp_task_dump_mem_region(mpp, mpp_task); in vdpp_alloc_task()
264 mpp_task_dump_reg(mpp, mpp_task); in vdpp_alloc_task()
304 static int vdpp_run(struct mpp_dev *mpp, in vdpp_run() argument
309 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_run()
312 u32 timing_en = mpp->srv->timing_en; in vdpp_run()
334 mpp_write_req(mpp, task->reg, s, e, reg_en); in vdpp_run()
339 mpp_iommu_flush_tlb(mpp->iommu_info); in vdpp_run()
342 mpp->cur_task = mpp_task; in vdpp_run()
347 mpp_write(mpp, hw_info->start_base, task->reg[reg_en]); in vdpp_run()
356 static int vdpp_finish(struct mpp_dev *mpp, in vdpp_finish() argument
360 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_finish()
381 mpp_read_req(mpp, task->reg, s, e); in vdpp_finish()
391 static int vdpp_result(struct mpp_dev *mpp, in vdpp_result() argument
405 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_result()
442 static int vdpp_procfs_remove(struct mpp_dev *mpp) in vdpp_procfs_remove() argument
444 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_procfs_remove()
454 static int vdpp_procfs_init(struct mpp_dev *mpp) in vdpp_procfs_init() argument
456 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_procfs_init()
458 vdpp->procfs = proc_mkdir(mpp->dev->of_node->name, mpp->srv->procfs); in vdpp_procfs_init()
467 vdpp->procfs, &mpp->session_max_buffers); in vdpp_procfs_init()
471 static inline int vdpp_procfs_remove(struct mpp_dev *mpp) in vdpp_procfs_remove() argument
476 static inline int vdpp_procfs_init(struct mpp_dev *mpp) in vdpp_procfs_init() argument
482 static int vdpp_init(struct mpp_dev *mpp) in vdpp_init() argument
485 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_init()
488 ret = mpp_get_clk_info(mpp, &vdpp->aclk_info, "aclk"); in vdpp_init()
491 ret = mpp_get_clk_info(mpp, &vdpp->hclk_info, "hclk"); in vdpp_init()
494 ret = mpp_get_clk_info(mpp, &vdpp->sclk_info, "sclk"); in vdpp_init()
500 vdpp->rst_a = mpp_reset_control_get(mpp, RST_TYPE_A, "rst_a"); in vdpp_init()
503 vdpp->rst_h = mpp_reset_control_get(mpp, RST_TYPE_H, "rst_h"); in vdpp_init()
506 vdpp->rst_s = mpp_reset_control_get(mpp, RST_TYPE_CORE, "rst_s"); in vdpp_init()
513 static int vdpp_clk_on(struct mpp_dev *mpp) in vdpp_clk_on() argument
515 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_clk_on()
524 static int vdpp_clk_off(struct mpp_dev *mpp) in vdpp_clk_off() argument
526 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_clk_off()
535 static int vdpp_set_freq(struct mpp_dev *mpp, in vdpp_set_freq() argument
538 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_set_freq()
546 static int vdpp_reduce_freq(struct mpp_dev *mpp) in vdpp_reduce_freq() argument
548 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_reduce_freq()
555 static int vdpp_irq(struct mpp_dev *mpp) in vdpp_irq() argument
557 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_irq()
559 u32 work_mode = mpp_read(mpp, VDPP_REG_WORK_MODE); in vdpp_irq()
563 mpp->irq_status = mpp_read(mpp, hw_info->int_sta_base); in vdpp_irq()
564 if (!(mpp->irq_status & hw_info->int_mask)) in vdpp_irq()
566 mpp_write(mpp, hw_info->int_en_base, 0); in vdpp_irq()
567 mpp_write(mpp, hw_info->int_clr_base, mpp->irq_status); in vdpp_irq()
570 mpp_write(mpp, hw_info->start_base, 0); in vdpp_irq()
575 static int vdpp_isr(struct mpp_dev *mpp) in vdpp_isr() argument
578 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_isr()
579 struct mpp_task *mpp_task = mpp->cur_task; in vdpp_isr()
583 dev_err(mpp->dev, "no current task\n"); in vdpp_isr()
587 mpp->cur_task = NULL; in vdpp_isr()
589 task->irq_status = mpp->irq_status; in vdpp_isr()
594 atomic_inc(&mpp->reset_request); in vdpp_isr()
603 static int _vdpp_reset(struct mpp_dev *mpp, struct vdpp_dev *vdpp) in _vdpp_reset() argument
609 mpp_pmu_idle_request(mpp, true); in _vdpp_reset()
617 mpp_pmu_idle_request(mpp, false); in _vdpp_reset()
625 static int vdpp_reset(struct mpp_dev *mpp) in vdpp_reset() argument
629 struct vdpp_dev *vdpp = to_vdpp_dev(mpp); in vdpp_reset()
633 mpp_write(mpp, hw_info->cfg_base, hw_info->bit_rst_en); in vdpp_reset()
634 ret = readl_relaxed_poll_timeout(mpp->reg_base + hw_info->rst_sta_base, in vdpp_reset()
640 return _vdpp_reset(mpp, vdpp); in vdpp_reset()
643 mpp_write(mpp, hw_info->rst_sta_base, 0); in vdpp_reset()
646 mpp_write(mpp, hw_info->start_base, 0); in vdpp_reset()
690 struct mpp_dev *mpp = NULL; in vdpp_probe() local
701 mpp = &vdpp->mpp; in vdpp_probe()
705 mpp->var = (struct mpp_dev_var *)match->data; in vdpp_probe()
706 mpp->core_id = -1; in vdpp_probe()
709 ret = mpp_dev_probe(mpp, pdev); in vdpp_probe()
724 ret = devm_request_threaded_irq(dev, mpp->irq, in vdpp_probe()
728 dev_name(dev), mpp); in vdpp_probe()
734 mpp->session_max_buffers = VDPP_SESSION_MAX_BUFFERS; in vdpp_probe()
735 vdpp->hw_info = to_vdpp_info(mpp->var->hw_info); in vdpp_probe()
736 vdpp_procfs_init(mpp); in vdpp_probe()
738 mpp_dev_register_srv(mpp, mpp->srv); in vdpp_probe()
751 mpp_dev_remove(&vdpp->mpp); in vdpp_remove()
752 vdpp_procfs_remove(&vdpp->mpp); in vdpp_remove()
763 struct mpp_dev *mpp = &vdpp->mpp; in vdpp_shutdown() local
767 atomic_inc(&mpp->srv->shutdown_request); in vdpp_shutdown()
769 &mpp->task_count, in vdpp_shutdown()