summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/include/mach/imx21-regs.h
blob: 1fa463a256e6284a48b99e0cd36226479bdc66ed (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
#ifndef _IMX21_REGS_H
#define _IMX21_REGS_H

#define MX21_AIPI_BASE_ADDR		0x10000000
#define MX21_AIPI_SIZE			SZ_1M
#define MX21_DMA_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x01000)
#define MX21_WDOG_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x02000)
#define MX21_GPT1_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x03000)
#define MX21_GPT2_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x04000)
#define MX21_GPT3_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x05000)
#define MX21_PWM_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x06000)
#define MX21_RTC_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x07000)
#define MX21_KPP_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x08000)
#define MX21_OWIRE_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x09000)
#define MX21_UART1_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0a000)
#define MX21_UART2_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0b000)
#define MX21_UART3_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0c000)
#define MX21_UART4_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0d000)
#define MX21_CSPI1_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0e000)
#define MX21_CSPI2_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x0f000)
#define MX21_SSI1_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x10000)
#define MX21_SSI2_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x11000)
#define MX21_I2C_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x12000)
#define MX21_SDHC1_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x13000)
#define MX21_SDHC2_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x14000)
#define MX21_GPIO_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x15000)
#define MX21_GPIO1_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x000)
#define MX21_GPIO2_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x100)
#define MX21_GPIO3_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x200)
#define MX21_GPIO4_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x300)
#define MX21_GPIO5_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x400)
#define MX21_GPIO6_BASE_ADDR			(MX21_GPIO_BASE_ADDR + 0x500)
#define MX21_AUDMUX_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x16000)
#define MX21_CSPI3_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x17000)
#define MX21_LCDC_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x21000)
#define MX21_SLCDC_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x22000)
#define MX21_USBOTG_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x24000)
#define MX21_EMMA_PP_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x26000)
#define MX21_EMMA_PRP_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x26400)
#define MX21_CCM_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x27000)
#define MX21_SYSCTRL_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x27800)
#define MX21_JAM_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x3e000)
#define MX21_MAX_BASE_ADDR			(MX21_AIPI_BASE_ADDR + 0x3f000)

#define MX21_AVIC_BASE_ADDR		0x10040000

#define MX21_SAHB1_BASE_ADDR		0x80000000
#define MX21_SAHB1_SIZE			SZ_1M
#define MX21_CSI_BASE_ADDR			(MX2x_SAHB1_BASE_ADDR + 0x0000)

/* Memory regions and CS */
#define MX21_SDRAM_BASE_ADDR		0xc0000000
#define MX21_CSD1_BASE_ADDR		0xc4000000

#define MX21_CS0_BASE_ADDR		0xc8000000
#define MX21_CS1_BASE_ADDR		0xcc000000
#define MX21_CS2_BASE_ADDR		0xd0000000
#define MX21_CS3_BASE_ADDR		0xd1000000
#define MX21_CS4_BASE_ADDR		0xd2000000
#define MX21_PCMCIA_MEM_BASE_ADDR	0xd4000000
#define MX21_CS5_BASE_ADDR		0xdd000000

/* NAND, SDRAM, WEIM etc controllers */
#define MX21_X_MEMC_BASE_ADDR		0xdf000000
#define MX21_X_MEMC_SIZE		SZ_256K

#define MX21_SDRAMC_BASE_ADDR		(MX21_X_MEMC_BASE_ADDR + 0x0000)
#define MX21_EIM_BASE_ADDR		(MX21_X_MEMC_BASE_ADDR + 0x1000)
#define MX21_PCMCIA_CTL_BASE_ADDR	(MX21_X_MEMC_BASE_ADDR + 0x2000)
#define MX21_NFC_BASE_ADDR		(MX21_X_MEMC_BASE_ADDR + 0x3000)

#define MX21_IRAM_BASE_ADDR		0xffffe800	/* internal ram */
#define MX21_IRAM_SIZE			0x00001800

/* AIPI (base MX21_AIPI_BASE_ADDR) */
#define MX21_AIPI1_PSR0	0x00
#define MX21_AIPI1_PSR1	0x04
#define MX21_AIPI2_PSR0	(0x20000 + 0x00)
#define MX21_AIPI2_PSR1	(0x20000 + 0x04)

/* System Control (base: MX21_SYSCTRL_BASE_ADDR) */
#define MX21_SUID0	0x4	/* Silicon ID Register (12 bytes) */
#define MX21_SUID1	0x8	/* Silicon ID Register (12 bytes) */
#define MX21_CID	0xC	/* Silicon ID Register (12 bytes) */
#define MX21_FMCR	0x14	/* Function Multeplexing Control Register */
#define MX21_GPCR	0x18	/* Global Peripheral Control Register */
#define MX21_WBCR	0x1C	/* Well Bias Control Register */
#define MX21_DSCR(x)	0x1C + ((x) << 2)	/* Driving Strength Control Register 1 - 13 */

#define MX21_GPCR_BOOT_SHIFT		16
#define MX21_GPCR_BOOT_MASK		(0xf << GPCR_BOOT_SHIFT)
#define MX21_GPCR_BOOT_UART_USB		0
#define MX21_GPCR_BOOT_8BIT_NAND_2k	2
#define MX21_GPCR_BOOT_16BIT_NAND_2k	3
#define MX21_GPCR_BOOT_16BIT_NAND_512	4
#define MX21_GPCR_BOOT_16BIT_CS0	5
#define MX21_GPCR_BOOT_32BIT_CS0	6
#define MX21_GPCR_BOOT_8BIT_NAND_512	7

/* SDRAM Controller registers bitfields (base: MX21_X_MEMC_BASE_ADDR) */
#define MX21_SDCTL0 0x00 /* SDRAM 0 Control Register */
#define MX21_SDCTL1 0x04 /* SDRAM 0 Control Register */
#define MX21_SDRST  0x18 /* SDRAM Reset Register */
#define MX21_SDMISC 0x14 /* SDRAM Miscellaneous Register */

/* PLL registers (base: MX21_CCM_BASE_ADDR) */
#define MX21_CSCR		0x00 /* Clock Source Control Register       */
#define MX21_MPCTL0		0x04 /* MCU PLL Control Register 0          */
#define MX21_MPCTL1		0x08 /* MCU PLL Control Register 1          */
#define MX21_SPCTL0		0x0c /* System PLL Control Register 0       */
#define MX21_SPCTL1		0x10 /* System PLL Control Register 1       */
#define MX21_OSC26MCTL		0x14 /* Oscillator 26M Register             */
#define MX21_PCDR0		0x18 /* Peripheral Clock Divider Register 0 */
#define MX21_PCDR1		0x1c /* Peripheral Clock Divider Register 1 */
#define MX21_PCCR0		0x20 /* Peripheral Clock Control Register 0 */
#define MX21_PCCR1		0x24 /* Peripheral Clock Control Register 1 */
#define MX21_CCSR		0x28 /* Clock Control Status Register       */

#define MX21_CSCR_MPEN		(1 << 0)
#define MX21_CSCR_SPEN		(1 << 1)
#define MX21_CSCR_FPM_EN	(1 << 2)
#define MX21_CSCR_OSC26M_DIS	(1 << 3)
#define MX21_CSCR_OSC26M_DIV1P5	(1 << 4)
#define MX21_CSCR_MCU_SEL	(1 << 16)
#define MX21_CSCR_SP_SEL	(1 << 17)
#define MX21_CSCR_SD_CNT(d)	(((d) & 0x3) << 24)
#define MX21_CSCR_USB_DIV(d)	(((d) & 0x7) << 26)
#define MX21_CSCR_PRESC(d)	(((d) & 0x7) << 29)

#define MX21_MPCTL1_BRMO	(1 << 6)
#define MX21_MPCTL1_LF		(1 << 15)

#define MX21_CCSR_32K_SR	(1 << 15)

#endif /* _IMX21_REGS_H */