18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/include/asm/map.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 1999-2000 Russell King 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Page table mapping constructs and function prototypes 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci#ifndef __ASM_MACH_MAP_H 108c2ecf20Sopenharmony_ci#define __ASM_MACH_MAP_H 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include <asm/io.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct map_desc { 158c2ecf20Sopenharmony_ci unsigned long virtual; 168c2ecf20Sopenharmony_ci unsigned long pfn; 178c2ecf20Sopenharmony_ci unsigned long length; 188c2ecf20Sopenharmony_ci unsigned int type; 198c2ecf20Sopenharmony_ci}; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* types 0-3 are defined in asm/io.h */ 228c2ecf20Sopenharmony_cienum { 238c2ecf20Sopenharmony_ci MT_UNCACHED = 4, 248c2ecf20Sopenharmony_ci MT_CACHECLEAN, 258c2ecf20Sopenharmony_ci MT_MINICLEAN, 268c2ecf20Sopenharmony_ci MT_LOW_VECTORS, 278c2ecf20Sopenharmony_ci MT_HIGH_VECTORS, 288c2ecf20Sopenharmony_ci MT_MEMORY_RWX, 298c2ecf20Sopenharmony_ci MT_MEMORY_RW, 308c2ecf20Sopenharmony_ci MT_MEMORY_RO, 318c2ecf20Sopenharmony_ci MT_ROM, 328c2ecf20Sopenharmony_ci MT_MEMORY_RWX_NONCACHED, 338c2ecf20Sopenharmony_ci MT_MEMORY_RW_DTCM, 348c2ecf20Sopenharmony_ci MT_MEMORY_RWX_ITCM, 358c2ecf20Sopenharmony_ci MT_MEMORY_RW_SO, 368c2ecf20Sopenharmony_ci MT_MEMORY_DMA_READY, 378c2ecf20Sopenharmony_ci}; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci#ifdef CONFIG_MMU 408c2ecf20Sopenharmony_ciextern void iotable_init(struct map_desc *, int); 418c2ecf20Sopenharmony_ciextern void vm_reserve_area_early(unsigned long addr, unsigned long size, 428c2ecf20Sopenharmony_ci void *caller); 438c2ecf20Sopenharmony_ciextern void create_mapping_late(struct mm_struct *mm, struct map_desc *md, 448c2ecf20Sopenharmony_ci bool ng); 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#ifdef CONFIG_DEBUG_LL 478c2ecf20Sopenharmony_ciextern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr); 488c2ecf20Sopenharmony_ciextern void debug_ll_io_init(void); 498c2ecf20Sopenharmony_ci#else 508c2ecf20Sopenharmony_cistatic inline void debug_ll_io_init(void) {} 518c2ecf20Sopenharmony_ci#endif 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_cistruct mem_type; 548c2ecf20Sopenharmony_ciextern const struct mem_type *get_mem_type(unsigned int type); 558c2ecf20Sopenharmony_ci/* 568c2ecf20Sopenharmony_ci * external interface to remap single page with appropriate type 578c2ecf20Sopenharmony_ci */ 588c2ecf20Sopenharmony_ciextern int ioremap_page(unsigned long virt, unsigned long phys, 598c2ecf20Sopenharmony_ci const struct mem_type *mtype); 608c2ecf20Sopenharmony_ci#else 618c2ecf20Sopenharmony_ci#define iotable_init(map,num) do { } while (0) 628c2ecf20Sopenharmony_ci#define vm_reserve_area_early(a,s,c) do { } while (0) 638c2ecf20Sopenharmony_ci#endif 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci#endif 66