xref: /openbmc/linux/arch/arm/include/asm/mach/map.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
24baa9922SRussell King /*
34baa9922SRussell King  *  arch/arm/include/asm/map.h
44baa9922SRussell King  *
54baa9922SRussell King  *  Copyright (C) 1999-2000 Russell King
64baa9922SRussell King  *
74baa9922SRussell King  *  Page table mapping constructs and function prototypes
84baa9922SRussell King  */
9c2794437SRob Herring #ifndef __ASM_MACH_MAP_H
10c2794437SRob Herring #define __ASM_MACH_MAP_H
11c2794437SRob Herring 
124baa9922SRussell King #include <asm/io.h>
134baa9922SRussell King 
144baa9922SRussell King struct map_desc {
154baa9922SRussell King 	unsigned long virtual;
164baa9922SRussell King 	unsigned long pfn;
174baa9922SRussell King 	unsigned long length;
184baa9922SRussell King 	unsigned int type;
194baa9922SRussell King };
204baa9922SRussell King 
21db5b7169SRussell King /* types 0-3 are defined in asm/io.h */
222e2c9de2SRussell King enum {
232e2c9de2SRussell King 	MT_UNCACHED = 4,
242e2c9de2SRussell King 	MT_CACHECLEAN,
252e2c9de2SRussell King 	MT_MINICLEAN,
262e2c9de2SRussell King 	MT_LOW_VECTORS,
272e2c9de2SRussell King 	MT_HIGH_VECTORS,
282e2c9de2SRussell King 	MT_MEMORY_RWX,
29ebd4922eSRussell King 	MT_MEMORY_RW,
30*598f0a99SZhen Lei 	MT_MEMORY_RO,
312e2c9de2SRussell King 	MT_ROM,
322e2c9de2SRussell King 	MT_MEMORY_RWX_NONCACHED,
332e2c9de2SRussell King 	MT_MEMORY_RW_DTCM,
342e2c9de2SRussell King 	MT_MEMORY_RWX_ITCM,
352e2c9de2SRussell King 	MT_MEMORY_RW_SO,
362e2c9de2SRussell King 	MT_MEMORY_DMA_READY,
372e2c9de2SRussell King };
384baa9922SRussell King 
394baa9922SRussell King #ifdef CONFIG_MMU
404baa9922SRussell King extern void iotable_init(struct map_desc *, int);
41c2794437SRob Herring extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
42c2794437SRob Herring 				  void *caller);
43c7936206SArd Biesheuvel extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
44c7936206SArd Biesheuvel 				bool ng);
4569d3a84aSHiroshi DOYU 
46e5c5f2adSRob Herring #ifdef CONFIG_DEBUG_LL
47e5c5f2adSRob Herring extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
48e5c5f2adSRob Herring extern void debug_ll_io_init(void);
49e5c5f2adSRob Herring #else
debug_ll_io_init(void)50e5c5f2adSRob Herring static inline void debug_ll_io_init(void) {}
51e5c5f2adSRob Herring #endif
52e5c5f2adSRob Herring 
5369d3a84aSHiroshi DOYU struct mem_type;
5469d3a84aSHiroshi DOYU extern const struct mem_type *get_mem_type(unsigned int type);
5569d3a84aSHiroshi DOYU /*
5669d3a84aSHiroshi DOYU  * external interface to remap single page with appropriate type
5769d3a84aSHiroshi DOYU  */
5869d3a84aSHiroshi DOYU extern int ioremap_page(unsigned long virt, unsigned long phys,
5969d3a84aSHiroshi DOYU 			const struct mem_type *mtype);
604baa9922SRussell King #else
614baa9922SRussell King #define iotable_init(map,num)	do { } while (0)
62c2794437SRob Herring #define vm_reserve_area_early(a,s,c)	do { } while (0)
63c2794437SRob Herring #endif
64c2794437SRob Herring 
654baa9922SRussell King #endif
66