diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2023-02-23 16:07:24 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2023-02-23 16:07:24 +0100 |
commit | 9a23c5d387a3a79995d2b946055e81054d16791f (patch) | |
tree | f6d18793547dc8dca4753b66deb806954314f2ce /arch/mips | |
parent | c4237bc715c68e871b5aef84fa0d76e770b20dbf (diff) | |
parent | 9214b7a79b13a3e4884db70cc0d82095875c89ea (diff) | |
download | barebox-9a23c5d387a3a79995d2b946055e81054d16791f.tar.gz |
Merge branch 'for-next/mips'
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/include/asm/dma-mapping.h | 40 | ||||
-rw-r--r-- | arch/mips/include/asm/dma.h | 43 | ||||
-rw-r--r-- | arch/mips/lib/dma-default.c | 8 |
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) |