summaryrefslogtreecommitdiff
path: root/arch/mips
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2023-02-23 16:07:24 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2023-02-23 16:07:24 +0100
commit9a23c5d387a3a79995d2b946055e81054d16791f (patch)
treef6d18793547dc8dca4753b66deb806954314f2ce /arch/mips
parentc4237bc715c68e871b5aef84fa0d76e770b20dbf (diff)
parent9214b7a79b13a3e4884db70cc0d82095875c89ea (diff)
downloadbarebox-9a23c5d387a3a79995d2b946055e81054d16791f.tar.gz
Merge branch 'for-next/mips'
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/include/asm/dma-mapping.h40
-rw-r--r--arch/mips/include/asm/dma.h43
-rw-r--r--arch/mips/lib/dma-default.c8
3 files changed, 42 insertions, 49 deletions
diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h
deleted file mode 100644
index 8e6ea08168..0000000000
--- a/arch/mips/include/asm/dma-mapping.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef _ASM_DMA_MAPPING_H
-#define _ASM_DMA_MAPPING_H
-
-#include <common.h>
-#include <xfuncs.h>
-#include <asm/addrspace.h>
-#include <asm/types.h>
-#include <malloc.h>
-#include <asm/io.h>
-
-#define dma_alloc_coherent dma_alloc_coherent
-static inline void *dma_alloc_coherent(size_t size, dma_addr_t *dma_handle)
-{
- void *ret;
-
- ret = xmemalign(PAGE_SIZE, size);
-
- memset(ret, 0, size);
-
- if (dma_handle)
- *dma_handle = CPHYSADDR(ret);
-
- dma_flush_range((unsigned long)ret, (unsigned long)(ret + size));
-
- return (void *)CKSEG1ADDR(ret);
-}
-
-#define dma_free_coherent dma_free_coherent
-static inline void dma_free_coherent(void *vaddr, dma_addr_t dma_handle,
- size_t size)
-{
- if (IS_ENABLED(CONFIG_MMU))
- free((void *)CKSEG0ADDR(vaddr));
- else
- free(vaddr);
-}
-
-#endif /* _ASM_DMA_MAPPING_H */
diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h
index e0b4689172..62d9c7c548 100644
--- a/arch/mips/include/asm/dma.h
+++ b/arch/mips/include/asm/dma.h
@@ -6,6 +6,47 @@
#ifndef __ASM_DMA_H
#define __ASM_DMA_H
-#include "asm/dma-mapping.h"
+#include <common.h>
+#include <malloc.h>
+#include <xfuncs.h>
+#include <asm/addrspace.h>
+#include <asm/cpu-info.h>
+#include <asm/io.h>
+#include <asm/types.h>
+
+#define dma_alloc dma_alloc
+static inline void *dma_alloc(size_t size)
+{
+ unsigned long max_linesz = max(current_cpu_data.dcache.linesz,
+ current_cpu_data.scache.linesz);
+ return xmemalign(max_linesz, ALIGN(size, max_linesz));
+}
+
+#define dma_alloc_coherent dma_alloc_coherent
+static inline void *dma_alloc_coherent(size_t size, dma_addr_t *dma_handle)
+{
+ void *ret;
+
+ ret = xmemalign(PAGE_SIZE, size);
+
+ memset(ret, 0, size);
+
+ if (dma_handle)
+ *dma_handle = CPHYSADDR(ret);
+
+ dma_flush_range((unsigned long)ret, (unsigned long)(ret + size));
+
+ return (void *)CKSEG1ADDR(ret);
+}
+
+#define dma_free_coherent dma_free_coherent
+static inline void dma_free_coherent(void *vaddr, dma_addr_t dma_handle,
+ size_t size)
+{
+ if (IS_ENABLED(CONFIG_MMU) && vaddr)
+ free((void *)CKSEG0ADDR(vaddr));
+ else
+ free(vaddr);
+}
#endif /* __ASM_DMA_H */
diff --git a/arch/mips/lib/dma-default.c b/arch/mips/lib/dma-default.c
index fbe627c24c..48176e5d28 100644
--- a/arch/mips/lib/dma-default.c
+++ b/arch/mips/lib/dma-default.c
@@ -6,8 +6,6 @@
#include <dma.h>
#include <asm/io.h>
-#if defined(CONFIG_CPU_MIPS32) || \
- defined(CONFIG_CPU_MIPS64)
static inline void __dma_sync_mips(unsigned long addr, size_t size,
enum dma_data_direction direction)
{
@@ -28,12 +26,6 @@ static inline void __dma_sync_mips(unsigned long addr, size_t size,
BUG();
}
}
-#else
-static inline void __dma_sync_mips(void *addr, size_t size,
- enum dma_data_direction direction)
-{
-}
-#endif
void dma_sync_single_for_cpu(dma_addr_t address, size_t size,
enum dma_data_direction dir)