aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig6
-rw-r--r--arch/arm/common/vic.c8
-rw-r--r--arch/arm/configs/mini2440_defconfig2097
-rw-r--r--arch/arm/mach-s3c2410/usb-simtec.c1
-rw-r--r--arch/arm/mach-s3c2440/Kconfig10
-rw-r--r--arch/arm/mach-s3c2440/Makefile1
-rw-r--r--arch/arm/mach-s3c2440/mach-mini2440.c703
-rw-r--r--arch/arm/mach-s3c2442/Kconfig12
-rw-r--r--arch/arm/mach-s3c2442/Makefile2
-rw-r--r--arch/arm/mach-s3c2442/include/mach/gta02.h84
-rw-r--r--arch/arm/mach-s3c2442/mach-gta02.c646
-rw-r--r--arch/arm/plat-s3c/Makefile1
-rw-r--r--arch/arm/plat-s3c/dev-audio.c68
-rw-r--r--arch/arm/plat-s3c/include/plat/devs.h5
-rw-r--r--arch/arm/plat-s3c64xx/Makefile1
-rw-r--r--arch/arm/plat-s3c64xx/cpufreq.c262
16 files changed, 3902 insertions, 5 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 29475101a7b3..aef63c8e3d2d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1241,7 +1241,7 @@ endmenu
1241 1241
1242menu "CPU Power Management" 1242menu "CPU Power Management"
1243 1243
1244if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA) 1244if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA || ARCH_S3C64XX)
1245 1245
1246source "drivers/cpufreq/Kconfig" 1246source "drivers/cpufreq/Kconfig"
1247 1247
@@ -1272,6 +1272,10 @@ config CPU_FREQ_PXA
1272 default y 1272 default y
1273 select CPU_FREQ_DEFAULT_GOV_USERSPACE 1273 select CPU_FREQ_DEFAULT_GOV_USERSPACE
1274 1274
1275config CPU_FREQ_S3C64XX
1276 bool "CPUfreq support for Samsung S3C64XX CPUs"
1277 depends on CPU_FREQ && CPU_S3C6410
1278
1275endif 1279endif
1276 1280
1277source "drivers/cpuidle/Kconfig" 1281source "drivers/cpuidle/Kconfig"
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c
index 887c6eb3a18a..6ed89836e908 100644
--- a/arch/arm/common/vic.c
+++ b/arch/arm/common/vic.c
@@ -229,14 +229,18 @@ static int vic_set_wake(unsigned int irq, unsigned int on)
229{ 229{
230 struct vic_device *v = vic_from_irq(irq); 230 struct vic_device *v = vic_from_irq(irq);
231 unsigned int off = irq & 31; 231 unsigned int off = irq & 31;
232 u32 bit = 1 << off;
232 233
233 if (!v) 234 if (!v)
234 return -EINVAL; 235 return -EINVAL;
235 236
237 if (!(bit & v->resume_sources))
238 return -EINVAL;
239
236 if (on) 240 if (on)
237 v->resume_irqs |= 1 << off; 241 v->resume_irqs |= bit;
238 else 242 else
239 v->resume_irqs &= ~(1 << off); 243 v->resume_irqs &= ~bit;
240 244
241 return 0; 245 return 0;
242} 246}
diff --git a/arch/arm/configs/mini2440_defconfig b/arch/arm/configs/mini2440_defconfig
new file mode 100644
index 000000000000..e49ed40f3be7
--- /dev/null
+++ b/arch/arm/configs/mini2440_defconfig
@@ -0,0 +1,2097 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc6
4# Wed May 20 12:29:51 2009
5#
6CONFIG_ARM=y
7CONFIG_HAVE_PWM=y
8CONFIG_SYS_SUPPORTS_APM_EMULATION=y
9CONFIG_GENERIC_GPIO=y
10# CONFIG_GENERIC_TIME is not set
11# CONFIG_GENERIC_CLOCKEVENTS is not set
12CONFIG_MMU=y
13CONFIG_NO_IOPORT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_HAVE_LATENCYTOP_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y
18CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_HARDIRQS_SW_RESEND=y
20CONFIG_GENERIC_IRQ_PROBE=y
21CONFIG_RWSEM_GENERIC_SPINLOCK=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_GENERIC_HWEIGHT=y
25CONFIG_GENERIC_CALIBRATE_DELAY=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
29
30#
31# General setup
32#
33CONFIG_EXPERIMENTAL=y
34CONFIG_BROKEN_ON_SMP=y
35CONFIG_INIT_ENV_ARG_LIMIT=32
36CONFIG_LOCALVERSION=""
37# CONFIG_LOCALVERSION_AUTO is not set
38CONFIG_SWAP=y
39CONFIG_SYSVIPC=y
40CONFIG_SYSVIPC_SYSCTL=y
41CONFIG_POSIX_MQUEUE=y
42CONFIG_POSIX_MQUEUE_SYSCTL=y
43# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_CLASSIC_RCU=y
51# CONFIG_TREE_RCU is not set
52# CONFIG_PREEMPT_RCU is not set
53# CONFIG_TREE_RCU_TRACE is not set
54# CONFIG_PREEMPT_RCU_TRACE is not set
55# CONFIG_IKCONFIG is not set
56CONFIG_LOG_BUF_SHIFT=17
57# CONFIG_GROUP_SCHED is not set
58# CONFIG_CGROUPS is not set
59# CONFIG_SYSFS_DEPRECATED_V2 is not set
60CONFIG_RELAY=y
61CONFIG_NAMESPACES=y
62CONFIG_UTS_NS=y
63CONFIG_IPC_NS=y
64# CONFIG_USER_NS is not set
65# CONFIG_PID_NS is not set
66# CONFIG_NET_NS is not set
67CONFIG_BLK_DEV_INITRD=y
68CONFIG_INITRAMFS_SOURCE=""
69CONFIG_RD_GZIP=y
70CONFIG_RD_BZIP2=y
71CONFIG_RD_LZMA=y
72CONFIG_CC_OPTIMIZE_FOR_SIZE=y
73CONFIG_SYSCTL=y
74CONFIG_ANON_INODES=y
75# CONFIG_EMBEDDED is not set
76CONFIG_UID16=y
77CONFIG_SYSCTL_SYSCALL=y
78CONFIG_KALLSYMS=y
79# CONFIG_KALLSYMS_ALL is not set
80# CONFIG_KALLSYMS_EXTRA_PASS is not set
81CONFIG_STRIP_ASM_SYMS=y
82CONFIG_HOTPLUG=y
83CONFIG_PRINTK=y
84CONFIG_BUG=y
85CONFIG_ELF_CORE=y
86CONFIG_BASE_FULL=y
87CONFIG_FUTEX=y
88CONFIG_EPOLL=y
89CONFIG_SIGNALFD=y
90CONFIG_TIMERFD=y
91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y
93CONFIG_AIO=y
94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_SLUB_DEBUG=y
96# CONFIG_COMPAT_BRK is not set
97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
99# CONFIG_SLOB is not set
100# CONFIG_PROFILING is not set
101# CONFIG_MARKERS is not set
102CONFIG_HAVE_OPROFILE=y
103# CONFIG_KPROBES is not set
104CONFIG_HAVE_KPROBES=y
105CONFIG_HAVE_KRETPROBES=y
106CONFIG_HAVE_CLK=y
107# CONFIG_SLOW_WORK is not set
108CONFIG_HAVE_GENERIC_DMA_COHERENT=y
109CONFIG_SLABINFO=y
110CONFIG_RT_MUTEXES=y
111CONFIG_BASE_SMALL=0
112CONFIG_MODULES=y
113CONFIG_MODULE_FORCE_LOAD=y
114CONFIG_MODULE_UNLOAD=y
115CONFIG_MODULE_FORCE_UNLOAD=y
116# CONFIG_MODVERSIONS is not set
117# CONFIG_MODULE_SRCVERSION_ALL is not set
118CONFIG_BLOCK=y
119CONFIG_LBD=y
120# CONFIG_BLK_DEV_BSG is not set
121CONFIG_BLK_DEV_INTEGRITY=y
122
123#
124# IO Schedulers
125#
126CONFIG_IOSCHED_NOOP=y
127CONFIG_IOSCHED_AS=y
128CONFIG_IOSCHED_DEADLINE=y
129CONFIG_IOSCHED_CFQ=y
130CONFIG_DEFAULT_AS=y
131# CONFIG_DEFAULT_DEADLINE is not set
132# CONFIG_DEFAULT_CFQ is not set
133# CONFIG_DEFAULT_NOOP is not set
134CONFIG_DEFAULT_IOSCHED="anticipatory"
135CONFIG_FREEZER=y
136
137#
138# System Type
139#
140# CONFIG_ARCH_AAEC2000 is not set
141# CONFIG_ARCH_INTEGRATOR is not set
142# CONFIG_ARCH_REALVIEW is not set
143# CONFIG_ARCH_VERSATILE is not set
144# CONFIG_ARCH_AT91 is not set
145# CONFIG_ARCH_CLPS711X is not set
146# CONFIG_ARCH_EBSA110 is not set
147# CONFIG_ARCH_EP93XX is not set
148# CONFIG_ARCH_GEMINI is not set
149# CONFIG_ARCH_FOOTBRIDGE is not set
150# CONFIG_ARCH_NETX is not set
151# CONFIG_ARCH_H720X is not set
152# CONFIG_ARCH_IMX is not set
153# CONFIG_ARCH_IOP13XX is not set
154# CONFIG_ARCH_IOP32X is not set
155# CONFIG_ARCH_IOP33X is not set
156# CONFIG_ARCH_IXP23XX is not set
157# CONFIG_ARCH_IXP2000 is not set
158# CONFIG_ARCH_IXP4XX is not set
159# CONFIG_ARCH_L7200 is not set
160# CONFIG_ARCH_KIRKWOOD is not set
161# CONFIG_ARCH_KS8695 is not set
162# CONFIG_ARCH_NS9XXX is not set
163# CONFIG_ARCH_LOKI is not set
164# CONFIG_ARCH_MV78XX0 is not set
165# CONFIG_ARCH_MXC is not set
166# CONFIG_ARCH_ORION5X is not set
167# CONFIG_ARCH_PNX4008 is not set
168# CONFIG_ARCH_PXA is not set
169# CONFIG_ARCH_MMP is not set
170# CONFIG_ARCH_RPC is not set
171# CONFIG_ARCH_SA1100 is not set
172CONFIG_ARCH_S3C2410=y
173# CONFIG_ARCH_S3C64XX is not set
174# CONFIG_ARCH_SHARK is not set
175# CONFIG_ARCH_LH7A40X is not set
176# CONFIG_ARCH_DAVINCI is not set
177# CONFIG_ARCH_OMAP is not set
178# CONFIG_ARCH_MSM is not set
179# CONFIG_ARCH_W90X900 is not set
180CONFIG_PLAT_S3C24XX=y
181CONFIG_S3C2410_CLOCK=y
182CONFIG_CPU_S3C244X=y
183CONFIG_S3C24XX_PWM=y
184CONFIG_S3C24XX_GPIO_EXTRA=0
185CONFIG_S3C2410_DMA=y
186# CONFIG_S3C2410_DMA_DEBUG is not set
187CONFIG_S3C24XX_ADC=y
188CONFIG_PLAT_S3C=y
189CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y
190CONFIG_CPU_LLSERIAL_S3C2440=y
191
192#
193# Boot options
194#
195# CONFIG_S3C_BOOT_WATCHDOG is not set
196# CONFIG_S3C_BOOT_ERROR_RESET is not set
197CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
198
199#
200# Power management
201#
202# CONFIG_S3C2410_PM_DEBUG is not set
203# CONFIG_S3C2410_PM_CHECK is not set
204CONFIG_S3C_LOWLEVEL_UART_PORT=0
205CONFIG_S3C_GPIO_SPACE=0
206
207#
208# S3C2400 Machines
209#
210CONFIG_S3C2410_PM=y
211CONFIG_S3C2410_GPIO=y
212
213#
214# S3C2410 Machines
215#
216# CONFIG_ARCH_SMDK2410 is not set
217# CONFIG_ARCH_H1940 is not set
218# CONFIG_MACH_N30 is not set
219# CONFIG_ARCH_BAST is not set
220# CONFIG_MACH_OTOM is not set
221# CONFIG_MACH_AML_M5900 is not set
222# CONFIG_MACH_TCT_HAMMER is not set
223# CONFIG_MACH_VR1000 is not set
224# CONFIG_MACH_QT2410 is not set
225
226#
227# S3C2412 Machines
228#
229# CONFIG_MACH_JIVE is not set
230# CONFIG_MACH_SMDK2413 is not set
231# CONFIG_MACH_SMDK2412 is not set
232# CONFIG_MACH_VSTMS is not set
233CONFIG_CPU_S3C2440=y
234CONFIG_S3C2440_DMA=y
235
236#
237# S3C2440 Machines
238#
239# CONFIG_MACH_ANUBIS is not set
240# CONFIG_MACH_OSIRIS is not set
241# CONFIG_MACH_RX3715 is not set
242# CONFIG_ARCH_S3C2440 is not set
243# CONFIG_MACH_NEXCODER_2440 is not set
244# CONFIG_MACH_AT2440EVB is not set
245CONFIG_MACH_MINI2440=y
246
247#
248# S3C2442 Machines
249#
250
251#
252# S3C2443 Machines
253#
254# CONFIG_MACH_SMDK2443 is not set
255
256#
257# Processor Type
258#
259CONFIG_CPU_32=y
260CONFIG_CPU_ARM920T=y
261CONFIG_CPU_32v4T=y
262CONFIG_CPU_ABRT_EV4T=y
263CONFIG_CPU_PABRT_NOIFAR=y
264CONFIG_CPU_CACHE_V4WT=y
265CONFIG_CPU_CACHE_VIVT=y
266CONFIG_CPU_COPY_V4WB=y
267CONFIG_CPU_TLB_V4WBI=y
268CONFIG_CPU_CP15=y
269CONFIG_CPU_CP15_MMU=y
270
271#
272# Processor Features
273#
274CONFIG_ARM_THUMB=y
275# CONFIG_CPU_ICACHE_DISABLE is not set
276# CONFIG_CPU_DCACHE_DISABLE is not set
277# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
278# CONFIG_OUTER_CACHE is not set
279
280#
281# Bus support
282#
283# CONFIG_PCI_SYSCALL is not set
284# CONFIG_ARCH_SUPPORTS_MSI is not set
285# CONFIG_PCCARD is not set
286
287#
288# Kernel Features
289#
290CONFIG_VMSPLIT_3G=y
291# CONFIG_VMSPLIT_2G is not set
292# CONFIG_VMSPLIT_1G is not set
293CONFIG_PAGE_OFFSET=0xC0000000
294# CONFIG_PREEMPT is not set
295CONFIG_HZ=200
296CONFIG_AEABI=y
297# CONFIG_OABI_COMPAT is not set
298CONFIG_ARCH_FLATMEM_HAS_HOLES=y
299# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
300# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
301# CONFIG_HIGHMEM is not set
302CONFIG_SELECT_MEMORY_MODEL=y
303CONFIG_FLATMEM_MANUAL=y
304# CONFIG_DISCONTIGMEM_MANUAL is not set
305# CONFIG_SPARSEMEM_MANUAL is not set
306CONFIG_FLATMEM=y
307CONFIG_FLAT_NODE_MEM_MAP=y
308CONFIG_PAGEFLAGS_EXTENDED=y
309CONFIG_SPLIT_PTLOCK_CPUS=4096
310# CONFIG_PHYS_ADDR_T_64BIT is not set
311CONFIG_ZONE_DMA_FLAG=0
312CONFIG_VIRT_TO_BUS=y
313CONFIG_UNEVICTABLE_LRU=y
314CONFIG_HAVE_MLOCK=y
315CONFIG_HAVE_MLOCKED_PAGE_BIT=y
316CONFIG_ALIGNMENT_TRAP=y
317
318#
319# Boot options
320#
321CONFIG_ZBOOT_ROM_TEXT=0
322CONFIG_ZBOOT_ROM_BSS=0
323CONFIG_CMDLINE=""
324# CONFIG_XIP_KERNEL is not set
325CONFIG_KEXEC=y
326CONFIG_ATAGS_PROC=y
327
328#
329# CPU Power Management
330#
331CONFIG_CPU_IDLE=y
332CONFIG_CPU_IDLE_GOV_LADDER=y
333
334#
335# Floating point emulation
336#
337
338#
339# At least one emulation must be selected
340#
341
342#
343# Userspace binary formats
344#
345CONFIG_BINFMT_ELF=y
346# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
347CONFIG_HAVE_AOUT=y
348CONFIG_BINFMT_AOUT=m
349CONFIG_BINFMT_MISC=m
350
351#
352# Power management options
353#
354CONFIG_PM=y
355# CONFIG_PM_DEBUG is not set
356CONFIG_PM_SLEEP=y
357CONFIG_SUSPEND=y
358CONFIG_SUSPEND_FREEZER=y
359CONFIG_APM_EMULATION=y
360CONFIG_ARCH_SUSPEND_POSSIBLE=y
361CONFIG_NET=y
362
363#
364# Networking options
365#
366CONFIG_PACKET=y
367CONFIG_PACKET_MMAP=y
368CONFIG_UNIX=y
369CONFIG_XFRM=y
370CONFIG_XFRM_USER=m
371# CONFIG_XFRM_SUB_POLICY is not set
372# CONFIG_XFRM_MIGRATE is not set
373# CONFIG_XFRM_STATISTICS is not set
374CONFIG_NET_KEY=m
375# CONFIG_NET_KEY_MIGRATE is not set
376CONFIG_INET=y
377CONFIG_IP_MULTICAST=y
378CONFIG_IP_ADVANCED_ROUTER=y
379CONFIG_ASK_IP_FIB_HASH=y
380# CONFIG_IP_FIB_TRIE is not set
381CONFIG_IP_FIB_HASH=y
382CONFIG_IP_MULTIPLE_TABLES=y
383CONFIG_IP_ROUTE_MULTIPATH=y
384CONFIG_IP_ROUTE_VERBOSE=y
385CONFIG_IP_PNP=y
386CONFIG_IP_PNP_DHCP=y
387CONFIG_IP_PNP_BOOTP=y
388CONFIG_IP_PNP_RARP=y
389# CONFIG_NET_IPIP is not set
390# CONFIG_NET_IPGRE is not set
391CONFIG_IP_MROUTE=y
392CONFIG_IP_PIMSM_V1=y
393CONFIG_IP_PIMSM_V2=y
394# CONFIG_ARPD is not set
395CONFIG_SYN_COOKIES=y
396# CONFIG_INET_AH is not set
397# CONFIG_INET_ESP is not set
398# CONFIG_INET_IPCOMP is not set
399# CONFIG_INET_XFRM_TUNNEL is not set
400# CONFIG_INET_TUNNEL is not set
401# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
402# CONFIG_INET_XFRM_MODE_TUNNEL is not set
403# CONFIG_INET_XFRM_MODE_BEET is not set
404# CONFIG_INET_LRO is not set
405CONFIG_INET_DIAG=m
406CONFIG_INET_TCP_DIAG=m
407# CONFIG_TCP_CONG_ADVANCED is not set
408CONFIG_TCP_CONG_CUBIC=y
409CONFIG_DEFAULT_TCP_CONG="cubic"
410# CONFIG_TCP_MD5SIG is not set
411# CONFIG_IPV6 is not set
412# CONFIG_NETWORK_SECMARK is not set
413CONFIG_NETFILTER=y
414# CONFIG_NETFILTER_DEBUG is not set
415CONFIG_NETFILTER_ADVANCED=y
416CONFIG_BRIDGE_NETFILTER=y
417
418#
419# Core Netfilter Configuration
420#
421# CONFIG_NETFILTER_NETLINK_QUEUE is not set
422# CONFIG_NETFILTER_NETLINK_LOG is not set
423# CONFIG_NF_CONNTRACK is not set
424# CONFIG_NETFILTER_XTABLES is not set
425# CONFIG_IP_VS is not set
426
427#
428# IP: Netfilter Configuration
429#
430# CONFIG_NF_DEFRAG_IPV4 is not set
431# CONFIG_IP_NF_QUEUE is not set
432# CONFIG_IP_NF_IPTABLES is not set
433# CONFIG_IP_NF_ARPTABLES is not set
434# CONFIG_BRIDGE_NF_EBTABLES is not set
435# CONFIG_IP_DCCP is not set
436# CONFIG_IP_SCTP is not set
437# CONFIG_TIPC is not set
438# CONFIG_ATM is not set
439CONFIG_STP=m
440CONFIG_GARP=m
441CONFIG_BRIDGE=m
442# CONFIG_NET_DSA is not set
443CONFIG_VLAN_8021Q=m
444CONFIG_VLAN_8021Q_GVRP=y
445# CONFIG_DECNET is not set
446CONFIG_LLC=m
447# CONFIG_LLC2 is not set
448# CONFIG_IPX is not set
449# CONFIG_ATALK is not set
450# CONFIG_X25 is not set
451# CONFIG_LAPB is not set
452# CONFIG_ECONET is not set
453# CONFIG_WAN_ROUTER is not set
454# CONFIG_PHONET is not set
455# CONFIG_NET_SCHED is not set
456# CONFIG_DCB is not set
457
458#
459# Network testing
460#
461CONFIG_NET_PKTGEN=m
462# CONFIG_HAMRADIO is not set
463# CONFIG_CAN is not set
464# CONFIG_IRDA is not set
465CONFIG_BT=m
466CONFIG_BT_L2CAP=m
467CONFIG_BT_SCO=m
468CONFIG_BT_RFCOMM=m
469CONFIG_BT_RFCOMM_TTY=y
470CONFIG_BT_BNEP=m
471CONFIG_BT_BNEP_MC_FILTER=y
472CONFIG_BT_BNEP_PROTO_FILTER=y
473CONFIG_BT_HIDP=m
474
475#
476# Bluetooth device drivers
477#
478CONFIG_BT_HCIBTUSB=m
479CONFIG_BT_HCIBTSDIO=m
480CONFIG_BT_HCIUART=m
481CONFIG_BT_HCIUART_H4=y
482CONFIG_BT_HCIUART_BCSP=y
483CONFIG_BT_HCIUART_LL=y
484CONFIG_BT_HCIBCM203X=m
485CONFIG_BT_HCIBPA10X=m
486CONFIG_BT_HCIBFUSB=m
487CONFIG_BT_HCIVHCI=m
488# CONFIG_AF_RXRPC is not set
489CONFIG_FIB_RULES=y
490CONFIG_WIRELESS=y
491CONFIG_CFG80211=m
492CONFIG_CFG80211_REG_DEBUG=y
493CONFIG_WIRELESS_OLD_REGULATORY=y
494CONFIG_WIRELESS_EXT=y
495CONFIG_WIRELESS_EXT_SYSFS=y
496CONFIG_LIB80211=m
497CONFIG_LIB80211_CRYPT_WEP=m
498CONFIG_LIB80211_CRYPT_CCMP=m
499CONFIG_LIB80211_CRYPT_TKIP=m
500# CONFIG_LIB80211_DEBUG is not set
501CONFIG_MAC80211=m
502
503#
504# Rate control algorithm selection
505#
506CONFIG_MAC80211_RC_MINSTREL=y
507# CONFIG_MAC80211_RC_DEFAULT_PID is not set
508CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
509CONFIG_MAC80211_RC_DEFAULT="minstrel"
510CONFIG_MAC80211_MESH=y
511CONFIG_MAC80211_LEDS=y
512# CONFIG_MAC80211_DEBUGFS is not set
513# CONFIG_MAC80211_DEBUG_MENU is not set
514# CONFIG_WIMAX is not set
515# CONFIG_RFKILL is not set
516# CONFIG_NET_9P is not set
517
518#
519# Device Drivers
520#
521
522#
523# Generic Driver Options
524#
525CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
526CONFIG_STANDALONE=y
527CONFIG_PREVENT_FIRMWARE_BUILD=y
528CONFIG_FW_LOADER=y
529# CONFIG_FIRMWARE_IN_KERNEL is not set
530CONFIG_EXTRA_FIRMWARE=""
531# CONFIG_DEBUG_DRIVER is not set
532# CONFIG_DEBUG_DEVRES is not set
533# CONFIG_SYS_HYPERVISOR is not set
534CONFIG_CONNECTOR=m
535CONFIG_MTD=y
536# CONFIG_MTD_DEBUG is not set
537CONFIG_MTD_CONCAT=y
538CONFIG_MTD_PARTITIONS=y
539# CONFIG_MTD_TESTS is not set
540# CONFIG_MTD_REDBOOT_PARTS is not set
541CONFIG_MTD_CMDLINE_PARTS=y
542# CONFIG_MTD_AFS_PARTS is not set
543# CONFIG_MTD_AR7_PARTS is not set
544
545#
546# User Modules And Translation Layers
547#
548CONFIG_MTD_CHAR=y
549CONFIG_MTD_BLKDEVS=y
550CONFIG_MTD_BLOCK=y
551CONFIG_FTL=y
552CONFIG_NFTL=y
553CONFIG_NFTL_RW=y
554CONFIG_INFTL=y
555CONFIG_RFD_FTL=y
556# CONFIG_SSFDC is not set
557# CONFIG_MTD_OOPS is not set
558
559#
560# RAM/ROM/Flash chip drivers
561#
562CONFIG_MTD_CFI=y
563CONFIG_MTD_JEDECPROBE=y
564CONFIG_MTD_GEN_PROBE=y
565# CONFIG_MTD_CFI_ADV_OPTIONS is not set
566CONFIG_MTD_MAP_BANK_WIDTH_1=y
567CONFIG_MTD_MAP_BANK_WIDTH_2=y
568CONFIG_MTD_MAP_BANK_WIDTH_4=y
569# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
570# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
571# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
572CONFIG_MTD_CFI_I1=y
573CONFIG_MTD_CFI_I2=y
574# CONFIG_MTD_CFI_I4 is not set
575# CONFIG_MTD_CFI_I8 is not set
576# CONFIG_MTD_CFI_INTELEXT is not set
577CONFIG_MTD_CFI_AMDSTD=y
578CONFIG_MTD_CFI_STAA=y
579CONFIG_MTD_CFI_UTIL=y
580CONFIG_MTD_RAM=y
581CONFIG_MTD_ROM=y
582# CONFIG_MTD_ABSENT is not set
583
584#
585# Mapping drivers for chip access
586#
587# CONFIG_MTD_COMPLEX_MAPPINGS is not set
588# CONFIG_MTD_PHYSMAP is not set
589# CONFIG_MTD_ARM_INTEGRATOR is not set
590# CONFIG_MTD_IMPA7 is not set
591# CONFIG_MTD_PLATRAM is not set
592
593#
594# Self-contained MTD device drivers
595#
596# CONFIG_MTD_DATAFLASH is not set
597# CONFIG_MTD_M25P80 is not set
598# CONFIG_MTD_SLRAM is not set
599# CONFIG_MTD_PHRAM is not set
600# CONFIG_MTD_MTDRAM is not set
601# CONFIG_MTD_BLOCK2MTD is not set
602
603#
604# Disk-On-Chip Device Drivers
605#
606# CONFIG_MTD_DOC2000 is not set
607# CONFIG_MTD_DOC2001 is not set
608# CONFIG_MTD_DOC2001PLUS is not set
609CONFIG_MTD_NAND=y
610CONFIG_MTD_NAND_VERIFY_WRITE=y
611# CONFIG_MTD_NAND_ECC_SMC is not set
612# CONFIG_MTD_NAND_MUSEUM_IDS is not set
613# CONFIG_MTD_NAND_GPIO is not set
614CONFIG_MTD_NAND_IDS=y
615CONFIG_MTD_NAND_S3C2410=y
616# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
617# CONFIG_MTD_NAND_S3C2410_HWECC is not set
618# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
619# CONFIG_MTD_NAND_DISKONCHIP is not set
620# CONFIG_MTD_NAND_NANDSIM is not set
621CONFIG_MTD_NAND_PLATFORM=y
622# CONFIG_MTD_ALAUDA is not set
623# CONFIG_MTD_ONENAND is not set
624
625#
626# LPDDR flash memory drivers
627#
628CONFIG_MTD_LPDDR=y
629CONFIG_MTD_QINFO_PROBE=y
630
631#
632# UBI - Unsorted block images
633#
634# CONFIG_MTD_UBI is not set
635# CONFIG_PARPORT is not set
636CONFIG_BLK_DEV=y
637# CONFIG_BLK_DEV_COW_COMMON is not set
638CONFIG_BLK_DEV_LOOP=m
639# CONFIG_BLK_DEV_CRYPTOLOOP is not set
640CONFIG_BLK_DEV_NBD=m
641# CONFIG_BLK_DEV_UB is not set
642CONFIG_BLK_DEV_RAM=y
643CONFIG_BLK_DEV_RAM_COUNT=16
644CONFIG_BLK_DEV_RAM_SIZE=65536
645# CONFIG_BLK_DEV_XIP is not set
646CONFIG_CDROM_PKTCDVD=m
647CONFIG_CDROM_PKTCDVD_BUFFERS=8
648# CONFIG_CDROM_PKTCDVD_WCACHE is not set
649# CONFIG_ATA_OVER_ETH is not set
650CONFIG_MISC_DEVICES=y
651# CONFIG_ICS932S401 is not set
652# CONFIG_ENCLOSURE_SERVICES is not set
653# CONFIG_ISL29003 is not set
654# CONFIG_C2PORT is not set
655
656#
657# EEPROM support
658#
659CONFIG_EEPROM_AT24=y
660# CONFIG_EEPROM_AT25 is not set
661# CONFIG_EEPROM_LEGACY is not set
662# CONFIG_EEPROM_93CX6 is not set
663CONFIG_HAVE_IDE=y
664# CONFIG_IDE is not set
665
666#
667# SCSI device support
668#
669# CONFIG_RAID_ATTRS is not set
670CONFIG_SCSI=m
671CONFIG_SCSI_DMA=y
672# CONFIG_SCSI_TGT is not set
673# CONFIG_SCSI_NETLINK is not set
674# CONFIG_SCSI_PROC_FS is not set
675
676#
677# SCSI support type (disk, tape, CD-ROM)
678#
679CONFIG_BLK_DEV_SD=m
680# CONFIG_CHR_DEV_ST is not set
681# CONFIG_CHR_DEV_OSST is not set
682# CONFIG_BLK_DEV_SR is not set
683CONFIG_CHR_DEV_SG=m
684# CONFIG_CHR_DEV_SCH is not set
685
686#
687# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
688#
689# CONFIG_SCSI_MULTI_LUN is not set
690# CONFIG_SCSI_CONSTANTS is not set
691# CONFIG_SCSI_LOGGING is not set
692# CONFIG_SCSI_SCAN_ASYNC is not set
693CONFIG_SCSI_WAIT_SCAN=m
694
695#
696# SCSI Transports
697#
698# CONFIG_SCSI_SPI_ATTRS is not set
699# CONFIG_SCSI_FC_ATTRS is not set
700# CONFIG_SCSI_ISCSI_ATTRS is not set
701# CONFIG_SCSI_SAS_LIBSAS is not set
702# CONFIG_SCSI_SRP_ATTRS is not set
703# CONFIG_SCSI_LOWLEVEL is not set
704# CONFIG_SCSI_DH is not set
705# CONFIG_SCSI_OSD_INITIATOR is not set
706# CONFIG_ATA is not set
707# CONFIG_MD is not set
708CONFIG_NETDEVICES=y
709CONFIG_COMPAT_NET_DEV_OPS=y
710# CONFIG_DUMMY is not set
711# CONFIG_BONDING is not set
712# CONFIG_MACVLAN is not set
713# CONFIG_EQUALIZER is not set
714CONFIG_TUN=m
715# CONFIG_VETH is not set
716# CONFIG_PHYLIB is not set
717CONFIG_NET_ETHERNET=y
718CONFIG_MII=y
719# CONFIG_AX88796 is not set
720# CONFIG_SMC91X is not set
721CONFIG_DM9000=y
722CONFIG_DM9000_DEBUGLEVEL=4
723# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
724# CONFIG_ENC28J60 is not set
725# CONFIG_ETHOC is not set
726# CONFIG_SMC911X is not set
727# CONFIG_SMSC911X is not set
728# CONFIG_DNET is not set
729# CONFIG_IBM_NEW_EMAC_ZMII is not set
730# CONFIG_IBM_NEW_EMAC_RGMII is not set
731# CONFIG_IBM_NEW_EMAC_TAH is not set
732# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
733# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
734# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
735# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
736# CONFIG_B44 is not set
737# CONFIG_NETDEV_1000 is not set
738# CONFIG_NETDEV_10000 is not set
739
740#
741# Wireless LAN
742#
743# CONFIG_WLAN_PRE80211 is not set
744CONFIG_WLAN_80211=y
745CONFIG_LIBERTAS=m
746# CONFIG_LIBERTAS_USB is not set
747CONFIG_LIBERTAS_SDIO=m
748# CONFIG_LIBERTAS_SPI is not set
749# CONFIG_LIBERTAS_DEBUG is not set
750# CONFIG_LIBERTAS_THINFIRM is not set
751# CONFIG_AT76C50X_USB is not set
752# CONFIG_USB_ZD1201 is not set
753# CONFIG_USB_NET_RNDIS_WLAN is not set
754# CONFIG_RTL8187 is not set
755# CONFIG_MAC80211_HWSIM is not set
756# CONFIG_P54_COMMON is not set
757# CONFIG_AR9170_USB is not set
758CONFIG_HOSTAP=m
759CONFIG_HOSTAP_FIRMWARE=y
760CONFIG_HOSTAP_FIRMWARE_NVRAM=y
761# CONFIG_B43 is not set
762# CONFIG_B43LEGACY is not set
763CONFIG_ZD1211RW=m
764CONFIG_ZD1211RW_DEBUG=y
765# CONFIG_RT2X00 is not set
766
767#
768# Enable WiMAX (Networking options) to see the WiMAX drivers
769#
770
771#
772# USB Network Adapters
773#
774# CONFIG_USB_CATC is not set
775# CONFIG_USB_KAWETH is not set
776# CONFIG_USB_PEGASUS is not set
777# CONFIG_USB_RTL8150 is not set
778# CONFIG_USB_USBNET is not set
779# CONFIG_WAN is not set
780CONFIG_PPP=m
781CONFIG_PPP_MULTILINK=y
782CONFIG_PPP_FILTER=y
783CONFIG_PPP_ASYNC=m
784CONFIG_PPP_SYNC_TTY=m
785CONFIG_PPP_DEFLATE=m
786CONFIG_PPP_BSDCOMP=m
787CONFIG_PPP_MPPE=m
788# CONFIG_PPPOE is not set
789# CONFIG_PPPOL2TP is not set
790# CONFIG_SLIP is not set
791CONFIG_SLHC=m
792# CONFIG_NETCONSOLE is not set
793# CONFIG_NETPOLL is not set
794# CONFIG_NET_POLL_CONTROLLER is not set
795# CONFIG_ISDN is not set
796
797#
798# Input device support
799#
800CONFIG_INPUT=y
801CONFIG_INPUT_FF_MEMLESS=y
802# CONFIG_INPUT_POLLDEV is not set
803
804#
805# Userland interfaces
806#
807CONFIG_INPUT_MOUSEDEV=y
808CONFIG_INPUT_MOUSEDEV_PSAUX=y
809CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
810CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
811# CONFIG_INPUT_JOYDEV is not set
812CONFIG_INPUT_EVDEV=y
813CONFIG_INPUT_EVBUG=m
814
815#
816# Input Device Drivers
817#
818CONFIG_INPUT_KEYBOARD=y
819# CONFIG_KEYBOARD_ATKBD is not set
820# CONFIG_KEYBOARD_SUNKBD is not set
821# CONFIG_KEYBOARD_LKKBD is not set
822# CONFIG_KEYBOARD_XTKBD is not set
823# CONFIG_KEYBOARD_NEWTON is not set
824# CONFIG_KEYBOARD_STOWAWAY is not set
825CONFIG_KEYBOARD_GPIO=y
826CONFIG_INPUT_MOUSE=y
827CONFIG_MOUSE_PS2=y
828CONFIG_MOUSE_PS2_ALPS=y
829CONFIG_MOUSE_PS2_LOGIPS2PP=y
830CONFIG_MOUSE_PS2_SYNAPTICS=y
831CONFIG_MOUSE_PS2_TRACKPOINT=y
832# CONFIG_MOUSE_PS2_ELANTECH is not set
833# CONFIG_MOUSE_PS2_TOUCHKIT is not set
834# CONFIG_MOUSE_SERIAL is not set
835# CONFIG_MOUSE_APPLETOUCH is not set
836# CONFIG_MOUSE_BCM5974 is not set
837# CONFIG_MOUSE_VSXXXAA is not set
838# CONFIG_MOUSE_GPIO is not set
839# CONFIG_INPUT_JOYSTICK is not set
840# CONFIG_INPUT_TABLET is not set
841CONFIG_INPUT_TOUCHSCREEN=y
842# CONFIG_TOUCHSCREEN_ADS7846 is not set
843# CONFIG_TOUCHSCREEN_AD7877 is not set
844# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
845# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
846# CONFIG_TOUCHSCREEN_AD7879 is not set
847# CONFIG_TOUCHSCREEN_FUJITSU is not set
848# CONFIG_TOUCHSCREEN_GUNZE is not set
849# CONFIG_TOUCHSCREEN_ELO is not set
850# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
851# CONFIG_TOUCHSCREEN_MTOUCH is not set
852# CONFIG_TOUCHSCREEN_INEXIO is not set
853# CONFIG_TOUCHSCREEN_MK712 is not set
854# CONFIG_TOUCHSCREEN_PENMOUNT is not set
855# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
856# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
857# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
858# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
859# CONFIG_TOUCHSCREEN_TSC2007 is not set
860# CONFIG_INPUT_MISC is not set
861
862#
863# Hardware I/O ports
864#
865CONFIG_SERIO=y
866CONFIG_SERIO_SERPORT=y
867CONFIG_SERIO_LIBPS2=y
868CONFIG_SERIO_RAW=y
869# CONFIG_GAMEPORT is not set
870
871#
872# Character devices
873#
874CONFIG_VT=y
875CONFIG_CONSOLE_TRANSLATIONS=y
876CONFIG_VT_CONSOLE=y
877CONFIG_HW_CONSOLE=y
878CONFIG_VT_HW_CONSOLE_BINDING=y
879CONFIG_DEVKMEM=y
880# CONFIG_SERIAL_NONSTANDARD is not set
881
882#
883# Serial drivers
884#
885# CONFIG_SERIAL_8250 is not set
886
887#
888# Non-8250 serial port support
889#
890CONFIG_SERIAL_SAMSUNG=y
891CONFIG_SERIAL_SAMSUNG_UARTS=3
892CONFIG_SERIAL_SAMSUNG_CONSOLE=y
893CONFIG_SERIAL_S3C2440=y
894# CONFIG_SERIAL_MAX3100 is not set
895CONFIG_SERIAL_CORE=y
896CONFIG_SERIAL_CORE_CONSOLE=y
897CONFIG_UNIX98_PTYS=y
898# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
899CONFIG_LEGACY_PTYS=y
900CONFIG_LEGACY_PTY_COUNT=128
901CONFIG_IPMI_HANDLER=m
902# CONFIG_IPMI_PANIC_EVENT is not set
903CONFIG_IPMI_DEVICE_INTERFACE=m
904CONFIG_IPMI_SI=m
905CONFIG_IPMI_WATCHDOG=m
906CONFIG_IPMI_POWEROFF=m
907CONFIG_HW_RANDOM=y
908# CONFIG_HW_RANDOM_TIMERIOMEM is not set
909# CONFIG_R3964 is not set
910# CONFIG_RAW_DRIVER is not set
911# CONFIG_TCG_TPM is not set
912CONFIG_I2C=y
913CONFIG_I2C_BOARDINFO=y
914CONFIG_I2C_CHARDEV=y
915CONFIG_I2C_HELPER_AUTO=y
916CONFIG_I2C_ALGOBIT=y
917
918#
919# I2C Hardware Bus support
920#
921
922#
923# I2C system bus drivers (mostly embedded / system-on-chip)
924#
925# CONFIG_I2C_GPIO is not set
926# CONFIG_I2C_OCORES is not set
927CONFIG_I2C_S3C2410=y
928CONFIG_I2C_SIMTEC=y
929
930#
931# External I2C/SMBus adapter drivers
932#
933# CONFIG_I2C_PARPORT_LIGHT is not set
934# CONFIG_I2C_TAOS_EVM is not set
935# CONFIG_I2C_TINY_USB is not set
936
937#
938# Other I2C/SMBus bus drivers
939#
940# CONFIG_I2C_PCA_PLATFORM is not set
941# CONFIG_I2C_STUB is not set
942
943#
944# Miscellaneous I2C Chip support
945#
946# CONFIG_DS1682 is not set
947# CONFIG_SENSORS_PCF8574 is not set
948# CONFIG_PCF8575 is not set
949# CONFIG_SENSORS_PCA9539 is not set
950# CONFIG_SENSORS_MAX6875 is not set
951CONFIG_SENSORS_TSL2550=m
952# CONFIG_I2C_DEBUG_CORE is not set
953# CONFIG_I2C_DEBUG_ALGO is not set
954# CONFIG_I2C_DEBUG_BUS is not set
955# CONFIG_I2C_DEBUG_CHIP is not set
956CONFIG_SPI=y
957# CONFIG_SPI_DEBUG is not set
958CONFIG_SPI_MASTER=y
959
960#
961# SPI Master Controller Drivers
962#
963CONFIG_SPI_BITBANG=y
964# CONFIG_SPI_GPIO is not set
965CONFIG_SPI_S3C24XX=y
966# CONFIG_SPI_S3C24XX_GPIO is not set
967
968#
969# SPI Protocol Masters
970#
971CONFIG_SPI_SPIDEV=y
972# CONFIG_SPI_TLE62X0 is not set
973CONFIG_ARCH_REQUIRE_GPIOLIB=y
974CONFIG_GPIOLIB=y
975# CONFIG_DEBUG_GPIO is not set
976CONFIG_GPIO_SYSFS=y
977
978#
979# Memory mapped GPIO expanders:
980#
981
982#
983# I2C GPIO expanders:
984#
985# CONFIG_GPIO_MAX732X is not set
986# CONFIG_GPIO_PCA953X is not set
987# CONFIG_GPIO_PCF857X is not set
988
989#
990# PCI GPIO expanders:
991#
992
993#
994# SPI GPIO expanders:
995#
996# CONFIG_GPIO_MAX7301 is not set
997# CONFIG_GPIO_MCP23S08 is not set
998# CONFIG_W1 is not set
999# CONFIG_POWER_SUPPLY is not set
1000CONFIG_HWMON=y
1001# CONFIG_HWMON_VID is not set
1002# CONFIG_SENSORS_AD7414 is not set
1003# CONFIG_SENSORS_AD7418 is not set
1004# CONFIG_SENSORS_ADCXX is not set
1005# CONFIG_SENSORS_ADM1021 is not set
1006# CONFIG_SENSORS_ADM1025 is not set
1007# CONFIG_SENSORS_ADM1026 is not set
1008# CONFIG_SENSORS_ADM1029 is not set
1009# CONFIG_SENSORS_ADM1031 is not set
1010# CONFIG_SENSORS_ADM9240 is not set
1011# CONFIG_SENSORS_ADT7462 is not set
1012# CONFIG_SENSORS_ADT7470 is not set
1013# CONFIG_SENSORS_ADT7473 is not set
1014# CONFIG_SENSORS_ADT7475 is not set
1015# CONFIG_SENSORS_ATXP1 is not set
1016# CONFIG_SENSORS_DS1621 is not set
1017# CONFIG_SENSORS_F71805F is not set
1018# CONFIG_SENSORS_F71882FG is not set
1019# CONFIG_SENSORS_F75375S is not set
1020# CONFIG_SENSORS_G760A is not set
1021# CONFIG_SENSORS_GL518SM is not set
1022# CONFIG_SENSORS_GL520SM is not set
1023# CONFIG_SENSORS_IBMAEM is not set
1024# CONFIG_SENSORS_IBMPEX is not set
1025# CONFIG_SENSORS_IT87 is not set
1026# CONFIG_SENSORS_LM63 is not set
1027# CONFIG_SENSORS_LM70 is not set
1028CONFIG_SENSORS_LM75=y
1029# CONFIG_SENSORS_LM77 is not set
1030# CONFIG_SENSORS_LM78 is not set
1031# CONFIG_SENSORS_LM80 is not set
1032# CONFIG_SENSORS_LM83 is not set
1033# CONFIG_SENSORS_LM85 is not set
1034# CONFIG_SENSORS_LM87 is not set
1035# CONFIG_SENSORS_LM90 is not set
1036# CONFIG_SENSORS_LM92 is not set
1037# CONFIG_SENSORS_LM93 is not set
1038# CONFIG_SENSORS_LTC4215 is not set
1039# CONFIG_SENSORS_LTC4245 is not set
1040# CONFIG_SENSORS_LM95241 is not set
1041# CONFIG_SENSORS_MAX1111 is not set
1042# CONFIG_SENSORS_MAX1619 is not set
1043# CONFIG_SENSORS_MAX6650 is not set
1044# CONFIG_SENSORS_PC87360 is not set
1045# CONFIG_SENSORS_PC87427 is not set
1046# CONFIG_SENSORS_PCF8591 is not set
1047# CONFIG_SENSORS_SHT15 is not set
1048# CONFIG_SENSORS_DME1737 is not set
1049# CONFIG_SENSORS_SMSC47M1 is not set
1050# CONFIG_SENSORS_SMSC47M192 is not set
1051# CONFIG_SENSORS_SMSC47B397 is not set
1052# CONFIG_SENSORS_ADS7828 is not set
1053# CONFIG_SENSORS_THMC50 is not set
1054# CONFIG_SENSORS_VT1211 is not set
1055# CONFIG_SENSORS_W83781D is not set
1056# CONFIG_SENSORS_W83791D is not set
1057# CONFIG_SENSORS_W83792D is not set
1058# CONFIG_SENSORS_W83793 is not set
1059# CONFIG_SENSORS_W83L785TS is not set
1060# CONFIG_SENSORS_W83L786NG is not set
1061# CONFIG_SENSORS_W83627HF is not set
1062# CONFIG_SENSORS_W83627EHF is not set
1063# CONFIG_SENSORS_LIS3_SPI is not set
1064# CONFIG_HWMON_DEBUG_CHIP is not set
1065CONFIG_THERMAL=m
1066# CONFIG_THERMAL_HWMON is not set
1067CONFIG_WATCHDOG=y
1068# CONFIG_WATCHDOG_NOWAYOUT is not set
1069
1070#
1071# Watchdog Device Drivers
1072#
1073# CONFIG_SOFT_WATCHDOG is not set
1074CONFIG_S3C2410_WATCHDOG=y
1075
1076#
1077# USB-based Watchdog Cards
1078#
1079# CONFIG_USBPCWATCHDOG is not set
1080CONFIG_SSB_POSSIBLE=y
1081
1082#
1083# Sonics Silicon Backplane
1084#
1085# CONFIG_SSB is not set
1086
1087#
1088# Multifunction device drivers
1089#
1090# CONFIG_MFD_CORE is not set
1091# CONFIG_MFD_SM501 is not set
1092# CONFIG_MFD_ASIC3 is not set
1093# CONFIG_HTC_EGPIO is not set
1094# CONFIG_HTC_PASIC3 is not set
1095# CONFIG_TPS65010 is not set
1096# CONFIG_TWL4030_CORE is not set
1097# CONFIG_MFD_TMIO is not set
1098# CONFIG_MFD_T7L66XB is not set
1099# CONFIG_MFD_TC6387XB is not set
1100# CONFIG_MFD_TC6393XB is not set
1101# CONFIG_PMIC_DA903X is not set
1102# CONFIG_MFD_WM8400 is not set
1103# CONFIG_MFD_WM8350_I2C is not set
1104# CONFIG_MFD_PCF50633 is not set
1105
1106#
1107# Multimedia devices
1108#
1109
1110#
1111# Multimedia core support
1112#
1113CONFIG_VIDEO_DEV=m
1114CONFIG_VIDEO_V4L2_COMMON=m
1115CONFIG_VIDEO_ALLOW_V4L1=y
1116CONFIG_VIDEO_V4L1_COMPAT=y
1117CONFIG_DVB_CORE=m
1118CONFIG_VIDEO_MEDIA=m
1119
1120#
1121# Multimedia drivers
1122#
1123# CONFIG_MEDIA_ATTACH is not set
1124CONFIG_MEDIA_TUNER=m
1125# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
1126CONFIG_MEDIA_TUNER_SIMPLE=m
1127CONFIG_MEDIA_TUNER_TDA8290=m
1128CONFIG_MEDIA_TUNER_TDA9887=m
1129CONFIG_MEDIA_TUNER_TEA5761=m
1130CONFIG_MEDIA_TUNER_TEA5767=m
1131CONFIG_MEDIA_TUNER_MT20XX=m
1132CONFIG_MEDIA_TUNER_XC2028=m
1133CONFIG_MEDIA_TUNER_XC5000=m
1134CONFIG_MEDIA_TUNER_MC44S803=m
1135CONFIG_VIDEO_V4L2=m
1136CONFIG_VIDEO_V4L1=m
1137CONFIG_VIDEOBUF_GEN=m
1138CONFIG_VIDEO_CAPTURE_DRIVERS=y
1139# CONFIG_VIDEO_ADV_DEBUG is not set
1140# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
1141CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
1142# CONFIG_VIDEO_VIVI is not set
1143# CONFIG_VIDEO_CPIA is not set
1144# CONFIG_VIDEO_CPIA2 is not set
1145# CONFIG_VIDEO_SAA5246A is not set
1146# CONFIG_VIDEO_SAA5249 is not set
1147# CONFIG_VIDEO_AU0828 is not set
1148CONFIG_SOC_CAMERA=m
1149# CONFIG_SOC_CAMERA_MT9M001 is not set
1150# CONFIG_SOC_CAMERA_MT9M111 is not set
1151# CONFIG_SOC_CAMERA_MT9T031 is not set
1152# CONFIG_SOC_CAMERA_MT9V022 is not set
1153# CONFIG_SOC_CAMERA_TW9910 is not set
1154CONFIG_SOC_CAMERA_PLATFORM=m
1155# CONFIG_SOC_CAMERA_OV772X is not set
1156# CONFIG_VIDEO_SH_MOBILE_CEU is not set
1157CONFIG_V4L_USB_DRIVERS=y
1158# CONFIG_USB_VIDEO_CLASS is not set
1159CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
1160CONFIG_USB_GSPCA=m
1161# CONFIG_USB_M5602 is not set
1162# CONFIG_USB_STV06XX is not set
1163# CONFIG_USB_GSPCA_CONEX is not set
1164# CONFIG_USB_GSPCA_ETOMS is not set
1165# CONFIG_USB_GSPCA_FINEPIX is not set
1166# CONFIG_USB_GSPCA_MARS is not set
1167# CONFIG_USB_GSPCA_MR97310A is not set
1168# CONFIG_USB_GSPCA_OV519 is not set
1169# CONFIG_USB_GSPCA_OV534 is not set
1170# CONFIG_USB_GSPCA_PAC207 is not set
1171# CONFIG_USB_GSPCA_PAC7311 is not set
1172# CONFIG_USB_GSPCA_SONIXB is not set
1173# CONFIG_USB_GSPCA_SONIXJ is not set
1174# CONFIG_USB_GSPCA_SPCA500 is not set
1175# CONFIG_USB_GSPCA_SPCA501 is not set
1176# CONFIG_USB_GSPCA_SPCA505 is not set
1177# CONFIG_USB_GSPCA_SPCA506 is not set
1178# CONFIG_USB_GSPCA_SPCA508 is not set
1179# CONFIG_USB_GSPCA_SPCA561 is not set
1180# CONFIG_USB_GSPCA_SQ905 is not set
1181# CONFIG_USB_GSPCA_SQ905C is not set
1182# CONFIG_USB_GSPCA_STK014 is not set
1183# CONFIG_USB_GSPCA_SUNPLUS is not set
1184# CONFIG_USB_GSPCA_T613 is not set
1185# CONFIG_USB_GSPCA_TV8532 is not set
1186# CONFIG_USB_GSPCA_VC032X is not set
1187CONFIG_USB_GSPCA_ZC3XX=m
1188# CONFIG_VIDEO_PVRUSB2 is not set
1189# CONFIG_VIDEO_HDPVR is not set
1190# CONFIG_VIDEO_EM28XX is not set
1191# CONFIG_VIDEO_CX231XX is not set
1192# CONFIG_VIDEO_USBVISION is not set
1193# CONFIG_USB_VICAM is not set
1194# CONFIG_USB_IBMCAM is not set
1195# CONFIG_USB_KONICAWC is not set
1196# CONFIG_USB_QUICKCAM_MESSENGER is not set
1197# CONFIG_USB_ET61X251 is not set
1198# CONFIG_VIDEO_OVCAMCHIP is not set
1199# CONFIG_USB_OV511 is not set
1200# CONFIG_USB_SE401 is not set
1201# CONFIG_USB_SN9C102 is not set
1202# CONFIG_USB_STV680 is not set
1203# CONFIG_USB_ZC0301 is not set
1204# CONFIG_USB_PWC is not set
1205# CONFIG_USB_PWC_INPUT_EVDEV is not set
1206# CONFIG_USB_ZR364XX is not set
1207# CONFIG_USB_STKWEBCAM is not set
1208# CONFIG_USB_S2255 is not set
1209CONFIG_RADIO_ADAPTERS=y
1210# CONFIG_USB_DSBR is not set
1211# CONFIG_USB_SI470X is not set
1212# CONFIG_USB_MR800 is not set
1213# CONFIG_RADIO_TEA5764 is not set
1214# CONFIG_DVB_DYNAMIC_MINORS is not set
1215CONFIG_DVB_CAPTURE_DRIVERS=y
1216# CONFIG_TTPCI_EEPROM is not set
1217
1218#
1219# Supported USB Adapters
1220#
1221# CONFIG_DVB_USB is not set
1222# CONFIG_DVB_SIANO_SMS1XXX is not set
1223
1224#
1225# Supported FlexCopII (B2C2) Adapters
1226#
1227# CONFIG_DVB_B2C2_FLEXCOP is not set
1228
1229#
1230# Supported DVB Frontends
1231#
1232# CONFIG_DVB_FE_CUSTOMISE is not set
1233# CONFIG_DAB is not set
1234
1235#
1236# Graphics support
1237#
1238# CONFIG_VGASTATE is not set
1239CONFIG_VIDEO_OUTPUT_CONTROL=y
1240CONFIG_FB=y
1241CONFIG_FIRMWARE_EDID=y
1242# CONFIG_FB_DDC is not set
1243# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1244CONFIG_FB_CFB_FILLRECT=y
1245CONFIG_FB_CFB_COPYAREA=y
1246CONFIG_FB_CFB_IMAGEBLIT=y
1247# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1248# CONFIG_FB_SYS_FILLRECT is not set
1249# CONFIG_FB_SYS_COPYAREA is not set
1250# CONFIG_FB_SYS_IMAGEBLIT is not set
1251# CONFIG_FB_FOREIGN_ENDIAN is not set
1252# CONFIG_FB_SYS_FOPS is not set
1253# CONFIG_FB_SVGALIB is not set
1254# CONFIG_FB_MACMODES is not set
1255# CONFIG_FB_BACKLIGHT is not set
1256CONFIG_FB_MODE_HELPERS=y
1257CONFIG_FB_TILEBLITTING=y
1258
1259#
1260# Frame buffer hardware drivers
1261#
1262# CONFIG_FB_UVESA is not set
1263# CONFIG_FB_S1D13XXX is not set
1264CONFIG_FB_S3C2410=y
1265# CONFIG_FB_S3C2410_DEBUG is not set
1266# CONFIG_FB_VIRTUAL is not set
1267# CONFIG_FB_METRONOME is not set
1268# CONFIG_FB_MB862XX is not set
1269# CONFIG_FB_BROADSHEET is not set
1270CONFIG_BACKLIGHT_LCD_SUPPORT=y
1271CONFIG_LCD_CLASS_DEVICE=y
1272# CONFIG_LCD_LTV350QV is not set
1273# CONFIG_LCD_ILI9320 is not set
1274# CONFIG_LCD_TDO24M is not set
1275# CONFIG_LCD_VGG2432A4 is not set
1276CONFIG_LCD_PLATFORM=y
1277CONFIG_BACKLIGHT_CLASS_DEVICE=y
1278# CONFIG_BACKLIGHT_GENERIC is not set
1279CONFIG_BACKLIGHT_PWM=y
1280
1281#
1282# Display device support
1283#
1284CONFIG_DISPLAY_SUPPORT=y
1285
1286#
1287# Display hardware drivers
1288#
1289
1290#
1291# Console display driver support
1292#
1293# CONFIG_VGA_CONSOLE is not set
1294CONFIG_DUMMY_CONSOLE=y
1295CONFIG_FRAMEBUFFER_CONSOLE=y
1296CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
1297CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
1298CONFIG_FONTS=y
1299CONFIG_FONT_8x8=y
1300# CONFIG_FONT_8x16 is not set
1301# CONFIG_FONT_6x11 is not set
1302# CONFIG_FONT_7x14 is not set
1303# CONFIG_FONT_PEARL_8x8 is not set
1304# CONFIG_FONT_ACORN_8x8 is not set
1305CONFIG_FONT_MINI_4x6=y
1306# CONFIG_FONT_SUN8x16 is not set
1307# CONFIG_FONT_SUN12x22 is not set
1308# CONFIG_FONT_10x18 is not set
1309CONFIG_LOGO=y
1310# CONFIG_LOGO_LINUX_MONO is not set
1311# CONFIG_LOGO_LINUX_VGA16 is not set
1312CONFIG_LOGO_LINUX_CLUT224=y
1313CONFIG_SOUND=y
1314CONFIG_SOUND_OSS_CORE=y
1315CONFIG_SND=y
1316CONFIG_SND_TIMER=y
1317CONFIG_SND_PCM=y
1318CONFIG_SND_HWDEP=m
1319CONFIG_SND_RAWMIDI=m
1320CONFIG_SND_JACK=y
1321CONFIG_SND_SEQUENCER=m
1322CONFIG_SND_SEQ_DUMMY=m
1323CONFIG_SND_OSSEMUL=y
1324CONFIG_SND_MIXER_OSS=m
1325CONFIG_SND_PCM_OSS=m
1326CONFIG_SND_PCM_OSS_PLUGINS=y
1327CONFIG_SND_SEQUENCER_OSS=y
1328CONFIG_SND_DYNAMIC_MINORS=y
1329CONFIG_SND_SUPPORT_OLD_API=y
1330CONFIG_SND_VERBOSE_PROCFS=y
1331# CONFIG_SND_VERBOSE_PRINTK is not set
1332# CONFIG_SND_DEBUG is not set
1333# CONFIG_SND_DRIVERS is not set
1334# CONFIG_SND_ARM is not set
1335# CONFIG_SND_SPI is not set
1336CONFIG_SND_USB=y
1337CONFIG_SND_USB_AUDIO=m
1338CONFIG_SND_USB_CAIAQ=m
1339CONFIG_SND_USB_CAIAQ_INPUT=y
1340CONFIG_SND_SOC=y
1341CONFIG_SND_S3C24XX_SOC=y
1342CONFIG_SND_S3C24XX_SOC_I2S=y
1343# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
1344CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=y
1345CONFIG_SND_SOC_I2C_AND_SPI=y
1346# CONFIG_SND_SOC_ALL_CODECS is not set
1347CONFIG_SND_SOC_L3=y
1348CONFIG_SND_SOC_UDA134X=y
1349# CONFIG_SOUND_PRIME is not set
1350CONFIG_HID_SUPPORT=y
1351CONFIG_HID=y
1352# CONFIG_HID_DEBUG is not set
1353CONFIG_HIDRAW=y
1354
1355#
1356# USB Input Devices
1357#
1358CONFIG_USB_HID=y
1359CONFIG_HID_PID=y
1360CONFIG_USB_HIDDEV=y
1361
1362#
1363# Special HID drivers
1364#
1365CONFIG_HID_A4TECH=y
1366CONFIG_HID_APPLE=y
1367CONFIG_HID_BELKIN=y
1368CONFIG_HID_CHERRY=y
1369CONFIG_HID_CHICONY=y
1370CONFIG_HID_CYPRESS=y
1371# CONFIG_DRAGONRISE_FF is not set
1372CONFIG_HID_EZKEY=y
1373CONFIG_HID_KYE=y
1374CONFIG_HID_GYRATION=y
1375CONFIG_HID_KENSINGTON=y
1376CONFIG_HID_LOGITECH=y
1377# CONFIG_LOGITECH_FF is not set
1378# CONFIG_LOGIRUMBLEPAD2_FF is not set
1379CONFIG_HID_MICROSOFT=y
1380CONFIG_HID_MONTEREY=y
1381CONFIG_HID_NTRIG=y
1382CONFIG_HID_PANTHERLORD=y
1383# CONFIG_PANTHERLORD_FF is not set
1384CONFIG_HID_PETALYNX=y
1385CONFIG_HID_SAMSUNG=y
1386CONFIG_HID_SONY=y
1387CONFIG_HID_SUNPLUS=y
1388# CONFIG_GREENASIA_FF is not set
1389CONFIG_HID_TOPSEED=y
1390# CONFIG_THRUSTMASTER_FF is not set
1391# CONFIG_ZEROPLUS_FF is not set
1392CONFIG_USB_SUPPORT=y
1393CONFIG_USB_ARCH_HAS_HCD=y
1394CONFIG_USB_ARCH_HAS_OHCI=y
1395# CONFIG_USB_ARCH_HAS_EHCI is not set
1396CONFIG_USB=y
1397# CONFIG_USB_DEBUG is not set
1398# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1399
1400#
1401# Miscellaneous USB options
1402#
1403CONFIG_USB_DEVICEFS=y
1404# CONFIG_USB_DEVICE_CLASS is not set
1405# CONFIG_USB_DYNAMIC_MINORS is not set
1406# CONFIG_USB_SUSPEND is not set
1407# CONFIG_USB_OTG is not set
1408# CONFIG_USB_MON is not set
1409# CONFIG_USB_WUSB is not set
1410# CONFIG_USB_WUSB_CBAF is not set
1411
1412#
1413# USB Host Controller Drivers
1414#
1415# CONFIG_USB_C67X00_HCD is not set
1416# CONFIG_USB_OXU210HP_HCD is not set
1417# CONFIG_USB_ISP116X_HCD is not set
1418# CONFIG_USB_ISP1760_HCD is not set
1419CONFIG_USB_OHCI_HCD=y
1420# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1421# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1422CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1423# CONFIG_USB_SL811_HCD is not set
1424# CONFIG_USB_R8A66597_HCD is not set
1425# CONFIG_USB_HWA_HCD is not set
1426# CONFIG_USB_MUSB_HDRC is not set
1427# CONFIG_USB_GADGET_MUSB_HDRC is not set
1428
1429#
1430# USB Device Class drivers
1431#
1432CONFIG_USB_ACM=m
1433# CONFIG_USB_PRINTER is not set
1434CONFIG_USB_WDM=m
1435# CONFIG_USB_TMC is not set
1436
1437#
1438# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1439#
1440
1441#
1442# also be needed; see USB_STORAGE Help for more info
1443#
1444CONFIG_USB_STORAGE=m
1445# CONFIG_USB_STORAGE_DEBUG is not set
1446CONFIG_USB_STORAGE_DATAFAB=m
1447# CONFIG_USB_STORAGE_FREECOM is not set
1448CONFIG_USB_STORAGE_ISD200=m
1449CONFIG_USB_STORAGE_USBAT=m
1450CONFIG_USB_STORAGE_SDDR09=m
1451CONFIG_USB_STORAGE_SDDR55=m
1452CONFIG_USB_STORAGE_JUMPSHOT=m
1453CONFIG_USB_STORAGE_ALAUDA=m
1454# CONFIG_USB_STORAGE_ONETOUCH is not set
1455# CONFIG_USB_STORAGE_KARMA is not set
1456# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1457CONFIG_USB_LIBUSUAL=y
1458
1459#
1460# USB Imaging devices
1461#
1462# CONFIG_USB_MDC800 is not set
1463# CONFIG_USB_MICROTEK is not set
1464
1465#
1466# USB port drivers
1467#
1468CONFIG_USB_SERIAL=m
1469# CONFIG_USB_EZUSB is not set
1470# CONFIG_USB_SERIAL_GENERIC is not set
1471# CONFIG_USB_SERIAL_AIRCABLE is not set
1472# CONFIG_USB_SERIAL_ARK3116 is not set
1473# CONFIG_USB_SERIAL_BELKIN is not set
1474# CONFIG_USB_SERIAL_CH341 is not set
1475# CONFIG_USB_SERIAL_WHITEHEAT is not set
1476# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
1477CONFIG_USB_SERIAL_CP210X=m
1478# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
1479# CONFIG_USB_SERIAL_EMPEG is not set
1480CONFIG_USB_SERIAL_FTDI_SIO=m
1481# CONFIG_USB_SERIAL_FUNSOFT is not set
1482# CONFIG_USB_SERIAL_VISOR is not set
1483# CONFIG_USB_SERIAL_IPAQ is not set
1484# CONFIG_USB_SERIAL_IR is not set
1485# CONFIG_USB_SERIAL_EDGEPORT is not set
1486# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
1487# CONFIG_USB_SERIAL_GARMIN is not set
1488# CONFIG_USB_SERIAL_IPW is not set
1489# CONFIG_USB_SERIAL_IUU is not set
1490# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
1491# CONFIG_USB_SERIAL_KEYSPAN is not set
1492# CONFIG_USB_SERIAL_KLSI is not set
1493# CONFIG_USB_SERIAL_KOBIL_SCT is not set
1494# CONFIG_USB_SERIAL_MCT_U232 is not set
1495# CONFIG_USB_SERIAL_MOS7720 is not set
1496# CONFIG_USB_SERIAL_MOS7840 is not set
1497# CONFIG_USB_SERIAL_MOTOROLA is not set
1498# CONFIG_USB_SERIAL_NAVMAN is not set
1499# CONFIG_USB_SERIAL_PL2303 is not set
1500# CONFIG_USB_SERIAL_OTI6858 is not set
1501# CONFIG_USB_SERIAL_QUALCOMM is not set
1502CONFIG_USB_SERIAL_SPCP8X5=m
1503# CONFIG_USB_SERIAL_HP4X is not set
1504# CONFIG_USB_SERIAL_SAFE is not set
1505# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
1506# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
1507# CONFIG_USB_SERIAL_SYMBOL is not set
1508# CONFIG_USB_SERIAL_TI is not set
1509# CONFIG_USB_SERIAL_CYBERJACK is not set
1510# CONFIG_USB_SERIAL_XIRCOM is not set
1511# CONFIG_USB_SERIAL_OPTION is not set
1512# CONFIG_USB_SERIAL_OMNINET is not set
1513# CONFIG_USB_SERIAL_OPTICON is not set
1514# CONFIG_USB_SERIAL_DEBUG is not set
1515
1516#
1517# USB Miscellaneous drivers
1518#
1519# CONFIG_USB_EMI62 is not set
1520# CONFIG_USB_EMI26 is not set
1521# CONFIG_USB_ADUTUX is not set
1522# CONFIG_USB_SEVSEG is not set
1523# CONFIG_USB_RIO500 is not set
1524# CONFIG_USB_LEGOTOWER is not set
1525# CONFIG_USB_LCD is not set
1526# CONFIG_USB_BERRY_CHARGE is not set
1527# CONFIG_USB_LED is not set
1528# CONFIG_USB_CYPRESS_CY7C63 is not set
1529# CONFIG_USB_CYTHERM is not set
1530# CONFIG_USB_IDMOUSE is not set
1531# CONFIG_USB_FTDI_ELAN is not set
1532# CONFIG_USB_APPLEDISPLAY is not set
1533# CONFIG_USB_LD is not set
1534# CONFIG_USB_TRANCEVIBRATOR is not set
1535# CONFIG_USB_IOWARRIOR is not set
1536# CONFIG_USB_TEST is not set
1537# CONFIG_USB_ISIGHTFW is not set
1538# CONFIG_USB_VST is not set
1539CONFIG_USB_GADGET=y
1540# CONFIG_USB_GADGET_DEBUG is not set
1541# CONFIG_USB_GADGET_DEBUG_FILES is not set
1542# CONFIG_USB_GADGET_DEBUG_FS is not set
1543CONFIG_USB_GADGET_VBUS_DRAW=2
1544CONFIG_USB_GADGET_SELECTED=y
1545# CONFIG_USB_GADGET_AT91 is not set
1546# CONFIG_USB_GADGET_ATMEL_USBA is not set
1547# CONFIG_USB_GADGET_FSL_USB2 is not set
1548# CONFIG_USB_GADGET_LH7A40X is not set
1549# CONFIG_USB_GADGET_OMAP is not set
1550# CONFIG_USB_GADGET_PXA25X is not set
1551# CONFIG_USB_GADGET_PXA27X is not set
1552CONFIG_USB_GADGET_S3C2410=y
1553CONFIG_USB_S3C2410=y
1554# CONFIG_USB_S3C2410_DEBUG is not set
1555# CONFIG_USB_GADGET_IMX is not set
1556# CONFIG_USB_GADGET_M66592 is not set
1557# CONFIG_USB_GADGET_AMD5536UDC is not set
1558# CONFIG_USB_GADGET_FSL_QE is not set
1559# CONFIG_USB_GADGET_CI13XXX is not set
1560# CONFIG_USB_GADGET_NET2280 is not set
1561# CONFIG_USB_GADGET_GOKU is not set
1562# CONFIG_USB_GADGET_DUMMY_HCD is not set
1563# CONFIG_USB_GADGET_DUALSPEED is not set
1564CONFIG_USB_ZERO=m
1565CONFIG_USB_ETH=m
1566CONFIG_USB_ETH_RNDIS=y
1567CONFIG_USB_GADGETFS=m
1568CONFIG_USB_FILE_STORAGE=m
1569# CONFIG_USB_FILE_STORAGE_TEST is not set
1570CONFIG_USB_G_SERIAL=m
1571# CONFIG_USB_MIDI_GADGET is not set
1572# CONFIG_USB_G_PRINTER is not set
1573CONFIG_USB_CDC_COMPOSITE=m
1574
1575#
1576# OTG and related infrastructure
1577#
1578# CONFIG_USB_GPIO_VBUS is not set
1579# CONFIG_NOP_USB_XCEIV is not set
1580CONFIG_MMC=y
1581# CONFIG_MMC_DEBUG is not set
1582# CONFIG_MMC_UNSAFE_RESUME is not set
1583
1584#
1585# MMC/SD/SDIO Card Drivers
1586#
1587CONFIG_MMC_BLOCK=y
1588CONFIG_MMC_BLOCK_BOUNCE=y
1589CONFIG_SDIO_UART=y
1590# CONFIG_MMC_TEST is not set
1591
1592#
1593# MMC/SD/SDIO Host Controller Drivers
1594#
1595CONFIG_MMC_SDHCI=y
1596CONFIG_MMC_SPI=y
1597CONFIG_MMC_S3C=y
1598# CONFIG_MEMSTICK is not set
1599# CONFIG_ACCESSIBILITY is not set
1600CONFIG_NEW_LEDS=y
1601CONFIG_LEDS_CLASS=y
1602
1603#
1604# LED drivers
1605#
1606CONFIG_LEDS_S3C24XX=y
1607# CONFIG_LEDS_PCA9532 is not set
1608CONFIG_LEDS_GPIO=y
1609CONFIG_LEDS_GPIO_PLATFORM=y
1610# CONFIG_LEDS_LP5521 is not set
1611# CONFIG_LEDS_PCA955X is not set
1612# CONFIG_LEDS_DAC124S085 is not set
1613# CONFIG_LEDS_PWM is not set
1614# CONFIG_LEDS_BD2802 is not set
1615
1616#
1617# LED Triggers
1618#
1619CONFIG_LEDS_TRIGGERS=y
1620CONFIG_LEDS_TRIGGER_TIMER=y
1621CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1622CONFIG_LEDS_TRIGGER_BACKLIGHT=y
1623CONFIG_LEDS_TRIGGER_GPIO=y
1624CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1625
1626#
1627# iptables trigger is under Netfilter config (LED target)
1628#
1629CONFIG_RTC_LIB=y
1630CONFIG_RTC_CLASS=y
1631CONFIG_RTC_HCTOSYS=y
1632CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1633# CONFIG_RTC_DEBUG is not set
1634
1635#
1636# RTC interfaces
1637#
1638CONFIG_RTC_INTF_SYSFS=y
1639CONFIG_RTC_INTF_PROC=y
1640CONFIG_RTC_INTF_DEV=y
1641CONFIG_RTC_INTF_DEV_UIE_EMUL=y
1642# CONFIG_RTC_DRV_TEST is not set
1643
1644#
1645# I2C RTC drivers
1646#
1647# CONFIG_RTC_DRV_DS1307 is not set
1648# CONFIG_RTC_DRV_DS1374 is not set
1649# CONFIG_RTC_DRV_DS1672 is not set
1650# CONFIG_RTC_DRV_MAX6900 is not set
1651# CONFIG_RTC_DRV_RS5C372 is not set
1652# CONFIG_RTC_DRV_ISL1208 is not set
1653# CONFIG_RTC_DRV_X1205 is not set
1654# CONFIG_RTC_DRV_PCF8563 is not set
1655# CONFIG_RTC_DRV_PCF8583 is not set
1656# CONFIG_RTC_DRV_M41T80 is not set
1657# CONFIG_RTC_DRV_S35390A is not set
1658# CONFIG_RTC_DRV_FM3130 is not set
1659# CONFIG_RTC_DRV_RX8581 is not set
1660
1661#
1662# SPI RTC drivers
1663#
1664# CONFIG_RTC_DRV_M41T94 is not set
1665# CONFIG_RTC_DRV_DS1305 is not set
1666# CONFIG_RTC_DRV_DS1390 is not set
1667# CONFIG_RTC_DRV_MAX6902 is not set
1668# CONFIG_RTC_DRV_R9701 is not set
1669# CONFIG_RTC_DRV_RS5C348 is not set
1670# CONFIG_RTC_DRV_DS3234 is not set
1671
1672#
1673# Platform RTC drivers
1674#
1675# CONFIG_RTC_DRV_CMOS is not set
1676# CONFIG_RTC_DRV_DS1286 is not set
1677# CONFIG_RTC_DRV_DS1511 is not set
1678# CONFIG_RTC_DRV_DS1553 is not set
1679# CONFIG_RTC_DRV_DS1742 is not set
1680# CONFIG_RTC_DRV_STK17TA8 is not set
1681# CONFIG_RTC_DRV_M48T86 is not set
1682# CONFIG_RTC_DRV_M48T35 is not set
1683# CONFIG_RTC_DRV_M48T59 is not set
1684# CONFIG_RTC_DRV_BQ4802 is not set
1685# CONFIG_RTC_DRV_V3020 is not set
1686
1687#
1688# on-CPU RTC drivers
1689#
1690CONFIG_RTC_DRV_S3C=y
1691CONFIG_DMADEVICES=y
1692
1693#
1694# DMA Devices
1695#
1696# CONFIG_AUXDISPLAY is not set
1697# CONFIG_REGULATOR is not set
1698# CONFIG_UIO is not set
1699# CONFIG_STAGING is not set
1700
1701#
1702# File systems
1703#
1704CONFIG_EXT2_FS=m
1705CONFIG_EXT2_FS_XATTR=y
1706CONFIG_EXT2_FS_POSIX_ACL=y
1707CONFIG_EXT2_FS_SECURITY=y
1708# CONFIG_EXT2_FS_XIP is not set
1709CONFIG_EXT3_FS=y
1710# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1711CONFIG_EXT3_FS_XATTR=y
1712CONFIG_EXT3_FS_POSIX_ACL=y
1713CONFIG_EXT3_FS_SECURITY=y
1714# CONFIG_EXT4_FS is not set
1715CONFIG_JBD=y
1716# CONFIG_JBD_DEBUG is not set
1717CONFIG_FS_MBCACHE=y
1718# CONFIG_REISERFS_FS is not set
1719# CONFIG_JFS_FS is not set
1720CONFIG_FS_POSIX_ACL=y
1721CONFIG_FILE_LOCKING=y
1722# CONFIG_XFS_FS is not set
1723# CONFIG_GFS2_FS is not set
1724# CONFIG_OCFS2_FS is not set
1725# CONFIG_BTRFS_FS is not set
1726CONFIG_DNOTIFY=y
1727CONFIG_INOTIFY=y
1728CONFIG_INOTIFY_USER=y
1729# CONFIG_QUOTA is not set
1730CONFIG_AUTOFS_FS=y
1731CONFIG_AUTOFS4_FS=y
1732# CONFIG_FUSE_FS is not set
1733CONFIG_GENERIC_ACL=y
1734
1735#
1736# Caches
1737#
1738# CONFIG_FSCACHE is not set
1739
1740#
1741# CD-ROM/DVD Filesystems
1742#
1743# CONFIG_ISO9660_FS is not set
1744# CONFIG_UDF_FS is not set
1745
1746#
1747# DOS/FAT/NT Filesystems
1748#
1749CONFIG_FAT_FS=y
1750CONFIG_MSDOS_FS=y
1751CONFIG_VFAT_FS=y
1752CONFIG_FAT_DEFAULT_CODEPAGE=437
1753CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1754# CONFIG_NTFS_FS is not set
1755
1756#
1757# Pseudo filesystems
1758#
1759CONFIG_PROC_FS=y
1760CONFIG_PROC_SYSCTL=y
1761CONFIG_PROC_PAGE_MONITOR=y
1762CONFIG_SYSFS=y
1763CONFIG_TMPFS=y
1764CONFIG_TMPFS_POSIX_ACL=y
1765# CONFIG_HUGETLB_PAGE is not set
1766CONFIG_CONFIGFS_FS=m
1767CONFIG_MISC_FILESYSTEMS=y
1768# CONFIG_ADFS_FS is not set
1769# CONFIG_AFFS_FS is not set
1770# CONFIG_ECRYPT_FS is not set
1771# CONFIG_HFS_FS is not set
1772# CONFIG_HFSPLUS_FS is not set
1773# CONFIG_BEFS_FS is not set
1774# CONFIG_BFS_FS is not set
1775# CONFIG_EFS_FS is not set
1776CONFIG_JFFS2_FS=y
1777CONFIG_JFFS2_FS_DEBUG=0
1778CONFIG_JFFS2_FS_WRITEBUFFER=y
1779# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1780# CONFIG_JFFS2_SUMMARY is not set
1781# CONFIG_JFFS2_FS_XATTR is not set
1782# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1783CONFIG_JFFS2_ZLIB=y
1784# CONFIG_JFFS2_LZO is not set
1785CONFIG_JFFS2_RTIME=y
1786# CONFIG_JFFS2_RUBIN is not set
1787CONFIG_CRAMFS=y
1788# CONFIG_SQUASHFS is not set
1789# CONFIG_VXFS_FS is not set
1790# CONFIG_MINIX_FS is not set
1791# CONFIG_OMFS_FS is not set
1792# CONFIG_HPFS_FS is not set
1793# CONFIG_QNX4FS_FS is not set
1794CONFIG_ROMFS_FS=y
1795# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
1796# CONFIG_ROMFS_BACKED_BY_MTD is not set
1797CONFIG_ROMFS_BACKED_BY_BOTH=y
1798CONFIG_ROMFS_ON_BLOCK=y
1799CONFIG_ROMFS_ON_MTD=y
1800# CONFIG_SYSV_FS is not set
1801# CONFIG_UFS_FS is not set
1802# CONFIG_NILFS2_FS is not set
1803CONFIG_NETWORK_FILESYSTEMS=y
1804CONFIG_NFS_FS=y
1805CONFIG_NFS_V3=y
1806CONFIG_NFS_V3_ACL=y
1807CONFIG_NFS_V4=y
1808CONFIG_ROOT_NFS=y
1809# CONFIG_NFSD is not set
1810CONFIG_LOCKD=y
1811CONFIG_LOCKD_V4=y
1812CONFIG_NFS_ACL_SUPPORT=y
1813CONFIG_NFS_COMMON=y
1814CONFIG_SUNRPC=y
1815CONFIG_SUNRPC_GSS=y
1816CONFIG_RPCSEC_GSS_KRB5=y
1817# CONFIG_RPCSEC_GSS_SPKM3 is not set
1818# CONFIG_SMB_FS is not set
1819# CONFIG_CIFS is not set
1820# CONFIG_NCP_FS is not set
1821# CONFIG_CODA_FS is not set
1822# CONFIG_AFS_FS is not set
1823
1824#
1825# Partition Types
1826#
1827CONFIG_PARTITION_ADVANCED=y
1828# CONFIG_ACORN_PARTITION is not set
1829# CONFIG_OSF_PARTITION is not set
1830# CONFIG_AMIGA_PARTITION is not set
1831# CONFIG_ATARI_PARTITION is not set
1832# CONFIG_MAC_PARTITION is not set
1833CONFIG_MSDOS_PARTITION=y
1834CONFIG_BSD_DISKLABEL=y
1835CONFIG_MINIX_SUBPARTITION=y
1836CONFIG_SOLARIS_X86_PARTITION=y
1837CONFIG_UNIXWARE_DISKLABEL=y
1838CONFIG_LDM_PARTITION=y
1839# CONFIG_LDM_DEBUG is not set
1840# CONFIG_SGI_PARTITION is not set
1841# CONFIG_ULTRIX_PARTITION is not set
1842# CONFIG_SUN_PARTITION is not set
1843# CONFIG_KARMA_PARTITION is not set
1844CONFIG_EFI_PARTITION=y
1845# CONFIG_SYSV68_PARTITION is not set
1846CONFIG_NLS=y
1847CONFIG_NLS_DEFAULT="cp437"
1848CONFIG_NLS_CODEPAGE_437=m
1849CONFIG_NLS_CODEPAGE_737=m
1850CONFIG_NLS_CODEPAGE_775=m
1851CONFIG_NLS_CODEPAGE_850=m
1852CONFIG_NLS_CODEPAGE_852=m
1853CONFIG_NLS_CODEPAGE_855=m
1854CONFIG_NLS_CODEPAGE_857=m
1855CONFIG_NLS_CODEPAGE_860=m
1856CONFIG_NLS_CODEPAGE_861=m
1857CONFIG_NLS_CODEPAGE_862=m
1858CONFIG_NLS_CODEPAGE_863=m
1859CONFIG_NLS_CODEPAGE_864=m
1860CONFIG_NLS_CODEPAGE_865=m
1861CONFIG_NLS_CODEPAGE_866=m
1862CONFIG_NLS_CODEPAGE_869=m
1863CONFIG_NLS_CODEPAGE_936=m
1864CONFIG_NLS_CODEPAGE_950=m
1865CONFIG_NLS_CODEPAGE_932=m
1866CONFIG_NLS_CODEPAGE_949=m
1867CONFIG_NLS_CODEPAGE_874=m
1868CONFIG_NLS_ISO8859_8=m
1869CONFIG_NLS_CODEPAGE_1250=m
1870CONFIG_NLS_CODEPAGE_1251=m
1871CONFIG_NLS_ASCII=m
1872CONFIG_NLS_ISO8859_1=m
1873CONFIG_NLS_ISO8859_2=m
1874CONFIG_NLS_ISO8859_3=m
1875CONFIG_NLS_ISO8859_4=m
1876CONFIG_NLS_ISO8859_5=m
1877CONFIG_NLS_ISO8859_6=m
1878CONFIG_NLS_ISO8859_7=m
1879CONFIG_NLS_ISO8859_9=m
1880CONFIG_NLS_ISO8859_13=m
1881CONFIG_NLS_ISO8859_14=m
1882CONFIG_NLS_ISO8859_15=m
1883CONFIG_NLS_KOI8_R=m
1884CONFIG_NLS_KOI8_U=m
1885CONFIG_NLS_UTF8=m
1886# CONFIG_DLM is not set
1887
1888#
1889# Kernel hacking
1890#
1891# CONFIG_PRINTK_TIME is not set
1892# CONFIG_ENABLE_WARN_DEPRECATED is not set
1893# CONFIG_ENABLE_MUST_CHECK is not set
1894CONFIG_FRAME_WARN=1024
1895# CONFIG_MAGIC_SYSRQ is not set
1896# CONFIG_UNUSED_SYMBOLS is not set
1897CONFIG_DEBUG_FS=y
1898# CONFIG_HEADERS_CHECK is not set
1899CONFIG_DEBUG_KERNEL=y
1900# CONFIG_DEBUG_SHIRQ is not set
1901CONFIG_DETECT_SOFTLOCKUP=y
1902# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1903CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1904CONFIG_DETECT_HUNG_TASK=y
1905# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1906CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1907# CONFIG_SCHED_DEBUG is not set
1908# CONFIG_SCHEDSTATS is not set
1909# CONFIG_TIMER_STATS is not set
1910# CONFIG_DEBUG_OBJECTS is not set
1911# CONFIG_SLUB_DEBUG_ON is not set
1912# CONFIG_SLUB_STATS is not set
1913# CONFIG_DEBUG_RT_MUTEXES is not set
1914# CONFIG_RT_MUTEX_TESTER is not set
1915# CONFIG_DEBUG_SPINLOCK is not set
1916# CONFIG_DEBUG_MUTEXES is not set
1917# CONFIG_DEBUG_LOCK_ALLOC is not set
1918# CONFIG_PROVE_LOCKING is not set
1919# CONFIG_LOCK_STAT is not set
1920# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1921# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1922# CONFIG_DEBUG_KOBJECT is not set
1923CONFIG_DEBUG_BUGVERBOSE=y
1924CONFIG_DEBUG_INFO=y
1925# CONFIG_DEBUG_VM is not set
1926# CONFIG_DEBUG_WRITECOUNT is not set
1927CONFIG_DEBUG_MEMORY_INIT=y
1928# CONFIG_DEBUG_LIST is not set
1929# CONFIG_DEBUG_SG is not set
1930# CONFIG_DEBUG_NOTIFIERS is not set
1931# CONFIG_BOOT_PRINTK_DELAY is not set
1932# CONFIG_RCU_TORTURE_TEST is not set
1933# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1934# CONFIG_BACKTRACE_SELF_TEST is not set
1935# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1936# CONFIG_FAULT_INJECTION is not set
1937# CONFIG_LATENCYTOP is not set
1938CONFIG_SYSCTL_SYSCALL_CHECK=y
1939# CONFIG_PAGE_POISONING is not set
1940CONFIG_HAVE_FUNCTION_TRACER=y
1941CONFIG_TRACING_SUPPORT=y
1942
1943#
1944# Tracers
1945#
1946# CONFIG_FUNCTION_TRACER is not set
1947# CONFIG_SCHED_TRACER is not set
1948# CONFIG_CONTEXT_SWITCH_TRACER is not set
1949# CONFIG_EVENT_TRACER is not set
1950# CONFIG_BOOT_TRACER is not set
1951# CONFIG_TRACE_BRANCH_PROFILING is not set
1952# CONFIG_STACK_TRACER is not set
1953# CONFIG_KMEMTRACE is not set
1954# CONFIG_WORKQUEUE_TRACER is not set
1955# CONFIG_BLK_DEV_IO_TRACE is not set
1956# CONFIG_DYNAMIC_DEBUG is not set
1957# CONFIG_SAMPLES is not set
1958CONFIG_HAVE_ARCH_KGDB=y
1959# CONFIG_KGDB is not set
1960CONFIG_ARM_UNWIND=y
1961CONFIG_DEBUG_USER=y
1962# CONFIG_DEBUG_ERRORS is not set
1963# CONFIG_DEBUG_STACK_USAGE is not set
1964# CONFIG_DEBUG_LL is not set
1965CONFIG_DEBUG_S3C_UART=0
1966
1967#
1968# Security options
1969#
1970CONFIG_KEYS=y
1971# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
1972# CONFIG_SECURITY is not set
1973# CONFIG_SECURITYFS is not set
1974CONFIG_SECURITY_FILE_CAPABILITIES=y
1975CONFIG_CRYPTO=y
1976
1977#
1978# Crypto core or helper
1979#
1980CONFIG_CRYPTO_FIPS=y
1981CONFIG_CRYPTO_ALGAPI=y
1982CONFIG_CRYPTO_ALGAPI2=y
1983CONFIG_CRYPTO_AEAD=m
1984CONFIG_CRYPTO_AEAD2=y
1985CONFIG_CRYPTO_BLKCIPHER=y
1986CONFIG_CRYPTO_BLKCIPHER2=y
1987CONFIG_CRYPTO_HASH=y
1988CONFIG_CRYPTO_HASH2=y
1989CONFIG_CRYPTO_RNG=m
1990CONFIG_CRYPTO_RNG2=y
1991CONFIG_CRYPTO_PCOMP=y
1992CONFIG_CRYPTO_MANAGER=y
1993CONFIG_CRYPTO_MANAGER2=y
1994CONFIG_CRYPTO_GF128MUL=m
1995CONFIG_CRYPTO_NULL=m
1996CONFIG_CRYPTO_WORKQUEUE=y
1997CONFIG_CRYPTO_CRYPTD=m
1998CONFIG_CRYPTO_AUTHENC=m
1999CONFIG_CRYPTO_TEST=m
2000
2001#
2002# Authenticated Encryption with Associated Data
2003#
2004CONFIG_CRYPTO_CCM=m
2005CONFIG_CRYPTO_GCM=m
2006CONFIG_CRYPTO_SEQIV=m
2007
2008#
2009# Block modes
2010#
2011CONFIG_CRYPTO_CBC=y
2012CONFIG_CRYPTO_CTR=m
2013CONFIG_CRYPTO_CTS=m
2014CONFIG_CRYPTO_ECB=y
2015CONFIG_CRYPTO_LRW=m
2016CONFIG_CRYPTO_PCBC=m
2017CONFIG_CRYPTO_XTS=m
2018
2019#
2020# Hash modes
2021#
2022CONFIG_CRYPTO_HMAC=y
2023CONFIG_CRYPTO_XCBC=m
2024
2025#
2026# Digest
2027#
2028CONFIG_CRYPTO_CRC32C=m
2029CONFIG_CRYPTO_MD4=m
2030CONFIG_CRYPTO_MD5=y
2031CONFIG_CRYPTO_MICHAEL_MIC=y
2032CONFIG_CRYPTO_RMD128=m
2033CONFIG_CRYPTO_RMD160=m
2034CONFIG_CRYPTO_RMD256=m
2035CONFIG_CRYPTO_RMD320=m
2036CONFIG_CRYPTO_SHA1=m
2037CONFIG_CRYPTO_SHA256=m
2038CONFIG_CRYPTO_SHA512=m
2039CONFIG_CRYPTO_TGR192=m
2040CONFIG_CRYPTO_WP512=m
2041
2042#
2043# Ciphers
2044#
2045CONFIG_CRYPTO_AES=y
2046CONFIG_CRYPTO_ANUBIS=m
2047CONFIG_CRYPTO_ARC4=y
2048CONFIG_CRYPTO_BLOWFISH=m
2049CONFIG_CRYPTO_CAMELLIA=m
2050CONFIG_CRYPTO_CAST5=m
2051CONFIG_CRYPTO_CAST6=m
2052CONFIG_CRYPTO_DES=y
2053CONFIG_CRYPTO_FCRYPT=m
2054CONFIG_CRYPTO_KHAZAD=m
2055CONFIG_CRYPTO_SALSA20=m
2056CONFIG_CRYPTO_SEED=m
2057CONFIG_CRYPTO_SERPENT=m
2058CONFIG_CRYPTO_TEA=m
2059CONFIG_CRYPTO_TWOFISH=m
2060CONFIG_CRYPTO_TWOFISH_COMMON=m
2061
2062#
2063# Compression
2064#
2065CONFIG_CRYPTO_DEFLATE=m
2066CONFIG_CRYPTO_ZLIB=m
2067CONFIG_CRYPTO_LZO=m
2068
2069#
2070# Random Number Generation
2071#
2072CONFIG_CRYPTO_ANSI_CPRNG=m
2073CONFIG_CRYPTO_HW=y
2074# CONFIG_BINARY_PRINTF is not set
2075
2076#
2077# Library routines
2078#
2079CONFIG_BITREVERSE=y
2080CONFIG_GENERIC_FIND_LAST_BIT=y
2081CONFIG_CRC_CCITT=m
2082CONFIG_CRC16=m
2083CONFIG_CRC_T10DIF=y
2084CONFIG_CRC_ITU_T=y
2085CONFIG_CRC32=y
2086CONFIG_CRC7=y
2087CONFIG_LIBCRC32C=m
2088CONFIG_ZLIB_INFLATE=y
2089CONFIG_ZLIB_DEFLATE=y
2090CONFIG_LZO_COMPRESS=m
2091CONFIG_LZO_DECOMPRESS=m
2092CONFIG_DECOMPRESS_GZIP=y
2093CONFIG_DECOMPRESS_BZIP2=y
2094CONFIG_DECOMPRESS_LZMA=y
2095CONFIG_HAS_IOMEM=y
2096CONFIG_HAS_DMA=y
2097CONFIG_NLATTR=y
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c
index 6cd9377ddb82..50e25fc5f8ab 100644
--- a/arch/arm/mach-s3c2410/usb-simtec.c
+++ b/arch/arm/mach-s3c2410/usb-simtec.c
@@ -22,7 +22,6 @@
22#include <linux/timer.h> 22#include <linux/timer.h>
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/device.h> 24#include <linux/device.h>
25#include <linux/gpio.h>
26#include <linux/io.h> 25#include <linux/io.h>
27 26
28#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
index 5df73cbf2b40..8cfeaec37306 100644
--- a/arch/arm/mach-s3c2440/Kconfig
+++ b/arch/arm/mach-s3c2440/Kconfig
@@ -84,5 +84,15 @@ config MACH_AT2440EVB
84 help 84 help
85 Say Y here if you are using the AT2440EVB development board 85 Say Y here if you are using the AT2440EVB development board
86 86
87config MACH_MINI2440
88 bool "MINI2440 development board"
89 select CPU_S3C2440
90 select EEPROM_AT24
91 select LEDS_TRIGGER_BACKLIGHT
92 select SND_S3C24XX_SOC_S3C24XX_UDA134X
93 help
94 Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
95 available via various sources. It can come with a 3.5" or 7" touch LCD.
96
87endmenu 97endmenu
88 98
diff --git a/arch/arm/mach-s3c2440/Makefile b/arch/arm/mach-s3c2440/Makefile
index 0b4440e79b90..bfadcf684a2a 100644
--- a/arch/arm/mach-s3c2440/Makefile
+++ b/arch/arm/mach-s3c2440/Makefile
@@ -22,3 +22,4 @@ obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
22obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o 22obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o
23obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o 23obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
24obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o 24obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o
25obj-$(CONFIG_MACH_MINI2440) += mach-mini2440.o
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c
new file mode 100644
index 000000000000..6a5bc3021bdb
--- /dev/null
+++ b/arch/arm/mach-s3c2440/mach-mini2440.c
@@ -0,0 +1,703 @@
1/* linux/arch/arm/mach-s3c2440/mach-mini2440.c
2 *
3 * Copyright (c) 2008 Ramax Lo <ramaxlo@gmail.com>
4 * Based on mach-anubis.c by Ben Dooks <ben@simtec.co.uk>
5 * and modifications by SBZ <sbz@spgui.org> and
6 * Weibing <http://weibing.blogbus.com> and
7 * Michel Pollet <buserror@gmail.com>
8 *
9 * For product information, visit http://code.google.com/p/mini2440/
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14*/
15
16#include <linux/kernel.h>
17#include <linux/types.h>
18#include <linux/interrupt.h>
19#include <linux/list.h>
20#include <linux/timer.h>
21#include <linux/init.h>
22#include <linux/gpio.h>
23#include <linux/input.h>
24#include <linux/io.h>
25#include <linux/serial_core.h>
26#include <linux/dm9000.h>
27#include <linux/i2c/at24.h>
28#include <linux/platform_device.h>
29#include <linux/gpio_keys.h>
30#include <linux/i2c.h>
31#include <linux/mmc/host.h>
32
33#include <asm/mach/arch.h>
34#include <asm/mach/map.h>
35
36#include <mach/hardware.h>
37#include <mach/fb.h>
38#include <asm/mach-types.h>
39
40#include <plat/regs-serial.h>
41#include <mach/regs-gpio.h>
42#include <mach/leds-gpio.h>
43#include <mach/regs-mem.h>
44#include <mach/regs-lcd.h>
45#include <mach/irqs.h>
46#include <plat/nand.h>
47#include <plat/iic.h>
48#include <plat/mci.h>
49#include <plat/udc.h>
50
51#include <plat/regs-serial.h>
52
53#include <linux/mtd/mtd.h>
54#include <linux/mtd/nand.h>
55#include <linux/mtd/nand_ecc.h>
56#include <linux/mtd/partitions.h>
57
58#include <plat/clock.h>
59#include <plat/devs.h>
60#include <plat/cpu.h>
61
62#include <sound/s3c24xx_uda134x.h>
63
64#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
65
66static struct map_desc mini2440_iodesc[] __initdata = {
67 /* nothing to declare, move along */
68};
69
70#define UCON S3C2410_UCON_DEFAULT
71#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
72#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
73
74
75static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = {
76 [0] = {
77 .hwport = 0,
78 .flags = 0,
79 .ucon = UCON,
80 .ulcon = ULCON,
81 .ufcon = UFCON,
82 },
83 [1] = {
84 .hwport = 1,
85 .flags = 0,
86 .ucon = UCON,
87 .ulcon = ULCON,
88 .ufcon = UFCON,
89 },
90 [2] = {
91 .hwport = 2,
92 .flags = 0,
93 .ucon = UCON,
94 .ulcon = ULCON,
95 .ufcon = UFCON,
96 },
97};
98
99/* USB device UDC support */
100
101static void mini2440_udc_pullup(enum s3c2410_udc_cmd_e cmd)
102{
103 pr_debug("udc: pullup(%d)\n", cmd);
104
105 switch (cmd) {
106 case S3C2410_UDC_P_ENABLE :
107 s3c2410_gpio_setpin(S3C2410_GPC(5), 1);
108 break;
109 case S3C2410_UDC_P_DISABLE :
110 s3c2410_gpio_setpin(S3C2410_GPC(5), 0);
111 break;
112 case S3C2410_UDC_P_RESET :
113 break;
114 default:
115 break;
116 }
117}
118
119static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
120 .udc_command = mini2440_udc_pullup,
121};
122
123
124/* LCD timing and setup */
125
126/*
127 * This macro simplifies the table bellow
128 */
129#define _LCD_DECLARE(_clock,_xres,margin_left,margin_right,hsync, \
130 _yres,margin_top,margin_bottom,vsync, refresh) \
131 .width = _xres, \
132 .xres = _xres, \
133 .height = _yres, \
134 .yres = _yres, \
135 .left_margin = margin_left, \
136 .right_margin = margin_right, \
137 .upper_margin = margin_top, \
138 .lower_margin = margin_bottom, \
139 .hsync_len = hsync, \
140 .vsync_len = vsync, \
141 .pixclock = ((_clock*100000000000LL) / \
142 ((refresh) * \
143 (hsync + margin_left + _xres + margin_right) * \
144 (vsync + margin_top + _yres + margin_bottom))), \
145 .bpp = 16,\
146 .type = (S3C2410_LCDCON1_TFT16BPP |\
147 S3C2410_LCDCON1_TFT)
148
149struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = {
150 [0] = { /* mini2440 + 3.5" TFT + touchscreen */
151 _LCD_DECLARE(
152 7, /* The 3.5 is quite fast */
153 240, 21, 38, 6, /* x timing */
154 320, 4, 4, 2, /* y timing */
155 60), /* refresh rate */
156 .lcdcon5 = (S3C2410_LCDCON5_FRM565 |
157 S3C2410_LCDCON5_INVVLINE |
158 S3C2410_LCDCON5_INVVFRAME |
159 S3C2410_LCDCON5_INVVDEN |
160 S3C2410_LCDCON5_PWREN),
161 },
162 [1] = { /* mini2440 + 7" TFT + touchscreen */
163 _LCD_DECLARE(
164 10, /* the 7" runs slower */
165 800, 40, 40, 48, /* x timing */
166 480, 29, 3, 3, /* y timing */
167 50), /* refresh rate */
168 .lcdcon5 = (S3C2410_LCDCON5_FRM565 |
169 S3C2410_LCDCON5_INVVLINE |
170 S3C2410_LCDCON5_INVVFRAME |
171 S3C2410_LCDCON5_PWREN),
172 },
173 /* The VGA shield can outout at several resolutions. All share
174 * the same timings, however, anything smaller than 1024x768
175 * will only be displayed in the top left corner of a 1024x768
176 * XGA output unless you add optional dip switches to the shield.
177 * Therefore timings for other resolutions have been ommited here.
178 */
179 [2] = {
180 _LCD_DECLARE(
181 10,
182 1024, 1, 2, 2, /* y timing */
183 768, 200, 16, 16, /* x timing */
184 24), /* refresh rate, maximum stable,
185 tested with the FPGA shield */
186 .lcdcon5 = (S3C2410_LCDCON5_FRM565 |
187 S3C2410_LCDCON5_HWSWP),
188 },
189};
190
191/* todo - put into gpio header */
192
193#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2))
194#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2))
195
196struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
197 .displays = &mini2440_lcd_cfg[0], /* not constant! see init */
198 .num_displays = 1,
199 .default_display = 0,
200
201 /* Enable VD[2..7], VD[10..15], VD[18..23] and VCLK, syncs, VDEN
202 * and disable the pull down resistors on pins we are using for LCD
203 * data. */
204
205 .gpcup = (0xf << 1) | (0x3f << 10),
206
207 .gpccon = (S3C2410_GPC1_VCLK | S3C2410_GPC2_VLINE |
208 S3C2410_GPC3_VFRAME | S3C2410_GPC4_VM |
209 S3C2410_GPC10_VD2 | S3C2410_GPC11_VD3 |
210 S3C2410_GPC12_VD4 | S3C2410_GPC13_VD5 |
211 S3C2410_GPC14_VD6 | S3C2410_GPC15_VD7),
212
213 .gpccon_mask = (S3C2410_GPCCON_MASK(1) | S3C2410_GPCCON_MASK(2) |
214 S3C2410_GPCCON_MASK(3) | S3C2410_GPCCON_MASK(4) |
215 S3C2410_GPCCON_MASK(10) | S3C2410_GPCCON_MASK(11) |
216 S3C2410_GPCCON_MASK(12) | S3C2410_GPCCON_MASK(13) |
217 S3C2410_GPCCON_MASK(14) | S3C2410_GPCCON_MASK(15)),
218
219 .gpdup = (0x3f << 2) | (0x3f << 10),
220
221 .gpdcon = (S3C2410_GPD2_VD10 | S3C2410_GPD3_VD11 |
222 S3C2410_GPD4_VD12 | S3C2410_GPD5_VD13 |
223 S3C2410_GPD6_VD14 | S3C2410_GPD7_VD15 |
224 S3C2410_GPD10_VD18 | S3C2410_GPD11_VD19 |
225 S3C2410_GPD12_VD20 | S3C2410_GPD13_VD21 |
226 S3C2410_GPD14_VD22 | S3C2410_GPD15_VD23),
227
228 .gpdcon_mask = (S3C2410_GPDCON_MASK(2) | S3C2410_GPDCON_MASK(3) |
229 S3C2410_GPDCON_MASK(4) | S3C2410_GPDCON_MASK(5) |
230 S3C2410_GPDCON_MASK(6) | S3C2410_GPDCON_MASK(7) |
231 S3C2410_GPDCON_MASK(10) | S3C2410_GPDCON_MASK(11)|
232 S3C2410_GPDCON_MASK(12) | S3C2410_GPDCON_MASK(13)|
233 S3C2410_GPDCON_MASK(14) | S3C2410_GPDCON_MASK(15)),
234};
235
236/* MMC/SD */
237
238static struct s3c24xx_mci_pdata mini2440_mmc_cfg __initdata = {
239 .gpio_detect = S3C2410_GPG(8),
240 .gpio_wprotect = S3C2410_GPH(8),
241 .set_power = NULL,
242 .ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34,
243};
244
245/* NAND Flash on MINI2440 board */
246
247static struct mtd_partition mini2440_default_nand_part[] __initdata = {
248 [0] = {
249 .name = "u-boot",
250 .size = SZ_256K,
251 .offset = 0,
252 },
253 [1] = {
254 .name = "u-boot-env",
255 .size = SZ_128K,
256 .offset = SZ_256K,
257 },
258 [2] = {
259 .name = "kernel",
260 /* 5 megabytes, for a kernel with no modules
261 * or a uImage with a ramdisk attached */
262 .size = 0x00500000,
263 .offset = SZ_256K + SZ_128K,
264 },
265 [3] = {
266 .name = "root",
267 .offset = SZ_256K + SZ_128K + 0x00500000,
268 .size = MTDPART_SIZ_FULL,
269 },
270};
271
272static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = {
273 [0] = {
274 .name = "nand",
275 .nr_chips = 1,
276 .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part),
277 .partitions = mini2440_default_nand_part,
278 },
279};
280
281static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
282 .tacls = 0,
283 .twrph0 = 25,
284 .twrph1 = 15,
285 .nr_sets = ARRAY_SIZE(mini2440_nand_sets),
286 .sets = mini2440_nand_sets,
287 .ignore_unset_ecc = 1,
288};
289
290/* DM9000AEP 10/100 ethernet controller */
291
292static struct resource mini2440_dm9k_resource[] __initdata = {
293 [0] = {
294 .start = MACH_MINI2440_DM9K_BASE,
295 .end = MACH_MINI2440_DM9K_BASE + 3,
296 .flags = IORESOURCE_MEM
297 },
298 [1] = {
299 .start = MACH_MINI2440_DM9K_BASE + 4,
300 .end = MACH_MINI2440_DM9K_BASE + 7,
301 .flags = IORESOURCE_MEM
302 },
303 [2] = {
304 .start = IRQ_EINT7,
305 .end = IRQ_EINT7,
306 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
307 }
308};
309
310/*
311 * The DM9000 has no eeprom, and it's MAC address is set by
312 * the bootloader before starting the kernel.
313 */
314static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = {
315 .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
316};
317
318static struct platform_device mini2440_device_eth __initdata = {
319 .name = "dm9000",
320 .id = -1,
321 .num_resources = ARRAY_SIZE(mini2440_dm9k_resource),
322 .resource = mini2440_dm9k_resource,
323 .dev = {
324 .platform_data = &mini2440_dm9k_pdata,
325 },
326};
327
328/* CON5
329 * +--+ /-----\
330 * | | | |
331 * | | | BAT |
332 * | | \_____/
333 * | |
334 * | | +----+ +----+
335 * | | | K5 | | K1 |
336 * | | +----+ +----+
337 * | | +----+ +----+
338 * | | | K4 | | K2 |
339 * | | +----+ +----+
340 * | | +----+ +----+
341 * | | | K6 | | K3 |
342 * | | +----+ +----+
343 * .....
344 */
345static struct gpio_keys_button mini2440_buttons[] __initdata = {
346 {
347 .gpio = S3C2410_GPG(0), /* K1 */
348 .code = KEY_F1,
349 .desc = "Button 1",
350 .active_low = 1,
351 },
352 {
353 .gpio = S3C2410_GPG(3), /* K2 */
354 .code = KEY_F2,
355 .desc = "Button 2",
356 .active_low = 1,
357 },
358 {
359 .gpio = S3C2410_GPG(5), /* K3 */
360 .code = KEY_F3,
361 .desc = "Button 3",
362 .active_low = 1,
363 },
364 {
365 .gpio = S3C2410_GPG(6), /* K4 */
366 .code = KEY_POWER,
367 .desc = "Power",
368 .active_low = 1,
369 },
370 {
371 .gpio = S3C2410_GPG(7), /* K5 */
372 .code = KEY_F5,
373 .desc = "Button 5",
374 .active_low = 1,
375 },
376#if 0
377 /* this pin is also known as TCLK1 and seems to already
378 * marked as "in use" somehow in the kernel -- possibly wrongly */
379 {
380 .gpio = S3C2410_GPG(11), /* K6 */
381 .code = KEY_F6,
382 .desc = "Button 6",
383 .active_low = 1,
384 },
385#endif
386};
387
388static struct gpio_keys_platform_data mini2440_button_data __initdata = {
389 .buttons = mini2440_buttons,
390 .nbuttons = ARRAY_SIZE(mini2440_buttons),
391};
392
393static struct platform_device mini2440_button_device __initdata = {
394 .name = "gpio-keys",
395 .id = -1,
396 .dev = {
397 .platform_data = &mini2440_button_data,
398 }
399};
400
401/* LEDS */
402
403static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = {
404 .name = "led1",
405 .gpio = S3C2410_GPB(5),
406 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
407 .def_trigger = "heartbeat",
408};
409
410static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = {
411 .name = "led2",
412 .gpio = S3C2410_GPB(6),
413 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
414 .def_trigger = "nand-disk",
415};
416
417static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = {
418 .name = "led3",
419 .gpio = S3C2410_GPB(7),
420 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
421 .def_trigger = "mmc0",
422};
423
424static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = {
425 .name = "led4",
426 .gpio = S3C2410_GPB(8),
427 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
428 .def_trigger = "",
429};
430
431static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = {
432 .name = "backlight",
433 .gpio = S3C2410_GPG(4),
434 .def_trigger = "backlight",
435};
436
437static struct platform_device mini2440_led1 __initdata = {
438 .name = "s3c24xx_led",
439 .id = 1,
440 .dev = {
441 .platform_data = &mini2440_led1_pdata,
442 },
443};
444
445static struct platform_device mini2440_led2 __initdata = {
446 .name = "s3c24xx_led",
447 .id = 2,
448 .dev = {
449 .platform_data = &mini2440_led2_pdata,
450 },
451};
452
453static struct platform_device mini2440_led3 __initdata = {
454 .name = "s3c24xx_led",
455 .id = 3,
456 .dev = {
457 .platform_data = &mini2440_led3_pdata,
458 },
459};
460
461static struct platform_device mini2440_led4 __initdata = {
462 .name = "s3c24xx_led",
463 .id = 4,
464 .dev = {
465 .platform_data = &mini2440_led4_pdata,
466 },
467};
468
469static struct platform_device mini2440_led_backlight __initdata = {
470 .name = "s3c24xx_led",
471 .id = 5,
472 .dev = {
473 .platform_data = &mini2440_led_backlight_pdata,
474 },
475};
476
477/* AUDIO */
478
479static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = {
480 .l3_clk = S3C2410_GPB(4),
481 .l3_mode = S3C2410_GPB(2),
482 .l3_data = S3C2410_GPB(3),
483 .model = UDA134X_UDA1341
484};
485
486static struct platform_device mini2440_audio __initdata = {
487 .name = "s3c24xx_uda134x",
488 .id = 0,
489 .dev = {
490 .platform_data = &mini2440_audio_pins,
491 },
492};
493
494/*
495 * I2C devices
496 */
497static struct at24_platform_data at24c08 = {
498 .byte_len = SZ_8K / 8,
499 .page_size = 16,
500};
501
502static struct i2c_board_info mini2440_i2c_devs[] __initdata = {
503 {
504 I2C_BOARD_INFO("24c08", 0x50),
505 .platform_data = &at24c08,
506 },
507};
508
509static struct platform_device *mini2440_devices[] __initdata = {
510 &s3c_device_usb,
511 &s3c_device_wdt,
512/* &s3c_device_adc,*/ /* ADC doesn't like living with touchscreen ! */
513 &s3c_device_i2c0,
514 &s3c_device_rtc,
515 &s3c_device_usbgadget,
516 &mini2440_device_eth,
517 &mini2440_led1,
518 &mini2440_led2,
519 &mini2440_led3,
520 &mini2440_led4,
521 &mini2440_button_device,
522 &s3c_device_nand,
523 &s3c_device_sdi,
524 &s3c_device_iis,
525 &mini2440_audio,
526/* &s3c_device_timer[0],*/ /* buzzer pwm, no API for it */
527 /* remaining devices are optional */
528};
529
530static void __init mini2440_map_io(void)
531{
532 s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));
533 s3c24xx_init_clocks(12000000);
534 s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs));
535
536 s3c_device_nand.dev.platform_data = &mini2440_nand_info;
537 s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;
538}
539
540/*
541 * mini2440_features string
542 *
543 * t = Touchscreen present
544 * b = backlight control
545 * c = camera [TODO]
546 * 0-9 LCD configuration
547 *
548 */
549static char mini2440_features_str[12] __initdata = "0tb";
550
551static int __init mini2440_features_setup(char *str)
552{
553 if (str)
554 strlcpy(mini2440_features_str, str, sizeof(mini2440_features_str));
555 return 1;
556}
557
558__setup("mini2440=", mini2440_features_setup);
559
560#define FEATURE_SCREEN (1 << 0)
561#define FEATURE_BACKLIGHT (1 << 1)
562#define FEATURE_TOUCH (1 << 2)
563#define FEATURE_CAMERA (1 << 3)
564
565struct mini2440_features_t {
566 int count;
567 int done;
568 int lcd_index;
569 struct platform_device *optional[8];
570};
571
572static void mini2440_parse_features(
573 struct mini2440_features_t * features,
574 const char * features_str )
575{
576 const char * fp = features_str;
577
578 features->count = 0;
579 features->done = 0;
580 features->lcd_index = -1;
581
582 while (*fp) {
583 char f = *fp++;
584
585 switch (f) {
586 case '0'...'9': /* tft screen */
587 if (features->done & FEATURE_SCREEN) {
588 printk(KERN_INFO "MINI2440: '%c' ignored, "
589 "screen type already set\n", f);
590 } else {
591 int li = f - '0';
592 if (li >= ARRAY_SIZE(mini2440_lcd_cfg))
593 printk(KERN_INFO "MINI2440: "
594 "'%c' out of range LCD mode\n", f);
595 else {
596 features->optional[features->count++] =
597 &s3c_device_lcd;
598 features->lcd_index = li;
599 }
600 }
601 features->done |= FEATURE_SCREEN;
602 break;
603 case 'b':
604 if (features->done & FEATURE_BACKLIGHT)
605 printk(KERN_INFO "MINI2440: '%c' ignored, "
606 "backlight already set\n", f);
607 else {
608 features->optional[features->count++] =
609 &mini2440_led_backlight;
610 }
611 features->done |= FEATURE_BACKLIGHT;
612 break;
613 case 't':
614 printk(KERN_INFO "MINI2440: '%c' ignored, "
615 "touchscreen not compiled in\n", f);
616 break;
617 case 'c':
618 if (features->done & FEATURE_CAMERA)
619 printk(KERN_INFO "MINI2440: '%c' ignored, "
620 "camera already registered\n", f);
621 else
622 features->optional[features->count++] =
623 &s3c_device_camif;
624 features->done |= FEATURE_CAMERA;
625 break;
626 }
627 }
628}
629
630static void __init mini2440_init(void)
631{
632 struct mini2440_features_t features = { 0 };
633 int i;
634
635 printk(KERN_INFO "MINI2440: Option string mini2440=%s\n",
636 mini2440_features_str);
637
638 /* Parse the feature string */
639 mini2440_parse_features(&features, mini2440_features_str);
640
641 /* turn LCD on */
642 s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND);
643
644 /* Turn the backlight early on */
645 s3c2410_gpio_setpin(S3C2410_GPG(4), 1);
646 s3c2410_gpio_cfgpin(S3C2410_GPG(4), S3C2410_GPIO_OUTPUT);
647
648 /* remove pullup on optional PWM backlight -- unused on 3.5 and 7"s */
649 s3c2410_gpio_pullup(S3C2410_GPB(1), 0);
650 s3c2410_gpio_setpin(S3C2410_GPB(1), 0);
651 s3c2410_gpio_cfgpin(S3C2410_GPB(1), S3C2410_GPIO_INPUT);
652
653 /* Make sure the D+ pullup pin is output */
654 s3c2410_gpio_cfgpin(S3C2410_GPC(5), S3C2410_GPIO_OUTPUT);
655
656 /* mark the key as input, without pullups (there is one on the board) */
657 for (i = 0; i < ARRAY_SIZE(mini2440_buttons); i++) {
658 s3c2410_gpio_pullup(mini2440_buttons[i].gpio, 0);
659 s3c2410_gpio_cfgpin(mini2440_buttons[i].gpio,
660 S3C2410_GPIO_INPUT);
661 }
662 if (features.lcd_index != -1) {
663 int li;
664
665 mini2440_fb_info.displays =
666 &mini2440_lcd_cfg[features.lcd_index];
667
668 printk(KERN_INFO "MINI2440: LCD");
669 for (li = 0; li < ARRAY_SIZE(mini2440_lcd_cfg); li++)
670 if (li == features.lcd_index)
671 printk(" [%d:%dx%d]", li,
672 mini2440_lcd_cfg[li].width,
673 mini2440_lcd_cfg[li].height);
674 else
675 printk(" %d:%dx%d", li,
676 mini2440_lcd_cfg[li].width,
677 mini2440_lcd_cfg[li].height);
678 printk("\n");
679 s3c24xx_fb_set_platdata(&mini2440_fb_info);
680 }
681 s3c24xx_udc_set_platdata(&mini2440_udc_cfg);
682 s3c_i2c0_set_platdata(NULL);
683 i2c_register_board_info(0, mini2440_i2c_devs,
684 ARRAY_SIZE(mini2440_i2c_devs));
685
686 platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
687
688 if (features.count) /* the optional features */
689 platform_add_devices(features.optional, features.count);
690
691}
692
693
694MACHINE_START(MINI2440, "MINI2440")
695 /* Maintainer: Michel Pollet <buserror@gmail.com> */
696 .phys_io = S3C2410_PA_UART,
697 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
698 .boot_params = S3C2410_SDRAM_PA + 0x100,
699 .map_io = mini2440_map_io,
700 .init_machine = mini2440_init,
701 .init_irq = s3c24xx_init_irq,
702 .timer = &s3c24xx_timer,
703MACHINE_END
diff --git a/arch/arm/mach-s3c2442/Kconfig b/arch/arm/mach-s3c2442/Kconfig
index b289d198020e..103e913f2258 100644
--- a/arch/arm/mach-s3c2442/Kconfig
+++ b/arch/arm/mach-s3c2442/Kconfig
@@ -24,6 +24,18 @@ config SMDK2440_CPU2442
24 depends on ARCH_S3C2440 24 depends on ARCH_S3C2440
25 select CPU_S3C2442 25 select CPU_S3C2442
26 26
27config MACH_NEO1973_GTA02
28 bool "Openmoko GTA02 / Freerunner phone"
29 select CPU_S3C2442
30 select MFD_PCF50633
31 select PCF50633_GPIO
32 select I2C
33 select POWER_SUPPLY
34 select MACH_NEO1973
35 select S3C2410_PWM
36 help
37 Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone
38
27 39
28endmenu 40endmenu
29 41
diff --git a/arch/arm/mach-s3c2442/Makefile b/arch/arm/mach-s3c2442/Makefile
index 2a909c6c5798..2a19113a5769 100644
--- a/arch/arm/mach-s3c2442/Makefile
+++ b/arch/arm/mach-s3c2442/Makefile
@@ -12,5 +12,7 @@ obj- :=
12obj-$(CONFIG_CPU_S3C2442) += s3c2442.o 12obj-$(CONFIG_CPU_S3C2442) += s3c2442.o
13obj-$(CONFIG_CPU_S3C2442) += clock.o 13obj-$(CONFIG_CPU_S3C2442) += clock.o
14 14
15obj-$(CONFIG_MACH_NEO1973_GTA02) += mach-gta02.o
16
15# Machine support 17# Machine support
16 18
diff --git a/arch/arm/mach-s3c2442/include/mach/gta02.h b/arch/arm/mach-s3c2442/include/mach/gta02.h
new file mode 100644
index 000000000000..953331d8d56a
--- /dev/null
+++ b/arch/arm/mach-s3c2442/include/mach/gta02.h
@@ -0,0 +1,84 @@
1#ifndef _GTA02_H
2#define _GTA02_H
3
4#include <mach/regs-gpio.h>
5
6/* Different hardware revisions, passed in ATAG_REVISION by u-boot */
7#define GTA02v1_SYSTEM_REV 0x00000310
8#define GTA02v2_SYSTEM_REV 0x00000320
9#define GTA02v3_SYSTEM_REV 0x00000330
10#define GTA02v4_SYSTEM_REV 0x00000340
11#define GTA02v5_SYSTEM_REV 0x00000350
12/* since A7 is basically same as A6, we use A6 PCB ID */
13#define GTA02v6_SYSTEM_REV 0x00000360
14
15#define GTA02_GPIO_n3DL_GSM S3C2410_GPA(13) /* v1 + v2 + v3 only */
16
17#define GTA02_GPIO_PWR_LED1 S3C2410_GPB(0)
18#define GTA02_GPIO_PWR_LED2 S3C2410_GPB(1)
19#define GTA02_GPIO_AUX_LED S3C2410_GPB(2)
20#define GTA02_GPIO_VIBRATOR_ON S3C2410_GPB(3)
21#define GTA02_GPIO_MODEM_RST S3C2410_GPB(5)
22#define GTA02_GPIO_BT_EN S3C2410_GPB(6)
23#define GTA02_GPIO_MODEM_ON S3C2410_GPB(7)
24#define GTA02_GPIO_EXTINT8 S3C2410_GPB(8)
25#define GTA02_GPIO_USB_PULLUP S3C2410_GPB(9)
26
27#define GTA02_GPIO_PIO5 S3C2410_GPC(5) /* v3 + v4 only */
28
29#define GTA02v3_GPIO_nG1_CS S3C2410_GPD(12) /* v3 + v4 only */
30#define GTA02v3_GPIO_nG2_CS S3C2410_GPD(13) /* v3 + v4 only */
31#define GTA02v5_GPIO_HDQ S3C2410_GPD(14) /* v5 + */
32
33#define GTA02_GPIO_nG1_INT S3C2410_GPF(0)
34#define GTA02_GPIO_IO1 S3C2410_GPF(1)
35#define GTA02_GPIO_PIO_2 S3C2410_GPF(2) /* v2 + v3 + v4 only */
36#define GTA02_GPIO_JACK_INSERT S3C2410_GPF(4)
37#define GTA02_GPIO_WLAN_GPIO1 S3C2410_GPF(5) /* v2 + v3 + v4 only */
38#define GTA02_GPIO_AUX_KEY S3C2410_GPF(6)
39#define GTA02_GPIO_HOLD_KEY S3C2410_GPF(7)
40
41#define GTA02_GPIO_3D_IRQ S3C2410_GPG(4)
42#define GTA02v2_GPIO_nG2_INT S3C2410_GPG(8) /* v2 + v3 + v4 only */
43#define GTA02v3_GPIO_nUSB_OC S3C2410_GPG(9) /* v3 + v4 only */
44#define GTA02v3_GPIO_nUSB_FLT S3C2410_GPG(10) /* v3 + v4 only */
45#define GTA02v3_GPIO_nGSM_OC S3C2410_GPG(11) /* v3 + v4 only */
46
47#define GTA02_GPIO_AMP_SHUT S3C2440_GPJ1 /* v2 + v3 + v4 only */
48#define GTA02v1_GPIO_WLAN_GPIO10 S3C2440_GPJ2
49#define GTA02_GPIO_HP_IN S3C2440_GPJ2 /* v2 + v3 + v4 only */
50#define GTA02_GPIO_INT0 S3C2440_GPJ3 /* v2 + v3 + v4 only */
51#define GTA02_GPIO_nGSM_EN S3C2440_GPJ4
52#define GTA02_GPIO_3D_RESET S3C2440_GPJ5
53#define GTA02_GPIO_nDL_GSM S3C2440_GPJ6 /* v4 + v5 only */
54#define GTA02_GPIO_WLAN_GPIO0 S3C2440_GPJ7
55#define GTA02v1_GPIO_BAT_ID S3C2440_GPJ8
56#define GTA02_GPIO_KEEPACT S3C2440_GPJ8
57#define GTA02v1_GPIO_HP_IN S3C2440_GPJ10
58#define GTA02_CHIP_PWD S3C2440_GPJ11 /* v2 + v3 + v4 only */
59#define GTA02_GPIO_nWLAN_RESET S3C2440_GPJ12 /* v2 + v3 + v4 only */
60
61#define GTA02_IRQ_GSENSOR_1 IRQ_EINT0
62#define GTA02_IRQ_MODEM IRQ_EINT1
63#define GTA02_IRQ_PIO_2 IRQ_EINT2 /* v2 + v3 + v4 only */
64#define GTA02_IRQ_nJACK_INSERT IRQ_EINT4
65#define GTA02_IRQ_WLAN_GPIO1 IRQ_EINT5
66#define GTA02_IRQ_AUX IRQ_EINT6
67#define GTA02_IRQ_nHOLD IRQ_EINT7
68#define GTA02_IRQ_PCF50633 IRQ_EINT9
69#define GTA02_IRQ_3D IRQ_EINT12
70#define GTA02_IRQ_GSENSOR_2 IRQ_EINT16 /* v2 + v3 + v4 only */
71#define GTA02v3_IRQ_nUSB_OC IRQ_EINT17 /* v3 + v4 only */
72#define GTA02v3_IRQ_nUSB_FLT IRQ_EINT18 /* v3 + v4 only */
73#define GTA02v3_IRQ_nGSM_OC IRQ_EINT19 /* v3 + v4 only */
74
75/* returns 00 000 on GTA02 A5 and earlier, A6 returns 01 001 */
76#define GTA02_PCB_ID1_0 S3C2410_GPC(13)
77#define GTA02_PCB_ID1_1 S3C2410_GPC(15)
78#define GTA02_PCB_ID1_2 S3C2410_GPD(0)
79#define GTA02_PCB_ID2_0 S3C2410_GPD(3)
80#define GTA02_PCB_ID2_1 S3C2410_GPD(4)
81
82int gta02_get_pcb_revision(void);
83
84#endif /* _GTA02_H */
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
new file mode 100644
index 000000000000..e23b581aa0e1
--- /dev/null
+++ b/arch/arm/mach-s3c2442/mach-gta02.c
@@ -0,0 +1,646 @@
1/*
2 * linux/arch/arm/mach-s3c2442/mach-gta02.c
3 *
4 * S3C2442 Machine Support for Openmoko GTA02 / FreeRunner.
5 *
6 * Copyright (C) 2006-2009 by Openmoko, Inc.
7 * Authors: Harald Welte <laforge@openmoko.org>
8 * Andy Green <andy@openmoko.org>
9 * Werner Almesberger <werner@openmoko.org>
10 * All rights reserved.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License as
14 * published by the Free Software Foundation; either version 2 of
15 * the License, or (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
25 * MA 02111-1307 USA
26 *
27 */
28
29#include <linux/kernel.h>
30#include <linux/types.h>
31#include <linux/interrupt.h>
32#include <linux/list.h>
33#include <linux/delay.h>
34#include <linux/timer.h>
35#include <linux/init.h>
36#include <linux/gpio.h>
37#include <linux/workqueue.h>
38#include <linux/platform_device.h>
39#include <linux/serial_core.h>
40#include <linux/spi/spi.h>
41
42#include <linux/mmc/host.h>
43
44#include <linux/mtd/mtd.h>
45#include <linux/mtd/nand.h>
46#include <linux/mtd/nand_ecc.h>
47#include <linux/mtd/partitions.h>
48#include <linux/mtd/physmap.h>
49#include <linux/io.h>
50
51#include <linux/i2c.h>
52#include <linux/backlight.h>
53#include <linux/regulator/machine.h>
54
55#include <linux/mfd/pcf50633/core.h>
56#include <linux/mfd/pcf50633/mbc.h>
57#include <linux/mfd/pcf50633/adc.h>
58#include <linux/mfd/pcf50633/gpio.h>
59#include <linux/mfd/pcf50633/pmic.h>
60
61#include <asm/mach/arch.h>
62#include <asm/mach/map.h>
63#include <asm/mach/irq.h>
64
65#include <asm/irq.h>
66#include <asm/mach-types.h>
67
68#include <mach/regs-irq.h>
69#include <mach/regs-gpio.h>
70#include <mach/regs-gpioj.h>
71#include <mach/fb.h>
72
73#include <mach/spi.h>
74#include <mach/spi-gpio.h>
75#include <plat/usb-control.h>
76#include <mach/regs-mem.h>
77#include <mach/hardware.h>
78
79#include <mach/gta02.h>
80
81#include <plat/regs-serial.h>
82#include <plat/nand.h>
83#include <plat/devs.h>
84#include <plat/cpu.h>
85#include <plat/pm.h>
86#include <plat/udc.h>
87#include <plat/gpio-cfg.h>
88#include <plat/iic.h>
89
90static struct pcf50633 *gta02_pcf;
91
92/*
93 * This gets called every 1ms when we paniced.
94 */
95
96static long gta02_panic_blink(long count)
97{
98 long delay = 0;
99 static long last_blink;
100 static char led;
101
102 /* Fast blink: 200ms period. */
103 if (count - last_blink < 100)
104 return 0;
105
106 led ^= 1;
107 gpio_direction_output(GTA02_GPIO_AUX_LED, led);
108
109 last_blink = count;
110
111 return delay;
112}
113
114
115static struct map_desc gta02_iodesc[] __initdata = {
116 {
117 .virtual = 0xe0000000,
118 .pfn = __phys_to_pfn(S3C2410_CS3 + 0x01000000),
119 .length = SZ_1M,
120 .type = MT_DEVICE
121 },
122};
123
124#define UCON (S3C2410_UCON_DEFAULT | S3C2443_UCON_RXERR_IRQEN)
125#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
126#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE)
127
128static struct s3c2410_uartcfg gta02_uartcfgs[] = {
129 [0] = {
130 .hwport = 0,
131 .flags = 0,
132 .ucon = UCON,
133 .ulcon = ULCON,
134 .ufcon = UFCON,
135 },
136 [1] = {
137 .hwport = 1,
138 .flags = 0,
139 .ucon = UCON,
140 .ulcon = ULCON,
141 .ufcon = UFCON,
142 },
143 [2] = {
144 .hwport = 2,
145 .flags = 0,
146 .ucon = UCON,
147 .ulcon = ULCON,
148 .ufcon = UFCON,
149 },
150};
151
152#ifdef CONFIG_CHARGER_PCF50633
153/*
154 * On GTA02 the 1A charger features a 48K resistor to 0V on the ID pin.
155 * We use this to recognize that we can pull 1A from the USB socket.
156 *
157 * These constants are the measured pcf50633 ADC levels with the 1A
158 * charger / 48K resistor, and with no pulldown resistor.
159 */
160
161#define ADC_NOM_CHG_DETECT_1A 6
162#define ADC_NOM_CHG_DETECT_USB 43
163
164static void
165gta02_configure_pmu_for_charger(struct pcf50633 *pcf, void *unused, int res)
166{
167 int ma;
168
169 /* Interpret charger type */
170 if (res < ((ADC_NOM_CHG_DETECT_USB + ADC_NOM_CHG_DETECT_1A) / 2)) {
171
172 /*
173 * Sanity - stop GPO driving out now that we have a 1A charger
174 * GPO controls USB Host power generation on GTA02
175 */
176 pcf50633_gpio_set(pcf, PCF50633_GPO, 0);
177
178 ma = 1000;
179 } else
180 ma = 100;
181
182 pcf50633_mbc_usb_curlim_set(pcf, ma);
183}
184
185static struct delayed_work gta02_charger_work;
186static int gta02_usb_vbus_draw;
187
188static void gta02_charger_worker(struct work_struct *work)
189{
190 if (gta02_usb_vbus_draw) {
191 pcf50633_mbc_usb_curlim_set(gta02_pcf, gta02_usb_vbus_draw);
192 return;
193 }
194
195#ifdef CONFIG_PCF50633_ADC
196 pcf50633_adc_async_read(gta02_pcf,
197 PCF50633_ADCC1_MUX_ADCIN1,
198 PCF50633_ADCC1_AVERAGE_16,
199 gta02_configure_pmu_for_charger,
200 NULL);
201#else
202 /*
203 * If the PCF50633 ADC is disabled we fallback to a
204 * 100mA limit for safety.
205 */
206 pcf50633_mbc_usb_curlim_set(pcf, 100);
207#endif
208}
209
210#define GTA02_CHARGER_CONFIGURE_TIMEOUT ((3000 * HZ) / 1000)
211
212static void gta02_pmu_event_callback(struct pcf50633 *pcf, int irq)
213{
214 if (irq == PCF50633_IRQ_USBINS) {
215 schedule_delayed_work(&gta02_charger_work,
216 GTA02_CHARGER_CONFIGURE_TIMEOUT);
217
218 return;
219 }
220
221 if (irq == PCF50633_IRQ_USBREM) {
222 cancel_delayed_work_sync(&gta02_charger_work);
223 gta02_usb_vbus_draw = 0;
224 }
225}
226
227static void gta02_udc_vbus_draw(unsigned int ma)
228{
229 if (!gta02_pcf)
230 return;
231
232 gta02_usb_vbus_draw = ma;
233
234 schedule_delayed_work(&gta02_charger_work,
235 GTA02_CHARGER_CONFIGURE_TIMEOUT);
236}
237#else /* !CONFIG_CHARGER_PCF50633 */
238#define gta02_pmu_event_callback NULL
239#define gta02_udc_vbus_draw NULL
240#endif
241
242/*
243 * This is called when pc50633 is probed, unfortunately quite late in the
244 * day since it is an I2C bus device. Here we can belatedly define some
245 * platform devices with the advantage that we can mark the pcf50633 as the
246 * parent. This makes them get suspended and resumed with their parent
247 * the pcf50633 still around.
248 */
249
250static void gta02_pmu_attach_child_devices(struct pcf50633 *pcf);
251
252
253static char *gta02_batteries[] = {
254 "battery",
255};
256
257struct pcf50633_platform_data gta02_pcf_pdata = {
258 .resumers = {
259 [0] = PCF50633_INT1_USBINS |
260 PCF50633_INT1_USBREM |
261 PCF50633_INT1_ALARM,
262 [1] = PCF50633_INT2_ONKEYF,
263 [2] = PCF50633_INT3_ONKEY1S,
264 [3] = PCF50633_INT4_LOWSYS |
265 PCF50633_INT4_LOWBAT |
266 PCF50633_INT4_HIGHTMP,
267 },
268
269 .batteries = gta02_batteries,
270 .num_batteries = ARRAY_SIZE(gta02_batteries),
271 .reg_init_data = {
272 [PCF50633_REGULATOR_AUTO] = {
273 .constraints = {
274 .min_uV = 3300000,
275 .max_uV = 3300000,
276 .valid_modes_mask = REGULATOR_MODE_NORMAL,
277 .always_on = 1,
278 .apply_uV = 1,
279 .state_mem = {
280 .enabled = 1,
281 },
282 },
283 },
284 [PCF50633_REGULATOR_DOWN1] = {
285 .constraints = {
286 .min_uV = 1300000,
287 .max_uV = 1600000,
288 .valid_modes_mask = REGULATOR_MODE_NORMAL,
289 .always_on = 1,
290 .apply_uV = 1,
291 },
292 },
293 [PCF50633_REGULATOR_DOWN2] = {
294 .constraints = {
295 .min_uV = 1800000,
296 .max_uV = 1800000,
297 .valid_modes_mask = REGULATOR_MODE_NORMAL,
298 .apply_uV = 1,
299 .always_on = 1,
300 .state_mem = {
301 .enabled = 1,
302 },
303 },
304 },
305 [PCF50633_REGULATOR_HCLDO] = {
306 .constraints = {
307 .min_uV = 2000000,
308 .max_uV = 3300000,
309 .valid_modes_mask = REGULATOR_MODE_NORMAL,
310 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
311 .always_on = 1,
312 },
313 },
314 [PCF50633_REGULATOR_LDO1] = {
315 .constraints = {
316 .min_uV = 3300000,
317 .max_uV = 3300000,
318 .valid_modes_mask = REGULATOR_MODE_NORMAL,
319 .apply_uV = 1,
320 .state_mem = {
321 .enabled = 0,
322 },
323 },
324 },
325 [PCF50633_REGULATOR_LDO2] = {
326 .constraints = {
327 .min_uV = 3300000,
328 .max_uV = 3300000,
329 .valid_modes_mask = REGULATOR_MODE_NORMAL,
330 .apply_uV = 1,
331 },
332 },
333 [PCF50633_REGULATOR_LDO3] = {
334 .constraints = {
335 .min_uV = 3000000,
336 .max_uV = 3000000,
337 .valid_modes_mask = REGULATOR_MODE_NORMAL,
338 .apply_uV = 1,
339 },
340 },
341 [PCF50633_REGULATOR_LDO4] = {
342 .constraints = {
343 .min_uV = 3200000,
344 .max_uV = 3200000,
345 .valid_modes_mask = REGULATOR_MODE_NORMAL,
346 .apply_uV = 1,
347 },
348 },
349 [PCF50633_REGULATOR_LDO5] = {
350 .constraints = {
351 .min_uV = 3000000,
352 .max_uV = 3000000,
353 .valid_modes_mask = REGULATOR_MODE_NORMAL,
354 .apply_uV = 1,
355 .state_mem = {
356 .enabled = 1,
357 },
358 },
359 },
360 [PCF50633_REGULATOR_LDO6] = {
361 .constraints = {
362 .min_uV = 3000000,
363 .max_uV = 3000000,
364 .valid_modes_mask = REGULATOR_MODE_NORMAL,
365 },
366 },
367 [PCF50633_REGULATOR_MEMLDO] = {
368 .constraints = {
369 .min_uV = 1800000,
370 .max_uV = 1800000,
371 .valid_modes_mask = REGULATOR_MODE_NORMAL,
372 .state_mem = {
373 .enabled = 1,
374 },
375 },
376 },
377
378 },
379 .probe_done = gta02_pmu_attach_child_devices,
380 .mbc_event_callback = gta02_pmu_event_callback,
381};
382
383
384/* NOR Flash. */
385
386#define GTA02_FLASH_BASE 0x18000000 /* GCS3 */
387#define GTA02_FLASH_SIZE 0x200000 /* 2MBytes */
388
389static struct physmap_flash_data gta02_nor_flash_data = {
390 .width = 2,
391};
392
393static struct resource gta02_nor_flash_resource = {
394 .start = GTA02_FLASH_BASE,
395 .end = GTA02_FLASH_BASE + GTA02_FLASH_SIZE - 1,
396 .flags = IORESOURCE_MEM,
397};
398
399static struct platform_device gta02_nor_flash = {
400 .name = "physmap-flash",
401 .id = 0,
402 .dev = {
403 .platform_data = &gta02_nor_flash_data,
404 },
405 .resource = &gta02_nor_flash_resource,
406 .num_resources = 1,
407};
408
409
410struct platform_device s3c24xx_pwm_device = {
411 .name = "s3c24xx_pwm",
412 .num_resources = 0,
413};
414
415static struct i2c_board_info gta02_i2c_devs[] __initdata = {
416 {
417 I2C_BOARD_INFO("pcf50633", 0x73),
418 .irq = GTA02_IRQ_PCF50633,
419 .platform_data = &gta02_pcf_pdata,
420 },
421 {
422 I2C_BOARD_INFO("wm8753", 0x1a),
423 },
424};
425
426static struct s3c2410_nand_set gta02_nand_sets[] = {
427 [0] = {
428 /*
429 * This name is also hard-coded in the boot loaders, so
430 * changing it would would require all users to upgrade
431 * their boot loaders, some of which are stored in a NOR
432 * that is considered to be immutable.
433 */
434 .name = "neo1973-nand",
435 .nr_chips = 1,
436 .use_bbt = 1,
437 .force_soft_ecc = 1,
438 },
439};
440
441/*
442 * Choose a set of timings derived from S3C@2442B MCP54
443 * data sheet (K5D2G13ACM-D075 MCP Memory).
444 */
445
446static struct s3c2410_platform_nand gta02_nand_info = {
447 .tacls = 0,
448 .twrph0 = 25,
449 .twrph1 = 15,
450 .nr_sets = ARRAY_SIZE(gta02_nand_sets),
451 .sets = gta02_nand_sets,
452};
453
454
455static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd)
456{
457 switch (cmd) {
458 case S3C2410_UDC_P_ENABLE:
459 pr_debug("%s S3C2410_UDC_P_ENABLE\n", __func__);
460 gpio_direction_output(GTA02_GPIO_USB_PULLUP, 1);
461 break;
462 case S3C2410_UDC_P_DISABLE:
463 pr_debug("%s S3C2410_UDC_P_DISABLE\n", __func__);
464 gpio_direction_output(GTA02_GPIO_USB_PULLUP, 0);
465 break;
466 case S3C2410_UDC_P_RESET:
467 pr_debug("%s S3C2410_UDC_P_RESET\n", __func__);
468 /* FIXME: Do something here. */
469 }
470}
471
472/* Get PMU to set USB current limit accordingly. */
473static struct s3c2410_udc_mach_info gta02_udc_cfg = {
474 .vbus_draw = gta02_udc_vbus_draw,
475 .udc_command = gta02_udc_command,
476
477};
478
479
480
481static void gta02_bl_set_intensity(int intensity)
482{
483 struct pcf50633 *pcf = gta02_pcf;
484 int old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT);
485
486 /* We map 8-bit intensity to 6-bit intensity in hardware. */
487 intensity >>= 2;
488
489 /*
490 * This can happen during, eg, print of panic on blanked console,
491 * but we can't service i2c without interrupts active, so abort.
492 */
493 if (in_atomic()) {
494 printk(KERN_ERR "gta02_bl_set_intensity called while atomic\n");
495 return;
496 }
497
498 old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT);
499 if (intensity == old_intensity)
500 return;
501
502 /* We can't do this anywhere else. */
503 pcf50633_reg_write(pcf, PCF50633_REG_LEDDIM, 5);
504
505 if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3))
506 old_intensity = 0;
507
508 /*
509 * The PCF50633 cannot handle LEDOUT = 0 (datasheet p60)
510 * if seen, you have to re-enable the LED unit.
511 */
512 if (!intensity || !old_intensity)
513 pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 0);
514
515 /* Illegal to set LEDOUT to 0. */
516 if (!intensity)
517 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, 2);
518 else
519 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f,
520 intensity);
521
522 if (intensity)
523 pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 2);
524
525}
526
527static struct generic_bl_info gta02_bl_info = {
528 .name = "gta02-bl",
529 .max_intensity = 0xff,
530 .default_intensity = 0xff,
531 .set_bl_intensity = gta02_bl_set_intensity,
532};
533
534static struct platform_device gta02_bl_dev = {
535 .name = "generic-bl",
536 .id = 1,
537 .dev = {
538 .platform_data = &gta02_bl_info,
539 },
540};
541
542
543
544/* USB */
545static struct s3c2410_hcd_info gta02_usb_info = {
546 .port[0] = {
547 .flags = S3C_HCDFLG_USED,
548 },
549 .port[1] = {
550 .flags = 0,
551 },
552};
553
554
555static void __init gta02_map_io(void)
556{
557 s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
558 s3c24xx_init_clocks(12000000);
559 s3c24xx_init_uarts(gta02_uartcfgs, ARRAY_SIZE(gta02_uartcfgs));
560}
561
562
563/* These are the guys that don't need to be children of PMU. */
564
565static struct platform_device *gta02_devices[] __initdata = {
566 &s3c_device_usb,
567 &s3c_device_wdt,
568 &s3c_device_sdi,
569 &s3c_device_usbgadget,
570 &s3c_device_nand,
571 &gta02_nor_flash,
572 &s3c24xx_pwm_device,
573 &s3c_device_iis,
574 &s3c_device_i2c0,
575};
576
577/* These guys DO need to be children of PMU. */
578
579static struct platform_device *gta02_devices_pmu_children[] = {
580 &gta02_bl_dev,
581};
582
583
584/*
585 * This is called when pc50633 is probed, quite late in the day since it is an
586 * I2C bus device. Here we can define platform devices with the advantage that
587 * we can mark the pcf50633 as the parent. This makes them get suspended and
588 * resumed with their parent the pcf50633 still around. All devices whose
589 * operation depends on something from pcf50633 must have this relationship
590 * made explicit like this, or suspend and resume will become an unreliable
591 * hellworld.
592 */
593
594static void gta02_pmu_attach_child_devices(struct pcf50633 *pcf)
595{
596 int n;
597
598 /* Grab a copy of the now probed PMU pointer. */
599 gta02_pcf = pcf;
600
601 for (n = 0; n < ARRAY_SIZE(gta02_devices_pmu_children); n++)
602 gta02_devices_pmu_children[n]->dev.parent = pcf->dev;
603
604 platform_add_devices(gta02_devices_pmu_children,
605 ARRAY_SIZE(gta02_devices_pmu_children));
606}
607
608static void gta02_poweroff(void)
609{
610 pcf50633_reg_set_bit_mask(gta02_pcf, PCF50633_REG_OOCSHDWN, 1, 1);
611}
612
613static void __init gta02_machine_init(void)
614{
615 /* Set the panic callback to make AUX LED blink at ~5Hz. */
616 panic_blink = gta02_panic_blink;
617
618 s3c_pm_init();
619
620#ifdef CONFIG_CHARGER_PCF50633
621 INIT_DELAYED_WORK(&gta02_charger_work, gta02_charger_worker);
622#endif
623
624 s3c_device_usb.dev.platform_data = &gta02_usb_info;
625 s3c_device_nand.dev.platform_data = &gta02_nand_info;
626
627 s3c24xx_udc_set_platdata(&gta02_udc_cfg);
628 s3c_i2c0_set_platdata(NULL);
629
630 i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
631
632 platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
633 pm_power_off = gta02_poweroff;
634}
635
636
637MACHINE_START(NEO1973_GTA02, "GTA02")
638 /* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
639 .phys_io = S3C2410_PA_UART,
640 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
641 .boot_params = S3C2410_SDRAM_PA + 0x100,
642 .map_io = gta02_map_io,
643 .init_irq = s3c24xx_init_irq,
644 .init_machine = gta02_machine_init,
645 .timer = &s3c24xx_timer,
646MACHINE_END
diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile
index 610651455a78..74bb7cb5da49 100644
--- a/arch/arm/plat-s3c/Makefile
+++ b/arch/arm/plat-s3c/Makefile
@@ -34,6 +34,7 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
34obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o 34obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o
35obj-y += dev-i2c0.o 35obj-y += dev-i2c0.o
36obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o 36obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
37obj-$(CONFIG_SND_S3C24XX_SOC) += dev-audio.o
37obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o 38obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o
38obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o 39obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o
39obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o 40obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o
diff --git a/arch/arm/plat-s3c/dev-audio.c b/arch/arm/plat-s3c/dev-audio.c
new file mode 100644
index 000000000000..1322beb40dd7
--- /dev/null
+++ b/arch/arm/plat-s3c/dev-audio.c
@@ -0,0 +1,68 @@
1/* linux/arch/arm/plat-s3c/dev-audio.c
2 *
3 * Copyright 2009 Wolfson Microelectronics
4 * Mark Brown <broonie@opensource.wolfsonmicro.com>
5 *
6
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#include <linux/kernel.h>
13#include <linux/string.h>
14#include <linux/platform_device.h>
15
16#include <mach/irqs.h>
17#include <mach/map.h>
18
19#include <plat/devs.h>
20
21
22static struct resource s3c64xx_iis0_resource[] = {
23 [0] = {
24 .start = S3C64XX_PA_IIS0,
25 .end = S3C64XX_PA_IIS0 + 0x100 - 1,
26 .flags = IORESOURCE_MEM,
27 },
28};
29
30struct platform_device s3c64xx_device_iis0 = {
31 .name = "s3c64xx-iis",
32 .id = 0,
33 .num_resources = ARRAY_SIZE(s3c64xx_iis0_resource),
34 .resource = s3c64xx_iis0_resource,
35};
36EXPORT_SYMBOL(s3c64xx_device_iis0);
37
38static struct resource s3c64xx_iis1_resource[] = {
39 [0] = {
40 .start = S3C64XX_PA_IIS1,
41 .end = S3C64XX_PA_IIS1 + 0x100 - 1,
42 .flags = IORESOURCE_MEM,
43 },
44};
45
46struct platform_device s3c64xx_device_iis1 = {
47 .name = "s3c64xx-iis",
48 .id = 1,
49 .num_resources = ARRAY_SIZE(s3c64xx_iis1_resource),
50 .resource = s3c64xx_iis1_resource,
51};
52EXPORT_SYMBOL(s3c64xx_device_iis1);
53
54static struct resource s3c64xx_iisv4_resource[] = {
55 [0] = {
56 .start = S3C64XX_PA_IISV4,
57 .end = S3C64XX_PA_IISV4 + 0x100 - 1,
58 .flags = IORESOURCE_MEM,
59 },
60};
61
62struct platform_device s3c64xx_device_iisv4 = {
63 .name = "s3c64xx-iis-v4",
64 .id = -1,
65 .num_resources = ARRAY_SIZE(s3c64xx_iisv4_resource),
66 .resource = s3c64xx_iisv4_resource,
67};
68EXPORT_SYMBOL(s3c64xx_device_iisv4);
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
index a0b6768fddcf..b5b9c4d46e9a 100644
--- a/arch/arm/plat-s3c/include/plat/devs.h
+++ b/arch/arm/plat-s3c/include/plat/devs.h
@@ -24,13 +24,16 @@ extern struct platform_device *s3c24xx_uart_src[];
24 24
25extern struct platform_device s3c_device_timer[]; 25extern struct platform_device s3c_device_timer[];
26 26
27extern struct platform_device s3c64xx_device_iis0;
28extern struct platform_device s3c64xx_device_iis1;
29extern struct platform_device s3c64xx_device_iisv4;
30
27extern struct platform_device s3c_device_fb; 31extern struct platform_device s3c_device_fb;
28extern struct platform_device s3c_device_usb; 32extern struct platform_device s3c_device_usb;
29extern struct platform_device s3c_device_lcd; 33extern struct platform_device s3c_device_lcd;
30extern struct platform_device s3c_device_wdt; 34extern struct platform_device s3c_device_wdt;
31extern struct platform_device s3c_device_i2c0; 35extern struct platform_device s3c_device_i2c0;
32extern struct platform_device s3c_device_i2c1; 36extern struct platform_device s3c_device_i2c1;
33extern struct platform_device s3c_device_iis;
34extern struct platform_device s3c_device_rtc; 37extern struct platform_device s3c_device_rtc;
35extern struct platform_device s3c_device_adc; 38extern struct platform_device s3c_device_adc;
36extern struct platform_device s3c_device_sdi; 39extern struct platform_device s3c_device_sdi;
diff --git a/arch/arm/plat-s3c64xx/Makefile b/arch/arm/plat-s3c64xx/Makefile
index 2ed5df34f9ea..3c8882cd6268 100644
--- a/arch/arm/plat-s3c64xx/Makefile
+++ b/arch/arm/plat-s3c64xx/Makefile
@@ -23,6 +23,7 @@ obj-y += gpiolib.o
23 23
24obj-$(CONFIG_CPU_S3C6400_INIT) += s3c6400-init.o 24obj-$(CONFIG_CPU_S3C6400_INIT) += s3c6400-init.o
25obj-$(CONFIG_CPU_S3C6400_CLOCK) += s3c6400-clock.o 25obj-$(CONFIG_CPU_S3C6400_CLOCK) += s3c6400-clock.o
26obj-$(CONFIG_CPU_FREQ_S3C64XX) += cpufreq.o
26 27
27# PM support 28# PM support
28 29
diff --git a/arch/arm/plat-s3c64xx/cpufreq.c b/arch/arm/plat-s3c64xx/cpufreq.c
new file mode 100644
index 000000000000..e6e0843215df
--- /dev/null
+++ b/arch/arm/plat-s3c64xx/cpufreq.c
@@ -0,0 +1,262 @@
1/* linux/arch/arm/plat-s3c64xx/cpufreq.c
2 *
3 * Copyright 2009 Wolfson Microelectronics plc
4 *
5 * S3C64xx CPUfreq Support
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#include <linux/kernel.h>
13#include <linux/types.h>
14#include <linux/init.h>
15#include <linux/cpufreq.h>
16#include <linux/clk.h>
17#include <linux/err.h>
18#include <linux/regulator/consumer.h>
19
20static struct clk *armclk;
21static struct regulator *vddarm;
22
23#ifdef CONFIG_CPU_S3C6410
24struct s3c64xx_dvfs {
25 unsigned int vddarm_min;
26 unsigned int vddarm_max;
27};
28
29static struct s3c64xx_dvfs s3c64xx_dvfs_table[] = {
30 [0] = { 1000000, 1000000 },
31 [1] = { 1000000, 1050000 },
32 [2] = { 1050000, 1100000 },
33 [3] = { 1050000, 1150000 },
34 [4] = { 1250000, 1350000 },
35};
36
37static struct cpufreq_frequency_table s3c64xx_freq_table[] = {
38 { 0, 66000 },
39 { 0, 133000 },
40 { 1, 222000 },
41 { 1, 266000 },
42 { 2, 333000 },
43 { 2, 400000 },
44 { 3, 532000 },
45 { 3, 533000 },
46 { 4, 667000 },
47 { 0, CPUFREQ_TABLE_END },
48};
49#endif
50
51static int s3c64xx_cpufreq_verify_speed(struct cpufreq_policy *policy)
52{
53 if (policy->cpu != 0)
54 return -EINVAL;
55
56 return cpufreq_frequency_table_verify(policy, s3c64xx_freq_table);
57}
58
59static unsigned int s3c64xx_cpufreq_get_speed(unsigned int cpu)
60{
61 if (cpu != 0)
62 return 0;
63
64 return clk_get_rate(armclk) / 1000;
65}
66
67static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
68 unsigned int target_freq,
69 unsigned int relation)
70{
71 int ret;
72 unsigned int i;
73 struct cpufreq_freqs freqs;
74 struct s3c64xx_dvfs *dvfs;
75
76 ret = cpufreq_frequency_table_target(policy, s3c64xx_freq_table,
77 target_freq, relation, &i);
78 if (ret != 0)
79 return ret;
80
81 freqs.cpu = 0;
82 freqs.old = clk_get_rate(armclk) / 1000;
83 freqs.new = s3c64xx_freq_table[i].frequency;
84 freqs.flags = 0;
85 dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[i].index];
86
87 if (freqs.old == freqs.new)
88 return 0;
89
90 pr_debug("cpufreq: Transition %d-%dkHz\n", freqs.old, freqs.new);
91
92 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
93
94#ifdef CONFIG_REGULATOR
95 if (vddarm && freqs.new > freqs.old) {
96 ret = regulator_set_voltage(vddarm,
97 dvfs->vddarm_min,
98 dvfs->vddarm_max);
99 if (ret != 0) {
100 pr_err("cpufreq: Failed to set VDDARM for %dkHz: %d\n",
101 freqs.new, ret);
102 goto err;
103 }
104 }
105#endif
106
107 ret = clk_set_rate(armclk, freqs.new * 1000);
108 if (ret < 0) {
109 pr_err("cpufreq: Failed to set rate %dkHz: %d\n",
110 freqs.new, ret);
111 goto err;
112 }
113
114#ifdef CONFIG_REGULATOR
115 if (vddarm && freqs.new < freqs.old) {
116 ret = regulator_set_voltage(vddarm,
117 dvfs->vddarm_min,
118 dvfs->vddarm_max);
119 if (ret != 0) {
120 pr_err("cpufreq: Failed to set VDDARM for %dkHz: %d\n",
121 freqs.new, ret);
122 goto err_clk;
123 }
124 }
125#endif
126
127 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
128
129 pr_debug("cpufreq: Set actual frequency %lukHz\n",
130 clk_get_rate(armclk) / 1000);
131
132 return 0;
133
134err_clk:
135 if (clk_set_rate(armclk, freqs.old * 1000) < 0)
136 pr_err("Failed to restore original clock rate\n");
137err:
138 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
139
140 return ret;
141}
142
143#ifdef CONFIG_REGULATOR
144static void __init s3c64xx_cpufreq_constrain_voltages(void)
145{
146 int count, v, i, found;
147 struct cpufreq_frequency_table *freq;
148 struct s3c64xx_dvfs *dvfs;
149
150 count = regulator_count_voltages(vddarm);
151 if (count < 0) {
152 pr_err("cpufreq: Unable to check supported voltages\n");
153 return;
154 }
155
156 freq = s3c64xx_freq_table;
157 while (freq->frequency != CPUFREQ_TABLE_END) {
158 if (freq->frequency == CPUFREQ_ENTRY_INVALID)
159 continue;
160
161 dvfs = &s3c64xx_dvfs_table[freq->index];
162 found = 0;
163
164 for (i = 0; i < count; i++) {
165 v = regulator_list_voltage(vddarm, i);
166 if (v >= dvfs->vddarm_min && v <= dvfs->vddarm_max)
167 found = 1;
168 }
169
170 if (!found) {
171 pr_debug("cpufreq: %dkHz unsupported by regulator\n",
172 freq->frequency);
173 freq->frequency = CPUFREQ_ENTRY_INVALID;
174 }
175
176 freq++;
177 }
178}
179#endif
180
181static int __init s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy)
182{
183 int ret;
184 struct cpufreq_frequency_table *freq;
185
186 if (policy->cpu != 0)
187 return -EINVAL;
188
189 if (s3c64xx_freq_table == NULL) {
190 pr_err("cpufreq: No frequency information for this CPU\n");
191 return -ENODEV;
192 }
193
194 armclk = clk_get(NULL, "armclk");
195 if (IS_ERR(armclk)) {
196 pr_err("cpufreq: Unable to obtain ARMCLK: %ld\n",
197 PTR_ERR(armclk));
198 return PTR_ERR(armclk);
199 }
200
201#ifdef CONFIG_REGULATOR
202 vddarm = regulator_get(NULL, "vddarm");
203 if (IS_ERR(vddarm)) {
204 ret = PTR_ERR(vddarm);
205 pr_err("cpufreq: Failed to obtain VDDARM: %d\n", ret);
206 pr_err("cpufreq: Only frequency scaling available\n");
207 vddarm = NULL;
208 } else {
209 s3c64xx_cpufreq_constrain_voltages();
210 }
211#endif
212
213 freq = s3c64xx_freq_table;
214 while (freq->frequency != CPUFREQ_TABLE_END) {
215 unsigned long r;
216
217 /* Check for frequencies we can generate */
218 r = clk_round_rate(armclk, freq->frequency * 1000);
219 r /= 1000;
220 if (r != freq->frequency)
221 freq->frequency = CPUFREQ_ENTRY_INVALID;
222
223 /* If we have no regulator then assume startup
224 * frequency is the maximum we can support. */
225 if (!vddarm && freq->frequency > s3c64xx_cpufreq_get_speed(0))
226 freq->frequency = CPUFREQ_ENTRY_INVALID;
227
228 freq++;
229 }
230
231 policy->cur = clk_get_rate(armclk) / 1000;
232
233 /* Pick a conservative guess in ns: we'll need ~1 I2C/SPI
234 * write plus clock reprogramming. */
235 policy->cpuinfo.transition_latency = 2 * 1000 * 1000;
236
237 ret = cpufreq_frequency_table_cpuinfo(policy, s3c64xx_freq_table);
238 if (ret != 0) {
239 pr_err("cpufreq: Failed to configure frequency table: %d\n",
240 ret);
241 regulator_put(vddarm);
242 clk_put(armclk);
243 }
244
245 return ret;
246}
247
248static struct cpufreq_driver s3c64xx_cpufreq_driver = {
249 .owner = THIS_MODULE,
250 .flags = 0,
251 .verify = s3c64xx_cpufreq_verify_speed,
252 .target = s3c64xx_cpufreq_set_target,
253 .get = s3c64xx_cpufreq_get_speed,
254 .init = s3c64xx_cpufreq_driver_init,
255 .name = "s3c",
256};
257
258static int __init s3c64xx_cpufreq_init(void)
259{
260 return cpufreq_register_driver(&s3c64xx_cpufreq_driver);
261}
262module_init(s3c64xx_cpufreq_init);