From 9370bb92b2d16684ee45cf24e879c93c509162da Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Thu, 19 Dec 2024 01:47:39 +0000 Subject: [PATCH] add wifi6 8852be driver --- kernel/drivers/video/rockchip/mpp/mpp_vdpp.c | 53 ++++++----------------------------------------------- 1 files changed, 6 insertions(+), 47 deletions(-) diff --git a/kernel/drivers/video/rockchip/mpp/mpp_vdpp.c b/kernel/drivers/video/rockchip/mpp/mpp_vdpp.c index 43a7cb0..c0dc382 100644 --- a/kernel/drivers/video/rockchip/mpp/mpp_vdpp.c +++ b/kernel/drivers/video/rockchip/mpp/mpp_vdpp.c @@ -18,8 +18,6 @@ #include <linux/uaccess.h> #include <linux/regmap.h> #include <linux/proc_fs.h> -#include <linux/mfd/syscon.h> -#include <linux/rockchip/cpu.h> #include <soc/rockchip/pm_domains.h> #include "mpp_debug.h" @@ -91,7 +89,6 @@ struct reset_control *rst_s; /* for zme */ void __iomem *zme_base; - struct regmap *grf; }; static struct vdpp_hw_info vdpp_v1_hw_info = { @@ -312,6 +309,7 @@ struct vdpp_dev *vdpp = to_vdpp_dev(mpp); struct vdpp_task *task = to_vdpp_task(mpp_task); struct vdpp_hw_info *hw_info = vdpp->hw_info; + u32 timing_en = mpp->srv->timing_en; mpp_debug_enter(); @@ -342,9 +340,13 @@ /* init current task */ mpp->cur_task = mpp_task; + + mpp_task_run_begin(mpp_task, timing_en, MPP_WORK_TIMEOUT_DELAY); /* Flush the register before the start the device */ wmb(); mpp_write(mpp, hw_info->start_base, task->reg[reg_en]); + + mpp_task_run_end(mpp_task, timing_en); mpp_debug_leave(); @@ -481,8 +483,6 @@ { int ret; struct vdpp_dev *vdpp = to_vdpp_dev(mpp); - - mpp->grf_info = &mpp->srv->grf_infos[MPP_DRIVER_VDPP]; /* Get clock info from dtsi */ ret = mpp_get_clk_info(mpp, &vdpp->aclk_info, "aclk"); @@ -645,7 +645,6 @@ /* ensure hardware is being off status */ mpp_write(mpp, hw_info->start_base, 0); - return 0; } @@ -704,6 +703,7 @@ match = of_match_node(mpp_vdpp_dt_match, pdev->dev.of_node); if (match) mpp->var = (struct mpp_dev_var *)match->data; + mpp->core_id = -1; } ret = mpp_dev_probe(mpp, pdev); @@ -772,53 +772,12 @@ dev_err(dev, "wait total running time out\n"); } -static int vdpp_runtime_suspend(struct device *dev) -{ - struct mpp_dev *mpp = dev_get_drvdata(dev); - struct mpp_grf_info *info = mpp->grf_info; - struct mpp_taskqueue *queue = mpp->queue; - - if (cpu_is_rk3528() && info && info->mem_offset) { - mutex_lock(&queue->ref_lock); - if (!atomic_dec_if_positive(&queue->runtime_cnt)) { - regmap_write(info->grf, info->mem_offset, - info->val_mem_off); - } - mutex_unlock(&queue->ref_lock); - } - - return 0; -} - -static int vdpp_runtime_resume(struct device *dev) -{ - struct mpp_dev *mpp = dev_get_drvdata(dev); - struct mpp_grf_info *info = mpp->grf_info; - struct mpp_taskqueue *queue = mpp->queue; - - if (cpu_is_rk3528() && info && info->mem_offset) { - mutex_lock(&queue->ref_lock); - regmap_write(info->grf, info->mem_offset, - info->val_mem_on); - atomic_inc(&queue->runtime_cnt); - mutex_unlock(&queue->ref_lock); - } - - return 0; -} - -static const struct dev_pm_ops vdpp_pm_ops = { - .runtime_suspend = vdpp_runtime_suspend, - .runtime_resume = vdpp_runtime_resume, -}; - struct platform_driver rockchip_vdpp_driver = { .probe = vdpp_probe, .remove = vdpp_remove, .shutdown = vdpp_shutdown, .driver = { .name = VDPP_DRIVER_NAME, - .pm = &vdpp_pm_ops, .of_match_table = of_match_ptr(mpp_vdpp_dt_match), }, }; -- Gitblit v1.6.2