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/hack/mpp_hack_px30.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c b/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
index 379049e..07912bc 100644
--- a/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
+++ b/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
@@ -19,6 +19,7 @@
 #include "../mpp_common.h"
 #include "../mpp_iommu.h"
 #include "mpp_hack_px30.h"
+#include <soc/rockchip/rockchip_iommu.h>
 
 #define RK_MMU_DTE_ADDR			0x00 /* Directory table address */
 #define RK_MMU_STATUS			0x04
@@ -177,7 +178,17 @@
 		iommu->grf_val = mpp->grf_info->val & MPP_GRF_VAL_MASK;
 		if (mpp->hw_ops->clk_on)
 			mpp->hw_ops->clk_on(mpp);
-		iommu->dte_addr =  mpp_iommu_get_dte_addr(iommu);
+		/*
+		 * ensure that iommu is enable, so that read valid dte value
+		 */
+		if (rockchip_iommu_is_enabled(mpp->dev))
+			iommu->dte_addr = mpp_iommu_get_dte_addr(iommu);
+		else {
+			rockchip_iommu_enable(mpp->dev);
+			iommu->dte_addr = mpp_iommu_get_dte_addr(iommu);
+			rockchip_iommu_disable(mpp->dev);
+		}
+		dev_err(mpp->dev, "%s dte_addr %08x\n", __func__, iommu->dte_addr);
 		if (mpp->hw_ops->clk_off)
 			mpp->hw_ops->clk_off(mpp);
 		INIT_LIST_HEAD(&iommu->link);

--
Gitblit v1.6.2