Lines Matching refs:mpp
83 container_of(dev, struct vepu_dev, mpp)
118 struct mpp_dev mpp; member
274 struct mpp_dev *mpp = session->mpp; in vepu_alloc_task() local
284 mpp_task->hw_info = mpp->var->hw_info; in vepu_alloc_task()
308 mpp_task_dump_mem_region(mpp, mpp_task); in vepu_alloc_task()
309 mpp_task_dump_reg(mpp, mpp_task); in vepu_alloc_task()
315 static void *vepu_prepare(struct mpp_dev *mpp, struct mpp_task *mpp_task) in vepu_prepare() argument
317 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_prepare()
329 struct mpp_dev *mpp = ccu->cores[i]; in vepu_prepare() local
331 if (mpp && mpp->disable) in vepu_prepare()
332 clear_bit(mpp->core_id, &core_idle); in vepu_prepare()
344 mpp_task->mpp = ccu->cores[core_id]; in vepu_prepare()
356 static int vepu_run(struct mpp_dev *mpp, in vepu_run() argument
362 u32 timing_en = mpp->srv->timing_en; in vepu_run()
367 mpp_write_relaxed(mpp, VEPU2_REG_CLR_CACHE_BASE, 1); in vepu_run()
371 mpp_write_relaxed(mpp, VEPU2_REG_ENC_EN, in vepu_run()
379 mpp_write_req(mpp, task->reg, s, e, reg_en); in vepu_run()
383 mpp_iommu_flush_tlb(mpp->iommu_info); in vepu_run()
386 mpp->cur_task = mpp_task; in vepu_run()
392 mpp_write(mpp, VEPU2_REG_ENC_EN, in vepu_run()
402 static int vepu_px30_run(struct mpp_dev *mpp, in vepu_px30_run() argument
405 mpp_iommu_flush_tlb(mpp->iommu_info); in vepu_px30_run()
406 return vepu_run(mpp, mpp_task); in vepu_px30_run()
409 static int vepu_irq(struct mpp_dev *mpp) in vepu_irq() argument
411 mpp->irq_status = mpp_read(mpp, VEPU2_REG_INT); in vepu_irq()
412 if (!(mpp->irq_status & VEPU2_INT_RAW)) in vepu_irq()
415 mpp_write(mpp, VEPU2_REG_INT, 0); in vepu_irq()
420 static int vepu_isr(struct mpp_dev *mpp) in vepu_isr() argument
424 struct mpp_task *mpp_task = mpp->cur_task; in vepu_isr()
426 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_isr()
431 dev_err(mpp->dev, "no current task\n"); in vepu_isr()
435 mpp->cur_task = NULL; in vepu_isr()
437 task->irq_status = mpp->irq_status; in vepu_isr()
446 atomic_inc(&mpp->reset_request); in vepu_isr()
452 set_bit(mpp->core_id, &ccu->core_idle); in vepu_isr()
454 mpp_dbg_core("core %d isr idle %lx -> %lx\n", mpp->core_id, core_idle, in vepu_isr()
463 static int vepu_finish(struct mpp_dev *mpp, in vepu_finish() argument
478 mpp_read_req(mpp, task->reg, s, e); in vepu_finish()
493 static int vepu_result(struct mpp_dev *mpp, in vepu_result() argument
599 static int vepu_procfs_remove(struct mpp_dev *mpp) in vepu_procfs_remove() argument
601 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_procfs_remove()
658 struct mpp_dev *mpp = seq->private; in vepu_show_session_info() local
660 mutex_lock(&mpp->srv->session_lock); in vepu_show_session_info()
662 &mpp->srv->session_list, in vepu_show_session_info()
669 if (mpp->dev_ops->dump_session) in vepu_show_session_info()
670 mpp->dev_ops->dump_session(session, seq); in vepu_show_session_info()
672 mutex_unlock(&mpp->srv->session_lock); in vepu_show_session_info()
677 static int vepu_procfs_init(struct mpp_dev *mpp) in vepu_procfs_init() argument
679 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_procfs_init()
682 if (!mpp->dev || !mpp->dev->of_node || !mpp->dev->of_node->name || in vepu_procfs_init()
683 !mpp->srv || !mpp->srv->procfs) in vepu_procfs_init()
687 mpp->dev->of_node->name, mpp->core_id); in vepu_procfs_init()
690 mpp->dev->of_node->name); in vepu_procfs_init()
692 enc->procfs = proc_mkdir(name, mpp->srv->procfs); in vepu_procfs_init()
700 mpp_procfs_create_common(enc->procfs, mpp); in vepu_procfs_init()
705 enc->procfs, &mpp->session_max_buffers); in vepu_procfs_init()
708 enc->procfs, vepu_show_session_info, mpp); in vepu_procfs_init()
713 static int vepu_procfs_ccu_init(struct mpp_dev *mpp) in vepu_procfs_ccu_init() argument
715 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_procfs_ccu_init()
724 static inline int vepu_procfs_remove(struct mpp_dev *mpp) in vepu_procfs_remove() argument
729 static inline int vepu_procfs_init(struct mpp_dev *mpp) in vepu_procfs_init() argument
734 static inline int vepu_procfs_ccu_init(struct mpp_dev *mpp) in vepu_procfs_ccu_init() argument
745 static int vepu_init(struct mpp_dev *mpp) in vepu_init() argument
748 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_init()
750 mpp->grf_info = &mpp->srv->grf_infos[MPP_DRIVER_VEPU2]; in vepu_init()
753 ret = mpp_get_clk_info(mpp, &enc->aclk_info, "aclk_vcodec"); in vepu_init()
756 ret = mpp_get_clk_info(mpp, &enc->hclk_info, "hclk_vcodec"); in vepu_init()
760 of_property_read_u32(mpp->dev->of_node, in vepu_init()
766 enc->rst_a = mpp_reset_control_get(mpp, RST_TYPE_A, "video_a"); in vepu_init()
769 enc->rst_h = mpp_reset_control_get(mpp, RST_TYPE_H, "video_h"); in vepu_init()
776 static int vepu_px30_init(struct mpp_dev *mpp) in vepu_px30_init() argument
778 vepu_init(mpp); in vepu_px30_init()
779 return px30_workaround_combo_init(mpp); in vepu_px30_init()
782 static int vepu_clk_on(struct mpp_dev *mpp) in vepu_clk_on() argument
784 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_clk_on()
792 static int vepu_clk_off(struct mpp_dev *mpp) in vepu_clk_off() argument
794 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_clk_off()
802 static int vepu_get_freq(struct mpp_dev *mpp, in vepu_get_freq() argument
808 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_get_freq()
818 mutex_lock(&mpp->queue->pending_lock); in vepu_get_freq()
820 &mpp->queue->pending_list, in vepu_get_freq()
827 mutex_unlock(&mpp->queue->pending_lock); in vepu_get_freq()
838 static int vepu_set_freq(struct mpp_dev *mpp, in vepu_set_freq() argument
841 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_set_freq()
849 static int vepu_reduce_freq(struct mpp_dev *mpp) in vepu_reduce_freq() argument
851 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_reduce_freq()
858 static int vepu_reset(struct mpp_dev *mpp) in vepu_reset() argument
860 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_reset()
863 mpp_write(mpp, VEPU2_REG_ENC_EN, 0); in vepu_reset()
867 mpp_pmu_idle_request(mpp, true); in vepu_reset()
873 mpp_pmu_idle_request(mpp, false); in vepu_reset()
875 mpp_write(mpp, VEPU2_REG_INT, VEPU2_INT_CLEAR); in vepu_reset()
878 set_bit(mpp->core_id, &ccu->core_idle); in vepu_reset()
879 mpp_dbg_core("core %d reset idle %lx\n", mpp->core_id, ccu->core_idle); in vepu_reset()
1032 ccu->cores[enc->mpp.core_id] = &enc->mpp; in vepu_attach_ccu()
1033 set_bit(enc->mpp.core_id, &ccu->core_idle); in vepu_attach_ccu()
1042 ccu->main_core = &enc->mpp; in vepu_attach_ccu()
1048 cur_info = enc->mpp.iommu_info; in vepu_attach_ccu()
1064 struct mpp_dev *mpp = NULL; in vepu_core_probe() local
1072 mpp = &enc->mpp; in vepu_core_probe()
1073 platform_set_drvdata(pdev, mpp); in vepu_core_probe()
1078 mpp->var = (struct mpp_dev_var *)match->data; in vepu_core_probe()
1080 mpp->core_id = of_alias_get_id(pdev->dev.of_node, "jpege"); in vepu_core_probe()
1083 ret = mpp_dev_probe(mpp, pdev); in vepu_core_probe()
1093 ret = devm_request_threaded_irq(dev, mpp->irq, in vepu_core_probe()
1097 dev_name(dev), mpp); in vepu_core_probe()
1103 mpp->session_max_buffers = VEPU2_SESSION_MAX_BUFFERS; in vepu_core_probe()
1104 vepu_procfs_init(mpp); in vepu_core_probe()
1105 vepu_procfs_ccu_init(mpp); in vepu_core_probe()
1107 if (mpp == enc->ccu->main_core) in vepu_core_probe()
1108 mpp_dev_register_srv(mpp, mpp->srv); in vepu_core_probe()
1117 struct mpp_dev *mpp = NULL; in vepu_probe_default() local
1125 mpp = &enc->mpp; in vepu_probe_default()
1126 platform_set_drvdata(pdev, mpp); in vepu_probe_default()
1131 mpp->var = (struct mpp_dev_var *)match->data; in vepu_probe_default()
1133 mpp->core_id = of_alias_get_id(pdev->dev.of_node, "vepu"); in vepu_probe_default()
1136 ret = mpp_dev_probe(mpp, pdev); in vepu_probe_default()
1142 ret = devm_request_threaded_irq(dev, mpp->irq, in vepu_probe_default()
1146 dev_name(dev), mpp); in vepu_probe_default()
1152 mpp->session_max_buffers = VEPU2_SESSION_MAX_BUFFERS; in vepu_probe_default()
1153 vepu_procfs_init(mpp); in vepu_probe_default()
1155 mpp_dev_register_srv(mpp, mpp->srv); in vepu_probe_default()
1188 struct mpp_dev *mpp = dev_get_drvdata(dev); in vepu_remove() local
1189 struct vepu_dev *enc = to_vepu_dev(mpp); in vepu_remove()
1193 s32 core_id = mpp->core_id; in vepu_remove()
1203 mpp_dev_remove(&enc->mpp); in vepu_remove()
1204 vepu_procfs_remove(&enc->mpp); in vepu_remove()
1206 struct mpp_dev *mpp = dev_get_drvdata(dev); in vepu_remove() local
1209 mpp_dev_remove(mpp); in vepu_remove()
1210 vepu_procfs_remove(mpp); in vepu_remove()