summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-at91/include/mach/sama5d2.h
blob: 3dad7d9c9c2c715c39676a9384cff9ab60952f99 (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
// SPDX-License-Identifier: BSD-1-Clause
/*
 * Chip-specific header file for the SAMA5D2 family
 *
 * Copyright (c) 2015, Atmel Corporation
 * Copyright (c) 2019 Ahmad Fatoum, Pengutronix
 *
 * Common definitions.
 * Based on SAMA5D2 datasheet:
 * http://ww1.microchip.com/downloads/en/DeviceDoc/SAMA5D2-Series-Data-Sheet-DS60001476C.pdf
 *
 */

#ifndef SAMA5D2_H
#define SAMA5D2_H

/*
 * Peripheral identifiers/interrupts. (Table 18-9)
 */
#define	SAMA5D2_ID_FIQ		0	/* FIQ Interrupt ID */
/* 1 */
#define	SAMA5D2_ID_ARM		2	/* Performance Monitor Unit */
#define	SAMA5D2_ID_PIT		3	/* Periodic Interval Timer Interrupt */
#define	SAMA5D2_ID_WDT		4	/* Watchdog Timer Interrupt */
#define	SAMA5D2_ID_GMAC		5	/* Ethernet MAC */
#define	SAMA5D2_ID_XDMAC0	6	/* DMA Controller 0 */
#define	SAMA5D2_ID_XDMAC1	7	/* DMA Controller 1 */
#define	SAMA5D2_ID_ICM		8	/* Integrity Check Monitor */
#define	SAMA5D2_ID_AES		9	/* Advanced Encryption Standard */
#define	SAMA5D2_ID_AESB		10	/* AES bridge */
#define	SAMA5D2_ID_TDES		11	/* Triple Data Encryption Standard */
#define	SAMA5D2_ID_SHA		12	/* SHA Signature */
#define	SAMA5D2_ID_MPDDRC	13	/* MPDDR Controller */
#define	SAMA5D2_ID_MATRIX1	14	/* H32MX, 32-bit AHB Matrix */
#define	SAMA5D2_ID_MATRIX0	15	/* H64MX, 64-bit AHB Matrix */
#define	SAMA5D2_ID_SECUMOD	16	/* Secure Module */
#define	SAMA5D2_ID_HSMC		17	/* Multi-bit ECC interrupt */
#define	SAMA5D2_ID_PIOA		18	/* Parallel I/O Controller A */
#define	SAMA5D2_ID_FLEXCOM0	19	/* FLEXCOM0 */
#define	SAMA5D2_ID_FLEXCOM1	20	/* FLEXCOM1 */
#define	SAMA5D2_ID_FLEXCOM2	21	/* FLEXCOM2 */
#define	SAMA5D2_ID_FLEXCOM3	22	/* FLEXCOM3 */
#define	SAMA5D2_ID_FLEXCOM4	23	/* FLEXCOM4 */
#define	SAMA5D2_ID_UART0	24	/* UART0 */
#define	SAMA5D2_ID_UART1	25	/* UART1 */
#define	SAMA5D2_ID_UART2	26	/* UART2 */
#define	SAMA5D2_ID_UART3	27	/* UART3 */
#define	SAMA5D2_ID_UART4	28	/* UART4 */
#define	SAMA5D2_ID_TWI0		29	/* Two-wire Interface 0 */
#define	SAMA5D2_ID_TWI1		30	/* Two-wire Interface 1 */
#define	SAMA5D2_ID_SDMMC0	31	/* Secure Data Memory Card Controller 0 */
#define	SAMA5D2_ID_SDMMC1	32	/* Secure Data Memory Card Controller 1 */
#define	SAMA5D2_ID_SPI0		33	/* Serial Peripheral Interface 0 */
#define	SAMA5D2_ID_SPI1		34	/* Serial Peripheral Interface 1 */
#define	SAMA5D2_ID_TC0		35	/* Timer Counter 0 (ch.0,1,2) */
#define	SAMA5D2_ID_TC1		36	/* Timer Counter 1 (ch.3,4,5) */
/* 37 */
#define	SAMA5D2_ID_PWM		38	/* Pulse Width Modulation Controller0 (ch. 0,1,2,3) */
/* 39 */
#define	SAMA5D2_ID_ADC		40	/* Touch Screen ADC Controller */
#define	SAMA5D2_ID_UHPHS	41	/* USB Host High Speed */
#define	SAMA5D2_ID_UDPHS	42	/* USB Device High Speed */
#define	SAMA5D2_ID_SSC0		43	/* Serial Synchronous Controller 0 */
#define	SAMA5D2_ID_SSC1		44	/* Serial Synchronous Controller 1 */
#define	SAMA5D2_ID_LCDC		45	/* LCD Controller */
#define	SAMA5D2_ID_ISI		46	/* Image Sensor Interface */
#define	SAMA5D2_ID_TRNG		47	/* True Random Number Generator */
#define	SAMA5D2_ID_PDMIC	48	/* Pulse Density Modulation Interface Controller */
#define	SAMA5D2_ID_IRQ		49	/* IRQ Interrupt ID */
#define	SAMA5D2_ID_SFC		50	/* Fuse Controller */
#define	SAMA5D2_ID_SECURAM	51	/* Secure RAM */
#define	SAMA5D2_ID_QSPI0	52	/* QSPI0 */
#define	SAMA5D2_ID_QSPI1	53	/* QSPI1 */
#define	SAMA5D2_ID_I2SC0	54	/* Inter-IC Sound Controller 0 */
#define	SAMA5D2_ID_I2SC1	55	/* Inter-IC Sound Controller 1 */
#define	SAMA5D2_ID_CAN0_INT0	56	/* MCAN 0 Interrupt0 */
#define	SAMA5D2_ID_CAN1_INT0	57	/* MCAN 1 Interrupt0 */
#define	SAMA5D2_ID_PTC		58	/* Peripheral Touch Controller */
#define	SAMA5D2_ID_CLASSD	59	/* Audio Class D Amplifier */
#define	SAMA5D2_ID_SFR		60	/* Special Function Register */
#define	SAMA5D2_ID_SAIC		61	/* Secured Advanced Interrupt Controller */
#define	SAMA5D2_ID_AIC		62	/* Advanced Interrupt Controller */
#define	SAMA5D2_ID_L2CC		63	/* L2 Cache Controller */
#define	SAMA5D2_ID_CAN0_INT1	64	/* MCAN 0 Interrupt1 */
#define	SAMA5D2_ID_CAN1_INT1	65	/* MCAN 1 Interrupt1 */
#define	SAMA5D2_ID_GMAC_Q1	66	/* GMAC Queue 1 Interrupt */
#define	SAMA5D2_ID_GMAC_Q2	67	/* GMAC Queue 2 Interrupt */
#define	SAMA5D2_ID_PIOB		68	/* Parallel I/O Controller B */
#define	SAMA5D2_ID_PIOC		69	/* Parallel I/O Controller C */
#define	SAMA5D2_ID_PIOD		70	/* Parallel I/O Controller D */
#define	SAMA5D2_ID_SDMMC0_TIMER	71	/* Secure Data Memory Card Controller 0 */
#define	SAMA5D2_ID_SDMMC1_TIMER	72	/* Secure Data Memory Card Controller 1 */
/* 73 */
#define	SAMA5D2_ID_SYS		74	/* System Controller Interrupt */
#define	SAMA5D2_ID_ACC		75	/* Analog Comparator */
#define	SAMA5D2_ID_RXLP		76	/* UART Low-Power */
#define	SAMA5D2_ID_SFRBU	77	/* Special Function Register BackUp */
#define	SAMA5D2_ID_CHIPID	78	/* Chip ID */

/*
 * User Peripheral physical base addresses.
 */

#define	SAMA5D2_BASE_LCDC	0xf0000000
#define	SAMA5D2_BASE_XDMAC1	0xf0004000
#define	SAMA5D2_BASE_HXISI	0xf0008000
#define	SAMA5D2_BASE_MPDDRC	0xf000c000
#define	SAMA5D2_BASE_XDMAC0	0xf0010000
#define	SAMA5D2_BASE_PMC	0xf0014000
#define	SAMA5D2_BASE_MATRIX64	0xf0018000	/* MATRIX0 */
#define	SAMA5D2_BASE_AESB	0xf001c000
#define	SAMA5D2_BASE_QSPI0	0xf0020000
#define	SAMA5D2_BASE_QSPI1	0xf0024000
#define	SAMA5D2_BASE_SHA	0xf0028000
#define	SAMA5D2_BASE_AES	0xf002c000

#define	SAMA5D2_BASE_SPI0	0xf8000000
#define	SAMA5D2_BASE_SSC0	0xf8004000
#define	SAMA5D2_BASE_GMAC	0xf8008000
#define	SAMA5D2_BASE_TC0	0xf800c000
#define	SAMA5D2_BASE_TC1	0xf8010000
#define	SAMA5D2_BASE_HSMC	0xf8014000
#define	SAMA5D2_BASE_PDMIC	0xf8018000
#define	SAMA5D2_BASE_UART0	0xf801c000
#define	SAMA5D2_BASE_UART1	0xf8020000
#define	SAMA5D2_BASE_UART2	0xf8024000
#define	SAMA5D2_BASE_TWI0	0xf8028000
#define	SAMA5D2_BASE_PWMC	0xf802c000
#define	SAMA5D2_BASE_SFR	0xf8030000
#define	SAMA5D2_BASE_FLEXCOM0	0xf8034000
#define	SAMA5D2_BASE_FLEXCOM1	0xf8038000
#define	SAMA5D2_BASE_SAIC	0xf803c000
#define	SAMA5D2_BASE_ICM	0xf8040000
#define	SAMA5D2_BASE_SECURAM	0xf8044000
#define	SAMA5D2_BASE_SYSC	0xf8048000
#define	SAMA5D2_BASE_ACC	0xf804a000
#define	SAMA5D2_BASE_SFC	0xf804c000
#define	SAMA5D2_BASE_I2SC0	0xf8050000
#define	SAMA5D2_BASE_CAN0	0xf8054000

#define	SAMA5D2_BASE_SPI1	0xfc000000
#define	SAMA5D2_BASE_SSC1	0xfc004000
#define	SAMA5D2_BASE_UART3	0xfc008000
#define	SAMA5D2_BASE_UART4	0xfc00c000
#define	SAMA5D2_BASE_FLEXCOM2	0xfc010000
#define	SAMA5D2_BASE_FLEXCOM3	0xfc014000
#define	SAMA5D2_BASE_FLEXCOM4	0xfc018000
#define	SAMA5D2_BASE_TRNG	0xfc01c000
#define	SAMA5D2_BASE_AIC	0xfc020000
#define	SAMA5D2_BASE_TWI1	0xfc028000
#define	SAMA5D2_BASE_UDPHS	0xfc02c000
#define	SAMA5D2_BASE_ADC	0xfc030000

#define	SAMA5D2_BASE_PIOA	0xfc038000
#define	SAMA5D2_BASE_MATRIX32	0xfc03c000	/* MATRIX1 */
#define	SAMA5D2_BASE_SECUMOD	0xfc040000
#define	SAMA5D2_BASE_TDES	0xfc044000
#define	SAMA5D2_BASE_CLASSD	0xfc048000
#define	SAMA5D2_BASE_I2SC1	0xfc04c000
#define	SAMA5D2_BASE_CAN1	0xfc050000
#define	SAMA5D2_BASE_SFRBU	0xfc05c000
#define	SAMA5D2_BASE_CHIPID	0xfc069000

/*
 * Address Memory Space
 */
#define	SAMA5D2_BASE_INTERNAL_MEM	0x00000000
#define	SAMA5D2_BASE_CS0		0x10000000
#define	SAMA5D2_BASE_DDRCS		0x20000000
#define	SAMA5D2_BASE_DDRCS_AES		0x40000000
#define	SAMA5D2_BASE_CS1		0x60000000
#define	SAMA5D2_BASE_CS2		0x70000000
#define	SAMA5D2_BASE_CS3		0x80000000
#define	SAMA5D2_BASE_QSPI0_AES_MEM	0x90000000
#define	SAMA5D2_BASE_QSPI1_AES_MEM	0x98000000
#define	SAMA5D2_BASE_SDHC0		0xa0000000
#define	SAMA5D2_BASE_SDHC1		0xb0000000
#define	SAMA5D2_BASE_NFC_CMD_REG	0xc0000000
#define	SAMA5D2_BASE_QSPI0_MEM		0xd0000000
#define	SAMA5D2_BASE_QSPI1_MEM		0xd8000000
#define	SAMA5D2_BASE_PERIPH		0xf0000000

/*
 * Internal Memories
 */
#define	SAMA5D2_BASE_ROM		0x00000000	/* ROM */
#define	SAMA5D2_BASE_ECC_ROM		0x00060000	/* ECC ROM */
#define	SAMA5D2_BASE_NFC_SRAM		0x00100000	/* NFC SRAM */
#define	SAMA5D2_BASE_SRAM0		0x00200000	/* SRAM0 */
#define	SAMA5D2_BASE_SRAM1		0x00220000	/* SRAM1 */
#define	SAMA5D2_BASE_UDPHS_SRAM		0x00300000	/* UDPHS RAM */
#define	SAMA5D2_BASE_UHP_OHCI		0x00400000	/* UHP OHCI */
#define	SAMA5D2_BASE_UHP_EHCI		0x00500000	/* UHP EHCI */
#define	SAMA5D2_BASE_AXI_MATRIX		0x00600000	/* AXI Maxtrix */
#define	SAMA5D2_BASE_DAP		0x00700000	/* DAP */
#define	SAMA5D2_BASE_PTC		0x00800000	/* PTC */
#define	SAMA5D2_BASE_L2CC		0x00A00000	/* L2CC */

/*
 * Other misc defines
 */
#define	SAMA5D2_BASE_PMECC	(SAMA5D2_BASE_HSMC + 0x70)
#define	SAMA5D2_BASE_PMERRLOC	(SAMA5D2_BASE_HSMC + 0x500)

#define	SAMA5D2_PMECC		(SAMA5D2_BASE_PMECC - SAMA5D2_BASE_SYS)
#define	SAMA5D2_PMERRLOC	(SAMA5D2_BASE_PMERRLOC - SAMA5D2_BASE_SYS)

#define	SAMA5D2_BASE_PIOB	(SAMA5D2_BASE_PIOA + 0x40)
#define	SAMA5D2_BASE_PIOC	(SAMA5D2_BASE_PIOB + 0x40)
#define	SAMA5D2_BASE_PIOD	(SAMA5D2_BASE_PIOC + 0x40)

/* SYSC spawns */
#define	SAMA5D2_BASE_RSTC	SAMA5D2_BASE_SYSC
#define	SAMA5D2_BASE_SHDC	(SAMA5D2_BASE_SYSC + 0x10)
#define	SAMA5D2_BASE_PITC	(SAMA5D2_BASE_SYSC + 0x30)
#define	SAMA5D2_BASE_WDT	(SAMA5D2_BASE_SYSC + 0x40)
#define	SAMA5D2_BASE_SCKCR	(SAMA5D2_BASE_SYSC + 0x50)
#define	SAMA5D2_BASE_RTCC	(SAMA5D2_BASE_SYSC + 0xb0)

#define SAMA5D2_BASE_SMC	(SAMA5D2_BASE_HSMC + 0x700)

#define	SAMA5D2_NUM_PIO		4
#define	SAMA5D2_NUM_TWI		2

/* AICREDIR Unlock Key */
#define	SAMA5D2_AICREDIR_KEY		0xB6D81C4D

/*
 * Matrix Slaves ID
 */
/* MATRIX0(H64MX) Matrix Slaves */
/* Bridge from H64MX to AXIMX (Internal ROM, Cryto Library, PKCC RAM) */
#define	SAMA5D2_H64MX_SLAVE_BRIDGE_TO_AXIMX	0
#define	SAMA5D2_H64MX_SLAVE_PERI_BRIDGE		1	/* H64MX Peripheral Bridge */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_0		2	/* DDR2 Port0-AESOTF */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_1		3	/* DDR2 Port1 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_2		4	/* DDR2 Port2 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_3		5	/* DDR2 Port3 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_4		6	/* DDR2 Port4 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_5		7	/* DDR2 Port5 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_6		8	/* DDR2 Port6 */
#define	SAMA5D2_H64MX_SLAVE_DDR2_PORT_7		9	/* DDR2 Port7 */
#define	SAMA5D2_H64MX_SLAVE_INTERNAL_SRAM	10	/* Internal SRAM 128K */
#define	SAMA5D2_H64MX_SLAVE_CACHE_L2		11	/* Internal SRAM 128K (Cache L2) */
#define	SAMA5D2_H64MX_SLAVE_QSPI0		12	/* QSPI0 */
#define	SAMA5D2_H64MX_SLAVE_QSPI1		13	/* QSPI1 */
#define	SAMA5D2_H64MX_SLAVE_AESB		14	/* AESB */

/* MATRIX1(H32MX) Matrix Slaves */
#define	SAMA5D2_H32MX_BRIDGE_TO_H64MX		0	/* Bridge from H32MX to H64MX */
#define	SAMA5D2_H32MX_PERI_BRIDGE_0		1	/* H32MX Peripheral Bridge 0 */
#define	SAMA5D2_H32MX_PERI_BRIDGE_1		2	/* H32MX Peripheral Bridge 1 */
#define	SAMA5D2_H32MX_EXTERNAL_EBI		3	/* External Bus Interface */
#define	SAMA5D2_H32MX_NFC_CMD_REG		3	/* NFC command Register */
#define	SAMA5D2_H32MX_NFC_SRAM			4	/* NFC SRAM */
#define	SAMA5D2_H32MX_USB			5

#define	SAMA5D2_SRAM_BASE			SAMA5D2_BASE_SRAM0
#define	SAMA5D2_SRAM_SIZE			(128 * SZ_1K)

#endif