~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/arm/plat-tcc/include/mach/tcc8k-regs.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Telechips TCC8000 register definitions
 
3
 *
 
4
 * (C) 2009 Hans J. Koch <hjk@linutronix.de>
 
5
 *
 
6
 * Licensed under the terms of the GPLv2.
 
7
 */
 
8
 
 
9
#ifndef TCC8K_REGS_H
 
10
#define TCC8K_REGS_H
 
11
 
 
12
#include <linux/types.h>
 
13
 
 
14
#define EXT_SDRAM_BASE          0x20000000
 
15
#define INT_SRAM_BASE           0x30000000
 
16
#define INT_SRAM_SIZE           SZ_32K
 
17
#define CS0_BASE                0x40000000
 
18
#define CS1_BASE                0x50000000
 
19
#define CS1_SIZE                SZ_64K
 
20
#define CS2_BASE                0x60000000
 
21
#define CS3_BASE                0x70000000
 
22
#define AHB_PERI_BASE           0x80000000
 
23
#define AHB_PERI_SIZE           SZ_64K
 
24
#define APB0_PERI_BASE          0x90000000
 
25
#define APB0_PERI_SIZE          SZ_128K
 
26
#define APB1_PERI_BASE          0x98000000
 
27
#define APB1_PERI_SIZE          SZ_128K
 
28
#define DATA_TCM_BASE           0xa0000000
 
29
#define DATA_TCM_SIZE           SZ_8K
 
30
#define EXT_MEM_CTRL_BASE       0xf0000000
 
31
#define EXT_MEM_CTRL_SIZE       SZ_4K
 
32
 
 
33
#define CS1_BASE_VIRT           (void __iomem *)0xf7000000
 
34
#define AHB_PERI_BASE_VIRT      (void __iomem *)0xf4000000
 
35
#define APB0_PERI_BASE_VIRT     (void __iomem *)0xf1000000
 
36
#define APB1_PERI_BASE_VIRT     (void __iomem *)0xf2000000
 
37
#define EXT_MEM_CTRL_BASE_VIRT  (void __iomem *)0xf3000000
 
38
#define INT_SRAM_BASE_VIRT      (void __iomem *)0xf5000000
 
39
#define DATA_TCM_BASE_VIRT      (void __iomem *)0xf6000000
 
40
 
 
41
#define __REG(x)     (*((volatile u32 *)(x)))
 
42
 
 
43
/* USB Device Controller Registers */
 
44
#define UDC_BASE        (AHB_PERI_BASE_VIRT + 0x8000)
 
45
#define UDC_BASE_PHYS   (AHB_PERI_BASE + 0x8000)
 
46
 
 
47
#define UDC_IR_OFFS             0x00
 
48
#define UDC_EIR_OFFS            0x04
 
49
#define UDC_EIER_OFFS           0x08
 
50
#define UDC_FAR_OFFS            0x0c
 
51
#define UDC_FNR_OFFS            0x10
 
52
#define UDC_EDR_OFFS            0x14
 
53
#define UDC_RT_OFFS             0x18
 
54
#define UDC_SSR_OFFS            0x1c
 
55
#define UDC_SCR_OFFS            0x20
 
56
#define UDC_EP0SR_OFFS          0x24
 
57
#define UDC_EP0CR_OFFS          0x28
 
58
 
 
59
#define UDC_ESR_OFFS            0x2c
 
60
#define UDC_ECR_OFFS            0x30
 
61
#define UDC_BRCR_OFFS           0x34
 
62
#define UDC_BWCR_OFFS           0x38
 
63
#define UDC_MPR_OFFS            0x3c
 
64
#define UDC_DCR_OFFS            0x40
 
65
#define UDC_DTCR_OFFS           0x44
 
66
#define UDC_DFCR_OFFS           0x48
 
67
#define UDC_DTTCR1_OFFS         0x4c
 
68
#define UDC_DTTCR2_OFFS         0x50
 
69
#define UDC_ESR2_OFFS           0x54
 
70
 
 
71
#define UDC_SCR2_OFFS           0x58
 
72
#define UDC_EP0BUF_OFFS         0x60
 
73
#define UDC_EP1BUF_OFFS         0x64
 
74
#define UDC_EP2BUF_OFFS         0x68
 
75
#define UDC_EP3BUF_OFFS         0x6c
 
76
#define UDC_PLICR_OFFS          0xa0
 
77
#define UDC_PCR_OFFS            0xa4
 
78
 
 
79
#define UDC_UPCR0_OFFS          0xc8
 
80
#define UDC_UPCR1_OFFS          0xcc
 
81
#define UDC_UPCR2_OFFS          0xd0
 
82
#define UDC_UPCR3_OFFS          0xd4
 
83
 
 
84
/* Bits in UDC_EIR */
 
85
#define UDC_EIR_EP0I            (1 << 0)
 
86
#define UDC_EIR_EP1I            (1 << 1)
 
87
#define UDC_EIR_EP2I            (1 << 2)
 
88
#define UDC_EIR_EP3I            (1 << 3)
 
89
#define UDC_EIR_EPI_MASK        0x0f
 
90
 
 
91
/* Bits in UDC_EIER */
 
92
#define UDC_EIER_EP0IE          (1 << 0)
 
93
#define UDC_EIER_EP1IE          (1 << 1)
 
94
#define UDC_EIER_EP2IE          (1 << 2)
 
95
#define UDC_EIER_EP3IE          (1 << 3)
 
96
 
 
97
/* Bits in UDC_FNR */
 
98
#define UDC_FNR_FN_MASK         0x7ff
 
99
#define UDC_FNR_SM              (1 << 13)
 
100
#define UDC_FNR_FTL             (1 << 14)
 
101
 
 
102
/* Bits in UDC_SSR */
 
103
#define UDC_SSR_HFRES           (1 << 0)
 
104
#define UDC_SSR_HFSUSP          (1 << 1)
 
105
#define UDC_SSR_HFRM            (1 << 2)
 
106
#define UDC_SSR_SDE             (1 << 3)
 
107
#define UDC_SSR_HSP             (1 << 4)
 
108
#define UDC_SSR_DM              (1 << 5)
 
109
#define UDC_SSR_DP              (1 << 6)
 
110
#define UDC_SSR_TBM             (1 << 7)
 
111
#define UDC_SSR_VBON            (1 << 8)
 
112
#define UDC_SSR_VBOFF           (1 << 9)
 
113
#define UDC_SSR_EOERR           (1 << 10)
 
114
#define UDC_SSR_DCERR           (1 << 11)
 
115
#define UDC_SSR_TCERR           (1 << 12)
 
116
#define UDC_SSR_BSERR           (1 << 13)
 
117
#define UDC_SSR_TMERR           (1 << 14)
 
118
#define UDC_SSR_BAERR           (1 << 15)
 
119
 
 
120
/* Bits in UDC_SCR */
 
121
#define UDC_SCR_HRESE           (1 << 0)
 
122
#define UDC_SCR_HSSPE           (1 << 1)
 
123
#define UDC_SCR_RRDE            (1 << 5)
 
124
#define UDC_SCR_SPDEN           (1 << 6)
 
125
#define UDC_SCR_DIEN            (1 << 12)
 
126
 
 
127
/* Bits in UDC_EP0SR */
 
128
#define UDC_EP0SR_RSR           (1 << 0)
 
129
#define UDC_EP0SR_TST           (1 << 1)
 
130
#define UDC_EP0SR_SHT           (1 << 4)
 
131
#define UDC_EP0SR_LWO           (1 << 6)
 
132
 
 
133
/* Bits in UDC_EP0CR */
 
134
#define UDC_EP0CR_ESS           (1 << 1)
 
135
 
 
136
/* Bits in UDC_ESR */
 
137
#define UDC_ESR_RPS             (1 << 0)
 
138
#define UDC_ESR_TPS             (1 << 1)
 
139
#define UDC_ESR_LWO             (1 << 4)
 
140
#define UDC_ESR_FFS             (1 << 6)
 
141
 
 
142
/* Bits in UDC_ECR */
 
143
#define UDC_ECR_ESS             (1 << 1)
 
144
#define UDC_ECR_CDP             (1 << 2)
 
145
 
 
146
#define UDC_ECR_FLUSH           (1 << 6)
 
147
#define UDC_ECR_DUEN            (1 << 7)
 
148
 
 
149
/* Bits in UDC_UPCR0 */
 
150
#define UDC_UPCR0_VBD           (1 << 1)
 
151
#define UDC_UPCR0_VBDS          (1 << 6)
 
152
#define UDC_UPCR0_RCD_12        (0x0 << 9)
 
153
#define UDC_UPCR0_RCD_24        (0x1 << 9)
 
154
#define UDC_UPCR0_RCD_48        (0x2 << 9)
 
155
#define UDC_UPCR0_RCS_EXT       (0x1 << 11)
 
156
#define UDC_UPCR0_RCS_XTAL      (0x0 << 11)
 
157
 
 
158
/* Bits in UDC_UPCR1 */
 
159
#define UDC_UPCR1_CDT(x)        ((x) << 0)
 
160
#define UDC_UPCR1_OTGT(x)       ((x) << 3)
 
161
#define UDC_UPCR1_SQRXT(x)      ((x) << 8)
 
162
#define UDC_UPCR1_TXFSLST(x)    ((x) << 12)
 
163
 
 
164
/* Bits in UDC_UPCR2 */
 
165
#define UDC_UPCR2_TP            (1 << 0)
 
166
#define UDC_UPCR2_TXRT(x)       ((x) << 2)
 
167
#define UDC_UPCR2_TXVRT(x)      ((x) << 5)
 
168
#define UDC_UPCR2_OPMODE(x)     ((x) << 9)
 
169
#define UDC_UPCR2_XCVRSEL(x)    ((x) << 12)
 
170
#define UDC_UPCR2_TM            (1 << 14)
 
171
 
 
172
/* USB Host Controller registers */
 
173
#define USBH0_BASE      (AHB_PERI_BASE_VIRT + 0xb000)
 
174
#define USBH1_BASE      (AHB_PERI_BASE_VIRT + 0xb800)
 
175
 
 
176
#define OHCI_INT_ENABLE_OFFS    0x10
 
177
 
 
178
#define RH_DESCRIPTOR_A_OFFS    0x48
 
179
#define RH_DESCRIPTOR_B_OFFS    0x4c
 
180
 
 
181
#define USBHTCFG0_OFFS          0x100
 
182
#define USBHHCFG0_OFFS          0x104
 
183
#define USBHHCFG1_OFFS          0x104
 
184
 
 
185
/* DMA controller registers */
 
186
#define DMAC0_BASE      (AHB_PERI_BASE + 0x4000)
 
187
#define DMAC1_BASE      (AHB_PERI_BASE + 0xa000)
 
188
#define DMAC2_BASE      (AHB_PERI_BASE + 0x4800)
 
189
#define DMAC3_BASE      (AHB_PERI_BASE + 0xa800)
 
190
 
 
191
#define DMAC_CH_OFFSET(ch)      (ch * 0x30)
 
192
 
 
193
#define ST_SADR_OFFS            0x00
 
194
#define SPARAM_OFFS             0x04
 
195
#define C_SADR_OFFS             0x0c
 
196
#define ST_DADR_OFFS            0x10
 
197
#define DPARAM_OFFS             0x14
 
198
#define C_DADR_OFFS             0x1c
 
199
#define HCOUNT_OFFS             0x20
 
200
#define CHCTRL_OFFS             0x24
 
201
#define RPTCTRL_OFFS            0x28
 
202
#define EXTREQ_A_OFFS           0x2c
 
203
 
 
204
/* Bits in CHCTRL register */
 
205
#define CHCTRL_EN               (1 << 0)
 
206
 
 
207
#define CHCTRL_IEN              (1 << 2)
 
208
#define CHCTRL_FLAG             (1 << 3)
 
209
#define CHCTRL_WSIZE8           (0 << 4)
 
210
#define CHCTRL_WSIZE16          (1 << 4)
 
211
#define CHCTRL_WSIZE32          (2 << 4)
 
212
 
 
213
#define CHCTRL_BSIZE1           (0 << 6)
 
214
#define CHCTRL_BSIZE2           (1 << 6)
 
215
#define CHCTRL_BSIZE4           (2 << 6)
 
216
#define CHCTRL_BSIZE8           (3 << 6)
 
217
 
 
218
#define CHCTRL_TYPE_SINGLE_E    (0 << 8)
 
219
#define CHCTRL_TYPE_HW          (1 << 8)
 
220
#define CHCTRL_TYPE_SW          (2 << 8)
 
221
#define CHCTRL_TYPE_SINGLE_L    (3 << 8)
 
222
 
 
223
#define CHCTRL_BST              (1 << 10)
 
224
 
 
225
/* Use DMA controller 0, channel 2 for USB */
 
226
#define USB_DMA_BASE            (DMAC0_BASE + DMAC_CH_OFFSET(2))
 
227
 
 
228
/* NAND flash controller registers */
 
229
#define NFC_BASE        (AHB_PERI_BASE_VIRT + 0xd000)
 
230
#define NFC_BASE_PHYS   (AHB_PERI_BASE + 0xd000)
 
231
 
 
232
#define NFC_CMD_OFFS            0x00
 
233
#define NFC_LADDR_OFFS          0x04
 
234
#define NFC_BADDR_OFFS          0x08
 
235
#define NFC_SADDR_OFFS          0x0c
 
236
#define NFC_WDATA_OFFS          0x10
 
237
#define NFC_LDATA_OFFS          0x20
 
238
#define NFC_SDATA_OFFS          0x40
 
239
#define NFC_CTRL_OFFS           0x50
 
240
#define NFC_PSTART_OFFS         0x54
 
241
#define NFC_RSTART_OFFS         0x58
 
242
#define NFC_DSIZE_OFFS          0x5c
 
243
#define NFC_IREQ_OFFS           0x60
 
244
#define NFC_RST_OFFS            0x64
 
245
#define NFC_CTRL1_OFFS          0x68
 
246
#define NFC_MDATA_OFFS          0x70
 
247
 
 
248
#define NFC_WDATA_PHYS_ADDR     (NFC_BASE_PHYS + NFC_WDATA_OFFS)
 
249
 
 
250
/* Bits in NFC_CTRL */
 
251
#define NFC_CTRL_BHLD_MASK      (0xf << 0)
 
252
#define NFC_CTRL_BPW_MASK       (0xf << 4)
 
253
#define NFC_CTRL_BSTP_MASK      (0xf << 8)
 
254
#define NFC_CTRL_CADDR_MASK     (0x7 << 12)
 
255
#define NFC_CTRL_CADDR_1        (0x0 << 12)
 
256
#define NFC_CTRL_CADDR_2        (0x1 << 12)
 
257
#define NFC_CTRL_CADDR_3        (0x2 << 12)
 
258
#define NFC_CTRL_CADDR_4        (0x3 << 12)
 
259
#define NFC_CTRL_CADDR_5        (0x4 << 12)
 
260
#define NFC_CTRL_MSK            (1 << 15)
 
261
#define NFC_CTRL_PSIZE256       (0 << 16)
 
262
#define NFC_CTRL_PSIZE512       (1 << 16)
 
263
#define NFC_CTRL_PSIZE1024      (2 << 16)
 
264
#define NFC_CTRL_PSIZE2048      (3 << 16)
 
265
#define NFC_CTRL_PSIZE4096      (4 << 16)
 
266
#define NFC_CTRL_PSIZE_MASK     (7 << 16)
 
267
#define NFC_CTRL_BSIZE1         (0 << 19)
 
268
#define NFC_CTRL_BSIZE2         (1 << 19)
 
269
#define NFC_CTRL_BSIZE4         (2 << 19)
 
270
#define NFC_CTRL_BSIZE8         (3 << 19)
 
271
#define NFC_CTRL_BSIZE_MASK     (3 << 19)
 
272
#define NFC_CTRL_RDY            (1 << 21)
 
273
#define NFC_CTRL_CS0SEL         (1 << 22)
 
274
#define NFC_CTRL_CS1SEL         (1 << 23)
 
275
#define NFC_CTRL_CS2SEL         (1 << 24)
 
276
#define NFC_CTRL_CS3SEL         (1 << 25)
 
277
#define NFC_CTRL_CSMASK         (0xf << 22)
 
278
#define NFC_CTRL_BW             (1 << 26)
 
279
#define NFC_CTRL_FS             (1 << 27)
 
280
#define NFC_CTRL_DEN            (1 << 28)
 
281
#define NFC_CTRL_READ_IEN       (1 << 29)
 
282
#define NFC_CTRL_PROG_IEN       (1 << 30)
 
283
#define NFC_CTRL_RDY_IEN        (1 << 31)
 
284
 
 
285
/* Bits in NFC_IREQ */
 
286
#define NFC_IREQ_IRQ0           (1 << 0)
 
287
#define NFC_IREQ_IRQ1           (1 << 1)
 
288
#define NFC_IREQ_IRQ2           (1 << 2)
 
289
 
 
290
#define NFC_IREQ_FLAG0          (1 << 4)
 
291
#define NFC_IREQ_FLAG1          (1 << 5)
 
292
#define NFC_IREQ_FLAG2          (1 << 6)
 
293
 
 
294
/* MMC controller registers */
 
295
#define MMC0_BASE       (AHB_PERI_BASE_VIRT + 0xe000)
 
296
#define MMC1_BASE       (AHB_PERI_BASE_VIRT + 0xe800)
 
297
 
 
298
/* UART base addresses */
 
299
 
 
300
#define UART0_BASE      (APB0_PERI_BASE_VIRT + 0x07000)
 
301
#define UART0_BASE_PHYS (APB0_PERI_BASE + 0x07000)
 
302
#define UART1_BASE      (APB0_PERI_BASE_VIRT + 0x08000)
 
303
#define UART1_BASE_PHYS (APB0_PERI_BASE + 0x08000)
 
304
#define UART2_BASE      (APB0_PERI_BASE_VIRT + 0x09000)
 
305
#define UART2_BASE_PHYS (APB0_PERI_BASE + 0x09000)
 
306
#define UART3_BASE      (APB0_PERI_BASE_VIRT + 0x0a000)
 
307
#define UART3_BASE_PHYS (APB0_PERI_BASE + 0x0a000)
 
308
#define UART4_BASE      (APB0_PERI_BASE_VIRT + 0x15000)
 
309
#define UART4_BASE_PHYS (APB0_PERI_BASE + 0x15000)
 
310
 
 
311
#define UART_BASE       UART0_BASE
 
312
#define UART_BASE_PHYS  UART0_BASE_PHYS
 
313
 
 
314
/* ECC controller */
 
315
#define ECC_CTR_BASE    (APB0_PERI_BASE_VIRT + 0xd000)
 
316
 
 
317
#define ECC_CTRL_OFFS           0x00
 
318
#define ECC_BASE_OFFS           0x04
 
319
#define ECC_MASK_OFFS           0x08
 
320
#define ECC_CLEAR_OFFS          0x0c
 
321
#define ECC4_0_OFFS             0x10
 
322
#define ECC4_1_OFFS             0x14
 
323
 
 
324
#define ECC_EADDR0_OFFS         0x50
 
325
 
 
326
#define ECC_ERRNUM_OFFS         0x90
 
327
#define ECC_IREQ_OFFS           0x94
 
328
 
 
329
/* Bits in ECC_CTRL */
 
330
#define ECC_CTRL_ECC4_DIEN      (1 << 28)
 
331
#define ECC_CTRL_ECC8_DIEN      (1 << 29)
 
332
#define ECC_CTRL_ECC12_DIEN     (1 << 30)
 
333
#define ECC_CTRL_ECC_DISABLE    0x0
 
334
#define ECC_CTRL_ECC_SLC_ENC    0x8
 
335
#define ECC_CTRL_ECC_SLC_DEC    0x9
 
336
#define ECC_CTRL_ECC4_ENC       0xa
 
337
#define ECC_CTRL_ECC4_DEC       0xb
 
338
#define ECC_CTRL_ECC8_ENC       0xc
 
339
#define ECC_CTRL_ECC8_DEC       0xd
 
340
#define ECC_CTRL_ECC12_ENC      0xe
 
341
#define ECC_CTRL_ECC12_DEC      0xf
 
342
 
 
343
/* Bits in ECC_IREQ */
 
344
#define ECC_IREQ_E4DI           (1 << 4)
 
345
 
 
346
#define ECC_IREQ_E4DF           (1 << 20)
 
347
#define ECC_IREQ_E4EF           (1 << 21)
 
348
 
 
349
/* Interrupt controller */
 
350
 
 
351
#define PIC0_BASE       (APB1_PERI_BASE_VIRT + 0x3000)
 
352
#define PIC0_BASE_PHYS  (APB1_PERI_BASE + 0x3000)
 
353
 
 
354
#define PIC0_IEN_OFFS           0x00
 
355
#define PIC0_CREQ_OFFS          0x04
 
356
#define PIC0_IREQ_OFFS          0x08
 
357
#define PIC0_IRQSEL_OFFS        0x0c
 
358
#define PIC0_SRC_OFFS           0x10
 
359
#define PIC0_MREQ_OFFS          0x14
 
360
#define PIC0_TSTREQ_OFFS        0x18
 
361
#define PIC0_POL_OFFS           0x1c
 
362
#define PIC0_IRQ_OFFS           0x20
 
363
#define PIC0_FIQ_OFFS           0x24
 
364
#define PIC0_MIRQ_OFFS          0x28
 
365
#define PIC0_MFIQ_OFFS          0x2c
 
366
#define PIC0_TMODE_OFFS         0x30
 
367
#define PIC0_SYNC_OFFS          0x34
 
368
#define PIC0_WKUP_OFFS          0x38
 
369
#define PIC0_TMODEA_OFFS        0x3c
 
370
#define PIC0_INTOEN_OFFS        0x40
 
371
#define PIC0_MEN0_OFFS          0x44
 
372
#define PIC0_MEN_OFFS           0x48
 
373
 
 
374
#define PIC0_IEN                __REG(PIC0_BASE + PIC0_IEN_OFFS)
 
375
#define PIC0_IEN_PHYS           __REG(PIC0_BASE_PHYS + PIC0_IEN_OFFS)
 
376
#define PIC0_CREQ               __REG(PIC0_BASE + PIC0_CREQ_OFFS)
 
377
#define PIC0_CREQ_PHYS          __REG(PIC0_BASE_PHYS + PIC0_CREQ_OFFS)
 
378
#define PIC0_IREQ               __REG(PIC0_BASE + PIC0_IREQ_OFFS)
 
379
#define PIC0_IRQSEL             __REG(PIC0_BASE + PIC0_IRQSEL_OFFS)
 
380
#define PIC0_IRQSEL_PHYS        __REG(PIC0_BASE_PHYS + PIC0_IRQSEL_OFFS)
 
381
#define PIC0_SRC                __REG(PIC0_BASE + PIC0_SRC_OFFS)
 
382
#define PIC0_MREQ               __REG(PIC0_BASE + PIC0_MREQ_OFFS)
 
383
#define PIC0_TSTREQ             __REG(PIC0_BASE + PIC0_TSTREQ_OFFS)
 
384
#define PIC0_POL                __REG(PIC0_BASE + PIC0_POL_OFFS)
 
385
#define PIC0_IRQ                __REG(PIC0_BASE + PIC0_IRQ_OFFS)
 
386
#define PIC0_FIQ                __REG(PIC0_BASE + PIC0_FIQ_OFFS)
 
387
#define PIC0_MIRQ               __REG(PIC0_BASE + PIC0_MIRQ_OFFS)
 
388
#define PIC0_MFIQ               __REG(PIC0_BASE + PIC0_MFIQ_OFFS)
 
389
#define PIC0_TMODE              __REG(PIC0_BASE + PIC0_TMODE_OFFS)
 
390
#define PIC0_TMODE_PHYS         __REG(PIC0_BASE_PHYS + PIC0_TMODE_OFFS)
 
391
#define PIC0_SYNC               __REG(PIC0_BASE + PIC0_SYNC_OFFS)
 
392
#define PIC0_WKUP               __REG(PIC0_BASE + PIC0_WKUP_OFFS)
 
393
#define PIC0_TMODEA             __REG(PIC0_BASE + PIC0_TMODEA_OFFS)
 
394
#define PIC0_INTOEN             __REG(PIC0_BASE + PIC0_INTOEN_OFFS)
 
395
#define PIC0_MEN0               __REG(PIC0_BASE + PIC0_MEN0_OFFS)
 
396
#define PIC0_MEN                __REG(PIC0_BASE + PIC0_MEN_OFFS)
 
397
 
 
398
#define PIC1_BASE       (APB1_PERI_BASE_VIRT + 0x3080)
 
399
 
 
400
#define PIC1_IEN_OFFS           0x00
 
401
#define PIC1_CREQ_OFFS          0x04
 
402
#define PIC1_IREQ_OFFS          0x08
 
403
#define PIC1_IRQSEL_OFFS        0x0c
 
404
#define PIC1_SRC_OFFS           0x10
 
405
#define PIC1_MREQ_OFFS          0x14
 
406
#define PIC1_TSTREQ_OFFS        0x18
 
407
#define PIC1_POL_OFFS           0x1c
 
408
#define PIC1_IRQ_OFFS           0x20
 
409
#define PIC1_FIQ_OFFS           0x24
 
410
#define PIC1_MIRQ_OFFS          0x28
 
411
#define PIC1_MFIQ_OFFS          0x2c
 
412
#define PIC1_TMODE_OFFS         0x30
 
413
#define PIC1_SYNC_OFFS          0x34
 
414
#define PIC1_WKUP_OFFS          0x38
 
415
#define PIC1_TMODEA_OFFS        0x3c
 
416
#define PIC1_INTOEN_OFFS        0x40
 
417
#define PIC1_MEN1_OFFS          0x44
 
418
#define PIC1_MEN_OFFS           0x48
 
419
 
 
420
#define PIC1_IEN        __REG(PIC1_BASE + PIC1_IEN_OFFS)
 
421
#define PIC1_CREQ       __REG(PIC1_BASE + PIC1_CREQ_OFFS)
 
422
#define PIC1_IREQ       __REG(PIC1_BASE + PIC1_IREQ_OFFS)
 
423
#define PIC1_IRQSEL     __REG(PIC1_BASE + PIC1_IRQSEL_OFFS)
 
424
#define PIC1_SRC        __REG(PIC1_BASE + PIC1_SRC_OFFS)
 
425
#define PIC1_MREQ       __REG(PIC1_BASE + PIC1_MREQ_OFFS)
 
426
#define PIC1_TSTREQ     __REG(PIC1_BASE + PIC1_TSTREQ_OFFS)
 
427
#define PIC1_POL        __REG(PIC1_BASE + PIC1_POL_OFFS)
 
428
#define PIC1_IRQ        __REG(PIC1_BASE + PIC1_IRQ_OFFS)
 
429
#define PIC1_FIQ        __REG(PIC1_BASE + PIC1_FIQ_OFFS)
 
430
#define PIC1_MIRQ       __REG(PIC1_BASE + PIC1_MIRQ_OFFS)
 
431
#define PIC1_MFIQ       __REG(PIC1_BASE + PIC1_MFIQ_OFFS)
 
432
#define PIC1_TMODE      __REG(PIC1_BASE + PIC1_TMODE_OFFS)
 
433
#define PIC1_SYNC       __REG(PIC1_BASE + PIC1_SYNC_OFFS)
 
434
#define PIC1_WKUP       __REG(PIC1_BASE + PIC1_WKUP_OFFS)
 
435
#define PIC1_TMODEA     __REG(PIC1_BASE + PIC1_TMODEA_OFFS)
 
436
#define PIC1_INTOEN     __REG(PIC1_BASE + PIC1_INTOEN_OFFS)
 
437
#define PIC1_MEN1       __REG(PIC1_BASE + PIC1_MEN1_OFFS)
 
438
#define PIC1_MEN        __REG(PIC1_BASE + PIC1_MEN_OFFS)
 
439
 
 
440
/* Timer registers */
 
441
#define TIMER_BASE              (APB1_PERI_BASE_VIRT + 0x4000)
 
442
#define TIMER_BASE_PHYS         (APB1_PERI_BASE + 0x4000)
 
443
 
 
444
#define TWDCFG_OFFS             0x70
 
445
 
 
446
#define TC32EN_OFFS             0x80
 
447
#define TC32LDV_OFFS            0x84
 
448
#define TC32CMP0_OFFS           0x88
 
449
#define TC32CMP1_OFFS           0x8c
 
450
#define TC32PCNT_OFFS           0x90
 
451
#define TC32MCNT_OFFS           0x94
 
452
#define TC32IRQ_OFFS            0x98
 
453
 
 
454
/* Bits in TC32EN */
 
455
#define TC32EN_PRESCALE_MASK    0x00ffffff
 
456
#define TC32EN_ENABLE           (1 << 24)
 
457
#define TC32EN_LOADZERO         (1 << 25)
 
458
#define TC32EN_STOPMODE         (1 << 26)
 
459
#define TC32EN_LDM0             (1 << 28)
 
460
#define TC32EN_LDM1             (1 << 29)
 
461
 
 
462
/* Bits in TC32IRQ */
 
463
#define TC32IRQ_MSTAT_MASK      0x0000001f
 
464
#define TC32IRQ_RSTAT_MASK      (0x1f << 8)
 
465
#define TC32IRQ_IRQEN0          (1 << 16)
 
466
#define TC32IRQ_IRQEN1          (1 << 17)
 
467
#define TC32IRQ_IRQEN2          (1 << 18)
 
468
#define TC32IRQ_IRQEN3          (1 << 19)
 
469
#define TC32IRQ_IRQEN4          (1 << 20)
 
470
#define TC32IRQ_RSYNC           (1 << 30)
 
471
#define TC32IRQ_IRQCLR          (1 << 31)
 
472
 
 
473
/* GPIO registers */
 
474
#define GPIOPD_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
475
 
 
476
#define GPIOPD_DAT_OFFS         0x00
 
477
#define GPIOPD_DOE_OFFS         0x04
 
478
#define GPIOPD_FS0_OFFS         0x08
 
479
#define GPIOPD_FS1_OFFS         0x0c
 
480
#define GPIOPD_FS2_OFFS         0x10
 
481
#define GPIOPD_RPU_OFFS         0x30
 
482
#define GPIOPD_RPD_OFFS         0x34
 
483
#define GPIOPD_DV0_OFFS         0x38
 
484
#define GPIOPD_DV1_OFFS         0x3c
 
485
 
 
486
#define GPIOPS_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
487
 
 
488
#define GPIOPS_DAT_OFFS         0x40
 
489
#define GPIOPS_DOE_OFFS         0x44
 
490
#define GPIOPS_FS0_OFFS         0x48
 
491
#define GPIOPS_FS1_OFFS         0x4c
 
492
#define GPIOPS_FS2_OFFS         0x50
 
493
#define GPIOPS_FS3_OFFS         0x54
 
494
#define GPIOPS_RPU_OFFS         0x70
 
495
#define GPIOPS_RPD_OFFS         0x74
 
496
#define GPIOPS_DV0_OFFS         0x78
 
497
#define GPIOPS_DV1_OFFS         0x7c
 
498
 
 
499
#define GPIOPS_FS1_SDH0_BITS    0x000000ff
 
500
#define GPIOPS_FS1_SDH1_BITS    0x0000ff00
 
501
 
 
502
#define GPIOPU_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
503
 
 
504
#define GPIOPU_DAT_OFFS         0x80
 
505
#define GPIOPU_DOE_OFFS         0x84
 
506
#define GPIOPU_FS0_OFFS         0x88
 
507
#define GPIOPU_FS1_OFFS         0x8c
 
508
#define GPIOPU_FS2_OFFS         0x90
 
509
#define GPIOPU_RPU_OFFS         0xb0
 
510
#define GPIOPU_RPD_OFFS         0xb4
 
511
#define GPIOPU_DV0_OFFS         0xb8
 
512
#define GPIOPU_DV1_OFFS         0xbc
 
513
 
 
514
#define GPIOPU_FS0_TXD0         (1 << 0)
 
515
#define GPIOPU_FS0_RXD0         (1 << 1)
 
516
#define GPIOPU_FS0_CTS0         (1 << 2)
 
517
#define GPIOPU_FS0_RTS0         (1 << 3)
 
518
#define GPIOPU_FS0_TXD1         (1 << 4)
 
519
#define GPIOPU_FS0_RXD1         (1 << 5)
 
520
#define GPIOPU_FS0_CTS1         (1 << 6)
 
521
#define GPIOPU_FS0_RTS1         (1 << 7)
 
522
#define GPIOPU_FS0_TXD2         (1 << 8)
 
523
#define GPIOPU_FS0_RXD2         (1 << 9)
 
524
#define GPIOPU_FS0_CTS2         (1 << 10)
 
525
#define GPIOPU_FS0_RTS2         (1 << 11)
 
526
#define GPIOPU_FS0_TXD3         (1 << 12)
 
527
#define GPIOPU_FS0_RXD3         (1 << 13)
 
528
#define GPIOPU_FS0_CTS3         (1 << 14)
 
529
#define GPIOPU_FS0_RTS3         (1 << 15)
 
530
#define GPIOPU_FS0_TXD4         (1 << 16)
 
531
#define GPIOPU_FS0_RXD4         (1 << 17)
 
532
#define GPIOPU_FS0_CTS4         (1 << 18)
 
533
#define GPIOPU_FS0_RTS4         (1 << 19)
 
534
 
 
535
#define GPIOFC_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
536
 
 
537
#define GPIOFC_DAT_OFFS         0xc0
 
538
#define GPIOFC_DOE_OFFS         0xc4
 
539
#define GPIOFC_FS0_OFFS         0xc8
 
540
#define GPIOFC_FS1_OFFS         0xcc
 
541
#define GPIOFC_FS2_OFFS         0xd0
 
542
#define GPIOFC_FS3_OFFS         0xd4
 
543
#define GPIOFC_RPU_OFFS         0xf0
 
544
#define GPIOFC_RPD_OFFS         0xf4
 
545
#define GPIOFC_DV0_OFFS         0xf8
 
546
#define GPIOFC_DV1_OFFS         0xfc
 
547
 
 
548
#define GPIOFD_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
549
 
 
550
#define GPIOFD_DAT_OFFS         0x100
 
551
#define GPIOFD_DOE_OFFS         0x104
 
552
#define GPIOFD_FS0_OFFS         0x108
 
553
#define GPIOFD_FS1_OFFS         0x10c
 
554
#define GPIOFD_FS2_OFFS         0x110
 
555
#define GPIOFD_RPU_OFFS         0x130
 
556
#define GPIOFD_RPD_OFFS         0x134
 
557
#define GPIOFD_DV0_OFFS         0x138
 
558
#define GPIOFD_DV1_OFFS         0x13c
 
559
 
 
560
#define GPIOLC_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
561
 
 
562
#define GPIOLC_DAT_OFFS         0x140
 
563
#define GPIOLC_DOE_OFFS         0x144
 
564
#define GPIOLC_FS0_OFFS         0x148
 
565
#define GPIOLC_FS1_OFFS         0x14c
 
566
#define GPIOLC_RPU_OFFS         0x170
 
567
#define GPIOLC_RPD_OFFS         0x174
 
568
#define GPIOLC_DV0_OFFS         0x178
 
569
#define GPIOLC_DV1_OFFS         0x17c
 
570
 
 
571
#define GPIOLD_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
572
 
 
573
#define GPIOLD_DAT_OFFS         0x180
 
574
#define GPIOLD_DOE_OFFS         0x184
 
575
#define GPIOLD_FS0_OFFS         0x188
 
576
#define GPIOLD_FS1_OFFS         0x18c
 
577
#define GPIOLD_FS2_OFFS         0x190
 
578
#define GPIOLD_RPU_OFFS         0x1b0
 
579
#define GPIOLD_RPD_OFFS         0x1b4
 
580
#define GPIOLD_DV0_OFFS         0x1b8
 
581
#define GPIOLD_DV1_OFFS         0x1bc
 
582
 
 
583
#define GPIOAD_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
584
 
 
585
#define GPIOAD_DAT_OFFS         0x1c0
 
586
#define GPIOAD_DOE_OFFS         0x1c4
 
587
#define GPIOAD_FS0_OFFS         0x1c8
 
588
#define GPIOAD_RPU_OFFS         0x1f0
 
589
#define GPIOAD_RPD_OFFS         0x1f4
 
590
#define GPIOAD_DV0_OFFS         0x1f8
 
591
#define GPIOAD_DV1_OFFS         0x1fc
 
592
 
 
593
#define GPIOXC_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
594
 
 
595
#define GPIOXC_DAT_OFFS         0x200
 
596
#define GPIOXC_DOE_OFFS         0x204
 
597
#define GPIOXC_FS0_OFFS         0x208
 
598
#define GPIOXC_RPU_OFFS         0x230
 
599
#define GPIOXC_RPD_OFFS         0x234
 
600
#define GPIOXC_DV0_OFFS         0x238
 
601
#define GPIOXC_DV1_OFFS         0x23c
 
602
 
 
603
#define GPIOXC_FS0              __REG(GPIOXC_BASE + GPIOXC_FS0_OFFS)
 
604
 
 
605
#define GPIOXC_FS0_CS0          (1 << 26)
 
606
#define GPIOXC_FS0_CS1          (1 << 27)
 
607
 
 
608
#define GPIOXD_BASE             (APB1_PERI_BASE_VIRT + 0x5000)
 
609
 
 
610
#define GPIOXD_DAT_OFFS         0x240
 
611
#define GPIOXD_FS0_OFFS         0x248
 
612
#define GPIOXD_RPU_OFFS         0x270
 
613
#define GPIOXD_RPD_OFFS         0x274
 
614
#define GPIOXD_DV0_OFFS         0x278
 
615
#define GPIOXD_DV1_OFFS         0x27c
 
616
 
 
617
#define GPIOPK_BASE             (APB1_PERI_BASE_VIRT + 0x1c000)
 
618
 
 
619
#define GPIOPK_RST_OFFS         0x008
 
620
#define GPIOPK_DAT_OFFS         0x100
 
621
#define GPIOPK_DOE_OFFS         0x104
 
622
#define GPIOPK_FS0_OFFS         0x108
 
623
#define GPIOPK_FS1_OFFS         0x10c
 
624
#define GPIOPK_FS2_OFFS         0x110
 
625
#define GPIOPK_IRQST_OFFS       0x210
 
626
#define GPIOPK_IRQEN_OFFS       0x214
 
627
#define GPIOPK_IRQPOL_OFFS      0x218
 
628
#define GPIOPK_IRQTM0_OFFS      0x21c
 
629
#define GPIOPK_IRQTM1_OFFS      0x220
 
630
#define GPIOPK_CTL_OFFS         0x22c
 
631
 
 
632
#define PMGPIO_BASE             (APB1_PERI_BASE_VIRT + 0x10000)
 
633
#define BACKUP_RAM_BASE         PMGPIO_BASE
 
634
 
 
635
#define PMGPIO_DAT_OFFS         0x800
 
636
#define PMGPIO_DOE_OFFS         0x804
 
637
#define PMGPIO_FS0_OFFS         0x808
 
638
#define PMGPIO_RPU_OFFS         0x810
 
639
#define PMGPIO_RPD_OFFS         0x814
 
640
#define PMGPIO_DV0_OFFS         0x818
 
641
#define PMGPIO_DV1_OFFS         0x81c
 
642
#define PMGPIO_EE0_OFFS         0x820
 
643
#define PMGPIO_EE1_OFFS         0x824
 
644
#define PMGPIO_CTL_OFFS         0x828
 
645
#define PMGPIO_DI_OFFS          0x82c
 
646
#define PMGPIO_STR_OFFS         0x830
 
647
#define PMGPIO_STF_OFFS         0x834
 
648
#define PMGPIO_POL_OFFS         0x838
 
649
#define PMGPIO_APB_OFFS         0x800
 
650
 
 
651
/* Clock controller registers */
 
652
#define CKC_BASE        ((void __iomem *)(APB1_PERI_BASE_VIRT + 0x6000))
 
653
 
 
654
#define CLKCTRL_OFFS            0x00
 
655
#define PLL0CFG_OFFS            0x04
 
656
#define PLL1CFG_OFFS            0x08
 
657
#define CLKDIVC0_OFFS           0x0c
 
658
 
 
659
#define BCLKCTR0_OFFS           0x14
 
660
#define SWRESET0_OFFS           0x18
 
661
 
 
662
#define BCLKCTR1_OFFS           0x60
 
663
#define SWRESET1_OFFS           0x64
 
664
#define PWDCTL_OFFS             0x68
 
665
#define PLL2CFG_OFFS            0x6c
 
666
#define CLKDIVC1_OFFS           0x70
 
667
 
 
668
#define ACLKREF_OFFS            0x80
 
669
#define ACLKI2C_OFFS            0x84
 
670
#define ACLKSPI0_OFFS           0x88
 
671
#define ACLKSPI1_OFFS           0x8c
 
672
#define ACLKUART0_OFFS          0x90
 
673
#define ACLKUART1_OFFS          0x94
 
674
#define ACLKUART2_OFFS          0x98
 
675
#define ACLKUART3_OFFS          0x9c
 
676
#define ACLKUART4_OFFS          0xa0
 
677
#define ACLKTCT_OFFS            0xa4
 
678
#define ACLKTCX_OFFS            0xa8
 
679
#define ACLKTCZ_OFFS            0xac
 
680
#define ACLKADC_OFFS            0xb0
 
681
#define ACLKDAI0_OFFS           0xb4
 
682
#define ACLKDAI1_OFFS           0xb8
 
683
#define ACLKLCD_OFFS            0xbc
 
684
#define ACLKSPDIF_OFFS          0xc0
 
685
#define ACLKUSBH_OFFS           0xc4
 
686
#define ACLKSDH0_OFFS           0xc8
 
687
#define ACLKSDH1_OFFS           0xcc
 
688
#define ACLKC3DEC_OFFS          0xd0
 
689
#define ACLKEXT_OFFS            0xd4
 
690
#define ACLKCAN0_OFFS           0xd8
 
691
#define ACLKCAN1_OFFS           0xdc
 
692
#define ACLKGSB0_OFFS           0xe0
 
693
#define ACLKGSB1_OFFS           0xe4
 
694
#define ACLKGSB2_OFFS           0xe8
 
695
#define ACLKGSB3_OFFS           0xec
 
696
 
 
697
#define PLLxCFG_PD              (1 << 31)
 
698
 
 
699
/* CLKCTRL bits */
 
700
#define CLKCTRL_XE              (1 << 31)
 
701
 
 
702
/* CLKDIVCx bits */
 
703
#define CLKDIVC0_XTE            (1 << 7)
 
704
#define CLKDIVC0_XE             (1 << 15)
 
705
#define CLKDIVC0_P1E            (1 << 23)
 
706
#define CLKDIVC0_P0E            (1 << 31)
 
707
 
 
708
#define CLKDIVC1_P2E            (1 << 7)
 
709
 
 
710
/* BCLKCTR0 clock bits */
 
711
#define BCLKCTR0_USBD           (1 << 4)
 
712
#define BCLKCTR0_ECC            (1 << 9)
 
713
#define BCLKCTR0_USBH0          (1 << 11)
 
714
#define BCLKCTR0_NFC            (1 << 16)
 
715
 
 
716
/* BCLKCTR1 clock bits */
 
717
#define BCLKCTR1_USBH1          (1 << 20)
 
718
 
 
719
/* SWRESET0 bits */
 
720
#define SWRESET0_USBD           (1 << 4)
 
721
#define SWRESET0_USBH0          (1 << 11)
 
722
 
 
723
/* SWRESET1 bits */
 
724
#define SWRESET1_USBH1          (1 << 20)
 
725
 
 
726
/* System clock sources.
 
727
 * Note: These are the clock sources that serve as parents for
 
728
 * all other clocks. They have no parents themselves.
 
729
 *
 
730
 * These values are used for struct clk->root_id. All clocks
 
731
 * that are not system clock sources have this value set to
 
732
 * CLK_SRC_NOROOT.
 
733
 * The values for system clocks start with CLK_SRC_PLL0 == 0
 
734
 * because this gives us exactly the values needed for the lower
 
735
 * 4 bits of ACLK_* registers. Therefore, CLK_SRC_NOROOT is
 
736
 * defined as -1 to not disturb the order.
 
737
 */
 
738
enum root_clks {
 
739
        CLK_SRC_NOROOT = -1,
 
740
        CLK_SRC_PLL0 = 0,
 
741
        CLK_SRC_PLL1,
 
742
        CLK_SRC_PLL0DIV,
 
743
        CLK_SRC_PLL1DIV,
 
744
        CLK_SRC_XI,
 
745
        CLK_SRC_XIDIV,
 
746
        CLK_SRC_XTI,
 
747
        CLK_SRC_XTIDIV,
 
748
        CLK_SRC_PLL2,
 
749
        CLK_SRC_PLL2DIV,
 
750
        CLK_SRC_PK0,
 
751
        CLK_SRC_PK1,
 
752
        CLK_SRC_PK2,
 
753
        CLK_SRC_PK3,
 
754
        CLK_SRC_PK4,
 
755
        CLK_SRC_48MHZ
 
756
};
 
757
 
 
758
#define CLK_SRC_MASK            0xf
 
759
 
 
760
/* Bits in ACLK* registers */
 
761
#define ACLK_EN         (1 << 28)
 
762
#define ACLK_SEL_SHIFT          24
 
763
#define ACLK_SEL_MASK           0x0f000000
 
764
#define ACLK_DIV_MASK           0x00000fff
 
765
 
 
766
/* System configuration registers */
 
767
 
 
768
#define SCFG_BASE               (APB1_PERI_BASE_VIRT + 0x13000)
 
769
 
 
770
#define BMI_OFFS                0x00
 
771
#define AHBCON0_OFFS            0x04
 
772
#define APBPWE_OFFS             0x08
 
773
#define DTCMWAIT_OFFS           0x0c
 
774
#define ECCSEL_OFFS             0x10
 
775
#define AHBCON1_OFFS            0x14
 
776
#define SDHCFG_OFFS             0x18
 
777
#define REMAP_OFFS              0x20
 
778
#define LCDSIAE_OFFS            0x24
 
779
#define XMCCFG_OFFS             0xe0
 
780
#define IMCCFG_OFFS             0xe4
 
781
 
 
782
/* Values for ECCSEL */
 
783
#define ECCSEL_EXTMEM           0x0
 
784
#define ECCSEL_DTCM             0x1
 
785
#define ECCSEL_INT_SRAM         0x2
 
786
#define ECCSEL_AHB              0x3
 
787
 
 
788
/* Bits in XMCCFG */
 
789
#define XMCCFG_NFCE             (1 << 1)
 
790
#define XMCCFG_FDXD             (1 << 2)
 
791
 
 
792
/* External memory controller registers */
 
793
 
 
794
#define EMC_BASE                EXT_MEM_CTRL_BASE
 
795
 
 
796
#define SDCFG_OFFS              0x00
 
797
#define SDFSM_OFFS              0x04
 
798
#define MCFG_OFFS               0x08
 
799
 
 
800
#define CSCFG0_OFFS             0x10
 
801
#define CSCFG1_OFFS             0x14
 
802
#define CSCFG2_OFFS             0x18
 
803
#define CSCFG3_OFFS             0x1c
 
804
 
 
805
#define MCFG_SDEN               (1 << 4)
 
806
 
 
807
#endif /* TCC8K_REGS_H */