summaryrefslogtreecommitdiff
path: root/include/soc/sprd/iomap.h
blob: 7b72a87194903a44fee57794db2ab87e5235f62e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
#ifndef __SCI_IOMAP_H__
#define __SCI_IOMAP_H__

#ifndef __ASSEMBLER__

struct iomap_sprd {
	unsigned long vaddr;
	unsigned long paddr;
	unsigned long length;
};

extern struct iotable_sprd io_addr_sprd;
struct iotable_sprd {
	struct iomap_sprd AHB;
#define SPRD_AHB_PHYS		io_addr_sprd.AHB.paddr
#define SPRD_AHB_BASE		io_addr_sprd.AHB.vaddr
#define SPRD_AHB_SIZE		io_addr_sprd.AHB.length

/*	struct iomap_sprd HWLOCK0;
#define SPRD_HWLOCK0_PHYS	io_addr_sprd.HWLOCK0.paddr
#define SPRD_HWLOCK0_BASE	io_addr_sprd.HWLOCK0.vaddr
#define SPRD_HWLOCK0_SIZE	io_addr_sprd.HWLOCK0.length
*/
	struct iomap_sprd PUB;
#define SPRD_PUB_PHYS		io_addr_sprd.PUB.paddr
#define SPRD_PUB_BASE		io_addr_sprd.PUB.vaddr
#define SPRD_PUB_SIZE		io_addr_sprd.PUB.length

	struct iomap_sprd AONAPB;
#define SPRD_AONAPB_PHYS	io_addr_sprd.AONAPB.paddr
#define SPRD_AONAPB_BASE	io_addr_sprd.AONAPB.vaddr
#define SPRD_AONAPB_SIZE	io_addr_sprd.AONAPB.length

	struct iomap_sprd PMU;
#define SPRD_PMU_PHYS		io_addr_sprd.PMU.paddr
#define SPRD_PMU_BASE		io_addr_sprd.PMU.vaddr
#define SPRD_PMU_SIZE		io_addr_sprd.PMU.length

	struct iomap_sprd MMAHB;
#define SPRD_MMAHB_PHYS		io_addr_sprd.MMAHB.paddr
#define SPRD_MMAHB_BASE		io_addr_sprd.MMAHB.vaddr
#define SPRD_MMAHB_SIZE		io_addr_sprd.MMAHB.length

	struct iomap_sprd MMCKG;
#define SPRD_MMCKG_PHYS		io_addr_sprd.MMCKG.paddr
#define SPRD_MMCKG_BASE		io_addr_sprd.MMCKG.vaddr
#define SPRD_MMCKG_SIZE		io_addr_sprd.MMCKG.length

#if defined(CONFIG_MACH_SP9830I) || defined(CONFIG_ARCH_SCX30G2) || defined(CONFIG_ARCH_SCX35LT8)
	struct iomap_sprd CODECAHB;
#define SPRD_CODECAHB_PHYS	io_addr_sprd.CODECAHB.paddr
#define SPRD_CODECAHB_BASE	io_addr_sprd.CODECAHB.vaddr
#define SPRD_CODECAHB_SIZE      io_addr_sprd.CODECAHB.length
#endif

	struct iomap_sprd APBREG;
#define SPRD_APBREG_PHYS	io_addr_sprd.APBREG.paddr
#define SPRD_APBREG_BASE	io_addr_sprd.APBREG.vaddr
#define SPRD_APBREG_SIZE	io_addr_sprd.APBREG.length

	struct iomap_sprd GPUAPB;
#define SPRD_GPUAPB_PHYS	io_addr_sprd.GPUAPB.paddr
#define SPRD_GPUAPB_BASE	io_addr_sprd.GPUAPB.vaddr
#define SPRD_GPUAPB_SIZE	io_addr_sprd.GPUAPB.length

	struct iomap_sprd APBCKG;
#define SPRD_APBCKG_PHYS	io_addr_sprd.APBCKG.paddr
#define SPRD_APBCKG_BASE	io_addr_sprd.APBCKG.vaddr
#define SPRD_APBCKG_SIZE	io_addr_sprd.APBCKG.length

/* seems not good to keep */
	struct iomap_sprd DMA0;
#define SPRD_DMA0_PHYS		io_addr_sprd.DMA0.paddr
#define SPRD_DMA0_BASE		io_addr_sprd.DMA0.vaddr
#define SPRD_DMA0_SIZE		io_addr_sprd.DMA0.length

	struct iomap_sprd WDG;
#define SPRD_WDG_PHYS	(io_addr_sprd.WDG.paddr)
#define SPRD_WDG_BASE	(io_addr_sprd.WDG.vaddr)
#define SPRD_WDG_SIZE	(io_addr_sprd.WDG.length)

	struct iomap_sprd HWSPINLOCK0;
#define SPRD_HWSPINLOCK0_PHYS	io_addr_sprd.HWSPINLOCK0.paddr
#define SPRD_HWSPINLOCK0_BASE	io_addr_sprd.HWSPINLOCK0.vaddr
#define SPRD_HWSPINLOCK0_SIZE	io_addr_sprd.HWSPINLOCK0.length

	struct iomap_sprd HWSPINLOCK1;
#define SPRD_HWSPINLOCK1_PHYS	io_addr_sprd.HWSPINLOCK1.paddr
#define SPRD_HWSPINLOCK1_BASE	io_addr_sprd.HWSPINLOCK1.vaddr
#define SPRD_HWSPINLOCK1_SIZE	io_addr_sprd.HWSPINLOCK1.length

/************** 64BIT private map **************/
#ifdef CONFIG_64BIT
	struct iomap_sprd APCKG;
#define SPRD_APCKG_PHYS	io_addr_sprd.APCKG.paddr
#define SPRD_APCKG_BASE	io_addr_sprd.APCKG.vaddr
#define SPRD_APCKG_SIZE	io_addr_sprd.APCKG.length

	struct iomap_sprd AONDMA;
#define SPRD_AONDMA_PHYS	io_addr_sprd.AONDMA.paddr
#define SPRD_AONDMA_BASE	io_addr_sprd.AONDMA.vaddr
#define SPRD_AONDMA_SIZE	io_addr_sprd.AONDMA.length

	struct iomap_sprd PWM;
#define SPRD_PWM_PHYS	io_addr_sprd.PWM.paddr
#define SPRD_PWM_BASE	io_addr_sprd.PWM.vaddr
#define SPRD_PWM_SIZE	io_addr_sprd.PWM.length

		struct iomap_sprd ISP;
#define SPRD_ISP_PHYS		io_addr_sprd.ISP.paddr
#define SPRD_ISP_BASE		io_addr_sprd.ISP.vaddr
#define SPRD_ISP_SIZE		io_addr_sprd.ISP.length
	
		struct iomap_sprd CSI2;
#define SPRD_CSI2_PHYS		io_addr_sprd.CSI2.paddr
#define SPRD_CSI2_BASE		io_addr_sprd.CSI2.vaddr
#define SPRD_CSI2_SIZE		io_addr_sprd.CSI2.length

		struct iomap_sprd DCAM;
#define SPRD_DCAM_PHYS		io_addr_sprd.DCAM.paddr
#define SPRD_DCAM_BASE		io_addr_sprd.DCAM.vaddr
#define SPRD_DCAM_SIZE		io_addr_sprd.DCAM.length

		struct iomap_sprd PIN;
#define SPRD_PIN_PHYS		io_addr_sprd.PIN.paddr
#define SPRD_PIN_BASE		io_addr_sprd.PIN.vaddr
#define SPRD_PIN_SIZE		io_addr_sprd.PIN.length
	
		struct iomap_sprd GPIO;
#define SPRD_GPIO_PHYS		io_addr_sprd.GPIO.paddr
#define SPRD_GPIO_BASE		io_addr_sprd.GPIO.vaddr
#define SPRD_GPIO_SIZE		io_addr_sprd.GPIO.length

		struct iomap_sprd INTC2;
#define SPRD_INTC2_PHYS		io_addr_sprd.INTC2.paddr
#define SPRD_INTC2_BASE		io_addr_sprd.INTC2.vaddr
#define SPRD_INTC2_SIZE		io_addr_sprd.INTC2.length

		struct iomap_sprd SYSCNT;
#define SPRD_SYSCNT_PHYS        io_addr_sprd.SYSCNT.paddr
#define SPRD_SYSCNT_BASE        io_addr_sprd.SYSCNT.vaddr
#define SPRD_SYSCNT_SIZE        io_addr_sprd.SYSCNT.length

		struct iomap_sprd AONCKG;
#define SPRD_AONCKG_PHYS        io_addr_sprd.AONCKG.paddr
#define SPRD_AONCKG_BASE        io_addr_sprd.AONCKG.vaddr
#define SPRD_AONCKG_SIZE        io_addr_sprd.AONCKG.length

		struct iomap_sprd CORE;
#define SPRD_CORE_PHYS          io_addr_sprd.CORE.paddr
#define SPRD_CORE_BASE          io_addr_sprd.CORE.vaddr
#define SPRD_CORE_SIZE          io_addr_sprd.CORE.length

		struct iomap_sprd GPUCKG;
#define SPRD_GPUCKG_PHYS        io_addr_sprd.GPUCKG.paddr
#define SPRD_GPUCKG_BASE        io_addr_sprd.GPUCKG.vaddr
#define SPRD_GPUCKG_SIZE        io_addr_sprd.GPUCKG.length

		struct iomap_sprd INT;
#define SPRD_INT_PHYS           io_addr_sprd.INT.paddr
#define SPRD_INT_BASE           io_addr_sprd.INT.vaddr
#define SPRD_INT_SIZE           io_addr_sprd.INT.length

		struct iomap_sprd INTC0;
#define SPRD_INTC0_PHYS         io_addr_sprd.INTC0.paddr
#define SPRD_INTC0_BASE         io_addr_sprd.INTC0.vaddr
#define SPRD_INTC0_SIZE         io_addr_sprd.INTC0.length

		struct iomap_sprd INTC1;
#define SPRD_INTC1_PHYS         io_addr_sprd.INTC1.paddr
#define SPRD_INTC1_BASE         io_addr_sprd.INTC1.vaddr
#define SPRD_INTC1_SIZE         io_addr_sprd.INTC1.length

		struct iomap_sprd INTC3;
#define SPRD_INTC3_PHYS         io_addr_sprd.INTC3.paddr
#define SPRD_INTC3_BASE         io_addr_sprd.INTC3.vaddr
#define SPRD_INTC3_SIZE         io_addr_sprd.INTC3.length

		struct iomap_sprd UIDEFUSE;
#define SPRD_UIDEFUSE_PHYS      io_addr_sprd.UIDEFUSE.paddr
#define SPRD_UIDEFUSE_BASE      io_addr_sprd.UIDEFUSE.vaddr
#define SPRD_UIDEFUSE_SIZE      io_addr_sprd.UIDEFUSE.length

		struct iomap_sprd CA7WDG;
#define SPRD_CA7WDG_PHYS        io_addr_sprd.CA7WDG.paddr
#define SPRD_CA7WDG_BASE        io_addr_sprd.CA7WDG.vaddr
#define SPRD_CA7WDG_SIZE        io_addr_sprd.CA7WDG.length

		struct iomap_sprd EIC;
#define SPRD_EIC_PHYS           io_addr_sprd.EIC.paddr
#define SPRD_EIC_BASE           io_addr_sprd.EIC.vaddr
#define SPRD_EIC_SIZE           io_addr_sprd.EIC.length

		struct iomap_sprd IPI;
#define SPRD_IPI_PHYS           io_addr_sprd.IPI.paddr
#define SPRD_IPI_BASE           io_addr_sprd.IPI.vaddr
#define SPRD_IPI_SIZE           io_addr_sprd.IPI.length

		struct iomap_sprd LPDDR2;
#define SPRD_LPDDR2_PHYS           io_addr_sprd.LPDDR2.paddr
#define SPRD_LPDDR2_BASE           io_addr_sprd.LPDDR2.vaddr
#define SPRD_LPDDR2_SIZE           io_addr_sprd.LPDDR2.length

		struct iomap_sprd UART0;
#define SPRD_UART0_PHYS           io_addr_sprd.UART0.paddr
#define SPRD_UART0_BASE           io_addr_sprd.UART0.vaddr
#define SPRD_UART0_SIZE           io_addr_sprd.UART0.length

		struct iomap_sprd UART1;
#define SPRD_UART1_PHYS           io_addr_sprd.UART1.paddr
#define SPRD_UART1_BASE           io_addr_sprd.UART1.vaddr
#define SPRD_UART1_SIZE           io_addr_sprd.UART1.length

		struct iomap_sprd UART2;
#define SPRD_UART2_PHYS           io_addr_sprd.UART2.paddr
#define SPRD_UART2_BASE           io_addr_sprd.UART2.vaddr
#define SPRD_UART2_SIZE           io_addr_sprd.UART2.length

		struct iomap_sprd UART3;
#define SPRD_UART3_PHYS           io_addr_sprd.UART3.paddr
#define SPRD_UART3_BASE           io_addr_sprd.UART3.vaddr
#define SPRD_UART3_SIZE           io_addr_sprd.UART3.length

		struct iomap_sprd UART4;
#define SPRD_UART4_PHYS           io_addr_sprd.UART4.paddr
#define SPRD_UART4_BASE           io_addr_sprd.UART4.vaddr
#define SPRD_UART4_SIZE           io_addr_sprd.UART4.length

	/* indicate base address of maps */
	unsigned long base;

/************** 32BIT private map **************/
#else /* 32BIT */
	struct iomap_sprd AONCKG;
#define SPRD_AONCKG_PHYS	io_addr_sprd.AONCKG.paddr
#define SPRD_AONCKG_BASE	io_addr_sprd.AONCKG.vaddr
#define SPRD_AONCKG_SIZE	io_addr_sprd.AONCKG.length

	struct iomap_sprd CORE;
#define SPRD_CORE_PHYS		io_addr_sprd.CORE.paddr
#define SPRD_CORE_BASE		io_addr_sprd.CORE.vaddr
#define SPRD_CORE_SIZE		io_addr_sprd.CORE.length

	struct iomap_sprd GPUCKG;
#define SPRD_GPUCKG_PHYS	io_addr_sprd.GPUCKG.paddr
#define SPRD_GPUCKG_BASE	io_addr_sprd.GPUCKG.vaddr
#define SPRD_GPUCKG_SIZE	io_addr_sprd.GPUCKG.length

	struct iomap_sprd INT;
#define SPRD_INT_PHYS		io_addr_sprd.INT.paddr
#define SPRD_INT_BASE		io_addr_sprd.INT.vaddr
#define SPRD_INT_SIZE		io_addr_sprd.INT.length

	struct iomap_sprd INTC0;
#define SPRD_INTC0_PHYS		io_addr_sprd.INTC0.paddr
#define SPRD_INTC0_BASE		io_addr_sprd.INTC0.vaddr
#define SPRD_INTC0_SIZE		io_addr_sprd.INTC0.length

	struct iomap_sprd INTC1;
#define SPRD_INTC1_PHYS		io_addr_sprd.INTC1.paddr
#define SPRD_INTC1_BASE		io_addr_sprd.INTC1.vaddr
#define SPRD_INTC1_SIZE		io_addr_sprd.INTC1.length

	struct iomap_sprd INTC2;
#define SPRD_INTC2_PHYS		io_addr_sprd.INTC2.paddr
#define SPRD_INTC2_BASE		io_addr_sprd.INTC2.vaddr
#define SPRD_INTC2_SIZE		io_addr_sprd.INTC2.length

	struct iomap_sprd INTC3;
#define SPRD_INTC3_PHYS		io_addr_sprd.INTC3.paddr
#define SPRD_INTC3_BASE		io_addr_sprd.INTC3.vaddr
#define SPRD_INTC3_SIZE		io_addr_sprd.INTC3.length

	struct iomap_sprd UIDEFUSE;
#define SPRD_UIDEFUSE_PHYS	io_addr_sprd.UIDEFUSE.paddr
#define SPRD_UIDEFUSE_BASE	io_addr_sprd.UIDEFUSE.vaddr
#define SPRD_UIDEFUSE_SIZE	io_addr_sprd.UIDEFUSE.length

	struct iomap_sprd ISP;
#define SPRD_ISP_PHYS		io_addr_sprd.ISP.paddr
#define SPRD_ISP_BASE		io_addr_sprd.ISP.vaddr
#define SPRD_ISP_SIZE		io_addr_sprd.ISP.length

	struct iomap_sprd CA7WDG;
#define SPRD_CA7WDG_PHYS	(io_addr_sprd.CA7WDG.paddr)
#define SPRD_CA7WDG_BASE	(io_addr_sprd.CA7WDG.vaddr)
#define SPRD_CA7WDG_SIZE	(io_addr_sprd.CA7WDG.length)

	struct iomap_sprd CSI2;
#define SPRD_CSI2_PHYS		io_addr_sprd.CSI2.paddr
#define SPRD_CSI2_BASE		io_addr_sprd.CSI2.vaddr
#define SPRD_CSI2_SIZE		io_addr_sprd.CSI2.length

	struct iomap_sprd EIC;
#define SPRD_EIC_PHYS		io_addr_sprd.EIC.paddr
#define SPRD_EIC_BASE		io_addr_sprd.EIC.vaddr
#define SPRD_EIC_SIZE		io_addr_sprd.EIC.length

	struct iomap_sprd IPI;
#define SPRD_IPI_PHYS		io_addr_sprd.IPI.paddr
#define SPRD_IPI_BASE		io_addr_sprd.IPI.vaddr
#define SPRD_IPI_SIZE		io_addr_sprd.IPI.length

	struct iomap_sprd DCAM;
#define SPRD_DCAM_PHYS		io_addr_sprd.DCAM.paddr
#define SPRD_DCAM_BASE		io_addr_sprd.DCAM.vaddr
#define SPRD_DCAM_SIZE		io_addr_sprd.DCAM.length

/*	struct iomap_sprd VSP;
#define SPRD_VSP_PHYS		io_addr_sprd.VSP.paddr
#define SPRD_VSP_BASE		io_addr_sprd.VSP.vaddr
#define SPRD_VSP_SIZE		io_addr_sprd.VSP.length
*/
	struct iomap_sprd SYSCNT;
#define SPRD_SYSCNT_PHYS	io_addr_sprd.SYSCNT.paddr
#define SPRD_SYSCNT_BASE	io_addr_sprd.SYSCNT.vaddr
#define SPRD_SYSCNT_SIZE	io_addr_sprd.SYSCNT.length

	struct iomap_sprd PIN;
#define SPRD_PIN_PHYS		io_addr_sprd.PIN.paddr
#define SPRD_PIN_BASE		io_addr_sprd.PIN.vaddr
#define SPRD_PIN_SIZE		io_addr_sprd.PIN.length

	struct iomap_sprd GPIO;
#define SPRD_GPIO_PHYS		io_addr_sprd.GPIO.paddr
#define SPRD_GPIO_BASE		io_addr_sprd.GPIO.vaddr
#define SPRD_GPIO_SIZE		io_addr_sprd.GPIO.length

#endif
};

#else /* __ASSEMBLER__ */

#if !defined(CONFIG_64BIT)
#define SPRD_UART1_PHYS		0x70100000
#endif

#endif /* __ASSEMBLER__ */
#if defined(CONFIG_ARCH_SCX30G2) || defined(CONFIG_MACH_SP9830I) || defined(CONFIG_ARCH_SCX35LT8) 
#define REGS_CODEC_AHB_BASE	SPRD_CODECAHB_BASE
#endif
#endif /* __SCI_IOMAP_H__ */