aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile')
-rw-r--r--arch/arm/mach-shmobile/Kconfig84
-rw-r--r--arch/arm/mach-shmobile/Makefile22
-rw-r--r--arch/arm/mach-shmobile/Makefile.boot9
-rw-r--r--arch/arm/mach-shmobile/board-ap4evb.c301
-rw-r--r--arch/arm/mach-shmobile/board-g3evm.c211
-rw-r--r--arch/arm/mach-shmobile/board-g4evm.c211
-rw-r--r--arch/arm/mach-shmobile/clock-sh7367.c96
-rw-r--r--arch/arm/mach-shmobile/console.c31
-rw-r--r--arch/arm/mach-shmobile/include/mach/clkdev.h7
-rw-r--r--arch/arm/mach-shmobile/include/mach/common.h23
-rw-r--r--arch/arm/mach-shmobile/include/mach/dma.h1
-rw-r--r--arch/arm/mach-shmobile/include/mach/entry-macro.S39
-rw-r--r--arch/arm/mach-shmobile/include/mach/gpio.h48
-rw-r--r--arch/arm/mach-shmobile/include/mach/hardware.h7
-rw-r--r--arch/arm/mach-shmobile/include/mach/io.h9
-rw-r--r--arch/arm/mach-shmobile/include/mach/irqs.h10
-rw-r--r--arch/arm/mach-shmobile/include/mach/memory.h7
-rw-r--r--arch/arm/mach-shmobile/include/mach/sh7367.h332
-rw-r--r--arch/arm/mach-shmobile/include/mach/sh7372.h434
-rw-r--r--arch/arm/mach-shmobile/include/mach/sh7377.h360
-rw-r--r--arch/arm/mach-shmobile/include/mach/system.h14
-rw-r--r--arch/arm/mach-shmobile/include/mach/timex.h6
-rw-r--r--arch/arm/mach-shmobile/include/mach/uncompress.h21
-rw-r--r--arch/arm/mach-shmobile/include/mach/vmalloc.h6
-rw-r--r--arch/arm/mach-shmobile/intc-sh7367.c270
-rw-r--r--arch/arm/mach-shmobile/intc-sh7372.c369
-rw-r--r--arch/arm/mach-shmobile/intc-sh7377.c350
-rw-r--r--arch/arm/mach-shmobile/pfc-sh7367.c1801
-rw-r--r--arch/arm/mach-shmobile/pfc-sh7372.c1637
-rw-r--r--arch/arm/mach-shmobile/pfc-sh7377.c1767
-rw-r--r--arch/arm/mach-shmobile/setup-sh7367.c198
-rw-r--r--arch/arm/mach-shmobile/setup-sh7372.c199
-rw-r--r--arch/arm/mach-shmobile/setup-sh7377.c215
-rw-r--r--arch/arm/mach-shmobile/timer.c46
34 files changed, 9141 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
new file mode 100644
index 000000000000..aeceb9b92aeb
--- /dev/null
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -0,0 +1,84 @@
1if ARCH_SHMOBILE
2
3comment "SH-Mobile System Type"
4
5config ARCH_SH7367
6 bool "SH-Mobile G3 (SH7367)"
7 select CPU_V6
8 select HAVE_CLK
9 select COMMON_CLKDEV
10 select GENERIC_TIME
11 select GENERIC_CLOCKEVENTS
12
13config ARCH_SH7377
14 bool "SH-Mobile G4 (SH7377)"
15 select CPU_V7
16 select HAVE_CLK
17 select COMMON_CLKDEV
18 select GENERIC_TIME
19 select GENERIC_CLOCKEVENTS
20
21config ARCH_SH7372
22 bool "SH-Mobile AP4 (SH7372)"
23 select CPU_V7
24 select HAVE_CLK
25 select COMMON_CLKDEV
26 select GENERIC_TIME
27 select GENERIC_CLOCKEVENTS
28
29comment "SH-Mobile Board Type"
30
31config MACH_G3EVM
32 bool "G3EVM board"
33 depends on ARCH_SH7367
34 select ARCH_REQUIRE_GPIOLIB
35
36config MACH_G4EVM
37 bool "G4EVM board"
38 depends on ARCH_SH7377
39 select ARCH_REQUIRE_GPIOLIB
40
41config MACH_AP4EVB
42 bool "AP4EVB board"
43 depends on ARCH_SH7372
44 select ARCH_REQUIRE_GPIOLIB
45
46comment "SH-Mobile System Configuration"
47
48menu "Memory configuration"
49
50config MEMORY_START
51 hex "Physical memory start address"
52 default "0x50000000" if MACH_G3EVM
53 default "0x40000000" if MACH_G4EVM
54 default "0x40000000" if MACH_AP4EVB
55 default "0x00000000"
56 ---help---
57 Tweak this only when porting to a new machine which does not
58 already have a defconfig. Changing it from the known correct
59 value on any of the known systems will only lead to disaster.
60
61config MEMORY_SIZE
62 hex "Physical memory size"
63 default "0x08000000" if MACH_G3EVM
64 default "0x08000000" if MACH_G4EVM
65 default "0x10000000" if MACH_AP4EVB
66 default "0x04000000"
67 help
68 This sets the default memory size assumed by your kernel. It can
69 be overridden as normal by the 'mem=' argument on the kernel command
70 line.
71
72endmenu
73
74menu "Timer and clock configuration"
75
76config SH_TIMER_CMT
77 bool "CMT timer driver"
78 default y
79 help
80 This enables build of the CMT timer driver.
81
82endmenu
83
84endif
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
new file mode 100644
index 000000000000..6d385d371c33
--- /dev/null
+++ b/arch/arm/mach-shmobile/Makefile
@@ -0,0 +1,22 @@
1#
2# Makefile for the linux kernel.
3#
4
5# Common objects
6obj-y := timer.o console.o
7
8# CPU objects
9obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o
10obj-$(CONFIG_ARCH_SH7377) += setup-sh7377.o clock-sh7367.o intc-sh7377.o
11obj-$(CONFIG_ARCH_SH7372) += setup-sh7372.o clock-sh7367.o intc-sh7372.o
12
13# Pinmux setup
14pfc-$(CONFIG_ARCH_SH7367) := pfc-sh7367.o
15pfc-$(CONFIG_ARCH_SH7377) := pfc-sh7377.o
16pfc-$(CONFIG_ARCH_SH7372) := pfc-sh7372.o
17obj-$(CONFIG_GENERIC_GPIO) += $(pfc-y)
18
19# Board objects
20obj-$(CONFIG_MACH_G3EVM) += board-g3evm.o
21obj-$(CONFIG_MACH_G4EVM) += board-g4evm.o
22obj-$(CONFIG_MACH_AP4EVB) += board-ap4evb.o
diff --git a/arch/arm/mach-shmobile/Makefile.boot b/arch/arm/mach-shmobile/Makefile.boot
new file mode 100644
index 000000000000..1c08ee9de86a
--- /dev/null
+++ b/arch/arm/mach-shmobile/Makefile.boot
@@ -0,0 +1,9 @@
1__ZRELADDR := $(shell /bin/bash -c 'printf "0x%08x" \
2 $$[$(CONFIG_MEMORY_START) + 0x8000]')
3
4 zreladdr-y := $(__ZRELADDR)
5
6# Unsupported legacy stuff
7#
8#params_phys-y (Instead: Pass atags pointer in r2)
9#initrd_phys-y (Instead: Use compiled-in initramfs)
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
new file mode 100644
index 000000000000..a0463d926447
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -0,0 +1,301 @@
1/*
2 * AP4EVB board support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/mtd/mtd.h>
27#include <linux/mtd/partitions.h>
28#include <linux/mtd/physmap.h>
29#include <linux/io.h>
30#include <linux/smsc911x.h>
31#include <linux/gpio.h>
32#include <linux/input.h>
33#include <linux/input/sh_keysc.h>
34#include <mach/common.h>
35#include <mach/sh7372.h>
36#include <asm/mach-types.h>
37#include <asm/mach/arch.h>
38#include <asm/mach/map.h>
39
40/*
41 * Address Interface BusWidth note
42 * ------------------------------------------------------------------
43 * 0x0000_0000 NOR Flash ROM (MCP) 16bit SW7 : bit1 = ON
44 * 0x0800_0000 user area -
45 * 0x1000_0000 NOR Flash ROM (MCP) 16bit SW7 : bit1 = OFF
46 * 0x1400_0000 Ether (LAN9220) 16bit
47 * 0x1600_0000 user area - cannot use with NAND
48 * 0x1800_0000 user area -
49 * 0x1A00_0000 -
50 * 0x4000_0000 LPDDR2-SDRAM (POP) 32bit
51 */
52
53/*
54 * NOR Flash ROM
55 *
56 * SW1 | SW2 | SW7 | NOR Flash ROM
57 * bit1 | bit1 bit2 | bit1 | Memory allocation
58 * ------+------------+------+------------------
59 * OFF | ON OFF | ON | Area 0
60 * OFF | ON OFF | OFF | Area 4
61 */
62
63/*
64 * NAND Flash ROM
65 *
66 * SW1 | SW2 | SW7 | NAND Flash ROM
67 * bit1 | bit1 bit2 | bit2 | Memory allocation
68 * ------+------------+------+------------------
69 * OFF | ON OFF | ON | FCE 0
70 * OFF | ON OFF | OFF | FCE 1
71 */
72
73/*
74 * SMSC 9220
75 *
76 * SW1 SMSC 9220
77 * -----------------------
78 * ON access disable
79 * OFF access enable
80 */
81
82/*
83 * KEYSC
84 *
85 * SW43 KEYSC
86 * -------------------------
87 * ON enable
88 * OFF disable
89 */
90
91/* MTD */
92static struct mtd_partition nor_flash_partitions[] = {
93 {
94 .name = "loader",
95 .offset = 0x00000000,
96 .size = 512 * 1024,
97 },
98 {
99 .name = "bootenv",
100 .offset = MTDPART_OFS_APPEND,
101 .size = 512 * 1024,
102 },
103 {
104 .name = "kernel_ro",
105 .offset = MTDPART_OFS_APPEND,
106 .size = 8 * 1024 * 1024,
107 .mask_flags = MTD_WRITEABLE,
108 },
109 {
110 .name = "kernel",
111 .offset = MTDPART_OFS_APPEND,
112 .size = 8 * 1024 * 1024,
113 },
114 {
115 .name = "data",
116 .offset = MTDPART_OFS_APPEND,
117 .size = MTDPART_SIZ_FULL,
118 },
119};
120
121static struct physmap_flash_data nor_flash_data = {
122 .width = 2,
123 .parts = nor_flash_partitions,
124 .nr_parts = ARRAY_SIZE(nor_flash_partitions),
125};
126
127static struct resource nor_flash_resources[] = {
128 [0] = {
129 .start = 0x00000000,
130 .end = 0x08000000 - 1,
131 .flags = IORESOURCE_MEM,
132 }
133};
134
135static struct platform_device nor_flash_device = {
136 .name = "physmap-flash",
137 .dev = {
138 .platform_data = &nor_flash_data,
139 },
140 .num_resources = ARRAY_SIZE(nor_flash_resources),
141 .resource = nor_flash_resources,
142};
143
144/* SMSC 9220 */
145static struct resource smc911x_resources[] = {
146 {
147 .start = 0x14000000,
148 .end = 0x16000000 - 1,
149 .flags = IORESOURCE_MEM,
150 }, {
151 .start = 6,
152 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
153 },
154};
155
156static struct smsc911x_platform_config smsc911x_info = {
157 .flags = SMSC911X_USE_16BIT | SMSC911X_SAVE_MAC_ADDRESS,
158 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
159 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
160};
161
162static struct platform_device smc911x_device = {
163 .name = "smsc911x",
164 .id = -1,
165 .num_resources = ARRAY_SIZE(smc911x_resources),
166 .resource = smc911x_resources,
167 .dev = {
168 .platform_data = &smsc911x_info,
169 },
170};
171
172/* KEYSC (Needs SW43 set to ON) */
173static struct sh_keysc_info keysc_info = {
174 .mode = SH_KEYSC_MODE_1,
175 .scan_timing = 3,
176 .delay = 2500,
177 .keycodes = {
178 KEY_0, KEY_1, KEY_2, KEY_3, KEY_4,
179 KEY_5, KEY_6, KEY_7, KEY_8, KEY_9,
180 KEY_A, KEY_B, KEY_C, KEY_D, KEY_E,
181 KEY_F, KEY_G, KEY_H, KEY_I, KEY_J,
182 KEY_K, KEY_L, KEY_M, KEY_N, KEY_O,
183 },
184};
185
186static struct resource keysc_resources[] = {
187 [0] = {
188 .name = "KEYSC",
189 .start = 0xe61b0000,
190 .end = 0xe61b0063,
191 .flags = IORESOURCE_MEM,
192 },
193 [1] = {
194 .start = 79,
195 .flags = IORESOURCE_IRQ,
196 },
197};
198
199static struct platform_device keysc_device = {
200 .name = "sh_keysc",
201 .id = 0, /* "keysc0" clock */
202 .num_resources = ARRAY_SIZE(keysc_resources),
203 .resource = keysc_resources,
204 .dev = {
205 .platform_data = &keysc_info,
206 },
207};
208
209static struct platform_device *ap4evb_devices[] __initdata = {
210 &nor_flash_device,
211 &smc911x_device,
212 &keysc_device,
213};
214
215static struct map_desc ap4evb_io_desc[] __initdata = {
216 /* create a 1:1 entity map for 0xe6xxxxxx
217 * used by CPGA, INTC and PFC.
218 */
219 {
220 .virtual = 0xe6000000,
221 .pfn = __phys_to_pfn(0xe6000000),
222 .length = 256 << 20,
223 .type = MT_DEVICE_NONSHARED
224 },
225};
226
227static void __init ap4evb_map_io(void)
228{
229 iotable_init(ap4evb_io_desc, ARRAY_SIZE(ap4evb_io_desc));
230
231 /* setup early devices, clocks and console here as well */
232 sh7372_add_early_devices();
233 sh7367_clock_init(); /* use g3 clocks for now */
234 shmobile_setup_console();
235}
236
237static void __init ap4evb_init(void)
238{
239 sh7372_pinmux_init();
240
241 /* enable SCIFA0 */
242 gpio_request(GPIO_FN_SCIFA0_TXD, NULL);
243 gpio_request(GPIO_FN_SCIFA0_RXD, NULL);
244
245 /* enable SMSC911X */
246 gpio_request(GPIO_FN_CS5A, NULL);
247 gpio_request(GPIO_FN_IRQ6_39, NULL);
248
249 /* enable LED 1 - 4 */
250 gpio_request(GPIO_PORT185, NULL);
251 gpio_request(GPIO_PORT186, NULL);
252 gpio_request(GPIO_PORT187, NULL);
253 gpio_request(GPIO_PORT188, NULL);
254 gpio_direction_output(GPIO_PORT185, 1);
255 gpio_direction_output(GPIO_PORT186, 1);
256 gpio_direction_output(GPIO_PORT187, 1);
257 gpio_direction_output(GPIO_PORT188, 1);
258 gpio_export(GPIO_PORT185, 0);
259 gpio_export(GPIO_PORT186, 0);
260 gpio_export(GPIO_PORT187, 0);
261 gpio_export(GPIO_PORT188, 0);
262
263 /* enable Debug switch (S6) */
264 gpio_request(GPIO_PORT32, NULL);
265 gpio_request(GPIO_PORT33, NULL);
266 gpio_request(GPIO_PORT34, NULL);
267 gpio_request(GPIO_PORT35, NULL);
268 gpio_direction_input(GPIO_PORT32);
269 gpio_direction_input(GPIO_PORT33);
270 gpio_direction_input(GPIO_PORT34);
271 gpio_direction_input(GPIO_PORT35);
272 gpio_export(GPIO_PORT32, 0);
273 gpio_export(GPIO_PORT33, 0);
274 gpio_export(GPIO_PORT34, 0);
275 gpio_export(GPIO_PORT35, 0);
276
277 /* enable KEYSC */
278 gpio_request(GPIO_FN_KEYOUT0, NULL);
279 gpio_request(GPIO_FN_KEYOUT1, NULL);
280 gpio_request(GPIO_FN_KEYOUT2, NULL);
281 gpio_request(GPIO_FN_KEYOUT3, NULL);
282 gpio_request(GPIO_FN_KEYOUT4, NULL);
283 gpio_request(GPIO_FN_KEYIN0_136, NULL);
284 gpio_request(GPIO_FN_KEYIN1_135, NULL);
285 gpio_request(GPIO_FN_KEYIN2_134, NULL);
286 gpio_request(GPIO_FN_KEYIN3_133, NULL);
287 gpio_request(GPIO_FN_KEYIN4, NULL);
288
289 sh7372_add_standard_devices();
290
291 platform_add_devices(ap4evb_devices, ARRAY_SIZE(ap4evb_devices));
292}
293
294MACHINE_START(AP4EVB, "ap4evb")
295 .phys_io = 0xe6000000,
296 .io_pg_offst = ((0xe6000000) >> 18) & 0xfffc,
297 .map_io = ap4evb_map_io,
298 .init_irq = sh7372_init_irq,
299 .init_machine = ap4evb_init,
300 .timer = &shmobile_timer,
301MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-g3evm.c b/arch/arm/mach-shmobile/board-g3evm.c
new file mode 100644
index 000000000000..f36c9a94d326
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-g3evm.c
@@ -0,0 +1,211 @@
1/*
2 * G3EVM board support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/mtd/mtd.h>
27#include <linux/mtd/partitions.h>
28#include <linux/mtd/physmap.h>
29#include <linux/usb/r8a66597.h>
30#include <linux/io.h>
31#include <linux/gpio.h>
32#include <mach/sh7367.h>
33#include <mach/common.h>
34#include <asm/mach-types.h>
35#include <asm/mach/arch.h>
36#include <asm/mach/map.h>
37
38static struct mtd_partition nor_flash_partitions[] = {
39 {
40 .name = "loader",
41 .offset = 0x00000000,
42 .size = 512 * 1024,
43 },
44 {
45 .name = "bootenv",
46 .offset = MTDPART_OFS_APPEND,
47 .size = 512 * 1024,
48 },
49 {
50 .name = "kernel_ro",
51 .offset = MTDPART_OFS_APPEND,
52 .size = 8 * 1024 * 1024,
53 .mask_flags = MTD_WRITEABLE,
54 },
55 {
56 .name = "kernel",
57 .offset = MTDPART_OFS_APPEND,
58 .size = 8 * 1024 * 1024,
59 },
60 {
61 .name = "data",
62 .offset = MTDPART_OFS_APPEND,
63 .size = MTDPART_SIZ_FULL,
64 },
65};
66
67static struct physmap_flash_data nor_flash_data = {
68 .width = 2,
69 .parts = nor_flash_partitions,
70 .nr_parts = ARRAY_SIZE(nor_flash_partitions),
71};
72
73static struct resource nor_flash_resources[] = {
74 [0] = {
75 .start = 0x00000000,
76 .end = 0x08000000 - 1,
77 .flags = IORESOURCE_MEM,
78 }
79};
80
81static struct platform_device nor_flash_device = {
82 .name = "physmap-flash",
83 .dev = {
84 .platform_data = &nor_flash_data,
85 },
86 .num_resources = ARRAY_SIZE(nor_flash_resources),
87 .resource = nor_flash_resources,
88};
89
90/* USBHS */
91void usb_host_port_power(int port, int power)
92{
93 if (!power) /* only power-on supported for now */
94 return;
95
96 /* set VBOUT/PWEN and EXTLP0 in DVSTCTR */
97 __raw_writew(__raw_readw(0xe6890008) | 0x600, 0xe6890008);
98}
99
100static struct r8a66597_platdata usb_host_data = {
101 .on_chip = 1,
102 .port_power = usb_host_port_power,
103};
104
105static struct resource usb_host_resources[] = {
106 [0] = {
107 .name = "USBHS",
108 .start = 0xe6890000,
109 .end = 0xe68900e5,
110 .flags = IORESOURCE_MEM,
111 },
112 [1] = {
113 .start = 65,
114 .flags = IORESOURCE_IRQ,
115 },
116};
117
118static struct platform_device usb_host_device = {
119 .name = "r8a66597_hcd",
120 .id = 0,
121 .dev = {
122 .platform_data = &usb_host_data,
123 .dma_mask = NULL,
124 .coherent_dma_mask = 0xffffffff,
125 },
126 .num_resources = ARRAY_SIZE(usb_host_resources),
127 .resource = usb_host_resources,
128};
129
130static struct platform_device *g3evm_devices[] __initdata = {
131 &nor_flash_device,
132 &usb_host_device,
133};
134
135static struct map_desc g3evm_io_desc[] __initdata = {
136 /* create a 1:1 entity map for 0xe6xxxxxx
137 * used by CPGA, INTC and PFC.
138 */
139 {
140 .virtual = 0xe6000000,
141 .pfn = __phys_to_pfn(0xe6000000),
142 .length = 256 << 20,
143 .type = MT_DEVICE_NONSHARED
144 },
145};
146
147static void __init g3evm_map_io(void)
148{
149 iotable_init(g3evm_io_desc, ARRAY_SIZE(g3evm_io_desc));
150
151 /* setup early devices, clocks and console here as well */
152 sh7367_add_early_devices();
153 sh7367_clock_init();
154 shmobile_setup_console();
155}
156
157static void __init g3evm_init(void)
158{
159 sh7367_pinmux_init();
160
161 /* Lit DS4 LED */
162 gpio_request(GPIO_PORT22, NULL);
163 gpio_direction_output(GPIO_PORT22, 1);
164 gpio_export(GPIO_PORT22, 0);
165
166 /* Lit DS8 LED */
167 gpio_request(GPIO_PORT23, NULL);
168 gpio_direction_output(GPIO_PORT23, 1);
169 gpio_export(GPIO_PORT23, 0);
170
171 /* Lit DS3 LED */
172 gpio_request(GPIO_PORT24, NULL);
173 gpio_direction_output(GPIO_PORT24, 1);
174 gpio_export(GPIO_PORT24, 0);
175
176 /* SCIFA1 */
177 gpio_request(GPIO_FN_SCIFA1_TXD, NULL);
178 gpio_request(GPIO_FN_SCIFA1_RXD, NULL);
179 gpio_request(GPIO_FN_SCIFA1_CTS, NULL);
180 gpio_request(GPIO_FN_SCIFA1_RTS, NULL);
181
182 /* USBHS */
183 gpio_request(GPIO_FN_VBUS0, NULL);
184 gpio_request(GPIO_FN_PWEN, NULL);
185 gpio_request(GPIO_FN_OVCN, NULL);
186 gpio_request(GPIO_FN_OVCN2, NULL);
187 gpio_request(GPIO_FN_EXTLP, NULL);
188 gpio_request(GPIO_FN_IDIN, NULL);
189
190 /* enable clock in SYMSTPCR2 */
191 __raw_writel(__raw_readl(0xe6158048) & ~(1 << 22), 0xe6158048);
192
193 /* setup USB phy */
194 __raw_writew(0x0300, 0xe605810a); /* USBCR1 */
195 __raw_writew(0x00e0, 0xe60581c0); /* CPFCH */
196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */
197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */
198
199 sh7367_add_standard_devices();
200
201 platform_add_devices(g3evm_devices, ARRAY_SIZE(g3evm_devices));
202}
203
204MACHINE_START(G3EVM, "g3evm")
205 .phys_io = 0xe6000000,
206 .io_pg_offst = ((0xe6000000) >> 18) & 0xfffc,
207 .map_io = g3evm_map_io,
208 .init_irq = sh7367_init_irq,
209 .init_machine = g3evm_init,
210 .timer = &shmobile_timer,
211MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-g4evm.c b/arch/arm/mach-shmobile/board-g4evm.c
new file mode 100644
index 000000000000..5acd623f93e7
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-g4evm.c
@@ -0,0 +1,211 @@
1/*
2 * G4EVM board support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/mtd/mtd.h>
27#include <linux/mtd/partitions.h>
28#include <linux/mtd/physmap.h>
29#include <linux/usb/r8a66597.h>
30#include <linux/io.h>
31#include <linux/gpio.h>
32#include <mach/sh7377.h>
33#include <mach/common.h>
34#include <asm/mach-types.h>
35#include <asm/mach/arch.h>
36#include <asm/mach/map.h>
37
38static struct mtd_partition nor_flash_partitions[] = {
39 {
40 .name = "loader",
41 .offset = 0x00000000,
42 .size = 512 * 1024,
43 },
44 {
45 .name = "bootenv",
46 .offset = MTDPART_OFS_APPEND,
47 .size = 512 * 1024,
48 },
49 {
50 .name = "kernel_ro",
51 .offset = MTDPART_OFS_APPEND,
52 .size = 8 * 1024 * 1024,
53 .mask_flags = MTD_WRITEABLE,
54 },
55 {
56 .name = "kernel",
57 .offset = MTDPART_OFS_APPEND,
58 .size = 8 * 1024 * 1024,
59 },
60 {
61 .name = "data",
62 .offset = MTDPART_OFS_APPEND,
63 .size = MTDPART_SIZ_FULL,
64 },
65};
66
67static struct physmap_flash_data nor_flash_data = {
68 .width = 2,
69 .parts = nor_flash_partitions,
70 .nr_parts = ARRAY_SIZE(nor_flash_partitions),
71};
72
73static struct resource nor_flash_resources[] = {
74 [0] = {
75 .start = 0x00000000,
76 .end = 0x08000000 - 1,
77 .flags = IORESOURCE_MEM,
78 }
79};
80
81static struct platform_device nor_flash_device = {
82 .name = "physmap-flash",
83 .dev = {
84 .platform_data = &nor_flash_data,
85 },
86 .num_resources = ARRAY_SIZE(nor_flash_resources),
87 .resource = nor_flash_resources,
88};
89
90/* USBHS */
91void usb_host_port_power(int port, int power)
92{
93 if (!power) /* only power-on supported for now */
94 return;
95
96 /* set VBOUT/PWEN and EXTLP0 in DVSTCTR */
97 __raw_writew(__raw_readw(0xe6890008) | 0x600, 0xe6890008);
98}
99
100static struct r8a66597_platdata usb_host_data = {
101 .on_chip = 1,
102 .port_power = usb_host_port_power,
103};
104
105static struct resource usb_host_resources[] = {
106 [0] = {
107 .name = "USBHS",
108 .start = 0xe6890000,
109 .end = 0xe68900e5,
110 .flags = IORESOURCE_MEM,
111 },
112 [1] = {
113 .start = 65,
114 .end = 65,
115 .flags = IORESOURCE_IRQ,
116 },
117};
118
119static struct platform_device usb_host_device = {
120 .name = "r8a66597_hcd",
121 .id = 0,
122 .dev = {
123 .platform_data = &usb_host_data,
124 .dma_mask = NULL,
125 .coherent_dma_mask = 0xffffffff,
126 },
127 .num_resources = ARRAY_SIZE(usb_host_resources),
128 .resource = usb_host_resources,
129};
130
131static struct platform_device *g4evm_devices[] __initdata = {
132 &nor_flash_device,
133 &usb_host_device,
134};
135
136static struct map_desc g4evm_io_desc[] __initdata = {
137 /* create a 1:1 entity map for 0xe6xxxxxx
138 * used by CPGA, INTC and PFC.
139 */
140 {
141 .virtual = 0xe6000000,
142 .pfn = __phys_to_pfn(0xe6000000),
143 .length = 256 << 20,
144 .type = MT_DEVICE_NONSHARED
145 },
146};
147
148static void __init g4evm_map_io(void)
149{
150 iotable_init(g4evm_io_desc, ARRAY_SIZE(g4evm_io_desc));
151
152 /* setup early devices, clocks and console here as well */
153 sh7377_add_early_devices();
154 sh7367_clock_init(); /* use g3 clocks for now */
155 shmobile_setup_console();
156}
157
158static void __init g4evm_init(void)
159{
160 sh7377_pinmux_init();
161
162 /* Lit DS14 LED */
163 gpio_request(GPIO_PORT109, NULL);
164 gpio_direction_output(GPIO_PORT109, 1);
165 gpio_export(GPIO_PORT109, 1);
166
167 /* Lit DS15 LED */
168 gpio_request(GPIO_PORT110, NULL);
169 gpio_direction_output(GPIO_PORT110, 1);
170 gpio_export(GPIO_PORT110, 1);
171
172 /* Lit DS16 LED */
173 gpio_request(GPIO_PORT112, NULL);
174 gpio_direction_output(GPIO_PORT112, 1);
175 gpio_export(GPIO_PORT112, 1);
176
177 /* Lit DS17 LED */
178 gpio_request(GPIO_PORT113, NULL);
179 gpio_direction_output(GPIO_PORT113, 1);
180 gpio_export(GPIO_PORT113, 1);
181
182 /* USBHS */
183 gpio_request(GPIO_FN_VBUS_0, NULL);
184 gpio_request(GPIO_FN_PWEN, NULL);
185 gpio_request(GPIO_FN_OVCN, NULL);
186 gpio_request(GPIO_FN_OVCN2, NULL);
187 gpio_request(GPIO_FN_EXTLP, NULL);
188 gpio_request(GPIO_FN_IDIN, NULL);
189
190 /* enable clock in SMSTPCR3 */
191 __raw_writel(__raw_readl(0xe615013c) & ~(1 << 22), 0xe615013c);
192
193 /* setup USB phy */
194 __raw_writew(0x0200, 0xe605810a); /* USBCR1 */
195 __raw_writew(0x00e0, 0xe60581c0); /* CPFCH */
196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */
197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */
198
199 sh7377_add_standard_devices();
200
201 platform_add_devices(g4evm_devices, ARRAY_SIZE(g4evm_devices));
202}
203
204MACHINE_START(G4EVM, "g4evm")
205 .phys_io = 0xe6000000,
206 .io_pg_offst = ((0xe6000000) >> 18) & 0xfffc,
207 .map_io = g4evm_map_io,
208 .init_irq = sh7377_init_irq,
209 .init_machine = g4evm_init,
210 .timer = &shmobile_timer,
211MACHINE_END
diff --git a/arch/arm/mach-shmobile/clock-sh7367.c b/arch/arm/mach-shmobile/clock-sh7367.c
new file mode 100644
index 000000000000..58bd54e1113a
--- /dev/null
+++ b/arch/arm/mach-shmobile/clock-sh7367.c
@@ -0,0 +1,96 @@
1/*
2 * Preliminary clock framework support for sh7367
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/init.h>
20#include <linux/module.h>
21#include <linux/kernel.h>
22#include <linux/list.h>
23#include <linux/clk.h>
24
25struct clk {
26 const char *name;
27 unsigned long rate;
28};
29
30#include <asm/clkdev.h>
31
32int __clk_get(struct clk *clk)
33{
34 return 1;
35}
36EXPORT_SYMBOL(__clk_get);
37
38void __clk_put(struct clk *clk)
39{
40}
41EXPORT_SYMBOL(__clk_put);
42
43
44int clk_enable(struct clk *clk)
45{
46 return 0;
47}
48EXPORT_SYMBOL(clk_enable);
49
50void clk_disable(struct clk *clk)
51{
52}
53EXPORT_SYMBOL(clk_disable);
54
55unsigned long clk_get_rate(struct clk *clk)
56{
57 return clk ? clk->rate : 0;
58}
59EXPORT_SYMBOL(clk_get_rate);
60
61/* a static peripheral clock for now - enough to get sh-sci working */
62static struct clk peripheral_clk = {
63 .name = "peripheral_clk",
64 .rate = 48000000,
65};
66
67/* a static rclk for now - enough to get sh_cmt working */
68static struct clk r_clk = {
69 .name = "r_clk",
70 .rate = 32768,
71};
72
73/* a static usb0 for now - enough to get r8a66597 working */
74static struct clk usb0_clk = {
75 .name = "usb0",
76};
77
78static struct clk_lookup lookups[] = {
79 {
80 .clk = &peripheral_clk,
81 }, {
82 .clk = &r_clk,
83 }, {
84 .clk = &usb0_clk,
85 }
86};
87
88void __init sh7367_clock_init(void)
89{
90 int i;
91
92 for (i = 0; i < ARRAY_SIZE(lookups); i++) {
93 lookups[i].con_id = lookups[i].clk->name;
94 clkdev_add(&lookups[i]);
95 }
96}
diff --git a/arch/arm/mach-shmobile/console.c b/arch/arm/mach-shmobile/console.c
new file mode 100644
index 000000000000..9411a5bf4fd6
--- /dev/null
+++ b/arch/arm/mach-shmobile/console.c
@@ -0,0 +1,31 @@
1/*
2 * SH-Mobile Console
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/platform_device.h>
22#include <mach/common.h>
23#include <asm/mach/map.h>
24
25void __init shmobile_setup_console(void)
26{
27 parse_early_param();
28
29 /* Let earlyprintk output early console messages */
30 early_platform_driver_probe("earlyprintk", 1, 1);
31}
diff --git a/arch/arm/mach-shmobile/include/mach/clkdev.h b/arch/arm/mach-shmobile/include/mach/clkdev.h
new file mode 100644
index 000000000000..36d0163a857a
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/clkdev.h
@@ -0,0 +1,7 @@
1#ifndef __ASM_MACH_CLKDEV_H
2#define __ASM_MACH_CLKDEV_H
3
4int __clk_get(struct clk *clk);
5void __clk_put(struct clk *clk);
6
7#endif /* __ASM_MACH_CLKDEV_H */
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h
new file mode 100644
index 000000000000..57903605cc51
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/common.h
@@ -0,0 +1,23 @@
1#ifndef __ARCH_MACH_COMMON_H
2#define __ARCH_MACH_COMMON_H
3
4extern struct sys_timer shmobile_timer;
5extern void shmobile_setup_console(void);
6
7extern void sh7367_init_irq(void);
8extern void sh7367_add_early_devices(void);
9extern void sh7367_add_standard_devices(void);
10extern void sh7367_clock_init(void);
11extern void sh7367_pinmux_init(void);
12
13extern void sh7377_init_irq(void);
14extern void sh7377_add_early_devices(void);
15extern void sh7377_add_standard_devices(void);
16extern void sh7377_pinmux_init(void);
17
18extern void sh7372_init_irq(void);
19extern void sh7372_add_early_devices(void);
20extern void sh7372_add_standard_devices(void);
21extern void sh7372_pinmux_init(void);
22
23#endif /* __ARCH_MACH_COMMON_H */
diff --git a/arch/arm/mach-shmobile/include/mach/dma.h b/arch/arm/mach-shmobile/include/mach/dma.h
new file mode 100644
index 000000000000..40a8c178f10d
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/dma.h
@@ -0,0 +1 @@
/* empty */
diff --git a/arch/arm/mach-shmobile/include/mach/entry-macro.S b/arch/arm/mach-shmobile/include/mach/entry-macro.S
new file mode 100644
index 000000000000..a285d13c7416
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/entry-macro.S
@@ -0,0 +1,39 @@
1/*
2 * Copyright (C) 2008 Renesas Solutions Corp.
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; version 2 of the License.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17#include <mach/hardware.h>
18#include <mach/irqs.h>
19
20 .macro disable_fiq
21 .endm
22
23 .macro get_irqnr_preamble, base, tmp
24 ldr \base, =INTFLGA
25 .endm
26
27 .macro arch_ret_to_user, tmp1, tmp2
28 .endm
29
30 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
31 ldr \irqnr, [\base]
32 cmp \irqnr, #0
33 beq 1000f
34 /* intevt to irq number */
35 lsr \irqnr, \irqnr, #0x5
36 subs \irqnr, \irqnr, #16
37
381000:
39 .endm
diff --git a/arch/arm/mach-shmobile/include/mach/gpio.h b/arch/arm/mach-shmobile/include/mach/gpio.h
new file mode 100644
index 000000000000..5bc6bd444d72
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/gpio.h
@@ -0,0 +1,48 @@
1/*
2 * Generic GPIO API and pinmux table support
3 *
4 * Copyright (c) 2008 Magnus Damm
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#ifndef __ASM_ARCH_GPIO_H
11#define __ASM_ARCH_GPIO_H
12
13#include <linux/kernel.h>
14#include <linux/errno.h>
15
16#define ARCH_NR_GPIOS 1024
17#include <linux/sh_pfc.h>
18
19#ifdef CONFIG_GPIOLIB
20
21static inline int gpio_get_value(unsigned gpio)
22{
23 return __gpio_get_value(gpio);
24}
25
26static inline void gpio_set_value(unsigned gpio, int value)
27{
28 __gpio_set_value(gpio, value);
29}
30
31static inline int gpio_cansleep(unsigned gpio)
32{
33 return __gpio_cansleep(gpio);
34}
35
36static inline int gpio_to_irq(unsigned gpio)
37{
38 return -ENOSYS;
39}
40
41static inline int irq_to_gpio(unsigned int irq)
42{
43 return -EINVAL;
44}
45
46#endif /* CONFIG_GPIOLIB */
47
48#endif /* __ASM_ARCH_GPIO_H */
diff --git a/arch/arm/mach-shmobile/include/mach/hardware.h b/arch/arm/mach-shmobile/include/mach/hardware.h
new file mode 100644
index 000000000000..3f0ef194603e
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/hardware.h
@@ -0,0 +1,7 @@
1#ifndef __ASM_MACH_HARDWARE_H
2#define __ASM_MACH_HARDWARE_H
3
4/* INTFLGA register - used by low level interrupt code in entry-macro.S */
5#define INTFLGA 0xe6980018
6
7#endif /* __ASM_MACH_HARDWARE_H */
diff --git a/arch/arm/mach-shmobile/include/mach/io.h b/arch/arm/mach-shmobile/include/mach/io.h
new file mode 100644
index 000000000000..7339fe46cb7c
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/io.h
@@ -0,0 +1,9 @@
1#ifndef __ASM_MACH_IO_H
2#define __ASM_MACH_IO_H
3
4#define IO_SPACE_LIMIT 0xffffffff
5
6#define __io(a) ((void __iomem *)(a))
7#define __mem_pci(a) (a)
8
9#endif /* __ASM_MACH_IO_H */
diff --git a/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
new file mode 100644
index 000000000000..5179b72e1ee3
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/irqs.h
@@ -0,0 +1,10 @@
1#ifndef __ASM_MACH_IRQS_H
2#define __ASM_MACH_IRQS_H
3
4#define NR_IRQS 512
5#define NR_IRQS_LEGACY 8
6
7#define evt2irq(evt) (((evt) >> 5) - 16)
8#define irq2evt(irq) (((irq) + 16) << 5)
9
10#endif /* __ASM_MACH_IRQS_H */
diff --git a/arch/arm/mach-shmobile/include/mach/memory.h b/arch/arm/mach-shmobile/include/mach/memory.h
new file mode 100644
index 000000000000..e188183f4dce
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/memory.h
@@ -0,0 +1,7 @@
1#ifndef __ASM_MACH_MEMORY_H
2#define __ASM_MACH_MEMORY_H
3
4#define PHYS_OFFSET UL(CONFIG_MEMORY_START)
5#define MEM_SIZE UL(CONFIG_MEMORY_SIZE)
6
7#endif /* __ASM_MACH_MEMORY_H */
diff --git a/arch/arm/mach-shmobile/include/mach/sh7367.h b/arch/arm/mach-shmobile/include/mach/sh7367.h
new file mode 100644
index 000000000000..52d0de686f68
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/sh7367.h
@@ -0,0 +1,332 @@
1#ifndef __ASM_SH7367_H__
2#define __ASM_SH7367_H__
3
4/* Pin Function Controller:
5 * GPIO_FN_xx - GPIO used to select pin function
6 * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
7 */
8enum {
9 /* 49-1 -> 49-6 (GPIO) */
10 GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
11 GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
12
13 GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
14 GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
15
16 GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
17 GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
18
19 GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
20 GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
21
22 GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
23 GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
24
25 GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
26 GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
27
28 GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
29 GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
30
31 GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
32 GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
33
34 GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
35 GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
36
37 GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
38 GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
39
40 GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
41 GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
42
43 GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
44 GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118, GPIO_PORT119,
45
46 GPIO_PORT120, GPIO_PORT121, GPIO_PORT122, GPIO_PORT123, GPIO_PORT124,
47 GPIO_PORT125, GPIO_PORT126, GPIO_PORT127, GPIO_PORT128, GPIO_PORT129,
48
49 GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
50 GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
51
52 GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
53 GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
54
55 GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
56 GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
57
58 GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
59 GPIO_PORT165, GPIO_PORT166, GPIO_PORT167, GPIO_PORT168, GPIO_PORT169,
60
61 GPIO_PORT170, GPIO_PORT171, GPIO_PORT172, GPIO_PORT173, GPIO_PORT174,
62 GPIO_PORT175, GPIO_PORT176, GPIO_PORT177, GPIO_PORT178, GPIO_PORT179,
63
64 GPIO_PORT180, GPIO_PORT181, GPIO_PORT182, GPIO_PORT183, GPIO_PORT184,
65 GPIO_PORT185, GPIO_PORT186, GPIO_PORT187, GPIO_PORT188, GPIO_PORT189,
66
67 GPIO_PORT190, GPIO_PORT191, GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
68 GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,
69
70 GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
71 GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,
72
73 GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214,
74 GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219,
75
76 GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT223, GPIO_PORT224,
77 GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229,
78
79 GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234,
80 GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239,
81
82 GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244,
83 GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249,
84
85 GPIO_PORT250, GPIO_PORT251, GPIO_PORT252, GPIO_PORT253, GPIO_PORT254,
86 GPIO_PORT255, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259,
87
88 GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264,
89 GPIO_PORT265, GPIO_PORT266, GPIO_PORT267, GPIO_PORT268, GPIO_PORT269,
90
91 GPIO_PORT270, GPIO_PORT271, GPIO_PORT272,
92
93 /* Special Pull-up / Pull-down Functions */
94 GPIO_FN_PORT48_KEYIN0_PU, GPIO_FN_PORT49_KEYIN1_PU,
95 GPIO_FN_PORT50_KEYIN2_PU, GPIO_FN_PORT55_KEYIN3_PU,
96 GPIO_FN_PORT56_KEYIN4_PU, GPIO_FN_PORT57_KEYIN5_PU,
97 GPIO_FN_PORT58_KEYIN6_PU,
98
99 /* 49-1 (FN) */
100 GPIO_FN_VBUS0, GPIO_FN_CPORT0, GPIO_FN_CPORT1, GPIO_FN_CPORT2,
101 GPIO_FN_CPORT3, GPIO_FN_CPORT4, GPIO_FN_CPORT5, GPIO_FN_CPORT6,
102 GPIO_FN_CPORT7, GPIO_FN_CPORT8, GPIO_FN_CPORT9, GPIO_FN_CPORT10,
103 GPIO_FN_CPORT11, GPIO_FN_SIN2, GPIO_FN_CPORT12, GPIO_FN_XCTS2,
104 GPIO_FN_CPORT13, GPIO_FN_RFSPO4, GPIO_FN_CPORT14, GPIO_FN_RFSPO5,
105 GPIO_FN_CPORT15, GPIO_FN_CPORT16, GPIO_FN_CPORT17, GPIO_FN_SOUT2,
106 GPIO_FN_CPORT18, GPIO_FN_XRTS2, GPIO_FN_CPORT19, GPIO_FN_CPORT20,
107 GPIO_FN_RFSPO6, GPIO_FN_CPORT21, GPIO_FN_STATUS0, GPIO_FN_CPORT22,
108 GPIO_FN_STATUS1, GPIO_FN_CPORT23, GPIO_FN_STATUS2, GPIO_FN_RFSPO7,
109 GPIO_FN_MPORT0, GPIO_FN_MPORT1, GPIO_FN_B_SYNLD1, GPIO_FN_B_SYNLD2,
110 GPIO_FN_XMAINPS, GPIO_FN_XDIVPS, GPIO_FN_XIDRST, GPIO_FN_IDCLK,
111 GPIO_FN_IDIO, GPIO_FN_SOUT1, GPIO_FN_SCIFA4_TXD,
112 GPIO_FN_M02_BERDAT, GPIO_FN_SIN1, GPIO_FN_SCIFA4_RXD, GPIO_FN_XWUP,
113 GPIO_FN_XRTS1, GPIO_FN_SCIFA4_RTS, GPIO_FN_M03_BERCLK,
114 GPIO_FN_XCTS1, GPIO_FN_SCIFA4_CTS,
115
116 /* 49-2 (FN) */
117 GPIO_FN_HSU_IQ_AGC6, GPIO_FN_MFG2_IN2, GPIO_FN_MSIOF2_MCK0,
118 GPIO_FN_HSU_IQ_AGC5, GPIO_FN_MFG2_IN1, GPIO_FN_MSIOF2_MCK1,
119 GPIO_FN_HSU_IQ_AGC4, GPIO_FN_MSIOF2_RSYNC,
120 GPIO_FN_HSU_IQ_AGC3, GPIO_FN_MFG2_OUT1, GPIO_FN_MSIOF2_RSCK,
121 GPIO_FN_HSU_IQ_AGC2, GPIO_FN_PORT42_KEYOUT0,
122 GPIO_FN_HSU_IQ_AGC1, GPIO_FN_PORT43_KEYOUT1,
123 GPIO_FN_HSU_IQ_AGC0, GPIO_FN_PORT44_KEYOUT2,
124 GPIO_FN_HSU_IQ_AGC_ST, GPIO_FN_PORT45_KEYOUT3,
125 GPIO_FN_HSU_IQ_PDO, GPIO_FN_PORT46_KEYOUT4,
126 GPIO_FN_HSU_IQ_PYO, GPIO_FN_PORT47_KEYOUT5,
127 GPIO_FN_HSU_EN_TXMUX_G3MO, GPIO_FN_PORT48_KEYIN0,
128 GPIO_FN_HSU_I_TXMUX_G3MO, GPIO_FN_PORT49_KEYIN1,
129 GPIO_FN_HSU_Q_TXMUX_G3MO, GPIO_FN_PORT50_KEYIN2,
130 GPIO_FN_HSU_SYO, GPIO_FN_PORT51_MSIOF2_TSYNC,
131 GPIO_FN_HSU_SDO, GPIO_FN_PORT52_MSIOF2_TSCK,
132 GPIO_FN_HSU_TGTTI_G3MO, GPIO_FN_PORT53_MSIOF2_TXD,
133 GPIO_FN_B_TIME_STAMP, GPIO_FN_PORT54_MSIOF2_RXD,
134 GPIO_FN_HSU_SDI, GPIO_FN_PORT55_KEYIN3,
135 GPIO_FN_HSU_SCO, GPIO_FN_PORT56_KEYIN4,
136 GPIO_FN_HSU_DREQ, GPIO_FN_PORT57_KEYIN5,
137 GPIO_FN_HSU_DACK, GPIO_FN_PORT58_KEYIN6,
138 GPIO_FN_HSU_CLK61M, GPIO_FN_PORT59_MSIOF2_SS1,
139 GPIO_FN_HSU_XRST, GPIO_FN_PORT60_MSIOF2_SS2,
140 GPIO_FN_PCMCLKO, GPIO_FN_SYNC8KO, GPIO_FN_DNPCM_A, GPIO_FN_UPPCM_A,
141 GPIO_FN_XTALB1L,
142 GPIO_FN_GPS_AGC1, GPIO_FN_SCIFA0_RTS,
143 GPIO_FN_GPS_AGC2, GPIO_FN_SCIFA0_SCK,
144 GPIO_FN_GPS_AGC3, GPIO_FN_SCIFA0_TXD,
145 GPIO_FN_GPS_AGC4, GPIO_FN_SCIFA0_RXD,
146 GPIO_FN_GPS_PWRD, GPIO_FN_SCIFA0_CTS,
147 GPIO_FN_GPS_IM, GPIO_FN_GPS_IS, GPIO_FN_GPS_QM, GPIO_FN_GPS_QS,
148 GPIO_FN_SIUBOMC, GPIO_FN_TPU2TO0,
149 GPIO_FN_SIUCKB, GPIO_FN_TPU2TO1,
150 GPIO_FN_SIUBOLR, GPIO_FN_BBIF2_TSYNC, GPIO_FN_TPU2TO2,
151 GPIO_FN_SIUBOBT, GPIO_FN_BBIF2_TSCK, GPIO_FN_TPU2TO3,
152 GPIO_FN_SIUBOSLD, GPIO_FN_BBIF2_TXD, GPIO_FN_TPU3TO0,
153 GPIO_FN_SIUBILR, GPIO_FN_TPU3TO1,
154 GPIO_FN_SIUBIBT, GPIO_FN_TPU3TO2,
155 GPIO_FN_SIUBISLD, GPIO_FN_TPU3TO3,
156 GPIO_FN_NMI, GPIO_FN_TPU4TO0,
157 GPIO_FN_DNPCM_M, GPIO_FN_TPU4TO1, GPIO_FN_TPU4TO2, GPIO_FN_TPU4TO3,
158 GPIO_FN_IRQ_TMPB,
159 GPIO_FN_PWEN, GPIO_FN_MFG1_OUT1,
160 GPIO_FN_OVCN, GPIO_FN_MFG1_IN1,
161 GPIO_FN_OVCN2, GPIO_FN_MFG1_IN2,
162
163 /* 49-3 (FN) */
164 GPIO_FN_RFSPO1, GPIO_FN_RFSPO2, GPIO_FN_RFSPO3, GPIO_FN_PORT93_VIO_CKO2,
165 GPIO_FN_USBTERM, GPIO_FN_EXTLP, GPIO_FN_IDIN,
166 GPIO_FN_SCIFA5_CTS, GPIO_FN_MFG0_IN1,
167 GPIO_FN_SCIFA5_RTS, GPIO_FN_MFG0_IN2,
168 GPIO_FN_SCIFA5_RXD,
169 GPIO_FN_SCIFA5_TXD,
170 GPIO_FN_SCIFA5_SCK, GPIO_FN_MFG0_OUT1,
171 GPIO_FN_A0_EA0, GPIO_FN_BS,
172 GPIO_FN_A14_EA14, GPIO_FN_PORT102_KEYOUT0,
173 GPIO_FN_A15_EA15, GPIO_FN_PORT103_KEYOUT1, GPIO_FN_DV_CLKOL,
174 GPIO_FN_A16_EA16, GPIO_FN_PORT104_KEYOUT2,
175 GPIO_FN_DV_VSYNCL, GPIO_FN_MSIOF0_SS1,
176 GPIO_FN_A17_EA17, GPIO_FN_PORT105_KEYOUT3,
177 GPIO_FN_DV_HSYNCL, GPIO_FN_MSIOF0_TSYNC,
178 GPIO_FN_A18_EA18, GPIO_FN_PORT106_KEYOUT4,
179 GPIO_FN_DV_DL0, GPIO_FN_MSIOF0_TSCK,
180 GPIO_FN_A19_EA19, GPIO_FN_PORT107_KEYOUT5,
181 GPIO_FN_DV_DL1, GPIO_FN_MSIOF0_TXD,
182 GPIO_FN_A20_EA20, GPIO_FN_PORT108_KEYIN0,
183 GPIO_FN_DV_DL2, GPIO_FN_MSIOF0_RSCK,
184 GPIO_FN_A21_EA21, GPIO_FN_PORT109_KEYIN1,
185 GPIO_FN_DV_DL3, GPIO_FN_MSIOF0_RSYNC,
186 GPIO_FN_A22_EA22, GPIO_FN_PORT110_KEYIN2,
187 GPIO_FN_DV_DL4, GPIO_FN_MSIOF0_MCK0,
188 GPIO_FN_A23_EA23, GPIO_FN_PORT111_KEYIN3,
189 GPIO_FN_DV_DL5, GPIO_FN_MSIOF0_MCK1,
190 GPIO_FN_A24_EA24, GPIO_FN_PORT112_KEYIN4,
191 GPIO_FN_DV_DL6, GPIO_FN_MSIOF0_RXD,
192 GPIO_FN_A25_EA25, GPIO_FN_PORT113_KEYIN5,
193 GPIO_FN_DV_DL7, GPIO_FN_MSIOF0_SS2,
194 GPIO_FN_A26, GPIO_FN_PORT113_KEYIN6, GPIO_FN_DV_CLKIL,
195 GPIO_FN_D0_ED0_NAF0, GPIO_FN_D1_ED1_NAF1, GPIO_FN_D2_ED2_NAF2,
196 GPIO_FN_D3_ED3_NAF3, GPIO_FN_D4_ED4_NAF4, GPIO_FN_D5_ED5_NAF5,
197 GPIO_FN_D6_ED6_NAF6, GPIO_FN_D7_ED7_NAF7, GPIO_FN_D8_ED8_NAF8,
198 GPIO_FN_D9_ED9_NAF9, GPIO_FN_D10_ED10_NAF10, GPIO_FN_D11_ED11_NAF11,
199 GPIO_FN_D12_ED12_NAF12, GPIO_FN_D13_ED13_NAF13,
200 GPIO_FN_D14_ED14_NAF14, GPIO_FN_D15_ED15_NAF15,
201 GPIO_FN_CS4, GPIO_FN_CS5A, GPIO_FN_CS5B, GPIO_FN_FCE1,
202 GPIO_FN_CS6B, GPIO_FN_XCS2, GPIO_FN_FCE0, GPIO_FN_CS6A,
203 GPIO_FN_DACK0, GPIO_FN_WAIT, GPIO_FN_DREQ0, GPIO_FN_RD_XRD,
204 GPIO_FN_A27, GPIO_FN_RDWR_XWE, GPIO_FN_WE0_XWR0_FWE,
205 GPIO_FN_WE1_XWR1, GPIO_FN_FRB, GPIO_FN_CKO,
206 GPIO_FN_NBRSTOUT, GPIO_FN_NBRST,
207
208 /* 49-4 (FN) */
209 GPIO_FN_RFSPO0, GPIO_FN_PORT146_VIO_CKO2, GPIO_FN_TSTMD,
210 GPIO_FN_VIO_VD, GPIO_FN_VIO_HD,
211 GPIO_FN_VIO_D0, GPIO_FN_VIO_D1, GPIO_FN_VIO_D2,
212 GPIO_FN_VIO_D3, GPIO_FN_VIO_D4, GPIO_FN_VIO_D5,
213 GPIO_FN_VIO_D6, GPIO_FN_VIO_D7, GPIO_FN_VIO_D8,
214 GPIO_FN_VIO_D9, GPIO_FN_VIO_D10, GPIO_FN_VIO_D11,
215 GPIO_FN_VIO_D12, GPIO_FN_VIO_D13, GPIO_FN_VIO_D14,
216 GPIO_FN_VIO_D15, GPIO_FN_VIO_CLK, GPIO_FN_VIO_FIELD,
217 GPIO_FN_VIO_CKO,
218 GPIO_FN_MFG3_IN1, GPIO_FN_MFG3_IN2,
219 GPIO_FN_M9_SLCD_A01, GPIO_FN_MFG3_OUT1, GPIO_FN_TPU0TO0,
220 GPIO_FN_M10_SLCD_CK1, GPIO_FN_MFG4_IN1, GPIO_FN_TPU0TO1,
221 GPIO_FN_M11_SLCD_SO1, GPIO_FN_MFG4_IN2, GPIO_FN_TPU0TO2,
222 GPIO_FN_M12_SLCD_CE1, GPIO_FN_MFG4_OUT1, GPIO_FN_TPU0TO3,
223 GPIO_FN_LCDD0, GPIO_FN_PORT175_KEYOUT0, GPIO_FN_DV_D0,
224 GPIO_FN_SIUCKA, GPIO_FN_MFG0_OUT2,
225 GPIO_FN_LCDD1, GPIO_FN_PORT176_KEYOUT1, GPIO_FN_DV_D1,
226 GPIO_FN_SIUAOLR, GPIO_FN_BBIF2_TSYNC1,
227 GPIO_FN_LCDD2, GPIO_FN_PORT177_KEYOUT2, GPIO_FN_DV_D2,
228 GPIO_FN_SIUAOBT, GPIO_FN_BBIF2_TSCK1,
229 GPIO_FN_LCDD3, GPIO_FN_PORT178_KEYOUT3, GPIO_FN_DV_D3,
230 GPIO_FN_SIUAOSLD, GPIO_FN_BBIF2_TXD1,
231 GPIO_FN_LCDD4, GPIO_FN_PORT179_KEYOUT4, GPIO_FN_DV_D4,
232 GPIO_FN_SIUAISPD, GPIO_FN_MFG1_OUT2,
233 GPIO_FN_LCDD5, GPIO_FN_PORT180_KEYOUT5, GPIO_FN_DV_D5,
234 GPIO_FN_SIUAILR, GPIO_FN_MFG2_OUT2,
235 GPIO_FN_LCDD6, GPIO_FN_DV_D6,
236 GPIO_FN_SIUAIBT, GPIO_FN_MFG3_OUT2, GPIO_FN_XWR2,
237 GPIO_FN_LCDD7, GPIO_FN_DV_D7,
238 GPIO_FN_SIUAISLD, GPIO_FN_MFG4_OUT2, GPIO_FN_XWR3,
239 GPIO_FN_LCDD8, GPIO_FN_DV_D8, GPIO_FN_D16, GPIO_FN_ED16,
240 GPIO_FN_LCDD9, GPIO_FN_DV_D9, GPIO_FN_D17, GPIO_FN_ED17,
241 GPIO_FN_LCDD10, GPIO_FN_DV_D10, GPIO_FN_D18, GPIO_FN_ED18,
242 GPIO_FN_LCDD11, GPIO_FN_DV_D11, GPIO_FN_D19, GPIO_FN_ED19,
243 GPIO_FN_LCDD12, GPIO_FN_DV_D12, GPIO_FN_D20, GPIO_FN_ED20,
244 GPIO_FN_LCDD13, GPIO_FN_DV_D13, GPIO_FN_D21, GPIO_FN_ED21,
245 GPIO_FN_LCDD14, GPIO_FN_DV_D14, GPIO_FN_D22, GPIO_FN_ED22,
246 GPIO_FN_LCDD15, GPIO_FN_DV_D15, GPIO_FN_D23, GPIO_FN_ED23,
247 GPIO_FN_LCDD16, GPIO_FN_DV_HSYNC, GPIO_FN_D24, GPIO_FN_ED24,
248 GPIO_FN_LCDD17, GPIO_FN_DV_VSYNC, GPIO_FN_D25, GPIO_FN_ED25,
249 GPIO_FN_LCDD18, GPIO_FN_DREQ2, GPIO_FN_MSIOF0L_TSCK,
250 GPIO_FN_D26, GPIO_FN_ED26,
251 GPIO_FN_LCDD19, GPIO_FN_MSIOF0L_TSYNC,
252 GPIO_FN_D27, GPIO_FN_ED27,
253 GPIO_FN_LCDD20, GPIO_FN_TS_SPSYNC1, GPIO_FN_MSIOF0L_MCK0,
254 GPIO_FN_D28, GPIO_FN_ED28,
255 GPIO_FN_LCDD21, GPIO_FN_TS_SDAT1, GPIO_FN_MSIOF0L_MCK1,
256 GPIO_FN_D29, GPIO_FN_ED29,
257 GPIO_FN_LCDD22, GPIO_FN_TS_SDEN1, GPIO_FN_MSIOF0L_SS1,
258 GPIO_FN_D30, GPIO_FN_ED30,
259 GPIO_FN_LCDD23, GPIO_FN_TS_SCK1, GPIO_FN_MSIOF0L_SS2,
260 GPIO_FN_D31, GPIO_FN_ED31,
261 GPIO_FN_LCDDCK, GPIO_FN_LCDWR, GPIO_FN_DV_CKO, GPIO_FN_SIUAOSPD,
262 GPIO_FN_LCDRD, GPIO_FN_DACK2, GPIO_FN_MSIOF0L_RSYNC,
263
264
265 /* 49-5 (FN) */
266 GPIO_FN_LCDHSYN, GPIO_FN_LCDCS, GPIO_FN_LCDCS2, GPIO_FN_DACK3,
267 GPIO_FN_LCDDISP, GPIO_FN_LCDRS, GPIO_FN_DREQ3, GPIO_FN_MSIOF0L_RSCK,
268 GPIO_FN_LCDCSYN, GPIO_FN_LCDCSYN2, GPIO_FN_DV_CKI,
269 GPIO_FN_LCDLCLK, GPIO_FN_DREQ1, GPIO_FN_MSIOF0L_RXD,
270 GPIO_FN_LCDDON, GPIO_FN_LCDDON2, GPIO_FN_DACK1, GPIO_FN_MSIOF0L_TXD,
271 GPIO_FN_VIO_DR0, GPIO_FN_VIO_DR1, GPIO_FN_VIO_DR2, GPIO_FN_VIO_DR3,
272 GPIO_FN_VIO_DR4, GPIO_FN_VIO_DR5, GPIO_FN_VIO_DR6, GPIO_FN_VIO_DR7,
273 GPIO_FN_VIO_VDR, GPIO_FN_VIO_HDR,
274 GPIO_FN_VIO_CLKR, GPIO_FN_VIO_CKOR,
275 GPIO_FN_SCIFA1_TXD, GPIO_FN_GPS_PGFA0,
276 GPIO_FN_SCIFA1_SCK, GPIO_FN_GPS_PGFA1,
277 GPIO_FN_SCIFA1_RTS, GPIO_FN_GPS_EPPSINMON,
278 GPIO_FN_SCIFA1_RXD, GPIO_FN_SCIFA1_CTS,
279 GPIO_FN_MSIOF1_TXD, GPIO_FN_SCIFA1_TXD2, GPIO_FN_GPS_TXD,
280 GPIO_FN_MSIOF1_TSYNC, GPIO_FN_SCIFA1_CTS2, GPIO_FN_I2C_SDA2,
281 GPIO_FN_MSIOF1_TSCK, GPIO_FN_SCIFA1_SCK2,
282 GPIO_FN_MSIOF1_RXD, GPIO_FN_SCIFA1_RXD2, GPIO_FN_GPS_RXD,
283 GPIO_FN_MSIOF1_RSCK, GPIO_FN_SCIFA1_RTS2,
284 GPIO_FN_MSIOF1_RSYNC, GPIO_FN_I2C_SCL2,
285 GPIO_FN_MSIOF1_MCK0, GPIO_FN_MSIOF1_MCK1,
286 GPIO_FN_MSIOF1_SS1, GPIO_FN_EDBGREQ3,
287 GPIO_FN_MSIOF1_SS2,
288 GPIO_FN_PORT236_IROUT, GPIO_FN_IRDA_OUT,
289 GPIO_FN_IRDA_IN, GPIO_FN_IRDA_FIRSEL,
290 GPIO_FN_TPU1TO0, GPIO_FN_TS_SPSYNC3,
291 GPIO_FN_TPU1TO1, GPIO_FN_TS_SDAT3,
292 GPIO_FN_TPU1TO2, GPIO_FN_TS_SDEN3, GPIO_FN_PORT241_MSIOF2_SS1,
293 GPIO_FN_TPU1TO3, GPIO_FN_PORT242_MSIOF2_TSCK,
294 GPIO_FN_M13_BSW, GPIO_FN_PORT243_MSIOF2_TSYNC,
295 GPIO_FN_M14_GSW, GPIO_FN_PORT244_MSIOF2_TXD,
296 GPIO_FN_PORT245_IROUT, GPIO_FN_M15_RSW,
297 GPIO_FN_SOUT3, GPIO_FN_SCIFA2_TXD1,
298 GPIO_FN_SIN3, GPIO_FN_SCIFA2_RXD1,
299 GPIO_FN_XRTS3, GPIO_FN_SCIFA2_RTS1, GPIO_FN_PORT248_MSIOF2_SS2,
300 GPIO_FN_XCTS3, GPIO_FN_SCIFA2_CTS1, GPIO_FN_PORT249_MSIOF2_RXD,
301 GPIO_FN_DINT, GPIO_FN_SCIFA2_SCK1, GPIO_FN_TS_SCK3,
302 GPIO_FN_SDHICLK0, GPIO_FN_TCK2,
303 GPIO_FN_SDHICD0,
304 GPIO_FN_SDHID0_0, GPIO_FN_TMS2,
305 GPIO_FN_SDHID0_1, GPIO_FN_TDO2,
306 GPIO_FN_SDHID0_2, GPIO_FN_TDI2,
307 GPIO_FN_SDHID0_3, GPIO_FN_RTCK2,
308
309 /* 49-6 (FN) */
310 GPIO_FN_SDHICMD0, GPIO_FN_TRST2,
311 GPIO_FN_SDHIWP0, GPIO_FN_EDBGREQ2,
312 GPIO_FN_SDHICLK1, GPIO_FN_TCK3,
313 GPIO_FN_SDHID1_0, GPIO_FN_M11_SLCD_SO2,
314 GPIO_FN_TS_SPSYNC2, GPIO_FN_TMS3,
315 GPIO_FN_SDHID1_1, GPIO_FN_M9_SLCD_AO2,
316 GPIO_FN_TS_SDAT2, GPIO_FN_TDO3,
317 GPIO_FN_SDHID1_2, GPIO_FN_M10_SLCD_CK2,
318 GPIO_FN_TS_SDEN2, GPIO_FN_TDI3,
319 GPIO_FN_SDHID1_3, GPIO_FN_M12_SLCD_CE2,
320 GPIO_FN_TS_SCK2, GPIO_FN_RTCK3,
321 GPIO_FN_SDHICMD1, GPIO_FN_TRST3,
322 GPIO_FN_SDHICLK2, GPIO_FN_SCIFB_SCK,
323 GPIO_FN_SDHID2_0, GPIO_FN_SCIFB_TXD,
324 GPIO_FN_SDHID2_1, GPIO_FN_SCIFB_CTS,
325 GPIO_FN_SDHID2_2, GPIO_FN_SCIFB_RXD,
326 GPIO_FN_SDHID2_3, GPIO_FN_SCIFB_RTS,
327 GPIO_FN_SDHICMD2,
328 GPIO_FN_RESETOUTS,
329 GPIO_FN_DIVLOCK,
330};
331
332#endif /* __ASM_SH7367_H__ */
diff --git a/arch/arm/mach-shmobile/include/mach/sh7372.h b/arch/arm/mach-shmobile/include/mach/sh7372.h
new file mode 100644
index 000000000000..dc34f00c56b8
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/sh7372.h
@@ -0,0 +1,434 @@
1/*
2 * Copyright (C) 2010 Renesas Solutions Corp.
3 *
4 * Kuninori Morimoto <morimoto.kuninori@renesas.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef __ASM_SH7372_H__
12#define __ASM_SH7372_H__
13
14/*
15 * Pin Function Controller:
16 * GPIO_FN_xx - GPIO used to select pin function
17 * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
18 */
19enum {
20 /* PORT */
21 GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
22 GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
23
24 GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
25 GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
26
27 GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
28 GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
29
30 GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
31 GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
32
33 GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
34 GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
35
36 GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
37 GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
38
39 GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
40 GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
41
42 GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
43 GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
44
45 GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
46 GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
47
48 GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
49 GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
50
51 GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
52 GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
53
54 GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
55 GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118, GPIO_PORT119,
56
57 GPIO_PORT120, GPIO_PORT121, GPIO_PORT122, GPIO_PORT123, GPIO_PORT124,
58 GPIO_PORT125, GPIO_PORT126, GPIO_PORT127, GPIO_PORT128, GPIO_PORT129,
59
60 GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
61 GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
62
63 GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
64 GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
65
66 GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
67 GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
68
69 GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
70 GPIO_PORT165, GPIO_PORT166, GPIO_PORT167, GPIO_PORT168, GPIO_PORT169,
71
72 GPIO_PORT170, GPIO_PORT171, GPIO_PORT172, GPIO_PORT173, GPIO_PORT174,
73 GPIO_PORT175, GPIO_PORT176, GPIO_PORT177, GPIO_PORT178, GPIO_PORT179,
74
75 GPIO_PORT180, GPIO_PORT181, GPIO_PORT182, GPIO_PORT183, GPIO_PORT184,
76 GPIO_PORT185, GPIO_PORT186, GPIO_PORT187, GPIO_PORT188, GPIO_PORT189,
77
78 GPIO_PORT190,
79
80 /* IRQ */
81 GPIO_FN_IRQ0_6, /* PORT 6 */
82 GPIO_FN_IRQ0_162, /* PORT 162 */
83 GPIO_FN_IRQ1, /* PORT 12 */
84 GPIO_FN_IRQ2_4, /* PORT 4 */
85 GPIO_FN_IRQ2_5, /* PORT 5 */
86 GPIO_FN_IRQ3_8, /* PORT 8 */
87 GPIO_FN_IRQ3_16, /* PORT 16 */
88 GPIO_FN_IRQ4_17, /* PORT 17 */
89 GPIO_FN_IRQ4_163, /* PORT 163 */
90 GPIO_FN_IRQ5, /* PORT 18 */
91 GPIO_FN_IRQ6_39, /* PORT 39 */
92 GPIO_FN_IRQ6_164, /* PORT 164 */
93 GPIO_FN_IRQ7_40, /* PORT 40 */
94 GPIO_FN_IRQ7_167, /* PORT 167 */
95 GPIO_FN_IRQ8_41, /* PORT 41 */
96 GPIO_FN_IRQ8_168, /* PORT 168 */
97 GPIO_FN_IRQ9_42, /* PORT 42 */
98 GPIO_FN_IRQ9_169, /* PORT 169 */
99 GPIO_FN_IRQ10, /* PORT 65 */
100 GPIO_FN_IRQ11, /* PORT 67 */
101 GPIO_FN_IRQ12_80, /* PORT 80 */
102 GPIO_FN_IRQ12_137, /* PORT 137 */
103 GPIO_FN_IRQ13_81, /* PORT 81 */
104 GPIO_FN_IRQ13_145, /* PORT 145 */
105 GPIO_FN_IRQ14_82, /* PORT 82 */
106 GPIO_FN_IRQ14_146, /* PORT 146 */
107 GPIO_FN_IRQ15_83, /* PORT 83 */
108 GPIO_FN_IRQ15_147, /* PORT 147 */
109 GPIO_FN_IRQ16_84, /* PORT 84 */
110 GPIO_FN_IRQ16_170, /* PORT 170 */
111 GPIO_FN_IRQ17, /* PORT 85 */
112 GPIO_FN_IRQ18, /* PORT 86 */
113 GPIO_FN_IRQ19, /* PORT 87 */
114 GPIO_FN_IRQ20, /* PORT 92 */
115 GPIO_FN_IRQ21, /* PORT 93 */
116 GPIO_FN_IRQ22, /* PORT 94 */
117 GPIO_FN_IRQ23, /* PORT 95 */
118 GPIO_FN_IRQ24, /* PORT 112 */
119 GPIO_FN_IRQ25, /* PORT 119 */
120 GPIO_FN_IRQ26_121, /* PORT 121 */
121 GPIO_FN_IRQ26_172, /* PORT 172 */
122 GPIO_FN_IRQ27_122, /* PORT 122 */
123 GPIO_FN_IRQ27_180, /* PORT 180 */
124 GPIO_FN_IRQ28_123, /* PORT 123 */
125 GPIO_FN_IRQ28_181, /* PORT 181 */
126 GPIO_FN_IRQ29_129, /* PORT 129 */
127 GPIO_FN_IRQ29_182, /* PORT 182 */
128 GPIO_FN_IRQ30_130, /* PORT 130 */
129 GPIO_FN_IRQ30_183, /* PORT 183 */
130 GPIO_FN_IRQ31_138, /* PORT 138 */
131 GPIO_FN_IRQ31_184, /* PORT 184 */
132
133 /*
134 * MSIOF0 (PORT 36, 37, 38, 39
135 * 40, 41, 42, 43, 44, 45)
136 */
137 GPIO_FN_MSIOF0_TSYNC, GPIO_FN_MSIOF0_TSCK,
138 GPIO_FN_MSIOF0_RXD, GPIO_FN_MSIOF0_RSCK,
139 GPIO_FN_MSIOF0_RSYNC, GPIO_FN_MSIOF0_MCK0,
140 GPIO_FN_MSIOF0_MCK1, GPIO_FN_MSIOF0_SS1,
141 GPIO_FN_MSIOF0_SS2, GPIO_FN_MSIOF0_TXD,
142
143 /*
144 * MSIOF1 (PORT 39, 40, 41, 42, 43, 44
145 * 84, 85, 86, 87, 88, 89, 90, 91, 92, 93)
146 */
147 GPIO_FN_MSIOF1_TSCK_39, GPIO_FN_MSIOF1_TSYNC_40,
148 GPIO_FN_MSIOF1_TSCK_88, GPIO_FN_MSIOF1_TSYNC_89,
149 GPIO_FN_MSIOF1_TXD_41, GPIO_FN_MSIOF1_RXD_42,
150 GPIO_FN_MSIOF1_TXD_90, GPIO_FN_MSIOF1_RXD_91,
151 GPIO_FN_MSIOF1_SS1_43, GPIO_FN_MSIOF1_SS2_44,
152 GPIO_FN_MSIOF1_SS1_92, GPIO_FN_MSIOF1_SS2_93,
153 GPIO_FN_MSIOF1_RSCK, GPIO_FN_MSIOF1_RSYNC,
154 GPIO_FN_MSIOF1_MCK0, GPIO_FN_MSIOF1_MCK1,
155
156 /*
157 * MSIOF2 (PORT 134, 135, 136, 137, 138, 139
158 * 148, 149, 150, 151)
159 */
160 GPIO_FN_MSIOF2_RSCK, GPIO_FN_MSIOF2_RSYNC,
161 GPIO_FN_MSIOF2_MCK0, GPIO_FN_MSIOF2_MCK1,
162 GPIO_FN_MSIOF2_SS1, GPIO_FN_MSIOF2_SS2,
163 GPIO_FN_MSIOF2_TSYNC, GPIO_FN_MSIOF2_TSCK,
164 GPIO_FN_MSIOF2_RXD, GPIO_FN_MSIOF2_TXD,
165
166 /* MSIOF3 (PORT 76, 77, 78, 79, 80, 81, 82, 83) */
167 GPIO_FN_BBIF1_RXD, GPIO_FN_BBIF1_TSYNC,
168 GPIO_FN_BBIF1_TSCK, GPIO_FN_BBIF1_TXD,
169 GPIO_FN_BBIF1_RSCK, GPIO_FN_BBIF1_RSYNC,
170 GPIO_FN_BBIF1_FLOW, GPIO_FN_BB_RX_FLOW_N,
171
172 /* MSIOF4 (PORT 0, 1, 2, 3) */
173 GPIO_FN_BBIF2_TSCK1, GPIO_FN_BBIF2_TSYNC1,
174 GPIO_FN_BBIF2_TXD1, GPIO_FN_BBIF2_RXD,
175
176 /* FSI (PORT 4, 5, 6, 7, 8, 9, 10, 11, 15) */
177 GPIO_FN_FSIACK, GPIO_FN_FSIBCK,
178 GPIO_FN_FSIAILR, GPIO_FN_FSIAIBT,
179 GPIO_FN_FSIAISLD, GPIO_FN_FSIAOMC,
180 GPIO_FN_FSIAOLR, GPIO_FN_FSIAOBT,
181 GPIO_FN_FSIAOSLD, GPIO_FN_FSIASPDIF_11,
182 GPIO_FN_FSIASPDIF_15,
183
184 /* FMSI (PORT 12, 13, 14, 15, 16, 17, 18, 65) */
185 GPIO_FN_FMSOCK, GPIO_FN_FMSOOLR,
186 GPIO_FN_FMSIOLR, GPIO_FN_FMSOOBT,
187 GPIO_FN_FMSIOBT, GPIO_FN_FMSOSLD,
188 GPIO_FN_FMSOILR, GPIO_FN_FMSIILR,
189 GPIO_FN_FMSOIBT, GPIO_FN_FMSIIBT,
190 GPIO_FN_FMSISLD, GPIO_FN_FMSICK,
191
192 /* SCIFA0 (PORT 152, 153, 156, 157, 158) */
193 GPIO_FN_SCIFA0_TXD, GPIO_FN_SCIFA0_RXD,
194 GPIO_FN_SCIFA0_SCK, GPIO_FN_SCIFA0_RTS,
195 GPIO_FN_SCIFA0_CTS,
196
197 /* SCIFA1 (PORT 154, 155, 159, 160, 161) */
198 GPIO_FN_SCIFA1_TXD, GPIO_FN_SCIFA1_RXD,
199 GPIO_FN_SCIFA1_SCK, GPIO_FN_SCIFA1_RTS,
200 GPIO_FN_SCIFA1_CTS,
201
202 /* SCIFA2 (PORT 94, 95, 96, 97, 98) */
203 GPIO_FN_SCIFA2_CTS1, GPIO_FN_SCIFA2_RTS1,
204 GPIO_FN_SCIFA2_TXD1, GPIO_FN_SCIFA2_RXD1,
205 GPIO_FN_SCIFA2_SCK1,
206
207 /* SCIFA3 (PORT 43, 44,
208 140, 141, 142, 143, 144) */
209 GPIO_FN_SCIFA3_CTS_43, GPIO_FN_SCIFA3_CTS_140,
210 GPIO_FN_SCIFA3_RTS_44, GPIO_FN_SCIFA3_RTS_141,
211 GPIO_FN_SCIFA3_SCK, GPIO_FN_SCIFA3_TXD,
212 GPIO_FN_SCIFA3_RXD,
213
214 /* SCIFA4 (PORT 5, 6) */
215 GPIO_FN_SCIFA4_RXD, GPIO_FN_SCIFA4_TXD,
216
217 /* SCIFA5 (PORT 8, 12) */
218 GPIO_FN_SCIFA5_RXD, GPIO_FN_SCIFA5_TXD,
219
220 /* SCIFB (PORT 162, 163, 164, 165, 166) */
221 GPIO_FN_SCIFB_SCK, GPIO_FN_SCIFB_RTS,
222 GPIO_FN_SCIFB_CTS, GPIO_FN_SCIFB_TXD,
223 GPIO_FN_SCIFB_RXD,
224
225 /*
226 * CEU (PORT 16, 17,
227 * 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
228 * 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
229 * 120)
230 */
231 GPIO_FN_VIO_HD, GPIO_FN_VIO_CKO1, GPIO_FN_VIO_CKO2,
232 GPIO_FN_VIO_VD, GPIO_FN_VIO_CLK, GPIO_FN_VIO_FIELD,
233 GPIO_FN_VIO_CKO,
234 GPIO_FN_VIO_D0, GPIO_FN_VIO_D1, GPIO_FN_VIO_D2,
235 GPIO_FN_VIO_D3, GPIO_FN_VIO_D4, GPIO_FN_VIO_D5,
236 GPIO_FN_VIO_D6, GPIO_FN_VIO_D7, GPIO_FN_VIO_D8,
237 GPIO_FN_VIO_D9, GPIO_FN_VIO_D10, GPIO_FN_VIO_D11,
238 GPIO_FN_VIO_D12, GPIO_FN_VIO_D13, GPIO_FN_VIO_D14,
239 GPIO_FN_VIO_D15,
240
241 /* USB0 (PORT 113, 114, 115, 116, 117, 167) */
242 GPIO_FN_IDIN_0, GPIO_FN_EXTLP_0,
243 GPIO_FN_OVCN2_0, GPIO_FN_PWEN_0,
244 GPIO_FN_OVCN_0, GPIO_FN_VBUS0_0,
245
246 /* USB1 (PORT 18, 113, 114, 115, 116, 117, 138, 162, 168) */
247 GPIO_FN_IDIN_1_18, GPIO_FN_IDIN_1_113,
248 GPIO_FN_PWEN_1_115, GPIO_FN_PWEN_1_138,
249 GPIO_FN_OVCN_1_114, GPIO_FN_OVCN_1_162,
250 GPIO_FN_EXTLP_1, GPIO_FN_OVCN2_1,
251 GPIO_FN_VBUS0_1,
252
253 /* GPIO (PORT 41, 42, 43, 44) */
254 GPIO_FN_GPI0, GPIO_FN_GPI1, GPIO_FN_GPO0, GPIO_FN_GPO1,
255
256 /*
257 * BSC (PORT 19,
258 * 20, 21, 22, 25, 26, 27, 28, 29,
259 * 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
260 * 40, 41, 42, 43, 44, 45,
261 * 62, 63, 64, 65, 66, 67,
262 * 71, 72, 74, 75)
263 */
264 GPIO_FN_BS, GPIO_FN_WE1,
265 GPIO_FN_CKO, GPIO_FN_WAIT, GPIO_FN_RDWR,
266
267 GPIO_FN_A0, GPIO_FN_A1, GPIO_FN_A2, GPIO_FN_A3,
268 GPIO_FN_A6, GPIO_FN_A7, GPIO_FN_A8, GPIO_FN_A9,
269 GPIO_FN_A10, GPIO_FN_A11, GPIO_FN_A12, GPIO_FN_A13,
270 GPIO_FN_A14, GPIO_FN_A15, GPIO_FN_A16, GPIO_FN_A17,
271 GPIO_FN_A18, GPIO_FN_A19, GPIO_FN_A20, GPIO_FN_A21,
272 GPIO_FN_A22, GPIO_FN_A23, GPIO_FN_A24, GPIO_FN_A25,
273 GPIO_FN_A26,
274
275 GPIO_FN_CS0, GPIO_FN_CS2, GPIO_FN_CS4,
276 GPIO_FN_CS5A, GPIO_FN_CS5B, GPIO_FN_CS6A,
277
278 /*
279 * BSC/FLCTL (PORT 23, 24,
280 * 46, 47, 48, 49,
281 * 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
282 * 60, 61, 69, 70)
283 */
284 GPIO_FN_RD_FSC, GPIO_FN_WE0_FWE,
285 GPIO_FN_A4_FOE, GPIO_FN_A5_FCDE,
286 GPIO_FN_D0_NAF0, GPIO_FN_D1_NAF1, GPIO_FN_D2_NAF2,
287 GPIO_FN_D3_NAF3, GPIO_FN_D4_NAF4, GPIO_FN_D5_NAF5,
288 GPIO_FN_D6_NAF6, GPIO_FN_D7_NAF7, GPIO_FN_D8_NAF8,
289 GPIO_FN_D9_NAF9, GPIO_FN_D10_NAF10, GPIO_FN_D11_NAF11,
290 GPIO_FN_D12_NAF12, GPIO_FN_D13_NAF13, GPIO_FN_D14_NAF14,
291 GPIO_FN_D15_NAF15,
292
293 /*
294 * MMCIF(1) (PORT 84, 85, 86, 87, 88, 89,
295 * 90, 91, 92, 99)
296 */
297 GPIO_FN_MMCD0_0, GPIO_FN_MMCD0_1, GPIO_FN_MMCD0_2,
298 GPIO_FN_MMCD0_3, GPIO_FN_MMCD0_4, GPIO_FN_MMCD0_5,
299 GPIO_FN_MMCD0_6, GPIO_FN_MMCD0_7,
300 GPIO_FN_MMCCMD0, GPIO_FN_MMCCLK0,
301
302 /* MMCIF(2) (PORT 54, 55, 56, 57, 58, 59, 60, 61, 66, 67) */
303 GPIO_FN_MMCD1_0, GPIO_FN_MMCD1_1, GPIO_FN_MMCD1_2,
304 GPIO_FN_MMCD1_3, GPIO_FN_MMCD1_4, GPIO_FN_MMCD1_5,
305 GPIO_FN_MMCD1_6, GPIO_FN_MMCD1_7,
306 GPIO_FN_MMCCLK1, GPIO_FN_MMCCMD1,
307
308 /* SPU2 (PORT 65) */
309 GPIO_FN_VINT_I,
310
311 /* FLCTL (PORT 66, 68, 73) */
312 GPIO_FN_FCE1, GPIO_FN_FCE0, GPIO_FN_FRB,
313
314 /* HSI (PORT 76, 77, 78, 79, 80, 81, 82, 83) */
315 GPIO_FN_GP_RX_FLAG, GPIO_FN_GP_RX_DATA, GPIO_FN_GP_TX_READY,
316 GPIO_FN_GP_RX_WAKE, GPIO_FN_MP_TX_FLAG, GPIO_FN_MP_TX_DATA,
317 GPIO_FN_MP_RX_READY, GPIO_FN_MP_TX_WAKE,
318
319 /*
320 * MFI (PORT 76, 77, 78, 79,
321 * 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
322 * 90, 91, 92, 93, 94, 95, 96, 97, 98, 99)
323 */
324 GPIO_FN_MFIv6, /* see MSEL4CR 6 */
325 GPIO_FN_MFIv4, /* see MSEL4CR 6 */
326
327 GPIO_FN_MEMC_CS0, GPIO_FN_MEMC_BUSCLK_MEMC_A0,
328 GPIO_FN_MEMC_CS1_MEMC_A1, GPIO_FN_MEMC_ADV_MEMC_DREQ0,
329 GPIO_FN_MEMC_WAIT_MEMC_DREQ1, GPIO_FN_MEMC_NOE,
330 GPIO_FN_MEMC_NWE, GPIO_FN_MEMC_INT,
331
332 GPIO_FN_MEMC_AD0, GPIO_FN_MEMC_AD1, GPIO_FN_MEMC_AD2,
333 GPIO_FN_MEMC_AD3, GPIO_FN_MEMC_AD4, GPIO_FN_MEMC_AD5,
334 GPIO_FN_MEMC_AD6, GPIO_FN_MEMC_AD7, GPIO_FN_MEMC_AD8,
335 GPIO_FN_MEMC_AD9, GPIO_FN_MEMC_AD10, GPIO_FN_MEMC_AD11,
336 GPIO_FN_MEMC_AD12, GPIO_FN_MEMC_AD13, GPIO_FN_MEMC_AD14,
337 GPIO_FN_MEMC_AD15,
338
339 /* SIM (PORT 94, 95, 98) */
340 GPIO_FN_SIM_RST, GPIO_FN_SIM_CLK, GPIO_FN_SIM_D,
341
342 /* TPU (PORT 93, 99, 112, 160, 161) */
343 GPIO_FN_TPU0TO0, GPIO_FN_TPU0TO1,
344 GPIO_FN_TPU0TO2_93, GPIO_FN_TPU0TO2_99,
345 GPIO_FN_TPU0TO3,
346
347 /* I2C2 (PORT 110, 111) */
348 GPIO_FN_I2C_SCL2, GPIO_FN_I2C_SDA2,
349
350 /* I2C3(1) (PORT 114, 115) */
351 GPIO_FN_I2C_SCL3, GPIO_FN_I2C_SDA3,
352
353 /* I2C3(2) (PORT 137, 145) */
354 GPIO_FN_I2C_SCL3S, GPIO_FN_I2C_SDA3S,
355
356 /* I2C4(2) (PORT 116, 117) */
357 GPIO_FN_I2C_SCL4, GPIO_FN_I2C_SDA4,
358
359 /* I2C4(2) (PORT 146, 147) */
360 GPIO_FN_I2C_SCL4S, GPIO_FN_I2C_SDA4S,
361
362 /*
363 * KEYSC (PORT 121, 122, 123, 124, 125, 126, 127, 128, 129,
364 * 130, 131, 132, 133, 134, 135, 136)
365 */
366 GPIO_FN_KEYOUT0, GPIO_FN_KEYIN0_121, GPIO_FN_KEYIN0_136,
367 GPIO_FN_KEYOUT1, GPIO_FN_KEYIN1_122, GPIO_FN_KEYIN1_135,
368 GPIO_FN_KEYOUT2, GPIO_FN_KEYIN2_123, GPIO_FN_KEYIN2_134,
369 GPIO_FN_KEYOUT3, GPIO_FN_KEYIN3_124, GPIO_FN_KEYIN3_133,
370 GPIO_FN_KEYOUT4, GPIO_FN_KEYIN4,
371 GPIO_FN_KEYOUT5, GPIO_FN_KEYIN5,
372 GPIO_FN_KEYOUT6, GPIO_FN_KEYIN6,
373 GPIO_FN_KEYOUT7, GPIO_FN_KEYIN7,
374
375 /*
376 * LCDC (PORT 121, 122, 123, 124, 125, 126, 127, 128, 129,
377 * 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
378 * 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
379 * 150, 151)
380 */
381 GPIO_FN_LCDC0_SELECT, /* LCDC 0 */
382 GPIO_FN_LCDC1_SELECT, /* LCDC 1 */
383 GPIO_FN_LCDHSYN, GPIO_FN_LCDCS, GPIO_FN_LCDVSYN,
384 GPIO_FN_LCDDCK, GPIO_FN_LCDWR, GPIO_FN_LCDRD,
385 GPIO_FN_LCDDISP, GPIO_FN_LCDRS, GPIO_FN_LCDLCLK,
386 GPIO_FN_LCDDON,
387
388 GPIO_FN_LCDD0, GPIO_FN_LCDD1, GPIO_FN_LCDD2, GPIO_FN_LCDD3,
389 GPIO_FN_LCDD4, GPIO_FN_LCDD5, GPIO_FN_LCDD6, GPIO_FN_LCDD7,
390 GPIO_FN_LCDD8, GPIO_FN_LCDD9, GPIO_FN_LCDD10, GPIO_FN_LCDD11,
391 GPIO_FN_LCDD12, GPIO_FN_LCDD13, GPIO_FN_LCDD14, GPIO_FN_LCDD15,
392 GPIO_FN_LCDD16, GPIO_FN_LCDD17, GPIO_FN_LCDD18, GPIO_FN_LCDD19,
393 GPIO_FN_LCDD20, GPIO_FN_LCDD21, GPIO_FN_LCDD22, GPIO_FN_LCDD23,
394
395 /* IRDA (PORT 139, 140, 141, 142) */
396 GPIO_FN_IRDA_OUT, GPIO_FN_IRDA_IN, GPIO_FN_IRDA_FIRSEL,
397 GPIO_FN_IROUT_139, GPIO_FN_IROUT_140,
398
399 /* TSIF1 (PORT 156, 157, 158, 159) */
400 GPIO_FN_TS0_1SELECT, /* TSIF0 - 1 select */
401 GPIO_FN_TS0_2SELECT, /* TSIF0 - 2 select */
402 GPIO_FN_TS1_1SELECT, /* TSIF1 - 1 select */
403 GPIO_FN_TS1_2SELECT, /* TSIF1 - 2 select */
404
405 GPIO_FN_TS_SPSYNC1, GPIO_FN_TS_SDAT1,
406 GPIO_FN_TS_SDEN1, GPIO_FN_TS_SCK1,
407
408 /* TSIF2 (PORT 137, 145, 146, 147) */
409 GPIO_FN_TS_SPSYNC2, GPIO_FN_TS_SDAT2,
410 GPIO_FN_TS_SDEN2, GPIO_FN_TS_SCK2,
411
412 /* HDMI (PORT 169, 170) */
413 GPIO_FN_HDMI_HPD, GPIO_FN_HDMI_CEC,
414
415 /* SDHI0 (PORT 171, 172, 173, 174, 175, 176, 177, 178) */
416 GPIO_FN_SDHICLK0, GPIO_FN_SDHICD0,
417 GPIO_FN_SDHICMD0, GPIO_FN_SDHIWP0,
418 GPIO_FN_SDHID0_0, GPIO_FN_SDHID0_1,
419 GPIO_FN_SDHID0_2, GPIO_FN_SDHID0_3,
420
421 /* SDHI1 (PORT 179, 180, 181, 182, 183, 184) */
422 GPIO_FN_SDHICLK1, GPIO_FN_SDHICMD1, GPIO_FN_SDHID1_0,
423 GPIO_FN_SDHID1_1, GPIO_FN_SDHID1_2, GPIO_FN_SDHID1_3,
424
425 /* SDHI2 (PORT 185, 186, 187, 188, 189, 190) */
426 GPIO_FN_SDHICLK2, GPIO_FN_SDHICMD2, GPIO_FN_SDHID2_0,
427 GPIO_FN_SDHID2_1, GPIO_FN_SDHID2_2, GPIO_FN_SDHID2_3,
428
429 /* SDENC see MSEL4CR 19 */
430 GPIO_FN_SDENC_CPG,
431 GPIO_FN_SDENC_DV_CLKI,
432};
433
434#endif /* __ASM_SH7372_H__ */
diff --git a/arch/arm/mach-shmobile/include/mach/sh7377.h b/arch/arm/mach-shmobile/include/mach/sh7377.h
new file mode 100644
index 000000000000..f580e227dd1c
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/sh7377.h
@@ -0,0 +1,360 @@
1#ifndef __ASM_SH7377_H__
2#define __ASM_SH7377_H__
3
4/* Pin Function Controller:
5 * GPIO_FN_xx - GPIO used to select pin function
6 * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
7 */
8enum {
9 /* 55-1 -> 55-5 (GPIO) */
10 GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
11 GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
12
13 GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
14 GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
15
16 GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
17 GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
18
19 GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
20 GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
21
22 GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
23 GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
24
25 GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
26 GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
27
28 GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
29 GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
30
31 GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
32 GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
33
34 GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
35 GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
36
37 GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
38 GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
39
40 GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
41 GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
42
43 GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
44 GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118,
45
46 GPIO_PORT128, GPIO_PORT129,
47
48 GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
49 GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
50
51 GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
52 GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
53
54 GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
55 GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
56
57 GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
58
59 GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
60 GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,
61
62 GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
63 GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,
64
65 GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214,
66 GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219,
67
68 GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT223, GPIO_PORT224,
69 GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229,
70
71 GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234,
72 GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239,
73
74 GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244,
75 GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249,
76
77 GPIO_PORT250, GPIO_PORT251, GPIO_PORT252, GPIO_PORT253, GPIO_PORT254,
78 GPIO_PORT255, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259,
79
80 GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264,
81
82 /* Special Pull-up / Pull-down Functions */
83 GPIO_FN_PORT66_KEYIN0_PU, GPIO_FN_PORT67_KEYIN1_PU,
84 GPIO_FN_PORT68_KEYIN2_PU, GPIO_FN_PORT69_KEYIN3_PU,
85 GPIO_FN_PORT70_KEYIN4_PU, GPIO_FN_PORT71_KEYIN5_PU,
86 GPIO_FN_PORT72_KEYIN6_PU,
87
88 /* 55-1 (FN) */
89 GPIO_FN_VBUS_0,
90 GPIO_FN_CPORT0,
91 GPIO_FN_CPORT1,
92 GPIO_FN_CPORT2,
93 GPIO_FN_CPORT3,
94 GPIO_FN_CPORT4,
95 GPIO_FN_CPORT5,
96 GPIO_FN_CPORT6,
97 GPIO_FN_CPORT7,
98 GPIO_FN_CPORT8,
99 GPIO_FN_CPORT9,
100 GPIO_FN_CPORT10,
101 GPIO_FN_CPORT11, GPIO_FN_SIN2,
102 GPIO_FN_CPORT12, GPIO_FN_XCTS2,
103 GPIO_FN_CPORT13, GPIO_FN_RFSPO4,
104 GPIO_FN_CPORT14, GPIO_FN_RFSPO5,
105 GPIO_FN_CPORT15, GPIO_FN_SCIFA0_SCK, GPIO_FN_GPS_AGC2,
106 GPIO_FN_CPORT16, GPIO_FN_SCIFA0_TXD, GPIO_FN_GPS_AGC3,
107 GPIO_FN_CPORT17_IC_OE, GPIO_FN_SOUT2,
108 GPIO_FN_CPORT18, GPIO_FN_XRTS2, GPIO_FN_PORT19_VIO_CKO2,
109 GPIO_FN_CPORT19_MPORT1,
110 GPIO_FN_CPORT20, GPIO_FN_RFSPO6,
111 GPIO_FN_CPORT21, GPIO_FN_STATUS0,
112 GPIO_FN_CPORT22, GPIO_FN_STATUS1,
113 GPIO_FN_CPORT23, GPIO_FN_STATUS2, GPIO_FN_RFSPO7,
114 GPIO_FN_B_SYNLD1,
115 GPIO_FN_B_SYNLD2, GPIO_FN_SYSENMSK,
116 GPIO_FN_XMAINPS,
117 GPIO_FN_XDIVPS,
118 GPIO_FN_XIDRST,
119 GPIO_FN_IDCLK, GPIO_FN_IC_DP,
120 GPIO_FN_IDIO, GPIO_FN_IC_DM,
121 GPIO_FN_SOUT1, GPIO_FN_SCIFA4_TXD, GPIO_FN_M02_BERDAT,
122 GPIO_FN_SIN1, GPIO_FN_SCIFA4_RXD, GPIO_FN_XWUP,
123 GPIO_FN_XRTS1, GPIO_FN_SCIFA4_RTS, GPIO_FN_M03_BERCLK,
124 GPIO_FN_XCTS1, GPIO_FN_SCIFA4_CTS,
125 GPIO_FN_PCMCLKO,
126 GPIO_FN_SYNC8KO,
127
128 /* 55-2 (FN) */
129 GPIO_FN_DNPCM_A,
130 GPIO_FN_UPPCM_A,
131 GPIO_FN_VACK,
132 GPIO_FN_XTALB1L,
133 GPIO_FN_GPS_AGC1, GPIO_FN_SCIFA0_RTS,
134 GPIO_FN_GPS_AGC4, GPIO_FN_SCIFA0_RXD,
135 GPIO_FN_GPS_PWRDOWN, GPIO_FN_SCIFA0_CTS,
136 GPIO_FN_GPS_IM,
137 GPIO_FN_GPS_IS,
138 GPIO_FN_GPS_QM,
139 GPIO_FN_GPS_QS,
140 GPIO_FN_FMSOCK, GPIO_FN_PORT49_IRDA_OUT, GPIO_FN_PORT49_IROUT,
141 GPIO_FN_FMSOOLR, GPIO_FN_BBIF2_TSYNC2, GPIO_FN_TPU2TO2, GPIO_FN_IPORT3,
142 GPIO_FN_FMSIOLR,
143 GPIO_FN_FMSOOBT, GPIO_FN_BBIF2_TSCK2, GPIO_FN_TPU2TO3, GPIO_FN_OPORT1,
144 GPIO_FN_FMSIOBT,
145 GPIO_FN_FMSOSLD, GPIO_FN_BBIF2_TXD2, GPIO_FN_OPORT2,
146 GPIO_FN_FMSOILR, GPIO_FN_PORT53_IRDA_IN, GPIO_FN_TPU3TO3,
147 GPIO_FN_OPORT3, GPIO_FN_FMSIILR,
148 GPIO_FN_FMSOIBT, GPIO_FN_PORT54_IRDA_FIRSEL, GPIO_FN_TPU3TO2,
149 GPIO_FN_FMSIIBT,
150 GPIO_FN_FMSISLD, GPIO_FN_MFG0_OUT1, GPIO_FN_TPU0TO0,
151 GPIO_FN_A0_EA0, GPIO_FN_BS,
152 GPIO_FN_A12_EA12, GPIO_FN_PORT58_VIO_CKOR, GPIO_FN_TPU4TO2,
153 GPIO_FN_A13_EA13, GPIO_FN_PORT59_IROUT, GPIO_FN_MFG0_OUT2,
154 GPIO_FN_TPU0TO1,
155 GPIO_FN_A14_EA14, GPIO_FN_PORT60_KEYOUT5,
156 GPIO_FN_A15_EA15, GPIO_FN_PORT61_KEYOUT4,
157 GPIO_FN_A16_EA16, GPIO_FN_PORT62_KEYOUT3, GPIO_FN_MSIOF0_SS1,
158 GPIO_FN_A17_EA17, GPIO_FN_PORT63_KEYOUT2, GPIO_FN_MSIOF0_TSYNC,
159 GPIO_FN_A18_EA18, GPIO_FN_PORT64_KEYOUT1, GPIO_FN_MSIOF0_TSCK,
160 GPIO_FN_A19_EA19, GPIO_FN_PORT65_KEYOUT0, GPIO_FN_MSIOF0_TXD,
161 GPIO_FN_A20_EA20, GPIO_FN_PORT66_KEYIN0, GPIO_FN_MSIOF0_RSCK,
162 GPIO_FN_A21_EA21, GPIO_FN_PORT67_KEYIN1, GPIO_FN_MSIOF0_RSYNC,
163 GPIO_FN_A22_EA22, GPIO_FN_PORT68_KEYIN2, GPIO_FN_MSIOF0_MCK0,
164 GPIO_FN_A23_EA23, GPIO_FN_PORT69_KEYIN3, GPIO_FN_MSIOF0_MCK1,
165 GPIO_FN_A24_EA24, GPIO_FN_PORT70_KEYIN4, GPIO_FN_MSIOF0_RXD,
166 GPIO_FN_A25_EA25, GPIO_FN_PORT71_KEYIN5, GPIO_FN_MSIOF0_SS2,
167 GPIO_FN_A26, GPIO_FN_PORT72_KEYIN6,
168 GPIO_FN_D0_ED0_NAF0,
169 GPIO_FN_D1_ED1_NAF1,
170 GPIO_FN_D2_ED2_NAF2,
171 GPIO_FN_D3_ED3_NAF3,
172 GPIO_FN_D4_ED4_NAF4,
173 GPIO_FN_D5_ED5_NAF5,
174 GPIO_FN_D6_ED6_NAF6,
175 GPIO_FN_D7_ED7_NAF7,
176 GPIO_FN_D8_ED8_NAF8,
177 GPIO_FN_D9_ED9_NAF9,
178 GPIO_FN_D10_ED10_NAF10,
179 GPIO_FN_D11_ED11_NAF11,
180 GPIO_FN_D12_ED12_NAF12,
181 GPIO_FN_D13_ED13_NAF13,
182 GPIO_FN_D14_ED14_NAF14,
183 GPIO_FN_D15_ED15_NAF15,
184 GPIO_FN_CS4,
185 GPIO_FN_CS5A, GPIO_FN_FMSICK,
186 GPIO_FN_CS5B, GPIO_FN_FCE1,
187
188 /* 55-3 (FN) */
189 GPIO_FN_CS6B, GPIO_FN_XCS2, GPIO_FN_CS6A, GPIO_FN_DACK0,
190 GPIO_FN_FCE0,
191 GPIO_FN_WAIT, GPIO_FN_DREQ0,
192 GPIO_FN_RD_XRD,
193 GPIO_FN_WE0_XWR0_FWE,
194 GPIO_FN_WE1_XWR1,
195 GPIO_FN_FRB,
196 GPIO_FN_CKO,
197 GPIO_FN_NBRSTOUT,
198 GPIO_FN_NBRST,
199 GPIO_FN_GPS_EPPSIN,
200 GPIO_FN_LATCHPULSE,
201 GPIO_FN_LTESIGNAL,
202 GPIO_FN_LEGACYSTATE,
203 GPIO_FN_TCKON,
204 GPIO_FN_VIO_VD, GPIO_FN_PORT128_KEYOUT0, GPIO_FN_IPORT0,
205 GPIO_FN_VIO_HD, GPIO_FN_PORT129_KEYOUT1, GPIO_FN_IPORT1,
206 GPIO_FN_VIO_D0, GPIO_FN_PORT130_KEYOUT2, GPIO_FN_PORT130_MSIOF2_RXD,
207 GPIO_FN_VIO_D1, GPIO_FN_PORT131_KEYOUT3, GPIO_FN_PORT131_MSIOF2_SS1,
208 GPIO_FN_VIO_D2, GPIO_FN_PORT132_KEYOUT4, GPIO_FN_PORT132_MSIOF2_SS2,
209 GPIO_FN_VIO_D3, GPIO_FN_PORT133_KEYOUT5, GPIO_FN_PORT133_MSIOF2_TSYNC,
210 GPIO_FN_VIO_D4, GPIO_FN_PORT134_KEYIN0, GPIO_FN_PORT134_MSIOF2_TXD,
211 GPIO_FN_VIO_D5, GPIO_FN_PORT135_KEYIN1, GPIO_FN_PORT135_MSIOF2_TSCK,
212 GPIO_FN_VIO_D6, GPIO_FN_PORT136_KEYIN2,
213 GPIO_FN_VIO_D7, GPIO_FN_PORT137_KEYIN3,
214 GPIO_FN_VIO_D8, GPIO_FN_M9_SLCD_A01, GPIO_FN_PORT138_FSIAOMC,
215 GPIO_FN_VIO_D9, GPIO_FN_M10_SLCD_CK1, GPIO_FN_PORT139_FSIAOLR,
216 GPIO_FN_VIO_D10, GPIO_FN_M11_SLCD_SO1, GPIO_FN_TPU0TO2,
217 GPIO_FN_PORT140_FSIAOBT,
218 GPIO_FN_VIO_D11, GPIO_FN_M12_SLCD_CE1, GPIO_FN_TPU0TO3,
219 GPIO_FN_PORT141_FSIAOSLD,
220 GPIO_FN_VIO_D12, GPIO_FN_M13_BSW, GPIO_FN_PORT142_FSIACK,
221 GPIO_FN_VIO_D13, GPIO_FN_M14_GSW, GPIO_FN_PORT143_FSIAILR,
222 GPIO_FN_VIO_D14, GPIO_FN_M15_RSW, GPIO_FN_PORT144_FSIAIBT,
223 GPIO_FN_VIO_D15, GPIO_FN_TPU1TO3, GPIO_FN_PORT145_FSIAISLD,
224 GPIO_FN_VIO_CLK, GPIO_FN_PORT146_KEYIN4, GPIO_FN_IPORT2,
225 GPIO_FN_VIO_FIELD, GPIO_FN_PORT147_KEYIN5,
226 GPIO_FN_VIO_CKO, GPIO_FN_PORT148_KEYIN6,
227 GPIO_FN_A27, GPIO_FN_RDWR_XWE, GPIO_FN_MFG0_IN1,
228 GPIO_FN_MFG0_IN2,
229 GPIO_FN_TS_SPSYNC3, GPIO_FN_MSIOF2_RSCK,
230 GPIO_FN_TS_SDAT3, GPIO_FN_MSIOF2_RSYNC,
231 GPIO_FN_TPU1TO2, GPIO_FN_TS_SDEN3, GPIO_FN_PORT153_MSIOF2_SS1,
232 GPIO_FN_SOUT3, GPIO_FN_SCIFA2_TXD1, GPIO_FN_MSIOF2_MCK0,
233 GPIO_FN_SIN3, GPIO_FN_SCIFA2_RXD1, GPIO_FN_MSIOF2_MCK1,
234 GPIO_FN_XRTS3, GPIO_FN_SCIFA2_RTS1, GPIO_FN_PORT156_MSIOF2_SS2,
235 GPIO_FN_XCTS3, GPIO_FN_SCIFA2_CTS1, GPIO_FN_PORT157_MSIOF2_RXD,
236
237 /* 55-4 (FN) */
238 GPIO_FN_DINT, GPIO_FN_SCIFA2_SCK1, GPIO_FN_TS_SCK3,
239 GPIO_FN_PORT159_SCIFB_SCK, GPIO_FN_PORT159_SCIFA5_SCK, GPIO_FN_NMI,
240 GPIO_FN_PORT160_SCIFB_TXD, GPIO_FN_PORT160_SCIFA5_TXD, GPIO_FN_SOUT0,
241 GPIO_FN_PORT161_SCIFB_CTS, GPIO_FN_PORT161_SCIFA5_CTS, GPIO_FN_XCTS0,
242 GPIO_FN_MFG3_IN2,
243 GPIO_FN_PORT162_SCIFB_RXD, GPIO_FN_PORT162_SCIFA5_RXD, GPIO_FN_SIN0,
244 GPIO_FN_MFG3_IN1,
245 GPIO_FN_PORT163_SCIFB_RTS, GPIO_FN_PORT163_SCIFA5_RTS, GPIO_FN_XRTS0,
246 GPIO_FN_MFG3_OUT1,
247 GPIO_FN_TPU3TO0,
248 GPIO_FN_LCDD0, GPIO_FN_PORT192_KEYOUT0, GPIO_FN_EXT_CKI,
249 GPIO_FN_LCDD1, GPIO_FN_PORT193_KEYOUT1, GPIO_FN_PORT193_SCIFA5_CTS,
250 GPIO_FN_BBIF2_TSYNC1,
251 GPIO_FN_LCDD2, GPIO_FN_PORT194_KEYOUT2, GPIO_FN_PORT194_SCIFA5_RTS,
252 GPIO_FN_BBIF2_TSCK1,
253 GPIO_FN_LCDD3, GPIO_FN_PORT195_KEYOUT3, GPIO_FN_PORT195_SCIFA5_RXD,
254 GPIO_FN_BBIF2_TXD1,
255 GPIO_FN_LCDD4, GPIO_FN_PORT196_KEYOUT4, GPIO_FN_PORT196_SCIFA5_TXD,
256 GPIO_FN_LCDD5, GPIO_FN_PORT197_KEYOUT5, GPIO_FN_PORT197_SCIFA5_SCK,
257 GPIO_FN_MFG2_OUT2, GPIO_FN_TPU2TO1,
258 GPIO_FN_LCDD6, GPIO_FN_XWR2,
259 GPIO_FN_LCDD7, GPIO_FN_TPU4TO1, GPIO_FN_MFG4_OUT2, GPIO_FN_XWR3,
260 GPIO_FN_LCDD8, GPIO_FN_PORT200_KEYIN0, GPIO_FN_VIO_DR0, GPIO_FN_D16,
261 GPIO_FN_ED16,
262 GPIO_FN_LCDD9, GPIO_FN_PORT201_KEYIN1, GPIO_FN_VIO_DR1, GPIO_FN_D17,
263 GPIO_FN_ED17,
264 GPIO_FN_LCDD10, GPIO_FN_PORT202_KEYIN2, GPIO_FN_VIO_DR2, GPIO_FN_D18,
265 GPIO_FN_ED18,
266 GPIO_FN_LCDD11, GPIO_FN_PORT203_KEYIN3, GPIO_FN_VIO_DR3, GPIO_FN_D19,
267 GPIO_FN_ED19,
268 GPIO_FN_LCDD12, GPIO_FN_PORT204_KEYIN4, GPIO_FN_VIO_DR4, GPIO_FN_D20,
269 GPIO_FN_ED20,
270 GPIO_FN_LCDD13, GPIO_FN_PORT205_KEYIN5, GPIO_FN_VIO_DR5, GPIO_FN_D21,
271 GPIO_FN_ED21,
272 GPIO_FN_LCDD14, GPIO_FN_PORT206_KEYIN6, GPIO_FN_VIO_DR6, GPIO_FN_D22,
273 GPIO_FN_ED22,
274 GPIO_FN_LCDD15, GPIO_FN_PORT207_MSIOF0L_SS1, GPIO_FN_PORT207_KEYOUT0,
275 GPIO_FN_VIO_DR7,
276 GPIO_FN_D23, GPIO_FN_ED23,
277 GPIO_FN_LCDD16, GPIO_FN_PORT208_MSIOF0L_SS2, GPIO_FN_PORT208_KEYOUT1,
278 GPIO_FN_VIO_VDR,
279 GPIO_FN_D24, GPIO_FN_ED24,
280 GPIO_FN_LCDD17, GPIO_FN_PORT209_KEYOUT2, GPIO_FN_VIO_HDR, GPIO_FN_D25,
281 GPIO_FN_ED25,
282 GPIO_FN_LCDD18, GPIO_FN_DREQ2, GPIO_FN_PORT210_MSIOF0L_SS1, GPIO_FN_D26,
283 GPIO_FN_ED26,
284 GPIO_FN_LCDD19, GPIO_FN_PORT211_MSIOF0L_SS2, GPIO_FN_D27, GPIO_FN_ED27,
285 GPIO_FN_LCDD20, GPIO_FN_TS_SPSYNC1, GPIO_FN_MSIOF0L_MCK0, GPIO_FN_D28,
286 GPIO_FN_ED28,
287 GPIO_FN_LCDD21, GPIO_FN_TS_SDAT1, GPIO_FN_MSIOF0L_MCK1, GPIO_FN_D29,
288 GPIO_FN_ED29,
289 GPIO_FN_LCDD22, GPIO_FN_TS_SDEN1, GPIO_FN_MSIOF0L_RSCK, GPIO_FN_D30,
290 GPIO_FN_ED30,
291 GPIO_FN_LCDD23, GPIO_FN_TS_SCK1, GPIO_FN_MSIOF0L_RSYNC, GPIO_FN_D31,
292 GPIO_FN_ED31,
293 GPIO_FN_LCDDCK, GPIO_FN_LCDWR, GPIO_FN_PORT216_KEYOUT3,
294 GPIO_FN_VIO_CLKR,
295 GPIO_FN_LCDRD, GPIO_FN_DACK2, GPIO_FN_MSIOF0L_TSYNC,
296 GPIO_FN_LCDHSYN, GPIO_FN_LCDCS, GPIO_FN_LCDCS2, GPIO_FN_DACK3,
297 GPIO_FN_PORT218_VIO_CKOR, GPIO_FN_PORT218_KEYOUT4,
298 GPIO_FN_LCDDISP, GPIO_FN_LCDRS, GPIO_FN_DREQ3, GPIO_FN_MSIOF0L_TSCK,
299 GPIO_FN_LCDVSYN, GPIO_FN_LCDVSYN2, GPIO_FN_PORT220_KEYOUT5,
300 GPIO_FN_LCDLCLK, GPIO_FN_DREQ1, GPIO_FN_PWEN, GPIO_FN_MSIOF0L_RXD,
301 GPIO_FN_LCDDON, GPIO_FN_LCDDON2, GPIO_FN_DACK1, GPIO_FN_OVCN,
302 GPIO_FN_MSIOF0L_TXD,
303 GPIO_FN_SCIFA1_TXD, GPIO_FN_OVCN2,
304 GPIO_FN_EXTLP, GPIO_FN_SCIFA1_SCK, GPIO_FN_USBTERM,
305 GPIO_FN_PORT226_VIO_CKO2,
306 GPIO_FN_SCIFA1_RTS, GPIO_FN_IDIN,
307 GPIO_FN_SCIFA1_RXD,
308 GPIO_FN_SCIFA1_CTS, GPIO_FN_MFG1_IN1,
309 GPIO_FN_MSIOF1_TXD, GPIO_FN_SCIFA2_TXD2, GPIO_FN_PORT230_FSIAOMC,
310 GPIO_FN_MSIOF1_TSYNC, GPIO_FN_SCIFA2_CTS2, GPIO_FN_PORT231_FSIAOLR,
311 GPIO_FN_MSIOF1_TSCK, GPIO_FN_SCIFA2_SCK2, GPIO_FN_PORT232_FSIAOBT,
312 GPIO_FN_MSIOF1_RXD, GPIO_FN_SCIFA2_RXD2, GPIO_FN_GPS_VCOTRIG,
313 GPIO_FN_PORT233_FSIACK,
314 GPIO_FN_MSIOF1_RSCK, GPIO_FN_SCIFA2_RTS2, GPIO_FN_PORT234_FSIAOSLD,
315 GPIO_FN_MSIOF1_RSYNC, GPIO_FN_OPORT0, GPIO_FN_MFG1_IN2,
316 GPIO_FN_PORT235_FSIAILR,
317 GPIO_FN_MSIOF1_MCK0, GPIO_FN_I2C_SDA2, GPIO_FN_PORT236_FSIAIBT,
318 GPIO_FN_MSIOF1_MCK1, GPIO_FN_I2C_SCL2, GPIO_FN_PORT237_FSIAISLD,
319 GPIO_FN_MSIOF1_SS1, GPIO_FN_EDBGREQ3,
320
321 /* 55-5 (FN) */
322 GPIO_FN_MSIOF1_SS2,
323 GPIO_FN_SCIFA6_TXD,
324 GPIO_FN_PORT241_IRDA_OUT, GPIO_FN_PORT241_IROUT, GPIO_FN_MFG4_OUT1,
325 GPIO_FN_TPU4TO0,
326 GPIO_FN_PORT242_IRDA_IN, GPIO_FN_MFG4_IN2,
327 GPIO_FN_PORT243_IRDA_FIRSEL, GPIO_FN_PORT243_VIO_CKO2,
328 GPIO_FN_PORT244_SCIFA5_CTS, GPIO_FN_MFG2_IN1, GPIO_FN_PORT244_SCIFB_CTS,
329 GPIO_FN_PORT244_MSIOF2_RXD,
330 GPIO_FN_PORT245_SCIFA5_RTS, GPIO_FN_MFG2_IN2, GPIO_FN_PORT245_SCIFB_RTS,
331 GPIO_FN_PORT245_MSIOF2_TXD,
332 GPIO_FN_PORT246_SCIFA5_RXD, GPIO_FN_MFG1_OUT1,
333 GPIO_FN_PORT246_SCIFB_RXD, GPIO_FN_TPU1TO0,
334 GPIO_FN_PORT247_SCIFA5_TXD, GPIO_FN_MFG3_OUT2,
335 GPIO_FN_PORT247_SCIFB_TXD, GPIO_FN_TPU3TO1,
336 GPIO_FN_PORT248_SCIFA5_SCK, GPIO_FN_MFG2_OUT1,
337 GPIO_FN_PORT248_SCIFB_SCK, GPIO_FN_TPU2TO0,
338 GPIO_FN_PORT248_MSIOF2_TSCK,
339 GPIO_FN_PORT249_IROUT, GPIO_FN_MFG4_IN1, GPIO_FN_PORT249_MSIOF2_TSYNC,
340 GPIO_FN_SDHICLK0, GPIO_FN_TCK2_SWCLK_MC0,
341 GPIO_FN_SDHICD0,
342 GPIO_FN_SDHID0_0, GPIO_FN_TMS2_SWDIO_MC0,
343 GPIO_FN_SDHID0_1, GPIO_FN_TDO2_SWO0_MC0,
344 GPIO_FN_SDHID0_2, GPIO_FN_TDI2,
345 GPIO_FN_SDHID0_3, GPIO_FN_RTCK2_SWO1_MC0,
346 GPIO_FN_SDHICMD0, GPIO_FN_TRST2,
347 GPIO_FN_SDHIWP0, GPIO_FN_EDBGREQ2,
348 GPIO_FN_SDHICLK1, GPIO_FN_TCK3_SWCLK_MC1,
349 GPIO_FN_SDHID1_0, GPIO_FN_M11_SLCD_SO2, GPIO_FN_TS_SPSYNC2,
350 GPIO_FN_TMS3_SWDIO_MC1,
351 GPIO_FN_SDHID1_1, GPIO_FN_M9_SLCD_A02, GPIO_FN_TS_SDAT2,
352 GPIO_FN_TDO3_SWO0_MC1,
353 GPIO_FN_SDHID1_2, GPIO_FN_M10_SLCD_CK2, GPIO_FN_TS_SDEN2, GPIO_FN_TDI3,
354 GPIO_FN_SDHID1_3, GPIO_FN_M12_SLCD_CE2, GPIO_FN_TS_SCK2,
355 GPIO_FN_RTCK3_SWO1_MC1,
356 GPIO_FN_SDHICMD1, GPIO_FN_TRST3,
357 GPIO_FN_RESETOUTS,
358};
359
360#endif /* __ASM_SH7377_H__ */
diff --git a/arch/arm/mach-shmobile/include/mach/system.h b/arch/arm/mach-shmobile/include/mach/system.h
new file mode 100644
index 000000000000..76a687eeaa22
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/system.h
@@ -0,0 +1,14 @@
1#ifndef __ASM_ARCH_SYSTEM_H
2#define __ASM_ARCH_SYSTEM_H
3
4static inline void arch_idle(void)
5{
6 cpu_do_idle();
7}
8
9static inline void arch_reset(char mode, const char *cmd)
10{
11 cpu_reset(0);
12}
13
14#endif
diff --git a/arch/arm/mach-shmobile/include/mach/timex.h b/arch/arm/mach-shmobile/include/mach/timex.h
new file mode 100644
index 000000000000..ae0d8d825c23
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/timex.h
@@ -0,0 +1,6 @@
1#ifndef __ASM_MACH_TIMEX_H
2#define __ASM_MACH_TIMEX_H
3
4#define CLOCK_TICK_RATE 1193180 /* unused i8253 PIT value */
5
6#endif /* __ASM_MACH_TIMEX_H */
diff --git a/arch/arm/mach-shmobile/include/mach/uncompress.h b/arch/arm/mach-shmobile/include/mach/uncompress.h
new file mode 100644
index 000000000000..0bd7556b1387
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/uncompress.h
@@ -0,0 +1,21 @@
1#ifndef __ASM_MACH_UNCOMPRESS_H
2#define __ASM_MACH_UNCOMPRESS_H
3
4/*
5 * This does not append a newline
6 */
7static void putc(int c)
8{
9}
10
11static inline void flush(void)
12{
13}
14
15static void arch_decomp_setup(void)
16{
17}
18
19#define arch_decomp_wdog()
20
21#endif /* __ASM_MACH_UNCOMPRESS_H */
diff --git a/arch/arm/mach-shmobile/include/mach/vmalloc.h b/arch/arm/mach-shmobile/include/mach/vmalloc.h
new file mode 100644
index 000000000000..fb3c4f1ab252
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/vmalloc.h
@@ -0,0 +1,6 @@
1#ifndef __ASM_MACH_VMALLOC_H
2#define __ASM_MACH_VMALLOC_H
3
4#define VMALLOC_END (PAGE_OFFSET + 0x24000000)
5
6#endif /* __ASM_MACH_VMALLOC_H */
diff --git a/arch/arm/mach-shmobile/intc-sh7367.c b/arch/arm/mach-shmobile/intc-sh7367.c
new file mode 100644
index 000000000000..6a547b47aabb
--- /dev/null
+++ b/arch/arm/mach-shmobile/intc-sh7367.c
@@ -0,0 +1,270 @@
1/*
2 * sh7367 processor support - INTC hardware block
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/interrupt.h>
22#include <linux/irq.h>
23#include <linux/io.h>
24#include <linux/sh_intc.h>
25#include <asm/mach-types.h>
26#include <asm/mach/arch.h>
27
28enum {
29 UNUSED_INTCA = 0,
30
31 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
33 IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A,
34 DIRC,
35 CRYPT1_ERR, CRYPT2_STD,
36 IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1,
37 ARM11_IRQPMU, ARM11_COMMTX, ARM11_COMMRX,
38 ETM11_ACQCMP, ETM11_FULL,
39 MFI_MFIM, MFI_MFIS,
40 BBIF1, BBIF2,
41 USBDMAC_USHDMI,
42 USBHS_USHI0, USBHS_USHI1,
43 CMT1_CMT10, CMT1_CMT11, CMT1_CMT12, CMT1_CMT13, CMT2, CMT3,
44 KEYSC_KEY,
45 SCIFA0, SCIFA1, SCIFA2, SCIFA3,
46 MSIOF2, MSIOF1,
47 SCIFA4, SCIFA5, SCIFB,
48 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
49 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3,
50 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3,
51 MSU_MSU, MSU_MSU2,
52 IREM,
53 SIU,
54 SPU,
55 IRDA,
56 TPU0, TPU1, TPU2, TPU3, TPU4,
57 LCRC,
58 PINT1, PINT2,
59 TTI20,
60 MISTY,
61 DDM,
62 SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3,
63 RWDT0, RWDT1,
64 DMAC_1_DEI0, DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3,
65 DMAC_2_DEI4, DMAC_2_DEI5, DMAC_2_DADERR,
66 DMAC2_1_DEI0, DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3,
67 DMAC2_2_DEI4, DMAC2_2_DEI5, DMAC2_2_DADERR,
68 DMAC3_1_DEI0, DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3,
69 DMAC3_2_DEI4, DMAC3_2_DEI5, DMAC3_2_DADERR,
70
71 /* interrupt groups INTCA */
72 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2,
73 ETM11, ARM11, USBHS, FLCTL, IIC1, SDHI0, SDHI1, SDHI2,
74};
75
76static struct intc_vect intca_vectors[] = {
77 INTC_VECT(IRQ0A, 0x0200), INTC_VECT(IRQ1A, 0x0220),
78 INTC_VECT(IRQ2A, 0x0240), INTC_VECT(IRQ3A, 0x0260),
79 INTC_VECT(IRQ4A, 0x0280), INTC_VECT(IRQ5A, 0x02a0),
80 INTC_VECT(IRQ6A, 0x02c0), INTC_VECT(IRQ7A, 0x02e0),
81 INTC_VECT(IRQ8A, 0x0300), INTC_VECT(IRQ9A, 0x0320),
82 INTC_VECT(IRQ10A, 0x0340), INTC_VECT(IRQ11A, 0x0360),
83 INTC_VECT(IRQ12A, 0x0380), INTC_VECT(IRQ13A, 0x03a0),
84 INTC_VECT(IRQ14A, 0x03c0), INTC_VECT(IRQ15A, 0x03e0),
85 INTC_VECT(DIRC, 0x0560),
86 INTC_VECT(CRYPT1_ERR, 0x05e0),
87 INTC_VECT(CRYPT2_STD, 0x0700),
88 INTC_VECT(IIC1_ALI1, 0x0780), INTC_VECT(IIC1_TACKI1, 0x07a0),
89 INTC_VECT(IIC1_WAITI1, 0x07c0), INTC_VECT(IIC1_DTEI1, 0x07e0),
90 INTC_VECT(ARM11_IRQPMU, 0x0800), INTC_VECT(ARM11_COMMTX, 0x0840),
91 INTC_VECT(ARM11_COMMRX, 0x0860),
92 INTC_VECT(ETM11_ACQCMP, 0x0880), INTC_VECT(ETM11_FULL, 0x08a0),
93 INTC_VECT(MFI_MFIM, 0x0900), INTC_VECT(MFI_MFIS, 0x0920),
94 INTC_VECT(BBIF1, 0x0940), INTC_VECT(BBIF2, 0x0960),
95 INTC_VECT(USBDMAC_USHDMI, 0x0a00),
96 INTC_VECT(USBHS_USHI0, 0x0a20), INTC_VECT(USBHS_USHI1, 0x0a40),
97 INTC_VECT(CMT1_CMT10, 0x0b00), INTC_VECT(CMT1_CMT11, 0x0b20),
98 INTC_VECT(CMT1_CMT12, 0x0b40), INTC_VECT(CMT1_CMT13, 0x0b60),
99 INTC_VECT(CMT2, 0x0b80), INTC_VECT(CMT3, 0x0ba0),
100 INTC_VECT(KEYSC_KEY, 0x0be0),
101 INTC_VECT(SCIFA0, 0x0c00), INTC_VECT(SCIFA1, 0x0c20),
102 INTC_VECT(SCIFA2, 0x0c40), INTC_VECT(SCIFA3, 0x0c60),
103 INTC_VECT(MSIOF2, 0x0c80), INTC_VECT(MSIOF1, 0x0d00),
104 INTC_VECT(SCIFA4, 0x0d20), INTC_VECT(SCIFA5, 0x0d40),
105 INTC_VECT(SCIFB, 0x0d60),
106 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
107 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
108 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20),
109 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60),
110 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0),
111 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0),
112 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40),
113 INTC_VECT(IREM, 0x0f60),
114 INTC_VECT(SIU, 0x0fa0),
115 INTC_VECT(SPU, 0x0fc0),
116 INTC_VECT(IRDA, 0x0480),
117 INTC_VECT(TPU0, 0x04a0), INTC_VECT(TPU1, 0x04c0),
118 INTC_VECT(TPU2, 0x04e0), INTC_VECT(TPU3, 0x0500),
119 INTC_VECT(TPU4, 0x0520),
120 INTC_VECT(LCRC, 0x0540),
121 INTC_VECT(PINT1, 0x1000), INTC_VECT(PINT2, 0x1020),
122 INTC_VECT(TTI20, 0x1100),
123 INTC_VECT(MISTY, 0x1120),
124 INTC_VECT(DDM, 0x1140),
125 INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220),
126 INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260),
127 INTC_VECT(RWDT0, 0x1280), INTC_VECT(RWDT1, 0x12a0),
128 INTC_VECT(DMAC_1_DEI0, 0x2000), INTC_VECT(DMAC_1_DEI1, 0x2020),
129 INTC_VECT(DMAC_1_DEI2, 0x2040), INTC_VECT(DMAC_1_DEI3, 0x2060),
130 INTC_VECT(DMAC_2_DEI4, 0x2080), INTC_VECT(DMAC_2_DEI5, 0x20a0),
131 INTC_VECT(DMAC_2_DADERR, 0x20c0),
132 INTC_VECT(DMAC2_1_DEI0, 0x2100), INTC_VECT(DMAC2_1_DEI1, 0x2120),
133 INTC_VECT(DMAC2_1_DEI2, 0x2140), INTC_VECT(DMAC2_1_DEI3, 0x2160),
134 INTC_VECT(DMAC2_2_DEI4, 0x2180), INTC_VECT(DMAC2_2_DEI5, 0x21a0),
135 INTC_VECT(DMAC2_2_DADERR, 0x21c0),
136 INTC_VECT(DMAC3_1_DEI0, 0x2200), INTC_VECT(DMAC3_1_DEI1, 0x2220),
137 INTC_VECT(DMAC3_1_DEI2, 0x2240), INTC_VECT(DMAC3_1_DEI3, 0x2260),
138 INTC_VECT(DMAC3_2_DEI4, 0x2280), INTC_VECT(DMAC3_2_DEI5, 0x22a0),
139 INTC_VECT(DMAC3_2_DADERR, 0x22c0),
140};
141
142static struct intc_group intca_groups[] __initdata = {
143 INTC_GROUP(DMAC_1, DMAC_1_DEI0,
144 DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3),
145 INTC_GROUP(DMAC_2, DMAC_2_DEI4,
146 DMAC_2_DEI5, DMAC_2_DADERR),
147 INTC_GROUP(DMAC2_1, DMAC2_1_DEI0,
148 DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3),
149 INTC_GROUP(DMAC2_2, DMAC2_2_DEI4,
150 DMAC2_2_DEI5, DMAC2_2_DADERR),
151 INTC_GROUP(DMAC3_1, DMAC3_1_DEI0,
152 DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3),
153 INTC_GROUP(DMAC3_2, DMAC3_2_DEI4,
154 DMAC3_2_DEI5, DMAC3_2_DADERR),
155 INTC_GROUP(ETM11, ETM11_ACQCMP, ETM11_FULL),
156 INTC_GROUP(ARM11, ARM11_IRQPMU, ARM11_COMMTX, ARM11_COMMTX),
157 INTC_GROUP(USBHS, USBHS_USHI0, USBHS_USHI1),
158 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
159 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
160 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
161 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
162 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
163 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
164 SDHI1_SDHI1I2, SDHI1_SDHI1I3),
165 INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1,
166 SDHI2_SDHI2I2, SDHI2_SDHI2I3),
167};
168
169static struct intc_mask_reg intca_mask_registers[] = {
170 { 0xe6900040, 0xe6900060, 8, /* INTMSK00A / INTMSKCLR00A */
171 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
172 { 0xe6900044, 0xe6900064, 8, /* INTMSK10A / INTMSKCLR10A */
173 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
174 { 0xe6940080, 0xe69400c0, 8, /* IMR0A / IMCR0A */
175 { DMAC2_1_DEI3, DMAC2_1_DEI2, DMAC2_1_DEI1, DMAC2_1_DEI0,
176 ARM11_IRQPMU, 0, ARM11_COMMTX, ARM11_COMMRX } },
177 { 0xe6940084, 0xe69400c4, 8, /* IMR1A / IMCR1A */
178 { CRYPT1_ERR, CRYPT2_STD, DIRC, 0,
179 DMAC_1_DEI3, DMAC_1_DEI2, DMAC_1_DEI1, DMAC_1_DEI0 } },
180 { 0xe6940088, 0xe69400c8, 8, /* IMR2A / IMCR2A */
181 { PINT1, PINT2, 0, 0,
182 BBIF1, BBIF2, MFI_MFIS, MFI_MFIM } },
183 { 0xe694008c, 0xe69400cc, 8, /* IMR3A / IMCR3A */
184 { DMAC3_1_DEI3, DMAC3_1_DEI2, DMAC3_1_DEI1, DMAC3_1_DEI0,
185 DMAC3_2_DADERR, DMAC3_2_DEI5, DMAC3_2_DEI4, IRDA } },
186 { 0xe6940090, 0xe69400d0, 8, /* IMR4A / IMCR4A */
187 { DDM, 0, 0, 0,
188 0, 0, ETM11_FULL, ETM11_ACQCMP } },
189 { 0xe6940094, 0xe69400d4, 8, /* IMR5A / IMCR5A */
190 { KEYSC_KEY, DMAC_2_DADERR, DMAC_2_DEI5, DMAC_2_DEI4,
191 SCIFA3, SCIFA2, SCIFA1, SCIFA0 } },
192 { 0xe6940098, 0xe69400d8, 8, /* IMR6A / IMCR6A */
193 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
194 0, 0, MSIOF2, 0 } },
195 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
196 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0,
197 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
198 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
199 { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0,
200 TTI20, USBDMAC_USHDMI, SPU, SIU } },
201 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
202 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
203 CMT2, USBHS_USHI1, USBHS_USHI0, 0 } },
204 { 0xe69400a8, 0xe69400e8, 8, /* IMR10A / IMCR10A */
205 { 0, DMAC2_2_DADERR, DMAC2_2_DEI5, DMAC2_2_DEI4,
206 0, 0, 0, 0 } },
207 { 0xe69400ac, 0xe69400ec, 8, /* IMR11A / IMCR11A */
208 { IIC1_DTEI1, IIC1_WAITI1, IIC1_TACKI1, IIC1_ALI1,
209 LCRC, MSU_MSU2, IREM, MSU_MSU } },
210 { 0xe69400b0, 0xe69400f0, 8, /* IMR12A / IMCR12A */
211 { 0, 0, TPU0, TPU1,
212 TPU2, TPU3, TPU4, 0 } },
213 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */
214 { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0,
215 MISTY, CMT3, RWDT1, RWDT0 } },
216};
217
218static struct intc_prio_reg intca_prio_registers[] = {
219 { 0xe6900010, 0, 32, 4, /* INTPRI00A */
220 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
221 { 0xe6900014, 0, 32, 4, /* INTPRI10A */
222 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
223
224 { 0xe6940000, 0, 16, 4, /* IPRAA */ { DMAC3_1, DMAC3_2, CMT2, LCRC } },
225 { 0xe6940004, 0, 16, 4, /* IPRBA */ { IRDA, ETM11, BBIF1, BBIF2 } },
226 { 0xe6940008, 0, 16, 4, /* IPRCA */ { CRYPT1_ERR, CRYPT2_STD,
227 CMT1_CMT11, ARM11 } },
228 { 0xe694000c, 0, 16, 4, /* IPRDA */ { PINT1, PINT2,
229 CMT1_CMT12, TPU4 } },
230 { 0xe6940010, 0, 16, 4, /* IPREA */ { DMAC_1, MFI_MFIS,
231 MFI_MFIM, USBHS } },
232 { 0xe6940014, 0, 16, 4, /* IPRFA */ { KEYSC_KEY, DMAC_2,
233 0, CMT1_CMT10 } },
234 { 0xe6940018, 0, 16, 4, /* IPRGA */ { SCIFA0, SCIFA1,
235 SCIFA2, SCIFA3 } },
236 { 0xe694001c, 0, 16, 4, /* IPRGH */ { MSIOF2, USBDMAC_USHDMI,
237 FLCTL, SDHI0 } },
238 { 0xe6940020, 0, 16, 4, /* IPRIA */ { MSIOF1, SCIFA4, MSU_MSU, IIC1 } },
239 { 0xe6940024, 0, 16, 4, /* IPRJA */ { DMAC2_1, DMAC2_2, SIU, TTI20 } },
240 { 0xe6940028, 0, 16, 4, /* IPRKA */ { 0, CMT1_CMT13, IREM, SDHI1 } },
241 { 0xe694002c, 0, 16, 4, /* IPRLA */ { TPU0, TPU1, TPU2, TPU3 } },
242 { 0xe6940030, 0, 16, 4, /* IPRMA */ { MISTY, CMT3, RWDT1, RWDT0 } },
243 { 0xe6940034, 0, 16, 4, /* IPRNA */ { SCIFB, SCIFA5, SPU, DDM } },
244 { 0xe6940038, 0, 16, 4, /* IPROA */ { 0, 0, DIRC, SDHI2 } },
245};
246
247static struct intc_sense_reg intca_sense_registers[] __initdata = {
248 { 0xe6900000, 16, 2, /* ICR1A */
249 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
250 { 0xe6900004, 16, 2, /* ICR2A */
251 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
252};
253
254static struct intc_mask_reg intca_ack_registers[] __initdata = {
255 { 0xe6900020, 0, 8, /* INTREQ00A */
256 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
257 { 0xe6900024, 0, 8, /* INTREQ10A */
258 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
259};
260
261static DECLARE_INTC_DESC_ACK(intca_desc, "sh7367-intca",
262 intca_vectors, intca_groups,
263 intca_mask_registers, intca_prio_registers,
264 intca_sense_registers, intca_ack_registers);
265
266void __init sh7367_init_irq(void)
267{
268 /* INTCA */
269 register_intc_controller(&intca_desc);
270}
diff --git a/arch/arm/mach-shmobile/intc-sh7372.c b/arch/arm/mach-shmobile/intc-sh7372.c
new file mode 100644
index 000000000000..c57a923f97a6
--- /dev/null
+++ b/arch/arm/mach-shmobile/intc-sh7372.c
@@ -0,0 +1,369 @@
1/*
2 * sh7372 processor support - INTC hardware block
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/interrupt.h>
22#include <linux/irq.h>
23#include <linux/io.h>
24#include <linux/sh_intc.h>
25#include <asm/mach-types.h>
26#include <asm/mach/arch.h>
27
28enum {
29 UNUSED_INTCA = 0,
30
31 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
33 IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A,
34 IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A,
35 IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A,
36 DIRC,
37 CRYPT_STD,
38 IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1,
39 AP_ARM_IRQPMU, AP_ARM_COMMTX, AP_ARM_COMMRX,
40 MFI_MFIM, MFI_MFIS,
41 BBIF1, BBIF2,
42 USBHSDMAC0_USHDMI,
43 _3DG_SGX540,
44 CMT1_CMT10, CMT1_CMT11, CMT1_CMT12, CMT1_CMT13, CMT2, CMT3,
45 KEYSC_KEY,
46 SCIFA0, SCIFA1, SCIFA2, SCIFA3,
47 MSIOF2, MSIOF1,
48 SCIFA4, SCIFA5, SCIFB,
49 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
50 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3,
51 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2,
52 IRREM,
53 IRDA,
54 TPU0,
55 TTI20,
56 DDM,
57 SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3,
58 RWDT0,
59 DMAC1_1_DEI0, DMAC1_1_DEI1, DMAC1_1_DEI2, DMAC1_1_DEI3,
60 DMAC1_2_DEI4, DMAC1_2_DEI5, DMAC1_2_DADERR,
61 DMAC2_1_DEI0, DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3,
62 DMAC2_2_DEI4, DMAC2_2_DEI5, DMAC2_2_DADERR,
63 DMAC3_1_DEI0, DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3,
64 DMAC3_2_DEI4, DMAC3_2_DEI5, DMAC3_2_DADERR,
65 SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM,
66 HDMI,
67 SPU2_SPU0, SPU2_SPU1,
68 FSI, FMSI,
69 MIPI_HSI,
70 IPMMU_IPMMUD,
71 CEC_1, CEC_2,
72 AP_ARM_CTIIRQ, AP_ARM_DMAEXTERRIRQ, AP_ARM_DMAIRQ, AP_ARM_DMASIRQ,
73 MFIS2,
74 CPORTR2S,
75 CMT14, CMT15,
76 MMC_MMC_ERR, MMC_MMC_NOR,
77 IIC4_ALI4, IIC4_TACKI4, IIC4_WAITI4, IIC4_DTEI4,
78 IIC3_ALI3, IIC3_TACKI3, IIC3_WAITI3, IIC3_DTEI3,
79 USB0_USB0I1, USB0_USB0I0,
80 USB1_USB1I1, USB1_USB1I0,
81 USBHSDMAC1_USHDMI,
82
83 /* interrupt groups INTCA */
84 DMAC1_1, DMAC1_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT,
85 AP_ARM1, AP_ARM2, SPU2, FLCTL, IIC1, SDHI0, SDHI1, SDHI2
86};
87
88static struct intc_vect intca_vectors[] __initdata = {
89 INTC_VECT(IRQ0A, 0x0200), INTC_VECT(IRQ1A, 0x0220),
90 INTC_VECT(IRQ2A, 0x0240), INTC_VECT(IRQ3A, 0x0260),
91 INTC_VECT(IRQ4A, 0x0280), INTC_VECT(IRQ5A, 0x02a0),
92 INTC_VECT(IRQ6A, 0x02c0), INTC_VECT(IRQ7A, 0x02e0),
93 INTC_VECT(IRQ8A, 0x0300), INTC_VECT(IRQ9A, 0x0320),
94 INTC_VECT(IRQ10A, 0x0340), INTC_VECT(IRQ11A, 0x0360),
95 INTC_VECT(IRQ12A, 0x0380), INTC_VECT(IRQ13A, 0x03a0),
96 INTC_VECT(IRQ14A, 0x03c0), INTC_VECT(IRQ15A, 0x03e0),
97 INTC_VECT(IRQ16A, 0x3200), INTC_VECT(IRQ17A, 0x3220),
98 INTC_VECT(IRQ18A, 0x3240), INTC_VECT(IRQ19A, 0x3260),
99 INTC_VECT(IRQ20A, 0x3280), INTC_VECT(IRQ31A, 0x32a0),
100 INTC_VECT(IRQ22A, 0x32c0), INTC_VECT(IRQ23A, 0x32e0),
101 INTC_VECT(IRQ24A, 0x3300), INTC_VECT(IRQ25A, 0x3320),
102 INTC_VECT(IRQ26A, 0x3340), INTC_VECT(IRQ27A, 0x3360),
103 INTC_VECT(IRQ28A, 0x3380), INTC_VECT(IRQ29A, 0x33a0),
104 INTC_VECT(IRQ30A, 0x33c0), INTC_VECT(IRQ31A, 0x33e0),
105 INTC_VECT(DIRC, 0x0560),
106 INTC_VECT(CRYPT_STD, 0x0700),
107 INTC_VECT(IIC1_ALI1, 0x0780), INTC_VECT(IIC1_TACKI1, 0x07a0),
108 INTC_VECT(IIC1_WAITI1, 0x07c0), INTC_VECT(IIC1_DTEI1, 0x07e0),
109 INTC_VECT(AP_ARM_IRQPMU, 0x0800), INTC_VECT(AP_ARM_COMMTX, 0x0840),
110 INTC_VECT(AP_ARM_COMMRX, 0x0860),
111 INTC_VECT(MFI_MFIM, 0x0900), INTC_VECT(MFI_MFIS, 0x0920),
112 INTC_VECT(BBIF1, 0x0940), INTC_VECT(BBIF2, 0x0960),
113 INTC_VECT(USBHSDMAC0_USHDMI, 0x0a00),
114 INTC_VECT(_3DG_SGX540, 0x0a60),
115 INTC_VECT(CMT1_CMT10, 0x0b00), INTC_VECT(CMT1_CMT11, 0x0b20),
116 INTC_VECT(CMT1_CMT12, 0x0b40), INTC_VECT(CMT1_CMT13, 0x0b60),
117 INTC_VECT(CMT2, 0x0b80), INTC_VECT(CMT3, 0x0ba0),
118 INTC_VECT(KEYSC_KEY, 0x0be0),
119 INTC_VECT(SCIFA0, 0x0c00), INTC_VECT(SCIFA1, 0x0c20),
120 INTC_VECT(SCIFA2, 0x0c40), INTC_VECT(SCIFA3, 0x0c60),
121 INTC_VECT(MSIOF2, 0x0c80), INTC_VECT(MSIOF1, 0x0d00),
122 INTC_VECT(SCIFA4, 0x0d20), INTC_VECT(SCIFA5, 0x0d40),
123 INTC_VECT(SCIFB, 0x0d60),
124 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
125 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
126 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20),
127 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60),
128 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0),
129 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0),
130 INTC_VECT(IRREM, 0x0f60),
131 INTC_VECT(IRDA, 0x0480),
132 INTC_VECT(TPU0, 0x04a0),
133 INTC_VECT(TTI20, 0x1100),
134 INTC_VECT(DDM, 0x1140),
135 INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220),
136 INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260),
137 INTC_VECT(RWDT0, 0x1280),
138 INTC_VECT(DMAC1_1_DEI0, 0x2000), INTC_VECT(DMAC1_1_DEI1, 0x2020),
139 INTC_VECT(DMAC1_1_DEI2, 0x2040), INTC_VECT(DMAC1_1_DEI3, 0x2060),
140 INTC_VECT(DMAC1_2_DEI4, 0x2080), INTC_VECT(DMAC1_2_DEI5, 0x20a0),
141 INTC_VECT(DMAC1_2_DADERR, 0x20c0),
142 INTC_VECT(DMAC2_1_DEI0, 0x2100), INTC_VECT(DMAC2_1_DEI1, 0x2120),
143 INTC_VECT(DMAC2_1_DEI2, 0x2140), INTC_VECT(DMAC2_1_DEI3, 0x2160),
144 INTC_VECT(DMAC2_2_DEI4, 0x2180), INTC_VECT(DMAC2_2_DEI5, 0x21a0),
145 INTC_VECT(DMAC2_2_DADERR, 0x21c0),
146 INTC_VECT(DMAC3_1_DEI0, 0x2200), INTC_VECT(DMAC3_1_DEI1, 0x2220),
147 INTC_VECT(DMAC3_1_DEI2, 0x2240), INTC_VECT(DMAC3_1_DEI3, 0x2260),
148 INTC_VECT(DMAC3_2_DEI4, 0x2280), INTC_VECT(DMAC3_2_DEI5, 0x22a0),
149 INTC_VECT(DMAC3_2_DADERR, 0x22c0),
150 INTC_VECT(SHWYSTAT_RT, 0x1300), INTC_VECT(SHWYSTAT_HS, 0x1320),
151 INTC_VECT(SHWYSTAT_COM, 0x1340),
152 INTC_VECT(HDMI, 0x17e0),
153 INTC_VECT(SPU2_SPU0, 0x1800), INTC_VECT(SPU2_SPU1, 0x1820),
154 INTC_VECT(FSI, 0x1840),
155 INTC_VECT(FMSI, 0x1860),
156 INTC_VECT(MIPI_HSI, 0x18e0),
157 INTC_VECT(IPMMU_IPMMUD, 0x1920),
158 INTC_VECT(CEC_1, 0x1940), INTC_VECT(CEC_2, 0x1960),
159 INTC_VECT(AP_ARM_CTIIRQ, 0x1980),
160 INTC_VECT(AP_ARM_DMAEXTERRIRQ, 0x19a0),
161 INTC_VECT(AP_ARM_DMAIRQ, 0x19c0),
162 INTC_VECT(AP_ARM_DMASIRQ, 0x19e0),
163 INTC_VECT(MFIS2, 0x1a00),
164 INTC_VECT(CPORTR2S, 0x1a20),
165 INTC_VECT(CMT14, 0x1a40), INTC_VECT(CMT15, 0x1a60),
166 INTC_VECT(MMC_MMC_ERR, 0x1ac0), INTC_VECT(MMC_MMC_NOR, 0x1ae0),
167 INTC_VECT(IIC4_ALI4, 0x1b00), INTC_VECT(IIC4_TACKI4, 0x1b20),
168 INTC_VECT(IIC4_WAITI4, 0x1b40), INTC_VECT(IIC4_DTEI4, 0x1b60),
169 INTC_VECT(IIC3_ALI3, 0x1b80), INTC_VECT(IIC3_TACKI3, 0x1ba0),
170 INTC_VECT(IIC3_WAITI3, 0x1bc0), INTC_VECT(IIC3_DTEI3, 0x1be0),
171 INTC_VECT(USB0_USB0I1, 0x1c80), INTC_VECT(USB0_USB0I0, 0x1ca0),
172 INTC_VECT(USB1_USB1I1, 0x1cc0), INTC_VECT(USB1_USB1I0, 0x1ce0),
173 INTC_VECT(USBHSDMAC1_USHDMI, 0x1d00),
174};
175
176static struct intc_group intca_groups[] __initdata = {
177 INTC_GROUP(DMAC1_1, DMAC1_1_DEI0,
178 DMAC1_1_DEI1, DMAC1_1_DEI2, DMAC1_1_DEI3),
179 INTC_GROUP(DMAC1_2, DMAC1_2_DEI4,
180 DMAC1_2_DEI5, DMAC1_2_DADERR),
181 INTC_GROUP(DMAC2_1, DMAC2_1_DEI0,
182 DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3),
183 INTC_GROUP(DMAC2_2, DMAC2_2_DEI4,
184 DMAC2_2_DEI5, DMAC2_2_DADERR),
185 INTC_GROUP(DMAC3_1, DMAC3_1_DEI0,
186 DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3),
187 INTC_GROUP(DMAC3_2, DMAC3_2_DEI4,
188 DMAC3_2_DEI5, DMAC3_2_DADERR),
189 INTC_GROUP(AP_ARM1, AP_ARM_IRQPMU, AP_ARM_COMMTX, AP_ARM_COMMRX),
190 INTC_GROUP(AP_ARM2, AP_ARM_CTIIRQ, AP_ARM_DMAEXTERRIRQ,
191 AP_ARM_DMAIRQ, AP_ARM_DMASIRQ),
192 INTC_GROUP(SPU2, SPU2_SPU0, SPU2_SPU1),
193 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
194 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
195 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
196 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
197 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
198 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
199 SDHI1_SDHI1I2),
200 INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1,
201 SDHI2_SDHI2I2, SDHI2_SDHI2I3),
202 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM),
203};
204
205static struct intc_mask_reg intca_mask_registers[] __initdata = {
206 { 0xe6900040, 0xe6900060, 8, /* INTMSK00A / INTMSKCLR00A */
207 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
208 { 0xe6900044, 0xe6900064, 8, /* INTMSK10A / INTMSKCLR10A */
209 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
210 { 0xe6900048, 0xe6900068, 8, /* INTMSK20A / INTMSKCLR20A */
211 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
212 { 0xe690004c, 0xe690006c, 8, /* INTMSK30A / INTMSKCLR30A */
213 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
214
215 { 0xe6940080, 0xe69400c0, 8, /* IMR0A / IMCR0A */
216 { DMAC2_1_DEI3, DMAC2_1_DEI2, DMAC2_1_DEI1, DMAC2_1_DEI0,
217 AP_ARM_IRQPMU, 0, AP_ARM_COMMTX, AP_ARM_COMMRX } },
218 { 0xe6940084, 0xe69400c4, 8, /* IMR1A / IMCR1A */
219 { 0, CRYPT_STD, DIRC, 0,
220 DMAC1_1_DEI3, DMAC1_1_DEI2, DMAC1_1_DEI1, DMAC1_1_DEI0 } },
221 { 0xe6940088, 0xe69400c8, 8, /* IMR2A / IMCR2A */
222 { 0, 0, 0, 0,
223 BBIF1, BBIF2, MFI_MFIS, MFI_MFIM } },
224 { 0xe694008c, 0xe69400cc, 8, /* IMR3A / IMCR3A */
225 { DMAC3_1_DEI3, DMAC3_1_DEI2, DMAC3_1_DEI1, DMAC3_1_DEI0,
226 DMAC3_2_DADERR, DMAC3_2_DEI5, DMAC3_2_DEI4, IRDA } },
227 { 0xe6940090, 0xe69400d0, 8, /* IMR4A / IMCR4A */
228 { DDM, 0, 0, 0,
229 0, 0, 0, 0 } },
230 { 0xe6940094, 0xe69400d4, 8, /* IMR5A / IMCR5A */
231 { KEYSC_KEY, DMAC1_2_DADERR, DMAC1_2_DEI5, DMAC1_2_DEI4,
232 SCIFA3, SCIFA2, SCIFA1, SCIFA0 } },
233 { 0xe6940098, 0xe69400d8, 8, /* IMR6A / IMCR6A */
234 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
235 0, 0, MSIOF2, 0 } },
236 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
237 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0,
238 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
239 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
240 { 0, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0,
241 TTI20, USBHSDMAC0_USHDMI, 0, 0 } },
242 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
243 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
244 CMT2, 0, 0, _3DG_SGX540 } },
245 { 0xe69400a8, 0xe69400e8, 8, /* IMR10A / IMCR10A */
246 { 0, DMAC2_2_DADERR, DMAC2_2_DEI5, DMAC2_2_DEI4,
247 0, 0, 0, 0 } },
248 { 0xe69400ac, 0xe69400ec, 8, /* IMR11A / IMCR11A */
249 { IIC1_DTEI1, IIC1_WAITI1, IIC1_TACKI1, IIC1_ALI1,
250 0, 0, IRREM, 0 } },
251 { 0xe69400b0, 0xe69400f0, 8, /* IMR12A / IMCR12A */
252 { 0, 0, TPU0, 0,
253 0, 0, 0, 0 } },
254 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */
255 { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0,
256 0, CMT3, 0, RWDT0 } },
257 { 0xe6950080, 0xe69500c0, 8, /* IMR0A3 / IMCR0A3 */
258 { SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM, 0,
259 0, 0, 0, 0 } },
260 { 0xe6950090, 0xe69500d0, 8, /* IMR4A3 / IMCR4A3 */
261 { 0, 0, 0, 0,
262 0, 0, 0, HDMI } },
263 { 0xe6950094, 0xe69500d4, 8, /* IMR5A3 / IMCR5A3 */
264 { SPU2_SPU0, SPU2_SPU1, FSI, FMSI,
265 0, 0, 0, MIPI_HSI } },
266 { 0xe6950098, 0xe69500d8, 8, /* IMR6A3 / IMCR6A3 */
267 { 0, IPMMU_IPMMUD, CEC_1, CEC_2,
268 AP_ARM_CTIIRQ, AP_ARM_DMAEXTERRIRQ,
269 AP_ARM_DMAIRQ, AP_ARM_DMASIRQ } },
270 { 0xe695009c, 0xe69500dc, 8, /* IMR7A3 / IMCR7A3 */
271 { MFIS2, CPORTR2S, CMT14, CMT15,
272 0, 0, MMC_MMC_ERR, MMC_MMC_NOR } },
273 { 0xe69500a0, 0xe69500e0, 8, /* IMR8A3 / IMCR8A3 */
274 { IIC4_ALI4, IIC4_TACKI4, IIC4_WAITI4, IIC4_DTEI4,
275 IIC3_ALI3, IIC3_TACKI3, IIC3_WAITI3, IIC3_DTEI3 } },
276 { 0xe69500a4, 0xe69500e4, 8, /* IMR9A3 / IMCR9A3 */
277 { 0, 0, 0, 0,
278 USB0_USB0I1, USB0_USB0I0, USB1_USB1I1, USB1_USB1I0 } },
279 { 0xe69500a8, 0xe69500e8, 8, /* IMR10A3 / IMCR10A3 */
280 { USBHSDMAC1_USHDMI, 0, 0, 0,
281 0, 0, 0, 0 } },
282};
283
284static struct intc_prio_reg intca_prio_registers[] __initdata = {
285 { 0xe6900010, 0, 32, 4, /* INTPRI00A */
286 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
287 { 0xe6900014, 0, 32, 4, /* INTPRI10A */
288 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
289 { 0xe6900018, 0, 32, 4, /* INTPRI20A */
290 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
291 { 0xe690001c, 0, 32, 4, /* INTPRI30A */
292 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
293
294 { 0xe6940000, 0, 16, 4, /* IPRAA */ { DMAC3_1, DMAC3_2, CMT2, 0 } },
295 { 0xe6940004, 0, 16, 4, /* IPRBA */ { IRDA, 0, BBIF1, BBIF2 } },
296 { 0xe6940008, 0, 16, 4, /* IPRCA */ { 0, CRYPT_STD,
297 CMT1_CMT11, AP_ARM1 } },
298 { 0xe694000c, 0, 16, 4, /* IPRDA */ { 0, 0,
299 CMT1_CMT12, 0 } },
300 { 0xe6940010, 0, 16, 4, /* IPREA */ { DMAC1_1, MFI_MFIS,
301 MFI_MFIM, 0 } },
302 { 0xe6940014, 0, 16, 4, /* IPRFA */ { KEYSC_KEY, DMAC1_2,
303 _3DG_SGX540, CMT1_CMT10 } },
304 { 0xe6940018, 0, 16, 4, /* IPRGA */ { SCIFA0, SCIFA1,
305 SCIFA2, SCIFA3 } },
306 { 0xe694001c, 0, 16, 4, /* IPRGH */ { MSIOF2, USBHSDMAC0_USHDMI,
307 FLCTL, SDHI0 } },
308 { 0xe6940020, 0, 16, 4, /* IPRIA */ { MSIOF1, SCIFA4,
309 0/* MSU */, IIC1 } },
310 { 0xe6940024, 0, 16, 4, /* IPRJA */ { DMAC2_1, DMAC2_2,
311 0/* MSUG */, TTI20 } },
312 { 0xe6940028, 0, 16, 4, /* IPRKA */ { 0, CMT1_CMT13, IRREM, SDHI1 } },
313 { 0xe694002c, 0, 16, 4, /* IPRLA */ { TPU0, 0, 0, 0 } },
314 { 0xe6940030, 0, 16, 4, /* IPRMA */ { 0, CMT3, 0, RWDT0 } },
315 { 0xe6940034, 0, 16, 4, /* IPRNA */ { SCIFB, SCIFA5, 0, DDM } },
316 { 0xe6940038, 0, 16, 4, /* IPROA */ { 0, 0, DIRC, SDHI2 } },
317 { 0xe6950000, 0, 16, 4, /* IPRAA3 */ { SHWYSTAT, 0, 0, 0 } },
318 { 0xe6950024, 0, 16, 4, /* IPRJA3 */ { 0, 0, 0, HDMI } },
319 { 0xe6950028, 0, 16, 4, /* IPRKA3 */ { SPU2, 0, FSI, FMSI } },
320 { 0xe695002c, 0, 16, 4, /* IPRLA3 */ { 0, 0, 0, MIPI_HSI } },
321 { 0xe6950030, 0, 16, 4, /* IPRMA3 */ { IPMMU_IPMMUD, 0,
322 CEC_1, CEC_2 } },
323 { 0xe6950034, 0, 16, 4, /* IPRNA3 */ { AP_ARM2, 0, 0, 0 } },
324 { 0xe6950038, 0, 16, 4, /* IPROA3 */ { MFIS2, CPORTR2S,
325 CMT14, CMT15 } },
326 { 0xe694003c, 0, 16, 4, /* IPRPA3 */ { 0, 0,
327 MMC_MMC_ERR, MMC_MMC_NOR } },
328 { 0xe6940040, 0, 16, 4, /* IPRQA3 */ { IIC4_ALI4, IIC4_TACKI4,
329 IIC4_WAITI4, IIC4_DTEI4 } },
330 { 0xe6940044, 0, 16, 4, /* IPRRA3 */ { IIC3_ALI3, IIC3_TACKI3,
331 IIC3_WAITI3, IIC3_DTEI3 } },
332 { 0xe6940048, 0, 16, 4, /* IPRSA3 */ { 0/*ERI*/, 0/*RXI*/,
333 0/*TXI*/, 0/*TEI*/} },
334 { 0xe694004c, 0, 16, 4, /* IPRTA3 */ { USB0_USB0I1, USB0_USB0I0,
335 USB1_USB1I1, USB1_USB1I0 } },
336 { 0xe6940050, 0, 16, 4, /* IPRUA3 */ { USBHSDMAC1_USHDMI, 0, 0, 0 } },
337};
338
339static struct intc_sense_reg intca_sense_registers[] __initdata = {
340 { 0xe6900000, 32, 4, /* ICR1A */
341 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
342 { 0xe6900004, 32, 4, /* ICR2A */
343 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
344 { 0xe6900008, 32, 4, /* ICR3A */
345 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
346 { 0xe690000c, 32, 4, /* ICR4A */
347 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
348};
349
350static struct intc_mask_reg intca_ack_registers[] __initdata = {
351 { 0xe6900020, 0, 8, /* INTREQ00A */
352 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
353 { 0xe6900024, 0, 8, /* INTREQ10A */
354 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
355 { 0xe6900028, 0, 8, /* INTREQ20A */
356 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
357 { 0xe690002c, 0, 8, /* INTREQ30A */
358 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
359};
360
361static DECLARE_INTC_DESC_ACK(intca_desc, "sh7372-intca",
362 intca_vectors, intca_groups,
363 intca_mask_registers, intca_prio_registers,
364 intca_sense_registers, intca_ack_registers);
365
366void __init sh7372_init_irq(void)
367{
368 register_intc_controller(&intca_desc);
369}
diff --git a/arch/arm/mach-shmobile/intc-sh7377.c b/arch/arm/mach-shmobile/intc-sh7377.c
new file mode 100644
index 000000000000..125021cfba5c
--- /dev/null
+++ b/arch/arm/mach-shmobile/intc-sh7377.c
@@ -0,0 +1,350 @@
1/*
2 * sh7377 processor support - INTC hardware block
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/interrupt.h>
22#include <linux/irq.h>
23#include <linux/io.h>
24#include <linux/sh_intc.h>
25#include <asm/mach-types.h>
26#include <asm/mach/arch.h>
27
28enum {
29 UNUSED_INTCA = 0,
30
31 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
33 IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A,
34 IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A,
35 IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A,
36 DIRC,
37 _2DG,
38 CRYPT_STD,
39 IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1,
40 AP_ARM_IRQPMU, AP_ARM_COMMTX, AP_ARM_COMMRX,
41 MFI_MFIM, MFI_MFIS,
42 BBIF1, BBIF2,
43 USBDMAC_USHDMI,
44 USBHS_USHI0, USBHS_USHI1,
45 _3DG_SGX540,
46 CMT1_CMT10, CMT1_CMT11, CMT1_CMT12, CMT1_CMT13, CMT2, CMT3,
47 KEYSC_KEY,
48 SCIFA0, SCIFA1, SCIFA2, SCIFA3,
49 MSIOF2, MSIOF1,
50 SCIFA4, SCIFA5, SCIFB,
51 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
52 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3,
53 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3,
54 MSU_MSU, MSU_MSU2,
55 IRREM,
56 MSUG,
57 IRDA,
58 TPU0, TPU1, TPU2, TPU3, TPU4,
59 LCRC,
60 PINTCA_PINT1, PINTCA_PINT2,
61 TTI20,
62 MISTY,
63 DDM,
64 RWDT0, RWDT1,
65 DMAC_1_DEI0, DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3,
66 DMAC_2_DEI4, DMAC_2_DEI5, DMAC_2_DADERR,
67 DMAC2_1_DEI0, DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3,
68 DMAC2_2_DEI4, DMAC2_2_DEI5, DMAC2_2_DADERR,
69 DMAC3_1_DEI0, DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3,
70 DMAC3_2_DEI4, DMAC3_2_DEI5, DMAC3_2_DADERR,
71 SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM,
72 ICUSB_ICUSB0, ICUSB_ICUSB1,
73 ICUDMC_ICUDMC1, ICUDMC_ICUDMC2,
74 SPU2_SPU0, SPU2_SPU1,
75 FSI,
76 FMSI,
77 SCUV,
78 IPMMU_IPMMUB,
79 AP_ARM_CTIIRQ, AP_ARM_DMAEXTERRIRQ, AP_ARM_DMAIRQ, AP_ARM_DMASIRQ,
80 MFIS2,
81 CPORTR2S,
82 CMT14, CMT15,
83 SCIFA6,
84
85 /* interrupt groups INTCA */
86 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT,
87 AP_ARM1, AP_ARM2, USBHS, SPU2, FLCTL, IIC1, SDHI0, SDHI1,
88 ICUSB, ICUDMC
89};
90
91static struct intc_vect intca_vectors[] = {
92 INTC_VECT(IRQ0A, 0x0200), INTC_VECT(IRQ1A, 0x0220),
93 INTC_VECT(IRQ2A, 0x0240), INTC_VECT(IRQ3A, 0x0260),
94 INTC_VECT(IRQ4A, 0x0280), INTC_VECT(IRQ5A, 0x02a0),
95 INTC_VECT(IRQ6A, 0x02c0), INTC_VECT(IRQ7A, 0x02e0),
96 INTC_VECT(IRQ8A, 0x0300), INTC_VECT(IRQ9A, 0x0320),
97 INTC_VECT(IRQ10A, 0x0340), INTC_VECT(IRQ11A, 0x0360),
98 INTC_VECT(IRQ12A, 0x0380), INTC_VECT(IRQ13A, 0x03a0),
99 INTC_VECT(IRQ14A, 0x03c0), INTC_VECT(IRQ15A, 0x03e0),
100 INTC_VECT(IRQ16A, 0x3200), INTC_VECT(IRQ17A, 0x3220),
101 INTC_VECT(IRQ18A, 0x3240), INTC_VECT(IRQ19A, 0x3260),
102 INTC_VECT(IRQ20A, 0x3280), INTC_VECT(IRQ31A, 0x32a0),
103 INTC_VECT(IRQ22A, 0x32c0), INTC_VECT(IRQ23A, 0x32e0),
104 INTC_VECT(IRQ24A, 0x3300), INTC_VECT(IRQ25A, 0x3320),
105 INTC_VECT(IRQ26A, 0x3340), INTC_VECT(IRQ27A, 0x3360),
106 INTC_VECT(IRQ28A, 0x3380), INTC_VECT(IRQ29A, 0x33a0),
107 INTC_VECT(IRQ30A, 0x33c0), INTC_VECT(IRQ31A, 0x33e0),
108 INTC_VECT(DIRC, 0x0560),
109 INTC_VECT(_2DG, 0x05e0),
110 INTC_VECT(CRYPT_STD, 0x0700),
111 INTC_VECT(IIC1_ALI1, 0x0780), INTC_VECT(IIC1_TACKI1, 0x07a0),
112 INTC_VECT(IIC1_WAITI1, 0x07c0), INTC_VECT(IIC1_DTEI1, 0x07e0),
113 INTC_VECT(AP_ARM_IRQPMU, 0x0800), INTC_VECT(AP_ARM_COMMTX, 0x0840),
114 INTC_VECT(AP_ARM_COMMRX, 0x0860),
115 INTC_VECT(MFI_MFIM, 0x0900), INTC_VECT(MFI_MFIS, 0x0920),
116 INTC_VECT(BBIF1, 0x0940), INTC_VECT(BBIF2, 0x0960),
117 INTC_VECT(USBDMAC_USHDMI, 0x0a00),
118 INTC_VECT(USBHS_USHI0, 0x0a20), INTC_VECT(USBHS_USHI1, 0x0a40),
119 INTC_VECT(_3DG_SGX540, 0x0a60),
120 INTC_VECT(CMT1_CMT10, 0x0b00), INTC_VECT(CMT1_CMT11, 0x0b20),
121 INTC_VECT(CMT1_CMT12, 0x0b40), INTC_VECT(CMT1_CMT13, 0x0b60),
122 INTC_VECT(CMT2, 0x0b80), INTC_VECT(CMT3, 0x0ba0),
123 INTC_VECT(KEYSC_KEY, 0x0be0),
124 INTC_VECT(SCIFA0, 0x0c00), INTC_VECT(SCIFA1, 0x0c20),
125 INTC_VECT(SCIFA2, 0x0c40), INTC_VECT(SCIFA3, 0x0c60),
126 INTC_VECT(MSIOF2, 0x0c80), INTC_VECT(MSIOF1, 0x0d00),
127 INTC_VECT(SCIFA4, 0x0d20), INTC_VECT(SCIFA5, 0x0d40),
128 INTC_VECT(SCIFB, 0x0d60),
129 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
130 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
131 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20),
132 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60),
133 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0),
134 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0),
135 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40),
136 INTC_VECT(IRREM, 0x0f60),
137 INTC_VECT(MSUG, 0x0fa0),
138 INTC_VECT(IRDA, 0x0480),
139 INTC_VECT(TPU0, 0x04a0), INTC_VECT(TPU1, 0x04c0),
140 INTC_VECT(TPU2, 0x04e0), INTC_VECT(TPU3, 0x0500),
141 INTC_VECT(TPU4, 0x0520),
142 INTC_VECT(LCRC, 0x0540),
143 INTC_VECT(PINTCA_PINT1, 0x1000), INTC_VECT(PINTCA_PINT2, 0x1020),
144 INTC_VECT(TTI20, 0x1100),
145 INTC_VECT(MISTY, 0x1120),
146 INTC_VECT(DDM, 0x1140),
147 INTC_VECT(RWDT0, 0x1280), INTC_VECT(RWDT1, 0x12a0),
148 INTC_VECT(DMAC_1_DEI0, 0x2000), INTC_VECT(DMAC_1_DEI1, 0x2020),
149 INTC_VECT(DMAC_1_DEI2, 0x2040), INTC_VECT(DMAC_1_DEI3, 0x2060),
150 INTC_VECT(DMAC_2_DEI4, 0x2080), INTC_VECT(DMAC_2_DEI5, 0x20a0),
151 INTC_VECT(DMAC_2_DADERR, 0x20c0),
152 INTC_VECT(DMAC2_1_DEI0, 0x2100), INTC_VECT(DMAC2_1_DEI1, 0x2120),
153 INTC_VECT(DMAC2_1_DEI2, 0x2140), INTC_VECT(DMAC2_1_DEI3, 0x2160),
154 INTC_VECT(DMAC2_2_DEI4, 0x2180), INTC_VECT(DMAC2_2_DEI5, 0x21a0),
155 INTC_VECT(DMAC2_2_DADERR, 0x21c0),
156 INTC_VECT(DMAC3_1_DEI0, 0x2200), INTC_VECT(DMAC3_1_DEI1, 0x2220),
157 INTC_VECT(DMAC3_1_DEI2, 0x2240), INTC_VECT(DMAC3_1_DEI3, 0x2260),
158 INTC_VECT(DMAC3_2_DEI4, 0x2280), INTC_VECT(DMAC3_2_DEI5, 0x22a0),
159 INTC_VECT(DMAC3_2_DADERR, 0x22c0),
160 INTC_VECT(SHWYSTAT_RT, 0x1300), INTC_VECT(SHWYSTAT_HS, 0x1d20),
161 INTC_VECT(SHWYSTAT_COM, 0x1340),
162 INTC_VECT(ICUSB_ICUSB0, 0x1700), INTC_VECT(ICUSB_ICUSB1, 0x1720),
163 INTC_VECT(ICUDMC_ICUDMC1, 0x1780), INTC_VECT(ICUDMC_ICUDMC2, 0x17a0),
164 INTC_VECT(SPU2_SPU0, 0x1800), INTC_VECT(SPU2_SPU1, 0x1820),
165 INTC_VECT(FSI, 0x1840),
166 INTC_VECT(FMSI, 0x1860),
167 INTC_VECT(SCUV, 0x1880),
168 INTC_VECT(IPMMU_IPMMUB, 0x1900),
169 INTC_VECT(AP_ARM_CTIIRQ, 0x1980),
170 INTC_VECT(AP_ARM_DMAEXTERRIRQ, 0x19a0),
171 INTC_VECT(AP_ARM_DMAIRQ, 0x19c0),
172 INTC_VECT(AP_ARM_DMASIRQ, 0x19e0),
173 INTC_VECT(MFIS2, 0x1a00),
174 INTC_VECT(CPORTR2S, 0x1a20),
175 INTC_VECT(CMT14, 0x1a40), INTC_VECT(CMT15, 0x1a60),
176 INTC_VECT(SCIFA6, 0x1a80),
177};
178
179static struct intc_group intca_groups[] __initdata = {
180 INTC_GROUP(DMAC_1, DMAC_1_DEI0,
181 DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3),
182 INTC_GROUP(DMAC_2, DMAC_2_DEI4,
183 DMAC_2_DEI5, DMAC_2_DADERR),
184 INTC_GROUP(DMAC2_1, DMAC2_1_DEI0,
185 DMAC2_1_DEI1, DMAC2_1_DEI2, DMAC2_1_DEI3),
186 INTC_GROUP(DMAC2_2, DMAC2_2_DEI4,
187 DMAC2_2_DEI5, DMAC2_2_DADERR),
188 INTC_GROUP(DMAC3_1, DMAC3_1_DEI0,
189 DMAC3_1_DEI1, DMAC3_1_DEI2, DMAC3_1_DEI3),
190 INTC_GROUP(DMAC3_2, DMAC3_2_DEI4,
191 DMAC3_2_DEI5, DMAC3_2_DADERR),
192 INTC_GROUP(AP_ARM1, AP_ARM_IRQPMU, AP_ARM_COMMTX, AP_ARM_COMMTX),
193 INTC_GROUP(USBHS, USBHS_USHI0, USBHS_USHI1),
194 INTC_GROUP(SPU2, SPU2_SPU0, SPU2_SPU1),
195 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
196 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
197 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
198 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
199 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
200 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
201 SDHI1_SDHI1I2, SDHI1_SDHI1I3),
202 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM),
203 INTC_GROUP(ICUSB, ICUSB_ICUSB0, ICUSB_ICUSB1),
204 INTC_GROUP(ICUDMC, ICUDMC_ICUDMC1, ICUDMC_ICUDMC2),
205};
206
207static struct intc_mask_reg intca_mask_registers[] = {
208 { 0xe6900040, 0xe6900060, 8, /* INTMSK00A / INTMSKCLR00A */
209 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
210 { 0xe6900044, 0xe6900064, 8, /* INTMSK10A / INTMSKCLR10A */
211 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
212 { 0xe6900048, 0xe6900068, 8, /* INTMSK20A / INTMSKCLR20A */
213 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
214 { 0xe690004c, 0xe690006c, 8, /* INTMSK30A / INTMSKCLR30A */
215 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
216
217 { 0xe6940080, 0xe69400c0, 8, /* IMR0A / IMCR0A */
218 { DMAC2_1_DEI3, DMAC2_1_DEI2, DMAC2_1_DEI1, DMAC2_1_DEI0,
219 AP_ARM_IRQPMU, 0, AP_ARM_COMMTX, AP_ARM_COMMRX } },
220 { 0xe6940084, 0xe69400c4, 8, /* IMR1A / IMCR1A */
221 { _2DG, CRYPT_STD, DIRC, 0,
222 DMAC_1_DEI3, DMAC_1_DEI2, DMAC_1_DEI1, DMAC_1_DEI0 } },
223 { 0xe6940088, 0xe69400c8, 8, /* IMR2A / IMCR2A */
224 { PINTCA_PINT1, PINTCA_PINT2, 0, 0,
225 BBIF1, BBIF2, MFI_MFIS, MFI_MFIM } },
226 { 0xe694008c, 0xe69400cc, 8, /* IMR3A / IMCR3A */
227 { DMAC3_1_DEI3, DMAC3_1_DEI2, DMAC3_1_DEI1, DMAC3_1_DEI0,
228 DMAC3_2_DADERR, DMAC3_2_DEI5, DMAC3_2_DEI4, IRDA } },
229 { 0xe6940090, 0xe69400d0, 8, /* IMR4A / IMCR4A */
230 { DDM, 0, 0, 0,
231 0, 0, 0, 0 } },
232 { 0xe6940094, 0xe69400d4, 8, /* IMR5A / IMCR5A */
233 { KEYSC_KEY, DMAC_2_DADERR, DMAC_2_DEI5, DMAC_2_DEI4,
234 SCIFA3, SCIFA2, SCIFA1, SCIFA0 } },
235 { 0xe6940098, 0xe69400d8, 8, /* IMR6A / IMCR6A */
236 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
237 0, 0, MSIOF2, 0 } },
238 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
239 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0,
240 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
241 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
242 { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0,
243 TTI20, USBDMAC_USHDMI, 0, MSUG } },
244 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
245 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
246 CMT2, USBHS_USHI1, USBHS_USHI0, _3DG_SGX540 } },
247 { 0xe69400a8, 0xe69400e8, 8, /* IMR10A / IMCR10A */
248 { 0, DMAC2_2_DADERR, DMAC2_2_DEI5, DMAC2_2_DEI4,
249 0, 0, 0, 0 } },
250 { 0xe69400ac, 0xe69400ec, 8, /* IMR11A / IMCR11A */
251 { IIC1_DTEI1, IIC1_WAITI1, IIC1_TACKI1, IIC1_ALI1,
252 LCRC, MSU_MSU2, IRREM, MSU_MSU } },
253 { 0xe69400b0, 0xe69400f0, 8, /* IMR12A / IMCR12A */
254 { 0, 0, TPU0, TPU1,
255 TPU2, TPU3, TPU4, 0 } },
256 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */
257 { 0, 0, 0, 0,
258 MISTY, CMT3, RWDT1, RWDT0 } },
259 { 0xe6950080, 0xe69500c0, 8, /* IMR0A3 / IMCR0A3 */
260 { SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM, 0,
261 0, 0, 0, 0 } },
262 { 0xe6950090, 0xe69500d0, 8, /* IMR4A3 / IMCR4A3 */
263 { ICUSB_ICUSB0, ICUSB_ICUSB1, 0, 0,
264 ICUDMC_ICUDMC1, ICUDMC_ICUDMC2, 0, 0 } },
265 { 0xe6950094, 0xe69500d4, 8, /* IMR5A3 / IMCR5A3 */
266 { SPU2_SPU0, SPU2_SPU1, FSI, FMSI,
267 SCUV, 0, 0, 0 } },
268 { 0xe6950098, 0xe69500d8, 8, /* IMR6A3 / IMCR6A3 */
269 { IPMMU_IPMMUB, 0, 0, 0,
270 AP_ARM_CTIIRQ, AP_ARM_DMAEXTERRIRQ,
271 AP_ARM_DMAIRQ, AP_ARM_DMASIRQ } },
272 { 0xe695009c, 0xe69500dc, 8, /* IMR7A3 / IMCR7A3 */
273 { MFIS2, CPORTR2S, CMT14, CMT15,
274 SCIFA6, 0, 0, 0 } },
275};
276
277static struct intc_prio_reg intca_prio_registers[] = {
278 { 0xe6900010, 0, 32, 4, /* INTPRI00A */
279 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
280 { 0xe6900014, 0, 32, 4, /* INTPRI10A */
281 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
282 { 0xe6900018, 0, 32, 4, /* INTPRI10A */
283 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
284 { 0xe690001c, 0, 32, 4, /* INTPRI30A */
285 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
286
287 { 0xe6940000, 0, 16, 4, /* IPRAA */ { DMAC3_1, DMAC3_2, CMT2, LCRC } },
288 { 0xe6940004, 0, 16, 4, /* IPRBA */ { IRDA, 0, BBIF1, BBIF2 } },
289 { 0xe6940008, 0, 16, 4, /* IPRCA */ { _2DG, CRYPT_STD,
290 CMT1_CMT11, AP_ARM1 } },
291 { 0xe694000c, 0, 16, 4, /* IPRDA */ { PINTCA_PINT1, PINTCA_PINT2,
292 CMT1_CMT12, TPU4 } },
293 { 0xe6940010, 0, 16, 4, /* IPREA */ { DMAC_1, MFI_MFIS,
294 MFI_MFIM, USBHS } },
295 { 0xe6940014, 0, 16, 4, /* IPRFA */ { KEYSC_KEY, DMAC_2,
296 _3DG_SGX540, CMT1_CMT10 } },
297 { 0xe6940018, 0, 16, 4, /* IPRGA */ { SCIFA0, SCIFA1,
298 SCIFA2, SCIFA3 } },
299 { 0xe694001c, 0, 16, 4, /* IPRGH */ { MSIOF2, USBDMAC_USHDMI,
300 FLCTL, SDHI0 } },
301 { 0xe6940020, 0, 16, 4, /* IPRIA */ { MSIOF1, SCIFA4, MSU_MSU, IIC1 } },
302 { 0xe6940024, 0, 16, 4, /* IPRJA */ { DMAC2_1, DMAC2_2, MSUG, TTI20 } },
303 { 0xe6940028, 0, 16, 4, /* IPRKA */ { 0, CMT1_CMT13, IRREM, SDHI1 } },
304 { 0xe694002c, 0, 16, 4, /* IPRLA */ { TPU0, TPU1, TPU2, TPU3 } },
305 { 0xe6940030, 0, 16, 4, /* IPRMA */ { MISTY, CMT3, RWDT1, RWDT0 } },
306 { 0xe6940034, 0, 16, 4, /* IPRNA */ { SCIFB, SCIFA5, 0, DDM } },
307 { 0xe6940038, 0, 16, 4, /* IPROA */ { 0, 0, DIRC, 0 } },
308 { 0xe6950000, 0, 16, 4, /* IPRAA3 */ { SHWYSTAT, 0, 0, 0 } },
309 { 0xe6950020, 0, 16, 4, /* IPRIA3 */ { ICUSB, 0, 0, 0 } },
310 { 0xe6950024, 0, 16, 4, /* IPRJA3 */ { ICUDMC, 0, 0, 0 } },
311 { 0xe6950028, 0, 16, 4, /* IPRKA3 */ { SPU2, 0, FSI, FMSI } },
312 { 0xe695002c, 0, 16, 4, /* IPRLA3 */ { SCUV, 0, 0, 0 } },
313 { 0xe6950030, 0, 16, 4, /* IPRMA3 */ { IPMMU_IPMMUB, 0, 0, 0 } },
314 { 0xe6950034, 0, 16, 4, /* IPRNA3 */ { AP_ARM2, 0, 0, 0 } },
315 { 0xe6950038, 0, 16, 4, /* IPROA3 */ { MFIS2, CPORTR2S,
316 CMT14, CMT15 } },
317 { 0xe694003c, 0, 16, 4, /* IPRPA3 */ { SCIFA6, 0, 0, 0 } },
318};
319
320static struct intc_sense_reg intca_sense_registers[] __initdata = {
321 { 0xe6900000, 16, 2, /* ICR1A */
322 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
323 { 0xe6900004, 16, 2, /* ICR2A */
324 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
325 { 0xe6900008, 16, 2, /* ICR3A */
326 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
327 { 0xe690000c, 16, 2, /* ICR4A */
328 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
329};
330
331static struct intc_mask_reg intca_ack_registers[] __initdata = {
332 { 0xe6900020, 0, 8, /* INTREQ00A */
333 { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } },
334 { 0xe6900024, 0, 8, /* INTREQ10A */
335 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
336 { 0xe6900028, 0, 8, /* INTREQ20A */
337 { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } },
338 { 0xe690002c, 0, 8, /* INTREQ30A */
339 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
340};
341
342static DECLARE_INTC_DESC_ACK(intca_desc, "sh7377-intca",
343 intca_vectors, intca_groups,
344 intca_mask_registers, intca_prio_registers,
345 intca_sense_registers, intca_ack_registers);
346
347void __init sh7377_init_irq(void)
348{
349 register_intc_controller(&intca_desc);
350}
diff --git a/arch/arm/mach-shmobile/pfc-sh7367.c b/arch/arm/mach-shmobile/pfc-sh7367.c
new file mode 100644
index 000000000000..128555e76e43
--- /dev/null
+++ b/arch/arm/mach-shmobile/pfc-sh7367.c
@@ -0,0 +1,1801 @@
1/*
2 * sh7367 processor support - PFC hardware block
3 *
4 * Copyright (C) 2010 Magnus Damm
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 as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19#include <linux/init.h>
20#include <linux/kernel.h>
21#include <linux/gpio.h>
22#include <mach/sh7367.h>
23
24#define _1(fn, pfx, sfx) fn(pfx, sfx)
25
26#define _10(fn, pfx, sfx) \
27 _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \
28 _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \
29 _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \
30 _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \
31 _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx)
32
33#define _90(fn, pfx, sfx) \
34 _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \
35 _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \
36 _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \
37 _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx), \
38 _10(fn, pfx##9, sfx)
39
40#define _273(fn, pfx, sfx) \
41 _10(fn, pfx, sfx), _90(fn, pfx, sfx), \
42 _10(fn, pfx##10, sfx), _90(fn, pfx##1, sfx), \
43 _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx), \
44 _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx), \
45 _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx), \
46 _10(fn, pfx##26, sfx), _1(fn, pfx##270, sfx), \
47 _1(fn, pfx##271, sfx), _1(fn, pfx##272, sfx)
48
49#define _PORT(pfx, sfx) pfx##_##sfx
50#define PORT_273(str) _273(_PORT, PORT, str)
51
52enum {
53 PINMUX_RESERVED = 0,
54
55 PINMUX_DATA_BEGIN,
56 PORT_273(DATA), /* PORT0_DATA -> PORT272_DATA */
57 PINMUX_DATA_END,
58
59 PINMUX_INPUT_BEGIN,
60 PORT_273(IN), /* PORT0_IN -> PORT272_IN */
61 PINMUX_INPUT_END,
62
63 PINMUX_INPUT_PULLUP_BEGIN,
64 PORT_273(IN_PU), /* PORT0_IN_PU -> PORT272_IN_PU */
65 PINMUX_INPUT_PULLUP_END,
66
67 PINMUX_INPUT_PULLDOWN_BEGIN,
68 PORT_273(IN_PD), /* PORT0_IN_PD -> PORT272_IN_PD */
69 PINMUX_INPUT_PULLDOWN_END,
70
71 PINMUX_OUTPUT_BEGIN,
72 PORT_273(OUT), /* PORT0_OUT -> PORT272_OUT */
73 PINMUX_OUTPUT_END,
74
75 PINMUX_FUNCTION_BEGIN,
76 PORT_273(FN_IN), /* PORT0_FN_IN -> PORT272_FN_IN */
77 PORT_273(FN_OUT), /* PORT0_FN_OUT -> PORT272_FN_OUT */
78 PORT_273(FN0), /* PORT0_FN0 -> PORT272_FN0 */
79 PORT_273(FN1), /* PORT0_FN1 -> PORT272_FN1 */
80 PORT_273(FN2), /* PORT0_FN2 -> PORT272_FN2 */
81 PORT_273(FN3), /* PORT0_FN3 -> PORT272_FN3 */
82 PORT_273(FN4), /* PORT0_FN4 -> PORT272_FN4 */
83 PORT_273(FN5), /* PORT0_FN5 -> PORT272_FN5 */
84 PORT_273(FN6), /* PORT0_FN6 -> PORT272_FN6 */
85 PORT_273(FN7), /* PORT0_FN7 -> PORT272_FN7 */
86
87 MSELBCR_MSEL2_1, MSELBCR_MSEL2_0,
88 PINMUX_FUNCTION_END,
89
90 PINMUX_MARK_BEGIN,
91 /* Special Pull-up / Pull-down Functions */
92 PORT48_KEYIN0_PU_MARK, PORT49_KEYIN1_PU_MARK,
93 PORT50_KEYIN2_PU_MARK, PORT55_KEYIN3_PU_MARK,
94 PORT56_KEYIN4_PU_MARK, PORT57_KEYIN5_PU_MARK,
95 PORT58_KEYIN6_PU_MARK,
96
97 /* 49-1 */
98 VBUS0_MARK, CPORT0_MARK, CPORT1_MARK, CPORT2_MARK,
99 CPORT3_MARK, CPORT4_MARK, CPORT5_MARK, CPORT6_MARK,
100 CPORT7_MARK, CPORT8_MARK, CPORT9_MARK, CPORT10_MARK,
101 CPORT11_MARK, SIN2_MARK, CPORT12_MARK, XCTS2_MARK,
102 CPORT13_MARK, RFSPO4_MARK, CPORT14_MARK, RFSPO5_MARK,
103 CPORT15_MARK, CPORT16_MARK, CPORT17_MARK, SOUT2_MARK,
104 CPORT18_MARK, XRTS2_MARK, CPORT19_MARK, CPORT20_MARK,
105 RFSPO6_MARK, CPORT21_MARK, STATUS0_MARK, CPORT22_MARK,
106 STATUS1_MARK, CPORT23_MARK, STATUS2_MARK, RFSPO7_MARK,
107 MPORT0_MARK, MPORT1_MARK, B_SYNLD1_MARK, B_SYNLD2_MARK,
108 XMAINPS_MARK, XDIVPS_MARK, XIDRST_MARK, IDCLK_MARK,
109 IDIO_MARK, SOUT1_MARK, SCIFA4_TXD_MARK,
110 M02_BERDAT_MARK, SIN1_MARK, SCIFA4_RXD_MARK, XWUP_MARK,
111 XRTS1_MARK, SCIFA4_RTS_MARK, M03_BERCLK_MARK,
112 XCTS1_MARK, SCIFA4_CTS_MARK,
113
114 /* 49-2 */
115 HSU_IQ_AGC6_MARK, MFG2_IN2_MARK, MSIOF2_MCK0_MARK,
116 HSU_IQ_AGC5_MARK, MFG2_IN1_MARK, MSIOF2_MCK1_MARK,
117 HSU_IQ_AGC4_MARK, MSIOF2_RSYNC_MARK,
118 HSU_IQ_AGC3_MARK, MFG2_OUT1_MARK, MSIOF2_RSCK_MARK,
119 HSU_IQ_AGC2_MARK, PORT42_KEYOUT0_MARK,
120 HSU_IQ_AGC1_MARK, PORT43_KEYOUT1_MARK,
121 HSU_IQ_AGC0_MARK, PORT44_KEYOUT2_MARK,
122 HSU_IQ_AGC_ST_MARK, PORT45_KEYOUT3_MARK,
123 HSU_IQ_PDO_MARK, PORT46_KEYOUT4_MARK,
124 HSU_IQ_PYO_MARK, PORT47_KEYOUT5_MARK,
125 HSU_EN_TXMUX_G3MO_MARK, PORT48_KEYIN0_MARK,
126 HSU_I_TXMUX_G3MO_MARK, PORT49_KEYIN1_MARK,
127 HSU_Q_TXMUX_G3MO_MARK, PORT50_KEYIN2_MARK,
128 HSU_SYO_MARK, PORT51_MSIOF2_TSYNC_MARK,
129 HSU_SDO_MARK, PORT52_MSIOF2_TSCK_MARK,
130 HSU_TGTTI_G3MO_MARK, PORT53_MSIOF2_TXD_MARK,
131 B_TIME_STAMP_MARK, PORT54_MSIOF2_RXD_MARK,
132 HSU_SDI_MARK, PORT55_KEYIN3_MARK,
133 HSU_SCO_MARK, PORT56_KEYIN4_MARK,
134 HSU_DREQ_MARK, PORT57_KEYIN5_MARK,
135 HSU_DACK_MARK, PORT58_KEYIN6_MARK,
136 HSU_CLK61M_MARK, PORT59_MSIOF2_SS1_MARK,
137 HSU_XRST_MARK, PORT60_MSIOF2_SS2_MARK,
138 PCMCLKO_MARK, SYNC8KO_MARK, DNPCM_A_MARK, UPPCM_A_MARK,
139 XTALB1L_MARK,
140 GPS_AGC1_MARK, SCIFA0_RTS_MARK,
141 GPS_AGC2_MARK, SCIFA0_SCK_MARK,
142 GPS_AGC3_MARK, SCIFA0_TXD_MARK,
143 GPS_AGC4_MARK, SCIFA0_RXD_MARK,
144 GPS_PWRD_MARK, SCIFA0_CTS_MARK,
145 GPS_IM_MARK, GPS_IS_MARK, GPS_QM_MARK, GPS_QS_MARK,
146 SIUBOMC_MARK, TPU2TO0_MARK,
147 SIUCKB_MARK, TPU2TO1_MARK,
148 SIUBOLR_MARK, BBIF2_TSYNC_MARK, TPU2TO2_MARK,
149 SIUBOBT_MARK, BBIF2_TSCK_MARK, TPU2TO3_MARK,
150 SIUBOSLD_MARK, BBIF2_TXD_MARK, TPU3TO0_MARK,
151 SIUBILR_MARK, TPU3TO1_MARK,
152 SIUBIBT_MARK, TPU3TO2_MARK,
153 SIUBISLD_MARK, TPU3TO3_MARK,
154 NMI_MARK, TPU4TO0_MARK,
155 DNPCM_M_MARK, TPU4TO1_MARK, TPU4TO2_MARK, TPU4TO3_MARK,
156 IRQ_TMPB_MARK,
157 PWEN_MARK, MFG1_OUT1_MARK,
158 OVCN_MARK, MFG1_IN1_MARK,
159 OVCN2_MARK, MFG1_IN2_MARK,
160
161 /* 49-3 */
162 RFSPO1_MARK, RFSPO2_MARK, RFSPO3_MARK, PORT93_VIO_CKO2_MARK,
163 USBTERM_MARK, EXTLP_MARK, IDIN_MARK,
164 SCIFA5_CTS_MARK, MFG0_IN1_MARK,
165 SCIFA5_RTS_MARK, MFG0_IN2_MARK,
166 SCIFA5_RXD_MARK,
167 SCIFA5_TXD_MARK,
168 SCIFA5_SCK_MARK, MFG0_OUT1_MARK,
169 A0_EA0_MARK, BS_MARK,
170 A14_EA14_MARK, PORT102_KEYOUT0_MARK,
171 A15_EA15_MARK, PORT103_KEYOUT1_MARK, DV_CLKOL_MARK,
172 A16_EA16_MARK, PORT104_KEYOUT2_MARK,
173 DV_VSYNCL_MARK, MSIOF0_SS1_MARK,
174 A17_EA17_MARK, PORT105_KEYOUT3_MARK,
175 DV_HSYNCL_MARK, MSIOF0_TSYNC_MARK,
176 A18_EA18_MARK, PORT106_KEYOUT4_MARK,
177 DV_DL0_MARK, MSIOF0_TSCK_MARK,
178 A19_EA19_MARK, PORT107_KEYOUT5_MARK,
179 DV_DL1_MARK, MSIOF0_TXD_MARK,
180 A20_EA20_MARK, PORT108_KEYIN0_MARK,
181 DV_DL2_MARK, MSIOF0_RSCK_MARK,
182 A21_EA21_MARK, PORT109_KEYIN1_MARK,
183 DV_DL3_MARK, MSIOF0_RSYNC_MARK,
184 A22_EA22_MARK, PORT110_KEYIN2_MARK,
185 DV_DL4_MARK, MSIOF0_MCK0_MARK,
186 A23_EA23_MARK, PORT111_KEYIN3_MARK,
187 DV_DL5_MARK, MSIOF0_MCK1_MARK,
188 A24_EA24_MARK, PORT112_KEYIN4_MARK,
189 DV_DL6_MARK, MSIOF0_RXD_MARK,
190 A25_EA25_MARK, PORT113_KEYIN5_MARK,
191 DV_DL7_MARK, MSIOF0_SS2_MARK,
192 A26_MARK, PORT113_KEYIN6_MARK, DV_CLKIL_MARK,
193 D0_ED0_NAF0_MARK, D1_ED1_NAF1_MARK, D2_ED2_NAF2_MARK,
194 D3_ED3_NAF3_MARK, D4_ED4_NAF4_MARK, D5_ED5_NAF5_MARK,
195 D6_ED6_NAF6_MARK, D7_ED7_NAF7_MARK, D8_ED8_NAF8_MARK,
196 D9_ED9_NAF9_MARK, D10_ED10_NAF10_MARK, D11_ED11_NAF11_MARK,
197 D12_ED12_NAF12_MARK, D13_ED13_NAF13_MARK,
198 D14_ED14_NAF14_MARK, D15_ED15_NAF15_MARK,
199 CS4_MARK, CS5A_MARK, CS5B_MARK, FCE1_MARK,
200 CS6B_MARK, XCS2_MARK, FCE0_MARK, CS6A_MARK,
201 DACK0_MARK, WAIT_MARK, DREQ0_MARK, RD_XRD_MARK,
202 A27_MARK, RDWR_XWE_MARK, WE0_XWR0_FWE_MARK,
203 WE1_XWR1_MARK, FRB_MARK, CKO_MARK,
204 NBRSTOUT_MARK, NBRST_MARK,
205
206 /* 49-4 */
207 RFSPO0_MARK, PORT146_VIO_CKO2_MARK, TSTMD_MARK,
208 VIO_VD_MARK, VIO_HD_MARK,
209 VIO_D0_MARK, VIO_D1_MARK, VIO_D2_MARK,
210 VIO_D3_MARK, VIO_D4_MARK, VIO_D5_MARK,
211 VIO_D6_MARK, VIO_D7_MARK, VIO_D8_MARK,
212 VIO_D9_MARK, VIO_D10_MARK, VIO_D11_MARK,
213 VIO_D12_MARK, VIO_D13_MARK, VIO_D14_MARK,
214 VIO_D15_MARK, VIO_CLK_MARK, VIO_FIELD_MARK,
215 VIO_CKO_MARK,
216 MFG3_IN1_MARK, MFG3_IN2_MARK,
217 M9_SLCD_A01_MARK, MFG3_OUT1_MARK, TPU0TO0_MARK,
218 M10_SLCD_CK1_MARK, MFG4_IN1_MARK, TPU0TO1_MARK,
219 M11_SLCD_SO1_MARK, MFG4_IN2_MARK, TPU0TO2_MARK,
220 M12_SLCD_CE1_MARK, MFG4_OUT1_MARK, TPU0TO3_MARK,
221 LCDD0_MARK, PORT175_KEYOUT0_MARK, DV_D0_MARK,
222 SIUCKA_MARK, MFG0_OUT2_MARK,
223 LCDD1_MARK, PORT176_KEYOUT1_MARK, DV_D1_MARK,
224 SIUAOLR_MARK, BBIF2_TSYNC1_MARK,
225 LCDD2_MARK, PORT177_KEYOUT2_MARK, DV_D2_MARK,
226 SIUAOBT_MARK, BBIF2_TSCK1_MARK,
227 LCDD3_MARK, PORT178_KEYOUT3_MARK, DV_D3_MARK,
228 SIUAOSLD_MARK, BBIF2_TXD1_MARK,
229 LCDD4_MARK, PORT179_KEYOUT4_MARK, DV_D4_MARK,
230 SIUAISPD_MARK, MFG1_OUT2_MARK,
231 LCDD5_MARK, PORT180_KEYOUT5_MARK, DV_D5_MARK,
232 SIUAILR_MARK, MFG2_OUT2_MARK,
233 LCDD6_MARK, DV_D6_MARK,
234 SIUAIBT_MARK, MFG3_OUT2_MARK, XWR2_MARK,
235 LCDD7_MARK, DV_D7_MARK,
236 SIUAISLD_MARK, MFG4_OUT2_MARK, XWR3_MARK,
237 LCDD8_MARK, DV_D8_MARK, D16_MARK, ED16_MARK,
238 LCDD9_MARK, DV_D9_MARK, D17_MARK, ED17_MARK,
239 LCDD10_MARK, DV_D10_MARK, D18_MARK, ED18_MARK,
240 LCDD11_MARK, DV_D11_MARK, D19_MARK, ED19_MARK,
241 LCDD12_MARK, DV_D12_MARK, D20_MARK, ED20_MARK,
242 LCDD13_MARK, DV_D13_MARK, D21_MARK, ED21_MARK,
243 LCDD14_MARK, DV_D14_MARK, D22_MARK, ED22_MARK,
244 LCDD15_MARK, DV_D15_MARK, D23_MARK, ED23_MARK,
245 LCDD16_MARK, DV_HSYNC_MARK, D24_MARK, ED24_MARK,
246 LCDD17_MARK, DV_VSYNC_MARK, D25_MARK, ED25_MARK,
247 LCDD18_MARK, DREQ2_MARK, MSIOF0L_TSCK_MARK,
248 D26_MARK, ED26_MARK,
249 LCDD19_MARK, MSIOF0L_TSYNC_MARK,
250 D27_MARK, ED27_MARK,
251 LCDD20_MARK, TS_SPSYNC1_MARK, MSIOF0L_MCK0_MARK,
252 D28_MARK, ED28_MARK,
253 LCDD21_MARK, TS_SDAT1_MARK, MSIOF0L_MCK1_MARK,
254 D29_MARK, ED29_MARK,
255 LCDD22_MARK, TS_SDEN1_MARK, MSIOF0L_SS1_MARK,
256 D30_MARK, ED30_MARK,
257 LCDD23_MARK, TS_SCK1_MARK, MSIOF0L_SS2_MARK,
258 D31_MARK, ED31_MARK,
259 LCDDCK_MARK, LCDWR_MARK, DV_CKO_MARK, SIUAOSPD_MARK,
260 LCDRD_MARK, DACK2_MARK, MSIOF0L_RSYNC_MARK,
261
262 /* 49-5 */
263 LCDHSYN_MARK, LCDCS_MARK, LCDCS2_MARK, DACK3_MARK,
264 LCDDISP_MARK, LCDRS_MARK, DREQ3_MARK, MSIOF0L_RSCK_MARK,
265 LCDCSYN_MARK, LCDCSYN2_MARK, DV_CKI_MARK,
266 LCDLCLK_MARK, DREQ1_MARK, MSIOF0L_RXD_MARK,
267 LCDDON_MARK, LCDDON2_MARK, DACK1_MARK, MSIOF0L_TXD_MARK,
268 VIO_DR0_MARK, VIO_DR1_MARK, VIO_DR2_MARK, VIO_DR3_MARK,
269 VIO_DR4_MARK, VIO_DR5_MARK, VIO_DR6_MARK, VIO_DR7_MARK,
270 VIO_VDR_MARK, VIO_HDR_MARK,
271 VIO_CLKR_MARK, VIO_CKOR_MARK,
272 SCIFA1_TXD_MARK, GPS_PGFA0_MARK,
273 SCIFA1_SCK_MARK, GPS_PGFA1_MARK,
274 SCIFA1_RTS_MARK, GPS_EPPSINMON_MARK,
275 SCIFA1_RXD_MARK, SCIFA1_CTS_MARK,
276 MSIOF1_TXD_MARK, SCIFA1_TXD2_MARK, GPS_TXD_MARK,
277 MSIOF1_TSYNC_MARK, SCIFA1_CTS2_MARK, I2C_SDA2_MARK,
278 MSIOF1_TSCK_MARK, SCIFA1_SCK2_MARK,
279 MSIOF1_RXD_MARK, SCIFA1_RXD2_MARK, GPS_RXD_MARK,
280 MSIOF1_RSCK_MARK, SCIFA1_RTS2_MARK,
281 MSIOF1_RSYNC_MARK, I2C_SCL2_MARK,
282 MSIOF1_MCK0_MARK, MSIOF1_MCK1_MARK,
283 MSIOF1_SS1_MARK, EDBGREQ3_MARK,
284 MSIOF1_SS2_MARK,
285 PORT236_IROUT_MARK, IRDA_OUT_MARK,
286 IRDA_IN_MARK, IRDA_FIRSEL_MARK,
287 TPU1TO0_MARK, TS_SPSYNC3_MARK,
288 TPU1TO1_MARK, TS_SDAT3_MARK,
289 TPU1TO2_MARK, TS_SDEN3_MARK, PORT241_MSIOF2_SS1_MARK,
290 TPU1TO3_MARK, PORT242_MSIOF2_TSCK_MARK,
291 M13_BSW_MARK, PORT243_MSIOF2_TSYNC_MARK,
292 M14_GSW_MARK, PORT244_MSIOF2_TXD_MARK,
293 PORT245_IROUT_MARK, M15_RSW_MARK,
294 SOUT3_MARK, SCIFA2_TXD1_MARK,
295 SIN3_MARK, SCIFA2_RXD1_MARK,
296 XRTS3_MARK, SCIFA2_RTS1_MARK, PORT248_MSIOF2_SS2_MARK,
297 XCTS3_MARK, SCIFA2_CTS1_MARK, PORT249_MSIOF2_RXD_MARK,
298 DINT_MARK, SCIFA2_SCK1_MARK, TS_SCK3_MARK,
299 SDHICLK0_MARK, TCK2_MARK,
300 SDHICD0_MARK,
301 SDHID0_0_MARK, TMS2_MARK,
302 SDHID0_1_MARK, TDO2_MARK,
303 SDHID0_2_MARK, TDI2_MARK,
304 SDHID0_3_MARK, RTCK2_MARK,
305
306 /* 49-6 */
307 SDHICMD0_MARK, TRST2_MARK,
308 SDHIWP0_MARK, EDBGREQ2_MARK,
309 SDHICLK1_MARK, TCK3_MARK,
310 SDHID1_0_MARK, M11_SLCD_SO2_MARK,
311 TS_SPSYNC2_MARK, TMS3_MARK,
312 SDHID1_1_MARK, M9_SLCD_AO2_MARK,
313 TS_SDAT2_MARK, TDO3_MARK,
314 SDHID1_2_MARK, M10_SLCD_CK2_MARK,
315 TS_SDEN2_MARK, TDI3_MARK,
316 SDHID1_3_MARK, M12_SLCD_CE2_MARK,
317 TS_SCK2_MARK, RTCK3_MARK,
318 SDHICMD1_MARK, TRST3_MARK,
319 SDHICLK2_MARK, SCIFB_SCK_MARK,
320 SDHID2_0_MARK, SCIFB_TXD_MARK,
321 SDHID2_1_MARK, SCIFB_CTS_MARK,
322 SDHID2_2_MARK, SCIFB_RXD_MARK,
323 SDHID2_3_MARK, SCIFB_RTS_MARK,
324 SDHICMD2_MARK,
325 RESETOUTS_MARK,
326 DIVLOCK_MARK,
327 PINMUX_MARK_END,
328};
329
330#define PORT_DATA_I(nr) \
331 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN)
332
333#define PORT_DATA_I_PD(nr) \
334 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
335 PORT##nr##_IN, PORT##nr##_IN_PD)
336
337#define PORT_DATA_I_PU(nr) \
338 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
339 PORT##nr##_IN, PORT##nr##_IN_PU)
340
341#define PORT_DATA_I_PU_PD(nr) \
342 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
343 PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU)
344
345#define PORT_DATA_O(nr) \
346 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT)
347
348#define PORT_DATA_IO(nr) \
349 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
350 PORT##nr##_IN)
351
352#define PORT_DATA_IO_PD(nr) \
353 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
354 PORT##nr##_IN, PORT##nr##_IN_PD)
355
356#define PORT_DATA_IO_PU(nr) \
357 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
358 PORT##nr##_IN, PORT##nr##_IN_PU)
359
360#define PORT_DATA_IO_PU_PD(nr) \
361 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
362 PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU)
363
364
365static pinmux_enum_t pinmux_data[] = {
366
367 /* specify valid pin states for each pin in GPIO mode */
368
369 /* 49-1 (GPIO) */
370 PORT_DATA_I_PD(0),
371 PORT_DATA_I_PU(1), PORT_DATA_I_PU(2), PORT_DATA_I_PU(3),
372 PORT_DATA_I_PU(4), PORT_DATA_I_PU(5), PORT_DATA_I_PU(6),
373 PORT_DATA_I_PU(7), PORT_DATA_I_PU(8), PORT_DATA_I_PU(9),
374 PORT_DATA_I_PU(10), PORT_DATA_I_PU(11), PORT_DATA_I_PU(12),
375 PORT_DATA_I_PU(13),
376 PORT_DATA_IO_PU_PD(14), PORT_DATA_IO_PU_PD(15),
377 PORT_DATA_O(16), PORT_DATA_O(17), PORT_DATA_O(18), PORT_DATA_O(19),
378 PORT_DATA_O(20), PORT_DATA_O(21), PORT_DATA_O(22), PORT_DATA_O(23),
379 PORT_DATA_O(24), PORT_DATA_O(25), PORT_DATA_O(26),
380 PORT_DATA_I_PD(27), PORT_DATA_I_PD(28),
381 PORT_DATA_O(29), PORT_DATA_O(30), PORT_DATA_O(31), PORT_DATA_O(32),
382 PORT_DATA_IO_PU(33),
383 PORT_DATA_O(34),
384 PORT_DATA_I_PU(35),
385 PORT_DATA_O(36),
386 PORT_DATA_I_PU_PD(37),
387
388 /* 49-2 (GPIO) */
389 PORT_DATA_IO_PU_PD(38),
390 PORT_DATA_IO_PD(39), PORT_DATA_IO_PD(40), PORT_DATA_IO_PD(41),
391 PORT_DATA_O(42), PORT_DATA_O(43), PORT_DATA_O(44), PORT_DATA_O(45),
392 PORT_DATA_O(46), PORT_DATA_O(47),
393 PORT_DATA_I_PU_PD(48), PORT_DATA_I_PU_PD(49), PORT_DATA_I_PU_PD(50),
394 PORT_DATA_IO_PD(51), PORT_DATA_IO_PD(52),
395 PORT_DATA_O(53),
396 PORT_DATA_IO_PD(54),
397 PORT_DATA_I_PU_PD(55),
398 PORT_DATA_IO_PU_PD(56),
399 PORT_DATA_I_PU_PD(57),
400 PORT_DATA_IO_PU_PD(58),
401 PORT_DATA_O(59), PORT_DATA_O(60), PORT_DATA_O(61), PORT_DATA_O(62),
402 PORT_DATA_O(63),
403 PORT_DATA_I_PU(64),
404 PORT_DATA_O(65), PORT_DATA_O(66), PORT_DATA_O(67), PORT_DATA_O(68),
405 PORT_DATA_IO_PD(69), PORT_DATA_IO_PD(70),
406 PORT_DATA_I_PD(71), PORT_DATA_I_PD(72), PORT_DATA_I_PD(73),
407 PORT_DATA_I_PD(74),
408 PORT_DATA_IO_PU_PD(75), PORT_DATA_IO_PU_PD(76),
409 PORT_DATA_IO_PD(77), PORT_DATA_IO_PD(78),
410 PORT_DATA_O(79),
411 PORT_DATA_IO_PD(80), PORT_DATA_IO_PD(81), PORT_DATA_IO_PD(82),
412 PORT_DATA_IO_PU_PD(83), PORT_DATA_IO_PU_PD(84),
413 PORT_DATA_IO_PU_PD(85), PORT_DATA_IO_PU_PD(86),
414 PORT_DATA_I_PD(87),
415 PORT_DATA_IO_PU_PD(88),
416 PORT_DATA_I_PU_PD(89), PORT_DATA_I_PU_PD(90),
417
418 /* 49-3 (GPIO) */
419 PORT_DATA_O(91), PORT_DATA_O(92), PORT_DATA_O(93), PORT_DATA_O(94),
420 PORT_DATA_I_PU_PD(95),
421 PORT_DATA_IO_PU_PD(96), PORT_DATA_IO_PU_PD(97), PORT_DATA_IO_PU_PD(98),
422 PORT_DATA_IO_PU_PD(99), PORT_DATA_IO_PU_PD(100),
423 PORT_DATA_IO(101), PORT_DATA_IO(102), PORT_DATA_IO(103),
424 PORT_DATA_IO_PD(104), PORT_DATA_IO_PD(105), PORT_DATA_IO_PD(106),
425 PORT_DATA_IO_PD(107),
426 PORT_DATA_IO_PU_PD(108), PORT_DATA_IO_PU_PD(109),
427 PORT_DATA_IO_PU_PD(110), PORT_DATA_IO_PU_PD(111),
428 PORT_DATA_IO_PU_PD(112), PORT_DATA_IO_PU_PD(113),
429 PORT_DATA_IO_PU_PD(114),
430 PORT_DATA_IO_PU(115), PORT_DATA_IO_PU(116), PORT_DATA_IO_PU(117),
431 PORT_DATA_IO_PU(118), PORT_DATA_IO_PU(119), PORT_DATA_IO_PU(120),
432 PORT_DATA_IO_PU(121), PORT_DATA_IO_PU(122), PORT_DATA_IO_PU(123),
433 PORT_DATA_IO_PU(124), PORT_DATA_IO_PU(125), PORT_DATA_IO_PU(126),
434 PORT_DATA_IO_PU(127), PORT_DATA_IO_PU(128), PORT_DATA_IO_PU(129),
435 PORT_DATA_IO_PU(130),
436 PORT_DATA_O(131), PORT_DATA_O(132), PORT_DATA_O(133),
437 PORT_DATA_IO_PU(134),
438 PORT_DATA_O(135), PORT_DATA_O(136),
439 PORT_DATA_I_PU_PD(137),
440 PORT_DATA_IO(138),
441 PORT_DATA_IO_PU_PD(139),
442 PORT_DATA_IO(140), PORT_DATA_IO(141),
443 PORT_DATA_I_PU(142),
444 PORT_DATA_O(143), PORT_DATA_O(144),
445 PORT_DATA_I_PU(145),
446
447 /* 49-4 (GPIO) */
448 PORT_DATA_O(146),
449 PORT_DATA_I_PU_PD(147),
450 PORT_DATA_I_PD(148), PORT_DATA_I_PD(149),
451 PORT_DATA_IO_PD(150), PORT_DATA_IO_PD(151), PORT_DATA_IO_PD(152),
452 PORT_DATA_IO_PD(153), PORT_DATA_IO_PD(154), PORT_DATA_IO_PD(155),
453 PORT_DATA_IO_PD(156), PORT_DATA_IO_PD(157), PORT_DATA_IO_PD(158),
454 PORT_DATA_IO_PD(159), PORT_DATA_IO_PD(160), PORT_DATA_IO_PD(161),
455 PORT_DATA_IO_PD(162), PORT_DATA_IO_PD(163), PORT_DATA_IO_PD(164),
456 PORT_DATA_IO_PD(165), PORT_DATA_IO_PD(166),
457 PORT_DATA_IO_PU_PD(167),
458 PORT_DATA_O(168),
459 PORT_DATA_I_PD(169), PORT_DATA_I_PD(170),
460 PORT_DATA_O(171),
461 PORT_DATA_IO_PD(172), PORT_DATA_IO_PD(173),
462 PORT_DATA_O(174),
463 PORT_DATA_IO_PD(175), PORT_DATA_IO_PD(176), PORT_DATA_IO_PD(177),
464 PORT_DATA_IO_PD(178), PORT_DATA_IO_PD(179), PORT_DATA_IO_PD(180),
465 PORT_DATA_IO_PD(181), PORT_DATA_IO_PD(182), PORT_DATA_IO_PD(183),
466 PORT_DATA_IO_PD(184), PORT_DATA_IO_PD(185), PORT_DATA_IO_PD(186),
467 PORT_DATA_IO_PD(187), PORT_DATA_IO_PD(188), PORT_DATA_IO_PD(189),
468 PORT_DATA_IO_PD(190), PORT_DATA_IO_PD(191), PORT_DATA_IO_PD(192),
469 PORT_DATA_IO_PD(193), PORT_DATA_IO_PD(194), PORT_DATA_IO_PD(195),
470 PORT_DATA_IO_PD(196), PORT_DATA_IO_PD(197), PORT_DATA_IO_PD(198),
471 PORT_DATA_O(199),
472 PORT_DATA_IO_PD(200),
473
474 /* 49-5 (GPIO) */
475 PORT_DATA_O(201),
476 PORT_DATA_IO_PD(202), PORT_DATA_IO_PD(203),
477 PORT_DATA_I(204),
478 PORT_DATA_O(205),
479 PORT_DATA_IO_PD(206), PORT_DATA_IO_PD(207), PORT_DATA_IO_PD(208),
480 PORT_DATA_IO_PD(209), PORT_DATA_IO_PD(210), PORT_DATA_IO_PD(211),
481 PORT_DATA_IO_PD(212), PORT_DATA_IO_PD(213), PORT_DATA_IO_PD(214),
482 PORT_DATA_IO_PD(215), PORT_DATA_IO_PD(216),
483 PORT_DATA_O(217),
484 PORT_DATA_I_PU_PD(218), PORT_DATA_I_PU_PD(219),
485 PORT_DATA_O(220), PORT_DATA_O(221), PORT_DATA_O(222),
486 PORT_DATA_I_PD(223),
487 PORT_DATA_I_PU_PD(224),
488 PORT_DATA_O(225),
489 PORT_DATA_IO_PD(226),
490 PORT_DATA_IO_PU_PD(227),
491 PORT_DATA_I_PD(228),
492 PORT_DATA_IO_PD(229), PORT_DATA_IO_PD(230),
493 PORT_DATA_I_PU_PD(231), PORT_DATA_I_PU_PD(232),
494 PORT_DATA_IO_PU_PD(233), PORT_DATA_IO_PU_PD(234),
495 PORT_DATA_I_PU_PD(235),
496 PORT_DATA_O(236),
497 PORT_DATA_I_PD(237),
498 PORT_DATA_IO_PU_PD(238), PORT_DATA_IO_PU_PD(239),
499 PORT_DATA_IO_PD(240), PORT_DATA_IO_PD(241),
500 PORT_DATA_IO_PD(242), PORT_DATA_IO_PD(243),
501 PORT_DATA_O(244),
502 PORT_DATA_IO_PU_PD(245),
503 PORT_DATA_O(246),
504 PORT_DATA_I_PD(247),
505 PORT_DATA_IO_PU_PD(248),
506 PORT_DATA_I_PU_PD(249),
507 PORT_DATA_IO_PD(250), PORT_DATA_IO_PD(251),
508 PORT_DATA_IO_PU_PD(252), PORT_DATA_IO_PU_PD(253),
509 PORT_DATA_IO_PU_PD(254), PORT_DATA_IO_PU_PD(255),
510 PORT_DATA_IO_PU_PD(256),
511
512 /* 49-6 (GPIO) */
513 PORT_DATA_IO_PU_PD(257), PORT_DATA_IO_PU_PD(258),
514 PORT_DATA_IO_PD(259),
515 PORT_DATA_IO_PU(260), PORT_DATA_IO_PU(261), PORT_DATA_IO_PU(262),
516 PORT_DATA_IO_PU(263), PORT_DATA_IO_PU(264),
517 PORT_DATA_O(265),
518 PORT_DATA_IO_PU(266), PORT_DATA_IO_PU(267), PORT_DATA_IO_PU(268),
519 PORT_DATA_IO_PU(269), PORT_DATA_IO_PU(270),
520 PORT_DATA_O(271),
521 PORT_DATA_I_PD(272),
522
523 /* Special Pull-up / Pull-down Functions */
524 PINMUX_DATA(PORT48_KEYIN0_PU_MARK, MSELBCR_MSEL2_1,
525 PORT48_FN2, PORT48_IN_PU),
526 PINMUX_DATA(PORT49_KEYIN1_PU_MARK, MSELBCR_MSEL2_1,
527 PORT49_FN2, PORT49_IN_PU),
528 PINMUX_DATA(PORT50_KEYIN2_PU_MARK, MSELBCR_MSEL2_1,
529 PORT50_FN2, PORT50_IN_PU),
530 PINMUX_DATA(PORT55_KEYIN3_PU_MARK, MSELBCR_MSEL2_1,
531 PORT55_FN2, PORT55_IN_PU),
532 PINMUX_DATA(PORT56_KEYIN4_PU_MARK, MSELBCR_MSEL2_1,
533 PORT56_FN2, PORT56_IN_PU),
534 PINMUX_DATA(PORT57_KEYIN5_PU_MARK, MSELBCR_MSEL2_1,
535 PORT57_FN2, PORT57_IN_PU),
536 PINMUX_DATA(PORT58_KEYIN6_PU_MARK, MSELBCR_MSEL2_1,
537 PORT58_FN2, PORT58_IN_PU),
538
539 /* 49-1 (FN) */
540 PINMUX_DATA(VBUS0_MARK, PORT0_FN1),
541 PINMUX_DATA(CPORT0_MARK, PORT1_FN1),
542 PINMUX_DATA(CPORT1_MARK, PORT2_FN1),
543 PINMUX_DATA(CPORT2_MARK, PORT3_FN1),
544 PINMUX_DATA(CPORT3_MARK, PORT4_FN1),
545 PINMUX_DATA(CPORT4_MARK, PORT5_FN1),
546 PINMUX_DATA(CPORT5_MARK, PORT6_FN1),
547 PINMUX_DATA(CPORT6_MARK, PORT7_FN1),
548 PINMUX_DATA(CPORT7_MARK, PORT8_FN1),
549 PINMUX_DATA(CPORT8_MARK, PORT9_FN1),
550 PINMUX_DATA(CPORT9_MARK, PORT10_FN1),
551 PINMUX_DATA(CPORT10_MARK, PORT11_FN1),
552 PINMUX_DATA(CPORT11_MARK, PORT12_FN1),
553 PINMUX_DATA(SIN2_MARK, PORT12_FN2),
554 PINMUX_DATA(CPORT12_MARK, PORT13_FN1),
555 PINMUX_DATA(XCTS2_MARK, PORT13_FN2),
556 PINMUX_DATA(CPORT13_MARK, PORT14_FN1),
557 PINMUX_DATA(RFSPO4_MARK, PORT14_FN2),
558 PINMUX_DATA(CPORT14_MARK, PORT15_FN1),
559 PINMUX_DATA(RFSPO5_MARK, PORT15_FN2),
560 PINMUX_DATA(CPORT15_MARK, PORT16_FN1),
561 PINMUX_DATA(CPORT16_MARK, PORT17_FN1),
562 PINMUX_DATA(CPORT17_MARK, PORT18_FN1),
563 PINMUX_DATA(SOUT2_MARK, PORT18_FN2),
564 PINMUX_DATA(CPORT18_MARK, PORT19_FN1),
565 PINMUX_DATA(XRTS2_MARK, PORT19_FN1),
566 PINMUX_DATA(CPORT19_MARK, PORT20_FN1),
567 PINMUX_DATA(CPORT20_MARK, PORT21_FN1),
568 PINMUX_DATA(RFSPO6_MARK, PORT21_FN2),
569 PINMUX_DATA(CPORT21_MARK, PORT22_FN1),
570 PINMUX_DATA(STATUS0_MARK, PORT22_FN2),
571 PINMUX_DATA(CPORT22_MARK, PORT23_FN1),
572 PINMUX_DATA(STATUS1_MARK, PORT23_FN2),
573 PINMUX_DATA(CPORT23_MARK, PORT24_FN1),
574 PINMUX_DATA(STATUS2_MARK, PORT24_FN2),
575 PINMUX_DATA(RFSPO7_MARK, PORT24_FN3),
576 PINMUX_DATA(MPORT0_MARK, PORT25_FN1),
577 PINMUX_DATA(MPORT1_MARK, PORT26_FN1),
578 PINMUX_DATA(B_SYNLD1_MARK, PORT27_FN1),
579 PINMUX_DATA(B_SYNLD2_MARK, PORT28_FN1),
580 PINMUX_DATA(XMAINPS_MARK, PORT29_FN1),
581 PINMUX_DATA(XDIVPS_MARK, PORT30_FN1),
582 PINMUX_DATA(XIDRST_MARK, PORT31_FN1),
583 PINMUX_DATA(IDCLK_MARK, PORT32_FN1),
584 PINMUX_DATA(IDIO_MARK, PORT33_FN1),
585 PINMUX_DATA(SOUT1_MARK, PORT34_FN1),
586 PINMUX_DATA(SCIFA4_TXD_MARK, PORT34_FN2),
587 PINMUX_DATA(M02_BERDAT_MARK, PORT34_FN3),
588 PINMUX_DATA(SIN1_MARK, PORT35_FN1),
589 PINMUX_DATA(SCIFA4_RXD_MARK, PORT35_FN2),
590 PINMUX_DATA(XWUP_MARK, PORT35_FN3),
591 PINMUX_DATA(XRTS1_MARK, PORT36_FN1),
592 PINMUX_DATA(SCIFA4_RTS_MARK, PORT36_FN2),
593 PINMUX_DATA(M03_BERCLK_MARK, PORT36_FN3),
594 PINMUX_DATA(XCTS1_MARK, PORT37_FN1),
595 PINMUX_DATA(SCIFA4_CTS_MARK, PORT37_FN2),
596
597 /* 49-2 (FN) */
598 PINMUX_DATA(HSU_IQ_AGC6_MARK, PORT38_FN1),
599 PINMUX_DATA(MFG2_IN2_MARK, PORT38_FN2),
600 PINMUX_DATA(MSIOF2_MCK0_MARK, PORT38_FN3),
601 PINMUX_DATA(HSU_IQ_AGC5_MARK, PORT39_FN1),
602 PINMUX_DATA(MFG2_IN1_MARK, PORT39_FN2),
603 PINMUX_DATA(MSIOF2_MCK1_MARK, PORT39_FN3),
604 PINMUX_DATA(HSU_IQ_AGC4_MARK, PORT40_FN1),
605 PINMUX_DATA(MSIOF2_RSYNC_MARK, PORT40_FN3),
606 PINMUX_DATA(HSU_IQ_AGC3_MARK, PORT41_FN1),
607 PINMUX_DATA(MFG2_OUT1_MARK, PORT41_FN2),
608 PINMUX_DATA(MSIOF2_RSCK_MARK, PORT41_FN3),
609 PINMUX_DATA(HSU_IQ_AGC2_MARK, PORT42_FN1),
610 PINMUX_DATA(PORT42_KEYOUT0_MARK, MSELBCR_MSEL2_1, PORT42_FN2),
611 PINMUX_DATA(HSU_IQ_AGC1_MARK, PORT43_FN1),
612 PINMUX_DATA(PORT43_KEYOUT1_MARK, MSELBCR_MSEL2_1, PORT43_FN2),
613 PINMUX_DATA(HSU_IQ_AGC0_MARK, PORT44_FN1),
614 PINMUX_DATA(PORT44_KEYOUT2_MARK, MSELBCR_MSEL2_1, PORT44_FN2),
615 PINMUX_DATA(HSU_IQ_AGC_ST_MARK, PORT45_FN1),
616 PINMUX_DATA(PORT45_KEYOUT3_MARK, MSELBCR_MSEL2_1, PORT45_FN2),
617 PINMUX_DATA(HSU_IQ_PDO_MARK, PORT46_FN1),
618 PINMUX_DATA(PORT46_KEYOUT4_MARK, MSELBCR_MSEL2_1, PORT46_FN2),
619 PINMUX_DATA(HSU_IQ_PYO_MARK, PORT47_FN1),
620 PINMUX_DATA(PORT47_KEYOUT5_MARK, MSELBCR_MSEL2_1, PORT47_FN2),
621 PINMUX_DATA(HSU_EN_TXMUX_G3MO_MARK, PORT48_FN1),
622 PINMUX_DATA(PORT48_KEYIN0_MARK, MSELBCR_MSEL2_1, PORT48_FN2),
623 PINMUX_DATA(HSU_I_TXMUX_G3MO_MARK, PORT49_FN1),
624 PINMUX_DATA(PORT49_KEYIN1_MARK, MSELBCR_MSEL2_1, PORT49_FN2),
625 PINMUX_DATA(HSU_Q_TXMUX_G3MO_MARK, PORT50_FN1),
626 PINMUX_DATA(PORT50_KEYIN2_MARK, MSELBCR_MSEL2_1, PORT50_FN2),
627 PINMUX_DATA(HSU_SYO_MARK, PORT51_FN1),
628 PINMUX_DATA(PORT51_MSIOF2_TSYNC_MARK, PORT51_FN2),
629 PINMUX_DATA(HSU_SDO_MARK, PORT52_FN1),
630 PINMUX_DATA(PORT52_MSIOF2_TSCK_MARK, PORT52_FN2),
631 PINMUX_DATA(HSU_TGTTI_G3MO_MARK, PORT53_FN1),
632 PINMUX_DATA(PORT53_MSIOF2_TXD_MARK, PORT53_FN2),
633 PINMUX_DATA(B_TIME_STAMP_MARK, PORT54_FN1),
634 PINMUX_DATA(PORT54_MSIOF2_RXD_MARK, PORT54_FN2),
635 PINMUX_DATA(HSU_SDI_MARK, PORT55_FN1),
636 PINMUX_DATA(PORT55_KEYIN3_MARK, MSELBCR_MSEL2_1, PORT55_FN2),
637 PINMUX_DATA(HSU_SCO_MARK, PORT56_FN1),
638 PINMUX_DATA(PORT56_KEYIN4_MARK, MSELBCR_MSEL2_1, PORT56_FN2),
639 PINMUX_DATA(HSU_DREQ_MARK, PORT57_FN1),
640 PINMUX_DATA(PORT57_KEYIN5_MARK, MSELBCR_MSEL2_1, PORT57_FN2),
641 PINMUX_DATA(HSU_DACK_MARK, PORT58_FN1),
642 PINMUX_DATA(PORT58_KEYIN6_MARK, MSELBCR_MSEL2_1, PORT58_FN2),
643 PINMUX_DATA(HSU_CLK61M_MARK, PORT59_FN1),
644 PINMUX_DATA(PORT59_MSIOF2_SS1_MARK, PORT59_FN2),
645 PINMUX_DATA(HSU_XRST_MARK, PORT60_FN1),
646 PINMUX_DATA(PORT60_MSIOF2_SS2_MARK, PORT60_FN2),
647 PINMUX_DATA(PCMCLKO_MARK, PORT61_FN1),
648 PINMUX_DATA(SYNC8KO_MARK, PORT62_FN1),
649 PINMUX_DATA(DNPCM_A_MARK, PORT63_FN1),
650 PINMUX_DATA(UPPCM_A_MARK, PORT64_FN1),
651 PINMUX_DATA(XTALB1L_MARK, PORT65_FN1),
652 PINMUX_DATA(GPS_AGC1_MARK, PORT66_FN1),
653 PINMUX_DATA(SCIFA0_RTS_MARK, PORT66_FN2),
654 PINMUX_DATA(GPS_AGC2_MARK, PORT67_FN1),
655 PINMUX_DATA(SCIFA0_SCK_MARK, PORT67_FN2),
656 PINMUX_DATA(GPS_AGC3_MARK, PORT68_FN1),
657 PINMUX_DATA(SCIFA0_TXD_MARK, PORT68_FN2),
658 PINMUX_DATA(GPS_AGC4_MARK, PORT69_FN1),
659 PINMUX_DATA(SCIFA0_RXD_MARK, PORT69_FN2),
660 PINMUX_DATA(GPS_PWRD_MARK, PORT70_FN1),
661 PINMUX_DATA(SCIFA0_CTS_MARK, PORT70_FN2),
662 PINMUX_DATA(GPS_IM_MARK, PORT71_FN1),
663 PINMUX_DATA(GPS_IS_MARK, PORT72_FN1),
664 PINMUX_DATA(GPS_QM_MARK, PORT73_FN1),
665 PINMUX_DATA(GPS_QS_MARK, PORT74_FN1),
666 PINMUX_DATA(SIUBOMC_MARK, PORT75_FN1),
667 PINMUX_DATA(TPU2TO0_MARK, PORT75_FN3),
668 PINMUX_DATA(SIUCKB_MARK, PORT76_FN1),
669 PINMUX_DATA(TPU2TO1_MARK, PORT76_FN3),
670 PINMUX_DATA(SIUBOLR_MARK, PORT77_FN1),
671 PINMUX_DATA(BBIF2_TSYNC_MARK, PORT77_FN2),
672 PINMUX_DATA(TPU2TO2_MARK, PORT77_FN3),
673 PINMUX_DATA(SIUBOBT_MARK, PORT78_FN1),
674 PINMUX_DATA(BBIF2_TSCK_MARK, PORT78_FN2),
675 PINMUX_DATA(TPU2TO3_MARK, PORT78_FN3),
676 PINMUX_DATA(SIUBOSLD_MARK, PORT79_FN1),
677 PINMUX_DATA(BBIF2_TXD_MARK, PORT79_FN2),
678 PINMUX_DATA(TPU3TO0_MARK, PORT79_FN3),
679 PINMUX_DATA(SIUBILR_MARK, PORT80_FN1),
680 PINMUX_DATA(TPU3TO1_MARK, PORT80_FN3),
681 PINMUX_DATA(SIUBIBT_MARK, PORT81_FN1),
682 PINMUX_DATA(TPU3TO2_MARK, PORT81_FN3),
683 PINMUX_DATA(SIUBISLD_MARK, PORT82_FN1),
684 PINMUX_DATA(TPU3TO3_MARK, PORT82_FN3),
685 PINMUX_DATA(NMI_MARK, PORT83_FN1),
686 PINMUX_DATA(TPU4TO0_MARK, PORT83_FN3),
687 PINMUX_DATA(DNPCM_M_MARK, PORT84_FN1),
688 PINMUX_DATA(TPU4TO1_MARK, PORT84_FN3),
689 PINMUX_DATA(TPU4TO2_MARK, PORT85_FN3),
690 PINMUX_DATA(TPU4TO3_MARK, PORT86_FN3),
691 PINMUX_DATA(IRQ_TMPB_MARK, PORT87_FN1),
692 PINMUX_DATA(PWEN_MARK, PORT88_FN1),
693 PINMUX_DATA(MFG1_OUT1_MARK, PORT88_FN2),
694 PINMUX_DATA(OVCN_MARK, PORT89_FN1),
695 PINMUX_DATA(MFG1_IN1_MARK, PORT89_FN2),
696 PINMUX_DATA(OVCN2_MARK, PORT90_FN1),
697 PINMUX_DATA(MFG1_IN2_MARK, PORT90_FN2),
698
699 /* 49-3 (FN) */
700 PINMUX_DATA(RFSPO1_MARK, PORT91_FN1),
701 PINMUX_DATA(RFSPO2_MARK, PORT92_FN1),
702 PINMUX_DATA(RFSPO3_MARK, PORT93_FN1),
703 PINMUX_DATA(PORT93_VIO_CKO2_MARK, PORT93_FN2),
704 PINMUX_DATA(USBTERM_MARK, PORT94_FN1),
705 PINMUX_DATA(EXTLP_MARK, PORT94_FN2),
706 PINMUX_DATA(IDIN_MARK, PORT95_FN1),
707 PINMUX_DATA(SCIFA5_CTS_MARK, PORT96_FN1),
708 PINMUX_DATA(MFG0_IN1_MARK, PORT96_FN2),
709 PINMUX_DATA(SCIFA5_RTS_MARK, PORT97_FN1),
710 PINMUX_DATA(MFG0_IN2_MARK, PORT97_FN2),
711 PINMUX_DATA(SCIFA5_RXD_MARK, PORT98_FN1),
712 PINMUX_DATA(SCIFA5_TXD_MARK, PORT99_FN1),
713 PINMUX_DATA(SCIFA5_SCK_MARK, PORT100_FN1),
714 PINMUX_DATA(MFG0_OUT1_MARK, PORT100_FN2),
715 PINMUX_DATA(A0_EA0_MARK, PORT101_FN1),
716 PINMUX_DATA(BS_MARK, PORT101_FN2),
717 PINMUX_DATA(A14_EA14_MARK, PORT102_FN1),
718 PINMUX_DATA(PORT102_KEYOUT0_MARK, MSELBCR_MSEL2_0, PORT102_FN2),
719 PINMUX_DATA(A15_EA15_MARK, PORT103_FN1),
720 PINMUX_DATA(PORT103_KEYOUT1_MARK, MSELBCR_MSEL2_0, PORT103_FN2),
721 PINMUX_DATA(DV_CLKOL_MARK, PORT103_FN3),
722 PINMUX_DATA(A16_EA16_MARK, PORT104_FN1),
723 PINMUX_DATA(PORT104_KEYOUT2_MARK, MSELBCR_MSEL2_0, PORT104_FN2),
724 PINMUX_DATA(DV_VSYNCL_MARK, PORT104_FN3),
725 PINMUX_DATA(MSIOF0_SS1_MARK, PORT104_FN4),
726 PINMUX_DATA(A17_EA17_MARK, PORT105_FN1),
727 PINMUX_DATA(PORT105_KEYOUT3_MARK, MSELBCR_MSEL2_0, PORT105_FN2),
728 PINMUX_DATA(DV_HSYNCL_MARK, PORT105_FN3),
729 PINMUX_DATA(MSIOF0_TSYNC_MARK, PORT105_FN4),
730 PINMUX_DATA(A18_EA18_MARK, PORT106_FN1),
731 PINMUX_DATA(PORT106_KEYOUT4_MARK, MSELBCR_MSEL2_0, PORT106_FN2),
732 PINMUX_DATA(DV_DL0_MARK, PORT106_FN3),
733 PINMUX_DATA(MSIOF0_TSCK_MARK, PORT106_FN4),
734 PINMUX_DATA(A19_EA19_MARK, PORT107_FN1),
735 PINMUX_DATA(PORT107_KEYOUT5_MARK, MSELBCR_MSEL2_0, PORT107_FN2),
736 PINMUX_DATA(DV_DL1_MARK, PORT107_FN3),
737 PINMUX_DATA(MSIOF0_TXD_MARK, PORT107_FN4),
738 PINMUX_DATA(A20_EA20_MARK, PORT108_FN1),
739 PINMUX_DATA(PORT108_KEYIN0_MARK, MSELBCR_MSEL2_0, PORT108_FN2),
740 PINMUX_DATA(DV_DL2_MARK, PORT108_FN3),
741 PINMUX_DATA(MSIOF0_RSCK_MARK, PORT108_FN4),
742 PINMUX_DATA(A21_EA21_MARK, PORT109_FN1),
743 PINMUX_DATA(PORT109_KEYIN1_MARK, MSELBCR_MSEL2_0, PORT109_FN2),
744 PINMUX_DATA(DV_DL3_MARK, PORT109_FN3),
745 PINMUX_DATA(MSIOF0_RSYNC_MARK, PORT109_FN4),
746 PINMUX_DATA(A22_EA22_MARK, PORT110_FN1),
747 PINMUX_DATA(PORT110_KEYIN2_MARK, MSELBCR_MSEL2_0, PORT110_FN2),
748 PINMUX_DATA(DV_DL4_MARK, PORT110_FN3),
749 PINMUX_DATA(MSIOF0_MCK0_MARK, PORT110_FN4),
750 PINMUX_DATA(A23_EA23_MARK, PORT111_FN1),
751 PINMUX_DATA(PORT111_KEYIN3_MARK, MSELBCR_MSEL2_0, PORT111_FN2),
752 PINMUX_DATA(DV_DL5_MARK, PORT111_FN3),
753 PINMUX_DATA(MSIOF0_MCK1_MARK, PORT111_FN4),
754 PINMUX_DATA(A24_EA24_MARK, PORT112_FN1),
755 PINMUX_DATA(PORT112_KEYIN4_MARK, MSELBCR_MSEL2_0, PORT112_FN2),
756 PINMUX_DATA(DV_DL6_MARK, PORT112_FN3),
757 PINMUX_DATA(MSIOF0_RXD_MARK, PORT112_FN4),
758 PINMUX_DATA(A25_EA25_MARK, PORT113_FN1),
759 PINMUX_DATA(PORT113_KEYIN5_MARK, MSELBCR_MSEL2_0, PORT113_FN2),
760 PINMUX_DATA(DV_DL7_MARK, PORT113_FN3),
761 PINMUX_DATA(MSIOF0_SS2_MARK, PORT113_FN4),
762 PINMUX_DATA(A26_MARK, PORT114_FN1),
763 PINMUX_DATA(PORT113_KEYIN6_MARK, MSELBCR_MSEL2_0, PORT114_FN2),
764 PINMUX_DATA(DV_CLKIL_MARK, PORT114_FN3),
765 PINMUX_DATA(D0_ED0_NAF0_MARK, PORT115_FN1),
766 PINMUX_DATA(D1_ED1_NAF1_MARK, PORT116_FN1),
767 PINMUX_DATA(D2_ED2_NAF2_MARK, PORT117_FN1),
768 PINMUX_DATA(D3_ED3_NAF3_MARK, PORT118_FN1),
769 PINMUX_DATA(D4_ED4_NAF4_MARK, PORT119_FN1),
770 PINMUX_DATA(D5_ED5_NAF5_MARK, PORT120_FN1),
771 PINMUX_DATA(D6_ED6_NAF6_MARK, PORT121_FN1),
772 PINMUX_DATA(D7_ED7_NAF7_MARK, PORT122_FN1),
773 PINMUX_DATA(D8_ED8_NAF8_MARK, PORT123_FN1),
774 PINMUX_DATA(D9_ED9_NAF9_MARK, PORT124_FN1),
775 PINMUX_DATA(D10_ED10_NAF10_MARK, PORT125_FN1),
776 PINMUX_DATA(D11_ED11_NAF11_MARK, PORT126_FN1),
777 PINMUX_DATA(D12_ED12_NAF12_MARK, PORT127_FN1),
778 PINMUX_DATA(D13_ED13_NAF13_MARK, PORT128_FN1),
779 PINMUX_DATA(D14_ED14_NAF14_MARK, PORT129_FN1),
780 PINMUX_DATA(D15_ED15_NAF15_MARK, PORT130_FN1),
781 PINMUX_DATA(CS4_MARK, PORT131_FN1),
782 PINMUX_DATA(CS5A_MARK, PORT132_FN1),
783 PINMUX_DATA(CS5B_MARK, PORT133_FN1),
784 PINMUX_DATA(FCE1_MARK, PORT133_FN2),
785 PINMUX_DATA(CS6B_MARK, PORT134_FN1),
786 PINMUX_DATA(XCS2_MARK, PORT134_FN2),
787 PINMUX_DATA(FCE0_MARK, PORT135_FN1),
788 PINMUX_DATA(CS6A_MARK, PORT136_FN1),
789 PINMUX_DATA(DACK0_MARK, PORT136_FN2),
790 PINMUX_DATA(WAIT_MARK, PORT137_FN1),
791 PINMUX_DATA(DREQ0_MARK, PORT137_FN2),
792 PINMUX_DATA(RD_XRD_MARK, PORT138_FN1),
793 PINMUX_DATA(A27_MARK, PORT139_FN1),
794 PINMUX_DATA(RDWR_XWE_MARK, PORT139_FN2),
795 PINMUX_DATA(WE0_XWR0_FWE_MARK, PORT140_FN1),
796 PINMUX_DATA(WE1_XWR1_MARK, PORT141_FN1),
797 PINMUX_DATA(FRB_MARK, PORT142_FN1),
798 PINMUX_DATA(CKO_MARK, PORT143_FN1),
799 PINMUX_DATA(NBRSTOUT_MARK, PORT144_FN1),
800 PINMUX_DATA(NBRST_MARK, PORT145_FN1),
801
802 /* 49-4 (FN) */
803 PINMUX_DATA(RFSPO0_MARK, PORT146_FN1),
804 PINMUX_DATA(PORT146_VIO_CKO2_MARK, PORT146_FN2),
805 PINMUX_DATA(TSTMD_MARK, PORT147_FN1),
806 PINMUX_DATA(VIO_VD_MARK, PORT148_FN1),
807 PINMUX_DATA(VIO_HD_MARK, PORT149_FN1),
808 PINMUX_DATA(VIO_D0_MARK, PORT150_FN1),
809 PINMUX_DATA(VIO_D1_MARK, PORT151_FN1),
810 PINMUX_DATA(VIO_D2_MARK, PORT152_FN1),
811 PINMUX_DATA(VIO_D3_MARK, PORT153_FN1),
812 PINMUX_DATA(VIO_D4_MARK, PORT154_FN1),
813 PINMUX_DATA(VIO_D5_MARK, PORT155_FN1),
814 PINMUX_DATA(VIO_D6_MARK, PORT156_FN1),
815 PINMUX_DATA(VIO_D7_MARK, PORT157_FN1),
816 PINMUX_DATA(VIO_D8_MARK, PORT158_FN1),
817 PINMUX_DATA(VIO_D9_MARK, PORT159_FN1),
818 PINMUX_DATA(VIO_D10_MARK, PORT160_FN1),
819 PINMUX_DATA(VIO_D11_MARK, PORT161_FN1),
820 PINMUX_DATA(VIO_D12_MARK, PORT162_FN1),
821 PINMUX_DATA(VIO_D13_MARK, PORT163_FN1),
822 PINMUX_DATA(VIO_D14_MARK, PORT164_FN1),
823 PINMUX_DATA(VIO_D15_MARK, PORT165_FN1),
824 PINMUX_DATA(VIO_CLK_MARK, PORT166_FN1),
825 PINMUX_DATA(VIO_FIELD_MARK, PORT167_FN1),
826 PINMUX_DATA(VIO_CKO_MARK, PORT168_FN1),
827 PINMUX_DATA(MFG3_IN1_MARK, PORT169_FN2),
828 PINMUX_DATA(MFG3_IN2_MARK, PORT170_FN2),
829 PINMUX_DATA(M9_SLCD_A01_MARK, PORT171_FN1),
830 PINMUX_DATA(MFG3_OUT1_MARK, PORT171_FN2),
831 PINMUX_DATA(TPU0TO0_MARK, PORT171_FN3),
832 PINMUX_DATA(M10_SLCD_CK1_MARK, PORT172_FN1),
833 PINMUX_DATA(MFG4_IN1_MARK, PORT172_FN2),
834 PINMUX_DATA(TPU0TO1_MARK, PORT172_FN3),
835 PINMUX_DATA(M11_SLCD_SO1_MARK, PORT173_FN1),
836 PINMUX_DATA(MFG4_IN2_MARK, PORT173_FN2),
837 PINMUX_DATA(TPU0TO2_MARK, PORT173_FN3),
838 PINMUX_DATA(M12_SLCD_CE1_MARK, PORT174_FN1),
839 PINMUX_DATA(MFG4_OUT1_MARK, PORT174_FN2),
840 PINMUX_DATA(TPU0TO3_MARK, PORT174_FN3),
841 PINMUX_DATA(LCDD0_MARK, PORT175_FN1),
842 PINMUX_DATA(PORT175_KEYOUT0_MARK, PORT175_FN2),
843 PINMUX_DATA(DV_D0_MARK, PORT175_FN3),
844 PINMUX_DATA(SIUCKA_MARK, PORT175_FN4),
845 PINMUX_DATA(MFG0_OUT2_MARK, PORT175_FN5),
846 PINMUX_DATA(LCDD1_MARK, PORT176_FN1),
847 PINMUX_DATA(PORT176_KEYOUT1_MARK, PORT176_FN2),
848 PINMUX_DATA(DV_D1_MARK, PORT176_FN3),
849 PINMUX_DATA(SIUAOLR_MARK, PORT176_FN4),
850 PINMUX_DATA(BBIF2_TSYNC1_MARK, PORT176_FN5),
851 PINMUX_DATA(LCDD2_MARK, PORT177_FN1),
852 PINMUX_DATA(PORT177_KEYOUT2_MARK, PORT177_FN2),
853 PINMUX_DATA(DV_D2_MARK, PORT177_FN3),
854 PINMUX_DATA(SIUAOBT_MARK, PORT177_FN4),
855 PINMUX_DATA(BBIF2_TSCK1_MARK, PORT177_FN5),
856 PINMUX_DATA(LCDD3_MARK, PORT178_FN1),
857 PINMUX_DATA(PORT178_KEYOUT3_MARK, PORT178_FN2),
858 PINMUX_DATA(DV_D3_MARK, PORT178_FN3),
859 PINMUX_DATA(SIUAOSLD_MARK, PORT178_FN4),
860 PINMUX_DATA(BBIF2_TXD1_MARK, PORT178_FN5),
861 PINMUX_DATA(LCDD4_MARK, PORT179_FN1),
862 PINMUX_DATA(PORT179_KEYOUT4_MARK, PORT179_FN2),
863 PINMUX_DATA(DV_D4_MARK, PORT179_FN3),
864 PINMUX_DATA(SIUAISPD_MARK, PORT179_FN4),
865 PINMUX_DATA(MFG1_OUT2_MARK, PORT179_FN5),
866 PINMUX_DATA(LCDD5_MARK, PORT180_FN1),
867 PINMUX_DATA(PORT180_KEYOUT5_MARK, PORT180_FN2),
868 PINMUX_DATA(DV_D5_MARK, PORT180_FN3),
869 PINMUX_DATA(SIUAILR_MARK, PORT180_FN4),
870 PINMUX_DATA(MFG2_OUT2_MARK, PORT180_FN5),
871 PINMUX_DATA(LCDD6_MARK, PORT181_FN1),
872 PINMUX_DATA(DV_D6_MARK, PORT181_FN3),
873 PINMUX_DATA(SIUAIBT_MARK, PORT181_FN4),
874 PINMUX_DATA(MFG3_OUT2_MARK, PORT181_FN5),
875 PINMUX_DATA(XWR2_MARK, PORT181_FN7),
876 PINMUX_DATA(LCDD7_MARK, PORT182_FN1),
877 PINMUX_DATA(DV_D7_MARK, PORT182_FN3),
878 PINMUX_DATA(SIUAISLD_MARK, PORT182_FN4),
879 PINMUX_DATA(MFG4_OUT2_MARK, PORT182_FN5),
880 PINMUX_DATA(XWR3_MARK, PORT182_FN7),
881 PINMUX_DATA(LCDD8_MARK, PORT183_FN1),
882 PINMUX_DATA(DV_D8_MARK, PORT183_FN3),
883 PINMUX_DATA(D16_MARK, PORT183_FN6),
884 PINMUX_DATA(ED16_MARK, PORT183_FN7),
885 PINMUX_DATA(LCDD9_MARK, PORT184_FN1),
886 PINMUX_DATA(DV_D9_MARK, PORT184_FN3),
887 PINMUX_DATA(D17_MARK, PORT184_FN6),
888 PINMUX_DATA(ED17_MARK, PORT184_FN7),
889 PINMUX_DATA(LCDD10_MARK, PORT185_FN1),
890 PINMUX_DATA(DV_D10_MARK, PORT185_FN3),
891 PINMUX_DATA(D18_MARK, PORT185_FN6),
892 PINMUX_DATA(ED18_MARK, PORT185_FN7),
893 PINMUX_DATA(LCDD11_MARK, PORT186_FN1),
894 PINMUX_DATA(DV_D11_MARK, PORT186_FN3),
895 PINMUX_DATA(D19_MARK, PORT186_FN6),
896 PINMUX_DATA(ED19_MARK, PORT186_FN7),
897 PINMUX_DATA(LCDD12_MARK, PORT187_FN1),
898 PINMUX_DATA(DV_D12_MARK, PORT187_FN3),
899 PINMUX_DATA(D20_MARK, PORT187_FN6),
900 PINMUX_DATA(ED20_MARK, PORT187_FN7),
901 PINMUX_DATA(LCDD13_MARK, PORT188_FN1),
902 PINMUX_DATA(DV_D13_MARK, PORT188_FN3),
903 PINMUX_DATA(D21_MARK, PORT188_FN6),
904 PINMUX_DATA(ED21_MARK, PORT188_FN7),
905 PINMUX_DATA(LCDD14_MARK, PORT189_FN1),
906 PINMUX_DATA(DV_D14_MARK, PORT189_FN3),
907 PINMUX_DATA(D22_MARK, PORT189_FN6),
908 PINMUX_DATA(ED22_MARK, PORT189_FN7),
909 PINMUX_DATA(LCDD15_MARK, PORT190_FN1),
910 PINMUX_DATA(DV_D15_MARK, PORT190_FN3),
911 PINMUX_DATA(D23_MARK, PORT190_FN6),
912 PINMUX_DATA(ED23_MARK, PORT190_FN7),
913 PINMUX_DATA(LCDD16_MARK, PORT191_FN1),
914 PINMUX_DATA(DV_HSYNC_MARK, PORT191_FN3),
915 PINMUX_DATA(D24_MARK, PORT191_FN6),
916 PINMUX_DATA(ED24_MARK, PORT191_FN7),
917 PINMUX_DATA(LCDD17_MARK, PORT192_FN1),
918 PINMUX_DATA(DV_VSYNC_MARK, PORT192_FN3),
919 PINMUX_DATA(D25_MARK, PORT192_FN6),
920 PINMUX_DATA(ED25_MARK, PORT192_FN7),
921 PINMUX_DATA(LCDD18_MARK, PORT193_FN1),
922 PINMUX_DATA(DREQ2_MARK, PORT193_FN2),
923 PINMUX_DATA(MSIOF0L_TSCK_MARK, PORT193_FN5),
924 PINMUX_DATA(D26_MARK, PORT193_FN6),
925 PINMUX_DATA(ED26_MARK, PORT193_FN7),
926 PINMUX_DATA(LCDD19_MARK, PORT194_FN1),
927 PINMUX_DATA(MSIOF0L_TSYNC_MARK, PORT194_FN5),
928 PINMUX_DATA(D27_MARK, PORT194_FN6),
929 PINMUX_DATA(ED27_MARK, PORT194_FN7),
930 PINMUX_DATA(LCDD20_MARK, PORT195_FN1),
931 PINMUX_DATA(TS_SPSYNC1_MARK, PORT195_FN2),
932 PINMUX_DATA(MSIOF0L_MCK0_MARK, PORT195_FN5),
933 PINMUX_DATA(D28_MARK, PORT195_FN6),
934 PINMUX_DATA(ED28_MARK, PORT195_FN7),
935 PINMUX_DATA(LCDD21_MARK, PORT196_FN1),
936 PINMUX_DATA(TS_SDAT1_MARK, PORT196_FN2),
937 PINMUX_DATA(MSIOF0L_MCK1_MARK, PORT196_FN5),
938 PINMUX_DATA(D29_MARK, PORT196_FN6),
939 PINMUX_DATA(ED29_MARK, PORT196_FN7),
940 PINMUX_DATA(LCDD22_MARK, PORT197_FN1),
941 PINMUX_DATA(TS_SDEN1_MARK, PORT197_FN2),
942 PINMUX_DATA(MSIOF0L_SS1_MARK, PORT197_FN5),
943 PINMUX_DATA(D30_MARK, PORT197_FN6),
944 PINMUX_DATA(ED30_MARK, PORT197_FN7),
945 PINMUX_DATA(LCDD23_MARK, PORT198_FN1),
946 PINMUX_DATA(TS_SCK1_MARK, PORT198_FN2),
947 PINMUX_DATA(MSIOF0L_SS2_MARK, PORT198_FN5),
948 PINMUX_DATA(D31_MARK, PORT198_FN6),
949 PINMUX_DATA(ED31_MARK, PORT198_FN7),
950 PINMUX_DATA(LCDDCK_MARK, PORT199_FN1),
951 PINMUX_DATA(LCDWR_MARK, PORT199_FN2),
952 PINMUX_DATA(DV_CKO_MARK, PORT199_FN3),
953 PINMUX_DATA(SIUAOSPD_MARK, PORT199_FN4),
954 PINMUX_DATA(LCDRD_MARK, PORT200_FN1),
955 PINMUX_DATA(DACK2_MARK, PORT200_FN2),
956 PINMUX_DATA(MSIOF0L_RSYNC_MARK, PORT200_FN5),
957
958 /* 49-5 (FN) */
959 PINMUX_DATA(LCDHSYN_MARK, PORT201_FN1),
960 PINMUX_DATA(LCDCS_MARK, PORT201_FN2),
961 PINMUX_DATA(LCDCS2_MARK, PORT201_FN3),
962 PINMUX_DATA(DACK3_MARK, PORT201_FN4),
963 PINMUX_DATA(LCDDISP_MARK, PORT202_FN1),
964 PINMUX_DATA(LCDRS_MARK, PORT202_FN2),
965 PINMUX_DATA(DREQ3_MARK, PORT202_FN4),
966 PINMUX_DATA(MSIOF0L_RSCK_MARK, PORT202_FN5),
967 PINMUX_DATA(LCDCSYN_MARK, PORT203_FN1),
968 PINMUX_DATA(LCDCSYN2_MARK, PORT203_FN2),
969 PINMUX_DATA(DV_CKI_MARK, PORT203_FN3),
970 PINMUX_DATA(LCDLCLK_MARK, PORT204_FN1),
971 PINMUX_DATA(DREQ1_MARK, PORT204_FN3),
972 PINMUX_DATA(MSIOF0L_RXD_MARK, PORT204_FN5),
973 PINMUX_DATA(LCDDON_MARK, PORT205_FN1),
974 PINMUX_DATA(LCDDON2_MARK, PORT205_FN2),
975 PINMUX_DATA(DACK1_MARK, PORT205_FN3),
976 PINMUX_DATA(MSIOF0L_TXD_MARK, PORT205_FN5),
977 PINMUX_DATA(VIO_DR0_MARK, PORT206_FN1),
978 PINMUX_DATA(VIO_DR1_MARK, PORT207_FN1),
979 PINMUX_DATA(VIO_DR2_MARK, PORT208_FN1),
980 PINMUX_DATA(VIO_DR3_MARK, PORT209_FN1),
981 PINMUX_DATA(VIO_DR4_MARK, PORT210_FN1),
982 PINMUX_DATA(VIO_DR5_MARK, PORT211_FN1),
983 PINMUX_DATA(VIO_DR6_MARK, PORT212_FN1),
984 PINMUX_DATA(VIO_DR7_MARK, PORT213_FN1),
985 PINMUX_DATA(VIO_VDR_MARK, PORT214_FN1),
986 PINMUX_DATA(VIO_HDR_MARK, PORT215_FN1),
987 PINMUX_DATA(VIO_CLKR_MARK, PORT216_FN1),
988 PINMUX_DATA(VIO_CKOR_MARK, PORT217_FN1),
989 PINMUX_DATA(SCIFA1_TXD_MARK, PORT220_FN2),
990 PINMUX_DATA(GPS_PGFA0_MARK, PORT220_FN3),
991 PINMUX_DATA(SCIFA1_SCK_MARK, PORT221_FN2),
992 PINMUX_DATA(GPS_PGFA1_MARK, PORT221_FN3),
993 PINMUX_DATA(SCIFA1_RTS_MARK, PORT222_FN2),
994 PINMUX_DATA(GPS_EPPSINMON_MARK, PORT222_FN3),
995 PINMUX_DATA(SCIFA1_RXD_MARK, PORT223_FN2),
996 PINMUX_DATA(SCIFA1_CTS_MARK, PORT224_FN2),
997 PINMUX_DATA(MSIOF1_TXD_MARK, PORT225_FN1),
998 PINMUX_DATA(SCIFA1_TXD2_MARK, PORT225_FN2),
999 PINMUX_DATA(GPS_TXD_MARK, PORT225_FN3),
1000 PINMUX_DATA(MSIOF1_TSYNC_MARK, PORT226_FN1),
1001 PINMUX_DATA(SCIFA1_CTS2_MARK, PORT226_FN2),
1002 PINMUX_DATA(I2C_SDA2_MARK, PORT226_FN3),
1003 PINMUX_DATA(MSIOF1_TSCK_MARK, PORT227_FN1),
1004 PINMUX_DATA(SCIFA1_SCK2_MARK, PORT227_FN2),
1005 PINMUX_DATA(MSIOF1_RXD_MARK, PORT228_FN1),
1006 PINMUX_DATA(SCIFA1_RXD2_MARK, PORT228_FN2),
1007 PINMUX_DATA(GPS_RXD_MARK, PORT228_FN3),
1008 PINMUX_DATA(MSIOF1_RSCK_MARK, PORT229_FN1),
1009 PINMUX_DATA(SCIFA1_RTS2_MARK, PORT229_FN2),
1010 PINMUX_DATA(MSIOF1_RSYNC_MARK, PORT230_FN1),
1011 PINMUX_DATA(I2C_SCL2_MARK, PORT230_FN3),
1012 PINMUX_DATA(MSIOF1_MCK0_MARK, PORT231_FN1),
1013 PINMUX_DATA(MSIOF1_MCK1_MARK, PORT232_FN1),
1014 PINMUX_DATA(MSIOF1_SS1_MARK, PORT233_FN1),
1015 PINMUX_DATA(EDBGREQ3_MARK, PORT233_FN2),
1016 PINMUX_DATA(MSIOF1_SS2_MARK, PORT234_FN1),
1017 PINMUX_DATA(PORT236_IROUT_MARK, PORT236_FN1),
1018 PINMUX_DATA(IRDA_OUT_MARK, PORT236_FN2),
1019 PINMUX_DATA(IRDA_IN_MARK, PORT237_FN2),
1020 PINMUX_DATA(IRDA_FIRSEL_MARK, PORT238_FN1),
1021 PINMUX_DATA(TPU1TO0_MARK, PORT239_FN3),
1022 PINMUX_DATA(TS_SPSYNC3_MARK, PORT239_FN4),
1023 PINMUX_DATA(TPU1TO1_MARK, PORT240_FN3),
1024 PINMUX_DATA(TS_SDAT3_MARK, PORT240_FN4),
1025 PINMUX_DATA(TPU1TO2_MARK, PORT241_FN3),
1026 PINMUX_DATA(TS_SDEN3_MARK, PORT241_FN4),
1027 PINMUX_DATA(PORT241_MSIOF2_SS1_MARK, PORT241_FN5),
1028 PINMUX_DATA(TPU1TO3_MARK, PORT242_FN3),
1029 PINMUX_DATA(PORT242_MSIOF2_TSCK_MARK, PORT242_FN5),
1030 PINMUX_DATA(M13_BSW_MARK, PORT243_FN2),
1031 PINMUX_DATA(PORT243_MSIOF2_TSYNC_MARK, PORT243_FN5),
1032 PINMUX_DATA(M14_GSW_MARK, PORT244_FN2),
1033 PINMUX_DATA(PORT244_MSIOF2_TXD_MARK, PORT244_FN5),
1034 PINMUX_DATA(PORT245_IROUT_MARK, PORT245_FN1),
1035 PINMUX_DATA(M15_RSW_MARK, PORT245_FN2),
1036 PINMUX_DATA(SOUT3_MARK, PORT246_FN1),
1037 PINMUX_DATA(SCIFA2_TXD1_MARK, PORT246_FN2),
1038 PINMUX_DATA(SIN3_MARK, PORT247_FN1),
1039 PINMUX_DATA(SCIFA2_RXD1_MARK, PORT247_FN2),
1040 PINMUX_DATA(XRTS3_MARK, PORT248_FN1),
1041 PINMUX_DATA(SCIFA2_RTS1_MARK, PORT248_FN2),
1042 PINMUX_DATA(PORT248_MSIOF2_SS2_MARK, PORT248_FN5),
1043 PINMUX_DATA(XCTS3_MARK, PORT249_FN1),
1044 PINMUX_DATA(SCIFA2_CTS1_MARK, PORT249_FN2),
1045 PINMUX_DATA(PORT249_MSIOF2_RXD_MARK, PORT249_FN5),
1046 PINMUX_DATA(DINT_MARK, PORT250_FN1),
1047 PINMUX_DATA(SCIFA2_SCK1_MARK, PORT250_FN2),
1048 PINMUX_DATA(TS_SCK3_MARK, PORT250_FN4),
1049 PINMUX_DATA(SDHICLK0_MARK, PORT251_FN1),
1050 PINMUX_DATA(TCK2_MARK, PORT251_FN2),
1051 PINMUX_DATA(SDHICD0_MARK, PORT252_FN1),
1052 PINMUX_DATA(SDHID0_0_MARK, PORT253_FN1),
1053 PINMUX_DATA(TMS2_MARK, PORT253_FN2),
1054 PINMUX_DATA(SDHID0_1_MARK, PORT254_FN1),
1055 PINMUX_DATA(TDO2_MARK, PORT254_FN2),
1056 PINMUX_DATA(SDHID0_2_MARK, PORT255_FN1),
1057 PINMUX_DATA(TDI2_MARK, PORT255_FN2),
1058 PINMUX_DATA(SDHID0_3_MARK, PORT256_FN1),
1059 PINMUX_DATA(RTCK2_MARK, PORT256_FN2),
1060
1061 /* 49-6 (FN) */
1062 PINMUX_DATA(SDHICMD0_MARK, PORT257_FN1),
1063 PINMUX_DATA(TRST2_MARK, PORT257_FN2),
1064 PINMUX_DATA(SDHIWP0_MARK, PORT258_FN1),
1065 PINMUX_DATA(EDBGREQ2_MARK, PORT258_FN2),
1066 PINMUX_DATA(SDHICLK1_MARK, PORT259_FN1),
1067 PINMUX_DATA(TCK3_MARK, PORT259_FN4),
1068 PINMUX_DATA(SDHID1_0_MARK, PORT260_FN1),
1069 PINMUX_DATA(M11_SLCD_SO2_MARK, PORT260_FN2),
1070 PINMUX_DATA(TS_SPSYNC2_MARK, PORT260_FN3),
1071 PINMUX_DATA(TMS3_MARK, PORT260_FN4),
1072 PINMUX_DATA(SDHID1_1_MARK, PORT261_FN1),
1073 PINMUX_DATA(M9_SLCD_AO2_MARK, PORT261_FN2),
1074 PINMUX_DATA(TS_SDAT2_MARK, PORT261_FN3),
1075 PINMUX_DATA(TDO3_MARK, PORT261_FN4),
1076 PINMUX_DATA(SDHID1_2_MARK, PORT262_FN1),
1077 PINMUX_DATA(M10_SLCD_CK2_MARK, PORT262_FN2),
1078 PINMUX_DATA(TS_SDEN2_MARK, PORT262_FN3),
1079 PINMUX_DATA(TDI3_MARK, PORT262_FN4),
1080 PINMUX_DATA(SDHID1_3_MARK, PORT263_FN1),
1081 PINMUX_DATA(M12_SLCD_CE2_MARK, PORT263_FN2),
1082 PINMUX_DATA(TS_SCK2_MARK, PORT263_FN3),
1083 PINMUX_DATA(RTCK3_MARK, PORT263_FN4),
1084 PINMUX_DATA(SDHICMD1_MARK, PORT264_FN1),
1085 PINMUX_DATA(TRST3_MARK, PORT264_FN4),
1086 PINMUX_DATA(SDHICLK2_MARK, PORT265_FN1),
1087 PINMUX_DATA(SCIFB_SCK_MARK, PORT265_FN2),
1088 PINMUX_DATA(SDHID2_0_MARK, PORT266_FN1),
1089 PINMUX_DATA(SCIFB_TXD_MARK, PORT266_FN2),
1090 PINMUX_DATA(SDHID2_1_MARK, PORT267_FN1),
1091 PINMUX_DATA(SCIFB_CTS_MARK, PORT267_FN2),
1092 PINMUX_DATA(SDHID2_2_MARK, PORT268_FN1),
1093 PINMUX_DATA(SCIFB_RXD_MARK, PORT268_FN2),
1094 PINMUX_DATA(SDHID2_3_MARK, PORT269_FN1),
1095 PINMUX_DATA(SCIFB_RTS_MARK, PORT269_FN2),
1096 PINMUX_DATA(SDHICMD2_MARK, PORT270_FN1),
1097 PINMUX_DATA(RESETOUTS_MARK, PORT271_FN1),
1098 PINMUX_DATA(DIVLOCK_MARK, PORT272_FN1),
1099};
1100
1101#define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA)
1102#define GPIO_PORT_273() _273(_GPIO_PORT, , unused)
1103#define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK)
1104
1105static struct pinmux_gpio pinmux_gpios[] = {
1106 /* 49-1 -> 49-6 (GPIO) */
1107 GPIO_PORT_273(),
1108
1109 /* Special Pull-up / Pull-down Functions */
1110 GPIO_FN(PORT48_KEYIN0_PU), GPIO_FN(PORT49_KEYIN1_PU),
1111 GPIO_FN(PORT50_KEYIN2_PU), GPIO_FN(PORT55_KEYIN3_PU),
1112 GPIO_FN(PORT56_KEYIN4_PU), GPIO_FN(PORT57_KEYIN5_PU),
1113 GPIO_FN(PORT58_KEYIN6_PU),
1114
1115 /* 49-1 (FN) */
1116 GPIO_FN(VBUS0), GPIO_FN(CPORT0), GPIO_FN(CPORT1), GPIO_FN(CPORT2),
1117 GPIO_FN(CPORT3), GPIO_FN(CPORT4), GPIO_FN(CPORT5), GPIO_FN(CPORT6),
1118 GPIO_FN(CPORT7), GPIO_FN(CPORT8), GPIO_FN(CPORT9), GPIO_FN(CPORT10),
1119 GPIO_FN(CPORT11), GPIO_FN(SIN2), GPIO_FN(CPORT12), GPIO_FN(XCTS2),
1120 GPIO_FN(CPORT13), GPIO_FN(RFSPO4), GPIO_FN(CPORT14), GPIO_FN(RFSPO5),
1121 GPIO_FN(CPORT15), GPIO_FN(CPORT16), GPIO_FN(CPORT17), GPIO_FN(SOUT2),
1122 GPIO_FN(CPORT18), GPIO_FN(XRTS2), GPIO_FN(CPORT19), GPIO_FN(CPORT20),
1123 GPIO_FN(RFSPO6), GPIO_FN(CPORT21), GPIO_FN(STATUS0), GPIO_FN(CPORT22),
1124 GPIO_FN(STATUS1), GPIO_FN(CPORT23), GPIO_FN(STATUS2), GPIO_FN(RFSPO7),
1125 GPIO_FN(MPORT0), GPIO_FN(MPORT1), GPIO_FN(B_SYNLD1), GPIO_FN(B_SYNLD2),
1126 GPIO_FN(XMAINPS), GPIO_FN(XDIVPS), GPIO_FN(XIDRST), GPIO_FN(IDCLK),
1127 GPIO_FN(IDIO), GPIO_FN(SOUT1), GPIO_FN(SCIFA4_TXD),
1128 GPIO_FN(M02_BERDAT), GPIO_FN(SIN1), GPIO_FN(SCIFA4_RXD), GPIO_FN(XWUP),
1129 GPIO_FN(XRTS1), GPIO_FN(SCIFA4_RTS), GPIO_FN(M03_BERCLK),
1130 GPIO_FN(XCTS1), GPIO_FN(SCIFA4_CTS),
1131
1132 /* 49-2 (FN) */
1133 GPIO_FN(HSU_IQ_AGC6), GPIO_FN(MFG2_IN2), GPIO_FN(MSIOF2_MCK0),
1134 GPIO_FN(HSU_IQ_AGC5), GPIO_FN(MFG2_IN1), GPIO_FN(MSIOF2_MCK1),
1135 GPIO_FN(HSU_IQ_AGC4), GPIO_FN(MSIOF2_RSYNC),
1136 GPIO_FN(HSU_IQ_AGC3), GPIO_FN(MFG2_OUT1), GPIO_FN(MSIOF2_RSCK),
1137 GPIO_FN(HSU_IQ_AGC2), GPIO_FN(PORT42_KEYOUT0),
1138 GPIO_FN(HSU_IQ_AGC1), GPIO_FN(PORT43_KEYOUT1),
1139 GPIO_FN(HSU_IQ_AGC0), GPIO_FN(PORT44_KEYOUT2),
1140 GPIO_FN(HSU_IQ_AGC_ST), GPIO_FN(PORT45_KEYOUT3),
1141 GPIO_FN(HSU_IQ_PDO), GPIO_FN(PORT46_KEYOUT4),
1142 GPIO_FN(HSU_IQ_PYO), GPIO_FN(PORT47_KEYOUT5),
1143 GPIO_FN(HSU_EN_TXMUX_G3MO), GPIO_FN(PORT48_KEYIN0),
1144 GPIO_FN(HSU_I_TXMUX_G3MO), GPIO_FN(PORT49_KEYIN1),
1145 GPIO_FN(HSU_Q_TXMUX_G3MO), GPIO_FN(PORT50_KEYIN2),
1146 GPIO_FN(HSU_SYO), GPIO_FN(PORT51_MSIOF2_TSYNC),
1147 GPIO_FN(HSU_SDO), GPIO_FN(PORT52_MSIOF2_TSCK),
1148 GPIO_FN(HSU_TGTTI_G3MO), GPIO_FN(PORT53_MSIOF2_TXD),
1149 GPIO_FN(B_TIME_STAMP), GPIO_FN(PORT54_MSIOF2_RXD),
1150 GPIO_FN(HSU_SDI), GPIO_FN(PORT55_KEYIN3),
1151 GPIO_FN(HSU_SCO), GPIO_FN(PORT56_KEYIN4),
1152 GPIO_FN(HSU_DREQ), GPIO_FN(PORT57_KEYIN5),
1153 GPIO_FN(HSU_DACK), GPIO_FN(PORT58_KEYIN6),
1154 GPIO_FN(HSU_CLK61M), GPIO_FN(PORT59_MSIOF2_SS1),
1155 GPIO_FN(HSU_XRST), GPIO_FN(PORT60_MSIOF2_SS2),
1156 GPIO_FN(PCMCLKO), GPIO_FN(SYNC8KO), GPIO_FN(DNPCM_A), GPIO_FN(UPPCM_A),
1157 GPIO_FN(XTALB1L),
1158 GPIO_FN(GPS_AGC1), GPIO_FN(SCIFA0_RTS),
1159 GPIO_FN(GPS_AGC2), GPIO_FN(SCIFA0_SCK),
1160 GPIO_FN(GPS_AGC3), GPIO_FN(SCIFA0_TXD),
1161 GPIO_FN(GPS_AGC4), GPIO_FN(SCIFA0_RXD),
1162 GPIO_FN(GPS_PWRD), GPIO_FN(SCIFA0_CTS),
1163 GPIO_FN(GPS_IM), GPIO_FN(GPS_IS), GPIO_FN(GPS_QM), GPIO_FN(GPS_QS),
1164 GPIO_FN(SIUBOMC), GPIO_FN(TPU2TO0),
1165 GPIO_FN(SIUCKB), GPIO_FN(TPU2TO1),
1166 GPIO_FN(SIUBOLR), GPIO_FN(BBIF2_TSYNC), GPIO_FN(TPU2TO2),
1167 GPIO_FN(SIUBOBT), GPIO_FN(BBIF2_TSCK), GPIO_FN(TPU2TO3),
1168 GPIO_FN(SIUBOSLD), GPIO_FN(BBIF2_TXD), GPIO_FN(TPU3TO0),
1169 GPIO_FN(SIUBILR), GPIO_FN(TPU3TO1),
1170 GPIO_FN(SIUBIBT), GPIO_FN(TPU3TO2),
1171 GPIO_FN(SIUBISLD), GPIO_FN(TPU3TO3),
1172 GPIO_FN(NMI), GPIO_FN(TPU4TO0),
1173 GPIO_FN(DNPCM_M), GPIO_FN(TPU4TO1), GPIO_FN(TPU4TO2), GPIO_FN(TPU4TO3),
1174 GPIO_FN(IRQ_TMPB),
1175 GPIO_FN(PWEN), GPIO_FN(MFG1_OUT1),
1176 GPIO_FN(OVCN), GPIO_FN(MFG1_IN1),
1177 GPIO_FN(OVCN2), GPIO_FN(MFG1_IN2),
1178
1179 /* 49-3 (FN) */
1180 GPIO_FN(RFSPO1), GPIO_FN(RFSPO2), GPIO_FN(RFSPO3),
1181 GPIO_FN(PORT93_VIO_CKO2),
1182 GPIO_FN(USBTERM), GPIO_FN(EXTLP), GPIO_FN(IDIN),
1183 GPIO_FN(SCIFA5_CTS), GPIO_FN(MFG0_IN1),
1184 GPIO_FN(SCIFA5_RTS), GPIO_FN(MFG0_IN2),
1185 GPIO_FN(SCIFA5_RXD),
1186 GPIO_FN(SCIFA5_TXD),
1187 GPIO_FN(SCIFA5_SCK), GPIO_FN(MFG0_OUT1),
1188 GPIO_FN(A0_EA0), GPIO_FN(BS),
1189 GPIO_FN(A14_EA14), GPIO_FN(PORT102_KEYOUT0),
1190 GPIO_FN(A15_EA15), GPIO_FN(PORT103_KEYOUT1), GPIO_FN(DV_CLKOL),
1191 GPIO_FN(A16_EA16), GPIO_FN(PORT104_KEYOUT2),
1192 GPIO_FN(DV_VSYNCL), GPIO_FN(MSIOF0_SS1),
1193 GPIO_FN(A17_EA17), GPIO_FN(PORT105_KEYOUT3),
1194 GPIO_FN(DV_HSYNCL), GPIO_FN(MSIOF0_TSYNC),
1195 GPIO_FN(A18_EA18), GPIO_FN(PORT106_KEYOUT4),
1196 GPIO_FN(DV_DL0), GPIO_FN(MSIOF0_TSCK),
1197 GPIO_FN(A19_EA19), GPIO_FN(PORT107_KEYOUT5),
1198 GPIO_FN(DV_DL1), GPIO_FN(MSIOF0_TXD),
1199 GPIO_FN(A20_EA20), GPIO_FN(PORT108_KEYIN0),
1200 GPIO_FN(DV_DL2), GPIO_FN(MSIOF0_RSCK),
1201 GPIO_FN(A21_EA21), GPIO_FN(PORT109_KEYIN1),
1202 GPIO_FN(DV_DL3), GPIO_FN(MSIOF0_RSYNC),
1203 GPIO_FN(A22_EA22), GPIO_FN(PORT110_KEYIN2),
1204 GPIO_FN(DV_DL4), GPIO_FN(MSIOF0_MCK0),
1205 GPIO_FN(A23_EA23), GPIO_FN(PORT111_KEYIN3),
1206 GPIO_FN(DV_DL5), GPIO_FN(MSIOF0_MCK1),
1207 GPIO_FN(A24_EA24), GPIO_FN(PORT112_KEYIN4),
1208 GPIO_FN(DV_DL6), GPIO_FN(MSIOF0_RXD),
1209 GPIO_FN(A25_EA25), GPIO_FN(PORT113_KEYIN5),
1210 GPIO_FN(DV_DL7), GPIO_FN(MSIOF0_SS2),
1211 GPIO_FN(A26), GPIO_FN(PORT113_KEYIN6), GPIO_FN(DV_CLKIL),
1212 GPIO_FN(D0_ED0_NAF0), GPIO_FN(D1_ED1_NAF1), GPIO_FN(D2_ED2_NAF2),
1213 GPIO_FN(D3_ED3_NAF3), GPIO_FN(D4_ED4_NAF4), GPIO_FN(D5_ED5_NAF5),
1214 GPIO_FN(D6_ED6_NAF6), GPIO_FN(D7_ED7_NAF7), GPIO_FN(D8_ED8_NAF8),
1215 GPIO_FN(D9_ED9_NAF9), GPIO_FN(D10_ED10_NAF10), GPIO_FN(D11_ED11_NAF11),
1216 GPIO_FN(D12_ED12_NAF12), GPIO_FN(D13_ED13_NAF13),
1217 GPIO_FN(D14_ED14_NAF14), GPIO_FN(D15_ED15_NAF15),
1218 GPIO_FN(CS4), GPIO_FN(CS5A), GPIO_FN(CS5B), GPIO_FN(FCE1),
1219 GPIO_FN(CS6B), GPIO_FN(XCS2), GPIO_FN(FCE0), GPIO_FN(CS6A),
1220 GPIO_FN(DACK0), GPIO_FN(WAIT), GPIO_FN(DREQ0), GPIO_FN(RD_XRD),
1221 GPIO_FN(A27), GPIO_FN(RDWR_XWE), GPIO_FN(WE0_XWR0_FWE),
1222 GPIO_FN(WE1_XWR1), GPIO_FN(FRB), GPIO_FN(CKO),
1223 GPIO_FN(NBRSTOUT), GPIO_FN(NBRST),
1224
1225 /* 49-4 (FN) */
1226 GPIO_FN(RFSPO0), GPIO_FN(PORT146_VIO_CKO2), GPIO_FN(TSTMD),
1227 GPIO_FN(VIO_VD), GPIO_FN(VIO_HD),
1228 GPIO_FN(VIO_D0), GPIO_FN(VIO_D1), GPIO_FN(VIO_D2),
1229 GPIO_FN(VIO_D3), GPIO_FN(VIO_D4), GPIO_FN(VIO_D5),
1230 GPIO_FN(VIO_D6), GPIO_FN(VIO_D7), GPIO_FN(VIO_D8),
1231 GPIO_FN(VIO_D9), GPIO_FN(VIO_D10), GPIO_FN(VIO_D11),
1232 GPIO_FN(VIO_D12), GPIO_FN(VIO_D13), GPIO_FN(VIO_D14),
1233 GPIO_FN(VIO_D15), GPIO_FN(VIO_CLK), GPIO_FN(VIO_FIELD),
1234 GPIO_FN(VIO_CKO),
1235 GPIO_FN(MFG3_IN1), GPIO_FN(MFG3_IN2),
1236 GPIO_FN(M9_SLCD_A01), GPIO_FN(MFG3_OUT1), GPIO_FN(TPU0TO0),
1237 GPIO_FN(M10_SLCD_CK1), GPIO_FN(MFG4_IN1), GPIO_FN(TPU0TO1),
1238 GPIO_FN(M11_SLCD_SO1), GPIO_FN(MFG4_IN2), GPIO_FN(TPU0TO2),
1239 GPIO_FN(M12_SLCD_CE1), GPIO_FN(MFG4_OUT1), GPIO_FN(TPU0TO3),
1240 GPIO_FN(LCDD0), GPIO_FN(PORT175_KEYOUT0), GPIO_FN(DV_D0),
1241 GPIO_FN(SIUCKA), GPIO_FN(MFG0_OUT2),
1242 GPIO_FN(LCDD1), GPIO_FN(PORT176_KEYOUT1), GPIO_FN(DV_D1),
1243 GPIO_FN(SIUAOLR), GPIO_FN(BBIF2_TSYNC1),
1244 GPIO_FN(LCDD2), GPIO_FN(PORT177_KEYOUT2), GPIO_FN(DV_D2),
1245 GPIO_FN(SIUAOBT), GPIO_FN(BBIF2_TSCK1),
1246 GPIO_FN(LCDD3), GPIO_FN(PORT178_KEYOUT3), GPIO_FN(DV_D3),
1247 GPIO_FN(SIUAOSLD), GPIO_FN(BBIF2_TXD1),
1248 GPIO_FN(LCDD4), GPIO_FN(PORT179_KEYOUT4), GPIO_FN(DV_D4),
1249 GPIO_FN(SIUAISPD), GPIO_FN(MFG1_OUT2),
1250 GPIO_FN(LCDD5), GPIO_FN(PORT180_KEYOUT5), GPIO_FN(DV_D5),
1251 GPIO_FN(SIUAILR), GPIO_FN(MFG2_OUT2),
1252 GPIO_FN(LCDD6), GPIO_FN(DV_D6),
1253 GPIO_FN(SIUAIBT), GPIO_FN(MFG3_OUT2), GPIO_FN(XWR2),
1254 GPIO_FN(LCDD7), GPIO_FN(DV_D7),
1255 GPIO_FN(SIUAISLD), GPIO_FN(MFG4_OUT2), GPIO_FN(XWR3),
1256 GPIO_FN(LCDD8), GPIO_FN(DV_D8), GPIO_FN(D16), GPIO_FN(ED16),
1257 GPIO_FN(LCDD9), GPIO_FN(DV_D9), GPIO_FN(D17), GPIO_FN(ED17),
1258 GPIO_FN(LCDD10), GPIO_FN(DV_D10), GPIO_FN(D18), GPIO_FN(ED18),
1259 GPIO_FN(LCDD11), GPIO_FN(DV_D11), GPIO_FN(D19), GPIO_FN(ED19),
1260 GPIO_FN(LCDD12), GPIO_FN(DV_D12), GPIO_FN(D20), GPIO_FN(ED20),
1261 GPIO_FN(LCDD13), GPIO_FN(DV_D13), GPIO_FN(D21), GPIO_FN(ED21),
1262 GPIO_FN(LCDD14), GPIO_FN(DV_D14), GPIO_FN(D22), GPIO_FN(ED22),
1263 GPIO_FN(LCDD15), GPIO_FN(DV_D15), GPIO_FN(D23), GPIO_FN(ED23),
1264 GPIO_FN(LCDD16), GPIO_FN(DV_HSYNC), GPIO_FN(D24), GPIO_FN(ED24),
1265 GPIO_FN(LCDD17), GPIO_FN(DV_VSYNC), GPIO_FN(D25), GPIO_FN(ED25),
1266 GPIO_FN(LCDD18), GPIO_FN(DREQ2), GPIO_FN(MSIOF0L_TSCK),
1267 GPIO_FN(D26), GPIO_FN(ED26),
1268 GPIO_FN(LCDD19), GPIO_FN(MSIOF0L_TSYNC),
1269 GPIO_FN(D27), GPIO_FN(ED27),
1270 GPIO_FN(LCDD20), GPIO_FN(TS_SPSYNC1), GPIO_FN(MSIOF0L_MCK0),
1271 GPIO_FN(D28), GPIO_FN(ED28),
1272 GPIO_FN(LCDD21), GPIO_FN(TS_SDAT1), GPIO_FN(MSIOF0L_MCK1),
1273 GPIO_FN(D29), GPIO_FN(ED29),
1274 GPIO_FN(LCDD22), GPIO_FN(TS_SDEN1), GPIO_FN(MSIOF0L_SS1),
1275 GPIO_FN(D30), GPIO_FN(ED30),
1276 GPIO_FN(LCDD23), GPIO_FN(TS_SCK1), GPIO_FN(MSIOF0L_SS2),
1277 GPIO_FN(D31), GPIO_FN(ED31),
1278 GPIO_FN(LCDDCK), GPIO_FN(LCDWR), GPIO_FN(DV_CKO), GPIO_FN(SIUAOSPD),
1279 GPIO_FN(LCDRD), GPIO_FN(DACK2), GPIO_FN(MSIOF0L_RSYNC),
1280
1281 /* 49-5 (FN) */
1282 GPIO_FN(LCDHSYN), GPIO_FN(LCDCS), GPIO_FN(LCDCS2), GPIO_FN(DACK3),
1283 GPIO_FN(LCDDISP), GPIO_FN(LCDRS), GPIO_FN(DREQ3), GPIO_FN(MSIOF0L_RSCK),
1284 GPIO_FN(LCDCSYN), GPIO_FN(LCDCSYN2), GPIO_FN(DV_CKI),
1285 GPIO_FN(LCDLCLK), GPIO_FN(DREQ1), GPIO_FN(MSIOF0L_RXD),
1286 GPIO_FN(LCDDON), GPIO_FN(LCDDON2), GPIO_FN(DACK1), GPIO_FN(MSIOF0L_TXD),
1287 GPIO_FN(VIO_DR0), GPIO_FN(VIO_DR1), GPIO_FN(VIO_DR2), GPIO_FN(VIO_DR3),
1288 GPIO_FN(VIO_DR4), GPIO_FN(VIO_DR5), GPIO_FN(VIO_DR6), GPIO_FN(VIO_DR7),
1289 GPIO_FN(VIO_VDR), GPIO_FN(VIO_HDR),
1290 GPIO_FN(VIO_CLKR), GPIO_FN(VIO_CKOR),
1291 GPIO_FN(SCIFA1_TXD), GPIO_FN(GPS_PGFA0),
1292 GPIO_FN(SCIFA1_SCK), GPIO_FN(GPS_PGFA1),
1293 GPIO_FN(SCIFA1_RTS), GPIO_FN(GPS_EPPSINMON),
1294 GPIO_FN(SCIFA1_RXD), GPIO_FN(SCIFA1_CTS),
1295 GPIO_FN(MSIOF1_TXD), GPIO_FN(SCIFA1_TXD2), GPIO_FN(GPS_TXD),
1296 GPIO_FN(MSIOF1_TSYNC), GPIO_FN(SCIFA1_CTS2), GPIO_FN(I2C_SDA2),
1297 GPIO_FN(MSIOF1_TSCK), GPIO_FN(SCIFA1_SCK2),
1298 GPIO_FN(MSIOF1_RXD), GPIO_FN(SCIFA1_RXD2), GPIO_FN(GPS_RXD),
1299 GPIO_FN(MSIOF1_RSCK), GPIO_FN(SCIFA1_RTS2),
1300 GPIO_FN(MSIOF1_RSYNC), GPIO_FN(I2C_SCL2),
1301 GPIO_FN(MSIOF1_MCK0), GPIO_FN(MSIOF1_MCK1),
1302 GPIO_FN(MSIOF1_SS1), GPIO_FN(EDBGREQ3),
1303 GPIO_FN(MSIOF1_SS2),
1304 GPIO_FN(PORT236_IROUT), GPIO_FN(IRDA_OUT),
1305 GPIO_FN(IRDA_IN), GPIO_FN(IRDA_FIRSEL),
1306 GPIO_FN(TPU1TO0), GPIO_FN(TS_SPSYNC3),
1307 GPIO_FN(TPU1TO1), GPIO_FN(TS_SDAT3),
1308 GPIO_FN(TPU1TO2), GPIO_FN(TS_SDEN3), GPIO_FN(PORT241_MSIOF2_SS1),
1309 GPIO_FN(TPU1TO3), GPIO_FN(PORT242_MSIOF2_TSCK),
1310 GPIO_FN(M13_BSW), GPIO_FN(PORT243_MSIOF2_TSYNC),
1311 GPIO_FN(M14_GSW), GPIO_FN(PORT244_MSIOF2_TXD),
1312 GPIO_FN(PORT245_IROUT), GPIO_FN(M15_RSW),
1313 GPIO_FN(SOUT3), GPIO_FN(SCIFA2_TXD1),
1314 GPIO_FN(SIN3), GPIO_FN(SCIFA2_RXD1),
1315 GPIO_FN(XRTS3), GPIO_FN(SCIFA2_RTS1), GPIO_FN(PORT248_MSIOF2_SS2),
1316 GPIO_FN(XCTS3), GPIO_FN(SCIFA2_CTS1), GPIO_FN(PORT249_MSIOF2_RXD),
1317 GPIO_FN(DINT), GPIO_FN(SCIFA2_SCK1), GPIO_FN(TS_SCK3),
1318 GPIO_FN(SDHICLK0), GPIO_FN(TCK2),
1319 GPIO_FN(SDHICD0),
1320 GPIO_FN(SDHID0_0), GPIO_FN(TMS2),
1321 GPIO_FN(SDHID0_1), GPIO_FN(TDO2),
1322 GPIO_FN(SDHID0_2), GPIO_FN(TDI2),
1323 GPIO_FN(SDHID0_3), GPIO_FN(RTCK2),
1324
1325 /* 49-6 (FN) */
1326 GPIO_FN(SDHICMD0), GPIO_FN(TRST2),
1327 GPIO_FN(SDHIWP0), GPIO_FN(EDBGREQ2),
1328 GPIO_FN(SDHICLK1), GPIO_FN(TCK3),
1329 GPIO_FN(SDHID1_0), GPIO_FN(M11_SLCD_SO2),
1330 GPIO_FN(TS_SPSYNC2), GPIO_FN(TMS3),
1331 GPIO_FN(SDHID1_1), GPIO_FN(M9_SLCD_AO2),
1332 GPIO_FN(TS_SDAT2), GPIO_FN(TDO3),
1333 GPIO_FN(SDHID1_2), GPIO_FN(M10_SLCD_CK2),
1334 GPIO_FN(TS_SDEN2), GPIO_FN(TDI3),
1335 GPIO_FN(SDHID1_3), GPIO_FN(M12_SLCD_CE2),
1336 GPIO_FN(TS_SCK2), GPIO_FN(RTCK3),
1337 GPIO_FN(SDHICMD1), GPIO_FN(TRST3),
1338 GPIO_FN(SDHICLK2), GPIO_FN(SCIFB_SCK),
1339 GPIO_FN(SDHID2_0), GPIO_FN(SCIFB_TXD),
1340 GPIO_FN(SDHID2_1), GPIO_FN(SCIFB_CTS),
1341 GPIO_FN(SDHID2_2), GPIO_FN(SCIFB_RXD),
1342 GPIO_FN(SDHID2_3), GPIO_FN(SCIFB_RTS),
1343 GPIO_FN(SDHICMD2),
1344 GPIO_FN(RESETOUTS),
1345 GPIO_FN(DIVLOCK),
1346};
1347
1348/* helper for top 4 bits in PORTnCR */
1349#define PCRH(in, in_pd, in_pu, out) \
1350 0, (out), (in), 0, \
1351 0, 0, 0, 0, \
1352 0, 0, (in_pd), 0, \
1353 0, 0, (in_pu), 0
1354
1355#define PORTCR(nr, reg) \
1356 { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \
1357 PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \
1358 PORT##nr##_IN_PU, PORT##nr##_OUT), \
1359 PORT##nr##_FN0, PORT##nr##_FN1, PORT##nr##_FN2, \
1360 PORT##nr##_FN3, PORT##nr##_FN4, PORT##nr##_FN5, \
1361 PORT##nr##_FN6, PORT##nr##_FN7 } \
1362 }
1363
1364static struct pinmux_cfg_reg pinmux_config_regs[] = {
1365 PORTCR(0, 0xe6050000), /* PORT0CR */
1366 PORTCR(1, 0xe6050001), /* PORT1CR */
1367 PORTCR(2, 0xe6050002), /* PORT2CR */
1368 PORTCR(3, 0xe6050003), /* PORT3CR */
1369 PORTCR(4, 0xe6050004), /* PORT4CR */
1370 PORTCR(5, 0xe6050005), /* PORT5CR */
1371 PORTCR(6, 0xe6050006), /* PORT6CR */
1372 PORTCR(7, 0xe6050007), /* PORT7CR */
1373 PORTCR(8, 0xe6050008), /* PORT8CR */
1374 PORTCR(9, 0xe6050009), /* PORT9CR */
1375
1376 PORTCR(10, 0xe605000a), /* PORT10CR */
1377 PORTCR(11, 0xe605000b), /* PORT11CR */
1378 PORTCR(12, 0xe605000c), /* PORT12CR */
1379 PORTCR(13, 0xe605000d), /* PORT13CR */
1380 PORTCR(14, 0xe605000e), /* PORT14CR */
1381 PORTCR(15, 0xe605000f), /* PORT15CR */
1382 PORTCR(16, 0xe6050010), /* PORT16CR */
1383 PORTCR(17, 0xe6050011), /* PORT17CR */
1384 PORTCR(18, 0xe6050012), /* PORT18CR */
1385 PORTCR(19, 0xe6050013), /* PORT19CR */
1386
1387 PORTCR(20, 0xe6050014), /* PORT20CR */
1388 PORTCR(21, 0xe6050015), /* PORT21CR */
1389 PORTCR(22, 0xe6050016), /* PORT22CR */
1390 PORTCR(23, 0xe6050017), /* PORT23CR */
1391 PORTCR(24, 0xe6050018), /* PORT24CR */
1392 PORTCR(25, 0xe6050019), /* PORT25CR */
1393 PORTCR(26, 0xe605001a), /* PORT26CR */
1394 PORTCR(27, 0xe605001b), /* PORT27CR */
1395 PORTCR(28, 0xe605001c), /* PORT28CR */
1396 PORTCR(29, 0xe605001d), /* PORT29CR */
1397
1398 PORTCR(30, 0xe605001e), /* PORT30CR */
1399 PORTCR(31, 0xe605001f), /* PORT31CR */
1400 PORTCR(32, 0xe6050020), /* PORT32CR */
1401 PORTCR(33, 0xe6050021), /* PORT33CR */
1402 PORTCR(34, 0xe6050022), /* PORT34CR */
1403 PORTCR(35, 0xe6050023), /* PORT35CR */
1404 PORTCR(36, 0xe6050024), /* PORT36CR */
1405 PORTCR(37, 0xe6050025), /* PORT37CR */
1406 PORTCR(38, 0xe6050026), /* PORT38CR */
1407 PORTCR(39, 0xe6050027), /* PORT39CR */
1408
1409 PORTCR(40, 0xe6050028), /* PORT40CR */
1410 PORTCR(41, 0xe6050029), /* PORT41CR */
1411 PORTCR(42, 0xe605002a), /* PORT42CR */
1412 PORTCR(43, 0xe605002b), /* PORT43CR */
1413 PORTCR(44, 0xe605002c), /* PORT44CR */
1414 PORTCR(45, 0xe605002d), /* PORT45CR */
1415 PORTCR(46, 0xe605002e), /* PORT46CR */
1416 PORTCR(47, 0xe605002f), /* PORT47CR */
1417 PORTCR(48, 0xe6050030), /* PORT48CR */
1418 PORTCR(49, 0xe6050031), /* PORT49CR */
1419
1420 PORTCR(50, 0xe6050032), /* PORT50CR */
1421 PORTCR(51, 0xe6050033), /* PORT51CR */
1422 PORTCR(52, 0xe6050034), /* PORT52CR */
1423 PORTCR(53, 0xe6050035), /* PORT53CR */
1424 PORTCR(54, 0xe6050036), /* PORT54CR */
1425 PORTCR(55, 0xe6050037), /* PORT55CR */
1426 PORTCR(56, 0xe6050038), /* PORT56CR */
1427 PORTCR(57, 0xe6050039), /* PORT57CR */
1428 PORTCR(58, 0xe605003a), /* PORT58CR */
1429 PORTCR(59, 0xe605003b), /* PORT59CR */
1430
1431 PORTCR(60, 0xe605003c), /* PORT60CR */
1432 PORTCR(61, 0xe605003d), /* PORT61CR */
1433 PORTCR(62, 0xe605003e), /* PORT62CR */
1434 PORTCR(63, 0xe605003f), /* PORT63CR */
1435 PORTCR(64, 0xe6050040), /* PORT64CR */
1436 PORTCR(65, 0xe6050041), /* PORT65CR */
1437 PORTCR(66, 0xe6050042), /* PORT66CR */
1438 PORTCR(67, 0xe6050043), /* PORT67CR */
1439 PORTCR(68, 0xe6050044), /* PORT68CR */
1440 PORTCR(69, 0xe6050045), /* PORT69CR */
1441
1442 PORTCR(70, 0xe6050046), /* PORT70CR */
1443 PORTCR(71, 0xe6050047), /* PORT71CR */
1444 PORTCR(72, 0xe6050048), /* PORT72CR */
1445 PORTCR(73, 0xe6050049), /* PORT73CR */
1446 PORTCR(74, 0xe605004a), /* PORT74CR */
1447 PORTCR(75, 0xe605004b), /* PORT75CR */
1448 PORTCR(76, 0xe605004c), /* PORT76CR */
1449 PORTCR(77, 0xe605004d), /* PORT77CR */
1450 PORTCR(78, 0xe605004e), /* PORT78CR */
1451 PORTCR(79, 0xe605004f), /* PORT79CR */
1452
1453 PORTCR(80, 0xe6050050), /* PORT80CR */
1454 PORTCR(81, 0xe6050051), /* PORT81CR */
1455 PORTCR(82, 0xe6050052), /* PORT82CR */
1456 PORTCR(83, 0xe6050053), /* PORT83CR */
1457 PORTCR(84, 0xe6050054), /* PORT84CR */
1458 PORTCR(85, 0xe6050055), /* PORT85CR */
1459 PORTCR(86, 0xe6050056), /* PORT86CR */
1460 PORTCR(87, 0xe6050057), /* PORT87CR */
1461 PORTCR(88, 0xe6051058), /* PORT88CR */
1462 PORTCR(89, 0xe6051059), /* PORT89CR */
1463
1464 PORTCR(90, 0xe605105a), /* PORT90CR */
1465 PORTCR(91, 0xe605105b), /* PORT91CR */
1466 PORTCR(92, 0xe605105c), /* PORT92CR */
1467 PORTCR(93, 0xe605105d), /* PORT93CR */
1468 PORTCR(94, 0xe605105e), /* PORT94CR */
1469 PORTCR(95, 0xe605105f), /* PORT95CR */
1470 PORTCR(96, 0xe6051060), /* PORT96CR */
1471 PORTCR(97, 0xe6051061), /* PORT97CR */
1472 PORTCR(98, 0xe6051062), /* PORT98CR */
1473 PORTCR(99, 0xe6051063), /* PORT99CR */
1474
1475 PORTCR(100, 0xe6051064), /* PORT100CR */
1476 PORTCR(101, 0xe6051065), /* PORT101CR */
1477 PORTCR(102, 0xe6051066), /* PORT102CR */
1478 PORTCR(103, 0xe6051067), /* PORT103CR */
1479 PORTCR(104, 0xe6051068), /* PORT104CR */
1480 PORTCR(105, 0xe6051069), /* PORT105CR */
1481 PORTCR(106, 0xe605106a), /* PORT106CR */
1482 PORTCR(107, 0xe605106b), /* PORT107CR */
1483 PORTCR(108, 0xe605106c), /* PORT108CR */
1484 PORTCR(109, 0xe605106d), /* PORT109CR */
1485
1486 PORTCR(110, 0xe605106e), /* PORT110CR */
1487 PORTCR(111, 0xe605106f), /* PORT111CR */
1488 PORTCR(112, 0xe6051070), /* PORT112CR */
1489 PORTCR(113, 0xe6051071), /* PORT113CR */
1490 PORTCR(114, 0xe6051072), /* PORT114CR */
1491 PORTCR(115, 0xe6051073), /* PORT115CR */
1492 PORTCR(116, 0xe6051074), /* PORT116CR */
1493 PORTCR(117, 0xe6051075), /* PORT117CR */
1494 PORTCR(118, 0xe6051076), /* PORT118CR */
1495 PORTCR(119, 0xe6051077), /* PORT119CR */
1496
1497 PORTCR(120, 0xe6051078), /* PORT120CR */
1498 PORTCR(121, 0xe6051079), /* PORT121CR */
1499 PORTCR(122, 0xe605107a), /* PORT122CR */
1500 PORTCR(123, 0xe605107b), /* PORT123CR */
1501 PORTCR(124, 0xe605107c), /* PORT124CR */
1502 PORTCR(125, 0xe605107d), /* PORT125CR */
1503 PORTCR(126, 0xe605107e), /* PORT126CR */
1504 PORTCR(127, 0xe605107f), /* PORT127CR */
1505 PORTCR(128, 0xe6051080), /* PORT128CR */
1506 PORTCR(129, 0xe6051081), /* PORT129CR */
1507
1508 PORTCR(130, 0xe6051082), /* PORT130CR */
1509 PORTCR(131, 0xe6051083), /* PORT131CR */
1510 PORTCR(132, 0xe6051084), /* PORT132CR */
1511 PORTCR(133, 0xe6051085), /* PORT133CR */
1512 PORTCR(134, 0xe6051086), /* PORT134CR */
1513 PORTCR(135, 0xe6051087), /* PORT135CR */
1514 PORTCR(136, 0xe6051088), /* PORT136CR */
1515 PORTCR(137, 0xe6051089), /* PORT137CR */
1516 PORTCR(138, 0xe605108a), /* PORT138CR */
1517 PORTCR(139, 0xe605108b), /* PORT139CR */
1518
1519 PORTCR(140, 0xe605108c), /* PORT140CR */
1520 PORTCR(141, 0xe605108d), /* PORT141CR */
1521 PORTCR(142, 0xe605108e), /* PORT142CR */
1522 PORTCR(143, 0xe605108f), /* PORT143CR */
1523 PORTCR(144, 0xe6051090), /* PORT144CR */
1524 PORTCR(145, 0xe6051091), /* PORT145CR */
1525 PORTCR(146, 0xe6051092), /* PORT146CR */
1526 PORTCR(147, 0xe6051093), /* PORT147CR */
1527 PORTCR(148, 0xe6051094), /* PORT148CR */
1528 PORTCR(149, 0xe6051095), /* PORT149CR */
1529
1530 PORTCR(150, 0xe6051096), /* PORT150CR */
1531 PORTCR(151, 0xe6051097), /* PORT151CR */
1532 PORTCR(152, 0xe6051098), /* PORT152CR */
1533 PORTCR(153, 0xe6051099), /* PORT153CR */
1534 PORTCR(154, 0xe605109a), /* PORT154CR */
1535 PORTCR(155, 0xe605109b), /* PORT155CR */
1536 PORTCR(156, 0xe605109c), /* PORT156CR */
1537 PORTCR(157, 0xe605109d), /* PORT157CR */
1538 PORTCR(158, 0xe605109e), /* PORT158CR */
1539 PORTCR(159, 0xe605109f), /* PORT159CR */
1540
1541 PORTCR(160, 0xe60510a0), /* PORT160CR */
1542 PORTCR(161, 0xe60510a1), /* PORT161CR */
1543 PORTCR(162, 0xe60510a2), /* PORT162CR */
1544 PORTCR(163, 0xe60510a3), /* PORT163CR */
1545 PORTCR(164, 0xe60510a4), /* PORT164CR */
1546 PORTCR(165, 0xe60510a5), /* PORT165CR */
1547 PORTCR(166, 0xe60510a6), /* PORT166CR */
1548 PORTCR(167, 0xe60510a7), /* PORT167CR */
1549 PORTCR(168, 0xe60510a8), /* PORT168CR */
1550 PORTCR(169, 0xe60510a9), /* PORT169CR */
1551
1552 PORTCR(170, 0xe60510aa), /* PORT170CR */
1553 PORTCR(171, 0xe60510ab), /* PORT171CR */
1554 PORTCR(172, 0xe60510ac), /* PORT172CR */
1555 PORTCR(173, 0xe60510ad), /* PORT173CR */
1556 PORTCR(174, 0xe60510ae), /* PORT174CR */
1557 PORTCR(175, 0xe60520af), /* PORT175CR */
1558 PORTCR(176, 0xe60520b0), /* PORT176CR */
1559 PORTCR(177, 0xe60520b1), /* PORT177CR */
1560 PORTCR(178, 0xe60520b2), /* PORT178CR */
1561 PORTCR(179, 0xe60520b3), /* PORT179CR */
1562
1563 PORTCR(180, 0xe60520b4), /* PORT180CR */
1564 PORTCR(181, 0xe60520b5), /* PORT181CR */
1565 PORTCR(182, 0xe60520b6), /* PORT182CR */
1566 PORTCR(183, 0xe60520b7), /* PORT183CR */
1567 PORTCR(184, 0xe60520b8), /* PORT184CR */
1568 PORTCR(185, 0xe60520b9), /* PORT185CR */
1569 PORTCR(186, 0xe60520ba), /* PORT186CR */
1570 PORTCR(187, 0xe60520bb), /* PORT187CR */
1571 PORTCR(188, 0xe60520bc), /* PORT188CR */
1572 PORTCR(189, 0xe60520bd), /* PORT189CR */
1573
1574 PORTCR(190, 0xe60520be), /* PORT190CR */
1575 PORTCR(191, 0xe60520bf), /* PORT191CR */
1576 PORTCR(192, 0xe60520c0), /* PORT192CR */
1577 PORTCR(193, 0xe60520c1), /* PORT193CR */
1578 PORTCR(194, 0xe60520c2), /* PORT194CR */
1579 PORTCR(195, 0xe60520c3), /* PORT195CR */
1580 PORTCR(196, 0xe60520c4), /* PORT196CR */
1581 PORTCR(197, 0xe60520c5), /* PORT197CR */
1582 PORTCR(198, 0xe60520c6), /* PORT198CR */
1583 PORTCR(199, 0xe60520c7), /* PORT199CR */
1584
1585 PORTCR(200, 0xe60520c8), /* PORT200CR */
1586 PORTCR(201, 0xe60520c9), /* PORT201CR */
1587 PORTCR(202, 0xe60520ca), /* PORT202CR */
1588 PORTCR(203, 0xe60520cb), /* PORT203CR */
1589 PORTCR(204, 0xe60520cc), /* PORT204CR */
1590 PORTCR(205, 0xe60520cd), /* PORT205CR */
1591 PORTCR(206, 0xe60520ce), /* PORT206CR */
1592 PORTCR(207, 0xe60520cf), /* PORT207CR */
1593 PORTCR(208, 0xe60520d0), /* PORT208CR */
1594 PORTCR(209, 0xe60520d1), /* PORT209CR */
1595
1596 PORTCR(210, 0xe60520d2), /* PORT210CR */
1597 PORTCR(211, 0xe60520d3), /* PORT211CR */
1598 PORTCR(212, 0xe60520d4), /* PORT212CR */
1599 PORTCR(213, 0xe60520d5), /* PORT213CR */
1600 PORTCR(214, 0xe60520d6), /* PORT214CR */
1601 PORTCR(215, 0xe60520d7), /* PORT215CR */
1602 PORTCR(216, 0xe60520d8), /* PORT216CR */
1603 PORTCR(217, 0xe60520d9), /* PORT217CR */
1604 PORTCR(218, 0xe60520da), /* PORT218CR */
1605 PORTCR(219, 0xe60520db), /* PORT219CR */
1606
1607 PORTCR(220, 0xe60520dc), /* PORT220CR */
1608 PORTCR(221, 0xe60520dd), /* PORT221CR */
1609 PORTCR(222, 0xe60520de), /* PORT222CR */
1610 PORTCR(223, 0xe60520df), /* PORT223CR */
1611 PORTCR(224, 0xe60520e0), /* PORT224CR */
1612 PORTCR(225, 0xe60520e1), /* PORT225CR */
1613 PORTCR(226, 0xe60520e2), /* PORT226CR */
1614 PORTCR(227, 0xe60520e3), /* PORT227CR */
1615 PORTCR(228, 0xe60520e4), /* PORT228CR */
1616 PORTCR(229, 0xe60520e5), /* PORT229CR */
1617
1618 PORTCR(230, 0xe60520e6), /* PORT230CR */
1619 PORTCR(231, 0xe60520e7), /* PORT231CR */
1620 PORTCR(232, 0xe60520e8), /* PORT232CR */
1621 PORTCR(233, 0xe60520e9), /* PORT233CR */
1622 PORTCR(234, 0xe60520ea), /* PORT234CR */
1623 PORTCR(235, 0xe60520eb), /* PORT235CR */
1624 PORTCR(236, 0xe60530ec), /* PORT236CR */
1625 PORTCR(237, 0xe60530ed), /* PORT237CR */
1626 PORTCR(238, 0xe60530ee), /* PORT238CR */
1627 PORTCR(239, 0xe60530ef), /* PORT239CR */
1628
1629 PORTCR(240, 0xe60530f0), /* PORT240CR */
1630 PORTCR(241, 0xe60530f1), /* PORT241CR */
1631 PORTCR(242, 0xe60530f2), /* PORT242CR */
1632 PORTCR(243, 0xe60530f3), /* PORT243CR */
1633 PORTCR(244, 0xe60530f4), /* PORT244CR */
1634 PORTCR(245, 0xe60530f5), /* PORT245CR */
1635 PORTCR(246, 0xe60530f6), /* PORT246CR */
1636 PORTCR(247, 0xe60530f7), /* PORT247CR */
1637 PORTCR(248, 0xe60530f8), /* PORT248CR */
1638 PORTCR(249, 0xe60530f9), /* PORT249CR */
1639
1640 PORTCR(250, 0xe60530fa), /* PORT250CR */
1641 PORTCR(251, 0xe60530fb), /* PORT251CR */
1642 PORTCR(252, 0xe60530fc), /* PORT252CR */
1643 PORTCR(253, 0xe60530fd), /* PORT253CR */
1644 PORTCR(254, 0xe60530fe), /* PORT254CR */
1645 PORTCR(255, 0xe60530ff), /* PORT255CR */
1646 PORTCR(256, 0xe6053100), /* PORT256CR */
1647 PORTCR(257, 0xe6053101), /* PORT257CR */
1648 PORTCR(258, 0xe6053102), /* PORT258CR */
1649 PORTCR(259, 0xe6053103), /* PORT259CR */
1650
1651 PORTCR(260, 0xe6053104), /* PORT260CR */
1652 PORTCR(261, 0xe6053105), /* PORT261CR */
1653 PORTCR(262, 0xe6053106), /* PORT262CR */
1654 PORTCR(263, 0xe6053107), /* PORT263CR */
1655 PORTCR(264, 0xe6053108), /* PORT264CR */
1656 PORTCR(265, 0xe6053109), /* PORT265CR */
1657 PORTCR(266, 0xe605310a), /* PORT266CR */
1658 PORTCR(267, 0xe605310b), /* PORT267CR */
1659 PORTCR(268, 0xe605310c), /* PORT268CR */
1660 PORTCR(269, 0xe605310d), /* PORT269CR */
1661
1662 PORTCR(270, 0xe605310e), /* PORT270CR */
1663 PORTCR(271, 0xe605310f), /* PORT271CR */
1664 PORTCR(272, 0xe6053110), /* PORT272CR */
1665
1666 { PINMUX_CFG_REG("MSELBCR", 0xe6058024, 32, 1) {
1667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1670 0, 0,
1671 0, 0,
1672 0, 0,
1673 0, 0,
1674 0, 0,
1675 MSELBCR_MSEL2_0, MSELBCR_MSEL2_1,
1676 0, 0,
1677 0, 0 }
1678 },
1679 { },
1680};
1681
1682static struct pinmux_data_reg pinmux_data_regs[] = {
1683 { PINMUX_DATA_REG("PORTL031_000DR", 0xe6054000, 32) {
1684 PORT31_DATA, PORT30_DATA, PORT29_DATA, PORT28_DATA,
1685 PORT27_DATA, PORT26_DATA, PORT25_DATA, PORT24_DATA,
1686 PORT23_DATA, PORT22_DATA, PORT21_DATA, PORT20_DATA,
1687 PORT19_DATA, PORT18_DATA, PORT17_DATA, PORT16_DATA,
1688 PORT15_DATA, PORT14_DATA, PORT13_DATA, PORT12_DATA,
1689 PORT11_DATA, PORT10_DATA, PORT9_DATA, PORT8_DATA,
1690 PORT7_DATA, PORT6_DATA, PORT5_DATA, PORT4_DATA,
1691 PORT3_DATA, PORT2_DATA, PORT1_DATA, PORT0_DATA }
1692 },
1693 { PINMUX_DATA_REG("PORTL063_032DR", 0xe6054004, 32) {
1694 PORT63_DATA, PORT62_DATA, PORT61_DATA, PORT60_DATA,
1695 PORT59_DATA, PORT58_DATA, PORT57_DATA, PORT56_DATA,
1696 PORT55_DATA, PORT54_DATA, PORT53_DATA, PORT52_DATA,
1697 PORT51_DATA, PORT50_DATA, PORT49_DATA, PORT48_DATA,
1698 PORT47_DATA, PORT46_DATA, PORT45_DATA, PORT44_DATA,
1699 PORT43_DATA, PORT42_DATA, PORT41_DATA, PORT40_DATA,
1700 PORT39_DATA, PORT38_DATA, PORT37_DATA, PORT36_DATA,
1701 PORT35_DATA, PORT34_DATA, PORT33_DATA, PORT32_DATA }
1702 },
1703 { PINMUX_DATA_REG("PORTL095_064DR", 0xe6054008, 32) {
1704 PORT95_DATA, PORT94_DATA, PORT93_DATA, PORT92_DATA,
1705 PORT91_DATA, PORT90_DATA, PORT89_DATA, PORT88_DATA,
1706 PORT87_DATA, PORT86_DATA, PORT85_DATA, PORT84_DATA,
1707 PORT83_DATA, PORT82_DATA, PORT81_DATA, PORT80_DATA,
1708 PORT79_DATA, PORT78_DATA, PORT77_DATA, PORT76_DATA,
1709 PORT75_DATA, PORT74_DATA, PORT73_DATA, PORT72_DATA,
1710 PORT71_DATA, PORT70_DATA, PORT69_DATA, PORT68_DATA,
1711 PORT67_DATA, PORT66_DATA, PORT65_DATA, PORT64_DATA }
1712 },
1713 { PINMUX_DATA_REG("PORTD127_096DR", 0xe6055004, 32) {
1714 PORT127_DATA, PORT126_DATA, PORT125_DATA, PORT124_DATA,
1715 PORT123_DATA, PORT122_DATA, PORT121_DATA, PORT120_DATA,
1716 PORT119_DATA, PORT118_DATA, PORT117_DATA, PORT116_DATA,
1717 PORT115_DATA, PORT114_DATA, PORT113_DATA, PORT112_DATA,
1718 PORT111_DATA, PORT110_DATA, PORT109_DATA, PORT108_DATA,
1719 PORT107_DATA, PORT106_DATA, PORT105_DATA, PORT104_DATA,
1720 PORT103_DATA, PORT102_DATA, PORT101_DATA, PORT100_DATA,
1721 PORT99_DATA, PORT98_DATA, PORT97_DATA, PORT96_DATA }
1722 },
1723 { PINMUX_DATA_REG("PORTD159_128DR", 0xe6055008, 32) {
1724 PORT159_DATA, PORT158_DATA, PORT157_DATA, PORT156_DATA,
1725 PORT155_DATA, PORT154_DATA, PORT153_DATA, PORT152_DATA,
1726 PORT151_DATA, PORT150_DATA, PORT149_DATA, PORT148_DATA,
1727 PORT147_DATA, PORT146_DATA, PORT145_DATA, PORT144_DATA,
1728 PORT143_DATA, PORT142_DATA, PORT141_DATA, PORT140_DATA,
1729 PORT139_DATA, PORT138_DATA, PORT137_DATA, PORT136_DATA,
1730 PORT135_DATA, PORT134_DATA, PORT133_DATA, PORT132_DATA,
1731 PORT131_DATA, PORT130_DATA, PORT129_DATA, PORT128_DATA }
1732 },
1733 { PINMUX_DATA_REG("PORTR191_160DR", 0xe6056000, 32) {
1734 PORT191_DATA, PORT190_DATA, PORT189_DATA, PORT188_DATA,
1735 PORT187_DATA, PORT186_DATA, PORT185_DATA, PORT184_DATA,
1736 PORT183_DATA, PORT182_DATA, PORT181_DATA, PORT180_DATA,
1737 PORT179_DATA, PORT178_DATA, PORT177_DATA, PORT176_DATA,
1738 PORT175_DATA, PORT174_DATA, PORT173_DATA, PORT172_DATA,
1739 PORT171_DATA, PORT170_DATA, PORT169_DATA, PORT168_DATA,
1740 PORT167_DATA, PORT166_DATA, PORT165_DATA, PORT164_DATA,
1741 PORT163_DATA, PORT162_DATA, PORT161_DATA, PORT160_DATA }
1742 },
1743 { PINMUX_DATA_REG("PORTR223_192DR", 0xe6056004, 32) {
1744 PORT223_DATA, PORT222_DATA, PORT221_DATA, PORT220_DATA,
1745 PORT219_DATA, PORT218_DATA, PORT217_DATA, PORT216_DATA,
1746 PORT215_DATA, PORT214_DATA, PORT213_DATA, PORT212_DATA,
1747 PORT211_DATA, PORT210_DATA, PORT209_DATA, PORT208_DATA,
1748 PORT207_DATA, PORT206_DATA, PORT205_DATA, PORT204_DATA,
1749 PORT203_DATA, PORT202_DATA, PORT201_DATA, PORT200_DATA,
1750 PORT199_DATA, PORT198_DATA, PORT197_DATA, PORT196_DATA,
1751 PORT195_DATA, PORT194_DATA, PORT193_DATA, PORT192_DATA }
1752 },
1753 { PINMUX_DATA_REG("PORTU255_224DR", 0xe6057000, 32) {
1754 PORT255_DATA, PORT254_DATA, PORT253_DATA, PORT252_DATA,
1755 PORT251_DATA, PORT250_DATA, PORT249_DATA, PORT248_DATA,
1756 PORT247_DATA, PORT246_DATA, PORT245_DATA, PORT244_DATA,
1757 PORT243_DATA, PORT242_DATA, PORT241_DATA, PORT240_DATA,
1758 PORT239_DATA, PORT238_DATA, PORT237_DATA, PORT236_DATA,
1759 PORT235_DATA, PORT234_DATA, PORT233_DATA, PORT232_DATA,
1760 PORT231_DATA, PORT230_DATA, PORT229_DATA, PORT228_DATA,
1761 PORT227_DATA, PORT226_DATA, PORT225_DATA, PORT224_DATA }
1762 },
1763 { PINMUX_DATA_REG("PORTU287_256DR", 0xe6057004, 32) {
1764 0, 0, 0, 0,
1765 0, 0, 0, 0,
1766 0, 0, 0, 0,
1767 0, 0, 0, PORT272_DATA,
1768 PORT271_DATA, PORT270_DATA, PORT269_DATA, PORT268_DATA,
1769 PORT267_DATA, PORT266_DATA, PORT265_DATA, PORT264_DATA,
1770 PORT263_DATA, PORT262_DATA, PORT261_DATA, PORT260_DATA,
1771 PORT259_DATA, PORT258_DATA, PORT257_DATA, PORT256_DATA }
1772 },
1773 { },
1774};
1775
1776static struct pinmux_info sh7367_pinmux_info = {
1777 .name = "sh7367_pfc",
1778 .reserved_id = PINMUX_RESERVED,
1779 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
1780 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
1781 .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
1782 .input_pd = { PINMUX_INPUT_PULLDOWN_BEGIN, PINMUX_INPUT_PULLDOWN_END },
1783 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
1784 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
1785 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
1786
1787 .first_gpio = GPIO_PORT0,
1788 .last_gpio = GPIO_FN_DIVLOCK,
1789
1790 .gpios = pinmux_gpios,
1791 .cfg_regs = pinmux_config_regs,
1792 .data_regs = pinmux_data_regs,
1793
1794 .gpio_data = pinmux_data,
1795 .gpio_data_size = ARRAY_SIZE(pinmux_data),
1796};
1797
1798void sh7367_pinmux_init(void)
1799{
1800 register_pinmux(&sh7367_pinmux_info);
1801}
diff --git a/arch/arm/mach-shmobile/pfc-sh7372.c b/arch/arm/mach-shmobile/pfc-sh7372.c
new file mode 100644
index 000000000000..9557d0964d73
--- /dev/null
+++ b/arch/arm/mach-shmobile/pfc-sh7372.c
@@ -0,0 +1,1637 @@
1/*
2 * sh7372 processor support - PFC hardware block
3 *
4 * Copyright (C) 2010 Kuninori Morimoto <morimoto.kuninori@renesas.com>
5 *
6 * Based on
7 * sh7367 processor support - PFC hardware block
8 * Copyright (C) 2010 Magnus Damm
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; version 2 of the License.
13 *
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 St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23#include <linux/init.h>
24#include <linux/kernel.h>
25#include <linux/gpio.h>
26#include <mach/sh7372.h>
27
28#define _1(fn, pfx, sfx) fn(pfx, sfx)
29
30#define _10(fn, pfx, sfx) \
31 _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \
32 _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \
33 _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \
34 _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \
35 _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx)
36
37#define _80(fn, pfx, sfx) \
38 _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \
39 _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \
40 _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \
41 _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx)
42
43#define _190(fn, pfx, sfx) \
44 _10(fn, pfx, sfx), _80(fn, pfx, sfx), _10(fn, pfx##9, sfx), \
45 _10(fn, pfx##10, sfx), _80(fn, pfx##1, sfx), _1(fn, pfx##190, sfx)
46
47#define _PORT(pfx, sfx) pfx##_##sfx
48#define PORT_ALL(str) _190(_PORT, PORT, str)
49
50enum {
51 PINMUX_RESERVED = 0,
52
53 /* PORT0_DATA -> PORT190_DATA */
54 PINMUX_DATA_BEGIN,
55 PORT_ALL(DATA),
56 PINMUX_DATA_END,
57
58 /* PORT0_IN -> PORT190_IN */
59 PINMUX_INPUT_BEGIN,
60 PORT_ALL(IN),
61 PINMUX_INPUT_END,
62
63 /* PORT0_IN_PU -> PORT190_IN_PU */
64 PINMUX_INPUT_PULLUP_BEGIN,
65 PORT_ALL(IN_PU),
66 PINMUX_INPUT_PULLUP_END,
67
68 /* PORT0_IN_PD -> PORT190_IN_PD */
69 PINMUX_INPUT_PULLDOWN_BEGIN,
70 PORT_ALL(IN_PD),
71 PINMUX_INPUT_PULLDOWN_END,
72
73 /* PORT0_OUT -> PORT190_OUT */
74 PINMUX_OUTPUT_BEGIN,
75 PORT_ALL(OUT),
76 PINMUX_OUTPUT_END,
77
78 PINMUX_FUNCTION_BEGIN,
79 PORT_ALL(FN_IN), /* PORT0_FN_IN -> PORT190_FN_IN */
80 PORT_ALL(FN_OUT), /* PORT0_FN_OUT -> PORT190_FN_OUT */
81 PORT_ALL(FN0), /* PORT0_FN0 -> PORT190_FN0 */
82 PORT_ALL(FN1), /* PORT0_FN1 -> PORT190_FN1 */
83 PORT_ALL(FN2), /* PORT0_FN2 -> PORT190_FN2 */
84 PORT_ALL(FN3), /* PORT0_FN3 -> PORT190_FN3 */
85 PORT_ALL(FN4), /* PORT0_FN4 -> PORT190_FN4 */
86 PORT_ALL(FN5), /* PORT0_FN5 -> PORT190_FN5 */
87 PORT_ALL(FN6), /* PORT0_FN6 -> PORT190_FN6 */
88 PORT_ALL(FN7), /* PORT0_FN7 -> PORT190_FN7 */
89
90 MSEL1CR_31_0, MSEL1CR_31_1,
91 MSEL1CR_30_0, MSEL1CR_30_1,
92 MSEL1CR_29_0, MSEL1CR_29_1,
93 MSEL1CR_28_0, MSEL1CR_28_1,
94 MSEL1CR_27_0, MSEL1CR_27_1,
95 MSEL1CR_26_0, MSEL1CR_26_1,
96 MSEL1CR_16_0, MSEL1CR_16_1,
97 MSEL1CR_15_0, MSEL1CR_15_1,
98 MSEL1CR_14_0, MSEL1CR_14_1,
99 MSEL1CR_13_0, MSEL1CR_13_1,
100 MSEL1CR_12_0, MSEL1CR_12_1,
101 MSEL1CR_9_0, MSEL1CR_9_1,
102 MSEL1CR_8_0, MSEL1CR_8_1,
103 MSEL1CR_7_0, MSEL1CR_7_1,
104 MSEL1CR_6_0, MSEL1CR_6_1,
105 MSEL1CR_4_0, MSEL1CR_4_1,
106 MSEL1CR_3_0, MSEL1CR_3_1,
107 MSEL1CR_2_0, MSEL1CR_2_1,
108 MSEL1CR_0_0, MSEL1CR_0_1,
109
110 MSEL3CR_27_0, MSEL3CR_27_1,
111 MSEL3CR_26_0, MSEL3CR_26_1,
112 MSEL3CR_21_0, MSEL3CR_21_1,
113 MSEL3CR_20_0, MSEL3CR_20_1,
114 MSEL3CR_15_0, MSEL3CR_15_1,
115 MSEL3CR_9_0, MSEL3CR_9_1,
116 MSEL3CR_6_0, MSEL3CR_6_1,
117
118 MSEL4CR_19_0, MSEL4CR_19_1,
119 MSEL4CR_18_0, MSEL4CR_18_1,
120 MSEL4CR_17_0, MSEL4CR_17_1,
121 MSEL4CR_16_0, MSEL4CR_16_1,
122 MSEL4CR_15_0, MSEL4CR_15_1,
123 MSEL4CR_14_0, MSEL4CR_14_1,
124 MSEL4CR_10_0, MSEL4CR_10_1,
125 MSEL4CR_6_0, MSEL4CR_6_1,
126 MSEL4CR_4_0, MSEL4CR_4_1,
127 MSEL4CR_1_0, MSEL4CR_1_1,
128 PINMUX_FUNCTION_END,
129
130 PINMUX_MARK_BEGIN,
131
132 /* IRQ */
133 IRQ0_6_MARK, IRQ0_162_MARK, IRQ1_MARK, IRQ2_4_MARK,
134 IRQ2_5_MARK, IRQ3_8_MARK, IRQ3_16_MARK, IRQ4_17_MARK,
135 IRQ4_163_MARK, IRQ5_MARK, IRQ6_39_MARK, IRQ6_164_MARK,
136 IRQ7_40_MARK, IRQ7_167_MARK, IRQ8_41_MARK, IRQ8_168_MARK,
137 IRQ9_42_MARK, IRQ9_169_MARK, IRQ10_MARK, IRQ11_MARK,
138 IRQ12_80_MARK, IRQ12_137_MARK, IRQ13_81_MARK, IRQ13_145_MARK,
139 IRQ14_82_MARK, IRQ14_146_MARK, IRQ15_83_MARK, IRQ15_147_MARK,
140 IRQ16_84_MARK, IRQ16_170_MARK, IRQ17_MARK, IRQ18_MARK,
141 IRQ19_MARK, IRQ20_MARK, IRQ21_MARK, IRQ22_MARK,
142 IRQ23_MARK, IRQ24_MARK, IRQ25_MARK, IRQ26_121_MARK,
143 IRQ26_172_MARK, IRQ27_122_MARK, IRQ27_180_MARK, IRQ28_123_MARK,
144 IRQ28_181_MARK, IRQ29_129_MARK, IRQ29_182_MARK, IRQ30_130_MARK,
145 IRQ30_183_MARK, IRQ31_138_MARK, IRQ31_184_MARK,
146
147 /* MSIOF0 */
148 MSIOF0_TSYNC_MARK, MSIOF0_TSCK_MARK, MSIOF0_RXD_MARK,
149 MSIOF0_RSCK_MARK, MSIOF0_RSYNC_MARK, MSIOF0_MCK0_MARK,
150 MSIOF0_MCK1_MARK, MSIOF0_SS1_MARK, MSIOF0_SS2_MARK,
151 MSIOF0_TXD_MARK,
152
153 /* MSIOF1 */
154 MSIOF1_TSCK_39_MARK, MSIOF1_TSYNC_40_MARK,
155 MSIOF1_TSCK_88_MARK, MSIOF1_TSYNC_89_MARK,
156 MSIOF1_TXD_41_MARK, MSIOF1_RXD_42_MARK,
157 MSIOF1_TXD_90_MARK, MSIOF1_RXD_91_MARK,
158 MSIOF1_SS1_43_MARK, MSIOF1_SS2_44_MARK,
159 MSIOF1_SS1_92_MARK, MSIOF1_SS2_93_MARK,
160 MSIOF1_RSCK_MARK, MSIOF1_RSYNC_MARK,
161 MSIOF1_MCK0_MARK, MSIOF1_MCK1_MARK,
162
163 /* MSIOF2 */
164 MSIOF2_RSCK_MARK, MSIOF2_RSYNC_MARK, MSIOF2_MCK0_MARK,
165 MSIOF2_MCK1_MARK, MSIOF2_SS1_MARK, MSIOF2_SS2_MARK,
166 MSIOF2_TSYNC_MARK, MSIOF2_TSCK_MARK, MSIOF2_RXD_MARK,
167 MSIOF2_TXD_MARK,
168
169 /* MSIOF3 */
170 BBIF1_RXD_MARK, BBIF1_TSYNC_MARK, BBIF1_TSCK_MARK,
171 BBIF1_TXD_MARK, BBIF1_RSCK_MARK, BBIF1_RSYNC_MARK,
172 BBIF1_FLOW_MARK, BB_RX_FLOW_N_MARK,
173
174 /* MSIOF4 */
175 BBIF2_TSCK1_MARK, BBIF2_TSYNC1_MARK,
176 BBIF2_TXD1_MARK, BBIF2_RXD_MARK,
177
178 /* FSI */
179 FSIACK_MARK, FSIBCK_MARK, FSIAILR_MARK, FSIAIBT_MARK,
180 FSIAISLD_MARK, FSIAOMC_MARK, FSIAOLR_MARK, FSIAOBT_MARK,
181 FSIAOSLD_MARK, FSIASPDIF_11_MARK, FSIASPDIF_15_MARK,
182
183 /* FMSI */
184 FMSOCK_MARK, FMSOOLR_MARK, FMSIOLR_MARK, FMSOOBT_MARK,
185 FMSIOBT_MARK, FMSOSLD_MARK, FMSOILR_MARK, FMSIILR_MARK,
186 FMSOIBT_MARK, FMSIIBT_MARK, FMSISLD_MARK, FMSICK_MARK,
187
188 /* SCIFA0 */
189 SCIFA0_TXD_MARK, SCIFA0_RXD_MARK, SCIFA0_SCK_MARK,
190 SCIFA0_RTS_MARK, SCIFA0_CTS_MARK,
191
192 /* SCIFA1 */
193 SCIFA1_TXD_MARK, SCIFA1_RXD_MARK, SCIFA1_SCK_MARK,
194 SCIFA1_RTS_MARK, SCIFA1_CTS_MARK,
195
196 /* SCIFA2 */
197 SCIFA2_CTS1_MARK, SCIFA2_RTS1_MARK, SCIFA2_TXD1_MARK,
198 SCIFA2_RXD1_MARK, SCIFA2_SCK1_MARK,
199
200 /* SCIFA3 */
201 SCIFA3_CTS_43_MARK, SCIFA3_CTS_140_MARK, SCIFA3_RTS_44_MARK,
202 SCIFA3_RTS_141_MARK, SCIFA3_SCK_MARK, SCIFA3_TXD_MARK,
203 SCIFA3_RXD_MARK,
204
205 /* SCIFA4 */
206 SCIFA4_RXD_MARK, SCIFA4_TXD_MARK,
207
208 /* SCIFA5 */
209 SCIFA5_RXD_MARK, SCIFA5_TXD_MARK,
210
211 /* SCIFB */
212 SCIFB_SCK_MARK, SCIFB_RTS_MARK, SCIFB_CTS_MARK,
213 SCIFB_TXD_MARK, SCIFB_RXD_MARK,
214
215 /* CEU */
216 VIO_HD_MARK, VIO_CKO1_MARK, VIO_CKO2_MARK, VIO_VD_MARK,
217 VIO_CLK_MARK, VIO_FIELD_MARK, VIO_CKO_MARK,
218 VIO_D0_MARK, VIO_D1_MARK, VIO_D2_MARK, VIO_D3_MARK,
219 VIO_D4_MARK, VIO_D5_MARK, VIO_D6_MARK, VIO_D7_MARK,
220 VIO_D8_MARK, VIO_D9_MARK, VIO_D10_MARK, VIO_D11_MARK,
221 VIO_D12_MARK, VIO_D13_MARK, VIO_D14_MARK, VIO_D15_MARK,
222
223 /* USB0 */
224 IDIN_0_MARK, EXTLP_0_MARK, OVCN2_0_MARK, PWEN_0_MARK,
225 OVCN_0_MARK, VBUS0_0_MARK,
226
227 /* USB1 */
228 IDIN_1_18_MARK, IDIN_1_113_MARK,
229 PWEN_1_115_MARK, PWEN_1_138_MARK,
230 OVCN_1_114_MARK, OVCN_1_162_MARK,
231 EXTLP_1_MARK, OVCN2_1_MARK,
232 VBUS0_1_MARK,
233
234 /* GPIO */
235 GPI0_MARK, GPI1_MARK, GPO0_MARK, GPO1_MARK,
236
237 /* BSC */
238 BS_MARK, WE1_MARK,
239 CKO_MARK, WAIT_MARK, RDWR_MARK,
240
241 A0_MARK, A1_MARK, A2_MARK, A3_MARK,
242 A6_MARK, A7_MARK, A8_MARK, A9_MARK,
243 A10_MARK, A11_MARK, A12_MARK, A13_MARK,
244 A14_MARK, A15_MARK, A16_MARK, A17_MARK,
245 A18_MARK, A19_MARK, A20_MARK, A21_MARK,
246 A22_MARK, A23_MARK, A24_MARK, A25_MARK,
247 A26_MARK,
248
249 CS0_MARK, CS2_MARK, CS4_MARK,
250 CS5A_MARK, CS5B_MARK, CS6A_MARK,
251
252 /* BSC/FLCTL */
253 RD_FSC_MARK, WE0_FWE_MARK, A4_FOE_MARK, A5_FCDE_MARK,
254 D0_NAF0_MARK, D1_NAF1_MARK, D2_NAF2_MARK, D3_NAF3_MARK,
255 D4_NAF4_MARK, D5_NAF5_MARK, D6_NAF6_MARK, D7_NAF7_MARK,
256 D8_NAF8_MARK, D9_NAF9_MARK, D10_NAF10_MARK, D11_NAF11_MARK,
257 D12_NAF12_MARK, D13_NAF13_MARK, D14_NAF14_MARK, D15_NAF15_MARK,
258
259 /* MMCIF(1) */
260 MMCD0_0_MARK, MMCD0_1_MARK, MMCD0_2_MARK, MMCD0_3_MARK,
261 MMCD0_4_MARK, MMCD0_5_MARK, MMCD0_6_MARK, MMCD0_7_MARK,
262 MMCCMD0_MARK, MMCCLK0_MARK,
263
264 /* MMCIF(2) */
265 MMCD1_0_MARK, MMCD1_1_MARK, MMCD1_2_MARK, MMCD1_3_MARK,
266 MMCD1_4_MARK, MMCD1_5_MARK, MMCD1_6_MARK, MMCD1_7_MARK,
267 MMCCLK1_MARK, MMCCMD1_MARK,
268
269 /* SPU2 */
270 VINT_I_MARK,
271
272 /* FLCTL */
273 FCE1_MARK, FCE0_MARK, FRB_MARK,
274
275 /* HSI */
276 GP_RX_FLAG_MARK, GP_RX_DATA_MARK, GP_TX_READY_MARK,
277 GP_RX_WAKE_MARK, MP_TX_FLAG_MARK, MP_TX_DATA_MARK,
278 MP_RX_READY_MARK, MP_TX_WAKE_MARK,
279
280 /* MFI */
281 MFIv6_MARK,
282 MFIv4_MARK,
283
284 MEMC_CS0_MARK, MEMC_BUSCLK_MEMC_A0_MARK,
285 MEMC_CS1_MEMC_A1_MARK, MEMC_ADV_MEMC_DREQ0_MARK,
286 MEMC_WAIT_MEMC_DREQ1_MARK, MEMC_NOE_MARK,
287 MEMC_NWE_MARK, MEMC_INT_MARK,
288
289 MEMC_AD0_MARK, MEMC_AD1_MARK, MEMC_AD2_MARK,
290 MEMC_AD3_MARK, MEMC_AD4_MARK, MEMC_AD5_MARK,
291 MEMC_AD6_MARK, MEMC_AD7_MARK, MEMC_AD8_MARK,
292 MEMC_AD9_MARK, MEMC_AD10_MARK, MEMC_AD11_MARK,
293 MEMC_AD12_MARK, MEMC_AD13_MARK, MEMC_AD14_MARK,
294 MEMC_AD15_MARK,
295
296 /* SIM */
297 SIM_RST_MARK, SIM_CLK_MARK, SIM_D_MARK,
298
299 /* TPU */
300 TPU0TO0_MARK, TPU0TO1_MARK,
301 TPU0TO2_93_MARK, TPU0TO2_99_MARK,
302 TPU0TO3_MARK,
303
304 /* I2C2 */
305 I2C_SCL2_MARK, I2C_SDA2_MARK,
306
307 /* I2C3(1) */
308 I2C_SCL3_MARK, I2C_SDA3_MARK,
309
310 /* I2C3(2) */
311 I2C_SCL3S_MARK, I2C_SDA3S_MARK,
312
313 /* I2C4(2) */
314 I2C_SCL4_MARK, I2C_SDA4_MARK,
315
316 /* I2C4(2) */
317 I2C_SCL4S_MARK, I2C_SDA4S_MARK,
318
319 /* KEYSC */
320 KEYOUT0_MARK, KEYIN0_121_MARK, KEYIN0_136_MARK,
321 KEYOUT1_MARK, KEYIN1_122_MARK, KEYIN1_135_MARK,
322 KEYOUT2_MARK, KEYIN2_123_MARK, KEYIN2_134_MARK,
323 KEYOUT3_MARK, KEYIN3_124_MARK, KEYIN3_133_MARK,
324 KEYOUT4_MARK, KEYIN4_MARK,
325 KEYOUT5_MARK, KEYIN5_MARK,
326 KEYOUT6_MARK, KEYIN6_MARK,
327 KEYOUT7_MARK, KEYIN7_MARK,
328
329 /* LCDC */
330 LCDC0_SELECT_MARK,
331 LCDC1_SELECT_MARK,
332 LCDHSYN_MARK, LCDCS_MARK, LCDVSYN_MARK, LCDDCK_MARK,
333 LCDWR_MARK, LCDRD_MARK, LCDDISP_MARK, LCDRS_MARK,
334 LCDLCLK_MARK, LCDDON_MARK,
335
336 LCDD0_MARK, LCDD1_MARK, LCDD2_MARK, LCDD3_MARK,
337 LCDD4_MARK, LCDD5_MARK, LCDD6_MARK, LCDD7_MARK,
338 LCDD8_MARK, LCDD9_MARK, LCDD10_MARK, LCDD11_MARK,
339 LCDD12_MARK, LCDD13_MARK, LCDD14_MARK, LCDD15_MARK,
340 LCDD16_MARK, LCDD17_MARK, LCDD18_MARK, LCDD19_MARK,
341 LCDD20_MARK, LCDD21_MARK, LCDD22_MARK, LCDD23_MARK,
342
343 /* IRDA */
344 IRDA_OUT_MARK, IRDA_IN_MARK, IRDA_FIRSEL_MARK,
345 IROUT_139_MARK, IROUT_140_MARK,
346
347 /* TSIF1 */
348 TS0_1SELECT_MARK,
349 TS0_2SELECT_MARK,
350 TS1_1SELECT_MARK,
351 TS1_2SELECT_MARK,
352
353 TS_SPSYNC1_MARK, TS_SDAT1_MARK,
354 TS_SDEN1_MARK, TS_SCK1_MARK,
355
356 /* TSIF2 */
357 TS_SPSYNC2_MARK, TS_SDAT2_MARK,
358 TS_SDEN2_MARK, TS_SCK2_MARK,
359
360 /* HDMI */
361 HDMI_HPD_MARK, HDMI_CEC_MARK,
362
363 /* SDHI0 */
364 SDHICLK0_MARK, SDHICD0_MARK,
365 SDHICMD0_MARK, SDHIWP0_MARK,
366 SDHID0_0_MARK, SDHID0_1_MARK,
367 SDHID0_2_MARK, SDHID0_3_MARK,
368
369 /* SDHI1 */
370 SDHICLK1_MARK, SDHICMD1_MARK, SDHID1_0_MARK,
371 SDHID1_1_MARK, SDHID1_2_MARK, SDHID1_3_MARK,
372
373 /* SDHI2 */
374 SDHICLK2_MARK, SDHICMD2_MARK, SDHID2_0_MARK,
375 SDHID2_1_MARK, SDHID2_2_MARK, SDHID2_3_MARK,
376
377 /* SDENC */
378 SDENC_CPG_MARK,
379 SDENC_DV_CLKI_MARK,
380
381 PINMUX_MARK_END,
382};
383
384/* PORT_DATA_I_PD(nr) */
385#define _I___D(nr) \
386 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
387 PORT##nr##_IN, PORT##nr##_IN_PD)
388
389/* PORT_DATA_I_PU(nr) */
390#define _I__U_(nr) \
391 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
392 PORT##nr##_IN, PORT##nr##_IN_PU)
393
394/* PORT_DATA_I_PU_PD(nr) */
395#define _I__UD(nr) \
396 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
397 PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU)
398
399/* PORT_DATA_O(nr) */
400#define __O___(nr) \
401 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT)
402
403/* PORT_DATA_IO(nr) */
404#define _IO___(nr) \
405 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
406 PORT##nr##_IN)
407
408/* PORT_DATA_IO_PD(nr) */
409#define _IO__D(nr) \
410 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
411 PORT##nr##_IN, PORT##nr##_IN_PD)
412
413/* PORT_DATA_IO_PU(nr) */
414#define _IO_U_(nr) \
415 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
416 PORT##nr##_IN, PORT##nr##_IN_PU)
417
418/* PORT_DATA_IO_PU_PD(nr) */
419#define _IO_UD(nr) \
420 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \
421 PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU)
422
423
424static pinmux_enum_t pinmux_data[] = {
425
426 /* specify valid pin states for each pin in GPIO mode */
427
428 _IO__D(0), _IO__D(1), __O___(2), _I___D(3), _I___D(4),
429 _I___D(5), _IO_UD(6), _I___D(7), _IO__D(8), __O___(9),
430
431 __O___(10), __O___(11), _IO_UD(12), _IO__D(13), _IO__D(14),
432 __O___(15), _IO__D(16), _IO__D(17), _I___D(18), _IO___(19),
433
434 _IO___(20), _IO___(21), _IO___(22), _IO___(23), _IO___(24),
435 _IO___(25), _IO___(26), _IO___(27), _IO___(28), _IO___(29),
436
437 _IO___(30), _IO___(31), _IO___(32), _IO___(33), _IO___(34),
438 _IO___(35), _IO___(36), _IO___(37), _IO___(38), _IO___(39),
439
440 _IO___(40), _IO___(41), _IO___(42), _IO___(43), _IO___(44),
441 _IO___(45), _IO_U_(46), _IO_U_(47), _IO_U_(48), _IO_U_(49),
442
443 _IO_U_(50), _IO_U_(51), _IO_U_(52), _IO_U_(53), _IO_U_(54),
444 _IO_U_(55), _IO_U_(56), _IO_U_(57), _IO_U_(58), _IO_U_(59),
445
446 _IO_U_(60), _IO_U_(61), _IO___(62), __O___(63), __O___(64),
447 _IO_U_(65), __O___(66), _IO_U_(67), __O___(68), _IO___(69), /*66?*/
448
449 _IO___(70), _IO___(71), __O___(72), _I__U_(73), _I__UD(74),
450 _IO_UD(75), _IO_UD(76), _IO_UD(77), _IO_UD(78), _IO_UD(79),
451
452 _IO_UD(80), _IO_UD(81), _IO_UD(82), _IO_UD(83), _IO_UD(84),
453 _IO_UD(85), _IO_UD(86), _IO_UD(87), _IO_UD(88), _IO_UD(89),
454
455 _IO_UD(90), _IO_UD(91), _IO_UD(92), _IO_UD(93), _IO_UD(94),
456 _IO_UD(95), _IO_U_(96), _IO_UD(97), _IO_UD(98), __O___(99), /*99?*/
457
458 _IO__D(100), _IO__D(101), _IO__D(102), _IO__D(103), _IO__D(104),
459 _IO__D(105), _IO_U_(106), _IO_U_(107), _IO_U_(108), _IO_U_(109),
460
461 _IO_U_(110), _IO_U_(111), _IO__D(112), _IO__D(113), _IO_U_(114),
462 _IO_U_(115), _IO_U_(116), _IO_U_(117), _IO_U_(118), _IO_U_(119),
463
464 _IO_U_(120), _IO__D(121), _IO__D(122), _IO__D(123), _IO__D(124),
465 _IO__D(125), _IO__D(126), _IO__D(127), _IO__D(128), _IO_UD(129),
466
467 _IO_UD(130), _IO_UD(131), _IO_UD(132), _IO_UD(133), _IO_UD(134),
468 _IO_UD(135), _IO__D(136), _IO__D(137), _IO__D(138), _IO__D(139),
469
470 _IO__D(140), _IO__D(141), _IO__D(142), _IO_UD(143), _IO__D(144),
471 _IO__D(145), _IO__D(146), _IO__D(147), _IO__D(148), _IO__D(149),
472
473 _IO__D(150), _IO__D(151), _IO_UD(152), _I___D(153), _IO_UD(154),
474 _I___D(155), _IO__D(156), _IO__D(157), _I___D(158), _IO__D(159),
475
476 __O___(160), _IO__D(161), _IO__D(162), _IO__D(163), _I___D(164),
477 _IO__D(165), _I___D(166), _I___D(167), _I___D(168), _I___D(169),
478
479 _I___D(170), __O___(171), _IO_UD(172), _IO_UD(173), _IO_UD(174),
480 _IO_UD(175), _IO_UD(176), _IO_UD(177), _IO_UD(178), __O___(179),
481
482 _IO_UD(180), _IO_UD(181), _IO_UD(182), _IO_UD(183), _IO_UD(184),
483 __O___(185), _IO_UD(186), _IO_UD(187), _IO_UD(188), _IO_UD(189),
484
485 _IO_UD(190),
486
487 /* IRQ */
488 PINMUX_DATA(IRQ0_6_MARK, PORT6_FN0, MSEL1CR_0_0),
489 PINMUX_DATA(IRQ0_162_MARK, PORT162_FN0, MSEL1CR_0_1),
490 PINMUX_DATA(IRQ1_MARK, PORT12_FN0),
491 PINMUX_DATA(IRQ2_4_MARK, PORT4_FN0, MSEL1CR_2_0),
492 PINMUX_DATA(IRQ2_5_MARK, PORT5_FN0, MSEL1CR_2_1),
493 PINMUX_DATA(IRQ3_8_MARK, PORT8_FN0, MSEL1CR_3_0),
494 PINMUX_DATA(IRQ3_16_MARK, PORT16_FN0, MSEL1CR_3_1),
495 PINMUX_DATA(IRQ4_17_MARK, PORT17_FN0, MSEL1CR_4_0),
496 PINMUX_DATA(IRQ4_163_MARK, PORT163_FN0, MSEL1CR_4_1),
497 PINMUX_DATA(IRQ5_MARK, PORT18_FN0),
498 PINMUX_DATA(IRQ6_39_MARK, PORT39_FN0, MSEL1CR_6_0),
499 PINMUX_DATA(IRQ6_164_MARK, PORT164_FN0, MSEL1CR_6_1),
500 PINMUX_DATA(IRQ7_40_MARK, PORT40_FN0, MSEL1CR_7_1),
501 PINMUX_DATA(IRQ7_167_MARK, PORT167_FN0, MSEL1CR_7_0),
502 PINMUX_DATA(IRQ8_41_MARK, PORT41_FN0, MSEL1CR_8_1),
503 PINMUX_DATA(IRQ8_168_MARK, PORT168_FN0, MSEL1CR_8_0),
504 PINMUX_DATA(IRQ9_42_MARK, PORT42_FN0, MSEL1CR_9_0),
505 PINMUX_DATA(IRQ9_169_MARK, PORT169_FN0, MSEL1CR_9_1),
506 PINMUX_DATA(IRQ10_MARK, PORT65_FN0, MSEL1CR_9_1),
507 PINMUX_DATA(IRQ11_MARK, PORT67_FN0),
508 PINMUX_DATA(IRQ12_80_MARK, PORT80_FN0, MSEL1CR_12_0),
509 PINMUX_DATA(IRQ12_137_MARK, PORT137_FN0, MSEL1CR_12_1),
510 PINMUX_DATA(IRQ13_81_MARK, PORT81_FN0, MSEL1CR_13_0),
511 PINMUX_DATA(IRQ13_145_MARK, PORT145_FN0, MSEL1CR_13_1),
512 PINMUX_DATA(IRQ14_82_MARK, PORT82_FN0, MSEL1CR_14_0),
513 PINMUX_DATA(IRQ14_146_MARK, PORT146_FN0, MSEL1CR_14_1),
514 PINMUX_DATA(IRQ15_83_MARK, PORT83_FN0, MSEL1CR_15_0),
515 PINMUX_DATA(IRQ15_147_MARK, PORT147_FN0, MSEL1CR_15_1),
516 PINMUX_DATA(IRQ16_84_MARK, PORT84_FN0, MSEL1CR_16_0),
517 PINMUX_DATA(IRQ16_170_MARK, PORT170_FN0, MSEL1CR_16_1),
518 PINMUX_DATA(IRQ17_MARK, PORT85_FN0),
519 PINMUX_DATA(IRQ18_MARK, PORT86_FN0),
520 PINMUX_DATA(IRQ19_MARK, PORT87_FN0),
521 PINMUX_DATA(IRQ20_MARK, PORT92_FN0),
522 PINMUX_DATA(IRQ21_MARK, PORT93_FN0),
523 PINMUX_DATA(IRQ22_MARK, PORT94_FN0),
524 PINMUX_DATA(IRQ23_MARK, PORT95_FN0),
525 PINMUX_DATA(IRQ24_MARK, PORT112_FN0),
526 PINMUX_DATA(IRQ25_MARK, PORT119_FN0),
527 PINMUX_DATA(IRQ26_121_MARK, PORT121_FN0, MSEL1CR_26_1),
528 PINMUX_DATA(IRQ26_172_MARK, PORT172_FN0, MSEL1CR_26_0),
529 PINMUX_DATA(IRQ27_122_MARK, PORT122_FN0, MSEL1CR_27_1),
530 PINMUX_DATA(IRQ27_180_MARK, PORT180_FN0, MSEL1CR_27_0),
531 PINMUX_DATA(IRQ28_123_MARK, PORT123_FN0, MSEL1CR_28_1),
532 PINMUX_DATA(IRQ28_181_MARK, PORT181_FN0, MSEL1CR_28_0),
533 PINMUX_DATA(IRQ29_129_MARK, PORT129_FN0, MSEL1CR_29_1),
534 PINMUX_DATA(IRQ29_182_MARK, PORT182_FN0, MSEL1CR_29_0),
535 PINMUX_DATA(IRQ30_130_MARK, PORT130_FN0, MSEL1CR_30_1),
536 PINMUX_DATA(IRQ30_183_MARK, PORT183_FN0, MSEL1CR_30_0),
537 PINMUX_DATA(IRQ31_138_MARK, PORT138_FN0, MSEL1CR_31_1),
538 PINMUX_DATA(IRQ31_184_MARK, PORT184_FN0, MSEL1CR_31_0),
539
540 /* Function 1 */
541 PINMUX_DATA(BBIF2_TSCK1_MARK, PORT0_FN1),
542 PINMUX_DATA(BBIF2_TSYNC1_MARK, PORT1_FN1),
543 PINMUX_DATA(BBIF2_TXD1_MARK, PORT2_FN1),
544 PINMUX_DATA(BBIF2_RXD_MARK, PORT3_FN1),
545 PINMUX_DATA(FSIACK_MARK, PORT4_FN1),
546 PINMUX_DATA(FSIAILR_MARK, PORT5_FN1),
547 PINMUX_DATA(FSIAIBT_MARK, PORT6_FN1),
548 PINMUX_DATA(FSIAISLD_MARK, PORT7_FN1),
549 PINMUX_DATA(FSIAOMC_MARK, PORT8_FN1),
550 PINMUX_DATA(FSIAOLR_MARK, PORT9_FN1),
551 PINMUX_DATA(FSIAOBT_MARK, PORT10_FN1),
552 PINMUX_DATA(FSIAOSLD_MARK, PORT11_FN1),
553 PINMUX_DATA(FMSOCK_MARK, PORT12_FN1),
554 PINMUX_DATA(FMSOOLR_MARK, PORT13_FN1),
555 PINMUX_DATA(FMSOOBT_MARK, PORT14_FN1),
556 PINMUX_DATA(FMSOSLD_MARK, PORT15_FN1),
557 PINMUX_DATA(FMSOILR_MARK, PORT16_FN1),
558 PINMUX_DATA(FMSOIBT_MARK, PORT17_FN1),
559 PINMUX_DATA(FMSISLD_MARK, PORT18_FN1),
560 PINMUX_DATA(A0_MARK, PORT19_FN1),
561 PINMUX_DATA(A1_MARK, PORT20_FN1),
562 PINMUX_DATA(A2_MARK, PORT21_FN1),
563 PINMUX_DATA(A3_MARK, PORT22_FN1),
564 PINMUX_DATA(A4_FOE_MARK, PORT23_FN1),
565 PINMUX_DATA(A5_FCDE_MARK, PORT24_FN1),
566 PINMUX_DATA(A6_MARK, PORT25_FN1),
567 PINMUX_DATA(A7_MARK, PORT26_FN1),
568 PINMUX_DATA(A8_MARK, PORT27_FN1),
569 PINMUX_DATA(A9_MARK, PORT28_FN1),
570 PINMUX_DATA(A10_MARK, PORT29_FN1),
571 PINMUX_DATA(A11_MARK, PORT30_FN1),
572 PINMUX_DATA(A12_MARK, PORT31_FN1),
573 PINMUX_DATA(A13_MARK, PORT32_FN1),
574 PINMUX_DATA(A14_MARK, PORT33_FN1),
575 PINMUX_DATA(A15_MARK, PORT34_FN1),
576 PINMUX_DATA(A16_MARK, PORT35_FN1),
577 PINMUX_DATA(A17_MARK, PORT36_FN1),
578 PINMUX_DATA(A18_MARK, PORT37_FN1),
579 PINMUX_DATA(A19_MARK, PORT38_FN1),
580 PINMUX_DATA(A20_MARK, PORT39_FN1),
581 PINMUX_DATA(A21_MARK, PORT40_FN1),
582 PINMUX_DATA(A22_MARK, PORT41_FN1),
583 PINMUX_DATA(A23_MARK, PORT42_FN1),
584 PINMUX_DATA(A24_MARK, PORT43_FN1),
585 PINMUX_DATA(A25_MARK, PORT44_FN1),
586 PINMUX_DATA(A26_MARK, PORT45_FN1),
587 PINMUX_DATA(D0_NAF0_MARK, PORT46_FN1),
588 PINMUX_DATA(D1_NAF1_MARK, PORT47_FN1),
589 PINMUX_DATA(D2_NAF2_MARK, PORT48_FN1),
590 PINMUX_DATA(D3_NAF3_MARK, PORT49_FN1),
591 PINMUX_DATA(D4_NAF4_MARK, PORT50_FN1),
592 PINMUX_DATA(D5_NAF5_MARK, PORT51_FN1),
593 PINMUX_DATA(D6_NAF6_MARK, PORT52_FN1),
594 PINMUX_DATA(D7_NAF7_MARK, PORT53_FN1),
595 PINMUX_DATA(D8_NAF8_MARK, PORT54_FN1),
596 PINMUX_DATA(D9_NAF9_MARK, PORT55_FN1),
597 PINMUX_DATA(D10_NAF10_MARK, PORT56_FN1),
598 PINMUX_DATA(D11_NAF11_MARK, PORT57_FN1),
599 PINMUX_DATA(D12_NAF12_MARK, PORT58_FN1),
600 PINMUX_DATA(D13_NAF13_MARK, PORT59_FN1),
601 PINMUX_DATA(D14_NAF14_MARK, PORT60_FN1),
602 PINMUX_DATA(D15_NAF15_MARK, PORT61_FN1),
603 PINMUX_DATA(CS0_MARK, PORT62_FN1),
604 PINMUX_DATA(CS2_MARK, PORT63_FN1),
605 PINMUX_DATA(CS4_MARK, PORT64_FN1),
606 PINMUX_DATA(CS5A_MARK, PORT65_FN1),
607 PINMUX_DATA(CS5B_MARK, PORT66_FN1),
608 PINMUX_DATA(CS6A_MARK, PORT67_FN1),
609 PINMUX_DATA(FCE0_MARK, PORT68_FN1),
610 PINMUX_DATA(RD_FSC_MARK, PORT69_FN1),
611 PINMUX_DATA(WE0_FWE_MARK, PORT70_FN1),
612 PINMUX_DATA(WE1_MARK, PORT71_FN1),
613 PINMUX_DATA(CKO_MARK, PORT72_FN1),
614 PINMUX_DATA(FRB_MARK, PORT73_FN1),
615 PINMUX_DATA(WAIT_MARK, PORT74_FN1),
616 PINMUX_DATA(RDWR_MARK, PORT75_FN1),
617 PINMUX_DATA(MEMC_AD0_MARK, PORT76_FN1),
618 PINMUX_DATA(MEMC_AD1_MARK, PORT77_FN1),
619 PINMUX_DATA(MEMC_AD2_MARK, PORT78_FN1),
620 PINMUX_DATA(MEMC_AD3_MARK, PORT79_FN1),
621 PINMUX_DATA(MEMC_AD4_MARK, PORT80_FN1),
622 PINMUX_DATA(MEMC_AD5_MARK, PORT81_FN1),
623 PINMUX_DATA(MEMC_AD6_MARK, PORT82_FN1),
624 PINMUX_DATA(MEMC_AD7_MARK, PORT83_FN1),
625 PINMUX_DATA(MEMC_AD8_MARK, PORT84_FN1),
626 PINMUX_DATA(MEMC_AD9_MARK, PORT85_FN1),
627 PINMUX_DATA(MEMC_AD10_MARK, PORT86_FN1),
628 PINMUX_DATA(MEMC_AD11_MARK, PORT87_FN1),
629 PINMUX_DATA(MEMC_AD12_MARK, PORT88_FN1),
630 PINMUX_DATA(MEMC_AD13_MARK, PORT89_FN1),
631 PINMUX_DATA(MEMC_AD14_MARK, PORT90_FN1),
632 PINMUX_DATA(MEMC_AD15_MARK, PORT91_FN1),
633 PINMUX_DATA(MEMC_CS0_MARK, PORT92_FN1),
634 PINMUX_DATA(MEMC_BUSCLK_MEMC_A0_MARK, PORT93_FN1),
635 PINMUX_DATA(MEMC_CS1_MEMC_A1_MARK, PORT94_FN1),
636 PINMUX_DATA(MEMC_ADV_MEMC_DREQ0_MARK, PORT95_FN1),
637 PINMUX_DATA(MEMC_WAIT_MEMC_DREQ1_MARK, PORT96_FN1),
638 PINMUX_DATA(MEMC_NOE_MARK, PORT97_FN1),
639 PINMUX_DATA(MEMC_NWE_MARK, PORT98_FN1),
640 PINMUX_DATA(MEMC_INT_MARK, PORT99_FN1),
641 PINMUX_DATA(VIO_VD_MARK, PORT100_FN1),
642 PINMUX_DATA(VIO_HD_MARK, PORT101_FN1),
643 PINMUX_DATA(VIO_D0_MARK, PORT102_FN1),
644 PINMUX_DATA(VIO_D1_MARK, PORT103_FN1),
645 PINMUX_DATA(VIO_D2_MARK, PORT104_FN1),
646 PINMUX_DATA(VIO_D3_MARK, PORT105_FN1),
647 PINMUX_DATA(VIO_D4_MARK, PORT106_FN1),
648 PINMUX_DATA(VIO_D5_MARK, PORT107_FN1),
649 PINMUX_DATA(VIO_D6_MARK, PORT108_FN1),
650 PINMUX_DATA(VIO_D7_MARK, PORT109_FN1),
651 PINMUX_DATA(VIO_D8_MARK, PORT110_FN1),
652 PINMUX_DATA(VIO_D9_MARK, PORT111_FN1),
653 PINMUX_DATA(VIO_D10_MARK, PORT112_FN1),
654 PINMUX_DATA(VIO_D11_MARK, PORT113_FN1),
655 PINMUX_DATA(VIO_D12_MARK, PORT114_FN1),
656 PINMUX_DATA(VIO_D13_MARK, PORT115_FN1),
657 PINMUX_DATA(VIO_D14_MARK, PORT116_FN1),
658 PINMUX_DATA(VIO_D15_MARK, PORT117_FN1),
659 PINMUX_DATA(VIO_CLK_MARK, PORT118_FN1),
660 PINMUX_DATA(VIO_FIELD_MARK, PORT119_FN1),
661 PINMUX_DATA(VIO_CKO_MARK, PORT120_FN1),
662 PINMUX_DATA(LCDD0_MARK, PORT121_FN1),
663 PINMUX_DATA(LCDD1_MARK, PORT122_FN1),
664 PINMUX_DATA(LCDD2_MARK, PORT123_FN1),
665 PINMUX_DATA(LCDD3_MARK, PORT124_FN1),
666 PINMUX_DATA(LCDD4_MARK, PORT125_FN1),
667 PINMUX_DATA(LCDD5_MARK, PORT126_FN1),
668 PINMUX_DATA(LCDD6_MARK, PORT127_FN1),
669 PINMUX_DATA(LCDD7_MARK, PORT128_FN1),
670 PINMUX_DATA(LCDD8_MARK, PORT129_FN1),
671 PINMUX_DATA(LCDD9_MARK, PORT130_FN1),
672 PINMUX_DATA(LCDD10_MARK, PORT131_FN1),
673 PINMUX_DATA(LCDD11_MARK, PORT132_FN1),
674 PINMUX_DATA(LCDD12_MARK, PORT133_FN1),
675 PINMUX_DATA(LCDD13_MARK, PORT134_FN1),
676 PINMUX_DATA(LCDD14_MARK, PORT135_FN1),
677 PINMUX_DATA(LCDD15_MARK, PORT136_FN1),
678 PINMUX_DATA(LCDD16_MARK, PORT137_FN1),
679 PINMUX_DATA(LCDD17_MARK, PORT138_FN1),
680 PINMUX_DATA(LCDD18_MARK, PORT139_FN1),
681 PINMUX_DATA(LCDD19_MARK, PORT140_FN1),
682 PINMUX_DATA(LCDD20_MARK, PORT141_FN1),
683 PINMUX_DATA(LCDD21_MARK, PORT142_FN1),
684 PINMUX_DATA(LCDD22_MARK, PORT143_FN1),
685 PINMUX_DATA(LCDD23_MARK, PORT144_FN1),
686 PINMUX_DATA(LCDHSYN_MARK, PORT145_FN1),
687 PINMUX_DATA(LCDVSYN_MARK, PORT146_FN1),
688 PINMUX_DATA(LCDDCK_MARK, PORT147_FN1),
689 PINMUX_DATA(LCDRD_MARK, PORT148_FN1),
690 PINMUX_DATA(LCDDISP_MARK, PORT149_FN1),
691 PINMUX_DATA(LCDLCLK_MARK, PORT150_FN1),
692 PINMUX_DATA(LCDDON_MARK, PORT151_FN1),
693 PINMUX_DATA(SCIFA0_TXD_MARK, PORT152_FN1),
694 PINMUX_DATA(SCIFA0_RXD_MARK, PORT153_FN1),
695 PINMUX_DATA(SCIFA1_TXD_MARK, PORT154_FN1),
696 PINMUX_DATA(SCIFA1_RXD_MARK, PORT155_FN1),
697 PINMUX_DATA(TS_SPSYNC1_MARK, PORT156_FN1),
698 PINMUX_DATA(TS_SDAT1_MARK, PORT157_FN1),
699 PINMUX_DATA(TS_SDEN1_MARK, PORT158_FN1),
700 PINMUX_DATA(TS_SCK1_MARK, PORT159_FN1),
701 PINMUX_DATA(TPU0TO0_MARK, PORT160_FN1),
702 PINMUX_DATA(TPU0TO1_MARK, PORT161_FN1),
703 PINMUX_DATA(SCIFB_SCK_MARK, PORT162_FN1),
704 PINMUX_DATA(SCIFB_RTS_MARK, PORT163_FN1),
705 PINMUX_DATA(SCIFB_CTS_MARK, PORT164_FN1),
706 PINMUX_DATA(SCIFB_TXD_MARK, PORT165_FN1),
707 PINMUX_DATA(SCIFB_RXD_MARK, PORT166_FN1),
708 PINMUX_DATA(VBUS0_0_MARK, PORT167_FN1),
709 PINMUX_DATA(VBUS0_1_MARK, PORT168_FN1),
710 PINMUX_DATA(HDMI_HPD_MARK, PORT169_FN1),
711 PINMUX_DATA(HDMI_CEC_MARK, PORT170_FN1),
712 PINMUX_DATA(SDHICLK0_MARK, PORT171_FN1),
713 PINMUX_DATA(SDHICD0_MARK, PORT172_FN1),
714 PINMUX_DATA(SDHID0_0_MARK, PORT173_FN1),
715 PINMUX_DATA(SDHID0_1_MARK, PORT174_FN1),
716 PINMUX_DATA(SDHID0_2_MARK, PORT175_FN1),
717 PINMUX_DATA(SDHID0_3_MARK, PORT176_FN1),
718 PINMUX_DATA(SDHICMD0_MARK, PORT177_FN1),
719 PINMUX_DATA(SDHIWP0_MARK, PORT178_FN1),
720 PINMUX_DATA(SDHICLK1_MARK, PORT179_FN1),
721 PINMUX_DATA(SDHID1_0_MARK, PORT180_FN1),
722 PINMUX_DATA(SDHID1_1_MARK, PORT181_FN1),
723 PINMUX_DATA(SDHID1_2_MARK, PORT182_FN1),
724 PINMUX_DATA(SDHID1_3_MARK, PORT183_FN1),
725 PINMUX_DATA(SDHICMD1_MARK, PORT184_FN1),
726 PINMUX_DATA(SDHICLK2_MARK, PORT185_FN1),
727 PINMUX_DATA(SDHID2_0_MARK, PORT186_FN1),
728 PINMUX_DATA(SDHID2_1_MARK, PORT187_FN1),
729 PINMUX_DATA(SDHID2_2_MARK, PORT188_FN1),
730 PINMUX_DATA(SDHID2_3_MARK, PORT189_FN1),
731 PINMUX_DATA(SDHICMD2_MARK, PORT190_FN1),
732
733 /* Function 2 */
734 PINMUX_DATA(FSIBCK_MARK, PORT4_FN2),
735 PINMUX_DATA(SCIFA4_RXD_MARK, PORT5_FN2),
736 PINMUX_DATA(SCIFA4_TXD_MARK, PORT6_FN2),
737 PINMUX_DATA(SCIFA5_RXD_MARK, PORT8_FN2),
738 PINMUX_DATA(FSIASPDIF_11_MARK, PORT11_FN2),
739 PINMUX_DATA(SCIFA5_TXD_MARK, PORT12_FN2),
740 PINMUX_DATA(FMSIOLR_MARK, PORT13_FN2),
741 PINMUX_DATA(FMSIOBT_MARK, PORT14_FN2),
742 PINMUX_DATA(FSIASPDIF_15_MARK, PORT15_FN2),
743 PINMUX_DATA(FMSIILR_MARK, PORT16_FN2),
744 PINMUX_DATA(FMSIIBT_MARK, PORT17_FN2),
745 PINMUX_DATA(BS_MARK, PORT19_FN2),
746 PINMUX_DATA(MSIOF0_TSYNC_MARK, PORT36_FN2),
747 PINMUX_DATA(MSIOF0_TSCK_MARK, PORT37_FN2),
748 PINMUX_DATA(MSIOF0_RXD_MARK, PORT38_FN2),
749 PINMUX_DATA(MSIOF0_RSCK_MARK, PORT39_FN2),
750 PINMUX_DATA(MSIOF0_RSYNC_MARK, PORT40_FN2),
751 PINMUX_DATA(MSIOF0_MCK0_MARK, PORT41_FN2),
752 PINMUX_DATA(MSIOF0_MCK1_MARK, PORT42_FN2),
753 PINMUX_DATA(MSIOF0_SS1_MARK, PORT43_FN2),
754 PINMUX_DATA(MSIOF0_SS2_MARK, PORT44_FN2),
755 PINMUX_DATA(MSIOF0_TXD_MARK, PORT45_FN2),
756 PINMUX_DATA(FMSICK_MARK, PORT65_FN2),
757 PINMUX_DATA(FCE1_MARK, PORT66_FN2),
758 PINMUX_DATA(BBIF1_RXD_MARK, PORT76_FN2),
759 PINMUX_DATA(BBIF1_TSYNC_MARK, PORT77_FN2),
760 PINMUX_DATA(BBIF1_TSCK_MARK, PORT78_FN2),
761 PINMUX_DATA(BBIF1_TXD_MARK, PORT79_FN2),
762 PINMUX_DATA(BBIF1_RSCK_MARK, PORT80_FN2),
763 PINMUX_DATA(BBIF1_RSYNC_MARK, PORT81_FN2),
764 PINMUX_DATA(BBIF1_FLOW_MARK, PORT82_FN2),
765 PINMUX_DATA(BB_RX_FLOW_N_MARK, PORT83_FN2),
766 PINMUX_DATA(MSIOF1_RSCK_MARK, PORT84_FN2),
767 PINMUX_DATA(MSIOF1_RSYNC_MARK, PORT85_FN2),
768 PINMUX_DATA(MSIOF1_MCK0_MARK, PORT86_FN2),
769 PINMUX_DATA(MSIOF1_MCK1_MARK, PORT87_FN2),
770 PINMUX_DATA(MSIOF1_TSCK_88_MARK, PORT88_FN2, MSEL4CR_10_1),
771 PINMUX_DATA(MSIOF1_TSYNC_89_MARK, PORT89_FN2, MSEL4CR_10_1),
772 PINMUX_DATA(MSIOF1_TXD_90_MARK, PORT90_FN2, MSEL4CR_10_1),
773 PINMUX_DATA(MSIOF1_RXD_91_MARK, PORT91_FN2, MSEL4CR_10_1),
774 PINMUX_DATA(MSIOF1_SS1_92_MARK, PORT92_FN2, MSEL4CR_10_1),
775 PINMUX_DATA(MSIOF1_SS2_93_MARK, PORT93_FN2, MSEL4CR_10_1),
776 PINMUX_DATA(SCIFA2_CTS1_MARK, PORT94_FN2),
777 PINMUX_DATA(SCIFA2_RTS1_MARK, PORT95_FN2),
778 PINMUX_DATA(SCIFA2_TXD1_MARK, PORT96_FN2),
779 PINMUX_DATA(SCIFA2_RXD1_MARK, PORT97_FN2),
780 PINMUX_DATA(SCIFA2_SCK1_MARK, PORT98_FN2),
781 PINMUX_DATA(I2C_SCL2_MARK, PORT110_FN2),
782 PINMUX_DATA(I2C_SDA2_MARK, PORT111_FN2),
783 PINMUX_DATA(I2C_SCL3_MARK, PORT114_FN2, MSEL4CR_16_1),
784 PINMUX_DATA(I2C_SDA3_MARK, PORT115_FN2, MSEL4CR_16_1),
785 PINMUX_DATA(I2C_SCL4_MARK, PORT116_FN2, MSEL4CR_17_1),
786 PINMUX_DATA(I2C_SDA4_MARK, PORT117_FN2, MSEL4CR_17_1),
787 PINMUX_DATA(MSIOF2_RSCK_MARK, PORT134_FN2),
788 PINMUX_DATA(MSIOF2_RSYNC_MARK, PORT135_FN2),
789 PINMUX_DATA(MSIOF2_MCK0_MARK, PORT136_FN2),
790 PINMUX_DATA(MSIOF2_MCK1_MARK, PORT137_FN2),
791 PINMUX_DATA(MSIOF2_SS1_MARK, PORT138_FN2),
792 PINMUX_DATA(MSIOF2_SS2_MARK, PORT139_FN2),
793 PINMUX_DATA(SCIFA3_CTS_140_MARK, PORT140_FN2, MSEL3CR_9_1),
794 PINMUX_DATA(SCIFA3_RTS_141_MARK, PORT141_FN2),
795 PINMUX_DATA(SCIFA3_SCK_MARK, PORT142_FN2),
796 PINMUX_DATA(SCIFA3_TXD_MARK, PORT143_FN2),
797 PINMUX_DATA(SCIFA3_RXD_MARK, PORT144_FN2),
798 PINMUX_DATA(MSIOF2_TSYNC_MARK, PORT148_FN2),
799 PINMUX_DATA(MSIOF2_TSCK_MARK, PORT149_FN2),
800 PINMUX_DATA(MSIOF2_RXD_MARK, PORT150_FN2),
801 PINMUX_DATA(MSIOF2_TXD_MARK, PORT151_FN2),
802 PINMUX_DATA(SCIFA0_SCK_MARK, PORT156_FN2),
803 PINMUX_DATA(SCIFA0_RTS_MARK, PORT157_FN2),
804 PINMUX_DATA(SCIFA0_CTS_MARK, PORT158_FN2),
805 PINMUX_DATA(SCIFA1_SCK_MARK, PORT159_FN2),
806 PINMUX_DATA(SCIFA1_RTS_MARK, PORT160_FN2),
807 PINMUX_DATA(SCIFA1_CTS_MARK, PORT161_FN2),
808
809 /* Function 3 */
810 PINMUX_DATA(VIO_CKO1_MARK, PORT16_FN3),
811 PINMUX_DATA(VIO_CKO2_MARK, PORT17_FN3),
812 PINMUX_DATA(IDIN_1_18_MARK, PORT18_FN3, MSEL4CR_14_1),
813 PINMUX_DATA(MSIOF1_TSCK_39_MARK, PORT39_FN3, MSEL4CR_10_0),
814 PINMUX_DATA(MSIOF1_TSYNC_40_MARK, PORT40_FN3, MSEL4CR_10_0),
815 PINMUX_DATA(MSIOF1_TXD_41_MARK, PORT41_FN3, MSEL4CR_10_0),
816 PINMUX_DATA(MSIOF1_RXD_42_MARK, PORT42_FN3, MSEL4CR_10_0),
817 PINMUX_DATA(MSIOF1_SS1_43_MARK, PORT43_FN3, MSEL4CR_10_0),
818 PINMUX_DATA(MSIOF1_SS2_44_MARK, PORT44_FN3, MSEL4CR_10_0),
819 PINMUX_DATA(MMCD1_0_MARK, PORT54_FN3, MSEL4CR_15_1),
820 PINMUX_DATA(MMCD1_1_MARK, PORT55_FN3, MSEL4CR_15_1),
821 PINMUX_DATA(MMCD1_2_MARK, PORT56_FN3, MSEL4CR_15_1),
822 PINMUX_DATA(MMCD1_3_MARK, PORT57_FN3, MSEL4CR_15_1),
823 PINMUX_DATA(MMCD1_4_MARK, PORT58_FN3, MSEL4CR_15_1),
824 PINMUX_DATA(MMCD1_5_MARK, PORT59_FN3, MSEL4CR_15_1),
825 PINMUX_DATA(MMCD1_6_MARK, PORT60_FN3, MSEL4CR_15_1),
826 PINMUX_DATA(MMCD1_7_MARK, PORT61_FN3, MSEL4CR_15_1),
827 PINMUX_DATA(VINT_I_MARK, PORT65_FN3),
828 PINMUX_DATA(MMCCLK1_MARK, PORT66_FN3, MSEL4CR_15_1),
829 PINMUX_DATA(MMCCMD1_MARK, PORT67_FN3, MSEL4CR_15_1),
830 PINMUX_DATA(TPU0TO2_93_MARK, PORT93_FN3),
831 PINMUX_DATA(TPU0TO2_99_MARK, PORT99_FN3),
832 PINMUX_DATA(TPU0TO3_MARK, PORT112_FN3),
833 PINMUX_DATA(IDIN_0_MARK, PORT113_FN3),
834 PINMUX_DATA(EXTLP_0_MARK, PORT114_FN3),
835 PINMUX_DATA(OVCN2_0_MARK, PORT115_FN3),
836 PINMUX_DATA(PWEN_0_MARK, PORT116_FN3),
837 PINMUX_DATA(OVCN_0_MARK, PORT117_FN3),
838 PINMUX_DATA(KEYOUT7_MARK, PORT121_FN3),
839 PINMUX_DATA(KEYOUT6_MARK, PORT122_FN3),
840 PINMUX_DATA(KEYOUT5_MARK, PORT123_FN3),
841 PINMUX_DATA(KEYOUT4_MARK, PORT124_FN3),
842 PINMUX_DATA(KEYOUT3_MARK, PORT125_FN3),
843 PINMUX_DATA(KEYOUT2_MARK, PORT126_FN3),
844 PINMUX_DATA(KEYOUT1_MARK, PORT127_FN3),
845 PINMUX_DATA(KEYOUT0_MARK, PORT128_FN3),
846 PINMUX_DATA(KEYIN7_MARK, PORT129_FN3),
847 PINMUX_DATA(KEYIN6_MARK, PORT130_FN3),
848 PINMUX_DATA(KEYIN5_MARK, PORT131_FN3),
849 PINMUX_DATA(KEYIN4_MARK, PORT132_FN3),
850 PINMUX_DATA(KEYIN3_133_MARK, PORT133_FN3, MSEL4CR_18_0),
851 PINMUX_DATA(KEYIN2_134_MARK, PORT134_FN3, MSEL4CR_18_0),
852 PINMUX_DATA(KEYIN1_135_MARK, PORT135_FN3, MSEL4CR_18_0),
853 PINMUX_DATA(KEYIN0_136_MARK, PORT136_FN3, MSEL4CR_18_0),
854 PINMUX_DATA(TS_SPSYNC2_MARK, PORT137_FN3),
855 PINMUX_DATA(IROUT_139_MARK, PORT139_FN3),
856 PINMUX_DATA(IRDA_OUT_MARK, PORT140_FN3),
857 PINMUX_DATA(IRDA_IN_MARK, PORT141_FN3),
858 PINMUX_DATA(IRDA_FIRSEL_MARK, PORT142_FN3),
859 PINMUX_DATA(TS_SDAT2_MARK, PORT145_FN3),
860 PINMUX_DATA(TS_SDEN2_MARK, PORT146_FN3),
861 PINMUX_DATA(TS_SCK2_MARK, PORT147_FN3),
862
863 /* Function 4 */
864 PINMUX_DATA(SCIFA3_CTS_43_MARK, PORT43_FN4, MSEL3CR_9_0),
865 PINMUX_DATA(SCIFA3_RTS_44_MARK, PORT44_FN4),
866 PINMUX_DATA(GP_RX_FLAG_MARK, PORT76_FN4),
867 PINMUX_DATA(GP_RX_DATA_MARK, PORT77_FN4),
868 PINMUX_DATA(GP_TX_READY_MARK, PORT78_FN4),
869 PINMUX_DATA(GP_RX_WAKE_MARK, PORT79_FN4),
870 PINMUX_DATA(MP_TX_FLAG_MARK, PORT80_FN4),
871 PINMUX_DATA(MP_TX_DATA_MARK, PORT81_FN4),
872 PINMUX_DATA(MP_RX_READY_MARK, PORT82_FN4),
873 PINMUX_DATA(MP_TX_WAKE_MARK, PORT83_FN4),
874 PINMUX_DATA(MMCD0_0_MARK, PORT84_FN4, MSEL4CR_15_0),
875 PINMUX_DATA(MMCD0_1_MARK, PORT85_FN4, MSEL4CR_15_0),
876 PINMUX_DATA(MMCD0_2_MARK, PORT86_FN4, MSEL4CR_15_0),
877 PINMUX_DATA(MMCD0_3_MARK, PORT87_FN4, MSEL4CR_15_0),
878 PINMUX_DATA(MMCD0_4_MARK, PORT88_FN4, MSEL4CR_15_0),
879 PINMUX_DATA(MMCD0_5_MARK, PORT89_FN4, MSEL4CR_15_0),
880 PINMUX_DATA(MMCD0_6_MARK, PORT90_FN4, MSEL4CR_15_0),
881 PINMUX_DATA(MMCD0_7_MARK, PORT91_FN4, MSEL4CR_15_0),
882 PINMUX_DATA(MMCCMD0_MARK, PORT92_FN4, MSEL4CR_15_0),
883 PINMUX_DATA(SIM_RST_MARK, PORT94_FN4),
884 PINMUX_DATA(SIM_CLK_MARK, PORT95_FN4),
885 PINMUX_DATA(SIM_D_MARK, PORT98_FN4),
886 PINMUX_DATA(MMCCLK0_MARK, PORT99_FN4, MSEL4CR_15_0),
887 PINMUX_DATA(IDIN_1_113_MARK, PORT113_FN4, MSEL4CR_14_0),
888 PINMUX_DATA(OVCN_1_114_MARK, PORT114_FN4, MSEL4CR_14_0),
889 PINMUX_DATA(PWEN_1_115_MARK, PORT115_FN4),
890 PINMUX_DATA(EXTLP_1_MARK, PORT116_FN4),
891 PINMUX_DATA(OVCN2_1_MARK, PORT117_FN4),
892 PINMUX_DATA(KEYIN0_121_MARK, PORT121_FN4, MSEL4CR_18_1),
893 PINMUX_DATA(KEYIN1_122_MARK, PORT122_FN4, MSEL4CR_18_1),
894 PINMUX_DATA(KEYIN2_123_MARK, PORT123_FN4, MSEL4CR_18_1),
895 PINMUX_DATA(KEYIN3_124_MARK, PORT124_FN4, MSEL4CR_18_1),
896 PINMUX_DATA(PWEN_1_138_MARK, PORT138_FN4),
897 PINMUX_DATA(IROUT_140_MARK, PORT140_FN4),
898 PINMUX_DATA(LCDCS_MARK, PORT145_FN4),
899 PINMUX_DATA(LCDWR_MARK, PORT147_FN4),
900 PINMUX_DATA(LCDRS_MARK, PORT149_FN4),
901 PINMUX_DATA(OVCN_1_162_MARK, PORT162_FN4, MSEL4CR_14_1),
902
903 /* Function 5 */
904 PINMUX_DATA(GPI0_MARK, PORT41_FN5),
905 PINMUX_DATA(GPI1_MARK, PORT42_FN5),
906 PINMUX_DATA(GPO0_MARK, PORT43_FN5),
907 PINMUX_DATA(GPO1_MARK, PORT44_FN5),
908 PINMUX_DATA(I2C_SCL3S_MARK, PORT137_FN5, MSEL4CR_16_0),
909 PINMUX_DATA(I2C_SDA3S_MARK, PORT145_FN5, MSEL4CR_16_0),
910 PINMUX_DATA(I2C_SCL4S_MARK, PORT146_FN5, MSEL4CR_17_0),
911 PINMUX_DATA(I2C_SDA4S_MARK, PORT147_FN5, MSEL4CR_17_0),
912
913 /* Function select */
914 PINMUX_DATA(LCDC0_SELECT_MARK, MSEL3CR_6_0),
915 PINMUX_DATA(LCDC1_SELECT_MARK, MSEL3CR_6_1),
916
917 PINMUX_DATA(TS0_1SELECT_MARK, MSEL3CR_21_0, MSEL3CR_20_0),
918 PINMUX_DATA(TS0_2SELECT_MARK, MSEL3CR_21_0, MSEL3CR_20_1),
919 PINMUX_DATA(TS1_1SELECT_MARK, MSEL3CR_27_0, MSEL3CR_26_0),
920 PINMUX_DATA(TS1_2SELECT_MARK, MSEL3CR_27_0, MSEL3CR_26_1),
921
922 PINMUX_DATA(SDENC_CPG_MARK, MSEL4CR_19_0),
923 PINMUX_DATA(SDENC_DV_CLKI_MARK, MSEL4CR_19_1),
924
925 PINMUX_DATA(MFIv6_MARK, MSEL4CR_6_0),
926 PINMUX_DATA(MFIv4_MARK, MSEL4CR_6_1),
927};
928
929#define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA)
930#define GPIO_PORT_ALL() _190(_GPIO_PORT, , unused)
931#define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK)
932
933static struct pinmux_gpio pinmux_gpios[] = {
934
935 /* PORT */
936 GPIO_PORT_ALL(),
937
938 /* IRQ */
939 GPIO_FN(IRQ0_6), GPIO_FN(IRQ0_162), GPIO_FN(IRQ1),
940 GPIO_FN(IRQ2_4), GPIO_FN(IRQ2_5), GPIO_FN(IRQ3_8),
941 GPIO_FN(IRQ3_16), GPIO_FN(IRQ4_17), GPIO_FN(IRQ4_163),
942 GPIO_FN(IRQ5), GPIO_FN(IRQ6_39), GPIO_FN(IRQ6_164),
943 GPIO_FN(IRQ7_40), GPIO_FN(IRQ7_167), GPIO_FN(IRQ8_41),
944 GPIO_FN(IRQ8_168), GPIO_FN(IRQ9_42), GPIO_FN(IRQ9_169),
945 GPIO_FN(IRQ10), GPIO_FN(IRQ11), GPIO_FN(IRQ12_80),
946 GPIO_FN(IRQ12_137), GPIO_FN(IRQ13_81), GPIO_FN(IRQ13_145),
947 GPIO_FN(IRQ14_82), GPIO_FN(IRQ14_146), GPIO_FN(IRQ15_83),
948 GPIO_FN(IRQ15_147), GPIO_FN(IRQ16_84), GPIO_FN(IRQ16_170),
949 GPIO_FN(IRQ17), GPIO_FN(IRQ18), GPIO_FN(IRQ19),
950 GPIO_FN(IRQ20), GPIO_FN(IRQ21), GPIO_FN(IRQ22),
951 GPIO_FN(IRQ23), GPIO_FN(IRQ24), GPIO_FN(IRQ25),
952 GPIO_FN(IRQ26_121), GPIO_FN(IRQ26_172), GPIO_FN(IRQ27_122),
953 GPIO_FN(IRQ27_180), GPIO_FN(IRQ28_123), GPIO_FN(IRQ28_181),
954 GPIO_FN(IRQ29_129), GPIO_FN(IRQ29_182), GPIO_FN(IRQ30_130),
955 GPIO_FN(IRQ30_183), GPIO_FN(IRQ31_138), GPIO_FN(IRQ31_184),
956
957 /* MSIOF0 */
958 GPIO_FN(MSIOF0_TSYNC), GPIO_FN(MSIOF0_TSCK), GPIO_FN(MSIOF0_RXD),
959 GPIO_FN(MSIOF0_RSCK), GPIO_FN(MSIOF0_RSYNC), GPIO_FN(MSIOF0_MCK0),
960 GPIO_FN(MSIOF0_MCK1), GPIO_FN(MSIOF0_SS1), GPIO_FN(MSIOF0_SS2),
961 GPIO_FN(MSIOF0_TXD),
962
963 /* MSIOF1 */
964 GPIO_FN(MSIOF1_TSCK_39), GPIO_FN(MSIOF1_TSCK_88),
965 GPIO_FN(MSIOF1_TSYNC_40), GPIO_FN(MSIOF1_TSYNC_89),
966 GPIO_FN(MSIOF1_TXD_41), GPIO_FN(MSIOF1_TXD_90),
967 GPIO_FN(MSIOF1_RXD_42), GPIO_FN(MSIOF1_RXD_91),
968 GPIO_FN(MSIOF1_SS1_43), GPIO_FN(MSIOF1_SS1_92),
969 GPIO_FN(MSIOF1_SS2_44), GPIO_FN(MSIOF1_SS2_93),
970 GPIO_FN(MSIOF1_RSCK), GPIO_FN(MSIOF1_RSYNC),
971 GPIO_FN(MSIOF1_MCK0), GPIO_FN(MSIOF1_MCK1),
972
973 /* MSIOF2 */
974 GPIO_FN(MSIOF2_RSCK), GPIO_FN(MSIOF2_RSYNC), GPIO_FN(MSIOF2_MCK0),
975 GPIO_FN(MSIOF2_MCK1), GPIO_FN(MSIOF2_SS1), GPIO_FN(MSIOF2_SS2),
976 GPIO_FN(MSIOF2_TSYNC), GPIO_FN(MSIOF2_TSCK), GPIO_FN(MSIOF2_RXD),
977 GPIO_FN(MSIOF2_TXD),
978
979 /* MSIOF3 */
980 GPIO_FN(BBIF1_RXD), GPIO_FN(BBIF1_TSYNC), GPIO_FN(BBIF1_TSCK),
981 GPIO_FN(BBIF1_TXD), GPIO_FN(BBIF1_RSCK), GPIO_FN(BBIF1_RSYNC),
982 GPIO_FN(BBIF1_FLOW), GPIO_FN(BB_RX_FLOW_N),
983
984 /* MSIOF4 */
985 GPIO_FN(BBIF2_TSCK1), GPIO_FN(BBIF2_TSYNC1),
986 GPIO_FN(BBIF2_TXD1), GPIO_FN(BBIF2_RXD),
987
988 /* FSI */
989 GPIO_FN(FSIACK), GPIO_FN(FSIBCK), GPIO_FN(FSIAILR),
990 GPIO_FN(FSIAIBT), GPIO_FN(FSIAISLD), GPIO_FN(FSIAOMC),
991 GPIO_FN(FSIAOLR), GPIO_FN(FSIAOBT), GPIO_FN(FSIAOSLD),
992 GPIO_FN(FSIASPDIF_11), GPIO_FN(FSIASPDIF_15),
993
994 /* FMSI */
995 GPIO_FN(FMSOCK), GPIO_FN(FMSOOLR), GPIO_FN(FMSIOLR),
996 GPIO_FN(FMSOOBT), GPIO_FN(FMSIOBT), GPIO_FN(FMSOSLD),
997 GPIO_FN(FMSOILR), GPIO_FN(FMSIILR), GPIO_FN(FMSOIBT),
998 GPIO_FN(FMSIIBT), GPIO_FN(FMSISLD), GPIO_FN(FMSICK),
999
1000 /* SCIFA0 */
1001 GPIO_FN(SCIFA0_TXD), GPIO_FN(SCIFA0_RXD), GPIO_FN(SCIFA0_SCK),
1002 GPIO_FN(SCIFA0_RTS), GPIO_FN(SCIFA0_CTS),
1003
1004 /* SCIFA1 */
1005 GPIO_FN(SCIFA1_TXD), GPIO_FN(SCIFA1_RXD), GPIO_FN(SCIFA1_SCK),
1006 GPIO_FN(SCIFA1_RTS), GPIO_FN(SCIFA1_CTS),
1007
1008 /* SCIFA2 */
1009 GPIO_FN(SCIFA2_CTS1), GPIO_FN(SCIFA2_RTS1), GPIO_FN(SCIFA2_TXD1),
1010 GPIO_FN(SCIFA2_RXD1), GPIO_FN(SCIFA2_SCK1),
1011
1012 /* SCIFA3 */
1013 GPIO_FN(SCIFA3_CTS_43), GPIO_FN(SCIFA3_CTS_140),
1014 GPIO_FN(SCIFA3_RTS_44), GPIO_FN(SCIFA3_RTS_141),
1015 GPIO_FN(SCIFA3_SCK), GPIO_FN(SCIFA3_TXD),
1016 GPIO_FN(SCIFA3_RXD),
1017
1018 /* SCIFA4 */
1019 GPIO_FN(SCIFA4_RXD), GPIO_FN(SCIFA4_TXD),
1020
1021 /* SCIFA5 */
1022 GPIO_FN(SCIFA5_RXD), GPIO_FN(SCIFA5_TXD),
1023
1024 /* SCIFB */
1025 GPIO_FN(SCIFB_SCK), GPIO_FN(SCIFB_RTS), GPIO_FN(SCIFB_CTS),
1026 GPIO_FN(SCIFB_TXD), GPIO_FN(SCIFB_RXD),
1027
1028 /* CEU */
1029 GPIO_FN(VIO_HD), GPIO_FN(VIO_CKO1), GPIO_FN(VIO_CKO2),
1030 GPIO_FN(VIO_VD), GPIO_FN(VIO_CLK), GPIO_FN(VIO_FIELD),
1031 GPIO_FN(VIO_CKO), GPIO_FN(VIO_D0), GPIO_FN(VIO_D1),
1032 GPIO_FN(VIO_D2), GPIO_FN(VIO_D3), GPIO_FN(VIO_D4),
1033 GPIO_FN(VIO_D5), GPIO_FN(VIO_D6), GPIO_FN(VIO_D7),
1034 GPIO_FN(VIO_D8), GPIO_FN(VIO_D9), GPIO_FN(VIO_D10),
1035 GPIO_FN(VIO_D11), GPIO_FN(VIO_D12), GPIO_FN(VIO_D13),
1036 GPIO_FN(VIO_D14), GPIO_FN(VIO_D15),
1037
1038 /* USB0 */
1039 GPIO_FN(IDIN_0), GPIO_FN(EXTLP_0), GPIO_FN(OVCN2_0),
1040 GPIO_FN(PWEN_0), GPIO_FN(OVCN_0), GPIO_FN(VBUS0_0),
1041
1042 /* USB1 */
1043 GPIO_FN(IDIN_1_18), GPIO_FN(IDIN_1_113),
1044 GPIO_FN(OVCN_1_114), GPIO_FN(OVCN_1_162),
1045 GPIO_FN(PWEN_1_115), GPIO_FN(PWEN_1_138),
1046 GPIO_FN(EXTLP_1), GPIO_FN(OVCN2_1),
1047 GPIO_FN(VBUS0_1),
1048
1049 /* GPIO */
1050 GPIO_FN(GPI0), GPIO_FN(GPI1), GPIO_FN(GPO0), GPIO_FN(GPO1),
1051
1052 /* BSC */
1053 GPIO_FN(BS), GPIO_FN(WE1), GPIO_FN(CKO),
1054 GPIO_FN(WAIT), GPIO_FN(RDWR),
1055
1056 GPIO_FN(A0), GPIO_FN(A1), GPIO_FN(A2),
1057 GPIO_FN(A3), GPIO_FN(A6), GPIO_FN(A7),
1058 GPIO_FN(A8), GPIO_FN(A9), GPIO_FN(A10),
1059 GPIO_FN(A11), GPIO_FN(A12), GPIO_FN(A13),
1060 GPIO_FN(A14), GPIO_FN(A15), GPIO_FN(A16),
1061 GPIO_FN(A17), GPIO_FN(A18), GPIO_FN(A19),
1062 GPIO_FN(A20), GPIO_FN(A21), GPIO_FN(A22),
1063 GPIO_FN(A23), GPIO_FN(A24), GPIO_FN(A25),
1064 GPIO_FN(A26),
1065
1066 GPIO_FN(CS0), GPIO_FN(CS2), GPIO_FN(CS4),
1067 GPIO_FN(CS5A), GPIO_FN(CS5B), GPIO_FN(CS6A),
1068
1069 /* BSC/FLCTL */
1070 GPIO_FN(RD_FSC), GPIO_FN(WE0_FWE), GPIO_FN(A4_FOE),
1071 GPIO_FN(A5_FCDE), GPIO_FN(D0_NAF0), GPIO_FN(D1_NAF1),
1072 GPIO_FN(D2_NAF2), GPIO_FN(D3_NAF3), GPIO_FN(D4_NAF4),
1073 GPIO_FN(D5_NAF5), GPIO_FN(D6_NAF6), GPIO_FN(D7_NAF7),
1074 GPIO_FN(D8_NAF8), GPIO_FN(D9_NAF9), GPIO_FN(D10_NAF10),
1075 GPIO_FN(D11_NAF11), GPIO_FN(D12_NAF12), GPIO_FN(D13_NAF13),
1076 GPIO_FN(D14_NAF14), GPIO_FN(D15_NAF15),
1077
1078 /* MMCIF(1) */
1079 GPIO_FN(MMCD0_0), GPIO_FN(MMCD0_1), GPIO_FN(MMCD0_2),
1080 GPIO_FN(MMCD0_3), GPIO_FN(MMCD0_4), GPIO_FN(MMCD0_5),
1081 GPIO_FN(MMCD0_6), GPIO_FN(MMCD0_7), GPIO_FN(MMCCMD0),
1082 GPIO_FN(MMCCLK0),
1083
1084 /* MMCIF(2) */
1085 GPIO_FN(MMCD1_0), GPIO_FN(MMCD1_1), GPIO_FN(MMCD1_2),
1086 GPIO_FN(MMCD1_3), GPIO_FN(MMCD1_4), GPIO_FN(MMCD1_5),
1087 GPIO_FN(MMCD1_6), GPIO_FN(MMCD1_7), GPIO_FN(MMCCLK1),
1088 GPIO_FN(MMCCMD1),
1089
1090 /* SPU2 */
1091 GPIO_FN(VINT_I),
1092
1093 /* FLCTL */
1094 GPIO_FN(FCE1), GPIO_FN(FCE0), GPIO_FN(FRB),
1095
1096 /* HSI */
1097 GPIO_FN(GP_RX_FLAG), GPIO_FN(GP_RX_DATA), GPIO_FN(GP_TX_READY),
1098 GPIO_FN(GP_RX_WAKE), GPIO_FN(MP_TX_FLAG), GPIO_FN(MP_TX_DATA),
1099 GPIO_FN(MP_RX_READY), GPIO_FN(MP_TX_WAKE),
1100
1101 /* MFI */
1102 GPIO_FN(MFIv6),
1103 GPIO_FN(MFIv4),
1104
1105 GPIO_FN(MEMC_BUSCLK_MEMC_A0), GPIO_FN(MEMC_ADV_MEMC_DREQ0),
1106 GPIO_FN(MEMC_WAIT_MEMC_DREQ1), GPIO_FN(MEMC_CS1_MEMC_A1),
1107 GPIO_FN(MEMC_CS0), GPIO_FN(MEMC_NOE),
1108 GPIO_FN(MEMC_NWE), GPIO_FN(MEMC_INT),
1109
1110 GPIO_FN(MEMC_AD0), GPIO_FN(MEMC_AD1), GPIO_FN(MEMC_AD2),
1111 GPIO_FN(MEMC_AD3), GPIO_FN(MEMC_AD4), GPIO_FN(MEMC_AD5),
1112 GPIO_FN(MEMC_AD6), GPIO_FN(MEMC_AD7), GPIO_FN(MEMC_AD8),
1113 GPIO_FN(MEMC_AD9), GPIO_FN(MEMC_AD10), GPIO_FN(MEMC_AD11),
1114 GPIO_FN(MEMC_AD12), GPIO_FN(MEMC_AD13), GPIO_FN(MEMC_AD14),
1115 GPIO_FN(MEMC_AD15),
1116
1117 /* SIM */
1118 GPIO_FN(SIM_RST), GPIO_FN(SIM_CLK), GPIO_FN(SIM_D),
1119
1120 /* TPU */
1121 GPIO_FN(TPU0TO0), GPIO_FN(TPU0TO1), GPIO_FN(TPU0TO2_93),
1122 GPIO_FN(TPU0TO2_99), GPIO_FN(TPU0TO3),
1123
1124 /* I2C2 */
1125 GPIO_FN(I2C_SCL2), GPIO_FN(I2C_SDA2),
1126
1127 /* I2C3(1) */
1128 GPIO_FN(I2C_SCL3), GPIO_FN(I2C_SDA3),
1129
1130 /* I2C3(2) */
1131 GPIO_FN(I2C_SCL3S), GPIO_FN(I2C_SDA3S),
1132
1133 /* I2C4(2) */
1134 GPIO_FN(I2C_SCL4), GPIO_FN(I2C_SDA4),
1135
1136 /* I2C4(2) */
1137 GPIO_FN(I2C_SCL4S), GPIO_FN(I2C_SDA4S),
1138
1139 /* KEYSC */
1140 GPIO_FN(KEYOUT0), GPIO_FN(KEYIN0_121), GPIO_FN(KEYIN0_136),
1141 GPIO_FN(KEYOUT1), GPIO_FN(KEYIN1_122), GPIO_FN(KEYIN1_135),
1142 GPIO_FN(KEYOUT2), GPIO_FN(KEYIN2_123), GPIO_FN(KEYIN2_134),
1143 GPIO_FN(KEYOUT3), GPIO_FN(KEYIN3_124), GPIO_FN(KEYIN3_133),
1144 GPIO_FN(KEYOUT4), GPIO_FN(KEYIN4), GPIO_FN(KEYOUT5),
1145 GPIO_FN(KEYIN5), GPIO_FN(KEYOUT6), GPIO_FN(KEYIN6),
1146 GPIO_FN(KEYOUT7), GPIO_FN(KEYIN7),
1147
1148 /* LCDC */
1149 GPIO_FN(LCDHSYN), GPIO_FN(LCDCS), GPIO_FN(LCDVSYN),
1150 GPIO_FN(LCDDCK), GPIO_FN(LCDWR), GPIO_FN(LCDRD),
1151 GPIO_FN(LCDDISP), GPIO_FN(LCDRS), GPIO_FN(LCDLCLK),
1152 GPIO_FN(LCDDON),
1153
1154 GPIO_FN(LCDD0), GPIO_FN(LCDD1), GPIO_FN(LCDD2),
1155 GPIO_FN(LCDD3), GPIO_FN(LCDD4), GPIO_FN(LCDD5),
1156 GPIO_FN(LCDD6), GPIO_FN(LCDD7), GPIO_FN(LCDD8),
1157 GPIO_FN(LCDD9), GPIO_FN(LCDD10), GPIO_FN(LCDD11),
1158 GPIO_FN(LCDD12), GPIO_FN(LCDD13), GPIO_FN(LCDD14),
1159 GPIO_FN(LCDD15), GPIO_FN(LCDD16), GPIO_FN(LCDD17),
1160 GPIO_FN(LCDD18), GPIO_FN(LCDD19), GPIO_FN(LCDD20),
1161 GPIO_FN(LCDD21), GPIO_FN(LCDD22), GPIO_FN(LCDD23),
1162
1163 /* IRDA */
1164 GPIO_FN(IRDA_OUT), GPIO_FN(IRDA_IN), GPIO_FN(IRDA_FIRSEL),
1165 GPIO_FN(IROUT_139), GPIO_FN(IROUT_140),
1166
1167 /* TSIF1 */
1168 GPIO_FN(TS0_1SELECT),
1169 GPIO_FN(TS0_2SELECT),
1170 GPIO_FN(TS1_1SELECT),
1171 GPIO_FN(TS1_2SELECT),
1172
1173 GPIO_FN(TS_SPSYNC1), GPIO_FN(TS_SDAT1),
1174 GPIO_FN(TS_SDEN1), GPIO_FN(TS_SCK1),
1175
1176 /* TSIF2 */
1177 GPIO_FN(TS_SPSYNC2), GPIO_FN(TS_SDAT2),
1178 GPIO_FN(TS_SDEN2), GPIO_FN(TS_SCK2),
1179
1180 /* HDMI */
1181 GPIO_FN(HDMI_HPD), GPIO_FN(HDMI_CEC),
1182
1183 /* SDHI0 */
1184 GPIO_FN(SDHICLK0), GPIO_FN(SDHICD0), GPIO_FN(SDHICMD0),
1185 GPIO_FN(SDHIWP0), GPIO_FN(SDHID0_0), GPIO_FN(SDHID0_1),
1186 GPIO_FN(SDHID0_2), GPIO_FN(SDHID0_3),
1187
1188 /* SDHI1 */
1189 GPIO_FN(SDHICLK1), GPIO_FN(SDHICMD1), GPIO_FN(SDHID1_0),
1190 GPIO_FN(SDHID1_1), GPIO_FN(SDHID1_2), GPIO_FN(SDHID1_3),
1191
1192 /* SDHI2 */
1193 GPIO_FN(SDHICLK2), GPIO_FN(SDHICMD2), GPIO_FN(SDHID2_0),
1194 GPIO_FN(SDHID2_1), GPIO_FN(SDHID2_2), GPIO_FN(SDHID2_3),
1195
1196 /* SDENC */
1197 GPIO_FN(SDENC_CPG),
1198 GPIO_FN(SDENC_DV_CLKI),
1199};
1200
1201/* helper for top 4 bits in PORTnCR */
1202#define PCRH(in, in_pd, in_pu, out) \
1203 0, (out), (in), 0, \
1204 0, 0, 0, 0, \
1205 0, 0, (in_pd), 0, \
1206 0, 0, (in_pu), 0
1207
1208#define PORTCR(nr, reg) \
1209 { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \
1210 PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \
1211 PORT##nr##_IN_PU, PORT##nr##_OUT), \
1212 PORT##nr##_FN0, PORT##nr##_FN1, PORT##nr##_FN2, \
1213 PORT##nr##_FN3, PORT##nr##_FN4, PORT##nr##_FN5, \
1214 PORT##nr##_FN6, PORT##nr##_FN7 } \
1215 }
1216
1217static struct pinmux_cfg_reg pinmux_config_regs[] = {
1218 PORTCR(0, 0xE6051000), /* PORT0CR */
1219 PORTCR(1, 0xE6051001), /* PORT1CR */
1220 PORTCR(2, 0xE6051002), /* PORT2CR */
1221 PORTCR(3, 0xE6051003), /* PORT3CR */
1222 PORTCR(4, 0xE6051004), /* PORT4CR */
1223 PORTCR(5, 0xE6051005), /* PORT5CR */
1224 PORTCR(6, 0xE6051006), /* PORT6CR */
1225 PORTCR(7, 0xE6051007), /* PORT7CR */
1226 PORTCR(8, 0xE6051008), /* PORT8CR */
1227 PORTCR(9, 0xE6051009), /* PORT9CR */
1228 PORTCR(10, 0xE605100A), /* PORT10CR */
1229 PORTCR(11, 0xE605100B), /* PORT11CR */
1230 PORTCR(12, 0xE605100C), /* PORT12CR */
1231 PORTCR(13, 0xE605100D), /* PORT13CR */
1232 PORTCR(14, 0xE605100E), /* PORT14CR */
1233 PORTCR(15, 0xE605100F), /* PORT15CR */
1234 PORTCR(16, 0xE6051010), /* PORT16CR */
1235 PORTCR(17, 0xE6051011), /* PORT17CR */
1236 PORTCR(18, 0xE6051012), /* PORT18CR */
1237 PORTCR(19, 0xE6051013), /* PORT19CR */
1238 PORTCR(20, 0xE6051014), /* PORT20CR */
1239 PORTCR(21, 0xE6051015), /* PORT21CR */
1240 PORTCR(22, 0xE6051016), /* PORT22CR */
1241 PORTCR(23, 0xE6051017), /* PORT23CR */
1242 PORTCR(24, 0xE6051018), /* PORT24CR */
1243 PORTCR(25, 0xE6051019), /* PORT25CR */
1244 PORTCR(26, 0xE605101A), /* PORT26CR */
1245 PORTCR(27, 0xE605101B), /* PORT27CR */
1246 PORTCR(28, 0xE605101C), /* PORT28CR */
1247 PORTCR(29, 0xE605101D), /* PORT29CR */
1248 PORTCR(30, 0xE605101E), /* PORT30CR */
1249 PORTCR(31, 0xE605101F), /* PORT31CR */
1250 PORTCR(32, 0xE6051020), /* PORT32CR */
1251 PORTCR(33, 0xE6051021), /* PORT33CR */
1252 PORTCR(34, 0xE6051022), /* PORT34CR */
1253 PORTCR(35, 0xE6051023), /* PORT35CR */
1254 PORTCR(36, 0xE6051024), /* PORT36CR */
1255 PORTCR(37, 0xE6051025), /* PORT37CR */
1256 PORTCR(38, 0xE6051026), /* PORT38CR */
1257 PORTCR(39, 0xE6051027), /* PORT39CR */
1258 PORTCR(40, 0xE6051028), /* PORT40CR */
1259 PORTCR(41, 0xE6051029), /* PORT41CR */
1260 PORTCR(42, 0xE605102A), /* PORT42CR */
1261 PORTCR(43, 0xE605102B), /* PORT43CR */
1262 PORTCR(44, 0xE605102C), /* PORT44CR */
1263 PORTCR(45, 0xE605102D), /* PORT45CR */
1264 PORTCR(46, 0xE605202E), /* PORT46CR */
1265 PORTCR(47, 0xE605202F), /* PORT47CR */
1266 PORTCR(48, 0xE6052030), /* PORT48CR */
1267 PORTCR(49, 0xE6052031), /* PORT49CR */
1268 PORTCR(50, 0xE6052032), /* PORT50CR */
1269 PORTCR(51, 0xE6052033), /* PORT51CR */
1270 PORTCR(52, 0xE6052034), /* PORT52CR */
1271 PORTCR(53, 0xE6052035), /* PORT53CR */
1272 PORTCR(54, 0xE6052036), /* PORT54CR */
1273 PORTCR(55, 0xE6052037), /* PORT55CR */
1274 PORTCR(56, 0xE6052038), /* PORT56CR */
1275 PORTCR(57, 0xE6052039), /* PORT57CR */
1276 PORTCR(58, 0xE605203A), /* PORT58CR */
1277 PORTCR(59, 0xE605203B), /* PORT59CR */
1278 PORTCR(60, 0xE605203C), /* PORT60CR */
1279 PORTCR(61, 0xE605203D), /* PORT61CR */
1280 PORTCR(62, 0xE605203E), /* PORT62CR */
1281 PORTCR(63, 0xE605203F), /* PORT63CR */
1282 PORTCR(64, 0xE6052040), /* PORT64CR */
1283 PORTCR(65, 0xE6052041), /* PORT65CR */
1284 PORTCR(66, 0xE6052042), /* PORT66CR */
1285 PORTCR(67, 0xE6052043), /* PORT67CR */
1286 PORTCR(68, 0xE6052044), /* PORT68CR */
1287 PORTCR(69, 0xE6052045), /* PORT69CR */
1288 PORTCR(70, 0xE6052046), /* PORT70CR */
1289 PORTCR(71, 0xE6052047), /* PORT71CR */
1290 PORTCR(72, 0xE6052048), /* PORT72CR */
1291 PORTCR(73, 0xE6052049), /* PORT73CR */
1292 PORTCR(74, 0xE605204A), /* PORT74CR */
1293 PORTCR(75, 0xE605204B), /* PORT75CR */
1294 PORTCR(76, 0xE605004C), /* PORT76CR */
1295 PORTCR(77, 0xE605004D), /* PORT77CR */
1296 PORTCR(78, 0xE605004E), /* PORT78CR */
1297 PORTCR(79, 0xE605004F), /* PORT79CR */
1298 PORTCR(80, 0xE6050050), /* PORT80CR */
1299 PORTCR(81, 0xE6050051), /* PORT81CR */
1300 PORTCR(82, 0xE6050052), /* PORT82CR */
1301 PORTCR(83, 0xE6050053), /* PORT83CR */
1302 PORTCR(84, 0xE6050054), /* PORT84CR */
1303 PORTCR(85, 0xE6050055), /* PORT85CR */
1304 PORTCR(86, 0xE6050056), /* PORT86CR */
1305 PORTCR(87, 0xE6050057), /* PORT87CR */
1306 PORTCR(88, 0xE6050058), /* PORT88CR */
1307 PORTCR(89, 0xE6050059), /* PORT89CR */
1308 PORTCR(90, 0xE605005A), /* PORT90CR */
1309 PORTCR(91, 0xE605005B), /* PORT91CR */
1310 PORTCR(92, 0xE605005C), /* PORT92CR */
1311 PORTCR(93, 0xE605005D), /* PORT93CR */
1312 PORTCR(94, 0xE605005E), /* PORT94CR */
1313 PORTCR(95, 0xE605005F), /* PORT95CR */
1314 PORTCR(96, 0xE6050060), /* PORT96CR */
1315 PORTCR(97, 0xE6050061), /* PORT97CR */
1316 PORTCR(98, 0xE6050062), /* PORT98CR */
1317 PORTCR(99, 0xE6050063), /* PORT99CR */
1318 PORTCR(100, 0xE6053064), /* PORT100CR */
1319 PORTCR(101, 0xE6053065), /* PORT101CR */
1320 PORTCR(102, 0xE6053066), /* PORT102CR */
1321 PORTCR(103, 0xE6053067), /* PORT103CR */
1322 PORTCR(104, 0xE6053068), /* PORT104CR */
1323 PORTCR(105, 0xE6053069), /* PORT105CR */
1324 PORTCR(106, 0xE605306A), /* PORT106CR */
1325 PORTCR(107, 0xE605306B), /* PORT107CR */
1326 PORTCR(108, 0xE605306C), /* PORT108CR */
1327 PORTCR(109, 0xE605306D), /* PORT109CR */
1328 PORTCR(110, 0xE605306E), /* PORT110CR */
1329 PORTCR(111, 0xE605306F), /* PORT111CR */
1330 PORTCR(112, 0xE6053070), /* PORT112CR */
1331 PORTCR(113, 0xE6053071), /* PORT113CR */
1332 PORTCR(114, 0xE6053072), /* PORT114CR */
1333 PORTCR(115, 0xE6053073), /* PORT115CR */
1334 PORTCR(116, 0xE6053074), /* PORT116CR */
1335 PORTCR(117, 0xE6053075), /* PORT117CR */
1336 PORTCR(118, 0xE6053076), /* PORT118CR */
1337 PORTCR(119, 0xE6053077), /* PORT119CR */
1338 PORTCR(120, 0xE6053078), /* PORT120CR */
1339 PORTCR(121, 0xE6050079), /* PORT121CR */
1340 PORTCR(122, 0xE605007A), /* PORT122CR */
1341 PORTCR(123, 0xE605007B), /* PORT123CR */
1342 PORTCR(124, 0xE605007C), /* PORT124CR */
1343 PORTCR(125, 0xE605007D), /* PORT125CR */
1344 PORTCR(126, 0xE605007E), /* PORT126CR */
1345 PORTCR(127, 0xE605007F), /* PORT127CR */
1346 PORTCR(128, 0xE6050080), /* PORT128CR */
1347 PORTCR(129, 0xE6050081), /* PORT129CR */
1348 PORTCR(130, 0xE6050082), /* PORT130CR */
1349 PORTCR(131, 0xE6050083), /* PORT131CR */
1350 PORTCR(132, 0xE6050084), /* PORT132CR */
1351 PORTCR(133, 0xE6050085), /* PORT133CR */
1352 PORTCR(134, 0xE6050086), /* PORT134CR */
1353 PORTCR(135, 0xE6050087), /* PORT135CR */
1354 PORTCR(136, 0xE6050088), /* PORT136CR */
1355 PORTCR(137, 0xE6050089), /* PORT137CR */
1356 PORTCR(138, 0xE605008A), /* PORT138CR */
1357 PORTCR(139, 0xE605008B), /* PORT139CR */
1358 PORTCR(140, 0xE605008C), /* PORT140CR */
1359 PORTCR(141, 0xE605008D), /* PORT141CR */
1360 PORTCR(142, 0xE605008E), /* PORT142CR */
1361 PORTCR(143, 0xE605008F), /* PORT143CR */
1362 PORTCR(144, 0xE6050090), /* PORT144CR */
1363 PORTCR(145, 0xE6050091), /* PORT145CR */
1364 PORTCR(146, 0xE6050092), /* PORT146CR */
1365 PORTCR(147, 0xE6050093), /* PORT147CR */
1366 PORTCR(148, 0xE6050094), /* PORT148CR */
1367 PORTCR(149, 0xE6050095), /* PORT149CR */
1368 PORTCR(150, 0xE6050096), /* PORT150CR */
1369 PORTCR(151, 0xE6050097), /* PORT151CR */
1370 PORTCR(152, 0xE6053098), /* PORT152CR */
1371 PORTCR(153, 0xE6053099), /* PORT153CR */
1372 PORTCR(154, 0xE605309A), /* PORT154CR */
1373 PORTCR(155, 0xE605309B), /* PORT155CR */
1374 PORTCR(156, 0xE605009C), /* PORT156CR */
1375 PORTCR(157, 0xE605009D), /* PORT157CR */
1376 PORTCR(158, 0xE605009E), /* PORT158CR */
1377 PORTCR(159, 0xE605009F), /* PORT159CR */
1378 PORTCR(160, 0xE60500A0), /* PORT160CR */
1379 PORTCR(161, 0xE60500A1), /* PORT161CR */
1380 PORTCR(162, 0xE60500A2), /* PORT162CR */
1381 PORTCR(163, 0xE60500A3), /* PORT163CR */
1382 PORTCR(164, 0xE60500A4), /* PORT164CR */
1383 PORTCR(165, 0xE60500A5), /* PORT165CR */
1384 PORTCR(166, 0xE60500A6), /* PORT166CR */
1385 PORTCR(167, 0xE60520A7), /* PORT167CR */
1386 PORTCR(168, 0xE60520A8), /* PORT168CR */
1387 PORTCR(169, 0xE60520A9), /* PORT169CR */
1388 PORTCR(170, 0xE60520AA), /* PORT170CR */
1389 PORTCR(171, 0xE60520AB), /* PORT171CR */
1390 PORTCR(172, 0xE60520AC), /* PORT172CR */
1391 PORTCR(173, 0xE60520AD), /* PORT173CR */
1392 PORTCR(174, 0xE60520AE), /* PORT174CR */
1393 PORTCR(175, 0xE60520AF), /* PORT175CR */
1394 PORTCR(176, 0xE60520B0), /* PORT176CR */
1395 PORTCR(177, 0xE60520B1), /* PORT177CR */
1396 PORTCR(178, 0xE60520B2), /* PORT178CR */
1397 PORTCR(179, 0xE60520B3), /* PORT179CR */
1398 PORTCR(180, 0xE60520B4), /* PORT180CR */
1399 PORTCR(181, 0xE60520B5), /* PORT181CR */
1400 PORTCR(182, 0xE60520B6), /* PORT182CR */
1401 PORTCR(183, 0xE60520B7), /* PORT183CR */
1402 PORTCR(184, 0xE60520B8), /* PORT184CR */
1403 PORTCR(185, 0xE60520B9), /* PORT185CR */
1404 PORTCR(186, 0xE60520BA), /* PORT186CR */
1405 PORTCR(187, 0xE60520BB), /* PORT187CR */
1406 PORTCR(188, 0xE60520BC), /* PORT188CR */
1407 PORTCR(189, 0xE60520BD), /* PORT189CR */
1408 PORTCR(190, 0xE60520BE), /* PORT190CR */
1409
1410 { PINMUX_CFG_REG("MSEL1CR", 0xE605800C, 32, 1) {
1411 MSEL1CR_31_0, MSEL1CR_31_1,
1412 MSEL1CR_30_0, MSEL1CR_30_1,
1413 MSEL1CR_29_0, MSEL1CR_29_1,
1414 MSEL1CR_28_0, MSEL1CR_28_1,
1415 MSEL1CR_27_0, MSEL1CR_27_1,
1416 MSEL1CR_26_0, MSEL1CR_26_1,
1417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0, 0, 0, 0,
1419 MSEL1CR_16_0, MSEL1CR_16_1,
1420 MSEL1CR_15_0, MSEL1CR_15_1,
1421 MSEL1CR_14_0, MSEL1CR_14_1,
1422 MSEL1CR_13_0, MSEL1CR_13_1,
1423 MSEL1CR_12_0, MSEL1CR_12_1,
1424 0, 0, 0, 0,
1425 MSEL1CR_9_0, MSEL1CR_9_1,
1426 MSEL1CR_8_0, MSEL1CR_8_1,
1427 MSEL1CR_7_0, MSEL1CR_7_1,
1428 MSEL1CR_6_0, MSEL1CR_6_1,
1429 0, 0,
1430 MSEL1CR_4_0, MSEL1CR_4_1,
1431 MSEL1CR_3_0, MSEL1CR_3_1,
1432 MSEL1CR_2_0, MSEL1CR_2_1,
1433 0, 0,
1434 MSEL1CR_0_0, MSEL1CR_0_1,
1435 }
1436 },
1437 { PINMUX_CFG_REG("MSEL3CR", 0xE6058020, 32, 1) {
1438 0, 0, 0, 0,
1439 0, 0, 0, 0,
1440 MSEL3CR_27_0, MSEL3CR_27_1,
1441 MSEL3CR_26_0, MSEL3CR_26_1,
1442 0, 0, 0, 0,
1443 0, 0, 0, 0,
1444 MSEL3CR_21_0, MSEL3CR_21_1,
1445 MSEL3CR_20_0, MSEL3CR_20_1,
1446 0, 0, 0, 0,
1447 0, 0, 0, 0,
1448 MSEL3CR_15_0, MSEL3CR_15_1,
1449 0, 0, 0, 0,
1450 0, 0, 0, 0,
1451 0, 0,
1452 MSEL3CR_9_0, MSEL3CR_9_1,
1453 0, 0, 0, 0,
1454 MSEL3CR_6_0, MSEL3CR_6_1,
1455 0, 0, 0, 0,
1456 0, 0, 0, 0,
1457 0, 0, 0, 0,
1458 }
1459 },
1460 { PINMUX_CFG_REG("MSEL4CR", 0xE6058024, 32, 1) {
1461 0, 0, 0, 0,
1462 0, 0, 0, 0,
1463 0, 0, 0, 0,
1464 0, 0, 0, 0,
1465 0, 0, 0, 0,
1466 0, 0, 0, 0,
1467 MSEL4CR_19_0, MSEL4CR_19_1,
1468 MSEL4CR_18_0, MSEL4CR_18_1,
1469 MSEL4CR_17_0, MSEL4CR_17_1,
1470 MSEL4CR_16_0, MSEL4CR_16_1,
1471 MSEL4CR_15_0, MSEL4CR_15_1,
1472 MSEL4CR_14_0, MSEL4CR_14_1,
1473 0, 0, 0, 0,
1474 0, 0,
1475 MSEL4CR_10_0, MSEL4CR_10_1,
1476 0, 0, 0, 0,
1477 0, 0,
1478 MSEL4CR_6_0, MSEL4CR_6_1,
1479 0, 0,
1480 MSEL4CR_4_0, MSEL4CR_4_1,
1481 0, 0, 0, 0,
1482 MSEL4CR_1_0, MSEL4CR_1_1,
1483 0, 0,
1484 }
1485 },
1486 { },
1487};
1488
1489static struct pinmux_data_reg pinmux_data_regs[] = {
1490 { PINMUX_DATA_REG("PORTL095_064DR", 0xE6054008, 32) {
1491 PORT95_DATA, PORT94_DATA, PORT93_DATA, PORT92_DATA,
1492 PORT91_DATA, PORT90_DATA, PORT89_DATA, PORT88_DATA,
1493 PORT87_DATA, PORT86_DATA, PORT85_DATA, PORT84_DATA,
1494 PORT83_DATA, PORT82_DATA, PORT81_DATA, PORT80_DATA,
1495 PORT79_DATA, PORT78_DATA, PORT77_DATA, PORT76_DATA,
1496 0, 0, 0, 0,
1497 0, 0, 0, 0,
1498 0, 0, 0, 0,
1499 }
1500 },
1501 { PINMUX_DATA_REG("PORTL127_096DR", 0xE605400C, 32) {
1502 PORT127_DATA, PORT126_DATA, PORT125_DATA, PORT124_DATA,
1503 PORT123_DATA, PORT122_DATA, PORT121_DATA, 0,
1504 0, 0, 0, 0,
1505 0, 0, 0, 0,
1506 0, 0, 0, 0,
1507 0, 0, 0, 0,
1508 0, 0, 0, 0,
1509 PORT99_DATA, PORT98_DATA, PORT97_DATA, PORT96_DATA,
1510 }
1511 },
1512 { PINMUX_DATA_REG("PORTL159_128DR", 0xE6054010, 32) {
1513 PORT159_DATA, PORT158_DATA, PORT157_DATA, PORT156_DATA,
1514 0, 0, 0, 0,
1515 PORT151_DATA, PORT150_DATA, PORT149_DATA, PORT148_DATA,
1516 PORT147_DATA, PORT146_DATA, PORT145_DATA, PORT144_DATA,
1517 PORT143_DATA, PORT142_DATA, PORT141_DATA, PORT140_DATA,
1518 PORT139_DATA, PORT138_DATA, PORT137_DATA, PORT136_DATA,
1519 PORT135_DATA, PORT134_DATA, PORT133_DATA, PORT132_DATA,
1520 PORT131_DATA, PORT130_DATA, PORT129_DATA, PORT128_DATA,
1521 }
1522 },
1523 { PINMUX_DATA_REG("PORTL191_160DR", 0xE6054014, 32) {
1524 0, 0, 0, 0,
1525 0, 0, 0, 0,
1526 0, 0, 0, 0,
1527 0, 0, 0, 0,
1528 0, 0, 0, 0,
1529 0, 0, 0, 0,
1530 0, PORT166_DATA, PORT165_DATA, PORT164_DATA,
1531 PORT163_DATA, PORT162_DATA, PORT161_DATA, PORT160_DATA,
1532 }
1533 },
1534 { PINMUX_DATA_REG("PORTD031_000DR", 0xE6055000, 32) {
1535 PORT31_DATA, PORT30_DATA, PORT29_DATA, PORT28_DATA,
1536 PORT27_DATA, PORT26_DATA, PORT25_DATA, PORT24_DATA,
1537 PORT23_DATA, PORT22_DATA, PORT21_DATA, PORT20_DATA,
1538 PORT19_DATA, PORT18_DATA, PORT17_DATA, PORT16_DATA,
1539 PORT15_DATA, PORT14_DATA, PORT13_DATA, PORT12_DATA,
1540 PORT11_DATA, PORT10_DATA, PORT9_DATA, PORT8_DATA,
1541 PORT7_DATA, PORT6_DATA, PORT5_DATA, PORT4_DATA,
1542 PORT3_DATA, PORT2_DATA, PORT1_DATA, PORT0_DATA,
1543 }
1544 },
1545 { PINMUX_DATA_REG("PORTD063_032DR", 0xE6055004, 32) {
1546 0, 0, 0, 0, 0, 0, 0, 0,
1547 0, 0, 0, 0, 0, 0, 0, 0,
1548 0, 0, PORT45_DATA, PORT44_DATA,
1549 PORT43_DATA, PORT42_DATA, PORT41_DATA, PORT40_DATA,
1550 PORT39_DATA, PORT38_DATA, PORT37_DATA, PORT36_DATA,
1551 PORT35_DATA, PORT34_DATA, PORT33_DATA, PORT32_DATA,
1552 }
1553 },
1554 { PINMUX_DATA_REG("PORTR063_032DR", 0xE6056004, 32) {
1555 PORT63_DATA, PORT62_DATA, PORT61_DATA, PORT60_DATA,
1556 PORT59_DATA, PORT58_DATA, PORT57_DATA, PORT56_DATA,
1557 PORT55_DATA, PORT54_DATA, PORT53_DATA, PORT52_DATA,
1558 PORT51_DATA, PORT50_DATA, PORT49_DATA, PORT48_DATA,
1559 PORT47_DATA, PORT46_DATA, 0, 0,
1560 0, 0, 0, 0,
1561 0, 0, 0, 0,
1562 0, 0, 0, 0,
1563 }
1564 },
1565 { PINMUX_DATA_REG("PORTR095_064DR", 0xE6056008, 32) {
1566 0, 0, 0, 0,
1567 0, 0, 0, 0,
1568 0, 0, 0, 0,
1569 0, 0, 0, 0,
1570 0, 0, 0, 0,
1571 PORT75_DATA, PORT74_DATA, PORT73_DATA, PORT72_DATA,
1572 PORT71_DATA, PORT70_DATA, PORT69_DATA, PORT68_DATA,
1573 PORT67_DATA, PORT66_DATA, PORT65_DATA, PORT64_DATA,
1574 }
1575 },
1576 { PINMUX_DATA_REG("PORTR191_160DR", 0xE6056014, 32) {
1577 0, PORT190_DATA, PORT189_DATA, PORT188_DATA,
1578 PORT187_DATA, PORT186_DATA, PORT185_DATA, PORT184_DATA,
1579 PORT183_DATA, PORT182_DATA, PORT181_DATA, PORT180_DATA,
1580 PORT179_DATA, PORT178_DATA, PORT177_DATA, PORT176_DATA,
1581 PORT175_DATA, PORT174_DATA, PORT173_DATA, PORT172_DATA,
1582 PORT171_DATA, PORT170_DATA, PORT169_DATA, PORT168_DATA,
1583 PORT167_DATA, 0, 0, 0,
1584 0, 0, 0, 0,
1585 }
1586 },
1587 { PINMUX_DATA_REG("PORTU127_096DR", 0xE605700C, 32) {
1588 0, 0, 0, 0,
1589 0, 0, 0, PORT120_DATA,
1590 PORT119_DATA, PORT118_DATA, PORT117_DATA, PORT116_DATA,
1591 PORT115_DATA, PORT114_DATA, PORT113_DATA, PORT112_DATA,
1592 PORT111_DATA, PORT110_DATA, PORT109_DATA, PORT108_DATA,
1593 PORT107_DATA, PORT106_DATA, PORT105_DATA, PORT104_DATA,
1594 PORT103_DATA, PORT102_DATA, PORT101_DATA, PORT100_DATA,
1595 0, 0, 0, 0,
1596 }
1597 },
1598 { PINMUX_DATA_REG("PORTU159_128DR", 0xE6057010, 32) {
1599 0, 0, 0, 0,
1600 PORT155_DATA, PORT154_DATA, PORT153_DATA, PORT152_DATA,
1601 0, 0, 0, 0,
1602 0, 0, 0, 0,
1603 0, 0, 0, 0,
1604 0, 0, 0, 0,
1605 0, 0, 0, 0,
1606 0, 0, 0, 0,
1607 }
1608 },
1609 { },
1610};
1611
1612static struct pinmux_info sh7372_pinmux_info = {
1613 .name = "sh7372_pfc",
1614 .reserved_id = PINMUX_RESERVED,
1615 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
1616 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
1617 .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
1618 .input_pd = { PINMUX_INPUT_PULLDOWN_BEGIN, PINMUX_INPUT_PULLDOWN_END },
1619 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
1620 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
1621 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
1622
1623 .first_gpio = GPIO_PORT0,
1624 .last_gpio = GPIO_FN_SDENC_DV_CLKI,
1625
1626 .gpios = pinmux_gpios,
1627 .cfg_regs = pinmux_config_regs,
1628 .data_regs = pinmux_data_regs,
1629
1630 .gpio_data = pinmux_data,
1631 .gpio_data_size = ARRAY_SIZE(pinmux_data),
1632};
1633
1634void sh7372_pinmux_init(void)
1635{
1636 register_pinmux(&sh7372_pinmux_info);
1637}
diff --git a/arch/arm/mach-shmobile/pfc-sh7377.c b/arch/arm/mach-shmobile/pfc-sh7377.c
new file mode 100644
index 000000000000..613e6842ad05
--- /dev/null
+++ b/arch/arm/mach-shmobile/pfc-sh7377.c
@@ -0,0 +1,1767 @@
1/*
2 * sh7377 processor support - PFC hardware block
3 *
4 * Copyright (C) 2010 NISHIMOTO Hiroki
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; version 2 of the
9 * License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/init.h>
21#include <linux/kernel.h>
22#include <linux/gpio.h>
23#include <mach/sh7377.h>
24
25#define _1(fn, pfx, sfx) fn(pfx, sfx)
26
27#define _10(fn, pfx, sfx) \
28 _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \
29 _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \
30 _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \
31 _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \
32 _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx)
33
34#define _90(fn, pfx, sfx) \
35 _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \
36 _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \
37 _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \
38 _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx), \
39 _10(fn, pfx##9, sfx)
40
41#define _265(fn, pfx, sfx) \
42 _10(fn, pfx, sfx), _90(fn, pfx, sfx), \
43 _10(fn, pfx##10, sfx), \
44 _1(fn, pfx##110, sfx), _1(fn, pfx##111, sfx), \
45 _1(fn, pfx##112, sfx), _1(fn, pfx##113, sfx), \
46 _1(fn, pfx##114, sfx), _1(fn, pfx##115, sfx), \
47 _1(fn, pfx##116, sfx), _1(fn, pfx##117, sfx), \
48 _1(fn, pfx##118, sfx), \
49 _1(fn, pfx##128, sfx), _1(fn, pfx##129, sfx), \
50 _10(fn, pfx##13, sfx), _10(fn, pfx##14, sfx), \
51 _10(fn, pfx##15, sfx), \
52 _1(fn, pfx##160, sfx), _1(fn, pfx##161, sfx), \
53 _1(fn, pfx##162, sfx), _1(fn, pfx##163, sfx), \
54 _1(fn, pfx##164, sfx), \
55 _1(fn, pfx##192, sfx), _1(fn, pfx##193, sfx), \
56 _1(fn, pfx##194, sfx), _1(fn, pfx##195, sfx), \
57 _1(fn, pfx##196, sfx), _1(fn, pfx##197, sfx), \
58 _1(fn, pfx##198, sfx), _1(fn, pfx##199, sfx), \
59 _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx), \
60 _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx), \
61 _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx), \
62 _1(fn, pfx##260, sfx), _1(fn, pfx##261, sfx), \
63 _1(fn, pfx##262, sfx), _1(fn, pfx##263, sfx), \
64 _1(fn, pfx##264, sfx)
65
66#define _PORT(pfx, sfx) pfx##_##sfx
67#define PORT_265(str) _265(_PORT, PORT, str)
68
69enum {
70 PINMUX_RESERVED = 0,
71
72 PINMUX_DATA_BEGIN,
73 PORT_265(DATA), /* PORT0_DATA -> PORT264_DATA */
74 PINMUX_DATA_END,
75
76 PINMUX_INPUT_BEGIN,
77 PORT_265(IN), /* PORT0_IN -> PORT264_IN */
78 PINMUX_INPUT_END,
79
80 PINMUX_INPUT_PULLUP_BEGIN,
81 PORT_265(IN_PU), /* PORT0_IN_PU -> PORT264_IN_PU */
82 PINMUX_INPUT_PULLUP_END,
83
84 PINMUX_INPUT_PULLDOWN_BEGIN,
85 PORT_265(IN_PD), /* PORT0_IN_PD -> PORT264_IN_PD */
86 PINMUX_INPUT_PULLDOWN_END,
87
88 PINMUX_OUTPUT_BEGIN,
89 PORT_265(OUT), /* PORT0_OUT -> PORT264_OUT */
90 PINMUX_OUTPUT_END,
91
92 PINMUX_FUNCTION_BEGIN,
93 PORT_265(FN_IN), /* PORT0_FN_IN -> PORT264_FN_IN */
94 PORT_265(FN_OUT), /* PORT0_FN_OUT -> PORT264_FN_OUT */
95 PORT_265(FN0), /* PORT0_FN0 -> PORT264_FN0 */
96 PORT_265(FN1), /* PORT0_FN1 -> PORT264_FN1 */
97 PORT_265(FN2), /* PORT0_FN2 -> PORT264_FN2 */
98 PORT_265(FN3), /* PORT0_FN3 -> PORT264_FN3 */
99 PORT_265(FN4), /* PORT0_FN4 -> PORT264_FN4 */
100 PORT_265(FN5), /* PORT0_FN5 -> PORT264_FN5 */
101 PORT_265(FN6), /* PORT0_FN6 -> PORT264_FN6 */
102 PORT_265(FN7), /* PORT0_FN7 -> PORT264_FN7 */
103
104 MSELBCR_MSEL17_1, MSELBCR_MSEL17_0,
105 MSELBCR_MSEL16_1, MSELBCR_MSEL16_0,
106 PINMUX_FUNCTION_END,
107
108 PINMUX_MARK_BEGIN,
109 /* Special Pull-up / Pull-down Functions */
110 PORT66_KEYIN0_PU_MARK, PORT67_KEYIN1_PU_MARK,
111 PORT68_KEYIN2_PU_MARK, PORT69_KEYIN3_PU_MARK,
112 PORT70_KEYIN4_PU_MARK, PORT71_KEYIN5_PU_MARK,
113 PORT72_KEYIN6_PU_MARK,
114
115 /* 55-1 */
116 VBUS_0_MARK,
117 CPORT0_MARK,
118 CPORT1_MARK,
119 CPORT2_MARK,
120 CPORT3_MARK,
121 CPORT4_MARK,
122 CPORT5_MARK,
123 CPORT6_MARK,
124 CPORT7_MARK,
125 CPORT8_MARK,
126 CPORT9_MARK,
127 CPORT10_MARK,
128 CPORT11_MARK, SIN2_MARK,
129 CPORT12_MARK, XCTS2_MARK,
130 CPORT13_MARK, RFSPO4_MARK,
131 CPORT14_MARK, RFSPO5_MARK,
132 CPORT15_MARK, SCIFA0_SCK_MARK, GPS_AGC2_MARK,
133 CPORT16_MARK, SCIFA0_TXD_MARK, GPS_AGC3_MARK,
134 CPORT17_IC_OE_MARK, SOUT2_MARK,
135 CPORT18_MARK, XRTS2_MARK, PORT19_VIO_CKO2_MARK,
136 CPORT19_MPORT1_MARK,
137 CPORT20_MARK, RFSPO6_MARK,
138 CPORT21_MARK, STATUS0_MARK,
139 CPORT22_MARK, STATUS1_MARK,
140 CPORT23_MARK, STATUS2_MARK, RFSPO7_MARK,
141 B_SYNLD1_MARK,
142 B_SYNLD2_MARK, SYSENMSK_MARK,
143 XMAINPS_MARK,
144 XDIVPS_MARK,
145 XIDRST_MARK,
146 IDCLK_MARK, IC_DP_MARK,
147 IDIO_MARK, IC_DM_MARK,
148 SOUT1_MARK, SCIFA4_TXD_MARK, M02_BERDAT_MARK,
149 SIN1_MARK, SCIFA4_RXD_MARK, XWUP_MARK,
150 XRTS1_MARK, SCIFA4_RTS_MARK, M03_BERCLK_MARK,
151 XCTS1_MARK, SCIFA4_CTS_MARK,
152 PCMCLKO_MARK,
153 SYNC8KO_MARK,
154
155 /* 55-2 */
156 DNPCM_A_MARK,
157 UPPCM_A_MARK,
158 VACK_MARK,
159 XTALB1L_MARK,
160 GPS_AGC1_MARK, SCIFA0_RTS_MARK,
161 GPS_AGC4_MARK, SCIFA0_RXD_MARK,
162 GPS_PWRDOWN_MARK, SCIFA0_CTS_MARK,
163 GPS_IM_MARK,
164 GPS_IS_MARK,
165 GPS_QM_MARK,
166 GPS_QS_MARK,
167 FMSOCK_MARK, PORT49_IRDA_OUT_MARK, PORT49_IROUT_MARK,
168 FMSOOLR_MARK, BBIF2_TSYNC2_MARK, TPU2TO2_MARK, IPORT3_MARK,
169 FMSIOLR_MARK,
170 FMSOOBT_MARK, BBIF2_TSCK2_MARK, TPU2TO3_MARK, OPORT1_MARK,
171 FMSIOBT_MARK,
172 FMSOSLD_MARK, BBIF2_TXD2_MARK, OPORT2_MARK,
173 FMSOILR_MARK, PORT53_IRDA_IN_MARK, TPU3TO3_MARK, OPORT3_MARK,
174 FMSIILR_MARK,
175 FMSOIBT_MARK, PORT54_IRDA_FIRSEL_MARK, TPU3TO2_MARK, FMSIIBT_MARK,
176 FMSISLD_MARK, MFG0_OUT1_MARK, TPU0TO0_MARK,
177 A0_EA0_MARK, BS_MARK,
178 A12_EA12_MARK, PORT58_VIO_CKOR_MARK, TPU4TO2_MARK,
179 A13_EA13_MARK, PORT59_IROUT_MARK, MFG0_OUT2_MARK, TPU0TO1_MARK,
180 A14_EA14_MARK, PORT60_KEYOUT5_MARK,
181 A15_EA15_MARK, PORT61_KEYOUT4_MARK,
182 A16_EA16_MARK, PORT62_KEYOUT3_MARK, MSIOF0_SS1_MARK,
183 A17_EA17_MARK, PORT63_KEYOUT2_MARK, MSIOF0_TSYNC_MARK,
184 A18_EA18_MARK, PORT64_KEYOUT1_MARK, MSIOF0_TSCK_MARK,
185 A19_EA19_MARK, PORT65_KEYOUT0_MARK, MSIOF0_TXD_MARK,
186 A20_EA20_MARK, PORT66_KEYIN0_MARK, MSIOF0_RSCK_MARK,
187 A21_EA21_MARK, PORT67_KEYIN1_MARK, MSIOF0_RSYNC_MARK,
188 A22_EA22_MARK, PORT68_KEYIN2_MARK, MSIOF0_MCK0_MARK,
189 A23_EA23_MARK, PORT69_KEYIN3_MARK, MSIOF0_MCK1_MARK,
190 A24_EA24_MARK, PORT70_KEYIN4_MARK, MSIOF0_RXD_MARK,
191 A25_EA25_MARK, PORT71_KEYIN5_MARK, MSIOF0_SS2_MARK,
192 A26_MARK, PORT72_KEYIN6_MARK,
193 D0_ED0_NAF0_MARK,
194 D1_ED1_NAF1_MARK,
195 D2_ED2_NAF2_MARK,
196 D3_ED3_NAF3_MARK,
197 D4_ED4_NAF4_MARK,
198 D5_ED5_NAF5_MARK,
199 D6_ED6_NAF6_MARK,
200 D7_ED7_NAF7_MARK,
201 D8_ED8_NAF8_MARK,
202 D9_ED9_NAF9_MARK,
203 D10_ED10_NAF10_MARK,
204 D11_ED11_NAF11_MARK,
205 D12_ED12_NAF12_MARK,
206 D13_ED13_NAF13_MARK,
207 D14_ED14_NAF14_MARK,
208 D15_ED15_NAF15_MARK,
209 CS4_MARK,
210 CS5A_MARK, FMSICK_MARK,
211 CS5B_MARK, FCE1_MARK,
212
213 /* 55-3 */
214 CS6B_MARK, XCS2_MARK, CS6A_MARK, DACK0_MARK,
215 FCE0_MARK,
216 WAIT_MARK, DREQ0_MARK,
217 RD_XRD_MARK,
218 WE0_XWR0_FWE_MARK,
219 WE1_XWR1_MARK,
220 FRB_MARK,
221 CKO_MARK,
222 NBRSTOUT_MARK,
223 NBRST_MARK,
224 GPS_EPPSIN_MARK,
225 LATCHPULSE_MARK,
226 LTESIGNAL_MARK,
227 LEGACYSTATE_MARK,
228 TCKON_MARK,
229 VIO_VD_MARK, PORT128_KEYOUT0_MARK, IPORT0_MARK,
230 VIO_HD_MARK, PORT129_KEYOUT1_MARK, IPORT1_MARK,
231 VIO_D0_MARK, PORT130_KEYOUT2_MARK, PORT130_MSIOF2_RXD_MARK,
232 VIO_D1_MARK, PORT131_KEYOUT3_MARK, PORT131_MSIOF2_SS1_MARK,
233 VIO_D2_MARK, PORT132_KEYOUT4_MARK, PORT132_MSIOF2_SS2_MARK,
234 VIO_D3_MARK, PORT133_KEYOUT5_MARK, PORT133_MSIOF2_TSYNC_MARK,
235 VIO_D4_MARK, PORT134_KEYIN0_MARK, PORT134_MSIOF2_TXD_MARK,
236 VIO_D5_MARK, PORT135_KEYIN1_MARK, PORT135_MSIOF2_TSCK_MARK,
237 VIO_D6_MARK, PORT136_KEYIN2_MARK,
238 VIO_D7_MARK, PORT137_KEYIN3_MARK,
239 VIO_D8_MARK, M9_SLCD_A01_MARK, PORT138_FSIAOMC_MARK,
240 VIO_D9_MARK, M10_SLCD_CK1_MARK, PORT139_FSIAOLR_MARK,
241 VIO_D10_MARK, M11_SLCD_SO1_MARK, TPU0TO2_MARK, PORT140_FSIAOBT_MARK,
242 VIO_D11_MARK, M12_SLCD_CE1_MARK, TPU0TO3_MARK, PORT141_FSIAOSLD_MARK,
243 VIO_D12_MARK, M13_BSW_MARK, PORT142_FSIACK_MARK,
244 VIO_D13_MARK, M14_GSW_MARK, PORT143_FSIAILR_MARK,
245 VIO_D14_MARK, M15_RSW_MARK, PORT144_FSIAIBT_MARK,
246 VIO_D15_MARK, TPU1TO3_MARK, PORT145_FSIAISLD_MARK,
247 VIO_CLK_MARK, PORT146_KEYIN4_MARK, IPORT2_MARK,
248 VIO_FIELD_MARK, PORT147_KEYIN5_MARK,
249 VIO_CKO_MARK, PORT148_KEYIN6_MARK,
250 A27_MARK, RDWR_XWE_MARK, MFG0_IN1_MARK,
251 MFG0_IN2_MARK,
252 TS_SPSYNC3_MARK, MSIOF2_RSCK_MARK,
253 TS_SDAT3_MARK, MSIOF2_RSYNC_MARK,
254 TPU1TO2_MARK, TS_SDEN3_MARK, PORT153_MSIOF2_SS1_MARK,
255 SOUT3_MARK, SCIFA2_TXD1_MARK, MSIOF2_MCK0_MARK,
256 SIN3_MARK, SCIFA2_RXD1_MARK, MSIOF2_MCK1_MARK,
257 XRTS3_MARK, SCIFA2_RTS1_MARK, PORT156_MSIOF2_SS2_MARK,
258 XCTS3_MARK, SCIFA2_CTS1_MARK, PORT157_MSIOF2_RXD_MARK,
259
260 /* 55-4 */
261 DINT_MARK, SCIFA2_SCK1_MARK, TS_SCK3_MARK,
262 PORT159_SCIFB_SCK_MARK, PORT159_SCIFA5_SCK_MARK, NMI_MARK,
263 PORT160_SCIFB_TXD_MARK, PORT160_SCIFA5_TXD_MARK, SOUT0_MARK,
264 PORT161_SCIFB_CTS_MARK, PORT161_SCIFA5_CTS_MARK, XCTS0_MARK,
265 MFG3_IN2_MARK,
266 PORT162_SCIFB_RXD_MARK, PORT162_SCIFA5_RXD_MARK, SIN0_MARK,
267 MFG3_IN1_MARK,
268 PORT163_SCIFB_RTS_MARK, PORT163_SCIFA5_RTS_MARK, XRTS0_MARK,
269 MFG3_OUT1_MARK, TPU3TO0_MARK,
270 LCDD0_MARK, PORT192_KEYOUT0_MARK, EXT_CKI_MARK,
271 LCDD1_MARK, PORT193_KEYOUT1_MARK, PORT193_SCIFA5_CTS_MARK,
272 BBIF2_TSYNC1_MARK,
273 LCDD2_MARK, PORT194_KEYOUT2_MARK, PORT194_SCIFA5_RTS_MARK,
274 BBIF2_TSCK1_MARK,
275 LCDD3_MARK, PORT195_KEYOUT3_MARK, PORT195_SCIFA5_RXD_MARK,
276 BBIF2_TXD1_MARK,
277 LCDD4_MARK, PORT196_KEYOUT4_MARK, PORT196_SCIFA5_TXD_MARK,
278 LCDD5_MARK, PORT197_KEYOUT5_MARK, PORT197_SCIFA5_SCK_MARK,
279 MFG2_OUT2_MARK,
280 TPU2TO1_MARK,
281 LCDD6_MARK, XWR2_MARK,
282 LCDD7_MARK, TPU4TO1_MARK, MFG4_OUT2_MARK, XWR3_MARK,
283 LCDD8_MARK, PORT200_KEYIN0_MARK, VIO_DR0_MARK, D16_MARK, ED16_MARK,
284 LCDD9_MARK, PORT201_KEYIN1_MARK, VIO_DR1_MARK, D17_MARK, ED17_MARK,
285 LCDD10_MARK, PORT202_KEYIN2_MARK, VIO_DR2_MARK, D18_MARK, ED18_MARK,
286 LCDD11_MARK, PORT203_KEYIN3_MARK, VIO_DR3_MARK, D19_MARK, ED19_MARK,
287 LCDD12_MARK, PORT204_KEYIN4_MARK, VIO_DR4_MARK, D20_MARK, ED20_MARK,
288 LCDD13_MARK, PORT205_KEYIN5_MARK, VIO_DR5_MARK, D21_MARK, ED21_MARK,
289 LCDD14_MARK, PORT206_KEYIN6_MARK, VIO_DR6_MARK, D22_MARK, ED22_MARK,
290 LCDD15_MARK, PORT207_MSIOF0L_SS1_MARK, PORT207_KEYOUT0_MARK,
291 VIO_DR7_MARK, D23_MARK, ED23_MARK,
292 LCDD16_MARK, PORT208_MSIOF0L_SS2_MARK, PORT208_KEYOUT1_MARK,
293 VIO_VDR_MARK, D24_MARK, ED24_MARK,
294 LCDD17_MARK, PORT209_KEYOUT2_MARK, VIO_HDR_MARK, D25_MARK, ED25_MARK,
295 LCDD18_MARK, DREQ2_MARK, PORT210_MSIOF0L_SS1_MARK, D26_MARK, ED26_MARK,
296 LCDD19_MARK, PORT211_MSIOF0L_SS2_MARK, D27_MARK, ED27_MARK,
297 LCDD20_MARK, TS_SPSYNC1_MARK, MSIOF0L_MCK0_MARK, D28_MARK, ED28_MARK,
298 LCDD21_MARK, TS_SDAT1_MARK, MSIOF0L_MCK1_MARK, D29_MARK, ED29_MARK,
299 LCDD22_MARK, TS_SDEN1_MARK, MSIOF0L_RSCK_MARK, D30_MARK, ED30_MARK,
300 LCDD23_MARK, TS_SCK1_MARK, MSIOF0L_RSYNC_MARK, D31_MARK, ED31_MARK,
301 LCDDCK_MARK, LCDWR_MARK, PORT216_KEYOUT3_MARK, VIO_CLKR_MARK,
302 LCDRD_MARK, DACK2_MARK, MSIOF0L_TSYNC_MARK,
303 LCDHSYN_MARK, LCDCS_MARK, LCDCS2_MARK, DACK3_MARK,
304 PORT218_VIO_CKOR_MARK, PORT218_KEYOUT4_MARK,
305 LCDDISP_MARK, LCDRS_MARK, DREQ3_MARK, MSIOF0L_TSCK_MARK,
306 LCDVSYN_MARK, LCDVSYN2_MARK, PORT220_KEYOUT5_MARK,
307 LCDLCLK_MARK, DREQ1_MARK, PWEN_MARK, MSIOF0L_RXD_MARK,
308 LCDDON_MARK, LCDDON2_MARK, DACK1_MARK, OVCN_MARK, MSIOF0L_TXD_MARK,
309 SCIFA1_TXD_MARK, OVCN2_MARK,
310 EXTLP_MARK, SCIFA1_SCK_MARK, USBTERM_MARK, PORT226_VIO_CKO2_MARK,
311 SCIFA1_RTS_MARK, IDIN_MARK,
312 SCIFA1_RXD_MARK,
313 SCIFA1_CTS_MARK, MFG1_IN1_MARK,
314 MSIOF1_TXD_MARK, SCIFA2_TXD2_MARK, PORT230_FSIAOMC_MARK,
315 MSIOF1_TSYNC_MARK, SCIFA2_CTS2_MARK, PORT231_FSIAOLR_MARK,
316 MSIOF1_TSCK_MARK, SCIFA2_SCK2_MARK, PORT232_FSIAOBT_MARK,
317 MSIOF1_RXD_MARK, SCIFA2_RXD2_MARK, GPS_VCOTRIG_MARK,
318 PORT233_FSIACK_MARK,
319 MSIOF1_RSCK_MARK, SCIFA2_RTS2_MARK, PORT234_FSIAOSLD_MARK,
320 MSIOF1_RSYNC_MARK, OPORT0_MARK, MFG1_IN2_MARK, PORT235_FSIAILR_MARK,
321 MSIOF1_MCK0_MARK, I2C_SDA2_MARK, PORT236_FSIAIBT_MARK,
322 MSIOF1_MCK1_MARK, I2C_SCL2_MARK, PORT237_FSIAISLD_MARK,
323 MSIOF1_SS1_MARK, EDBGREQ3_MARK,
324
325 /* 55-5 */
326 MSIOF1_SS2_MARK,
327 SCIFA6_TXD_MARK,
328 PORT241_IRDA_OUT_MARK, PORT241_IROUT_MARK, MFG4_OUT1_MARK,
329 TPU4TO0_MARK,
330 PORT242_IRDA_IN_MARK, MFG4_IN2_MARK,
331 PORT243_IRDA_FIRSEL_MARK, PORT243_VIO_CKO2_MARK,
332 PORT244_SCIFA5_CTS_MARK, MFG2_IN1_MARK, PORT244_SCIFB_CTS_MARK,
333 PORT244_MSIOF2_RXD_MARK,
334 PORT245_SCIFA5_RTS_MARK, MFG2_IN2_MARK, PORT245_SCIFB_RTS_MARK,
335 PORT245_MSIOF2_TXD_MARK,
336 PORT246_SCIFA5_RXD_MARK, MFG1_OUT1_MARK, PORT246_SCIFB_RXD_MARK,
337 TPU1TO0_MARK,
338 PORT247_SCIFA5_TXD_MARK, MFG3_OUT2_MARK, PORT247_SCIFB_TXD_MARK,
339 TPU3TO1_MARK,
340 PORT248_SCIFA5_SCK_MARK, MFG2_OUT1_MARK, PORT248_SCIFB_SCK_MARK,
341 TPU2TO0_MARK,
342 PORT248_MSIOF2_TSCK_MARK,
343 PORT249_IROUT_MARK, MFG4_IN1_MARK, PORT249_MSIOF2_TSYNC_MARK,
344 SDHICLK0_MARK, TCK2_SWCLK_MC0_MARK,
345 SDHICD0_MARK,
346 SDHID0_0_MARK, TMS2_SWDIO_MC0_MARK,
347 SDHID0_1_MARK, TDO2_SWO0_MC0_MARK,
348 SDHID0_2_MARK, TDI2_MARK,
349 SDHID0_3_MARK, RTCK2_SWO1_MC0_MARK,
350 SDHICMD0_MARK, TRST2_MARK,
351 SDHIWP0_MARK, EDBGREQ2_MARK,
352 SDHICLK1_MARK, TCK3_SWCLK_MC1_MARK,
353 SDHID1_0_MARK, M11_SLCD_SO2_MARK, TS_SPSYNC2_MARK,
354 TMS3_SWDIO_MC1_MARK,
355 SDHID1_1_MARK, M9_SLCD_A02_MARK, TS_SDAT2_MARK, TDO3_SWO0_MC1_MARK,
356 SDHID1_2_MARK, M10_SLCD_CK2_MARK, TS_SDEN2_MARK, TDI3_MARK,
357 SDHID1_3_MARK, M12_SLCD_CE2_MARK, TS_SCK2_MARK, RTCK3_SWO1_MC1_MARK,
358 SDHICMD1_MARK, TRST3_MARK,
359 RESETOUTS_MARK,
360 PINMUX_MARK_END,
361};
362
363#define PORT_DATA_I(nr) \
364 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN)
365
366#define PORT_DATA_I_PD(nr) \
367 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
368 PORT##nr##_IN, PORT##nr##_IN_PD)
369
370#define PORT_DATA_I_PU(nr) \
371 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
372 PORT##nr##_IN, PORT##nr##_IN_PU)
373
374#define PORT_DATA_I_PU_PD(nr) \
375 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
376 PORT##nr##_IN, PORT##nr##_IN_PD, \
377 PORT##nr##_IN_PU)
378
379#define PORT_DATA_O(nr) \
380 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
381 PORT##nr##_OUT)
382
383#define PORT_DATA_IO(nr) \
384 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
385 PORT##nr##_OUT, PORT##nr##_IN)
386
387#define PORT_DATA_IO_PD(nr) \
388 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
389 PORT##nr##_OUT, PORT##nr##_IN, \
390 PORT##nr##_IN_PD)
391
392#define PORT_DATA_IO_PU(nr) \
393 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
394 PORT##nr##_OUT, PORT##nr##_IN, \
395 PORT##nr##_IN_PU)
396
397#define PORT_DATA_IO_PU_PD(nr) \
398 PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \
399 PORT##nr##_OUT, PORT##nr##_IN, \
400 PORT##nr##_IN_PD, PORT##nr##_IN_PU)
401
402static pinmux_enum_t pinmux_data[] = {
403 /* specify valid pin states for each pin in GPIO mode */
404 /* 55-1 (GPIO) */
405 PORT_DATA_I_PD(0), PORT_DATA_I_PU(1),
406 PORT_DATA_I_PU(2), PORT_DATA_I_PU(3),
407 PORT_DATA_I_PU(4), PORT_DATA_I_PU(5),
408 PORT_DATA_I_PU(6), PORT_DATA_I_PU(7),
409 PORT_DATA_I_PU(8), PORT_DATA_I_PU(9),
410 PORT_DATA_I_PU(10), PORT_DATA_I_PU(11),
411 PORT_DATA_IO_PU(12), PORT_DATA_IO_PU(13),
412 PORT_DATA_IO_PU_PD(14), PORT_DATA_IO_PU_PD(15),
413 PORT_DATA_O(16), PORT_DATA_IO(17),
414 PORT_DATA_O(18), PORT_DATA_O(19),
415 PORT_DATA_O(20), PORT_DATA_O(21),
416 PORT_DATA_O(22), PORT_DATA_O(23),
417 PORT_DATA_O(24), PORT_DATA_I_PD(25),
418 PORT_DATA_I_PD(26), PORT_DATA_O(27),
419 PORT_DATA_O(28), PORT_DATA_O(29),
420 PORT_DATA_IO(30), PORT_DATA_IO_PU(31),
421 PORT_DATA_IO_PD(32), PORT_DATA_I_PU(33),
422 PORT_DATA_IO_PD(34), PORT_DATA_I_PU_PD(35),
423 PORT_DATA_O(36), PORT_DATA_IO(37),
424
425 /* 55-2 (GPIO) */
426 PORT_DATA_O(38), PORT_DATA_I_PU(39),
427 PORT_DATA_I_PU_PD(40), PORT_DATA_O(41),
428 PORT_DATA_IO_PD(42), PORT_DATA_IO_PD(43),
429 PORT_DATA_IO_PD(44), PORT_DATA_I_PD(45),
430 PORT_DATA_I_PD(46), PORT_DATA_I_PD(47),
431 PORT_DATA_I_PD(48), PORT_DATA_IO_PU_PD(49),
432 PORT_DATA_IO_PD(50), PORT_DATA_IO_PD(51),
433 PORT_DATA_O(52), PORT_DATA_IO_PU_PD(53),
434 PORT_DATA_IO_PU_PD(54), PORT_DATA_IO_PD(55),
435 PORT_DATA_I_PU_PD(56), PORT_DATA_IO(57),
436 PORT_DATA_IO(58), PORT_DATA_IO(59),
437 PORT_DATA_IO(60), PORT_DATA_IO(61),
438 PORT_DATA_IO_PD(62), PORT_DATA_IO_PD(63),
439 PORT_DATA_IO_PD(64), PORT_DATA_IO_PD(65),
440 PORT_DATA_IO_PU_PD(66), PORT_DATA_IO_PU_PD(67),
441 PORT_DATA_IO_PU_PD(68), PORT_DATA_IO_PU_PD(69),
442 PORT_DATA_IO_PU_PD(70), PORT_DATA_IO_PU_PD(71),
443 PORT_DATA_IO_PU_PD(72), PORT_DATA_I_PU_PD(73),
444 PORT_DATA_IO_PU(74), PORT_DATA_IO_PU(75),
445 PORT_DATA_IO_PU(76), PORT_DATA_IO_PU(77),
446 PORT_DATA_IO_PU(78), PORT_DATA_IO_PU(79),
447 PORT_DATA_IO_PU(80), PORT_DATA_IO_PU(81),
448 PORT_DATA_IO_PU(82), PORT_DATA_IO_PU(83),
449 PORT_DATA_IO_PU(84), PORT_DATA_IO_PU(85),
450 PORT_DATA_IO_PU(86), PORT_DATA_IO_PU(87),
451 PORT_DATA_IO_PU(88), PORT_DATA_IO_PU(89),
452 PORT_DATA_O(90), PORT_DATA_IO_PU(91),
453 PORT_DATA_O(92),
454
455 /* 55-3 (GPIO) */
456 PORT_DATA_IO_PU(93),
457 PORT_DATA_O(94),
458 PORT_DATA_I_PU_PD(95),
459 PORT_DATA_IO(96), PORT_DATA_IO(97),
460 PORT_DATA_IO(98), PORT_DATA_I_PU(99),
461 PORT_DATA_O(100), PORT_DATA_O(101),
462 PORT_DATA_I_PU(102), PORT_DATA_IO_PD(103),
463 PORT_DATA_I_PD(104), PORT_DATA_I_PD(105),
464 PORT_DATA_I_PD(106), PORT_DATA_I_PD(107),
465 PORT_DATA_I_PD(108), PORT_DATA_IO_PD(109),
466 PORT_DATA_IO_PD(110), PORT_DATA_I_PD(111),
467 PORT_DATA_IO_PD(112), PORT_DATA_IO_PD(113),
468 PORT_DATA_IO_PD(114), PORT_DATA_I_PD(115),
469 PORT_DATA_I_PD(116), PORT_DATA_IO_PD(117),
470 PORT_DATA_I_PD(118), PORT_DATA_IO_PD(128),
471 PORT_DATA_IO_PD(129), PORT_DATA_IO_PD(130),
472 PORT_DATA_IO_PD(131), PORT_DATA_IO_PD(132),
473 PORT_DATA_IO_PD(133), PORT_DATA_IO_PU_PD(134),
474 PORT_DATA_IO_PU_PD(135), PORT_DATA_IO_PU_PD(136),
475 PORT_DATA_IO_PU_PD(137), PORT_DATA_IO_PD(138),
476 PORT_DATA_IO_PD(139), PORT_DATA_IO_PD(140),
477 PORT_DATA_IO_PD(141), PORT_DATA_IO_PD(142),
478 PORT_DATA_IO_PD(143), PORT_DATA_IO_PU_PD(144),
479 PORT_DATA_IO_PD(145), PORT_DATA_IO_PU_PD(146),
480 PORT_DATA_IO_PU_PD(147), PORT_DATA_IO_PU_PD(148),
481 PORT_DATA_IO_PU_PD(149), PORT_DATA_I_PD(150),
482 PORT_DATA_IO_PU_PD(151), PORT_DATA_IO_PD(152),
483 PORT_DATA_IO_PD(153), PORT_DATA_IO_PD(154),
484 PORT_DATA_I_PD(155), PORT_DATA_IO_PU_PD(156),
485 PORT_DATA_I_PD(157), PORT_DATA_IO_PD(158),
486
487 /* 55-4 (GPIO) */
488 PORT_DATA_IO_PU_PD(159), PORT_DATA_IO_PU_PD(160),
489 PORT_DATA_I_PU_PD(161), PORT_DATA_I_PU_PD(162),
490 PORT_DATA_IO_PU_PD(163), PORT_DATA_I_PU_PD(164),
491 PORT_DATA_IO_PD(192), PORT_DATA_IO_PD(193),
492 PORT_DATA_IO_PD(194), PORT_DATA_IO_PD(195),
493 PORT_DATA_IO_PD(196), PORT_DATA_IO_PD(197),
494 PORT_DATA_IO_PD(198), PORT_DATA_IO_PD(199),
495 PORT_DATA_IO_PU_PD(200), PORT_DATA_IO_PU_PD(201),
496 PORT_DATA_IO_PU_PD(202), PORT_DATA_IO_PU_PD(203),
497 PORT_DATA_IO_PU_PD(204), PORT_DATA_IO_PU_PD(205),
498 PORT_DATA_IO_PU_PD(206), PORT_DATA_IO_PD(207),
499 PORT_DATA_IO_PD(208), PORT_DATA_IO_PD(209),
500 PORT_DATA_IO_PD(210), PORT_DATA_IO_PD(211),
501 PORT_DATA_IO_PD(212), PORT_DATA_IO_PD(213),
502 PORT_DATA_IO_PD(214), PORT_DATA_IO_PD(215),
503 PORT_DATA_IO_PD(216), PORT_DATA_IO_PD(217),
504 PORT_DATA_O(218), PORT_DATA_IO_PD(219),
505 PORT_DATA_IO_PD(220), PORT_DATA_IO_PD(221),
506 PORT_DATA_IO_PU_PD(222),
507 PORT_DATA_I_PU_PD(223), PORT_DATA_I_PU_PD(224),
508 PORT_DATA_IO_PU_PD(225), PORT_DATA_O(226),
509 PORT_DATA_IO_PU_PD(227), PORT_DATA_I_PD(228),
510 PORT_DATA_I_PD(229), PORT_DATA_IO(230),
511 PORT_DATA_IO_PD(231), PORT_DATA_IO_PU_PD(232),
512 PORT_DATA_I_PD(233), PORT_DATA_IO_PU_PD(234),
513 PORT_DATA_IO_PU_PD(235), PORT_DATA_IO_PU_PD(236),
514 PORT_DATA_IO_PD(237), PORT_DATA_IO_PU_PD(238),
515
516 /* 55-5 (GPIO) */
517 PORT_DATA_IO_PU_PD(239), PORT_DATA_IO_PU_PD(240),
518 PORT_DATA_O(241), PORT_DATA_I_PD(242),
519 PORT_DATA_IO_PU_PD(243), PORT_DATA_IO_PU_PD(244),
520 PORT_DATA_IO_PU_PD(245), PORT_DATA_IO_PU_PD(246),
521 PORT_DATA_IO_PU_PD(247), PORT_DATA_IO_PU_PD(248),
522 PORT_DATA_IO_PU_PD(249), PORT_DATA_IO_PD(250),
523 PORT_DATA_IO_PU_PD(251), PORT_DATA_IO_PU_PD(252),
524 PORT_DATA_IO_PU_PD(253), PORT_DATA_IO_PU_PD(254),
525 PORT_DATA_IO_PU_PD(255), PORT_DATA_IO_PU_PD(256),
526 PORT_DATA_IO_PU_PD(257), PORT_DATA_IO_PD(258),
527 PORT_DATA_IO_PU_PD(259), PORT_DATA_IO_PU_PD(260),
528 PORT_DATA_IO_PU_PD(261), PORT_DATA_IO_PU_PD(262),
529 PORT_DATA_IO_PU_PD(263),
530
531 /* Special Pull-up / Pull-down Functions */
532 PINMUX_DATA(PORT66_KEYIN0_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
533 PORT66_FN2, PORT66_IN_PU),
534 PINMUX_DATA(PORT67_KEYIN1_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
535 PORT67_FN2, PORT67_IN_PU),
536 PINMUX_DATA(PORT68_KEYIN2_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
537 PORT68_FN2, PORT68_IN_PU),
538 PINMUX_DATA(PORT69_KEYIN3_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
539 PORT69_FN2, PORT69_IN_PU),
540 PINMUX_DATA(PORT70_KEYIN4_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
541 PORT70_FN2, PORT70_IN_PU),
542 PINMUX_DATA(PORT71_KEYIN5_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
543 PORT71_FN2, PORT71_IN_PU),
544 PINMUX_DATA(PORT72_KEYIN6_PU_MARK, MSELBCR_MSEL17_0, MSELBCR_MSEL16_0,
545 PORT72_FN2, PORT72_IN_PU),
546
547
548 /* 55-1 (FN) */
549 PINMUX_DATA(VBUS_0_MARK, PORT0_FN1),
550 PINMUX_DATA(CPORT0_MARK, PORT1_FN1),
551 PINMUX_DATA(CPORT1_MARK, PORT2_FN1),
552 PINMUX_DATA(CPORT2_MARK, PORT3_FN1),
553 PINMUX_DATA(CPORT3_MARK, PORT4_FN1),
554 PINMUX_DATA(CPORT4_MARK, PORT5_FN1),
555 PINMUX_DATA(CPORT5_MARK, PORT6_FN1),
556 PINMUX_DATA(CPORT6_MARK, PORT7_FN1),
557 PINMUX_DATA(CPORT7_MARK, PORT8_FN1),
558 PINMUX_DATA(CPORT8_MARK, PORT9_FN1),
559 PINMUX_DATA(CPORT9_MARK, PORT10_FN1),
560 PINMUX_DATA(CPORT10_MARK, PORT11_FN1),
561 PINMUX_DATA(CPORT11_MARK, PORT12_FN1),
562 PINMUX_DATA(SIN2_MARK, PORT12_FN2),
563 PINMUX_DATA(CPORT12_MARK, PORT13_FN1),
564 PINMUX_DATA(XCTS2_MARK, PORT13_FN2),
565 PINMUX_DATA(CPORT13_MARK, PORT14_FN1),
566 PINMUX_DATA(RFSPO4_MARK, PORT14_FN2),
567 PINMUX_DATA(CPORT14_MARK, PORT15_FN1),
568 PINMUX_DATA(RFSPO5_MARK, PORT15_FN2),
569 PINMUX_DATA(CPORT15_MARK, PORT16_FN1),
570 PINMUX_DATA(SCIFA0_SCK_MARK, PORT16_FN2),
571 PINMUX_DATA(GPS_AGC2_MARK, PORT16_FN3),
572 PINMUX_DATA(CPORT16_MARK, PORT17_FN1),
573 PINMUX_DATA(SCIFA0_TXD_MARK, PORT17_FN2),
574 PINMUX_DATA(GPS_AGC3_MARK, PORT17_FN3),
575 PINMUX_DATA(CPORT17_IC_OE_MARK, PORT18_FN1),
576 PINMUX_DATA(SOUT2_MARK, PORT18_FN2),
577 PINMUX_DATA(CPORT18_MARK, PORT19_FN1),
578 PINMUX_DATA(XRTS2_MARK, PORT19_FN2),
579 PINMUX_DATA(PORT19_VIO_CKO2_MARK, PORT19_FN3),
580 PINMUX_DATA(CPORT19_MPORT1_MARK, PORT20_FN1),
581 PINMUX_DATA(CPORT20_MARK, PORT21_FN1),
582 PINMUX_DATA(RFSPO6_MARK, PORT21_FN2),
583 PINMUX_DATA(CPORT21_MARK, PORT22_FN1),
584 PINMUX_DATA(STATUS0_MARK, PORT22_FN2),
585 PINMUX_DATA(CPORT22_MARK, PORT23_FN1),
586 PINMUX_DATA(STATUS1_MARK, PORT23_FN2),
587 PINMUX_DATA(CPORT23_MARK, PORT24_FN1),
588 PINMUX_DATA(STATUS2_MARK, PORT24_FN2),
589 PINMUX_DATA(RFSPO7_MARK, PORT24_FN3),
590 PINMUX_DATA(B_SYNLD1_MARK, PORT25_FN1),
591 PINMUX_DATA(B_SYNLD2_MARK, PORT26_FN1),
592 PINMUX_DATA(SYSENMSK_MARK, PORT26_FN2),
593 PINMUX_DATA(XMAINPS_MARK, PORT27_FN1),
594 PINMUX_DATA(XDIVPS_MARK, PORT28_FN1),
595 PINMUX_DATA(XIDRST_MARK, PORT29_FN1),
596 PINMUX_DATA(IDCLK_MARK, PORT30_FN1),
597 PINMUX_DATA(IC_DP_MARK, PORT30_FN2),
598 PINMUX_DATA(IDIO_MARK, PORT31_FN1),
599 PINMUX_DATA(IC_DM_MARK, PORT31_FN2),
600 PINMUX_DATA(SOUT1_MARK, PORT32_FN1),
601 PINMUX_DATA(SCIFA4_TXD_MARK, PORT32_FN2),
602 PINMUX_DATA(M02_BERDAT_MARK, PORT32_FN3),
603 PINMUX_DATA(SIN1_MARK, PORT33_FN1),
604 PINMUX_DATA(SCIFA4_RXD_MARK, PORT33_FN2),
605 PINMUX_DATA(XWUP_MARK, PORT33_FN3),
606 PINMUX_DATA(XRTS1_MARK, PORT34_FN1),
607 PINMUX_DATA(SCIFA4_RTS_MARK, PORT34_FN2),
608 PINMUX_DATA(M03_BERCLK_MARK, PORT34_FN3),
609 PINMUX_DATA(XCTS1_MARK, PORT35_FN1),
610 PINMUX_DATA(SCIFA4_CTS_MARK, PORT35_FN2),
611 PINMUX_DATA(PCMCLKO_MARK, PORT36_FN1),
612 PINMUX_DATA(SYNC8KO_MARK, PORT37_FN1),
613
614 /* 55-2 (FN) */
615 PINMUX_DATA(DNPCM_A_MARK, PORT38_FN1),
616 PINMUX_DATA(UPPCM_A_MARK, PORT39_FN1),
617 PINMUX_DATA(VACK_MARK, PORT40_FN1),
618 PINMUX_DATA(XTALB1L_MARK, PORT41_FN1),
619 PINMUX_DATA(GPS_AGC1_MARK, PORT42_FN1),
620 PINMUX_DATA(SCIFA0_RTS_MARK, PORT42_FN2),
621 PINMUX_DATA(GPS_AGC4_MARK, PORT43_FN1),
622 PINMUX_DATA(SCIFA0_RXD_MARK, PORT43_FN2),
623 PINMUX_DATA(GPS_PWRDOWN_MARK, PORT44_FN1),
624 PINMUX_DATA(SCIFA0_CTS_MARK, PORT44_FN2),
625 PINMUX_DATA(GPS_IM_MARK, PORT45_FN1),
626 PINMUX_DATA(GPS_IS_MARK, PORT46_FN1),
627 PINMUX_DATA(GPS_QM_MARK, PORT47_FN1),
628 PINMUX_DATA(GPS_QS_MARK, PORT48_FN1),
629 PINMUX_DATA(FMSOCK_MARK, PORT49_FN1),
630 PINMUX_DATA(PORT49_IRDA_OUT_MARK, PORT49_FN2),
631 PINMUX_DATA(PORT49_IROUT_MARK, PORT49_FN3),
632 PINMUX_DATA(FMSOOLR_MARK, PORT50_FN1),
633 PINMUX_DATA(BBIF2_TSYNC2_MARK, PORT50_FN2),
634 PINMUX_DATA(TPU2TO2_MARK, PORT50_FN3),
635 PINMUX_DATA(IPORT3_MARK, PORT50_FN4),
636 PINMUX_DATA(FMSIOLR_MARK, PORT50_FN5),
637 PINMUX_DATA(FMSOOBT_MARK, PORT51_FN1),
638 PINMUX_DATA(BBIF2_TSCK2_MARK, PORT51_FN2),
639 PINMUX_DATA(TPU2TO3_MARK, PORT51_FN3),
640 PINMUX_DATA(OPORT1_MARK, PORT51_FN4),
641 PINMUX_DATA(FMSIOBT_MARK, PORT51_FN5),
642 PINMUX_DATA(FMSOSLD_MARK, PORT52_FN1),
643 PINMUX_DATA(BBIF2_TXD2_MARK, PORT52_FN2),
644 PINMUX_DATA(OPORT2_MARK, PORT52_FN3),
645 PINMUX_DATA(FMSOILR_MARK, PORT53_FN1),
646 PINMUX_DATA(PORT53_IRDA_IN_MARK, PORT53_FN2),
647 PINMUX_DATA(TPU3TO3_MARK, PORT53_FN3),
648 PINMUX_DATA(OPORT3_MARK, PORT53_FN4),
649 PINMUX_DATA(FMSIILR_MARK, PORT53_FN5),
650 PINMUX_DATA(FMSOIBT_MARK, PORT54_FN1),
651 PINMUX_DATA(PORT54_IRDA_FIRSEL_MARK, PORT54_FN2),
652 PINMUX_DATA(TPU3TO2_MARK, PORT54_FN3),
653 PINMUX_DATA(FMSIIBT_MARK, PORT54_FN4),
654 PINMUX_DATA(FMSISLD_MARK, PORT55_FN1),
655 PINMUX_DATA(MFG0_OUT1_MARK, PORT55_FN2),
656 PINMUX_DATA(TPU0TO0_MARK, PORT55_FN3),
657 PINMUX_DATA(A0_EA0_MARK, PORT57_FN1),
658 PINMUX_DATA(BS_MARK, PORT57_FN2),
659 PINMUX_DATA(A12_EA12_MARK, PORT58_FN1),
660 PINMUX_DATA(PORT58_VIO_CKOR_MARK, PORT58_FN2),
661 PINMUX_DATA(TPU4TO2_MARK, PORT58_FN3),
662 PINMUX_DATA(A13_EA13_MARK, PORT59_FN1),
663 PINMUX_DATA(PORT59_IROUT_MARK, PORT59_FN2),
664 PINMUX_DATA(MFG0_OUT2_MARK, PORT59_FN3),
665 PINMUX_DATA(TPU0TO1_MARK, PORT59_FN4),
666 PINMUX_DATA(A14_EA14_MARK, PORT60_FN1),
667 PINMUX_DATA(PORT60_KEYOUT5_MARK, PORT60_FN2),
668 PINMUX_DATA(A15_EA15_MARK, PORT61_FN1),
669 PINMUX_DATA(PORT61_KEYOUT4_MARK, PORT61_FN2),
670 PINMUX_DATA(A16_EA16_MARK, PORT62_FN1),
671 PINMUX_DATA(PORT62_KEYOUT3_MARK, PORT62_FN2),
672 PINMUX_DATA(MSIOF0_SS1_MARK, PORT62_FN3),
673 PINMUX_DATA(A17_EA17_MARK, PORT63_FN1),
674 PINMUX_DATA(PORT63_KEYOUT2_MARK, PORT63_FN2),
675 PINMUX_DATA(MSIOF0_TSYNC_MARK, PORT63_FN3),
676 PINMUX_DATA(A18_EA18_MARK, PORT64_FN1),
677 PINMUX_DATA(PORT64_KEYOUT1_MARK, PORT64_FN2),
678 PINMUX_DATA(MSIOF0_TSCK_MARK, PORT64_FN3),
679 PINMUX_DATA(A19_EA19_MARK, PORT65_FN1),
680 PINMUX_DATA(PORT65_KEYOUT0_MARK, PORT65_FN2),
681 PINMUX_DATA(MSIOF0_TXD_MARK, PORT65_FN3),
682 PINMUX_DATA(A20_EA20_MARK, PORT66_FN1),
683 PINMUX_DATA(PORT66_KEYIN0_MARK, PORT66_FN2),
684 PINMUX_DATA(MSIOF0_RSCK_MARK, PORT66_FN3),
685 PINMUX_DATA(A21_EA21_MARK, PORT67_FN1),
686 PINMUX_DATA(PORT67_KEYIN1_MARK, PORT67_FN2),
687 PINMUX_DATA(MSIOF0_RSYNC_MARK, PORT67_FN3),
688 PINMUX_DATA(A22_EA22_MARK, PORT68_FN1),
689 PINMUX_DATA(PORT68_KEYIN2_MARK, PORT68_FN2),
690 PINMUX_DATA(MSIOF0_MCK0_MARK, PORT68_FN3),
691 PINMUX_DATA(A23_EA23_MARK, PORT69_FN1),
692 PINMUX_DATA(PORT69_KEYIN3_MARK, PORT69_FN2),
693 PINMUX_DATA(MSIOF0_MCK1_MARK, PORT69_FN3),
694 PINMUX_DATA(A24_EA24_MARK, PORT70_FN1),
695 PINMUX_DATA(PORT70_KEYIN4_MARK, PORT70_FN2),
696 PINMUX_DATA(MSIOF0_RXD_MARK, PORT70_FN3),
697 PINMUX_DATA(A25_EA25_MARK, PORT71_FN1),
698 PINMUX_DATA(PORT71_KEYIN5_MARK, PORT71_FN2),
699 PINMUX_DATA(MSIOF0_SS2_MARK, PORT71_FN3),
700 PINMUX_DATA(A26_MARK, PORT72_FN1),
701 PINMUX_DATA(PORT72_KEYIN6_MARK, PORT72_FN2),
702 PINMUX_DATA(D0_ED0_NAF0_MARK, PORT74_FN1),
703 PINMUX_DATA(D1_ED1_NAF1_MARK, PORT75_FN1),
704 PINMUX_DATA(D2_ED2_NAF2_MARK, PORT76_FN1),
705 PINMUX_DATA(D3_ED3_NAF3_MARK, PORT77_FN1),
706 PINMUX_DATA(D4_ED4_NAF4_MARK, PORT78_FN1),
707 PINMUX_DATA(D5_ED5_NAF5_MARK, PORT79_FN1),
708 PINMUX_DATA(D6_ED6_NAF6_MARK, PORT80_FN1),
709 PINMUX_DATA(D7_ED7_NAF7_MARK, PORT81_FN1),
710 PINMUX_DATA(D8_ED8_NAF8_MARK, PORT82_FN1),
711 PINMUX_DATA(D9_ED9_NAF9_MARK, PORT83_FN1),
712 PINMUX_DATA(D10_ED10_NAF10_MARK, PORT84_FN1),
713 PINMUX_DATA(D11_ED11_NAF11_MARK, PORT85_FN1),
714 PINMUX_DATA(D12_ED12_NAF12_MARK, PORT86_FN1),
715 PINMUX_DATA(D13_ED13_NAF13_MARK, PORT87_FN1),
716 PINMUX_DATA(D14_ED14_NAF14_MARK, PORT88_FN1),
717 PINMUX_DATA(D15_ED15_NAF15_MARK, PORT89_FN1),
718 PINMUX_DATA(CS4_MARK, PORT90_FN1),
719 PINMUX_DATA(CS5A_MARK, PORT91_FN1),
720 PINMUX_DATA(FMSICK_MARK, PORT91_FN2),
721 PINMUX_DATA(CS5B_MARK, PORT92_FN1),
722 PINMUX_DATA(FCE1_MARK, PORT92_FN2),
723
724 /* 55-3 (FN) */
725 PINMUX_DATA(CS6B_MARK, PORT93_FN1),
726 PINMUX_DATA(XCS2_MARK, PORT93_FN2),
727 PINMUX_DATA(CS6A_MARK, PORT93_FN3),
728 PINMUX_DATA(DACK0_MARK, PORT93_FN4),
729 PINMUX_DATA(FCE0_MARK, PORT94_FN1),
730 PINMUX_DATA(WAIT_MARK, PORT95_FN1),
731 PINMUX_DATA(DREQ0_MARK, PORT95_FN2),
732 PINMUX_DATA(RD_XRD_MARK, PORT96_FN1),
733 PINMUX_DATA(WE0_XWR0_FWE_MARK, PORT97_FN1),
734 PINMUX_DATA(WE1_XWR1_MARK, PORT98_FN1),
735 PINMUX_DATA(FRB_MARK, PORT99_FN1),
736 PINMUX_DATA(CKO_MARK, PORT100_FN1),
737 PINMUX_DATA(NBRSTOUT_MARK, PORT101_FN1),
738 PINMUX_DATA(NBRST_MARK, PORT102_FN1),
739 PINMUX_DATA(GPS_EPPSIN_MARK, PORT106_FN1),
740 PINMUX_DATA(LATCHPULSE_MARK, PORT110_FN1),
741 PINMUX_DATA(LTESIGNAL_MARK, PORT111_FN1),
742 PINMUX_DATA(LEGACYSTATE_MARK, PORT112_FN1),
743 PINMUX_DATA(TCKON_MARK, PORT118_FN1),
744 PINMUX_DATA(VIO_VD_MARK, PORT128_FN1),
745 PINMUX_DATA(PORT128_KEYOUT0_MARK, PORT128_FN2),
746 PINMUX_DATA(IPORT0_MARK, PORT128_FN3),
747 PINMUX_DATA(VIO_HD_MARK, PORT129_FN1),
748 PINMUX_DATA(PORT129_KEYOUT1_MARK, PORT129_FN2),
749 PINMUX_DATA(IPORT1_MARK, PORT129_FN3),
750 PINMUX_DATA(VIO_D0_MARK, PORT130_FN1),
751 PINMUX_DATA(PORT130_KEYOUT2_MARK, PORT130_FN2),
752 PINMUX_DATA(PORT130_MSIOF2_RXD_MARK, PORT130_FN3),
753 PINMUX_DATA(VIO_D1_MARK, PORT131_FN1),
754 PINMUX_DATA(PORT131_KEYOUT3_MARK, PORT131_FN2),
755 PINMUX_DATA(PORT131_MSIOF2_SS1_MARK, PORT131_FN3),
756 PINMUX_DATA(VIO_D2_MARK, PORT132_FN1),
757 PINMUX_DATA(PORT132_KEYOUT4_MARK, PORT132_FN2),
758 PINMUX_DATA(PORT132_MSIOF2_SS2_MARK, PORT132_FN3),
759 PINMUX_DATA(VIO_D3_MARK, PORT133_FN1),
760 PINMUX_DATA(PORT133_KEYOUT5_MARK, PORT133_FN2),
761 PINMUX_DATA(PORT133_MSIOF2_TSYNC_MARK, PORT133_FN3),
762 PINMUX_DATA(VIO_D4_MARK, PORT134_FN1),
763 PINMUX_DATA(PORT134_KEYIN0_MARK, PORT134_FN2),
764 PINMUX_DATA(PORT134_MSIOF2_TXD_MARK, PORT134_FN3),
765 PINMUX_DATA(VIO_D5_MARK, PORT135_FN1),
766 PINMUX_DATA(PORT135_KEYIN1_MARK, PORT135_FN2),
767 PINMUX_DATA(PORT135_MSIOF2_TSCK_MARK, PORT135_FN3),
768 PINMUX_DATA(VIO_D6_MARK, PORT136_FN1),
769 PINMUX_DATA(PORT136_KEYIN2_MARK, PORT136_FN2),
770 PINMUX_DATA(VIO_D7_MARK, PORT137_FN1),
771 PINMUX_DATA(PORT137_KEYIN3_MARK, PORT137_FN2),
772 PINMUX_DATA(VIO_D8_MARK, PORT138_FN1),
773 PINMUX_DATA(M9_SLCD_A01_MARK, PORT138_FN2),
774 PINMUX_DATA(PORT138_FSIAOMC_MARK, PORT138_FN3),
775 PINMUX_DATA(VIO_D9_MARK, PORT139_FN1),
776 PINMUX_DATA(M10_SLCD_CK1_MARK, PORT139_FN2),
777 PINMUX_DATA(PORT139_FSIAOLR_MARK, PORT139_FN3),
778 PINMUX_DATA(VIO_D10_MARK, PORT140_FN1),
779 PINMUX_DATA(M11_SLCD_SO1_MARK, PORT140_FN2),
780 PINMUX_DATA(TPU0TO2_MARK, PORT140_FN3),
781 PINMUX_DATA(PORT140_FSIAOBT_MARK, PORT140_FN4),
782 PINMUX_DATA(VIO_D11_MARK, PORT141_FN1),
783 PINMUX_DATA(M12_SLCD_CE1_MARK, PORT141_FN2),
784 PINMUX_DATA(TPU0TO3_MARK, PORT141_FN3),
785 PINMUX_DATA(PORT141_FSIAOSLD_MARK, PORT141_FN4),
786 PINMUX_DATA(VIO_D12_MARK, PORT142_FN1),
787 PINMUX_DATA(M13_BSW_MARK, PORT142_FN2),
788 PINMUX_DATA(PORT142_FSIACK_MARK, PORT142_FN3),
789 PINMUX_DATA(VIO_D13_MARK, PORT143_FN1),
790 PINMUX_DATA(M14_GSW_MARK, PORT143_FN2),
791 PINMUX_DATA(PORT143_FSIAILR_MARK, PORT143_FN3),
792 PINMUX_DATA(VIO_D14_MARK, PORT144_FN1),
793 PINMUX_DATA(M15_RSW_MARK, PORT144_FN2),
794 PINMUX_DATA(PORT144_FSIAIBT_MARK, PORT144_FN3),
795 PINMUX_DATA(VIO_D15_MARK, PORT145_FN1),
796 PINMUX_DATA(TPU1TO3_MARK, PORT145_FN2),
797 PINMUX_DATA(PORT145_FSIAISLD_MARK, PORT145_FN3),
798 PINMUX_DATA(VIO_CLK_MARK, PORT146_FN1),
799 PINMUX_DATA(PORT146_KEYIN4_MARK, PORT146_FN2),
800 PINMUX_DATA(IPORT2_MARK, PORT146_FN3),
801 PINMUX_DATA(VIO_FIELD_MARK, PORT147_FN1),
802 PINMUX_DATA(PORT147_KEYIN5_MARK, PORT147_FN2),
803 PINMUX_DATA(VIO_CKO_MARK, PORT148_FN1),
804 PINMUX_DATA(PORT148_KEYIN6_MARK, PORT148_FN2),
805 PINMUX_DATA(A27_MARK, PORT149_FN1),
806 PINMUX_DATA(RDWR_XWE_MARK, PORT149_FN2),
807 PINMUX_DATA(MFG0_IN1_MARK, PORT149_FN3),
808 PINMUX_DATA(MFG0_IN2_MARK, PORT150_FN1),
809 PINMUX_DATA(TS_SPSYNC3_MARK, PORT151_FN1),
810 PINMUX_DATA(MSIOF2_RSCK_MARK, PORT151_FN2),
811 PINMUX_DATA(TS_SDAT3_MARK, PORT152_FN1),
812 PINMUX_DATA(MSIOF2_RSYNC_MARK, PORT152_FN2),
813 PINMUX_DATA(TPU1TO2_MARK, PORT153_FN1),
814 PINMUX_DATA(TS_SDEN3_MARK, PORT153_FN2),
815 PINMUX_DATA(PORT153_MSIOF2_SS1_MARK, PORT153_FN3),
816 PINMUX_DATA(SOUT3_MARK, PORT154_FN1),
817 PINMUX_DATA(SCIFA2_TXD1_MARK, PORT154_FN2),
818 PINMUX_DATA(MSIOF2_MCK0_MARK, PORT154_FN3),
819 PINMUX_DATA(SIN3_MARK, PORT155_FN1),
820 PINMUX_DATA(SCIFA2_RXD1_MARK, PORT155_FN2),
821 PINMUX_DATA(MSIOF2_MCK1_MARK, PORT155_FN3),
822 PINMUX_DATA(XRTS3_MARK, PORT156_FN1),
823 PINMUX_DATA(SCIFA2_RTS1_MARK, PORT156_FN2),
824 PINMUX_DATA(PORT156_MSIOF2_SS2_MARK, PORT156_FN3),
825 PINMUX_DATA(XCTS3_MARK, PORT157_FN1),
826 PINMUX_DATA(SCIFA2_CTS1_MARK, PORT157_FN2),
827 PINMUX_DATA(PORT157_MSIOF2_RXD_MARK, PORT157_FN3),
828
829 /* 55-4 (FN) */
830 PINMUX_DATA(DINT_MARK, PORT158_FN1),
831 PINMUX_DATA(SCIFA2_SCK1_MARK, PORT158_FN2),
832 PINMUX_DATA(TS_SCK3_MARK, PORT158_FN3),
833 PINMUX_DATA(PORT159_SCIFB_SCK_MARK, PORT159_FN1),
834 PINMUX_DATA(PORT159_SCIFA5_SCK_MARK, PORT159_FN2),
835 PINMUX_DATA(NMI_MARK, PORT159_FN3),
836 PINMUX_DATA(PORT160_SCIFB_TXD_MARK, PORT160_FN1),
837 PINMUX_DATA(PORT160_SCIFA5_TXD_MARK, PORT160_FN2),
838 PINMUX_DATA(SOUT0_MARK, PORT160_FN3),
839 PINMUX_DATA(PORT161_SCIFB_CTS_MARK, PORT161_FN1),
840 PINMUX_DATA(PORT161_SCIFA5_CTS_MARK, PORT161_FN2),
841 PINMUX_DATA(XCTS0_MARK, PORT161_FN3),
842 PINMUX_DATA(MFG3_IN2_MARK, PORT161_FN4),
843 PINMUX_DATA(PORT162_SCIFB_RXD_MARK, PORT162_FN1),
844 PINMUX_DATA(PORT162_SCIFA5_RXD_MARK, PORT162_FN2),
845 PINMUX_DATA(SIN0_MARK, PORT162_FN3),
846 PINMUX_DATA(MFG3_IN1_MARK, PORT162_FN4),
847 PINMUX_DATA(PORT163_SCIFB_RTS_MARK, PORT163_FN1),
848 PINMUX_DATA(PORT163_SCIFA5_RTS_MARK, PORT163_FN2),
849 PINMUX_DATA(XRTS0_MARK, PORT163_FN3),
850 PINMUX_DATA(MFG3_OUT1_MARK, PORT163_FN4),
851 PINMUX_DATA(TPU3TO0_MARK, PORT163_FN5),
852 PINMUX_DATA(LCDD0_MARK, PORT192_FN1),
853 PINMUX_DATA(PORT192_KEYOUT0_MARK, PORT192_FN2),
854 PINMUX_DATA(EXT_CKI_MARK, PORT192_FN3),
855 PINMUX_DATA(LCDD1_MARK, PORT193_FN1),
856 PINMUX_DATA(PORT193_KEYOUT1_MARK, PORT193_FN2),
857 PINMUX_DATA(PORT193_SCIFA5_CTS_MARK, PORT193_FN3),
858 PINMUX_DATA(BBIF2_TSYNC1_MARK, PORT193_FN4),
859 PINMUX_DATA(LCDD2_MARK, PORT194_FN1),
860 PINMUX_DATA(PORT194_KEYOUT2_MARK, PORT194_FN2),
861 PINMUX_DATA(PORT194_SCIFA5_RTS_MARK, PORT194_FN3),
862 PINMUX_DATA(BBIF2_TSCK1_MARK, PORT194_FN4),
863 PINMUX_DATA(LCDD3_MARK, PORT195_FN1),
864 PINMUX_DATA(PORT195_KEYOUT3_MARK, PORT195_FN2),
865 PINMUX_DATA(PORT195_SCIFA5_RXD_MARK, PORT195_FN3),
866 PINMUX_DATA(BBIF2_TXD1_MARK, PORT195_FN4),
867 PINMUX_DATA(LCDD4_MARK, PORT196_FN1),
868 PINMUX_DATA(PORT196_KEYOUT4_MARK, PORT196_FN2),
869 PINMUX_DATA(PORT196_SCIFA5_TXD_MARK, PORT196_FN3),
870 PINMUX_DATA(LCDD5_MARK, PORT197_FN1),
871 PINMUX_DATA(PORT197_KEYOUT5_MARK, PORT197_FN2),
872 PINMUX_DATA(PORT197_SCIFA5_SCK_MARK, PORT197_FN3),
873 PINMUX_DATA(MFG2_OUT2_MARK, PORT197_FN4),
874 PINMUX_DATA(LCDD6_MARK, PORT198_FN1),
875 PINMUX_DATA(LCDD7_MARK, PORT199_FN1),
876 PINMUX_DATA(TPU4TO1_MARK, PORT199_FN2),
877 PINMUX_DATA(MFG4_OUT2_MARK, PORT199_FN3),
878 PINMUX_DATA(LCDD8_MARK, PORT200_FN1),
879 PINMUX_DATA(PORT200_KEYIN0_MARK, PORT200_FN2),
880 PINMUX_DATA(VIO_DR0_MARK, PORT200_FN3),
881 PINMUX_DATA(D16_MARK, PORT200_FN4),
882 PINMUX_DATA(LCDD9_MARK, PORT201_FN1),
883 PINMUX_DATA(PORT201_KEYIN1_MARK, PORT201_FN2),
884 PINMUX_DATA(VIO_DR1_MARK, PORT201_FN3),
885 PINMUX_DATA(D17_MARK, PORT201_FN4),
886 PINMUX_DATA(LCDD10_MARK, PORT202_FN1),
887 PINMUX_DATA(PORT202_KEYIN2_MARK, PORT202_FN2),
888 PINMUX_DATA(VIO_DR2_MARK, PORT202_FN3),
889 PINMUX_DATA(D18_MARK, PORT202_FN4),
890 PINMUX_DATA(LCDD11_MARK, PORT203_FN1),
891 PINMUX_DATA(PORT203_KEYIN3_MARK, PORT203_FN2),
892 PINMUX_DATA(VIO_DR3_MARK, PORT203_FN3),
893 PINMUX_DATA(D19_MARK, PORT203_FN4),
894 PINMUX_DATA(LCDD12_MARK, PORT204_FN1),
895 PINMUX_DATA(PORT204_KEYIN4_MARK, PORT204_FN2),
896 PINMUX_DATA(VIO_DR4_MARK, PORT204_FN3),
897 PINMUX_DATA(D20_MARK, PORT204_FN4),
898 PINMUX_DATA(LCDD13_MARK, PORT205_FN1),
899 PINMUX_DATA(PORT205_KEYIN5_MARK, PORT205_FN2),
900 PINMUX_DATA(VIO_DR5_MARK, PORT205_FN3),
901 PINMUX_DATA(D21_MARK, PORT205_FN4),
902 PINMUX_DATA(LCDD14_MARK, PORT206_FN1),
903 PINMUX_DATA(PORT206_KEYIN6_MARK, PORT206_FN2),
904 PINMUX_DATA(VIO_DR6_MARK, PORT206_FN3),
905 PINMUX_DATA(D22_MARK, PORT206_FN4),
906 PINMUX_DATA(LCDD15_MARK, PORT207_FN1),
907 PINMUX_DATA(PORT207_MSIOF0L_SS1_MARK, PORT207_FN2),
908 PINMUX_DATA(PORT207_KEYOUT0_MARK, PORT207_FN3),
909 PINMUX_DATA(VIO_DR7_MARK, PORT207_FN4),
910 PINMUX_DATA(D23_MARK, PORT207_FN5),
911 PINMUX_DATA(LCDD16_MARK, PORT208_FN1),
912 PINMUX_DATA(PORT208_MSIOF0L_SS2_MARK, PORT208_FN2),
913 PINMUX_DATA(PORT208_KEYOUT1_MARK, PORT208_FN3),
914 PINMUX_DATA(VIO_VDR_MARK, PORT208_FN4),
915 PINMUX_DATA(D24_MARK, PORT208_FN5),
916 PINMUX_DATA(LCDD17_MARK, PORT209_FN1),
917 PINMUX_DATA(PORT209_KEYOUT2_MARK, PORT209_FN2),
918 PINMUX_DATA(VIO_HDR_MARK, PORT209_FN3),
919 PINMUX_DATA(D25_MARK, PORT209_FN4),
920 PINMUX_DATA(LCDD18_MARK, PORT210_FN1),
921 PINMUX_DATA(DREQ2_MARK, PORT210_FN2),
922 PINMUX_DATA(PORT210_MSIOF0L_SS1_MARK, PORT210_FN3),
923 PINMUX_DATA(D26_MARK, PORT210_FN4),
924 PINMUX_DATA(LCDD19_MARK, PORT211_FN1),
925 PINMUX_DATA(PORT211_MSIOF0L_SS2_MARK, PORT211_FN2),
926 PINMUX_DATA(D27_MARK, PORT211_FN3),
927 PINMUX_DATA(LCDD20_MARK, PORT212_FN1),
928 PINMUX_DATA(TS_SPSYNC1_MARK, PORT212_FN2),
929 PINMUX_DATA(MSIOF0L_MCK0_MARK, PORT212_FN3),
930 PINMUX_DATA(D28_MARK, PORT212_FN4),
931 PINMUX_DATA(LCDD21_MARK, PORT213_FN1),
932 PINMUX_DATA(TS_SDAT1_MARK, PORT213_FN2),
933 PINMUX_DATA(MSIOF0L_MCK1_MARK, PORT213_FN3),
934 PINMUX_DATA(D29_MARK, PORT213_FN4),
935 PINMUX_DATA(LCDD22_MARK, PORT214_FN1),
936 PINMUX_DATA(TS_SDEN1_MARK, PORT214_FN2),
937 PINMUX_DATA(MSIOF0L_RSCK_MARK, PORT214_FN3),
938 PINMUX_DATA(D30_MARK, PORT214_FN4),
939 PINMUX_DATA(LCDD23_MARK, PORT215_FN1),
940 PINMUX_DATA(TS_SCK1_MARK, PORT215_FN2),
941 PINMUX_DATA(MSIOF0L_RSYNC_MARK, PORT215_FN3),
942 PINMUX_DATA(D31_MARK, PORT215_FN4),
943 PINMUX_DATA(LCDDCK_MARK, PORT216_FN1),
944 PINMUX_DATA(LCDWR_MARK, PORT216_FN2),
945 PINMUX_DATA(PORT216_KEYOUT3_MARK, PORT216_FN3),
946 PINMUX_DATA(VIO_CLKR_MARK, PORT216_FN4),
947 PINMUX_DATA(LCDRD_MARK, PORT217_FN1),
948 PINMUX_DATA(DACK2_MARK, PORT217_FN2),
949 PINMUX_DATA(MSIOF0L_TSYNC_MARK, PORT217_FN3),
950 PINMUX_DATA(LCDHSYN_MARK, PORT218_FN1),
951 PINMUX_DATA(LCDCS_MARK, PORT218_FN2),
952 PINMUX_DATA(LCDCS2_MARK, PORT218_FN3),
953 PINMUX_DATA(DACK3_MARK, PORT218_FN4),
954 PINMUX_DATA(PORT218_VIO_CKOR_MARK, PORT218_FN5),
955 PINMUX_DATA(PORT218_KEYOUT4_MARK, PORT218_FN6),
956 PINMUX_DATA(LCDDISP_MARK, PORT219_FN1),
957 PINMUX_DATA(LCDRS_MARK, PORT219_FN2),
958 PINMUX_DATA(DREQ3_MARK, PORT219_FN3),
959 PINMUX_DATA(MSIOF0L_TSCK_MARK, PORT219_FN4),
960 PINMUX_DATA(LCDVSYN_MARK, PORT220_FN1),
961 PINMUX_DATA(LCDVSYN2_MARK, PORT220_FN2),
962 PINMUX_DATA(PORT220_KEYOUT5_MARK, PORT220_FN3),
963 PINMUX_DATA(LCDLCLK_MARK, PORT221_FN1),
964 PINMUX_DATA(DREQ1_MARK, PORT221_FN2),
965 PINMUX_DATA(PWEN_MARK, PORT221_FN3),
966 PINMUX_DATA(MSIOF0L_RXD_MARK, PORT221_FN4),
967 PINMUX_DATA(LCDDON_MARK, PORT222_FN1),
968 PINMUX_DATA(LCDDON2_MARK, PORT222_FN2),
969 PINMUX_DATA(DACK1_MARK, PORT222_FN3),
970 PINMUX_DATA(OVCN_MARK, PORT222_FN4),
971 PINMUX_DATA(MSIOF0L_TXD_MARK, PORT222_FN5),
972 PINMUX_DATA(SCIFA1_TXD_MARK, PORT225_FN1),
973 PINMUX_DATA(OVCN2_MARK, PORT225_FN2),
974 PINMUX_DATA(EXTLP_MARK, PORT226_FN1),
975 PINMUX_DATA(SCIFA1_SCK_MARK, PORT226_FN2),
976 PINMUX_DATA(USBTERM_MARK, PORT226_FN3),
977 PINMUX_DATA(PORT226_VIO_CKO2_MARK, PORT226_FN4),
978 PINMUX_DATA(SCIFA1_RTS_MARK, PORT227_FN1),
979 PINMUX_DATA(IDIN_MARK, PORT227_FN2),
980 PINMUX_DATA(SCIFA1_RXD_MARK, PORT228_FN1),
981 PINMUX_DATA(SCIFA1_CTS_MARK, PORT229_FN1),
982 PINMUX_DATA(MFG1_IN1_MARK, PORT229_FN2),
983 PINMUX_DATA(MSIOF1_TXD_MARK, PORT230_FN1),
984 PINMUX_DATA(SCIFA2_TXD2_MARK, PORT230_FN2),
985 PINMUX_DATA(PORT230_FSIAOMC_MARK, PORT230_FN3),
986 PINMUX_DATA(MSIOF1_TSYNC_MARK, PORT231_FN1),
987 PINMUX_DATA(SCIFA2_CTS2_MARK, PORT231_FN2),
988 PINMUX_DATA(PORT231_FSIAOLR_MARK, PORT231_FN3),
989 PINMUX_DATA(MSIOF1_TSCK_MARK, PORT232_FN1),
990 PINMUX_DATA(SCIFA2_SCK2_MARK, PORT232_FN2),
991 PINMUX_DATA(PORT232_FSIAOBT_MARK, PORT232_FN3),
992 PINMUX_DATA(MSIOF1_RXD_MARK, PORT233_FN1),
993 PINMUX_DATA(SCIFA2_RXD2_MARK, PORT233_FN2),
994 PINMUX_DATA(GPS_VCOTRIG_MARK, PORT233_FN3),
995 PINMUX_DATA(PORT233_FSIACK_MARK, PORT233_FN4),
996 PINMUX_DATA(MSIOF1_RSCK_MARK, PORT234_FN1),
997 PINMUX_DATA(SCIFA2_RTS2_MARK, PORT234_FN2),
998 PINMUX_DATA(PORT234_FSIAOSLD_MARK, PORT234_FN3),
999 PINMUX_DATA(MSIOF1_RSYNC_MARK, PORT235_FN1),
1000 PINMUX_DATA(OPORT0_MARK, PORT235_FN2),
1001 PINMUX_DATA(MFG1_IN2_MARK, PORT235_FN3),
1002 PINMUX_DATA(PORT235_FSIAILR_MARK, PORT235_FN4),
1003 PINMUX_DATA(MSIOF1_MCK0_MARK, PORT236_FN1),
1004 PINMUX_DATA(I2C_SDA2_MARK, PORT236_FN2),
1005 PINMUX_DATA(PORT236_FSIAIBT_MARK, PORT236_FN3),
1006 PINMUX_DATA(MSIOF1_MCK1_MARK, PORT237_FN1),
1007 PINMUX_DATA(I2C_SCL2_MARK, PORT237_FN2),
1008 PINMUX_DATA(PORT237_FSIAISLD_MARK, PORT237_FN3),
1009 PINMUX_DATA(MSIOF1_SS1_MARK, PORT238_FN1),
1010 PINMUX_DATA(EDBGREQ3_MARK, PORT238_FN2),
1011
1012 /* 55-5 (FN) */
1013 PINMUX_DATA(MSIOF1_SS2_MARK, PORT239_FN1),
1014 PINMUX_DATA(SCIFA6_TXD_MARK, PORT240_FN1),
1015 PINMUX_DATA(PORT241_IRDA_OUT_MARK, PORT241_FN1),
1016 PINMUX_DATA(PORT241_IROUT_MARK, PORT241_FN2),
1017 PINMUX_DATA(MFG4_OUT1_MARK, PORT241_FN3),
1018 PINMUX_DATA(TPU4TO0_MARK, PORT241_FN4),
1019 PINMUX_DATA(PORT242_IRDA_IN_MARK, PORT242_FN1),
1020 PINMUX_DATA(MFG4_IN2_MARK, PORT242_FN2),
1021 PINMUX_DATA(PORT243_IRDA_FIRSEL_MARK, PORT243_FN1),
1022 PINMUX_DATA(PORT243_VIO_CKO2_MARK, PORT243_FN2),
1023 PINMUX_DATA(PORT244_SCIFA5_CTS_MARK, PORT244_FN1),
1024 PINMUX_DATA(MFG2_IN1_MARK, PORT244_FN2),
1025 PINMUX_DATA(PORT244_SCIFB_CTS_MARK, PORT244_FN3),
1026 PINMUX_DATA(PORT245_SCIFA5_RTS_MARK, PORT245_FN1),
1027 PINMUX_DATA(MFG2_IN2_MARK, PORT245_FN2),
1028 PINMUX_DATA(PORT245_SCIFB_RTS_MARK, PORT245_FN3),
1029 PINMUX_DATA(PORT246_SCIFA5_RXD_MARK, PORT246_FN1),
1030 PINMUX_DATA(MFG1_OUT1_MARK, PORT246_FN2),
1031 PINMUX_DATA(PORT246_SCIFB_RXD_MARK, PORT246_FN3),
1032 PINMUX_DATA(TPU1TO0_MARK, PORT246_FN4),
1033 PINMUX_DATA(PORT247_SCIFA5_TXD_MARK, PORT247_FN1),
1034 PINMUX_DATA(MFG3_OUT2_MARK, PORT247_FN2),
1035 PINMUX_DATA(PORT247_SCIFB_TXD_MARK, PORT247_FN3),
1036 PINMUX_DATA(TPU3TO1_MARK, PORT247_FN4),
1037 PINMUX_DATA(PORT248_SCIFA5_SCK_MARK, PORT248_FN1),
1038 PINMUX_DATA(MFG2_OUT1_MARK, PORT248_FN2),
1039 PINMUX_DATA(PORT248_SCIFB_SCK_MARK, PORT248_FN3),
1040 PINMUX_DATA(TPU2TO0_MARK, PORT248_FN4),
1041 PINMUX_DATA(PORT249_IROUT_MARK, PORT249_FN1),
1042 PINMUX_DATA(MFG4_IN1_MARK, PORT249_FN2),
1043 PINMUX_DATA(SDHICLK0_MARK, PORT250_FN1),
1044 PINMUX_DATA(TCK2_SWCLK_MC0_MARK, PORT250_FN2),
1045 PINMUX_DATA(SDHICD0_MARK, PORT251_FN1),
1046 PINMUX_DATA(SDHID0_0_MARK, PORT252_FN1),
1047 PINMUX_DATA(TMS2_SWDIO_MC0_MARK, PORT252_FN2),
1048 PINMUX_DATA(SDHID0_1_MARK, PORT253_FN1),
1049 PINMUX_DATA(TDO2_SWO0_MC0_MARK, PORT253_FN2),
1050 PINMUX_DATA(SDHID0_2_MARK, PORT254_FN1),
1051 PINMUX_DATA(TDI2_MARK, PORT254_FN2),
1052 PINMUX_DATA(SDHID0_3_MARK, PORT255_FN1),
1053 PINMUX_DATA(RTCK2_SWO1_MC0_MARK, PORT255_FN2),
1054 PINMUX_DATA(SDHICMD0_MARK, PORT256_FN1),
1055 PINMUX_DATA(TRST2_MARK, PORT256_FN2),
1056 PINMUX_DATA(SDHIWP0_MARK, PORT257_FN1),
1057 PINMUX_DATA(EDBGREQ2_MARK, PORT257_FN2),
1058 PINMUX_DATA(SDHICLK1_MARK, PORT258_FN1),
1059 PINMUX_DATA(TCK3_SWCLK_MC1_MARK, PORT258_FN2),
1060 PINMUX_DATA(SDHID1_0_MARK, PORT259_FN1),
1061 PINMUX_DATA(M11_SLCD_SO2_MARK, PORT259_FN2),
1062 PINMUX_DATA(TS_SPSYNC2_MARK, PORT259_FN3),
1063 PINMUX_DATA(TMS3_SWDIO_MC1_MARK, PORT259_FN4),
1064 PINMUX_DATA(SDHID1_1_MARK, PORT260_FN1),
1065 PINMUX_DATA(M9_SLCD_A02_MARK, PORT260_FN2),
1066 PINMUX_DATA(TS_SDAT2_MARK, PORT260_FN3),
1067 PINMUX_DATA(TDO3_SWO0_MC1_MARK, PORT260_FN4),
1068 PINMUX_DATA(SDHID1_2_MARK, PORT261_FN1),
1069 PINMUX_DATA(M10_SLCD_CK2_MARK, PORT261_FN2),
1070 PINMUX_DATA(TS_SDEN2_MARK, PORT261_FN3),
1071 PINMUX_DATA(TDI3_MARK, PORT261_FN4),
1072 PINMUX_DATA(SDHID1_3_MARK, PORT262_FN1),
1073 PINMUX_DATA(M12_SLCD_CE2_MARK, PORT262_FN2),
1074 PINMUX_DATA(TS_SCK2_MARK, PORT262_FN3),
1075 PINMUX_DATA(RTCK3_SWO1_MC1_MARK, PORT262_FN4),
1076 PINMUX_DATA(SDHICMD1_MARK, PORT263_FN1),
1077 PINMUX_DATA(TRST3_MARK, PORT263_FN2),
1078 PINMUX_DATA(RESETOUTS_MARK, PORT264_FN1),
1079};
1080
1081#define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA)
1082#define GPIO_PORT_265() _265(_GPIO_PORT, , unused)
1083#define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK)
1084
1085static struct pinmux_gpio pinmux_gpios[] = {
1086 /* 55-1 -> 55-5 (GPIO) */
1087 GPIO_PORT_265(),
1088
1089 /* Special Pull-up / Pull-down Functions */
1090 GPIO_FN(PORT66_KEYIN0_PU), GPIO_FN(PORT67_KEYIN1_PU),
1091 GPIO_FN(PORT68_KEYIN2_PU), GPIO_FN(PORT69_KEYIN3_PU),
1092 GPIO_FN(PORT70_KEYIN4_PU), GPIO_FN(PORT71_KEYIN5_PU),
1093 GPIO_FN(PORT72_KEYIN6_PU),
1094
1095 /* 55-1 (FN) */
1096 GPIO_FN(VBUS_0),
1097 GPIO_FN(CPORT0),
1098 GPIO_FN(CPORT1),
1099 GPIO_FN(CPORT2),
1100 GPIO_FN(CPORT3),
1101 GPIO_FN(CPORT4),
1102 GPIO_FN(CPORT5),
1103 GPIO_FN(CPORT6),
1104 GPIO_FN(CPORT7),
1105 GPIO_FN(CPORT8),
1106 GPIO_FN(CPORT9),
1107 GPIO_FN(CPORT10),
1108 GPIO_FN(CPORT11), GPIO_FN(SIN2),
1109 GPIO_FN(CPORT12), GPIO_FN(XCTS2),
1110 GPIO_FN(CPORT13), GPIO_FN(RFSPO4),
1111 GPIO_FN(CPORT14), GPIO_FN(RFSPO5),
1112 GPIO_FN(CPORT15), GPIO_FN(SCIFA0_SCK), GPIO_FN(GPS_AGC2),
1113 GPIO_FN(CPORT16), GPIO_FN(SCIFA0_TXD), GPIO_FN(GPS_AGC3),
1114 GPIO_FN(CPORT17_IC_OE), GPIO_FN(SOUT2),
1115 GPIO_FN(CPORT18), GPIO_FN(XRTS2), GPIO_FN(PORT19_VIO_CKO2),
1116 GPIO_FN(CPORT19_MPORT1),
1117 GPIO_FN(CPORT20), GPIO_FN(RFSPO6),
1118 GPIO_FN(CPORT21), GPIO_FN(STATUS0),
1119 GPIO_FN(CPORT22), GPIO_FN(STATUS1),
1120 GPIO_FN(CPORT23), GPIO_FN(STATUS2), GPIO_FN(RFSPO7),
1121 GPIO_FN(B_SYNLD1),
1122 GPIO_FN(B_SYNLD2), GPIO_FN(SYSENMSK),
1123 GPIO_FN(XMAINPS),
1124 GPIO_FN(XDIVPS),
1125 GPIO_FN(XIDRST),
1126 GPIO_FN(IDCLK), GPIO_FN(IC_DP),
1127 GPIO_FN(IDIO), GPIO_FN(IC_DM),
1128 GPIO_FN(SOUT1), GPIO_FN(SCIFA4_TXD), GPIO_FN(M02_BERDAT),
1129 GPIO_FN(SIN1), GPIO_FN(SCIFA4_RXD), GPIO_FN(XWUP),
1130 GPIO_FN(XRTS1), GPIO_FN(SCIFA4_RTS), GPIO_FN(M03_BERCLK),
1131 GPIO_FN(XCTS1), GPIO_FN(SCIFA4_CTS),
1132 GPIO_FN(PCMCLKO),
1133 GPIO_FN(SYNC8KO),
1134
1135 /* 55-2 (FN) */
1136 GPIO_FN(DNPCM_A),
1137 GPIO_FN(UPPCM_A),
1138 GPIO_FN(VACK),
1139 GPIO_FN(XTALB1L),
1140 GPIO_FN(GPS_AGC1), GPIO_FN(SCIFA0_RTS),
1141 GPIO_FN(GPS_AGC4), GPIO_FN(SCIFA0_RXD),
1142 GPIO_FN(GPS_PWRDOWN), GPIO_FN(SCIFA0_CTS),
1143 GPIO_FN(GPS_IM),
1144 GPIO_FN(GPS_IS),
1145 GPIO_FN(GPS_QM),
1146 GPIO_FN(GPS_QS),
1147 GPIO_FN(FMSOCK), GPIO_FN(PORT49_IRDA_OUT), GPIO_FN(PORT49_IROUT),
1148 GPIO_FN(FMSOOLR), GPIO_FN(BBIF2_TSYNC2), GPIO_FN(TPU2TO2),
1149 GPIO_FN(IPORT3), GPIO_FN(FMSIOLR),
1150 GPIO_FN(FMSOOBT), GPIO_FN(BBIF2_TSCK2), GPIO_FN(TPU2TO3),
1151 GPIO_FN(OPORT1), GPIO_FN(FMSIOBT),
1152 GPIO_FN(FMSOSLD), GPIO_FN(BBIF2_TXD2), GPIO_FN(OPORT2),
1153 GPIO_FN(FMSOILR), GPIO_FN(PORT53_IRDA_IN), GPIO_FN(TPU3TO3),
1154 GPIO_FN(OPORT3), GPIO_FN(FMSIILR),
1155 GPIO_FN(FMSOIBT), GPIO_FN(PORT54_IRDA_FIRSEL), GPIO_FN(TPU3TO2),
1156 GPIO_FN(FMSIIBT),
1157 GPIO_FN(FMSISLD), GPIO_FN(MFG0_OUT1), GPIO_FN(TPU0TO0),
1158 GPIO_FN(A0_EA0), GPIO_FN(BS),
1159 GPIO_FN(A12_EA12), GPIO_FN(PORT58_VIO_CKOR), GPIO_FN(TPU4TO2),
1160 GPIO_FN(A13_EA13), GPIO_FN(PORT59_IROUT), GPIO_FN(MFG0_OUT2),
1161 GPIO_FN(TPU0TO1),
1162 GPIO_FN(A14_EA14), GPIO_FN(PORT60_KEYOUT5),
1163 GPIO_FN(A15_EA15), GPIO_FN(PORT61_KEYOUT4),
1164 GPIO_FN(A16_EA16), GPIO_FN(PORT62_KEYOUT3), GPIO_FN(MSIOF0_SS1),
1165 GPIO_FN(A17_EA17), GPIO_FN(PORT63_KEYOUT2), GPIO_FN(MSIOF0_TSYNC),
1166 GPIO_FN(A18_EA18), GPIO_FN(PORT64_KEYOUT1), GPIO_FN(MSIOF0_TSCK),
1167 GPIO_FN(A19_EA19), GPIO_FN(PORT65_KEYOUT0), GPIO_FN(MSIOF0_TXD),
1168 GPIO_FN(A20_EA20), GPIO_FN(PORT66_KEYIN0), GPIO_FN(MSIOF0_RSCK),
1169 GPIO_FN(A21_EA21), GPIO_FN(PORT67_KEYIN1), GPIO_FN(MSIOF0_RSYNC),
1170 GPIO_FN(A22_EA22), GPIO_FN(PORT68_KEYIN2), GPIO_FN(MSIOF0_MCK0),
1171 GPIO_FN(A23_EA23), GPIO_FN(PORT69_KEYIN3), GPIO_FN(MSIOF0_MCK1),
1172 GPIO_FN(A24_EA24), GPIO_FN(PORT70_KEYIN4), GPIO_FN(MSIOF0_RXD),
1173 GPIO_FN(A25_EA25), GPIO_FN(PORT71_KEYIN5), GPIO_FN(MSIOF0_SS2),
1174 GPIO_FN(A26), GPIO_FN(PORT72_KEYIN6),
1175 GPIO_FN(D0_ED0_NAF0),
1176 GPIO_FN(D1_ED1_NAF1),
1177 GPIO_FN(D2_ED2_NAF2),
1178 GPIO_FN(D3_ED3_NAF3),
1179 GPIO_FN(D4_ED4_NAF4),
1180 GPIO_FN(D5_ED5_NAF5),
1181 GPIO_FN(D6_ED6_NAF6),
1182 GPIO_FN(D7_ED7_NAF7),
1183 GPIO_FN(D8_ED8_NAF8),
1184 GPIO_FN(D9_ED9_NAF9),
1185 GPIO_FN(D10_ED10_NAF10),
1186 GPIO_FN(D11_ED11_NAF11),
1187 GPIO_FN(D12_ED12_NAF12),
1188 GPIO_FN(D13_ED13_NAF13),
1189 GPIO_FN(D14_ED14_NAF14),
1190 GPIO_FN(D15_ED15_NAF15),
1191 GPIO_FN(CS4),
1192 GPIO_FN(CS5A), GPIO_FN(FMSICK),
1193
1194 /* 55-3 (FN) */
1195 GPIO_FN(CS5B), GPIO_FN(FCE1),
1196 GPIO_FN(CS6B), GPIO_FN(XCS2), GPIO_FN(CS6A), GPIO_FN(DACK0),
1197 GPIO_FN(FCE0),
1198 GPIO_FN(WAIT), GPIO_FN(DREQ0),
1199 GPIO_FN(RD_XRD),
1200 GPIO_FN(WE0_XWR0_FWE),
1201 GPIO_FN(WE1_XWR1),
1202 GPIO_FN(FRB),
1203 GPIO_FN(CKO),
1204 GPIO_FN(NBRSTOUT),
1205 GPIO_FN(NBRST),
1206 GPIO_FN(GPS_EPPSIN),
1207 GPIO_FN(LATCHPULSE),
1208 GPIO_FN(LTESIGNAL),
1209 GPIO_FN(LEGACYSTATE),
1210 GPIO_FN(TCKON),
1211 GPIO_FN(VIO_VD), GPIO_FN(PORT128_KEYOUT0), GPIO_FN(IPORT0),
1212 GPIO_FN(VIO_HD), GPIO_FN(PORT129_KEYOUT1), GPIO_FN(IPORT1),
1213 GPIO_FN(VIO_D0), GPIO_FN(PORT130_KEYOUT2), GPIO_FN(PORT130_MSIOF2_RXD),
1214 GPIO_FN(VIO_D1), GPIO_FN(PORT131_KEYOUT3), GPIO_FN(PORT131_MSIOF2_SS1),
1215 GPIO_FN(VIO_D2), GPIO_FN(PORT132_KEYOUT4), GPIO_FN(PORT132_MSIOF2_SS2),
1216 GPIO_FN(VIO_D3), GPIO_FN(PORT133_KEYOUT5),
1217 GPIO_FN(PORT133_MSIOF2_TSYNC),
1218 GPIO_FN(VIO_D4), GPIO_FN(PORT134_KEYIN0), GPIO_FN(PORT134_MSIOF2_TXD),
1219 GPIO_FN(VIO_D5), GPIO_FN(PORT135_KEYIN1), GPIO_FN(PORT135_MSIOF2_TSCK),
1220 GPIO_FN(VIO_D6), GPIO_FN(PORT136_KEYIN2),
1221 GPIO_FN(VIO_D7), GPIO_FN(PORT137_KEYIN3),
1222 GPIO_FN(VIO_D8), GPIO_FN(M9_SLCD_A01), GPIO_FN(PORT138_FSIAOMC),
1223 GPIO_FN(VIO_D9), GPIO_FN(M10_SLCD_CK1), GPIO_FN(PORT139_FSIAOLR),
1224 GPIO_FN(VIO_D10), GPIO_FN(M11_SLCD_SO1), GPIO_FN(TPU0TO2),
1225 GPIO_FN(PORT140_FSIAOBT),
1226 GPIO_FN(VIO_D11), GPIO_FN(M12_SLCD_CE1), GPIO_FN(TPU0TO3),
1227 GPIO_FN(PORT141_FSIAOSLD),
1228 GPIO_FN(VIO_D12), GPIO_FN(M13_BSW), GPIO_FN(PORT142_FSIACK),
1229 GPIO_FN(VIO_D13), GPIO_FN(M14_GSW), GPIO_FN(PORT143_FSIAILR),
1230 GPIO_FN(VIO_D14), GPIO_FN(M15_RSW), GPIO_FN(PORT144_FSIAIBT),
1231 GPIO_FN(VIO_D15), GPIO_FN(TPU1TO3), GPIO_FN(PORT145_FSIAISLD),
1232 GPIO_FN(VIO_CLK), GPIO_FN(PORT146_KEYIN4), GPIO_FN(IPORT2),
1233 GPIO_FN(VIO_FIELD), GPIO_FN(PORT147_KEYIN5),
1234 GPIO_FN(VIO_CKO), GPIO_FN(PORT148_KEYIN6),
1235 GPIO_FN(A27), GPIO_FN(RDWR_XWE), GPIO_FN(MFG0_IN1),
1236 GPIO_FN(MFG0_IN2),
1237 GPIO_FN(TS_SPSYNC3), GPIO_FN(MSIOF2_RSCK),
1238 GPIO_FN(TS_SDAT3), GPIO_FN(MSIOF2_RSYNC),
1239 GPIO_FN(TPU1TO2), GPIO_FN(TS_SDEN3), GPIO_FN(PORT153_MSIOF2_SS1),
1240 GPIO_FN(SOUT3), GPIO_FN(SCIFA2_TXD1), GPIO_FN(MSIOF2_MCK0),
1241 GPIO_FN(SIN3), GPIO_FN(SCIFA2_RXD1), GPIO_FN(MSIOF2_MCK1),
1242 GPIO_FN(XRTS3), GPIO_FN(SCIFA2_RTS1), GPIO_FN(PORT156_MSIOF2_SS2),
1243 GPIO_FN(XCTS3), GPIO_FN(SCIFA2_CTS1), GPIO_FN(PORT157_MSIOF2_RXD),
1244
1245 /* 55-4 (FN) */
1246 GPIO_FN(DINT), GPIO_FN(SCIFA2_SCK1), GPIO_FN(TS_SCK3),
1247 GPIO_FN(PORT159_SCIFB_SCK), GPIO_FN(PORT159_SCIFA5_SCK), GPIO_FN(NMI),
1248 GPIO_FN(PORT160_SCIFB_TXD), GPIO_FN(PORT160_SCIFA5_TXD), GPIO_FN(SOUT0),
1249 GPIO_FN(PORT161_SCIFB_CTS), GPIO_FN(PORT161_SCIFA5_CTS), GPIO_FN(XCTS0),
1250 GPIO_FN(MFG3_IN2),
1251 GPIO_FN(PORT162_SCIFB_RXD), GPIO_FN(PORT162_SCIFA5_RXD), GPIO_FN(SIN0),
1252 GPIO_FN(MFG3_IN1),
1253 GPIO_FN(PORT163_SCIFB_RTS), GPIO_FN(PORT163_SCIFA5_RTS), GPIO_FN(XRTS0),
1254 GPIO_FN(MFG3_OUT1), GPIO_FN(TPU3TO0),
1255 GPIO_FN(LCDD0), GPIO_FN(PORT192_KEYOUT0), GPIO_FN(EXT_CKI),
1256 GPIO_FN(LCDD1), GPIO_FN(PORT193_KEYOUT1), GPIO_FN(PORT193_SCIFA5_CTS),
1257 GPIO_FN(BBIF2_TSYNC1),
1258 GPIO_FN(LCDD2), GPIO_FN(PORT194_KEYOUT2), GPIO_FN(PORT194_SCIFA5_RTS),
1259 GPIO_FN(BBIF2_TSCK1),
1260 GPIO_FN(LCDD3), GPIO_FN(PORT195_KEYOUT3), GPIO_FN(PORT195_SCIFA5_RXD),
1261 GPIO_FN(BBIF2_TXD1),
1262 GPIO_FN(LCDD4), GPIO_FN(PORT196_KEYOUT4), GPIO_FN(PORT196_SCIFA5_TXD),
1263 GPIO_FN(LCDD5), GPIO_FN(PORT197_KEYOUT5), GPIO_FN(PORT197_SCIFA5_SCK),
1264 GPIO_FN(MFG2_OUT2),
1265 GPIO_FN(LCDD6),
1266 GPIO_FN(LCDD7), GPIO_FN(TPU4TO1), GPIO_FN(MFG4_OUT2),
1267 GPIO_FN(LCDD8), GPIO_FN(PORT200_KEYIN0), GPIO_FN(VIO_DR0),
1268 GPIO_FN(D16),
1269 GPIO_FN(LCDD9), GPIO_FN(PORT201_KEYIN1), GPIO_FN(VIO_DR1),
1270 GPIO_FN(D17),
1271 GPIO_FN(LCDD10), GPIO_FN(PORT202_KEYIN2), GPIO_FN(VIO_DR2),
1272 GPIO_FN(D18),
1273 GPIO_FN(LCDD11), GPIO_FN(PORT203_KEYIN3), GPIO_FN(VIO_DR3),
1274 GPIO_FN(D19),
1275 GPIO_FN(LCDD12), GPIO_FN(PORT204_KEYIN4), GPIO_FN(VIO_DR4),
1276 GPIO_FN(D20),
1277 GPIO_FN(LCDD13), GPIO_FN(PORT205_KEYIN5), GPIO_FN(VIO_DR5),
1278 GPIO_FN(D21),
1279 GPIO_FN(LCDD14), GPIO_FN(PORT206_KEYIN6), GPIO_FN(VIO_DR6),
1280 GPIO_FN(D22),
1281 GPIO_FN(LCDD15), GPIO_FN(PORT207_MSIOF0L_SS1), GPIO_FN(PORT207_KEYOUT0),
1282 GPIO_FN(VIO_DR7), GPIO_FN(D23),
1283 GPIO_FN(LCDD16), GPIO_FN(PORT208_MSIOF0L_SS2), GPIO_FN(PORT208_KEYOUT1),
1284 GPIO_FN(VIO_VDR), GPIO_FN(D24),
1285 GPIO_FN(LCDD17), GPIO_FN(PORT209_KEYOUT2), GPIO_FN(VIO_HDR),
1286 GPIO_FN(D25),
1287 GPIO_FN(LCDD18), GPIO_FN(DREQ2), GPIO_FN(PORT210_MSIOF0L_SS1),
1288 GPIO_FN(D26),
1289 GPIO_FN(LCDD19), GPIO_FN(PORT211_MSIOF0L_SS2), GPIO_FN(D27),
1290 GPIO_FN(LCDD20), GPIO_FN(TS_SPSYNC1), GPIO_FN(MSIOF0L_MCK0),
1291 GPIO_FN(D28),
1292 GPIO_FN(LCDD21), GPIO_FN(TS_SDAT1), GPIO_FN(MSIOF0L_MCK1),
1293 GPIO_FN(D29),
1294 GPIO_FN(LCDD22), GPIO_FN(TS_SDEN1), GPIO_FN(MSIOF0L_RSCK),
1295 GPIO_FN(D30),
1296 GPIO_FN(LCDD23), GPIO_FN(TS_SCK1), GPIO_FN(MSIOF0L_RSYNC),
1297 GPIO_FN(D31),
1298 GPIO_FN(LCDDCK), GPIO_FN(LCDWR), GPIO_FN(PORT216_KEYOUT3),
1299 GPIO_FN(VIO_CLKR),
1300 GPIO_FN(LCDRD), GPIO_FN(DACK2), GPIO_FN(MSIOF0L_TSYNC),
1301 GPIO_FN(LCDHSYN), GPIO_FN(LCDCS), GPIO_FN(LCDCS2), GPIO_FN(DACK3),
1302 GPIO_FN(PORT218_VIO_CKOR), GPIO_FN(PORT218_KEYOUT4),
1303 GPIO_FN(LCDDISP), GPIO_FN(LCDRS), GPIO_FN(DREQ3), GPIO_FN(MSIOF0L_TSCK),
1304 GPIO_FN(LCDVSYN), GPIO_FN(LCDVSYN2), GPIO_FN(PORT220_KEYOUT5),
1305 GPIO_FN(LCDLCLK), GPIO_FN(DREQ1), GPIO_FN(PWEN), GPIO_FN(MSIOF0L_RXD),
1306 GPIO_FN(LCDDON), GPIO_FN(LCDDON2), GPIO_FN(DACK1), GPIO_FN(OVCN),
1307 GPIO_FN(MSIOF0L_TXD),
1308 GPIO_FN(SCIFA1_TXD), GPIO_FN(OVCN2),
1309 GPIO_FN(EXTLP), GPIO_FN(SCIFA1_SCK), GPIO_FN(USBTERM),
1310 GPIO_FN(PORT226_VIO_CKO2),
1311 GPIO_FN(SCIFA1_RTS), GPIO_FN(IDIN),
1312 GPIO_FN(SCIFA1_RXD),
1313 GPIO_FN(SCIFA1_CTS), GPIO_FN(MFG1_IN1),
1314 GPIO_FN(MSIOF1_TXD), GPIO_FN(SCIFA2_TXD2), GPIO_FN(PORT230_FSIAOMC),
1315 GPIO_FN(MSIOF1_TSYNC), GPIO_FN(SCIFA2_CTS2), GPIO_FN(PORT231_FSIAOLR),
1316 GPIO_FN(MSIOF1_TSCK), GPIO_FN(SCIFA2_SCK2), GPIO_FN(PORT232_FSIAOBT),
1317 GPIO_FN(MSIOF1_RXD), GPIO_FN(SCIFA2_RXD2), GPIO_FN(GPS_VCOTRIG),
1318 GPIO_FN(PORT233_FSIACK),
1319 GPIO_FN(MSIOF1_RSCK), GPIO_FN(SCIFA2_RTS2), GPIO_FN(PORT234_FSIAOSLD),
1320 GPIO_FN(MSIOF1_RSYNC), GPIO_FN(OPORT0), GPIO_FN(MFG1_IN2),
1321 GPIO_FN(PORT235_FSIAILR),
1322 GPIO_FN(MSIOF1_MCK0), GPIO_FN(I2C_SDA2), GPIO_FN(PORT236_FSIAIBT),
1323 GPIO_FN(MSIOF1_MCK1), GPIO_FN(I2C_SCL2), GPIO_FN(PORT237_FSIAISLD),
1324 GPIO_FN(MSIOF1_SS1), GPIO_FN(EDBGREQ3),
1325
1326 /* 55-5 (FN) */
1327 GPIO_FN(MSIOF1_SS2),
1328 GPIO_FN(SCIFA6_TXD),
1329 GPIO_FN(PORT241_IRDA_OUT), GPIO_FN(PORT241_IROUT), GPIO_FN(MFG4_OUT1),
1330 GPIO_FN(TPU4TO0),
1331 GPIO_FN(PORT242_IRDA_IN), GPIO_FN(MFG4_IN2),
1332 GPIO_FN(PORT243_IRDA_FIRSEL), GPIO_FN(PORT243_VIO_CKO2),
1333 GPIO_FN(PORT244_SCIFA5_CTS), GPIO_FN(MFG2_IN1),
1334 GPIO_FN(PORT244_SCIFB_CTS),
1335 GPIO_FN(PORT245_SCIFA5_RTS), GPIO_FN(MFG2_IN2),
1336 GPIO_FN(PORT245_SCIFB_RTS),
1337 GPIO_FN(PORT246_SCIFA5_RXD), GPIO_FN(MFG1_OUT1),
1338 GPIO_FN(PORT246_SCIFB_RXD), GPIO_FN(TPU1TO0),
1339 GPIO_FN(PORT247_SCIFA5_TXD), GPIO_FN(MFG3_OUT2),
1340 GPIO_FN(PORT247_SCIFB_TXD), GPIO_FN(TPU3TO1),
1341 GPIO_FN(PORT248_SCIFA5_SCK), GPIO_FN(MFG2_OUT1),
1342 GPIO_FN(PORT248_SCIFB_SCK), GPIO_FN(TPU2TO0),
1343 GPIO_FN(PORT249_IROUT), GPIO_FN(MFG4_IN1),
1344 GPIO_FN(SDHICLK0), GPIO_FN(TCK2_SWCLK_MC0),
1345 GPIO_FN(SDHICD0),
1346 GPIO_FN(SDHID0_0), GPIO_FN(TMS2_SWDIO_MC0),
1347 GPIO_FN(SDHID0_1), GPIO_FN(TDO2_SWO0_MC0),
1348 GPIO_FN(SDHID0_2), GPIO_FN(TDI2),
1349 GPIO_FN(SDHID0_3), GPIO_FN(RTCK2_SWO1_MC0),
1350 GPIO_FN(SDHICMD0), GPIO_FN(TRST2),
1351 GPIO_FN(SDHIWP0), GPIO_FN(EDBGREQ2),
1352 GPIO_FN(SDHICLK1), GPIO_FN(TCK3_SWCLK_MC1),
1353 GPIO_FN(SDHID1_0), GPIO_FN(M11_SLCD_SO2), GPIO_FN(TS_SPSYNC2),
1354 GPIO_FN(TMS3_SWDIO_MC1),
1355 GPIO_FN(SDHID1_1), GPIO_FN(M9_SLCD_A02), GPIO_FN(TS_SDAT2),
1356 GPIO_FN(TDO3_SWO0_MC1),
1357 GPIO_FN(SDHID1_2), GPIO_FN(M10_SLCD_CK2), GPIO_FN(TS_SDEN2),
1358 GPIO_FN(TDI3),
1359 GPIO_FN(SDHID1_3), GPIO_FN(M12_SLCD_CE2), GPIO_FN(TS_SCK2),
1360 GPIO_FN(RTCK3_SWO1_MC1),
1361 GPIO_FN(SDHICMD1), GPIO_FN(TRST3),
1362 GPIO_FN(RESETOUTS),
1363};
1364
1365/* helper for top 4 bits in PORTnCR */
1366#define PCRH(in, in_pd, in_pu, out) \
1367 0, (out), (in), 0, \
1368 0, 0, 0, 0, \
1369 0, 0, (in_pd), 0, \
1370 0, 0, (in_pu), 0
1371
1372#define PORTCR(nr, reg) \
1373 { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \
1374 PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \
1375 PORT##nr##_IN_PU, PORT##nr##_OUT), \
1376 PORT##nr##_FN0, PORT##nr##_FN1, \
1377 PORT##nr##_FN2, PORT##nr##_FN3, \
1378 PORT##nr##_FN4, PORT##nr##_FN5, \
1379 PORT##nr##_FN6, PORT##nr##_FN7 } \
1380 }
1381
1382static struct pinmux_cfg_reg pinmux_config_regs[] = {
1383 PORTCR(0, 0xe6050000), /* PORT0CR */
1384 PORTCR(1, 0xe6050001), /* PORT1CR */
1385 PORTCR(2, 0xe6050002), /* PORT2CR */
1386 PORTCR(3, 0xe6050003), /* PORT3CR */
1387 PORTCR(4, 0xe6050004), /* PORT4CR */
1388 PORTCR(5, 0xe6050005), /* PORT5CR */
1389 PORTCR(6, 0xe6050006), /* PORT6CR */
1390 PORTCR(7, 0xe6050007), /* PORT7CR */
1391 PORTCR(8, 0xe6050008), /* PORT8CR */
1392 PORTCR(9, 0xe6050009), /* PORT9CR */
1393
1394 PORTCR(10, 0xe605000a), /* PORT10CR */
1395 PORTCR(11, 0xe605000b), /* PORT11CR */
1396 PORTCR(12, 0xe605000c), /* PORT12CR */
1397 PORTCR(13, 0xe605000d), /* PORT13CR */
1398 PORTCR(14, 0xe605000e), /* PORT14CR */
1399 PORTCR(15, 0xe605000f), /* PORT15CR */
1400 PORTCR(16, 0xe6050010), /* PORT16CR */
1401 PORTCR(17, 0xe6050011), /* PORT17CR */
1402 PORTCR(18, 0xe6050012), /* PORT18CR */
1403 PORTCR(19, 0xe6050013), /* PORT19CR */
1404
1405 PORTCR(20, 0xe6050014), /* PORT20CR */
1406 PORTCR(21, 0xe6050015), /* PORT21CR */
1407 PORTCR(22, 0xe6050016), /* PORT22CR */
1408 PORTCR(23, 0xe6050017), /* PORT23CR */
1409 PORTCR(24, 0xe6050018), /* PORT24CR */
1410 PORTCR(25, 0xe6050019), /* PORT25CR */
1411 PORTCR(26, 0xe605001a), /* PORT26CR */
1412 PORTCR(27, 0xe605001b), /* PORT27CR */
1413 PORTCR(28, 0xe605001c), /* PORT28CR */
1414 PORTCR(29, 0xe605001d), /* PORT29CR */
1415
1416 PORTCR(30, 0xe605001e), /* PORT30CR */
1417 PORTCR(31, 0xe605001f), /* PORT31CR */
1418 PORTCR(32, 0xe6050020), /* PORT32CR */
1419 PORTCR(33, 0xe6050021), /* PORT33CR */
1420 PORTCR(34, 0xe6050022), /* PORT34CR */
1421 PORTCR(35, 0xe6050023), /* PORT35CR */
1422 PORTCR(36, 0xe6050024), /* PORT36CR */
1423 PORTCR(37, 0xe6050025), /* PORT37CR */
1424 PORTCR(38, 0xe6050026), /* PORT38CR */
1425 PORTCR(39, 0xe6050027), /* PORT39CR */
1426
1427 PORTCR(40, 0xe6050028), /* PORT40CR */
1428 PORTCR(41, 0xe6050029), /* PORT41CR */
1429 PORTCR(42, 0xe605002a), /* PORT42CR */
1430 PORTCR(43, 0xe605002b), /* PORT43CR */
1431 PORTCR(44, 0xe605002c), /* PORT44CR */
1432 PORTCR(45, 0xe605002d), /* PORT45CR */
1433 PORTCR(46, 0xe605002e), /* PORT46CR */
1434 PORTCR(47, 0xe605002f), /* PORT47CR */
1435 PORTCR(48, 0xe6050030), /* PORT48CR */
1436 PORTCR(49, 0xe6050031), /* PORT49CR */
1437
1438 PORTCR(50, 0xe6050032), /* PORT50CR */
1439 PORTCR(51, 0xe6050033), /* PORT51CR */
1440 PORTCR(52, 0xe6050034), /* PORT52CR */
1441 PORTCR(53, 0xe6050035), /* PORT53CR */
1442 PORTCR(54, 0xe6050036), /* PORT54CR */
1443 PORTCR(55, 0xe6050037), /* PORT55CR */
1444 PORTCR(56, 0xe6050038), /* PORT56CR */
1445 PORTCR(57, 0xe6050039), /* PORT57CR */
1446 PORTCR(58, 0xe605003a), /* PORT58CR */
1447 PORTCR(59, 0xe605003b), /* PORT59CR */
1448
1449 PORTCR(60, 0xe605003c), /* PORT60CR */
1450 PORTCR(61, 0xe605003d), /* PORT61CR */
1451 PORTCR(62, 0xe605003e), /* PORT62CR */
1452 PORTCR(63, 0xe605003f), /* PORT63CR */
1453 PORTCR(64, 0xe6050040), /* PORT64CR */
1454 PORTCR(65, 0xe6050041), /* PORT65CR */
1455 PORTCR(66, 0xe6050042), /* PORT66CR */
1456 PORTCR(67, 0xe6050043), /* PORT67CR */
1457 PORTCR(68, 0xe6050044), /* PORT68CR */
1458 PORTCR(69, 0xe6050045), /* PORT69CR */
1459
1460 PORTCR(70, 0xe6050046), /* PORT70CR */
1461 PORTCR(71, 0xe6050047), /* PORT71CR */
1462 PORTCR(72, 0xe6050048), /* PORT72CR */
1463 PORTCR(73, 0xe6050049), /* PORT73CR */
1464 PORTCR(74, 0xe605004a), /* PORT74CR */
1465 PORTCR(75, 0xe605004b), /* PORT75CR */
1466 PORTCR(76, 0xe605004c), /* PORT76CR */
1467 PORTCR(77, 0xe605004d), /* PORT77CR */
1468 PORTCR(78, 0xe605004e), /* PORT78CR */
1469 PORTCR(79, 0xe605004f), /* PORT79CR */
1470
1471 PORTCR(80, 0xe6050050), /* PORT80CR */
1472 PORTCR(81, 0xe6050051), /* PORT81CR */
1473 PORTCR(82, 0xe6050052), /* PORT82CR */
1474 PORTCR(83, 0xe6050053), /* PORT83CR */
1475 PORTCR(84, 0xe6050054), /* PORT84CR */
1476 PORTCR(85, 0xe6050055), /* PORT85CR */
1477 PORTCR(86, 0xe6050056), /* PORT86CR */
1478 PORTCR(87, 0xe6050057), /* PORT87CR */
1479 PORTCR(88, 0xe6050058), /* PORT88CR */
1480 PORTCR(89, 0xe6050059), /* PORT89CR */
1481
1482 PORTCR(90, 0xe605005a), /* PORT90CR */
1483 PORTCR(91, 0xe605005b), /* PORT91CR */
1484 PORTCR(92, 0xe605005c), /* PORT92CR */
1485 PORTCR(93, 0xe605005d), /* PORT93CR */
1486 PORTCR(94, 0xe605005e), /* PORT94CR */
1487 PORTCR(95, 0xe605005f), /* PORT95CR */
1488 PORTCR(96, 0xe6050060), /* PORT96CR */
1489 PORTCR(97, 0xe6050061), /* PORT97CR */
1490 PORTCR(98, 0xe6050062), /* PORT98CR */
1491 PORTCR(99, 0xe6050063), /* PORT99CR */
1492
1493 PORTCR(100, 0xe6050064), /* PORT100CR */
1494 PORTCR(101, 0xe6050065), /* PORT101CR */
1495 PORTCR(102, 0xe6050066), /* PORT102CR */
1496 PORTCR(103, 0xe6050067), /* PORT103CR */
1497 PORTCR(104, 0xe6050068), /* PORT104CR */
1498 PORTCR(105, 0xe6050069), /* PORT105CR */
1499 PORTCR(106, 0xe605006a), /* PORT106CR */
1500 PORTCR(107, 0xe605006b), /* PORT107CR */
1501 PORTCR(108, 0xe605006c), /* PORT108CR */
1502 PORTCR(109, 0xe605006d), /* PORT109CR */
1503
1504 PORTCR(110, 0xe605006e), /* PORT110CR */
1505 PORTCR(111, 0xe605006f), /* PORT111CR */
1506 PORTCR(112, 0xe6050070), /* PORT112CR */
1507 PORTCR(113, 0xe6050071), /* PORT113CR */
1508 PORTCR(114, 0xe6050072), /* PORT114CR */
1509 PORTCR(115, 0xe6050073), /* PORT115CR */
1510 PORTCR(116, 0xe6050074), /* PORT116CR */
1511 PORTCR(117, 0xe6050075), /* PORT117CR */
1512 PORTCR(118, 0xe6050076), /* PORT118CR */
1513
1514 PORTCR(128, 0xe6051080), /* PORT128CR */
1515 PORTCR(129, 0xe6051081), /* PORT129CR */
1516
1517 PORTCR(130, 0xe6051082), /* PORT130CR */
1518 PORTCR(131, 0xe6051083), /* PORT131CR */
1519 PORTCR(132, 0xe6051084), /* PORT132CR */
1520 PORTCR(133, 0xe6051085), /* PORT133CR */
1521 PORTCR(134, 0xe6051086), /* PORT134CR */
1522 PORTCR(135, 0xe6051087), /* PORT135CR */
1523 PORTCR(136, 0xe6051088), /* PORT136CR */
1524 PORTCR(137, 0xe6051089), /* PORT137CR */
1525 PORTCR(138, 0xe605108a), /* PORT138CR */
1526 PORTCR(139, 0xe605108b), /* PORT139CR */
1527
1528 PORTCR(140, 0xe605108c), /* PORT140CR */
1529 PORTCR(141, 0xe605108d), /* PORT141CR */
1530 PORTCR(142, 0xe605108e), /* PORT142CR */
1531 PORTCR(143, 0xe605108f), /* PORT143CR */
1532 PORTCR(144, 0xe6051090), /* PORT144CR */
1533 PORTCR(145, 0xe6051091), /* PORT145CR */
1534 PORTCR(146, 0xe6051092), /* PORT146CR */
1535 PORTCR(147, 0xe6051093), /* PORT147CR */
1536 PORTCR(148, 0xe6051094), /* PORT148CR */
1537 PORTCR(149, 0xe6051095), /* PORT149CR */
1538
1539 PORTCR(150, 0xe6051096), /* PORT150CR */
1540 PORTCR(151, 0xe6051097), /* PORT151CR */
1541 PORTCR(152, 0xe6051098), /* PORT152CR */
1542 PORTCR(153, 0xe6051099), /* PORT153CR */
1543 PORTCR(154, 0xe605109a), /* PORT154CR */
1544 PORTCR(155, 0xe605109b), /* PORT155CR */
1545 PORTCR(156, 0xe605109c), /* PORT156CR */
1546 PORTCR(157, 0xe605109d), /* PORT157CR */
1547 PORTCR(158, 0xe605109e), /* PORT158CR */
1548 PORTCR(159, 0xe605109f), /* PORT159CR */
1549
1550 PORTCR(160, 0xe60510a0), /* PORT160CR */
1551 PORTCR(161, 0xe60510a1), /* PORT161CR */
1552 PORTCR(162, 0xe60510a2), /* PORT162CR */
1553 PORTCR(163, 0xe60510a3), /* PORT163CR */
1554 PORTCR(164, 0xe60510a4), /* PORT164CR */
1555
1556 PORTCR(192, 0xe60520c0), /* PORT192CR */
1557 PORTCR(193, 0xe60520c1), /* PORT193CR */
1558 PORTCR(194, 0xe60520c2), /* PORT194CR */
1559 PORTCR(195, 0xe60520c3), /* PORT195CR */
1560 PORTCR(196, 0xe60520c4), /* PORT196CR */
1561 PORTCR(197, 0xe60520c5), /* PORT197CR */
1562 PORTCR(198, 0xe60520c6), /* PORT198CR */
1563 PORTCR(199, 0xe60520c7), /* PORT199CR */
1564
1565 PORTCR(200, 0xe60520c8), /* PORT200CR */
1566 PORTCR(201, 0xe60520c9), /* PORT201CR */
1567 PORTCR(202, 0xe60520ca), /* PORT202CR */
1568 PORTCR(203, 0xe60520cb), /* PORT203CR */
1569 PORTCR(204, 0xe60520cc), /* PORT204CR */
1570 PORTCR(205, 0xe60520cd), /* PORT205CR */
1571 PORTCR(206, 0xe60520ce), /* PORT206CR */
1572 PORTCR(207, 0xe60520cf), /* PORT207CR */
1573 PORTCR(208, 0xe60520d0), /* PORT208CR */
1574 PORTCR(209, 0xe60520d1), /* PORT209CR */
1575
1576 PORTCR(210, 0xe60520d2), /* PORT210CR */
1577 PORTCR(211, 0xe60520d3), /* PORT211CR */
1578 PORTCR(212, 0xe60520d4), /* PORT212CR */
1579 PORTCR(213, 0xe60520d5), /* PORT213CR */
1580 PORTCR(214, 0xe60520d6), /* PORT214CR */
1581 PORTCR(215, 0xe60520d7), /* PORT215CR */
1582 PORTCR(216, 0xe60520d8), /* PORT216CR */
1583 PORTCR(217, 0xe60520d9), /* PORT217CR */
1584 PORTCR(218, 0xe60520da), /* PORT218CR */
1585 PORTCR(219, 0xe60520db), /* PORT219CR */
1586
1587 PORTCR(220, 0xe60520dc), /* PORT220CR */
1588 PORTCR(221, 0xe60520dd), /* PORT221CR */
1589 PORTCR(222, 0xe60520de), /* PORT222CR */
1590 PORTCR(223, 0xe60520df), /* PORT223CR */
1591 PORTCR(224, 0xe60520e0), /* PORT224CR */
1592 PORTCR(225, 0xe60520e1), /* PORT225CR */
1593 PORTCR(226, 0xe60520e2), /* PORT226CR */
1594 PORTCR(227, 0xe60520e3), /* PORT227CR */
1595 PORTCR(228, 0xe60520e4), /* PORT228CR */
1596 PORTCR(229, 0xe60520e5), /* PORT229CR */
1597
1598 PORTCR(230, 0xe60520e6), /* PORT230CR */
1599 PORTCR(231, 0xe60520e7), /* PORT231CR */
1600 PORTCR(232, 0xe60520e8), /* PORT232CR */
1601 PORTCR(233, 0xe60520e9), /* PORT233CR */
1602 PORTCR(234, 0xe60520ea), /* PORT234CR */
1603 PORTCR(235, 0xe60520eb), /* PORT235CR */
1604 PORTCR(236, 0xe60520ec), /* PORT236CR */
1605 PORTCR(237, 0xe60520ed), /* PORT237CR */
1606 PORTCR(238, 0xe60520ee), /* PORT238CR */
1607 PORTCR(239, 0xe60520ef), /* PORT239CR */
1608
1609 PORTCR(240, 0xe60520f0), /* PORT240CR */
1610 PORTCR(241, 0xe60520f1), /* PORT241CR */
1611 PORTCR(242, 0xe60520f2), /* PORT242CR */
1612 PORTCR(243, 0xe60520f3), /* PORT243CR */
1613 PORTCR(244, 0xe60520f4), /* PORT244CR */
1614 PORTCR(245, 0xe60520f5), /* PORT245CR */
1615 PORTCR(246, 0xe60520f6), /* PORT246CR */
1616 PORTCR(247, 0xe60520f7), /* PORT247CR */
1617 PORTCR(248, 0xe60520f8), /* PORT248CR */
1618 PORTCR(249, 0xe60520f9), /* PORT249CR */
1619
1620 PORTCR(250, 0xe60520fa), /* PORT250CR */
1621 PORTCR(251, 0xe60520fb), /* PORT251CR */
1622 PORTCR(252, 0xe60520fc), /* PORT252CR */
1623 PORTCR(253, 0xe60520fd), /* PORT253CR */
1624 PORTCR(254, 0xe60520fe), /* PORT254CR */
1625 PORTCR(255, 0xe60520ff), /* PORT255CR */
1626 PORTCR(256, 0xe6052100), /* PORT256CR */
1627 PORTCR(257, 0xe6052101), /* PORT257CR */
1628 PORTCR(258, 0xe6052102), /* PORT258CR */
1629 PORTCR(259, 0xe6052103), /* PORT259CR */
1630
1631 PORTCR(260, 0xe6052104), /* PORT260CR */
1632 PORTCR(261, 0xe6052105), /* PORT261CR */
1633 PORTCR(262, 0xe6052106), /* PORT262CR */
1634 PORTCR(263, 0xe6052107), /* PORT263CR */
1635 PORTCR(264, 0xe6052108), /* PORT264CR */
1636
1637 { PINMUX_CFG_REG("MSELBCR", 0xe6058024, 32, 1) {
1638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1640 MSELBCR_MSEL17_0, MSELBCR_MSEL17_1,
1641 MSELBCR_MSEL16_0, MSELBCR_MSEL16_1,
1642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
1644 },
1645 { },
1646};
1647
1648static struct pinmux_data_reg pinmux_data_regs[] = {
1649 { PINMUX_DATA_REG("PORTL031_000DR", 0xe6054000, 32) {
1650 PORT31_DATA, PORT30_DATA, PORT29_DATA, PORT28_DATA,
1651 PORT27_DATA, PORT26_DATA, PORT25_DATA, PORT24_DATA,
1652 PORT23_DATA, PORT22_DATA, PORT21_DATA, PORT20_DATA,
1653 PORT19_DATA, PORT18_DATA, PORT17_DATA, PORT16_DATA,
1654 PORT15_DATA, PORT14_DATA, PORT13_DATA, PORT12_DATA,
1655 PORT11_DATA, PORT10_DATA, PORT9_DATA, PORT8_DATA,
1656 PORT7_DATA, PORT6_DATA, PORT5_DATA, PORT4_DATA,
1657 PORT3_DATA, PORT2_DATA, PORT1_DATA, PORT0_DATA }
1658 },
1659 { PINMUX_DATA_REG("PORTL063_032DR", 0xe6054004, 32) {
1660 PORT63_DATA, PORT62_DATA, PORT61_DATA, PORT60_DATA,
1661 PORT59_DATA, PORT58_DATA, PORT57_DATA, PORT56_DATA,
1662 PORT55_DATA, PORT54_DATA, PORT53_DATA, PORT52_DATA,
1663 PORT51_DATA, PORT50_DATA, PORT49_DATA, PORT48_DATA,
1664 PORT47_DATA, PORT46_DATA, PORT45_DATA, PORT44_DATA,
1665 PORT43_DATA, PORT42_DATA, PORT41_DATA, PORT40_DATA,
1666 PORT39_DATA, PORT38_DATA, PORT37_DATA, PORT36_DATA,
1667 PORT35_DATA, PORT34_DATA, PORT33_DATA, PORT32_DATA }
1668 },
1669 { PINMUX_DATA_REG("PORTL095_064DR", 0xe6054008, 32) {
1670 PORT95_DATA, PORT94_DATA, PORT93_DATA, PORT92_DATA,
1671 PORT91_DATA, PORT90_DATA, PORT89_DATA, PORT88_DATA,
1672 PORT87_DATA, PORT86_DATA, PORT85_DATA, PORT84_DATA,
1673 PORT83_DATA, PORT82_DATA, PORT81_DATA, PORT80_DATA,
1674 PORT79_DATA, PORT78_DATA, PORT77_DATA, PORT76_DATA,
1675 PORT75_DATA, PORT74_DATA, PORT73_DATA, PORT72_DATA,
1676 PORT71_DATA, PORT70_DATA, PORT69_DATA, PORT68_DATA,
1677 PORT67_DATA, PORT66_DATA, PORT65_DATA, PORT64_DATA }
1678 },
1679 { PINMUX_DATA_REG("PORTD127_096DR", 0xe605400C, 32) {
1680 0, 0, 0, 0,
1681 0, 0, 0, 0,
1682 0, PORT118_DATA, PORT117_DATA, PORT116_DATA,
1683 PORT115_DATA, PORT114_DATA, PORT113_DATA, PORT112_DATA,
1684 PORT111_DATA, PORT110_DATA, PORT109_DATA, PORT108_DATA,
1685 PORT107_DATA, PORT106_DATA, PORT105_DATA, PORT104_DATA,
1686 PORT103_DATA, PORT102_DATA, PORT101_DATA, PORT100_DATA,
1687 PORT99_DATA, PORT98_DATA, PORT97_DATA, PORT96_DATA }
1688 },
1689 { PINMUX_DATA_REG("PORTD159_128DR", 0xe6055000, 32) {
1690 PORT159_DATA, PORT158_DATA, PORT157_DATA, PORT156_DATA,
1691 PORT155_DATA, PORT154_DATA, PORT153_DATA, PORT152_DATA,
1692 PORT151_DATA, PORT150_DATA, PORT149_DATA, PORT148_DATA,
1693 PORT147_DATA, PORT146_DATA, PORT145_DATA, PORT144_DATA,
1694 PORT143_DATA, PORT142_DATA, PORT141_DATA, PORT140_DATA,
1695 PORT139_DATA, PORT138_DATA, PORT137_DATA, PORT136_DATA,
1696 PORT135_DATA, PORT134_DATA, PORT133_DATA, PORT132_DATA,
1697 PORT131_DATA, PORT130_DATA, PORT129_DATA, PORT128_DATA }
1698 },
1699 { PINMUX_DATA_REG("PORTR191_160DR", 0xe6055004, 32) {
1700 0, 0, 0, 0,
1701 0, 0, 0, 0,
1702 0, 0, 0, 0,
1703 0, 0, 0, 0,
1704 0, 0, 0, 0,
1705 0, 0, 0, 0,
1706 0, 0, 0, PORT164_DATA,
1707 PORT163_DATA, PORT162_DATA, PORT161_DATA, PORT160_DATA }
1708 },
1709 { PINMUX_DATA_REG("PORTR223_192DR", 0xe6056000, 32) {
1710 PORT223_DATA, PORT222_DATA, PORT221_DATA, PORT220_DATA,
1711 PORT219_DATA, PORT218_DATA, PORT217_DATA, PORT216_DATA,
1712 PORT215_DATA, PORT214_DATA, PORT213_DATA, PORT212_DATA,
1713 PORT211_DATA, PORT210_DATA, PORT209_DATA, PORT208_DATA,
1714 PORT207_DATA, PORT206_DATA, PORT205_DATA, PORT204_DATA,
1715 PORT203_DATA, PORT202_DATA, PORT201_DATA, PORT200_DATA,
1716 PORT199_DATA, PORT198_DATA, PORT197_DATA, PORT196_DATA,
1717 PORT195_DATA, PORT194_DATA, PORT193_DATA, PORT192_DATA }
1718 },
1719 { PINMUX_DATA_REG("PORTU255_224DR", 0xe6056004, 32) {
1720 PORT255_DATA, PORT254_DATA, PORT253_DATA, PORT252_DATA,
1721 PORT251_DATA, PORT250_DATA, PORT249_DATA, PORT248_DATA,
1722 PORT247_DATA, PORT246_DATA, PORT245_DATA, PORT244_DATA,
1723 PORT243_DATA, PORT242_DATA, PORT241_DATA, PORT240_DATA,
1724 PORT239_DATA, PORT238_DATA, PORT237_DATA, PORT236_DATA,
1725 PORT235_DATA, PORT234_DATA, PORT233_DATA, PORT232_DATA,
1726 PORT231_DATA, PORT230_DATA, PORT229_DATA, PORT228_DATA,
1727 PORT227_DATA, PORT226_DATA, PORT225_DATA, PORT224_DATA }
1728 },
1729 { PINMUX_DATA_REG("PORTU287_256DR", 0xe6056008, 32) {
1730 0, 0, 0, 0,
1731 0, 0, 0, 0,
1732 0, 0, 0, 0,
1733 0, 0, 0, 0,
1734 0, 0, 0, 0,
1735 0, 0, 0, PORT264_DATA,
1736 PORT263_DATA, PORT262_DATA, PORT261_DATA, PORT260_DATA,
1737 PORT259_DATA, PORT258_DATA, PORT257_DATA, PORT256_DATA }
1738 },
1739 { },
1740};
1741
1742static struct pinmux_info sh7377_pinmux_info = {
1743 .name = "sh7377_pfc",
1744 .reserved_id = PINMUX_RESERVED,
1745 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
1746 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
1747 .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
1748 .input_pd = { PINMUX_INPUT_PULLDOWN_BEGIN, PINMUX_INPUT_PULLDOWN_END },
1749 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
1750 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
1751 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
1752
1753 .first_gpio = GPIO_PORT0,
1754 .last_gpio = GPIO_FN_RESETOUTS,
1755
1756 .gpios = pinmux_gpios,
1757 .cfg_regs = pinmux_config_regs,
1758 .data_regs = pinmux_data_regs,
1759
1760 .gpio_data = pinmux_data,
1761 .gpio_data_size = ARRAY_SIZE(pinmux_data),
1762};
1763
1764void sh7377_pinmux_init(void)
1765{
1766 register_pinmux(&sh7377_pinmux_info);
1767}
diff --git a/arch/arm/mach-shmobile/setup-sh7367.c b/arch/arm/mach-shmobile/setup-sh7367.c
new file mode 100644
index 000000000000..eca90716140e
--- /dev/null
+++ b/arch/arm/mach-shmobile/setup-sh7367.c
@@ -0,0 +1,198 @@
1/*
2 * sh7367 processor support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/input.h>
27#include <linux/io.h>
28#include <linux/serial_sci.h>
29#include <linux/sh_timer.h>
30#include <mach/hardware.h>
31#include <asm/mach-types.h>
32#include <asm/mach/arch.h>
33
34static struct plat_sci_port scif0_platform_data = {
35 .mapbase = 0xe6c40000,
36 .flags = UPF_BOOT_AUTOCONF,
37 .type = PORT_SCIF,
38 .irqs = { 80, 80, 80, 80 },
39};
40
41static struct platform_device scif0_device = {
42 .name = "sh-sci",
43 .id = 0,
44 .dev = {
45 .platform_data = &scif0_platform_data,
46 },
47};
48
49static struct plat_sci_port scif1_platform_data = {
50 .mapbase = 0xe6c50000,
51 .flags = UPF_BOOT_AUTOCONF,
52 .type = PORT_SCIF,
53 .irqs = { 81, 81, 81, 81 },
54};
55
56static struct platform_device scif1_device = {
57 .name = "sh-sci",
58 .id = 1,
59 .dev = {
60 .platform_data = &scif1_platform_data,
61 },
62};
63
64static struct plat_sci_port scif2_platform_data = {
65 .mapbase = 0xe6c60000,
66 .flags = UPF_BOOT_AUTOCONF,
67 .type = PORT_SCIF,
68 .irqs = { 82, 82, 82, 82 },
69};
70
71static struct platform_device scif2_device = {
72 .name = "sh-sci",
73 .id = 2,
74 .dev = {
75 .platform_data = &scif2_platform_data,
76 },
77};
78
79static struct plat_sci_port scif3_platform_data = {
80 .mapbase = 0xe6c70000,
81 .flags = UPF_BOOT_AUTOCONF,
82 .type = PORT_SCIF,
83 .irqs = { 83, 83, 83, 83 },
84};
85
86static struct platform_device scif3_device = {
87 .name = "sh-sci",
88 .id = 3,
89 .dev = {
90 .platform_data = &scif3_platform_data,
91 },
92};
93
94static struct plat_sci_port scif4_platform_data = {
95 .mapbase = 0xe6c80000,
96 .flags = UPF_BOOT_AUTOCONF,
97 .type = PORT_SCIF,
98 .irqs = { 89, 89, 89, 89 },
99};
100
101static struct platform_device scif4_device = {
102 .name = "sh-sci",
103 .id = 4,
104 .dev = {
105 .platform_data = &scif4_platform_data,
106 },
107};
108
109static struct plat_sci_port scif5_platform_data = {
110 .mapbase = 0xe6cb0000,
111 .flags = UPF_BOOT_AUTOCONF,
112 .type = PORT_SCIF,
113 .irqs = { 90, 90, 90, 90 },
114};
115
116static struct platform_device scif5_device = {
117 .name = "sh-sci",
118 .id = 5,
119 .dev = {
120 .platform_data = &scif5_platform_data,
121 },
122};
123
124static struct plat_sci_port scif6_platform_data = {
125 .mapbase = 0xe6c30000,
126 .flags = UPF_BOOT_AUTOCONF,
127 .type = PORT_SCIF,
128 .irqs = { 91, 91, 91, 91 },
129};
130
131static struct platform_device scif6_device = {
132 .name = "sh-sci",
133 .id = 6,
134 .dev = {
135 .platform_data = &scif6_platform_data,
136 },
137};
138
139static struct sh_timer_config cmt10_platform_data = {
140 .name = "CMT10",
141 .channel_offset = 0x10,
142 .timer_bit = 0,
143 .clk = "r_clk",
144 .clockevent_rating = 125,
145 .clocksource_rating = 125,
146};
147
148static struct resource cmt10_resources[] = {
149 [0] = {
150 .name = "CMT10",
151 .start = 0xe6138010,
152 .end = 0xe613801b,
153 .flags = IORESOURCE_MEM,
154 },
155 [1] = {
156 .start = 72,
157 .flags = IORESOURCE_IRQ,
158 },
159};
160
161static struct platform_device cmt10_device = {
162 .name = "sh_cmt",
163 .id = 10,
164 .dev = {
165 .platform_data = &cmt10_platform_data,
166 },
167 .resource = cmt10_resources,
168 .num_resources = ARRAY_SIZE(cmt10_resources),
169};
170
171static struct platform_device *sh7367_early_devices[] __initdata = {
172 &scif0_device,
173 &scif1_device,
174 &scif2_device,
175 &scif3_device,
176 &scif4_device,
177 &scif5_device,
178 &scif6_device,
179 &cmt10_device,
180};
181
182void __init sh7367_add_standard_devices(void)
183{
184 platform_add_devices(sh7367_early_devices,
185 ARRAY_SIZE(sh7367_early_devices));
186}
187
188#define SYMSTPCR2 0xe6158048
189#define SYMSTPCR2_CMT1 (1 << 29)
190
191void __init sh7367_add_early_devices(void)
192{
193 /* enable clock to CMT1 */
194 __raw_writel(__raw_readl(SYMSTPCR2) & ~SYMSTPCR2_CMT1, SYMSTPCR2);
195
196 early_platform_add_devices(sh7367_early_devices,
197 ARRAY_SIZE(sh7367_early_devices));
198}
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
new file mode 100644
index 000000000000..1d1153290f59
--- /dev/null
+++ b/arch/arm/mach-shmobile/setup-sh7372.c
@@ -0,0 +1,199 @@
1/*
2 * sh7372 processor support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/input.h>
27#include <linux/io.h>
28#include <linux/serial_sci.h>
29#include <linux/sh_intc.h>
30#include <linux/sh_timer.h>
31#include <mach/hardware.h>
32#include <asm/mach-types.h>
33#include <asm/mach/arch.h>
34
35static struct plat_sci_port scif0_platform_data = {
36 .mapbase = 0xe6c40000,
37 .flags = UPF_BOOT_AUTOCONF,
38 .type = PORT_SCIF,
39 .irqs = { 80, 80, 80, 80 },
40};
41
42static struct platform_device scif0_device = {
43 .name = "sh-sci",
44 .id = 0,
45 .dev = {
46 .platform_data = &scif0_platform_data,
47 },
48};
49
50static struct plat_sci_port scif1_platform_data = {
51 .mapbase = 0xe6c50000,
52 .flags = UPF_BOOT_AUTOCONF,
53 .type = PORT_SCIF,
54 .irqs = { 81, 81, 81, 81 },
55};
56
57static struct platform_device scif1_device = {
58 .name = "sh-sci",
59 .id = 1,
60 .dev = {
61 .platform_data = &scif1_platform_data,
62 },
63};
64
65static struct plat_sci_port scif2_platform_data = {
66 .mapbase = 0xe6c60000,
67 .flags = UPF_BOOT_AUTOCONF,
68 .type = PORT_SCIF,
69 .irqs = { 82, 82, 82, 82 },
70};
71
72static struct platform_device scif2_device = {
73 .name = "sh-sci",
74 .id = 2,
75 .dev = {
76 .platform_data = &scif2_platform_data,
77 },
78};
79
80static struct plat_sci_port scif3_platform_data = {
81 .mapbase = 0xe6c70000,
82 .flags = UPF_BOOT_AUTOCONF,
83 .type = PORT_SCIF,
84 .irqs = { 83, 83, 83, 83 },
85};
86
87static struct platform_device scif3_device = {
88 .name = "sh-sci",
89 .id = 3,
90 .dev = {
91 .platform_data = &scif3_platform_data,
92 },
93};
94
95static struct plat_sci_port scif4_platform_data = {
96 .mapbase = 0xe6c80000,
97 .flags = UPF_BOOT_AUTOCONF,
98 .type = PORT_SCIF,
99 .irqs = { 89, 89, 89, 89 },
100};
101
102static struct platform_device scif4_device = {
103 .name = "sh-sci",
104 .id = 4,
105 .dev = {
106 .platform_data = &scif4_platform_data,
107 },
108};
109
110static struct plat_sci_port scif5_platform_data = {
111 .mapbase = 0xe6cb0000,
112 .flags = UPF_BOOT_AUTOCONF,
113 .type = PORT_SCIF,
114 .irqs = { 90, 90, 90, 90 },
115};
116
117static struct platform_device scif5_device = {
118 .name = "sh-sci",
119 .id = 5,
120 .dev = {
121 .platform_data = &scif5_platform_data,
122 },
123};
124
125static struct plat_sci_port scif6_platform_data = {
126 .mapbase = 0xe6c30000,
127 .flags = UPF_BOOT_AUTOCONF,
128 .type = PORT_SCIF,
129 .irqs = { 91, 91, 91, 91 },
130};
131
132static struct platform_device scif6_device = {
133 .name = "sh-sci",
134 .id = 6,
135 .dev = {
136 .platform_data = &scif6_platform_data,
137 },
138};
139
140static struct sh_timer_config cmt10_platform_data = {
141 .name = "CMT10",
142 .channel_offset = 0x10,
143 .timer_bit = 0,
144 .clk = "r_clk",
145 .clockevent_rating = 125,
146 .clocksource_rating = 125,
147};
148
149static struct resource cmt10_resources[] = {
150 [0] = {
151 .name = "CMT10",
152 .start = 0xe6138010,
153 .end = 0xe613801b,
154 .flags = IORESOURCE_MEM,
155 },
156 [1] = {
157 .start = 72,
158 .flags = IORESOURCE_IRQ,
159 },
160};
161
162static struct platform_device cmt10_device = {
163 .name = "sh_cmt",
164 .id = 10,
165 .dev = {
166 .platform_data = &cmt10_platform_data,
167 },
168 .resource = cmt10_resources,
169 .num_resources = ARRAY_SIZE(cmt10_resources),
170};
171
172static struct platform_device *sh7372_early_devices[] __initdata = {
173 &scif0_device,
174 &scif1_device,
175 &scif2_device,
176 &scif3_device,
177 &scif4_device,
178 &scif5_device,
179 &scif6_device,
180 &cmt10_device,
181};
182
183void __init sh7372_add_standard_devices(void)
184{
185 platform_add_devices(sh7372_early_devices,
186 ARRAY_SIZE(sh7372_early_devices));
187}
188
189#define SMSTPCR3 0xe615013c
190#define SMSTPCR3_CMT1 (1 << 29)
191
192void __init sh7372_add_early_devices(void)
193{
194 /* enable clock to CMT1 */
195 __raw_writel(__raw_readl(SMSTPCR3) & ~SMSTPCR3_CMT1, SMSTPCR3);
196
197 early_platform_add_devices(sh7372_early_devices,
198 ARRAY_SIZE(sh7372_early_devices));
199}
diff --git a/arch/arm/mach-shmobile/setup-sh7377.c b/arch/arm/mach-shmobile/setup-sh7377.c
new file mode 100644
index 000000000000..60e37774c35c
--- /dev/null
+++ b/arch/arm/mach-shmobile/setup-sh7377.c
@@ -0,0 +1,215 @@
1/*
2 * sh7377 processor support
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2008 Yoshihiro Shimoda
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/irq.h>
24#include <linux/platform_device.h>
25#include <linux/delay.h>
26#include <linux/input.h>
27#include <linux/io.h>
28#include <linux/serial_sci.h>
29#include <linux/sh_intc.h>
30#include <linux/sh_timer.h>
31#include <mach/hardware.h>
32#include <asm/mach-types.h>
33#include <asm/mach/arch.h>
34
35static struct plat_sci_port scif0_platform_data = {
36 .mapbase = 0xe6c40000,
37 .flags = UPF_BOOT_AUTOCONF,
38 .type = PORT_SCIF,
39 .irqs = { 80, 80, 80, 80 },
40};
41
42static struct platform_device scif0_device = {
43 .name = "sh-sci",
44 .id = 0,
45 .dev = {
46 .platform_data = &scif0_platform_data,
47 },
48};
49
50static struct plat_sci_port scif1_platform_data = {
51 .mapbase = 0xe6c50000,
52 .flags = UPF_BOOT_AUTOCONF,
53 .type = PORT_SCIF,
54 .irqs = { 81, 81, 81, 81 },
55};
56
57static struct platform_device scif1_device = {
58 .name = "sh-sci",
59 .id = 1,
60 .dev = {
61 .platform_data = &scif1_platform_data,
62 },
63};
64
65static struct plat_sci_port scif2_platform_data = {
66 .mapbase = 0xe6c60000,
67 .flags = UPF_BOOT_AUTOCONF,
68 .type = PORT_SCIF,
69 .irqs = { 82, 82, 82, 82 },
70};
71
72static struct platform_device scif2_device = {
73 .name = "sh-sci",
74 .id = 2,
75 .dev = {
76 .platform_data = &scif2_platform_data,
77 },
78};
79
80static struct plat_sci_port scif3_platform_data = {
81 .mapbase = 0xe6c70000,
82 .flags = UPF_BOOT_AUTOCONF,
83 .type = PORT_SCIF,
84 .irqs = { 83, 83, 83, 83 },
85};
86
87static struct platform_device scif3_device = {
88 .name = "sh-sci",
89 .id = 3,
90 .dev = {
91 .platform_data = &scif3_platform_data,
92 },
93};
94
95static struct plat_sci_port scif4_platform_data = {
96 .mapbase = 0xe6c80000,
97 .flags = UPF_BOOT_AUTOCONF,
98 .type = PORT_SCIF,
99 .irqs = { 89, 89, 89, 89 },
100};
101
102static struct platform_device scif4_device = {
103 .name = "sh-sci",
104 .id = 4,
105 .dev = {
106 .platform_data = &scif4_platform_data,
107 },
108};
109
110static struct plat_sci_port scif5_platform_data = {
111 .mapbase = 0xe6cb0000,
112 .flags = UPF_BOOT_AUTOCONF,
113 .type = PORT_SCIF,
114 .irqs = { 90, 90, 90, 90 },
115};
116
117static struct platform_device scif5_device = {
118 .name = "sh-sci",
119 .id = 5,
120 .dev = {
121 .platform_data = &scif5_platform_data,
122 },
123};
124
125static struct plat_sci_port scif6_platform_data = {
126 .mapbase = 0xe6cc0000,
127 .flags = UPF_BOOT_AUTOCONF,
128 .type = PORT_SCIF,
129 .irqs = { 196, 196, 196, 196 },
130};
131
132static struct platform_device scif6_device = {
133 .name = "sh-sci",
134 .id = 6,
135 .dev = {
136 .platform_data = &scif6_platform_data,
137 },
138};
139
140static struct plat_sci_port scif7_platform_data = {
141 .mapbase = 0xe6c30000,
142 .flags = UPF_BOOT_AUTOCONF,
143 .type = PORT_SCIF,
144 .irqs = { 91, 91, 91, 91 },
145};
146
147static struct platform_device scif7_device = {
148 .name = "sh-sci",
149 .id = 7,
150 .dev = {
151 .platform_data = &scif7_platform_data,
152 },
153};
154
155static struct sh_timer_config cmt10_platform_data = {
156 .name = "CMT10",
157 .channel_offset = 0x10,
158 .timer_bit = 0,
159 .clk = "r_clk",
160 .clockevent_rating = 125,
161 .clocksource_rating = 125,
162};
163
164static struct resource cmt10_resources[] = {
165 [0] = {
166 .name = "CMT10",
167 .start = 0xe6138010,
168 .end = 0xe613801b,
169 .flags = IORESOURCE_MEM,
170 },
171 [1] = {
172 .start = 72,
173 .flags = IORESOURCE_IRQ,
174 },
175};
176
177static struct platform_device cmt10_device = {
178 .name = "sh_cmt",
179 .id = 10,
180 .dev = {
181 .platform_data = &cmt10_platform_data,
182 },
183 .resource = cmt10_resources,
184 .num_resources = ARRAY_SIZE(cmt10_resources),
185};
186
187static struct platform_device *sh7377_early_devices[] __initdata = {
188 &scif0_device,
189 &scif1_device,
190 &scif2_device,
191 &scif3_device,
192 &scif4_device,
193 &scif5_device,
194 &scif6_device,
195 &scif7_device,
196 &cmt10_device,
197};
198
199void __init sh7377_add_standard_devices(void)
200{
201 platform_add_devices(sh7377_early_devices,
202 ARRAY_SIZE(sh7377_early_devices));
203}
204
205#define SMSTPCR3 0xe615013c
206#define SMSTPCR3_CMT1 (1 << 29)
207
208void __init sh7377_add_early_devices(void)
209{
210 /* enable clock to CMT1 */
211 __raw_writel(__raw_readl(SMSTPCR3) & ~SMSTPCR3_CMT1, SMSTPCR3);
212
213 early_platform_add_devices(sh7377_early_devices,
214 ARRAY_SIZE(sh7377_early_devices));
215}
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c
new file mode 100644
index 000000000000..895794b543cd
--- /dev/null
+++ b/arch/arm/mach-shmobile/timer.c
@@ -0,0 +1,46 @@
1/*
2 * SH-Mobile Timer
3 *
4 * Copyright (C) 2010 Magnus Damm
5 * Copyright (C) 2002 - 2009 Paul Mundt
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 *
20 */
21#include <linux/platform_device.h>
22#include <asm/mach/time.h>
23
24static void __init shmobile_late_time_init(void)
25{
26 /*
27 * Make sure all compiled-in early timers register themselves.
28 *
29 * Run probe() for two "earlytimer" devices, these will be the
30 * clockevents and clocksource devices respectively. In the event
31 * that only a clockevents device is available, we -ENODEV on the
32 * clocksource and the jiffies clocksource is used transparently
33 * instead. No error handling is necessary here.
34 */
35 early_platform_driver_register_all("earlytimer");
36 early_platform_driver_probe("earlytimer", 2, 0);
37}
38
39static void __init shmobile_timer_init(void)
40{
41 late_time_init = shmobile_late_time_init;
42}
43
44struct sys_timer shmobile_timer = {
45 .init = shmobile_timer_init,
46};