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_iep2.c |   76 ++++----------------------------------
 1 files changed, 8 insertions(+), 68 deletions(-)

diff --git a/kernel/drivers/video/rockchip/mpp/mpp_iep2.c b/kernel/drivers/video/rockchip/mpp/mpp_iep2.c
index e8e2183..8d19269 100644
--- a/kernel/drivers/video/rockchip/mpp/mpp_iep2.c
+++ b/kernel/drivers/video/rockchip/mpp/mpp_iep2.c
@@ -20,8 +20,6 @@
 #include <linux/regmap.h>
 #include <linux/pm_runtime.h>
 #include <linux/proc_fs.h>
-#include <linux/mfd/syscon.h>
-#include <linux/rockchip/cpu.h>
 #include <soc/rockchip/pm_domains.h>
 
 #include "rockchip_iep2_regs.h"
@@ -268,8 +266,8 @@
 
 		mem_region = mpp_task_attach_fd(&task->mpp_task, usr_fd);
 		if (IS_ERR(mem_region)) {
-			mpp_debug(DEBUG_IOMMU, "reg[%3d]: %08x failed\n",
-				  iep2_addr_rnum[i], paddr[i]);
+			mpp_err("reg[%03d]: %08x failed\n",
+				iep2_addr_rnum[i], paddr[i]);
 			return PTR_ERR(mem_region);
 		}
 
@@ -979,7 +977,7 @@
 		return -ENOMEM;
 
 	mpp = &iep->mpp;
-	platform_set_drvdata(pdev, iep);
+	platform_set_drvdata(pdev, mpp);
 
 	if (pdev->dev.of_node) {
 		match = of_match_node(mpp_iep2_match, pdev->dev.of_node);
@@ -1015,82 +1013,24 @@
 static int iep2_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
-	struct iep2_dev *iep = platform_get_drvdata(pdev);
+	struct mpp_dev *mpp = dev_get_drvdata(dev);
+	struct iep2_dev *iep = to_iep2_dev(mpp);
 
 	dma_free_coherent(dev, iep->roi.size, iep->roi.vaddr, iep->roi.iova);
 
 	dev_info(dev, "remove device\n");
-	mpp_dev_remove(&iep->mpp);
-	iep2_procfs_remove(&iep->mpp);
+	mpp_dev_remove(mpp);
+	iep2_procfs_remove(mpp);
 
 	return 0;
 }
-
-static void iep2_shutdown(struct platform_device *pdev)
-{
-	int ret;
-	int val;
-	struct device *dev = &pdev->dev;
-	struct iep2_dev *iep = platform_get_drvdata(pdev);
-	struct mpp_dev *mpp = &iep->mpp;
-
-	dev_info(dev, "shutdown device\n");
-
-	atomic_inc(&mpp->srv->shutdown_request);
-	ret = readx_poll_timeout(atomic_read,
-				 &mpp->task_count,
-				 val, val == 0, 20000, 200000);
-	if (ret == -ETIMEDOUT)
-		dev_err(dev, "wait total running time out\n");
-}
-
-static int iep2_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 iep2_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 iep2_pm_ops = {
-	.runtime_suspend		= iep2_runtime_suspend,
-	.runtime_resume			= iep2_runtime_resume,
-};
 
 struct platform_driver rockchip_iep2_driver = {
 	.probe = iep2_probe,
 	.remove = iep2_remove,
-	.shutdown = iep2_shutdown,
+	.shutdown = mpp_dev_shutdown,
 	.driver = {
 		.name = IEP2_DRIVER_NAME,
-		.pm = &iep2_pm_ops,
 		.of_match_table = of_match_ptr(mpp_iep2_match),
 	},
 };

--
Gitblit v1.6.2