aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-09-21 11:02:24 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-09-21 11:02:30 -0400
commit28f9f19db9dda54c851d5689539d86f6fc008773 (patch)
tree469f5d7b24871b6fe001b7ad9acac859405f4822
parent40262b2b6efac507005a2c981175266bf81152a7 (diff)
parent52a7a1cec88acdaf3f8b36a6b1fe904f6eca7ee5 (diff)
Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
-rw-r--r--MAINTAINERS8
-rw-r--r--arch/arm/configs/littleton_defconfig783
-rw-r--r--arch/arm/configs/pxa3xx_defconfig1332
-rw-r--r--arch/arm/configs/xcep_defconfig1129
-rw-r--r--arch/arm/configs/zylonite_defconfig736
-rw-r--r--arch/arm/include/asm/cputype.h5
-rw-r--r--arch/arm/mach-pxa/Kconfig36
-rw-r--r--arch/arm/mach-pxa/Makefile4
-rw-r--r--arch/arm/mach-pxa/balloon3.c361
-rw-r--r--arch/arm/mach-pxa/clock.h1
-rw-r--r--arch/arm/mach-pxa/cm-x270.c146
-rw-r--r--arch/arm/mach-pxa/cm-x300.c71
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c1
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c33
-rw-r--r--arch/arm/mach-pxa/colibri-pxa3xx.c52
-rw-r--r--arch/arm/mach-pxa/corgi.c233
-rw-r--r--arch/arm/mach-pxa/csb726.c54
-rw-r--r--arch/arm/mach-pxa/devices.c27
-rw-r--r--arch/arm/mach-pxa/devices.h2
-rw-r--r--arch/arm/mach-pxa/e740.c1
-rw-r--r--arch/arm/mach-pxa/e750.c1
-rw-r--r--arch/arm/mach-pxa/em-x270.c45
-rw-r--r--arch/arm/mach-pxa/eseries.c39
-rw-r--r--arch/arm/mach-pxa/gumstix.c5
-rw-r--r--arch/arm/mach-pxa/hx4700.c65
-rw-r--r--arch/arm/mach-pxa/idp.c5
-rw-r--r--arch/arm/mach-pxa/imote2.c3
-rw-r--r--arch/arm/mach-pxa/include/mach/balloon3.h134
-rw-r--r--arch/arm/mach-pxa/include/mach/colibri.h6
-rw-r--r--arch/arm/mach-pxa/include/mach/entry-macro.S25
-rw-r--r--arch/arm/mach-pxa/include/mach/hardware.h17
-rw-r--r--arch/arm/mach-pxa/include/mach/irda.h2
-rw-r--r--arch/arm/mach-pxa/include/mach/irqs.h42
-rw-r--r--arch/arm/mach-pxa/include/mach/mfp.h301
-rw-r--r--arch/arm/mach-pxa/include/mach/mmc.h5
-rw-r--r--arch/arm/mach-pxa/include/mach/palmtc.h86
-rw-r--r--arch/arm/mach-pxa/include/mach/palmtx.h5
-rw-r--r--arch/arm/mach-pxa/include/mach/pxa3xx-regs.h4
-rw-r--r--arch/arm/mach-pxa/include/mach/pxafb.h3
-rw-r--r--arch/arm/mach-pxa/include/mach/regs-intc.h11
-rw-r--r--arch/arm/mach-pxa/include/mach/uncompress.h2
-rw-r--r--arch/arm/mach-pxa/irq.c8
-rw-r--r--arch/arm/mach-pxa/littleton.c43
-rw-r--r--arch/arm/mach-pxa/lubbock.c18
-rw-r--r--arch/arm/mach-pxa/magician.c59
-rw-r--r--arch/arm/mach-pxa/mainstone.c16
-rw-r--r--arch/arm/mach-pxa/mioa701.c84
-rw-r--r--arch/arm/mach-pxa/palmld.c143
-rw-r--r--arch/arm/mach-pxa/palmt5.c111
-rw-r--r--arch/arm/mach-pxa/palmtc.c436
-rw-r--r--arch/arm/mach-pxa/palmte2.c110
-rw-r--r--arch/arm/mach-pxa/palmtx.c225
-rw-r--r--arch/arm/mach-pxa/palmz72.c116
-rw-r--r--arch/arm/mach-pxa/pcm990-baseboard.c67
-rw-r--r--arch/arm/mach-pxa/poodle.c80
-rw-r--r--arch/arm/mach-pxa/pxa2xx.c1
-rw-r--r--arch/arm/mach-pxa/pxa300.c2
-rw-r--r--arch/arm/mach-pxa/pxa320.c2
-rw-r--r--arch/arm/mach-pxa/pxa930.c19
-rw-r--r--arch/arm/mach-pxa/spitz.c237
-rw-r--r--arch/arm/mach-pxa/tosa.c91
-rw-r--r--arch/arm/mach-pxa/treo680.c159
-rw-r--r--arch/arm/mach-pxa/trizeps4.c4
-rw-r--r--arch/arm/mach-pxa/xcep.c187
-rw-r--r--arch/arm/mach-pxa/zylonite.c3
-rw-r--r--arch/arm/plat-pxa/dma.c281
-rw-r--r--arch/arm/plat-pxa/include/plat/mfp.h73
-rw-r--r--arch/arm/plat-pxa/mfp.c3
-rw-r--r--drivers/i2c/busses/Kconfig4
-rw-r--r--drivers/mmc/host/pxamci.c104
-rw-r--r--drivers/net/irda/pxaficp_ir.c47
-rw-r--r--drivers/pcmcia/Makefile1
-rw-r--r--drivers/pcmcia/pxa2xx_base.c18
-rw-r--r--drivers/pcmcia/pxa2xx_palmtc.c230
-rw-r--r--drivers/rtc/rtc-pxa.c27
-rw-r--r--drivers/rtc/rtc-sa1100.c23
-rw-r--r--drivers/serial/pxa.c20
-rw-r--r--drivers/spi/pxa2xx_spi.c30
-rw-r--r--drivers/usb/host/ohci-pxa27x.c30
-rw-r--r--drivers/video/backlight/da903x_bl.c20
-rw-r--r--drivers/video/pxafb.c32
-rw-r--r--include/linux/fb.h1
-rw-r--r--sound/arm/pxa2xx-ac97.c20
83 files changed, 5606 insertions, 3400 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 837b5985ac40..10e4f106fa93 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -738,18 +738,22 @@ M: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
738M: Dirk Opfer <dirk@opfer-online.de> 738M: Dirk Opfer <dirk@opfer-online.de>
739S: Maintained 739S: Maintained
740 740
741ARM/PALMTX,PALMT5,PALMLD,PALMTE2 SUPPORT 741ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
742M: Marek Vasut <marek.vasut@gmail.com> 742P: Marek Vasut
743M: marek.vasut@gmail.com
744L: linux-arm-kernel@lists.infradead.org
743W: http://hackndev.com 745W: http://hackndev.com
744S: Maintained 746S: Maintained
745 747
746ARM/PALM TREO 680 SUPPORT 748ARM/PALM TREO 680 SUPPORT
747M: Tomas Cech <sleep_walker@suse.cz> 749M: Tomas Cech <sleep_walker@suse.cz>
750L: linux-arm-kernel@lists.infradead.org
748W: http://hackndev.com 751W: http://hackndev.com
749S: Maintained 752S: Maintained
750 753
751ARM/PALMZ72 SUPPORT 754ARM/PALMZ72 SUPPORT
752M: Sergey Lapin <slapin@ossfans.org> 755M: Sergey Lapin <slapin@ossfans.org>
756L: linux-arm-kernel@lists.infradead.org
753W: http://hackndev.com 757W: http://hackndev.com
754S: Maintained 758S: Maintained
755 759
diff --git a/arch/arm/configs/littleton_defconfig b/arch/arm/configs/littleton_defconfig
deleted file mode 100644
index 1db496908052..000000000000
--- a/arch/arm/configs/littleton_defconfig
+++ /dev/null
@@ -1,783 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc5
4# Fri Dec 21 11:06:19 2007
5#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ZONE_DMA=y
25CONFIG_ARCH_MTD_XIP=y
26CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
28
29#
30# General setup
31#
32CONFIG_EXPERIMENTAL=y
33CONFIG_BROKEN_ON_SMP=y
34CONFIG_LOCK_KERNEL=y
35CONFIG_INIT_ENV_ARG_LIMIT=32
36CONFIG_LOCALVERSION=""
37CONFIG_LOCALVERSION_AUTO=y
38CONFIG_SWAP=y
39CONFIG_SYSVIPC=y
40CONFIG_SYSVIPC_SYSCTL=y
41# CONFIG_POSIX_MQUEUE is not set
42# CONFIG_BSD_PROCESS_ACCT is not set
43# CONFIG_TASKSTATS is not set
44# CONFIG_USER_NS is not set
45# CONFIG_PID_NS is not set
46# CONFIG_AUDIT is not set
47# CONFIG_IKCONFIG is not set
48CONFIG_LOG_BUF_SHIFT=14
49# CONFIG_CGROUPS is not set
50CONFIG_FAIR_GROUP_SCHED=y
51CONFIG_FAIR_USER_SCHED=y
52# CONFIG_FAIR_CGROUP_SCHED is not set
53CONFIG_SYSFS_DEPRECATED=y
54# CONFIG_RELAY is not set
55CONFIG_BLK_DEV_INITRD=y
56CONFIG_INITRAMFS_SOURCE=""
57CONFIG_CC_OPTIMIZE_FOR_SIZE=y
58CONFIG_SYSCTL=y
59# CONFIG_EMBEDDED is not set
60CONFIG_UID16=y
61CONFIG_SYSCTL_SYSCALL=y
62CONFIG_KALLSYMS=y
63# CONFIG_KALLSYMS_ALL is not set
64# CONFIG_KALLSYMS_EXTRA_PASS is not set
65CONFIG_HOTPLUG=y
66CONFIG_PRINTK=y
67CONFIG_BUG=y
68CONFIG_ELF_CORE=y
69CONFIG_BASE_FULL=y
70CONFIG_FUTEX=y
71CONFIG_ANON_INODES=y
72CONFIG_EPOLL=y
73CONFIG_SIGNALFD=y
74CONFIG_EVENTFD=y
75CONFIG_SHMEM=y
76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_SLAB=y
78# CONFIG_SLUB is not set
79# CONFIG_SLOB is not set
80CONFIG_RT_MUTEXES=y
81# CONFIG_TINY_SHMEM is not set
82CONFIG_BASE_SMALL=0
83CONFIG_MODULES=y
84CONFIG_MODULE_UNLOAD=y
85CONFIG_MODULE_FORCE_UNLOAD=y
86# CONFIG_MODVERSIONS is not set
87# CONFIG_MODULE_SRCVERSION_ALL is not set
88# CONFIG_KMOD is not set
89CONFIG_BLOCK=y
90# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set
92# CONFIG_LSF is not set
93# CONFIG_BLK_DEV_BSG is not set
94
95#
96# IO Schedulers
97#
98CONFIG_IOSCHED_NOOP=y
99CONFIG_IOSCHED_AS=y
100CONFIG_IOSCHED_DEADLINE=y
101CONFIG_IOSCHED_CFQ=y
102# CONFIG_DEFAULT_AS is not set
103# CONFIG_DEFAULT_DEADLINE is not set
104CONFIG_DEFAULT_CFQ=y
105# CONFIG_DEFAULT_NOOP is not set
106CONFIG_DEFAULT_IOSCHED="cfq"
107
108#
109# System Type
110#
111# CONFIG_ARCH_AAEC2000 is not set
112# CONFIG_ARCH_INTEGRATOR is not set
113# CONFIG_ARCH_REALVIEW is not set
114# CONFIG_ARCH_VERSATILE is not set
115# CONFIG_ARCH_AT91 is not set
116# CONFIG_ARCH_CLPS7500 is not set
117# CONFIG_ARCH_CLPS711X is not set
118# CONFIG_ARCH_CO285 is not set
119# CONFIG_ARCH_EBSA110 is not set
120# CONFIG_ARCH_EP93XX is not set
121# CONFIG_ARCH_FOOTBRIDGE is not set
122# CONFIG_ARCH_NETX is not set
123# CONFIG_ARCH_H720X is not set
124# CONFIG_ARCH_IMX is not set
125# CONFIG_ARCH_IOP13XX is not set
126# CONFIG_ARCH_IOP32X is not set
127# CONFIG_ARCH_IOP33X is not set
128# CONFIG_ARCH_IXP23XX is not set
129# CONFIG_ARCH_IXP2000 is not set
130# CONFIG_ARCH_IXP4XX is not set
131# CONFIG_ARCH_L7200 is not set
132# CONFIG_ARCH_KS8695 is not set
133# CONFIG_ARCH_NS9XXX is not set
134# CONFIG_ARCH_MXC is not set
135# CONFIG_ARCH_PNX4008 is not set
136CONFIG_ARCH_PXA=y
137# CONFIG_ARCH_RPC is not set
138# CONFIG_ARCH_SA1100 is not set
139# CONFIG_ARCH_S3C2410 is not set
140# CONFIG_ARCH_SHARK is not set
141# CONFIG_ARCH_LH7A40X is not set
142# CONFIG_ARCH_DAVINCI is not set
143# CONFIG_ARCH_OMAP is not set
144
145#
146# Intel PXA2xx/PXA3xx Implementations
147#
148
149#
150# Supported PXA3xx Processor Variants
151#
152CONFIG_CPU_PXA300=y
153CONFIG_CPU_PXA310=y
154# CONFIG_CPU_PXA320 is not set
155# CONFIG_ARCH_LUBBOCK is not set
156# CONFIG_MACH_LOGICPD_PXA270 is not set
157# CONFIG_MACH_MAINSTONE is not set
158# CONFIG_ARCH_PXA_IDP is not set
159# CONFIG_PXA_SHARPSL is not set
160# CONFIG_MACH_TRIZEPS4 is not set
161# CONFIG_MACH_EM_X270 is not set
162# CONFIG_MACH_ZYLONITE is not set
163CONFIG_MACH_LITTLETON=y
164# CONFIG_MACH_ARMCORE is not set
165CONFIG_PXA3xx=y
166CONFIG_PXA_SSP=y
167
168#
169# Boot options
170#
171
172#
173# Power management
174#
175
176#
177# Processor Type
178#
179CONFIG_CPU_32=y
180CONFIG_CPU_XSC3=y
181CONFIG_CPU_32v5=y
182CONFIG_CPU_ABRT_EV5T=y
183CONFIG_CPU_CACHE_VIVT=y
184CONFIG_CPU_TLB_V4WBI=y
185CONFIG_CPU_CP15=y
186CONFIG_CPU_CP15_MMU=y
187CONFIG_IO_36=y
188
189#
190# Processor Features
191#
192# CONFIG_ARM_THUMB is not set
193# CONFIG_CPU_DCACHE_DISABLE is not set
194# CONFIG_CPU_BPREDICT_DISABLE is not set
195# CONFIG_OUTER_CACHE is not set
196CONFIG_IWMMXT=y
197
198#
199# Bus support
200#
201# CONFIG_PCI_SYSCALL is not set
202# CONFIG_ARCH_SUPPORTS_MSI is not set
203# CONFIG_PCCARD is not set
204
205#
206# Kernel Features
207#
208CONFIG_TICK_ONESHOT=y
209# CONFIG_NO_HZ is not set
210# CONFIG_HIGH_RES_TIMERS is not set
211CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
212CONFIG_PREEMPT=y
213CONFIG_HZ=100
214CONFIG_AEABI=y
215CONFIG_OABI_COMPAT=y
216# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
217CONFIG_SELECT_MEMORY_MODEL=y
218CONFIG_FLATMEM_MANUAL=y
219# CONFIG_DISCONTIGMEM_MANUAL is not set
220# CONFIG_SPARSEMEM_MANUAL is not set
221CONFIG_FLATMEM=y
222CONFIG_FLAT_NODE_MEM_MAP=y
223# CONFIG_SPARSEMEM_STATIC is not set
224# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
225CONFIG_SPLIT_PTLOCK_CPUS=4096
226# CONFIG_RESOURCES_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=1
228CONFIG_BOUNCE=y
229CONFIG_VIRT_TO_BUS=y
230CONFIG_ALIGNMENT_TRAP=y
231
232#
233# Boot options
234#
235CONFIG_ZBOOT_ROM_TEXT=0x0
236CONFIG_ZBOOT_ROM_BSS=0x0
237CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS2,38400 mem=64M"
238# CONFIG_XIP_KERNEL is not set
239# CONFIG_KEXEC is not set
240
241#
242# CPU Frequency scaling
243#
244# CONFIG_CPU_FREQ is not set
245
246#
247# Floating point emulation
248#
249
250#
251# At least one emulation must be selected
252#
253CONFIG_FPE_NWFPE=y
254# CONFIG_FPE_NWFPE_XP is not set
255# CONFIG_FPE_FASTFPE is not set
256
257#
258# Userspace binary formats
259#
260CONFIG_BINFMT_ELF=y
261# CONFIG_BINFMT_AOUT is not set
262# CONFIG_BINFMT_MISC is not set
263
264#
265# Power management options
266#
267# CONFIG_PM is not set
268CONFIG_SUSPEND_UP_POSSIBLE=y
269
270#
271# Networking
272#
273CONFIG_NET=y
274
275#
276# Networking options
277#
278CONFIG_PACKET=y
279# CONFIG_PACKET_MMAP is not set
280CONFIG_UNIX=y
281CONFIG_XFRM=y
282# CONFIG_XFRM_USER is not set
283# CONFIG_XFRM_SUB_POLICY is not set
284# CONFIG_XFRM_MIGRATE is not set
285# CONFIG_NET_KEY is not set
286CONFIG_INET=y
287# CONFIG_IP_MULTICAST is not set
288# CONFIG_IP_ADVANCED_ROUTER is not set
289CONFIG_IP_FIB_HASH=y
290CONFIG_IP_PNP=y
291# CONFIG_IP_PNP_DHCP is not set
292# CONFIG_IP_PNP_BOOTP is not set
293# CONFIG_IP_PNP_RARP is not set
294# CONFIG_NET_IPIP is not set
295# CONFIG_NET_IPGRE is not set
296# CONFIG_ARPD is not set
297# CONFIG_SYN_COOKIES is not set
298# CONFIG_INET_AH is not set
299# CONFIG_INET_ESP is not set
300# CONFIG_INET_IPCOMP is not set
301# CONFIG_INET_XFRM_TUNNEL is not set
302# CONFIG_INET_TUNNEL is not set
303CONFIG_INET_XFRM_MODE_TRANSPORT=y
304CONFIG_INET_XFRM_MODE_TUNNEL=y
305CONFIG_INET_XFRM_MODE_BEET=y
306# CONFIG_INET_LRO is not set
307CONFIG_INET_DIAG=y
308CONFIG_INET_TCP_DIAG=y
309# CONFIG_TCP_CONG_ADVANCED is not set
310CONFIG_TCP_CONG_CUBIC=y
311CONFIG_DEFAULT_TCP_CONG="cubic"
312# CONFIG_TCP_MD5SIG is not set
313# CONFIG_IPV6 is not set
314# CONFIG_INET6_XFRM_TUNNEL is not set
315# CONFIG_INET6_TUNNEL is not set
316# CONFIG_NETWORK_SECMARK is not set
317# CONFIG_NETFILTER is not set
318# CONFIG_IP_DCCP is not set
319# CONFIG_IP_SCTP is not set
320# CONFIG_TIPC is not set
321# CONFIG_ATM is not set
322# CONFIG_BRIDGE is not set
323# CONFIG_VLAN_8021Q is not set
324# CONFIG_DECNET is not set
325# CONFIG_LLC2 is not set
326# CONFIG_IPX is not set
327# CONFIG_ATALK is not set
328# CONFIG_X25 is not set
329# CONFIG_LAPB is not set
330# CONFIG_ECONET is not set
331# CONFIG_WAN_ROUTER is not set
332# CONFIG_NET_SCHED is not set
333
334#
335# Network testing
336#
337# CONFIG_NET_PKTGEN is not set
338# CONFIG_HAMRADIO is not set
339# CONFIG_IRDA is not set
340# CONFIG_BT is not set
341# CONFIG_AF_RXRPC is not set
342
343#
344# Wireless
345#
346# CONFIG_CFG80211 is not set
347# CONFIG_WIRELESS_EXT is not set
348# CONFIG_MAC80211 is not set
349# CONFIG_IEEE80211 is not set
350# CONFIG_RFKILL is not set
351# CONFIG_NET_9P is not set
352
353#
354# Device Drivers
355#
356
357#
358# Generic Driver Options
359#
360CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
361# CONFIG_STANDALONE is not set
362# CONFIG_PREVENT_FIRMWARE_BUILD is not set
363CONFIG_FW_LOADER=y
364# CONFIG_DEBUG_DRIVER is not set
365# CONFIG_DEBUG_DEVRES is not set
366# CONFIG_SYS_HYPERVISOR is not set
367# CONFIG_CONNECTOR is not set
368# CONFIG_MTD is not set
369# CONFIG_PARPORT is not set
370# CONFIG_BLK_DEV is not set
371# CONFIG_MISC_DEVICES is not set
372# CONFIG_IDE is not set
373
374#
375# SCSI device support
376#
377# CONFIG_RAID_ATTRS is not set
378# CONFIG_SCSI is not set
379# CONFIG_SCSI_DMA is not set
380# CONFIG_SCSI_NETLINK is not set
381# CONFIG_ATA is not set
382# CONFIG_MD is not set
383CONFIG_NETDEVICES=y
384# CONFIG_NETDEVICES_MULTIQUEUE is not set
385# CONFIG_DUMMY is not set
386# CONFIG_BONDING is not set
387# CONFIG_MACVLAN is not set
388# CONFIG_EQUALIZER is not set
389# CONFIG_TUN is not set
390# CONFIG_VETH is not set
391# CONFIG_PHYLIB is not set
392CONFIG_NET_ETHERNET=y
393CONFIG_MII=y
394# CONFIG_AX88796 is not set
395CONFIG_SMC91X=y
396# CONFIG_DM9000 is not set
397# CONFIG_SMC911X is not set
398# CONFIG_IBM_NEW_EMAC_ZMII is not set
399# CONFIG_IBM_NEW_EMAC_RGMII is not set
400# CONFIG_IBM_NEW_EMAC_TAH is not set
401# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
402# CONFIG_B44 is not set
403# CONFIG_NETDEV_1000 is not set
404# CONFIG_NETDEV_10000 is not set
405
406#
407# Wireless LAN
408#
409# CONFIG_WLAN_PRE80211 is not set
410# CONFIG_WLAN_80211 is not set
411# CONFIG_WAN is not set
412# CONFIG_PPP is not set
413# CONFIG_SLIP is not set
414# CONFIG_SHAPER is not set
415# CONFIG_NETCONSOLE is not set
416# CONFIG_NETPOLL is not set
417# CONFIG_NET_POLL_CONTROLLER is not set
418# CONFIG_ISDN is not set
419
420#
421# Input device support
422#
423CONFIG_INPUT=y
424# CONFIG_INPUT_FF_MEMLESS is not set
425# CONFIG_INPUT_POLLDEV is not set
426
427#
428# Userland interfaces
429#
430CONFIG_INPUT_MOUSEDEV=y
431# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
432CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
433CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
434# CONFIG_INPUT_JOYDEV is not set
435# CONFIG_INPUT_EVDEV is not set
436# CONFIG_INPUT_EVBUG is not set
437
438#
439# Input Device Drivers
440#
441# CONFIG_INPUT_KEYBOARD is not set
442# CONFIG_INPUT_MOUSE is not set
443# CONFIG_INPUT_JOYSTICK is not set
444# CONFIG_INPUT_TABLET is not set
445# CONFIG_INPUT_TOUCHSCREEN is not set
446# CONFIG_INPUT_MISC is not set
447
448#
449# Hardware I/O ports
450#
451# CONFIG_SERIO is not set
452# CONFIG_GAMEPORT is not set
453
454#
455# Character devices
456#
457CONFIG_VT=y
458CONFIG_VT_CONSOLE=y
459CONFIG_HW_CONSOLE=y
460# CONFIG_VT_HW_CONSOLE_BINDING is not set
461# CONFIG_SERIAL_NONSTANDARD is not set
462
463#
464# Serial drivers
465#
466# CONFIG_SERIAL_8250 is not set
467
468#
469# Non-8250 serial port support
470#
471CONFIG_SERIAL_PXA=y
472CONFIG_SERIAL_PXA_CONSOLE=y
473CONFIG_SERIAL_CORE=y
474CONFIG_SERIAL_CORE_CONSOLE=y
475CONFIG_UNIX98_PTYS=y
476# CONFIG_LEGACY_PTYS is not set
477# CONFIG_IPMI_HANDLER is not set
478# CONFIG_HW_RANDOM is not set
479# CONFIG_NVRAM is not set
480# CONFIG_R3964 is not set
481# CONFIG_RAW_DRIVER is not set
482# CONFIG_TCG_TPM is not set
483# CONFIG_I2C is not set
484
485#
486# SPI support
487#
488# CONFIG_SPI is not set
489# CONFIG_SPI_MASTER is not set
490# CONFIG_W1 is not set
491# CONFIG_POWER_SUPPLY is not set
492# CONFIG_HWMON is not set
493# CONFIG_WATCHDOG is not set
494
495#
496# Sonics Silicon Backplane
497#
498CONFIG_SSB_POSSIBLE=y
499# CONFIG_SSB is not set
500
501#
502# Multifunction device drivers
503#
504# CONFIG_MFD_SM501 is not set
505
506#
507# Multimedia devices
508#
509# CONFIG_VIDEO_DEV is not set
510# CONFIG_DVB_CORE is not set
511# CONFIG_DAB is not set
512
513#
514# Graphics support
515#
516# CONFIG_VGASTATE is not set
517# CONFIG_VIDEO_OUTPUT_CONTROL is not set
518CONFIG_FB=y
519# CONFIG_FIRMWARE_EDID is not set
520# CONFIG_FB_DDC is not set
521CONFIG_FB_CFB_FILLRECT=y
522CONFIG_FB_CFB_COPYAREA=y
523CONFIG_FB_CFB_IMAGEBLIT=y
524# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
525# CONFIG_FB_SYS_FILLRECT is not set
526# CONFIG_FB_SYS_COPYAREA is not set
527# CONFIG_FB_SYS_IMAGEBLIT is not set
528# CONFIG_FB_SYS_FOPS is not set
529CONFIG_FB_DEFERRED_IO=y
530# CONFIG_FB_SVGALIB is not set
531# CONFIG_FB_MACMODES is not set
532# CONFIG_FB_BACKLIGHT is not set
533# CONFIG_FB_MODE_HELPERS is not set
534# CONFIG_FB_TILEBLITTING is not set
535
536#
537# Frame buffer hardware drivers
538#
539# CONFIG_FB_S1D13XXX is not set
540CONFIG_FB_PXA=y
541# CONFIG_FB_PXA_PARAMETERS is not set
542# CONFIG_FB_MBX is not set
543# CONFIG_FB_VIRTUAL is not set
544# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
545
546#
547# Display device support
548#
549# CONFIG_DISPLAY_SUPPORT is not set
550
551#
552# Console display driver support
553#
554# CONFIG_VGA_CONSOLE is not set
555CONFIG_DUMMY_CONSOLE=y
556CONFIG_FRAMEBUFFER_CONSOLE=y
557# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
558# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
559CONFIG_FONTS=y
560# CONFIG_FONT_8x8 is not set
561CONFIG_FONT_8x16=y
562# CONFIG_FONT_6x11 is not set
563# CONFIG_FONT_7x14 is not set
564# CONFIG_FONT_PEARL_8x8 is not set
565# CONFIG_FONT_ACORN_8x8 is not set
566# CONFIG_FONT_MINI_4x6 is not set
567# CONFIG_FONT_SUN8x16 is not set
568# CONFIG_FONT_SUN12x22 is not set
569# CONFIG_FONT_10x18 is not set
570CONFIG_LOGO=y
571CONFIG_LOGO_LINUX_MONO=y
572CONFIG_LOGO_LINUX_VGA16=y
573CONFIG_LOGO_LINUX_CLUT224=y
574
575#
576# Sound
577#
578# CONFIG_SOUND is not set
579# CONFIG_HID_SUPPORT is not set
580# CONFIG_USB_SUPPORT is not set
581# CONFIG_MMC is not set
582# CONFIG_NEW_LEDS is not set
583CONFIG_RTC_LIB=y
584# CONFIG_RTC_CLASS is not set
585
586#
587# File systems
588#
589# CONFIG_EXT2_FS is not set
590# CONFIG_EXT3_FS is not set
591# CONFIG_EXT4DEV_FS is not set
592# CONFIG_REISERFS_FS is not set
593# CONFIG_JFS_FS is not set
594CONFIG_FS_POSIX_ACL=y
595# CONFIG_XFS_FS is not set
596# CONFIG_GFS2_FS is not set
597# CONFIG_OCFS2_FS is not set
598# CONFIG_MINIX_FS is not set
599# CONFIG_ROMFS_FS is not set
600# CONFIG_INOTIFY is not set
601# CONFIG_QUOTA is not set
602# CONFIG_DNOTIFY is not set
603# CONFIG_AUTOFS_FS is not set
604# CONFIG_AUTOFS4_FS is not set
605# CONFIG_FUSE_FS is not set
606
607#
608# CD-ROM/DVD Filesystems
609#
610# CONFIG_ISO9660_FS is not set
611# CONFIG_UDF_FS is not set
612
613#
614# DOS/FAT/NT Filesystems
615#
616# CONFIG_MSDOS_FS is not set
617# CONFIG_VFAT_FS is not set
618# CONFIG_NTFS_FS is not set
619
620#
621# Pseudo filesystems
622#
623CONFIG_PROC_FS=y
624CONFIG_PROC_SYSCTL=y
625CONFIG_SYSFS=y
626# CONFIG_TMPFS is not set
627# CONFIG_HUGETLB_PAGE is not set
628# CONFIG_CONFIGFS_FS is not set
629
630#
631# Miscellaneous filesystems
632#
633# CONFIG_ADFS_FS is not set
634# CONFIG_AFFS_FS is not set
635# CONFIG_HFS_FS is not set
636# CONFIG_HFSPLUS_FS is not set
637# CONFIG_BEFS_FS is not set
638# CONFIG_BFS_FS is not set
639# CONFIG_EFS_FS is not set
640# CONFIG_CRAMFS is not set
641# CONFIG_VXFS_FS is not set
642# CONFIG_HPFS_FS is not set
643# CONFIG_QNX4FS_FS is not set
644# CONFIG_SYSV_FS is not set
645# CONFIG_UFS_FS is not set
646CONFIG_NETWORK_FILESYSTEMS=y
647CONFIG_NFS_FS=y
648CONFIG_NFS_V3=y
649CONFIG_NFS_V3_ACL=y
650CONFIG_NFS_V4=y
651CONFIG_NFS_DIRECTIO=y
652# CONFIG_NFSD is not set
653CONFIG_ROOT_NFS=y
654CONFIG_LOCKD=y
655CONFIG_LOCKD_V4=y
656CONFIG_NFS_ACL_SUPPORT=y
657CONFIG_NFS_COMMON=y
658CONFIG_SUNRPC=y
659CONFIG_SUNRPC_GSS=y
660# CONFIG_SUNRPC_BIND34 is not set
661CONFIG_RPCSEC_GSS_KRB5=y
662# CONFIG_RPCSEC_GSS_SPKM3 is not set
663# CONFIG_SMB_FS is not set
664# CONFIG_CIFS is not set
665# CONFIG_NCP_FS is not set
666# CONFIG_CODA_FS is not set
667# CONFIG_AFS_FS is not set
668
669#
670# Partition Types
671#
672# CONFIG_PARTITION_ADVANCED is not set
673CONFIG_MSDOS_PARTITION=y
674# CONFIG_NLS is not set
675# CONFIG_DLM is not set
676# CONFIG_INSTRUMENTATION is not set
677
678#
679# Kernel hacking
680#
681CONFIG_PRINTK_TIME=y
682CONFIG_ENABLE_WARN_DEPRECATED=y
683CONFIG_ENABLE_MUST_CHECK=y
684CONFIG_MAGIC_SYSRQ=y
685# CONFIG_UNUSED_SYMBOLS is not set
686# CONFIG_DEBUG_FS is not set
687# CONFIG_HEADERS_CHECK is not set
688CONFIG_DEBUG_KERNEL=y
689# CONFIG_DEBUG_SHIRQ is not set
690CONFIG_DETECT_SOFTLOCKUP=y
691CONFIG_SCHED_DEBUG=y
692# CONFIG_SCHEDSTATS is not set
693# CONFIG_TIMER_STATS is not set
694# CONFIG_DEBUG_SLAB is not set
695# CONFIG_DEBUG_PREEMPT is not set
696# CONFIG_DEBUG_RT_MUTEXES is not set
697# CONFIG_RT_MUTEX_TESTER is not set
698# CONFIG_DEBUG_SPINLOCK is not set
699# CONFIG_DEBUG_MUTEXES is not set
700# CONFIG_DEBUG_LOCK_ALLOC is not set
701# CONFIG_PROVE_LOCKING is not set
702# CONFIG_LOCK_STAT is not set
703# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
704# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
705# CONFIG_DEBUG_KOBJECT is not set
706CONFIG_DEBUG_BUGVERBOSE=y
707CONFIG_DEBUG_INFO=y
708# CONFIG_DEBUG_VM is not set
709# CONFIG_DEBUG_LIST is not set
710# CONFIG_DEBUG_SG is not set
711CONFIG_FRAME_POINTER=y
712CONFIG_FORCED_INLINING=y
713# CONFIG_BOOT_PRINTK_DELAY is not set
714# CONFIG_RCU_TORTURE_TEST is not set
715# CONFIG_FAULT_INJECTION is not set
716# CONFIG_SAMPLES is not set
717CONFIG_DEBUG_USER=y
718CONFIG_DEBUG_ERRORS=y
719CONFIG_DEBUG_LL=y
720# CONFIG_DEBUG_ICEDCC is not set
721
722#
723# Security options
724#
725# CONFIG_KEYS is not set
726# CONFIG_SECURITY is not set
727# CONFIG_SECURITY_FILE_CAPABILITIES is not set
728CONFIG_CRYPTO=y
729CONFIG_CRYPTO_ALGAPI=y
730CONFIG_CRYPTO_BLKCIPHER=y
731CONFIG_CRYPTO_MANAGER=y
732# CONFIG_CRYPTO_HMAC is not set
733# CONFIG_CRYPTO_XCBC is not set
734# CONFIG_CRYPTO_NULL is not set
735# CONFIG_CRYPTO_MD4 is not set
736CONFIG_CRYPTO_MD5=y
737# CONFIG_CRYPTO_SHA1 is not set
738# CONFIG_CRYPTO_SHA256 is not set
739# CONFIG_CRYPTO_SHA512 is not set
740# CONFIG_CRYPTO_WP512 is not set
741# CONFIG_CRYPTO_TGR192 is not set
742# CONFIG_CRYPTO_GF128MUL is not set
743# CONFIG_CRYPTO_ECB is not set
744CONFIG_CRYPTO_CBC=y
745# CONFIG_CRYPTO_PCBC is not set
746# CONFIG_CRYPTO_LRW is not set
747# CONFIG_CRYPTO_XTS is not set
748# CONFIG_CRYPTO_CRYPTD is not set
749CONFIG_CRYPTO_DES=y
750# CONFIG_CRYPTO_FCRYPT is not set
751# CONFIG_CRYPTO_BLOWFISH is not set
752# CONFIG_CRYPTO_TWOFISH is not set
753# CONFIG_CRYPTO_SERPENT is not set
754# CONFIG_CRYPTO_AES is not set
755# CONFIG_CRYPTO_CAST5 is not set
756# CONFIG_CRYPTO_CAST6 is not set
757# CONFIG_CRYPTO_TEA is not set
758# CONFIG_CRYPTO_ARC4 is not set
759# CONFIG_CRYPTO_KHAZAD is not set
760# CONFIG_CRYPTO_ANUBIS is not set
761# CONFIG_CRYPTO_SEED is not set
762# CONFIG_CRYPTO_DEFLATE is not set
763# CONFIG_CRYPTO_MICHAEL_MIC is not set
764# CONFIG_CRYPTO_CRC32C is not set
765# CONFIG_CRYPTO_CAMELLIA is not set
766# CONFIG_CRYPTO_TEST is not set
767# CONFIG_CRYPTO_AUTHENC is not set
768CONFIG_CRYPTO_HW=y
769
770#
771# Library routines
772#
773CONFIG_BITREVERSE=y
774CONFIG_CRC_CCITT=y
775# CONFIG_CRC16 is not set
776# CONFIG_CRC_ITU_T is not set
777CONFIG_CRC32=y
778# CONFIG_CRC7 is not set
779# CONFIG_LIBCRC32C is not set
780CONFIG_PLIST=y
781CONFIG_HAS_IOMEM=y
782CONFIG_HAS_IOPORT=y
783CONFIG_HAS_DMA=y
diff --git a/arch/arm/configs/pxa3xx_defconfig b/arch/arm/configs/pxa3xx_defconfig
new file mode 100644
index 000000000000..733b851e5b7e
--- /dev/null
+++ b/arch/arm/configs/pxa3xx_defconfig
@@ -0,0 +1,1332 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc1
4# Mon Jul 13 22:48:49 2009
5#
6CONFIG_ARM=y
7CONFIG_HAVE_PWM=y
8CONFIG_SYS_SUPPORTS_APM_EMULATION=y
9CONFIG_GENERIC_GPIO=y
10CONFIG_GENERIC_TIME=y
11CONFIG_GENERIC_CLOCKEVENTS=y
12CONFIG_MMU=y
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_HARDIRQS_SW_RESEND=y
19CONFIG_GENERIC_IRQ_PROBE=y
20CONFIG_RWSEM_GENERIC_SPINLOCK=y
21CONFIG_GENERIC_HWEIGHT=y
22CONFIG_GENERIC_CALIBRATE_DELAY=y
23CONFIG_ARCH_MTD_XIP=y
24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
25CONFIG_VECTORS_BASE=0xffff0000
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27CONFIG_CONSTRUCTORS=y
28
29#
30# General setup
31#
32CONFIG_EXPERIMENTAL=y
33CONFIG_BROKEN_ON_SMP=y
34CONFIG_LOCK_KERNEL=y
35CONFIG_INIT_ENV_ARG_LIMIT=32
36CONFIG_LOCALVERSION=""
37CONFIG_LOCALVERSION_AUTO=y
38CONFIG_SWAP=y
39CONFIG_SYSVIPC=y
40CONFIG_SYSVIPC_SYSCTL=y
41# CONFIG_POSIX_MQUEUE is not set
42# CONFIG_BSD_PROCESS_ACCT is not set
43# CONFIG_TASKSTATS is not set
44# CONFIG_AUDIT is not set
45
46#
47# RCU Subsystem
48#
49# CONFIG_CLASSIC_RCU is not set
50CONFIG_TREE_RCU=y
51# CONFIG_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
56# CONFIG_PREEMPT_RCU_TRACE is not set
57# CONFIG_IKCONFIG is not set
58CONFIG_LOG_BUF_SHIFT=18
59CONFIG_GROUP_SCHED=y
60CONFIG_FAIR_GROUP_SCHED=y
61# CONFIG_RT_GROUP_SCHED is not set
62CONFIG_USER_SCHED=y
63# CONFIG_CGROUP_SCHED is not set
64# CONFIG_CGROUPS is not set
65CONFIG_SYSFS_DEPRECATED=y
66CONFIG_SYSFS_DEPRECATED_V2=y
67# CONFIG_RELAY is not set
68CONFIG_NAMESPACES=y
69# CONFIG_UTS_NS is not set
70# CONFIG_IPC_NS is not set
71# CONFIG_USER_NS is not set
72# CONFIG_PID_NS is not set
73# CONFIG_NET_NS is not set
74# CONFIG_BLK_DEV_INITRD is not set
75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
77CONFIG_ANON_INODES=y
78# CONFIG_EMBEDDED is not set
79CONFIG_UID16=y
80CONFIG_SYSCTL_SYSCALL=y
81CONFIG_KALLSYMS=y
82CONFIG_KALLSYMS_ALL=y
83# CONFIG_KALLSYMS_EXTRA_PASS is not set
84CONFIG_HOTPLUG=y
85CONFIG_PRINTK=y
86CONFIG_BUG=y
87CONFIG_ELF_CORE=y
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# Performance Counters
99#
100CONFIG_VM_EVENT_COUNTERS=y
101# CONFIG_STRIP_ASM_SYMS is not set
102CONFIG_COMPAT_BRK=y
103CONFIG_SLAB=y
104# CONFIG_SLUB is not set
105# CONFIG_SLOB is not set
106# CONFIG_PROFILING is not set
107# CONFIG_MARKERS is not set
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_SLOW_WORK is not set
118CONFIG_HAVE_GENERIC_DMA_COHERENT=y
119CONFIG_SLABINFO=y
120CONFIG_RT_MUTEXES=y
121CONFIG_BASE_SMALL=0
122CONFIG_MODULES=y
123# CONFIG_MODULE_FORCE_LOAD is not set
124# CONFIG_MODULE_UNLOAD is not set
125# CONFIG_MODVERSIONS is not set
126# CONFIG_MODULE_SRCVERSION_ALL is not set
127CONFIG_BLOCK=y
128CONFIG_LBDAF=y
129# CONFIG_BLK_DEV_BSG is not set
130# CONFIG_BLK_DEV_INTEGRITY is not set
131
132#
133# IO Schedulers
134#
135CONFIG_IOSCHED_NOOP=y
136CONFIG_IOSCHED_AS=y
137CONFIG_IOSCHED_DEADLINE=y
138CONFIG_IOSCHED_CFQ=y
139# CONFIG_DEFAULT_AS is not set
140# CONFIG_DEFAULT_DEADLINE is not set
141CONFIG_DEFAULT_CFQ=y
142# CONFIG_DEFAULT_NOOP is not set
143CONFIG_DEFAULT_IOSCHED="cfq"
144# CONFIG_FREEZER is not set
145
146#
147# System Type
148#
149# CONFIG_ARCH_AAEC2000 is not set
150# CONFIG_ARCH_INTEGRATOR is not set
151# CONFIG_ARCH_REALVIEW is not set
152# CONFIG_ARCH_VERSATILE is not set
153# CONFIG_ARCH_AT91 is not set
154# CONFIG_ARCH_CLPS711X is not set
155# CONFIG_ARCH_GEMINI is not set
156# CONFIG_ARCH_EBSA110 is not set
157# CONFIG_ARCH_EP93XX is not set
158# CONFIG_ARCH_FOOTBRIDGE is not set
159# CONFIG_ARCH_MXC is not set
160# CONFIG_ARCH_STMP3XXX is not set
161# CONFIG_ARCH_NETX is not set
162# CONFIG_ARCH_H720X is not set
163# CONFIG_ARCH_IOP13XX is not set
164# CONFIG_ARCH_IOP32X is not set
165# CONFIG_ARCH_IOP33X is not set
166# CONFIG_ARCH_IXP23XX is not set
167# CONFIG_ARCH_IXP2000 is not set
168# CONFIG_ARCH_IXP4XX is not set
169# CONFIG_ARCH_L7200 is not set
170# CONFIG_ARCH_KIRKWOOD is not set
171# CONFIG_ARCH_LOKI is not set
172# CONFIG_ARCH_MV78XX0 is not set
173# CONFIG_ARCH_ORION5X is not set
174# CONFIG_ARCH_MMP is not set
175# CONFIG_ARCH_KS8695 is not set
176# CONFIG_ARCH_NS9XXX is not set
177# CONFIG_ARCH_W90X900 is not set
178# CONFIG_ARCH_PNX4008 is not set
179CONFIG_ARCH_PXA=y
180# CONFIG_ARCH_MSM is not set
181# CONFIG_ARCH_RPC is not set
182# CONFIG_ARCH_SA1100 is not set
183# CONFIG_ARCH_S3C2410 is not set
184# CONFIG_ARCH_S3C64XX is not set
185# CONFIG_ARCH_SHARK is not set
186# CONFIG_ARCH_LH7A40X is not set
187# CONFIG_ARCH_U300 is not set
188# CONFIG_ARCH_DAVINCI is not set
189# CONFIG_ARCH_OMAP is not set
190
191#
192# Intel PXA2xx/PXA3xx Implementations
193#
194
195#
196# Supported PXA3xx Processor Variants
197#
198CONFIG_CPU_PXA300=y
199CONFIG_CPU_PXA310=y
200CONFIG_CPU_PXA320=y
201CONFIG_CPU_PXA930=y
202CONFIG_CPU_PXA935=y
203# CONFIG_ARCH_GUMSTIX is not set
204# CONFIG_MACH_INTELMOTE2 is not set
205# CONFIG_MACH_STARGATE2 is not set
206# CONFIG_ARCH_LUBBOCK is not set
207# CONFIG_MACH_LOGICPD_PXA270 is not set
208# CONFIG_MACH_MAINSTONE is not set
209# CONFIG_MACH_MP900C is not set
210# CONFIG_ARCH_PXA_IDP is not set
211# CONFIG_PXA_SHARPSL is not set
212# CONFIG_ARCH_VIPER is not set
213# CONFIG_ARCH_PXA_ESERIES is not set
214# CONFIG_TRIZEPS_PXA is not set
215# CONFIG_MACH_H5000 is not set
216# CONFIG_MACH_EM_X270 is not set
217# CONFIG_MACH_EXEDA is not set
218# CONFIG_MACH_COLIBRI is not set
219# CONFIG_MACH_COLIBRI300 is not set
220# CONFIG_MACH_COLIBRI320 is not set
221CONFIG_MACH_ZYLONITE=y
222CONFIG_MACH_LITTLETON=y
223CONFIG_MACH_TAVOREVB=y
224CONFIG_MACH_SAAR=y
225# CONFIG_MACH_ARMCORE is not set
226# CONFIG_MACH_CM_X300 is not set
227# CONFIG_MACH_H4700 is not set
228# CONFIG_MACH_MAGICIAN is not set
229# CONFIG_MACH_HIMALAYA is not set
230# CONFIG_MACH_MIOA701 is not set
231# CONFIG_MACH_PCM027 is not set
232# CONFIG_ARCH_PXA_PALM is not set
233# CONFIG_MACH_CSB726 is not set
234# CONFIG_PXA_EZX is not set
235CONFIG_PXA3xx=y
236CONFIG_PXA_SSP=y
237CONFIG_PXA_HAVE_BOARD_IRQS=y
238CONFIG_PLAT_PXA=y
239
240#
241# Processor Type
242#
243CONFIG_CPU_32=y
244CONFIG_CPU_XSC3=y
245CONFIG_CPU_32v5=y
246CONFIG_CPU_ABRT_EV5T=y
247CONFIG_CPU_PABRT_NOIFAR=y
248CONFIG_CPU_CACHE_VIVT=y
249CONFIG_CPU_TLB_V4WBI=y
250CONFIG_CPU_CP15=y
251CONFIG_CPU_CP15_MMU=y
252CONFIG_IO_36=y
253
254#
255# Processor Features
256#
257CONFIG_ARM_THUMB=y
258# CONFIG_CPU_DCACHE_DISABLE is not set
259# CONFIG_CPU_BPREDICT_DISABLE is not set
260CONFIG_OUTER_CACHE=y
261CONFIG_CACHE_XSC3L2=y
262CONFIG_IWMMXT=y
263CONFIG_COMMON_CLKDEV=y
264
265#
266# Bus support
267#
268# CONFIG_PCI_SYSCALL is not set
269# CONFIG_ARCH_SUPPORTS_MSI is not set
270# CONFIG_PCCARD is not set
271
272#
273# Kernel Features
274#
275CONFIG_TICK_ONESHOT=y
276# CONFIG_NO_HZ is not set
277# CONFIG_HIGH_RES_TIMERS is not set
278CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
279CONFIG_VMSPLIT_3G=y
280# CONFIG_VMSPLIT_2G is not set
281# CONFIG_VMSPLIT_1G is not set
282CONFIG_PAGE_OFFSET=0xC0000000
283CONFIG_PREEMPT=y
284CONFIG_HZ=100
285CONFIG_AEABI=y
286CONFIG_OABI_COMPAT=y
287# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
288# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
289# CONFIG_HIGHMEM is not set
290CONFIG_SELECT_MEMORY_MODEL=y
291CONFIG_FLATMEM_MANUAL=y
292# CONFIG_DISCONTIGMEM_MANUAL is not set
293# CONFIG_SPARSEMEM_MANUAL is not set
294CONFIG_FLATMEM=y
295CONFIG_FLAT_NODE_MEM_MAP=y
296CONFIG_PAGEFLAGS_EXTENDED=y
297CONFIG_SPLIT_PTLOCK_CPUS=4096
298# CONFIG_PHYS_ADDR_T_64BIT is not set
299CONFIG_ZONE_DMA_FLAG=0
300CONFIG_VIRT_TO_BUS=y
301CONFIG_HAVE_MLOCK=y
302CONFIG_HAVE_MLOCKED_PAGE_BIT=y
303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
304CONFIG_ALIGNMENT_TRAP=y
305# CONFIG_UACCESS_WITH_MEMCPY is not set
306
307#
308# Boot options
309#
310CONFIG_ZBOOT_ROM_TEXT=0x0
311CONFIG_ZBOOT_ROM_BSS=0x0
312CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=64M debug"
313# CONFIG_XIP_KERNEL is not set
314# CONFIG_KEXEC is not set
315
316#
317# CPU Power Management
318#
319# CONFIG_CPU_FREQ is not set
320# CONFIG_CPU_IDLE is not set
321
322#
323# Floating point emulation
324#
325
326#
327# At least one emulation must be selected
328#
329CONFIG_FPE_NWFPE=y
330# CONFIG_FPE_NWFPE_XP is not set
331# CONFIG_FPE_FASTFPE is not set
332
333#
334# Userspace binary formats
335#
336CONFIG_BINFMT_ELF=y
337# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
338CONFIG_HAVE_AOUT=y
339# CONFIG_BINFMT_AOUT is not set
340# CONFIG_BINFMT_MISC is not set
341
342#
343# Power management options
344#
345# CONFIG_PM is not set
346CONFIG_ARCH_SUSPEND_POSSIBLE=y
347CONFIG_NET=y
348
349#
350# Networking options
351#
352CONFIG_PACKET=y
353# CONFIG_PACKET_MMAP is not set
354CONFIG_UNIX=y
355# CONFIG_NET_KEY is not set
356CONFIG_INET=y
357# CONFIG_IP_MULTICAST is not set
358# CONFIG_IP_ADVANCED_ROUTER is not set
359CONFIG_IP_FIB_HASH=y
360CONFIG_IP_PNP=y
361# CONFIG_IP_PNP_DHCP is not set
362# CONFIG_IP_PNP_BOOTP is not set
363# CONFIG_IP_PNP_RARP is not set
364# CONFIG_NET_IPIP is not set
365# CONFIG_NET_IPGRE is not set
366# CONFIG_ARPD is not set
367# CONFIG_SYN_COOKIES is not set
368# CONFIG_INET_AH is not set
369# CONFIG_INET_ESP is not set
370# CONFIG_INET_IPCOMP is not set
371# CONFIG_INET_XFRM_TUNNEL is not set
372# CONFIG_INET_TUNNEL is not set
373# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
374# CONFIG_INET_XFRM_MODE_TUNNEL is not set
375# CONFIG_INET_XFRM_MODE_BEET is not set
376# CONFIG_INET_LRO is not set
377# CONFIG_INET_DIAG is not set
378# CONFIG_TCP_CONG_ADVANCED is not set
379CONFIG_TCP_CONG_CUBIC=y
380CONFIG_DEFAULT_TCP_CONG="cubic"
381# CONFIG_TCP_MD5SIG is not set
382# CONFIG_IPV6 is not set
383# CONFIG_NETWORK_SECMARK is not set
384# CONFIG_NETFILTER is not set
385# CONFIG_IP_DCCP is not set
386# CONFIG_IP_SCTP is not set
387# CONFIG_TIPC is not set
388# CONFIG_ATM is not set
389# CONFIG_BRIDGE is not set
390# CONFIG_NET_DSA is not set
391# CONFIG_VLAN_8021Q is not set
392# CONFIG_DECNET is not set
393# CONFIG_LLC2 is not set
394# CONFIG_IPX is not set
395# CONFIG_ATALK is not set
396# CONFIG_X25 is not set
397# CONFIG_LAPB is not set
398# CONFIG_ECONET is not set
399# CONFIG_WAN_ROUTER is not set
400# CONFIG_PHONET is not set
401# CONFIG_IEEE802154 is not set
402# CONFIG_NET_SCHED is not set
403# CONFIG_DCB is not set
404
405#
406# Network testing
407#
408# CONFIG_NET_PKTGEN is not set
409# CONFIG_HAMRADIO is not set
410# CONFIG_CAN is not set
411# CONFIG_IRDA is not set
412# CONFIG_BT is not set
413# CONFIG_AF_RXRPC is not set
414# CONFIG_WIRELESS is not set
415# CONFIG_WIMAX is not set
416# CONFIG_RFKILL is not set
417# CONFIG_NET_9P is not set
418
419#
420# Device Drivers
421#
422
423#
424# Generic Driver Options
425#
426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_STANDALONE is not set
428# CONFIG_PREVENT_FIRMWARE_BUILD is not set
429CONFIG_FW_LOADER=y
430CONFIG_FIRMWARE_IN_KERNEL=y
431CONFIG_EXTRA_FIRMWARE=""
432# CONFIG_DEBUG_DRIVER is not set
433# CONFIG_DEBUG_DEVRES is not set
434# CONFIG_SYS_HYPERVISOR is not set
435# CONFIG_CONNECTOR is not set
436CONFIG_MTD=y
437# CONFIG_MTD_DEBUG is not set
438CONFIG_MTD_CONCAT=y
439CONFIG_MTD_PARTITIONS=y
440# CONFIG_MTD_TESTS is not set
441# CONFIG_MTD_REDBOOT_PARTS is not set
442# CONFIG_MTD_CMDLINE_PARTS is not set
443# CONFIG_MTD_AFS_PARTS is not set
444# CONFIG_MTD_AR7_PARTS is not set
445
446#
447# User Modules And Translation Layers
448#
449CONFIG_MTD_CHAR=y
450CONFIG_MTD_BLKDEVS=y
451CONFIG_MTD_BLOCK=y
452# CONFIG_FTL is not set
453# CONFIG_NFTL is not set
454# CONFIG_INFTL is not set
455# CONFIG_RFD_FTL is not set
456# CONFIG_SSFDC is not set
457# CONFIG_MTD_OOPS is not set
458
459#
460# RAM/ROM/Flash chip drivers
461#
462# CONFIG_MTD_CFI is not set
463# CONFIG_MTD_JEDECPROBE is not set
464CONFIG_MTD_MAP_BANK_WIDTH_1=y
465CONFIG_MTD_MAP_BANK_WIDTH_2=y
466CONFIG_MTD_MAP_BANK_WIDTH_4=y
467# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
468# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
469# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
470CONFIG_MTD_CFI_I1=y
471CONFIG_MTD_CFI_I2=y
472# CONFIG_MTD_CFI_I4 is not set
473# CONFIG_MTD_CFI_I8 is not set
474# CONFIG_MTD_RAM is not set
475# CONFIG_MTD_ROM is not set
476# CONFIG_MTD_ABSENT is not set
477
478#
479# Mapping drivers for chip access
480#
481# CONFIG_MTD_COMPLEX_MAPPINGS is not set
482# CONFIG_MTD_PLATRAM is not set
483
484#
485# Self-contained MTD device drivers
486#
487# CONFIG_MTD_DATAFLASH is not set
488# CONFIG_MTD_M25P80 is not set
489# CONFIG_MTD_SLRAM is not set
490# CONFIG_MTD_PHRAM is not set
491# CONFIG_MTD_MTDRAM is not set
492# CONFIG_MTD_BLOCK2MTD is not set
493
494#
495# Disk-On-Chip Device Drivers
496#
497# CONFIG_MTD_DOC2000 is not set
498# CONFIG_MTD_DOC2001 is not set
499# CONFIG_MTD_DOC2001PLUS is not set
500CONFIG_MTD_NAND=y
501CONFIG_MTD_NAND_VERIFY_WRITE=y
502# CONFIG_MTD_NAND_ECC_SMC is not set
503# CONFIG_MTD_NAND_MUSEUM_IDS is not set
504# CONFIG_MTD_NAND_H1900 is not set
505# CONFIG_MTD_NAND_GPIO is not set
506CONFIG_MTD_NAND_IDS=y
507# CONFIG_MTD_NAND_DISKONCHIP is not set
508# CONFIG_MTD_NAND_SHARPSL is not set
509CONFIG_MTD_NAND_PXA3xx=y
510CONFIG_MTD_NAND_PXA3xx_BUILTIN=y
511# CONFIG_MTD_NAND_NANDSIM is not set
512# CONFIG_MTD_NAND_PLATFORM is not set
513CONFIG_MTD_ONENAND=y
514CONFIG_MTD_ONENAND_VERIFY_WRITE=y
515CONFIG_MTD_ONENAND_GENERIC=y
516# CONFIG_MTD_ONENAND_OTP is not set
517# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
518# CONFIG_MTD_ONENAND_SIM is not set
519
520#
521# LPDDR flash memory drivers
522#
523# CONFIG_MTD_LPDDR is not set
524
525#
526# UBI - Unsorted block images
527#
528# CONFIG_MTD_UBI is not set
529# CONFIG_PARPORT is not set
530CONFIG_BLK_DEV=y
531# CONFIG_BLK_DEV_COW_COMMON is not set
532CONFIG_BLK_DEV_LOOP=y
533# CONFIG_BLK_DEV_CRYPTOLOOP is not set
534# CONFIG_BLK_DEV_NBD is not set
535CONFIG_BLK_DEV_RAM=y
536CONFIG_BLK_DEV_RAM_COUNT=16
537CONFIG_BLK_DEV_RAM_SIZE=4096
538# CONFIG_BLK_DEV_XIP is not set
539# CONFIG_CDROM_PKTCDVD is not set
540# CONFIG_ATA_OVER_ETH is not set
541# CONFIG_MG_DISK is not set
542# CONFIG_MISC_DEVICES is not set
543CONFIG_HAVE_IDE=y
544# CONFIG_IDE is not set
545
546#
547# SCSI device support
548#
549# CONFIG_RAID_ATTRS is not set
550# CONFIG_SCSI is not set
551# CONFIG_SCSI_DMA is not set
552# CONFIG_SCSI_NETLINK is not set
553# CONFIG_ATA is not set
554# CONFIG_MD is not set
555CONFIG_NETDEVICES=y
556# CONFIG_DUMMY is not set
557# CONFIG_BONDING is not set
558# CONFIG_MACVLAN is not set
559# CONFIG_EQUALIZER is not set
560# CONFIG_TUN is not set
561# CONFIG_VETH is not set
562# CONFIG_PHYLIB is not set
563CONFIG_NET_ETHERNET=y
564CONFIG_MII=y
565# CONFIG_AX88796 is not set
566CONFIG_SMC91X=y
567# CONFIG_DM9000 is not set
568# CONFIG_ENC28J60 is not set
569# CONFIG_ETHOC is not set
570# CONFIG_SMC911X is not set
571# CONFIG_SMSC911X is not set
572# CONFIG_DNET is not set
573# CONFIG_IBM_NEW_EMAC_ZMII is not set
574# CONFIG_IBM_NEW_EMAC_RGMII is not set
575# CONFIG_IBM_NEW_EMAC_TAH is not set
576# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
577# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
578# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
579# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
580# CONFIG_B44 is not set
581# CONFIG_KS8842 is not set
582# CONFIG_NETDEV_1000 is not set
583# CONFIG_NETDEV_10000 is not set
584
585#
586# Wireless LAN
587#
588# CONFIG_WLAN_PRE80211 is not set
589# CONFIG_WLAN_80211 is not set
590
591#
592# Enable WiMAX (Networking options) to see the WiMAX drivers
593#
594# CONFIG_WAN is not set
595# CONFIG_PPP is not set
596# CONFIG_SLIP is not set
597# CONFIG_NETCONSOLE is not set
598# CONFIG_NETPOLL is not set
599# CONFIG_NET_POLL_CONTROLLER is not set
600# CONFIG_ISDN is not set
601
602#
603# Input device support
604#
605CONFIG_INPUT=y
606# CONFIG_INPUT_FF_MEMLESS is not set
607# CONFIG_INPUT_POLLDEV is not set
608
609#
610# Userland interfaces
611#
612CONFIG_INPUT_MOUSEDEV=y
613# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
614CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
615CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
616# CONFIG_INPUT_JOYDEV is not set
617# CONFIG_INPUT_EVDEV is not set
618# CONFIG_INPUT_EVBUG is not set
619
620#
621# Input Device Drivers
622#
623CONFIG_INPUT_KEYBOARD=y
624# CONFIG_KEYBOARD_ATKBD is not set
625# CONFIG_KEYBOARD_SUNKBD is not set
626# CONFIG_KEYBOARD_LKKBD is not set
627# CONFIG_KEYBOARD_XTKBD is not set
628# CONFIG_KEYBOARD_NEWTON is not set
629# CONFIG_KEYBOARD_STOWAWAY is not set
630# CONFIG_KEYBOARD_LM8323 is not set
631CONFIG_KEYBOARD_PXA27x=y
632CONFIG_KEYBOARD_PXA930_ROTARY=y
633CONFIG_KEYBOARD_GPIO=y
634CONFIG_INPUT_MOUSE=y
635CONFIG_MOUSE_PS2=y
636CONFIG_MOUSE_PS2_ALPS=y
637CONFIG_MOUSE_PS2_LOGIPS2PP=y
638CONFIG_MOUSE_PS2_SYNAPTICS=y
639CONFIG_MOUSE_PS2_TRACKPOINT=y
640# CONFIG_MOUSE_PS2_ELANTECH is not set
641# CONFIG_MOUSE_PS2_TOUCHKIT is not set
642# CONFIG_MOUSE_SERIAL is not set
643# CONFIG_MOUSE_VSXXXAA is not set
644# CONFIG_MOUSE_GPIO is not set
645CONFIG_MOUSE_PXA930_TRKBALL=y
646# CONFIG_MOUSE_SYNAPTICS_I2C is not set
647# CONFIG_INPUT_JOYSTICK is not set
648# CONFIG_INPUT_TABLET is not set
649CONFIG_INPUT_TOUCHSCREEN=y
650# CONFIG_TOUCHSCREEN_ADS7846 is not set
651# CONFIG_TOUCHSCREEN_AD7877 is not set
652# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
653# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
654# CONFIG_TOUCHSCREEN_AD7879 is not set
655CONFIG_TOUCHSCREEN_DA9034=y
656# CONFIG_TOUCHSCREEN_EETI is not set
657# CONFIG_TOUCHSCREEN_FUJITSU is not set
658# CONFIG_TOUCHSCREEN_GUNZE is not set
659# CONFIG_TOUCHSCREEN_ELO is not set
660# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
661# CONFIG_TOUCHSCREEN_MTOUCH is not set
662# CONFIG_TOUCHSCREEN_INEXIO is not set
663# CONFIG_TOUCHSCREEN_MK712 is not set
664# CONFIG_TOUCHSCREEN_PENMOUNT is not set
665# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
666# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
667# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
668# CONFIG_TOUCHSCREEN_TSC2007 is not set
669# CONFIG_TOUCHSCREEN_W90X900 is not set
670# CONFIG_INPUT_MISC is not set
671
672#
673# Hardware I/O ports
674#
675CONFIG_SERIO=y
676CONFIG_SERIO_SERPORT=y
677CONFIG_SERIO_LIBPS2=y
678# CONFIG_SERIO_RAW is not set
679# CONFIG_GAMEPORT is not set
680
681#
682# Character devices
683#
684CONFIG_VT=y
685CONFIG_CONSOLE_TRANSLATIONS=y
686CONFIG_VT_CONSOLE=y
687CONFIG_HW_CONSOLE=y
688# CONFIG_VT_HW_CONSOLE_BINDING is not set
689CONFIG_DEVKMEM=y
690# CONFIG_SERIAL_NONSTANDARD is not set
691
692#
693# Serial drivers
694#
695# CONFIG_SERIAL_8250 is not set
696
697#
698# Non-8250 serial port support
699#
700# CONFIG_SERIAL_MAX3100 is not set
701CONFIG_SERIAL_PXA=y
702CONFIG_SERIAL_PXA_CONSOLE=y
703CONFIG_SERIAL_CORE=y
704CONFIG_SERIAL_CORE_CONSOLE=y
705CONFIG_UNIX98_PTYS=y
706# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
707# CONFIG_LEGACY_PTYS is not set
708# CONFIG_IPMI_HANDLER is not set
709# CONFIG_HW_RANDOM is not set
710# CONFIG_R3964 is not set
711# CONFIG_RAW_DRIVER is not set
712# CONFIG_TCG_TPM is not set
713CONFIG_I2C=y
714CONFIG_I2C_BOARDINFO=y
715# CONFIG_I2C_CHARDEV is not set
716# CONFIG_I2C_HELPER_AUTO is not set
717
718#
719# I2C Algorithms
720#
721# CONFIG_I2C_ALGOBIT is not set
722# CONFIG_I2C_ALGOPCF is not set
723# CONFIG_I2C_ALGOPCA is not set
724
725#
726# I2C Hardware Bus support
727#
728
729#
730# I2C system bus drivers (mostly embedded / system-on-chip)
731#
732# CONFIG_I2C_DESIGNWARE is not set
733# CONFIG_I2C_GPIO is not set
734# CONFIG_I2C_OCORES is not set
735CONFIG_I2C_PXA=y
736# CONFIG_I2C_PXA_SLAVE is not set
737# CONFIG_I2C_SIMTEC is not set
738
739#
740# External I2C/SMBus adapter drivers
741#
742# CONFIG_I2C_PARPORT_LIGHT is not set
743# CONFIG_I2C_TAOS_EVM is not set
744
745#
746# Other I2C/SMBus bus drivers
747#
748# CONFIG_I2C_PCA_PLATFORM is not set
749# CONFIG_I2C_STUB is not set
750
751#
752# Miscellaneous I2C Chip support
753#
754# CONFIG_DS1682 is not set
755# CONFIG_SENSORS_TSL2550 is not set
756# CONFIG_I2C_DEBUG_CORE is not set
757# CONFIG_I2C_DEBUG_ALGO is not set
758# CONFIG_I2C_DEBUG_BUS is not set
759# CONFIG_I2C_DEBUG_CHIP is not set
760CONFIG_SPI=y
761# CONFIG_SPI_DEBUG is not set
762CONFIG_SPI_MASTER=y
763
764#
765# SPI Master Controller Drivers
766#
767# CONFIG_SPI_BITBANG is not set
768# CONFIG_SPI_GPIO is not set
769CONFIG_SPI_PXA2XX=y
770
771#
772# SPI Protocol Masters
773#
774# CONFIG_SPI_SPIDEV is not set
775# CONFIG_SPI_TLE62X0 is not set
776CONFIG_ARCH_REQUIRE_GPIOLIB=y
777CONFIG_GPIOLIB=y
778# CONFIG_DEBUG_GPIO is not set
779# CONFIG_GPIO_SYSFS is not set
780
781#
782# Memory mapped GPIO expanders:
783#
784
785#
786# I2C GPIO expanders:
787#
788CONFIG_GPIO_MAX732X=y
789CONFIG_GPIO_PCA953X=y
790CONFIG_GPIO_PCF857X=y
791
792#
793# PCI GPIO expanders:
794#
795
796#
797# SPI GPIO expanders:
798#
799CONFIG_GPIO_MAX7301=y
800# CONFIG_GPIO_MCP23S08 is not set
801# CONFIG_W1 is not set
802CONFIG_POWER_SUPPLY=y
803CONFIG_POWER_SUPPLY_DEBUG=y
804CONFIG_PDA_POWER=y
805# CONFIG_BATTERY_DS2760 is not set
806# CONFIG_BATTERY_BQ27x00 is not set
807CONFIG_BATTERY_DA9030=y
808# CONFIG_BATTERY_MAX17040 is not set
809# CONFIG_HWMON is not set
810# CONFIG_THERMAL is not set
811# CONFIG_THERMAL_HWMON is not set
812# CONFIG_WATCHDOG is not set
813CONFIG_SSB_POSSIBLE=y
814
815#
816# Sonics Silicon Backplane
817#
818# CONFIG_SSB is not set
819
820#
821# Multifunction device drivers
822#
823# CONFIG_MFD_CORE is not set
824# CONFIG_MFD_SM501 is not set
825# CONFIG_MFD_ASIC3 is not set
826# CONFIG_HTC_EGPIO is not set
827# CONFIG_HTC_PASIC3 is not set
828# CONFIG_TPS65010 is not set
829# CONFIG_TWL4030_CORE is not set
830# CONFIG_MFD_TMIO is not set
831# CONFIG_MFD_T7L66XB is not set
832# CONFIG_MFD_TC6387XB is not set
833# CONFIG_MFD_TC6393XB is not set
834CONFIG_PMIC_DA903X=y
835# CONFIG_MFD_WM8400 is not set
836# CONFIG_MFD_WM8350_I2C is not set
837# CONFIG_MFD_PCF50633 is not set
838# CONFIG_AB3100_CORE is not set
839# CONFIG_EZX_PCAP is not set
840# CONFIG_MEDIA_SUPPORT is not set
841
842#
843# Graphics support
844#
845# CONFIG_VGASTATE is not set
846# CONFIG_VIDEO_OUTPUT_CONTROL is not set
847CONFIG_FB=y
848# CONFIG_FIRMWARE_EDID is not set
849# CONFIG_FB_DDC is not set
850# CONFIG_FB_BOOT_VESA_SUPPORT is not set
851CONFIG_FB_CFB_FILLRECT=y
852CONFIG_FB_CFB_COPYAREA=y
853CONFIG_FB_CFB_IMAGEBLIT=y
854# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
855# CONFIG_FB_SYS_FILLRECT is not set
856# CONFIG_FB_SYS_COPYAREA is not set
857# CONFIG_FB_SYS_IMAGEBLIT is not set
858# CONFIG_FB_FOREIGN_ENDIAN is not set
859# CONFIG_FB_SYS_FOPS is not set
860# CONFIG_FB_SVGALIB is not set
861# CONFIG_FB_MACMODES is not set
862# CONFIG_FB_BACKLIGHT is not set
863# CONFIG_FB_MODE_HELPERS is not set
864# CONFIG_FB_TILEBLITTING is not set
865
866#
867# Frame buffer hardware drivers
868#
869# CONFIG_FB_S1D13XXX is not set
870CONFIG_FB_PXA=y
871# CONFIG_FB_PXA_OVERLAY is not set
872# CONFIG_FB_PXA_SMARTPANEL is not set
873# CONFIG_FB_PXA_PARAMETERS is not set
874# CONFIG_FB_MBX is not set
875# CONFIG_FB_W100 is not set
876# CONFIG_FB_VIRTUAL is not set
877# CONFIG_FB_METRONOME is not set
878# CONFIG_FB_MB862XX is not set
879# CONFIG_FB_BROADSHEET is not set
880CONFIG_BACKLIGHT_LCD_SUPPORT=y
881CONFIG_LCD_CLASS_DEVICE=y
882# CONFIG_LCD_LTV350QV is not set
883# CONFIG_LCD_ILI9320 is not set
884CONFIG_LCD_TDO24M=y
885# CONFIG_LCD_VGG2432A4 is not set
886# CONFIG_LCD_PLATFORM is not set
887CONFIG_BACKLIGHT_CLASS_DEVICE=y
888# CONFIG_BACKLIGHT_GENERIC is not set
889CONFIG_BACKLIGHT_PWM=y
890CONFIG_BACKLIGHT_DA903X=y
891
892#
893# Display device support
894#
895# CONFIG_DISPLAY_SUPPORT is not set
896
897#
898# Console display driver support
899#
900# CONFIG_VGA_CONSOLE is not set
901CONFIG_DUMMY_CONSOLE=y
902CONFIG_FRAMEBUFFER_CONSOLE=y
903CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
904# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
905CONFIG_FONTS=y
906# CONFIG_FONT_8x8 is not set
907# CONFIG_FONT_8x16 is not set
908CONFIG_FONT_6x11=y
909# CONFIG_FONT_7x14 is not set
910# CONFIG_FONT_PEARL_8x8 is not set
911# CONFIG_FONT_ACORN_8x8 is not set
912# CONFIG_FONT_MINI_4x6 is not set
913# CONFIG_FONT_SUN8x16 is not set
914# CONFIG_FONT_SUN12x22 is not set
915# CONFIG_FONT_10x18 is not set
916CONFIG_LOGO=y
917CONFIG_LOGO_LINUX_MONO=y
918CONFIG_LOGO_LINUX_VGA16=y
919CONFIG_LOGO_LINUX_CLUT224=y
920# CONFIG_SOUND is not set
921# CONFIG_HID_SUPPORT is not set
922# CONFIG_USB_SUPPORT is not set
923CONFIG_MMC=y
924# CONFIG_MMC_DEBUG is not set
925# CONFIG_MMC_UNSAFE_RESUME is not set
926
927#
928# MMC/SD/SDIO Card Drivers
929#
930CONFIG_MMC_BLOCK=y
931CONFIG_MMC_BLOCK_BOUNCE=y
932# CONFIG_SDIO_UART is not set
933# CONFIG_MMC_TEST is not set
934
935#
936# MMC/SD/SDIO Host Controller Drivers
937#
938CONFIG_MMC_PXA=y
939# CONFIG_MMC_SDHCI is not set
940# CONFIG_MMC_SPI is not set
941# CONFIG_MEMSTICK is not set
942# CONFIG_ACCESSIBILITY is not set
943CONFIG_NEW_LEDS=y
944CONFIG_LEDS_CLASS=m
945
946#
947# LED drivers
948#
949# CONFIG_LEDS_PCA9532 is not set
950CONFIG_LEDS_GPIO=m
951CONFIG_LEDS_GPIO_PLATFORM=y
952# CONFIG_LEDS_LP5521 is not set
953# CONFIG_LEDS_PCA955X is not set
954CONFIG_LEDS_DA903X=m
955# CONFIG_LEDS_DAC124S085 is not set
956# CONFIG_LEDS_PWM is not set
957# CONFIG_LEDS_BD2802 is not set
958
959#
960# LED Triggers
961#
962CONFIG_LEDS_TRIGGERS=y
963CONFIG_LEDS_TRIGGER_TIMER=m
964CONFIG_LEDS_TRIGGER_HEARTBEAT=m
965CONFIG_LEDS_TRIGGER_BACKLIGHT=m
966CONFIG_LEDS_TRIGGER_GPIO=m
967CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
968
969#
970# iptables trigger is under Netfilter config (LED target)
971#
972CONFIG_RTC_LIB=y
973# CONFIG_RTC_CLASS is not set
974# CONFIG_DMADEVICES is not set
975# CONFIG_AUXDISPLAY is not set
976CONFIG_REGULATOR=y
977CONFIG_REGULATOR_DEBUG=y
978# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
979CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
980# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
981# CONFIG_REGULATOR_BQ24022 is not set
982# CONFIG_REGULATOR_MAX1586 is not set
983CONFIG_REGULATOR_DA903X=y
984# CONFIG_REGULATOR_LP3971 is not set
985# CONFIG_UIO is not set
986# CONFIG_STAGING is not set
987
988#
989# File systems
990#
991# CONFIG_EXT2_FS is not set
992# CONFIG_EXT3_FS is not set
993# CONFIG_EXT4_FS is not set
994# CONFIG_REISERFS_FS is not set
995# CONFIG_JFS_FS is not set
996CONFIG_FS_POSIX_ACL=y
997# CONFIG_XFS_FS is not set
998# CONFIG_GFS2_FS is not set
999# CONFIG_OCFS2_FS is not set
1000# CONFIG_BTRFS_FS is not set
1001CONFIG_FILE_LOCKING=y
1002CONFIG_FSNOTIFY=y
1003CONFIG_DNOTIFY=y
1004# CONFIG_INOTIFY is not set
1005CONFIG_INOTIFY_USER=y
1006# CONFIG_QUOTA is not set
1007# CONFIG_AUTOFS_FS is not set
1008# CONFIG_AUTOFS4_FS is not set
1009# CONFIG_FUSE_FS is not set
1010
1011#
1012# Caches
1013#
1014# CONFIG_FSCACHE is not set
1015
1016#
1017# CD-ROM/DVD Filesystems
1018#
1019# CONFIG_ISO9660_FS is not set
1020# CONFIG_UDF_FS is not set
1021
1022#
1023# DOS/FAT/NT Filesystems
1024#
1025# CONFIG_MSDOS_FS is not set
1026# CONFIG_VFAT_FS is not set
1027# CONFIG_NTFS_FS is not set
1028
1029#
1030# Pseudo filesystems
1031#
1032CONFIG_PROC_FS=y
1033CONFIG_PROC_SYSCTL=y
1034CONFIG_PROC_PAGE_MONITOR=y
1035CONFIG_SYSFS=y
1036# CONFIG_TMPFS is not set
1037# CONFIG_HUGETLB_PAGE is not set
1038# CONFIG_CONFIGFS_FS is not set
1039CONFIG_MISC_FILESYSTEMS=y
1040# CONFIG_ADFS_FS is not set
1041# CONFIG_AFFS_FS is not set
1042# CONFIG_HFS_FS is not set
1043# CONFIG_HFSPLUS_FS is not set
1044# CONFIG_BEFS_FS is not set
1045# CONFIG_BFS_FS is not set
1046# CONFIG_EFS_FS is not set
1047CONFIG_JFFS2_FS=y
1048CONFIG_JFFS2_FS_DEBUG=0
1049CONFIG_JFFS2_FS_WRITEBUFFER=y
1050CONFIG_JFFS2_FS_WBUF_VERIFY=y
1051# CONFIG_JFFS2_SUMMARY is not set
1052# CONFIG_JFFS2_FS_XATTR is not set
1053CONFIG_JFFS2_COMPRESSION_OPTIONS=y
1054CONFIG_JFFS2_ZLIB=y
1055CONFIG_JFFS2_LZO=y
1056CONFIG_JFFS2_RTIME=y
1057CONFIG_JFFS2_RUBIN=y
1058# CONFIG_JFFS2_CMODE_NONE is not set
1059CONFIG_JFFS2_CMODE_PRIORITY=y
1060# CONFIG_JFFS2_CMODE_SIZE is not set
1061# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
1062# CONFIG_CRAMFS is not set
1063# CONFIG_SQUASHFS is not set
1064# CONFIG_VXFS_FS is not set
1065# CONFIG_MINIX_FS is not set
1066# CONFIG_OMFS_FS is not set
1067# CONFIG_HPFS_FS is not set
1068# CONFIG_QNX4FS_FS is not set
1069# CONFIG_ROMFS_FS is not set
1070# CONFIG_SYSV_FS is not set
1071# CONFIG_UFS_FS is not set
1072# CONFIG_NILFS2_FS is not set
1073CONFIG_NETWORK_FILESYSTEMS=y
1074CONFIG_NFS_FS=y
1075CONFIG_NFS_V3=y
1076CONFIG_NFS_V3_ACL=y
1077CONFIG_NFS_V4=y
1078# CONFIG_NFS_V4_1 is not set
1079CONFIG_ROOT_NFS=y
1080# CONFIG_NFSD is not set
1081CONFIG_LOCKD=y
1082CONFIG_LOCKD_V4=y
1083CONFIG_NFS_ACL_SUPPORT=y
1084CONFIG_NFS_COMMON=y
1085CONFIG_SUNRPC=y
1086CONFIG_SUNRPC_GSS=y
1087CONFIG_RPCSEC_GSS_KRB5=y
1088# CONFIG_RPCSEC_GSS_SPKM3 is not set
1089# CONFIG_SMB_FS is not set
1090# CONFIG_CIFS is not set
1091# CONFIG_NCP_FS is not set
1092# CONFIG_CODA_FS is not set
1093# CONFIG_AFS_FS is not set
1094
1095#
1096# Partition Types
1097#
1098# CONFIG_PARTITION_ADVANCED is not set
1099CONFIG_MSDOS_PARTITION=y
1100CONFIG_NLS=y
1101CONFIG_NLS_DEFAULT="iso8859-1"
1102# CONFIG_NLS_CODEPAGE_437 is not set
1103# CONFIG_NLS_CODEPAGE_737 is not set
1104# CONFIG_NLS_CODEPAGE_775 is not set
1105# CONFIG_NLS_CODEPAGE_850 is not set
1106# CONFIG_NLS_CODEPAGE_852 is not set
1107# CONFIG_NLS_CODEPAGE_855 is not set
1108# CONFIG_NLS_CODEPAGE_857 is not set
1109# CONFIG_NLS_CODEPAGE_860 is not set
1110# CONFIG_NLS_CODEPAGE_861 is not set
1111# CONFIG_NLS_CODEPAGE_862 is not set
1112# CONFIG_NLS_CODEPAGE_863 is not set
1113# CONFIG_NLS_CODEPAGE_864 is not set
1114# CONFIG_NLS_CODEPAGE_865 is not set
1115# CONFIG_NLS_CODEPAGE_866 is not set
1116# CONFIG_NLS_CODEPAGE_869 is not set
1117# CONFIG_NLS_CODEPAGE_936 is not set
1118# CONFIG_NLS_CODEPAGE_950 is not set
1119# CONFIG_NLS_CODEPAGE_932 is not set
1120# CONFIG_NLS_CODEPAGE_949 is not set
1121# CONFIG_NLS_CODEPAGE_874 is not set
1122# CONFIG_NLS_ISO8859_8 is not set
1123# CONFIG_NLS_CODEPAGE_1250 is not set
1124# CONFIG_NLS_CODEPAGE_1251 is not set
1125# CONFIG_NLS_ASCII is not set
1126# CONFIG_NLS_ISO8859_1 is not set
1127# CONFIG_NLS_ISO8859_2 is not set
1128# CONFIG_NLS_ISO8859_3 is not set
1129# CONFIG_NLS_ISO8859_4 is not set
1130# CONFIG_NLS_ISO8859_5 is not set
1131# CONFIG_NLS_ISO8859_6 is not set
1132# CONFIG_NLS_ISO8859_7 is not set
1133# CONFIG_NLS_ISO8859_9 is not set
1134# CONFIG_NLS_ISO8859_13 is not set
1135# CONFIG_NLS_ISO8859_14 is not set
1136# CONFIG_NLS_ISO8859_15 is not set
1137# CONFIG_NLS_KOI8_R is not set
1138# CONFIG_NLS_KOI8_U is not set
1139# CONFIG_NLS_UTF8 is not set
1140# CONFIG_DLM is not set
1141
1142#
1143# Kernel hacking
1144#
1145CONFIG_PRINTK_TIME=y
1146CONFIG_ENABLE_WARN_DEPRECATED=y
1147CONFIG_ENABLE_MUST_CHECK=y
1148CONFIG_FRAME_WARN=1024
1149CONFIG_MAGIC_SYSRQ=y
1150# CONFIG_UNUSED_SYMBOLS is not set
1151# CONFIG_DEBUG_FS is not set
1152# CONFIG_HEADERS_CHECK is not set
1153CONFIG_DEBUG_KERNEL=y
1154CONFIG_DEBUG_SHIRQ=y
1155CONFIG_DETECT_SOFTLOCKUP=y
1156CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
1157CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
1158CONFIG_DETECT_HUNG_TASK=y
1159# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1160CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1161# CONFIG_SCHED_DEBUG is not set
1162# CONFIG_SCHEDSTATS is not set
1163# CONFIG_TIMER_STATS is not set
1164# CONFIG_DEBUG_OBJECTS is not set
1165# CONFIG_DEBUG_SLAB is not set
1166# CONFIG_DEBUG_KMEMLEAK is not set
1167CONFIG_DEBUG_PREEMPT=y
1168# CONFIG_DEBUG_RT_MUTEXES is not set
1169# CONFIG_RT_MUTEX_TESTER is not set
1170CONFIG_DEBUG_SPINLOCK=y
1171# CONFIG_DEBUG_MUTEXES is not set
1172# CONFIG_DEBUG_LOCK_ALLOC is not set
1173# CONFIG_PROVE_LOCKING is not set
1174# CONFIG_LOCK_STAT is not set
1175CONFIG_DEBUG_SPINLOCK_SLEEP=y
1176# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1177# CONFIG_DEBUG_KOBJECT is not set
1178CONFIG_DEBUG_BUGVERBOSE=y
1179# CONFIG_DEBUG_INFO is not set
1180# CONFIG_DEBUG_VM is not set
1181# CONFIG_DEBUG_WRITECOUNT is not set
1182CONFIG_DEBUG_MEMORY_INIT=y
1183# CONFIG_DEBUG_LIST is not set
1184# CONFIG_DEBUG_SG is not set
1185# CONFIG_DEBUG_NOTIFIERS is not set
1186# CONFIG_BOOT_PRINTK_DELAY is not set
1187# CONFIG_RCU_TORTURE_TEST is not set
1188# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1189# CONFIG_BACKTRACE_SELF_TEST is not set
1190# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1191# CONFIG_FAULT_INJECTION is not set
1192# CONFIG_LATENCYTOP is not set
1193# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1194# CONFIG_PAGE_POISONING is not set
1195CONFIG_HAVE_FUNCTION_TRACER=y
1196CONFIG_TRACING_SUPPORT=y
1197# CONFIG_FTRACE is not set
1198# CONFIG_SAMPLES is not set
1199CONFIG_HAVE_ARCH_KGDB=y
1200# CONFIG_KGDB is not set
1201# CONFIG_KMEMCHECK is not set
1202CONFIG_ARM_UNWIND=y
1203CONFIG_DEBUG_USER=y
1204# CONFIG_DEBUG_ERRORS is not set
1205# CONFIG_DEBUG_STACK_USAGE is not set
1206# CONFIG_DEBUG_LL is not set
1207
1208#
1209# Security options
1210#
1211# CONFIG_KEYS is not set
1212# CONFIG_SECURITY is not set
1213# CONFIG_SECURITYFS is not set
1214# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1215CONFIG_CRYPTO=y
1216
1217#
1218# Crypto core or helper
1219#
1220# CONFIG_CRYPTO_FIPS is not set
1221CONFIG_CRYPTO_ALGAPI=y
1222CONFIG_CRYPTO_ALGAPI2=y
1223CONFIG_CRYPTO_AEAD2=y
1224CONFIG_CRYPTO_BLKCIPHER=y
1225CONFIG_CRYPTO_BLKCIPHER2=y
1226CONFIG_CRYPTO_HASH=y
1227CONFIG_CRYPTO_HASH2=y
1228CONFIG_CRYPTO_RNG2=y
1229CONFIG_CRYPTO_PCOMP=y
1230CONFIG_CRYPTO_MANAGER=y
1231CONFIG_CRYPTO_MANAGER2=y
1232# CONFIG_CRYPTO_GF128MUL is not set
1233# CONFIG_CRYPTO_NULL is not set
1234CONFIG_CRYPTO_WORKQUEUE=y
1235# CONFIG_CRYPTO_CRYPTD is not set
1236# CONFIG_CRYPTO_AUTHENC is not set
1237# CONFIG_CRYPTO_TEST is not set
1238
1239#
1240# Authenticated Encryption with Associated Data
1241#
1242# CONFIG_CRYPTO_CCM is not set
1243# CONFIG_CRYPTO_GCM is not set
1244# CONFIG_CRYPTO_SEQIV is not set
1245
1246#
1247# Block modes
1248#
1249CONFIG_CRYPTO_CBC=y
1250# CONFIG_CRYPTO_CTR is not set
1251# CONFIG_CRYPTO_CTS is not set
1252# CONFIG_CRYPTO_ECB is not set
1253# CONFIG_CRYPTO_LRW is not set
1254# CONFIG_CRYPTO_PCBC is not set
1255# CONFIG_CRYPTO_XTS is not set
1256
1257#
1258# Hash modes
1259#
1260# CONFIG_CRYPTO_HMAC is not set
1261# CONFIG_CRYPTO_XCBC is not set
1262
1263#
1264# Digest
1265#
1266# CONFIG_CRYPTO_CRC32C is not set
1267# CONFIG_CRYPTO_MD4 is not set
1268CONFIG_CRYPTO_MD5=y
1269# CONFIG_CRYPTO_MICHAEL_MIC is not set
1270# CONFIG_CRYPTO_RMD128 is not set
1271# CONFIG_CRYPTO_RMD160 is not set
1272# CONFIG_CRYPTO_RMD256 is not set
1273# CONFIG_CRYPTO_RMD320 is not set
1274# CONFIG_CRYPTO_SHA1 is not set
1275# CONFIG_CRYPTO_SHA256 is not set
1276# CONFIG_CRYPTO_SHA512 is not set
1277# CONFIG_CRYPTO_TGR192 is not set
1278# CONFIG_CRYPTO_WP512 is not set
1279
1280#
1281# Ciphers
1282#
1283# CONFIG_CRYPTO_AES is not set
1284# CONFIG_CRYPTO_ANUBIS is not set
1285# CONFIG_CRYPTO_ARC4 is not set
1286# CONFIG_CRYPTO_BLOWFISH is not set
1287# CONFIG_CRYPTO_CAMELLIA is not set
1288# CONFIG_CRYPTO_CAST5 is not set
1289# CONFIG_CRYPTO_CAST6 is not set
1290CONFIG_CRYPTO_DES=y
1291# CONFIG_CRYPTO_FCRYPT is not set
1292# CONFIG_CRYPTO_KHAZAD is not set
1293# CONFIG_CRYPTO_SALSA20 is not set
1294# CONFIG_CRYPTO_SEED is not set
1295# CONFIG_CRYPTO_SERPENT is not set
1296# CONFIG_CRYPTO_TEA is not set
1297# CONFIG_CRYPTO_TWOFISH is not set
1298
1299#
1300# Compression
1301#
1302# CONFIG_CRYPTO_DEFLATE is not set
1303# CONFIG_CRYPTO_ZLIB is not set
1304# CONFIG_CRYPTO_LZO is not set
1305
1306#
1307# Random Number Generation
1308#
1309# CONFIG_CRYPTO_ANSI_CPRNG is not set
1310# CONFIG_CRYPTO_HW is not set
1311# CONFIG_BINARY_PRINTF is not set
1312
1313#
1314# Library routines
1315#
1316CONFIG_BITREVERSE=y
1317CONFIG_GENERIC_FIND_LAST_BIT=y
1318# CONFIG_CRC_CCITT is not set
1319# CONFIG_CRC16 is not set
1320# CONFIG_CRC_T10DIF is not set
1321# CONFIG_CRC_ITU_T is not set
1322CONFIG_CRC32=y
1323# CONFIG_CRC7 is not set
1324# CONFIG_LIBCRC32C is not set
1325CONFIG_ZLIB_INFLATE=y
1326CONFIG_ZLIB_DEFLATE=y
1327CONFIG_LZO_COMPRESS=y
1328CONFIG_LZO_DECOMPRESS=y
1329CONFIG_HAS_IOMEM=y
1330CONFIG_HAS_IOPORT=y
1331CONFIG_HAS_DMA=y
1332CONFIG_NLATTR=y
diff --git a/arch/arm/configs/xcep_defconfig b/arch/arm/configs/xcep_defconfig
new file mode 100644
index 000000000000..33bb7250946b
--- /dev/null
+++ b/arch/arm/configs/xcep_defconfig
@@ -0,0 +1,1129 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc6
4# Thu Aug 20 09:02:37 2009
5#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_STACKTRACE_SUPPORT=y
14CONFIG_HAVE_LATENCYTOP_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_ARCH_MTD_XIP=y
23CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=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_INIT_ENV_ARG_LIMIT=32
34CONFIG_LOCALVERSION=".xcep-itech"
35# CONFIG_LOCALVERSION_AUTO is not set
36CONFIG_SYSVIPC=y
37CONFIG_SYSVIPC_SYSCTL=y
38# CONFIG_POSIX_MQUEUE is not set
39CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_TASKSTATS is not set
42# CONFIG_AUDIT is not set
43
44#
45# RCU Subsystem
46#
47CONFIG_CLASSIC_RCU=y
48# CONFIG_TREE_RCU is not set
49# CONFIG_PREEMPT_RCU is not set
50# CONFIG_TREE_RCU_TRACE is not set
51# CONFIG_PREEMPT_RCU_TRACE is not set
52CONFIG_IKCONFIG=y
53CONFIG_IKCONFIG_PROC=y
54CONFIG_LOG_BUF_SHIFT=16
55# CONFIG_GROUP_SCHED is not set
56# CONFIG_CGROUPS is not set
57CONFIG_SYSFS_DEPRECATED=y
58CONFIG_SYSFS_DEPRECATED_V2=y
59# CONFIG_RELAY is not set
60# CONFIG_NAMESPACES is not set
61CONFIG_BLK_DEV_INITRD=y
62CONFIG_INITRAMFS_SOURCE=""
63CONFIG_RD_GZIP=y
64# CONFIG_RD_BZIP2 is not set
65# CONFIG_RD_LZMA is not set
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y
67CONFIG_SYSCTL=y
68CONFIG_ANON_INODES=y
69CONFIG_EMBEDDED=y
70# CONFIG_UID16 is not set
71CONFIG_SYSCTL_SYSCALL=y
72CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set
74# CONFIG_KALLSYMS_EXTRA_PASS is not set
75CONFIG_HOTPLUG=y
76CONFIG_PRINTK=y
77CONFIG_BUG=y
78CONFIG_ELF_CORE=y
79CONFIG_BASE_FULL=y
80CONFIG_FUTEX=y
81CONFIG_EPOLL=y
82CONFIG_SIGNALFD=y
83CONFIG_TIMERFD=y
84CONFIG_EVENTFD=y
85# CONFIG_SHMEM is not set
86CONFIG_AIO=y
87
88#
89# Performance Counters
90#
91# CONFIG_VM_EVENT_COUNTERS is not set
92CONFIG_STRIP_ASM_SYMS=y
93# CONFIG_COMPAT_BRK is not set
94# CONFIG_SLAB is not set
95# CONFIG_SLUB is not set
96CONFIG_SLOB=y
97# CONFIG_PROFILING is not set
98CONFIG_TRACEPOINTS=y
99CONFIG_MARKERS=y
100CONFIG_HAVE_OPROFILE=y
101CONFIG_KPROBES=y
102CONFIG_KRETPROBES=y
103CONFIG_HAVE_KPROBES=y
104CONFIG_HAVE_KRETPROBES=y
105CONFIG_HAVE_CLK=y
106
107#
108# GCOV-based kernel profiling
109#
110# CONFIG_SLOW_WORK is not set
111CONFIG_HAVE_GENERIC_DMA_COHERENT=y
112CONFIG_RT_MUTEXES=y
113CONFIG_BASE_SMALL=0
114CONFIG_MODULES=y
115# CONFIG_MODULE_FORCE_LOAD is not set
116CONFIG_MODULE_UNLOAD=y
117# CONFIG_MODULE_FORCE_UNLOAD is not set
118CONFIG_MODVERSIONS=y
119CONFIG_MODULE_SRCVERSION_ALL=y
120# CONFIG_BLOCK is not set
121# CONFIG_FREEZER is not set
122
123#
124# System Type
125#
126# CONFIG_ARCH_AAEC2000 is not set
127# CONFIG_ARCH_INTEGRATOR is not set
128# CONFIG_ARCH_REALVIEW is not set
129# CONFIG_ARCH_VERSATILE is not set
130# CONFIG_ARCH_AT91 is not set
131# CONFIG_ARCH_CLPS711X is not set
132# CONFIG_ARCH_GEMINI is not set
133# CONFIG_ARCH_EBSA110 is not set
134# CONFIG_ARCH_EP93XX is not set
135# CONFIG_ARCH_FOOTBRIDGE is not set
136# CONFIG_ARCH_MXC is not set
137# CONFIG_ARCH_STMP3XXX is not set
138# CONFIG_ARCH_NETX is not set
139# CONFIG_ARCH_H720X is not set
140# CONFIG_ARCH_IOP13XX is not set
141# CONFIG_ARCH_IOP32X is not set
142# CONFIG_ARCH_IOP33X is not set
143# CONFIG_ARCH_IXP23XX is not set
144# CONFIG_ARCH_IXP2000 is not set
145# CONFIG_ARCH_IXP4XX is not set
146# CONFIG_ARCH_L7200 is not set
147# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_LOKI is not set
149# CONFIG_ARCH_MV78XX0 is not set
150# CONFIG_ARCH_ORION5X is not set
151# CONFIG_ARCH_MMP is not set
152# CONFIG_ARCH_KS8695 is not set
153# CONFIG_ARCH_NS9XXX is not set
154# CONFIG_ARCH_W90X900 is not set
155# CONFIG_ARCH_PNX4008 is not set
156CONFIG_ARCH_PXA=y
157# CONFIG_ARCH_MSM is not set
158# CONFIG_ARCH_RPC is not set
159# CONFIG_ARCH_SA1100 is not set
160# CONFIG_ARCH_S3C2410 is not set
161# CONFIG_ARCH_S3C64XX is not set
162# CONFIG_ARCH_SHARK is not set
163# CONFIG_ARCH_LH7A40X is not set
164# CONFIG_ARCH_U300 is not set
165# CONFIG_ARCH_DAVINCI is not set
166# CONFIG_ARCH_OMAP is not set
167
168#
169# Intel PXA2xx/PXA3xx Implementations
170#
171# CONFIG_ARCH_GUMSTIX is not set
172# CONFIG_MACH_INTELMOTE2 is not set
173# CONFIG_MACH_STARGATE2 is not set
174# CONFIG_ARCH_LUBBOCK is not set
175# CONFIG_MACH_LOGICPD_PXA270 is not set
176# CONFIG_MACH_MAINSTONE is not set
177# CONFIG_MACH_MP900C is not set
178# CONFIG_ARCH_PXA_IDP is not set
179# CONFIG_PXA_SHARPSL is not set
180# CONFIG_ARCH_VIPER is not set
181# CONFIG_ARCH_PXA_ESERIES is not set
182# CONFIG_TRIZEPS_PXA is not set
183# CONFIG_MACH_H5000 is not set
184# CONFIG_MACH_EM_X270 is not set
185# CONFIG_MACH_EXEDA is not set
186# CONFIG_MACH_COLIBRI is not set
187# CONFIG_MACH_COLIBRI300 is not set
188# CONFIG_MACH_COLIBRI320 is not set
189# CONFIG_MACH_ZYLONITE is not set
190# CONFIG_MACH_LITTLETON is not set
191# CONFIG_MACH_TAVOREVB is not set
192# CONFIG_MACH_SAAR is not set
193# CONFIG_MACH_ARMCORE is not set
194# CONFIG_MACH_CM_X300 is not set
195# CONFIG_MACH_H4700 is not set
196# CONFIG_MACH_MAGICIAN is not set
197# CONFIG_MACH_HIMALAYA is not set
198# CONFIG_MACH_MIOA701 is not set
199# CONFIG_MACH_PCM027 is not set
200# CONFIG_ARCH_PXA_PALM is not set
201# CONFIG_MACH_CSB726 is not set
202# CONFIG_PXA_EZX is not set
203CONFIG_MACH_XCEP=y
204CONFIG_PXA25x=y
205CONFIG_PXA_SSP=y
206CONFIG_PLAT_PXA=y
207
208#
209# Processor Type
210#
211CONFIG_CPU_32=y
212CONFIG_CPU_XSCALE=y
213CONFIG_CPU_32v5=y
214CONFIG_CPU_ABRT_EV5T=y
215CONFIG_CPU_PABRT_NOIFAR=y
216CONFIG_CPU_CACHE_VIVT=y
217CONFIG_CPU_TLB_V4WBI=y
218CONFIG_CPU_CP15=y
219CONFIG_CPU_CP15_MMU=y
220
221#
222# Processor Features
223#
224CONFIG_ARM_THUMB=y
225# CONFIG_CPU_DCACHE_DISABLE is not set
226CONFIG_IWMMXT=y
227CONFIG_XSCALE_PMU=y
228CONFIG_COMMON_CLKDEV=y
229
230#
231# Bus support
232#
233# CONFIG_PCI_SYSCALL is not set
234# CONFIG_ARCH_SUPPORTS_MSI is not set
235# CONFIG_PCCARD is not set
236
237#
238# Kernel Features
239#
240CONFIG_TICK_ONESHOT=y
241CONFIG_NO_HZ=y
242CONFIG_HIGH_RES_TIMERS=y
243CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
244CONFIG_VMSPLIT_3G=y
245# CONFIG_VMSPLIT_2G is not set
246# CONFIG_VMSPLIT_1G is not set
247CONFIG_PAGE_OFFSET=0xC0000000
248# CONFIG_PREEMPT is not set
249CONFIG_HZ=100
250CONFIG_AEABI=y
251CONFIG_OABI_COMPAT=y
252# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
253# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
254# CONFIG_HIGHMEM is not set
255CONFIG_SELECT_MEMORY_MODEL=y
256CONFIG_FLATMEM_MANUAL=y
257# CONFIG_DISCONTIGMEM_MANUAL is not set
258# CONFIG_SPARSEMEM_MANUAL is not set
259CONFIG_FLATMEM=y
260CONFIG_FLAT_NODE_MEM_MAP=y
261CONFIG_PAGEFLAGS_EXTENDED=y
262CONFIG_SPLIT_PTLOCK_CPUS=4096
263# CONFIG_PHYS_ADDR_T_64BIT is not set
264CONFIG_ZONE_DMA_FLAG=0
265CONFIG_VIRT_TO_BUS=y
266CONFIG_HAVE_MLOCK=y
267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
269CONFIG_ALIGNMENT_TRAP=y
270# CONFIG_UACCESS_WITH_MEMCPY is not set
271
272#
273# Boot options
274#
275CONFIG_ZBOOT_ROM_TEXT=0x0
276CONFIG_ZBOOT_ROM_BSS=0x0
277CONFIG_CMDLINE="root=mtd4 rootfstype=jffs2 ro console=ttyS0,115200"
278# CONFIG_XIP_KERNEL is not set
279# CONFIG_KEXEC is not set
280
281#
282# CPU Power Management
283#
284# CONFIG_CPU_FREQ is not set
285# CONFIG_CPU_IDLE is not set
286
287#
288# Floating point emulation
289#
290
291#
292# At least one emulation must be selected
293#
294CONFIG_FPE_NWFPE=y
295# CONFIG_FPE_NWFPE_XP is not set
296# CONFIG_FPE_FASTFPE is not set
297
298#
299# Userspace binary formats
300#
301CONFIG_BINFMT_ELF=y
302# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
303CONFIG_HAVE_AOUT=y
304# CONFIG_BINFMT_AOUT is not set
305# CONFIG_BINFMT_MISC is not set
306
307#
308# Power management options
309#
310# CONFIG_PM is not set
311CONFIG_ARCH_SUSPEND_POSSIBLE=y
312CONFIG_NET=y
313
314#
315# Networking options
316#
317CONFIG_PACKET=m
318CONFIG_PACKET_MMAP=y
319CONFIG_UNIX=y
320CONFIG_XFRM=y
321# CONFIG_XFRM_USER is not set
322# CONFIG_XFRM_SUB_POLICY is not set
323# CONFIG_XFRM_MIGRATE is not set
324# CONFIG_XFRM_STATISTICS is not set
325CONFIG_NET_KEY=y
326# CONFIG_NET_KEY_MIGRATE is not set
327CONFIG_INET=y
328CONFIG_IP_MULTICAST=y
329# CONFIG_IP_ADVANCED_ROUTER is not set
330CONFIG_IP_FIB_HASH=y
331CONFIG_IP_PNP=y
332CONFIG_IP_PNP_DHCP=y
333CONFIG_IP_PNP_BOOTP=y
334# CONFIG_IP_PNP_RARP is not set
335# CONFIG_NET_IPIP is not set
336# CONFIG_NET_IPGRE is not set
337# CONFIG_IP_MROUTE is not set
338# CONFIG_ARPD is not set
339# CONFIG_SYN_COOKIES is not set
340# CONFIG_INET_AH is not set
341# CONFIG_INET_ESP is not set
342# CONFIG_INET_IPCOMP is not set
343# CONFIG_INET_XFRM_TUNNEL is not set
344# CONFIG_INET_TUNNEL is not set
345# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
346# CONFIG_INET_XFRM_MODE_TUNNEL is not set
347# CONFIG_INET_XFRM_MODE_BEET is not set
348CONFIG_INET_LRO=y
349# CONFIG_INET_DIAG is not set
350# CONFIG_TCP_CONG_ADVANCED is not set
351CONFIG_TCP_CONG_CUBIC=y
352CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_TCP_MD5SIG is not set
354# CONFIG_IPV6 is not set
355# CONFIG_NETWORK_SECMARK is not set
356# CONFIG_NETFILTER is not set
357# CONFIG_IP_DCCP is not set
358# CONFIG_IP_SCTP is not set
359# CONFIG_TIPC is not set
360# CONFIG_ATM is not set
361# CONFIG_BRIDGE is not set
362# CONFIG_NET_DSA is not set
363# CONFIG_VLAN_8021Q is not set
364# CONFIG_DECNET is not set
365# CONFIG_LLC2 is not set
366# CONFIG_IPX is not set
367# CONFIG_ATALK is not set
368# CONFIG_X25 is not set
369# CONFIG_LAPB is not set
370# CONFIG_ECONET is not set
371# CONFIG_WAN_ROUTER is not set
372# CONFIG_PHONET is not set
373# CONFIG_IEEE802154 is not set
374# CONFIG_NET_SCHED is not set
375# CONFIG_DCB is not set
376
377#
378# Network testing
379#
380# CONFIG_NET_PKTGEN is not set
381# CONFIG_NET_TCPPROBE is not set
382# CONFIG_NET_DROP_MONITOR is not set
383# CONFIG_HAMRADIO is not set
384# CONFIG_CAN is not set
385# CONFIG_IRDA is not set
386# CONFIG_BT is not set
387# CONFIG_AF_RXRPC is not set
388# CONFIG_WIRELESS is not set
389# CONFIG_WIMAX is not set
390# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set
392
393#
394# Device Drivers
395#
396
397#
398# Generic Driver Options
399#
400CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
401CONFIG_STANDALONE=y
402# CONFIG_PREVENT_FIRMWARE_BUILD is not set
403# CONFIG_FW_LOADER is not set
404# CONFIG_DEBUG_DRIVER is not set
405# CONFIG_DEBUG_DEVRES is not set
406# CONFIG_SYS_HYPERVISOR is not set
407# CONFIG_CONNECTOR is not set
408CONFIG_MTD=y
409# CONFIG_MTD_DEBUG is not set
410CONFIG_MTD_CONCAT=y
411CONFIG_MTD_PARTITIONS=y
412# CONFIG_MTD_TESTS is not set
413# CONFIG_MTD_REDBOOT_PARTS is not set
414# CONFIG_MTD_CMDLINE_PARTS is not set
415# CONFIG_MTD_AFS_PARTS is not set
416# CONFIG_MTD_AR7_PARTS is not set
417
418#
419# User Modules And Translation Layers
420#
421CONFIG_MTD_CHAR=y
422# CONFIG_MTD_OOPS is not set
423
424#
425# RAM/ROM/Flash chip drivers
426#
427CONFIG_MTD_CFI=y
428# CONFIG_MTD_JEDECPROBE is not set
429CONFIG_MTD_GEN_PROBE=y
430# CONFIG_MTD_CFI_ADV_OPTIONS is not set
431CONFIG_MTD_MAP_BANK_WIDTH_1=y
432CONFIG_MTD_MAP_BANK_WIDTH_2=y
433CONFIG_MTD_MAP_BANK_WIDTH_4=y
434# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
435# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
436# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
437CONFIG_MTD_CFI_I1=y
438CONFIG_MTD_CFI_I2=y
439# CONFIG_MTD_CFI_I4 is not set
440# CONFIG_MTD_CFI_I8 is not set
441CONFIG_MTD_CFI_INTELEXT=y
442# CONFIG_MTD_CFI_AMDSTD is not set
443# CONFIG_MTD_CFI_STAA is not set
444CONFIG_MTD_CFI_UTIL=y
445# CONFIG_MTD_RAM is not set
446# CONFIG_MTD_ROM is not set
447# CONFIG_MTD_ABSENT is not set
448# CONFIG_MTD_XIP is not set
449
450#
451# Mapping drivers for chip access
452#
453CONFIG_MTD_COMPLEX_MAPPINGS=y
454CONFIG_MTD_PHYSMAP=y
455# CONFIG_MTD_PHYSMAP_COMPAT is not set
456CONFIG_MTD_PXA2XX=y
457# CONFIG_MTD_ARM_INTEGRATOR is not set
458# CONFIG_MTD_PLATRAM is not set
459
460#
461# Self-contained MTD device drivers
462#
463# CONFIG_MTD_SLRAM is not set
464# CONFIG_MTD_PHRAM is not set
465# CONFIG_MTD_MTDRAM is not set
466
467#
468# Disk-On-Chip Device Drivers
469#
470# CONFIG_MTD_DOC2000 is not set
471# CONFIG_MTD_DOC2001 is not set
472# CONFIG_MTD_DOC2001PLUS is not set
473# CONFIG_MTD_NAND is not set
474# CONFIG_MTD_ONENAND is not set
475
476#
477# LPDDR flash memory drivers
478#
479# CONFIG_MTD_LPDDR is not set
480
481#
482# UBI - Unsorted block images
483#
484# CONFIG_MTD_UBI is not set
485# CONFIG_PARPORT is not set
486# CONFIG_MISC_DEVICES is not set
487CONFIG_HAVE_IDE=y
488
489#
490# SCSI device support
491#
492# CONFIG_SCSI_DMA is not set
493# CONFIG_SCSI_NETLINK is not set
494CONFIG_NETDEVICES=y
495# CONFIG_DUMMY is not set
496# CONFIG_BONDING is not set
497# CONFIG_MACVLAN is not set
498# CONFIG_EQUALIZER is not set
499# CONFIG_TUN is not set
500# CONFIG_VETH is not set
501# CONFIG_PHYLIB is not set
502CONFIG_NET_ETHERNET=y
503CONFIG_MII=y
504# CONFIG_AX88796 is not set
505CONFIG_SMC91X=y
506# CONFIG_DM9000 is not set
507# CONFIG_ETHOC is not set
508# CONFIG_SMC911X is not set
509# CONFIG_SMSC911X is not set
510# CONFIG_DNET is not set
511# CONFIG_IBM_NEW_EMAC_ZMII is not set
512# CONFIG_IBM_NEW_EMAC_RGMII is not set
513# CONFIG_IBM_NEW_EMAC_TAH is not set
514# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
515# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
516# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
517# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
518# CONFIG_B44 is not set
519# CONFIG_KS8842 is not set
520# CONFIG_NETDEV_1000 is not set
521# CONFIG_NETDEV_10000 is not set
522
523#
524# Wireless LAN
525#
526# CONFIG_WLAN_PRE80211 is not set
527# CONFIG_WLAN_80211 is not set
528
529#
530# Enable WiMAX (Networking options) to see the WiMAX drivers
531#
532# CONFIG_WAN is not set
533# CONFIG_PPP is not set
534# CONFIG_SLIP is not set
535# CONFIG_NETCONSOLE is not set
536# CONFIG_NETPOLL is not set
537# CONFIG_NET_POLL_CONTROLLER is not set
538# CONFIG_ISDN is not set
539
540#
541# Input device support
542#
543CONFIG_INPUT=y
544# CONFIG_INPUT_FF_MEMLESS is not set
545# CONFIG_INPUT_POLLDEV is not set
546
547#
548# Userland interfaces
549#
550# CONFIG_INPUT_MOUSEDEV is not set
551# CONFIG_INPUT_JOYDEV is not set
552# CONFIG_INPUT_EVDEV is not set
553# CONFIG_INPUT_EVBUG is not set
554
555#
556# Input Device Drivers
557#
558# CONFIG_INPUT_KEYBOARD is not set
559# CONFIG_INPUT_MOUSE is not set
560# CONFIG_INPUT_JOYSTICK is not set
561# CONFIG_INPUT_TABLET is not set
562# CONFIG_INPUT_TOUCHSCREEN is not set
563# CONFIG_INPUT_MISC is not set
564
565#
566# Hardware I/O ports
567#
568# CONFIG_SERIO is not set
569# CONFIG_GAMEPORT is not set
570
571#
572# Character devices
573#
574CONFIG_VT=y
575CONFIG_CONSOLE_TRANSLATIONS=y
576CONFIG_VT_CONSOLE=y
577CONFIG_HW_CONSOLE=y
578# CONFIG_VT_HW_CONSOLE_BINDING is not set
579# CONFIG_DEVKMEM is not set
580# CONFIG_SERIAL_NONSTANDARD is not set
581
582#
583# Serial drivers
584#
585# CONFIG_SERIAL_8250 is not set
586
587#
588# Non-8250 serial port support
589#
590CONFIG_SERIAL_PXA=y
591CONFIG_SERIAL_PXA_CONSOLE=y
592CONFIG_SERIAL_CORE=y
593CONFIG_SERIAL_CORE_CONSOLE=y
594CONFIG_UNIX98_PTYS=y
595# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
596# CONFIG_LEGACY_PTYS is not set
597# CONFIG_IPMI_HANDLER is not set
598# CONFIG_HW_RANDOM is not set
599# CONFIG_R3964 is not set
600# CONFIG_TCG_TPM is not set
601CONFIG_I2C=m
602CONFIG_I2C_BOARDINFO=y
603CONFIG_I2C_CHARDEV=m
604CONFIG_I2C_HELPER_AUTO=y
605
606#
607# I2C Hardware Bus support
608#
609
610#
611# I2C system bus drivers (mostly embedded / system-on-chip)
612#
613# CONFIG_I2C_DESIGNWARE is not set
614# CONFIG_I2C_GPIO is not set
615# CONFIG_I2C_OCORES is not set
616CONFIG_I2C_PXA=m
617# CONFIG_I2C_PXA_SLAVE is not set
618# CONFIG_I2C_SIMTEC is not set
619
620#
621# External I2C/SMBus adapter drivers
622#
623# CONFIG_I2C_PARPORT_LIGHT is not set
624# CONFIG_I2C_TAOS_EVM is not set
625
626#
627# Other I2C/SMBus bus drivers
628#
629# CONFIG_I2C_PCA_PLATFORM is not set
630# CONFIG_I2C_STUB is not set
631
632#
633# Miscellaneous I2C Chip support
634#
635# CONFIG_DS1682 is not set
636# CONFIG_SENSORS_PCF8574 is not set
637# CONFIG_PCF8575 is not set
638# CONFIG_SENSORS_PCA9539 is not set
639# CONFIG_SENSORS_TSL2550 is not set
640# CONFIG_I2C_DEBUG_CORE is not set
641# CONFIG_I2C_DEBUG_ALGO is not set
642# CONFIG_I2C_DEBUG_BUS is not set
643# CONFIG_I2C_DEBUG_CHIP is not set
644# CONFIG_SPI is not set
645CONFIG_ARCH_REQUIRE_GPIOLIB=y
646CONFIG_GPIOLIB=y
647# CONFIG_DEBUG_GPIO is not set
648# CONFIG_GPIO_SYSFS is not set
649
650#
651# Memory mapped GPIO expanders:
652#
653
654#
655# I2C GPIO expanders:
656#
657# CONFIG_GPIO_MAX732X is not set
658# CONFIG_GPIO_PCA953X is not set
659# CONFIG_GPIO_PCF857X is not set
660
661#
662# PCI GPIO expanders:
663#
664
665#
666# SPI GPIO expanders:
667#
668# CONFIG_W1 is not set
669# CONFIG_POWER_SUPPLY is not set
670CONFIG_HWMON=m
671# CONFIG_HWMON_VID is not set
672# CONFIG_SENSORS_AD7414 is not set
673# CONFIG_SENSORS_AD7418 is not set
674CONFIG_SENSORS_ADM1021=m
675# CONFIG_SENSORS_ADM1025 is not set
676# CONFIG_SENSORS_ADM1026 is not set
677# CONFIG_SENSORS_ADM1029 is not set
678# CONFIG_SENSORS_ADM1031 is not set
679# CONFIG_SENSORS_ADM9240 is not set
680# CONFIG_SENSORS_ADT7462 is not set
681# CONFIG_SENSORS_ADT7470 is not set
682# CONFIG_SENSORS_ADT7473 is not set
683# CONFIG_SENSORS_ADT7475 is not set
684# CONFIG_SENSORS_ATXP1 is not set
685# CONFIG_SENSORS_DS1621 is not set
686# CONFIG_SENSORS_F71805F is not set
687# CONFIG_SENSORS_F71882FG is not set
688# CONFIG_SENSORS_F75375S is not set
689# CONFIG_SENSORS_G760A is not set
690# CONFIG_SENSORS_GL518SM is not set
691# CONFIG_SENSORS_GL520SM is not set
692# CONFIG_SENSORS_IT87 is not set
693# CONFIG_SENSORS_LM63 is not set
694# CONFIG_SENSORS_LM75 is not set
695# CONFIG_SENSORS_LM77 is not set
696# CONFIG_SENSORS_LM78 is not set
697# CONFIG_SENSORS_LM80 is not set
698# CONFIG_SENSORS_LM83 is not set
699# CONFIG_SENSORS_LM85 is not set
700# CONFIG_SENSORS_LM87 is not set
701# CONFIG_SENSORS_LM90 is not set
702# CONFIG_SENSORS_LM92 is not set
703# CONFIG_SENSORS_LM93 is not set
704# CONFIG_SENSORS_LTC4215 is not set
705# CONFIG_SENSORS_LTC4245 is not set
706# CONFIG_SENSORS_LM95241 is not set
707# CONFIG_SENSORS_MAX1619 is not set
708CONFIG_SENSORS_MAX6650=m
709# CONFIG_SENSORS_PC87360 is not set
710# CONFIG_SENSORS_PC87427 is not set
711# CONFIG_SENSORS_PCF8591 is not set
712# CONFIG_SENSORS_SHT15 is not set
713# CONFIG_SENSORS_DME1737 is not set
714# CONFIG_SENSORS_SMSC47M1 is not set
715# CONFIG_SENSORS_SMSC47M192 is not set
716# CONFIG_SENSORS_SMSC47B397 is not set
717# CONFIG_SENSORS_ADS7828 is not set
718# CONFIG_SENSORS_THMC50 is not set
719# CONFIG_SENSORS_TMP401 is not set
720# CONFIG_SENSORS_VT1211 is not set
721# CONFIG_SENSORS_W83781D is not set
722# CONFIG_SENSORS_W83791D is not set
723# CONFIG_SENSORS_W83792D is not set
724# CONFIG_SENSORS_W83793 is not set
725# CONFIG_SENSORS_W83L785TS is not set
726# CONFIG_SENSORS_W83L786NG is not set
727# CONFIG_SENSORS_W83627HF is not set
728# CONFIG_SENSORS_W83627EHF is not set
729# CONFIG_HWMON_DEBUG_CHIP is not set
730# CONFIG_THERMAL is not set
731# CONFIG_WATCHDOG is not set
732CONFIG_SSB_POSSIBLE=y
733
734#
735# Sonics Silicon Backplane
736#
737# CONFIG_SSB is not set
738
739#
740# Multifunction device drivers
741#
742# CONFIG_MFD_CORE is not set
743# CONFIG_MFD_SM501 is not set
744# CONFIG_MFD_ASIC3 is not set
745# CONFIG_HTC_EGPIO is not set
746# CONFIG_HTC_PASIC3 is not set
747# CONFIG_TPS65010 is not set
748# CONFIG_MFD_TMIO is not set
749# CONFIG_MFD_T7L66XB is not set
750# CONFIG_MFD_TC6387XB is not set
751# CONFIG_MFD_TC6393XB is not set
752# CONFIG_MFD_WM8400 is not set
753# CONFIG_MFD_WM8350_I2C is not set
754# CONFIG_MFD_PCF50633 is not set
755# CONFIG_AB3100_CORE is not set
756# CONFIG_MEDIA_SUPPORT is not set
757
758#
759# Graphics support
760#
761# CONFIG_VGASTATE is not set
762# CONFIG_VIDEO_OUTPUT_CONTROL is not set
763# CONFIG_FB is not set
764# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
765
766#
767# Display device support
768#
769# CONFIG_DISPLAY_SUPPORT is not set
770
771#
772# Console display driver support
773#
774# CONFIG_VGA_CONSOLE is not set
775CONFIG_DUMMY_CONSOLE=y
776# CONFIG_SOUND is not set
777# CONFIG_HID_SUPPORT is not set
778# CONFIG_USB_SUPPORT is not set
779# CONFIG_MMC is not set
780# CONFIG_MEMSTICK is not set
781# CONFIG_ACCESSIBILITY is not set
782# CONFIG_NEW_LEDS is not set
783CONFIG_RTC_LIB=y
784CONFIG_RTC_CLASS=m
785
786#
787# RTC interfaces
788#
789CONFIG_RTC_INTF_SYSFS=y
790CONFIG_RTC_INTF_PROC=y
791CONFIG_RTC_INTF_DEV=y
792# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
793# CONFIG_RTC_DRV_TEST is not set
794
795#
796# I2C RTC drivers
797#
798# CONFIG_RTC_DRV_DS1307 is not set
799# CONFIG_RTC_DRV_DS1374 is not set
800# CONFIG_RTC_DRV_DS1672 is not set
801# CONFIG_RTC_DRV_MAX6900 is not set
802# CONFIG_RTC_DRV_RS5C372 is not set
803# CONFIG_RTC_DRV_ISL1208 is not set
804# CONFIG_RTC_DRV_X1205 is not set
805# CONFIG_RTC_DRV_PCF8563 is not set
806# CONFIG_RTC_DRV_PCF8583 is not set
807# CONFIG_RTC_DRV_M41T80 is not set
808# CONFIG_RTC_DRV_S35390A is not set
809# CONFIG_RTC_DRV_FM3130 is not set
810# CONFIG_RTC_DRV_RX8581 is not set
811# CONFIG_RTC_DRV_RX8025 is not set
812
813#
814# SPI RTC drivers
815#
816
817#
818# Platform RTC drivers
819#
820# CONFIG_RTC_DRV_CMOS is not set
821# CONFIG_RTC_DRV_DS1286 is not set
822# CONFIG_RTC_DRV_DS1511 is not set
823# CONFIG_RTC_DRV_DS1553 is not set
824# CONFIG_RTC_DRV_DS1742 is not set
825# CONFIG_RTC_DRV_STK17TA8 is not set
826# CONFIG_RTC_DRV_M48T86 is not set
827# CONFIG_RTC_DRV_M48T35 is not set
828# CONFIG_RTC_DRV_M48T59 is not set
829# CONFIG_RTC_DRV_BQ4802 is not set
830# CONFIG_RTC_DRV_V3020 is not set
831
832#
833# on-CPU RTC drivers
834#
835CONFIG_RTC_DRV_SA1100=m
836# CONFIG_RTC_DRV_PXA is not set
837CONFIG_DMADEVICES=y
838
839#
840# DMA Devices
841#
842# CONFIG_AUXDISPLAY is not set
843# CONFIG_REGULATOR is not set
844# CONFIG_UIO is not set
845# CONFIG_STAGING is not set
846
847#
848# File systems
849#
850CONFIG_FILE_LOCKING=y
851# CONFIG_FSNOTIFY is not set
852# CONFIG_DNOTIFY is not set
853# CONFIG_INOTIFY is not set
854# CONFIG_INOTIFY_USER is not set
855# CONFIG_QUOTA is not set
856# CONFIG_AUTOFS_FS is not set
857# CONFIG_AUTOFS4_FS is not set
858# CONFIG_FUSE_FS is not set
859
860#
861# Caches
862#
863# CONFIG_FSCACHE is not set
864
865#
866# Pseudo filesystems
867#
868CONFIG_PROC_FS=y
869CONFIG_PROC_SYSCTL=y
870CONFIG_PROC_PAGE_MONITOR=y
871CONFIG_SYSFS=y
872CONFIG_TMPFS=y
873# CONFIG_TMPFS_POSIX_ACL is not set
874# CONFIG_HUGETLB_PAGE is not set
875# CONFIG_CONFIGFS_FS is not set
876CONFIG_MISC_FILESYSTEMS=y
877CONFIG_JFFS2_FS=y
878CONFIG_JFFS2_FS_DEBUG=0
879CONFIG_JFFS2_FS_WRITEBUFFER=y
880CONFIG_JFFS2_FS_WBUF_VERIFY=y
881# CONFIG_JFFS2_SUMMARY is not set
882# CONFIG_JFFS2_FS_XATTR is not set
883# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
884CONFIG_JFFS2_ZLIB=y
885# CONFIG_JFFS2_LZO is not set
886CONFIG_JFFS2_RTIME=y
887# CONFIG_JFFS2_RUBIN is not set
888# CONFIG_ROMFS_FS is not set
889CONFIG_NETWORK_FILESYSTEMS=y
890CONFIG_NFS_FS=m
891CONFIG_NFS_V3=y
892# CONFIG_NFS_V3_ACL is not set
893# CONFIG_NFS_V4 is not set
894# CONFIG_NFSD is not set
895CONFIG_LOCKD=m
896CONFIG_LOCKD_V4=y
897CONFIG_NFS_COMMON=y
898CONFIG_SUNRPC=m
899# CONFIG_RPCSEC_GSS_KRB5 is not set
900# CONFIG_RPCSEC_GSS_SPKM3 is not set
901# CONFIG_SMB_FS is not set
902# CONFIG_CIFS is not set
903# CONFIG_NCP_FS is not set
904# CONFIG_CODA_FS is not set
905# CONFIG_AFS_FS is not set
906CONFIG_NLS=m
907CONFIG_NLS_DEFAULT="utf8"
908# CONFIG_NLS_CODEPAGE_437 is not set
909# CONFIG_NLS_CODEPAGE_737 is not set
910# CONFIG_NLS_CODEPAGE_775 is not set
911# CONFIG_NLS_CODEPAGE_850 is not set
912# CONFIG_NLS_CODEPAGE_852 is not set
913# CONFIG_NLS_CODEPAGE_855 is not set
914# CONFIG_NLS_CODEPAGE_857 is not set
915# CONFIG_NLS_CODEPAGE_860 is not set
916# CONFIG_NLS_CODEPAGE_861 is not set
917# CONFIG_NLS_CODEPAGE_862 is not set
918# CONFIG_NLS_CODEPAGE_863 is not set
919# CONFIG_NLS_CODEPAGE_864 is not set
920# CONFIG_NLS_CODEPAGE_865 is not set
921# CONFIG_NLS_CODEPAGE_866 is not set
922# CONFIG_NLS_CODEPAGE_869 is not set
923# CONFIG_NLS_CODEPAGE_936 is not set
924# CONFIG_NLS_CODEPAGE_950 is not set
925# CONFIG_NLS_CODEPAGE_932 is not set
926# CONFIG_NLS_CODEPAGE_949 is not set
927# CONFIG_NLS_CODEPAGE_874 is not set
928# CONFIG_NLS_ISO8859_8 is not set
929# CONFIG_NLS_CODEPAGE_1250 is not set
930# CONFIG_NLS_CODEPAGE_1251 is not set
931# CONFIG_NLS_ASCII is not set
932# CONFIG_NLS_ISO8859_1 is not set
933# CONFIG_NLS_ISO8859_2 is not set
934# CONFIG_NLS_ISO8859_3 is not set
935# CONFIG_NLS_ISO8859_4 is not set
936# CONFIG_NLS_ISO8859_5 is not set
937# CONFIG_NLS_ISO8859_6 is not set
938# CONFIG_NLS_ISO8859_7 is not set
939# CONFIG_NLS_ISO8859_9 is not set
940# CONFIG_NLS_ISO8859_13 is not set
941# CONFIG_NLS_ISO8859_14 is not set
942# CONFIG_NLS_ISO8859_15 is not set
943# CONFIG_NLS_KOI8_R is not set
944# CONFIG_NLS_KOI8_U is not set
945CONFIG_NLS_UTF8=m
946# CONFIG_DLM is not set
947
948#
949# Kernel hacking
950#
951CONFIG_PRINTK_TIME=y
952CONFIG_ENABLE_WARN_DEPRECATED=y
953CONFIG_ENABLE_MUST_CHECK=y
954CONFIG_FRAME_WARN=1024
955# CONFIG_MAGIC_SYSRQ is not set
956# CONFIG_UNUSED_SYMBOLS is not set
957# CONFIG_DEBUG_FS is not set
958# CONFIG_HEADERS_CHECK is not set
959CONFIG_DEBUG_KERNEL=y
960# CONFIG_DEBUG_SHIRQ is not set
961CONFIG_DETECT_SOFTLOCKUP=y
962# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
963CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
964CONFIG_DETECT_HUNG_TASK=y
965# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
966CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
967# CONFIG_SCHED_DEBUG is not set
968# CONFIG_SCHEDSTATS is not set
969# CONFIG_TIMER_STATS is not set
970# CONFIG_DEBUG_OBJECTS is not set
971# CONFIG_DEBUG_KMEMLEAK is not set
972# CONFIG_DEBUG_RT_MUTEXES is not set
973# CONFIG_RT_MUTEX_TESTER is not set
974# CONFIG_DEBUG_SPINLOCK is not set
975# CONFIG_DEBUG_MUTEXES is not set
976# CONFIG_DEBUG_LOCK_ALLOC is not set
977# CONFIG_PROVE_LOCKING is not set
978# CONFIG_LOCK_STAT is not set
979# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
980# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
981# CONFIG_DEBUG_KOBJECT is not set
982# CONFIG_DEBUG_BUGVERBOSE is not set
983# CONFIG_DEBUG_INFO is not set
984# CONFIG_DEBUG_VM is not set
985# CONFIG_DEBUG_WRITECOUNT is not set
986# CONFIG_DEBUG_MEMORY_INIT is not set
987# CONFIG_DEBUG_LIST is not set
988# CONFIG_DEBUG_SG is not set
989# CONFIG_DEBUG_NOTIFIERS is not set
990CONFIG_FRAME_POINTER=y
991# CONFIG_BOOT_PRINTK_DELAY is not set
992# CONFIG_RCU_TORTURE_TEST is not set
993# CONFIG_RCU_CPU_STALL_DETECTOR is not set
994# CONFIG_KPROBES_SANITY_TEST is not set
995# CONFIG_BACKTRACE_SELF_TEST is not set
996# CONFIG_FAULT_INJECTION is not set
997# CONFIG_LATENCYTOP is not set
998CONFIG_SYSCTL_SYSCALL_CHECK=y
999# CONFIG_PAGE_POISONING is not set
1000CONFIG_HAVE_FUNCTION_TRACER=y
1001CONFIG_TRACING_SUPPORT=y
1002# CONFIG_FTRACE is not set
1003# CONFIG_SAMPLES is not set
1004CONFIG_HAVE_ARCH_KGDB=y
1005# CONFIG_KGDB is not set
1006# CONFIG_ARM_UNWIND is not set
1007# CONFIG_DEBUG_USER is not set
1008# CONFIG_DEBUG_ERRORS is not set
1009# CONFIG_DEBUG_STACK_USAGE is not set
1010# CONFIG_DEBUG_LL is not set
1011
1012#
1013# Security options
1014#
1015# CONFIG_KEYS is not set
1016# CONFIG_SECURITY is not set
1017# CONFIG_SECURITYFS is not set
1018# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1019CONFIG_CRYPTO=y
1020
1021#
1022# Crypto core or helper
1023#
1024# CONFIG_CRYPTO_FIPS is not set
1025CONFIG_CRYPTO_ALGAPI=m
1026CONFIG_CRYPTO_ALGAPI2=m
1027CONFIG_CRYPTO_HASH=m
1028CONFIG_CRYPTO_HASH2=m
1029# CONFIG_CRYPTO_MANAGER is not set
1030# CONFIG_CRYPTO_MANAGER2 is not set
1031# CONFIG_CRYPTO_GF128MUL is not set
1032# CONFIG_CRYPTO_NULL is not set
1033# CONFIG_CRYPTO_CRYPTD is not set
1034# CONFIG_CRYPTO_AUTHENC is not set
1035# CONFIG_CRYPTO_TEST is not set
1036
1037#
1038# Authenticated Encryption with Associated Data
1039#
1040# CONFIG_CRYPTO_CCM is not set
1041# CONFIG_CRYPTO_GCM is not set
1042# CONFIG_CRYPTO_SEQIV is not set
1043
1044#
1045# Block modes
1046#
1047# CONFIG_CRYPTO_CBC is not set
1048# CONFIG_CRYPTO_CTR is not set
1049# CONFIG_CRYPTO_CTS is not set
1050# CONFIG_CRYPTO_ECB is not set
1051# CONFIG_CRYPTO_LRW is not set
1052# CONFIG_CRYPTO_PCBC is not set
1053# CONFIG_CRYPTO_XTS is not set
1054
1055#
1056# Hash modes
1057#
1058# CONFIG_CRYPTO_HMAC is not set
1059# CONFIG_CRYPTO_XCBC is not set
1060
1061#
1062# Digest
1063#
1064CONFIG_CRYPTO_CRC32C=m
1065# CONFIG_CRYPTO_MD4 is not set
1066# CONFIG_CRYPTO_MD5 is not set
1067# CONFIG_CRYPTO_MICHAEL_MIC is not set
1068# CONFIG_CRYPTO_RMD128 is not set
1069# CONFIG_CRYPTO_RMD160 is not set
1070# CONFIG_CRYPTO_RMD256 is not set
1071# CONFIG_CRYPTO_RMD320 is not set
1072# CONFIG_CRYPTO_SHA1 is not set
1073# CONFIG_CRYPTO_SHA256 is not set
1074# CONFIG_CRYPTO_SHA512 is not set
1075# CONFIG_CRYPTO_TGR192 is not set
1076# CONFIG_CRYPTO_WP512 is not set
1077
1078#
1079# Ciphers
1080#
1081# CONFIG_CRYPTO_AES is not set
1082# CONFIG_CRYPTO_ANUBIS is not set
1083# CONFIG_CRYPTO_ARC4 is not set
1084# CONFIG_CRYPTO_BLOWFISH is not set
1085# CONFIG_CRYPTO_CAMELLIA is not set
1086# CONFIG_CRYPTO_CAST5 is not set
1087# CONFIG_CRYPTO_CAST6 is not set
1088# CONFIG_CRYPTO_DES is not set
1089# CONFIG_CRYPTO_FCRYPT is not set
1090# CONFIG_CRYPTO_KHAZAD is not set
1091# CONFIG_CRYPTO_SALSA20 is not set
1092# CONFIG_CRYPTO_SEED is not set
1093# CONFIG_CRYPTO_SERPENT is not set
1094# CONFIG_CRYPTO_TEA is not set
1095# CONFIG_CRYPTO_TWOFISH is not set
1096
1097#
1098# Compression
1099#
1100# CONFIG_CRYPTO_DEFLATE is not set
1101# CONFIG_CRYPTO_ZLIB is not set
1102# CONFIG_CRYPTO_LZO is not set
1103
1104#
1105# Random Number Generation
1106#
1107# CONFIG_CRYPTO_ANSI_CPRNG is not set
1108# CONFIG_CRYPTO_HW is not set
1109# CONFIG_BINARY_PRINTF is not set
1110
1111#
1112# Library routines
1113#
1114CONFIG_BITREVERSE=y
1115CONFIG_GENERIC_FIND_LAST_BIT=y
1116# CONFIG_CRC_CCITT is not set
1117# CONFIG_CRC16 is not set
1118# CONFIG_CRC_T10DIF is not set
1119# CONFIG_CRC_ITU_T is not set
1120CONFIG_CRC32=y
1121# CONFIG_CRC7 is not set
1122CONFIG_LIBCRC32C=m
1123CONFIG_ZLIB_INFLATE=y
1124CONFIG_ZLIB_DEFLATE=y
1125CONFIG_DECOMPRESS_GZIP=y
1126CONFIG_HAS_IOMEM=y
1127CONFIG_HAS_IOPORT=y
1128CONFIG_HAS_DMA=y
1129CONFIG_NLATTR=y
diff --git a/arch/arm/configs/zylonite_defconfig b/arch/arm/configs/zylonite_defconfig
deleted file mode 100644
index 7949d04a3602..000000000000
--- a/arch/arm/configs/zylonite_defconfig
+++ /dev/null
@@ -1,736 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23
4# Tue Oct 23 13:33:20 2007
5#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ZONE_DMA=y
25CONFIG_ARCH_MTD_XIP=y
26CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
28
29#
30# General setup
31#
32CONFIG_EXPERIMENTAL=y
33CONFIG_BROKEN_ON_SMP=y
34CONFIG_INIT_ENV_ARG_LIMIT=32
35CONFIG_LOCALVERSION=""
36CONFIG_LOCALVERSION_AUTO=y
37CONFIG_SWAP=y
38CONFIG_SYSVIPC=y
39CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set
41# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set
43# CONFIG_USER_NS is not set
44# CONFIG_AUDIT is not set
45# CONFIG_IKCONFIG is not set
46CONFIG_LOG_BUF_SHIFT=18
47# CONFIG_CGROUPS is not set
48CONFIG_FAIR_GROUP_SCHED=y
49CONFIG_FAIR_USER_SCHED=y
50# CONFIG_FAIR_CGROUP_SCHED is not set
51CONFIG_SYSFS_DEPRECATED=y
52# CONFIG_RELAY is not set
53# CONFIG_BLK_DEV_INITRD is not set
54# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
55CONFIG_SYSCTL=y
56# CONFIG_EMBEDDED is not set
57CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y
59CONFIG_KALLSYMS=y
60# CONFIG_KALLSYMS_EXTRA_PASS is not set
61CONFIG_HOTPLUG=y
62CONFIG_PRINTK=y
63CONFIG_BUG=y
64CONFIG_ELF_CORE=y
65CONFIG_BASE_FULL=y
66CONFIG_FUTEX=y
67CONFIG_ANON_INODES=y
68CONFIG_EPOLL=y
69CONFIG_SIGNALFD=y
70CONFIG_EVENTFD=y
71CONFIG_SHMEM=y
72CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_SLUB_DEBUG=y
74# CONFIG_SLAB is not set
75CONFIG_SLUB=y
76# CONFIG_SLOB is not set
77CONFIG_RT_MUTEXES=y
78# CONFIG_TINY_SHMEM is not set
79CONFIG_BASE_SMALL=0
80CONFIG_MODULES=y
81# CONFIG_MODULE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set
84# CONFIG_KMOD is not set
85CONFIG_BLOCK=y
86# CONFIG_LBD is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set
90
91#
92# IO Schedulers
93#
94CONFIG_IOSCHED_NOOP=y
95CONFIG_IOSCHED_AS=y
96CONFIG_IOSCHED_DEADLINE=y
97CONFIG_IOSCHED_CFQ=y
98# CONFIG_DEFAULT_AS is not set
99# CONFIG_DEFAULT_DEADLINE is not set
100CONFIG_DEFAULT_CFQ=y
101# CONFIG_DEFAULT_NOOP is not set
102CONFIG_DEFAULT_IOSCHED="cfq"
103
104#
105# System Type
106#
107# CONFIG_ARCH_AAEC2000 is not set
108# CONFIG_ARCH_INTEGRATOR is not set
109# CONFIG_ARCH_REALVIEW is not set
110# CONFIG_ARCH_VERSATILE is not set
111# CONFIG_ARCH_AT91 is not set
112# CONFIG_ARCH_CLPS7500 is not set
113# CONFIG_ARCH_CLPS711X is not set
114# CONFIG_ARCH_CO285 is not set
115# CONFIG_ARCH_EBSA110 is not set
116# CONFIG_ARCH_EP93XX is not set
117# CONFIG_ARCH_FOOTBRIDGE is not set
118# CONFIG_ARCH_NETX is not set
119# CONFIG_ARCH_H720X is not set
120# CONFIG_ARCH_IMX is not set
121# CONFIG_ARCH_IOP13XX is not set
122# CONFIG_ARCH_IOP32X is not set
123# CONFIG_ARCH_IOP33X is not set
124# CONFIG_ARCH_IXP23XX is not set
125# CONFIG_ARCH_IXP2000 is not set
126# CONFIG_ARCH_IXP4XX is not set
127# CONFIG_ARCH_L7200 is not set
128# CONFIG_ARCH_KS8695 is not set
129# CONFIG_ARCH_NS9XXX is not set
130# CONFIG_ARCH_MXC is not set
131# CONFIG_ARCH_PNX4008 is not set
132CONFIG_ARCH_PXA=y
133# CONFIG_ARCH_RPC is not set
134# CONFIG_ARCH_SA1100 is not set
135# CONFIG_ARCH_S3C2410 is not set
136# CONFIG_ARCH_SHARK is not set
137# CONFIG_ARCH_LH7A40X is not set
138# CONFIG_ARCH_DAVINCI is not set
139# CONFIG_ARCH_OMAP is not set
140
141#
142# Intel PXA2xx/PXA3xx Implementations
143#
144
145#
146# Supported PXA3xx Processor Variants
147#
148CONFIG_CPU_PXA300=y
149CONFIG_CPU_PXA310=y
150CONFIG_CPU_PXA320=y
151# CONFIG_ARCH_LUBBOCK is not set
152# CONFIG_MACH_LOGICPD_PXA270 is not set
153# CONFIG_MACH_MAINSTONE is not set
154# CONFIG_ARCH_PXA_IDP is not set
155# CONFIG_PXA_SHARPSL is not set
156# CONFIG_MACH_TRIZEPS4 is not set
157# CONFIG_MACH_EM_X270 is not set
158CONFIG_MACH_ZYLONITE=y
159# CONFIG_MACH_ARMCORE is not set
160CONFIG_PXA3xx=y
161
162#
163# Boot options
164#
165
166#
167# Power management
168#
169
170#
171# Processor Type
172#
173CONFIG_CPU_32=y
174CONFIG_CPU_XSC3=y
175CONFIG_CPU_32v5=y
176CONFIG_CPU_ABRT_EV5T=y
177CONFIG_CPU_CACHE_VIVT=y
178CONFIG_CPU_TLB_V4WBI=y
179CONFIG_CPU_CP15=y
180CONFIG_CPU_CP15_MMU=y
181CONFIG_IO_36=y
182
183#
184# Processor Features
185#
186# CONFIG_ARM_THUMB is not set
187# CONFIG_CPU_DCACHE_DISABLE is not set
188# CONFIG_CPU_BPREDICT_DISABLE is not set
189# CONFIG_OUTER_CACHE is not set
190CONFIG_IWMMXT=y
191
192#
193# Bus support
194#
195# CONFIG_PCI_SYSCALL is not set
196# CONFIG_ARCH_SUPPORTS_MSI is not set
197# CONFIG_PCCARD is not set
198
199#
200# Kernel Features
201#
202# CONFIG_TICK_ONESHOT is not set
203# CONFIG_NO_HZ is not set
204# CONFIG_HIGH_RES_TIMERS is not set
205CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
206# CONFIG_PREEMPT is not set
207CONFIG_HZ=100
208CONFIG_AEABI=y
209CONFIG_OABI_COMPAT=y
210# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
211CONFIG_SELECT_MEMORY_MODEL=y
212CONFIG_FLATMEM_MANUAL=y
213# CONFIG_DISCONTIGMEM_MANUAL is not set
214# CONFIG_SPARSEMEM_MANUAL is not set
215CONFIG_FLATMEM=y
216CONFIG_FLAT_NODE_MEM_MAP=y
217# CONFIG_SPARSEMEM_STATIC is not set
218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_SPLIT_PTLOCK_CPUS=4096
220# CONFIG_RESOURCES_64BIT is not set
221CONFIG_ZONE_DMA_FLAG=1
222CONFIG_BOUNCE=y
223CONFIG_VIRT_TO_BUS=y
224CONFIG_ALIGNMENT_TRAP=y
225
226#
227# Boot options
228#
229CONFIG_ZBOOT_ROM_TEXT=0x0
230CONFIG_ZBOOT_ROM_BSS=0x0
231CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfs/rootfs/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS0,38400 mem=64M debug"
232# CONFIG_XIP_KERNEL is not set
233# CONFIG_KEXEC is not set
234
235#
236# Floating point emulation
237#
238
239#
240# At least one emulation must be selected
241#
242CONFIG_FPE_NWFPE=y
243# CONFIG_FPE_NWFPE_XP is not set
244# CONFIG_FPE_FASTFPE is not set
245
246#
247# Userspace binary formats
248#
249CONFIG_BINFMT_ELF=y
250# CONFIG_BINFMT_AOUT is not set
251# CONFIG_BINFMT_MISC is not set
252
253#
254# Power management options
255#
256# CONFIG_PM is not set
257CONFIG_SUSPEND_UP_POSSIBLE=y
258
259#
260# Networking
261#
262CONFIG_NET=y
263
264#
265# Networking options
266#
267CONFIG_PACKET=y
268# CONFIG_PACKET_MMAP is not set
269CONFIG_UNIX=y
270# CONFIG_NET_KEY is not set
271CONFIG_INET=y
272# CONFIG_IP_MULTICAST is not set
273# CONFIG_IP_ADVANCED_ROUTER is not set
274CONFIG_IP_FIB_HASH=y
275CONFIG_IP_PNP=y
276CONFIG_IP_PNP_DHCP=y
277CONFIG_IP_PNP_BOOTP=y
278CONFIG_IP_PNP_RARP=y
279# CONFIG_NET_IPIP is not set
280# CONFIG_NET_IPGRE is not set
281# CONFIG_ARPD is not set
282# CONFIG_SYN_COOKIES is not set
283# CONFIG_INET_AH is not set
284# CONFIG_INET_ESP is not set
285# CONFIG_INET_IPCOMP is not set
286# CONFIG_INET_XFRM_TUNNEL is not set
287# CONFIG_INET_TUNNEL is not set
288# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
289# CONFIG_INET_XFRM_MODE_TUNNEL is not set
290# CONFIG_INET_XFRM_MODE_BEET is not set
291# CONFIG_INET_LRO is not set
292# CONFIG_INET_DIAG is not set
293# CONFIG_TCP_CONG_ADVANCED is not set
294CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set
303# CONFIG_IP_SCTP is not set
304# CONFIG_TIPC is not set
305# CONFIG_ATM is not set
306# CONFIG_BRIDGE is not set
307# CONFIG_VLAN_8021Q is not set
308# CONFIG_DECNET is not set
309# CONFIG_LLC2 is not set
310# CONFIG_IPX is not set
311# CONFIG_ATALK is not set
312# CONFIG_X25 is not set
313# CONFIG_LAPB is not set
314# CONFIG_ECONET is not set
315# CONFIG_WAN_ROUTER is not set
316# CONFIG_NET_SCHED is not set
317
318#
319# Network testing
320#
321# CONFIG_NET_PKTGEN is not set
322# CONFIG_HAMRADIO is not set
323# CONFIG_IRDA is not set
324# CONFIG_BT is not set
325# CONFIG_AF_RXRPC is not set
326
327#
328# Wireless
329#
330# CONFIG_CFG80211 is not set
331# CONFIG_WIRELESS_EXT is not set
332# CONFIG_MAC80211 is not set
333# CONFIG_IEEE80211 is not set
334# CONFIG_RFKILL is not set
335# CONFIG_NET_9P is not set
336
337#
338# Device Drivers
339#
340
341#
342# Generic Driver Options
343#
344CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
345CONFIG_STANDALONE=y
346CONFIG_PREVENT_FIRMWARE_BUILD=y
347CONFIG_FW_LOADER=y
348# CONFIG_SYS_HYPERVISOR is not set
349# CONFIG_CONNECTOR is not set
350# CONFIG_MTD is not set
351# CONFIG_PARPORT is not set
352# CONFIG_BLK_DEV is not set
353# CONFIG_MISC_DEVICES is not set
354# CONFIG_IDE is not set
355
356#
357# SCSI device support
358#
359# CONFIG_RAID_ATTRS is not set
360# CONFIG_SCSI is not set
361# CONFIG_SCSI_DMA is not set
362# CONFIG_SCSI_NETLINK is not set
363# CONFIG_ATA is not set
364# CONFIG_MD is not set
365CONFIG_NETDEVICES=y
366# CONFIG_NETDEVICES_MULTIQUEUE is not set
367# CONFIG_DUMMY is not set
368# CONFIG_BONDING is not set
369# CONFIG_MACVLAN is not set
370# CONFIG_EQUALIZER is not set
371# CONFIG_TUN is not set
372# CONFIG_VETH is not set
373# CONFIG_PHYLIB is not set
374CONFIG_NET_ETHERNET=y
375CONFIG_MII=y
376# CONFIG_AX88796 is not set
377CONFIG_SMC91X=y
378# CONFIG_DM9000 is not set
379# CONFIG_SMC911X is not set
380# CONFIG_IBM_NEW_EMAC_ZMII is not set
381# CONFIG_IBM_NEW_EMAC_RGMII is not set
382# CONFIG_IBM_NEW_EMAC_TAH is not set
383# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
384# CONFIG_B44 is not set
385# CONFIG_NETDEV_1000 is not set
386# CONFIG_NETDEV_10000 is not set
387
388#
389# Wireless LAN
390#
391# CONFIG_WLAN_PRE80211 is not set
392# CONFIG_WLAN_80211 is not set
393# CONFIG_WAN is not set
394# CONFIG_PPP is not set
395# CONFIG_SLIP is not set
396# CONFIG_SHAPER is not set
397# CONFIG_NETCONSOLE is not set
398# CONFIG_NETPOLL is not set
399# CONFIG_NET_POLL_CONTROLLER is not set
400# CONFIG_ISDN is not set
401
402#
403# Input device support
404#
405CONFIG_INPUT=y
406# CONFIG_INPUT_FF_MEMLESS is not set
407# CONFIG_INPUT_POLLDEV is not set
408
409#
410# Userland interfaces
411#
412CONFIG_INPUT_MOUSEDEV=y
413# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
414CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
415CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
416# CONFIG_INPUT_JOYDEV is not set
417# CONFIG_INPUT_EVDEV is not set
418# CONFIG_INPUT_EVBUG is not set
419
420#
421# Input Device Drivers
422#
423# CONFIG_INPUT_KEYBOARD is not set
424# CONFIG_INPUT_MOUSE is not set
425# CONFIG_INPUT_JOYSTICK is not set
426# CONFIG_INPUT_TABLET is not set
427# CONFIG_INPUT_TOUCHSCREEN is not set
428# CONFIG_INPUT_MISC is not set
429
430#
431# Hardware I/O ports
432#
433# CONFIG_SERIO is not set
434# CONFIG_GAMEPORT is not set
435
436#
437# Character devices
438#
439CONFIG_VT=y
440CONFIG_VT_CONSOLE=y
441CONFIG_HW_CONSOLE=y
442# CONFIG_VT_HW_CONSOLE_BINDING is not set
443# CONFIG_SERIAL_NONSTANDARD is not set
444
445#
446# Serial drivers
447#
448# CONFIG_SERIAL_8250 is not set
449
450#
451# Non-8250 serial port support
452#
453CONFIG_SERIAL_PXA=y
454CONFIG_SERIAL_PXA_CONSOLE=y
455CONFIG_SERIAL_CORE=y
456CONFIG_SERIAL_CORE_CONSOLE=y
457CONFIG_UNIX98_PTYS=y
458# CONFIG_LEGACY_PTYS is not set
459# CONFIG_IPMI_HANDLER is not set
460# CONFIG_HW_RANDOM is not set
461# CONFIG_NVRAM is not set
462# CONFIG_R3964 is not set
463# CONFIG_RAW_DRIVER is not set
464# CONFIG_TCG_TPM is not set
465# CONFIG_I2C is not set
466
467#
468# SPI support
469#
470# CONFIG_SPI is not set
471# CONFIG_SPI_MASTER is not set
472# CONFIG_W1 is not set
473# CONFIG_POWER_SUPPLY is not set
474# CONFIG_HWMON is not set
475
476#
477# Sonics Silicon Backplane
478#
479CONFIG_SSB_POSSIBLE=y
480# CONFIG_SSB is not set
481
482#
483# Multifunction device drivers
484#
485# CONFIG_MFD_SM501 is not set
486
487#
488# Multimedia devices
489#
490# CONFIG_VIDEO_DEV is not set
491# CONFIG_DVB_CORE is not set
492# CONFIG_DAB is not set
493
494#
495# Graphics support
496#
497# CONFIG_VGASTATE is not set
498# CONFIG_VIDEO_OUTPUT_CONTROL is not set
499CONFIG_FB=y
500# CONFIG_FIRMWARE_EDID is not set
501# CONFIG_FB_DDC is not set
502CONFIG_FB_CFB_FILLRECT=y
503CONFIG_FB_CFB_COPYAREA=y
504CONFIG_FB_CFB_IMAGEBLIT=y
505# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
506# CONFIG_FB_SYS_FILLRECT is not set
507# CONFIG_FB_SYS_COPYAREA is not set
508# CONFIG_FB_SYS_IMAGEBLIT is not set
509# CONFIG_FB_SYS_FOPS is not set
510CONFIG_FB_DEFERRED_IO=y
511# CONFIG_FB_SVGALIB is not set
512# CONFIG_FB_MACMODES is not set
513# CONFIG_FB_BACKLIGHT is not set
514# CONFIG_FB_MODE_HELPERS is not set
515# CONFIG_FB_TILEBLITTING is not set
516
517#
518# Frame buffer hardware drivers
519#
520# CONFIG_FB_S1D13XXX is not set
521CONFIG_FB_PXA=y
522# CONFIG_FB_PXA_PARAMETERS is not set
523# CONFIG_FB_MBX is not set
524# CONFIG_FB_VIRTUAL is not set
525# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
526
527#
528# Display device support
529#
530# CONFIG_DISPLAY_SUPPORT is not set
531
532#
533# Console display driver support
534#
535# CONFIG_VGA_CONSOLE is not set
536CONFIG_DUMMY_CONSOLE=y
537CONFIG_FRAMEBUFFER_CONSOLE=y
538CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
539# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
540CONFIG_FONTS=y
541# CONFIG_FONT_8x8 is not set
542# CONFIG_FONT_8x16 is not set
543CONFIG_FONT_6x11=y
544# CONFIG_FONT_7x14 is not set
545# CONFIG_FONT_PEARL_8x8 is not set
546# CONFIG_FONT_ACORN_8x8 is not set
547# CONFIG_FONT_MINI_4x6 is not set
548# CONFIG_FONT_SUN8x16 is not set
549# CONFIG_FONT_SUN12x22 is not set
550# CONFIG_FONT_10x18 is not set
551CONFIG_LOGO=y
552CONFIG_LOGO_LINUX_MONO=y
553CONFIG_LOGO_LINUX_VGA16=y
554CONFIG_LOGO_LINUX_CLUT224=y
555
556#
557# Sound
558#
559# CONFIG_SOUND is not set
560# CONFIG_HID_SUPPORT is not set
561# CONFIG_USB_SUPPORT is not set
562# CONFIG_MMC is not set
563# CONFIG_NEW_LEDS is not set
564CONFIG_RTC_LIB=y
565# CONFIG_RTC_CLASS is not set
566
567#
568# File systems
569#
570# CONFIG_EXT2_FS is not set
571# CONFIG_EXT3_FS is not set
572# CONFIG_EXT4DEV_FS is not set
573# CONFIG_REISERFS_FS is not set
574# CONFIG_JFS_FS is not set
575CONFIG_FS_POSIX_ACL=y
576# CONFIG_XFS_FS is not set
577# CONFIG_GFS2_FS is not set
578# CONFIG_OCFS2_FS is not set
579# CONFIG_MINIX_FS is not set
580# CONFIG_ROMFS_FS is not set
581# CONFIG_INOTIFY is not set
582# CONFIG_QUOTA is not set
583CONFIG_DNOTIFY=y
584# CONFIG_AUTOFS_FS is not set
585# CONFIG_AUTOFS4_FS is not set
586# CONFIG_FUSE_FS is not set
587
588#
589# CD-ROM/DVD Filesystems
590#
591# CONFIG_ISO9660_FS is not set
592# CONFIG_UDF_FS is not set
593
594#
595# DOS/FAT/NT Filesystems
596#
597# CONFIG_MSDOS_FS is not set
598# CONFIG_VFAT_FS is not set
599# CONFIG_NTFS_FS is not set
600
601#
602# Pseudo filesystems
603#
604CONFIG_PROC_FS=y
605CONFIG_PROC_SYSCTL=y
606CONFIG_SYSFS=y
607# CONFIG_TMPFS is not set
608# CONFIG_HUGETLB_PAGE is not set
609# CONFIG_CONFIGFS_FS is not set
610
611#
612# Miscellaneous filesystems
613#
614# CONFIG_ADFS_FS is not set
615# CONFIG_AFFS_FS is not set
616# CONFIG_HFS_FS is not set
617# CONFIG_HFSPLUS_FS is not set
618# CONFIG_BEFS_FS is not set
619# CONFIG_BFS_FS is not set
620# CONFIG_EFS_FS is not set
621# CONFIG_CRAMFS is not set
622# CONFIG_VXFS_FS is not set
623# CONFIG_HPFS_FS is not set
624# CONFIG_QNX4FS_FS is not set
625# CONFIG_SYSV_FS is not set
626# CONFIG_UFS_FS is not set
627CONFIG_NETWORK_FILESYSTEMS=y
628CONFIG_NFS_FS=y
629CONFIG_NFS_V3=y
630CONFIG_NFS_V3_ACL=y
631CONFIG_NFS_V4=y
632CONFIG_NFS_DIRECTIO=y
633# CONFIG_NFSD is not set
634CONFIG_ROOT_NFS=y
635CONFIG_LOCKD=y
636CONFIG_LOCKD_V4=y
637CONFIG_NFS_ACL_SUPPORT=y
638CONFIG_NFS_COMMON=y
639CONFIG_SUNRPC=y
640CONFIG_SUNRPC_GSS=y
641# CONFIG_SUNRPC_BIND34 is not set
642CONFIG_RPCSEC_GSS_KRB5=y
643# CONFIG_RPCSEC_GSS_SPKM3 is not set
644# CONFIG_SMB_FS is not set
645# CONFIG_CIFS is not set
646# CONFIG_NCP_FS is not set
647# CONFIG_CODA_FS is not set
648# CONFIG_AFS_FS is not set
649
650#
651# Partition Types
652#
653# CONFIG_PARTITION_ADVANCED is not set
654CONFIG_MSDOS_PARTITION=y
655# CONFIG_NLS is not set
656# CONFIG_DLM is not set
657# CONFIG_INSTRUMENTATION is not set
658
659#
660# Kernel hacking
661#
662# CONFIG_PRINTK_TIME is not set
663CONFIG_ENABLE_MUST_CHECK=y
664# CONFIG_MAGIC_SYSRQ is not set
665# CONFIG_UNUSED_SYMBOLS is not set
666# CONFIG_DEBUG_FS is not set
667# CONFIG_HEADERS_CHECK is not set
668# CONFIG_DEBUG_KERNEL is not set
669# CONFIG_SLUB_DEBUG_ON is not set
670CONFIG_DEBUG_BUGVERBOSE=y
671CONFIG_FRAME_POINTER=y
672# CONFIG_SAMPLES is not set
673CONFIG_DEBUG_USER=y
674
675#
676# Security options
677#
678# CONFIG_KEYS is not set
679# CONFIG_SECURITY is not set
680# CONFIG_SECURITY_FILE_CAPABILITIES is not set
681CONFIG_CRYPTO=y
682CONFIG_CRYPTO_ALGAPI=y
683CONFIG_CRYPTO_BLKCIPHER=y
684CONFIG_CRYPTO_MANAGER=y
685# CONFIG_CRYPTO_HMAC is not set
686# CONFIG_CRYPTO_XCBC is not set
687# CONFIG_CRYPTO_NULL is not set
688# CONFIG_CRYPTO_MD4 is not set
689CONFIG_CRYPTO_MD5=y
690# CONFIG_CRYPTO_SHA1 is not set
691# CONFIG_CRYPTO_SHA256 is not set
692# CONFIG_CRYPTO_SHA512 is not set
693# CONFIG_CRYPTO_WP512 is not set
694# CONFIG_CRYPTO_TGR192 is not set
695# CONFIG_CRYPTO_GF128MUL is not set
696# CONFIG_CRYPTO_ECB is not set
697CONFIG_CRYPTO_CBC=y
698# CONFIG_CRYPTO_PCBC is not set
699# CONFIG_CRYPTO_LRW is not set
700# CONFIG_CRYPTO_XTS is not set
701# CONFIG_CRYPTO_CRYPTD is not set
702CONFIG_CRYPTO_DES=y
703# CONFIG_CRYPTO_FCRYPT is not set
704# CONFIG_CRYPTO_BLOWFISH is not set
705# CONFIG_CRYPTO_TWOFISH is not set
706# CONFIG_CRYPTO_SERPENT is not set
707# CONFIG_CRYPTO_AES is not set
708# CONFIG_CRYPTO_CAST5 is not set
709# CONFIG_CRYPTO_CAST6 is not set
710# CONFIG_CRYPTO_TEA is not set
711# CONFIG_CRYPTO_ARC4 is not set
712# CONFIG_CRYPTO_KHAZAD is not set
713# CONFIG_CRYPTO_ANUBIS is not set
714# CONFIG_CRYPTO_SEED is not set
715# CONFIG_CRYPTO_DEFLATE is not set
716# CONFIG_CRYPTO_MICHAEL_MIC is not set
717# CONFIG_CRYPTO_CRC32C is not set
718# CONFIG_CRYPTO_CAMELLIA is not set
719# CONFIG_CRYPTO_TEST is not set
720# CONFIG_CRYPTO_AUTHENC is not set
721# CONFIG_CRYPTO_HW is not set
722
723#
724# Library routines
725#
726CONFIG_BITREVERSE=y
727# CONFIG_CRC_CCITT is not set
728# CONFIG_CRC16 is not set
729# CONFIG_CRC_ITU_T is not set
730CONFIG_CRC32=y
731# CONFIG_CRC7 is not set
732# CONFIG_LIBCRC32C is not set
733CONFIG_PLIST=y
734CONFIG_HAS_IOMEM=y
735CONFIG_HAS_IOPORT=y
736CONFIG_HAS_DMA=y
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index 54a1f1d76b14..20ae96cc0020 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -78,7 +78,10 @@ static inline unsigned int __attribute_const__ read_cpuid_tcmstatus(void)
78#else 78#else
79static inline int cpu_is_xsc3(void) 79static inline int cpu_is_xsc3(void)
80{ 80{
81 if ((read_cpuid_id() & 0xffffe000) == 0x69056000) 81 unsigned int id;
82 id = read_cpuid_id() & 0xffffe000;
83 /* It covers both Intel ID and Marvell ID */
84 if ((id == 0x69056000) || (id == 0x56056000))
82 return 1; 85 return 1;
83 86
84 return 0; 87 return 0;
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 89c992b8f75b..a6f8eab14ba5 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -21,6 +21,11 @@ config CPU_PXA930
21 21
22config CPU_PXA935 22config CPU_PXA935
23 bool "PXA935 (codename Tavor-P65)" 23 bool "PXA935 (codename Tavor-P65)"
24 select CPU_PXA930
25
26config CPU_PXA950
27 bool "PXA950 (codename Tavor-PV2)"
28 select CPU_PXA930
24 29
25endmenu 30endmenu
26 31
@@ -79,6 +84,12 @@ config MACH_MP900C
79 bool "Nec Mobilepro 900/c" 84 bool "Nec Mobilepro 900/c"
80 select PXA25x 85 select PXA25x
81 86
87config MACH_BALLOON3
88 bool "Balloon 3 board"
89 select PXA27x
90 select IWMMXT
91 select PXA_HAVE_BOARD_IRQS
92
82config ARCH_PXA_IDP 93config ARCH_PXA_IDP
83 bool "Accelent Xscale IDP" 94 bool "Accelent Xscale IDP"
84 select PXA25x 95 select PXA25x
@@ -371,6 +382,15 @@ config MACH_PALMTE2
371 Say Y here if you intend to run this kernel on a Palm Tungsten|E2 382 Say Y here if you intend to run this kernel on a Palm Tungsten|E2
372 handheld computer. 383 handheld computer.
373 384
385config MACH_PALMTC
386 bool "Palm Tungsten|C"
387 default y
388 depends on ARCH_PXA_PALM
389 select PXA25x
390 help
391 Say Y here if you intend to run this kernel on a Palm Tungsten|C
392 handheld computer.
393
374config MACH_PALMT5 394config MACH_PALMT5
375 bool "Palm Tungsten|T5" 395 bool "Palm Tungsten|T5"
376 default y 396 default y
@@ -458,6 +478,7 @@ config PXA_EZX
458 select PXA27x 478 select PXA27x
459 select IWMMXT 479 select IWMMXT
460 select HAVE_PWM 480 select HAVE_PWM
481 select PXA_HAVE_BOARD_IRQS
461 482
462config MACH_EZX_A780 483config MACH_EZX_A780
463 bool "Motorola EZX A780" 484 bool "Motorola EZX A780"
@@ -489,6 +510,21 @@ config MACH_EZX_E2
489 default y 510 default y
490 depends on PXA_EZX 511 depends on PXA_EZX
491 512
513config MACH_XCEP
514 bool "Iskratel Electronics XCEP"
515 select PXA25x
516 select MTD
517 select MTD_PARTITIONS
518 select MTD_PHYSMAP
519 select MTD_CFI_INTELEXT
520 select MTD_CFI
521 select MTD_CHAR
522 select SMC91X
523 select PXA_SSP
524 help
525 PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash.
526 Tuned for usage in Libera instruments for particle accelerators.
527
492endmenu 528endmenu
493 529
494config PXA25x 530config PXA25x
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index d4c6122a342f..f10e152bfc27 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -31,6 +31,7 @@ obj-$(CONFIG_GUMSTIX_AM300EPD) += am300epd.o
31obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o 31obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
32obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o 32obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o
33obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o 33obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o
34obj-$(CONFIG_MACH_BALLOON3) += balloon3.o
34obj-$(CONFIG_MACH_MP900C) += mp900.o 35obj-$(CONFIG_MACH_MP900C) += mp900.o
35obj-$(CONFIG_ARCH_PXA_IDP) += idp.o 36obj-$(CONFIG_ARCH_PXA_IDP) += idp.o
36obj-$(CONFIG_MACH_TRIZEPS4) += trizeps4.o 37obj-$(CONFIG_MACH_TRIZEPS4) += trizeps4.o
@@ -58,6 +59,7 @@ obj-$(CONFIG_MACH_E750) += e750.o
58obj-$(CONFIG_MACH_E400) += e400.o 59obj-$(CONFIG_MACH_E400) += e400.o
59obj-$(CONFIG_MACH_E800) += e800.o 60obj-$(CONFIG_MACH_E800) += e800.o
60obj-$(CONFIG_MACH_PALMTE2) += palmte2.o 61obj-$(CONFIG_MACH_PALMTE2) += palmte2.o
62obj-$(CONFIG_MACH_PALMTC) += palmtc.o
61obj-$(CONFIG_MACH_PALMT5) += palmt5.o 63obj-$(CONFIG_MACH_PALMT5) += palmt5.o
62obj-$(CONFIG_MACH_PALMTX) += palmtx.o 64obj-$(CONFIG_MACH_PALMTX) += palmtx.o
63obj-$(CONFIG_MACH_PALMLD) += palmld.o 65obj-$(CONFIG_MACH_PALMLD) += palmld.o
@@ -78,6 +80,8 @@ obj-$(CONFIG_MACH_ARMCORE) += cm-x2xx.o cm-x255.o cm-x270.o
78obj-$(CONFIG_MACH_CM_X300) += cm-x300.o 80obj-$(CONFIG_MACH_CM_X300) += cm-x300.o
79obj-$(CONFIG_PXA_EZX) += ezx.o 81obj-$(CONFIG_PXA_EZX) += ezx.o
80 82
83obj-$(CONFIG_MACH_XCEP) += xcep.o
84
81obj-$(CONFIG_MACH_INTELMOTE2) += imote2.o 85obj-$(CONFIG_MACH_INTELMOTE2) += imote2.o
82obj-$(CONFIG_MACH_STARGATE2) += stargate2.o 86obj-$(CONFIG_MACH_STARGATE2) += stargate2.o
83obj-$(CONFIG_MACH_CSB726) += csb726.o 87obj-$(CONFIG_MACH_CSB726) += csb726.o
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
new file mode 100644
index 000000000000..f23138b8fca3
--- /dev/null
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -0,0 +1,361 @@
1/*
2 * linux/arch/arm/mach-pxa/balloon3.c
3 *
4 * Support for Balloonboard.org Balloon3 board.
5 *
6 * Author: Nick Bane, Wookey, Jonathan McDowell
7 * Created: June, 2006
8 * Copyright: Toby Churchill Ltd
9 * Derived from mainstone.c, by Nico Pitre
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#include <linux/init.h>
17#include <linux/platform_device.h>
18#include <linux/sysdev.h>
19#include <linux/interrupt.h>
20#include <linux/sched.h>
21#include <linux/bitops.h>
22#include <linux/fb.h>
23#include <linux/gpio.h>
24#include <linux/ioport.h>
25#include <linux/mtd/mtd.h>
26#include <linux/mtd/partitions.h>
27#include <linux/types.h>
28
29#include <asm/setup.h>
30#include <asm/mach-types.h>
31#include <asm/irq.h>
32#include <asm/sizes.h>
33
34#include <asm/mach/arch.h>
35#include <asm/mach/map.h>
36#include <asm/mach/irq.h>
37#include <asm/mach/flash.h>
38
39#include <mach/pxa27x.h>
40#include <mach/balloon3.h>
41#include <mach/audio.h>
42#include <mach/pxafb.h>
43#include <mach/mmc.h>
44#include <mach/udc.h>
45#include <mach/pxa27x-udc.h>
46#include <mach/irda.h>
47#include <mach/ohci.h>
48
49#include <plat/i2c.h>
50
51#include "generic.h"
52#include "devices.h"
53
54static unsigned long balloon3_irq_enabled;
55
56static unsigned long balloon3_features_present =
57 (1 << BALLOON3_FEATURE_OHCI) | (1 << BALLOON3_FEATURE_CF) |
58 (1 << BALLOON3_FEATURE_AUDIO) |
59 (1 << BALLOON3_FEATURE_TOPPOLY);
60
61int balloon3_has(enum balloon3_features feature)
62{
63 return (balloon3_features_present & (1 << feature)) ? 1 : 0;
64}
65EXPORT_SYMBOL_GPL(balloon3_has);
66
67int __init parse_balloon3_features(char *arg)
68{
69 if (!arg)
70 return 0;
71
72 return strict_strtoul(arg, 0, &balloon3_features_present);
73}
74early_param("balloon3_features", parse_balloon3_features);
75
76static void balloon3_mask_irq(unsigned int irq)
77{
78 int balloon3_irq = (irq - BALLOON3_IRQ(0));
79 balloon3_irq_enabled &= ~(1 << balloon3_irq);
80 __raw_writel(~balloon3_irq_enabled, BALLOON3_INT_CONTROL_REG);
81}
82
83static void balloon3_unmask_irq(unsigned int irq)
84{
85 int balloon3_irq = (irq - BALLOON3_IRQ(0));
86 balloon3_irq_enabled |= (1 << balloon3_irq);
87 __raw_writel(~balloon3_irq_enabled, BALLOON3_INT_CONTROL_REG);
88}
89
90static struct irq_chip balloon3_irq_chip = {
91 .name = "FPGA",
92 .ack = balloon3_mask_irq,
93 .mask = balloon3_mask_irq,
94 .unmask = balloon3_unmask_irq,
95};
96
97static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
98{
99 unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
100 balloon3_irq_enabled;
101
102 do {
103 /* clear useless edge notification */
104 if (desc->chip->ack)
105 desc->chip->ack(BALLOON3_AUX_NIRQ);
106 while (pending) {
107 irq = BALLOON3_IRQ(0) + __ffs(pending);
108 generic_handle_irq(irq);
109 pending &= pending - 1;
110 }
111 pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
112 balloon3_irq_enabled;
113 } while (pending);
114}
115
116static void __init balloon3_init_irq(void)
117{
118 int irq;
119
120 pxa27x_init_irq();
121 /* setup extra Balloon3 irqs */
122 for (irq = BALLOON3_IRQ(0); irq <= BALLOON3_IRQ(7); irq++) {
123 set_irq_chip(irq, &balloon3_irq_chip);
124 set_irq_handler(irq, handle_level_irq);
125 set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
126 }
127
128 set_irq_chained_handler(BALLOON3_AUX_NIRQ, balloon3_irq_handler);
129 set_irq_type(BALLOON3_AUX_NIRQ, IRQ_TYPE_EDGE_FALLING);
130
131 pr_debug("%s: chained handler installed - irq %d automatically "
132 "enabled\n", __func__, BALLOON3_AUX_NIRQ);
133}
134
135static void balloon3_backlight_power(int on)
136{
137 pr_debug("%s: power is %s\n", __func__, on ? "on" : "off");
138 gpio_set_value(BALLOON3_GPIO_RUN_BACKLIGHT, on);
139}
140
141static unsigned long balloon3_lcd_pin_config[] = {
142 /* LCD - 16bpp Active TFT */
143 GPIO58_LCD_LDD_0,
144 GPIO59_LCD_LDD_1,
145 GPIO60_LCD_LDD_2,
146 GPIO61_LCD_LDD_3,
147 GPIO62_LCD_LDD_4,
148 GPIO63_LCD_LDD_5,
149 GPIO64_LCD_LDD_6,
150 GPIO65_LCD_LDD_7,
151 GPIO66_LCD_LDD_8,
152 GPIO67_LCD_LDD_9,
153 GPIO68_LCD_LDD_10,
154 GPIO69_LCD_LDD_11,
155 GPIO70_LCD_LDD_12,
156 GPIO71_LCD_LDD_13,
157 GPIO72_LCD_LDD_14,
158 GPIO73_LCD_LDD_15,
159 GPIO74_LCD_FCLK,
160 GPIO75_LCD_LCLK,
161 GPIO76_LCD_PCLK,
162 GPIO77_LCD_BIAS,
163
164 GPIO99_GPIO, /* Backlight */
165};
166
167static struct pxafb_mode_info balloon3_lcd_modes[] = {
168 {
169 .pixclock = 38000,
170 .xres = 480,
171 .yres = 640,
172 .bpp = 16,
173 .hsync_len = 8,
174 .left_margin = 8,
175 .right_margin = 8,
176 .vsync_len = 2,
177 .upper_margin = 4,
178 .lower_margin = 5,
179 .sync = 0,
180 },
181};
182
183static struct pxafb_mach_info balloon3_pxafb_info = {
184 .modes = balloon3_lcd_modes,
185 .num_modes = ARRAY_SIZE(balloon3_lcd_modes),
186 .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
187 .pxafb_backlight_power = balloon3_backlight_power,
188};
189
190static unsigned long balloon3_mmc_pin_config[] = {
191 GPIO32_MMC_CLK,
192 GPIO92_MMC_DAT_0,
193 GPIO109_MMC_DAT_1,
194 GPIO110_MMC_DAT_2,
195 GPIO111_MMC_DAT_3,
196 GPIO112_MMC_CMD,
197};
198
199static void balloon3_mci_setpower(struct device *dev, unsigned int vdd)
200{
201 struct pxamci_platform_data *p_d = dev->platform_data;
202
203 if ((1 << vdd) & p_d->ocr_mask) {
204 pr_debug("%s: on\n", __func__);
205 /* FIXME something to prod here? */
206 } else {
207 pr_debug("%s: off\n", __func__);
208 /* FIXME something to prod here? */
209 }
210}
211
212static struct pxamci_platform_data balloon3_mci_platform_data = {
213 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
214 .setpower = balloon3_mci_setpower,
215};
216
217static int balloon3_udc_is_connected(void)
218{
219 pr_debug("%s: udc connected\n", __func__);
220 return 1;
221}
222
223static void balloon3_udc_command(int cmd)
224{
225 switch (cmd) {
226 case PXA2XX_UDC_CMD_CONNECT:
227 UP2OCR |= (UP2OCR_DPPUE + UP2OCR_DPPUBE);
228 pr_debug("%s: connect\n", __func__);
229 break;
230 case PXA2XX_UDC_CMD_DISCONNECT:
231 UP2OCR &= ~UP2OCR_DPPUE;
232 pr_debug("%s: disconnect\n", __func__);
233 break;
234 }
235}
236
237static struct pxa2xx_udc_mach_info balloon3_udc_info = {
238 .udc_is_connected = balloon3_udc_is_connected,
239 .udc_command = balloon3_udc_command,
240};
241
242static struct pxaficp_platform_data balloon3_ficp_platform_data = {
243 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
244};
245
246static unsigned long balloon3_ohci_pin_config[] = {
247 GPIO88_USBH1_PWR,
248 GPIO89_USBH1_PEN,
249};
250
251static struct pxaohci_platform_data balloon3_ohci_platform_data = {
252 .port_mode = PMM_PERPORT_MODE,
253 .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW,
254};
255
256static unsigned long balloon3_pin_config[] __initdata = {
257 /* Select BTUART 'COM1/ttyS0' as IO option for pins 42/43/44/45 */
258 GPIO42_BTUART_RXD,
259 GPIO43_BTUART_TXD,
260 GPIO44_BTUART_CTS,
261 GPIO45_BTUART_RTS,
262
263 /* Wakeup GPIO */
264 GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH,
265
266 /* NAND & IDLE LED GPIOs */
267 GPIO9_GPIO,
268 GPIO10_GPIO,
269};
270
271static struct gpio_led balloon3_gpio_leds[] = {
272 {
273 .name = "balloon3:green:idle",
274 .default_trigger = "heartbeat",
275 .gpio = BALLOON3_GPIO_LED_IDLE,
276 .active_low = 1,
277 },
278 {
279 .name = "balloon3:green:nand",
280 .default_trigger = "nand-disk",
281 .gpio = BALLOON3_GPIO_LED_NAND,
282 .active_low = 1,
283 },
284};
285
286static struct gpio_led_platform_data balloon3_gpio_leds_platform_data = {
287 .leds = balloon3_gpio_leds,
288 .num_leds = ARRAY_SIZE(balloon3_gpio_leds),
289};
290
291static struct platform_device balloon3led_device = {
292 .name = "leds-gpio",
293 .id = -1,
294 .dev = {
295 .platform_data = &balloon3_gpio_leds_platform_data,
296 },
297};
298
299static void __init balloon3_init(void)
300{
301 pr_info("Initialising Balloon3\n");
302
303 /* system bus arbiter setting
304 * - Core_Park
305 * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4
306 */
307 ARB_CNTRL = ARB_CORE_PARK | 0x234;
308
309 pxa_set_i2c_info(NULL);
310 if (balloon3_has(BALLOON3_FEATURE_AUDIO))
311 pxa_set_ac97_info(NULL);
312
313 if (balloon3_has(BALLOON3_FEATURE_TOPPOLY)) {
314 pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_lcd_pin_config));
315 gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT,
316 "LCD Backlight Power");
317 gpio_direction_output(BALLOON3_GPIO_RUN_BACKLIGHT, 1);
318 set_pxa_fb_info(&balloon3_pxafb_info);
319 }
320
321 if (balloon3_has(BALLOON3_FEATURE_MMC)) {
322 pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_mmc_pin_config));
323 pxa_set_mci_info(&balloon3_mci_platform_data);
324 }
325 pxa_set_ficp_info(&balloon3_ficp_platform_data);
326 if (balloon3_has(BALLOON3_FEATURE_OHCI)) {
327 pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_ohci_pin_config));
328 pxa_set_ohci_info(&balloon3_ohci_platform_data);
329 }
330 pxa_set_udc_info(&balloon3_udc_info);
331
332 pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_pin_config));
333
334 platform_device_register(&balloon3led_device);
335}
336
337static struct map_desc balloon3_io_desc[] __initdata = {
338 { /* CPLD/FPGA */
339 .virtual = BALLOON3_FPGA_VIRT,
340 .pfn = __phys_to_pfn(BALLOON3_FPGA_PHYS),
341 .length = BALLOON3_FPGA_LENGTH,
342 .type = MT_DEVICE,
343 },
344};
345
346static void __init balloon3_map_io(void)
347{
348 pxa_map_io();
349 iotable_init(balloon3_io_desc, ARRAY_SIZE(balloon3_io_desc));
350}
351
352MACHINE_START(BALLOON3, "Balloon3")
353 /* Maintainer: Nick Bane. */
354 .phys_io = 0x40000000,
355 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
356 .map_io = balloon3_map_io,
357 .init_irq = balloon3_init_irq,
358 .timer = &pxa_timer,
359 .init_machine = balloon3_init,
360 .boot_params = PHYS_OFFSET + 0x100,
361MACHINE_END
diff --git a/arch/arm/mach-pxa/clock.h b/arch/arm/mach-pxa/clock.h
index 5599bceff738..978a3667e90d 100644
--- a/arch/arm/mach-pxa/clock.h
+++ b/arch/arm/mach-pxa/clock.h
@@ -12,7 +12,6 @@ struct clk {
12 unsigned int cken; 12 unsigned int cken;
13 unsigned int delay; 13 unsigned int delay;
14 unsigned int enabled; 14 unsigned int enabled;
15 struct clk *other;
16}; 15};
17 16
18#define INIT_CLKREG(_clk,_devname,_conname) \ 17#define INIT_CLKREG(_clk,_devname,_conname) \
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index 1d2cec25391d..eea78b6c2bc5 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -13,13 +13,18 @@
13#include <linux/sysdev.h> 13#include <linux/sysdev.h>
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <linux/gpio.h> 15#include <linux/gpio.h>
16#include <linux/delay.h>
16 17
17#include <linux/rtc-v3020.h> 18#include <linux/rtc-v3020.h>
18#include <video/mbxfb.h> 19#include <video/mbxfb.h>
19 20
21#include <linux/spi/spi.h>
22#include <linux/spi/libertas_spi.h>
23
20#include <mach/pxa27x.h> 24#include <mach/pxa27x.h>
21#include <mach/ohci.h> 25#include <mach/ohci.h>
22#include <mach/mmc.h> 26#include <mach/mmc.h>
27#include <mach/pxa2xx_spi.h>
23 28
24#include "generic.h" 29#include "generic.h"
25 30
@@ -34,6 +39,10 @@
34/* MMC power enable */ 39/* MMC power enable */
35#define GPIO105_MMC_POWER (105) 40#define GPIO105_MMC_POWER (105)
36 41
42/* WLAN GPIOS */
43#define GPIO19_WLAN_STRAP (19)
44#define GPIO102_WLAN_RST (102)
45
37static unsigned long cmx270_pin_config[] = { 46static unsigned long cmx270_pin_config[] = {
38 /* AC'97 */ 47 /* AC'97 */
39 GPIO28_AC97_BITCLK, 48 GPIO28_AC97_BITCLK,
@@ -94,8 +103,8 @@ static unsigned long cmx270_pin_config[] = {
94 GPIO26_SSP1_RXD, 103 GPIO26_SSP1_RXD,
95 104
96 /* SSP2 */ 105 /* SSP2 */
97 GPIO19_SSP2_SCLK, 106 GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */
98 GPIO14_SSP2_SFRM, 107 GPIO14_GPIO,
99 GPIO87_SSP2_TXD, 108 GPIO87_SSP2_TXD,
100 GPIO88_SSP2_RXD, 109 GPIO88_SSP2_RXD,
101 110
@@ -123,6 +132,7 @@ static unsigned long cmx270_pin_config[] = {
123 GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, 132 GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH,
124 GPIO105_GPIO | MFP_LPM_DRIVE_HIGH, /* MMC/SD power */ 133 GPIO105_GPIO | MFP_LPM_DRIVE_HIGH, /* MMC/SD power */
125 GPIO53_GPIO, /* PC card reset */ 134 GPIO53_GPIO, /* PC card reset */
135 GPIO102_GPIO, /* WLAN reset */
126 136
127 /* NAND controls */ 137 /* NAND controls */
128 GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ 138 GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */
@@ -131,6 +141,7 @@ static unsigned long cmx270_pin_config[] = {
131 /* interrupts */ 141 /* interrupts */
132 GPIO10_GPIO, /* DM9000 interrupt */ 142 GPIO10_GPIO, /* DM9000 interrupt */
133 GPIO83_GPIO, /* MMC card detect */ 143 GPIO83_GPIO, /* MMC card detect */
144 GPIO95_GPIO, /* WLAN interrupt */
134}; 145};
135 146
136/* V3020 RTC */ 147/* V3020 RTC */
@@ -271,64 +282,114 @@ static inline void cmx270_init_ohci(void) {}
271#endif 282#endif
272 283
273#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) 284#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE)
274static int cmx270_mci_init(struct device *dev, 285static struct pxamci_platform_data cmx270_mci_platform_data = {
275 irq_handler_t cmx270_detect_int, 286 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
276 void *data) 287 .gpio_card_detect = GPIO83_MMC_IRQ,
288 .gpio_card_ro = -1,
289 .gpio_power = GPIO105_MMC_POWER,
290 .gpio_power_invert = 1,
291};
292
293static void __init cmx270_init_mmc(void)
277{ 294{
278 int err; 295 pxa_set_mci_info(&cmx270_mci_platform_data);
296}
297#else
298static inline void cmx270_init_mmc(void) {}
299#endif
300
301#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
302static struct pxa2xx_spi_master cm_x270_spi_info = {
303 .num_chipselect = 1,
304 .enable_dma = 1,
305};
306
307static struct pxa2xx_spi_chip cm_x270_libertas_chip = {
308 .rx_threshold = 1,
309 .tx_threshold = 1,
310 .timeout = 1000,
311 .gpio_cs = 14,
312};
313
314static unsigned long cm_x270_libertas_pin_config[] = {
315 /* SSP2 */
316 GPIO19_SSP2_SCLK,
317 GPIO14_GPIO,
318 GPIO87_SSP2_TXD,
319 GPIO88_SSP2_RXD,
320
321};
279 322
280 err = gpio_request(GPIO105_MMC_POWER, "MMC/SD power"); 323static int cm_x270_libertas_setup(struct spi_device *spi)
281 if (err) { 324{
282 dev_warn(dev, "power gpio unavailable\n"); 325 int err = gpio_request(GPIO19_WLAN_STRAP, "WLAN STRAP");
326 if (err)
283 return err; 327 return err;
284 }
285 328
286 gpio_direction_output(GPIO105_MMC_POWER, 0); 329 err = gpio_request(GPIO102_WLAN_RST, "WLAN RST");
330 if (err)
331 goto err_free_strap;
287 332
288 err = request_irq(CMX270_MMC_IRQ, cmx270_detect_int, 333 err = gpio_direction_output(GPIO102_WLAN_RST, 0);
289 IRQF_DISABLED | IRQF_TRIGGER_FALLING, 334 if (err)
290 "MMC card detect", data); 335 goto err_free_strap;
291 if (err) { 336 msleep(100);
292 gpio_free(GPIO105_MMC_POWER); 337
293 dev_err(dev, "cmx270_mci_init: MMC/SD: can't" 338 err = gpio_direction_output(GPIO19_WLAN_STRAP, 1);
294 " request MMC card detect IRQ\n"); 339 if (err)
295 } 340 goto err_free_strap;
341 msleep(100);
342
343 pxa2xx_mfp_config(ARRAY_AND_SIZE(cm_x270_libertas_pin_config));
344
345 gpio_set_value(GPIO102_WLAN_RST, 1);
346 msleep(100);
347
348 spi->bits_per_word = 16;
349 spi_setup(spi);
350
351 return 0;
352
353err_free_strap:
354 gpio_free(GPIO19_WLAN_STRAP);
296 355
297 return err; 356 return err;
298} 357}
299 358
300static void cmx270_mci_setpower(struct device *dev, unsigned int vdd) 359static int cm_x270_libertas_teardown(struct spi_device *spi)
301{ 360{
302 struct pxamci_platform_data *p_d = dev->platform_data; 361 gpio_set_value(GPIO102_WLAN_RST, 0);
303 362 gpio_free(GPIO102_WLAN_RST);
304 if ((1 << vdd) & p_d->ocr_mask) { 363 gpio_free(GPIO19_WLAN_STRAP);
305 dev_dbg(dev, "power on\n");
306 gpio_set_value(GPIO105_MMC_POWER, 0);
307 } else {
308 gpio_set_value(GPIO105_MMC_POWER, 1);
309 dev_dbg(dev, "power off\n");
310 }
311}
312 364
313static void cmx270_mci_exit(struct device *dev, void *data) 365 return 0;
314{
315 free_irq(CMX270_MMC_IRQ, data);
316 gpio_free(GPIO105_MMC_POWER);
317} 366}
318 367
319static struct pxamci_platform_data cmx270_mci_platform_data = { 368struct libertas_spi_platform_data cm_x270_libertas_pdata = {
320 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 369 .use_dummy_writes = 1,
321 .init = cmx270_mci_init, 370 .setup = cm_x270_libertas_setup,
322 .setpower = cmx270_mci_setpower, 371 .teardown = cm_x270_libertas_teardown,
323 .exit = cmx270_mci_exit,
324}; 372};
325 373
326static void __init cmx270_init_mmc(void) 374static struct spi_board_info cm_x270_spi_devices[] __initdata = {
375 {
376 .modalias = "libertas_spi",
377 .max_speed_hz = 13000000,
378 .bus_num = 2,
379 .irq = gpio_to_irq(95),
380 .chip_select = 0,
381 .controller_data = &cm_x270_libertas_chip,
382 .platform_data = &cm_x270_libertas_pdata,
383 },
384};
385
386static void __init cmx270_init_spi(void)
327{ 387{
328 pxa_set_mci_info(&cmx270_mci_platform_data); 388 pxa2xx_set_spi_info(2, &cm_x270_spi_info);
389 spi_register_board_info(ARRAY_AND_SIZE(cm_x270_spi_devices));
329} 390}
330#else 391#else
331static inline void cmx270_init_mmc(void) {} 392static inline void cmx270_init_spi(void) {}
332#endif 393#endif
333 394
334void __init cmx270_init(void) 395void __init cmx270_init(void)
@@ -343,4 +404,5 @@ void __init cmx270_init(void)
343 cmx270_init_mmc(); 404 cmx270_init_mmc();
344 cmx270_init_ohci(); 405 cmx270_init_ohci();
345 cmx270_init_2700G(); 406 cmx270_init_2700G();
407 cmx270_init_spi();
346} 408}
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c
index 465da26591bd..aac2cda60e09 100644
--- a/arch/arm/mach-pxa/cm-x300.c
+++ b/arch/arm/mach-pxa/cm-x300.c
@@ -306,68 +306,21 @@ static void cm_x300_mci_exit(struct device *dev, void *data)
306} 306}
307 307
308static struct pxamci_platform_data cm_x300_mci_platform_data = { 308static struct pxamci_platform_data cm_x300_mci_platform_data = {
309 .detect_delay = 20, 309 .detect_delay = 20,
310 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 310 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
311 .init = cm_x300_mci_init, 311 .init = cm_x300_mci_init,
312 .exit = cm_x300_mci_exit, 312 .exit = cm_x300_mci_exit,
313 .gpio_card_detect = -1,
314 .gpio_card_ro = -1,
315 .gpio_power = -1,
313}; 316};
314 317
315static int cm_x300_mci2_ro(struct device *dev)
316{
317 return gpio_get_value(GPIO85_MMC2_WP);
318}
319
320static int cm_x300_mci2_init(struct device *dev,
321 irq_handler_t cm_x300_detect_int,
322 void *data)
323{
324 int err;
325
326 /*
327 * setup GPIO for CM-X300 MMC controller
328 */
329 err = gpio_request(GPIO82_MMC2_IRQ, "mmc card detect");
330 if (err)
331 goto err_request_cd;
332 gpio_direction_input(GPIO82_MMC2_IRQ);
333
334 err = gpio_request(GPIO85_MMC2_WP, "mmc write protect");
335 if (err)
336 goto err_request_wp;
337 gpio_direction_input(GPIO85_MMC2_WP);
338
339 err = request_irq(CM_X300_MMC2_IRQ, cm_x300_detect_int,
340 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
341 "MMC card detect", data);
342 if (err) {
343 printk(KERN_ERR "%s: MMC/SD/SDIO: "
344 "can't request card detect IRQ\n", __func__);
345 goto err_request_irq;
346 }
347
348 return 0;
349
350err_request_irq:
351 gpio_free(GPIO85_MMC2_WP);
352err_request_wp:
353 gpio_free(GPIO82_MMC2_IRQ);
354err_request_cd:
355 return err;
356}
357
358static void cm_x300_mci2_exit(struct device *dev, void *data)
359{
360 free_irq(CM_X300_MMC2_IRQ, data);
361 gpio_free(GPIO82_MMC2_IRQ);
362 gpio_free(GPIO85_MMC2_WP);
363}
364
365static struct pxamci_platform_data cm_x300_mci2_platform_data = { 318static struct pxamci_platform_data cm_x300_mci2_platform_data = {
366 .detect_delay = 20, 319 .detect_delay = 20,
367 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 320 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
368 .init = cm_x300_mci2_init, 321 .gpio_card_detect = GPIO82_MMC2_IRQ,
369 .exit = cm_x300_mci2_exit, 322 .gpio_card_ro = GPIO85_MMC2_WP,
370 .get_ro = cm_x300_mci2_ro, 323 .gpio_power = -1,
371}; 324};
372 325
373static void __init cm_x300_init_mmc(void) 326static void __init cm_x300_init_mmc(void)
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index 7c9c34c19ae2..37c239c56568 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -172,6 +172,7 @@ void __init colibri_pxa300_init(void)
172{ 172{
173 colibri_pxa300_init_eth(); 173 colibri_pxa300_init_eth();
174 colibri_pxa300_init_ohci(); 174 colibri_pxa300_init_ohci();
175 colibri_pxa3xx_init_nand();
175 colibri_pxa300_init_lcd(); 176 colibri_pxa300_init_lcd();
176 colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO39_GPIO)); 177 colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO39_GPIO));
177 colibri_pxa310_init_ac97(); 178 colibri_pxa310_init_ac97();
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index a18d37b3c5e6..494572825c7d 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -164,15 +164,48 @@ static inline void __init colibri_pxa320_init_ac97(void)
164static inline void colibri_pxa320_init_ac97(void) {} 164static inline void colibri_pxa320_init_ac97(void) {}
165#endif 165#endif
166 166
167/*
168 * The following configuration is verified to work with the Toradex Orchid
169 * carrier board
170 */
171static mfp_cfg_t colibri_pxa320_uart_pin_config[] __initdata = {
172 /* UART 1 configuration (may be set by bootloader) */
173 GPIO99_UART1_CTS,
174 GPIO104_UART1_RTS,
175 GPIO97_UART1_RXD,
176 GPIO98_UART1_TXD,
177 GPIO101_UART1_DTR,
178 GPIO103_UART1_DSR,
179 GPIO100_UART1_DCD,
180 GPIO102_UART1_RI,
181
182 /* UART 2 configuration */
183 GPIO109_UART2_CTS,
184 GPIO112_UART2_RTS,
185 GPIO110_UART2_RXD,
186 GPIO111_UART2_TXD,
187
188 /* UART 3 configuration */
189 GPIO30_UART3_RXD,
190 GPIO31_UART3_TXD,
191};
192
193static void __init colibri_pxa320_init_uart(void)
194{
195 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_uart_pin_config));
196}
197
167void __init colibri_pxa320_init(void) 198void __init colibri_pxa320_init(void)
168{ 199{
169 colibri_pxa320_init_eth(); 200 colibri_pxa320_init_eth();
170 colibri_pxa320_init_ohci(); 201 colibri_pxa320_init_ohci();
202 colibri_pxa3xx_init_nand();
171 colibri_pxa320_init_lcd(); 203 colibri_pxa320_init_lcd();
172 colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO49_GPIO)); 204 colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO49_GPIO));
173 colibri_pxa320_init_ac97(); 205 colibri_pxa320_init_ac97();
174 colibri_pxa3xx_init_mmc(ARRAY_AND_SIZE(colibri_pxa320_mmc_pin_config), 206 colibri_pxa3xx_init_mmc(ARRAY_AND_SIZE(colibri_pxa320_mmc_pin_config),
175 mfp_to_gpio(MFP_PIN_GPIO28)); 207 mfp_to_gpio(MFP_PIN_GPIO28));
208 colibri_pxa320_init_uart();
176} 209}
177 210
178MACHINE_START(COLIBRI320, "Toradex Colibri PXA320") 211MACHINE_START(COLIBRI320, "Toradex Colibri PXA320")
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c
index ea34e34f8cd8..efebaf4d734d 100644
--- a/arch/arm/mach-pxa/colibri-pxa3xx.c
+++ b/arch/arm/mach-pxa/colibri-pxa3xx.c
@@ -25,6 +25,7 @@
25#include <mach/colibri.h> 25#include <mach/colibri.h>
26#include <mach/mmc.h> 26#include <mach/mmc.h>
27#include <mach/pxafb.h> 27#include <mach/pxafb.h>
28#include <mach/pxa3xx_nand.h>
28 29
29#include "generic.h" 30#include "generic.h"
30#include "devices.h" 31#include "devices.h"
@@ -95,10 +96,13 @@ static void colibri_pxa3xx_mci_exit(struct device *dev, void *data)
95} 96}
96 97
97static struct pxamci_platform_data colibri_pxa3xx_mci_platform_data = { 98static struct pxamci_platform_data colibri_pxa3xx_mci_platform_data = {
98 .detect_delay = 20, 99 .detect_delay = 20,
99 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 100 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
100 .init = colibri_pxa3xx_mci_init, 101 .init = colibri_pxa3xx_mci_init,
101 .exit = colibri_pxa3xx_mci_exit, 102 .exit = colibri_pxa3xx_mci_exit,
103 .gpio_card_detect = -1,
104 .gpio_card_ro = -1,
105 .gpio_power = -1,
102}; 106};
103 107
104void __init colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin) 108void __init colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin)
@@ -154,3 +158,43 @@ void __init colibri_pxa3xx_init_lcd(int bl_pin)
154} 158}
155#endif 159#endif
156 160
161#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
162static struct mtd_partition colibri_nand_partitions[] = {
163 {
164 .name = "bootloader",
165 .offset = 0,
166 .size = SZ_512K,
167 .mask_flags = MTD_WRITEABLE, /* force read-only */
168 },
169 {
170 .name = "kernel",
171 .offset = MTDPART_OFS_APPEND,
172 .size = SZ_4M,
173 .mask_flags = MTD_WRITEABLE, /* force read-only */
174 },
175 {
176 .name = "reserved",
177 .offset = MTDPART_OFS_APPEND,
178 .size = SZ_1M,
179 .mask_flags = MTD_WRITEABLE, /* force read-only */
180 },
181 {
182 .name = "fs",
183 .offset = MTDPART_OFS_APPEND,
184 .size = MTDPART_SIZ_FULL,
185 },
186};
187
188static struct pxa3xx_nand_platform_data colibri_nand_info = {
189 .enable_arbiter = 1,
190 .keep_config = 1,
191 .parts = colibri_nand_partitions,
192 .nr_parts = ARRAY_SIZE(colibri_nand_partitions),
193};
194
195void __init colibri_pxa3xx_init_nand(void)
196{
197 pxa3xx_set_nand_info(&colibri_nand_info);
198}
199#endif
200
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 5363e1aea3fb..b536b5a5a10d 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -29,6 +29,7 @@
29#include <linux/spi/ads7846.h> 29#include <linux/spi/ads7846.h>
30#include <linux/spi/corgi_lcd.h> 30#include <linux/spi/corgi_lcd.h>
31#include <linux/mtd/sharpsl.h> 31#include <linux/mtd/sharpsl.h>
32#include <linux/input/matrix_keypad.h>
32#include <video/w100fb.h> 33#include <video/w100fb.h>
33 34
34#include <asm/setup.h> 35#include <asm/setup.h>
@@ -104,6 +105,28 @@ static unsigned long corgi_pin_config[] __initdata = {
104 GPIO6_MMC_CLK, 105 GPIO6_MMC_CLK,
105 GPIO8_MMC_CS0, 106 GPIO8_MMC_CS0,
106 107
108 /* GPIO Matrix Keypad */
109 GPIO66_GPIO, /* column 0 */
110 GPIO67_GPIO, /* column 1 */
111 GPIO68_GPIO, /* column 2 */
112 GPIO69_GPIO, /* column 3 */
113 GPIO70_GPIO, /* column 4 */
114 GPIO71_GPIO, /* column 5 */
115 GPIO72_GPIO, /* column 6 */
116 GPIO73_GPIO, /* column 7 */
117 GPIO74_GPIO, /* column 8 */
118 GPIO75_GPIO, /* column 9 */
119 GPIO76_GPIO, /* column 10 */
120 GPIO77_GPIO, /* column 11 */
121 GPIO58_GPIO, /* row 0 */
122 GPIO59_GPIO, /* row 1 */
123 GPIO60_GPIO, /* row 2 */
124 GPIO61_GPIO, /* row 3 */
125 GPIO62_GPIO, /* row 4 */
126 GPIO63_GPIO, /* row 5 */
127 GPIO64_GPIO, /* row 6 */
128 GPIO65_GPIO, /* row 7 */
129
107 /* GPIO */ 130 /* GPIO */
108 GPIO9_GPIO, /* CORGI_GPIO_nSD_DETECT */ 131 GPIO9_GPIO, /* CORGI_GPIO_nSD_DETECT */
109 GPIO7_GPIO, /* CORGI_GPIO_nSD_WP */ 132 GPIO7_GPIO, /* CORGI_GPIO_nSD_WP */
@@ -267,9 +290,115 @@ static struct platform_device corgifb_device = {
267/* 290/*
268 * Corgi Keyboard Device 291 * Corgi Keyboard Device
269 */ 292 */
293#define CORGI_KEY_CALENDER KEY_F1
294#define CORGI_KEY_ADDRESS KEY_F2
295#define CORGI_KEY_FN KEY_F3
296#define CORGI_KEY_CANCEL KEY_F4
297#define CORGI_KEY_OFF KEY_SUSPEND
298#define CORGI_KEY_EXOK KEY_F5
299#define CORGI_KEY_EXCANCEL KEY_F6
300#define CORGI_KEY_EXJOGDOWN KEY_F7
301#define CORGI_KEY_EXJOGUP KEY_F8
302#define CORGI_KEY_JAP1 KEY_LEFTCTRL
303#define CORGI_KEY_JAP2 KEY_LEFTALT
304#define CORGI_KEY_MAIL KEY_F10
305#define CORGI_KEY_OK KEY_F11
306#define CORGI_KEY_MENU KEY_F12
307
308static const uint32_t corgikbd_keymap[] = {
309 KEY(0, 1, KEY_1),
310 KEY(0, 2, KEY_3),
311 KEY(0, 3, KEY_5),
312 KEY(0, 4, KEY_6),
313 KEY(0, 5, KEY_7),
314 KEY(0, 6, KEY_9),
315 KEY(0, 7, KEY_0),
316 KEY(0, 8, KEY_BACKSPACE),
317 KEY(1, 1, KEY_2),
318 KEY(1, 2, KEY_4),
319 KEY(1, 3, KEY_R),
320 KEY(1, 4, KEY_Y),
321 KEY(1, 5, KEY_8),
322 KEY(1, 6, KEY_I),
323 KEY(1, 7, KEY_O),
324 KEY(1, 8, KEY_P),
325 KEY(2, 0, KEY_TAB),
326 KEY(2, 1, KEY_Q),
327 KEY(2, 2, KEY_E),
328 KEY(2, 3, KEY_T),
329 KEY(2, 4, KEY_G),
330 KEY(2, 5, KEY_U),
331 KEY(2, 6, KEY_J),
332 KEY(2, 7, KEY_K),
333 KEY(3, 0, CORGI_KEY_CALENDER),
334 KEY(3, 1, KEY_W),
335 KEY(3, 2, KEY_S),
336 KEY(3, 3, KEY_F),
337 KEY(3, 4, KEY_V),
338 KEY(3, 5, KEY_H),
339 KEY(3, 6, KEY_M),
340 KEY(3, 7, KEY_L),
341 KEY(3, 9, KEY_RIGHTSHIFT),
342 KEY(4, 0, CORGI_KEY_ADDRESS),
343 KEY(4, 1, KEY_A),
344 KEY(4, 2, KEY_D),
345 KEY(4, 3, KEY_C),
346 KEY(4, 4, KEY_B),
347 KEY(4, 5, KEY_N),
348 KEY(4, 6, KEY_DOT),
349 KEY(4, 8, KEY_ENTER),
350 KEY(4, 10, KEY_LEFTSHIFT),
351 KEY(5, 0, CORGI_KEY_MAIL),
352 KEY(5, 1, KEY_Z),
353 KEY(5, 2, KEY_X),
354 KEY(5, 3, KEY_MINUS),
355 KEY(5, 4, KEY_SPACE),
356 KEY(5, 5, KEY_COMMA),
357 KEY(5, 7, KEY_UP),
358 KEY(5, 11, CORGI_KEY_FN),
359 KEY(6, 0, KEY_SYSRQ),
360 KEY(6, 1, CORGI_KEY_JAP1),
361 KEY(6, 2, CORGI_KEY_JAP2),
362 KEY(6, 3, CORGI_KEY_CANCEL),
363 KEY(6, 4, CORGI_KEY_OK),
364 KEY(6, 5, CORGI_KEY_MENU),
365 KEY(6, 6, KEY_LEFT),
366 KEY(6, 7, KEY_DOWN),
367 KEY(6, 8, KEY_RIGHT),
368 KEY(7, 0, CORGI_KEY_OFF),
369 KEY(7, 1, CORGI_KEY_EXOK),
370 KEY(7, 2, CORGI_KEY_EXCANCEL),
371 KEY(7, 3, CORGI_KEY_EXJOGDOWN),
372 KEY(7, 4, CORGI_KEY_EXJOGUP),
373};
374
375static struct matrix_keymap_data corgikbd_keymap_data = {
376 .keymap = corgikbd_keymap,
377 .keymap_size = ARRAY_SIZE(corgikbd_keymap),
378};
379
380static const int corgikbd_row_gpios[] =
381 { 58, 59, 60, 61, 62, 63, 64, 65 };
382static const int corgikbd_col_gpios[] =
383 { 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 };
384
385static struct matrix_keypad_platform_data corgikbd_pdata = {
386 .keymap_data = &corgikbd_keymap_data,
387 .row_gpios = corgikbd_row_gpios,
388 .col_gpios = corgikbd_col_gpios,
389 .num_row_gpios = ARRAY_SIZE(corgikbd_row_gpios),
390 .num_col_gpios = ARRAY_SIZE(corgikbd_col_gpios),
391 .col_scan_delay_us = 10,
392 .debounce_ms = 10,
393 .wakeup = 1,
394};
395
270static struct platform_device corgikbd_device = { 396static struct platform_device corgikbd_device = {
271 .name = "corgi-keyboard", 397 .name = "matrix-keypad",
272 .id = -1, 398 .id = -1,
399 .dev = {
400 .platform_data = &corgikbd_pdata,
401 },
273}; 402};
274 403
275/* 404/*
@@ -307,111 +436,20 @@ static struct platform_device corgiled_device = {
307 * The card detect interrupt isn't debounced so we delay it by 250ms 436 * The card detect interrupt isn't debounced so we delay it by 250ms
308 * to give the card a chance to fully insert/eject. 437 * to give the card a chance to fully insert/eject.
309 */ 438 */
310static struct pxamci_platform_data corgi_mci_platform_data;
311
312static int corgi_mci_init(struct device *dev, irq_handler_t corgi_detect_int, void *data)
313{
314 int err;
315
316 err = gpio_request(CORGI_GPIO_nSD_DETECT, "nSD_DETECT");
317 if (err)
318 goto err_out;
319
320 err = gpio_request(CORGI_GPIO_nSD_WP, "nSD_WP");
321 if (err)
322 goto err_free_1;
323
324 err = gpio_request(CORGI_GPIO_SD_PWR, "SD_PWR");
325 if (err)
326 goto err_free_2;
327
328 gpio_direction_input(CORGI_GPIO_nSD_DETECT);
329 gpio_direction_input(CORGI_GPIO_nSD_WP);
330 gpio_direction_output(CORGI_GPIO_SD_PWR, 0);
331
332 corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250);
333
334 err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int,
335 IRQF_DISABLED | IRQF_TRIGGER_RISING |
336 IRQF_TRIGGER_FALLING,
337 "MMC card detect", data);
338 if (err) {
339 pr_err("%s: MMC/SD: can't request MMC card detect IRQ\n",
340 __func__);
341 goto err_free_3;
342 }
343 return 0;
344
345err_free_3:
346 gpio_free(CORGI_GPIO_SD_PWR);
347err_free_2:
348 gpio_free(CORGI_GPIO_nSD_WP);
349err_free_1:
350 gpio_free(CORGI_GPIO_nSD_DETECT);
351err_out:
352 return err;
353}
354
355static void corgi_mci_setpower(struct device *dev, unsigned int vdd)
356{
357 struct pxamci_platform_data* p_d = dev->platform_data;
358
359 gpio_set_value(CORGI_GPIO_SD_PWR, ((1 << vdd) & p_d->ocr_mask));
360}
361
362static int corgi_mci_get_ro(struct device *dev)
363{
364 return gpio_get_value(CORGI_GPIO_nSD_WP);
365}
366
367static void corgi_mci_exit(struct device *dev, void *data)
368{
369 free_irq(CORGI_IRQ_GPIO_nSD_DETECT, data);
370 gpio_free(CORGI_GPIO_SD_PWR);
371 gpio_free(CORGI_GPIO_nSD_WP);
372 gpio_free(CORGI_GPIO_nSD_DETECT);
373}
374
375static struct pxamci_platform_data corgi_mci_platform_data = { 439static struct pxamci_platform_data corgi_mci_platform_data = {
376 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 440 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
377 .init = corgi_mci_init, 441 .gpio_card_detect = -1,
378 .get_ro = corgi_mci_get_ro, 442 .gpio_card_ro = CORGI_GPIO_nSD_WP,
379 .setpower = corgi_mci_setpower, 443 .gpio_power = CORGI_GPIO_SD_PWR,
380 .exit = corgi_mci_exit,
381}; 444};
382 445
383 446
384/* 447/*
385 * Irda 448 * Irda
386 */ 449 */
387static void corgi_irda_transceiver_mode(struct device *dev, int mode)
388{
389 gpio_set_value(CORGI_GPIO_IR_ON, mode & IR_OFF);
390 pxa2xx_transceiver_mode(dev, mode);
391}
392
393static int corgi_irda_startup(struct device *dev)
394{
395 int err;
396
397 err = gpio_request(CORGI_GPIO_IR_ON, "IR_ON");
398 if (err)
399 return err;
400
401 gpio_direction_output(CORGI_GPIO_IR_ON, 1);
402 return 0;
403}
404
405static void corgi_irda_shutdown(struct device *dev)
406{
407 gpio_free(CORGI_GPIO_IR_ON);
408}
409
410static struct pxaficp_platform_data corgi_ficp_platform_data = { 450static struct pxaficp_platform_data corgi_ficp_platform_data = {
451 .gpio_pwdown = CORGI_GPIO_IR_ON,
411 .transceiver_cap = IR_SIRMODE | IR_OFF, 452 .transceiver_cap = IR_SIRMODE | IR_OFF,
412 .transceiver_mode = corgi_irda_transceiver_mode,
413 .startup = corgi_irda_startup,
414 .shutdown = corgi_irda_shutdown,
415}; 453};
416 454
417 455
@@ -636,6 +674,7 @@ static void __init corgi_init(void)
636 corgi_init_spi(); 674 corgi_init_spi();
637 675
638 pxa_set_udc_info(&udc_info); 676 pxa_set_udc_info(&udc_info);
677 corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250);
639 pxa_set_mci_info(&corgi_mci_platform_data); 678 pxa_set_mci_info(&corgi_mci_platform_data);
640 pxa_set_ficp_info(&corgi_ficp_platform_data); 679 pxa_set_ficp_info(&corgi_ficp_platform_data);
641 pxa_set_i2c_info(NULL); 680 pxa_set_i2c_info(NULL);
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c
index 7d3e1b46e550..79141f862728 100644
--- a/arch/arm/mach-pxa/csb726.c
+++ b/arch/arm/mach-pxa/csb726.c
@@ -130,61 +130,17 @@ static struct pxamci_platform_data csb726_mci_data;
130static int csb726_mci_init(struct device *dev, 130static int csb726_mci_init(struct device *dev,
131 irq_handler_t detect, void *data) 131 irq_handler_t detect, void *data)
132{ 132{
133 int err;
134
135 csb726_mci_data.detect_delay = msecs_to_jiffies(500); 133 csb726_mci_data.detect_delay = msecs_to_jiffies(500);
136
137 err = gpio_request(CSB726_GPIO_MMC_DETECT, "MMC detect");
138 if (err)
139 goto err_det_req;
140
141 err = gpio_direction_input(CSB726_GPIO_MMC_DETECT);
142 if (err)
143 goto err_det_dir;
144
145 err = gpio_request(CSB726_GPIO_MMC_RO, "MMC ro");
146 if (err)
147 goto err_ro_req;
148
149 err = gpio_direction_input(CSB726_GPIO_MMC_RO);
150 if (err)
151 goto err_ro_dir;
152
153 err = request_irq(gpio_to_irq(CSB726_GPIO_MMC_DETECT), detect,
154 IRQF_DISABLED, "MMC card detect", data);
155 if (err)
156 goto err_irq;
157
158 return 0; 134 return 0;
159
160err_irq:
161err_ro_dir:
162 gpio_free(CSB726_GPIO_MMC_RO);
163err_ro_req:
164err_det_dir:
165 gpio_free(CSB726_GPIO_MMC_DETECT);
166err_det_req:
167 return err;
168}
169
170static int csb726_mci_get_ro(struct device *dev)
171{
172 return gpio_get_value(CSB726_GPIO_MMC_RO);
173}
174
175static void csb726_mci_exit(struct device *dev, void *data)
176{
177 free_irq(gpio_to_irq(CSB726_GPIO_MMC_DETECT), data);
178 gpio_free(CSB726_GPIO_MMC_RO);
179 gpio_free(CSB726_GPIO_MMC_DETECT);
180} 135}
181 136
182static struct pxamci_platform_data csb726_mci = { 137static struct pxamci_platform_data csb726_mci = {
183 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 138 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
184 .init = csb726_mci_init, 139 .init = csb726_mci_init,
185 .get_ro = csb726_mci_get_ro,
186 /* FIXME setpower */ 140 /* FIXME setpower */
187 .exit = csb726_mci_exit, 141 .gpio_card_detect = CSB726_GPIO_MMC_DETECT,
142 .gpio_card_ro = CSB726_GPIO_MMC_RO,
143 .gpio_power = -1,
188}; 144};
189 145
190static struct pxaohci_platform_data csb726_ohci_platform_data = { 146static struct pxaohci_platform_data csb726_ohci_platform_data = {
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index ecc08f360b68..46fabe1cca11 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -935,6 +935,33 @@ void __init pxa3xx_set_nand_info(struct pxa3xx_nand_platform_data *info)
935{ 935{
936 pxa_register_device(&pxa3xx_device_nand, info); 936 pxa_register_device(&pxa3xx_device_nand, info);
937} 937}
938
939static struct resource pxa3xx_resources_gcu[] = {
940 {
941 .start = 0x54000000,
942 .end = 0x54000fff,
943 .flags = IORESOURCE_MEM,
944 },
945 {
946 .start = IRQ_GCU,
947 .end = IRQ_GCU,
948 .flags = IORESOURCE_IRQ,
949 },
950};
951
952static u64 pxa3xx_gcu_dmamask = DMA_BIT_MASK(32);
953
954struct platform_device pxa3xx_device_gcu = {
955 .name = "pxa3xx-gcu",
956 .id = -1,
957 .num_resources = ARRAY_SIZE(pxa3xx_resources_gcu),
958 .resource = pxa3xx_resources_gcu,
959 .dev = {
960 .dma_mask = &pxa3xx_gcu_dmamask,
961 .coherent_dma_mask = 0xffffffff,
962 },
963};
964
938#endif /* CONFIG_PXA3xx */ 965#endif /* CONFIG_PXA3xx */
939 966
940/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1. 967/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1.
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index ecc24a4dca6d..93817d99761e 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -35,4 +35,6 @@ extern struct platform_device pxa27x_device_pwm1;
35extern struct platform_device pxa3xx_device_nand; 35extern struct platform_device pxa3xx_device_nand;
36extern struct platform_device pxa3xx_device_i2c_power; 36extern struct platform_device pxa3xx_device_i2c_power;
37 37
38extern struct platform_device pxa3xx_device_gcu;
39
38void __init pxa_register_device(struct platform_device *dev, void *data); 40void __init pxa_register_device(struct platform_device *dev, void *data);
diff --git a/arch/arm/mach-pxa/e740.c b/arch/arm/mach-pxa/e740.c
index a36fc17f671d..49acdfa6650d 100644
--- a/arch/arm/mach-pxa/e740.c
+++ b/arch/arm/mach-pxa/e740.c
@@ -199,7 +199,6 @@ static void __init e740_init(void)
199 platform_add_devices(devices, ARRAY_SIZE(devices)); 199 platform_add_devices(devices, ARRAY_SIZE(devices));
200 pxa_set_udc_info(&e7xx_udc_mach_info); 200 pxa_set_udc_info(&e7xx_udc_mach_info);
201 pxa_set_ac97_info(NULL); 201 pxa_set_ac97_info(NULL);
202 e7xx_irda_init();
203 pxa_set_ficp_info(&e7xx_ficp_platform_data); 202 pxa_set_ficp_info(&e7xx_ficp_platform_data);
204} 203}
205 204
diff --git a/arch/arm/mach-pxa/e750.c b/arch/arm/mach-pxa/e750.c
index 1d00110590e5..4052ece3ef49 100644
--- a/arch/arm/mach-pxa/e750.c
+++ b/arch/arm/mach-pxa/e750.c
@@ -200,7 +200,6 @@ static void __init e750_init(void)
200 platform_add_devices(devices, ARRAY_SIZE(devices)); 200 platform_add_devices(devices, ARRAY_SIZE(devices));
201 pxa_set_udc_info(&e7xx_udc_mach_info); 201 pxa_set_udc_info(&e7xx_udc_mach_info);
202 pxa_set_ac97_info(NULL); 202 pxa_set_ac97_info(NULL);
203 e7xx_irda_init();
204 pxa_set_ficp_info(&e7xx_ficp_platform_data); 203 pxa_set_ficp_info(&e7xx_ficp_platform_data);
205} 204}
206 205
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 9cd09465a0e8..aec7f4214b14 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -646,13 +646,16 @@ static int em_x270_mci_get_ro(struct device *dev)
646} 646}
647 647
648static struct pxamci_platform_data em_x270_mci_platform_data = { 648static struct pxamci_platform_data em_x270_mci_platform_data = {
649 .ocr_mask = MMC_VDD_20_21|MMC_VDD_21_22|MMC_VDD_22_23| 649 .ocr_mask = MMC_VDD_20_21|MMC_VDD_21_22|MMC_VDD_22_23|
650 MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27| 650 MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27|
651 MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30| 651 MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30|
652 MMC_VDD_30_31|MMC_VDD_31_32, 652 MMC_VDD_30_31|MMC_VDD_31_32,
653 .init = em_x270_mci_init, 653 .init = em_x270_mci_init,
654 .setpower = em_x270_mci_setpower, 654 .setpower = em_x270_mci_setpower,
655 .exit = em_x270_mci_exit, 655 .exit = em_x270_mci_exit,
656 .gpio_card_detect = -1,
657 .gpio_card_ro = -1,
658 .gpio_power = -1,
656}; 659};
657 660
658static void __init em_x270_init_mmc(void) 661static void __init em_x270_init_mmc(void)
@@ -1022,22 +1025,32 @@ static int em_x270_sensor_power(struct device *dev, int on)
1022 return 0; 1025 return 0;
1023} 1026}
1024 1027
1025static struct soc_camera_link iclink = {
1026 .bus_id = 0,
1027 .power = em_x270_sensor_power,
1028};
1029
1030static struct i2c_board_info em_x270_i2c_cam_info[] = { 1028static struct i2c_board_info em_x270_i2c_cam_info[] = {
1031 { 1029 {
1032 I2C_BOARD_INFO("mt9m111", 0x48), 1030 I2C_BOARD_INFO("mt9m111", 0x48),
1031 },
1032};
1033
1034static struct soc_camera_link iclink = {
1035 .bus_id = 0,
1036 .power = em_x270_sensor_power,
1037 .board_info = &em_x270_i2c_cam_info[0],
1038 .i2c_adapter_id = 0,
1039 .module_name = "mt9m111",
1040};
1041
1042static struct platform_device em_x270_camera = {
1043 .name = "soc-camera-pdrv",
1044 .id = -1,
1045 .dev = {
1033 .platform_data = &iclink, 1046 .platform_data = &iclink,
1034 }, 1047 },
1035}; 1048};
1036 1049
1037static void __init em_x270_init_camera(void) 1050static void __init em_x270_init_camera(void)
1038{ 1051{
1039 i2c_register_board_info(0, ARRAY_AND_SIZE(em_x270_i2c_cam_info));
1040 pxa_set_camera_info(&em_x270_camera_platform_data); 1052 pxa_set_camera_info(&em_x270_camera_platform_data);
1053 platform_device_register(&em_x270_camera);
1041} 1054}
1042#else 1055#else
1043static inline void em_x270_init_camera(void) {} 1056static inline void em_x270_init_camera(void) {}
@@ -1103,6 +1116,7 @@ REGULATOR_CONSUMER(ldo5, NULL, "vcc cam");
1103REGULATOR_CONSUMER(ldo10, &pxa_device_mci.dev, "vcc sdio"); 1116REGULATOR_CONSUMER(ldo10, &pxa_device_mci.dev, "vcc sdio");
1104REGULATOR_CONSUMER(ldo12, NULL, "vcc usb"); 1117REGULATOR_CONSUMER(ldo12, NULL, "vcc usb");
1105REGULATOR_CONSUMER(ldo19, &em_x270_gprs_userspace_consumer.dev, "vcc gprs"); 1118REGULATOR_CONSUMER(ldo19, &em_x270_gprs_userspace_consumer.dev, "vcc gprs");
1119REGULATOR_CONSUMER(buck2, NULL, "vcc_core");
1106 1120
1107#define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask) \ 1121#define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask) \
1108 static struct regulator_init_data _ldo##_data = { \ 1122 static struct regulator_init_data _ldo##_data = { \
@@ -1125,6 +1139,7 @@ REGULATOR_INIT(ldo10, 2000000, 3200000,
1125 REGULATOR_CHANGE_STATUS | REGULATOR_CHANGE_VOLTAGE); 1139 REGULATOR_CHANGE_STATUS | REGULATOR_CHANGE_VOLTAGE);
1126REGULATOR_INIT(ldo12, 3000000, 3000000, REGULATOR_CHANGE_STATUS); 1140REGULATOR_INIT(ldo12, 3000000, 3000000, REGULATOR_CHANGE_STATUS);
1127REGULATOR_INIT(ldo19, 3200000, 3200000, REGULATOR_CHANGE_STATUS); 1141REGULATOR_INIT(ldo19, 3200000, 3200000, REGULATOR_CHANGE_STATUS);
1142REGULATOR_INIT(buck2, 1000000, 1650000, REGULATOR_CHANGE_VOLTAGE);
1128 1143
1129struct led_info em_x270_led_info = { 1144struct led_info em_x270_led_info = {
1130 .name = "em-x270:orange", 1145 .name = "em-x270:orange",
@@ -1194,6 +1209,8 @@ struct da903x_subdev_info em_x270_da9030_subdevs[] = {
1194 DA9030_LDO(12), 1209 DA9030_LDO(12),
1195 DA9030_LDO(19), 1210 DA9030_LDO(19),
1196 1211
1212 DA9030_SUBDEV(regulator, BUCK2, &buck2_data),
1213
1197 DA9030_SUBDEV(led, LED_PC, &em_x270_led_info), 1214 DA9030_SUBDEV(led, LED_PC, &em_x270_led_info),
1198 DA9030_SUBDEV(backlight, WLED, &em_x270_led_info), 1215 DA9030_SUBDEV(backlight, WLED, &em_x270_led_info),
1199 DA9030_SUBDEV(battery, BAT, &em_x270_batterty_info), 1216 DA9030_SUBDEV(battery, BAT, &em_x270_batterty_info),
@@ -1245,7 +1262,6 @@ static void __init em_x270_init_i2c(void)
1245 1262
1246static void __init em_x270_module_init(void) 1263static void __init em_x270_module_init(void)
1247{ 1264{
1248 pr_info("%s\n", __func__);
1249 pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_pin_config)); 1265 pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_pin_config));
1250 1266
1251 mmc_cd = GPIO13_MMC_CD; 1267 mmc_cd = GPIO13_MMC_CD;
@@ -1257,7 +1273,6 @@ static void __init em_x270_module_init(void)
1257 1273
1258static void __init em_x270_exeda_init(void) 1274static void __init em_x270_exeda_init(void)
1259{ 1275{
1260 pr_info("%s\n", __func__);
1261 pxa2xx_mfp_config(ARRAY_AND_SIZE(exeda_pin_config)); 1276 pxa2xx_mfp_config(ARRAY_AND_SIZE(exeda_pin_config));
1262 1277
1263 mmc_cd = GPIO114_MMC_CD; 1278 mmc_cd = GPIO114_MMC_CD;
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c
index c60dadf847a6..91417f035069 100644
--- a/arch/arm/mach-pxa/eseries.c
+++ b/arch/arm/mach-pxa/eseries.c
@@ -47,44 +47,9 @@ struct pxa2xx_udc_mach_info e7xx_udc_mach_info = {
47 .gpio_pullup_inverted = 1 47 .gpio_pullup_inverted = 1
48}; 48};
49 49
50static void e7xx_irda_transceiver_mode(struct device *dev, int mode)
51{
52 if (mode & IR_OFF) {
53 gpio_set_value(GPIO_E7XX_IR_OFF, 1);
54 pxa2xx_transceiver_mode(dev, mode);
55 } else {
56 pxa2xx_transceiver_mode(dev, mode);
57 gpio_set_value(GPIO_E7XX_IR_OFF, 0);
58 }
59}
60
61int e7xx_irda_init(void)
62{
63 int ret;
64
65 ret = gpio_request(GPIO_E7XX_IR_OFF, "IrDA power");
66 if (ret)
67 goto out;
68
69 ret = gpio_direction_output(GPIO_E7XX_IR_OFF, 0);
70 if (ret)
71 goto out;
72
73 e7xx_irda_transceiver_mode(NULL, IR_SIRMODE | IR_OFF);
74out:
75 return ret;
76}
77
78static void e7xx_irda_shutdown(struct device *dev)
79{
80 e7xx_irda_transceiver_mode(dev, IR_SIRMODE | IR_OFF);
81 gpio_free(GPIO_E7XX_IR_OFF);
82}
83
84struct pxaficp_platform_data e7xx_ficp_platform_data = { 50struct pxaficp_platform_data e7xx_ficp_platform_data = {
85 .transceiver_cap = IR_SIRMODE | IR_OFF, 51 .gpio_pwdown = GPIO_E7XX_IR_OFF,
86 .transceiver_mode = e7xx_irda_transceiver_mode, 52 .transceiver_cap = IR_SIRMODE | IR_OFF,
87 .shutdown = e7xx_irda_shutdown,
88}; 53};
89 54
90int eseries_tmio_enable(struct platform_device *dev) 55int eseries_tmio_enable(struct platform_device *dev)
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
index ca9912ea78d9..1708c0109844 100644
--- a/arch/arm/mach-pxa/gumstix.c
+++ b/arch/arm/mach-pxa/gumstix.c
@@ -88,7 +88,10 @@ static struct platform_device *devices[] __initdata = {
88 88
89#ifdef CONFIG_MMC_PXA 89#ifdef CONFIG_MMC_PXA
90static struct pxamci_platform_data gumstix_mci_platform_data = { 90static struct pxamci_platform_data gumstix_mci_platform_data = {
91 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 91 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
92 .gpio_card_detect = -1,
93 .gpio_card_ro = -1,
94 .gpio_power = -1,
92}; 95};
93 96
94static void __init gumstix_mmc_init(void) 97static void __init gumstix_mmc_init(void)
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index 81359d574f88..abff9e132749 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -45,6 +45,7 @@
45#include <mach/irda.h> 45#include <mach/irda.h>
46#include <mach/pxa2xx_spi.h> 46#include <mach/pxa2xx_spi.h>
47 47
48#include <video/platform_lcd.h>
48#include <video/w100fb.h> 49#include <video/w100fb.h>
49 50
50#include "devices.h" 51#include "devices.h"
@@ -174,14 +175,9 @@ static int hx4700_gpio_request(struct gpio_ress *gpios, int size)
174 * IRDA 175 * IRDA
175 */ 176 */
176 177
177static void irda_transceiver_mode(struct device *dev, int mode)
178{
179 gpio_set_value(GPIO105_HX4700_nIR_ON, mode & IR_OFF);
180}
181
182static struct pxaficp_platform_data ficp_info = { 178static struct pxaficp_platform_data ficp_info = {
183 .transceiver_cap = IR_SIRMODE | IR_OFF, 179 .gpio_pwdown = GPIO105_HX4700_nIR_ON,
184 .transceiver_mode = irda_transceiver_mode, 180 .transceiver_cap = IR_SIRMODE | IR_OFF,
185}; 181};
186 182
187/* 183/*
@@ -368,8 +364,6 @@ static struct platform_device egpio = {
368 * LCD - Sony display connected to ATI Imageon w3220 364 * LCD - Sony display connected to ATI Imageon w3220
369 */ 365 */
370 366
371static int lcd_power;
372
373static void sony_lcd_init(void) 367static void sony_lcd_init(void)
374{ 368{
375 gpio_set_value(GPIO84_HX4700_LCD_SQN, 1); 369 gpio_set_value(GPIO84_HX4700_LCD_SQN, 1);
@@ -410,35 +404,6 @@ static void sony_lcd_off(void)
410 gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 0); 404 gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 0);
411} 405}
412 406
413static int hx4700_lcd_set_power(struct lcd_device *ldev, int level)
414{
415 switch (level) {
416 case FB_BLANK_UNBLANK:
417 sony_lcd_init();
418 break;
419 case FB_BLANK_NORMAL:
420 case FB_BLANK_VSYNC_SUSPEND:
421 case FB_BLANK_HSYNC_SUSPEND:
422 case FB_BLANK_POWERDOWN:
423 sony_lcd_off();
424 break;
425 }
426 lcd_power = level;
427 return 0;
428}
429
430static int hx4700_lcd_get_power(struct lcd_device *lm)
431{
432 return lcd_power;
433}
434
435static struct lcd_ops hx4700_lcd_ops = {
436 .get_power = hx4700_lcd_get_power,
437 .set_power = hx4700_lcd_set_power,
438};
439
440static struct lcd_device *hx4700_lcd_device;
441
442#ifdef CONFIG_PM 407#ifdef CONFIG_PM
443static void w3220_lcd_suspend(struct w100fb_par *wfb) 408static void w3220_lcd_suspend(struct w100fb_par *wfb)
444{ 409{
@@ -573,6 +538,27 @@ static struct platform_device w3220 = {
573 .resource = w3220_resources, 538 .resource = w3220_resources,
574}; 539};
575 540
541static void hx4700_lcd_set_power(struct plat_lcd_data *pd, unsigned int power)
542{
543 if (power)
544 sony_lcd_init();
545 else
546 sony_lcd_off();
547}
548
549static struct plat_lcd_data hx4700_lcd_data = {
550 .set_power = hx4700_lcd_set_power,
551};
552
553static struct platform_device hx4700_lcd = {
554 .name = "platform-lcd",
555 .id = -1,
556 .dev = {
557 .platform_data = &hx4700_lcd_data,
558 .parent = &w3220.dev,
559 },
560};
561
576/* 562/*
577 * Backlight 563 * Backlight
578 */ 564 */
@@ -872,9 +858,6 @@ static void __init hx4700_init(void)
872 pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); 858 pxa2xx_set_spi_info(2, &pxa_ssp2_master_info);
873 spi_register_board_info(ARRAY_AND_SIZE(tsc2046_board_info)); 859 spi_register_board_info(ARRAY_AND_SIZE(tsc2046_board_info));
874 860
875 hx4700_lcd_device = lcd_device_register("w100fb", NULL,
876 (void *)&w3220_info, &hx4700_lcd_ops);
877
878 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 0); 861 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 0);
879 mdelay(10); 862 mdelay(10);
880 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1); 863 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1);
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index b6243b59d9be..b6486ef20b17 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -168,7 +168,10 @@ static struct pxafb_mach_info sharp_lm8v31 = {
168}; 168};
169 169
170static struct pxamci_platform_data idp_mci_platform_data = { 170static struct pxamci_platform_data idp_mci_platform_data = {
171 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 171 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
172 .gpio_card_detect = -1,
173 .gpio_card_ro = -1,
174 .gpio_power = -1,
172}; 175};
173 176
174static void __init idp_init(void) 177static void __init idp_init(void)
diff --git a/arch/arm/mach-pxa/imote2.c b/arch/arm/mach-pxa/imote2.c
index 961807dc6467..2a4945db31c5 100644
--- a/arch/arm/mach-pxa/imote2.c
+++ b/arch/arm/mach-pxa/imote2.c
@@ -389,6 +389,9 @@ static int imote2_mci_get_ro(struct device *dev)
389static struct pxamci_platform_data imote2_mci_platform_data = { 389static struct pxamci_platform_data imote2_mci_platform_data = {
390 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* default anyway */ 390 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* default anyway */
391 .get_ro = imote2_mci_get_ro, 391 .get_ro = imote2_mci_get_ro,
392 .gpio_card_detect = -1,
393 .gpio_card_ro = -1,
394 .gpio_power = -1,
392}; 395};
393 396
394static struct mtd_partition imote2flash_partitions[] = { 397static struct mtd_partition imote2flash_partitions[] = {
diff --git a/arch/arm/mach-pxa/include/mach/balloon3.h b/arch/arm/mach-pxa/include/mach/balloon3.h
new file mode 100644
index 000000000000..bfec09b1814b
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/balloon3.h
@@ -0,0 +1,134 @@
1/*
2 * linux/include/asm-arm/arch-pxa/balloon3.h
3 *
4 * Authors: Nick Bane and Wookey
5 * Created: Oct, 2005
6 * Copyright: Toby Churchill Ltd
7 * Cribbed from mainstone.c, by Nicholas Pitre
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 */
13
14#ifndef ASM_ARCH_BALLOON3_H
15#define ASM_ARCH_BALLOON3_H
16
17enum balloon3_features {
18 BALLOON3_FEATURE_OHCI,
19 BALLOON3_FEATURE_MMC,
20 BALLOON3_FEATURE_CF,
21 BALLOON3_FEATURE_AUDIO,
22 BALLOON3_FEATURE_TOPPOLY,
23};
24
25#define BALLOON3_FPGA_PHYS PXA_CS4_PHYS
26#define BALLOON3_FPGA_VIRT (0xf1000000) /* as per balloon2 */
27#define BALLOON3_FPGA_LENGTH 0x01000000
28
29/* FPGA/CPLD registers */
30#define BALLOON3_PCMCIA0_REG (BALLOON3_FPGA_VIRT + 0x00e00008)
31/* fixme - same for now */
32#define BALLOON3_PCMCIA1_REG (BALLOON3_FPGA_VIRT + 0x00e00008)
33#define BALLOON3_NANDIO_IO_REG (BALLOON3_FPGA_VIRT + 0x00e00000)
34/* fpga/cpld interrupt control register */
35#define BALLOON3_INT_CONTROL_REG (BALLOON3_FPGA_VIRT + 0x00e0000C)
36#define BALLOON3_NANDIO_CTL2_REG (BALLOON3_FPGA_VIRT + 0x00e00010)
37#define BALLOON3_NANDIO_CTL_REG (BALLOON3_FPGA_VIRT + 0x00e00014)
38#define BALLOON3_VERSION_REG (BALLOON3_FPGA_VIRT + 0x00e0001c)
39
40#define BALLOON3_SAMOSA_ADDR_REG (BALLOON3_FPGA_VIRT + 0x00c00000)
41#define BALLOON3_SAMOSA_DATA_REG (BALLOON3_FPGA_VIRT + 0x00c00004)
42#define BALLOON3_SAMOSA_STATUS_REG (BALLOON3_FPGA_VIRT + 0x00c0001c)
43
44/* GPIOs for irqs */
45#define BALLOON3_GPIO_AUX_NIRQ (94)
46#define BALLOON3_GPIO_CODEC_IRQ (95)
47
48/* Timer and Idle LED locations */
49#define BALLOON3_GPIO_LED_NAND (9)
50#define BALLOON3_GPIO_LED_IDLE (10)
51
52/* backlight control */
53#define BALLOON3_GPIO_RUN_BACKLIGHT (99)
54
55#define BALLOON3_GPIO_S0_CD (105)
56
57/* FPGA Interrupt Mask/Acknowledge Register */
58#define BALLOON3_INT_S0_IRQ (1 << 0) /* PCMCIA 0 IRQ */
59#define BALLOON3_INT_S0_STSCHG (1 << 1) /* PCMCIA 0 status changed */
60
61/* CF Status Register */
62#define BALLOON3_PCMCIA_nIRQ (1 << 0) /* IRQ / ready signal */
63#define BALLOON3_PCMCIA_nSTSCHG_BVD1 (1 << 1)
64 /* VDD sense / card status changed */
65
66/* CF control register (write) */
67#define BALLOON3_PCMCIA_RESET (1 << 0) /* Card reset signal */
68#define BALLOON3_PCMCIA_ENABLE (1 << 1)
69#define BALLOON3_PCMCIA_ADD_ENABLE (1 << 2)
70
71/* CPLD (and FPGA) interface definitions */
72#define CPLD_LCD0_DATA_SET 0x00
73#define CPLD_LCD0_DATA_CLR 0x10
74#define CPLD_LCD0_COMMAND_SET 0x01
75#define CPLD_LCD0_COMMAND_CLR 0x11
76#define CPLD_LCD1_DATA_SET 0x02
77#define CPLD_LCD1_DATA_CLR 0x12
78#define CPLD_LCD1_COMMAND_SET 0x03
79#define CPLD_LCD1_COMMAND_CLR 0x13
80
81#define CPLD_MISC_SET 0x07
82#define CPLD_MISC_CLR 0x17
83#define CPLD_MISC_LOON_NRESET_BIT 0
84#define CPLD_MISC_LOON_UNSUSP_BIT 1
85#define CPLD_MISC_RUN_5V_BIT 2
86#define CPLD_MISC_CHG_D0_BIT 3
87#define CPLD_MISC_CHG_D1_BIT 4
88#define CPLD_MISC_DAC_NCS_BIT 5
89
90#define CPLD_LCD_SET 0x08
91#define CPLD_LCD_CLR 0x18
92#define CPLD_LCD_BACKLIGHT_EN_0_BIT 0
93#define CPLD_LCD_BACKLIGHT_EN_1_BIT 1
94#define CPLD_LCD_LED_RED_BIT 4
95#define CPLD_LCD_LED_GREEN_BIT 5
96#define CPLD_LCD_NRESET_BIT 7
97
98#define CPLD_LCD_RO_SET 0x09
99#define CPLD_LCD_RO_CLR 0x19
100#define CPLD_LCD_RO_LCD0_nWAIT_BIT 0
101#define CPLD_LCD_RO_LCD1_nWAIT_BIT 1
102
103#define CPLD_SERIAL_SET 0x0a
104#define CPLD_SERIAL_CLR 0x1a
105#define CPLD_SERIAL_GSM_RI_BIT 0
106#define CPLD_SERIAL_GSM_CTS_BIT 1
107#define CPLD_SERIAL_GSM_DTR_BIT 2
108#define CPLD_SERIAL_LPR_CTS_BIT 3
109#define CPLD_SERIAL_TC232_CTS_BIT 4
110#define CPLD_SERIAL_TC232_DSR_BIT 5
111
112#define CPLD_SROUTING_SET 0x0b
113#define CPLD_SROUTING_CLR 0x1b
114#define CPLD_SROUTING_MSP430_LPR 0
115#define CPLD_SROUTING_MSP430_TC232 1
116#define CPLD_SROUTING_MSP430_GSM 2
117#define CPLD_SROUTING_LOON_LPR (0 << 4)
118#define CPLD_SROUTING_LOON_TC232 (1 << 4)
119#define CPLD_SROUTING_LOON_GSM (2 << 4)
120
121#define CPLD_AROUTING_SET 0x0c
122#define CPLD_AROUTING_CLR 0x1c
123#define CPLD_AROUTING_MIC2PHONE_BIT 0
124#define CPLD_AROUTING_PHONE2INT_BIT 1
125#define CPLD_AROUTING_PHONE2EXT_BIT 2
126#define CPLD_AROUTING_LOONL2INT_BIT 3
127#define CPLD_AROUTING_LOONL2EXT_BIT 4
128#define CPLD_AROUTING_LOONR2PHONE_BIT 5
129#define CPLD_AROUTING_LOONR2INT_BIT 6
130#define CPLD_AROUTING_LOONR2EXT_BIT 7
131
132extern int balloon3_has(enum balloon3_features feature);
133
134#endif
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h
index a88d7caff0d1..811743c56147 100644
--- a/arch/arm/mach-pxa/include/mach/colibri.h
+++ b/arch/arm/mach-pxa/include/mach/colibri.h
@@ -23,6 +23,12 @@ static inline void colibri_pxa3xx_init_lcd(int bl_pin) {}
23extern void colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data); 23extern void colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data);
24#endif 24#endif
25 25
26#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
27extern void colibri_pxa3xx_init_nand(void);
28#else
29static inline void colibri_pxa3xx_init_nand(void) {}
30#endif
31
26/* physical memory regions */ 32/* physical memory regions */
27#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */ 33#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */
28 34
diff --git a/arch/arm/mach-pxa/include/mach/entry-macro.S b/arch/arm/mach-pxa/include/mach/entry-macro.S
index f6b4bf3e73d2..241880608ac6 100644
--- a/arch/arm/mach-pxa/include/mach/entry-macro.S
+++ b/arch/arm/mach-pxa/include/mach/entry-macro.S
@@ -24,34 +24,27 @@
24 mov \tmp, \tmp, lsr #13 24 mov \tmp, \tmp, lsr #13
25 and \tmp, \tmp, #0x7 @ Core G 25 and \tmp, \tmp, #0x7 @ Core G
26 cmp \tmp, #1 26 cmp \tmp, #1
27 bhi 1004f 27 bhi 1002f
28 28
29 @ Core Generation 1 (PXA25x)
29 mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000 30 mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000
30 add \base, \base, #0x00d00000 31 add \base, \base, #0x00d00000
31 ldr \irqstat, [\base, #0] @ ICIP 32 ldr \irqstat, [\base, #0] @ ICIP
32 ldr \irqnr, [\base, #4] @ ICMR 33 ldr \irqnr, [\base, #4] @ ICMR
33 b 1002f
34 34
351004:
36 mrc p6, 0, \irqstat, c6, c0, 0 @ ICIP2
37 mrc p6, 0, \irqnr, c7, c0, 0 @ ICMR2
38 ands \irqnr, \irqstat, \irqnr 35 ands \irqnr, \irqstat, \irqnr
39 beq 1003f 36 beq 1001f
40 rsb \irqstat, \irqnr, #0 37 rsb \irqstat, \irqnr, #0
41 and \irqstat, \irqstat, \irqnr 38 and \irqstat, \irqstat, \irqnr
42 clz \irqnr, \irqstat 39 clz \irqnr, \irqstat
43 rsb \irqnr, \irqnr, #31 40 rsb \irqnr, \irqnr, #(31 + PXA_IRQ(0))
44 add \irqnr, \irqnr, #(32 + PXA_IRQ(0))
45 b 1001f 41 b 1001f
461003:
47 mrc p6, 0, \irqstat, c0, c0, 0 @ ICIP
48 mrc p6, 0, \irqnr, c1, c0, 0 @ ICMR
491002: 421002:
50 ands \irqnr, \irqstat, \irqnr 43 @ Core Generation 2 (PXA27x) or Core Generation 3 (PXA3xx)
44 mrc p6, 0, \irqstat, c5, c0, 0 @ ICHP
45 tst \irqstat, #0x80000000
51 beq 1001f 46 beq 1001f
52 rsb \irqstat, \irqnr, #0 47 bic \irqstat, \irqstat, #0x80000000
53 and \irqstat, \irqstat, \irqnr 48 mov \irqnr, \irqstat, lsr #16
54 clz \irqnr, \irqstat
55 rsb \irqnr, \irqnr, #(31 + PXA_IRQ(0))
561001: 491001:
57 .endm 50 .endm
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h
index 16ab79547dae..aa3d9f70a08a 100644
--- a/arch/arm/mach-pxa/include/mach/hardware.h
+++ b/arch/arm/mach-pxa/include/mach/hardware.h
@@ -197,6 +197,16 @@
197#define __cpu_is_pxa935(id) (0) 197#define __cpu_is_pxa935(id) (0)
198#endif 198#endif
199 199
200#ifdef CONFIG_CPU_PXA950
201#define __cpu_is_pxa950(id) \
202 ({ \
203 unsigned int _id = (id) >> 4 & 0xfff; \
204 id == 0x697; \
205 })
206#else
207#define __cpu_is_pxa950(id) (0)
208#endif
209
200#define cpu_is_pxa210() \ 210#define cpu_is_pxa210() \
201 ({ \ 211 ({ \
202 __cpu_is_pxa210(read_cpuid_id()); \ 212 __cpu_is_pxa210(read_cpuid_id()); \
@@ -249,6 +259,13 @@
249 __cpu_is_pxa935(id); \ 259 __cpu_is_pxa935(id); \
250 }) 260 })
251 261
262#define cpu_is_pxa950() \
263 ({ \
264 unsigned int id = read_cpuid(CPUID_ID); \
265 __cpu_is_pxa950(id); \
266 })
267
268
252/* 269/*
253 * CPUID Core Generation Bit 270 * CPUID Core Generation Bit
254 * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x 271 * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
diff --git a/arch/arm/mach-pxa/include/mach/irda.h b/arch/arm/mach-pxa/include/mach/irda.h
index 0a50c3c763df..3cd41f77dda4 100644
--- a/arch/arm/mach-pxa/include/mach/irda.h
+++ b/arch/arm/mach-pxa/include/mach/irda.h
@@ -12,6 +12,8 @@ struct pxaficp_platform_data {
12 void (*transceiver_mode)(struct device *dev, int mode); 12 void (*transceiver_mode)(struct device *dev, int mode);
13 int (*startup)(struct device *dev); 13 int (*startup)(struct device *dev);
14 void (*shutdown)(struct device *dev); 14 void (*shutdown)(struct device *dev);
15 int gpio_pwdown; /* powerdown GPIO for the IrDA chip */
16 bool gpio_pwdown_inverted; /* gpio_pwdown is inverted */
15}; 17};
16 18
17extern void pxa_set_ficp_info(struct pxaficp_platform_data *info); 19extern void pxa_set_ficp_info(struct pxaficp_platform_data *info);
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h
index 6a1d95993342..3677a9af9c87 100644
--- a/arch/arm/mach-pxa/include/mach/irqs.h
+++ b/arch/arm/mach-pxa/include/mach/irqs.h
@@ -68,9 +68,10 @@
68#ifdef CONFIG_PXA3xx 68#ifdef CONFIG_PXA3xx
69#define IRQ_SSP4 PXA_IRQ(13) /* SSP4 service request */ 69#define IRQ_SSP4 PXA_IRQ(13) /* SSP4 service request */
70#define IRQ_CIR PXA_IRQ(34) /* Consumer IR */ 70#define IRQ_CIR PXA_IRQ(34) /* Consumer IR */
71#define IRQ_COMM_WDT PXA_IRQ(35) /* Comm WDT interrupt */
71#define IRQ_TSI PXA_IRQ(36) /* Touch Screen Interface (PXA320) */ 72#define IRQ_TSI PXA_IRQ(36) /* Touch Screen Interface (PXA320) */
72#define IRQ_USIM2 PXA_IRQ(38) /* USIM2 Controller */ 73#define IRQ_USIM2 PXA_IRQ(38) /* USIM2 Controller */
73#define IRQ_GRPHICS PXA_IRQ(39) /* Graphics Controller */ 74#define IRQ_GCU PXA_IRQ(39) /* Graphics Controller */
74#define IRQ_MMC2 PXA_IRQ(41) /* MMC2 Controller */ 75#define IRQ_MMC2 PXA_IRQ(41) /* MMC2 Controller */
75#define IRQ_1WIRE PXA_IRQ(44) /* 1-Wire Controller */ 76#define IRQ_1WIRE PXA_IRQ(44) /* 1-Wire Controller */
76#define IRQ_NAND PXA_IRQ(45) /* NAND Controller */ 77#define IRQ_NAND PXA_IRQ(45) /* NAND Controller */
@@ -81,8 +82,31 @@
81#define IRQ_MMC3 PXA_IRQ(55) /* MMC3 Controller (PXA310) */ 82#define IRQ_MMC3 PXA_IRQ(55) /* MMC3 Controller (PXA310) */
82#endif 83#endif
83 84
84#define PXA_GPIO_IRQ_BASE PXA_IRQ(64) 85#ifdef CONFIG_CPU_PXA935
85#define PXA_GPIO_IRQ_NUM (128) 86#define IRQ_U2O PXA_IRQ(64) /* USB OTG 2.0 Controller (PXA935) */
87#define IRQ_U2H PXA_IRQ(65) /* USB Host 2.0 Controller (PXA935) */
88
89#define IRQ_MMC3_PXA935 PXA_IRQ(72) /* MMC3 Controller (PXA935) */
90#define IRQ_MMC4_PXA935 PXA_IRQ(73) /* MMC4 Controller (PXA935) */
91#define IRQ_MMC5_PXA935 PXA_IRQ(74) /* MMC5 Controller (PXA935) */
92
93#define IRQ_U2P PXA_IRQ(93) /* USB PHY D+/D- Lines (PXA935) */
94#endif
95
96#ifdef CONFIG_CPU_PXA930
97#define IRQ_ENHROT PXA_IRQ(37) /* Enhanced Rotary (PXA930) */
98#define IRQ_ACIPC0 PXA_IRQ(5)
99#define IRQ_ACIPC1 PXA_IRQ(40)
100#define IRQ_ACIPC2 PXA_IRQ(19)
101#define IRQ_TRKBALL PXA_IRQ(43) /* Track Ball */
102#endif
103
104#ifdef CONFIG_CPU_PXA950
105#define IRQ_GC500 PXA_IRQ(70) /* Graphics Controller (PXA950) */
106#endif
107
108#define PXA_GPIO_IRQ_BASE PXA_IRQ(96)
109#define PXA_GPIO_IRQ_NUM (192)
86 110
87#define GPIO_2_x_TO_IRQ(x) (PXA_GPIO_IRQ_BASE + (x)) 111#define GPIO_2_x_TO_IRQ(x) (PXA_GPIO_IRQ_BASE + (x))
88#define IRQ_GPIO(x) (((x) < 2) ? (IRQ_GPIO0 + (x)) : GPIO_2_x_TO_IRQ(x)) 112#define IRQ_GPIO(x) (((x) < 2) ? (IRQ_GPIO0 + (x)) : GPIO_2_x_TO_IRQ(x))
@@ -105,6 +129,8 @@
105#define IRQ_BOARD_END (IRQ_BOARD_START + 70) 129#define IRQ_BOARD_END (IRQ_BOARD_START + 70)
106#elif defined(CONFIG_MACH_ZYLONITE) 130#elif defined(CONFIG_MACH_ZYLONITE)
107#define IRQ_BOARD_END (IRQ_BOARD_START + 32) 131#define IRQ_BOARD_END (IRQ_BOARD_START + 32)
132#elif defined(CONFIG_PXA_EZX)
133#define IRQ_BOARD_END (IRQ_BOARD_START + 23)
108#else 134#else
109#define IRQ_BOARD_END (IRQ_BOARD_START + 16) 135#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
110#endif 136#endif
@@ -237,6 +263,16 @@
237#define MAINSTONE_S1_STSCHG_IRQ MAINSTONE_IRQ(14) 263#define MAINSTONE_S1_STSCHG_IRQ MAINSTONE_IRQ(14)
238#define MAINSTONE_S1_IRQ MAINSTONE_IRQ(15) 264#define MAINSTONE_S1_IRQ MAINSTONE_IRQ(15)
239 265
266/* Balloon3 Interrupts */
267#define BALLOON3_IRQ(x) (IRQ_BOARD_START + (x))
268
269#define BALLOON3_BP_CF_NRDY_IRQ BALLOON3_IRQ(0)
270#define BALLOON3_BP_NSTSCHG_IRQ BALLOON3_IRQ(1)
271
272#define BALLOON3_AUX_NIRQ IRQ_GPIO(BALLOON3_GPIO_AUX_NIRQ)
273#define BALLOON3_CODEC_IRQ IRQ_GPIO(BALLOON3_GPIO_CODEC_IRQ)
274#define BALLOON3_S0_CD_IRQ IRQ_GPIO(BALLOON3_GPIO_S0_CD)
275
240/* LoCoMo Interrupts (CONFIG_SHARP_LOCOMO) */ 276/* LoCoMo Interrupts (CONFIG_SHARP_LOCOMO) */
241#define IRQ_LOCOMO_KEY_BASE (IRQ_BOARD_START + 0) 277#define IRQ_LOCOMO_KEY_BASE (IRQ_BOARD_START + 0)
242#define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1) 278#define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1)
diff --git a/arch/arm/mach-pxa/include/mach/mfp.h b/arch/arm/mach-pxa/include/mach/mfp.h
index 482185053a92..271e249ae34f 100644
--- a/arch/arm/mach-pxa/include/mach/mfp.h
+++ b/arch/arm/mach-pxa/include/mach/mfp.h
@@ -16,305 +16,6 @@
16#ifndef __ASM_ARCH_MFP_H 16#ifndef __ASM_ARCH_MFP_H
17#define __ASM_ARCH_MFP_H 17#define __ASM_ARCH_MFP_H
18 18
19#define mfp_to_gpio(m) ((m) % 128) 19#include <plat/mfp.h>
20
21/* list of all the configurable MFP pins */
22enum {
23 MFP_PIN_INVALID = -1,
24
25 MFP_PIN_GPIO0 = 0,
26 MFP_PIN_GPIO1,
27 MFP_PIN_GPIO2,
28 MFP_PIN_GPIO3,
29 MFP_PIN_GPIO4,
30 MFP_PIN_GPIO5,
31 MFP_PIN_GPIO6,
32 MFP_PIN_GPIO7,
33 MFP_PIN_GPIO8,
34 MFP_PIN_GPIO9,
35 MFP_PIN_GPIO10,
36 MFP_PIN_GPIO11,
37 MFP_PIN_GPIO12,
38 MFP_PIN_GPIO13,
39 MFP_PIN_GPIO14,
40 MFP_PIN_GPIO15,
41 MFP_PIN_GPIO16,
42 MFP_PIN_GPIO17,
43 MFP_PIN_GPIO18,
44 MFP_PIN_GPIO19,
45 MFP_PIN_GPIO20,
46 MFP_PIN_GPIO21,
47 MFP_PIN_GPIO22,
48 MFP_PIN_GPIO23,
49 MFP_PIN_GPIO24,
50 MFP_PIN_GPIO25,
51 MFP_PIN_GPIO26,
52 MFP_PIN_GPIO27,
53 MFP_PIN_GPIO28,
54 MFP_PIN_GPIO29,
55 MFP_PIN_GPIO30,
56 MFP_PIN_GPIO31,
57 MFP_PIN_GPIO32,
58 MFP_PIN_GPIO33,
59 MFP_PIN_GPIO34,
60 MFP_PIN_GPIO35,
61 MFP_PIN_GPIO36,
62 MFP_PIN_GPIO37,
63 MFP_PIN_GPIO38,
64 MFP_PIN_GPIO39,
65 MFP_PIN_GPIO40,
66 MFP_PIN_GPIO41,
67 MFP_PIN_GPIO42,
68 MFP_PIN_GPIO43,
69 MFP_PIN_GPIO44,
70 MFP_PIN_GPIO45,
71 MFP_PIN_GPIO46,
72 MFP_PIN_GPIO47,
73 MFP_PIN_GPIO48,
74 MFP_PIN_GPIO49,
75 MFP_PIN_GPIO50,
76 MFP_PIN_GPIO51,
77 MFP_PIN_GPIO52,
78 MFP_PIN_GPIO53,
79 MFP_PIN_GPIO54,
80 MFP_PIN_GPIO55,
81 MFP_PIN_GPIO56,
82 MFP_PIN_GPIO57,
83 MFP_PIN_GPIO58,
84 MFP_PIN_GPIO59,
85 MFP_PIN_GPIO60,
86 MFP_PIN_GPIO61,
87 MFP_PIN_GPIO62,
88 MFP_PIN_GPIO63,
89 MFP_PIN_GPIO64,
90 MFP_PIN_GPIO65,
91 MFP_PIN_GPIO66,
92 MFP_PIN_GPIO67,
93 MFP_PIN_GPIO68,
94 MFP_PIN_GPIO69,
95 MFP_PIN_GPIO70,
96 MFP_PIN_GPIO71,
97 MFP_PIN_GPIO72,
98 MFP_PIN_GPIO73,
99 MFP_PIN_GPIO74,
100 MFP_PIN_GPIO75,
101 MFP_PIN_GPIO76,
102 MFP_PIN_GPIO77,
103 MFP_PIN_GPIO78,
104 MFP_PIN_GPIO79,
105 MFP_PIN_GPIO80,
106 MFP_PIN_GPIO81,
107 MFP_PIN_GPIO82,
108 MFP_PIN_GPIO83,
109 MFP_PIN_GPIO84,
110 MFP_PIN_GPIO85,
111 MFP_PIN_GPIO86,
112 MFP_PIN_GPIO87,
113 MFP_PIN_GPIO88,
114 MFP_PIN_GPIO89,
115 MFP_PIN_GPIO90,
116 MFP_PIN_GPIO91,
117 MFP_PIN_GPIO92,
118 MFP_PIN_GPIO93,
119 MFP_PIN_GPIO94,
120 MFP_PIN_GPIO95,
121 MFP_PIN_GPIO96,
122 MFP_PIN_GPIO97,
123 MFP_PIN_GPIO98,
124 MFP_PIN_GPIO99,
125 MFP_PIN_GPIO100,
126 MFP_PIN_GPIO101,
127 MFP_PIN_GPIO102,
128 MFP_PIN_GPIO103,
129 MFP_PIN_GPIO104,
130 MFP_PIN_GPIO105,
131 MFP_PIN_GPIO106,
132 MFP_PIN_GPIO107,
133 MFP_PIN_GPIO108,
134 MFP_PIN_GPIO109,
135 MFP_PIN_GPIO110,
136 MFP_PIN_GPIO111,
137 MFP_PIN_GPIO112,
138 MFP_PIN_GPIO113,
139 MFP_PIN_GPIO114,
140 MFP_PIN_GPIO115,
141 MFP_PIN_GPIO116,
142 MFP_PIN_GPIO117,
143 MFP_PIN_GPIO118,
144 MFP_PIN_GPIO119,
145 MFP_PIN_GPIO120,
146 MFP_PIN_GPIO121,
147 MFP_PIN_GPIO122,
148 MFP_PIN_GPIO123,
149 MFP_PIN_GPIO124,
150 MFP_PIN_GPIO125,
151 MFP_PIN_GPIO126,
152 MFP_PIN_GPIO127,
153 MFP_PIN_GPIO0_2,
154 MFP_PIN_GPIO1_2,
155 MFP_PIN_GPIO2_2,
156 MFP_PIN_GPIO3_2,
157 MFP_PIN_GPIO4_2,
158 MFP_PIN_GPIO5_2,
159 MFP_PIN_GPIO6_2,
160 MFP_PIN_GPIO7_2,
161 MFP_PIN_GPIO8_2,
162 MFP_PIN_GPIO9_2,
163 MFP_PIN_GPIO10_2,
164 MFP_PIN_GPIO11_2,
165 MFP_PIN_GPIO12_2,
166 MFP_PIN_GPIO13_2,
167 MFP_PIN_GPIO14_2,
168 MFP_PIN_GPIO15_2,
169 MFP_PIN_GPIO16_2,
170 MFP_PIN_GPIO17_2,
171
172 MFP_PIN_ULPI_STP,
173 MFP_PIN_ULPI_NXT,
174 MFP_PIN_ULPI_DIR,
175
176 MFP_PIN_nXCVREN,
177 MFP_PIN_DF_CLE_nOE,
178 MFP_PIN_DF_nADV1_ALE,
179 MFP_PIN_DF_SCLK_E,
180 MFP_PIN_DF_SCLK_S,
181 MFP_PIN_nBE0,
182 MFP_PIN_nBE1,
183 MFP_PIN_DF_nADV2_ALE,
184 MFP_PIN_DF_INT_RnB,
185 MFP_PIN_DF_nCS0,
186 MFP_PIN_DF_nCS1,
187 MFP_PIN_nLUA,
188 MFP_PIN_nLLA,
189 MFP_PIN_DF_nWE,
190 MFP_PIN_DF_ALE_nWE,
191 MFP_PIN_DF_nRE_nOE,
192 MFP_PIN_DF_ADDR0,
193 MFP_PIN_DF_ADDR1,
194 MFP_PIN_DF_ADDR2,
195 MFP_PIN_DF_ADDR3,
196 MFP_PIN_DF_IO0,
197 MFP_PIN_DF_IO1,
198 MFP_PIN_DF_IO2,
199 MFP_PIN_DF_IO3,
200 MFP_PIN_DF_IO4,
201 MFP_PIN_DF_IO5,
202 MFP_PIN_DF_IO6,
203 MFP_PIN_DF_IO7,
204 MFP_PIN_DF_IO8,
205 MFP_PIN_DF_IO9,
206 MFP_PIN_DF_IO10,
207 MFP_PIN_DF_IO11,
208 MFP_PIN_DF_IO12,
209 MFP_PIN_DF_IO13,
210 MFP_PIN_DF_IO14,
211 MFP_PIN_DF_IO15,
212
213 /* additional pins on PXA930 */
214 MFP_PIN_GSIM_UIO,
215 MFP_PIN_GSIM_UCLK,
216 MFP_PIN_GSIM_UDET,
217 MFP_PIN_GSIM_nURST,
218 MFP_PIN_PMIC_INT,
219 MFP_PIN_RDY,
220
221 MFP_PIN_MAX,
222};
223
224/*
225 * a possible MFP configuration is represented by a 32-bit integer
226 *
227 * bit 0.. 9 - MFP Pin Number (1024 Pins Maximum)
228 * bit 10..12 - Alternate Function Selection
229 * bit 13..15 - Drive Strength
230 * bit 16..18 - Low Power Mode State
231 * bit 19..20 - Low Power Mode Edge Detection
232 * bit 21..22 - Run Mode Pull State
233 *
234 * to facilitate the definition, the following macros are provided
235 *
236 * MFP_CFG_DEFAULT - default MFP configuration value, with
237 * alternate function = 0,
238 * drive strength = fast 3mA (MFP_DS03X)
239 * low power mode = default
240 * edge detection = none
241 *
242 * MFP_CFG - default MFPR value with alternate function
243 * MFP_CFG_DRV - default MFPR value with alternate function and
244 * pin drive strength
245 * MFP_CFG_LPM - default MFPR value with alternate function and
246 * low power mode
247 * MFP_CFG_X - default MFPR value with alternate function,
248 * pin drive strength and low power mode
249 */
250
251typedef unsigned long mfp_cfg_t;
252
253#define MFP_PIN(x) ((x) & 0x3ff)
254
255#define MFP_AF0 (0x0 << 10)
256#define MFP_AF1 (0x1 << 10)
257#define MFP_AF2 (0x2 << 10)
258#define MFP_AF3 (0x3 << 10)
259#define MFP_AF4 (0x4 << 10)
260#define MFP_AF5 (0x5 << 10)
261#define MFP_AF6 (0x6 << 10)
262#define MFP_AF7 (0x7 << 10)
263#define MFP_AF_MASK (0x7 << 10)
264#define MFP_AF(x) (((x) >> 10) & 0x7)
265
266#define MFP_DS01X (0x0 << 13)
267#define MFP_DS02X (0x1 << 13)
268#define MFP_DS03X (0x2 << 13)
269#define MFP_DS04X (0x3 << 13)
270#define MFP_DS06X (0x4 << 13)
271#define MFP_DS08X (0x5 << 13)
272#define MFP_DS10X (0x6 << 13)
273#define MFP_DS13X (0x7 << 13)
274#define MFP_DS_MASK (0x7 << 13)
275#define MFP_DS(x) (((x) >> 13) & 0x7)
276
277#define MFP_LPM_DEFAULT (0x0 << 16)
278#define MFP_LPM_DRIVE_LOW (0x1 << 16)
279#define MFP_LPM_DRIVE_HIGH (0x2 << 16)
280#define MFP_LPM_PULL_LOW (0x3 << 16)
281#define MFP_LPM_PULL_HIGH (0x4 << 16)
282#define MFP_LPM_FLOAT (0x5 << 16)
283#define MFP_LPM_INPUT (0x6 << 16)
284#define MFP_LPM_STATE_MASK (0x7 << 16)
285#define MFP_LPM_STATE(x) (((x) >> 16) & 0x7)
286
287#define MFP_LPM_EDGE_NONE (0x0 << 19)
288#define MFP_LPM_EDGE_RISE (0x1 << 19)
289#define MFP_LPM_EDGE_FALL (0x2 << 19)
290#define MFP_LPM_EDGE_BOTH (0x3 << 19)
291#define MFP_LPM_EDGE_MASK (0x3 << 19)
292#define MFP_LPM_EDGE(x) (((x) >> 19) & 0x3)
293
294#define MFP_PULL_NONE (0x0 << 21)
295#define MFP_PULL_LOW (0x1 << 21)
296#define MFP_PULL_HIGH (0x2 << 21)
297#define MFP_PULL_BOTH (0x3 << 21)
298#define MFP_PULL_MASK (0x3 << 21)
299#define MFP_PULL(x) (((x) >> 21) & 0x3)
300
301#define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
302 MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
303
304#define MFP_CFG(pin, af) \
305 ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\
306 (MFP_PIN(MFP_PIN_##pin) | MFP_##af))
307
308#define MFP_CFG_DRV(pin, af, drv) \
309 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\
310 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv))
311
312#define MFP_CFG_LPM(pin, af, lpm) \
313 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\
314 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm))
315
316#define MFP_CFG_X(pin, af, drv, lpm) \
317 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\
318 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm))
319 20
320#endif /* __ASM_ARCH_MFP_H */ 21#endif /* __ASM_ARCH_MFP_H */
diff --git a/arch/arm/mach-pxa/include/mach/mmc.h b/arch/arm/mach-pxa/include/mach/mmc.h
index 6d1304c9270f..02a69dc2ee63 100644
--- a/arch/arm/mach-pxa/include/mach/mmc.h
+++ b/arch/arm/mach-pxa/include/mach/mmc.h
@@ -14,6 +14,11 @@ struct pxamci_platform_data {
14 int (*get_ro)(struct device *); 14 int (*get_ro)(struct device *);
15 void (*setpower)(struct device *, unsigned int); 15 void (*setpower)(struct device *, unsigned int);
16 void (*exit)(struct device *, void *); 16 void (*exit)(struct device *, void *);
17 int gpio_card_detect; /* gpio detecting card insertion */
18 int gpio_card_ro; /* gpio detecting read only toggle */
19 bool gpio_card_ro_invert; /* gpio ro is inverted */
20 int gpio_power; /* gpio powering up MMC bus */
21 bool gpio_power_invert; /* gpio power is inverted */
17}; 22};
18 23
19extern void pxa_set_mci_info(struct pxamci_platform_data *info); 24extern void pxa_set_mci_info(struct pxamci_platform_data *info);
diff --git a/arch/arm/mach-pxa/include/mach/palmtc.h b/arch/arm/mach-pxa/include/mach/palmtc.h
new file mode 100644
index 000000000000..3dc9b074ab46
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/palmtc.h
@@ -0,0 +1,86 @@
1/*
2 * linux/include/asm-arm/arch-pxa/palmtc-gpio.h
3 *
4 * GPIOs and interrupts for Palm Tungsten|C Handheld Computer
5 *
6 * Authors: Alex Osborne <bobofdoom@gmail.com>
7 * Marek Vasut <marek.vasut@gmail.com>
8 * Holger Bocklet <bitz.email@gmx.net>
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
16#ifndef _INCLUDE_PALMTC_H_
17#define _INCLUDE_PALMTC_H_
18
19/** HERE ARE GPIOs **/
20
21/* GPIOs */
22#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
23#define GPIO_NR_PALMTC_CRADLE_DETECT 5
24#define GPIO_NR_PALMTC_HOTSYNC_BUTTON 7
25
26/* SD/MMC */
27#define GPIO_NR_PALMTC_SD_DETECT_N 12
28#define GPIO_NR_PALMTC_SD_POWER 32
29#define GPIO_NR_PALMTC_SD_READONLY 54
30
31/* WLAN */
32#define GPIO_NR_PALMTC_PCMCIA_READY 13
33#define GPIO_NR_PALMTC_PCMCIA_PWRREADY 14
34#define GPIO_NR_PALMTC_PCMCIA_POWER1 15
35#define GPIO_NR_PALMTC_PCMCIA_POWER2 33
36#define GPIO_NR_PALMTC_PCMCIA_POWER3 55
37#define GPIO_NR_PALMTC_PCMCIA_RESET 78
38
39/* UDC */
40#define GPIO_NR_PALMTC_USB_DETECT_N 4
41#define GPIO_NR_PALMTC_USB_POWER 36
42
43/* LCD/BACKLIGHT */
44#define GPIO_NR_PALMTC_BL_POWER 16
45#define GPIO_NR_PALMTC_LCD_POWER 44
46#define GPIO_NR_PALMTC_LCD_BLANK 38
47
48/* UART */
49#define GPIO_NR_PALMTC_RS232_POWER 37
50
51/* IRDA */
52#define GPIO_NR_PALMTC_IR_DISABLE 45
53
54/* IRQs */
55#define IRQ_GPIO_PALMTC_SD_DETECT_N IRQ_GPIO(GPIO_NR_PALMTC_SD_DETECT_N)
56#define IRQ_GPIO_PALMTC_WLAN_READY IRQ_GPIO(GPIO_NR_PALMTC_WLAN_READY)
57
58/* UCB1400 GPIOs */
59#define GPIO_NR_PALMTC_POWER_DETECT (0x80 | 0x00)
60#define GPIO_NR_PALMTC_HEADPHONE_DETECT (0x80 | 0x01)
61#define GPIO_NR_PALMTC_SPEAKER_ENABLE (0x80 | 0x03)
62#define GPIO_NR_PALMTC_VIBRA_POWER (0x80 | 0x05)
63#define GPIO_NR_PALMTC_LED_POWER (0x80 | 0x07)
64
65/** HERE ARE INIT VALUES **/
66#define PALMTC_UCB1400_GPIO_OFFSET 0x80
67
68/* BATTERY */
69#define PALMTC_BAT_MAX_VOLTAGE 4000 /* 4.00V maximum voltage */
70#define PALMTC_BAT_MIN_VOLTAGE 3550 /* 3.55V critical voltage */
71#define PALMTC_BAT_MAX_CURRENT 0 /* unknokn */
72#define PALMTC_BAT_MIN_CURRENT 0 /* unknown */
73#define PALMTC_BAT_MAX_CHARGE 1 /* unknown */
74#define PALMTC_BAT_MIN_CHARGE 1 /* unknown */
75#define PALMTC_MAX_LIFE_MINS 240 /* on-life in minutes */
76
77#define PALMTC_BAT_MEASURE_DELAY (HZ * 1)
78
79/* BACKLIGHT */
80#define PALMTC_MAX_INTENSITY 0xFE
81#define PALMTC_DEFAULT_INTENSITY 0x7E
82#define PALMTC_LIMIT_MASK 0x7F
83#define PALMTC_PRESCALER 0x3F
84#define PALMTC_PERIOD_NS 3500
85
86#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmtx.h b/arch/arm/mach-pxa/include/mach/palmtx.h
index e74082c872e1..1be0db6ed55e 100644
--- a/arch/arm/mach-pxa/include/mach/palmtx.h
+++ b/arch/arm/mach-pxa/include/mach/palmtx.h
@@ -82,6 +82,11 @@
82#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */ 82#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */
83#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */ 83#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */
84 84
85#define PALMTX_NAND_ALE_PHYS (PALMTX_PHYS_NAND_START | (1 << 24))
86#define PALMTX_NAND_CLE_PHYS (PALMTX_PHYS_NAND_START | (1 << 25))
87#define PALMTX_NAND_ALE_VIRT 0xff100000
88#define PALMTX_NAND_CLE_VIRT 0xff200000
89
85/* TOUCHSCREEN */ 90/* TOUCHSCREEN */
86#define AC97_LINK_FRAME 21 91#define AC97_LINK_FRAME 21
87 92
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h b/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
index 7d1a059b3d43..e91d63cfe811 100644
--- a/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
+++ b/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
@@ -208,7 +208,7 @@
208#define CKEN_MVED 43 /* < MVED clock enable */ 208#define CKEN_MVED 43 /* < MVED clock enable */
209 209
210/* Note: GCU clock enable bit differs on PXA300/PXA310 and PXA320 */ 210/* Note: GCU clock enable bit differs on PXA300/PXA310 and PXA320 */
211#define PXA300_CKEN_GRAPHICS 42 /* Graphics controller clock enable */ 211#define CKEN_PXA300_GCU 42 /* Graphics controller clock enable */
212#define PXA320_CKEN_GRAPHICS 7 /* Graphics controller clock enable */ 212#define CKEN_PXA320_GCU 7 /* Graphics controller clock enable */
213 213
214#endif /* __ASM_ARCH_PXA3XX_REGS_H */ 214#endif /* __ASM_ARCH_PXA3XX_REGS_H */
diff --git a/arch/arm/mach-pxa/include/mach/pxafb.h b/arch/arm/mach-pxa/include/mach/pxafb.h
index 6932720ba04e..f73061c90b5e 100644
--- a/arch/arm/mach-pxa/include/mach/pxafb.h
+++ b/arch/arm/mach-pxa/include/mach/pxafb.h
@@ -118,7 +118,8 @@ struct pxafb_mach_info {
118 u_int fixed_modes:1, 118 u_int fixed_modes:1,
119 cmap_inverse:1, 119 cmap_inverse:1,
120 cmap_static:1, 120 cmap_static:1,
121 unused:29; 121 acceleration_enabled:1,
122 unused:28;
122 123
123 /* The following should be defined in LCCR0 124 /* The following should be defined in LCCR0
124 * LCCR0_Act or LCCR0_Pas Active or Passive 125 * LCCR0_Act or LCCR0_Pas Active or Passive
diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h
index ad23e74b762f..68464ce1c1ea 100644
--- a/arch/arm/mach-pxa/include/mach/regs-intc.h
+++ b/arch/arm/mach-pxa/include/mach/regs-intc.h
@@ -13,6 +13,7 @@
13#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */ 13#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */
14#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ 14#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */
15#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ 15#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */
16#define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */
16 17
17#define ICIP2 __REG(0x40D0009C) /* Interrupt Controller IRQ Pending Register 2 */ 18#define ICIP2 __REG(0x40D0009C) /* Interrupt Controller IRQ Pending Register 2 */
18#define ICMR2 __REG(0x40D000A0) /* Interrupt Controller Mask Register 2 */ 19#define ICMR2 __REG(0x40D000A0) /* Interrupt Controller Mask Register 2 */
@@ -20,4 +21,14 @@
20#define ICFP2 __REG(0x40D000A8) /* Interrupt Controller FIQ Pending Register 2 */ 21#define ICFP2 __REG(0x40D000A8) /* Interrupt Controller FIQ Pending Register 2 */
21#define ICPR2 __REG(0x40D000AC) /* Interrupt Controller Pending Register 2 */ 22#define ICPR2 __REG(0x40D000AC) /* Interrupt Controller Pending Register 2 */
22 23
24#define ICIP3 __REG(0x40D00130) /* Interrupt Controller IRQ Pending Register 3 */
25#define ICMR3 __REG(0x40D00134) /* Interrupt Controller Mask Register 3 */
26#define ICLR3 __REG(0x40D00138) /* Interrupt Controller Level Register 3 */
27#define ICFP3 __REG(0x40D0013C) /* Interrupt Controller FIQ Pending Register 3 */
28#define ICPR3 __REG(0x40D00140) /* Interrupt Controller Pending Register 3 */
29
30#define IPR(x) __REG(0x40D0001C + (x < 32 ? (x << 2) \
31 : (x < 64 ? (0x94 + ((x - 32) << 2)) \
32 : (0x128 + ((x - 64) << 2)))))
33
23#endif /* __ASM_MACH_REGS_INTC_H */ 34#endif /* __ASM_MACH_REGS_INTC_H */
diff --git a/arch/arm/mach-pxa/include/mach/uncompress.h b/arch/arm/mach-pxa/include/mach/uncompress.h
index b54749413e96..237734b5b1be 100644
--- a/arch/arm/mach-pxa/include/mach/uncompress.h
+++ b/arch/arm/mach-pxa/include/mach/uncompress.h
@@ -37,7 +37,7 @@ static inline void arch_decomp_setup(void)
37{ 37{
38 if (machine_is_littleton() || machine_is_intelmote2() 38 if (machine_is_littleton() || machine_is_intelmote2()
39 || machine_is_csb726() || machine_is_stargate2() 39 || machine_is_csb726() || machine_is_stargate2()
40 || machine_is_cm_x300()) 40 || machine_is_cm_x300() || machine_is_balloon3())
41 UART = STUART; 41 UART = STUART;
42} 42}
43 43
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index f6e0300e4f64..d694ce289668 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -120,7 +120,7 @@ static void __init pxa_init_low_gpio_irq(set_wake_t fn)
120 120
121void __init pxa_init_irq(int irq_nr, set_wake_t fn) 121void __init pxa_init_irq(int irq_nr, set_wake_t fn)
122{ 122{
123 int irq; 123 int irq, i;
124 124
125 pxa_internal_irq_nr = irq_nr; 125 pxa_internal_irq_nr = irq_nr;
126 126
@@ -129,6 +129,12 @@ void __init pxa_init_irq(int irq_nr, set_wake_t fn)
129 _ICLR(irq) = 0; /* all IRQs are IRQ, not FIQ */ 129 _ICLR(irq) = 0; /* all IRQs are IRQ, not FIQ */
130 } 130 }
131 131
132 /* initialize interrupt priority */
133 if (cpu_is_pxa27x() || cpu_is_pxa3xx()) {
134 for (i = 0; i < irq_nr; i++)
135 IPR(i) = i | (1 << 31);
136 }
137
132 /* only unmasked interrupts kick us out of idle */ 138 /* only unmasked interrupts kick us out of idle */
133 ICCR = 1; 139 ICCR = 1;
134 140
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index 55b3788fd1ae..13848955d133 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -265,45 +265,12 @@ static inline void littleton_init_keypad(void) {}
265#endif 265#endif
266 266
267#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) 267#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
268static int littleton_mci_init(struct device *dev,
269 irq_handler_t littleton_detect_int, void *data)
270{
271 int err, gpio_cd = GPIO_MMC1_CARD_DETECT;
272
273 err = gpio_request(gpio_cd, "mmc card detect");
274 if (err)
275 goto err_request_cd;
276
277 gpio_direction_input(gpio_cd);
278
279 err = request_irq(gpio_to_irq(gpio_cd), littleton_detect_int,
280 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
281 "mmc card detect", data);
282 if (err) {
283 dev_err(dev, "failed to request card detect IRQ\n");
284 goto err_request_irq;
285 }
286 return 0;
287
288err_request_irq:
289 gpio_free(gpio_cd);
290err_request_cd:
291 return err;
292}
293
294static void littleton_mci_exit(struct device *dev, void *data)
295{
296 int gpio_cd = GPIO_MMC1_CARD_DETECT;
297
298 free_irq(gpio_to_irq(gpio_cd), data);
299 gpio_free(gpio_cd);
300}
301
302static struct pxamci_platform_data littleton_mci_platform_data = { 268static struct pxamci_platform_data littleton_mci_platform_data = {
303 .detect_delay = 20, 269 .detect_delay = 20,
304 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 270 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
305 .init = littleton_mci_init, 271 .gpio_card_detect = GPIO_MMC1_CARD_DETECT,
306 .exit = littleton_mci_exit, 272 .gpio_card_ro = -1,
273 .gpio_power = -1,
307}; 274};
308 275
309static void __init littleton_init_mmc(void) 276static void __init littleton_init_mmc(void)
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index f04c8333dff7..c6a94d3fdd61 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -482,11 +482,14 @@ static void lubbock_mci_exit(struct device *dev, void *data)
482} 482}
483 483
484static struct pxamci_platform_data lubbock_mci_platform_data = { 484static struct pxamci_platform_data lubbock_mci_platform_data = {
485 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 485 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
486 .detect_delay = 1, 486 .detect_delay = 1,
487 .init = lubbock_mci_init, 487 .init = lubbock_mci_init,
488 .get_ro = lubbock_mci_get_ro, 488 .get_ro = lubbock_mci_get_ro,
489 .exit = lubbock_mci_exit, 489 .exit = lubbock_mci_exit,
490 .gpio_card_detect = -1,
491 .gpio_card_ro = -1,
492 .gpio_power = -1,
490}; 493};
491 494
492static void lubbock_irda_transceiver_mode(struct device *dev, int mode) 495static void lubbock_irda_transceiver_mode(struct device *dev, int mode)
@@ -504,8 +507,9 @@ static void lubbock_irda_transceiver_mode(struct device *dev, int mode)
504} 507}
505 508
506static struct pxaficp_platform_data lubbock_ficp_platform_data = { 509static struct pxaficp_platform_data lubbock_ficp_platform_data = {
507 .transceiver_cap = IR_SIRMODE | IR_FIRMODE, 510 .gpio_pwdown = -1,
508 .transceiver_mode = lubbock_irda_transceiver_mode, 511 .transceiver_cap = IR_SIRMODE | IR_FIRMODE,
512 .transceiver_mode = lubbock_irda_transceiver_mode,
509}; 513};
510 514
511static void __init lubbock_init(void) 515static void __init lubbock_init(void)
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index ca39669cffc5..5360c07f5138 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -140,15 +140,9 @@ static unsigned long magician_pin_config[] __initdata = {
140 * IRDA 140 * IRDA
141 */ 141 */
142 142
143static void magician_irda_transceiver_mode(struct device *dev, int mode)
144{
145 gpio_set_value(GPIO83_MAGICIAN_nIR_EN, mode & IR_OFF);
146 pxa2xx_transceiver_mode(dev, mode);
147}
148
149static struct pxaficp_platform_data magician_ficp_info = { 143static struct pxaficp_platform_data magician_ficp_info = {
150 .transceiver_cap = IR_SIRMODE | IR_OFF, 144 .gpio_pwdown = GPIO83_MAGICIAN_nIR_EN,
151 .transceiver_mode = magician_irda_transceiver_mode, 145 .transceiver_cap = IR_SIRMODE | IR_OFF,
152}; 146};
153 147
154/* 148/*
@@ -651,55 +645,24 @@ static struct platform_device bq24022 = {
651static int magician_mci_init(struct device *dev, 645static int magician_mci_init(struct device *dev,
652 irq_handler_t detect_irq, void *data) 646 irq_handler_t detect_irq, void *data)
653{ 647{
654 int err; 648 return request_irq(IRQ_MAGICIAN_SD, detect_irq,
655
656 err = request_irq(IRQ_MAGICIAN_SD, detect_irq,
657 IRQF_DISABLED | IRQF_SAMPLE_RANDOM, 649 IRQF_DISABLED | IRQF_SAMPLE_RANDOM,
658 "MMC card detect", data); 650 "mmc card detect", data);
659 if (err)
660 goto err_request_irq;
661 err = gpio_request(EGPIO_MAGICIAN_SD_POWER, "SD_POWER");
662 if (err)
663 goto err_request_power;
664 err = gpio_request(EGPIO_MAGICIAN_nSD_READONLY, "nSD_READONLY");
665 if (err)
666 goto err_request_readonly;
667
668 return 0;
669
670err_request_readonly:
671 gpio_free(EGPIO_MAGICIAN_SD_POWER);
672err_request_power:
673 free_irq(IRQ_MAGICIAN_SD, data);
674err_request_irq:
675 return err;
676}
677
678static void magician_mci_setpower(struct device *dev, unsigned int vdd)
679{
680 struct pxamci_platform_data *pdata = dev->platform_data;
681
682 gpio_set_value(EGPIO_MAGICIAN_SD_POWER, (1 << vdd) & pdata->ocr_mask);
683}
684
685static int magician_mci_get_ro(struct device *dev)
686{
687 return (!gpio_get_value(EGPIO_MAGICIAN_nSD_READONLY));
688} 651}
689 652
690static void magician_mci_exit(struct device *dev, void *data) 653static void magician_mci_exit(struct device *dev, void *data)
691{ 654{
692 gpio_free(EGPIO_MAGICIAN_nSD_READONLY);
693 gpio_free(EGPIO_MAGICIAN_SD_POWER);
694 free_irq(IRQ_MAGICIAN_SD, data); 655 free_irq(IRQ_MAGICIAN_SD, data);
695} 656}
696 657
697static struct pxamci_platform_data magician_mci_info = { 658static struct pxamci_platform_data magician_mci_info = {
698 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 659 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
699 .init = magician_mci_init, 660 .init = magician_mci_init,
700 .get_ro = magician_mci_get_ro, 661 .exit = magician_mci_exit,
701 .setpower = magician_mci_setpower, 662 .gpio_card_detect = -1,
702 .exit = magician_mci_exit, 663 .gpio_card_ro = EGPIO_MAGICIAN_nSD_READONLY,
664 .gpio_card_ro_invert = 1,
665 .gpio_power = EGPIO_MAGICIAN_SD_POWER,
703}; 666};
704 667
705 668
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index f4dabf0273ca..a4eeae345e64 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -450,10 +450,13 @@ static void mainstone_mci_exit(struct device *dev, void *data)
450} 450}
451 451
452static struct pxamci_platform_data mainstone_mci_platform_data = { 452static struct pxamci_platform_data mainstone_mci_platform_data = {
453 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 453 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
454 .init = mainstone_mci_init, 454 .init = mainstone_mci_init,
455 .setpower = mainstone_mci_setpower, 455 .setpower = mainstone_mci_setpower,
456 .exit = mainstone_mci_exit, 456 .exit = mainstone_mci_exit,
457 .gpio_card_detect = -1,
458 .gpio_card_ro = -1,
459 .gpio_power = -1,
457}; 460};
458 461
459static void mainstone_irda_transceiver_mode(struct device *dev, int mode) 462static void mainstone_irda_transceiver_mode(struct device *dev, int mode)
@@ -476,8 +479,9 @@ static void mainstone_irda_transceiver_mode(struct device *dev, int mode)
476} 479}
477 480
478static struct pxaficp_platform_data mainstone_ficp_platform_data = { 481static struct pxaficp_platform_data mainstone_ficp_platform_data = {
479 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF, 482 .gpio_pwdown = -1,
480 .transceiver_mode = mainstone_irda_transceiver_mode, 483 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
484 .transceiver_mode = mainstone_irda_transceiver_mode,
481}; 485};
482 486
483static struct gpio_keys_button gpio_keys_button[] = { 487static struct gpio_keys_button gpio_keys_button[] = {
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 2d28132c725b..3cab452e5567 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -434,72 +434,15 @@ struct gpio_vbus_mach_info gpio_vbus_data = {
434/* 434/*
435 * SDIO/MMC Card controller 435 * SDIO/MMC Card controller
436 */ 436 */
437static void mci_setpower(struct device *dev, unsigned int vdd)
438{
439 struct pxamci_platform_data *p_d = dev->platform_data;
440
441 if ((1 << vdd) & p_d->ocr_mask)
442 gpio_set_value(GPIO91_SDIO_EN, 1); /* enable SDIO power */
443 else
444 gpio_set_value(GPIO91_SDIO_EN, 0); /* disable SDIO power */
445}
446
447static int mci_get_ro(struct device *dev)
448{
449 return gpio_get_value(GPIO78_SDIO_RO);
450}
451
452struct gpio_ress mci_gpios[] = {
453 MIO_GPIO_IN(GPIO78_SDIO_RO, "SDIO readonly detect"),
454 MIO_GPIO_IN(GPIO15_SDIO_INSERT, "SDIO insertion detect"),
455 MIO_GPIO_OUT(GPIO91_SDIO_EN, 0, "SDIO power enable")
456};
457
458static void mci_exit(struct device *dev, void *data)
459{
460 mio_gpio_free(ARRAY_AND_SIZE(mci_gpios));
461 free_irq(gpio_to_irq(GPIO15_SDIO_INSERT), data);
462}
463
464static struct pxamci_platform_data mioa701_mci_info;
465
466/** 437/**
467 * The card detect interrupt isn't debounced so we delay it by 250ms 438 * The card detect interrupt isn't debounced so we delay it by 250ms
468 * to give the card a chance to fully insert/eject. 439 * to give the card a chance to fully insert/eject.
469 */ 440 */
470static int mci_init(struct device *dev, irq_handler_t detect_int, void *data)
471{
472 int rc;
473 int irq = gpio_to_irq(GPIO15_SDIO_INSERT);
474
475 rc = mio_gpio_request(ARRAY_AND_SIZE(mci_gpios));
476 if (rc)
477 goto err_gpio;
478 /* enable RE/FE interrupt on card insertion and removal */
479 rc = request_irq(irq, detect_int,
480 IRQF_DISABLED | IRQF_TRIGGER_RISING |
481 IRQF_TRIGGER_FALLING,
482 "MMC card detect", data);
483 if (rc)
484 goto err_irq;
485
486 mioa701_mci_info.detect_delay = msecs_to_jiffies(250);
487 return 0;
488
489err_irq:
490 dev_err(dev, "mioa701_mci_init: MMC/SD:"
491 " can't request MMC card detect IRQ\n");
492 mio_gpio_free(ARRAY_AND_SIZE(mci_gpios));
493err_gpio:
494 return rc;
495}
496
497static struct pxamci_platform_data mioa701_mci_info = { 441static struct pxamci_platform_data mioa701_mci_info = {
498 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 442 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
499 .init = mci_init, 443 .gpio_card_detect = GPIO15_SDIO_INSERT,
500 .get_ro = mci_get_ro, 444 .gpio_card_ro = GPIO78_SDIO_RO,
501 .setpower = mci_setpower, 445 .gpio_power = GPIO91_SDIO_EN,
502 .exit = mci_exit,
503}; 446};
504 447
505/* FlashRAM */ 448/* FlashRAM */
@@ -765,19 +708,20 @@ static struct i2c_board_info __initdata mioa701_pi2c_devices[] = {
765 }, 708 },
766}; 709};
767 710
768static struct soc_camera_link iclink = {
769 .bus_id = 0, /* Must match id in pxa27x_device_camera in device.c */
770};
771
772/* Board I2C devices. */ 711/* Board I2C devices. */
773static struct i2c_board_info __initdata mioa701_i2c_devices[] = { 712static struct i2c_board_info __initdata mioa701_i2c_devices[] = {
774 { 713 {
775 /* Must initialize before the camera(s) */
776 I2C_BOARD_INFO("mt9m111", 0x5d), 714 I2C_BOARD_INFO("mt9m111", 0x5d),
777 .platform_data = &iclink,
778 }, 715 },
779}; 716};
780 717
718static struct soc_camera_link iclink = {
719 .bus_id = 0, /* Match id in pxa27x_device_camera in device.c */
720 .board_info = &mioa701_i2c_devices[0],
721 .i2c_adapter_id = 0,
722 .module_name = "mt9m111",
723};
724
781struct i2c_pxa_platform_data i2c_pdata = { 725struct i2c_pxa_platform_data i2c_pdata = {
782 .fast_mode = 1, 726 .fast_mode = 1,
783}; 727};
@@ -811,6 +755,7 @@ MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL)
811MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL) 755MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL)
812MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL) 756MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL)
813MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data); 757MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data);
758MIO_SIMPLE_DEV(mioa701_camera, "soc-camera-pdrv",&iclink);
814 759
815static struct platform_device *devices[] __initdata = { 760static struct platform_device *devices[] __initdata = {
816 &mioa701_gpio_keys, 761 &mioa701_gpio_keys,
@@ -821,6 +766,7 @@ static struct platform_device *devices[] __initdata = {
821 &power_dev, 766 &power_dev,
822 &strataflash, 767 &strataflash,
823 &gpio_vbus, 768 &gpio_vbus,
769 &mioa701_camera,
824 &mioa701_board, 770 &mioa701_board,
825}; 771};
826 772
@@ -841,7 +787,7 @@ static void mioa701_restart(char c, const char *cmd)
841static struct gpio_ress global_gpios[] = { 787static struct gpio_ress global_gpios[] = {
842 MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"), 788 MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"),
843 MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"), 789 MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"),
844 MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power") 790 MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"),
845}; 791};
846 792
847static void __init mioa701_machine_init(void) 793static void __init mioa701_machine_init(void)
@@ -855,6 +801,7 @@ static void __init mioa701_machine_init(void)
855 mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); 801 mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
856 bootstrap_init(); 802 bootstrap_init();
857 set_pxa_fb_info(&mioa701_pxafb_info); 803 set_pxa_fb_info(&mioa701_pxafb_info);
804 mioa701_mci_info.detect_delay = msecs_to_jiffies(250);
858 pxa_set_mci_info(&mioa701_mci_info); 805 pxa_set_mci_info(&mioa701_mci_info);
859 pxa_set_keypad_info(&mioa701_keypad_info); 806 pxa_set_keypad_info(&mioa701_keypad_info);
860 wm97xx_bat_set_pdata(&mioa701_battery_data); 807 wm97xx_bat_set_pdata(&mioa701_battery_data);
@@ -869,7 +816,6 @@ static void __init mioa701_machine_init(void)
869 pxa_set_i2c_info(&i2c_pdata); 816 pxa_set_i2c_info(&i2c_pdata);
870 pxa27x_set_i2c_power_info(NULL); 817 pxa27x_set_i2c_power_info(NULL);
871 pxa_set_camera_info(&mioa701_pxacamera_platform_data); 818 pxa_set_camera_info(&mioa701_pxacamera_platform_data);
872 i2c_register_board_info(0, ARRAY_AND_SIZE(mioa701_i2c_devices));
873} 819}
874 820
875static void mioa701_machine_exit(void) 821static void mioa701_machine_exit(void)
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 169fcc18154e..1ad029dd4438 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -25,6 +25,9 @@
25#include <linux/wm97xx_batt.h> 25#include <linux/wm97xx_batt.h>
26#include <linux/power_supply.h> 26#include <linux/power_supply.h>
27#include <linux/sysdev.h> 27#include <linux/sysdev.h>
28#include <linux/mtd/mtd.h>
29#include <linux/mtd/partitions.h>
30#include <linux/mtd/physmap.h>
28 31
29#include <asm/mach-types.h> 32#include <asm/mach-types.h>
30#include <asm/mach/arch.h> 33#include <asm/mach/arch.h>
@@ -141,85 +144,50 @@ static unsigned long palmld_pin_config[] __initdata = {
141}; 144};
142 145
143/****************************************************************************** 146/******************************************************************************
144 * SD/MMC card controller 147 * NOR Flash
145 ******************************************************************************/ 148 ******************************************************************************/
146static int palmld_mci_init(struct device *dev, irq_handler_t palmld_detect_int, 149static struct mtd_partition palmld_partitions[] = {
147 void *data) 150 {
148{ 151 .name = "Flash",
149 int err = 0; 152 .offset = 0x00000000,
150 153 .size = MTDPART_SIZ_FULL,
151 /* Setup an interrupt for detecting card insert/remove events */ 154 .mask_flags = 0
152 err = gpio_request(GPIO_NR_PALMLD_SD_DETECT_N, "SD IRQ");
153 if (err)
154 goto err;
155 err = gpio_direction_input(GPIO_NR_PALMLD_SD_DETECT_N);
156 if (err)
157 goto err2;
158 err = request_irq(gpio_to_irq(GPIO_NR_PALMLD_SD_DETECT_N),
159 palmld_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
160 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
161 "SD/MMC card detect", data);
162 if (err) {
163 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
164 __func__);
165 goto err2;
166 } 155 }
156};
167 157
168 err = gpio_request(GPIO_NR_PALMLD_SD_POWER, "SD_POWER"); 158static struct physmap_flash_data palmld_flash_data[] = {
169 if (err) 159 {
170 goto err3; 160 .width = 2, /* bankwidth in bytes */
171 err = gpio_direction_output(GPIO_NR_PALMLD_SD_POWER, 0); 161 .parts = palmld_partitions,
172 if (err) 162 .nr_parts = ARRAY_SIZE(palmld_partitions)
173 goto err4; 163 }
174 164};
175 err = gpio_request(GPIO_NR_PALMLD_SD_READONLY, "SD_READONLY");
176 if (err)
177 goto err4;
178 err = gpio_direction_input(GPIO_NR_PALMLD_SD_READONLY);
179 if (err)
180 goto err5;
181
182 printk(KERN_DEBUG "%s: irq registered\n", __func__);
183
184 return 0;
185
186err5:
187 gpio_free(GPIO_NR_PALMLD_SD_READONLY);
188err4:
189 gpio_free(GPIO_NR_PALMLD_SD_POWER);
190err3:
191 free_irq(gpio_to_irq(GPIO_NR_PALMLD_SD_DETECT_N), data);
192err2:
193 gpio_free(GPIO_NR_PALMLD_SD_DETECT_N);
194err:
195 return err;
196}
197
198static void palmld_mci_exit(struct device *dev, void *data)
199{
200 gpio_free(GPIO_NR_PALMLD_SD_READONLY);
201 gpio_free(GPIO_NR_PALMLD_SD_POWER);
202 free_irq(gpio_to_irq(GPIO_NR_PALMLD_SD_DETECT_N), data);
203 gpio_free(GPIO_NR_PALMLD_SD_DETECT_N);
204}
205 165
206static void palmld_mci_power(struct device *dev, unsigned int vdd) 166static struct resource palmld_flash_resource = {
207{ 167 .start = PXA_CS0_PHYS,
208 struct pxamci_platform_data *p_d = dev->platform_data; 168 .end = PXA_CS0_PHYS + SZ_4M - 1,
209 gpio_set_value(GPIO_NR_PALMLD_SD_POWER, p_d->ocr_mask & (1 << vdd)); 169 .flags = IORESOURCE_MEM,
210} 170};
211 171
212static int palmld_mci_get_ro(struct device *dev) 172static struct platform_device palmld_flash = {
213{ 173 .name = "physmap-flash",
214 return gpio_get_value(GPIO_NR_PALMLD_SD_READONLY); 174 .id = 0,
215} 175 .resource = &palmld_flash_resource,
176 .num_resources = 1,
177 .dev = {
178 .platform_data = palmld_flash_data,
179 },
180};
216 181
182/******************************************************************************
183 * SD/MMC card controller
184 ******************************************************************************/
217static struct pxamci_platform_data palmld_mci_platform_data = { 185static struct pxamci_platform_data palmld_mci_platform_data = {
218 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 186 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
219 .setpower = palmld_mci_power, 187 .gpio_card_detect = GPIO_NR_PALMLD_SD_DETECT_N,
220 .get_ro = palmld_mci_get_ro, 188 .gpio_card_ro = GPIO_NR_PALMLD_SD_READONLY,
221 .init = palmld_mci_init, 189 .gpio_power = GPIO_NR_PALMLD_SD_POWER,
222 .exit = palmld_mci_exit, 190 .detect_delay = 20,
223}; 191};
224 192
225/****************************************************************************** 193/******************************************************************************
@@ -336,35 +304,9 @@ static struct platform_device palmld_backlight = {
336/****************************************************************************** 304/******************************************************************************
337 * IrDA 305 * IrDA
338 ******************************************************************************/ 306 ******************************************************************************/
339static int palmld_irda_startup(struct device *dev)
340{
341 int err;
342 err = gpio_request(GPIO_NR_PALMLD_IR_DISABLE, "IR DISABLE");
343 if (err)
344 goto err;
345 err = gpio_direction_output(GPIO_NR_PALMLD_IR_DISABLE, 1);
346 if (err)
347 gpio_free(GPIO_NR_PALMLD_IR_DISABLE);
348err:
349 return err;
350}
351
352static void palmld_irda_shutdown(struct device *dev)
353{
354 gpio_free(GPIO_NR_PALMLD_IR_DISABLE);
355}
356
357static void palmld_irda_transceiver_mode(struct device *dev, int mode)
358{
359 gpio_set_value(GPIO_NR_PALMLD_IR_DISABLE, mode & IR_OFF);
360 pxa2xx_transceiver_mode(dev, mode);
361}
362
363static struct pxaficp_platform_data palmld_ficp_platform_data = { 307static struct pxaficp_platform_data palmld_ficp_platform_data = {
364 .startup = palmld_irda_startup, 308 .gpio_pwdown = GPIO_NR_PALMLD_IR_DISABLE,
365 .shutdown = palmld_irda_shutdown, 309 .transceiver_cap = IR_SIRMODE | IR_OFF,
366 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
367 .transceiver_mode = palmld_irda_transceiver_mode,
368}; 310};
369 311
370/****************************************************************************** 312/******************************************************************************
@@ -560,6 +502,7 @@ static struct platform_device *devices[] __initdata = {
560 &power_supply, 502 &power_supply,
561 &palmld_asoc, 503 &palmld_asoc,
562 &palmld_hdd, 504 &palmld_hdd,
505 &palmld_flash,
563}; 506};
564 507
565static struct map_desc palmld_io_desc[] __initdata = { 508static struct map_desc palmld_io_desc[] __initdata = {
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 33f726ff55e5..2dd7ce28556b 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -124,83 +124,12 @@ static unsigned long palmt5_pin_config[] __initdata = {
124/****************************************************************************** 124/******************************************************************************
125 * SD/MMC card controller 125 * SD/MMC card controller
126 ******************************************************************************/ 126 ******************************************************************************/
127static int palmt5_mci_init(struct device *dev, irq_handler_t palmt5_detect_int,
128 void *data)
129{
130 int err = 0;
131
132 /* Setup an interrupt for detecting card insert/remove events */
133 err = gpio_request(GPIO_NR_PALMT5_SD_DETECT_N, "SD IRQ");
134 if (err)
135 goto err;
136 err = gpio_direction_input(GPIO_NR_PALMT5_SD_DETECT_N);
137 if (err)
138 goto err2;
139 err = request_irq(gpio_to_irq(GPIO_NR_PALMT5_SD_DETECT_N),
140 palmt5_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
141 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
142 "SD/MMC card detect", data);
143 if (err) {
144 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
145 __func__);
146 goto err2;
147 }
148
149 err = gpio_request(GPIO_NR_PALMT5_SD_POWER, "SD_POWER");
150 if (err)
151 goto err3;
152 err = gpio_direction_output(GPIO_NR_PALMT5_SD_POWER, 0);
153 if (err)
154 goto err4;
155
156 err = gpio_request(GPIO_NR_PALMT5_SD_READONLY, "SD_READONLY");
157 if (err)
158 goto err4;
159 err = gpio_direction_input(GPIO_NR_PALMT5_SD_READONLY);
160 if (err)
161 goto err5;
162
163 printk(KERN_DEBUG "%s: irq registered\n", __func__);
164
165 return 0;
166
167err5:
168 gpio_free(GPIO_NR_PALMT5_SD_READONLY);
169err4:
170 gpio_free(GPIO_NR_PALMT5_SD_POWER);
171err3:
172 free_irq(gpio_to_irq(GPIO_NR_PALMT5_SD_DETECT_N), data);
173err2:
174 gpio_free(GPIO_NR_PALMT5_SD_DETECT_N);
175err:
176 return err;
177}
178
179static void palmt5_mci_exit(struct device *dev, void *data)
180{
181 gpio_free(GPIO_NR_PALMT5_SD_READONLY);
182 gpio_free(GPIO_NR_PALMT5_SD_POWER);
183 free_irq(IRQ_GPIO_PALMT5_SD_DETECT_N, data);
184 gpio_free(GPIO_NR_PALMT5_SD_DETECT_N);
185}
186
187static void palmt5_mci_power(struct device *dev, unsigned int vdd)
188{
189 struct pxamci_platform_data *p_d = dev->platform_data;
190 gpio_set_value(GPIO_NR_PALMT5_SD_POWER, p_d->ocr_mask & (1 << vdd));
191}
192
193static int palmt5_mci_get_ro(struct device *dev)
194{
195 return gpio_get_value(GPIO_NR_PALMT5_SD_READONLY);
196}
197
198static struct pxamci_platform_data palmt5_mci_platform_data = { 127static struct pxamci_platform_data palmt5_mci_platform_data = {
199 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 128 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
200 .setpower = palmt5_mci_power, 129 .gpio_card_detect = GPIO_NR_PALMT5_SD_DETECT_N,
201 .get_ro = palmt5_mci_get_ro, 130 .gpio_card_ro = GPIO_NR_PALMT5_SD_READONLY,
202 .init = palmt5_mci_init, 131 .gpio_power = GPIO_NR_PALMT5_SD_POWER,
203 .exit = palmt5_mci_exit, 132 .detect_delay = 20,
204}; 133};
205 134
206/****************************************************************************** 135/******************************************************************************
@@ -314,35 +243,9 @@ static struct platform_device palmt5_backlight = {
314/****************************************************************************** 243/******************************************************************************
315 * IrDA 244 * IrDA
316 ******************************************************************************/ 245 ******************************************************************************/
317static int palmt5_irda_startup(struct device *dev)
318{
319 int err;
320 err = gpio_request(GPIO_NR_PALMT5_IR_DISABLE, "IR DISABLE");
321 if (err)
322 goto err;
323 err = gpio_direction_output(GPIO_NR_PALMT5_IR_DISABLE, 1);
324 if (err)
325 gpio_free(GPIO_NR_PALMT5_IR_DISABLE);
326err:
327 return err;
328}
329
330static void palmt5_irda_shutdown(struct device *dev)
331{
332 gpio_free(GPIO_NR_PALMT5_IR_DISABLE);
333}
334
335static void palmt5_irda_transceiver_mode(struct device *dev, int mode)
336{
337 gpio_set_value(GPIO_NR_PALMT5_IR_DISABLE, mode & IR_OFF);
338 pxa2xx_transceiver_mode(dev, mode);
339}
340
341static struct pxaficp_platform_data palmt5_ficp_platform_data = { 246static struct pxaficp_platform_data palmt5_ficp_platform_data = {
342 .startup = palmt5_irda_startup, 247 .gpio_pwdown = GPIO_NR_PALMT5_IR_DISABLE,
343 .shutdown = palmt5_irda_shutdown, 248 .transceiver_cap = IR_SIRMODE | IR_OFF,
344 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
345 .transceiver_mode = palmt5_irda_transceiver_mode,
346}; 249};
347 250
348/****************************************************************************** 251/******************************************************************************
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
new file mode 100644
index 000000000000..bb2cc0dd44ec
--- /dev/null
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -0,0 +1,436 @@
1/*
2 * linux/arch/arm/mach-pxa/palmtc.c
3 *
4 * Support for the Palm Tungsten|C
5 *
6 * Author: Marek Vasut <marek.vasut@gmail.com>
7 *
8 * Based on work of:
9 * Petr Blaha <p3t3@centrum.cz>
10 * Chetan S. Kumar <shivakumar.chetan@gmail.com>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 */
16
17#include <linux/platform_device.h>
18#include <linux/delay.h>
19#include <linux/irq.h>
20#include <linux/input.h>
21#include <linux/pwm_backlight.h>
22#include <linux/gpio.h>
23#include <linux/input/matrix_keypad.h>
24#include <linux/ucb1400.h>
25#include <linux/power_supply.h>
26#include <linux/gpio_keys.h>
27#include <linux/mtd/physmap.h>
28
29#include <asm/mach-types.h>
30#include <asm/mach/arch.h>
31#include <asm/mach/map.h>
32
33#include <mach/audio.h>
34#include <mach/palmtc.h>
35#include <mach/mmc.h>
36#include <mach/pxafb.h>
37#include <mach/mfp-pxa25x.h>
38#include <mach/irda.h>
39#include <mach/udc.h>
40#include <mach/pxa2xx-regs.h>
41
42#include "generic.h"
43#include "devices.h"
44
45/******************************************************************************
46 * Pin configuration
47 ******************************************************************************/
48static unsigned long palmtc_pin_config[] __initdata = {
49 /* MMC */
50 GPIO6_MMC_CLK,
51 GPIO8_MMC_CS0,
52 GPIO12_GPIO, /* detect */
53 GPIO32_GPIO, /* power */
54 GPIO54_GPIO, /* r/o switch */
55
56 /* PCMCIA */
57 GPIO52_nPCE_1,
58 GPIO53_nPCE_2,
59 GPIO50_nPIOR,
60 GPIO51_nPIOW,
61 GPIO49_nPWE,
62 GPIO48_nPOE,
63 GPIO52_nPCE_1,
64 GPIO53_nPCE_2,
65 GPIO57_nIOIS16,
66 GPIO56_nPWAIT,
67
68 /* AC97 */
69 GPIO28_AC97_BITCLK,
70 GPIO29_AC97_SDATA_IN_0,
71 GPIO30_AC97_SDATA_OUT,
72 GPIO31_AC97_SYNC,
73
74 /* IrDA */
75 GPIO45_GPIO, /* ir disable */
76 GPIO46_FICP_RXD,
77 GPIO47_FICP_TXD,
78
79 /* PWM */
80 GPIO17_PWM1_OUT,
81
82 /* USB */
83 GPIO4_GPIO, /* detect */
84 GPIO36_GPIO, /* pullup */
85
86 /* LCD */
87 GPIO58_LCD_LDD_0,
88 GPIO59_LCD_LDD_1,
89 GPIO60_LCD_LDD_2,
90 GPIO61_LCD_LDD_3,
91 GPIO62_LCD_LDD_4,
92 GPIO63_LCD_LDD_5,
93 GPIO64_LCD_LDD_6,
94 GPIO65_LCD_LDD_7,
95 GPIO66_LCD_LDD_8,
96 GPIO67_LCD_LDD_9,
97 GPIO68_LCD_LDD_10,
98 GPIO69_LCD_LDD_11,
99 GPIO70_LCD_LDD_12,
100 GPIO71_LCD_LDD_13,
101 GPIO72_LCD_LDD_14,
102 GPIO73_LCD_LDD_15,
103 GPIO74_LCD_FCLK,
104 GPIO75_LCD_LCLK,
105 GPIO76_LCD_PCLK,
106 GPIO77_LCD_BIAS,
107
108 /* MATRIX KEYPAD */
109 GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 0 */
110 GPIO9_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 1 */
111 GPIO10_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 2 */
112 GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 3 */
113 GPIO18_GPIO | MFP_LPM_DRIVE_LOW, /* out 0 */
114 GPIO19_GPIO | MFP_LPM_DRIVE_LOW, /* out 1 */
115 GPIO20_GPIO | MFP_LPM_DRIVE_LOW, /* out 2 */
116 GPIO21_GPIO | MFP_LPM_DRIVE_LOW, /* out 3 */
117 GPIO22_GPIO | MFP_LPM_DRIVE_LOW, /* out 4 */
118 GPIO23_GPIO | MFP_LPM_DRIVE_LOW, /* out 5 */
119 GPIO24_GPIO | MFP_LPM_DRIVE_LOW, /* out 6 */
120 GPIO25_GPIO | MFP_LPM_DRIVE_LOW, /* out 7 */
121 GPIO26_GPIO | MFP_LPM_DRIVE_LOW, /* out 8 */
122 GPIO27_GPIO | MFP_LPM_DRIVE_LOW, /* out 9 */
123 GPIO79_GPIO | MFP_LPM_DRIVE_LOW, /* out 10 */
124 GPIO80_GPIO | MFP_LPM_DRIVE_LOW, /* out 11 */
125
126 /* PXA GPIO KEYS */
127 GPIO7_GPIO | WAKEUP_ON_EDGE_BOTH, /* hotsync button on cradle */
128
129 /* MISC */
130 GPIO1_RST, /* reset */
131 GPIO2_GPIO, /* earphone detect */
132 GPIO16_GPIO, /* backlight switch */
133};
134
135/******************************************************************************
136 * SD/MMC card controller
137 ******************************************************************************/
138static struct pxamci_platform_data palmtc_mci_platform_data = {
139 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
140 .gpio_power = GPIO_NR_PALMTC_SD_POWER,
141 .gpio_card_ro = GPIO_NR_PALMTC_SD_READONLY,
142 .gpio_card_detect = GPIO_NR_PALMTC_SD_DETECT_N,
143 .detect_delay = 20,
144};
145
146/******************************************************************************
147 * GPIO keys
148 ******************************************************************************/
149static struct gpio_keys_button palmtc_pxa_buttons[] = {
150 {KEY_F8, GPIO_NR_PALMTC_HOTSYNC_BUTTON, 1, "HotSync Button", EV_KEY, 1},
151};
152
153static struct gpio_keys_platform_data palmtc_pxa_keys_data = {
154 .buttons = palmtc_pxa_buttons,
155 .nbuttons = ARRAY_SIZE(palmtc_pxa_buttons),
156};
157
158static struct platform_device palmtc_pxa_keys = {
159 .name = "gpio-keys",
160 .id = -1,
161 .dev = {
162 .platform_data = &palmtc_pxa_keys_data,
163 },
164};
165
166/******************************************************************************
167 * Backlight
168 ******************************************************************************/
169static int palmtc_backlight_init(struct device *dev)
170{
171 int ret;
172
173 ret = gpio_request(GPIO_NR_PALMTC_BL_POWER, "BL POWER");
174 if (ret)
175 goto err;
176 ret = gpio_direction_output(GPIO_NR_PALMTC_BL_POWER, 1);
177 if (ret)
178 goto err2;
179
180 return 0;
181
182err2:
183 gpio_free(GPIO_NR_PALMTC_BL_POWER);
184err:
185 return ret;
186}
187
188static int palmtc_backlight_notify(int brightness)
189{
190 /* backlight is on when GPIO16 AF0 is high */
191 gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness);
192 return brightness;
193}
194
195static void palmtc_backlight_exit(struct device *dev)
196{
197 gpio_free(GPIO_NR_PALMTC_BL_POWER);
198}
199
200static struct platform_pwm_backlight_data palmtc_backlight_data = {
201 .pwm_id = 1,
202 .max_brightness = PALMTC_MAX_INTENSITY,
203 .dft_brightness = PALMTC_MAX_INTENSITY,
204 .pwm_period_ns = PALMTC_PERIOD_NS,
205 .init = palmtc_backlight_init,
206 .notify = palmtc_backlight_notify,
207 .exit = palmtc_backlight_exit,
208};
209
210static struct platform_device palmtc_backlight = {
211 .name = "pwm-backlight",
212 .dev = {
213 .parent = &pxa25x_device_pwm1.dev,
214 .platform_data = &palmtc_backlight_data,
215 },
216};
217
218/******************************************************************************
219 * IrDA
220 ******************************************************************************/
221static struct pxaficp_platform_data palmtc_ficp_platform_data = {
222 .gpio_pwdown = GPIO_NR_PALMTC_IR_DISABLE,
223 .transceiver_cap = IR_SIRMODE | IR_OFF,
224};
225
226/******************************************************************************
227 * Keyboard
228 ******************************************************************************/
229static const uint32_t palmtc_matrix_keys[] = {
230 KEY(0, 0, KEY_F1),
231 KEY(0, 1, KEY_X),
232 KEY(0, 2, KEY_POWER),
233 KEY(0, 3, KEY_TAB),
234 KEY(0, 4, KEY_A),
235 KEY(0, 5, KEY_Q),
236 KEY(0, 6, KEY_LEFTSHIFT),
237 KEY(0, 7, KEY_Z),
238 KEY(0, 8, KEY_S),
239 KEY(0, 9, KEY_W),
240 KEY(0, 10, KEY_E),
241 KEY(0, 11, KEY_UP),
242
243 KEY(1, 0, KEY_F2),
244 KEY(1, 1, KEY_DOWN),
245 KEY(1, 3, KEY_D),
246 KEY(1, 4, KEY_C),
247 KEY(1, 5, KEY_F),
248 KEY(1, 6, KEY_R),
249 KEY(1, 7, KEY_SPACE),
250 KEY(1, 8, KEY_V),
251 KEY(1, 9, KEY_G),
252 KEY(1, 10, KEY_T),
253 KEY(1, 11, KEY_LEFT),
254
255 KEY(2, 0, KEY_F3),
256 KEY(2, 1, KEY_LEFTCTRL),
257 KEY(2, 3, KEY_H),
258 KEY(2, 4, KEY_Y),
259 KEY(2, 5, KEY_N),
260 KEY(2, 6, KEY_J),
261 KEY(2, 7, KEY_U),
262 KEY(2, 8, KEY_M),
263 KEY(2, 9, KEY_K),
264 KEY(2, 10, KEY_I),
265 KEY(2, 11, KEY_RIGHT),
266
267 KEY(3, 0, KEY_F4),
268 KEY(3, 1, KEY_ENTER),
269 KEY(3, 3, KEY_DOT),
270 KEY(3, 4, KEY_L),
271 KEY(3, 5, KEY_O),
272 KEY(3, 6, KEY_LEFTALT),
273 KEY(3, 7, KEY_ENTER),
274 KEY(3, 8, KEY_BACKSPACE),
275 KEY(3, 9, KEY_P),
276 KEY(3, 10, KEY_B),
277 KEY(3, 11, KEY_FN),
278};
279
280const struct matrix_keymap_data palmtc_keymap_data = {
281 .keymap = palmtc_matrix_keys,
282 .keymap_size = ARRAY_SIZE(palmtc_matrix_keys),
283};
284
285const static unsigned int palmtc_keypad_row_gpios[] = {
286 0, 9, 10, 11
287};
288
289const static unsigned int palmtc_keypad_col_gpios[] = {
290 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 79, 80
291};
292
293static struct matrix_keypad_platform_data palmtc_keypad_platform_data = {
294 .keymap_data = &palmtc_keymap_data,
295 .col_gpios = palmtc_keypad_row_gpios,
296 .num_col_gpios = 12,
297 .row_gpios = palmtc_keypad_col_gpios,
298 .num_row_gpios = 4,
299 .active_low = 1,
300
301 .debounce_ms = 20,
302 .col_scan_delay_us = 5,
303};
304
305static struct platform_device palmtc_keyboard = {
306 .name = "matrix-keypad",
307 .id = -1,
308 .dev = {
309 .platform_data = &palmtc_keypad_platform_data,
310 },
311};
312
313/******************************************************************************
314 * UDC
315 ******************************************************************************/
316static struct pxa2xx_udc_mach_info palmtc_udc_info __initdata = {
317 .gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N,
318 .gpio_vbus_inverted = 1,
319 .gpio_pullup = GPIO_NR_PALMTC_USB_POWER,
320};
321
322/******************************************************************************
323 * Touchscreen / Battery / GPIO-extender
324 ******************************************************************************/
325static struct platform_device palmtc_ucb1400_core = {
326 .name = "ucb1400_core",
327 .id = -1,
328};
329
330/******************************************************************************
331 * NOR Flash
332 ******************************************************************************/
333static struct resource palmtc_flash_resource = {
334 .start = PXA_CS0_PHYS,
335 .end = PXA_CS0_PHYS + SZ_16M - 1,
336 .flags = IORESOURCE_MEM,
337};
338
339static struct mtd_partition palmtc_flash_parts[] = {
340 {
341 .name = "U-Boot Bootloader",
342 .offset = 0x0,
343 .size = 0x40000,
344 },
345 {
346 .name = "Linux Kernel",
347 .offset = 0x40000,
348 .size = 0x2c0000,
349 },
350 {
351 .name = "Filesystem",
352 .offset = 0x300000,
353 .size = 0xcc0000,
354 },
355 {
356 .name = "U-Boot Environment",
357 .offset = 0xfc0000,
358 .size = MTDPART_SIZ_FULL,
359 },
360};
361
362static struct physmap_flash_data palmtc_flash_data = {
363 .width = 4,
364 .parts = palmtc_flash_parts,
365 .nr_parts = ARRAY_SIZE(palmtc_flash_parts),
366};
367
368static struct platform_device palmtc_flash = {
369 .name = "physmap-flash",
370 .id = -1,
371 .resource = &palmtc_flash_resource,
372 .num_resources = 1,
373 .dev = {
374 .platform_data = &palmtc_flash_data,
375 },
376};
377
378/******************************************************************************
379 * Framebuffer
380 ******************************************************************************/
381static struct pxafb_mode_info palmtc_lcd_modes[] = {
382{
383 .pixclock = 115384,
384 .xres = 320,
385 .yres = 320,
386 .bpp = 16,
387
388 .left_margin = 27,
389 .right_margin = 7,
390 .upper_margin = 7,
391 .lower_margin = 8,
392
393 .hsync_len = 6,
394 .vsync_len = 1,
395},
396};
397
398static struct pxafb_mach_info palmtc_lcd_screen = {
399 .modes = palmtc_lcd_modes,
400 .num_modes = ARRAY_SIZE(palmtc_lcd_modes),
401 .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
402};
403
404/******************************************************************************
405 * Machine init
406 ******************************************************************************/
407static struct platform_device *devices[] __initdata = {
408 &palmtc_backlight,
409 &palmtc_ucb1400_core,
410 &palmtc_keyboard,
411 &palmtc_pxa_keys,
412 &palmtc_flash,
413};
414
415static void __init palmtc_init(void)
416{
417 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtc_pin_config));
418
419 set_pxa_fb_info(&palmtc_lcd_screen);
420 pxa_set_mci_info(&palmtc_mci_platform_data);
421 pxa_set_udc_info(&palmtc_udc_info);
422 pxa_set_ac97_info(NULL);
423 pxa_set_ficp_info(&palmtc_ficp_platform_data);
424
425 platform_add_devices(devices, ARRAY_SIZE(devices));
426};
427
428MACHINE_START(PALMTC, "Palm Tungsten|C")
429 .phys_io = 0x40000000,
430 .boot_params = 0xa0000100,
431 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
432 .map_io = pxa_map_io,
433 .init_irq = pxa25x_init_irq,
434 .timer = &pxa_timer,
435 .init_machine = palmtc_init
436MACHINE_END
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index d823b09801df..277c4062e3c6 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -117,83 +117,11 @@ static unsigned long palmte2_pin_config[] __initdata = {
117/****************************************************************************** 117/******************************************************************************
118 * SD/MMC card controller 118 * SD/MMC card controller
119 ******************************************************************************/ 119 ******************************************************************************/
120static int palmte2_mci_init(struct device *dev,
121 irq_handler_t palmte2_detect_int, void *data)
122{
123 int err = 0;
124
125 /* Setup an interrupt for detecting card insert/remove events */
126 err = gpio_request(GPIO_NR_PALMTE2_SD_DETECT_N, "SD IRQ");
127 if (err)
128 goto err;
129 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_DETECT_N);
130 if (err)
131 goto err2;
132 err = request_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N),
133 palmte2_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
134 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
135 "SD/MMC card detect", data);
136 if (err) {
137 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
138 __func__);
139 goto err2;
140 }
141
142 err = gpio_request(GPIO_NR_PALMTE2_SD_POWER, "SD_POWER");
143 if (err)
144 goto err3;
145 err = gpio_direction_output(GPIO_NR_PALMTE2_SD_POWER, 0);
146 if (err)
147 goto err4;
148
149 err = gpio_request(GPIO_NR_PALMTE2_SD_READONLY, "SD_READONLY");
150 if (err)
151 goto err4;
152 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_READONLY);
153 if (err)
154 goto err5;
155
156 printk(KERN_DEBUG "%s: irq registered\n", __func__);
157
158 return 0;
159
160err5:
161 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
162err4:
163 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
164err3:
165 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
166err2:
167 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
168err:
169 return err;
170}
171
172static void palmte2_mci_exit(struct device *dev, void *data)
173{
174 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
175 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
176 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
177 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
178}
179
180static void palmte2_mci_power(struct device *dev, unsigned int vdd)
181{
182 struct pxamci_platform_data *p_d = dev->platform_data;
183 gpio_set_value(GPIO_NR_PALMTE2_SD_POWER, p_d->ocr_mask & (1 << vdd));
184}
185
186static int palmte2_mci_get_ro(struct device *dev)
187{
188 return gpio_get_value(GPIO_NR_PALMTE2_SD_READONLY);
189}
190
191static struct pxamci_platform_data palmte2_mci_platform_data = { 120static struct pxamci_platform_data palmte2_mci_platform_data = {
192 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 121 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
193 .setpower = palmte2_mci_power, 122 .gpio_card_detect = GPIO_NR_PALMTE2_SD_DETECT_N,
194 .get_ro = palmte2_mci_get_ro, 123 .gpio_card_ro = GPIO_NR_PALMTE2_SD_READONLY,
195 .init = palmte2_mci_init, 124 .gpio_power = GPIO_NR_PALMTE2_SD_POWER,
196 .exit = palmte2_mci_exit,
197}; 125};
198 126
199/****************************************************************************** 127/******************************************************************************
@@ -287,35 +215,9 @@ static struct platform_device palmte2_backlight = {
287/****************************************************************************** 215/******************************************************************************
288 * IrDA 216 * IrDA
289 ******************************************************************************/ 217 ******************************************************************************/
290static int palmte2_irda_startup(struct device *dev)
291{
292 int err;
293 err = gpio_request(GPIO_NR_PALMTE2_IR_DISABLE, "IR DISABLE");
294 if (err)
295 goto err;
296 err = gpio_direction_output(GPIO_NR_PALMTE2_IR_DISABLE, 1);
297 if (err)
298 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
299err:
300 return err;
301}
302
303static void palmte2_irda_shutdown(struct device *dev)
304{
305 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
306}
307
308static void palmte2_irda_transceiver_mode(struct device *dev, int mode)
309{
310 gpio_set_value(GPIO_NR_PALMTE2_IR_DISABLE, mode & IR_OFF);
311 pxa2xx_transceiver_mode(dev, mode);
312}
313
314static struct pxaficp_platform_data palmte2_ficp_platform_data = { 218static struct pxaficp_platform_data palmte2_ficp_platform_data = {
315 .startup = palmte2_irda_startup, 219 .gpio_pwdown = GPIO_NR_PALMTE2_IR_DISABLE,
316 .shutdown = palmte2_irda_shutdown, 220 .transceiver_cap = IR_SIRMODE | IR_OFF,
317 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
318 .transceiver_mode = palmte2_irda_transceiver_mode,
319}; 221};
320 222
321/****************************************************************************** 223/******************************************************************************
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 83d020879581..76a2b37eaf30 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -28,6 +28,10 @@
28#include <linux/wm97xx_batt.h> 28#include <linux/wm97xx_batt.h>
29#include <linux/power_supply.h> 29#include <linux/power_supply.h>
30#include <linux/usb/gpio_vbus.h> 30#include <linux/usb/gpio_vbus.h>
31#include <linux/mtd/nand.h>
32#include <linux/mtd/partitions.h>
33#include <linux/mtd/mtd.h>
34#include <linux/mtd/physmap.h>
31 35
32#include <asm/mach-types.h> 36#include <asm/mach-types.h>
33#include <asm/mach/arch.h> 37#include <asm/mach/arch.h>
@@ -131,6 +135,10 @@ static unsigned long palmtx_pin_config[] __initdata = {
131 GPIO34_FFUART_RXD, 135 GPIO34_FFUART_RXD,
132 GPIO39_FFUART_TXD, 136 GPIO39_FFUART_TXD,
133 137
138 /* NAND */
139 GPIO15_nCS_1,
140 GPIO18_RDY,
141
134 /* MISC. */ 142 /* MISC. */
135 GPIO10_GPIO, /* hotsync button */ 143 GPIO10_GPIO, /* hotsync button */
136 GPIO12_GPIO, /* power detect */ 144 GPIO12_GPIO, /* power detect */
@@ -138,85 +146,50 @@ static unsigned long palmtx_pin_config[] __initdata = {
138}; 146};
139 147
140/****************************************************************************** 148/******************************************************************************
141 * SD/MMC card controller 149 * NOR Flash
142 ******************************************************************************/ 150 ******************************************************************************/
143static int palmtx_mci_init(struct device *dev, irq_handler_t palmtx_detect_int, 151static struct mtd_partition palmtx_partitions[] = {
144 void *data) 152 {
145{ 153 .name = "Flash",
146 int err = 0; 154 .offset = 0x00000000,
147 155 .size = MTDPART_SIZ_FULL,
148 /* Setup an interrupt for detecting card insert/remove events */ 156 .mask_flags = 0
149 err = gpio_request(GPIO_NR_PALMTX_SD_DETECT_N, "SD IRQ");
150 if (err)
151 goto err;
152 err = gpio_direction_input(GPIO_NR_PALMTX_SD_DETECT_N);
153 if (err)
154 goto err2;
155 err = request_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N),
156 palmtx_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
157 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
158 "SD/MMC card detect", data);
159 if (err) {
160 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
161 __func__);
162 goto err2;
163 } 157 }
158};
164 159
165 err = gpio_request(GPIO_NR_PALMTX_SD_POWER, "SD_POWER"); 160static struct physmap_flash_data palmtx_flash_data[] = {
166 if (err) 161 {
167 goto err3; 162 .width = 2, /* bankwidth in bytes */
168 err = gpio_direction_output(GPIO_NR_PALMTX_SD_POWER, 0); 163 .parts = palmtx_partitions,
169 if (err) 164 .nr_parts = ARRAY_SIZE(palmtx_partitions)
170 goto err4; 165 }
171 166};
172 err = gpio_request(GPIO_NR_PALMTX_SD_READONLY, "SD_READONLY");
173 if (err)
174 goto err4;
175 err = gpio_direction_input(GPIO_NR_PALMTX_SD_READONLY);
176 if (err)
177 goto err5;
178
179 printk(KERN_DEBUG "%s: irq registered\n", __func__);
180
181 return 0;
182
183err5:
184 gpio_free(GPIO_NR_PALMTX_SD_READONLY);
185err4:
186 gpio_free(GPIO_NR_PALMTX_SD_POWER);
187err3:
188 free_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N), data);
189err2:
190 gpio_free(GPIO_NR_PALMTX_SD_DETECT_N);
191err:
192 return err;
193}
194
195static void palmtx_mci_exit(struct device *dev, void *data)
196{
197 gpio_free(GPIO_NR_PALMTX_SD_READONLY);
198 gpio_free(GPIO_NR_PALMTX_SD_POWER);
199 free_irq(gpio_to_irq(GPIO_NR_PALMTX_SD_DETECT_N), data);
200 gpio_free(GPIO_NR_PALMTX_SD_DETECT_N);
201}
202 167
203static void palmtx_mci_power(struct device *dev, unsigned int vdd) 168static struct resource palmtx_flash_resource = {
204{ 169 .start = PXA_CS0_PHYS,
205 struct pxamci_platform_data *p_d = dev->platform_data; 170 .end = PXA_CS0_PHYS + SZ_8M - 1,
206 gpio_set_value(GPIO_NR_PALMTX_SD_POWER, p_d->ocr_mask & (1 << vdd)); 171 .flags = IORESOURCE_MEM,
207} 172};
208 173
209static int palmtx_mci_get_ro(struct device *dev) 174static struct platform_device palmtx_flash = {
210{ 175 .name = "physmap-flash",
211 return gpio_get_value(GPIO_NR_PALMTX_SD_READONLY); 176 .id = 0,
212} 177 .resource = &palmtx_flash_resource,
178 .num_resources = 1,
179 .dev = {
180 .platform_data = palmtx_flash_data,
181 },
182};
213 183
184/******************************************************************************
185 * SD/MMC card controller
186 ******************************************************************************/
214static struct pxamci_platform_data palmtx_mci_platform_data = { 187static struct pxamci_platform_data palmtx_mci_platform_data = {
215 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 188 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
216 .setpower = palmtx_mci_power, 189 .gpio_card_detect = GPIO_NR_PALMTX_SD_DETECT_N,
217 .get_ro = palmtx_mci_get_ro, 190 .gpio_card_ro = GPIO_NR_PALMTX_SD_READONLY,
218 .init = palmtx_mci_init, 191 .gpio_power = GPIO_NR_PALMTX_SD_POWER,
219 .exit = palmtx_mci_exit, 192 .detect_delay = 20,
220}; 193};
221 194
222/****************************************************************************** 195/******************************************************************************
@@ -330,35 +303,9 @@ static struct platform_device palmtx_backlight = {
330/****************************************************************************** 303/******************************************************************************
331 * IrDA 304 * IrDA
332 ******************************************************************************/ 305 ******************************************************************************/
333static int palmtx_irda_startup(struct device *dev)
334{
335 int err;
336 err = gpio_request(GPIO_NR_PALMTX_IR_DISABLE, "IR DISABLE");
337 if (err)
338 goto err;
339 err = gpio_direction_output(GPIO_NR_PALMTX_IR_DISABLE, 1);
340 if (err)
341 gpio_free(GPIO_NR_PALMTX_IR_DISABLE);
342err:
343 return err;
344}
345
346static void palmtx_irda_shutdown(struct device *dev)
347{
348 gpio_free(GPIO_NR_PALMTX_IR_DISABLE);
349}
350
351static void palmtx_irda_transceiver_mode(struct device *dev, int mode)
352{
353 gpio_set_value(GPIO_NR_PALMTX_IR_DISABLE, mode & IR_OFF);
354 pxa2xx_transceiver_mode(dev, mode);
355}
356
357static struct pxaficp_platform_data palmtx_ficp_platform_data = { 306static struct pxaficp_platform_data palmtx_ficp_platform_data = {
358 .startup = palmtx_irda_startup, 307 .gpio_pwdown = GPIO_NR_PALMTX_IR_DISABLE,
359 .shutdown = palmtx_irda_shutdown, 308 .transceiver_cap = IR_SIRMODE | IR_OFF,
360 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
361 .transceiver_mode = palmtx_irda_transceiver_mode,
362}; 309};
363 310
364/****************************************************************************** 311/******************************************************************************
@@ -493,6 +440,68 @@ static struct pxafb_mach_info palmtx_lcd_screen = {
493}; 440};
494 441
495/****************************************************************************** 442/******************************************************************************
443 * NAND Flash
444 ******************************************************************************/
445static void palmtx_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
446 unsigned int ctrl)
447{
448 struct nand_chip *this = mtd->priv;
449 unsigned long nandaddr = (unsigned long)this->IO_ADDR_W;
450
451 if (cmd == NAND_CMD_NONE)
452 return;
453
454 if (ctrl & NAND_CLE)
455 writeb(cmd, PALMTX_NAND_CLE_VIRT);
456 else if (ctrl & NAND_ALE)
457 writeb(cmd, PALMTX_NAND_ALE_VIRT);
458 else
459 writeb(cmd, nandaddr);
460}
461
462static struct mtd_partition palmtx_partition_info[] = {
463 [0] = {
464 .name = "palmtx-0",
465 .offset = 0,
466 .size = MTDPART_SIZ_FULL
467 },
468};
469
470static const char *palmtx_part_probes[] = { "cmdlinepart", NULL };
471
472struct platform_nand_data palmtx_nand_platdata = {
473 .chip = {
474 .nr_chips = 1,
475 .chip_offset = 0,
476 .nr_partitions = ARRAY_SIZE(palmtx_partition_info),
477 .partitions = palmtx_partition_info,
478 .chip_delay = 20,
479 .part_probe_types = palmtx_part_probes,
480 },
481 .ctrl = {
482 .cmd_ctrl = palmtx_nand_cmd_ctl,
483 },
484};
485
486static struct resource palmtx_nand_resource[] = {
487 [0] = {
488 .start = PXA_CS1_PHYS,
489 .end = PXA_CS1_PHYS + SZ_1M - 1,
490 .flags = IORESOURCE_MEM,
491 },
492};
493
494static struct platform_device palmtx_nand = {
495 .name = "gen_nand",
496 .num_resources = ARRAY_SIZE(palmtx_nand_resource),
497 .resource = palmtx_nand_resource,
498 .id = -1,
499 .dev = {
500 .platform_data = &palmtx_nand_platdata,
501 }
502};
503
504/******************************************************************************
496 * Power management - standby 505 * Power management - standby
497 ******************************************************************************/ 506 ******************************************************************************/
498static void __init palmtx_pm_init(void) 507static void __init palmtx_pm_init(void)
@@ -518,6 +527,8 @@ static struct platform_device *devices[] __initdata = {
518 &power_supply, 527 &power_supply,
519 &palmtx_asoc, 528 &palmtx_asoc,
520 &palmtx_gpio_vbus, 529 &palmtx_gpio_vbus,
530 &palmtx_flash,
531 &palmtx_nand,
521}; 532};
522 533
523static struct map_desc palmtx_io_desc[] __initdata = { 534static struct map_desc palmtx_io_desc[] __initdata = {
@@ -525,8 +536,18 @@ static struct map_desc palmtx_io_desc[] __initdata = {
525 .virtual = PALMTX_PCMCIA_VIRT, 536 .virtual = PALMTX_PCMCIA_VIRT,
526 .pfn = __phys_to_pfn(PALMTX_PCMCIA_PHYS), 537 .pfn = __phys_to_pfn(PALMTX_PCMCIA_PHYS),
527 .length = PALMTX_PCMCIA_SIZE, 538 .length = PALMTX_PCMCIA_SIZE,
528 .type = MT_DEVICE 539 .type = MT_DEVICE,
529}, 540}, {
541 .virtual = PALMTX_NAND_ALE_VIRT,
542 .pfn = __phys_to_pfn(PALMTX_NAND_ALE_PHYS),
543 .length = SZ_1M,
544 .type = MT_DEVICE,
545}, {
546 .virtual = PALMTX_NAND_CLE_VIRT,
547 .pfn = __phys_to_pfn(PALMTX_NAND_CLE_PHYS),
548 .length = SZ_1M,
549 .type = MT_DEVICE,
550}
530}; 551};
531 552
532static void __init palmtx_map_io(void) 553static void __init palmtx_map_io(void)
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index c3645aa3fa3d..c2bf493c5f53 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -129,88 +129,14 @@ static unsigned long palmz72_pin_config[] __initdata = {
129/****************************************************************************** 129/******************************************************************************
130 * SD/MMC card controller 130 * SD/MMC card controller
131 ******************************************************************************/ 131 ******************************************************************************/
132static int palmz72_mci_init(struct device *dev, 132/* SD_POWER is not actually power, but it is more like chip
133 irq_handler_t palmz72_detect_int, void *data) 133 * select, i.e. it is inverted */
134{
135 int err = 0;
136
137 /* Setup an interrupt for detecting card insert/remove events */
138 err = gpio_request(GPIO_NR_PALMZ72_SD_DETECT_N, "SD IRQ");
139 if (err)
140 goto err;
141 err = gpio_direction_input(GPIO_NR_PALMZ72_SD_DETECT_N);
142 if (err)
143 goto err2;
144 err = request_irq(gpio_to_irq(GPIO_NR_PALMZ72_SD_DETECT_N),
145 palmz72_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
146 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
147 "SD/MMC card detect", data);
148 if (err) {
149 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
150 __func__);
151 goto err2;
152 }
153
154 /* SD_POWER is not actually power, but it is more like chip
155 * select, i.e. it is inverted */
156
157 err = gpio_request(GPIO_NR_PALMZ72_SD_POWER_N, "SD_POWER");
158 if (err)
159 goto err3;
160 err = gpio_direction_output(GPIO_NR_PALMZ72_SD_POWER_N, 0);
161 if (err)
162 goto err4;
163 err = gpio_request(GPIO_NR_PALMZ72_SD_RO, "SD_RO");
164 if (err)
165 goto err4;
166 err = gpio_direction_input(GPIO_NR_PALMZ72_SD_RO);
167 if (err)
168 goto err5;
169
170 printk(KERN_DEBUG "%s: irq registered\n", __func__);
171
172 return 0;
173
174err5:
175 gpio_free(GPIO_NR_PALMZ72_SD_RO);
176err4:
177 gpio_free(GPIO_NR_PALMZ72_SD_POWER_N);
178err3:
179 free_irq(gpio_to_irq(GPIO_NR_PALMZ72_SD_DETECT_N), data);
180err2:
181 gpio_free(GPIO_NR_PALMZ72_SD_DETECT_N);
182err:
183 return err;
184}
185
186static void palmz72_mci_exit(struct device *dev, void *data)
187{
188 gpio_free(GPIO_NR_PALMZ72_SD_POWER_N);
189 free_irq(gpio_to_irq(GPIO_NR_PALMZ72_SD_DETECT_N), data);
190 gpio_free(GPIO_NR_PALMZ72_SD_DETECT_N);
191 gpio_free(GPIO_NR_PALMZ72_SD_RO);
192}
193
194static void palmz72_mci_power(struct device *dev, unsigned int vdd)
195{
196 struct pxamci_platform_data *p_d = dev->platform_data;
197 if (p_d->ocr_mask & (1 << vdd))
198 gpio_set_value(GPIO_NR_PALMZ72_SD_POWER_N, 0);
199 else
200 gpio_set_value(GPIO_NR_PALMZ72_SD_POWER_N, 1);
201}
202
203static int palmz72_mci_ro(struct device *dev)
204{
205 return gpio_get_value(GPIO_NR_PALMZ72_SD_RO);
206}
207
208static struct pxamci_platform_data palmz72_mci_platform_data = { 134static struct pxamci_platform_data palmz72_mci_platform_data = {
209 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 135 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
210 .setpower = palmz72_mci_power, 136 .gpio_card_detect = GPIO_NR_PALMZ72_SD_DETECT_N,
211 .get_ro = palmz72_mci_ro, 137 .gpio_card_ro = GPIO_NR_PALMZ72_SD_RO,
212 .init = palmz72_mci_init, 138 .gpio_power = GPIO_NR_PALMZ72_SD_POWER_N,
213 .exit = palmz72_mci_exit, 139 .gpio_power_invert = 1,
214}; 140};
215 141
216/****************************************************************************** 142/******************************************************************************
@@ -304,35 +230,9 @@ static struct platform_device palmz72_backlight = {
304/****************************************************************************** 230/******************************************************************************
305 * IrDA 231 * IrDA
306 ******************************************************************************/ 232 ******************************************************************************/
307static int palmz72_irda_startup(struct device *dev)
308{
309 int err;
310 err = gpio_request(GPIO_NR_PALMZ72_IR_DISABLE, "IR DISABLE");
311 if (err)
312 goto err;
313 err = gpio_direction_output(GPIO_NR_PALMZ72_IR_DISABLE, 1);
314 if (err)
315 gpio_free(GPIO_NR_PALMZ72_IR_DISABLE);
316err:
317 return err;
318}
319
320static void palmz72_irda_shutdown(struct device *dev)
321{
322 gpio_free(GPIO_NR_PALMZ72_IR_DISABLE);
323}
324
325static void palmz72_irda_transceiver_mode(struct device *dev, int mode)
326{
327 gpio_set_value(GPIO_NR_PALMZ72_IR_DISABLE, mode & IR_OFF);
328 pxa2xx_transceiver_mode(dev, mode);
329}
330
331static struct pxaficp_platform_data palmz72_ficp_platform_data = { 233static struct pxaficp_platform_data palmz72_ficp_platform_data = {
332 .startup = palmz72_irda_startup, 234 .gpio_pwdown = GPIO_NR_PALMZ72_IR_DISABLE,
333 .shutdown = palmz72_irda_shutdown,
334 .transceiver_cap = IR_SIRMODE | IR_OFF, 235 .transceiver_cap = IR_SIRMODE | IR_OFF,
335 .transceiver_mode = palmz72_irda_transceiver_mode,
336}; 236};
337 237
338/****************************************************************************** 238/******************************************************************************
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 01791d74e08e..bbda57078e0f 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -321,11 +321,14 @@ static void pcm990_mci_exit(struct device *dev, void *data)
321#define MSECS_PER_JIFFY (1000/HZ) 321#define MSECS_PER_JIFFY (1000/HZ)
322 322
323static struct pxamci_platform_data pcm990_mci_platform_data = { 323static struct pxamci_platform_data pcm990_mci_platform_data = {
324 .detect_delay = 250 / MSECS_PER_JIFFY, 324 .detect_delay = 250 / MSECS_PER_JIFFY,
325 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 325 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
326 .init = pcm990_mci_init, 326 .init = pcm990_mci_init,
327 .setpower = pcm990_mci_setpower, 327 .setpower = pcm990_mci_setpower,
328 .exit = pcm990_mci_exit, 328 .exit = pcm990_mci_exit,
329 .gpio_card_detect = -1,
330 .gpio_card_ro = -1,
331 .gpio_power = -1,
329}; 332};
330 333
331static struct pxaohci_platform_data pcm990_ohci_platform_data = { 334static struct pxaohci_platform_data pcm990_ohci_platform_data = {
@@ -427,25 +430,56 @@ static void pcm990_camera_free_bus(struct soc_camera_link *link)
427 gpio_bus_switch = -EINVAL; 430 gpio_bus_switch = -EINVAL;
428} 431}
429 432
430static struct soc_camera_link iclink = {
431 .bus_id = 0, /* Must match with the camera ID above */
432 .query_bus_param = pcm990_camera_query_bus_param,
433 .set_bus_param = pcm990_camera_set_bus_param,
434 .free_bus = pcm990_camera_free_bus,
435};
436
437/* Board I2C devices. */ 433/* Board I2C devices. */
438static struct i2c_board_info __initdata pcm990_i2c_devices[] = { 434static struct i2c_board_info __initdata pcm990_i2c_devices[] = {
439 { 435 {
440 /* Must initialize before the camera(s) */ 436 /* Must initialize before the camera(s) */
441 I2C_BOARD_INFO("pca9536", 0x41), 437 I2C_BOARD_INFO("pca9536", 0x41),
442 .platform_data = &pca9536_data, 438 .platform_data = &pca9536_data,
443 }, { 439 },
440};
441
442static struct i2c_board_info pcm990_camera_i2c[] = {
443 {
444 I2C_BOARD_INFO("mt9v022", 0x48), 444 I2C_BOARD_INFO("mt9v022", 0x48),
445 .platform_data = &iclink, /* With extender */
446 }, { 445 }, {
447 I2C_BOARD_INFO("mt9m001", 0x5d), 446 I2C_BOARD_INFO("mt9m001", 0x5d),
448 .platform_data = &iclink, /* With extender */ 447 },
448};
449
450static struct soc_camera_link iclink[] = {
451 {
452 .bus_id = 0, /* Must match with the camera ID */
453 .board_info = &pcm990_camera_i2c[0],
454 .i2c_adapter_id = 0,
455 .query_bus_param = pcm990_camera_query_bus_param,
456 .set_bus_param = pcm990_camera_set_bus_param,
457 .free_bus = pcm990_camera_free_bus,
458 .module_name = "mt9v022",
459 }, {
460 .bus_id = 0, /* Must match with the camera ID */
461 .board_info = &pcm990_camera_i2c[1],
462 .i2c_adapter_id = 0,
463 .query_bus_param = pcm990_camera_query_bus_param,
464 .set_bus_param = pcm990_camera_set_bus_param,
465 .free_bus = pcm990_camera_free_bus,
466 .module_name = "mt9m001",
467 },
468};
469
470static struct platform_device pcm990_camera[] = {
471 {
472 .name = "soc-camera-pdrv",
473 .id = 0,
474 .dev = {
475 .platform_data = &iclink[0],
476 },
477 }, {
478 .name = "soc-camera-pdrv",
479 .id = 1,
480 .dev = {
481 .platform_data = &iclink[1],
482 },
449 }, 483 },
450}; 484};
451#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */ 485#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */
@@ -501,6 +535,9 @@ void __init pcm990_baseboard_init(void)
501 pxa_set_camera_info(&pcm990_pxacamera_platform_data); 535 pxa_set_camera_info(&pcm990_pxacamera_platform_data);
502 536
503 i2c_register_board_info(0, ARRAY_AND_SIZE(pcm990_i2c_devices)); 537 i2c_register_board_info(0, ARRAY_AND_SIZE(pcm990_i2c_devices));
538
539 platform_device_register(&pcm990_camera[0]);
540 platform_device_register(&pcm990_camera[1]);
504#endif 541#endif
505 542
506 printk(KERN_INFO "PCM-990 Evaluation baseboard initialized\n"); 543 printk(KERN_INFO "PCM-990 Evaluation baseboard initialized\n");
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 9352d4a34837..a186994f77fb 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -245,20 +245,10 @@ static inline void poodle_init_spi(void) {}
245 * The card detect interrupt isn't debounced so we delay it by 250ms 245 * The card detect interrupt isn't debounced so we delay it by 250ms
246 * to give the card a chance to fully insert/eject. 246 * to give the card a chance to fully insert/eject.
247 */ 247 */
248static struct pxamci_platform_data poodle_mci_platform_data;
249
250static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data) 248static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data)
251{ 249{
252 int err; 250 int err;
253 251
254 err = gpio_request(POODLE_GPIO_nSD_DETECT, "nSD_DETECT");
255 if (err)
256 goto err_out;
257
258 err = gpio_request(POODLE_GPIO_nSD_WP, "nSD_WP");
259 if (err)
260 goto err_free_1;
261
262 err = gpio_request(POODLE_GPIO_SD_PWR, "SD_PWR"); 252 err = gpio_request(POODLE_GPIO_SD_PWR, "SD_PWR");
263 if (err) 253 if (err)
264 goto err_free_2; 254 goto err_free_2;
@@ -267,34 +257,14 @@ static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int,
267 if (err) 257 if (err)
268 goto err_free_3; 258 goto err_free_3;
269 259
270 gpio_direction_input(POODLE_GPIO_nSD_DETECT);
271 gpio_direction_input(POODLE_GPIO_nSD_WP);
272
273 gpio_direction_output(POODLE_GPIO_SD_PWR, 0); 260 gpio_direction_output(POODLE_GPIO_SD_PWR, 0);
274 gpio_direction_output(POODLE_GPIO_SD_PWR1, 0); 261 gpio_direction_output(POODLE_GPIO_SD_PWR1, 0);
275 262
276 poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250);
277
278 err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int,
279 IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
280 "MMC card detect", data);
281 if (err) {
282 pr_err("%s: MMC/SD: can't request MMC card detect IRQ\n",
283 __func__);
284 goto err_free_4;
285 }
286
287 return 0; 263 return 0;
288 264
289err_free_4:
290 gpio_free(POODLE_GPIO_SD_PWR1);
291err_free_3: 265err_free_3:
292 gpio_free(POODLE_GPIO_SD_PWR); 266 gpio_free(POODLE_GPIO_SD_PWR);
293err_free_2: 267err_free_2:
294 gpio_free(POODLE_GPIO_nSD_WP);
295err_free_1:
296 gpio_free(POODLE_GPIO_nSD_DETECT);
297err_out:
298 return err; 268 return err;
299} 269}
300 270
@@ -312,62 +282,29 @@ static void poodle_mci_setpower(struct device *dev, unsigned int vdd)
312 } 282 }
313} 283}
314 284
315static int poodle_mci_get_ro(struct device *dev)
316{
317 return !!gpio_get_value(POODLE_GPIO_nSD_WP);
318 return GPLR(POODLE_GPIO_nSD_WP) & GPIO_bit(POODLE_GPIO_nSD_WP);
319}
320
321
322static void poodle_mci_exit(struct device *dev, void *data) 285static void poodle_mci_exit(struct device *dev, void *data)
323{ 286{
324 free_irq(POODLE_IRQ_GPIO_nSD_DETECT, data);
325 gpio_free(POODLE_GPIO_SD_PWR1); 287 gpio_free(POODLE_GPIO_SD_PWR1);
326 gpio_free(POODLE_GPIO_SD_PWR); 288 gpio_free(POODLE_GPIO_SD_PWR);
327 gpio_free(POODLE_GPIO_nSD_WP);
328 gpio_free(POODLE_GPIO_nSD_DETECT);
329} 289}
330 290
331static struct pxamci_platform_data poodle_mci_platform_data = { 291static struct pxamci_platform_data poodle_mci_platform_data = {
332 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 292 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
333 .init = poodle_mci_init, 293 .init = poodle_mci_init,
334 .get_ro = poodle_mci_get_ro, 294 .setpower = poodle_mci_setpower,
335 .setpower = poodle_mci_setpower, 295 .exit = poodle_mci_exit,
336 .exit = poodle_mci_exit, 296 .gpio_card_detect = POODLE_IRQ_GPIO_nSD_DETECT,
297 .gpio_card_ro = POODLE_GPIO_nSD_WP,
298 .gpio_power = -1,
337}; 299};
338 300
339 301
340/* 302/*
341 * Irda 303 * Irda
342 */ 304 */
343static void poodle_irda_transceiver_mode(struct device *dev, int mode)
344{
345 gpio_set_value(POODLE_GPIO_IR_ON, mode & IR_OFF);
346 pxa2xx_transceiver_mode(dev, mode);
347}
348
349static int poodle_irda_startup(struct device *dev)
350{
351 int err;
352
353 err = gpio_request(POODLE_GPIO_IR_ON, "IR_ON");
354 if (err)
355 return err;
356
357 gpio_direction_output(POODLE_GPIO_IR_ON, 1);
358 return 0;
359}
360
361static void poodle_irda_shutdown(struct device *dev)
362{
363 gpio_free(POODLE_GPIO_IR_ON);
364}
365
366static struct pxaficp_platform_data poodle_ficp_platform_data = { 305static struct pxaficp_platform_data poodle_ficp_platform_data = {
306 .gpio_pwdown = POODLE_GPIO_IR_ON,
367 .transceiver_cap = IR_SIRMODE | IR_OFF, 307 .transceiver_cap = IR_SIRMODE | IR_OFF,
368 .transceiver_mode = poodle_irda_transceiver_mode,
369 .startup = poodle_irda_startup,
370 .shutdown = poodle_irda_shutdown,
371}; 308};
372 309
373 310
@@ -521,6 +458,7 @@ static void __init poodle_init(void)
521 set_pxa_fb_parent(&poodle_locomo_device.dev); 458 set_pxa_fb_parent(&poodle_locomo_device.dev);
522 set_pxa_fb_info(&poodle_fb_info); 459 set_pxa_fb_info(&poodle_fb_info);
523 pxa_set_udc_info(&udc_info); 460 pxa_set_udc_info(&udc_info);
461 poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250);
524 pxa_set_mci_info(&poodle_mci_platform_data); 462 pxa_set_mci_info(&poodle_mci_platform_data);
525 pxa_set_ficp_info(&poodle_ficp_platform_data); 463 pxa_set_ficp_info(&poodle_ficp_platform_data);
526 pxa_set_i2c_info(NULL); 464 pxa_set_i2c_info(NULL);
diff --git a/arch/arm/mach-pxa/pxa2xx.c b/arch/arm/mach-pxa/pxa2xx.c
index 2f3394f85917..868270421b8c 100644
--- a/arch/arm/mach-pxa/pxa2xx.c
+++ b/arch/arm/mach-pxa/pxa2xx.c
@@ -52,3 +52,4 @@ void pxa2xx_transceiver_mode(struct device *dev, int mode)
52 } else 52 } else
53 BUG(); 53 BUG();
54} 54}
55EXPORT_SYMBOL_GPL(pxa2xx_transceiver_mode);
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
index 4ba6d21f851c..f4af6e2bef89 100644
--- a/arch/arm/mach-pxa/pxa300.c
+++ b/arch/arm/mach-pxa/pxa300.c
@@ -84,9 +84,11 @@ static struct mfp_addr_map pxa310_mfp_addr_map[] __initdata = {
84}; 84};
85 85
86static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0); 86static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0);
87static DEFINE_PXA3_CKEN(gcu, PXA300_GCU, 0, 0);
87 88
88static struct clk_lookup common_clkregs[] = { 89static struct clk_lookup common_clkregs[] = {
89 INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL), 90 INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
91 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
90}; 92};
91 93
92static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0); 94static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c
index 8b3d97efadab..c7373e74a109 100644
--- a/arch/arm/mach-pxa/pxa320.c
+++ b/arch/arm/mach-pxa/pxa320.c
@@ -78,9 +78,11 @@ static struct mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
78}; 78};
79 79
80static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0); 80static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0);
81static DEFINE_PXA3_CKEN(gcu, PXA320_GCU, 0, 0);
81 82
82static struct clk_lookup pxa320_clkregs[] = { 83static struct clk_lookup pxa320_clkregs[] = {
83 INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL), 84 INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
85 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
84}; 86};
85 87
86static int __init pxa320_init(void) 88static int __init pxa320_init(void)
diff --git a/arch/arm/mach-pxa/pxa930.c b/arch/arm/mach-pxa/pxa930.c
index 71131742fffd..064292008288 100644
--- a/arch/arm/mach-pxa/pxa930.c
+++ b/arch/arm/mach-pxa/pxa930.c
@@ -176,13 +176,30 @@ static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = {
176 MFP_ADDR_END, 176 MFP_ADDR_END,
177}; 177};
178 178
179static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = {
180 MFP_ADDR(GPIO159, 0x0524),
181 MFP_ADDR(GPIO163, 0x0534),
182 MFP_ADDR(GPIO167, 0x0544),
183 MFP_ADDR(GPIO168, 0x0548),
184 MFP_ADDR(GPIO169, 0x054c),
185 MFP_ADDR(GPIO170, 0x0550),
186 MFP_ADDR(GPIO171, 0x0554),
187 MFP_ADDR(GPIO172, 0x0558),
188 MFP_ADDR(GPIO173, 0x055c),
189
190 MFP_ADDR_END,
191};
192
179static int __init pxa930_init(void) 193static int __init pxa930_init(void)
180{ 194{
181 if (cpu_is_pxa930()) { 195 if (cpu_is_pxa930() || cpu_is_pxa935()) {
182 mfp_init_base(io_p2v(MFPR_BASE)); 196 mfp_init_base(io_p2v(MFPR_BASE));
183 mfp_init_addr(pxa930_mfp_addr_map); 197 mfp_init_addr(pxa930_mfp_addr_map);
184 } 198 }
185 199
200 if (cpu_is_pxa935())
201 mfp_init_addr(pxa935_mfp_addr_map);
202
186 return 0; 203 return 0;
187} 204}
188 205
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index dda310fe71c8..f9dc59c054b3 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -24,6 +24,7 @@
24#include <linux/spi/ads7846.h> 24#include <linux/spi/ads7846.h>
25#include <linux/spi/corgi_lcd.h> 25#include <linux/spi/corgi_lcd.h>
26#include <linux/mtd/sharpsl.h> 26#include <linux/mtd/sharpsl.h>
27#include <linux/input/matrix_keypad.h>
27 28
28#include <asm/setup.h> 29#include <asm/setup.h>
29#include <asm/mach-types.h> 30#include <asm/mach-types.h>
@@ -111,6 +112,26 @@ static unsigned long spitz_pin_config[] __initdata = {
111 GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */ 112 GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */
112 GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */ 113 GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */
113 114
115 /* GPIO matrix keypad */
116 GPIO88_GPIO, /* column 0 */
117 GPIO23_GPIO, /* column 1 */
118 GPIO24_GPIO, /* column 2 */
119 GPIO25_GPIO, /* column 3 */
120 GPIO26_GPIO, /* column 4 */
121 GPIO27_GPIO, /* column 5 */
122 GPIO52_GPIO, /* column 6 */
123 GPIO103_GPIO, /* column 7 */
124 GPIO107_GPIO, /* column 8 */
125 GPIO108_GPIO, /* column 9 */
126 GPIO114_GPIO, /* column 10 */
127 GPIO12_GPIO, /* row 0 */
128 GPIO17_GPIO, /* row 1 */
129 GPIO91_GPIO, /* row 2 */
130 GPIO34_GPIO, /* row 3 */
131 GPIO36_GPIO, /* row 4 */
132 GPIO38_GPIO, /* row 5 */
133 GPIO39_GPIO, /* row 6 */
134
114 /* I2C */ 135 /* I2C */
115 GPIO117_I2C_SCL, 136 GPIO117_I2C_SCL,
116 GPIO118_I2C_SDA, 137 GPIO118_I2C_SDA,
@@ -242,9 +263,115 @@ EXPORT_SYMBOL(spitzscoop2_device);
242/* 263/*
243 * Spitz Keyboard Device 264 * Spitz Keyboard Device
244 */ 265 */
266#define SPITZ_KEY_CALENDAR KEY_F1
267#define SPITZ_KEY_ADDRESS KEY_F2
268#define SPITZ_KEY_FN KEY_F3
269#define SPITZ_KEY_CANCEL KEY_F4
270#define SPITZ_KEY_EXOK KEY_F5
271#define SPITZ_KEY_EXCANCEL KEY_F6
272#define SPITZ_KEY_EXJOGDOWN KEY_F7
273#define SPITZ_KEY_EXJOGUP KEY_F8
274#define SPITZ_KEY_JAP1 KEY_LEFTALT
275#define SPITZ_KEY_JAP2 KEY_RIGHTCTRL
276#define SPITZ_KEY_SYNC KEY_F9
277#define SPITZ_KEY_MAIL KEY_F10
278#define SPITZ_KEY_OK KEY_F11
279#define SPITZ_KEY_MENU KEY_F12
280
281static const uint32_t spitzkbd_keymap[] = {
282 KEY(0, 0, KEY_LEFTCTRL),
283 KEY(0, 1, KEY_1),
284 KEY(0, 2, KEY_3),
285 KEY(0, 3, KEY_5),
286 KEY(0, 4, KEY_6),
287 KEY(0, 5, KEY_7),
288 KEY(0, 6, KEY_9),
289 KEY(0, 7, KEY_0),
290 KEY(0, 8, KEY_BACKSPACE),
291 KEY(0, 9, SPITZ_KEY_EXOK), /* EXOK */
292 KEY(0, 10, SPITZ_KEY_EXCANCEL), /* EXCANCEL */
293 KEY(1, 1, KEY_2),
294 KEY(1, 2, KEY_4),
295 KEY(1, 3, KEY_R),
296 KEY(1, 4, KEY_Y),
297 KEY(1, 5, KEY_8),
298 KEY(1, 6, KEY_I),
299 KEY(1, 7, KEY_O),
300 KEY(1, 8, KEY_P),
301 KEY(1, 9, SPITZ_KEY_EXJOGDOWN), /* EXJOGDOWN */
302 KEY(1, 10, SPITZ_KEY_EXJOGUP), /* EXJOGUP */
303 KEY(2, 0, KEY_TAB),
304 KEY(2, 1, KEY_Q),
305 KEY(2, 2, KEY_E),
306 KEY(2, 3, KEY_T),
307 KEY(2, 4, KEY_G),
308 KEY(2, 5, KEY_U),
309 KEY(2, 6, KEY_J),
310 KEY(2, 7, KEY_K),
311 KEY(3, 0, SPITZ_KEY_ADDRESS), /* ADDRESS */
312 KEY(3, 1, KEY_W),
313 KEY(3, 2, KEY_S),
314 KEY(3, 3, KEY_F),
315 KEY(3, 4, KEY_V),
316 KEY(3, 5, KEY_H),
317 KEY(3, 6, KEY_M),
318 KEY(3, 7, KEY_L),
319 KEY(3, 9, KEY_RIGHTSHIFT),
320 KEY(4, 0, SPITZ_KEY_CALENDAR), /* CALENDAR */
321 KEY(4, 1, KEY_A),
322 KEY(4, 2, KEY_D),
323 KEY(4, 3, KEY_C),
324 KEY(4, 4, KEY_B),
325 KEY(4, 5, KEY_N),
326 KEY(4, 6, KEY_DOT),
327 KEY(4, 8, KEY_ENTER),
328 KEY(4, 9, KEY_LEFTSHIFT),
329 KEY(5, 0, SPITZ_KEY_MAIL), /* MAIL */
330 KEY(5, 1, KEY_Z),
331 KEY(5, 2, KEY_X),
332 KEY(5, 3, KEY_MINUS),
333 KEY(5, 4, KEY_SPACE),
334 KEY(5, 5, KEY_COMMA),
335 KEY(5, 7, KEY_UP),
336 KEY(5, 10, SPITZ_KEY_FN), /* FN */
337 KEY(6, 0, KEY_SYSRQ),
338 KEY(6, 1, SPITZ_KEY_JAP1), /* JAP1 */
339 KEY(6, 2, SPITZ_KEY_JAP2), /* JAP2 */
340 KEY(6, 3, SPITZ_KEY_CANCEL), /* CANCEL */
341 KEY(6, 4, SPITZ_KEY_OK), /* OK */
342 KEY(6, 5, SPITZ_KEY_MENU), /* MENU */
343 KEY(6, 6, KEY_LEFT),
344 KEY(6, 7, KEY_DOWN),
345 KEY(6, 8, KEY_RIGHT),
346};
347
348static const struct matrix_keymap_data spitzkbd_keymap_data = {
349 .keymap = spitzkbd_keymap,
350 .keymap_size = ARRAY_SIZE(spitzkbd_keymap),
351};
352
353static const uint32_t spitzkbd_row_gpios[] =
354 { 12, 17, 91, 34, 36, 38, 39 };
355static const uint32_t spitzkbd_col_gpios[] =
356 { 88, 23, 24, 25, 26, 27, 52, 103, 107, 108, 114 };
357
358static struct matrix_keypad_platform_data spitzkbd_pdata = {
359 .keymap_data = &spitzkbd_keymap_data,
360 .row_gpios = spitzkbd_row_gpios,
361 .col_gpios = spitzkbd_col_gpios,
362 .num_row_gpios = ARRAY_SIZE(spitzkbd_row_gpios),
363 .num_col_gpios = ARRAY_SIZE(spitzkbd_col_gpios),
364 .col_scan_delay_us = 10,
365 .debounce_ms = 10,
366 .wakeup = 1,
367};
368
245static struct platform_device spitzkbd_device = { 369static struct platform_device spitzkbd_device = {
246 .name = "spitz-keyboard", 370 .name = "matrix-keypad",
247 .id = -1, 371 .id = -1,
372 .dev = {
373 .platform_data = &spitzkbd_pdata,
374 },
248}; 375};
249 376
250 377
@@ -378,45 +505,6 @@ static inline void spitz_init_spi(void) {}
378 * The card detect interrupt isn't debounced so we delay it by 250ms 505 * The card detect interrupt isn't debounced so we delay it by 250ms
379 * to give the card a chance to fully insert/eject. 506 * to give the card a chance to fully insert/eject.
380 */ 507 */
381
382static struct pxamci_platform_data spitz_mci_platform_data;
383
384static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, void *data)
385{
386 int err;
387
388 err = gpio_request(SPITZ_GPIO_nSD_DETECT, "nSD_DETECT");
389 if (err)
390 goto err_out;
391
392 err = gpio_request(SPITZ_GPIO_nSD_WP, "nSD_WP");
393 if (err)
394 goto err_free_1;
395
396 gpio_direction_input(SPITZ_GPIO_nSD_DETECT);
397 gpio_direction_input(SPITZ_GPIO_nSD_WP);
398
399 spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250);
400
401 err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int,
402 IRQF_DISABLED | IRQF_TRIGGER_RISING |
403 IRQF_TRIGGER_FALLING,
404 "MMC card detect", data);
405 if (err) {
406 pr_err("%s: MMC/SD: can't request MMC card detect IRQ\n",
407 __func__);
408 goto err_free_2;
409 }
410 return 0;
411
412err_free_2:
413 gpio_free(SPITZ_GPIO_nSD_WP);
414err_free_1:
415 gpio_free(SPITZ_GPIO_nSD_DETECT);
416err_out:
417 return err;
418}
419
420static void spitz_mci_setpower(struct device *dev, unsigned int vdd) 508static void spitz_mci_setpower(struct device *dev, unsigned int vdd)
421{ 509{
422 struct pxamci_platform_data* p_d = dev->platform_data; 510 struct pxamci_platform_data* p_d = dev->platform_data;
@@ -427,24 +515,12 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd)
427 spitz_card_pwr_ctrl(SPITZ_PWR_SD, 0x0000); 515 spitz_card_pwr_ctrl(SPITZ_PWR_SD, 0x0000);
428} 516}
429 517
430static int spitz_mci_get_ro(struct device *dev)
431{
432 return gpio_get_value(SPITZ_GPIO_nSD_WP);
433}
434
435static void spitz_mci_exit(struct device *dev, void *data)
436{
437 free_irq(SPITZ_IRQ_GPIO_nSD_DETECT, data);
438 gpio_free(SPITZ_GPIO_nSD_WP);
439 gpio_free(SPITZ_GPIO_nSD_DETECT);
440}
441
442static struct pxamci_platform_data spitz_mci_platform_data = { 518static struct pxamci_platform_data spitz_mci_platform_data = {
443 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 519 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
444 .init = spitz_mci_init, 520 .setpower = spitz_mci_setpower,
445 .get_ro = spitz_mci_get_ro, 521 .gpio_card_detect = SPITZ_GPIO_nSD_DETECT,
446 .setpower = spitz_mci_setpower, 522 .gpio_card_ro = SPITZ_GPIO_nSD_WP,
447 .exit = spitz_mci_exit, 523 .gpio_power = -1,
448}; 524};
449 525
450 526
@@ -484,50 +560,10 @@ static struct pxaohci_platform_data spitz_ohci_platform_data = {
484/* 560/*
485 * Irda 561 * Irda
486 */ 562 */
487static int spitz_irda_startup(struct device *dev)
488{
489 int rc;
490
491 rc = gpio_request(SPITZ_GPIO_IR_ON, "IrDA on");
492 if (rc)
493 goto err;
494
495 rc = gpio_direction_output(SPITZ_GPIO_IR_ON, 1);
496 if (rc)
497 goto err_dir;
498
499 return 0;
500
501err_dir:
502 gpio_free(SPITZ_GPIO_IR_ON);
503err:
504 return rc;
505}
506
507static void spitz_irda_shutdown(struct device *dev)
508{
509 gpio_free(SPITZ_GPIO_IR_ON);
510}
511
512static void spitz_irda_transceiver_mode(struct device *dev, int mode)
513{
514 gpio_set_value(SPITZ_GPIO_IR_ON, mode & IR_OFF);
515 pxa2xx_transceiver_mode(dev, mode);
516}
517
518#ifdef CONFIG_MACH_AKITA
519static void akita_irda_transceiver_mode(struct device *dev, int mode)
520{
521 gpio_set_value(AKITA_GPIO_IR_ON, mode & IR_OFF);
522 pxa2xx_transceiver_mode(dev, mode);
523}
524#endif
525 563
526static struct pxaficp_platform_data spitz_ficp_platform_data = { 564static struct pxaficp_platform_data spitz_ficp_platform_data = {
565/* .gpio_pwdown is set in spitz_init() and akita_init() accordingly */
527 .transceiver_cap = IR_SIRMODE | IR_OFF, 566 .transceiver_cap = IR_SIRMODE | IR_OFF,
528 .transceiver_mode = spitz_irda_transceiver_mode,
529 .startup = spitz_irda_startup,
530 .shutdown = spitz_irda_shutdown,
531}; 567};
532 568
533 569
@@ -695,6 +731,7 @@ static void __init common_init(void)
695 spitz_init_spi(); 731 spitz_init_spi();
696 732
697 platform_add_devices(devices, ARRAY_SIZE(devices)); 733 platform_add_devices(devices, ARRAY_SIZE(devices));
734 spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250);
698 pxa_set_mci_info(&spitz_mci_platform_data); 735 pxa_set_mci_info(&spitz_mci_platform_data);
699 pxa_set_ohci_info(&spitz_ohci_platform_data); 736 pxa_set_ohci_info(&spitz_ohci_platform_data);
700 pxa_set_ficp_info(&spitz_ficp_platform_data); 737 pxa_set_ficp_info(&spitz_ficp_platform_data);
@@ -705,6 +742,8 @@ static void __init common_init(void)
705#if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI) 742#if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI)
706static void __init spitz_init(void) 743static void __init spitz_init(void)
707{ 744{
745 spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON;
746
708 platform_scoop_config = &spitz_pcmcia_config; 747 platform_scoop_config = &spitz_pcmcia_config;
709 748
710 common_init(); 749 common_init();
@@ -747,7 +786,7 @@ static struct nand_ecclayout akita_oobinfo = {
747 786
748static void __init akita_init(void) 787static void __init akita_init(void)
749{ 788{
750 spitz_ficp_platform_data.transceiver_mode = akita_irda_transceiver_mode; 789 spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON;
751 790
752 sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; 791 sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt;
753 sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; 792 sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo;
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 117ad5920e53..e81a52673d49 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -247,49 +247,10 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
247/* 247/*
248 * MMC/SD Device 248 * MMC/SD Device
249 */ 249 */
250static struct pxamci_platform_data tosa_mci_platform_data;
251
252static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void *data) 250static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void *data)
253{ 251{
254 int err; 252 int err;
255 253
256 tosa_mci_platform_data.detect_delay = msecs_to_jiffies(250);
257
258 err = gpio_request(TOSA_GPIO_nSD_DETECT, "MMC/SD card detect");
259 if (err) {
260 printk(KERN_ERR "tosa_mci_init: can't request nSD_DETECT gpio\n");
261 goto err_gpio_detect;
262 }
263 err = gpio_direction_input(TOSA_GPIO_nSD_DETECT);
264 if (err)
265 goto err_gpio_detect_dir;
266
267 err = request_irq(TOSA_IRQ_GPIO_nSD_DETECT, tosa_detect_int,
268 IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
269 "MMC/SD card detect", data);
270 if (err) {
271 printk(KERN_ERR "tosa_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
272 goto err_irq;
273 }
274
275 err = gpio_request(TOSA_GPIO_SD_WP, "SD Write Protect");
276 if (err) {
277 printk(KERN_ERR "tosa_mci_init: can't request SD_WP gpio\n");
278 goto err_gpio_wp;
279 }
280 err = gpio_direction_input(TOSA_GPIO_SD_WP);
281 if (err)
282 goto err_gpio_wp_dir;
283
284 err = gpio_request(TOSA_GPIO_PWR_ON, "SD Power");
285 if (err) {
286 printk(KERN_ERR "tosa_mci_init: can't request SD_PWR gpio\n");
287 goto err_gpio_pwr;
288 }
289 err = gpio_direction_output(TOSA_GPIO_PWR_ON, 0);
290 if (err)
291 goto err_gpio_pwr_dir;
292
293 err = gpio_request(TOSA_GPIO_nSD_INT, "SD Int"); 254 err = gpio_request(TOSA_GPIO_nSD_INT, "SD Int");
294 if (err) { 255 if (err) {
295 printk(KERN_ERR "tosa_mci_init: can't request SD_PWR gpio\n"); 256 printk(KERN_ERR "tosa_mci_init: can't request SD_PWR gpio\n");
@@ -304,51 +265,21 @@ static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void
304err_gpio_int_dir: 265err_gpio_int_dir:
305 gpio_free(TOSA_GPIO_nSD_INT); 266 gpio_free(TOSA_GPIO_nSD_INT);
306err_gpio_int: 267err_gpio_int:
307err_gpio_pwr_dir:
308 gpio_free(TOSA_GPIO_PWR_ON);
309err_gpio_pwr:
310err_gpio_wp_dir:
311 gpio_free(TOSA_GPIO_SD_WP);
312err_gpio_wp:
313 free_irq(TOSA_IRQ_GPIO_nSD_DETECT, data);
314err_irq:
315err_gpio_detect_dir:
316 gpio_free(TOSA_GPIO_nSD_DETECT);
317err_gpio_detect:
318 return err; 268 return err;
319} 269}
320 270
321static void tosa_mci_setpower(struct device *dev, unsigned int vdd)
322{
323 struct pxamci_platform_data* p_d = dev->platform_data;
324
325 if (( 1 << vdd) & p_d->ocr_mask) {
326 gpio_set_value(TOSA_GPIO_PWR_ON, 1);
327 } else {
328 gpio_set_value(TOSA_GPIO_PWR_ON, 0);
329 }
330}
331
332static int tosa_mci_get_ro(struct device *dev)
333{
334 return gpio_get_value(TOSA_GPIO_SD_WP);
335}
336
337static void tosa_mci_exit(struct device *dev, void *data) 271static void tosa_mci_exit(struct device *dev, void *data)
338{ 272{
339 gpio_free(TOSA_GPIO_nSD_INT); 273 gpio_free(TOSA_GPIO_nSD_INT);
340 gpio_free(TOSA_GPIO_PWR_ON);
341 gpio_free(TOSA_GPIO_SD_WP);
342 free_irq(TOSA_IRQ_GPIO_nSD_DETECT, data);
343 gpio_free(TOSA_GPIO_nSD_DETECT);
344} 274}
345 275
346static struct pxamci_platform_data tosa_mci_platform_data = { 276static struct pxamci_platform_data tosa_mci_platform_data = {
347 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 277 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
348 .init = tosa_mci_init, 278 .init = tosa_mci_init,
349 .get_ro = tosa_mci_get_ro, 279 .exit = tosa_mci_exit,
350 .setpower = tosa_mci_setpower, 280 .gpio_card_detect = TOSA_GPIO_nSD_DETECT,
351 .exit = tosa_mci_exit, 281 .gpio_card_ro = TOSA_GPIO_SD_WP,
282 .gpio_power = TOSA_GPIO_PWR_ON,
352}; 283};
353 284
354/* 285/*
@@ -406,10 +337,11 @@ static void tosa_irda_shutdown(struct device *dev)
406} 337}
407 338
408static struct pxaficp_platform_data tosa_ficp_platform_data = { 339static struct pxaficp_platform_data tosa_ficp_platform_data = {
409 .transceiver_cap = IR_SIRMODE | IR_OFF, 340 .gpio_pwdown = -1,
410 .transceiver_mode = tosa_irda_transceiver_mode, 341 .transceiver_cap = IR_SIRMODE | IR_OFF,
411 .startup = tosa_irda_startup, 342 .transceiver_mode = tosa_irda_transceiver_mode,
412 .shutdown = tosa_irda_shutdown, 343 .startup = tosa_irda_startup,
344 .shutdown = tosa_irda_shutdown,
413}; 345};
414 346
415/* 347/*
@@ -910,6 +842,7 @@ static void __init tosa_init(void)
910 dummy = gpiochip_reserve(TOSA_SCOOP_JC_GPIO_BASE, 12); 842 dummy = gpiochip_reserve(TOSA_SCOOP_JC_GPIO_BASE, 12);
911 dummy = gpiochip_reserve(TOSA_TC6393XB_GPIO_BASE, 16); 843 dummy = gpiochip_reserve(TOSA_TC6393XB_GPIO_BASE, 16);
912 844
845 tosa_mci_platform_data.detect_delay = msecs_to_jiffies(250);
913 pxa_set_mci_info(&tosa_mci_platform_data); 846 pxa_set_mci_info(&tosa_mci_platform_data);
914 pxa_set_udc_info(&udc_info); 847 pxa_set_udc_info(&udc_info);
915 pxa_set_ficp_info(&tosa_ficp_platform_data); 848 pxa_set_ficp_info(&tosa_ficp_platform_data);
diff --git a/arch/arm/mach-pxa/treo680.c b/arch/arm/mach-pxa/treo680.c
index 753ec4df17b9..fe085076fbf2 100644
--- a/arch/arm/mach-pxa/treo680.c
+++ b/arch/arm/mach-pxa/treo680.c
@@ -153,87 +153,11 @@ static unsigned long treo680_pin_config[] __initdata = {
153/****************************************************************************** 153/******************************************************************************
154 * SD/MMC card controller 154 * SD/MMC card controller
155 ******************************************************************************/ 155 ******************************************************************************/
156static int treo680_mci_init(struct device *dev,
157 irq_handler_t treo680_detect_int, void *data)
158{
159 int err = 0;
160
161 /* Setup an interrupt for detecting card insert/remove events */
162 err = gpio_request(GPIO_NR_TREO680_SD_DETECT_N, "SD IRQ");
163
164 if (err)
165 goto err;
166
167 err = gpio_direction_input(GPIO_NR_TREO680_SD_DETECT_N);
168 if (err)
169 goto err2;
170
171 err = request_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N),
172 treo680_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
173 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
174 "SD/MMC card detect", data);
175
176 if (err) {
177 dev_err(dev, "%s: cannot request SD/MMC card detect IRQ\n",
178 __func__);
179 goto err2;
180 }
181
182 err = gpio_request(GPIO_NR_TREO680_SD_POWER, "SD_POWER");
183 if (err)
184 goto err3;
185
186 err = gpio_direction_output(GPIO_NR_TREO680_SD_POWER, 1);
187 if (err)
188 goto err4;
189
190 err = gpio_request(GPIO_NR_TREO680_SD_READONLY, "SD_READONLY");
191 if (err)
192 goto err4;
193
194 err = gpio_direction_input(GPIO_NR_TREO680_SD_READONLY);
195 if (err)
196 goto err5;
197
198 return 0;
199
200err5:
201 gpio_free(GPIO_NR_TREO680_SD_READONLY);
202err4:
203 gpio_free(GPIO_NR_TREO680_SD_POWER);
204err3:
205 free_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N), data);
206err2:
207 gpio_free(GPIO_NR_TREO680_SD_DETECT_N);
208err:
209 return err;
210}
211
212static void treo680_mci_exit(struct device *dev, void *data)
213{
214 gpio_free(GPIO_NR_TREO680_SD_READONLY);
215 gpio_free(GPIO_NR_TREO680_SD_POWER);
216 free_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N), data);
217 gpio_free(GPIO_NR_TREO680_SD_DETECT_N);
218}
219
220static void treo680_mci_power(struct device *dev, unsigned int vdd)
221{
222 struct pxamci_platform_data *p_d = dev->platform_data;
223 gpio_set_value(GPIO_NR_TREO680_SD_POWER, p_d->ocr_mask & (1 << vdd));
224}
225
226static int treo680_mci_get_ro(struct device *dev)
227{
228 return gpio_get_value(GPIO_NR_TREO680_SD_READONLY);
229}
230
231static struct pxamci_platform_data treo680_mci_platform_data = { 156static struct pxamci_platform_data treo680_mci_platform_data = {
232 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 157 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
233 .setpower = treo680_mci_power, 158 .gpio_card_detect = GPIO_NR_TREO680_SD_DETECT_N,
234 .get_ro = treo680_mci_get_ro, 159 .gpio_card_ro = GPIO_NR_TREO680_SD_READONLY,
235 .init = treo680_mci_init, 160 .gpio_power = GPIO_NR_TREO680_SD_POWER,
236 .exit = treo680_mci_exit,
237}; 161};
238 162
239/****************************************************************************** 163/******************************************************************************
@@ -330,16 +254,9 @@ static int treo680_backlight_init(struct device *dev)
330 ret = gpio_direction_output(GPIO_NR_TREO680_BL_POWER, 0); 254 ret = gpio_direction_output(GPIO_NR_TREO680_BL_POWER, 0);
331 if (ret) 255 if (ret)
332 goto err2; 256 goto err2;
333 ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER");
334 if (ret)
335 goto err2;
336 ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0);
337 if (ret)
338 goto err3;
339 257
340 return 0; 258 return 0;
341err3: 259
342 gpio_free(GPIO_NR_TREO680_LCD_POWER);
343err2: 260err2:
344 gpio_free(GPIO_NR_TREO680_BL_POWER); 261 gpio_free(GPIO_NR_TREO680_BL_POWER);
345err: 262err:
@@ -355,7 +272,6 @@ static int treo680_backlight_notify(int brightness)
355static void treo680_backlight_exit(struct device *dev) 272static void treo680_backlight_exit(struct device *dev)
356{ 273{
357 gpio_free(GPIO_NR_TREO680_BL_POWER); 274 gpio_free(GPIO_NR_TREO680_BL_POWER);
358 gpio_free(GPIO_NR_TREO680_LCD_POWER);
359} 275}
360 276
361static struct platform_pwm_backlight_data treo680_backlight_data = { 277static struct platform_pwm_backlight_data treo680_backlight_data = {
@@ -379,44 +295,9 @@ static struct platform_device treo680_backlight = {
379/****************************************************************************** 295/******************************************************************************
380 * IrDA 296 * IrDA
381 ******************************************************************************/ 297 ******************************************************************************/
382static void treo680_transceiver_mode(struct device *dev, int mode)
383{
384 gpio_set_value(GPIO_NR_TREO680_IR_EN, mode & IR_OFF);
385 pxa2xx_transceiver_mode(dev, mode);
386}
387
388static int treo680_irda_startup(struct device *dev)
389{
390 int err;
391
392 err = gpio_request(GPIO_NR_TREO680_IR_EN, "Ir port disable");
393 if (err)
394 goto err1;
395
396 err = gpio_direction_output(GPIO_NR_TREO680_IR_EN, 1);
397 if (err)
398 goto err2;
399
400 return 0;
401
402err2:
403 dev_err(dev, "treo680_irda: cannot change IR gpio direction\n");
404 gpio_free(GPIO_NR_TREO680_IR_EN);
405err1:
406 dev_err(dev, "treo680_irda: cannot allocate IR gpio\n");
407 return err;
408}
409
410static void treo680_irda_shutdown(struct device *dev)
411{
412 gpio_free(GPIO_NR_TREO680_IR_EN);
413}
414
415static struct pxaficp_platform_data treo680_ficp_info = { 298static struct pxaficp_platform_data treo680_ficp_info = {
416 .transceiver_cap = IR_FIRMODE | IR_SIRMODE | IR_OFF, 299 .gpio_pwdown = GPIO_NR_TREO680_IR_EN,
417 .startup = treo680_irda_startup, 300 .transceiver_cap = IR_SIRMODE | IR_OFF,
418 .shutdown = treo680_irda_shutdown,
419 .transceiver_mode = treo680_transceiver_mode,
420}; 301};
421 302
422/****************************************************************************** 303/******************************************************************************
@@ -546,6 +427,11 @@ static struct pxafb_mode_info treo680_lcd_modes[] = {
546}, 427},
547}; 428};
548 429
430static void treo680_lcd_power(int on, struct fb_var_screeninfo *info)
431{
432 gpio_set_value(GPIO_NR_TREO680_BL_POWER, on);
433}
434
549static struct pxafb_mach_info treo680_lcd_screen = { 435static struct pxafb_mach_info treo680_lcd_screen = {
550 .modes = treo680_lcd_modes, 436 .modes = treo680_lcd_modes,
551 .num_modes = ARRAY_SIZE(treo680_lcd_modes), 437 .num_modes = ARRAY_SIZE(treo680_lcd_modes),
@@ -585,11 +471,32 @@ static void __init treo680_udc_init(void)
585 } 471 }
586} 472}
587 473
474static void __init treo680_lcd_power_init(void)
475{
476 int ret;
477
478 ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER");
479 if (ret) {
480 pr_err("Treo680: LCD power GPIO request failed!\n");
481 return;
482 }
483
484 ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0);
485 if (ret) {
486 pr_err("Treo680: setting LCD power GPIO direction failed!\n");
487 gpio_free(GPIO_NR_TREO680_LCD_POWER);
488 return;
489 }
490
491 treo680_lcd_screen.pxafb_lcd_power = treo680_lcd_power;
492}
493
588static void __init treo680_init(void) 494static void __init treo680_init(void)
589{ 495{
590 treo680_pm_init(); 496 treo680_pm_init();
591 pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config)); 497 pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config));
592 pxa_set_keypad_info(&treo680_keypad_platform_data); 498 pxa_set_keypad_info(&treo680_keypad_platform_data);
499 treo680_lcd_power_init();
593 set_pxa_fb_info(&treo680_lcd_screen); 500 set_pxa_fb_info(&treo680_lcd_screen);
594 pxa_set_mci_info(&treo680_mci_platform_data); 501 pxa_set_mci_info(&treo680_mci_platform_data);
595 treo680_udc_init(); 502 treo680_udc_init();
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 825f540176d2..3981e0356d12 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -367,6 +367,9 @@ static struct pxamci_platform_data trizeps4_mci_platform_data = {
367 .exit = trizeps4_mci_exit, 367 .exit = trizeps4_mci_exit,
368 .get_ro = NULL, /* write-protection not supported */ 368 .get_ro = NULL, /* write-protection not supported */
369 .setpower = NULL, /* power-switching not supported */ 369 .setpower = NULL, /* power-switching not supported */
370 .gpio_card_detect = -1,
371 .gpio_card_ro = -1,
372 .gpio_power = -1,
370}; 373};
371 374
372/**************************************************************************** 375/****************************************************************************
@@ -412,6 +415,7 @@ static void trizeps4_irda_transceiver_mode(struct device *dev, int mode)
412} 415}
413 416
414static struct pxaficp_platform_data trizeps4_ficp_platform_data = { 417static struct pxaficp_platform_data trizeps4_ficp_platform_data = {
418 .gpio_pwdown = -1,
415 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF, 419 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
416 .transceiver_mode = trizeps4_irda_transceiver_mode, 420 .transceiver_mode = trizeps4_irda_transceiver_mode,
417 .startup = trizeps4_irda_startup, 421 .startup = trizeps4_irda_startup,
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c
new file mode 100644
index 000000000000..3fd79cbb36c8
--- /dev/null
+++ b/arch/arm/mach-pxa/xcep.c
@@ -0,0 +1,187 @@
1/* linux/arch/arm/mach-pxa/xcep.c
2 *
3 * Support for the Iskratel Electronics XCEP platform as used in
4 * the Libera instruments from Instrumentation Technologies.
5 *
6 * Author: Ales Bardorfer <ales@i-tech.si>
7 * Contributions by: Abbott, MG (Michael) <michael.abbott@diamond.ac.uk>
8 * Contributions by: Matej Kenda <matej.kenda@i-tech.si>
9 * Created: June 2006
10 * Copyright: (C) 2006-2009 Instrumentation Technologies
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 */
16
17#include <linux/platform_device.h>
18#include <linux/i2c.h>
19#include <linux/smc91x.h>
20#include <linux/mtd/mtd.h>
21#include <linux/mtd/partitions.h>
22#include <linux/mtd/physmap.h>
23
24#include <asm/mach-types.h>
25#include <asm/mach/arch.h>
26#include <asm/mach/irq.h>
27#include <asm/mach/map.h>
28
29#include <plat/i2c.h>
30
31#include <mach/hardware.h>
32#include <mach/pxa2xx-regs.h>
33#include <mach/mfp-pxa25x.h>
34
35#include "generic.h"
36
37#define XCEP_ETH_PHYS (PXA_CS3_PHYS + 0x00000300)
38#define XCEP_ETH_PHYS_END (PXA_CS3_PHYS + 0x000fffff)
39#define XCEP_ETH_ATTR (PXA_CS3_PHYS + 0x02000000)
40#define XCEP_ETH_ATTR_END (PXA_CS3_PHYS + 0x020fffff)
41#define XCEP_ETH_IRQ IRQ_GPIO0
42
43/* XCEP CPLD base */
44#define XCEP_CPLD_BASE 0xf0000000
45
46
47/* Flash partitions. */
48
49static struct mtd_partition xcep_partitions[] = {
50 {
51 .name = "Bootloader",
52 .size = 0x00040000,
53 .offset = 0,
54 .mask_flags = MTD_WRITEABLE
55 }, {
56 .name = "Bootloader ENV",
57 .size = 0x00040000,
58 .offset = 0x00040000,
59 .mask_flags = MTD_WRITEABLE
60 }, {
61 .name = "Kernel",
62 .size = 0x00100000,
63 .offset = 0x00080000,
64 }, {
65 .name = "Rescue fs",
66 .size = 0x00280000,
67 .offset = 0x00180000,
68 }, {
69 .name = "Filesystem",
70 .size = MTDPART_SIZ_FULL,
71 .offset = 0x00400000
72 }
73};
74
75static struct physmap_flash_data xcep_flash_data[] = {
76 {
77 .width = 4, /* bankwidth in bytes */
78 .parts = xcep_partitions,
79 .nr_parts = ARRAY_SIZE(xcep_partitions)
80 }
81};
82
83static struct resource flash_resource = {
84 .start = PXA_CS0_PHYS,
85 .end = PXA_CS0_PHYS + SZ_32M - 1,
86 .flags = IORESOURCE_MEM,
87};
88
89static struct platform_device flash_device = {
90 .name = "physmap-flash",
91 .id = 0,
92 .dev = {
93 .platform_data = xcep_flash_data,
94 },
95 .resource = &flash_resource,
96 .num_resources = 1,
97};
98
99
100
101/* SMC LAN91C111 network controller. */
102
103static struct resource smc91x_resources[] = {
104 [0] = {
105 .name = "smc91x-regs",
106 .start = XCEP_ETH_PHYS,
107 .end = XCEP_ETH_PHYS_END,
108 .flags = IORESOURCE_MEM,
109 },
110 [1] = {
111 .start = XCEP_ETH_IRQ,
112 .end = XCEP_ETH_IRQ,
113 .flags = IORESOURCE_IRQ,
114 },
115 [2] = {
116 .name = "smc91x-attrib",
117 .start = XCEP_ETH_ATTR,
118 .end = XCEP_ETH_ATTR_END,
119 .flags = IORESOURCE_MEM,
120 },
121};
122
123static struct smc91x_platdata xcep_smc91x_info = {
124 .flags = SMC91X_USE_32BIT | SMC91X_NOWAIT | SMC91X_USE_DMA,
125};
126
127static struct platform_device smc91x_device = {
128 .name = "smc91x",
129 .id = -1,
130 .num_resources = ARRAY_SIZE(smc91x_resources),
131 .resource = smc91x_resources,
132 .dev = {
133 .platform_data = &xcep_smc91x_info,
134 },
135};
136
137
138static struct platform_device *devices[] __initdata = {
139 &flash_device,
140 &smc91x_device,
141};
142
143
144/* We have to state that there are HWMON devices on the I2C bus on XCEP.
145 * Drivers for HWMON verify capabilities of the adapter when loading and
146 * refuse to attach if the adapter doesn't support HWMON class of devices.
147 * See also Documentation/i2c/porting-clients. */
148static struct i2c_pxa_platform_data xcep_i2c_platform_data = {
149 .class = I2C_CLASS_HWMON
150};
151
152
153static mfp_cfg_t xcep_pin_config[] __initdata = {
154 GPIO79_nCS_3, /* SMC 91C111 chip select. */
155 GPIO80_nCS_4, /* CPLD chip select. */
156 /* SSP communication to MSP430 */
157 GPIO23_SSP1_SCLK,
158 GPIO24_SSP1_SFRM,
159 GPIO25_SSP1_TXD,
160 GPIO26_SSP1_RXD,
161 GPIO27_SSP1_EXTCLK
162};
163
164static void __init xcep_init(void)
165{
166 pxa2xx_mfp_config(ARRAY_AND_SIZE(xcep_pin_config));
167
168 /* See Intel XScale Developer's Guide for details */
169 /* Set RDF and RDN to appropriate values (chip select 3 (smc91x)) */
170 MSC1 = (MSC1 & 0xffff) | 0xD5540000;
171 /* Set RDF and RDN to appropriate values (chip select 5 (fpga)) */
172 MSC2 = (MSC2 & 0xffff) | 0x72A00000;
173
174 platform_add_devices(ARRAY_AND_SIZE(devices));
175 pxa_set_i2c_info(&xcep_i2c_platform_data);
176}
177
178MACHINE_START(XCEP, "Iskratel XCEP")
179 .phys_io = 0x40000000,
180 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
181 .boot_params = 0xa0000100,
182 .init_machine = xcep_init,
183 .map_io = pxa_map_io,
184 .init_irq = pxa25x_init_irq,
185 .timer = &pxa_timer,
186MACHINE_END
187
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 218d2001f1df..09784d3954e4 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -290,6 +290,9 @@ static struct pxamci_platform_data zylonite_mci_platform_data = {
290 .init = zylonite_mci_init, 290 .init = zylonite_mci_init,
291 .exit = zylonite_mci_exit, 291 .exit = zylonite_mci_exit,
292 .get_ro = zylonite_mci_ro, 292 .get_ro = zylonite_mci_ro,
293 .gpio_card_detect = -1,
294 .gpio_card_ro = -1,
295 .gpio_power = -1,
293}; 296};
294 297
295static struct pxamci_platform_data zylonite_mci2_platform_data = { 298static struct pxamci_platform_data zylonite_mci2_platform_data = {
diff --git a/arch/arm/plat-pxa/dma.c b/arch/arm/plat-pxa/dma.c
index 70aeee407f7d..2975798d411f 100644
--- a/arch/arm/plat-pxa/dma.c
+++ b/arch/arm/plat-pxa/dma.c
@@ -17,22 +17,266 @@
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/errno.h> 19#include <linux/errno.h>
20#include <linux/dma-mapping.h>
20 21
21#include <asm/system.h> 22#include <asm/system.h>
22#include <asm/irq.h> 23#include <asm/irq.h>
24#include <asm/memory.h>
23#include <mach/hardware.h> 25#include <mach/hardware.h>
24#include <mach/dma.h> 26#include <mach/dma.h>
25 27
28#define DMA_DEBUG_NAME "pxa_dma"
29#define DMA_MAX_REQUESTERS 64
30
26struct dma_channel { 31struct dma_channel {
27 char *name; 32 char *name;
28 pxa_dma_prio prio; 33 pxa_dma_prio prio;
29 void (*irq_handler)(int, void *); 34 void (*irq_handler)(int, void *);
30 void *data; 35 void *data;
36 spinlock_t lock;
31}; 37};
32 38
33static struct dma_channel *dma_channels; 39static struct dma_channel *dma_channels;
34static int num_dma_channels; 40static int num_dma_channels;
35 41
42/*
43 * Debug fs
44 */
45#ifdef CONFIG_DEBUG_FS
46#include <linux/debugfs.h>
47#include <linux/uaccess.h>
48#include <linux/seq_file.h>
49
50static struct dentry *dbgfs_root, *dbgfs_state, **dbgfs_chan;
51
52static int dbg_show_requester_chan(struct seq_file *s, void *p)
53{
54 int pos = 0;
55 int chan = (int)s->private;
56 int i;
57 u32 drcmr;
58
59 pos += seq_printf(s, "DMA channel %d requesters list :\n", chan);
60 for (i = 0; i < DMA_MAX_REQUESTERS; i++) {
61 drcmr = DRCMR(i);
62 if ((drcmr & DRCMR_CHLNUM) == chan)
63 pos += seq_printf(s, "\tRequester %d (MAPVLD=%d)\n", i,
64 !!(drcmr & DRCMR_MAPVLD));
65 }
66 return pos;
67}
68
69static inline int dbg_burst_from_dcmd(u32 dcmd)
70{
71 int burst = (dcmd >> 16) & 0x3;
72
73 return burst ? 4 << burst : 0;
74}
75
76static int is_phys_valid(unsigned long addr)
77{
78 return pfn_valid(__phys_to_pfn(addr));
79}
80
81#define DCSR_STR(flag) (dcsr & DCSR_##flag ? #flag" " : "")
82#define DCMD_STR(flag) (dcmd & DCMD_##flag ? #flag" " : "")
83
84static int dbg_show_descriptors(struct seq_file *s, void *p)
85{
86 int pos = 0;
87 int chan = (int)s->private;
88 int i, max_show = 20, burst, width;
89 u32 dcmd;
90 unsigned long phys_desc;
91 struct pxa_dma_desc *desc;
92 unsigned long flags;
93
94 spin_lock_irqsave(&dma_channels[chan].lock, flags);
95 phys_desc = DDADR(chan);
96
97 pos += seq_printf(s, "DMA channel %d descriptors :\n", chan);
98 pos += seq_printf(s, "[%03d] First descriptor unknown\n", 0);
99 for (i = 1; i < max_show && is_phys_valid(phys_desc); i++) {
100 desc = phys_to_virt(phys_desc);
101 dcmd = desc->dcmd;
102 burst = dbg_burst_from_dcmd(dcmd);
103 width = (1 << ((dcmd >> 14) & 0x3)) >> 1;
104
105 pos += seq_printf(s, "[%03d] Desc at %08lx(virt %p)\n",
106 i, phys_desc, desc);
107 pos += seq_printf(s, "\tDDADR = %08x\n", desc->ddadr);
108 pos += seq_printf(s, "\tDSADR = %08x\n", desc->dsadr);
109 pos += seq_printf(s, "\tDTADR = %08x\n", desc->dtadr);
110 pos += seq_printf(s, "\tDCMD = %08x (%s%s%s%s%s%s%sburst=%d"
111 " width=%d len=%d)\n",
112 dcmd,
113 DCMD_STR(INCSRCADDR), DCMD_STR(INCTRGADDR),
114 DCMD_STR(FLOWSRC), DCMD_STR(FLOWTRG),
115 DCMD_STR(STARTIRQEN), DCMD_STR(ENDIRQEN),
116 DCMD_STR(ENDIAN), burst, width,
117 dcmd & DCMD_LENGTH);
118 phys_desc = desc->ddadr;
119 }
120 if (i == max_show)
121 pos += seq_printf(s, "[%03d] Desc at %08lx ... max display reached\n",
122 i, phys_desc);
123 else
124 pos += seq_printf(s, "[%03d] Desc at %08lx is %s\n",
125 i, phys_desc, phys_desc == DDADR_STOP ?
126 "DDADR_STOP" : "invalid");
127
128 spin_unlock_irqrestore(&dma_channels[chan].lock, flags);
129 return pos;
130}
131
132static int dbg_show_chan_state(struct seq_file *s, void *p)
133{
134 int pos = 0;
135 int chan = (int)s->private;
136 u32 dcsr, dcmd;
137 int burst, width;
138 static char *str_prio[] = { "high", "normal", "low" };
139
140 dcsr = DCSR(chan);
141 dcmd = DCMD(chan);
142 burst = dbg_burst_from_dcmd(dcmd);
143 width = (1 << ((dcmd >> 14) & 0x3)) >> 1;
144
145 pos += seq_printf(s, "DMA channel %d\n", chan);
146 pos += seq_printf(s, "\tPriority : %s\n",
147 str_prio[dma_channels[chan].prio]);
148 pos += seq_printf(s, "\tUnaligned transfer bit: %s\n",
149 DALGN & (1 << chan) ? "yes" : "no");
150 pos += seq_printf(s, "\tDCSR = %08x (%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s)\n",
151 dcsr, DCSR_STR(RUN), DCSR_STR(NODESC),
152 DCSR_STR(STOPIRQEN), DCSR_STR(EORIRQEN),
153 DCSR_STR(EORJMPEN), DCSR_STR(EORSTOPEN),
154 DCSR_STR(SETCMPST), DCSR_STR(CLRCMPST),
155 DCSR_STR(CMPST), DCSR_STR(EORINTR), DCSR_STR(REQPEND),
156 DCSR_STR(STOPSTATE), DCSR_STR(ENDINTR),
157 DCSR_STR(STARTINTR), DCSR_STR(BUSERR));
158
159 pos += seq_printf(s, "\tDCMD = %08x (%s%s%s%s%s%s%sburst=%d width=%d"
160 " len=%d)\n",
161 dcmd,
162 DCMD_STR(INCSRCADDR), DCMD_STR(INCTRGADDR),
163 DCMD_STR(FLOWSRC), DCMD_STR(FLOWTRG),
164 DCMD_STR(STARTIRQEN), DCMD_STR(ENDIRQEN),
165 DCMD_STR(ENDIAN), burst, width, dcmd & DCMD_LENGTH);
166 pos += seq_printf(s, "\tDSADR = %08x\n", DSADR(chan));
167 pos += seq_printf(s, "\tDTADR = %08x\n", DTADR(chan));
168 pos += seq_printf(s, "\tDDADR = %08x\n", DDADR(chan));
169 return pos;
170}
171
172static int dbg_show_state(struct seq_file *s, void *p)
173{
174 int pos = 0;
175
176 /* basic device status */
177 pos += seq_printf(s, "DMA engine status\n");
178 pos += seq_printf(s, "\tChannel number: %d\n", num_dma_channels);
179
180 return pos;
181}
182
183#define DBGFS_FUNC_DECL(name) \
184static int dbg_open_##name(struct inode *inode, struct file *file) \
185{ \
186 return single_open(file, dbg_show_##name, inode->i_private); \
187} \
188static const struct file_operations dbg_fops_##name = { \
189 .owner = THIS_MODULE, \
190 .open = dbg_open_##name, \
191 .llseek = seq_lseek, \
192 .read = seq_read, \
193 .release = single_release, \
194}
195
196DBGFS_FUNC_DECL(state);
197DBGFS_FUNC_DECL(chan_state);
198DBGFS_FUNC_DECL(descriptors);
199DBGFS_FUNC_DECL(requester_chan);
200
201static struct dentry *pxa_dma_dbg_alloc_chan(int ch, struct dentry *chandir)
202{
203 char chan_name[11];
204 struct dentry *chan, *chan_state = NULL, *chan_descr = NULL;
205 struct dentry *chan_reqs = NULL;
206 void *dt;
207
208 scnprintf(chan_name, sizeof(chan_name), "%d", ch);
209 chan = debugfs_create_dir(chan_name, chandir);
210 dt = (void *)ch;
211
212 if (chan)
213 chan_state = debugfs_create_file("state", 0400, chan, dt,
214 &dbg_fops_chan_state);
215 if (chan_state)
216 chan_descr = debugfs_create_file("descriptors", 0400, chan, dt,
217 &dbg_fops_descriptors);
218 if (chan_descr)
219 chan_reqs = debugfs_create_file("requesters", 0400, chan, dt,
220 &dbg_fops_requester_chan);
221 if (!chan_reqs)
222 goto err_state;
223
224 return chan;
225
226err_state:
227 debugfs_remove_recursive(chan);
228 return NULL;
229}
230
231static void pxa_dma_init_debugfs(void)
232{
233 int i;
234 struct dentry *chandir;
235
236 dbgfs_root = debugfs_create_dir(DMA_DEBUG_NAME, NULL);
237 if (IS_ERR(dbgfs_root) || !dbgfs_root)
238 goto err_root;
239
240 dbgfs_state = debugfs_create_file("state", 0400, dbgfs_root, NULL,
241 &dbg_fops_state);
242 if (!dbgfs_state)
243 goto err_state;
244
245 dbgfs_chan = kmalloc(sizeof(*dbgfs_state) * num_dma_channels,
246 GFP_KERNEL);
247 if (!dbgfs_state)
248 goto err_alloc;
249
250 chandir = debugfs_create_dir("channels", dbgfs_root);
251 if (!chandir)
252 goto err_chandir;
253
254 for (i = 0; i < num_dma_channels; i++) {
255 dbgfs_chan[i] = pxa_dma_dbg_alloc_chan(i, chandir);
256 if (!dbgfs_chan[i])
257 goto err_chans;
258 }
259
260 return;
261err_chans:
262err_chandir:
263 kfree(dbgfs_chan);
264err_alloc:
265err_state:
266 debugfs_remove_recursive(dbgfs_root);
267err_root:
268 pr_err("pxa_dma: debugfs is not available\n");
269}
270
271static void __exit pxa_dma_cleanup_debugfs(void)
272{
273 debugfs_remove_recursive(dbgfs_root);
274}
275#else
276static inline void pxa_dma_init_debugfs(void) {}
277static inline void pxa_dma_cleanup_debugfs(void) {}
278#endif
279
36int pxa_request_dma (char *name, pxa_dma_prio prio, 280int pxa_request_dma (char *name, pxa_dma_prio prio,
37 void (*irq_handler)(int, void *), 281 void (*irq_handler)(int, void *),
38 void *data) 282 void *data)
@@ -71,6 +315,7 @@ int pxa_request_dma (char *name, pxa_dma_prio prio,
71 local_irq_restore(flags); 315 local_irq_restore(flags);
72 return i; 316 return i;
73} 317}
318EXPORT_SYMBOL(pxa_request_dma);
74 319
75void pxa_free_dma (int dma_ch) 320void pxa_free_dma (int dma_ch)
76{ 321{
@@ -88,24 +333,26 @@ void pxa_free_dma (int dma_ch)
88 dma_channels[dma_ch].name = NULL; 333 dma_channels[dma_ch].name = NULL;
89 local_irq_restore(flags); 334 local_irq_restore(flags);
90} 335}
336EXPORT_SYMBOL(pxa_free_dma);
91 337
92static irqreturn_t dma_irq_handler(int irq, void *dev_id) 338static irqreturn_t dma_irq_handler(int irq, void *dev_id)
93{ 339{
94 int i, dint = DINT; 340 int i, dint = DINT;
341 struct dma_channel *channel;
95 342
96 for (i = 0; i < num_dma_channels; i++) { 343 while (dint) {
97 if (dint & (1 << i)) { 344 i = __ffs(dint);
98 struct dma_channel *channel = &dma_channels[i]; 345 dint &= (dint - 1);
99 if (channel->name && channel->irq_handler) { 346 channel = &dma_channels[i];
100 channel->irq_handler(i, channel->data); 347 if (channel->name && channel->irq_handler) {
101 } else { 348 channel->irq_handler(i, channel->data);
102 /* 349 } else {
103 * IRQ for an unregistered DMA channel: 350 /*
104 * let's clear the interrupts and disable it. 351 * IRQ for an unregistered DMA channel:
105 */ 352 * let's clear the interrupts and disable it.
106 printk (KERN_WARNING "spurious IRQ for DMA channel %d\n", i); 353 */
107 DCSR(i) = DCSR_STARTINTR|DCSR_ENDINTR|DCSR_BUSERR; 354 printk (KERN_WARNING "spurious IRQ for DMA channel %d\n", i);
108 } 355 DCSR(i) = DCSR_STARTINTR|DCSR_ENDINTR|DCSR_BUSERR;
109 } 356 }
110 } 357 }
111 return IRQ_HANDLED; 358 return IRQ_HANDLED;
@@ -127,6 +374,7 @@ int __init pxa_init_dma(int irq, int num_ch)
127 for (i = 0; i < num_ch; i++) { 374 for (i = 0; i < num_ch; i++) {
128 DCSR(i) = 0; 375 DCSR(i) = 0;
129 dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW); 376 dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
377 spin_lock_init(&dma_channels[i].lock);
130 } 378 }
131 379
132 ret = request_irq(irq, dma_irq_handler, IRQF_DISABLED, "DMA", NULL); 380 ret = request_irq(irq, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
@@ -135,10 +383,9 @@ int __init pxa_init_dma(int irq, int num_ch)
135 kfree(dma_channels); 383 kfree(dma_channels);
136 return ret; 384 return ret;
137 } 385 }
138
139 num_dma_channels = num_ch; 386 num_dma_channels = num_ch;
387
388 pxa_dma_init_debugfs();
389
140 return 0; 390 return 0;
141} 391}
142
143EXPORT_SYMBOL(pxa_request_dma);
144EXPORT_SYMBOL(pxa_free_dma);
diff --git a/arch/arm/plat-pxa/include/plat/mfp.h b/arch/arm/plat-pxa/include/plat/mfp.h
index 64019464c8db..22086e696e8e 100644
--- a/arch/arm/plat-pxa/include/plat/mfp.h
+++ b/arch/arm/plat-pxa/include/plat/mfp.h
@@ -150,6 +150,74 @@ enum {
150 MFP_PIN_GPIO125, 150 MFP_PIN_GPIO125,
151 MFP_PIN_GPIO126, 151 MFP_PIN_GPIO126,
152 MFP_PIN_GPIO127, 152 MFP_PIN_GPIO127,
153
154 MFP_PIN_GPIO128,
155 MFP_PIN_GPIO129,
156 MFP_PIN_GPIO130,
157 MFP_PIN_GPIO131,
158 MFP_PIN_GPIO132,
159 MFP_PIN_GPIO133,
160 MFP_PIN_GPIO134,
161 MFP_PIN_GPIO135,
162 MFP_PIN_GPIO136,
163 MFP_PIN_GPIO137,
164 MFP_PIN_GPIO138,
165 MFP_PIN_GPIO139,
166 MFP_PIN_GPIO140,
167 MFP_PIN_GPIO141,
168 MFP_PIN_GPIO142,
169 MFP_PIN_GPIO143,
170 MFP_PIN_GPIO144,
171 MFP_PIN_GPIO145,
172 MFP_PIN_GPIO146,
173 MFP_PIN_GPIO147,
174 MFP_PIN_GPIO148,
175 MFP_PIN_GPIO149,
176 MFP_PIN_GPIO150,
177 MFP_PIN_GPIO151,
178 MFP_PIN_GPIO152,
179 MFP_PIN_GPIO153,
180 MFP_PIN_GPIO154,
181 MFP_PIN_GPIO155,
182 MFP_PIN_GPIO156,
183 MFP_PIN_GPIO157,
184 MFP_PIN_GPIO158,
185 MFP_PIN_GPIO159,
186 MFP_PIN_GPIO160,
187 MFP_PIN_GPIO161,
188 MFP_PIN_GPIO162,
189 MFP_PIN_GPIO163,
190 MFP_PIN_GPIO164,
191 MFP_PIN_GPIO165,
192 MFP_PIN_GPIO166,
193 MFP_PIN_GPIO167,
194 MFP_PIN_GPIO168,
195 MFP_PIN_GPIO169,
196 MFP_PIN_GPIO170,
197 MFP_PIN_GPIO171,
198 MFP_PIN_GPIO172,
199 MFP_PIN_GPIO173,
200 MFP_PIN_GPIO174,
201 MFP_PIN_GPIO175,
202 MFP_PIN_GPIO176,
203 MFP_PIN_GPIO177,
204 MFP_PIN_GPIO178,
205 MFP_PIN_GPIO179,
206 MFP_PIN_GPIO180,
207 MFP_PIN_GPIO181,
208 MFP_PIN_GPIO182,
209 MFP_PIN_GPIO183,
210 MFP_PIN_GPIO184,
211 MFP_PIN_GPIO185,
212 MFP_PIN_GPIO186,
213 MFP_PIN_GPIO187,
214 MFP_PIN_GPIO188,
215 MFP_PIN_GPIO189,
216 MFP_PIN_GPIO190,
217 MFP_PIN_GPIO191,
218
219 MFP_PIN_GPIO255 = 255,
220
153 MFP_PIN_GPIO0_2, 221 MFP_PIN_GPIO0_2,
154 MFP_PIN_GPIO1_2, 222 MFP_PIN_GPIO1_2,
155 MFP_PIN_GPIO2_2, 223 MFP_PIN_GPIO2_2,
@@ -325,8 +393,9 @@ typedef unsigned long mfp_cfg_t;
325#define MFP_PULL_LOW (0x1 << 21) 393#define MFP_PULL_LOW (0x1 << 21)
326#define MFP_PULL_HIGH (0x2 << 21) 394#define MFP_PULL_HIGH (0x2 << 21)
327#define MFP_PULL_BOTH (0x3 << 21) 395#define MFP_PULL_BOTH (0x3 << 21)
328#define MFP_PULL_MASK (0x3 << 21) 396#define MFP_PULL_FLOAT (0x4 << 21)
329#define MFP_PULL(x) (((x) >> 21) & 0x3) 397#define MFP_PULL_MASK (0x7 << 21)
398#define MFP_PULL(x) (((x) >> 21) & 0x7)
330 399
331#define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\ 400#define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
332 MFP_LPM_EDGE_NONE | MFP_PULL_NONE) 401 MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
diff --git a/arch/arm/plat-pxa/mfp.c b/arch/arm/plat-pxa/mfp.c
index e716c622a17c..9405d0379c85 100644
--- a/arch/arm/plat-pxa/mfp.c
+++ b/arch/arm/plat-pxa/mfp.c
@@ -77,11 +77,13 @@
77 * MFPR_PULL_LOW 1 0 1 77 * MFPR_PULL_LOW 1 0 1
78 * MFPR_PULL_HIGH 1 1 0 78 * MFPR_PULL_HIGH 1 1 0
79 * MFPR_PULL_BOTH 1 1 1 79 * MFPR_PULL_BOTH 1 1 1
80 * MFPR_PULL_FLOAT 1 0 0
80 */ 81 */
81#define MFPR_PULL_NONE (0) 82#define MFPR_PULL_NONE (0)
82#define MFPR_PULL_LOW (MFPR_PULL_SEL | MFPR_PULLDOWN_EN) 83#define MFPR_PULL_LOW (MFPR_PULL_SEL | MFPR_PULLDOWN_EN)
83#define MFPR_PULL_BOTH (MFPR_PULL_LOW | MFPR_PULLUP_EN) 84#define MFPR_PULL_BOTH (MFPR_PULL_LOW | MFPR_PULLUP_EN)
84#define MFPR_PULL_HIGH (MFPR_PULL_SEL | MFPR_PULLUP_EN) 85#define MFPR_PULL_HIGH (MFPR_PULL_SEL | MFPR_PULLUP_EN)
86#define MFPR_PULL_FLOAT (MFPR_PULL_SEL)
85 87
86/* mfp_spin_lock is used to ensure that MFP register configuration 88/* mfp_spin_lock is used to ensure that MFP register configuration
87 * (most likely a read-modify-write operation) is atomic, and that 89 * (most likely a read-modify-write operation) is atomic, and that
@@ -116,6 +118,7 @@ static const unsigned long mfpr_pull[] = {
116 MFPR_PULL_LOW, 118 MFPR_PULL_LOW,
117 MFPR_PULL_HIGH, 119 MFPR_PULL_HIGH,
118 MFPR_PULL_BOTH, 120 MFPR_PULL_BOTH,
121 MFPR_PULL_FLOAT,
119}; 122};
120 123
121/* mapping of MFP_LPM_EDGE_* definitions to MFPR_EDGE_* register bits */ 124/* mapping of MFP_LPM_EDGE_* definitions to MFPR_EDGE_* register bits */
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 8206442fbabd..834a03414900 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -460,8 +460,8 @@ config I2C_PNX
460 will be called i2c-pnx. 460 will be called i2c-pnx.
461 461
462config I2C_PXA 462config I2C_PXA
463 tristate "Intel PXA2XX I2C adapter (EXPERIMENTAL)" 463 tristate "Intel PXA2XX I2C adapter"
464 depends on EXPERIMENTAL && ARCH_PXA 464 depends on ARCH_PXA || ARCH_MMP
465 help 465 help
466 If you have devices in the PXA I2C bus, say yes to this option. 466 If you have devices in the PXA I2C bus, say yes to this option.
467 This driver can also be built as a module. If so, the module 467 This driver can also be built as a module. If so, the module
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index e55ac792d68c..5e0b1529964d 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -28,6 +28,7 @@
28#include <linux/mmc/host.h> 28#include <linux/mmc/host.h>
29#include <linux/io.h> 29#include <linux/io.h>
30#include <linux/regulator/consumer.h> 30#include <linux/regulator/consumer.h>
31#include <linux/gpio.h>
31 32
32#include <asm/sizes.h> 33#include <asm/sizes.h>
33 34
@@ -96,10 +97,18 @@ static inline void pxamci_init_ocr(struct pxamci_host *host)
96 97
97static inline void pxamci_set_power(struct pxamci_host *host, unsigned int vdd) 98static inline void pxamci_set_power(struct pxamci_host *host, unsigned int vdd)
98{ 99{
100 int on;
101
99#ifdef CONFIG_REGULATOR 102#ifdef CONFIG_REGULATOR
100 if (host->vcc) 103 if (host->vcc)
101 mmc_regulator_set_ocr(host->vcc, vdd); 104 mmc_regulator_set_ocr(host->vcc, vdd);
102#endif 105#endif
106 if (!host->vcc && host->pdata &&
107 gpio_is_valid(host->pdata->gpio_power)) {
108 on = ((1 << vdd) & host->pdata->ocr_mask);
109 gpio_set_value(host->pdata->gpio_power,
110 !!on ^ host->pdata->gpio_power_invert);
111 }
103 if (!host->vcc && host->pdata && host->pdata->setpower) 112 if (!host->vcc && host->pdata && host->pdata->setpower)
104 host->pdata->setpower(mmc_dev(host->mmc), vdd); 113 host->pdata->setpower(mmc_dev(host->mmc), vdd);
105} 114}
@@ -421,6 +430,12 @@ static int pxamci_get_ro(struct mmc_host *mmc)
421{ 430{
422 struct pxamci_host *host = mmc_priv(mmc); 431 struct pxamci_host *host = mmc_priv(mmc);
423 432
433 if (host->pdata && gpio_is_valid(host->pdata->gpio_card_ro)) {
434 if (host->pdata->gpio_card_ro_invert)
435 return !gpio_get_value(host->pdata->gpio_card_ro);
436 else
437 return gpio_get_value(host->pdata->gpio_card_ro);
438 }
424 if (host->pdata && host->pdata->get_ro) 439 if (host->pdata && host->pdata->get_ro)
425 return !!host->pdata->get_ro(mmc_dev(mmc)); 440 return !!host->pdata->get_ro(mmc_dev(mmc));
426 /* 441 /*
@@ -534,7 +549,7 @@ static int pxamci_probe(struct platform_device *pdev)
534 struct mmc_host *mmc; 549 struct mmc_host *mmc;
535 struct pxamci_host *host = NULL; 550 struct pxamci_host *host = NULL;
536 struct resource *r, *dmarx, *dmatx; 551 struct resource *r, *dmarx, *dmatx;
537 int ret, irq; 552 int ret, irq, gpio_cd = -1, gpio_ro = -1, gpio_power = -1;
538 553
539 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 554 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
540 irq = platform_get_irq(pdev, 0); 555 irq = platform_get_irq(pdev, 0);
@@ -661,13 +676,63 @@ static int pxamci_probe(struct platform_device *pdev)
661 } 676 }
662 host->dma_drcmrtx = dmatx->start; 677 host->dma_drcmrtx = dmatx->start;
663 678
679 if (host->pdata) {
680 gpio_cd = host->pdata->gpio_card_detect;
681 gpio_ro = host->pdata->gpio_card_ro;
682 gpio_power = host->pdata->gpio_power;
683 }
684 if (gpio_is_valid(gpio_power)) {
685 ret = gpio_request(gpio_power, "mmc card power");
686 if (ret) {
687 dev_err(&pdev->dev, "Failed requesting gpio_power %d\n", gpio_power);
688 goto out;
689 }
690 gpio_direction_output(gpio_power,
691 host->pdata->gpio_power_invert);
692 }
693 if (gpio_is_valid(gpio_ro)) {
694 ret = gpio_request(gpio_ro, "mmc card read only");
695 if (ret) {
696 dev_err(&pdev->dev, "Failed requesting gpio_ro %d\n", gpio_power);
697 goto err_gpio_ro;
698 }
699 gpio_direction_input(gpio_ro);
700 }
701 if (gpio_is_valid(gpio_cd)) {
702 ret = gpio_request(gpio_cd, "mmc card detect");
703 if (ret) {
704 dev_err(&pdev->dev, "Failed requesting gpio_cd %d\n", gpio_power);
705 goto err_gpio_cd;
706 }
707 gpio_direction_input(gpio_cd);
708
709 ret = request_irq(gpio_to_irq(gpio_cd), pxamci_detect_irq,
710 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
711 "mmc card detect", mmc);
712 if (ret) {
713 dev_err(&pdev->dev, "failed to request card detect IRQ\n");
714 goto err_request_irq;
715 }
716 }
717
664 if (host->pdata && host->pdata->init) 718 if (host->pdata && host->pdata->init)
665 host->pdata->init(&pdev->dev, pxamci_detect_irq, mmc); 719 host->pdata->init(&pdev->dev, pxamci_detect_irq, mmc);
666 720
721 if (gpio_is_valid(gpio_power) && host->pdata->setpower)
722 dev_warn(&pdev->dev, "gpio_power and setpower() both defined\n");
723 if (gpio_is_valid(gpio_ro) && host->pdata->get_ro)
724 dev_warn(&pdev->dev, "gpio_ro and get_ro() both defined\n");
725
667 mmc_add_host(mmc); 726 mmc_add_host(mmc);
668 727
669 return 0; 728 return 0;
670 729
730err_request_irq:
731 gpio_free(gpio_cd);
732err_gpio_cd:
733 gpio_free(gpio_ro);
734err_gpio_ro:
735 gpio_free(gpio_power);
671 out: 736 out:
672 if (host) { 737 if (host) {
673 if (host->dma >= 0) 738 if (host->dma >= 0)
@@ -688,12 +753,26 @@ static int pxamci_probe(struct platform_device *pdev)
688static int pxamci_remove(struct platform_device *pdev) 753static int pxamci_remove(struct platform_device *pdev)
689{ 754{
690 struct mmc_host *mmc = platform_get_drvdata(pdev); 755 struct mmc_host *mmc = platform_get_drvdata(pdev);
756 int gpio_cd = -1, gpio_ro = -1, gpio_power = -1;
691 757
692 platform_set_drvdata(pdev, NULL); 758 platform_set_drvdata(pdev, NULL);
693 759
694 if (mmc) { 760 if (mmc) {
695 struct pxamci_host *host = mmc_priv(mmc); 761 struct pxamci_host *host = mmc_priv(mmc);
696 762
763 if (host->pdata) {
764 gpio_cd = host->pdata->gpio_card_detect;
765 gpio_ro = host->pdata->gpio_card_ro;
766 gpio_power = host->pdata->gpio_power;
767 }
768 if (gpio_is_valid(gpio_cd)) {
769 free_irq(gpio_to_irq(gpio_cd), mmc);
770 gpio_free(gpio_cd);
771 }
772 if (gpio_is_valid(gpio_ro))
773 gpio_free(gpio_ro);
774 if (gpio_is_valid(gpio_power))
775 gpio_free(gpio_power);
697 if (host->vcc) 776 if (host->vcc)
698 regulator_put(host->vcc); 777 regulator_put(host->vcc);
699 778
@@ -725,20 +804,20 @@ static int pxamci_remove(struct platform_device *pdev)
725} 804}
726 805
727#ifdef CONFIG_PM 806#ifdef CONFIG_PM
728static int pxamci_suspend(struct platform_device *dev, pm_message_t state) 807static int pxamci_suspend(struct device *dev)
729{ 808{
730 struct mmc_host *mmc = platform_get_drvdata(dev); 809 struct mmc_host *mmc = dev_get_drvdata(dev);
731 int ret = 0; 810 int ret = 0;
732 811
733 if (mmc) 812 if (mmc)
734 ret = mmc_suspend_host(mmc, state); 813 ret = mmc_suspend_host(mmc, PMSG_SUSPEND);
735 814
736 return ret; 815 return ret;
737} 816}
738 817
739static int pxamci_resume(struct platform_device *dev) 818static int pxamci_resume(struct device *dev)
740{ 819{
741 struct mmc_host *mmc = platform_get_drvdata(dev); 820 struct mmc_host *mmc = dev_get_drvdata(dev);
742 int ret = 0; 821 int ret = 0;
743 822
744 if (mmc) 823 if (mmc)
@@ -746,19 +825,22 @@ static int pxamci_resume(struct platform_device *dev)
746 825
747 return ret; 826 return ret;
748} 827}
749#else 828
750#define pxamci_suspend NULL 829static struct dev_pm_ops pxamci_pm_ops = {
751#define pxamci_resume NULL 830 .suspend = pxamci_suspend,
831 .resume = pxamci_resume,
832};
752#endif 833#endif
753 834
754static struct platform_driver pxamci_driver = { 835static struct platform_driver pxamci_driver = {
755 .probe = pxamci_probe, 836 .probe = pxamci_probe,
756 .remove = pxamci_remove, 837 .remove = pxamci_remove,
757 .suspend = pxamci_suspend,
758 .resume = pxamci_resume,
759 .driver = { 838 .driver = {
760 .name = DRIVER_NAME, 839 .name = DRIVER_NAME,
761 .owner = THIS_MODULE, 840 .owner = THIS_MODULE,
841#ifdef CONFIG_PM
842 .pm = &pxamci_pm_ops,
843#endif
762 }, 844 },
763}; 845};
764 846
diff --git a/drivers/net/irda/pxaficp_ir.c b/drivers/net/irda/pxaficp_ir.c
index 1445e5865196..84db145d2b59 100644
--- a/drivers/net/irda/pxaficp_ir.c
+++ b/drivers/net/irda/pxaficp_ir.c
@@ -17,6 +17,7 @@
17#include <linux/etherdevice.h> 17#include <linux/etherdevice.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/gpio.h>
20 21
21#include <net/irda/irda.h> 22#include <net/irda/irda.h>
22#include <net/irda/irmod.h> 23#include <net/irda/irmod.h>
@@ -163,6 +164,22 @@ inline static void pxa_irda_fir_dma_tx_start(struct pxa_irda *si)
163} 164}
164 165
165/* 166/*
167 * Set the IrDA communications mode.
168 */
169static void pxa_irda_set_mode(struct pxa_irda *si, int mode)
170{
171 if (si->pdata->transceiver_mode)
172 si->pdata->transceiver_mode(si->dev, mode);
173 else {
174 if (gpio_is_valid(si->pdata->gpio_pwdown))
175 gpio_set_value(si->pdata->gpio_pwdown,
176 !(mode & IR_OFF) ^
177 !si->pdata->gpio_pwdown_inverted);
178 pxa2xx_transceiver_mode(si->dev, mode);
179 }
180}
181
182/*
166 * Set the IrDA communications speed. 183 * Set the IrDA communications speed.
167 */ 184 */
168static int pxa_irda_set_speed(struct pxa_irda *si, int speed) 185static int pxa_irda_set_speed(struct pxa_irda *si, int speed)
@@ -188,7 +205,7 @@ static int pxa_irda_set_speed(struct pxa_irda *si, int speed)
188 pxa_irda_disable_clk(si); 205 pxa_irda_disable_clk(si);
189 206
190 /* set board transceiver to SIR mode */ 207 /* set board transceiver to SIR mode */
191 si->pdata->transceiver_mode(si->dev, IR_SIRMODE); 208 pxa_irda_set_mode(si, IR_SIRMODE);
192 209
193 /* enable the STUART clock */ 210 /* enable the STUART clock */
194 pxa_irda_enable_sirclk(si); 211 pxa_irda_enable_sirclk(si);
@@ -222,7 +239,7 @@ static int pxa_irda_set_speed(struct pxa_irda *si, int speed)
222 ICCR0 = 0; 239 ICCR0 = 0;
223 240
224 /* set board transceiver to FIR mode */ 241 /* set board transceiver to FIR mode */
225 si->pdata->transceiver_mode(si->dev, IR_FIRMODE); 242 pxa_irda_set_mode(si, IR_FIRMODE);
226 243
227 /* enable the FICP clock */ 244 /* enable the FICP clock */
228 pxa_irda_enable_firclk(si); 245 pxa_irda_enable_firclk(si);
@@ -641,7 +658,7 @@ static void pxa_irda_shutdown(struct pxa_irda *si)
641 local_irq_restore(flags); 658 local_irq_restore(flags);
642 659
643 /* power off board transceiver */ 660 /* power off board transceiver */
644 si->pdata->transceiver_mode(si->dev, IR_OFF); 661 pxa_irda_set_mode(si, IR_OFF);
645 662
646 printk(KERN_DEBUG "pxa_ir: irda shutdown\n"); 663 printk(KERN_DEBUG "pxa_ir: irda shutdown\n");
647} 664}
@@ -849,10 +866,26 @@ static int pxa_irda_probe(struct platform_device *pdev)
849 if (err) 866 if (err)
850 goto err_mem_5; 867 goto err_mem_5;
851 868
852 if (si->pdata->startup) 869 if (gpio_is_valid(si->pdata->gpio_pwdown)) {
870 err = gpio_request(si->pdata->gpio_pwdown, "IrDA switch");
871 if (err)
872 goto err_startup;
873 err = gpio_direction_output(si->pdata->gpio_pwdown,
874 !si->pdata->gpio_pwdown_inverted);
875 if (err) {
876 gpio_free(si->pdata->gpio_pwdown);
877 goto err_startup;
878 }
879 }
880
881 if (si->pdata->startup) {
853 err = si->pdata->startup(si->dev); 882 err = si->pdata->startup(si->dev);
854 if (err) 883 if (err)
855 goto err_startup; 884 goto err_startup;
885 }
886
887 if (gpio_is_valid(si->pdata->gpio_pwdown) && si->pdata->startup)
888 dev_warn(si->dev, "gpio_pwdown and startup() both defined!\n");
856 889
857 dev->netdev_ops = &pxa_irda_netdev_ops; 890 dev->netdev_ops = &pxa_irda_netdev_ops;
858 891
@@ -903,6 +936,8 @@ static int pxa_irda_remove(struct platform_device *_dev)
903 if (dev) { 936 if (dev) {
904 struct pxa_irda *si = netdev_priv(dev); 937 struct pxa_irda *si = netdev_priv(dev);
905 unregister_netdev(dev); 938 unregister_netdev(dev);
939 if (gpio_is_valid(si->pdata->gpio_pwdown))
940 gpio_free(si->pdata->gpio_pwdown);
906 if (si->pdata->shutdown) 941 if (si->pdata->shutdown)
907 si->pdata->shutdown(si->dev); 942 si->pdata->shutdown(si->dev);
908 kfree(si->tx_buff.head); 943 kfree(si->tx_buff.head);
diff --git a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile
index 047394d98ac2..3247828aa203 100644
--- a/drivers/pcmcia/Makefile
+++ b/drivers/pcmcia/Makefile
@@ -71,6 +71,7 @@ pxa2xx-obj-$(CONFIG_MACH_ARMCORE) += pxa2xx_cm_x2xx_cs.o
71pxa2xx-obj-$(CONFIG_ARCH_VIPER) += pxa2xx_viper.o 71pxa2xx-obj-$(CONFIG_ARCH_VIPER) += pxa2xx_viper.o
72pxa2xx-obj-$(CONFIG_TRIZEPS_PCMCIA) += pxa2xx_trizeps4.o 72pxa2xx-obj-$(CONFIG_TRIZEPS_PCMCIA) += pxa2xx_trizeps4.o
73pxa2xx-obj-$(CONFIG_MACH_PALMTX) += pxa2xx_palmtx.o 73pxa2xx-obj-$(CONFIG_MACH_PALMTX) += pxa2xx_palmtx.o
74pxa2xx-obj-$(CONFIG_MACH_PALMTC) += pxa2xx_palmtc.o
74pxa2xx-obj-$(CONFIG_MACH_PALMLD) += pxa2xx_palmld.o 75pxa2xx-obj-$(CONFIG_MACH_PALMLD) += pxa2xx_palmld.o
75pxa2xx-obj-$(CONFIG_MACH_E740) += pxa2xx_e740.o 76pxa2xx-obj-$(CONFIG_MACH_E740) += pxa2xx_e740.o
76pxa2xx-obj-$(CONFIG_MACH_STARGATE2) += pxa2xx_stargate2.o 77pxa2xx-obj-$(CONFIG_MACH_STARGATE2) += pxa2xx_stargate2.o
diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c
index c49a7269f6d1..87e22ef8eb02 100644
--- a/drivers/pcmcia/pxa2xx_base.c
+++ b/drivers/pcmcia/pxa2xx_base.c
@@ -300,25 +300,29 @@ static int pxa2xx_drv_pcmcia_remove(struct platform_device *dev)
300 return soc_common_drv_pcmcia_remove(&dev->dev); 300 return soc_common_drv_pcmcia_remove(&dev->dev);
301} 301}
302 302
303static int pxa2xx_drv_pcmcia_suspend(struct platform_device *dev, pm_message_t state) 303static int pxa2xx_drv_pcmcia_suspend(struct device *dev)
304{ 304{
305 return pcmcia_socket_dev_suspend(&dev->dev, state); 305 return pcmcia_socket_dev_suspend(dev, PMSG_SUSPEND);
306} 306}
307 307
308static int pxa2xx_drv_pcmcia_resume(struct platform_device *dev) 308static int pxa2xx_drv_pcmcia_resume(struct device *dev)
309{ 309{
310 pxa2xx_configure_sockets(&dev->dev); 310 pxa2xx_configure_sockets(dev);
311 return pcmcia_socket_dev_resume(&dev->dev); 311 return pcmcia_socket_dev_resume(dev);
312} 312}
313 313
314static struct dev_pm_ops pxa2xx_drv_pcmcia_pm_ops = {
315 .suspend = pxa2xx_drv_pcmcia_suspend,
316 .resume = pxa2xx_drv_pcmcia_resume,
317};
318
314static struct platform_driver pxa2xx_pcmcia_driver = { 319static struct platform_driver pxa2xx_pcmcia_driver = {
315 .probe = pxa2xx_drv_pcmcia_probe, 320 .probe = pxa2xx_drv_pcmcia_probe,
316 .remove = pxa2xx_drv_pcmcia_remove, 321 .remove = pxa2xx_drv_pcmcia_remove,
317 .suspend = pxa2xx_drv_pcmcia_suspend,
318 .resume = pxa2xx_drv_pcmcia_resume,
319 .driver = { 322 .driver = {
320 .name = "pxa2xx-pcmcia", 323 .name = "pxa2xx-pcmcia",
321 .owner = THIS_MODULE, 324 .owner = THIS_MODULE,
325 .pm = &pxa2xx_drv_pcmcia_pm_ops,
322 }, 326 },
323}; 327};
324 328
diff --git a/drivers/pcmcia/pxa2xx_palmtc.c b/drivers/pcmcia/pxa2xx_palmtc.c
new file mode 100644
index 000000000000..3a8993ed5621
--- /dev/null
+++ b/drivers/pcmcia/pxa2xx_palmtc.c
@@ -0,0 +1,230 @@
1/*
2 * linux/drivers/pcmcia/pxa2xx_palmtc.c
3 *
4 * Driver for Palm Tungsten|C PCMCIA
5 *
6 * Copyright (C) 2008 Alex Osborne <ato@meshy.org>
7 * Copyright (C) 2009 Marek Vasut <marek.vasut@gmail.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 *
13 */
14
15#include <linux/module.h>
16#include <linux/platform_device.h>
17#include <linux/gpio.h>
18#include <linux/delay.h>
19
20#include <asm/mach-types.h>
21#include <mach/palmtc.h>
22#include "soc_common.h"
23
24static int palmtc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
25{
26 int ret;
27
28 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_POWER1, "PCMCIA PWR1");
29 if (ret)
30 goto err1;
31 ret = gpio_direction_output(GPIO_NR_PALMTC_PCMCIA_POWER1, 0);
32 if (ret)
33 goto err2;
34
35 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_POWER2, "PCMCIA PWR2");
36 if (ret)
37 goto err2;
38 ret = gpio_direction_output(GPIO_NR_PALMTC_PCMCIA_POWER2, 0);
39 if (ret)
40 goto err3;
41
42 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_POWER3, "PCMCIA PWR3");
43 if (ret)
44 goto err3;
45 ret = gpio_direction_output(GPIO_NR_PALMTC_PCMCIA_POWER3, 0);
46 if (ret)
47 goto err4;
48
49 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_RESET, "PCMCIA RST");
50 if (ret)
51 goto err4;
52 ret = gpio_direction_output(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
53 if (ret)
54 goto err5;
55
56 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_READY, "PCMCIA RDY");
57 if (ret)
58 goto err5;
59 ret = gpio_direction_input(GPIO_NR_PALMTC_PCMCIA_READY);
60 if (ret)
61 goto err6;
62
63 ret = gpio_request(GPIO_NR_PALMTC_PCMCIA_PWRREADY, "PCMCIA PWRRDY");
64 if (ret)
65 goto err6;
66 ret = gpio_direction_input(GPIO_NR_PALMTC_PCMCIA_PWRREADY);
67 if (ret)
68 goto err7;
69
70 skt->irq = IRQ_GPIO(GPIO_NR_PALMTC_PCMCIA_READY);
71 return 0;
72
73err7:
74 gpio_free(GPIO_NR_PALMTC_PCMCIA_PWRREADY);
75err6:
76 gpio_free(GPIO_NR_PALMTC_PCMCIA_READY);
77err5:
78 gpio_free(GPIO_NR_PALMTC_PCMCIA_RESET);
79err4:
80 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER3);
81err3:
82 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER2);
83err2:
84 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER1);
85err1:
86 return ret;
87}
88
89static void palmtc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
90{
91 gpio_free(GPIO_NR_PALMTC_PCMCIA_PWRREADY);
92 gpio_free(GPIO_NR_PALMTC_PCMCIA_READY);
93 gpio_free(GPIO_NR_PALMTC_PCMCIA_RESET);
94 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER3);
95 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER2);
96 gpio_free(GPIO_NR_PALMTC_PCMCIA_POWER1);
97}
98
99static void palmtc_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
100 struct pcmcia_state *state)
101{
102 state->detect = 1; /* always inserted */
103 state->ready = !!gpio_get_value(GPIO_NR_PALMTC_PCMCIA_READY);
104 state->bvd1 = 1;
105 state->bvd2 = 1;
106 state->wrprot = 0;
107 state->vs_3v = 1;
108 state->vs_Xv = 0;
109}
110
111static int palmtc_wifi_powerdown(void)
112{
113 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
114 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 0);
115 mdelay(40);
116 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 0);
117 return 0;
118}
119
120static int palmtc_wifi_powerup(void)
121{
122 int timeout = 50;
123
124 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 1);
125 mdelay(50);
126
127 /* Power up the card, 1.8V first, after a while 3.3V */
128 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 1);
129 mdelay(100);
130 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 1);
131
132 /* Wait till the card is ready */
133 while (!gpio_get_value(GPIO_NR_PALMTC_PCMCIA_PWRREADY) &&
134 timeout) {
135 mdelay(1);
136 timeout--;
137 }
138
139 /* Power down the WiFi in case of error */
140 if (!timeout) {
141 palmtc_wifi_powerdown();
142 return 1;
143 }
144
145 /* Reset the card */
146 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
147 mdelay(20);
148 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 0);
149 mdelay(25);
150
151 gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 0);
152
153 return 0;
154}
155
156static int palmtc_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
157 const socket_state_t *state)
158{
159 int ret = 1;
160
161 if (state->Vcc == 0)
162 ret = palmtc_wifi_powerdown();
163 else if (state->Vcc == 33)
164 ret = palmtc_wifi_powerup();
165
166 return ret;
167}
168
169static void palmtc_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
170{
171}
172
173static void palmtc_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
174{
175}
176
177static struct pcmcia_low_level palmtc_pcmcia_ops = {
178 .owner = THIS_MODULE,
179
180 .first = 0,
181 .nr = 1,
182
183 .hw_init = palmtc_pcmcia_hw_init,
184 .hw_shutdown = palmtc_pcmcia_hw_shutdown,
185
186 .socket_state = palmtc_pcmcia_socket_state,
187 .configure_socket = palmtc_pcmcia_configure_socket,
188
189 .socket_init = palmtc_pcmcia_socket_init,
190 .socket_suspend = palmtc_pcmcia_socket_suspend,
191};
192
193static struct platform_device *palmtc_pcmcia_device;
194
195static int __init palmtc_pcmcia_init(void)
196{
197 int ret;
198
199 if (!machine_is_palmtc())
200 return -ENODEV;
201
202 palmtc_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
203 if (!palmtc_pcmcia_device)
204 return -ENOMEM;
205
206 ret = platform_device_add_data(palmtc_pcmcia_device, &palmtc_pcmcia_ops,
207 sizeof(palmtc_pcmcia_ops));
208
209 if (!ret)
210 ret = platform_device_add(palmtc_pcmcia_device);
211
212 if (ret)
213 platform_device_put(palmtc_pcmcia_device);
214
215 return ret;
216}
217
218static void __exit palmtc_pcmcia_exit(void)
219{
220 platform_device_unregister(palmtc_pcmcia_device);
221}
222
223module_init(palmtc_pcmcia_init);
224module_exit(palmtc_pcmcia_exit);
225
226MODULE_AUTHOR("Alex Osborne <ato@meshy.org>,"
227 " Marek Vasut <marek.vasut@gmail.com>");
228MODULE_DESCRIPTION("PCMCIA support for Palm Tungsten|C");
229MODULE_ALIAS("platform:pxa2xx-pcmcia");
230MODULE_LICENSE("GPL");
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c
index bb8cc05605ac..747ca194fad4 100644
--- a/drivers/rtc/rtc-pxa.c
+++ b/drivers/rtc/rtc-pxa.c
@@ -438,34 +438,37 @@ static int __exit pxa_rtc_remove(struct platform_device *pdev)
438} 438}
439 439
440#ifdef CONFIG_PM 440#ifdef CONFIG_PM
441static int pxa_rtc_suspend(struct platform_device *pdev, pm_message_t state) 441static int pxa_rtc_suspend(struct device *dev)
442{ 442{
443 struct pxa_rtc *pxa_rtc = platform_get_drvdata(pdev); 443 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
444 444
445 if (device_may_wakeup(&pdev->dev)) 445 if (device_may_wakeup(dev))
446 enable_irq_wake(pxa_rtc->irq_Alrm); 446 enable_irq_wake(pxa_rtc->irq_Alrm);
447 return 0; 447 return 0;
448} 448}
449 449
450static int pxa_rtc_resume(struct platform_device *pdev) 450static int pxa_rtc_resume(struct device *dev)
451{ 451{
452 struct pxa_rtc *pxa_rtc = platform_get_drvdata(pdev); 452 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
453 453
454 if (device_may_wakeup(&pdev->dev)) 454 if (device_may_wakeup(dev))
455 disable_irq_wake(pxa_rtc->irq_Alrm); 455 disable_irq_wake(pxa_rtc->irq_Alrm);
456 return 0; 456 return 0;
457} 457}
458#else 458
459#define pxa_rtc_suspend NULL 459static struct dev_pm_ops pxa_rtc_pm_ops = {
460#define pxa_rtc_resume NULL 460 .suspend = pxa_rtc_suspend,
461 .resume = pxa_rtc_resume,
462};
461#endif 463#endif
462 464
463static struct platform_driver pxa_rtc_driver = { 465static struct platform_driver pxa_rtc_driver = {
464 .remove = __exit_p(pxa_rtc_remove), 466 .remove = __exit_p(pxa_rtc_remove),
465 .suspend = pxa_rtc_suspend,
466 .resume = pxa_rtc_resume,
467 .driver = { 467 .driver = {
468 .name = "pxa-rtc", 468 .name = "pxa-rtc",
469#ifdef CONFIG_PM
470 .pm = &pxa_rtc_pm_ops,
471#endif
469 }, 472 },
470}; 473};
471 474
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 4f247e4dd3f9..dbd07c31042a 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -393,31 +393,34 @@ static int sa1100_rtc_remove(struct platform_device *pdev)
393} 393}
394 394
395#ifdef CONFIG_PM 395#ifdef CONFIG_PM
396static int sa1100_rtc_suspend(struct platform_device *pdev, pm_message_t state) 396static int sa1100_rtc_suspend(struct device *dev)
397{ 397{
398 if (device_may_wakeup(&pdev->dev)) 398 if (device_may_wakeup(dev))
399 enable_irq_wake(IRQ_RTCAlrm); 399 enable_irq_wake(IRQ_RTCAlrm);
400 return 0; 400 return 0;
401} 401}
402 402
403static int sa1100_rtc_resume(struct platform_device *pdev) 403static int sa1100_rtc_resume(struct device *dev)
404{ 404{
405 if (device_may_wakeup(&pdev->dev)) 405 if (device_may_wakeup(dev))
406 disable_irq_wake(IRQ_RTCAlrm); 406 disable_irq_wake(IRQ_RTCAlrm);
407 return 0; 407 return 0;
408} 408}
409#else 409
410#define sa1100_rtc_suspend NULL 410static struct dev_pm_ops sa1100_rtc_pm_ops = {
411#define sa1100_rtc_resume NULL 411 .suspend = sa1100_rtc_suspend,
412 .resume = sa1100_rtc_resume,
413};
412#endif 414#endif
413 415
414static struct platform_driver sa1100_rtc_driver = { 416static struct platform_driver sa1100_rtc_driver = {
415 .probe = sa1100_rtc_probe, 417 .probe = sa1100_rtc_probe,
416 .remove = sa1100_rtc_remove, 418 .remove = sa1100_rtc_remove,
417 .suspend = sa1100_rtc_suspend,
418 .resume = sa1100_rtc_resume,
419 .driver = { 419 .driver = {
420 .name = "sa1100-rtc", 420 .name = "sa1100-rtc",
421#ifdef CONFIG_PM
422 .pm = &sa1100_rtc_pm_ops,
423#endif
421 }, 424 },
422}; 425};
423 426
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c
index a48a8a13d87b..514971fb5bff 100644
--- a/drivers/serial/pxa.c
+++ b/drivers/serial/pxa.c
@@ -726,9 +726,10 @@ static struct uart_driver serial_pxa_reg = {
726 .cons = PXA_CONSOLE, 726 .cons = PXA_CONSOLE,
727}; 727};
728 728
729static int serial_pxa_suspend(struct platform_device *dev, pm_message_t state) 729#ifdef CONFIG_PM
730static int serial_pxa_suspend(struct device *dev)
730{ 731{
731 struct uart_pxa_port *sport = platform_get_drvdata(dev); 732 struct uart_pxa_port *sport = dev_get_drvdata(dev);
732 733
733 if (sport) 734 if (sport)
734 uart_suspend_port(&serial_pxa_reg, &sport->port); 735 uart_suspend_port(&serial_pxa_reg, &sport->port);
@@ -736,9 +737,9 @@ static int serial_pxa_suspend(struct platform_device *dev, pm_message_t state)
736 return 0; 737 return 0;
737} 738}
738 739
739static int serial_pxa_resume(struct platform_device *dev) 740static int serial_pxa_resume(struct device *dev)
740{ 741{
741 struct uart_pxa_port *sport = platform_get_drvdata(dev); 742 struct uart_pxa_port *sport = dev_get_drvdata(dev);
742 743
743 if (sport) 744 if (sport)
744 uart_resume_port(&serial_pxa_reg, &sport->port); 745 uart_resume_port(&serial_pxa_reg, &sport->port);
@@ -746,6 +747,12 @@ static int serial_pxa_resume(struct platform_device *dev)
746 return 0; 747 return 0;
747} 748}
748 749
750static struct dev_pm_ops serial_pxa_pm_ops = {
751 .suspend = serial_pxa_suspend,
752 .resume = serial_pxa_resume,
753};
754#endif
755
749static int serial_pxa_probe(struct platform_device *dev) 756static int serial_pxa_probe(struct platform_device *dev)
750{ 757{
751 struct uart_pxa_port *sport; 758 struct uart_pxa_port *sport;
@@ -825,11 +832,12 @@ static struct platform_driver serial_pxa_driver = {
825 .probe = serial_pxa_probe, 832 .probe = serial_pxa_probe,
826 .remove = serial_pxa_remove, 833 .remove = serial_pxa_remove,
827 834
828 .suspend = serial_pxa_suspend,
829 .resume = serial_pxa_resume,
830 .driver = { 835 .driver = {
831 .name = "pxa2xx-uart", 836 .name = "pxa2xx-uart",
832 .owner = THIS_MODULE, 837 .owner = THIS_MODULE,
838#ifdef CONFIG_PM
839 .pm = &serial_pxa_pm_ops,
840#endif
833 }, 841 },
834}; 842};
835 843
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index d949dbf1141f..8a1fb608e8f1 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -1668,10 +1668,9 @@ static void pxa2xx_spi_shutdown(struct platform_device *pdev)
1668} 1668}
1669 1669
1670#ifdef CONFIG_PM 1670#ifdef CONFIG_PM
1671 1671static int pxa2xx_spi_suspend(struct device *dev)
1672static int pxa2xx_spi_suspend(struct platform_device *pdev, pm_message_t state)
1673{ 1672{
1674 struct driver_data *drv_data = platform_get_drvdata(pdev); 1673 struct driver_data *drv_data = dev_get_drvdata(dev);
1675 struct ssp_device *ssp = drv_data->ssp; 1674 struct ssp_device *ssp = drv_data->ssp;
1676 int status = 0; 1675 int status = 0;
1677 1676
@@ -1684,9 +1683,9 @@ static int pxa2xx_spi_suspend(struct platform_device *pdev, pm_message_t state)
1684 return 0; 1683 return 0;
1685} 1684}
1686 1685
1687static int pxa2xx_spi_resume(struct platform_device *pdev) 1686static int pxa2xx_spi_resume(struct device *dev)
1688{ 1687{
1689 struct driver_data *drv_data = platform_get_drvdata(pdev); 1688 struct driver_data *drv_data = dev_get_drvdata(dev);
1690 struct ssp_device *ssp = drv_data->ssp; 1689 struct ssp_device *ssp = drv_data->ssp;
1691 int status = 0; 1690 int status = 0;
1692 1691
@@ -1703,26 +1702,29 @@ static int pxa2xx_spi_resume(struct platform_device *pdev)
1703 /* Start the queue running */ 1702 /* Start the queue running */
1704 status = start_queue(drv_data); 1703 status = start_queue(drv_data);
1705 if (status != 0) { 1704 if (status != 0) {
1706 dev_err(&pdev->dev, "problem starting queue (%d)\n", status); 1705 dev_err(dev, "problem starting queue (%d)\n", status);
1707 return status; 1706 return status;
1708 } 1707 }
1709 1708
1710 return 0; 1709 return 0;
1711} 1710}
1712#else 1711
1713#define pxa2xx_spi_suspend NULL 1712static struct dev_pm_ops pxa2xx_spi_pm_ops = {
1714#define pxa2xx_spi_resume NULL 1713 .suspend = pxa2xx_spi_suspend,
1715#endif /* CONFIG_PM */ 1714 .resume = pxa2xx_spi_resume,
1715};
1716#endif
1716 1717
1717static struct platform_driver driver = { 1718static struct platform_driver driver = {
1718 .driver = { 1719 .driver = {
1719 .name = "pxa2xx-spi", 1720 .name = "pxa2xx-spi",
1720 .owner = THIS_MODULE, 1721 .owner = THIS_MODULE,
1722#ifdef CONFIG_PM
1723 .pm = &pxa2xx_spi_pm_ops,
1724#endif
1721 }, 1725 },
1722 .remove = pxa2xx_spi_remove, 1726 .remove = pxa2xx_spi_remove,
1723 .shutdown = pxa2xx_spi_shutdown, 1727 .shutdown = pxa2xx_spi_shutdown,
1724 .suspend = pxa2xx_spi_suspend,
1725 .resume = pxa2xx_spi_resume,
1726}; 1728};
1727 1729
1728static int __init pxa2xx_spi_init(void) 1730static int __init pxa2xx_spi_init(void)
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
index e44dc2cbca24..bbc0c3b720b2 100644
--- a/drivers/usb/host/ohci-pxa27x.c
+++ b/drivers/usb/host/ohci-pxa27x.c
@@ -477,38 +477,47 @@ static int ohci_hcd_pxa27x_drv_remove(struct platform_device *pdev)
477 return 0; 477 return 0;
478} 478}
479 479
480#ifdef CONFIG_PM 480#ifdef CONFIG_PM
481static int ohci_hcd_pxa27x_drv_suspend(struct platform_device *pdev, pm_message_t state) 481static int ohci_hcd_pxa27x_drv_suspend(struct device *dev)
482{ 482{
483 struct usb_hcd *hcd = platform_get_drvdata(pdev); 483 struct usb_hcd *hcd = dev_get_drvdata(dev);
484 struct pxa27x_ohci *ohci = to_pxa27x_ohci(hcd); 484 struct pxa27x_ohci *ohci = to_pxa27x_ohci(hcd);
485 485
486 if (time_before(jiffies, ohci->ohci.next_statechange)) 486 if (time_before(jiffies, ohci->ohci.next_statechange))
487 msleep(5); 487 msleep(5);
488 ohci->ohci.next_statechange = jiffies; 488 ohci->ohci.next_statechange = jiffies;
489 489
490 pxa27x_stop_hc(ohci, &pdev->dev); 490 pxa27x_stop_hc(ohci, dev);
491 hcd->state = HC_STATE_SUSPENDED; 491 hcd->state = HC_STATE_SUSPENDED;
492 492
493 return 0; 493 return 0;
494} 494}
495 495
496static int ohci_hcd_pxa27x_drv_resume(struct platform_device *pdev) 496static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
497{ 497{
498 struct usb_hcd *hcd = platform_get_drvdata(pdev); 498 struct usb_hcd *hcd = dev_get_drvdata(dev);
499 struct pxa27x_ohci *ohci = to_pxa27x_ohci(hcd); 499 struct pxa27x_ohci *ohci = to_pxa27x_ohci(hcd);
500 struct pxaohci_platform_data *inf = dev->platform_data;
500 int status; 501 int status;
501 502
502 if (time_before(jiffies, ohci->ohci.next_statechange)) 503 if (time_before(jiffies, ohci->ohci.next_statechange))
503 msleep(5); 504 msleep(5);
504 ohci->ohci.next_statechange = jiffies; 505 ohci->ohci.next_statechange = jiffies;
505 506
506 if ((status = pxa27x_start_hc(ohci, &pdev->dev)) < 0) 507 if ((status = pxa27x_start_hc(ohci, dev)) < 0)
507 return status; 508 return status;
508 509
510 /* Select Power Management Mode */
511 pxa27x_ohci_select_pmm(ohci, inf->port_mode);
512
509 ohci_finish_controller_resume(hcd); 513 ohci_finish_controller_resume(hcd);
510 return 0; 514 return 0;
511} 515}
516
517static struct dev_pm_ops ohci_hcd_pxa27x_pm_ops = {
518 .suspend = ohci_hcd_pxa27x_drv_suspend,
519 .resume = ohci_hcd_pxa27x_drv_resume,
520};
512#endif 521#endif
513 522
514/* work with hotplug and coldplug */ 523/* work with hotplug and coldplug */
@@ -518,13 +527,12 @@ static struct platform_driver ohci_hcd_pxa27x_driver = {
518 .probe = ohci_hcd_pxa27x_drv_probe, 527 .probe = ohci_hcd_pxa27x_drv_probe,
519 .remove = ohci_hcd_pxa27x_drv_remove, 528 .remove = ohci_hcd_pxa27x_drv_remove,
520 .shutdown = usb_hcd_platform_shutdown, 529 .shutdown = usb_hcd_platform_shutdown,
521#ifdef CONFIG_PM
522 .suspend = ohci_hcd_pxa27x_drv_suspend,
523 .resume = ohci_hcd_pxa27x_drv_resume,
524#endif
525 .driver = { 530 .driver = {
526 .name = "pxa27x-ohci", 531 .name = "pxa27x-ohci",
527 .owner = THIS_MODULE, 532 .owner = THIS_MODULE,
533#ifdef CONFIG_PM
534 .pm = &ohci_hcd_pxa27x_pm_ops,
535#endif
528 }, 536 },
529}; 537};
530 538
diff --git a/drivers/video/backlight/da903x_bl.c b/drivers/video/backlight/da903x_bl.c
index 93bb4340cc64..701a1081e199 100644
--- a/drivers/video/backlight/da903x_bl.c
+++ b/drivers/video/backlight/da903x_bl.c
@@ -154,34 +154,38 @@ static int da903x_backlight_remove(struct platform_device *pdev)
154} 154}
155 155
156#ifdef CONFIG_PM 156#ifdef CONFIG_PM
157static int da903x_backlight_suspend(struct platform_device *pdev, 157static int da903x_backlight_suspend(struct device *dev)
158 pm_message_t state)
159{ 158{
159 struct platform_device *pdev = to_platform_device(dev);
160 struct backlight_device *bl = platform_get_drvdata(pdev); 160 struct backlight_device *bl = platform_get_drvdata(pdev);
161 return da903x_backlight_set(bl, 0); 161 return da903x_backlight_set(bl, 0);
162} 162}
163 163
164static int da903x_backlight_resume(struct platform_device *pdev) 164static int da903x_backlight_resume(struct device *dev)
165{ 165{
166 struct platform_device *pdev = to_platform_device(dev);
166 struct backlight_device *bl = platform_get_drvdata(pdev); 167 struct backlight_device *bl = platform_get_drvdata(pdev);
167 168
168 backlight_update_status(bl); 169 backlight_update_status(bl);
169 return 0; 170 return 0;
170} 171}
171#else 172
172#define da903x_backlight_suspend NULL 173static struct dev_pm_ops da903x_backlight_pm_ops = {
173#define da903x_backlight_resume NULL 174 .suspend = da903x_backlight_suspend,
175 .resume = da903x_backlight_resume,
176};
174#endif 177#endif
175 178
176static struct platform_driver da903x_backlight_driver = { 179static struct platform_driver da903x_backlight_driver = {
177 .driver = { 180 .driver = {
178 .name = "da903x-backlight", 181 .name = "da903x-backlight",
179 .owner = THIS_MODULE, 182 .owner = THIS_MODULE,
183#ifdef CONFIG_PM
184 .pm = &da903x_backlight_pm_ops,
185#endif
180 }, 186 },
181 .probe = da903x_backlight_probe, 187 .probe = da903x_backlight_probe,
182 .remove = da903x_backlight_remove, 188 .remove = da903x_backlight_remove,
183 .suspend = da903x_backlight_suspend,
184 .resume = da903x_backlight_resume,
185}; 189};
186 190
187static int __init da903x_backlight_init(void) 191static int __init da903x_backlight_init(void)
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 6506117c134b..1820c4a24434 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1638,24 +1638,26 @@ pxafb_freq_policy(struct notifier_block *nb, unsigned long val, void *data)
1638 * Power management hooks. Note that we won't be called from IRQ context, 1638 * Power management hooks. Note that we won't be called from IRQ context,
1639 * unlike the blank functions above, so we may sleep. 1639 * unlike the blank functions above, so we may sleep.
1640 */ 1640 */
1641static int pxafb_suspend(struct platform_device *dev, pm_message_t state) 1641static int pxafb_suspend(struct device *dev)
1642{ 1642{
1643 struct pxafb_info *fbi = platform_get_drvdata(dev); 1643 struct pxafb_info *fbi = dev_get_drvdata(dev);
1644 1644
1645 set_ctrlr_state(fbi, C_DISABLE_PM); 1645 set_ctrlr_state(fbi, C_DISABLE_PM);
1646 return 0; 1646 return 0;
1647} 1647}
1648 1648
1649static int pxafb_resume(struct platform_device *dev) 1649static int pxafb_resume(struct device *dev)
1650{ 1650{
1651 struct pxafb_info *fbi = platform_get_drvdata(dev); 1651 struct pxafb_info *fbi = dev_get_drvdata(dev);
1652 1652
1653 set_ctrlr_state(fbi, C_ENABLE_PM); 1653 set_ctrlr_state(fbi, C_ENABLE_PM);
1654 return 0; 1654 return 0;
1655} 1655}
1656#else 1656
1657#define pxafb_suspend NULL 1657static struct dev_pm_ops pxafb_pm_ops = {
1658#define pxafb_resume NULL 1658 .suspend = pxafb_suspend,
1659 .resume = pxafb_resume,
1660};
1659#endif 1661#endif
1660 1662
1661static int __devinit pxafb_init_video_memory(struct pxafb_info *fbi) 1663static int __devinit pxafb_init_video_memory(struct pxafb_info *fbi)
@@ -2081,6 +2083,9 @@ static int __devinit pxafb_probe(struct platform_device *dev)
2081 goto failed; 2083 goto failed;
2082 } 2084 }
2083 2085
2086 if (cpu_is_pxa3xx() && inf->acceleration_enabled)
2087 fbi->fb.fix.accel = FB_ACCEL_PXA3XX;
2088
2084 fbi->backlight_power = inf->pxafb_backlight_power; 2089 fbi->backlight_power = inf->pxafb_backlight_power;
2085 fbi->lcd_power = inf->pxafb_lcd_power; 2090 fbi->lcd_power = inf->pxafb_lcd_power;
2086 2091
@@ -2091,14 +2096,14 @@ static int __devinit pxafb_probe(struct platform_device *dev)
2091 goto failed_fbi; 2096 goto failed_fbi;
2092 } 2097 }
2093 2098
2094 r = request_mem_region(r->start, r->end - r->start + 1, dev->name); 2099 r = request_mem_region(r->start, resource_size(r), dev->name);
2095 if (r == NULL) { 2100 if (r == NULL) {
2096 dev_err(&dev->dev, "failed to request I/O memory\n"); 2101 dev_err(&dev->dev, "failed to request I/O memory\n");
2097 ret = -EBUSY; 2102 ret = -EBUSY;
2098 goto failed_fbi; 2103 goto failed_fbi;
2099 } 2104 }
2100 2105
2101 fbi->mmio_base = ioremap(r->start, r->end - r->start + 1); 2106 fbi->mmio_base = ioremap(r->start, resource_size(r));
2102 if (fbi->mmio_base == NULL) { 2107 if (fbi->mmio_base == NULL) {
2103 dev_err(&dev->dev, "failed to map I/O memory\n"); 2108 dev_err(&dev->dev, "failed to map I/O memory\n");
2104 ret = -EBUSY; 2109 ret = -EBUSY;
@@ -2197,7 +2202,7 @@ failed_free_dma:
2197failed_free_io: 2202failed_free_io:
2198 iounmap(fbi->mmio_base); 2203 iounmap(fbi->mmio_base);
2199failed_free_res: 2204failed_free_res:
2200 release_mem_region(r->start, r->end - r->start + 1); 2205 release_mem_region(r->start, resource_size(r));
2201failed_fbi: 2206failed_fbi:
2202 clk_put(fbi->clk); 2207 clk_put(fbi->clk);
2203 platform_set_drvdata(dev, NULL); 2208 platform_set_drvdata(dev, NULL);
@@ -2237,7 +2242,7 @@ static int __devexit pxafb_remove(struct platform_device *dev)
2237 iounmap(fbi->mmio_base); 2242 iounmap(fbi->mmio_base);
2238 2243
2239 r = platform_get_resource(dev, IORESOURCE_MEM, 0); 2244 r = platform_get_resource(dev, IORESOURCE_MEM, 0);
2240 release_mem_region(r->start, r->end - r->start + 1); 2245 release_mem_region(r->start, resource_size(r));
2241 2246
2242 clk_put(fbi->clk); 2247 clk_put(fbi->clk);
2243 kfree(fbi); 2248 kfree(fbi);
@@ -2248,11 +2253,12 @@ static int __devexit pxafb_remove(struct platform_device *dev)
2248static struct platform_driver pxafb_driver = { 2253static struct platform_driver pxafb_driver = {
2249 .probe = pxafb_probe, 2254 .probe = pxafb_probe,
2250 .remove = __devexit_p(pxafb_remove), 2255 .remove = __devexit_p(pxafb_remove),
2251 .suspend = pxafb_suspend,
2252 .resume = pxafb_resume,
2253 .driver = { 2256 .driver = {
2254 .owner = THIS_MODULE, 2257 .owner = THIS_MODULE,
2255 .name = "pxa2xx-fb", 2258 .name = "pxa2xx-fb",
2259#ifdef CONFIG_PM
2260 .pm = &pxafb_pm_ops,
2261#endif
2256 }, 2262 },
2257}; 2263};
2258 2264
diff --git a/include/linux/fb.h b/include/linux/fb.h
index f847df9e99b6..a34bdf5a9d23 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -133,6 +133,7 @@ struct dentry;
133#define FB_ACCEL_NEOMAGIC_NM2230 96 /* NeoMagic NM2230 */ 133#define FB_ACCEL_NEOMAGIC_NM2230 96 /* NeoMagic NM2230 */
134#define FB_ACCEL_NEOMAGIC_NM2360 97 /* NeoMagic NM2360 */ 134#define FB_ACCEL_NEOMAGIC_NM2360 97 /* NeoMagic NM2360 */
135#define FB_ACCEL_NEOMAGIC_NM2380 98 /* NeoMagic NM2380 */ 135#define FB_ACCEL_NEOMAGIC_NM2380 98 /* NeoMagic NM2380 */
136#define FB_ACCEL_PXA3XX 99 /* PXA3xx */
136 137
137#define FB_ACCEL_SAVAGE4 0x80 /* S3 Savage4 */ 138#define FB_ACCEL_SAVAGE4 0x80 /* S3 Savage4 */
138#define FB_ACCEL_SAVAGE3D 0x81 /* S3 Savage3D */ 139#define FB_ACCEL_SAVAGE3D 0x81 /* S3 Savage3D */
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c
index 4e34d19ddbc0..b4b48afb6de6 100644
--- a/sound/arm/pxa2xx-ac97.c
+++ b/sound/arm/pxa2xx-ac97.c
@@ -137,9 +137,9 @@ static int pxa2xx_ac97_do_resume(struct snd_card *card)
137 return 0; 137 return 0;
138} 138}
139 139
140static int pxa2xx_ac97_suspend(struct platform_device *dev, pm_message_t state) 140static int pxa2xx_ac97_suspend(struct device *dev)
141{ 141{
142 struct snd_card *card = platform_get_drvdata(dev); 142 struct snd_card *card = dev_get_drvdata(dev);
143 int ret = 0; 143 int ret = 0;
144 144
145 if (card) 145 if (card)
@@ -148,9 +148,9 @@ static int pxa2xx_ac97_suspend(struct platform_device *dev, pm_message_t state)
148 return ret; 148 return ret;
149} 149}
150 150
151static int pxa2xx_ac97_resume(struct platform_device *dev) 151static int pxa2xx_ac97_resume(struct device *dev)
152{ 152{
153 struct snd_card *card = platform_get_drvdata(dev); 153 struct snd_card *card = dev_get_drvdata(dev);
154 int ret = 0; 154 int ret = 0;
155 155
156 if (card) 156 if (card)
@@ -159,9 +159,10 @@ static int pxa2xx_ac97_resume(struct platform_device *dev)
159 return ret; 159 return ret;
160} 160}
161 161
162#else 162static struct dev_pm_ops pxa2xx_ac97_pm_ops = {
163#define pxa2xx_ac97_suspend NULL 163 .suspend = pxa2xx_ac97_suspend,
164#define pxa2xx_ac97_resume NULL 164 .resume = pxa2xx_ac97_resume,
165};
165#endif 166#endif
166 167
167static int __devinit pxa2xx_ac97_probe(struct platform_device *dev) 168static int __devinit pxa2xx_ac97_probe(struct platform_device *dev)
@@ -241,11 +242,12 @@ static int __devexit pxa2xx_ac97_remove(struct platform_device *dev)
241static struct platform_driver pxa2xx_ac97_driver = { 242static struct platform_driver pxa2xx_ac97_driver = {
242 .probe = pxa2xx_ac97_probe, 243 .probe = pxa2xx_ac97_probe,
243 .remove = __devexit_p(pxa2xx_ac97_remove), 244 .remove = __devexit_p(pxa2xx_ac97_remove),
244 .suspend = pxa2xx_ac97_suspend,
245 .resume = pxa2xx_ac97_resume,
246 .driver = { 245 .driver = {
247 .name = "pxa2xx-ac97", 246 .name = "pxa2xx-ac97",
248 .owner = THIS_MODULE, 247 .owner = THIS_MODULE,
248#ifdef CONFIG_PM
249 .pm = &pxa2xx_ac97_pm_ops,
250#endif
249 }, 251 },
250}; 252};
251 253