wlan-ap-Telecominfraproject/feeds/qca-wifi-7/ipq53xx/patches-6.1/0372-arm64-dma_mapping-Export-64bit-cache-functions.patch
John Crispin 68cf54d9f7 qca-wifi-7: update to ath12.5.5
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-27 12:45:52 +01:00

65 lines
2.6 KiB
Diff

From 415a2d6ec06fdc8c73b997f7586628c11f99b209 Mon Sep 17 00:00:00 2001
From: Tushar Ganatra <quic_tganatra@quicinc.com>
Date: Mon, 29 May 2023 17:10:49 +0530
Subject: [PATCH] arm64: dma_mapping: Export 64bit cache functions
Export dmac_ functions. Export dmac_* instead of __dma_*
so that the same API can be used for both 32 and 64 bit builds.
Change-Id: Ib84134b02ec5522089b7ee7bfbe7056c5e0fb2fd
Signed-off-by: Selin Dag <sdag@codeaurora.org>
Signed-off-by: Ratheesh Kannoth <rkannoth@codeaurora.org>
Signed-off-by: Tushar Ganatra <quic_tganatra@quicinc.com>
Signed-off-by: KARTHIK KUMAR T <quic_kartt@quicinc.com>
---
arch/arm64/include/asm/cacheflush.h | 2 ++
arch/arm64/mm/flush.c | 12 ++++++++++++
2 files changed, 14 insertions(+)
diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h
index d977e77f0758..1051595444ad 100644
--- a/arch/arm64/include/asm/cacheflush.h
+++ b/arch/arm64/include/asm/cacheflush.h
@@ -79,7 +79,9 @@ extern void dcache_clean_pou(unsigned long start, unsigned long end);
extern long caches_clean_inval_user_pou(unsigned long start, unsigned long end);
extern void sync_icache_aliases(unsigned long start, unsigned long end);
+extern void dmac_flush_range(const void *start, const void *end);
extern void dmac_inv_range(const void *start, const void *end);
+extern void dmac_clean_range(const void *start, const void *end);
extern void __dma_flush_area_no_dsb(const void *start, size_t size);
extern void __dma_inv_area_no_dsb(const void *start, size_t size);
extern void __dma_clean_area_no_dsb(const void *start, size_t size);
diff --git a/arch/arm64/mm/flush.c b/arch/arm64/mm/flush.c
index 23d5298b077f..fc4662466e74 100644
--- a/arch/arm64/mm/flush.c
+++ b/arch/arm64/mm/flush.c
@@ -108,6 +108,12 @@ void arch_invalidate_pmem(void *addr, size_t size)
EXPORT_SYMBOL_GPL(arch_invalidate_pmem);
#endif
+void dmac_flush_range(const void *start, const void *end)
+{
+ dcache_clean_inval_poc((unsigned long)start, (unsigned long)end);
+}
+EXPORT_SYMBOL(dmac_flush_range);
+
void dmac_flush_range_no_dsb(const void *start, const void *end)
{
__dma_flush_area_no_dsb(start, (void *)(end) - (void *)(start));
@@ -126,6 +132,12 @@ void dmac_inv_range_no_dsb(const void *start, const void *end)
}
EXPORT_SYMBOL(dmac_inv_range_no_dsb);
+void dmac_clean_range(const void *start, const void *end)
+{
+ dcache_clean_poc((unsigned long)start, (unsigned long)end);
+}
+EXPORT_SYMBOL(dmac_clean_range);
+
void dmac_clean_range_no_dsb(const void *start, const void *end)
{
__dma_clean_area_no_dsb(start, (void *)(end) - (void *)(start));
--
2.34.1