0001
0002
0003
0004
0005
0006
0007
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
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
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