Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/mach-omap1/io.c
26292 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
* linux/arch/arm/mach-omap1/io.c
4
*
5
* OMAP1 I/O mapping code
6
*/
7
8
#include <linux/module.h>
9
#include <linux/kernel.h>
10
#include <linux/init.h>
11
#include <linux/io.h>
12
#include <linux/omap-dma.h>
13
14
#include <asm/tlb.h>
15
#include <asm/mach/map.h>
16
17
#include "tc.h"
18
#include "iomap.h"
19
#include "common.h"
20
21
/*
22
* The machine specific code may provide the extra mapping besides the
23
* default mapping provided here.
24
*/
25
static struct map_desc omap1_io_desc[] __initdata = {
26
{
27
.virtual = OMAP1_IO_VIRT,
28
.pfn = __phys_to_pfn(OMAP1_IO_PHYS),
29
.length = OMAP1_IO_SIZE,
30
.type = MT_DEVICE
31
}, {
32
.virtual = OMAP1_DSP_BASE,
33
.pfn = __phys_to_pfn(OMAP1_DSP_START),
34
.length = OMAP1_DSP_SIZE,
35
.type = MT_DEVICE
36
}, {
37
.virtual = OMAP1_DSPREG_BASE,
38
.pfn = __phys_to_pfn(OMAP1_DSPREG_START),
39
.length = OMAP1_DSPREG_SIZE,
40
.type = MT_DEVICE
41
}
42
};
43
44
/*
45
* Maps common IO regions for omap1
46
*/
47
void __init omap1_map_io(void)
48
{
49
iotable_init(omap1_io_desc, ARRAY_SIZE(omap1_io_desc));
50
}
51
52
/*
53
* Common low-level hardware init for omap1.
54
*/
55
void __init omap1_init_early(void)
56
{
57
omap_check_revision();
58
59
/* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
60
* on a Posted Write in the TIPB Bridge".
61
*/
62
omap_writew(0x0, MPU_PUBLIC_TIPB_CNTL);
63
omap_writew(0x0, MPU_PRIVATE_TIPB_CNTL);
64
}
65
66
void __init omap1_init_late(void)
67
{
68
omap_serial_wakeup_init();
69
}
70
71
/*
72
* NOTE: Please use ioremap + __raw_read/write where possible instead of these
73
*/
74
75
u8 omap_readb(u32 pa)
76
{
77
return __raw_readb(OMAP1_IO_ADDRESS(pa));
78
}
79
EXPORT_SYMBOL(omap_readb);
80
81
u16 omap_readw(u32 pa)
82
{
83
return __raw_readw(OMAP1_IO_ADDRESS(pa));
84
}
85
EXPORT_SYMBOL(omap_readw);
86
87
u32 omap_readl(u32 pa)
88
{
89
return __raw_readl(OMAP1_IO_ADDRESS(pa));
90
}
91
EXPORT_SYMBOL(omap_readl);
92
93
void omap_writeb(u8 v, u32 pa)
94
{
95
__raw_writeb(v, OMAP1_IO_ADDRESS(pa));
96
}
97
EXPORT_SYMBOL(omap_writeb);
98
99
void omap_writew(u16 v, u32 pa)
100
{
101
__raw_writew(v, OMAP1_IO_ADDRESS(pa));
102
}
103
EXPORT_SYMBOL(omap_writew);
104
105
void omap_writel(u32 v, u32 pa)
106
{
107
__raw_writel(v, OMAP1_IO_ADDRESS(pa));
108
}
109
EXPORT_SYMBOL(omap_writel);
110
111