mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	The implementation of dma_map_single() and dma_unmap_single() is exactly the same for all the architectures that support them. Factor them out to <linux/dma-mapping.h>, and make all drivers to include <linux/dma-mapping.h> instead of <asm/dma-mapping.h>. If we need to differentiate them for some architectures, we can move the generic definitions to <asm-generic/dma-mapping.h>. Add some comments to the helpers. The concept is quite similar to the DMA-API of Linux kernel. Drivers are agnostic about what is going on behind the scene. Just call dma_map_single() before the DMA, and dma_unmap_single() after it. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
		
			
				
	
	
		
			31 lines
		
	
	
		
			652 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			652 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright (c) 2018 Western Digital Corporation or its affiliates.
 | |
|  *
 | |
|  * Authors:
 | |
|  *   Anup Patel <anup.patel@wdc.com>
 | |
|  */
 | |
| 
 | |
| #ifndef __ASM_RISCV_DMA_MAPPING_H
 | |
| #define __ASM_RISCV_DMA_MAPPING_H
 | |
| 
 | |
| #include <common.h>
 | |
| #include <linux/types.h>
 | |
| #include <asm/cache.h>
 | |
| #include <cpu_func.h>
 | |
| #include <linux/dma-direction.h>
 | |
| #include <malloc.h>
 | |
| 
 | |
| static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
 | |
| {
 | |
| 	*handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
 | |
| 	return (void *)*handle;
 | |
| }
 | |
| 
 | |
| static inline void dma_free_coherent(void *addr)
 | |
| {
 | |
| 	free(addr);
 | |
| }
 | |
| 
 | |
| #endif /* __ASM_RISCV_DMA_MAPPING_H */
 |