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
debug_ll_io_init(void)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