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