map.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * arch/arm/include/asm/map.h
  3. *
  4. * Copyright (C) 1999-2000 Russell King
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. *
  10. * Page table mapping constructs and function prototypes
  11. */
  12. #ifndef __ASM_MACH_MAP_H
  13. #define __ASM_MACH_MAP_H
  14. #include <asm/io.h>
  15. struct map_desc {
  16. unsigned long virtual;
  17. unsigned long pfn;
  18. unsigned long length;
  19. unsigned int type;
  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. #ifdef CONFIG_MMU
  38. extern void iotable_init(struct map_desc *, int);
  39. extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
  40. void *caller);
  41. extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
  42. bool ng);
  43. #ifdef CONFIG_DEBUG_LL
  44. extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
  45. extern void debug_ll_io_init(void);
  46. #else
  47. static inline void debug_ll_io_init(void) {}
  48. #endif
  49. struct mem_type;
  50. extern const struct mem_type *get_mem_type(unsigned int type);
  51. /*
  52. * external interface to remap single page with appropriate type
  53. */
  54. extern int ioremap_page(unsigned long virt, unsigned long phys,
  55. const struct mem_type *mtype);
  56. #else
  57. #define iotable_init(map,num) do { } while (0)
  58. #define vm_reserve_area_early(a,s,c) do { } while (0)
  59. #endif
  60. #endif