1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * arch/arm/include/asm/map.h 4 * 5 * Copyright (C) 1999-2000 Russell King 6 * 7 * Page table mapping constructs and function prototypes 8 */ 9 #ifndef __ASM_MACH_MAP_H 10 #define __ASM_MACH_MAP_H 11 12 #include <asm/io.h> 13 14 struct map_desc { 15 unsigned long virtual; 16 unsigned long pfn; 17 unsigned long length; 18 unsigned int type; 19 }; 20 21 /* types 0-3 are defined in asm/io.h */ 22 enum { 23 MT_UNCACHED = 4, 24 MT_CACHECLEAN, 25 MT_MINICLEAN, 26 MT_LOW_VECTORS, 27 MT_HIGH_VECTORS, 28 MT_MEMORY_RWX, 29 MT_MEMORY_RW, 30 MT_ROM, 31 MT_MEMORY_RWX_NONCACHED, 32 MT_MEMORY_RW_DTCM, 33 MT_MEMORY_RWX_ITCM, 34 MT_MEMORY_RW_SO, 35 MT_MEMORY_DMA_READY, 36 }; 37 38 #ifdef CONFIG_MMU 39 extern void iotable_init(struct map_desc *, int); 40 extern void vm_reserve_area_early(unsigned long addr, unsigned long size, 41 void *caller); 42 extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md, 43 bool ng); 44 45 #ifdef CONFIG_DEBUG_LL 46 extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr); 47 extern void debug_ll_io_init(void); 48 #else 49 static inline void debug_ll_io_init(void) {} 50 #endif 51 52 struct mem_type; 53 extern const struct mem_type *get_mem_type(unsigned int type); 54 /* 55 * external interface to remap single page with appropriate type 56 */ 57 extern int ioremap_page(unsigned long virt, unsigned long phys, 58 const struct mem_type *mtype); 59 #else 60 #define iotable_init(map,num) do { } while (0) 61 #define vm_reserve_area_early(a,s,c) do { } while (0) 62 #endif 63 64 #endif 65