Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
/* $NetBSD: imx51reg.h,v 1.7 2015/05/07 04:37:29 hkenken Exp $ */
/*-
 * Copyright (c) 2007 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Matt Thomas.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _ARM_IMX_IMX51REG_H_
#define	_ARM_IMX_IMX51REG_H_

#ifdef IMX50
#define	TZIC_BASE	0x0fffc000
#define	APB_BASE	0x40000000
#define	AIPSTZ1_BASE	0x50000000
#define	AIPSTZ2_BASE	0x60000000
#define	CSD0DDR_BASE	0x70000000
#else
#define	TZIC_BASE	0xe0000000
#define	AIPSTZ1_BASE	0x70000000
#define	AIPSTZ2_BASE	0x80000000
#define	CSD0DDR_BASE	0x90000000
#define	CSD1DDR_BASE	0xa0000000
#define	CSDDDR_SIZE	0x10000000	/* 256MiB */
#define	CS0_BASE	0xb0000000
#define	CS0_SIZE	0x08000000	/* 128MiB */
#define	CS1_BASE	0xb8000000
#define	CS1_SIZE	0x08000000	/* 128MiB */
#define	CS2_BASE	0xc0000000
#define	CS2_SIZE	0x08000000	/* 128MiB */
#define	CS3_BASE	0xc8000000
#define	CS3_SIZE	0x04000000	/* 64MiB */
#define	CS4_BASE	0xcc000000
#define	CS4_SIZE	0x02000000	/* 32MiB */
#define	CS5_BASE	0xcefe0000
#define	CS5_SIZE	0x00010000	/* 32MiB */
#define	NAND_FLASH_BASE	0xcfff0000	/* internal buffer */
#define	NAND_FLASH_SIZE	0x00010000

#define	GPU2D_BASE	0xd0000000
#define	GPU2D_SIZE	0x10000000
#endif

#define	BOOTROM_BASE	0x00000000
#define	BOOTROM_SIZE	0x9000

#define	SCCRAM_BASE	0x1ffe0000
#define	SCCRAM_SIZE	0x20000

#define	GPUMEM_BASE	0x20000000
#define	GPUMEM_SIZE	0x20000

#define	GPU_BASE	0x30000000
#define	GPU_SIZE	0x10000000

#ifdef IMX50
#define EPDC_BASE	(APB_BASE + 0x01010000)
#define EPDC_SIZE	0x2000
#endif

/* Image Prossasing Unit */
#define	IPU_BASE	0x40000000
#define	IPU_CM_BASE	(IPU_BASE + 0x1e000000)
#define	IPU_CM_SIZE	0x8000
#define	IPU_IDMAC_BASE	(IPU_BASE + 0x1e008000)
#define	IPU_IDMAC_SIZE	0x8000
#define	IPU_DP_BASE	(IPU_BASE + 0x1e018000)
#define	IPU_DP_SIZE	0x8000
#define	IPU_IC_BASE	(IPU_BASE + 0x1e020000)
#define	IPU_IC_SIZE	0x8000
#define	IPU_IRT_BASE	(IPU_BASE + 0x1e028000)
#define	IPU_IRT_SIZE	0x8000
#define	IPU_CSI0_BASE	(IPU_BASE + 0x1e030000)
#define	IPU_CSI0_SIZE	0x8000
#define	IPU_CSI1_BASE	(IPU_BASE + 0x1e038000)
#define	IPU_CSI1_SIZE	0x8000
#define	IPU_DI0_BASE	(IPU_BASE + 0x1e040000)
#define	IPU_DI0_SIZE	0x8000
#define	IPU_DI1_BASE	(IPU_BASE + 0x1e048000)
#define	IPU_DI1_SIZE	0x8000
#define	IPU_SMFC_BASE	(IPU_BASE + 0x1e050000)
#define	IPU_SMFC_SIZE	0x8000
#define	IPU_DC_BASE	(IPU_BASE + 0x1e058000)
#define	IPU_DC_SIZE	0x8000
#define	IPU_DMFC_BASE	(IPU_BASE + 0x1e060000)
#define	IPU_DMFC_SIZE	0x8000
#define	IPU_VDI_BASE	(IPU_BASE + 0x1e068000)
#define	IPU_VDI_SIZE	0x8000
#define	IPU_CPMEM_BASE	(IPU_BASE + 0x1f000000)
#define	IPU_CPMEM_SIZE	0x20000
#define	IPU_LUT_BASE	(IPU_BASE + 0x1f020000)
#define	IPU_LUT_SIZE	0x20000
#define	IPU_SRM_BASE	(IPU_BASE + 0x1f040000)
#define	IPU_SRM_SIZE	0x20000
#define	IPU_TPM_BASE	(IPU_BASE + 0x1f060000)
#define	IPU_TPM_SIZE	0x20000
#define	IPU_DCTMPL_BASE	(IPU_BASE + 0x1f080000)
#define	IPU_DCTMPL_SIZE	0x20000

#define	DEBUGROM_BASE	0x60000000
#define	DEBUGROM_SIZE	0x1000

#define	ESDHC1_BASE	(AIPSTZ1_BASE + 0x00004000)
#define	ESDHC2_BASE	(AIPSTZ1_BASE + 0x00008000)
#define	ESDHC3_BASE	(AIPSTZ1_BASE + 0x00020000)
#define	ESDHC4_BASE	(AIPSTZ1_BASE + 0x00024000)
#define	ESDHC_SIZE	0x4000

#define PWM1_BASE	(AIPSTZ1_BASE + 0x03fb4000)
#define PWM2_BASE	(AIPSTZ1_BASE + 0x03fb8000)

#define	UART1_BASE	(AIPSTZ1_BASE + 0x03fbc000)
#define	UART2_BASE	(AIPSTZ1_BASE + 0x03fc0000)
#define	UART3_BASE	(AIPSTZ1_BASE + 0x0000c000)
/* register definitions in imxuartreg.h */

#define	CCMC_BASE	(AIPSTZ1_BASE + 0x03fd4000)

#define	ECSPI1_BASE	(AIPSTZ1_BASE + 0x00010000)
#define	ECSPI2_BASE	(AIPSTZ2_BASE + 0x03fac000)
#define	ECSPI_SIZE	0x4000

#define	SSI1_BASE	(AIPSTZ2_BASE + 0x03fcc000)
#define	SSI2_BASE	(AIPSTZ1_BASE + 0x00014000)
#define	SSI3_BASE	(AIPSTZ2_BASE + 0x03fe8000)
/* register definitions in imxssireg.h */

#define	SPDIF_BASE	(AIPSTZ1_BASE + 0x00028000)
#define	SPDIF_SIZE	0x4000

#define	PATA_UDMA_BASE	(AIPSTZ1_BASE + 0x00030000)
#define	PATA_UDMA_SIZE	0x4000
#define	PATA_PIO_BASE	(AIPSTZ2_BASE + 0x03fe0000)
#define	PATA_PIO_SIZE	0x4000

#define	SLM_BASE	(AIPSTZ1_BASE + 0x00034000)
#define	SLM_SIZE	0x4000

#ifdef IMX50
#define	I2C3_BASE	(AIPSTZ1_BASE + 0x00038000)
#define	I2C3_SIZE	0x4000
#else
#define	HSI2C_BASE	(AIPSTZ1_BASE + 0x00038000)
#define	HSI2C_SIZE	0x4000
#endif

#define	SPBA_BASE	(AIPSTZ1_BASE + 0x0003c000)
#define	SPBA_SIZE	0x4000

#define	USBOH3_BASE	(AIPSTZ1_BASE + 0x03f80000)
#define	USBOH3_PL301_BASE	(AIPSTZ1_BASE + 0x03fc4000)
#define	USBOH3_EHCI_SIZE	0x200
#define	USBOH3_OTG	0x000
#define	USBOH3_EHCI(n)	(USBOH3_EHCI_SIZE*(n))	/* n=1,2,3 */

/* USB_CTRL register */
#define	USBOH3_USBCTRL			0x800
#define	 USBCTRL_OWIR			__BIT(31)	/* OTG Wakeup interrupt request */
#define	 USBCTRL_OSIC			__BITS(29,30)	/* OTG Serial interface configuration */
#define	 USBCTRL_OUIE			__BIT(28)	/* OTG Wake-up interrupt enable */
#define	 USBCTRL_OBPAL			__BITS(25,26)	/* OTG Bypass value */
#define	 USBCTRL_OPM			__BIT(24)	/* OTG Power Mask */
#define	 USBCTRL_ICVOL			__BIT(23)	/* Host1 IC_USB voltage status */
#define	 USBCTRL_ICTPIE			__BIT(19)	/* IC USB TP interrupt enable */
#define	 USBCTRL_UBPCKE			__BIT(18)	/* Bypass clock enable */
#define	 USBCTRL_H1TCKOEN		__BIT(17)	/* Host1 ULPO PHY clock enable */
#define	 USBCTRL_ICTPC			__BIT(16)	/* Clear IC TP interrupt flag */
#define	 USBCTRL_H1WIR			__BIT(15)	/* Host1 wakeup interrupt request */
#define	 USBCTRL_H1SIC			__BITS(13,14)	/* Host1 serial interface config */
#define	 USBCTRL_H1UIE			__BIT(12)	/* Host1 ILPI interrupt enable */
#define	 USBCTRL_H1WIE			__BIT(11)	/* Host1 wakeup interrupt enable */
#define	 USBCTRL_H1BPVAL		__BITS(9,10)	/* Host1 bypass value */
#define	 USBCTRL_H1PM			__BIT(8)	/* Host1 power mask */
#define	 USBCTRL_OHSTLL			__BIT(7)	/* OTG ULPI TLL enable */
#define	 USBCTRL_H1HSTLL		__BIT(6)	/* Host1 ULPI TLL enable */
#define	 USBCTRL_H1DISFSTTL		__BIT(4)	/* Host1 serial TLL disable */
#define	 USBCTRL_OTCKOEN		__BIT(1)	/* OTG ULPI PHY clock enable */
#define	 USBCTRL_BPE			__BIT(0)	/* Bypass enable */
#define	USBOH3_OTGMIRROR		0x804
#define	USBOH3_PHYCTRL0			0x808
#define	 PHYCTRL0_VLOAD			__BIT(31)
#define	 PHYCTRL0_VCONTROL		__BITS(27,30)
#define	 PHYCTRL0_CONF2			__BIT(26)
#define	 PHYCTRL0_CONF3			__BIT(25)
#define	 PHYCTRL0_CHGRDETEN		__BIT(24)
#define	 PHYCTRL0_CHGRDETON		__BIT(23)
#define	 PHYCTRL0_VSTATUS		__BITS(15,22)
#define	 PHYCTRL0_SUSPENDM		__BIT(12)
#define	 PHYCTRL0_RESET			__BIT(11)
#define	 PHYCTRL0_UTMI_ON_CLOCK		__BIT(10)
#define	 PHYCTRL0_OTG_OVER_CUR_POL	__BIT(9)
#define	 PHYCTRL0_OTG_OVER_CUR_DIS	__BIT(8)
#define	 PHYCTRL0_OTG_XCVR_CLK_SEL	__BIT(7)
#define	 PHYCTRL0_H1_OVER_CUR_POL	__BIT(6)
#define	 PHYCTRL0_H1_OVER_CUR_DIS	__BIT(5)
#define	 PHYCTRL0_H1_XCVR_CLK_SEL	__BIT(4)
#define	 PHYCTRL0_PWR_POL		__BIT(3)
#define	 PHYCTRL0_CHRGDET		__BIT(2)
#define	 PHYCTRL0_CHRGDET_INT_EN	__BIT(1)
#define	 PHYCTRL0_CHRGDET_INT_FLG	__BIT(0)
#define	USBOH3_PHYCTRL1			0x80c
#define	 PHYCTRL1_PLLDIVVALUE_MASK	__BITS(0,1)
#define	 PHYCTRL1_PLLDIVVALUE_19MHZ	0	/* 19.2MHz */
#define	 PHYCTRL1_PLLDIVVALUE_24MHZ	1
#define	 PHYCTRL1_PLLDIVVALUE_26MHZ	2
#define	 PHYCTRL1_PLLDIVVALUE_27MHZ	3
#define	USBOH3_USBCTRL1			0x810
#define	 USBCTRL1_UH3_EXT_CLK_EN	__BIT(27)
#define	 USBCTRL1_UH2_EXT_CLK_EN	__BIT(26)
#define	 USBCTRL1_UH1_EXT_CLK_EN	__BIT(25)
#define	 USBCTRL1_OTG_EXT_CLK_EN	__BIT(24)
#define	USBOH3_USBCTRL2			0x814
#define	USBOH3_USBCTRL3			0x818
#define	USBOH3_UH1_PHY_CTRL_0		0x81c
#define	USBOH3_UH1_PHY_CTRL_1		0x820
#define	USBOH3_USB_CLKONOFF_CTRL  	0x824
#define	 USB_CLKONOFF_CTRL_H1_AHBCLK_OFF	__BIT(18)
#define	 USB_CLKONOFF_CTRL_OTG_AHBCLK_OFF	__BIT(17)

#define	USBOH3_SIZE	0x4000

/* GPIO module */

#define	GPIO_BASE(n)				      \
	(AIPSTZ1_BASE + (((n) <= 4) ?		      \
	    0x03f84000 + 0x4000 * ((n) - 1) :	      \
	    0x03fdc000 + 0x4000 * ((n) - 5)))

#define	GPIO1_BASE	GPIO_BASE(1)
#define	GPIO2_BASE	GPIO_BASE(2)
#define	GPIO3_BASE	GPIO_BASE(3)
#define	GPIO4_BASE	GPIO_BASE(4)
#define	GPIO5_BASE	GPIO_BASE(5)
#define	GPIO6_BASE	GPIO_BASE(6)

#ifdef IMX50
#define	GPIO_NGROUPS		6
#else
#define	GPIO_NGROUPS		4
#endif

#define	KPP_BASE	(AIPSTZ1_BASE + 0x03f94000)
/* register definitions in imxkppreg.h */

#define	WDOG1_BASE	(AIPSTZ1_BASE + 0x03f98000)
#define	WDOG2_BASE	(AIPSTZ1_BASE + 0x03f9c000)
#define	WDOG_SIZE	0x4000

#define	GPT_BASE	(AIPSTZ1_BASE + 0x03fa0000)
#define	GPT_SIZE	0x4000

#define	SRTC_BASE	(AIPSTZ1_BASE + 0x03fa4000)
#define	SRTC_SIZE	0x4000

/* IO multiplexor */
#define	IOMUXC_BASE	(AIPSTZ1_BASE + 0x03fa8000)
#define	IOMUXC_SIZE	0x4000

#define	IOMUXC_MUX_CTL		0x001c		/* multiprex control */
#define	 IOMUX_CONFIG_SION	__BIT(4)
#define	 IOMUX_CONFIG_ALT0	(0)
#define	 IOMUX_CONFIG_ALT1	(1)
#define	 IOMUX_CONFIG_ALT2	(2)
#define	 IOMUX_CONFIG_ALT3	(3)
#define	 IOMUX_CONFIG_ALT4	(4)
#define	 IOMUX_CONFIG_ALT5	(5)
#define	 IOMUX_CONFIG_ALT6	(6)
#define	 IOMUX_CONFIG_ALT7	(7)
#define	IOMUXC_PAD_CTL		0x03f0		/* pad control */
#define	 PAD_CTL_HVE		__BIT(13)
#define	 PAD_CTL_DDR_INPUT	__BIT(9)
#define	 PAD_CTL_HYS		__BIT(8)
#define	 PAD_CTL_PKE		__BIT(7)
#define	 PAD_CTL_PUE		__BIT(6)
#define	 PAD_CTL_PULL		(PAD_CTL_PKE|PAD_CTL_PUE)
#define	 PAD_CTL_KEEPER		(PAD_CTL_PKE|0)
#define	 PAD_CTL_PUS_MASK	__BITS(5, 4)
#define	 PAD_CTL_PUS_100K_PD	__SHIFTIN(0x0, PAD_CTL_PUS_MASK)
#define	 PAD_CTL_PUS_47K_PU	__SHIFTIN(0x1, PAD_CTL_PUS_MASK)
#define	 PAD_CTL_PUS_100K_PU	__SHIFTIN(0x2, PAD_CTL_PUS_MASK)
#define	 PAD_CTL_PUS_22K_PU	__SHIFTIN(0x3, PAD_CTL_PUS_MASK)
#define	 PAD_CTL_ODE		__BIT(3)	/* opendrain */
#define	 PAD_CTL_DSE_MASK	__BITS(2, 1)
#define	 PAD_CTL_DSE_LOW	__SHIFTIN(0x0, PAD_CTL_DSE_MASK)
#define	 PAD_CTL_DSE_MID	__SHIFTIN(0x1, PAD_CTL_DSE_MASK)
#define	 PAD_CTL_DSE_HIGH	__SHIFTIN(0x2, PAD_CTL_DSE_MASK)
#define	 PAD_CTL_DSE_MAX	__SHIFTIN(0x3, PAD_CTL_DSE_MASK)
#define	 PAD_CTL_SRE		__BIT(0)
#define	IOMUXC_INPUT_CTL	0x08c4		/* input control */
#define	 INPUT_DAISY_0		0
#define	 INPUT_DAISY_1		1
#define	 INPUT_DAISY_2		2
#define	 INPUT_DAISY_3		3
#define	 INPUT_DAISY_4		4
#define	 INPUT_DAISY_5		5
#define	 INPUT_DAISY_6		6
#define	 INPUT_DAISY_7		7

/*
 * IOMUX index
 */
#define	IOMUX_PIN_TO_MUX_ADDRESS(pin)	(((pin) >> 16) & 0xffff)
#define	IOMUX_PIN_TO_PAD_ADDRESS(pin)	(((pin) >>  0) & 0xffff)

#define	IOMUX_PIN(mux_adr, pad_adr)			\
	(((mux_adr) << 16) | (((pad_adr) << 0)))
#define	IOMUX_MUX_NONE	0xffff
#define	IOMUX_PAD_NONE	0xffff

/* EPIT */
#define	EPIT1_BASE	(AIPSTZ1_BASE + 0x03FAC000)
#define	EPIT2_BASE	(AIPSTZ1_BASE + 0x03FB0000)
/* register definitions in imxepitreg.h */

#define	PWM1_BASE	(AIPSTZ1_BASE + 0x03fb4000)
#define	PWM2_BASE	(AIPSTZ1_BASE + 0x03fb8000)
#define	PWM_SIZE	0x4000

#define	SRC_BASE	(AIPSTZ1_BASE + 0x03fd0000)
#define	SRC_SIZE	0x4000

#define	CCM_BASE	(AIPSTZ1_BASE + 0x03fd4000)
#define	CCM_SIZE	0x4000

#define	GPC_BASE	(AIPSTZ1_BASE + 0x03fd8000)
#define	GPC_SIZE	0x4000

#define	AHBMAX_BASE	(AIPSTZ2_BASE + 0x03f94000)
#define	AHBMAX_SIZE	0x4000

#define	IIM_BASE	(AIPSTZ2_BASE + 0x03f98000)
#define	IIM_SIZE	0x4000

#define	CSU_BASE	(AIPSTZ2_BASE + 0x03f9c000)
#define	CSU_SIZE	0x4000

#define	OWIRE_BASE	(AIPSTZ2_BASE + 0x03fa4000)
#define	OWIRE_SIZE	0x4000

#define	FIRI_BASE	(AIPSTZ2_BASE + 0x03fa8000)
#define	FIRI_SIZE	0x4000


#define	SDMA_BASE	(AIPSTZ2_BASE + 0x03fb0000)
#define	SDMA_SIZE	0x4000
/* see imxsdmareg.h for register definitions */

#define	SCC_BASE	(AIPSTZ2_BASE + 0x03fb4000)
#define	SCC_SIZE	0x4000

#define	ROMCP_BASE	(AIPSTZ2_BASE + 0x03fb8000)
#define	ROMCP_SIZE	0x4000

#define	RTIC_BASE	(AIPSTZ2_BASE + 0x03fbc000)
#define	RTIC_SIZE	0x4000

#define	CSPI_BASE	(AIPSTZ2_BASE + 0x03fc0000)
#define	CSPI_SIZE	0x4000

#define	I2C1_BASE	(AIPSTZ2_BASE + 0x03fc8000)
#define	I2C2_BASE	(AIPSTZ2_BASE + 0x03fc4000)
#define	I2C_SIZE	0x4000

#define	AUDMUX_BASE	(AIPSTZ2_BASE + 0x03fd0000)
#define	AUDMUX_SIZE	0x4000
#define	AUDMUX_PTCR(n)	((n - 1) * 0x8)
#define	 PTCR_TFSDIR	(1 << 31)
#define	 PTCR_TFSEL(x)	(((x) & 0x7) << 27)
#define	 PTCR_TCLKDIR	(1 << 26)
#define	 PTCR_TCSEL(x)	(((x) & 0x7) << 22)
#define	 PTCR_RFSDIR	(1 << 21)
#define	 PTCR_RFSEL(x)	(((x) & 0x7) << 17)
#define	 PTCR_RCLKDIR	(1 << 16)
#define	 PTCR_RCSEL(x)	(((x) & 0x7) << 12)
#define	 PTCR_SYN	(1 << 11)

#define	AUDMUX_PDCR(n)	((n - 1) * 0x8 + 0x4)
#define	 PDCR_RXDSEL(x)	(((x) & 0x7) << 13)
#define	 PDCR_TXRXEN	(1 << 12)
#define	 PDCR_MODE(x)	(((x) & 0x3) << 8)
#define	 PDCR_INMMASK(x)	(((x) & 0xff) << 0)
#define	AUDMUX_CNMCR	0x38

#define	EMI_BASE	(AIPSTZ2_BASE + 0x03fd8000)
#define	EMI_SIZE	0x4000

#define	SIM_BASE	(AIPSTZ2_BASE + 0x03fe4000)
#define	SIM_SIZE	0x4000

#define	FEC_BASE	(AIPSTZ2_BASE + 0x03fec000)
#define	FEC_SIZE	0x4000
#define	TVE_BASE	(AIPSTZ2_BASE + 0x03ff0000)
#define	TVE_SIZE	0x4000
#define	VPU_BASE	(AIPSTZ2_BASE + 0x03ff4000)
#define	VPU_SIZE	0x4000
#define	SAHARA_BASE	(AIPSTZ2_BASE + 0x03ff8000)
#define	SAHARA_SIZE	0x4000

#define	DPLL_BASE(n)	((AIPSTZ2_BASE + 0x03F80000 + (0x4000 * ((n)-1))))
#define	DPLL_SIZE	0x4000

#endif /* _ARM_IMX_IMX51REG_H_ */