blob: 92282558caf7cdbb36b27037e0de39bbb6a5744c [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002/*
Russell King4baa9922008-08-02 10:55:55 +01003 * arch/arm/include/asm/map.h
Linus Torvalds1da177e2005-04-16 15:20:36 -07004 *
5 * Copyright (C) 1999-2000 Russell King
6 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 * Page table mapping constructs and function prototypes
8 */
Rob Herringc2794432012-02-29 18:10:58 -06009#ifndef __ASM_MACH_MAP_H
10#define __ASM_MACH_MAP_H
11
Russell King3603ab22007-05-05 20:59:27 +010012#include <asm/io.h>
13
Linus Torvalds1da177e2005-04-16 15:20:36 -070014struct map_desc {
15 unsigned long virtual;
Deepak Saxena9769c242005-10-28 15:19:11 +010016 unsigned long pfn;
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 unsigned long length;
18 unsigned int type;
19};
20
Russell Kingdb5b7162008-09-07 12:42:51 +010021/* types 0-3 are defined in asm/io.h */
Russell King2e2c9de2013-10-24 10:26:40 +010022enum {
23 MT_UNCACHED = 4,
24 MT_CACHECLEAN,
25 MT_MINICLEAN,
26 MT_LOW_VECTORS,
27 MT_HIGH_VECTORS,
28 MT_MEMORY_RWX,
Russell Kingebd49222013-10-24 08:12:39 +010029 MT_MEMORY_RW,
Russell King2e2c9de2013-10-24 10:26:40 +010030 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};
Russell King0af92be2007-05-05 20:28:16 +010037
Russell King092c1952006-06-24 17:34:50 +010038#ifdef CONFIG_MMU
Linus Torvalds1da177e2005-04-16 15:20:36 -070039extern void iotable_init(struct map_desc *, int);
Rob Herringc2794432012-02-29 18:10:58 -060040extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
41 void *caller);
Ard Biesheuvelc7936202015-04-29 10:04:17 +020042extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
43 bool ng);
Hiroshi DOYU69d3a842009-01-28 21:32:08 +020044
Rob Herringe5c5f2a2012-10-22 11:42:54 -060045#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
Hiroshi DOYU69d3a842009-01-28 21:32:08 +020052struct 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);
Russell King092c1952006-06-24 17:34:50 +010059#else
60#define iotable_init(map,num) do { } while (0)
Rob Herringc2794432012-02-29 18:10:58 -060061#define vm_reserve_area_early(a,s,c) do { } while (0)
62#endif
63
Russell King092c1952006-06-24 17:34:50 +010064#endif