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