linux/arch/arm/include/asm/mach/map.h
<<
>>
Prefs
   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
  14struct 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 */
  22enum {
  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
  39extern void iotable_init(struct map_desc *, int);
  40extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
  41                                  void *caller);
  42extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
  43                                bool ng);
  44
  45#ifdef CONFIG_DEBUG_LL
  46extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
  47extern void debug_ll_io_init(void);
  48#else
  49static inline void debug_ll_io_init(void) {}
  50#endif
  51
  52struct mem_type;
  53extern const struct mem_type *get_mem_type(unsigned int type);
  54/*
  55 * external interface to remap single page with appropriate type
  56 */
  57extern 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