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_iommu.h |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/kernel/drivers/video/rockchip/mpp/mpp_iommu.h b/kernel/drivers/video/rockchip/mpp/mpp_iommu.h
index 9ae1b6b..87d1b5c 100644
--- a/kernel/drivers/video/rockchip/mpp/mpp_iommu.h
+++ b/kernel/drivers/video/rockchip/mpp/mpp_iommu.h
@@ -13,6 +13,7 @@
 
 #include <linux/iommu.h>
 #include <linux/dma-mapping.h>
+#include <linux/interrupt.h>
 
 struct mpp_dma_buffer {
 	/* link to dma session buffer list */
@@ -64,6 +65,8 @@
 	u32 is_paged;
 };
 
+struct mpp_dev;
+
 struct mpp_iommu_info {
 	struct rw_semaphore rw_sem;
 
@@ -73,6 +76,13 @@
 	struct iommu_group *group;
 	struct mpp_rk_iommu *iommu;
 	iommu_fault_handler_t hdl;
+
+	spinlock_t dev_lock;
+	struct mpp_dev *dev_active;
+
+	u32 av1d_iommu;
+	int irq;
+	int got_irq;
 };
 
 struct mpp_dma_session *
@@ -94,6 +104,9 @@
 			 struct mpp_dma_buffer *buffer);
 int mpp_dma_map_kernel(struct mpp_dma_session *dma,
 		       struct mpp_dma_buffer *buffer);
+struct mpp_dma_buffer *mpp_dma_find_buffer_fd(struct mpp_dma_session *dma, int fd);
+void mpp_dma_buf_sync(struct mpp_dma_buffer *buffer, u32 offset, u32 length,
+		      enum dma_data_direction dir, bool for_cpu);
 
 struct mpp_iommu_info *
 mpp_iommu_probe(struct device *dev);
@@ -104,6 +117,11 @@
 
 int mpp_iommu_refresh(struct mpp_iommu_info *info, struct device *dev);
 int mpp_iommu_flush_tlb(struct mpp_iommu_info *info);
+int mpp_av1_iommu_disable(struct device *dev);
+int mpp_av1_iommu_enable(struct device *dev);
+
+int mpp_iommu_dev_activate(struct mpp_iommu_info *info, struct mpp_dev *dev);
+int mpp_iommu_dev_deactivate(struct mpp_iommu_info *info, struct mpp_dev *dev);
 
 static inline int mpp_iommu_down_read(struct mpp_iommu_info *info)
 {
@@ -137,4 +155,16 @@
 	return 0;
 }
 
+static inline void mpp_iommu_enable_irq(struct mpp_iommu_info *info)
+{
+	if (info && info->got_irq)
+		enable_irq(info->irq);
+}
+
+static inline void mpp_iommu_disable_irq(struct mpp_iommu_info *info)
+{
+	if (info && info->got_irq)
+		disable_irq(info->irq);
+}
+
 #endif

--
Gitblit v1.6.2