Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  arch/arm/include/asm/map.h
0004  *
0005  *  Copyright (C) 1999-2000 Russell King
0006  *
0007  *  Page table mapping constructs and function prototypes
0008  */
0009 #ifndef __ASM_MACH_MAP_H
0010 #define __ASM_MACH_MAP_H
0011 
0012 #include <asm/io.h>
0013 
0014 struct map_desc {
0015     unsigned long virtual;
0016     unsigned long pfn;
0017     unsigned long length;
0018     unsigned int type;
0019 };
0020 
0021 /* types 0-3 are defined in asm/io.h */
0022 enum {
0023     MT_UNCACHED = 4,
0024     MT_CACHECLEAN,
0025     MT_MINICLEAN,
0026     MT_LOW_VECTORS,
0027     MT_HIGH_VECTORS,
0028     MT_MEMORY_RWX,
0029     MT_MEMORY_RW,
0030     MT_MEMORY_RO,
0031     MT_ROM,
0032     MT_MEMORY_RWX_NONCACHED,
0033     MT_MEMORY_RW_DTCM,
0034     MT_MEMORY_RWX_ITCM,
0035     MT_MEMORY_RW_SO,
0036     MT_MEMORY_DMA_READY,
0037 };
0038 
0039 #ifdef CONFIG_MMU
0040 extern void iotable_init(struct map_desc *, int);
0041 extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
0042                   void *caller);
0043 extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
0044                 bool ng);
0045 
0046 #ifdef CONFIG_DEBUG_LL
0047 extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
0048 extern void debug_ll_io_init(void);
0049 #else
0050 static inline void debug_ll_io_init(void) {}
0051 #endif
0052 
0053 struct mem_type;
0054 extern const struct mem_type *get_mem_type(unsigned int type);
0055 /*
0056  * external interface to remap single page with appropriate type
0057  */
0058 extern int ioremap_page(unsigned long virt, unsigned long phys,
0059             const struct mem_type *mtype);
0060 #else
0061 #define iotable_init(map,num)   do { } while (0)
0062 #define vm_reserve_area_early(a,s,c)    do { } while (0)
0063 #endif
0064 
0065 #endif