diff options
Diffstat (limited to 'arch/arm/plat-mxc')
61 files changed, 1098 insertions, 2114 deletions
diff --git a/arch/arm/plat-mxc/3ds_debugboard.c b/arch/arm/plat-mxc/3ds_debugboard.c new file mode 100644 index 000000000000..639c54a07992 --- /dev/null +++ b/arch/arm/plat-mxc/3ds_debugboard.c | |||
@@ -0,0 +1,202 @@ | |||
1 | /* | ||
2 | * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | * Copyright (C) 2010 Jason Wang <jason77.wang@gmail.com> | ||
4 | * | ||
5 | * The code contained herein is licensed under the GNU General Public | ||
6 | * License. You may obtain a copy of the GNU General Public License | ||
7 | * Version 2 or later at the following locations: | ||
8 | * | ||
9 | * http://www.opensource.org/licenses/gpl-license.html | ||
10 | * http://www.gnu.org/copyleft/gpl.html | ||
11 | */ | ||
12 | |||
13 | #include <linux/interrupt.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/gpio.h> | ||
18 | #include <linux/smsc911x.h> | ||
19 | |||
20 | #include <mach/hardware.h> | ||
21 | |||
22 | /* LAN9217 ethernet base address */ | ||
23 | #define LAN9217_BASE_ADDR(n) (n + 0x0) | ||
24 | /* External UART */ | ||
25 | #define UARTA_BASE_ADDR(n) (n + 0x8000) | ||
26 | #define UARTB_BASE_ADDR(n) (n + 0x10000) | ||
27 | |||
28 | #define BOARD_IO_ADDR(n) (n + 0x20000) | ||
29 | /* LED switchs */ | ||
30 | #define LED_SWITCH_REG 0x00 | ||
31 | /* buttons */ | ||
32 | #define SWITCH_BUTTONS_REG 0x08 | ||
33 | /* status, interrupt */ | ||
34 | #define INTR_STATUS_REG 0x10 | ||
35 | #define INTR_MASK_REG 0x38 | ||
36 | #define INTR_RESET_REG 0x20 | ||
37 | /* magic word for debug CPLD */ | ||
38 | #define MAGIC_NUMBER1_REG 0x40 | ||
39 | #define MAGIC_NUMBER2_REG 0x48 | ||
40 | /* CPLD code version */ | ||
41 | #define CPLD_CODE_VER_REG 0x50 | ||
42 | /* magic word for debug CPLD */ | ||
43 | #define MAGIC_NUMBER3_REG 0x58 | ||
44 | /* module reset register*/ | ||
45 | #define MODULE_RESET_REG 0x60 | ||
46 | /* CPU ID and Personality ID */ | ||
47 | #define MCU_BOARD_ID_REG 0x68 | ||
48 | |||
49 | #define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_BOARD_IRQ_START) | ||
50 | #define MXC_IRQ_TO_GPIO(irq) ((irq) - MXC_INTERNAL_IRQS) | ||
51 | |||
52 | #define MXC_EXP_IO_BASE (MXC_BOARD_IRQ_START) | ||
53 | #define MXC_MAX_EXP_IO_LINES 16 | ||
54 | |||
55 | /* interrupts like external uart , external ethernet etc*/ | ||
56 | #define EXPIO_INT_ENET (MXC_BOARD_IRQ_START + 0) | ||
57 | #define EXPIO_INT_XUART_A (MXC_BOARD_IRQ_START + 1) | ||
58 | #define EXPIO_INT_XUART_B (MXC_BOARD_IRQ_START + 2) | ||
59 | #define EXPIO_INT_BUTTON_A (MXC_BOARD_IRQ_START + 3) | ||
60 | #define EXPIO_INT_BUTTON_B (MXC_BOARD_IRQ_START + 4) | ||
61 | |||
62 | static void __iomem *brd_io; | ||
63 | static void expio_ack_irq(u32 irq); | ||
64 | |||
65 | static struct resource smsc911x_resources[] = { | ||
66 | { | ||
67 | .flags = IORESOURCE_MEM, | ||
68 | } , { | ||
69 | .start = EXPIO_INT_ENET, | ||
70 | .end = EXPIO_INT_ENET, | ||
71 | .flags = IORESOURCE_IRQ, | ||
72 | }, | ||
73 | }; | ||
74 | |||
75 | static struct smsc911x_platform_config smsc911x_config = { | ||
76 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, | ||
77 | .flags = SMSC911X_USE_32BIT | SMSC911X_FORCE_INTERNAL_PHY, | ||
78 | }; | ||
79 | |||
80 | static struct platform_device smsc_lan9217_device = { | ||
81 | .name = "smsc911x", | ||
82 | .id = 0, | ||
83 | .dev = { | ||
84 | .platform_data = &smsc911x_config, | ||
85 | }, | ||
86 | .num_resources = ARRAY_SIZE(smsc911x_resources), | ||
87 | .resource = smsc911x_resources, | ||
88 | }; | ||
89 | |||
90 | static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc) | ||
91 | { | ||
92 | u32 imr_val; | ||
93 | u32 int_valid; | ||
94 | u32 expio_irq; | ||
95 | |||
96 | desc->chip->mask(irq); /* irq = gpio irq number */ | ||
97 | |||
98 | imr_val = __raw_readw(brd_io + INTR_MASK_REG); | ||
99 | int_valid = __raw_readw(brd_io + INTR_STATUS_REG) & ~imr_val; | ||
100 | |||
101 | expio_irq = MXC_BOARD_IRQ_START; | ||
102 | for (; int_valid != 0; int_valid >>= 1, expio_irq++) { | ||
103 | struct irq_desc *d; | ||
104 | if ((int_valid & 1) == 0) | ||
105 | continue; | ||
106 | d = irq_desc + expio_irq; | ||
107 | if (unlikely(!(d->handle_irq))) | ||
108 | pr_err("\nEXPIO irq: %d unhandled\n", expio_irq); | ||
109 | else | ||
110 | d->handle_irq(expio_irq, d); | ||
111 | } | ||
112 | |||
113 | desc->chip->ack(irq); | ||
114 | desc->chip->unmask(irq); | ||
115 | } | ||
116 | |||
117 | /* | ||
118 | * Disable an expio pin's interrupt by setting the bit in the imr. | ||
119 | * Irq is an expio virtual irq number | ||
120 | */ | ||
121 | static void expio_mask_irq(u32 irq) | ||
122 | { | ||
123 | u16 reg; | ||
124 | u32 expio = MXC_IRQ_TO_EXPIO(irq); | ||
125 | |||
126 | reg = __raw_readw(brd_io + INTR_MASK_REG); | ||
127 | reg |= (1 << expio); | ||
128 | __raw_writew(reg, brd_io + INTR_MASK_REG); | ||
129 | } | ||
130 | |||
131 | static void expio_ack_irq(u32 irq) | ||
132 | { | ||
133 | u32 expio = MXC_IRQ_TO_EXPIO(irq); | ||
134 | |||
135 | __raw_writew(1 << expio, brd_io + INTR_RESET_REG); | ||
136 | __raw_writew(0, brd_io + INTR_RESET_REG); | ||
137 | expio_mask_irq(irq); | ||
138 | } | ||
139 | |||
140 | static void expio_unmask_irq(u32 irq) | ||
141 | { | ||
142 | u16 reg; | ||
143 | u32 expio = MXC_IRQ_TO_EXPIO(irq); | ||
144 | |||
145 | reg = __raw_readw(brd_io + INTR_MASK_REG); | ||
146 | reg &= ~(1 << expio); | ||
147 | __raw_writew(reg, brd_io + INTR_MASK_REG); | ||
148 | } | ||
149 | |||
150 | static struct irq_chip expio_irq_chip = { | ||
151 | .ack = expio_ack_irq, | ||
152 | .mask = expio_mask_irq, | ||
153 | .unmask = expio_unmask_irq, | ||
154 | }; | ||
155 | |||
156 | int __init mxc_expio_init(u32 base, u32 p_irq) | ||
157 | { | ||
158 | int i; | ||
159 | |||
160 | brd_io = ioremap(BOARD_IO_ADDR(base), SZ_4K); | ||
161 | if (brd_io == NULL) | ||
162 | return -ENOMEM; | ||
163 | |||
164 | if ((__raw_readw(brd_io + MAGIC_NUMBER1_REG) != 0xAAAA) || | ||
165 | (__raw_readw(brd_io + MAGIC_NUMBER2_REG) != 0x5555) || | ||
166 | (__raw_readw(brd_io + MAGIC_NUMBER3_REG) != 0xCAFE)) { | ||
167 | pr_info("3-Stack Debug board not detected\n"); | ||
168 | iounmap(brd_io); | ||
169 | brd_io = NULL; | ||
170 | return -ENODEV; | ||
171 | } | ||
172 | |||
173 | pr_info("3-Stack Debug board detected, rev = 0x%04X\n", | ||
174 | readw(brd_io + CPLD_CODE_VER_REG)); | ||
175 | |||
176 | /* | ||
177 | * Configure INT line as GPIO input | ||
178 | */ | ||
179 | gpio_request(MXC_IRQ_TO_GPIO(p_irq), "expio_pirq"); | ||
180 | gpio_direction_input(MXC_IRQ_TO_GPIO(p_irq)); | ||
181 | |||
182 | /* disable the interrupt and clear the status */ | ||
183 | __raw_writew(0, brd_io + INTR_MASK_REG); | ||
184 | __raw_writew(0xFFFF, brd_io + INTR_RESET_REG); | ||
185 | __raw_writew(0, brd_io + INTR_RESET_REG); | ||
186 | __raw_writew(0x1F, brd_io + INTR_MASK_REG); | ||
187 | for (i = MXC_EXP_IO_BASE; | ||
188 | i < (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES); i++) { | ||
189 | set_irq_chip(i, &expio_irq_chip); | ||
190 | set_irq_handler(i, handle_level_irq); | ||
191 | set_irq_flags(i, IRQF_VALID); | ||
192 | } | ||
193 | set_irq_type(p_irq, IRQF_TRIGGER_LOW); | ||
194 | set_irq_chained_handler(p_irq, mxc_expio_irq_handler); | ||
195 | |||
196 | /* Register Lan device on the debugboard */ | ||
197 | smsc911x_resources[0].start = LAN9217_BASE_ADDR(base); | ||
198 | smsc911x_resources[0].end = LAN9217_BASE_ADDR(base) + 0x100 - 1; | ||
199 | platform_device_register(&smsc_lan9217_device); | ||
200 | |||
201 | return 0; | ||
202 | } | ||
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index 7f7ad6f289bd..0527e65318f4 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig | |||
@@ -1,5 +1,7 @@ | |||
1 | if ARCH_MXC | 1 | if ARCH_MXC |
2 | 2 | ||
3 | source "arch/arm/plat-mxc/devices/Kconfig" | ||
4 | |||
3 | menu "Freescale MXC Implementations" | 5 | menu "Freescale MXC Implementations" |
4 | 6 | ||
5 | choice | 7 | choice |
@@ -8,15 +10,12 @@ choice | |||
8 | 10 | ||
9 | config ARCH_MX1 | 11 | config ARCH_MX1 |
10 | bool "MX1-based" | 12 | bool "MX1-based" |
11 | select CPU_ARM920T | 13 | select SOC_IMX1 |
12 | select IMX_HAVE_IOMUX_V1 | ||
13 | help | 14 | help |
14 | This enables support for systems based on the Freescale i.MX1 family | 15 | This enables support for systems based on the Freescale i.MX1 family |
15 | 16 | ||
16 | config ARCH_MX2 | 17 | config ARCH_MX2 |
17 | bool "MX2-based" | 18 | bool "MX2-based" |
18 | select CPU_ARM926T | ||
19 | select IMX_HAVE_IOMUX_V1 | ||
20 | help | 19 | help |
21 | This enables support for systems based on the Freescale i.MX2 family | 20 | This enables support for systems based on the Freescale i.MX2 family |
22 | 21 | ||
@@ -25,6 +24,7 @@ config ARCH_MX25 | |||
25 | select CPU_ARM926T | 24 | select CPU_ARM926T |
26 | select ARCH_MXC_IOMUX_V3 | 25 | select ARCH_MXC_IOMUX_V3 |
27 | select HAVE_FB_IMX | 26 | select HAVE_FB_IMX |
27 | select ARCH_MXC_AUDMUX_V2 | ||
28 | help | 28 | help |
29 | This enables support for systems based on the Freescale i.MX25 family | 29 | This enables support for systems based on the Freescale i.MX25 family |
30 | 30 | ||
@@ -48,8 +48,7 @@ config ARCH_MX5 | |||
48 | 48 | ||
49 | endchoice | 49 | endchoice |
50 | 50 | ||
51 | source "arch/arm/mach-mx1/Kconfig" | 51 | source "arch/arm/mach-imx/Kconfig" |
52 | source "arch/arm/mach-mx2/Kconfig" | ||
53 | source "arch/arm/mach-mx3/Kconfig" | 52 | source "arch/arm/mach-mx3/Kconfig" |
54 | source "arch/arm/mach-mx25/Kconfig" | 53 | source "arch/arm/mach-mx25/Kconfig" |
55 | source "arch/arm/mach-mxc91231/Kconfig" | 54 | source "arch/arm/mach-mxc91231/Kconfig" |
@@ -81,6 +80,17 @@ config MXC_PWM | |||
81 | help | 80 | help |
82 | Enable support for the i.MX PWM controller(s). | 81 | Enable support for the i.MX PWM controller(s). |
83 | 82 | ||
83 | config MXC_DEBUG_BOARD | ||
84 | bool "Enable MXC debug board(for 3-stack)" | ||
85 | help | ||
86 | The debug board is an integral part of the MXC 3-stack(PDK) | ||
87 | platforms, it can be attached or removed from the peripheral | ||
88 | board. On debug board, several debug devices(ethernet, UART, | ||
89 | buttons, LEDs and JTAG) are implemented. Between the MCU and | ||
90 | these devices, a CPLD is added as a bridge which performs | ||
91 | data/address de-multiplexing and decode, signal level shift, | ||
92 | interrupt control and various board functions. | ||
93 | |||
84 | config MXC_ULPI | 94 | config MXC_ULPI |
85 | bool | 95 | bool |
86 | 96 | ||
diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile index 895bc3c5e0c0..78d405ed8616 100644 --- a/arch/arm/plat-mxc/Makefile +++ b/arch/arm/plat-mxc/Makefile | |||
@@ -8,8 +8,6 @@ obj-y := irq.o clock.o gpio.o time.o devices.o cpu.o system.o | |||
8 | # MX51 uses the TZIC interrupt controller, older platforms use AVIC (irq.o) | 8 | # MX51 uses the TZIC interrupt controller, older platforms use AVIC (irq.o) |
9 | obj-$(CONFIG_MXC_TZIC) += tzic.o | 9 | obj-$(CONFIG_MXC_TZIC) += tzic.o |
10 | 10 | ||
11 | obj-$(CONFIG_ARCH_MX1) += dma-mx1-mx2.o | ||
12 | obj-$(CONFIG_ARCH_MX2) += dma-mx1-mx2.o | ||
13 | obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o | 11 | obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o |
14 | obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o | 12 | obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o |
15 | obj-$(CONFIG_MXC_PWM) += pwm.o | 13 | obj-$(CONFIG_MXC_PWM) += pwm.o |
@@ -17,7 +15,10 @@ obj-$(CONFIG_USB_EHCI_MXC) += ehci.o | |||
17 | obj-$(CONFIG_MXC_ULPI) += ulpi.o | 15 | obj-$(CONFIG_MXC_ULPI) += ulpi.o |
18 | obj-$(CONFIG_ARCH_MXC_AUDMUX_V1) += audmux-v1.o | 16 | obj-$(CONFIG_ARCH_MXC_AUDMUX_V1) += audmux-v1.o |
19 | obj-$(CONFIG_ARCH_MXC_AUDMUX_V2) += audmux-v2.o | 17 | obj-$(CONFIG_ARCH_MXC_AUDMUX_V2) += audmux-v2.o |
18 | obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o | ||
20 | ifdef CONFIG_SND_IMX_SOC | 19 | ifdef CONFIG_SND_IMX_SOC |
21 | obj-y += ssi-fiq.o | 20 | obj-y += ssi-fiq.o |
22 | obj-y += ssi-fiq-ksym.o | 21 | obj-y += ssi-fiq-ksym.o |
23 | endif | 22 | endif |
23 | |||
24 | obj-y += devices/ | ||
diff --git a/arch/arm/plat-mxc/audmux-v1.c b/arch/arm/plat-mxc/audmux-v1.c index b62917ca3f95..1180bef7664b 100644 --- a/arch/arm/plat-mxc/audmux-v1.c +++ b/arch/arm/plat-mxc/audmux-v1.c | |||
@@ -13,10 +13,6 @@ | |||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | 16 | */ |
21 | 17 | ||
22 | #include <linux/module.h> | 18 | #include <linux/module.h> |
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c index 0c2cc5cd4d83..f9e7cdbd0005 100644 --- a/arch/arm/plat-mxc/audmux-v2.c +++ b/arch/arm/plat-mxc/audmux-v2.c | |||
@@ -13,10 +13,6 @@ | |||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | 16 | */ |
21 | 17 | ||
22 | #include <linux/module.h> | 18 | #include <linux/module.h> |
@@ -191,6 +187,7 @@ static int mxc_audmux_v2_init(void) | |||
191 | { | 187 | { |
192 | int ret; | 188 | int ret; |
193 | 189 | ||
190 | #if defined(CONFIG_ARCH_MX3) | ||
194 | if (cpu_is_mx31()) | 191 | if (cpu_is_mx31()) |
195 | audmux_base = MX31_IO_ADDRESS(MX31_AUDMUX_BASE_ADDR); | 192 | audmux_base = MX31_IO_ADDRESS(MX31_AUDMUX_BASE_ADDR); |
196 | 193 | ||
@@ -204,7 +201,19 @@ static int mxc_audmux_v2_init(void) | |||
204 | } | 201 | } |
205 | audmux_base = MX35_IO_ADDRESS(MX35_AUDMUX_BASE_ADDR); | 202 | audmux_base = MX35_IO_ADDRESS(MX35_AUDMUX_BASE_ADDR); |
206 | } | 203 | } |
207 | 204 | #endif | |
205 | #if defined(CONFIG_ARCH_MX25) | ||
206 | if (cpu_is_mx25()) { | ||
207 | audmux_clk = clk_get(NULL, "audmux"); | ||
208 | if (IS_ERR(audmux_clk)) { | ||
209 | ret = PTR_ERR(audmux_clk); | ||
210 | printk(KERN_ERR "%s: cannot get clock: %d\n", __func__, | ||
211 | ret); | ||
212 | return ret; | ||
213 | } | ||
214 | audmux_base = MX25_IO_ADDRESS(MX25_AUDMUX_BASE_ADDR); | ||
215 | } | ||
216 | #endif | ||
208 | audmux_debugfs_init(); | 217 | audmux_debugfs_init(); |
209 | 218 | ||
210 | return 0; | 219 | return 0; |
diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c index 323ff8ccc877..2ed3ab173add 100644 --- a/arch/arm/plat-mxc/clock.c +++ b/arch/arm/plat-mxc/clock.c | |||
@@ -52,13 +52,14 @@ static void __clk_disable(struct clk *clk) | |||
52 | { | 52 | { |
53 | if (clk == NULL || IS_ERR(clk)) | 53 | if (clk == NULL || IS_ERR(clk)) |
54 | return; | 54 | return; |
55 | |||
56 | __clk_disable(clk->parent); | ||
57 | __clk_disable(clk->secondary); | ||
58 | |||
59 | WARN_ON(!clk->usecount); | 55 | WARN_ON(!clk->usecount); |
60 | if (!(--clk->usecount) && clk->disable) | 56 | |
61 | clk->disable(clk); | 57 | if (!(--clk->usecount)) { |
58 | if (clk->disable) | ||
59 | clk->disable(clk); | ||
60 | __clk_disable(clk->parent); | ||
61 | __clk_disable(clk->secondary); | ||
62 | } | ||
62 | } | 63 | } |
63 | 64 | ||
64 | static int __clk_enable(struct clk *clk) | 65 | static int __clk_enable(struct clk *clk) |
@@ -66,12 +67,13 @@ static int __clk_enable(struct clk *clk) | |||
66 | if (clk == NULL || IS_ERR(clk)) | 67 | if (clk == NULL || IS_ERR(clk)) |
67 | return -EINVAL; | 68 | return -EINVAL; |
68 | 69 | ||
69 | __clk_enable(clk->parent); | 70 | if (clk->usecount++ == 0) { |
70 | __clk_enable(clk->secondary); | 71 | __clk_enable(clk->parent); |
71 | 72 | __clk_enable(clk->secondary); | |
72 | if (clk->usecount++ == 0 && clk->enable) | ||
73 | clk->enable(clk); | ||
74 | 73 | ||
74 | if (clk->enable) | ||
75 | clk->enable(clk); | ||
76 | } | ||
75 | return 0; | 77 | return 0; |
76 | } | 78 | } |
77 | 79 | ||
@@ -160,17 +162,28 @@ EXPORT_SYMBOL(clk_set_rate); | |||
160 | int clk_set_parent(struct clk *clk, struct clk *parent) | 162 | int clk_set_parent(struct clk *clk, struct clk *parent) |
161 | { | 163 | { |
162 | int ret = -EINVAL; | 164 | int ret = -EINVAL; |
165 | struct clk *old; | ||
163 | 166 | ||
164 | if (clk == NULL || IS_ERR(clk) || parent == NULL || | 167 | if (clk == NULL || IS_ERR(clk) || parent == NULL || |
165 | IS_ERR(parent) || clk->set_parent == NULL) | 168 | IS_ERR(parent) || clk->set_parent == NULL) |
166 | return ret; | 169 | return ret; |
167 | 170 | ||
171 | if (clk->usecount) | ||
172 | clk_enable(parent); | ||
173 | |||
168 | mutex_lock(&clocks_mutex); | 174 | mutex_lock(&clocks_mutex); |
169 | ret = clk->set_parent(clk, parent); | 175 | ret = clk->set_parent(clk, parent); |
170 | if (ret == 0) | 176 | if (ret == 0) { |
177 | old = clk->parent; | ||
171 | clk->parent = parent; | 178 | clk->parent = parent; |
179 | } else { | ||
180 | old = parent; | ||
181 | } | ||
172 | mutex_unlock(&clocks_mutex); | 182 | mutex_unlock(&clocks_mutex); |
173 | 183 | ||
184 | if (clk->usecount) | ||
185 | clk_disable(old); | ||
186 | |||
174 | return ret; | 187 | return ret; |
175 | } | 188 | } |
176 | EXPORT_SYMBOL(clk_set_parent); | 189 | EXPORT_SYMBOL(clk_set_parent); |
diff --git a/arch/arm/plat-mxc/devices.c b/arch/arm/plat-mxc/devices.c index 56f2fb5cc456..735776d84956 100644 --- a/arch/arm/plat-mxc/devices.c +++ b/arch/arm/plat-mxc/devices.c | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/err.h> | ||
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
22 | #include <mach/common.h> | 23 | #include <mach/common.h> |
23 | 24 | ||
@@ -35,3 +36,35 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) | |||
35 | return ret; | 36 | return ret; |
36 | } | 37 | } |
37 | 38 | ||
39 | struct platform_device *__init imx_add_platform_device(const char *name, int id, | ||
40 | const struct resource *res, unsigned int num_resources, | ||
41 | const void *data, size_t size_data) | ||
42 | { | ||
43 | int ret = -ENOMEM; | ||
44 | struct platform_device *pdev; | ||
45 | |||
46 | pdev = platform_device_alloc(name, id); | ||
47 | if (!pdev) | ||
48 | goto err; | ||
49 | |||
50 | if (res) { | ||
51 | ret = platform_device_add_resources(pdev, res, num_resources); | ||
52 | if (ret) | ||
53 | goto err; | ||
54 | } | ||
55 | |||
56 | if (data) { | ||
57 | ret = platform_device_add_data(pdev, data, size_data); | ||
58 | if (ret) | ||
59 | goto err; | ||
60 | } | ||
61 | |||
62 | ret = platform_device_add(pdev); | ||
63 | if (ret) { | ||
64 | err: | ||
65 | platform_device_put(pdev); | ||
66 | return ERR_PTR(ret); | ||
67 | } | ||
68 | |||
69 | return pdev; | ||
70 | } | ||
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig new file mode 100644 index 000000000000..9ab784b776f9 --- /dev/null +++ b/arch/arm/plat-mxc/devices/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | config IMX_HAVE_PLATFORM_FLEXCAN | ||
2 | select HAVE_CAN_FLEXCAN | ||
3 | bool | ||
4 | |||
5 | config IMX_HAVE_PLATFORM_IMX_I2C | ||
6 | bool | ||
7 | |||
8 | config IMX_HAVE_PLATFORM_IMX_UART | ||
9 | bool | ||
10 | |||
11 | config IMX_HAVE_PLATFORM_MXC_NAND | ||
12 | bool | ||
13 | |||
14 | config IMX_HAVE_PLATFORM_SPI_IMX | ||
15 | bool | ||
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile new file mode 100644 index 000000000000..347da5161f7e --- /dev/null +++ b/arch/arm/plat-mxc/devices/Makefile | |||
@@ -0,0 +1,8 @@ | |||
1 | ifdef CONFIG_CAN_FLEXCAN | ||
2 | # the ifdef can be removed once the flexcan driver has been merged | ||
3 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o | ||
4 | endif | ||
5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o | ||
6 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o | ||
7 | obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o | ||
8 | obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o | ||
diff --git a/arch/arm/plat-mxc/devices/platform-flexcan.c b/arch/arm/plat-mxc/devices/platform-flexcan.c new file mode 100644 index 000000000000..5e97a01f14f3 --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-flexcan.c | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Pengutronix, Marc Kleine-Budde <kernel@pengutronix.de> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it under | ||
5 | * the terms of the GNU General Public License version 2 as published by the | ||
6 | * Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <mach/devices-common.h> | ||
10 | |||
11 | struct platform_device *__init imx_add_flexcan(int id, | ||
12 | resource_size_t iobase, resource_size_t iosize, | ||
13 | resource_size_t irq, | ||
14 | const struct flexcan_platform_data *pdata) | ||
15 | { | ||
16 | struct resource res[] = { | ||
17 | { | ||
18 | .start = iobase, | ||
19 | .end = iobase + iosize - 1, | ||
20 | .flags = IORESOURCE_MEM, | ||
21 | }, { | ||
22 | .start = irq, | ||
23 | .end = irq, | ||
24 | .flags = IORESOURCE_IRQ, | ||
25 | }, | ||
26 | }; | ||
27 | |||
28 | return imx_add_platform_device("flexcan", id, res, ARRAY_SIZE(res), | ||
29 | pdata, sizeof(*pdata)); | ||
30 | } | ||
diff --git a/arch/arm/plat-mxc/devices/platform-imx-i2c.c b/arch/arm/plat-mxc/devices/platform-imx-i2c.c new file mode 100644 index 000000000000..d0af9f7d8aed --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imx-i2c.c | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009-2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <mach/devices-common.h> | ||
10 | |||
11 | struct platform_device *__init imx_add_imx_i2c(int id, | ||
12 | resource_size_t iobase, resource_size_t iosize, int irq, | ||
13 | const struct imxi2c_platform_data *pdata) | ||
14 | { | ||
15 | struct resource res[] = { | ||
16 | { | ||
17 | .start = iobase, | ||
18 | .end = iobase + iosize - 1, | ||
19 | .flags = IORESOURCE_MEM, | ||
20 | }, { | ||
21 | .start = irq, | ||
22 | .end = irq, | ||
23 | .flags = IORESOURCE_IRQ, | ||
24 | }, | ||
25 | }; | ||
26 | |||
27 | return imx_add_platform_device("imx-i2c", id, res, ARRAY_SIZE(res), | ||
28 | pdata, sizeof(*pdata)); | ||
29 | } | ||
diff --git a/arch/arm/plat-mxc/devices/platform-imx-uart.c b/arch/arm/plat-mxc/devices/platform-imx-uart.c new file mode 100644 index 000000000000..fa3dff1433e8 --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imx-uart.c | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009-2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <mach/devices-common.h> | ||
10 | |||
11 | struct platform_device *__init imx_add_imx_uart_3irq(int id, | ||
12 | resource_size_t iobase, resource_size_t iosize, | ||
13 | resource_size_t irqrx, resource_size_t irqtx, | ||
14 | resource_size_t irqrts, | ||
15 | const struct imxuart_platform_data *pdata) | ||
16 | { | ||
17 | struct resource res[] = { | ||
18 | { | ||
19 | .start = iobase, | ||
20 | .end = iobase + iosize - 1, | ||
21 | .flags = IORESOURCE_MEM, | ||
22 | }, { | ||
23 | .start = irqrx, | ||
24 | .end = irqrx, | ||
25 | .flags = IORESOURCE_IRQ, | ||
26 | }, { | ||
27 | .start = irqtx, | ||
28 | .end = irqtx, | ||
29 | .flags = IORESOURCE_IRQ, | ||
30 | }, { | ||
31 | .start = irqrts, | ||
32 | .end = irqrx, | ||
33 | .flags = IORESOURCE_IRQ, | ||
34 | }, | ||
35 | }; | ||
36 | |||
37 | return imx_add_platform_device("imx-uart", id, res, ARRAY_SIZE(res), | ||
38 | pdata, sizeof(*pdata)); | ||
39 | } | ||
40 | |||
41 | struct platform_device *__init imx_add_imx_uart_1irq(int id, | ||
42 | resource_size_t iobase, resource_size_t iosize, | ||
43 | resource_size_t irq, | ||
44 | const struct imxuart_platform_data *pdata) | ||
45 | { | ||
46 | struct resource res[] = { | ||
47 | { | ||
48 | .start = iobase, | ||
49 | .end = iobase + iosize - 1, | ||
50 | .flags = IORESOURCE_MEM, | ||
51 | }, { | ||
52 | .start = irq, | ||
53 | .end = irq, | ||
54 | .flags = IORESOURCE_IRQ, | ||
55 | }, | ||
56 | }; | ||
57 | |||
58 | return imx_add_platform_device("imx-uart", id, res, ARRAY_SIZE(res), | ||
59 | pdata, sizeof(*pdata)); | ||
60 | } | ||
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_nand.c b/arch/arm/plat-mxc/devices/platform-mxc_nand.c new file mode 100644 index 000000000000..1c286418d123 --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-mxc_nand.c | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009-2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <asm/sizes.h> | ||
10 | #include <mach/devices-common.h> | ||
11 | |||
12 | static struct platform_device *__init imx_add_mxc_nand(resource_size_t iobase, | ||
13 | int irq, const struct mxc_nand_platform_data *pdata, | ||
14 | resource_size_t iosize) | ||
15 | { | ||
16 | static int id = 0; | ||
17 | |||
18 | struct resource res[] = { | ||
19 | { | ||
20 | .start = iobase, | ||
21 | .end = iobase + iosize - 1, | ||
22 | .flags = IORESOURCE_MEM, | ||
23 | }, { | ||
24 | .start = irq, | ||
25 | .end = irq, | ||
26 | .flags = IORESOURCE_IRQ, | ||
27 | }, | ||
28 | }; | ||
29 | |||
30 | return imx_add_platform_device("mxc_nand", id++, res, ARRAY_SIZE(res), | ||
31 | pdata, sizeof(*pdata)); | ||
32 | } | ||
33 | |||
34 | struct platform_device *__init imx_add_mxc_nand_v1(resource_size_t iobase, | ||
35 | int irq, const struct mxc_nand_platform_data *pdata) | ||
36 | { | ||
37 | return imx_add_mxc_nand(iobase, irq, pdata, SZ_4K); | ||
38 | } | ||
39 | |||
40 | struct platform_device *__init imx_add_mxc_nand_v21(resource_size_t iobase, | ||
41 | int irq, const struct mxc_nand_platform_data *pdata) | ||
42 | { | ||
43 | return imx_add_mxc_nand(iobase, irq, pdata, SZ_8K); | ||
44 | } | ||
diff --git a/arch/arm/plat-mxc/devices/platform-spi_imx.c b/arch/arm/plat-mxc/devices/platform-spi_imx.c new file mode 100644 index 000000000000..2831a6d3eb4b --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-spi_imx.c | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009-2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <asm/sizes.h> | ||
10 | #include <mach/devices-common.h> | ||
11 | |||
12 | struct platform_device *__init imx_add_spi_imx(int id, | ||
13 | resource_size_t iobase, resource_size_t iosize, int irq, | ||
14 | const struct spi_imx_master *pdata) | ||
15 | { | ||
16 | struct resource res[] = { | ||
17 | { | ||
18 | .start = iobase, | ||
19 | .end = iobase + iosize - 1, | ||
20 | .flags = IORESOURCE_MEM, | ||
21 | }, { | ||
22 | .start = irq, | ||
23 | .end = irq, | ||
24 | .flags = IORESOURCE_IRQ, | ||
25 | }, | ||
26 | }; | ||
27 | |||
28 | return imx_add_platform_device("spi_imx", id, res, ARRAY_SIZE(res), | ||
29 | pdata, sizeof(*pdata)); | ||
30 | } | ||
diff --git a/arch/arm/plat-mxc/dma-mx1-mx2.c b/arch/arm/plat-mxc/dma-mx1-mx2.c deleted file mode 100644 index e16014b0d13c..000000000000 --- a/arch/arm/plat-mxc/dma-mx1-mx2.c +++ /dev/null | |||
@@ -1,863 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/plat-mxc/dma-mx1-mx2.c | ||
3 | * | ||
4 | * i.MX DMA registration and IRQ dispatching | ||
5 | * | ||
6 | * Copyright 2006 Pavel Pisa <pisa@cmp.felk.cvut.cz> | ||
7 | * Copyright 2008 Juergen Beisert, <kernel@pengutronix.de> | ||
8 | * Copyright 2008 Sascha Hauer, <s.hauer@pengutronix.de> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License | ||
12 | * as published by the Free Software Foundation; either version 2 | ||
13 | * of the License, or (at your option) any later version. | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
22 | * MA 02110-1301, USA. | ||
23 | */ | ||
24 | |||
25 | #include <linux/module.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/kernel.h> | ||
28 | #include <linux/interrupt.h> | ||
29 | #include <linux/errno.h> | ||
30 | #include <linux/clk.h> | ||
31 | #include <linux/scatterlist.h> | ||
32 | #include <linux/io.h> | ||
33 | |||
34 | #include <asm/system.h> | ||
35 | #include <asm/irq.h> | ||
36 | #include <mach/hardware.h> | ||
37 | #include <mach/dma-mx1-mx2.h> | ||
38 | |||
39 | #define DMA_DCR 0x00 /* Control Register */ | ||
40 | #define DMA_DISR 0x04 /* Interrupt status Register */ | ||
41 | #define DMA_DIMR 0x08 /* Interrupt mask Register */ | ||
42 | #define DMA_DBTOSR 0x0c /* Burst timeout status Register */ | ||
43 | #define DMA_DRTOSR 0x10 /* Request timeout Register */ | ||
44 | #define DMA_DSESR 0x14 /* Transfer Error Status Register */ | ||
45 | #define DMA_DBOSR 0x18 /* Buffer overflow status Register */ | ||
46 | #define DMA_DBTOCR 0x1c /* Burst timeout control Register */ | ||
47 | #define DMA_WSRA 0x40 /* W-Size Register A */ | ||
48 | #define DMA_XSRA 0x44 /* X-Size Register A */ | ||
49 | #define DMA_YSRA 0x48 /* Y-Size Register A */ | ||
50 | #define DMA_WSRB 0x4c /* W-Size Register B */ | ||
51 | #define DMA_XSRB 0x50 /* X-Size Register B */ | ||
52 | #define DMA_YSRB 0x54 /* Y-Size Register B */ | ||
53 | #define DMA_SAR(x) (0x80 + ((x) << 6)) /* Source Address Registers */ | ||
54 | #define DMA_DAR(x) (0x84 + ((x) << 6)) /* Destination Address Registers */ | ||
55 | #define DMA_CNTR(x) (0x88 + ((x) << 6)) /* Count Registers */ | ||
56 | #define DMA_CCR(x) (0x8c + ((x) << 6)) /* Control Registers */ | ||
57 | #define DMA_RSSR(x) (0x90 + ((x) << 6)) /* Request source select Registers */ | ||
58 | #define DMA_BLR(x) (0x94 + ((x) << 6)) /* Burst length Registers */ | ||
59 | #define DMA_RTOR(x) (0x98 + ((x) << 6)) /* Request timeout Registers */ | ||
60 | #define DMA_BUCR(x) (0x98 + ((x) << 6)) /* Bus Utilization Registers */ | ||
61 | #define DMA_CCNR(x) (0x9C + ((x) << 6)) /* Channel counter Registers */ | ||
62 | |||
63 | #define DCR_DRST (1<<1) | ||
64 | #define DCR_DEN (1<<0) | ||
65 | #define DBTOCR_EN (1<<15) | ||
66 | #define DBTOCR_CNT(x) ((x) & 0x7fff) | ||
67 | #define CNTR_CNT(x) ((x) & 0xffffff) | ||
68 | #define CCR_ACRPT (1<<14) | ||
69 | #define CCR_DMOD_LINEAR (0x0 << 12) | ||
70 | #define CCR_DMOD_2D (0x1 << 12) | ||
71 | #define CCR_DMOD_FIFO (0x2 << 12) | ||
72 | #define CCR_DMOD_EOBFIFO (0x3 << 12) | ||
73 | #define CCR_SMOD_LINEAR (0x0 << 10) | ||
74 | #define CCR_SMOD_2D (0x1 << 10) | ||
75 | #define CCR_SMOD_FIFO (0x2 << 10) | ||
76 | #define CCR_SMOD_EOBFIFO (0x3 << 10) | ||
77 | #define CCR_MDIR_DEC (1<<9) | ||
78 | #define CCR_MSEL_B (1<<8) | ||
79 | #define CCR_DSIZ_32 (0x0 << 6) | ||
80 | #define CCR_DSIZ_8 (0x1 << 6) | ||
81 | #define CCR_DSIZ_16 (0x2 << 6) | ||
82 | #define CCR_SSIZ_32 (0x0 << 4) | ||
83 | #define CCR_SSIZ_8 (0x1 << 4) | ||
84 | #define CCR_SSIZ_16 (0x2 << 4) | ||
85 | #define CCR_REN (1<<3) | ||
86 | #define CCR_RPT (1<<2) | ||
87 | #define CCR_FRC (1<<1) | ||
88 | #define CCR_CEN (1<<0) | ||
89 | #define RTOR_EN (1<<15) | ||
90 | #define RTOR_CLK (1<<14) | ||
91 | #define RTOR_PSC (1<<13) | ||
92 | |||
93 | /* | ||
94 | * struct imx_dma_channel - i.MX specific DMA extension | ||
95 | * @name: name specified by DMA client | ||
96 | * @irq_handler: client callback for end of transfer | ||
97 | * @err_handler: client callback for error condition | ||
98 | * @data: clients context data for callbacks | ||
99 | * @dma_mode: direction of the transfer %DMA_MODE_READ or %DMA_MODE_WRITE | ||
100 | * @sg: pointer to the actual read/written chunk for scatter-gather emulation | ||
101 | * @resbytes: total residual number of bytes to transfer | ||
102 | * (it can be lower or same as sum of SG mapped chunk sizes) | ||
103 | * @sgcount: number of chunks to be read/written | ||
104 | * | ||
105 | * Structure is used for IMX DMA processing. It would be probably good | ||
106 | * @struct dma_struct in the future for external interfacing and use | ||
107 | * @struct imx_dma_channel only as extension to it. | ||
108 | */ | ||
109 | |||
110 | struct imx_dma_channel { | ||
111 | const char *name; | ||
112 | void (*irq_handler) (int, void *); | ||
113 | void (*err_handler) (int, void *, int errcode); | ||
114 | void (*prog_handler) (int, void *, struct scatterlist *); | ||
115 | void *data; | ||
116 | unsigned int dma_mode; | ||
117 | struct scatterlist *sg; | ||
118 | unsigned int resbytes; | ||
119 | int dma_num; | ||
120 | |||
121 | int in_use; | ||
122 | |||
123 | u32 ccr_from_device; | ||
124 | u32 ccr_to_device; | ||
125 | |||
126 | struct timer_list watchdog; | ||
127 | |||
128 | int hw_chaining; | ||
129 | }; | ||
130 | |||
131 | static void __iomem *imx_dmav1_baseaddr; | ||
132 | |||
133 | static void imx_dmav1_writel(unsigned val, unsigned offset) | ||
134 | { | ||
135 | __raw_writel(val, imx_dmav1_baseaddr + offset); | ||
136 | } | ||
137 | |||
138 | static unsigned imx_dmav1_readl(unsigned offset) | ||
139 | { | ||
140 | return __raw_readl(imx_dmav1_baseaddr + offset); | ||
141 | } | ||
142 | |||
143 | static struct imx_dma_channel imx_dma_channels[IMX_DMA_CHANNELS]; | ||
144 | |||
145 | static struct clk *dma_clk; | ||
146 | |||
147 | static int imx_dma_hw_chain(struct imx_dma_channel *imxdma) | ||
148 | { | ||
149 | if (cpu_is_mx27()) | ||
150 | return imxdma->hw_chaining; | ||
151 | else | ||
152 | return 0; | ||
153 | } | ||
154 | |||
155 | /* | ||
156 | * imx_dma_sg_next - prepare next chunk for scatter-gather DMA emulation | ||
157 | */ | ||
158 | static inline int imx_dma_sg_next(int channel, struct scatterlist *sg) | ||
159 | { | ||
160 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
161 | unsigned long now; | ||
162 | |||
163 | if (!imxdma->name) { | ||
164 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | ||
165 | __func__, channel); | ||
166 | return 0; | ||
167 | } | ||
168 | |||
169 | now = min(imxdma->resbytes, sg->length); | ||
170 | if (imxdma->resbytes != IMX_DMA_LENGTH_LOOP) | ||
171 | imxdma->resbytes -= now; | ||
172 | |||
173 | if ((imxdma->dma_mode & DMA_MODE_MASK) == DMA_MODE_READ) | ||
174 | imx_dmav1_writel(sg->dma_address, DMA_DAR(channel)); | ||
175 | else | ||
176 | imx_dmav1_writel(sg->dma_address, DMA_SAR(channel)); | ||
177 | |||
178 | imx_dmav1_writel(now, DMA_CNTR(channel)); | ||
179 | |||
180 | pr_debug("imxdma%d: next sg chunk dst 0x%08x, src 0x%08x, " | ||
181 | "size 0x%08x\n", channel, | ||
182 | imx_dmav1_readl(DMA_DAR(channel)), | ||
183 | imx_dmav1_readl(DMA_SAR(channel)), | ||
184 | imx_dmav1_readl(DMA_CNTR(channel))); | ||
185 | |||
186 | return now; | ||
187 | } | ||
188 | |||
189 | /** | ||
190 | * imx_dma_setup_single - setup i.MX DMA channel for linear memory to/from | ||
191 | * device transfer | ||
192 | * | ||
193 | * @channel: i.MX DMA channel number | ||
194 | * @dma_address: the DMA/physical memory address of the linear data block | ||
195 | * to transfer | ||
196 | * @dma_length: length of the data block in bytes | ||
197 | * @dev_addr: physical device port address | ||
198 | * @dmamode: DMA transfer mode, %DMA_MODE_READ from the device to the memory | ||
199 | * or %DMA_MODE_WRITE from memory to the device | ||
200 | * | ||
201 | * Return value: if incorrect parameters are provided -%EINVAL. | ||
202 | * Zero indicates success. | ||
203 | */ | ||
204 | int | ||
205 | imx_dma_setup_single(int channel, dma_addr_t dma_address, | ||
206 | unsigned int dma_length, unsigned int dev_addr, | ||
207 | unsigned int dmamode) | ||
208 | { | ||
209 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
210 | |||
211 | imxdma->sg = NULL; | ||
212 | imxdma->dma_mode = dmamode; | ||
213 | |||
214 | if (!dma_address) { | ||
215 | printk(KERN_ERR "imxdma%d: imx_dma_setup_single null address\n", | ||
216 | channel); | ||
217 | return -EINVAL; | ||
218 | } | ||
219 | |||
220 | if (!dma_length) { | ||
221 | printk(KERN_ERR "imxdma%d: imx_dma_setup_single zero length\n", | ||
222 | channel); | ||
223 | return -EINVAL; | ||
224 | } | ||
225 | |||
226 | if ((dmamode & DMA_MODE_MASK) == DMA_MODE_READ) { | ||
227 | pr_debug("imxdma%d: %s dma_addressg=0x%08x dma_length=%d " | ||
228 | "dev_addr=0x%08x for read\n", | ||
229 | channel, __func__, (unsigned int)dma_address, | ||
230 | dma_length, dev_addr); | ||
231 | |||
232 | imx_dmav1_writel(dev_addr, DMA_SAR(channel)); | ||
233 | imx_dmav1_writel(dma_address, DMA_DAR(channel)); | ||
234 | imx_dmav1_writel(imxdma->ccr_from_device, DMA_CCR(channel)); | ||
235 | } else if ((dmamode & DMA_MODE_MASK) == DMA_MODE_WRITE) { | ||
236 | pr_debug("imxdma%d: %s dma_addressg=0x%08x dma_length=%d " | ||
237 | "dev_addr=0x%08x for write\n", | ||
238 | channel, __func__, (unsigned int)dma_address, | ||
239 | dma_length, dev_addr); | ||
240 | |||
241 | imx_dmav1_writel(dma_address, DMA_SAR(channel)); | ||
242 | imx_dmav1_writel(dev_addr, DMA_DAR(channel)); | ||
243 | imx_dmav1_writel(imxdma->ccr_to_device, | ||
244 | DMA_CCR(channel)); | ||
245 | } else { | ||
246 | printk(KERN_ERR "imxdma%d: imx_dma_setup_single bad dmamode\n", | ||
247 | channel); | ||
248 | return -EINVAL; | ||
249 | } | ||
250 | |||
251 | imx_dmav1_writel(dma_length, DMA_CNTR(channel)); | ||
252 | |||
253 | return 0; | ||
254 | } | ||
255 | EXPORT_SYMBOL(imx_dma_setup_single); | ||
256 | |||
257 | /** | ||
258 | * imx_dma_setup_sg - setup i.MX DMA channel SG list to/from device transfer | ||
259 | * @channel: i.MX DMA channel number | ||
260 | * @sg: pointer to the scatter-gather list/vector | ||
261 | * @sgcount: scatter-gather list hungs count | ||
262 | * @dma_length: total length of the transfer request in bytes | ||
263 | * @dev_addr: physical device port address | ||
264 | * @dmamode: DMA transfer mode, %DMA_MODE_READ from the device to the memory | ||
265 | * or %DMA_MODE_WRITE from memory to the device | ||
266 | * | ||
267 | * The function sets up DMA channel state and registers to be ready for | ||
268 | * transfer specified by provided parameters. The scatter-gather emulation | ||
269 | * is set up according to the parameters. | ||
270 | * | ||
271 | * The full preparation of the transfer requires setup of more register | ||
272 | * by the caller before imx_dma_enable() can be called. | ||
273 | * | ||
274 | * %BLR(channel) holds transfer burst length in bytes, 0 means 64 bytes | ||
275 | * | ||
276 | * %RSSR(channel) has to be set to the DMA request line source %DMA_REQ_xxx | ||
277 | * | ||
278 | * %CCR(channel) has to specify transfer parameters, the next settings is | ||
279 | * typical for linear or simple scatter-gather transfers if %DMA_MODE_READ is | ||
280 | * specified | ||
281 | * | ||
282 | * %CCR_DMOD_LINEAR | %CCR_DSIZ_32 | %CCR_SMOD_FIFO | %CCR_SSIZ_x | ||
283 | * | ||
284 | * The typical setup for %DMA_MODE_WRITE is specified by next options | ||
285 | * combination | ||
286 | * | ||
287 | * %CCR_SMOD_LINEAR | %CCR_SSIZ_32 | %CCR_DMOD_FIFO | %CCR_DSIZ_x | ||
288 | * | ||
289 | * Be careful here and do not mistakenly mix source and target device | ||
290 | * port sizes constants, they are really different: | ||
291 | * %CCR_SSIZ_8, %CCR_SSIZ_16, %CCR_SSIZ_32, | ||
292 | * %CCR_DSIZ_8, %CCR_DSIZ_16, %CCR_DSIZ_32 | ||
293 | * | ||
294 | * Return value: if incorrect parameters are provided -%EINVAL. | ||
295 | * Zero indicates success. | ||
296 | */ | ||
297 | int | ||
298 | imx_dma_setup_sg(int channel, | ||
299 | struct scatterlist *sg, unsigned int sgcount, | ||
300 | unsigned int dma_length, unsigned int dev_addr, | ||
301 | unsigned int dmamode) | ||
302 | { | ||
303 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
304 | |||
305 | if (imxdma->in_use) | ||
306 | return -EBUSY; | ||
307 | |||
308 | imxdma->sg = sg; | ||
309 | imxdma->dma_mode = dmamode; | ||
310 | imxdma->resbytes = dma_length; | ||
311 | |||
312 | if (!sg || !sgcount) { | ||
313 | printk(KERN_ERR "imxdma%d: imx_dma_setup_sg epty sg list\n", | ||
314 | channel); | ||
315 | return -EINVAL; | ||
316 | } | ||
317 | |||
318 | if (!sg->length) { | ||
319 | printk(KERN_ERR "imxdma%d: imx_dma_setup_sg zero length\n", | ||
320 | channel); | ||
321 | return -EINVAL; | ||
322 | } | ||
323 | |||
324 | if ((dmamode & DMA_MODE_MASK) == DMA_MODE_READ) { | ||
325 | pr_debug("imxdma%d: %s sg=%p sgcount=%d total length=%d " | ||
326 | "dev_addr=0x%08x for read\n", | ||
327 | channel, __func__, sg, sgcount, dma_length, dev_addr); | ||
328 | |||
329 | imx_dmav1_writel(dev_addr, DMA_SAR(channel)); | ||
330 | imx_dmav1_writel(imxdma->ccr_from_device, DMA_CCR(channel)); | ||
331 | } else if ((dmamode & DMA_MODE_MASK) == DMA_MODE_WRITE) { | ||
332 | pr_debug("imxdma%d: %s sg=%p sgcount=%d total length=%d " | ||
333 | "dev_addr=0x%08x for write\n", | ||
334 | channel, __func__, sg, sgcount, dma_length, dev_addr); | ||
335 | |||
336 | imx_dmav1_writel(dev_addr, DMA_DAR(channel)); | ||
337 | imx_dmav1_writel(imxdma->ccr_to_device, DMA_CCR(channel)); | ||
338 | } else { | ||
339 | printk(KERN_ERR "imxdma%d: imx_dma_setup_sg bad dmamode\n", | ||
340 | channel); | ||
341 | return -EINVAL; | ||
342 | } | ||
343 | |||
344 | imx_dma_sg_next(channel, sg); | ||
345 | |||
346 | return 0; | ||
347 | } | ||
348 | EXPORT_SYMBOL(imx_dma_setup_sg); | ||
349 | |||
350 | int | ||
351 | imx_dma_config_channel(int channel, unsigned int config_port, | ||
352 | unsigned int config_mem, unsigned int dmareq, int hw_chaining) | ||
353 | { | ||
354 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
355 | u32 dreq = 0; | ||
356 | |||
357 | imxdma->hw_chaining = 0; | ||
358 | |||
359 | if (hw_chaining) { | ||
360 | imxdma->hw_chaining = 1; | ||
361 | if (!imx_dma_hw_chain(imxdma)) | ||
362 | return -EINVAL; | ||
363 | } | ||
364 | |||
365 | if (dmareq) | ||
366 | dreq = CCR_REN; | ||
367 | |||
368 | imxdma->ccr_from_device = config_port | (config_mem << 2) | dreq; | ||
369 | imxdma->ccr_to_device = config_mem | (config_port << 2) | dreq; | ||
370 | |||
371 | imx_dmav1_writel(dmareq, DMA_RSSR(channel)); | ||
372 | |||
373 | return 0; | ||
374 | } | ||
375 | EXPORT_SYMBOL(imx_dma_config_channel); | ||
376 | |||
377 | void imx_dma_config_burstlen(int channel, unsigned int burstlen) | ||
378 | { | ||
379 | imx_dmav1_writel(burstlen, DMA_BLR(channel)); | ||
380 | } | ||
381 | EXPORT_SYMBOL(imx_dma_config_burstlen); | ||
382 | |||
383 | /** | ||
384 | * imx_dma_setup_handlers - setup i.MX DMA channel end and error notification | ||
385 | * handlers | ||
386 | * @channel: i.MX DMA channel number | ||
387 | * @irq_handler: the pointer to the function called if the transfer | ||
388 | * ends successfully | ||
389 | * @err_handler: the pointer to the function called if the premature | ||
390 | * end caused by error occurs | ||
391 | * @data: user specified value to be passed to the handlers | ||
392 | */ | ||
393 | int | ||
394 | imx_dma_setup_handlers(int channel, | ||
395 | void (*irq_handler) (int, void *), | ||
396 | void (*err_handler) (int, void *, int), | ||
397 | void *data) | ||
398 | { | ||
399 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
400 | unsigned long flags; | ||
401 | |||
402 | if (!imxdma->name) { | ||
403 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | ||
404 | __func__, channel); | ||
405 | return -ENODEV; | ||
406 | } | ||
407 | |||
408 | local_irq_save(flags); | ||
409 | imx_dmav1_writel(1 << channel, DMA_DISR); | ||
410 | imxdma->irq_handler = irq_handler; | ||
411 | imxdma->err_handler = err_handler; | ||
412 | imxdma->data = data; | ||
413 | local_irq_restore(flags); | ||
414 | return 0; | ||
415 | } | ||
416 | EXPORT_SYMBOL(imx_dma_setup_handlers); | ||
417 | |||
418 | /** | ||
419 | * imx_dma_setup_progression_handler - setup i.MX DMA channel progression | ||
420 | * handlers | ||
421 | * @channel: i.MX DMA channel number | ||
422 | * @prog_handler: the pointer to the function called if the transfer progresses | ||
423 | */ | ||
424 | int | ||
425 | imx_dma_setup_progression_handler(int channel, | ||
426 | void (*prog_handler) (int, void*, struct scatterlist*)) | ||
427 | { | ||
428 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
429 | unsigned long flags; | ||
430 | |||
431 | if (!imxdma->name) { | ||
432 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | ||
433 | __func__, channel); | ||
434 | return -ENODEV; | ||
435 | } | ||
436 | |||
437 | local_irq_save(flags); | ||
438 | imxdma->prog_handler = prog_handler; | ||
439 | local_irq_restore(flags); | ||
440 | return 0; | ||
441 | } | ||
442 | EXPORT_SYMBOL(imx_dma_setup_progression_handler); | ||
443 | |||
444 | /** | ||
445 | * imx_dma_enable - function to start i.MX DMA channel operation | ||
446 | * @channel: i.MX DMA channel number | ||
447 | * | ||
448 | * The channel has to be allocated by driver through imx_dma_request() | ||
449 | * or imx_dma_request_by_prio() function. | ||
450 | * The transfer parameters has to be set to the channel registers through | ||
451 | * call of the imx_dma_setup_single() or imx_dma_setup_sg() function | ||
452 | * and registers %BLR(channel), %RSSR(channel) and %CCR(channel) has to | ||
453 | * be set prior this function call by the channel user. | ||
454 | */ | ||
455 | void imx_dma_enable(int channel) | ||
456 | { | ||
457 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
458 | unsigned long flags; | ||
459 | |||
460 | pr_debug("imxdma%d: imx_dma_enable\n", channel); | ||
461 | |||
462 | if (!imxdma->name) { | ||
463 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | ||
464 | __func__, channel); | ||
465 | return; | ||
466 | } | ||
467 | |||
468 | if (imxdma->in_use) | ||
469 | return; | ||
470 | |||
471 | local_irq_save(flags); | ||
472 | |||
473 | imx_dmav1_writel(1 << channel, DMA_DISR); | ||
474 | imx_dmav1_writel(imx_dmav1_readl(DMA_DIMR) & ~(1 << channel), DMA_DIMR); | ||
475 | imx_dmav1_writel(imx_dmav1_readl(DMA_CCR(channel)) | CCR_CEN | | ||
476 | CCR_ACRPT, DMA_CCR(channel)); | ||
477 | |||
478 | #ifdef CONFIG_ARCH_MX2 | ||
479 | if ((cpu_is_mx21() || cpu_is_mx27()) && | ||
480 | imxdma->sg && imx_dma_hw_chain(imxdma)) { | ||
481 | imxdma->sg = sg_next(imxdma->sg); | ||
482 | if (imxdma->sg) { | ||
483 | u32 tmp; | ||
484 | imx_dma_sg_next(channel, imxdma->sg); | ||
485 | tmp = imx_dmav1_readl(DMA_CCR(channel)); | ||
486 | imx_dmav1_writel(tmp | CCR_RPT | CCR_ACRPT, | ||
487 | DMA_CCR(channel)); | ||
488 | } | ||
489 | } | ||
490 | #endif | ||
491 | imxdma->in_use = 1; | ||
492 | |||
493 | local_irq_restore(flags); | ||
494 | } | ||
495 | EXPORT_SYMBOL(imx_dma_enable); | ||
496 | |||
497 | /** | ||
498 | * imx_dma_disable - stop, finish i.MX DMA channel operatin | ||
499 | * @channel: i.MX DMA channel number | ||
500 | */ | ||
501 | void imx_dma_disable(int channel) | ||
502 | { | ||
503 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
504 | unsigned long flags; | ||
505 | |||
506 | pr_debug("imxdma%d: imx_dma_disable\n", channel); | ||
507 | |||
508 | if (imx_dma_hw_chain(imxdma)) | ||
509 | del_timer(&imxdma->watchdog); | ||
510 | |||
511 | local_irq_save(flags); | ||
512 | imx_dmav1_writel(imx_dmav1_readl(DMA_DIMR) | (1 << channel), DMA_DIMR); | ||
513 | imx_dmav1_writel(imx_dmav1_readl(DMA_CCR(channel)) & ~CCR_CEN, | ||
514 | DMA_CCR(channel)); | ||
515 | imx_dmav1_writel(1 << channel, DMA_DISR); | ||
516 | imxdma->in_use = 0; | ||
517 | local_irq_restore(flags); | ||
518 | } | ||
519 | EXPORT_SYMBOL(imx_dma_disable); | ||
520 | |||
521 | #ifdef CONFIG_ARCH_MX2 | ||
522 | static void imx_dma_watchdog(unsigned long chno) | ||
523 | { | ||
524 | struct imx_dma_channel *imxdma = &imx_dma_channels[chno]; | ||
525 | |||
526 | imx_dmav1_writel(0, DMA_CCR(chno)); | ||
527 | imxdma->in_use = 0; | ||
528 | imxdma->sg = NULL; | ||
529 | |||
530 | if (imxdma->err_handler) | ||
531 | imxdma->err_handler(chno, imxdma->data, IMX_DMA_ERR_TIMEOUT); | ||
532 | } | ||
533 | #endif | ||
534 | |||
535 | static irqreturn_t dma_err_handler(int irq, void *dev_id) | ||
536 | { | ||
537 | int i, disr; | ||
538 | struct imx_dma_channel *imxdma; | ||
539 | unsigned int err_mask; | ||
540 | int errcode; | ||
541 | |||
542 | disr = imx_dmav1_readl(DMA_DISR); | ||
543 | |||
544 | err_mask = imx_dmav1_readl(DMA_DBTOSR) | | ||
545 | imx_dmav1_readl(DMA_DRTOSR) | | ||
546 | imx_dmav1_readl(DMA_DSESR) | | ||
547 | imx_dmav1_readl(DMA_DBOSR); | ||
548 | |||
549 | if (!err_mask) | ||
550 | return IRQ_HANDLED; | ||
551 | |||
552 | imx_dmav1_writel(disr & err_mask, DMA_DISR); | ||
553 | |||
554 | for (i = 0; i < IMX_DMA_CHANNELS; i++) { | ||
555 | if (!(err_mask & (1 << i))) | ||
556 | continue; | ||
557 | imxdma = &imx_dma_channels[i]; | ||
558 | errcode = 0; | ||
559 | |||
560 | if (imx_dmav1_readl(DMA_DBTOSR) & (1 << i)) { | ||
561 | imx_dmav1_writel(1 << i, DMA_DBTOSR); | ||
562 | errcode |= IMX_DMA_ERR_BURST; | ||
563 | } | ||
564 | if (imx_dmav1_readl(DMA_DRTOSR) & (1 << i)) { | ||
565 | imx_dmav1_writel(1 << i, DMA_DRTOSR); | ||
566 | errcode |= IMX_DMA_ERR_REQUEST; | ||
567 | } | ||
568 | if (imx_dmav1_readl(DMA_DSESR) & (1 << i)) { | ||
569 | imx_dmav1_writel(1 << i, DMA_DSESR); | ||
570 | errcode |= IMX_DMA_ERR_TRANSFER; | ||
571 | } | ||
572 | if (imx_dmav1_readl(DMA_DBOSR) & (1 << i)) { | ||
573 | imx_dmav1_writel(1 << i, DMA_DBOSR); | ||
574 | errcode |= IMX_DMA_ERR_BUFFER; | ||
575 | } | ||
576 | if (imxdma->name && imxdma->err_handler) { | ||
577 | imxdma->err_handler(i, imxdma->data, errcode); | ||
578 | continue; | ||
579 | } | ||
580 | |||
581 | imx_dma_channels[i].sg = NULL; | ||
582 | |||
583 | printk(KERN_WARNING | ||
584 | "DMA timeout on channel %d (%s) -%s%s%s%s\n", | ||
585 | i, imxdma->name, | ||
586 | errcode & IMX_DMA_ERR_BURST ? " burst" : "", | ||
587 | errcode & IMX_DMA_ERR_REQUEST ? " request" : "", | ||
588 | errcode & IMX_DMA_ERR_TRANSFER ? " transfer" : "", | ||
589 | errcode & IMX_DMA_ERR_BUFFER ? " buffer" : ""); | ||
590 | } | ||
591 | return IRQ_HANDLED; | ||
592 | } | ||
593 | |||
594 | static void dma_irq_handle_channel(int chno) | ||
595 | { | ||
596 | struct imx_dma_channel *imxdma = &imx_dma_channels[chno]; | ||
597 | |||
598 | if (!imxdma->name) { | ||
599 | /* | ||
600 | * IRQ for an unregistered DMA channel: | ||
601 | * let's clear the interrupts and disable it. | ||
602 | */ | ||
603 | printk(KERN_WARNING | ||
604 | "spurious IRQ for DMA channel %d\n", chno); | ||
605 | return; | ||
606 | } | ||
607 | |||
608 | if (imxdma->sg) { | ||
609 | u32 tmp; | ||
610 | struct scatterlist *current_sg = imxdma->sg; | ||
611 | imxdma->sg = sg_next(imxdma->sg); | ||
612 | |||
613 | if (imxdma->sg) { | ||
614 | imx_dma_sg_next(chno, imxdma->sg); | ||
615 | |||
616 | tmp = imx_dmav1_readl(DMA_CCR(chno)); | ||
617 | |||
618 | if (imx_dma_hw_chain(imxdma)) { | ||
619 | /* FIXME: The timeout should probably be | ||
620 | * configurable | ||
621 | */ | ||
622 | mod_timer(&imxdma->watchdog, | ||
623 | jiffies + msecs_to_jiffies(500)); | ||
624 | |||
625 | tmp |= CCR_CEN | CCR_RPT | CCR_ACRPT; | ||
626 | imx_dmav1_writel(tmp, DMA_CCR(chno)); | ||
627 | } else { | ||
628 | imx_dmav1_writel(tmp & ~CCR_CEN, DMA_CCR(chno)); | ||
629 | tmp |= CCR_CEN; | ||
630 | } | ||
631 | |||
632 | imx_dmav1_writel(tmp, DMA_CCR(chno)); | ||
633 | |||
634 | if (imxdma->prog_handler) | ||
635 | imxdma->prog_handler(chno, imxdma->data, | ||
636 | current_sg); | ||
637 | |||
638 | return; | ||
639 | } | ||
640 | |||
641 | if (imx_dma_hw_chain(imxdma)) { | ||
642 | del_timer(&imxdma->watchdog); | ||
643 | return; | ||
644 | } | ||
645 | } | ||
646 | |||
647 | imx_dmav1_writel(0, DMA_CCR(chno)); | ||
648 | imxdma->in_use = 0; | ||
649 | if (imxdma->irq_handler) | ||
650 | imxdma->irq_handler(chno, imxdma->data); | ||
651 | } | ||
652 | |||
653 | static irqreturn_t dma_irq_handler(int irq, void *dev_id) | ||
654 | { | ||
655 | int i, disr; | ||
656 | |||
657 | #ifdef CONFIG_ARCH_MX2 | ||
658 | if (cpu_is_mx21() || cpu_is_mx27()) | ||
659 | dma_err_handler(irq, dev_id); | ||
660 | #endif | ||
661 | |||
662 | disr = imx_dmav1_readl(DMA_DISR); | ||
663 | |||
664 | pr_debug("imxdma: dma_irq_handler called, disr=0x%08x\n", | ||
665 | disr); | ||
666 | |||
667 | imx_dmav1_writel(disr, DMA_DISR); | ||
668 | for (i = 0; i < IMX_DMA_CHANNELS; i++) { | ||
669 | if (disr & (1 << i)) | ||
670 | dma_irq_handle_channel(i); | ||
671 | } | ||
672 | |||
673 | return IRQ_HANDLED; | ||
674 | } | ||
675 | |||
676 | /** | ||
677 | * imx_dma_request - request/allocate specified channel number | ||
678 | * @channel: i.MX DMA channel number | ||
679 | * @name: the driver/caller own non-%NULL identification | ||
680 | */ | ||
681 | int imx_dma_request(int channel, const char *name) | ||
682 | { | ||
683 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
684 | unsigned long flags; | ||
685 | int ret = 0; | ||
686 | |||
687 | /* basic sanity checks */ | ||
688 | if (!name) | ||
689 | return -EINVAL; | ||
690 | |||
691 | if (channel >= IMX_DMA_CHANNELS) { | ||
692 | printk(KERN_CRIT "%s: called for non-existed channel %d\n", | ||
693 | __func__, channel); | ||
694 | return -EINVAL; | ||
695 | } | ||
696 | |||
697 | local_irq_save(flags); | ||
698 | if (imxdma->name) { | ||
699 | local_irq_restore(flags); | ||
700 | return -EBUSY; | ||
701 | } | ||
702 | memset(imxdma, 0, sizeof(imxdma)); | ||
703 | imxdma->name = name; | ||
704 | local_irq_restore(flags); /* request_irq() can block */ | ||
705 | |||
706 | #ifdef CONFIG_ARCH_MX2 | ||
707 | if (cpu_is_mx21() || cpu_is_mx27()) { | ||
708 | ret = request_irq(MX2x_INT_DMACH0 + channel, | ||
709 | dma_irq_handler, 0, "DMA", NULL); | ||
710 | if (ret) { | ||
711 | imxdma->name = NULL; | ||
712 | pr_crit("Can't register IRQ %d for DMA channel %d\n", | ||
713 | MX2x_INT_DMACH0 + channel, channel); | ||
714 | return ret; | ||
715 | } | ||
716 | init_timer(&imxdma->watchdog); | ||
717 | imxdma->watchdog.function = &imx_dma_watchdog; | ||
718 | imxdma->watchdog.data = channel; | ||
719 | } | ||
720 | #endif | ||
721 | |||
722 | return ret; | ||
723 | } | ||
724 | EXPORT_SYMBOL(imx_dma_request); | ||
725 | |||
726 | /** | ||
727 | * imx_dma_free - release previously acquired channel | ||
728 | * @channel: i.MX DMA channel number | ||
729 | */ | ||
730 | void imx_dma_free(int channel) | ||
731 | { | ||
732 | unsigned long flags; | ||
733 | struct imx_dma_channel *imxdma = &imx_dma_channels[channel]; | ||
734 | |||
735 | if (!imxdma->name) { | ||
736 | printk(KERN_CRIT | ||
737 | "%s: trying to free free channel %d\n", | ||
738 | __func__, channel); | ||
739 | return; | ||
740 | } | ||
741 | |||
742 | local_irq_save(flags); | ||
743 | /* Disable interrupts */ | ||
744 | imx_dma_disable(channel); | ||
745 | imxdma->name = NULL; | ||
746 | |||
747 | #ifdef CONFIG_ARCH_MX2 | ||
748 | if (cpu_is_mx21() || cpu_is_mx27()) | ||
749 | free_irq(MX2x_INT_DMACH0 + channel, NULL); | ||
750 | #endif | ||
751 | |||
752 | local_irq_restore(flags); | ||
753 | } | ||
754 | EXPORT_SYMBOL(imx_dma_free); | ||
755 | |||
756 | /** | ||
757 | * imx_dma_request_by_prio - find and request some of free channels best | ||
758 | * suiting requested priority | ||
759 | * @channel: i.MX DMA channel number | ||
760 | * @name: the driver/caller own non-%NULL identification | ||
761 | * | ||
762 | * This function tries to find a free channel in the specified priority group | ||
763 | * This function tries to find a free channel in the specified priority group | ||
764 | * if the priority cannot be achieved it tries to look for free channel | ||
765 | * in the higher and then even lower priority groups. | ||
766 | * | ||
767 | * Return value: If there is no free channel to allocate, -%ENODEV is returned. | ||
768 | * On successful allocation channel is returned. | ||
769 | */ | ||
770 | int imx_dma_request_by_prio(const char *name, enum imx_dma_prio prio) | ||
771 | { | ||
772 | int i; | ||
773 | int best; | ||
774 | |||
775 | switch (prio) { | ||
776 | case (DMA_PRIO_HIGH): | ||
777 | best = 8; | ||
778 | break; | ||
779 | case (DMA_PRIO_MEDIUM): | ||
780 | best = 4; | ||
781 | break; | ||
782 | case (DMA_PRIO_LOW): | ||
783 | default: | ||
784 | best = 0; | ||
785 | break; | ||
786 | } | ||
787 | |||
788 | for (i = best; i < IMX_DMA_CHANNELS; i++) | ||
789 | if (!imx_dma_request(i, name)) | ||
790 | return i; | ||
791 | |||
792 | for (i = best - 1; i >= 0; i--) | ||
793 | if (!imx_dma_request(i, name)) | ||
794 | return i; | ||
795 | |||
796 | printk(KERN_ERR "%s: no free DMA channel found\n", __func__); | ||
797 | |||
798 | return -ENODEV; | ||
799 | } | ||
800 | EXPORT_SYMBOL(imx_dma_request_by_prio); | ||
801 | |||
802 | static int __init imx_dma_init(void) | ||
803 | { | ||
804 | int ret = 0; | ||
805 | int i; | ||
806 | |||
807 | #ifdef CONFIG_ARCH_MX1 | ||
808 | if (cpu_is_mx1()) | ||
809 | imx_dmav1_baseaddr = MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR); | ||
810 | else | ||
811 | #endif | ||
812 | #ifdef CONFIG_MACH_MX21 | ||
813 | if (cpu_is_mx21()) | ||
814 | imx_dmav1_baseaddr = MX21_IO_ADDRESS(MX21_DMA_BASE_ADDR); | ||
815 | else | ||
816 | #endif | ||
817 | #ifdef CONFIG_MACH_MX27 | ||
818 | if (cpu_is_mx27()) | ||
819 | imx_dmav1_baseaddr = MX27_IO_ADDRESS(MX27_DMA_BASE_ADDR); | ||
820 | else | ||
821 | #endif | ||
822 | BUG(); | ||
823 | |||
824 | dma_clk = clk_get(NULL, "dma"); | ||
825 | clk_enable(dma_clk); | ||
826 | |||
827 | /* reset DMA module */ | ||
828 | imx_dmav1_writel(DCR_DRST, DMA_DCR); | ||
829 | |||
830 | #ifdef CONFIG_ARCH_MX1 | ||
831 | if (cpu_is_mx1()) { | ||
832 | ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", NULL); | ||
833 | if (ret) { | ||
834 | pr_crit("Wow! Can't register IRQ for DMA\n"); | ||
835 | return ret; | ||
836 | } | ||
837 | |||
838 | ret = request_irq(MX1_DMA_ERR, dma_err_handler, 0, "DMA", NULL); | ||
839 | if (ret) { | ||
840 | pr_crit("Wow! Can't register ERRIRQ for DMA\n"); | ||
841 | free_irq(MX1_DMA_INT, NULL); | ||
842 | return ret; | ||
843 | } | ||
844 | } | ||
845 | #endif | ||
846 | /* enable DMA module */ | ||
847 | imx_dmav1_writel(DCR_DEN, DMA_DCR); | ||
848 | |||
849 | /* clear all interrupts */ | ||
850 | imx_dmav1_writel((1 << IMX_DMA_CHANNELS) - 1, DMA_DISR); | ||
851 | |||
852 | /* disable interrupts */ | ||
853 | imx_dmav1_writel((1 << IMX_DMA_CHANNELS) - 1, DMA_DIMR); | ||
854 | |||
855 | for (i = 0; i < IMX_DMA_CHANNELS; i++) { | ||
856 | imx_dma_channels[i].sg = NULL; | ||
857 | imx_dma_channels[i].dma_num = i; | ||
858 | } | ||
859 | |||
860 | return ret; | ||
861 | } | ||
862 | |||
863 | arch_initcall(imx_dma_init); | ||
diff --git a/arch/arm/plat-mxc/ehci.c b/arch/arm/plat-mxc/ehci.c index 2a8646173c2f..35a064ff02ba 100644 --- a/arch/arm/plat-mxc/ehci.c +++ b/arch/arm/plat-mxc/ehci.c | |||
@@ -11,10 +11,6 @@ | |||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | 12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
13 | * for more details. | 13 | * for more details. |
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software Foundation, | ||
17 | * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
18 | */ | 14 | */ |
19 | 15 | ||
20 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
@@ -73,7 +69,51 @@ | |||
73 | int mxc_initialize_usb_hw(int port, unsigned int flags) | 69 | int mxc_initialize_usb_hw(int port, unsigned int flags) |
74 | { | 70 | { |
75 | unsigned int v; | 71 | unsigned int v; |
76 | #ifdef CONFIG_ARCH_MX3 | 72 | #if defined(CONFIG_ARCH_MX25) |
73 | if (cpu_is_mx25()) { | ||
74 | v = readl(MX25_IO_ADDRESS(MX25_OTG_BASE_ADDR + | ||
75 | USBCTRL_OTGBASE_OFFSET)); | ||
76 | |||
77 | switch (port) { | ||
78 | case 0: /* OTG port */ | ||
79 | v &= ~(MX35_OTG_SIC_MASK | MX35_OTG_PM_BIT); | ||
80 | v |= (flags & MXC_EHCI_INTERFACE_MASK) | ||
81 | << MX35_OTG_SIC_SHIFT; | ||
82 | if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) | ||
83 | v |= MX35_OTG_PM_BIT; | ||
84 | |||
85 | break; | ||
86 | case 1: /* H1 port */ | ||
87 | v &= ~(MX35_H1_SIC_MASK | MX35_H1_PM_BIT | MX35_H1_TLL_BIT | | ||
88 | MX35_H1_USBTE_BIT | MX35_H1_IPPUE_DOWN_BIT | MX35_H1_IPPUE_UP_BIT); | ||
89 | v |= (flags & MXC_EHCI_INTERFACE_MASK) | ||
90 | << MX35_H1_SIC_SHIFT; | ||
91 | if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) | ||
92 | v |= MX35_H1_PM_BIT; | ||
93 | |||
94 | if (!(flags & MXC_EHCI_TTL_ENABLED)) | ||
95 | v |= MX35_H1_TLL_BIT; | ||
96 | |||
97 | if (flags & MXC_EHCI_INTERNAL_PHY) | ||
98 | v |= MX35_H1_USBTE_BIT; | ||
99 | |||
100 | if (flags & MXC_EHCI_IPPUE_DOWN) | ||
101 | v |= MX35_H1_IPPUE_DOWN_BIT; | ||
102 | |||
103 | if (flags & MXC_EHCI_IPPUE_UP) | ||
104 | v |= MX35_H1_IPPUE_UP_BIT; | ||
105 | |||
106 | break; | ||
107 | default: | ||
108 | return -EINVAL; | ||
109 | } | ||
110 | |||
111 | writel(v, MX25_IO_ADDRESS(MX25_OTG_BASE_ADDR + | ||
112 | USBCTRL_OTGBASE_OFFSET)); | ||
113 | return 0; | ||
114 | } | ||
115 | #endif /* CONFIG_ARCH_MX25 */ | ||
116 | #if defined(CONFIG_ARCH_MX3) | ||
77 | if (cpu_is_mx31()) { | 117 | if (cpu_is_mx31()) { |
78 | v = readl(MX31_IO_ADDRESS(MX31_OTG_BASE_ADDR + | 118 | v = readl(MX31_IO_ADDRESS(MX31_OTG_BASE_ADDR + |
79 | USBCTRL_OTGBASE_OFFSET)); | 119 | USBCTRL_OTGBASE_OFFSET)); |
diff --git a/arch/arm/plat-mxc/gpio.c b/arch/arm/plat-mxc/gpio.c index 71437c61cfd7..57ec4a896a5d 100644 --- a/arch/arm/plat-mxc/gpio.c +++ b/arch/arm/plat-mxc/gpio.c | |||
@@ -214,13 +214,16 @@ static void _set_gpio_direction(struct gpio_chip *chip, unsigned offset, | |||
214 | struct mxc_gpio_port *port = | 214 | struct mxc_gpio_port *port = |
215 | container_of(chip, struct mxc_gpio_port, chip); | 215 | container_of(chip, struct mxc_gpio_port, chip); |
216 | u32 l; | 216 | u32 l; |
217 | unsigned long flags; | ||
217 | 218 | ||
219 | spin_lock_irqsave(&port->lock, flags); | ||
218 | l = __raw_readl(port->base + GPIO_GDIR); | 220 | l = __raw_readl(port->base + GPIO_GDIR); |
219 | if (dir) | 221 | if (dir) |
220 | l |= 1 << offset; | 222 | l |= 1 << offset; |
221 | else | 223 | else |
222 | l &= ~(1 << offset); | 224 | l &= ~(1 << offset); |
223 | __raw_writel(l, port->base + GPIO_GDIR); | 225 | __raw_writel(l, port->base + GPIO_GDIR); |
226 | spin_unlock_irqrestore(&port->lock, flags); | ||
224 | } | 227 | } |
225 | 228 | ||
226 | static void mxc_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | 229 | static void mxc_gpio_set(struct gpio_chip *chip, unsigned offset, int value) |
@@ -229,9 +232,12 @@ static void mxc_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | |||
229 | container_of(chip, struct mxc_gpio_port, chip); | 232 | container_of(chip, struct mxc_gpio_port, chip); |
230 | void __iomem *reg = port->base + GPIO_DR; | 233 | void __iomem *reg = port->base + GPIO_DR; |
231 | u32 l; | 234 | u32 l; |
235 | unsigned long flags; | ||
232 | 236 | ||
237 | spin_lock_irqsave(&port->lock, flags); | ||
233 | l = (__raw_readl(reg) & (~(1 << offset))) | (value << offset); | 238 | l = (__raw_readl(reg) & (~(1 << offset))) | (value << offset); |
234 | __raw_writel(l, reg); | 239 | __raw_writel(l, reg); |
240 | spin_unlock_irqrestore(&port->lock, flags); | ||
235 | } | 241 | } |
236 | 242 | ||
237 | static int mxc_gpio_get(struct gpio_chip *chip, unsigned offset) | 243 | static int mxc_gpio_get(struct gpio_chip *chip, unsigned offset) |
@@ -285,6 +291,8 @@ int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt) | |||
285 | port[i].chip.base = i * 32; | 291 | port[i].chip.base = i * 32; |
286 | port[i].chip.ngpio = 32; | 292 | port[i].chip.ngpio = 32; |
287 | 293 | ||
294 | spin_lock_init(&port[i].lock); | ||
295 | |||
288 | /* its a serious configuration bug when it fails */ | 296 | /* its a serious configuration bug when it fails */ |
289 | BUG_ON( gpiochip_add(&port[i].chip) < 0 ); | 297 | BUG_ON( gpiochip_add(&port[i].chip) < 0 ); |
290 | 298 | ||
@@ -292,6 +300,12 @@ int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt) | |||
292 | /* setup one handler for each entry */ | 300 | /* setup one handler for each entry */ |
293 | set_irq_chained_handler(port[i].irq, mx3_gpio_irq_handler); | 301 | set_irq_chained_handler(port[i].irq, mx3_gpio_irq_handler); |
294 | set_irq_data(port[i].irq, &port[i]); | 302 | set_irq_data(port[i].irq, &port[i]); |
303 | if (port[i].irq_high) { | ||
304 | /* setup handler for GPIO 16 to 31 */ | ||
305 | set_irq_chained_handler(port[i].irq_high, | ||
306 | mx3_gpio_irq_handler); | ||
307 | set_irq_data(port[i].irq_high, &port[i]); | ||
308 | } | ||
295 | } | 309 | } |
296 | } | 310 | } |
297 | 311 | ||
diff --git a/arch/arm/plat-mxc/include/mach/3ds_debugboard.h b/arch/arm/plat-mxc/include/mach/3ds_debugboard.h new file mode 100644 index 000000000000..a384fdd49c62 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/3ds_debugboard.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | * | ||
4 | * | ||
5 | * The code contained herein is licensed under the GNU General Public | ||
6 | * License. You may obtain a copy of the GNU General Public License | ||
7 | * Version 2 or later at the following locations: | ||
8 | * | ||
9 | * http://www.opensource.org/licenses/gpl-license.html | ||
10 | * http://www.gnu.org/copyleft/gpl.html | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_MXC_3DS_DB_H__ | ||
14 | #define __ASM_ARCH_MXC_3DS_DB_H__ | ||
15 | |||
16 | extern int __init mxc_expio_init(u32 base, u32 p_irq); | ||
17 | |||
18 | #endif /* __ASM_ARCH_MXC_3DS_DB_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-armadillo5x0.h b/arch/arm/plat-mxc/include/mach/board-armadillo5x0.h deleted file mode 100644 index 0376c133c9f4..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-armadillo5x0.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>. | ||
3 | * All Rights Reserved. | ||
4 | */ | ||
5 | |||
6 | /* | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef __ASM_ARCH_MXC_BOARD_ARMADILLO5X0_H__ | ||
13 | #define __ASM_ARCH_MXC_BOARD_ARMADILLO5X0_H__ | ||
14 | |||
15 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-kzmarm11.h b/arch/arm/plat-mxc/include/mach/board-kzmarm11.h deleted file mode 100644 index 93cc66f104c7..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-kzmarm11.h +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Yoichi Yuasa <yuasa@linux-mips.org> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __ARM_ARCH_BOARD_KZM_ARM11_H | ||
19 | #define __ARM_ARCH_BOARD_KZM_ARM11_H | ||
20 | |||
21 | /* | ||
22 | * KZM-ARM11-01 Board Control Registers on FPGA | ||
23 | */ | ||
24 | #define KZM_ARM11_CTL1 (MX31_CS4_BASE_ADDR + 0x1000) | ||
25 | #define KZM_ARM11_CTL2 (MX31_CS4_BASE_ADDR + 0x1001) | ||
26 | #define KZM_ARM11_RSW1 (MX31_CS4_BASE_ADDR + 0x1002) | ||
27 | #define KZM_ARM11_BACK_LIGHT (MX31_CS4_BASE_ADDR + 0x1004) | ||
28 | #define KZM_ARM11_FPGA_REV (MX31_CS4_BASE_ADDR + 0x1008) | ||
29 | #define KZM_ARM11_7SEG_LED (MX31_CS4_BASE_ADDR + 0x1010) | ||
30 | #define KZM_ARM11_LEDS (MX31_CS4_BASE_ADDR + 0x1020) | ||
31 | #define KZM_ARM11_DIPSW2 (MX31_CS4_BASE_ADDR + 0x1003) | ||
32 | |||
33 | /* | ||
34 | * External UART for touch panel on FPGA | ||
35 | */ | ||
36 | #define KZM_ARM11_16550 (MX31_CS4_BASE_ADDR + 0x1050) | ||
37 | |||
38 | #endif /* __ARM_ARCH_BOARD_KZM_ARM11_H */ | ||
39 | |||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx21ads.h b/arch/arm/plat-mxc/include/mach/board-mx21ads.h deleted file mode 100644 index 0cf4fa29510c..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx21ads.h +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * The code contained herein is licensed under the GNU General Public | ||
7 | * License. You may obtain a copy of the GNU General Public License | ||
8 | * Version 2 or later at the following locations: | ||
9 | * | ||
10 | * http://www.opensource.org/licenses/gpl-license.html | ||
11 | * http://www.gnu.org/copyleft/gpl.html | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_ARCH_MXC_BOARD_MX21ADS_H__ | ||
15 | #define __ASM_ARCH_MXC_BOARD_MX21ADS_H__ | ||
16 | |||
17 | /* | ||
18 | * Memory-mapped I/O on MX21ADS base board | ||
19 | */ | ||
20 | #define MX21ADS_MMIO_BASE_ADDR 0xF5000000 | ||
21 | #define MX21ADS_MMIO_SIZE SZ_16M | ||
22 | |||
23 | #define MX21ADS_REG_ADDR(offset) (void __force __iomem *) \ | ||
24 | (MX21ADS_MMIO_BASE_ADDR + (offset)) | ||
25 | |||
26 | #define MX21ADS_CS8900A_IRQ IRQ_GPIOE(11) | ||
27 | #define MX21ADS_CS8900A_IOBASE_REG MX21ADS_REG_ADDR(0x000000) | ||
28 | #define MX21ADS_ST16C255_IOBASE_REG MX21ADS_REG_ADDR(0x200000) | ||
29 | #define MX21ADS_VERSION_REG MX21ADS_REG_ADDR(0x400000) | ||
30 | #define MX21ADS_IO_REG MX21ADS_REG_ADDR(0x800000) | ||
31 | |||
32 | /* MX21ADS_IO_REG bit definitions */ | ||
33 | #define MX21ADS_IO_SD_WP 0x0001 /* read */ | ||
34 | #define MX21ADS_IO_TP6 0x0001 /* write */ | ||
35 | #define MX21ADS_IO_SW_SEL 0x0002 /* read */ | ||
36 | #define MX21ADS_IO_TP7 0x0002 /* write */ | ||
37 | #define MX21ADS_IO_RESET_E_UART 0x0004 | ||
38 | #define MX21ADS_IO_RESET_BASE 0x0008 | ||
39 | #define MX21ADS_IO_CSI_CTL2 0x0010 | ||
40 | #define MX21ADS_IO_CSI_CTL1 0x0020 | ||
41 | #define MX21ADS_IO_CSI_CTL0 0x0040 | ||
42 | #define MX21ADS_IO_UART1_EN 0x0080 | ||
43 | #define MX21ADS_IO_UART4_EN 0x0100 | ||
44 | #define MX21ADS_IO_LCDON 0x0200 | ||
45 | #define MX21ADS_IO_IRDA_EN 0x0400 | ||
46 | #define MX21ADS_IO_IRDA_FIR_SEL 0x0800 | ||
47 | #define MX21ADS_IO_IRDA_MD0_B 0x1000 | ||
48 | #define MX21ADS_IO_IRDA_MD1 0x2000 | ||
49 | #define MX21ADS_IO_LED4_ON 0x4000 | ||
50 | #define MX21ADS_IO_LED3_ON 0x8000 | ||
51 | |||
52 | #endif /* __ASM_ARCH_MXC_BOARD_MX21ADS_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx27ads.h b/arch/arm/plat-mxc/include/mach/board-mx27ads.h deleted file mode 100644 index 7776d230327f..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx27ads.h +++ /dev/null | |||
@@ -1,344 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * The code contained herein is licensed under the GNU General Public | ||
7 | * License. You may obtain a copy of the GNU General Public License | ||
8 | * Version 2 or later at the following locations: | ||
9 | * | ||
10 | * http://www.opensource.org/licenses/gpl-license.html | ||
11 | * http://www.gnu.org/copyleft/gpl.html | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_ARCH_MXC_BOARD_MX27ADS_H__ | ||
15 | #define __ASM_ARCH_MXC_BOARD_MX27ADS_H__ | ||
16 | |||
17 | /* external interrupt multiplexer */ | ||
18 | #define MXC_EXP_IO_BASE (MXC_BOARD_IRQ_START) | ||
19 | |||
20 | #define MXC_VIRTUAL_INTS_BASE (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES) | ||
21 | #define MXC_SDIO1_CARD_IRQ MXC_VIRTUAL_INTS_BASE | ||
22 | #define MXC_SDIO2_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 1) | ||
23 | #define MXC_SDIO3_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 2) | ||
24 | |||
25 | #define MXC_MAX_BOARD_INTS (MXC_MAX_EXP_IO_LINES + \ | ||
26 | MXC_MAX_VIRTUAL_INTS) | ||
27 | |||
28 | /* | ||
29 | * @name Memory Size parameters | ||
30 | */ | ||
31 | |||
32 | /* | ||
33 | * Size of SDRAM memory | ||
34 | */ | ||
35 | #define SDRAM_MEM_SIZE SZ_128M | ||
36 | |||
37 | /* | ||
38 | * PBC Controller parameters | ||
39 | */ | ||
40 | |||
41 | /* | ||
42 | * Base address of PBC controller, CS4 | ||
43 | */ | ||
44 | #define PBC_BASE_ADDRESS 0xf4300000 | ||
45 | #define PBC_REG_ADDR(offset) (void __force __iomem *) \ | ||
46 | (PBC_BASE_ADDRESS + (offset)) | ||
47 | |||
48 | /* | ||
49 | * PBC Interupt name definitions | ||
50 | */ | ||
51 | #define PBC_GPIO1_0 0 | ||
52 | #define PBC_GPIO1_1 1 | ||
53 | #define PBC_GPIO1_2 2 | ||
54 | #define PBC_GPIO1_3 3 | ||
55 | #define PBC_GPIO1_4 4 | ||
56 | #define PBC_GPIO1_5 5 | ||
57 | |||
58 | #define PBC_INTR_MAX_NUM 6 | ||
59 | #define PBC_INTR_SHARED_MAX_NUM 8 | ||
60 | |||
61 | /* When the PBC address connection is fixed in h/w, defined as 1 */ | ||
62 | #define PBC_ADDR_SH 0 | ||
63 | |||
64 | /* Offsets for the PBC Controller register */ | ||
65 | /* | ||
66 | * PBC Board version register offset | ||
67 | */ | ||
68 | #define PBC_VERSION_REG PBC_REG_ADDR(0x00000 >> PBC_ADDR_SH) | ||
69 | /* | ||
70 | * PBC Board control register 1 set address. | ||
71 | */ | ||
72 | #define PBC_BCTRL1_SET_REG PBC_REG_ADDR(0x00008 >> PBC_ADDR_SH) | ||
73 | /* | ||
74 | * PBC Board control register 1 clear address. | ||
75 | */ | ||
76 | #define PBC_BCTRL1_CLEAR_REG PBC_REG_ADDR(0x0000C >> PBC_ADDR_SH) | ||
77 | /* | ||
78 | * PBC Board control register 2 set address. | ||
79 | */ | ||
80 | #define PBC_BCTRL2_SET_REG PBC_REG_ADDR(0x00010 >> PBC_ADDR_SH) | ||
81 | /* | ||
82 | * PBC Board control register 2 clear address. | ||
83 | */ | ||
84 | #define PBC_BCTRL2_CLEAR_REG PBC_REG_ADDR(0x00014 >> PBC_ADDR_SH) | ||
85 | /* | ||
86 | * PBC Board control register 3 set address. | ||
87 | */ | ||
88 | #define PBC_BCTRL3_SET_REG PBC_REG_ADDR(0x00018 >> PBC_ADDR_SH) | ||
89 | /* | ||
90 | * PBC Board control register 3 clear address. | ||
91 | */ | ||
92 | #define PBC_BCTRL3_CLEAR_REG PBC_REG_ADDR(0x0001C >> PBC_ADDR_SH) | ||
93 | /* | ||
94 | * PBC Board control register 3 set address. | ||
95 | */ | ||
96 | #define PBC_BCTRL4_SET_REG PBC_REG_ADDR(0x00020 >> PBC_ADDR_SH) | ||
97 | /* | ||
98 | * PBC Board control register 4 clear address. | ||
99 | */ | ||
100 | #define PBC_BCTRL4_CLEAR_REG PBC_REG_ADDR(0x00024 >> PBC_ADDR_SH) | ||
101 | /*PBC_ADDR_SH | ||
102 | * PBC Board status register 1. | ||
103 | */ | ||
104 | #define PBC_BSTAT1_REG PBC_REG_ADDR(0x00028 >> PBC_ADDR_SH) | ||
105 | /* | ||
106 | * PBC Board interrupt status register. | ||
107 | */ | ||
108 | #define PBC_INTSTATUS_REG PBC_REG_ADDR(0x0002C >> PBC_ADDR_SH) | ||
109 | /* | ||
110 | * PBC Board interrupt current status register. | ||
111 | */ | ||
112 | #define PBC_INTCURR_STATUS_REG PBC_REG_ADDR(0x00034 >> PBC_ADDR_SH) | ||
113 | /* | ||
114 | * PBC Interrupt mask register set address. | ||
115 | */ | ||
116 | #define PBC_INTMASK_SET_REG PBC_REG_ADDR(0x00038 >> PBC_ADDR_SH) | ||
117 | /* | ||
118 | * PBC Interrupt mask register clear address. | ||
119 | */ | ||
120 | #define PBC_INTMASK_CLEAR_REG PBC_REG_ADDR(0x0003C >> PBC_ADDR_SH) | ||
121 | /* | ||
122 | * External UART A. | ||
123 | */ | ||
124 | #define PBC_SC16C652_UARTA_REG PBC_REG_ADDR(0x20000 >> PBC_ADDR_SH) | ||
125 | /* | ||
126 | * UART 4 Expanding Signal Status. | ||
127 | */ | ||
128 | #define PBC_UART_STATUS_REG PBC_REG_ADDR(0x22000 >> PBC_ADDR_SH) | ||
129 | /* | ||
130 | * UART 4 Expanding Signal Control Set. | ||
131 | */ | ||
132 | #define PBC_UCTRL_SET_REG PBC_REG_ADDR(0x24000 >> PBC_ADDR_SH) | ||
133 | /* | ||
134 | * UART 4 Expanding Signal Control Clear. | ||
135 | */ | ||
136 | #define PBC_UCTRL_CLR_REG PBC_REG_ADDR(0x26000 >> PBC_ADDR_SH) | ||
137 | /* | ||
138 | * Ethernet Controller IO base address. | ||
139 | */ | ||
140 | #define PBC_CS8900A_IOBASE_REG PBC_REG_ADDR(0x40000 >> PBC_ADDR_SH) | ||
141 | /* | ||
142 | * Ethernet Controller Memory base address. | ||
143 | */ | ||
144 | #define PBC_CS8900A_MEMBASE_REG PBC_REG_ADDR(0x42000 >> PBC_ADDR_SH) | ||
145 | /* | ||
146 | * Ethernet Controller DMA base address. | ||
147 | */ | ||
148 | #define PBC_CS8900A_DMABASE_REG PBC_REG_ADDR(0x44000 >> PBC_ADDR_SH) | ||
149 | |||
150 | /* PBC Board Version Register bit definition */ | ||
151 | #define PBC_VERSION_ADS 0x8000 /* Bit15=1 means version for ads */ | ||
152 | #define PBC_VERSION_EVB_REVB 0x4000 /* BIT14=1 means version for evb revb */ | ||
153 | |||
154 | /* PBC Board Control Register 1 bit definitions */ | ||
155 | #define PBC_BCTRL1_ERST 0x0001 /* Ethernet Reset */ | ||
156 | #define PBC_BCTRL1_URST 0x0002 /* Reset External UART controller */ | ||
157 | #define PBC_BCTRL1_FRST 0x0004 /* FEC Reset */ | ||
158 | #define PBC_BCTRL1_ESLEEP 0x0010 /* Enable ethernet Sleep */ | ||
159 | #define PBC_BCTRL1_LCDON 0x0800 /* Enable the LCD */ | ||
160 | |||
161 | /* PBC Board Control Register 2 bit definitions */ | ||
162 | #define PBC_BCTRL2_VCC_EN 0x0004 /* Enable VCC */ | ||
163 | #define PBC_BCTRL2_VPP_EN 0x0008 /* Enable Vpp */ | ||
164 | #define PBC_BCTRL2_ATAFEC_EN 0X0010 | ||
165 | #define PBC_BCTRL2_ATAFEC_SEL 0X0020 | ||
166 | #define PBC_BCTRL2_ATA_EN 0X0040 | ||
167 | #define PBC_BCTRL2_IRDA_SD 0X0080 | ||
168 | #define PBC_BCTRL2_IRDA_EN 0X0100 | ||
169 | #define PBC_BCTRL2_CCTL10 0X0200 | ||
170 | #define PBC_BCTRL2_CCTL11 0X0400 | ||
171 | |||
172 | /* PBC Board Control Register 3 bit definitions */ | ||
173 | #define PBC_BCTRL3_HSH_EN 0X0020 | ||
174 | #define PBC_BCTRL3_FSH_MOD 0X0040 | ||
175 | #define PBC_BCTRL3_OTG_HS_EN 0X0080 | ||
176 | #define PBC_BCTRL3_OTG_VBUS_EN 0X0100 | ||
177 | #define PBC_BCTRL3_FSH_VBUS_EN 0X0200 | ||
178 | #define PBC_BCTRL3_USB_OTG_ON 0X0800 | ||
179 | #define PBC_BCTRL3_USB_FSH_ON 0X1000 | ||
180 | |||
181 | /* PBC Board Control Register 4 bit definitions */ | ||
182 | #define PBC_BCTRL4_REGEN_SEL 0X0001 | ||
183 | #define PBC_BCTRL4_USER_OFF 0X0002 | ||
184 | #define PBC_BCTRL4_VIB_EN 0X0004 | ||
185 | #define PBC_BCTRL4_PWRGT1_EN 0X0008 | ||
186 | #define PBC_BCTRL4_PWRGT2_EN 0X0010 | ||
187 | #define PBC_BCTRL4_STDBY_PRI 0X0020 | ||
188 | |||
189 | #ifndef __ASSEMBLY__ | ||
190 | /* | ||
191 | * Enumerations for SD cards and memory stick card. This corresponds to | ||
192 | * the card EN bits in the IMR: SD1_EN | MS_EN | SD3_EN | SD2_EN. | ||
193 | */ | ||
194 | enum mxc_card_no { | ||
195 | MXC_CARD_SD2 = 0, | ||
196 | MXC_CARD_SD3, | ||
197 | MXC_CARD_MS, | ||
198 | MXC_CARD_SD1, | ||
199 | MXC_CARD_MIN = MXC_CARD_SD2, | ||
200 | MXC_CARD_MAX = MXC_CARD_SD1, | ||
201 | }; | ||
202 | #endif | ||
203 | |||
204 | #define MXC_CPLD_VER_1_50 0x01 | ||
205 | |||
206 | /* | ||
207 | * PBC BSTAT Register bit definitions | ||
208 | */ | ||
209 | #define PBC_BSTAT_PRI_INT 0X0001 | ||
210 | #define PBC_BSTAT_USB_BYP 0X0002 | ||
211 | #define PBC_BSTAT_ATA_IOCS16 0X0004 | ||
212 | #define PBC_BSTAT_ATA_CBLID 0X0008 | ||
213 | #define PBC_BSTAT_ATA_DASP 0X0010 | ||
214 | #define PBC_BSTAT_PWR_RDY 0X0020 | ||
215 | #define PBC_BSTAT_SD3_WP 0X0100 | ||
216 | #define PBC_BSTAT_SD2_WP 0X0200 | ||
217 | #define PBC_BSTAT_SD1_WP 0X0400 | ||
218 | #define PBC_BSTAT_SD3_DET 0X0800 | ||
219 | #define PBC_BSTAT_SD2_DET 0X1000 | ||
220 | #define PBC_BSTAT_SD1_DET 0X2000 | ||
221 | #define PBC_BSTAT_MS_DET 0X4000 | ||
222 | #define PBC_BSTAT_SD3_DET_BIT 11 | ||
223 | #define PBC_BSTAT_SD2_DET_BIT 12 | ||
224 | #define PBC_BSTAT_SD1_DET_BIT 13 | ||
225 | #define PBC_BSTAT_MS_DET_BIT 14 | ||
226 | #define MXC_BSTAT_BIT(n) ((n == MXC_CARD_SD2) ? PBC_BSTAT_SD2_DET : \ | ||
227 | ((n == MXC_CARD_SD3) ? PBC_BSTAT_SD3_DET : \ | ||
228 | ((n == MXC_CARD_SD1) ? PBC_BSTAT_SD1_DET : \ | ||
229 | ((n == MXC_CARD_MS) ? PBC_BSTAT_MS_DET : \ | ||
230 | 0x0)))) | ||
231 | |||
232 | /* | ||
233 | * PBC UART Control Register bit definitions | ||
234 | */ | ||
235 | #define PBC_UCTRL_DCE_DCD 0X0001 | ||
236 | #define PBC_UCTRL_DCE_DSR 0X0002 | ||
237 | #define PBC_UCTRL_DCE_RI 0X0004 | ||
238 | #define PBC_UCTRL_DTE_DTR 0X0100 | ||
239 | |||
240 | /* | ||
241 | * PBC UART Status Register bit definitions | ||
242 | */ | ||
243 | #define PBC_USTAT_DTE_DCD 0X0001 | ||
244 | #define PBC_USTAT_DTE_DSR 0X0002 | ||
245 | #define PBC_USTAT_DTE_RI 0X0004 | ||
246 | #define PBC_USTAT_DCE_DTR 0X0100 | ||
247 | |||
248 | /* | ||
249 | * PBC Interupt mask register bit definitions | ||
250 | */ | ||
251 | #define PBC_INTR_SD3_R_EN_BIT 4 | ||
252 | #define PBC_INTR_SD2_R_EN_BIT 0 | ||
253 | #define PBC_INTR_SD1_R_EN_BIT 6 | ||
254 | #define PBC_INTR_MS_R_EN_BIT 5 | ||
255 | #define PBC_INTR_SD3_EN_BIT 13 | ||
256 | #define PBC_INTR_SD2_EN_BIT 12 | ||
257 | #define PBC_INTR_MS_EN_BIT 14 | ||
258 | #define PBC_INTR_SD1_EN_BIT 15 | ||
259 | |||
260 | #define PBC_INTR_SD2_R_EN 0x0001 | ||
261 | #define PBC_INTR_LOW_BAT 0X0002 | ||
262 | #define PBC_INTR_OTG_FSOVER 0X0004 | ||
263 | #define PBC_INTR_FSH_OVER 0X0008 | ||
264 | #define PBC_INTR_SD3_R_EN 0x0010 | ||
265 | #define PBC_INTR_MS_R_EN 0x0020 | ||
266 | #define PBC_INTR_SD1_R_EN 0x0040 | ||
267 | #define PBC_INTR_FEC_INT 0X0080 | ||
268 | #define PBC_INTR_ENET_INT 0X0100 | ||
269 | #define PBC_INTR_OTGFS_INT 0X0200 | ||
270 | #define PBC_INTR_XUART_INT 0X0400 | ||
271 | #define PBC_INTR_CCTL12 0X0800 | ||
272 | #define PBC_INTR_SD2_EN 0x1000 | ||
273 | #define PBC_INTR_SD3_EN 0x2000 | ||
274 | #define PBC_INTR_MS_EN 0x4000 | ||
275 | #define PBC_INTR_SD1_EN 0x8000 | ||
276 | |||
277 | |||
278 | |||
279 | /* For interrupts like xuart, enet etc */ | ||
280 | #define EXPIO_PARENT_INT IOMUX_TO_IRQ(MX27_PIN_TIN) | ||
281 | #define MXC_MAX_EXP_IO_LINES 16 | ||
282 | |||
283 | /* | ||
284 | * This corresponds to PBC_INTMASK_SET_REG at offset 0x38. | ||
285 | * | ||
286 | */ | ||
287 | #define EXPIO_INT_LOW_BAT (MXC_EXP_IO_BASE + 1) | ||
288 | #define EXPIO_INT_OTG_FS_OVR (MXC_EXP_IO_BASE + 2) | ||
289 | #define EXPIO_INT_FSH_OVR (MXC_EXP_IO_BASE + 3) | ||
290 | #define EXPIO_INT_RES4 (MXC_EXP_IO_BASE + 4) | ||
291 | #define EXPIO_INT_RES5 (MXC_EXP_IO_BASE + 5) | ||
292 | #define EXPIO_INT_RES6 (MXC_EXP_IO_BASE + 6) | ||
293 | #define EXPIO_INT_FEC (MXC_EXP_IO_BASE + 7) | ||
294 | #define EXPIO_INT_ENET_INT (MXC_EXP_IO_BASE + 8) | ||
295 | #define EXPIO_INT_OTG_FS_INT (MXC_EXP_IO_BASE + 9) | ||
296 | #define EXPIO_INT_XUART_INTA (MXC_EXP_IO_BASE + 10) | ||
297 | #define EXPIO_INT_CCTL12_INT (MXC_EXP_IO_BASE + 11) | ||
298 | #define EXPIO_INT_SD2_EN (MXC_EXP_IO_BASE + 12) | ||
299 | #define EXPIO_INT_SD3_EN (MXC_EXP_IO_BASE + 13) | ||
300 | #define EXPIO_INT_MS_EN (MXC_EXP_IO_BASE + 14) | ||
301 | #define EXPIO_INT_SD1_EN (MXC_EXP_IO_BASE + 15) | ||
302 | |||
303 | /* | ||
304 | * This is System IRQ used by CS8900A for interrupt generation | ||
305 | * taken from platform.h | ||
306 | */ | ||
307 | #define CS8900AIRQ EXPIO_INT_ENET_INT | ||
308 | /* This is I/O Base address used to access registers of CS8900A on MXC ADS */ | ||
309 | #define CS8900A_BASE_ADDRESS (PBC_CS8900A_IOBASE_REG + 0x300) | ||
310 | |||
311 | #define MXC_PMIC_INT_LINE IOMUX_TO_IRQ(MX27_PIN_TOUT) | ||
312 | |||
313 | /* | ||
314 | * This is used to detect if the CPLD version is for mx27 evb board rev-a | ||
315 | */ | ||
316 | #define PBC_CPLD_VERSION_IS_REVA() \ | ||
317 | ((__raw_readw(PBC_VERSION_REG) & \ | ||
318 | (PBC_VERSION_ADS | PBC_VERSION_EVB_REVB))\ | ||
319 | == 0) | ||
320 | |||
321 | /* This is used to active or inactive ata signal in CPLD . | ||
322 | * It is dependent with hardware | ||
323 | */ | ||
324 | #define PBC_ATA_SIGNAL_ACTIVE() \ | ||
325 | __raw_writew( \ | ||
326 | PBC_BCTRL2_ATAFEC_EN|PBC_BCTRL2_ATAFEC_SEL|PBC_BCTRL2_ATA_EN, \ | ||
327 | PBC_BCTRL2_CLEAR_REG) | ||
328 | |||
329 | #define PBC_ATA_SIGNAL_INACTIVE() \ | ||
330 | __raw_writew( \ | ||
331 | PBC_BCTRL2_ATAFEC_EN|PBC_BCTRL2_ATAFEC_SEL|PBC_BCTRL2_ATA_EN, \ | ||
332 | PBC_BCTRL2_SET_REG) | ||
333 | |||
334 | #define MXC_BD_LED1 (1 << 5) | ||
335 | #define MXC_BD_LED2 (1 << 6) | ||
336 | #define MXC_BD_LED_ON(led) \ | ||
337 | __raw_writew(led, PBC_BCTRL1_SET_REG) | ||
338 | #define MXC_BD_LED_OFF(led) \ | ||
339 | __raw_writew(led, PBC_BCTRL1_CLEAR_REG) | ||
340 | |||
341 | /* to determine the correct external crystal reference */ | ||
342 | #define CKIH_27MHZ_BIT_SET (1 << 3) | ||
343 | |||
344 | #endif /* __ASM_ARCH_MXC_BOARD_MX27ADS_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx27lite.h b/arch/arm/plat-mxc/include/mach/board-mx27lite.h deleted file mode 100644 index ea87551d2736..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx27lite.h +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_MXC_BOARD_MX27LITE_H__ | ||
12 | #define __ASM_ARCH_MXC_BOARD_MX27LITE_H__ | ||
13 | |||
14 | #endif /* __ASM_ARCH_MXC_BOARD_MX27LITE_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx27pdk.h b/arch/arm/plat-mxc/include/mach/board-mx27pdk.h deleted file mode 100644 index fec1bcfa9164..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx27pdk.h +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_MXC_BOARD_MX27PDK_H__ | ||
12 | #define __ASM_ARCH_MXC_BOARD_MX27PDK_H__ | ||
13 | |||
14 | #endif /* __ASM_ARCH_MXC_BOARD_MX27PDK_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h deleted file mode 100644 index da92933a233b..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ | ||
12 | #define __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ | ||
13 | |||
14 | /* Definitions for components on the Debug board */ | ||
15 | |||
16 | /* Base address of CPLD controller on the Debug board */ | ||
17 | #define DEBUG_BASE_ADDRESS CS5_IO_ADDRESS(CS5_BASE_ADDR) | ||
18 | |||
19 | /* LAN9217 ethernet base address */ | ||
20 | #define LAN9217_BASE_ADDR CS5_BASE_ADDR | ||
21 | |||
22 | /* CPLD config and interrupt base address */ | ||
23 | #define CPLD_ADDR (DEBUG_BASE_ADDRESS + 0x20000) | ||
24 | |||
25 | /* LED switchs */ | ||
26 | #define CPLD_LED_REG (CPLD_ADDR + 0x00) | ||
27 | /* buttons */ | ||
28 | #define CPLD_SWITCH_BUTTONS_REG (EXPIO_ADDR + 0x08) | ||
29 | /* status, interrupt */ | ||
30 | #define CPLD_INT_STATUS_REG (CPLD_ADDR + 0x10) | ||
31 | #define CPLD_INT_MASK_REG (CPLD_ADDR + 0x38) | ||
32 | #define CPLD_INT_RESET_REG (CPLD_ADDR + 0x20) | ||
33 | /* magic word for debug CPLD */ | ||
34 | #define CPLD_MAGIC_NUMBER1_REG (CPLD_ADDR + 0x40) | ||
35 | #define CPLD_MAGIC_NUMBER2_REG (CPLD_ADDR + 0x48) | ||
36 | /* CPLD code version */ | ||
37 | #define CPLD_CODE_VER_REG (CPLD_ADDR + 0x50) | ||
38 | /* magic word for debug CPLD */ | ||
39 | #define CPLD_MAGIC_NUMBER3_REG (CPLD_ADDR + 0x58) | ||
40 | /* module reset register */ | ||
41 | #define CPLD_MODULE_RESET_REG (CPLD_ADDR + 0x60) | ||
42 | /* CPU ID and Personality ID */ | ||
43 | #define CPLD_MCU_BOARD_ID_REG (CPLD_ADDR + 0x68) | ||
44 | |||
45 | /* CPLD IRQ line for external uart, external ethernet etc */ | ||
46 | #define EXPIO_PARENT_INT IOMUX_TO_IRQ(MX31_PIN_GPIO1_1) | ||
47 | |||
48 | #define MXC_EXP_IO_BASE (MXC_BOARD_IRQ_START) | ||
49 | #define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_EXP_IO_BASE) | ||
50 | |||
51 | #define EXPIO_INT_ENET (MXC_EXP_IO_BASE + 0) | ||
52 | #define EXPIO_INT_XUART_A (MXC_EXP_IO_BASE + 1) | ||
53 | #define EXPIO_INT_XUART_B (MXC_EXP_IO_BASE + 2) | ||
54 | #define EXPIO_INT_BUTTON_A (MXC_EXP_IO_BASE + 3) | ||
55 | #define EXPIO_INT_BUTTON_B (MXC_EXP_IO_BASE + 4) | ||
56 | |||
57 | #define MXC_MAX_EXP_IO_LINES 16 | ||
58 | |||
59 | #endif /* __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31ads.h b/arch/arm/plat-mxc/include/mach/board-mx31ads.h deleted file mode 100644 index 095a199591c6..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx31ads.h +++ /dev/null | |||
@@ -1,117 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_MXC_BOARD_MX31ADS_H__ | ||
12 | #define __ASM_ARCH_MXC_BOARD_MX31ADS_H__ | ||
13 | |||
14 | #include <mach/hardware.h> | ||
15 | |||
16 | /* Base address of PBC controller */ | ||
17 | #define PBC_BASE_ADDRESS MX31_CS4_BASE_ADDR_VIRT | ||
18 | /* Offsets for the PBC Controller register */ | ||
19 | |||
20 | /* PBC Board status register offset */ | ||
21 | #define PBC_BSTAT 0x000002 | ||
22 | |||
23 | /* PBC Board control register 1 set address */ | ||
24 | #define PBC_BCTRL1_SET 0x000004 | ||
25 | |||
26 | /* PBC Board control register 1 clear address */ | ||
27 | #define PBC_BCTRL1_CLEAR 0x000006 | ||
28 | |||
29 | /* PBC Board control register 2 set address */ | ||
30 | #define PBC_BCTRL2_SET 0x000008 | ||
31 | |||
32 | /* PBC Board control register 2 clear address */ | ||
33 | #define PBC_BCTRL2_CLEAR 0x00000A | ||
34 | |||
35 | /* PBC Board control register 3 set address */ | ||
36 | #define PBC_BCTRL3_SET 0x00000C | ||
37 | |||
38 | /* PBC Board control register 3 clear address */ | ||
39 | #define PBC_BCTRL3_CLEAR 0x00000E | ||
40 | |||
41 | /* PBC Board control register 4 set address */ | ||
42 | #define PBC_BCTRL4_SET 0x000010 | ||
43 | |||
44 | /* PBC Board control register 4 clear address */ | ||
45 | #define PBC_BCTRL4_CLEAR 0x000012 | ||
46 | |||
47 | /* PBC Board status register 1 */ | ||
48 | #define PBC_BSTAT1 0x000014 | ||
49 | |||
50 | /* PBC Board interrupt status register */ | ||
51 | #define PBC_INTSTATUS 0x000016 | ||
52 | |||
53 | /* PBC Board interrupt current status register */ | ||
54 | #define PBC_INTCURR_STATUS 0x000018 | ||
55 | |||
56 | /* PBC Interrupt mask register set address */ | ||
57 | #define PBC_INTMASK_SET 0x00001A | ||
58 | |||
59 | /* PBC Interrupt mask register clear address */ | ||
60 | #define PBC_INTMASK_CLEAR 0x00001C | ||
61 | |||
62 | /* External UART A */ | ||
63 | #define PBC_SC16C652_UARTA 0x010000 | ||
64 | |||
65 | /* External UART B */ | ||
66 | #define PBC_SC16C652_UARTB 0x010010 | ||
67 | |||
68 | /* Ethernet Controller IO base address */ | ||
69 | #define PBC_CS8900A_IOBASE 0x020000 | ||
70 | |||
71 | /* Ethernet Controller Memory base address */ | ||
72 | #define PBC_CS8900A_MEMBASE 0x021000 | ||
73 | |||
74 | /* Ethernet Controller DMA base address */ | ||
75 | #define PBC_CS8900A_DMABASE 0x022000 | ||
76 | |||
77 | /* External chip select 0 */ | ||
78 | #define PBC_XCS0 0x040000 | ||
79 | |||
80 | /* LCD Display enable */ | ||
81 | #define PBC_LCD_EN_B 0x060000 | ||
82 | |||
83 | /* Code test debug enable */ | ||
84 | #define PBC_CODE_B 0x070000 | ||
85 | |||
86 | /* PSRAM memory select */ | ||
87 | #define PBC_PSRAM_B 0x5000000 | ||
88 | |||
89 | #define PBC_INTSTATUS_REG (PBC_INTSTATUS + PBC_BASE_ADDRESS) | ||
90 | #define PBC_INTCURR_STATUS_REG (PBC_INTCURR_STATUS + PBC_BASE_ADDRESS) | ||
91 | #define PBC_INTMASK_SET_REG (PBC_INTMASK_SET + PBC_BASE_ADDRESS) | ||
92 | #define PBC_INTMASK_CLEAR_REG (PBC_INTMASK_CLEAR + PBC_BASE_ADDRESS) | ||
93 | #define EXPIO_PARENT_INT IOMUX_TO_IRQ(MX31_PIN_GPIO1_4) | ||
94 | |||
95 | #define MXC_EXP_IO_BASE (MXC_BOARD_IRQ_START) | ||
96 | #define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_EXP_IO_BASE) | ||
97 | |||
98 | #define EXPIO_INT_LOW_BAT (MXC_EXP_IO_BASE + 0) | ||
99 | #define EXPIO_INT_PB_IRQ (MXC_EXP_IO_BASE + 1) | ||
100 | #define EXPIO_INT_OTG_FS_OVR (MXC_EXP_IO_BASE + 2) | ||
101 | #define EXPIO_INT_FSH_OVR (MXC_EXP_IO_BASE + 3) | ||
102 | #define EXPIO_INT_RES4 (MXC_EXP_IO_BASE + 4) | ||
103 | #define EXPIO_INT_RES5 (MXC_EXP_IO_BASE + 5) | ||
104 | #define EXPIO_INT_RES6 (MXC_EXP_IO_BASE + 6) | ||
105 | #define EXPIO_INT_RES7 (MXC_EXP_IO_BASE + 7) | ||
106 | #define EXPIO_INT_ENET_INT (MXC_EXP_IO_BASE + 8) | ||
107 | #define EXPIO_INT_OTG_FS_INT (MXC_EXP_IO_BASE + 9) | ||
108 | #define EXPIO_INT_XUART_INTA (MXC_EXP_IO_BASE + 10) | ||
109 | #define EXPIO_INT_XUART_INTB (MXC_EXP_IO_BASE + 11) | ||
110 | #define EXPIO_INT_SYNTH_IRQ (MXC_EXP_IO_BASE + 12) | ||
111 | #define EXPIO_INT_CE_INT1 (MXC_EXP_IO_BASE + 13) | ||
112 | #define EXPIO_INT_CE_INT2 (MXC_EXP_IO_BASE + 14) | ||
113 | #define EXPIO_INT_RES15 (MXC_EXP_IO_BASE + 15) | ||
114 | |||
115 | #define MXC_MAX_EXP_IO_LINES 16 | ||
116 | |||
117 | #endif /* __ASM_ARCH_MXC_BOARD_MX31ADS_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31lilly.h b/arch/arm/plat-mxc/include/mach/board-mx31lilly.h index eb5a5024622e..0df71bfefbb1 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31lilly.h +++ b/arch/arm/plat-mxc/include/mach/board-mx31lilly.h | |||
@@ -31,7 +31,7 @@ enum mx31lilly_boards { | |||
31 | 31 | ||
32 | /* | 32 | /* |
33 | * This CPU module needs a baseboard to work. After basic initializing | 33 | * This CPU module needs a baseboard to work. After basic initializing |
34 | * its own devices, it calls baseboard's init function. | 34 | * its own devices, it calls the baseboard's init function. |
35 | */ | 35 | */ |
36 | 36 | ||
37 | extern void mx31lilly_db_init(void); | 37 | extern void mx31lilly_db_init(void); |
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31lite.h b/arch/arm/plat-mxc/include/mach/board-mx31lite.h index 2b2da0367578..c1ad0ae807cc 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31lite.h +++ b/arch/arm/plat-mxc/include/mach/board-mx31lite.h | |||
@@ -32,7 +32,7 @@ enum mx31lite_boards { | |||
32 | 32 | ||
33 | /* | 33 | /* |
34 | * This CPU module needs a baseboard to work. After basic initializing | 34 | * This CPU module needs a baseboard to work. After basic initializing |
35 | * its own devices, it calls baseboard's init function. | 35 | * its own devices, it calls the baseboard's init function. |
36 | */ | 36 | */ |
37 | 37 | ||
38 | extern void mx31lite_db_init(void); | 38 | extern void mx31lite_db_init(void); |
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31moboard.h b/arch/arm/plat-mxc/include/mach/board-mx31moboard.h index 36ff3cedee1a..de14543891cf 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31moboard.h +++ b/arch/arm/plat-mxc/include/mach/board-mx31moboard.h | |||
@@ -31,7 +31,7 @@ enum mx31moboard_boards { | |||
31 | 31 | ||
32 | /* | 32 | /* |
33 | * This CPU module needs a baseboard to work. After basic initializing | 33 | * This CPU module needs a baseboard to work. After basic initializing |
34 | * its own devices, it calls baseboard's init function. | 34 | * its own devices, it calls the baseboard's init function. |
35 | */ | 35 | */ |
36 | 36 | ||
37 | extern void mx31moboard_devboard_init(void); | 37 | extern void mx31moboard_devboard_init(void); |
diff --git a/arch/arm/plat-mxc/include/mach/board-mx35pdk.h b/arch/arm/plat-mxc/include/mach/board-mx35pdk.h deleted file mode 100644 index 383f1c04df06..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-mx35pdk.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_MXC_BOARD_MX35PDK_H__ | ||
20 | #define __ASM_ARCH_MXC_BOARD_MX35PDK_H__ | ||
21 | |||
22 | #endif /* __ASM_ARCH_MXC_BOARD_MX35PDK_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-pcm037.h b/arch/arm/plat-mxc/include/mach/board-pcm037.h deleted file mode 100644 index 13411709b13a..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-pcm037.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 Sascha Hauer, Pengutronix | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_MXC_BOARD_PCM037_H__ | ||
20 | #define __ASM_ARCH_MXC_BOARD_PCM037_H__ | ||
21 | |||
22 | #endif /* __ASM_ARCH_MXC_BOARD_PCM037_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-pcm038.h b/arch/arm/plat-mxc/include/mach/board-pcm038.h index 410f9786ed22..6f371e35753d 100644 --- a/arch/arm/plat-mxc/include/mach/board-pcm038.h +++ b/arch/arm/plat-mxc/include/mach/board-pcm038.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #ifndef __ASSEMBLY__ | 22 | #ifndef __ASSEMBLY__ |
23 | /* | 23 | /* |
24 | * This CPU module needs a baseboard to work. After basic initializing | 24 | * This CPU module needs a baseboard to work. After basic initializing |
25 | * its own devices, it calls baseboard's init function. | 25 | * its own devices, it calls the baseboard's init function. |
26 | * TODO: Add your own baseboard init function and call it from | 26 | * TODO: Add your own baseboard init function and call it from |
27 | * inside pcm038_init(). | 27 | * inside pcm038_init(). |
28 | * | 28 | * |
diff --git a/arch/arm/plat-mxc/include/mach/board-pcm043.h b/arch/arm/plat-mxc/include/mach/board-pcm043.h deleted file mode 100644 index 1ac4e1682e5c..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-pcm043.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 Sascha Hauer, Pengutronix | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_MXC_BOARD_PCM043_H__ | ||
20 | #define __ASM_ARCH_MXC_BOARD_PCM043_H__ | ||
21 | |||
22 | #endif /* __ASM_ARCH_MXC_BOARD_PCM043_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-qong.h b/arch/arm/plat-mxc/include/mach/board-qong.h deleted file mode 100644 index 6d88c7af4b23..000000000000 --- a/arch/arm/plat-mxc/include/mach/board-qong.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Ilya Yanok, Emcraft Systems Ltd, <yanok@emcraft.com> | ||
3 | */ | ||
4 | |||
5 | /* | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_MXC_BOARD_QONG_H__ | ||
12 | #define __ASM_ARCH_MXC_BOARD_QONG_H__ | ||
13 | |||
14 | /* NOR FLASH */ | ||
15 | #define QONG_NOR_SIZE (128*1024*1024) | ||
16 | |||
17 | #endif /* __ASM_ARCH_MXC_BOARD_QONG_H__ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/debug-macro.S b/arch/arm/plat-mxc/include/mach/debug-macro.S index 0b6e11eaeb8c..25606409aabc 100644 --- a/arch/arm/plat-mxc/include/mach/debug-macro.S +++ b/arch/arm/plat-mxc/include/mach/debug-macro.S | |||
@@ -23,8 +23,8 @@ | |||
23 | #error "CONFIG_DEBUG_LL is incompatible with multiple archs" | 23 | #error "CONFIG_DEBUG_LL is incompatible with multiple archs" |
24 | #endif | 24 | #endif |
25 | #include <mach/mx25.h> | 25 | #include <mach/mx25.h> |
26 | #define UART_PADDR UART1_BASE_ADDR | 26 | #define UART_PADDR MX25_UART1_BASE_ADDR |
27 | #define UART_VADDR MX25_AIPS1_IO_ADDRESS(UART1_BASE_ADDR) | 27 | #define UART_VADDR MX25_AIPS1_IO_ADDRESS(MX25_UART1_BASE_ADDR) |
28 | #endif | 28 | #endif |
29 | 29 | ||
30 | #ifdef CONFIG_ARCH_MX2 | 30 | #ifdef CONFIG_ARCH_MX2 |
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h new file mode 100644 index 000000000000..c5f68c587309 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/devices-common.h | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009-2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/platform_device.h> | ||
11 | #include <linux/init.h> | ||
12 | |||
13 | struct platform_device *imx_add_platform_device(const char *name, int id, | ||
14 | const struct resource *res, unsigned int num_resources, | ||
15 | const void *data, size_t size_data); | ||
16 | |||
17 | #if defined (CONFIG_CAN_FLEXCAN) || defined (CONFIG_CAN_FLEXCAN_MODULE) | ||
18 | #include <linux/can/platform/flexcan.h> | ||
19 | struct platform_device *__init imx_add_flexcan(int id, | ||
20 | resource_size_t iobase, resource_size_t iosize, | ||
21 | resource_size_t irq, | ||
22 | const struct flexcan_platform_data *pdata); | ||
23 | #else | ||
24 | /* the ifdef can be removed once the flexcan driver has been merged */ | ||
25 | struct flexcan_platform_data; | ||
26 | static inline struct platform_device *__init imx_add_flexcan(int id, | ||
27 | resource_size_t iobase, resource_size_t iosize, | ||
28 | resource_size_t irq, | ||
29 | const struct flexcan_platform_data *pdata) | ||
30 | { | ||
31 | return NULL; | ||
32 | } | ||
33 | #endif | ||
34 | |||
35 | #include <mach/i2c.h> | ||
36 | struct platform_device *__init imx_add_imx_i2c(int id, | ||
37 | resource_size_t iobase, resource_size_t iosize, int irq, | ||
38 | const struct imxi2c_platform_data *pdata); | ||
39 | |||
40 | #include <mach/imx-uart.h> | ||
41 | struct platform_device *__init imx_add_imx_uart_3irq(int id, | ||
42 | resource_size_t iobase, resource_size_t iosize, | ||
43 | resource_size_t irqrx, resource_size_t irqtx, | ||
44 | resource_size_t irqrts, | ||
45 | const struct imxuart_platform_data *pdata); | ||
46 | struct platform_device *__init imx_add_imx_uart_1irq(int id, | ||
47 | resource_size_t iobase, resource_size_t iosize, | ||
48 | resource_size_t irq, | ||
49 | const struct imxuart_platform_data *pdata); | ||
50 | |||
51 | #include <mach/mxc_nand.h> | ||
52 | struct platform_device *__init imx_add_mxc_nand_v1(resource_size_t iobase, | ||
53 | int irq, const struct mxc_nand_platform_data *pdata); | ||
54 | struct platform_device *__init imx_add_mxc_nand_v21(resource_size_t iobase, | ||
55 | int irq, const struct mxc_nand_platform_data *pdata); | ||
56 | |||
57 | #include <mach/spi.h> | ||
58 | struct platform_device *__init imx_add_spi_imx(int id, | ||
59 | resource_size_t iobase, resource_size_t iosize, int irq, | ||
60 | const struct spi_imx_master *pdata); | ||
diff --git a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h b/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h deleted file mode 100644 index 7c4870bd5a21..000000000000 --- a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h +++ /dev/null | |||
@@ -1,105 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h | ||
3 | * | ||
4 | * i.MX DMA registration and IRQ dispatching | ||
5 | * | ||
6 | * Copyright 2006 Pavel Pisa <pisa@cmp.felk.cvut.cz> | ||
7 | * Copyright 2008 Juergen Beisert, <kernel@pengutronix.de> | ||
8 | * Copyright 2008 Sascha Hauer, <s.hauer@pengutronix.de> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License | ||
12 | * as published by the Free Software Foundation; either version 2 | ||
13 | * of the License, or (at your option) any later version. | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
22 | * MA 02110-1301, USA. | ||
23 | */ | ||
24 | |||
25 | #ifndef __ASM_ARCH_MXC_DMA_H | ||
26 | #define __ASM_ARCH_MXC_DMA_H | ||
27 | |||
28 | #define IMX_DMA_CHANNELS 16 | ||
29 | |||
30 | #define DMA_MODE_READ 0 | ||
31 | #define DMA_MODE_WRITE 1 | ||
32 | #define DMA_MODE_MASK 1 | ||
33 | |||
34 | #define MX1_DMA_REG(offset) MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR + (offset)) | ||
35 | |||
36 | /* DMA Interrupt Mask Register */ | ||
37 | #define MX1_DMA_DIMR MX1_DMA_REG(0x08) | ||
38 | |||
39 | /* Channel Control Register */ | ||
40 | #define MX1_DMA_CCR(x) MX1_DMA_REG(0x8c + ((x) << 6)) | ||
41 | |||
42 | #define IMX_DMA_MEMSIZE_32 (0 << 4) | ||
43 | #define IMX_DMA_MEMSIZE_8 (1 << 4) | ||
44 | #define IMX_DMA_MEMSIZE_16 (2 << 4) | ||
45 | #define IMX_DMA_TYPE_LINEAR (0 << 10) | ||
46 | #define IMX_DMA_TYPE_2D (1 << 10) | ||
47 | #define IMX_DMA_TYPE_FIFO (2 << 10) | ||
48 | |||
49 | #define IMX_DMA_ERR_BURST (1 << 0) | ||
50 | #define IMX_DMA_ERR_REQUEST (1 << 1) | ||
51 | #define IMX_DMA_ERR_TRANSFER (1 << 2) | ||
52 | #define IMX_DMA_ERR_BUFFER (1 << 3) | ||
53 | #define IMX_DMA_ERR_TIMEOUT (1 << 4) | ||
54 | |||
55 | int | ||
56 | imx_dma_config_channel(int channel, unsigned int config_port, | ||
57 | unsigned int config_mem, unsigned int dmareq, int hw_chaining); | ||
58 | |||
59 | void | ||
60 | imx_dma_config_burstlen(int channel, unsigned int burstlen); | ||
61 | |||
62 | int | ||
63 | imx_dma_setup_single(int channel, dma_addr_t dma_address, | ||
64 | unsigned int dma_length, unsigned int dev_addr, | ||
65 | unsigned int dmamode); | ||
66 | |||
67 | |||
68 | /* | ||
69 | * Use this flag as the dma_length argument to imx_dma_setup_sg() | ||
70 | * to create an endless running dma loop. The end of the scatterlist | ||
71 | * must be linked to the beginning for this to work. | ||
72 | */ | ||
73 | #define IMX_DMA_LENGTH_LOOP ((unsigned int)-1) | ||
74 | |||
75 | int | ||
76 | imx_dma_setup_sg(int channel, struct scatterlist *sg, | ||
77 | unsigned int sgcount, unsigned int dma_length, | ||
78 | unsigned int dev_addr, unsigned int dmamode); | ||
79 | |||
80 | int | ||
81 | imx_dma_setup_handlers(int channel, | ||
82 | void (*irq_handler) (int, void *), | ||
83 | void (*err_handler) (int, void *, int), void *data); | ||
84 | |||
85 | int | ||
86 | imx_dma_setup_progression_handler(int channel, | ||
87 | void (*prog_handler) (int, void*, struct scatterlist*)); | ||
88 | |||
89 | void imx_dma_enable(int channel); | ||
90 | |||
91 | void imx_dma_disable(int channel); | ||
92 | |||
93 | int imx_dma_request(int channel, const char *name); | ||
94 | |||
95 | void imx_dma_free(int channel); | ||
96 | |||
97 | enum imx_dma_prio { | ||
98 | DMA_PRIO_HIGH = 0, | ||
99 | DMA_PRIO_MEDIUM = 1, | ||
100 | DMA_PRIO_LOW = 2 | ||
101 | }; | ||
102 | |||
103 | int imx_dma_request_by_prio(const char *name, enum imx_dma_prio prio); | ||
104 | |||
105 | #endif /* _ASM_ARCH_MXC_DMA_H */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/board-eukrea_cpuimx27.h b/arch/arm/plat-mxc/include/mach/eukrea-baseboards.h index a1fd5830af48..634e3f4c454d 100644 --- a/arch/arm/plat-mxc/include/mach/board-eukrea_cpuimx27.h +++ b/arch/arm/plat-mxc/include/mach/eukrea-baseboards.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2009 Eric Benard - eric@eukrea.com | 2 | * Copyright (C) 2010 Eric Benard - eric@eukrea.com |
3 | * | 3 | * |
4 | * Based on board-pcm038.h which is : | 4 | * Based on board-pcm038.h which is : |
5 | * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de) | 5 | * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de) |
@@ -19,22 +19,29 @@ | |||
19 | * MA 02110-1301, USA. | 19 | * MA 02110-1301, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #ifndef __ASM_ARCH_MXC_BOARD_EUKREA_CPUIMX27_H__ | 22 | #ifndef __MACH_EUKREA_BASEBOARDS_H__ |
23 | #define __ASM_ARCH_MXC_BOARD_EUKREA_CPUIMX27_H__ | 23 | #define __MACH_EUKREA_BASEBOARDS_H__ |
24 | 24 | ||
25 | #ifndef __ASSEMBLY__ | 25 | #ifndef __ASSEMBLY__ |
26 | /* | 26 | /* |
27 | * This CPU module needs a baseboard to work. After basic initializing | 27 | * This CPU module needs a baseboard to work. After basic initializing |
28 | * its own devices, it calls baseboard's init function. | 28 | * its own devices, it calls baseboard's init function. |
29 | * TODO: Add your own baseboard init function and call it from | 29 | * TODO: Add your own baseboard init function and call it from |
30 | * inside eukrea_cpuimx27_init(). | 30 | * inside eukrea_cpuimx25_init() eukrea_cpuimx27_init() |
31 | * eukrea_cpuimx35_init() or eukrea_cpuimx51_init(). | ||
31 | * | 32 | * |
32 | * This example here is for the development board. Refer | 33 | * This example here is for the development board. Refer |
33 | * eukrea_mbimx27-baseboard.c | 34 | * mach-mx25/eukrea_mbimxsd-baseboard.c for cpuimx25 |
35 | * mach-imx/eukrea_mbimx27-baseboard.c for cpuimx27 | ||
36 | * mach-mx3/eukrea_mbimxsd-baseboard.c for cpuimx35 | ||
37 | * mach-mx5/eukrea_mbimx51-baseboard.c for cpuimx51 | ||
34 | */ | 38 | */ |
35 | 39 | ||
40 | extern void eukrea_mbimx25_baseboard_init(void); | ||
36 | extern void eukrea_mbimx27_baseboard_init(void); | 41 | extern void eukrea_mbimx27_baseboard_init(void); |
42 | extern void eukrea_mbimx35_baseboard_init(void); | ||
43 | extern void eukrea_mbimx51_baseboard_init(void); | ||
37 | 44 | ||
38 | #endif | 45 | #endif |
39 | 46 | ||
40 | #endif /* __ASM_ARCH_MXC_BOARD_EUKREA_CPUIMX27_H__ */ | 47 | #endif /* __MACH_EUKREA_BASEBOARDS_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/gpio.h b/arch/arm/plat-mxc/include/mach/gpio.h index 894d2f87c856..661fbc605759 100644 --- a/arch/arm/plat-mxc/include/mach/gpio.h +++ b/arch/arm/plat-mxc/include/mach/gpio.h | |||
@@ -33,9 +33,11 @@ | |||
33 | struct mxc_gpio_port { | 33 | struct mxc_gpio_port { |
34 | void __iomem *base; | 34 | void __iomem *base; |
35 | int irq; | 35 | int irq; |
36 | int irq_high; | ||
36 | int virtual_irq_start; | 37 | int virtual_irq_start; |
37 | struct gpio_chip chip; | 38 | struct gpio_chip chip; |
38 | u32 both_edges; | 39 | u32 both_edges; |
40 | spinlock_t lock; | ||
39 | }; | 41 | }; |
40 | 42 | ||
41 | int mxc_gpio_init(struct mxc_gpio_port*, int); | 43 | int mxc_gpio_init(struct mxc_gpio_port*, int); |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx25.h b/arch/arm/plat-mxc/include/mach/iomux-mx25.h index f39220d1b67a..d7f52c91f82e 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx25.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx25.h | |||
@@ -252,6 +252,7 @@ | |||
252 | #define MX25_PAD_OE_ACD__GPIO_1_25 IOMUX_PAD(0x30c, 0x114, 0x15, 0, 0, NO_PAD_CTRL) | 252 | #define MX25_PAD_OE_ACD__GPIO_1_25 IOMUX_PAD(0x30c, 0x114, 0x15, 0, 0, NO_PAD_CTRL) |
253 | 253 | ||
254 | #define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL) | 254 | #define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL) |
255 | #define MX25_PAD_CONTRAST__PWM4_PWMO IOMUX_PAD(0x310, 0x118, 0x14, 0, 0, NO_PAD_CTRL) | ||
255 | #define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTRL) | 256 | #define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTRL) |
256 | 257 | ||
257 | #define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL) | 258 | #define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL) |
@@ -371,30 +372,41 @@ | |||
371 | #define MX25_PAD_SD1_DATA3__FEC_CRS IOMUX_PAD(0x39c, 0x1a4, 0x10, 0x508, 2, NO_PAD_CTRL) | 372 | #define MX25_PAD_SD1_DATA3__FEC_CRS IOMUX_PAD(0x39c, 0x1a4, 0x10, 0x508, 2, NO_PAD_CTRL) |
372 | #define MX25_PAD_SD1_DATA3__GPIO_2_28 IOMUX_PAD(0x39c, 0x1a4, 0x15, 0, 0, NO_PAD_CTRL) | 373 | #define MX25_PAD_SD1_DATA3__GPIO_2_28 IOMUX_PAD(0x39c, 0x1a4, 0x15, 0, 0, NO_PAD_CTRL) |
373 | 374 | ||
374 | #define MX25_PAD_KPP_ROW0__KPP_ROW0 IOMUX_PAD(0x3a0, 0x1a8, 0x10, 0, 0, PAD_CTL_PKE) | 375 | #define KPP_CTL_ROW (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP) |
376 | #define KPP_CTL_COL (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP | PAD_CTL_ODE) | ||
377 | |||
378 | #define MX25_PAD_KPP_ROW0__KPP_ROW0 IOMUX_PAD(0x3a0, 0x1a8, 0x10, 0, 0, KPP_CTL_ROW) | ||
375 | #define MX25_PAD_KPP_ROW0__GPIO_2_29 IOMUX_PAD(0x3a0, 0x1a8, 0x15, 0, 0, NO_PAD_CTRL) | 379 | #define MX25_PAD_KPP_ROW0__GPIO_2_29 IOMUX_PAD(0x3a0, 0x1a8, 0x15, 0, 0, NO_PAD_CTRL) |
376 | 380 | ||
377 | #define MX25_PAD_KPP_ROW1__KPP_ROW1 IOMUX_PAD(0x3a4, 0x1ac, 0x10, 0, 0, PAD_CTL_PKE) | 381 | #define MX25_PAD_KPP_ROW1__KPP_ROW1 IOMUX_PAD(0x3a4, 0x1ac, 0x10, 0, 0, KPP_CTL_ROW) |
378 | #define MX25_PAD_KPP_ROW1__GPIO_2_30 IOMUX_PAD(0x3a4, 0x1ac, 0x15, 0, 0, NO_PAD_CTRL) | 382 | #define MX25_PAD_KPP_ROW1__GPIO_2_30 IOMUX_PAD(0x3a4, 0x1ac, 0x15, 0, 0, NO_PAD_CTRL) |
379 | 383 | ||
380 | #define MX25_PAD_KPP_ROW2__KPP_ROW2 IOMUX_PAD(0x3a8, 0x1b0, 0x10, 0, 0, PAD_CTL_PKE) | 384 | #define MX25_PAD_KPP_ROW2__KPP_ROW2 IOMUX_PAD(0x3a8, 0x1b0, 0x10, 0, 0, KPP_CTL_ROW) |
381 | #define MX25_PAD_KPP_ROW2__CSI_D0 IOMUX_PAD(0x3a8, 0x1b0, 0x13, 0x488, 2, NO_PAD_CTRL) | 385 | #define MX25_PAD_KPP_ROW2__CSI_D0 IOMUX_PAD(0x3a8, 0x1b0, 0x13, 0x488, 2, NO_PAD_CTRL) |
382 | #define MX25_PAD_KPP_ROW2__GPIO_2_31 IOMUX_PAD(0x3a8, 0x1b0, 0x15, 0, 0, NO_PAD_CTRL) | 386 | #define MX25_PAD_KPP_ROW2__GPIO_2_31 IOMUX_PAD(0x3a8, 0x1b0, 0x15, 0, 0, NO_PAD_CTRL) |
383 | 387 | ||
384 | #define MX25_PAD_KPP_ROW3__KPP_ROW3 IOMUX_PAD(0x3ac, 0x1b4, 0x10, 0, 0, PAD_CTL_PKE) | 388 | #define MX25_PAD_KPP_ROW3__KPP_ROW3 IOMUX_PAD(0x3ac, 0x1b4, 0x10, 0, 0, KPP_CTL_ROW) |
385 | #define MX25_PAD_KPP_ROW3__CSI_LD1 IOMUX_PAD(0x3ac, 0x1b4, 0x13, 0x48c, 2, NO_PAD_CTRL) | 389 | #define MX25_PAD_KPP_ROW3__CSI_LD1 IOMUX_PAD(0x3ac, 0x1b4, 0x13, 0x48c, 2, NO_PAD_CTRL) |
386 | #define MX25_PAD_KPP_ROW3__GPIO_3_0 IOMUX_PAD(0x3ac, 0x1b4, 0x15, 0, 0, NO_PAD_CTRL) | 390 | #define MX25_PAD_KPP_ROW3__GPIO_3_0 IOMUX_PAD(0x3ac, 0x1b4, 0x15, 0, 0, NO_PAD_CTRL) |
387 | 391 | ||
388 | #define MX25_PAD_KPP_COL0__KPP_COL0 IOMUX_PAD(0x3b0, 0x1b8, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE) | 392 | #define MX25_PAD_KPP_COL0__KPP_COL0 IOMUX_PAD(0x3b0, 0x1b8, 0x10, 0, 0, KPP_CTL_COL) |
393 | #define MX25_PAD_KPP_COL0__UART4_RXD_MUX IOMUX_PAD(0x3b0, 0x1b8, 0x11, 0x570, 1, NO_PAD_CTRL) | ||
394 | #define MX25_PAD_KPP_COL0__AUD5_TXD IOMUX_PAD(0x3b0, 0x1b8, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
389 | #define MX25_PAD_KPP_COL0__GPIO_3_1 IOMUX_PAD(0x3b0, 0x1b8, 0x15, 0, 0, NO_PAD_CTRL) | 395 | #define MX25_PAD_KPP_COL0__GPIO_3_1 IOMUX_PAD(0x3b0, 0x1b8, 0x15, 0, 0, NO_PAD_CTRL) |
390 | 396 | ||
391 | #define MX25_PAD_KPP_COL1__KPP_COL1 IOMUX_PAD(0x3b4, 0x1bc, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE) | 397 | #define MX25_PAD_KPP_COL1__KPP_COL1 IOMUX_PAD(0x3b4, 0x1bc, 0x10, 0, 0, KPP_CTL_COL) |
398 | #define MX25_PAD_KPP_COL1__UART4_TXD_MUX IOMUX_PAD(0x3b4, 0x1bc, 0x11, 0, 0, NO_PAD_CTRL) | ||
399 | #define MX25_PAD_KPP_COL1__AUD5_RXD IOMUX_PAD(0x3b4, 0x1bc, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
392 | #define MX25_PAD_KPP_COL1__GPIO_3_2 IOMUX_PAD(0x3b4, 0x1bc, 0x15, 0, 0, NO_PAD_CTRL) | 400 | #define MX25_PAD_KPP_COL1__GPIO_3_2 IOMUX_PAD(0x3b4, 0x1bc, 0x15, 0, 0, NO_PAD_CTRL) |
393 | 401 | ||
394 | #define MX25_PAD_KPP_COL2__KPP_COL2 IOMUX_PAD(0x3b8, 0x1c0, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE) | 402 | #define MX25_PAD_KPP_COL2__KPP_COL2 IOMUX_PAD(0x3b8, 0x1c0, 0x10, 0, 0, KPP_CTL_COL) |
403 | #define MX25_PAD_KPP_COL2__UART4_RTS IOMUX_PAD(0x3b8, 0x1c0, 0x11, 0, 0, NO_PAD_CTRL) | ||
404 | #define MX25_PAD_KPP_COL2__AUD5_TXC IOMUX_PAD(0x3b8, 0x1c0, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
395 | #define MX25_PAD_KPP_COL2__GPIO_3_3 IOMUX_PAD(0x3b8, 0x1c0, 0x15, 0, 0, NO_PAD_CTRL) | 405 | #define MX25_PAD_KPP_COL2__GPIO_3_3 IOMUX_PAD(0x3b8, 0x1c0, 0x15, 0, 0, NO_PAD_CTRL) |
396 | 406 | ||
397 | #define MX25_PAD_KPP_COL3__KPP_COL3 IOMUX_PAD(0x3bc, 0x1c4, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE) | 407 | #define MX25_PAD_KPP_COL3__KPP_COL3 IOMUX_PAD(0x3bc, 0x1c4, 0x10, 0, 0, KPP_CTL_COL) |
408 | #define MX25_PAD_KPP_COL3__UART4_CTS IOMUX_PAD(0x3bc, 0x1c4, 0x11, 0, 0, NO_PAD_CTRL) | ||
409 | #define MX25_PAD_KPP_COL3__AUD5_TXFS IOMUX_PAD(0x3bc, 0x1c4, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
398 | #define MX25_PAD_KPP_COL3__GPIO_3_4 IOMUX_PAD(0x3bc, 0x1c4, 0x15, 0, 0, NO_PAD_CTRL) | 410 | #define MX25_PAD_KPP_COL3__GPIO_3_4 IOMUX_PAD(0x3bc, 0x1c4, 0x15, 0, 0, NO_PAD_CTRL) |
399 | 411 | ||
400 | #define MX25_PAD_FEC_MDC__FEC_MDC IOMUX_PAD(0x3c0, 0x1c8, 0x10, 0, 0, NO_PAD_CTRL) | 412 | #define MX25_PAD_FEC_MDC__FEC_MDC IOMUX_PAD(0x3c0, 0x1c8, 0x10, 0, 0, NO_PAD_CTRL) |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx51.h b/arch/arm/plat-mxc/include/mach/iomux-mx51.h index ab0f95d953d0..21bfa46785bb 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx51.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx51.h | |||
@@ -27,8 +27,8 @@ typedef enum iomux_config { | |||
27 | IOMUX_CONFIG_ALT5, | 27 | IOMUX_CONFIG_ALT5, |
28 | IOMUX_CONFIG_ALT6, | 28 | IOMUX_CONFIG_ALT6, |
29 | IOMUX_CONFIG_ALT7, | 29 | IOMUX_CONFIG_ALT7, |
30 | IOMUX_CONFIG_GPIO, /* added to help user use GPIO mode */ | 30 | IOMUX_CONFIG_GPIO, /* added to help user use GPIO mode */ |
31 | IOMUX_CONFIG_SION = 0x1 << 4, /* LOOPBACK:MUX SION bit */ | 31 | IOMUX_CONFIG_SION = 0x1 << 4, /* LOOPBACK:MUX SION bit */ |
32 | } iomux_pin_cfg_t; | 32 | } iomux_pin_cfg_t; |
33 | 33 | ||
34 | /* Pad control groupings */ | 34 | /* Pad control groupings */ |
@@ -38,6 +38,8 @@ typedef enum iomux_config { | |||
38 | PAD_CTL_SRE_FAST) | 38 | PAD_CTL_SRE_FAST) |
39 | #define MX51_UART3_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_DSE_HIGH | \ | 39 | #define MX51_UART3_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_DSE_HIGH | \ |
40 | PAD_CTL_SRE_FAST) | 40 | PAD_CTL_SRE_FAST) |
41 | #define MX51_I2C_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_ODE | \ | ||
42 | PAD_CTL_DSE_HIGH | PAD_CTL_PUS_100K_UP | PAD_CTL_HYS) | ||
41 | #define MX51_USBH1_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_DSE_HIGH | \ | 43 | #define MX51_USBH1_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_DSE_HIGH | \ |
42 | PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \ | 44 | PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \ |
43 | PAD_CTL_PKE | PAD_CTL_HYS) | 45 | PAD_CTL_PKE | PAD_CTL_HYS) |
@@ -46,289 +48,278 @@ typedef enum iomux_config { | |||
46 | 48 | ||
47 | /* | 49 | /* |
48 | * The naming convention for the pad modes is MX51_PAD_<padname>__<padmode> | 50 | * The naming convention for the pad modes is MX51_PAD_<padname>__<padmode> |
49 | * If <padname> or <padmode> refers to a GPIO, it is named | 51 | * If <padname> or <padmode> refers to a GPIO, it is named GPIO_<unit>_<num> |
50 | * GPIO_<unit>_<num> see also iomux-v3.h | 52 | * See also iomux-v3.h |
51 | */ | 53 | */ |
52 | 54 | ||
53 | /* | 55 | /* PAD MUX ALT INPSE PATH PADCTRL */ |
54 | * FIXME: This was converted using scripts from existing Freescale code to | 56 | #define MX51_PAD_EIM_DA0__EIM_DA0 IOMUX_PAD(0x7a8, 0x01c, 0, 0x0, 0, NO_PAD_CTRL) |
55 | * this form used upstream. Need to verify the name format. | 57 | #define MX51_PAD_EIM_DA1__EIM_DA1 IOMUX_PAD(0x7a8, 0x020, 0, 0x0, 0, NO_PAD_CTRL) |
56 | */ | 58 | #define MX51_PAD_EIM_DA2__EIM_DA2 IOMUX_PAD(0x7a8, 0x024, 0, 0x0, 0, NO_PAD_CTRL) |
57 | 59 | #define MX51_PAD_EIM_DA3__EIM_DA3 IOMUX_PAD(0x7a8, 0x028, 0, 0x0, 0, NO_PAD_CTRL) | |
58 | /* PAD MUX ALT INPSE PATH PADCTRL */ | 60 | #define MX51_PAD_EIM_DA4__EIM_DA4 IOMUX_PAD(0x7ac, 0x02c, 0, 0x0, 0, NO_PAD_CTRL) |
59 | 61 | #define MX51_PAD_EIM_DA5__EIM_DA5 IOMUX_PAD(0x7ac, 0x030, 0, 0x0, 0, NO_PAD_CTRL) | |
60 | #define MX51_PAD_GPIO_2_0__EIM_D16 IOMUX_PAD(0x3f0, 0x05c, 1, 0x0, 0, NO_PAD_CTRL) | 62 | #define MX51_PAD_EIM_DA6__EIM_DA6 IOMUX_PAD(0x7ac, 0x034, 0, 0x0, 0, NO_PAD_CTRL) |
61 | #define MX51_PAD_GPIO_2_1__EIM_D17 IOMUX_PAD(0x3f4, 0x060, 1, 0x0, 0, NO_PAD_CTRL) | 63 | #define MX51_PAD_EIM_DA7__EIM_DA7 IOMUX_PAD(0x7ac, 0x038, 0, 0x0, 0, NO_PAD_CTRL) |
62 | #define MX51_PAD_GPIO_2_2__EIM_D18 IOMUX_PAD(0x3f8, 0x064, 1, 0x0, 0, NO_PAD_CTRL) | 64 | #define MX51_PAD_EIM_DA8__EIM_DA8 IOMUX_PAD(0x7b0, 0x03c, 0, 0x0, 0, NO_PAD_CTRL) |
63 | #define MX51_PAD_GPIO_2_3__EIM_D19 IOMUX_PAD(0x3fc, 0x068, 1, 0x0, 0, NO_PAD_CTRL) | 65 | #define MX51_PAD_EIM_DA9__EIM_DA9 IOMUX_PAD(0x7b0, 0x040, 0, 0x0, 0, NO_PAD_CTRL) |
64 | #define MX51_PAD_GPIO_2_4__EIM_D20 IOMUX_PAD(0x400, 0x06c, 1, 0x0, 0, NO_PAD_CTRL) | 66 | #define MX51_PAD_EIM_DA10__EIM_DA10 IOMUX_PAD(0x7b0, 0x044, 0, 0x0, 0, NO_PAD_CTRL) |
65 | #define MX51_PAD_GPIO_2_5__EIM_D21 IOMUX_PAD(0x404, 0x070, 1, 0x0, 0, NO_PAD_CTRL) | 67 | #define MX51_PAD_EIM_DA11__EIM_DA11 IOMUX_PAD(0x7b0, 0x048, 0, 0x0, 0, NO_PAD_CTRL) |
66 | #define MX51_PAD_EIM_D21__GPIO_2_5 IOMUX_PAD(0x404, 0x070, IOMUX_CONFIG_ALT1, 0x0, 0, MX51_GPIO_PAD_CTRL) | 68 | #define MX51_PAD_EIM_DA12__EIM_DA12 IOMUX_PAD(0x7bc, 0x04c, 0, 0x0, 0, NO_PAD_CTRL) |
67 | #define MX51_PAD_GPIO_2_6__EIM_D22 IOMUX_PAD(0x408, 0x074, 1, 0x0, 0, NO_PAD_CTRL) | 69 | #define MX51_PAD_EIM_DA13__EIM_DA13 IOMUX_PAD(0x7bc, 0x050, 0, 0x0, 0, NO_PAD_CTRL) |
68 | #define MX51_PAD_GPIO_2_7__EIM_D23 IOMUX_PAD(0x40c, 0x078, 1, 0x0, 0, NO_PAD_CTRL) | 70 | #define MX51_PAD_EIM_DA14__EIM_DA14 IOMUX_PAD(0x7bc, 0x054, 0, 0x0, 0, NO_PAD_CTRL) |
69 | 71 | #define MX51_PAD_EIM_DA15__EIM_DA15 IOMUX_PAD(0x7bc, 0x058, 0, 0x0, 0, NO_PAD_CTRL) | |
70 | /* Babbage UART3 */ | 72 | #define MX51_PAD_EIM_D16__GPIO_2_0 IOMUX_PAD(0x3f0, 0x05c, 1, 0x0, 0, NO_PAD_CTRL) |
71 | #define MX51_PAD_EIM_D24__UART3_CTS IOMUX_PAD(0x410, 0x07c, IOMUX_CONFIG_ALT3, 0x0, 0, MX51_UART3_PAD_CTRL) | 73 | #define MX51_PAD_EIM_D16__I2C1_SDA IOMUX_PAD(0x3f0, 0x05c, (4 | IOMUX_CONFIG_SION), \ |
72 | #define MX51_PAD_EIM_D25__UART3_RXD IOMUX_PAD(0x414, 0x080, IOMUX_CONFIG_ALT3, 0x9f4, 0, MX51_UART3_PAD_CTRL) | 74 | 0x09b4, 0, MX51_I2C_PAD_CTRL) |
73 | #define MX51_PAD_EIM_D26__UART3_TXD IOMUX_PAD(0x418, 0x084, IOMUX_CONFIG_ALT3, 0x0, 0, MX51_UART3_PAD_CTRL) | 75 | #define MX51_PAD_EIM_D17__GPIO_2_1 IOMUX_PAD(0x3f4, 0x060, 1, 0x0, 0, NO_PAD_CTRL) |
74 | #define MX51_PAD_EIM_D27__UART3_RTS IOMUX_PAD(0x41c, 0x088, IOMUX_CONFIG_ALT3, 0x9f0, 0, MX51_UART3_PAD_CTRL) | 76 | #define MX51_PAD_EIM_D18__GPIO_2_2 IOMUX_PAD(0x3f8, 0x064, 1, 0x0, 0, NO_PAD_CTRL) |
75 | 77 | #define MX51_PAD_EIM_D19__GPIO_2_3 IOMUX_PAD(0x3fc, 0x068, 1, 0x0, 0, NO_PAD_CTRL) | |
76 | #define MX51_PAD_EIM_D28__EIM_D28 IOMUX_PAD(0x420, 0x08c, 0, 0x0, 0, NO_PAD_CTRL) | 78 | #define MX51_PAD_EIM_D19__I2C1_SCL IOMUX_PAD(0x3fc, 0x068, (4 | IOMUX_CONFIG_SION), \ |
77 | #define MX51_PAD_EIM_D29__EIM_D29 IOMUX_PAD(0x424, 0x090, 0, 0x0, 0, NO_PAD_CTRL) | 79 | 0x09b0, 0, MX51_I2C_PAD_CTRL) |
78 | #define MX51_PAD_EIM_D30__EIM_D30 IOMUX_PAD(0x428, 0x094, 0, 0x0, 0, NO_PAD_CTRL) | 80 | #define MX51_PAD_EIM_D20__GPIO_2_4 IOMUX_PAD(0x400, 0x06c, 1, 0x0, 0, NO_PAD_CTRL) |
79 | #define MX51_PAD_EIM_D31__EIM_D31 IOMUX_PAD(0x42c, 0x09c, 0, 0x0, 0, NO_PAD_CTRL) | 81 | #define MX51_PAD_EIM_D21__GPIO_2_5 IOMUX_PAD(0x404, 0x070, 1, 0x0, 0, MX51_GPIO_PAD_CTRL) |
80 | 82 | #define MX51_PAD_EIM_D22__GPIO_2_6 IOMUX_PAD(0x408, 0x074, 1, 0x0, 0, NO_PAD_CTRL) | |
81 | #define MX51_PAD_GPIO_2_10__EIM_A16 IOMUX_PAD(0x430, 0x09c, 1, 0x0, 0, NO_PAD_CTRL) | 83 | #define MX51_PAD_EIM_D23__GPIO_2_7 IOMUX_PAD(0x40c, 0x078, 1, 0x0, 0, NO_PAD_CTRL) |
82 | #define MX51_PAD_GPIO_2_11__EIM_A17 IOMUX_PAD(0x434, 0x0a0, 1, 0x0, 0, NO_PAD_CTRL) | 84 | #define MX51_PAD_EIM_D24__UART3_CTS IOMUX_PAD(0x410, 0x07c, 3, 0x0, 0, MX51_UART3_PAD_CTRL) |
83 | #define MX51_PAD_GPIO_2_12__EIM_A18 IOMUX_PAD(0x438, 0x0a4, 1, 0x0, 0, NO_PAD_CTRL) | 85 | #define MX51_PAD_EIM_D25__UART3_RXD IOMUX_PAD(0x414, 0x080, 3, 0x9f4, 0, MX51_UART3_PAD_CTRL) |
84 | #define MX51_PAD_GPIO_2_13__EIM_A19 IOMUX_PAD(0x43c, 0x0a8, 1, 0x0, 0, NO_PAD_CTRL) | 86 | #define MX51_PAD_EIM_D25__UART2_CTS IOMUX_PAD(0x414, 0x080, 4, 0x0, 0, MX51_UART2_PAD_CTRL) |
85 | #define MX51_PAD_GPIO_2_14__EIM_A20 IOMUX_PAD(0x440, 0x0ac, 1, 0x0, 0, NO_PAD_CTRL) | 87 | #define MX51_PAD_EIM_D26__UART3_TXD IOMUX_PAD(0x418, 0x084, 3, 0x0, 0, MX51_UART3_PAD_CTRL) |
86 | #define MX51_PAD_GPIO_2_15__EIM_A21 IOMUX_PAD(0x444, 0x0b0, 1, 0x0, 0, NO_PAD_CTRL) | 88 | #define MX51_PAD_EIM_D26__UART2_RTS IOMUX_PAD(0x418, 0x084, 4, 0x9e8, 3, MX51_UART2_PAD_CTRL) |
87 | #define MX51_PAD_GPIO_2_16__EIM_A22 IOMUX_PAD(0x448, 0x0b4, 1, 0x0, 0, NO_PAD_CTRL) | 89 | #define MX51_PAD_EIM_D27__UART3_RTS IOMUX_PAD(0x41c, 0x088, 3, 0x9f0, 3, MX51_UART3_PAD_CTRL) |
88 | #define MX51_PAD_GPIO_2_17__EIM_A23 IOMUX_PAD(0x44c, 0x0b8, 1, 0x0, 0, NO_PAD_CTRL) | 90 | #define MX51_PAD_EIM_D28__EIM_D28 IOMUX_PAD(0x420, 0x08c, 0, 0x0, 0, NO_PAD_CTRL) |
89 | 91 | #define MX51_PAD_EIM_D29__EIM_D29 IOMUX_PAD(0x424, 0x090, 0, 0x0, 0, NO_PAD_CTRL) | |
90 | #define MX51_PAD_GPIO_2_18__EIM_A24 IOMUX_PAD(0x450, 0x0bc, 1, 0x0, 0, NO_PAD_CTRL) | 92 | #define MX51_PAD_EIM_D30__EIM_D30 IOMUX_PAD(0x428, 0x094, 0, 0x0, 0, NO_PAD_CTRL) |
91 | #define MX51_PAD_GPIO_2_19__EIM_A25 IOMUX_PAD(0x454, 0x0c0, 1, 0x0, 0, NO_PAD_CTRL) | 93 | #define MX51_PAD_EIM_D31__EIM_D31 IOMUX_PAD(0x42c, 0x09c, 0, 0x0, 0, NO_PAD_CTRL) |
92 | #define MX51_PAD_GPIO_2_20__EIM_A26 IOMUX_PAD(0x458, 0x0c4, 1, 0x0, 0, NO_PAD_CTRL) | 94 | #define MX51_PAD_EIM_A16__GPIO_2_10 IOMUX_PAD(0x430, 0x09c, 1, 0x0, 0, NO_PAD_CTRL) |
93 | #define MX51_PAD_GPIO_2_21__EIM_A27 IOMUX_PAD(0x45c, 0x0c8, 1, 0x0, 0, NO_PAD_CTRL) | 95 | #define MX51_PAD_EIM_A17__GPIO_2_11 IOMUX_PAD(0x434, 0x0a0, 1, 0x0, 0, NO_PAD_CTRL) |
94 | #define MX51_PAD_EIM_EB0__EIM_EB0 IOMUX_PAD(0x460, 0x0cc, 0, 0x0, 0, NO_PAD_CTRL) | 96 | #define MX51_PAD_EIM_A18__GPIO_2_12 IOMUX_PAD(0x438, 0x0a4, 1, 0x0, 0, NO_PAD_CTRL) |
95 | #define MX51_PAD_EIM_EB1__EIM_EB1 IOMUX_PAD(0x464, 0x0d0, 0, 0x0, 0, NO_PAD_CTRL) | 97 | #define MX51_PAD_EIM_A19__GPIO_2_13 IOMUX_PAD(0x43c, 0x0a8, 1, 0x0, 0, NO_PAD_CTRL) |
96 | #define MX51_PAD_GPIO_2_22__EIM_EB2 IOMUX_PAD(0x468, 0x0d4, 1, 0x0, 0, NO_PAD_CTRL) | 98 | #define MX51_PAD_EIM_A20__GPIO_2_14 IOMUX_PAD(0x440, 0x0ac, 1, 0x0, 0, NO_PAD_CTRL) |
97 | #define MX51_PAD_GPIO_2_23__EIM_EB3 IOMUX_PAD(0x46c, 0x0d8, 1, 0x0, 0, NO_PAD_CTRL) | 99 | #define MX51_PAD_EIM_A21__GPIO_2_15 IOMUX_PAD(0x444, 0x0b0, 1, 0x0, 0, NO_PAD_CTRL) |
98 | 100 | #define MX51_PAD_EIM_A22__GPIO_2_16 IOMUX_PAD(0x448, 0x0b4, 1, 0x0, 0, NO_PAD_CTRL) | |
99 | #define MX51_PAD_GPIO_2_24__EIM_OE IOMUX_PAD(0x470, 0x0dc, 1, 0x0, 0, NO_PAD_CTRL) | 101 | #define MX51_PAD_EIM_A23__GPIO_2_17 IOMUX_PAD(0x44c, 0x0b8, 1, 0x0, 0, NO_PAD_CTRL) |
100 | #define MX51_PAD_GPIO_2_25__EIM_CS0 IOMUX_PAD(0x474, 0x0e0, 1, 0x0, 0, NO_PAD_CTRL) | 102 | #define MX51_PAD_EIM_A24__GPIO_2_18 IOMUX_PAD(0x450, 0x0bc, 1, 0x0, 0, NO_PAD_CTRL) |
101 | #define MX51_PAD_GPIO_2_26__EIM_CS1 IOMUX_PAD(0x478, 0x0e4, 1, 0x0, 0, NO_PAD_CTRL) | 103 | #define MX51_PAD_EIM_A25__GPIO_2_19 IOMUX_PAD(0x454, 0x0c0, 1, 0x0, 0, NO_PAD_CTRL) |
102 | #define MX51_PAD_GPIO_2_27__EIM_CS2 IOMUX_PAD(0x47c, 0x0e8, 1, 0x0, 0, NO_PAD_CTRL) | 104 | #define MX51_PAD_EIM_A26__GPIO_2_20 IOMUX_PAD(0x458, 0x0c4, 1, 0x0, 0, NO_PAD_CTRL) |
103 | #define MX51_PAD_GPIO_2_28__EIM_CS3 IOMUX_PAD(0x480, 0x0ec, 1, 0x0, 0, NO_PAD_CTRL) | 105 | #define MX51_PAD_EIM_A27__GPIO_2_21 IOMUX_PAD(0x45c, 0x0c8, 1, 0x0, 0, NO_PAD_CTRL) |
104 | #define MX51_PAD_GPIO_2_29__EIM_CS4 IOMUX_PAD(0x484, 0x0f0, 1, 0x0, 0, NO_PAD_CTRL) | 106 | #define MX51_PAD_EIM_EB0__EIM_EB0 IOMUX_PAD(0x460, 0x0cc, 0, 0x0, 0, NO_PAD_CTRL) |
105 | #define MX51_PAD_GPIO_2_30__EIM_CS5 IOMUX_PAD(0x488, 0x0f4, 1, 0x0, 0, NO_PAD_CTRL) | 107 | #define MX51_PAD_EIM_EB1__EIM_EB1 IOMUX_PAD(0x464, 0x0d0, 0, 0x0, 0, NO_PAD_CTRL) |
106 | #define MX51_PAD_GPIO_2_31__EIM_DTACK IOMUX_PAD(0x48c, 0x0f8, 1, 0x0, 0, NO_PAD_CTRL) | 108 | #define MX51_PAD_EIM_EB2__GPIO_2_22 IOMUX_PAD(0x468, 0x0d4, 1, 0x0, 0, NO_PAD_CTRL) |
107 | 109 | #define MX51_PAD_EIM_EB3__GPIO_2_23 IOMUX_PAD(0x46c, 0x0d8, 1, 0x0, 0, NO_PAD_CTRL) | |
108 | #define MX51_PAD_GPIO_3_1__EIM_LBA IOMUX_PAD(0x494, 0xFC, 1, 0x0, 0, NO_PAD_CTRL) | 110 | #define MX51_PAD_EIM_OE__GPIO_2_24 IOMUX_PAD(0x470, 0x0dc, 1, 0x0, 0, NO_PAD_CTRL) |
109 | #define MX51_PAD_GPIO_3_2__EIM_CRE IOMUX_PAD(0x4A0, 0x100, 1, 0x0, 0, NO_PAD_CTRL) | 111 | #define MX51_PAD_EIM_CS0__GPIO_2_25 IOMUX_PAD(0x474, 0x0e0, 1, 0x0, 0, NO_PAD_CTRL) |
110 | #define MX51_PAD_DRAM_CS1__DRAM_CS1 IOMUX_PAD(0x4D0, 0x104, 0, 0x0, 0, NO_PAD_CTRL) | 112 | #define MX51_PAD_EIM_CS1__GPIO_2_26 IOMUX_PAD(0x478, 0x0e4, 1, 0x0, 0, NO_PAD_CTRL) |
111 | #define MX51_PAD_GPIO_3_3__NANDF_WE_B IOMUX_PAD(0x4E4, 0x108, 3, 0x0, 0, NO_PAD_CTRL) | 113 | #define MX51_PAD_EIM_CS2__GPIO_2_27 IOMUX_PAD(0x47c, 0x0e8, 1, 0x0, 0, NO_PAD_CTRL) |
112 | #define MX51_PAD_GPIO_3_4__NANDF_RE_B IOMUX_PAD(0x4E8, 0x10C, 3, 0x0, 0, NO_PAD_CTRL) | 114 | #define MX51_PAD_EIM_CS3__GPIO_2_28 IOMUX_PAD(0x480, 0x0ec, 1, 0x0, 0, NO_PAD_CTRL) |
113 | #define MX51_PAD_GPIO_3_5__NANDF_ALE IOMUX_PAD(0x4EC, 0x110, 3, 0x0, 0, NO_PAD_CTRL) | 115 | #define MX51_PAD_EIM_CS4__GPIO_2_29 IOMUX_PAD(0x484, 0x0f0, 1, 0x0, 0, NO_PAD_CTRL) |
114 | #define MX51_PAD_GPIO_3_6__NANDF_CLE IOMUX_PAD(0x4F0, 0x114, 3, 0x0, 0, NO_PAD_CTRL) | 116 | #define MX51_PAD_EIM_CS5__GPIO_2_30 IOMUX_PAD(0x488, 0x0f4, 1, 0x0, 0, NO_PAD_CTRL) |
115 | #define MX51_PAD_GPIO_3_7__NANDF_WP_B IOMUX_PAD(0x4F4, 0x118, 3, 0x0, 0, NO_PAD_CTRL) | 117 | #define MX51_PAD_EIM_DTACK__GPIO_2_31 IOMUX_PAD(0x48c, 0x0f8, 1, 0x0, 0, NO_PAD_CTRL) |
116 | #define MX51_PAD_GPIO_3_8__NANDF_RB0 IOMUX_PAD(0x4F8, 0x11C, 3, 0x0, 0, NO_PAD_CTRL) | 118 | #define MX51_PAD_EIM_LBA__GPIO_3_1 IOMUX_PAD(0x494, 0x0FC, 1, 0x0, 0, NO_PAD_CTRL) |
117 | #define MX51_PAD_GPIO_3_9__NANDF_RB1 IOMUX_PAD(0x4FC, 0x120, 3, 0x0, 0, NO_PAD_CTRL) | 119 | #define MX51_PAD_EIM_CRE__GPIO_3_2 IOMUX_PAD(0x4A0, 0x100, 1, 0x0, 0, NO_PAD_CTRL) |
118 | #define MX51_PAD_GPIO_3_10__NANDF_RB2 IOMUX_PAD(0x500, 0x124, 3, 0x0, 0, NO_PAD_CTRL) | 120 | #define MX51_PAD_DRAM_CS1__DRAM_CS1 IOMUX_PAD(0x4D0, 0x104, 0, 0x0, 0, NO_PAD_CTRL) |
119 | #define MX51_PAD_GPIO_3_11__NANDF_RB3 IOMUX_PAD(0x504, 0x128, 3, 0x0, 0, NO_PAD_CTRL) | 121 | #define MX51_PAD_NANDF_WE_B__GPIO_3_3 IOMUX_PAD(0x4E4, 0x108, 3, 0x0, 0, NO_PAD_CTRL) |
120 | #define MX51_PAD_GPIO_3_12__GPIO_NAND IOMUX_PAD(0x514, 0x12C, 3, 0x0, 0, NO_PAD_CTRL) | 122 | #define MX51_PAD_NANDF_RE_B__GPIO_3_4 IOMUX_PAD(0x4E8, 0x10C, 3, 0x0, 0, NO_PAD_CTRL) |
121 | /* REVISIT: Not sure of these values | 123 | #define MX51_PAD_NANDF_ALE__GPIO_3_5 IOMUX_PAD(0x4EC, 0x110, 3, 0x0, 0, NO_PAD_CTRL) |
122 | 124 | #define MX51_PAD_NANDF_CLE__GPIO_3_6 IOMUX_PAD(0x4F0, 0x114, 3, 0x0, 0, NO_PAD_CTRL) | |
123 | #define MX51_PAD_GPIO_1___NANDF_RB4 IOMUX_PAD(, , , 0x0, 0, NO_PAD_CTRL) | 125 | #define MX51_PAD_NANDF_WP_B__GPIO_3_7 IOMUX_PAD(0x4F4, 0x118, 3, 0x0, 0, NO_PAD_CTRL) |
124 | #define MX51_PAD_GPIO_3_13__NANDF_RB5 IOMUX_PAD(0x5D8, 0x130, 3, 0x0, 0, NO_PAD_CTRL) | 126 | #define MX51_PAD_NANDF_RB0__GPIO_3_8 IOMUX_PAD(0x4F8, 0x11C, 3, 0x0, 0, NO_PAD_CTRL) |
125 | #define MX51_PAD_GPIO_3_15__NANDF_RB7 IOMUX_PAD(0x5E0, 0x138, 3, 0x0, 0, NO_PAD_CTRL) | 127 | #define MX51_PAD_NANDF_RB1__GPIO_3_9 IOMUX_PAD(0x4FC, 0x120, 3, 0x0, 0, NO_PAD_CTRL) |
126 | */ | 128 | #define MX51_PAD_NANDF_RB2__GPIO_3_10 IOMUX_PAD(0x500, 0x124, 3, 0x0, 0, NO_PAD_CTRL) |
127 | #define MX51_PAD_GPIO_3_14__NANDF_RB6 IOMUX_PAD(0x5DC, 0x134, 3, 0x0, 0, NO_PAD_CTRL) | 129 | #define MX51_PAD_NANDF_RB3__GPIO_3_11 IOMUX_PAD(0x504, 0x128, 3, 0x0, 0, NO_PAD_CTRL) |
128 | #define MX51_PAD_GPIO_3_16__NANDF_CS0 IOMUX_PAD(0x518, 0x130, 3, 0x0, 0, NO_PAD_CTRL) | 130 | #define MX51_PAD_GPIO_NAND__GPIO_3_12 IOMUX_PAD(0x514, 0x12C, 3, 0x0, 0, NO_PAD_CTRL) |
129 | #define MX51_PAD_GPIO_3_17__NANDF_CS1 IOMUX_PAD(0x51C, 0x134, 3, 0x0, 0, NO_PAD_CTRL) | 131 | #define MX51_PAD_NANDF_CS0__GPIO_3_16 IOMUX_PAD(0x518, 0x130, 3, 0x0, 0, NO_PAD_CTRL) |
130 | #define MX51_PAD_GPIO_3_18__NANDF_CS2 IOMUX_PAD(0x520, 0x138, 3, 0x0, 0, NO_PAD_CTRL) | 132 | #define MX51_PAD_NANDF_CS1__GPIO_3_17 IOMUX_PAD(0x51C, 0x134, 3, 0x0, 0, NO_PAD_CTRL) |
131 | #define MX51_PAD_GPIO_3_19__NANDF_CS3 IOMUX_PAD(0x524, 0x13C, 3, 0x0, 0, NO_PAD_CTRL) | 133 | #define MX51_PAD_NANDF_CS2__GPIO_3_18 IOMUX_PAD(0x520, 0x138, 3, 0x0, 0, NO_PAD_CTRL) |
132 | #define MX51_PAD_GPIO_3_20__NANDF_CS4 IOMUX_PAD(0x528, 0x140, 3, 0x0, 0, NO_PAD_CTRL) | 134 | #define MX51_PAD_NANDF_CS3__GPIO_3_19 IOMUX_PAD(0x524, 0x13C, 3, 0x0, 0, NO_PAD_CTRL) |
133 | #define MX51_PAD_GPIO_3_21__NANDF_CS5 IOMUX_PAD(0x52C, 0x144, 3, 0x0, 0, NO_PAD_CTRL) | 135 | #define MX51_PAD_NANDF_CS4__GPIO_3_20 IOMUX_PAD(0x528, 0x140, 3, 0x0, 0, NO_PAD_CTRL) |
134 | #define MX51_PAD_GPIO_3_22__NANDF_CS6 IOMUX_PAD(0x530, 0x148, 3, 0x0, 0, NO_PAD_CTRL) | 136 | #define MX51_PAD_NANDF_CS5__GPIO_3_21 IOMUX_PAD(0x52C, 0x144, 3, 0x0, 0, NO_PAD_CTRL) |
135 | #define MX51_PAD_GPIO_3_23__NANDF_CS7 IOMUX_PAD(0x534, 0x14C, 3, 0x0, 0, NO_PAD_CTRL) | 137 | #define MX51_PAD_NANDF_CS6__GPIO_3_22 IOMUX_PAD(0x530, 0x148, 3, 0x0, 0, NO_PAD_CTRL) |
136 | #define MX51_PAD_GPIO_3_24__NANDF_RDY_INT IOMUX_PAD(0x538, 0x150, 3, 0x0, 0, NO_PAD_CTRL) | 138 | #define MX51_PAD_NANDF_CS7__GPIO_3_23 IOMUX_PAD(0x534, 0x14C, 3, 0x0, 0, NO_PAD_CTRL) |
137 | #define MX51_PAD_GPIO_3_25__NANDF_D15 IOMUX_PAD(0x53C, 0x154, 3, 0x0, 0, NO_PAD_CTRL) | 139 | #define MX51_PAD_NANDF_RDY_INT__GPIO_3_24 IOMUX_PAD(0x538, 0x150, 3, 0x0, 0, NO_PAD_CTRL) |
138 | #define MX51_PAD_GPIO_3_26__NANDF_D14 IOMUX_PAD(0x540, 0x158, 3, 0x0, 0, NO_PAD_CTRL) | 140 | #define MX51_PAD_NANDF_D15__GPIO_3_25 IOMUX_PAD(0x53C, 0x154, 3, 0x0, 0, NO_PAD_CTRL) |
139 | #define MX51_PAD_GPIO_3_27__NANDF_D13 IOMUX_PAD(0x544, 0x15C, 3, 0x0, 0, NO_PAD_CTRL) | 141 | #define MX51_PAD_NANDF_D14__GPIO_3_26 IOMUX_PAD(0x540, 0x158, 3, 0x0, 0, NO_PAD_CTRL) |
140 | #define MX51_PAD_GPIO_3_28__NANDF_D12 IOMUX_PAD(0x548, 0x160, 3, 0x0, 0, NO_PAD_CTRL) | 142 | #define MX51_PAD_NANDF_D13__GPIO_3_27 IOMUX_PAD(0x544, 0x15C, 3, 0x0, 0, NO_PAD_CTRL) |
141 | #define MX51_PAD_GPIO_3_29__NANDF_D11 IOMUX_PAD(0x54C, 0x164, 3, 0x0, 0, NO_PAD_CTRL) | 143 | #define MX51_PAD_NANDF_D12__GPIO_3_28 IOMUX_PAD(0x548, 0x160, 3, 0x0, 0, NO_PAD_CTRL) |
142 | #define MX51_PAD_GPIO_3_30__NANDF_D10 IOMUX_PAD(0x550, 0x168, 3, 0x0, 0, NO_PAD_CTRL) | 144 | #define MX51_PAD_NANDF_D11__GPIO_3_29 IOMUX_PAD(0x54C, 0x164, 3, 0x0, 0, NO_PAD_CTRL) |
143 | #define MX51_PAD_GPIO_3_31__NANDF_D9 IOMUX_PAD(0x554, 0x16C, 3, 0x0, 0, NO_PAD_CTRL) | 145 | #define MX51_PAD_NANDF_D10__GPIO_3_30 IOMUX_PAD(0x550, 0x168, 3, 0x0, 0, NO_PAD_CTRL) |
144 | #define MX51_PAD_GPIO_4_0__NANDF_D8 IOMUX_PAD(0x558, 0x170, 3, 0x0, 0, NO_PAD_CTRL) | 146 | #define MX51_PAD_NANDF_D9__GPIO_3_31 IOMUX_PAD(0x554, 0x16C, 3, 0x0, 0, NO_PAD_CTRL) |
145 | #define MX51_PAD_GPIO_4_1__NANDF_D7 IOMUX_PAD(0x55C, 0x174, 3, 0x0, 0, NO_PAD_CTRL) | 147 | #define MX51_PAD_NANDF_D8__GPIO_4_0 IOMUX_PAD(0x558, 0x170, 3, 0x0, 0, NO_PAD_CTRL) |
146 | #define MX51_PAD_GPIO_4_2__NANDF_D6 IOMUX_PAD(0x560, 0x178, 3, 0x0, 0, NO_PAD_CTRL) | 148 | #define MX51_PAD_NANDF_D7__GPIO_4_1 IOMUX_PAD(0x55C, 0x174, 3, 0x0, 0, NO_PAD_CTRL) |
147 | #define MX51_PAD_GPIO_4_3__NANDF_D5 IOMUX_PAD(0x564, 0x17C, 3, 0x0, 0, NO_PAD_CTRL) | 149 | #define MX51_PAD_NANDF_D6__GPIO_4_2 IOMUX_PAD(0x560, 0x178, 3, 0x0, 0, NO_PAD_CTRL) |
148 | #define MX51_PAD_GPIO_4_4__NANDF_D4 IOMUX_PAD(0x568, 0x180, 3, 0x0, 0, NO_PAD_CTRL) | 150 | #define MX51_PAD_NANDF_D5__GPIO_4_3 IOMUX_PAD(0x564, 0x17C, 3, 0x0, 0, NO_PAD_CTRL) |
149 | #define MX51_PAD_GPIO_4_5__NANDF_D3 IOMUX_PAD(0x56C, 0x184, 3, 0x0, 0, NO_PAD_CTRL) | 151 | #define MX51_PAD_NANDF_D4__GPIO_4_4 IOMUX_PAD(0x568, 0x180, 3, 0x0, 0, NO_PAD_CTRL) |
150 | #define MX51_PAD_GPIO_4_6__NANDF_D2 IOMUX_PAD(0x570, 0x188, 3, 0x0, 0, NO_PAD_CTRL) | 152 | #define MX51_PAD_NANDF_D3__GPIO_4_5 IOMUX_PAD(0x56C, 0x184, 3, 0x0, 0, NO_PAD_CTRL) |
151 | #define MX51_PAD_GPIO_4_7__NANDF_D1 IOMUX_PAD(0x574, 0x18C, 3, 0x0, 0, NO_PAD_CTRL) | 153 | #define MX51_PAD_NANDF_D2__GPIO_4_6 IOMUX_PAD(0x570, 0x188, 3, 0x0, 0, NO_PAD_CTRL) |
152 | #define MX51_PAD_GPIO_4_8__NANDF_D0 IOMUX_PAD(0x578, 0x190, 3, 0x0, 0, NO_PAD_CTRL) | 154 | #define MX51_PAD_NANDF_D1__GPIO_4_7 IOMUX_PAD(0x574, 0x18C, 3, 0x0, 0, NO_PAD_CTRL) |
153 | #define MX51_PAD_GPIO_3_12__CSI1_D8 IOMUX_PAD(0x57C, 0x194, 3, 0x0, 0, NO_PAD_CTRL) | 155 | #define MX51_PAD_NANDF_D0__GPIO_4_8 IOMUX_PAD(0x578, 0x190, 3, 0x0, 0, NO_PAD_CTRL) |
154 | #define MX51_PAD_GPIO_3_13__CSI1_D9 IOMUX_PAD(0x580, 0x198, 3, 0x0, 0, NO_PAD_CTRL) | 156 | #define MX51_PAD_CSI1_D8__GPIO_3_12 IOMUX_PAD(0x57C, 0x194, 3, 0x0, 0, NO_PAD_CTRL) |
155 | #define MX51_PAD_CSI1_D10__CSI1_D10 IOMUX_PAD(0x584, 0x19C, 0, 0x0, 0, NO_PAD_CTRL) | 157 | #define MX51_PAD_CSI1_D9__GPIO_3_13 IOMUX_PAD(0x580, 0x198, 3, 0x0, 0, NO_PAD_CTRL) |
156 | #define MX51_PAD_CSI1_D11__CSI1_D11 IOMUX_PAD(0x588, 0x1A0, 0, 0x0, 0, NO_PAD_CTRL) | 158 | #define MX51_PAD_CSI1_D10__CSI1_D10 IOMUX_PAD(0x584, 0x19C, 0, 0x0, 0, NO_PAD_CTRL) |
157 | #define MX51_PAD_CSI1_D12__CSI1_D12 IOMUX_PAD(0x58C, 0x1A4, 0, 0x0, 0, NO_PAD_CTRL) | 159 | #define MX51_PAD_CSI1_D11__CSI1_D11 IOMUX_PAD(0x588, 0x1A0, 0, 0x0, 0, NO_PAD_CTRL) |
158 | #define MX51_PAD_CSI1_D13__CSI1_D13 IOMUX_PAD(0x590, 0x1A8, 0, 0x0, 0, NO_PAD_CTRL) | 160 | #define MX51_PAD_CSI1_D12__CSI1_D12 IOMUX_PAD(0x58C, 0x1A4, 0, 0x0, 0, NO_PAD_CTRL) |
159 | #define MX51_PAD_CSI1_D14__CSI1_D14 IOMUX_PAD(0x594, 0x1AC, 0, 0x0, 0, NO_PAD_CTRL) | 161 | #define MX51_PAD_CSI1_D13__CSI1_D13 IOMUX_PAD(0x590, 0x1A8, 0, 0x0, 0, NO_PAD_CTRL) |
160 | #define MX51_PAD_CSI1_D15__CSI1_D15 IOMUX_PAD(0x598, 0x1B0, 0, 0x0, 0, NO_PAD_CTRL) | 162 | #define MX51_PAD_CSI1_D14__CSI1_D14 IOMUX_PAD(0x594, 0x1AC, 0, 0x0, 0, NO_PAD_CTRL) |
161 | #define MX51_PAD_CSI1_D16__CSI1_D16 IOMUX_PAD(0x59C, 0x1B4, 0, 0x0, 0, NO_PAD_CTRL) | 163 | #define MX51_PAD_CSI1_D15__CSI1_D15 IOMUX_PAD(0x598, 0x1B0, 0, 0x0, 0, NO_PAD_CTRL) |
162 | #define MX51_PAD_CSI1_D17__CSI1_D17 IOMUX_PAD(0x5A0, 0x1B8, 0, 0x0, 0, NO_PAD_CTRL) | 164 | #define MX51_PAD_CSI1_D16__CSI1_D16 IOMUX_PAD(0x59C, 0x1B4, 0, 0x0, 0, NO_PAD_CTRL) |
163 | #define MX51_PAD_CSI1_D18__CSI1_D18 IOMUX_PAD(0x5A4, 0x1BC, 0, 0x0, 0, NO_PAD_CTRL) | 165 | #define MX51_PAD_CSI1_D17__CSI1_D17 IOMUX_PAD(0x5A0, 0x1B8, 0, 0x0, 0, NO_PAD_CTRL) |
164 | #define MX51_PAD_CSI1_D19__CSI1_D19 IOMUX_PAD(0x5A8, 0x1C0, 0, 0x0, 0, NO_PAD_CTRL) | 166 | #define MX51_PAD_CSI1_D18__CSI1_D18 IOMUX_PAD(0x5A4, 0x1BC, 0, 0x0, 0, NO_PAD_CTRL) |
165 | #define MX51_PAD_CSI1_VSYNC__CSI1_VSYNC IOMUX_PAD(0x5AC, 0x1C4, 0, 0x0, 0, NO_PAD_CTRL) | 167 | #define MX51_PAD_CSI1_D19__CSI1_D19 IOMUX_PAD(0x5A8, 0x1C0, 0, 0x0, 0, NO_PAD_CTRL) |
166 | #define MX51_PAD_CSI1_HSYNC__CSI1_HSYNC IOMUX_PAD(0x5B0, 0x1C8, 0, 0x0, 0, NO_PAD_CTRL) | 168 | #define MX51_PAD_CSI1_VSYNC__CSI1_VSYNC IOMUX_PAD(0x5AC, 0x1C4, 0, 0x0, 0, NO_PAD_CTRL) |
167 | #define MX51_PAD_CSI1_PIXCLK__CSI1_PIXCLK IOMUX_PAD(0x5B4, 0x0, 0, 0x0, 0, NO_PAD_CTRL) | 169 | #define MX51_PAD_CSI1_HSYNC__CSI1_HSYNC IOMUX_PAD(0x5B0, 0x1C8, 0, 0x0, 0, NO_PAD_CTRL) |
168 | #define MX51_PAD_CSI1_MCLK__CSI1_MCLK IOMUX_PAD(0x5B8, 0x0, 0, 0x0, 0, NO_PAD_CTRL) | 170 | #define MX51_PAD_CSI1_PIXCLK__CSI1_PIXCLK IOMUX_PAD(0x5B4, 0x000, 0, 0x0, 0, NO_PAD_CTRL) |
169 | #define MX51_PAD_CSI1_PKE0__CSI1_PKE0 IOMUX_PAD(0x860, 0x0, 0, 0x0, 0, NO_PAD_CTRL) | 171 | #define MX51_PAD_CSI1_MCLK__CSI1_MCLK IOMUX_PAD(0x5B8, 0x000, 0, 0x0, 0, NO_PAD_CTRL) |
170 | #define MX51_PAD_GPIO_4_9__CSI2_D12 IOMUX_PAD(0x5BC, 0x1CC, 3, 0x0, 0, NO_PAD_CTRL) | 172 | #define MX51_PAD_CSI1_PKE0__CSI1_PKE0 IOMUX_PAD(0x860, 0x000, 0, 0x0, 0, NO_PAD_CTRL) |
171 | #define MX51_PAD_GPIO_4_10__CSI2_D13 IOMUX_PAD(0x5C0, 0x1D0, 3, 0x0, 0, NO_PAD_CTRL) | 173 | #define MX51_PAD_CSI2_D12__GPIO_4_9 IOMUX_PAD(0x5BC, 0x1CC, 3, 0x0, 0, NO_PAD_CTRL) |
172 | #define MX51_PAD_GPIO_4_11__CSI2_D14 IOMUX_PAD(0x5C4, 0x1D4, 3, 0x0, 0, NO_PAD_CTRL) | 174 | #define MX51_PAD_CSI2_D13__GPIO_4_10 IOMUX_PAD(0x5C0, 0x1D0, 3, 0x0, 0, NO_PAD_CTRL) |
173 | #define MX51_PAD_GPIO_4_12__CSI2_D15 IOMUX_PAD(0x5C8, 0x1D8, 3, 0x0, 0, NO_PAD_CTRL) | 175 | #define MX51_PAD_CSI2_D14__GPIO_4_11 IOMUX_PAD(0x5C4, 0x1D4, 3, 0x0, 0, NO_PAD_CTRL) |
174 | #define MX51_PAD_GPIO_4_11__CSI2_D16 IOMUX_PAD(0x5CC, 0x1DC, 3, 0x0, 0, NO_PAD_CTRL) | 176 | #define MX51_PAD_CSI2_D15__GPIO_4_12 IOMUX_PAD(0x5C8, 0x1D8, 3, 0x0, 0, NO_PAD_CTRL) |
175 | #define MX51_PAD_GPIO_4_12__CSI2_D17 IOMUX_PAD(0x5D0, 0x1E0, 3, 0x0, 0, NO_PAD_CTRL) | 177 | #define MX51_PAD_CSI2_D16__GPIO_4_11 IOMUX_PAD(0x5CC, 0x1DC, 3, 0x0, 0, NO_PAD_CTRL) |
176 | #define MX51_PAD_GPIO_4_11__CSI2_D18 IOMUX_PAD(0x5D4, 0x1E4, 3, 0x0, 0, NO_PAD_CTRL) | 178 | #define MX51_PAD_CSI2_D17__GPIO_4_12 IOMUX_PAD(0x5D0, 0x1E0, 3, 0x0, 0, NO_PAD_CTRL) |
177 | #define MX51_PAD_GPIO_4_12__CSI2_D19 IOMUX_PAD(0x5D8, 0x1E8, 3, 0x0, 0, NO_PAD_CTRL) | 179 | #define MX51_PAD_CSI2_D18__GPIO_4_11 IOMUX_PAD(0x5D4, 0x1E4, 3, 0x0, 0, NO_PAD_CTRL) |
178 | #define MX51_PAD_GPIO_4_13__CSI2_VSYNC IOMUX_PAD(0x5DC, 0x1EC, 3, 0x0, 0, NO_PAD_CTRL) | 180 | #define MX51_PAD_CSI2_D19__GPIO_4_12 IOMUX_PAD(0x5D8, 0x1E8, 3, 0x0, 0, NO_PAD_CTRL) |
179 | #define MX51_PAD_GPIO_4_14__CSI2_HSYNC IOMUX_PAD(0x5E0, 0x1F0, 3, 0x0, 0, NO_PAD_CTRL) | 181 | #define MX51_PAD_CSI2_VSYNC__GPIO_4_13 IOMUX_PAD(0x5DC, 0x1EC, 3, 0x0, 0, NO_PAD_CTRL) |
180 | #define MX51_PAD_GPIO_4_15__CSI2_PIXCLK IOMUX_PAD(0x5E4, 0x1F4, 3, 0x0, 0, NO_PAD_CTRL) | 182 | #define MX51_PAD_CSI2_HSYNC__GPIO_4_14 IOMUX_PAD(0x5E0, 0x1F0, 3, 0x0, 0, NO_PAD_CTRL) |
181 | #define MX51_PAD_CSI2_PKE0__CSI2_PKE0 IOMUX_PAD(0x81C, 0x0, 0, 0x0, 0, NO_PAD_CTRL) | 183 | #define MX51_PAD_CSI2_PIXCLK__GPIO_4_15 IOMUX_PAD(0x5E4, 0x1F4, 3, 0x0, 0, NO_PAD_CTRL) |
182 | #define MX51_PAD_GPIO_4_16__I2C1_CLK IOMUX_PAD(0x5E8, 0x1F8, 3, 0x0, 0, NO_PAD_CTRL) | 184 | #define MX51_PAD_I2C1_CLK__GPIO_4_16 IOMUX_PAD(0x5E8, 0x1F8, 3, 0x0, 0, NO_PAD_CTRL) |
183 | #define MX51_PAD_GPIO_4_17__I2C1_DAT IOMUX_PAD(0x5EC, 0x1FC, 3, 0x0, 0, NO_PAD_CTRL) | 185 | #define MX51_PAD_I2C1_CLK__HSI2C_CLK IOMUX_PAD(0x5E8, 0x1F8, 0, 0x0, 0, NO_PAD_CTRL) |
184 | #define MX51_PAD_GPIO_4_18__AUD3_BB_TXD IOMUX_PAD(0x5F0, 0x200, 3, 0x0, 0, NO_PAD_CTRL) | 186 | #define MX51_PAD_I2C1_DAT__GPIO_4_17 IOMUX_PAD(0x5EC, 0x1FC, 3, 0x0, 0, NO_PAD_CTRL) |
185 | #define MX51_PAD_GPIO_4_19__AUD3_BB_RXD IOMUX_PAD(0x5F4, 0x204, 3, 0x0, 0, NO_PAD_CTRL) | 187 | #define MX51_PAD_I2C1_DAT__HSI2C_DAT IOMUX_PAD(0x5EC, 0x1FC, 0, 0x0, 0, NO_PAD_CTRL) |
186 | #define MX51_PAD_GPIO_4_20__AUD3_BB_CK IOMUX_PAD(0x5F8, 0x208, 3, 0x0, 0, NO_PAD_CTRL) | 188 | #define MX51_PAD_AUD3_BB_TXD__GPIO_4_18 IOMUX_PAD(0x5F0, 0x200, 3, 0x0, 0, NO_PAD_CTRL) |
187 | #define MX51_PAD_GPIO_4_21__AUD3_BB_FS IOMUX_PAD(0x5FC, 0x20C, 3, 0x0, 0, NO_PAD_CTRL) | 189 | #define MX51_PAD_AUD3_BB_RXD__GPIO_4_19 IOMUX_PAD(0x5F4, 0x204, 3, 0x0, 0, NO_PAD_CTRL) |
188 | #define MX51_PAD_GPIO_4_22__CSPI1_MOSI IOMUX_PAD(0x600, 0x210, 3, 0x0, 0, NO_PAD_CTRL) | 190 | #define MX51_PAD_AUD3_BB_CK__GPIO_4_20 IOMUX_PAD(0x5F8, 0x208, 3, 0x0, 0, NO_PAD_CTRL) |
189 | #define MX51_PAD_GPIO_4_23__CSPI1_MISO IOMUX_PAD(0x604, 0x214, 3, 0x0, 0, NO_PAD_CTRL) | 191 | #define MX51_PAD_AUD3_BB_FS__GPIO_4_21 IOMUX_PAD(0x5FC, 0x20C, 3, 0x0, 0, NO_PAD_CTRL) |
190 | #define MX51_PAD_GPIO_4_24__CSPI1_SS0 IOMUX_PAD(0x608, 0x218, 3, 0x0, 0, NO_PAD_CTRL) | 192 | #define MX51_PAD_CSPI1_MOSI__GPIO_4_22 IOMUX_PAD(0x600, 0x210, 3, 0x0, 0, NO_PAD_CTRL) |
191 | #define MX51_PAD_GPIO_4_25__CSPI1_SS1 IOMUX_PAD(0x60C, 0x21C, 3, 0x0, 0, NO_PAD_CTRL) | 193 | #define MX51_PAD_CSPI1_MISO__GPIO_4_23 IOMUX_PAD(0x604, 0x214, 3, 0x0, 0, NO_PAD_CTRL) |
192 | #define MX51_PAD_GPIO_4_26__CSPI1_RDY IOMUX_PAD(0x610, 0x220, 3, 0x0, 0, NO_PAD_CTRL) | 194 | #define MX51_PAD_CSPI1_SS0__GPIO_4_24 IOMUX_PAD(0x608, 0x218, 3, 0x0, 0, NO_PAD_CTRL) |
193 | #define MX51_PAD_GPIO_4_27__CSPI1_SCLK IOMUX_PAD(0x614, 0x224, 3, 0x0, 0, NO_PAD_CTRL) | 195 | #define MX51_PAD_CSPI1_SS1__GPIO_4_25 IOMUX_PAD(0x60C, 0x21C, 3, 0x0, 0, NO_PAD_CTRL) |
194 | 196 | #define MX51_PAD_CSPI1_RDY__GPIO_4_26 IOMUX_PAD(0x610, 0x220, 3, 0x0, 0, NO_PAD_CTRL) | |
195 | /* Babbage UART1 */ | 197 | #define MX51_PAD_CSPI1_SCLK__GPIO_4_27 IOMUX_PAD(0x614, 0x224, 3, 0x0, 0, NO_PAD_CTRL) |
196 | #define MX51_PAD_UART1_RXD__UART1_RXD IOMUX_PAD(0x618, 0x228, IOMUX_CONFIG_ALT0, 0x9e4, 0, MX51_UART1_PAD_CTRL | PAD_CTL_SRE_FAST) | 198 | #define MX51_PAD_UART1_RXD__UART1_RXD IOMUX_PAD(0x618, 0x228, 0, 0x9e4, 0, MX51_UART1_PAD_CTRL | PAD_CTL_SRE_FAST) |
197 | #define MX51_PAD_UART1_TXD__UART1_TXD IOMUX_PAD(0x61C, 0x22C, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_UART1_PAD_CTRL | PAD_CTL_SRE_FAST) | 199 | #define MX51_PAD_UART1_TXD__UART1_TXD IOMUX_PAD(0x61C, 0x22C, 0, 0x0, 0, MX51_UART1_PAD_CTRL | PAD_CTL_SRE_FAST) |
198 | #define MX51_PAD_UART1_RTS__UART1_RTS IOMUX_PAD(0x620, 0x230, IOMUX_CONFIG_ALT0, 0x9e0, 0, MX51_UART1_PAD_CTRL) | 200 | #define MX51_PAD_UART1_RTS__UART1_RTS IOMUX_PAD(0x620, 0x230, 0, 0x9e0, 0, MX51_UART1_PAD_CTRL) |
199 | #define MX51_PAD_UART1_CTS__UART1_CTS IOMUX_PAD(0x624, 0x234, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_UART1_PAD_CTRL) | 201 | #define MX51_PAD_UART1_CTS__UART1_CTS IOMUX_PAD(0x624, 0x234, 0, 0x0, 0, MX51_UART1_PAD_CTRL) |
200 | 202 | #define MX51_PAD_UART2_RXD__UART2_RXD IOMUX_PAD(0x628, 0x238, 0, 0x9ec, 2, MX51_UART2_PAD_CTRL) | |
201 | /* Babbage UART2 */ | 203 | #define MX51_PAD_UART2_TXD__UART2_TXD IOMUX_PAD(0x62C, 0x23C, 0, 0x0, 0, MX51_UART2_PAD_CTRL) |
202 | #define MX51_PAD_UART2_RXD__UART2_RXD IOMUX_PAD(0x628, 0x238, IOMUX_CONFIG_ALT0, 0x9ec, 2, MX51_UART2_PAD_CTRL) | 204 | #define MX51_PAD_UART3_RXD__UART3_RXD IOMUX_PAD(0x630, 0x240, 1, 0x9f4, 4, MX51_UART3_PAD_CTRL) |
203 | #define MX51_PAD_UART2_TXD__UART2_TXD IOMUX_PAD(0x62C, 0x23C, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_UART2_PAD_CTRL) | 205 | #define MX51_PAD_UART3_RXD__GPIO_1_22 IOMUX_PAD(0x630, 0x240, 3, 0x0, 0, NO_PAD_CTRL) |
204 | 206 | #define MX51_PAD_UART3_TXD__UART3_TXD IOMUX_PAD(0x634, 0x244, 1, 0x0, 0, MX51_UART3_PAD_CTRL) | |
205 | #define MX51_PAD_GPIO_1_22__UART3_RXD IOMUX_PAD(0x630, 0x240, 3, 0x0, 0, NO_PAD_CTRL) | 207 | #define MX51_PAD_UART3_TXD__GPIO_1_23 IOMUX_PAD(0x634, 0x244, 3, 0x0, 0, NO_PAD_CTRL) |
206 | #define MX51_PAD_GPIO_1_23__UART3_TXD IOMUX_PAD(0x634, 0x244, 3, 0x0, 0, NO_PAD_CTRL) | 208 | #define MX51_PAD_OWIRE_LINE__GPIO_1_24 IOMUX_PAD(0x638, 0x248, 3, 0x0, 0, NO_PAD_CTRL) |
207 | #define MX51_PAD_GPIO_1_24__OWIRE_LINE IOMUX_PAD(0x638, 0x248, 3, 0x0, 0, NO_PAD_CTRL) | 209 | #define MX51_PAD_KEY_ROW0__KEY_ROW0 IOMUX_PAD(0x63C, 0x24C, 0, 0x0, 0, NO_PAD_CTRL) |
208 | #define MX51_PAD_KEY_ROW0__KEY_ROW0 IOMUX_PAD(0x63C, 0x24C, 0, 0x0, 0, NO_PAD_CTRL) | 210 | #define MX51_PAD_KEY_ROW1__KEY_ROW1 IOMUX_PAD(0x640, 0x250, 0, 0x0, 0, NO_PAD_CTRL) |
209 | #define MX51_PAD_KEY_ROW1__KEY_ROW1 IOMUX_PAD(0x640, 0x250, 0, 0x0, 0, NO_PAD_CTRL) | 211 | #define MX51_PAD_KEY_ROW2__KEY_ROW2 IOMUX_PAD(0x644, 0x254, 0, 0x0, 0, NO_PAD_CTRL) |
210 | #define MX51_PAD_KEY_ROW2__KEY_ROW2 IOMUX_PAD(0x644, 0x254, 0, 0x0, 0, NO_PAD_CTRL) | 212 | #define MX51_PAD_KEY_ROW3__KEY_ROW3 IOMUX_PAD(0x648, 0x258, 0, 0x0, 0, NO_PAD_CTRL) |
211 | #define MX51_PAD_KEY_ROW3__KEY_ROW3 IOMUX_PAD(0x648, 0x258, 0, 0x0, 0, NO_PAD_CTRL) | 213 | #define MX51_PAD_KEY_COL0__KEY_COL0 IOMUX_PAD(0x64C, 0x25C, 0, 0x0, 0, NO_PAD_CTRL) |
212 | #define MX51_PAD_KEY_COL0__KEY_COL0 IOMUX_PAD(0x64C, 0x25C, 0, 0x0, 0, NO_PAD_CTRL) | 214 | #define MX51_PAD_KEY_COL1__KEY_COL1 IOMUX_PAD(0x650, 0x260, 0, 0x0, 0, NO_PAD_CTRL) |
213 | #define MX51_PAD_KEY_COL1__KEY_COL1 IOMUX_PAD(0x650, 0x260, 0, 0x0, 0, NO_PAD_CTRL) | 215 | #define MX51_PAD_KEY_COL2__KEY_COL2 IOMUX_PAD(0x654, 0x264, 0, 0x0, 0, NO_PAD_CTRL) |
214 | #define MX51_PAD_KEY_COL2__KEY_COL2 IOMUX_PAD(0x654, 0x264, 0, 0x0, 0, NO_PAD_CTRL) | 216 | #define MX51_PAD_KEY_COL3__KEY_COL3 IOMUX_PAD(0x658, 0x268, 0, 0x0, 0, NO_PAD_CTRL) |
215 | #define MX51_PAD_KEY_COL3__KEY_COL3 IOMUX_PAD(0x658, 0x268, 0, 0x0, 0, NO_PAD_CTRL) | 217 | #define MX51_PAD_KEY_COL4__KEY_COL4 IOMUX_PAD(0x65C, 0x26C, 0, 0x0, 0, NO_PAD_CTRL) |
216 | #define MX51_PAD_KEY_COL4__KEY_COL4 IOMUX_PAD(0x65C, 0x26C, 0, 0x0, 0, NO_PAD_CTRL) | 218 | #define MX51_PAD_KEY_COL4__UART3_RTS IOMUX_PAD(0x65C, 0x26C, 2, 0x9f0, 4, MX51_UART3_PAD_CTRL) |
217 | #define MX51_PAD_KEY_COL5__KEY_COL5 IOMUX_PAD(0x660, 0x270, 0, 0x0, 0, NO_PAD_CTRL) | 219 | #define MX51_PAD_KEY_COL4__I2C2_SCL IOMUX_PAD(0x65C, 0x26C, (3 | IOMUX_CONFIG_SION), \ |
218 | #define MX51_PAD_USBH1_CLK__USBH1_CLK IOMUX_PAD(0x678, 0x278, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 220 | 0x09b8, 1, MX51_I2C_PAD_CTRL) |
219 | #define MX51_PAD_USBH1_DIR__USBH1_DIR IOMUX_PAD(0x67C, 0x27C, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 221 | #define MX51_PAD_KEY_COL5__KEY_COL5 IOMUX_PAD(0x660, 0x270, 0, 0x0, 0, NO_PAD_CTRL) |
220 | #define MX51_PAD_USBH1_STP__USBH1_STP IOMUX_PAD(0x680, 0x280, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 222 | #define MX51_PAD_KEY_COL5__UART3_CTS IOMUX_PAD(0x660, 0x270, 2, 0, 0, MX51_UART3_PAD_CTRL) |
221 | #define MX51_PAD_USBH1_STP__GPIO_1_27 IOMUX_PAD(0x680, 0x280, IOMUX_CONFIG_GPIO, 0x0, 0, MX51_USBH1_PAD_CTRL) | 223 | #define MX51_PAD_KEY_COL5__I2C2_SDA IOMUX_PAD(0x660, 0x270, (3 | IOMUX_CONFIG_SION), \ |
222 | #define MX51_PAD_USBH1_NXT__USBH1_NXT IOMUX_PAD(0x684, 0x284, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 224 | 0x09bc, 1, MX51_I2C_PAD_CTRL) |
223 | #define MX51_PAD_USBH1_DATA0__USBH1_DATA0 IOMUX_PAD(0x688, 0x288, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 225 | #define MX51_PAD_USBH1_CLK__USBH1_CLK IOMUX_PAD(0x678, 0x278, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
224 | #define MX51_PAD_USBH1_DATA1__USBH1_DATA1 IOMUX_PAD(0x68C, 0x28C, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 226 | #define MX51_PAD_USBH1_DIR__USBH1_DIR IOMUX_PAD(0x67C, 0x27C, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
225 | #define MX51_PAD_USBH1_DATA2__USBH1_DATA2 IOMUX_PAD(0x690, 0x290, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 227 | #define MX51_PAD_USBH1_STP__USBH1_STP IOMUX_PAD(0x680, 0x280, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
226 | #define MX51_PAD_USBH1_DATA3__USBH1_DATA3 IOMUX_PAD(0x694, 0x294, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 228 | #define MX51_PAD_USBH1_STP__GPIO_1_27 IOMUX_PAD(0x680, 0x280, 2, 0x0, 0, MX51_USBH1_PAD_CTRL) |
227 | #define MX51_PAD_USBH1_DATA4__USBH1_DATA4 IOMUX_PAD(0x698, 0x298, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 229 | #define MX51_PAD_USBH1_NXT__USBH1_NXT IOMUX_PAD(0x684, 0x284, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
228 | #define MX51_PAD_USBH1_DATA5__USBH1_DATA5 IOMUX_PAD(0x69C, 0x29C, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 230 | #define MX51_PAD_USBH1_DATA0__USBH1_DATA0 IOMUX_PAD(0x688, 0x288, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
229 | #define MX51_PAD_USBH1_DATA6__USBH1_DATA6 IOMUX_PAD(0x6A0, 0x2A0, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 231 | #define MX51_PAD_USBH1_DATA1__USBH1_DATA1 IOMUX_PAD(0x68C, 0x28C, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
230 | #define MX51_PAD_USBH1_DATA7__USBH1_DATA7 IOMUX_PAD(0x6A4, 0x2A4, IOMUX_CONFIG_ALT0, 0x0, 0, MX51_USBH1_PAD_CTRL) | 232 | #define MX51_PAD_USBH1_DATA2__USBH1_DATA2 IOMUX_PAD(0x690, 0x290, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
231 | #define MX51_PAD_GPIO_3_0__DI1_PIN11 IOMUX_PAD(0x6A8, 0x2A8, 4, 0x0, 0, NO_PAD_CTRL) | 233 | #define MX51_PAD_USBH1_DATA3__USBH1_DATA3 IOMUX_PAD(0x694, 0x294, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
232 | #define MX51_PAD_GPIO_3_1__DI1_PIN12 IOMUX_PAD(0x6AC, 0x2AC, 4, 0x0, 0, NO_PAD_CTRL) | 234 | #define MX51_PAD_USBH1_DATA4__USBH1_DATA4 IOMUX_PAD(0x698, 0x298, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
233 | #define MX51_PAD_GPIO_3_2__DI1_PIN13 IOMUX_PAD(0x6B0, 0x2B0, 4, 0x0, 0, NO_PAD_CTRL) | 235 | #define MX51_PAD_USBH1_DATA5__USBH1_DATA5 IOMUX_PAD(0x69C, 0x29C, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
234 | #define MX51_PAD_GPIO_3_3__DI1_D0_CS IOMUX_PAD(0x6B4, 0x2B4, 4, 0x0, 0, NO_PAD_CTRL) | 236 | #define MX51_PAD_USBH1_DATA6__USBH1_DATA6 IOMUX_PAD(0x6A0, 0x2A0, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
235 | #define MX51_PAD_GPIO_3_4__DI1_D1_CS IOMUX_PAD(0x6B8, 0x2B8, 4, 0x0, 0, NO_PAD_CTRL) | 237 | #define MX51_PAD_USBH1_DATA7__USBH1_DATA7 IOMUX_PAD(0x6A4, 0x2A4, 0, 0x0, 0, MX51_USBH1_PAD_CTRL) |
236 | #define MX51_PAD_GPIO_3_5__DISPB2_SER_DIN IOMUX_PAD(0x6BC, 0x2BC, 4, 0x0, 0, NO_PAD_CTRL) | 238 | #define MX51_PAD_DI1_PIN11__GPIO_3_0 IOMUX_PAD(0x6A8, 0x2A8, 4, 0x0, 0, NO_PAD_CTRL) |
237 | #define MX51_PAD_GPIO_3_6__DISPB2_SER_DIO IOMUX_PAD(0x6C0, 0x2C0, 4, 0x0, 0, NO_PAD_CTRL) | 239 | #define MX51_PAD_DI1_PIN12__GPIO_3_1 IOMUX_PAD(0x6AC, 0x2AC, 4, 0x0, 0, NO_PAD_CTRL) |
238 | #define MX51_PAD_GPIO_3_7__DISPB2_SER_CLK IOMUX_PAD(0x6C4, 0x2C4, 4, 0x0, 0, NO_PAD_CTRL) | 240 | #define MX51_PAD_DI1_PIN13__GPIO_3_2 IOMUX_PAD(0x6B0, 0x2B0, 4, 0x0, 0, NO_PAD_CTRL) |
239 | #define MX51_PAD_GPIO_3_8__DISPB2_SER_RS IOMUX_PAD(0x6C8, 0x2C8, 4, 0x0, 0, NO_PAD_CTRL) | 241 | #define MX51_PAD_DI1_D0_CS__GPIO_3_3 IOMUX_PAD(0x6B4, 0x2B4, 4, 0x0, 0, NO_PAD_CTRL) |
240 | #define MX51_PAD_DISP1_DAT0__DISP1_DAT0 IOMUX_PAD(0x6CC, 0x2CC, 0, 0x0, 0, NO_PAD_CTRL) | 242 | #define MX51_PAD_DI1_D1_CS__GPIO_3_4 IOMUX_PAD(0x6B8, 0x2B8, 4, 0x0, 0, NO_PAD_CTRL) |
241 | #define MX51_PAD_DISP1_DAT1__DISP1_DAT1 IOMUX_PAD(0x6D0, 0x2D0, 0, 0x0, 0, NO_PAD_CTRL) | 243 | #define MX51_PAD_DISPB2_SER_DIN__GPIO_3_5 IOMUX_PAD(0x6BC, 0x2BC, 4, 0x0, 0, NO_PAD_CTRL) |
242 | #define MX51_PAD_DISP1_DAT2__DISP1_DAT2 IOMUX_PAD(0x6D4, 0x2D4, 0, 0x0, 0, NO_PAD_CTRL) | 244 | #define MX51_PAD_DISPB2_SER_DIO__GPIO_3_6 IOMUX_PAD(0x6C0, 0x2C0, 4, 0x0, 0, NO_PAD_CTRL) |
243 | #define MX51_PAD_DISP1_DAT3__DISP1_DAT3 IOMUX_PAD(0x6D8, 0x2D8, 0, 0x0, 0, NO_PAD_CTRL) | 245 | #define MX51_PAD_DISPB2_SER_CLK__GPIO_3_7 IOMUX_PAD(0x6C4, 0x2C4, 4, 0x0, 0, NO_PAD_CTRL) |
244 | #define MX51_PAD_DISP1_DAT4__DISP1_DAT4 IOMUX_PAD(0x6DC, 0x2DC, 0, 0x0, 0, NO_PAD_CTRL) | 246 | #define MX51_PAD_DISPB2_SER_RS__GPIO_3_8 IOMUX_PAD(0x6C8, 0x2C8, 4, 0x0, 0, NO_PAD_CTRL) |
245 | #define MX51_PAD_DISP1_DAT5__DISP1_DAT5 IOMUX_PAD(0x6E0, 0x2E0, 0, 0x0, 0, NO_PAD_CTRL) | 247 | #define MX51_PAD_DISP1_DAT0__DISP1_DAT0 IOMUX_PAD(0x6CC, 0x2CC, 0, 0x0, 0, NO_PAD_CTRL) |
246 | #define MX51_PAD_DISP1_DAT6__DISP1_DAT6 IOMUX_PAD(0x6E4, 0x2E4, 0, 0x0, 0, NO_PAD_CTRL) | 248 | #define MX51_PAD_DISP1_DAT1__DISP1_DAT1 IOMUX_PAD(0x6D0, 0x2D0, 0, 0x0, 0, NO_PAD_CTRL) |
247 | #define MX51_PAD_DISP1_DAT7__DISP1_DAT7 IOMUX_PAD(0x6E8, 0x2E8, 0, 0x0, 0, NO_PAD_CTRL) | 249 | #define MX51_PAD_DISP1_DAT2__DISP1_DAT2 IOMUX_PAD(0x6D4, 0x2D4, 0, 0x0, 0, NO_PAD_CTRL) |
248 | #define MX51_PAD_DISP1_DAT8__DISP1_DAT8 IOMUX_PAD(0x6EC, 0x2EC, 0, 0x0, 0, NO_PAD_CTRL) | 250 | #define MX51_PAD_DISP1_DAT3__DISP1_DAT3 IOMUX_PAD(0x6D8, 0x2D8, 0, 0x0, 0, NO_PAD_CTRL) |
249 | #define MX51_PAD_DISP1_DAT9__DISP1_DAT9 IOMUX_PAD(0x6F0, 0x2F0, 0, 0x0, 0, NO_PAD_CTRL) | 251 | #define MX51_PAD_DISP1_DAT4__DISP1_DAT4 IOMUX_PAD(0x6DC, 0x2DC, 0, 0x0, 0, NO_PAD_CTRL) |
250 | #define MX51_PAD_DISP1_DAT10__DISP1_DAT10 IOMUX_PAD(0x6F4, 0x2F4, 0, 0x0, 0, NO_PAD_CTRL) | 252 | #define MX51_PAD_DISP1_DAT5__DISP1_DAT5 IOMUX_PAD(0x6E0, 0x2E0, 0, 0x0, 0, NO_PAD_CTRL) |
251 | #define MX51_PAD_DISP1_DAT11__DISP1_DAT11 IOMUX_PAD(0x6F8, 0x2F8, 0, 0x0, 0, NO_PAD_CTRL) | 253 | #define MX51_PAD_DISP1_DAT6__DISP1_DAT6 IOMUX_PAD(0x6E4, 0x2E4, 0, 0x0, 0, NO_PAD_CTRL) |
252 | #define MX51_PAD_DISP1_DAT12__DISP1_DAT12 IOMUX_PAD(0x6FC, 0x2FC, 0, 0x0, 0, NO_PAD_CTRL) | 254 | #define MX51_PAD_DISP1_DAT7__DISP1_DAT7 IOMUX_PAD(0x6E8, 0x2E8, 0, 0x0, 0, NO_PAD_CTRL) |
253 | #define MX51_PAD_DISP1_DAT13__DISP1_DAT13 IOMUX_PAD(0x700, 0x300, 0, 0x0, 0, NO_PAD_CTRL) | 255 | #define MX51_PAD_DISP1_DAT8__DISP1_DAT8 IOMUX_PAD(0x6EC, 0x2EC, 0, 0x0, 0, NO_PAD_CTRL) |
254 | #define MX51_PAD_DISP1_DAT14__DISP1_DAT14 IOMUX_PAD(0x704, 0x304, 0, 0x0, 0, NO_PAD_CTRL) | 256 | #define MX51_PAD_DISP1_DAT9__DISP1_DAT9 IOMUX_PAD(0x6F0, 0x2F0, 0, 0x0, 0, NO_PAD_CTRL) |
255 | #define MX51_PAD_DISP1_DAT15__DISP1_DAT15 IOMUX_PAD(0x708, 0x308, 0, 0x0, 0, NO_PAD_CTRL) | 257 | #define MX51_PAD_DISP1_DAT10__DISP1_DAT10 IOMUX_PAD(0x6F4, 0x2F4, 0, 0x0, 0, NO_PAD_CTRL) |
256 | #define MX51_PAD_DISP1_DAT16__DISP1_DAT16 IOMUX_PAD(0x70C, 0x30C, 0, 0x0, 0, NO_PAD_CTRL) | 258 | #define MX51_PAD_DISP1_DAT11__DISP1_DAT11 IOMUX_PAD(0x6F8, 0x2F8, 0, 0x0, 0, NO_PAD_CTRL) |
257 | #define MX51_PAD_DISP1_DAT17__DISP1_DAT17 IOMUX_PAD(0x710, 0x310, 0, 0x0, 0, NO_PAD_CTRL) | 259 | #define MX51_PAD_DISP1_DAT12__DISP1_DAT12 IOMUX_PAD(0x6FC, 0x2FC, 0, 0x0, 0, NO_PAD_CTRL) |
258 | #define MX51_PAD_DISP1_DAT18__DISP1_DAT18 IOMUX_PAD(0x714, 0x314, 0, 0x0, 0, NO_PAD_CTRL) | 260 | #define MX51_PAD_DISP1_DAT13__DISP1_DAT13 IOMUX_PAD(0x700, 0x300, 0, 0x0, 0, NO_PAD_CTRL) |
259 | #define MX51_PAD_DISP1_DAT19__DISP1_DAT19 IOMUX_PAD(0x718, 0x318, 0, 0x0, 0, NO_PAD_CTRL) | 261 | #define MX51_PAD_DISP1_DAT14__DISP1_DAT14 IOMUX_PAD(0x704, 0x304, 0, 0x0, 0, NO_PAD_CTRL) |
260 | #define MX51_PAD_DISP1_DAT20__DISP1_DAT20 IOMUX_PAD(0x71C, 0x31C, 0, 0x0, 0, NO_PAD_CTRL) | 262 | #define MX51_PAD_DISP1_DAT15__DISP1_DAT15 IOMUX_PAD(0x708, 0x308, 0, 0x0, 0, NO_PAD_CTRL) |
261 | #define MX51_PAD_DISP1_DAT21__DISP1_DAT21 IOMUX_PAD(0x720, 0x320, 0, 0x0, 0, NO_PAD_CTRL) | 263 | #define MX51_PAD_DISP1_DAT16__DISP1_DAT16 IOMUX_PAD(0x70C, 0x30C, 0, 0x0, 0, NO_PAD_CTRL) |
262 | #define MX51_PAD_DISP1_DAT22__DISP1_DAT22 IOMUX_PAD(0x724, 0x324, 0, 0x0, 0, NO_PAD_CTRL) | 264 | #define MX51_PAD_DISP1_DAT17__DISP1_DAT17 IOMUX_PAD(0x710, 0x310, 0, 0x0, 0, NO_PAD_CTRL) |
263 | #define MX51_PAD_DISP1_DAT23__DISP1_DAT23 IOMUX_PAD(0x728, 0x328, 0, 0x0, 0, NO_PAD_CTRL) | 265 | #define MX51_PAD_DISP1_DAT18__DISP1_DAT18 IOMUX_PAD(0x714, 0x314, 0, 0x0, 0, NO_PAD_CTRL) |
264 | #define MX51_PAD_DI1_PIN3__DI1_PIN3 IOMUX_PAD(0x72C, 0x32C, 0, 0x0, 0, NO_PAD_CTRL) | 266 | #define MX51_PAD_DISP1_DAT19__DISP1_DAT19 IOMUX_PAD(0x718, 0x318, 0, 0x0, 0, NO_PAD_CTRL) |
265 | #define MX51_PAD_DI1_PIN2__DI1_PIN2 IOMUX_PAD(0x734, 0x330, 0, 0x0, 0, NO_PAD_CTRL) | 267 | #define MX51_PAD_DISP1_DAT20__DISP1_DAT20 IOMUX_PAD(0x71C, 0x31C, 0, 0x0, 0, NO_PAD_CTRL) |
266 | #define MX51_PAD_DI_GP1__DI_GP1 IOMUX_PAD(0x73C, 0x334, 0, 0x0, 0, NO_PAD_CTRL) | 268 | #define MX51_PAD_DISP1_DAT21__DISP1_DAT21 IOMUX_PAD(0x720, 0x320, 0, 0x0, 0, NO_PAD_CTRL) |
267 | #define MX51_PAD_DI_GP2__DI_GP2 IOMUX_PAD(0x740, 0x338, 0, 0x0, 0, NO_PAD_CTRL) | 269 | #define MX51_PAD_DISP1_DAT22__DISP1_DAT22 IOMUX_PAD(0x724, 0x324, 0, 0x0, 0, NO_PAD_CTRL) |
268 | #define MX51_PAD_DI_GP3__DI_GP3 IOMUX_PAD(0x744, 0x33C, 0, 0x0, 0, NO_PAD_CTRL) | 270 | #define MX51_PAD_DISP1_DAT23__DISP1_DAT23 IOMUX_PAD(0x728, 0x328, 0, 0x0, 0, NO_PAD_CTRL) |
269 | #define MX51_PAD_DI2_PIN4__DI2_PIN4 IOMUX_PAD(0x748, 0x340, 0, 0x0, 0, NO_PAD_CTRL) | 271 | #define MX51_PAD_DI1_PIN3__DI1_PIN3 IOMUX_PAD(0x72C, 0x32C, 0, 0x0, 0, NO_PAD_CTRL) |
270 | #define MX51_PAD_DI2_PIN2__DI2_PIN2 IOMUX_PAD(0x74C, 0x344, 0, 0x0, 0, NO_PAD_CTRL) | 272 | #define MX51_PAD_DI1_PIN2__DI1_PIN2 IOMUX_PAD(0x734, 0x330, 0, 0x0, 0, NO_PAD_CTRL) |
271 | #define MX51_PAD_DI2_PIN3__DI2_PIN3 IOMUX_PAD(0x750, 0x348, 0, 0x0, 0, NO_PAD_CTRL) | 273 | #define MX51_PAD_DI_GP1__DI_GP1 IOMUX_PAD(0x73C, 0x334, 0, 0x0, 0, NO_PAD_CTRL) |
272 | #define MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK IOMUX_PAD(0x754, 0x34C, 0, 0x0, 0, NO_PAD_CTRL) | 274 | #define MX51_PAD_DI_GP2__DI_GP2 IOMUX_PAD(0x740, 0x338, 0, 0x0, 0, NO_PAD_CTRL) |
273 | #define MX51_PAD_DI_GP4__DI_GP4 IOMUX_PAD(0x758, 0x350, 0, 0x0, 0, NO_PAD_CTRL) | 275 | #define MX51_PAD_DI_GP3__DI_GP3 IOMUX_PAD(0x744, 0x33C, 0, 0x0, 0, NO_PAD_CTRL) |
274 | #define MX51_PAD_DISP2_DAT0__DISP2_DAT0 IOMUX_PAD(0x75C, 0x354, 0, 0x0, 0, NO_PAD_CTRL) | 276 | #define MX51_PAD_DI2_PIN4__DI2_PIN4 IOMUX_PAD(0x748, 0x340, 0, 0x0, 0, NO_PAD_CTRL) |
275 | #define MX51_PAD_DISP2_DAT1__DISP2_DAT1 IOMUX_PAD(0x760, 0x358, 0, 0x0, 0, NO_PAD_CTRL) | 277 | #define MX51_PAD_DI2_PIN2__DI2_PIN2 IOMUX_PAD(0x74C, 0x344, 0, 0x0, 0, NO_PAD_CTRL) |
276 | #define MX51_PAD_DISP2_DAT2__DISP2_DAT2 IOMUX_PAD(0x764, 0x35C, 0, 0x0, 0, NO_PAD_CTRL) | 278 | #define MX51_PAD_DI2_PIN3__DI2_PIN3 IOMUX_PAD(0x750, 0x348, 0, 0x0, 0, NO_PAD_CTRL) |
277 | #define MX51_PAD_DISP2_DAT3__DISP2_DAT3 IOMUX_PAD(0x768, 0x360, 0, 0x0, 0, NO_PAD_CTRL) | 279 | #define MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK IOMUX_PAD(0x754, 0x34C, 0, 0x0, 0, NO_PAD_CTRL) |
278 | #define MX51_PAD_DISP2_DAT4__DISP2_DAT4 IOMUX_PAD(0x76C, 0x364, 0, 0x0, 0, NO_PAD_CTRL) | 280 | #define MX51_PAD_DI_GP4__DI_GP4 IOMUX_PAD(0x758, 0x350, 0, 0x0, 0, NO_PAD_CTRL) |
279 | #define MX51_PAD_DISP2_DAT5__DISP2_DAT5 IOMUX_PAD(0x770, 0x368, 0, 0x0, 0, NO_PAD_CTRL) | 281 | #define MX51_PAD_DISP2_DAT0__DISP2_DAT0 IOMUX_PAD(0x75C, 0x354, 0, 0x0, 0, NO_PAD_CTRL) |
280 | #define MX51_PAD_GPIO_1_19__DISP2_DAT6 IOMUX_PAD(0x774, 0x36C, 5, 0x0, 0, NO_PAD_CTRL) | 282 | #define MX51_PAD_DISP2_DAT1__DISP2_DAT1 IOMUX_PAD(0x760, 0x358, 0, 0x0, 0, NO_PAD_CTRL) |
281 | #define MX51_PAD_GPIO_1_29__DISP2_DAT7 IOMUX_PAD(0x778, 0x370, 5, 0x0, 0, NO_PAD_CTRL) | 283 | #define MX51_PAD_DISP2_DAT2__DISP2_DAT2 IOMUX_PAD(0x764, 0x35C, 0, 0x0, 0, NO_PAD_CTRL) |
282 | #define MX51_PAD_GPIO_1_30__DISP2_DAT8 IOMUX_PAD(0x77C, 0x374, 5, 0x0, 0, NO_PAD_CTRL) | 284 | #define MX51_PAD_DISP2_DAT3__DISP2_DAT3 IOMUX_PAD(0x768, 0x360, 0, 0x0, 0, NO_PAD_CTRL) |
283 | #define MX51_PAD_GPIO_1_31__DISP2_DAT9 IOMUX_PAD(0x780, 0x378, 5, 0x0, 0, NO_PAD_CTRL) | 285 | #define MX51_PAD_DISP2_DAT4__DISP2_DAT4 IOMUX_PAD(0x76C, 0x364, 0, 0x0, 0, NO_PAD_CTRL) |
284 | #define MX51_PAD_DISP2_DAT10__DISP2_DAT10 IOMUX_PAD(0x784, 0x37C, 0, 0x0, 0, NO_PAD_CTRL) | 286 | #define MX51_PAD_DISP2_DAT5__DISP2_DAT5 IOMUX_PAD(0x770, 0x368, 0, 0x0, 0, NO_PAD_CTRL) |
285 | #define MX51_PAD_DISP2_DAT11__DISP2_DAT11 IOMUX_PAD(0x788, 0x380, 0, 0x0, 0, NO_PAD_CTRL) | 287 | #define MX51_PAD_DISP2_DAT6__GPIO_1_19 IOMUX_PAD(0x774, 0x36C, 5, 0x0, 0, NO_PAD_CTRL) |
286 | #define MX51_PAD_DISP2_DAT12__DISP2_DAT12 IOMUX_PAD(0x78C, 0x384, 0, 0x0, 0, NO_PAD_CTRL) | 288 | #define MX51_PAD_DISP2_DAT7__GPIO_1_29 IOMUX_PAD(0x778, 0x370, 5, 0x0, 0, NO_PAD_CTRL) |
287 | #define MX51_PAD_DISP2_DAT13__DISP2_DAT13 IOMUX_PAD(0x790, 0x388, 0, 0x0, 0, NO_PAD_CTRL) | 289 | #define MX51_PAD_DISP2_DAT8__GPIO_1_30 IOMUX_PAD(0x77C, 0x374, 5, 0x0, 0, NO_PAD_CTRL) |
288 | #define MX51_PAD_DISP2_DAT14__DISP2_DAT14 IOMUX_PAD(0x794, 0x38C, 0, 0x0, 0, NO_PAD_CTRL) | 290 | #define MX51_PAD_DISP2_DAT9__GPIO_1_31 IOMUX_PAD(0x780, 0x378, 5, 0x0, 0, NO_PAD_CTRL) |
289 | #define MX51_PAD_DISP2_DAT15__DISP2_DAT15 IOMUX_PAD(0x798, 0x390, 0, 0x0, 0, NO_PAD_CTRL) | 291 | #define MX51_PAD_DISP2_DAT10__DISP2_DAT10 IOMUX_PAD(0x784, 0x37C, 0, 0x0, 0, NO_PAD_CTRL) |
290 | #define MX51_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x79C, 0x394, 0, 0x0, 0, NO_PAD_CTRL) | 292 | #define MX51_PAD_DISP2_DAT11__DISP2_DAT11 IOMUX_PAD(0x788, 0x380, 0, 0x0, 0, NO_PAD_CTRL) |
291 | #define MX51_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x7A0, 0x398, 0, 0x0, 0, NO_PAD_CTRL) | 293 | #define MX51_PAD_DISP2_DAT12__DISP2_DAT12 IOMUX_PAD(0x78C, 0x384, 0, 0x0, 0, NO_PAD_CTRL) |
292 | #define MX51_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x7A4, 0x39C, 0, 0x0, 0, NO_PAD_CTRL) | 294 | #define MX51_PAD_DISP2_DAT13__DISP2_DAT13 IOMUX_PAD(0x790, 0x388, 0, 0x0, 0, NO_PAD_CTRL) |
293 | #define MX51_PAD_SD1_DATA1__SD1_DATA1 IOMUX_PAD(0x7A8, 0x3A0, 0, 0x0, 0, NO_PAD_CTRL) | 295 | #define MX51_PAD_DISP2_DAT14__DISP2_DAT14 IOMUX_PAD(0x794, 0x38C, 0, 0x0, 0, NO_PAD_CTRL) |
294 | #define MX51_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x7AC, 0x3A4, 0, 0x0, 0, NO_PAD_CTRL) | 296 | #define MX51_PAD_DISP2_DAT15__DISP2_DAT15 IOMUX_PAD(0x798, 0x390, 0, 0x0, 0, NO_PAD_CTRL) |
295 | #define MX51_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x7B0, 0x3A8, 0, 0x0, 0, NO_PAD_CTRL) | 297 | #define MX51_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x79C, 0x394, 0, 0x0, 0, NO_PAD_CTRL) |
296 | #define MX51_PAD_GPIO_1_0__GPIO1_0 IOMUX_PAD(0x7B4, 0x3AC, 1, 0x0, 0, NO_PAD_CTRL) | 298 | #define MX51_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x7A0, 0x398, 0, 0x0, 0, NO_PAD_CTRL) |
297 | #define MX51_PAD_GPIO_1_1__GPIO1_1 IOMUX_PAD(0x7B8, 0x3B0, 1, 0x0, 0, NO_PAD_CTRL) | 299 | #define MX51_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x7A4, 0x39C, 0, 0x0, 0, NO_PAD_CTRL) |
298 | #define MX51_PAD_SD2_CMD__SD2_CMD IOMUX_PAD(0x7BC, 0x3B4, 0, 0x0, 0, NO_PAD_CTRL) | 300 | #define MX51_PAD_SD1_DATA1__SD1_DATA1 IOMUX_PAD(0x7A8, 0x3A0, 0, 0x0, 0, NO_PAD_CTRL) |
299 | #define MX51_PAD_SD2_CLK__SD2_CLK IOMUX_PAD(0x7C0, 0x3B8, 0, 0x0, 0, NO_PAD_CTRL) | 301 | #define MX51_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x7AC, 0x3A4, 0, 0x0, 0, NO_PAD_CTRL) |
300 | #define MX51_PAD_SD2_DATA0__SD2_DATA0 IOMUX_PAD(0x7C4, 0x3BC, 0, 0x0, 0, NO_PAD_CTRL) | 302 | #define MX51_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x7B0, 0x3A8, 0, 0x0, 0, NO_PAD_CTRL) |
301 | #define MX51_PAD_SD2_DATA1__SD2_DATA1 IOMUX_PAD(0x7C8, 0x3C0, 0, 0x0, 0, NO_PAD_CTRL) | 303 | #define MX51_PAD_GPIO_1_0__GPIO_1_0 IOMUX_PAD(0x7B4, 0x3AC, 1, 0x0, 0, NO_PAD_CTRL) |
302 | #define MX51_PAD_SD2_DATA2__SD2_DATA2 IOMUX_PAD(0x7CC, 0x3C4, 0, 0x0, 0, NO_PAD_CTRL) | 304 | #define MX51_PAD_GPIO_1_1__GPIO_1_1 IOMUX_PAD(0x7B8, 0x3B0, 1, 0x0, 0, NO_PAD_CTRL) |
303 | #define MX51_PAD_SD2_DATA3__SD2_DATA3 IOMUX_PAD(0x7D0, 0x3C8, 0, 0x0, 0, NO_PAD_CTRL) | 305 | #define MX51_PAD_SD2_CMD__SD2_CMD IOMUX_PAD(0x7BC, 0x3B4, 0, 0x0, 0, NO_PAD_CTRL) |
304 | #define MX51_PAD_GPIO_1_2__GPIO1_2 IOMUX_PAD(0x7D4, 0x3CC, 0, 0x0, 0, NO_PAD_CTRL) | 306 | #define MX51_PAD_SD2_CLK__SD2_CLK IOMUX_PAD(0x7C0, 0x3B8, 0, 0x0, 0, NO_PAD_CTRL) |
305 | #define MX51_PAD_GPIO_1_3__GPIO1_3 IOMUX_PAD(0x7D8, 0x3D0, 0, 0x0, 0, NO_PAD_CTRL) | 307 | #define MX51_PAD_SD2_DATA0__SD2_DATA0 IOMUX_PAD(0x7C4, 0x3BC, 0, 0x0, 0, NO_PAD_CTRL) |
306 | #define MX51_PAD_PMIC_INT_REQ__PMIC_INT_REQ IOMUX_PAD(0x7FC, 0x3D4, 0, 0x0, 0, NO_PAD_CTRL) | 308 | #define MX51_PAD_SD2_DATA1__SD2_DATA1 IOMUX_PAD(0x7C8, 0x3C0, 0, 0x0, 0, NO_PAD_CTRL) |
307 | #define MX51_PAD_GPIO_1_4__GPIO1_4 IOMUX_PAD(0x804, 0x3D8, 0, 0x0, 0, NO_PAD_CTRL) | 309 | #define MX51_PAD_SD2_DATA2__SD2_DATA2 IOMUX_PAD(0x7CC, 0x3C4, 0, 0x0, 0, NO_PAD_CTRL) |
308 | #define MX51_PAD_GPIO_1_5__GPIO1_5 IOMUX_PAD(0x808, 0x3DC, 0, 0x0, 0, NO_PAD_CTRL) | 310 | #define MX51_PAD_SD2_DATA3__SD2_DATA3 IOMUX_PAD(0x7D0, 0x3C8, 0, 0x0, 0, NO_PAD_CTRL) |
309 | #define MX51_PAD_GPIO_1_6__GPIO1_6 IOMUX_PAD(0x80C, 0x3E0, 0, 0x0, 0, NO_PAD_CTRL) | 311 | #define MX51_PAD_GPIO_1_2__GPIO_1_2 IOMUX_PAD(0x7D4, 0x3CC, 0, 0x0, 0, NO_PAD_CTRL) |
310 | #define MX51_PAD_GPIO_1_7__GPIO1_7 IOMUX_PAD(0x810, 0x3E4, 0, 0x0, 0, MX51_GPIO_PAD_CTRL) | 312 | #define MX51_PAD_GPIO_1_2__I2C2_SCL IOMUX_PAD(0x7D4, 0x3CC, (2 | IOMUX_CONFIG_SION), \ |
311 | #define MX51_PAD_GPIO_1_8__GPIO1_8 IOMUX_PAD(0x814, 0x3E8, 0, 0x0, 1, \ | 313 | 0x9b8, 3, MX51_I2C_PAD_CTRL) |
312 | (PAD_CTL_SRE_SLOW | PAD_CTL_DSE_MED | PAD_CTL_PUS_100K_UP | PAD_CTL_HYS)) | 314 | #define MX51_PAD_GPIO_1_3__GPIO_1_3 IOMUX_PAD(0x7D8, 0x3D0, 0, 0x0, 0, NO_PAD_CTRL) |
313 | #define MX51_PAD_GPIO_1_9__GPIO1_9 IOMUX_PAD(0x818, 0x3EC, 0, 0x0, 0, NO_PAD_CTRL) | 315 | #define MX51_PAD_GPIO_1_3__I2C2_SDA IOMUX_PAD(0x7D8, 0x3D0, (2 | IOMUX_CONFIG_SION), \ |
314 | 316 | 0x9bc, 3, MX51_I2C_PAD_CTRL) | |
315 | /* EIM */ | 317 | #define MX51_PAD_PMIC_INT_REQ__PMIC_INT_REQ IOMUX_PAD(0x7FC, 0x3D4, 0, 0x0, 0, NO_PAD_CTRL) |
316 | #define MX51_PAD_EIM_DA0__EIM_DA0 IOMUX_PAD(0x7a8, 0x01c, 0, 0x0, 0, NO_PAD_CTRL) | 318 | #define MX51_PAD_GPIO_1_4__GPIO_1_4 IOMUX_PAD(0x804, 0x3D8, 0, 0x0, 0, NO_PAD_CTRL) |
317 | #define MX51_PAD_EIM_DA1__EIM_DA1 IOMUX_PAD(0x7a8, 0x020, 0, 0x0, 0, NO_PAD_CTRL) | 319 | #define MX51_PAD_GPIO_1_5__GPIO_1_5 IOMUX_PAD(0x808, 0x3DC, 0, 0x0, 0, NO_PAD_CTRL) |
318 | #define MX51_PAD_EIM_DA2__EIM_DA2 IOMUX_PAD(0x7a8, 0x024, 0, 0x0, 0, NO_PAD_CTRL) | 320 | #define MX51_PAD_GPIO_1_6__GPIO_1_6 IOMUX_PAD(0x80C, 0x3E0, 0, 0x0, 0, MX51_GPIO_PAD_CTRL) |
319 | #define MX51_PAD_EIM_DA3__EIM_DA3 IOMUX_PAD(0x7a8, 0x028, 0, 0x0, 0, NO_PAD_CTRL) | 321 | #define MX51_PAD_GPIO_1_7__GPIO_1_7 IOMUX_PAD(0x810, 0x3E4, 0, 0x0, 0, MX51_GPIO_PAD_CTRL) |
320 | #define MX51_PAD_EIM_DA4__EIM_DA4 IOMUX_PAD(0x7ac, 0x02c, 0, 0x0, 0, NO_PAD_CTRL) | 322 | #define MX51_PAD_GPIO_1_8__GPIO_1_8 IOMUX_PAD(0x814, 0x3E8, 0, 0x0, 1, MX51_GPIO_PAD_CTRL) |
321 | #define MX51_PAD_EIM_DA5__EIM_DA5 IOMUX_PAD(0x7ac, 0x030, 0, 0x0, 0, NO_PAD_CTRL) | 323 | #define MX51_PAD_GPIO_1_9__GPIO_1_9 IOMUX_PAD(0x818, 0x3EC, 0, 0x0, 0, NO_PAD_CTRL) |
322 | #define MX51_PAD_EIM_DA6__EIM_DA6 IOMUX_PAD(0x7ac, 0x034, 0, 0x0, 0, NO_PAD_CTRL) | ||
323 | #define MX51_PAD_EIM_DA7__EIM_DA7 IOMUX_PAD(0x7ac, 0x038, 0, 0x0, 0, NO_PAD_CTRL) | ||
324 | |||
325 | #define MX51_PAD_EIM_DA8__EIM_DA8 IOMUX_PAD(0x7b0, 0x03c, 0, 0x0, 0, NO_PAD_CTRL) | ||
326 | #define MX51_PAD_EIM_DA9__EIM_DA9 IOMUX_PAD(0x7b0, 0x040, 0, 0x0, 0, NO_PAD_CTRL) | ||
327 | #define MX51_PAD_EIM_DA10__EIM_DA10 IOMUX_PAD(0x7b0, 0x044, 0, 0x0, 0, NO_PAD_CTRL) | ||
328 | #define MX51_PAD_EIM_DA11__EIM_DA11 IOMUX_PAD(0x7b0, 0x048, 0, 0x0, 0, NO_PAD_CTRL) | ||
329 | #define MX51_PAD_EIM_DA12__EIM_DA12 IOMUX_PAD(0x7bc, 0x04c, 0, 0x0, 0, NO_PAD_CTRL) | ||
330 | #define MX51_PAD_EIM_DA13__EIM_DA13 IOMUX_PAD(0x7bc, 0x050, 0, 0x0, 0, NO_PAD_CTRL) | ||
331 | #define MX51_PAD_EIM_DA14__EIM_DA14 IOMUX_PAD(0x7bc, 0x054, 0, 0x0, 0, NO_PAD_CTRL) | ||
332 | #define MX51_PAD_EIM_DA15__EIM_DA15 IOMUX_PAD(0x7bc, 0x058, 0, 0x0, 0, NO_PAD_CTRL) | ||
333 | 324 | ||
334 | #endif /* __MACH_IOMUX_MX51_H__ */ | 325 | #endif /* __MACH_IOMUX_MX51_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mxc91231.h b/arch/arm/plat-mxc/include/mach/iomux-mxc91231.h index 3887f3fe29d4..15d59510f597 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mxc91231.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mxc91231.h | |||
@@ -12,10 +12,6 @@ | |||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | * GNU General Public License for more details. | 14 | * GNU General Public License for more details. |
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | 15 | */ |
20 | 16 | ||
21 | #ifndef __MACH_IOMUX_MXC91231_H__ | 17 | #ifndef __MACH_IOMUX_MXC91231_H__ |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-v3.h b/arch/arm/plat-mxc/include/mach/iomux-v3.h index f2f73d31d5ba..0880a4a1aed1 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-v3.h +++ b/arch/arm/plat-mxc/include/mach/iomux-v3.h | |||
@@ -89,6 +89,21 @@ struct pad_desc { | |||
89 | #define PAD_CTL_SRE_FAST (1 << 0) | 89 | #define PAD_CTL_SRE_FAST (1 << 0) |
90 | #define PAD_CTL_SRE_SLOW (0 << 0) | 90 | #define PAD_CTL_SRE_SLOW (0 << 0) |
91 | 91 | ||
92 | |||
93 | #define MX51_NUM_GPIO_PORT 4 | ||
94 | |||
95 | #define GPIO_PIN_MASK 0x1f | ||
96 | |||
97 | #define GPIO_PORT_SHIFT 5 | ||
98 | #define GPIO_PORT_MASK (0x7 << GPIO_PORT_SHIFT) | ||
99 | |||
100 | #define GPIO_PORTA (0 << GPIO_PORT_SHIFT) | ||
101 | #define GPIO_PORTB (1 << GPIO_PORT_SHIFT) | ||
102 | #define GPIO_PORTC (2 << GPIO_PORT_SHIFT) | ||
103 | #define GPIO_PORTD (3 << GPIO_PORT_SHIFT) | ||
104 | #define GPIO_PORTE (4 << GPIO_PORT_SHIFT) | ||
105 | #define GPIO_PORTF (5 << GPIO_PORT_SHIFT) | ||
106 | |||
92 | /* | 107 | /* |
93 | * setups a single pad in the iomuxer | 108 | * setups a single pad in the iomuxer |
94 | */ | 109 | */ |
diff --git a/arch/arm/plat-mxc/include/mach/memory.h b/arch/arm/plat-mxc/include/mach/memory.h index c4b40c35a6a1..564ec9dbc93d 100644 --- a/arch/arm/plat-mxc/include/mach/memory.h +++ b/arch/arm/plat-mxc/include/mach/memory.h | |||
@@ -44,12 +44,12 @@ | |||
44 | */ | 44 | */ |
45 | #define CONSISTENT_DMA_SIZE SZ_8M | 45 | #define CONSISTENT_DMA_SIZE SZ_8M |
46 | 46 | ||
47 | #elif defined(CONFIG_MX1_VIDEO) | 47 | #elif defined(CONFIG_MX1_VIDEO) || defined(CONFIG_VIDEO_MX2_HOSTSUPPORT) |
48 | /* | 48 | /* |
49 | * Increase size of DMA-consistent memory region. | 49 | * Increase size of DMA-consistent memory region. |
50 | * This is required for i.MX camera driver to capture at least four VGA frames. | 50 | * This is required for i.MX camera driver to capture at least four VGA frames. |
51 | */ | 51 | */ |
52 | #define CONSISTENT_DMA_SIZE SZ_4M | 52 | #define CONSISTENT_DMA_SIZE SZ_4M |
53 | #endif /* CONFIG_MX1_VIDEO */ | 53 | #endif /* CONFIG_MX1_VIDEO || CONFIG_VIDEO_MX2_HOSTSUPPORT */ |
54 | 54 | ||
55 | #endif /* __ASM_ARCH_MXC_MEMORY_H__ */ | 55 | #endif /* __ASM_ARCH_MXC_MEMORY_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/mmc.h b/arch/arm/plat-mxc/include/mach/mmc.h index de2128dada5c..29115f405af9 100644 --- a/arch/arm/plat-mxc/include/mach/mmc.h +++ b/arch/arm/plat-mxc/include/mach/mmc.h | |||
@@ -31,6 +31,9 @@ struct imxmmc_platform_data { | |||
31 | 31 | ||
32 | /* adjust slot voltage */ | 32 | /* adjust slot voltage */ |
33 | void (*setpower)(struct device *, unsigned int vdd); | 33 | void (*setpower)(struct device *, unsigned int vdd); |
34 | |||
35 | /* enable card detect using DAT3 */ | ||
36 | int dat3_card_detect; | ||
34 | }; | 37 | }; |
35 | 38 | ||
36 | #endif | 39 | #endif |
diff --git a/arch/arm/plat-mxc/include/mach/mx1.h b/arch/arm/plat-mxc/include/mach/mx1.h index 5eba7e6785de..641b24618239 100644 --- a/arch/arm/plat-mxc/include/mach/mx1.h +++ b/arch/arm/plat-mxc/include/mach/mx1.h | |||
@@ -91,24 +91,24 @@ | |||
91 | #define MX1_SIM_DATA_INT 16 | 91 | #define MX1_SIM_DATA_INT 16 |
92 | #define MX1_RTC_INT 17 | 92 | #define MX1_RTC_INT 17 |
93 | #define MX1_RTC_SAMINT 18 | 93 | #define MX1_RTC_SAMINT 18 |
94 | #define MX1_UART2_MINT_PFERR 19 | 94 | #define MX1_INT_UART2PFERR 19 |
95 | #define MX1_UART2_MINT_RTS 20 | 95 | #define MX1_INT_UART2RTS 20 |
96 | #define MX1_UART2_MINT_DTR 21 | 96 | #define MX1_INT_UART2DTR 21 |
97 | #define MX1_UART2_MINT_UARTC 22 | 97 | #define MX1_INT_UART2UARTC 22 |
98 | #define MX1_UART2_MINT_TX 23 | 98 | #define MX1_INT_UART2TX 23 |
99 | #define MX1_UART2_MINT_RX 24 | 99 | #define MX1_INT_UART2RX 24 |
100 | #define MX1_UART1_MINT_PFERR 25 | 100 | #define MX1_INT_UART1PFERR 25 |
101 | #define MX1_UART1_MINT_RTS 26 | 101 | #define MX1_INT_UART1RTS 26 |
102 | #define MX1_UART1_MINT_DTR 27 | 102 | #define MX1_INT_UART1DTR 27 |
103 | #define MX1_UART1_MINT_UARTC 28 | 103 | #define MX1_INT_UART1UARTC 28 |
104 | #define MX1_UART1_MINT_TX 29 | 104 | #define MX1_INT_UART1TX 29 |
105 | #define MX1_UART1_MINT_RX 30 | 105 | #define MX1_INT_UART1RX 30 |
106 | #define MX1_VOICE_DAC_INT 31 | 106 | #define MX1_VOICE_DAC_INT 31 |
107 | #define MX1_VOICE_ADC_INT 32 | 107 | #define MX1_VOICE_ADC_INT 32 |
108 | #define MX1_PEN_DATA_INT 33 | 108 | #define MX1_PEN_DATA_INT 33 |
109 | #define MX1_PWM_INT 34 | 109 | #define MX1_PWM_INT 34 |
110 | #define MX1_SDHC_INT 35 | 110 | #define MX1_SDHC_INT 35 |
111 | #define MX1_I2C_INT 39 | 111 | #define MX1_INT_I2C 39 |
112 | #define MX1_CSPI_INT 41 | 112 | #define MX1_CSPI_INT 41 |
113 | #define MX1_SSI_TX_INT 42 | 113 | #define MX1_SSI_TX_INT 42 |
114 | #define MX1_SSI_TX_ERR_INT 43 | 114 | #define MX1_SSI_TX_ERR_INT 43 |
@@ -245,7 +245,7 @@ | |||
245 | #define PEN_DATA_INT MX1_PEN_DATA_INT | 245 | #define PEN_DATA_INT MX1_PEN_DATA_INT |
246 | #define PWM_INT MX1_PWM_INT | 246 | #define PWM_INT MX1_PWM_INT |
247 | #define SDHC_INT MX1_SDHC_INT | 247 | #define SDHC_INT MX1_SDHC_INT |
248 | #define I2C_INT MX1_I2C_INT | 248 | #define I2C_INT MX1_INT_I2C |
249 | #define CSPI_INT MX1_CSPI_INT | 249 | #define CSPI_INT MX1_CSPI_INT |
250 | #define SSI_TX_INT MX1_SSI_TX_INT | 250 | #define SSI_TX_INT MX1_SSI_TX_INT |
251 | #define SSI_TX_ERR_INT MX1_SSI_TX_ERR_INT | 251 | #define SSI_TX_ERR_INT MX1_SSI_TX_ERR_INT |
diff --git a/arch/arm/plat-mxc/include/mach/mx25.h b/arch/arm/plat-mxc/include/mach/mx25.h index 4eb6e334bda5..4a6f800990f8 100644 --- a/arch/arm/plat-mxc/include/mach/mx25.h +++ b/arch/arm/plat-mxc/include/mach/mx25.h | |||
@@ -11,6 +11,12 @@ | |||
11 | #define MX25_AVIC_BASE_ADDR_VIRT 0xfc400000 | 11 | #define MX25_AVIC_BASE_ADDR_VIRT 0xfc400000 |
12 | #define MX25_AVIC_SIZE SZ_1M | 12 | #define MX25_AVIC_SIZE SZ_1M |
13 | 13 | ||
14 | #define MX25_I2C1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x80000) | ||
15 | #define MX25_I2C3_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x84000) | ||
16 | #define MX25_CAN1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x88000) | ||
17 | #define MX25_CAN2_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x8c000) | ||
18 | #define MX25_I2C2_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x98000) | ||
19 | #define MX25_CSPI1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0xa4000) | ||
14 | #define MX25_IOMUXC_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0xac000) | 20 | #define MX25_IOMUXC_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0xac000) |
15 | 21 | ||
16 | #define MX25_CRM_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0x80000) | 22 | #define MX25_CRM_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0x80000) |
@@ -27,22 +33,48 @@ | |||
27 | IMX_IO_ADDRESS(x, MX25_AIPS2) ?: \ | 33 | IMX_IO_ADDRESS(x, MX25_AIPS2) ?: \ |
28 | IMX_IO_ADDRESS(x, MX25_AVIC)) | 34 | IMX_IO_ADDRESS(x, MX25_AVIC)) |
29 | 35 | ||
36 | #define MX25_AIPS1_IO_ADDRESS(x) \ | ||
37 | (((x) - MX25_AIPS1_BASE_ADDR) + MX25_AIPS1_BASE_ADDR_VIRT) | ||
38 | |||
30 | #define MX25_UART1_BASE_ADDR 0x43f90000 | 39 | #define MX25_UART1_BASE_ADDR 0x43f90000 |
31 | #define MX25_UART2_BASE_ADDR 0x43f94000 | 40 | #define MX25_UART2_BASE_ADDR 0x43f94000 |
41 | #define MX25_AUDMUX_BASE_ADDR 0x43fb0000 | ||
42 | #define MX25_UART3_BASE_ADDR 0x5000c000 | ||
43 | #define MX25_UART4_BASE_ADDR 0x50008000 | ||
44 | #define MX25_UART5_BASE_ADDR 0x5002c000 | ||
32 | 45 | ||
46 | #define MX25_CSPI3_BASE_ADDR 0x50004000 | ||
47 | #define MX25_CSPI2_BASE_ADDR 0x50010000 | ||
33 | #define MX25_FEC_BASE_ADDR 0x50038000 | 48 | #define MX25_FEC_BASE_ADDR 0x50038000 |
49 | #define MX25_SSI2_BASE_ADDR 0x50014000 | ||
50 | #define MX25_SSI1_BASE_ADDR 0x50034000 | ||
34 | #define MX25_NFC_BASE_ADDR 0xbb000000 | 51 | #define MX25_NFC_BASE_ADDR 0xbb000000 |
35 | #define MX25_DRYICE_BASE_ADDR 0x53ffc000 | 52 | #define MX25_DRYICE_BASE_ADDR 0x53ffc000 |
36 | #define MX25_LCDC_BASE_ADDR 0x53fbc000 | 53 | #define MX25_LCDC_BASE_ADDR 0x53fbc000 |
54 | #define MX25_KPP_BASE_ADDR 0x43fa8000 | ||
55 | #define MX25_OTG_BASE_ADDR 0x53ff4000 | ||
56 | #define MX25_CSI_BASE_ADDR 0x53ff8000 | ||
37 | 57 | ||
38 | #define MX25_INT_DRYICE 25 | 58 | #define MX25_INT_CSPI3 0 |
39 | #define MX25_INT_FEC 57 | 59 | #define MX25_INT_I2C1 3 |
40 | #define MX25_INT_NANDFC 33 | 60 | #define MX25_INT_I2C2 4 |
41 | #define MX25_INT_LCDC 39 | 61 | #define MX25_INT_UART4 5 |
42 | 62 | #define MX25_INT_I2C3 10 | |
43 | #if defined(IMX_NEEDS_DEPRECATED_SYMBOLS) | 63 | #define MX25_INT_SSI2 11 |
44 | #define UART1_BASE_ADDR MX25_UART1_BASE_ADDR | 64 | #define MX25_INT_SSI1 12 |
45 | #define UART2_BASE_ADDR MX25_UART2_BASE_ADDR | 65 | #define MX25_INT_CSPI2 13 |
46 | #endif | 66 | #define MX25_INT_CSPI1 14 |
67 | #define MX25_INT_CSI 17 | ||
68 | #define MX25_INT_UART3 18 | ||
69 | #define MX25_INT_KPP 24 | ||
70 | #define MX25_INT_DRYICE 25 | ||
71 | #define MX25_INT_UART2 32 | ||
72 | #define MX25_INT_NANDFC 33 | ||
73 | #define MX25_INT_LCDC 39 | ||
74 | #define MX25_INT_UART5 40 | ||
75 | #define MX25_INT_CAN1 43 | ||
76 | #define MX25_INT_CAN2 44 | ||
77 | #define MX25_INT_UART1 45 | ||
78 | #define MX25_INT_FEC 57 | ||
47 | 79 | ||
48 | #endif /* ifndef __MACH_MX25_H__ */ | 80 | #endif /* ifndef __MACH_MX25_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/mx27.h b/arch/arm/plat-mxc/include/mach/mx27.h index bae9cd75beee..a8ab2e02a8ca 100644 --- a/arch/arm/plat-mxc/include/mach/mx27.h +++ b/arch/arm/plat-mxc/include/mach/mx27.h | |||
@@ -48,7 +48,7 @@ | |||
48 | #define MX27_CSPI2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x0f000) | 48 | #define MX27_CSPI2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x0f000) |
49 | #define MX27_SSI1_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x10000) | 49 | #define MX27_SSI1_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x10000) |
50 | #define MX27_SSI2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x11000) | 50 | #define MX27_SSI2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x11000) |
51 | #define MX27_I2C_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x12000) | 51 | #define MX27_I2C1_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x12000) |
52 | #define MX27_SDHC1_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x13000) | 52 | #define MX27_SDHC1_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x13000) |
53 | #define MX27_SDHC2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x14000) | 53 | #define MX27_SDHC2_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x14000) |
54 | #define MX27_GPIO_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x15000) | 54 | #define MX27_GPIO_BASE_ADDR (MX27_AIPI_BASE_ADDR + 0x15000) |
@@ -150,7 +150,7 @@ static inline void mx27_setup_weimcs(size_t cs, | |||
150 | #define MX27_INT_SDHC3 9 | 150 | #define MX27_INT_SDHC3 9 |
151 | #define MX27_INT_SDHC2 10 | 151 | #define MX27_INT_SDHC2 10 |
152 | #define MX27_INT_SDHC1 11 | 152 | #define MX27_INT_SDHC1 11 |
153 | #define MX27_INT_I2C 12 | 153 | #define MX27_INT_I2C1 12 |
154 | #define MX27_INT_SSI2 13 | 154 | #define MX27_INT_SSI2 13 |
155 | #define MX27_INT_SSI1 14 | 155 | #define MX27_INT_SSI1 14 |
156 | #define MX27_INT_CSPI2 15 | 156 | #define MX27_INT_CSPI2 15 |
diff --git a/arch/arm/plat-mxc/include/mach/mx2_cam.h b/arch/arm/plat-mxc/include/mach/mx2_cam.h new file mode 100644 index 000000000000..3c080a32dbf5 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/mx2_cam.h | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | * mx2-cam.h - i.MX27/i.MX25 camera driver header file | ||
3 | * | ||
4 | * Copyright (C) 2003, Intel Corporation | ||
5 | * Copyright (C) 2008, Sascha Hauer <s.hauer@pengutronix.de> | ||
6 | * Copyright (C) 2010, Baruch Siach <baruch@tkos.co.il> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
21 | */ | ||
22 | |||
23 | #ifndef __MACH_MX2_CAM_H_ | ||
24 | #define __MACH_MX2_CAM_H_ | ||
25 | |||
26 | #define MX2_CAMERA_SWAP16 (1 << 0) | ||
27 | #define MX2_CAMERA_EXT_VSYNC (1 << 1) | ||
28 | #define MX2_CAMERA_CCIR (1 << 2) | ||
29 | #define MX2_CAMERA_CCIR_INTERLACE (1 << 3) | ||
30 | #define MX2_CAMERA_HSYNC_HIGH (1 << 4) | ||
31 | #define MX2_CAMERA_GATED_CLOCK (1 << 5) | ||
32 | #define MX2_CAMERA_INV_DATA (1 << 6) | ||
33 | #define MX2_CAMERA_PCLK_SAMPLE_RISING (1 << 7) | ||
34 | #define MX2_CAMERA_PACK_DIR_MSB (1 << 8) | ||
35 | |||
36 | /** | ||
37 | * struct mx2_camera_platform_data - optional platform data for mx2_camera | ||
38 | * @flags: any combination of MX2_CAMERA_* | ||
39 | * @clk: clock rate of the csi block / 2 | ||
40 | */ | ||
41 | struct mx2_camera_platform_data { | ||
42 | unsigned long flags; | ||
43 | unsigned long clk; | ||
44 | }; | ||
45 | |||
46 | #endif /* __MACH_MX2_CAM_H_ */ | ||
diff --git a/arch/arm/plat-mxc/include/mach/mx31.h b/arch/arm/plat-mxc/include/mach/mx31.h index fb90e119c2b5..afee3ab9d62e 100644 --- a/arch/arm/plat-mxc/include/mach/mx31.h +++ b/arch/arm/plat-mxc/include/mach/mx31.h | |||
@@ -23,7 +23,7 @@ | |||
23 | #define MX31_ETB_SLOT4_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x10000) | 23 | #define MX31_ETB_SLOT4_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x10000) |
24 | #define MX31_ETB_SLOT5_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x14000) | 24 | #define MX31_ETB_SLOT5_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x14000) |
25 | #define MX31_ECT_CTIO_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x18000) | 25 | #define MX31_ECT_CTIO_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x18000) |
26 | #define MX31_I2C_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x80000) | 26 | #define MX31_I2C1_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x80000) |
27 | #define MX31_I2C3_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x84000) | 27 | #define MX31_I2C3_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x84000) |
28 | #define MX31_OTG_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x88000) | 28 | #define MX31_OTG_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x88000) |
29 | #define MX31_ATA_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x8c000) | 29 | #define MX31_ATA_BASE_ADDR (MX31_AIPS1_BASE_ADDR + 0x8c000) |
@@ -145,7 +145,7 @@ static inline void mx31_setup_weimcs(size_t cs, | |||
145 | #define MX31_INT_FIRI 7 | 145 | #define MX31_INT_FIRI 7 |
146 | #define MX31_INT_MMC_SDHC2 8 | 146 | #define MX31_INT_MMC_SDHC2 8 |
147 | #define MX31_INT_MMC_SDHC1 9 | 147 | #define MX31_INT_MMC_SDHC1 9 |
148 | #define MX31_INT_I2C 10 | 148 | #define MX31_INT_I2C1 10 |
149 | #define MX31_INT_SSI2 11 | 149 | #define MX31_INT_SSI2 11 |
150 | #define MX31_INT_SSI1 12 | 150 | #define MX31_INT_SSI1 12 |
151 | #define MX31_INT_CSPI2 13 | 151 | #define MX31_INT_CSPI2 13 |
diff --git a/arch/arm/plat-mxc/include/mach/mx35.h b/arch/arm/plat-mxc/include/mach/mx35.h index 526a55842ae5..af3038c12e39 100644 --- a/arch/arm/plat-mxc/include/mach/mx35.h +++ b/arch/arm/plat-mxc/include/mach/mx35.h | |||
@@ -18,7 +18,7 @@ | |||
18 | #define MX35_ETB_SLOT4_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x10000) | 18 | #define MX35_ETB_SLOT4_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x10000) |
19 | #define MX35_ETB_SLOT5_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x14000) | 19 | #define MX35_ETB_SLOT5_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x14000) |
20 | #define MX35_ECT_CTIO_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x18000) | 20 | #define MX35_ECT_CTIO_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x18000) |
21 | #define MX35_I2C_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x80000) | 21 | #define MX35_I2C1_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x80000) |
22 | #define MX35_I2C3_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x84000) | 22 | #define MX35_I2C3_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x84000) |
23 | #define MX35_UART1_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x90000) | 23 | #define MX35_UART1_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x90000) |
24 | #define MX35_UART2_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x94000) | 24 | #define MX35_UART2_BASE_ADDR (MX35_AIPS1_BASE_ADDR + 0x94000) |
@@ -60,6 +60,8 @@ | |||
60 | #define MX35_RTC_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xd8000) | 60 | #define MX35_RTC_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xd8000) |
61 | #define MX35_WDOG_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xdc000) | 61 | #define MX35_WDOG_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xdc000) |
62 | #define MX35_PWM_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xe0000) | 62 | #define MX35_PWM_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xe0000) |
63 | #define MX35_CAN1_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xe4000) | ||
64 | #define MX35_CAN2_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xe8000) | ||
63 | #define MX35_RTIC_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xec000) | 65 | #define MX35_RTIC_BASE_ADDR (MX35_AIPS2_BASE_ADDR + 0xec000) |
64 | #define MX35_OTG_BASE_ADDR 0x53ff4000 | 66 | #define MX35_OTG_BASE_ADDR 0x53ff4000 |
65 | 67 | ||
@@ -123,7 +125,7 @@ | |||
123 | #define MX35_INT_MMC_SDHC1 7 | 125 | #define MX35_INT_MMC_SDHC1 7 |
124 | #define MX35_INT_MMC_SDHC2 8 | 126 | #define MX35_INT_MMC_SDHC2 8 |
125 | #define MX35_INT_MMC_SDHC3 9 | 127 | #define MX35_INT_MMC_SDHC3 9 |
126 | #define MX35_INT_I2C 10 | 128 | #define MX35_INT_I2C1 10 |
127 | #define MX35_INT_SSI1 11 | 129 | #define MX35_INT_SSI1 11 |
128 | #define MX35_INT_SSI2 12 | 130 | #define MX35_INT_SSI2 12 |
129 | #define MX35_INT_CSPI2 13 | 131 | #define MX35_INT_CSPI2 13 |
diff --git a/arch/arm/plat-mxc/include/mach/mx3_camera.h b/arch/arm/plat-mxc/include/mach/mx3_camera.h index 36d7ff27b5e2..f226ee3777e1 100644 --- a/arch/arm/plat-mxc/include/mach/mx3_camera.h +++ b/arch/arm/plat-mxc/include/mach/mx3_camera.h | |||
@@ -12,10 +12,6 @@ | |||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | * GNU General Public License for more details. | 14 | * GNU General Public License for more details. |
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | 15 | */ |
20 | 16 | ||
21 | #ifndef _MX3_CAMERA_H_ | 17 | #ifndef _MX3_CAMERA_H_ |
diff --git a/arch/arm/plat-mxc/include/mach/mxc91231.h b/arch/arm/plat-mxc/include/mach/mxc91231.h index 5182b986b785..0ca3101ebf36 100644 --- a/arch/arm/plat-mxc/include/mach/mxc91231.h +++ b/arch/arm/plat-mxc/include/mach/mxc91231.h | |||
@@ -13,10 +13,6 @@ | |||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | 16 | */ |
21 | #ifndef __MACH_MXC91231_H__ | 17 | #ifndef __MACH_MXC91231_H__ |
22 | #define __MACH_MXC91231_H__ | 18 | #define __MACH_MXC91231_H__ |
diff --git a/arch/arm/plat-mxc/include/mach/mxc_nand.h b/arch/arm/plat-mxc/include/mach/mxc_nand.h index 5d2d21d414e0..04c0d060d814 100644 --- a/arch/arm/plat-mxc/include/mach/mxc_nand.h +++ b/arch/arm/plat-mxc/include/mach/mxc_nand.h | |||
@@ -20,9 +20,13 @@ | |||
20 | #ifndef __ASM_ARCH_NAND_H | 20 | #ifndef __ASM_ARCH_NAND_H |
21 | #define __ASM_ARCH_NAND_H | 21 | #define __ASM_ARCH_NAND_H |
22 | 22 | ||
23 | #include <linux/mtd/partitions.h> | ||
24 | |||
23 | struct mxc_nand_platform_data { | 25 | struct mxc_nand_platform_data { |
24 | int width; /* data bus width in bytes */ | 26 | unsigned int width; /* data bus width in bytes */ |
25 | int hw_ecc:1; /* 0 if supress hardware ECC */ | 27 | unsigned int hw_ecc:1; /* 0 if supress hardware ECC */ |
26 | int flash_bbt:1; /* set to 1 to use a flash based bbt */ | 28 | unsigned int flash_bbt:1; /* set to 1 to use a flash based bbt */ |
29 | struct mtd_partition *parts; /* partition table */ | ||
30 | int nr_parts; /* size of parts */ | ||
27 | }; | 31 | }; |
28 | #endif /* __ASM_ARCH_NAND_H */ | 32 | #endif /* __ASM_ARCH_NAND_H */ |
diff --git a/arch/arm/plat-mxc/include/mach/system.h b/arch/arm/plat-mxc/include/mach/system.h index ef00199568de..4acd1143a9bd 100644 --- a/arch/arm/plat-mxc/include/mach/system.h +++ b/arch/arm/plat-mxc/include/mach/system.h | |||
@@ -12,10 +12,6 @@ | |||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | * GNU General Public License for more details. | 14 | * GNU General Public License for more details. |
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | 15 | */ |
20 | 16 | ||
21 | #ifndef __ASM_ARCH_MXC_SYSTEM_H__ | 17 | #ifndef __ASM_ARCH_MXC_SYSTEM_H__ |
diff --git a/arch/arm/plat-mxc/include/mach/timex.h b/arch/arm/plat-mxc/include/mach/timex.h index 024416ed11cd..2d9624697cc9 100644 --- a/arch/arm/plat-mxc/include/mach/timex.h +++ b/arch/arm/plat-mxc/include/mach/timex.h | |||
@@ -11,10 +11,6 @@ | |||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | 14 | */ |
19 | 15 | ||
20 | #ifndef __ASM_ARCH_MXC_TIMEX_H__ | 16 | #ifndef __ASM_ARCH_MXC_TIMEX_H__ |
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h index b6d3d0fddc48..d9bd37e4667a 100644 --- a/arch/arm/plat-mxc/include/mach/uncompress.h +++ b/arch/arm/plat-mxc/include/mach/uncompress.h | |||
@@ -13,10 +13,6 @@ | |||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | 16 | */ |
21 | #ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__ | 17 | #ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__ |
22 | #define __ASM_ARCH_MXC_UNCOMPRESS_H__ | 18 | #define __ASM_ARCH_MXC_UNCOMPRESS_H__ |
diff --git a/arch/arm/plat-mxc/include/mach/vmalloc.h b/arch/arm/plat-mxc/include/mach/vmalloc.h index 44243a278434..ef6379c474be 100644 --- a/arch/arm/plat-mxc/include/mach/vmalloc.h +++ b/arch/arm/plat-mxc/include/mach/vmalloc.h | |||
@@ -11,10 +11,6 @@ | |||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | 14 | */ |
19 | 15 | ||
20 | #ifndef __ASM_ARCH_MXC_VMALLOC_H__ | 16 | #ifndef __ASM_ARCH_MXC_VMALLOC_H__ |
diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c index 778ddfe57d89..7331f2ace5fe 100644 --- a/arch/arm/plat-mxc/irq.c +++ b/arch/arm/plat-mxc/irq.c | |||
@@ -142,9 +142,6 @@ void __init mxc_init_irq(void __iomem *irqbase) | |||
142 | for (i = 0; i < 8; i++) | 142 | for (i = 0; i < 8; i++) |
143 | __raw_writel(0, avic_base + AVIC_NIPRIORITY(i)); | 143 | __raw_writel(0, avic_base + AVIC_NIPRIORITY(i)); |
144 | 144 | ||
145 | /* init architectures chained interrupt handler */ | ||
146 | mxc_register_gpios(); | ||
147 | |||
148 | #ifdef CONFIG_FIQ | 145 | #ifdef CONFIG_FIQ |
149 | /* Initialize FIQ */ | 146 | /* Initialize FIQ */ |
150 | init_FIQ(); | 147 | init_FIQ(); |
diff --git a/arch/arm/plat-mxc/system.c b/arch/arm/plat-mxc/system.c index 97f42799fa58..925bce4607e7 100644 --- a/arch/arm/plat-mxc/system.c +++ b/arch/arm/plat-mxc/system.c | |||
@@ -14,10 +14,6 @@ | |||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | * GNU General Public License for more details. | 16 | * GNU General Public License for more details. |
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | 17 | */ |
22 | 18 | ||
23 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
diff --git a/arch/arm/plat-mxc/tzic.c b/arch/arm/plat-mxc/tzic.c index 9b86d2a60d43..b3da9aad4295 100644 --- a/arch/arm/plat-mxc/tzic.c +++ b/arch/arm/plat-mxc/tzic.c | |||
@@ -145,8 +145,6 @@ void __init tzic_init_irq(void __iomem *irqbase) | |||
145 | set_irq_handler(i, handle_level_irq); | 145 | set_irq_handler(i, handle_level_irq); |
146 | set_irq_flags(i, IRQF_VALID); | 146 | set_irq_flags(i, IRQF_VALID); |
147 | } | 147 | } |
148 | mxc_register_gpios(); | ||
149 | |||
150 | pr_info("TrustZone Interrupt Controller (TZIC) initialized\n"); | 148 | pr_info("TrustZone Interrupt Controller (TZIC) initialized\n"); |
151 | } | 149 | } |
152 | 150 | ||