aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2009-12-11 19:19:16 -0500
committerTony Lindgren <tony@atomide.com>2009-12-11 19:19:16 -0500
commit5ccf197859d6f6bcf56e85657019503b2d95767a (patch)
tree85cb5562b550571297cdd347a578ae337eb8f39f /arch
parent24ed45aa0776f9f645aa1ac1a88b2e1d5f29a9aa (diff)
parent435bb827499014ab0e57de75e9606861b08fe894 (diff)
Merge branch 'for-next' into omap-for-linus
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/configs/htcherald_defconfig9
-rw-r--r--arch/arm/configs/omap3_touchbook_defconfig2431
-rw-r--r--arch/arm/configs/omap_4430sdp_defconfig146
-rw-r--r--arch/arm/configs/omap_zoom2_defconfig3
-rw-r--r--arch/arm/configs/omap_zoom3_defconfig3
-rw-r--r--arch/arm/mach-omap1/Makefile7
-rw-r--r--arch/arm/mach-omap1/board-fsample.c60
-rw-r--r--arch/arm/mach-omap1/board-h2.c59
-rw-r--r--arch/arm/mach-omap1/board-h3.c66
-rw-r--r--arch/arm/mach-omap1/board-htcherald.c64
-rw-r--r--arch/arm/mach-omap1/board-innovator.c12
-rw-r--r--arch/arm/mach-omap1/board-osk.c10
-rw-r--r--arch/arm/mach-omap1/board-perseus2.c58
-rw-r--r--arch/arm/mach-omap1/board-voiceblue.c10
-rw-r--r--arch/arm/mach-omap1/clock_data.c4
-rw-r--r--arch/arm/mach-omap1/i2c.c39
-rw-r--r--arch/arm/mach-omap1/include/mach/lcd_dma.h78
-rw-r--r--arch/arm/mach-omap1/include/mach/lcdc.h57
-rw-r--r--arch/arm/mach-omap1/lcd_dma.c448
-rw-r--r--arch/arm/mach-omap1/mux.c8
-rw-r--r--arch/arm/mach-omap2/Kconfig30
-rw-r--r--arch/arm/mach-omap2/Makefile9
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c15
-rwxr-xr-xarch/arm/mach-omap2/board-3630sdp.c14
-rw-r--r--arch/arm/mach-omap2/board-am3517evm.c11
-rw-r--r--arch/arm/mach-omap2/board-apollon.c10
-rw-r--r--arch/arm/mach-omap2/board-cm-t35.c98
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c11
-rw-r--r--arch/arm/mach-omap2/board-ldp.c10
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c21
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c21
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c41
-rw-r--r--arch/arm/mach-omap2/board-omap3touchbook.c572
-rw-r--r--arch/arm/mach-omap2/board-overo.c14
-rw-r--r--arch/arm/mach-omap2/board-rx51-peripherals.c9
-rw-r--r--arch/arm/mach-omap2/board-rx51.c16
-rwxr-xr-xarch/arm/mach-omap2/board-zoom-peripherals.c14
-rw-r--r--arch/arm/mach-omap2/board-zoom2.c10
-rw-r--r--arch/arm/mach-omap2/board-zoom3.c10
-rw-r--r--arch/arm/mach-omap2/devices.c62
-rw-r--r--arch/arm/mach-omap2/gpmc-smc91x.c8
-rw-r--r--arch/arm/mach-omap2/i2c.c56
-rw-r--r--arch/arm/mach-omap2/id.c31
-rw-r--r--arch/arm/mach-omap2/io.c1
-rw-r--r--arch/arm/mach-omap2/mux.c1061
-rw-r--r--arch/arm/mach-omap2/mux.h163
-rw-r--r--arch/arm/mach-omap2/mux34xx.c2099
-rw-r--r--arch/arm/mach-omap2/mux34xx.h398
-rw-r--r--arch/arm/mach-omap2/omap-headsmp.S35
-rw-r--r--arch/arm/mach-omap2/omap-smp.c31
-rw-r--r--arch/arm/mach-omap2/serial.c88
-rw-r--r--arch/arm/mach-omap2/usb-ehci.c166
-rw-r--r--arch/arm/plat-omap/common.c2
-rw-r--r--arch/arm/plat-omap/debug-devices.c10
-rw-r--r--arch/arm/plat-omap/devices.c68
-rw-r--r--arch/arm/plat-omap/dma.c410
-rw-r--r--arch/arm/plat-omap/i2c.c44
-rw-r--r--arch/arm/plat-omap/include/plat/board.h9
-rw-r--r--arch/arm/plat-omap/include/plat/common.h14
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h31
-rw-r--r--arch/arm/plat-omap/include/plat/dma.h60
-rw-r--r--arch/arm/plat-omap/include/plat/gpmc.h2
-rw-r--r--arch/arm/plat-omap/include/plat/i2c.h39
-rw-r--r--arch/arm/plat-omap/include/plat/mux.h232
-rw-r--r--arch/arm/plat-omap/include/plat/serial.h1
-rw-r--r--arch/arm/plat-omap/include/plat/smp.h2
-rw-r--r--arch/arm/plat-omap/mux.c8
-rw-r--r--arch/arm/plat-omap/sram.c12
-rw-r--r--arch/arm/plat-omap/usb.c8
69 files changed, 8189 insertions, 1470 deletions
diff --git a/arch/arm/configs/htcherald_defconfig b/arch/arm/configs/htcherald_defconfig
index 338267674075..1b39691b816f 100644
--- a/arch/arm/configs/htcherald_defconfig
+++ b/arch/arm/configs/htcherald_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32-rc6 3# Linux kernel version: 2.6.32-rc8
4# Sat Nov 14 10:56:01 2009 4# Sat Dec 5 12:16:24 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -198,7 +198,9 @@ CONFIG_ARCH_OMAP1=y
198# OMAP Feature Selections 198# OMAP Feature Selections
199# 199#
200# CONFIG_OMAP_RESET_CLOCKS is not set 200# CONFIG_OMAP_RESET_CLOCKS is not set
201# CONFIG_OMAP_MUX is not set 201CONFIG_OMAP_MUX=y
202# CONFIG_OMAP_MUX_DEBUG is not set
203CONFIG_OMAP_MUX_WARNINGS=y
202CONFIG_OMAP_MCBSP=y 204CONFIG_OMAP_MCBSP=y
203# CONFIG_OMAP_MBOX_FWK is not set 205# CONFIG_OMAP_MBOX_FWK is not set
204CONFIG_OMAP_MPU_TIMER=y 206CONFIG_OMAP_MPU_TIMER=y
@@ -207,6 +209,7 @@ CONFIG_OMAP_LL_DEBUG_UART1=y
207# CONFIG_OMAP_LL_DEBUG_UART2 is not set 209# CONFIG_OMAP_LL_DEBUG_UART2 is not set
208# CONFIG_OMAP_LL_DEBUG_UART3 is not set 210# CONFIG_OMAP_LL_DEBUG_UART3 is not set
209# CONFIG_OMAP_LL_DEBUG_NONE is not set 211# CONFIG_OMAP_LL_DEBUG_NONE is not set
212CONFIG_OMAP_SERIAL_WAKE=y
210# CONFIG_OMAP_PM_NONE is not set 213# CONFIG_OMAP_PM_NONE is not set
211CONFIG_OMAP_PM_NOOP=y 214CONFIG_OMAP_PM_NOOP=y
212 215
diff --git a/arch/arm/configs/omap3_touchbook_defconfig b/arch/arm/configs/omap3_touchbook_defconfig
new file mode 100644
index 000000000000..7c8515e65c02
--- /dev/null
+++ b/arch/arm/configs/omap3_touchbook_defconfig
@@ -0,0 +1,2431 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32-rc8
4# Fri Dec 4 16:02:17 2009
5#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_STACKTRACE_SUPPORT=y
13CONFIG_HAVE_LATENCYTOP_SUPPORT=y
14CONFIG_LOCKDEP_SUPPORT=y
15CONFIG_TRACE_IRQFLAGS_SUPPORT=y
16CONFIG_HARDIRQS_SW_RESEND=y
17CONFIG_GENERIC_IRQ_PROBE=y
18CONFIG_RWSEM_GENERIC_SPINLOCK=y
19CONFIG_ARCH_HAS_CPUFREQ=y
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
23CONFIG_OPROFILE_ARMV7=y
24CONFIG_VECTORS_BASE=0xffff0000
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26CONFIG_CONSTRUCTORS=y
27
28#
29# General setup
30#
31CONFIG_EXPERIMENTAL=y
32CONFIG_BROKEN_ON_SMP=y
33CONFIG_LOCK_KERNEL=y
34CONFIG_INIT_ENV_ARG_LIMIT=32
35CONFIG_LOCALVERSION=""
36# CONFIG_LOCALVERSION_AUTO is not set
37CONFIG_SWAP=y
38CONFIG_SYSVIPC=y
39CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set
41CONFIG_BSD_PROCESS_ACCT=y
42# CONFIG_BSD_PROCESS_ACCT_V3 is not set
43CONFIG_TASKSTATS=y
44CONFIG_TASK_DELAY_ACCT=y
45CONFIG_TASK_XACCT=y
46CONFIG_TASK_IO_ACCOUNTING=y
47# CONFIG_AUDIT is not set
48
49#
50# RCU Subsystem
51#
52CONFIG_TREE_RCU=y
53# CONFIG_TREE_PREEMPT_RCU is not set
54# CONFIG_RCU_TRACE is not set
55CONFIG_RCU_FANOUT=32
56# CONFIG_RCU_FANOUT_EXACT is not set
57# CONFIG_TREE_RCU_TRACE is not set
58CONFIG_IKCONFIG=y
59CONFIG_IKCONFIG_PROC=y
60CONFIG_LOG_BUF_SHIFT=15
61CONFIG_GROUP_SCHED=y
62CONFIG_FAIR_GROUP_SCHED=y
63# CONFIG_RT_GROUP_SCHED is not set
64CONFIG_USER_SCHED=y
65# CONFIG_CGROUP_SCHED is not set
66# CONFIG_CGROUPS is not set
67# CONFIG_SYSFS_DEPRECATED_V2 is not set
68# CONFIG_RELAY is not set
69# CONFIG_NAMESPACES is not set
70CONFIG_BLK_DEV_INITRD=y
71CONFIG_INITRAMFS_SOURCE=""
72CONFIG_RD_GZIP=y
73# CONFIG_RD_BZIP2 is not set
74# CONFIG_RD_LZMA is not set
75CONFIG_CC_OPTIMIZE_FOR_SIZE=y
76CONFIG_SYSCTL=y
77CONFIG_ANON_INODES=y
78CONFIG_EMBEDDED=y
79CONFIG_UID16=y
80# CONFIG_SYSCTL_SYSCALL is not set
81CONFIG_KALLSYMS=y
82# CONFIG_KALLSYMS_ALL is not set
83# CONFIG_KALLSYMS_EXTRA_PASS is not set
84CONFIG_HOTPLUG=y
85CONFIG_PRINTK=y
86CONFIG_BUG=y
87# CONFIG_ELF_CORE is not set
88CONFIG_BASE_FULL=y
89CONFIG_FUTEX=y
90CONFIG_EPOLL=y
91CONFIG_SIGNALFD=y
92CONFIG_TIMERFD=y
93CONFIG_EVENTFD=y
94CONFIG_SHMEM=y
95CONFIG_AIO=y
96
97#
98# Kernel Performance Events And Counters
99#
100CONFIG_VM_EVENT_COUNTERS=y
101# CONFIG_COMPAT_BRK is not set
102CONFIG_SLAB=y
103# CONFIG_SLUB is not set
104# CONFIG_SLOB is not set
105CONFIG_PROFILING=y
106CONFIG_TRACEPOINTS=y
107CONFIG_OPROFILE=y
108CONFIG_HAVE_OPROFILE=y
109# CONFIG_KPROBES is not set
110CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y
112CONFIG_HAVE_CLK=y
113
114#
115# GCOV-based kernel profiling
116#
117# CONFIG_GCOV_KERNEL is not set
118CONFIG_SLOW_WORK=y
119CONFIG_HAVE_GENERIC_DMA_COHERENT=y
120CONFIG_SLABINFO=y
121CONFIG_RT_MUTEXES=y
122CONFIG_BASE_SMALL=0
123CONFIG_MODULES=y
124CONFIG_MODULE_FORCE_LOAD=y
125CONFIG_MODULE_UNLOAD=y
126CONFIG_MODULE_FORCE_UNLOAD=y
127CONFIG_MODVERSIONS=y
128CONFIG_MODULE_SRCVERSION_ALL=y
129CONFIG_BLOCK=y
130CONFIG_LBDAF=y
131# CONFIG_BLK_DEV_BSG is not set
132# CONFIG_BLK_DEV_INTEGRITY is not set
133
134#
135# IO Schedulers
136#
137CONFIG_IOSCHED_NOOP=y
138CONFIG_IOSCHED_AS=y
139CONFIG_IOSCHED_DEADLINE=y
140CONFIG_IOSCHED_CFQ=y
141# CONFIG_DEFAULT_AS is not set
142# CONFIG_DEFAULT_DEADLINE is not set
143CONFIG_DEFAULT_CFQ=y
144# CONFIG_DEFAULT_NOOP is not set
145CONFIG_DEFAULT_IOSCHED="cfq"
146CONFIG_FREEZER=y
147
148#
149# System Type
150#
151CONFIG_MMU=y
152# CONFIG_ARCH_AAEC2000 is not set
153# CONFIG_ARCH_INTEGRATOR is not set
154# CONFIG_ARCH_REALVIEW is not set
155# CONFIG_ARCH_VERSATILE is not set
156# CONFIG_ARCH_AT91 is not set
157# CONFIG_ARCH_CLPS711X is not set
158# CONFIG_ARCH_GEMINI is not set
159# CONFIG_ARCH_EBSA110 is not set
160# CONFIG_ARCH_EP93XX is not set
161# CONFIG_ARCH_FOOTBRIDGE is not set
162# CONFIG_ARCH_MXC is not set
163# CONFIG_ARCH_STMP3XXX is not set
164# CONFIG_ARCH_NETX is not set
165# CONFIG_ARCH_H720X is not set
166# CONFIG_ARCH_NOMADIK is not set
167# CONFIG_ARCH_IOP13XX is not set
168# CONFIG_ARCH_IOP32X is not set
169# CONFIG_ARCH_IOP33X is not set
170# CONFIG_ARCH_IXP23XX is not set
171# CONFIG_ARCH_IXP2000 is not set
172# CONFIG_ARCH_IXP4XX is not set
173# CONFIG_ARCH_L7200 is not set
174# CONFIG_ARCH_KIRKWOOD is not set
175# CONFIG_ARCH_LOKI is not set
176# CONFIG_ARCH_MV78XX0 is not set
177# CONFIG_ARCH_ORION5X is not set
178# CONFIG_ARCH_MMP is not set
179# CONFIG_ARCH_KS8695 is not set
180# CONFIG_ARCH_NS9XXX is not set
181# CONFIG_ARCH_W90X900 is not set
182# CONFIG_ARCH_PNX4008 is not set
183# CONFIG_ARCH_PXA is not set
184# CONFIG_ARCH_MSM is not set
185# CONFIG_ARCH_RPC is not set
186# CONFIG_ARCH_SA1100 is not set
187# CONFIG_ARCH_S3C2410 is not set
188# CONFIG_ARCH_S3C64XX is not set
189# CONFIG_ARCH_S5PC1XX is not set
190# CONFIG_ARCH_SHARK is not set
191# CONFIG_ARCH_LH7A40X is not set
192# CONFIG_ARCH_U300 is not set
193# CONFIG_ARCH_DAVINCI is not set
194CONFIG_ARCH_OMAP=y
195# CONFIG_ARCH_BCMRING is not set
196
197#
198# TI OMAP Implementations
199#
200CONFIG_ARCH_OMAP_OTG=y
201# CONFIG_ARCH_OMAP1 is not set
202# CONFIG_ARCH_OMAP2 is not set
203CONFIG_ARCH_OMAP3=y
204# CONFIG_ARCH_OMAP4 is not set
205
206#
207# OMAP Feature Selections
208#
209# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
210# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
211CONFIG_OMAP_RESET_CLOCKS=y
212# CONFIG_OMAP_MUX is not set
213CONFIG_OMAP_MCBSP=y
214# CONFIG_OMAP_MBOX_FWK is not set
215# CONFIG_OMAP_MPU_TIMER is not set
216CONFIG_OMAP_32K_TIMER=y
217CONFIG_OMAP_32K_TIMER_HZ=128
218CONFIG_OMAP_DM_TIMER=y
219# CONFIG_OMAP_LL_DEBUG_UART1 is not set
220# CONFIG_OMAP_LL_DEBUG_UART2 is not set
221CONFIG_OMAP_LL_DEBUG_UART3=y
222# CONFIG_OMAP_LL_DEBUG_NONE is not set
223# CONFIG_OMAP_PM_NONE is not set
224CONFIG_OMAP_PM_NOOP=y
225CONFIG_ARCH_OMAP34XX=y
226CONFIG_ARCH_OMAP3430=y
227
228#
229# OMAP Board Type
230#
231# CONFIG_MACH_OMAP3_BEAGLE is not set
232# CONFIG_MACH_OMAP_LDP is not set
233# CONFIG_MACH_OVERO is not set
234# CONFIG_MACH_OMAP3EVM is not set
235# CONFIG_MACH_OMAP3517EVM is not set
236# CONFIG_MACH_OMAP3_PANDORA is not set
237CONFIG_MACH_OMAP3_TOUCHBOOK=y
238# CONFIG_MACH_OMAP_3430SDP is not set
239# CONFIG_MACH_NOKIA_RX51 is not set
240# CONFIG_MACH_OMAP_ZOOM2 is not set
241# CONFIG_MACH_OMAP_ZOOM3 is not set
242# CONFIG_MACH_CM_T35 is not set
243# CONFIG_MACH_IGEP0020 is not set
244# CONFIG_MACH_OMAP_3630SDP is not set
245
246#
247# Processor Type
248#
249CONFIG_CPU_32=y
250CONFIG_CPU_32v6K=y
251CONFIG_CPU_V7=y
252CONFIG_CPU_32v7=y
253CONFIG_CPU_ABRT_EV7=y
254CONFIG_CPU_PABRT_V7=y
255CONFIG_CPU_CACHE_V7=y
256CONFIG_CPU_CACHE_VIPT=y
257CONFIG_CPU_COPY_V6=y
258CONFIG_CPU_TLB_V7=y
259CONFIG_CPU_HAS_ASID=y
260CONFIG_CPU_CP15=y
261CONFIG_CPU_CP15_MMU=y
262
263#
264# Processor Features
265#
266CONFIG_ARM_THUMB=y
267CONFIG_ARM_THUMBEE=y
268# CONFIG_CPU_ICACHE_DISABLE is not set
269# CONFIG_CPU_DCACHE_DISABLE is not set
270# CONFIG_CPU_BPREDICT_DISABLE is not set
271CONFIG_HAS_TLS_REG=y
272CONFIG_ARM_L1_CACHE_SHIFT=6
273# CONFIG_ARM_ERRATA_430973 is not set
274# CONFIG_ARM_ERRATA_458693 is not set
275# CONFIG_ARM_ERRATA_460075 is not set
276CONFIG_COMMON_CLKDEV=y
277
278#
279# Bus support
280#
281# CONFIG_PCI_SYSCALL is not set
282# CONFIG_ARCH_SUPPORTS_MSI is not set
283# CONFIG_PCCARD is not set
284
285#
286# Kernel Features
287#
288CONFIG_TICK_ONESHOT=y
289CONFIG_NO_HZ=y
290CONFIG_HIGH_RES_TIMERS=y
291CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
292CONFIG_VMSPLIT_3G=y
293# CONFIG_VMSPLIT_2G is not set
294# CONFIG_VMSPLIT_1G is not set
295CONFIG_PAGE_OFFSET=0xC0000000
296# CONFIG_PREEMPT_NONE is not set
297# CONFIG_PREEMPT_VOLUNTARY is not set
298CONFIG_PREEMPT=y
299CONFIG_HZ=128
300# CONFIG_THUMB2_KERNEL is not set
301CONFIG_AEABI=y
302# CONFIG_OABI_COMPAT is not set
303# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
304# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
305# CONFIG_HIGHMEM is not set
306CONFIG_SELECT_MEMORY_MODEL=y
307CONFIG_FLATMEM_MANUAL=y
308# CONFIG_DISCONTIGMEM_MANUAL is not set
309# CONFIG_SPARSEMEM_MANUAL is not set
310CONFIG_FLATMEM=y
311CONFIG_FLAT_NODE_MEM_MAP=y
312CONFIG_PAGEFLAGS_EXTENDED=y
313CONFIG_SPLIT_PTLOCK_CPUS=4
314# CONFIG_PHYS_ADDR_T_64BIT is not set
315CONFIG_ZONE_DMA_FLAG=0
316CONFIG_VIRT_TO_BUS=y
317CONFIG_HAVE_MLOCK=y
318CONFIG_HAVE_MLOCKED_PAGE_BIT=y
319# CONFIG_KSM is not set
320CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
321CONFIG_LEDS=y
322CONFIG_ALIGNMENT_TRAP=y
323# CONFIG_UACCESS_WITH_MEMCPY is not set
324
325#
326# Boot options
327#
328CONFIG_ZBOOT_ROM_TEXT=0x0
329CONFIG_ZBOOT_ROM_BSS=0x0
330CONFIG_CMDLINE=" debug "
331# CONFIG_XIP_KERNEL is not set
332CONFIG_KEXEC=y
333CONFIG_ATAGS_PROC=y
334
335#
336# CPU Power Management
337#
338# CONFIG_CPU_FREQ is not set
339# CONFIG_CPU_IDLE is not set
340
341#
342# Floating point emulation
343#
344
345#
346# At least one emulation must be selected
347#
348CONFIG_VFP=y
349CONFIG_VFPv3=y
350CONFIG_NEON=y
351
352#
353# Userspace binary formats
354#
355CONFIG_BINFMT_ELF=y
356CONFIG_HAVE_AOUT=y
357CONFIG_BINFMT_AOUT=m
358CONFIG_BINFMT_MISC=y
359
360#
361# Power management options
362#
363CONFIG_PM=y
364CONFIG_PM_DEBUG=y
365# CONFIG_PM_VERBOSE is not set
366CONFIG_CAN_PM_TRACE=y
367CONFIG_PM_SLEEP=y
368CONFIG_SUSPEND=y
369# CONFIG_PM_TEST_SUSPEND is not set
370CONFIG_SUSPEND_FREEZER=y
371# CONFIG_APM_EMULATION is not set
372# CONFIG_PM_RUNTIME is not set
373CONFIG_ARCH_SUSPEND_POSSIBLE=y
374CONFIG_NET=y
375
376#
377# Networking options
378#
379CONFIG_PACKET=y
380CONFIG_PACKET_MMAP=y
381CONFIG_UNIX=y
382CONFIG_XFRM=y
383# CONFIG_XFRM_USER is not set
384# CONFIG_XFRM_SUB_POLICY is not set
385# CONFIG_XFRM_MIGRATE is not set
386# CONFIG_XFRM_STATISTICS is not set
387CONFIG_XFRM_IPCOMP=m
388CONFIG_NET_KEY=y
389# CONFIG_NET_KEY_MIGRATE is not set
390CONFIG_INET=y
391# CONFIG_IP_MULTICAST is not set
392# CONFIG_IP_ADVANCED_ROUTER is not set
393CONFIG_IP_FIB_HASH=y
394CONFIG_IP_PNP=y
395CONFIG_IP_PNP_DHCP=y
396CONFIG_IP_PNP_BOOTP=y
397CONFIG_IP_PNP_RARP=y
398CONFIG_NET_IPIP=m
399CONFIG_NET_IPGRE=m
400# CONFIG_ARPD is not set
401# CONFIG_SYN_COOKIES is not set
402CONFIG_INET_AH=m
403CONFIG_INET_ESP=m
404CONFIG_INET_IPCOMP=m
405CONFIG_INET_XFRM_TUNNEL=m
406CONFIG_INET_TUNNEL=m
407CONFIG_INET_XFRM_MODE_TRANSPORT=y
408CONFIG_INET_XFRM_MODE_TUNNEL=y
409CONFIG_INET_XFRM_MODE_BEET=y
410CONFIG_INET_LRO=y
411CONFIG_INET_DIAG=m
412CONFIG_INET_TCP_DIAG=m
413CONFIG_TCP_CONG_ADVANCED=y
414CONFIG_TCP_CONG_BIC=m
415CONFIG_TCP_CONG_CUBIC=y
416CONFIG_TCP_CONG_WESTWOOD=m
417CONFIG_TCP_CONG_HTCP=m
418CONFIG_TCP_CONG_HSTCP=m
419CONFIG_TCP_CONG_HYBLA=m
420CONFIG_TCP_CONG_VEGAS=m
421CONFIG_TCP_CONG_SCALABLE=m
422CONFIG_TCP_CONG_LP=m
423CONFIG_TCP_CONG_VENO=m
424CONFIG_TCP_CONG_YEAH=m
425CONFIG_TCP_CONG_ILLINOIS=m
426# CONFIG_DEFAULT_BIC is not set
427CONFIG_DEFAULT_CUBIC=y
428# CONFIG_DEFAULT_HTCP is not set
429# CONFIG_DEFAULT_VEGAS is not set
430# CONFIG_DEFAULT_WESTWOOD is not set
431# CONFIG_DEFAULT_RENO is not set
432CONFIG_DEFAULT_TCP_CONG="cubic"
433# CONFIG_TCP_MD5SIG is not set
434CONFIG_IPV6=m
435# CONFIG_IPV6_PRIVACY is not set
436# CONFIG_IPV6_ROUTER_PREF is not set
437# CONFIG_IPV6_OPTIMISTIC_DAD is not set
438CONFIG_INET6_AH=m
439CONFIG_INET6_ESP=m
440CONFIG_INET6_IPCOMP=m
441CONFIG_IPV6_MIP6=m
442CONFIG_INET6_XFRM_TUNNEL=m
443CONFIG_INET6_TUNNEL=m
444CONFIG_INET6_XFRM_MODE_TRANSPORT=m
445CONFIG_INET6_XFRM_MODE_TUNNEL=m
446CONFIG_INET6_XFRM_MODE_BEET=m
447CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
448CONFIG_IPV6_SIT=m
449CONFIG_IPV6_NDISC_NODETYPE=y
450CONFIG_IPV6_TUNNEL=m
451CONFIG_IPV6_MULTIPLE_TABLES=y
452CONFIG_IPV6_SUBTREES=y
453CONFIG_IPV6_MROUTE=y
454# CONFIG_IPV6_PIMSM_V2 is not set
455# CONFIG_NETWORK_SECMARK is not set
456CONFIG_NETFILTER=y
457# CONFIG_NETFILTER_DEBUG is not set
458CONFIG_NETFILTER_ADVANCED=y
459CONFIG_BRIDGE_NETFILTER=y
460
461#
462# Core Netfilter Configuration
463#
464CONFIG_NETFILTER_NETLINK=m
465CONFIG_NETFILTER_NETLINK_QUEUE=m
466CONFIG_NETFILTER_NETLINK_LOG=m
467CONFIG_NF_CONNTRACK=m
468CONFIG_NF_CT_ACCT=y
469CONFIG_NF_CONNTRACK_MARK=y
470CONFIG_NF_CONNTRACK_EVENTS=y
471CONFIG_NF_CT_PROTO_DCCP=m
472CONFIG_NF_CT_PROTO_GRE=m
473CONFIG_NF_CT_PROTO_SCTP=m
474CONFIG_NF_CT_PROTO_UDPLITE=m
475CONFIG_NF_CONNTRACK_AMANDA=m
476CONFIG_NF_CONNTRACK_FTP=m
477CONFIG_NF_CONNTRACK_H323=m
478CONFIG_NF_CONNTRACK_IRC=m
479CONFIG_NF_CONNTRACK_NETBIOS_NS=m
480CONFIG_NF_CONNTRACK_PPTP=m
481CONFIG_NF_CONNTRACK_SANE=m
482CONFIG_NF_CONNTRACK_SIP=m
483CONFIG_NF_CONNTRACK_TFTP=m
484CONFIG_NF_CT_NETLINK=m
485# CONFIG_NETFILTER_TPROXY is not set
486CONFIG_NETFILTER_XTABLES=m
487CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
488CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
489# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
490CONFIG_NETFILTER_XT_TARGET_HL=m
491# CONFIG_NETFILTER_XT_TARGET_LED is not set
492CONFIG_NETFILTER_XT_TARGET_MARK=m
493CONFIG_NETFILTER_XT_TARGET_NFLOG=m
494CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
495# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
496CONFIG_NETFILTER_XT_TARGET_RATEEST=m
497# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
498CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
499# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
500# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
501CONFIG_NETFILTER_XT_MATCH_COMMENT=m
502CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
503CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
504CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
505CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
506CONFIG_NETFILTER_XT_MATCH_DCCP=m
507CONFIG_NETFILTER_XT_MATCH_DSCP=m
508CONFIG_NETFILTER_XT_MATCH_ESP=m
509CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
510CONFIG_NETFILTER_XT_MATCH_HELPER=m
511CONFIG_NETFILTER_XT_MATCH_HL=m
512CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
513CONFIG_NETFILTER_XT_MATCH_LENGTH=m
514CONFIG_NETFILTER_XT_MATCH_LIMIT=m
515CONFIG_NETFILTER_XT_MATCH_MAC=m
516CONFIG_NETFILTER_XT_MATCH_MARK=m
517CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
518CONFIG_NETFILTER_XT_MATCH_OWNER=m
519CONFIG_NETFILTER_XT_MATCH_POLICY=m
520# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
521CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
522CONFIG_NETFILTER_XT_MATCH_QUOTA=m
523CONFIG_NETFILTER_XT_MATCH_RATEEST=m
524CONFIG_NETFILTER_XT_MATCH_REALM=m
525CONFIG_NETFILTER_XT_MATCH_RECENT=m
526# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
527CONFIG_NETFILTER_XT_MATCH_SCTP=m
528CONFIG_NETFILTER_XT_MATCH_STATE=m
529CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
530CONFIG_NETFILTER_XT_MATCH_STRING=m
531CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
532CONFIG_NETFILTER_XT_MATCH_TIME=m
533CONFIG_NETFILTER_XT_MATCH_U32=m
534# CONFIG_NETFILTER_XT_MATCH_OSF is not set
535CONFIG_IP_VS=m
536CONFIG_IP_VS_IPV6=y
537CONFIG_IP_VS_DEBUG=y
538CONFIG_IP_VS_TAB_BITS=12
539
540#
541# IPVS transport protocol load balancing support
542#
543CONFIG_IP_VS_PROTO_TCP=y
544CONFIG_IP_VS_PROTO_UDP=y
545CONFIG_IP_VS_PROTO_AH_ESP=y
546CONFIG_IP_VS_PROTO_ESP=y
547CONFIG_IP_VS_PROTO_AH=y
548
549#
550# IPVS scheduler
551#
552CONFIG_IP_VS_RR=m
553CONFIG_IP_VS_WRR=m
554CONFIG_IP_VS_LC=m
555CONFIG_IP_VS_WLC=m
556CONFIG_IP_VS_LBLC=m
557CONFIG_IP_VS_LBLCR=m
558CONFIG_IP_VS_DH=m
559CONFIG_IP_VS_SH=m
560CONFIG_IP_VS_SED=m
561CONFIG_IP_VS_NQ=m
562
563#
564# IPVS application helper
565#
566CONFIG_IP_VS_FTP=m
567
568#
569# IP: Netfilter Configuration
570#
571CONFIG_NF_DEFRAG_IPV4=m
572CONFIG_NF_CONNTRACK_IPV4=m
573CONFIG_NF_CONNTRACK_PROC_COMPAT=y
574CONFIG_IP_NF_QUEUE=m
575CONFIG_IP_NF_IPTABLES=m
576CONFIG_IP_NF_MATCH_ADDRTYPE=m
577CONFIG_IP_NF_MATCH_AH=m
578CONFIG_IP_NF_MATCH_ECN=m
579CONFIG_IP_NF_MATCH_TTL=m
580CONFIG_IP_NF_FILTER=m
581CONFIG_IP_NF_TARGET_REJECT=m
582CONFIG_IP_NF_TARGET_LOG=m
583CONFIG_IP_NF_TARGET_ULOG=m
584CONFIG_NF_NAT=m
585CONFIG_NF_NAT_NEEDED=y
586CONFIG_IP_NF_TARGET_MASQUERADE=m
587CONFIG_IP_NF_TARGET_NETMAP=m
588CONFIG_IP_NF_TARGET_REDIRECT=m
589CONFIG_NF_NAT_SNMP_BASIC=m
590CONFIG_NF_NAT_PROTO_DCCP=m
591CONFIG_NF_NAT_PROTO_GRE=m
592CONFIG_NF_NAT_PROTO_UDPLITE=m
593CONFIG_NF_NAT_PROTO_SCTP=m
594CONFIG_NF_NAT_FTP=m
595CONFIG_NF_NAT_IRC=m
596CONFIG_NF_NAT_TFTP=m
597CONFIG_NF_NAT_AMANDA=m
598CONFIG_NF_NAT_PPTP=m
599CONFIG_NF_NAT_H323=m
600CONFIG_NF_NAT_SIP=m
601CONFIG_IP_NF_MANGLE=m
602CONFIG_IP_NF_TARGET_CLUSTERIP=m
603CONFIG_IP_NF_TARGET_ECN=m
604CONFIG_IP_NF_TARGET_TTL=m
605CONFIG_IP_NF_RAW=m
606CONFIG_IP_NF_ARPTABLES=m
607CONFIG_IP_NF_ARPFILTER=m
608CONFIG_IP_NF_ARP_MANGLE=m
609
610#
611# IPv6: Netfilter Configuration
612#
613CONFIG_NF_CONNTRACK_IPV6=m
614CONFIG_IP6_NF_QUEUE=m
615CONFIG_IP6_NF_IPTABLES=m
616CONFIG_IP6_NF_MATCH_AH=m
617CONFIG_IP6_NF_MATCH_EUI64=m
618CONFIG_IP6_NF_MATCH_FRAG=m
619CONFIG_IP6_NF_MATCH_OPTS=m
620CONFIG_IP6_NF_MATCH_HL=m
621CONFIG_IP6_NF_MATCH_IPV6HEADER=m
622CONFIG_IP6_NF_MATCH_MH=m
623CONFIG_IP6_NF_MATCH_RT=m
624CONFIG_IP6_NF_TARGET_HL=m
625CONFIG_IP6_NF_TARGET_LOG=m
626CONFIG_IP6_NF_FILTER=m
627CONFIG_IP6_NF_TARGET_REJECT=m
628CONFIG_IP6_NF_MANGLE=m
629CONFIG_IP6_NF_RAW=m
630# CONFIG_BRIDGE_NF_EBTABLES is not set
631CONFIG_IP_DCCP=m
632CONFIG_INET_DCCP_DIAG=m
633
634#
635# DCCP CCIDs Configuration (EXPERIMENTAL)
636#
637# CONFIG_IP_DCCP_CCID2_DEBUG is not set
638CONFIG_IP_DCCP_CCID3=y
639# CONFIG_IP_DCCP_CCID3_DEBUG is not set
640CONFIG_IP_DCCP_CCID3_RTO=100
641CONFIG_IP_DCCP_TFRC_LIB=y
642
643#
644# DCCP Kernel Hacking
645#
646# CONFIG_IP_DCCP_DEBUG is not set
647CONFIG_IP_SCTP=m
648# CONFIG_SCTP_DBG_MSG is not set
649# CONFIG_SCTP_DBG_OBJCNT is not set
650# CONFIG_SCTP_HMAC_NONE is not set
651# CONFIG_SCTP_HMAC_SHA1 is not set
652CONFIG_SCTP_HMAC_MD5=y
653# CONFIG_RDS is not set
654CONFIG_TIPC=m
655# CONFIG_TIPC_ADVANCED is not set
656# CONFIG_TIPC_DEBUG is not set
657CONFIG_ATM=m
658CONFIG_ATM_CLIP=m
659# CONFIG_ATM_CLIP_NO_ICMP is not set
660CONFIG_ATM_LANE=m
661CONFIG_ATM_MPOA=m
662CONFIG_ATM_BR2684=m
663# CONFIG_ATM_BR2684_IPFILTER is not set
664CONFIG_STP=m
665CONFIG_GARP=m
666CONFIG_BRIDGE=m
667# CONFIG_NET_DSA is not set
668CONFIG_VLAN_8021Q=m
669CONFIG_VLAN_8021Q_GVRP=y
670# CONFIG_DECNET is not set
671CONFIG_LLC=m
672# CONFIG_LLC2 is not set
673# CONFIG_IPX is not set
674# CONFIG_ATALK is not set
675# CONFIG_X25 is not set
676# CONFIG_LAPB is not set
677# CONFIG_ECONET is not set
678CONFIG_WAN_ROUTER=m
679# CONFIG_PHONET is not set
680# CONFIG_IEEE802154 is not set
681CONFIG_NET_SCHED=y
682
683#
684# Queueing/Scheduling
685#
686CONFIG_NET_SCH_CBQ=m
687CONFIG_NET_SCH_HTB=m
688CONFIG_NET_SCH_HFSC=m
689CONFIG_NET_SCH_ATM=m
690CONFIG_NET_SCH_PRIO=m
691CONFIG_NET_SCH_MULTIQ=m
692CONFIG_NET_SCH_RED=m
693CONFIG_NET_SCH_SFQ=m
694CONFIG_NET_SCH_TEQL=m
695CONFIG_NET_SCH_TBF=m
696CONFIG_NET_SCH_GRED=m
697CONFIG_NET_SCH_DSMARK=m
698CONFIG_NET_SCH_NETEM=m
699CONFIG_NET_SCH_DRR=m
700
701#
702# Classification
703#
704CONFIG_NET_CLS=y
705CONFIG_NET_CLS_BASIC=m
706CONFIG_NET_CLS_TCINDEX=m
707CONFIG_NET_CLS_ROUTE4=m
708CONFIG_NET_CLS_ROUTE=y
709CONFIG_NET_CLS_FW=m
710CONFIG_NET_CLS_U32=m
711CONFIG_CLS_U32_PERF=y
712CONFIG_CLS_U32_MARK=y
713CONFIG_NET_CLS_RSVP=m
714CONFIG_NET_CLS_RSVP6=m
715CONFIG_NET_CLS_FLOW=m
716# CONFIG_NET_EMATCH is not set
717# CONFIG_NET_CLS_ACT is not set
718CONFIG_NET_CLS_IND=y
719CONFIG_NET_SCH_FIFO=y
720# CONFIG_DCB is not set
721
722#
723# Network testing
724#
725# CONFIG_NET_PKTGEN is not set
726# CONFIG_NET_DROP_MONITOR is not set
727# CONFIG_HAMRADIO is not set
728# CONFIG_CAN is not set
729# CONFIG_IRDA is not set
730CONFIG_BT=y
731CONFIG_BT_L2CAP=y
732CONFIG_BT_SCO=y
733CONFIG_BT_RFCOMM=y
734CONFIG_BT_RFCOMM_TTY=y
735CONFIG_BT_BNEP=y
736CONFIG_BT_BNEP_MC_FILTER=y
737CONFIG_BT_BNEP_PROTO_FILTER=y
738CONFIG_BT_HIDP=y
739
740#
741# Bluetooth device drivers
742#
743CONFIG_BT_HCIBTUSB=y
744CONFIG_BT_HCIBTSDIO=y
745CONFIG_BT_HCIUART=y
746CONFIG_BT_HCIUART_H4=y
747CONFIG_BT_HCIUART_BCSP=y
748CONFIG_BT_HCIUART_LL=y
749CONFIG_BT_HCIBCM203X=y
750CONFIG_BT_HCIBPA10X=y
751CONFIG_BT_HCIBFUSB=y
752# CONFIG_BT_HCIVHCI is not set
753# CONFIG_BT_MRVL is not set
754CONFIG_AF_RXRPC=m
755# CONFIG_AF_RXRPC_DEBUG is not set
756# CONFIG_RXKAD is not set
757CONFIG_FIB_RULES=y
758CONFIG_WIRELESS=y
759CONFIG_CFG80211=m
760# CONFIG_NL80211_TESTMODE is not set
761# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
762# CONFIG_CFG80211_REG_DEBUG is not set
763CONFIG_CFG80211_DEFAULT_PS=y
764CONFIG_CFG80211_DEFAULT_PS_VALUE=1
765# CONFIG_CFG80211_DEBUGFS is not set
766# CONFIG_WIRELESS_OLD_REGULATORY is not set
767CONFIG_WIRELESS_EXT=y
768CONFIG_WIRELESS_EXT_SYSFS=y
769CONFIG_LIB80211=y
770# CONFIG_LIB80211_DEBUG is not set
771CONFIG_MAC80211=m
772CONFIG_MAC80211_RC_PID=y
773# CONFIG_MAC80211_RC_MINSTREL is not set
774CONFIG_MAC80211_RC_DEFAULT_PID=y
775# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
776CONFIG_MAC80211_RC_DEFAULT="pid"
777# CONFIG_MAC80211_MESH is not set
778# CONFIG_MAC80211_LEDS is not set
779# CONFIG_MAC80211_DEBUGFS is not set
780# CONFIG_MAC80211_DEBUG_MENU is not set
781CONFIG_WIMAX=m
782CONFIG_WIMAX_DEBUG_LEVEL=8
783# CONFIG_RFKILL is not set
784# CONFIG_NET_9P is not set
785
786#
787# Device Drivers
788#
789
790#
791# Generic Driver Options
792#
793CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
794# CONFIG_DEVTMPFS is not set
795CONFIG_STANDALONE=y
796CONFIG_PREVENT_FIRMWARE_BUILD=y
797CONFIG_FW_LOADER=y
798CONFIG_FIRMWARE_IN_KERNEL=y
799CONFIG_EXTRA_FIRMWARE=""
800# CONFIG_DEBUG_DRIVER is not set
801# CONFIG_DEBUG_DEVRES is not set
802# CONFIG_SYS_HYPERVISOR is not set
803# CONFIG_CONNECTOR is not set
804CONFIG_MTD=y
805# CONFIG_MTD_DEBUG is not set
806# CONFIG_MTD_TESTS is not set
807CONFIG_MTD_CONCAT=y
808CONFIG_MTD_PARTITIONS=y
809# CONFIG_MTD_REDBOOT_PARTS is not set
810# CONFIG_MTD_CMDLINE_PARTS is not set
811# CONFIG_MTD_AFS_PARTS is not set
812# CONFIG_MTD_AR7_PARTS is not set
813
814#
815# User Modules And Translation Layers
816#
817CONFIG_MTD_CHAR=y
818CONFIG_MTD_BLKDEVS=y
819CONFIG_MTD_BLOCK=y
820# CONFIG_FTL is not set
821# CONFIG_NFTL is not set
822# CONFIG_INFTL is not set
823# CONFIG_RFD_FTL is not set
824# CONFIG_SSFDC is not set
825# CONFIG_MTD_OOPS is not set
826
827#
828# RAM/ROM/Flash chip drivers
829#
830# CONFIG_MTD_CFI is not set
831# CONFIG_MTD_JEDECPROBE is not set
832CONFIG_MTD_MAP_BANK_WIDTH_1=y
833CONFIG_MTD_MAP_BANK_WIDTH_2=y
834CONFIG_MTD_MAP_BANK_WIDTH_4=y
835# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
836# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
837# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
838CONFIG_MTD_CFI_I1=y
839CONFIG_MTD_CFI_I2=y
840# CONFIG_MTD_CFI_I4 is not set
841# CONFIG_MTD_CFI_I8 is not set
842# CONFIG_MTD_RAM is not set
843# CONFIG_MTD_ROM is not set
844# CONFIG_MTD_ABSENT is not set
845
846#
847# Mapping drivers for chip access
848#
849# CONFIG_MTD_COMPLEX_MAPPINGS is not set
850# CONFIG_MTD_PLATRAM is not set
851
852#
853# Self-contained MTD device drivers
854#
855# CONFIG_MTD_DATAFLASH is not set
856# CONFIG_MTD_M25P80 is not set
857# CONFIG_MTD_SST25L is not set
858# CONFIG_MTD_SLRAM is not set
859# CONFIG_MTD_PHRAM is not set
860# CONFIG_MTD_MTDRAM is not set
861# CONFIG_MTD_BLOCK2MTD is not set
862
863#
864# Disk-On-Chip Device Drivers
865#
866# CONFIG_MTD_DOC2000 is not set
867# CONFIG_MTD_DOC2001 is not set
868# CONFIG_MTD_DOC2001PLUS is not set
869CONFIG_MTD_NAND=y
870# CONFIG_MTD_NAND_VERIFY_WRITE is not set
871# CONFIG_MTD_NAND_ECC_SMC is not set
872# CONFIG_MTD_NAND_MUSEUM_IDS is not set
873# CONFIG_MTD_NAND_GPIO is not set
874CONFIG_MTD_NAND_OMAP2=y
875CONFIG_MTD_NAND_OMAP_PREFETCH=y
876# CONFIG_MTD_NAND_OMAP_PREFETCH_DMA is not set
877CONFIG_MTD_NAND_IDS=y
878# CONFIG_MTD_NAND_DISKONCHIP is not set
879# CONFIG_MTD_NAND_NANDSIM is not set
880CONFIG_MTD_NAND_PLATFORM=y
881# CONFIG_MTD_ALAUDA is not set
882# CONFIG_MTD_ONENAND is not set
883
884#
885# LPDDR flash memory drivers
886#
887# CONFIG_MTD_LPDDR is not set
888
889#
890# UBI - Unsorted block images
891#
892CONFIG_MTD_UBI=y
893CONFIG_MTD_UBI_WL_THRESHOLD=4096
894CONFIG_MTD_UBI_BEB_RESERVE=1
895# CONFIG_MTD_UBI_GLUEBI is not set
896
897#
898# UBI debugging options
899#
900# CONFIG_MTD_UBI_DEBUG is not set
901# CONFIG_PARPORT is not set
902CONFIG_BLK_DEV=y
903# CONFIG_BLK_DEV_COW_COMMON is not set
904CONFIG_BLK_DEV_LOOP=y
905CONFIG_BLK_DEV_CRYPTOLOOP=m
906# CONFIG_BLK_DEV_NBD is not set
907# CONFIG_BLK_DEV_UB is not set
908CONFIG_BLK_DEV_RAM=y
909CONFIG_BLK_DEV_RAM_COUNT=16
910CONFIG_BLK_DEV_RAM_SIZE=16384
911# CONFIG_BLK_DEV_XIP is not set
912CONFIG_CDROM_PKTCDVD=m
913CONFIG_CDROM_PKTCDVD_BUFFERS=8
914# CONFIG_CDROM_PKTCDVD_WCACHE is not set
915# CONFIG_ATA_OVER_ETH is not set
916# CONFIG_MG_DISK is not set
917CONFIG_MISC_DEVICES=y
918# CONFIG_ICS932S401 is not set
919# CONFIG_ENCLOSURE_SERVICES is not set
920# CONFIG_ISL29003 is not set
921# CONFIG_C2PORT is not set
922
923#
924# EEPROM support
925#
926# CONFIG_EEPROM_AT24 is not set
927# CONFIG_EEPROM_AT25 is not set
928# CONFIG_EEPROM_LEGACY is not set
929# CONFIG_EEPROM_MAX6875 is not set
930CONFIG_EEPROM_93CX6=y
931CONFIG_HAVE_IDE=y
932# CONFIG_IDE is not set
933
934#
935# SCSI device support
936#
937CONFIG_RAID_ATTRS=m
938CONFIG_SCSI=y
939CONFIG_SCSI_DMA=y
940# CONFIG_SCSI_TGT is not set
941# CONFIG_SCSI_NETLINK is not set
942CONFIG_SCSI_PROC_FS=y
943
944#
945# SCSI support type (disk, tape, CD-ROM)
946#
947CONFIG_BLK_DEV_SD=y
948# CONFIG_CHR_DEV_ST is not set
949# CONFIG_CHR_DEV_OSST is not set
950CONFIG_BLK_DEV_SR=y
951CONFIG_BLK_DEV_SR_VENDOR=y
952CONFIG_CHR_DEV_SG=y
953CONFIG_CHR_DEV_SCH=m
954CONFIG_SCSI_MULTI_LUN=y
955# CONFIG_SCSI_CONSTANTS is not set
956# CONFIG_SCSI_LOGGING is not set
957# CONFIG_SCSI_SCAN_ASYNC is not set
958CONFIG_SCSI_WAIT_SCAN=m
959
960#
961# SCSI Transports
962#
963# CONFIG_SCSI_SPI_ATTRS is not set
964# CONFIG_SCSI_FC_ATTRS is not set
965CONFIG_SCSI_ISCSI_ATTRS=m
966# CONFIG_SCSI_SAS_LIBSAS is not set
967# CONFIG_SCSI_SRP_ATTRS is not set
968CONFIG_SCSI_LOWLEVEL=y
969CONFIG_ISCSI_TCP=m
970# CONFIG_LIBFC is not set
971# CONFIG_LIBFCOE is not set
972# CONFIG_SCSI_DEBUG is not set
973# CONFIG_SCSI_DH is not set
974# CONFIG_SCSI_OSD_INITIATOR is not set
975# CONFIG_ATA is not set
976CONFIG_MD=y
977CONFIG_BLK_DEV_MD=m
978CONFIG_MD_LINEAR=m
979CONFIG_MD_RAID0=m
980CONFIG_MD_RAID1=m
981CONFIG_MD_RAID10=m
982CONFIG_MD_RAID456=m
983CONFIG_MD_RAID6_PQ=m
984# CONFIG_ASYNC_RAID6_TEST is not set
985CONFIG_MD_MULTIPATH=m
986CONFIG_MD_FAULTY=m
987CONFIG_BLK_DEV_DM=m
988# CONFIG_DM_DEBUG is not set
989CONFIG_DM_CRYPT=m
990CONFIG_DM_SNAPSHOT=m
991CONFIG_DM_MIRROR=m
992# CONFIG_DM_LOG_USERSPACE is not set
993CONFIG_DM_ZERO=m
994CONFIG_DM_MULTIPATH=m
995# CONFIG_DM_MULTIPATH_QL is not set
996# CONFIG_DM_MULTIPATH_ST is not set
997CONFIG_DM_DELAY=m
998# CONFIG_DM_UEVENT is not set
999CONFIG_NETDEVICES=y
1000CONFIG_DUMMY=m
1001CONFIG_BONDING=m
1002CONFIG_MACVLAN=m
1003CONFIG_EQUALIZER=m
1004CONFIG_TUN=m
1005CONFIG_VETH=m
1006# CONFIG_NET_ETHERNET is not set
1007# CONFIG_NETDEV_1000 is not set
1008# CONFIG_NETDEV_10000 is not set
1009CONFIG_WLAN=y
1010# CONFIG_WLAN_PRE80211 is not set
1011CONFIG_WLAN_80211=y
1012# CONFIG_LIBERTAS is not set
1013# CONFIG_LIBERTAS_THINFIRM is not set
1014# CONFIG_AT76C50X_USB is not set
1015# CONFIG_USB_ZD1201 is not set
1016# CONFIG_USB_NET_RNDIS_WLAN is not set
1017# CONFIG_RTL8187 is not set
1018# CONFIG_MAC80211_HWSIM is not set
1019# CONFIG_P54_COMMON is not set
1020# CONFIG_ATH_COMMON is not set
1021# CONFIG_HOSTAP is not set
1022# CONFIG_B43 is not set
1023# CONFIG_B43LEGACY is not set
1024# CONFIG_ZD1211RW is not set
1025# CONFIG_RT2X00 is not set
1026# CONFIG_WL12XX is not set
1027# CONFIG_IWM is not set
1028
1029#
1030# WiMAX Wireless Broadband devices
1031#
1032# CONFIG_WIMAX_I2400M_USB is not set
1033# CONFIG_WIMAX_I2400M_SDIO is not set
1034
1035#
1036# USB Network Adapters
1037#
1038# CONFIG_USB_CATC is not set
1039# CONFIG_USB_KAWETH is not set
1040# CONFIG_USB_PEGASUS is not set
1041# CONFIG_USB_RTL8150 is not set
1042# CONFIG_USB_USBNET is not set
1043# CONFIG_WAN is not set
1044# CONFIG_ATM_DRIVERS is not set
1045CONFIG_PPP=m
1046CONFIG_PPP_MULTILINK=y
1047CONFIG_PPP_FILTER=y
1048CONFIG_PPP_ASYNC=m
1049CONFIG_PPP_SYNC_TTY=m
1050CONFIG_PPP_DEFLATE=m
1051CONFIG_PPP_BSDCOMP=m
1052CONFIG_PPP_MPPE=m
1053CONFIG_PPPOE=m
1054# CONFIG_PPPOATM is not set
1055CONFIG_PPPOL2TP=m
1056# CONFIG_SLIP is not set
1057CONFIG_SLHC=m
1058CONFIG_NETCONSOLE=m
1059CONFIG_NETCONSOLE_DYNAMIC=y
1060CONFIG_NETPOLL=y
1061CONFIG_NETPOLL_TRAP=y
1062CONFIG_NET_POLL_CONTROLLER=y
1063# CONFIG_ISDN is not set
1064# CONFIG_PHONE is not set
1065
1066#
1067# Input device support
1068#
1069CONFIG_INPUT=y
1070CONFIG_INPUT_FF_MEMLESS=y
1071# CONFIG_INPUT_POLLDEV is not set
1072
1073#
1074# Userland interfaces
1075#
1076CONFIG_INPUT_MOUSEDEV=y
1077CONFIG_INPUT_MOUSEDEV_PSAUX=y
1078CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
1079CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1080# CONFIG_INPUT_JOYDEV is not set
1081CONFIG_INPUT_EVDEV=y
1082# CONFIG_INPUT_EVBUG is not set
1083
1084#
1085# Input Device Drivers
1086#
1087CONFIG_INPUT_KEYBOARD=y
1088# CONFIG_KEYBOARD_ADP5588 is not set
1089# CONFIG_KEYBOARD_ATKBD is not set
1090# CONFIG_QT2160 is not set
1091# CONFIG_KEYBOARD_LKKBD is not set
1092CONFIG_KEYBOARD_GPIO=y
1093# CONFIG_KEYBOARD_MATRIX is not set
1094# CONFIG_KEYBOARD_LM8323 is not set
1095# CONFIG_KEYBOARD_MAX7359 is not set
1096# CONFIG_KEYBOARD_NEWTON is not set
1097# CONFIG_KEYBOARD_OPENCORES is not set
1098# CONFIG_KEYBOARD_STOWAWAY is not set
1099# CONFIG_KEYBOARD_SUNKBD is not set
1100# CONFIG_KEYBOARD_TWL4030 is not set
1101# CONFIG_KEYBOARD_XTKBD is not set
1102CONFIG_INPUT_MOUSE=y
1103CONFIG_MOUSE_PS2=y
1104CONFIG_MOUSE_PS2_ALPS=y
1105CONFIG_MOUSE_PS2_LOGIPS2PP=y
1106CONFIG_MOUSE_PS2_SYNAPTICS=y
1107CONFIG_MOUSE_PS2_TRACKPOINT=y
1108# CONFIG_MOUSE_PS2_ELANTECH is not set
1109# CONFIG_MOUSE_PS2_SENTELIC is not set
1110# CONFIG_MOUSE_PS2_TOUCHKIT is not set
1111# CONFIG_MOUSE_SERIAL is not set
1112# CONFIG_MOUSE_APPLETOUCH is not set
1113# CONFIG_MOUSE_BCM5974 is not set
1114# CONFIG_MOUSE_VSXXXAA is not set
1115# CONFIG_MOUSE_GPIO is not set
1116# CONFIG_MOUSE_SYNAPTICS_I2C is not set
1117# CONFIG_INPUT_JOYSTICK is not set
1118# CONFIG_INPUT_TABLET is not set
1119CONFIG_INPUT_TOUCHSCREEN=y
1120CONFIG_TOUCHSCREEN_ADS7846=y
1121# CONFIG_TOUCHSCREEN_AD7877 is not set
1122# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
1123# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
1124# CONFIG_TOUCHSCREEN_AD7879 is not set
1125# CONFIG_TOUCHSCREEN_EETI is not set
1126# CONFIG_TOUCHSCREEN_FUJITSU is not set
1127# CONFIG_TOUCHSCREEN_GUNZE is not set
1128# CONFIG_TOUCHSCREEN_ELO is not set
1129# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
1130# CONFIG_TOUCHSCREEN_MCS5000 is not set
1131# CONFIG_TOUCHSCREEN_MTOUCH is not set
1132# CONFIG_TOUCHSCREEN_INEXIO is not set
1133# CONFIG_TOUCHSCREEN_MK712 is not set
1134# CONFIG_TOUCHSCREEN_PENMOUNT is not set
1135# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
1136# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
1137# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
1138# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
1139# CONFIG_TOUCHSCREEN_TSC2007 is not set
1140# CONFIG_TOUCHSCREEN_W90X900 is not set
1141CONFIG_INPUT_MISC=y
1142# CONFIG_INPUT_ATI_REMOTE is not set
1143# CONFIG_INPUT_ATI_REMOTE2 is not set
1144# CONFIG_INPUT_KEYSPAN_REMOTE is not set
1145# CONFIG_INPUT_POWERMATE is not set
1146# CONFIG_INPUT_YEALINK is not set
1147# CONFIG_INPUT_CM109 is not set
1148CONFIG_INPUT_TWL4030_PWRBUTTON=y
1149CONFIG_INPUT_UINPUT=y
1150# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
1151
1152#
1153# Hardware I/O ports
1154#
1155CONFIG_SERIO=y
1156CONFIG_SERIO_SERPORT=y
1157CONFIG_SERIO_LIBPS2=y
1158# CONFIG_SERIO_RAW is not set
1159# CONFIG_GAMEPORT is not set
1160
1161#
1162# Character devices
1163#
1164CONFIG_VT=y
1165CONFIG_CONSOLE_TRANSLATIONS=y
1166CONFIG_VT_CONSOLE=y
1167CONFIG_HW_CONSOLE=y
1168CONFIG_VT_HW_CONSOLE_BINDING=y
1169CONFIG_DEVKMEM=y
1170# CONFIG_SERIAL_NONSTANDARD is not set
1171
1172#
1173# Serial drivers
1174#
1175CONFIG_SERIAL_8250=y
1176CONFIG_SERIAL_8250_CONSOLE=y
1177CONFIG_SERIAL_8250_NR_UARTS=32
1178CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1179CONFIG_SERIAL_8250_EXTENDED=y
1180CONFIG_SERIAL_8250_MANY_PORTS=y
1181CONFIG_SERIAL_8250_SHARE_IRQ=y
1182CONFIG_SERIAL_8250_DETECT_IRQ=y
1183CONFIG_SERIAL_8250_RSA=y
1184
1185#
1186# Non-8250 serial port support
1187#
1188# CONFIG_SERIAL_MAX3100 is not set
1189CONFIG_SERIAL_CORE=y
1190CONFIG_SERIAL_CORE_CONSOLE=y
1191CONFIG_UNIX98_PTYS=y
1192# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1193# CONFIG_LEGACY_PTYS is not set
1194# CONFIG_IPMI_HANDLER is not set
1195CONFIG_HW_RANDOM=y
1196# CONFIG_HW_RANDOM_TIMERIOMEM is not set
1197# CONFIG_R3964 is not set
1198# CONFIG_RAW_DRIVER is not set
1199# CONFIG_TCG_TPM is not set
1200CONFIG_I2C=y
1201CONFIG_I2C_BOARDINFO=y
1202CONFIG_I2C_COMPAT=y
1203CONFIG_I2C_CHARDEV=y
1204CONFIG_I2C_HELPER_AUTO=y
1205
1206#
1207# I2C Hardware Bus support
1208#
1209
1210#
1211# I2C system bus drivers (mostly embedded / system-on-chip)
1212#
1213# CONFIG_I2C_DESIGNWARE is not set
1214# CONFIG_I2C_GPIO is not set
1215# CONFIG_I2C_OCORES is not set
1216CONFIG_I2C_OMAP=y
1217# CONFIG_I2C_SIMTEC is not set
1218
1219#
1220# External I2C/SMBus adapter drivers
1221#
1222# CONFIG_I2C_PARPORT_LIGHT is not set
1223# CONFIG_I2C_TAOS_EVM is not set
1224# CONFIG_I2C_TINY_USB is not set
1225
1226#
1227# Other I2C/SMBus bus drivers
1228#
1229# CONFIG_I2C_PCA_PLATFORM is not set
1230# CONFIG_I2C_STUB is not set
1231
1232#
1233# Miscellaneous I2C Chip support
1234#
1235# CONFIG_DS1682 is not set
1236# CONFIG_SENSORS_TSL2550 is not set
1237# CONFIG_I2C_DEBUG_CORE is not set
1238# CONFIG_I2C_DEBUG_ALGO is not set
1239# CONFIG_I2C_DEBUG_BUS is not set
1240# CONFIG_I2C_DEBUG_CHIP is not set
1241CONFIG_SPI=y
1242# CONFIG_SPI_DEBUG is not set
1243CONFIG_SPI_MASTER=y
1244
1245#
1246# SPI Master Controller Drivers
1247#
1248# CONFIG_SPI_BITBANG is not set
1249# CONFIG_SPI_GPIO is not set
1250CONFIG_SPI_OMAP24XX=y
1251
1252#
1253# SPI Protocol Masters
1254#
1255CONFIG_SPI_SPIDEV=y
1256# CONFIG_SPI_TLE62X0 is not set
1257
1258#
1259# PPS support
1260#
1261# CONFIG_PPS is not set
1262CONFIG_ARCH_REQUIRE_GPIOLIB=y
1263CONFIG_GPIOLIB=y
1264# CONFIG_DEBUG_GPIO is not set
1265CONFIG_GPIO_SYSFS=y
1266
1267#
1268# Memory mapped GPIO expanders:
1269#
1270
1271#
1272# I2C GPIO expanders:
1273#
1274# CONFIG_GPIO_MAX732X is not set
1275# CONFIG_GPIO_PCA953X is not set
1276# CONFIG_GPIO_PCF857X is not set
1277CONFIG_GPIO_TWL4030=y
1278
1279#
1280# PCI GPIO expanders:
1281#
1282
1283#
1284# SPI GPIO expanders:
1285#
1286# CONFIG_GPIO_MAX7301 is not set
1287# CONFIG_GPIO_MCP23S08 is not set
1288# CONFIG_GPIO_MC33880 is not set
1289
1290#
1291# AC97 GPIO expanders:
1292#
1293# CONFIG_W1 is not set
1294CONFIG_POWER_SUPPLY=y
1295# CONFIG_POWER_SUPPLY_DEBUG is not set
1296# CONFIG_PDA_POWER is not set
1297# CONFIG_BATTERY_DS2760 is not set
1298# CONFIG_BATTERY_DS2782 is not set
1299CONFIG_BATTERY_BQ27x00=y
1300# CONFIG_BATTERY_MAX17040 is not set
1301CONFIG_HWMON=y
1302# CONFIG_HWMON_VID is not set
1303# CONFIG_HWMON_DEBUG_CHIP is not set
1304
1305#
1306# Native drivers
1307#
1308# CONFIG_SENSORS_AD7414 is not set
1309# CONFIG_SENSORS_AD7418 is not set
1310# CONFIG_SENSORS_ADCXX is not set
1311# CONFIG_SENSORS_ADM1021 is not set
1312# CONFIG_SENSORS_ADM1025 is not set
1313# CONFIG_SENSORS_ADM1026 is not set
1314# CONFIG_SENSORS_ADM1029 is not set
1315# CONFIG_SENSORS_ADM1031 is not set
1316# CONFIG_SENSORS_ADM9240 is not set
1317# CONFIG_SENSORS_ADT7462 is not set
1318# CONFIG_SENSORS_ADT7470 is not set
1319# CONFIG_SENSORS_ADT7473 is not set
1320# CONFIG_SENSORS_ADT7475 is not set
1321# CONFIG_SENSORS_ATXP1 is not set
1322# CONFIG_SENSORS_DS1621 is not set
1323# CONFIG_SENSORS_F71805F is not set
1324# CONFIG_SENSORS_F71882FG is not set
1325# CONFIG_SENSORS_F75375S is not set
1326# CONFIG_SENSORS_G760A is not set
1327# CONFIG_SENSORS_GL518SM is not set
1328# CONFIG_SENSORS_GL520SM is not set
1329# CONFIG_SENSORS_IT87 is not set
1330# CONFIG_SENSORS_LM63 is not set
1331# CONFIG_SENSORS_LM70 is not set
1332# CONFIG_SENSORS_LM75 is not set
1333# CONFIG_SENSORS_LM77 is not set
1334# CONFIG_SENSORS_LM78 is not set
1335# CONFIG_SENSORS_LM80 is not set
1336# CONFIG_SENSORS_LM83 is not set
1337# CONFIG_SENSORS_LM85 is not set
1338# CONFIG_SENSORS_LM87 is not set
1339# CONFIG_SENSORS_LM90 is not set
1340# CONFIG_SENSORS_LM92 is not set
1341# CONFIG_SENSORS_LM93 is not set
1342# CONFIG_SENSORS_LTC4215 is not set
1343# CONFIG_SENSORS_LTC4245 is not set
1344# CONFIG_SENSORS_LM95241 is not set
1345# CONFIG_SENSORS_MAX1111 is not set
1346# CONFIG_SENSORS_MAX1619 is not set
1347# CONFIG_SENSORS_MAX6650 is not set
1348# CONFIG_SENSORS_PC87360 is not set
1349# CONFIG_SENSORS_PC87427 is not set
1350# CONFIG_SENSORS_PCF8591 is not set
1351# CONFIG_SENSORS_SHT15 is not set
1352# CONFIG_SENSORS_DME1737 is not set
1353# CONFIG_SENSORS_SMSC47M1 is not set
1354# CONFIG_SENSORS_SMSC47M192 is not set
1355# CONFIG_SENSORS_SMSC47B397 is not set
1356# CONFIG_SENSORS_ADS7828 is not set
1357# CONFIG_SENSORS_THMC50 is not set
1358# CONFIG_SENSORS_TMP401 is not set
1359# CONFIG_SENSORS_TMP421 is not set
1360# CONFIG_SENSORS_VT1211 is not set
1361# CONFIG_SENSORS_W83781D is not set
1362# CONFIG_SENSORS_W83791D is not set
1363# CONFIG_SENSORS_W83792D is not set
1364# CONFIG_SENSORS_W83793 is not set
1365# CONFIG_SENSORS_W83L785TS is not set
1366# CONFIG_SENSORS_W83L786NG is not set
1367# CONFIG_SENSORS_W83627HF is not set
1368# CONFIG_SENSORS_W83627EHF is not set
1369# CONFIG_SENSORS_LIS3_SPI is not set
1370CONFIG_THERMAL=y
1371CONFIG_THERMAL_HWMON=y
1372CONFIG_WATCHDOG=y
1373CONFIG_WATCHDOG_NOWAYOUT=y
1374
1375#
1376# Watchdog Device Drivers
1377#
1378# CONFIG_SOFT_WATCHDOG is not set
1379CONFIG_OMAP_WATCHDOG=y
1380# CONFIG_TWL4030_WATCHDOG is not set
1381
1382#
1383# USB-based Watchdog Cards
1384#
1385# CONFIG_USBPCWATCHDOG is not set
1386CONFIG_SSB_POSSIBLE=y
1387
1388#
1389# Sonics Silicon Backplane
1390#
1391# CONFIG_SSB is not set
1392
1393#
1394# Multifunction device drivers
1395#
1396# CONFIG_MFD_CORE is not set
1397# CONFIG_MFD_SM501 is not set
1398# CONFIG_MFD_ASIC3 is not set
1399# CONFIG_HTC_EGPIO is not set
1400# CONFIG_HTC_PASIC3 is not set
1401# CONFIG_TPS65010 is not set
1402CONFIG_TWL4030_CORE=y
1403# CONFIG_TWL4030_POWER is not set
1404# CONFIG_TWL4030_CODEC is not set
1405# CONFIG_MFD_TMIO is not set
1406# CONFIG_MFD_T7L66XB is not set
1407# CONFIG_MFD_TC6387XB is not set
1408# CONFIG_MFD_TC6393XB is not set
1409# CONFIG_PMIC_DA903X is not set
1410# CONFIG_MFD_WM8400 is not set
1411# CONFIG_MFD_WM831X is not set
1412# CONFIG_MFD_WM8350_I2C is not set
1413# CONFIG_MFD_PCF50633 is not set
1414# CONFIG_MFD_MC13783 is not set
1415# CONFIG_AB3100_CORE is not set
1416# CONFIG_EZX_PCAP is not set
1417CONFIG_REGULATOR=y
1418# CONFIG_REGULATOR_DEBUG is not set
1419# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1420# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1421# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
1422# CONFIG_REGULATOR_BQ24022 is not set
1423# CONFIG_REGULATOR_MAX1586 is not set
1424CONFIG_REGULATOR_TWL4030=y
1425# CONFIG_REGULATOR_LP3971 is not set
1426# CONFIG_REGULATOR_TPS65023 is not set
1427# CONFIG_REGULATOR_TPS6507X is not set
1428# CONFIG_MEDIA_SUPPORT is not set
1429
1430#
1431# Graphics support
1432#
1433# CONFIG_VGASTATE is not set
1434# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1435CONFIG_FB=y
1436# CONFIG_FIRMWARE_EDID is not set
1437# CONFIG_FB_DDC is not set
1438# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1439# CONFIG_FB_CFB_FILLRECT is not set
1440# CONFIG_FB_CFB_COPYAREA is not set
1441# CONFIG_FB_CFB_IMAGEBLIT is not set
1442# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1443# CONFIG_FB_SYS_FILLRECT is not set
1444# CONFIG_FB_SYS_COPYAREA is not set
1445# CONFIG_FB_SYS_IMAGEBLIT is not set
1446# CONFIG_FB_FOREIGN_ENDIAN is not set
1447# CONFIG_FB_SYS_FOPS is not set
1448# CONFIG_FB_SVGALIB is not set
1449# CONFIG_FB_MACMODES is not set
1450# CONFIG_FB_BACKLIGHT is not set
1451# CONFIG_FB_MODE_HELPERS is not set
1452# CONFIG_FB_TILEBLITTING is not set
1453
1454#
1455# Frame buffer hardware drivers
1456#
1457# CONFIG_FB_S1D13XXX is not set
1458# CONFIG_FB_VIRTUAL is not set
1459# CONFIG_FB_METRONOME is not set
1460# CONFIG_FB_MB862XX is not set
1461# CONFIG_FB_BROADSHEET is not set
1462# CONFIG_FB_OMAP is not set
1463# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1464CONFIG_BACKLIGHT_CLASS_DEVICE=y
1465CONFIG_BACKLIGHT_GENERIC=y
1466
1467#
1468# Display device support
1469#
1470CONFIG_DISPLAY_SUPPORT=y
1471
1472#
1473# Display hardware drivers
1474#
1475
1476#
1477# Console display driver support
1478#
1479# CONFIG_VGA_CONSOLE is not set
1480CONFIG_DUMMY_CONSOLE=y
1481CONFIG_FRAMEBUFFER_CONSOLE=y
1482# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
1483CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
1484# CONFIG_FONTS is not set
1485CONFIG_FONT_8x8=y
1486CONFIG_FONT_8x16=y
1487CONFIG_LOGO=y
1488CONFIG_LOGO_LINUX_MONO=y
1489CONFIG_LOGO_LINUX_VGA16=y
1490CONFIG_LOGO_LINUX_CLUT224=y
1491CONFIG_SOUND=y
1492CONFIG_SOUND_OSS_CORE=y
1493CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1494CONFIG_SND=y
1495CONFIG_SND_TIMER=y
1496CONFIG_SND_PCM=y
1497CONFIG_SND_HWDEP=y
1498CONFIG_SND_RAWMIDI=y
1499CONFIG_SND_JACK=y
1500CONFIG_SND_SEQUENCER=m
1501# CONFIG_SND_SEQ_DUMMY is not set
1502CONFIG_SND_OSSEMUL=y
1503CONFIG_SND_MIXER_OSS=y
1504CONFIG_SND_PCM_OSS=y
1505CONFIG_SND_PCM_OSS_PLUGINS=y
1506CONFIG_SND_SEQUENCER_OSS=y
1507CONFIG_SND_HRTIMER=m
1508CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
1509# CONFIG_SND_DYNAMIC_MINORS is not set
1510CONFIG_SND_SUPPORT_OLD_API=y
1511CONFIG_SND_VERBOSE_PROCFS=y
1512# CONFIG_SND_VERBOSE_PRINTK is not set
1513# CONFIG_SND_DEBUG is not set
1514CONFIG_SND_RAWMIDI_SEQ=m
1515# CONFIG_SND_OPL3_LIB_SEQ is not set
1516# CONFIG_SND_OPL4_LIB_SEQ is not set
1517# CONFIG_SND_SBAWE_SEQ is not set
1518# CONFIG_SND_EMU10K1_SEQ is not set
1519CONFIG_SND_DRIVERS=y
1520# CONFIG_SND_DUMMY is not set
1521# CONFIG_SND_VIRMIDI is not set
1522# CONFIG_SND_MTPAV is not set
1523# CONFIG_SND_SERIAL_U16550 is not set
1524# CONFIG_SND_MPU401 is not set
1525# CONFIG_SND_ARM is not set
1526CONFIG_SND_SPI=y
1527CONFIG_SND_USB=y
1528CONFIG_SND_USB_AUDIO=y
1529CONFIG_SND_USB_CAIAQ=m
1530CONFIG_SND_USB_CAIAQ_INPUT=y
1531CONFIG_SND_SOC=y
1532CONFIG_SND_OMAP_SOC=y
1533CONFIG_SND_SOC_I2C_AND_SPI=y
1534# CONFIG_SND_SOC_ALL_CODECS is not set
1535# CONFIG_SOUND_PRIME is not set
1536CONFIG_HID_SUPPORT=y
1537CONFIG_HID=y
1538# CONFIG_HIDRAW is not set
1539
1540#
1541# USB Input Devices
1542#
1543CONFIG_USB_HID=y
1544# CONFIG_HID_PID is not set
1545# CONFIG_USB_HIDDEV is not set
1546
1547#
1548# Special HID drivers
1549#
1550# CONFIG_HID_A4TECH is not set
1551# CONFIG_HID_APPLE is not set
1552# CONFIG_HID_BELKIN is not set
1553# CONFIG_HID_CHERRY is not set
1554# CONFIG_HID_CHICONY is not set
1555# CONFIG_HID_CYPRESS is not set
1556# CONFIG_HID_DRAGONRISE is not set
1557# CONFIG_HID_EZKEY is not set
1558# CONFIG_HID_KYE is not set
1559# CONFIG_HID_GYRATION is not set
1560# CONFIG_HID_TWINHAN is not set
1561# CONFIG_HID_KENSINGTON is not set
1562# CONFIG_HID_LOGITECH is not set
1563# CONFIG_HID_MICROSOFT is not set
1564# CONFIG_HID_MONTEREY is not set
1565# CONFIG_HID_NTRIG is not set
1566# CONFIG_HID_PANTHERLORD is not set
1567# CONFIG_HID_PETALYNX is not set
1568# CONFIG_HID_SAMSUNG is not set
1569# CONFIG_HID_SONY is not set
1570# CONFIG_HID_SUNPLUS is not set
1571# CONFIG_HID_GREENASIA is not set
1572# CONFIG_HID_SMARTJOYPLUS is not set
1573# CONFIG_HID_TOPSEED is not set
1574# CONFIG_HID_THRUSTMASTER is not set
1575# CONFIG_HID_WACOM is not set
1576# CONFIG_HID_ZEROPLUS is not set
1577CONFIG_USB_SUPPORT=y
1578CONFIG_USB_ARCH_HAS_HCD=y
1579CONFIG_USB_ARCH_HAS_OHCI=y
1580# CONFIG_USB_ARCH_HAS_EHCI is not set
1581CONFIG_USB=y
1582# CONFIG_USB_DEBUG is not set
1583# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1584
1585#
1586# Miscellaneous USB options
1587#
1588CONFIG_USB_DEVICEFS=y
1589CONFIG_USB_DEVICE_CLASS=y
1590# CONFIG_USB_DYNAMIC_MINORS is not set
1591CONFIG_USB_SUSPEND=y
1592CONFIG_USB_OTG=y
1593# CONFIG_USB_OTG_WHITELIST is not set
1594# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1595CONFIG_USB_MON=y
1596# CONFIG_USB_WUSB is not set
1597# CONFIG_USB_WUSB_CBAF is not set
1598
1599#
1600# USB Host Controller Drivers
1601#
1602# CONFIG_USB_C67X00_HCD is not set
1603CONFIG_USB_OXU210HP_HCD=y
1604# CONFIG_USB_ISP116X_HCD is not set
1605# CONFIG_USB_ISP1760_HCD is not set
1606# CONFIG_USB_ISP1362_HCD is not set
1607# CONFIG_USB_OHCI_HCD is not set
1608# CONFIG_USB_SL811_HCD is not set
1609# CONFIG_USB_R8A66597_HCD is not set
1610# CONFIG_USB_HWA_HCD is not set
1611CONFIG_USB_MUSB_HDRC=y
1612CONFIG_USB_MUSB_SOC=y
1613
1614#
1615# OMAP 343x high speed USB support
1616#
1617# CONFIG_USB_MUSB_HOST is not set
1618# CONFIG_USB_MUSB_PERIPHERAL is not set
1619CONFIG_USB_MUSB_OTG=y
1620CONFIG_USB_GADGET_MUSB_HDRC=y
1621CONFIG_USB_MUSB_HDRC_HCD=y
1622# CONFIG_MUSB_PIO_ONLY is not set
1623CONFIG_USB_INVENTRA_DMA=y
1624# CONFIG_USB_TI_CPPI_DMA is not set
1625# CONFIG_USB_MUSB_DEBUG is not set
1626
1627#
1628# USB Device Class drivers
1629#
1630CONFIG_USB_ACM=m
1631CONFIG_USB_PRINTER=m
1632CONFIG_USB_WDM=m
1633CONFIG_USB_TMC=m
1634
1635#
1636# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1637#
1638
1639#
1640# also be needed; see USB_STORAGE Help for more info
1641#
1642CONFIG_USB_STORAGE=y
1643# CONFIG_USB_STORAGE_DEBUG is not set
1644# CONFIG_USB_STORAGE_DATAFAB is not set
1645# CONFIG_USB_STORAGE_FREECOM is not set
1646# CONFIG_USB_STORAGE_ISD200 is not set
1647# CONFIG_USB_STORAGE_USBAT is not set
1648# CONFIG_USB_STORAGE_SDDR09 is not set
1649# CONFIG_USB_STORAGE_SDDR55 is not set
1650# CONFIG_USB_STORAGE_JUMPSHOT is not set
1651# CONFIG_USB_STORAGE_ALAUDA is not set
1652# CONFIG_USB_STORAGE_ONETOUCH is not set
1653# CONFIG_USB_STORAGE_KARMA is not set
1654# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1655# CONFIG_USB_LIBUSUAL is not set
1656
1657#
1658# USB Imaging devices
1659#
1660# CONFIG_USB_MDC800 is not set
1661# CONFIG_USB_MICROTEK is not set
1662
1663#
1664# USB port drivers
1665#
1666CONFIG_USB_SERIAL=m
1667CONFIG_USB_EZUSB=y
1668CONFIG_USB_SERIAL_GENERIC=y
1669CONFIG_USB_SERIAL_AIRCABLE=m
1670CONFIG_USB_SERIAL_ARK3116=m
1671CONFIG_USB_SERIAL_BELKIN=m
1672CONFIG_USB_SERIAL_CH341=m
1673CONFIG_USB_SERIAL_WHITEHEAT=m
1674CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1675# CONFIG_USB_SERIAL_CP210X is not set
1676CONFIG_USB_SERIAL_CYPRESS_M8=m
1677CONFIG_USB_SERIAL_EMPEG=m
1678CONFIG_USB_SERIAL_FTDI_SIO=m
1679CONFIG_USB_SERIAL_FUNSOFT=m
1680CONFIG_USB_SERIAL_VISOR=m
1681CONFIG_USB_SERIAL_IPAQ=m
1682CONFIG_USB_SERIAL_IR=m
1683CONFIG_USB_SERIAL_EDGEPORT=m
1684CONFIG_USB_SERIAL_EDGEPORT_TI=m
1685CONFIG_USB_SERIAL_GARMIN=m
1686CONFIG_USB_SERIAL_IPW=m
1687CONFIG_USB_SERIAL_IUU=m
1688CONFIG_USB_SERIAL_KEYSPAN_PDA=m
1689CONFIG_USB_SERIAL_KEYSPAN=m
1690CONFIG_USB_SERIAL_KEYSPAN_MPR=y
1691CONFIG_USB_SERIAL_KEYSPAN_USA28=y
1692CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
1693CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
1694CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
1695CONFIG_USB_SERIAL_KEYSPAN_USA19=y
1696CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
1697CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
1698CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
1699CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
1700CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
1701CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1702CONFIG_USB_SERIAL_KLSI=m
1703CONFIG_USB_SERIAL_KOBIL_SCT=m
1704CONFIG_USB_SERIAL_MCT_U232=m
1705CONFIG_USB_SERIAL_MOS7720=m
1706CONFIG_USB_SERIAL_MOS7840=m
1707CONFIG_USB_SERIAL_MOTOROLA=m
1708CONFIG_USB_SERIAL_NAVMAN=m
1709CONFIG_USB_SERIAL_PL2303=m
1710CONFIG_USB_SERIAL_OTI6858=m
1711# CONFIG_USB_SERIAL_QUALCOMM is not set
1712CONFIG_USB_SERIAL_SPCP8X5=m
1713CONFIG_USB_SERIAL_HP4X=m
1714CONFIG_USB_SERIAL_SAFE=m
1715# CONFIG_USB_SERIAL_SAFE_PADDED is not set
1716CONFIG_USB_SERIAL_SIEMENS_MPI=m
1717CONFIG_USB_SERIAL_SIERRAWIRELESS=m
1718# CONFIG_USB_SERIAL_SYMBOL is not set
1719CONFIG_USB_SERIAL_TI=m
1720CONFIG_USB_SERIAL_CYBERJACK=m
1721CONFIG_USB_SERIAL_XIRCOM=m
1722CONFIG_USB_SERIAL_OPTION=m
1723CONFIG_USB_SERIAL_OMNINET=m
1724CONFIG_USB_SERIAL_OPTICON=m
1725CONFIG_USB_SERIAL_DEBUG=m
1726
1727#
1728# USB Miscellaneous drivers
1729#
1730CONFIG_USB_EMI62=m
1731CONFIG_USB_EMI26=m
1732# CONFIG_USB_ADUTUX is not set
1733# CONFIG_USB_SEVSEG is not set
1734# CONFIG_USB_RIO500 is not set
1735# CONFIG_USB_LEGOTOWER is not set
1736# CONFIG_USB_LCD is not set
1737# CONFIG_USB_BERRY_CHARGE is not set
1738# CONFIG_USB_LED is not set
1739# CONFIG_USB_CYPRESS_CY7C63 is not set
1740# CONFIG_USB_CYTHERM is not set
1741# CONFIG_USB_IDMOUSE is not set
1742# CONFIG_USB_FTDI_ELAN is not set
1743# CONFIG_USB_APPLEDISPLAY is not set
1744CONFIG_USB_SISUSBVGA=m
1745CONFIG_USB_SISUSBVGA_CON=y
1746# CONFIG_USB_LD is not set
1747# CONFIG_USB_TRANCEVIBRATOR is not set
1748# CONFIG_USB_IOWARRIOR is not set
1749CONFIG_USB_TEST=m
1750# CONFIG_USB_ISIGHTFW is not set
1751# CONFIG_USB_VST is not set
1752# CONFIG_USB_ATM is not set
1753CONFIG_USB_GADGET=m
1754# CONFIG_USB_GADGET_DEBUG is not set
1755# CONFIG_USB_GADGET_DEBUG_FILES is not set
1756CONFIG_USB_GADGET_DEBUG_FS=y
1757CONFIG_USB_GADGET_VBUS_DRAW=2
1758CONFIG_USB_GADGET_SELECTED=y
1759# CONFIG_USB_GADGET_AT91 is not set
1760# CONFIG_USB_GADGET_ATMEL_USBA is not set
1761# CONFIG_USB_GADGET_FSL_USB2 is not set
1762# CONFIG_USB_GADGET_LH7A40X is not set
1763# CONFIG_USB_GADGET_OMAP is not set
1764# CONFIG_USB_GADGET_PXA25X is not set
1765# CONFIG_USB_GADGET_R8A66597 is not set
1766# CONFIG_USB_GADGET_PXA27X is not set
1767# CONFIG_USB_GADGET_S3C_HSOTG is not set
1768# CONFIG_USB_GADGET_IMX is not set
1769# CONFIG_USB_GADGET_S3C2410 is not set
1770# CONFIG_USB_GADGET_M66592 is not set
1771# CONFIG_USB_GADGET_AMD5536UDC is not set
1772# CONFIG_USB_GADGET_FSL_QE is not set
1773# CONFIG_USB_GADGET_CI13XXX is not set
1774# CONFIG_USB_GADGET_NET2280 is not set
1775# CONFIG_USB_GADGET_GOKU is not set
1776# CONFIG_USB_GADGET_LANGWELL is not set
1777# CONFIG_USB_GADGET_DUMMY_HCD is not set
1778CONFIG_USB_GADGET_DUALSPEED=y
1779CONFIG_USB_ZERO=m
1780CONFIG_USB_ZERO_HNPTEST=y
1781# CONFIG_USB_AUDIO is not set
1782CONFIG_USB_ETH=m
1783CONFIG_USB_ETH_RNDIS=y
1784# CONFIG_USB_ETH_EEM is not set
1785CONFIG_USB_GADGETFS=m
1786CONFIG_USB_FILE_STORAGE=m
1787# CONFIG_USB_FILE_STORAGE_TEST is not set
1788CONFIG_USB_G_SERIAL=m
1789CONFIG_USB_MIDI_GADGET=m
1790CONFIG_USB_G_PRINTER=m
1791CONFIG_USB_CDC_COMPOSITE=m
1792
1793#
1794# OTG and related infrastructure
1795#
1796CONFIG_USB_OTG_UTILS=y
1797CONFIG_USB_GPIO_VBUS=y
1798# CONFIG_ISP1301_OMAP is not set
1799CONFIG_TWL4030_USB=y
1800# CONFIG_NOP_USB_XCEIV is not set
1801CONFIG_MMC=y
1802# CONFIG_MMC_DEBUG is not set
1803CONFIG_MMC_UNSAFE_RESUME=y
1804
1805#
1806# MMC/SD/SDIO Card Drivers
1807#
1808CONFIG_MMC_BLOCK=y
1809CONFIG_MMC_BLOCK_BOUNCE=y
1810CONFIG_SDIO_UART=y
1811# CONFIG_MMC_TEST is not set
1812
1813#
1814# MMC/SD/SDIO Host Controller Drivers
1815#
1816# CONFIG_MMC_SDHCI is not set
1817# CONFIG_MMC_OMAP is not set
1818CONFIG_MMC_OMAP_HS=y
1819# CONFIG_MMC_AT91 is not set
1820# CONFIG_MMC_ATMELMCI is not set
1821CONFIG_MMC_SPI=m
1822# CONFIG_MEMSTICK is not set
1823CONFIG_NEW_LEDS=y
1824CONFIG_LEDS_CLASS=y
1825
1826#
1827# LED drivers
1828#
1829# CONFIG_LEDS_PCA9532 is not set
1830CONFIG_LEDS_GPIO=y
1831CONFIG_LEDS_GPIO_PLATFORM=y
1832# CONFIG_LEDS_LP3944 is not set
1833# CONFIG_LEDS_PCA955X is not set
1834# CONFIG_LEDS_DAC124S085 is not set
1835# CONFIG_LEDS_BD2802 is not set
1836
1837#
1838# LED Triggers
1839#
1840CONFIG_LEDS_TRIGGERS=y
1841CONFIG_LEDS_TRIGGER_TIMER=m
1842CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1843CONFIG_LEDS_TRIGGER_BACKLIGHT=m
1844# CONFIG_LEDS_TRIGGER_GPIO is not set
1845CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
1846
1847#
1848# iptables trigger is under Netfilter config (LED target)
1849#
1850# CONFIG_ACCESSIBILITY is not set
1851CONFIG_RTC_LIB=y
1852CONFIG_RTC_CLASS=y
1853CONFIG_RTC_HCTOSYS=y
1854CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1855# CONFIG_RTC_DEBUG is not set
1856
1857#
1858# RTC interfaces
1859#
1860CONFIG_RTC_INTF_SYSFS=y
1861CONFIG_RTC_INTF_PROC=y
1862CONFIG_RTC_INTF_DEV=y
1863# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1864# CONFIG_RTC_DRV_TEST is not set
1865
1866#
1867# I2C RTC drivers
1868#
1869# CONFIG_RTC_DRV_DS1307 is not set
1870# CONFIG_RTC_DRV_DS1374 is not set
1871# CONFIG_RTC_DRV_DS1672 is not set
1872# CONFIG_RTC_DRV_MAX6900 is not set
1873# CONFIG_RTC_DRV_RS5C372 is not set
1874# CONFIG_RTC_DRV_ISL1208 is not set
1875# CONFIG_RTC_DRV_X1205 is not set
1876# CONFIG_RTC_DRV_PCF8563 is not set
1877# CONFIG_RTC_DRV_PCF8583 is not set
1878# CONFIG_RTC_DRV_M41T80 is not set
1879CONFIG_RTC_DRV_TWL4030=y
1880# CONFIG_RTC_DRV_S35390A is not set
1881# CONFIG_RTC_DRV_FM3130 is not set
1882# CONFIG_RTC_DRV_RX8581 is not set
1883# CONFIG_RTC_DRV_RX8025 is not set
1884
1885#
1886# SPI RTC drivers
1887#
1888# CONFIG_RTC_DRV_M41T94 is not set
1889# CONFIG_RTC_DRV_DS1305 is not set
1890# CONFIG_RTC_DRV_DS1390 is not set
1891# CONFIG_RTC_DRV_MAX6902 is not set
1892# CONFIG_RTC_DRV_R9701 is not set
1893# CONFIG_RTC_DRV_RS5C348 is not set
1894# CONFIG_RTC_DRV_DS3234 is not set
1895# CONFIG_RTC_DRV_PCF2123 is not set
1896
1897#
1898# Platform RTC drivers
1899#
1900# CONFIG_RTC_DRV_CMOS is not set
1901# CONFIG_RTC_DRV_DS1286 is not set
1902# CONFIG_RTC_DRV_DS1511 is not set
1903# CONFIG_RTC_DRV_DS1553 is not set
1904# CONFIG_RTC_DRV_DS1742 is not set
1905# CONFIG_RTC_DRV_STK17TA8 is not set
1906# CONFIG_RTC_DRV_M48T86 is not set
1907# CONFIG_RTC_DRV_M48T35 is not set
1908# CONFIG_RTC_DRV_M48T59 is not set
1909# CONFIG_RTC_DRV_BQ4802 is not set
1910# CONFIG_RTC_DRV_V3020 is not set
1911
1912#
1913# on-CPU RTC drivers
1914#
1915# CONFIG_DMADEVICES is not set
1916# CONFIG_AUXDISPLAY is not set
1917CONFIG_UIO=m
1918CONFIG_UIO_PDRV=m
1919CONFIG_UIO_PDRV_GENIRQ=m
1920# CONFIG_UIO_SMX is not set
1921# CONFIG_UIO_SERCOS3 is not set
1922
1923#
1924# TI VLYNQ
1925#
1926CONFIG_STAGING=y
1927# CONFIG_STAGING_EXCLUDE_BUILD is not set
1928# CONFIG_USB_IP_COMMON is not set
1929# CONFIG_W35UND is not set
1930# CONFIG_PRISM2_USB is not set
1931# CONFIG_ECHO is not set
1932# CONFIG_OTUS is not set
1933# CONFIG_COMEDI is not set
1934# CONFIG_ASUS_OLED is not set
1935# CONFIG_INPUT_MIMIO is not set
1936# CONFIG_TRANZPORT is not set
1937
1938#
1939# Android
1940#
1941
1942#
1943# Qualcomm MSM Camera And Video
1944#
1945
1946#
1947# Camera Sensor Selection
1948#
1949# CONFIG_INPUT_GPIO is not set
1950# CONFIG_DST is not set
1951# CONFIG_POHMELFS is not set
1952# CONFIG_PLAN9AUTH is not set
1953# CONFIG_LINE6_USB is not set
1954# CONFIG_USB_SERIAL_QUATECH2 is not set
1955# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
1956# CONFIG_VT6656 is not set
1957# CONFIG_FB_UDL is not set
1958
1959#
1960# RAR Register Driver
1961#
1962# CONFIG_RAR_REGISTER is not set
1963# CONFIG_IIO is not set
1964
1965#
1966# File systems
1967#
1968CONFIG_EXT2_FS=y
1969# CONFIG_EXT2_FS_XATTR is not set
1970# CONFIG_EXT2_FS_XIP is not set
1971CONFIG_EXT3_FS=y
1972# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1973# CONFIG_EXT3_FS_XATTR is not set
1974CONFIG_EXT4_FS=m
1975CONFIG_EXT4_FS_XATTR=y
1976# CONFIG_EXT4_FS_POSIX_ACL is not set
1977# CONFIG_EXT4_FS_SECURITY is not set
1978# CONFIG_EXT4_DEBUG is not set
1979CONFIG_JBD=y
1980# CONFIG_JBD_DEBUG is not set
1981CONFIG_JBD2=m
1982# CONFIG_JBD2_DEBUG is not set
1983CONFIG_FS_MBCACHE=m
1984CONFIG_REISERFS_FS=m
1985# CONFIG_REISERFS_CHECK is not set
1986CONFIG_REISERFS_PROC_INFO=y
1987CONFIG_REISERFS_FS_XATTR=y
1988# CONFIG_REISERFS_FS_POSIX_ACL is not set
1989# CONFIG_REISERFS_FS_SECURITY is not set
1990CONFIG_JFS_FS=m
1991# CONFIG_JFS_POSIX_ACL is not set
1992# CONFIG_JFS_SECURITY is not set
1993# CONFIG_JFS_DEBUG is not set
1994# CONFIG_JFS_STATISTICS is not set
1995CONFIG_FS_POSIX_ACL=y
1996CONFIG_XFS_FS=m
1997# CONFIG_XFS_QUOTA is not set
1998# CONFIG_XFS_POSIX_ACL is not set
1999# CONFIG_XFS_RT is not set
2000# CONFIG_XFS_DEBUG is not set
2001# CONFIG_GFS2_FS is not set
2002# CONFIG_OCFS2_FS is not set
2003# CONFIG_BTRFS_FS is not set
2004# CONFIG_NILFS2_FS is not set
2005CONFIG_FILE_LOCKING=y
2006CONFIG_FSNOTIFY=y
2007CONFIG_DNOTIFY=y
2008CONFIG_INOTIFY=y
2009CONFIG_INOTIFY_USER=y
2010CONFIG_QUOTA=y
2011# CONFIG_QUOTA_NETLINK_INTERFACE is not set
2012CONFIG_PRINT_QUOTA_WARNING=y
2013CONFIG_QUOTA_TREE=y
2014# CONFIG_QFMT_V1 is not set
2015CONFIG_QFMT_V2=y
2016CONFIG_QUOTACTL=y
2017# CONFIG_AUTOFS_FS is not set
2018CONFIG_AUTOFS4_FS=m
2019CONFIG_FUSE_FS=y
2020# CONFIG_CUSE is not set
2021
2022#
2023# Caches
2024#
2025# CONFIG_FSCACHE is not set
2026
2027#
2028# CD-ROM/DVD Filesystems
2029#
2030CONFIG_ISO9660_FS=m
2031CONFIG_JOLIET=y
2032CONFIG_ZISOFS=y
2033CONFIG_UDF_FS=m
2034CONFIG_UDF_NLS=y
2035
2036#
2037# DOS/FAT/NT Filesystems
2038#
2039CONFIG_FAT_FS=y
2040CONFIG_MSDOS_FS=y
2041CONFIG_VFAT_FS=y
2042CONFIG_FAT_DEFAULT_CODEPAGE=437
2043CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
2044CONFIG_NTFS_FS=m
2045# CONFIG_NTFS_DEBUG is not set
2046CONFIG_NTFS_RW=y
2047
2048#
2049# Pseudo filesystems
2050#
2051CONFIG_PROC_FS=y
2052CONFIG_PROC_SYSCTL=y
2053CONFIG_PROC_PAGE_MONITOR=y
2054CONFIG_SYSFS=y
2055CONFIG_TMPFS=y
2056# CONFIG_TMPFS_POSIX_ACL is not set
2057# CONFIG_HUGETLB_PAGE is not set
2058CONFIG_CONFIGFS_FS=m
2059CONFIG_MISC_FILESYSTEMS=y
2060# CONFIG_ADFS_FS is not set
2061# CONFIG_AFFS_FS is not set
2062# CONFIG_ECRYPT_FS is not set
2063# CONFIG_HFS_FS is not set
2064# CONFIG_HFSPLUS_FS is not set
2065# CONFIG_BEFS_FS is not set
2066# CONFIG_BFS_FS is not set
2067# CONFIG_EFS_FS is not set
2068CONFIG_JFFS2_FS=y
2069CONFIG_JFFS2_FS_DEBUG=0
2070CONFIG_JFFS2_FS_WRITEBUFFER=y
2071# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
2072CONFIG_JFFS2_SUMMARY=y
2073CONFIG_JFFS2_FS_XATTR=y
2074CONFIG_JFFS2_FS_POSIX_ACL=y
2075CONFIG_JFFS2_FS_SECURITY=y
2076CONFIG_JFFS2_COMPRESSION_OPTIONS=y
2077CONFIG_JFFS2_ZLIB=y
2078CONFIG_JFFS2_LZO=y
2079CONFIG_JFFS2_RTIME=y
2080CONFIG_JFFS2_RUBIN=y
2081# CONFIG_JFFS2_CMODE_NONE is not set
2082# CONFIG_JFFS2_CMODE_PRIORITY is not set
2083# CONFIG_JFFS2_CMODE_SIZE is not set
2084CONFIG_JFFS2_CMODE_FAVOURLZO=y
2085CONFIG_UBIFS_FS=y
2086CONFIG_UBIFS_FS_XATTR=y
2087CONFIG_UBIFS_FS_ADVANCED_COMPR=y
2088CONFIG_UBIFS_FS_LZO=y
2089CONFIG_UBIFS_FS_ZLIB=y
2090# CONFIG_UBIFS_FS_DEBUG is not set
2091# CONFIG_CRAMFS is not set
2092CONFIG_SQUASHFS=y
2093# CONFIG_SQUASHFS_EMBEDDED is not set
2094CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
2095# CONFIG_VXFS_FS is not set
2096# CONFIG_MINIX_FS is not set
2097# CONFIG_OMFS_FS is not set
2098# CONFIG_HPFS_FS is not set
2099# CONFIG_QNX4FS_FS is not set
2100# CONFIG_ROMFS_FS is not set
2101# CONFIG_SYSV_FS is not set
2102# CONFIG_UFS_FS is not set
2103CONFIG_NETWORK_FILESYSTEMS=y
2104CONFIG_NFS_FS=y
2105CONFIG_NFS_V3=y
2106# CONFIG_NFS_V3_ACL is not set
2107CONFIG_NFS_V4=y
2108# CONFIG_NFS_V4_1 is not set
2109CONFIG_ROOT_NFS=y
2110CONFIG_NFSD=m
2111CONFIG_NFSD_V2_ACL=y
2112CONFIG_NFSD_V3=y
2113CONFIG_NFSD_V3_ACL=y
2114CONFIG_NFSD_V4=y
2115CONFIG_LOCKD=y
2116CONFIG_LOCKD_V4=y
2117CONFIG_EXPORTFS=m
2118CONFIG_NFS_ACL_SUPPORT=m
2119CONFIG_NFS_COMMON=y
2120CONFIG_SUNRPC=y
2121CONFIG_SUNRPC_GSS=y
2122CONFIG_RPCSEC_GSS_KRB5=y
2123# CONFIG_RPCSEC_GSS_SPKM3 is not set
2124# CONFIG_SMB_FS is not set
2125CONFIG_CIFS=m
2126CONFIG_CIFS_STATS=y
2127CONFIG_CIFS_STATS2=y
2128# CONFIG_CIFS_WEAK_PW_HASH is not set
2129# CONFIG_CIFS_UPCALL is not set
2130# CONFIG_CIFS_XATTR is not set
2131# CONFIG_CIFS_DEBUG2 is not set
2132# CONFIG_CIFS_DFS_UPCALL is not set
2133CONFIG_CIFS_EXPERIMENTAL=y
2134# CONFIG_NCP_FS is not set
2135# CONFIG_CODA_FS is not set
2136# CONFIG_AFS_FS is not set
2137
2138#
2139# Partition Types
2140#
2141CONFIG_PARTITION_ADVANCED=y
2142# CONFIG_ACORN_PARTITION is not set
2143# CONFIG_OSF_PARTITION is not set
2144# CONFIG_AMIGA_PARTITION is not set
2145# CONFIG_ATARI_PARTITION is not set
2146# CONFIG_MAC_PARTITION is not set
2147CONFIG_MSDOS_PARTITION=y
2148CONFIG_BSD_DISKLABEL=y
2149CONFIG_MINIX_SUBPARTITION=y
2150CONFIG_SOLARIS_X86_PARTITION=y
2151CONFIG_UNIXWARE_DISKLABEL=y
2152# CONFIG_LDM_PARTITION is not set
2153# CONFIG_SGI_PARTITION is not set
2154# CONFIG_ULTRIX_PARTITION is not set
2155# CONFIG_SUN_PARTITION is not set
2156# CONFIG_KARMA_PARTITION is not set
2157CONFIG_EFI_PARTITION=y
2158# CONFIG_SYSV68_PARTITION is not set
2159CONFIG_NLS=y
2160CONFIG_NLS_DEFAULT="iso8859-1"
2161CONFIG_NLS_CODEPAGE_437=y
2162CONFIG_NLS_CODEPAGE_737=m
2163CONFIG_NLS_CODEPAGE_775=m
2164CONFIG_NLS_CODEPAGE_850=m
2165CONFIG_NLS_CODEPAGE_852=m
2166CONFIG_NLS_CODEPAGE_855=m
2167CONFIG_NLS_CODEPAGE_857=m
2168CONFIG_NLS_CODEPAGE_860=m
2169CONFIG_NLS_CODEPAGE_861=m
2170CONFIG_NLS_CODEPAGE_862=m
2171CONFIG_NLS_CODEPAGE_863=m
2172CONFIG_NLS_CODEPAGE_864=m
2173CONFIG_NLS_CODEPAGE_865=m
2174CONFIG_NLS_CODEPAGE_866=m
2175CONFIG_NLS_CODEPAGE_869=m
2176CONFIG_NLS_CODEPAGE_936=m
2177CONFIG_NLS_CODEPAGE_950=m
2178CONFIG_NLS_CODEPAGE_932=m
2179CONFIG_NLS_CODEPAGE_949=m
2180CONFIG_NLS_CODEPAGE_874=m
2181CONFIG_NLS_ISO8859_8=m
2182CONFIG_NLS_CODEPAGE_1250=m
2183CONFIG_NLS_CODEPAGE_1251=m
2184CONFIG_NLS_ASCII=m
2185CONFIG_NLS_ISO8859_1=m
2186CONFIG_NLS_ISO8859_2=m
2187CONFIG_NLS_ISO8859_3=m
2188CONFIG_NLS_ISO8859_4=m
2189CONFIG_NLS_ISO8859_5=m
2190CONFIG_NLS_ISO8859_6=m
2191CONFIG_NLS_ISO8859_7=m
2192CONFIG_NLS_ISO8859_9=m
2193CONFIG_NLS_ISO8859_13=m
2194CONFIG_NLS_ISO8859_14=m
2195CONFIG_NLS_ISO8859_15=m
2196CONFIG_NLS_KOI8_R=m
2197CONFIG_NLS_KOI8_U=m
2198CONFIG_NLS_UTF8=y
2199# CONFIG_DLM is not set
2200
2201#
2202# Kernel hacking
2203#
2204CONFIG_PRINTK_TIME=y
2205CONFIG_ENABLE_WARN_DEPRECATED=y
2206CONFIG_ENABLE_MUST_CHECK=y
2207CONFIG_FRAME_WARN=1024
2208CONFIG_MAGIC_SYSRQ=y
2209# CONFIG_STRIP_ASM_SYMS is not set
2210# CONFIG_UNUSED_SYMBOLS is not set
2211CONFIG_DEBUG_FS=y
2212# CONFIG_HEADERS_CHECK is not set
2213CONFIG_DEBUG_KERNEL=y
2214# CONFIG_DEBUG_SHIRQ is not set
2215CONFIG_DETECT_SOFTLOCKUP=y
2216# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
2217CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
2218CONFIG_DETECT_HUNG_TASK=y
2219# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
2220CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
2221CONFIG_SCHED_DEBUG=y
2222CONFIG_SCHEDSTATS=y
2223CONFIG_TIMER_STATS=y
2224# CONFIG_DEBUG_OBJECTS is not set
2225# CONFIG_DEBUG_SLAB is not set
2226# CONFIG_DEBUG_KMEMLEAK is not set
2227CONFIG_DEBUG_PREEMPT=y
2228# CONFIG_DEBUG_RT_MUTEXES is not set
2229# CONFIG_RT_MUTEX_TESTER is not set
2230# CONFIG_DEBUG_SPINLOCK is not set
2231CONFIG_DEBUG_MUTEXES=y
2232# CONFIG_DEBUG_LOCK_ALLOC is not set
2233# CONFIG_PROVE_LOCKING is not set
2234# CONFIG_LOCK_STAT is not set
2235# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
2236# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
2237CONFIG_STACKTRACE=y
2238# CONFIG_DEBUG_KOBJECT is not set
2239# CONFIG_DEBUG_BUGVERBOSE is not set
2240# CONFIG_DEBUG_INFO is not set
2241# CONFIG_DEBUG_VM is not set
2242# CONFIG_DEBUG_WRITECOUNT is not set
2243# CONFIG_DEBUG_MEMORY_INIT is not set
2244# CONFIG_DEBUG_LIST is not set
2245# CONFIG_DEBUG_SG is not set
2246# CONFIG_DEBUG_NOTIFIERS is not set
2247# CONFIG_DEBUG_CREDENTIALS is not set
2248# CONFIG_BOOT_PRINTK_DELAY is not set
2249# CONFIG_RCU_TORTURE_TEST is not set
2250# CONFIG_RCU_CPU_STALL_DETECTOR is not set
2251# CONFIG_BACKTRACE_SELF_TEST is not set
2252# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
2253# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
2254# CONFIG_FAULT_INJECTION is not set
2255# CONFIG_LATENCYTOP is not set
2256# CONFIG_PAGE_POISONING is not set
2257CONFIG_NOP_TRACER=y
2258CONFIG_HAVE_FUNCTION_TRACER=y
2259CONFIG_RING_BUFFER=y
2260CONFIG_EVENT_TRACING=y
2261CONFIG_CONTEXT_SWITCH_TRACER=y
2262CONFIG_RING_BUFFER_ALLOW_SWAP=y
2263CONFIG_TRACING=y
2264CONFIG_TRACING_SUPPORT=y
2265CONFIG_FTRACE=y
2266# CONFIG_FUNCTION_TRACER is not set
2267# CONFIG_IRQSOFF_TRACER is not set
2268# CONFIG_PREEMPT_TRACER is not set
2269# CONFIG_SCHED_TRACER is not set
2270# CONFIG_ENABLE_DEFAULT_TRACERS is not set
2271# CONFIG_BOOT_TRACER is not set
2272CONFIG_BRANCH_PROFILE_NONE=y
2273# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
2274# CONFIG_PROFILE_ALL_BRANCHES is not set
2275# CONFIG_STACK_TRACER is not set
2276# CONFIG_KMEMTRACE is not set
2277# CONFIG_WORKQUEUE_TRACER is not set
2278# CONFIG_BLK_DEV_IO_TRACE is not set
2279# CONFIG_RING_BUFFER_BENCHMARK is not set
2280# CONFIG_DYNAMIC_DEBUG is not set
2281# CONFIG_SAMPLES is not set
2282CONFIG_HAVE_ARCH_KGDB=y
2283# CONFIG_KGDB is not set
2284CONFIG_ARM_UNWIND=y
2285# CONFIG_DEBUG_USER is not set
2286# CONFIG_DEBUG_ERRORS is not set
2287# CONFIG_DEBUG_STACK_USAGE is not set
2288# CONFIG_DEBUG_LL is not set
2289
2290#
2291# Security options
2292#
2293CONFIG_KEYS=y
2294# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
2295# CONFIG_SECURITY is not set
2296# CONFIG_SECURITYFS is not set
2297# CONFIG_SECURITY_FILE_CAPABILITIES is not set
2298CONFIG_XOR_BLOCKS=m
2299CONFIG_ASYNC_CORE=m
2300CONFIG_ASYNC_MEMCPY=m
2301CONFIG_ASYNC_XOR=m
2302CONFIG_ASYNC_PQ=m
2303CONFIG_ASYNC_RAID6_RECOV=m
2304CONFIG_CRYPTO=y
2305
2306#
2307# Crypto core or helper
2308#
2309CONFIG_CRYPTO_FIPS=y
2310CONFIG_CRYPTO_ALGAPI=y
2311CONFIG_CRYPTO_ALGAPI2=y
2312CONFIG_CRYPTO_AEAD=m
2313CONFIG_CRYPTO_AEAD2=y
2314CONFIG_CRYPTO_BLKCIPHER=y
2315CONFIG_CRYPTO_BLKCIPHER2=y
2316CONFIG_CRYPTO_HASH=y
2317CONFIG_CRYPTO_HASH2=y
2318CONFIG_CRYPTO_RNG=m
2319CONFIG_CRYPTO_RNG2=y
2320CONFIG_CRYPTO_PCOMP=y
2321CONFIG_CRYPTO_MANAGER=y
2322CONFIG_CRYPTO_MANAGER2=y
2323CONFIG_CRYPTO_GF128MUL=m
2324CONFIG_CRYPTO_NULL=m
2325CONFIG_CRYPTO_WORKQUEUE=y
2326CONFIG_CRYPTO_CRYPTD=m
2327CONFIG_CRYPTO_AUTHENC=m
2328CONFIG_CRYPTO_TEST=m
2329
2330#
2331# Authenticated Encryption with Associated Data
2332#
2333CONFIG_CRYPTO_CCM=m
2334CONFIG_CRYPTO_GCM=m
2335CONFIG_CRYPTO_SEQIV=m
2336
2337#
2338# Block modes
2339#
2340CONFIG_CRYPTO_CBC=y
2341CONFIG_CRYPTO_CTR=m
2342CONFIG_CRYPTO_CTS=m
2343CONFIG_CRYPTO_ECB=y
2344CONFIG_CRYPTO_LRW=m
2345CONFIG_CRYPTO_PCBC=m
2346CONFIG_CRYPTO_XTS=m
2347
2348#
2349# Hash modes
2350#
2351CONFIG_CRYPTO_HMAC=m
2352CONFIG_CRYPTO_XCBC=m
2353# CONFIG_CRYPTO_VMAC is not set
2354
2355#
2356# Digest
2357#
2358CONFIG_CRYPTO_CRC32C=y
2359CONFIG_CRYPTO_GHASH=m
2360CONFIG_CRYPTO_MD4=m
2361CONFIG_CRYPTO_MD5=y
2362CONFIG_CRYPTO_MICHAEL_MIC=y
2363CONFIG_CRYPTO_RMD128=m
2364CONFIG_CRYPTO_RMD160=m
2365CONFIG_CRYPTO_RMD256=m
2366CONFIG_CRYPTO_RMD320=m
2367CONFIG_CRYPTO_SHA1=m
2368CONFIG_CRYPTO_SHA256=m
2369CONFIG_CRYPTO_SHA512=m
2370CONFIG_CRYPTO_TGR192=m
2371CONFIG_CRYPTO_WP512=m
2372
2373#
2374# Ciphers
2375#
2376CONFIG_CRYPTO_AES=y
2377CONFIG_CRYPTO_ANUBIS=m
2378CONFIG_CRYPTO_ARC4=y
2379CONFIG_CRYPTO_BLOWFISH=m
2380CONFIG_CRYPTO_CAMELLIA=m
2381CONFIG_CRYPTO_CAST5=m
2382CONFIG_CRYPTO_CAST6=m
2383CONFIG_CRYPTO_DES=y
2384CONFIG_CRYPTO_FCRYPT=m
2385CONFIG_CRYPTO_KHAZAD=m
2386CONFIG_CRYPTO_SALSA20=m
2387CONFIG_CRYPTO_SEED=m
2388CONFIG_CRYPTO_SERPENT=m
2389CONFIG_CRYPTO_TEA=m
2390CONFIG_CRYPTO_TWOFISH=m
2391CONFIG_CRYPTO_TWOFISH_COMMON=m
2392
2393#
2394# Compression
2395#
2396CONFIG_CRYPTO_DEFLATE=y
2397# CONFIG_CRYPTO_ZLIB is not set
2398CONFIG_CRYPTO_LZO=y
2399
2400#
2401# Random Number Generation
2402#
2403CONFIG_CRYPTO_ANSI_CPRNG=m
2404CONFIG_CRYPTO_HW=y
2405CONFIG_BINARY_PRINTF=y
2406
2407#
2408# Library routines
2409#
2410CONFIG_BITREVERSE=y
2411CONFIG_GENERIC_FIND_LAST_BIT=y
2412CONFIG_CRC_CCITT=y
2413CONFIG_CRC16=y
2414CONFIG_CRC_T10DIF=y
2415CONFIG_CRC_ITU_T=y
2416CONFIG_CRC32=y
2417CONFIG_CRC7=y
2418CONFIG_LIBCRC32C=y
2419CONFIG_ZLIB_INFLATE=y
2420CONFIG_ZLIB_DEFLATE=y
2421CONFIG_LZO_COMPRESS=y
2422CONFIG_LZO_DECOMPRESS=y
2423CONFIG_DECOMPRESS_GZIP=y
2424CONFIG_TEXTSEARCH=y
2425CONFIG_TEXTSEARCH_KMP=m
2426CONFIG_TEXTSEARCH_BM=m
2427CONFIG_TEXTSEARCH_FSM=m
2428CONFIG_HAS_IOMEM=y
2429CONFIG_HAS_IOPORT=y
2430CONFIG_HAS_DMA=y
2431CONFIG_NLATTR=y
diff --git a/arch/arm/configs/omap_4430sdp_defconfig b/arch/arm/configs/omap_4430sdp_defconfig
index a464ca332a23..2319113c86bf 100644
--- a/arch/arm/configs/omap_4430sdp_defconfig
+++ b/arch/arm/configs/omap_4430sdp_defconfig
@@ -1,26 +1,29 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc7 3# Linux kernel version: 2.6.32
4# Tue Jun 9 12:36:23 2009 4# Sun Dec 6 23:37:45 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y 8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y 9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y 11CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
12CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_STACKTRACE_SUPPORT=y 13CONFIG_STACKTRACE_SUPPORT=y
14CONFIG_LOCKDEP_SUPPORT=y 14CONFIG_LOCKDEP_SUPPORT=y
15CONFIG_TRACE_IRQFLAGS_SUPPORT=y 15CONFIG_TRACE_IRQFLAGS_SUPPORT=y
16CONFIG_HARDIRQS_SW_RESEND=y 16CONFIG_HARDIRQS_SW_RESEND=y
17CONFIG_GENERIC_IRQ_PROBE=y 17CONFIG_GENERIC_IRQ_PROBE=y
18CONFIG_GENERIC_LOCKBREAK=y
18CONFIG_RWSEM_GENERIC_SPINLOCK=y 19CONFIG_RWSEM_GENERIC_SPINLOCK=y
20CONFIG_ARCH_HAS_CPUFREQ=y
19CONFIG_GENERIC_HWEIGHT=y 21CONFIG_GENERIC_HWEIGHT=y
20CONFIG_GENERIC_CALIBRATE_DELAY=y 22CONFIG_GENERIC_CALIBRATE_DELAY=y
21CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 23CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
22CONFIG_VECTORS_BASE=0xffff0000 24CONFIG_VECTORS_BASE=0xffff0000
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26CONFIG_CONSTRUCTORS=y
24 27
25# 28#
26# General setup 29# General setup
@@ -39,11 +42,12 @@ CONFIG_BSD_PROCESS_ACCT=y
39# 42#
40# RCU Subsystem 43# RCU Subsystem
41# 44#
42CONFIG_CLASSIC_RCU=y 45CONFIG_TREE_RCU=y
43# CONFIG_TREE_RCU is not set 46# CONFIG_TREE_PREEMPT_RCU is not set
44# CONFIG_PREEMPT_RCU is not set 47# CONFIG_RCU_TRACE is not set
48CONFIG_RCU_FANOUT=32
49# CONFIG_RCU_FANOUT_EXACT is not set
45# CONFIG_TREE_RCU_TRACE is not set 50# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
47# CONFIG_IKCONFIG is not set 51# CONFIG_IKCONFIG is not set
48CONFIG_LOG_BUF_SHIFT=14 52CONFIG_LOG_BUF_SHIFT=14
49CONFIG_GROUP_SCHED=y 53CONFIG_GROUP_SCHED=y
@@ -52,8 +56,7 @@ CONFIG_FAIR_GROUP_SCHED=y
52CONFIG_USER_SCHED=y 56CONFIG_USER_SCHED=y
53# CONFIG_CGROUP_SCHED is not set 57# CONFIG_CGROUP_SCHED is not set
54# CONFIG_CGROUPS is not set 58# CONFIG_CGROUPS is not set
55# CONFIG_SYSFS_DEPRECATED=y is not set 59# CONFIG_SYSFS_DEPRECATED_V2 is not set
56# CONFIG_SYSFS_DEPRECATED_V2=y is not set
57# CONFIG_RELAY is not set 60# CONFIG_RELAY is not set
58# CONFIG_NAMESPACES is not set 61# CONFIG_NAMESPACES is not set
59CONFIG_BLK_DEV_INITRD=y 62CONFIG_BLK_DEV_INITRD=y
@@ -70,7 +73,6 @@ CONFIG_UID16=y
70CONFIG_KALLSYMS=y 73CONFIG_KALLSYMS=y
71# CONFIG_KALLSYMS_ALL is not set 74# CONFIG_KALLSYMS_ALL is not set
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 75# CONFIG_KALLSYMS_EXTRA_PASS is not set
73# CONFIG_STRIP_ASM_SYMS is not set
74CONFIG_HOTPLUG=y 76CONFIG_HOTPLUG=y
75CONFIG_PRINTK=y 77CONFIG_PRINTK=y
76CONFIG_BUG=y 78CONFIG_BUG=y
@@ -83,6 +85,10 @@ CONFIG_TIMERFD=y
83CONFIG_EVENTFD=y 85CONFIG_EVENTFD=y
84CONFIG_SHMEM=y 86CONFIG_SHMEM=y
85CONFIG_AIO=y 87CONFIG_AIO=y
88
89#
90# Kernel Performance Events And Counters
91#
86CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
87CONFIG_SLUB_DEBUG=y 93CONFIG_SLUB_DEBUG=y
88CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
@@ -90,13 +96,16 @@ CONFIG_COMPAT_BRK=y
90CONFIG_SLUB=y 96CONFIG_SLUB=y
91# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
92# CONFIG_PROFILING is not set 98# CONFIG_PROFILING is not set
93# CONFIG_MARKERS is not set
94CONFIG_HAVE_OPROFILE=y 99CONFIG_HAVE_OPROFILE=y
95# CONFIG_KPROBES is not set 100# CONFIG_KPROBES is not set
96CONFIG_HAVE_KPROBES=y 101CONFIG_HAVE_KPROBES=y
97CONFIG_HAVE_KRETPROBES=y 102CONFIG_HAVE_KRETPROBES=y
98CONFIG_USE_GENERIC_SMP_HELPERS=y 103CONFIG_USE_GENERIC_SMP_HELPERS=y
99CONFIG_HAVE_CLK=y 104CONFIG_HAVE_CLK=y
105
106#
107# GCOV-based kernel profiling
108#
100# CONFIG_SLOW_WORK is not set 109# CONFIG_SLOW_WORK is not set
101CONFIG_HAVE_GENERIC_DMA_COHERENT=y 110CONFIG_HAVE_GENERIC_DMA_COHERENT=y
102CONFIG_SLABINFO=y 111CONFIG_SLABINFO=y
@@ -110,7 +119,7 @@ CONFIG_MODVERSIONS=y
110CONFIG_MODULE_SRCVERSION_ALL=y 119CONFIG_MODULE_SRCVERSION_ALL=y
111CONFIG_STOP_MACHINE=y 120CONFIG_STOP_MACHINE=y
112CONFIG_BLOCK=y 121CONFIG_BLOCK=y
113# CONFIG_LBD is not set 122CONFIG_LBDAF=y
114# CONFIG_BLK_DEV_BSG is not set 123# CONFIG_BLK_DEV_BSG is not set
115# CONFIG_BLK_DEV_INTEGRITY is not set 124# CONFIG_BLK_DEV_INTEGRITY is not set
116 125
@@ -131,6 +140,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
131# 140#
132# System Type 141# System Type
133# 142#
143CONFIG_MMU=y
134# CONFIG_ARCH_AAEC2000 is not set 144# CONFIG_ARCH_AAEC2000 is not set
135# CONFIG_ARCH_INTEGRATOR is not set 145# CONFIG_ARCH_INTEGRATOR is not set
136# CONFIG_ARCH_REALVIEW is not set 146# CONFIG_ARCH_REALVIEW is not set
@@ -142,8 +152,10 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
142# CONFIG_ARCH_EP93XX is not set 152# CONFIG_ARCH_EP93XX is not set
143# CONFIG_ARCH_FOOTBRIDGE is not set 153# CONFIG_ARCH_FOOTBRIDGE is not set
144# CONFIG_ARCH_MXC is not set 154# CONFIG_ARCH_MXC is not set
155# CONFIG_ARCH_STMP3XXX is not set
145# CONFIG_ARCH_NETX is not set 156# CONFIG_ARCH_NETX is not set
146# CONFIG_ARCH_H720X is not set 157# CONFIG_ARCH_H720X is not set
158# CONFIG_ARCH_NOMADIK is not set
147# CONFIG_ARCH_IOP13XX is not set 159# CONFIG_ARCH_IOP13XX is not set
148# CONFIG_ARCH_IOP32X is not set 160# CONFIG_ARCH_IOP32X is not set
149# CONFIG_ARCH_IOP33X is not set 161# CONFIG_ARCH_IOP33X is not set
@@ -166,10 +178,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
166# CONFIG_ARCH_SA1100 is not set 178# CONFIG_ARCH_SA1100 is not set
167# CONFIG_ARCH_S3C2410 is not set 179# CONFIG_ARCH_S3C2410 is not set
168# CONFIG_ARCH_S3C64XX is not set 180# CONFIG_ARCH_S3C64XX is not set
181# CONFIG_ARCH_S5PC1XX is not set
169# CONFIG_ARCH_SHARK is not set 182# CONFIG_ARCH_SHARK is not set
170# CONFIG_ARCH_LH7A40X is not set 183# CONFIG_ARCH_LH7A40X is not set
184# CONFIG_ARCH_U300 is not set
171# CONFIG_ARCH_DAVINCI is not set 185# CONFIG_ARCH_DAVINCI is not set
172CONFIG_ARCH_OMAP=y 186CONFIG_ARCH_OMAP=y
187# CONFIG_ARCH_BCMRING is not set
173 188
174# 189#
175# TI OMAP Implementations 190# TI OMAP Implementations
@@ -190,9 +205,12 @@ CONFIG_ARCH_OMAP4=y
190CONFIG_OMAP_32K_TIMER=y 205CONFIG_OMAP_32K_TIMER=y
191CONFIG_OMAP_32K_TIMER_HZ=128 206CONFIG_OMAP_32K_TIMER_HZ=128
192CONFIG_OMAP_DM_TIMER=y 207CONFIG_OMAP_DM_TIMER=y
193CONFIG_OMAP_LL_DEBUG_UART1=y 208# CONFIG_OMAP_LL_DEBUG_UART1 is not set
194# CONFIG_OMAP_LL_DEBUG_UART2 is not set 209# CONFIG_OMAP_LL_DEBUG_UART2 is not set
195# CONFIG_OMAP_LL_DEBUG_UART3 is not set 210CONFIG_OMAP_LL_DEBUG_UART3=y
211# CONFIG_OMAP_LL_DEBUG_NONE is not set
212# CONFIG_OMAP_PM_NONE is not set
213CONFIG_OMAP_PM_NOOP=y
196 214
197# 215#
198# OMAP Board Type 216# OMAP Board Type
@@ -207,7 +225,7 @@ CONFIG_CPU_32v6K=y
207CONFIG_CPU_V7=y 225CONFIG_CPU_V7=y
208CONFIG_CPU_32v7=y 226CONFIG_CPU_32v7=y
209CONFIG_CPU_ABRT_EV7=y 227CONFIG_CPU_ABRT_EV7=y
210CONFIG_CPU_PABRT_IFAR=y 228CONFIG_CPU_PABRT_V7=y
211CONFIG_CPU_CACHE_V7=y 229CONFIG_CPU_CACHE_V7=y
212CONFIG_CPU_CACHE_VIPT=y 230CONFIG_CPU_CACHE_VIPT=y
213CONFIG_CPU_COPY_V6=y 231CONFIG_CPU_COPY_V6=y
@@ -222,9 +240,10 @@ CONFIG_CPU_CP15_MMU=y
222# CONFIG_ARM_THUMB is not set 240# CONFIG_ARM_THUMB is not set
223# CONFIG_ARM_THUMBEE is not set 241# CONFIG_ARM_THUMBEE is not set
224# CONFIG_CPU_ICACHE_DISABLE is not set 242# CONFIG_CPU_ICACHE_DISABLE is not set
225CONFIG_CPU_DCACHE_DISABLE=y 243# CONFIG_CPU_DCACHE_DISABLE is not set
226# CONFIG_CPU_BPREDICT_DISABLE is not set 244# CONFIG_CPU_BPREDICT_DISABLE is not set
227CONFIG_HAS_TLS_REG=y 245CONFIG_HAS_TLS_REG=y
246CONFIG_ARM_L1_CACHE_SHIFT=5
228# CONFIG_ARM_ERRATA_430973 is not set 247# CONFIG_ARM_ERRATA_430973 is not set
229# CONFIG_ARM_ERRATA_458693 is not set 248# CONFIG_ARM_ERRATA_458693 is not set
230# CONFIG_ARM_ERRATA_460075 is not set 249# CONFIG_ARM_ERRATA_460075 is not set
@@ -245,18 +264,20 @@ CONFIG_ARM_GIC=y
245CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 264CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
246CONFIG_SMP=y 265CONFIG_SMP=y
247CONFIG_HAVE_ARM_SCU=y 266CONFIG_HAVE_ARM_SCU=y
248CONFIG_HAVE_ARM_TWD=y
249CONFIG_VMSPLIT_3G=y 267CONFIG_VMSPLIT_3G=y
250# CONFIG_VMSPLIT_2G is not set 268# CONFIG_VMSPLIT_2G is not set
251# CONFIG_VMSPLIT_1G is not set 269# CONFIG_VMSPLIT_1G is not set
252CONFIG_PAGE_OFFSET=0xC0000000 270CONFIG_PAGE_OFFSET=0xC0000000
253CONFIG_NR_CPUS=2 271CONFIG_NR_CPUS=2
254# CONFIG_HOTPLUG_CPU is not set 272# CONFIG_HOTPLUG_CPU is not set
255CONFIG_LOCAL_TIMERS=y 273# CONFIG_LOCAL_TIMERS is not set
256# CONFIG_PREEMPT is not set 274# CONFIG_PREEMPT_NONE is not set
275# CONFIG_PREEMPT_VOLUNTARY is not set
276CONFIG_PREEMPT=y
257CONFIG_HZ=128 277CONFIG_HZ=128
278# CONFIG_THUMB2_KERNEL is not set
258CONFIG_AEABI=y 279CONFIG_AEABI=y
259# CONFIG_OABI_COMPAT is not set 280CONFIG_OABI_COMPAT=y
260# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 281# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
261# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set 282# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
262# CONFIG_HIGHMEM is not set 283# CONFIG_HIGHMEM is not set
@@ -271,10 +292,13 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
271# CONFIG_PHYS_ADDR_T_64BIT is not set 292# CONFIG_PHYS_ADDR_T_64BIT is not set
272CONFIG_ZONE_DMA_FLAG=0 293CONFIG_ZONE_DMA_FLAG=0
273CONFIG_VIRT_TO_BUS=y 294CONFIG_VIRT_TO_BUS=y
274# CONFIG_UNEVICTABLE_LRU is not set
275CONFIG_HAVE_MLOCK=y 295CONFIG_HAVE_MLOCK=y
296CONFIG_HAVE_MLOCKED_PAGE_BIT=y
297# CONFIG_KSM is not set
298CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276# CONFIG_LEDS is not set 299# CONFIG_LEDS is not set
277CONFIG_ALIGNMENT_TRAP=y 300CONFIG_ALIGNMENT_TRAP=y
301# CONFIG_UACCESS_WITH_MEMCPY is not set
278 302
279# 303#
280# Boot options 304# Boot options
@@ -298,9 +322,11 @@ CONFIG_CMDLINE="root=/dev/ram0 rw mem=128M console=ttyS0,115200n8 initrd=0x81600
298# 322#
299# At least one emulation must be selected 323# At least one emulation must be selected
300# 324#
325# CONFIG_FPE_NWFPE is not set
326# CONFIG_FPE_FASTFPE is not set
301CONFIG_VFP=y 327CONFIG_VFP=y
302CONFIG_VFPv3=y 328CONFIG_VFPv3=y
303# CONFIG_NEON is not set 329CONFIG_NEON=y
304 330
305# 331#
306# Userspace binary formats 332# Userspace binary formats
@@ -325,6 +351,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
325# Generic Driver Options 351# Generic Driver Options
326# 352#
327CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 353CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
354# CONFIG_DEVTMPFS is not set
328CONFIG_STANDALONE=y 355CONFIG_STANDALONE=y
329CONFIG_PREVENT_FIRMWARE_BUILD=y 356CONFIG_PREVENT_FIRMWARE_BUILD=y
330# CONFIG_FW_LOADER is not set 357# CONFIG_FW_LOADER is not set
@@ -342,6 +369,7 @@ CONFIG_BLK_DEV_RAM_COUNT=16
342CONFIG_BLK_DEV_RAM_SIZE=16384 369CONFIG_BLK_DEV_RAM_SIZE=16384
343# CONFIG_BLK_DEV_XIP is not set 370# CONFIG_BLK_DEV_XIP is not set
344# CONFIG_CDROM_PKTCDVD is not set 371# CONFIG_CDROM_PKTCDVD is not set
372# CONFIG_MG_DISK is not set
345# CONFIG_MISC_DEVICES is not set 373# CONFIG_MISC_DEVICES is not set
346CONFIG_HAVE_IDE=y 374CONFIG_HAVE_IDE=y
347# CONFIG_IDE is not set 375# CONFIG_IDE is not set
@@ -355,6 +383,7 @@ CONFIG_HAVE_IDE=y
355# CONFIG_SCSI_NETLINK is not set 383# CONFIG_SCSI_NETLINK is not set
356# CONFIG_ATA is not set 384# CONFIG_ATA is not set
357# CONFIG_MD is not set 385# CONFIG_MD is not set
386# CONFIG_PHONE is not set
358 387
359# 388#
360# Input device support 389# Input device support
@@ -427,6 +456,11 @@ CONFIG_HW_RANDOM=y
427# CONFIG_TCG_TPM is not set 456# CONFIG_TCG_TPM is not set
428# CONFIG_I2C is not set 457# CONFIG_I2C is not set
429# CONFIG_SPI is not set 458# CONFIG_SPI is not set
459
460#
461# PPS support
462#
463# CONFIG_PPS is not set
430CONFIG_ARCH_REQUIRE_GPIOLIB=y 464CONFIG_ARCH_REQUIRE_GPIOLIB=y
431CONFIG_GPIOLIB=y 465CONFIG_GPIOLIB=y
432# CONFIG_DEBUG_GPIO is not set 466# CONFIG_DEBUG_GPIO is not set
@@ -447,11 +481,14 @@ CONFIG_GPIOLIB=y
447# 481#
448# SPI GPIO expanders: 482# SPI GPIO expanders:
449# 483#
484
485#
486# AC97 GPIO expanders:
487#
450# CONFIG_W1 is not set 488# CONFIG_W1 is not set
451# CONFIG_POWER_SUPPLY is not set 489# CONFIG_POWER_SUPPLY is not set
452# CONFIG_HWMON is not set 490# CONFIG_HWMON is not set
453# CONFIG_THERMAL is not set 491# CONFIG_THERMAL is not set
454# CONFIG_THERMAL_HWMON is not set
455# CONFIG_WATCHDOG is not set 492# CONFIG_WATCHDOG is not set
456CONFIG_SSB_POSSIBLE=y 493CONFIG_SSB_POSSIBLE=y
457 494
@@ -472,21 +509,8 @@ CONFIG_SSB_POSSIBLE=y
472# CONFIG_MFD_T7L66XB is not set 509# CONFIG_MFD_T7L66XB is not set
473# CONFIG_MFD_TC6387XB is not set 510# CONFIG_MFD_TC6387XB is not set
474# CONFIG_MFD_TC6393XB is not set 511# CONFIG_MFD_TC6393XB is not set
475 512# CONFIG_REGULATOR is not set
476# 513# CONFIG_MEDIA_SUPPORT is not set
477# Multimedia devices
478#
479
480#
481# Multimedia core support
482#
483# CONFIG_VIDEO_DEV is not set
484# CONFIG_VIDEO_MEDIA is not set
485
486#
487# Multimedia drivers
488#
489CONFIG_DAB=y
490 514
491# 515#
492# Graphics support 516# Graphics support
@@ -511,14 +535,17 @@ CONFIG_DUMMY_CONSOLE=y
511# CONFIG_USB_SUPPORT is not set 535# CONFIG_USB_SUPPORT is not set
512# CONFIG_MMC is not set 536# CONFIG_MMC is not set
513# CONFIG_MEMSTICK is not set 537# CONFIG_MEMSTICK is not set
514# CONFIG_ACCESSIBILITY is not set
515# CONFIG_NEW_LEDS is not set 538# CONFIG_NEW_LEDS is not set
539# CONFIG_ACCESSIBILITY is not set
516CONFIG_RTC_LIB=y 540CONFIG_RTC_LIB=y
517# CONFIG_RTC_CLASS is not set 541# CONFIG_RTC_CLASS is not set
518# CONFIG_DMADEVICES is not set 542# CONFIG_DMADEVICES is not set
519# CONFIG_AUXDISPLAY is not set 543# CONFIG_AUXDISPLAY is not set
520# CONFIG_REGULATOR is not set
521# CONFIG_UIO is not set 544# CONFIG_UIO is not set
545
546#
547# TI VLYNQ
548#
522# CONFIG_STAGING is not set 549# CONFIG_STAGING is not set
523 550
524# 551#
@@ -535,9 +562,12 @@ CONFIG_JBD=y
535# CONFIG_REISERFS_FS is not set 562# CONFIG_REISERFS_FS is not set
536# CONFIG_JFS_FS is not set 563# CONFIG_JFS_FS is not set
537# CONFIG_FS_POSIX_ACL is not set 564# CONFIG_FS_POSIX_ACL is not set
538CONFIG_FILE_LOCKING=y
539# CONFIG_XFS_FS is not set 565# CONFIG_XFS_FS is not set
566# CONFIG_GFS2_FS is not set
540# CONFIG_BTRFS_FS is not set 567# CONFIG_BTRFS_FS is not set
568# CONFIG_NILFS2_FS is not set
569CONFIG_FILE_LOCKING=y
570CONFIG_FSNOTIFY=y
541CONFIG_DNOTIFY=y 571CONFIG_DNOTIFY=y
542CONFIG_INOTIFY=y 572CONFIG_INOTIFY=y
543CONFIG_INOTIFY_USER=y 573CONFIG_INOTIFY_USER=y
@@ -601,7 +631,6 @@ CONFIG_MISC_FILESYSTEMS=y
601# CONFIG_ROMFS_FS is not set 631# CONFIG_ROMFS_FS is not set
602# CONFIG_SYSV_FS is not set 632# CONFIG_SYSV_FS is not set
603# CONFIG_UFS_FS is not set 633# CONFIG_UFS_FS is not set
604# CONFIG_NILFS2_FS is not set
605 634
606# 635#
607# Partition Types 636# Partition Types
@@ -673,23 +702,24 @@ CONFIG_NLS_ISO8859_1=y
673# CONFIG_ENABLE_MUST_CHECK is not set 702# CONFIG_ENABLE_MUST_CHECK is not set
674CONFIG_FRAME_WARN=1024 703CONFIG_FRAME_WARN=1024
675CONFIG_MAGIC_SYSRQ=y 704CONFIG_MAGIC_SYSRQ=y
705# CONFIG_STRIP_ASM_SYMS is not set
676# CONFIG_UNUSED_SYMBOLS is not set 706# CONFIG_UNUSED_SYMBOLS is not set
677# CONFIG_DEBUG_FS is not set 707# CONFIG_DEBUG_FS is not set
678# CONFIG_HEADERS_CHECK is not set 708# CONFIG_HEADERS_CHECK is not set
679CONFIG_DEBUG_KERNEL=y 709CONFIG_DEBUG_KERNEL=y
680# CONFIG_DEBUG_SHIRQ is not set 710# CONFIG_DEBUG_SHIRQ is not set
681CONFIG_DETECT_SOFTLOCKUP=y 711# CONFIG_DETECT_SOFTLOCKUP is not set
682# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
683CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
684CONFIG_DETECT_HUNG_TASK=y 712CONFIG_DETECT_HUNG_TASK=y
685# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set 713# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
686CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 714CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
687CONFIG_SCHED_DEBUG=y 715# CONFIG_SCHED_DEBUG is not set
688# CONFIG_SCHEDSTATS is not set 716# CONFIG_SCHEDSTATS is not set
689# CONFIG_TIMER_STATS is not set 717# CONFIG_TIMER_STATS is not set
690# CONFIG_DEBUG_OBJECTS is not set 718# CONFIG_DEBUG_OBJECTS is not set
691# CONFIG_SLUB_DEBUG_ON is not set 719# CONFIG_SLUB_DEBUG_ON is not set
692# CONFIG_SLUB_STATS is not set 720# CONFIG_SLUB_STATS is not set
721# CONFIG_DEBUG_KMEMLEAK is not set
722# CONFIG_DEBUG_PREEMPT is not set
693# CONFIG_DEBUG_RT_MUTEXES is not set 723# CONFIG_DEBUG_RT_MUTEXES is not set
694# CONFIG_RT_MUTEX_TESTER is not set 724# CONFIG_RT_MUTEX_TESTER is not set
695# CONFIG_DEBUG_SPINLOCK is not set 725# CONFIG_DEBUG_SPINLOCK is not set
@@ -708,31 +738,22 @@ CONFIG_DEBUG_INFO=y
708# CONFIG_DEBUG_LIST is not set 738# CONFIG_DEBUG_LIST is not set
709# CONFIG_DEBUG_SG is not set 739# CONFIG_DEBUG_SG is not set
710# CONFIG_DEBUG_NOTIFIERS is not set 740# CONFIG_DEBUG_NOTIFIERS is not set
741# CONFIG_DEBUG_CREDENTIALS is not set
711CONFIG_FRAME_POINTER=y 742CONFIG_FRAME_POINTER=y
712# CONFIG_BOOT_PRINTK_DELAY is not set 743# CONFIG_BOOT_PRINTK_DELAY is not set
713# CONFIG_RCU_TORTURE_TEST is not set 744# CONFIG_RCU_TORTURE_TEST is not set
714# CONFIG_RCU_CPU_STALL_DETECTOR is not set 745# CONFIG_RCU_CPU_STALL_DETECTOR is not set
715# CONFIG_BACKTRACE_SELF_TEST is not set 746# CONFIG_BACKTRACE_SELF_TEST is not set
716# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 747# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
748# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
717# CONFIG_FAULT_INJECTION is not set 749# CONFIG_FAULT_INJECTION is not set
718# CONFIG_PAGE_POISONING is not set 750# CONFIG_PAGE_POISONING is not set
719CONFIG_HAVE_FUNCTION_TRACER=y 751CONFIG_HAVE_FUNCTION_TRACER=y
720CONFIG_TRACING_SUPPORT=y 752CONFIG_TRACING_SUPPORT=y
721 753# CONFIG_FTRACE is not set
722# 754# CONFIG_BRANCH_PROFILE_NONE is not set
723# Tracers 755# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
724# 756# CONFIG_PROFILE_ALL_BRANCHES is not set
725# CONFIG_FUNCTION_TRACER is not set
726# CONFIG_IRQSOFF_TRACER is not set
727# CONFIG_SCHED_TRACER is not set
728# CONFIG_CONTEXT_SWITCH_TRACER is not set
729# CONFIG_EVENT_TRACER is not set
730# CONFIG_BOOT_TRACER is not set
731# CONFIG_TRACE_BRANCH_PROFILING is not set
732# CONFIG_STACK_TRACER is not set
733# CONFIG_KMEMTRACE is not set
734# CONFIG_WORKQUEUE_TRACER is not set
735# CONFIG_BLK_DEV_IO_TRACE is not set
736# CONFIG_SAMPLES is not set 757# CONFIG_SAMPLES is not set
737CONFIG_HAVE_ARCH_KGDB=y 758CONFIG_HAVE_ARCH_KGDB=y
738# CONFIG_KGDB is not set 759# CONFIG_KGDB is not set
@@ -754,7 +775,6 @@ CONFIG_CRYPTO=y
754# 775#
755# Crypto core or helper 776# Crypto core or helper
756# 777#
757# CONFIG_CRYPTO_FIPS is not set
758CONFIG_CRYPTO_ALGAPI=y 778CONFIG_CRYPTO_ALGAPI=y
759CONFIG_CRYPTO_ALGAPI2=y 779CONFIG_CRYPTO_ALGAPI2=y
760CONFIG_CRYPTO_AEAD2=y 780CONFIG_CRYPTO_AEAD2=y
@@ -796,11 +816,13 @@ CONFIG_CRYPTO_PCBC=m
796# 816#
797# CONFIG_CRYPTO_HMAC is not set 817# CONFIG_CRYPTO_HMAC is not set
798# CONFIG_CRYPTO_XCBC is not set 818# CONFIG_CRYPTO_XCBC is not set
819# CONFIG_CRYPTO_VMAC is not set
799 820
800# 821#
801# Digest 822# Digest
802# 823#
803CONFIG_CRYPTO_CRC32C=y 824CONFIG_CRYPTO_CRC32C=y
825# CONFIG_CRYPTO_GHASH is not set
804# CONFIG_CRYPTO_MD4 is not set 826# CONFIG_CRYPTO_MD4 is not set
805CONFIG_CRYPTO_MD5=y 827CONFIG_CRYPTO_MD5=y
806# CONFIG_CRYPTO_MICHAEL_MIC is not set 828# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/arm/configs/omap_zoom2_defconfig b/arch/arm/configs/omap_zoom2_defconfig
index eef93627fb13..4b00a4306812 100644
--- a/arch/arm/configs/omap_zoom2_defconfig
+++ b/arch/arm/configs/omap_zoom2_defconfig
@@ -610,7 +610,8 @@ CONFIG_INPUT_EVDEV=y
610# 610#
611# Input Device Drivers 611# Input Device Drivers
612# 612#
613# CONFIG_INPUT_KEYBOARD is not set 613CONFIG_INPUT_KEYBOARD=y
614CONFIG_KEYBOARD_TWL4030=y
614# CONFIG_INPUT_MOUSE is not set 615# CONFIG_INPUT_MOUSE is not set
615# CONFIG_INPUT_JOYSTICK is not set 616# CONFIG_INPUT_JOYSTICK is not set
616# CONFIG_INPUT_TABLET is not set 617# CONFIG_INPUT_TABLET is not set
diff --git a/arch/arm/configs/omap_zoom3_defconfig b/arch/arm/configs/omap_zoom3_defconfig
index f0e7d0f85582..0d7e37a3651b 100644
--- a/arch/arm/configs/omap_zoom3_defconfig
+++ b/arch/arm/configs/omap_zoom3_defconfig
@@ -629,7 +629,8 @@ CONFIG_INPUT_EVDEV=y
629# 629#
630# Input Device Drivers 630# Input Device Drivers
631# 631#
632# CONFIG_INPUT_KEYBOARD is not set 632CONFIG_INPUT_KEYBOARD=y
633CONFIG_KEYBOARD_TWL4030=y
633# CONFIG_INPUT_MOUSE is not set 634# CONFIG_INPUT_MOUSE is not set
634# CONFIG_INPUT_JOYSTICK is not set 635# CONFIG_INPUT_JOYSTICK is not set
635# CONFIG_INPUT_TABLET is not set 636# CONFIG_INPUT_TABLET is not set
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile
index ceced8ffe850..9ce17f13d3f1 100644
--- a/arch/arm/mach-omap1/Makefile
+++ b/arch/arm/mach-omap1/Makefile
@@ -18,6 +18,9 @@ obj-$(CONFIG_PM) += pm.o sleep.o
18obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox_mach.o 18obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox_mach.o
19mailbox_mach-objs := mailbox.o 19mailbox_mach-objs := mailbox.o
20 20
21i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
22obj-y += $(i2c-omap-m) $(i2c-omap-y)
23
21led-y := leds.o 24led-y := leds.o
22 25
23# Specific board support 26# Specific board support
@@ -49,3 +52,7 @@ led-$(CONFIG_MACH_OMAP_INNOVATOR) += leds-innovator.o
49led-$(CONFIG_MACH_OMAP_PERSEUS2) += leds-h2p2-debug.o 52led-$(CONFIG_MACH_OMAP_PERSEUS2) += leds-h2p2-debug.o
50led-$(CONFIG_MACH_OMAP_OSK) += leds-osk.o 53led-$(CONFIG_MACH_OMAP_OSK) += leds-osk.o
51obj-$(CONFIG_LEDS) += $(led-y) 54obj-$(CONFIG_LEDS) += $(led-y)
55
56ifneq ($(CONFIG_FB_OMAP),)
57obj-y += lcd_dma.o
58endif
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c
index f4b72c1654f5..7e70c3c08da6 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/nand.h> 19#include <linux/mtd/nand.h>
20#include <linux/mtd/partitions.h> 20#include <linux/mtd/partitions.h>
21#include <linux/input.h> 21#include <linux/input.h>
22#include <linux/smc91x.h>
22 23
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <asm/mach-types.h> 25#include <asm/mach-types.h>
@@ -30,7 +31,6 @@
30#include <mach/gpio.h> 31#include <mach/gpio.h>
31#include <plat/mux.h> 32#include <plat/mux.h>
32#include <plat/fpga.h> 33#include <plat/fpga.h>
33#include <plat/nand.h>
34#include <plat/keypad.h> 34#include <plat/keypad.h>
35#include <plat/common.h> 35#include <plat/common.h>
36#include <plat/board.h> 36#include <plat/board.h>
@@ -100,6 +100,12 @@ static int fsample_keymap[] = {
100 0 100 0
101}; 101};
102 102
103static struct smc91x_platdata smc91x_info = {
104 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
105 .leda = RPC_LED_100_10,
106 .ledb = RPC_LED_TX_RX,
107};
108
103static struct resource smc91x_resources[] = { 109static struct resource smc91x_resources[] = {
104 [0] = { 110 [0] = {
105 .start = H2P2_DBG_FPGA_ETHR_START, /* Physical */ 111 .start = H2P2_DBG_FPGA_ETHR_START, /* Physical */
@@ -167,8 +173,40 @@ static struct platform_device nor_device = {
167 .resource = &nor_resource, 173 .resource = &nor_resource,
168}; 174};
169 175
170static struct omap_nand_platform_data nand_data = { 176static void nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
171 .options = NAND_SAMSUNG_LP_OPTIONS, 177{
178 struct nand_chip *this = mtd->priv;
179 unsigned long mask;
180
181 if (cmd == NAND_CMD_NONE)
182 return;
183
184 mask = (ctrl & NAND_CLE) ? 0x02 : 0;
185 if (ctrl & NAND_ALE)
186 mask |= 0x04;
187 writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
188}
189
190#define FSAMPLE_NAND_RB_GPIO_PIN 62
191
192static int nand_dev_ready(struct mtd_info *mtd)
193{
194 return gpio_get_value(FSAMPLE_NAND_RB_GPIO_PIN);
195}
196
197static const char *part_probes[] = { "cmdlinepart", NULL };
198
199static struct platform_nand_data nand_data = {
200 .chip = {
201 .nr_chips = 1,
202 .chip_offset = 0,
203 .options = NAND_SAMSUNG_LP_OPTIONS,
204 .part_probe_types = part_probes,
205 },
206 .ctrl = {
207 .cmd_ctrl = nand_cmd_ctl,
208 .dev_ready = nand_dev_ready,
209 },
172}; 210};
173 211
174static struct resource nand_resource = { 212static struct resource nand_resource = {
@@ -178,7 +216,7 @@ static struct resource nand_resource = {
178}; 216};
179 217
180static struct platform_device nand_device = { 218static struct platform_device nand_device = {
181 .name = "omapnand", 219 .name = "gen_nand",
182 .id = 0, 220 .id = 0,
183 .dev = { 221 .dev = {
184 .platform_data = &nand_data, 222 .platform_data = &nand_data,
@@ -190,6 +228,9 @@ static struct platform_device nand_device = {
190static struct platform_device smc91x_device = { 228static struct platform_device smc91x_device = {
191 .name = "smc91x", 229 .name = "smc91x",
192 .id = 0, 230 .id = 0,
231 .dev = {
232 .platform_data = &smc91x_info,
233 },
193 .num_resources = ARRAY_SIZE(smc91x_resources), 234 .num_resources = ARRAY_SIZE(smc91x_resources),
194 .resource = smc91x_resources, 235 .resource = smc91x_resources,
195}; 236};
@@ -233,13 +274,6 @@ static struct platform_device *devices[] __initdata = {
233 &lcd_device, 274 &lcd_device,
234}; 275};
235 276
236#define P2_NAND_RB_GPIO_PIN 62
237
238static int nand_dev_ready(struct omap_nand_platform_data *data)
239{
240 return gpio_get_value(P2_NAND_RB_GPIO_PIN);
241}
242
243static struct omap_lcd_config fsample_lcd_config __initdata = { 277static struct omap_lcd_config fsample_lcd_config __initdata = {
244 .ctrl_name = "internal", 278 .ctrl_name = "internal",
245}; 279};
@@ -250,9 +284,9 @@ static struct omap_board_config_kernel fsample_config[] = {
250 284
251static void __init omap_fsample_init(void) 285static void __init omap_fsample_init(void)
252{ 286{
253 if (gpio_request(P2_NAND_RB_GPIO_PIN, "NAND ready") < 0) 287 if (gpio_request(FSAMPLE_NAND_RB_GPIO_PIN, "NAND ready") < 0)
254 BUG(); 288 BUG();
255 nand_data.dev_ready = nand_dev_ready; 289 gpio_direction_input(FSAMPLE_NAND_RB_GPIO_PIN);
256 290
257 omap_cfg_reg(L3_1610_FLASH_CS2B_OE); 291 omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
258 omap_cfg_reg(M8_1610_FLASH_CS2B_WE); 292 omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 89ba8ec4bbf4..fa7cecea19f9 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -28,6 +28,7 @@
28#include <linux/mtd/partitions.h> 28#include <linux/mtd/partitions.h>
29#include <linux/input.h> 29#include <linux/input.h>
30#include <linux/i2c/tps65010.h> 30#include <linux/i2c/tps65010.h>
31#include <linux/smc91x.h>
31 32
32#include <mach/hardware.h> 33#include <mach/hardware.h>
33#include <asm/gpio.h> 34#include <asm/gpio.h>
@@ -40,7 +41,6 @@
40#include <plat/mux.h> 41#include <plat/mux.h>
41#include <plat/dma.h> 42#include <plat/dma.h>
42#include <plat/tc.h> 43#include <plat/tc.h>
43#include <plat/nand.h>
44#include <plat/irda.h> 44#include <plat/irda.h>
45#include <plat/usb.h> 45#include <plat/usb.h>
46#include <plat/keypad.h> 46#include <plat/keypad.h>
@@ -179,11 +179,43 @@ static struct mtd_partition h2_nand_partitions[] = {
179 }, 179 },
180}; 180};
181 181
182/* dip switches control NAND chip access: 8 bit, 16 bit, or neither */ 182static void h2_nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
183static struct omap_nand_platform_data h2_nand_data = { 183{
184 .options = NAND_SAMSUNG_LP_OPTIONS, 184 struct nand_chip *this = mtd->priv;
185 .parts = h2_nand_partitions, 185 unsigned long mask;
186 .nr_parts = ARRAY_SIZE(h2_nand_partitions), 186
187 if (cmd == NAND_CMD_NONE)
188 return;
189
190 mask = (ctrl & NAND_CLE) ? 0x02 : 0;
191 if (ctrl & NAND_ALE)
192 mask |= 0x04;
193 writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
194}
195
196#define H2_NAND_RB_GPIO_PIN 62
197
198static int h2_nand_dev_ready(struct mtd_info *mtd)
199{
200 return gpio_get_value(H2_NAND_RB_GPIO_PIN);
201}
202
203static const char *h2_part_probes[] = { "cmdlinepart", NULL };
204
205struct platform_nand_data h2_nand_platdata = {
206 .chip = {
207 .nr_chips = 1,
208 .chip_offset = 0,
209 .nr_partitions = ARRAY_SIZE(h2_nand_partitions),
210 .partitions = h2_nand_partitions,
211 .options = NAND_SAMSUNG_LP_OPTIONS,
212 .part_probe_types = h2_part_probes,
213 },
214 .ctrl = {
215 .cmd_ctrl = h2_nand_cmd_ctl,
216 .dev_ready = h2_nand_dev_ready,
217
218 },
187}; 219};
188 220
189static struct resource h2_nand_resource = { 221static struct resource h2_nand_resource = {
@@ -191,15 +223,21 @@ static struct resource h2_nand_resource = {
191}; 223};
192 224
193static struct platform_device h2_nand_device = { 225static struct platform_device h2_nand_device = {
194 .name = "omapnand", 226 .name = "gen_nand",
195 .id = 0, 227 .id = 0,
196 .dev = { 228 .dev = {
197 .platform_data = &h2_nand_data, 229 .platform_data = &h2_nand_platdata,
198 }, 230 },
199 .num_resources = 1, 231 .num_resources = 1,
200 .resource = &h2_nand_resource, 232 .resource = &h2_nand_resource,
201}; 233};
202 234
235static struct smc91x_platdata h2_smc91x_info = {
236 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
237 .leda = RPC_LED_100_10,
238 .ledb = RPC_LED_TX_RX,
239};
240
203static struct resource h2_smc91x_resources[] = { 241static struct resource h2_smc91x_resources[] = {
204 [0] = { 242 [0] = {
205 .start = OMAP1610_ETHR_START, /* Physical */ 243 .start = OMAP1610_ETHR_START, /* Physical */
@@ -216,6 +254,9 @@ static struct resource h2_smc91x_resources[] = {
216static struct platform_device h2_smc91x_device = { 254static struct platform_device h2_smc91x_device = {
217 .name = "smc91x", 255 .name = "smc91x",
218 .id = 0, 256 .id = 0,
257 .dev = {
258 .platform_data = &h2_smc91x_info,
259 },
219 .num_resources = ARRAY_SIZE(h2_smc91x_resources), 260 .num_resources = ARRAY_SIZE(h2_smc91x_resources),
220 .resource = h2_smc91x_resources, 261 .resource = h2_smc91x_resources,
221}; 262};
@@ -368,8 +409,6 @@ static struct omap_board_config_kernel h2_config[] __initdata = {
368 { OMAP_TAG_LCD, &h2_lcd_config }, 409 { OMAP_TAG_LCD, &h2_lcd_config },
369}; 410};
370 411
371#define H2_NAND_RB_GPIO_PIN 62
372
373static void __init h2_init(void) 412static void __init h2_init(void)
374{ 413{
375 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped 414 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index f5cc0a730524..6a7f9c391cf1 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -28,6 +28,7 @@
28#include <linux/input.h> 28#include <linux/input.h>
29#include <linux/spi/spi.h> 29#include <linux/spi/spi.h>
30#include <linux/i2c/tps65010.h> 30#include <linux/i2c/tps65010.h>
31#include <linux/smc91x.h>
31 32
32#include <asm/setup.h> 33#include <asm/setup.h>
33#include <asm/page.h> 34#include <asm/page.h>
@@ -42,7 +43,6 @@
42#include <mach/irqs.h> 43#include <mach/irqs.h>
43#include <plat/mux.h> 44#include <plat/mux.h>
44#include <plat/tc.h> 45#include <plat/tc.h>
45#include <plat/nand.h>
46#include <plat/usb.h> 46#include <plat/usb.h>
47#include <plat/keypad.h> 47#include <plat/keypad.h>
48#include <plat/dma.h> 48#include <plat/dma.h>
@@ -181,11 +181,43 @@ static struct mtd_partition nand_partitions[] = {
181 }, 181 },
182}; 182};
183 183
184/* dip switches control NAND chip access: 8 bit, 16 bit, or neither */ 184static void nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
185static struct omap_nand_platform_data nand_data = { 185{
186 .options = NAND_SAMSUNG_LP_OPTIONS, 186 struct nand_chip *this = mtd->priv;
187 .parts = nand_partitions, 187 unsigned long mask;
188 .nr_parts = ARRAY_SIZE(nand_partitions), 188
189 if (cmd == NAND_CMD_NONE)
190 return;
191
192 mask = (ctrl & NAND_CLE) ? 0x02 : 0;
193 if (ctrl & NAND_ALE)
194 mask |= 0x04;
195 writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
196}
197
198#define H3_NAND_RB_GPIO_PIN 10
199
200static int nand_dev_ready(struct mtd_info *mtd)
201{
202 return gpio_get_value(H3_NAND_RB_GPIO_PIN);
203}
204
205static const char *part_probes[] = { "cmdlinepart", NULL };
206
207struct platform_nand_data nand_platdata = {
208 .chip = {
209 .nr_chips = 1,
210 .chip_offset = 0,
211 .nr_partitions = ARRAY_SIZE(nand_partitions),
212 .partitions = nand_partitions,
213 .options = NAND_SAMSUNG_LP_OPTIONS,
214 .part_probe_types = part_probes,
215 },
216 .ctrl = {
217 .cmd_ctrl = nand_cmd_ctl,
218 .dev_ready = nand_dev_ready,
219
220 },
189}; 221};
190 222
191static struct resource nand_resource = { 223static struct resource nand_resource = {
@@ -193,15 +225,21 @@ static struct resource nand_resource = {
193}; 225};
194 226
195static struct platform_device nand_device = { 227static struct platform_device nand_device = {
196 .name = "omapnand", 228 .name = "gen_nand",
197 .id = 0, 229 .id = 0,
198 .dev = { 230 .dev = {
199 .platform_data = &nand_data, 231 .platform_data = &nand_platdata,
200 }, 232 },
201 .num_resources = 1, 233 .num_resources = 1,
202 .resource = &nand_resource, 234 .resource = &nand_resource,
203}; 235};
204 236
237static struct smc91x_platdata smc91x_info = {
238 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
239 .leda = RPC_LED_100_10,
240 .ledb = RPC_LED_TX_RX,
241};
242
205static struct resource smc91x_resources[] = { 243static struct resource smc91x_resources[] = {
206 [0] = { 244 [0] = {
207 .start = OMAP1710_ETHR_START, /* Physical */ 245 .start = OMAP1710_ETHR_START, /* Physical */
@@ -218,6 +256,9 @@ static struct resource smc91x_resources[] = {
218static struct platform_device smc91x_device = { 256static struct platform_device smc91x_device = {
219 .name = "smc91x", 257 .name = "smc91x",
220 .id = 0, 258 .id = 0,
259 .dev = {
260 .platform_data = &smc91x_info,
261 },
221 .num_resources = ARRAY_SIZE(smc91x_resources), 262 .num_resources = ARRAY_SIZE(smc91x_resources),
222 .resource = smc91x_resources, 263 .resource = smc91x_resources,
223}; 264};
@@ -332,13 +373,6 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = {
332 }, 373 },
333}; 374};
334 375
335#define H3_NAND_RB_GPIO_PIN 10
336
337static int nand_dev_ready(struct omap_nand_platform_data *data)
338{
339 return gpio_get_value(H3_NAND_RB_GPIO_PIN);
340}
341
342static void __init h3_init(void) 376static void __init h3_init(void)
343{ 377{
344 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped 378 /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped
@@ -356,7 +390,7 @@ static void __init h3_init(void)
356 nand_resource.end += SZ_4K - 1; 390 nand_resource.end += SZ_4K - 1;
357 if (gpio_request(H3_NAND_RB_GPIO_PIN, "NAND ready") < 0) 391 if (gpio_request(H3_NAND_RB_GPIO_PIN, "NAND ready") < 0)
358 BUG(); 392 BUG();
359 nand_data.dev_ready = nand_dev_ready; 393 gpio_direction_input(H3_NAND_RB_GPIO_PIN);
360 394
361 /* GPIO10 Func_MUX_CTRL reg bit 29:27, Configure V2 to mode1 as GPIO */ 395 /* GPIO10 Func_MUX_CTRL reg bit 29:27, Configure V2 to mode1 as GPIO */
362 /* GPIO10 pullup/down register, Enable pullup on GPIO10 */ 396 /* GPIO10 pullup/down register, Enable pullup on GPIO10 */
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c
index 5f28a5ceacac..e36639f66150 100644
--- a/arch/arm/mach-omap1/board-htcherald.c
+++ b/arch/arm/mach-omap1/board-htcherald.c
@@ -39,6 +39,7 @@
39#include <plat/common.h> 39#include <plat/common.h>
40#include <plat/board.h> 40#include <plat/board.h>
41#include <plat/keypad.h> 41#include <plat/keypad.h>
42#include <plat/usb.h>
42 43
43#include <mach/irqs.h> 44#include <mach/irqs.h>
44 45
@@ -140,6 +141,15 @@ static struct platform_device kp_device = {
140 .resource = kp_resources, 141 .resource = kp_resources,
141}; 142};
142 143
144/* USB Device */
145static struct omap_usb_config htcherald_usb_config __initdata = {
146 .otg = 0,
147 .register_host = 0,
148 .register_dev = 1,
149 .hmc_mode = 4,
150 .pins[0] = 2,
151};
152
143/* LCD Device resources */ 153/* LCD Device resources */
144static struct platform_device lcd_device = { 154static struct platform_device lcd_device = {
145 .name = "lcd_htcherald", 155 .name = "lcd_htcherald",
@@ -214,6 +224,57 @@ static void __init htcherald_disable_watchdog(void)
214 } 224 }
215} 225}
216 226
227#define HTCHERALD_GPIO_USB_EN1 33
228#define HTCHERALD_GPIO_USB_EN2 73
229#define HTCHERALD_GPIO_USB_DM 35
230#define HTCHERALD_GPIO_USB_DP 36
231
232static void __init htcherald_usb_enable(void)
233{
234 unsigned int tries = 20;
235 unsigned int value = 0;
236
237 /* Request the GPIOs we need to control here */
238 if (gpio_request(HTCHERALD_GPIO_USB_EN1, "herald_usb") < 0)
239 goto err1;
240
241 if (gpio_request(HTCHERALD_GPIO_USB_EN2, "herald_usb") < 0)
242 goto err2;
243
244 if (gpio_request(HTCHERALD_GPIO_USB_DM, "herald_usb") < 0)
245 goto err3;
246
247 if (gpio_request(HTCHERALD_GPIO_USB_DP, "herald_usb") < 0)
248 goto err4;
249
250 /* force USB_EN GPIO to 0 */
251 do {
252 /* output low */
253 gpio_direction_output(HTCHERALD_GPIO_USB_EN1, 0);
254 } while ((value = gpio_get_value(HTCHERALD_GPIO_USB_EN1)) == 1 &&
255 --tries);
256
257 if (value == 1)
258 printk(KERN_WARNING "Unable to reset USB, trying to continue\n");
259
260 gpio_direction_output(HTCHERALD_GPIO_USB_EN2, 0); /* output low */
261 gpio_direction_input(HTCHERALD_GPIO_USB_DM); /* input */
262 gpio_direction_input(HTCHERALD_GPIO_USB_DP); /* input */
263
264 goto done;
265
266err4:
267 gpio_free(HTCHERALD_GPIO_USB_DM);
268err3:
269 gpio_free(HTCHERALD_GPIO_USB_EN2);
270err2:
271 gpio_free(HTCHERALD_GPIO_USB_EN1);
272err1:
273 printk(KERN_ERR "Unabled to request GPIO for USB\n");
274done:
275 printk(KERN_INFO "USB setup complete.\n");
276}
277
217static void __init htcherald_init(void) 278static void __init htcherald_init(void)
218{ 279{
219 printk(KERN_INFO "HTC Herald init.\n"); 280 printk(KERN_INFO "HTC Herald init.\n");
@@ -225,6 +286,9 @@ static void __init htcherald_init(void)
225 platform_add_devices(devices, ARRAY_SIZE(devices)); 286 platform_add_devices(devices, ARRAY_SIZE(devices));
226 287
227 htcherald_disable_watchdog(); 288 htcherald_disable_watchdog();
289
290 htcherald_usb_enable();
291 omap_usb_init(&htcherald_usb_config);
228} 292}
229 293
230static void __init htcherald_init_irq(void) 294static void __init htcherald_init_irq(void)
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index cf0fdb9c182f..2133b006f6a3 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -23,6 +23,7 @@
23#include <linux/mtd/mtd.h> 23#include <linux/mtd/mtd.h>
24#include <linux/mtd/partitions.h> 24#include <linux/mtd/partitions.h>
25#include <linux/input.h> 25#include <linux/input.h>
26#include <linux/smc91x.h>
26 27
27#include <mach/hardware.h> 28#include <mach/hardware.h>
28#include <asm/mach-types.h> 29#include <asm/mach-types.h>
@@ -142,6 +143,11 @@ static struct platform_device innovator_kp_device = {
142 .resource = innovator_kp_resources, 143 .resource = innovator_kp_resources,
143}; 144};
144 145
146static struct smc91x_platdata innovator_smc91x_info = {
147 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
148 .leda = RPC_LED_100_10,
149 .ledb = RPC_LED_TX_RX,
150};
145 151
146#ifdef CONFIG_ARCH_OMAP15XX 152#ifdef CONFIG_ARCH_OMAP15XX
147 153
@@ -175,6 +181,9 @@ static struct resource innovator1510_smc91x_resources[] = {
175static struct platform_device innovator1510_smc91x_device = { 181static struct platform_device innovator1510_smc91x_device = {
176 .name = "smc91x", 182 .name = "smc91x",
177 .id = 0, 183 .id = 0,
184 .dev = {
185 .platform_data = &innovator_smc91x_info,
186 },
178 .num_resources = ARRAY_SIZE(innovator1510_smc91x_resources), 187 .num_resources = ARRAY_SIZE(innovator1510_smc91x_resources),
179 .resource = innovator1510_smc91x_resources, 188 .resource = innovator1510_smc91x_resources,
180}; 189};
@@ -241,6 +250,9 @@ static struct resource innovator1610_smc91x_resources[] = {
241static struct platform_device innovator1610_smc91x_device = { 250static struct platform_device innovator1610_smc91x_device = {
242 .name = "smc91x", 251 .name = "smc91x",
243 .id = 0, 252 .id = 0,
253 .dev = {
254 .platform_data = &innovator_smc91x_info,
255 },
244 .num_resources = ARRAY_SIZE(innovator1610_smc91x_resources), 256 .num_resources = ARRAY_SIZE(innovator1610_smc91x_resources),
245 .resource = innovator1610_smc91x_resources, 257 .resource = innovator1610_smc91x_resources,
246}; 258};
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 50c92c13e48a..ccea4f448e9a 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -33,6 +33,7 @@
33#include <linux/irq.h> 33#include <linux/irq.h>
34#include <linux/i2c.h> 34#include <linux/i2c.h>
35#include <linux/leds.h> 35#include <linux/leds.h>
36#include <linux/smc91x.h>
36 37
37#include <linux/mtd/mtd.h> 38#include <linux/mtd/mtd.h>
38#include <linux/mtd/partitions.h> 39#include <linux/mtd/partitions.h>
@@ -115,6 +116,12 @@ static struct platform_device osk5912_flash_device = {
115 .resource = &osk_flash_resource, 116 .resource = &osk_flash_resource,
116}; 117};
117 118
119static struct smc91x_platdata osk5912_smc91x_info = {
120 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
121 .leda = RPC_LED_100_10,
122 .ledb = RPC_LED_TX_RX,
123};
124
118static struct resource osk5912_smc91x_resources[] = { 125static struct resource osk5912_smc91x_resources[] = {
119 [0] = { 126 [0] = {
120 .start = OMAP_OSK_ETHR_START, /* Physical */ 127 .start = OMAP_OSK_ETHR_START, /* Physical */
@@ -131,6 +138,9 @@ static struct resource osk5912_smc91x_resources[] = {
131static struct platform_device osk5912_smc91x_device = { 138static struct platform_device osk5912_smc91x_device = {
132 .name = "smc91x", 139 .name = "smc91x",
133 .id = -1, 140 .id = -1,
141 .dev = {
142 .platform_data = &osk5912_smc91x_info,
143 },
134 .num_resources = ARRAY_SIZE(osk5912_smc91x_resources), 144 .num_resources = ARRAY_SIZE(osk5912_smc91x_resources),
135 .resource = osk5912_smc91x_resources, 145 .resource = osk5912_smc91x_resources,
136}; 146};
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
index ca7df1e93efc..1387a4f15da9 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/nand.h> 19#include <linux/mtd/nand.h>
20#include <linux/mtd/partitions.h> 20#include <linux/mtd/partitions.h>
21#include <linux/input.h> 21#include <linux/input.h>
22#include <linux/smc91x.h>
22 23
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <asm/mach-types.h> 25#include <asm/mach-types.h>
@@ -30,7 +31,6 @@
30#include <mach/gpio.h> 31#include <mach/gpio.h>
31#include <plat/mux.h> 32#include <plat/mux.h>
32#include <plat/fpga.h> 33#include <plat/fpga.h>
33#include <plat/nand.h>
34#include <plat/keypad.h> 34#include <plat/keypad.h>
35#include <plat/common.h> 35#include <plat/common.h>
36#include <plat/board.h> 36#include <plat/board.h>
@@ -67,6 +67,12 @@ static int p2_keymap[] = {
67 0 67 0
68}; 68};
69 69
70static struct smc91x_platdata smc91x_info = {
71 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
72 .leda = RPC_LED_100_10,
73 .ledb = RPC_LED_TX_RX,
74};
75
70static struct resource smc91x_resources[] = { 76static struct resource smc91x_resources[] = {
71 [0] = { 77 [0] = {
72 .start = H2P2_DBG_FPGA_ETHR_START, /* Physical */ 78 .start = H2P2_DBG_FPGA_ETHR_START, /* Physical */
@@ -134,8 +140,40 @@ static struct platform_device nor_device = {
134 .resource = &nor_resource, 140 .resource = &nor_resource,
135}; 141};
136 142
137static struct omap_nand_platform_data nand_data = { 143static void nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
138 .options = NAND_SAMSUNG_LP_OPTIONS, 144{
145 struct nand_chip *this = mtd->priv;
146 unsigned long mask;
147
148 if (cmd == NAND_CMD_NONE)
149 return;
150
151 mask = (ctrl & NAND_CLE) ? 0x02 : 0;
152 if (ctrl & NAND_ALE)
153 mask |= 0x04;
154 writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
155}
156
157#define P2_NAND_RB_GPIO_PIN 62
158
159static int nand_dev_ready(struct mtd_info *mtd)
160{
161 return gpio_get_value(P2_NAND_RB_GPIO_PIN);
162}
163
164static const char *part_probes[] = { "cmdlinepart", NULL };
165
166static struct platform_nand_data nand_data = {
167 .chip = {
168 .nr_chips = 1,
169 .chip_offset = 0,
170 .options = NAND_SAMSUNG_LP_OPTIONS,
171 .part_probe_types = part_probes,
172 },
173 .ctrl = {
174 .cmd_ctrl = nand_cmd_ctl,
175 .dev_ready = nand_dev_ready,
176 },
139}; 177};
140 178
141static struct resource nand_resource = { 179static struct resource nand_resource = {
@@ -145,7 +183,7 @@ static struct resource nand_resource = {
145}; 183};
146 184
147static struct platform_device nand_device = { 185static struct platform_device nand_device = {
148 .name = "omapnand", 186 .name = "gen_nand",
149 .id = 0, 187 .id = 0,
150 .dev = { 188 .dev = {
151 .platform_data = &nand_data, 189 .platform_data = &nand_data,
@@ -157,6 +195,9 @@ static struct platform_device nand_device = {
157static struct platform_device smc91x_device = { 195static struct platform_device smc91x_device = {
158 .name = "smc91x", 196 .name = "smc91x",
159 .id = 0, 197 .id = 0,
198 .dev = {
199 .platform_data = &smc91x_info,
200 },
160 .num_resources = ARRAY_SIZE(smc91x_resources), 201 .num_resources = ARRAY_SIZE(smc91x_resources),
161 .resource = smc91x_resources, 202 .resource = smc91x_resources,
162}; 203};
@@ -201,13 +242,6 @@ static struct platform_device *devices[] __initdata = {
201 &lcd_device, 242 &lcd_device,
202}; 243};
203 244
204#define P2_NAND_RB_GPIO_PIN 62
205
206static int nand_dev_ready(struct omap_nand_platform_data *data)
207{
208 return gpio_get_value(P2_NAND_RB_GPIO_PIN);
209}
210
211static struct omap_lcd_config perseus2_lcd_config __initdata = { 245static struct omap_lcd_config perseus2_lcd_config __initdata = {
212 .ctrl_name = "internal", 246 .ctrl_name = "internal",
213}; 247};
@@ -220,7 +254,7 @@ static void __init omap_perseus2_init(void)
220{ 254{
221 if (gpio_request(P2_NAND_RB_GPIO_PIN, "NAND ready") < 0) 255 if (gpio_request(P2_NAND_RB_GPIO_PIN, "NAND ready") < 0)
222 BUG(); 256 BUG();
223 nand_data.dev_ready = nand_dev_ready; 257 gpio_direction_input(P2_NAND_RB_GPIO_PIN);
224 258
225 omap_cfg_reg(L3_1610_FLASH_CS2B_OE); 259 omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
226 omap_cfg_reg(M8_1610_FLASH_CS2B_WE); 260 omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
index 35c75c1bd0aa..169183537997 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -22,6 +22,7 @@
22#include <linux/reboot.h> 22#include <linux/reboot.h>
23#include <linux/serial_8250.h> 23#include <linux/serial_8250.h>
24#include <linux/serial_reg.h> 24#include <linux/serial_reg.h>
25#include <linux/smc91x.h>
25 26
26#include <mach/hardware.h> 27#include <mach/hardware.h>
27#include <asm/mach-types.h> 28#include <asm/mach-types.h>
@@ -106,6 +107,12 @@ static struct platform_device voiceblue_flash_device = {
106 .resource = &voiceblue_flash_resource, 107 .resource = &voiceblue_flash_resource,
107}; 108};
108 109
110static struct smc91x_platdata voiceblue_smc91x_info = {
111 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
112 .leda = RPC_LED_100_10,
113 .ledb = RPC_LED_TX_RX,
114};
115
109static struct resource voiceblue_smc91x_resources[] = { 116static struct resource voiceblue_smc91x_resources[] = {
110 [0] = { 117 [0] = {
111 .start = OMAP_CS2_PHYS + 0x300, 118 .start = OMAP_CS2_PHYS + 0x300,
@@ -122,6 +129,9 @@ static struct resource voiceblue_smc91x_resources[] = {
122static struct platform_device voiceblue_smc91x_device = { 129static struct platform_device voiceblue_smc91x_device = {
123 .name = "smc91x", 130 .name = "smc91x",
124 .id = 0, 131 .id = 0,
132 .dev = {
133 .platform_data = &voiceblue_smc91x_info,
134 },
125 .num_resources = ARRAY_SIZE(voiceblue_smc91x_resources), 135 .num_resources = ARRAY_SIZE(voiceblue_smc91x_resources),
126 .resource = voiceblue_smc91x_resources, 136 .resource = voiceblue_smc91x_resources,
127}; 137};
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c
index cf5f017b392c..ab995a9c606c 100644
--- a/arch/arm/mach-omap1/clock_data.c
+++ b/arch/arm/mach-omap1/clock_data.c
@@ -655,9 +655,9 @@ static struct omap_clk omap_clks[] = {
655 CLK("mmci-omap.1", "ick", &armper_ck.clk, CK_16XX), 655 CLK("mmci-omap.1", "ick", &armper_ck.clk, CK_16XX),
656 /* Virtual clocks */ 656 /* Virtual clocks */
657 CLK(NULL, "mpu", &virtual_ck_mpu, CK_16XX | CK_1510 | CK_310), 657 CLK(NULL, "mpu", &virtual_ck_mpu, CK_16XX | CK_1510 | CK_310),
658 CLK("i2c_omap.1", "fck", &i2c_fck, CK_16XX | CK_1510 | CK_310), 658 CLK("i2c_omap.1", "fck", &i2c_fck, CK_16XX | CK_1510 | CK_310 | CK_7XX),
659 CLK("i2c_omap.1", "ick", &i2c_ick, CK_16XX), 659 CLK("i2c_omap.1", "ick", &i2c_ick, CK_16XX),
660 CLK("i2c_omap.1", "ick", &dummy_ck, CK_1510 | CK_310), 660 CLK("i2c_omap.1", "ick", &dummy_ck, CK_1510 | CK_310 | CK_7XX),
661 CLK("omap_uwire", "fck", &armxor_ck.clk, CK_16XX | CK_1510 | CK_310), 661 CLK("omap_uwire", "fck", &armxor_ck.clk, CK_16XX | CK_1510 | CK_310),
662 CLK("omap-mcbsp.1", "ick", &dspper_ck, CK_16XX), 662 CLK("omap-mcbsp.1", "ick", &dspper_ck, CK_16XX),
663 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_1510 | CK_310), 663 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_1510 | CK_310),
diff --git a/arch/arm/mach-omap1/i2c.c b/arch/arm/mach-omap1/i2c.c
new file mode 100644
index 000000000000..1bf4735e27a6
--- /dev/null
+++ b/arch/arm/mach-omap1/i2c.c
@@ -0,0 +1,39 @@
1/*
2 * Helper module for board specific I2C bus registration
3 *
4 * Copyright (C) 2009 Nokia Corporation.
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
8 * version 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * 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
18 * 02110-1301 USA
19 *
20 */
21
22#include <plat/i2c.h>
23#include <plat/mux.h>
24#include <plat/cpu.h>
25
26int __init omap_register_i2c_bus(int bus_id, u32 clkrate,
27 struct i2c_board_info const *info,
28 unsigned len)
29{
30 if (cpu_is_omap7xx()) {
31 omap_cfg_reg(I2C_7XX_SDA);
32 omap_cfg_reg(I2C_7XX_SCL);
33 } else {
34 omap_cfg_reg(I2C_SDA);
35 omap_cfg_reg(I2C_SCL);
36 }
37
38 return omap_plat_register_i2c_bus(bus_id, clkrate, info, len);
39}
diff --git a/arch/arm/mach-omap1/include/mach/lcd_dma.h b/arch/arm/mach-omap1/include/mach/lcd_dma.h
new file mode 100644
index 000000000000..d7a457bbcb7f
--- /dev/null
+++ b/arch/arm/mach-omap1/include/mach/lcd_dma.h
@@ -0,0 +1,78 @@
1/*
2 * arch/arm/mach-omap1/include/mach/lcd_dma.h
3 *
4 * Extracted from arch/arm/plat-omap/include/plat/dma.h
5 * Copyright (C) 2003 Nokia Corporation
6 * Author: Juha Yrjölä <juha.yrjola@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22#ifndef __MACH_OMAP1_LCD_DMA_H__
23#define __MACH_OMAP1_LCD_DMA_H__
24
25/* Hardware registers for LCD DMA */
26#define OMAP1510_DMA_LCD_BASE (0xfffedb00)
27#define OMAP1510_DMA_LCD_CTRL (OMAP1510_DMA_LCD_BASE + 0x00)
28#define OMAP1510_DMA_LCD_TOP_F1_L (OMAP1510_DMA_LCD_BASE + 0x02)
29#define OMAP1510_DMA_LCD_TOP_F1_U (OMAP1510_DMA_LCD_BASE + 0x04)
30#define OMAP1510_DMA_LCD_BOT_F1_L (OMAP1510_DMA_LCD_BASE + 0x06)
31#define OMAP1510_DMA_LCD_BOT_F1_U (OMAP1510_DMA_LCD_BASE + 0x08)
32
33#define OMAP1610_DMA_LCD_BASE (0xfffee300)
34#define OMAP1610_DMA_LCD_CSDP (OMAP1610_DMA_LCD_BASE + 0xc0)
35#define OMAP1610_DMA_LCD_CCR (OMAP1610_DMA_LCD_BASE + 0xc2)
36#define OMAP1610_DMA_LCD_CTRL (OMAP1610_DMA_LCD_BASE + 0xc4)
37#define OMAP1610_DMA_LCD_TOP_B1_L (OMAP1610_DMA_LCD_BASE + 0xc8)
38#define OMAP1610_DMA_LCD_TOP_B1_U (OMAP1610_DMA_LCD_BASE + 0xca)
39#define OMAP1610_DMA_LCD_BOT_B1_L (OMAP1610_DMA_LCD_BASE + 0xcc)
40#define OMAP1610_DMA_LCD_BOT_B1_U (OMAP1610_DMA_LCD_BASE + 0xce)
41#define OMAP1610_DMA_LCD_TOP_B2_L (OMAP1610_DMA_LCD_BASE + 0xd0)
42#define OMAP1610_DMA_LCD_TOP_B2_U (OMAP1610_DMA_LCD_BASE + 0xd2)
43#define OMAP1610_DMA_LCD_BOT_B2_L (OMAP1610_DMA_LCD_BASE + 0xd4)
44#define OMAP1610_DMA_LCD_BOT_B2_U (OMAP1610_DMA_LCD_BASE + 0xd6)
45#define OMAP1610_DMA_LCD_SRC_EI_B1 (OMAP1610_DMA_LCD_BASE + 0xd8)
46#define OMAP1610_DMA_LCD_SRC_FI_B1_L (OMAP1610_DMA_LCD_BASE + 0xda)
47#define OMAP1610_DMA_LCD_SRC_EN_B1 (OMAP1610_DMA_LCD_BASE + 0xe0)
48#define OMAP1610_DMA_LCD_SRC_FN_B1 (OMAP1610_DMA_LCD_BASE + 0xe4)
49#define OMAP1610_DMA_LCD_LCH_CTRL (OMAP1610_DMA_LCD_BASE + 0xea)
50#define OMAP1610_DMA_LCD_SRC_FI_B1_U (OMAP1610_DMA_LCD_BASE + 0xf4)
51
52/* LCD DMA block numbers */
53enum {
54 OMAP_LCD_DMA_B1_TOP,
55 OMAP_LCD_DMA_B1_BOTTOM,
56 OMAP_LCD_DMA_B2_TOP,
57 OMAP_LCD_DMA_B2_BOTTOM
58};
59
60/* LCD DMA functions */
61extern int omap_request_lcd_dma(void (*callback)(u16 status, void *data),
62 void *data);
63extern void omap_free_lcd_dma(void);
64extern void omap_setup_lcd_dma(void);
65extern void omap_enable_lcd_dma(void);
66extern void omap_stop_lcd_dma(void);
67extern void omap_set_lcd_dma_ext_controller(int external);
68extern void omap_set_lcd_dma_single_transfer(int single);
69extern void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
70 int data_type);
71extern void omap_set_lcd_dma_b1_rotation(int rotate);
72extern void omap_set_lcd_dma_b1_vxres(unsigned long vxres);
73extern void omap_set_lcd_dma_b1_mirror(int mirror);
74extern void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale);
75
76extern int omap_lcd_dma_running(void);
77
78#endif /* __MACH_OMAP1_LCD_DMA_H__ */
diff --git a/arch/arm/mach-omap1/include/mach/lcdc.h b/arch/arm/mach-omap1/include/mach/lcdc.h
new file mode 100644
index 000000000000..89bd703adaf6
--- /dev/null
+++ b/arch/arm/mach-omap1/include/mach/lcdc.h
@@ -0,0 +1,57 @@
1/*
2 * arch/arm/mach-omap1/include/mach/lcdc.h
3 *
4 * Extracted from drivers/video/omap/lcdc.c
5 * Copyright (C) 2004 Nokia Corporation
6 * Author: Imre Deak <imre.deak@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 */
22#ifndef __MACH_LCDC_H__
23#define __MACH_LCDC_H__
24
25#define OMAP_LCDC_BASE 0xfffec000
26#define OMAP_LCDC_SIZE 256
27#define OMAP_LCDC_IRQ INT_LCD_CTRL
28
29#define OMAP_LCDC_CONTROL (OMAP_LCDC_BASE + 0x00)
30#define OMAP_LCDC_TIMING0 (OMAP_LCDC_BASE + 0x04)
31#define OMAP_LCDC_TIMING1 (OMAP_LCDC_BASE + 0x08)
32#define OMAP_LCDC_TIMING2 (OMAP_LCDC_BASE + 0x0c)
33#define OMAP_LCDC_STATUS (OMAP_LCDC_BASE + 0x10)
34#define OMAP_LCDC_SUBPANEL (OMAP_LCDC_BASE + 0x14)
35#define OMAP_LCDC_LINE_INT (OMAP_LCDC_BASE + 0x18)
36#define OMAP_LCDC_DISPLAY_STATUS (OMAP_LCDC_BASE + 0x1c)
37
38#define OMAP_LCDC_STAT_DONE (1 << 0)
39#define OMAP_LCDC_STAT_VSYNC (1 << 1)
40#define OMAP_LCDC_STAT_SYNC_LOST (1 << 2)
41#define OMAP_LCDC_STAT_ABC (1 << 3)
42#define OMAP_LCDC_STAT_LINE_INT (1 << 4)
43#define OMAP_LCDC_STAT_FUF (1 << 5)
44#define OMAP_LCDC_STAT_LOADED_PALETTE (1 << 6)
45
46#define OMAP_LCDC_CTRL_LCD_EN (1 << 0)
47#define OMAP_LCDC_CTRL_LCD_TFT (1 << 7)
48#define OMAP_LCDC_CTRL_LINE_IRQ_CLR_SEL (1 << 10)
49
50#define OMAP_LCDC_IRQ_VSYNC (1 << 2)
51#define OMAP_LCDC_IRQ_DONE (1 << 3)
52#define OMAP_LCDC_IRQ_LOADED_PALETTE (1 << 4)
53#define OMAP_LCDC_IRQ_LINE_NIRQ (1 << 5)
54#define OMAP_LCDC_IRQ_LINE (1 << 6)
55#define OMAP_LCDC_IRQ_MASK (((1 << 5) - 1) << 2)
56
57#endif /* __MACH_LCDC_H__ */
diff --git a/arch/arm/mach-omap1/lcd_dma.c b/arch/arm/mach-omap1/lcd_dma.c
new file mode 100644
index 000000000000..3be11af687bb
--- /dev/null
+++ b/arch/arm/mach-omap1/lcd_dma.c
@@ -0,0 +1,448 @@
1/*
2 * linux/arch/arm/mach-omap1/lcd_dma.c
3 *
4 * Extracted from arch/arm/plat-omap/dma.c
5 * Copyright (C) 2003 - 2008 Nokia Corporation
6 * Author: Juha Yrjölä <juha.yrjola@nokia.com>
7 * DMA channel linking for 1610 by Samuel Ortiz <samuel.ortiz@nokia.com>
8 * Graphics DMA and LCD DMA graphics tranformations
9 * by Imre Deak <imre.deak@nokia.com>
10 * OMAP2/3 support Copyright (C) 2004-2007 Texas Instruments, Inc.
11 * Merged to support both OMAP1 and OMAP2 by Tony Lindgren <tony@atomide.com>
12 * Some functions based on earlier dma-omap.c Copyright (C) 2001 RidgeRun, Inc.
13 *
14 * Copyright (C) 2009 Texas Instruments
15 * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
16 *
17 * Support functions for the OMAP internal DMA channels.
18 *
19 * This program is free software; you can redistribute it and/or modify
20 * it under the terms of the GNU General Public License version 2 as
21 * published by the Free Software Foundation.
22 *
23 */
24
25#include <linux/module.h>
26#include <linux/spinlock.h>
27#include <linux/interrupt.h>
28#include <linux/io.h>
29
30#include <mach/hardware.h>
31#include <mach/lcdc.h>
32#include <plat/dma.h>
33
34int omap_lcd_dma_running(void)
35{
36 /*
37 * On OMAP1510, internal LCD controller will start the transfer
38 * when it gets enabled, so assume DMA running if LCD enabled.
39 */
40 if (cpu_is_omap1510())
41 if (omap_readw(OMAP_LCDC_CONTROL) & OMAP_LCDC_CTRL_LCD_EN)
42 return 1;
43
44 /* Check if LCD DMA is running */
45 if (cpu_is_omap16xx())
46 if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)
47 return 1;
48
49 return 0;
50}
51
52static struct lcd_dma_info {
53 spinlock_t lock;
54 int reserved;
55 void (*callback)(u16 status, void *data);
56 void *cb_data;
57
58 int active;
59 unsigned long addr, size;
60 int rotate, data_type, xres, yres;
61 int vxres;
62 int mirror;
63 int xscale, yscale;
64 int ext_ctrl;
65 int src_port;
66 int single_transfer;
67} lcd_dma;
68
69void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
70 int data_type)
71{
72 lcd_dma.addr = addr;
73 lcd_dma.data_type = data_type;
74 lcd_dma.xres = fb_xres;
75 lcd_dma.yres = fb_yres;
76}
77EXPORT_SYMBOL(omap_set_lcd_dma_b1);
78
79void omap_set_lcd_dma_src_port(int port)
80{
81 lcd_dma.src_port = port;
82}
83
84void omap_set_lcd_dma_ext_controller(int external)
85{
86 lcd_dma.ext_ctrl = external;
87}
88EXPORT_SYMBOL(omap_set_lcd_dma_ext_controller);
89
90void omap_set_lcd_dma_single_transfer(int single)
91{
92 lcd_dma.single_transfer = single;
93}
94EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer);
95
96void omap_set_lcd_dma_b1_rotation(int rotate)
97{
98 if (cpu_is_omap1510()) {
99 printk(KERN_ERR "DMA rotation is not supported in 1510 mode\n");
100 BUG();
101 return;
102 }
103 lcd_dma.rotate = rotate;
104}
105EXPORT_SYMBOL(omap_set_lcd_dma_b1_rotation);
106
107void omap_set_lcd_dma_b1_mirror(int mirror)
108{
109 if (cpu_is_omap1510()) {
110 printk(KERN_ERR "DMA mirror is not supported in 1510 mode\n");
111 BUG();
112 }
113 lcd_dma.mirror = mirror;
114}
115EXPORT_SYMBOL(omap_set_lcd_dma_b1_mirror);
116
117void omap_set_lcd_dma_b1_vxres(unsigned long vxres)
118{
119 if (cpu_is_omap1510()) {
120 printk(KERN_ERR "DMA virtual resulotion is not supported "
121 "in 1510 mode\n");
122 BUG();
123 }
124 lcd_dma.vxres = vxres;
125}
126EXPORT_SYMBOL(omap_set_lcd_dma_b1_vxres);
127
128void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale)
129{
130 if (cpu_is_omap1510()) {
131 printk(KERN_ERR "DMA scale is not supported in 1510 mode\n");
132 BUG();
133 }
134 lcd_dma.xscale = xscale;
135 lcd_dma.yscale = yscale;
136}
137EXPORT_SYMBOL(omap_set_lcd_dma_b1_scale);
138
139static void set_b1_regs(void)
140{
141 unsigned long top, bottom;
142 int es;
143 u16 w;
144 unsigned long en, fn;
145 long ei, fi;
146 unsigned long vxres;
147 unsigned int xscale, yscale;
148
149 switch (lcd_dma.data_type) {
150 case OMAP_DMA_DATA_TYPE_S8:
151 es = 1;
152 break;
153 case OMAP_DMA_DATA_TYPE_S16:
154 es = 2;
155 break;
156 case OMAP_DMA_DATA_TYPE_S32:
157 es = 4;
158 break;
159 default:
160 BUG();
161 return;
162 }
163
164 vxres = lcd_dma.vxres ? lcd_dma.vxres : lcd_dma.xres;
165 xscale = lcd_dma.xscale ? lcd_dma.xscale : 1;
166 yscale = lcd_dma.yscale ? lcd_dma.yscale : 1;
167 BUG_ON(vxres < lcd_dma.xres);
168
169#define PIXADDR(x, y) (lcd_dma.addr + \
170 ((y) * vxres * yscale + (x) * xscale) * es)
171#define PIXSTEP(sx, sy, dx, dy) (PIXADDR(dx, dy) - PIXADDR(sx, sy) - es + 1)
172
173 switch (lcd_dma.rotate) {
174 case 0:
175 if (!lcd_dma.mirror) {
176 top = PIXADDR(0, 0);
177 bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
178 /* 1510 DMA requires the bottom address to be 2 more
179 * than the actual last memory access location. */
180 if (cpu_is_omap1510() &&
181 lcd_dma.data_type == OMAP_DMA_DATA_TYPE_S32)
182 bottom += 2;
183 ei = PIXSTEP(0, 0, 1, 0);
184 fi = PIXSTEP(lcd_dma.xres - 1, 0, 0, 1);
185 } else {
186 top = PIXADDR(lcd_dma.xres - 1, 0);
187 bottom = PIXADDR(0, lcd_dma.yres - 1);
188 ei = PIXSTEP(1, 0, 0, 0);
189 fi = PIXSTEP(0, 0, lcd_dma.xres - 1, 1);
190 }
191 en = lcd_dma.xres;
192 fn = lcd_dma.yres;
193 break;
194 case 90:
195 if (!lcd_dma.mirror) {
196 top = PIXADDR(0, lcd_dma.yres - 1);
197 bottom = PIXADDR(lcd_dma.xres - 1, 0);
198 ei = PIXSTEP(0, 1, 0, 0);
199 fi = PIXSTEP(0, 0, 1, lcd_dma.yres - 1);
200 } else {
201 top = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
202 bottom = PIXADDR(0, 0);
203 ei = PIXSTEP(0, 1, 0, 0);
204 fi = PIXSTEP(1, 0, 0, lcd_dma.yres - 1);
205 }
206 en = lcd_dma.yres;
207 fn = lcd_dma.xres;
208 break;
209 case 180:
210 if (!lcd_dma.mirror) {
211 top = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
212 bottom = PIXADDR(0, 0);
213 ei = PIXSTEP(1, 0, 0, 0);
214 fi = PIXSTEP(0, 1, lcd_dma.xres - 1, 0);
215 } else {
216 top = PIXADDR(0, lcd_dma.yres - 1);
217 bottom = PIXADDR(lcd_dma.xres - 1, 0);
218 ei = PIXSTEP(0, 0, 1, 0);
219 fi = PIXSTEP(lcd_dma.xres - 1, 1, 0, 0);
220 }
221 en = lcd_dma.xres;
222 fn = lcd_dma.yres;
223 break;
224 case 270:
225 if (!lcd_dma.mirror) {
226 top = PIXADDR(lcd_dma.xres - 1, 0);
227 bottom = PIXADDR(0, lcd_dma.yres - 1);
228 ei = PIXSTEP(0, 0, 0, 1);
229 fi = PIXSTEP(1, lcd_dma.yres - 1, 0, 0);
230 } else {
231 top = PIXADDR(0, 0);
232 bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
233 ei = PIXSTEP(0, 0, 0, 1);
234 fi = PIXSTEP(0, lcd_dma.yres - 1, 1, 0);
235 }
236 en = lcd_dma.yres;
237 fn = lcd_dma.xres;
238 break;
239 default:
240 BUG();
241 return; /* Suppress warning about uninitialized vars */
242 }
243
244 if (cpu_is_omap1510()) {
245 omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U);
246 omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L);
247 omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U);
248 omap_writew(bottom, OMAP1510_DMA_LCD_BOT_F1_L);
249
250 return;
251 }
252
253 /* 1610 regs */
254 omap_writew(top >> 16, OMAP1610_DMA_LCD_TOP_B1_U);
255 omap_writew(top, OMAP1610_DMA_LCD_TOP_B1_L);
256 omap_writew(bottom >> 16, OMAP1610_DMA_LCD_BOT_B1_U);
257 omap_writew(bottom, OMAP1610_DMA_LCD_BOT_B1_L);
258
259 omap_writew(en, OMAP1610_DMA_LCD_SRC_EN_B1);
260 omap_writew(fn, OMAP1610_DMA_LCD_SRC_FN_B1);
261
262 w = omap_readw(OMAP1610_DMA_LCD_CSDP);
263 w &= ~0x03;
264 w |= lcd_dma.data_type;
265 omap_writew(w, OMAP1610_DMA_LCD_CSDP);
266
267 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
268 /* Always set the source port as SDRAM for now*/
269 w &= ~(0x03 << 6);
270 if (lcd_dma.callback != NULL)
271 w |= 1 << 1; /* Block interrupt enable */
272 else
273 w &= ~(1 << 1);
274 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
275
276 if (!(lcd_dma.rotate || lcd_dma.mirror ||
277 lcd_dma.vxres || lcd_dma.xscale || lcd_dma.yscale))
278 return;
279
280 w = omap_readw(OMAP1610_DMA_LCD_CCR);
281 /* Set the double-indexed addressing mode */
282 w |= (0x03 << 12);
283 omap_writew(w, OMAP1610_DMA_LCD_CCR);
284
285 omap_writew(ei, OMAP1610_DMA_LCD_SRC_EI_B1);
286 omap_writew(fi >> 16, OMAP1610_DMA_LCD_SRC_FI_B1_U);
287 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L);
288}
289
290static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id)
291{
292 u16 w;
293
294 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
295 if (unlikely(!(w & (1 << 3)))) {
296 printk(KERN_WARNING "Spurious LCD DMA IRQ\n");
297 return IRQ_NONE;
298 }
299 /* Ack the IRQ */
300 w |= (1 << 3);
301 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
302 lcd_dma.active = 0;
303 if (lcd_dma.callback != NULL)
304 lcd_dma.callback(w, lcd_dma.cb_data);
305
306 return IRQ_HANDLED;
307}
308
309int omap_request_lcd_dma(void (*callback)(u16 status, void *data),
310 void *data)
311{
312 spin_lock_irq(&lcd_dma.lock);
313 if (lcd_dma.reserved) {
314 spin_unlock_irq(&lcd_dma.lock);
315 printk(KERN_ERR "LCD DMA channel already reserved\n");
316 BUG();
317 return -EBUSY;
318 }
319 lcd_dma.reserved = 1;
320 spin_unlock_irq(&lcd_dma.lock);
321 lcd_dma.callback = callback;
322 lcd_dma.cb_data = data;
323 lcd_dma.active = 0;
324 lcd_dma.single_transfer = 0;
325 lcd_dma.rotate = 0;
326 lcd_dma.vxres = 0;
327 lcd_dma.mirror = 0;
328 lcd_dma.xscale = 0;
329 lcd_dma.yscale = 0;
330 lcd_dma.ext_ctrl = 0;
331 lcd_dma.src_port = 0;
332
333 return 0;
334}
335EXPORT_SYMBOL(omap_request_lcd_dma);
336
337void omap_free_lcd_dma(void)
338{
339 spin_lock(&lcd_dma.lock);
340 if (!lcd_dma.reserved) {
341 spin_unlock(&lcd_dma.lock);
342 printk(KERN_ERR "LCD DMA is not reserved\n");
343 BUG();
344 return;
345 }
346 if (!cpu_is_omap1510())
347 omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~1,
348 OMAP1610_DMA_LCD_CCR);
349 lcd_dma.reserved = 0;
350 spin_unlock(&lcd_dma.lock);
351}
352EXPORT_SYMBOL(omap_free_lcd_dma);
353
354void omap_enable_lcd_dma(void)
355{
356 u16 w;
357
358 /*
359 * Set the Enable bit only if an external controller is
360 * connected. Otherwise the OMAP internal controller will
361 * start the transfer when it gets enabled.
362 */
363 if (cpu_is_omap1510() || !lcd_dma.ext_ctrl)
364 return;
365
366 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
367 w |= 1 << 8;
368 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
369
370 lcd_dma.active = 1;
371
372 w = omap_readw(OMAP1610_DMA_LCD_CCR);
373 w |= 1 << 7;
374 omap_writew(w, OMAP1610_DMA_LCD_CCR);
375}
376EXPORT_SYMBOL(omap_enable_lcd_dma);
377
378void omap_setup_lcd_dma(void)
379{
380 BUG_ON(lcd_dma.active);
381 if (!cpu_is_omap1510()) {
382 /* Set some reasonable defaults */
383 omap_writew(0x5440, OMAP1610_DMA_LCD_CCR);
384 omap_writew(0x9102, OMAP1610_DMA_LCD_CSDP);
385 omap_writew(0x0004, OMAP1610_DMA_LCD_LCH_CTRL);
386 }
387 set_b1_regs();
388 if (!cpu_is_omap1510()) {
389 u16 w;
390
391 w = omap_readw(OMAP1610_DMA_LCD_CCR);
392 /*
393 * If DMA was already active set the end_prog bit to have
394 * the programmed register set loaded into the active
395 * register set.
396 */
397 w |= 1 << 11; /* End_prog */
398 if (!lcd_dma.single_transfer)
399 w |= (3 << 8); /* Auto_init, repeat */
400 omap_writew(w, OMAP1610_DMA_LCD_CCR);
401 }
402}
403EXPORT_SYMBOL(omap_setup_lcd_dma);
404
405void omap_stop_lcd_dma(void)
406{
407 u16 w;
408
409 lcd_dma.active = 0;
410 if (cpu_is_omap1510() || !lcd_dma.ext_ctrl)
411 return;
412
413 w = omap_readw(OMAP1610_DMA_LCD_CCR);
414 w &= ~(1 << 7);
415 omap_writew(w, OMAP1610_DMA_LCD_CCR);
416
417 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
418 w &= ~(1 << 8);
419 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
420}
421EXPORT_SYMBOL(omap_stop_lcd_dma);
422
423static int __init omap_init_lcd_dma(void)
424{
425 int r;
426
427 if (cpu_is_omap16xx()) {
428 u16 w;
429
430 /* this would prevent OMAP sleep */
431 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
432 w &= ~(1 << 8);
433 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
434 }
435
436 spin_lock_init(&lcd_dma.lock);
437
438 r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0,
439 "LCD DMA", NULL);
440 if (r != 0)
441 printk(KERN_ERR "unable to request IRQ for LCD DMA "
442 "(error %d)\n", r);
443
444 return r;
445}
446
447arch_initcall(omap_init_lcd_dma);
448
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c
index 785371e982fc..07212cc621ae 100644
--- a/arch/arm/mach-omap1/mux.c
+++ b/arch/arm/mach-omap1/mux.c
@@ -50,12 +50,18 @@ MUX_CFG_7XX("E3_7XX_KBC4", 13, 25, 0, 24, 1, 0)
50 50
51MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0) 51MUX_CFG_7XX("AA17_7XX_USB_DM", 2, 21, 0, 20, 0, 0)
52MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0) 52MUX_CFG_7XX("W16_7XX_USB_PU_EN", 2, 25, 0, 24, 0, 0)
53MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 0, 28, 0, 0) 53MUX_CFG_7XX("W17_7XX_USB_VBUSI", 2, 29, 6, 28, 1, 0)
54MUX_CFG_7XX("W18_7XX_USB_DMCK_OUT",3, 3, 1, 2, 0, 0)
55MUX_CFG_7XX("W19_7XX_USB_DCRST", 3, 7, 1, 6, 0, 0)
54 56
55/* MMC Pins */ 57/* MMC Pins */
56MUX_CFG_7XX("MMC_7XX_CMD", 2, 9, 0, 8, 1, 0) 58MUX_CFG_7XX("MMC_7XX_CMD", 2, 9, 0, 8, 1, 0)
57MUX_CFG_7XX("MMC_7XX_CLK", 2, 13, 0, 12, 1, 0) 59MUX_CFG_7XX("MMC_7XX_CLK", 2, 13, 0, 12, 1, 0)
58MUX_CFG_7XX("MMC_7XX_DAT0", 2, 17, 0, 16, 1, 0) 60MUX_CFG_7XX("MMC_7XX_DAT0", 2, 17, 0, 16, 1, 0)
61
62/* I2C interface */
63MUX_CFG_7XX("I2C_7XX_SCL", 5, 1, 0, 0, 1, 0)
64MUX_CFG_7XX("I2C_7XX_SDA", 5, 5, 0, 0, 1, 0)
59}; 65};
60#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins) 66#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins)
61#else 67#else
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 0cd25ceadb43..76c11ee113e9 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -24,6 +24,18 @@ config ARCH_OMAP3430
24 depends on ARCH_OMAP3 && ARCH_OMAP34XX 24 depends on ARCH_OMAP3 && ARCH_OMAP34XX
25 select ARCH_OMAP_OTG 25 select ARCH_OMAP_OTG
26 26
27config OMAP_PACKAGE_CBC
28 bool
29
30config OMAP_PACKAGE_CBB
31 bool
32
33config OMAP_PACKAGE_CUS
34 bool
35
36config OMAP_PACKAGE_CBP
37 bool
38
27comment "OMAP Board Type" 39comment "OMAP Board Type"
28 depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP4 40 depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP4
29 41
@@ -52,14 +64,17 @@ config MACH_OMAP_2430SDP
52config MACH_OMAP3_BEAGLE 64config MACH_OMAP3_BEAGLE
53 bool "OMAP3 BEAGLE board" 65 bool "OMAP3 BEAGLE board"
54 depends on ARCH_OMAP3 && ARCH_OMAP34XX 66 depends on ARCH_OMAP3 && ARCH_OMAP34XX
67 select OMAP_PACKAGE_CBB
55 68
56config MACH_OMAP_LDP 69config MACH_OMAP_LDP
57 bool "OMAP3 LDP board" 70 bool "OMAP3 LDP board"
58 depends on ARCH_OMAP3 && ARCH_OMAP34XX 71 depends on ARCH_OMAP3 && ARCH_OMAP34XX
72 select OMAP_PACKAGE_CBB
59 73
60config MACH_OVERO 74config MACH_OVERO
61 bool "Gumstix Overo board" 75 bool "Gumstix Overo board"
62 depends on ARCH_OMAP3 && ARCH_OMAP34XX 76 depends on ARCH_OMAP3 && ARCH_OMAP34XX
77 select OMAP_PACKAGE_CBB
63 78
64config MACH_OMAP3EVM 79config MACH_OMAP3EVM
65 bool "OMAP 3530 EVM board" 80 bool "OMAP 3530 EVM board"
@@ -68,14 +83,22 @@ config MACH_OMAP3EVM
68config MACH_OMAP3517EVM 83config MACH_OMAP3517EVM
69 bool "OMAP3517/ AM3517 EVM board" 84 bool "OMAP3517/ AM3517 EVM board"
70 depends on ARCH_OMAP3 && ARCH_OMAP34XX 85 depends on ARCH_OMAP3 && ARCH_OMAP34XX
86 select OMAP_PACKAGE_CBB
71 87
72config MACH_OMAP3_PANDORA 88config MACH_OMAP3_PANDORA
73 bool "OMAP3 Pandora" 89 bool "OMAP3 Pandora"
74 depends on ARCH_OMAP3 && ARCH_OMAP34XX 90 depends on ARCH_OMAP3 && ARCH_OMAP34XX
91 select OMAP_PACKAGE_CBB
92
93config MACH_OMAP3_TOUCHBOOK
94 bool "OMAP3 Touch Book"
95 depends on ARCH_OMAP3 && ARCH_OMAP34XX
96 select BACKLIGHT_CLASS_DEVICE
75 97
76config MACH_OMAP_3430SDP 98config MACH_OMAP_3430SDP
77 bool "OMAP 3430 SDP board" 99 bool "OMAP 3430 SDP board"
78 depends on ARCH_OMAP3 && ARCH_OMAP34XX 100 depends on ARCH_OMAP3 && ARCH_OMAP34XX
101 select OMAP_PACKAGE_CBB
79 102
80config MACH_NOKIA_N800 103config MACH_NOKIA_N800
81 bool 104 bool
@@ -96,26 +119,33 @@ config MACH_NOKIA_N8X0
96config MACH_NOKIA_RX51 119config MACH_NOKIA_RX51
97 bool "Nokia RX-51 board" 120 bool "Nokia RX-51 board"
98 depends on ARCH_OMAP3 && ARCH_OMAP34XX 121 depends on ARCH_OMAP3 && ARCH_OMAP34XX
122 select OMAP_PACKAGE_CBB
99 123
100config MACH_OMAP_ZOOM2 124config MACH_OMAP_ZOOM2
101 bool "OMAP3 Zoom2 board" 125 bool "OMAP3 Zoom2 board"
102 depends on ARCH_OMAP3 && ARCH_OMAP34XX 126 depends on ARCH_OMAP3 && ARCH_OMAP34XX
127 select OMAP_PACKAGE_CBB
103 128
104config MACH_OMAP_ZOOM3 129config MACH_OMAP_ZOOM3
105 bool "OMAP3630 Zoom3 board" 130 bool "OMAP3630 Zoom3 board"
106 depends on ARCH_OMAP3 && ARCH_OMAP34XX 131 depends on ARCH_OMAP3 && ARCH_OMAP34XX
132 select OMAP_PACKAGE_CBP
107 133
108config MACH_CM_T35 134config MACH_CM_T35
109 bool "CompuLab CM-T35 module" 135 bool "CompuLab CM-T35 module"
110 depends on ARCH_OMAP3 && ARCH_OMAP34XX 136 depends on ARCH_OMAP3 && ARCH_OMAP34XX
137 select OMAP_PACKAGE_CUS
138 select OMAP_MUX
111 139
112config MACH_IGEP0020 140config MACH_IGEP0020
113 bool "IGEP0020" 141 bool "IGEP0020"
114 depends on ARCH_OMAP3 && ARCH_OMAP34XX 142 depends on ARCH_OMAP3 && ARCH_OMAP34XX
143 select OMAP_PACKAGE_CBB
115 144
116config MACH_OMAP_3630SDP 145config MACH_OMAP_3630SDP
117 bool "OMAP3630 SDP board" 146 bool "OMAP3630 SDP board"
118 depends on ARCH_OMAP3 && ARCH_OMAP34XX 147 depends on ARCH_OMAP3 && ARCH_OMAP34XX
148 select OMAP_PACKAGE_CBP
119 149
120config MACH_OMAP_4430SDP 150config MACH_OMAP_4430SDP
121 bool "OMAP 4430 SDP board" 151 bool "OMAP 4430 SDP board"
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 10c0539c4b01..b32678b848bc 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -26,6 +26,9 @@ obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o
26obj-$(CONFIG_ARCH_OMAP2430) += sram243x.o 26obj-$(CONFIG_ARCH_OMAP2430) += sram243x.o
27obj-$(CONFIG_ARCH_OMAP3) += sram34xx.o 27obj-$(CONFIG_ARCH_OMAP3) += sram34xx.o
28 28
29# Pin multiplexing
30obj-$(CONFIG_ARCH_OMAP3) += mux34xx.o
31
29# SMS/SDRC 32# SMS/SDRC
30obj-$(CONFIG_ARCH_OMAP2) += sdrc2xxx.o 33obj-$(CONFIG_ARCH_OMAP2) += sdrc2xxx.o
31# obj-$(CONFIG_ARCH_OMAP3) += sdrc3xxx.o 34# obj-$(CONFIG_ARCH_OMAP3) += sdrc3xxx.o
@@ -61,6 +64,9 @@ iommu-$(CONFIG_ARCH_OMAP3) += omap3-iommu.o
61 64
62obj-$(CONFIG_OMAP_IOMMU) += $(iommu-y) 65obj-$(CONFIG_OMAP_IOMMU) += $(iommu-y)
63 66
67i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
68obj-y += $(i2c-omap-m) $(i2c-omap-y)
69
64# Specific board support 70# Specific board support
65obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o 71obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
66obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o 72obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o
@@ -99,7 +105,8 @@ obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o \
99 mmc-twl4030.o 105 mmc-twl4030.o
100obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o \ 106obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o \
101 mmc-twl4030.o 107 mmc-twl4030.o
102 108obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o \
109 mmc-twl4030.o
103obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o 110obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o
104 111
105obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o 112obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index 5bda9fdbee9e..4cfb7b68dfad 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -31,7 +31,6 @@
31#include <asm/mach/map.h> 31#include <asm/mach/map.h>
32 32
33#include <plat/mcspi.h> 33#include <plat/mcspi.h>
34#include <plat/mux.h>
35#include <plat/board.h> 34#include <plat/board.h>
36#include <plat/usb.h> 35#include <plat/usb.h>
37#include <plat/common.h> 36#include <plat/common.h>
@@ -42,6 +41,7 @@
42#include <plat/control.h> 41#include <plat/control.h>
43#include <plat/gpmc-smc91x.h> 42#include <plat/gpmc-smc91x.h>
44 43
44#include "mux.h"
45#include "sdram-qimonda-hyb18m512160af-6.h" 45#include "sdram-qimonda-hyb18m512160af-6.h"
46#include "mmc-twl4030.h" 46#include "mmc-twl4030.h"
47 47
@@ -625,7 +625,9 @@ static inline void board_smc91x_init(void)
625 625
626static void enable_board_wakeup_source(void) 626static void enable_board_wakeup_source(void)
627{ 627{
628 omap_cfg_reg(AF26_34XX_SYS_NIRQ); /* T2 interrupt line (keypad) */ 628 /* T2 interrupt line (keypad) */
629 omap_mux_init_signal("sys_nirq",
630 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
629} 631}
630 632
631static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 633static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
@@ -640,8 +642,17 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
640 .reset_gpio_port[2] = -EINVAL 642 .reset_gpio_port[2] = -EINVAL
641}; 643};
642 644
645#ifdef CONFIG_OMAP_MUX
646static struct omap_board_mux board_mux[] __initdata = {
647 { .reg_offset = OMAP_MUX_TERMINATOR },
648};
649#else
650#define board_mux NULL
651#endif
652
643static void __init omap_3430sdp_init(void) 653static void __init omap_3430sdp_init(void)
644{ 654{
655 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
645 omap3430_i2c_init(); 656 omap3430_i2c_init();
646 platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices)); 657 platform_add_devices(sdp3430_devices, ARRAY_SIZE(sdp3430_devices));
647 if (omap_rev() > OMAP3430_REV_ES1_0) 658 if (omap_rev() > OMAP3430_REV_ES1_0)
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
index 348b70b98336..739059632811 100755
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -23,6 +23,7 @@
23 23
24#include <mach/board-zoom.h> 24#include <mach/board-zoom.h>
25 25
26#include "mux.h"
26#include "sdram-hynix-h8mbx00u0mer-0em.h" 27#include "sdram-hynix-h8mbx00u0mer-0em.h"
27 28
28#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) 29#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
@@ -48,7 +49,9 @@ static inline void board_smc91x_init(void)
48 49
49static void enable_board_wakeup_source(void) 50static void enable_board_wakeup_source(void)
50{ 51{
51 omap_cfg_reg(AF26_34XX_SYS_NIRQ); /* T2 interrupt line (keypad) */ 52 /* T2 interrupt line (keypad) */
53 omap_mux_init_signal("sys_nirq",
54 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
52} 55}
53 56
54static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 57static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
@@ -82,8 +85,17 @@ static void __init omap_sdp_init_irq(void)
82 omap_gpio_init(); 85 omap_gpio_init();
83} 86}
84 87
88#ifdef CONFIG_OMAP_MUX
89static struct omap_board_mux board_mux[] __initdata = {
90 { .reg_offset = OMAP_MUX_TERMINATOR },
91};
92#else
93#define board_mux NULL
94#endif
95
85static void __init omap_sdp_init(void) 96static void __init omap_sdp_init(void)
86{ 97{
98 omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
87 zoom_peripherals_init(); 99 zoom_peripherals_init();
88 board_smc91x_init(); 100 board_smc91x_init();
89 enable_board_wakeup_source(); 101 enable_board_wakeup_source();
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 415a13d767cc..b4e6eca0e8a9 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -30,6 +30,8 @@
30#include <plat/common.h> 30#include <plat/common.h>
31#include <plat/usb.h> 31#include <plat/usb.h>
32 32
33#include "mux.h"
34
33/* 35/*
34 * Board initialization 36 * Board initialization
35 */ 37 */
@@ -60,8 +62,17 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
60 .reset_gpio_port[2] = -EINVAL 62 .reset_gpio_port[2] = -EINVAL
61}; 63};
62 64
65#ifdef CONFIG_OMAP_MUX
66static struct omap_board_mux board_mux[] __initdata = {
67 { .reg_offset = OMAP_MUX_TERMINATOR },
68};
69#else
70#define board_mux NULL
71#endif
72
63static void __init am3517_evm_init(void) 73static void __init am3517_evm_init(void)
64{ 74{
75 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
65 platform_add_devices(am3517_evm_devices, 76 platform_add_devices(am3517_evm_devices,
66 ARRAY_SIZE(am3517_evm_devices)); 77 ARRAY_SIZE(am3517_evm_devices));
67 78
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index 8a2ce77a02ec..fbbd68d69cc8 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -26,6 +26,7 @@
26#include <linux/leds.h> 26#include <linux/leds.h>
27#include <linux/err.h> 27#include <linux/err.h>
28#include <linux/clk.h> 28#include <linux/clk.h>
29#include <linux/smc91x.h>
29 30
30#include <mach/hardware.h> 31#include <mach/hardware.h>
31#include <asm/mach-types.h> 32#include <asm/mach-types.h>
@@ -120,6 +121,12 @@ static void __init apollon_flash_init(void)
120 apollon_flash_resource[0].end = base + SZ_128K - 1; 121 apollon_flash_resource[0].end = base + SZ_128K - 1;
121} 122}
122 123
124static struct smc91x_platdata appolon_smc91x_info = {
125 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
126 .leda = RPC_LED_100_10,
127 .ledb = RPC_LED_TX_RX,
128};
129
123static struct resource apollon_smc91x_resources[] = { 130static struct resource apollon_smc91x_resources[] = {
124 [0] = { 131 [0] = {
125 .flags = IORESOURCE_MEM, 132 .flags = IORESOURCE_MEM,
@@ -134,6 +141,9 @@ static struct resource apollon_smc91x_resources[] = {
134static struct platform_device apollon_smc91x_device = { 141static struct platform_device apollon_smc91x_device = {
135 .name = "smc91x", 142 .name = "smc91x",
136 .id = -1, 143 .id = -1,
144 .dev = {
145 .platform_data = &appolon_smc91x_info,
146 },
137 .num_resources = ARRAY_SIZE(apollon_smc91x_resources), 147 .num_resources = ARRAY_SIZE(apollon_smc91x_resources),
138 .resource = apollon_smc91x_resources, 148 .resource = apollon_smc91x_resources,
139}; 149};
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index 22c45290db63..1591aae64500 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -38,13 +38,13 @@
38 38
39#include <plat/board.h> 39#include <plat/board.h>
40#include <plat/common.h> 40#include <plat/common.h>
41#include <plat/mux.h>
42#include <plat/nand.h> 41#include <plat/nand.h>
43#include <plat/gpmc.h> 42#include <plat/gpmc.h>
44#include <plat/usb.h> 43#include <plat/usb.h>
45 44
46#include <mach/hardware.h> 45#include <mach/hardware.h>
47 46
47#include "mux.h"
48#include "sdram-micron-mt46h32m32lf-6.h" 48#include "sdram-micron-mt46h32m32lf-6.h"
49#include "mmc-twl4030.h" 49#include "mmc-twl4030.h"
50 50
@@ -482,8 +482,102 @@ static void __init cm_t35_map_io(void)
482 omap2_map_common_io(); 482 omap2_map_common_io();
483} 483}
484 484
485static struct omap_board_mux board_mux[] __initdata = {
486 /* nCS and IRQ for CM-T35 ethernet */
487 OMAP3_MUX(GPMC_NCS5, OMAP_MUX_MODE0),
488 OMAP3_MUX(UART3_CTS_RCTX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
489
490 /* nCS and IRQ for SB-T35 ethernet */
491 OMAP3_MUX(GPMC_NCS4, OMAP_MUX_MODE0),
492 OMAP3_MUX(GPMC_WAIT3, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
493
494 /* PENDOWN GPIO */
495 OMAP3_MUX(GPMC_NCS6, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
496
497 /* mUSB */
498 OMAP3_MUX(HSUSB0_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
499 OMAP3_MUX(HSUSB0_STP, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
500 OMAP3_MUX(HSUSB0_DIR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
501 OMAP3_MUX(HSUSB0_NXT, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
502 OMAP3_MUX(HSUSB0_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
503 OMAP3_MUX(HSUSB0_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
504 OMAP3_MUX(HSUSB0_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
505 OMAP3_MUX(HSUSB0_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
506 OMAP3_MUX(HSUSB0_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
507 OMAP3_MUX(HSUSB0_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
508 OMAP3_MUX(HSUSB0_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
509 OMAP3_MUX(HSUSB0_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
510
511 /* MMC 2 */
512 OMAP3_MUX(SDMMC2_DAT4, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
513 OMAP3_MUX(SDMMC2_DAT5, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
514 OMAP3_MUX(SDMMC2_DAT6, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
515 OMAP3_MUX(SDMMC2_DAT7, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
516
517 /* McSPI 1 */
518 OMAP3_MUX(MCSPI1_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
519 OMAP3_MUX(MCSPI1_SIMO, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
520 OMAP3_MUX(MCSPI1_SOMI, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
521 OMAP3_MUX(MCSPI1_CS0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
522
523 /* McSPI 4 */
524 OMAP3_MUX(MCBSP1_CLKR, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
525 OMAP3_MUX(MCBSP1_DX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
526 OMAP3_MUX(MCBSP1_DR, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
527 OMAP3_MUX(MCBSP1_FSX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT_PULLUP),
528
529 /* McBSP 2 */
530 OMAP3_MUX(MCBSP2_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
531 OMAP3_MUX(MCBSP2_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
532 OMAP3_MUX(MCBSP2_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
533 OMAP3_MUX(MCBSP2_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
534
535 /* serial ports */
536 OMAP3_MUX(MCBSP3_CLKX, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
537 OMAP3_MUX(MCBSP3_FSX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
538 OMAP3_MUX(UART1_TX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
539 OMAP3_MUX(UART1_RX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
540
541 /* DSS */
542 OMAP3_MUX(DSS_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
543 OMAP3_MUX(DSS_HSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
544 OMAP3_MUX(DSS_VSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
545 OMAP3_MUX(DSS_ACBIAS, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
546 OMAP3_MUX(DSS_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
547 OMAP3_MUX(DSS_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
548 OMAP3_MUX(DSS_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
549 OMAP3_MUX(DSS_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
550 OMAP3_MUX(DSS_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
551 OMAP3_MUX(DSS_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
552 OMAP3_MUX(DSS_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
553 OMAP3_MUX(DSS_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
554 OMAP3_MUX(DSS_DATA8, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
555 OMAP3_MUX(DSS_DATA9, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
556 OMAP3_MUX(DSS_DATA10, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
557 OMAP3_MUX(DSS_DATA11, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
558 OMAP3_MUX(DSS_DATA12, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
559 OMAP3_MUX(DSS_DATA13, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
560 OMAP3_MUX(DSS_DATA14, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
561 OMAP3_MUX(DSS_DATA15, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
562 OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
563 OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
564 OMAP3_MUX(DSS_DATA18, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
565 OMAP3_MUX(DSS_DATA19, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
566 OMAP3_MUX(DSS_DATA20, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
567 OMAP3_MUX(DSS_DATA21, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
568 OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
569 OMAP3_MUX(DSS_DATA23, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
570
571 /* TPS IRQ */
572 OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_WAKEUP_EN | \
573 OMAP_PIN_INPUT_PULLUP),
574
575 { .reg_offset = OMAP_MUX_TERMINATOR },
576};
577
485static void __init cm_t35_init(void) 578static void __init cm_t35_init(void)
486{ 579{
580 omap3_mux_init(board_mux, OMAP_PACKAGE_CUS);
487 omap_serial_init(); 581 omap_serial_init();
488 cm_t35_init_i2c(); 582 cm_t35_init_i2c();
489 cm_t35_init_nand(); 583 cm_t35_init_nand();
@@ -492,8 +586,6 @@ static void __init cm_t35_init(void)
492 cm_t35_init_led(); 586 cm_t35_init_led();
493 587
494 usb_musb_init(); 588 usb_musb_init();
495
496 omap_cfg_reg(AF26_34XX_SYS_NIRQ);
497} 589}
498 590
499MACHINE_START(CM_T35, "Compulab CM-T35") 591MACHINE_START(CM_T35, "Compulab CM-T35")
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index fa62e80c13b7..44239e3ec02e 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -27,9 +27,9 @@
27#include <plat/board.h> 27#include <plat/board.h>
28#include <plat/common.h> 28#include <plat/common.h>
29#include <plat/gpmc.h> 29#include <plat/gpmc.h>
30#include <plat/mux.h>
31#include <plat/usb.h> 30#include <plat/usb.h>
32 31
32#include "mux.h"
33#include "mmc-twl4030.h" 33#include "mmc-twl4030.h"
34 34
35#define IGEP2_SMSC911X_CS 5 35#define IGEP2_SMSC911X_CS 5
@@ -203,8 +203,17 @@ static int __init igep2_i2c_init(void)
203 return 0; 203 return 0;
204} 204}
205 205
206#ifdef CONFIG_OMAP_MUX
207static struct omap_board_mux board_mux[] __initdata = {
208 { .reg_offset = OMAP_MUX_TERMINATOR },
209};
210#else
211#define board_mux NULL
212#endif
213
206static void __init igep2_init(void) 214static void __init igep2_init(void)
207{ 215{
216 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
208 igep2_i2c_init(); 217 igep2_i2c_init();
209 omap_serial_init(); 218 omap_serial_init();
210 usb_musb_init(); 219 usb_musb_init();
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index c062238fe881..37431738f1c2 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -43,6 +43,7 @@
43#include <plat/control.h> 43#include <plat/control.h>
44#include <plat/usb.h> 44#include <plat/usb.h>
45 45
46#include "mux.h"
46#include "mmc-twl4030.h" 47#include "mmc-twl4030.h"
47 48
48#define LDP_SMSC911X_CS 1 49#define LDP_SMSC911X_CS 1
@@ -374,8 +375,17 @@ static struct platform_device *ldp_devices[] __initdata = {
374 &ldp_gpio_keys_device, 375 &ldp_gpio_keys_device,
375}; 376};
376 377
378#ifdef CONFIG_OMAP_MUX
379static struct omap_board_mux board_mux[] __initdata = {
380 { .reg_offset = OMAP_MUX_TERMINATOR },
381};
382#else
383#define board_mux NULL
384#endif
385
377static void __init omap_ldp_init(void) 386static void __init omap_ldp_init(void)
378{ 387{
388 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
379 omap_i2c_init(); 389 omap_i2c_init();
380 platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices)); 390 platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices));
381 ts_gpio = 54; 391 ts_gpio = 54;
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 41480bd0e58a..6ada8029f9a8 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -41,10 +41,10 @@
41#include <plat/common.h> 41#include <plat/common.h>
42#include <plat/gpmc.h> 42#include <plat/gpmc.h>
43#include <plat/nand.h> 43#include <plat/nand.h>
44#include <plat/mux.h>
45#include <plat/usb.h> 44#include <plat/usb.h>
46#include <plat/timer-gp.h> 45#include <plat/timer-gp.h>
47 46
47#include "mux.h"
48#include "mmc-twl4030.h" 48#include "mmc-twl4030.h"
49 49
50#define GPMC_CS0_BASE 0x60 50#define GPMC_CS0_BASE 0x60
@@ -140,10 +140,10 @@ static int beagle_twl_gpio_setup(struct device *dev,
140 unsigned gpio, unsigned ngpio) 140 unsigned gpio, unsigned ngpio)
141{ 141{
142 if (system_rev >= 0x20 && system_rev <= 0x34301000) { 142 if (system_rev >= 0x20 && system_rev <= 0x34301000) {
143 omap_cfg_reg(AG9_34XX_GPIO23); 143 omap_mux_init_gpio(23, OMAP_PIN_INPUT);
144 mmc[0].gpio_wp = 23; 144 mmc[0].gpio_wp = 23;
145 } else { 145 } else {
146 omap_cfg_reg(AH8_34XX_GPIO29); 146 omap_mux_init_gpio(29, OMAP_PIN_INPUT);
147 } 147 }
148 /* gpio + 0 is "mmc0_cd" (input/IRQ) */ 148 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
149 mmc[0].gpio_cd = gpio + 0; 149 mmc[0].gpio_cd = gpio + 0;
@@ -422,14 +422,23 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
422 .reset_gpio_port[2] = -EINVAL 422 .reset_gpio_port[2] = -EINVAL
423}; 423};
424 424
425#ifdef CONFIG_OMAP_MUX
426static struct omap_board_mux board_mux[] __initdata = {
427 { .reg_offset = OMAP_MUX_TERMINATOR },
428};
429#else
430#define board_mux NULL
431#endif
432
425static void __init omap3_beagle_init(void) 433static void __init omap3_beagle_init(void)
426{ 434{
435 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
427 omap3_beagle_i2c_init(); 436 omap3_beagle_i2c_init();
428 platform_add_devices(omap3_beagle_devices, 437 platform_add_devices(omap3_beagle_devices,
429 ARRAY_SIZE(omap3_beagle_devices)); 438 ARRAY_SIZE(omap3_beagle_devices));
430 omap_serial_init(); 439 omap_serial_init();
431 440
432 omap_cfg_reg(J25_34XX_GPIO170); 441 omap_mux_init_gpio(170, OMAP_PIN_INPUT);
433 gpio_request(170, "DVI_nPD"); 442 gpio_request(170, "DVI_nPD");
434 /* REVISIT leave DVI powered down until it's needed ... */ 443 /* REVISIT leave DVI powered down until it's needed ... */
435 gpio_direction_output(170, true); 444 gpio_direction_output(170, true);
@@ -439,8 +448,8 @@ static void __init omap3_beagle_init(void)
439 omap3beagle_flash_init(); 448 omap3beagle_flash_init();
440 449
441 /* Ensure SDRC pins are mux'd for self-refresh */ 450 /* Ensure SDRC pins are mux'd for self-refresh */
442 omap_cfg_reg(H16_34XX_SDRC_CKE0); 451 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
443 omap_cfg_reg(H17_34XX_SDRC_CKE1); 452 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
444} 453}
445 454
446static void __init omap3_beagle_map_io(void) 455static void __init omap3_beagle_map_io(void)
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 5efc2e9068db..18913e96e34d 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -38,11 +38,11 @@
38#include <asm/mach/map.h> 38#include <asm/mach/map.h>
39 39
40#include <plat/board.h> 40#include <plat/board.h>
41#include <plat/mux.h>
42#include <plat/usb.h> 41#include <plat/usb.h>
43#include <plat/common.h> 42#include <plat/common.h>
44#include <plat/mcspi.h> 43#include <plat/mcspi.h>
45 44
45#include "mux.h"
46#include "sdram-micron-mt46h32m32lf-6.h" 46#include "sdram-micron-mt46h32m32lf-6.h"
47#include "mmc-twl4030.h" 47#include "mmc-twl4030.h"
48 48
@@ -223,7 +223,7 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
223 unsigned gpio, unsigned ngpio) 223 unsigned gpio, unsigned ngpio)
224{ 224{
225 /* gpio + 0 is "mmc0_cd" (input/IRQ) */ 225 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
226 omap_cfg_reg(L8_34XX_GPIO63); 226 omap_mux_init_gpio(63, OMAP_PIN_INPUT);
227 mmc[0].gpio_cd = gpio + 0; 227 mmc[0].gpio_cd = gpio + 0;
228 twl4030_mmc_init(mmc); 228 twl4030_mmc_init(mmc);
229 229
@@ -422,9 +422,18 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
422 .reset_gpio_port[2] = -EINVAL 422 .reset_gpio_port[2] = -EINVAL
423}; 423};
424 424
425#ifdef CONFIG_OMAP_MUX
426static struct omap_board_mux board_mux[] __initdata = {
427 { .reg_offset = OMAP_MUX_TERMINATOR },
428};
429#else
430#define board_mux NULL
431#endif
432
425static void __init omap3_evm_init(void) 433static void __init omap3_evm_init(void)
426{ 434{
427 omap3_evm_get_revision(); 435 omap3_evm_get_revision();
436 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
428 437
429 omap3_evm_i2c_init(); 438 omap3_evm_i2c_init();
430 439
@@ -440,24 +449,24 @@ static void __init omap3_evm_init(void)
440#endif 449#endif
441 if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) { 450 if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
442 /* enable EHCI VBUS using GPIO22 */ 451 /* enable EHCI VBUS using GPIO22 */
443 omap_cfg_reg(AF9_34XX_GPIO22); 452 omap_mux_init_gpio(22, OMAP_PIN_INPUT_PULLUP);
444 gpio_request(OMAP3_EVM_EHCI_VBUS, "enable EHCI VBUS"); 453 gpio_request(OMAP3_EVM_EHCI_VBUS, "enable EHCI VBUS");
445 gpio_direction_output(OMAP3_EVM_EHCI_VBUS, 0); 454 gpio_direction_output(OMAP3_EVM_EHCI_VBUS, 0);
446 gpio_set_value(OMAP3_EVM_EHCI_VBUS, 1); 455 gpio_set_value(OMAP3_EVM_EHCI_VBUS, 1);
447 456
448 /* Select EHCI port on main board */ 457 /* Select EHCI port on main board */
449 omap_cfg_reg(U3_34XX_GPIO61); 458 omap_mux_init_gpio(61, OMAP_PIN_INPUT_PULLUP);
450 gpio_request(OMAP3_EVM_EHCI_SELECT, "select EHCI port"); 459 gpio_request(OMAP3_EVM_EHCI_SELECT, "select EHCI port");
451 gpio_direction_output(OMAP3_EVM_EHCI_SELECT, 0); 460 gpio_direction_output(OMAP3_EVM_EHCI_SELECT, 0);
452 gpio_set_value(OMAP3_EVM_EHCI_SELECT, 0); 461 gpio_set_value(OMAP3_EVM_EHCI_SELECT, 0);
453 462
454 /* setup EHCI phy reset config */ 463 /* setup EHCI phy reset config */
455 omap_cfg_reg(AH14_34XX_GPIO21); 464 omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP);
456 ehci_pdata.reset_gpio_port[1] = 21; 465 ehci_pdata.reset_gpio_port[1] = 21;
457 466
458 } else { 467 } else {
459 /* setup EHCI phy reset on MDC */ 468 /* setup EHCI phy reset on MDC */
460 omap_cfg_reg(AF4_34XX_GPIO135_OUT); 469 omap_mux_init_gpio(135, OMAP_PIN_OUTPUT);
461 ehci_pdata.reset_gpio_port[1] = 135; 470 ehci_pdata.reset_gpio_port[1] = 135;
462 } 471 }
463 usb_musb_init(); 472 usb_musb_init();
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index 2db5ba5b3bf7..6f6c601eeab7 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -40,8 +40,8 @@
40#include <mach/hardware.h> 40#include <mach/hardware.h>
41#include <plat/mcspi.h> 41#include <plat/mcspi.h>
42#include <plat/usb.h> 42#include <plat/usb.h>
43#include <plat/mux.h>
44 43
44#include "mux.h"
45#include "sdram-micron-mt46h32m32lf-6.h" 45#include "sdram-micron-mt46h32m32lf-6.h"
46#include "mmc-twl4030.h" 46#include "mmc-twl4030.h"
47 47
@@ -98,10 +98,10 @@ static struct gpio_keys_button pandora_gpio_keys[] = {
98 GPIO_BUTTON_LOW(103, KEY_DOWN, "down"), 98 GPIO_BUTTON_LOW(103, KEY_DOWN, "down"),
99 GPIO_BUTTON_LOW(96, KEY_LEFT, "left"), 99 GPIO_BUTTON_LOW(96, KEY_LEFT, "left"),
100 GPIO_BUTTON_LOW(98, KEY_RIGHT, "right"), 100 GPIO_BUTTON_LOW(98, KEY_RIGHT, "right"),
101 GPIO_BUTTON_LOW(111, BTN_A, "a"), 101 GPIO_BUTTON_LOW(109, KEY_KP1, "game 1"),
102 GPIO_BUTTON_LOW(106, BTN_B, "b"), 102 GPIO_BUTTON_LOW(111, KEY_KP2, "game 2"),
103 GPIO_BUTTON_LOW(109, BTN_X, "x"), 103 GPIO_BUTTON_LOW(106, KEY_KP3, "game 3"),
104 GPIO_BUTTON_LOW(101, BTN_Y, "y"), 104 GPIO_BUTTON_LOW(101, KEY_KP4, "game 4"),
105 GPIO_BUTTON_LOW(102, BTN_TL, "l"), 105 GPIO_BUTTON_LOW(102, BTN_TL, "l"),
106 GPIO_BUTTON_LOW(97, BTN_TL2, "l2"), 106 GPIO_BUTTON_LOW(97, BTN_TL2, "l2"),
107 GPIO_BUTTON_LOW(105, BTN_TR, "r"), 107 GPIO_BUTTON_LOW(105, BTN_TR, "r"),
@@ -315,7 +315,7 @@ static int __init omap3pandora_i2c_init(void)
315 omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo, 315 omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo,
316 ARRAY_SIZE(omap3pandora_i2c_boardinfo)); 316 ARRAY_SIZE(omap3pandora_i2c_boardinfo));
317 /* i2c2 pins are not connected */ 317 /* i2c2 pins are not connected */
318 omap_register_i2c_bus(3, 400, NULL, 0); 318 omap_register_i2c_bus(3, 100, NULL, 0);
319 return 0; 319 return 0;
320} 320}
321 321
@@ -368,23 +368,8 @@ static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {
368 } 368 }
369}; 369};
370 370
371static struct platform_device omap3pandora_lcd_device = {
372 .name = "pandora_lcd",
373 .id = -1,
374};
375
376static struct omap_lcd_config omap3pandora_lcd_config __initdata = {
377 .ctrl_name = "internal",
378};
379
380static struct omap_board_config_kernel omap3pandora_config[] __initdata = {
381 { OMAP_TAG_LCD, &omap3pandora_lcd_config },
382};
383
384static void __init omap3pandora_init_irq(void) 371static void __init omap3pandora_init_irq(void)
385{ 372{
386 omap_board_config = omap3pandora_config;
387 omap_board_config_size = ARRAY_SIZE(omap3pandora_config);
388 omap2_init_common_hw(mt46h32m32lf6_sdrc_params, 373 omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
389 mt46h32m32lf6_sdrc_params); 374 mt46h32m32lf6_sdrc_params);
390 omap_init_irq(); 375 omap_init_irq();
@@ -392,7 +377,6 @@ static void __init omap3pandora_init_irq(void)
392} 377}
393 378
394static struct platform_device *omap3pandora_devices[] __initdata = { 379static struct platform_device *omap3pandora_devices[] __initdata = {
395 &omap3pandora_lcd_device,
396 &pandora_leds_gpio, 380 &pandora_leds_gpio,
397 &pandora_keys_gpio, 381 &pandora_keys_gpio,
398}; 382};
@@ -409,8 +393,17 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
409 .reset_gpio_port[2] = -EINVAL 393 .reset_gpio_port[2] = -EINVAL
410}; 394};
411 395
396#ifdef CONFIG_OMAP_MUX
397static struct omap_board_mux board_mux[] __initdata = {
398 { .reg_offset = OMAP_MUX_TERMINATOR },
399};
400#else
401#define board_mux NULL
402#endif
403
412static void __init omap3pandora_init(void) 404static void __init omap3pandora_init(void)
413{ 405{
406 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
414 omap3pandora_i2c_init(); 407 omap3pandora_i2c_init();
415 platform_add_devices(omap3pandora_devices, 408 platform_add_devices(omap3pandora_devices,
416 ARRAY_SIZE(omap3pandora_devices)); 409 ARRAY_SIZE(omap3pandora_devices));
@@ -423,8 +416,8 @@ static void __init omap3pandora_init(void)
423 usb_musb_init(); 416 usb_musb_init();
424 417
425 /* Ensure SDRC pins are mux'd for self-refresh */ 418 /* Ensure SDRC pins are mux'd for self-refresh */
426 omap_cfg_reg(H16_34XX_SDRC_CKE0); 419 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
427 omap_cfg_reg(H17_34XX_SDRC_CKE1); 420 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
428} 421}
429 422
430static void __init omap3pandora_map_io(void) 423static void __init omap3pandora_map_io(void)
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
new file mode 100644
index 000000000000..c9e5ebb4d91d
--- /dev/null
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -0,0 +1,572 @@
1/*
2 * linux/arch/arm/mach-omap2/board-omap3touchbook.c
3 *
4 * Copyright (C) 2009 Always Innovating
5 *
6 * Modified from mach-omap2/board-omap3beagleboard.c
7 *
8 * Initial code: Grégoire Gentil, Tim Yamin
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 version 2 as
12 * published by the Free Software Foundation.
13 */
14
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/platform_device.h>
18#include <linux/delay.h>
19#include <linux/err.h>
20#include <linux/clk.h>
21#include <linux/io.h>
22#include <linux/leds.h>
23#include <linux/gpio.h>
24#include <linux/input.h>
25#include <linux/gpio_keys.h>
26
27#include <linux/mtd/mtd.h>
28#include <linux/mtd/partitions.h>
29#include <linux/mtd/nand.h>
30
31#include <plat/mcspi.h>
32#include <linux/spi/spi.h>
33
34#include <linux/spi/ads7846.h>
35
36#include <linux/regulator/machine.h>
37#include <linux/i2c/twl4030.h>
38
39#include <mach/hardware.h>
40#include <asm/mach-types.h>
41#include <asm/mach/arch.h>
42#include <asm/mach/map.h>
43#include <asm/mach/flash.h>
44
45#include <plat/board.h>
46#include <plat/common.h>
47#include <plat/gpmc.h>
48#include <plat/nand.h>
49#include <plat/usb.h>
50#include <plat/timer-gp.h>
51
52#include "mux.h"
53#include "mmc-twl4030.h"
54
55#include <asm/setup.h>
56
57#define GPMC_CS0_BASE 0x60
58#define GPMC_CS_SIZE 0x30
59
60#define NAND_BLOCK_SIZE SZ_128K
61
62#define OMAP3_AC_GPIO 136
63#define OMAP3_TS_GPIO 162
64#define TB_BL_PWM_TIMER 9
65#define TB_KILL_POWER_GPIO 168
66
67unsigned long touchbook_revision;
68
69static struct mtd_partition omap3touchbook_nand_partitions[] = {
70 /* All the partition sizes are listed in terms of NAND block size */
71 {
72 .name = "X-Loader",
73 .offset = 0,
74 .size = 4 * NAND_BLOCK_SIZE,
75 .mask_flags = MTD_WRITEABLE, /* force read-only */
76 },
77 {
78 .name = "U-Boot",
79 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
80 .size = 15 * NAND_BLOCK_SIZE,
81 .mask_flags = MTD_WRITEABLE, /* force read-only */
82 },
83 {
84 .name = "U-Boot Env",
85 .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
86 .size = 1 * NAND_BLOCK_SIZE,
87 },
88 {
89 .name = "Kernel",
90 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
91 .size = 32 * NAND_BLOCK_SIZE,
92 },
93 {
94 .name = "File System",
95 .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */
96 .size = MTDPART_SIZ_FULL,
97 },
98};
99
100static struct omap_nand_platform_data omap3touchbook_nand_data = {
101 .options = NAND_BUSWIDTH_16,
102 .parts = omap3touchbook_nand_partitions,
103 .nr_parts = ARRAY_SIZE(omap3touchbook_nand_partitions),
104 .dma_channel = -1, /* disable DMA in OMAP NAND driver */
105 .nand_setup = NULL,
106 .dev_ready = NULL,
107};
108
109static struct resource omap3touchbook_nand_resource = {
110 .flags = IORESOURCE_MEM,
111};
112
113static struct platform_device omap3touchbook_nand_device = {
114 .name = "omap2-nand",
115 .id = -1,
116 .dev = {
117 .platform_data = &omap3touchbook_nand_data,
118 },
119 .num_resources = 1,
120 .resource = &omap3touchbook_nand_resource,
121};
122
123#include "sdram-micron-mt46h32m32lf-6.h"
124
125static struct twl4030_hsmmc_info mmc[] = {
126 {
127 .mmc = 1,
128 .wires = 8,
129 .gpio_wp = 29,
130 },
131 {} /* Terminator */
132};
133
134static struct platform_device omap3_touchbook_lcd_device = {
135 .name = "omap3touchbook_lcd",
136 .id = -1,
137};
138
139static struct omap_lcd_config omap3_touchbook_lcd_config __initdata = {
140 .ctrl_name = "internal",
141};
142
143static struct regulator_consumer_supply touchbook_vmmc1_supply = {
144 .supply = "vmmc",
145};
146
147static struct regulator_consumer_supply touchbook_vsim_supply = {
148 .supply = "vmmc_aux",
149};
150
151static struct gpio_led gpio_leds[];
152
153static int touchbook_twl_gpio_setup(struct device *dev,
154 unsigned gpio, unsigned ngpio)
155{
156 if (system_rev >= 0x20 && system_rev <= 0x34301000) {
157 omap_mux_init_gpio(23, OMAP_PIN_INPUT);
158 mmc[0].gpio_wp = 23;
159 } else {
160 omap_mux_init_gpio(29, OMAP_PIN_INPUT);
161 }
162 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
163 mmc[0].gpio_cd = gpio + 0;
164 twl4030_mmc_init(mmc);
165
166 /* link regulators to MMC adapters */
167 touchbook_vmmc1_supply.dev = mmc[0].dev;
168 touchbook_vsim_supply.dev = mmc[0].dev;
169
170 /* REVISIT: need ehci-omap hooks for external VBUS
171 * power switch and overcurrent detect
172 */
173
174 gpio_request(gpio + 1, "EHCI_nOC");
175 gpio_direction_input(gpio + 1);
176
177 /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
178 gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
179 gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
180
181 /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
182 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
183
184 return 0;
185}
186
187static struct twl4030_gpio_platform_data touchbook_gpio_data = {
188 .gpio_base = OMAP_MAX_GPIO_LINES,
189 .irq_base = TWL4030_GPIO_IRQ_BASE,
190 .irq_end = TWL4030_GPIO_IRQ_END,
191 .use_leds = true,
192 .pullups = BIT(1),
193 .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13)
194 | BIT(15) | BIT(16) | BIT(17),
195 .setup = touchbook_twl_gpio_setup,
196};
197
198static struct regulator_consumer_supply touchbook_vdac_supply = {
199 .supply = "vdac",
200 .dev = &omap3_touchbook_lcd_device.dev,
201};
202
203static struct regulator_consumer_supply touchbook_vdvi_supply = {
204 .supply = "vdvi",
205 .dev = &omap3_touchbook_lcd_device.dev,
206};
207
208/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
209static struct regulator_init_data touchbook_vmmc1 = {
210 .constraints = {
211 .min_uV = 1850000,
212 .max_uV = 3150000,
213 .valid_modes_mask = REGULATOR_MODE_NORMAL
214 | REGULATOR_MODE_STANDBY,
215 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
216 | REGULATOR_CHANGE_MODE
217 | REGULATOR_CHANGE_STATUS,
218 },
219 .num_consumer_supplies = 1,
220 .consumer_supplies = &touchbook_vmmc1_supply,
221};
222
223/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
224static struct regulator_init_data touchbook_vsim = {
225 .constraints = {
226 .min_uV = 1800000,
227 .max_uV = 3000000,
228 .valid_modes_mask = REGULATOR_MODE_NORMAL
229 | REGULATOR_MODE_STANDBY,
230 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
231 | REGULATOR_CHANGE_MODE
232 | REGULATOR_CHANGE_STATUS,
233 },
234 .num_consumer_supplies = 1,
235 .consumer_supplies = &touchbook_vsim_supply,
236};
237
238/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
239static struct regulator_init_data touchbook_vdac = {
240 .constraints = {
241 .min_uV = 1800000,
242 .max_uV = 1800000,
243 .valid_modes_mask = REGULATOR_MODE_NORMAL
244 | REGULATOR_MODE_STANDBY,
245 .valid_ops_mask = REGULATOR_CHANGE_MODE
246 | REGULATOR_CHANGE_STATUS,
247 },
248 .num_consumer_supplies = 1,
249 .consumer_supplies = &touchbook_vdac_supply,
250};
251
252/* VPLL2 for digital video outputs */
253static struct regulator_init_data touchbook_vpll2 = {
254 .constraints = {
255 .name = "VDVI",
256 .min_uV = 1800000,
257 .max_uV = 1800000,
258 .valid_modes_mask = REGULATOR_MODE_NORMAL
259 | REGULATOR_MODE_STANDBY,
260 .valid_ops_mask = REGULATOR_CHANGE_MODE
261 | REGULATOR_CHANGE_STATUS,
262 },
263 .num_consumer_supplies = 1,
264 .consumer_supplies = &touchbook_vdvi_supply,
265};
266
267static struct twl4030_usb_data touchbook_usb_data = {
268 .usb_mode = T2_USB_MODE_ULPI,
269};
270
271static struct twl4030_codec_audio_data touchbook_audio_data = {
272 .audio_mclk = 26000000,
273};
274
275static struct twl4030_codec_data touchbook_codec_data = {
276 .audio_mclk = 26000000,
277 .audio = &touchbook_audio_data,
278};
279
280static struct twl4030_platform_data touchbook_twldata = {
281 .irq_base = TWL4030_IRQ_BASE,
282 .irq_end = TWL4030_IRQ_END,
283
284 /* platform_data for children goes here */
285 .usb = &touchbook_usb_data,
286 .gpio = &touchbook_gpio_data,
287 .codec = &touchbook_codec_data,
288 .vmmc1 = &touchbook_vmmc1,
289 .vsim = &touchbook_vsim,
290 .vdac = &touchbook_vdac,
291 .vpll2 = &touchbook_vpll2,
292};
293
294static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = {
295 {
296 I2C_BOARD_INFO("twl4030", 0x48),
297 .flags = I2C_CLIENT_WAKE,
298 .irq = INT_34XX_SYS_NIRQ,
299 .platform_data = &touchbook_twldata,
300 },
301};
302
303static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = {
304 {
305 I2C_BOARD_INFO("bq27200", 0x55),
306 },
307};
308
309static int __init omap3_touchbook_i2c_init(void)
310{
311 /* Standard TouchBook bus */
312 omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo,
313 ARRAY_SIZE(touchbook_i2c_boardinfo));
314
315 /* Additional TouchBook bus */
316 omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo,
317 ARRAY_SIZE(touchBook_i2c_boardinfo));
318
319 return 0;
320}
321
322static void __init omap3_ads7846_init(void)
323{
324 if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) {
325 printk(KERN_ERR "Failed to request GPIO %d for "
326 "ads7846 pen down IRQ\n", OMAP3_TS_GPIO);
327 return;
328 }
329
330 gpio_direction_input(OMAP3_TS_GPIO);
331 omap_set_gpio_debounce(OMAP3_TS_GPIO, 1);
332 omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa);
333}
334
335static struct ads7846_platform_data ads7846_config = {
336 .x_min = 100,
337 .y_min = 265,
338 .x_max = 3950,
339 .y_max = 3750,
340 .x_plate_ohms = 40,
341 .pressure_max = 255,
342 .debounce_max = 10,
343 .debounce_tol = 5,
344 .debounce_rep = 1,
345 .gpio_pendown = OMAP3_TS_GPIO,
346 .keep_vref_on = 1,
347};
348
349static struct omap2_mcspi_device_config ads7846_mcspi_config = {
350 .turbo_mode = 0,
351 .single_channel = 1, /* 0: slave, 1: master */
352};
353
354static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = {
355 {
356 .modalias = "ads7846",
357 .bus_num = 4,
358 .chip_select = 0,
359 .max_speed_hz = 1500000,
360 .controller_data = &ads7846_mcspi_config,
361 .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO),
362 .platform_data = &ads7846_config,
363 }
364};
365
366static struct gpio_led gpio_leds[] = {
367 {
368 .name = "touchbook::usr0",
369 .default_trigger = "heartbeat",
370 .gpio = 150,
371 },
372 {
373 .name = "touchbook::usr1",
374 .default_trigger = "mmc0",
375 .gpio = 149,
376 },
377 {
378 .name = "touchbook::pmu_stat",
379 .gpio = -EINVAL, /* gets replaced */
380 .active_low = true,
381 },
382};
383
384static struct gpio_led_platform_data gpio_led_info = {
385 .leds = gpio_leds,
386 .num_leds = ARRAY_SIZE(gpio_leds),
387};
388
389static struct platform_device leds_gpio = {
390 .name = "leds-gpio",
391 .id = -1,
392 .dev = {
393 .platform_data = &gpio_led_info,
394 },
395};
396
397static struct gpio_keys_button gpio_buttons[] = {
398 {
399 .code = BTN_EXTRA,
400 .gpio = 7,
401 .desc = "user",
402 .wakeup = 1,
403 },
404 {
405 .code = KEY_POWER,
406 .gpio = 183,
407 .desc = "power",
408 .wakeup = 1,
409 },
410};
411
412static struct gpio_keys_platform_data gpio_key_info = {
413 .buttons = gpio_buttons,
414 .nbuttons = ARRAY_SIZE(gpio_buttons),
415};
416
417static struct platform_device keys_gpio = {
418 .name = "gpio-keys",
419 .id = -1,
420 .dev = {
421 .platform_data = &gpio_key_info,
422 },
423};
424
425static struct omap_board_config_kernel omap3_touchbook_config[] __initdata = {
426 { OMAP_TAG_LCD, &omap3_touchbook_lcd_config },
427};
428
429#ifdef CONFIG_OMAP_MUX
430static struct omap_board_mux board_mux[] __initdata = {
431 { .reg_offset = OMAP_MUX_TERMINATOR },
432};
433#else
434#define board_mux NULL
435#endif
436
437static void __init omap3_touchbook_init_irq(void)
438{
439 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
440 omap_board_config = omap3_touchbook_config;
441 omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config);
442 omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
443 mt46h32m32lf6_sdrc_params);
444 omap_init_irq();
445#ifdef CONFIG_OMAP_32K_TIMER
446 omap2_gp_clockevent_set_gptimer(12);
447#endif
448 omap_gpio_init();
449}
450
451static struct platform_device *omap3_touchbook_devices[] __initdata = {
452 &omap3_touchbook_lcd_device,
453 &leds_gpio,
454 &keys_gpio,
455};
456
457static void __init omap3touchbook_flash_init(void)
458{
459 u8 cs = 0;
460 u8 nandcs = GPMC_CS_NUM + 1;
461
462 u32 gpmc_base_add = OMAP34XX_GPMC_VIRT;
463
464 /* find out the chip-select on which NAND exists */
465 while (cs < GPMC_CS_NUM) {
466 u32 ret = 0;
467 ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
468
469 if ((ret & 0xC00) == 0x800) {
470 printk(KERN_INFO "Found NAND on CS%d\n", cs);
471 if (nandcs > GPMC_CS_NUM)
472 nandcs = cs;
473 }
474 cs++;
475 }
476
477 if (nandcs > GPMC_CS_NUM) {
478 printk(KERN_INFO "NAND: Unable to find configuration "
479 "in GPMC\n ");
480 return;
481 }
482
483 if (nandcs < GPMC_CS_NUM) {
484 omap3touchbook_nand_data.cs = nandcs;
485 omap3touchbook_nand_data.gpmc_cs_baseaddr = (void *)
486 (gpmc_base_add + GPMC_CS0_BASE + nandcs * GPMC_CS_SIZE);
487 omap3touchbook_nand_data.gpmc_baseaddr =
488 (void *) (gpmc_base_add);
489
490 printk(KERN_INFO "Registering NAND on CS%d\n", nandcs);
491 if (platform_device_register(&omap3touchbook_nand_device) < 0)
492 printk(KERN_ERR "Unable to register NAND device\n");
493 }
494}
495
496static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
497
498 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
499 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
500 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
501
502 .phy_reset = true,
503 .reset_gpio_port[0] = -EINVAL,
504 .reset_gpio_port[1] = 147,
505 .reset_gpio_port[2] = -EINVAL
506};
507
508static void omap3_touchbook_poweroff(void)
509{
510 int r;
511
512 r = gpio_request(TB_KILL_POWER_GPIO, "DVI reset");
513 if (r < 0) {
514 printk(KERN_ERR "Unable to get kill power GPIO\n");
515 return;
516 }
517
518 gpio_direction_output(TB_KILL_POWER_GPIO, 0);
519}
520
521static void __init early_touchbook_revision(char **p)
522{
523 if (!*p)
524 return;
525
526 strict_strtoul(*p, 10, &touchbook_revision);
527}
528__early_param("tbr=", early_touchbook_revision);
529
530static void __init omap3_touchbook_init(void)
531{
532 pm_power_off = omap3_touchbook_poweroff;
533
534 omap3_touchbook_i2c_init();
535 platform_add_devices(omap3_touchbook_devices,
536 ARRAY_SIZE(omap3_touchbook_devices));
537 omap_serial_init();
538
539 omap_mux_init_gpio(170, OMAP_PIN_INPUT);
540 gpio_request(176, "DVI_nPD");
541 /* REVISIT leave DVI powered down until it's needed ... */
542 gpio_direction_output(176, true);
543
544 /* Touchscreen and accelerometer */
545 spi_register_board_info(omap3_ads7846_spi_board_info,
546 ARRAY_SIZE(omap3_ads7846_spi_board_info));
547 omap3_ads7846_init();
548 usb_musb_init();
549 usb_ehci_init(&ehci_pdata);
550 omap3touchbook_flash_init();
551
552 /* Ensure SDRC pins are mux'd for self-refresh */
553 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
554 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
555}
556
557static void __init omap3_touchbook_map_io(void)
558{
559 omap2_set_globals_343x();
560 omap2_map_common_io();
561}
562
563MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
564 /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */
565 .phys_io = 0x48000000,
566 .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
567 .boot_params = 0x80000100,
568 .map_io = omap3_touchbook_map_io,
569 .init_irq = omap3_touchbook_init_irq,
570 .init_machine = omap3_touchbook_init,
571 .timer = &omap_timer,
572MACHINE_END
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 52dfd51a938e..5b78a87217e0 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -44,9 +44,9 @@
44#include <plat/gpmc.h> 44#include <plat/gpmc.h>
45#include <mach/hardware.h> 45#include <mach/hardware.h>
46#include <plat/nand.h> 46#include <plat/nand.h>
47#include <plat/mux.h>
48#include <plat/usb.h> 47#include <plat/usb.h>
49 48
49#include "mux.h"
50#include "sdram-micron-mt46h32m32lf-6.h" 50#include "sdram-micron-mt46h32m32lf-6.h"
51#include "mmc-twl4030.h" 51#include "mmc-twl4030.h"
52 52
@@ -405,9 +405,17 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
405 .reset_gpio_port[2] = -EINVAL 405 .reset_gpio_port[2] = -EINVAL
406}; 406};
407 407
408#ifdef CONFIG_OMAP_MUX
409static struct omap_board_mux board_mux[] __initdata = {
410 { .reg_offset = OMAP_MUX_TERMINATOR },
411};
412#else
413#define board_mux NULL
414#endif
408 415
409static void __init overo_init(void) 416static void __init overo_init(void)
410{ 417{
418 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
411 overo_i2c_init(); 419 overo_i2c_init();
412 platform_add_devices(overo_devices, ARRAY_SIZE(overo_devices)); 420 platform_add_devices(overo_devices, ARRAY_SIZE(overo_devices));
413 omap_serial_init(); 421 omap_serial_init();
@@ -418,8 +426,8 @@ static void __init overo_init(void)
418 overo_init_smsc911x(); 426 overo_init_smsc911x();
419 427
420 /* Ensure SDRC pins are mux'd for self-refresh */ 428 /* Ensure SDRC pins are mux'd for self-refresh */
421 omap_cfg_reg(H16_34XX_SDRC_CKE0); 429 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
422 omap_cfg_reg(H17_34XX_SDRC_CKE1); 430 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
423 431
424 if ((gpio_request(OVERO_GPIO_W2W_NRESET, 432 if ((gpio_request(OVERO_GPIO_W2W_NRESET,
425 "OVERO_GPIO_W2W_NRESET") == 0) && 433 "OVERO_GPIO_W2W_NRESET") == 0) &&
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index 15ce6514c5fd..bf26ad31f9ba 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -33,6 +33,7 @@
33#include <plat/onenand.h> 33#include <plat/onenand.h>
34#include <plat/gpmc-smc91x.h> 34#include <plat/gpmc-smc91x.h>
35 35
36#include "mux.h"
36#include "mmc-twl4030.h" 37#include "mmc-twl4030.h"
37 38
38#define SYSTEM_REV_B_USES_VAUX3 0x1699 39#define SYSTEM_REV_B_USES_VAUX3 0x1699
@@ -59,7 +60,7 @@ static struct spi_board_info rx51_peripherals_spi_board_info[] __initdata = {
59 .bus_num = 4, 60 .bus_num = 4,
60 .chip_select = 0, 61 .chip_select = 0,
61 .max_speed_hz = 48000000, 62 .max_speed_hz = 48000000,
62 .mode = SPI_MODE_2, 63 .mode = SPI_MODE_3,
63 .controller_data = &wl1251_mcspi_config, 64 .controller_data = &wl1251_mcspi_config,
64 .platform_data = &wl1251_pdata, 65 .platform_data = &wl1251_pdata,
65 }, 66 },
@@ -630,9 +631,9 @@ static struct omap_smc91x_platform_data board_smc91x_data = {
630 631
631static void __init board_smc91x_init(void) 632static void __init board_smc91x_init(void)
632{ 633{
633 omap_cfg_reg(U8_34XX_GPIO54_DOWN); 634 omap_mux_init_gpio(54, OMAP_PIN_INPUT_PULLDOWN);
634 omap_cfg_reg(G25_34XX_GPIO86_OUT); 635 omap_mux_init_gpio(86, OMAP_PIN_OUTPUT);
635 omap_cfg_reg(H19_34XX_GPIO164_OUT); 636 omap_mux_init_gpio(164, OMAP_PIN_OUTPUT);
636 637
637 gpmc_smc91x_init(&board_smc91x_data); 638 gpmc_smc91x_init(&board_smc91x_data);
638} 639}
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 1bb1de245917..67bb3476b707 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -23,13 +23,14 @@
23#include <asm/mach/map.h> 23#include <asm/mach/map.h>
24 24
25#include <plat/mcspi.h> 25#include <plat/mcspi.h>
26#include <plat/mux.h>
27#include <plat/board.h> 26#include <plat/board.h>
28#include <plat/common.h> 27#include <plat/common.h>
29#include <plat/dma.h> 28#include <plat/dma.h>
30#include <plat/gpmc.h> 29#include <plat/gpmc.h>
31#include <plat/usb.h> 30#include <plat/usb.h>
32 31
32#include "mux.h"
33
33struct omap_sdrc_params *rx51_get_sdram_timings(void); 34struct omap_sdrc_params *rx51_get_sdram_timings(void);
34 35
35static struct omap_lcd_config rx51_lcd_config = { 36static struct omap_lcd_config rx51_lcd_config = {
@@ -69,15 +70,24 @@ static void __init rx51_init_irq(void)
69 70
70extern void __init rx51_peripherals_init(void); 71extern void __init rx51_peripherals_init(void);
71 72
73#ifdef CONFIG_OMAP_MUX
74static struct omap_board_mux board_mux[] __initdata = {
75 { .reg_offset = OMAP_MUX_TERMINATOR },
76};
77#else
78#define board_mux NULL
79#endif
80
72static void __init rx51_init(void) 81static void __init rx51_init(void)
73{ 82{
83 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
74 omap_serial_init(); 84 omap_serial_init();
75 usb_musb_init(); 85 usb_musb_init();
76 rx51_peripherals_init(); 86 rx51_peripherals_init();
77 87
78 /* Ensure SDRC pins are mux'd for self-refresh */ 88 /* Ensure SDRC pins are mux'd for self-refresh */
79 omap_cfg_reg(H16_34XX_SDRC_CKE0); 89 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
80 omap_cfg_reg(H17_34XX_SDRC_CKE1); 90 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
81} 91}
82 92
83static void __init rx51_map_io(void) 93static void __init rx51_map_io(void)
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
index f14baa392760..258794db488f 100755
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -152,14 +152,20 @@ static struct regulator_init_data zoom_vsim = {
152 152
153static struct twl4030_hsmmc_info mmc[] __initdata = { 153static struct twl4030_hsmmc_info mmc[] __initdata = {
154 { 154 {
155 .name = "external",
155 .mmc = 1, 156 .mmc = 1,
156 .wires = 4, 157 .wires = 4,
157 .gpio_wp = -EINVAL, 158 .gpio_wp = -EINVAL,
159 .power_saving = true,
158 }, 160 },
159 { 161 {
162 .name = "internal",
160 .mmc = 2, 163 .mmc = 2,
161 .wires = 4, 164 .wires = 8,
165 .gpio_cd = -EINVAL,
162 .gpio_wp = -EINVAL, 166 .gpio_wp = -EINVAL,
167 .nonremovable = true,
168 .power_saving = true,
163 }, 169 },
164 {} /* Terminator */ 170 {} /* Terminator */
165}; 171};
@@ -167,11 +173,8 @@ static struct twl4030_hsmmc_info mmc[] __initdata = {
167static int zoom_twl_gpio_setup(struct device *dev, 173static int zoom_twl_gpio_setup(struct device *dev,
168 unsigned gpio, unsigned ngpio) 174 unsigned gpio, unsigned ngpio)
169{ 175{
170 /* gpio + 0 is "mmc0_cd" (input/IRQ), 176 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
171 * gpio + 1 is "mmc1_cd" (input/IRQ)
172 */
173 mmc[0].gpio_cd = gpio + 0; 177 mmc[0].gpio_cd = gpio + 0;
174 mmc[1].gpio_cd = gpio + 1;
175 twl4030_mmc_init(mmc); 178 twl4030_mmc_init(mmc);
176 179
177 /* link regulators to MMC adapters ... we "know" the 180 /* link regulators to MMC adapters ... we "know" the
@@ -236,6 +239,7 @@ static struct twl4030_platform_data zoom_twldata = {
236 .gpio = &zoom_gpio_data, 239 .gpio = &zoom_gpio_data,
237 .keypad = &zoom_kp_twl4030_data, 240 .keypad = &zoom_kp_twl4030_data,
238 .codec = &zoom_codec_data, 241 .codec = &zoom_codec_data,
242 .vmmc1 = &zoom_vmmc1,
239 .vmmc2 = &zoom_vmmc2, 243 .vmmc2 = &zoom_vmmc2,
240 .vsim = &zoom_vsim, 244 .vsim = &zoom_vsim,
241 245
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
index d94d047c7dce..bb87cf7878ff 100644
--- a/arch/arm/mach-omap2/board-zoom2.c
+++ b/arch/arm/mach-omap2/board-zoom2.c
@@ -23,6 +23,7 @@
23 23
24#include <mach/board-zoom.h> 24#include <mach/board-zoom.h>
25 25
26#include "mux.h"
26#include "sdram-micron-mt46h32m32lf-6.h" 27#include "sdram-micron-mt46h32m32lf-6.h"
27 28
28static void __init omap_zoom2_init_irq(void) 29static void __init omap_zoom2_init_irq(void)
@@ -68,8 +69,17 @@ static struct twl4030_platform_data zoom2_twldata = {
68 69
69#endif 70#endif
70 71
72#ifdef CONFIG_OMAP_MUX
73static struct omap_board_mux board_mux[] __initdata = {
74 { .reg_offset = OMAP_MUX_TERMINATOR },
75};
76#else
77#define board_mux NULL
78#endif
79
71static void __init omap_zoom2_init(void) 80static void __init omap_zoom2_init(void)
72{ 81{
82 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
73 zoom_peripherals_init(); 83 zoom_peripherals_init();
74 zoom_debugboard_init(); 84 zoom_debugboard_init();
75} 85}
diff --git a/arch/arm/mach-omap2/board-zoom3.c b/arch/arm/mach-omap2/board-zoom3.c
index 8d965a6516c8..a9fe9181b010 100644
--- a/arch/arm/mach-omap2/board-zoom3.c
+++ b/arch/arm/mach-omap2/board-zoom3.c
@@ -21,6 +21,7 @@
21#include <plat/common.h> 21#include <plat/common.h>
22#include <plat/board.h> 22#include <plat/board.h>
23 23
24#include "mux.h"
24#include "sdram-hynix-h8mbx00u0mer-0em.h" 25#include "sdram-hynix-h8mbx00u0mer-0em.h"
25 26
26static void __init omap_zoom_map_io(void) 27static void __init omap_zoom_map_io(void)
@@ -42,8 +43,17 @@ static void __init omap_zoom_init_irq(void)
42 omap_gpio_init(); 43 omap_gpio_init();
43} 44}
44 45
46#ifdef CONFIG_OMAP_MUX
47static struct omap_board_mux board_mux[] __initdata = {
48 { .reg_offset = OMAP_MUX_TERMINATOR },
49};
50#else
51#define board_mux NULL
52#endif
53
45static void __init omap_zoom_init(void) 54static void __init omap_zoom_init(void)
46{ 55{
56 omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
47 zoom_peripherals_init(); 57 zoom_peripherals_init();
48 zoom_debugboard_init(); 58 zoom_debugboard_init();
49} 59}
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 733d3dcff98b..18ad93160abb 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -27,6 +27,8 @@
27#include <mach/gpio.h> 27#include <mach/gpio.h>
28#include <plat/mmc.h> 28#include <plat/mmc.h>
29 29
30#include "mux.h"
31
30#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE) 32#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
31 33
32static struct resource cam_resources[] = { 34static struct resource cam_resources[] = {
@@ -595,27 +597,40 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
595 597
596 if (cpu_is_omap34xx()) { 598 if (cpu_is_omap34xx()) {
597 if (controller_nr == 0) { 599 if (controller_nr == 0) {
598 omap_cfg_reg(N28_3430_MMC1_CLK); 600 omap_mux_init_signal("sdmmc1_clk",
599 omap_cfg_reg(M27_3430_MMC1_CMD); 601 OMAP_PIN_INPUT_PULLUP);
600 omap_cfg_reg(N27_3430_MMC1_DAT0); 602 omap_mux_init_signal("sdmmc1_cmd",
603 OMAP_PIN_INPUT_PULLUP);
604 omap_mux_init_signal("sdmmc1_dat0",
605 OMAP_PIN_INPUT_PULLUP);
601 if (mmc_controller->slots[0].wires == 4 || 606 if (mmc_controller->slots[0].wires == 4 ||
602 mmc_controller->slots[0].wires == 8) { 607 mmc_controller->slots[0].wires == 8) {
603 omap_cfg_reg(N26_3430_MMC1_DAT1); 608 omap_mux_init_signal("sdmmc1_dat1",
604 omap_cfg_reg(N25_3430_MMC1_DAT2); 609 OMAP_PIN_INPUT_PULLUP);
605 omap_cfg_reg(P28_3430_MMC1_DAT3); 610 omap_mux_init_signal("sdmmc1_dat2",
611 OMAP_PIN_INPUT_PULLUP);
612 omap_mux_init_signal("sdmmc1_dat3",
613 OMAP_PIN_INPUT_PULLUP);
606 } 614 }
607 if (mmc_controller->slots[0].wires == 8) { 615 if (mmc_controller->slots[0].wires == 8) {
608 omap_cfg_reg(P27_3430_MMC1_DAT4); 616 omap_mux_init_signal("sdmmc1_dat4",
609 omap_cfg_reg(P26_3430_MMC1_DAT5); 617 OMAP_PIN_INPUT_PULLUP);
610 omap_cfg_reg(R27_3430_MMC1_DAT6); 618 omap_mux_init_signal("sdmmc1_dat5",
611 omap_cfg_reg(R25_3430_MMC1_DAT7); 619 OMAP_PIN_INPUT_PULLUP);
620 omap_mux_init_signal("sdmmc1_dat6",
621 OMAP_PIN_INPUT_PULLUP);
622 omap_mux_init_signal("sdmmc1_dat7",
623 OMAP_PIN_INPUT_PULLUP);
612 } 624 }
613 } 625 }
614 if (controller_nr == 1) { 626 if (controller_nr == 1) {
615 /* MMC2 */ 627 /* MMC2 */
616 omap_cfg_reg(AE2_3430_MMC2_CLK); 628 omap_mux_init_signal("sdmmc2_clk",
617 omap_cfg_reg(AG5_3430_MMC2_CMD); 629 OMAP_PIN_INPUT_PULLUP);
618 omap_cfg_reg(AH5_3430_MMC2_DAT0); 630 omap_mux_init_signal("sdmmc2_cmd",
631 OMAP_PIN_INPUT_PULLUP);
632 omap_mux_init_signal("sdmmc2_dat0",
633 OMAP_PIN_INPUT_PULLUP);
619 634
620 /* 635 /*
621 * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed 636 * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed
@@ -623,15 +638,22 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
623 */ 638 */
624 if (mmc_controller->slots[0].wires == 4 || 639 if (mmc_controller->slots[0].wires == 4 ||
625 mmc_controller->slots[0].wires == 8) { 640 mmc_controller->slots[0].wires == 8) {
626 omap_cfg_reg(AH4_3430_MMC2_DAT1); 641 omap_mux_init_signal("sdmmc2_dat1",
627 omap_cfg_reg(AG4_3430_MMC2_DAT2); 642 OMAP_PIN_INPUT_PULLUP);
628 omap_cfg_reg(AF4_3430_MMC2_DAT3); 643 omap_mux_init_signal("sdmmc2_dat2",
644 OMAP_PIN_INPUT_PULLUP);
645 omap_mux_init_signal("sdmmc2_dat3",
646 OMAP_PIN_INPUT_PULLUP);
629 } 647 }
630 if (mmc_controller->slots[0].wires == 8) { 648 if (mmc_controller->slots[0].wires == 8) {
631 omap_cfg_reg(AE4_3430_MMC2_DAT4); 649 omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4",
632 omap_cfg_reg(AH3_3430_MMC2_DAT5); 650 OMAP_PIN_INPUT_PULLUP);
633 omap_cfg_reg(AF3_3430_MMC2_DAT6); 651 omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5",
634 omap_cfg_reg(AE3_3430_MMC2_DAT7); 652 OMAP_PIN_INPUT_PULLUP);
653 omap_mux_init_signal("sdmmc2_dat6.sdmmc2_dat6",
654 OMAP_PIN_INPUT_PULLUP);
655 omap_mux_init_signal("sdmmc2_dat7.sdmmc2_dat7",
656 OMAP_PIN_INPUT_PULLUP);
635 } 657 }
636 } 658 }
637 659
diff --git a/arch/arm/mach-omap2/gpmc-smc91x.c b/arch/arm/mach-omap2/gpmc-smc91x.c
index 6083e21b3be6..877c6f5807b7 100644
--- a/arch/arm/mach-omap2/gpmc-smc91x.c
+++ b/arch/arm/mach-omap2/gpmc-smc91x.c
@@ -33,17 +33,19 @@ static struct resource gpmc_smc91x_resources[] = {
33}; 33};
34 34
35static struct smc91x_platdata gpmc_smc91x_info = { 35static struct smc91x_platdata gpmc_smc91x_info = {
36 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT | SMC91X_IO_SHIFT_0, 36 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT | SMC91X_IO_SHIFT_0,
37 .leda = RPC_LED_100_10,
38 .ledb = RPC_LED_TX_RX,
37}; 39};
38 40
39static struct platform_device gpmc_smc91x_device = { 41static struct platform_device gpmc_smc91x_device = {
40 .name = "smc91x", 42 .name = "smc91x",
41 .id = -1, 43 .id = -1,
42 .num_resources = ARRAY_SIZE(gpmc_smc91x_resources),
43 .resource = gpmc_smc91x_resources,
44 .dev = { 44 .dev = {
45 .platform_data = &gpmc_smc91x_info, 45 .platform_data = &gpmc_smc91x_info,
46 }, 46 },
47 .num_resources = ARRAY_SIZE(gpmc_smc91x_resources),
48 .resource = gpmc_smc91x_resources,
47}; 49};
48 50
49/* 51/*
diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c
new file mode 100644
index 000000000000..789ca8c02f0c
--- /dev/null
+++ b/arch/arm/mach-omap2/i2c.c
@@ -0,0 +1,56 @@
1/*
2 * Helper module for board specific I2C bus registration
3 *
4 * Copyright (C) 2009 Nokia Corporation.
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
8 * version 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * 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
18 * 02110-1301 USA
19 *
20 */
21
22#include <plat/cpu.h>
23#include <plat/i2c.h>
24#include <plat/mux.h>
25
26#include "mux.h"
27
28int __init omap_register_i2c_bus(int bus_id, u32 clkrate,
29 struct i2c_board_info const *info,
30 unsigned len)
31{
32 if (cpu_is_omap24xx()) {
33 const int omap24xx_pins[][2] = {
34 { M19_24XX_I2C1_SCL, L15_24XX_I2C1_SDA },
35 { J15_24XX_I2C2_SCL, H19_24XX_I2C2_SDA },
36 };
37 int scl, sda;
38
39 scl = omap24xx_pins[bus_id - 1][0];
40 sda = omap24xx_pins[bus_id - 1][1];
41 omap_cfg_reg(sda);
42 omap_cfg_reg(scl);
43 }
44
45 /* First I2C bus is not muxable */
46 if (cpu_is_omap34xx() && bus_id > 1) {
47 char mux_name[sizeof("i2c2_scl.i2c2_scl")];
48
49 sprintf(mux_name, "i2c%i_scl.i2c%i_scl", bus_id, bus_id);
50 omap_mux_init_signal(mux_name, OMAP_PIN_INPUT);
51 sprintf(mux_name, "i2c%i_sda.i2c%i_sda", bus_id, bus_id);
52 omap_mux_init_signal(mux_name, OMAP_PIN_INPUT);
53 }
54
55 return omap_plat_register_i2c_bus(bus_id, clkrate, info, len);
56}
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index f48a4b2654dd..a091b53657b9 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -246,6 +246,31 @@ void __init omap3_check_revision(void)
246 } 246 }
247} 247}
248 248
249void __init omap4_check_revision(void)
250{
251 u32 idcode;
252 u16 hawkeye;
253 u8 rev;
254 char *rev_name = "ES1.0";
255
256 /*
257 * The IC rev detection is done with hawkeye and rev.
258 * Note that rev does not map directly to defined processor
259 * revision numbers as ES1.0 uses value 0.
260 */
261 idcode = read_tap_reg(OMAP_TAP_IDCODE);
262 hawkeye = (idcode >> 12) & 0xffff;
263 rev = (idcode >> 28) & 0xff;
264
265 if ((hawkeye == 0xb852) && (rev == 0x0)) {
266 omap_revision = OMAP4430_REV_ES1_0;
267 pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
268 return;
269 }
270
271 pr_err("Unknown OMAP4 CPU id\n");
272}
273
249#define OMAP3_SHOW_FEATURE(feat) \ 274#define OMAP3_SHOW_FEATURE(feat) \
250 if (omap3_has_ ##feat()) \ 275 if (omap3_has_ ##feat()) \
251 printk(#feat" "); 276 printk(#feat" ");
@@ -277,10 +302,10 @@ void __init omap3_cpuinfo(void)
277 } else if (omap3_has_iva() && omap3_has_sgx()) { 302 } else if (omap3_has_iva() && omap3_has_sgx()) {
278 /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ 303 /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */
279 strcpy(cpu_name, "OMAP3430/3530"); 304 strcpy(cpu_name, "OMAP3430/3530");
280 } else if (omap3_has_sgx()) { 305 } else if (omap3_has_iva()) {
281 omap_revision = OMAP3525_REV(rev); 306 omap_revision = OMAP3525_REV(rev);
282 strcpy(cpu_name, "OMAP3525"); 307 strcpy(cpu_name, "OMAP3525");
283 } else if (omap3_has_iva()) { 308 } else if (omap3_has_sgx()) {
284 omap_revision = OMAP3515_REV(rev); 309 omap_revision = OMAP3515_REV(rev);
285 strcpy(cpu_name, "OMAP3515"); 310 strcpy(cpu_name, "OMAP3515");
286 } else { 311 } else {
@@ -336,7 +361,7 @@ void __init omap2_check_revision(void)
336 omap3_check_features(); 361 omap3_check_features();
337 omap3_cpuinfo(); 362 omap3_cpuinfo();
338 } else if (cpu_is_omap44xx()) { 363 } else if (cpu_is_omap44xx()) {
339 printk(KERN_INFO "FIXME: CPU revision = OMAP4430\n"); 364 omap4_check_revision();
340 return; 365 return;
341 } else { 366 } else {
342 pr_err("OMAP revision unknown, please fix!\n"); 367 pr_err("OMAP revision unknown, please fix!\n");
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index ac9ea6007f27..a8749e8017b9 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -33,6 +33,7 @@
33#include <plat/sdrc.h> 33#include <plat/sdrc.h>
34#include <plat/gpmc.h> 34#include <plat/gpmc.h>
35#include <plat/serial.h> 35#include <plat/serial.h>
36#include <plat/mux.h>
36#include <plat/vram.h> 37#include <plat/vram.h>
37 38
38#include "clock.h" 39#include "clock.h"
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index c18a94eca641..e071b3fd1878 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -27,19 +27,52 @@
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/io.h> 28#include <linux/io.h>
29#include <linux/spinlock.h> 29#include <linux/spinlock.h>
30#include <linux/list.h>
31#include <linux/ctype.h>
32#include <linux/debugfs.h>
33#include <linux/seq_file.h>
34#include <linux/uaccess.h>
30 35
31#include <asm/system.h> 36#include <asm/system.h>
32 37
33#include <plat/control.h> 38#include <plat/control.h>
34#include <plat/mux.h> 39#include <plat/mux.h>
35 40
36#ifdef CONFIG_OMAP_MUX 41#include "mux.h"
42
43#define OMAP_MUX_BASE_OFFSET 0x30 /* Offset from CTRL_BASE */
44#define OMAP_MUX_BASE_SZ 0x5ca
45
46struct omap_mux_entry {
47 struct omap_mux mux;
48 struct list_head node;
49};
50
51static unsigned long mux_phys;
52static void __iomem *mux_base;
53
54static inline u16 omap_mux_read(u16 reg)
55{
56 if (cpu_is_omap24xx())
57 return __raw_readb(mux_base + reg);
58 else
59 return __raw_readw(mux_base + reg);
60}
61
62static inline void omap_mux_write(u16 val, u16 reg)
63{
64 if (cpu_is_omap24xx())
65 __raw_writeb(val, mux_base + reg);
66 else
67 __raw_writew(val, mux_base + reg);
68}
69
70#if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_OMAP_MUX)
37 71
38static struct omap_mux_cfg arch_mux_cfg; 72static struct omap_mux_cfg arch_mux_cfg;
39 73
40/* NOTE: See mux.h for the enumeration */ 74/* NOTE: See mux.h for the enumeration */
41 75
42#ifdef CONFIG_ARCH_OMAP24XX
43static struct pin_config __initdata_or_module omap24xx_pins[] = { 76static struct pin_config __initdata_or_module omap24xx_pins[] = {
44/* 77/*
45 * description mux mux pull pull debug 78 * description mux mux pull pull debug
@@ -249,342 +282,14 @@ MUX_CFG_24XX("AF19_2430_GPIO_85", 0x0113, 3, 0, 0, 1)
249 282
250#define OMAP24XX_PINS_SZ ARRAY_SIZE(omap24xx_pins) 283#define OMAP24XX_PINS_SZ ARRAY_SIZE(omap24xx_pins)
251 284
252#else
253#define omap24xx_pins NULL
254#define OMAP24XX_PINS_SZ 0
255#endif /* CONFIG_ARCH_OMAP24XX */
256
257#ifdef CONFIG_ARCH_OMAP34XX
258static struct pin_config __initdata_or_module omap34xx_pins[] = {
259/*
260 * Name, reg-offset,
261 * mux-mode | [active-mode | off-mode]
262 */
263
264/* 34xx I2C */
265MUX_CFG_34XX("K21_34XX_I2C1_SCL", 0x1ba,
266 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
267MUX_CFG_34XX("J21_34XX_I2C1_SDA", 0x1bc,
268 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
269MUX_CFG_34XX("AF15_34XX_I2C2_SCL", 0x1be,
270 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
271MUX_CFG_34XX("AE15_34XX_I2C2_SDA", 0x1c0,
272 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
273MUX_CFG_34XX("AF14_34XX_I2C3_SCL", 0x1c2,
274 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
275MUX_CFG_34XX("AG14_34XX_I2C3_SDA", 0x1c4,
276 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
277MUX_CFG_34XX("AD26_34XX_I2C4_SCL", 0xa00,
278 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
279MUX_CFG_34XX("AE26_34XX_I2C4_SDA", 0xa02,
280 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
281
282/* PHY - HSUSB: 12-pin ULPI PHY: Port 1*/
283MUX_CFG_34XX("Y8_3430_USB1HS_PHY_CLK", 0x5da,
284 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_OUTPUT)
285MUX_CFG_34XX("Y9_3430_USB1HS_PHY_STP", 0x5d8,
286 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_OUTPUT)
287MUX_CFG_34XX("AA14_3430_USB1HS_PHY_DIR", 0x5ec,
288 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
289MUX_CFG_34XX("AA11_3430_USB1HS_PHY_NXT", 0x5ee,
290 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
291MUX_CFG_34XX("W13_3430_USB1HS_PHY_D0", 0x5dc,
292 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
293MUX_CFG_34XX("W12_3430_USB1HS_PHY_D1", 0x5de,
294 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
295MUX_CFG_34XX("W11_3430_USB1HS_PHY_D2", 0x5e0,
296 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
297MUX_CFG_34XX("Y11_3430_USB1HS_PHY_D3", 0x5ea,
298 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
299MUX_CFG_34XX("W9_3430_USB1HS_PHY_D4", 0x5e4,
300 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
301MUX_CFG_34XX("Y12_3430_USB1HS_PHY_D5", 0x5e6,
302 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
303MUX_CFG_34XX("W8_3430_USB1HS_PHY_D6", 0x5e8,
304 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
305MUX_CFG_34XX("Y13_3430_USB1HS_PHY_D7", 0x5e2,
306 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
307
308/* PHY - HSUSB: 12-pin ULPI PHY: Port 2*/
309MUX_CFG_34XX("AA8_3430_USB2HS_PHY_CLK", 0x5f0,
310 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_OUTPUT)
311MUX_CFG_34XX("AA10_3430_USB2HS_PHY_STP", 0x5f2,
312 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_OUTPUT)
313MUX_CFG_34XX("AA9_3430_USB2HS_PHY_DIR", 0x5f4,
314 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
315MUX_CFG_34XX("AB11_3430_USB2HS_PHY_NXT", 0x5f6,
316 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
317MUX_CFG_34XX("AB10_3430_USB2HS_PHY_D0", 0x5f8,
318 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
319MUX_CFG_34XX("AB9_3430_USB2HS_PHY_D1", 0x5fa,
320 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
321MUX_CFG_34XX("W3_3430_USB2HS_PHY_D2", 0x1d4,
322 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
323MUX_CFG_34XX("T4_3430_USB2HS_PHY_D3", 0x1de,
324 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
325MUX_CFG_34XX("T3_3430_USB2HS_PHY_D4", 0x1d8,
326 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
327MUX_CFG_34XX("R3_3430_USB2HS_PHY_D5", 0x1da,
328 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
329MUX_CFG_34XX("R4_3430_USB2HS_PHY_D6", 0x1dc,
330 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
331MUX_CFG_34XX("T2_3430_USB2HS_PHY_D7", 0x1d6,
332 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLDOWN)
333
334/* TLL - HSUSB: 12-pin TLL Port 1*/
335MUX_CFG_34XX("Y8_3430_USB1HS_TLL_CLK", 0x5da,
336 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
337MUX_CFG_34XX("Y9_3430_USB1HS_TLL_STP", 0x5d8,
338 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLUP)
339MUX_CFG_34XX("AA14_3430_USB1HS_TLL_DIR", 0x5ec,
340 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
341MUX_CFG_34XX("AA11_3430_USB1HS_TLL_NXT", 0x5ee,
342 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
343MUX_CFG_34XX("W13_3430_USB1HS_TLL_D0", 0x5dc,
344 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
345MUX_CFG_34XX("W12_3430_USB1HS_TLL_D1", 0x5de,
346 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
347MUX_CFG_34XX("W11_3430_USB1HS_TLL_D2", 0x5e0,
348 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
349MUX_CFG_34XX("Y11_3430_USB1HS_TLL_D3", 0x5ea,
350 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
351MUX_CFG_34XX("W9_3430_USB1HS_TLL_D4", 0x5e4,
352 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
353MUX_CFG_34XX("Y12_3430_USB1HS_TLL_D5", 0x5e6,
354 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
355MUX_CFG_34XX("W8_3430_USB1HS_TLL_D6", 0x5e8,
356 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
357MUX_CFG_34XX("Y13_3430_USB1HS_TLL_D7", 0x5e2,
358 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
359
360/* TLL - HSUSB: 12-pin TLL Port 2*/
361MUX_CFG_34XX("AA8_3430_USB2HS_TLL_CLK", 0x5f0,
362 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
363MUX_CFG_34XX("AA10_3430_USB2HS_TLL_STP", 0x5f2,
364 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLUP)
365MUX_CFG_34XX("AA9_3430_USB2HS_TLL_DIR", 0x5f4,
366 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
367MUX_CFG_34XX("AB11_3430_USB2HS_TLL_NXT", 0x5f6,
368 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
369MUX_CFG_34XX("AB10_3430_USB2HS_TLL_D0", 0x5f8,
370 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
371MUX_CFG_34XX("AB9_3430_USB2HS_TLL_D1", 0x5fa,
372 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
373MUX_CFG_34XX("W3_3430_USB2HS_TLL_D2", 0x1d4,
374 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
375MUX_CFG_34XX("T4_3430_USB2HS_TLL_D3", 0x1de,
376 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
377MUX_CFG_34XX("T3_3430_USB2HS_TLL_D4", 0x1d8,
378 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
379MUX_CFG_34XX("R3_3430_USB2HS_TLL_D5", 0x1da,
380 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
381MUX_CFG_34XX("R4_3430_USB2HS_TLL_D6", 0x1dc,
382 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
383MUX_CFG_34XX("T2_3430_USB2HS_TLL_D7", 0x1d6,
384 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLDOWN)
385
386/* TLL - HSUSB: 12-pin TLL Port 3*/
387MUX_CFG_34XX("AA6_3430_USB3HS_TLL_CLK", 0x180,
388 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
389MUX_CFG_34XX("AB3_3430_USB3HS_TLL_STP", 0x166,
390 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLUP)
391MUX_CFG_34XX("AA3_3430_USB3HS_TLL_DIR", 0x168,
392 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
393MUX_CFG_34XX("Y3_3430_USB3HS_TLL_NXT", 0x16a,
394 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
395MUX_CFG_34XX("AA5_3430_USB3HS_TLL_D0", 0x186,
396 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
397MUX_CFG_34XX("Y4_3430_USB3HS_TLL_D1", 0x184,
398 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
399MUX_CFG_34XX("Y5_3430_USB3HS_TLL_D2", 0x188,
400 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
401MUX_CFG_34XX("W5_3430_USB3HS_TLL_D3", 0x18a,
402 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
403MUX_CFG_34XX("AB12_3430_USB3HS_TLL_D4", 0x16c,
404 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
405MUX_CFG_34XX("AB13_3430_USB3HS_TLL_D5", 0x16e,
406 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
407MUX_CFG_34XX("AA13_3430_USB3HS_TLL_D6", 0x170,
408 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
409MUX_CFG_34XX("AA12_3430_USB3HS_TLL_D7", 0x172,
410 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
411
412/* PHY FSUSB: FS Serial for Port 1 (multiple PHY modes supported) */
413MUX_CFG_34XX("AF10_3430_USB1FS_PHY_MM1_RXDP", 0x5d8,
414 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
415MUX_CFG_34XX("AG9_3430_USB1FS_PHY_MM1_RXDM", 0x5ee,
416 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
417MUX_CFG_34XX("W13_3430_USB1FS_PHY_MM1_RXRCV", 0x5dc,
418 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
419MUX_CFG_34XX("W12_3430_USB1FS_PHY_MM1_TXSE0", 0x5de,
420 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
421MUX_CFG_34XX("W11_3430_USB1FS_PHY_MM1_TXDAT", 0x5e0,
422 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
423MUX_CFG_34XX("Y11_3430_USB1FS_PHY_MM1_TXEN_N", 0x5ea,
424 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_OUTPUT)
425
426/* PHY FSUSB: FS Serial for Port 2 (multiple PHY modes supported) */
427MUX_CFG_34XX("AF7_3430_USB2FS_PHY_MM2_RXDP", 0x5f2,
428 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
429MUX_CFG_34XX("AH7_3430_USB2FS_PHY_MM2_RXDM", 0x5f6,
430 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
431MUX_CFG_34XX("AB10_3430_USB2FS_PHY_MM2_RXRCV", 0x5f8,
432 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
433MUX_CFG_34XX("AB9_3430_USB2FS_PHY_MM2_TXSE0", 0x5fa,
434 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
435MUX_CFG_34XX("W3_3430_USB2FS_PHY_MM2_TXDAT", 0x1d4,
436 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_INPUT_PULLDOWN)
437MUX_CFG_34XX("T4_3430_USB2FS_PHY_MM2_TXEN_N", 0x1de,
438 OMAP34XX_MUX_MODE5 | OMAP34XX_PIN_OUTPUT)
439
440/* PHY FSUSB: FS Serial for Port 3 (multiple PHY modes supported) */
441MUX_CFG_34XX("AH3_3430_USB3FS_PHY_MM3_RXDP", 0x166,
442 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
443MUX_CFG_34XX("AE3_3430_USB3FS_PHY_MM3_RXDM", 0x16a,
444 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
445MUX_CFG_34XX("AD1_3430_USB3FS_PHY_MM3_RXRCV", 0x186,
446 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
447MUX_CFG_34XX("AE1_3430_USB3FS_PHY_MM3_TXSE0", 0x184,
448 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
449MUX_CFG_34XX("AD2_3430_USB3FS_PHY_MM3_TXDAT", 0x188,
450 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_INPUT_PULLDOWN)
451MUX_CFG_34XX("AC1_3430_USB3FS_PHY_MM3_TXEN_N", 0x18a,
452 OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_OUTPUT)
453
454
455/* 34XX GPIO - bidirectional, unless the name has an "_OUT" suffix.
456 * (Always specify PIN_INPUT, except for names suffixed by "_OUT".)
457 * No internal pullup/pulldown without "_UP" or "_DOWN" suffix.
458 */
459MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
460 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
461MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
462 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
463MUX_CFG_34XX("AG9_34XX_GPIO23", 0x5ee,
464 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
465MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
466 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
467MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,
468 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
469MUX_CFG_34XX("U8_34XX_GPIO54_DOWN", 0x0b4,
470 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLDOWN)
471MUX_CFG_34XX("L8_34XX_GPIO63", 0x0ce,
472 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
473MUX_CFG_34XX("G25_34XX_GPIO86_OUT", 0x0fc,
474 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
475MUX_CFG_34XX("AG4_34XX_GPIO134_OUT", 0x160,
476 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
477MUX_CFG_34XX("AF4_34XX_GPIO135_OUT", 0x162,
478 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
479MUX_CFG_34XX("AE4_34XX_GPIO136_OUT", 0x164,
480 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
481MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
482 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
483MUX_CFG_34XX("AE6_34XX_GPIO141", 0x16e,
484 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
485MUX_CFG_34XX("AF5_34XX_GPIO142", 0x170,
486 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
487MUX_CFG_34XX("AE5_34XX_GPIO143", 0x172,
488 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
489MUX_CFG_34XX("H19_34XX_GPIO164_OUT", 0x19c,
490 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
491MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6,
492 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
493
494/* OMAP3 SDRC CKE signals to SDR/DDR ram chips */
495MUX_CFG_34XX("H16_34XX_SDRC_CKE0", 0x262,
496 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
497MUX_CFG_34XX("H17_34XX_SDRC_CKE1", 0x264,
498 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
499
500/* MMC1 */
501MUX_CFG_34XX("N28_3430_MMC1_CLK", 0x144,
502 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
503MUX_CFG_34XX("M27_3430_MMC1_CMD", 0x146,
504 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
505MUX_CFG_34XX("N27_3430_MMC1_DAT0", 0x148,
506 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
507MUX_CFG_34XX("N26_3430_MMC1_DAT1", 0x14a,
508 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
509MUX_CFG_34XX("N25_3430_MMC1_DAT2", 0x14c,
510 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
511MUX_CFG_34XX("P28_3430_MMC1_DAT3", 0x14e,
512 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
513MUX_CFG_34XX("P27_3430_MMC1_DAT4", 0x150,
514 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
515MUX_CFG_34XX("P26_3430_MMC1_DAT5", 0x152,
516 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
517MUX_CFG_34XX("R27_3430_MMC1_DAT6", 0x154,
518 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
519MUX_CFG_34XX("R25_3430_MMC1_DAT7", 0x156,
520 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
521
522/* MMC2 */
523MUX_CFG_34XX("AE2_3430_MMC2_CLK", 0x158,
524 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
525MUX_CFG_34XX("AG5_3430_MMC2_CMD", 0x15A,
526 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
527MUX_CFG_34XX("AH5_3430_MMC2_DAT0", 0x15c,
528 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
529MUX_CFG_34XX("AH4_3430_MMC2_DAT1", 0x15e,
530 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
531MUX_CFG_34XX("AG4_3430_MMC2_DAT2", 0x160,
532 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
533MUX_CFG_34XX("AF4_3430_MMC2_DAT3", 0x162,
534 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
535MUX_CFG_34XX("AE4_3430_MMC2_DAT4", 0x164,
536 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
537MUX_CFG_34XX("AH3_3430_MMC2_DAT5", 0x166,
538 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
539MUX_CFG_34XX("AF3_3430_MMC2_DAT6", 0x168,
540 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
541MUX_CFG_34XX("AE3_3430_MMC2_DAT7", 0x16A,
542 OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
543
544/* MMC3 */
545MUX_CFG_34XX("AF10_3430_MMC3_CLK", 0x5d8,
546 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLUP)
547MUX_CFG_34XX("AC3_3430_MMC3_CMD", 0x1d0,
548 OMAP34XX_MUX_MODE3 | OMAP34XX_PIN_INPUT_PULLUP)
549MUX_CFG_34XX("AE11_3430_MMC3_DAT0", 0x5e4,
550 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLUP)
551MUX_CFG_34XX("AH9_3430_MMC3_DAT1", 0x5e6,
552 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLUP)
553MUX_CFG_34XX("AF13_3430_MMC3_DAT2", 0x5e8,
554 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLUP)
555MUX_CFG_34XX("AF13_3430_MMC3_DAT3", 0x5e2,
556 OMAP34XX_MUX_MODE2 | OMAP34XX_PIN_INPUT_PULLUP)
557
558/* SYS_NIRQ T2 INT1 */
559MUX_CFG_34XX("AF26_34XX_SYS_NIRQ", 0x1E0,
560 OMAP3_WAKEUP_EN | OMAP34XX_PIN_INPUT_PULLUP |
561 OMAP34XX_MUX_MODE0)
562/* EHCI GPIO's on OMAP3EVM (Rev >= E) */
563MUX_CFG_34XX("AH14_34XX_GPIO21", 0x5ea,
564 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
565MUX_CFG_34XX("AF9_34XX_GPIO22", 0x5ec,
566 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
567MUX_CFG_34XX("U3_34XX_GPIO61", 0x0c8,
568 OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
569};
570
571#define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins)
572
573#else
574#define omap34xx_pins NULL
575#define OMAP34XX_PINS_SZ 0
576#endif /* CONFIG_ARCH_OMAP34XX */
577
578#if defined(CONFIG_OMAP_MUX_DEBUG) || defined(CONFIG_OMAP_MUX_WARNINGS) 285#if defined(CONFIG_OMAP_MUX_DEBUG) || defined(CONFIG_OMAP_MUX_WARNINGS)
286
579static void __init_or_module omap2_cfg_debug(const struct pin_config *cfg, u16 reg) 287static void __init_or_module omap2_cfg_debug(const struct pin_config *cfg, u16 reg)
580{ 288{
581 u16 orig; 289 u16 orig;
582 u8 warn = 0, debug = 0; 290 u8 warn = 0, debug = 0;
583 291
584 if (cpu_is_omap24xx()) 292 orig = omap_mux_read(cfg->mux_reg - OMAP_MUX_BASE_OFFSET);
585 orig = omap_ctrl_readb(cfg->mux_reg);
586 else
587 orig = omap_ctrl_readw(cfg->mux_reg);
588 293
589#ifdef CONFIG_OMAP_MUX_DEBUG 294#ifdef CONFIG_OMAP_MUX_DEBUG
590 debug = cfg->debug; 295 debug = cfg->debug;
@@ -600,7 +305,6 @@ static void __init_or_module omap2_cfg_debug(const struct pin_config *cfg, u16 r
600#define omap2_cfg_debug(x, y) do {} while (0) 305#define omap2_cfg_debug(x, y) do {} while (0)
601#endif 306#endif
602 307
603#ifdef CONFIG_ARCH_OMAP24XX
604static int __init_or_module omap24xx_cfg_reg(const struct pin_config *cfg) 308static int __init_or_module omap24xx_cfg_reg(const struct pin_config *cfg)
605{ 309{
606 static DEFINE_SPINLOCK(mux_spin_lock); 310 static DEFINE_SPINLOCK(mux_spin_lock);
@@ -614,47 +318,692 @@ static int __init_or_module omap24xx_cfg_reg(const struct pin_config *cfg)
614 if (cfg->pu_pd_val) 318 if (cfg->pu_pd_val)
615 reg |= OMAP2_PULL_UP; 319 reg |= OMAP2_PULL_UP;
616 omap2_cfg_debug(cfg, reg); 320 omap2_cfg_debug(cfg, reg);
617 omap_ctrl_writeb(reg, cfg->mux_reg); 321 omap_mux_write(reg, cfg->mux_reg - OMAP_MUX_BASE_OFFSET);
618 spin_unlock_irqrestore(&mux_spin_lock, flags); 322 spin_unlock_irqrestore(&mux_spin_lock, flags);
619 323
620 return 0; 324 return 0;
621} 325}
326
327int __init omap2_mux_init(void)
328{
329 u32 mux_pbase;
330
331 if (cpu_is_omap2420())
332 mux_pbase = OMAP2420_CTRL_BASE + OMAP_MUX_BASE_OFFSET;
333 else if (cpu_is_omap2430())
334 mux_pbase = OMAP243X_CTRL_BASE + OMAP_MUX_BASE_OFFSET;
335 else
336 return -ENODEV;
337
338 mux_base = ioremap(mux_pbase, OMAP_MUX_BASE_SZ);
339 if (!mux_base) {
340 printk(KERN_ERR "mux: Could not ioremap\n");
341 return -ENODEV;
342 }
343
344 if (cpu_is_omap24xx()) {
345 arch_mux_cfg.pins = omap24xx_pins;
346 arch_mux_cfg.size = OMAP24XX_PINS_SZ;
347 arch_mux_cfg.cfg_reg = omap24xx_cfg_reg;
348
349 return omap_mux_register(&arch_mux_cfg);
350 }
351
352 return 0;
353}
354
622#else 355#else
623#define omap24xx_cfg_reg NULL 356int __init omap2_mux_init(void)
624#endif 357{
358 return 0;
359}
360#endif /* CONFIG_OMAP_MUX */
361
362/*----------------------------------------------------------------------------*/
625 363
626#ifdef CONFIG_ARCH_OMAP34XX 364#ifdef CONFIG_ARCH_OMAP34XX
627static int __init_or_module omap34xx_cfg_reg(const struct pin_config *cfg) 365static LIST_HEAD(muxmodes);
366static DEFINE_MUTEX(muxmode_mutex);
367
368#ifdef CONFIG_OMAP_MUX
369
370static char *omap_mux_options;
371
372int __init omap_mux_init_gpio(int gpio, int val)
628{ 373{
629 static DEFINE_SPINLOCK(mux_spin_lock); 374 struct omap_mux_entry *e;
630 unsigned long flags; 375 int found = 0;
631 u16 reg = 0; 376
377 if (!gpio)
378 return -EINVAL;
379
380 list_for_each_entry(e, &muxmodes, node) {
381 struct omap_mux *m = &e->mux;
382 if (gpio == m->gpio) {
383 u16 old_mode;
384 u16 mux_mode;
385
386 old_mode = omap_mux_read(m->reg_offset);
387 mux_mode = val & ~(OMAP_MUX_NR_MODES - 1);
388 mux_mode |= OMAP_MUX_MODE4;
389 printk(KERN_DEBUG "mux: Setting signal "
390 "%s.gpio%i 0x%04x -> 0x%04x\n",
391 m->muxnames[0], gpio, old_mode, mux_mode);
392 omap_mux_write(mux_mode, m->reg_offset);
393 found++;
394 }
395 }
632 396
633 spin_lock_irqsave(&mux_spin_lock, flags); 397 if (found == 1)
634 reg |= cfg->mux_val; 398 return 0;
635 omap2_cfg_debug(cfg, reg); 399
636 omap_ctrl_writew(reg, cfg->mux_reg); 400 if (found > 1) {
637 spin_unlock_irqrestore(&mux_spin_lock, flags); 401 printk(KERN_ERR "mux: Multiple gpio paths for gpio%i\n", gpio);
402 return -EINVAL;
403 }
404
405 printk(KERN_ERR "mux: Could not set gpio%i\n", gpio);
406
407 return -ENODEV;
408}
409
410int __init omap_mux_init_signal(char *muxname, int val)
411{
412 struct omap_mux_entry *e;
413 char *m0_name = NULL, *mode_name = NULL;
414 int found = 0;
415
416 mode_name = strchr(muxname, '.');
417 if (mode_name) {
418 *mode_name = '\0';
419 mode_name++;
420 m0_name = muxname;
421 } else {
422 mode_name = muxname;
423 }
424
425 list_for_each_entry(e, &muxmodes, node) {
426 struct omap_mux *m = &e->mux;
427 char *m0_entry = m->muxnames[0];
428 int i;
429
430 if (m0_name && strcmp(m0_name, m0_entry))
431 continue;
432
433 for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
434 char *mode_cur = m->muxnames[i];
435
436 if (!mode_cur)
437 continue;
438
439 if (!strcmp(mode_name, mode_cur)) {
440 u16 old_mode;
441 u16 mux_mode;
442
443 old_mode = omap_mux_read(m->reg_offset);
444 mux_mode = val | i;
445 printk(KERN_DEBUG "mux: Setting signal "
446 "%s.%s 0x%04x -> 0x%04x\n",
447 m0_entry, muxname, old_mode, mux_mode);
448 omap_mux_write(mux_mode, m->reg_offset);
449 found++;
450 }
451 }
452 }
453
454 if (found == 1)
455 return 0;
456
457 if (found > 1) {
458 printk(KERN_ERR "mux: Multiple signal paths (%i) for %s\n",
459 found, muxname);
460 return -EINVAL;
461 }
462
463 printk(KERN_ERR "mux: Could not set signal %s\n", muxname);
464
465 return -ENODEV;
466}
467
468#ifdef CONFIG_DEBUG_FS
469
470#define OMAP_MUX_MAX_NR_FLAGS 10
471#define OMAP_MUX_TEST_FLAG(val, mask) \
472 if (((val) & (mask)) == (mask)) { \
473 i++; \
474 flags[i] = #mask; \
475 }
476
477/* REVISIT: Add checking for non-optimal mux settings */
478static inline void omap_mux_decode(struct seq_file *s, u16 val)
479{
480 char *flags[OMAP_MUX_MAX_NR_FLAGS];
481 char mode[14];
482 int i = -1;
483
484 sprintf(mode, "OMAP_MUX_MODE%d", val & 0x7);
485 i++;
486 flags[i] = mode;
487
488 OMAP_MUX_TEST_FLAG(val, OMAP_PIN_OFF_WAKEUPENABLE);
489 if (val & OMAP_OFF_EN) {
490 if (!(val & OMAP_OFFOUT_EN)) {
491 if (!(val & OMAP_OFF_PULL_UP)) {
492 OMAP_MUX_TEST_FLAG(val,
493 OMAP_PIN_OFF_INPUT_PULLDOWN);
494 } else {
495 OMAP_MUX_TEST_FLAG(val,
496 OMAP_PIN_OFF_INPUT_PULLUP);
497 }
498 } else {
499 if (!(val & OMAP_OFFOUT_VAL)) {
500 OMAP_MUX_TEST_FLAG(val,
501 OMAP_PIN_OFF_OUTPUT_LOW);
502 } else {
503 OMAP_MUX_TEST_FLAG(val,
504 OMAP_PIN_OFF_OUTPUT_HIGH);
505 }
506 }
507 }
508
509 if (val & OMAP_INPUT_EN) {
510 if (val & OMAP_PULL_ENA) {
511 if (!(val & OMAP_PULL_UP)) {
512 OMAP_MUX_TEST_FLAG(val,
513 OMAP_PIN_INPUT_PULLDOWN);
514 } else {
515 OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT_PULLUP);
516 }
517 } else {
518 OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT);
519 }
520 } else {
521 i++;
522 flags[i] = "OMAP_PIN_OUTPUT";
523 }
524
525 do {
526 seq_printf(s, "%s", flags[i]);
527 if (i > 0)
528 seq_printf(s, " | ");
529 } while (i-- > 0);
530}
531
532#define OMAP_MUX_DEFNAME_LEN 16
533
534static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
535{
536 struct omap_mux_entry *e;
537
538 list_for_each_entry(e, &muxmodes, node) {
539 struct omap_mux *m = &e->mux;
540 char m0_def[OMAP_MUX_DEFNAME_LEN];
541 char *m0_name = m->muxnames[0];
542 u16 val;
543 int i, mode;
544
545 if (!m0_name)
546 continue;
547
548 for (i = 0; i < OMAP_MUX_DEFNAME_LEN; i++) {
549 if (m0_name[i] == '\0') {
550 m0_def[i] = m0_name[i];
551 break;
552 }
553 m0_def[i] = toupper(m0_name[i]);
554 }
555 val = omap_mux_read(m->reg_offset);
556 mode = val & OMAP_MUX_MODE7;
557
558 seq_printf(s, "OMAP%i_MUX(%s, ",
559 cpu_is_omap34xx() ? 3 : 0, m0_def);
560 omap_mux_decode(s, val);
561 seq_printf(s, "),\n");
562 }
563
564 return 0;
565}
566
567static int omap_mux_dbg_board_open(struct inode *inode, struct file *file)
568{
569 return single_open(file, omap_mux_dbg_board_show, &inode->i_private);
570}
571
572static const struct file_operations omap_mux_dbg_board_fops = {
573 .open = omap_mux_dbg_board_open,
574 .read = seq_read,
575 .llseek = seq_lseek,
576 .release = single_release,
577};
578
579static int omap_mux_dbg_signal_show(struct seq_file *s, void *unused)
580{
581 struct omap_mux *m = s->private;
582 const char *none = "NA";
583 u16 val;
584 int mode;
585
586 val = omap_mux_read(m->reg_offset);
587 mode = val & OMAP_MUX_MODE7;
588
589 seq_printf(s, "name: %s.%s (0x%08lx/0x%03x = 0x%04x), b %s, t %s\n",
590 m->muxnames[0], m->muxnames[mode],
591 mux_phys + m->reg_offset, m->reg_offset, val,
592 m->balls[0] ? m->balls[0] : none,
593 m->balls[1] ? m->balls[1] : none);
594 seq_printf(s, "mode: ");
595 omap_mux_decode(s, val);
596 seq_printf(s, "\n");
597 seq_printf(s, "signals: %s | %s | %s | %s | %s | %s | %s | %s\n",
598 m->muxnames[0] ? m->muxnames[0] : none,
599 m->muxnames[1] ? m->muxnames[1] : none,
600 m->muxnames[2] ? m->muxnames[2] : none,
601 m->muxnames[3] ? m->muxnames[3] : none,
602 m->muxnames[4] ? m->muxnames[4] : none,
603 m->muxnames[5] ? m->muxnames[5] : none,
604 m->muxnames[6] ? m->muxnames[6] : none,
605 m->muxnames[7] ? m->muxnames[7] : none);
638 606
639 return 0; 607 return 0;
640} 608}
609
610#define OMAP_MUX_MAX_ARG_CHAR 7
611
612static ssize_t omap_mux_dbg_signal_write(struct file *file,
613 const char __user *user_buf,
614 size_t count, loff_t *ppos)
615{
616 char buf[OMAP_MUX_MAX_ARG_CHAR];
617 struct seq_file *seqf;
618 struct omap_mux *m;
619 unsigned long val;
620 int buf_size, ret;
621
622 if (count > OMAP_MUX_MAX_ARG_CHAR)
623 return -EINVAL;
624
625 memset(buf, 0, sizeof(buf));
626 buf_size = min(count, sizeof(buf) - 1);
627
628 if (copy_from_user(buf, user_buf, buf_size))
629 return -EFAULT;
630
631 ret = strict_strtoul(buf, 0x10, &val);
632 if (ret < 0)
633 return ret;
634
635 if (val > 0xffff)
636 return -EINVAL;
637
638 seqf = file->private_data;
639 m = seqf->private;
640
641 omap_mux_write((u16)val, m->reg_offset);
642 *ppos += count;
643
644 return count;
645}
646
647static int omap_mux_dbg_signal_open(struct inode *inode, struct file *file)
648{
649 return single_open(file, omap_mux_dbg_signal_show, inode->i_private);
650}
651
652static const struct file_operations omap_mux_dbg_signal_fops = {
653 .open = omap_mux_dbg_signal_open,
654 .read = seq_read,
655 .write = omap_mux_dbg_signal_write,
656 .llseek = seq_lseek,
657 .release = single_release,
658};
659
660static struct dentry *mux_dbg_dir;
661
662static void __init omap_mux_dbg_init(void)
663{
664 struct omap_mux_entry *e;
665
666 mux_dbg_dir = debugfs_create_dir("omap_mux", NULL);
667 if (!mux_dbg_dir)
668 return;
669
670 (void)debugfs_create_file("board", S_IRUGO, mux_dbg_dir,
671 NULL, &omap_mux_dbg_board_fops);
672
673 list_for_each_entry(e, &muxmodes, node) {
674 struct omap_mux *m = &e->mux;
675
676 (void)debugfs_create_file(m->muxnames[0], S_IWUGO, mux_dbg_dir,
677 m, &omap_mux_dbg_signal_fops);
678 }
679}
680
641#else 681#else
642#define omap34xx_cfg_reg NULL 682static inline void omap_mux_dbg_init(void)
683{
684}
685#endif /* CONFIG_DEBUG_FS */
686
687static void __init omap_mux_free_names(struct omap_mux *m)
688{
689 int i;
690
691 for (i = 0; i < OMAP_MUX_NR_MODES; i++)
692 kfree(m->muxnames[i]);
693
694#ifdef CONFIG_DEBUG_FS
695 for (i = 0; i < OMAP_MUX_NR_SIDES; i++)
696 kfree(m->balls[i]);
643#endif 697#endif
644 698
645int __init omap2_mux_init(void) 699}
700
701/* Free all data except for GPIO pins unless CONFIG_DEBUG_FS is set */
702static int __init omap_mux_late_init(void)
646{ 703{
647 if (cpu_is_omap24xx()) { 704 struct omap_mux_entry *e, *tmp;
648 arch_mux_cfg.pins = omap24xx_pins; 705
649 arch_mux_cfg.size = OMAP24XX_PINS_SZ; 706 list_for_each_entry_safe(e, tmp, &muxmodes, node) {
650 arch_mux_cfg.cfg_reg = omap24xx_cfg_reg; 707 struct omap_mux *m = &e->mux;
651 } else if (cpu_is_omap34xx()) { 708 u16 mode = omap_mux_read(m->reg_offset);
652 arch_mux_cfg.pins = omap34xx_pins; 709
653 arch_mux_cfg.size = OMAP34XX_PINS_SZ; 710 if (OMAP_MODE_GPIO(mode))
654 arch_mux_cfg.cfg_reg = omap34xx_cfg_reg; 711 continue;
712
713#ifndef CONFIG_DEBUG_FS
714 mutex_lock(&muxmode_mutex);
715 list_del(&e->node);
716 mutex_unlock(&muxmode_mutex);
717 omap_mux_free_names(m);
718 kfree(m);
719#endif
720
721 }
722
723 omap_mux_dbg_init();
724
725 return 0;
726}
727late_initcall(omap_mux_late_init);
728
729static void __init omap_mux_package_fixup(struct omap_mux *p,
730 struct omap_mux *superset)
731{
732 while (p->reg_offset != OMAP_MUX_TERMINATOR) {
733 struct omap_mux *s = superset;
734 int found = 0;
735
736 while (s->reg_offset != OMAP_MUX_TERMINATOR) {
737 if (s->reg_offset == p->reg_offset) {
738 *s = *p;
739 found++;
740 break;
741 }
742 s++;
743 }
744 if (!found)
745 printk(KERN_ERR "mux: Unknown entry offset 0x%x\n",
746 p->reg_offset);
747 p++;
748 }
749}
750
751#ifdef CONFIG_DEBUG_FS
752
753static void __init omap_mux_package_init_balls(struct omap_ball *b,
754 struct omap_mux *superset)
755{
756 while (b->reg_offset != OMAP_MUX_TERMINATOR) {
757 struct omap_mux *s = superset;
758 int found = 0;
759
760 while (s->reg_offset != OMAP_MUX_TERMINATOR) {
761 if (s->reg_offset == b->reg_offset) {
762 s->balls[0] = b->balls[0];
763 s->balls[1] = b->balls[1];
764 found++;
765 break;
766 }
767 s++;
768 }
769 if (!found)
770 printk(KERN_ERR "mux: Unknown ball offset 0x%x\n",
771 b->reg_offset);
772 b++;
773 }
774}
775
776#else /* CONFIG_DEBUG_FS */
777
778static inline void omap_mux_package_init_balls(struct omap_ball *b,
779 struct omap_mux *superset)
780{
781}
782
783#endif /* CONFIG_DEBUG_FS */
784
785static int __init omap_mux_setup(char *options)
786{
787 if (!options)
788 return 0;
789
790 omap_mux_options = options;
791
792 return 1;
793}
794__setup("omap_mux=", omap_mux_setup);
795
796/*
797 * Note that the omap_mux=some.signal1=0x1234,some.signal2=0x1234
798 * cmdline options only override the bootloader values.
799 * During development, please enable CONFIG_DEBUG_FS, and use the
800 * signal specific entries under debugfs.
801 */
802static void __init omap_mux_set_cmdline_signals(void)
803{
804 char *options, *next_opt, *token;
805
806 if (!omap_mux_options)
807 return;
808
809 options = kmalloc(strlen(omap_mux_options) + 1, GFP_KERNEL);
810 if (!options)
811 return;
812
813 strcpy(options, omap_mux_options);
814 next_opt = options;
815
816 while ((token = strsep(&next_opt, ",")) != NULL) {
817 char *keyval, *name;
818 unsigned long val;
819
820 keyval = token;
821 name = strsep(&keyval, "=");
822 if (name) {
823 int res;
824
825 res = strict_strtoul(keyval, 0x10, &val);
826 if (res < 0)
827 continue;
828
829 omap_mux_init_signal(name, (u16)val);
830 }
831 }
832
833 kfree(options);
834}
835
836static void __init omap_mux_set_board_signals(struct omap_board_mux *board_mux)
837{
838 while (board_mux->reg_offset != OMAP_MUX_TERMINATOR) {
839 omap_mux_write(board_mux->value, board_mux->reg_offset);
840 board_mux++;
841 }
842}
843
844static int __init omap_mux_copy_names(struct omap_mux *src,
845 struct omap_mux *dst)
846{
847 int i;
848
849 for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
850 if (src->muxnames[i]) {
851 dst->muxnames[i] =
852 kmalloc(strlen(src->muxnames[i]) + 1,
853 GFP_KERNEL);
854 if (!dst->muxnames[i])
855 goto free;
856 strcpy(dst->muxnames[i], src->muxnames[i]);
857 }
858 }
859
860#ifdef CONFIG_DEBUG_FS
861 for (i = 0; i < OMAP_MUX_NR_SIDES; i++) {
862 if (src->balls[i]) {
863 dst->balls[i] =
864 kmalloc(strlen(src->balls[i]) + 1,
865 GFP_KERNEL);
866 if (!dst->balls[i])
867 goto free;
868 strcpy(dst->balls[i], src->balls[i]);
869 }
870 }
871#endif
872
873 return 0;
874
875free:
876 omap_mux_free_names(dst);
877 return -ENOMEM;
878
879}
880
881#endif /* CONFIG_OMAP_MUX */
882
883static u16 omap_mux_get_by_gpio(int gpio)
884{
885 struct omap_mux_entry *e;
886 u16 offset = OMAP_MUX_TERMINATOR;
887
888 list_for_each_entry(e, &muxmodes, node) {
889 struct omap_mux *m = &e->mux;
890 if (m->gpio == gpio) {
891 offset = m->reg_offset;
892 break;
893 }
894 }
895
896 return offset;
897}
898
899/* Needed for dynamic muxing of GPIO pins for off-idle */
900u16 omap_mux_get_gpio(int gpio)
901{
902 u16 offset;
903
904 offset = omap_mux_get_by_gpio(gpio);
905 if (offset == OMAP_MUX_TERMINATOR) {
906 printk(KERN_ERR "mux: Could not get gpio%i\n", gpio);
907 return offset;
908 }
909
910 return omap_mux_read(offset);
911}
912
913/* Needed for dynamic muxing of GPIO pins for off-idle */
914void omap_mux_set_gpio(u16 val, int gpio)
915{
916 u16 offset;
917
918 offset = omap_mux_get_by_gpio(gpio);
919 if (offset == OMAP_MUX_TERMINATOR) {
920 printk(KERN_ERR "mux: Could not set gpio%i\n", gpio);
921 return;
922 }
923
924 omap_mux_write(val, offset);
925}
926
927static struct omap_mux * __init omap_mux_list_add(struct omap_mux *src)
928{
929 struct omap_mux_entry *entry;
930 struct omap_mux *m;
931
932 entry = kzalloc(sizeof(struct omap_mux_entry), GFP_KERNEL);
933 if (!entry)
934 return NULL;
935
936 m = &entry->mux;
937 memcpy(m, src, sizeof(struct omap_mux_entry));
938
939#ifdef CONFIG_OMAP_MUX
940 if (omap_mux_copy_names(src, m)) {
941 kfree(entry);
942 return NULL;
655 } 943 }
944#endif
945
946 mutex_lock(&muxmode_mutex);
947 list_add_tail(&entry->node, &muxmodes);
948 mutex_unlock(&muxmode_mutex);
656 949
657 return omap_mux_register(&arch_mux_cfg); 950 return m;
658} 951}
659 952
953/*
954 * Note if CONFIG_OMAP_MUX is not selected, we will only initialize
955 * the GPIO to mux offset mapping that is needed for dynamic muxing
956 * of GPIO pins for off-idle.
957 */
958static void __init omap_mux_init_list(struct omap_mux *superset)
959{
960 while (superset->reg_offset != OMAP_MUX_TERMINATOR) {
961 struct omap_mux *entry;
962
963#ifndef CONFIG_OMAP_MUX
964 /* Skip pins that are not muxed as GPIO by bootloader */
965 if (!OMAP_MODE_GPIO(omap_mux_read(superset->reg_offset))) {
966 superset++;
967 continue;
968 }
660#endif 969#endif
970
971 entry = omap_mux_list_add(superset);
972 if (!entry) {
973 printk(KERN_ERR "mux: Could not add entry\n");
974 return;
975 }
976 superset++;
977 }
978}
979
980int __init omap_mux_init(u32 mux_pbase, u32 mux_size,
981 struct omap_mux *superset,
982 struct omap_mux *package_subset,
983 struct omap_board_mux *board_mux,
984 struct omap_ball *package_balls)
985{
986 if (mux_base)
987 return -EBUSY;
988
989 mux_phys = mux_pbase;
990 mux_base = ioremap(mux_pbase, mux_size);
991 if (!mux_base) {
992 printk(KERN_ERR "mux: Could not ioremap\n");
993 return -ENODEV;
994 }
995
996#ifdef CONFIG_OMAP_MUX
997 omap_mux_package_fixup(package_subset, superset);
998 omap_mux_package_init_balls(package_balls, superset);
999 omap_mux_set_cmdline_signals();
1000 omap_mux_set_board_signals(board_mux);
1001#endif
1002
1003 omap_mux_init_list(superset);
1004
1005 return 0;
1006}
1007
1008#endif /* CONFIG_ARCH_OMAP34XX */
1009
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h
new file mode 100644
index 000000000000..d8b4d5ad2278
--- /dev/null
+++ b/arch/arm/mach-omap2/mux.h
@@ -0,0 +1,163 @@
1/*
2 * Copyright (C) 2009 Nokia
3 * Copyright (C) 2009 Texas Instruments
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#include "mux34xx.h"
11
12#define OMAP_MUX_TERMINATOR 0xffff
13
14/* 34xx mux mode options for each pin. See TRM for options */
15#define OMAP_MUX_MODE0 0
16#define OMAP_MUX_MODE1 1
17#define OMAP_MUX_MODE2 2
18#define OMAP_MUX_MODE3 3
19#define OMAP_MUX_MODE4 4
20#define OMAP_MUX_MODE5 5
21#define OMAP_MUX_MODE6 6
22#define OMAP_MUX_MODE7 7
23
24/* 24xx/34xx mux bit defines */
25#define OMAP_PULL_ENA (1 << 3)
26#define OMAP_PULL_UP (1 << 4)
27#define OMAP_ALTELECTRICALSEL (1 << 5)
28
29/* 34xx specific mux bit defines */
30#define OMAP_INPUT_EN (1 << 8)
31#define OMAP_OFF_EN (1 << 9)
32#define OMAP_OFFOUT_EN (1 << 10)
33#define OMAP_OFFOUT_VAL (1 << 11)
34#define OMAP_OFF_PULL_EN (1 << 12)
35#define OMAP_OFF_PULL_UP (1 << 13)
36#define OMAP_WAKEUP_EN (1 << 14)
37
38/* Active pin states */
39#define OMAP_PIN_OUTPUT 0
40#define OMAP_PIN_INPUT OMAP_INPUT_EN
41#define OMAP_PIN_INPUT_PULLUP (OMAP_PULL_ENA | OMAP_INPUT_EN \
42 | OMAP_PULL_UP)
43#define OMAP_PIN_INPUT_PULLDOWN (OMAP_PULL_ENA | OMAP_INPUT_EN)
44
45/* Off mode states */
46#define OMAP_PIN_OFF_NONE 0
47#define OMAP_PIN_OFF_OUTPUT_HIGH (OMAP_OFF_EN | OMAP_OFFOUT_EN \
48 | OMAP_OFFOUT_VAL)
49#define OMAP_PIN_OFF_OUTPUT_LOW (OMAP_OFF_EN | OMAP_OFFOUT_EN)
50#define OMAP_PIN_OFF_INPUT_PULLUP (OMAP_OFF_EN | OMAP_OFF_PULL_EN \
51 | OMAP_OFF_PULL_UP)
52#define OMAP_PIN_OFF_INPUT_PULLDOWN (OMAP_OFF_EN | OMAP_OFF_PULL_EN)
53#define OMAP_PIN_OFF_WAKEUPENABLE OMAP_WAKEUP_EN
54
55#define OMAP_MODE_GPIO(x) (((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE4)
56
57/* Flags for omap_mux_init */
58#define OMAP_PACKAGE_MASK 0xffff
59#define OMAP_PACKAGE_CBP 4 /* 515-pin 0.40 0.50 */
60#define OMAP_PACKAGE_CUS 3 /* 423-pin 0.65 */
61#define OMAP_PACKAGE_CBB 2 /* 515-pin 0.40 0.50 */
62#define OMAP_PACKAGE_CBC 1 /* 515-pin 0.50 0.65 */
63
64
65#define OMAP_MUX_NR_MODES 8 /* Available modes */
66#define OMAP_MUX_NR_SIDES 2 /* Bottom & top */
67
68/**
69 * struct omap_mux - data for omap mux register offset and it's value
70 * @reg_offset: mux register offset from the mux base
71 * @gpio: GPIO number
72 * @muxnames: available signal modes for a ball
73 */
74struct omap_mux {
75 u16 reg_offset;
76 u16 gpio;
77#ifdef CONFIG_OMAP_MUX
78 char *muxnames[OMAP_MUX_NR_MODES];
79#ifdef CONFIG_DEBUG_FS
80 char *balls[OMAP_MUX_NR_SIDES];
81#endif
82#endif
83};
84
85/**
86 * struct omap_ball - data for balls on omap package
87 * @reg_offset: mux register offset from the mux base
88 * @balls: available balls on the package
89 */
90struct omap_ball {
91 u16 reg_offset;
92 char *balls[OMAP_MUX_NR_SIDES];
93};
94
95/**
96 * struct omap_board_mux - data for initializing mux registers
97 * @reg_offset: mux register offset from the mux base
98 * @mux_value: desired mux value to set
99 */
100struct omap_board_mux {
101 u16 reg_offset;
102 u16 value;
103};
104
105#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_ARCH_OMAP34XX)
106
107/**
108 * omap_mux_init_gpio - initialize a signal based on the GPIO number
109 * @gpio: GPIO number
110 * @val: Options for the mux register value
111 */
112int omap_mux_init_gpio(int gpio, int val);
113
114/**
115 * omap_mux_init_signal - initialize a signal based on the signal name
116 * @muxname: Mux name in mode0_name.signal_name format
117 * @val: Options for the mux register value
118 */
119int omap_mux_init_signal(char *muxname, int val);
120
121#else
122
123static inline int omap_mux_init_gpio(int gpio, int val)
124{
125 return 0;
126}
127static inline int omap_mux_init_signal(char *muxname, int val)
128{
129 return 0;
130}
131
132#endif
133
134/**
135 * omap_mux_get_gpio() - get mux register value based on GPIO number
136 * @gpio: GPIO number
137 *
138 */
139u16 omap_mux_get_gpio(int gpio);
140
141/**
142 * omap_mux_set_gpio() - set mux register value based on GPIO number
143 * @val: New mux register value
144 * @gpio: GPIO number
145 *
146 */
147void omap_mux_set_gpio(u16 val, int gpio);
148
149/**
150 * omap3_mux_init() - initialize mux system with board specific set
151 * @board_mux: Board specific mux table
152 * @flags: OMAP package type used for the board
153 */
154int omap3_mux_init(struct omap_board_mux *board_mux, int flags);
155
156/**
157 * omap_mux_init - private mux init function, do not call
158 */
159int omap_mux_init(u32 mux_pbase, u32 mux_size,
160 struct omap_mux *superset,
161 struct omap_mux *package_subset,
162 struct omap_board_mux *board_mux,
163 struct omap_ball *package_balls);
diff --git a/arch/arm/mach-omap2/mux34xx.c b/arch/arm/mach-omap2/mux34xx.c
new file mode 100644
index 000000000000..68e0a595f9a1
--- /dev/null
+++ b/arch/arm/mach-omap2/mux34xx.c
@@ -0,0 +1,2099 @@
1/*
2 * Copyright (C) 2009 Nokia
3 * Copyright (C) 2009 Texas Instruments
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#include <linux/module.h>
11#include <linux/init.h>
12
13#include "mux.h"
14
15#ifdef CONFIG_OMAP_MUX
16
17#define _OMAP3_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7) \
18{ \
19 .reg_offset = (OMAP3_CONTROL_PADCONF_##M0##_OFFSET), \
20 .gpio = (g), \
21 .muxnames = { m0, m1, m2, m3, m4, m5, m6, m7 }, \
22}
23
24#else
25
26#define _OMAP3_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7) \
27{ \
28 .reg_offset = (OMAP3_CONTROL_PADCONF_##M0##_OFFSET), \
29 .gpio = (g), \
30}
31
32#endif
33
34#define _OMAP3_BALLENTRY(M0, bb, bt) \
35{ \
36 .reg_offset = (OMAP3_CONTROL_PADCONF_##M0##_OFFSET), \
37 .balls = { bb, bt }, \
38}
39
40/*
41 * Superset of all mux modes for omap3
42 */
43static struct omap_mux __initdata omap3_muxmodes[] = {
44 _OMAP3_MUXENTRY(CAM_D0, 99,
45 "cam_d0", NULL, NULL, NULL,
46 "gpio_99", NULL, NULL, "safe_mode"),
47 _OMAP3_MUXENTRY(CAM_D1, 100,
48 "cam_d1", NULL, NULL, NULL,
49 "gpio_100", NULL, NULL, "safe_mode"),
50 _OMAP3_MUXENTRY(CAM_D10, 109,
51 "cam_d10", NULL, NULL, NULL,
52 "gpio_109", "hw_dbg8", NULL, "safe_mode"),
53 _OMAP3_MUXENTRY(CAM_D11, 110,
54 "cam_d11", NULL, NULL, NULL,
55 "gpio_110", "hw_dbg9", NULL, "safe_mode"),
56 _OMAP3_MUXENTRY(CAM_D2, 101,
57 "cam_d2", NULL, NULL, NULL,
58 "gpio_101", "hw_dbg4", NULL, "safe_mode"),
59 _OMAP3_MUXENTRY(CAM_D3, 102,
60 "cam_d3", NULL, NULL, NULL,
61 "gpio_102", "hw_dbg5", NULL, "safe_mode"),
62 _OMAP3_MUXENTRY(CAM_D4, 103,
63 "cam_d4", NULL, NULL, NULL,
64 "gpio_103", "hw_dbg6", NULL, "safe_mode"),
65 _OMAP3_MUXENTRY(CAM_D5, 104,
66 "cam_d5", NULL, NULL, NULL,
67 "gpio_104", "hw_dbg7", NULL, "safe_mode"),
68 _OMAP3_MUXENTRY(CAM_D6, 105,
69 "cam_d6", NULL, NULL, NULL,
70 "gpio_105", NULL, NULL, "safe_mode"),
71 _OMAP3_MUXENTRY(CAM_D7, 106,
72 "cam_d7", NULL, NULL, NULL,
73 "gpio_106", NULL, NULL, "safe_mode"),
74 _OMAP3_MUXENTRY(CAM_D8, 107,
75 "cam_d8", NULL, NULL, NULL,
76 "gpio_107", NULL, NULL, "safe_mode"),
77 _OMAP3_MUXENTRY(CAM_D9, 108,
78 "cam_d9", NULL, NULL, NULL,
79 "gpio_108", NULL, NULL, "safe_mode"),
80 _OMAP3_MUXENTRY(CAM_FLD, 98,
81 "cam_fld", NULL, "cam_global_reset", NULL,
82 "gpio_98", "hw_dbg3", NULL, "safe_mode"),
83 _OMAP3_MUXENTRY(CAM_HS, 94,
84 "cam_hs", NULL, NULL, NULL,
85 "gpio_94", "hw_dbg0", NULL, "safe_mode"),
86 _OMAP3_MUXENTRY(CAM_PCLK, 97,
87 "cam_pclk", NULL, NULL, NULL,
88 "gpio_97", "hw_dbg2", NULL, "safe_mode"),
89 _OMAP3_MUXENTRY(CAM_STROBE, 126,
90 "cam_strobe", NULL, NULL, NULL,
91 "gpio_126", "hw_dbg11", NULL, "safe_mode"),
92 _OMAP3_MUXENTRY(CAM_VS, 95,
93 "cam_vs", NULL, NULL, NULL,
94 "gpio_95", "hw_dbg1", NULL, "safe_mode"),
95 _OMAP3_MUXENTRY(CAM_WEN, 167,
96 "cam_wen", NULL, "cam_shutter", NULL,
97 "gpio_167", "hw_dbg10", NULL, "safe_mode"),
98 _OMAP3_MUXENTRY(CAM_XCLKA, 96,
99 "cam_xclka", NULL, NULL, NULL,
100 "gpio_96", NULL, NULL, "safe_mode"),
101 _OMAP3_MUXENTRY(CAM_XCLKB, 111,
102 "cam_xclkb", NULL, NULL, NULL,
103 "gpio_111", NULL, NULL, "safe_mode"),
104 _OMAP3_MUXENTRY(CSI2_DX0, 112,
105 "csi2_dx0", NULL, NULL, NULL,
106 "gpio_112", NULL, NULL, "safe_mode"),
107 _OMAP3_MUXENTRY(CSI2_DX1, 114,
108 "csi2_dx1", NULL, NULL, NULL,
109 "gpio_114", NULL, NULL, "safe_mode"),
110 _OMAP3_MUXENTRY(CSI2_DY0, 113,
111 "csi2_dy0", NULL, NULL, NULL,
112 "gpio_113", NULL, NULL, "safe_mode"),
113 _OMAP3_MUXENTRY(CSI2_DY1, 115,
114 "csi2_dy1", NULL, NULL, NULL,
115 "gpio_115", NULL, NULL, "safe_mode"),
116 _OMAP3_MUXENTRY(DSS_ACBIAS, 69,
117 "dss_acbias", NULL, NULL, NULL,
118 "gpio_69", NULL, NULL, "safe_mode"),
119 _OMAP3_MUXENTRY(DSS_DATA0, 70,
120 "dss_data0", NULL, "uart1_cts", NULL,
121 "gpio_70", NULL, NULL, "safe_mode"),
122 _OMAP3_MUXENTRY(DSS_DATA1, 71,
123 "dss_data1", NULL, "uart1_rts", NULL,
124 "gpio_71", NULL, NULL, "safe_mode"),
125 _OMAP3_MUXENTRY(DSS_DATA10, 80,
126 "dss_data10", NULL, NULL, NULL,
127 "gpio_80", NULL, NULL, "safe_mode"),
128 _OMAP3_MUXENTRY(DSS_DATA11, 81,
129 "dss_data11", NULL, NULL, NULL,
130 "gpio_81", NULL, NULL, "safe_mode"),
131 _OMAP3_MUXENTRY(DSS_DATA12, 82,
132 "dss_data12", NULL, NULL, NULL,
133 "gpio_82", NULL, NULL, "safe_mode"),
134 _OMAP3_MUXENTRY(DSS_DATA13, 83,
135 "dss_data13", NULL, NULL, NULL,
136 "gpio_83", NULL, NULL, "safe_mode"),
137 _OMAP3_MUXENTRY(DSS_DATA14, 84,
138 "dss_data14", NULL, NULL, NULL,
139 "gpio_84", NULL, NULL, "safe_mode"),
140 _OMAP3_MUXENTRY(DSS_DATA15, 85,
141 "dss_data15", NULL, NULL, NULL,
142 "gpio_85", NULL, NULL, "safe_mode"),
143 _OMAP3_MUXENTRY(DSS_DATA16, 86,
144 "dss_data16", NULL, NULL, NULL,
145 "gpio_86", NULL, NULL, "safe_mode"),
146 _OMAP3_MUXENTRY(DSS_DATA17, 87,
147 "dss_data17", NULL, NULL, NULL,
148 "gpio_87", NULL, NULL, "safe_mode"),
149 _OMAP3_MUXENTRY(DSS_DATA18, 88,
150 "dss_data18", NULL, "mcspi3_clk", "dss_data0",
151 "gpio_88", NULL, NULL, "safe_mode"),
152 _OMAP3_MUXENTRY(DSS_DATA19, 89,
153 "dss_data19", NULL, "mcspi3_simo", "dss_data1",
154 "gpio_89", NULL, NULL, "safe_mode"),
155 _OMAP3_MUXENTRY(DSS_DATA20, 90,
156 "dss_data20", NULL, "mcspi3_somi", "dss_data2",
157 "gpio_90", NULL, NULL, "safe_mode"),
158 _OMAP3_MUXENTRY(DSS_DATA21, 91,
159 "dss_data21", NULL, "mcspi3_cs0", "dss_data3",
160 "gpio_91", NULL, NULL, "safe_mode"),
161 _OMAP3_MUXENTRY(DSS_DATA22, 92,
162 "dss_data22", NULL, "mcspi3_cs1", "dss_data4",
163 "gpio_92", NULL, NULL, "safe_mode"),
164 _OMAP3_MUXENTRY(DSS_DATA23, 93,
165 "dss_data23", NULL, NULL, "dss_data5",
166 "gpio_93", NULL, NULL, "safe_mode"),
167 _OMAP3_MUXENTRY(DSS_DATA2, 72,
168 "dss_data2", NULL, NULL, NULL,
169 "gpio_72", NULL, NULL, "safe_mode"),
170 _OMAP3_MUXENTRY(DSS_DATA3, 73,
171 "dss_data3", NULL, NULL, NULL,
172 "gpio_73", NULL, NULL, "safe_mode"),
173 _OMAP3_MUXENTRY(DSS_DATA4, 74,
174 "dss_data4", NULL, "uart3_rx_irrx", NULL,
175 "gpio_74", NULL, NULL, "safe_mode"),
176 _OMAP3_MUXENTRY(DSS_DATA5, 75,
177 "dss_data5", NULL, "uart3_tx_irtx", NULL,
178 "gpio_75", NULL, NULL, "safe_mode"),
179 _OMAP3_MUXENTRY(DSS_DATA6, 76,
180 "dss_data6", NULL, "uart1_tx", NULL,
181 "gpio_76", "hw_dbg14", NULL, "safe_mode"),
182 _OMAP3_MUXENTRY(DSS_DATA7, 77,
183 "dss_data7", NULL, "uart1_rx", NULL,
184 "gpio_77", "hw_dbg15", NULL, "safe_mode"),
185 _OMAP3_MUXENTRY(DSS_DATA8, 78,
186 "dss_data8", NULL, NULL, NULL,
187 "gpio_78", "hw_dbg16", NULL, "safe_mode"),
188 _OMAP3_MUXENTRY(DSS_DATA9, 79,
189 "dss_data9", NULL, NULL, NULL,
190 "gpio_79", "hw_dbg17", NULL, "safe_mode"),
191 _OMAP3_MUXENTRY(DSS_HSYNC, 67,
192 "dss_hsync", NULL, NULL, NULL,
193 "gpio_67", "hw_dbg13", NULL, "safe_mode"),
194 _OMAP3_MUXENTRY(DSS_PCLK, 66,
195 "dss_pclk", NULL, NULL, NULL,
196 "gpio_66", "hw_dbg12", NULL, "safe_mode"),
197 _OMAP3_MUXENTRY(DSS_VSYNC, 68,
198 "dss_vsync", NULL, NULL, NULL,
199 "gpio_68", NULL, NULL, "safe_mode"),
200 _OMAP3_MUXENTRY(ETK_CLK, 12,
201 "etk_clk", "mcbsp5_clkx", "sdmmc3_clk", "hsusb1_stp",
202 "gpio_12", "mm1_rxdp", "hsusb1_tll_stp", "hw_dbg0"),
203 _OMAP3_MUXENTRY(ETK_CTL, 13,
204 "etk_ctl", NULL, "sdmmc3_cmd", "hsusb1_clk",
205 "gpio_13", NULL, "hsusb1_tll_clk", "hw_dbg1"),
206 _OMAP3_MUXENTRY(ETK_D0, 14,
207 "etk_d0", "mcspi3_simo", "sdmmc3_dat4", "hsusb1_data0",
208 "gpio_14", "mm1_rxrcv", "hsusb1_tll_data0", "hw_dbg2"),
209 _OMAP3_MUXENTRY(ETK_D1, 15,
210 "etk_d1", "mcspi3_somi", NULL, "hsusb1_data1",
211 "gpio_15", "mm1_txse0", "hsusb1_tll_data1", "hw_dbg3"),
212 _OMAP3_MUXENTRY(ETK_D10, 24,
213 "etk_d10", NULL, "uart1_rx", "hsusb2_clk",
214 "gpio_24", NULL, "hsusb2_tll_clk", "hw_dbg12"),
215 _OMAP3_MUXENTRY(ETK_D11, 25,
216 "etk_d11", NULL, NULL, "hsusb2_stp",
217 "gpio_25", "mm2_rxdp", "hsusb2_tll_stp", "hw_dbg13"),
218 _OMAP3_MUXENTRY(ETK_D12, 26,
219 "etk_d12", NULL, NULL, "hsusb2_dir",
220 "gpio_26", NULL, "hsusb2_tll_dir", "hw_dbg14"),
221 _OMAP3_MUXENTRY(ETK_D13, 27,
222 "etk_d13", NULL, NULL, "hsusb2_nxt",
223 "gpio_27", "mm2_rxdm", "hsusb2_tll_nxt", "hw_dbg15"),
224 _OMAP3_MUXENTRY(ETK_D14, 28,
225 "etk_d14", NULL, NULL, "hsusb2_data0",
226 "gpio_28", "mm2_rxrcv", "hsusb2_tll_data0", "hw_dbg16"),
227 _OMAP3_MUXENTRY(ETK_D15, 29,
228 "etk_d15", NULL, NULL, "hsusb2_data1",
229 "gpio_29", "mm2_txse0", "hsusb2_tll_data1", "hw_dbg17"),
230 _OMAP3_MUXENTRY(ETK_D2, 16,
231 "etk_d2", "mcspi3_cs0", NULL, "hsusb1_data2",
232 "gpio_16", "mm1_txdat", "hsusb1_tll_data2", "hw_dbg4"),
233 _OMAP3_MUXENTRY(ETK_D3, 17,
234 "etk_d3", "mcspi3_clk", "sdmmc3_dat3", "hsusb1_data7",
235 "gpio_17", NULL, "hsusb1_tll_data7", "hw_dbg5"),
236 _OMAP3_MUXENTRY(ETK_D4, 18,
237 "etk_d4", "mcbsp5_dr", "sdmmc3_dat0", "hsusb1_data4",
238 "gpio_18", NULL, "hsusb1_tll_data4", "hw_dbg6"),
239 _OMAP3_MUXENTRY(ETK_D5, 19,
240 "etk_d5", "mcbsp5_fsx", "sdmmc3_dat1", "hsusb1_data5",
241 "gpio_19", NULL, "hsusb1_tll_data5", "hw_dbg7"),
242 _OMAP3_MUXENTRY(ETK_D6, 20,
243 "etk_d6", "mcbsp5_dx", "sdmmc3_dat2", "hsusb1_data6",
244 "gpio_20", NULL, "hsusb1_tll_data6", "hw_dbg8"),
245 _OMAP3_MUXENTRY(ETK_D7, 21,
246 "etk_d7", "mcspi3_cs1", "sdmmc3_dat7", "hsusb1_data3",
247 "gpio_21", "mm1_txen_n", "hsusb1_tll_data3", "hw_dbg9"),
248 _OMAP3_MUXENTRY(ETK_D8, 22,
249 "etk_d8", "sys_drm_msecure", "sdmmc3_dat6", "hsusb1_dir",
250 "gpio_22", NULL, "hsusb1_tll_dir", "hw_dbg10"),
251 _OMAP3_MUXENTRY(ETK_D9, 23,
252 "etk_d9", "sys_secure_indicator", "sdmmc3_dat5", "hsusb1_nxt",
253 "gpio_23", "mm1_rxdm", "hsusb1_tll_nxt", "hw_dbg11"),
254 _OMAP3_MUXENTRY(GPMC_A1, 34,
255 "gpmc_a1", NULL, NULL, NULL,
256 "gpio_34", NULL, NULL, "safe_mode"),
257 _OMAP3_MUXENTRY(GPMC_A10, 43,
258 "gpmc_a10", "sys_ndmareq3", NULL, NULL,
259 "gpio_43", NULL, NULL, "safe_mode"),
260 _OMAP3_MUXENTRY(GPMC_A2, 35,
261 "gpmc_a2", NULL, NULL, NULL,
262 "gpio_35", NULL, NULL, "safe_mode"),
263 _OMAP3_MUXENTRY(GPMC_A3, 36,
264 "gpmc_a3", NULL, NULL, NULL,
265 "gpio_36", NULL, NULL, "safe_mode"),
266 _OMAP3_MUXENTRY(GPMC_A4, 37,
267 "gpmc_a4", NULL, NULL, NULL,
268 "gpio_37", NULL, NULL, "safe_mode"),
269 _OMAP3_MUXENTRY(GPMC_A5, 38,
270 "gpmc_a5", NULL, NULL, NULL,
271 "gpio_38", NULL, NULL, "safe_mode"),
272 _OMAP3_MUXENTRY(GPMC_A6, 39,
273 "gpmc_a6", NULL, NULL, NULL,
274 "gpio_39", NULL, NULL, "safe_mode"),
275 _OMAP3_MUXENTRY(GPMC_A7, 40,
276 "gpmc_a7", NULL, NULL, NULL,
277 "gpio_40", NULL, NULL, "safe_mode"),
278 _OMAP3_MUXENTRY(GPMC_A8, 41,
279 "gpmc_a8", NULL, NULL, NULL,
280 "gpio_41", NULL, NULL, "safe_mode"),
281 _OMAP3_MUXENTRY(GPMC_A9, 42,
282 "gpmc_a9", "sys_ndmareq2", NULL, NULL,
283 "gpio_42", NULL, NULL, "safe_mode"),
284 _OMAP3_MUXENTRY(GPMC_CLK, 59,
285 "gpmc_clk", NULL, NULL, NULL,
286 "gpio_59", NULL, NULL, "safe_mode"),
287 _OMAP3_MUXENTRY(GPMC_D10, 46,
288 "gpmc_d10", NULL, NULL, NULL,
289 "gpio_46", NULL, NULL, "safe_mode"),
290 _OMAP3_MUXENTRY(GPMC_D11, 47,
291 "gpmc_d11", NULL, NULL, NULL,
292 "gpio_47", NULL, NULL, "safe_mode"),
293 _OMAP3_MUXENTRY(GPMC_D12, 48,
294 "gpmc_d12", NULL, NULL, NULL,
295 "gpio_48", NULL, NULL, "safe_mode"),
296 _OMAP3_MUXENTRY(GPMC_D13, 49,
297 "gpmc_d13", NULL, NULL, NULL,
298 "gpio_49", NULL, NULL, "safe_mode"),
299 _OMAP3_MUXENTRY(GPMC_D14, 50,
300 "gpmc_d14", NULL, NULL, NULL,
301 "gpio_50", NULL, NULL, "safe_mode"),
302 _OMAP3_MUXENTRY(GPMC_D15, 51,
303 "gpmc_d15", NULL, NULL, NULL,
304 "gpio_51", NULL, NULL, "safe_mode"),
305 _OMAP3_MUXENTRY(GPMC_D8, 44,
306 "gpmc_d8", NULL, NULL, NULL,
307 "gpio_44", NULL, NULL, "safe_mode"),
308 _OMAP3_MUXENTRY(GPMC_D9, 45,
309 "gpmc_d9", NULL, NULL, NULL,
310 "gpio_45", NULL, NULL, "safe_mode"),
311 _OMAP3_MUXENTRY(GPMC_NBE0_CLE, 60,
312 "gpmc_nbe0_cle", NULL, NULL, NULL,
313 "gpio_60", NULL, NULL, "safe_mode"),
314 _OMAP3_MUXENTRY(GPMC_NBE1, 61,
315 "gpmc_nbe1", NULL, NULL, NULL,
316 "gpio_61", NULL, NULL, "safe_mode"),
317 _OMAP3_MUXENTRY(GPMC_NCS1, 52,
318 "gpmc_ncs1", NULL, NULL, NULL,
319 "gpio_52", NULL, NULL, "safe_mode"),
320 _OMAP3_MUXENTRY(GPMC_NCS2, 53,
321 "gpmc_ncs2", NULL, NULL, NULL,
322 "gpio_53", NULL, NULL, "safe_mode"),
323 _OMAP3_MUXENTRY(GPMC_NCS3, 54,
324 "gpmc_ncs3", "sys_ndmareq0", NULL, NULL,
325 "gpio_54", NULL, NULL, "safe_mode"),
326 _OMAP3_MUXENTRY(GPMC_NCS4, 55,
327 "gpmc_ncs4", "sys_ndmareq1", "mcbsp4_clkx", "gpt9_pwm_evt",
328 "gpio_55", NULL, NULL, "safe_mode"),
329 _OMAP3_MUXENTRY(GPMC_NCS5, 56,
330 "gpmc_ncs5", "sys_ndmareq2", "mcbsp4_dr", "gpt10_pwm_evt",
331 "gpio_56", NULL, NULL, "safe_mode"),
332 _OMAP3_MUXENTRY(GPMC_NCS6, 57,
333 "gpmc_ncs6", "sys_ndmareq3", "mcbsp4_dx", "gpt11_pwm_evt",
334 "gpio_57", NULL, NULL, "safe_mode"),
335 _OMAP3_MUXENTRY(GPMC_NCS7, 58,
336 "gpmc_ncs7", "gpmc_io_dir", "mcbsp4_fsx", "gpt8_pwm_evt",
337 "gpio_58", NULL, NULL, "safe_mode"),
338 _OMAP3_MUXENTRY(GPMC_NWP, 62,
339 "gpmc_nwp", NULL, NULL, NULL,
340 "gpio_62", NULL, NULL, "safe_mode"),
341 _OMAP3_MUXENTRY(GPMC_WAIT1, 63,
342 "gpmc_wait1", NULL, NULL, NULL,
343 "gpio_63", NULL, NULL, "safe_mode"),
344 _OMAP3_MUXENTRY(GPMC_WAIT2, 64,
345 "gpmc_wait2", NULL, NULL, NULL,
346 "gpio_64", NULL, NULL, "safe_mode"),
347 _OMAP3_MUXENTRY(GPMC_WAIT3, 65,
348 "gpmc_wait3", "sys_ndmareq1", NULL, NULL,
349 "gpio_65", NULL, NULL, "safe_mode"),
350 _OMAP3_MUXENTRY(HDQ_SIO, 170,
351 "hdq_sio", "sys_altclk", "i2c2_sccbe", "i2c3_sccbe",
352 "gpio_170", NULL, NULL, "safe_mode"),
353 _OMAP3_MUXENTRY(HSUSB0_CLK, 120,
354 "hsusb0_clk", NULL, NULL, NULL,
355 "gpio_120", NULL, NULL, "safe_mode"),
356 _OMAP3_MUXENTRY(HSUSB0_DATA0, 125,
357 "hsusb0_data0", NULL, "uart3_tx_irtx", NULL,
358 "gpio_125", NULL, NULL, "safe_mode"),
359 _OMAP3_MUXENTRY(HSUSB0_DATA1, 130,
360 "hsusb0_data1", NULL, "uart3_rx_irrx", NULL,
361 "gpio_130", NULL, NULL, "safe_mode"),
362 _OMAP3_MUXENTRY(HSUSB0_DATA2, 131,
363 "hsusb0_data2", NULL, "uart3_rts_sd", NULL,
364 "gpio_131", NULL, NULL, "safe_mode"),
365 _OMAP3_MUXENTRY(HSUSB0_DATA3, 169,
366 "hsusb0_data3", NULL, "uart3_cts_rctx", NULL,
367 "gpio_169", NULL, NULL, "safe_mode"),
368 _OMAP3_MUXENTRY(HSUSB0_DATA4, 188,
369 "hsusb0_data4", NULL, NULL, NULL,
370 "gpio_188", NULL, NULL, "safe_mode"),
371 _OMAP3_MUXENTRY(HSUSB0_DATA5, 189,
372 "hsusb0_data5", NULL, NULL, NULL,
373 "gpio_189", NULL, NULL, "safe_mode"),
374 _OMAP3_MUXENTRY(HSUSB0_DATA6, 190,
375 "hsusb0_data6", NULL, NULL, NULL,
376 "gpio_190", NULL, NULL, "safe_mode"),
377 _OMAP3_MUXENTRY(HSUSB0_DATA7, 191,
378 "hsusb0_data7", NULL, NULL, NULL,
379 "gpio_191", NULL, NULL, "safe_mode"),
380 _OMAP3_MUXENTRY(HSUSB0_DIR, 122,
381 "hsusb0_dir", NULL, NULL, NULL,
382 "gpio_122", NULL, NULL, "safe_mode"),
383 _OMAP3_MUXENTRY(HSUSB0_NXT, 124,
384 "hsusb0_nxt", NULL, NULL, NULL,
385 "gpio_124", NULL, NULL, "safe_mode"),
386 _OMAP3_MUXENTRY(HSUSB0_STP, 121,
387 "hsusb0_stp", NULL, NULL, NULL,
388 "gpio_121", NULL, NULL, "safe_mode"),
389 _OMAP3_MUXENTRY(I2C2_SCL, 168,
390 "i2c2_scl", NULL, NULL, NULL,
391 "gpio_168", NULL, NULL, "safe_mode"),
392 _OMAP3_MUXENTRY(I2C2_SDA, 183,
393 "i2c2_sda", NULL, NULL, NULL,
394 "gpio_183", NULL, NULL, "safe_mode"),
395 _OMAP3_MUXENTRY(I2C3_SCL, 184,
396 "i2c3_scl", NULL, NULL, NULL,
397 "gpio_184", NULL, NULL, "safe_mode"),
398 _OMAP3_MUXENTRY(I2C3_SDA, 185,
399 "i2c3_sda", NULL, NULL, NULL,
400 "gpio_185", NULL, NULL, "safe_mode"),
401 _OMAP3_MUXENTRY(I2C4_SCL, 0,
402 "i2c4_scl", "sys_nvmode1", NULL, NULL,
403 NULL, NULL, NULL, "safe_mode"),
404 _OMAP3_MUXENTRY(I2C4_SDA, 0,
405 "i2c4_sda", "sys_nvmode2", NULL, NULL,
406 NULL, NULL, NULL, "safe_mode"),
407 _OMAP3_MUXENTRY(JTAG_EMU0, 11,
408 "jtag_emu0", NULL, NULL, NULL,
409 "gpio_11", NULL, NULL, "safe_mode"),
410 _OMAP3_MUXENTRY(JTAG_EMU1, 31,
411 "jtag_emu1", NULL, NULL, NULL,
412 "gpio_31", NULL, NULL, "safe_mode"),
413 _OMAP3_MUXENTRY(MCBSP1_CLKR, 156,
414 "mcbsp1_clkr", "mcspi4_clk", NULL, NULL,
415 "gpio_156", NULL, NULL, "safe_mode"),
416 _OMAP3_MUXENTRY(MCBSP1_CLKX, 162,
417 "mcbsp1_clkx", NULL, "mcbsp3_clkx", NULL,
418 "gpio_162", NULL, NULL, "safe_mode"),
419 _OMAP3_MUXENTRY(MCBSP1_DR, 159,
420 "mcbsp1_dr", "mcspi4_somi", "mcbsp3_dr", NULL,
421 "gpio_159", NULL, NULL, "safe_mode"),
422 _OMAP3_MUXENTRY(MCBSP1_DX, 158,
423 "mcbsp1_dx", "mcspi4_simo", "mcbsp3_dx", NULL,
424 "gpio_158", NULL, NULL, "safe_mode"),
425 _OMAP3_MUXENTRY(MCBSP1_FSR, 157,
426 "mcbsp1_fsr", NULL, "cam_global_reset", NULL,
427 "gpio_157", NULL, NULL, "safe_mode"),
428 _OMAP3_MUXENTRY(MCBSP1_FSX, 161,
429 "mcbsp1_fsx", "mcspi4_cs0", "mcbsp3_fsx", NULL,
430 "gpio_161", NULL, NULL, "safe_mode"),
431 _OMAP3_MUXENTRY(MCBSP2_CLKX, 117,
432 "mcbsp2_clkx", NULL, NULL, NULL,
433 "gpio_117", NULL, NULL, "safe_mode"),
434 _OMAP3_MUXENTRY(MCBSP2_DR, 118,
435 "mcbsp2_dr", NULL, NULL, NULL,
436 "gpio_118", NULL, NULL, "safe_mode"),
437 _OMAP3_MUXENTRY(MCBSP2_DX, 119,
438 "mcbsp2_dx", NULL, NULL, NULL,
439 "gpio_119", NULL, NULL, "safe_mode"),
440 _OMAP3_MUXENTRY(MCBSP2_FSX, 116,
441 "mcbsp2_fsx", NULL, NULL, NULL,
442 "gpio_116", NULL, NULL, "safe_mode"),
443 _OMAP3_MUXENTRY(MCBSP3_CLKX, 142,
444 "mcbsp3_clkx", "uart2_tx", NULL, NULL,
445 "gpio_142", "hsusb3_tll_data6", NULL, "safe_mode"),
446 _OMAP3_MUXENTRY(MCBSP3_DR, 141,
447 "mcbsp3_dr", "uart2_rts", NULL, NULL,
448 "gpio_141", "hsusb3_tll_data5", NULL, "safe_mode"),
449 _OMAP3_MUXENTRY(MCBSP3_DX, 140,
450 "mcbsp3_dx", "uart2_cts", NULL, NULL,
451 "gpio_140", "hsusb3_tll_data4", NULL, "safe_mode"),
452 _OMAP3_MUXENTRY(MCBSP3_FSX, 143,
453 "mcbsp3_fsx", "uart2_rx", NULL, NULL,
454 "gpio_143", "hsusb3_tll_data7", NULL, "safe_mode"),
455 _OMAP3_MUXENTRY(MCBSP4_CLKX, 152,
456 "mcbsp4_clkx", NULL, NULL, NULL,
457 "gpio_152", "hsusb3_tll_data1", "mm3_txse0", "safe_mode"),
458 _OMAP3_MUXENTRY(MCBSP4_DR, 153,
459 "mcbsp4_dr", NULL, NULL, NULL,
460 "gpio_153", "hsusb3_tll_data0", "mm3_rxrcv", "safe_mode"),
461 _OMAP3_MUXENTRY(MCBSP4_DX, 154,
462 "mcbsp4_dx", NULL, NULL, NULL,
463 "gpio_154", "hsusb3_tll_data2", "mm3_txdat", "safe_mode"),
464 _OMAP3_MUXENTRY(MCBSP4_FSX, 155,
465 "mcbsp4_fsx", NULL, NULL, NULL,
466 "gpio_155", "hsusb3_tll_data3", "mm3_txen_n", "safe_mode"),
467 _OMAP3_MUXENTRY(MCBSP_CLKS, 160,
468 "mcbsp_clks", NULL, "cam_shutter", NULL,
469 "gpio_160", "uart1_cts", NULL, "safe_mode"),
470 _OMAP3_MUXENTRY(MCSPI1_CLK, 171,
471 "mcspi1_clk", "sdmmc2_dat4", NULL, NULL,
472 "gpio_171", NULL, NULL, "safe_mode"),
473 _OMAP3_MUXENTRY(MCSPI1_CS0, 174,
474 "mcspi1_cs0", "sdmmc2_dat7", NULL, NULL,
475 "gpio_174", NULL, NULL, "safe_mode"),
476 _OMAP3_MUXENTRY(MCSPI1_CS1, 175,
477 "mcspi1_cs1", NULL, NULL, "sdmmc3_cmd",
478 "gpio_175", NULL, NULL, "safe_mode"),
479 _OMAP3_MUXENTRY(MCSPI1_CS2, 176,
480 "mcspi1_cs2", NULL, NULL, "sdmmc3_clk",
481 "gpio_176", NULL, NULL, "safe_mode"),
482 _OMAP3_MUXENTRY(MCSPI1_CS3, 177,
483 "mcspi1_cs3", NULL, "hsusb2_tll_data2", "hsusb2_data2",
484 "gpio_177", "mm2_txdat", NULL, "safe_mode"),
485 _OMAP3_MUXENTRY(MCSPI1_SIMO, 172,
486 "mcspi1_simo", "sdmmc2_dat5", NULL, NULL,
487 "gpio_172", NULL, NULL, "safe_mode"),
488 _OMAP3_MUXENTRY(MCSPI1_SOMI, 173,
489 "mcspi1_somi", "sdmmc2_dat6", NULL, NULL,
490 "gpio_173", NULL, NULL, "safe_mode"),
491 _OMAP3_MUXENTRY(MCSPI2_CLK, 178,
492 "mcspi2_clk", NULL, "hsusb2_tll_data7", "hsusb2_data7",
493 "gpio_178", NULL, NULL, "safe_mode"),
494 _OMAP3_MUXENTRY(MCSPI2_CS0, 181,
495 "mcspi2_cs0", "gpt11_pwm_evt",
496 "hsusb2_tll_data6", "hsusb2_data6",
497 "gpio_181", NULL, NULL, "safe_mode"),
498 _OMAP3_MUXENTRY(MCSPI2_CS1, 182,
499 "mcspi2_cs1", "gpt8_pwm_evt",
500 "hsusb2_tll_data3", "hsusb2_data3",
501 "gpio_182", "mm2_txen_n", NULL, "safe_mode"),
502 _OMAP3_MUXENTRY(MCSPI2_SIMO, 179,
503 "mcspi2_simo", "gpt9_pwm_evt",
504 "hsusb2_tll_data4", "hsusb2_data4",
505 "gpio_179", NULL, NULL, "safe_mode"),
506 _OMAP3_MUXENTRY(MCSPI2_SOMI, 180,
507 "mcspi2_somi", "gpt10_pwm_evt",
508 "hsusb2_tll_data5", "hsusb2_data5",
509 "gpio_180", NULL, NULL, "safe_mode"),
510 _OMAP3_MUXENTRY(SDMMC1_CLK, 120,
511 "sdmmc1_clk", NULL, NULL, NULL,
512 "gpio_120", NULL, NULL, "safe_mode"),
513 _OMAP3_MUXENTRY(SDMMC1_CMD, 121,
514 "sdmmc1_cmd", NULL, NULL, NULL,
515 "gpio_121", NULL, NULL, "safe_mode"),
516 _OMAP3_MUXENTRY(SDMMC1_DAT0, 122,
517 "sdmmc1_dat0", NULL, NULL, NULL,
518 "gpio_122", NULL, NULL, "safe_mode"),
519 _OMAP3_MUXENTRY(SDMMC1_DAT1, 123,
520 "sdmmc1_dat1", NULL, NULL, NULL,
521 "gpio_123", NULL, NULL, "safe_mode"),
522 _OMAP3_MUXENTRY(SDMMC1_DAT2, 124,
523 "sdmmc1_dat2", NULL, NULL, NULL,
524 "gpio_124", NULL, NULL, "safe_mode"),
525 _OMAP3_MUXENTRY(SDMMC1_DAT3, 125,
526 "sdmmc1_dat3", NULL, NULL, NULL,
527 "gpio_125", NULL, NULL, "safe_mode"),
528 _OMAP3_MUXENTRY(SDMMC1_DAT4, 126,
529 "sdmmc1_dat4", NULL, "sim_io", NULL,
530 "gpio_126", NULL, NULL, "safe_mode"),
531 _OMAP3_MUXENTRY(SDMMC1_DAT5, 127,
532 "sdmmc1_dat5", NULL, "sim_clk", NULL,
533 "gpio_127", NULL, NULL, "safe_mode"),
534 _OMAP3_MUXENTRY(SDMMC1_DAT6, 128,
535 "sdmmc1_dat6", NULL, "sim_pwrctrl", NULL,
536 "gpio_128", NULL, NULL, "safe_mode"),
537 _OMAP3_MUXENTRY(SDMMC1_DAT7, 129,
538 "sdmmc1_dat7", NULL, "sim_rst", NULL,
539 "gpio_129", NULL, NULL, "safe_mode"),
540 _OMAP3_MUXENTRY(SDMMC2_CLK, 130,
541 "sdmmc2_clk", "mcspi3_clk", NULL, NULL,
542 "gpio_130", NULL, NULL, "safe_mode"),
543 _OMAP3_MUXENTRY(SDMMC2_CMD, 131,
544 "sdmmc2_cmd", "mcspi3_simo", NULL, NULL,
545 "gpio_131", NULL, NULL, "safe_mode"),
546 _OMAP3_MUXENTRY(SDMMC2_DAT0, 132,
547 "sdmmc2_dat0", "mcspi3_somi", NULL, NULL,
548 "gpio_132", NULL, NULL, "safe_mode"),
549 _OMAP3_MUXENTRY(SDMMC2_DAT1, 133,
550 "sdmmc2_dat1", NULL, NULL, NULL,
551 "gpio_133", NULL, NULL, "safe_mode"),
552 _OMAP3_MUXENTRY(SDMMC2_DAT2, 134,
553 "sdmmc2_dat2", "mcspi3_cs1", NULL, NULL,
554 "gpio_134", NULL, NULL, "safe_mode"),
555 _OMAP3_MUXENTRY(SDMMC2_DAT3, 135,
556 "sdmmc2_dat3", "mcspi3_cs0", NULL, NULL,
557 "gpio_135", NULL, NULL, "safe_mode"),
558 _OMAP3_MUXENTRY(SDMMC2_DAT4, 136,
559 "sdmmc2_dat4", "sdmmc2_dir_dat0", NULL, "sdmmc3_dat0",
560 "gpio_136", NULL, NULL, "safe_mode"),
561 _OMAP3_MUXENTRY(SDMMC2_DAT5, 137,
562 "sdmmc2_dat5", "sdmmc2_dir_dat1",
563 "cam_global_reset", "sdmmc3_dat1",
564 "gpio_137", "hsusb3_tll_stp", "mm3_rxdp", "safe_mode"),
565 _OMAP3_MUXENTRY(SDMMC2_DAT6, 138,
566 "sdmmc2_dat6", "sdmmc2_dir_cmd", "cam_shutter", "sdmmc3_dat2",
567 "gpio_138", "hsusb3_tll_dir", NULL, "safe_mode"),
568 _OMAP3_MUXENTRY(SDMMC2_DAT7, 139,
569 "sdmmc2_dat7", "sdmmc2_clkin", NULL, "sdmmc3_dat3",
570 "gpio_139", "hsusb3_tll_nxt", "mm3_rxdm", "safe_mode"),
571 _OMAP3_MUXENTRY(SDRC_CKE0, 0,
572 "sdrc_cke0", NULL, NULL, NULL,
573 NULL, NULL, NULL, "safe_mode"),
574 _OMAP3_MUXENTRY(SDRC_CKE1, 0,
575 "sdrc_cke1", NULL, NULL, NULL,
576 NULL, NULL, NULL, "safe_mode"),
577 _OMAP3_MUXENTRY(SYS_BOOT0, 2,
578 "sys_boot0", NULL, NULL, NULL,
579 "gpio_2", NULL, NULL, "safe_mode"),
580 _OMAP3_MUXENTRY(SYS_BOOT1, 3,
581 "sys_boot1", NULL, NULL, NULL,
582 "gpio_3", NULL, NULL, "safe_mode"),
583 _OMAP3_MUXENTRY(SYS_BOOT2, 4,
584 "sys_boot2", NULL, NULL, NULL,
585 "gpio_4", NULL, NULL, "safe_mode"),
586 _OMAP3_MUXENTRY(SYS_BOOT3, 5,
587 "sys_boot3", NULL, NULL, NULL,
588 "gpio_5", NULL, NULL, "safe_mode"),
589 _OMAP3_MUXENTRY(SYS_BOOT4, 6,
590 "sys_boot4", "sdmmc2_dir_dat2", NULL, NULL,
591 "gpio_6", NULL, NULL, "safe_mode"),
592 _OMAP3_MUXENTRY(SYS_BOOT5, 7,
593 "sys_boot5", "sdmmc2_dir_dat3", NULL, NULL,
594 "gpio_7", NULL, NULL, "safe_mode"),
595 _OMAP3_MUXENTRY(SYS_BOOT6, 8,
596 "sys_boot6", NULL, NULL, NULL,
597 "gpio_8", NULL, NULL, "safe_mode"),
598 _OMAP3_MUXENTRY(SYS_CLKOUT1, 10,
599 "sys_clkout1", NULL, NULL, NULL,
600 "gpio_10", NULL, NULL, "safe_mode"),
601 _OMAP3_MUXENTRY(SYS_CLKOUT2, 186,
602 "sys_clkout2", NULL, NULL, NULL,
603 "gpio_186", NULL, NULL, "safe_mode"),
604 _OMAP3_MUXENTRY(SYS_CLKREQ, 1,
605 "sys_clkreq", NULL, NULL, NULL,
606 "gpio_1", NULL, NULL, "safe_mode"),
607 _OMAP3_MUXENTRY(SYS_NIRQ, 0,
608 "sys_nirq", NULL, NULL, NULL,
609 "gpio_0", NULL, NULL, "safe_mode"),
610 _OMAP3_MUXENTRY(SYS_NRESWARM, 30,
611 "sys_nreswarm", NULL, NULL, NULL,
612 "gpio_30", NULL, NULL, "safe_mode"),
613 _OMAP3_MUXENTRY(SYS_OFF_MODE, 9,
614 "sys_off_mode", NULL, NULL, NULL,
615 "gpio_9", NULL, NULL, "safe_mode"),
616 _OMAP3_MUXENTRY(UART1_CTS, 150,
617 "uart1_cts", NULL, NULL, NULL,
618 "gpio_150", "hsusb3_tll_clk", NULL, "safe_mode"),
619 _OMAP3_MUXENTRY(UART1_RTS, 149,
620 "uart1_rts", NULL, NULL, NULL,
621 "gpio_149", NULL, NULL, "safe_mode"),
622 _OMAP3_MUXENTRY(UART1_RX, 151,
623 "uart1_rx", NULL, "mcbsp1_clkr", "mcspi4_clk",
624 "gpio_151", NULL, NULL, "safe_mode"),
625 _OMAP3_MUXENTRY(UART1_TX, 148,
626 "uart1_tx", NULL, NULL, NULL,
627 "gpio_148", NULL, NULL, "safe_mode"),
628 _OMAP3_MUXENTRY(UART2_CTS, 144,
629 "uart2_cts", "mcbsp3_dx", "gpt9_pwm_evt", NULL,
630 "gpio_144", NULL, NULL, "safe_mode"),
631 _OMAP3_MUXENTRY(UART2_RTS, 145,
632 "uart2_rts", "mcbsp3_dr", "gpt10_pwm_evt", NULL,
633 "gpio_145", NULL, NULL, "safe_mode"),
634 _OMAP3_MUXENTRY(UART2_RX, 147,
635 "uart2_rx", "mcbsp3_fsx", "gpt8_pwm_evt", NULL,
636 "gpio_147", NULL, NULL, "safe_mode"),
637 _OMAP3_MUXENTRY(UART2_TX, 146,
638 "uart2_tx", "mcbsp3_clkx", "gpt11_pwm_evt", NULL,
639 "gpio_146", NULL, NULL, "safe_mode"),
640 _OMAP3_MUXENTRY(UART3_CTS_RCTX, 163,
641 "uart3_cts_rctx", NULL, NULL, NULL,
642 "gpio_163", NULL, NULL, "safe_mode"),
643 _OMAP3_MUXENTRY(UART3_RTS_SD, 164,
644 "uart3_rts_sd", NULL, NULL, NULL,
645 "gpio_164", NULL, NULL, "safe_mode"),
646 _OMAP3_MUXENTRY(UART3_RX_IRRX, 165,
647 "uart3_rx_irrx", NULL, NULL, NULL,
648 "gpio_165", NULL, NULL, "safe_mode"),
649 _OMAP3_MUXENTRY(UART3_TX_IRTX, 166,
650 "uart3_tx_irtx", NULL, NULL, NULL,
651 "gpio_166", NULL, NULL, "safe_mode"),
652 { .reg_offset = OMAP_MUX_TERMINATOR },
653};
654
655/*
656 * Signals different on CBC package compared to the superset
657 */
658#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBC)
659struct omap_mux __initdata omap3_cbc_subset[] = {
660 { .reg_offset = OMAP_MUX_TERMINATOR },
661};
662#else
663#define omap3_cbc_subset NULL
664#endif
665
666/*
667 * Balls for CBC package
668 * 515-pin s-PBGA Package, 0.65mm Ball Pitch (Top), 0.50mm Ball Pitch (Bottom)
669 *
670 * FIXME: What's up with the outdated TI documentation? See:
671 *
672 * http://wiki.davincidsp.com/index.php/Datasheet_Errata_for_OMAP35x_CBC_Package
673 * http://community.ti.com/forums/t/10982.aspx
674 */
675#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
676 && defined(CONFIG_OMAP_PACKAGE_CBC)
677struct omap_ball __initdata omap3_cbc_ball[] = {
678 _OMAP3_BALLENTRY(CAM_D0, "ae16", NULL),
679 _OMAP3_BALLENTRY(CAM_D1, "ae15", NULL),
680 _OMAP3_BALLENTRY(CAM_D10, "d25", NULL),
681 _OMAP3_BALLENTRY(CAM_D11, "e26", NULL),
682 _OMAP3_BALLENTRY(CAM_D2, "a24", NULL),
683 _OMAP3_BALLENTRY(CAM_D3, "b24", NULL),
684 _OMAP3_BALLENTRY(CAM_D4, "d24", NULL),
685 _OMAP3_BALLENTRY(CAM_D5, "c24", NULL),
686 _OMAP3_BALLENTRY(CAM_D6, "p25", NULL),
687 _OMAP3_BALLENTRY(CAM_D7, "p26", NULL),
688 _OMAP3_BALLENTRY(CAM_D8, "n25", NULL),
689 _OMAP3_BALLENTRY(CAM_D9, "n26", NULL),
690 _OMAP3_BALLENTRY(CAM_FLD, "b23", NULL),
691 _OMAP3_BALLENTRY(CAM_HS, "c23", NULL),
692 _OMAP3_BALLENTRY(CAM_PCLK, "c26", NULL),
693 _OMAP3_BALLENTRY(CAM_STROBE, "d26", NULL),
694 _OMAP3_BALLENTRY(CAM_VS, "d23", NULL),
695 _OMAP3_BALLENTRY(CAM_WEN, "a23", NULL),
696 _OMAP3_BALLENTRY(CAM_XCLKA, "c25", NULL),
697 _OMAP3_BALLENTRY(CAM_XCLKB, "e25", NULL),
698 _OMAP3_BALLENTRY(CSI2_DX0, "ad17", NULL),
699 _OMAP3_BALLENTRY(CSI2_DX1, "ae18", NULL),
700 _OMAP3_BALLENTRY(CSI2_DY0, "ad16", NULL),
701 _OMAP3_BALLENTRY(CSI2_DY1, "ae17", NULL),
702 _OMAP3_BALLENTRY(DSS_ACBIAS, "f26", NULL),
703 _OMAP3_BALLENTRY(DSS_DATA0, "ae21", NULL),
704 _OMAP3_BALLENTRY(DSS_DATA1, "ae22", NULL),
705 _OMAP3_BALLENTRY(DSS_DATA10, "ac26", NULL),
706 _OMAP3_BALLENTRY(DSS_DATA11, "ad26", NULL),
707 _OMAP3_BALLENTRY(DSS_DATA12, "aa25", NULL),
708 _OMAP3_BALLENTRY(DSS_DATA13, "y25", NULL),
709 _OMAP3_BALLENTRY(DSS_DATA14, "aa26", NULL),
710 _OMAP3_BALLENTRY(DSS_DATA15, "ab26", NULL),
711 _OMAP3_BALLENTRY(DSS_DATA16, "l25", NULL),
712 _OMAP3_BALLENTRY(DSS_DATA17, "l26", NULL),
713 _OMAP3_BALLENTRY(DSS_DATA18, "m24", NULL),
714 _OMAP3_BALLENTRY(DSS_DATA19, "m26", NULL),
715 _OMAP3_BALLENTRY(DSS_DATA2, "ae23", NULL),
716 _OMAP3_BALLENTRY(DSS_DATA20, "f25", NULL),
717 _OMAP3_BALLENTRY(DSS_DATA21, "n24", NULL),
718 _OMAP3_BALLENTRY(DSS_DATA22, "ac25", NULL),
719 _OMAP3_BALLENTRY(DSS_DATA23, "ab25", NULL),
720 _OMAP3_BALLENTRY(DSS_DATA3, "ae24", NULL),
721 _OMAP3_BALLENTRY(DSS_DATA4, "ad23", NULL),
722 _OMAP3_BALLENTRY(DSS_DATA5, "ad24", NULL),
723 _OMAP3_BALLENTRY(DSS_DATA6, "g26", NULL),
724 _OMAP3_BALLENTRY(DSS_DATA7, "h25", NULL),
725 _OMAP3_BALLENTRY(DSS_DATA8, "h26", NULL),
726 _OMAP3_BALLENTRY(DSS_DATA9, "j26", NULL),
727 _OMAP3_BALLENTRY(DSS_HSYNC, "k24", NULL),
728 _OMAP3_BALLENTRY(DSS_PCLK, "g25", NULL),
729 _OMAP3_BALLENTRY(DSS_VSYNC, "m25", NULL),
730 _OMAP3_BALLENTRY(ETK_CLK, "ab2", NULL),
731 _OMAP3_BALLENTRY(ETK_CTL, "ab3", NULL),
732 _OMAP3_BALLENTRY(ETK_D0, "ac3", NULL),
733 _OMAP3_BALLENTRY(ETK_D1, "ad4", NULL),
734 _OMAP3_BALLENTRY(ETK_D10, "ae4", NULL),
735 _OMAP3_BALLENTRY(ETK_D11, "af6", NULL),
736 _OMAP3_BALLENTRY(ETK_D12, "ae6", NULL),
737 _OMAP3_BALLENTRY(ETK_D13, "af7", NULL),
738 _OMAP3_BALLENTRY(ETK_D14, "af9", NULL),
739 _OMAP3_BALLENTRY(ETK_D15, "ae9", NULL),
740 _OMAP3_BALLENTRY(ETK_D2, "ad3", NULL),
741 _OMAP3_BALLENTRY(ETK_D3, "aa3", NULL),
742 _OMAP3_BALLENTRY(ETK_D4, "y3", NULL),
743 _OMAP3_BALLENTRY(ETK_D5, "ab1", NULL),
744 _OMAP3_BALLENTRY(ETK_D6, "ae3", NULL),
745 _OMAP3_BALLENTRY(ETK_D7, "ad2", NULL),
746 _OMAP3_BALLENTRY(ETK_D8, "aa4", NULL),
747 _OMAP3_BALLENTRY(ETK_D9, "v2", NULL),
748 _OMAP3_BALLENTRY(GPMC_A1, "j2", NULL),
749 _OMAP3_BALLENTRY(GPMC_A10, "d2", NULL),
750 _OMAP3_BALLENTRY(GPMC_A2, "h1", NULL),
751 _OMAP3_BALLENTRY(GPMC_A3, "h2", NULL),
752 _OMAP3_BALLENTRY(GPMC_A4, "g2", NULL),
753 _OMAP3_BALLENTRY(GPMC_A5, "f1", NULL),
754 _OMAP3_BALLENTRY(GPMC_A6, "f2", NULL),
755 _OMAP3_BALLENTRY(GPMC_A7, "e1", NULL),
756 _OMAP3_BALLENTRY(GPMC_A8, "e2", NULL),
757 _OMAP3_BALLENTRY(GPMC_A9, "d1", NULL),
758 _OMAP3_BALLENTRY(GPMC_CLK, "n1", "l1"),
759 _OMAP3_BALLENTRY(GPMC_D10, "t1", "n1"),
760 _OMAP3_BALLENTRY(GPMC_D11, "u2", "p2"),
761 _OMAP3_BALLENTRY(GPMC_D12, "u1", "p1"),
762 _OMAP3_BALLENTRY(GPMC_D13, "p1", "m1"),
763 _OMAP3_BALLENTRY(GPMC_D14, "l2", "j2"),
764 _OMAP3_BALLENTRY(GPMC_D15, "m2", "k2"),
765 _OMAP3_BALLENTRY(GPMC_D8, "v1", "r1"),
766 _OMAP3_BALLENTRY(GPMC_D9, "y1", "t1"),
767 _OMAP3_BALLENTRY(GPMC_NBE0_CLE, "k2", NULL),
768 _OMAP3_BALLENTRY(GPMC_NBE1, "j1", NULL),
769 _OMAP3_BALLENTRY(GPMC_NCS1, "ad1", "w1"),
770 _OMAP3_BALLENTRY(GPMC_NCS2, "a3", NULL),
771 _OMAP3_BALLENTRY(GPMC_NCS3, "b6", NULL),
772 _OMAP3_BALLENTRY(GPMC_NCS4, "b4", NULL),
773 _OMAP3_BALLENTRY(GPMC_NCS5, "c4", NULL),
774 _OMAP3_BALLENTRY(GPMC_NCS6, "b5", NULL),
775 _OMAP3_BALLENTRY(GPMC_NCS7, "c5", NULL),
776 _OMAP3_BALLENTRY(GPMC_NWP, "ac6", "y5"),
777 _OMAP3_BALLENTRY(GPMC_WAIT1, "ac8", "y8"),
778 _OMAP3_BALLENTRY(GPMC_WAIT2, "b3", NULL),
779 _OMAP3_BALLENTRY(GPMC_WAIT3, "c6", NULL),
780 _OMAP3_BALLENTRY(HDQ_SIO, "j23", NULL),
781 _OMAP3_BALLENTRY(HSUSB0_CLK, "w19", NULL),
782 _OMAP3_BALLENTRY(HSUSB0_DATA0, "v20", NULL),
783 _OMAP3_BALLENTRY(HSUSB0_DATA1, "y20", NULL),
784 _OMAP3_BALLENTRY(HSUSB0_DATA2, "v18", NULL),
785 _OMAP3_BALLENTRY(HSUSB0_DATA3, "w20", NULL),
786 _OMAP3_BALLENTRY(HSUSB0_DATA4, "w17", NULL),
787 _OMAP3_BALLENTRY(HSUSB0_DATA5, "y18", NULL),
788 _OMAP3_BALLENTRY(HSUSB0_DATA6, "y19", NULL),
789 _OMAP3_BALLENTRY(HSUSB0_DATA7, "y17", NULL),
790 _OMAP3_BALLENTRY(HSUSB0_DIR, "v19", NULL),
791 _OMAP3_BALLENTRY(HSUSB0_NXT, "w18", NULL),
792 _OMAP3_BALLENTRY(HSUSB0_STP, "u20", NULL),
793 _OMAP3_BALLENTRY(I2C2_SCL, "c2", NULL),
794 _OMAP3_BALLENTRY(I2C2_SDA, "c1", NULL),
795 _OMAP3_BALLENTRY(I2C3_SCL, "ab4", NULL),
796 _OMAP3_BALLENTRY(I2C3_SDA, "ac4", NULL),
797 _OMAP3_BALLENTRY(I2C4_SCL, "ad15", NULL),
798 _OMAP3_BALLENTRY(I2C4_SDA, "w16", NULL),
799 _OMAP3_BALLENTRY(JTAG_EMU0, "y15", NULL),
800 _OMAP3_BALLENTRY(JTAG_EMU1, "y14", NULL),
801 _OMAP3_BALLENTRY(MCBSP1_CLKR, "u19", NULL),
802 _OMAP3_BALLENTRY(MCBSP1_CLKX, "t17", NULL),
803 _OMAP3_BALLENTRY(MCBSP1_DR, "t20", NULL),
804 _OMAP3_BALLENTRY(MCBSP1_DX, "u17", NULL),
805 _OMAP3_BALLENTRY(MCBSP1_FSR, "v17", NULL),
806 _OMAP3_BALLENTRY(MCBSP1_FSX, "p20", NULL),
807 _OMAP3_BALLENTRY(MCBSP2_CLKX, "r18", NULL),
808 _OMAP3_BALLENTRY(MCBSP2_DR, "t18", NULL),
809 _OMAP3_BALLENTRY(MCBSP2_DX, "r19", NULL),
810 _OMAP3_BALLENTRY(MCBSP2_FSX, "u18", NULL),
811 _OMAP3_BALLENTRY(MCBSP3_CLKX, "u3", NULL),
812 _OMAP3_BALLENTRY(MCBSP3_DR, "n3", NULL),
813 _OMAP3_BALLENTRY(MCBSP3_DX, "p3", NULL),
814 _OMAP3_BALLENTRY(MCBSP3_FSX, "w3", NULL),
815 _OMAP3_BALLENTRY(MCBSP4_CLKX, "v3", NULL),
816 _OMAP3_BALLENTRY(MCBSP4_DR, "u4", NULL),
817 _OMAP3_BALLENTRY(MCBSP4_DX, "r3", NULL),
818 _OMAP3_BALLENTRY(MCBSP4_FSX, "t3", NULL),
819 _OMAP3_BALLENTRY(MCBSP_CLKS, "t19", NULL),
820 _OMAP3_BALLENTRY(MCSPI1_CLK, "p9", NULL),
821 _OMAP3_BALLENTRY(MCSPI1_CS0, "r7", NULL),
822 _OMAP3_BALLENTRY(MCSPI1_CS1, "r8", NULL),
823 _OMAP3_BALLENTRY(MCSPI1_CS2, "r9", NULL),
824 _OMAP3_BALLENTRY(MCSPI1_CS3, "t8", NULL),
825 _OMAP3_BALLENTRY(MCSPI1_SIMO, "p8", NULL),
826 _OMAP3_BALLENTRY(MCSPI1_SOMI, "p7", NULL),
827 _OMAP3_BALLENTRY(MCSPI2_CLK, "w7", NULL),
828 _OMAP3_BALLENTRY(MCSPI2_CS0, "v8", NULL),
829 _OMAP3_BALLENTRY(MCSPI2_CS1, "v9", NULL),
830 _OMAP3_BALLENTRY(MCSPI2_SIMO, "w8", NULL),
831 _OMAP3_BALLENTRY(MCSPI2_SOMI, "u8", NULL),
832 _OMAP3_BALLENTRY(SDMMC1_CLK, "n19", NULL),
833 _OMAP3_BALLENTRY(SDMMC1_CMD, "l18", NULL),
834 _OMAP3_BALLENTRY(SDMMC1_DAT0, "m19", NULL),
835 _OMAP3_BALLENTRY(SDMMC1_DAT1, "m18", NULL),
836 _OMAP3_BALLENTRY(SDMMC1_DAT2, "k18", NULL),
837 _OMAP3_BALLENTRY(SDMMC1_DAT3, "n20", NULL),
838 _OMAP3_BALLENTRY(SDMMC1_DAT4, "m20", NULL),
839 _OMAP3_BALLENTRY(SDMMC1_DAT5, "p17", NULL),
840 _OMAP3_BALLENTRY(SDMMC1_DAT6, "p18", NULL),
841 _OMAP3_BALLENTRY(SDMMC1_DAT7, "p19", NULL),
842 _OMAP3_BALLENTRY(SDMMC2_CLK, "w10", NULL),
843 _OMAP3_BALLENTRY(SDMMC2_CMD, "r10", NULL),
844 _OMAP3_BALLENTRY(SDMMC2_DAT0, "t10", NULL),
845 _OMAP3_BALLENTRY(SDMMC2_DAT1, "t9", NULL),
846 _OMAP3_BALLENTRY(SDMMC2_DAT2, "u10", NULL),
847 _OMAP3_BALLENTRY(SDMMC2_DAT3, "u9", NULL),
848 _OMAP3_BALLENTRY(SDMMC2_DAT4, "v10", NULL),
849 _OMAP3_BALLENTRY(SDMMC2_DAT5, "m3", NULL),
850 _OMAP3_BALLENTRY(SDMMC2_DAT6, "l3", NULL),
851 _OMAP3_BALLENTRY(SDMMC2_DAT7, "k3", NULL),
852 _OMAP3_BALLENTRY(SYS_BOOT0, "f3", NULL),
853 _OMAP3_BALLENTRY(SYS_BOOT1, "d3", NULL),
854 _OMAP3_BALLENTRY(SYS_BOOT2, "c3", NULL),
855 _OMAP3_BALLENTRY(SYS_BOOT3, "e3", NULL),
856 _OMAP3_BALLENTRY(SYS_BOOT4, "e4", NULL),
857 _OMAP3_BALLENTRY(SYS_BOOT5, "g3", NULL),
858 _OMAP3_BALLENTRY(SYS_BOOT6, "d4", NULL),
859 _OMAP3_BALLENTRY(SYS_CLKOUT1, "ae14", NULL),
860 _OMAP3_BALLENTRY(SYS_CLKOUT2, "w11", NULL),
861 _OMAP3_BALLENTRY(SYS_CLKREQ, "w15", NULL),
862 _OMAP3_BALLENTRY(SYS_NIRQ, "v16", NULL),
863 _OMAP3_BALLENTRY(SYS_NRESWARM, "ad7", "aa5"),
864 _OMAP3_BALLENTRY(SYS_OFF_MODE, "v12", NULL),
865 _OMAP3_BALLENTRY(UART1_CTS, "w2", NULL),
866 _OMAP3_BALLENTRY(UART1_RTS, "r2", NULL),
867 _OMAP3_BALLENTRY(UART1_RX, "h3", NULL),
868 _OMAP3_BALLENTRY(UART1_TX, "l4", NULL),
869 _OMAP3_BALLENTRY(UART2_CTS, "y24", NULL),
870 _OMAP3_BALLENTRY(UART2_RTS, "aa24", NULL),
871 _OMAP3_BALLENTRY(UART2_RX, "ad21", NULL),
872 _OMAP3_BALLENTRY(UART2_TX, "ad22", NULL),
873 _OMAP3_BALLENTRY(UART3_CTS_RCTX, "f23", NULL),
874 _OMAP3_BALLENTRY(UART3_RTS_SD, "f24", NULL),
875 _OMAP3_BALLENTRY(UART3_RX_IRRX, "h24", NULL),
876 _OMAP3_BALLENTRY(UART3_TX_IRTX, "g24", NULL),
877 { .reg_offset = OMAP_MUX_TERMINATOR },
878};
879#else
880#define omap3_cbc_ball NULL
881#endif
882
883/*
884 * Signals different on CUS package compared to superset
885 */
886#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CUS)
887struct omap_mux __initdata omap3_cus_subset[] = {
888 _OMAP3_MUXENTRY(CAM_D10, 109,
889 "cam_d10", NULL, NULL, NULL,
890 "gpio_109", NULL, NULL, "safe_mode"),
891 _OMAP3_MUXENTRY(CAM_D11, 110,
892 "cam_d11", NULL, NULL, NULL,
893 "gpio_110", NULL, NULL, "safe_mode"),
894 _OMAP3_MUXENTRY(CAM_D2, 101,
895 "cam_d2", NULL, NULL, NULL,
896 "gpio_101", NULL, NULL, "safe_mode"),
897 _OMAP3_MUXENTRY(CAM_D3, 102,
898 "cam_d3", NULL, NULL, NULL,
899 "gpio_102", NULL, NULL, "safe_mode"),
900 _OMAP3_MUXENTRY(CAM_D4, 103,
901 "cam_d4", NULL, NULL, NULL,
902 "gpio_103", NULL, NULL, "safe_mode"),
903 _OMAP3_MUXENTRY(CAM_D5, 104,
904 "cam_d5", NULL, NULL, NULL,
905 "gpio_104", NULL, NULL, "safe_mode"),
906 _OMAP3_MUXENTRY(CAM_FLD, 98,
907 "cam_fld", NULL, "cam_global_reset", NULL,
908 "gpio_98", NULL, NULL, "safe_mode"),
909 _OMAP3_MUXENTRY(CAM_HS, 94,
910 "cam_hs", NULL, NULL, NULL,
911 "gpio_94", NULL, NULL, "safe_mode"),
912 _OMAP3_MUXENTRY(CAM_PCLK, 97,
913 "cam_pclk", NULL, NULL, NULL,
914 "gpio_97", NULL, NULL, "safe_mode"),
915 _OMAP3_MUXENTRY(CAM_STROBE, 126,
916 "cam_strobe", NULL, NULL, NULL,
917 "gpio_126", NULL, NULL, "safe_mode"),
918 _OMAP3_MUXENTRY(CAM_VS, 95,
919 "cam_vs", NULL, NULL, NULL,
920 "gpio_95", NULL, NULL, "safe_mode"),
921 _OMAP3_MUXENTRY(CAM_WEN, 167,
922 "cam_wen", NULL, "cam_shutter", NULL,
923 "gpio_167", NULL, NULL, "safe_mode"),
924 _OMAP3_MUXENTRY(DSS_DATA6, 76,
925 "dss_data6", NULL, "uart1_tx", NULL,
926 "gpio_76", NULL, NULL, "safe_mode"),
927 _OMAP3_MUXENTRY(DSS_DATA7, 77,
928 "dss_data7", NULL, "uart1_rx", NULL,
929 "gpio_77", NULL, NULL, "safe_mode"),
930 _OMAP3_MUXENTRY(DSS_DATA8, 78,
931 "dss_data8", NULL, NULL, NULL,
932 "gpio_78", NULL, NULL, "safe_mode"),
933 _OMAP3_MUXENTRY(DSS_DATA9, 79,
934 "dss_data9", NULL, NULL, NULL,
935 "gpio_79", NULL, NULL, "safe_mode"),
936 _OMAP3_MUXENTRY(DSS_HSYNC, 67,
937 "dss_hsync", NULL, NULL, NULL,
938 "gpio_67", NULL, NULL, "safe_mode"),
939 _OMAP3_MUXENTRY(DSS_PCLK, 66,
940 "dss_pclk", NULL, NULL, NULL,
941 "gpio_66", NULL, NULL, "safe_mode"),
942 _OMAP3_MUXENTRY(ETK_CLK, 12,
943 "etk_clk", "mcbsp5_clkx", "sdmmc3_clk", "hsusb1_stp",
944 "gpio_12", "mm1_rxdp", "hsusb1_tll_stp", NULL),
945 _OMAP3_MUXENTRY(ETK_CTL, 13,
946 "etk_ctl", NULL, "sdmmc3_cmd", "hsusb1_clk",
947 "gpio_13", NULL, "hsusb1_tll_clk", NULL),
948 _OMAP3_MUXENTRY(ETK_D0, 14,
949 "etk_d0", "mcspi3_simo", "sdmmc3_dat4", "hsusb1_data0",
950 "gpio_14", "mm1_rxrcv", "hsusb1_tll_data0", NULL),
951 _OMAP3_MUXENTRY(ETK_D1, 15,
952 "etk_d1", "mcspi3_somi", NULL, "hsusb1_data1",
953 "gpio_15", "mm1_txse0", "hsusb1_tll_data1", NULL),
954 _OMAP3_MUXENTRY(ETK_D10, 24,
955 "etk_d10", NULL, "uart1_rx", "hsusb2_clk",
956 "gpio_24", NULL, "hsusb2_tll_clk", NULL),
957 _OMAP3_MUXENTRY(ETK_D11, 25,
958 "etk_d11", NULL, NULL, "hsusb2_stp",
959 "gpio_25", "mm2_rxdp", "hsusb2_tll_stp", NULL),
960 _OMAP3_MUXENTRY(ETK_D12, 26,
961 "etk_d12", NULL, NULL, "hsusb2_dir",
962 "gpio_26", NULL, "hsusb2_tll_dir", NULL),
963 _OMAP3_MUXENTRY(ETK_D13, 27,
964 "etk_d13", NULL, NULL, "hsusb2_nxt",
965 "gpio_27", "mm2_rxdm", "hsusb2_tll_nxt", NULL),
966 _OMAP3_MUXENTRY(ETK_D14, 28,
967 "etk_d14", NULL, NULL, "hsusb2_data0",
968 "gpio_28", "mm2_rxrcv", "hsusb2_tll_data0", NULL),
969 _OMAP3_MUXENTRY(ETK_D15, 29,
970 "etk_d15", NULL, NULL, "hsusb2_data1",
971 "gpio_29", "mm2_txse0", "hsusb2_tll_data1", NULL),
972 _OMAP3_MUXENTRY(ETK_D2, 16,
973 "etk_d2", "mcspi3_cs0", NULL, "hsusb1_data2",
974 "gpio_16", "mm1_txdat", "hsusb1_tll_data2", NULL),
975 _OMAP3_MUXENTRY(ETK_D3, 17,
976 "etk_d3", "mcspi3_clk", "sdmmc3_dat3", "hsusb1_data7",
977 "gpio_17", NULL, "hsusb1_tll_data7", NULL),
978 _OMAP3_MUXENTRY(ETK_D4, 18,
979 "etk_d4", "mcbsp5_dr", "sdmmc3_dat0", "hsusb1_data4",
980 "gpio_18", NULL, "hsusb1_tll_data4", NULL),
981 _OMAP3_MUXENTRY(ETK_D5, 19,
982 "etk_d5", "mcbsp5_fsx", "sdmmc3_dat1", "hsusb1_data5",
983 "gpio_19", NULL, "hsusb1_tll_data5", NULL),
984 _OMAP3_MUXENTRY(ETK_D6, 20,
985 "etk_d6", "mcbsp5_dx", "sdmmc3_dat2", "hsusb1_data6",
986 "gpio_20", NULL, "hsusb1_tll_data6", NULL),
987 _OMAP3_MUXENTRY(ETK_D7, 21,
988 "etk_d7", "mcspi3_cs1", "sdmmc3_dat7", "hsusb1_data3",
989 "gpio_21", "mm1_txen_n", "hsusb1_tll_data3", NULL),
990 _OMAP3_MUXENTRY(ETK_D8, 22,
991 "etk_d8", "sys_drm_msecure", "sdmmc3_dat6", "hsusb1_dir",
992 "gpio_22", NULL, "hsusb1_tll_dir", NULL),
993 _OMAP3_MUXENTRY(ETK_D9, 23,
994 "etk_d9", "sys_secure_indicator", "sdmmc3_dat5", "hsusb1_nxt",
995 "gpio_23", "mm1_rxdm", "hsusb1_tll_nxt", NULL),
996 _OMAP3_MUXENTRY(MCBSP3_CLKX, 142,
997 "mcbsp3_clkx", "uart2_tx", NULL, NULL,
998 "gpio_142", NULL, NULL, "safe_mode"),
999 _OMAP3_MUXENTRY(MCBSP3_DR, 141,
1000 "mcbsp3_dr", "uart2_rts", NULL, NULL,
1001 "gpio_141", NULL, NULL, "safe_mode"),
1002 _OMAP3_MUXENTRY(MCBSP3_DX, 140,
1003 "mcbsp3_dx", "uart2_cts", NULL, NULL,
1004 "gpio_140", NULL, NULL, "safe_mode"),
1005 _OMAP3_MUXENTRY(MCBSP3_FSX, 143,
1006 "mcbsp3_fsx", "uart2_rx", NULL, NULL,
1007 "gpio_143", NULL, NULL, "safe_mode"),
1008 _OMAP3_MUXENTRY(SDMMC2_DAT5, 137,
1009 "sdmmc2_dat5", "sdmmc2_dir_dat1",
1010 "cam_global_reset", "sdmmc3_dat1",
1011 "gpio_137", NULL, NULL, "safe_mode"),
1012 _OMAP3_MUXENTRY(SDMMC2_DAT6, 138,
1013 "sdmmc2_dat6", "sdmmc2_dir_cmd", "cam_shutter", "sdmmc3_dat2",
1014 "gpio_138", NULL, NULL, "safe_mode"),
1015 _OMAP3_MUXENTRY(SDMMC2_DAT7, 139,
1016 "sdmmc2_dat7", "sdmmc2_clkin", NULL, "sdmmc3_dat3",
1017 "gpio_139", NULL, NULL, "safe_mode"),
1018 _OMAP3_MUXENTRY(UART1_CTS, 150,
1019 "uart1_cts", NULL, NULL, NULL,
1020 "gpio_150", NULL, NULL, "safe_mode"),
1021 { .reg_offset = OMAP_MUX_TERMINATOR },
1022};
1023#else
1024#define omap3_cus_subset NULL
1025#endif
1026
1027/*
1028 * Balls for CUS package
1029 * 423-pin s-PBGA Package, 0.65mm Ball Pitch (Bottom)
1030 */
1031#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
1032 && defined(CONFIG_OMAP_PACKAGE_CUS)
1033struct omap_ball __initdata omap3_cus_ball[] = {
1034 _OMAP3_BALLENTRY(CAM_D0, "ab18", NULL),
1035 _OMAP3_BALLENTRY(CAM_D1, "ac18", NULL),
1036 _OMAP3_BALLENTRY(CAM_D10, "f21", NULL),
1037 _OMAP3_BALLENTRY(CAM_D11, "g21", NULL),
1038 _OMAP3_BALLENTRY(CAM_D2, "g19", NULL),
1039 _OMAP3_BALLENTRY(CAM_D3, "f19", NULL),
1040 _OMAP3_BALLENTRY(CAM_D4, "g20", NULL),
1041 _OMAP3_BALLENTRY(CAM_D5, "b21", NULL),
1042 _OMAP3_BALLENTRY(CAM_D6, "l24", NULL),
1043 _OMAP3_BALLENTRY(CAM_D7, "k24", NULL),
1044 _OMAP3_BALLENTRY(CAM_D8, "j23", NULL),
1045 _OMAP3_BALLENTRY(CAM_D9, "k23", NULL),
1046 _OMAP3_BALLENTRY(CAM_FLD, "h24", NULL),
1047 _OMAP3_BALLENTRY(CAM_HS, "a22", NULL),
1048 _OMAP3_BALLENTRY(CAM_PCLK, "j19", NULL),
1049 _OMAP3_BALLENTRY(CAM_STROBE, "j20", NULL),
1050 _OMAP3_BALLENTRY(CAM_VS, "e18", NULL),
1051 _OMAP3_BALLENTRY(CAM_WEN, "f18", NULL),
1052 _OMAP3_BALLENTRY(CAM_XCLKA, "b22", NULL),
1053 _OMAP3_BALLENTRY(CAM_XCLKB, "c22", NULL),
1054 _OMAP3_BALLENTRY(DSS_ACBIAS, "j21", NULL),
1055 _OMAP3_BALLENTRY(DSS_DATA0, "ac19", NULL),
1056 _OMAP3_BALLENTRY(DSS_DATA1, "ab19", NULL),
1057 _OMAP3_BALLENTRY(DSS_DATA10, "ac22", NULL),
1058 _OMAP3_BALLENTRY(DSS_DATA11, "ac23", NULL),
1059 _OMAP3_BALLENTRY(DSS_DATA12, "ab22", NULL),
1060 _OMAP3_BALLENTRY(DSS_DATA13, "y22", NULL),
1061 _OMAP3_BALLENTRY(DSS_DATA14, "w22", NULL),
1062 _OMAP3_BALLENTRY(DSS_DATA15, "v22", NULL),
1063 _OMAP3_BALLENTRY(DSS_DATA16, "j22", NULL),
1064 _OMAP3_BALLENTRY(DSS_DATA17, "g23", NULL),
1065 _OMAP3_BALLENTRY(DSS_DATA18, "g24", NULL),
1066 _OMAP3_BALLENTRY(DSS_DATA19, "h23", NULL),
1067 _OMAP3_BALLENTRY(DSS_DATA2, "ad20", NULL),
1068 _OMAP3_BALLENTRY(DSS_DATA20, "d23", NULL),
1069 _OMAP3_BALLENTRY(DSS_DATA21, "k22", NULL),
1070 _OMAP3_BALLENTRY(DSS_DATA22, "v21", NULL),
1071 _OMAP3_BALLENTRY(DSS_DATA23, "w21", NULL),
1072 _OMAP3_BALLENTRY(DSS_DATA3, "ac20", NULL),
1073 _OMAP3_BALLENTRY(DSS_DATA4, "ad21", NULL),
1074 _OMAP3_BALLENTRY(DSS_DATA5, "ac21", NULL),
1075 _OMAP3_BALLENTRY(DSS_DATA6, "d24", NULL),
1076 _OMAP3_BALLENTRY(DSS_DATA7, "e23", NULL),
1077 _OMAP3_BALLENTRY(DSS_DATA8, "e24", NULL),
1078 _OMAP3_BALLENTRY(DSS_DATA9, "f23", NULL),
1079 _OMAP3_BALLENTRY(DSS_HSYNC, "e22", NULL),
1080 _OMAP3_BALLENTRY(DSS_PCLK, "g22", NULL),
1081 _OMAP3_BALLENTRY(DSS_VSYNC, "f22", NULL),
1082 _OMAP3_BALLENTRY(ETK_CLK, "ac1", NULL),
1083 _OMAP3_BALLENTRY(ETK_CTL, "ad3", NULL),
1084 _OMAP3_BALLENTRY(ETK_D0, "ad6", NULL),
1085 _OMAP3_BALLENTRY(ETK_D1, "ac6", NULL),
1086 _OMAP3_BALLENTRY(ETK_D10, "ac3", NULL),
1087 _OMAP3_BALLENTRY(ETK_D11, "ac9", NULL),
1088 _OMAP3_BALLENTRY(ETK_D12, "ac10", NULL),
1089 _OMAP3_BALLENTRY(ETK_D13, "ad11", NULL),
1090 _OMAP3_BALLENTRY(ETK_D14, "ac11", NULL),
1091 _OMAP3_BALLENTRY(ETK_D15, "ad12", NULL),
1092 _OMAP3_BALLENTRY(ETK_D2, "ac7", NULL),
1093 _OMAP3_BALLENTRY(ETK_D3, "ad8", NULL),
1094 _OMAP3_BALLENTRY(ETK_D4, "ac5", NULL),
1095 _OMAP3_BALLENTRY(ETK_D5, "ad2", NULL),
1096 _OMAP3_BALLENTRY(ETK_D6, "ac8", NULL),
1097 _OMAP3_BALLENTRY(ETK_D7, "ad9", NULL),
1098 _OMAP3_BALLENTRY(ETK_D8, "ac4", NULL),
1099 _OMAP3_BALLENTRY(ETK_D9, "ad5", NULL),
1100 _OMAP3_BALLENTRY(GPMC_A1, "k4", NULL),
1101 _OMAP3_BALLENTRY(GPMC_A10, "g2", NULL),
1102 _OMAP3_BALLENTRY(GPMC_A2, "k3", NULL),
1103 _OMAP3_BALLENTRY(GPMC_A3, "k2", NULL),
1104 _OMAP3_BALLENTRY(GPMC_A4, "j4", NULL),
1105 _OMAP3_BALLENTRY(GPMC_A5, "j3", NULL),
1106 _OMAP3_BALLENTRY(GPMC_A6, "j2", NULL),
1107 _OMAP3_BALLENTRY(GPMC_A7, "j1", NULL),
1108 _OMAP3_BALLENTRY(GPMC_A8, "h1", NULL),
1109 _OMAP3_BALLENTRY(GPMC_A9, "h2", NULL),
1110 _OMAP3_BALLENTRY(GPMC_CLK, "w2", NULL),
1111 _OMAP3_BALLENTRY(GPMC_D10, "u1", NULL),
1112 _OMAP3_BALLENTRY(GPMC_D11, "r3", NULL),
1113 _OMAP3_BALLENTRY(GPMC_D12, "t3", NULL),
1114 _OMAP3_BALLENTRY(GPMC_D13, "u2", NULL),
1115 _OMAP3_BALLENTRY(GPMC_D14, "v1", NULL),
1116 _OMAP3_BALLENTRY(GPMC_D15, "v2", NULL),
1117 _OMAP3_BALLENTRY(GPMC_D8, "r2", NULL),
1118 _OMAP3_BALLENTRY(GPMC_D9, "t2", NULL),
1119 _OMAP3_BALLENTRY(GPMC_NBE0_CLE, "k5", NULL),
1120 _OMAP3_BALLENTRY(GPMC_NBE1, "l1", NULL),
1121 _OMAP3_BALLENTRY(GPMC_NCS3, "d2", NULL),
1122 _OMAP3_BALLENTRY(GPMC_NCS4, "f4", NULL),
1123 _OMAP3_BALLENTRY(GPMC_NCS5, "g5", NULL),
1124 _OMAP3_BALLENTRY(GPMC_NCS6, "f3", NULL),
1125 _OMAP3_BALLENTRY(GPMC_NCS7, "g4", NULL),
1126 _OMAP3_BALLENTRY(GPMC_NWP, "e1", NULL),
1127 _OMAP3_BALLENTRY(GPMC_WAIT3, "c2", NULL),
1128 _OMAP3_BALLENTRY(HDQ_SIO, "a24", NULL),
1129 _OMAP3_BALLENTRY(HSUSB0_CLK, "r21", NULL),
1130 _OMAP3_BALLENTRY(HSUSB0_DATA0, "t24", NULL),
1131 _OMAP3_BALLENTRY(HSUSB0_DATA1, "t23", NULL),
1132 _OMAP3_BALLENTRY(HSUSB0_DATA2, "u24", NULL),
1133 _OMAP3_BALLENTRY(HSUSB0_DATA3, "u23", NULL),
1134 _OMAP3_BALLENTRY(HSUSB0_DATA4, "w24", NULL),
1135 _OMAP3_BALLENTRY(HSUSB0_DATA5, "v23", NULL),
1136 _OMAP3_BALLENTRY(HSUSB0_DATA6, "w23", NULL),
1137 _OMAP3_BALLENTRY(HSUSB0_DATA7, "t22", NULL),
1138 _OMAP3_BALLENTRY(HSUSB0_DIR, "p23", NULL),
1139 _OMAP3_BALLENTRY(HSUSB0_NXT, "r22", NULL),
1140 _OMAP3_BALLENTRY(HSUSB0_STP, "r23", NULL),
1141 _OMAP3_BALLENTRY(I2C2_SCL, "ac15", NULL),
1142 _OMAP3_BALLENTRY(I2C2_SDA, "ac14", NULL),
1143 _OMAP3_BALLENTRY(I2C3_SCL, "ac13", NULL),
1144 _OMAP3_BALLENTRY(I2C3_SDA, "ac12", NULL),
1145 _OMAP3_BALLENTRY(I2C4_SCL, "y16", NULL),
1146 _OMAP3_BALLENTRY(I2C4_SDA, "y15", NULL),
1147 _OMAP3_BALLENTRY(JTAG_EMU0, "ac24", NULL),
1148 _OMAP3_BALLENTRY(JTAG_EMU1, "ad24", NULL),
1149 _OMAP3_BALLENTRY(MCBSP1_CLKR, "w19", NULL),
1150 _OMAP3_BALLENTRY(MCBSP1_CLKX, "v18", NULL),
1151 _OMAP3_BALLENTRY(MCBSP1_DR, "y18", NULL),
1152 _OMAP3_BALLENTRY(MCBSP1_DX, "w18", NULL),
1153 _OMAP3_BALLENTRY(MCBSP1_FSR, "ab20", NULL),
1154 _OMAP3_BALLENTRY(MCBSP1_FSX, "aa19", NULL),
1155 _OMAP3_BALLENTRY(MCBSP2_CLKX, "t21", NULL),
1156 _OMAP3_BALLENTRY(MCBSP2_DR, "v19", NULL),
1157 _OMAP3_BALLENTRY(MCBSP2_DX, "r20", NULL),
1158 _OMAP3_BALLENTRY(MCBSP2_FSX, "v20", NULL),
1159 _OMAP3_BALLENTRY(MCBSP3_CLKX, "w4", NULL),
1160 _OMAP3_BALLENTRY(MCBSP3_DR, "v5", NULL),
1161 _OMAP3_BALLENTRY(MCBSP3_DX, "v6", NULL),
1162 _OMAP3_BALLENTRY(MCBSP3_FSX, "v4", NULL),
1163 _OMAP3_BALLENTRY(MCBSP_CLKS, "aa18", NULL),
1164 _OMAP3_BALLENTRY(MCSPI1_CLK, "t5", NULL),
1165 _OMAP3_BALLENTRY(MCSPI1_CS0, "t6", NULL),
1166 _OMAP3_BALLENTRY(MCSPI1_CS3, "r5", NULL),
1167 _OMAP3_BALLENTRY(MCSPI1_SIMO, "r4", NULL),
1168 _OMAP3_BALLENTRY(MCSPI1_SOMI, "t4", NULL),
1169 _OMAP3_BALLENTRY(MCSPI2_CLK, "n5", NULL),
1170 _OMAP3_BALLENTRY(MCSPI2_CS0, "m5", NULL),
1171 _OMAP3_BALLENTRY(MCSPI2_CS1, "m4", NULL),
1172 _OMAP3_BALLENTRY(MCSPI2_SIMO, "n4", NULL),
1173 _OMAP3_BALLENTRY(MCSPI2_SOMI, "n3", NULL),
1174 _OMAP3_BALLENTRY(SDMMC1_CLK, "m23", NULL),
1175 _OMAP3_BALLENTRY(SDMMC1_CMD, "l23", NULL),
1176 _OMAP3_BALLENTRY(SDMMC1_DAT0, "m22", NULL),
1177 _OMAP3_BALLENTRY(SDMMC1_DAT1, "m21", NULL),
1178 _OMAP3_BALLENTRY(SDMMC1_DAT2, "m20", NULL),
1179 _OMAP3_BALLENTRY(SDMMC1_DAT3, "n23", NULL),
1180 _OMAP3_BALLENTRY(SDMMC1_DAT4, "n22", NULL),
1181 _OMAP3_BALLENTRY(SDMMC1_DAT5, "n21", NULL),
1182 _OMAP3_BALLENTRY(SDMMC1_DAT6, "n20", NULL),
1183 _OMAP3_BALLENTRY(SDMMC1_DAT7, "p24", NULL),
1184 _OMAP3_BALLENTRY(SDMMC2_CLK, "y1", NULL),
1185 _OMAP3_BALLENTRY(SDMMC2_CMD, "ab5", NULL),
1186 _OMAP3_BALLENTRY(SDMMC2_DAT0, "ab3", NULL),
1187 _OMAP3_BALLENTRY(SDMMC2_DAT1, "y3", NULL),
1188 _OMAP3_BALLENTRY(SDMMC2_DAT2, "w3", NULL),
1189 _OMAP3_BALLENTRY(SDMMC2_DAT3, "v3", NULL),
1190 _OMAP3_BALLENTRY(SDMMC2_DAT4, "ab2", NULL),
1191 _OMAP3_BALLENTRY(SDMMC2_DAT5, "aa2", NULL),
1192 _OMAP3_BALLENTRY(SDMMC2_DAT6, "y2", NULL),
1193 _OMAP3_BALLENTRY(SDMMC2_DAT7, "aa1", NULL),
1194 _OMAP3_BALLENTRY(SYS_BOOT0, "ab12", NULL),
1195 _OMAP3_BALLENTRY(SYS_BOOT1, "ac16", NULL),
1196 _OMAP3_BALLENTRY(SYS_BOOT2, "ad17", NULL),
1197 _OMAP3_BALLENTRY(SYS_BOOT3, "ad18", NULL),
1198 _OMAP3_BALLENTRY(SYS_BOOT4, "ac17", NULL),
1199 _OMAP3_BALLENTRY(SYS_BOOT5, "ab16", NULL),
1200 _OMAP3_BALLENTRY(SYS_BOOT6, "aa15", NULL),
1201 _OMAP3_BALLENTRY(SYS_CLKOUT1, "y7", NULL),
1202 _OMAP3_BALLENTRY(SYS_CLKOUT2, "aa6", NULL),
1203 _OMAP3_BALLENTRY(SYS_CLKREQ, "y13", NULL),
1204 _OMAP3_BALLENTRY(SYS_NIRQ, "w16", NULL),
1205 _OMAP3_BALLENTRY(SYS_NRESWARM, "y10", NULL),
1206 _OMAP3_BALLENTRY(SYS_OFF_MODE, "ad23", NULL),
1207 _OMAP3_BALLENTRY(UART1_CTS, "ac2", NULL),
1208 _OMAP3_BALLENTRY(UART1_RTS, "w6", NULL),
1209 _OMAP3_BALLENTRY(UART1_RX, "v7", NULL),
1210 _OMAP3_BALLENTRY(UART1_TX, "w7", NULL),
1211 _OMAP3_BALLENTRY(UART3_CTS_RCTX, "a23", NULL),
1212 _OMAP3_BALLENTRY(UART3_RTS_SD, "b23", NULL),
1213 _OMAP3_BALLENTRY(UART3_RX_IRRX, "b24", NULL),
1214 _OMAP3_BALLENTRY(UART3_TX_IRTX, "c23", NULL),
1215 { .reg_offset = OMAP_MUX_TERMINATOR },
1216};
1217#else
1218#define omap3_cus_ball NULL
1219#endif
1220
1221/*
1222 * Signals different on CBB package comapared to superset
1223 */
1224#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBB)
1225struct omap_mux __initdata omap3_cbb_subset[] = {
1226 _OMAP3_MUXENTRY(CAM_D10, 109,
1227 "cam_d10", NULL, NULL, NULL,
1228 "gpio_109", NULL, NULL, "safe_mode"),
1229 _OMAP3_MUXENTRY(CAM_D11, 110,
1230 "cam_d11", NULL, NULL, NULL,
1231 "gpio_110", NULL, NULL, "safe_mode"),
1232 _OMAP3_MUXENTRY(CAM_D2, 101,
1233 "cam_d2", NULL, NULL, NULL,
1234 "gpio_101", NULL, NULL, "safe_mode"),
1235 _OMAP3_MUXENTRY(CAM_D3, 102,
1236 "cam_d3", NULL, NULL, NULL,
1237 "gpio_102", NULL, NULL, "safe_mode"),
1238 _OMAP3_MUXENTRY(CAM_D4, 103,
1239 "cam_d4", NULL, NULL, NULL,
1240 "gpio_103", NULL, NULL, "safe_mode"),
1241 _OMAP3_MUXENTRY(CAM_D5, 104,
1242 "cam_d5", NULL, NULL, NULL,
1243 "gpio_104", NULL, NULL, "safe_mode"),
1244 _OMAP3_MUXENTRY(CAM_FLD, 98,
1245 "cam_fld", NULL, "cam_global_reset", NULL,
1246 "gpio_98", NULL, NULL, "safe_mode"),
1247 _OMAP3_MUXENTRY(CAM_HS, 94,
1248 "cam_hs", NULL, NULL, NULL,
1249 "gpio_94", NULL, NULL, "safe_mode"),
1250 _OMAP3_MUXENTRY(CAM_PCLK, 97,
1251 "cam_pclk", NULL, NULL, NULL,
1252 "gpio_97", NULL, NULL, "safe_mode"),
1253 _OMAP3_MUXENTRY(CAM_STROBE, 126,
1254 "cam_strobe", NULL, NULL, NULL,
1255 "gpio_126", NULL, NULL, "safe_mode"),
1256 _OMAP3_MUXENTRY(CAM_VS, 95,
1257 "cam_vs", NULL, NULL, NULL,
1258 "gpio_95", NULL, NULL, "safe_mode"),
1259 _OMAP3_MUXENTRY(CAM_WEN, 167,
1260 "cam_wen", NULL, "cam_shutter", NULL,
1261 "gpio_167", NULL, NULL, "safe_mode"),
1262 _OMAP3_MUXENTRY(DSS_DATA6, 76,
1263 "dss_data6", NULL, "uart1_tx", NULL,
1264 "gpio_76", NULL, NULL, "safe_mode"),
1265 _OMAP3_MUXENTRY(DSS_DATA7, 77,
1266 "dss_data7", NULL, "uart1_rx", NULL,
1267 "gpio_77", NULL, NULL, "safe_mode"),
1268 _OMAP3_MUXENTRY(DSS_DATA8, 78,
1269 "dss_data8", NULL, NULL, NULL,
1270 "gpio_78", NULL, NULL, "safe_mode"),
1271 _OMAP3_MUXENTRY(DSS_DATA9, 79,
1272 "dss_data9", NULL, NULL, NULL,
1273 "gpio_79", NULL, NULL, "safe_mode"),
1274 _OMAP3_MUXENTRY(DSS_HSYNC, 67,
1275 "dss_hsync", NULL, NULL, NULL,
1276 "gpio_67", NULL, NULL, "safe_mode"),
1277 _OMAP3_MUXENTRY(DSS_PCLK, 66,
1278 "dss_pclk", NULL, NULL, NULL,
1279 "gpio_66", NULL, NULL, "safe_mode"),
1280 _OMAP3_MUXENTRY(ETK_CLK, 12,
1281 "etk_clk", "mcbsp5_clkx", "sdmmc3_clk", "hsusb1_stp",
1282 "gpio_12", "mm1_rxdp", "hsusb1_tll_stp", NULL),
1283 _OMAP3_MUXENTRY(ETK_CTL, 13,
1284 "etk_ctl", NULL, "sdmmc3_cmd", "hsusb1_clk",
1285 "gpio_13", NULL, "hsusb1_tll_clk", NULL),
1286 _OMAP3_MUXENTRY(ETK_D0, 14,
1287 "etk_d0", "mcspi3_simo", "sdmmc3_dat4", "hsusb1_data0",
1288 "gpio_14", "mm1_rxrcv", "hsusb1_tll_data0", NULL),
1289 _OMAP3_MUXENTRY(ETK_D1, 15,
1290 "etk_d1", "mcspi3_somi", NULL, "hsusb1_data1",
1291 "gpio_15", "mm1_txse0", "hsusb1_tll_data1", NULL),
1292 _OMAP3_MUXENTRY(ETK_D10, 24,
1293 "etk_d10", NULL, "uart1_rx", "hsusb2_clk",
1294 "gpio_24", NULL, "hsusb2_tll_clk", NULL),
1295 _OMAP3_MUXENTRY(ETK_D11, 25,
1296 "etk_d11", NULL, NULL, "hsusb2_stp",
1297 "gpio_25", "mm2_rxdp", "hsusb2_tll_stp", NULL),
1298 _OMAP3_MUXENTRY(ETK_D12, 26,
1299 "etk_d12", NULL, NULL, "hsusb2_dir",
1300 "gpio_26", NULL, "hsusb2_tll_dir", NULL),
1301 _OMAP3_MUXENTRY(ETK_D13, 27,
1302 "etk_d13", NULL, NULL, "hsusb2_nxt",
1303 "gpio_27", "mm2_rxdm", "hsusb2_tll_nxt", NULL),
1304 _OMAP3_MUXENTRY(ETK_D14, 28,
1305 "etk_d14", NULL, NULL, "hsusb2_data0",
1306 "gpio_28", "mm2_rxrcv", "hsusb2_tll_data0", NULL),
1307 _OMAP3_MUXENTRY(ETK_D15, 29,
1308 "etk_d15", NULL, NULL, "hsusb2_data1",
1309 "gpio_29", "mm2_txse0", "hsusb2_tll_data1", NULL),
1310 _OMAP3_MUXENTRY(ETK_D2, 16,
1311 "etk_d2", "mcspi3_cs0", NULL, "hsusb1_data2",
1312 "gpio_16", "mm1_txdat", "hsusb1_tll_data2", NULL),
1313 _OMAP3_MUXENTRY(ETK_D3, 17,
1314 "etk_d3", "mcspi3_clk", "sdmmc3_dat3", "hsusb1_data7",
1315 "gpio_17", NULL, "hsusb1_tll_data7", NULL),
1316 _OMAP3_MUXENTRY(ETK_D4, 18,
1317 "etk_d4", "mcbsp5_dr", "sdmmc3_dat0", "hsusb1_data4",
1318 "gpio_18", NULL, "hsusb1_tll_data4", NULL),
1319 _OMAP3_MUXENTRY(ETK_D5, 19,
1320 "etk_d5", "mcbsp5_fsx", "sdmmc3_dat1", "hsusb1_data5",
1321 "gpio_19", NULL, "hsusb1_tll_data5", NULL),
1322 _OMAP3_MUXENTRY(ETK_D6, 20,
1323 "etk_d6", "mcbsp5_dx", "sdmmc3_dat2", "hsusb1_data6",
1324 "gpio_20", NULL, "hsusb1_tll_data6", NULL),
1325 _OMAP3_MUXENTRY(ETK_D7, 21,
1326 "etk_d7", "mcspi3_cs1", "sdmmc3_dat7", "hsusb1_data3",
1327 "gpio_21", "mm1_txen_n", "hsusb1_tll_data3", NULL),
1328 _OMAP3_MUXENTRY(ETK_D8, 22,
1329 "etk_d8", "sys_drm_msecure", "sdmmc3_dat6", "hsusb1_dir",
1330 "gpio_22", NULL, "hsusb1_tll_dir", NULL),
1331 _OMAP3_MUXENTRY(ETK_D9, 23,
1332 "etk_d9", "sys_secure_indicator", "sdmmc3_dat5", "hsusb1_nxt",
1333 "gpio_23", "mm1_rxdm", "hsusb1_tll_nxt", NULL),
1334 { .reg_offset = OMAP_MUX_TERMINATOR },
1335};
1336#else
1337#define omap3_cbb_subset NULL
1338#endif
1339
1340/*
1341 * Balls for CBB package
1342 * 515-pin s-PBGA Package, 0.50mm Ball Pitch (Top), 0.40mm Ball Pitch (Bottom)
1343 */
1344#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
1345 && defined(CONFIG_OMAP_PACKAGE_CBB)
1346struct omap_ball __initdata omap3_cbb_ball[] = {
1347 _OMAP3_BALLENTRY(CAM_D0, "ag17", NULL),
1348 _OMAP3_BALLENTRY(CAM_D1, "ah17", NULL),
1349 _OMAP3_BALLENTRY(CAM_D10, "b25", NULL),
1350 _OMAP3_BALLENTRY(CAM_D11, "c26", NULL),
1351 _OMAP3_BALLENTRY(CAM_D2, "b24", NULL),
1352 _OMAP3_BALLENTRY(CAM_D3, "c24", NULL),
1353 _OMAP3_BALLENTRY(CAM_D4, "d24", NULL),
1354 _OMAP3_BALLENTRY(CAM_D5, "a25", NULL),
1355 _OMAP3_BALLENTRY(CAM_D6, "k28", NULL),
1356 _OMAP3_BALLENTRY(CAM_D7, "l28", NULL),
1357 _OMAP3_BALLENTRY(CAM_D8, "k27", NULL),
1358 _OMAP3_BALLENTRY(CAM_D9, "l27", NULL),
1359 _OMAP3_BALLENTRY(CAM_FLD, "c23", NULL),
1360 _OMAP3_BALLENTRY(CAM_HS, "a24", NULL),
1361 _OMAP3_BALLENTRY(CAM_PCLK, "c27", NULL),
1362 _OMAP3_BALLENTRY(CAM_STROBE, "d25", NULL),
1363 _OMAP3_BALLENTRY(CAM_VS, "a23", NULL),
1364 _OMAP3_BALLENTRY(CAM_WEN, "b23", NULL),
1365 _OMAP3_BALLENTRY(CAM_XCLKA, "c25", NULL),
1366 _OMAP3_BALLENTRY(CAM_XCLKB, "b26", NULL),
1367 _OMAP3_BALLENTRY(CSI2_DX0, "ag19", NULL),
1368 _OMAP3_BALLENTRY(CSI2_DX1, "ag18", NULL),
1369 _OMAP3_BALLENTRY(CSI2_DY0, "ah19", NULL),
1370 _OMAP3_BALLENTRY(CSI2_DY1, "ah18", NULL),
1371 _OMAP3_BALLENTRY(DSS_ACBIAS, "e27", NULL),
1372 _OMAP3_BALLENTRY(DSS_DATA0, "ag22", NULL),
1373 _OMAP3_BALLENTRY(DSS_DATA1, "ah22", NULL),
1374 _OMAP3_BALLENTRY(DSS_DATA10, "ad28", NULL),
1375 _OMAP3_BALLENTRY(DSS_DATA11, "ad27", NULL),
1376 _OMAP3_BALLENTRY(DSS_DATA12, "ab28", NULL),
1377 _OMAP3_BALLENTRY(DSS_DATA13, "ab27", NULL),
1378 _OMAP3_BALLENTRY(DSS_DATA14, "aa28", NULL),
1379 _OMAP3_BALLENTRY(DSS_DATA15, "aa27", NULL),
1380 _OMAP3_BALLENTRY(DSS_DATA16, "g25", NULL),
1381 _OMAP3_BALLENTRY(DSS_DATA17, "h27", NULL),
1382 _OMAP3_BALLENTRY(DSS_DATA18, "h26", NULL),
1383 _OMAP3_BALLENTRY(DSS_DATA19, "h25", NULL),
1384 _OMAP3_BALLENTRY(DSS_DATA2, "ag23", NULL),
1385 _OMAP3_BALLENTRY(DSS_DATA20, "e28", NULL),
1386 _OMAP3_BALLENTRY(DSS_DATA21, "j26", NULL),
1387 _OMAP3_BALLENTRY(DSS_DATA22, "ac27", NULL),
1388 _OMAP3_BALLENTRY(DSS_DATA23, "ac28", NULL),
1389 _OMAP3_BALLENTRY(DSS_DATA3, "ah23", NULL),
1390 _OMAP3_BALLENTRY(DSS_DATA4, "ag24", NULL),
1391 _OMAP3_BALLENTRY(DSS_DATA5, "ah24", NULL),
1392 _OMAP3_BALLENTRY(DSS_DATA6, "e26", NULL),
1393 _OMAP3_BALLENTRY(DSS_DATA7, "f28", NULL),
1394 _OMAP3_BALLENTRY(DSS_DATA8, "f27", NULL),
1395 _OMAP3_BALLENTRY(DSS_DATA9, "g26", NULL),
1396 _OMAP3_BALLENTRY(DSS_HSYNC, "d26", NULL),
1397 _OMAP3_BALLENTRY(DSS_PCLK, "d28", NULL),
1398 _OMAP3_BALLENTRY(DSS_VSYNC, "d27", NULL),
1399 _OMAP3_BALLENTRY(ETK_CLK, "af10", NULL),
1400 _OMAP3_BALLENTRY(ETK_CTL, "ae10", NULL),
1401 _OMAP3_BALLENTRY(ETK_D0, "af11", NULL),
1402 _OMAP3_BALLENTRY(ETK_D1, "ag12", NULL),
1403 _OMAP3_BALLENTRY(ETK_D10, "ae7", NULL),
1404 _OMAP3_BALLENTRY(ETK_D11, "af7", NULL),
1405 _OMAP3_BALLENTRY(ETK_D12, "ag7", NULL),
1406 _OMAP3_BALLENTRY(ETK_D13, "ah7", NULL),
1407 _OMAP3_BALLENTRY(ETK_D14, "ag8", NULL),
1408 _OMAP3_BALLENTRY(ETK_D15, "ah8", NULL),
1409 _OMAP3_BALLENTRY(ETK_D2, "ah12", NULL),
1410 _OMAP3_BALLENTRY(ETK_D3, "ae13", NULL),
1411 _OMAP3_BALLENTRY(ETK_D4, "ae11", NULL),
1412 _OMAP3_BALLENTRY(ETK_D5, "ah9", NULL),
1413 _OMAP3_BALLENTRY(ETK_D6, "af13", NULL),
1414 _OMAP3_BALLENTRY(ETK_D7, "ah14", NULL),
1415 _OMAP3_BALLENTRY(ETK_D8, "af9", NULL),
1416 _OMAP3_BALLENTRY(ETK_D9, "ag9", NULL),
1417 _OMAP3_BALLENTRY(GPMC_A1, "n4", "ac15"),
1418 _OMAP3_BALLENTRY(GPMC_A10, "k3", "ab19"),
1419 _OMAP3_BALLENTRY(GPMC_A2, "m4", "ab15"),
1420 _OMAP3_BALLENTRY(GPMC_A3, "l4", "ac16"),
1421 _OMAP3_BALLENTRY(GPMC_A4, "k4", "ab16"),
1422 _OMAP3_BALLENTRY(GPMC_A5, "t3", "ac17"),
1423 _OMAP3_BALLENTRY(GPMC_A6, "r3", "ab17"),
1424 _OMAP3_BALLENTRY(GPMC_A7, "n3", "ac18"),
1425 _OMAP3_BALLENTRY(GPMC_A8, "m3", "ab18"),
1426 _OMAP3_BALLENTRY(GPMC_A9, "l3", "ac19"),
1427 _OMAP3_BALLENTRY(GPMC_CLK, "t4", "w2"),
1428 _OMAP3_BALLENTRY(GPMC_D10, "p1", "ab4"),
1429 _OMAP3_BALLENTRY(GPMC_D11, "r1", "ac4"),
1430 _OMAP3_BALLENTRY(GPMC_D12, "r2", "ab6"),
1431 _OMAP3_BALLENTRY(GPMC_D13, "t2", "ac6"),
1432 _OMAP3_BALLENTRY(GPMC_D14, "w1", "ab7"),
1433 _OMAP3_BALLENTRY(GPMC_D15, "y1", "ac7"),
1434 _OMAP3_BALLENTRY(GPMC_D8, "h2", "ab3"),
1435 _OMAP3_BALLENTRY(GPMC_D9, "k2", "ac3"),
1436 _OMAP3_BALLENTRY(GPMC_NBE0_CLE, "g3", "ac12"),
1437 _OMAP3_BALLENTRY(GPMC_NBE1, "u3", NULL),
1438 _OMAP3_BALLENTRY(GPMC_NCS1, "h3", "y1"),
1439 _OMAP3_BALLENTRY(GPMC_NCS2, "v8", NULL),
1440 _OMAP3_BALLENTRY(GPMC_NCS3, "u8", NULL),
1441 _OMAP3_BALLENTRY(GPMC_NCS4, "t8", NULL),
1442 _OMAP3_BALLENTRY(GPMC_NCS5, "r8", NULL),
1443 _OMAP3_BALLENTRY(GPMC_NCS6, "p8", NULL),
1444 _OMAP3_BALLENTRY(GPMC_NCS7, "n8", NULL),
1445 _OMAP3_BALLENTRY(GPMC_NWP, "h1", "ab10"),
1446 _OMAP3_BALLENTRY(GPMC_WAIT1, "l8", "ac10"),
1447 _OMAP3_BALLENTRY(GPMC_WAIT2, "k8", NULL),
1448 _OMAP3_BALLENTRY(GPMC_WAIT3, "j8", NULL),
1449 _OMAP3_BALLENTRY(HDQ_SIO, "j25", NULL),
1450 _OMAP3_BALLENTRY(HSUSB0_CLK, "t28", NULL),
1451 _OMAP3_BALLENTRY(HSUSB0_DATA0, "t27", NULL),
1452 _OMAP3_BALLENTRY(HSUSB0_DATA1, "u28", NULL),
1453 _OMAP3_BALLENTRY(HSUSB0_DATA2, "u27", NULL),
1454 _OMAP3_BALLENTRY(HSUSB0_DATA3, "u26", NULL),
1455 _OMAP3_BALLENTRY(HSUSB0_DATA4, "u25", NULL),
1456 _OMAP3_BALLENTRY(HSUSB0_DATA5, "v28", NULL),
1457 _OMAP3_BALLENTRY(HSUSB0_DATA6, "v27", NULL),
1458 _OMAP3_BALLENTRY(HSUSB0_DATA7, "v26", NULL),
1459 _OMAP3_BALLENTRY(HSUSB0_DIR, "r28", NULL),
1460 _OMAP3_BALLENTRY(HSUSB0_NXT, "t26", NULL),
1461 _OMAP3_BALLENTRY(HSUSB0_STP, "t25", NULL),
1462 _OMAP3_BALLENTRY(I2C2_SCL, "af15", NULL),
1463 _OMAP3_BALLENTRY(I2C2_SDA, "ae15", NULL),
1464 _OMAP3_BALLENTRY(I2C3_SCL, "af14", NULL),
1465 _OMAP3_BALLENTRY(I2C3_SDA, "ag14", NULL),
1466 _OMAP3_BALLENTRY(I2C4_SCL, "ad26", NULL),
1467 _OMAP3_BALLENTRY(I2C4_SDA, "ae26", NULL),
1468 _OMAP3_BALLENTRY(JTAG_EMU0, "aa11", NULL),
1469 _OMAP3_BALLENTRY(JTAG_EMU1, "aa10", NULL),
1470 _OMAP3_BALLENTRY(MCBSP1_CLKR, "y21", NULL),
1471 _OMAP3_BALLENTRY(MCBSP1_CLKX, "w21", NULL),
1472 _OMAP3_BALLENTRY(MCBSP1_DR, "u21", NULL),
1473 _OMAP3_BALLENTRY(MCBSP1_DX, "v21", NULL),
1474 _OMAP3_BALLENTRY(MCBSP1_FSR, "aa21", NULL),
1475 _OMAP3_BALLENTRY(MCBSP1_FSX, "k26", NULL),
1476 _OMAP3_BALLENTRY(MCBSP2_CLKX, "n21", NULL),
1477 _OMAP3_BALLENTRY(MCBSP2_DR, "r21", NULL),
1478 _OMAP3_BALLENTRY(MCBSP2_DX, "m21", NULL),
1479 _OMAP3_BALLENTRY(MCBSP2_FSX, "p21", NULL),
1480 _OMAP3_BALLENTRY(MCBSP3_CLKX, "af5", NULL),
1481 _OMAP3_BALLENTRY(MCBSP3_DR, "ae6", NULL),
1482 _OMAP3_BALLENTRY(MCBSP3_DX, "af6", NULL),
1483 _OMAP3_BALLENTRY(MCBSP3_FSX, "ae5", NULL),
1484 _OMAP3_BALLENTRY(MCBSP4_CLKX, "ae1", NULL),
1485 _OMAP3_BALLENTRY(MCBSP4_DR, "ad1", NULL),
1486 _OMAP3_BALLENTRY(MCBSP4_DX, "ad2", NULL),
1487 _OMAP3_BALLENTRY(MCBSP4_FSX, "ac1", NULL),
1488 _OMAP3_BALLENTRY(MCBSP_CLKS, "t21", NULL),
1489 _OMAP3_BALLENTRY(MCSPI1_CLK, "ab3", NULL),
1490 _OMAP3_BALLENTRY(MCSPI1_CS0, "ac2", NULL),
1491 _OMAP3_BALLENTRY(MCSPI1_CS1, "ac3", NULL),
1492 _OMAP3_BALLENTRY(MCSPI1_CS2, "ab1", NULL),
1493 _OMAP3_BALLENTRY(MCSPI1_CS3, "ab2", NULL),
1494 _OMAP3_BALLENTRY(MCSPI1_SIMO, "ab4", NULL),
1495 _OMAP3_BALLENTRY(MCSPI1_SOMI, "aa4", NULL),
1496 _OMAP3_BALLENTRY(MCSPI2_CLK, "aa3", NULL),
1497 _OMAP3_BALLENTRY(MCSPI2_CS0, "y4", NULL),
1498 _OMAP3_BALLENTRY(MCSPI2_CS1, "v3", NULL),
1499 _OMAP3_BALLENTRY(MCSPI2_SIMO, "y2", NULL),
1500 _OMAP3_BALLENTRY(MCSPI2_SOMI, "y3", NULL),
1501 _OMAP3_BALLENTRY(SDMMC1_CLK, "n28", NULL),
1502 _OMAP3_BALLENTRY(SDMMC1_CMD, "m27", NULL),
1503 _OMAP3_BALLENTRY(SDMMC1_DAT0, "n27", NULL),
1504 _OMAP3_BALLENTRY(SDMMC1_DAT1, "n26", NULL),
1505 _OMAP3_BALLENTRY(SDMMC1_DAT2, "n25", NULL),
1506 _OMAP3_BALLENTRY(SDMMC1_DAT3, "p28", NULL),
1507 _OMAP3_BALLENTRY(SDMMC1_DAT4, "p27", NULL),
1508 _OMAP3_BALLENTRY(SDMMC1_DAT5, "p26", NULL),
1509 _OMAP3_BALLENTRY(SDMMC1_DAT6, "r27", NULL),
1510 _OMAP3_BALLENTRY(SDMMC1_DAT7, "r25", NULL),
1511 _OMAP3_BALLENTRY(SDMMC2_CLK, "ae2", NULL),
1512 _OMAP3_BALLENTRY(SDMMC2_CMD, "ag5", NULL),
1513 _OMAP3_BALLENTRY(SDMMC2_DAT0, "ah5", NULL),
1514 _OMAP3_BALLENTRY(SDMMC2_DAT1, "ah4", NULL),
1515 _OMAP3_BALLENTRY(SDMMC2_DAT2, "ag4", NULL),
1516 _OMAP3_BALLENTRY(SDMMC2_DAT3, "af4", NULL),
1517 _OMAP3_BALLENTRY(SDMMC2_DAT4, "ae4", NULL),
1518 _OMAP3_BALLENTRY(SDMMC2_DAT5, "ah3", NULL),
1519 _OMAP3_BALLENTRY(SDMMC2_DAT6, "af3", NULL),
1520 _OMAP3_BALLENTRY(SDMMC2_DAT7, "ae3", NULL),
1521 _OMAP3_BALLENTRY(SYS_BOOT0, "ah26", NULL),
1522 _OMAP3_BALLENTRY(SYS_BOOT1, "ag26", NULL),
1523 _OMAP3_BALLENTRY(SYS_BOOT2, "ae14", NULL),
1524 _OMAP3_BALLENTRY(SYS_BOOT3, "af18", NULL),
1525 _OMAP3_BALLENTRY(SYS_BOOT4, "af19", NULL),
1526 _OMAP3_BALLENTRY(SYS_BOOT5, "ae21", NULL),
1527 _OMAP3_BALLENTRY(SYS_BOOT6, "af21", NULL),
1528 _OMAP3_BALLENTRY(SYS_CLKOUT1, "ag25", NULL),
1529 _OMAP3_BALLENTRY(SYS_CLKOUT2, "ae22", NULL),
1530 _OMAP3_BALLENTRY(SYS_CLKREQ, "af25", NULL),
1531 _OMAP3_BALLENTRY(SYS_NIRQ, "af26", NULL),
1532 _OMAP3_BALLENTRY(SYS_NRESWARM, "af24", NULL),
1533 _OMAP3_BALLENTRY(SYS_OFF_MODE, "af22", NULL),
1534 _OMAP3_BALLENTRY(UART1_CTS, "w8", NULL),
1535 _OMAP3_BALLENTRY(UART1_RTS, "aa9", NULL),
1536 _OMAP3_BALLENTRY(UART1_RX, "y8", NULL),
1537 _OMAP3_BALLENTRY(UART1_TX, "aa8", NULL),
1538 _OMAP3_BALLENTRY(UART2_CTS, "ab26", NULL),
1539 _OMAP3_BALLENTRY(UART2_RTS, "ab25", NULL),
1540 _OMAP3_BALLENTRY(UART2_RX, "ad25", NULL),
1541 _OMAP3_BALLENTRY(UART2_TX, "aa25", NULL),
1542 _OMAP3_BALLENTRY(UART3_CTS_RCTX, "h18", NULL),
1543 _OMAP3_BALLENTRY(UART3_RTS_SD, "h19", NULL),
1544 _OMAP3_BALLENTRY(UART3_RX_IRRX, "h20", NULL),
1545 _OMAP3_BALLENTRY(UART3_TX_IRTX, "h21", NULL),
1546 { .reg_offset = OMAP_MUX_TERMINATOR },
1547};
1548#else
1549#define omap3_cbb_ball NULL
1550#endif
1551
1552/*
1553 * Signals different on 36XX CBP package comapared to 34XX CBC package
1554 */
1555#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBP)
1556struct omap_mux __initdata omap36xx_cbp_subset[] = {
1557 _OMAP3_MUXENTRY(CAM_D0, 99,
1558 "cam_d0", NULL, "csi2_dx2", NULL,
1559 "gpio_99", NULL, NULL, "safe_mode"),
1560 _OMAP3_MUXENTRY(CAM_D1, 100,
1561 "cam_d1", NULL, "csi2_dy2", NULL,
1562 "gpio_100", NULL, NULL, "safe_mode"),
1563 _OMAP3_MUXENTRY(CAM_D10, 109,
1564 "cam_d10", "ssi2_wake", NULL, NULL,
1565 "gpio_109", "hw_dbg8", NULL, "safe_mode"),
1566 _OMAP3_MUXENTRY(CAM_D2, 101,
1567 "cam_d2", "ssi2_rdy_tx", NULL, NULL,
1568 "gpio_101", "hw_dbg4", NULL, "safe_mode"),
1569 _OMAP3_MUXENTRY(CAM_D3, 102,
1570 "cam_d3", "ssi2_dat_rx", NULL, NULL,
1571 "gpio_102", "hw_dbg5", NULL, "safe_mode"),
1572 _OMAP3_MUXENTRY(CAM_D4, 103,
1573 "cam_d4", "ssi2_flag_rx", NULL, NULL,
1574 "gpio_103", "hw_dbg6", NULL, "safe_mode"),
1575 _OMAP3_MUXENTRY(CAM_D5, 104,
1576 "cam_d5", "ssi2_rdy_rx", NULL, NULL,
1577 "gpio_104", "hw_dbg7", NULL, "safe_mode"),
1578 _OMAP3_MUXENTRY(CAM_HS, 94,
1579 "cam_hs", "ssi2_dat_tx", NULL, NULL,
1580 "gpio_94", "hw_dbg0", NULL, "safe_mode"),
1581 _OMAP3_MUXENTRY(CAM_VS, 95,
1582 "cam_vs", "ssi2_flag_tx", NULL, NULL,
1583 "gpio_95", "hw_dbg1", NULL, "safe_mode"),
1584 _OMAP3_MUXENTRY(DSS_DATA0, 70,
1585 "dss_data0", "dsi_dx0", "uart1_cts", NULL,
1586 "gpio_70", NULL, NULL, "safe_mode"),
1587 _OMAP3_MUXENTRY(DSS_DATA1, 71,
1588 "dss_data1", "dsi_dy0", "uart1_rts", NULL,
1589 "gpio_71", NULL, NULL, "safe_mode"),
1590 _OMAP3_MUXENTRY(DSS_DATA2, 72,
1591 "dss_data2", "dsi_dx1", NULL, NULL,
1592 "gpio_72", NULL, NULL, "safe_mode"),
1593 _OMAP3_MUXENTRY(DSS_DATA3, 73,
1594 "dss_data3", "dsi_dy1", NULL, NULL,
1595 "gpio_73", NULL, NULL, "safe_mode"),
1596 _OMAP3_MUXENTRY(DSS_DATA4, 74,
1597 "dss_data4", "dsi_dx2", "uart3_rx_irrx", NULL,
1598 "gpio_74", NULL, NULL, "safe_mode"),
1599 _OMAP3_MUXENTRY(DSS_DATA5, 75,
1600 "dss_data5", "dsi_dy2", "uart3_tx_irtx", NULL,
1601 "gpio_75", NULL, NULL, "safe_mode"),
1602 _OMAP3_MUXENTRY(DSS_DATA6, 76,
1603 "dss_data6", NULL, "uart1_tx", "dssvenc656_data6",
1604 "gpio_76", "hw_dbg14", NULL, "safe_mode"),
1605 _OMAP3_MUXENTRY(DSS_DATA7, 77,
1606 "dss_data7", NULL, "uart1_rx", "dssvenc656_data7",
1607 "gpio_77", "hw_dbg15", NULL, "safe_mode"),
1608 _OMAP3_MUXENTRY(DSS_DATA8, 78,
1609 "dss_data8", NULL, "uart3_rx_irrx", NULL,
1610 "gpio_78", "hw_dbg16", NULL, "safe_mode"),
1611 _OMAP3_MUXENTRY(DSS_DATA9, 79,
1612 "dss_data9", NULL, "uart3_tx_irtx", NULL,
1613 "gpio_79", "hw_dbg17", NULL, "safe_mode"),
1614 _OMAP3_MUXENTRY(ETK_D12, 26,
1615 "etk_d12", "sys_drm_msecure", NULL, "hsusb2_dir",
1616 "gpio_26", NULL, "hsusb2_tll_dir", "hw_dbg14"),
1617 _OMAP3_MUXENTRY(GPMC_A11, 0,
1618 "gpmc_a11", NULL, NULL, NULL,
1619 NULL, NULL, NULL, "safe_mode"),
1620 _OMAP3_MUXENTRY(GPMC_WAIT2, 64,
1621 "gpmc_wait2", NULL, "uart4_tx", NULL,
1622 "gpio_64", NULL, NULL, "safe_mode"),
1623 _OMAP3_MUXENTRY(GPMC_WAIT3, 65,
1624 "gpmc_wait3", "sys_ndmareq1", "uart4_rx", NULL,
1625 "gpio_65", NULL, NULL, "safe_mode"),
1626 _OMAP3_MUXENTRY(HSUSB0_DATA0, 125,
1627 "hsusb0_data0", NULL, "uart3_tx_irtx", NULL,
1628 "gpio_125", "uart2_tx", NULL, "safe_mode"),
1629 _OMAP3_MUXENTRY(HSUSB0_DATA1, 130,
1630 "hsusb0_data1", NULL, "uart3_rx_irrx", NULL,
1631 "gpio_130", "uart2_rx", NULL, "safe_mode"),
1632 _OMAP3_MUXENTRY(HSUSB0_DATA2, 131,
1633 "hsusb0_data2", NULL, "uart3_rts_sd", NULL,
1634 "gpio_131", "uart2_rts", NULL, "safe_mode"),
1635 _OMAP3_MUXENTRY(HSUSB0_DATA3, 169,
1636 "hsusb0_data3", NULL, "uart3_cts_rctx", NULL,
1637 "gpio_169", "uart2_cts", NULL, "safe_mode"),
1638 _OMAP3_MUXENTRY(MCBSP1_CLKR, 156,
1639 "mcbsp1_clkr", "mcspi4_clk", "sim_cd", NULL,
1640 "gpio_156", NULL, NULL, "safe_mode"),
1641 _OMAP3_MUXENTRY(MCBSP1_FSR, 157,
1642 "mcbsp1_fsr", "adpllv2d_dithering_en1",
1643 "cam_global_reset", NULL,
1644 "gpio_157", NULL, NULL, "safe_mode"),
1645 _OMAP3_MUXENTRY(MCBSP4_CLKX, 152,
1646 "mcbsp4_clkx", "ssi1_dat_rx", NULL, NULL,
1647 "gpio_152", "hsusb3_tll_data1", "mm3_txse0", "safe_mode"),
1648 _OMAP3_MUXENTRY(MCBSP4_DR, 153,
1649 "mcbsp4_dr", "ssi1_flag_rx", NULL, NULL,
1650 "gpio_153", "hsusb3_tll_data0", "mm3_rxrcv", "safe_mode"),
1651 _OMAP3_MUXENTRY(MCBSP4_DX, 154,
1652 "mcbsp4_dx", "ssi1_rdy_rx", NULL, NULL,
1653 "gpio_154", "hsusb3_tll_data2", "mm3_txdat", "safe_mode"),
1654 _OMAP3_MUXENTRY(MCBSP4_FSX, 155,
1655 "mcbsp4_fsx", "ssi1_wake", NULL, NULL,
1656 "gpio_155", "hsusb3_tll_data3", "mm3_txen_n", "safe_mode"),
1657 _OMAP3_MUXENTRY(MCSPI1_CS1, 175,
1658 "mcspi1_cs1", "adpllv2d_dithering_en2", NULL, "sdmmc3_cmd",
1659 "gpio_175", NULL, NULL, "safe_mode"),
1660 _OMAP3_MUXENTRY(SAD2D_MBUSFLAG, 0,
1661 "sad2d_mbusflag", "mad2d_sbusflag", NULL, NULL,
1662 NULL, NULL, NULL, NULL),
1663 _OMAP3_MUXENTRY(SAD2D_MCAD28, 0,
1664 "sad2d_mcad28", "mad2d_mcad28", NULL, NULL,
1665 NULL, NULL, NULL, NULL),
1666 _OMAP3_MUXENTRY(SAD2D_MCAD29, 0,
1667 "sad2d_mcad29", "mad2d_mcad29", NULL, NULL,
1668 NULL, NULL, NULL, NULL),
1669 _OMAP3_MUXENTRY(SAD2D_MCAD32, 0,
1670 "sad2d_mcad32", "mad2d_mcad32", NULL, NULL,
1671 NULL, NULL, NULL, NULL),
1672 _OMAP3_MUXENTRY(SAD2D_MCAD33, 0,
1673 "sad2d_mcad33", "mad2d_mcad33", NULL, NULL,
1674 NULL, NULL, NULL, NULL),
1675 _OMAP3_MUXENTRY(SAD2D_MCAD34, 0,
1676 "sad2d_mcad34", "mad2d_mcad34", NULL, NULL,
1677 NULL, NULL, NULL, NULL),
1678 _OMAP3_MUXENTRY(SAD2D_MCAD35, 0,
1679 "sad2d_mcad35", "mad2d_mcad35", NULL, NULL,
1680 NULL, NULL, NULL, NULL),
1681 _OMAP3_MUXENTRY(SAD2D_MCAD36, 0,
1682 "sad2d_mcad36", "mad2d_mcad36", NULL, NULL,
1683 NULL, NULL, NULL, NULL),
1684 _OMAP3_MUXENTRY(SAD2D_MREAD, 0,
1685 "sad2d_mread", "mad2d_sread", NULL, NULL,
1686 NULL, NULL, NULL, NULL),
1687 _OMAP3_MUXENTRY(SAD2D_MWRITE, 0,
1688 "sad2d_mwrite", "mad2d_swrite", NULL, NULL,
1689 NULL, NULL, NULL, NULL),
1690 _OMAP3_MUXENTRY(SAD2D_SBUSFLAG, 0,
1691 "sad2d_sbusflag", "mad2d_mbusflag", NULL, NULL,
1692 NULL, NULL, NULL, NULL),
1693 _OMAP3_MUXENTRY(SAD2D_SREAD, 0,
1694 "sad2d_sread", "mad2d_mread", NULL, NULL,
1695 NULL, NULL, NULL, NULL),
1696 _OMAP3_MUXENTRY(SAD2D_SWRITE, 0,
1697 "sad2d_swrite", "mad2d_mwrite", NULL, NULL,
1698 NULL, NULL, NULL, NULL),
1699 _OMAP3_MUXENTRY(SDMMC1_CLK, 120,
1700 "sdmmc1_clk", "ms_clk", NULL, NULL,
1701 "gpio_120", NULL, NULL, "safe_mode"),
1702 _OMAP3_MUXENTRY(SDMMC1_CMD, 121,
1703 "sdmmc1_cmd", "ms_bs", NULL, NULL,
1704 "gpio_121", NULL, NULL, "safe_mode"),
1705 _OMAP3_MUXENTRY(SDMMC1_DAT0, 122,
1706 "sdmmc1_dat0", "ms_dat0", NULL, NULL,
1707 "gpio_122", NULL, NULL, "safe_mode"),
1708 _OMAP3_MUXENTRY(SDMMC1_DAT1, 123,
1709 "sdmmc1_dat1", "ms_dat1", NULL, NULL,
1710 "gpio_123", NULL, NULL, "safe_mode"),
1711 _OMAP3_MUXENTRY(SDMMC1_DAT2, 124,
1712 "sdmmc1_dat2", "ms_dat2", NULL, NULL,
1713 "gpio_124", NULL, NULL, "safe_mode"),
1714 _OMAP3_MUXENTRY(SDMMC1_DAT3, 125,
1715 "sdmmc1_dat3", "ms_dat3", NULL, NULL,
1716 "gpio_125", NULL, NULL, "safe_mode"),
1717 _OMAP3_MUXENTRY(SDRC_CKE0, 0,
1718 "sdrc_cke0", NULL, NULL, NULL,
1719 NULL, NULL, NULL, "safe_mode_out1"),
1720 _OMAP3_MUXENTRY(SDRC_CKE1, 0,
1721 "sdrc_cke1", NULL, NULL, NULL,
1722 NULL, NULL, NULL, "safe_mode_out1"),
1723 _OMAP3_MUXENTRY(SIM_IO, 126,
1724 "sim_io", "sim_io_low_impedance", NULL, NULL,
1725 "gpio_126", NULL, NULL, "safe_mode"),
1726 _OMAP3_MUXENTRY(SIM_CLK, 127,
1727 "sim_clk", NULL, NULL, NULL,
1728 "gpio_127", NULL, NULL, "safe_mode"),
1729 _OMAP3_MUXENTRY(SIM_PWRCTRL, 128,
1730 "sim_pwrctrl", NULL, NULL, NULL,
1731 "gpio_128", NULL, NULL, "safe_mode"),
1732 _OMAP3_MUXENTRY(SIM_RST, 129,
1733 "sim_rst", NULL, NULL, NULL,
1734 "gpio_129", NULL, NULL, "safe_mode"),
1735 _OMAP3_MUXENTRY(SYS_BOOT0, 2,
1736 "sys_boot0", NULL, NULL, "dss_data18",
1737 "gpio_2", NULL, NULL, "safe_mode"),
1738 _OMAP3_MUXENTRY(SYS_BOOT1, 3,
1739 "sys_boot1", NULL, NULL, "dss_data19",
1740 "gpio_3", NULL, NULL, "safe_mode"),
1741 _OMAP3_MUXENTRY(SYS_BOOT3, 5,
1742 "sys_boot3", NULL, NULL, "dss_data20",
1743 "gpio_5", NULL, NULL, "safe_mode"),
1744 _OMAP3_MUXENTRY(SYS_BOOT4, 6,
1745 "sys_boot4", "sdmmc2_dir_dat2", NULL, "dss_data21",
1746 "gpio_6", NULL, NULL, "safe_mode"),
1747 _OMAP3_MUXENTRY(SYS_BOOT5, 7,
1748 "sys_boot5", "sdmmc2_dir_dat3", NULL, "dss_data22",
1749 "gpio_7", NULL, NULL, "safe_mode"),
1750 _OMAP3_MUXENTRY(SYS_BOOT6, 8,
1751 "sys_boot6", NULL, NULL, "dss_data23",
1752 "gpio_8", NULL, NULL, "safe_mode"),
1753 _OMAP3_MUXENTRY(UART1_CTS, 150,
1754 "uart1_cts", "ssi1_rdy_tx", NULL, NULL,
1755 "gpio_150", "hsusb3_tll_clk", NULL, "safe_mode"),
1756 _OMAP3_MUXENTRY(UART1_RTS, 149,
1757 "uart1_rts", "ssi1_flag_tx", NULL, NULL,
1758 "gpio_149", NULL, NULL, "safe_mode"),
1759 _OMAP3_MUXENTRY(UART1_TX, 148,
1760 "uart1_tx", "ssi1_dat_tx", NULL, NULL,
1761 "gpio_148", NULL, NULL, "safe_mode"),
1762 { .reg_offset = OMAP_MUX_TERMINATOR },
1763};
1764#else
1765#define omap36xx_cbp_subset NULL
1766#endif
1767
1768/*
1769 * Balls for 36XX CBP package
1770 * 515-pin s-PBGA Package, 0.50mm Ball Pitch (Top), 0.40mm Ball Pitch (Bottom)
1771 */
1772#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
1773 && defined (CONFIG_OMAP_PACKAGE_CBP)
1774struct omap_ball __initdata omap36xx_cbp_ball[] = {
1775 _OMAP3_BALLENTRY(CAM_D0, "ag17", NULL),
1776 _OMAP3_BALLENTRY(CAM_D1, "ah17", NULL),
1777 _OMAP3_BALLENTRY(CAM_D10, "b25", NULL),
1778 _OMAP3_BALLENTRY(CAM_D11, "c26", NULL),
1779 _OMAP3_BALLENTRY(CAM_D2, "b24", NULL),
1780 _OMAP3_BALLENTRY(CAM_D3, "c24", NULL),
1781 _OMAP3_BALLENTRY(CAM_D4, "d24", NULL),
1782 _OMAP3_BALLENTRY(CAM_D5, "a25", NULL),
1783 _OMAP3_BALLENTRY(CAM_D6, "k28", NULL),
1784 _OMAP3_BALLENTRY(CAM_D7, "l28", NULL),
1785 _OMAP3_BALLENTRY(CAM_D8, "k27", NULL),
1786 _OMAP3_BALLENTRY(CAM_D9, "l27", NULL),
1787 _OMAP3_BALLENTRY(CAM_FLD, "c23", NULL),
1788 _OMAP3_BALLENTRY(CAM_HS, "a24", NULL),
1789 _OMAP3_BALLENTRY(CAM_PCLK, "c27", NULL),
1790 _OMAP3_BALLENTRY(CAM_STROBE, "d25", NULL),
1791 _OMAP3_BALLENTRY(CAM_VS, "a23", NULL),
1792 _OMAP3_BALLENTRY(CAM_WEN, "b23", NULL),
1793 _OMAP3_BALLENTRY(CAM_XCLKA, "c25", NULL),
1794 _OMAP3_BALLENTRY(CAM_XCLKB, "b26", NULL),
1795 _OMAP3_BALLENTRY(CSI2_DX0, "ag19", NULL),
1796 _OMAP3_BALLENTRY(CSI2_DX1, "ag18", NULL),
1797 _OMAP3_BALLENTRY(CSI2_DY0, "ah19", NULL),
1798 _OMAP3_BALLENTRY(CSI2_DY1, "ah18", NULL),
1799 _OMAP3_BALLENTRY(DSS_ACBIAS, "e27", NULL),
1800 _OMAP3_BALLENTRY(DSS_DATA0, "ag22", NULL),
1801 _OMAP3_BALLENTRY(DSS_DATA1, "ah22", NULL),
1802 _OMAP3_BALLENTRY(DSS_DATA10, "ad28", NULL),
1803 _OMAP3_BALLENTRY(DSS_DATA11, "ad27", NULL),
1804 _OMAP3_BALLENTRY(DSS_DATA12, "ab28", NULL),
1805 _OMAP3_BALLENTRY(DSS_DATA13, "ab27", NULL),
1806 _OMAP3_BALLENTRY(DSS_DATA14, "aa28", NULL),
1807 _OMAP3_BALLENTRY(DSS_DATA15, "aa27", NULL),
1808 _OMAP3_BALLENTRY(DSS_DATA16, "g25", NULL),
1809 _OMAP3_BALLENTRY(DSS_DATA17, "h27", NULL),
1810 _OMAP3_BALLENTRY(DSS_DATA18, "h26", NULL),
1811 _OMAP3_BALLENTRY(DSS_DATA19, "h25", NULL),
1812 _OMAP3_BALLENTRY(DSS_DATA2, "ag23", NULL),
1813 _OMAP3_BALLENTRY(DSS_DATA20, "e28", NULL),
1814 _OMAP3_BALLENTRY(DSS_DATA21, "j26", NULL),
1815 _OMAP3_BALLENTRY(DSS_DATA22, "ac27", NULL),
1816 _OMAP3_BALLENTRY(DSS_DATA23, "ac28", NULL),
1817 _OMAP3_BALLENTRY(DSS_DATA3, "ah23", NULL),
1818 _OMAP3_BALLENTRY(DSS_DATA4, "ag24", NULL),
1819 _OMAP3_BALLENTRY(DSS_DATA5, "ah24", NULL),
1820 _OMAP3_BALLENTRY(DSS_DATA6, "e26", NULL),
1821 _OMAP3_BALLENTRY(DSS_DATA7, "f28", NULL),
1822 _OMAP3_BALLENTRY(DSS_DATA8, "f27", NULL),
1823 _OMAP3_BALLENTRY(DSS_DATA9, "g26", NULL),
1824 _OMAP3_BALLENTRY(DSS_HSYNC, "d26", NULL),
1825 _OMAP3_BALLENTRY(DSS_PCLK, "d28", NULL),
1826 _OMAP3_BALLENTRY(DSS_VSYNC, "d27", NULL),
1827 _OMAP3_BALLENTRY(ETK_CLK, "af10", NULL),
1828 _OMAP3_BALLENTRY(ETK_CTL, "ae10", NULL),
1829 _OMAP3_BALLENTRY(ETK_D0, "af11", NULL),
1830 _OMAP3_BALLENTRY(ETK_D1, "ag12", NULL),
1831 _OMAP3_BALLENTRY(ETK_D10, "ae7", NULL),
1832 _OMAP3_BALLENTRY(ETK_D11, "af7", NULL),
1833 _OMAP3_BALLENTRY(ETK_D12, "ag7", NULL),
1834 _OMAP3_BALLENTRY(ETK_D13, "ah7", NULL),
1835 _OMAP3_BALLENTRY(ETK_D14, "ag8", NULL),
1836 _OMAP3_BALLENTRY(ETK_D15, "ah8", NULL),
1837 _OMAP3_BALLENTRY(ETK_D2, "ah12", NULL),
1838 _OMAP3_BALLENTRY(ETK_D3, "ae13", NULL),
1839 _OMAP3_BALLENTRY(ETK_D4, "ae11", NULL),
1840 _OMAP3_BALLENTRY(ETK_D5, "ah9", NULL),
1841 _OMAP3_BALLENTRY(ETK_D6, "af13", NULL),
1842 _OMAP3_BALLENTRY(ETK_D7, "ah14", NULL),
1843 _OMAP3_BALLENTRY(ETK_D8, "af9", NULL),
1844 _OMAP3_BALLENTRY(ETK_D9, "ag9", NULL),
1845 _OMAP3_BALLENTRY(GPMC_A1, "n4", "ac15"),
1846 _OMAP3_BALLENTRY(GPMC_A10, "k3", "ab19"),
1847 _OMAP3_BALLENTRY(GPMC_A11, NULL, "ac20"),
1848 _OMAP3_BALLENTRY(GPMC_A2, "m4", "ab15"),
1849 _OMAP3_BALLENTRY(GPMC_A3, "l4", "ac16"),
1850 _OMAP3_BALLENTRY(GPMC_A4, "k4", "ab16"),
1851 _OMAP3_BALLENTRY(GPMC_A5, "t3", "ac17"),
1852 _OMAP3_BALLENTRY(GPMC_A6, "r3", "ab17"),
1853 _OMAP3_BALLENTRY(GPMC_A7, "n3", "ac18"),
1854 _OMAP3_BALLENTRY(GPMC_A8, "m3", "ab18"),
1855 _OMAP3_BALLENTRY(GPMC_A9, "l3", "ac19"),
1856 _OMAP3_BALLENTRY(GPMC_CLK, "t4", "w2"),
1857 _OMAP3_BALLENTRY(GPMC_D0, "k1", "m2"),
1858 _OMAP3_BALLENTRY(GPMC_D1, "l1", "m1"),
1859 _OMAP3_BALLENTRY(GPMC_D10, "p1", "ab4"),
1860 _OMAP3_BALLENTRY(GPMC_D11, "r1", "ac4"),
1861 _OMAP3_BALLENTRY(GPMC_D12, "r2", "ab6"),
1862 _OMAP3_BALLENTRY(GPMC_D13, "t2", "ac6"),
1863 _OMAP3_BALLENTRY(GPMC_D14, "w1", "ab7"),
1864 _OMAP3_BALLENTRY(GPMC_D15, "y1", "ac7"),
1865 _OMAP3_BALLENTRY(GPMC_D2, "l2", "n2"),
1866 _OMAP3_BALLENTRY(GPMC_D3, "p2", "n1"),
1867 _OMAP3_BALLENTRY(GPMC_D4, "t1", "r2"),
1868 _OMAP3_BALLENTRY(GPMC_D5, "v1", "r1"),
1869 _OMAP3_BALLENTRY(GPMC_D6, "v2", "t2"),
1870 _OMAP3_BALLENTRY(GPMC_D7, "w2", "t1"),
1871 _OMAP3_BALLENTRY(GPMC_D8, "h2", "ab3"),
1872 _OMAP3_BALLENTRY(GPMC_D9, "k2", "ac3"),
1873 _OMAP3_BALLENTRY(GPMC_NADV_ALE, "f3", "w1"),
1874 _OMAP3_BALLENTRY(GPMC_NBE0_CLE, "g3", "ac12"),
1875 _OMAP3_BALLENTRY(GPMC_NBE1, "u3", NULL),
1876 _OMAP3_BALLENTRY(GPMC_NCS0, "g4", "y2"),
1877 _OMAP3_BALLENTRY(GPMC_NCS1, "h3", "y1"),
1878 _OMAP3_BALLENTRY(GPMC_NCS2, "v8", NULL),
1879 _OMAP3_BALLENTRY(GPMC_NCS3, "u8", NULL),
1880 _OMAP3_BALLENTRY(GPMC_NCS4, "t8", NULL),
1881 _OMAP3_BALLENTRY(GPMC_NCS5, "r8", NULL),
1882 _OMAP3_BALLENTRY(GPMC_NCS6, "p8", NULL),
1883 _OMAP3_BALLENTRY(GPMC_NCS7, "n8", NULL),
1884 _OMAP3_BALLENTRY(GPMC_NOE, "g2", "v2"),
1885 _OMAP3_BALLENTRY(GPMC_NWE, "f4", "v1"),
1886 _OMAP3_BALLENTRY(GPMC_NWP, "h1", "ab10"),
1887 _OMAP3_BALLENTRY(GPMC_WAIT0, "m8", "ab12"),
1888 _OMAP3_BALLENTRY(GPMC_WAIT1, "l8", "ac10"),
1889 _OMAP3_BALLENTRY(GPMC_WAIT2, "k8", NULL),
1890 _OMAP3_BALLENTRY(GPMC_WAIT3, "j8", NULL),
1891 _OMAP3_BALLENTRY(HDQ_SIO, "j25", NULL),
1892 _OMAP3_BALLENTRY(HSUSB0_CLK, "t28", NULL),
1893 _OMAP3_BALLENTRY(HSUSB0_DATA0, "t27", NULL),
1894 _OMAP3_BALLENTRY(HSUSB0_DATA1, "u28", NULL),
1895 _OMAP3_BALLENTRY(HSUSB0_DATA2, "u27", NULL),
1896 _OMAP3_BALLENTRY(HSUSB0_DATA3, "u26", NULL),
1897 _OMAP3_BALLENTRY(HSUSB0_DATA4, "u25", NULL),
1898 _OMAP3_BALLENTRY(HSUSB0_DATA5, "v28", NULL),
1899 _OMAP3_BALLENTRY(HSUSB0_DATA6, "v27", NULL),
1900 _OMAP3_BALLENTRY(HSUSB0_DATA7, "v26", NULL),
1901 _OMAP3_BALLENTRY(HSUSB0_DIR, "r28", NULL),
1902 _OMAP3_BALLENTRY(HSUSB0_NXT, "t26", NULL),
1903 _OMAP3_BALLENTRY(HSUSB0_STP, "t25", NULL),
1904 _OMAP3_BALLENTRY(I2C1_SCL, "k21", NULL),
1905 _OMAP3_BALLENTRY(I2C1_SDA, "j21", NULL),
1906 _OMAP3_BALLENTRY(I2C2_SCL, "af15", NULL),
1907 _OMAP3_BALLENTRY(I2C2_SDA, "ae15", NULL),
1908 _OMAP3_BALLENTRY(I2C3_SCL, "af14", NULL),
1909 _OMAP3_BALLENTRY(I2C3_SDA, "ag14", NULL),
1910 _OMAP3_BALLENTRY(I2C4_SCL, "ad26", NULL),
1911 _OMAP3_BALLENTRY(I2C4_SDA, "ae26", NULL),
1912 _OMAP3_BALLENTRY(JTAG_EMU0, "aa11", NULL),
1913 _OMAP3_BALLENTRY(JTAG_EMU1, "aa10", NULL),
1914 _OMAP3_BALLENTRY(JTAG_RTCK, "aa12", NULL),
1915 _OMAP3_BALLENTRY(JTAG_TCK, "aa13", NULL),
1916 _OMAP3_BALLENTRY(JTAG_TDI, "aa20", NULL),
1917 _OMAP3_BALLENTRY(JTAG_TDO, "aa19", NULL),
1918 _OMAP3_BALLENTRY(JTAG_TMS_TMSC, "aa18", NULL),
1919 _OMAP3_BALLENTRY(MCBSP1_CLKR, "y21", NULL),
1920 _OMAP3_BALLENTRY(MCBSP1_CLKX, "w21", NULL),
1921 _OMAP3_BALLENTRY(MCBSP1_DR, "u21", NULL),
1922 _OMAP3_BALLENTRY(MCBSP1_DX, "v21", NULL),
1923 _OMAP3_BALLENTRY(MCBSP1_FSR, "aa21", NULL),
1924 _OMAP3_BALLENTRY(MCBSP1_FSX, "k26", NULL),
1925 _OMAP3_BALLENTRY(MCBSP2_CLKX, "n21", NULL),
1926 _OMAP3_BALLENTRY(MCBSP2_DR, "r21", NULL),
1927 _OMAP3_BALLENTRY(MCBSP2_DX, "m21", NULL),
1928 _OMAP3_BALLENTRY(MCBSP2_FSX, "p21", NULL),
1929 _OMAP3_BALLENTRY(MCBSP3_CLKX, "af5", NULL),
1930 _OMAP3_BALLENTRY(MCBSP3_DR, "ae6", NULL),
1931 _OMAP3_BALLENTRY(MCBSP3_DX, "af6", NULL),
1932 _OMAP3_BALLENTRY(MCBSP3_FSX, "ae5", NULL),
1933 _OMAP3_BALLENTRY(MCBSP4_CLKX, "ae1", NULL),
1934 _OMAP3_BALLENTRY(MCBSP4_DR, "ad1", NULL),
1935 _OMAP3_BALLENTRY(MCBSP4_DX, "ad2", NULL),
1936 _OMAP3_BALLENTRY(MCBSP4_FSX, "ac1", NULL),
1937 _OMAP3_BALLENTRY(MCBSP_CLKS, "t21", NULL),
1938 _OMAP3_BALLENTRY(MCSPI1_CLK, "ab3", NULL),
1939 _OMAP3_BALLENTRY(MCSPI1_CS0, "ac2", NULL),
1940 _OMAP3_BALLENTRY(MCSPI1_CS1, "ac3", NULL),
1941 _OMAP3_BALLENTRY(MCSPI1_CS2, "ab1", NULL),
1942 _OMAP3_BALLENTRY(MCSPI1_CS3, "ab2", NULL),
1943 _OMAP3_BALLENTRY(MCSPI1_SIMO, "ab4", NULL),
1944 _OMAP3_BALLENTRY(MCSPI1_SOMI, "aa4", NULL),
1945 _OMAP3_BALLENTRY(MCSPI2_CLK, "aa3", NULL),
1946 _OMAP3_BALLENTRY(MCSPI2_CS0, "y4", NULL),
1947 _OMAP3_BALLENTRY(MCSPI2_CS1, "v3", NULL),
1948 _OMAP3_BALLENTRY(MCSPI2_SIMO, "y2", NULL),
1949 _OMAP3_BALLENTRY(MCSPI2_SOMI, "y3", NULL),
1950 _OMAP3_BALLENTRY(SDMMC1_CLK, "n28", NULL),
1951 _OMAP3_BALLENTRY(SDMMC1_CMD, "m27", NULL),
1952 _OMAP3_BALLENTRY(SDMMC1_DAT0, "n27", NULL),
1953 _OMAP3_BALLENTRY(SDMMC1_DAT1, "n26", NULL),
1954 _OMAP3_BALLENTRY(SDMMC1_DAT2, "n25", NULL),
1955 _OMAP3_BALLENTRY(SDMMC1_DAT3, "p28", NULL),
1956 _OMAP3_BALLENTRY(SDMMC2_CLK, "ae2", NULL),
1957 _OMAP3_BALLENTRY(SDMMC2_CMD, "ag5", NULL),
1958 _OMAP3_BALLENTRY(SDMMC2_DAT0, "ah5", NULL),
1959 _OMAP3_BALLENTRY(SDMMC2_DAT1, "ah4", NULL),
1960 _OMAP3_BALLENTRY(SDMMC2_DAT2, "ag4", NULL),
1961 _OMAP3_BALLENTRY(SDMMC2_DAT3, "af4", NULL),
1962 _OMAP3_BALLENTRY(SDMMC2_DAT4, "ae4", NULL),
1963 _OMAP3_BALLENTRY(SDMMC2_DAT5, "ah3", NULL),
1964 _OMAP3_BALLENTRY(SDMMC2_DAT6, "af3", NULL),
1965 _OMAP3_BALLENTRY(SDMMC2_DAT7, "ae3", NULL),
1966 _OMAP3_BALLENTRY(SDRC_A0, NULL, "n22"),
1967 _OMAP3_BALLENTRY(SDRC_A1, NULL, "n23"),
1968 _OMAP3_BALLENTRY(SDRC_A10, NULL, "v22"),
1969 _OMAP3_BALLENTRY(SDRC_A11, NULL, "v23"),
1970 _OMAP3_BALLENTRY(SDRC_A12, NULL, "w22"),
1971 _OMAP3_BALLENTRY(SDRC_A13, NULL, "w23"),
1972 _OMAP3_BALLENTRY(SDRC_A14, NULL, "y22"),
1973 _OMAP3_BALLENTRY(SDRC_A2, NULL, "p22"),
1974 _OMAP3_BALLENTRY(SDRC_A3, NULL, "p23"),
1975 _OMAP3_BALLENTRY(SDRC_A4, NULL, "r22"),
1976 _OMAP3_BALLENTRY(SDRC_A5, NULL, "r23"),
1977 _OMAP3_BALLENTRY(SDRC_A6, NULL, "t22"),
1978 _OMAP3_BALLENTRY(SDRC_A7, NULL, "t23"),
1979 _OMAP3_BALLENTRY(SDRC_A8, NULL, "u22"),
1980 _OMAP3_BALLENTRY(SDRC_A9, NULL, "u23"),
1981 _OMAP3_BALLENTRY(SDRC_BA0, "h9", "ab21"),
1982 _OMAP3_BALLENTRY(SDRC_BA1, "h10", "ac21"),
1983 _OMAP3_BALLENTRY(SDRC_CKE0, "h16", "j22"),
1984 _OMAP3_BALLENTRY(SDRC_CKE1, "h17", "j23"),
1985 _OMAP3_BALLENTRY(SDRC_CLK, "a13", "a11"),
1986 _OMAP3_BALLENTRY(SDRC_D0, NULL, "j2"),
1987 _OMAP3_BALLENTRY(SDRC_D1, NULL, "j1"),
1988 _OMAP3_BALLENTRY(SDRC_D10, "c15", "b14"),
1989 _OMAP3_BALLENTRY(SDRC_D11, "b16", "a14"),
1990 _OMAP3_BALLENTRY(SDRC_D12, "d17", "b16"),
1991 _OMAP3_BALLENTRY(SDRC_D13, "c17", "a16"),
1992 _OMAP3_BALLENTRY(SDRC_D14, "b17", "b19"),
1993 _OMAP3_BALLENTRY(SDRC_D15, "d18", "a19"),
1994 _OMAP3_BALLENTRY(SDRC_D16, NULL, "b3"),
1995 _OMAP3_BALLENTRY(SDRC_D17, NULL, "a3"),
1996 _OMAP3_BALLENTRY(SDRC_D18, NULL, "b5"),
1997 _OMAP3_BALLENTRY(SDRC_D19, NULL, "a5"),
1998 _OMAP3_BALLENTRY(SDRC_D2, NULL, "g2"),
1999 _OMAP3_BALLENTRY(SDRC_D20, NULL, "b8"),
2000 _OMAP3_BALLENTRY(SDRC_D21, NULL, "a8"),
2001 _OMAP3_BALLENTRY(SDRC_D22, NULL, "b9"),
2002 _OMAP3_BALLENTRY(SDRC_D23, NULL, "a9"),
2003 _OMAP3_BALLENTRY(SDRC_D24, NULL, "b21"),
2004 _OMAP3_BALLENTRY(SDRC_D25, NULL, "a21"),
2005 _OMAP3_BALLENTRY(SDRC_D26, NULL, "d22"),
2006 _OMAP3_BALLENTRY(SDRC_D27, NULL, "d23"),
2007 _OMAP3_BALLENTRY(SDRC_D28, NULL, "e22"),
2008 _OMAP3_BALLENTRY(SDRC_D29, NULL, "e23"),
2009 _OMAP3_BALLENTRY(SDRC_D3, NULL, "g1"),
2010 _OMAP3_BALLENTRY(SDRC_D30, NULL, "g22"),
2011 _OMAP3_BALLENTRY(SDRC_D31, NULL, "g23"),
2012 _OMAP3_BALLENTRY(SDRC_D4, NULL, "f2"),
2013 _OMAP3_BALLENTRY(SDRC_D5, NULL, "f1"),
2014 _OMAP3_BALLENTRY(SDRC_D6, NULL, "d2"),
2015 _OMAP3_BALLENTRY(SDRC_D7, NULL, "d1"),
2016 _OMAP3_BALLENTRY(SDRC_D8, "c14", "b13"),
2017 _OMAP3_BALLENTRY(SDRC_D9, "b14", "a13"),
2018 _OMAP3_BALLENTRY(SDRC_DM0, NULL, "c1"),
2019 _OMAP3_BALLENTRY(SDRC_DM1, "a16", "a17"),
2020 _OMAP3_BALLENTRY(SDRC_DM2, NULL, "a6"),
2021 _OMAP3_BALLENTRY(SDRC_DM3, NULL, "a20"),
2022 _OMAP3_BALLENTRY(SDRC_DQS0, NULL, "c2"),
2023 _OMAP3_BALLENTRY(SDRC_DQS1, "a17", "b17"),
2024 _OMAP3_BALLENTRY(SDRC_DQS2, NULL, "b6"),
2025 _OMAP3_BALLENTRY(SDRC_DQS3, NULL, "b20"),
2026 _OMAP3_BALLENTRY(SDRC_NCAS, "h13", "l22"),
2027 _OMAP3_BALLENTRY(SDRC_NCLK, "a14", "b11"),
2028 _OMAP3_BALLENTRY(SDRC_NCS0, "h11", "m22"),
2029 _OMAP3_BALLENTRY(SDRC_NCS1, "h12", "m23"),
2030 _OMAP3_BALLENTRY(SDRC_NRAS, "h14", "l23"),
2031 _OMAP3_BALLENTRY(SDRC_NWE, "h15", "k23"),
2032 _OMAP3_BALLENTRY(SIM_CLK, "p26", NULL),
2033 _OMAP3_BALLENTRY(SIM_IO, "p27", NULL),
2034 _OMAP3_BALLENTRY(SIM_PWRCTRL, "r27", NULL),
2035 _OMAP3_BALLENTRY(SIM_RST, "r25", NULL),
2036 _OMAP3_BALLENTRY(SYS_32K, "ae25", NULL),
2037 _OMAP3_BALLENTRY(SYS_BOOT0, "ah26", NULL),
2038 _OMAP3_BALLENTRY(SYS_BOOT1, "ag26", NULL),
2039 _OMAP3_BALLENTRY(SYS_BOOT2, "ae14", NULL),
2040 _OMAP3_BALLENTRY(SYS_BOOT3, "af18", NULL),
2041 _OMAP3_BALLENTRY(SYS_BOOT4, "af19", NULL),
2042 _OMAP3_BALLENTRY(SYS_BOOT5, "ae21", NULL),
2043 _OMAP3_BALLENTRY(SYS_BOOT6, "af21", NULL),
2044 _OMAP3_BALLENTRY(SYS_CLKOUT1, "ag25", NULL),
2045 _OMAP3_BALLENTRY(SYS_CLKOUT2, "ae22", NULL),
2046 _OMAP3_BALLENTRY(SYS_CLKREQ, "af25", NULL),
2047 _OMAP3_BALLENTRY(SYS_NIRQ, "af26", NULL),
2048 _OMAP3_BALLENTRY(SYS_NRESWARM, "af24", NULL),
2049 _OMAP3_BALLENTRY(SYS_OFF_MODE, "af22", NULL),
2050 _OMAP3_BALLENTRY(UART1_CTS, "w8", NULL),
2051 _OMAP3_BALLENTRY(UART1_RTS, "aa9", NULL),
2052 _OMAP3_BALLENTRY(UART1_RX, "y8", NULL),
2053 _OMAP3_BALLENTRY(UART1_TX, "aa8", NULL),
2054 _OMAP3_BALLENTRY(UART2_CTS, "ab26", NULL),
2055 _OMAP3_BALLENTRY(UART2_RTS, "ab25", NULL),
2056 _OMAP3_BALLENTRY(UART2_RX, "ad25", NULL),
2057 _OMAP3_BALLENTRY(UART2_TX, "aa25", NULL),
2058 _OMAP3_BALLENTRY(UART3_CTS_RCTX, "h18", NULL),
2059 _OMAP3_BALLENTRY(UART3_RTS_SD, "h19", NULL),
2060 _OMAP3_BALLENTRY(UART3_RX_IRRX, "h20", NULL),
2061 _OMAP3_BALLENTRY(UART3_TX_IRTX, "h21", NULL),
2062 { .reg_offset = OMAP_MUX_TERMINATOR },
2063};
2064#else
2065#define omap36xx_cbp_ball NULL
2066#endif
2067
2068int __init omap3_mux_init(struct omap_board_mux *board_subset, int flags)
2069{
2070 struct omap_mux *package_subset;
2071 struct omap_ball *package_balls;
2072
2073 switch (flags & OMAP_PACKAGE_MASK) {
2074 case (OMAP_PACKAGE_CBC):
2075 package_subset = omap3_cbc_subset;
2076 package_balls = omap3_cbc_ball;
2077 break;
2078 case (OMAP_PACKAGE_CBB):
2079 package_subset = omap3_cbb_subset;
2080 package_balls = omap3_cbb_ball;
2081 break;
2082 case (OMAP_PACKAGE_CUS):
2083 package_subset = omap3_cus_subset;
2084 package_balls = omap3_cus_ball;
2085 break;
2086 case (OMAP_PACKAGE_CBP):
2087 package_subset = omap36xx_cbp_subset;
2088 package_balls = omap36xx_cbp_ball;
2089 break;
2090 default:
2091 printk(KERN_ERR "mux: Unknown omap package, mux disabled\n");
2092 return -EINVAL;
2093 }
2094
2095 return omap_mux_init(OMAP3_CONTROL_PADCONF_MUX_PBASE,
2096 OMAP3_CONTROL_PADCONF_MUX_SIZE,
2097 omap3_muxmodes, package_subset, board_subset,
2098 package_balls);
2099}
diff --git a/arch/arm/mach-omap2/mux34xx.h b/arch/arm/mach-omap2/mux34xx.h
new file mode 100644
index 000000000000..6543ebf8ecfc
--- /dev/null
+++ b/arch/arm/mach-omap2/mux34xx.h
@@ -0,0 +1,398 @@
1/*
2 * Copyright (C) 2009 Nokia
3 * Copyright (C) 2009 Texas Instruments
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#define OMAP3_CONTROL_PADCONF_MUX_PBASE 0x48002030LU
11
12#define OMAP3_MUX(mode0, mux_value) \
13{ \
14 .reg_offset = (OMAP3_CONTROL_PADCONF_##mode0##_OFFSET), \
15 .value = (mux_value), \
16}
17
18/*
19 * OMAP3 CONTROL_PADCONF* register offsets for pin-muxing
20 *
21 * Extracted from the TRM. Add 0x48002030 to these values to get the
22 * absolute addresses. The name in the macro is the mode-0 name of
23 * the pin. NOTE: These registers are 16-bits wide.
24 *
25 * Note that 34XX TRM uses MMC instead of SDMMC and SAD2D instead
26 * of CHASSIS for some registers. For the defines, we follow the
27 * 36XX naming, and use SDMMC and CHASSIS.
28 */
29#define OMAP3_CONTROL_PADCONF_SDRC_D0_OFFSET 0x000
30#define OMAP3_CONTROL_PADCONF_SDRC_D1_OFFSET 0x002
31#define OMAP3_CONTROL_PADCONF_SDRC_D2_OFFSET 0x004
32#define OMAP3_CONTROL_PADCONF_SDRC_D3_OFFSET 0x006
33#define OMAP3_CONTROL_PADCONF_SDRC_D4_OFFSET 0x008
34#define OMAP3_CONTROL_PADCONF_SDRC_D5_OFFSET 0x00a
35#define OMAP3_CONTROL_PADCONF_SDRC_D6_OFFSET 0x00c
36#define OMAP3_CONTROL_PADCONF_SDRC_D7_OFFSET 0x00e
37#define OMAP3_CONTROL_PADCONF_SDRC_D8_OFFSET 0x010
38#define OMAP3_CONTROL_PADCONF_SDRC_D9_OFFSET 0x012
39#define OMAP3_CONTROL_PADCONF_SDRC_D10_OFFSET 0x014
40#define OMAP3_CONTROL_PADCONF_SDRC_D11_OFFSET 0x016
41#define OMAP3_CONTROL_PADCONF_SDRC_D12_OFFSET 0x018
42#define OMAP3_CONTROL_PADCONF_SDRC_D13_OFFSET 0x01a
43#define OMAP3_CONTROL_PADCONF_SDRC_D14_OFFSET 0x01c
44#define OMAP3_CONTROL_PADCONF_SDRC_D15_OFFSET 0x01e
45#define OMAP3_CONTROL_PADCONF_SDRC_D16_OFFSET 0x020
46#define OMAP3_CONTROL_PADCONF_SDRC_D17_OFFSET 0x022
47#define OMAP3_CONTROL_PADCONF_SDRC_D18_OFFSET 0x024
48#define OMAP3_CONTROL_PADCONF_SDRC_D19_OFFSET 0x026
49#define OMAP3_CONTROL_PADCONF_SDRC_D20_OFFSET 0x028
50#define OMAP3_CONTROL_PADCONF_SDRC_D21_OFFSET 0x02a
51#define OMAP3_CONTROL_PADCONF_SDRC_D22_OFFSET 0x02c
52#define OMAP3_CONTROL_PADCONF_SDRC_D23_OFFSET 0x02e
53#define OMAP3_CONTROL_PADCONF_SDRC_D24_OFFSET 0x030
54#define OMAP3_CONTROL_PADCONF_SDRC_D25_OFFSET 0x032
55#define OMAP3_CONTROL_PADCONF_SDRC_D26_OFFSET 0x034
56#define OMAP3_CONTROL_PADCONF_SDRC_D27_OFFSET 0x036
57#define OMAP3_CONTROL_PADCONF_SDRC_D28_OFFSET 0x038
58#define OMAP3_CONTROL_PADCONF_SDRC_D29_OFFSET 0x03a
59#define OMAP3_CONTROL_PADCONF_SDRC_D30_OFFSET 0x03c
60#define OMAP3_CONTROL_PADCONF_SDRC_D31_OFFSET 0x03e
61#define OMAP3_CONTROL_PADCONF_SDRC_CLK_OFFSET 0x040
62#define OMAP3_CONTROL_PADCONF_SDRC_DQS0_OFFSET 0x042
63#define OMAP3_CONTROL_PADCONF_SDRC_DQS1_OFFSET 0x044
64#define OMAP3_CONTROL_PADCONF_SDRC_DQS2_OFFSET 0x046
65#define OMAP3_CONTROL_PADCONF_SDRC_DQS3_OFFSET 0x048
66#define OMAP3_CONTROL_PADCONF_GPMC_A1_OFFSET 0x04a
67#define OMAP3_CONTROL_PADCONF_GPMC_A2_OFFSET 0x04c
68#define OMAP3_CONTROL_PADCONF_GPMC_A3_OFFSET 0x04e
69#define OMAP3_CONTROL_PADCONF_GPMC_A4_OFFSET 0x050
70#define OMAP3_CONTROL_PADCONF_GPMC_A5_OFFSET 0x052
71#define OMAP3_CONTROL_PADCONF_GPMC_A6_OFFSET 0x054
72#define OMAP3_CONTROL_PADCONF_GPMC_A7_OFFSET 0x056
73#define OMAP3_CONTROL_PADCONF_GPMC_A8_OFFSET 0x058
74#define OMAP3_CONTROL_PADCONF_GPMC_A9_OFFSET 0x05a
75#define OMAP3_CONTROL_PADCONF_GPMC_A10_OFFSET 0x05c
76#define OMAP3_CONTROL_PADCONF_GPMC_D0_OFFSET 0x05e
77#define OMAP3_CONTROL_PADCONF_GPMC_D1_OFFSET 0x060
78#define OMAP3_CONTROL_PADCONF_GPMC_D2_OFFSET 0x062
79#define OMAP3_CONTROL_PADCONF_GPMC_D3_OFFSET 0x064
80#define OMAP3_CONTROL_PADCONF_GPMC_D4_OFFSET 0x066
81#define OMAP3_CONTROL_PADCONF_GPMC_D5_OFFSET 0x068
82#define OMAP3_CONTROL_PADCONF_GPMC_D6_OFFSET 0x06a
83#define OMAP3_CONTROL_PADCONF_GPMC_D7_OFFSET 0x06c
84#define OMAP3_CONTROL_PADCONF_GPMC_D8_OFFSET 0x06e
85#define OMAP3_CONTROL_PADCONF_GPMC_D9_OFFSET 0x070
86#define OMAP3_CONTROL_PADCONF_GPMC_D10_OFFSET 0x072
87#define OMAP3_CONTROL_PADCONF_GPMC_D11_OFFSET 0x074
88#define OMAP3_CONTROL_PADCONF_GPMC_D12_OFFSET 0x076
89#define OMAP3_CONTROL_PADCONF_GPMC_D13_OFFSET 0x078
90#define OMAP3_CONTROL_PADCONF_GPMC_D14_OFFSET 0x07a
91#define OMAP3_CONTROL_PADCONF_GPMC_D15_OFFSET 0x07c
92#define OMAP3_CONTROL_PADCONF_GPMC_NCS0_OFFSET 0x07e
93#define OMAP3_CONTROL_PADCONF_GPMC_NCS1_OFFSET 0x080
94#define OMAP3_CONTROL_PADCONF_GPMC_NCS2_OFFSET 0x082
95#define OMAP3_CONTROL_PADCONF_GPMC_NCS3_OFFSET 0x084
96#define OMAP3_CONTROL_PADCONF_GPMC_NCS4_OFFSET 0x086
97#define OMAP3_CONTROL_PADCONF_GPMC_NCS5_OFFSET 0x088
98#define OMAP3_CONTROL_PADCONF_GPMC_NCS6_OFFSET 0x08a
99#define OMAP3_CONTROL_PADCONF_GPMC_NCS7_OFFSET 0x08c
100#define OMAP3_CONTROL_PADCONF_GPMC_CLK_OFFSET 0x08e
101#define OMAP3_CONTROL_PADCONF_GPMC_NADV_ALE_OFFSET 0x090
102#define OMAP3_CONTROL_PADCONF_GPMC_NOE_OFFSET 0x092
103#define OMAP3_CONTROL_PADCONF_GPMC_NWE_OFFSET 0x094
104#define OMAP3_CONTROL_PADCONF_GPMC_NBE0_CLE_OFFSET 0x096
105#define OMAP3_CONTROL_PADCONF_GPMC_NBE1_OFFSET 0x098
106#define OMAP3_CONTROL_PADCONF_GPMC_NWP_OFFSET 0x09a
107#define OMAP3_CONTROL_PADCONF_GPMC_WAIT0_OFFSET 0x09c
108#define OMAP3_CONTROL_PADCONF_GPMC_WAIT1_OFFSET 0x09e
109#define OMAP3_CONTROL_PADCONF_GPMC_WAIT2_OFFSET 0x0a0
110#define OMAP3_CONTROL_PADCONF_GPMC_WAIT3_OFFSET 0x0a2
111#define OMAP3_CONTROL_PADCONF_DSS_PCLK_OFFSET 0x0a4
112#define OMAP3_CONTROL_PADCONF_DSS_HSYNC_OFFSET 0x0a6
113#define OMAP3_CONTROL_PADCONF_DSS_VSYNC_OFFSET 0x0a8
114#define OMAP3_CONTROL_PADCONF_DSS_ACBIAS_OFFSET 0x0aa
115#define OMAP3_CONTROL_PADCONF_DSS_DATA0_OFFSET 0x0ac
116#define OMAP3_CONTROL_PADCONF_DSS_DATA1_OFFSET 0x0ae
117#define OMAP3_CONTROL_PADCONF_DSS_DATA2_OFFSET 0x0b0
118#define OMAP3_CONTROL_PADCONF_DSS_DATA3_OFFSET 0x0b2
119#define OMAP3_CONTROL_PADCONF_DSS_DATA4_OFFSET 0x0b4
120#define OMAP3_CONTROL_PADCONF_DSS_DATA5_OFFSET 0x0b6
121#define OMAP3_CONTROL_PADCONF_DSS_DATA6_OFFSET 0x0b8
122#define OMAP3_CONTROL_PADCONF_DSS_DATA7_OFFSET 0x0ba
123#define OMAP3_CONTROL_PADCONF_DSS_DATA8_OFFSET 0x0bc
124#define OMAP3_CONTROL_PADCONF_DSS_DATA9_OFFSET 0x0be
125#define OMAP3_CONTROL_PADCONF_DSS_DATA10_OFFSET 0x0c0
126#define OMAP3_CONTROL_PADCONF_DSS_DATA11_OFFSET 0x0c2
127#define OMAP3_CONTROL_PADCONF_DSS_DATA12_OFFSET 0x0c4
128#define OMAP3_CONTROL_PADCONF_DSS_DATA13_OFFSET 0x0c6
129#define OMAP3_CONTROL_PADCONF_DSS_DATA14_OFFSET 0x0c8
130#define OMAP3_CONTROL_PADCONF_DSS_DATA15_OFFSET 0x0ca
131#define OMAP3_CONTROL_PADCONF_DSS_DATA16_OFFSET 0x0cc
132#define OMAP3_CONTROL_PADCONF_DSS_DATA17_OFFSET 0x0ce
133#define OMAP3_CONTROL_PADCONF_DSS_DATA18_OFFSET 0x0d0
134#define OMAP3_CONTROL_PADCONF_DSS_DATA19_OFFSET 0x0d2
135#define OMAP3_CONTROL_PADCONF_DSS_DATA20_OFFSET 0x0d4
136#define OMAP3_CONTROL_PADCONF_DSS_DATA21_OFFSET 0x0d6
137#define OMAP3_CONTROL_PADCONF_DSS_DATA22_OFFSET 0x0d8
138#define OMAP3_CONTROL_PADCONF_DSS_DATA23_OFFSET 0x0da
139#define OMAP3_CONTROL_PADCONF_CAM_HS_OFFSET 0x0dc
140#define OMAP3_CONTROL_PADCONF_CAM_VS_OFFSET 0x0de
141#define OMAP3_CONTROL_PADCONF_CAM_XCLKA_OFFSET 0x0e0
142#define OMAP3_CONTROL_PADCONF_CAM_PCLK_OFFSET 0x0e2
143#define OMAP3_CONTROL_PADCONF_CAM_FLD_OFFSET 0x0e4
144#define OMAP3_CONTROL_PADCONF_CAM_D0_OFFSET 0x0e6
145#define OMAP3_CONTROL_PADCONF_CAM_D1_OFFSET 0x0e8
146#define OMAP3_CONTROL_PADCONF_CAM_D2_OFFSET 0x0ea
147#define OMAP3_CONTROL_PADCONF_CAM_D3_OFFSET 0x0ec
148#define OMAP3_CONTROL_PADCONF_CAM_D4_OFFSET 0x0ee
149#define OMAP3_CONTROL_PADCONF_CAM_D5_OFFSET 0x0f0
150#define OMAP3_CONTROL_PADCONF_CAM_D6_OFFSET 0x0f2
151#define OMAP3_CONTROL_PADCONF_CAM_D7_OFFSET 0x0f4
152#define OMAP3_CONTROL_PADCONF_CAM_D8_OFFSET 0x0f6
153#define OMAP3_CONTROL_PADCONF_CAM_D9_OFFSET 0x0f8
154#define OMAP3_CONTROL_PADCONF_CAM_D10_OFFSET 0x0fa
155#define OMAP3_CONTROL_PADCONF_CAM_D11_OFFSET 0x0fc
156#define OMAP3_CONTROL_PADCONF_CAM_XCLKB_OFFSET 0x0fe
157#define OMAP3_CONTROL_PADCONF_CAM_WEN_OFFSET 0x100
158#define OMAP3_CONTROL_PADCONF_CAM_STROBE_OFFSET 0x102
159#define OMAP3_CONTROL_PADCONF_CSI2_DX0_OFFSET 0x104
160#define OMAP3_CONTROL_PADCONF_CSI2_DY0_OFFSET 0x106
161#define OMAP3_CONTROL_PADCONF_CSI2_DX1_OFFSET 0x108
162#define OMAP3_CONTROL_PADCONF_CSI2_DY1_OFFSET 0x10a
163#define OMAP3_CONTROL_PADCONF_MCBSP2_FSX_OFFSET 0x10c
164#define OMAP3_CONTROL_PADCONF_MCBSP2_CLKX_OFFSET 0x10e
165#define OMAP3_CONTROL_PADCONF_MCBSP2_DR_OFFSET 0x110
166#define OMAP3_CONTROL_PADCONF_MCBSP2_DX_OFFSET 0x112
167#define OMAP3_CONTROL_PADCONF_SDMMC1_CLK_OFFSET 0x114
168#define OMAP3_CONTROL_PADCONF_SDMMC1_CMD_OFFSET 0x116
169#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT0_OFFSET 0x118
170#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT1_OFFSET 0x11a
171#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT2_OFFSET 0x11c
172#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT3_OFFSET 0x11e
173
174/* SDMMC1_DAT4 - DAT7 are SIM_IO SIM_CLK SIM_PWRCTRL and SIM_RST on 36xx */
175#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT4_OFFSET 0x120
176#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT5_OFFSET 0x122
177#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT6_OFFSET 0x124
178#define OMAP3_CONTROL_PADCONF_SDMMC1_DAT7_OFFSET 0x126
179
180#define OMAP3_CONTROL_PADCONF_SDMMC2_CLK_OFFSET 0x128
181#define OMAP3_CONTROL_PADCONF_SDMMC2_CMD_OFFSET 0x12a
182#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT0_OFFSET 0x12c
183#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT1_OFFSET 0x12e
184#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT2_OFFSET 0x130
185#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT3_OFFSET 0x132
186#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT4_OFFSET 0x134
187#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT5_OFFSET 0x136
188#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT6_OFFSET 0x138
189#define OMAP3_CONTROL_PADCONF_SDMMC2_DAT7_OFFSET 0x13a
190#define OMAP3_CONTROL_PADCONF_MCBSP3_DX_OFFSET 0x13c
191#define OMAP3_CONTROL_PADCONF_MCBSP3_DR_OFFSET 0x13e
192#define OMAP3_CONTROL_PADCONF_MCBSP3_CLKX_OFFSET 0x140
193#define OMAP3_CONTROL_PADCONF_MCBSP3_FSX_OFFSET 0x142
194#define OMAP3_CONTROL_PADCONF_UART2_CTS_OFFSET 0x144
195#define OMAP3_CONTROL_PADCONF_UART2_RTS_OFFSET 0x146
196#define OMAP3_CONTROL_PADCONF_UART2_TX_OFFSET 0x148
197#define OMAP3_CONTROL_PADCONF_UART2_RX_OFFSET 0x14a
198#define OMAP3_CONTROL_PADCONF_UART1_TX_OFFSET 0x14c
199#define OMAP3_CONTROL_PADCONF_UART1_RTS_OFFSET 0x14e
200#define OMAP3_CONTROL_PADCONF_UART1_CTS_OFFSET 0x150
201#define OMAP3_CONTROL_PADCONF_UART1_RX_OFFSET 0x152
202#define OMAP3_CONTROL_PADCONF_MCBSP4_CLKX_OFFSET 0x154
203#define OMAP3_CONTROL_PADCONF_MCBSP4_DR_OFFSET 0x156
204#define OMAP3_CONTROL_PADCONF_MCBSP4_DX_OFFSET 0x158
205#define OMAP3_CONTROL_PADCONF_MCBSP4_FSX_OFFSET 0x15a
206#define OMAP3_CONTROL_PADCONF_MCBSP1_CLKR_OFFSET 0x15c
207#define OMAP3_CONTROL_PADCONF_MCBSP1_FSR_OFFSET 0x15e
208#define OMAP3_CONTROL_PADCONF_MCBSP1_DX_OFFSET 0x160
209#define OMAP3_CONTROL_PADCONF_MCBSP1_DR_OFFSET 0x162
210#define OMAP3_CONTROL_PADCONF_MCBSP_CLKS_OFFSET 0x164
211#define OMAP3_CONTROL_PADCONF_MCBSP1_FSX_OFFSET 0x166
212#define OMAP3_CONTROL_PADCONF_MCBSP1_CLKX_OFFSET 0x168
213#define OMAP3_CONTROL_PADCONF_UART3_CTS_RCTX_OFFSET 0x16a
214#define OMAP3_CONTROL_PADCONF_UART3_RTS_SD_OFFSET 0x16c
215#define OMAP3_CONTROL_PADCONF_UART3_RX_IRRX_OFFSET 0x16e
216#define OMAP3_CONTROL_PADCONF_UART3_TX_IRTX_OFFSET 0x170
217#define OMAP3_CONTROL_PADCONF_HSUSB0_CLK_OFFSET 0x172
218#define OMAP3_CONTROL_PADCONF_HSUSB0_STP_OFFSET 0x174
219#define OMAP3_CONTROL_PADCONF_HSUSB0_DIR_OFFSET 0x176
220#define OMAP3_CONTROL_PADCONF_HSUSB0_NXT_OFFSET 0x178
221#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA0_OFFSET 0x17a
222#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA1_OFFSET 0x17c
223#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA2_OFFSET 0x17e
224#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA3_OFFSET 0x180
225#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA4_OFFSET 0x182
226#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA5_OFFSET 0x184
227#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA6_OFFSET 0x186
228#define OMAP3_CONTROL_PADCONF_HSUSB0_DATA7_OFFSET 0x188
229#define OMAP3_CONTROL_PADCONF_I2C1_SCL_OFFSET 0x18a
230#define OMAP3_CONTROL_PADCONF_I2C1_SDA_OFFSET 0x18c
231#define OMAP3_CONTROL_PADCONF_I2C2_SCL_OFFSET 0x18e
232#define OMAP3_CONTROL_PADCONF_I2C2_SDA_OFFSET 0x190
233#define OMAP3_CONTROL_PADCONF_I2C3_SCL_OFFSET 0x192
234#define OMAP3_CONTROL_PADCONF_I2C3_SDA_OFFSET 0x194
235#define OMAP3_CONTROL_PADCONF_HDQ_SIO_OFFSET 0x196
236#define OMAP3_CONTROL_PADCONF_MCSPI1_CLK_OFFSET 0x198
237#define OMAP3_CONTROL_PADCONF_MCSPI1_SIMO_OFFSET 0x19a
238#define OMAP3_CONTROL_PADCONF_MCSPI1_SOMI_OFFSET 0x19c
239#define OMAP3_CONTROL_PADCONF_MCSPI1_CS0_OFFSET 0x19e
240#define OMAP3_CONTROL_PADCONF_MCSPI1_CS1_OFFSET 0x1a0
241#define OMAP3_CONTROL_PADCONF_MCSPI1_CS2_OFFSET 0x1a2
242#define OMAP3_CONTROL_PADCONF_MCSPI1_CS3_OFFSET 0x1a4
243#define OMAP3_CONTROL_PADCONF_MCSPI2_CLK_OFFSET 0x1a6
244#define OMAP3_CONTROL_PADCONF_MCSPI2_SIMO_OFFSET 0x1a8
245#define OMAP3_CONTROL_PADCONF_MCSPI2_SOMI_OFFSET 0x1aa
246#define OMAP3_CONTROL_PADCONF_MCSPI2_CS0_OFFSET 0x1ac
247#define OMAP3_CONTROL_PADCONF_MCSPI2_CS1_OFFSET 0x1ae
248#define OMAP3_CONTROL_PADCONF_SYS_NIRQ_OFFSET 0x1b0
249#define OMAP3_CONTROL_PADCONF_SYS_CLKOUT2_OFFSET 0x1b2
250#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD0_OFFSET 0x1b4
251#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD1_OFFSET 0x1b6
252#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD2_OFFSET 0x1b8
253#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD3_OFFSET 0x1ba
254#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD4_OFFSET 0x1bc
255#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD5_OFFSET 0x1be
256#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD6_OFFSET 0x1c0
257#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD7_OFFSET 0x1c2
258#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD8_OFFSET 0x1c4
259#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD9_OFFSET 0x1c6
260#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD10_OFFSET 0x1c8
261#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD11_OFFSET 0x1ca
262#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD12_OFFSET 0x1cc
263#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD13_OFFSET 0x1ce
264#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD14_OFFSET 0x1d0
265#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD15_OFFSET 0x1d2
266#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD16_OFFSET 0x1d4
267#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD17_OFFSET 0x1d6
268#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD18_OFFSET 0x1d8
269#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD19_OFFSET 0x1da
270#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD20_OFFSET 0x1dc
271#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD21_OFFSET 0x1de
272#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD22_OFFSET 0x1e0
273#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD23_OFFSET 0x1e2
274#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD24_OFFSET 0x1e4
275#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD25_OFFSET 0x1e6
276#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD26_OFFSET 0x1e8
277#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD27_OFFSET 0x1ea
278#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD28_OFFSET 0x1ec
279#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD29_OFFSET 0x1ee
280#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD30_OFFSET 0x1f0
281#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD31_OFFSET 0x1f2
282#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD32_OFFSET 0x1f4
283#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD33_OFFSET 0x1f6
284#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD34_OFFSET 0x1f8
285#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD35_OFFSET 0x1fa
286#define OMAP3_CONTROL_PADCONF_SAD2D_MCAD36_OFFSET 0x1fc
287
288/* Note that 34xx TRM has SAD2D instead of CHASSIS for these */
289#define OMAP3_CONTROL_PADCONF_CHASSIS_CLK26MI_OFFSET 0x1fe
290#define OMAP3_CONTROL_PADCONF_CHASSIS_NRESPWRON_OFFSET 0x200
291#define OMAP3_CONTROL_PADCONF_CHASSIS_NRESWARW_OFFSET 0x202
292#define OMAP3_CONTROL_PADCONF_CHASSIS_NIRQ_OFFSET 0x204
293#define OMAP3_CONTROL_PADCONF_CHASSIS_FIQ_OFFSET 0x206
294#define OMAP3_CONTROL_PADCONF_CHASSIS_ARMIRQ_OFFSET 0x208
295#define OMAP3_CONTROL_PADCONF_CHASSIS_IVAIRQ_OFFSET 0x20a
296#define OMAP3_CONTROL_PADCONF_CHASSIS_DMAREQ0_OFFSET 0x20c
297#define OMAP3_CONTROL_PADCONF_CHASSIS_DMAREQ1_OFFSET 0x20e
298#define OMAP3_CONTROL_PADCONF_CHASSIS_DMAREQ2_OFFSET 0x210
299#define OMAP3_CONTROL_PADCONF_CHASSIS_DMAREQ3_OFFSET 0x212
300#define OMAP3_CONTROL_PADCONF_CHASSIS_NTRST_OFFSET 0x214
301#define OMAP3_CONTROL_PADCONF_CHASSIS_TDI_OFFSET 0x216
302#define OMAP3_CONTROL_PADCONF_CHASSIS_TDO_OFFSET 0x218
303#define OMAP3_CONTROL_PADCONF_CHASSIS_TMS_OFFSET 0x21a
304#define OMAP3_CONTROL_PADCONF_CHASSIS_TCK_OFFSET 0x21c
305#define OMAP3_CONTROL_PADCONF_CHASSIS_RTCK_OFFSET 0x21e
306#define OMAP3_CONTROL_PADCONF_CHASSIS_MSTDBY_OFFSET 0x220
307#define OMAP3_CONTROL_PADCONF_CHASSIS_IDLEREQ_OFFSET 0x222
308#define OMAP3_CONTROL_PADCONF_CHASSIS_IDLEACK_OFFSET 0x224
309
310#define OMAP3_CONTROL_PADCONF_SAD2D_MWRITE_OFFSET 0x226
311#define OMAP3_CONTROL_PADCONF_SAD2D_SWRITE_OFFSET 0x228
312#define OMAP3_CONTROL_PADCONF_SAD2D_MREAD_OFFSET 0x22a
313#define OMAP3_CONTROL_PADCONF_SAD2D_SREAD_OFFSET 0x22c
314#define OMAP3_CONTROL_PADCONF_SAD2D_MBUSFLAG_OFFSET 0x22e
315#define OMAP3_CONTROL_PADCONF_SAD2D_SBUSFLAG_OFFSET 0x230
316#define OMAP3_CONTROL_PADCONF_SDRC_CKE0_OFFSET 0x232
317#define OMAP3_CONTROL_PADCONF_SDRC_CKE1_OFFSET 0x234
318
319/* 36xx only */
320#define OMAP3_CONTROL_PADCONF_GPMC_A11_OFFSET 0x236
321#define OMAP3_CONTROL_PADCONF_SDRC_BA0_OFFSET 0x570
322#define OMAP3_CONTROL_PADCONF_SDRC_BA1_OFFSET 0x572
323#define OMAP3_CONTROL_PADCONF_SDRC_A0_OFFSET 0x574
324#define OMAP3_CONTROL_PADCONF_SDRC_A1_OFFSET 0x576
325#define OMAP3_CONTROL_PADCONF_SDRC_A2_OFFSET 0x578
326#define OMAP3_CONTROL_PADCONF_SDRC_A3_OFFSET 0x57a
327#define OMAP3_CONTROL_PADCONF_SDRC_A4_OFFSET 0x57c
328#define OMAP3_CONTROL_PADCONF_SDRC_A5_OFFSET 0x57e
329#define OMAP3_CONTROL_PADCONF_SDRC_A6_OFFSET 0x580
330#define OMAP3_CONTROL_PADCONF_SDRC_A7_OFFSET 0x582
331#define OMAP3_CONTROL_PADCONF_SDRC_A8_OFFSET 0x584
332#define OMAP3_CONTROL_PADCONF_SDRC_A9_OFFSET 0x586
333#define OMAP3_CONTROL_PADCONF_SDRC_A10_OFFSET 0x588
334#define OMAP3_CONTROL_PADCONF_SDRC_A11_OFFSET 0x58a
335#define OMAP3_CONTROL_PADCONF_SDRC_A12_OFFSET 0x58c
336#define OMAP3_CONTROL_PADCONF_SDRC_A13_OFFSET 0x58e
337#define OMAP3_CONTROL_PADCONF_SDRC_A14_OFFSET 0x590
338#define OMAP3_CONTROL_PADCONF_SDRC_NCS0_OFFSET 0x592
339#define OMAP3_CONTROL_PADCONF_SDRC_NCS1_OFFSET 0x594
340#define OMAP3_CONTROL_PADCONF_SDRC_NCLK_OFFSET 0x596
341#define OMAP3_CONTROL_PADCONF_SDRC_NRAS_OFFSET 0x598
342#define OMAP3_CONTROL_PADCONF_SDRC_NCAS_OFFSET 0x59a
343#define OMAP3_CONTROL_PADCONF_SDRC_NWE_OFFSET 0x59c
344#define OMAP3_CONTROL_PADCONF_SDRC_DM0_OFFSET 0x59e
345#define OMAP3_CONTROL_PADCONF_SDRC_DM1_OFFSET 0x5a0
346#define OMAP3_CONTROL_PADCONF_SDRC_DM2_OFFSET 0x5a2
347#define OMAP3_CONTROL_PADCONF_SDRC_DM3_OFFSET 0x5a4
348
349/* 36xx only, these are SDMMC1_DAT4 - DAT7 on 34xx */
350#define OMAP3_CONTROL_PADCONF_SIM_IO_OFFSET 0x120
351#define OMAP3_CONTROL_PADCONF_SIM_CLK_OFFSET 0x122
352#define OMAP3_CONTROL_PADCONF_SIM_PWRCTRL_OFFSET 0x124
353#define OMAP3_CONTROL_PADCONF_SIM_RST_OFFSET 0x126
354
355#define OMAP3_CONTROL_PADCONF_ETK_CLK_OFFSET 0x5a8
356#define OMAP3_CONTROL_PADCONF_ETK_CTL_OFFSET 0x5aa
357#define OMAP3_CONTROL_PADCONF_ETK_D0_OFFSET 0x5ac
358#define OMAP3_CONTROL_PADCONF_ETK_D1_OFFSET 0x5ae
359#define OMAP3_CONTROL_PADCONF_ETK_D2_OFFSET 0x5b0
360#define OMAP3_CONTROL_PADCONF_ETK_D3_OFFSET 0x5b2
361#define OMAP3_CONTROL_PADCONF_ETK_D4_OFFSET 0x5b4
362#define OMAP3_CONTROL_PADCONF_ETK_D5_OFFSET 0x5b6
363#define OMAP3_CONTROL_PADCONF_ETK_D6_OFFSET 0x5b8
364#define OMAP3_CONTROL_PADCONF_ETK_D7_OFFSET 0x5ba
365#define OMAP3_CONTROL_PADCONF_ETK_D8_OFFSET 0x5bc
366#define OMAP3_CONTROL_PADCONF_ETK_D9_OFFSET 0x5be
367#define OMAP3_CONTROL_PADCONF_ETK_D10_OFFSET 0x5c0
368#define OMAP3_CONTROL_PADCONF_ETK_D11_OFFSET 0x5c2
369#define OMAP3_CONTROL_PADCONF_ETK_D12_OFFSET 0x5c4
370#define OMAP3_CONTROL_PADCONF_ETK_D13_OFFSET 0x5c6
371#define OMAP3_CONTROL_PADCONF_ETK_D14_OFFSET 0x5c8
372#define OMAP3_CONTROL_PADCONF_ETK_D15_OFFSET 0x5ca
373#define OMAP3_CONTROL_PADCONF_I2C4_SCL_OFFSET 0x9d0
374#define OMAP3_CONTROL_PADCONF_I2C4_SDA_OFFSET 0x9d2
375#define OMAP3_CONTROL_PADCONF_SYS_32K_OFFSET 0x9d4
376#define OMAP3_CONTROL_PADCONF_SYS_CLKREQ_OFFSET 0x9d6
377#define OMAP3_CONTROL_PADCONF_SYS_NRESWARM_OFFSET 0x9d8
378#define OMAP3_CONTROL_PADCONF_SYS_BOOT0_OFFSET 0x9da
379#define OMAP3_CONTROL_PADCONF_SYS_BOOT1_OFFSET 0x9dc
380#define OMAP3_CONTROL_PADCONF_SYS_BOOT2_OFFSET 0x9de
381#define OMAP3_CONTROL_PADCONF_SYS_BOOT3_OFFSET 0x9e0
382#define OMAP3_CONTROL_PADCONF_SYS_BOOT4_OFFSET 0x9e2
383#define OMAP3_CONTROL_PADCONF_SYS_BOOT5_OFFSET 0x9e4
384#define OMAP3_CONTROL_PADCONF_SYS_BOOT6_OFFSET 0x9e6
385#define OMAP3_CONTROL_PADCONF_SYS_OFF_MODE_OFFSET 0x9e8
386#define OMAP3_CONTROL_PADCONF_SYS_CLKOUT1_OFFSET 0x9ea
387#define OMAP3_CONTROL_PADCONF_JTAG_NTRST_OFFSET 0x9ec
388#define OMAP3_CONTROL_PADCONF_JTAG_TCK_OFFSET 0x9ee
389#define OMAP3_CONTROL_PADCONF_JTAG_TMS_TMSC_OFFSET 0x9f0
390#define OMAP3_CONTROL_PADCONF_JTAG_TDI_OFFSET 0x9f2
391#define OMAP3_CONTROL_PADCONF_JTAG_EMU0_OFFSET 0x9f4
392#define OMAP3_CONTROL_PADCONF_JTAG_EMU1_OFFSET 0x9f6
393#define OMAP3_CONTROL_PADCONF_SAD2D_SWAKEUP_OFFSET 0xa1c
394#define OMAP3_CONTROL_PADCONF_JTAG_RTCK_OFFSET 0xa1e
395#define OMAP3_CONTROL_PADCONF_JTAG_TDO_OFFSET 0xa20
396
397#define OMAP3_CONTROL_PADCONF_MUX_SIZE \
398 (OMAP3_CONTROL_PADCONF_JTAG_TDO_OFFSET + 0x2)
diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S
index 4afadba09477..aa3f65c2ac97 100644
--- a/arch/arm/mach-omap2/omap-headsmp.S
+++ b/arch/arm/mach-omap2/omap-headsmp.S
@@ -27,20 +27,39 @@
27 * OMAP4 specific entry point for secondary CPU to jump from ROM 27 * OMAP4 specific entry point for secondary CPU to jump from ROM
28 * code. This routine also provides a holding flag into which 28 * code. This routine also provides a holding flag into which
29 * secondary core is held until we're ready for it to initialise. 29 * secondary core is held until we're ready for it to initialise.
30 * The primary core will update the this flag using a hardware 30 * The primary core will update this flag using a hardware
31 * register AuxCoreBoot1. 31 * register AuxCoreBoot0.
32 */ 32 */
33ENTRY(omap_secondary_startup) 33ENTRY(omap_secondary_startup)
34 mrc p15, 0, r0, c0, c0, 5 34hold: ldr r12,=0x103
35 and r0, r0, #0x0f 35 dsb
36hold: ldr r1, =OMAP4_AUX_CORE_BOOT1_PA @ read from AuxCoreBoot1 36 smc @ read from AuxCoreBoot0
37 ldr r2, [r1] 37 mov r0, r0, lsr #9
38 cmp r2, r0 38 mrc p15, 0, r4, c0, c0, 5
39 and r4, r4, #0x0f
40 cmp r0, r4
39 bne hold 41 bne hold
40 42
41 /* 43 /*
42 * we've been released from the cpu_release,secondary_stack 44 * we've been released from the wait loop,secondary_stack
43 * should now contain the SVC stack for this core 45 * should now contain the SVC stack for this core
44 */ 46 */
45 b secondary_startup 47 b secondary_startup
48END(omap_secondary_startup)
46 49
50
51ENTRY(omap_modify_auxcoreboot0)
52 stmfd sp!, {r1-r12, lr}
53 ldr r12, =0x104
54 dsb
55 smc
56 ldmfd sp!, {r1-r12, pc}
57END(omap_modify_auxcoreboot0)
58
59ENTRY(omap_auxcoreboot_addr)
60 stmfd sp!, {r2-r12, lr}
61 ldr r12, =0x105
62 dsb
63 smc
64 ldmfd sp!, {r2-r12, pc}
65END(omap_auxcoreboot_addr)
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
index 4890bcf4dadd..38153e5fbca0 100644
--- a/arch/arm/mach-omap2/omap-smp.c
+++ b/arch/arm/mach-omap2/omap-smp.c
@@ -17,19 +17,15 @@
17 */ 17 */
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/device.h> 19#include <linux/device.h>
20#include <linux/jiffies.h>
21#include <linux/smp.h> 20#include <linux/smp.h>
22#include <linux/io.h> 21#include <linux/io.h>
23 22
23#include <asm/cacheflush.h>
24#include <asm/localtimer.h> 24#include <asm/localtimer.h>
25#include <asm/smp_scu.h> 25#include <asm/smp_scu.h>
26#include <mach/hardware.h> 26#include <mach/hardware.h>
27#include <plat/common.h> 27#include <plat/common.h>
28 28
29/* Registers used for communicating startup information */
30static void __iomem *omap4_auxcoreboot_reg0;
31static void __iomem *omap4_auxcoreboot_reg1;
32
33/* SCU base address */ 29/* SCU base address */
34static void __iomem *scu_base; 30static void __iomem *scu_base;
35 31
@@ -65,8 +61,6 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
65 61
66int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) 62int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
67{ 63{
68 unsigned long timeout;
69
70 /* 64 /*
71 * Set synchronisation state between this boot processor 65 * Set synchronisation state between this boot processor
72 * and the secondary one 66 * and the secondary one
@@ -74,18 +68,15 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
74 spin_lock(&boot_lock); 68 spin_lock(&boot_lock);
75 69
76 /* 70 /*
77 * Update the AuxCoreBoot1 with boot state for secondary core. 71 * Update the AuxCoreBoot0 with boot state for secondary core.
78 * omap_secondary_startup() routine will hold the secondary core till 72 * omap_secondary_startup() routine will hold the secondary core till
79 * the AuxCoreBoot1 register is updated with cpu state 73 * the AuxCoreBoot1 register is updated with cpu state
80 * A barrier is added to ensure that write buffer is drained 74 * A barrier is added to ensure that write buffer is drained
81 */ 75 */
82 __raw_writel(cpu, omap4_auxcoreboot_reg1); 76 omap_modify_auxcoreboot0(0x200, 0x0);
77 flush_cache_all();
83 smp_wmb(); 78 smp_wmb();
84 79
85 timeout = jiffies + (1 * HZ);
86 while (time_before(jiffies, timeout))
87 ;
88
89 /* 80 /*
90 * Now the secondary core is starting up let it run its 81 * Now the secondary core is starting up let it run its
91 * calibrations, then wait for it to finish 82 * calibrations, then wait for it to finish
@@ -99,17 +90,18 @@ static void __init wakeup_secondary(void)
99{ 90{
100 /* 91 /*
101 * Write the address of secondary startup routine into the 92 * Write the address of secondary startup routine into the
102 * AuxCoreBoot0 where ROM code will jump and start executing 93 * AuxCoreBoot1 where ROM code will jump and start executing
103 * on secondary core once out of WFE 94 * on secondary core once out of WFE
104 * A barrier is added to ensure that write buffer is drained 95 * A barrier is added to ensure that write buffer is drained
105 */ 96 */
106 __raw_writel(virt_to_phys(omap_secondary_startup), \ 97 omap_auxcoreboot_addr(virt_to_phys(omap_secondary_startup));
107 omap4_auxcoreboot_reg0);
108 smp_wmb(); 98 smp_wmb();
109 99
110 /* 100 /*
111 * Send a 'sev' to wake the secondary core from WFE. 101 * Send a 'sev' to wake the secondary core from WFE.
102 * Drain the outstanding writes to memory
112 */ 103 */
104 dsb();
113 set_event(); 105 set_event();
114 mb(); 106 mb();
115} 107}
@@ -136,7 +128,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
136{ 128{
137 unsigned int ncores = get_core_count(); 129 unsigned int ncores = get_core_count();
138 unsigned int cpu = smp_processor_id(); 130 unsigned int cpu = smp_processor_id();
139 void __iomem *omap4_wkupgen_base;
140 int i; 131 int i;
141 132
142 /* sanity check */ 133 /* sanity check */
@@ -168,12 +159,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
168 for (i = 0; i < max_cpus; i++) 159 for (i = 0; i < max_cpus; i++)
169 set_cpu_present(i, true); 160 set_cpu_present(i, true);
170 161
171 /* Never released */
172 omap4_wkupgen_base = ioremap(OMAP44XX_WKUPGEN_BASE, SZ_4K);
173 BUG_ON(!omap4_wkupgen_base);
174 omap4_auxcoreboot_reg0 = omap4_wkupgen_base + 0x800;
175 omap4_auxcoreboot_reg1 = omap4_wkupgen_base + 0x804;
176
177 if (max_cpus > 1) { 162 if (max_cpus > 1) {
178 /* 163 /*
179 * Enable the local timer or broadcast device for the 164 * Enable the local timer or broadcast device for the
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 2e17b57f5b23..39b797bc14d6 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -33,6 +33,7 @@
33#include "pm.h" 33#include "pm.h"
34#include "prm-regbits-34xx.h" 34#include "prm-regbits-34xx.h"
35 35
36#define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV 0x52
36#define UART_OMAP_WER 0x17 /* Wake-up enable register */ 37#define UART_OMAP_WER 0x17 /* Wake-up enable register */
37 38
38#define DEFAULT_TIMEOUT (5 * HZ) 39#define DEFAULT_TIMEOUT (5 * HZ)
@@ -572,6 +573,23 @@ static struct omap_uart_state omap_uart[] = {
572#endif 573#endif
573}; 574};
574 575
576/*
577 * Override the default 8250 read handler: mem_serial_in()
578 * Empty RX fifo read causes an abort on omap3630 and omap4
579 * This function makes sure that an empty rx fifo is not read on these silicons
580 * (OMAP1/2/3430 are not affected)
581 */
582static unsigned int serial_in_override(struct uart_port *up, int offset)
583{
584 if (UART_RX == offset) {
585 unsigned int lsr;
586 lsr = serial_read_reg(omap_uart[up->line].p, UART_LSR);
587 if (!(lsr & UART_LSR_DR))
588 return -EPERM;
589 }
590 return serial_read_reg(omap_uart[up->line].p, offset);
591}
592
575void __init omap_serial_early_init(void) 593void __init omap_serial_early_init(void)
576{ 594{
577 int i; 595 int i;
@@ -631,24 +649,64 @@ void __init omap_serial_early_init(void)
631 } 649 }
632} 650}
633 651
634void __init omap_serial_init(void) 652/**
653 * omap_serial_init_port() - initialize single serial port
654 * @port: serial port number (0-3)
655 *
656 * This function initialies serial driver for given @port only.
657 * Platforms can call this function instead of omap_serial_init()
658 * if they don't plan to use all available UARTs as serial ports.
659 *
660 * Don't mix calls to omap_serial_init_port() and omap_serial_init(),
661 * use only one of the two.
662 */
663void __init omap_serial_init_port(int port)
635{ 664{
636 int i; 665 struct omap_uart_state *uart;
666 struct platform_device *pdev;
667 struct device *dev;
637 668
638 for (i = 0; i < ARRAY_SIZE(omap_uart); i++) { 669 BUG_ON(port < 0);
639 struct omap_uart_state *uart = &omap_uart[i]; 670 BUG_ON(port >= ARRAY_SIZE(omap_uart));
640 struct platform_device *pdev = &uart->pdev;
641 struct device *dev = &pdev->dev;
642 671
643 omap_uart_reset(uart); 672 uart = &omap_uart[port];
644 omap_uart_idle_init(uart); 673 pdev = &uart->pdev;
674 dev = &pdev->dev;
645 675
646 if (WARN_ON(platform_device_register(pdev))) 676 omap_uart_reset(uart);
647 continue; 677 omap_uart_idle_init(uart);
648 if ((cpu_is_omap34xx() && uart->padconf) || 678
649 (uart->wk_en && uart->wk_mask)) { 679 if (WARN_ON(platform_device_register(pdev)))
650 device_init_wakeup(dev, true); 680 return;
651 DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout); 681
652 } 682 if ((cpu_is_omap34xx() && uart->padconf) ||
683 (uart->wk_en && uart->wk_mask)) {
684 device_init_wakeup(dev, true);
685 DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout);
653 } 686 }
687
688 /* omap44xx: Never read empty UART fifo
689 * omap3xxx: Never read empty UART fifo on UARTs
690 * with IP rev >=0x52
691 */
692 if (cpu_is_omap44xx())
693 uart->p->serial_in = serial_in_override;
694 else if ((serial_read_reg(uart->p, UART_OMAP_MVER) & 0xFF)
695 >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)
696 uart->p->serial_in = serial_in_override;
697}
698
699/**
700 * omap_serial_init() - intialize all supported serial ports
701 *
702 * Initializes all available UARTs as serial ports. Platforms
703 * can call this function when they want to have default behaviour
704 * for serial ports (e.g initialize them all as serial ports).
705 */
706void __init omap_serial_init(void)
707{
708 int i;
709
710 for (i = 0; i < ARRAY_SIZE(omap_uart); i++)
711 omap_serial_init_port(i);
654} 712}
diff --git a/arch/arm/mach-omap2/usb-ehci.c b/arch/arm/mach-omap2/usb-ehci.c
index e448abd5ec5d..f1df873d59db 100644
--- a/arch/arm/mach-omap2/usb-ehci.c
+++ b/arch/arm/mach-omap2/usb-ehci.c
@@ -27,6 +27,8 @@
27#include <mach/irqs.h> 27#include <mach/irqs.h>
28#include <plat/usb.h> 28#include <plat/usb.h>
29 29
30#include "mux.h"
31
30#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE) 32#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE)
31 33
32static struct resource ehci_resources[] = { 34static struct resource ehci_resources[] = {
@@ -72,32 +74,44 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode)
72{ 74{
73 switch (port_mode[0]) { 75 switch (port_mode[0]) {
74 case EHCI_HCD_OMAP_MODE_PHY: 76 case EHCI_HCD_OMAP_MODE_PHY:
75 omap_cfg_reg(Y9_3430_USB1HS_PHY_STP); 77 omap_mux_init_signal("hsusb1_stp", OMAP_PIN_OUTPUT);
76 omap_cfg_reg(Y8_3430_USB1HS_PHY_CLK); 78 omap_mux_init_signal("hsusb1_clk", OMAP_PIN_OUTPUT);
77 omap_cfg_reg(AA14_3430_USB1HS_PHY_DIR); 79 omap_mux_init_signal("hsusb1_dir", OMAP_PIN_INPUT_PULLDOWN);
78 omap_cfg_reg(AA11_3430_USB1HS_PHY_NXT); 80 omap_mux_init_signal("hsusb1_nxt", OMAP_PIN_INPUT_PULLDOWN);
79 omap_cfg_reg(W13_3430_USB1HS_PHY_DATA0); 81 omap_mux_init_signal("hsusb1_data0", OMAP_PIN_INPUT_PULLDOWN);
80 omap_cfg_reg(W12_3430_USB1HS_PHY_DATA1); 82 omap_mux_init_signal("hsusb1_data1", OMAP_PIN_INPUT_PULLDOWN);
81 omap_cfg_reg(W11_3430_USB1HS_PHY_DATA2); 83 omap_mux_init_signal("hsusb1_data2", OMAP_PIN_INPUT_PULLDOWN);
82 omap_cfg_reg(Y11_3430_USB1HS_PHY_DATA3); 84 omap_mux_init_signal("hsusb1_data3", OMAP_PIN_INPUT_PULLDOWN);
83 omap_cfg_reg(W9_3430_USB1HS_PHY_DATA4); 85 omap_mux_init_signal("hsusb1_data4", OMAP_PIN_INPUT_PULLDOWN);
84 omap_cfg_reg(Y12_3430_USB1HS_PHY_DATA5); 86 omap_mux_init_signal("hsusb1_data5", OMAP_PIN_INPUT_PULLDOWN);
85 omap_cfg_reg(W8_3430_USB1HS_PHY_DATA6); 87 omap_mux_init_signal("hsusb1_data6", OMAP_PIN_INPUT_PULLDOWN);
86 omap_cfg_reg(Y13_3430_USB1HS_PHY_DATA7); 88 omap_mux_init_signal("hsusb1_data7", OMAP_PIN_INPUT_PULLDOWN);
87 break; 89 break;
88 case EHCI_HCD_OMAP_MODE_TLL: 90 case EHCI_HCD_OMAP_MODE_TLL:
89 omap_cfg_reg(Y9_3430_USB1HS_TLL_STP); 91 omap_mux_init_signal("hsusb1_tll_stp",
90 omap_cfg_reg(Y8_3430_USB1HS_TLL_CLK); 92 OMAP_PIN_INPUT_PULLUP);
91 omap_cfg_reg(AA14_3430_USB1HS_TLL_DIR); 93 omap_mux_init_signal("hsusb1_tll_clk",
92 omap_cfg_reg(AA11_3430_USB1HS_TLL_NXT); 94 OMAP_PIN_INPUT_PULLDOWN);
93 omap_cfg_reg(W13_3430_USB1HS_TLL_DATA0); 95 omap_mux_init_signal("hsusb1_tll_dir",
94 omap_cfg_reg(W12_3430_USB1HS_TLL_DATA1); 96 OMAP_PIN_INPUT_PULLDOWN);
95 omap_cfg_reg(W11_3430_USB1HS_TLL_DATA2); 97 omap_mux_init_signal("hsusb1_tll_nxt",
96 omap_cfg_reg(Y11_3430_USB1HS_TLL_DATA3); 98 OMAP_PIN_INPUT_PULLDOWN);
97 omap_cfg_reg(W9_3430_USB1HS_TLL_DATA4); 99 omap_mux_init_signal("hsusb1_tll_data0",
98 omap_cfg_reg(Y12_3430_USB1HS_TLL_DATA5); 100 OMAP_PIN_INPUT_PULLDOWN);
99 omap_cfg_reg(W8_3430_USB1HS_TLL_DATA6); 101 omap_mux_init_signal("hsusb1_tll_data1",
100 omap_cfg_reg(Y13_3430_USB1HS_TLL_DATA7); 102 OMAP_PIN_INPUT_PULLDOWN);
103 omap_mux_init_signal("hsusb1_tll_data2",
104 OMAP_PIN_INPUT_PULLDOWN);
105 omap_mux_init_signal("hsusb1_tll_data3",
106 OMAP_PIN_INPUT_PULLDOWN);
107 omap_mux_init_signal("hsusb1_tll_data4",
108 OMAP_PIN_INPUT_PULLDOWN);
109 omap_mux_init_signal("hsusb1_tll_data5",
110 OMAP_PIN_INPUT_PULLDOWN);
111 omap_mux_init_signal("hsusb1_tll_data6",
112 OMAP_PIN_INPUT_PULLDOWN);
113 omap_mux_init_signal("hsusb1_tll_data7",
114 OMAP_PIN_INPUT_PULLDOWN);
101 break; 115 break;
102 case EHCI_HCD_OMAP_MODE_UNKNOWN: 116 case EHCI_HCD_OMAP_MODE_UNKNOWN:
103 /* FALLTHROUGH */ 117 /* FALLTHROUGH */
@@ -107,32 +121,52 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode)
107 121
108 switch (port_mode[1]) { 122 switch (port_mode[1]) {
109 case EHCI_HCD_OMAP_MODE_PHY: 123 case EHCI_HCD_OMAP_MODE_PHY:
110 omap_cfg_reg(AA10_3430_USB2HS_PHY_STP); 124 omap_mux_init_signal("hsusb2_stp", OMAP_PIN_OUTPUT);
111 omap_cfg_reg(AA8_3430_USB2HS_PHY_CLK); 125 omap_mux_init_signal("hsusb2_clk", OMAP_PIN_OUTPUT);
112 omap_cfg_reg(AA9_3430_USB2HS_PHY_DIR); 126 omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT_PULLDOWN);
113 omap_cfg_reg(AB11_3430_USB2HS_PHY_NXT); 127 omap_mux_init_signal("hsusb2_nxt", OMAP_PIN_INPUT_PULLDOWN);
114 omap_cfg_reg(AB10_3430_USB2HS_PHY_DATA0); 128 omap_mux_init_signal("hsusb2_data0",
115 omap_cfg_reg(AB9_3430_USB2HS_PHY_DATA1); 129 OMAP_PIN_INPUT_PULLDOWN);
116 omap_cfg_reg(W3_3430_USB2HS_PHY_DATA2); 130 omap_mux_init_signal("hsusb2_data1",
117 omap_cfg_reg(T4_3430_USB2HS_PHY_DATA3); 131 OMAP_PIN_INPUT_PULLDOWN);
118 omap_cfg_reg(T3_3430_USB2HS_PHY_DATA4); 132 omap_mux_init_signal("hsusb2_data2",
119 omap_cfg_reg(R3_3430_USB2HS_PHY_DATA5); 133 OMAP_PIN_INPUT_PULLDOWN);
120 omap_cfg_reg(R4_3430_USB2HS_PHY_DATA6); 134 omap_mux_init_signal("hsusb2_data3",
121 omap_cfg_reg(T2_3430_USB2HS_PHY_DATA7); 135 OMAP_PIN_INPUT_PULLDOWN);
136 omap_mux_init_signal("hsusb2_data4",
137 OMAP_PIN_INPUT_PULLDOWN);
138 omap_mux_init_signal("hsusb2_data5",
139 OMAP_PIN_INPUT_PULLDOWN);
140 omap_mux_init_signal("hsusb2_data6",
141 OMAP_PIN_INPUT_PULLDOWN);
142 omap_mux_init_signal("hsusb2_data7",
143 OMAP_PIN_INPUT_PULLDOWN);
122 break; 144 break;
123 case EHCI_HCD_OMAP_MODE_TLL: 145 case EHCI_HCD_OMAP_MODE_TLL:
124 omap_cfg_reg(AA10_3430_USB2HS_TLL_STP); 146 omap_mux_init_signal("hsusb2_tll_stp",
125 omap_cfg_reg(AA8_3430_USB2HS_TLL_CLK); 147 OMAP_PIN_INPUT_PULLUP);
126 omap_cfg_reg(AA9_3430_USB2HS_TLL_DIR); 148 omap_mux_init_signal("hsusb2_tll_clk",
127 omap_cfg_reg(AB11_3430_USB2HS_TLL_NXT); 149 OMAP_PIN_INPUT_PULLDOWN);
128 omap_cfg_reg(AB10_3430_USB2HS_TLL_DATA0); 150 omap_mux_init_signal("hsusb2_tll_dir",
129 omap_cfg_reg(AB9_3430_USB2HS_TLL_DATA1); 151 OMAP_PIN_INPUT_PULLDOWN);
130 omap_cfg_reg(W3_3430_USB2HS_TLL_DATA2); 152 omap_mux_init_signal("hsusb2_tll_nxt",
131 omap_cfg_reg(T4_3430_USB2HS_TLL_DATA3); 153 OMAP_PIN_INPUT_PULLDOWN);
132 omap_cfg_reg(T3_3430_USB2HS_TLL_DATA4); 154 omap_mux_init_signal("hsusb2_tll_data0",
133 omap_cfg_reg(R3_3430_USB2HS_TLL_DATA5); 155 OMAP_PIN_INPUT_PULLDOWN);
134 omap_cfg_reg(R4_3430_USB2HS_TLL_DATA6); 156 omap_mux_init_signal("hsusb2_tll_data1",
135 omap_cfg_reg(T2_3430_USB2HS_TLL_DATA7); 157 OMAP_PIN_INPUT_PULLDOWN);
158 omap_mux_init_signal("hsusb2_tll_data2",
159 OMAP_PIN_INPUT_PULLDOWN);
160 omap_mux_init_signal("hsusb2_tll_data3",
161 OMAP_PIN_INPUT_PULLDOWN);
162 omap_mux_init_signal("hsusb2_tll_data4",
163 OMAP_PIN_INPUT_PULLDOWN);
164 omap_mux_init_signal("hsusb2_tll_data5",
165 OMAP_PIN_INPUT_PULLDOWN);
166 omap_mux_init_signal("hsusb2_tll_data6",
167 OMAP_PIN_INPUT_PULLDOWN);
168 omap_mux_init_signal("hsusb2_tll_data7",
169 OMAP_PIN_INPUT_PULLDOWN);
136 break; 170 break;
137 case EHCI_HCD_OMAP_MODE_UNKNOWN: 171 case EHCI_HCD_OMAP_MODE_UNKNOWN:
138 /* FALLTHROUGH */ 172 /* FALLTHROUGH */
@@ -145,18 +179,30 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode)
145 printk(KERN_WARNING "Port3 can't be used in PHY mode\n"); 179 printk(KERN_WARNING "Port3 can't be used in PHY mode\n");
146 break; 180 break;
147 case EHCI_HCD_OMAP_MODE_TLL: 181 case EHCI_HCD_OMAP_MODE_TLL:
148 omap_cfg_reg(AB3_3430_USB3HS_TLL_STP); 182 omap_mux_init_signal("hsusb3_tll_stp",
149 omap_cfg_reg(AA6_3430_USB3HS_TLL_CLK); 183 OMAP_PIN_INPUT_PULLUP);
150 omap_cfg_reg(AA3_3430_USB3HS_TLL_DIR); 184 omap_mux_init_signal("hsusb3_tll_clk",
151 omap_cfg_reg(Y3_3430_USB3HS_TLL_NXT); 185 OMAP_PIN_INPUT_PULLDOWN);
152 omap_cfg_reg(AA5_3430_USB3HS_TLL_DATA0); 186 omap_mux_init_signal("hsusb3_tll_dir",
153 omap_cfg_reg(Y4_3430_USB3HS_TLL_DATA1); 187 OMAP_PIN_INPUT_PULLDOWN);
154 omap_cfg_reg(Y5_3430_USB3HS_TLL_DATA2); 188 omap_mux_init_signal("hsusb3_tll_nxt",
155 omap_cfg_reg(W5_3430_USB3HS_TLL_DATA3); 189 OMAP_PIN_INPUT_PULLDOWN);
156 omap_cfg_reg(AB12_3430_USB3HS_TLL_DATA4); 190 omap_mux_init_signal("hsusb3_tll_data0",
157 omap_cfg_reg(AB13_3430_USB3HS_TLL_DATA5); 191 OMAP_PIN_INPUT_PULLDOWN);
158 omap_cfg_reg(AA13_3430_USB3HS_TLL_DATA6); 192 omap_mux_init_signal("hsusb3_tll_data1",
159 omap_cfg_reg(AA12_3430_USB3HS_TLL_DATA7); 193 OMAP_PIN_INPUT_PULLDOWN);
194 omap_mux_init_signal("hsusb3_tll_data2",
195 OMAP_PIN_INPUT_PULLDOWN);
196 omap_mux_init_signal("hsusb3_tll_data3",
197 OMAP_PIN_INPUT_PULLDOWN);
198 omap_mux_init_signal("hsusb3_tll_data4",
199 OMAP_PIN_INPUT_PULLDOWN);
200 omap_mux_init_signal("hsusb3_tll_data5",
201 OMAP_PIN_INPUT_PULLDOWN);
202 omap_mux_init_signal("hsusb3_tll_data6",
203 OMAP_PIN_INPUT_PULLDOWN);
204 omap_mux_init_signal("hsusb3_tll_data7",
205 OMAP_PIN_INPUT_PULLDOWN);
160 break; 206 break;
161 case EHCI_HCD_OMAP_MODE_UNKNOWN: 207 case EHCI_HCD_OMAP_MODE_UNKNOWN:
162 /* FALLTHROUGH */ 208 /* FALLTHROUGH */
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index 01ab1e56db1e..bf1eaf3a27d4 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -280,7 +280,7 @@ void __init omap2_set_globals_343x(void)
280#if defined(CONFIG_ARCH_OMAP4) 280#if defined(CONFIG_ARCH_OMAP4)
281static struct omap_globals omap4_globals = { 281static struct omap_globals omap4_globals = {
282 .class = OMAP443X_CLASS, 282 .class = OMAP443X_CLASS,
283 .tap = OMAP2_L4_IO_ADDRESS(0x4830a000), 283 .tap = OMAP2_L4_IO_ADDRESS(OMAP443X_SCM_BASE),
284 .ctrl = OMAP2_L4_IO_ADDRESS(OMAP443X_CTRL_BASE), 284 .ctrl = OMAP2_L4_IO_ADDRESS(OMAP443X_CTRL_BASE),
285 .prm = OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE), 285 .prm = OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE),
286 .cm = OMAP2_L4_IO_ADDRESS(OMAP4430_CM_BASE), 286 .cm = OMAP2_L4_IO_ADDRESS(OMAP4430_CM_BASE),
diff --git a/arch/arm/plat-omap/debug-devices.c b/arch/arm/plat-omap/debug-devices.c
index 09c1107637f6..923c9621096b 100644
--- a/arch/arm/plat-omap/debug-devices.c
+++ b/arch/arm/plat-omap/debug-devices.c
@@ -13,6 +13,7 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/smc91x.h>
16 17
17#include <mach/hardware.h> 18#include <mach/hardware.h>
18 19
@@ -24,6 +25,12 @@
24 * platforms include H2, H3, H4, and Perseus2. 25 * platforms include H2, H3, H4, and Perseus2.
25 */ 26 */
26 27
28static struct smc91x_platdata smc91x_info = {
29 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
30 .leda = RPC_LED_100_10,
31 .ledb = RPC_LED_TX_RX,
32};
33
27static struct resource smc91x_resources[] = { 34static struct resource smc91x_resources[] = {
28 [0] = { 35 [0] = {
29 .flags = IORESOURCE_MEM, 36 .flags = IORESOURCE_MEM,
@@ -36,6 +43,9 @@ static struct resource smc91x_resources[] = {
36static struct platform_device smc91x_device = { 43static struct platform_device smc91x_device = {
37 .name = "smc91x", 44 .name = "smc91x",
38 .id = -1, 45 .id = -1,
46 .dev = {
47 .platform_data = &smc91x_info,
48 },
39 .num_resources = ARRAY_SIZE(smc91x_resources), 49 .num_resources = ARRAY_SIZE(smc91x_resources),
40 .resource = smc91x_resources, 50 .resource = smc91x_resources,
41}; 51};
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index f86617869b38..30b5db73017a 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -242,6 +242,39 @@ fail:
242 242
243/*-------------------------------------------------------------------------*/ 243/*-------------------------------------------------------------------------*/
244 244
245#if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE)
246
247#ifdef CONFIG_ARCH_OMAP24XX
248#define OMAP_RNG_BASE 0x480A0000
249#else
250#define OMAP_RNG_BASE 0xfffe5000
251#endif
252
253static struct resource rng_resources[] = {
254 {
255 .start = OMAP_RNG_BASE,
256 .end = OMAP_RNG_BASE + 0x4f,
257 .flags = IORESOURCE_MEM,
258 },
259};
260
261static struct platform_device omap_rng_device = {
262 .name = "omap_rng",
263 .id = -1,
264 .num_resources = ARRAY_SIZE(rng_resources),
265 .resource = rng_resources,
266};
267
268static void omap_init_rng(void)
269{
270 (void) platform_device_register(&omap_rng_device);
271}
272#else
273static inline void omap_init_rng(void) {}
274#endif
275
276/*-------------------------------------------------------------------------*/
277
245/* Numbering for the SPI-capable controllers when used for SPI: 278/* Numbering for the SPI-capable controllers when used for SPI:
246 * spi = 1 279 * spi = 1
247 * uwire = 2 280 * uwire = 2
@@ -324,39 +357,6 @@ static void omap_init_wdt(void)
324static inline void omap_init_wdt(void) {} 357static inline void omap_init_wdt(void) {}
325#endif 358#endif
326 359
327/*-------------------------------------------------------------------------*/
328
329#if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE)
330
331#ifdef CONFIG_ARCH_OMAP24XX
332#define OMAP_RNG_BASE 0x480A0000
333#else
334#define OMAP_RNG_BASE 0xfffe5000
335#endif
336
337static struct resource rng_resources[] = {
338 {
339 .start = OMAP_RNG_BASE,
340 .end = OMAP_RNG_BASE + 0x4f,
341 .flags = IORESOURCE_MEM,
342 },
343};
344
345static struct platform_device omap_rng_device = {
346 .name = "omap_rng",
347 .id = -1,
348 .num_resources = ARRAY_SIZE(rng_resources),
349 .resource = rng_resources,
350};
351
352static void omap_init_rng(void)
353{
354 (void) platform_device_register(&omap_rng_device);
355}
356#else
357static inline void omap_init_rng(void) {}
358#endif
359
360/* 360/*
361 * This gets called after board-specific INIT_MACHINE, and initializes most 361 * This gets called after board-specific INIT_MACHINE, and initializes most
362 * on-chip peripherals accessible on this board (except for few like USB): 362 * on-chip peripherals accessible on this board (except for few like USB):
@@ -384,9 +384,9 @@ static int __init omap_init_devices(void)
384 */ 384 */
385 omap_init_dsp(); 385 omap_init_dsp();
386 omap_init_kp(); 386 omap_init_kp();
387 omap_init_rng();
387 omap_init_uwire(); 388 omap_init_uwire();
388 omap_init_wdt(); 389 omap_init_wdt();
389 omap_init_rng();
390 return 0; 390 return 0;
391} 391}
392arch_initcall(omap_init_devices); 392arch_initcall(omap_init_devices);
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index d17375e06a1e..09d82b3c66ce 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -47,7 +47,6 @@ enum { DMA_CHAIN_STARTED, DMA_CHAIN_NOTSTARTED };
47#endif 47#endif
48 48
49#define OMAP_DMA_ACTIVE 0x01 49#define OMAP_DMA_ACTIVE 0x01
50#define OMAP_DMA_CCR_EN (1 << 7)
51#define OMAP2_DMA_CSR_CLEAR_MASK 0xffe 50#define OMAP2_DMA_CSR_CLEAR_MASK 0xffe
52 51
53#define OMAP_FUNC_MUX_ARM_BASE (0xfffe1000 + 0xec) 52#define OMAP_FUNC_MUX_ARM_BASE (0xfffe1000 + 0xec)
@@ -1120,17 +1119,8 @@ int omap_dma_running(void)
1120{ 1119{
1121 int lch; 1120 int lch;
1122 1121
1123 /* 1122 if (cpu_class_is_omap1())
1124 * On OMAP1510, internal LCD controller will start the transfer 1123 if (omap_lcd_dma_running())
1125 * when it gets enabled, so assume DMA running if LCD enabled.
1126 */
1127 if (cpu_is_omap1510())
1128 if (omap_readw(0xfffec000 + 0x00) & (1 << 0))
1129 return 1;
1130
1131 /* Check if LCD DMA is running */
1132 if (cpu_is_omap16xx())
1133 if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)
1134 return 1; 1124 return 1;
1135 1125
1136 for (lch = 0; lch < dma_chan_count; lch++) 1126 for (lch = 0; lch < dma_chan_count; lch++)
@@ -1990,377 +1980,6 @@ static struct irqaction omap24xx_dma_irq;
1990 1980
1991/*----------------------------------------------------------------------------*/ 1981/*----------------------------------------------------------------------------*/
1992 1982
1993static struct lcd_dma_info {
1994 spinlock_t lock;
1995 int reserved;
1996 void (*callback)(u16 status, void *data);
1997 void *cb_data;
1998
1999 int active;
2000 unsigned long addr, size;
2001 int rotate, data_type, xres, yres;
2002 int vxres;
2003 int mirror;
2004 int xscale, yscale;
2005 int ext_ctrl;
2006 int src_port;
2007 int single_transfer;
2008} lcd_dma;
2009
2010void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
2011 int data_type)
2012{
2013 lcd_dma.addr = addr;
2014 lcd_dma.data_type = data_type;
2015 lcd_dma.xres = fb_xres;
2016 lcd_dma.yres = fb_yres;
2017}
2018EXPORT_SYMBOL(omap_set_lcd_dma_b1);
2019
2020void omap_set_lcd_dma_src_port(int port)
2021{
2022 lcd_dma.src_port = port;
2023}
2024
2025void omap_set_lcd_dma_ext_controller(int external)
2026{
2027 lcd_dma.ext_ctrl = external;
2028}
2029EXPORT_SYMBOL(omap_set_lcd_dma_ext_controller);
2030
2031void omap_set_lcd_dma_single_transfer(int single)
2032{
2033 lcd_dma.single_transfer = single;
2034}
2035EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer);
2036
2037void omap_set_lcd_dma_b1_rotation(int rotate)
2038{
2039 if (omap_dma_in_1510_mode()) {
2040 printk(KERN_ERR "DMA rotation is not supported in 1510 mode\n");
2041 BUG();
2042 return;
2043 }
2044 lcd_dma.rotate = rotate;
2045}
2046EXPORT_SYMBOL(omap_set_lcd_dma_b1_rotation);
2047
2048void omap_set_lcd_dma_b1_mirror(int mirror)
2049{
2050 if (omap_dma_in_1510_mode()) {
2051 printk(KERN_ERR "DMA mirror is not supported in 1510 mode\n");
2052 BUG();
2053 }
2054 lcd_dma.mirror = mirror;
2055}
2056EXPORT_SYMBOL(omap_set_lcd_dma_b1_mirror);
2057
2058void omap_set_lcd_dma_b1_vxres(unsigned long vxres)
2059{
2060 if (omap_dma_in_1510_mode()) {
2061 printk(KERN_ERR "DMA virtual resulotion is not supported "
2062 "in 1510 mode\n");
2063 BUG();
2064 }
2065 lcd_dma.vxres = vxres;
2066}
2067EXPORT_SYMBOL(omap_set_lcd_dma_b1_vxres);
2068
2069void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale)
2070{
2071 if (omap_dma_in_1510_mode()) {
2072 printk(KERN_ERR "DMA scale is not supported in 1510 mode\n");
2073 BUG();
2074 }
2075 lcd_dma.xscale = xscale;
2076 lcd_dma.yscale = yscale;
2077}
2078EXPORT_SYMBOL(omap_set_lcd_dma_b1_scale);
2079
2080static void set_b1_regs(void)
2081{
2082 unsigned long top, bottom;
2083 int es;
2084 u16 w;
2085 unsigned long en, fn;
2086 long ei, fi;
2087 unsigned long vxres;
2088 unsigned int xscale, yscale;
2089
2090 switch (lcd_dma.data_type) {
2091 case OMAP_DMA_DATA_TYPE_S8:
2092 es = 1;
2093 break;
2094 case OMAP_DMA_DATA_TYPE_S16:
2095 es = 2;
2096 break;
2097 case OMAP_DMA_DATA_TYPE_S32:
2098 es = 4;
2099 break;
2100 default:
2101 BUG();
2102 return;
2103 }
2104
2105 vxres = lcd_dma.vxres ? lcd_dma.vxres : lcd_dma.xres;
2106 xscale = lcd_dma.xscale ? lcd_dma.xscale : 1;
2107 yscale = lcd_dma.yscale ? lcd_dma.yscale : 1;
2108 BUG_ON(vxres < lcd_dma.xres);
2109
2110#define PIXADDR(x, y) (lcd_dma.addr + \
2111 ((y) * vxres * yscale + (x) * xscale) * es)
2112#define PIXSTEP(sx, sy, dx, dy) (PIXADDR(dx, dy) - PIXADDR(sx, sy) - es + 1)
2113
2114 switch (lcd_dma.rotate) {
2115 case 0:
2116 if (!lcd_dma.mirror) {
2117 top = PIXADDR(0, 0);
2118 bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
2119 /* 1510 DMA requires the bottom address to be 2 more
2120 * than the actual last memory access location. */
2121 if (omap_dma_in_1510_mode() &&
2122 lcd_dma.data_type == OMAP_DMA_DATA_TYPE_S32)
2123 bottom += 2;
2124 ei = PIXSTEP(0, 0, 1, 0);
2125 fi = PIXSTEP(lcd_dma.xres - 1, 0, 0, 1);
2126 } else {
2127 top = PIXADDR(lcd_dma.xres - 1, 0);
2128 bottom = PIXADDR(0, lcd_dma.yres - 1);
2129 ei = PIXSTEP(1, 0, 0, 0);
2130 fi = PIXSTEP(0, 0, lcd_dma.xres - 1, 1);
2131 }
2132 en = lcd_dma.xres;
2133 fn = lcd_dma.yres;
2134 break;
2135 case 90:
2136 if (!lcd_dma.mirror) {
2137 top = PIXADDR(0, lcd_dma.yres - 1);
2138 bottom = PIXADDR(lcd_dma.xres - 1, 0);
2139 ei = PIXSTEP(0, 1, 0, 0);
2140 fi = PIXSTEP(0, 0, 1, lcd_dma.yres - 1);
2141 } else {
2142 top = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
2143 bottom = PIXADDR(0, 0);
2144 ei = PIXSTEP(0, 1, 0, 0);
2145 fi = PIXSTEP(1, 0, 0, lcd_dma.yres - 1);
2146 }
2147 en = lcd_dma.yres;
2148 fn = lcd_dma.xres;
2149 break;
2150 case 180:
2151 if (!lcd_dma.mirror) {
2152 top = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
2153 bottom = PIXADDR(0, 0);
2154 ei = PIXSTEP(1, 0, 0, 0);
2155 fi = PIXSTEP(0, 1, lcd_dma.xres - 1, 0);
2156 } else {
2157 top = PIXADDR(0, lcd_dma.yres - 1);
2158 bottom = PIXADDR(lcd_dma.xres - 1, 0);
2159 ei = PIXSTEP(0, 0, 1, 0);
2160 fi = PIXSTEP(lcd_dma.xres - 1, 1, 0, 0);
2161 }
2162 en = lcd_dma.xres;
2163 fn = lcd_dma.yres;
2164 break;
2165 case 270:
2166 if (!lcd_dma.mirror) {
2167 top = PIXADDR(lcd_dma.xres - 1, 0);
2168 bottom = PIXADDR(0, lcd_dma.yres - 1);
2169 ei = PIXSTEP(0, 0, 0, 1);
2170 fi = PIXSTEP(1, lcd_dma.yres - 1, 0, 0);
2171 } else {
2172 top = PIXADDR(0, 0);
2173 bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
2174 ei = PIXSTEP(0, 0, 0, 1);
2175 fi = PIXSTEP(0, lcd_dma.yres - 1, 1, 0);
2176 }
2177 en = lcd_dma.yres;
2178 fn = lcd_dma.xres;
2179 break;
2180 default:
2181 BUG();
2182 return; /* Suppress warning about uninitialized vars */
2183 }
2184
2185 if (omap_dma_in_1510_mode()) {
2186 omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U);
2187 omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L);
2188 omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U);
2189 omap_writew(bottom, OMAP1510_DMA_LCD_BOT_F1_L);
2190
2191 return;
2192 }
2193
2194 /* 1610 regs */
2195 omap_writew(top >> 16, OMAP1610_DMA_LCD_TOP_B1_U);
2196 omap_writew(top, OMAP1610_DMA_LCD_TOP_B1_L);
2197 omap_writew(bottom >> 16, OMAP1610_DMA_LCD_BOT_B1_U);
2198 omap_writew(bottom, OMAP1610_DMA_LCD_BOT_B1_L);
2199
2200 omap_writew(en, OMAP1610_DMA_LCD_SRC_EN_B1);
2201 omap_writew(fn, OMAP1610_DMA_LCD_SRC_FN_B1);
2202
2203 w = omap_readw(OMAP1610_DMA_LCD_CSDP);
2204 w &= ~0x03;
2205 w |= lcd_dma.data_type;
2206 omap_writew(w, OMAP1610_DMA_LCD_CSDP);
2207
2208 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
2209 /* Always set the source port as SDRAM for now*/
2210 w &= ~(0x03 << 6);
2211 if (lcd_dma.callback != NULL)
2212 w |= 1 << 1; /* Block interrupt enable */
2213 else
2214 w &= ~(1 << 1);
2215 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
2216
2217 if (!(lcd_dma.rotate || lcd_dma.mirror ||
2218 lcd_dma.vxres || lcd_dma.xscale || lcd_dma.yscale))
2219 return;
2220
2221 w = omap_readw(OMAP1610_DMA_LCD_CCR);
2222 /* Set the double-indexed addressing mode */
2223 w |= (0x03 << 12);
2224 omap_writew(w, OMAP1610_DMA_LCD_CCR);
2225
2226 omap_writew(ei, OMAP1610_DMA_LCD_SRC_EI_B1);
2227 omap_writew(fi >> 16, OMAP1610_DMA_LCD_SRC_FI_B1_U);
2228 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L);
2229}
2230
2231static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id)
2232{
2233 u16 w;
2234
2235 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
2236 if (unlikely(!(w & (1 << 3)))) {
2237 printk(KERN_WARNING "Spurious LCD DMA IRQ\n");
2238 return IRQ_NONE;
2239 }
2240 /* Ack the IRQ */
2241 w |= (1 << 3);
2242 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
2243 lcd_dma.active = 0;
2244 if (lcd_dma.callback != NULL)
2245 lcd_dma.callback(w, lcd_dma.cb_data);
2246
2247 return IRQ_HANDLED;
2248}
2249
2250int omap_request_lcd_dma(void (*callback)(u16 status, void *data),
2251 void *data)
2252{
2253 spin_lock_irq(&lcd_dma.lock);
2254 if (lcd_dma.reserved) {
2255 spin_unlock_irq(&lcd_dma.lock);
2256 printk(KERN_ERR "LCD DMA channel already reserved\n");
2257 BUG();
2258 return -EBUSY;
2259 }
2260 lcd_dma.reserved = 1;
2261 spin_unlock_irq(&lcd_dma.lock);
2262 lcd_dma.callback = callback;
2263 lcd_dma.cb_data = data;
2264 lcd_dma.active = 0;
2265 lcd_dma.single_transfer = 0;
2266 lcd_dma.rotate = 0;
2267 lcd_dma.vxres = 0;
2268 lcd_dma.mirror = 0;
2269 lcd_dma.xscale = 0;
2270 lcd_dma.yscale = 0;
2271 lcd_dma.ext_ctrl = 0;
2272 lcd_dma.src_port = 0;
2273
2274 return 0;
2275}
2276EXPORT_SYMBOL(omap_request_lcd_dma);
2277
2278void omap_free_lcd_dma(void)
2279{
2280 spin_lock(&lcd_dma.lock);
2281 if (!lcd_dma.reserved) {
2282 spin_unlock(&lcd_dma.lock);
2283 printk(KERN_ERR "LCD DMA is not reserved\n");
2284 BUG();
2285 return;
2286 }
2287 if (!enable_1510_mode)
2288 omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~1,
2289 OMAP1610_DMA_LCD_CCR);
2290 lcd_dma.reserved = 0;
2291 spin_unlock(&lcd_dma.lock);
2292}
2293EXPORT_SYMBOL(omap_free_lcd_dma);
2294
2295void omap_enable_lcd_dma(void)
2296{
2297 u16 w;
2298
2299 /*
2300 * Set the Enable bit only if an external controller is
2301 * connected. Otherwise the OMAP internal controller will
2302 * start the transfer when it gets enabled.
2303 */
2304 if (enable_1510_mode || !lcd_dma.ext_ctrl)
2305 return;
2306
2307 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
2308 w |= 1 << 8;
2309 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
2310
2311 lcd_dma.active = 1;
2312
2313 w = omap_readw(OMAP1610_DMA_LCD_CCR);
2314 w |= 1 << 7;
2315 omap_writew(w, OMAP1610_DMA_LCD_CCR);
2316}
2317EXPORT_SYMBOL(omap_enable_lcd_dma);
2318
2319void omap_setup_lcd_dma(void)
2320{
2321 BUG_ON(lcd_dma.active);
2322 if (!enable_1510_mode) {
2323 /* Set some reasonable defaults */
2324 omap_writew(0x5440, OMAP1610_DMA_LCD_CCR);
2325 omap_writew(0x9102, OMAP1610_DMA_LCD_CSDP);
2326 omap_writew(0x0004, OMAP1610_DMA_LCD_LCH_CTRL);
2327 }
2328 set_b1_regs();
2329 if (!enable_1510_mode) {
2330 u16 w;
2331
2332 w = omap_readw(OMAP1610_DMA_LCD_CCR);
2333 /*
2334 * If DMA was already active set the end_prog bit to have
2335 * the programmed register set loaded into the active
2336 * register set.
2337 */
2338 w |= 1 << 11; /* End_prog */
2339 if (!lcd_dma.single_transfer)
2340 w |= (3 << 8); /* Auto_init, repeat */
2341 omap_writew(w, OMAP1610_DMA_LCD_CCR);
2342 }
2343}
2344EXPORT_SYMBOL(omap_setup_lcd_dma);
2345
2346void omap_stop_lcd_dma(void)
2347{
2348 u16 w;
2349
2350 lcd_dma.active = 0;
2351 if (enable_1510_mode || !lcd_dma.ext_ctrl)
2352 return;
2353
2354 w = omap_readw(OMAP1610_DMA_LCD_CCR);
2355 w &= ~(1 << 7);
2356 omap_writew(w, OMAP1610_DMA_LCD_CCR);
2357
2358 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
2359 w &= ~(1 << 8);
2360 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
2361}
2362EXPORT_SYMBOL(omap_stop_lcd_dma);
2363
2364void omap_dma_global_context_save(void) 1983void omap_dma_global_context_save(void)
2365{ 1984{
2366 omap_dma_global_context.dma_irqenable_l0 = 1985 omap_dma_global_context.dma_irqenable_l0 =
@@ -2465,14 +2084,6 @@ static int __init omap_init_dma(void)
2465 dma_chan_count = 16; 2084 dma_chan_count = 16;
2466 } else 2085 } else
2467 dma_chan_count = 9; 2086 dma_chan_count = 9;
2468 if (cpu_is_omap16xx()) {
2469 u16 w;
2470
2471 /* this would prevent OMAP sleep */
2472 w = omap_readw(OMAP1610_DMA_LCD_CTRL);
2473 w &= ~(1 << 8);
2474 omap_writew(w, OMAP1610_DMA_LCD_CTRL);
2475 }
2476 } else if (cpu_class_is_omap2()) { 2087 } else if (cpu_class_is_omap2()) {
2477 u8 revision = dma_read(REVISION) & 0xff; 2088 u8 revision = dma_read(REVISION) & 0xff;
2478 printk(KERN_INFO "OMAP DMA hardware revision %d.%d\n", 2089 printk(KERN_INFO "OMAP DMA hardware revision %d.%d\n",
@@ -2483,7 +2094,6 @@ static int __init omap_init_dma(void)
2483 return 0; 2094 return 0;
2484 } 2095 }
2485 2096
2486 spin_lock_init(&lcd_dma.lock);
2487 spin_lock_init(&dma_chan_lock); 2097 spin_lock_init(&dma_chan_lock);
2488 2098
2489 for (ch = 0; ch < dma_chan_count; ch++) { 2099 for (ch = 0; ch < dma_chan_count; ch++) {
@@ -2548,22 +2158,6 @@ static int __init omap_init_dma(void)
2548 } 2158 }
2549 } 2159 }
2550 2160
2551
2552 /* FIXME: Update LCD DMA to work on 24xx */
2553 if (cpu_class_is_omap1()) {
2554 r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0,
2555 "LCD DMA", NULL);
2556 if (r != 0) {
2557 int i;
2558
2559 printk(KERN_ERR "unable to request IRQ for LCD DMA "
2560 "(error %d)\n", r);
2561 for (i = 0; i < dma_chan_count; i++)
2562 free_irq(omap1_dma_irq[i], (void *) (i + 1));
2563 goto out_free;
2564 }
2565 }
2566
2567 return 0; 2161 return 0;
2568 2162
2569out_free: 2163out_free:
diff --git a/arch/arm/plat-omap/i2c.c b/arch/arm/plat-omap/i2c.c
index c08362dbb8ed..33fff4ef382d 100644
--- a/arch/arm/plat-omap/i2c.c
+++ b/arch/arm/plat-omap/i2c.c
@@ -80,47 +80,8 @@ static struct platform_device omap_i2c_devices[] = {
80#endif 80#endif
81}; 81};
82 82
83#if defined(CONFIG_ARCH_OMAP24XX)
84static const int omap24xx_pins[][2] = {
85 { M19_24XX_I2C1_SCL, L15_24XX_I2C1_SDA },
86 { J15_24XX_I2C2_SCL, H19_24XX_I2C2_SDA },
87};
88#else
89static const int omap24xx_pins[][2] = {};
90#endif
91#if defined(CONFIG_ARCH_OMAP34XX)
92static const int omap34xx_pins[][2] = {
93 { K21_34XX_I2C1_SCL, J21_34XX_I2C1_SDA},
94 { AF15_34XX_I2C2_SCL, AE15_34XX_I2C2_SDA},
95 { AF14_34XX_I2C3_SCL, AG14_34XX_I2C3_SDA},
96};
97#else
98static const int omap34xx_pins[][2] = {};
99#endif
100
101#define OMAP_I2C_CMDLINE_SETUP (BIT(31)) 83#define OMAP_I2C_CMDLINE_SETUP (BIT(31))
102 84
103static void __init omap_i2c_mux_pins(int bus)
104{
105 int scl, sda;
106
107 if (cpu_class_is_omap1()) {
108 scl = I2C_SCL;
109 sda = I2C_SDA;
110 } else if (cpu_is_omap24xx()) {
111 scl = omap24xx_pins[bus][0];
112 sda = omap24xx_pins[bus][1];
113 } else if (cpu_is_omap34xx()) {
114 scl = omap34xx_pins[bus][0];
115 sda = omap34xx_pins[bus][1];
116 } else {
117 return;
118 }
119
120 omap_cfg_reg(sda);
121 omap_cfg_reg(scl);
122}
123
124static int __init omap_i2c_nr_ports(void) 85static int __init omap_i2c_nr_ports(void)
125{ 86{
126 int ports = 0; 87 int ports = 0;
@@ -156,7 +117,6 @@ static int __init omap_i2c_add_bus(int bus_id)
156 res[1].start = irq; 117 res[1].start = irq;
157 } 118 }
158 119
159 omap_i2c_mux_pins(bus_id - 1);
160 return platform_device_register(pdev); 120 return platform_device_register(pdev);
161} 121}
162 122
@@ -209,7 +169,7 @@ out:
209subsys_initcall(omap_register_i2c_bus_cmdline); 169subsys_initcall(omap_register_i2c_bus_cmdline);
210 170
211/** 171/**
212 * omap_register_i2c_bus - register I2C bus with device descriptors 172 * omap_plat_register_i2c_bus - register I2C bus with device descriptors
213 * @bus_id: bus id counting from number 1 173 * @bus_id: bus id counting from number 1
214 * @clkrate: clock rate of the bus in kHz 174 * @clkrate: clock rate of the bus in kHz
215 * @info: pointer into I2C device descriptor table or NULL 175 * @info: pointer into I2C device descriptor table or NULL
@@ -217,7 +177,7 @@ subsys_initcall(omap_register_i2c_bus_cmdline);
217 * 177 *
218 * Returns 0 on success or an error code. 178 * Returns 0 on success or an error code.
219 */ 179 */
220int __init omap_register_i2c_bus(int bus_id, u32 clkrate, 180int __init omap_plat_register_i2c_bus(int bus_id, u32 clkrate,
221 struct i2c_board_info const *info, 181 struct i2c_board_info const *info,
222 unsigned len) 182 unsigned len)
223{ 183{
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h
index abb17b604f82..376ce18216ff 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -114,15 +114,6 @@ struct omap_pwm_led_platform_data {
114 void (*set_power)(struct omap_pwm_led_platform_data *self, int on_off); 114 void (*set_power)(struct omap_pwm_led_platform_data *self, int on_off);
115}; 115};
116 116
117/* See arch/arm/plat-omap/include/mach/gpio-switch.h for definitions */
118struct omap_gpio_switch_config {
119 char name[12];
120 u16 gpio;
121 int flags:4;
122 int type:4;
123 int key_code:24; /* Linux key code */
124};
125
126struct omap_uart_config { 117struct omap_uart_config {
127 /* Bit field of UARTs present; bit 0 --> UART1 */ 118 /* Bit field of UARTs present; bit 0 --> UART1 */
128 unsigned int enabled_uarts; 119 unsigned int enabled_uarts;
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h
index 2f816fe3ae86..32c22272425d 100644
--- a/arch/arm/plat-omap/include/plat/common.h
+++ b/arch/arm/plat-omap/include/plat/common.h
@@ -27,7 +27,7 @@
27#ifndef __ARCH_ARM_MACH_OMAP_COMMON_H 27#ifndef __ARCH_ARM_MACH_OMAP_COMMON_H
28#define __ARCH_ARM_MACH_OMAP_COMMON_H 28#define __ARCH_ARM_MACH_OMAP_COMMON_H
29 29
30#include <linux/i2c.h> 30#include <plat/i2c.h>
31 31
32struct sys_timer; 32struct sys_timer;
33 33
@@ -36,18 +36,6 @@ extern void __iomem *gic_cpu_base_addr;
36 36
37extern void omap_map_common_io(void); 37extern void omap_map_common_io(void);
38extern struct sys_timer omap_timer; 38extern struct sys_timer omap_timer;
39#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
40extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
41 struct i2c_board_info const *info,
42 unsigned len);
43#else
44static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
45 struct i2c_board_info const *info,
46 unsigned len)
47{
48 return 0;
49}
50#endif
51 39
52/* IO bases for various OMAP processors */ 40/* IO bases for various OMAP processors */
53struct omap_globals { 41struct omap_globals {
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index 2e1789001dfe..9a028bdebb06 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -176,11 +176,13 @@ IS_OMAP_CLASS(15xx, 0x15)
176IS_OMAP_CLASS(16xx, 0x16) 176IS_OMAP_CLASS(16xx, 0x16)
177IS_OMAP_CLASS(24xx, 0x24) 177IS_OMAP_CLASS(24xx, 0x24)
178IS_OMAP_CLASS(34xx, 0x34) 178IS_OMAP_CLASS(34xx, 0x34)
179IS_OMAP_CLASS(44xx, 0x44)
179 180
180IS_OMAP_SUBCLASS(242x, 0x242) 181IS_OMAP_SUBCLASS(242x, 0x242)
181IS_OMAP_SUBCLASS(243x, 0x243) 182IS_OMAP_SUBCLASS(243x, 0x243)
182IS_OMAP_SUBCLASS(343x, 0x343) 183IS_OMAP_SUBCLASS(343x, 0x343)
183IS_OMAP_SUBCLASS(363x, 0x363) 184IS_OMAP_SUBCLASS(363x, 0x363)
185IS_OMAP_SUBCLASS(443x, 0x443)
184 186
185#define cpu_is_omap7xx() 0 187#define cpu_is_omap7xx() 0
186#define cpu_is_omap15xx() 0 188#define cpu_is_omap15xx() 0
@@ -393,11 +395,11 @@ IS_OMAP_TYPE(3517, 0x3517)
393 (!omap3_has_iva()) && \ 395 (!omap3_has_iva()) && \
394 (!omap3_has_sgx())) 396 (!omap3_has_sgx()))
395# define cpu_is_omap3515() (cpu_is_omap3430() && \ 397# define cpu_is_omap3515() (cpu_is_omap3430() && \
396 (omap3_has_iva()) && \ 398 (!omap3_has_iva()) && \
397 (!omap3_has_sgx())) 399 (omap3_has_sgx()))
398# define cpu_is_omap3525() (cpu_is_omap3430() && \ 400# define cpu_is_omap3525() (cpu_is_omap3430() && \
399 (omap3_has_sgx()) && \ 401 (!omap3_has_sgx()) && \
400 (!omap3_has_iva())) 402 (omap3_has_iva()))
401# define cpu_is_omap3530() (cpu_is_omap3430()) 403# define cpu_is_omap3530() (cpu_is_omap3430())
402# define cpu_is_omap3505() is_omap3505() 404# define cpu_is_omap3505() is_omap3505()
403# define cpu_is_omap3517() is_omap3517() 405# define cpu_is_omap3517() is_omap3517()
@@ -408,8 +410,8 @@ IS_OMAP_TYPE(3517, 0x3517)
408# if defined(CONFIG_ARCH_OMAP4) 410# if defined(CONFIG_ARCH_OMAP4)
409# undef cpu_is_omap44xx 411# undef cpu_is_omap44xx
410# undef cpu_is_omap443x 412# undef cpu_is_omap443x
411# define cpu_is_omap44xx() 1 413# define cpu_is_omap44xx() is_omap44xx()
412# define cpu_is_omap443x() 1 414# define cpu_is_omap443x() is_omap443x()
413# endif 415# endif
414 416
415/* Macros to detect if we have OMAP1 or OMAP2 */ 417/* Macros to detect if we have OMAP1 or OMAP2 */
@@ -436,14 +438,15 @@ IS_OMAP_TYPE(3517, 0x3517)
436#define OMAP3630_REV_ES1_0 0x36300034 438#define OMAP3630_REV_ES1_0 0x36300034
437 439
438#define OMAP35XX_CLASS 0x35000034 440#define OMAP35XX_CLASS 0x35000034
439#define OMAP3503_REV(v) (OMAP35XX_CLASS | (0x3503 << 16) | (v << 12)) 441#define OMAP3503_REV(v) (OMAP35XX_CLASS | (0x3503 << 16) | (v << 8))
440#define OMAP3515_REV(v) (OMAP35XX_CLASS | (0x3515 << 16) | (v << 12)) 442#define OMAP3515_REV(v) (OMAP35XX_CLASS | (0x3515 << 16) | (v << 8))
441#define OMAP3525_REV(v) (OMAP35XX_CLASS | (0x3525 << 16) | (v << 12)) 443#define OMAP3525_REV(v) (OMAP35XX_CLASS | (0x3525 << 16) | (v << 8))
442#define OMAP3530_REV(v) (OMAP35XX_CLASS | (0x3530 << 16) | (v << 12)) 444#define OMAP3530_REV(v) (OMAP35XX_CLASS | (0x3530 << 16) | (v << 8))
443#define OMAP3505_REV(v) (OMAP35XX_CLASS | (0x3505 << 16) | (v << 12)) 445#define OMAP3505_REV(v) (OMAP35XX_CLASS | (0x3505 << 16) | (v << 8))
444#define OMAP3517_REV(v) (OMAP35XX_CLASS | (0x3517 << 16) | (v << 12)) 446#define OMAP3517_REV(v) (OMAP35XX_CLASS | (0x3517 << 16) | (v << 8))
445 447
446#define OMAP443X_CLASS 0x44300034 448#define OMAP443X_CLASS 0x44300044
449#define OMAP4430_REV_ES1_0 0x44300044
447 450
448/* 451/*
449 * omap_chip bits 452 * omap_chip bits
diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h
index 1c017b29b7e9..4ede9e17a0be 100644
--- a/arch/arm/plat-omap/include/plat/dma.h
+++ b/arch/arm/plat-omap/include/plat/dma.h
@@ -401,33 +401,6 @@
401 401
402/*----------------------------------------------------------------------------*/ 402/*----------------------------------------------------------------------------*/
403 403
404/* Hardware registers for LCD DMA */
405#define OMAP1510_DMA_LCD_BASE (0xfffedb00)
406#define OMAP1510_DMA_LCD_CTRL (OMAP1510_DMA_LCD_BASE + 0x00)
407#define OMAP1510_DMA_LCD_TOP_F1_L (OMAP1510_DMA_LCD_BASE + 0x02)
408#define OMAP1510_DMA_LCD_TOP_F1_U (OMAP1510_DMA_LCD_BASE + 0x04)
409#define OMAP1510_DMA_LCD_BOT_F1_L (OMAP1510_DMA_LCD_BASE + 0x06)
410#define OMAP1510_DMA_LCD_BOT_F1_U (OMAP1510_DMA_LCD_BASE + 0x08)
411
412#define OMAP1610_DMA_LCD_BASE (0xfffee300)
413#define OMAP1610_DMA_LCD_CSDP (OMAP1610_DMA_LCD_BASE + 0xc0)
414#define OMAP1610_DMA_LCD_CCR (OMAP1610_DMA_LCD_BASE + 0xc2)
415#define OMAP1610_DMA_LCD_CTRL (OMAP1610_DMA_LCD_BASE + 0xc4)
416#define OMAP1610_DMA_LCD_TOP_B1_L (OMAP1610_DMA_LCD_BASE + 0xc8)
417#define OMAP1610_DMA_LCD_TOP_B1_U (OMAP1610_DMA_LCD_BASE + 0xca)
418#define OMAP1610_DMA_LCD_BOT_B1_L (OMAP1610_DMA_LCD_BASE + 0xcc)
419#define OMAP1610_DMA_LCD_BOT_B1_U (OMAP1610_DMA_LCD_BASE + 0xce)
420#define OMAP1610_DMA_LCD_TOP_B2_L (OMAP1610_DMA_LCD_BASE + 0xd0)
421#define OMAP1610_DMA_LCD_TOP_B2_U (OMAP1610_DMA_LCD_BASE + 0xd2)
422#define OMAP1610_DMA_LCD_BOT_B2_L (OMAP1610_DMA_LCD_BASE + 0xd4)
423#define OMAP1610_DMA_LCD_BOT_B2_U (OMAP1610_DMA_LCD_BASE + 0xd6)
424#define OMAP1610_DMA_LCD_SRC_EI_B1 (OMAP1610_DMA_LCD_BASE + 0xd8)
425#define OMAP1610_DMA_LCD_SRC_FI_B1_L (OMAP1610_DMA_LCD_BASE + 0xda)
426#define OMAP1610_DMA_LCD_SRC_EN_B1 (OMAP1610_DMA_LCD_BASE + 0xe0)
427#define OMAP1610_DMA_LCD_SRC_FN_B1 (OMAP1610_DMA_LCD_BASE + 0xe4)
428#define OMAP1610_DMA_LCD_LCH_CTRL (OMAP1610_DMA_LCD_BASE + 0xea)
429#define OMAP1610_DMA_LCD_SRC_FI_B1_U (OMAP1610_DMA_LCD_BASE + 0xf4)
430
431#define OMAP1_DMA_TOUT_IRQ (1 << 0) 404#define OMAP1_DMA_TOUT_IRQ (1 << 0)
432#define OMAP_DMA_DROP_IRQ (1 << 1) 405#define OMAP_DMA_DROP_IRQ (1 << 1)
433#define OMAP_DMA_HALF_IRQ (1 << 2) 406#define OMAP_DMA_HALF_IRQ (1 << 2)
@@ -441,6 +414,8 @@
441#define OMAP2_DMA_SUPERVISOR_ERR_IRQ (1 << 10) 414#define OMAP2_DMA_SUPERVISOR_ERR_IRQ (1 << 10)
442#define OMAP2_DMA_MISALIGNED_ERR_IRQ (1 << 11) 415#define OMAP2_DMA_MISALIGNED_ERR_IRQ (1 << 11)
443 416
417#define OMAP_DMA_CCR_EN (1 << 7)
418
444#define OMAP_DMA_DATA_TYPE_S8 0x00 419#define OMAP_DMA_DATA_TYPE_S8 0x00
445#define OMAP_DMA_DATA_TYPE_S16 0x01 420#define OMAP_DMA_DATA_TYPE_S16 0x01
446#define OMAP_DMA_DATA_TYPE_S32 0x02 421#define OMAP_DMA_DATA_TYPE_S32 0x02
@@ -503,14 +478,6 @@
503#define DMA_CH_PRIO_HIGH 0x1 478#define DMA_CH_PRIO_HIGH 0x1
504#define DMA_CH_PRIO_LOW 0x0 /* Def */ 479#define DMA_CH_PRIO_LOW 0x0 /* Def */
505 480
506/* LCD DMA block numbers */
507enum {
508 OMAP_LCD_DMA_B1_TOP,
509 OMAP_LCD_DMA_B1_BOTTOM,
510 OMAP_LCD_DMA_B2_TOP,
511 OMAP_LCD_DMA_B2_BOTTOM
512};
513
514enum omap_dma_burst_mode { 481enum omap_dma_burst_mode {
515 OMAP_DMA_DATA_BURST_DIS = 0, 482 OMAP_DMA_DATA_BURST_DIS = 0,
516 OMAP_DMA_DATA_BURST_4, 483 OMAP_DMA_DATA_BURST_4,
@@ -661,20 +628,13 @@ extern int omap_modify_dma_chain_params(int chain_id,
661extern int omap_dma_chain_status(int chain_id); 628extern int omap_dma_chain_status(int chain_id);
662#endif 629#endif
663 630
664/* LCD DMA functions */ 631#if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_FB_OMAP)
665extern int omap_request_lcd_dma(void (*callback)(u16 status, void *data), 632#include <mach/lcd_dma.h>
666 void *data); 633#else
667extern void omap_free_lcd_dma(void); 634static inline int omap_lcd_dma_running(void)
668extern void omap_setup_lcd_dma(void); 635{
669extern void omap_enable_lcd_dma(void); 636 return 0;
670extern void omap_stop_lcd_dma(void); 637}
671extern void omap_set_lcd_dma_ext_controller(int external); 638#endif
672extern void omap_set_lcd_dma_single_transfer(int single);
673extern void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
674 int data_type);
675extern void omap_set_lcd_dma_b1_rotation(int rotate);
676extern void omap_set_lcd_dma_b1_vxres(unsigned long vxres);
677extern void omap_set_lcd_dma_b1_mirror(int mirror);
678extern void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale);
679 639
680#endif /* __ASM_ARCH_DMA_H */ 640#endif /* __ASM_ARCH_DMA_H */
diff --git a/arch/arm/plat-omap/include/plat/gpmc.h b/arch/arm/plat-omap/include/plat/gpmc.h
index 696e0ca051b7..e081338e0b23 100644
--- a/arch/arm/plat-omap/include/plat/gpmc.h
+++ b/arch/arm/plat-omap/include/plat/gpmc.h
@@ -45,7 +45,7 @@
45#define GPMC_CONFIG1_DEVICESIZE_16 GPMC_CONFIG1_DEVICESIZE(1) 45#define GPMC_CONFIG1_DEVICESIZE_16 GPMC_CONFIG1_DEVICESIZE(1)
46#define GPMC_CONFIG1_DEVICETYPE(val) ((val & 3) << 10) 46#define GPMC_CONFIG1_DEVICETYPE(val) ((val & 3) << 10)
47#define GPMC_CONFIG1_DEVICETYPE_NOR GPMC_CONFIG1_DEVICETYPE(0) 47#define GPMC_CONFIG1_DEVICETYPE_NOR GPMC_CONFIG1_DEVICETYPE(0)
48#define GPMC_CONFIG1_DEVICETYPE_NAND GPMC_CONFIG1_DEVICETYPE(1) 48#define GPMC_CONFIG1_DEVICETYPE_NAND GPMC_CONFIG1_DEVICETYPE(2)
49#define GPMC_CONFIG1_MUXADDDATA (1 << 9) 49#define GPMC_CONFIG1_MUXADDDATA (1 << 9)
50#define GPMC_CONFIG1_TIME_PARA_GRAN (1 << 4) 50#define GPMC_CONFIG1_TIME_PARA_GRAN (1 << 4)
51#define GPMC_CONFIG1_FCLK_DIV(val) (val & 3) 51#define GPMC_CONFIG1_FCLK_DIV(val) (val & 3)
diff --git a/arch/arm/plat-omap/include/plat/i2c.h b/arch/arm/plat-omap/include/plat/i2c.h
new file mode 100644
index 000000000000..585d9ca68b97
--- /dev/null
+++ b/arch/arm/plat-omap/include/plat/i2c.h
@@ -0,0 +1,39 @@
1/*
2 * Helper module for board specific I2C bus registration
3 *
4 * Copyright (C) 2009 Nokia Corporation.
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
8 * version 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * 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
18 * 02110-1301 USA
19 *
20 */
21
22#include <linux/i2c.h>
23
24#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
25extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
26 struct i2c_board_info const *info,
27 unsigned len);
28#else
29static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
30 struct i2c_board_info const *info,
31 unsigned len)
32{
33 return 0;
34}
35#endif
36
37int omap_plat_register_i2c_bus(int bus_id, u32 clkrate,
38 struct i2c_board_info const *info,
39 unsigned len);
diff --git a/arch/arm/plat-omap/include/plat/mux.h b/arch/arm/plat-omap/include/plat/mux.h
index ba77de601501..8f069cc80350 100644
--- a/arch/arm/plat-omap/include/plat/mux.h
+++ b/arch/arm/plat-omap/include/plat/mux.h
@@ -130,58 +130,11 @@
130#define OMAP2_PULL_UP (1 << 4) 130#define OMAP2_PULL_UP (1 << 4)
131#define OMAP2_ALTELECTRICALSEL (1 << 5) 131#define OMAP2_ALTELECTRICALSEL (1 << 5)
132 132
133/* 34xx specific mux bit defines */
134#define OMAP3_INPUT_EN (1 << 8)
135#define OMAP3_OFF_EN (1 << 9)
136#define OMAP3_OFFOUT_EN (1 << 10)
137#define OMAP3_OFFOUT_VAL (1 << 11)
138#define OMAP3_OFF_PULL_EN (1 << 12)
139#define OMAP3_OFF_PULL_UP (1 << 13)
140#define OMAP3_WAKEUP_EN (1 << 14)
141
142/* 34xx mux mode options for each pin. See TRM for options */
143#define OMAP34XX_MUX_MODE0 0
144#define OMAP34XX_MUX_MODE1 1
145#define OMAP34XX_MUX_MODE2 2
146#define OMAP34XX_MUX_MODE3 3
147#define OMAP34XX_MUX_MODE4 4
148#define OMAP34XX_MUX_MODE5 5
149#define OMAP34XX_MUX_MODE6 6
150#define OMAP34XX_MUX_MODE7 7
151
152/* 34xx active pin states */
153#define OMAP34XX_PIN_OUTPUT 0
154#define OMAP34XX_PIN_INPUT OMAP3_INPUT_EN
155#define OMAP34XX_PIN_INPUT_PULLUP (OMAP2_PULL_ENA | OMAP3_INPUT_EN \
156 | OMAP2_PULL_UP)
157#define OMAP34XX_PIN_INPUT_PULLDOWN (OMAP2_PULL_ENA | OMAP3_INPUT_EN)
158
159/* 34xx off mode states */
160#define OMAP34XX_PIN_OFF_NONE 0
161#define OMAP34XX_PIN_OFF_OUTPUT_HIGH (OMAP3_OFF_EN | OMAP3_OFFOUT_EN \
162 | OMAP3_OFFOUT_VAL)
163#define OMAP34XX_PIN_OFF_OUTPUT_LOW (OMAP3_OFF_EN | OMAP3_OFFOUT_EN)
164#define OMAP34XX_PIN_OFF_INPUT_PULLUP (OMAP3_OFF_EN | OMAP3_OFF_PULL_EN \
165 | OMAP3_OFF_PULL_UP)
166#define OMAP34XX_PIN_OFF_INPUT_PULLDOWN (OMAP3_OFF_EN | OMAP3_OFF_PULL_EN)
167#define OMAP34XX_PIN_OFF_WAKEUPENABLE OMAP3_WAKEUP_EN
168
169#define MUX_CFG_34XX(desc, reg_offset, mux_value) { \
170 .name = desc, \
171 .debug = 0, \
172 .mux_reg = reg_offset, \
173 .mux_val = mux_value \
174},
175
176struct pin_config { 133struct pin_config {
177 char *name; 134 char *name;
178 const unsigned int mux_reg; 135 const unsigned int mux_reg;
179 unsigned char debug; 136 unsigned char debug;
180 137
181#if defined(CONFIG_ARCH_OMAP34XX)
182 u16 mux_val; /* Wake-up, off mode, pull, mux mode */
183#endif
184
185#if defined(CONFIG_ARCH_OMAP1) || defined(CONFIG_ARCH_OMAP24XX) 138#if defined(CONFIG_ARCH_OMAP1) || defined(CONFIG_ARCH_OMAP24XX)
186 const unsigned char mask_offset; 139 const unsigned char mask_offset;
187 const unsigned char mask; 140 const unsigned char mask;
@@ -219,11 +172,17 @@ enum omap7xx_index {
219 AA17_7XX_USB_DM, 172 AA17_7XX_USB_DM,
220 W16_7XX_USB_PU_EN, 173 W16_7XX_USB_PU_EN,
221 W17_7XX_USB_VBUSI, 174 W17_7XX_USB_VBUSI,
175 W18_7XX_USB_DMCK_OUT,
176 W19_7XX_USB_DCRST,
222 177
223 /* MMC */ 178 /* MMC */
224 MMC_7XX_CMD, 179 MMC_7XX_CMD,
225 MMC_7XX_CLK, 180 MMC_7XX_CLK,
226 MMC_7XX_DAT0, 181 MMC_7XX_DAT0,
182
183 /* I2C */
184 I2C_7XX_SCL,
185 I2C_7XX_SDA,
227}; 186};
228 187
229enum omap1xxx_index { 188enum omap1xxx_index {
@@ -681,181 +640,6 @@ enum omap24xx_index {
681 640
682}; 641};
683 642
684enum omap34xx_index {
685 /* 34xx I2C */
686 K21_34XX_I2C1_SCL,
687 J21_34XX_I2C1_SDA,
688 AF15_34XX_I2C2_SCL,
689 AE15_34XX_I2C2_SDA,
690 AF14_34XX_I2C3_SCL,
691 AG14_34XX_I2C3_SDA,
692 AD26_34XX_I2C4_SCL,
693 AE26_34XX_I2C4_SDA,
694
695 /* PHY - HSUSB: 12-pin ULPI PHY: Port 1*/
696 Y8_3430_USB1HS_PHY_CLK,
697 Y9_3430_USB1HS_PHY_STP,
698 AA14_3430_USB1HS_PHY_DIR,
699 AA11_3430_USB1HS_PHY_NXT,
700 W13_3430_USB1HS_PHY_DATA0,
701 W12_3430_USB1HS_PHY_DATA1,
702 W11_3430_USB1HS_PHY_DATA2,
703 Y11_3430_USB1HS_PHY_DATA3,
704 W9_3430_USB1HS_PHY_DATA4,
705 Y12_3430_USB1HS_PHY_DATA5,
706 W8_3430_USB1HS_PHY_DATA6,
707 Y13_3430_USB1HS_PHY_DATA7,
708
709 /* PHY - HSUSB: 12-pin ULPI PHY: Port 2*/
710 AA8_3430_USB2HS_PHY_CLK,
711 AA10_3430_USB2HS_PHY_STP,
712 AA9_3430_USB2HS_PHY_DIR,
713 AB11_3430_USB2HS_PHY_NXT,
714 AB10_3430_USB2HS_PHY_DATA0,
715 AB9_3430_USB2HS_PHY_DATA1,
716 W3_3430_USB2HS_PHY_DATA2,
717 T4_3430_USB2HS_PHY_DATA3,
718 T3_3430_USB2HS_PHY_DATA4,
719 R3_3430_USB2HS_PHY_DATA5,
720 R4_3430_USB2HS_PHY_DATA6,
721 T2_3430_USB2HS_PHY_DATA7,
722
723
724 /* TLL - HSUSB: 12-pin TLL Port 1*/
725 Y8_3430_USB1HS_TLL_CLK,
726 Y9_3430_USB1HS_TLL_STP,
727 AA14_3430_USB1HS_TLL_DIR,
728 AA11_3430_USB1HS_TLL_NXT,
729 W13_3430_USB1HS_TLL_DATA0,
730 W12_3430_USB1HS_TLL_DATA1,
731 W11_3430_USB1HS_TLL_DATA2,
732 Y11_3430_USB1HS_TLL_DATA3,
733 W9_3430_USB1HS_TLL_DATA4,
734 Y12_3430_USB1HS_TLL_DATA5,
735 W8_3430_USB1HS_TLL_DATA6,
736 Y13_3430_USB1HS_TLL_DATA7,
737
738 /* TLL - HSUSB: 12-pin TLL Port 2*/
739 AA8_3430_USB2HS_TLL_CLK,
740 AA10_3430_USB2HS_TLL_STP,
741 AA9_3430_USB2HS_TLL_DIR,
742 AB11_3430_USB2HS_TLL_NXT,
743 AB10_3430_USB2HS_TLL_DATA0,
744 AB9_3430_USB2HS_TLL_DATA1,
745 W3_3430_USB2HS_TLL_DATA2,
746 T4_3430_USB2HS_TLL_DATA3,
747 T3_3430_USB2HS_TLL_DATA4,
748 R3_3430_USB2HS_TLL_DATA5,
749 R4_3430_USB2HS_TLL_DATA6,
750 T2_3430_USB2HS_TLL_DATA7,
751
752 /* TLL - HSUSB: 12-pin TLL Port 3*/
753 AA6_3430_USB3HS_TLL_CLK,
754 AB3_3430_USB3HS_TLL_STP,
755 AA3_3430_USB3HS_TLL_DIR,
756 Y3_3430_USB3HS_TLL_NXT,
757 AA5_3430_USB3HS_TLL_DATA0,
758 Y4_3430_USB3HS_TLL_DATA1,
759 Y5_3430_USB3HS_TLL_DATA2,
760 W5_3430_USB3HS_TLL_DATA3,
761 AB12_3430_USB3HS_TLL_DATA4,
762 AB13_3430_USB3HS_TLL_DATA5,
763 AA13_3430_USB3HS_TLL_DATA6,
764 AA12_3430_USB3HS_TLL_DATA7,
765
766 /* PHY FSUSB: FS Serial for Port 1 (multiple PHY modes supported) */
767 AF10_3430_USB1FS_PHY_MM1_RXDP,
768 AG9_3430_USB1FS_PHY_MM1_RXDM,
769 W13_3430_USB1FS_PHY_MM1_RXRCV,
770 W12_3430_USB1FS_PHY_MM1_TXSE0,
771 W11_3430_USB1FS_PHY_MM1_TXDAT,
772 Y11_3430_USB1FS_PHY_MM1_TXEN_N,
773
774 /* PHY FSUSB: FS Serial for Port 2 (multiple PHY modes supported) */
775 AF7_3430_USB2FS_PHY_MM2_RXDP,
776 AH7_3430_USB2FS_PHY_MM2_RXDM,
777 AB10_3430_USB2FS_PHY_MM2_RXRCV,
778 AB9_3430_USB2FS_PHY_MM2_TXSE0,
779 W3_3430_USB2FS_PHY_MM2_TXDAT,
780 T4_3430_USB2FS_PHY_MM2_TXEN_N,
781
782 /* PHY FSUSB: FS Serial for Port 3 (multiple PHY modes supported) */
783 AH3_3430_USB3FS_PHY_MM3_RXDP,
784 AE3_3430_USB3FS_PHY_MM3_RXDM,
785 AD1_3430_USB3FS_PHY_MM3_RXRCV,
786 AE1_3430_USB3FS_PHY_MM3_TXSE0,
787 AD2_3430_USB3FS_PHY_MM3_TXDAT,
788 AC1_3430_USB3FS_PHY_MM3_TXEN_N,
789
790 /* 34xx GPIO
791 * - normally these are bidirectional, no internal pullup/pulldown
792 * - "_UP" suffix (GPIO3_UP) if internal pullup is configured
793 * - "_DOWN" suffix (GPIO3_DOWN) with internal pulldown
794 * - "_OUT" suffix (GPIO3_OUT) for output-only pins (unlike 24xx)
795 */
796 AF26_34XX_GPIO0,
797 AF22_34XX_GPIO9,
798 AG9_34XX_GPIO23,
799 AH8_34XX_GPIO29,
800 U8_34XX_GPIO54_OUT,
801 U8_34XX_GPIO54_DOWN,
802 L8_34XX_GPIO63,
803 G25_34XX_GPIO86_OUT,
804 AG4_34XX_GPIO134_OUT,
805 AF4_34XX_GPIO135_OUT,
806 AE4_34XX_GPIO136_OUT,
807 AF6_34XX_GPIO140_UP,
808 AE6_34XX_GPIO141,
809 AF5_34XX_GPIO142,
810 AE5_34XX_GPIO143,
811 H19_34XX_GPIO164_OUT,
812 J25_34XX_GPIO170,
813
814 /* OMAP3 SDRC CKE signals to SDR/DDR ram chips */
815 H16_34XX_SDRC_CKE0,
816 H17_34XX_SDRC_CKE1,
817
818 /* MMC1 */
819 N28_3430_MMC1_CLK,
820 M27_3430_MMC1_CMD,
821 N27_3430_MMC1_DAT0,
822 N26_3430_MMC1_DAT1,
823 N25_3430_MMC1_DAT2,
824 P28_3430_MMC1_DAT3,
825 P27_3430_MMC1_DAT4,
826 P26_3430_MMC1_DAT5,
827 R27_3430_MMC1_DAT6,
828 R25_3430_MMC1_DAT7,
829
830 /* MMC2 */
831 AE2_3430_MMC2_CLK,
832 AG5_3430_MMC2_CMD,
833 AH5_3430_MMC2_DAT0,
834 AH4_3430_MMC2_DAT1,
835 AG4_3430_MMC2_DAT2,
836 AF4_3430_MMC2_DAT3,
837 AE4_3430_MMC2_DAT4,
838 AH3_3430_MMC2_DAT5,
839 AF3_3430_MMC2_DAT6,
840 AE3_3430_MMC2_DAT7,
841
842 /* MMC3 */
843 AF10_3430_MMC3_CLK,
844 AC3_3430_MMC3_CMD,
845 AE11_3430_MMC3_DAT0,
846 AH9_3430_MMC3_DAT1,
847 AF13_3430_MMC3_DAT2,
848 AF13_3430_MMC3_DAT3,
849
850 /* SYS_NIRQ T2 INT1 */
851 AF26_34XX_SYS_NIRQ,
852
853 /* EHCI GPIO's for OMAP3EVM (Rev >= E) */
854 AH14_34XX_GPIO21,
855 AF9_34XX_GPIO22,
856 U3_34XX_GPIO61,
857};
858
859struct omap_mux_cfg { 643struct omap_mux_cfg {
860 struct pin_config *pins; 644 struct pin_config *pins;
861 unsigned long size; 645 unsigned long size;
@@ -865,14 +649,14 @@ struct omap_mux_cfg {
865#ifdef CONFIG_OMAP_MUX 649#ifdef CONFIG_OMAP_MUX
866/* setup pin muxing in Linux */ 650/* setup pin muxing in Linux */
867extern int omap1_mux_init(void); 651extern int omap1_mux_init(void);
868extern int omap2_mux_init(void);
869extern int omap_mux_register(struct omap_mux_cfg *); 652extern int omap_mux_register(struct omap_mux_cfg *);
870extern int omap_cfg_reg(unsigned long reg_cfg); 653extern int omap_cfg_reg(unsigned long reg_cfg);
871#else 654#else
872/* boot loader does it all (no warnings from CONFIG_OMAP_MUX_WARNINGS) */ 655/* boot loader does it all (no warnings from CONFIG_OMAP_MUX_WARNINGS) */
873static inline int omap1_mux_init(void) { return 0; } 656static inline int omap1_mux_init(void) { return 0; }
874static inline int omap2_mux_init(void) { return 0; }
875static inline int omap_cfg_reg(unsigned long reg_cfg) { return 0; } 657static inline int omap_cfg_reg(unsigned long reg_cfg) { return 0; }
876#endif 658#endif
877 659
660extern int omap2_mux_init(void);
661
878#endif 662#endif
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h
index 9951345a25d6..f5a4a92393ef 100644
--- a/arch/arm/plat-omap/include/plat/serial.h
+++ b/arch/arm/plat-omap/include/plat/serial.h
@@ -53,6 +53,7 @@
53#ifndef __ASSEMBLER__ 53#ifndef __ASSEMBLER__
54extern void __init omap_serial_early_init(void); 54extern void __init omap_serial_early_init(void);
55extern void omap_serial_init(void); 55extern void omap_serial_init(void);
56extern void omap_serial_init_port(int port);
56extern int omap_uart_can_sleep(void); 57extern int omap_uart_can_sleep(void);
57extern void omap_uart_check_wakeup(void); 58extern void omap_uart_check_wakeup(void);
58extern void omap_uart_prepare_suspend(void); 59extern void omap_uart_prepare_suspend(void);
diff --git a/arch/arm/plat-omap/include/plat/smp.h b/arch/arm/plat-omap/include/plat/smp.h
index dcaa8fde7063..8983d54c4fd2 100644
--- a/arch/arm/plat-omap/include/plat/smp.h
+++ b/arch/arm/plat-omap/include/plat/smp.h
@@ -28,6 +28,8 @@
28 28
29/* Needed for secondary core boot */ 29/* Needed for secondary core boot */
30extern void omap_secondary_startup(void); 30extern void omap_secondary_startup(void);
31extern u32 omap_modify_auxcoreboot0(u32 set_mask, u32 clear_mask);
32extern void omap_auxcoreboot_addr(u32 cpu_addr);
31 33
32/* 34/*
33 * We use Soft IRQ1 as the IPI 35 * We use Soft IRQ1 as the IPI
diff --git a/arch/arm/plat-omap/mux.c b/arch/arm/plat-omap/mux.c
index 05aebcad215b..06703635ace1 100644
--- a/arch/arm/plat-omap/mux.c
+++ b/arch/arm/plat-omap/mux.c
@@ -54,8 +54,12 @@ int __init_or_module omap_cfg_reg(const unsigned long index)
54{ 54{
55 struct pin_config *reg; 55 struct pin_config *reg;
56 56
57 if (cpu_is_omap44xx()) 57 if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
58 return 0; 58 printk(KERN_ERR "mux: Broken omap_cfg_reg(%lu) entry\n",
59 index);
60 WARN_ON(1);
61 return -EINVAL;
62 }
59 63
60 if (mux_cfg == NULL) { 64 if (mux_cfg == NULL) {
61 printk(KERN_ERR "Pin mux table not initialized\n"); 65 printk(KERN_ERR "Pin mux table not initialized\n");
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index ad2bf07d30b5..d8d5094b37ed 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -48,8 +48,10 @@
48#define OMAP3_SRAM_VA 0xfe400000 48#define OMAP3_SRAM_VA 0xfe400000
49#define OMAP3_SRAM_PUB_PA 0x40208000 49#define OMAP3_SRAM_PUB_PA 0x40208000
50#define OMAP3_SRAM_PUB_VA (OMAP3_SRAM_VA + 0x8000) 50#define OMAP3_SRAM_PUB_VA (OMAP3_SRAM_VA + 0x8000)
51#define OMAP4_SRAM_PA 0x40200000 /*0x402f0000*/ 51#define OMAP4_SRAM_PA 0x40300000
52#define OMAP4_SRAM_VA 0xfe400000 /*0xfe4f0000*/ 52#define OMAP4_SRAM_VA 0xfe400000
53#define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000)
54#define OMAP4_SRAM_PUB_VA (OMAP4_SRAM_VA + 0x4000)
53 55
54#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) 56#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
55#define SRAM_BOOTLOADER_SZ 0x00 57#define SRAM_BOOTLOADER_SZ 0x00
@@ -140,6 +142,10 @@ void __init omap_detect_sram(void)
140 } else { 142 } else {
141 omap_sram_size = 0x8000; /* 32K */ 143 omap_sram_size = 0x8000; /* 32K */
142 } 144 }
145 } else if (cpu_is_omap44xx()) {
146 omap_sram_base = OMAP4_SRAM_PUB_VA;
147 omap_sram_start = OMAP4_SRAM_PUB_PA;
148 omap_sram_size = 0xa000; /* 40K */
143 } else { 149 } else {
144 omap_sram_base = OMAP2_SRAM_PUB_VA; 150 omap_sram_base = OMAP2_SRAM_PUB_VA;
145 omap_sram_start = OMAP2_SRAM_PUB_PA; 151 omap_sram_start = OMAP2_SRAM_PUB_PA;
@@ -153,7 +159,7 @@ void __init omap_detect_sram(void)
153 } else if (cpu_is_omap44xx()) { 159 } else if (cpu_is_omap44xx()) {
154 omap_sram_base = OMAP4_SRAM_VA; 160 omap_sram_base = OMAP4_SRAM_VA;
155 omap_sram_start = OMAP4_SRAM_PA; 161 omap_sram_start = OMAP4_SRAM_PA;
156 omap_sram_size = 0x8000; /* 32K */ 162 omap_sram_size = 0xe000; /* 56K */
157 } else { 163 } else {
158 omap_sram_base = OMAP2_SRAM_VA; 164 omap_sram_base = OMAP2_SRAM_VA;
159 omap_sram_start = OMAP2_SRAM_PA; 165 omap_sram_start = OMAP2_SRAM_PA;
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c
index 51033a4503c3..d3bf17cd36f3 100644
--- a/arch/arm/plat-omap/usb.c
+++ b/arch/arm/plat-omap/usb.c
@@ -137,7 +137,13 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
137 if (is_device) { 137 if (is_device) {
138 if (cpu_is_omap24xx()) 138 if (cpu_is_omap24xx())
139 omap_cfg_reg(J20_24XX_USB0_PUEN); 139 omap_cfg_reg(J20_24XX_USB0_PUEN);
140 else 140 else if (cpu_is_omap7xx()) {
141 omap_cfg_reg(AA17_7XX_USB_DM);
142 omap_cfg_reg(W16_7XX_USB_PU_EN);
143 omap_cfg_reg(W17_7XX_USB_VBUSI);
144 omap_cfg_reg(W18_7XX_USB_DMCK_OUT);
145 omap_cfg_reg(W19_7XX_USB_DCRST);
146 } else
141 omap_cfg_reg(W4_USB_PUEN); 147 omap_cfg_reg(W4_USB_PUEN);
142 } 148 }
143 149