162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/arm/include/asm/map.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 1999-2000 Russell King 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Page table mapping constructs and function prototypes 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci#ifndef __ASM_MACH_MAP_H 1062306a36Sopenharmony_ci#define __ASM_MACH_MAP_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <asm/io.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistruct map_desc { 1562306a36Sopenharmony_ci unsigned long virtual; 1662306a36Sopenharmony_ci unsigned long pfn; 1762306a36Sopenharmony_ci unsigned long length; 1862306a36Sopenharmony_ci unsigned int type; 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci/* types 0-3 are defined in asm/io.h */ 2262306a36Sopenharmony_cienum { 2362306a36Sopenharmony_ci MT_UNCACHED = 4, 2462306a36Sopenharmony_ci MT_CACHECLEAN, 2562306a36Sopenharmony_ci MT_MINICLEAN, 2662306a36Sopenharmony_ci MT_LOW_VECTORS, 2762306a36Sopenharmony_ci MT_HIGH_VECTORS, 2862306a36Sopenharmony_ci MT_MEMORY_RWX, 2962306a36Sopenharmony_ci MT_MEMORY_RW, 3062306a36Sopenharmony_ci MT_MEMORY_RO, 3162306a36Sopenharmony_ci MT_ROM, 3262306a36Sopenharmony_ci MT_MEMORY_RWX_NONCACHED, 3362306a36Sopenharmony_ci MT_MEMORY_RW_DTCM, 3462306a36Sopenharmony_ci MT_MEMORY_RWX_ITCM, 3562306a36Sopenharmony_ci MT_MEMORY_RW_SO, 3662306a36Sopenharmony_ci MT_MEMORY_DMA_READY, 3762306a36Sopenharmony_ci}; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#ifdef CONFIG_MMU 4062306a36Sopenharmony_ciextern void iotable_init(struct map_desc *, int); 4162306a36Sopenharmony_ciextern void vm_reserve_area_early(unsigned long addr, unsigned long size, 4262306a36Sopenharmony_ci void *caller); 4362306a36Sopenharmony_ciextern void create_mapping_late(struct mm_struct *mm, struct map_desc *md, 4462306a36Sopenharmony_ci bool ng); 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#ifdef CONFIG_DEBUG_LL 4762306a36Sopenharmony_ciextern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr); 4862306a36Sopenharmony_ciextern void debug_ll_io_init(void); 4962306a36Sopenharmony_ci#else 5062306a36Sopenharmony_cistatic inline void debug_ll_io_init(void) {} 5162306a36Sopenharmony_ci#endif 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistruct mem_type; 5462306a36Sopenharmony_ciextern const struct mem_type *get_mem_type(unsigned int type); 5562306a36Sopenharmony_ci/* 5662306a36Sopenharmony_ci * external interface to remap single page with appropriate type 5762306a36Sopenharmony_ci */ 5862306a36Sopenharmony_ciextern int ioremap_page(unsigned long virt, unsigned long phys, 5962306a36Sopenharmony_ci const struct mem_type *mtype); 6062306a36Sopenharmony_ci#else 6162306a36Sopenharmony_ci#define iotable_init(map,num) do { } while (0) 6262306a36Sopenharmony_ci#define vm_reserve_area_early(a,s,c) do { } while (0) 6362306a36Sopenharmony_ci#endif 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#endif 66