initial commit, pull in sys/arch/armv7/omap
[bbb-pru.git] / omap4.c
CommitLineData
cf3c20ae 1/* $OpenBSD: omap4.c,v 1.3 2013/11/06 19:03:07 syl Exp $ */
2
3/*
4 * Copyright (c) 2011 Uwe Stuehler <uwe@openbsd.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19#include <sys/param.h>
20#include <sys/systm.h>
21#include <sys/device.h>
22
23#include <machine/bus.h>
24
25#include <armv7/armv7/armv7var.h>
26
27#define OMAPID_ADDR 0x4a002000
28#define OMAPID_SIZE 0x1000
29
30#define WD_ADDR 0x4a314000
31#define WD_SIZE 0x80
32
33#define GPIOx_SIZE 0x1000
34#define GPIO1_ADDR 0x4a310000
35#define GPIO2_ADDR 0x48055000
36#define GPIO3_ADDR 0x48057000
37#define GPIO4_ADDR 0x48059000
38#define GPIO5_ADDR 0x4805b000
39#define GPIO6_ADDR 0x4805d000
40
41#define GPIO1_IRQ 29
42#define GPIO2_IRQ 30
43#define GPIO3_IRQ 31
44#define GPIO4_IRQ 32
45#define GPIO5_IRQ 33
46#define GPIO6_IRQ 34
47
48#define UARTx_SIZE 0x400
49#define UART1_ADDR 0x4806A000
50#define UART2_ADDR 0x4806C000
51#define UART3_ADDR 0x48020000
52#define UART4_ADDR 0x4806E000
53
54#define UART1_IRQ 72
55#define UART2_IRQ 73
56#define UART3_IRQ 74
57#define UART4_IRQ 70
58
59#define HSMMCx_SIZE 0x200
60#define HSMMC1_ADDR 0x4809c100
61#define HSMMC1_IRQ 83
62
63#define PRM_ADDR 0x4a306000
64#define PRM_SIZE 0x2000
65#define CM1_ADDR 0x4a004000
66#define CM1_SIZE 0x1000
67#define CM2_ADDR 0x4a008000
68#define CM2_SIZE 0x2000
69#define SCRM_ADDR 0x4a30a000
70#define SCRM_SIZE 0x1000
71#define PCNF1_ADDR 0x4a100000
72#define PCNF1_SIZE 0x1000
73#define PCNF2_ADDR 0x4a31e000
74#define PCNF2_SIZE 0x1000
75
76#define HSUSBHOST_ADDR 0x4a064000
77#define HSUSBHOST_SIZE 0x800
78#define USBEHCI_ADDR 0x4a064c00
79#define USBEHCI_SIZE 0x400
80#define USBOHCI_ADDR 0x4a064800
81#define USBOHCI_SIZE 0x400
82#define USBEHCI_IRQ 77
83
84struct armv7_dev omap4_devs[] = {
85
86 /*
87 * Power, Reset and Clock Manager
88 */
89
90 { .name = "prcm",
91 .unit = 0,
92 .mem = {
93 { PRM_ADDR, PRM_SIZE },
94 { CM1_ADDR, CM1_SIZE },
95 { CM2_ADDR, CM2_SIZE },
96 },
97 },
98
99 /*
100 * OMAP identification registers/fuses
101 */
102
103 { .name = "omapid",
104 .unit = 0,
105 .mem = { { OMAPID_ADDR, OMAPID_SIZE } },
106 },
107
108 /*
109 * GPIO
110 */
111
112 { .name = "omgpio",
113 .unit = 0,
114 .mem = { { GPIO1_ADDR, GPIOx_SIZE } },
115 .irq = { GPIO1_IRQ }
116 },
117
118 { .name = "omgpio",
119 .unit = 1,
120 .mem = { { GPIO2_ADDR, GPIOx_SIZE } },
121 .irq = { GPIO2_IRQ }
122 },
123
124 { .name = "omgpio",
125 .unit = 2,
126 .mem = { { GPIO3_ADDR, GPIOx_SIZE } },
127 .irq = { GPIO3_IRQ }
128 },
129
130 { .name = "omgpio",
131 .unit = 3,
132 .mem = { { GPIO4_ADDR, GPIOx_SIZE } },
133 .irq = { GPIO4_IRQ }
134 },
135
136 { .name = "omgpio",
137 .unit = 4,
138 .mem = { { GPIO5_ADDR, GPIOx_SIZE } },
139 .irq = { GPIO5_IRQ }
140 },
141
142 { .name = "omgpio",
143 .unit = 5,
144 .mem = { { GPIO6_ADDR, GPIOx_SIZE } },
145 .irq = { GPIO6_IRQ }
146 },
147
148 /*
149 * Watchdog Timer
150 */
151
152 { .name = "omdog",
153 .unit = 0,
154 .mem = { { WD_ADDR, WD_SIZE } }
155 },
156
157 /*
158 * UART
159 */
160
161 { .name = "com",
162 .unit = 2,
163 .mem = { { UART3_ADDR, UARTx_SIZE } },
164 .irq = { UART3_IRQ }
165 },
166
167 /*
168 * MMC
169 */
170
171 { .name = "ommmc",
172 .unit = 0,
173 .mem = { { HSMMC1_ADDR, HSMMCx_SIZE } },
174 .irq = { HSMMC1_IRQ }
175 },
176
177 /*
178 * USB
179 */
180
181 { .name = "ehci",
182 .unit = 0,
183 .mem = {
184 { USBEHCI_ADDR, USBEHCI_SIZE },
185 { HSUSBHOST_ADDR, HSUSBHOST_SIZE },
186 },
187 .irq = { USBEHCI_IRQ }
188 },
189
190 /* Terminator */
191 { .name = NULL,
192 .unit = 0,
193 }
194};
195
196void
197omap4_init(void)
198{
199 armv7_set_devs(omap4_devs);
200}