Loading...
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
1/*
2 * arch/arm/include/asm/map.h
3 *
4 * Copyright (C) 1999-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * Page table mapping constructs and function prototypes
11 */
12#ifndef __ASM_MACH_MAP_H
13#define __ASM_MACH_MAP_H
14
15#include <asm/io.h>
16
17struct map_desc {
18 unsigned long virtual;
19 unsigned long pfn;
20 unsigned long length;
21 unsigned int type;
22};
23
24/* types 0-3 are defined in asm/io.h */
25enum {
26 MT_UNCACHED = 4,
27 MT_CACHECLEAN,
28 MT_MINICLEAN,
29 MT_LOW_VECTORS,
30 MT_HIGH_VECTORS,
31 MT_MEMORY_RWX,
32 MT_MEMORY_RW,
33 MT_ROM,
34 MT_MEMORY_RWX_NONCACHED,
35 MT_MEMORY_RW_DTCM,
36 MT_MEMORY_RWX_ITCM,
37 MT_MEMORY_RW_SO,
38 MT_MEMORY_DMA_READY,
39};
40
41#ifdef CONFIG_MMU
42extern void iotable_init(struct map_desc *, int);
43extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
44 void *caller);
45extern void create_mapping_late(struct mm_struct *mm, struct map_desc *md,
46 bool ng);
47
48#ifdef CONFIG_DEBUG_LL
49extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
50extern void debug_ll_io_init(void);
51#else
52static inline void debug_ll_io_init(void) {}
53#endif
54
55struct mem_type;
56extern const struct mem_type *get_mem_type(unsigned int type);
57/*
58 * external interface to remap single page with appropriate type
59 */
60extern int ioremap_page(unsigned long virt, unsigned long phys,
61 const struct mem_type *mtype);
62#else
63#define iotable_init(map,num) do { } while (0)
64#define vm_reserve_area_early(a,s,c) do { } while (0)
65#endif
66
67#endif