aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-12-06 12:00:33 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-12-06 12:00:33 -0500
commit3d14b5beba35250c548d3851a2b84fce742d8311 (patch)
tree065e3d93c3fcbc5ee4c44fa78662393cddbdf6de /arch/arm
parent0719dc341389882cc834ed18fc9b7fc6006b2b85 (diff)
parent1bf8e6219552d5dd27012d567ec8c4bb9c2d86b4 (diff)
Merge branch 'sa1100' into devel
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/configs/h3600_defconfig976
-rw-r--r--arch/arm/mach-sa1100/Kconfig4
-rw-r--r--arch/arm/mach-sa1100/Makefile4
-rw-r--r--arch/arm/mach-sa1100/assabet.c8
-rw-r--r--arch/arm/mach-sa1100/badge4.c2
-rw-r--r--arch/arm/mach-sa1100/cerf.c4
-rw-r--r--arch/arm/mach-sa1100/collie.c85
-rw-r--r--arch/arm/mach-sa1100/generic.c31
-rw-r--r--arch/arm/mach-sa1100/generic.h11
-rw-r--r--arch/arm/mach-sa1100/h3100.c95
-rw-r--r--arch/arm/mach-sa1100/h3600.c454
-rw-r--r--arch/arm/mach-sa1100/h3xxx.c313
-rw-r--r--arch/arm/mach-sa1100/hackkit.c2
-rw-r--r--arch/arm/mach-sa1100/include/mach/collie.h77
-rw-r--r--arch/arm/mach-sa1100/include/mach/gpio.h19
-rw-r--r--arch/arm/mach-sa1100/include/mach/h3600.h100
-rw-r--r--arch/arm/mach-sa1100/include/mach/h3600_gpio.h77
-rw-r--r--arch/arm/mach-sa1100/include/mach/h3xxx.h94
-rw-r--r--arch/arm/mach-sa1100/include/mach/mcp.h1
-rw-r--r--arch/arm/mach-sa1100/jornada720.c2
-rw-r--r--arch/arm/mach-sa1100/lart.c2
-rw-r--r--arch/arm/mach-sa1100/pleb.c2
-rw-r--r--arch/arm/mach-sa1100/shannon.c4
-rw-r--r--arch/arm/mach-sa1100/simpad.c4
24 files changed, 1360 insertions, 1011 deletions
diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig
index f6aed7747d4d..efa78e144e5c 100644
--- a/arch/arm/configs/h3600_defconfig
+++ b/arch/arm/configs/h3600_defconfig
@@ -1,86 +1,189 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc4 3# Linux kernel version: 2.6.32-rc5
4# Thu Jun 9 01:59:03 2005 4# Sat Oct 24 00:09:30 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_MMU=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_UID16=y 8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_STACKTRACE_SUPPORT=y
13CONFIG_HAVE_LATENCYTOP_SUPPORT=y
14CONFIG_LOCKDEP_SUPPORT=y
15CONFIG_TRACE_IRQFLAGS_SUPPORT=y
16CONFIG_HARDIRQS_SW_RESEND=y
17CONFIG_GENERIC_IRQ_PROBE=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 18CONFIG_RWSEM_GENERIC_SPINLOCK=y
19CONFIG_ARCH_HAS_CPUFREQ=y
20CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 21CONFIG_GENERIC_CALIBRATE_DELAY=y
11CONFIG_GENERIC_IOMAP=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
12 27
13# 28#
14# Code maturity level options 29# General setup
15# 30#
16CONFIG_EXPERIMENTAL=y 31CONFIG_EXPERIMENTAL=y
17CONFIG_CLEAN_COMPILE=y
18CONFIG_BROKEN_ON_SMP=y 32CONFIG_BROKEN_ON_SMP=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 33CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
35CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SWAP=y 36CONFIG_SWAP=y
26CONFIG_SYSVIPC=y 37CONFIG_SYSVIPC=y
38CONFIG_SYSVIPC_SYSCTL=y
27# CONFIG_POSIX_MQUEUE is not set 39# CONFIG_POSIX_MQUEUE is not set
28# CONFIG_BSD_PROCESS_ACCT is not set 40# CONFIG_BSD_PROCESS_ACCT is not set
29CONFIG_SYSCTL=y 41# CONFIG_TASKSTATS is not set
30# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y 43
32CONFIG_KOBJECT_UEVENT=y 44#
45# RCU Subsystem
46#
47CONFIG_TREE_RCU=y
48# CONFIG_TREE_PREEMPT_RCU is not set
49# CONFIG_RCU_TRACE is not set
50CONFIG_RCU_FANOUT=32
51# CONFIG_RCU_FANOUT_EXACT is not set
52# CONFIG_TREE_RCU_TRACE is not set
33# CONFIG_IKCONFIG is not set 53# CONFIG_IKCONFIG is not set
54CONFIG_LOG_BUF_SHIFT=14
55# CONFIG_GROUP_SCHED is not set
56# CONFIG_CGROUPS is not set
57# CONFIG_SYSFS_DEPRECATED_V2 is not set
58# CONFIG_RELAY is not set
59CONFIG_NAMESPACES=y
60# CONFIG_UTS_NS is not set
61# CONFIG_IPC_NS is not set
62# CONFIG_USER_NS is not set
63# CONFIG_PID_NS is not set
64# CONFIG_NET_NS is not set
65CONFIG_BLK_DEV_INITRD=y
66CONFIG_INITRAMFS_SOURCE=""
67CONFIG_RD_GZIP=y
68CONFIG_RD_BZIP2=y
69CONFIG_RD_LZMA=y
70CONFIG_CC_OPTIMIZE_FOR_SIZE=y
71CONFIG_SYSCTL=y
72CONFIG_ANON_INODES=y
34# CONFIG_EMBEDDED is not set 73# CONFIG_EMBEDDED is not set
74CONFIG_UID16=y
75CONFIG_SYSCTL_SYSCALL=y
35CONFIG_KALLSYMS=y 76CONFIG_KALLSYMS=y
36# CONFIG_KALLSYMS_EXTRA_PASS is not set 77# CONFIG_KALLSYMS_EXTRA_PASS is not set
78CONFIG_HOTPLUG=y
37CONFIG_PRINTK=y 79CONFIG_PRINTK=y
38CONFIG_BUG=y 80CONFIG_BUG=y
81CONFIG_ELF_CORE=y
39CONFIG_BASE_FULL=y 82CONFIG_BASE_FULL=y
40CONFIG_FUTEX=y 83CONFIG_FUTEX=y
41CONFIG_EPOLL=y 84CONFIG_EPOLL=y
42CONFIG_CC_OPTIMIZE_FOR_SIZE=y 85CONFIG_SIGNALFD=y
86CONFIG_TIMERFD=y
87CONFIG_EVENTFD=y
43CONFIG_SHMEM=y 88CONFIG_SHMEM=y
44CONFIG_CC_ALIGN_FUNCTIONS=0 89CONFIG_AIO=y
45CONFIG_CC_ALIGN_LABELS=0 90
46CONFIG_CC_ALIGN_LOOPS=0 91#
47CONFIG_CC_ALIGN_JUMPS=0 92# Kernel Performance Events And Counters
48# CONFIG_TINY_SHMEM is not set 93#
49CONFIG_BASE_SMALL=0 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_SLUB_DEBUG=y
96CONFIG_COMPAT_BRK=y
97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
99# CONFIG_SLOB is not set
100# CONFIG_PROFILING is not set
101CONFIG_HAVE_OPROFILE=y
102# CONFIG_KPROBES is not set
103CONFIG_HAVE_KPROBES=y
104CONFIG_HAVE_KRETPROBES=y
105CONFIG_HAVE_CLK=y
50 106
51# 107#
52# Loadable module support 108# GCOV-based kernel profiling
53# 109#
110# CONFIG_SLOW_WORK is not set
111CONFIG_HAVE_GENERIC_DMA_COHERENT=y
112CONFIG_SLABINFO=y
113CONFIG_RT_MUTEXES=y
114CONFIG_BASE_SMALL=0
54CONFIG_MODULES=y 115CONFIG_MODULES=y
116# CONFIG_MODULE_FORCE_LOAD is not set
55# CONFIG_MODULE_UNLOAD is not set 117# CONFIG_MODULE_UNLOAD is not set
56CONFIG_OBSOLETE_MODPARM=y
57# CONFIG_MODVERSIONS is not set 118# CONFIG_MODVERSIONS is not set
58# CONFIG_MODULE_SRCVERSION_ALL is not set 119# CONFIG_MODULE_SRCVERSION_ALL is not set
59# CONFIG_KMOD is not set 120CONFIG_BLOCK=y
121# CONFIG_LBDAF is not set
122# CONFIG_BLK_DEV_BSG is not set
123# CONFIG_BLK_DEV_INTEGRITY is not set
124
125#
126# IO Schedulers
127#
128CONFIG_IOSCHED_NOOP=y
129# CONFIG_IOSCHED_AS is not set
130# CONFIG_IOSCHED_DEADLINE is not set
131# CONFIG_IOSCHED_CFQ is not set
132# CONFIG_DEFAULT_AS is not set
133# CONFIG_DEFAULT_DEADLINE is not set
134# CONFIG_DEFAULT_CFQ is not set
135CONFIG_DEFAULT_NOOP=y
136CONFIG_DEFAULT_IOSCHED="noop"
137CONFIG_FREEZER=y
60 138
61# 139#
62# System Type 140# System Type
63# 141#
64# CONFIG_ARCH_CLPS7500 is not set 142CONFIG_MMU=y
143# CONFIG_ARCH_AAEC2000 is not set
144# CONFIG_ARCH_INTEGRATOR is not set
145# CONFIG_ARCH_REALVIEW is not set
146# CONFIG_ARCH_VERSATILE is not set
147# CONFIG_ARCH_AT91 is not set
65# CONFIG_ARCH_CLPS711X is not set 148# CONFIG_ARCH_CLPS711X is not set
66# CONFIG_ARCH_CO285 is not set 149# CONFIG_ARCH_GEMINI is not set
67# CONFIG_ARCH_EBSA110 is not set 150# CONFIG_ARCH_EBSA110 is not set
151# CONFIG_ARCH_EP93XX is not set
68# CONFIG_ARCH_FOOTBRIDGE is not set 152# CONFIG_ARCH_FOOTBRIDGE is not set
69# CONFIG_ARCH_INTEGRATOR is not set 153# CONFIG_ARCH_MXC is not set
70# CONFIG_ARCH_IOP3XX is not set 154# CONFIG_ARCH_STMP3XXX is not set
71# CONFIG_ARCH_IXP4XX is not set 155# CONFIG_ARCH_NETX is not set
156# CONFIG_ARCH_H720X is not set
157# CONFIG_ARCH_NOMADIK is not set
158# CONFIG_ARCH_IOP13XX is not set
159# CONFIG_ARCH_IOP32X is not set
160# CONFIG_ARCH_IOP33X is not set
161# CONFIG_ARCH_IXP23XX is not set
72# CONFIG_ARCH_IXP2000 is not set 162# CONFIG_ARCH_IXP2000 is not set
163# CONFIG_ARCH_IXP4XX is not set
73# CONFIG_ARCH_L7200 is not set 164# CONFIG_ARCH_L7200 is not set
165# CONFIG_ARCH_KIRKWOOD is not set
166# CONFIG_ARCH_LOKI is not set
167# CONFIG_ARCH_MV78XX0 is not set
168# CONFIG_ARCH_ORION5X is not set
169# CONFIG_ARCH_MMP is not set
170# CONFIG_ARCH_KS8695 is not set
171# CONFIG_ARCH_NS9XXX is not set
172# CONFIG_ARCH_W90X900 is not set
173# CONFIG_ARCH_PNX4008 is not set
74# CONFIG_ARCH_PXA is not set 174# CONFIG_ARCH_PXA is not set
175# CONFIG_ARCH_MSM is not set
75# CONFIG_ARCH_RPC is not set 176# CONFIG_ARCH_RPC is not set
76CONFIG_ARCH_SA1100=y 177CONFIG_ARCH_SA1100=y
77# CONFIG_ARCH_S3C2410 is not set 178# CONFIG_ARCH_S3C2410 is not set
179# CONFIG_ARCH_S3C64XX is not set
180# CONFIG_ARCH_S5PC1XX is not set
78# CONFIG_ARCH_SHARK is not set 181# CONFIG_ARCH_SHARK is not set
79# CONFIG_ARCH_LH7A40X is not set 182# CONFIG_ARCH_LH7A40X is not set
183# CONFIG_ARCH_U300 is not set
184# CONFIG_ARCH_DAVINCI is not set
80# CONFIG_ARCH_OMAP is not set 185# CONFIG_ARCH_OMAP is not set
81# CONFIG_ARCH_VERSATILE is not set 186# CONFIG_ARCH_BCMRING is not set
82# CONFIG_ARCH_IMX is not set
83# CONFIG_ARCH_H720X is not set
84 187
85# 188#
86# SA11x0 Implementations 189# SA11x0 Implementations
@@ -106,27 +209,31 @@ CONFIG_CPU_32=y
106CONFIG_CPU_SA1100=y 209CONFIG_CPU_SA1100=y
107CONFIG_CPU_32v4=y 210CONFIG_CPU_32v4=y
108CONFIG_CPU_ABRT_EV4=y 211CONFIG_CPU_ABRT_EV4=y
212CONFIG_CPU_PABRT_LEGACY=y
109CONFIG_CPU_CACHE_V4WB=y 213CONFIG_CPU_CACHE_V4WB=y
110CONFIG_CPU_CACHE_VIVT=y 214CONFIG_CPU_CACHE_VIVT=y
111CONFIG_CPU_TLB_V4WB=y 215CONFIG_CPU_TLB_V4WB=y
112CONFIG_CPU_MINICACHE=y 216CONFIG_CPU_CP15=y
217CONFIG_CPU_CP15_MMU=y
113 218
114# 219#
115# Processor Features 220# Processor Features
116# 221#
222# CONFIG_CPU_ICACHE_DISABLE is not set
223# CONFIG_CPU_DCACHE_DISABLE is not set
224CONFIG_ARM_L1_CACHE_SHIFT=5
117 225
118# 226#
119# Bus support 227# Bus support
120# 228#
121CONFIG_ISA=y 229CONFIG_ISA=y
122CONFIG_ISA_DMA_API=y 230# CONFIG_PCI_SYSCALL is not set
123 231# CONFIG_ARCH_SUPPORTS_MSI is not set
124#
125# PCCARD (PCMCIA/CardBus) support
126#
127CONFIG_PCCARD=y 232CONFIG_PCCARD=y
128# CONFIG_PCMCIA_DEBUG is not set 233# CONFIG_PCMCIA_DEBUG is not set
129CONFIG_PCMCIA=y 234CONFIG_PCMCIA=y
235CONFIG_PCMCIA_LOAD_CIS=y
236CONFIG_PCMCIA_IOCTL=y
130 237
131# 238#
132# PC-card bridges 239# PC-card bridges
@@ -138,11 +245,41 @@ CONFIG_PCMCIA_SA1100=y
138# 245#
139# Kernel Features 246# Kernel Features
140# 247#
141# CONFIG_SMP is not set 248CONFIG_TICK_ONESHOT=y
249# CONFIG_NO_HZ is not set
250# CONFIG_HIGH_RES_TIMERS is not set
251CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
252CONFIG_VMSPLIT_3G=y
253# CONFIG_VMSPLIT_2G is not set
254# CONFIG_VMSPLIT_1G is not set
255CONFIG_PAGE_OFFSET=0xC0000000
256CONFIG_PREEMPT_NONE=y
257# CONFIG_PREEMPT_VOLUNTARY is not set
142# CONFIG_PREEMPT is not set 258# CONFIG_PREEMPT is not set
143CONFIG_DISCONTIGMEM=y 259CONFIG_HZ=100
260# CONFIG_AEABI is not set
261CONFIG_ARCH_SPARSEMEM_ENABLE=y
262CONFIG_ARCH_SPARSEMEM_DEFAULT=y
263# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
264# CONFIG_HIGHMEM is not set
265CONFIG_SELECT_MEMORY_MODEL=y
266# CONFIG_FLATMEM_MANUAL is not set
267# CONFIG_DISCONTIGMEM_MANUAL is not set
268CONFIG_SPARSEMEM_MANUAL=y
269CONFIG_SPARSEMEM=y
270CONFIG_HAVE_MEMORY_PRESENT=y
271CONFIG_SPARSEMEM_EXTREME=y
272CONFIG_SPLIT_PTLOCK_CPUS=4096
273# CONFIG_PHYS_ADDR_T_64BIT is not set
274CONFIG_ZONE_DMA_FLAG=0
275CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set
279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
144# CONFIG_LEDS is not set 280# CONFIG_LEDS is not set
145CONFIG_ALIGNMENT_TRAP=y 281CONFIG_ALIGNMENT_TRAP=y
282# CONFIG_UACCESS_WITH_MEMCPY is not set
146 283
147# 284#
148# Boot options 285# Boot options
@@ -151,22 +288,26 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
151CONFIG_ZBOOT_ROM_BSS=0x0 288CONFIG_ZBOOT_ROM_BSS=0x0
152CONFIG_CMDLINE="" 289CONFIG_CMDLINE=""
153# CONFIG_XIP_KERNEL is not set 290# CONFIG_XIP_KERNEL is not set
291# CONFIG_KEXEC is not set
154 292
155# 293#
156# CPU Frequency scaling 294# CPU Power Management
157# 295#
158CONFIG_CPU_FREQ=y 296CONFIG_CPU_FREQ=y
159CONFIG_CPU_FREQ_TABLE=y
160# CONFIG_CPU_FREQ_DEBUG is not set 297# CONFIG_CPU_FREQ_DEBUG is not set
161CONFIG_CPU_FREQ_STAT=y 298# CONFIG_CPU_FREQ_STAT is not set
162# CONFIG_CPU_FREQ_STAT_DETAILS is not set
163# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set 299# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
300# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
164CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y 301CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
302# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
303# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
165# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set 304# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
166# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set 305# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
167CONFIG_CPU_FREQ_GOV_USERSPACE=y 306CONFIG_CPU_FREQ_GOV_USERSPACE=y
168# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set 307# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
308# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
169CONFIG_CPU_FREQ_SA1100=y 309CONFIG_CPU_FREQ_SA1100=y
310# CONFIG_CPU_IDLE is not set
170 311
171# 312#
172# Floating point emulation 313# Floating point emulation
@@ -183,6 +324,8 @@ CONFIG_FPE_NWFPE=y
183# Userspace binary formats 324# Userspace binary formats
184# 325#
185CONFIG_BINFMT_ELF=y 326CONFIG_BINFMT_ELF=y
327# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
328CONFIG_HAVE_AOUT=y
186# CONFIG_BINFMT_AOUT is not set 329# CONFIG_BINFMT_AOUT is not set
187# CONFIG_BINFMT_MISC is not set 330# CONFIG_BINFMT_MISC is not set
188# CONFIG_ARTHUR is not set 331# CONFIG_ARTHUR is not set
@@ -191,8 +334,120 @@ CONFIG_BINFMT_ELF=y
191# Power management options 334# Power management options
192# 335#
193CONFIG_PM=y 336CONFIG_PM=y
194# CONFIG_PM_LEGACY is not set 337# CONFIG_PM_DEBUG is not set
195# CONFIG_APM is not set 338CONFIG_PM_SLEEP=y
339CONFIG_SUSPEND=y
340CONFIG_SUSPEND_FREEZER=y
341# CONFIG_APM_EMULATION is not set
342# CONFIG_PM_RUNTIME is not set
343CONFIG_ARCH_SUSPEND_POSSIBLE=y
344CONFIG_NET=y
345
346#
347# Networking options
348#
349# CONFIG_PACKET is not set
350CONFIG_UNIX=y
351CONFIG_XFRM=y
352# CONFIG_XFRM_USER is not set
353# CONFIG_XFRM_SUB_POLICY is not set
354# CONFIG_XFRM_MIGRATE is not set
355# CONFIG_XFRM_STATISTICS is not set
356# CONFIG_NET_KEY is not set
357CONFIG_INET=y
358# CONFIG_IP_MULTICAST is not set
359# CONFIG_IP_ADVANCED_ROUTER is not set
360CONFIG_IP_FIB_HASH=y
361# CONFIG_IP_PNP is not set
362# CONFIG_NET_IPIP is not set
363# CONFIG_NET_IPGRE is not set
364# CONFIG_ARPD is not set
365# CONFIG_SYN_COOKIES is not set
366# CONFIG_INET_AH is not set
367# CONFIG_INET_ESP is not set
368# CONFIG_INET_IPCOMP is not set
369# CONFIG_INET_XFRM_TUNNEL is not set
370# CONFIG_INET_TUNNEL is not set
371CONFIG_INET_XFRM_MODE_TRANSPORT=y
372CONFIG_INET_XFRM_MODE_TUNNEL=y
373CONFIG_INET_XFRM_MODE_BEET=y
374CONFIG_INET_LRO=y
375CONFIG_INET_DIAG=y
376CONFIG_INET_TCP_DIAG=y
377# CONFIG_TCP_CONG_ADVANCED is not set
378CONFIG_TCP_CONG_CUBIC=y
379CONFIG_DEFAULT_TCP_CONG="cubic"
380# CONFIG_TCP_MD5SIG is not set
381# CONFIG_IPV6 is not set
382# CONFIG_NETWORK_SECMARK is not set
383# CONFIG_NETFILTER is not set
384# CONFIG_IP_DCCP is not set
385# CONFIG_IP_SCTP is not set
386# CONFIG_RDS 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
411CONFIG_IRDA=m
412
413#
414# IrDA protocols
415#
416CONFIG_IRLAN=m
417CONFIG_IRNET=m
418CONFIG_IRCOMM=m
419# CONFIG_IRDA_ULTRA is not set
420
421#
422# IrDA options
423#
424# CONFIG_IRDA_CACHE_LAST_LSAP is not set
425# CONFIG_IRDA_FAST_RR is not set
426# CONFIG_IRDA_DEBUG is not set
427
428#
429# Infrared-port device drivers
430#
431
432#
433# SIR device drivers
434#
435# CONFIG_IRTTY_SIR is not set
436
437#
438# Dongle support
439#
440
441#
442# FIR device drivers
443#
444CONFIG_SA1100_FIR=m
445# CONFIG_BT is not set
446# CONFIG_AF_RXRPC is not set
447# CONFIG_WIRELESS is not set
448# CONFIG_WIMAX is not set
449# CONFIG_RFKILL is not set
450# CONFIG_NET_9P is not set
196 451
197# 452#
198# Device Drivers 453# Device Drivers
@@ -201,15 +456,17 @@ CONFIG_PM=y
201# 456#
202# Generic Driver Options 457# Generic Driver Options
203# 458#
459CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
204CONFIG_STANDALONE=y 460CONFIG_STANDALONE=y
205CONFIG_PREVENT_FIRMWARE_BUILD=y 461CONFIG_PREVENT_FIRMWARE_BUILD=y
206# CONFIG_FW_LOADER is not set 462CONFIG_FW_LOADER=y
207 463CONFIG_FIRMWARE_IN_KERNEL=y
208# 464CONFIG_EXTRA_FIRMWARE=""
209# Memory Technology Devices (MTD) 465# CONFIG_SYS_HYPERVISOR is not set
210# 466# CONFIG_CONNECTOR is not set
211CONFIG_MTD=y 467CONFIG_MTD=y
212# CONFIG_MTD_DEBUG is not set 468# CONFIG_MTD_DEBUG is not set
469# CONFIG_MTD_TESTS is not set
213# CONFIG_MTD_CONCAT is not set 470# CONFIG_MTD_CONCAT is not set
214CONFIG_MTD_PARTITIONS=y 471CONFIG_MTD_PARTITIONS=y
215CONFIG_MTD_REDBOOT_PARTS=y 472CONFIG_MTD_REDBOOT_PARTS=y
@@ -218,15 +475,20 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
218# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set 475# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
219# CONFIG_MTD_CMDLINE_PARTS is not set 476# CONFIG_MTD_CMDLINE_PARTS is not set
220# CONFIG_MTD_AFS_PARTS is not set 477# CONFIG_MTD_AFS_PARTS is not set
478# CONFIG_MTD_AR7_PARTS is not set
221 479
222# 480#
223# User Modules And Translation Layers 481# User Modules And Translation Layers
224# 482#
225CONFIG_MTD_CHAR=y 483CONFIG_MTD_CHAR=y
484CONFIG_MTD_BLKDEVS=y
226CONFIG_MTD_BLOCK=y 485CONFIG_MTD_BLOCK=y
227# CONFIG_FTL is not set 486# CONFIG_FTL is not set
228# CONFIG_NFTL is not set 487# CONFIG_NFTL is not set
229# CONFIG_INFTL is not set 488# CONFIG_INFTL is not set
489# CONFIG_RFD_FTL is not set
490# CONFIG_SSFDC is not set
491# CONFIG_MTD_OOPS is not set
230 492
231# 493#
232# RAM/ROM/Flash chip drivers 494# RAM/ROM/Flash chip drivers
@@ -249,6 +511,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y
249CONFIG_MTD_CFI_I2=y 511CONFIG_MTD_CFI_I2=y
250# CONFIG_MTD_CFI_I4 is not set 512# CONFIG_MTD_CFI_I4 is not set
251# CONFIG_MTD_CFI_I8 is not set 513# CONFIG_MTD_CFI_I8 is not set
514# CONFIG_MTD_OTP is not set
252CONFIG_MTD_CFI_INTELEXT=y 515CONFIG_MTD_CFI_INTELEXT=y
253# CONFIG_MTD_CFI_AMDSTD is not set 516# CONFIG_MTD_CFI_AMDSTD is not set
254# CONFIG_MTD_CFI_STAA is not set 517# CONFIG_MTD_CFI_STAA is not set
@@ -265,7 +528,7 @@ CONFIG_MTD_CFI_UTIL=y
265# CONFIG_MTD_PHYSMAP is not set 528# CONFIG_MTD_PHYSMAP is not set
266# CONFIG_MTD_ARM_INTEGRATOR is not set 529# CONFIG_MTD_ARM_INTEGRATOR is not set
267CONFIG_MTD_SA1100=y 530CONFIG_MTD_SA1100=y
268# CONFIG_MTD_EDB7312 is not set 531# CONFIG_MTD_PLATRAM is not set
269 532
270# 533#
271# Self-contained MTD device drivers 534# Self-contained MTD device drivers
@@ -273,7 +536,6 @@ CONFIG_MTD_SA1100=y
273# CONFIG_MTD_SLRAM is not set 536# CONFIG_MTD_SLRAM is not set
274# CONFIG_MTD_PHRAM is not set 537# CONFIG_MTD_PHRAM is not set
275# CONFIG_MTD_MTDRAM is not set 538# CONFIG_MTD_MTDRAM is not set
276# CONFIG_MTD_BLKMTD is not set
277# CONFIG_MTD_BLOCK2MTD is not set 539# CONFIG_MTD_BLOCK2MTD is not set
278 540
279# 541#
@@ -282,26 +544,21 @@ CONFIG_MTD_SA1100=y
282# CONFIG_MTD_DOC2000 is not set 544# CONFIG_MTD_DOC2000 is not set
283# CONFIG_MTD_DOC2001 is not set 545# CONFIG_MTD_DOC2001 is not set
284# CONFIG_MTD_DOC2001PLUS is not set 546# CONFIG_MTD_DOC2001PLUS is not set
285
286#
287# NAND Flash Device Drivers
288#
289# CONFIG_MTD_NAND is not set 547# CONFIG_MTD_NAND is not set
548# CONFIG_MTD_ONENAND is not set
290 549
291# 550#
292# Parallel port support 551# LPDDR flash memory drivers
293# 552#
294# CONFIG_PARPORT is not set 553# CONFIG_MTD_LPDDR is not set
295 554
296# 555#
297# Plug and Play support 556# UBI - Unsorted block images
298# 557#
558# CONFIG_MTD_UBI is not set
559# CONFIG_PARPORT is not set
299# CONFIG_PNP is not set 560# CONFIG_PNP is not set
300 561CONFIG_BLK_DEV=y
301#
302# Block devices
303#
304# CONFIG_BLK_DEV_XD is not set
305# CONFIG_BLK_DEV_COW_COMMON is not set 562# CONFIG_BLK_DEV_COW_COMMON is not set
306CONFIG_BLK_DEV_LOOP=m 563CONFIG_BLK_DEV_LOOP=m
307# CONFIG_BLK_DEV_CRYPTOLOOP is not set 564# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -309,212 +566,58 @@ CONFIG_BLK_DEV_LOOP=m
309CONFIG_BLK_DEV_RAM=y 566CONFIG_BLK_DEV_RAM=y
310CONFIG_BLK_DEV_RAM_COUNT=16 567CONFIG_BLK_DEV_RAM_COUNT=16
311CONFIG_BLK_DEV_RAM_SIZE=8192 568CONFIG_BLK_DEV_RAM_SIZE=8192
312CONFIG_BLK_DEV_INITRD=y 569# CONFIG_BLK_DEV_XIP is not set
313CONFIG_INITRAMFS_SOURCE=""
314# CONFIG_CDROM_PKTCDVD is not set 570# CONFIG_CDROM_PKTCDVD is not set
315
316#
317# IO Schedulers
318#
319CONFIG_IOSCHED_NOOP=y
320CONFIG_IOSCHED_AS=y
321CONFIG_IOSCHED_DEADLINE=y
322CONFIG_IOSCHED_CFQ=y
323# CONFIG_ATA_OVER_ETH is not set 571# CONFIG_ATA_OVER_ETH is not set
572# CONFIG_MG_DISK is not set
573# CONFIG_MISC_DEVICES is not set
574CONFIG_HAVE_IDE=y
575CONFIG_IDE=y
324 576
325# 577#
326# ATA/ATAPI/MFM/RLL support 578# Please see Documentation/ide/ide.txt for help/info on IDE drives
327#
328CONFIG_IDE=m
329CONFIG_BLK_DEV_IDE=m
330
331#
332# Please see Documentation/ide.txt for help/info on IDE drives
333# 579#
334# CONFIG_BLK_DEV_IDE_SATA is not set 580# CONFIG_BLK_DEV_IDE_SATA is not set
335CONFIG_BLK_DEV_IDEDISK=m 581CONFIG_IDE_GD=y
336# CONFIG_IDEDISK_MULTI_MODE is not set 582CONFIG_IDE_GD_ATA=y
337# CONFIG_BLK_DEV_IDECS is not set 583# CONFIG_IDE_GD_ATAPI is not set
338CONFIG_BLK_DEV_IDECD=m 584CONFIG_BLK_DEV_IDECS=y
585# CONFIG_BLK_DEV_IDECD is not set
339# CONFIG_BLK_DEV_IDETAPE is not set 586# CONFIG_BLK_DEV_IDETAPE is not set
340# CONFIG_BLK_DEV_IDEFLOPPY is not set
341# CONFIG_IDE_TASK_IOCTL is not set 587# CONFIG_IDE_TASK_IOCTL is not set
588CONFIG_IDE_PROC_FS=y
342 589
343# 590#
344# IDE chipset support/bugfixes 591# IDE chipset support/bugfixes
345# 592#
346CONFIG_IDE_GENERIC=m 593# CONFIG_BLK_DEV_PLATFORM is not set
347# CONFIG_IDE_ARM is not set
348# CONFIG_IDE_CHIPSETS is not set
349# CONFIG_BLK_DEV_IDEDMA is not set 594# CONFIG_BLK_DEV_IDEDMA is not set
350# CONFIG_IDEDMA_AUTO is not set
351# CONFIG_BLK_DEV_HD is not set
352 595
353# 596#
354# SCSI device support 597# SCSI device support
355# 598#
599# CONFIG_RAID_ATTRS is not set
356# CONFIG_SCSI is not set 600# CONFIG_SCSI is not set
357 601# CONFIG_SCSI_DMA is not set
358# 602# CONFIG_SCSI_NETLINK is not set
359# Multi-device support (RAID and LVM) 603# CONFIG_ATA is not set
360#
361# CONFIG_MD is not set 604# CONFIG_MD is not set
362
363#
364# Fusion MPT device support
365#
366
367#
368# IEEE 1394 (FireWire) support
369#
370
371#
372# I2O device support
373#
374
375#
376# Networking support
377#
378CONFIG_NET=y
379
380#
381# Networking options
382#
383# CONFIG_PACKET is not set
384CONFIG_UNIX=y
385# CONFIG_NET_KEY is not set
386CONFIG_INET=y
387# CONFIG_IP_MULTICAST is not set
388# CONFIG_IP_ADVANCED_ROUTER is not set
389# CONFIG_IP_PNP is not set
390# CONFIG_NET_IPIP is not set
391# CONFIG_NET_IPGRE is not set
392# CONFIG_ARPD is not set
393# CONFIG_SYN_COOKIES is not set
394# CONFIG_INET_AH is not set
395# CONFIG_INET_ESP is not set
396# CONFIG_INET_IPCOMP is not set
397# CONFIG_INET_TUNNEL is not set
398# CONFIG_IP_TCPDIAG is not set
399# CONFIG_IP_TCPDIAG_IPV6 is not set
400# CONFIG_IPV6 is not set
401# CONFIG_NETFILTER is not set
402
403#
404# SCTP Configuration (EXPERIMENTAL)
405#
406# CONFIG_IP_SCTP is not set
407# CONFIG_ATM is not set
408# CONFIG_BRIDGE is not set
409# CONFIG_VLAN_8021Q is not set
410# CONFIG_DECNET is not set
411# CONFIG_LLC2 is not set
412# CONFIG_IPX is not set
413# CONFIG_ATALK is not set
414# CONFIG_X25 is not set
415# CONFIG_LAPB is not set
416# CONFIG_NET_DIVERT is not set
417# CONFIG_ECONET is not set
418# CONFIG_WAN_ROUTER is not set
419
420#
421# QoS and/or fair queueing
422#
423# CONFIG_NET_SCHED is not set
424# CONFIG_NET_CLS_ROUTE is not set
425
426#
427# Network testing
428#
429# CONFIG_NET_PKTGEN is not set
430# CONFIG_NETPOLL is not set
431# CONFIG_NET_POLL_CONTROLLER is not set
432# CONFIG_HAMRADIO is not set
433CONFIG_IRDA=m
434
435#
436# IrDA protocols
437#
438CONFIG_IRLAN=m
439CONFIG_IRNET=m
440CONFIG_IRCOMM=m
441# CONFIG_IRDA_ULTRA is not set
442
443#
444# IrDA options
445#
446# CONFIG_IRDA_CACHE_LAST_LSAP is not set
447# CONFIG_IRDA_FAST_RR is not set
448# CONFIG_IRDA_DEBUG is not set
449
450#
451# Infrared-port device drivers
452#
453
454#
455# SIR device drivers
456#
457# CONFIG_IRTTY_SIR is not set
458
459#
460# Dongle support
461#
462
463#
464# Old SIR device drivers
465#
466# CONFIG_IRPORT_SIR is not set
467
468#
469# Old Serial dongle support
470#
471
472#
473# FIR device drivers
474#
475# CONFIG_NSC_FIR is not set
476# CONFIG_WINBOND_FIR is not set
477# CONFIG_SMC_IRCC_FIR is not set
478# CONFIG_ALI_FIR is not set
479CONFIG_SA1100_FIR=m
480# CONFIG_VIA_FIR is not set
481# CONFIG_BT is not set
482CONFIG_NETDEVICES=y 605CONFIG_NETDEVICES=y
483# CONFIG_DUMMY is not set 606# CONFIG_DUMMY is not set
484# CONFIG_BONDING is not set 607# CONFIG_BONDING is not set
608# CONFIG_MACVLAN is not set
485# CONFIG_EQUALIZER is not set 609# CONFIG_EQUALIZER is not set
486# CONFIG_TUN is not set 610# CONFIG_TUN is not set
487 611# CONFIG_VETH is not set
488#
489# ARCnet devices
490#
491# CONFIG_ARCNET is not set 612# CONFIG_ARCNET is not set
492
493#
494# Ethernet (10 or 100Mbit)
495#
496# CONFIG_NET_ETHERNET is not set 613# CONFIG_NET_ETHERNET is not set
497 614# CONFIG_NETDEV_1000 is not set
498# 615# CONFIG_NETDEV_10000 is not set
499# Ethernet (1000 Mbit)
500#
501
502#
503# Ethernet (10000 Mbit)
504#
505
506#
507# Token Ring devices
508#
509# CONFIG_TR is not set 616# CONFIG_TR is not set
617# CONFIG_WLAN is not set
510 618
511# 619#
512# Wireless LAN (non-hamradio) 620# Enable WiMAX (Networking options) to see the WiMAX drivers
513#
514# CONFIG_NET_RADIO is not set
515
516#
517# PCMCIA network device support
518# 621#
519CONFIG_NET_PCMCIA=y 622CONFIG_NET_PCMCIA=y
520# CONFIG_PCMCIA_3C589 is not set 623# CONFIG_PCMCIA_3C589 is not set
@@ -525,10 +628,6 @@ CONFIG_PCMCIA_PCNET=y
525# CONFIG_PCMCIA_SMC91C92 is not set 628# CONFIG_PCMCIA_SMC91C92 is not set
526# CONFIG_PCMCIA_XIRC2PS is not set 629# CONFIG_PCMCIA_XIRC2PS is not set
527# CONFIG_PCMCIA_AXNET is not set 630# CONFIG_PCMCIA_AXNET is not set
528
529#
530# Wan interfaces
531#
532# CONFIG_WAN is not set 631# CONFIG_WAN is not set
533CONFIG_PPP=m 632CONFIG_PPP=m
534# CONFIG_PPP_MULTILINK is not set 633# CONFIG_PPP_MULTILINK is not set
@@ -537,20 +636,23 @@ CONFIG_PPP_ASYNC=m
537# CONFIG_PPP_SYNC_TTY is not set 636# CONFIG_PPP_SYNC_TTY is not set
538CONFIG_PPP_DEFLATE=m 637CONFIG_PPP_DEFLATE=m
539CONFIG_PPP_BSDCOMP=m 638CONFIG_PPP_BSDCOMP=m
639# CONFIG_PPP_MPPE is not set
540# CONFIG_PPPOE is not set 640# CONFIG_PPPOE is not set
641# CONFIG_PPPOL2TP is not set
541# CONFIG_SLIP is not set 642# CONFIG_SLIP is not set
542# CONFIG_SHAPER is not set 643CONFIG_SLHC=m
543# CONFIG_NETCONSOLE is not set 644# CONFIG_NETCONSOLE is not set
544 645# CONFIG_NETPOLL is not set
545# 646# CONFIG_NET_POLL_CONTROLLER is not set
546# ISDN subsystem
547#
548# CONFIG_ISDN is not set 647# CONFIG_ISDN is not set
648# CONFIG_PHONE is not set
549 649
550# 650#
551# Input device support 651# Input device support
552# 652#
553CONFIG_INPUT=y 653CONFIG_INPUT=y
654# CONFIG_INPUT_FF_MEMLESS is not set
655# CONFIG_INPUT_POLLDEV is not set
554 656
555# 657#
556# Userland interfaces 658# Userland interfaces
@@ -560,7 +662,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
560CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 662CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
561CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 663CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
562# CONFIG_INPUT_JOYDEV is not set 664# CONFIG_INPUT_JOYDEV is not set
563# CONFIG_INPUT_TSDEV is not set
564# CONFIG_INPUT_EVDEV is not set 665# CONFIG_INPUT_EVDEV is not set
565# CONFIG_INPUT_EVBUG is not set 666# CONFIG_INPUT_EVBUG is not set
566 667
@@ -568,47 +669,42 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
568# Input Device Drivers 669# Input Device Drivers
569# 670#
570CONFIG_INPUT_KEYBOARD=y 671CONFIG_INPUT_KEYBOARD=y
571CONFIG_KEYBOARD_ATKBD=y 672# CONFIG_KEYBOARD_ATKBD is not set
572# CONFIG_KEYBOARD_SUNKBD is not set
573# CONFIG_KEYBOARD_LKKBD is not set 673# CONFIG_KEYBOARD_LKKBD is not set
574# CONFIG_KEYBOARD_XTKBD is not set 674CONFIG_KEYBOARD_GPIO=y
675# CONFIG_KEYBOARD_MATRIX is not set
575# CONFIG_KEYBOARD_NEWTON is not set 676# CONFIG_KEYBOARD_NEWTON is not set
576CONFIG_INPUT_MOUSE=y 677# CONFIG_KEYBOARD_OPENCORES is not set
577CONFIG_MOUSE_PS2=y 678# CONFIG_KEYBOARD_STOWAWAY is not set
578# CONFIG_MOUSE_SERIAL is not set 679# CONFIG_KEYBOARD_SUNKBD is not set
579# CONFIG_MOUSE_INPORT is not set 680# CONFIG_KEYBOARD_XTKBD is not set
580# CONFIG_MOUSE_LOGIBM is not set 681# CONFIG_INPUT_MOUSE is not set
581# CONFIG_MOUSE_PC110PAD is not set
582# CONFIG_MOUSE_VSXXXAA is not set
583# CONFIG_INPUT_JOYSTICK is not set 682# CONFIG_INPUT_JOYSTICK is not set
683# CONFIG_INPUT_TABLET is not set
584# CONFIG_INPUT_TOUCHSCREEN is not set 684# CONFIG_INPUT_TOUCHSCREEN is not set
585# CONFIG_INPUT_MISC is not set 685# CONFIG_INPUT_MISC is not set
586 686
587# 687#
588# Hardware I/O ports 688# Hardware I/O ports
589# 689#
590CONFIG_SERIO=y 690# CONFIG_SERIO is not set
591CONFIG_SERIO_SERPORT=y
592CONFIG_SERIO_LIBPS2=y
593# CONFIG_SERIO_RAW is not set
594# CONFIG_GAMEPORT is not set 691# CONFIG_GAMEPORT is not set
595CONFIG_SOUND_GAMEPORT=y
596 692
597# 693#
598# Character devices 694# Character devices
599# 695#
600CONFIG_VT=y 696CONFIG_VT=y
697CONFIG_CONSOLE_TRANSLATIONS=y
601CONFIG_VT_CONSOLE=y 698CONFIG_VT_CONSOLE=y
602CONFIG_HW_CONSOLE=y 699CONFIG_HW_CONSOLE=y
700# CONFIG_VT_HW_CONSOLE_BINDING is not set
701CONFIG_DEVKMEM=y
603# CONFIG_SERIAL_NONSTANDARD is not set 702# CONFIG_SERIAL_NONSTANDARD is not set
604 703
605# 704#
606# Serial drivers 705# Serial drivers
607# 706#
608CONFIG_SERIAL_8250=m 707# CONFIG_SERIAL_8250 is not set
609# CONFIG_SERIAL_8250_CS is not set
610CONFIG_SERIAL_8250_NR_UARTS=4
611# CONFIG_SERIAL_8250_EXTENDED is not set
612 708
613# 709#
614# Non-8250 serial port support 710# Non-8250 serial port support
@@ -618,71 +714,125 @@ CONFIG_SERIAL_SA1100_CONSOLE=y
618CONFIG_SERIAL_CORE=y 714CONFIG_SERIAL_CORE=y
619CONFIG_SERIAL_CORE_CONSOLE=y 715CONFIG_SERIAL_CORE_CONSOLE=y
620CONFIG_UNIX98_PTYS=y 716CONFIG_UNIX98_PTYS=y
717# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
621CONFIG_LEGACY_PTYS=y 718CONFIG_LEGACY_PTYS=y
622CONFIG_LEGACY_PTY_COUNT=256 719CONFIG_LEGACY_PTY_COUNT=256
720# CONFIG_IPMI_HANDLER is not set
721# CONFIG_HW_RANDOM is not set
722# CONFIG_DTLK is not set
723# CONFIG_R3964 is not set
623 724
624# 725#
625# IPMI 726# PCMCIA character devices
626# 727#
627# CONFIG_IPMI_HANDLER is not set 728# CONFIG_SYNCLINK_CS is not set
729# CONFIG_CARDMAN_4000 is not set
730# CONFIG_CARDMAN_4040 is not set
731# CONFIG_IPWIRELESS is not set
732# CONFIG_RAW_DRIVER is not set
733# CONFIG_TCG_TPM is not set
734CONFIG_DEVPORT=y
735# CONFIG_I2C is not set
736# CONFIG_SPI is not set
628 737
629# 738#
630# Watchdog Cards 739# PPS support
631# 740#
632# CONFIG_WATCHDOG is not set 741# CONFIG_PPS is not set
633# CONFIG_NVRAM is not set 742CONFIG_ARCH_REQUIRE_GPIOLIB=y
634# CONFIG_RTC is not set 743CONFIG_GPIOLIB=y
635# CONFIG_DTLK is not set 744# CONFIG_GPIO_SYSFS is not set
636# CONFIG_R3964 is not set
637 745
638# 746#
639# Ftape, the floppy tape device driver 747# Memory mapped GPIO expanders:
640# 748#
641# CONFIG_DRM is not set
642 749
643# 750#
644# PCMCIA character devices 751# I2C GPIO expanders:
645# 752#
646# CONFIG_SYNCLINK_CS is not set
647# CONFIG_RAW_DRIVER is not set
648 753
649# 754#
650# TPM devices 755# PCI GPIO expanders:
651# 756#
652 757
653# 758#
654# I2C support 759# SPI GPIO expanders:
655# 760#
656# CONFIG_I2C is not set
657 761
658# 762#
659# Misc devices 763# AC97 GPIO expanders:
660# 764#
765# CONFIG_W1 is not set
766# CONFIG_POWER_SUPPLY is not set
767# CONFIG_HWMON is not set
768# CONFIG_THERMAL is not set
769# CONFIG_WATCHDOG is not set
770CONFIG_SSB_POSSIBLE=y
661 771
662# 772#
663# Multimedia devices 773# Sonics Silicon Backplane
664# 774#
665# CONFIG_VIDEO_DEV is not set 775# CONFIG_SSB is not set
666 776
667# 777#
668# Digital Video Broadcasting Devices 778# Multifunction device drivers
669# 779#
670# CONFIG_DVB is not set 780# CONFIG_MFD_CORE is not set
781# CONFIG_MFD_SM501 is not set
782# CONFIG_MFD_ASIC3 is not set
783CONFIG_HTC_EGPIO=y
784# CONFIG_HTC_PASIC3 is not set
785# CONFIG_MFD_TMIO is not set
786# CONFIG_MFD_T7L66XB is not set
787# CONFIG_MFD_TC6387XB is not set
788# CONFIG_MFD_TC6393XB is not set
789
790#
791# Multimedia Capabilities Port drivers
792#
793# CONFIG_MCP_SA11X0 is not set
794# CONFIG_REGULATOR is not set
795# CONFIG_MEDIA_SUPPORT is not set
671 796
672# 797#
673# Graphics support 798# Graphics support
674# 799#
800# CONFIG_VGASTATE is not set
801# CONFIG_VIDEO_OUTPUT_CONTROL is not set
675CONFIG_FB=y 802CONFIG_FB=y
803# CONFIG_FIRMWARE_EDID is not set
804# CONFIG_FB_DDC is not set
805# CONFIG_FB_BOOT_VESA_SUPPORT is not set
676CONFIG_FB_CFB_FILLRECT=y 806CONFIG_FB_CFB_FILLRECT=y
677CONFIG_FB_CFB_COPYAREA=y 807CONFIG_FB_CFB_COPYAREA=y
678CONFIG_FB_CFB_IMAGEBLIT=y 808CONFIG_FB_CFB_IMAGEBLIT=y
679CONFIG_FB_SOFT_CURSOR=y 809# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
810# CONFIG_FB_SYS_FILLRECT is not set
811# CONFIG_FB_SYS_COPYAREA is not set
812# CONFIG_FB_SYS_IMAGEBLIT is not set
813# CONFIG_FB_FOREIGN_ENDIAN is not set
814# CONFIG_FB_SYS_FOPS is not set
815# CONFIG_FB_SVGALIB is not set
680# CONFIG_FB_MACMODES is not set 816# CONFIG_FB_MACMODES is not set
817# CONFIG_FB_BACKLIGHT is not set
681# CONFIG_FB_MODE_HELPERS is not set 818# CONFIG_FB_MODE_HELPERS is not set
682# CONFIG_FB_TILEBLITTING is not set 819# CONFIG_FB_TILEBLITTING is not set
820
821#
822# Frame buffer hardware drivers
823#
683CONFIG_FB_SA1100=y 824CONFIG_FB_SA1100=y
684# CONFIG_FB_S1D13XXX is not set 825# CONFIG_FB_S1D13XXX is not set
685# CONFIG_FB_VIRTUAL is not set 826# CONFIG_FB_VIRTUAL is not set
827# CONFIG_FB_METRONOME is not set
828# CONFIG_FB_MB862XX is not set
829# CONFIG_FB_BROADSHEET is not set
830# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
831
832#
833# Display device support
834#
835# CONFIG_DISPLAY_SUPPORT is not set
686 836
687# 837#
688# Console display driver support 838# Console display driver support
@@ -691,65 +841,54 @@ CONFIG_FB_SA1100=y
691# CONFIG_MDA_CONSOLE is not set 841# CONFIG_MDA_CONSOLE is not set
692CONFIG_DUMMY_CONSOLE=y 842CONFIG_DUMMY_CONSOLE=y
693# CONFIG_FRAMEBUFFER_CONSOLE is not set 843# CONFIG_FRAMEBUFFER_CONSOLE is not set
694
695#
696# Logo configuration
697#
698# CONFIG_LOGO is not set 844# CONFIG_LOGO is not set
699# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 845# CONFIG_SOUND is not set
700 846# CONFIG_HID_SUPPORT is not set
701# 847# CONFIG_USB_SUPPORT is not set
702# Sound 848# CONFIG_MMC is not set
703# 849# CONFIG_MEMSTICK is not set
704CONFIG_SOUND=y 850# CONFIG_NEW_LEDS is not set
705 851# CONFIG_ACCESSIBILITY is not set
706# 852CONFIG_RTC_LIB=y
707# Advanced Linux Sound Architecture 853# CONFIG_RTC_CLASS is not set
708# 854# CONFIG_DMADEVICES is not set
709# CONFIG_SND is not set 855# CONFIG_AUXDISPLAY is not set
710 856# CONFIG_UIO is not set
711#
712# Open Sound System
713#
714# CONFIG_SOUND_PRIME is not set
715
716#
717# USB support
718#
719CONFIG_USB_ARCH_HAS_HCD=y
720# CONFIG_USB_ARCH_HAS_OHCI is not set
721# CONFIG_USB is not set
722 857
723# 858#
724# USB Gadget Support 859# TI VLYNQ
725# 860#
726# CONFIG_USB_GADGET is not set 861# CONFIG_STAGING is not set
727
728#
729# MMC/SD Card support
730#
731# CONFIG_MMC is not set
732 862
733# 863#
734# File systems 864# File systems
735# 865#
736CONFIG_EXT2_FS=y 866CONFIG_EXT2_FS=y
737# CONFIG_EXT2_FS_XATTR is not set 867# CONFIG_EXT2_FS_XATTR is not set
868# CONFIG_EXT2_FS_XIP is not set
738# CONFIG_EXT3_FS is not set 869# CONFIG_EXT3_FS is not set
739# CONFIG_JBD is not set 870# CONFIG_EXT4_FS is not set
740# CONFIG_REISERFS_FS is not set 871# CONFIG_REISERFS_FS is not set
741# CONFIG_JFS_FS is not set 872# CONFIG_JFS_FS is not set
742 873# CONFIG_FS_POSIX_ACL is not set
743#
744# XFS support
745#
746# CONFIG_XFS_FS is not set 874# CONFIG_XFS_FS is not set
747# CONFIG_MINIX_FS is not set 875# CONFIG_OCFS2_FS is not set
748# CONFIG_ROMFS_FS is not set 876# CONFIG_BTRFS_FS is not set
749# CONFIG_QUOTA is not set 877# CONFIG_NILFS2_FS is not set
878CONFIG_FILE_LOCKING=y
879CONFIG_FSNOTIFY=y
750CONFIG_DNOTIFY=y 880CONFIG_DNOTIFY=y
881# CONFIG_INOTIFY is not set
882CONFIG_INOTIFY_USER=y
883# CONFIG_QUOTA is not set
751# CONFIG_AUTOFS_FS is not set 884# CONFIG_AUTOFS_FS is not set
752# CONFIG_AUTOFS4_FS is not set 885# CONFIG_AUTOFS4_FS is not set
886# CONFIG_FUSE_FS is not set
887
888#
889# Caches
890#
891# CONFIG_FSCACHE is not set
753 892
754# 893#
755# CD-ROM/DVD Filesystems 894# CD-ROM/DVD Filesystems
@@ -771,16 +910,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
771# Pseudo filesystems 910# Pseudo filesystems
772# 911#
773CONFIG_PROC_FS=y 912CONFIG_PROC_FS=y
913CONFIG_PROC_SYSCTL=y
914CONFIG_PROC_PAGE_MONITOR=y
774CONFIG_SYSFS=y 915CONFIG_SYSFS=y
775# CONFIG_DEVFS_FS is not set
776# CONFIG_DEVPTS_FS_XATTR is not set
777# CONFIG_TMPFS is not set 916# CONFIG_TMPFS is not set
778# CONFIG_HUGETLB_PAGE is not set 917# CONFIG_HUGETLB_PAGE is not set
779CONFIG_RAMFS=y 918# CONFIG_CONFIGFS_FS is not set
780 919CONFIG_MISC_FILESYSTEMS=y
781#
782# Miscellaneous filesystems
783#
784# CONFIG_ADFS_FS is not set 920# CONFIG_ADFS_FS is not set
785# CONFIG_AFFS_FS is not set 921# CONFIG_AFFS_FS is not set
786# CONFIG_HFS_FS is not set 922# CONFIG_HFS_FS is not set
@@ -788,34 +924,37 @@ CONFIG_RAMFS=y
788# CONFIG_BEFS_FS is not set 924# CONFIG_BEFS_FS is not set
789# CONFIG_BFS_FS is not set 925# CONFIG_BFS_FS is not set
790# CONFIG_EFS_FS is not set 926# CONFIG_EFS_FS is not set
791# CONFIG_JFFS_FS is not set
792CONFIG_JFFS2_FS=y 927CONFIG_JFFS2_FS=y
793CONFIG_JFFS2_FS_DEBUG=0 928CONFIG_JFFS2_FS_DEBUG=0
794# CONFIG_JFFS2_FS_NAND is not set 929CONFIG_JFFS2_FS_WRITEBUFFER=y
795# CONFIG_JFFS2_FS_NOR_ECC is not set 930# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
931# CONFIG_JFFS2_SUMMARY is not set
932# CONFIG_JFFS2_FS_XATTR is not set
796# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 933# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
797CONFIG_JFFS2_ZLIB=y 934CONFIG_JFFS2_ZLIB=y
935# CONFIG_JFFS2_LZO is not set
798CONFIG_JFFS2_RTIME=y 936CONFIG_JFFS2_RTIME=y
799# CONFIG_JFFS2_RUBIN is not set 937# CONFIG_JFFS2_RUBIN is not set
800CONFIG_CRAMFS=m 938CONFIG_CRAMFS=m
939# CONFIG_SQUASHFS is not set
801# CONFIG_VXFS_FS is not set 940# CONFIG_VXFS_FS is not set
941# CONFIG_MINIX_FS is not set
942# CONFIG_OMFS_FS is not set
802# CONFIG_HPFS_FS is not set 943# CONFIG_HPFS_FS is not set
803# CONFIG_QNX4FS_FS is not set 944# CONFIG_QNX4FS_FS is not set
945# CONFIG_ROMFS_FS is not set
804# CONFIG_SYSV_FS is not set 946# CONFIG_SYSV_FS is not set
805# CONFIG_UFS_FS is not set 947# CONFIG_UFS_FS is not set
806 948CONFIG_NETWORK_FILESYSTEMS=y
807#
808# Network File Systems
809#
810CONFIG_NFS_FS=y 949CONFIG_NFS_FS=y
811# CONFIG_NFS_V3 is not set 950# CONFIG_NFS_V3 is not set
812# CONFIG_NFS_V4 is not set 951# CONFIG_NFS_V4 is not set
813# CONFIG_NFS_DIRECTIO is not set
814CONFIG_NFSD=m 952CONFIG_NFSD=m
815# CONFIG_NFSD_V3 is not set 953# CONFIG_NFSD_V3 is not set
816CONFIG_NFSD_TCP=y 954# CONFIG_NFSD_V4 is not set
817CONFIG_LOCKD=y 955CONFIG_LOCKD=y
818CONFIG_EXPORTFS=m 956CONFIG_EXPORTFS=m
957CONFIG_NFS_COMMON=y
819CONFIG_SUNRPC=y 958CONFIG_SUNRPC=y
820# CONFIG_RPCSEC_GSS_KRB5 is not set 959# CONFIG_RPCSEC_GSS_KRB5 is not set
821# CONFIG_RPCSEC_GSS_SPKM3 is not set 960# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -831,10 +970,6 @@ CONFIG_SMB_FS=m
831# 970#
832# CONFIG_PARTITION_ADVANCED is not set 971# CONFIG_PARTITION_ADVANCED is not set
833CONFIG_MSDOS_PARTITION=y 972CONFIG_MSDOS_PARTITION=y
834
835#
836# Native Language Support
837#
838CONFIG_NLS=y 973CONFIG_NLS=y
839CONFIG_NLS_DEFAULT="iso8859-1" 974CONFIG_NLS_DEFAULT="iso8859-1"
840# CONFIG_NLS_CODEPAGE_437 is not set 975# CONFIG_NLS_CODEPAGE_437 is not set
@@ -875,20 +1010,34 @@ CONFIG_NLS_DEFAULT="iso8859-1"
875# CONFIG_NLS_KOI8_R is not set 1010# CONFIG_NLS_KOI8_R is not set
876# CONFIG_NLS_KOI8_U is not set 1011# CONFIG_NLS_KOI8_U is not set
877# CONFIG_NLS_UTF8 is not set 1012# CONFIG_NLS_UTF8 is not set
878 1013# CONFIG_DLM is not set
879#
880# Profiling support
881#
882# CONFIG_PROFILING is not set
883 1014
884# 1015#
885# Kernel hacking 1016# Kernel hacking
886# 1017#
887# CONFIG_PRINTK_TIME is not set 1018# CONFIG_PRINTK_TIME is not set
1019CONFIG_ENABLE_WARN_DEPRECATED=y
1020CONFIG_ENABLE_MUST_CHECK=y
1021CONFIG_FRAME_WARN=1024
1022# CONFIG_MAGIC_SYSRQ is not set
1023# CONFIG_STRIP_ASM_SYMS is not set
1024# CONFIG_UNUSED_SYMBOLS is not set
1025# CONFIG_DEBUG_FS is not set
1026# CONFIG_HEADERS_CHECK is not set
888# CONFIG_DEBUG_KERNEL is not set 1027# CONFIG_DEBUG_KERNEL is not set
889CONFIG_LOG_BUF_SHIFT=14 1028# CONFIG_SLUB_DEBUG_ON is not set
1029# CONFIG_SLUB_STATS is not set
890CONFIG_DEBUG_BUGVERBOSE=y 1030CONFIG_DEBUG_BUGVERBOSE=y
1031CONFIG_DEBUG_MEMORY_INIT=y
891CONFIG_FRAME_POINTER=y 1032CONFIG_FRAME_POINTER=y
1033# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1034# CONFIG_LATENCYTOP is not set
1035# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1036CONFIG_HAVE_FUNCTION_TRACER=y
1037CONFIG_TRACING_SUPPORT=y
1038# CONFIG_FTRACE is not set
1039# CONFIG_SAMPLES is not set
1040CONFIG_HAVE_ARCH_KGDB=y
892# CONFIG_DEBUG_USER is not set 1041# CONFIG_DEBUG_USER is not set
893 1042
894# 1043#
@@ -896,21 +1045,120 @@ CONFIG_FRAME_POINTER=y
896# 1045#
897# CONFIG_KEYS is not set 1046# CONFIG_KEYS is not set
898# CONFIG_SECURITY is not set 1047# CONFIG_SECURITY is not set
1048# CONFIG_SECURITYFS is not set
1049# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1050CONFIG_CRYPTO=y
1051
1052#
1053# Crypto core or helper
1054#
1055# CONFIG_CRYPTO_FIPS is not set
1056CONFIG_CRYPTO_ALGAPI=m
1057CONFIG_CRYPTO_ALGAPI2=m
1058CONFIG_CRYPTO_RNG=m
1059CONFIG_CRYPTO_RNG2=m
1060# CONFIG_CRYPTO_MANAGER is not set
1061# CONFIG_CRYPTO_MANAGER2 is not set
1062# CONFIG_CRYPTO_GF128MUL is not set
1063# CONFIG_CRYPTO_NULL is not set
1064# CONFIG_CRYPTO_CRYPTD is not set
1065# CONFIG_CRYPTO_AUTHENC is not set
1066# CONFIG_CRYPTO_TEST is not set
1067
1068#
1069# Authenticated Encryption with Associated Data
1070#
1071# CONFIG_CRYPTO_CCM is not set
1072# CONFIG_CRYPTO_GCM is not set
1073# CONFIG_CRYPTO_SEQIV is not set
1074
1075#
1076# Block modes
1077#
1078# CONFIG_CRYPTO_CBC is not set
1079# CONFIG_CRYPTO_CTR is not set
1080# CONFIG_CRYPTO_CTS is not set
1081# CONFIG_CRYPTO_ECB is not set
1082# CONFIG_CRYPTO_LRW is not set
1083# CONFIG_CRYPTO_PCBC is not set
1084# CONFIG_CRYPTO_XTS is not set
1085
1086#
1087# Hash modes
1088#
1089# CONFIG_CRYPTO_HMAC is not set
1090# CONFIG_CRYPTO_XCBC is not set
1091# CONFIG_CRYPTO_VMAC is not set
1092
1093#
1094# Digest
1095#
1096# CONFIG_CRYPTO_CRC32C is not set
1097# CONFIG_CRYPTO_GHASH is not set
1098# CONFIG_CRYPTO_MD4 is not set
1099# CONFIG_CRYPTO_MD5 is not set
1100# CONFIG_CRYPTO_MICHAEL_MIC is not set
1101# CONFIG_CRYPTO_RMD128 is not set
1102# CONFIG_CRYPTO_RMD160 is not set
1103# CONFIG_CRYPTO_RMD256 is not set
1104# CONFIG_CRYPTO_RMD320 is not set
1105# CONFIG_CRYPTO_SHA1 is not set
1106# CONFIG_CRYPTO_SHA256 is not set
1107# CONFIG_CRYPTO_SHA512 is not set
1108# CONFIG_CRYPTO_TGR192 is not set
1109# CONFIG_CRYPTO_WP512 is not set
1110
1111#
1112# Ciphers
1113#
1114CONFIG_CRYPTO_AES=m
1115# CONFIG_CRYPTO_ANUBIS is not set
1116# CONFIG_CRYPTO_ARC4 is not set
1117# CONFIG_CRYPTO_BLOWFISH is not set
1118# CONFIG_CRYPTO_CAMELLIA is not set
1119# CONFIG_CRYPTO_CAST5 is not set
1120# CONFIG_CRYPTO_CAST6 is not set
1121# CONFIG_CRYPTO_DES is not set
1122# CONFIG_CRYPTO_FCRYPT is not set
1123# CONFIG_CRYPTO_KHAZAD is not set
1124# CONFIG_CRYPTO_SALSA20 is not set
1125# CONFIG_CRYPTO_SEED is not set
1126# CONFIG_CRYPTO_SERPENT is not set
1127# CONFIG_CRYPTO_TEA is not set
1128# CONFIG_CRYPTO_TWOFISH is not set
899 1129
900# 1130#
901# Cryptographic options 1131# Compression
902# 1132#
903# CONFIG_CRYPTO is not set 1133# CONFIG_CRYPTO_DEFLATE is not set
1134# CONFIG_CRYPTO_ZLIB is not set
1135# CONFIG_CRYPTO_LZO is not set
904 1136
905# 1137#
906# Hardware crypto devices 1138# Random Number Generation
907# 1139#
1140CONFIG_CRYPTO_ANSI_CPRNG=m
1141CONFIG_CRYPTO_HW=y
1142# CONFIG_BINARY_PRINTF is not set
908 1143
909# 1144#
910# Library routines 1145# Library routines
911# 1146#
1147CONFIG_BITREVERSE=y
1148CONFIG_GENERIC_FIND_LAST_BIT=y
912CONFIG_CRC_CCITT=m 1149CONFIG_CRC_CCITT=m
1150# CONFIG_CRC16 is not set
1151# CONFIG_CRC_T10DIF is not set
1152# CONFIG_CRC_ITU_T is not set
913CONFIG_CRC32=y 1153CONFIG_CRC32=y
1154# CONFIG_CRC7 is not set
914# CONFIG_LIBCRC32C is not set 1155# CONFIG_LIBCRC32C is not set
915CONFIG_ZLIB_INFLATE=y 1156CONFIG_ZLIB_INFLATE=y
916CONFIG_ZLIB_DEFLATE=y 1157CONFIG_ZLIB_DEFLATE=y
1158CONFIG_DECOMPRESS_GZIP=y
1159CONFIG_DECOMPRESS_BZIP2=y
1160CONFIG_DECOMPRESS_LZMA=y
1161CONFIG_HAS_IOMEM=y
1162CONFIG_HAS_IOPORT=y
1163CONFIG_HAS_DMA=y
1164CONFIG_NLATTR=y
diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig
index 4e5c07f4e456..03a7f3857c5e 100644
--- a/arch/arm/mach-sa1100/Kconfig
+++ b/arch/arm/mach-sa1100/Kconfig
@@ -53,23 +53,23 @@ config SA1100_COLLIE
53 53
54config SA1100_H3100 54config SA1100_H3100
55 bool "Compaq iPAQ H3100" 55 bool "Compaq iPAQ H3100"
56 select HTC_EGPIO
56 help 57 help
57 Say Y here if you intend to run this kernel on the Compaq iPAQ 58 Say Y here if you intend to run this kernel on the Compaq iPAQ
58 H3100 handheld computer. Information about this machine and the 59 H3100 handheld computer. Information about this machine and the
59 Linux port to this machine can be found at: 60 Linux port to this machine can be found at:
60 61
61 <http://www.handhelds.org/Compaq/index.html#iPAQ_H3100> 62 <http://www.handhelds.org/Compaq/index.html#iPAQ_H3100>
62 <http://www.compaq.com/products/handhelds/pocketpc/>
63 63
64config SA1100_H3600 64config SA1100_H3600
65 bool "Compaq iPAQ H3600/H3700" 65 bool "Compaq iPAQ H3600/H3700"
66 select HTC_EGPIO
66 help 67 help
67 Say Y here if you intend to run this kernel on the Compaq iPAQ 68 Say Y here if you intend to run this kernel on the Compaq iPAQ
68 H3600 handheld computer. Information about this machine and the 69 H3600 handheld computer. Information about this machine and the
69 Linux port to this machine can be found at: 70 Linux port to this machine can be found at:
70 71
71 <http://www.handhelds.org/Compaq/index.html#iPAQ_H3600> 72 <http://www.handhelds.org/Compaq/index.html#iPAQ_H3600>
72 <http://www.compaq.com/products/handhelds/pocketpc/>
73 73
74config SA1100_BADGE4 74config SA1100_BADGE4
75 bool "HP Labs BadgePAD 4" 75 bool "HP Labs BadgePAD 4"
diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile
index bb7b8198d0c4..89349c1dd7a6 100644
--- a/arch/arm/mach-sa1100/Makefile
+++ b/arch/arm/mach-sa1100/Makefile
@@ -25,8 +25,8 @@ led-$(CONFIG_SA1100_CERF) += leds-cerf.o
25 25
26obj-$(CONFIG_SA1100_COLLIE) += collie.o 26obj-$(CONFIG_SA1100_COLLIE) += collie.o
27 27
28obj-$(CONFIG_SA1100_H3100) += h3600.o 28obj-$(CONFIG_SA1100_H3100) += h3100.o h3xxx.o
29obj-$(CONFIG_SA1100_H3600) += h3600.o 29obj-$(CONFIG_SA1100_H3600) += h3600.o h3xxx.o
30 30
31obj-$(CONFIG_SA1100_HACKKIT) += hackkit.o 31obj-$(CONFIG_SA1100_HACKKIT) += hackkit.o
32led-$(CONFIG_SA1100_HACKKIT) += leds-hackkit.o 32led-$(CONFIG_SA1100_HACKKIT) += leds-hackkit.o
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
index 55e64477a876..169e5b87dbff 100644
--- a/arch/arm/mach-sa1100/assabet.c
+++ b/arch/arm/mach-sa1100/assabet.c
@@ -249,10 +249,10 @@ static void __init assabet_init(void)
249#endif 249#endif
250 } 250 }
251 251
252 sa11x0_set_flash_data(&assabet_flash_data, assabet_flash_resources, 252 sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,
253 ARRAY_SIZE(assabet_flash_resources)); 253 ARRAY_SIZE(assabet_flash_resources));
254 sa11x0_set_irda_data(&assabet_irda_data); 254 sa11x0_register_irda(&assabet_irda_data);
255 sa11x0_set_mcp_data(&assabet_mcp_data); 255 sa11x0_register_mcp(&assabet_mcp_data);
256} 256}
257 257
258/* 258/*
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c
index ab5883b39ddf..051ec0f0023c 100644
--- a/arch/arm/mach-sa1100/badge4.c
+++ b/arch/arm/mach-sa1100/badge4.c
@@ -212,7 +212,7 @@ static int __init badge4_init(void)
212 /* maybe turn on 5v0 from the start */ 212 /* maybe turn on 5v0 from the start */
213 badge4_set_5V(BADGE4_5V_INITIALLY, five_v_on); 213 badge4_set_5V(BADGE4_5V_INITIALLY, five_v_on);
214 214
215 sa11x0_set_flash_data(&badge4_flash_data, &badge4_flash_resource, 1); 215 sa11x0_register_mtd(&badge4_flash_data, &badge4_flash_resource, 1);
216 216
217 return 0; 217 return 0;
218} 218}
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c
index fd3ad9cfc912..bc950ef418af 100644
--- a/arch/arm/mach-sa1100/cerf.c
+++ b/arch/arm/mach-sa1100/cerf.c
@@ -129,8 +129,8 @@ static struct mcp_plat_data cerf_mcp_data = {
129static void __init cerf_init(void) 129static void __init cerf_init(void)
130{ 130{
131 platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices)); 131 platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));
132 sa11x0_set_flash_data(&cerf_flash_data, &cerf_flash_resource, 1); 132 sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1);
133 sa11x0_set_mcp_data(&cerf_mcp_data); 133 sa11x0_register_mcp(&cerf_mcp_data);
134} 134}
135 135
136MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") 136MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
index bbf2ebcc3066..9982c5c28edf 100644
--- a/arch/arm/mach-sa1100/collie.c
+++ b/arch/arm/mach-sa1100/collie.c
@@ -26,6 +26,7 @@
26#include <linux/mtd/partitions.h> 26#include <linux/mtd/partitions.h>
27#include <linux/timer.h> 27#include <linux/timer.h>
28#include <linux/gpio.h> 28#include <linux/gpio.h>
29#include <linux/pda_power.h>
29 30
30#include <mach/hardware.h> 31#include <mach/hardware.h>
31#include <asm/mach-types.h> 32#include <asm/mach-types.h>
@@ -56,6 +57,7 @@ static struct resource collie_scoop_resources[] = {
56static struct scoop_config collie_scoop_setup = { 57static struct scoop_config collie_scoop_setup = {
57 .io_dir = COLLIE_SCOOP_IO_DIR, 58 .io_dir = COLLIE_SCOOP_IO_DIR,
58 .io_out = COLLIE_SCOOP_IO_OUT, 59 .io_out = COLLIE_SCOOP_IO_OUT,
60 .gpio_base = COLLIE_SCOOP_GPIO_BASE,
59}; 61};
60 62
61struct platform_device colliescoop_device = { 63struct platform_device colliescoop_device = {
@@ -85,6 +87,70 @@ static struct scoop_pcmcia_config collie_pcmcia_config = {
85static struct mcp_plat_data collie_mcp_data = { 87static struct mcp_plat_data collie_mcp_data = {
86 .mccr0 = MCCR0_ADM | MCCR0_ExtClk, 88 .mccr0 = MCCR0_ADM | MCCR0_ExtClk,
87 .sclk_rate = 9216000, 89 .sclk_rate = 9216000,
90 .gpio_base = COLLIE_TC35143_GPIO_BASE,
91};
92
93/*
94 * Collie AC IN
95 */
96static int collie_power_init(struct device *dev)
97{
98 int ret = gpio_request(COLLIE_GPIO_AC_IN, "ac in");
99 if (ret)
100 goto err_gpio_req;
101
102 ret = gpio_direction_input(COLLIE_GPIO_AC_IN);
103 if (ret)
104 goto err_gpio_in;
105
106 return 0;
107
108err_gpio_in:
109 gpio_free(COLLIE_GPIO_AC_IN);
110err_gpio_req:
111 return ret;
112}
113
114static void collie_power_exit(struct device *dev)
115{
116 gpio_free(COLLIE_GPIO_AC_IN);
117}
118
119static int collie_power_ac_online(void)
120{
121 return gpio_get_value(COLLIE_GPIO_AC_IN) == 2;
122}
123
124static char *collie_ac_supplied_to[] = {
125 "main-battery",
126 "backup-battery",
127};
128
129static struct pda_power_pdata collie_power_data = {
130 .init = collie_power_init,
131 .is_ac_online = collie_power_ac_online,
132 .exit = collie_power_exit,
133 .supplied_to = collie_ac_supplied_to,
134 .num_supplicants = ARRAY_SIZE(collie_ac_supplied_to),
135};
136
137static struct resource collie_power_resource[] = {
138 {
139 .name = "ac",
140 .start = gpio_to_irq(COLLIE_GPIO_AC_IN),
141 .end = gpio_to_irq(COLLIE_GPIO_AC_IN),
142 .flags = IORESOURCE_IRQ |
143 IORESOURCE_IRQ_HIGHEDGE |
144 IORESOURCE_IRQ_LOWEDGE,
145 },
146};
147
148static struct platform_device collie_power_device = {
149 .name = "pda-power",
150 .id = -1,
151 .dev.platform_data = &collie_power_data,
152 .resource = collie_power_resource,
153 .num_resources = ARRAY_SIZE(collie_power_resource),
88}; 154};
89 155
90#ifdef CONFIG_SHARP_LOCOMO 156#ifdef CONFIG_SHARP_LOCOMO
@@ -178,6 +244,7 @@ struct platform_device collie_locomo_device = {
178static struct platform_device *devices[] __initdata = { 244static struct platform_device *devices[] __initdata = {
179 &collie_locomo_device, 245 &collie_locomo_device,
180 &colliescoop_device, 246 &colliescoop_device,
247 &collie_power_device,
181}; 248};
182 249
183static struct mtd_partition collie_partitions[] = { 250static struct mtd_partition collie_partitions[] = {
@@ -248,22 +315,24 @@ static void __init collie_init(void)
248 GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 | 315 GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 |
249 GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD | 316 GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD |
250 GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK | 317 GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK |
251 COLLIE_GPIO_UCB1x00_RESET | COLLIE_GPIO_nMIC_ON | 318 _COLLIE_GPIO_UCB1x00_RESET | _COLLIE_GPIO_nMIC_ON |
252 COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz; 319 _COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz;
253 320
254 PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 | 321 PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 |
255 PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS | 322 PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS |
256 PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM; 323 PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM;
257 324
258 PWER = COLLIE_GPIO_AC_IN | COLLIE_GPIO_CO | COLLIE_GPIO_ON_KEY | 325 PWER = _COLLIE_GPIO_AC_IN | _COLLIE_GPIO_CO | _COLLIE_GPIO_ON_KEY |
259 COLLIE_GPIO_WAKEUP | COLLIE_GPIO_nREMOCON_INT | PWER_RTC; 326 _COLLIE_GPIO_WAKEUP | _COLLIE_GPIO_nREMOCON_INT | PWER_RTC;
260 327
261 PGSR = COLLIE_GPIO_nREMOCON_ON; 328 PGSR = _COLLIE_GPIO_nREMOCON_ON;
262 329
263 PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4; 330 PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4;
264 331
265 PCFR = PCFR_OPDE; 332 PCFR = PCFR_OPDE;
266 333
334 GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
335
267 336
268 platform_scoop_config = &collie_pcmcia_config; 337 platform_scoop_config = &collie_pcmcia_config;
269 338
@@ -272,9 +341,9 @@ static void __init collie_init(void)
272 printk(KERN_WARNING "collie: Unable to register LoCoMo device\n"); 341 printk(KERN_WARNING "collie: Unable to register LoCoMo device\n");
273 } 342 }
274 343
275 sa11x0_set_flash_data(&collie_flash_data, collie_flash_resources, 344 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
276 ARRAY_SIZE(collie_flash_resources)); 345 ARRAY_SIZE(collie_flash_resources));
277 sa11x0_set_mcp_data(&collie_mcp_data); 346 sa11x0_register_mcp(&collie_mcp_data);
278 347
279 sharpsl_save_param(); 348 sharpsl_save_param();
280} 349}
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c
index 23cfdd593954..9faea1511c1f 100644
--- a/arch/arm/mach-sa1100/generic.c
+++ b/arch/arm/mach-sa1100/generic.c
@@ -162,6 +162,17 @@ static void sa1100_power_off(void)
162 PMCR = PMCR_SF; 162 PMCR = PMCR_SF;
163} 163}
164 164
165static void sa11x0_register_device(struct platform_device *dev, void *data)
166{
167 int err;
168 dev->dev.platform_data = data;
169 err = platform_device_register(dev);
170 if (err)
171 printk(KERN_ERR "Unable to register device %s: %d\n",
172 dev->name, err);
173}
174
175
165static struct resource sa11x0udc_resources[] = { 176static struct resource sa11x0udc_resources[] = {
166 [0] = { 177 [0] = {
167 .start = 0x80000000, 178 .start = 0x80000000,
@@ -234,9 +245,9 @@ static struct platform_device sa11x0mcp_device = {
234 .resource = sa11x0mcp_resources, 245 .resource = sa11x0mcp_resources,
235}; 246};
236 247
237void sa11x0_set_mcp_data(struct mcp_plat_data *data) 248void sa11x0_register_mcp(struct mcp_plat_data *data)
238{ 249{
239 sa11x0mcp_device.dev.platform_data = data; 250 sa11x0_register_device(&sa11x0mcp_device, data);
240} 251}
241 252
242static struct resource sa11x0ssp_resources[] = { 253static struct resource sa11x0ssp_resources[] = {
@@ -293,13 +304,13 @@ static struct platform_device sa11x0mtd_device = {
293 .id = -1, 304 .id = -1,
294}; 305};
295 306
296void sa11x0_set_flash_data(struct flash_platform_data *flash, 307void sa11x0_register_mtd(struct flash_platform_data *flash,
297 struct resource *res, int nr) 308 struct resource *res, int nr)
298{ 309{
299 flash->name = "sa1100"; 310 flash->name = "sa1100";
300 sa11x0mtd_device.dev.platform_data = flash;
301 sa11x0mtd_device.resource = res; 311 sa11x0mtd_device.resource = res;
302 sa11x0mtd_device.num_resources = nr; 312 sa11x0mtd_device.num_resources = nr;
313 sa11x0_register_device(&sa11x0mtd_device, flash);
303} 314}
304 315
305static struct resource sa11x0ir_resources[] = { 316static struct resource sa11x0ir_resources[] = {
@@ -329,9 +340,9 @@ static struct platform_device sa11x0ir_device = {
329 .resource = sa11x0ir_resources, 340 .resource = sa11x0ir_resources,
330}; 341};
331 342
332void sa11x0_set_irda_data(struct irda_platform_data *irda) 343void sa11x0_register_irda(struct irda_platform_data *irda)
333{ 344{
334 sa11x0ir_device.dev.platform_data = irda; 345 sa11x0_register_device(&sa11x0ir_device, irda);
335} 346}
336 347
337static struct platform_device sa11x0rtc_device = { 348static struct platform_device sa11x0rtc_device = {
@@ -343,21 +354,15 @@ static struct platform_device *sa11x0_devices[] __initdata = {
343 &sa11x0udc_device, 354 &sa11x0udc_device,
344 &sa11x0uart1_device, 355 &sa11x0uart1_device,
345 &sa11x0uart3_device, 356 &sa11x0uart3_device,
346 &sa11x0mcp_device,
347 &sa11x0ssp_device, 357 &sa11x0ssp_device,
348 &sa11x0pcmcia_device, 358 &sa11x0pcmcia_device,
349 &sa11x0fb_device, 359 &sa11x0fb_device,
350 &sa11x0mtd_device,
351 &sa11x0rtc_device, 360 &sa11x0rtc_device,
352}; 361};
353 362
354static int __init sa1100_init(void) 363static int __init sa1100_init(void)
355{ 364{
356 pm_power_off = sa1100_power_off; 365 pm_power_off = sa1100_power_off;
357
358 if (sa11x0ir_device.dev.platform_data)
359 platform_device_register(&sa11x0ir_device);
360
361 return platform_add_devices(sa11x0_devices, ARRAY_SIZE(sa11x0_devices)); 366 return platform_add_devices(sa11x0_devices, ARRAY_SIZE(sa11x0_devices));
362} 367}
363 368
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
index 793c2e6c991f..ec03f187c52b 100644
--- a/arch/arm/mach-sa1100/generic.h
+++ b/arch/arm/mach-sa1100/generic.h
@@ -32,14 +32,11 @@ extern unsigned int sa11x0_ppcr_to_freq(unsigned int idx);
32struct flash_platform_data; 32struct flash_platform_data;
33struct resource; 33struct resource;
34 34
35extern void sa11x0_set_flash_data(struct flash_platform_data *flash, 35void sa11x0_register_mtd(struct flash_platform_data *flash,
36 struct resource *res, int nr); 36 struct resource *res, int nr);
37
38struct sa11x0_ssp_plat_ops;
39extern void sa11x0_set_ssp_data(struct sa11x0_ssp_plat_ops *ops);
40 37
41struct irda_platform_data; 38struct irda_platform_data;
42void sa11x0_set_irda_data(struct irda_platform_data *irda); 39void sa11x0_register_irda(struct irda_platform_data *irda);
43 40
44struct mcp_plat_data; 41struct mcp_plat_data;
45void sa11x0_set_mcp_data(struct mcp_plat_data *data); 42void sa11x0_register_mcp(struct mcp_plat_data *data);
diff --git a/arch/arm/mach-sa1100/h3100.c b/arch/arm/mach-sa1100/h3100.c
new file mode 100644
index 000000000000..0c7cea0dc013
--- /dev/null
+++ b/arch/arm/mach-sa1100/h3100.c
@@ -0,0 +1,95 @@
1/*
2 * Support for Compaq iPAQ H3100 handheld computer
3 *
4 * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
5 * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 */
12
13#include <linux/init.h>
14#include <linux/kernel.h>
15#include <linux/gpio.h>
16
17#include <asm/mach-types.h>
18#include <asm/mach/arch.h>
19#include <asm/mach/irda.h>
20
21#include <mach/h3xxx.h>
22
23#include "generic.h"
24
25/*
26 * helper for sa1100fb
27 */
28static void h3100_lcd_power(int enable)
29{
30 if (!gpio_request(H3XXX_EGPIO_LCD_ON, "LCD ON")) {
31 gpio_set_value(H3100_GPIO_LCD_3V_ON, enable);
32 gpio_direction_output(H3XXX_EGPIO_LCD_ON, enable);
33 gpio_free(H3XXX_EGPIO_LCD_ON);
34 } else {
35 pr_err("%s: can't request H3XXX_EGPIO_LCD_ON\n", __func__);
36 }
37}
38
39
40static void __init h3100_map_io(void)
41{
42 h3xxx_map_io();
43
44 sa1100fb_lcd_power = h3100_lcd_power;
45
46 /* Older bootldrs put GPIO2-9 in alternate mode on the
47 assumption that they are used for video */
48 GAFR &= ~0x000001fb;
49}
50
51/*
52 * This turns the IRDA power on or off on the Compaq H3100
53 */
54static int h3100_irda_set_power(struct device *dev, unsigned int state)
55{
56 gpio_set_value(H3100_GPIO_IR_ON, state);
57 return 0;
58}
59
60static void h3100_irda_set_speed(struct device *dev, unsigned int speed)
61{
62 gpio_set_value(H3100_GPIO_IR_FSEL, !(speed < 4000000));
63}
64
65static struct irda_platform_data h3100_irda_data = {
66 .set_power = h3100_irda_set_power,
67 .set_speed = h3100_irda_set_speed,
68};
69
70static struct gpio_default_state h3100_default_gpio[] = {
71 { H3100_GPIO_IR_ON, GPIO_MODE_OUT0, "IrDA power" },
72 { H3100_GPIO_IR_FSEL, GPIO_MODE_OUT0, "IrDA fsel" },
73 { H3XXX_GPIO_COM_DCD, GPIO_MODE_IN, "COM DCD" },
74 { H3XXX_GPIO_COM_CTS, GPIO_MODE_IN, "COM CTS" },
75 { H3XXX_GPIO_COM_RTS, GPIO_MODE_OUT0, "COM RTS" },
76 { H3100_GPIO_LCD_3V_ON, GPIO_MODE_OUT0, "LCD 3v" },
77};
78
79static void __init h3100_mach_init(void)
80{
81 h3xxx_init_gpio(h3100_default_gpio, ARRAY_SIZE(h3100_default_gpio));
82 h3xxx_mach_init();
83 sa11x0_register_irda(&h3100_irda_data);
84}
85
86MACHINE_START(H3100, "Compaq iPAQ H3100")
87 .phys_io = 0x80000000,
88 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc,
89 .boot_params = 0xc0000100,
90 .map_io = h3100_map_io,
91 .init_irq = sa1100_init_irq,
92 .timer = &sa1100_timer,
93 .init_machine = h3100_mach_init,
94MACHINE_END
95
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 0eb2f159578b..af3b71459f8d 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -1,421 +1,127 @@
1/* 1/*
2 * Hardware definitions for Compaq iPAQ H3xxx Handheld Computers 2 * Support for Compaq iPAQ H3600 handheld computer
3 * 3 *
4 * Copyright 2000,1 Compaq Computer Corporation. 4 * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
5 * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
5 * 6 *
6 * Use consistent with the GNU GPL is permitted, 7 * This program is free software; you can redistribute it and/or modify
7 * provided that this copyright notice is 8 * it under the terms of the GNU General Public License version 2 as
8 * preserved in its entirety in all copies and derived works. 9 * published by the Free Software Foundation.
9 *
10 * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
11 * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
12 * FITNESS FOR ANY PARTICULAR PURPOSE.
13 *
14 * Author: Jamey Hicks.
15 *
16 * History:
17 *
18 * 2001-10-?? Andrew Christian Added support for iPAQ H3800
19 * and abstracted EGPIO interface.
20 * 10 *
21 */ 11 */
22#include <linux/module.h> 12
23#include <linux/init.h> 13#include <linux/init.h>
24#include <linux/kernel.h> 14#include <linux/kernel.h>
25#include <linux/tty.h> 15#include <linux/gpio.h>
26#include <linux/pm.h>
27#include <linux/device.h>
28#include <linux/mtd/mtd.h>
29#include <linux/mtd/partitions.h>
30#include <linux/serial_core.h>
31 16
32#include <asm/irq.h>
33#include <mach/hardware.h>
34#include <asm/mach-types.h> 17#include <asm/mach-types.h>
35#include <asm/setup.h>
36
37#include <asm/mach/irq.h>
38#include <asm/mach/arch.h> 18#include <asm/mach/arch.h>
39#include <asm/mach/flash.h>
40#include <asm/mach/irda.h> 19#include <asm/mach/irda.h>
41#include <asm/mach/map.h>
42#include <asm/mach/serial_sa1100.h>
43 20
44#include <mach/h3600.h> 21#include <mach/h3xxx.h>
45#include <mach/h3600_gpio.h>
46 22
47#include "generic.h" 23#include "generic.h"
48 24
49void (*assign_h3600_egpio)(enum ipaq_egpio_type x, int level);
50EXPORT_SYMBOL(assign_h3600_egpio);
51
52static struct mtd_partition h3xxx_partitions[] = {
53 {
54 .name = "H3XXX boot firmware",
55 .size = 0x00040000,
56 .offset = 0,
57 .mask_flags = MTD_WRITEABLE, /* force read-only */
58 }, {
59 .name = "H3XXX rootfs",
60 .size = MTDPART_SIZ_FULL,
61 .offset = 0x00040000,
62 }
63};
64
65static void h3xxx_set_vpp(int vpp)
66{
67 assign_h3600_egpio(IPAQ_EGPIO_VPP_ON, vpp);
68}
69
70static struct flash_platform_data h3xxx_flash_data = {
71 .map_name = "cfi_probe",
72 .set_vpp = h3xxx_set_vpp,
73 .parts = h3xxx_partitions,
74 .nr_parts = ARRAY_SIZE(h3xxx_partitions),
75};
76
77static struct resource h3xxx_flash_resource = {
78 .start = SA1100_CS0_PHYS,
79 .end = SA1100_CS0_PHYS + SZ_32M - 1,
80 .flags = IORESOURCE_MEM,
81};
82
83/* 25/*
84 * This turns the IRDA power on or off on the Compaq H3600 26 * helper for sa1100fb
85 */
86static int h3600_irda_set_power(struct device *dev, unsigned int state)
87{
88 assign_h3600_egpio( IPAQ_EGPIO_IR_ON, state );
89
90 return 0;
91}
92
93static void h3600_irda_set_speed(struct device *dev, unsigned int speed)
94{
95 assign_h3600_egpio(IPAQ_EGPIO_IR_FSEL, !(speed < 4000000));
96}
97
98static struct irda_platform_data h3600_irda_data = {
99 .set_power = h3600_irda_set_power,
100 .set_speed = h3600_irda_set_speed,
101};
102
103static void h3xxx_mach_init(void)
104{
105 sa11x0_set_flash_data(&h3xxx_flash_data, &h3xxx_flash_resource, 1);
106 sa11x0_set_irda_data(&h3600_irda_data);
107}
108
109/*
110 * low-level UART features
111 */ 27 */
112 28static void h3600_lcd_power(int enable)
113static void h3600_uart_set_mctrl(struct uart_port *port, u_int mctrl)
114{ 29{
115 if (port->mapbase == _Ser3UTCR0) { 30 if (gpio_request(H3XXX_EGPIO_LCD_ON, "LCD power")) {
116 if (mctrl & TIOCM_RTS) 31 pr_err("%s: can't request H3XXX_EGPIO_LCD_ON\n", __func__);
117 GPCR = GPIO_H3600_COM_RTS; 32 goto err1;
118 else
119 GPSR = GPIO_H3600_COM_RTS;
120 } 33 }
121} 34 if (gpio_request(H3600_EGPIO_LCD_PCI, "LCD control")) {
122 35 pr_err("%s: can't request H3XXX_EGPIO_LCD_PCI\n", __func__);
123static u_int h3600_uart_get_mctrl(struct uart_port *port) 36 goto err2;
124{ 37 }
125 u_int ret = TIOCM_CD | TIOCM_CTS | TIOCM_DSR; 38 if (gpio_request(H3600_EGPIO_LCD_5V_ON, "LCD 5v")) {
126 39 pr_err("%s: can't request H3XXX_EGPIO_LCD_5V_ON\n", __func__);
127 if (port->mapbase == _Ser3UTCR0) { 40 goto err3;
128 int gplr = GPLR; 41 }
129 /* DCD and CTS bits are inverted in GPLR by RS232 transceiver */ 42 if (gpio_request(H3600_EGPIO_LVDD_ON, "LCD 9v/-6.5v")) {
130 if (gplr & GPIO_H3600_COM_DCD) 43 pr_err("%s: can't request H3600_EGPIO_LVDD_ON\n", __func__);
131 ret &= ~TIOCM_CD; 44 goto err4;
132 if (gplr & GPIO_H3600_COM_CTS)
133 ret &= ~TIOCM_CTS;
134 } 45 }
135 46
136 return ret; 47 gpio_direction_output(H3XXX_EGPIO_LCD_ON, enable);
137} 48 gpio_direction_output(H3600_EGPIO_LCD_PCI, enable);
49 gpio_direction_output(H3600_EGPIO_LCD_5V_ON, enable);
50 gpio_direction_output(H3600_EGPIO_LVDD_ON, enable);
138 51
139static void h3600_uart_pm(struct uart_port *port, u_int state, u_int oldstate) 52 gpio_free(H3600_EGPIO_LVDD_ON);
140{ 53err4: gpio_free(H3600_EGPIO_LCD_5V_ON);
141 if (port->mapbase == _Ser2UTCR0) { /* TODO: REMOVE THIS */ 54err3: gpio_free(H3600_EGPIO_LCD_PCI);
142 assign_h3600_egpio(IPAQ_EGPIO_IR_ON, !state); 55err2: gpio_free(H3XXX_EGPIO_LCD_ON);
143 } else if (port->mapbase == _Ser3UTCR0) { 56err1: return;
144 assign_h3600_egpio(IPAQ_EGPIO_RS232_ON, !state);
145 }
146} 57}
147 58
148/* 59static void __init h3600_map_io(void)
149 * Enable/Disable wake up events for this serial port.
150 * Obviously, we only support this on the normal COM port.
151 */
152static int h3600_uart_set_wake(struct uart_port *port, u_int enable)
153{ 60{
154 int err = -EINVAL; 61 h3xxx_map_io();
155 62
156 if (port->mapbase == _Ser3UTCR0) { 63 sa1100fb_lcd_power = h3600_lcd_power;
157 if (enable)
158 PWER |= PWER_GPIO23 | PWER_GPIO25; /* DCD and CTS */
159 else
160 PWER &= ~(PWER_GPIO23 | PWER_GPIO25); /* DCD and CTS */
161 err = 0;
162 }
163 return err;
164} 64}
165 65
166static struct sa1100_port_fns h3600_port_fns __initdata = {
167 .set_mctrl = h3600_uart_set_mctrl,
168 .get_mctrl = h3600_uart_get_mctrl,
169 .pm = h3600_uart_pm,
170 .set_wake = h3600_uart_set_wake,
171};
172
173/* 66/*
174 * helper for sa1100fb 67 * This turns the IRDA power on or off on the Compaq H3600
175 */ 68 */
176static void h3xxx_lcd_power(int enable) 69static int h3600_irda_set_power(struct device *dev, unsigned int state)
177{ 70{
178 assign_h3600_egpio(IPAQ_EGPIO_LCD_POWER, enable); 71 gpio_set_value(H3600_EGPIO_IR_ON, state);
72 return 0;
179} 73}
180 74
181static struct map_desc h3600_io_desc[] __initdata = { 75static void h3600_irda_set_speed(struct device *dev, unsigned int speed)
182 { /* static memory bank 2 CS#2 */
183 .virtual = H3600_BANK_2_VIRT,
184 .pfn = __phys_to_pfn(SA1100_CS2_PHYS),
185 .length = 0x02800000,
186 .type = MT_DEVICE
187 }, { /* static memory bank 4 CS#4 */
188 .virtual = H3600_BANK_4_VIRT,
189 .pfn = __phys_to_pfn(SA1100_CS4_PHYS),
190 .length = 0x00800000,
191 .type = MT_DEVICE
192 }, { /* EGPIO 0 CS#5 */
193 .virtual = H3600_EGPIO_VIRT,
194 .pfn = __phys_to_pfn(H3600_EGPIO_PHYS),
195 .length = 0x01000000,
196 .type = MT_DEVICE
197 }
198};
199
200/*
201 * Common map_io initialization
202 */
203
204static void __init h3xxx_map_io(void)
205{ 76{
206 sa1100_map_io(); 77 gpio_set_value(H3600_EGPIO_IR_FSEL, !(speed < 4000000));
207 iotable_init(h3600_io_desc, ARRAY_SIZE(h3600_io_desc));
208
209 sa1100_register_uart_fns(&h3600_port_fns);
210 sa1100_register_uart(0, 3); /* Common serial port */
211// sa1100_register_uart(1, 1); /* Microcontroller on 3100/3600 */
212
213 /* Ensure those pins are outputs and driving low */
214 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
215 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
216
217 /* Configure suspend conditions */
218 PGSR = 0;
219 PWER = PWER_GPIO0 | PWER_RTC;
220 PCFR = PCFR_OPDE;
221 PSDR = 0;
222
223 sa1100fb_lcd_power = h3xxx_lcd_power;
224} 78}
225 79
226/************************* H3100 *************************/ 80static int h3600_irda_startup(struct device *dev)
227
228#ifdef CONFIG_SA1100_H3100
229
230#define H3100_EGPIO (*(volatile unsigned int *)H3600_EGPIO_VIRT)
231static unsigned int h3100_egpio = 0;
232
233static void h3100_control_egpio(enum ipaq_egpio_type x, int setp)
234{ 81{
235 unsigned int egpio = 0; 82 int err = gpio_request(H3600_EGPIO_IR_ON, "IrDA power");
236 long gpio = 0; 83 if (err)
237 unsigned long flags; 84 goto err1;
238 85 err = gpio_direction_output(H3600_EGPIO_IR_ON, 0);
239 switch (x) { 86 if (err)
240 case IPAQ_EGPIO_LCD_POWER: 87 goto err2;
241 egpio |= EGPIO_H3600_LCD_ON; 88 err = gpio_request(H3600_EGPIO_IR_FSEL, "IrDA fsel");
242 gpio |= GPIO_H3100_LCD_3V_ON; 89 if (err)
243 break; 90 goto err2;
244 case IPAQ_EGPIO_LCD_ENABLE: 91 err = gpio_direction_output(H3600_EGPIO_IR_FSEL, 0);
245 break; 92 if (err)
246 case IPAQ_EGPIO_CODEC_NRESET: 93 goto err3;
247 egpio |= EGPIO_H3600_CODEC_NRESET; 94 return 0;
248 break;
249 case IPAQ_EGPIO_AUDIO_ON:
250 gpio |= GPIO_H3100_AUD_PWR_ON
251 | GPIO_H3100_AUD_ON;
252 break;
253 case IPAQ_EGPIO_QMUTE:
254 gpio |= GPIO_H3100_QMUTE;
255 break;
256 case IPAQ_EGPIO_OPT_NVRAM_ON:
257 egpio |= EGPIO_H3600_OPT_NVRAM_ON;
258 break;
259 case IPAQ_EGPIO_OPT_ON:
260 egpio |= EGPIO_H3600_OPT_ON;
261 break;
262 case IPAQ_EGPIO_CARD_RESET:
263 egpio |= EGPIO_H3600_CARD_RESET;
264 break;
265 case IPAQ_EGPIO_OPT_RESET:
266 egpio |= EGPIO_H3600_OPT_RESET;
267 break;
268 case IPAQ_EGPIO_IR_ON:
269 gpio |= GPIO_H3100_IR_ON;
270 break;
271 case IPAQ_EGPIO_IR_FSEL:
272 gpio |= GPIO_H3100_IR_FSEL;
273 break;
274 case IPAQ_EGPIO_RS232_ON:
275 egpio |= EGPIO_H3600_RS232_ON;
276 break;
277 case IPAQ_EGPIO_VPP_ON:
278 egpio |= EGPIO_H3600_VPP_ON;
279 break;
280 }
281 95
282 if (egpio || gpio) { 96err3: gpio_free(H3600_EGPIO_IR_FSEL);
283 local_irq_save(flags); 97err2: gpio_free(H3600_EGPIO_IR_ON);
284 if (setp) { 98err1: return err;
285 h3100_egpio |= egpio;
286 GPSR = gpio;
287 } else {
288 h3100_egpio &= ~egpio;
289 GPCR = gpio;
290 }
291 H3100_EGPIO = h3100_egpio;
292 local_irq_restore(flags);
293 }
294} 99}
295 100
296#define H3100_DIRECT_EGPIO (GPIO_H3100_BT_ON \ 101static void h3600_irda_shutdown(struct device *dev)
297 | GPIO_H3100_GPIO3 \
298 | GPIO_H3100_QMUTE \
299 | GPIO_H3100_LCD_3V_ON \
300 | GPIO_H3100_AUD_ON \
301 | GPIO_H3100_AUD_PWR_ON \
302 | GPIO_H3100_IR_ON \
303 | GPIO_H3100_IR_FSEL)
304
305static void __init h3100_map_io(void)
306{ 102{
307 h3xxx_map_io(); 103 gpio_free(H3600_EGPIO_IR_ON);
308 104 gpio_free(H3600_EGPIO_IR_FSEL);
309 /* Initialize h3100-specific values here */
310 GPCR = 0x0fffffff; /* All outputs are set low by default */
311 GPDR = GPIO_H3600_COM_RTS | GPIO_H3600_L3_CLOCK |
312 GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA |
313 GPIO_H3600_CLK_SET1 | GPIO_H3600_CLK_SET0 |
314 H3100_DIRECT_EGPIO;
315
316 /* Older bootldrs put GPIO2-9 in alternate mode on the
317 assumption that they are used for video */
318 GAFR &= ~H3100_DIRECT_EGPIO;
319
320 H3100_EGPIO = h3100_egpio;
321 assign_h3600_egpio = h3100_control_egpio;
322} 105}
323 106
324MACHINE_START(H3100, "Compaq iPAQ H3100") 107static struct irda_platform_data h3600_irda_data = {
325 .phys_io = 0x80000000, 108 .set_power = h3600_irda_set_power,
326 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 109 .set_speed = h3600_irda_set_speed,
327 .boot_params = 0xc0000100, 110 .startup = h3600_irda_startup,
328 .map_io = h3100_map_io, 111 .shutdown = h3600_irda_shutdown,
329 .init_irq = sa1100_init_irq, 112};
330 .timer = &sa1100_timer,
331 .init_machine = h3xxx_mach_init,
332MACHINE_END
333
334#endif /* CONFIG_SA1100_H3100 */
335
336/************************* H3600 *************************/
337
338#ifdef CONFIG_SA1100_H3600
339
340#define H3600_EGPIO (*(volatile unsigned int *)H3600_EGPIO_VIRT)
341static unsigned int h3600_egpio = EGPIO_H3600_RS232_ON;
342
343static void h3600_control_egpio(enum ipaq_egpio_type x, int setp)
344{
345 unsigned int egpio = 0;
346 unsigned long flags;
347
348 switch (x) {
349 case IPAQ_EGPIO_LCD_POWER:
350 egpio |= EGPIO_H3600_LCD_ON |
351 EGPIO_H3600_LCD_PCI |
352 EGPIO_H3600_LCD_5V_ON |
353 EGPIO_H3600_LVDD_ON;
354 break;
355 case IPAQ_EGPIO_LCD_ENABLE:
356 break;
357 case IPAQ_EGPIO_CODEC_NRESET:
358 egpio |= EGPIO_H3600_CODEC_NRESET;
359 break;
360 case IPAQ_EGPIO_AUDIO_ON:
361 egpio |= EGPIO_H3600_AUD_AMP_ON |
362 EGPIO_H3600_AUD_PWR_ON;
363 break;
364 case IPAQ_EGPIO_QMUTE:
365 egpio |= EGPIO_H3600_QMUTE;
366 break;
367 case IPAQ_EGPIO_OPT_NVRAM_ON:
368 egpio |= EGPIO_H3600_OPT_NVRAM_ON;
369 break;
370 case IPAQ_EGPIO_OPT_ON:
371 egpio |= EGPIO_H3600_OPT_ON;
372 break;
373 case IPAQ_EGPIO_CARD_RESET:
374 egpio |= EGPIO_H3600_CARD_RESET;
375 break;
376 case IPAQ_EGPIO_OPT_RESET:
377 egpio |= EGPIO_H3600_OPT_RESET;
378 break;
379 case IPAQ_EGPIO_IR_ON:
380 egpio |= EGPIO_H3600_IR_ON;
381 break;
382 case IPAQ_EGPIO_IR_FSEL:
383 egpio |= EGPIO_H3600_IR_FSEL;
384 break;
385 case IPAQ_EGPIO_RS232_ON:
386 egpio |= EGPIO_H3600_RS232_ON;
387 break;
388 case IPAQ_EGPIO_VPP_ON:
389 egpio |= EGPIO_H3600_VPP_ON;
390 break;
391 }
392 113
393 if (egpio) { 114static struct gpio_default_state h3600_default_gpio[] = {
394 local_irq_save(flags); 115 { H3XXX_GPIO_COM_DCD, GPIO_MODE_IN, "COM DCD" },
395 if (setp) 116 { H3XXX_GPIO_COM_CTS, GPIO_MODE_IN, "COM CTS" },
396 h3600_egpio |= egpio; 117 { H3XXX_GPIO_COM_RTS, GPIO_MODE_OUT0, "COM RTS" },
397 else 118};
398 h3600_egpio &= ~egpio;
399 H3600_EGPIO = h3600_egpio;
400 local_irq_restore(flags);
401 }
402}
403 119
404static void __init h3600_map_io(void) 120static void __init h3600_mach_init(void)
405{ 121{
406 h3xxx_map_io(); 122 h3xxx_init_gpio(h3600_default_gpio, ARRAY_SIZE(h3600_default_gpio));
407 123 h3xxx_mach_init();
408 /* Initialize h3600-specific values here */ 124 sa11x0_register_irda(&h3600_irda_data);
409
410 GPCR = 0x0fffffff; /* All outputs are set low by default */
411 GPDR = GPIO_H3600_COM_RTS | GPIO_H3600_L3_CLOCK |
412 GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA |
413 GPIO_H3600_CLK_SET1 | GPIO_H3600_CLK_SET0 |
414 GPIO_LDD15 | GPIO_LDD14 | GPIO_LDD13 | GPIO_LDD12 |
415 GPIO_LDD11 | GPIO_LDD10 | GPIO_LDD9 | GPIO_LDD8;
416
417 H3600_EGPIO = h3600_egpio; /* Maintains across sleep? */
418 assign_h3600_egpio = h3600_control_egpio;
419} 125}
420 126
421MACHINE_START(H3600, "Compaq iPAQ H3600") 127MACHINE_START(H3600, "Compaq iPAQ H3600")
@@ -425,8 +131,6 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
425 .map_io = h3600_map_io, 131 .map_io = h3600_map_io,
426 .init_irq = sa1100_init_irq, 132 .init_irq = sa1100_init_irq,
427 .timer = &sa1100_timer, 133 .timer = &sa1100_timer,
428 .init_machine = h3xxx_mach_init, 134 .init_machine = h3600_mach_init,
429MACHINE_END 135MACHINE_END
430 136
431#endif /* CONFIG_SA1100_H3600 */
432
diff --git a/arch/arm/mach-sa1100/h3xxx.c b/arch/arm/mach-sa1100/h3xxx.c
new file mode 100644
index 000000000000..b0784c974c2d
--- /dev/null
+++ b/arch/arm/mach-sa1100/h3xxx.c
@@ -0,0 +1,313 @@
1/*
2 * Support for Compaq iPAQ H3100 and H3600 handheld computers (common code)
3 *
4 * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
5 * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 */
12
13#include <linux/kernel.h>
14#include <linux/gpio.h>
15#include <linux/gpio_keys.h>
16#include <linux/input.h>
17#include <linux/mfd/htc-egpio.h>
18#include <linux/mtd/mtd.h>
19#include <linux/mtd/partitions.h>
20#include <linux/platform_device.h>
21#include <linux/serial_core.h>
22
23#include <asm/mach/flash.h>
24#include <asm/mach/map.h>
25#include <asm/mach/serial_sa1100.h>
26
27#include <mach/h3xxx.h>
28
29#include "generic.h"
30
31void h3xxx_init_gpio(struct gpio_default_state *s, size_t n)
32{
33 while (n--) {
34 const char *name = s->name;
35 int err;
36
37 if (!name)
38 name = "[init]";
39 err = gpio_request(s->gpio, name);
40 if (err) {
41 printk(KERN_ERR "gpio%u: unable to request: %d\n",
42 s->gpio, err);
43 continue;
44 }
45 if (s->mode >= 0) {
46 err = gpio_direction_output(s->gpio, s->mode);
47 } else {
48 err = gpio_direction_input(s->gpio);
49 }
50 if (err) {
51 printk(KERN_ERR "gpio%u: unable to set direction: %d\n",
52 s->gpio, err);
53 continue;
54 }
55 if (!s->name)
56 gpio_free(s->gpio);
57 s++;
58 }
59}
60
61
62/*
63 * H3xxx flash support
64 */
65static struct mtd_partition h3xxx_partitions[] = {
66 {
67 .name = "H3XXX boot firmware",
68 .size = 0x00040000,
69 .offset = 0,
70 .mask_flags = MTD_WRITEABLE, /* force read-only */
71 }, {
72 .name = "H3XXX rootfs",
73 .size = MTDPART_SIZ_FULL,
74 .offset = 0x00040000,
75 }
76};
77
78static void h3xxx_set_vpp(int vpp)
79{
80 gpio_set_value(H3XXX_EGPIO_VPP_ON, vpp);
81}
82
83static int h3xxx_flash_init(void)
84{
85 int err = gpio_request(H3XXX_EGPIO_VPP_ON, "Flash Vpp");
86 if (err) {
87 pr_err("%s: can't request H3XXX_EGPIO_VPP_ON\n", __func__);
88 return err;
89 }
90
91 err = gpio_direction_output(H3XXX_EGPIO_VPP_ON, 0);
92 if (err)
93 gpio_free(H3XXX_EGPIO_VPP_ON);
94
95 return err;
96}
97
98static void h3xxx_flash_exit(void)
99{
100 gpio_free(H3XXX_EGPIO_VPP_ON);
101}
102
103static struct flash_platform_data h3xxx_flash_data = {
104 .map_name = "cfi_probe",
105 .set_vpp = h3xxx_set_vpp,
106 .init = h3xxx_flash_init,
107 .exit = h3xxx_flash_exit,
108 .parts = h3xxx_partitions,
109 .nr_parts = ARRAY_SIZE(h3xxx_partitions),
110};
111
112static struct resource h3xxx_flash_resource = {
113 .start = SA1100_CS0_PHYS,
114 .end = SA1100_CS0_PHYS + SZ_32M - 1,
115 .flags = IORESOURCE_MEM,
116};
117
118
119/*
120 * H3xxx uart support
121 */
122static void h3xxx_uart_set_mctrl(struct uart_port *port, u_int mctrl)
123{
124 if (port->mapbase == _Ser3UTCR0) {
125 gpio_set_value(H3XXX_GPIO_COM_RTS, !(mctrl & TIOCM_RTS));
126 }
127}
128
129static u_int h3xxx_uart_get_mctrl(struct uart_port *port)
130{
131 u_int ret = TIOCM_CD | TIOCM_CTS | TIOCM_DSR;
132
133 if (port->mapbase == _Ser3UTCR0) {
134 /*
135 * DCD and CTS bits are inverted in GPLR by RS232 transceiver
136 */
137 if (gpio_get_value(H3XXX_GPIO_COM_DCD))
138 ret &= ~TIOCM_CD;
139 if (gpio_get_value(H3XXX_GPIO_COM_CTS))
140 ret &= ~TIOCM_CTS;
141 }
142
143 return ret;
144}
145
146static void h3xxx_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
147{
148 if (port->mapbase == _Ser3UTCR0) {
149 if (!gpio_request(H3XXX_EGPIO_RS232_ON, "RS232 transceiver")) {
150 gpio_direction_output(H3XXX_EGPIO_RS232_ON, !state);
151 gpio_free(H3XXX_EGPIO_RS232_ON);
152 } else {
153 pr_err("%s: can't request H3XXX_EGPIO_RS232_ON\n",
154 __func__);
155 }
156 }
157}
158
159/*
160 * Enable/Disable wake up events for this serial port.
161 * Obviously, we only support this on the normal COM port.
162 */
163static int h3xxx_uart_set_wake(struct uart_port *port, u_int enable)
164{
165 int err = -EINVAL;
166
167 if (port->mapbase == _Ser3UTCR0) {
168 if (enable)
169 PWER |= PWER_GPIO23 | PWER_GPIO25; /* DCD and CTS */
170 else
171 PWER &= ~(PWER_GPIO23 | PWER_GPIO25); /* DCD and CTS */
172 err = 0;
173 }
174 return err;
175}
176
177static struct sa1100_port_fns h3xxx_port_fns __initdata = {
178 .set_mctrl = h3xxx_uart_set_mctrl,
179 .get_mctrl = h3xxx_uart_get_mctrl,
180 .pm = h3xxx_uart_pm,
181 .set_wake = h3xxx_uart_set_wake,
182};
183
184/*
185 * EGPIO
186 */
187
188static struct resource egpio_resources[] = {
189 [0] = {
190 .start = H3600_EGPIO_PHYS,
191 .end = H3600_EGPIO_PHYS + 0x4 - 1,
192 .flags = IORESOURCE_MEM,
193 },
194};
195
196static struct htc_egpio_chip egpio_chips[] = {
197 [0] = {
198 .reg_start = 0,
199 .gpio_base = H3XXX_EGPIO_BASE,
200 .num_gpios = 16,
201 .direction = HTC_EGPIO_OUTPUT,
202 .initial_values = 0x0080, /* H3XXX_EGPIO_RS232_ON */
203 },
204};
205
206static struct htc_egpio_platform_data egpio_info = {
207 .reg_width = 16,
208 .bus_width = 16,
209 .chip = egpio_chips,
210 .num_chips = ARRAY_SIZE(egpio_chips),
211};
212
213static struct platform_device h3xxx_egpio = {
214 .name = "htc-egpio",
215 .id = -1,
216 .resource = egpio_resources,
217 .num_resources = ARRAY_SIZE(egpio_resources),
218 .dev = {
219 .platform_data = &egpio_info,
220 },
221};
222
223/*
224 * GPIO keys
225 */
226
227static struct gpio_keys_button h3xxx_button_table[] = {
228 {
229 .code = KEY_POWER,
230 .gpio = H3XXX_GPIO_PWR_BUTTON,
231 .desc = "Power Button",
232 .active_low = 1,
233 .type = EV_KEY,
234 .wakeup = 1,
235 }, {
236 .code = KEY_ENTER,
237 .gpio = H3XXX_GPIO_ACTION_BUTTON,
238 .active_low = 1,
239 .desc = "Action button",
240 .type = EV_KEY,
241 .wakeup = 0,
242 },
243};
244
245static struct gpio_keys_platform_data h3xxx_keys_data = {
246 .buttons = h3xxx_button_table,
247 .nbuttons = ARRAY_SIZE(h3xxx_button_table),
248};
249
250static struct platform_device h3xxx_keys = {
251 .name = "gpio-keys",
252 .id = -1,
253 .dev = {
254 .platform_data = &h3xxx_keys_data,
255 },
256};
257
258static struct platform_device *h3xxx_devices[] = {
259 &h3xxx_egpio,
260 &h3xxx_keys,
261};
262
263void __init h3xxx_mach_init(void)
264{
265 sa1100_register_uart_fns(&h3xxx_port_fns);
266 sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1);
267 platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices));
268}
269
270static struct map_desc h3600_io_desc[] __initdata = {
271 { /* static memory bank 2 CS#2 */
272 .virtual = H3600_BANK_2_VIRT,
273 .pfn = __phys_to_pfn(SA1100_CS2_PHYS),
274 .length = 0x02800000,
275 .type = MT_DEVICE
276 }, { /* static memory bank 4 CS#4 */
277 .virtual = H3600_BANK_4_VIRT,
278 .pfn = __phys_to_pfn(SA1100_CS4_PHYS),
279 .length = 0x00800000,
280 .type = MT_DEVICE
281 }, { /* EGPIO 0 CS#5 */
282 .virtual = H3600_EGPIO_VIRT,
283 .pfn = __phys_to_pfn(H3600_EGPIO_PHYS),
284 .length = 0x01000000,
285 .type = MT_DEVICE
286 }
287};
288
289/*
290 * Common map_io initialization
291 */
292
293void __init h3xxx_map_io(void)
294{
295 sa1100_map_io();
296 iotable_init(h3600_io_desc, ARRAY_SIZE(h3600_io_desc));
297
298 sa1100_register_uart(0, 3); /* Common serial port */
299// sa1100_register_uart(1, 1); /* Microcontroller on 3100/3600 */
300
301 /* Ensure those pins are outputs and driving low */
302 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
303 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
304
305 /* Configure suspend conditions */
306 PGSR = 0;
307 PCFR = PCFR_OPDE;
308 PSDR = 0;
309
310 GPCR = 0x0fffffff; /* All outputs are set low by default */
311 GPDR = 0; /* Configure all GPIOs as input */
312}
313
diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c
index e7056c0b562c..51568dfc8e97 100644
--- a/arch/arm/mach-sa1100/hackkit.c
+++ b/arch/arm/mach-sa1100/hackkit.c
@@ -187,7 +187,7 @@ static struct resource hackkit_flash_resource = {
187 187
188static void __init hackkit_init(void) 188static void __init hackkit_init(void)
189{ 189{
190 sa11x0_set_flash_data(&hackkit_flash_data, &hackkit_flash_resource, 1); 190 sa11x0_register_mtd(&hackkit_flash_data, &hackkit_flash_resource, 1);
191} 191}
192 192
193/********************************************************************** 193/**********************************************************************
diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
index 9efb569cdb60..71a0b3fdcc8c 100644
--- a/arch/arm/mach-sa1100/include/mach/collie.h
+++ b/arch/arm/mach-sa1100/include/mach/collie.h
@@ -25,29 +25,39 @@
25#define COLLIE_GPIO_VPEN (COLLIE_SCOOP_GPIO_BASE + 7) 25#define COLLIE_GPIO_VPEN (COLLIE_SCOOP_GPIO_BASE + 7)
26#define COLLIE_SCP_LB_VOL_CHG SCOOP_GPCR_PA19 26#define COLLIE_SCP_LB_VOL_CHG SCOOP_GPCR_PA19
27 27
28#define COLLIE_SCOOP_IO_DIR ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \ 28#define COLLIE_SCOOP_IO_DIR (COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
29 COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | \ 29 COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | \
30 COLLIE_SCP_LB_VOL_CHG ) 30 COLLIE_SCP_LB_VOL_CHG)
31#define COLLIE_SCOOP_IO_OUT ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R ) 31#define COLLIE_SCOOP_IO_OUT (COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R)
32 32
33/* GPIOs for which the generic definition doesn't say much */ 33/* GPIOs for gpiolib */
34 34
35#define COLLIE_GPIO_ON_KEY GPIO_GPIO (0) 35#define COLLIE_GPIO_ON_KEY (0)
36#define COLLIE_GPIO_AC_IN GPIO_GPIO (1) 36#define COLLIE_GPIO_AC_IN (1)
37#define COLLIE_GPIO_SDIO_INT GPIO_GPIO (11) 37#define COLLIE_GPIO_SDIO_INT (11)
38#define COLLIE_GPIO_CF_IRQ GPIO_GPIO (14) 38#define COLLIE_GPIO_CF_IRQ (14)
39#define COLLIE_GPIO_nREMOCON_INT GPIO_GPIO (15) 39#define COLLIE_GPIO_nREMOCON_INT (15)
40#define COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO (16) 40#define COLLIE_GPIO_UCB1x00_RESET (16)
41#define COLLIE_GPIO_nMIC_ON GPIO_GPIO (17) 41#define COLLIE_GPIO_nMIC_ON (17)
42#define COLLIE_GPIO_nREMOCON_ON GPIO_GPIO (18) 42#define COLLIE_GPIO_nREMOCON_ON (18)
43#define COLLIE_GPIO_CO GPIO_GPIO (20) 43#define COLLIE_GPIO_CO (20)
44#define COLLIE_GPIO_MCP_CLK GPIO_GPIO (21) 44#define COLLIE_GPIO_MCP_CLK (21)
45#define COLLIE_GPIO_CF_CD GPIO_GPIO (22) 45#define COLLIE_GPIO_CF_CD (22)
46#define COLLIE_GPIO_UCB1x00_IRQ GPIO_GPIO (23) 46#define COLLIE_GPIO_UCB1x00_IRQ (23)
47#define COLLIE_GPIO_WAKEUP GPIO_GPIO (24) 47#define COLLIE_GPIO_WAKEUP (24)
48#define COLLIE_GPIO_GA_INT GPIO_GPIO (25) 48#define COLLIE_GPIO_GA_INT (25)
49#define COLLIE_GPIO_MAIN_BAT_LOW GPIO_GPIO (26) 49#define COLLIE_GPIO_MAIN_BAT_LOW (26)
50 50
51/* GPIO definitions for direct register access */
52
53#define _COLLIE_GPIO_ON_KEY GPIO_GPIO(0)
54#define _COLLIE_GPIO_AC_IN GPIO_GPIO(1)
55#define _COLLIE_GPIO_nREMOCON_INT GPIO_GPIO(15)
56#define _COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO(16)
57#define _COLLIE_GPIO_nMIC_ON GPIO_GPIO(17)
58#define _COLLIE_GPIO_nREMOCON_ON GPIO_GPIO(18)
59#define _COLLIE_GPIO_CO GPIO_GPIO(20)
60#define _COLLIE_GPIO_WAKEUP GPIO_GPIO(24)
51/* Interrupts */ 61/* Interrupts */
52 62
53#define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0 63#define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0
@@ -70,19 +80,20 @@
70#define COLLIE_LCM_IRQ_GPIO_nSD_WP IRQ_LOCOMO_GPIO14 80#define COLLIE_LCM_IRQ_GPIO_nSD_WP IRQ_LOCOMO_GPIO14
71 81
72/* GPIO's on the TC35143AF (Toshiba Analog Frontend) */ 82/* GPIO's on the TC35143AF (Toshiba Analog Frontend) */
73#define COLLIE_TC35143_GPIO_VERSION0 UCB_IO_0 /* GPIO0=Version */ 83#define COLLIE_TC35143_GPIO_BASE (GPIO_MAX + 13)
74#define COLLIE_TC35143_GPIO_TBL_CHK UCB_IO_1 /* GPIO1=TBL_CHK */ 84#define COLLIE_TC35143_GPIO_VERSION0 UCB_IO_0
75#define COLLIE_TC35143_GPIO_VPEN_ON UCB_IO_2 /* GPIO2=VPNE_ON */ 85#define COLLIE_TC35143_GPIO_TBL_CHK UCB_IO_1
76#define COLLIE_TC35143_GPIO_IR_ON UCB_IO_3 /* GPIO3=IR_ON */ 86#define COLLIE_TC35143_GPIO_VPEN_ON UCB_IO_2
77#define COLLIE_TC35143_GPIO_AMP_ON UCB_IO_4 /* GPIO4=AMP_ON */ 87#define COLLIE_TC35143_GPIO_IR_ON UCB_IO_3
78#define COLLIE_TC35143_GPIO_VERSION1 UCB_IO_5 /* GPIO5=Version */ 88#define COLLIE_TC35143_GPIO_AMP_ON UCB_IO_4
79#define COLLIE_TC35143_GPIO_FS8KLPF UCB_IO_5 /* GPIO5=fs 8k LPF */ 89#define COLLIE_TC35143_GPIO_VERSION1 UCB_IO_5
80#define COLLIE_TC35143_GPIO_BUZZER_BIAS UCB_IO_6 /* GPIO6=BUZZER BIAS */ 90#define COLLIE_TC35143_GPIO_FS8KLPF UCB_IO_5
81#define COLLIE_TC35143_GPIO_MBAT_ON UCB_IO_7 /* GPIO7=MBAT_ON */ 91#define COLLIE_TC35143_GPIO_BUZZER_BIAS UCB_IO_6
82#define COLLIE_TC35143_GPIO_BBAT_ON UCB_IO_8 /* GPIO8=BBAT_ON */ 92#define COLLIE_GPIO_MBAT_ON (COLLIE_TC35143_GPIO_BASE + 7)
83#define COLLIE_TC35143_GPIO_TMP_ON UCB_IO_9 /* GPIO9=TMP_ON */ 93#define COLLIE_GPIO_BBAT_ON (COLLIE_TC35143_GPIO_BASE + 8)
84#define COLLIE_TC35143_GPIO_IN ( UCB_IO_0 | UCB_IO_2 | UCB_IO_5 ) 94#define COLLIE_GPIO_TMP_ON (COLLIE_TC35143_GPIO_BASE + 9)
85#define COLLIE_TC35143_GPIO_OUT ( UCB_IO_1 | UCB_IO_3 | UCB_IO_4 | UCB_IO_6 | \ 95#define COLLIE_TC35143_GPIO_IN (UCB_IO_0 | UCB_IO_2 | UCB_IO_5)
86 UCB_IO_7 | UCB_IO_8 | UCB_IO_9 ) 96#define COLLIE_TC35143_GPIO_OUT (UCB_IO_1 | UCB_IO_3 | UCB_IO_4 \
97 | UCB_IO_6)
87 98
88#endif 99#endif
diff --git a/arch/arm/mach-sa1100/include/mach/gpio.h b/arch/arm/mach-sa1100/include/mach/gpio.h
index 582a0c92da53..7befc104e9a9 100644
--- a/arch/arm/mach-sa1100/include/mach/gpio.h
+++ b/arch/arm/mach-sa1100/include/mach/gpio.h
@@ -49,20 +49,9 @@ static inline void gpio_set_value(unsigned gpio, int value)
49 49
50#define gpio_cansleep __gpio_cansleep 50#define gpio_cansleep __gpio_cansleep
51 51
52static inline unsigned gpio_to_irq(unsigned gpio) 52#define gpio_to_irq(gpio) ((gpio < 11) ? (IRQ_GPIO0 + gpio) : \
53{ 53 (IRQ_GPIO11 - 11 + gpio))
54 if (gpio < 11) 54#define irq_to_gpio(irq) ((irq < IRQ_GPIO11_27) ? (irq - IRQ_GPIO0) : \
55 return IRQ_GPIO0 + gpio; 55 (irq - IRQ_GPIO11 + 11))
56 else
57 return IRQ_GPIO11 - 11 + gpio;
58}
59
60static inline unsigned irq_to_gpio(unsigned irq)
61{
62 if (irq < IRQ_GPIO11_27)
63 return irq - IRQ_GPIO0;
64 else
65 return irq - IRQ_GPIO11 + 11;
66}
67 56
68#endif 57#endif
diff --git a/arch/arm/mach-sa1100/include/mach/h3600.h b/arch/arm/mach-sa1100/include/mach/h3600.h
deleted file mode 100644
index 2827faa47421..000000000000
--- a/arch/arm/mach-sa1100/include/mach/h3600.h
+++ /dev/null
@@ -1,100 +0,0 @@
1/*
2 *
3 * Definitions for H3600 Handheld Computer
4 *
5 * Copyright 2000 Compaq Computer Corporation.
6 *
7 * Use consistent with the GNU GPL is permitted,
8 * provided that this copyright notice is
9 * preserved in its entirety in all copies and derived works.
10 *
11 * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
12 * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
13 * FITNESS FOR ANY PARTICULAR PURPOSE.
14 *
15 * Author: Jamey Hicks.
16 *
17 * History:
18 *
19 * 2001-10-?? Andrew Christian Added support for iPAQ H3800
20 *
21 */
22
23#ifndef _INCLUDE_H3600_H_
24#define _INCLUDE_H3600_H_
25
26typedef int __bitwise pm_request_t;
27
28#define PM_SUSPEND ((__force pm_request_t) 1) /* enter D1-D3 */
29#define PM_RESUME ((__force pm_request_t) 2) /* enter D0 */
30
31/* generalized support for H3xxx series Compaq Pocket PC's */
32#define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600())
33
34/* Physical memory regions corresponding to chip selects */
35#define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000)
36#define H3600_BANK_2_PHYS SA1100_CS2_PHYS
37#define H3600_BANK_4_PHYS SA1100_CS4_PHYS
38
39/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
40#define H3600_EGPIO_VIRT 0xf0000000
41#define H3600_BANK_2_VIRT 0xf1000000
42#define H3600_BANK_4_VIRT 0xf3800000
43
44/*
45 Machine-independent GPIO definitions
46 --- these are common across all current iPAQ platforms
47*/
48
49#define GPIO_H3600_NPOWER_BUTTON GPIO_GPIO (0) /* Also known as the "off button" */
50
51#define GPIO_H3600_PCMCIA_CD1 GPIO_GPIO (10)
52#define GPIO_H3600_PCMCIA_IRQ1 GPIO_GPIO (11)
53
54/* UDA1341 L3 Interface */
55#define GPIO_H3600_L3_DATA GPIO_GPIO (14)
56#define GPIO_H3600_L3_MODE GPIO_GPIO (15)
57#define GPIO_H3600_L3_CLOCK GPIO_GPIO (16)
58
59#define GPIO_H3600_PCMCIA_CD0 GPIO_GPIO (17)
60#define GPIO_H3600_SYS_CLK GPIO_GPIO (19)
61#define GPIO_H3600_PCMCIA_IRQ0 GPIO_GPIO (21)
62
63#define GPIO_H3600_COM_DCD GPIO_GPIO (23)
64#define GPIO_H3600_OPT_IRQ GPIO_GPIO (24)
65#define GPIO_H3600_COM_CTS GPIO_GPIO (25)
66#define GPIO_H3600_COM_RTS GPIO_GPIO (26)
67
68#define IRQ_GPIO_H3600_NPOWER_BUTTON IRQ_GPIO0
69#define IRQ_GPIO_H3600_PCMCIA_CD1 IRQ_GPIO10
70#define IRQ_GPIO_H3600_PCMCIA_IRQ1 IRQ_GPIO11
71#define IRQ_GPIO_H3600_PCMCIA_CD0 IRQ_GPIO17
72#define IRQ_GPIO_H3600_PCMCIA_IRQ0 IRQ_GPIO21
73#define IRQ_GPIO_H3600_COM_DCD IRQ_GPIO23
74#define IRQ_GPIO_H3600_OPT_IRQ IRQ_GPIO24
75#define IRQ_GPIO_H3600_COM_CTS IRQ_GPIO25
76
77
78#ifndef __ASSEMBLY__
79
80enum ipaq_egpio_type {
81 IPAQ_EGPIO_LCD_POWER, /* Power to the LCD panel */
82 IPAQ_EGPIO_CODEC_NRESET, /* Clear to reset the audio codec (remember to return high) */
83 IPAQ_EGPIO_AUDIO_ON, /* Audio power */
84 IPAQ_EGPIO_QMUTE, /* Audio muting */
85 IPAQ_EGPIO_OPT_NVRAM_ON, /* Non-volatile RAM on extension sleeves (SPI interface) */
86 IPAQ_EGPIO_OPT_ON, /* Power to extension sleeves */
87 IPAQ_EGPIO_CARD_RESET, /* Reset PCMCIA cards on extension sleeve (???) */
88 IPAQ_EGPIO_OPT_RESET, /* Reset option pack (???) */
89 IPAQ_EGPIO_IR_ON, /* IR sensor/emitter power */
90 IPAQ_EGPIO_IR_FSEL, /* IR speed selection 1->fast, 0->slow */
91 IPAQ_EGPIO_RS232_ON, /* Maxim RS232 chip power */
92 IPAQ_EGPIO_VPP_ON, /* Turn on power to flash programming */
93 IPAQ_EGPIO_LCD_ENABLE, /* Enable/disable LCD controller */
94};
95
96extern void (*assign_h3600_egpio)(enum ipaq_egpio_type x, int level);
97
98#endif /* ASSEMBLY */
99
100#endif /* _INCLUDE_H3600_H_ */
diff --git a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h b/arch/arm/mach-sa1100/include/mach/h3600_gpio.h
deleted file mode 100644
index a36ca76d018b..000000000000
--- a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h
+++ /dev/null
@@ -1,77 +0,0 @@
1/*
2 *
3 * Definitions for H3600 Handheld Computer
4 *
5 * Copyright 2000 Compaq Computer Corporation.
6 *
7 * Use consistent with the GNU GPL is permitted,
8 * provided that this copyright notice is
9 * preserved in its entirety in all copies and derived works.
10 *
11 * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
12 * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
13 * FITNESS FOR ANY PARTICULAR PURPOSE.
14 *
15 * Author: Jamey Hicks.
16 *
17 * History:
18 *
19 * 2001-10-?? Andrew Christian Added support for iPAQ H3800
20 *
21 */
22
23#ifndef _INCLUDE_H3600_GPIO_H_
24#define _INCLUDE_H3600_GPIO_H_
25
26/*
27 * GPIO lines that are common across ALL iPAQ models are in "h3600.h"
28 * This file contains machine-specific definitions
29 */
30
31#define GPIO_H3600_SUSPEND GPIO_GPIO (0)
32/* GPIO[2:9] used by LCD on H3600/3800, used as GPIO on H3100 */
33#define GPIO_H3100_BT_ON GPIO_GPIO (2)
34#define GPIO_H3100_GPIO3 GPIO_GPIO (3)
35#define GPIO_H3100_QMUTE GPIO_GPIO (4)
36#define GPIO_H3100_LCD_3V_ON GPIO_GPIO (5)
37#define GPIO_H3100_AUD_ON GPIO_GPIO (6)
38#define GPIO_H3100_AUD_PWR_ON GPIO_GPIO (7)
39#define GPIO_H3100_IR_ON GPIO_GPIO (8)
40#define GPIO_H3100_IR_FSEL GPIO_GPIO (9)
41
42/* for H3600, audio sample rate clock generator */
43#define GPIO_H3600_CLK_SET0 GPIO_GPIO (12)
44#define GPIO_H3600_CLK_SET1 GPIO_GPIO (13)
45
46#define GPIO_H3600_ACTION_BUTTON GPIO_GPIO (18)
47#define GPIO_H3600_SOFT_RESET GPIO_GPIO (20) /* Also known as BATT_FAULT */
48#define GPIO_H3600_OPT_LOCK GPIO_GPIO (22)
49#define GPIO_H3600_OPT_DET GPIO_GPIO (27)
50
51/****************************************************/
52
53#define IRQ_GPIO_H3600_ACTION_BUTTON IRQ_GPIO18
54#define IRQ_GPIO_H3600_OPT_DET IRQ_GPIO27
55
56/* H3100 / 3600 EGPIO pins */
57#define EGPIO_H3600_VPP_ON (1 << 0)
58#define EGPIO_H3600_CARD_RESET (1 << 1) /* reset the attached pcmcia/compactflash card. active high. */
59#define EGPIO_H3600_OPT_RESET (1 << 2) /* reset the attached option pack. active high. */
60#define EGPIO_H3600_CODEC_NRESET (1 << 3) /* reset the onboard UDA1341. active low. */
61#define EGPIO_H3600_OPT_NVRAM_ON (1 << 4) /* apply power to optionpack nvram, active high. */
62#define EGPIO_H3600_OPT_ON (1 << 5) /* full power to option pack. active high. */
63#define EGPIO_H3600_LCD_ON (1 << 6) /* enable 3.3V to LCD. active high. */
64#define EGPIO_H3600_RS232_ON (1 << 7) /* UART3 transceiver force on. Active high. */
65
66/* H3600 only EGPIO pins */
67#define EGPIO_H3600_LCD_PCI (1 << 8) /* LCD control IC enable. active high. */
68#define EGPIO_H3600_IR_ON (1 << 9) /* apply power to IR module. active high. */
69#define EGPIO_H3600_AUD_AMP_ON (1 << 10) /* apply power to audio power amp. active high. */
70#define EGPIO_H3600_AUD_PWR_ON (1 << 11) /* apply power to reset of audio circuit. active high. */
71#define EGPIO_H3600_QMUTE (1 << 12) /* mute control for onboard UDA1341. active high. */
72#define EGPIO_H3600_IR_FSEL (1 << 13) /* IR speed select: 1->fast, 0->slow */
73#define EGPIO_H3600_LCD_5V_ON (1 << 14) /* enable 5V to LCD. active high. */
74#define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */
75
76
77#endif /* _INCLUDE_H3600_GPIO_H_ */
diff --git a/arch/arm/mach-sa1100/include/mach/h3xxx.h b/arch/arm/mach-sa1100/include/mach/h3xxx.h
new file mode 100644
index 000000000000..7d9df16f04a2
--- /dev/null
+++ b/arch/arm/mach-sa1100/include/mach/h3xxx.h
@@ -0,0 +1,94 @@
1/*
2 * Definitions for Compaq iPAQ H3100 and H3600 handheld computers
3 *
4 * (c) 2000 Compaq Computer Corporation. (Author: Jamey Hicks)
5 * (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 */
12
13#ifndef _INCLUDE_H3XXX_H_
14#define _INCLUDE_H3XXX_H_
15
16/* Physical memory regions corresponding to chip selects */
17#define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000)
18#define H3600_BANK_2_PHYS SA1100_CS2_PHYS
19#define H3600_BANK_4_PHYS SA1100_CS4_PHYS
20
21/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
22#define H3600_EGPIO_VIRT 0xf0000000
23#define H3600_BANK_2_VIRT 0xf1000000
24#define H3600_BANK_4_VIRT 0xf3800000
25
26/*
27 * gpiolib numbers for all iPAQs
28 */
29#define H3XXX_GPIO_PWR_BUTTON 0
30#define H3XXX_GPIO_PCMCIA_CD1 10
31#define H3XXX_GPIO_PCMCIA_IRQ1 11
32#define H3XXX_GPIO_PCMCIA_CD0 17
33#define H3XXX_GPIO_ACTION_BUTTON 18
34#define H3XXX_GPIO_SYS_CLK 19
35#define H3XXX_GPIO_PCMCIA_IRQ0 21
36#define H3XXX_GPIO_COM_DCD 23
37#define H3XXX_GPIO_OPTION 24
38#define H3XXX_GPIO_COM_CTS 25
39#define H3XXX_GPIO_COM_RTS 26
40
41/* machine-specific gpios */
42
43#define H3100_GPIO_BT_ON 2
44#define H3100_GPIO_QMUTE 4
45#define H3100_GPIO_LCD_3V_ON 5
46#define H3100_GPIO_AUD_ON 6
47#define H3100_GPIO_AUD_PWR_ON 7
48#define H3100_GPIO_IR_ON 8
49#define H3100_GPIO_IR_FSEL 9
50
51#define H3600_GPIO_CLK_SET0 12 /* audio sample rate clock generator */
52#define H3600_GPIO_CLK_SET1 13
53#define H3600_GPIO_SOFT_RESET 20 /* also known as BATT_FAULT */
54#define H3600_GPIO_OPT_LOCK 22
55#define H3600_GPIO_OPT_DET 27
56
57
58/* H3100 / 3600 EGPIO pins */
59#define H3XXX_EGPIO_BASE (GPIO_MAX + 1)
60
61#define H3XXX_EGPIO_VPP_ON (H3XXX_EGPIO_BASE + 0)
62#define H3XXX_EGPIO_CARD_RESET (H3XXX_EGPIO_BASE + 1) /* reset the attached pcmcia/compactflash card. active high. */
63#define H3XXX_EGPIO_OPT_RESET (H3XXX_EGPIO_BASE + 2) /* reset the attached option pack. active high. */
64#define H3XXX_EGPIO_CODEC_NRESET (H3XXX_EGPIO_BASE + 3) /* reset the onboard UDA1341. active low. */
65#define H3XXX_EGPIO_OPT_NVRAM_ON (H3XXX_EGPIO_BASE + 4) /* apply power to optionpack nvram, active high. */
66#define H3XXX_EGPIO_OPT_ON (H3XXX_EGPIO_BASE + 5) /* full power to option pack. active high. */
67#define H3XXX_EGPIO_LCD_ON (H3XXX_EGPIO_BASE + 6) /* enable 3.3V to LCD. active high. */
68#define H3XXX_EGPIO_RS232_ON (H3XXX_EGPIO_BASE + 7) /* UART3 transceiver force on. Active high. */
69
70/* H3600 only EGPIO pins */
71#define H3600_EGPIO_LCD_PCI (H3XXX_EGPIO_BASE + 8) /* LCD control IC enable. active high. */
72#define H3600_EGPIO_IR_ON (H3XXX_EGPIO_BASE + 9) /* apply power to IR module. active high. */
73#define H3600_EGPIO_AUD_AMP_ON (H3XXX_EGPIO_BASE + 10) /* apply power to audio power amp. active high. */
74#define H3600_EGPIO_AUD_PWR_ON (H3XXX_EGPIO_BASE + 11) /* apply power to reset of audio circuit. active high. */
75#define H3600_EGPIO_QMUTE (H3XXX_EGPIO_BASE + 12) /* mute control for onboard UDA1341. active high. */
76#define H3600_EGPIO_IR_FSEL (H3XXX_EGPIO_BASE + 13) /* IR speed select: 1->fast, 0->slow */
77#define H3600_EGPIO_LCD_5V_ON (H3XXX_EGPIO_BASE + 14) /* enable 5V to LCD. active high. */
78#define H3600_EGPIO_LVDD_ON (H3XXX_EGPIO_BASE + 15) /* enable 9V and -6.5V to LCD. */
79
80struct gpio_default_state {
81 int gpio;
82 int mode;
83 const char *name;
84};
85
86#define GPIO_MODE_IN -1
87#define GPIO_MODE_OUT0 0
88#define GPIO_MODE_OUT1 1
89
90void h3xxx_init_gpio(struct gpio_default_state *s, size_t n);
91void __init h3xxx_map_io(void);
92void __init h3xxx_mach_init(void);
93
94#endif /* _INCLUDE_H3XXX_H_ */
diff --git a/arch/arm/mach-sa1100/include/mach/mcp.h b/arch/arm/mach-sa1100/include/mach/mcp.h
index fb8b09a57ad7..ed1a331508a7 100644
--- a/arch/arm/mach-sa1100/include/mach/mcp.h
+++ b/arch/arm/mach-sa1100/include/mach/mcp.h
@@ -16,6 +16,7 @@ struct mcp_plat_data {
16 u32 mccr0; 16 u32 mccr0;
17 u32 mccr1; 17 u32 mccr1;
18 unsigned int sclk_rate; 18 unsigned int sclk_rate;
19 int gpio_base;
19}; 20};
20 21
21#endif 22#endif
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c
index fd776bb666cd..13ebd2d99bfd 100644
--- a/arch/arm/mach-sa1100/jornada720.c
+++ b/arch/arm/mach-sa1100/jornada720.c
@@ -354,7 +354,7 @@ static struct resource jornada720_flash_resource = {
354 354
355static void __init jornada720_mach_init(void) 355static void __init jornada720_mach_init(void)
356{ 356{
357 sa11x0_set_flash_data(&jornada720_flash_data, &jornada720_flash_resource, 1); 357 sa11x0_register_mtd(&jornada720_flash_data, &jornada720_flash_resource, 1);
358} 358}
359 359
360MACHINE_START(JORNADA720, "HP Jornada 720") 360MACHINE_START(JORNADA720, "HP Jornada 720")
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c
index 1f940df0e5af..68069d6dc07a 100644
--- a/arch/arm/mach-sa1100/lart.c
+++ b/arch/arm/mach-sa1100/lart.c
@@ -28,7 +28,7 @@ static struct mcp_plat_data lart_mcp_data = {
28 28
29static void __init lart_init(void) 29static void __init lart_init(void)
30{ 30{
31 sa11x0_set_mcp_data(&lart_mcp_data); 31 sa11x0_register_mcp(&lart_mcp_data);
32} 32}
33 33
34static struct map_desc lart_io_desc[] __initdata = { 34static struct map_desc lart_io_desc[] __initdata = {
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c
index e1458bc1868e..1ccd6018d3a3 100644
--- a/arch/arm/mach-sa1100/pleb.c
+++ b/arch/arm/mach-sa1100/pleb.c
@@ -109,7 +109,7 @@ static struct flash_platform_data pleb_flash_data = {
109 109
110static void __init pleb_init(void) 110static void __init pleb_init(void)
111{ 111{
112 sa11x0_set_flash_data(&pleb_flash_data, pleb_flash_resources, 112 sa11x0_register_mtd(&pleb_flash_data, pleb_flash_resources,
113 ARRAY_SIZE(pleb_flash_resources)); 113 ARRAY_SIZE(pleb_flash_resources));
114 114
115 115
diff --git a/arch/arm/mach-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c
index ddd917d1083d..85e82bb73d7e 100644
--- a/arch/arm/mach-sa1100/shannon.c
+++ b/arch/arm/mach-sa1100/shannon.c
@@ -59,8 +59,8 @@ static struct mcp_plat_data shannon_mcp_data = {
59 59
60static void __init shannon_init(void) 60static void __init shannon_init(void)
61{ 61{
62 sa11x0_set_flash_data(&shannon_flash_data, &shannon_flash_resource, 1); 62 sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);
63 sa11x0_set_mcp_data(&shannon_mcp_data); 63 sa11x0_register_mcp(&shannon_mcp_data);
64} 64}
65 65
66static void __init shannon_map_io(void) 66static void __init shannon_map_io(void)
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c
index 3c74534f7fee..49cfd64663ac 100644
--- a/arch/arm/mach-sa1100/simpad.c
+++ b/arch/arm/mach-sa1100/simpad.c
@@ -166,9 +166,9 @@ static void __init simpad_map_io(void)
166 PCFR = 0; 166 PCFR = 0;
167 PSDR = 0; 167 PSDR = 0;
168 168
169 sa11x0_set_flash_data(&simpad_flash_data, simpad_flash_resources, 169 sa11x0_register_mtd(&simpad_flash_data, simpad_flash_resources,
170 ARRAY_SIZE(simpad_flash_resources)); 170 ARRAY_SIZE(simpad_flash_resources));
171 sa11x0_set_mcp_data(&simpad_mcp_data); 171 sa11x0_register_mcp(&simpad_mcp_data);
172} 172}
173 173
174static void simpad_power_off(void) 174static void simpad_power_off(void)