diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-09-07 02:19:51 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-09-07 02:19:51 -0400 |
commit | a1922ed661ab2c1637d0b10cde933bd9cd33d965 (patch) | |
tree | 0f1777542b385ebefd30b3586d830fd8ed6fda5b /arch/arm | |
parent | 75e33751ca8bbb72dd6f1a74d2810ddc8cbe4bdf (diff) | |
parent | d28daf923ac5e4a0d7cecebae56f3e339189366b (diff) |
Merge branch 'tracing/core' into tracing/hw-breakpoints
Conflicts:
arch/Kconfig
kernel/trace/trace.h
Merge reason: resolve the conflicts, plus adopt to the new
ring-buffer APIs.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/arm')
178 files changed, 8398 insertions, 1227 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 | ||
1242 | menu "CPU Power Management" | 1242 | menu "CPU Power Management" |
1243 | 1243 | ||
1244 | if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA) | 1244 | if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA || ARCH_S3C64XX) |
1245 | 1245 | ||
1246 | source "drivers/cpufreq/Kconfig" | 1246 | source "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 | ||
1275 | config CPU_FREQ_S3C64XX | ||
1276 | bool "CPUfreq support for Samsung S3C64XX CPUs" | ||
1277 | depends on CPU_FREQ && CPU_S3C6410 | ||
1278 | |||
1275 | endif | 1279 | endif |
1276 | 1280 | ||
1277 | source "drivers/cpuidle/Kconfig" | 1281 | source "drivers/cpuidle/Kconfig" |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index a71fd941ade7..a89e4734b8f0 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -99,14 +99,6 @@ config DEBUG_CLPS711X_UART2 | |||
99 | output to the second serial port on these devices. Saying N will | 99 | output to the second serial port on these devices. Saying N will |
100 | cause the debug messages to appear on the first serial port. | 100 | cause the debug messages to appear on the first serial port. |
101 | 101 | ||
102 | config DEBUG_S3C_PORT | ||
103 | depends on DEBUG_LL && PLAT_S3C | ||
104 | bool "Kernel low-level debugging messages via S3C UART" | ||
105 | help | ||
106 | Say Y here if you want debug print routines to go to one of the | ||
107 | S3C internal UARTs. The chosen UART must have been configured | ||
108 | before it is used. | ||
109 | |||
110 | config DEBUG_S3C_UART | 102 | config DEBUG_S3C_UART |
111 | depends on PLAT_S3C | 103 | depends on PLAT_S3C |
112 | int "S3C UART to use for low-level debug" | 104 | int "S3C UART to use for low-level debug" |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 01d49be3b2ca..4515728c5345 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -674,6 +674,15 @@ proc_types: | |||
674 | b __armv4_mmu_cache_off | 674 | b __armv4_mmu_cache_off |
675 | b __armv5tej_mmu_cache_flush | 675 | b __armv5tej_mmu_cache_flush |
676 | 676 | ||
677 | #ifdef CONFIG_CPU_FEROCEON_OLD_ID | ||
678 | /* this conflicts with the standard ARMv5TE entry */ | ||
679 | .long 0x41009260 @ Old Feroceon | ||
680 | .long 0xff00fff0 | ||
681 | b __armv4_mmu_cache_on | ||
682 | b __armv4_mmu_cache_off | ||
683 | b __armv5tej_mmu_cache_flush | ||
684 | #endif | ||
685 | |||
677 | .word 0x66015261 @ FA526 | 686 | .word 0x66015261 @ FA526 |
678 | .word 0xff01fff1 | 687 | .word 0xff01fff1 |
679 | b __fa526_cache_on | 688 | b __fa526_cache_on |
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 9e6e512f0117..17153b54613b 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -29,7 +29,6 @@ unsigned int __machine_arch_type; | |||
29 | 29 | ||
30 | static void putstr(const char *ptr); | 30 | static void putstr(const char *ptr); |
31 | 31 | ||
32 | #include <linux/compiler.h> | ||
33 | #include <mach/uncompress.h> | 32 | #include <mach/uncompress.h> |
34 | 33 | ||
35 | #ifdef CONFIG_DEBUG_ICEDCC | 34 | #ifdef CONFIG_DEBUG_ICEDCC |
diff --git a/arch/arm/common/clkdev.c b/arch/arm/common/clkdev.c index f37afd9422f3..aae5bc01acc8 100644 --- a/arch/arm/common/clkdev.c +++ b/arch/arm/common/clkdev.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/string.h> | 18 | #include <linux/string.h> |
19 | #include <linux/mutex.h> | 19 | #include <linux/mutex.h> |
20 | #include <linux/clk.h> | ||
20 | 21 | ||
21 | #include <asm/clkdev.h> | 22 | #include <asm/clkdev.h> |
22 | #include <mach/clkdev.h> | 23 | #include <mach/clkdev.h> |
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index 664c7b8b1ba8..337741f734ac 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c | |||
@@ -117,7 +117,7 @@ static int gic_set_cpu(unsigned int irq, const struct cpumask *mask_val) | |||
117 | u32 val; | 117 | u32 val; |
118 | 118 | ||
119 | spin_lock(&irq_controller_lock); | 119 | spin_lock(&irq_controller_lock); |
120 | irq_desc[irq].cpu = cpu; | 120 | irq_desc[irq].node = cpu; |
121 | val = readl(reg) & ~(0xff << shift); | 121 | val = readl(reg) & ~(0xff << shift); |
122 | val |= 1 << (cpu + shift); | 122 | val |= 1 << (cpu + shift); |
123 | writel(val, reg); | 123 | writel(val, reg); |
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/kb9202_defconfig b/arch/arm/configs/kb9202_defconfig index 8e74c66f239d..605a8462f172 100644 --- a/arch/arm/configs/kb9202_defconfig +++ b/arch/arm/configs/kb9202_defconfig | |||
@@ -1,109 +1,246 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.13-rc2 | 3 | # Linux kernel version: 2.6.30-rc8 |
4 | # Sun Aug 14 19:26:59 2005 | 4 | # Wed Jun 3 13:52:33 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
7 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | 12 | # CONFIG_NO_IOPORT is not set |
13 | CONFIG_GENERIC_HARDIRQS=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | ||
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
16 | CONFIG_LOCKDEP_SUPPORT=y | ||
17 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
18 | CONFIG_HARDIRQS_SW_RESEND=y | ||
19 | CONFIG_GENERIC_IRQ_PROBE=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 24 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
26 | CONFIG_VECTORS_BASE=0xffff0000 | ||
27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 28 | ||
12 | # | 29 | # |
13 | # Code maturity level options | 30 | # General setup |
14 | # | 31 | # |
15 | # CONFIG_EXPERIMENTAL is not set | 32 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 33 | CONFIG_BROKEN_ON_SMP=y |
34 | CONFIG_LOCK_KERNEL=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 35 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | 36 | CONFIG_LOCALVERSION="" |
37 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | # CONFIG_SWAP is not set | 38 | # CONFIG_SWAP is not set |
25 | # CONFIG_SYSVIPC is not set | 39 | CONFIG_SYSVIPC=y |
26 | # CONFIG_BSD_PROCESS_ACCT is not set | 40 | CONFIG_SYSVIPC_SYSCTL=y |
41 | CONFIG_POSIX_MQUEUE=y | ||
42 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
43 | CONFIG_BSD_PROCESS_ACCT=y | ||
44 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
45 | # CONFIG_TASKSTATS is not set | ||
46 | CONFIG_AUDIT=y | ||
47 | |||
48 | # | ||
49 | # RCU Subsystem | ||
50 | # | ||
51 | CONFIG_CLASSIC_RCU=y | ||
52 | # CONFIG_TREE_RCU is not set | ||
53 | # CONFIG_PREEMPT_RCU is not set | ||
54 | # CONFIG_TREE_RCU_TRACE is not set | ||
55 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
56 | CONFIG_IKCONFIG=y | ||
57 | CONFIG_IKCONFIG_PROC=y | ||
58 | CONFIG_LOG_BUF_SHIFT=17 | ||
59 | # CONFIG_GROUP_SCHED is not set | ||
60 | # CONFIG_CGROUPS is not set | ||
61 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
62 | # CONFIG_RELAY is not set | ||
63 | CONFIG_NAMESPACES=y | ||
64 | # CONFIG_UTS_NS is not set | ||
65 | # CONFIG_IPC_NS is not set | ||
66 | # CONFIG_USER_NS is not set | ||
67 | # CONFIG_PID_NS is not set | ||
68 | # CONFIG_NET_NS is not set | ||
69 | CONFIG_BLK_DEV_INITRD=y | ||
70 | CONFIG_INITRAMFS_SOURCE="" | ||
71 | CONFIG_RD_GZIP=y | ||
72 | CONFIG_RD_BZIP2=y | ||
73 | CONFIG_RD_LZMA=y | ||
74 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
27 | CONFIG_SYSCTL=y | 75 | CONFIG_SYSCTL=y |
28 | # CONFIG_AUDIT is not set | 76 | CONFIG_ANON_INODES=y |
29 | CONFIG_HOTPLUG=y | ||
30 | # CONFIG_KOBJECT_UEVENT is not set | ||
31 | # CONFIG_IKCONFIG is not set | ||
32 | # CONFIG_EMBEDDED is not set | 77 | # CONFIG_EMBEDDED is not set |
78 | CONFIG_UID16=y | ||
79 | CONFIG_SYSCTL_SYSCALL=y | ||
33 | CONFIG_KALLSYMS=y | 80 | CONFIG_KALLSYMS=y |
34 | # CONFIG_KALLSYMS_ALL is not set | 81 | # CONFIG_KALLSYMS_ALL is not set |
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 82 | CONFIG_KALLSYMS_EXTRA_PASS=y |
83 | # CONFIG_STRIP_ASM_SYMS is not set | ||
84 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_PRINTK=y | 85 | CONFIG_PRINTK=y |
37 | CONFIG_BUG=y | 86 | CONFIG_BUG=y |
87 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | 88 | CONFIG_BASE_FULL=y |
39 | CONFIG_FUTEX=y | 89 | CONFIG_FUTEX=y |
40 | CONFIG_EPOLL=y | 90 | CONFIG_EPOLL=y |
41 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 91 | CONFIG_SIGNALFD=y |
92 | CONFIG_TIMERFD=y | ||
93 | CONFIG_EVENTFD=y | ||
42 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
43 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 95 | CONFIG_AIO=y |
44 | CONFIG_CC_ALIGN_LABELS=0 | 96 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LOOPS=0 | 97 | CONFIG_SLUB_DEBUG=y |
46 | CONFIG_CC_ALIGN_JUMPS=0 | 98 | CONFIG_COMPAT_BRK=y |
47 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_SLAB is not set |
100 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | ||
102 | # CONFIG_PROFILING is not set | ||
103 | CONFIG_TRACEPOINTS=y | ||
104 | CONFIG_MARKERS=y | ||
105 | CONFIG_HAVE_OPROFILE=y | ||
106 | # CONFIG_KPROBES is not set | ||
107 | CONFIG_HAVE_KPROBES=y | ||
108 | CONFIG_HAVE_KRETPROBES=y | ||
109 | CONFIG_HAVE_CLK=y | ||
110 | # CONFIG_SLOW_WORK is not set | ||
111 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
112 | CONFIG_SLABINFO=y | ||
113 | CONFIG_RT_MUTEXES=y | ||
48 | CONFIG_BASE_SMALL=0 | 114 | CONFIG_BASE_SMALL=0 |
115 | CONFIG_MODULES=y | ||
116 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
117 | CONFIG_MODULE_UNLOAD=y | ||
118 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
119 | CONFIG_MODVERSIONS=y | ||
120 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
121 | CONFIG_BLOCK=y | ||
122 | # CONFIG_LBD is not set | ||
123 | # CONFIG_BLK_DEV_BSG is not set | ||
124 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
49 | 125 | ||
50 | # | 126 | # |
51 | # Loadable module support | 127 | # IO Schedulers |
52 | # | 128 | # |
53 | CONFIG_MODULES=y | 129 | CONFIG_IOSCHED_NOOP=y |
54 | CONFIG_MODULE_UNLOAD=y | 130 | # CONFIG_IOSCHED_AS is not set |
55 | CONFIG_OBSOLETE_MODPARM=y | 131 | # CONFIG_IOSCHED_DEADLINE is not set |
56 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 132 | CONFIG_IOSCHED_CFQ=y |
57 | CONFIG_KMOD=y | 133 | # CONFIG_DEFAULT_AS is not set |
134 | # CONFIG_DEFAULT_DEADLINE is not set | ||
135 | CONFIG_DEFAULT_CFQ=y | ||
136 | # CONFIG_DEFAULT_NOOP is not set | ||
137 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
138 | # CONFIG_FREEZER is not set | ||
58 | 139 | ||
59 | # | 140 | # |
60 | # System Type | 141 | # System Type |
61 | # | 142 | # |
62 | # CONFIG_ARCH_CLPS7500 is not set | 143 | # CONFIG_ARCH_AAEC2000 is not set |
144 | # CONFIG_ARCH_INTEGRATOR is not set | ||
145 | # CONFIG_ARCH_REALVIEW is not set | ||
146 | # CONFIG_ARCH_VERSATILE is not set | ||
147 | CONFIG_ARCH_AT91=y | ||
63 | # CONFIG_ARCH_CLPS711X is not set | 148 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | ||
65 | # CONFIG_ARCH_EBSA110 is not set | 149 | # CONFIG_ARCH_EBSA110 is not set |
150 | # CONFIG_ARCH_EP93XX is not set | ||
151 | # CONFIG_ARCH_GEMINI is not set | ||
66 | # CONFIG_ARCH_FOOTBRIDGE is not set | 152 | # CONFIG_ARCH_FOOTBRIDGE is not set |
67 | # CONFIG_ARCH_INTEGRATOR is not set | 153 | # CONFIG_ARCH_NETX is not set |
68 | # CONFIG_ARCH_IOP3XX is not set | 154 | # CONFIG_ARCH_H720X is not set |
69 | # CONFIG_ARCH_IXP4XX is not set | 155 | # CONFIG_ARCH_IMX is not set |
156 | # CONFIG_ARCH_IOP13XX is not set | ||
157 | # CONFIG_ARCH_IOP32X is not set | ||
158 | # CONFIG_ARCH_IOP33X is not set | ||
159 | # CONFIG_ARCH_IXP23XX is not set | ||
70 | # CONFIG_ARCH_IXP2000 is not set | 160 | # CONFIG_ARCH_IXP2000 is not set |
161 | # CONFIG_ARCH_IXP4XX is not set | ||
71 | # CONFIG_ARCH_L7200 is not set | 162 | # CONFIG_ARCH_L7200 is not set |
163 | # CONFIG_ARCH_KIRKWOOD is not set | ||
164 | # CONFIG_ARCH_KS8695 is not set | ||
165 | # CONFIG_ARCH_NS9XXX is not set | ||
166 | # CONFIG_ARCH_LOKI is not set | ||
167 | # CONFIG_ARCH_MV78XX0 is not set | ||
168 | # CONFIG_ARCH_MXC is not set | ||
169 | # CONFIG_ARCH_ORION5X is not set | ||
170 | # CONFIG_ARCH_PNX4008 is not set | ||
72 | # CONFIG_ARCH_PXA is not set | 171 | # CONFIG_ARCH_PXA is not set |
172 | # CONFIG_ARCH_MMP is not set | ||
73 | # CONFIG_ARCH_RPC is not set | 173 | # CONFIG_ARCH_RPC is not set |
74 | # CONFIG_ARCH_SA1100 is not set | 174 | # CONFIG_ARCH_SA1100 is not set |
75 | # CONFIG_ARCH_S3C2410 is not set | 175 | # CONFIG_ARCH_S3C2410 is not set |
176 | # CONFIG_ARCH_S3C64XX is not set | ||
76 | # CONFIG_ARCH_SHARK is not set | 177 | # CONFIG_ARCH_SHARK is not set |
77 | # CONFIG_ARCH_LH7A40X is not set | 178 | # CONFIG_ARCH_LH7A40X is not set |
179 | # CONFIG_ARCH_DAVINCI is not set | ||
78 | # CONFIG_ARCH_OMAP is not set | 180 | # CONFIG_ARCH_OMAP is not set |
79 | # CONFIG_ARCH_VERSATILE is not set | 181 | # CONFIG_ARCH_MSM is not set |
80 | # CONFIG_ARCH_IMX is not set | 182 | # CONFIG_ARCH_W90X900 is not set |
81 | # CONFIG_ARCH_H720X is not set | 183 | |
82 | # CONFIG_ARCH_AAEC2000 is not set | 184 | # |
83 | CONFIG_ARCH_AT91=y | 185 | # Atmel AT91 System-on-Chip |
186 | # | ||
84 | CONFIG_ARCH_AT91RM9200=y | 187 | CONFIG_ARCH_AT91RM9200=y |
188 | # CONFIG_ARCH_AT91SAM9260 is not set | ||
189 | # CONFIG_ARCH_AT91SAM9261 is not set | ||
190 | # CONFIG_ARCH_AT91SAM9263 is not set | ||
191 | # CONFIG_ARCH_AT91SAM9RL is not set | ||
192 | # CONFIG_ARCH_AT91SAM9G20 is not set | ||
193 | # CONFIG_ARCH_AT91CAP9 is not set | ||
194 | # CONFIG_ARCH_AT91X40 is not set | ||
195 | CONFIG_AT91_PMC_UNIT=y | ||
85 | 196 | ||
86 | # | 197 | # |
87 | # AT91RM9200 Implementations | 198 | # AT91RM9200 Board Type |
88 | # | 199 | # |
200 | # CONFIG_MACH_ONEARM is not set | ||
89 | # CONFIG_ARCH_AT91RM9200DK is not set | 201 | # CONFIG_ARCH_AT91RM9200DK is not set |
90 | # CONFIG_MACH_AT91RM9200EK is not set | 202 | # CONFIG_MACH_AT91RM9200EK is not set |
91 | # CONFIG_MACH_CSB337 is not set | 203 | # CONFIG_MACH_CSB337 is not set |
92 | # CONFIG_MACH_CSB637 is not set | 204 | # CONFIG_MACH_CSB637 is not set |
93 | # CONFIG_MACH_CARMEVA is not set | 205 | # CONFIG_MACH_CARMEVA is not set |
206 | # CONFIG_MACH_ATEB9200 is not set | ||
94 | CONFIG_MACH_KB9200=y | 207 | CONFIG_MACH_KB9200=y |
208 | # CONFIG_MACH_PICOTUX2XX is not set | ||
209 | # CONFIG_MACH_KAFA is not set | ||
210 | # CONFIG_MACH_ECBAT91 is not set | ||
211 | # CONFIG_MACH_YL9200 is not set | ||
212 | |||
213 | # | ||
214 | # AT91 Board Options | ||
215 | # | ||
216 | |||
217 | # | ||
218 | # AT91 Feature Selections | ||
219 | # | ||
220 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
221 | CONFIG_AT91_TIMER_HZ=128 | ||
222 | CONFIG_AT91_EARLY_DBGU=y | ||
223 | # CONFIG_AT91_EARLY_USART0 is not set | ||
224 | # CONFIG_AT91_EARLY_USART1 is not set | ||
225 | # CONFIG_AT91_EARLY_USART2 is not set | ||
226 | # CONFIG_AT91_EARLY_USART3 is not set | ||
227 | # CONFIG_AT91_EARLY_USART4 is not set | ||
228 | # CONFIG_AT91_EARLY_USART5 is not set | ||
95 | 229 | ||
96 | # | 230 | # |
97 | # Processor Type | 231 | # Processor Type |
98 | # | 232 | # |
99 | CONFIG_CPU_32=y | 233 | CONFIG_CPU_32=y |
100 | CONFIG_CPU_ARM920T=y | 234 | CONFIG_CPU_ARM920T=y |
101 | CONFIG_CPU_32v4=y | 235 | CONFIG_CPU_32v4T=y |
102 | CONFIG_CPU_ABRT_EV4T=y | 236 | CONFIG_CPU_ABRT_EV4T=y |
237 | CONFIG_CPU_PABRT_NOIFAR=y | ||
103 | CONFIG_CPU_CACHE_V4WT=y | 238 | CONFIG_CPU_CACHE_V4WT=y |
104 | CONFIG_CPU_CACHE_VIVT=y | 239 | CONFIG_CPU_CACHE_VIVT=y |
105 | CONFIG_CPU_COPY_V4WB=y | 240 | CONFIG_CPU_COPY_V4WB=y |
106 | CONFIG_CPU_TLB_V4WBI=y | 241 | CONFIG_CPU_TLB_V4WBI=y |
242 | CONFIG_CPU_CP15=y | ||
243 | CONFIG_CPU_CP15_MMU=y | ||
107 | 244 | ||
108 | # | 245 | # |
109 | # Processor Features | 246 | # Processor Features |
@@ -112,23 +249,48 @@ CONFIG_ARM_THUMB=y | |||
112 | # CONFIG_CPU_ICACHE_DISABLE is not set | 249 | # CONFIG_CPU_ICACHE_DISABLE is not set |
113 | # CONFIG_CPU_DCACHE_DISABLE is not set | 250 | # CONFIG_CPU_DCACHE_DISABLE is not set |
114 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | 251 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set |
252 | # CONFIG_OUTER_CACHE is not set | ||
115 | 253 | ||
116 | # | 254 | # |
117 | # Bus support | 255 | # Bus support |
118 | # | 256 | # |
119 | CONFIG_ISA_DMA_API=y | 257 | # CONFIG_PCI_SYSCALL is not set |
120 | 258 | # CONFIG_ARCH_SUPPORTS_MSI is not set | |
121 | # | ||
122 | # PCCARD (PCMCIA/CardBus) support | ||
123 | # | ||
124 | # CONFIG_PCCARD is not set | 259 | # CONFIG_PCCARD is not set |
125 | 260 | ||
126 | # | 261 | # |
127 | # Kernel Features | 262 | # Kernel Features |
128 | # | 263 | # |
129 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 264 | CONFIG_TICK_ONESHOT=y |
265 | CONFIG_NO_HZ=y | ||
266 | CONFIG_HIGH_RES_TIMERS=y | ||
267 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
268 | CONFIG_VMSPLIT_3G=y | ||
269 | # CONFIG_VMSPLIT_2G is not set | ||
270 | # CONFIG_VMSPLIT_1G is not set | ||
271 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
272 | CONFIG_PREEMPT=y | ||
273 | CONFIG_HZ=128 | ||
274 | CONFIG_AEABI=y | ||
275 | CONFIG_OABI_COMPAT=y | ||
276 | # CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set | ||
277 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
278 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
279 | # CONFIG_HIGHMEM is not set | ||
280 | CONFIG_SELECT_MEMORY_MODEL=y | ||
281 | CONFIG_FLATMEM_MANUAL=y | ||
282 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
283 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
130 | CONFIG_FLATMEM=y | 284 | CONFIG_FLATMEM=y |
131 | CONFIG_FLAT_NODE_MEM_MAP=y | 285 | CONFIG_FLAT_NODE_MEM_MAP=y |
286 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
287 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
288 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
289 | CONFIG_ZONE_DMA_FLAG=0 | ||
290 | CONFIG_VIRT_TO_BUS=y | ||
291 | CONFIG_UNEVICTABLE_LRU=y | ||
292 | CONFIG_HAVE_MLOCK=y | ||
293 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
132 | # CONFIG_LEDS is not set | 294 | # CONFIG_LEDS is not set |
133 | CONFIG_ALIGNMENT_TRAP=y | 295 | CONFIG_ALIGNMENT_TRAP=y |
134 | 296 | ||
@@ -137,8 +299,16 @@ CONFIG_ALIGNMENT_TRAP=y | |||
137 | # | 299 | # |
138 | CONFIG_ZBOOT_ROM_TEXT=0x10000000 | 300 | CONFIG_ZBOOT_ROM_TEXT=0x10000000 |
139 | CONFIG_ZBOOT_ROM_BSS=0x20040000 | 301 | CONFIG_ZBOOT_ROM_BSS=0x20040000 |
140 | CONFIG_ZBOOT_ROM=y | 302 | # CONFIG_ZBOOT_ROM is not set |
141 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933" | 303 | CONFIG_CMDLINE="noinitrd root=/dev/mtdblock0 rootfstype=jffs2 mem=64M" |
304 | # CONFIG_XIP_KERNEL is not set | ||
305 | CONFIG_KEXEC=y | ||
306 | CONFIG_ATAGS_PROC=y | ||
307 | |||
308 | # | ||
309 | # CPU Power Management | ||
310 | # | ||
311 | # CONFIG_CPU_IDLE is not set | ||
142 | 312 | ||
143 | # | 313 | # |
144 | # Floating point emulation | 314 | # Floating point emulation |
@@ -149,74 +319,251 @@ CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933" | |||
149 | # | 319 | # |
150 | CONFIG_FPE_NWFPE=y | 320 | CONFIG_FPE_NWFPE=y |
151 | # CONFIG_FPE_NWFPE_XP is not set | 321 | # CONFIG_FPE_NWFPE_XP is not set |
322 | # CONFIG_FPE_FASTFPE is not set | ||
152 | 323 | ||
153 | # | 324 | # |
154 | # Userspace binary formats | 325 | # Userspace binary formats |
155 | # | 326 | # |
156 | CONFIG_BINFMT_ELF=y | 327 | CONFIG_BINFMT_ELF=y |
157 | CONFIG_BINFMT_AOUT=y | 328 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
329 | CONFIG_HAVE_AOUT=y | ||
330 | # CONFIG_BINFMT_AOUT is not set | ||
158 | CONFIG_BINFMT_MISC=y | 331 | CONFIG_BINFMT_MISC=y |
159 | # CONFIG_ARTHUR is not set | ||
160 | 332 | ||
161 | # | 333 | # |
162 | # Power management options | 334 | # Power management options |
163 | # | 335 | # |
164 | # CONFIG_PM is not set | 336 | # CONFIG_PM is not set |
337 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
338 | CONFIG_NET=y | ||
165 | 339 | ||
166 | # | 340 | # |
167 | # Device Drivers | 341 | # Networking options |
168 | # | 342 | # |
343 | CONFIG_PACKET=y | ||
344 | # CONFIG_PACKET_MMAP is not set | ||
345 | CONFIG_UNIX=y | ||
346 | # CONFIG_NET_KEY is not set | ||
347 | CONFIG_INET=y | ||
348 | # CONFIG_IP_MULTICAST is not set | ||
349 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
350 | CONFIG_IP_FIB_HASH=y | ||
351 | CONFIG_IP_PNP=y | ||
352 | CONFIG_IP_PNP_DHCP=y | ||
353 | CONFIG_IP_PNP_BOOTP=y | ||
354 | # CONFIG_IP_PNP_RARP is not set | ||
355 | # CONFIG_NET_IPIP is not set | ||
356 | # CONFIG_NET_IPGRE is not set | ||
357 | # CONFIG_ARPD is not set | ||
358 | # CONFIG_SYN_COOKIES is not set | ||
359 | # CONFIG_INET_AH is not set | ||
360 | # CONFIG_INET_ESP is not set | ||
361 | # CONFIG_INET_IPCOMP is not set | ||
362 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
363 | # CONFIG_INET_TUNNEL is not set | ||
364 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
365 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
366 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
367 | # CONFIG_INET_LRO is not set | ||
368 | # CONFIG_INET_DIAG is not set | ||
369 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
370 | CONFIG_TCP_CONG_CUBIC=y | ||
371 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
372 | # CONFIG_TCP_MD5SIG is not set | ||
373 | # CONFIG_IPV6 is not set | ||
374 | # CONFIG_NETWORK_SECMARK is not set | ||
375 | # CONFIG_NETFILTER is not set | ||
376 | # CONFIG_IP_DCCP is not set | ||
377 | # CONFIG_IP_SCTP is not set | ||
378 | # CONFIG_TIPC is not set | ||
379 | # CONFIG_ATM is not set | ||
380 | # CONFIG_BRIDGE is not set | ||
381 | # CONFIG_NET_DSA is not set | ||
382 | # CONFIG_VLAN_8021Q is not set | ||
383 | # CONFIG_DECNET is not set | ||
384 | # CONFIG_LLC2 is not set | ||
385 | # CONFIG_IPX is not set | ||
386 | # CONFIG_ATALK is not set | ||
387 | # CONFIG_X25 is not set | ||
388 | # CONFIG_LAPB is not set | ||
389 | # CONFIG_ECONET is not set | ||
390 | # CONFIG_WAN_ROUTER is not set | ||
391 | # CONFIG_PHONET is not set | ||
392 | # CONFIG_NET_SCHED is not set | ||
393 | # CONFIG_DCB is not set | ||
169 | 394 | ||
170 | # | 395 | # |
171 | # Generic Driver Options | 396 | # Network testing |
172 | # | 397 | # |
173 | CONFIG_STANDALONE=y | 398 | # CONFIG_NET_PKTGEN is not set |
174 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 399 | # CONFIG_NET_DROP_MONITOR is not set |
175 | # CONFIG_FW_LOADER is not set | 400 | # CONFIG_HAMRADIO is not set |
176 | CONFIG_DEBUG_DRIVER=y | 401 | # CONFIG_CAN is not set |
402 | # CONFIG_IRDA is not set | ||
403 | # CONFIG_BT is not set | ||
404 | # CONFIG_AF_RXRPC is not set | ||
405 | # CONFIG_WIRELESS is not set | ||
406 | # CONFIG_WIMAX is not set | ||
407 | # CONFIG_RFKILL is not set | ||
408 | # CONFIG_NET_9P is not set | ||
177 | 409 | ||
178 | # | 410 | # |
179 | # Memory Technology Devices (MTD) | 411 | # Device Drivers |
180 | # | 412 | # |
181 | # CONFIG_MTD is not set | ||
182 | 413 | ||
183 | # | 414 | # |
184 | # Parallel port support | 415 | # Generic Driver Options |
185 | # | 416 | # |
417 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
418 | CONFIG_STANDALONE=y | ||
419 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
420 | CONFIG_FW_LOADER=y | ||
421 | # CONFIG_FIRMWARE_IN_KERNEL is not set | ||
422 | CONFIG_EXTRA_FIRMWARE="" | ||
423 | # CONFIG_DEBUG_DRIVER is not set | ||
424 | # CONFIG_DEBUG_DEVRES is not set | ||
425 | # CONFIG_SYS_HYPERVISOR is not set | ||
426 | # CONFIG_CONNECTOR is not set | ||
427 | CONFIG_MTD=y | ||
428 | # CONFIG_MTD_DEBUG is not set | ||
429 | CONFIG_MTD_CONCAT=y | ||
430 | CONFIG_MTD_PARTITIONS=y | ||
431 | # CONFIG_MTD_TESTS is not set | ||
432 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
433 | CONFIG_MTD_CMDLINE_PARTS=y | ||
434 | # CONFIG_MTD_AFS_PARTS is not set | ||
435 | # CONFIG_MTD_AR7_PARTS is not set | ||
436 | |||
437 | # | ||
438 | # User Modules And Translation Layers | ||
439 | # | ||
440 | CONFIG_MTD_CHAR=y | ||
441 | CONFIG_MTD_BLKDEVS=y | ||
442 | CONFIG_MTD_BLOCK=y | ||
443 | # CONFIG_FTL is not set | ||
444 | # CONFIG_NFTL is not set | ||
445 | # CONFIG_INFTL is not set | ||
446 | # CONFIG_RFD_FTL is not set | ||
447 | # CONFIG_SSFDC is not set | ||
448 | # CONFIG_MTD_OOPS is not set | ||
449 | |||
450 | # | ||
451 | # RAM/ROM/Flash chip drivers | ||
452 | # | ||
453 | CONFIG_MTD_CFI=y | ||
454 | # CONFIG_MTD_JEDECPROBE is not set | ||
455 | CONFIG_MTD_GEN_PROBE=y | ||
456 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
457 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
458 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
459 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
460 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
461 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
462 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
463 | CONFIG_MTD_CFI_I1=y | ||
464 | CONFIG_MTD_CFI_I2=y | ||
465 | # CONFIG_MTD_CFI_I4 is not set | ||
466 | # CONFIG_MTD_CFI_I8 is not set | ||
467 | CONFIG_MTD_CFI_INTELEXT=y | ||
468 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
469 | # CONFIG_MTD_CFI_STAA is not set | ||
470 | CONFIG_MTD_CFI_UTIL=y | ||
471 | # CONFIG_MTD_RAM is not set | ||
472 | # CONFIG_MTD_ROM is not set | ||
473 | # CONFIG_MTD_ABSENT is not set | ||
474 | |||
475 | # | ||
476 | # Mapping drivers for chip access | ||
477 | # | ||
478 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
479 | CONFIG_MTD_PHYSMAP=y | ||
480 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
481 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
482 | # CONFIG_MTD_PLATRAM is not set | ||
483 | |||
484 | # | ||
485 | # Self-contained MTD device drivers | ||
486 | # | ||
487 | # CONFIG_MTD_SLRAM is not set | ||
488 | # CONFIG_MTD_PHRAM is not set | ||
489 | # CONFIG_MTD_MTDRAM is not set | ||
490 | # CONFIG_MTD_BLOCK2MTD is not set | ||
491 | |||
492 | # | ||
493 | # Disk-On-Chip Device Drivers | ||
494 | # | ||
495 | # CONFIG_MTD_DOC2000 is not set | ||
496 | # CONFIG_MTD_DOC2001 is not set | ||
497 | # CONFIG_MTD_DOC2001PLUS is not set | ||
498 | CONFIG_MTD_NAND=y | ||
499 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
500 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
501 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
502 | # CONFIG_MTD_NAND_GPIO is not set | ||
503 | CONFIG_MTD_NAND_IDS=y | ||
504 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
505 | CONFIG_MTD_NAND_ATMEL=y | ||
506 | # CONFIG_MTD_NAND_ATMEL_ECC_HW is not set | ||
507 | CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y | ||
508 | # CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set | ||
509 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
510 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
511 | # CONFIG_MTD_ALAUDA is not set | ||
512 | # CONFIG_MTD_ONENAND is not set | ||
513 | |||
514 | # | ||
515 | # LPDDR flash memory drivers | ||
516 | # | ||
517 | # CONFIG_MTD_LPDDR is not set | ||
518 | |||
519 | # | ||
520 | # UBI - Unsorted block images | ||
521 | # | ||
522 | CONFIG_MTD_UBI=y | ||
523 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
524 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
525 | CONFIG_MTD_UBI_GLUEBI=y | ||
526 | |||
527 | # | ||
528 | # UBI debugging options | ||
529 | # | ||
530 | # CONFIG_MTD_UBI_DEBUG is not set | ||
186 | # CONFIG_PARPORT is not set | 531 | # CONFIG_PARPORT is not set |
187 | 532 | CONFIG_BLK_DEV=y | |
188 | # | ||
189 | # Plug and Play support | ||
190 | # | ||
191 | |||
192 | # | ||
193 | # Block devices | ||
194 | # | ||
195 | # CONFIG_BLK_DEV_COW_COMMON is not set | 533 | # CONFIG_BLK_DEV_COW_COMMON is not set |
196 | CONFIG_BLK_DEV_LOOP=y | 534 | CONFIG_BLK_DEV_LOOP=y |
197 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 535 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
198 | CONFIG_BLK_DEV_NBD=y | 536 | # CONFIG_BLK_DEV_NBD is not set |
199 | # CONFIG_BLK_DEV_UB is not set | 537 | # CONFIG_BLK_DEV_UB is not set |
200 | CONFIG_BLK_DEV_RAM=y | 538 | CONFIG_BLK_DEV_RAM=y |
201 | CONFIG_BLK_DEV_RAM_COUNT=16 | 539 | CONFIG_BLK_DEV_RAM_COUNT=16 |
202 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 540 | CONFIG_BLK_DEV_RAM_SIZE=16384 |
203 | CONFIG_BLK_DEV_INITRD=y | 541 | # CONFIG_BLK_DEV_XIP is not set |
204 | CONFIG_INITRAMFS_SOURCE="" | ||
205 | # CONFIG_CDROM_PKTCDVD is not set | 542 | # CONFIG_CDROM_PKTCDVD is not set |
543 | # CONFIG_ATA_OVER_ETH is not set | ||
544 | CONFIG_MISC_DEVICES=y | ||
545 | CONFIG_ATMEL_TCLIB=y | ||
546 | CONFIG_ATMEL_TCB_CLKSRC=y | ||
547 | CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 | ||
548 | CONFIG_ATMEL_SSC=y | ||
549 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
550 | # CONFIG_C2PORT is not set | ||
206 | 551 | ||
207 | # | 552 | # |
208 | # IO Schedulers | 553 | # EEPROM support |
209 | # | 554 | # |
210 | CONFIG_IOSCHED_NOOP=y | 555 | # CONFIG_EEPROM_93CX6 is not set |
211 | CONFIG_IOSCHED_AS=y | 556 | CONFIG_HAVE_IDE=y |
212 | CONFIG_IOSCHED_DEADLINE=y | 557 | # CONFIG_IDE is not set |
213 | CONFIG_IOSCHED_CFQ=y | ||
214 | # CONFIG_ATA_OVER_ETH is not set | ||
215 | 558 | ||
216 | # | 559 | # |
217 | # SCSI device support | 560 | # SCSI device support |
218 | # | 561 | # |
562 | # CONFIG_RAID_ATTRS is not set | ||
219 | CONFIG_SCSI=y | 563 | CONFIG_SCSI=y |
564 | CONFIG_SCSI_DMA=y | ||
565 | # CONFIG_SCSI_TGT is not set | ||
566 | # CONFIG_SCSI_NETLINK is not set | ||
220 | CONFIG_SCSI_PROC_FS=y | 567 | CONFIG_SCSI_PROC_FS=y |
221 | 568 | ||
222 | # | 569 | # |
@@ -232,145 +579,87 @@ CONFIG_CHR_DEV_SG=y | |||
232 | # | 579 | # |
233 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 580 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
234 | # | 581 | # |
235 | # CONFIG_SCSI_MULTI_LUN is not set | 582 | CONFIG_SCSI_MULTI_LUN=y |
236 | # CONFIG_SCSI_CONSTANTS is not set | 583 | CONFIG_SCSI_CONSTANTS=y |
237 | # CONFIG_SCSI_LOGGING is not set | 584 | CONFIG_SCSI_LOGGING=y |
585 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
586 | CONFIG_SCSI_WAIT_SCAN=m | ||
238 | 587 | ||
239 | # | 588 | # |
240 | # SCSI Transport Attributes | 589 | # SCSI Transports |
241 | # | 590 | # |
242 | # CONFIG_SCSI_SPI_ATTRS is not set | 591 | CONFIG_SCSI_SPI_ATTRS=m |
243 | # CONFIG_SCSI_FC_ATTRS is not set | 592 | # CONFIG_SCSI_FC_ATTRS is not set |
244 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 593 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
245 | 594 | # CONFIG_SCSI_SAS_LIBSAS is not set | |
246 | # | 595 | # CONFIG_SCSI_SRP_ATTRS is not set |
247 | # SCSI low-level drivers | 596 | # CONFIG_SCSI_LOWLEVEL is not set |
248 | # | 597 | # CONFIG_SCSI_DH is not set |
249 | # CONFIG_SCSI_SATA is not set | 598 | # CONFIG_SCSI_OSD_INITIATOR is not set |
250 | # CONFIG_SCSI_DEBUG is not set | 599 | # CONFIG_ATA is not set |
251 | |||
252 | # | ||
253 | # Multi-device support (RAID and LVM) | ||
254 | # | ||
255 | # CONFIG_MD is not set | 600 | # CONFIG_MD is not set |
256 | |||
257 | # | ||
258 | # Fusion MPT device support | ||
259 | # | ||
260 | # CONFIG_FUSION is not set | ||
261 | |||
262 | # | ||
263 | # IEEE 1394 (FireWire) support | ||
264 | # | ||
265 | |||
266 | # | ||
267 | # I2O device support | ||
268 | # | ||
269 | |||
270 | # | ||
271 | # Networking support | ||
272 | # | ||
273 | CONFIG_NET=y | ||
274 | |||
275 | # | ||
276 | # Networking options | ||
277 | # | ||
278 | CONFIG_PACKET=y | ||
279 | # CONFIG_PACKET_MMAP is not set | ||
280 | CONFIG_UNIX=y | ||
281 | # CONFIG_NET_KEY is not set | ||
282 | CONFIG_INET=y | ||
283 | CONFIG_IP_MULTICAST=y | ||
284 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
285 | CONFIG_IP_FIB_HASH=y | ||
286 | CONFIG_IP_PNP=y | ||
287 | CONFIG_IP_PNP_DHCP=y | ||
288 | # CONFIG_IP_PNP_BOOTP is not set | ||
289 | # CONFIG_IP_PNP_RARP is not set | ||
290 | # CONFIG_NET_IPIP is not set | ||
291 | # CONFIG_NET_IPGRE is not set | ||
292 | # CONFIG_IP_MROUTE is not set | ||
293 | # CONFIG_SYN_COOKIES is not set | ||
294 | # CONFIG_INET_AH is not set | ||
295 | # CONFIG_INET_ESP is not set | ||
296 | # CONFIG_INET_IPCOMP is not set | ||
297 | # CONFIG_INET_TUNNEL is not set | ||
298 | # CONFIG_IP_TCPDIAG is not set | ||
299 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
300 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
301 | CONFIG_TCP_CONG_BIC=y | ||
302 | # CONFIG_IPV6 is not set | ||
303 | # CONFIG_NETFILTER is not set | ||
304 | # CONFIG_BRIDGE is not set | ||
305 | # CONFIG_VLAN_8021Q is not set | ||
306 | # CONFIG_DECNET is not set | ||
307 | # CONFIG_LLC2 is not set | ||
308 | # CONFIG_IPX is not set | ||
309 | # CONFIG_ATALK is not set | ||
310 | |||
311 | # | ||
312 | # QoS and/or fair queueing | ||
313 | # | ||
314 | # CONFIG_NET_SCHED is not set | ||
315 | # CONFIG_NET_CLS_ROUTE is not set | ||
316 | |||
317 | # | ||
318 | # Network testing | ||
319 | # | ||
320 | # CONFIG_NET_PKTGEN is not set | ||
321 | # CONFIG_NETPOLL is not set | ||
322 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
323 | # CONFIG_HAMRADIO is not set | ||
324 | # CONFIG_IRDA is not set | ||
325 | # CONFIG_BT is not set | ||
326 | CONFIG_NETDEVICES=y | 601 | CONFIG_NETDEVICES=y |
602 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
327 | # CONFIG_DUMMY is not set | 603 | # CONFIG_DUMMY is not set |
328 | # CONFIG_BONDING is not set | 604 | # CONFIG_BONDING is not set |
605 | # CONFIG_MACVLAN is not set | ||
329 | # CONFIG_EQUALIZER is not set | 606 | # CONFIG_EQUALIZER is not set |
330 | # CONFIG_TUN is not set | 607 | # CONFIG_TUN is not set |
331 | 608 | # CONFIG_VETH is not set | |
332 | # | 609 | # CONFIG_PHYLIB is not set |
333 | # Ethernet (10 or 100Mbit) | ||
334 | # | ||
335 | CONFIG_NET_ETHERNET=y | 610 | CONFIG_NET_ETHERNET=y |
336 | CONFIG_MII=y | 611 | CONFIG_MII=y |
337 | CONFIG_ARM_AT91_ETHER=y | 612 | CONFIG_ARM_AT91_ETHER=y |
613 | # CONFIG_AX88796 is not set | ||
338 | # CONFIG_SMC91X is not set | 614 | # CONFIG_SMC91X is not set |
339 | # CONFIG_DM9000 is not set | 615 | # CONFIG_DM9000 is not set |
616 | # CONFIG_ETHOC is not set | ||
617 | # CONFIG_SMC911X is not set | ||
618 | # CONFIG_SMSC911X is not set | ||
619 | # CONFIG_DNET is not set | ||
620 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
621 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
622 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
623 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
624 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
625 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
626 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
627 | # CONFIG_B44 is not set | ||
628 | # CONFIG_NETDEV_1000 is not set | ||
629 | # CONFIG_NETDEV_10000 is not set | ||
340 | 630 | ||
341 | # | 631 | # |
342 | # Ethernet (1000 Mbit) | 632 | # Wireless LAN |
343 | # | ||
344 | |||
345 | # | ||
346 | # Ethernet (10000 Mbit) | ||
347 | # | ||
348 | |||
349 | # | ||
350 | # Token Ring devices | ||
351 | # | 633 | # |
634 | # CONFIG_WLAN_PRE80211 is not set | ||
635 | # CONFIG_WLAN_80211 is not set | ||
352 | 636 | ||
353 | # | 637 | # |
354 | # Wireless LAN (non-hamradio) | 638 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
355 | # | 639 | # |
356 | # CONFIG_NET_RADIO is not set | ||
357 | 640 | ||
358 | # | 641 | # |
359 | # Wan interfaces | 642 | # USB Network Adapters |
360 | # | 643 | # |
644 | # CONFIG_USB_CATC is not set | ||
645 | # CONFIG_USB_KAWETH is not set | ||
646 | # CONFIG_USB_PEGASUS is not set | ||
647 | # CONFIG_USB_RTL8150 is not set | ||
648 | # CONFIG_USB_USBNET is not set | ||
361 | # CONFIG_WAN is not set | 649 | # CONFIG_WAN is not set |
362 | # CONFIG_PPP is not set | 650 | # CONFIG_PPP is not set |
363 | # CONFIG_SLIP is not set | 651 | # CONFIG_SLIP is not set |
364 | 652 | # CONFIG_NETCONSOLE is not set | |
365 | # | 653 | # CONFIG_NETPOLL is not set |
366 | # ISDN subsystem | 654 | # CONFIG_NET_POLL_CONTROLLER is not set |
367 | # | ||
368 | # CONFIG_ISDN is not set | 655 | # CONFIG_ISDN is not set |
369 | 656 | ||
370 | # | 657 | # |
371 | # Input device support | 658 | # Input device support |
372 | # | 659 | # |
373 | CONFIG_INPUT=y | 660 | CONFIG_INPUT=y |
661 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
662 | # CONFIG_INPUT_POLLDEV is not set | ||
374 | 663 | ||
375 | # | 664 | # |
376 | # Userland interfaces | 665 | # Userland interfaces |
@@ -380,7 +669,6 @@ CONFIG_INPUT_MOUSEDEV=y | |||
380 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 669 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
381 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 670 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
382 | # CONFIG_INPUT_JOYDEV is not set | 671 | # CONFIG_INPUT_JOYDEV is not set |
383 | # CONFIG_INPUT_TSDEV is not set | ||
384 | # CONFIG_INPUT_EVDEV is not set | 672 | # CONFIG_INPUT_EVDEV is not set |
385 | # CONFIG_INPUT_EVBUG is not set | 673 | # CONFIG_INPUT_EVBUG is not set |
386 | 674 | ||
@@ -390,23 +678,25 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
390 | # CONFIG_INPUT_KEYBOARD is not set | 678 | # CONFIG_INPUT_KEYBOARD is not set |
391 | # CONFIG_INPUT_MOUSE is not set | 679 | # CONFIG_INPUT_MOUSE is not set |
392 | # CONFIG_INPUT_JOYSTICK is not set | 680 | # CONFIG_INPUT_JOYSTICK is not set |
681 | # CONFIG_INPUT_TABLET is not set | ||
393 | # CONFIG_INPUT_TOUCHSCREEN is not set | 682 | # CONFIG_INPUT_TOUCHSCREEN is not set |
394 | # CONFIG_INPUT_MISC is not set | 683 | # CONFIG_INPUT_MISC is not set |
395 | 684 | ||
396 | # | 685 | # |
397 | # Hardware I/O ports | 686 | # Hardware I/O ports |
398 | # | 687 | # |
399 | CONFIG_SERIO=y | 688 | # CONFIG_SERIO is not set |
400 | # CONFIG_SERIO_SERPORT is not set | ||
401 | # CONFIG_SERIO_RAW is not set | ||
402 | # CONFIG_GAMEPORT is not set | 689 | # CONFIG_GAMEPORT is not set |
403 | 690 | ||
404 | # | 691 | # |
405 | # Character devices | 692 | # Character devices |
406 | # | 693 | # |
407 | CONFIG_VT=y | 694 | CONFIG_VT=y |
695 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
408 | CONFIG_VT_CONSOLE=y | 696 | CONFIG_VT_CONSOLE=y |
409 | CONFIG_HW_CONSOLE=y | 697 | CONFIG_HW_CONSOLE=y |
698 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
699 | CONFIG_DEVKMEM=y | ||
410 | # CONFIG_SERIAL_NONSTANDARD is not set | 700 | # CONFIG_SERIAL_NONSTANDARD is not set |
411 | 701 | ||
412 | # | 702 | # |
@@ -419,215 +709,362 @@ CONFIG_HW_CONSOLE=y | |||
419 | # | 709 | # |
420 | CONFIG_SERIAL_ATMEL=y | 710 | CONFIG_SERIAL_ATMEL=y |
421 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 711 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
712 | CONFIG_SERIAL_ATMEL_PDC=y | ||
713 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | ||
422 | CONFIG_SERIAL_CORE=y | 714 | CONFIG_SERIAL_CORE=y |
423 | CONFIG_SERIAL_CORE_CONSOLE=y | 715 | CONFIG_SERIAL_CORE_CONSOLE=y |
424 | CONFIG_UNIX98_PTYS=y | 716 | CONFIG_UNIX98_PTYS=y |
425 | CONFIG_LEGACY_PTYS=y | 717 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
426 | CONFIG_LEGACY_PTY_COUNT=256 | 718 | # CONFIG_LEGACY_PTYS is not set |
719 | # CONFIG_IPMI_HANDLER is not set | ||
720 | # CONFIG_HW_RANDOM is not set | ||
721 | # CONFIG_R3964 is not set | ||
722 | # CONFIG_RAW_DRIVER is not set | ||
723 | # CONFIG_TCG_TPM is not set | ||
724 | # CONFIG_I2C is not set | ||
725 | # CONFIG_SPI is not set | ||
726 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
727 | CONFIG_GPIOLIB=y | ||
728 | # CONFIG_DEBUG_GPIO is not set | ||
729 | # CONFIG_GPIO_SYSFS is not set | ||
427 | 730 | ||
428 | # | 731 | # |
429 | # IPMI | 732 | # Memory mapped GPIO expanders: |
430 | # | 733 | # |
431 | # CONFIG_IPMI_HANDLER is not set | ||
432 | 734 | ||
433 | # | 735 | # |
434 | # Watchdog Cards | 736 | # I2C GPIO expanders: |
435 | # | 737 | # |
436 | # CONFIG_WATCHDOG is not set | ||
437 | # CONFIG_NVRAM is not set | ||
438 | # CONFIG_RTC is not set | ||
439 | # CONFIG_AT91RM9200_RTC is not set | ||
440 | # CONFIG_DTLK is not set | ||
441 | # CONFIG_R3964 is not set | ||
442 | 738 | ||
443 | # | 739 | # |
444 | # Ftape, the floppy tape device driver | 740 | # PCI GPIO expanders: |
445 | # | 741 | # |
446 | # CONFIG_RAW_DRIVER is not set | ||
447 | 742 | ||
448 | # | 743 | # |
449 | # TPM devices | 744 | # SPI GPIO expanders: |
450 | # | 745 | # |
451 | # CONFIG_AT91_SPI is not set | 746 | # CONFIG_W1 is not set |
747 | # CONFIG_POWER_SUPPLY is not set | ||
748 | # CONFIG_HWMON is not set | ||
749 | # CONFIG_THERMAL is not set | ||
750 | # CONFIG_THERMAL_HWMON is not set | ||
751 | CONFIG_WATCHDOG=y | ||
752 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
452 | 753 | ||
453 | # | 754 | # |
454 | # I2C support | 755 | # Watchdog Device Drivers |
455 | # | 756 | # |
456 | # CONFIG_I2C is not set | 757 | # CONFIG_SOFT_WATCHDOG is not set |
758 | CONFIG_AT91RM9200_WATCHDOG=y | ||
759 | |||
760 | # | ||
761 | # USB-based Watchdog Cards | ||
762 | # | ||
763 | # CONFIG_USBPCWATCHDOG is not set | ||
764 | CONFIG_SSB_POSSIBLE=y | ||
457 | 765 | ||
458 | # | 766 | # |
459 | # Misc devices | 767 | # Sonics Silicon Backplane |
460 | # | 768 | # |
769 | # CONFIG_SSB is not set | ||
770 | |||
771 | # | ||
772 | # Multifunction device drivers | ||
773 | # | ||
774 | # CONFIG_MFD_CORE is not set | ||
775 | # CONFIG_MFD_SM501 is not set | ||
776 | # CONFIG_MFD_ASIC3 is not set | ||
777 | # CONFIG_HTC_EGPIO is not set | ||
778 | # CONFIG_HTC_PASIC3 is not set | ||
779 | # CONFIG_MFD_TMIO is not set | ||
780 | # CONFIG_MFD_T7L66XB is not set | ||
781 | # CONFIG_MFD_TC6387XB is not set | ||
782 | # CONFIG_MFD_TC6393XB is not set | ||
461 | 783 | ||
462 | # | 784 | # |
463 | # Multimedia devices | 785 | # Multimedia devices |
464 | # | 786 | # |
787 | |||
788 | # | ||
789 | # Multimedia core support | ||
790 | # | ||
465 | # CONFIG_VIDEO_DEV is not set | 791 | # CONFIG_VIDEO_DEV is not set |
792 | # CONFIG_DVB_CORE is not set | ||
793 | # CONFIG_VIDEO_MEDIA is not set | ||
466 | 794 | ||
467 | # | 795 | # |
468 | # Digital Video Broadcasting Devices | 796 | # Multimedia drivers |
469 | # | 797 | # |
470 | # CONFIG_DVB is not set | 798 | # CONFIG_DAB is not set |
471 | 799 | ||
472 | # | 800 | # |
473 | # Graphics support | 801 | # Graphics support |
474 | # | 802 | # |
475 | # CONFIG_FB is not set | 803 | # CONFIG_VGASTATE is not set |
804 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
805 | CONFIG_FB=y | ||
806 | # CONFIG_FIRMWARE_EDID is not set | ||
807 | # CONFIG_FB_DDC is not set | ||
808 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
809 | # CONFIG_FB_CFB_FILLRECT is not set | ||
810 | # CONFIG_FB_CFB_COPYAREA is not set | ||
811 | # CONFIG_FB_CFB_IMAGEBLIT is not set | ||
812 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
813 | # CONFIG_FB_SYS_FILLRECT is not set | ||
814 | # CONFIG_FB_SYS_COPYAREA is not set | ||
815 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
816 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
817 | # CONFIG_FB_SYS_FOPS is not set | ||
818 | # CONFIG_FB_SVGALIB is not set | ||
819 | # CONFIG_FB_MACMODES is not set | ||
820 | # CONFIG_FB_BACKLIGHT is not set | ||
821 | CONFIG_FB_MODE_HELPERS=y | ||
822 | CONFIG_FB_TILEBLITTING=y | ||
823 | |||
824 | # | ||
825 | # Frame buffer hardware drivers | ||
826 | # | ||
827 | # CONFIG_FB_S1D13XXX is not set | ||
828 | # CONFIG_FB_VIRTUAL is not set | ||
829 | # CONFIG_FB_METRONOME is not set | ||
830 | # CONFIG_FB_MB862XX is not set | ||
831 | # CONFIG_FB_BROADSHEET is not set | ||
832 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
833 | # CONFIG_LCD_CLASS_DEVICE is not set | ||
834 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
835 | # CONFIG_BACKLIGHT_GENERIC is not set | ||
836 | |||
837 | # | ||
838 | # Display device support | ||
839 | # | ||
840 | # CONFIG_DISPLAY_SUPPORT is not set | ||
476 | 841 | ||
477 | # | 842 | # |
478 | # Console display driver support | 843 | # Console display driver support |
479 | # | 844 | # |
480 | # CONFIG_VGA_CONSOLE is not set | 845 | # CONFIG_VGA_CONSOLE is not set |
481 | CONFIG_DUMMY_CONSOLE=y | 846 | CONFIG_DUMMY_CONSOLE=y |
482 | 847 | CONFIG_FRAMEBUFFER_CONSOLE=y | |
483 | # | 848 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set |
484 | # Sound | 849 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
485 | # | 850 | CONFIG_FONTS=y |
851 | # CONFIG_FONT_8x8 is not set | ||
852 | # CONFIG_FONT_8x16 is not set | ||
853 | # CONFIG_FONT_6x11 is not set | ||
854 | # CONFIG_FONT_7x14 is not set | ||
855 | # CONFIG_FONT_PEARL_8x8 is not set | ||
856 | # CONFIG_FONT_ACORN_8x8 is not set | ||
857 | CONFIG_FONT_MINI_4x6=y | ||
858 | # CONFIG_FONT_SUN8x16 is not set | ||
859 | # CONFIG_FONT_SUN12x22 is not set | ||
860 | # CONFIG_FONT_10x18 is not set | ||
861 | # CONFIG_LOGO is not set | ||
486 | # CONFIG_SOUND is not set | 862 | # CONFIG_SOUND is not set |
487 | 863 | # CONFIG_HID_SUPPORT is not set | |
488 | # | 864 | CONFIG_USB_SUPPORT=y |
489 | # USB support | ||
490 | # | ||
491 | CONFIG_USB_ARCH_HAS_HCD=y | 865 | CONFIG_USB_ARCH_HAS_HCD=y |
492 | CONFIG_USB_ARCH_HAS_OHCI=y | 866 | CONFIG_USB_ARCH_HAS_OHCI=y |
867 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
493 | CONFIG_USB=y | 868 | CONFIG_USB=y |
494 | CONFIG_USB_DEBUG=y | 869 | # CONFIG_USB_DEBUG is not set |
870 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
495 | 871 | ||
496 | # | 872 | # |
497 | # Miscellaneous USB options | 873 | # Miscellaneous USB options |
498 | # | 874 | # |
499 | CONFIG_USB_DEVICEFS=y | 875 | CONFIG_USB_DEVICEFS=y |
876 | CONFIG_USB_DEVICE_CLASS=y | ||
877 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
878 | # CONFIG_USB_OTG is not set | ||
879 | # CONFIG_USB_MON is not set | ||
880 | # CONFIG_USB_WUSB is not set | ||
881 | # CONFIG_USB_WUSB_CBAF is not set | ||
500 | 882 | ||
501 | # | 883 | # |
502 | # USB Host Controller Drivers | 884 | # USB Host Controller Drivers |
503 | # | 885 | # |
886 | # CONFIG_USB_C67X00_HCD is not set | ||
887 | # CONFIG_USB_OXU210HP_HCD is not set | ||
504 | # CONFIG_USB_ISP116X_HCD is not set | 888 | # CONFIG_USB_ISP116X_HCD is not set |
889 | # CONFIG_USB_ISP1760_HCD is not set | ||
505 | CONFIG_USB_OHCI_HCD=y | 890 | CONFIG_USB_OHCI_HCD=y |
506 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 891 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
892 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
507 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 893 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
508 | # CONFIG_USB_SL811_HCD is not set | 894 | # CONFIG_USB_SL811_HCD is not set |
895 | # CONFIG_USB_R8A66597_HCD is not set | ||
896 | # CONFIG_USB_HWA_HCD is not set | ||
897 | # CONFIG_USB_MUSB_HDRC is not set | ||
509 | 898 | ||
510 | # | 899 | # |
511 | # USB Device Class drivers | 900 | # USB Device Class drivers |
512 | # | 901 | # |
513 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
514 | # CONFIG_USB_ACM is not set | 902 | # CONFIG_USB_ACM is not set |
515 | # CONFIG_USB_PRINTER is not set | 903 | # CONFIG_USB_PRINTER is not set |
904 | # CONFIG_USB_WDM is not set | ||
905 | # CONFIG_USB_TMC is not set | ||
516 | 906 | ||
517 | # | 907 | # |
518 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | 908 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may |
519 | # | 909 | # |
520 | CONFIG_USB_STORAGE=y | ||
521 | CONFIG_USB_STORAGE_DEBUG=y | ||
522 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
523 | # CONFIG_USB_STORAGE_DPCM is not set | ||
524 | |||
525 | # | ||
526 | # USB Input Devices | ||
527 | # | ||
528 | # CONFIG_USB_HID is not set | ||
529 | 910 | ||
530 | # | 911 | # |
531 | # USB HID Boot Protocol drivers | 912 | # also be needed; see USB_STORAGE Help for more info |
532 | # | 913 | # |
533 | # CONFIG_USB_KBD is not set | 914 | CONFIG_USB_STORAGE=y |
534 | # CONFIG_USB_MOUSE is not set | 915 | # CONFIG_USB_STORAGE_DEBUG is not set |
535 | # CONFIG_USB_AIPTEK is not set | 916 | # CONFIG_USB_STORAGE_DATAFAB is not set |
536 | # CONFIG_USB_WACOM is not set | 917 | # CONFIG_USB_STORAGE_FREECOM is not set |
537 | # CONFIG_USB_ACECAD is not set | 918 | # CONFIG_USB_STORAGE_ISD200 is not set |
538 | # CONFIG_USB_KBTAB is not set | 919 | # CONFIG_USB_STORAGE_USBAT is not set |
539 | # CONFIG_USB_POWERMATE is not set | 920 | # CONFIG_USB_STORAGE_SDDR09 is not set |
540 | # CONFIG_USB_MTOUCH is not set | 921 | # CONFIG_USB_STORAGE_SDDR55 is not set |
541 | # CONFIG_USB_ITMTOUCH is not set | 922 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
542 | # CONFIG_USB_EGALAX is not set | 923 | # CONFIG_USB_STORAGE_ALAUDA is not set |
543 | # CONFIG_USB_XPAD is not set | 924 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
544 | # CONFIG_USB_ATI_REMOTE is not set | 925 | # CONFIG_USB_STORAGE_KARMA is not set |
926 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
927 | CONFIG_USB_LIBUSUAL=y | ||
545 | 928 | ||
546 | # | 929 | # |
547 | # USB Imaging devices | 930 | # USB Imaging devices |
548 | # | 931 | # |
932 | # CONFIG_USB_MDC800 is not set | ||
549 | # CONFIG_USB_MICROTEK is not set | 933 | # CONFIG_USB_MICROTEK is not set |
550 | 934 | ||
551 | # | 935 | # |
552 | # USB Multimedia devices | 936 | # USB port drivers |
553 | # | 937 | # |
554 | # CONFIG_USB_DABUSB is not set | 938 | # CONFIG_USB_SERIAL is not set |
555 | 939 | ||
556 | # | 940 | # |
557 | # Video4Linux support is needed for USB Multimedia device support | 941 | # USB Miscellaneous drivers |
558 | # | 942 | # |
943 | # CONFIG_USB_EMI62 is not set | ||
944 | # CONFIG_USB_EMI26 is not set | ||
945 | # CONFIG_USB_ADUTUX is not set | ||
946 | # CONFIG_USB_SEVSEG is not set | ||
947 | # CONFIG_USB_RIO500 is not set | ||
948 | # CONFIG_USB_LEGOTOWER is not set | ||
949 | # CONFIG_USB_LCD is not set | ||
950 | # CONFIG_USB_BERRY_CHARGE is not set | ||
951 | # CONFIG_USB_LED is not set | ||
952 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
953 | # CONFIG_USB_CYTHERM is not set | ||
954 | # CONFIG_USB_IDMOUSE is not set | ||
955 | # CONFIG_USB_FTDI_ELAN is not set | ||
956 | # CONFIG_USB_APPLEDISPLAY is not set | ||
957 | # CONFIG_USB_LD is not set | ||
958 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
959 | # CONFIG_USB_IOWARRIOR is not set | ||
960 | # CONFIG_USB_TEST is not set | ||
961 | # CONFIG_USB_ISIGHTFW is not set | ||
962 | # CONFIG_USB_VST is not set | ||
963 | # CONFIG_USB_GADGET is not set | ||
559 | 964 | ||
560 | # | 965 | # |
561 | # USB Network Adapters | 966 | # OTG and related infrastructure |
562 | # | 967 | # |
563 | # CONFIG_USB_KAWETH is not set | 968 | # CONFIG_USB_GPIO_VBUS is not set |
564 | # CONFIG_USB_PEGASUS is not set | 969 | # CONFIG_NOP_USB_XCEIV is not set |
565 | # CONFIG_USB_USBNET is not set | 970 | CONFIG_MMC=y |
566 | # CONFIG_USB_MON is not set | 971 | # CONFIG_MMC_DEBUG is not set |
972 | # CONFIG_MMC_UNSAFE_RESUME is not set | ||
567 | 973 | ||
568 | # | 974 | # |
569 | # USB port drivers | 975 | # MMC/SD/SDIO Card Drivers |
570 | # | 976 | # |
977 | CONFIG_MMC_BLOCK=y | ||
978 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
979 | # CONFIG_SDIO_UART is not set | ||
980 | # CONFIG_MMC_TEST is not set | ||
571 | 981 | ||
572 | # | 982 | # |
573 | # USB Serial Converter support | 983 | # MMC/SD/SDIO Host Controller Drivers |
574 | # | 984 | # |
575 | # CONFIG_USB_SERIAL is not set | 985 | # CONFIG_MMC_SDHCI is not set |
986 | CONFIG_MMC_AT91=y | ||
987 | # CONFIG_MEMSTICK is not set | ||
988 | # CONFIG_ACCESSIBILITY is not set | ||
989 | # CONFIG_NEW_LEDS is not set | ||
990 | CONFIG_RTC_LIB=y | ||
991 | CONFIG_RTC_CLASS=y | ||
992 | CONFIG_RTC_HCTOSYS=y | ||
993 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
994 | # CONFIG_RTC_DEBUG is not set | ||
576 | 995 | ||
577 | # | 996 | # |
578 | # USB Miscellaneous drivers | 997 | # RTC interfaces |
579 | # | 998 | # |
580 | # CONFIG_USB_EMI62 is not set | 999 | CONFIG_RTC_INTF_SYSFS=y |
581 | # CONFIG_USB_EMI26 is not set | 1000 | CONFIG_RTC_INTF_PROC=y |
582 | # CONFIG_USB_LCD is not set | 1001 | CONFIG_RTC_INTF_DEV=y |
583 | # CONFIG_USB_LED is not set | 1002 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set |
584 | # CONFIG_USB_CYTHERM is not set | 1003 | # CONFIG_RTC_DRV_TEST is not set |
585 | # CONFIG_USB_PHIDGETKIT is not set | ||
586 | # CONFIG_USB_PHIDGETSERVO is not set | ||
587 | # CONFIG_USB_IDMOUSE is not set | ||
588 | 1004 | ||
589 | # | 1005 | # |
590 | # USB DSL modem support | 1006 | # SPI RTC drivers |
591 | # | 1007 | # |
592 | 1008 | ||
593 | # | 1009 | # |
594 | # USB Gadget Support | 1010 | # Platform RTC drivers |
595 | # | 1011 | # |
596 | # CONFIG_USB_GADGET is not set | 1012 | # CONFIG_RTC_DRV_CMOS is not set |
1013 | # CONFIG_RTC_DRV_DS1286 is not set | ||
1014 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1015 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1016 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1017 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1018 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1019 | # CONFIG_RTC_DRV_M48T35 is not set | ||
1020 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1021 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
1022 | # CONFIG_RTC_DRV_V3020 is not set | ||
597 | 1023 | ||
598 | # | 1024 | # |
599 | # MMC/SD Card support | 1025 | # on-CPU RTC drivers |
600 | # | 1026 | # |
601 | # CONFIG_MMC is not set | 1027 | CONFIG_RTC_DRV_AT91RM9200=y |
1028 | # CONFIG_DMADEVICES is not set | ||
1029 | # CONFIG_AUXDISPLAY is not set | ||
1030 | # CONFIG_REGULATOR is not set | ||
1031 | # CONFIG_UIO is not set | ||
1032 | # CONFIG_STAGING is not set | ||
602 | 1033 | ||
603 | # | 1034 | # |
604 | # File systems | 1035 | # File systems |
605 | # | 1036 | # |
606 | CONFIG_EXT2_FS=y | 1037 | CONFIG_EXT2_FS=y |
607 | CONFIG_EXT2_FS_XATTR=y | 1038 | # CONFIG_EXT2_FS_XATTR is not set |
608 | # CONFIG_EXT2_FS_POSIX_ACL is not set | ||
609 | # CONFIG_EXT2_FS_SECURITY is not set | ||
610 | # CONFIG_EXT2_FS_XIP is not set | 1039 | # CONFIG_EXT2_FS_XIP is not set |
611 | CONFIG_EXT3_FS=y | 1040 | CONFIG_EXT3_FS=y |
1041 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
612 | CONFIG_EXT3_FS_XATTR=y | 1042 | CONFIG_EXT3_FS_XATTR=y |
613 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1043 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
614 | # CONFIG_EXT3_FS_SECURITY is not set | 1044 | # CONFIG_EXT3_FS_SECURITY is not set |
1045 | # CONFIG_EXT4_FS is not set | ||
615 | CONFIG_JBD=y | 1046 | CONFIG_JBD=y |
616 | # CONFIG_JBD_DEBUG is not set | 1047 | # CONFIG_JBD_DEBUG is not set |
617 | CONFIG_FS_MBCACHE=y | 1048 | CONFIG_FS_MBCACHE=y |
618 | # CONFIG_REISERFS_FS is not set | 1049 | # CONFIG_REISERFS_FS is not set |
619 | # CONFIG_JFS_FS is not set | 1050 | # CONFIG_JFS_FS is not set |
1051 | # CONFIG_FS_POSIX_ACL is not set | ||
1052 | CONFIG_FILE_LOCKING=y | ||
1053 | # CONFIG_XFS_FS is not set | ||
1054 | # CONFIG_OCFS2_FS is not set | ||
1055 | # CONFIG_BTRFS_FS is not set | ||
1056 | # CONFIG_DNOTIFY is not set | ||
1057 | CONFIG_INOTIFY=y | ||
1058 | CONFIG_INOTIFY_USER=y | ||
1059 | # CONFIG_QUOTA is not set | ||
1060 | # CONFIG_AUTOFS_FS is not set | ||
1061 | # CONFIG_AUTOFS4_FS is not set | ||
1062 | # CONFIG_FUSE_FS is not set | ||
620 | 1063 | ||
621 | # | 1064 | # |
622 | # XFS support | 1065 | # Caches |
623 | # | 1066 | # |
624 | # CONFIG_XFS_FS is not set | 1067 | # CONFIG_FSCACHE is not set |
625 | # CONFIG_MINIX_FS is not set | ||
626 | # CONFIG_ROMFS_FS is not set | ||
627 | # CONFIG_QUOTA is not set | ||
628 | CONFIG_DNOTIFY=y | ||
629 | CONFIG_AUTOFS_FS=y | ||
630 | CONFIG_AUTOFS4_FS=y | ||
631 | 1068 | ||
632 | # | 1069 | # |
633 | # CD-ROM/DVD Filesystems | 1070 | # CD-ROM/DVD Filesystems |
@@ -639,7 +1076,7 @@ CONFIG_AUTOFS4_FS=y | |||
639 | # DOS/FAT/NT Filesystems | 1076 | # DOS/FAT/NT Filesystems |
640 | # | 1077 | # |
641 | CONFIG_FAT_FS=y | 1078 | CONFIG_FAT_FS=y |
642 | CONFIG_MSDOS_FS=y | 1079 | # CONFIG_MSDOS_FS is not set |
643 | CONFIG_VFAT_FS=y | 1080 | CONFIG_VFAT_FS=y |
644 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | 1081 | CONFIG_FAT_DEFAULT_CODEPAGE=437 |
645 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | 1082 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" |
@@ -649,53 +1086,70 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
649 | # Pseudo filesystems | 1086 | # Pseudo filesystems |
650 | # | 1087 | # |
651 | CONFIG_PROC_FS=y | 1088 | CONFIG_PROC_FS=y |
1089 | CONFIG_PROC_SYSCTL=y | ||
1090 | CONFIG_PROC_PAGE_MONITOR=y | ||
652 | CONFIG_SYSFS=y | 1091 | CONFIG_SYSFS=y |
653 | CONFIG_DEVPTS_FS_XATTR=y | ||
654 | # CONFIG_DEVPTS_FS_SECURITY is not set | ||
655 | CONFIG_TMPFS=y | 1092 | CONFIG_TMPFS=y |
656 | # CONFIG_TMPFS_XATTR is not set | 1093 | # CONFIG_TMPFS_POSIX_ACL is not set |
657 | # CONFIG_HUGETLB_PAGE is not set | 1094 | # CONFIG_HUGETLB_PAGE is not set |
658 | CONFIG_RAMFS=y | 1095 | CONFIG_CONFIGFS_FS=y |
659 | 1096 | CONFIG_MISC_FILESYSTEMS=y | |
660 | # | 1097 | # CONFIG_ADFS_FS is not set |
661 | # Miscellaneous filesystems | 1098 | # CONFIG_AFFS_FS is not set |
662 | # | 1099 | # CONFIG_HFS_FS is not set |
663 | # CONFIG_HFSPLUS_FS is not set | 1100 | # CONFIG_HFSPLUS_FS is not set |
1101 | # CONFIG_BEFS_FS is not set | ||
1102 | # CONFIG_BFS_FS is not set | ||
1103 | # CONFIG_EFS_FS is not set | ||
1104 | CONFIG_JFFS2_FS=y | ||
1105 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1106 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1107 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1108 | # CONFIG_JFFS2_SUMMARY is not set | ||
1109 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1110 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1111 | CONFIG_JFFS2_ZLIB=y | ||
1112 | # CONFIG_JFFS2_LZO is not set | ||
1113 | CONFIG_JFFS2_RTIME=y | ||
1114 | # CONFIG_JFFS2_RUBIN is not set | ||
1115 | # CONFIG_UBIFS_FS is not set | ||
664 | # CONFIG_CRAMFS is not set | 1116 | # CONFIG_CRAMFS is not set |
1117 | # CONFIG_SQUASHFS is not set | ||
665 | # CONFIG_VXFS_FS is not set | 1118 | # CONFIG_VXFS_FS is not set |
1119 | # CONFIG_MINIX_FS is not set | ||
1120 | # CONFIG_OMFS_FS is not set | ||
666 | # CONFIG_HPFS_FS is not set | 1121 | # CONFIG_HPFS_FS is not set |
667 | # CONFIG_QNX4FS_FS is not set | 1122 | # CONFIG_QNX4FS_FS is not set |
1123 | # CONFIG_ROMFS_FS is not set | ||
668 | # CONFIG_SYSV_FS is not set | 1124 | # CONFIG_SYSV_FS is not set |
669 | # CONFIG_UFS_FS is not set | 1125 | # CONFIG_UFS_FS is not set |
670 | 1126 | # CONFIG_NILFS2_FS is not set | |
671 | # | 1127 | CONFIG_NETWORK_FILESYSTEMS=y |
672 | # Network File Systems | ||
673 | # | ||
674 | CONFIG_NFS_FS=y | 1128 | CONFIG_NFS_FS=y |
675 | CONFIG_NFS_V3=y | 1129 | CONFIG_NFS_V3=y |
676 | # CONFIG_NFS_V3_ACL is not set | 1130 | # CONFIG_NFS_V3_ACL is not set |
677 | # CONFIG_NFSD is not set | 1131 | # CONFIG_NFS_V4 is not set |
678 | CONFIG_ROOT_NFS=y | 1132 | CONFIG_ROOT_NFS=y |
1133 | # CONFIG_NFSD is not set | ||
679 | CONFIG_LOCKD=y | 1134 | CONFIG_LOCKD=y |
680 | CONFIG_LOCKD_V4=y | 1135 | CONFIG_LOCKD_V4=y |
681 | CONFIG_NFS_COMMON=y | 1136 | CONFIG_NFS_COMMON=y |
682 | CONFIG_SUNRPC=y | 1137 | CONFIG_SUNRPC=y |
1138 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1139 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
683 | # CONFIG_SMB_FS is not set | 1140 | # CONFIG_SMB_FS is not set |
684 | # CONFIG_CIFS is not set | 1141 | # CONFIG_CIFS is not set |
685 | # CONFIG_NCP_FS is not set | 1142 | # CONFIG_NCP_FS is not set |
686 | # CONFIG_CODA_FS is not set | 1143 | # CONFIG_CODA_FS is not set |
1144 | # CONFIG_AFS_FS is not set | ||
687 | 1145 | ||
688 | # | 1146 | # |
689 | # Partition Types | 1147 | # Partition Types |
690 | # | 1148 | # |
691 | # CONFIG_PARTITION_ADVANCED is not set | 1149 | # CONFIG_PARTITION_ADVANCED is not set |
692 | CONFIG_MSDOS_PARTITION=y | 1150 | CONFIG_MSDOS_PARTITION=y |
693 | |||
694 | # | ||
695 | # Native Language Support | ||
696 | # | ||
697 | CONFIG_NLS=y | 1151 | CONFIG_NLS=y |
698 | CONFIG_NLS_DEFAULT="utf8" | 1152 | CONFIG_NLS_DEFAULT="iso8859-1" |
699 | CONFIG_NLS_CODEPAGE_437=y | 1153 | CONFIG_NLS_CODEPAGE_437=y |
700 | # CONFIG_NLS_CODEPAGE_737 is not set | 1154 | # CONFIG_NLS_CODEPAGE_737 is not set |
701 | # CONFIG_NLS_CODEPAGE_775 is not set | 1155 | # CONFIG_NLS_CODEPAGE_775 is not set |
@@ -719,7 +1173,7 @@ CONFIG_NLS_CODEPAGE_437=y | |||
719 | # CONFIG_NLS_ISO8859_8 is not set | 1173 | # CONFIG_NLS_ISO8859_8 is not set |
720 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1174 | # CONFIG_NLS_CODEPAGE_1250 is not set |
721 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1175 | # CONFIG_NLS_CODEPAGE_1251 is not set |
722 | CONFIG_NLS_ASCII=y | 1176 | # CONFIG_NLS_ASCII is not set |
723 | # CONFIG_NLS_ISO8859_1 is not set | 1177 | # CONFIG_NLS_ISO8859_1 is not set |
724 | # CONFIG_NLS_ISO8859_2 is not set | 1178 | # CONFIG_NLS_ISO8859_2 is not set |
725 | # CONFIG_NLS_ISO8859_3 is not set | 1179 | # CONFIG_NLS_ISO8859_3 is not set |
@@ -733,47 +1187,119 @@ CONFIG_NLS_ASCII=y | |||
733 | # CONFIG_NLS_ISO8859_15 is not set | 1187 | # CONFIG_NLS_ISO8859_15 is not set |
734 | # CONFIG_NLS_KOI8_R is not set | 1188 | # CONFIG_NLS_KOI8_R is not set |
735 | # CONFIG_NLS_KOI8_U is not set | 1189 | # CONFIG_NLS_KOI8_U is not set |
736 | # CONFIG_NLS_UTF8 is not set | 1190 | CONFIG_NLS_UTF8=y |
1191 | # CONFIG_DLM is not set | ||
737 | 1192 | ||
738 | # | 1193 | # |
739 | # Kernel hacking | 1194 | # Kernel hacking |
740 | # | 1195 | # |
741 | # CONFIG_PRINTK_TIME is not set | 1196 | # CONFIG_PRINTK_TIME is not set |
1197 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1198 | CONFIG_ENABLE_MUST_CHECK=y | ||
1199 | CONFIG_FRAME_WARN=1024 | ||
1200 | CONFIG_MAGIC_SYSRQ=y | ||
1201 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1202 | CONFIG_DEBUG_FS=y | ||
1203 | # CONFIG_HEADERS_CHECK is not set | ||
742 | CONFIG_DEBUG_KERNEL=y | 1204 | CONFIG_DEBUG_KERNEL=y |
743 | # CONFIG_MAGIC_SYSRQ is not set | 1205 | # CONFIG_DEBUG_SHIRQ is not set |
744 | CONFIG_LOG_BUF_SHIFT=14 | 1206 | CONFIG_DETECT_SOFTLOCKUP=y |
1207 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1208 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1209 | CONFIG_DETECT_HUNG_TASK=y | ||
1210 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
1211 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
1212 | # CONFIG_SCHED_DEBUG is not set | ||
745 | # CONFIG_SCHEDSTATS is not set | 1213 | # CONFIG_SCHEDSTATS is not set |
746 | # CONFIG_DEBUG_SLAB is not set | 1214 | # CONFIG_TIMER_STATS is not set |
1215 | # CONFIG_DEBUG_OBJECTS is not set | ||
1216 | # CONFIG_SLUB_DEBUG_ON is not set | ||
1217 | # CONFIG_SLUB_STATS is not set | ||
1218 | # CONFIG_DEBUG_PREEMPT is not set | ||
1219 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1220 | # CONFIG_RT_MUTEX_TESTER is not set | ||
747 | # CONFIG_DEBUG_SPINLOCK is not set | 1221 | # CONFIG_DEBUG_SPINLOCK is not set |
1222 | # CONFIG_DEBUG_MUTEXES is not set | ||
1223 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1224 | # CONFIG_PROVE_LOCKING is not set | ||
1225 | # CONFIG_LOCK_STAT is not set | ||
748 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1226 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1227 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
749 | # CONFIG_DEBUG_KOBJECT is not set | 1228 | # CONFIG_DEBUG_KOBJECT is not set |
750 | CONFIG_DEBUG_BUGVERBOSE=y | 1229 | CONFIG_DEBUG_BUGVERBOSE=y |
751 | # CONFIG_DEBUG_INFO is not set | 1230 | # CONFIG_DEBUG_INFO is not set |
752 | # CONFIG_DEBUG_FS is not set | 1231 | # CONFIG_DEBUG_VM is not set |
753 | CONFIG_FRAME_POINTER=y | 1232 | # CONFIG_DEBUG_WRITECOUNT is not set |
754 | CONFIG_DEBUG_USER=y | 1233 | CONFIG_DEBUG_MEMORY_INIT=y |
755 | CONFIG_DEBUG_ERRORS=y | 1234 | # CONFIG_DEBUG_LIST is not set |
756 | CONFIG_DEBUG_LL=y | 1235 | # CONFIG_DEBUG_SG is not set |
757 | # CONFIG_DEBUG_ICEDCC is not set | 1236 | # CONFIG_DEBUG_NOTIFIERS is not set |
1237 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1238 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1239 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
1240 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1241 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
1242 | # CONFIG_FAULT_INJECTION is not set | ||
1243 | # CONFIG_LATENCYTOP is not set | ||
1244 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1245 | # CONFIG_PAGE_POISONING is not set | ||
1246 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
1247 | CONFIG_TRACING_SUPPORT=y | ||
1248 | |||
1249 | # | ||
1250 | # Tracers | ||
1251 | # | ||
1252 | # CONFIG_FUNCTION_TRACER is not set | ||
1253 | # CONFIG_IRQSOFF_TRACER is not set | ||
1254 | # CONFIG_PREEMPT_TRACER is not set | ||
1255 | # CONFIG_SCHED_TRACER is not set | ||
1256 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
1257 | # CONFIG_EVENT_TRACER is not set | ||
1258 | # CONFIG_BOOT_TRACER is not set | ||
1259 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1260 | # CONFIG_STACK_TRACER is not set | ||
1261 | # CONFIG_KMEMTRACE is not set | ||
1262 | # CONFIG_WORKQUEUE_TRACER is not set | ||
1263 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
1264 | # CONFIG_DYNAMIC_DEBUG is not set | ||
1265 | # CONFIG_SAMPLES is not set | ||
1266 | CONFIG_HAVE_ARCH_KGDB=y | ||
1267 | # CONFIG_KGDB is not set | ||
1268 | CONFIG_ARM_UNWIND=y | ||
1269 | # CONFIG_DEBUG_USER is not set | ||
1270 | # CONFIG_DEBUG_ERRORS is not set | ||
1271 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1272 | # CONFIG_DEBUG_LL is not set | ||
758 | 1273 | ||
759 | # | 1274 | # |
760 | # Security options | 1275 | # Security options |
761 | # | 1276 | # |
762 | # CONFIG_KEYS is not set | 1277 | # CONFIG_KEYS is not set |
763 | # CONFIG_SECURITY is not set | 1278 | # CONFIG_SECURITY is not set |
764 | 1279 | # CONFIG_SECURITYFS is not set | |
765 | # | 1280 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
766 | # Cryptographic options | ||
767 | # | ||
768 | # CONFIG_CRYPTO is not set | 1281 | # CONFIG_CRYPTO is not set |
769 | 1282 | # CONFIG_BINARY_PRINTF is not set | |
770 | # | ||
771 | # Hardware crypto devices | ||
772 | # | ||
773 | 1283 | ||
774 | # | 1284 | # |
775 | # Library routines | 1285 | # Library routines |
776 | # | 1286 | # |
1287 | CONFIG_BITREVERSE=y | ||
1288 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
777 | # CONFIG_CRC_CCITT is not set | 1289 | # CONFIG_CRC_CCITT is not set |
1290 | # CONFIG_CRC16 is not set | ||
1291 | # CONFIG_CRC_T10DIF is not set | ||
1292 | # CONFIG_CRC_ITU_T is not set | ||
778 | CONFIG_CRC32=y | 1293 | CONFIG_CRC32=y |
1294 | # CONFIG_CRC7 is not set | ||
779 | # CONFIG_LIBCRC32C is not set | 1295 | # CONFIG_LIBCRC32C is not set |
1296 | CONFIG_AUDIT_GENERIC=y | ||
1297 | CONFIG_ZLIB_INFLATE=y | ||
1298 | CONFIG_ZLIB_DEFLATE=y | ||
1299 | CONFIG_DECOMPRESS_GZIP=y | ||
1300 | CONFIG_DECOMPRESS_BZIP2=y | ||
1301 | CONFIG_DECOMPRESS_LZMA=y | ||
1302 | CONFIG_HAS_IOMEM=y | ||
1303 | CONFIG_HAS_IOPORT=y | ||
1304 | CONFIG_HAS_DMA=y | ||
1305 | CONFIG_NLATTR=y | ||
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig index 0a1abb978d7e..af74cc2de8b6 100644 --- a/arch/arm/configs/kirkwood_defconfig +++ b/arch/arm/configs/kirkwood_defconfig | |||
@@ -629,7 +629,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
629 | CONFIG_ATA=y | 629 | CONFIG_ATA=y |
630 | # CONFIG_ATA_NONSTANDARD is not set | 630 | # CONFIG_ATA_NONSTANDARD is not set |
631 | CONFIG_SATA_PMP=y | 631 | CONFIG_SATA_PMP=y |
632 | # CONFIG_SATA_AHCI is not set | 632 | CONFIG_SATA_AHCI=y |
633 | # CONFIG_SATA_SIL24 is not set | 633 | # CONFIG_SATA_SIL24 is not set |
634 | CONFIG_ATA_SFF=y | 634 | CONFIG_ATA_SFF=y |
635 | # CONFIG_SATA_SVW is not set | 635 | # CONFIG_SATA_SVW is not set |
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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_HAVE_PWM=y | ||
8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
9 | CONFIG_GENERIC_GPIO=y | ||
10 | # CONFIG_GENERIC_TIME is not set | ||
11 | # CONFIG_GENERIC_CLOCKEVENTS is not set | ||
12 | CONFIG_MMU=y | ||
13 | CONFIG_NO_IOPORT=y | ||
14 | CONFIG_GENERIC_HARDIRQS=y | ||
15 | CONFIG_STACKTRACE_SUPPORT=y | ||
16 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
17 | CONFIG_LOCKDEP_SUPPORT=y | ||
18 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
19 | CONFIG_HARDIRQS_SW_RESEND=y | ||
20 | CONFIG_GENERIC_IRQ_PROBE=y | ||
21 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
23 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
24 | CONFIG_GENERIC_HWEIGHT=y | ||
25 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
26 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
27 | CONFIG_VECTORS_BASE=0xffff0000 | ||
28 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
29 | |||
30 | # | ||
31 | # General setup | ||
32 | # | ||
33 | CONFIG_EXPERIMENTAL=y | ||
34 | CONFIG_BROKEN_ON_SMP=y | ||
35 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
36 | CONFIG_LOCALVERSION="" | ||
37 | # CONFIG_LOCALVERSION_AUTO is not set | ||
38 | CONFIG_SWAP=y | ||
39 | CONFIG_SYSVIPC=y | ||
40 | CONFIG_SYSVIPC_SYSCTL=y | ||
41 | CONFIG_POSIX_MQUEUE=y | ||
42 | CONFIG_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 | # | ||
50 | CONFIG_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 | ||
56 | CONFIG_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 | ||
60 | CONFIG_RELAY=y | ||
61 | CONFIG_NAMESPACES=y | ||
62 | CONFIG_UTS_NS=y | ||
63 | CONFIG_IPC_NS=y | ||
64 | # CONFIG_USER_NS is not set | ||
65 | # CONFIG_PID_NS is not set | ||
66 | # CONFIG_NET_NS is not set | ||
67 | CONFIG_BLK_DEV_INITRD=y | ||
68 | CONFIG_INITRAMFS_SOURCE="" | ||
69 | CONFIG_RD_GZIP=y | ||
70 | CONFIG_RD_BZIP2=y | ||
71 | CONFIG_RD_LZMA=y | ||
72 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
73 | CONFIG_SYSCTL=y | ||
74 | CONFIG_ANON_INODES=y | ||
75 | # CONFIG_EMBEDDED is not set | ||
76 | CONFIG_UID16=y | ||
77 | CONFIG_SYSCTL_SYSCALL=y | ||
78 | CONFIG_KALLSYMS=y | ||
79 | # CONFIG_KALLSYMS_ALL is not set | ||
80 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
81 | CONFIG_STRIP_ASM_SYMS=y | ||
82 | CONFIG_HOTPLUG=y | ||
83 | CONFIG_PRINTK=y | ||
84 | CONFIG_BUG=y | ||
85 | CONFIG_ELF_CORE=y | ||
86 | CONFIG_BASE_FULL=y | ||
87 | CONFIG_FUTEX=y | ||
88 | CONFIG_EPOLL=y | ||
89 | CONFIG_SIGNALFD=y | ||
90 | CONFIG_TIMERFD=y | ||
91 | CONFIG_EVENTFD=y | ||
92 | CONFIG_SHMEM=y | ||
93 | CONFIG_AIO=y | ||
94 | CONFIG_VM_EVENT_COUNTERS=y | ||
95 | CONFIG_SLUB_DEBUG=y | ||
96 | # CONFIG_COMPAT_BRK is not set | ||
97 | # CONFIG_SLAB is not set | ||
98 | CONFIG_SLUB=y | ||
99 | # CONFIG_SLOB is not set | ||
100 | # CONFIG_PROFILING is not set | ||
101 | # CONFIG_MARKERS is not set | ||
102 | CONFIG_HAVE_OPROFILE=y | ||
103 | # CONFIG_KPROBES is not set | ||
104 | CONFIG_HAVE_KPROBES=y | ||
105 | CONFIG_HAVE_KRETPROBES=y | ||
106 | CONFIG_HAVE_CLK=y | ||
107 | # CONFIG_SLOW_WORK is not set | ||
108 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
109 | CONFIG_SLABINFO=y | ||
110 | CONFIG_RT_MUTEXES=y | ||
111 | CONFIG_BASE_SMALL=0 | ||
112 | CONFIG_MODULES=y | ||
113 | CONFIG_MODULE_FORCE_LOAD=y | ||
114 | CONFIG_MODULE_UNLOAD=y | ||
115 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
116 | # CONFIG_MODVERSIONS is not set | ||
117 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
118 | CONFIG_BLOCK=y | ||
119 | CONFIG_LBD=y | ||
120 | # CONFIG_BLK_DEV_BSG is not set | ||
121 | CONFIG_BLK_DEV_INTEGRITY=y | ||
122 | |||
123 | # | ||
124 | # IO Schedulers | ||
125 | # | ||
126 | CONFIG_IOSCHED_NOOP=y | ||
127 | CONFIG_IOSCHED_AS=y | ||
128 | CONFIG_IOSCHED_DEADLINE=y | ||
129 | CONFIG_IOSCHED_CFQ=y | ||
130 | CONFIG_DEFAULT_AS=y | ||
131 | # CONFIG_DEFAULT_DEADLINE is not set | ||
132 | # CONFIG_DEFAULT_CFQ is not set | ||
133 | # CONFIG_DEFAULT_NOOP is not set | ||
134 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
135 | CONFIG_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 | ||
172 | CONFIG_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 | ||
180 | CONFIG_PLAT_S3C24XX=y | ||
181 | CONFIG_S3C2410_CLOCK=y | ||
182 | CONFIG_CPU_S3C244X=y | ||
183 | CONFIG_S3C24XX_PWM=y | ||
184 | CONFIG_S3C24XX_GPIO_EXTRA=0 | ||
185 | CONFIG_S3C2410_DMA=y | ||
186 | # CONFIG_S3C2410_DMA_DEBUG is not set | ||
187 | CONFIG_S3C24XX_ADC=y | ||
188 | CONFIG_PLAT_S3C=y | ||
189 | CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y | ||
190 | CONFIG_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 | ||
197 | CONFIG_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 | ||
204 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 | ||
205 | CONFIG_S3C_GPIO_SPACE=0 | ||
206 | |||
207 | # | ||
208 | # S3C2400 Machines | ||
209 | # | ||
210 | CONFIG_S3C2410_PM=y | ||
211 | CONFIG_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 | ||
233 | CONFIG_CPU_S3C2440=y | ||
234 | CONFIG_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 | ||
245 | CONFIG_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 | # | ||
259 | CONFIG_CPU_32=y | ||
260 | CONFIG_CPU_ARM920T=y | ||
261 | CONFIG_CPU_32v4T=y | ||
262 | CONFIG_CPU_ABRT_EV4T=y | ||
263 | CONFIG_CPU_PABRT_NOIFAR=y | ||
264 | CONFIG_CPU_CACHE_V4WT=y | ||
265 | CONFIG_CPU_CACHE_VIVT=y | ||
266 | CONFIG_CPU_COPY_V4WB=y | ||
267 | CONFIG_CPU_TLB_V4WBI=y | ||
268 | CONFIG_CPU_CP15=y | ||
269 | CONFIG_CPU_CP15_MMU=y | ||
270 | |||
271 | # | ||
272 | # Processor Features | ||
273 | # | ||
274 | CONFIG_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 | # | ||
290 | CONFIG_VMSPLIT_3G=y | ||
291 | # CONFIG_VMSPLIT_2G is not set | ||
292 | # CONFIG_VMSPLIT_1G is not set | ||
293 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
294 | # CONFIG_PREEMPT is not set | ||
295 | CONFIG_HZ=200 | ||
296 | CONFIG_AEABI=y | ||
297 | # CONFIG_OABI_COMPAT is not set | ||
298 | CONFIG_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 | ||
302 | CONFIG_SELECT_MEMORY_MODEL=y | ||
303 | CONFIG_FLATMEM_MANUAL=y | ||
304 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
305 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
306 | CONFIG_FLATMEM=y | ||
307 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
308 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
309 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
310 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
311 | CONFIG_ZONE_DMA_FLAG=0 | ||
312 | CONFIG_VIRT_TO_BUS=y | ||
313 | CONFIG_UNEVICTABLE_LRU=y | ||
314 | CONFIG_HAVE_MLOCK=y | ||
315 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
316 | CONFIG_ALIGNMENT_TRAP=y | ||
317 | |||
318 | # | ||
319 | # Boot options | ||
320 | # | ||
321 | CONFIG_ZBOOT_ROM_TEXT=0 | ||
322 | CONFIG_ZBOOT_ROM_BSS=0 | ||
323 | CONFIG_CMDLINE="" | ||
324 | # CONFIG_XIP_KERNEL is not set | ||
325 | CONFIG_KEXEC=y | ||
326 | CONFIG_ATAGS_PROC=y | ||
327 | |||
328 | # | ||
329 | # CPU Power Management | ||
330 | # | ||
331 | CONFIG_CPU_IDLE=y | ||
332 | CONFIG_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 | # | ||
345 | CONFIG_BINFMT_ELF=y | ||
346 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
347 | CONFIG_HAVE_AOUT=y | ||
348 | CONFIG_BINFMT_AOUT=m | ||
349 | CONFIG_BINFMT_MISC=m | ||
350 | |||
351 | # | ||
352 | # Power management options | ||
353 | # | ||
354 | CONFIG_PM=y | ||
355 | # CONFIG_PM_DEBUG is not set | ||
356 | CONFIG_PM_SLEEP=y | ||
357 | CONFIG_SUSPEND=y | ||
358 | CONFIG_SUSPEND_FREEZER=y | ||
359 | CONFIG_APM_EMULATION=y | ||
360 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
361 | CONFIG_NET=y | ||
362 | |||
363 | # | ||
364 | # Networking options | ||
365 | # | ||
366 | CONFIG_PACKET=y | ||
367 | CONFIG_PACKET_MMAP=y | ||
368 | CONFIG_UNIX=y | ||
369 | CONFIG_XFRM=y | ||
370 | CONFIG_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 | ||
374 | CONFIG_NET_KEY=m | ||
375 | # CONFIG_NET_KEY_MIGRATE is not set | ||
376 | CONFIG_INET=y | ||
377 | CONFIG_IP_MULTICAST=y | ||
378 | CONFIG_IP_ADVANCED_ROUTER=y | ||
379 | CONFIG_ASK_IP_FIB_HASH=y | ||
380 | # CONFIG_IP_FIB_TRIE is not set | ||
381 | CONFIG_IP_FIB_HASH=y | ||
382 | CONFIG_IP_MULTIPLE_TABLES=y | ||
383 | CONFIG_IP_ROUTE_MULTIPATH=y | ||
384 | CONFIG_IP_ROUTE_VERBOSE=y | ||
385 | CONFIG_IP_PNP=y | ||
386 | CONFIG_IP_PNP_DHCP=y | ||
387 | CONFIG_IP_PNP_BOOTP=y | ||
388 | CONFIG_IP_PNP_RARP=y | ||
389 | # CONFIG_NET_IPIP is not set | ||
390 | # CONFIG_NET_IPGRE is not set | ||
391 | CONFIG_IP_MROUTE=y | ||
392 | CONFIG_IP_PIMSM_V1=y | ||
393 | CONFIG_IP_PIMSM_V2=y | ||
394 | # CONFIG_ARPD is not set | ||
395 | CONFIG_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 | ||
405 | CONFIG_INET_DIAG=m | ||
406 | CONFIG_INET_TCP_DIAG=m | ||
407 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
408 | CONFIG_TCP_CONG_CUBIC=y | ||
409 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
410 | # CONFIG_TCP_MD5SIG is not set | ||
411 | # CONFIG_IPV6 is not set | ||
412 | # CONFIG_NETWORK_SECMARK is not set | ||
413 | CONFIG_NETFILTER=y | ||
414 | # CONFIG_NETFILTER_DEBUG is not set | ||
415 | CONFIG_NETFILTER_ADVANCED=y | ||
416 | CONFIG_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 | ||
439 | CONFIG_STP=m | ||
440 | CONFIG_GARP=m | ||
441 | CONFIG_BRIDGE=m | ||
442 | # CONFIG_NET_DSA is not set | ||
443 | CONFIG_VLAN_8021Q=m | ||
444 | CONFIG_VLAN_8021Q_GVRP=y | ||
445 | # CONFIG_DECNET is not set | ||
446 | CONFIG_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 | # | ||
461 | CONFIG_NET_PKTGEN=m | ||
462 | # CONFIG_HAMRADIO is not set | ||
463 | # CONFIG_CAN is not set | ||
464 | # CONFIG_IRDA is not set | ||
465 | CONFIG_BT=m | ||
466 | CONFIG_BT_L2CAP=m | ||
467 | CONFIG_BT_SCO=m | ||
468 | CONFIG_BT_RFCOMM=m | ||
469 | CONFIG_BT_RFCOMM_TTY=y | ||
470 | CONFIG_BT_BNEP=m | ||
471 | CONFIG_BT_BNEP_MC_FILTER=y | ||
472 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
473 | CONFIG_BT_HIDP=m | ||
474 | |||
475 | # | ||
476 | # Bluetooth device drivers | ||
477 | # | ||
478 | CONFIG_BT_HCIBTUSB=m | ||
479 | CONFIG_BT_HCIBTSDIO=m | ||
480 | CONFIG_BT_HCIUART=m | ||
481 | CONFIG_BT_HCIUART_H4=y | ||
482 | CONFIG_BT_HCIUART_BCSP=y | ||
483 | CONFIG_BT_HCIUART_LL=y | ||
484 | CONFIG_BT_HCIBCM203X=m | ||
485 | CONFIG_BT_HCIBPA10X=m | ||
486 | CONFIG_BT_HCIBFUSB=m | ||
487 | CONFIG_BT_HCIVHCI=m | ||
488 | # CONFIG_AF_RXRPC is not set | ||
489 | CONFIG_FIB_RULES=y | ||
490 | CONFIG_WIRELESS=y | ||
491 | CONFIG_CFG80211=m | ||
492 | CONFIG_CFG80211_REG_DEBUG=y | ||
493 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
494 | CONFIG_WIRELESS_EXT=y | ||
495 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
496 | CONFIG_LIB80211=m | ||
497 | CONFIG_LIB80211_CRYPT_WEP=m | ||
498 | CONFIG_LIB80211_CRYPT_CCMP=m | ||
499 | CONFIG_LIB80211_CRYPT_TKIP=m | ||
500 | # CONFIG_LIB80211_DEBUG is not set | ||
501 | CONFIG_MAC80211=m | ||
502 | |||
503 | # | ||
504 | # Rate control algorithm selection | ||
505 | # | ||
506 | CONFIG_MAC80211_RC_MINSTREL=y | ||
507 | # CONFIG_MAC80211_RC_DEFAULT_PID is not set | ||
508 | CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y | ||
509 | CONFIG_MAC80211_RC_DEFAULT="minstrel" | ||
510 | CONFIG_MAC80211_MESH=y | ||
511 | CONFIG_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 | # | ||
525 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
526 | CONFIG_STANDALONE=y | ||
527 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
528 | CONFIG_FW_LOADER=y | ||
529 | # CONFIG_FIRMWARE_IN_KERNEL is not set | ||
530 | CONFIG_EXTRA_FIRMWARE="" | ||
531 | # CONFIG_DEBUG_DRIVER is not set | ||
532 | # CONFIG_DEBUG_DEVRES is not set | ||
533 | # CONFIG_SYS_HYPERVISOR is not set | ||
534 | CONFIG_CONNECTOR=m | ||
535 | CONFIG_MTD=y | ||
536 | # CONFIG_MTD_DEBUG is not set | ||
537 | CONFIG_MTD_CONCAT=y | ||
538 | CONFIG_MTD_PARTITIONS=y | ||
539 | # CONFIG_MTD_TESTS is not set | ||
540 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
541 | CONFIG_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 | # | ||
548 | CONFIG_MTD_CHAR=y | ||
549 | CONFIG_MTD_BLKDEVS=y | ||
550 | CONFIG_MTD_BLOCK=y | ||
551 | CONFIG_FTL=y | ||
552 | CONFIG_NFTL=y | ||
553 | CONFIG_NFTL_RW=y | ||
554 | CONFIG_INFTL=y | ||
555 | CONFIG_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 | # | ||
562 | CONFIG_MTD_CFI=y | ||
563 | CONFIG_MTD_JEDECPROBE=y | ||
564 | CONFIG_MTD_GEN_PROBE=y | ||
565 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
566 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
567 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
568 | CONFIG_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 | ||
572 | CONFIG_MTD_CFI_I1=y | ||
573 | CONFIG_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 | ||
577 | CONFIG_MTD_CFI_AMDSTD=y | ||
578 | CONFIG_MTD_CFI_STAA=y | ||
579 | CONFIG_MTD_CFI_UTIL=y | ||
580 | CONFIG_MTD_RAM=y | ||
581 | CONFIG_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 | ||
609 | CONFIG_MTD_NAND=y | ||
610 | CONFIG_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 | ||
614 | CONFIG_MTD_NAND_IDS=y | ||
615 | CONFIG_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 | ||
621 | CONFIG_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 | # | ||
628 | CONFIG_MTD_LPDDR=y | ||
629 | CONFIG_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 | ||
636 | CONFIG_BLK_DEV=y | ||
637 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
638 | CONFIG_BLK_DEV_LOOP=m | ||
639 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
640 | CONFIG_BLK_DEV_NBD=m | ||
641 | # CONFIG_BLK_DEV_UB is not set | ||
642 | CONFIG_BLK_DEV_RAM=y | ||
643 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
644 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
645 | # CONFIG_BLK_DEV_XIP is not set | ||
646 | CONFIG_CDROM_PKTCDVD=m | ||
647 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
648 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
649 | # CONFIG_ATA_OVER_ETH is not set | ||
650 | CONFIG_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 | # | ||
659 | CONFIG_EEPROM_AT24=y | ||
660 | # CONFIG_EEPROM_AT25 is not set | ||
661 | # CONFIG_EEPROM_LEGACY is not set | ||
662 | # CONFIG_EEPROM_93CX6 is not set | ||
663 | CONFIG_HAVE_IDE=y | ||
664 | # CONFIG_IDE is not set | ||
665 | |||
666 | # | ||
667 | # SCSI device support | ||
668 | # | ||
669 | # CONFIG_RAID_ATTRS is not set | ||
670 | CONFIG_SCSI=m | ||
671 | CONFIG_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 | # | ||
679 | CONFIG_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 | ||
683 | CONFIG_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 | ||
693 | CONFIG_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 | ||
708 | CONFIG_NETDEVICES=y | ||
709 | CONFIG_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 | ||
714 | CONFIG_TUN=m | ||
715 | # CONFIG_VETH is not set | ||
716 | # CONFIG_PHYLIB is not set | ||
717 | CONFIG_NET_ETHERNET=y | ||
718 | CONFIG_MII=y | ||
719 | # CONFIG_AX88796 is not set | ||
720 | # CONFIG_SMC91X is not set | ||
721 | CONFIG_DM9000=y | ||
722 | CONFIG_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 | ||
744 | CONFIG_WLAN_80211=y | ||
745 | CONFIG_LIBERTAS=m | ||
746 | # CONFIG_LIBERTAS_USB is not set | ||
747 | CONFIG_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 | ||
758 | CONFIG_HOSTAP=m | ||
759 | CONFIG_HOSTAP_FIRMWARE=y | ||
760 | CONFIG_HOSTAP_FIRMWARE_NVRAM=y | ||
761 | # CONFIG_B43 is not set | ||
762 | # CONFIG_B43LEGACY is not set | ||
763 | CONFIG_ZD1211RW=m | ||
764 | CONFIG_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 | ||
780 | CONFIG_PPP=m | ||
781 | CONFIG_PPP_MULTILINK=y | ||
782 | CONFIG_PPP_FILTER=y | ||
783 | CONFIG_PPP_ASYNC=m | ||
784 | CONFIG_PPP_SYNC_TTY=m | ||
785 | CONFIG_PPP_DEFLATE=m | ||
786 | CONFIG_PPP_BSDCOMP=m | ||
787 | CONFIG_PPP_MPPE=m | ||
788 | # CONFIG_PPPOE is not set | ||
789 | # CONFIG_PPPOL2TP is not set | ||
790 | # CONFIG_SLIP is not set | ||
791 | CONFIG_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 | # | ||
800 | CONFIG_INPUT=y | ||
801 | CONFIG_INPUT_FF_MEMLESS=y | ||
802 | # CONFIG_INPUT_POLLDEV is not set | ||
803 | |||
804 | # | ||
805 | # Userland interfaces | ||
806 | # | ||
807 | CONFIG_INPUT_MOUSEDEV=y | ||
808 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
809 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
810 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
811 | # CONFIG_INPUT_JOYDEV is not set | ||
812 | CONFIG_INPUT_EVDEV=y | ||
813 | CONFIG_INPUT_EVBUG=m | ||
814 | |||
815 | # | ||
816 | # Input Device Drivers | ||
817 | # | ||
818 | CONFIG_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 | ||
825 | CONFIG_KEYBOARD_GPIO=y | ||
826 | CONFIG_INPUT_MOUSE=y | ||
827 | CONFIG_MOUSE_PS2=y | ||
828 | CONFIG_MOUSE_PS2_ALPS=y | ||
829 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
830 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
831 | CONFIG_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 | ||
841 | CONFIG_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 | # | ||
865 | CONFIG_SERIO=y | ||
866 | CONFIG_SERIO_SERPORT=y | ||
867 | CONFIG_SERIO_LIBPS2=y | ||
868 | CONFIG_SERIO_RAW=y | ||
869 | # CONFIG_GAMEPORT is not set | ||
870 | |||
871 | # | ||
872 | # Character devices | ||
873 | # | ||
874 | CONFIG_VT=y | ||
875 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
876 | CONFIG_VT_CONSOLE=y | ||
877 | CONFIG_HW_CONSOLE=y | ||
878 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
879 | CONFIG_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 | # | ||
890 | CONFIG_SERIAL_SAMSUNG=y | ||
891 | CONFIG_SERIAL_SAMSUNG_UARTS=3 | ||
892 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y | ||
893 | CONFIG_SERIAL_S3C2440=y | ||
894 | # CONFIG_SERIAL_MAX3100 is not set | ||
895 | CONFIG_SERIAL_CORE=y | ||
896 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
897 | CONFIG_UNIX98_PTYS=y | ||
898 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
899 | CONFIG_LEGACY_PTYS=y | ||
900 | CONFIG_LEGACY_PTY_COUNT=128 | ||
901 | CONFIG_IPMI_HANDLER=m | ||
902 | # CONFIG_IPMI_PANIC_EVENT is not set | ||
903 | CONFIG_IPMI_DEVICE_INTERFACE=m | ||
904 | CONFIG_IPMI_SI=m | ||
905 | CONFIG_IPMI_WATCHDOG=m | ||
906 | CONFIG_IPMI_POWEROFF=m | ||
907 | CONFIG_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 | ||
912 | CONFIG_I2C=y | ||
913 | CONFIG_I2C_BOARDINFO=y | ||
914 | CONFIG_I2C_CHARDEV=y | ||
915 | CONFIG_I2C_HELPER_AUTO=y | ||
916 | CONFIG_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 | ||
927 | CONFIG_I2C_S3C2410=y | ||
928 | CONFIG_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 | ||
951 | CONFIG_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 | ||
956 | CONFIG_SPI=y | ||
957 | # CONFIG_SPI_DEBUG is not set | ||
958 | CONFIG_SPI_MASTER=y | ||
959 | |||
960 | # | ||
961 | # SPI Master Controller Drivers | ||
962 | # | ||
963 | CONFIG_SPI_BITBANG=y | ||
964 | # CONFIG_SPI_GPIO is not set | ||
965 | CONFIG_SPI_S3C24XX=y | ||
966 | # CONFIG_SPI_S3C24XX_GPIO is not set | ||
967 | |||
968 | # | ||
969 | # SPI Protocol Masters | ||
970 | # | ||
971 | CONFIG_SPI_SPIDEV=y | ||
972 | # CONFIG_SPI_TLE62X0 is not set | ||
973 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
974 | CONFIG_GPIOLIB=y | ||
975 | # CONFIG_DEBUG_GPIO is not set | ||
976 | CONFIG_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 | ||
1000 | CONFIG_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 | ||
1028 | CONFIG_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 | ||
1065 | CONFIG_THERMAL=m | ||
1066 | # CONFIG_THERMAL_HWMON is not set | ||
1067 | CONFIG_WATCHDOG=y | ||
1068 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
1069 | |||
1070 | # | ||
1071 | # Watchdog Device Drivers | ||
1072 | # | ||
1073 | # CONFIG_SOFT_WATCHDOG is not set | ||
1074 | CONFIG_S3C2410_WATCHDOG=y | ||
1075 | |||
1076 | # | ||
1077 | # USB-based Watchdog Cards | ||
1078 | # | ||
1079 | # CONFIG_USBPCWATCHDOG is not set | ||
1080 | CONFIG_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 | # | ||
1113 | CONFIG_VIDEO_DEV=m | ||
1114 | CONFIG_VIDEO_V4L2_COMMON=m | ||
1115 | CONFIG_VIDEO_ALLOW_V4L1=y | ||
1116 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
1117 | CONFIG_DVB_CORE=m | ||
1118 | CONFIG_VIDEO_MEDIA=m | ||
1119 | |||
1120 | # | ||
1121 | # Multimedia drivers | ||
1122 | # | ||
1123 | # CONFIG_MEDIA_ATTACH is not set | ||
1124 | CONFIG_MEDIA_TUNER=m | ||
1125 | # CONFIG_MEDIA_TUNER_CUSTOMISE is not set | ||
1126 | CONFIG_MEDIA_TUNER_SIMPLE=m | ||
1127 | CONFIG_MEDIA_TUNER_TDA8290=m | ||
1128 | CONFIG_MEDIA_TUNER_TDA9887=m | ||
1129 | CONFIG_MEDIA_TUNER_TEA5761=m | ||
1130 | CONFIG_MEDIA_TUNER_TEA5767=m | ||
1131 | CONFIG_MEDIA_TUNER_MT20XX=m | ||
1132 | CONFIG_MEDIA_TUNER_XC2028=m | ||
1133 | CONFIG_MEDIA_TUNER_XC5000=m | ||
1134 | CONFIG_MEDIA_TUNER_MC44S803=m | ||
1135 | CONFIG_VIDEO_V4L2=m | ||
1136 | CONFIG_VIDEO_V4L1=m | ||
1137 | CONFIG_VIDEOBUF_GEN=m | ||
1138 | CONFIG_VIDEO_CAPTURE_DRIVERS=y | ||
1139 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
1140 | # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set | ||
1141 | CONFIG_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 | ||
1148 | CONFIG_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 | ||
1154 | CONFIG_SOC_CAMERA_PLATFORM=m | ||
1155 | # CONFIG_SOC_CAMERA_OV772X is not set | ||
1156 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set | ||
1157 | CONFIG_V4L_USB_DRIVERS=y | ||
1158 | # CONFIG_USB_VIDEO_CLASS is not set | ||
1159 | CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y | ||
1160 | CONFIG_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 | ||
1187 | CONFIG_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 | ||
1209 | CONFIG_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 | ||
1215 | CONFIG_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 | ||
1239 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
1240 | CONFIG_FB=y | ||
1241 | CONFIG_FIRMWARE_EDID=y | ||
1242 | # CONFIG_FB_DDC is not set | ||
1243 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
1244 | CONFIG_FB_CFB_FILLRECT=y | ||
1245 | CONFIG_FB_CFB_COPYAREA=y | ||
1246 | CONFIG_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 | ||
1256 | CONFIG_FB_MODE_HELPERS=y | ||
1257 | CONFIG_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 | ||
1264 | CONFIG_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 | ||
1270 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
1271 | CONFIG_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 | ||
1276 | CONFIG_LCD_PLATFORM=y | ||
1277 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
1278 | # CONFIG_BACKLIGHT_GENERIC is not set | ||
1279 | CONFIG_BACKLIGHT_PWM=y | ||
1280 | |||
1281 | # | ||
1282 | # Display device support | ||
1283 | # | ||
1284 | CONFIG_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 | ||
1294 | CONFIG_DUMMY_CONSOLE=y | ||
1295 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
1296 | CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y | ||
1297 | CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y | ||
1298 | CONFIG_FONTS=y | ||
1299 | CONFIG_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 | ||
1305 | CONFIG_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 | ||
1309 | CONFIG_LOGO=y | ||
1310 | # CONFIG_LOGO_LINUX_MONO is not set | ||
1311 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
1312 | CONFIG_LOGO_LINUX_CLUT224=y | ||
1313 | CONFIG_SOUND=y | ||
1314 | CONFIG_SOUND_OSS_CORE=y | ||
1315 | CONFIG_SND=y | ||
1316 | CONFIG_SND_TIMER=y | ||
1317 | CONFIG_SND_PCM=y | ||
1318 | CONFIG_SND_HWDEP=m | ||
1319 | CONFIG_SND_RAWMIDI=m | ||
1320 | CONFIG_SND_JACK=y | ||
1321 | CONFIG_SND_SEQUENCER=m | ||
1322 | CONFIG_SND_SEQ_DUMMY=m | ||
1323 | CONFIG_SND_OSSEMUL=y | ||
1324 | CONFIG_SND_MIXER_OSS=m | ||
1325 | CONFIG_SND_PCM_OSS=m | ||
1326 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
1327 | CONFIG_SND_SEQUENCER_OSS=y | ||
1328 | CONFIG_SND_DYNAMIC_MINORS=y | ||
1329 | CONFIG_SND_SUPPORT_OLD_API=y | ||
1330 | CONFIG_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 | ||
1336 | CONFIG_SND_USB=y | ||
1337 | CONFIG_SND_USB_AUDIO=m | ||
1338 | CONFIG_SND_USB_CAIAQ=m | ||
1339 | CONFIG_SND_USB_CAIAQ_INPUT=y | ||
1340 | CONFIG_SND_SOC=y | ||
1341 | CONFIG_SND_S3C24XX_SOC=y | ||
1342 | CONFIG_SND_S3C24XX_SOC_I2S=y | ||
1343 | # CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set | ||
1344 | CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=y | ||
1345 | CONFIG_SND_SOC_I2C_AND_SPI=y | ||
1346 | # CONFIG_SND_SOC_ALL_CODECS is not set | ||
1347 | CONFIG_SND_SOC_L3=y | ||
1348 | CONFIG_SND_SOC_UDA134X=y | ||
1349 | # CONFIG_SOUND_PRIME is not set | ||
1350 | CONFIG_HID_SUPPORT=y | ||
1351 | CONFIG_HID=y | ||
1352 | # CONFIG_HID_DEBUG is not set | ||
1353 | CONFIG_HIDRAW=y | ||
1354 | |||
1355 | # | ||
1356 | # USB Input Devices | ||
1357 | # | ||
1358 | CONFIG_USB_HID=y | ||
1359 | CONFIG_HID_PID=y | ||
1360 | CONFIG_USB_HIDDEV=y | ||
1361 | |||
1362 | # | ||
1363 | # Special HID drivers | ||
1364 | # | ||
1365 | CONFIG_HID_A4TECH=y | ||
1366 | CONFIG_HID_APPLE=y | ||
1367 | CONFIG_HID_BELKIN=y | ||
1368 | CONFIG_HID_CHERRY=y | ||
1369 | CONFIG_HID_CHICONY=y | ||
1370 | CONFIG_HID_CYPRESS=y | ||
1371 | # CONFIG_DRAGONRISE_FF is not set | ||
1372 | CONFIG_HID_EZKEY=y | ||
1373 | CONFIG_HID_KYE=y | ||
1374 | CONFIG_HID_GYRATION=y | ||
1375 | CONFIG_HID_KENSINGTON=y | ||
1376 | CONFIG_HID_LOGITECH=y | ||
1377 | # CONFIG_LOGITECH_FF is not set | ||
1378 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
1379 | CONFIG_HID_MICROSOFT=y | ||
1380 | CONFIG_HID_MONTEREY=y | ||
1381 | CONFIG_HID_NTRIG=y | ||
1382 | CONFIG_HID_PANTHERLORD=y | ||
1383 | # CONFIG_PANTHERLORD_FF is not set | ||
1384 | CONFIG_HID_PETALYNX=y | ||
1385 | CONFIG_HID_SAMSUNG=y | ||
1386 | CONFIG_HID_SONY=y | ||
1387 | CONFIG_HID_SUNPLUS=y | ||
1388 | # CONFIG_GREENASIA_FF is not set | ||
1389 | CONFIG_HID_TOPSEED=y | ||
1390 | # CONFIG_THRUSTMASTER_FF is not set | ||
1391 | # CONFIG_ZEROPLUS_FF is not set | ||
1392 | CONFIG_USB_SUPPORT=y | ||
1393 | CONFIG_USB_ARCH_HAS_HCD=y | ||
1394 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
1395 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
1396 | CONFIG_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 | # | ||
1403 | CONFIG_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 | ||
1419 | CONFIG_USB_OHCI_HCD=y | ||
1420 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | ||
1421 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1422 | CONFIG_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 | # | ||
1432 | CONFIG_USB_ACM=m | ||
1433 | # CONFIG_USB_PRINTER is not set | ||
1434 | CONFIG_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 | # | ||
1444 | CONFIG_USB_STORAGE=m | ||
1445 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
1446 | CONFIG_USB_STORAGE_DATAFAB=m | ||
1447 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
1448 | CONFIG_USB_STORAGE_ISD200=m | ||
1449 | CONFIG_USB_STORAGE_USBAT=m | ||
1450 | CONFIG_USB_STORAGE_SDDR09=m | ||
1451 | CONFIG_USB_STORAGE_SDDR55=m | ||
1452 | CONFIG_USB_STORAGE_JUMPSHOT=m | ||
1453 | CONFIG_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 | ||
1457 | CONFIG_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 | # | ||
1468 | CONFIG_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 | ||
1477 | CONFIG_USB_SERIAL_CP210X=m | ||
1478 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set | ||
1479 | # CONFIG_USB_SERIAL_EMPEG is not set | ||
1480 | CONFIG_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 | ||
1502 | CONFIG_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 | ||
1539 | CONFIG_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 | ||
1543 | CONFIG_USB_GADGET_VBUS_DRAW=2 | ||
1544 | CONFIG_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 | ||
1552 | CONFIG_USB_GADGET_S3C2410=y | ||
1553 | CONFIG_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 | ||
1564 | CONFIG_USB_ZERO=m | ||
1565 | CONFIG_USB_ETH=m | ||
1566 | CONFIG_USB_ETH_RNDIS=y | ||
1567 | CONFIG_USB_GADGETFS=m | ||
1568 | CONFIG_USB_FILE_STORAGE=m | ||
1569 | # CONFIG_USB_FILE_STORAGE_TEST is not set | ||
1570 | CONFIG_USB_G_SERIAL=m | ||
1571 | # CONFIG_USB_MIDI_GADGET is not set | ||
1572 | # CONFIG_USB_G_PRINTER is not set | ||
1573 | CONFIG_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 | ||
1580 | CONFIG_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 | # | ||
1587 | CONFIG_MMC_BLOCK=y | ||
1588 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
1589 | CONFIG_SDIO_UART=y | ||
1590 | # CONFIG_MMC_TEST is not set | ||
1591 | |||
1592 | # | ||
1593 | # MMC/SD/SDIO Host Controller Drivers | ||
1594 | # | ||
1595 | CONFIG_MMC_SDHCI=y | ||
1596 | CONFIG_MMC_SPI=y | ||
1597 | CONFIG_MMC_S3C=y | ||
1598 | # CONFIG_MEMSTICK is not set | ||
1599 | # CONFIG_ACCESSIBILITY is not set | ||
1600 | CONFIG_NEW_LEDS=y | ||
1601 | CONFIG_LEDS_CLASS=y | ||
1602 | |||
1603 | # | ||
1604 | # LED drivers | ||
1605 | # | ||
1606 | CONFIG_LEDS_S3C24XX=y | ||
1607 | # CONFIG_LEDS_PCA9532 is not set | ||
1608 | CONFIG_LEDS_GPIO=y | ||
1609 | CONFIG_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 | # | ||
1619 | CONFIG_LEDS_TRIGGERS=y | ||
1620 | CONFIG_LEDS_TRIGGER_TIMER=y | ||
1621 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
1622 | CONFIG_LEDS_TRIGGER_BACKLIGHT=y | ||
1623 | CONFIG_LEDS_TRIGGER_GPIO=y | ||
1624 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
1625 | |||
1626 | # | ||
1627 | # iptables trigger is under Netfilter config (LED target) | ||
1628 | # | ||
1629 | CONFIG_RTC_LIB=y | ||
1630 | CONFIG_RTC_CLASS=y | ||
1631 | CONFIG_RTC_HCTOSYS=y | ||
1632 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1633 | # CONFIG_RTC_DEBUG is not set | ||
1634 | |||
1635 | # | ||
1636 | # RTC interfaces | ||
1637 | # | ||
1638 | CONFIG_RTC_INTF_SYSFS=y | ||
1639 | CONFIG_RTC_INTF_PROC=y | ||
1640 | CONFIG_RTC_INTF_DEV=y | ||
1641 | CONFIG_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 | # | ||
1690 | CONFIG_RTC_DRV_S3C=y | ||
1691 | CONFIG_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 | # | ||
1704 | CONFIG_EXT2_FS=m | ||
1705 | CONFIG_EXT2_FS_XATTR=y | ||
1706 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
1707 | CONFIG_EXT2_FS_SECURITY=y | ||
1708 | # CONFIG_EXT2_FS_XIP is not set | ||
1709 | CONFIG_EXT3_FS=y | ||
1710 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
1711 | CONFIG_EXT3_FS_XATTR=y | ||
1712 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
1713 | CONFIG_EXT3_FS_SECURITY=y | ||
1714 | # CONFIG_EXT4_FS is not set | ||
1715 | CONFIG_JBD=y | ||
1716 | # CONFIG_JBD_DEBUG is not set | ||
1717 | CONFIG_FS_MBCACHE=y | ||
1718 | # CONFIG_REISERFS_FS is not set | ||
1719 | # CONFIG_JFS_FS is not set | ||
1720 | CONFIG_FS_POSIX_ACL=y | ||
1721 | CONFIG_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 | ||
1726 | CONFIG_DNOTIFY=y | ||
1727 | CONFIG_INOTIFY=y | ||
1728 | CONFIG_INOTIFY_USER=y | ||
1729 | # CONFIG_QUOTA is not set | ||
1730 | CONFIG_AUTOFS_FS=y | ||
1731 | CONFIG_AUTOFS4_FS=y | ||
1732 | # CONFIG_FUSE_FS is not set | ||
1733 | CONFIG_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 | # | ||
1749 | CONFIG_FAT_FS=y | ||
1750 | CONFIG_MSDOS_FS=y | ||
1751 | CONFIG_VFAT_FS=y | ||
1752 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1753 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1754 | # CONFIG_NTFS_FS is not set | ||
1755 | |||
1756 | # | ||
1757 | # Pseudo filesystems | ||
1758 | # | ||
1759 | CONFIG_PROC_FS=y | ||
1760 | CONFIG_PROC_SYSCTL=y | ||
1761 | CONFIG_PROC_PAGE_MONITOR=y | ||
1762 | CONFIG_SYSFS=y | ||
1763 | CONFIG_TMPFS=y | ||
1764 | CONFIG_TMPFS_POSIX_ACL=y | ||
1765 | # CONFIG_HUGETLB_PAGE is not set | ||
1766 | CONFIG_CONFIGFS_FS=m | ||
1767 | CONFIG_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 | ||
1776 | CONFIG_JFFS2_FS=y | ||
1777 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1778 | CONFIG_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 | ||
1783 | CONFIG_JFFS2_ZLIB=y | ||
1784 | # CONFIG_JFFS2_LZO is not set | ||
1785 | CONFIG_JFFS2_RTIME=y | ||
1786 | # CONFIG_JFFS2_RUBIN is not set | ||
1787 | CONFIG_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 | ||
1794 | CONFIG_ROMFS_FS=y | ||
1795 | # CONFIG_ROMFS_BACKED_BY_BLOCK is not set | ||
1796 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
1797 | CONFIG_ROMFS_BACKED_BY_BOTH=y | ||
1798 | CONFIG_ROMFS_ON_BLOCK=y | ||
1799 | CONFIG_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 | ||
1803 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1804 | CONFIG_NFS_FS=y | ||
1805 | CONFIG_NFS_V3=y | ||
1806 | CONFIG_NFS_V3_ACL=y | ||
1807 | CONFIG_NFS_V4=y | ||
1808 | CONFIG_ROOT_NFS=y | ||
1809 | # CONFIG_NFSD is not set | ||
1810 | CONFIG_LOCKD=y | ||
1811 | CONFIG_LOCKD_V4=y | ||
1812 | CONFIG_NFS_ACL_SUPPORT=y | ||
1813 | CONFIG_NFS_COMMON=y | ||
1814 | CONFIG_SUNRPC=y | ||
1815 | CONFIG_SUNRPC_GSS=y | ||
1816 | CONFIG_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 | # | ||
1827 | CONFIG_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 | ||
1833 | CONFIG_MSDOS_PARTITION=y | ||
1834 | CONFIG_BSD_DISKLABEL=y | ||
1835 | CONFIG_MINIX_SUBPARTITION=y | ||
1836 | CONFIG_SOLARIS_X86_PARTITION=y | ||
1837 | CONFIG_UNIXWARE_DISKLABEL=y | ||
1838 | CONFIG_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 | ||
1844 | CONFIG_EFI_PARTITION=y | ||
1845 | # CONFIG_SYSV68_PARTITION is not set | ||
1846 | CONFIG_NLS=y | ||
1847 | CONFIG_NLS_DEFAULT="cp437" | ||
1848 | CONFIG_NLS_CODEPAGE_437=m | ||
1849 | CONFIG_NLS_CODEPAGE_737=m | ||
1850 | CONFIG_NLS_CODEPAGE_775=m | ||
1851 | CONFIG_NLS_CODEPAGE_850=m | ||
1852 | CONFIG_NLS_CODEPAGE_852=m | ||
1853 | CONFIG_NLS_CODEPAGE_855=m | ||
1854 | CONFIG_NLS_CODEPAGE_857=m | ||
1855 | CONFIG_NLS_CODEPAGE_860=m | ||
1856 | CONFIG_NLS_CODEPAGE_861=m | ||
1857 | CONFIG_NLS_CODEPAGE_862=m | ||
1858 | CONFIG_NLS_CODEPAGE_863=m | ||
1859 | CONFIG_NLS_CODEPAGE_864=m | ||
1860 | CONFIG_NLS_CODEPAGE_865=m | ||
1861 | CONFIG_NLS_CODEPAGE_866=m | ||
1862 | CONFIG_NLS_CODEPAGE_869=m | ||
1863 | CONFIG_NLS_CODEPAGE_936=m | ||
1864 | CONFIG_NLS_CODEPAGE_950=m | ||
1865 | CONFIG_NLS_CODEPAGE_932=m | ||
1866 | CONFIG_NLS_CODEPAGE_949=m | ||
1867 | CONFIG_NLS_CODEPAGE_874=m | ||
1868 | CONFIG_NLS_ISO8859_8=m | ||
1869 | CONFIG_NLS_CODEPAGE_1250=m | ||
1870 | CONFIG_NLS_CODEPAGE_1251=m | ||
1871 | CONFIG_NLS_ASCII=m | ||
1872 | CONFIG_NLS_ISO8859_1=m | ||
1873 | CONFIG_NLS_ISO8859_2=m | ||
1874 | CONFIG_NLS_ISO8859_3=m | ||
1875 | CONFIG_NLS_ISO8859_4=m | ||
1876 | CONFIG_NLS_ISO8859_5=m | ||
1877 | CONFIG_NLS_ISO8859_6=m | ||
1878 | CONFIG_NLS_ISO8859_7=m | ||
1879 | CONFIG_NLS_ISO8859_9=m | ||
1880 | CONFIG_NLS_ISO8859_13=m | ||
1881 | CONFIG_NLS_ISO8859_14=m | ||
1882 | CONFIG_NLS_ISO8859_15=m | ||
1883 | CONFIG_NLS_KOI8_R=m | ||
1884 | CONFIG_NLS_KOI8_U=m | ||
1885 | CONFIG_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 | ||
1894 | CONFIG_FRAME_WARN=1024 | ||
1895 | # CONFIG_MAGIC_SYSRQ is not set | ||
1896 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1897 | CONFIG_DEBUG_FS=y | ||
1898 | # CONFIG_HEADERS_CHECK is not set | ||
1899 | CONFIG_DEBUG_KERNEL=y | ||
1900 | # CONFIG_DEBUG_SHIRQ is not set | ||
1901 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1902 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1903 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1904 | CONFIG_DETECT_HUNG_TASK=y | ||
1905 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
1906 | CONFIG_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 | ||
1923 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1924 | CONFIG_DEBUG_INFO=y | ||
1925 | # CONFIG_DEBUG_VM is not set | ||
1926 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1927 | CONFIG_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 | ||
1938 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
1939 | # CONFIG_PAGE_POISONING is not set | ||
1940 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
1941 | CONFIG_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 | ||
1958 | CONFIG_HAVE_ARCH_KGDB=y | ||
1959 | # CONFIG_KGDB is not set | ||
1960 | CONFIG_ARM_UNWIND=y | ||
1961 | CONFIG_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 | ||
1965 | CONFIG_DEBUG_S3C_UART=0 | ||
1966 | |||
1967 | # | ||
1968 | # Security options | ||
1969 | # | ||
1970 | CONFIG_KEYS=y | ||
1971 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
1972 | # CONFIG_SECURITY is not set | ||
1973 | # CONFIG_SECURITYFS is not set | ||
1974 | CONFIG_SECURITY_FILE_CAPABILITIES=y | ||
1975 | CONFIG_CRYPTO=y | ||
1976 | |||
1977 | # | ||
1978 | # Crypto core or helper | ||
1979 | # | ||
1980 | CONFIG_CRYPTO_FIPS=y | ||
1981 | CONFIG_CRYPTO_ALGAPI=y | ||
1982 | CONFIG_CRYPTO_ALGAPI2=y | ||
1983 | CONFIG_CRYPTO_AEAD=m | ||
1984 | CONFIG_CRYPTO_AEAD2=y | ||
1985 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1986 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1987 | CONFIG_CRYPTO_HASH=y | ||
1988 | CONFIG_CRYPTO_HASH2=y | ||
1989 | CONFIG_CRYPTO_RNG=m | ||
1990 | CONFIG_CRYPTO_RNG2=y | ||
1991 | CONFIG_CRYPTO_PCOMP=y | ||
1992 | CONFIG_CRYPTO_MANAGER=y | ||
1993 | CONFIG_CRYPTO_MANAGER2=y | ||
1994 | CONFIG_CRYPTO_GF128MUL=m | ||
1995 | CONFIG_CRYPTO_NULL=m | ||
1996 | CONFIG_CRYPTO_WORKQUEUE=y | ||
1997 | CONFIG_CRYPTO_CRYPTD=m | ||
1998 | CONFIG_CRYPTO_AUTHENC=m | ||
1999 | CONFIG_CRYPTO_TEST=m | ||
2000 | |||
2001 | # | ||
2002 | # Authenticated Encryption with Associated Data | ||
2003 | # | ||
2004 | CONFIG_CRYPTO_CCM=m | ||
2005 | CONFIG_CRYPTO_GCM=m | ||
2006 | CONFIG_CRYPTO_SEQIV=m | ||
2007 | |||
2008 | # | ||
2009 | # Block modes | ||
2010 | # | ||
2011 | CONFIG_CRYPTO_CBC=y | ||
2012 | CONFIG_CRYPTO_CTR=m | ||
2013 | CONFIG_CRYPTO_CTS=m | ||
2014 | CONFIG_CRYPTO_ECB=y | ||
2015 | CONFIG_CRYPTO_LRW=m | ||
2016 | CONFIG_CRYPTO_PCBC=m | ||
2017 | CONFIG_CRYPTO_XTS=m | ||
2018 | |||
2019 | # | ||
2020 | # Hash modes | ||
2021 | # | ||
2022 | CONFIG_CRYPTO_HMAC=y | ||
2023 | CONFIG_CRYPTO_XCBC=m | ||
2024 | |||
2025 | # | ||
2026 | # Digest | ||
2027 | # | ||
2028 | CONFIG_CRYPTO_CRC32C=m | ||
2029 | CONFIG_CRYPTO_MD4=m | ||
2030 | CONFIG_CRYPTO_MD5=y | ||
2031 | CONFIG_CRYPTO_MICHAEL_MIC=y | ||
2032 | CONFIG_CRYPTO_RMD128=m | ||
2033 | CONFIG_CRYPTO_RMD160=m | ||
2034 | CONFIG_CRYPTO_RMD256=m | ||
2035 | CONFIG_CRYPTO_RMD320=m | ||
2036 | CONFIG_CRYPTO_SHA1=m | ||
2037 | CONFIG_CRYPTO_SHA256=m | ||
2038 | CONFIG_CRYPTO_SHA512=m | ||
2039 | CONFIG_CRYPTO_TGR192=m | ||
2040 | CONFIG_CRYPTO_WP512=m | ||
2041 | |||
2042 | # | ||
2043 | # Ciphers | ||
2044 | # | ||
2045 | CONFIG_CRYPTO_AES=y | ||
2046 | CONFIG_CRYPTO_ANUBIS=m | ||
2047 | CONFIG_CRYPTO_ARC4=y | ||
2048 | CONFIG_CRYPTO_BLOWFISH=m | ||
2049 | CONFIG_CRYPTO_CAMELLIA=m | ||
2050 | CONFIG_CRYPTO_CAST5=m | ||
2051 | CONFIG_CRYPTO_CAST6=m | ||
2052 | CONFIG_CRYPTO_DES=y | ||
2053 | CONFIG_CRYPTO_FCRYPT=m | ||
2054 | CONFIG_CRYPTO_KHAZAD=m | ||
2055 | CONFIG_CRYPTO_SALSA20=m | ||
2056 | CONFIG_CRYPTO_SEED=m | ||
2057 | CONFIG_CRYPTO_SERPENT=m | ||
2058 | CONFIG_CRYPTO_TEA=m | ||
2059 | CONFIG_CRYPTO_TWOFISH=m | ||
2060 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
2061 | |||
2062 | # | ||
2063 | # Compression | ||
2064 | # | ||
2065 | CONFIG_CRYPTO_DEFLATE=m | ||
2066 | CONFIG_CRYPTO_ZLIB=m | ||
2067 | CONFIG_CRYPTO_LZO=m | ||
2068 | |||
2069 | # | ||
2070 | # Random Number Generation | ||
2071 | # | ||
2072 | CONFIG_CRYPTO_ANSI_CPRNG=m | ||
2073 | CONFIG_CRYPTO_HW=y | ||
2074 | # CONFIG_BINARY_PRINTF is not set | ||
2075 | |||
2076 | # | ||
2077 | # Library routines | ||
2078 | # | ||
2079 | CONFIG_BITREVERSE=y | ||
2080 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
2081 | CONFIG_CRC_CCITT=m | ||
2082 | CONFIG_CRC16=m | ||
2083 | CONFIG_CRC_T10DIF=y | ||
2084 | CONFIG_CRC_ITU_T=y | ||
2085 | CONFIG_CRC32=y | ||
2086 | CONFIG_CRC7=y | ||
2087 | CONFIG_LIBCRC32C=m | ||
2088 | CONFIG_ZLIB_INFLATE=y | ||
2089 | CONFIG_ZLIB_DEFLATE=y | ||
2090 | CONFIG_LZO_COMPRESS=m | ||
2091 | CONFIG_LZO_DECOMPRESS=m | ||
2092 | CONFIG_DECOMPRESS_GZIP=y | ||
2093 | CONFIG_DECOMPRESS_BZIP2=y | ||
2094 | CONFIG_DECOMPRESS_LZMA=y | ||
2095 | CONFIG_HAS_IOMEM=y | ||
2096 | CONFIG_HAS_DMA=y | ||
2097 | CONFIG_NLATTR=y | ||
diff --git a/arch/arm/configs/mx27_defconfig b/arch/arm/configs/mx27_defconfig index 083516cd0d7f..75263a83741c 100644 --- a/arch/arm/configs/mx27_defconfig +++ b/arch/arm/configs/mx27_defconfig | |||
@@ -1,15 +1,15 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.30-rc1 | 3 | # Linux kernel version: 2.6.31-rc4 |
4 | # Wed Apr 8 10:18:06 2009 | 4 | # Fri Jul 24 16:08:06 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 9 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | 10 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_GENERIC_CLOCKEVENTS=y | 11 | CONFIG_GENERIC_CLOCKEVENTS=y |
11 | CONFIG_MMU=y | 12 | CONFIG_MMU=y |
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
14 | CONFIG_STACKTRACE_SUPPORT=y | 14 | CONFIG_STACKTRACE_SUPPORT=y |
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -18,14 +18,13 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
18 | CONFIG_HARDIRQS_SW_RESEND=y | 18 | CONFIG_HARDIRQS_SW_RESEND=y |
19 | CONFIG_GENERIC_IRQ_PROBE=y | 19 | CONFIG_GENERIC_IRQ_PROBE=y |
20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=y | 21 | CONFIG_GENERIC_HWEIGHT=y |
24 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_ARCH_MTD_XIP=y | 23 | CONFIG_ARCH_MTD_XIP=y |
26 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 24 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
27 | CONFIG_VECTORS_BASE=0xffff0000 | 25 | CONFIG_VECTORS_BASE=0xffff0000 |
28 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 26 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
27 | CONFIG_CONSTRUCTORS=y | ||
29 | 28 | ||
30 | # | 29 | # |
31 | # General setup | 30 | # General setup |
@@ -85,7 +84,12 @@ CONFIG_TIMERFD=y | |||
85 | CONFIG_EVENTFD=y | 84 | CONFIG_EVENTFD=y |
86 | CONFIG_SHMEM=y | 85 | CONFIG_SHMEM=y |
87 | CONFIG_AIO=y | 86 | CONFIG_AIO=y |
87 | |||
88 | # | ||
89 | # Performance Counters | ||
90 | # | ||
88 | CONFIG_VM_EVENT_COUNTERS=y | 91 | CONFIG_VM_EVENT_COUNTERS=y |
92 | # CONFIG_STRIP_ASM_SYMS is not set | ||
89 | # CONFIG_COMPAT_BRK is not set | 93 | # CONFIG_COMPAT_BRK is not set |
90 | CONFIG_SLAB=y | 94 | CONFIG_SLAB=y |
91 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLUB is not set |
@@ -99,6 +103,12 @@ CONFIG_KPROBES=y | |||
99 | CONFIG_KRETPROBES=y | 103 | CONFIG_KRETPROBES=y |
100 | CONFIG_HAVE_KPROBES=y | 104 | CONFIG_HAVE_KPROBES=y |
101 | CONFIG_HAVE_KRETPROBES=y | 105 | CONFIG_HAVE_KRETPROBES=y |
106 | CONFIG_HAVE_CLK=y | ||
107 | |||
108 | # | ||
109 | # GCOV-based kernel profiling | ||
110 | # | ||
111 | # CONFIG_GCOV_KERNEL is not set | ||
102 | # CONFIG_SLOW_WORK is not set | 112 | # CONFIG_SLOW_WORK is not set |
103 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 113 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
104 | CONFIG_SLABINFO=y | 114 | CONFIG_SLABINFO=y |
@@ -111,7 +121,7 @@ CONFIG_MODULE_UNLOAD=y | |||
111 | # CONFIG_MODVERSIONS is not set | 121 | # CONFIG_MODVERSIONS is not set |
112 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 122 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
113 | CONFIG_BLOCK=y | 123 | CONFIG_BLOCK=y |
114 | # CONFIG_LBD is not set | 124 | CONFIG_LBDAF=y |
115 | # CONFIG_BLK_DEV_BSG is not set | 125 | # CONFIG_BLK_DEV_BSG is not set |
116 | # CONFIG_BLK_DEV_INTEGRITY is not set | 126 | # CONFIG_BLK_DEV_INTEGRITY is not set |
117 | 127 | ||
@@ -138,13 +148,14 @@ CONFIG_FREEZER=y | |||
138 | # CONFIG_ARCH_VERSATILE is not set | 148 | # CONFIG_ARCH_VERSATILE is not set |
139 | # CONFIG_ARCH_AT91 is not set | 149 | # CONFIG_ARCH_AT91 is not set |
140 | # CONFIG_ARCH_CLPS711X is not set | 150 | # CONFIG_ARCH_CLPS711X is not set |
151 | # CONFIG_ARCH_GEMINI is not set | ||
141 | # CONFIG_ARCH_EBSA110 is not set | 152 | # CONFIG_ARCH_EBSA110 is not set |
142 | # CONFIG_ARCH_EP93XX is not set | 153 | # CONFIG_ARCH_EP93XX is not set |
143 | # CONFIG_ARCH_GEMINI is not set | ||
144 | # CONFIG_ARCH_FOOTBRIDGE is not set | 154 | # CONFIG_ARCH_FOOTBRIDGE is not set |
155 | CONFIG_ARCH_MXC=y | ||
156 | # CONFIG_ARCH_STMP3XXX is not set | ||
145 | # CONFIG_ARCH_NETX is not set | 157 | # CONFIG_ARCH_NETX is not set |
146 | # CONFIG_ARCH_H720X is not set | 158 | # CONFIG_ARCH_H720X is not set |
147 | # CONFIG_ARCH_IMX is not set | ||
148 | # CONFIG_ARCH_IOP13XX is not set | 159 | # CONFIG_ARCH_IOP13XX is not set |
149 | # CONFIG_ARCH_IOP32X is not set | 160 | # CONFIG_ARCH_IOP32X is not set |
150 | # CONFIG_ARCH_IOP33X is not set | 161 | # CONFIG_ARCH_IOP33X is not set |
@@ -153,25 +164,25 @@ CONFIG_FREEZER=y | |||
153 | # CONFIG_ARCH_IXP4XX is not set | 164 | # CONFIG_ARCH_IXP4XX is not set |
154 | # CONFIG_ARCH_L7200 is not set | 165 | # CONFIG_ARCH_L7200 is not set |
155 | # CONFIG_ARCH_KIRKWOOD is not set | 166 | # CONFIG_ARCH_KIRKWOOD is not set |
156 | # CONFIG_ARCH_KS8695 is not set | ||
157 | # CONFIG_ARCH_NS9XXX is not set | ||
158 | # CONFIG_ARCH_LOKI is not set | 167 | # CONFIG_ARCH_LOKI is not set |
159 | # CONFIG_ARCH_MV78XX0 is not set | 168 | # CONFIG_ARCH_MV78XX0 is not set |
160 | CONFIG_ARCH_MXC=y | ||
161 | # CONFIG_ARCH_ORION5X is not set | 169 | # CONFIG_ARCH_ORION5X is not set |
170 | # CONFIG_ARCH_MMP is not set | ||
171 | # CONFIG_ARCH_KS8695 is not set | ||
172 | # CONFIG_ARCH_NS9XXX is not set | ||
173 | # CONFIG_ARCH_W90X900 is not set | ||
162 | # CONFIG_ARCH_PNX4008 is not set | 174 | # CONFIG_ARCH_PNX4008 is not set |
163 | # CONFIG_ARCH_PXA is not set | 175 | # CONFIG_ARCH_PXA is not set |
164 | # CONFIG_ARCH_MMP is not set | 176 | # CONFIG_ARCH_MSM is not set |
165 | # CONFIG_ARCH_RPC is not set | 177 | # CONFIG_ARCH_RPC is not set |
166 | # CONFIG_ARCH_SA1100 is not set | 178 | # CONFIG_ARCH_SA1100 is not set |
167 | # CONFIG_ARCH_S3C2410 is not set | 179 | # CONFIG_ARCH_S3C2410 is not set |
168 | # CONFIG_ARCH_S3C64XX is not set | 180 | # CONFIG_ARCH_S3C64XX is not set |
169 | # CONFIG_ARCH_SHARK is not set | 181 | # CONFIG_ARCH_SHARK is not set |
170 | # CONFIG_ARCH_LH7A40X is not set | 182 | # CONFIG_ARCH_LH7A40X is not set |
183 | # CONFIG_ARCH_U300 is not set | ||
171 | # CONFIG_ARCH_DAVINCI is not set | 184 | # CONFIG_ARCH_DAVINCI is not set |
172 | # CONFIG_ARCH_OMAP is not set | 185 | # CONFIG_ARCH_OMAP is not set |
173 | # CONFIG_ARCH_MSM is not set | ||
174 | # CONFIG_ARCH_W90X900 is not set | ||
175 | 186 | ||
176 | # | 187 | # |
177 | # Freescale MXC Implementations | 188 | # Freescale MXC Implementations |
@@ -188,6 +199,8 @@ CONFIG_MACH_MX27=y | |||
188 | CONFIG_MACH_MX27ADS=y | 199 | CONFIG_MACH_MX27ADS=y |
189 | CONFIG_MACH_PCM038=y | 200 | CONFIG_MACH_PCM038=y |
190 | CONFIG_MACH_PCM970_BASEBOARD=y | 201 | CONFIG_MACH_PCM970_BASEBOARD=y |
202 | CONFIG_MACH_MX27_3DS=y | ||
203 | CONFIG_MACH_MX27LITE=y | ||
191 | CONFIG_MXC_IRQ_PRIOR=y | 204 | CONFIG_MXC_IRQ_PRIOR=y |
192 | CONFIG_MXC_PWM=y | 205 | CONFIG_MXC_PWM=y |
193 | 206 | ||
@@ -213,7 +226,6 @@ CONFIG_ARM_THUMB=y | |||
213 | # CONFIG_CPU_DCACHE_DISABLE is not set | 226 | # CONFIG_CPU_DCACHE_DISABLE is not set |
214 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | 227 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set |
215 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | 228 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set |
216 | # CONFIG_OUTER_CACHE is not set | ||
217 | CONFIG_COMMON_CLKDEV=y | 229 | CONFIG_COMMON_CLKDEV=y |
218 | 230 | ||
219 | # | 231 | # |
@@ -238,7 +250,6 @@ CONFIG_PREEMPT=y | |||
238 | CONFIG_HZ=100 | 250 | CONFIG_HZ=100 |
239 | CONFIG_AEABI=y | 251 | CONFIG_AEABI=y |
240 | CONFIG_OABI_COMPAT=y | 252 | CONFIG_OABI_COMPAT=y |
241 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
242 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | 253 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
243 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | 254 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
244 | # CONFIG_HIGHMEM is not set | 255 | # CONFIG_HIGHMEM is not set |
@@ -253,10 +264,11 @@ CONFIG_SPLIT_PTLOCK_CPUS=4096 | |||
253 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 264 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
254 | CONFIG_ZONE_DMA_FLAG=0 | 265 | CONFIG_ZONE_DMA_FLAG=0 |
255 | CONFIG_VIRT_TO_BUS=y | 266 | CONFIG_VIRT_TO_BUS=y |
256 | CONFIG_UNEVICTABLE_LRU=y | ||
257 | CONFIG_HAVE_MLOCK=y | 267 | CONFIG_HAVE_MLOCK=y |
258 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | 268 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y |
269 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
259 | CONFIG_ALIGNMENT_TRAP=y | 270 | CONFIG_ALIGNMENT_TRAP=y |
271 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
260 | 272 | ||
261 | # | 273 | # |
262 | # Boot options | 274 | # Boot options |
@@ -361,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
361 | # CONFIG_ECONET is not set | 373 | # CONFIG_ECONET is not set |
362 | # CONFIG_WAN_ROUTER is not set | 374 | # CONFIG_WAN_ROUTER is not set |
363 | # CONFIG_PHONET is not set | 375 | # CONFIG_PHONET is not set |
376 | # CONFIG_IEEE802154 is not set | ||
364 | # CONFIG_NET_SCHED is not set | 377 | # CONFIG_NET_SCHED is not set |
365 | # CONFIG_DCB is not set | 378 | # CONFIG_DCB is not set |
366 | 379 | ||
@@ -474,7 +487,16 @@ CONFIG_MTD_PHYSMAP=y | |||
474 | # CONFIG_MTD_DOC2000 is not set | 487 | # CONFIG_MTD_DOC2000 is not set |
475 | # CONFIG_MTD_DOC2001 is not set | 488 | # CONFIG_MTD_DOC2001 is not set |
476 | # CONFIG_MTD_DOC2001PLUS is not set | 489 | # CONFIG_MTD_DOC2001PLUS is not set |
477 | # CONFIG_MTD_NAND is not set | 490 | CONFIG_MTD_NAND=y |
491 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
492 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
493 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
494 | # CONFIG_MTD_NAND_GPIO is not set | ||
495 | CONFIG_MTD_NAND_IDS=y | ||
496 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
497 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
498 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
499 | CONFIG_MTD_NAND_MXC=y | ||
478 | # CONFIG_MTD_ONENAND is not set | 500 | # CONFIG_MTD_ONENAND is not set |
479 | 501 | ||
480 | # | 502 | # |
@@ -485,7 +507,15 @@ CONFIG_MTD_PHYSMAP=y | |||
485 | # | 507 | # |
486 | # UBI - Unsorted block images | 508 | # UBI - Unsorted block images |
487 | # | 509 | # |
488 | # CONFIG_MTD_UBI is not set | 510 | CONFIG_MTD_UBI=y |
511 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
512 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
513 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
514 | |||
515 | # | ||
516 | # UBI debugging options | ||
517 | # | ||
518 | # CONFIG_MTD_UBI_DEBUG is not set | ||
489 | # CONFIG_PARPORT is not set | 519 | # CONFIG_PARPORT is not set |
490 | CONFIG_BLK_DEV=y | 520 | CONFIG_BLK_DEV=y |
491 | # CONFIG_BLK_DEV_COW_COMMON is not set | 521 | # CONFIG_BLK_DEV_COW_COMMON is not set |
@@ -494,7 +524,21 @@ CONFIG_BLK_DEV=y | |||
494 | # CONFIG_BLK_DEV_RAM is not set | 524 | # CONFIG_BLK_DEV_RAM is not set |
495 | # CONFIG_CDROM_PKTCDVD is not set | 525 | # CONFIG_CDROM_PKTCDVD is not set |
496 | # CONFIG_ATA_OVER_ETH is not set | 526 | # CONFIG_ATA_OVER_ETH is not set |
497 | # CONFIG_MISC_DEVICES is not set | 527 | # CONFIG_MG_DISK is not set |
528 | CONFIG_MISC_DEVICES=y | ||
529 | # CONFIG_ICS932S401 is not set | ||
530 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
531 | # CONFIG_ISL29003 is not set | ||
532 | # CONFIG_C2PORT is not set | ||
533 | |||
534 | # | ||
535 | # EEPROM support | ||
536 | # | ||
537 | CONFIG_EEPROM_AT24=y | ||
538 | # CONFIG_EEPROM_AT25 is not set | ||
539 | # CONFIG_EEPROM_LEGACY is not set | ||
540 | # CONFIG_EEPROM_MAX6875 is not set | ||
541 | # CONFIG_EEPROM_93CX6 is not set | ||
498 | CONFIG_HAVE_IDE=y | 542 | CONFIG_HAVE_IDE=y |
499 | # CONFIG_IDE is not set | 543 | # CONFIG_IDE is not set |
500 | 544 | ||
@@ -508,7 +552,6 @@ CONFIG_HAVE_IDE=y | |||
508 | # CONFIG_ATA is not set | 552 | # CONFIG_ATA is not set |
509 | # CONFIG_MD is not set | 553 | # CONFIG_MD is not set |
510 | CONFIG_NETDEVICES=y | 554 | CONFIG_NETDEVICES=y |
511 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
512 | # CONFIG_DUMMY is not set | 555 | # CONFIG_DUMMY is not set |
513 | # CONFIG_BONDING is not set | 556 | # CONFIG_BONDING is not set |
514 | # CONFIG_MACVLAN is not set | 557 | # CONFIG_MACVLAN is not set |
@@ -534,6 +577,8 @@ CONFIG_NET_ETHERNET=y | |||
534 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | 577 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set |
535 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | 578 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set |
536 | # CONFIG_B44 is not set | 579 | # CONFIG_B44 is not set |
580 | # CONFIG_KS8842 is not set | ||
581 | # CONFIG_KS8851 is not set | ||
537 | CONFIG_FEC=y | 582 | CONFIG_FEC=y |
538 | # CONFIG_FEC2 is not set | 583 | # CONFIG_FEC2 is not set |
539 | # CONFIG_NETDEV_1000 is not set | 584 | # CONFIG_NETDEV_1000 is not set |
@@ -580,6 +625,11 @@ CONFIG_INPUT_EVDEV=y | |||
580 | # CONFIG_INPUT_TABLET is not set | 625 | # CONFIG_INPUT_TABLET is not set |
581 | CONFIG_INPUT_TOUCHSCREEN=y | 626 | CONFIG_INPUT_TOUCHSCREEN=y |
582 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | 627 | # CONFIG_TOUCHSCREEN_ADS7846 is not set |
628 | # CONFIG_TOUCHSCREEN_AD7877 is not set | ||
629 | # CONFIG_TOUCHSCREEN_AD7879_I2C is not set | ||
630 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set | ||
631 | # CONFIG_TOUCHSCREEN_AD7879 is not set | ||
632 | # CONFIG_TOUCHSCREEN_EETI is not set | ||
583 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 633 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
584 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 634 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
585 | # CONFIG_TOUCHSCREEN_ELO is not set | 635 | # CONFIG_TOUCHSCREEN_ELO is not set |
@@ -592,6 +642,7 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
592 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | 642 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set |
593 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set | 643 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set |
594 | # CONFIG_TOUCHSCREEN_TSC2007 is not set | 644 | # CONFIG_TOUCHSCREEN_TSC2007 is not set |
645 | # CONFIG_TOUCHSCREEN_W90X900 is not set | ||
595 | # CONFIG_INPUT_MISC is not set | 646 | # CONFIG_INPUT_MISC is not set |
596 | 647 | ||
597 | # | 648 | # |
@@ -644,6 +695,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
644 | # | 695 | # |
645 | # I2C system bus drivers (mostly embedded / system-on-chip) | 696 | # I2C system bus drivers (mostly embedded / system-on-chip) |
646 | # | 697 | # |
698 | # CONFIG_I2C_DESIGNWARE is not set | ||
647 | # CONFIG_I2C_GPIO is not set | 699 | # CONFIG_I2C_GPIO is not set |
648 | CONFIG_I2C_IMX=y | 700 | CONFIG_I2C_IMX=y |
649 | # CONFIG_I2C_OCORES is not set | 701 | # CONFIG_I2C_OCORES is not set |
@@ -668,7 +720,6 @@ CONFIG_I2C_IMX=y | |||
668 | # CONFIG_SENSORS_PCF8574 is not set | 720 | # CONFIG_SENSORS_PCF8574 is not set |
669 | # CONFIG_PCF8575 is not set | 721 | # CONFIG_PCF8575 is not set |
670 | # CONFIG_SENSORS_PCA9539 is not set | 722 | # CONFIG_SENSORS_PCA9539 is not set |
671 | # CONFIG_SENSORS_MAX6875 is not set | ||
672 | # CONFIG_SENSORS_TSL2550 is not set | 723 | # CONFIG_SENSORS_TSL2550 is not set |
673 | # CONFIG_I2C_DEBUG_CORE is not set | 724 | # CONFIG_I2C_DEBUG_CORE is not set |
674 | # CONFIG_I2C_DEBUG_ALGO is not set | 725 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -719,6 +770,7 @@ CONFIG_W1=y | |||
719 | # | 770 | # |
720 | # CONFIG_W1_MASTER_DS2482 is not set | 771 | # CONFIG_W1_MASTER_DS2482 is not set |
721 | CONFIG_W1_MASTER_MXC=y | 772 | CONFIG_W1_MASTER_MXC=y |
773 | # CONFIG_W1_MASTER_DS1WM is not set | ||
722 | # CONFIG_W1_MASTER_GPIO is not set | 774 | # CONFIG_W1_MASTER_GPIO is not set |
723 | 775 | ||
724 | # | 776 | # |
@@ -753,54 +805,16 @@ CONFIG_SSB_POSSIBLE=y | |||
753 | # CONFIG_TPS65010 is not set | 805 | # CONFIG_TPS65010 is not set |
754 | # CONFIG_TWL4030_CORE is not set | 806 | # CONFIG_TWL4030_CORE is not set |
755 | # CONFIG_MFD_TMIO is not set | 807 | # CONFIG_MFD_TMIO is not set |
808 | # CONFIG_MFD_T7L66XB is not set | ||
809 | # CONFIG_MFD_TC6387XB is not set | ||
756 | # CONFIG_MFD_TC6393XB is not set | 810 | # CONFIG_MFD_TC6393XB is not set |
757 | # CONFIG_PMIC_DA903X is not set | 811 | # CONFIG_PMIC_DA903X is not set |
758 | # CONFIG_MFD_WM8400 is not set | 812 | # CONFIG_MFD_WM8400 is not set |
759 | # CONFIG_MFD_WM8350_I2C is not set | 813 | # CONFIG_MFD_WM8350_I2C is not set |
760 | # CONFIG_MFD_PCF50633 is not set | 814 | # CONFIG_MFD_PCF50633 is not set |
761 | 815 | # CONFIG_AB3100_CORE is not set | |
762 | # | 816 | # CONFIG_EZX_PCAP is not set |
763 | # Multimedia devices | 817 | # CONFIG_MEDIA_SUPPORT is not set |
764 | # | ||
765 | |||
766 | # | ||
767 | # Multimedia core support | ||
768 | # | ||
769 | CONFIG_VIDEO_DEV=y | ||
770 | CONFIG_VIDEO_V4L2_COMMON=y | ||
771 | CONFIG_VIDEO_ALLOW_V4L1=y | ||
772 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
773 | # CONFIG_DVB_CORE is not set | ||
774 | CONFIG_VIDEO_MEDIA=y | ||
775 | |||
776 | # | ||
777 | # Multimedia drivers | ||
778 | # | ||
779 | # CONFIG_MEDIA_ATTACH is not set | ||
780 | CONFIG_MEDIA_TUNER=y | ||
781 | # CONFIG_MEDIA_TUNER_CUSTOMISE is not set | ||
782 | CONFIG_MEDIA_TUNER_SIMPLE=y | ||
783 | CONFIG_MEDIA_TUNER_TDA8290=y | ||
784 | CONFIG_MEDIA_TUNER_TDA9887=y | ||
785 | CONFIG_MEDIA_TUNER_TEA5761=y | ||
786 | CONFIG_MEDIA_TUNER_TEA5767=y | ||
787 | CONFIG_MEDIA_TUNER_MT20XX=y | ||
788 | CONFIG_MEDIA_TUNER_XC2028=y | ||
789 | CONFIG_MEDIA_TUNER_XC5000=y | ||
790 | CONFIG_MEDIA_TUNER_MC44S803=y | ||
791 | CONFIG_VIDEO_V4L2=y | ||
792 | CONFIG_VIDEO_V4L1=y | ||
793 | CONFIG_VIDEO_CAPTURE_DRIVERS=y | ||
794 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
795 | # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set | ||
796 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
797 | # CONFIG_VIDEO_VIVI is not set | ||
798 | # CONFIG_VIDEO_CPIA is not set | ||
799 | # CONFIG_VIDEO_SAA5246A is not set | ||
800 | # CONFIG_VIDEO_SAA5249 is not set | ||
801 | # CONFIG_SOC_CAMERA is not set | ||
802 | # CONFIG_RADIO_ADAPTERS is not set | ||
803 | # CONFIG_DAB is not set | ||
804 | 818 | ||
805 | # | 819 | # |
806 | # Graphics support | 820 | # Graphics support |
@@ -917,6 +931,7 @@ CONFIG_RTC_DRV_PCF8563=y | |||
917 | # CONFIG_RTC_DRV_S35390A is not set | 931 | # CONFIG_RTC_DRV_S35390A is not set |
918 | # CONFIG_RTC_DRV_FM3130 is not set | 932 | # CONFIG_RTC_DRV_FM3130 is not set |
919 | # CONFIG_RTC_DRV_RX8581 is not set | 933 | # CONFIG_RTC_DRV_RX8581 is not set |
934 | # CONFIG_RTC_DRV_RX8025 is not set | ||
920 | 935 | ||
921 | # | 936 | # |
922 | # SPI RTC drivers | 937 | # SPI RTC drivers |
@@ -962,12 +977,15 @@ CONFIG_RTC_DRV_PCF8563=y | |||
962 | # CONFIG_REISERFS_FS is not set | 977 | # CONFIG_REISERFS_FS is not set |
963 | # CONFIG_JFS_FS is not set | 978 | # CONFIG_JFS_FS is not set |
964 | # CONFIG_FS_POSIX_ACL is not set | 979 | # CONFIG_FS_POSIX_ACL is not set |
965 | CONFIG_FILE_LOCKING=y | ||
966 | # CONFIG_XFS_FS is not set | 980 | # CONFIG_XFS_FS is not set |
981 | # CONFIG_GFS2_FS is not set | ||
967 | # CONFIG_OCFS2_FS is not set | 982 | # CONFIG_OCFS2_FS is not set |
968 | # CONFIG_BTRFS_FS is not set | 983 | # CONFIG_BTRFS_FS is not set |
984 | CONFIG_FILE_LOCKING=y | ||
985 | CONFIG_FSNOTIFY=y | ||
969 | # CONFIG_DNOTIFY is not set | 986 | # CONFIG_DNOTIFY is not set |
970 | # CONFIG_INOTIFY is not set | 987 | # CONFIG_INOTIFY is not set |
988 | CONFIG_INOTIFY_USER=y | ||
971 | # CONFIG_QUOTA is not set | 989 | # CONFIG_QUOTA is not set |
972 | # CONFIG_AUTOFS_FS is not set | 990 | # CONFIG_AUTOFS_FS is not set |
973 | # CONFIG_AUTOFS4_FS is not set | 991 | # CONFIG_AUTOFS4_FS is not set |
@@ -1021,6 +1039,12 @@ CONFIG_JFFS2_ZLIB=y | |||
1021 | # CONFIG_JFFS2_LZO is not set | 1039 | # CONFIG_JFFS2_LZO is not set |
1022 | CONFIG_JFFS2_RTIME=y | 1040 | CONFIG_JFFS2_RTIME=y |
1023 | # CONFIG_JFFS2_RUBIN is not set | 1041 | # CONFIG_JFFS2_RUBIN is not set |
1042 | CONFIG_UBIFS_FS=y | ||
1043 | # CONFIG_UBIFS_FS_XATTR is not set | ||
1044 | # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set | ||
1045 | CONFIG_UBIFS_FS_LZO=y | ||
1046 | CONFIG_UBIFS_FS_ZLIB=y | ||
1047 | # CONFIG_UBIFS_FS_DEBUG is not set | ||
1024 | # CONFIG_CRAMFS is not set | 1048 | # CONFIG_CRAMFS is not set |
1025 | # CONFIG_SQUASHFS is not set | 1049 | # CONFIG_SQUASHFS is not set |
1026 | # CONFIG_VXFS_FS is not set | 1050 | # CONFIG_VXFS_FS is not set |
@@ -1119,25 +1143,11 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y | |||
1119 | CONFIG_NOP_TRACER=y | 1143 | CONFIG_NOP_TRACER=y |
1120 | CONFIG_HAVE_FUNCTION_TRACER=y | 1144 | CONFIG_HAVE_FUNCTION_TRACER=y |
1121 | CONFIG_RING_BUFFER=y | 1145 | CONFIG_RING_BUFFER=y |
1146 | CONFIG_EVENT_TRACING=y | ||
1147 | CONFIG_CONTEXT_SWITCH_TRACER=y | ||
1122 | CONFIG_TRACING=y | 1148 | CONFIG_TRACING=y |
1123 | CONFIG_TRACING_SUPPORT=y | 1149 | CONFIG_TRACING_SUPPORT=y |
1124 | 1150 | # CONFIG_FTRACE is not set | |
1125 | # | ||
1126 | # Tracers | ||
1127 | # | ||
1128 | # CONFIG_FUNCTION_TRACER is not set | ||
1129 | # CONFIG_IRQSOFF_TRACER is not set | ||
1130 | # CONFIG_PREEMPT_TRACER is not set | ||
1131 | # CONFIG_SCHED_TRACER is not set | ||
1132 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
1133 | # CONFIG_EVENT_TRACER is not set | ||
1134 | # CONFIG_BOOT_TRACER is not set | ||
1135 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1136 | # CONFIG_STACK_TRACER is not set | ||
1137 | # CONFIG_KMEMTRACE is not set | ||
1138 | # CONFIG_WORKQUEUE_TRACER is not set | ||
1139 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
1140 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
1141 | # CONFIG_DYNAMIC_DEBUG is not set | 1151 | # CONFIG_DYNAMIC_DEBUG is not set |
1142 | # CONFIG_SAMPLES is not set | 1152 | # CONFIG_SAMPLES is not set |
1143 | CONFIG_HAVE_ARCH_KGDB=y | 1153 | CONFIG_HAVE_ARCH_KGDB=y |
@@ -1151,16 +1161,104 @@ CONFIG_ARM_UNWIND=y | |||
1151 | # CONFIG_SECURITY is not set | 1161 | # CONFIG_SECURITY is not set |
1152 | # CONFIG_SECURITYFS is not set | 1162 | # CONFIG_SECURITYFS is not set |
1153 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1163 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1154 | # CONFIG_CRYPTO is not set | 1164 | CONFIG_CRYPTO=y |
1165 | |||
1166 | # | ||
1167 | # Crypto core or helper | ||
1168 | # | ||
1169 | # CONFIG_CRYPTO_FIPS is not set | ||
1170 | CONFIG_CRYPTO_ALGAPI=y | ||
1171 | CONFIG_CRYPTO_ALGAPI2=y | ||
1172 | # CONFIG_CRYPTO_MANAGER is not set | ||
1173 | # CONFIG_CRYPTO_MANAGER2 is not set | ||
1174 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1175 | # CONFIG_CRYPTO_NULL is not set | ||
1176 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1177 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1178 | # CONFIG_CRYPTO_TEST is not set | ||
1179 | |||
1180 | # | ||
1181 | # Authenticated Encryption with Associated Data | ||
1182 | # | ||
1183 | # CONFIG_CRYPTO_CCM is not set | ||
1184 | # CONFIG_CRYPTO_GCM is not set | ||
1185 | # CONFIG_CRYPTO_SEQIV is not set | ||
1186 | |||
1187 | # | ||
1188 | # Block modes | ||
1189 | # | ||
1190 | # CONFIG_CRYPTO_CBC is not set | ||
1191 | # CONFIG_CRYPTO_CTR is not set | ||
1192 | # CONFIG_CRYPTO_CTS is not set | ||
1193 | # CONFIG_CRYPTO_ECB is not set | ||
1194 | # CONFIG_CRYPTO_LRW is not set | ||
1195 | # CONFIG_CRYPTO_PCBC is not set | ||
1196 | # CONFIG_CRYPTO_XTS is not set | ||
1197 | |||
1198 | # | ||
1199 | # Hash modes | ||
1200 | # | ||
1201 | # CONFIG_CRYPTO_HMAC is not set | ||
1202 | # CONFIG_CRYPTO_XCBC is not set | ||
1203 | |||
1204 | # | ||
1205 | # Digest | ||
1206 | # | ||
1207 | # CONFIG_CRYPTO_CRC32C is not set | ||
1208 | # CONFIG_CRYPTO_MD4 is not set | ||
1209 | # CONFIG_CRYPTO_MD5 is not set | ||
1210 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1211 | # CONFIG_CRYPTO_RMD128 is not set | ||
1212 | # CONFIG_CRYPTO_RMD160 is not set | ||
1213 | # CONFIG_CRYPTO_RMD256 is not set | ||
1214 | # CONFIG_CRYPTO_RMD320 is not set | ||
1215 | # CONFIG_CRYPTO_SHA1 is not set | ||
1216 | # CONFIG_CRYPTO_SHA256 is not set | ||
1217 | # CONFIG_CRYPTO_SHA512 is not set | ||
1218 | # CONFIG_CRYPTO_TGR192 is not set | ||
1219 | # CONFIG_CRYPTO_WP512 is not set | ||
1220 | |||
1221 | # | ||
1222 | # Ciphers | ||
1223 | # | ||
1224 | # CONFIG_CRYPTO_AES is not set | ||
1225 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1226 | # CONFIG_CRYPTO_ARC4 is not set | ||
1227 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1228 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1229 | # CONFIG_CRYPTO_CAST5 is not set | ||
1230 | # CONFIG_CRYPTO_CAST6 is not set | ||
1231 | # CONFIG_CRYPTO_DES is not set | ||
1232 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1233 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1234 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1235 | # CONFIG_CRYPTO_SEED is not set | ||
1236 | # CONFIG_CRYPTO_SERPENT is not set | ||
1237 | # CONFIG_CRYPTO_TEA is not set | ||
1238 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1239 | |||
1240 | # | ||
1241 | # Compression | ||
1242 | # | ||
1243 | CONFIG_CRYPTO_DEFLATE=y | ||
1244 | # CONFIG_CRYPTO_ZLIB is not set | ||
1245 | CONFIG_CRYPTO_LZO=y | ||
1246 | |||
1247 | # | ||
1248 | # Random Number Generation | ||
1249 | # | ||
1250 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
1251 | CONFIG_CRYPTO_HW=y | ||
1155 | CONFIG_BINARY_PRINTF=y | 1252 | CONFIG_BINARY_PRINTF=y |
1156 | 1253 | ||
1157 | # | 1254 | # |
1158 | # Library routines | 1255 | # Library routines |
1159 | # | 1256 | # |
1160 | CONFIG_BITREVERSE=y | 1257 | CONFIG_BITREVERSE=y |
1258 | CONFIG_RATIONAL=y | ||
1161 | CONFIG_GENERIC_FIND_LAST_BIT=y | 1259 | CONFIG_GENERIC_FIND_LAST_BIT=y |
1162 | # CONFIG_CRC_CCITT is not set | 1260 | # CONFIG_CRC_CCITT is not set |
1163 | # CONFIG_CRC16 is not set | 1261 | CONFIG_CRC16=y |
1164 | # CONFIG_CRC_T10DIF is not set | 1262 | # CONFIG_CRC_T10DIF is not set |
1165 | # CONFIG_CRC_ITU_T is not set | 1263 | # CONFIG_CRC_ITU_T is not set |
1166 | CONFIG_CRC32=y | 1264 | CONFIG_CRC32=y |
@@ -1168,6 +1266,8 @@ CONFIG_CRC32=y | |||
1168 | # CONFIG_LIBCRC32C is not set | 1266 | # CONFIG_LIBCRC32C is not set |
1169 | CONFIG_ZLIB_INFLATE=y | 1267 | CONFIG_ZLIB_INFLATE=y |
1170 | CONFIG_ZLIB_DEFLATE=y | 1268 | CONFIG_ZLIB_DEFLATE=y |
1269 | CONFIG_LZO_COMPRESS=y | ||
1270 | CONFIG_LZO_DECOMPRESS=y | ||
1171 | CONFIG_HAS_IOMEM=y | 1271 | CONFIG_HAS_IOMEM=y |
1172 | CONFIG_HAS_IOPORT=y | 1272 | CONFIG_HAS_IOPORT=y |
1173 | CONFIG_HAS_DMA=y | 1273 | CONFIG_HAS_DMA=y |
diff --git a/arch/arm/configs/mx3_defconfig b/arch/arm/configs/mx3_defconfig index 20ada526f6de..a4f9a2a8149c 100644 --- a/arch/arm/configs/mx3_defconfig +++ b/arch/arm/configs/mx3_defconfig | |||
@@ -1,15 +1,15 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.30-rc1 | 3 | # Linux kernel version: 2.6.31-rc4 |
4 | # Wed Apr 8 11:06:37 2009 | 4 | # Tue Jul 28 14:11:34 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 9 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | 10 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_GENERIC_CLOCKEVENTS=y | 11 | CONFIG_GENERIC_CLOCKEVENTS=y |
11 | CONFIG_MMU=y | 12 | CONFIG_MMU=y |
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
14 | CONFIG_STACKTRACE_SUPPORT=y | 14 | CONFIG_STACKTRACE_SUPPORT=y |
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -18,14 +18,13 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
18 | CONFIG_HARDIRQS_SW_RESEND=y | 18 | CONFIG_HARDIRQS_SW_RESEND=y |
19 | CONFIG_GENERIC_IRQ_PROBE=y | 19 | CONFIG_GENERIC_IRQ_PROBE=y |
20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=y | 21 | CONFIG_GENERIC_HWEIGHT=y |
24 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_ARCH_MTD_XIP=y | 23 | CONFIG_ARCH_MTD_XIP=y |
26 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 24 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
27 | CONFIG_VECTORS_BASE=0xffff0000 | 25 | CONFIG_VECTORS_BASE=0xffff0000 |
28 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 26 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
27 | CONFIG_CONSTRUCTORS=y | ||
29 | 28 | ||
30 | # | 29 | # |
31 | # General setup | 30 | # General setup |
@@ -86,7 +85,12 @@ CONFIG_TIMERFD=y | |||
86 | CONFIG_EVENTFD=y | 85 | CONFIG_EVENTFD=y |
87 | CONFIG_SHMEM=y | 86 | CONFIG_SHMEM=y |
88 | CONFIG_AIO=y | 87 | CONFIG_AIO=y |
88 | |||
89 | # | ||
90 | # Performance Counters | ||
91 | # | ||
89 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | # CONFIG_STRIP_ASM_SYMS is not set | ||
90 | CONFIG_COMPAT_BRK=y | 94 | CONFIG_COMPAT_BRK=y |
91 | CONFIG_SLAB=y | 95 | CONFIG_SLAB=y |
92 | # CONFIG_SLUB is not set | 96 | # CONFIG_SLUB is not set |
@@ -97,6 +101,11 @@ CONFIG_HAVE_OPROFILE=y | |||
97 | # CONFIG_KPROBES is not set | 101 | # CONFIG_KPROBES is not set |
98 | CONFIG_HAVE_KPROBES=y | 102 | CONFIG_HAVE_KPROBES=y |
99 | CONFIG_HAVE_KRETPROBES=y | 103 | CONFIG_HAVE_KRETPROBES=y |
104 | CONFIG_HAVE_CLK=y | ||
105 | |||
106 | # | ||
107 | # GCOV-based kernel profiling | ||
108 | # | ||
100 | # CONFIG_SLOW_WORK is not set | 109 | # CONFIG_SLOW_WORK is not set |
101 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 110 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
102 | CONFIG_SLABINFO=y | 111 | CONFIG_SLABINFO=y |
@@ -109,7 +118,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y | |||
109 | CONFIG_MODVERSIONS=y | 118 | CONFIG_MODVERSIONS=y |
110 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 119 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
111 | CONFIG_BLOCK=y | 120 | CONFIG_BLOCK=y |
112 | # CONFIG_LBD is not set | 121 | CONFIG_LBDAF=y |
113 | # CONFIG_BLK_DEV_BSG is not set | 122 | # CONFIG_BLK_DEV_BSG is not set |
114 | # CONFIG_BLK_DEV_INTEGRITY is not set | 123 | # CONFIG_BLK_DEV_INTEGRITY is not set |
115 | 124 | ||
@@ -136,13 +145,14 @@ CONFIG_FREEZER=y | |||
136 | # CONFIG_ARCH_VERSATILE is not set | 145 | # CONFIG_ARCH_VERSATILE is not set |
137 | # CONFIG_ARCH_AT91 is not set | 146 | # CONFIG_ARCH_AT91 is not set |
138 | # CONFIG_ARCH_CLPS711X is not set | 147 | # CONFIG_ARCH_CLPS711X is not set |
148 | # CONFIG_ARCH_GEMINI is not set | ||
139 | # CONFIG_ARCH_EBSA110 is not set | 149 | # CONFIG_ARCH_EBSA110 is not set |
140 | # CONFIG_ARCH_EP93XX is not set | 150 | # CONFIG_ARCH_EP93XX is not set |
141 | # CONFIG_ARCH_GEMINI is not set | ||
142 | # CONFIG_ARCH_FOOTBRIDGE is not set | 151 | # CONFIG_ARCH_FOOTBRIDGE is not set |
152 | CONFIG_ARCH_MXC=y | ||
153 | # CONFIG_ARCH_STMP3XXX is not set | ||
143 | # CONFIG_ARCH_NETX is not set | 154 | # CONFIG_ARCH_NETX is not set |
144 | # CONFIG_ARCH_H720X is not set | 155 | # CONFIG_ARCH_H720X is not set |
145 | # CONFIG_ARCH_IMX is not set | ||
146 | # CONFIG_ARCH_IOP13XX is not set | 156 | # CONFIG_ARCH_IOP13XX is not set |
147 | # CONFIG_ARCH_IOP32X is not set | 157 | # CONFIG_ARCH_IOP32X is not set |
148 | # CONFIG_ARCH_IOP33X is not set | 158 | # CONFIG_ARCH_IOP33X is not set |
@@ -151,25 +161,25 @@ CONFIG_FREEZER=y | |||
151 | # CONFIG_ARCH_IXP4XX is not set | 161 | # CONFIG_ARCH_IXP4XX is not set |
152 | # CONFIG_ARCH_L7200 is not set | 162 | # CONFIG_ARCH_L7200 is not set |
153 | # CONFIG_ARCH_KIRKWOOD is not set | 163 | # CONFIG_ARCH_KIRKWOOD is not set |
154 | # CONFIG_ARCH_KS8695 is not set | ||
155 | # CONFIG_ARCH_NS9XXX is not set | ||
156 | # CONFIG_ARCH_LOKI is not set | 164 | # CONFIG_ARCH_LOKI is not set |
157 | # CONFIG_ARCH_MV78XX0 is not set | 165 | # CONFIG_ARCH_MV78XX0 is not set |
158 | CONFIG_ARCH_MXC=y | ||
159 | # CONFIG_ARCH_ORION5X is not set | 166 | # CONFIG_ARCH_ORION5X is not set |
167 | # CONFIG_ARCH_MMP is not set | ||
168 | # CONFIG_ARCH_KS8695 is not set | ||
169 | # CONFIG_ARCH_NS9XXX is not set | ||
170 | # CONFIG_ARCH_W90X900 is not set | ||
160 | # CONFIG_ARCH_PNX4008 is not set | 171 | # CONFIG_ARCH_PNX4008 is not set |
161 | # CONFIG_ARCH_PXA is not set | 172 | # CONFIG_ARCH_PXA is not set |
162 | # CONFIG_ARCH_MMP is not set | 173 | # CONFIG_ARCH_MSM is not set |
163 | # CONFIG_ARCH_RPC is not set | 174 | # CONFIG_ARCH_RPC is not set |
164 | # CONFIG_ARCH_SA1100 is not set | 175 | # CONFIG_ARCH_SA1100 is not set |
165 | # CONFIG_ARCH_S3C2410 is not set | 176 | # CONFIG_ARCH_S3C2410 is not set |
166 | # CONFIG_ARCH_S3C64XX is not set | 177 | # CONFIG_ARCH_S3C64XX is not set |
167 | # CONFIG_ARCH_SHARK is not set | 178 | # CONFIG_ARCH_SHARK is not set |
168 | # CONFIG_ARCH_LH7A40X is not set | 179 | # CONFIG_ARCH_LH7A40X is not set |
180 | # CONFIG_ARCH_U300 is not set | ||
169 | # CONFIG_ARCH_DAVINCI is not set | 181 | # CONFIG_ARCH_DAVINCI is not set |
170 | # CONFIG_ARCH_OMAP is not set | 182 | # CONFIG_ARCH_OMAP is not set |
171 | # CONFIG_ARCH_MSM is not set | ||
172 | # CONFIG_ARCH_W90X900 is not set | ||
173 | 183 | ||
174 | # | 184 | # |
175 | # Freescale MXC Implementations | 185 | # Freescale MXC Implementations |
@@ -178,6 +188,7 @@ CONFIG_ARCH_MXC=y | |||
178 | # CONFIG_ARCH_MX2 is not set | 188 | # CONFIG_ARCH_MX2 is not set |
179 | CONFIG_ARCH_MX3=y | 189 | CONFIG_ARCH_MX3=y |
180 | CONFIG_ARCH_MX31=y | 190 | CONFIG_ARCH_MX31=y |
191 | CONFIG_ARCH_MX35=y | ||
181 | 192 | ||
182 | # | 193 | # |
183 | # MX3 platforms: | 194 | # MX3 platforms: |
@@ -185,12 +196,19 @@ CONFIG_ARCH_MX31=y | |||
185 | CONFIG_MACH_MX31ADS=y | 196 | CONFIG_MACH_MX31ADS=y |
186 | CONFIG_MACH_MX31ADS_WM1133_EV1=y | 197 | CONFIG_MACH_MX31ADS_WM1133_EV1=y |
187 | CONFIG_MACH_PCM037=y | 198 | CONFIG_MACH_PCM037=y |
199 | CONFIG_MACH_PCM037_EET=y | ||
188 | CONFIG_MACH_MX31LITE=y | 200 | CONFIG_MACH_MX31LITE=y |
189 | CONFIG_MACH_MX31_3DS=y | 201 | CONFIG_MACH_MX31_3DS=y |
190 | CONFIG_MACH_MX31MOBOARD=y | 202 | CONFIG_MACH_MX31MOBOARD=y |
203 | CONFIG_MACH_MX31LILLY=y | ||
191 | CONFIG_MACH_QONG=y | 204 | CONFIG_MACH_QONG=y |
205 | CONFIG_MACH_PCM043=y | ||
206 | CONFIG_MACH_ARMADILLO5X0=y | ||
207 | CONFIG_MACH_MX35_3DS=y | ||
192 | CONFIG_MXC_IRQ_PRIOR=y | 208 | CONFIG_MXC_IRQ_PRIOR=y |
193 | CONFIG_MXC_PWM=y | 209 | CONFIG_MXC_PWM=y |
210 | CONFIG_ARCH_HAS_RNGA=y | ||
211 | CONFIG_ARCH_MXC_IOMUX_V3=y | ||
194 | 212 | ||
195 | # | 213 | # |
196 | # Processor Type | 214 | # Processor Type |
@@ -218,6 +236,7 @@ CONFIG_ARM_THUMB=y | |||
218 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 236 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
219 | CONFIG_OUTER_CACHE=y | 237 | CONFIG_OUTER_CACHE=y |
220 | CONFIG_CACHE_L2X0=y | 238 | CONFIG_CACHE_L2X0=y |
239 | # CONFIG_ARM_ERRATA_411920 is not set | ||
221 | CONFIG_COMMON_CLKDEV=y | 240 | CONFIG_COMMON_CLKDEV=y |
222 | 241 | ||
223 | # | 242 | # |
@@ -242,7 +261,6 @@ CONFIG_PREEMPT=y | |||
242 | CONFIG_HZ=100 | 261 | CONFIG_HZ=100 |
243 | CONFIG_AEABI=y | 262 | CONFIG_AEABI=y |
244 | CONFIG_OABI_COMPAT=y | 263 | CONFIG_OABI_COMPAT=y |
245 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
246 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | 264 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
247 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | 265 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
248 | # CONFIG_HIGHMEM is not set | 266 | # CONFIG_HIGHMEM is not set |
@@ -257,10 +275,11 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
257 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 275 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
258 | CONFIG_ZONE_DMA_FLAG=0 | 276 | CONFIG_ZONE_DMA_FLAG=0 |
259 | CONFIG_VIRT_TO_BUS=y | 277 | CONFIG_VIRT_TO_BUS=y |
260 | CONFIG_UNEVICTABLE_LRU=y | ||
261 | CONFIG_HAVE_MLOCK=y | 278 | CONFIG_HAVE_MLOCK=y |
262 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | 279 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y |
280 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
263 | CONFIG_ALIGNMENT_TRAP=y | 281 | CONFIG_ALIGNMENT_TRAP=y |
282 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
264 | 283 | ||
265 | # | 284 | # |
266 | # Boot options | 285 | # Boot options |
@@ -362,6 +381,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
362 | # CONFIG_ECONET is not set | 381 | # CONFIG_ECONET is not set |
363 | # CONFIG_WAN_ROUTER is not set | 382 | # CONFIG_WAN_ROUTER is not set |
364 | # CONFIG_PHONET is not set | 383 | # CONFIG_PHONET is not set |
384 | # CONFIG_IEEE802154 is not set | ||
365 | # CONFIG_NET_SCHED is not set | 385 | # CONFIG_NET_SCHED is not set |
366 | # CONFIG_DCB is not set | 386 | # CONFIG_DCB is not set |
367 | 387 | ||
@@ -465,7 +485,16 @@ CONFIG_MTD_PHYSMAP=y | |||
465 | # CONFIG_MTD_DOC2000 is not set | 485 | # CONFIG_MTD_DOC2000 is not set |
466 | # CONFIG_MTD_DOC2001 is not set | 486 | # CONFIG_MTD_DOC2001 is not set |
467 | # CONFIG_MTD_DOC2001PLUS is not set | 487 | # CONFIG_MTD_DOC2001PLUS is not set |
468 | # CONFIG_MTD_NAND is not set | 488 | CONFIG_MTD_NAND=y |
489 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
490 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
491 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
492 | # CONFIG_MTD_NAND_GPIO is not set | ||
493 | CONFIG_MTD_NAND_IDS=y | ||
494 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
495 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
496 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
497 | CONFIG_MTD_NAND_MXC=y | ||
469 | # CONFIG_MTD_ONENAND is not set | 498 | # CONFIG_MTD_ONENAND is not set |
470 | 499 | ||
471 | # | 500 | # |
@@ -476,10 +505,30 @@ CONFIG_MTD_PHYSMAP=y | |||
476 | # | 505 | # |
477 | # UBI - Unsorted block images | 506 | # UBI - Unsorted block images |
478 | # | 507 | # |
479 | # CONFIG_MTD_UBI is not set | 508 | CONFIG_MTD_UBI=y |
509 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
510 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
511 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
512 | |||
513 | # | ||
514 | # UBI debugging options | ||
515 | # | ||
516 | # CONFIG_MTD_UBI_DEBUG is not set | ||
480 | # CONFIG_PARPORT is not set | 517 | # CONFIG_PARPORT is not set |
481 | # CONFIG_BLK_DEV is not set | 518 | # CONFIG_BLK_DEV is not set |
482 | # CONFIG_MISC_DEVICES is not set | 519 | CONFIG_MISC_DEVICES=y |
520 | # CONFIG_ICS932S401 is not set | ||
521 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
522 | # CONFIG_ISL29003 is not set | ||
523 | # CONFIG_C2PORT is not set | ||
524 | |||
525 | # | ||
526 | # EEPROM support | ||
527 | # | ||
528 | CONFIG_EEPROM_AT24=y | ||
529 | # CONFIG_EEPROM_LEGACY is not set | ||
530 | # CONFIG_EEPROM_MAX6875 is not set | ||
531 | # CONFIG_EEPROM_93CX6 is not set | ||
483 | CONFIG_HAVE_IDE=y | 532 | CONFIG_HAVE_IDE=y |
484 | # CONFIG_IDE is not set | 533 | # CONFIG_IDE is not set |
485 | 534 | ||
@@ -493,7 +542,6 @@ CONFIG_HAVE_IDE=y | |||
493 | # CONFIG_ATA is not set | 542 | # CONFIG_ATA is not set |
494 | # CONFIG_MD is not set | 543 | # CONFIG_MD is not set |
495 | CONFIG_NETDEVICES=y | 544 | CONFIG_NETDEVICES=y |
496 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
497 | # CONFIG_DUMMY is not set | 545 | # CONFIG_DUMMY is not set |
498 | # CONFIG_BONDING is not set | 546 | # CONFIG_BONDING is not set |
499 | # CONFIG_MACVLAN is not set | 547 | # CONFIG_MACVLAN is not set |
@@ -528,7 +576,7 @@ CONFIG_MII=y | |||
528 | # CONFIG_ETHOC is not set | 576 | # CONFIG_ETHOC is not set |
529 | # CONFIG_SMC911X is not set | 577 | # CONFIG_SMC911X is not set |
530 | CONFIG_SMSC911X=y | 578 | CONFIG_SMSC911X=y |
531 | # CONFIG_DNET is not set | 579 | CONFIG_DNET=y |
532 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 580 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
533 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 581 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
534 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 582 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -537,8 +585,10 @@ CONFIG_SMSC911X=y | |||
537 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | 585 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set |
538 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | 586 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set |
539 | # CONFIG_B44 is not set | 587 | # CONFIG_B44 is not set |
540 | CONFIG_CS89x0=y | 588 | # CONFIG_CS89x0 is not set |
541 | CONFIG_CS89x0_NONISA_IRQ=y | 589 | # CONFIG_KS8842 is not set |
590 | CONFIG_FEC=y | ||
591 | # CONFIG_FEC2 is not set | ||
542 | # CONFIG_NETDEV_1000 is not set | 592 | # CONFIG_NETDEV_1000 is not set |
543 | # CONFIG_NETDEV_10000 is not set | 593 | # CONFIG_NETDEV_10000 is not set |
544 | 594 | ||
@@ -609,6 +659,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
609 | # | 659 | # |
610 | # I2C system bus drivers (mostly embedded / system-on-chip) | 660 | # I2C system bus drivers (mostly embedded / system-on-chip) |
611 | # | 661 | # |
662 | # CONFIG_I2C_DESIGNWARE is not set | ||
612 | # CONFIG_I2C_GPIO is not set | 663 | # CONFIG_I2C_GPIO is not set |
613 | CONFIG_I2C_IMX=y | 664 | CONFIG_I2C_IMX=y |
614 | # CONFIG_I2C_OCORES is not set | 665 | # CONFIG_I2C_OCORES is not set |
@@ -633,7 +684,6 @@ CONFIG_I2C_IMX=y | |||
633 | # CONFIG_SENSORS_PCF8574 is not set | 684 | # CONFIG_SENSORS_PCF8574 is not set |
634 | # CONFIG_PCF8575 is not set | 685 | # CONFIG_PCF8575 is not set |
635 | # CONFIG_SENSORS_PCA9539 is not set | 686 | # CONFIG_SENSORS_PCA9539 is not set |
636 | # CONFIG_SENSORS_MAX6875 is not set | ||
637 | # CONFIG_SENSORS_TSL2550 is not set | 687 | # CONFIG_SENSORS_TSL2550 is not set |
638 | # CONFIG_I2C_DEBUG_CORE is not set | 688 | # CONFIG_I2C_DEBUG_CORE is not set |
639 | # CONFIG_I2C_DEBUG_ALGO is not set | 689 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -669,6 +719,7 @@ CONFIG_W1=y | |||
669 | # | 719 | # |
670 | # CONFIG_W1_MASTER_DS2482 is not set | 720 | # CONFIG_W1_MASTER_DS2482 is not set |
671 | CONFIG_W1_MASTER_MXC=y | 721 | CONFIG_W1_MASTER_MXC=y |
722 | # CONFIG_W1_MASTER_DS1WM is not set | ||
672 | # CONFIG_W1_MASTER_GPIO is not set | 723 | # CONFIG_W1_MASTER_GPIO is not set |
673 | 724 | ||
674 | # | 725 | # |
@@ -703,6 +754,8 @@ CONFIG_SSB_POSSIBLE=y | |||
703 | # CONFIG_TPS65010 is not set | 754 | # CONFIG_TPS65010 is not set |
704 | # CONFIG_TWL4030_CORE is not set | 755 | # CONFIG_TWL4030_CORE is not set |
705 | # CONFIG_MFD_TMIO is not set | 756 | # CONFIG_MFD_TMIO is not set |
757 | # CONFIG_MFD_T7L66XB is not set | ||
758 | # CONFIG_MFD_TC6387XB is not set | ||
706 | # CONFIG_MFD_TC6393XB is not set | 759 | # CONFIG_MFD_TC6393XB is not set |
707 | # CONFIG_PMIC_DA903X is not set | 760 | # CONFIG_PMIC_DA903X is not set |
708 | # CONFIG_MFD_WM8400 is not set | 761 | # CONFIG_MFD_WM8400 is not set |
@@ -711,10 +764,8 @@ CONFIG_MFD_WM8350_CONFIG_MODE_0=y | |||
711 | CONFIG_MFD_WM8352_CONFIG_MODE_0=y | 764 | CONFIG_MFD_WM8352_CONFIG_MODE_0=y |
712 | CONFIG_MFD_WM8350_I2C=y | 765 | CONFIG_MFD_WM8350_I2C=y |
713 | # CONFIG_MFD_PCF50633 is not set | 766 | # CONFIG_MFD_PCF50633 is not set |
714 | 767 | # CONFIG_AB3100_CORE is not set | |
715 | # | 768 | CONFIG_MEDIA_SUPPORT=y |
716 | # Multimedia devices | ||
717 | # | ||
718 | 769 | ||
719 | # | 770 | # |
720 | # Multimedia core support | 771 | # Multimedia core support |
@@ -758,8 +809,10 @@ CONFIG_SOC_CAMERA_MT9T031=y | |||
758 | CONFIG_SOC_CAMERA_MT9V022=y | 809 | CONFIG_SOC_CAMERA_MT9V022=y |
759 | CONFIG_SOC_CAMERA_TW9910=y | 810 | CONFIG_SOC_CAMERA_TW9910=y |
760 | # CONFIG_SOC_CAMERA_PLATFORM is not set | 811 | # CONFIG_SOC_CAMERA_PLATFORM is not set |
761 | # CONFIG_SOC_CAMERA_OV772X is not set | 812 | CONFIG_SOC_CAMERA_OV772X=y |
813 | CONFIG_MX3_VIDEO=y | ||
762 | CONFIG_VIDEO_MX3=y | 814 | CONFIG_VIDEO_MX3=y |
815 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set | ||
763 | # CONFIG_RADIO_ADAPTERS is not set | 816 | # CONFIG_RADIO_ADAPTERS is not set |
764 | # CONFIG_DAB is not set | 817 | # CONFIG_DAB is not set |
765 | 818 | ||
@@ -847,8 +900,11 @@ CONFIG_REGULATOR=y | |||
847 | # CONFIG_REGULATOR_DEBUG is not set | 900 | # CONFIG_REGULATOR_DEBUG is not set |
848 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | 901 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set |
849 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | 902 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set |
903 | # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set | ||
850 | # CONFIG_REGULATOR_BQ24022 is not set | 904 | # CONFIG_REGULATOR_BQ24022 is not set |
905 | # CONFIG_REGULATOR_MAX1586 is not set | ||
851 | CONFIG_REGULATOR_WM8350=y | 906 | CONFIG_REGULATOR_WM8350=y |
907 | # CONFIG_REGULATOR_LP3971 is not set | ||
852 | # CONFIG_UIO is not set | 908 | # CONFIG_UIO is not set |
853 | # CONFIG_STAGING is not set | 909 | # CONFIG_STAGING is not set |
854 | 910 | ||
@@ -861,10 +917,12 @@ CONFIG_REGULATOR_WM8350=y | |||
861 | # CONFIG_REISERFS_FS is not set | 917 | # CONFIG_REISERFS_FS is not set |
862 | # CONFIG_JFS_FS is not set | 918 | # CONFIG_JFS_FS is not set |
863 | # CONFIG_FS_POSIX_ACL is not set | 919 | # CONFIG_FS_POSIX_ACL is not set |
864 | CONFIG_FILE_LOCKING=y | ||
865 | # CONFIG_XFS_FS is not set | 920 | # CONFIG_XFS_FS is not set |
921 | # CONFIG_GFS2_FS is not set | ||
866 | # CONFIG_OCFS2_FS is not set | 922 | # CONFIG_OCFS2_FS is not set |
867 | # CONFIG_BTRFS_FS is not set | 923 | # CONFIG_BTRFS_FS is not set |
924 | CONFIG_FILE_LOCKING=y | ||
925 | CONFIG_FSNOTIFY=y | ||
868 | # CONFIG_DNOTIFY is not set | 926 | # CONFIG_DNOTIFY is not set |
869 | CONFIG_INOTIFY=y | 927 | CONFIG_INOTIFY=y |
870 | CONFIG_INOTIFY_USER=y | 928 | CONFIG_INOTIFY_USER=y |
@@ -921,6 +979,12 @@ CONFIG_JFFS2_ZLIB=y | |||
921 | # CONFIG_JFFS2_LZO is not set | 979 | # CONFIG_JFFS2_LZO is not set |
922 | CONFIG_JFFS2_RTIME=y | 980 | CONFIG_JFFS2_RTIME=y |
923 | # CONFIG_JFFS2_RUBIN is not set | 981 | # CONFIG_JFFS2_RUBIN is not set |
982 | CONFIG_UBIFS_FS=y | ||
983 | # CONFIG_UBIFS_FS_XATTR is not set | ||
984 | # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set | ||
985 | CONFIG_UBIFS_FS_LZO=y | ||
986 | CONFIG_UBIFS_FS_ZLIB=y | ||
987 | # CONFIG_UBIFS_FS_DEBUG is not set | ||
924 | # CONFIG_CRAMFS is not set | 988 | # CONFIG_CRAMFS is not set |
925 | # CONFIG_SQUASHFS is not set | 989 | # CONFIG_SQUASHFS is not set |
926 | # CONFIG_VXFS_FS is not set | 990 | # CONFIG_VXFS_FS is not set |
@@ -937,6 +1001,7 @@ CONFIG_NFS_FS=y | |||
937 | CONFIG_NFS_V3=y | 1001 | CONFIG_NFS_V3=y |
938 | # CONFIG_NFS_V3_ACL is not set | 1002 | # CONFIG_NFS_V3_ACL is not set |
939 | CONFIG_NFS_V4=y | 1003 | CONFIG_NFS_V4=y |
1004 | # CONFIG_NFS_V4_1 is not set | ||
940 | CONFIG_ROOT_NFS=y | 1005 | CONFIG_ROOT_NFS=y |
941 | # CONFIG_NFSD is not set | 1006 | # CONFIG_NFSD is not set |
942 | CONFIG_LOCKD=y | 1007 | CONFIG_LOCKD=y |
@@ -979,22 +1044,7 @@ CONFIG_FRAME_WARN=1024 | |||
979 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1044 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
980 | CONFIG_HAVE_FUNCTION_TRACER=y | 1045 | CONFIG_HAVE_FUNCTION_TRACER=y |
981 | CONFIG_TRACING_SUPPORT=y | 1046 | CONFIG_TRACING_SUPPORT=y |
982 | 1047 | # CONFIG_FTRACE is not set | |
983 | # | ||
984 | # Tracers | ||
985 | # | ||
986 | # CONFIG_FUNCTION_TRACER is not set | ||
987 | # CONFIG_IRQSOFF_TRACER is not set | ||
988 | # CONFIG_PREEMPT_TRACER is not set | ||
989 | # CONFIG_SCHED_TRACER is not set | ||
990 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
991 | # CONFIG_EVENT_TRACER is not set | ||
992 | # CONFIG_BOOT_TRACER is not set | ||
993 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
994 | # CONFIG_STACK_TRACER is not set | ||
995 | # CONFIG_KMEMTRACE is not set | ||
996 | # CONFIG_WORKQUEUE_TRACER is not set | ||
997 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
998 | # CONFIG_SAMPLES is not set | 1048 | # CONFIG_SAMPLES is not set |
999 | CONFIG_HAVE_ARCH_KGDB=y | 1049 | CONFIG_HAVE_ARCH_KGDB=y |
1000 | CONFIG_ARM_UNWIND=y | 1050 | CONFIG_ARM_UNWIND=y |
@@ -1094,9 +1144,9 @@ CONFIG_CRYPTO_DES=y | |||
1094 | # | 1144 | # |
1095 | # Compression | 1145 | # Compression |
1096 | # | 1146 | # |
1097 | # CONFIG_CRYPTO_DEFLATE is not set | 1147 | CONFIG_CRYPTO_DEFLATE=y |
1098 | # CONFIG_CRYPTO_ZLIB is not set | 1148 | # CONFIG_CRYPTO_ZLIB is not set |
1099 | # CONFIG_CRYPTO_LZO is not set | 1149 | CONFIG_CRYPTO_LZO=y |
1100 | 1150 | ||
1101 | # | 1151 | # |
1102 | # Random Number Generation | 1152 | # Random Number Generation |
@@ -1109,9 +1159,10 @@ CONFIG_CRYPTO_HW=y | |||
1109 | # Library routines | 1159 | # Library routines |
1110 | # | 1160 | # |
1111 | CONFIG_BITREVERSE=y | 1161 | CONFIG_BITREVERSE=y |
1162 | CONFIG_RATIONAL=y | ||
1112 | CONFIG_GENERIC_FIND_LAST_BIT=y | 1163 | CONFIG_GENERIC_FIND_LAST_BIT=y |
1113 | # CONFIG_CRC_CCITT is not set | 1164 | # CONFIG_CRC_CCITT is not set |
1114 | # CONFIG_CRC16 is not set | 1165 | CONFIG_CRC16=y |
1115 | # CONFIG_CRC_T10DIF is not set | 1166 | # CONFIG_CRC_T10DIF is not set |
1116 | # CONFIG_CRC_ITU_T is not set | 1167 | # CONFIG_CRC_ITU_T is not set |
1117 | CONFIG_CRC32=y | 1168 | CONFIG_CRC32=y |
@@ -1119,6 +1170,8 @@ CONFIG_CRC32=y | |||
1119 | # CONFIG_LIBCRC32C is not set | 1170 | # CONFIG_LIBCRC32C is not set |
1120 | CONFIG_ZLIB_INFLATE=y | 1171 | CONFIG_ZLIB_INFLATE=y |
1121 | CONFIG_ZLIB_DEFLATE=y | 1172 | CONFIG_ZLIB_DEFLATE=y |
1173 | CONFIG_LZO_COMPRESS=y | ||
1174 | CONFIG_LZO_DECOMPRESS=y | ||
1122 | CONFIG_HAS_IOMEM=y | 1175 | CONFIG_HAS_IOMEM=y |
1123 | CONFIG_HAS_IOPORT=y | 1176 | CONFIG_HAS_IOPORT=y |
1124 | CONFIG_HAS_DMA=y | 1177 | CONFIG_HAS_DMA=y |
diff --git a/arch/arm/configs/omap3_evm_defconfig b/arch/arm/configs/omap3_evm_defconfig index 28be17fbc157..d5ff4776cd0a 100644 --- a/arch/arm/configs/omap3_evm_defconfig +++ b/arch/arm/configs/omap3_evm_defconfig | |||
@@ -1107,7 +1107,7 @@ CONFIG_USB_ZERO=m | |||
1107 | CONFIG_USB_OTG_UTILS=y | 1107 | CONFIG_USB_OTG_UTILS=y |
1108 | # CONFIG_USB_GPIO_VBUS is not set | 1108 | # CONFIG_USB_GPIO_VBUS is not set |
1109 | # CONFIG_ISP1301_OMAP is not set | 1109 | # CONFIG_ISP1301_OMAP is not set |
1110 | CONFIG_TWL4030_USB=y | 1110 | # CONFIG_TWL4030_USB is not set |
1111 | # CONFIG_NOP_USB_XCEIV is not set | 1111 | # CONFIG_NOP_USB_XCEIV is not set |
1112 | CONFIG_MMC=y | 1112 | CONFIG_MMC=y |
1113 | # CONFIG_MMC_DEBUG is not set | 1113 | # CONFIG_MMC_DEBUG is not set |
diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig index eb2cb31825c0..f238df66efd4 100644 --- a/arch/arm/configs/rx51_defconfig +++ b/arch/arm/configs/rx51_defconfig | |||
@@ -282,7 +282,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
282 | # | 282 | # |
283 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 283 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
284 | CONFIG_ZBOOT_ROM_BSS=0x0 | 284 | CONFIG_ZBOOT_ROM_BSS=0x0 |
285 | CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw console=ttyMTD,log console=tty0" | 285 | CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw console=ttyMTD,log console=tty0 console=ttyS2,115200n8" |
286 | # CONFIG_XIP_KERNEL is not set | 286 | # CONFIG_XIP_KERNEL is not set |
287 | # CONFIG_KEXEC is not set | 287 | # CONFIG_KEXEC is not set |
288 | 288 | ||
@@ -1354,7 +1354,7 @@ CONFIG_USB_OTG_UTILS=y | |||
1354 | # CONFIG_USB_GPIO_VBUS is not set | 1354 | # CONFIG_USB_GPIO_VBUS is not set |
1355 | # CONFIG_ISP1301_OMAP is not set | 1355 | # CONFIG_ISP1301_OMAP is not set |
1356 | CONFIG_TWL4030_USB=y | 1356 | CONFIG_TWL4030_USB=y |
1357 | CONFIG_MMC=m | 1357 | CONFIG_MMC=y |
1358 | # CONFIG_MMC_DEBUG is not set | 1358 | # CONFIG_MMC_DEBUG is not set |
1359 | # CONFIG_MMC_UNSAFE_RESUME is not set | 1359 | # CONFIG_MMC_UNSAFE_RESUME is not set |
1360 | 1360 | ||
@@ -1449,7 +1449,8 @@ CONFIG_RTC_DRV_TWL4030=m | |||
1449 | # on-CPU RTC drivers | 1449 | # on-CPU RTC drivers |
1450 | # | 1450 | # |
1451 | # CONFIG_DMADEVICES is not set | 1451 | # CONFIG_DMADEVICES is not set |
1452 | # CONFIG_REGULATOR is not set | 1452 | CONFIG_REGULATOR=y |
1453 | CONFIG_REGULATOR_TWL4030=y | ||
1453 | # CONFIG_UIO is not set | 1454 | # CONFIG_UIO is not set |
1454 | # CONFIG_STAGING is not set | 1455 | # CONFIG_STAGING is not set |
1455 | 1456 | ||
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 2d58b8fe59be..b49810461e41 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -260,6 +260,7 @@ CONFIG_MACH_NEXCODER_2440=y | |||
260 | CONFIG_SMDK2440_CPU2440=y | 260 | CONFIG_SMDK2440_CPU2440=y |
261 | CONFIG_MACH_AT2440EVB=y | 261 | CONFIG_MACH_AT2440EVB=y |
262 | CONFIG_CPU_S3C2442=y | 262 | CONFIG_CPU_S3C2442=y |
263 | CONFIG_MACH_MINI2440=y | ||
263 | 264 | ||
264 | # | 265 | # |
265 | # S3C2442 Machines | 266 | # S3C2442 Machines |
@@ -2298,7 +2299,6 @@ CONFIG_DEBUG_ERRORS=y | |||
2298 | # CONFIG_DEBUG_STACK_USAGE is not set | 2299 | # CONFIG_DEBUG_STACK_USAGE is not set |
2299 | CONFIG_DEBUG_LL=y | 2300 | CONFIG_DEBUG_LL=y |
2300 | # CONFIG_DEBUG_ICEDCC is not set | 2301 | # CONFIG_DEBUG_ICEDCC is not set |
2301 | CONFIG_DEBUG_S3C_PORT=y | ||
2302 | CONFIG_DEBUG_S3C_UART=0 | 2302 | CONFIG_DEBUG_S3C_UART=0 |
2303 | 2303 | ||
2304 | # | 2304 | # |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index 2e8fa50e9a09..32860609e057 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -816,7 +816,6 @@ CONFIG_DEBUG_ERRORS=y | |||
816 | # CONFIG_DEBUG_STACK_USAGE is not set | 816 | # CONFIG_DEBUG_STACK_USAGE is not set |
817 | CONFIG_DEBUG_LL=y | 817 | CONFIG_DEBUG_LL=y |
818 | # CONFIG_DEBUG_ICEDCC is not set | 818 | # CONFIG_DEBUG_ICEDCC is not set |
819 | CONFIG_DEBUG_S3C_PORT=y | ||
820 | CONFIG_DEBUG_S3C_UART=0 | 819 | CONFIG_DEBUG_S3C_UART=0 |
821 | 820 | ||
822 | # | 821 | # |
diff --git a/arch/arm/configs/tct_hammer_defconfig b/arch/arm/configs/tct_hammer_defconfig index 07dfb98df4f0..9d32faef05f6 100644 --- a/arch/arm/configs/tct_hammer_defconfig +++ b/arch/arm/configs/tct_hammer_defconfig | |||
@@ -857,7 +857,6 @@ CONFIG_DEBUG_ERRORS=y | |||
857 | # CONFIG_DEBUG_STACK_USAGE is not set | 857 | # CONFIG_DEBUG_STACK_USAGE is not set |
858 | CONFIG_DEBUG_LL=y | 858 | CONFIG_DEBUG_LL=y |
859 | # CONFIG_DEBUG_ICEDCC is not set | 859 | # CONFIG_DEBUG_ICEDCC is not set |
860 | # CONFIG_DEBUG_S3C_PORT is not set | ||
861 | CONFIG_DEBUG_S3C_UART=0 | 860 | CONFIG_DEBUG_S3C_UART=0 |
862 | 861 | ||
863 | # | 862 | # |
diff --git a/arch/arm/configs/u300_defconfig b/arch/arm/configs/u300_defconfig index 2d827e121147..7d61ae6e75da 100644 --- a/arch/arm/configs/u300_defconfig +++ b/arch/arm/configs/u300_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.30-rc6 | 3 | # Linux kernel version: 2.6.31-rc3 |
4 | # Mon Jun 1 09:18:22 2009 | 4 | # Thu Jul 16 23:36:10 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
@@ -9,7 +9,6 @@ CONFIG_GENERIC_GPIO=y | |||
9 | CONFIG_GENERIC_TIME=y | 9 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_GENERIC_CLOCKEVENTS=y | 10 | CONFIG_GENERIC_CLOCKEVENTS=y |
11 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | 12 | CONFIG_GENERIC_HARDIRQS=y |
14 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 14 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -18,13 +17,12 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
18 | CONFIG_HARDIRQS_SW_RESEND=y | 17 | CONFIG_HARDIRQS_SW_RESEND=y |
19 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 19 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
24 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 22 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
26 | CONFIG_VECTORS_BASE=0xffff0000 | 23 | CONFIG_VECTORS_BASE=0xffff0000 |
27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 24 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
25 | CONFIG_CONSTRUCTORS=y | ||
28 | 26 | ||
29 | # | 27 | # |
30 | # General setup | 28 | # General setup |
@@ -68,7 +66,6 @@ CONFIG_SYSCTL_SYSCALL=y | |||
68 | CONFIG_KALLSYMS=y | 66 | CONFIG_KALLSYMS=y |
69 | # CONFIG_KALLSYMS_ALL is not set | 67 | # CONFIG_KALLSYMS_ALL is not set |
70 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 68 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
71 | # CONFIG_STRIP_ASM_SYMS is not set | ||
72 | CONFIG_HOTPLUG=y | 69 | CONFIG_HOTPLUG=y |
73 | CONFIG_PRINTK=y | 70 | CONFIG_PRINTK=y |
74 | CONFIG_BUG=y | 71 | CONFIG_BUG=y |
@@ -81,8 +78,13 @@ CONFIG_TIMERFD=y | |||
81 | CONFIG_EVENTFD=y | 78 | CONFIG_EVENTFD=y |
82 | CONFIG_SHMEM=y | 79 | CONFIG_SHMEM=y |
83 | # CONFIG_AIO is not set | 80 | # CONFIG_AIO is not set |
81 | |||
82 | # | ||
83 | # Performance Counters | ||
84 | # | ||
84 | # CONFIG_VM_EVENT_COUNTERS is not set | 85 | # CONFIG_VM_EVENT_COUNTERS is not set |
85 | CONFIG_SLUB_DEBUG=y | 86 | CONFIG_SLUB_DEBUG=y |
87 | # CONFIG_STRIP_ASM_SYMS is not set | ||
86 | CONFIG_COMPAT_BRK=y | 88 | CONFIG_COMPAT_BRK=y |
87 | # CONFIG_SLAB is not set | 89 | # CONFIG_SLAB is not set |
88 | CONFIG_SLUB=y | 90 | CONFIG_SLUB=y |
@@ -94,6 +96,10 @@ CONFIG_HAVE_OPROFILE=y | |||
94 | CONFIG_HAVE_KPROBES=y | 96 | CONFIG_HAVE_KPROBES=y |
95 | CONFIG_HAVE_KRETPROBES=y | 97 | CONFIG_HAVE_KRETPROBES=y |
96 | CONFIG_HAVE_CLK=y | 98 | CONFIG_HAVE_CLK=y |
99 | |||
100 | # | ||
101 | # GCOV-based kernel profiling | ||
102 | # | ||
97 | # CONFIG_SLOW_WORK is not set | 103 | # CONFIG_SLOW_WORK is not set |
98 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 104 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
99 | CONFIG_SLABINFO=y | 105 | CONFIG_SLABINFO=y |
@@ -106,7 +112,7 @@ CONFIG_MODULE_UNLOAD=y | |||
106 | # CONFIG_MODVERSIONS is not set | 112 | # CONFIG_MODVERSIONS is not set |
107 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 113 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
108 | CONFIG_BLOCK=y | 114 | CONFIG_BLOCK=y |
109 | # CONFIG_LBD is not set | 115 | # CONFIG_LBDAF is not set |
110 | # CONFIG_BLK_DEV_BSG is not set | 116 | # CONFIG_BLK_DEV_BSG is not set |
111 | # CONFIG_BLK_DEV_INTEGRITY is not set | 117 | # CONFIG_BLK_DEV_INTEGRITY is not set |
112 | 118 | ||
@@ -138,9 +144,9 @@ CONFIG_DEFAULT_IOSCHED="deadline" | |||
138 | # CONFIG_ARCH_EP93XX is not set | 144 | # CONFIG_ARCH_EP93XX is not set |
139 | # CONFIG_ARCH_FOOTBRIDGE is not set | 145 | # CONFIG_ARCH_FOOTBRIDGE is not set |
140 | # CONFIG_ARCH_MXC is not set | 146 | # CONFIG_ARCH_MXC is not set |
147 | # CONFIG_ARCH_STMP3XXX is not set | ||
141 | # CONFIG_ARCH_NETX is not set | 148 | # CONFIG_ARCH_NETX is not set |
142 | # CONFIG_ARCH_H720X is not set | 149 | # CONFIG_ARCH_H720X is not set |
143 | # CONFIG_ARCH_IMX is not set | ||
144 | # CONFIG_ARCH_IOP13XX is not set | 150 | # CONFIG_ARCH_IOP13XX is not set |
145 | # CONFIG_ARCH_IOP32X is not set | 151 | # CONFIG_ARCH_IOP32X is not set |
146 | # CONFIG_ARCH_IOP33X is not set | 152 | # CONFIG_ARCH_IOP33X is not set |
@@ -216,8 +222,8 @@ CONFIG_ARM_THUMB=y | |||
216 | # CONFIG_CPU_DCACHE_DISABLE is not set | 222 | # CONFIG_CPU_DCACHE_DISABLE is not set |
217 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | 223 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set |
218 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | 224 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set |
219 | # CONFIG_OUTER_CACHE is not set | ||
220 | CONFIG_ARM_VIC=y | 225 | CONFIG_ARM_VIC=y |
226 | CONFIG_ARM_VIC_NR=2 | ||
221 | CONFIG_COMMON_CLKDEV=y | 227 | CONFIG_COMMON_CLKDEV=y |
222 | 228 | ||
223 | # | 229 | # |
@@ -243,7 +249,6 @@ CONFIG_PREEMPT=y | |||
243 | CONFIG_HZ=100 | 249 | CONFIG_HZ=100 |
244 | CONFIG_AEABI=y | 250 | CONFIG_AEABI=y |
245 | CONFIG_OABI_COMPAT=y | 251 | CONFIG_OABI_COMPAT=y |
246 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
247 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | 252 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
248 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | 253 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
249 | # CONFIG_HIGHMEM is not set | 254 | # CONFIG_HIGHMEM is not set |
@@ -258,17 +263,18 @@ CONFIG_SPLIT_PTLOCK_CPUS=4096 | |||
258 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 263 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
259 | CONFIG_ZONE_DMA_FLAG=0 | 264 | CONFIG_ZONE_DMA_FLAG=0 |
260 | CONFIG_VIRT_TO_BUS=y | 265 | CONFIG_VIRT_TO_BUS=y |
261 | CONFIG_UNEVICTABLE_LRU=y | ||
262 | CONFIG_HAVE_MLOCK=y | 266 | CONFIG_HAVE_MLOCK=y |
263 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | 267 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y |
268 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
264 | CONFIG_ALIGNMENT_TRAP=y | 269 | CONFIG_ALIGNMENT_TRAP=y |
270 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
265 | 271 | ||
266 | # | 272 | # |
267 | # Boot options | 273 | # Boot options |
268 | # | 274 | # |
269 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 275 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
270 | CONFIG_ZBOOT_ROM_BSS=0x0 | 276 | CONFIG_ZBOOT_ROM_BSS=0x0 |
271 | CONFIG_CMDLINE="root=/dev/mtdblock2 rw rootfstype=yaffs2 console=ttyAMA0,115200n8 ab3100.force=0,0x48 mtdparts=u300nand:128k@0x0(bootrecords)ro,8064k@128k(free)ro,253952k@8192k(platform) lpj=515072" | 277 | CONFIG_CMDLINE="root=/dev/ram0 rw rootfstype=rootfs console=ttyAMA0,115200n8 lpj=515072" |
272 | # CONFIG_XIP_KERNEL is not set | 278 | # CONFIG_XIP_KERNEL is not set |
273 | # CONFIG_KEXEC is not set | 279 | # CONFIG_KEXEC is not set |
274 | 280 | ||
@@ -359,6 +365,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
359 | # CONFIG_ECONET is not set | 365 | # CONFIG_ECONET is not set |
360 | # CONFIG_WAN_ROUTER is not set | 366 | # CONFIG_WAN_ROUTER is not set |
361 | # CONFIG_PHONET is not set | 367 | # CONFIG_PHONET is not set |
368 | # CONFIG_IEEE802154 is not set | ||
362 | # CONFIG_NET_SCHED is not set | 369 | # CONFIG_NET_SCHED is not set |
363 | # CONFIG_DCB is not set | 370 | # CONFIG_DCB is not set |
364 | 371 | ||
@@ -497,6 +504,7 @@ CONFIG_MISC_DEVICES=y | |||
497 | # CONFIG_EEPROM_AT24 is not set | 504 | # CONFIG_EEPROM_AT24 is not set |
498 | # CONFIG_EEPROM_AT25 is not set | 505 | # CONFIG_EEPROM_AT25 is not set |
499 | # CONFIG_EEPROM_LEGACY is not set | 506 | # CONFIG_EEPROM_LEGACY is not set |
507 | # CONFIG_EEPROM_MAX6875 is not set | ||
500 | # CONFIG_EEPROM_93CX6 is not set | 508 | # CONFIG_EEPROM_93CX6 is not set |
501 | CONFIG_HAVE_IDE=y | 509 | CONFIG_HAVE_IDE=y |
502 | # CONFIG_IDE is not set | 510 | # CONFIG_IDE is not set |
@@ -533,12 +541,14 @@ CONFIG_INPUT_EVDEV=y | |||
533 | # | 541 | # |
534 | CONFIG_INPUT_KEYBOARD=y | 542 | CONFIG_INPUT_KEYBOARD=y |
535 | # CONFIG_KEYBOARD_ATKBD is not set | 543 | # CONFIG_KEYBOARD_ATKBD is not set |
536 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
537 | # CONFIG_KEYBOARD_LKKBD is not set | 544 | # CONFIG_KEYBOARD_LKKBD is not set |
538 | # CONFIG_KEYBOARD_XTKBD is not set | 545 | # CONFIG_KEYBOARD_GPIO is not set |
546 | # CONFIG_KEYBOARD_MATRIX is not set | ||
547 | # CONFIG_KEYBOARD_LM8323 is not set | ||
539 | # CONFIG_KEYBOARD_NEWTON is not set | 548 | # CONFIG_KEYBOARD_NEWTON is not set |
540 | # CONFIG_KEYBOARD_STOWAWAY is not set | 549 | # CONFIG_KEYBOARD_STOWAWAY is not set |
541 | # CONFIG_KEYBOARD_GPIO is not set | 550 | # CONFIG_KEYBOARD_SUNKBD is not set |
551 | # CONFIG_KEYBOARD_XTKBD is not set | ||
542 | # CONFIG_INPUT_MOUSE is not set | 552 | # CONFIG_INPUT_MOUSE is not set |
543 | # CONFIG_INPUT_JOYSTICK is not set | 553 | # CONFIG_INPUT_JOYSTICK is not set |
544 | # CONFIG_INPUT_TABLET is not set | 554 | # CONFIG_INPUT_TABLET is not set |
@@ -597,9 +607,11 @@ CONFIG_I2C_HELPER_AUTO=y | |||
597 | # | 607 | # |
598 | # I2C system bus drivers (mostly embedded / system-on-chip) | 608 | # I2C system bus drivers (mostly embedded / system-on-chip) |
599 | # | 609 | # |
610 | # CONFIG_I2C_DESIGNWARE is not set | ||
600 | # CONFIG_I2C_GPIO is not set | 611 | # CONFIG_I2C_GPIO is not set |
601 | # CONFIG_I2C_OCORES is not set | 612 | # CONFIG_I2C_OCORES is not set |
602 | # CONFIG_I2C_SIMTEC is not set | 613 | # CONFIG_I2C_SIMTEC is not set |
614 | CONFIG_I2C_STU300=y | ||
603 | 615 | ||
604 | # | 616 | # |
605 | # External I2C/SMBus adapter drivers | 617 | # External I2C/SMBus adapter drivers |
@@ -620,7 +632,6 @@ CONFIG_I2C_HELPER_AUTO=y | |||
620 | # CONFIG_SENSORS_PCF8574 is not set | 632 | # CONFIG_SENSORS_PCF8574 is not set |
621 | # CONFIG_PCF8575 is not set | 633 | # CONFIG_PCF8575 is not set |
622 | # CONFIG_SENSORS_PCA9539 is not set | 634 | # CONFIG_SENSORS_PCA9539 is not set |
623 | # CONFIG_SENSORS_MAX6875 is not set | ||
624 | # CONFIG_SENSORS_TSL2550 is not set | 635 | # CONFIG_SENSORS_TSL2550 is not set |
625 | # CONFIG_I2C_DEBUG_CORE is not set | 636 | # CONFIG_I2C_DEBUG_CORE is not set |
626 | # CONFIG_I2C_DEBUG_ALGO is not set | 637 | # CONFIG_I2C_DEBUG_ALGO is not set |
@@ -635,6 +646,7 @@ CONFIG_SPI_MASTER=y | |||
635 | # | 646 | # |
636 | # CONFIG_SPI_BITBANG is not set | 647 | # CONFIG_SPI_BITBANG is not set |
637 | # CONFIG_SPI_GPIO is not set | 648 | # CONFIG_SPI_GPIO is not set |
649 | CONFIG_SPI_PL022=y | ||
638 | 650 | ||
639 | # | 651 | # |
640 | # SPI Protocol Masters | 652 | # SPI Protocol Masters |
@@ -647,6 +659,7 @@ CONFIG_POWER_SUPPLY=y | |||
647 | # CONFIG_PDA_POWER is not set | 659 | # CONFIG_PDA_POWER is not set |
648 | # CONFIG_BATTERY_DS2760 is not set | 660 | # CONFIG_BATTERY_DS2760 is not set |
649 | # CONFIG_BATTERY_BQ27x00 is not set | 661 | # CONFIG_BATTERY_BQ27x00 is not set |
662 | # CONFIG_BATTERY_MAX17040 is not set | ||
650 | # CONFIG_HWMON is not set | 663 | # CONFIG_HWMON is not set |
651 | # CONFIG_THERMAL is not set | 664 | # CONFIG_THERMAL is not set |
652 | # CONFIG_THERMAL_HWMON is not set | 665 | # CONFIG_THERMAL_HWMON is not set |
@@ -657,6 +670,7 @@ CONFIG_WATCHDOG=y | |||
657 | # Watchdog Device Drivers | 670 | # Watchdog Device Drivers |
658 | # | 671 | # |
659 | # CONFIG_SOFT_WATCHDOG is not set | 672 | # CONFIG_SOFT_WATCHDOG is not set |
673 | CONFIG_COH901327_WATCHDOG=y | ||
660 | CONFIG_SSB_POSSIBLE=y | 674 | CONFIG_SSB_POSSIBLE=y |
661 | 675 | ||
662 | # | 676 | # |
@@ -678,22 +692,9 @@ CONFIG_SSB_POSSIBLE=y | |||
678 | # CONFIG_MFD_WM8400 is not set | 692 | # CONFIG_MFD_WM8400 is not set |
679 | # CONFIG_MFD_WM8350_I2C is not set | 693 | # CONFIG_MFD_WM8350_I2C is not set |
680 | # CONFIG_MFD_PCF50633 is not set | 694 | # CONFIG_MFD_PCF50633 is not set |
681 | 695 | CONFIG_AB3100_CORE=y | |
682 | # | 696 | # CONFIG_EZX_PCAP is not set |
683 | # Multimedia devices | 697 | # CONFIG_MEDIA_SUPPORT is not set |
684 | # | ||
685 | |||
686 | # | ||
687 | # Multimedia core support | ||
688 | # | ||
689 | # CONFIG_VIDEO_DEV is not set | ||
690 | # CONFIG_DVB_CORE is not set | ||
691 | # CONFIG_VIDEO_MEDIA is not set | ||
692 | |||
693 | # | ||
694 | # Multimedia drivers | ||
695 | # | ||
696 | # CONFIG_DAB is not set | ||
697 | 698 | ||
698 | # | 699 | # |
699 | # Graphics support | 700 | # Graphics support |
@@ -760,6 +761,11 @@ CONFIG_SND_JACK=y | |||
760 | # CONFIG_SND_VERBOSE_PROCFS is not set | 761 | # CONFIG_SND_VERBOSE_PROCFS is not set |
761 | # CONFIG_SND_VERBOSE_PRINTK is not set | 762 | # CONFIG_SND_VERBOSE_PRINTK is not set |
762 | # CONFIG_SND_DEBUG is not set | 763 | # CONFIG_SND_DEBUG is not set |
764 | # CONFIG_SND_RAWMIDI_SEQ is not set | ||
765 | # CONFIG_SND_OPL3_LIB_SEQ is not set | ||
766 | # CONFIG_SND_OPL4_LIB_SEQ is not set | ||
767 | # CONFIG_SND_SBAWE_SEQ is not set | ||
768 | # CONFIG_SND_EMU10K1_SEQ is not set | ||
763 | # CONFIG_SND_DRIVERS is not set | 769 | # CONFIG_SND_DRIVERS is not set |
764 | # CONFIG_SND_ARM is not set | 770 | # CONFIG_SND_ARM is not set |
765 | # CONFIG_SND_SPI is not set | 771 | # CONFIG_SND_SPI is not set |
@@ -770,7 +776,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y | |||
770 | # CONFIG_HID_SUPPORT is not set | 776 | # CONFIG_HID_SUPPORT is not set |
771 | # CONFIG_USB_SUPPORT is not set | 777 | # CONFIG_USB_SUPPORT is not set |
772 | CONFIG_MMC=y | 778 | CONFIG_MMC=y |
773 | # CONFIG_MMC_DEBUG is not set | 779 | CONFIG_MMC_DEBUG=y |
774 | # CONFIG_MMC_UNSAFE_RESUME is not set | 780 | # CONFIG_MMC_UNSAFE_RESUME is not set |
775 | 781 | ||
776 | # | 782 | # |
@@ -797,7 +803,7 @@ CONFIG_LEDS_CLASS=y | |||
797 | # | 803 | # |
798 | # CONFIG_LEDS_PCA9532 is not set | 804 | # CONFIG_LEDS_PCA9532 is not set |
799 | # CONFIG_LEDS_GPIO is not set | 805 | # CONFIG_LEDS_GPIO is not set |
800 | # CONFIG_LEDS_LP5521 is not set | 806 | # CONFIG_LEDS_LP3944 is not set |
801 | # CONFIG_LEDS_PCA955X is not set | 807 | # CONFIG_LEDS_PCA955X is not set |
802 | # CONFIG_LEDS_DAC124S085 is not set | 808 | # CONFIG_LEDS_DAC124S085 is not set |
803 | # CONFIG_LEDS_BD2802 is not set | 809 | # CONFIG_LEDS_BD2802 is not set |
@@ -845,6 +851,7 @@ CONFIG_RTC_INTF_DEV=y | |||
845 | # CONFIG_RTC_DRV_S35390A is not set | 851 | # CONFIG_RTC_DRV_S35390A is not set |
846 | # CONFIG_RTC_DRV_FM3130 is not set | 852 | # CONFIG_RTC_DRV_FM3130 is not set |
847 | # CONFIG_RTC_DRV_RX8581 is not set | 853 | # CONFIG_RTC_DRV_RX8581 is not set |
854 | # CONFIG_RTC_DRV_RX8025 is not set | ||
848 | 855 | ||
849 | # | 856 | # |
850 | # SPI RTC drivers | 857 | # SPI RTC drivers |
@@ -887,7 +894,10 @@ CONFIG_REGULATOR=y | |||
887 | # CONFIG_REGULATOR_DEBUG is not set | 894 | # CONFIG_REGULATOR_DEBUG is not set |
888 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | 895 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set |
889 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | 896 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set |
897 | # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set | ||
890 | # CONFIG_REGULATOR_BQ24022 is not set | 898 | # CONFIG_REGULATOR_BQ24022 is not set |
899 | # CONFIG_REGULATOR_MAX1586 is not set | ||
900 | # CONFIG_REGULATOR_LP3971 is not set | ||
891 | # CONFIG_UIO is not set | 901 | # CONFIG_UIO is not set |
892 | # CONFIG_STAGING is not set | 902 | # CONFIG_STAGING is not set |
893 | 903 | ||
@@ -900,16 +910,19 @@ CONFIG_REGULATOR=y | |||
900 | # CONFIG_REISERFS_FS is not set | 910 | # CONFIG_REISERFS_FS is not set |
901 | # CONFIG_JFS_FS is not set | 911 | # CONFIG_JFS_FS is not set |
902 | # CONFIG_FS_POSIX_ACL is not set | 912 | # CONFIG_FS_POSIX_ACL is not set |
903 | CONFIG_FILE_LOCKING=y | ||
904 | # CONFIG_XFS_FS is not set | 913 | # CONFIG_XFS_FS is not set |
905 | # CONFIG_OCFS2_FS is not set | 914 | # CONFIG_OCFS2_FS is not set |
906 | # CONFIG_BTRFS_FS is not set | 915 | # CONFIG_BTRFS_FS is not set |
916 | CONFIG_FILE_LOCKING=y | ||
917 | CONFIG_FSNOTIFY=y | ||
907 | # CONFIG_DNOTIFY is not set | 918 | # CONFIG_DNOTIFY is not set |
908 | # CONFIG_INOTIFY is not set | 919 | # CONFIG_INOTIFY is not set |
920 | CONFIG_INOTIFY_USER=y | ||
909 | # CONFIG_QUOTA is not set | 921 | # CONFIG_QUOTA is not set |
910 | # CONFIG_AUTOFS_FS is not set | 922 | # CONFIG_AUTOFS_FS is not set |
911 | # CONFIG_AUTOFS4_FS is not set | 923 | # CONFIG_AUTOFS4_FS is not set |
912 | CONFIG_FUSE_FS=y | 924 | CONFIG_FUSE_FS=y |
925 | # CONFIG_CUSE is not set | ||
913 | 926 | ||
914 | # | 927 | # |
915 | # Caches | 928 | # Caches |
@@ -1033,6 +1046,7 @@ CONFIG_TIMER_STATS=y | |||
1033 | # CONFIG_DEBUG_OBJECTS is not set | 1046 | # CONFIG_DEBUG_OBJECTS is not set |
1034 | # CONFIG_SLUB_DEBUG_ON is not set | 1047 | # CONFIG_SLUB_DEBUG_ON is not set |
1035 | # CONFIG_SLUB_STATS is not set | 1048 | # CONFIG_SLUB_STATS is not set |
1049 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
1036 | # CONFIG_DEBUG_PREEMPT is not set | 1050 | # CONFIG_DEBUG_PREEMPT is not set |
1037 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1051 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1038 | # CONFIG_RT_MUTEX_TESTER is not set | 1052 | # CONFIG_RT_MUTEX_TESTER is not set |
@@ -1063,18 +1077,16 @@ CONFIG_DEBUG_INFO=y | |||
1063 | # CONFIG_PAGE_POISONING is not set | 1077 | # CONFIG_PAGE_POISONING is not set |
1064 | CONFIG_HAVE_FUNCTION_TRACER=y | 1078 | CONFIG_HAVE_FUNCTION_TRACER=y |
1065 | CONFIG_TRACING_SUPPORT=y | 1079 | CONFIG_TRACING_SUPPORT=y |
1066 | 1080 | CONFIG_FTRACE=y | |
1067 | # | ||
1068 | # Tracers | ||
1069 | # | ||
1070 | # CONFIG_FUNCTION_TRACER is not set | 1081 | # CONFIG_FUNCTION_TRACER is not set |
1071 | # CONFIG_IRQSOFF_TRACER is not set | 1082 | # CONFIG_IRQSOFF_TRACER is not set |
1072 | # CONFIG_PREEMPT_TRACER is not set | 1083 | # CONFIG_PREEMPT_TRACER is not set |
1073 | # CONFIG_SCHED_TRACER is not set | 1084 | # CONFIG_SCHED_TRACER is not set |
1074 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1085 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
1075 | # CONFIG_EVENT_TRACER is not set | ||
1076 | # CONFIG_BOOT_TRACER is not set | 1086 | # CONFIG_BOOT_TRACER is not set |
1077 | # CONFIG_TRACE_BRANCH_PROFILING is not set | 1087 | CONFIG_BRANCH_PROFILE_NONE=y |
1088 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
1089 | # CONFIG_PROFILE_ALL_BRANCHES is not set | ||
1078 | # CONFIG_STACK_TRACER is not set | 1090 | # CONFIG_STACK_TRACER is not set |
1079 | # CONFIG_KMEMTRACE is not set | 1091 | # CONFIG_KMEMTRACE is not set |
1080 | # CONFIG_WORKQUEUE_TRACER is not set | 1092 | # CONFIG_WORKQUEUE_TRACER is not set |
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h index 9e07fe507029..9ed2377fe8e5 100644 --- a/arch/arm/include/asm/atomic.h +++ b/arch/arm/include/asm/atomic.h | |||
@@ -159,8 +159,6 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr) | |||
159 | 159 | ||
160 | #else /* ARM_ARCH_6 */ | 160 | #else /* ARM_ARCH_6 */ |
161 | 161 | ||
162 | #include <asm/system.h> | ||
163 | |||
164 | #ifdef CONFIG_SMP | 162 | #ifdef CONFIG_SMP |
165 | #error SMP not supported on pre-ARMv6 CPUs | 163 | #error SMP not supported on pre-ARMv6 CPUs |
166 | #endif | 164 | #endif |
diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index be962c1349c4..9c746af1bf6e 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | /* PAGE_SHIFT determines the page size */ | 13 | /* PAGE_SHIFT determines the page size */ |
14 | #define PAGE_SHIFT 12 | 14 | #define PAGE_SHIFT 12 |
15 | #define PAGE_SIZE (1UL << PAGE_SHIFT) | 15 | #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) |
16 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 16 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
17 | 17 | ||
18 | #ifndef __ASSEMBLY__ | 18 | #ifndef __ASSEMBLY__ |
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h index 918d0cbbf064..0abf386ba3d3 100644 --- a/arch/arm/include/asm/pci.h +++ b/arch/arm/include/asm/pci.h | |||
@@ -65,19 +65,6 @@ extern void | |||
65 | pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | 65 | pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, |
66 | struct pci_bus_region *region); | 66 | struct pci_bus_region *region); |
67 | 67 | ||
68 | static inline struct resource * | ||
69 | pcibios_select_root(struct pci_dev *pdev, struct resource *res) | ||
70 | { | ||
71 | struct resource *root = NULL; | ||
72 | |||
73 | if (res->flags & IORESOURCE_IO) | ||
74 | root = &ioport_resource; | ||
75 | if (res->flags & IORESOURCE_MEM) | ||
76 | root = &iomem_resource; | ||
77 | |||
78 | return root; | ||
79 | } | ||
80 | |||
81 | /* | 68 | /* |
82 | * Dummy implementation; always return 0. | 69 | * Dummy implementation; always return 0. |
83 | */ | 70 | */ |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 1cd2d6416bda..c433c6c73112 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -285,15 +285,6 @@ extern struct page *empty_zero_page; | |||
285 | #define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) | 285 | #define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) |
286 | #define pte_special(pte) (0) | 286 | #define pte_special(pte) (0) |
287 | 287 | ||
288 | /* | ||
289 | * The following only works if pte_present() is not true. | ||
290 | */ | ||
291 | #define pte_file(pte) (pte_val(pte) & L_PTE_FILE) | ||
292 | #define pte_to_pgoff(x) (pte_val(x) >> 2) | ||
293 | #define pgoff_to_pte(x) __pte(((x) << 2) | L_PTE_FILE) | ||
294 | |||
295 | #define PTE_FILE_MAX_BITS 30 | ||
296 | |||
297 | #define PTE_BIT_FUNC(fn,op) \ | 288 | #define PTE_BIT_FUNC(fn,op) \ |
298 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | 289 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } |
299 | 290 | ||
@@ -384,16 +375,50 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
384 | 375 | ||
385 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 376 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
386 | 377 | ||
387 | /* Encode and decode a swap entry. | 378 | /* |
379 | * Encode and decode a swap entry. Swap entries are stored in the Linux | ||
380 | * page tables as follows: | ||
388 | * | 381 | * |
389 | * We support up to 32GB of swap on 4k machines | 382 | * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 |
383 | * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 | ||
384 | * <--------------- offset --------------------> <--- type --> 0 0 | ||
385 | * | ||
386 | * This gives us up to 127 swap files and 32GB per swap file. Note that | ||
387 | * the offset field is always non-zero. | ||
390 | */ | 388 | */ |
391 | #define __swp_type(x) (((x).val >> 2) & 0x7f) | 389 | #define __SWP_TYPE_SHIFT 2 |
392 | #define __swp_offset(x) ((x).val >> 9) | 390 | #define __SWP_TYPE_BITS 7 |
393 | #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 9) }) | 391 | #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) |
392 | #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) | ||
393 | |||
394 | #define __swp_type(x) (((x).val >> __SWP_TYPE_SHIFT) & __SWP_TYPE_MASK) | ||
395 | #define __swp_offset(x) ((x).val >> __SWP_OFFSET_SHIFT) | ||
396 | #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << __SWP_TYPE_SHIFT) | ((offset) << __SWP_OFFSET_SHIFT) }) | ||
397 | |||
394 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) | 398 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) |
395 | #define __swp_entry_to_pte(swp) ((pte_t) { (swp).val }) | 399 | #define __swp_entry_to_pte(swp) ((pte_t) { (swp).val }) |
396 | 400 | ||
401 | /* | ||
402 | * It is an error for the kernel to have more swap files than we can | ||
403 | * encode in the PTEs. This ensures that we know when MAX_SWAPFILES | ||
404 | * is increased beyond what we presently support. | ||
405 | */ | ||
406 | #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > __SWP_TYPE_BITS) | ||
407 | |||
408 | /* | ||
409 | * Encode and decode a file entry. File entries are stored in the Linux | ||
410 | * page tables as follows: | ||
411 | * | ||
412 | * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 | ||
413 | * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 | ||
414 | * <------------------------ offset -------------------------> 1 0 | ||
415 | */ | ||
416 | #define pte_file(pte) (pte_val(pte) & L_PTE_FILE) | ||
417 | #define pte_to_pgoff(x) (pte_val(x) >> 2) | ||
418 | #define pgoff_to_pte(x) __pte(((x) << 2) | L_PTE_FILE) | ||
419 | |||
420 | #define PTE_FILE_MAX_BITS 30 | ||
421 | |||
397 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ | 422 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ |
398 | /* FIXME: this is not correct */ | 423 | /* FIXME: this is not correct */ |
399 | #define kern_addr_valid(addr) (1) | 424 | #define kern_addr_valid(addr) (1) |
diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h index ee1304f22f94..5ccce0a9b03c 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h | |||
@@ -201,7 +201,8 @@ static struct tagtable __tagtable_##fn __tag = { tag, fn } | |||
201 | struct membank { | 201 | struct membank { |
202 | unsigned long start; | 202 | unsigned long start; |
203 | unsigned long size; | 203 | unsigned long size; |
204 | int node; | 204 | unsigned short node; |
205 | unsigned short highmem; | ||
205 | }; | 206 | }; |
206 | 207 | ||
207 | struct meminfo { | 208 | struct meminfo { |
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h index 4f8848260ee2..73394e50cbca 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h | |||
@@ -73,7 +73,7 @@ struct thread_info { | |||
73 | .task = &tsk, \ | 73 | .task = &tsk, \ |
74 | .exec_domain = &default_exec_domain, \ | 74 | .exec_domain = &default_exec_domain, \ |
75 | .flags = 0, \ | 75 | .flags = 0, \ |
76 | .preempt_count = 1, \ | 76 | .preempt_count = INIT_PREEMPT_COUNT, \ |
77 | .addr_limit = KERNEL_DS, \ | 77 | .addr_limit = KERNEL_DS, \ |
78 | .cpu_domain = domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \ | 78 | .cpu_domain = domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \ |
79 | domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \ | 79 | domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \ |
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h index 321c83e43a1e..f41a6f57cd12 100644 --- a/arch/arm/include/asm/tlb.h +++ b/arch/arm/include/asm/tlb.h | |||
@@ -102,8 +102,8 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) | |||
102 | } | 102 | } |
103 | 103 | ||
104 | #define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) | 104 | #define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) |
105 | #define pte_free_tlb(tlb, ptep) pte_free((tlb)->mm, ptep) | 105 | #define pte_free_tlb(tlb, ptep, addr) pte_free((tlb)->mm, ptep) |
106 | #define pmd_free_tlb(tlb, pmdp) pmd_free((tlb)->mm, pmdp) | 106 | #define pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, pmdp) |
107 | 107 | ||
108 | #define tlb_migrate_finish(mm) do { } while (0) | 108 | #define tlb_migrate_finish(mm) do { } while (0) |
109 | 109 | ||
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index 94cc58ef61ae..0e97b8cb77d5 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
@@ -389,6 +389,8 @@ | |||
389 | #define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) | 389 | #define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) |
390 | #define __NR_preadv (__NR_SYSCALL_BASE+361) | 390 | #define __NR_preadv (__NR_SYSCALL_BASE+361) |
391 | #define __NR_pwritev (__NR_SYSCALL_BASE+362) | 391 | #define __NR_pwritev (__NR_SYSCALL_BASE+362) |
392 | #define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363) | ||
393 | #define __NR_perf_counter_open (__NR_SYSCALL_BASE+364) | ||
392 | 394 | ||
393 | /* | 395 | /* |
394 | * The following SWIs are ARM private. | 396 | * The following SWIs are ARM private. |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 1680e9e9c831..f776e72a4cb8 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -372,6 +372,8 @@ | |||
372 | /* 360 */ CALL(sys_inotify_init1) | 372 | /* 360 */ CALL(sys_inotify_init1) |
373 | CALL(sys_preadv) | 373 | CALL(sys_preadv) |
374 | CALL(sys_pwritev) | 374 | CALL(sys_pwritev) |
375 | CALL(sys_rt_tgsigqueueinfo) | ||
376 | CALL(sys_perf_counter_open) | ||
375 | #ifndef syscalls_counted | 377 | #ifndef syscalls_counted |
376 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls | 378 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
377 | #define syscalls_counted | 379 | #define syscalls_counted |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 366e5097a41a..8c3de1a350b5 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -148,7 +148,7 @@ trace: | |||
148 | sub r0, r0, #MCOUNT_INSN_SIZE | 148 | sub r0, r0, #MCOUNT_INSN_SIZE |
149 | mov lr, pc | 149 | mov lr, pc |
150 | mov pc, r2 | 150 | mov pc, r2 |
151 | mov lr, r1 @ restore lr | 151 | ldr lr, [fp, #-4] @ restore lr |
152 | ldmia sp!, {r0-r3, pc} | 152 | ldmia sp!, {r0-r3, pc} |
153 | 153 | ||
154 | #endif /* CONFIG_DYNAMIC_FTRACE */ | 154 | #endif /* CONFIG_DYNAMIC_FTRACE */ |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 6874c7dca75a..b7c3490eaa24 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -98,17 +98,6 @@ unlock: | |||
98 | return 0; | 98 | return 0; |
99 | } | 99 | } |
100 | 100 | ||
101 | /* Handle bad interrupts */ | ||
102 | static struct irq_desc bad_irq_desc = { | ||
103 | .handle_irq = handle_bad_irq, | ||
104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), | ||
105 | }; | ||
106 | |||
107 | #ifdef CONFIG_CPUMASK_OFFSTACK | ||
108 | /* We are not allocating bad_irq_desc.affinity or .pending_mask */ | ||
109 | #error "ARM architecture does not support CONFIG_CPUMASK_OFFSTACK." | ||
110 | #endif | ||
111 | |||
112 | /* | 101 | /* |
113 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not | 102 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not |
114 | * come via this function. Instead, they should provide their | 103 | * come via this function. Instead, they should provide their |
@@ -124,10 +113,13 @@ asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
124 | * Some hardware gives randomly wrong interrupts. Rather | 113 | * Some hardware gives randomly wrong interrupts. Rather |
125 | * than crashing, do something sensible. | 114 | * than crashing, do something sensible. |
126 | */ | 115 | */ |
127 | if (irq >= NR_IRQS) | 116 | if (unlikely(irq >= NR_IRQS)) { |
128 | handle_bad_irq(irq, &bad_irq_desc); | 117 | if (printk_ratelimit()) |
129 | else | 118 | printk(KERN_WARNING "Bad IRQ%u\n", irq); |
119 | ack_bad_irq(irq); | ||
120 | } else { | ||
130 | generic_handle_irq(irq); | 121 | generic_handle_irq(irq); |
122 | } | ||
131 | 123 | ||
132 | /* AT91 specific workaround */ | 124 | /* AT91 specific workaround */ |
133 | irq_finish(irq); | 125 | irq_finish(irq); |
@@ -165,10 +157,6 @@ void __init init_IRQ(void) | |||
165 | for (irq = 0; irq < NR_IRQS; irq++) | 157 | for (irq = 0; irq < NR_IRQS; irq++) |
166 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; | 158 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; |
167 | 159 | ||
168 | #ifdef CONFIG_SMP | ||
169 | cpumask_setall(bad_irq_desc.affinity); | ||
170 | bad_irq_desc.cpu = smp_processor_id(); | ||
171 | #endif | ||
172 | init_arch_irq(); | 160 | init_arch_irq(); |
173 | } | 161 | } |
174 | 162 | ||
@@ -176,7 +164,7 @@ void __init init_IRQ(void) | |||
176 | 164 | ||
177 | static void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu) | 165 | static void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu) |
178 | { | 166 | { |
179 | pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->cpu, cpu); | 167 | pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->node, cpu); |
180 | 168 | ||
181 | spin_lock_irq(&desc->lock); | 169 | spin_lock_irq(&desc->lock); |
182 | desc->chip->set_affinity(irq, cpumask_of(cpu)); | 170 | desc->chip->set_affinity(irq, cpumask_of(cpu)); |
@@ -195,7 +183,7 @@ void migrate_irqs(void) | |||
195 | for (i = 0; i < NR_IRQS; i++) { | 183 | for (i = 0; i < NR_IRQS; i++) { |
196 | struct irq_desc *desc = irq_desc + i; | 184 | struct irq_desc *desc = irq_desc + i; |
197 | 185 | ||
198 | if (desc->cpu == cpu) { | 186 | if (desc->node == cpu) { |
199 | unsigned int newcpu = cpumask_any_and(desc->affinity, | 187 | unsigned int newcpu = cpumask_any_and(desc->affinity, |
200 | cpu_online_mask); | 188 | cpu_online_mask); |
201 | if (newcpu >= nr_cpu_ids) { | 189 | if (newcpu >= nr_cpu_ids) { |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 1585423699ee..39196dff478c 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -114,9 +114,6 @@ void arm_machine_restart(char mode, const char *cmd) | |||
114 | /* | 114 | /* |
115 | * Function pointers to optional machine specific functions | 115 | * Function pointers to optional machine specific functions |
116 | */ | 116 | */ |
117 | void (*pm_idle)(void); | ||
118 | EXPORT_SYMBOL(pm_idle); | ||
119 | |||
120 | void (*pm_power_off)(void); | 117 | void (*pm_power_off)(void); |
121 | EXPORT_SYMBOL(pm_power_off); | 118 | EXPORT_SYMBOL(pm_power_off); |
122 | 119 | ||
@@ -130,20 +127,19 @@ EXPORT_SYMBOL_GPL(arm_pm_restart); | |||
130 | */ | 127 | */ |
131 | static void default_idle(void) | 128 | static void default_idle(void) |
132 | { | 129 | { |
133 | if (hlt_counter) | 130 | if (!need_resched()) |
134 | cpu_relax(); | 131 | arch_idle(); |
135 | else { | 132 | local_irq_enable(); |
136 | local_irq_disable(); | ||
137 | if (!need_resched()) | ||
138 | arch_idle(); | ||
139 | local_irq_enable(); | ||
140 | } | ||
141 | } | 133 | } |
142 | 134 | ||
135 | void (*pm_idle)(void) = default_idle; | ||
136 | EXPORT_SYMBOL(pm_idle); | ||
137 | |||
143 | /* | 138 | /* |
144 | * The idle thread. We try to conserve power, while trying to keep | 139 | * The idle thread, has rather strange semantics for calling pm_idle, |
145 | * overall latency low. The architecture specific idle is passed | 140 | * but this is what x86 does and we need to do the same, so that |
146 | * a value to indicate the level of "idleness" of the system. | 141 | * things like cpuidle get called in the same way. The only difference |
142 | * is that we always respect 'hlt_counter' to prevent low power idle. | ||
147 | */ | 143 | */ |
148 | void cpu_idle(void) | 144 | void cpu_idle(void) |
149 | { | 145 | { |
@@ -151,21 +147,31 @@ void cpu_idle(void) | |||
151 | 147 | ||
152 | /* endless idle loop with no priority at all */ | 148 | /* endless idle loop with no priority at all */ |
153 | while (1) { | 149 | while (1) { |
154 | void (*idle)(void) = pm_idle; | 150 | tick_nohz_stop_sched_tick(1); |
155 | 151 | leds_event(led_idle_start); | |
152 | while (!need_resched()) { | ||
156 | #ifdef CONFIG_HOTPLUG_CPU | 153 | #ifdef CONFIG_HOTPLUG_CPU |
157 | if (cpu_is_offline(smp_processor_id())) { | 154 | if (cpu_is_offline(smp_processor_id())) |
158 | leds_event(led_idle_start); | 155 | cpu_die(); |
159 | cpu_die(); | ||
160 | } | ||
161 | #endif | 156 | #endif |
162 | 157 | ||
163 | if (!idle) | 158 | local_irq_disable(); |
164 | idle = default_idle; | 159 | if (hlt_counter) { |
165 | leds_event(led_idle_start); | 160 | local_irq_enable(); |
166 | tick_nohz_stop_sched_tick(1); | 161 | cpu_relax(); |
167 | while (!need_resched()) | 162 | } else { |
168 | idle(); | 163 | stop_critical_timings(); |
164 | pm_idle(); | ||
165 | start_critical_timings(); | ||
166 | /* | ||
167 | * This will eventually be removed - pm_idle | ||
168 | * functions should always return with IRQs | ||
169 | * enabled. | ||
170 | */ | ||
171 | WARN_ON(irqs_disabled()); | ||
172 | local_irq_enable(); | ||
173 | } | ||
174 | } | ||
169 | leds_event(led_idle_end); | 175 | leds_event(led_idle_end); |
170 | tick_nohz_restart_sched_tick(); | 176 | tick_nohz_restart_sched_tick(); |
171 | preempt_enable_no_resched(); | 177 | preempt_enable_no_resched(); |
@@ -352,6 +358,23 @@ asm( ".section .text\n" | |||
352 | " .size kernel_thread_helper, . - kernel_thread_helper\n" | 358 | " .size kernel_thread_helper, . - kernel_thread_helper\n" |
353 | " .previous"); | 359 | " .previous"); |
354 | 360 | ||
361 | #ifdef CONFIG_ARM_UNWIND | ||
362 | extern void kernel_thread_exit(long code); | ||
363 | asm( ".section .text\n" | ||
364 | " .align\n" | ||
365 | " .type kernel_thread_exit, #function\n" | ||
366 | "kernel_thread_exit:\n" | ||
367 | " .fnstart\n" | ||
368 | " .cantunwind\n" | ||
369 | " bl do_exit\n" | ||
370 | " nop\n" | ||
371 | " .fnend\n" | ||
372 | " .size kernel_thread_exit, . - kernel_thread_exit\n" | ||
373 | " .previous"); | ||
374 | #else | ||
375 | #define kernel_thread_exit do_exit | ||
376 | #endif | ||
377 | |||
355 | /* | 378 | /* |
356 | * Create a kernel thread. | 379 | * Create a kernel thread. |
357 | */ | 380 | */ |
@@ -363,7 +386,7 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) | |||
363 | 386 | ||
364 | regs.ARM_r1 = (unsigned long)arg; | 387 | regs.ARM_r1 = (unsigned long)arg; |
365 | regs.ARM_r2 = (unsigned long)fn; | 388 | regs.ARM_r2 = (unsigned long)fn; |
366 | regs.ARM_r3 = (unsigned long)do_exit; | 389 | regs.ARM_r3 = (unsigned long)kernel_thread_exit; |
367 | regs.ARM_pc = (unsigned long)kernel_thread_helper; | 390 | regs.ARM_pc = (unsigned long)kernel_thread_helper; |
368 | regs.ARM_cpsr = SVC_MODE | PSR_ENDSTATE; | 391 | regs.ARM_cpsr = SVC_MODE | PSR_ENDSTATE; |
369 | 392 | ||
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 93bb4247b7ed..f6bc5d442782 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -133,7 +133,7 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, | |||
133 | } | 133 | } |
134 | 134 | ||
135 | #ifdef CONFIG_CRUNCH | 135 | #ifdef CONFIG_CRUNCH |
136 | static int preserve_crunch_context(struct crunch_sigframe *frame) | 136 | static int preserve_crunch_context(struct crunch_sigframe __user *frame) |
137 | { | 137 | { |
138 | char kbuf[sizeof(*frame) + 8]; | 138 | char kbuf[sizeof(*frame) + 8]; |
139 | struct crunch_sigframe *kframe; | 139 | struct crunch_sigframe *kframe; |
@@ -146,7 +146,7 @@ static int preserve_crunch_context(struct crunch_sigframe *frame) | |||
146 | return __copy_to_user(frame, kframe, sizeof(*frame)); | 146 | return __copy_to_user(frame, kframe, sizeof(*frame)); |
147 | } | 147 | } |
148 | 148 | ||
149 | static int restore_crunch_context(struct crunch_sigframe *frame) | 149 | static int restore_crunch_context(struct crunch_sigframe __user *frame) |
150 | { | 150 | { |
151 | char kbuf[sizeof(*frame) + 8]; | 151 | char kbuf[sizeof(*frame) + 8]; |
152 | struct crunch_sigframe *kframe; | 152 | struct crunch_sigframe *kframe; |
diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c index 1dedc2c7ff49..dd56e11f339a 100644 --- a/arch/arm/kernel/unwind.c +++ b/arch/arm/kernel/unwind.c | |||
@@ -212,7 +212,8 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl) | |||
212 | ctrl->vrs[14] = *vsp++; | 212 | ctrl->vrs[14] = *vsp++; |
213 | ctrl->vrs[SP] = (unsigned long)vsp; | 213 | ctrl->vrs[SP] = (unsigned long)vsp; |
214 | } else if (insn == 0xb0) { | 214 | } else if (insn == 0xb0) { |
215 | ctrl->vrs[PC] = ctrl->vrs[LR]; | 215 | if (ctrl->vrs[PC] == 0) |
216 | ctrl->vrs[PC] = ctrl->vrs[LR]; | ||
216 | /* no further processing */ | 217 | /* no further processing */ |
217 | ctrl->entries = 0; | 218 | ctrl->entries = 0; |
218 | } else if (insn == 0xb1) { | 219 | } else if (insn == 0xb1) { |
@@ -309,18 +310,20 @@ int unwind_frame(struct stackframe *frame) | |||
309 | } | 310 | } |
310 | 311 | ||
311 | while (ctrl.entries > 0) { | 312 | while (ctrl.entries > 0) { |
312 | int urc; | 313 | int urc = unwind_exec_insn(&ctrl); |
313 | |||
314 | if (ctrl.vrs[SP] < low || ctrl.vrs[SP] >= high) | ||
315 | return -URC_FAILURE; | ||
316 | urc = unwind_exec_insn(&ctrl); | ||
317 | if (urc < 0) | 314 | if (urc < 0) |
318 | return urc; | 315 | return urc; |
316 | if (ctrl.vrs[SP] < low || ctrl.vrs[SP] >= high) | ||
317 | return -URC_FAILURE; | ||
319 | } | 318 | } |
320 | 319 | ||
321 | if (ctrl.vrs[PC] == 0) | 320 | if (ctrl.vrs[PC] == 0) |
322 | ctrl.vrs[PC] = ctrl.vrs[LR]; | 321 | ctrl.vrs[PC] = ctrl.vrs[LR]; |
323 | 322 | ||
323 | /* check for infinite loop */ | ||
324 | if (frame->pc == ctrl.vrs[PC]) | ||
325 | return -URC_FAILURE; | ||
326 | |||
324 | frame->fp = ctrl.vrs[FP]; | 327 | frame->fp = ctrl.vrs[FP]; |
325 | frame->sp = ctrl.vrs[SP]; | 328 | frame->sp = ctrl.vrs[SP]; |
326 | frame->lr = ctrl.vrs[LR]; | 329 | frame->lr = ctrl.vrs[LR]; |
@@ -332,7 +335,6 @@ int unwind_frame(struct stackframe *frame) | |||
332 | void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk) | 335 | void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk) |
333 | { | 336 | { |
334 | struct stackframe frame; | 337 | struct stackframe frame; |
335 | unsigned long high, low; | ||
336 | register unsigned long current_sp asm ("sp"); | 338 | register unsigned long current_sp asm ("sp"); |
337 | 339 | ||
338 | pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk); | 340 | pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk); |
@@ -362,9 +364,6 @@ void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk) | |||
362 | frame.pc = thread_saved_pc(tsk); | 364 | frame.pc = thread_saved_pc(tsk); |
363 | } | 365 | } |
364 | 366 | ||
365 | low = frame.sp & ~(THREAD_SIZE - 1); | ||
366 | high = low + THREAD_SIZE; | ||
367 | |||
368 | while (1) { | 367 | while (1) { |
369 | int urc; | 368 | int urc; |
370 | unsigned long where = frame.pc; | 369 | unsigned long where = frame.pc; |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 6c0779792546..69371028a202 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <asm-generic/vmlinux.lds.h> | 6 | #include <asm-generic/vmlinux.lds.h> |
7 | #include <asm/thread_info.h> | 7 | #include <asm/thread_info.h> |
8 | #include <asm/memory.h> | 8 | #include <asm/memory.h> |
9 | #include <asm/page.h> | ||
9 | 10 | ||
10 | OUTPUT_ARCH(arm) | 11 | OUTPUT_ARCH(arm) |
11 | ENTRY(stext) | 12 | ENTRY(stext) |
@@ -63,7 +64,7 @@ SECTIONS | |||
63 | usr/built-in.o(.init.ramfs) | 64 | usr/built-in.o(.init.ramfs) |
64 | __initramfs_end = .; | 65 | __initramfs_end = .; |
65 | #endif | 66 | #endif |
66 | . = ALIGN(4096); | 67 | . = ALIGN(PAGE_SIZE); |
67 | __per_cpu_load = .; | 68 | __per_cpu_load = .; |
68 | __per_cpu_start = .; | 69 | __per_cpu_start = .; |
69 | *(.data.percpu.page_aligned) | 70 | *(.data.percpu.page_aligned) |
@@ -73,7 +74,7 @@ SECTIONS | |||
73 | #ifndef CONFIG_XIP_KERNEL | 74 | #ifndef CONFIG_XIP_KERNEL |
74 | __init_begin = _stext; | 75 | __init_begin = _stext; |
75 | INIT_DATA | 76 | INIT_DATA |
76 | . = ALIGN(4096); | 77 | . = ALIGN(PAGE_SIZE); |
77 | __init_end = .; | 78 | __init_end = .; |
78 | #endif | 79 | #endif |
79 | } | 80 | } |
@@ -84,6 +85,14 @@ SECTIONS | |||
84 | *(.exitcall.exit) | 85 | *(.exitcall.exit) |
85 | *(.ARM.exidx.exit.text) | 86 | *(.ARM.exidx.exit.text) |
86 | *(.ARM.extab.exit.text) | 87 | *(.ARM.extab.exit.text) |
88 | #ifndef CONFIG_HOTPLUG_CPU | ||
89 | *(.ARM.exidx.cpuexit.text) | ||
90 | *(.ARM.extab.cpuexit.text) | ||
91 | #endif | ||
92 | #ifndef CONFIG_HOTPLUG | ||
93 | *(.ARM.exidx.devexit.text) | ||
94 | *(.ARM.extab.devexit.text) | ||
95 | #endif | ||
87 | #ifndef CONFIG_MMU | 96 | #ifndef CONFIG_MMU |
88 | *(.fixup) | 97 | *(.fixup) |
89 | *(__ex_table) | 98 | *(__ex_table) |
@@ -110,7 +119,7 @@ SECTIONS | |||
110 | *(.got) /* Global offset table */ | 119 | *(.got) /* Global offset table */ |
111 | } | 120 | } |
112 | 121 | ||
113 | RODATA | 122 | RO_DATA(PAGE_SIZE) |
114 | 123 | ||
115 | _etext = .; /* End of text and rodata section */ | 124 | _etext = .; /* End of text and rodata section */ |
116 | 125 | ||
@@ -150,17 +159,17 @@ SECTIONS | |||
150 | *(.data.init_task) | 159 | *(.data.init_task) |
151 | 160 | ||
152 | #ifdef CONFIG_XIP_KERNEL | 161 | #ifdef CONFIG_XIP_KERNEL |
153 | . = ALIGN(4096); | 162 | . = ALIGN(PAGE_SIZE); |
154 | __init_begin = .; | 163 | __init_begin = .; |
155 | INIT_DATA | 164 | INIT_DATA |
156 | . = ALIGN(4096); | 165 | . = ALIGN(PAGE_SIZE); |
157 | __init_end = .; | 166 | __init_end = .; |
158 | #endif | 167 | #endif |
159 | 168 | ||
160 | . = ALIGN(4096); | 169 | . = ALIGN(PAGE_SIZE); |
161 | __nosave_begin = .; | 170 | __nosave_begin = .; |
162 | *(.data.nosave) | 171 | *(.data.nosave) |
163 | . = ALIGN(4096); | 172 | . = ALIGN(PAGE_SIZE); |
164 | __nosave_end = .; | 173 | __nosave_end = .; |
165 | 174 | ||
166 | /* | 175 | /* |
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index cc270beadd5d..a55398ed1211 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c | |||
@@ -24,6 +24,8 @@ | |||
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/spi/spi.h> | 25 | #include <linux/spi/spi.h> |
26 | #include <linux/spi/at73c213.h> | 26 | #include <linux/spi/at73c213.h> |
27 | #include <linux/gpio_keys.h> | ||
28 | #include <linux/input.h> | ||
27 | #include <linux/clk.h> | 29 | #include <linux/clk.h> |
28 | 30 | ||
29 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
@@ -218,6 +220,56 @@ static struct gpio_led ek_leds[] = { | |||
218 | } | 220 | } |
219 | }; | 221 | }; |
220 | 222 | ||
223 | |||
224 | /* | ||
225 | * GPIO Buttons | ||
226 | */ | ||
227 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
228 | static struct gpio_keys_button ek_buttons[] = { | ||
229 | { | ||
230 | .gpio = AT91_PIN_PA30, | ||
231 | .code = BTN_3, | ||
232 | .desc = "Button 3", | ||
233 | .active_low = 1, | ||
234 | .wakeup = 1, | ||
235 | }, | ||
236 | { | ||
237 | .gpio = AT91_PIN_PA31, | ||
238 | .code = BTN_4, | ||
239 | .desc = "Button 4", | ||
240 | .active_low = 1, | ||
241 | .wakeup = 1, | ||
242 | } | ||
243 | }; | ||
244 | |||
245 | static struct gpio_keys_platform_data ek_button_data = { | ||
246 | .buttons = ek_buttons, | ||
247 | .nbuttons = ARRAY_SIZE(ek_buttons), | ||
248 | }; | ||
249 | |||
250 | static struct platform_device ek_button_device = { | ||
251 | .name = "gpio-keys", | ||
252 | .id = -1, | ||
253 | .num_resources = 0, | ||
254 | .dev = { | ||
255 | .platform_data = &ek_button_data, | ||
256 | } | ||
257 | }; | ||
258 | |||
259 | static void __init ek_add_device_buttons(void) | ||
260 | { | ||
261 | at91_set_gpio_input(AT91_PIN_PA30, 1); /* btn3 */ | ||
262 | at91_set_deglitch(AT91_PIN_PA30, 1); | ||
263 | at91_set_gpio_input(AT91_PIN_PA31, 1); /* btn4 */ | ||
264 | at91_set_deglitch(AT91_PIN_PA31, 1); | ||
265 | |||
266 | platform_device_register(&ek_button_device); | ||
267 | } | ||
268 | #else | ||
269 | static void __init ek_add_device_buttons(void) {} | ||
270 | #endif | ||
271 | |||
272 | |||
221 | static struct i2c_board_info __initdata ek_i2c_devices[] = { | 273 | static struct i2c_board_info __initdata ek_i2c_devices[] = { |
222 | { | 274 | { |
223 | I2C_BOARD_INFO("24c512", 0x50), | 275 | I2C_BOARD_INFO("24c512", 0x50), |
@@ -245,6 +297,8 @@ static void __init ek_board_init(void) | |||
245 | at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); | 297 | at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); |
246 | /* LEDs */ | 298 | /* LEDs */ |
247 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); | 299 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); |
300 | /* Push Buttons */ | ||
301 | ek_add_device_buttons(); | ||
248 | /* PCK0 provides MCLK to the WM8731 */ | 302 | /* PCK0 provides MCLK to the WM8731 */ |
249 | at91_set_B_periph(AT91_PIN_PC1, 0); | 303 | at91_set_B_periph(AT91_PIN_PC1, 0); |
250 | /* SSC (for WM8731) */ | 304 | /* SSC (for WM8731) */ |
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 35e12a49d1a6..f6b5672cabd6 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
@@ -186,19 +186,21 @@ static struct fb_monspecs at91fb_default_monspecs = { | |||
186 | static void at91_lcdc_power_control(int on) | 186 | static void at91_lcdc_power_control(int on) |
187 | { | 187 | { |
188 | if (on) | 188 | if (on) |
189 | at91_set_gpio_value(AT91_PIN_PA30, 0); /* power up */ | 189 | at91_set_gpio_value(AT91_PIN_PC1, 0); /* power up */ |
190 | else | 190 | else |
191 | at91_set_gpio_value(AT91_PIN_PA30, 1); /* power down */ | 191 | at91_set_gpio_value(AT91_PIN_PC1, 1); /* power down */ |
192 | } | 192 | } |
193 | 193 | ||
194 | /* Driver datas */ | 194 | /* Driver datas */ |
195 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 195 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { |
196 | .lcdcon_is_backlight = true, | ||
196 | .default_bpp = 16, | 197 | .default_bpp = 16, |
197 | .default_dmacon = ATMEL_LCDC_DMAEN, | 198 | .default_dmacon = ATMEL_LCDC_DMAEN, |
198 | .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2, | 199 | .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2, |
199 | .default_monspecs = &at91fb_default_monspecs, | 200 | .default_monspecs = &at91fb_default_monspecs, |
200 | .atmel_lcdfb_power_control = at91_lcdc_power_control, | 201 | .atmel_lcdfb_power_control = at91_lcdc_power_control, |
201 | .guard_time = 1, | 202 | .guard_time = 1, |
203 | .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB, | ||
202 | }; | 204 | }; |
203 | 205 | ||
204 | #else | 206 | #else |
diff --git a/arch/arm/mach-at91/include/mach/at_hdmac.h b/arch/arm/mach-at91/include/mach/at_hdmac.h new file mode 100644 index 000000000000..187cb58345c0 --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at_hdmac.h | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * Header file for the Atmel AHB DMA Controller driver | ||
3 | * | ||
4 | * Copyright (C) 2008 Atmel Corporation | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef AT_HDMAC_H | ||
12 | #define AT_HDMAC_H | ||
13 | |||
14 | #include <linux/dmaengine.h> | ||
15 | |||
16 | /** | ||
17 | * struct at_dma_platform_data - Controller configuration parameters | ||
18 | * @nr_channels: Number of channels supported by hardware (max 8) | ||
19 | * @cap_mask: dma_capability flags supported by the platform | ||
20 | */ | ||
21 | struct at_dma_platform_data { | ||
22 | unsigned int nr_channels; | ||
23 | dma_cap_mask_t cap_mask; | ||
24 | }; | ||
25 | |||
26 | /** | ||
27 | * enum at_dma_slave_width - DMA slave register access width. | ||
28 | * @AT_DMA_SLAVE_WIDTH_8BIT: Do 8-bit slave register accesses | ||
29 | * @AT_DMA_SLAVE_WIDTH_16BIT: Do 16-bit slave register accesses | ||
30 | * @AT_DMA_SLAVE_WIDTH_32BIT: Do 32-bit slave register accesses | ||
31 | */ | ||
32 | enum at_dma_slave_width { | ||
33 | AT_DMA_SLAVE_WIDTH_8BIT = 0, | ||
34 | AT_DMA_SLAVE_WIDTH_16BIT, | ||
35 | AT_DMA_SLAVE_WIDTH_32BIT, | ||
36 | }; | ||
37 | |||
38 | /** | ||
39 | * struct at_dma_slave - Controller-specific information about a slave | ||
40 | * @dma_dev: required DMA master device | ||
41 | * @tx_reg: physical address of data register used for | ||
42 | * memory-to-peripheral transfers | ||
43 | * @rx_reg: physical address of data register used for | ||
44 | * peripheral-to-memory transfers | ||
45 | * @reg_width: peripheral register width | ||
46 | * @cfg: Platform-specific initializer for the CFG register | ||
47 | * @ctrla: Platform-specific initializer for the CTRLA register | ||
48 | */ | ||
49 | struct at_dma_slave { | ||
50 | struct device *dma_dev; | ||
51 | dma_addr_t tx_reg; | ||
52 | dma_addr_t rx_reg; | ||
53 | enum at_dma_slave_width reg_width; | ||
54 | u32 cfg; | ||
55 | u32 ctrla; | ||
56 | }; | ||
57 | |||
58 | |||
59 | /* Platform-configurable bits in CFG */ | ||
60 | #define ATC_SRC_PER(h) (0xFU & (h)) /* Channel src rq associated with periph handshaking ifc h */ | ||
61 | #define ATC_DST_PER(h) ((0xFU & (h)) << 4) /* Channel dst rq associated with periph handshaking ifc h */ | ||
62 | #define ATC_SRC_REP (0x1 << 8) /* Source Replay Mod */ | ||
63 | #define ATC_SRC_H2SEL (0x1 << 9) /* Source Handshaking Mod */ | ||
64 | #define ATC_SRC_H2SEL_SW (0x0 << 9) | ||
65 | #define ATC_SRC_H2SEL_HW (0x1 << 9) | ||
66 | #define ATC_DST_REP (0x1 << 12) /* Destination Replay Mod */ | ||
67 | #define ATC_DST_H2SEL (0x1 << 13) /* Destination Handshaking Mod */ | ||
68 | #define ATC_DST_H2SEL_SW (0x0 << 13) | ||
69 | #define ATC_DST_H2SEL_HW (0x1 << 13) | ||
70 | #define ATC_SOD (0x1 << 16) /* Stop On Done */ | ||
71 | #define ATC_LOCK_IF (0x1 << 20) /* Interface Lock */ | ||
72 | #define ATC_LOCK_B (0x1 << 21) /* AHB Bus Lock */ | ||
73 | #define ATC_LOCK_IF_L (0x1 << 22) /* Master Interface Arbiter Lock */ | ||
74 | #define ATC_LOCK_IF_L_CHUNK (0x0 << 22) | ||
75 | #define ATC_LOCK_IF_L_BUFFER (0x1 << 22) | ||
76 | #define ATC_AHB_PROT_MASK (0x7 << 24) /* AHB Protection */ | ||
77 | #define ATC_FIFOCFG_MASK (0x3 << 28) /* FIFO Request Configuration */ | ||
78 | #define ATC_FIFOCFG_LARGESTBURST (0x0 << 28) | ||
79 | #define ATC_FIFOCFG_HALFFIFO (0x1 << 28) | ||
80 | #define ATC_FIFOCFG_ENOUGHSPACE (0x2 << 28) | ||
81 | |||
82 | /* Platform-configurable bits in CTRLA */ | ||
83 | #define ATC_SCSIZE_MASK (0x7 << 16) /* Source Chunk Transfer Size */ | ||
84 | #define ATC_SCSIZE_1 (0x0 << 16) | ||
85 | #define ATC_SCSIZE_4 (0x1 << 16) | ||
86 | #define ATC_SCSIZE_8 (0x2 << 16) | ||
87 | #define ATC_SCSIZE_16 (0x3 << 16) | ||
88 | #define ATC_SCSIZE_32 (0x4 << 16) | ||
89 | #define ATC_SCSIZE_64 (0x5 << 16) | ||
90 | #define ATC_SCSIZE_128 (0x6 << 16) | ||
91 | #define ATC_SCSIZE_256 (0x7 << 16) | ||
92 | #define ATC_DCSIZE_MASK (0x7 << 20) /* Destination Chunk Transfer Size */ | ||
93 | #define ATC_DCSIZE_1 (0x0 << 20) | ||
94 | #define ATC_DCSIZE_4 (0x1 << 20) | ||
95 | #define ATC_DCSIZE_8 (0x2 << 20) | ||
96 | #define ATC_DCSIZE_16 (0x3 << 20) | ||
97 | #define ATC_DCSIZE_32 (0x4 << 20) | ||
98 | #define ATC_DCSIZE_64 (0x5 << 20) | ||
99 | #define ATC_DCSIZE_128 (0x6 << 20) | ||
100 | #define ATC_DCSIZE_256 (0x7 << 20) | ||
101 | |||
102 | #endif /* AT_HDMAC_H */ | ||
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index 5ac2f565d860..d6ab64ccd496 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <mach/serial.h> | 37 | #include <mach/serial.h> |
38 | #include <mach/nand.h> | 38 | #include <mach/nand.h> |
39 | #include <mach/mmc.h> | 39 | #include <mach/mmc.h> |
40 | #include <mach/common.h> | ||
41 | 40 | ||
42 | #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 | 41 | #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 |
43 | #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 | 42 | #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 |
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index 28c9008df4f4..84ad5d161a87 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <mach/serial.h> | 36 | #include <mach/serial.h> |
37 | #include <mach/nand.h> | 37 | #include <mach/nand.h> |
38 | #include <mach/mmc.h> | 38 | #include <mach/mmc.h> |
39 | #include <mach/common.h> | ||
40 | 39 | ||
41 | #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 | 40 | #define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000 |
42 | #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 | 41 | #define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 |
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index d9d40450bdc5..56c8cd01de9a 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <mach/nand.h> | 45 | #include <mach/nand.h> |
46 | #include <mach/mmc.h> | 46 | #include <mach/mmc.h> |
47 | #include <mach/emac.h> | 47 | #include <mach/emac.h> |
48 | #include <mach/common.h> | ||
49 | 48 | ||
50 | #define DM644X_EVM_PHY_MASK (0x2) | 49 | #define DM644X_EVM_PHY_MASK (0x2) |
51 | #define DM644X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ | 50 | #define DM644X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ |
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index e17de6352624..8657e72debc1 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c | |||
@@ -47,7 +47,6 @@ | |||
47 | #include <mach/i2c.h> | 47 | #include <mach/i2c.h> |
48 | #include <mach/mmc.h> | 48 | #include <mach/mmc.h> |
49 | #include <mach/emac.h> | 49 | #include <mach/emac.h> |
50 | #include <mach/common.h> | ||
51 | 50 | ||
52 | #define DM646X_EVM_PHY_MASK (0x2) | 51 | #define DM646X_EVM_PHY_MASK (0x2) |
53 | #define DM646X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ | 52 | #define DM646X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ |
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c index 748a8e48541e..7acdfd8ac071 100644 --- a/arch/arm/mach-davinci/board-sffsdr.c +++ b/arch/arm/mach-davinci/board-sffsdr.c | |||
@@ -52,7 +52,6 @@ | |||
52 | #include <mach/serial.h> | 52 | #include <mach/serial.h> |
53 | #include <mach/psc.h> | 53 | #include <mach/psc.h> |
54 | #include <mach/mux.h> | 54 | #include <mach/mux.h> |
55 | #include <mach/common.h> | ||
56 | 55 | ||
57 | #define SFFSDR_PHY_MASK (0x2) | 56 | #define SFFSDR_PHY_MASK (0x2) |
58 | #define SFFSDR_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ | 57 | #define SFFSDR_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ |
diff --git a/arch/arm/mach-davinci/include/mach/nand.h b/arch/arm/mach-davinci/include/mach/nand.h index aa482841270b..b520c4b5678a 100644 --- a/arch/arm/mach-davinci/include/mach/nand.h +++ b/arch/arm/mach-davinci/include/mach/nand.h | |||
@@ -68,10 +68,14 @@ struct davinci_nand_pdata { /* platform_data */ | |||
68 | 68 | ||
69 | /* none == NAND_ECC_NONE (strongly *not* advised!!) | 69 | /* none == NAND_ECC_NONE (strongly *not* advised!!) |
70 | * soft == NAND_ECC_SOFT | 70 | * soft == NAND_ECC_SOFT |
71 | * 1-bit == NAND_ECC_HW | 71 | * else == NAND_ECC_HW, according to ecc_bits |
72 | * 4-bit == NAND_ECC_HW_SYNDROME (not on all chips) | 72 | * |
73 | * All DaVinci-family chips support 1-bit hardware ECC. | ||
74 | * Newer ones also support 4-bit ECC, but are awkward | ||
75 | * using it with large page chips. | ||
73 | */ | 76 | */ |
74 | nand_ecc_modes_t ecc_mode; | 77 | nand_ecc_modes_t ecc_mode; |
78 | u8 ecc_bits; | ||
75 | 79 | ||
76 | /* e.g. NAND_BUSWIDTH_16 or NAND_USE_FLASH_BBT */ | 80 | /* e.g. NAND_BUSWIDTH_16 or NAND_USE_FLASH_BBT */ |
77 | unsigned options; | 81 | unsigned options; |
diff --git a/arch/arm/mach-ep93xx/dma-m2p.c b/arch/arm/mach-ep93xx/dma-m2p.c index a2df5bb7dff0..dbcac9c40a28 100644 --- a/arch/arm/mach-ep93xx/dma-m2p.c +++ b/arch/arm/mach-ep93xx/dma-m2p.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/err.h> | 33 | #include <linux/err.h> |
34 | #include <linux/interrupt.h> | 34 | #include <linux/interrupt.h> |
35 | #include <linux/module.h> | 35 | #include <linux/module.h> |
36 | #include <linux/io.h> | ||
36 | 37 | ||
37 | #include <mach/dma.h> | 38 | #include <mach/dma.h> |
38 | #include <mach/hardware.h> | 39 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h b/arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h new file mode 100644 index 000000000000..83f31cd0a274 --- /dev/null +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h | ||
3 | */ | ||
4 | |||
5 | #ifndef __ASM_ARCH_EP93XX_KEYPAD_H | ||
6 | #define __ASM_ARCH_EP93XX_KEYPAD_H | ||
7 | |||
8 | #define MAX_MATRIX_KEY_ROWS (8) | ||
9 | #define MAX_MATRIX_KEY_COLS (8) | ||
10 | |||
11 | /* flags for the ep93xx_keypad driver */ | ||
12 | #define EP93XX_KEYPAD_DISABLE_3_KEY (1<<0) /* disable 3-key reset */ | ||
13 | #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */ | ||
14 | #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */ | ||
15 | #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */ | ||
16 | #define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */ | ||
17 | #define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */ | ||
18 | |||
19 | /** | ||
20 | * struct ep93xx_keypad_platform_data - platform specific device structure | ||
21 | * @matrix_key_rows: number of rows in the keypad matrix | ||
22 | * @matrix_key_cols: number of columns in the keypad matrix | ||
23 | * @matrix_key_map: array of keycodes defining the keypad matrix | ||
24 | * @matrix_key_map_size: ARRAY_SIZE(matrix_key_map) | ||
25 | * @debounce: debounce start count; terminal count is 0xff | ||
26 | * @prescale: row/column counter pre-scaler load value | ||
27 | * @flags: see above | ||
28 | */ | ||
29 | struct ep93xx_keypad_platform_data { | ||
30 | unsigned int matrix_key_rows; | ||
31 | unsigned int matrix_key_cols; | ||
32 | unsigned int *matrix_key_map; | ||
33 | int matrix_key_map_size; | ||
34 | unsigned int debounce; | ||
35 | unsigned int prescale; | ||
36 | unsigned int flags; | ||
37 | }; | ||
38 | |||
39 | /* macro for creating the matrix_key_map table */ | ||
40 | #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) | ||
41 | |||
42 | #endif /* __ASM_ARCH_EP93XX_KEYPAD_H */ | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/arch/arm/mach-ep93xx/include/mach/ts72xx.h index 34ddec081c40..411734422c1d 100644 --- a/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/arch/arm/mach-ep93xx/include/mach/ts72xx.h | |||
@@ -41,9 +41,6 @@ | |||
41 | #define TS72XX_OPTIONS2_TS9420_BOOT 0x02 | 41 | #define TS72XX_OPTIONS2_TS9420_BOOT 0x02 |
42 | 42 | ||
43 | 43 | ||
44 | #define TS72XX_NOR_PHYS_BASE 0x60000000 | ||
45 | #define TS72XX_NOR2_PHYS_BASE 0x62000000 | ||
46 | |||
47 | #define TS72XX_NAND1_DATA_PHYS_BASE 0x60000000 | 44 | #define TS72XX_NAND1_DATA_PHYS_BASE 0x60000000 |
48 | #define TS72XX_NAND2_DATA_PHYS_BASE 0x70000000 | 45 | #define TS72XX_NAND2_DATA_PHYS_BASE 0x70000000 |
49 | #define TS72XX_NAND_DATA_VIRT_BASE 0xfebfc000 | 46 | #define TS72XX_NAND_DATA_VIRT_BASE 0xfebfc000 |
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c index 7ee024d34829..aaf1371412af 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c +++ b/arch/arm/mach-ep93xx/ts72xx.c | |||
@@ -112,13 +112,16 @@ static void __init ts72xx_map_io(void) | |||
112 | } | 112 | } |
113 | } | 113 | } |
114 | 114 | ||
115 | /************************************************************************* | ||
116 | * NOR flash (TS-7200 only) | ||
117 | *************************************************************************/ | ||
115 | static struct physmap_flash_data ts72xx_flash_data = { | 118 | static struct physmap_flash_data ts72xx_flash_data = { |
116 | .width = 1, | 119 | .width = 2, |
117 | }; | 120 | }; |
118 | 121 | ||
119 | static struct resource ts72xx_flash_resource = { | 122 | static struct resource ts72xx_flash_resource = { |
120 | .start = TS72XX_NOR_PHYS_BASE, | 123 | .start = EP93XX_CS6_PHYS_BASE, |
121 | .end = TS72XX_NOR_PHYS_BASE + SZ_16M - 1, | 124 | .end = EP93XX_CS6_PHYS_BASE + SZ_16M - 1, |
122 | .flags = IORESOURCE_MEM, | 125 | .flags = IORESOURCE_MEM, |
123 | }; | 126 | }; |
124 | 127 | ||
@@ -132,6 +135,12 @@ static struct platform_device ts72xx_flash = { | |||
132 | .resource = &ts72xx_flash_resource, | 135 | .resource = &ts72xx_flash_resource, |
133 | }; | 136 | }; |
134 | 137 | ||
138 | static void __init ts72xx_register_flash(void) | ||
139 | { | ||
140 | if (board_is_ts7200()) | ||
141 | platform_device_register(&ts72xx_flash); | ||
142 | } | ||
143 | |||
135 | static unsigned char ts72xx_rtc_readbyte(unsigned long addr) | 144 | static unsigned char ts72xx_rtc_readbyte(unsigned long addr) |
136 | { | 145 | { |
137 | __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE); | 146 | __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE); |
@@ -165,8 +174,7 @@ static struct ep93xx_eth_data ts72xx_eth_data = { | |||
165 | static void __init ts72xx_init_machine(void) | 174 | static void __init ts72xx_init_machine(void) |
166 | { | 175 | { |
167 | ep93xx_init_devices(); | 176 | ep93xx_init_devices(); |
168 | if (board_is_ts7200()) | 177 | ts72xx_register_flash(); |
169 | platform_device_register(&ts72xx_flash); | ||
170 | platform_device_register(&ts72xx_rtc_device); | 178 | platform_device_register(&ts72xx_rtc_device); |
171 | 179 | ||
172 | ep93xx_register_eth(&ts72xx_eth_data, 1); | 180 | ep93xx_register_eth(&ts72xx_eth_data, 1); |
diff --git a/arch/arm/mach-ixp4xx/include/mach/io.h b/arch/arm/mach-ixp4xx/include/mach/io.h index ce63048d45eb..8a947d42a6f1 100644 --- a/arch/arm/mach-ixp4xx/include/mach/io.h +++ b/arch/arm/mach-ixp4xx/include/mach/io.h | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | 19 | ||
20 | #define IO_SPACE_LIMIT 0xffff0000 | 20 | #define IO_SPACE_LIMIT 0x0000ffff |
21 | 21 | ||
22 | extern int (*ixp4xx_pci_read)(u32 addr, u32 cmd, u32* data); | 22 | extern int (*ixp4xx_pci_read)(u32 addr, u32 cmd, u32* data); |
23 | extern int ixp4xx_pci_write(u32 addr, u32 cmd, u32 data); | 23 | extern int ixp4xx_pci_write(u32 addr, u32 cmd, u32 data); |
diff --git a/arch/arm/mach-kirkwood/mpp.h b/arch/arm/mach-kirkwood/mpp.h index e021a80c2caf..bc74278ed311 100644 --- a/arch/arm/mach-kirkwood/mpp.h +++ b/arch/arm/mach-kirkwood/mpp.h | |||
@@ -289,7 +289,7 @@ | |||
289 | 289 | ||
290 | #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1 ) | 290 | #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1 ) |
291 | #define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1 ) | 291 | #define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1 ) |
292 | #define MPP48_TDM_DTX MPP( 48. 0x2, 0, 1, 0, 0, 0, 1 ) | 292 | #define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1 ) |
293 | 293 | ||
294 | #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1 ) | 294 | #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1 ) |
295 | #define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1 ) | 295 | #define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1 ) |
diff --git a/arch/arm/mach-kirkwood/ts219-setup.c b/arch/arm/mach-kirkwood/ts219-setup.c index 01aa213c0a6f..ec1a64f263d2 100644 --- a/arch/arm/mach-kirkwood/ts219-setup.c +++ b/arch/arm/mach-kirkwood/ts219-setup.c | |||
@@ -206,6 +206,15 @@ static void __init qnap_ts219_init(void) | |||
206 | 206 | ||
207 | } | 207 | } |
208 | 208 | ||
209 | static int __init ts219_pci_init(void) | ||
210 | { | ||
211 | if (machine_is_ts219()) | ||
212 | kirkwood_pcie_init(); | ||
213 | |||
214 | return 0; | ||
215 | } | ||
216 | subsys_initcall(ts219_pci_init); | ||
217 | |||
209 | MACHINE_START(TS219, "QNAP TS-119/TS-219") | 218 | MACHINE_START(TS219, "QNAP TS-119/TS-219") |
210 | /* Maintainer: Martin Michlmayr <tbm@cyrius.com> */ | 219 | /* Maintainer: Martin Michlmayr <tbm@cyrius.com> */ |
211 | .phys_io = KIRKWOOD_REGS_PHYS_BASE, | 220 | .phys_io = KIRKWOOD_REGS_PHYS_BASE, |
diff --git a/arch/arm/mach-ks8695/include/mach/hardware.h b/arch/arm/mach-ks8695/include/mach/hardware.h index 1d640d075b7e..e0f911d9e021 100644 --- a/arch/arm/mach-ks8695/include/mach/hardware.h +++ b/arch/arm/mach-ks8695/include/mach/hardware.h | |||
@@ -17,6 +17,11 @@ | |||
17 | #include <asm/sizes.h> | 17 | #include <asm/sizes.h> |
18 | 18 | ||
19 | /* | 19 | /* |
20 | * Clocks are derived from MCLK, which is 25Mhz | ||
21 | */ | ||
22 | #define KS8695_CLOCK_RATE 25000000 | ||
23 | |||
24 | /* | ||
20 | * Physical RAM address. | 25 | * Physical RAM address. |
21 | */ | 26 | */ |
22 | #define KS8695_SDRAM_PA 0x00000000 | 27 | #define KS8695_SDRAM_PA 0x00000000 |
diff --git a/arch/arm/mach-ks8695/include/mach/timex.h b/arch/arm/mach-ks8695/include/mach/timex.h index 4682e350369b..10f716371bd3 100644 --- a/arch/arm/mach-ks8695/include/mach/timex.h +++ b/arch/arm/mach-ks8695/include/mach/timex.h | |||
@@ -14,7 +14,8 @@ | |||
14 | #ifndef __ASM_ARCH_TIMEX_H | 14 | #ifndef __ASM_ARCH_TIMEX_H |
15 | #define __ASM_ARCH_TIMEX_H | 15 | #define __ASM_ARCH_TIMEX_H |
16 | 16 | ||
17 | /* timers are derived from MCLK, which is 25MHz */ | 17 | #include <mach/hardware.h> |
18 | #define CLOCK_TICK_RATE 25000000 | 18 | |
19 | #define CLOCK_TICK_RATE KS8695_CLOCK_RATE | ||
19 | 20 | ||
20 | #endif | 21 | #endif |
diff --git a/arch/arm/mach-ks8695/pci.c b/arch/arm/mach-ks8695/pci.c index f5ebcc0fcab9..78499667eb7b 100644 --- a/arch/arm/mach-ks8695/pci.c +++ b/arch/arm/mach-ks8695/pci.c | |||
@@ -245,6 +245,9 @@ static int ks8695_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs | |||
245 | 245 | ||
246 | static void __init ks8695_pci_preinit(void) | 246 | static void __init ks8695_pci_preinit(void) |
247 | { | 247 | { |
248 | /* make software reset to avoid freeze if PCI bus was messed up */ | ||
249 | __raw_writel(0x80000000, KS8695_PCI_VA + KS8695_PBCS); | ||
250 | |||
248 | /* stage 1 initialization, subid, subdevice = 0x0001 */ | 251 | /* stage 1 initialization, subid, subdevice = 0x0001 */ |
249 | __raw_writel(0x00010001, KS8695_PCI_VA + KS8695_CRCSID); | 252 | __raw_writel(0x00010001, KS8695_PCI_VA + KS8695_CRCSID); |
250 | 253 | ||
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig index 17a21a291e2f..851f2458bf65 100644 --- a/arch/arm/mach-mx3/Kconfig +++ b/arch/arm/mach-mx3/Kconfig | |||
@@ -36,6 +36,14 @@ config MACH_PCM037 | |||
36 | Include support for Phytec pcm037 platform. This includes | 36 | Include support for Phytec pcm037 platform. This includes |
37 | specific configurations for the board and its peripherals. | 37 | specific configurations for the board and its peripherals. |
38 | 38 | ||
39 | config MACH_PCM037_EET | ||
40 | bool "Support pcm037 EET board extensions" | ||
41 | depends on MACH_PCM037 | ||
42 | help | ||
43 | Add support for PCM037 EET baseboard extensions. If you are using the | ||
44 | OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel | ||
45 | command-line parameter. | ||
46 | |||
39 | config MACH_MX31LITE | 47 | config MACH_MX31LITE |
40 | bool "Support MX31 LITEKIT (LogicPD)" | 48 | bool "Support MX31 LITEKIT (LogicPD)" |
41 | select ARCH_MX31 | 49 | select ARCH_MX31 |
diff --git a/arch/arm/mach-mx3/Makefile b/arch/arm/mach-mx3/Makefile index 0322696bd11a..6b9775471be6 100644 --- a/arch/arm/mach-mx3/Makefile +++ b/arch/arm/mach-mx3/Makefile | |||
@@ -11,6 +11,7 @@ obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o | |||
11 | obj-$(CONFIG_MACH_MX31LILLY) += mx31lilly.o mx31lilly-db.o | 11 | obj-$(CONFIG_MACH_MX31LILLY) += mx31lilly.o mx31lilly-db.o |
12 | obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o | 12 | obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o |
13 | obj-$(CONFIG_MACH_PCM037) += pcm037.o | 13 | obj-$(CONFIG_MACH_PCM037) += pcm037.o |
14 | obj-$(CONFIG_MACH_PCM037_EET) += pcm037_eet.o | ||
14 | obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o | 15 | obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o |
15 | obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \ | 16 | obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \ |
16 | mx31moboard-marxbot.o | 17 | mx31moboard-marxbot.o |
diff --git a/arch/arm/mach-mx3/armadillo5x0.c b/arch/arm/mach-mx3/armadillo5x0.c index 541181090b37..ee331fd6b1bd 100644 --- a/arch/arm/mach-mx3/armadillo5x0.c +++ b/arch/arm/mach-mx3/armadillo5x0.c | |||
@@ -31,6 +31,8 @@ | |||
31 | #include <linux/smsc911x.h> | 31 | #include <linux/smsc911x.h> |
32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
34 | #include <linux/mtd/physmap.h> | ||
35 | #include <linux/io.h> | ||
34 | 36 | ||
35 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
36 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
@@ -46,8 +48,10 @@ | |||
46 | #include <mach/mmc.h> | 48 | #include <mach/mmc.h> |
47 | #include <mach/ipu.h> | 49 | #include <mach/ipu.h> |
48 | #include <mach/mx3fb.h> | 50 | #include <mach/mx3fb.h> |
51 | #include <mach/mxc_nand.h> | ||
49 | 52 | ||
50 | #include "devices.h" | 53 | #include "devices.h" |
54 | #include "crm_regs.h" | ||
51 | 55 | ||
52 | static int armadillo5x0_pins[] = { | 56 | static int armadillo5x0_pins[] = { |
53 | /* UART1 */ | 57 | /* UART1 */ |
@@ -93,7 +97,56 @@ static int armadillo5x0_pins[] = { | |||
93 | MX31_PIN_FPSHIFT__FPSHIFT, | 97 | MX31_PIN_FPSHIFT__FPSHIFT, |
94 | MX31_PIN_DRDY0__DRDY0, | 98 | MX31_PIN_DRDY0__DRDY0, |
95 | IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/ | 99 | IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/ |
100 | }; | ||
96 | 101 | ||
102 | /* | ||
103 | * NAND Flash | ||
104 | */ | ||
105 | static struct mxc_nand_platform_data armadillo5x0_nand_flash_pdata = { | ||
106 | .width = 1, | ||
107 | .hw_ecc = 1, | ||
108 | }; | ||
109 | |||
110 | /* | ||
111 | * MTD NOR Flash | ||
112 | */ | ||
113 | static struct mtd_partition armadillo5x0_nor_flash_partitions[] = { | ||
114 | { | ||
115 | .name = "nor.bootloader", | ||
116 | .offset = 0x00000000, | ||
117 | .size = 4*32*1024, | ||
118 | }, { | ||
119 | .name = "nor.kernel", | ||
120 | .offset = MTDPART_OFS_APPEND, | ||
121 | .size = 16*128*1024, | ||
122 | }, { | ||
123 | .name = "nor.userland", | ||
124 | .offset = MTDPART_OFS_APPEND, | ||
125 | .size = 110*128*1024, | ||
126 | }, { | ||
127 | .name = "nor.config", | ||
128 | .offset = MTDPART_OFS_APPEND, | ||
129 | .size = 1*128*1024, | ||
130 | }, | ||
131 | }; | ||
132 | |||
133 | static struct physmap_flash_data armadillo5x0_nor_flash_pdata = { | ||
134 | .width = 2, | ||
135 | .parts = armadillo5x0_nor_flash_partitions, | ||
136 | .nr_parts = ARRAY_SIZE(armadillo5x0_nor_flash_partitions), | ||
137 | }; | ||
138 | |||
139 | static struct resource armadillo5x0_nor_flash_resource = { | ||
140 | .flags = IORESOURCE_MEM, | ||
141 | .start = CS0_BASE_ADDR, | ||
142 | .end = CS0_BASE_ADDR + SZ_64M - 1, | ||
143 | }; | ||
144 | |||
145 | static struct platform_device armadillo5x0_nor_flash = { | ||
146 | .name = "physmap-flash", | ||
147 | .id = -1, | ||
148 | .num_resources = 1, | ||
149 | .resource = &armadillo5x0_nor_flash_resource, | ||
97 | }; | 150 | }; |
98 | 151 | ||
99 | /* | 152 | /* |
@@ -272,6 +325,16 @@ static void __init armadillo5x0_init(void) | |||
272 | /* Register FB */ | 325 | /* Register FB */ |
273 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); | 326 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); |
274 | mxc_register_device(&mx3_fb, &mx3fb_pdata); | 327 | mxc_register_device(&mx3_fb, &mx3fb_pdata); |
328 | |||
329 | /* Register NOR Flash */ | ||
330 | mxc_register_device(&armadillo5x0_nor_flash, | ||
331 | &armadillo5x0_nor_flash_pdata); | ||
332 | |||
333 | /* Register NAND Flash */ | ||
334 | mxc_register_device(&mxc_nand_device, &armadillo5x0_nand_flash_pdata); | ||
335 | |||
336 | /* set NAND page size to 2k if not configured via boot mode pins */ | ||
337 | __raw_writel(__raw_readl(MXC_CCM_RCSR) | (1 << 30), MXC_CCM_RCSR); | ||
275 | } | 338 | } |
276 | 339 | ||
277 | static void __init armadillo5x0_timer_init(void) | 340 | static void __init armadillo5x0_timer_init(void) |
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c index d927eddcad46..9e87e08fb121 100644 --- a/arch/arm/mach-mx3/devices.c +++ b/arch/arm/mach-mx3/devices.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
23 | #include <linux/serial.h> | 23 | #include <linux/serial.h> |
24 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
25 | #include <linux/dma-mapping.h> | ||
26 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
27 | #include <mach/irqs.h> | 26 | #include <mach/irqs.h> |
28 | #include <mach/common.h> | 27 | #include <mach/common.h> |
diff --git a/arch/arm/mach-mx3/mx31moboard-devboard.c b/arch/arm/mach-mx3/mx31moboard-devboard.c index 4704405165a1..b48581e7dedd 100644 --- a/arch/arm/mach-mx3/mx31moboard-devboard.c +++ b/arch/arm/mach-mx3/mx31moboard-devboard.c | |||
@@ -63,7 +63,7 @@ static struct imxuart_platform_data uart_pdata = { | |||
63 | 63 | ||
64 | static int devboard_sdhc2_get_ro(struct device *dev) | 64 | static int devboard_sdhc2_get_ro(struct device *dev) |
65 | { | 65 | { |
66 | return gpio_get_value(SDHC2_WP); | 66 | return !gpio_get_value(SDHC2_WP); |
67 | } | 67 | } |
68 | 68 | ||
69 | static int devboard_sdhc2_init(struct device *dev, irq_handler_t detect_irq, | 69 | static int devboard_sdhc2_init(struct device *dev, irq_handler_t detect_irq, |
diff --git a/arch/arm/mach-mx3/mx31moboard-marxbot.c b/arch/arm/mach-mx3/mx31moboard-marxbot.c index 641c3d6153ae..901fb0166c0e 100644 --- a/arch/arm/mach-mx3/mx31moboard-marxbot.c +++ b/arch/arm/mach-mx3/mx31moboard-marxbot.c | |||
@@ -67,7 +67,7 @@ static unsigned int marxbot_pins[] = { | |||
67 | 67 | ||
68 | static int marxbot_sdhc2_get_ro(struct device *dev) | 68 | static int marxbot_sdhc2_get_ro(struct device *dev) |
69 | { | 69 | { |
70 | return gpio_get_value(SDHC2_WP); | 70 | return !gpio_get_value(SDHC2_WP); |
71 | } | 71 | } |
72 | 72 | ||
73 | static int marxbot_sdhc2_init(struct device *dev, irq_handler_t detect_irq, | 73 | static int marxbot_sdhc2_init(struct device *dev, irq_handler_t detect_irq, |
diff --git a/arch/arm/mach-mx3/mx31moboard.c b/arch/arm/mach-mx3/mx31moboard.c index a17f2e411609..2a2da4739ecf 100644 --- a/arch/arm/mach-mx3/mx31moboard.c +++ b/arch/arm/mach-mx3/mx31moboard.c | |||
@@ -94,7 +94,7 @@ static struct imxi2c_platform_data moboard_i2c1_pdata = { | |||
94 | 94 | ||
95 | static int moboard_sdhc1_get_ro(struct device *dev) | 95 | static int moboard_sdhc1_get_ro(struct device *dev) |
96 | { | 96 | { |
97 | return gpio_get_value(SDHC1_WP); | 97 | return !gpio_get_value(SDHC1_WP); |
98 | } | 98 | } |
99 | 99 | ||
100 | static int moboard_sdhc1_init(struct device *dev, irq_handler_t detect_irq, | 100 | static int moboard_sdhc1_init(struct device *dev, irq_handler_t detect_irq, |
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c index c6f61a1f06c8..840cfda341d0 100644 --- a/arch/arm/mach-mx3/pcm037.c +++ b/arch/arm/mach-mx3/pcm037.c | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | 21 | #include <linux/dma-mapping.h> | |
22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
23 | #include <linux/mtd/physmap.h> | 23 | #include <linux/mtd/physmap.h> |
24 | #include <linux/mtd/plat-ram.h> | 24 | #include <linux/mtd/plat-ram.h> |
@@ -33,29 +33,67 @@ | |||
33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
34 | #include <linux/fsl_devices.h> | 34 | #include <linux/fsl_devices.h> |
35 | 35 | ||
36 | #include <mach/hardware.h> | 36 | #include <media/soc_camera.h> |
37 | |||
37 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
38 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
39 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
40 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
42 | #include <mach/board-pcm037.h> | ||
41 | #include <mach/common.h> | 43 | #include <mach/common.h> |
44 | #include <mach/hardware.h> | ||
45 | #include <mach/i2c.h> | ||
42 | #include <mach/imx-uart.h> | 46 | #include <mach/imx-uart.h> |
43 | #include <mach/iomux-mx3.h> | 47 | #include <mach/iomux-mx3.h> |
44 | #include <mach/ipu.h> | 48 | #include <mach/ipu.h> |
45 | #include <mach/board-pcm037.h> | 49 | #include <mach/mmc.h> |
50 | #include <mach/mx3_camera.h> | ||
46 | #include <mach/mx3fb.h> | 51 | #include <mach/mx3fb.h> |
47 | #include <mach/mxc_nand.h> | 52 | #include <mach/mxc_nand.h> |
48 | #include <mach/mmc.h> | ||
49 | #ifdef CONFIG_I2C_IMX | ||
50 | #include <mach/i2c.h> | ||
51 | #endif | ||
52 | 53 | ||
53 | #include "devices.h" | 54 | #include "devices.h" |
55 | #include "pcm037.h" | ||
56 | |||
57 | static enum pcm037_board_variant pcm037_instance = PCM037_PCM970; | ||
58 | |||
59 | static int __init pcm037_variant_setup(char *str) | ||
60 | { | ||
61 | if (!strcmp("eet", str)) | ||
62 | pcm037_instance = PCM037_EET; | ||
63 | else if (strcmp("pcm970", str)) | ||
64 | pr_warning("Unknown pcm037 baseboard variant %s\n", str); | ||
65 | |||
66 | return 1; | ||
67 | } | ||
68 | |||
69 | /* Supported values: "pcm970" (default) and "eet" */ | ||
70 | __setup("pcm037_variant=", pcm037_variant_setup); | ||
71 | |||
72 | enum pcm037_board_variant pcm037_variant(void) | ||
73 | { | ||
74 | return pcm037_instance; | ||
75 | } | ||
76 | |||
77 | /* UART1 with RTS/CTS handshake signals */ | ||
78 | static unsigned int pcm037_uart1_handshake_pins[] = { | ||
79 | MX31_PIN_CTS1__CTS1, | ||
80 | MX31_PIN_RTS1__RTS1, | ||
81 | MX31_PIN_TXD1__TXD1, | ||
82 | MX31_PIN_RXD1__RXD1, | ||
83 | }; | ||
84 | |||
85 | /* UART1 without RTS/CTS handshake signals */ | ||
86 | static unsigned int pcm037_uart1_pins[] = { | ||
87 | MX31_PIN_TXD1__TXD1, | ||
88 | MX31_PIN_RXD1__RXD1, | ||
89 | }; | ||
54 | 90 | ||
55 | static unsigned int pcm037_pins[] = { | 91 | static unsigned int pcm037_pins[] = { |
56 | /* I2C */ | 92 | /* I2C */ |
57 | MX31_PIN_CSPI2_MOSI__SCL, | 93 | MX31_PIN_CSPI2_MOSI__SCL, |
58 | MX31_PIN_CSPI2_MISO__SDA, | 94 | MX31_PIN_CSPI2_MISO__SDA, |
95 | MX31_PIN_CSPI2_SS2__I2C3_SDA, | ||
96 | MX31_PIN_CSPI2_SCLK__I2C3_SCL, | ||
59 | /* SDHC1 */ | 97 | /* SDHC1 */ |
60 | MX31_PIN_SD1_DATA3__SD1_DATA3, | 98 | MX31_PIN_SD1_DATA3__SD1_DATA3, |
61 | MX31_PIN_SD1_DATA2__SD1_DATA2, | 99 | MX31_PIN_SD1_DATA2__SD1_DATA2, |
@@ -73,11 +111,6 @@ static unsigned int pcm037_pins[] = { | |||
73 | MX31_PIN_CSPI1_SS0__SS0, | 111 | MX31_PIN_CSPI1_SS0__SS0, |
74 | MX31_PIN_CSPI1_SS1__SS1, | 112 | MX31_PIN_CSPI1_SS1__SS1, |
75 | MX31_PIN_CSPI1_SS2__SS2, | 113 | MX31_PIN_CSPI1_SS2__SS2, |
76 | /* UART1 */ | ||
77 | MX31_PIN_CTS1__CTS1, | ||
78 | MX31_PIN_RTS1__RTS1, | ||
79 | MX31_PIN_TXD1__TXD1, | ||
80 | MX31_PIN_RXD1__RXD1, | ||
81 | /* UART2 */ | 114 | /* UART2 */ |
82 | MX31_PIN_TXD2__TXD2, | 115 | MX31_PIN_TXD2__TXD2, |
83 | MX31_PIN_RXD2__RXD2, | 116 | MX31_PIN_RXD2__RXD2, |
@@ -120,6 +153,22 @@ static unsigned int pcm037_pins[] = { | |||
120 | MX31_PIN_D3_SPL__D3_SPL, | 153 | MX31_PIN_D3_SPL__D3_SPL, |
121 | MX31_PIN_D3_CLS__D3_CLS, | 154 | MX31_PIN_D3_CLS__D3_CLS, |
122 | MX31_PIN_LCS0__GPI03_23, | 155 | MX31_PIN_LCS0__GPI03_23, |
156 | /* CSI */ | ||
157 | IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_GPIO), | ||
158 | MX31_PIN_CSI_D6__CSI_D6, | ||
159 | MX31_PIN_CSI_D7__CSI_D7, | ||
160 | MX31_PIN_CSI_D8__CSI_D8, | ||
161 | MX31_PIN_CSI_D9__CSI_D9, | ||
162 | MX31_PIN_CSI_D10__CSI_D10, | ||
163 | MX31_PIN_CSI_D11__CSI_D11, | ||
164 | MX31_PIN_CSI_D12__CSI_D12, | ||
165 | MX31_PIN_CSI_D13__CSI_D13, | ||
166 | MX31_PIN_CSI_D14__CSI_D14, | ||
167 | MX31_PIN_CSI_D15__CSI_D15, | ||
168 | MX31_PIN_CSI_HSYNC__CSI_HSYNC, | ||
169 | MX31_PIN_CSI_MCLK__CSI_MCLK, | ||
170 | MX31_PIN_CSI_PIXCLK__CSI_PIXCLK, | ||
171 | MX31_PIN_CSI_VSYNC__CSI_VSYNC, | ||
123 | }; | 172 | }; |
124 | 173 | ||
125 | static struct physmap_flash_data pcm037_flash_data = { | 174 | static struct physmap_flash_data pcm037_flash_data = { |
@@ -250,19 +299,43 @@ static struct mxc_nand_platform_data pcm037_nand_board_info = { | |||
250 | .hw_ecc = 1, | 299 | .hw_ecc = 1, |
251 | }; | 300 | }; |
252 | 301 | ||
253 | #ifdef CONFIG_I2C_IMX | ||
254 | static struct imxi2c_platform_data pcm037_i2c_1_data = { | 302 | static struct imxi2c_platform_data pcm037_i2c_1_data = { |
255 | .bitrate = 100000, | 303 | .bitrate = 100000, |
256 | }; | 304 | }; |
257 | 305 | ||
306 | static struct imxi2c_platform_data pcm037_i2c_2_data = { | ||
307 | .bitrate = 20000, | ||
308 | }; | ||
309 | |||
258 | static struct at24_platform_data board_eeprom = { | 310 | static struct at24_platform_data board_eeprom = { |
259 | .byte_len = 4096, | 311 | .byte_len = 4096, |
260 | .page_size = 32, | 312 | .page_size = 32, |
261 | .flags = AT24_FLAG_ADDR16, | 313 | .flags = AT24_FLAG_ADDR16, |
262 | }; | 314 | }; |
263 | 315 | ||
316 | static int pcm037_camera_power(struct device *dev, int on) | ||
317 | { | ||
318 | /* disable or enable the camera in X7 or X8 PCM970 connector */ | ||
319 | gpio_set_value(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), !on); | ||
320 | return 0; | ||
321 | } | ||
322 | |||
323 | static struct i2c_board_info pcm037_i2c_2_devices[] = { | ||
324 | { | ||
325 | I2C_BOARD_INFO("mt9t031", 0x5d), | ||
326 | }, | ||
327 | }; | ||
328 | |||
329 | static struct soc_camera_link iclink = { | ||
330 | .bus_id = 0, /* Must match with the camera ID */ | ||
331 | .power = pcm037_camera_power, | ||
332 | .board_info = &pcm037_i2c_2_devices[0], | ||
333 | .i2c_adapter_id = 2, | ||
334 | .module_name = "mt9t031", | ||
335 | }; | ||
336 | |||
264 | static struct i2c_board_info pcm037_i2c_devices[] = { | 337 | static struct i2c_board_info pcm037_i2c_devices[] = { |
265 | { | 338 | { |
266 | I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ | 339 | I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ |
267 | .platform_data = &board_eeprom, | 340 | .platform_data = &board_eeprom, |
268 | }, { | 341 | }, { |
@@ -270,7 +343,14 @@ static struct i2c_board_info pcm037_i2c_devices[] = { | |||
270 | .type = "pcf8563", | 343 | .type = "pcf8563", |
271 | } | 344 | } |
272 | }; | 345 | }; |
273 | #endif | 346 | |
347 | static struct platform_device pcm037_camera = { | ||
348 | .name = "soc-camera-pdrv", | ||
349 | .id = 0, | ||
350 | .dev = { | ||
351 | .platform_data = &iclink, | ||
352 | }, | ||
353 | }; | ||
274 | 354 | ||
275 | /* Not connected by default */ | 355 | /* Not connected by default */ |
276 | #ifdef PCM970_SDHC_RW_SWITCH | 356 | #ifdef PCM970_SDHC_RW_SWITCH |
@@ -334,9 +414,41 @@ static struct imxmmc_platform_data sdhc_pdata = { | |||
334 | .exit = pcm970_sdhc1_exit, | 414 | .exit = pcm970_sdhc1_exit, |
335 | }; | 415 | }; |
336 | 416 | ||
417 | struct mx3_camera_pdata camera_pdata = { | ||
418 | .dma_dev = &mx3_ipu.dev, | ||
419 | .flags = MX3_CAMERA_DATAWIDTH_8 | MX3_CAMERA_DATAWIDTH_10, | ||
420 | .mclk_10khz = 2000, | ||
421 | }; | ||
422 | |||
423 | static int __init pcm037_camera_alloc_dma(const size_t buf_size) | ||
424 | { | ||
425 | dma_addr_t dma_handle; | ||
426 | void *buf; | ||
427 | int dma; | ||
428 | |||
429 | if (buf_size < 2 * 1024 * 1024) | ||
430 | return -EINVAL; | ||
431 | |||
432 | buf = dma_alloc_coherent(NULL, buf_size, &dma_handle, GFP_KERNEL); | ||
433 | if (!buf) { | ||
434 | pr_err("%s: cannot allocate camera buffer-memory\n", __func__); | ||
435 | return -ENOMEM; | ||
436 | } | ||
437 | |||
438 | memset(buf, 0, buf_size); | ||
439 | |||
440 | dma = dma_declare_coherent_memory(&mx3_camera.dev, | ||
441 | dma_handle, dma_handle, buf_size, | ||
442 | DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); | ||
443 | |||
444 | /* The way we call dma_declare_coherent_memory only a malloc can fail */ | ||
445 | return dma & DMA_MEMORY_MAP ? 0 : -ENOMEM; | ||
446 | } | ||
447 | |||
337 | static struct platform_device *devices[] __initdata = { | 448 | static struct platform_device *devices[] __initdata = { |
338 | &pcm037_flash, | 449 | &pcm037_flash, |
339 | &pcm037_sram_device, | 450 | &pcm037_sram_device, |
451 | &pcm037_camera, | ||
340 | }; | 452 | }; |
341 | 453 | ||
342 | static struct ipu_platform_data mx3_ipu_data = { | 454 | static struct ipu_platform_data mx3_ipu_data = { |
@@ -377,6 +489,22 @@ static const struct fb_videomode fb_modedb[] = { | |||
377 | .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH, | 489 | .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH, |
378 | .vmode = FB_VMODE_NONINTERLACED, | 490 | .vmode = FB_VMODE_NONINTERLACED, |
379 | .flag = 0, | 491 | .flag = 0, |
492 | }, { | ||
493 | /* 240x320 @ 60 Hz */ | ||
494 | .name = "CMEL-OLED", | ||
495 | .refresh = 60, | ||
496 | .xres = 240, | ||
497 | .yres = 320, | ||
498 | .pixclock = 185925, | ||
499 | .left_margin = 9, | ||
500 | .right_margin = 16, | ||
501 | .upper_margin = 7, | ||
502 | .lower_margin = 9, | ||
503 | .hsync_len = 1, | ||
504 | .vsync_len = 1, | ||
505 | .sync = FB_SYNC_OE_ACT_HIGH | FB_SYNC_CLK_INVERT, | ||
506 | .vmode = FB_VMODE_NONINTERLACED, | ||
507 | .flag = 0, | ||
380 | }, | 508 | }, |
381 | }; | 509 | }; |
382 | 510 | ||
@@ -397,6 +525,14 @@ static void __init mxc_board_init(void) | |||
397 | mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins), | 525 | mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins), |
398 | "pcm037"); | 526 | "pcm037"); |
399 | 527 | ||
528 | if (pcm037_variant() == PCM037_EET) | ||
529 | mxc_iomux_setup_multiple_pins(pcm037_uart1_pins, | ||
530 | ARRAY_SIZE(pcm037_uart1_pins), "pcm037_uart1"); | ||
531 | else | ||
532 | mxc_iomux_setup_multiple_pins(pcm037_uart1_handshake_pins, | ||
533 | ARRAY_SIZE(pcm037_uart1_handshake_pins), | ||
534 | "pcm037_uart1"); | ||
535 | |||
400 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 536 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
401 | 537 | ||
402 | mxc_register_device(&mxc_uart_device0, &uart_pdata); | 538 | mxc_register_device(&mxc_uart_device0, &uart_pdata); |
@@ -415,18 +551,30 @@ static void __init mxc_board_init(void) | |||
415 | } | 551 | } |
416 | 552 | ||
417 | 553 | ||
418 | #ifdef CONFIG_I2C_IMX | 554 | /* I2C adapters and devices */ |
419 | i2c_register_board_info(1, pcm037_i2c_devices, | 555 | i2c_register_board_info(1, pcm037_i2c_devices, |
420 | ARRAY_SIZE(pcm037_i2c_devices)); | 556 | ARRAY_SIZE(pcm037_i2c_devices)); |
421 | 557 | ||
422 | mxc_register_device(&mxc_i2c_device1, &pcm037_i2c_1_data); | 558 | mxc_register_device(&mxc_i2c_device1, &pcm037_i2c_1_data); |
423 | #endif | 559 | mxc_register_device(&mxc_i2c_device2, &pcm037_i2c_2_data); |
560 | |||
424 | mxc_register_device(&mxc_nand_device, &pcm037_nand_board_info); | 561 | mxc_register_device(&mxc_nand_device, &pcm037_nand_board_info); |
425 | mxc_register_device(&mxcsdhc_device0, &sdhc_pdata); | 562 | mxc_register_device(&mxcsdhc_device0, &sdhc_pdata); |
426 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); | 563 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); |
427 | mxc_register_device(&mx3_fb, &mx3fb_pdata); | 564 | mxc_register_device(&mx3_fb, &mx3fb_pdata); |
428 | if (!gpio_usbotg_hs_activate()) | 565 | if (!gpio_usbotg_hs_activate()) |
429 | mxc_register_device(&mxc_otg_udc_device, &usb_pdata); | 566 | mxc_register_device(&mxc_otg_udc_device, &usb_pdata); |
567 | |||
568 | /* CSI */ | ||
569 | /* Camera power: default - off */ | ||
570 | ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power"); | ||
571 | if (!ret) | ||
572 | gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1); | ||
573 | else | ||
574 | iclink.power = NULL; | ||
575 | |||
576 | if (!pcm037_camera_alloc_dma(4 * 1024 * 1024)) | ||
577 | mxc_register_device(&mx3_camera, &camera_pdata); | ||
430 | } | 578 | } |
431 | 579 | ||
432 | static void __init pcm037_timer_init(void) | 580 | static void __init pcm037_timer_init(void) |
@@ -448,4 +596,3 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037") | |||
448 | .init_machine = mxc_board_init, | 596 | .init_machine = mxc_board_init, |
449 | .timer = &pcm037_timer, | 597 | .timer = &pcm037_timer, |
450 | MACHINE_END | 598 | MACHINE_END |
451 | |||
diff --git a/arch/arm/mach-mx3/pcm037.h b/arch/arm/mach-mx3/pcm037.h new file mode 100644 index 000000000000..d6929721a5fd --- /dev/null +++ b/arch/arm/mach-mx3/pcm037.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef __PCM037_H__ | ||
2 | #define __PCM037_H__ | ||
3 | |||
4 | enum pcm037_board_variant { | ||
5 | PCM037_PCM970, | ||
6 | PCM037_EET, | ||
7 | }; | ||
8 | |||
9 | extern enum pcm037_board_variant pcm037_variant(void); | ||
10 | |||
11 | #endif | ||
diff --git a/arch/arm/mach-mx3/pcm037_eet.c b/arch/arm/mach-mx3/pcm037_eet.c new file mode 100644 index 000000000000..8d386000fc40 --- /dev/null +++ b/arch/arm/mach-mx3/pcm037_eet.c | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | #include <linux/gpio.h> | ||
10 | #include <linux/gpio_keys.h> | ||
11 | #include <linux/input.h> | ||
12 | #include <linux/platform_device.h> | ||
13 | #include <linux/spi/spi.h> | ||
14 | |||
15 | #include <mach/common.h> | ||
16 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
17 | #include <mach/spi.h> | ||
18 | #endif | ||
19 | #include <mach/iomux-mx3.h> | ||
20 | |||
21 | #include <asm/mach-types.h> | ||
22 | |||
23 | #include "pcm037.h" | ||
24 | #include "devices.h" | ||
25 | |||
26 | static unsigned int pcm037_eet_pins[] = { | ||
27 | /* Reserve and hardwire GPIO 57 high - S6E63D6 chipselect */ | ||
28 | IOMUX_MODE(MX31_PIN_KEY_COL7, IOMUX_CONFIG_GPIO), | ||
29 | /* GPIO keys */ | ||
30 | IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO), /* 0 */ | ||
31 | IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), /* 1 */ | ||
32 | IOMUX_MODE(MX31_PIN_GPIO1_2, IOMUX_CONFIG_GPIO), /* 2 */ | ||
33 | IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO), /* 3 */ | ||
34 | IOMUX_MODE(MX31_PIN_SVEN0, IOMUX_CONFIG_GPIO), /* 32 */ | ||
35 | IOMUX_MODE(MX31_PIN_STX0, IOMUX_CONFIG_GPIO), /* 33 */ | ||
36 | IOMUX_MODE(MX31_PIN_SRX0, IOMUX_CONFIG_GPIO), /* 34 */ | ||
37 | IOMUX_MODE(MX31_PIN_SIMPD0, IOMUX_CONFIG_GPIO), /* 35 */ | ||
38 | IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_GPIO), /* 38 */ | ||
39 | IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_GPIO), /* 39 */ | ||
40 | IOMUX_MODE(MX31_PIN_KEY_ROW4, IOMUX_CONFIG_GPIO), /* 50 */ | ||
41 | IOMUX_MODE(MX31_PIN_KEY_ROW5, IOMUX_CONFIG_GPIO), /* 51 */ | ||
42 | IOMUX_MODE(MX31_PIN_KEY_ROW6, IOMUX_CONFIG_GPIO), /* 52 */ | ||
43 | IOMUX_MODE(MX31_PIN_KEY_ROW7, IOMUX_CONFIG_GPIO), /* 53 */ | ||
44 | |||
45 | /* LEDs */ | ||
46 | IOMUX_MODE(MX31_PIN_DTR_DTE1, IOMUX_CONFIG_GPIO), /* 44 */ | ||
47 | IOMUX_MODE(MX31_PIN_DSR_DTE1, IOMUX_CONFIG_GPIO), /* 45 */ | ||
48 | IOMUX_MODE(MX31_PIN_KEY_COL5, IOMUX_CONFIG_GPIO), /* 55 */ | ||
49 | IOMUX_MODE(MX31_PIN_KEY_COL6, IOMUX_CONFIG_GPIO), /* 56 */ | ||
50 | }; | ||
51 | |||
52 | /* SPI */ | ||
53 | static struct spi_board_info pcm037_spi_dev[] = { | ||
54 | { | ||
55 | .modalias = "dac124s085", | ||
56 | .max_speed_hz = 400000, | ||
57 | .bus_num = 0, | ||
58 | .chip_select = 0, /* Index in pcm037_spi1_cs[] */ | ||
59 | .mode = SPI_CPHA, | ||
60 | }, | ||
61 | }; | ||
62 | |||
63 | /* Platform Data for MXC CSPI */ | ||
64 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
65 | static int pcm037_spi1_cs[] = {MXC_SPI_CS(1), IOMUX_TO_GPIO(MX31_PIN_KEY_COL7)}; | ||
66 | |||
67 | struct spi_imx_master pcm037_spi1_master = { | ||
68 | .chipselect = pcm037_spi1_cs, | ||
69 | .num_chipselect = ARRAY_SIZE(pcm037_spi1_cs), | ||
70 | }; | ||
71 | #endif | ||
72 | |||
73 | /* GPIO-keys input device */ | ||
74 | static struct gpio_keys_button pcm037_gpio_keys[] = { | ||
75 | { | ||
76 | .type = EV_KEY, | ||
77 | .code = KEY_L, | ||
78 | .gpio = 0, | ||
79 | .desc = "Wheel Manual", | ||
80 | .wakeup = 0, | ||
81 | }, { | ||
82 | .type = EV_KEY, | ||
83 | .code = KEY_A, | ||
84 | .gpio = 1, | ||
85 | .desc = "Wheel AF", | ||
86 | .wakeup = 0, | ||
87 | }, { | ||
88 | .type = EV_KEY, | ||
89 | .code = KEY_V, | ||
90 | .gpio = 2, | ||
91 | .desc = "Wheel View", | ||
92 | .wakeup = 0, | ||
93 | }, { | ||
94 | .type = EV_KEY, | ||
95 | .code = KEY_M, | ||
96 | .gpio = 3, | ||
97 | .desc = "Wheel Menu", | ||
98 | .wakeup = 0, | ||
99 | }, { | ||
100 | .type = EV_KEY, | ||
101 | .code = KEY_UP, | ||
102 | .gpio = 32, | ||
103 | .desc = "Nav Pad Up", | ||
104 | .wakeup = 0, | ||
105 | }, { | ||
106 | .type = EV_KEY, | ||
107 | .code = KEY_RIGHT, | ||
108 | .gpio = 33, | ||
109 | .desc = "Nav Pad Right", | ||
110 | .wakeup = 0, | ||
111 | }, { | ||
112 | .type = EV_KEY, | ||
113 | .code = KEY_DOWN, | ||
114 | .gpio = 34, | ||
115 | .desc = "Nav Pad Down", | ||
116 | .wakeup = 0, | ||
117 | }, { | ||
118 | .type = EV_KEY, | ||
119 | .code = KEY_LEFT, | ||
120 | .gpio = 35, | ||
121 | .desc = "Nav Pad Left", | ||
122 | .wakeup = 0, | ||
123 | }, { | ||
124 | .type = EV_KEY, | ||
125 | .code = KEY_ENTER, | ||
126 | .gpio = 38, | ||
127 | .desc = "Nav Pad Ok", | ||
128 | .wakeup = 0, | ||
129 | }, { | ||
130 | .type = EV_KEY, | ||
131 | .code = KEY_O, | ||
132 | .gpio = 39, | ||
133 | .desc = "Wheel Off", | ||
134 | .wakeup = 0, | ||
135 | }, { | ||
136 | .type = EV_KEY, | ||
137 | .code = BTN_FORWARD, | ||
138 | .gpio = 50, | ||
139 | .desc = "Focus Forward", | ||
140 | .wakeup = 0, | ||
141 | }, { | ||
142 | .type = EV_KEY, | ||
143 | .code = BTN_BACK, | ||
144 | .gpio = 51, | ||
145 | .desc = "Focus Backward", | ||
146 | .wakeup = 0, | ||
147 | }, { | ||
148 | .type = EV_KEY, | ||
149 | .code = BTN_MIDDLE, | ||
150 | .gpio = 52, | ||
151 | .desc = "Release Half", | ||
152 | .wakeup = 0, | ||
153 | }, { | ||
154 | .type = EV_KEY, | ||
155 | .code = BTN_EXTRA, | ||
156 | .gpio = 53, | ||
157 | .desc = "Release Full", | ||
158 | .wakeup = 0, | ||
159 | }, | ||
160 | }; | ||
161 | |||
162 | static struct gpio_keys_platform_data pcm037_gpio_keys_platform_data = { | ||
163 | .buttons = pcm037_gpio_keys, | ||
164 | .nbuttons = ARRAY_SIZE(pcm037_gpio_keys), | ||
165 | .rep = 0, /* No auto-repeat */ | ||
166 | }; | ||
167 | |||
168 | static struct platform_device pcm037_gpio_keys_device = { | ||
169 | .name = "gpio-keys", | ||
170 | .id = -1, | ||
171 | .dev = { | ||
172 | .platform_data = &pcm037_gpio_keys_platform_data, | ||
173 | }, | ||
174 | }; | ||
175 | |||
176 | static int eet_init_devices(void) | ||
177 | { | ||
178 | if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET) | ||
179 | return 0; | ||
180 | |||
181 | mxc_iomux_setup_multiple_pins(pcm037_eet_pins, | ||
182 | ARRAY_SIZE(pcm037_eet_pins), "pcm037_eet"); | ||
183 | |||
184 | /* SPI */ | ||
185 | spi_register_board_info(pcm037_spi_dev, ARRAY_SIZE(pcm037_spi_dev)); | ||
186 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
187 | mxc_register_device(&mxc_spi_device0, &pcm037_spi1_master); | ||
188 | #endif | ||
189 | |||
190 | platform_device_register(&pcm037_gpio_keys_device); | ||
191 | |||
192 | return 0; | ||
193 | } | ||
194 | |||
195 | late_initcall(eet_init_devices); | ||
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index e70fc7c66bbb..ed2a48a9ce74 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <mach/hwa742.h> | 36 | #include <mach/hwa742.h> |
37 | #include <mach/lcd_mipid.h> | 37 | #include <mach/lcd_mipid.h> |
38 | #include <mach/mmc.h> | 38 | #include <mach/mmc.h> |
39 | #include <mach/usb.h> | ||
40 | #include <mach/clock.h> | 39 | #include <mach/clock.h> |
41 | 40 | ||
42 | #define ADS7846_PENDOWN_GPIO 15 | 41 | #define ADS7846_PENDOWN_GPIO 15 |
@@ -205,9 +204,11 @@ static int nokia770_mmc_get_cover_state(struct device *dev, int slot) | |||
205 | static struct omap_mmc_platform_data nokia770_mmc2_data = { | 204 | static struct omap_mmc_platform_data nokia770_mmc2_data = { |
206 | .nr_slots = 1, | 205 | .nr_slots = 1, |
207 | .dma_mask = 0xffffffff, | 206 | .dma_mask = 0xffffffff, |
207 | .max_freq = 12000000, | ||
208 | .slots[0] = { | 208 | .slots[0] = { |
209 | .set_power = nokia770_mmc_set_power, | 209 | .set_power = nokia770_mmc_set_power, |
210 | .get_cover_state = nokia770_mmc_get_cover_state, | 210 | .get_cover_state = nokia770_mmc_get_cover_state, |
211 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | ||
211 | .name = "mmcblk", | 212 | .name = "mmcblk", |
212 | }, | 213 | }, |
213 | }; | 214 | }; |
diff --git a/arch/arm/mach-omap1/mailbox.c b/arch/arm/mach-omap1/mailbox.c index 0af4d6c85b47..6810b4aeb02c 100644 --- a/arch/arm/mach-omap1/mailbox.c +++ b/arch/arm/mach-omap1/mailbox.c | |||
@@ -203,5 +203,5 @@ module_exit(omap1_mbox_exit); | |||
203 | 203 | ||
204 | MODULE_LICENSE("GPL v2"); | 204 | MODULE_LICENSE("GPL v2"); |
205 | MODULE_DESCRIPTION("omap mailbox: omap1 architecture specific functions"); | 205 | MODULE_DESCRIPTION("omap mailbox: omap1 architecture specific functions"); |
206 | MODULE_AUTHOR("Hiroshi DOYU" <Hiroshi.DOYU@nokia.com>); | 206 | MODULE_AUTHOR("Hiroshi DOYU <Hiroshi.DOYU@nokia.com>"); |
207 | MODULE_ALIAS("platform:omap1-mailbox"); | 207 | MODULE_ALIAS("platform:omap1-mailbox"); |
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index a2d7814896be..505d98cfe508 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <mach/irqs.h> | 20 | #include <mach/irqs.h> |
21 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
22 | #include <mach/irqs.h> | ||
23 | #include <mach/mux.h> | 22 | #include <mach/mux.h> |
24 | #include <mach/cpu.h> | 23 | #include <mach/cpu.h> |
25 | #include <mach/mcbsp.h> | 24 | #include <mach/mcbsp.h> |
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 9c3fdcdf76c3..8ec2a132904d 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -141,7 +141,7 @@ static inline void board_smc91x_init(void) | |||
141 | 141 | ||
142 | static void __init omap_2430sdp_init_irq(void) | 142 | static void __init omap_2430sdp_init_irq(void) |
143 | { | 143 | { |
144 | omap2_init_common_hw(NULL); | 144 | omap2_init_common_hw(NULL, NULL); |
145 | omap_init_irq(); | 145 | omap_init_irq(); |
146 | omap_gpio_init(); | 146 | omap_gpio_init(); |
147 | } | 147 | } |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 496a90e4ea7a..ac262cd74503 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -169,7 +169,7 @@ static struct platform_device *sdp3430_devices[] __initdata = { | |||
169 | 169 | ||
170 | static void __init omap_3430sdp_init_irq(void) | 170 | static void __init omap_3430sdp_init_irq(void) |
171 | { | 171 | { |
172 | omap2_init_common_hw(hyb18m512160af6_sdrc_params); | 172 | omap2_init_common_hw(hyb18m512160af6_sdrc_params, NULL); |
173 | omap_init_irq(); | 173 | omap_init_irq(); |
174 | omap_gpio_init(); | 174 | omap_gpio_init(); |
175 | } | 175 | } |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 57e477bd89c6..b0c7402248f7 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -59,7 +59,7 @@ static void __init gic_init_irq(void) | |||
59 | 59 | ||
60 | static void __init omap_4430sdp_init_irq(void) | 60 | static void __init omap_4430sdp_init_irq(void) |
61 | { | 61 | { |
62 | omap2_init_common_hw(NULL); | 62 | omap2_init_common_hw(NULL, NULL); |
63 | #ifdef CONFIG_OMAP_32K_TIMER | 63 | #ifdef CONFIG_OMAP_32K_TIMER |
64 | omap2_gp_clockevent_set_gptimer(1); | 64 | omap2_gp_clockevent_set_gptimer(1); |
65 | #endif | 65 | #endif |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 06dfba888b0c..dcfc20d03894 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -250,7 +250,7 @@ out: | |||
250 | 250 | ||
251 | static void __init omap_apollon_init_irq(void) | 251 | static void __init omap_apollon_init_irq(void) |
252 | { | 252 | { |
253 | omap2_init_common_hw(NULL); | 253 | omap2_init_common_hw(NULL, NULL); |
254 | omap_init_irq(); | 254 | omap_init_irq(); |
255 | omap_gpio_init(); | 255 | omap_gpio_init(); |
256 | apollon_init_smc91x(); | 256 | apollon_init_smc91x(); |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 3492162a65c3..fd00aa03690c 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | static void __init omap_generic_init_irq(void) | 34 | static void __init omap_generic_init_irq(void) |
35 | { | 35 | { |
36 | omap2_init_common_hw(NULL); | 36 | omap2_init_common_hw(NULL, NULL); |
37 | omap_init_irq(); | 37 | omap_init_irq(); |
38 | } | 38 | } |
39 | 39 | ||
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index e7d017cdc438..7b1d61d5bb2c 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -270,7 +270,7 @@ static void __init h4_init_flash(void) | |||
270 | 270 | ||
271 | static void __init omap_h4_init_irq(void) | 271 | static void __init omap_h4_init_irq(void) |
272 | { | 272 | { |
273 | omap2_init_common_hw(NULL); | 273 | omap2_init_common_hw(NULL, NULL); |
274 | omap_init_irq(); | 274 | omap_init_irq(); |
275 | omap_gpio_init(); | 275 | omap_gpio_init(); |
276 | h4_init_flash(); | 276 | h4_init_flash(); |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index d8bc0a7dcb8d..ea383f88cb1b 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -270,7 +270,7 @@ static inline void __init ldp_init_smsc911x(void) | |||
270 | 270 | ||
271 | static void __init omap_ldp_init_irq(void) | 271 | static void __init omap_ldp_init_irq(void) |
272 | { | 272 | { |
273 | omap2_init_common_hw(NULL); | 273 | omap2_init_common_hw(NULL, NULL); |
274 | omap_init_irq(); | 274 | omap_init_irq(); |
275 | omap_gpio_init(); | 275 | omap_gpio_init(); |
276 | ldp_init_smsc911x(); | 276 | ldp_init_smsc911x(); |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 991ac9c38032..e00ba128cece 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -282,7 +282,8 @@ static int __init omap3_beagle_i2c_init(void) | |||
282 | 282 | ||
283 | static void __init omap3_beagle_init_irq(void) | 283 | static void __init omap3_beagle_init_irq(void) |
284 | { | 284 | { |
285 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params); | 285 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params, |
286 | mt46h32m32lf6_sdrc_params); | ||
286 | omap_init_irq(); | 287 | omap_init_irq(); |
287 | #ifdef CONFIG_OMAP_32K_TIMER | 288 | #ifdef CONFIG_OMAP_32K_TIMER |
288 | omap2_gp_clockevent_set_gptimer(12); | 289 | omap2_gp_clockevent_set_gptimer(12); |
@@ -408,6 +409,10 @@ static void __init omap3_beagle_init(void) | |||
408 | 409 | ||
409 | usb_musb_init(); | 410 | usb_musb_init(); |
410 | omap3beagle_flash_init(); | 411 | omap3beagle_flash_init(); |
412 | |||
413 | /* Ensure SDRC pins are mux'd for self-refresh */ | ||
414 | omap_cfg_reg(H16_34XX_SDRC_CKE0); | ||
415 | omap_cfg_reg(H17_34XX_SDRC_CKE1); | ||
411 | } | 416 | } |
412 | 417 | ||
413 | static void __init omap3_beagle_map_io(void) | 418 | static void __init omap3_beagle_map_io(void) |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index d3cc145814d0..c4b144647dc5 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/spi/spi.h> | 25 | #include <linux/spi/spi.h> |
26 | #include <linux/spi/ads7846.h> | 26 | #include <linux/spi/ads7846.h> |
27 | #include <linux/i2c/twl4030.h> | 27 | #include <linux/i2c/twl4030.h> |
28 | #include <linux/usb/otg.h> | ||
28 | 29 | ||
29 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
30 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
@@ -279,7 +280,7 @@ struct spi_board_info omap3evm_spi_board_info[] = { | |||
279 | 280 | ||
280 | static void __init omap3_evm_init_irq(void) | 281 | static void __init omap3_evm_init_irq(void) |
281 | { | 282 | { |
282 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params); | 283 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params, NULL); |
283 | omap_init_irq(); | 284 | omap_init_irq(); |
284 | omap_gpio_init(); | 285 | omap_gpio_init(); |
285 | omap3evm_init_smc911x(); | 286 | omap3evm_init_smc911x(); |
@@ -307,6 +308,10 @@ static void __init omap3_evm_init(void) | |||
307 | ARRAY_SIZE(omap3evm_spi_board_info)); | 308 | ARRAY_SIZE(omap3evm_spi_board_info)); |
308 | 309 | ||
309 | omap_serial_init(); | 310 | omap_serial_init(); |
311 | #ifdef CONFIG_NOP_USB_XCEIV | ||
312 | /* OMAP3EVM uses ISP1504 phy and so register nop transceiver */ | ||
313 | usb_nop_xceiv_register(); | ||
314 | #endif | ||
310 | usb_musb_init(); | 315 | usb_musb_init(); |
311 | ads7846_dev_init(); | 316 | ads7846_dev_init(); |
312 | } | 317 | } |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index e32aa23ce962..864ee3d021f7 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <mach/mcspi.h> | 40 | #include <mach/mcspi.h> |
41 | #include <mach/usb.h> | 41 | #include <mach/usb.h> |
42 | #include <mach/keypad.h> | 42 | #include <mach/keypad.h> |
43 | #include <mach/mux.h> | ||
43 | 44 | ||
44 | #include "sdram-micron-mt46h32m32lf-6.h" | 45 | #include "sdram-micron-mt46h32m32lf-6.h" |
45 | #include "mmc-twl4030.h" | 46 | #include "mmc-twl4030.h" |
@@ -310,7 +311,8 @@ static int __init omap3pandora_i2c_init(void) | |||
310 | 311 | ||
311 | static void __init omap3pandora_init_irq(void) | 312 | static void __init omap3pandora_init_irq(void) |
312 | { | 313 | { |
313 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params); | 314 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params, |
315 | mt46h32m32lf6_sdrc_params); | ||
314 | omap_init_irq(); | 316 | omap_init_irq(); |
315 | omap_gpio_init(); | 317 | omap_gpio_init(); |
316 | } | 318 | } |
@@ -397,6 +399,10 @@ static void __init omap3pandora_init(void) | |||
397 | omap3pandora_ads7846_init(); | 399 | omap3pandora_ads7846_init(); |
398 | pandora_keys_gpio_init(); | 400 | pandora_keys_gpio_init(); |
399 | usb_musb_init(); | 401 | usb_musb_init(); |
402 | |||
403 | /* Ensure SDRC pins are mux'd for self-refresh */ | ||
404 | omap_cfg_reg(H16_34XX_SDRC_CKE0); | ||
405 | omap_cfg_reg(H17_34XX_SDRC_CKE1); | ||
400 | } | 406 | } |
401 | 407 | ||
402 | static void __init omap3pandora_map_io(void) | 408 | static void __init omap3pandora_map_io(void) |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index dff5528fbfb5..6bce23004aa4 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <mach/gpmc.h> | 44 | #include <mach/gpmc.h> |
45 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
46 | #include <mach/nand.h> | 46 | #include <mach/nand.h> |
47 | #include <mach/mux.h> | ||
47 | #include <mach/usb.h> | 48 | #include <mach/usb.h> |
48 | 49 | ||
49 | #include "sdram-micron-mt46h32m32lf-6.h" | 50 | #include "sdram-micron-mt46h32m32lf-6.h" |
@@ -51,6 +52,7 @@ | |||
51 | 52 | ||
52 | #define OVERO_GPIO_BT_XGATE 15 | 53 | #define OVERO_GPIO_BT_XGATE 15 |
53 | #define OVERO_GPIO_W2W_NRESET 16 | 54 | #define OVERO_GPIO_W2W_NRESET 16 |
55 | #define OVERO_GPIO_PENDOWN 114 | ||
54 | #define OVERO_GPIO_BT_NRESET 164 | 56 | #define OVERO_GPIO_BT_NRESET 164 |
55 | #define OVERO_GPIO_USBH_CPEN 168 | 57 | #define OVERO_GPIO_USBH_CPEN 168 |
56 | #define OVERO_GPIO_USBH_NRESET 183 | 58 | #define OVERO_GPIO_USBH_NRESET 183 |
@@ -146,7 +148,7 @@ static struct platform_device overo_smsc911x_device = { | |||
146 | .name = "smsc911x", | 148 | .name = "smsc911x", |
147 | .id = -1, | 149 | .id = -1, |
148 | .num_resources = ARRAY_SIZE(overo_smsc911x_resources), | 150 | .num_resources = ARRAY_SIZE(overo_smsc911x_resources), |
149 | .resource = &overo_smsc911x_resources, | 151 | .resource = overo_smsc911x_resources, |
150 | .dev = { | 152 | .dev = { |
151 | .platform_data = &overo_smsc911x_config, | 153 | .platform_data = &overo_smsc911x_config, |
152 | }, | 154 | }, |
@@ -360,7 +362,8 @@ static int __init overo_i2c_init(void) | |||
360 | 362 | ||
361 | static void __init overo_init_irq(void) | 363 | static void __init overo_init_irq(void) |
362 | { | 364 | { |
363 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params); | 365 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params, |
366 | mt46h32m32lf6_sdrc_params); | ||
364 | omap_init_irq(); | 367 | omap_init_irq(); |
365 | omap_gpio_init(); | 368 | omap_gpio_init(); |
366 | } | 369 | } |
@@ -395,6 +398,10 @@ static void __init overo_init(void) | |||
395 | overo_ads7846_init(); | 398 | overo_ads7846_init(); |
396 | overo_init_smsc911x(); | 399 | overo_init_smsc911x(); |
397 | 400 | ||
401 | /* Ensure SDRC pins are mux'd for self-refresh */ | ||
402 | omap_cfg_reg(H16_34XX_SDRC_CKE0); | ||
403 | omap_cfg_reg(H17_34XX_SDRC_CKE1); | ||
404 | |||
398 | if ((gpio_request(OVERO_GPIO_W2W_NRESET, | 405 | if ((gpio_request(OVERO_GPIO_W2W_NRESET, |
399 | "OVERO_GPIO_W2W_NRESET") == 0) && | 406 | "OVERO_GPIO_W2W_NRESET") == 0) && |
400 | (gpio_direction_output(OVERO_GPIO_W2W_NRESET, 1) == 0)) { | 407 | (gpio_direction_output(OVERO_GPIO_W2W_NRESET, 1) == 0)) { |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index da93b86234ed..56d931a425f7 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -278,6 +278,10 @@ static struct twl4030_gpio_platform_data rx51_gpio_data = { | |||
278 | .setup = rx51_twlgpio_setup, | 278 | .setup = rx51_twlgpio_setup, |
279 | }; | 279 | }; |
280 | 280 | ||
281 | static struct twl4030_usb_data rx51_usb_data = { | ||
282 | .usb_mode = T2_USB_MODE_ULPI, | ||
283 | }; | ||
284 | |||
281 | static struct twl4030_platform_data rx51_twldata = { | 285 | static struct twl4030_platform_data rx51_twldata = { |
282 | .irq_base = TWL4030_IRQ_BASE, | 286 | .irq_base = TWL4030_IRQ_BASE, |
283 | .irq_end = TWL4030_IRQ_END, | 287 | .irq_end = TWL4030_IRQ_END, |
@@ -286,6 +290,7 @@ static struct twl4030_platform_data rx51_twldata = { | |||
286 | .gpio = &rx51_gpio_data, | 290 | .gpio = &rx51_gpio_data, |
287 | .keypad = &rx51_kp_data, | 291 | .keypad = &rx51_kp_data, |
288 | .madc = &rx51_madc_data, | 292 | .madc = &rx51_madc_data, |
293 | .usb = &rx51_usb_data, | ||
289 | 294 | ||
290 | .vaux1 = &rx51_vaux1, | 295 | .vaux1 = &rx51_vaux1, |
291 | .vaux2 = &rx51_vaux2, | 296 | .vaux2 = &rx51_vaux2, |
@@ -362,6 +367,7 @@ static struct omap_onenand_platform_data board_onenand_data = { | |||
362 | .gpio_irq = 65, | 367 | .gpio_irq = 65, |
363 | .parts = onenand_partitions, | 368 | .parts = onenand_partitions, |
364 | .nr_parts = ARRAY_SIZE(onenand_partitions), | 369 | .nr_parts = ARRAY_SIZE(onenand_partitions), |
370 | .flags = ONENAND_SYNC_READWRITE, | ||
365 | }; | 371 | }; |
366 | 372 | ||
367 | static void __init board_onenand_init(void) | 373 | static void __init board_onenand_init(void) |
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index 374ff63c3eb2..1c9e07fe8266 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c | |||
@@ -61,7 +61,7 @@ static struct omap_board_config_kernel rx51_config[] = { | |||
61 | 61 | ||
62 | static void __init rx51_init_irq(void) | 62 | static void __init rx51_init_irq(void) |
63 | { | 63 | { |
64 | omap2_init_common_hw(NULL); | 64 | omap2_init_common_hw(NULL, NULL); |
65 | omap_init_irq(); | 65 | omap_init_irq(); |
66 | omap_gpio_init(); | 66 | omap_gpio_init(); |
67 | } | 67 | } |
@@ -75,6 +75,10 @@ static void __init rx51_init(void) | |||
75 | omap_serial_init(); | 75 | omap_serial_init(); |
76 | usb_musb_init(); | 76 | usb_musb_init(); |
77 | rx51_peripherals_init(); | 77 | rx51_peripherals_init(); |
78 | |||
79 | /* Ensure SDRC pins are mux'd for self-refresh */ | ||
80 | omap_cfg_reg(H16_34XX_SDRC_CKE0); | ||
81 | omap_cfg_reg(H17_34XX_SDRC_CKE1); | ||
78 | } | 82 | } |
79 | 83 | ||
80 | static void __init rx51_map_io(void) | 84 | static void __init rx51_map_io(void) |
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c index bcc0f7632dea..427b7b8b1237 100644 --- a/arch/arm/mach-omap2/board-zoom2.c +++ b/arch/arm/mach-omap2/board-zoom2.c | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | static void __init omap_zoom2_init_irq(void) | 26 | static void __init omap_zoom2_init_irq(void) |
27 | { | 27 | { |
28 | omap2_init_common_hw(NULL); | 28 | omap2_init_common_hw(NULL, NULL); |
29 | omap_init_irq(); | 29 | omap_init_irq(); |
30 | omap_gpio_init(); | 30 | omap_gpio_init(); |
31 | } | 31 | } |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index ba528f85749c..456e2ad5f621 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <mach/clock.h> | 27 | #include <mach/clock.h> |
28 | #include <mach/clockdomain.h> | 28 | #include <mach/clockdomain.h> |
29 | #include <mach/cpu.h> | 29 | #include <mach/cpu.h> |
30 | #include <mach/prcm.h> | ||
30 | #include <asm/div64.h> | 31 | #include <asm/div64.h> |
31 | 32 | ||
32 | #include <mach/sdrc.h> | 33 | #include <mach/sdrc.h> |
@@ -38,8 +39,6 @@ | |||
38 | #include "cm-regbits-24xx.h" | 39 | #include "cm-regbits-24xx.h" |
39 | #include "cm-regbits-34xx.h" | 40 | #include "cm-regbits-34xx.h" |
40 | 41 | ||
41 | #define MAX_CLOCK_ENABLE_WAIT 100000 | ||
42 | |||
43 | /* DPLL rate rounding: minimum DPLL multiplier, divider values */ | 42 | /* DPLL rate rounding: minimum DPLL multiplier, divider values */ |
44 | #define DPLL_MIN_MULTIPLIER 1 | 43 | #define DPLL_MIN_MULTIPLIER 1 |
45 | #define DPLL_MIN_DIVIDER 1 | 44 | #define DPLL_MIN_DIVIDER 1 |
@@ -274,83 +273,97 @@ unsigned long omap2_fixed_divisor_recalc(struct clk *clk) | |||
274 | } | 273 | } |
275 | 274 | ||
276 | /** | 275 | /** |
277 | * omap2_wait_clock_ready - wait for clock to enable | 276 | * omap2_clk_dflt_find_companion - find companion clock to @clk |
278 | * @reg: physical address of clock IDLEST register | 277 | * @clk: struct clk * to find the companion clock of |
279 | * @mask: value to mask against to determine if the clock is active | 278 | * @other_reg: void __iomem ** to return the companion clock CM_*CLKEN va in |
280 | * @name: name of the clock (for printk) | 279 | * @other_bit: u8 ** to return the companion clock bit shift in |
280 | * | ||
281 | * Note: We don't need special code here for INVERT_ENABLE for the | ||
282 | * time being since INVERT_ENABLE only applies to clocks enabled by | ||
283 | * CM_CLKEN_PLL | ||
281 | * | 284 | * |
282 | * Returns 1 if the clock enabled in time, or 0 if it failed to enable | 285 | * Convert CM_ICLKEN* <-> CM_FCLKEN*. This conversion assumes it's |
283 | * in roughly MAX_CLOCK_ENABLE_WAIT microseconds. | 286 | * just a matter of XORing the bits. |
287 | * | ||
288 | * Some clocks don't have companion clocks. For example, modules with | ||
289 | * only an interface clock (such as MAILBOXES) don't have a companion | ||
290 | * clock. Right now, this code relies on the hardware exporting a bit | ||
291 | * in the correct companion register that indicates that the | ||
292 | * nonexistent 'companion clock' is active. Future patches will | ||
293 | * associate this type of code with per-module data structures to | ||
294 | * avoid this issue, and remove the casts. No return value. | ||
284 | */ | 295 | */ |
285 | int omap2_wait_clock_ready(void __iomem *reg, u32 mask, const char *name) | 296 | void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg, |
297 | u8 *other_bit) | ||
286 | { | 298 | { |
287 | int i = 0; | 299 | u32 r; |
288 | int ena = 0; | ||
289 | 300 | ||
290 | /* | 301 | /* |
291 | * 24xx uses 0 to indicate not ready, and 1 to indicate ready. | 302 | * Convert CM_ICLKEN* <-> CM_FCLKEN*. This conversion assumes |
292 | * 34xx reverses this, just to keep us on our toes | 303 | * it's just a matter of XORing the bits. |
293 | */ | 304 | */ |
294 | if (cpu_mask & (RATE_IN_242X | RATE_IN_243X)) | 305 | r = ((__force u32)clk->enable_reg ^ (CM_FCLKEN ^ CM_ICLKEN)); |
295 | ena = mask; | ||
296 | else if (cpu_mask & RATE_IN_343X) | ||
297 | ena = 0; | ||
298 | |||
299 | /* Wait for lock */ | ||
300 | while (((__raw_readl(reg) & mask) != ena) && | ||
301 | (i++ < MAX_CLOCK_ENABLE_WAIT)) { | ||
302 | udelay(1); | ||
303 | } | ||
304 | |||
305 | if (i < MAX_CLOCK_ENABLE_WAIT) | ||
306 | pr_debug("Clock %s stable after %d loops\n", name, i); | ||
307 | else | ||
308 | printk(KERN_ERR "Clock %s didn't enable in %d tries\n", | ||
309 | name, MAX_CLOCK_ENABLE_WAIT); | ||
310 | |||
311 | |||
312 | return (i < MAX_CLOCK_ENABLE_WAIT) ? 1 : 0; | ||
313 | }; | ||
314 | 306 | ||
307 | *other_reg = (__force void __iomem *)r; | ||
308 | *other_bit = clk->enable_bit; | ||
309 | } | ||
315 | 310 | ||
316 | /* | 311 | /** |
317 | * Note: We don't need special code here for INVERT_ENABLE | 312 | * omap2_clk_dflt_find_idlest - find CM_IDLEST reg va, bit shift for @clk |
318 | * for the time being since INVERT_ENABLE only applies to clocks enabled by | 313 | * @clk: struct clk * to find IDLEST info for |
319 | * CM_CLKEN_PLL | 314 | * @idlest_reg: void __iomem ** to return the CM_IDLEST va in |
315 | * @idlest_bit: u8 ** to return the CM_IDLEST bit shift in | ||
316 | * | ||
317 | * Return the CM_IDLEST register address and bit shift corresponding | ||
318 | * to the module that "owns" this clock. This default code assumes | ||
319 | * that the CM_IDLEST bit shift is the CM_*CLKEN bit shift, and that | ||
320 | * the IDLEST register address ID corresponds to the CM_*CLKEN | ||
321 | * register address ID (e.g., that CM_FCLKEN2 corresponds to | ||
322 | * CM_IDLEST2). This is not true for all modules. No return value. | ||
320 | */ | 323 | */ |
321 | static void omap2_clk_wait_ready(struct clk *clk) | 324 | void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg, |
325 | u8 *idlest_bit) | ||
322 | { | 326 | { |
323 | void __iomem *reg, *other_reg, *st_reg; | 327 | u32 r; |
324 | u32 bit; | ||
325 | 328 | ||
326 | /* | 329 | r = (((__force u32)clk->enable_reg & ~0xf0) | 0x20); |
327 | * REVISIT: This code is pretty ugly. It would be nice to generalize | 330 | *idlest_reg = (__force void __iomem *)r; |
328 | * it and pull it into struct clk itself somehow. | 331 | *idlest_bit = clk->enable_bit; |
329 | */ | 332 | } |
330 | reg = clk->enable_reg; | ||
331 | 333 | ||
332 | /* | 334 | /** |
333 | * Convert CM_ICLKEN* <-> CM_FCLKEN*. This conversion assumes | 335 | * omap2_module_wait_ready - wait for an OMAP module to leave IDLE |
334 | * it's just a matter of XORing the bits. | 336 | * @clk: struct clk * belonging to the module |
335 | */ | 337 | * |
336 | other_reg = (void __iomem *)((u32)reg ^ (CM_FCLKEN ^ CM_ICLKEN)); | 338 | * If the necessary clocks for the OMAP hardware IP block that |
339 | * corresponds to clock @clk are enabled, then wait for the module to | ||
340 | * indicate readiness (i.e., to leave IDLE). This code does not | ||
341 | * belong in the clock code and will be moved in the medium term to | ||
342 | * module-dependent code. No return value. | ||
343 | */ | ||
344 | static void omap2_module_wait_ready(struct clk *clk) | ||
345 | { | ||
346 | void __iomem *companion_reg, *idlest_reg; | ||
347 | u8 other_bit, idlest_bit; | ||
348 | |||
349 | /* Not all modules have multiple clocks that their IDLEST depends on */ | ||
350 | if (clk->ops->find_companion) { | ||
351 | clk->ops->find_companion(clk, &companion_reg, &other_bit); | ||
352 | if (!(__raw_readl(companion_reg) & (1 << other_bit))) | ||
353 | return; | ||
354 | } | ||
337 | 355 | ||
338 | /* Check if both functional and interface clocks | 356 | clk->ops->find_idlest(clk, &idlest_reg, &idlest_bit); |
339 | * are running. */ | ||
340 | bit = 1 << clk->enable_bit; | ||
341 | if (!(__raw_readl(other_reg) & bit)) | ||
342 | return; | ||
343 | st_reg = (void __iomem *)(((u32)other_reg & ~0xf0) | 0x20); /* CM_IDLEST* */ | ||
344 | 357 | ||
345 | omap2_wait_clock_ready(st_reg, bit, clk->name); | 358 | omap2_cm_wait_idlest(idlest_reg, (1 << idlest_bit), clk->name); |
346 | } | 359 | } |
347 | 360 | ||
348 | static int omap2_dflt_clk_enable(struct clk *clk) | 361 | int omap2_dflt_clk_enable(struct clk *clk) |
349 | { | 362 | { |
350 | u32 v; | 363 | u32 v; |
351 | 364 | ||
352 | if (unlikely(clk->enable_reg == NULL)) { | 365 | if (unlikely(clk->enable_reg == NULL)) { |
353 | printk(KERN_ERR "clock.c: Enable for %s without enable code\n", | 366 | pr_err("clock.c: Enable for %s without enable code\n", |
354 | clk->name); | 367 | clk->name); |
355 | return 0; /* REVISIT: -EINVAL */ | 368 | return 0; /* REVISIT: -EINVAL */ |
356 | } | 369 | } |
@@ -363,26 +376,13 @@ static int omap2_dflt_clk_enable(struct clk *clk) | |||
363 | __raw_writel(v, clk->enable_reg); | 376 | __raw_writel(v, clk->enable_reg); |
364 | v = __raw_readl(clk->enable_reg); /* OCP barrier */ | 377 | v = __raw_readl(clk->enable_reg); /* OCP barrier */ |
365 | 378 | ||
366 | return 0; | 379 | if (clk->ops->find_idlest) |
367 | } | 380 | omap2_module_wait_ready(clk); |
368 | 381 | ||
369 | static int omap2_dflt_clk_enable_wait(struct clk *clk) | 382 | return 0; |
370 | { | ||
371 | int ret; | ||
372 | |||
373 | if (!clk->enable_reg) { | ||
374 | printk(KERN_ERR "clock.c: Enable for %s without enable code\n", | ||
375 | clk->name); | ||
376 | return 0; /* REVISIT: -EINVAL */ | ||
377 | } | ||
378 | |||
379 | ret = omap2_dflt_clk_enable(clk); | ||
380 | if (ret == 0) | ||
381 | omap2_clk_wait_ready(clk); | ||
382 | return ret; | ||
383 | } | 383 | } |
384 | 384 | ||
385 | static void omap2_dflt_clk_disable(struct clk *clk) | 385 | void omap2_dflt_clk_disable(struct clk *clk) |
386 | { | 386 | { |
387 | u32 v; | 387 | u32 v; |
388 | 388 | ||
@@ -406,8 +406,10 @@ static void omap2_dflt_clk_disable(struct clk *clk) | |||
406 | } | 406 | } |
407 | 407 | ||
408 | const struct clkops clkops_omap2_dflt_wait = { | 408 | const struct clkops clkops_omap2_dflt_wait = { |
409 | .enable = omap2_dflt_clk_enable_wait, | 409 | .enable = omap2_dflt_clk_enable, |
410 | .disable = omap2_dflt_clk_disable, | 410 | .disable = omap2_dflt_clk_disable, |
411 | .find_companion = omap2_clk_dflt_find_companion, | ||
412 | .find_idlest = omap2_clk_dflt_find_idlest, | ||
411 | }; | 413 | }; |
412 | 414 | ||
413 | const struct clkops clkops_omap2_dflt = { | 415 | const struct clkops clkops_omap2_dflt = { |
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index 2679ddfa6424..9ae7540f8af2 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h | |||
@@ -65,6 +65,12 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate); | |||
65 | u32 omap2_get_dpll_rate(struct clk *clk); | 65 | u32 omap2_get_dpll_rate(struct clk *clk); |
66 | int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); | 66 | int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); |
67 | void omap2_clk_prepare_for_reboot(void); | 67 | void omap2_clk_prepare_for_reboot(void); |
68 | int omap2_dflt_clk_enable(struct clk *clk); | ||
69 | void omap2_dflt_clk_disable(struct clk *clk); | ||
70 | void omap2_clk_dflt_find_companion(struct clk *clk, void __iomem **other_reg, | ||
71 | u8 *other_bit); | ||
72 | void omap2_clk_dflt_find_idlest(struct clk *clk, void __iomem **idlest_reg, | ||
73 | u8 *idlest_bit); | ||
68 | 74 | ||
69 | extern const struct clkops clkops_omap2_dflt_wait; | 75 | extern const struct clkops clkops_omap2_dflt_wait; |
70 | extern const struct clkops clkops_omap2_dflt; | 76 | extern const struct clkops clkops_omap2_dflt; |
diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c index 44de0271fc2f..bc5d3ac66611 100644 --- a/arch/arm/mach-omap2/clock24xx.c +++ b/arch/arm/mach-omap2/clock24xx.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include <mach/clock.h> | 31 | #include <mach/clock.h> |
32 | #include <mach/sram.h> | 32 | #include <mach/sram.h> |
33 | #include <mach/prcm.h> | ||
33 | #include <asm/div64.h> | 34 | #include <asm/div64.h> |
34 | #include <asm/clkdev.h> | 35 | #include <asm/clkdev.h> |
35 | 36 | ||
@@ -43,6 +44,18 @@ | |||
43 | static const struct clkops clkops_oscck; | 44 | static const struct clkops clkops_oscck; |
44 | static const struct clkops clkops_fixed; | 45 | static const struct clkops clkops_fixed; |
45 | 46 | ||
47 | static void omap2430_clk_i2chs_find_idlest(struct clk *clk, | ||
48 | void __iomem **idlest_reg, | ||
49 | u8 *idlest_bit); | ||
50 | |||
51 | /* 2430 I2CHS has non-standard IDLEST register */ | ||
52 | static const struct clkops clkops_omap2430_i2chs_wait = { | ||
53 | .enable = omap2_dflt_clk_enable, | ||
54 | .disable = omap2_dflt_clk_disable, | ||
55 | .find_idlest = omap2430_clk_i2chs_find_idlest, | ||
56 | .find_companion = omap2_clk_dflt_find_companion, | ||
57 | }; | ||
58 | |||
46 | #include "clock24xx.h" | 59 | #include "clock24xx.h" |
47 | 60 | ||
48 | struct omap_clk { | 61 | struct omap_clk { |
@@ -240,6 +253,26 @@ static void __iomem *prcm_clksrc_ctrl; | |||
240 | *-------------------------------------------------------------------------*/ | 253 | *-------------------------------------------------------------------------*/ |
241 | 254 | ||
242 | /** | 255 | /** |
256 | * omap2430_clk_i2chs_find_idlest - return CM_IDLEST info for 2430 I2CHS | ||
257 | * @clk: struct clk * being enabled | ||
258 | * @idlest_reg: void __iomem ** to store CM_IDLEST reg address into | ||
259 | * @idlest_bit: pointer to a u8 to store the CM_IDLEST bit shift into | ||
260 | * | ||
261 | * OMAP2430 I2CHS CM_IDLEST bits are in CM_IDLEST1_CORE, but the | ||
262 | * CM_*CLKEN bits are in CM_{I,F}CLKEN2_CORE. This custom function | ||
263 | * passes back the correct CM_IDLEST register address for I2CHS | ||
264 | * modules. No return value. | ||
265 | */ | ||
266 | static void omap2430_clk_i2chs_find_idlest(struct clk *clk, | ||
267 | void __iomem **idlest_reg, | ||
268 | u8 *idlest_bit) | ||
269 | { | ||
270 | *idlest_reg = OMAP_CM_REGADDR(CORE_MOD, CM_IDLEST); | ||
271 | *idlest_bit = clk->enable_bit; | ||
272 | } | ||
273 | |||
274 | |||
275 | /** | ||
243 | * omap2xxx_clk_get_core_rate - return the CORE_CLK rate | 276 | * omap2xxx_clk_get_core_rate - return the CORE_CLK rate |
244 | * @clk: pointer to the combined dpll_ck + core_ck (currently "dpll_ck") | 277 | * @clk: pointer to the combined dpll_ck + core_ck (currently "dpll_ck") |
245 | * | 278 | * |
@@ -325,8 +358,8 @@ static int omap2_clk_fixed_enable(struct clk *clk) | |||
325 | else if (clk == &apll54_ck) | 358 | else if (clk == &apll54_ck) |
326 | cval = OMAP24XX_ST_54M_APLL; | 359 | cval = OMAP24XX_ST_54M_APLL; |
327 | 360 | ||
328 | omap2_wait_clock_ready(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), cval, | 361 | omap2_cm_wait_idlest(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), cval, |
329 | clk->name); | 362 | clk->name); |
330 | 363 | ||
331 | /* | 364 | /* |
332 | * REVISIT: Should we return an error code if omap2_wait_clock_ready() | 365 | * REVISIT: Should we return an error code if omap2_wait_clock_ready() |
diff --git a/arch/arm/mach-omap2/clock24xx.h b/arch/arm/mach-omap2/clock24xx.h index 458f00cdcbea..d19cf7a7d8db 100644 --- a/arch/arm/mach-omap2/clock24xx.h +++ b/arch/arm/mach-omap2/clock24xx.h | |||
@@ -2337,7 +2337,7 @@ static struct clk i2c2_fck = { | |||
2337 | 2337 | ||
2338 | static struct clk i2chs2_fck = { | 2338 | static struct clk i2chs2_fck = { |
2339 | .name = "i2c_fck", | 2339 | .name = "i2c_fck", |
2340 | .ops = &clkops_omap2_dflt_wait, | 2340 | .ops = &clkops_omap2430_i2chs_wait, |
2341 | .id = 2, | 2341 | .id = 2, |
2342 | .parent = &func_96m_ck, | 2342 | .parent = &func_96m_ck, |
2343 | .clkdm_name = "core_l4_clkdm", | 2343 | .clkdm_name = "core_l4_clkdm", |
@@ -2370,7 +2370,7 @@ static struct clk i2c1_fck = { | |||
2370 | 2370 | ||
2371 | static struct clk i2chs1_fck = { | 2371 | static struct clk i2chs1_fck = { |
2372 | .name = "i2c_fck", | 2372 | .name = "i2c_fck", |
2373 | .ops = &clkops_omap2_dflt_wait, | 2373 | .ops = &clkops_omap2430_i2chs_wait, |
2374 | .id = 1, | 2374 | .id = 1, |
2375 | .parent = &func_96m_ck, | 2375 | .parent = &func_96m_ck, |
2376 | .clkdm_name = "core_l4_clkdm", | 2376 | .clkdm_name = "core_l4_clkdm", |
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c index 9e43fe5209d3..cd7819cc0c9e 100644 --- a/arch/arm/mach-omap2/clock34xx.c +++ b/arch/arm/mach-omap2/clock34xx.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * OMAP3-specific clock framework functions | 2 | * OMAP3-specific clock framework functions |
3 | * | 3 | * |
4 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | 4 | * Copyright (C) 2007-2008 Texas Instruments, Inc. |
5 | * Copyright (C) 2007-2008 Nokia Corporation | 5 | * Copyright (C) 2007-2009 Nokia Corporation |
6 | * | 6 | * |
7 | * Written by Paul Walmsley | 7 | * Written by Paul Walmsley |
8 | * Testing and integration fixes by Jouni Högander | 8 | * Testing and integration fixes by Jouni Högander |
@@ -41,6 +41,37 @@ | |||
41 | 41 | ||
42 | static const struct clkops clkops_noncore_dpll_ops; | 42 | static const struct clkops clkops_noncore_dpll_ops; |
43 | 43 | ||
44 | static void omap3430es2_clk_ssi_find_idlest(struct clk *clk, | ||
45 | void __iomem **idlest_reg, | ||
46 | u8 *idlest_bit); | ||
47 | static void omap3430es2_clk_hsotgusb_find_idlest(struct clk *clk, | ||
48 | void __iomem **idlest_reg, | ||
49 | u8 *idlest_bit); | ||
50 | static void omap3430es2_clk_dss_usbhost_find_idlest(struct clk *clk, | ||
51 | void __iomem **idlest_reg, | ||
52 | u8 *idlest_bit); | ||
53 | |||
54 | static const struct clkops clkops_omap3430es2_ssi_wait = { | ||
55 | .enable = omap2_dflt_clk_enable, | ||
56 | .disable = omap2_dflt_clk_disable, | ||
57 | .find_idlest = omap3430es2_clk_ssi_find_idlest, | ||
58 | .find_companion = omap2_clk_dflt_find_companion, | ||
59 | }; | ||
60 | |||
61 | static const struct clkops clkops_omap3430es2_hsotgusb_wait = { | ||
62 | .enable = omap2_dflt_clk_enable, | ||
63 | .disable = omap2_dflt_clk_disable, | ||
64 | .find_idlest = omap3430es2_clk_hsotgusb_find_idlest, | ||
65 | .find_companion = omap2_clk_dflt_find_companion, | ||
66 | }; | ||
67 | |||
68 | static const struct clkops clkops_omap3430es2_dss_usbhost_wait = { | ||
69 | .enable = omap2_dflt_clk_enable, | ||
70 | .disable = omap2_dflt_clk_disable, | ||
71 | .find_idlest = omap3430es2_clk_dss_usbhost_find_idlest, | ||
72 | .find_companion = omap2_clk_dflt_find_companion, | ||
73 | }; | ||
74 | |||
44 | #include "clock34xx.h" | 75 | #include "clock34xx.h" |
45 | 76 | ||
46 | struct omap_clk { | 77 | struct omap_clk { |
@@ -157,10 +188,13 @@ static struct omap_clk omap34xx_clks[] = { | |||
157 | CLK(NULL, "fshostusb_fck", &fshostusb_fck, CK_3430ES1), | 188 | CLK(NULL, "fshostusb_fck", &fshostusb_fck, CK_3430ES1), |
158 | CLK(NULL, "core_12m_fck", &core_12m_fck, CK_343X), | 189 | CLK(NULL, "core_12m_fck", &core_12m_fck, CK_343X), |
159 | CLK("omap_hdq.0", "fck", &hdq_fck, CK_343X), | 190 | CLK("omap_hdq.0", "fck", &hdq_fck, CK_343X), |
160 | CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck, CK_343X), | 191 | CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es1, CK_3430ES1), |
161 | CLK(NULL, "ssi_sst_fck", &ssi_sst_fck, CK_343X), | 192 | CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es2, CK_3430ES2), |
193 | CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es1, CK_3430ES1), | ||
194 | CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es2, CK_3430ES2), | ||
162 | CLK(NULL, "core_l3_ick", &core_l3_ick, CK_343X), | 195 | CLK(NULL, "core_l3_ick", &core_l3_ick, CK_343X), |
163 | CLK("musb_hdrc", "ick", &hsotgusb_ick, CK_343X), | 196 | CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es1, CK_3430ES1), |
197 | CLK("musb_hdrc", "ick", &hsotgusb_ick_3430es2, CK_3430ES2), | ||
164 | CLK(NULL, "sdrc_ick", &sdrc_ick, CK_343X), | 198 | CLK(NULL, "sdrc_ick", &sdrc_ick, CK_343X), |
165 | CLK(NULL, "gpmc_fck", &gpmc_fck, CK_343X), | 199 | CLK(NULL, "gpmc_fck", &gpmc_fck, CK_343X), |
166 | CLK(NULL, "security_l3_ick", &security_l3_ick, CK_343X), | 200 | CLK(NULL, "security_l3_ick", &security_l3_ick, CK_343X), |
@@ -193,18 +227,21 @@ static struct omap_clk omap34xx_clks[] = { | |||
193 | CLK(NULL, "mailboxes_ick", &mailboxes_ick, CK_343X), | 227 | CLK(NULL, "mailboxes_ick", &mailboxes_ick, CK_343X), |
194 | CLK(NULL, "omapctrl_ick", &omapctrl_ick, CK_343X), | 228 | CLK(NULL, "omapctrl_ick", &omapctrl_ick, CK_343X), |
195 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_343X), | 229 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_343X), |
196 | CLK(NULL, "ssi_ick", &ssi_ick, CK_343X), | 230 | CLK(NULL, "ssi_ick", &ssi_ick_3430es1, CK_3430ES1), |
231 | CLK(NULL, "ssi_ick", &ssi_ick_3430es2, CK_3430ES2), | ||
197 | CLK(NULL, "usb_l4_ick", &usb_l4_ick, CK_3430ES1), | 232 | CLK(NULL, "usb_l4_ick", &usb_l4_ick, CK_3430ES1), |
198 | CLK(NULL, "security_l4_ick2", &security_l4_ick2, CK_343X), | 233 | CLK(NULL, "security_l4_ick2", &security_l4_ick2, CK_343X), |
199 | CLK(NULL, "aes1_ick", &aes1_ick, CK_343X), | 234 | CLK(NULL, "aes1_ick", &aes1_ick, CK_343X), |
200 | CLK("omap_rng", "ick", &rng_ick, CK_343X), | 235 | CLK("omap_rng", "ick", &rng_ick, CK_343X), |
201 | CLK(NULL, "sha11_ick", &sha11_ick, CK_343X), | 236 | CLK(NULL, "sha11_ick", &sha11_ick, CK_343X), |
202 | CLK(NULL, "des1_ick", &des1_ick, CK_343X), | 237 | CLK(NULL, "des1_ick", &des1_ick, CK_343X), |
203 | CLK("omapfb", "dss1_fck", &dss1_alwon_fck, CK_343X), | 238 | CLK("omapfb", "dss1_fck", &dss1_alwon_fck_3430es1, CK_3430ES1), |
239 | CLK("omapfb", "dss1_fck", &dss1_alwon_fck_3430es2, CK_3430ES2), | ||
204 | CLK("omapfb", "tv_fck", &dss_tv_fck, CK_343X), | 240 | CLK("omapfb", "tv_fck", &dss_tv_fck, CK_343X), |
205 | CLK("omapfb", "video_fck", &dss_96m_fck, CK_343X), | 241 | CLK("omapfb", "video_fck", &dss_96m_fck, CK_343X), |
206 | CLK("omapfb", "dss2_fck", &dss2_alwon_fck, CK_343X), | 242 | CLK("omapfb", "dss2_fck", &dss2_alwon_fck, CK_343X), |
207 | CLK("omapfb", "ick", &dss_ick, CK_343X), | 243 | CLK("omapfb", "ick", &dss_ick_3430es1, CK_3430ES1), |
244 | CLK("omapfb", "ick", &dss_ick_3430es2, CK_3430ES2), | ||
208 | CLK(NULL, "cam_mclk", &cam_mclk, CK_343X), | 245 | CLK(NULL, "cam_mclk", &cam_mclk, CK_343X), |
209 | CLK(NULL, "cam_ick", &cam_ick, CK_343X), | 246 | CLK(NULL, "cam_ick", &cam_ick, CK_343X), |
210 | CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_343X), | 247 | CLK(NULL, "csi2_96m_fck", &csi2_96m_fck, CK_343X), |
@@ -286,6 +323,87 @@ static struct omap_clk omap34xx_clks[] = { | |||
286 | 323 | ||
287 | #define MIN_SDRC_DLL_LOCK_FREQ 83000000 | 324 | #define MIN_SDRC_DLL_LOCK_FREQ 83000000 |
288 | 325 | ||
326 | #define CYCLES_PER_MHZ 1000000 | ||
327 | |||
328 | /* Scale factor for fixed-point arith in omap3_core_dpll_m2_set_rate() */ | ||
329 | #define SDRC_MPURATE_SCALE 8 | ||
330 | |||
331 | /* 2^SDRC_MPURATE_BASE_SHIFT: MPU MHz that SDRC_MPURATE_LOOPS is defined for */ | ||
332 | #define SDRC_MPURATE_BASE_SHIFT 9 | ||
333 | |||
334 | /* | ||
335 | * SDRC_MPURATE_LOOPS: Number of MPU loops to execute at | ||
336 | * 2^MPURATE_BASE_SHIFT MHz for SDRC to stabilize | ||
337 | */ | ||
338 | #define SDRC_MPURATE_LOOPS 96 | ||
339 | |||
340 | /** | ||
341 | * omap3430es2_clk_ssi_find_idlest - return CM_IDLEST info for SSI | ||
342 | * @clk: struct clk * being enabled | ||
343 | * @idlest_reg: void __iomem ** to store CM_IDLEST reg address into | ||
344 | * @idlest_bit: pointer to a u8 to store the CM_IDLEST bit shift into | ||
345 | * | ||
346 | * The OMAP3430ES2 SSI target CM_IDLEST bit is at a different shift | ||
347 | * from the CM_{I,F}CLKEN bit. Pass back the correct info via | ||
348 | * @idlest_reg and @idlest_bit. No return value. | ||
349 | */ | ||
350 | static void omap3430es2_clk_ssi_find_idlest(struct clk *clk, | ||
351 | void __iomem **idlest_reg, | ||
352 | u8 *idlest_bit) | ||
353 | { | ||
354 | u32 r; | ||
355 | |||
356 | r = (((__force u32)clk->enable_reg & ~0xf0) | 0x20); | ||
357 | *idlest_reg = (__force void __iomem *)r; | ||
358 | *idlest_bit = OMAP3430ES2_ST_SSI_IDLE_SHIFT; | ||
359 | } | ||
360 | |||
361 | /** | ||
362 | * omap3430es2_clk_dss_usbhost_find_idlest - CM_IDLEST info for DSS, USBHOST | ||
363 | * @clk: struct clk * being enabled | ||
364 | * @idlest_reg: void __iomem ** to store CM_IDLEST reg address into | ||
365 | * @idlest_bit: pointer to a u8 to store the CM_IDLEST bit shift into | ||
366 | * | ||
367 | * Some OMAP modules on OMAP3 ES2+ chips have both initiator and | ||
368 | * target IDLEST bits. For our purposes, we are concerned with the | ||
369 | * target IDLEST bits, which exist at a different bit position than | ||
370 | * the *CLKEN bit position for these modules (DSS and USBHOST) (The | ||
371 | * default find_idlest code assumes that they are at the same | ||
372 | * position.) No return value. | ||
373 | */ | ||
374 | static void omap3430es2_clk_dss_usbhost_find_idlest(struct clk *clk, | ||
375 | void __iomem **idlest_reg, | ||
376 | u8 *idlest_bit) | ||
377 | { | ||
378 | u32 r; | ||
379 | |||
380 | r = (((__force u32)clk->enable_reg & ~0xf0) | 0x20); | ||
381 | *idlest_reg = (__force void __iomem *)r; | ||
382 | /* USBHOST_IDLE has same shift */ | ||
383 | *idlest_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT; | ||
384 | } | ||
385 | |||
386 | /** | ||
387 | * omap3430es2_clk_hsotgusb_find_idlest - return CM_IDLEST info for HSOTGUSB | ||
388 | * @clk: struct clk * being enabled | ||
389 | * @idlest_reg: void __iomem ** to store CM_IDLEST reg address into | ||
390 | * @idlest_bit: pointer to a u8 to store the CM_IDLEST bit shift into | ||
391 | * | ||
392 | * The OMAP3430ES2 HSOTGUSB target CM_IDLEST bit is at a different | ||
393 | * shift from the CM_{I,F}CLKEN bit. Pass back the correct info via | ||
394 | * @idlest_reg and @idlest_bit. No return value. | ||
395 | */ | ||
396 | static void omap3430es2_clk_hsotgusb_find_idlest(struct clk *clk, | ||
397 | void __iomem **idlest_reg, | ||
398 | u8 *idlest_bit) | ||
399 | { | ||
400 | u32 r; | ||
401 | |||
402 | r = (((__force u32)clk->enable_reg & ~0xf0) | 0x20); | ||
403 | *idlest_reg = (__force void __iomem *)r; | ||
404 | *idlest_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT; | ||
405 | } | ||
406 | |||
289 | /** | 407 | /** |
290 | * omap3_dpll_recalc - recalculate DPLL rate | 408 | * omap3_dpll_recalc - recalculate DPLL rate |
291 | * @clk: DPLL struct clk | 409 | * @clk: DPLL struct clk |
@@ -709,8 +827,11 @@ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate) | |||
709 | { | 827 | { |
710 | u32 new_div = 0; | 828 | u32 new_div = 0; |
711 | u32 unlock_dll = 0; | 829 | u32 unlock_dll = 0; |
712 | unsigned long validrate, sdrcrate; | 830 | u32 c; |
713 | struct omap_sdrc_params *sp; | 831 | unsigned long validrate, sdrcrate, mpurate; |
832 | struct omap_sdrc_params *sdrc_cs0; | ||
833 | struct omap_sdrc_params *sdrc_cs1; | ||
834 | int ret; | ||
714 | 835 | ||
715 | if (!clk || !rate) | 836 | if (!clk || !rate) |
716 | return -EINVAL; | 837 | return -EINVAL; |
@@ -718,21 +839,18 @@ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate) | |||
718 | if (clk != &dpll3_m2_ck) | 839 | if (clk != &dpll3_m2_ck) |
719 | return -EINVAL; | 840 | return -EINVAL; |
720 | 841 | ||
721 | if (rate == clk->rate) | ||
722 | return 0; | ||
723 | |||
724 | validrate = omap2_clksel_round_rate_div(clk, rate, &new_div); | 842 | validrate = omap2_clksel_round_rate_div(clk, rate, &new_div); |
725 | if (validrate != rate) | 843 | if (validrate != rate) |
726 | return -EINVAL; | 844 | return -EINVAL; |
727 | 845 | ||
728 | sdrcrate = sdrc_ick.rate; | 846 | sdrcrate = sdrc_ick.rate; |
729 | if (rate > clk->rate) | 847 | if (rate > clk->rate) |
730 | sdrcrate <<= ((rate / clk->rate) - 1); | 848 | sdrcrate <<= ((rate / clk->rate) >> 1); |
731 | else | 849 | else |
732 | sdrcrate >>= ((clk->rate / rate) - 1); | 850 | sdrcrate >>= ((clk->rate / rate) >> 1); |
733 | 851 | ||
734 | sp = omap2_sdrc_get_params(sdrcrate); | 852 | ret = omap2_sdrc_get_params(sdrcrate, &sdrc_cs0, &sdrc_cs1); |
735 | if (!sp) | 853 | if (ret) |
736 | return -EINVAL; | 854 | return -EINVAL; |
737 | 855 | ||
738 | if (sdrcrate < MIN_SDRC_DLL_LOCK_FREQ) { | 856 | if (sdrcrate < MIN_SDRC_DLL_LOCK_FREQ) { |
@@ -740,17 +858,42 @@ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate) | |||
740 | unlock_dll = 1; | 858 | unlock_dll = 1; |
741 | } | 859 | } |
742 | 860 | ||
861 | /* | ||
862 | * XXX This only needs to be done when the CPU frequency changes | ||
863 | */ | ||
864 | mpurate = arm_fck.rate / CYCLES_PER_MHZ; | ||
865 | c = (mpurate << SDRC_MPURATE_SCALE) >> SDRC_MPURATE_BASE_SHIFT; | ||
866 | c += 1; /* for safety */ | ||
867 | c *= SDRC_MPURATE_LOOPS; | ||
868 | c >>= SDRC_MPURATE_SCALE; | ||
869 | if (c == 0) | ||
870 | c = 1; | ||
871 | |||
743 | pr_debug("clock: changing CORE DPLL rate from %lu to %lu\n", clk->rate, | 872 | pr_debug("clock: changing CORE DPLL rate from %lu to %lu\n", clk->rate, |
744 | validrate); | 873 | validrate); |
745 | pr_debug("clock: SDRC timing params used: %08x %08x %08x\n", | 874 | pr_debug("clock: SDRC CS0 timing params used:" |
746 | sp->rfr_ctrl, sp->actim_ctrla, sp->actim_ctrlb); | 875 | " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n", |
747 | 876 | sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla, | |
748 | /* REVISIT: SRAM code doesn't support other M2 divisors yet */ | 877 | sdrc_cs0->actim_ctrlb, sdrc_cs0->mr); |
749 | WARN_ON(new_div != 1 && new_div != 2); | 878 | if (sdrc_cs1) |
750 | 879 | pr_debug("clock: SDRC CS1 timing params used: " | |
751 | /* REVISIT: Add SDRC_MR changing to this code also */ | 880 | " RFR %08x CTRLA %08x CTRLB %08x MR %08x\n", |
752 | omap3_configure_core_dpll(sp->rfr_ctrl, sp->actim_ctrla, | 881 | sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla, |
753 | sp->actim_ctrlb, new_div, unlock_dll); | 882 | sdrc_cs1->actim_ctrlb, sdrc_cs1->mr); |
883 | |||
884 | if (sdrc_cs1) | ||
885 | omap3_configure_core_dpll( | ||
886 | new_div, unlock_dll, c, rate > clk->rate, | ||
887 | sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla, | ||
888 | sdrc_cs0->actim_ctrlb, sdrc_cs0->mr, | ||
889 | sdrc_cs1->rfr_ctrl, sdrc_cs1->actim_ctrla, | ||
890 | sdrc_cs1->actim_ctrlb, sdrc_cs1->mr); | ||
891 | else | ||
892 | omap3_configure_core_dpll( | ||
893 | new_div, unlock_dll, c, rate > clk->rate, | ||
894 | sdrc_cs0->rfr_ctrl, sdrc_cs0->actim_ctrla, | ||
895 | sdrc_cs0->actim_ctrlb, sdrc_cs0->mr, | ||
896 | 0, 0, 0, 0); | ||
754 | 897 | ||
755 | return 0; | 898 | return 0; |
756 | } | 899 | } |
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h index e433aec4efdd..57cc2725b923 100644 --- a/arch/arm/mach-omap2/clock34xx.h +++ b/arch/arm/mach-omap2/clock34xx.h | |||
@@ -1568,7 +1568,7 @@ static const struct clksel ssi_ssr_clksel[] = { | |||
1568 | { .parent = NULL } | 1568 | { .parent = NULL } |
1569 | }; | 1569 | }; |
1570 | 1570 | ||
1571 | static struct clk ssi_ssr_fck = { | 1571 | static struct clk ssi_ssr_fck_3430es1 = { |
1572 | .name = "ssi_ssr_fck", | 1572 | .name = "ssi_ssr_fck", |
1573 | .ops = &clkops_omap2_dflt, | 1573 | .ops = &clkops_omap2_dflt, |
1574 | .init = &omap2_init_clksel_parent, | 1574 | .init = &omap2_init_clksel_parent, |
@@ -1581,10 +1581,31 @@ static struct clk ssi_ssr_fck = { | |||
1581 | .recalc = &omap2_clksel_recalc, | 1581 | .recalc = &omap2_clksel_recalc, |
1582 | }; | 1582 | }; |
1583 | 1583 | ||
1584 | static struct clk ssi_sst_fck = { | 1584 | static struct clk ssi_ssr_fck_3430es2 = { |
1585 | .name = "ssi_ssr_fck", | ||
1586 | .ops = &clkops_omap3430es2_ssi_wait, | ||
1587 | .init = &omap2_init_clksel_parent, | ||
1588 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1589 | .enable_bit = OMAP3430_EN_SSI_SHIFT, | ||
1590 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1591 | .clksel_mask = OMAP3430_CLKSEL_SSI_MASK, | ||
1592 | .clksel = ssi_ssr_clksel, | ||
1593 | .clkdm_name = "core_l4_clkdm", | ||
1594 | .recalc = &omap2_clksel_recalc, | ||
1595 | }; | ||
1596 | |||
1597 | static struct clk ssi_sst_fck_3430es1 = { | ||
1585 | .name = "ssi_sst_fck", | 1598 | .name = "ssi_sst_fck", |
1586 | .ops = &clkops_null, | 1599 | .ops = &clkops_null, |
1587 | .parent = &ssi_ssr_fck, | 1600 | .parent = &ssi_ssr_fck_3430es1, |
1601 | .fixed_div = 2, | ||
1602 | .recalc = &omap2_fixed_divisor_recalc, | ||
1603 | }; | ||
1604 | |||
1605 | static struct clk ssi_sst_fck_3430es2 = { | ||
1606 | .name = "ssi_sst_fck", | ||
1607 | .ops = &clkops_null, | ||
1608 | .parent = &ssi_ssr_fck_3430es2, | ||
1588 | .fixed_div = 2, | 1609 | .fixed_div = 2, |
1589 | .recalc = &omap2_fixed_divisor_recalc, | 1610 | .recalc = &omap2_fixed_divisor_recalc, |
1590 | }; | 1611 | }; |
@@ -1606,9 +1627,19 @@ static struct clk core_l3_ick = { | |||
1606 | .recalc = &followparent_recalc, | 1627 | .recalc = &followparent_recalc, |
1607 | }; | 1628 | }; |
1608 | 1629 | ||
1609 | static struct clk hsotgusb_ick = { | 1630 | static struct clk hsotgusb_ick_3430es1 = { |
1610 | .name = "hsotgusb_ick", | 1631 | .name = "hsotgusb_ick", |
1611 | .ops = &clkops_omap2_dflt_wait, | 1632 | .ops = &clkops_omap2_dflt, |
1633 | .parent = &core_l3_ick, | ||
1634 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1635 | .enable_bit = OMAP3430_EN_HSOTGUSB_SHIFT, | ||
1636 | .clkdm_name = "core_l3_clkdm", | ||
1637 | .recalc = &followparent_recalc, | ||
1638 | }; | ||
1639 | |||
1640 | static struct clk hsotgusb_ick_3430es2 = { | ||
1641 | .name = "hsotgusb_ick", | ||
1642 | .ops = &clkops_omap3430es2_hsotgusb_wait, | ||
1612 | .parent = &core_l3_ick, | 1643 | .parent = &core_l3_ick, |
1613 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1644 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
1614 | .enable_bit = OMAP3430_EN_HSOTGUSB_SHIFT, | 1645 | .enable_bit = OMAP3430_EN_HSOTGUSB_SHIFT, |
@@ -1947,7 +1978,7 @@ static struct clk ssi_l4_ick = { | |||
1947 | .recalc = &followparent_recalc, | 1978 | .recalc = &followparent_recalc, |
1948 | }; | 1979 | }; |
1949 | 1980 | ||
1950 | static struct clk ssi_ick = { | 1981 | static struct clk ssi_ick_3430es1 = { |
1951 | .name = "ssi_ick", | 1982 | .name = "ssi_ick", |
1952 | .ops = &clkops_omap2_dflt, | 1983 | .ops = &clkops_omap2_dflt, |
1953 | .parent = &ssi_l4_ick, | 1984 | .parent = &ssi_l4_ick, |
@@ -1957,6 +1988,16 @@ static struct clk ssi_ick = { | |||
1957 | .recalc = &followparent_recalc, | 1988 | .recalc = &followparent_recalc, |
1958 | }; | 1989 | }; |
1959 | 1990 | ||
1991 | static struct clk ssi_ick_3430es2 = { | ||
1992 | .name = "ssi_ick", | ||
1993 | .ops = &clkops_omap3430es2_ssi_wait, | ||
1994 | .parent = &ssi_l4_ick, | ||
1995 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1996 | .enable_bit = OMAP3430_EN_SSI_SHIFT, | ||
1997 | .clkdm_name = "core_l4_clkdm", | ||
1998 | .recalc = &followparent_recalc, | ||
1999 | }; | ||
2000 | |||
1960 | /* REVISIT: Technically the TRM claims that this is CORE_CLK based, | 2001 | /* REVISIT: Technically the TRM claims that this is CORE_CLK based, |
1961 | * but l4_ick makes more sense to me */ | 2002 | * but l4_ick makes more sense to me */ |
1962 | 2003 | ||
@@ -2024,7 +2065,7 @@ static struct clk des1_ick = { | |||
2024 | }; | 2065 | }; |
2025 | 2066 | ||
2026 | /* DSS */ | 2067 | /* DSS */ |
2027 | static struct clk dss1_alwon_fck = { | 2068 | static struct clk dss1_alwon_fck_3430es1 = { |
2028 | .name = "dss1_alwon_fck", | 2069 | .name = "dss1_alwon_fck", |
2029 | .ops = &clkops_omap2_dflt, | 2070 | .ops = &clkops_omap2_dflt, |
2030 | .parent = &dpll4_m4x2_ck, | 2071 | .parent = &dpll4_m4x2_ck, |
@@ -2034,6 +2075,16 @@ static struct clk dss1_alwon_fck = { | |||
2034 | .recalc = &followparent_recalc, | 2075 | .recalc = &followparent_recalc, |
2035 | }; | 2076 | }; |
2036 | 2077 | ||
2078 | static struct clk dss1_alwon_fck_3430es2 = { | ||
2079 | .name = "dss1_alwon_fck", | ||
2080 | .ops = &clkops_omap3430es2_dss_usbhost_wait, | ||
2081 | .parent = &dpll4_m4x2_ck, | ||
2082 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), | ||
2083 | .enable_bit = OMAP3430_EN_DSS1_SHIFT, | ||
2084 | .clkdm_name = "dss_clkdm", | ||
2085 | .recalc = &followparent_recalc, | ||
2086 | }; | ||
2087 | |||
2037 | static struct clk dss_tv_fck = { | 2088 | static struct clk dss_tv_fck = { |
2038 | .name = "dss_tv_fck", | 2089 | .name = "dss_tv_fck", |
2039 | .ops = &clkops_omap2_dflt, | 2090 | .ops = &clkops_omap2_dflt, |
@@ -2067,7 +2118,7 @@ static struct clk dss2_alwon_fck = { | |||
2067 | .recalc = &followparent_recalc, | 2118 | .recalc = &followparent_recalc, |
2068 | }; | 2119 | }; |
2069 | 2120 | ||
2070 | static struct clk dss_ick = { | 2121 | static struct clk dss_ick_3430es1 = { |
2071 | /* Handles both L3 and L4 clocks */ | 2122 | /* Handles both L3 and L4 clocks */ |
2072 | .name = "dss_ick", | 2123 | .name = "dss_ick", |
2073 | .ops = &clkops_omap2_dflt, | 2124 | .ops = &clkops_omap2_dflt, |
@@ -2079,6 +2130,18 @@ static struct clk dss_ick = { | |||
2079 | .recalc = &followparent_recalc, | 2130 | .recalc = &followparent_recalc, |
2080 | }; | 2131 | }; |
2081 | 2132 | ||
2133 | static struct clk dss_ick_3430es2 = { | ||
2134 | /* Handles both L3 and L4 clocks */ | ||
2135 | .name = "dss_ick", | ||
2136 | .ops = &clkops_omap3430es2_dss_usbhost_wait, | ||
2137 | .parent = &l4_ick, | ||
2138 | .init = &omap2_init_clk_clkdm, | ||
2139 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_ICLKEN), | ||
2140 | .enable_bit = OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT, | ||
2141 | .clkdm_name = "dss_clkdm", | ||
2142 | .recalc = &followparent_recalc, | ||
2143 | }; | ||
2144 | |||
2082 | /* CAM */ | 2145 | /* CAM */ |
2083 | 2146 | ||
2084 | static struct clk cam_mclk = { | 2147 | static struct clk cam_mclk = { |
@@ -2118,7 +2181,7 @@ static struct clk csi2_96m_fck = { | |||
2118 | 2181 | ||
2119 | static struct clk usbhost_120m_fck = { | 2182 | static struct clk usbhost_120m_fck = { |
2120 | .name = "usbhost_120m_fck", | 2183 | .name = "usbhost_120m_fck", |
2121 | .ops = &clkops_omap2_dflt_wait, | 2184 | .ops = &clkops_omap2_dflt, |
2122 | .parent = &dpll5_m2_ck, | 2185 | .parent = &dpll5_m2_ck, |
2123 | .init = &omap2_init_clk_clkdm, | 2186 | .init = &omap2_init_clk_clkdm, |
2124 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), | 2187 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), |
@@ -2129,7 +2192,7 @@ static struct clk usbhost_120m_fck = { | |||
2129 | 2192 | ||
2130 | static struct clk usbhost_48m_fck = { | 2193 | static struct clk usbhost_48m_fck = { |
2131 | .name = "usbhost_48m_fck", | 2194 | .name = "usbhost_48m_fck", |
2132 | .ops = &clkops_omap2_dflt_wait, | 2195 | .ops = &clkops_omap3430es2_dss_usbhost_wait, |
2133 | .parent = &omap_48m_fck, | 2196 | .parent = &omap_48m_fck, |
2134 | .init = &omap2_init_clk_clkdm, | 2197 | .init = &omap2_init_clk_clkdm, |
2135 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), | 2198 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), |
@@ -2141,7 +2204,7 @@ static struct clk usbhost_48m_fck = { | |||
2141 | static struct clk usbhost_ick = { | 2204 | static struct clk usbhost_ick = { |
2142 | /* Handles both L3 and L4 clocks */ | 2205 | /* Handles both L3 and L4 clocks */ |
2143 | .name = "usbhost_ick", | 2206 | .name = "usbhost_ick", |
2144 | .ops = &clkops_omap2_dflt_wait, | 2207 | .ops = &clkops_omap3430es2_dss_usbhost_wait, |
2145 | .parent = &l4_ick, | 2208 | .parent = &l4_ick, |
2146 | .init = &omap2_init_clk_clkdm, | 2209 | .init = &omap2_init_clk_clkdm, |
2147 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN), | 2210 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN), |
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h index 1d3c93bf86d3..f3c91a1ca391 100644 --- a/arch/arm/mach-omap2/cm.h +++ b/arch/arm/mach-omap2/cm.h | |||
@@ -29,9 +29,9 @@ | |||
29 | * These registers appear once per CM module. | 29 | * These registers appear once per CM module. |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #define OMAP3430_CM_REVISION OMAP_CM_REGADDR(OCP_MOD, 0x0000) | 32 | #define OMAP3430_CM_REVISION OMAP34XX_CM_REGADDR(OCP_MOD, 0x0000) |
33 | #define OMAP3430_CM_SYSCONFIG OMAP_CM_REGADDR(OCP_MOD, 0x0010) | 33 | #define OMAP3430_CM_SYSCONFIG OMAP34XX_CM_REGADDR(OCP_MOD, 0x0010) |
34 | #define OMAP3430_CM_POLCTRL OMAP_CM_REGADDR(OCP_MOD, 0x009c) | 34 | #define OMAP3430_CM_POLCTRL OMAP34XX_CM_REGADDR(OCP_MOD, 0x009c) |
35 | 35 | ||
36 | #define OMAP3_CM_CLKOUT_CTRL_OFFSET 0x0070 | 36 | #define OMAP3_CM_CLKOUT_CTRL_OFFSET 0x0070 |
37 | #define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070) | 37 | #define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070) |
diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c index 2fd22f9c5f0e..54fec53a48e7 100644 --- a/arch/arm/mach-omap2/gpmc-onenand.c +++ b/arch/arm/mach-omap2/gpmc-onenand.c | |||
@@ -31,6 +31,8 @@ static struct platform_device gpmc_onenand_device = { | |||
31 | static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | 31 | static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) |
32 | { | 32 | { |
33 | struct gpmc_timings t; | 33 | struct gpmc_timings t; |
34 | u32 reg; | ||
35 | int err; | ||
34 | 36 | ||
35 | const int t_cer = 15; | 37 | const int t_cer = 15; |
36 | const int t_avdp = 12; | 38 | const int t_avdp = 12; |
@@ -43,6 +45,11 @@ static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | |||
43 | const int t_wpl = 40; | 45 | const int t_wpl = 40; |
44 | const int t_wph = 30; | 46 | const int t_wph = 30; |
45 | 47 | ||
48 | /* Ensure sync read and sync write are disabled */ | ||
49 | reg = readw(onenand_base + ONENAND_REG_SYS_CFG1); | ||
50 | reg &= ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE; | ||
51 | writew(reg, onenand_base + ONENAND_REG_SYS_CFG1); | ||
52 | |||
46 | memset(&t, 0, sizeof(t)); | 53 | memset(&t, 0, sizeof(t)); |
47 | t.sync_clk = 0; | 54 | t.sync_clk = 0; |
48 | t.cs_on = 0; | 55 | t.cs_on = 0; |
@@ -74,7 +81,16 @@ static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | |||
74 | GPMC_CONFIG1_DEVICESIZE_16 | | 81 | GPMC_CONFIG1_DEVICESIZE_16 | |
75 | GPMC_CONFIG1_MUXADDDATA); | 82 | GPMC_CONFIG1_MUXADDDATA); |
76 | 83 | ||
77 | return gpmc_cs_set_timings(cs, &t); | 84 | err = gpmc_cs_set_timings(cs, &t); |
85 | if (err) | ||
86 | return err; | ||
87 | |||
88 | /* Ensure sync read and sync write are disabled */ | ||
89 | reg = readw(onenand_base + ONENAND_REG_SYS_CFG1); | ||
90 | reg &= ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE; | ||
91 | writew(reg, onenand_base + ONENAND_REG_SYS_CFG1); | ||
92 | |||
93 | return 0; | ||
78 | } | 94 | } |
79 | 95 | ||
80 | static void set_onenand_cfg(void __iomem *onenand_base, int latency, | 96 | static void set_onenand_cfg(void __iomem *onenand_base, int latency, |
@@ -124,7 +140,8 @@ static int omap2_onenand_set_sync_mode(struct omap_onenand_platform_data *cfg, | |||
124 | } else if (cfg->flags & ONENAND_SYNC_READWRITE) { | 140 | } else if (cfg->flags & ONENAND_SYNC_READWRITE) { |
125 | sync_read = 1; | 141 | sync_read = 1; |
126 | sync_write = 1; | 142 | sync_write = 1; |
127 | } | 143 | } else |
144 | return omap2_onenand_set_async_mode(cs, onenand_base); | ||
128 | 145 | ||
129 | if (!freq) { | 146 | if (!freq) { |
130 | /* Very first call freq is not known */ | 147 | /* Very first call freq is not known */ |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 458990e20c60..a98201cc265c 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -48,6 +48,28 @@ int omap_chip_is(struct omap_chip_id oci) | |||
48 | } | 48 | } |
49 | EXPORT_SYMBOL(omap_chip_is); | 49 | EXPORT_SYMBOL(omap_chip_is); |
50 | 50 | ||
51 | int omap_type(void) | ||
52 | { | ||
53 | u32 val = 0; | ||
54 | |||
55 | if (cpu_is_omap24xx()) | ||
56 | val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); | ||
57 | else if (cpu_is_omap34xx()) | ||
58 | val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); | ||
59 | else { | ||
60 | pr_err("Cannot detect omap type!\n"); | ||
61 | goto out; | ||
62 | } | ||
63 | |||
64 | val &= OMAP2_DEVICETYPE_MASK; | ||
65 | val >>= 8; | ||
66 | |||
67 | out: | ||
68 | return val; | ||
69 | } | ||
70 | EXPORT_SYMBOL(omap_type); | ||
71 | |||
72 | |||
51 | /*----------------------------------------------------------------------------*/ | 73 | /*----------------------------------------------------------------------------*/ |
52 | 74 | ||
53 | #define OMAP_TAP_IDCODE 0x0204 | 75 | #define OMAP_TAP_IDCODE 0x0204 |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 32afd9448216..e9b9bcb19b4e 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/clk.h> | ||
24 | 25 | ||
25 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
26 | 27 | ||
@@ -241,14 +242,50 @@ void __init omap2_map_common_io(void) | |||
241 | omapfb_reserve_sdram(); | 242 | omapfb_reserve_sdram(); |
242 | } | 243 | } |
243 | 244 | ||
244 | void __init omap2_init_common_hw(struct omap_sdrc_params *sp) | 245 | /* |
246 | * omap2_init_reprogram_sdrc - reprogram SDRC timing parameters | ||
247 | * | ||
248 | * Sets the CORE DPLL3 M2 divider to the same value that it's at | ||
249 | * currently. This has the effect of setting the SDRC SDRAM AC timing | ||
250 | * registers to the values currently defined by the kernel. Currently | ||
251 | * only defined for OMAP3; will return 0 if called on OMAP2. Returns | ||
252 | * -EINVAL if the dpll3_m2_ck cannot be found, 0 if called on OMAP2, | ||
253 | * or passes along the return value of clk_set_rate(). | ||
254 | */ | ||
255 | static int __init _omap2_init_reprogram_sdrc(void) | ||
256 | { | ||
257 | struct clk *dpll3_m2_ck; | ||
258 | int v = -EINVAL; | ||
259 | long rate; | ||
260 | |||
261 | if (!cpu_is_omap34xx()) | ||
262 | return 0; | ||
263 | |||
264 | dpll3_m2_ck = clk_get(NULL, "dpll3_m2_ck"); | ||
265 | if (!dpll3_m2_ck) | ||
266 | return -EINVAL; | ||
267 | |||
268 | rate = clk_get_rate(dpll3_m2_ck); | ||
269 | pr_info("Reprogramming SDRC clock to %ld Hz\n", rate); | ||
270 | v = clk_set_rate(dpll3_m2_ck, rate); | ||
271 | if (v) | ||
272 | pr_err("dpll3_m2_clk rate change failed: %d\n", v); | ||
273 | |||
274 | clk_put(dpll3_m2_ck); | ||
275 | |||
276 | return v; | ||
277 | } | ||
278 | |||
279 | void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, | ||
280 | struct omap_sdrc_params *sdrc_cs1) | ||
245 | { | 281 | { |
246 | omap2_mux_init(); | 282 | omap2_mux_init(); |
247 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ | 283 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ |
248 | pwrdm_init(powerdomains_omap); | 284 | pwrdm_init(powerdomains_omap); |
249 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); | 285 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); |
250 | omap2_clk_init(); | 286 | omap2_clk_init(); |
251 | omap2_sdrc_init(sp); | 287 | omap2_sdrc_init(sdrc_cs0, sdrc_cs1); |
288 | _omap2_init_reprogram_sdrc(); | ||
252 | #endif | 289 | #endif |
253 | gpmc_init(); | 290 | gpmc_init(); |
254 | } | 291 | } |
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index fd5b8a5925cc..6f71f3730c97 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c | |||
@@ -282,12 +282,12 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) | |||
282 | return -ENOMEM; | 282 | return -ENOMEM; |
283 | 283 | ||
284 | /* DSP or IVA2 IRQ */ | 284 | /* DSP or IVA2 IRQ */ |
285 | mbox_dsp_info.irq = platform_get_irq(pdev, 0); | 285 | ret = platform_get_irq(pdev, 0); |
286 | if (mbox_dsp_info.irq < 0) { | 286 | if (ret < 0) { |
287 | dev_err(&pdev->dev, "invalid irq resource\n"); | 287 | dev_err(&pdev->dev, "invalid irq resource\n"); |
288 | ret = -ENODEV; | ||
289 | goto err_dsp; | 288 | goto err_dsp; |
290 | } | 289 | } |
290 | mbox_dsp_info.irq = ret; | ||
291 | 291 | ||
292 | ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); | 292 | ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); |
293 | if (ret) | 293 | if (ret) |
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index a5c0f0435cd6..99b6e1546311 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <mach/irqs.h> | 20 | #include <mach/irqs.h> |
21 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
22 | #include <mach/irqs.h> | ||
23 | #include <mach/mux.h> | 22 | #include <mach/mux.h> |
24 | #include <mach/cpu.h> | 23 | #include <mach/cpu.h> |
25 | #include <mach/mcbsp.h> | 24 | #include <mach/mcbsp.h> |
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 9756a878fd90..3c04c2f1b23f 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c | |||
@@ -119,6 +119,7 @@ static int twl_mmc_late_init(struct device *dev) | |||
119 | if (i != 0) | 119 | if (i != 0) |
120 | break; | 120 | break; |
121 | ret = PTR_ERR(reg); | 121 | ret = PTR_ERR(reg); |
122 | hsmmc[i].vcc = NULL; | ||
122 | goto err; | 123 | goto err; |
123 | } | 124 | } |
124 | hsmmc[i].vcc = reg; | 125 | hsmmc[i].vcc = reg; |
@@ -165,8 +166,13 @@ done: | |||
165 | static void twl_mmc_cleanup(struct device *dev) | 166 | static void twl_mmc_cleanup(struct device *dev) |
166 | { | 167 | { |
167 | struct omap_mmc_platform_data *mmc = dev->platform_data; | 168 | struct omap_mmc_platform_data *mmc = dev->platform_data; |
169 | int i; | ||
168 | 170 | ||
169 | gpio_free(mmc->slots[0].switch_pin); | 171 | gpio_free(mmc->slots[0].switch_pin); |
172 | for(i = 0; i < ARRAY_SIZE(hsmmc); i++) { | ||
173 | regulator_put(hsmmc[i].vcc); | ||
174 | regulator_put(hsmmc[i].vcc_aux); | ||
175 | } | ||
170 | } | 176 | } |
171 | 177 | ||
172 | #ifdef CONFIG_PM | 178 | #ifdef CONFIG_PM |
@@ -263,8 +269,19 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, | |||
263 | static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int vdd) | 269 | static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int vdd) |
264 | { | 270 | { |
265 | int ret = 0; | 271 | int ret = 0; |
266 | struct twl_mmc_controller *c = &hsmmc[1]; | 272 | struct twl_mmc_controller *c = NULL; |
267 | struct omap_mmc_platform_data *mmc = dev->platform_data; | 273 | struct omap_mmc_platform_data *mmc = dev->platform_data; |
274 | int i; | ||
275 | |||
276 | for (i = 1; i < ARRAY_SIZE(hsmmc); i++) { | ||
277 | if (mmc == hsmmc[i].mmc) { | ||
278 | c = &hsmmc[i]; | ||
279 | break; | ||
280 | } | ||
281 | } | ||
282 | |||
283 | if (c == NULL) | ||
284 | return -ENODEV; | ||
268 | 285 | ||
269 | /* If we don't see a Vcc regulator, assume it's a fixed | 286 | /* If we don't see a Vcc regulator, assume it's a fixed |
270 | * voltage always-on regulator. | 287 | * voltage always-on regulator. |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 026c4fc883a7..43d6b92b65f2 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -486,6 +486,12 @@ MUX_CFG_34XX("H19_34XX_GPIO164_OUT", 0x19c, | |||
486 | OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) | 486 | OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) |
487 | MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6, | 487 | MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6, |
488 | OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) | 488 | OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) |
489 | |||
490 | /* OMAP3 SDRC CKE signals to SDR/DDR ram chips */ | ||
491 | MUX_CFG_34XX("H16_34XX_SDRC_CKE0", 0x262, | ||
492 | OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT) | ||
493 | MUX_CFG_34XX("H17_34XX_SDRC_CKE1", 0x264, | ||
494 | OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT) | ||
489 | }; | 495 | }; |
490 | 496 | ||
491 | #define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins) | 497 | #define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins) |
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index f7b3baf76678..21201cd4117b 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -11,9 +11,6 @@ | |||
11 | #ifndef __ARCH_ARM_MACH_OMAP2_PM_H | 11 | #ifndef __ARCH_ARM_MACH_OMAP2_PM_H |
12 | #define __ARCH_ARM_MACH_OMAP2_PM_H | 12 | #define __ARCH_ARM_MACH_OMAP2_PM_H |
13 | 13 | ||
14 | extern int omap2_pm_init(void); | ||
15 | extern int omap3_pm_init(void); | ||
16 | |||
17 | #ifdef CONFIG_PM_DEBUG | 14 | #ifdef CONFIG_PM_DEBUG |
18 | extern void omap2_pm_dump(int mode, int resume, unsigned int us); | 15 | extern void omap2_pm_dump(int mode, int resume, unsigned int us); |
19 | extern int omap2_pm_debug; | 16 | extern int omap2_pm_debug; |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index db1025562fb0..528dbdc26e23 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -470,7 +470,7 @@ static void __init prcm_setup_regs(void) | |||
470 | WKUP_MOD, PM_WKEN); | 470 | WKUP_MOD, PM_WKEN); |
471 | } | 471 | } |
472 | 472 | ||
473 | int __init omap2_pm_init(void) | 473 | static int __init omap2_pm_init(void) |
474 | { | 474 | { |
475 | u32 l; | 475 | u32 l; |
476 | 476 | ||
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 841d4c5ed8be..488d595d8e4b 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -39,7 +39,9 @@ | |||
39 | struct power_state { | 39 | struct power_state { |
40 | struct powerdomain *pwrdm; | 40 | struct powerdomain *pwrdm; |
41 | u32 next_state; | 41 | u32 next_state; |
42 | #ifdef CONFIG_SUSPEND | ||
42 | u32 saved_state; | 43 | u32 saved_state; |
44 | #endif | ||
43 | struct list_head node; | 45 | struct list_head node; |
44 | }; | 46 | }; |
45 | 47 | ||
@@ -293,6 +295,9 @@ out: | |||
293 | local_irq_enable(); | 295 | local_irq_enable(); |
294 | } | 296 | } |
295 | 297 | ||
298 | #ifdef CONFIG_SUSPEND | ||
299 | static suspend_state_t suspend_state; | ||
300 | |||
296 | static int omap3_pm_prepare(void) | 301 | static int omap3_pm_prepare(void) |
297 | { | 302 | { |
298 | disable_hlt(); | 303 | disable_hlt(); |
@@ -321,7 +326,6 @@ static int omap3_pm_suspend(void) | |||
321 | restore: | 326 | restore: |
322 | /* Restore next_pwrsts */ | 327 | /* Restore next_pwrsts */ |
323 | list_for_each_entry(pwrst, &pwrst_list, node) { | 328 | list_for_each_entry(pwrst, &pwrst_list, node) { |
324 | set_pwrdm_state(pwrst->pwrdm, pwrst->saved_state); | ||
325 | state = pwrdm_read_prev_pwrst(pwrst->pwrdm); | 329 | state = pwrdm_read_prev_pwrst(pwrst->pwrdm); |
326 | if (state > pwrst->next_state) { | 330 | if (state > pwrst->next_state) { |
327 | printk(KERN_INFO "Powerdomain (%s) didn't enter " | 331 | printk(KERN_INFO "Powerdomain (%s) didn't enter " |
@@ -329,6 +333,7 @@ restore: | |||
329 | pwrst->pwrdm->name, pwrst->next_state); | 333 | pwrst->pwrdm->name, pwrst->next_state); |
330 | ret = -1; | 334 | ret = -1; |
331 | } | 335 | } |
336 | set_pwrdm_state(pwrst->pwrdm, pwrst->saved_state); | ||
332 | } | 337 | } |
333 | if (ret) | 338 | if (ret) |
334 | printk(KERN_ERR "Could not enter target state in pm_suspend\n"); | 339 | printk(KERN_ERR "Could not enter target state in pm_suspend\n"); |
@@ -339,11 +344,11 @@ restore: | |||
339 | return ret; | 344 | return ret; |
340 | } | 345 | } |
341 | 346 | ||
342 | static int omap3_pm_enter(suspend_state_t state) | 347 | static int omap3_pm_enter(suspend_state_t unused) |
343 | { | 348 | { |
344 | int ret = 0; | 349 | int ret = 0; |
345 | 350 | ||
346 | switch (state) { | 351 | switch (suspend_state) { |
347 | case PM_SUSPEND_STANDBY: | 352 | case PM_SUSPEND_STANDBY: |
348 | case PM_SUSPEND_MEM: | 353 | case PM_SUSPEND_MEM: |
349 | ret = omap3_pm_suspend(); | 354 | ret = omap3_pm_suspend(); |
@@ -360,12 +365,30 @@ static void omap3_pm_finish(void) | |||
360 | enable_hlt(); | 365 | enable_hlt(); |
361 | } | 366 | } |
362 | 367 | ||
368 | /* Hooks to enable / disable UART interrupts during suspend */ | ||
369 | static int omap3_pm_begin(suspend_state_t state) | ||
370 | { | ||
371 | suspend_state = state; | ||
372 | omap_uart_enable_irqs(0); | ||
373 | return 0; | ||
374 | } | ||
375 | |||
376 | static void omap3_pm_end(void) | ||
377 | { | ||
378 | suspend_state = PM_SUSPEND_ON; | ||
379 | omap_uart_enable_irqs(1); | ||
380 | return; | ||
381 | } | ||
382 | |||
363 | static struct platform_suspend_ops omap_pm_ops = { | 383 | static struct platform_suspend_ops omap_pm_ops = { |
384 | .begin = omap3_pm_begin, | ||
385 | .end = omap3_pm_end, | ||
364 | .prepare = omap3_pm_prepare, | 386 | .prepare = omap3_pm_prepare, |
365 | .enter = omap3_pm_enter, | 387 | .enter = omap3_pm_enter, |
366 | .finish = omap3_pm_finish, | 388 | .finish = omap3_pm_finish, |
367 | .valid = suspend_valid_only_mem, | 389 | .valid = suspend_valid_only_mem, |
368 | }; | 390 | }; |
391 | #endif /* CONFIG_SUSPEND */ | ||
369 | 392 | ||
370 | 393 | ||
371 | /** | 394 | /** |
@@ -613,6 +636,24 @@ static void __init prcm_setup_regs(void) | |||
613 | /* Clear any pending PRCM interrupts */ | 636 | /* Clear any pending PRCM interrupts */ |
614 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | 637 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); |
615 | 638 | ||
639 | /* Don't attach IVA interrupts */ | ||
640 | prm_write_mod_reg(0, WKUP_MOD, OMAP3430_PM_IVAGRPSEL); | ||
641 | prm_write_mod_reg(0, CORE_MOD, OMAP3430_PM_IVAGRPSEL1); | ||
642 | prm_write_mod_reg(0, CORE_MOD, OMAP3430ES2_PM_IVAGRPSEL3); | ||
643 | prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL); | ||
644 | |||
645 | /* Clear any pending 'reset' flags */ | ||
646 | prm_write_mod_reg(0xffffffff, MPU_MOD, RM_RSTST); | ||
647 | prm_write_mod_reg(0xffffffff, CORE_MOD, RM_RSTST); | ||
648 | prm_write_mod_reg(0xffffffff, OMAP3430_PER_MOD, RM_RSTST); | ||
649 | prm_write_mod_reg(0xffffffff, OMAP3430_EMU_MOD, RM_RSTST); | ||
650 | prm_write_mod_reg(0xffffffff, OMAP3430_NEON_MOD, RM_RSTST); | ||
651 | prm_write_mod_reg(0xffffffff, OMAP3430_DSS_MOD, RM_RSTST); | ||
652 | prm_write_mod_reg(0xffffffff, OMAP3430ES2_USBHOST_MOD, RM_RSTST); | ||
653 | |||
654 | /* Clear any pending PRCM interrupts */ | ||
655 | prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | ||
656 | |||
616 | omap3_iva_idle(); | 657 | omap3_iva_idle(); |
617 | omap3_d2d_idle(); | 658 | omap3_d2d_idle(); |
618 | } | 659 | } |
@@ -652,7 +693,7 @@ static int __init clkdms_setup(struct clockdomain *clkdm) | |||
652 | return 0; | 693 | return 0; |
653 | } | 694 | } |
654 | 695 | ||
655 | int __init omap3_pm_init(void) | 696 | static int __init omap3_pm_init(void) |
656 | { | 697 | { |
657 | struct power_state *pwrst, *tmp; | 698 | struct power_state *pwrst, *tmp; |
658 | int ret; | 699 | int ret; |
@@ -692,7 +733,9 @@ int __init omap3_pm_init(void) | |||
692 | _omap_sram_idle = omap_sram_push(omap34xx_cpu_suspend, | 733 | _omap_sram_idle = omap_sram_push(omap34xx_cpu_suspend, |
693 | omap34xx_cpu_suspend_sz); | 734 | omap34xx_cpu_suspend_sz); |
694 | 735 | ||
736 | #ifdef CONFIG_SUSPEND | ||
695 | suspend_set_ops(&omap_pm_ops); | 737 | suspend_set_ops(&omap_pm_ops); |
738 | #endif /* CONFIG_SUSPEND */ | ||
696 | 739 | ||
697 | pm_idle = omap3_pm_idle; | 740 | pm_idle = omap3_pm_idle; |
698 | 741 | ||
diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 73e2971b1757..983f1cb676be 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c | |||
@@ -1099,7 +1099,7 @@ int pwrdm_wait_transition(struct powerdomain *pwrdm) | |||
1099 | (c++ < PWRDM_TRANSITION_BAILOUT)) | 1099 | (c++ < PWRDM_TRANSITION_BAILOUT)) |
1100 | udelay(1); | 1100 | udelay(1); |
1101 | 1101 | ||
1102 | if (c >= PWRDM_TRANSITION_BAILOUT) { | 1102 | if (c > PWRDM_TRANSITION_BAILOUT) { |
1103 | printk(KERN_ERR "powerdomain: waited too long for " | 1103 | printk(KERN_ERR "powerdomain: waited too long for " |
1104 | "powerdomain %s to complete transition\n", pwrdm->name); | 1104 | "powerdomain %s to complete transition\n", pwrdm->name); |
1105 | return -EAGAIN; | 1105 | return -EAGAIN; |
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index f945156d5585..ced555a4cd1a 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/delay.h> | ||
20 | 21 | ||
21 | #include <mach/common.h> | 22 | #include <mach/common.h> |
22 | #include <mach/prcm.h> | 23 | #include <mach/prcm.h> |
@@ -28,6 +29,8 @@ | |||
28 | static void __iomem *prm_base; | 29 | static void __iomem *prm_base; |
29 | static void __iomem *cm_base; | 30 | static void __iomem *cm_base; |
30 | 31 | ||
32 | #define MAX_MODULE_ENABLE_WAIT 100000 | ||
33 | |||
31 | u32 omap_prcm_get_reset_sources(void) | 34 | u32 omap_prcm_get_reset_sources(void) |
32 | { | 35 | { |
33 | /* XXX This presumably needs modification for 34XX */ | 36 | /* XXX This presumably needs modification for 34XX */ |
@@ -120,6 +123,46 @@ u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx) | |||
120 | } | 123 | } |
121 | EXPORT_SYMBOL(cm_rmw_mod_reg_bits); | 124 | EXPORT_SYMBOL(cm_rmw_mod_reg_bits); |
122 | 125 | ||
126 | /** | ||
127 | * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness | ||
128 | * @reg: physical address of module IDLEST register | ||
129 | * @mask: value to mask against to determine if the module is active | ||
130 | * @name: name of the clock (for printk) | ||
131 | * | ||
132 | * Returns 1 if the module indicated readiness in time, or 0 if it | ||
133 | * failed to enable in roughly MAX_MODULE_ENABLE_WAIT microseconds. | ||
134 | */ | ||
135 | int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, const char *name) | ||
136 | { | ||
137 | int i = 0; | ||
138 | int ena = 0; | ||
139 | |||
140 | /* | ||
141 | * 24xx uses 0 to indicate not ready, and 1 to indicate ready. | ||
142 | * 34xx reverses this, just to keep us on our toes | ||
143 | */ | ||
144 | if (cpu_is_omap24xx()) | ||
145 | ena = mask; | ||
146 | else if (cpu_is_omap34xx()) | ||
147 | ena = 0; | ||
148 | else | ||
149 | BUG(); | ||
150 | |||
151 | /* Wait for lock */ | ||
152 | while (((__raw_readl(reg) & mask) != ena) && | ||
153 | (i++ < MAX_MODULE_ENABLE_WAIT)) | ||
154 | udelay(1); | ||
155 | |||
156 | if (i < MAX_MODULE_ENABLE_WAIT) | ||
157 | pr_debug("cm: Module associated with clock %s ready after %d " | ||
158 | "loops\n", name, i); | ||
159 | else | ||
160 | pr_err("cm: Module associated with clock %s didn't enable in " | ||
161 | "%d tries\n", name, MAX_MODULE_ENABLE_WAIT); | ||
162 | |||
163 | return (i < MAX_MODULE_ENABLE_WAIT) ? 1 : 0; | ||
164 | }; | ||
165 | |||
123 | void __init omap2_set_globals_prcm(struct omap_globals *omap2_globals) | 166 | void __init omap2_set_globals_prcm(struct omap_globals *omap2_globals) |
124 | { | 167 | { |
125 | prm_base = omap2_globals->prm; | 168 | prm_base = omap2_globals->prm; |
diff --git a/arch/arm/mach-omap2/sdrc.c b/arch/arm/mach-omap2/sdrc.c index 2045441e8385..9e3bd4fa7810 100644 --- a/arch/arm/mach-omap2/sdrc.c +++ b/arch/arm/mach-omap2/sdrc.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <mach/sdrc.h> | 32 | #include <mach/sdrc.h> |
33 | #include "sdrc.h" | 33 | #include "sdrc.h" |
34 | 34 | ||
35 | static struct omap_sdrc_params *sdrc_init_params; | 35 | static struct omap_sdrc_params *sdrc_init_params_cs0, *sdrc_init_params_cs1; |
36 | 36 | ||
37 | void __iomem *omap2_sdrc_base; | 37 | void __iomem *omap2_sdrc_base; |
38 | void __iomem *omap2_sms_base; | 38 | void __iomem *omap2_sms_base; |
@@ -45,33 +45,49 @@ void __iomem *omap2_sms_base; | |||
45 | /** | 45 | /** |
46 | * omap2_sdrc_get_params - return SDRC register values for a given clock rate | 46 | * omap2_sdrc_get_params - return SDRC register values for a given clock rate |
47 | * @r: SDRC clock rate (in Hz) | 47 | * @r: SDRC clock rate (in Hz) |
48 | * @sdrc_cs0: chip select 0 ram timings ** | ||
49 | * @sdrc_cs1: chip select 1 ram timings ** | ||
48 | * | 50 | * |
49 | * Return pre-calculated values for the SDRC_ACTIM_CTRLA, | 51 | * Return pre-calculated values for the SDRC_ACTIM_CTRLA, |
50 | * SDRC_ACTIM_CTRLB, SDRC_RFR_CTRL, and SDRC_MR registers, for a given | 52 | * SDRC_ACTIM_CTRLB, SDRC_RFR_CTRL and SDRC_MR registers in sdrc_cs[01] |
51 | * SDRC clock rate 'r'. These parameters control various timing | 53 | * structs,for a given SDRC clock rate 'r'. |
52 | * delays in the SDRAM controller that are expressed in terms of the | 54 | * These parameters control various timing delays in the SDRAM controller |
53 | * number of SDRC clock cycles to wait; hence the clock rate | 55 | * that are expressed in terms of the number of SDRC clock cycles to |
54 | * dependency. Note that sdrc_init_params must be sorted rate | 56 | * wait; hence the clock rate dependency. |
55 | * descending. Also assumes that both chip-selects use the same | 57 | * |
56 | * timing parameters. Returns a struct omap_sdrc_params * upon | 58 | * Supports 2 different timing parameters for both chip selects. |
57 | * success, or NULL upon failure. | 59 | * |
60 | * Note 1: the sdrc_init_params_cs[01] must be sorted rate descending. | ||
61 | * Note 2: If sdrc_init_params_cs_1 is not NULL it must be of same size | ||
62 | * as sdrc_init_params_cs_0. | ||
63 | * | ||
64 | * Fills in the struct omap_sdrc_params * for each chip select. | ||
65 | * Returns 0 upon success or -1 upon failure. | ||
58 | */ | 66 | */ |
59 | struct omap_sdrc_params *omap2_sdrc_get_params(unsigned long r) | 67 | int omap2_sdrc_get_params(unsigned long r, |
68 | struct omap_sdrc_params **sdrc_cs0, | ||
69 | struct omap_sdrc_params **sdrc_cs1) | ||
60 | { | 70 | { |
61 | struct omap_sdrc_params *sp; | 71 | struct omap_sdrc_params *sp0, *sp1; |
62 | 72 | ||
63 | if (!sdrc_init_params) | 73 | if (!sdrc_init_params_cs0) |
64 | return NULL; | 74 | return -1; |
65 | 75 | ||
66 | sp = sdrc_init_params; | 76 | sp0 = sdrc_init_params_cs0; |
77 | sp1 = sdrc_init_params_cs1; | ||
67 | 78 | ||
68 | while (sp->rate && sp->rate != r) | 79 | while (sp0->rate && sp0->rate != r) { |
69 | sp++; | 80 | sp0++; |
81 | if (sdrc_init_params_cs1) | ||
82 | sp1++; | ||
83 | } | ||
70 | 84 | ||
71 | if (!sp->rate) | 85 | if (!sp0->rate) |
72 | return NULL; | 86 | return -1; |
73 | 87 | ||
74 | return sp; | 88 | *sdrc_cs0 = sp0; |
89 | *sdrc_cs1 = sp1; | ||
90 | return 0; | ||
75 | } | 91 | } |
76 | 92 | ||
77 | 93 | ||
@@ -83,13 +99,15 @@ void __init omap2_set_globals_sdrc(struct omap_globals *omap2_globals) | |||
83 | 99 | ||
84 | /** | 100 | /** |
85 | * omap2_sdrc_init - initialize SMS, SDRC devices on boot | 101 | * omap2_sdrc_init - initialize SMS, SDRC devices on boot |
86 | * @sp: pointer to a null-terminated list of struct omap_sdrc_params | 102 | * @sdrc_cs[01]: pointers to a null-terminated list of struct omap_sdrc_params |
103 | * Support for 2 chip selects timings | ||
87 | * | 104 | * |
88 | * Turn on smart idle modes for SDRAM scheduler and controller. | 105 | * Turn on smart idle modes for SDRAM scheduler and controller. |
89 | * Program a known-good configuration for the SDRC to deal with buggy | 106 | * Program a known-good configuration for the SDRC to deal with buggy |
90 | * bootloaders. | 107 | * bootloaders. |
91 | */ | 108 | */ |
92 | void __init omap2_sdrc_init(struct omap_sdrc_params *sp) | 109 | void __init omap2_sdrc_init(struct omap_sdrc_params *sdrc_cs0, |
110 | struct omap_sdrc_params *sdrc_cs1) | ||
93 | { | 111 | { |
94 | u32 l; | 112 | u32 l; |
95 | 113 | ||
@@ -103,11 +121,15 @@ void __init omap2_sdrc_init(struct omap_sdrc_params *sp) | |||
103 | l |= (0x2 << 3); | 121 | l |= (0x2 << 3); |
104 | sdrc_write_reg(l, SDRC_SYSCONFIG); | 122 | sdrc_write_reg(l, SDRC_SYSCONFIG); |
105 | 123 | ||
106 | sdrc_init_params = sp; | 124 | sdrc_init_params_cs0 = sdrc_cs0; |
125 | sdrc_init_params_cs1 = sdrc_cs1; | ||
107 | 126 | ||
108 | /* XXX Enable SRFRONIDLEREQ here also? */ | 127 | /* XXX Enable SRFRONIDLEREQ here also? */ |
128 | /* | ||
129 | * PWDENA should not be set due to 34xx erratum 1.150 - PWDENA | ||
130 | * can cause random memory corruption | ||
131 | */ | ||
109 | l = (1 << SDRC_POWER_EXTCLKDIS_SHIFT) | | 132 | l = (1 << SDRC_POWER_EXTCLKDIS_SHIFT) | |
110 | (1 << SDRC_POWER_PWDENA_SHIFT) | | ||
111 | (1 << SDRC_POWER_PAGEPOLICY_SHIFT); | 133 | (1 << SDRC_POWER_PAGEPOLICY_SHIFT); |
112 | sdrc_write_reg(l, SDRC_POWER); | 134 | sdrc_write_reg(l, SDRC_POWER); |
113 | } | 135 | } |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index b094c15bfe47..a7421a50410b 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -54,6 +54,7 @@ struct omap_uart_state { | |||
54 | 54 | ||
55 | struct plat_serial8250_port *p; | 55 | struct plat_serial8250_port *p; |
56 | struct list_head node; | 56 | struct list_head node; |
57 | struct platform_device pdev; | ||
57 | 58 | ||
58 | #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) | 59 | #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) |
59 | int context_valid; | 60 | int context_valid; |
@@ -68,10 +69,9 @@ struct omap_uart_state { | |||
68 | #endif | 69 | #endif |
69 | }; | 70 | }; |
70 | 71 | ||
71 | static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS]; | ||
72 | static LIST_HEAD(uart_list); | 72 | static LIST_HEAD(uart_list); |
73 | 73 | ||
74 | static struct plat_serial8250_port serial_platform_data[] = { | 74 | static struct plat_serial8250_port serial_platform_data0[] = { |
75 | { | 75 | { |
76 | .membase = IO_ADDRESS(OMAP_UART1_BASE), | 76 | .membase = IO_ADDRESS(OMAP_UART1_BASE), |
77 | .mapbase = OMAP_UART1_BASE, | 77 | .mapbase = OMAP_UART1_BASE, |
@@ -81,6 +81,12 @@ static struct plat_serial8250_port serial_platform_data[] = { | |||
81 | .regshift = 2, | 81 | .regshift = 2, |
82 | .uartclk = OMAP24XX_BASE_BAUD * 16, | 82 | .uartclk = OMAP24XX_BASE_BAUD * 16, |
83 | }, { | 83 | }, { |
84 | .flags = 0 | ||
85 | } | ||
86 | }; | ||
87 | |||
88 | static struct plat_serial8250_port serial_platform_data1[] = { | ||
89 | { | ||
84 | .membase = IO_ADDRESS(OMAP_UART2_BASE), | 90 | .membase = IO_ADDRESS(OMAP_UART2_BASE), |
85 | .mapbase = OMAP_UART2_BASE, | 91 | .mapbase = OMAP_UART2_BASE, |
86 | .irq = 73, | 92 | .irq = 73, |
@@ -89,6 +95,12 @@ static struct plat_serial8250_port serial_platform_data[] = { | |||
89 | .regshift = 2, | 95 | .regshift = 2, |
90 | .uartclk = OMAP24XX_BASE_BAUD * 16, | 96 | .uartclk = OMAP24XX_BASE_BAUD * 16, |
91 | }, { | 97 | }, { |
98 | .flags = 0 | ||
99 | } | ||
100 | }; | ||
101 | |||
102 | static struct plat_serial8250_port serial_platform_data2[] = { | ||
103 | { | ||
92 | .membase = IO_ADDRESS(OMAP_UART3_BASE), | 104 | .membase = IO_ADDRESS(OMAP_UART3_BASE), |
93 | .mapbase = OMAP_UART3_BASE, | 105 | .mapbase = OMAP_UART3_BASE, |
94 | .irq = 74, | 106 | .irq = 74, |
@@ -217,6 +229,40 @@ static inline void omap_uart_disable_clocks(struct omap_uart_state *uart) | |||
217 | clk_disable(uart->fck); | 229 | clk_disable(uart->fck); |
218 | } | 230 | } |
219 | 231 | ||
232 | static void omap_uart_enable_wakeup(struct omap_uart_state *uart) | ||
233 | { | ||
234 | /* Set wake-enable bit */ | ||
235 | if (uart->wk_en && uart->wk_mask) { | ||
236 | u32 v = __raw_readl(uart->wk_en); | ||
237 | v |= uart->wk_mask; | ||
238 | __raw_writel(v, uart->wk_en); | ||
239 | } | ||
240 | |||
241 | /* Ensure IOPAD wake-enables are set */ | ||
242 | if (cpu_is_omap34xx() && uart->padconf) { | ||
243 | u16 v = omap_ctrl_readw(uart->padconf); | ||
244 | v |= OMAP3_PADCONF_WAKEUPENABLE0; | ||
245 | omap_ctrl_writew(v, uart->padconf); | ||
246 | } | ||
247 | } | ||
248 | |||
249 | static void omap_uart_disable_wakeup(struct omap_uart_state *uart) | ||
250 | { | ||
251 | /* Clear wake-enable bit */ | ||
252 | if (uart->wk_en && uart->wk_mask) { | ||
253 | u32 v = __raw_readl(uart->wk_en); | ||
254 | v &= ~uart->wk_mask; | ||
255 | __raw_writel(v, uart->wk_en); | ||
256 | } | ||
257 | |||
258 | /* Ensure IOPAD wake-enables are cleared */ | ||
259 | if (cpu_is_omap34xx() && uart->padconf) { | ||
260 | u16 v = omap_ctrl_readw(uart->padconf); | ||
261 | v &= ~OMAP3_PADCONF_WAKEUPENABLE0; | ||
262 | omap_ctrl_writew(v, uart->padconf); | ||
263 | } | ||
264 | } | ||
265 | |||
220 | static void omap_uart_smart_idle_enable(struct omap_uart_state *uart, | 266 | static void omap_uart_smart_idle_enable(struct omap_uart_state *uart, |
221 | int enable) | 267 | int enable) |
222 | { | 268 | { |
@@ -246,6 +292,11 @@ static void omap_uart_block_sleep(struct omap_uart_state *uart) | |||
246 | 292 | ||
247 | static void omap_uart_allow_sleep(struct omap_uart_state *uart) | 293 | static void omap_uart_allow_sleep(struct omap_uart_state *uart) |
248 | { | 294 | { |
295 | if (device_may_wakeup(&uart->pdev.dev)) | ||
296 | omap_uart_enable_wakeup(uart); | ||
297 | else | ||
298 | omap_uart_disable_wakeup(uart); | ||
299 | |||
249 | if (!uart->clocked) | 300 | if (!uart->clocked) |
250 | return; | 301 | return; |
251 | 302 | ||
@@ -292,7 +343,6 @@ void omap_uart_resume_idle(int num) | |||
292 | /* Check for normal UART wakeup */ | 343 | /* Check for normal UART wakeup */ |
293 | if (__raw_readl(uart->wk_st) & uart->wk_mask) | 344 | if (__raw_readl(uart->wk_st) & uart->wk_mask) |
294 | omap_uart_block_sleep(uart); | 345 | omap_uart_block_sleep(uart); |
295 | |||
296 | return; | 346 | return; |
297 | } | 347 | } |
298 | } | 348 | } |
@@ -346,16 +396,13 @@ static irqreturn_t omap_uart_interrupt(int irq, void *dev_id) | |||
346 | return IRQ_NONE; | 396 | return IRQ_NONE; |
347 | } | 397 | } |
348 | 398 | ||
349 | static u32 sleep_timeout = DEFAULT_TIMEOUT; | ||
350 | |||
351 | static void omap_uart_idle_init(struct omap_uart_state *uart) | 399 | static void omap_uart_idle_init(struct omap_uart_state *uart) |
352 | { | 400 | { |
353 | u32 v; | ||
354 | struct plat_serial8250_port *p = uart->p; | 401 | struct plat_serial8250_port *p = uart->p; |
355 | int ret; | 402 | int ret; |
356 | 403 | ||
357 | uart->can_sleep = 0; | 404 | uart->can_sleep = 0; |
358 | uart->timeout = sleep_timeout; | 405 | uart->timeout = DEFAULT_TIMEOUT; |
359 | setup_timer(&uart->timer, omap_uart_idle_timer, | 406 | setup_timer(&uart->timer, omap_uart_idle_timer, |
360 | (unsigned long) uart); | 407 | (unsigned long) uart); |
361 | mod_timer(&uart->timer, jiffies + uart->timeout); | 408 | mod_timer(&uart->timer, jiffies + uart->timeout); |
@@ -413,76 +460,101 @@ static void omap_uart_idle_init(struct omap_uart_state *uart) | |||
413 | uart->padconf = 0; | 460 | uart->padconf = 0; |
414 | } | 461 | } |
415 | 462 | ||
416 | /* Set wake-enable bit */ | ||
417 | if (uart->wk_en && uart->wk_mask) { | ||
418 | v = __raw_readl(uart->wk_en); | ||
419 | v |= uart->wk_mask; | ||
420 | __raw_writel(v, uart->wk_en); | ||
421 | } | ||
422 | |||
423 | /* Ensure IOPAD wake-enables are set */ | ||
424 | if (cpu_is_omap34xx() && uart->padconf) { | ||
425 | u16 v; | ||
426 | |||
427 | v = omap_ctrl_readw(uart->padconf); | ||
428 | v |= OMAP3_PADCONF_WAKEUPENABLE0; | ||
429 | omap_ctrl_writew(v, uart->padconf); | ||
430 | } | ||
431 | |||
432 | p->flags |= UPF_SHARE_IRQ; | 463 | p->flags |= UPF_SHARE_IRQ; |
433 | ret = request_irq(p->irq, omap_uart_interrupt, IRQF_SHARED, | 464 | ret = request_irq(p->irq, omap_uart_interrupt, IRQF_SHARED, |
434 | "serial idle", (void *)uart); | 465 | "serial idle", (void *)uart); |
435 | WARN_ON(ret); | 466 | WARN_ON(ret); |
436 | } | 467 | } |
437 | 468 | ||
438 | static ssize_t sleep_timeout_show(struct kobject *kobj, | 469 | void omap_uart_enable_irqs(int enable) |
439 | struct kobj_attribute *attr, | 470 | { |
471 | int ret; | ||
472 | struct omap_uart_state *uart; | ||
473 | |||
474 | list_for_each_entry(uart, &uart_list, node) { | ||
475 | if (enable) | ||
476 | ret = request_irq(uart->p->irq, omap_uart_interrupt, | ||
477 | IRQF_SHARED, "serial idle", (void *)uart); | ||
478 | else | ||
479 | free_irq(uart->p->irq, (void *)uart); | ||
480 | } | ||
481 | } | ||
482 | |||
483 | static ssize_t sleep_timeout_show(struct device *dev, | ||
484 | struct device_attribute *attr, | ||
440 | char *buf) | 485 | char *buf) |
441 | { | 486 | { |
442 | return sprintf(buf, "%u\n", sleep_timeout / HZ); | 487 | struct platform_device *pdev = container_of(dev, |
488 | struct platform_device, dev); | ||
489 | struct omap_uart_state *uart = container_of(pdev, | ||
490 | struct omap_uart_state, pdev); | ||
491 | |||
492 | return sprintf(buf, "%u\n", uart->timeout / HZ); | ||
443 | } | 493 | } |
444 | 494 | ||
445 | static ssize_t sleep_timeout_store(struct kobject *kobj, | 495 | static ssize_t sleep_timeout_store(struct device *dev, |
446 | struct kobj_attribute *attr, | 496 | struct device_attribute *attr, |
447 | const char *buf, size_t n) | 497 | const char *buf, size_t n) |
448 | { | 498 | { |
449 | struct omap_uart_state *uart; | 499 | struct platform_device *pdev = container_of(dev, |
500 | struct platform_device, dev); | ||
501 | struct omap_uart_state *uart = container_of(pdev, | ||
502 | struct omap_uart_state, pdev); | ||
450 | unsigned int value; | 503 | unsigned int value; |
451 | 504 | ||
452 | if (sscanf(buf, "%u", &value) != 1) { | 505 | if (sscanf(buf, "%u", &value) != 1) { |
453 | printk(KERN_ERR "sleep_timeout_store: Invalid value\n"); | 506 | printk(KERN_ERR "sleep_timeout_store: Invalid value\n"); |
454 | return -EINVAL; | 507 | return -EINVAL; |
455 | } | 508 | } |
456 | sleep_timeout = value * HZ; | 509 | |
457 | list_for_each_entry(uart, &uart_list, node) { | 510 | uart->timeout = value * HZ; |
458 | uart->timeout = sleep_timeout; | 511 | if (uart->timeout) |
459 | if (uart->timeout) | 512 | mod_timer(&uart->timer, jiffies + uart->timeout); |
460 | mod_timer(&uart->timer, jiffies + uart->timeout); | 513 | else |
461 | else | 514 | /* A zero value means disable timeout feature */ |
462 | /* A zero value means disable timeout feature */ | 515 | omap_uart_block_sleep(uart); |
463 | omap_uart_block_sleep(uart); | 516 | |
464 | } | ||
465 | return n; | 517 | return n; |
466 | } | 518 | } |
467 | 519 | ||
468 | static struct kobj_attribute sleep_timeout_attr = | 520 | DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show, sleep_timeout_store); |
469 | __ATTR(sleep_timeout, 0644, sleep_timeout_show, sleep_timeout_store); | 521 | #define DEV_CREATE_FILE(dev, attr) WARN_ON(device_create_file(dev, attr)) |
470 | |||
471 | #else | 522 | #else |
472 | static inline void omap_uart_idle_init(struct omap_uart_state *uart) {} | 523 | static inline void omap_uart_idle_init(struct omap_uart_state *uart) {} |
524 | #define DEV_CREATE_FILE(dev, attr) | ||
473 | #endif /* CONFIG_PM */ | 525 | #endif /* CONFIG_PM */ |
474 | 526 | ||
475 | static struct platform_device serial_device = { | 527 | static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = { |
476 | .name = "serial8250", | 528 | { |
477 | .id = PLAT8250_DEV_PLATFORM, | 529 | .pdev = { |
478 | .dev = { | 530 | .name = "serial8250", |
479 | .platform_data = serial_platform_data, | 531 | .id = PLAT8250_DEV_PLATFORM, |
532 | .dev = { | ||
533 | .platform_data = serial_platform_data0, | ||
534 | }, | ||
535 | }, | ||
536 | }, { | ||
537 | .pdev = { | ||
538 | .name = "serial8250", | ||
539 | .id = PLAT8250_DEV_PLATFORM1, | ||
540 | .dev = { | ||
541 | .platform_data = serial_platform_data1, | ||
542 | }, | ||
543 | }, | ||
544 | }, { | ||
545 | .pdev = { | ||
546 | .name = "serial8250", | ||
547 | .id = PLAT8250_DEV_PLATFORM2, | ||
548 | .dev = { | ||
549 | .platform_data = serial_platform_data2, | ||
550 | }, | ||
551 | }, | ||
480 | }, | 552 | }, |
481 | }; | 553 | }; |
482 | 554 | ||
483 | void __init omap_serial_init(void) | 555 | void __init omap_serial_init(void) |
484 | { | 556 | { |
485 | int i, err; | 557 | int i; |
486 | const struct omap_uart_config *info; | 558 | const struct omap_uart_config *info; |
487 | char name[16]; | 559 | char name[16]; |
488 | 560 | ||
@@ -496,14 +568,12 @@ void __init omap_serial_init(void) | |||
496 | 568 | ||
497 | if (info == NULL) | 569 | if (info == NULL) |
498 | return; | 570 | return; |
499 | if (cpu_is_omap44xx()) { | ||
500 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) | ||
501 | serial_platform_data[i].irq += 32; | ||
502 | } | ||
503 | 571 | ||
504 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { | 572 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { |
505 | struct plat_serial8250_port *p = serial_platform_data + i; | ||
506 | struct omap_uart_state *uart = &omap_uart[i]; | 573 | struct omap_uart_state *uart = &omap_uart[i]; |
574 | struct platform_device *pdev = &uart->pdev; | ||
575 | struct device *dev = &pdev->dev; | ||
576 | struct plat_serial8250_port *p = dev->platform_data; | ||
507 | 577 | ||
508 | if (!(info->enabled_uarts & (1 << i))) { | 578 | if (!(info->enabled_uarts & (1 << i))) { |
509 | p->membase = NULL; | 579 | p->membase = NULL; |
@@ -531,20 +601,21 @@ void __init omap_serial_init(void) | |||
531 | uart->num = i; | 601 | uart->num = i; |
532 | p->private_data = uart; | 602 | p->private_data = uart; |
533 | uart->p = p; | 603 | uart->p = p; |
534 | list_add(&uart->node, &uart_list); | 604 | list_add_tail(&uart->node, &uart_list); |
605 | |||
606 | if (cpu_is_omap44xx()) | ||
607 | p->irq += 32; | ||
535 | 608 | ||
536 | omap_uart_enable_clocks(uart); | 609 | omap_uart_enable_clocks(uart); |
537 | omap_uart_reset(uart); | 610 | omap_uart_reset(uart); |
538 | omap_uart_idle_init(uart); | 611 | omap_uart_idle_init(uart); |
539 | } | ||
540 | |||
541 | err = platform_device_register(&serial_device); | ||
542 | |||
543 | #ifdef CONFIG_PM | ||
544 | if (!err) | ||
545 | err = sysfs_create_file(&serial_device.dev.kobj, | ||
546 | &sleep_timeout_attr.attr); | ||
547 | #endif | ||
548 | 612 | ||
613 | if (WARN_ON(platform_device_register(pdev))) | ||
614 | continue; | ||
615 | if ((cpu_is_omap34xx() && uart->padconf) || | ||
616 | (uart->wk_en && uart->wk_mask)) { | ||
617 | device_init_wakeup(dev, true); | ||
618 | DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout); | ||
619 | } | ||
620 | } | ||
549 | } | 621 | } |
550 | |||
diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index c080c82521e1..82aa4a3d160c 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S | |||
@@ -3,13 +3,12 @@ | |||
3 | * | 3 | * |
4 | * Omap3 specific functions that need to be run in internal SRAM | 4 | * Omap3 specific functions that need to be run in internal SRAM |
5 | * | 5 | * |
6 | * (C) Copyright 2007 | 6 | * Copyright (C) 2004, 2007, 2008 Texas Instruments, Inc. |
7 | * Texas Instruments Inc. | 7 | * Copyright (C) 2008 Nokia Corporation |
8 | * Rajendra Nayak <rnayak@ti.com> | ||
9 | * | 8 | * |
10 | * (C) Copyright 2004 | 9 | * Rajendra Nayak <rnayak@ti.com> |
11 | * Texas Instruments, <www.ti.com> | ||
12 | * Richard Woodruff <r-woodruff2@ti.com> | 10 | * Richard Woodruff <r-woodruff2@ti.com> |
11 | * Paul Walmsley | ||
13 | * | 12 | * |
14 | * This program is free software; you can redistribute it and/or | 13 | * This program is free software; you can redistribute it and/or |
15 | * modify it under the terms of the GNU General Public License as | 14 | * modify it under the terms of the GNU General Public License as |
@@ -37,61 +36,141 @@ | |||
37 | 36 | ||
38 | .text | 37 | .text |
39 | 38 | ||
39 | /* r1 parameters */ | ||
40 | #define SDRC_NO_UNLOCK_DLL 0x0 | ||
41 | #define SDRC_UNLOCK_DLL 0x1 | ||
42 | |||
43 | /* SDRC_DLLA_CTRL bit settings */ | ||
44 | #define FIXEDDELAY_SHIFT 24 | ||
45 | #define FIXEDDELAY_MASK (0xff << FIXEDDELAY_SHIFT) | ||
46 | #define DLLIDLE_MASK 0x4 | ||
47 | |||
40 | /* | 48 | /* |
41 | * Change frequency of core dpll | 49 | * SDRC_DLLA_CTRL default values: TI hardware team indicates that |
42 | * r0 = sdrc_rfr_ctrl r1 = sdrc_actim_ctrla r2 = sdrc_actim_ctrlb r3 = M2 | 50 | * FIXEDDELAY should be initialized to 0xf. This apparently was |
43 | * r4 = Unlock SDRC DLL? (1 = yes, 0 = no) -- only unlock DLL for | 51 | * empirically determined during process testing, so no derivation |
52 | * was provided. | ||
53 | */ | ||
54 | #define FIXEDDELAY_DEFAULT (0x0f << FIXEDDELAY_SHIFT) | ||
55 | |||
56 | /* SDRC_DLLA_STATUS bit settings */ | ||
57 | #define LOCKSTATUS_MASK 0x4 | ||
58 | |||
59 | /* SDRC_POWER bit settings */ | ||
60 | #define SRFRONIDLEREQ_MASK 0x40 | ||
61 | |||
62 | /* CM_IDLEST1_CORE bit settings */ | ||
63 | #define ST_SDRC_MASK 0x2 | ||
64 | |||
65 | /* CM_ICLKEN1_CORE bit settings */ | ||
66 | #define EN_SDRC_MASK 0x2 | ||
67 | |||
68 | /* CM_CLKSEL1_PLL bit settings */ | ||
69 | #define CORE_DPLL_CLKOUT_DIV_SHIFT 0x1b | ||
70 | |||
71 | /* | ||
72 | * omap3_sram_configure_core_dpll - change DPLL3 M2 divider | ||
73 | * | ||
74 | * Params passed in registers: | ||
75 | * r0 = new M2 divider setting (only 1 and 2 supported right now) | ||
76 | * r1 = unlock SDRC DLL? (1 = yes, 0 = no). Only unlock DLL for | ||
44 | * SDRC rates < 83MHz | 77 | * SDRC rates < 83MHz |
78 | * r2 = number of MPU cycles to wait for SDRC to stabilize after | ||
79 | * reprogramming the SDRC when switching to a slower MPU speed | ||
80 | * r3 = increasing SDRC rate? (1 = yes, 0 = no) | ||
81 | * | ||
82 | * Params passed via the stack. The needed params will be copied in SRAM | ||
83 | * before use by the code in SRAM (SDRAM is not accessible during SDRC | ||
84 | * reconfiguration): | ||
85 | * new SDRC_RFR_CTRL_0 register contents | ||
86 | * new SDRC_ACTIM_CTRL_A_0 register contents | ||
87 | * new SDRC_ACTIM_CTRL_B_0 register contents | ||
88 | * new SDRC_MR_0 register value | ||
89 | * new SDRC_RFR_CTRL_1 register contents | ||
90 | * new SDRC_ACTIM_CTRL_A_1 register contents | ||
91 | * new SDRC_ACTIM_CTRL_B_1 register contents | ||
92 | * new SDRC_MR_1 register value | ||
93 | * | ||
94 | * If the param SDRC_RFR_CTRL_1 is 0, the parameters | ||
95 | * are not programmed into the SDRC CS1 registers | ||
45 | */ | 96 | */ |
46 | ENTRY(omap3_sram_configure_core_dpll) | 97 | ENTRY(omap3_sram_configure_core_dpll) |
47 | stmfd sp!, {r1-r12, lr} @ store regs to stack | 98 | stmfd sp!, {r1-r12, lr} @ store regs to stack |
48 | ldr r4, [sp, #52] @ pull extra args off the stack | 99 | |
100 | @ pull the extra args off the stack | ||
101 | @ and store them in SRAM | ||
102 | ldr r4, [sp, #52] | ||
103 | str r4, omap_sdrc_rfr_ctrl_0_val | ||
104 | ldr r4, [sp, #56] | ||
105 | str r4, omap_sdrc_actim_ctrl_a_0_val | ||
106 | ldr r4, [sp, #60] | ||
107 | str r4, omap_sdrc_actim_ctrl_b_0_val | ||
108 | ldr r4, [sp, #64] | ||
109 | str r4, omap_sdrc_mr_0_val | ||
110 | ldr r4, [sp, #68] | ||
111 | str r4, omap_sdrc_rfr_ctrl_1_val | ||
112 | cmp r4, #0 @ if SDRC_RFR_CTRL_1 is 0, | ||
113 | beq skip_cs1_params @ do not use cs1 params | ||
114 | ldr r4, [sp, #72] | ||
115 | str r4, omap_sdrc_actim_ctrl_a_1_val | ||
116 | ldr r4, [sp, #76] | ||
117 | str r4, omap_sdrc_actim_ctrl_b_1_val | ||
118 | ldr r4, [sp, #80] | ||
119 | str r4, omap_sdrc_mr_1_val | ||
120 | skip_cs1_params: | ||
49 | dsb @ flush buffered writes to interconnect | 121 | dsb @ flush buffered writes to interconnect |
50 | cmp r3, #0x2 | 122 | |
51 | blne configure_sdrc | 123 | cmp r3, #1 @ if increasing SDRC clk rate, |
52 | cmp r4, #0x1 | 124 | bleq configure_sdrc @ program the SDRC regs early (for RFR) |
125 | cmp r1, #SDRC_UNLOCK_DLL @ set the intended DLL state | ||
53 | bleq unlock_dll | 126 | bleq unlock_dll |
54 | blne lock_dll | 127 | blne lock_dll |
55 | bl sdram_in_selfrefresh @ put the SDRAM in self refresh | 128 | bl sdram_in_selfrefresh @ put SDRAM in self refresh, idle SDRC |
56 | bl configure_core_dpll | 129 | bl configure_core_dpll @ change the DPLL3 M2 divider |
57 | bl enable_sdrc | 130 | mov r12, r2 |
58 | cmp r4, #0x1 | 131 | bl wait_clk_stable @ wait for SDRC to stabilize |
132 | bl enable_sdrc @ take SDRC out of idle | ||
133 | cmp r1, #SDRC_UNLOCK_DLL @ wait for DLL status to change | ||
59 | bleq wait_dll_unlock | 134 | bleq wait_dll_unlock |
60 | blne wait_dll_lock | 135 | blne wait_dll_lock |
61 | cmp r3, #0x1 | 136 | cmp r3, #1 @ if increasing SDRC clk rate, |
62 | blne configure_sdrc | 137 | beq return_to_sdram @ return to SDRAM code, otherwise, |
138 | bl configure_sdrc @ reprogram SDRC regs now | ||
139 | return_to_sdram: | ||
63 | isb @ prevent speculative exec past here | 140 | isb @ prevent speculative exec past here |
64 | mov r0, #0 @ return value | 141 | mov r0, #0 @ return value |
65 | ldmfd sp!, {r1-r12, pc} @ restore regs and return | 142 | ldmfd sp!, {r1-r12, pc} @ restore regs and return |
66 | unlock_dll: | 143 | unlock_dll: |
67 | ldr r11, omap3_sdrc_dlla_ctrl | 144 | ldr r11, omap3_sdrc_dlla_ctrl |
68 | ldr r12, [r11] | 145 | ldr r12, [r11] |
69 | orr r12, r12, #0x4 | 146 | bic r12, r12, #FIXEDDELAY_MASK |
147 | orr r12, r12, #FIXEDDELAY_DEFAULT | ||
148 | orr r12, r12, #DLLIDLE_MASK | ||
70 | str r12, [r11] @ (no OCP barrier needed) | 149 | str r12, [r11] @ (no OCP barrier needed) |
71 | bx lr | 150 | bx lr |
72 | lock_dll: | 151 | lock_dll: |
73 | ldr r11, omap3_sdrc_dlla_ctrl | 152 | ldr r11, omap3_sdrc_dlla_ctrl |
74 | ldr r12, [r11] | 153 | ldr r12, [r11] |
75 | bic r12, r12, #0x4 | 154 | bic r12, r12, #DLLIDLE_MASK |
76 | str r12, [r11] @ (no OCP barrier needed) | 155 | str r12, [r11] @ (no OCP barrier needed) |
77 | bx lr | 156 | bx lr |
78 | sdram_in_selfrefresh: | 157 | sdram_in_selfrefresh: |
79 | ldr r11, omap3_sdrc_power @ read the SDRC_POWER register | 158 | ldr r11, omap3_sdrc_power @ read the SDRC_POWER register |
80 | ldr r12, [r11] @ read the contents of SDRC_POWER | 159 | ldr r12, [r11] @ read the contents of SDRC_POWER |
81 | mov r9, r12 @ keep a copy of SDRC_POWER bits | 160 | mov r9, r12 @ keep a copy of SDRC_POWER bits |
82 | orr r12, r12, #0x40 @ enable self refresh on idle req | 161 | orr r12, r12, #SRFRONIDLEREQ_MASK @ enable self refresh on idle |
83 | bic r12, r12, #0x4 @ clear PWDENA | ||
84 | str r12, [r11] @ write back to SDRC_POWER register | 162 | str r12, [r11] @ write back to SDRC_POWER register |
85 | ldr r12, [r11] @ posted-write barrier for SDRC | 163 | ldr r12, [r11] @ posted-write barrier for SDRC |
164 | idle_sdrc: | ||
86 | ldr r11, omap3_cm_iclken1_core @ read the CM_ICLKEN1_CORE reg | 165 | ldr r11, omap3_cm_iclken1_core @ read the CM_ICLKEN1_CORE reg |
87 | ldr r12, [r11] | 166 | ldr r12, [r11] |
88 | bic r12, r12, #0x2 @ disable iclk bit for SDRC | 167 | bic r12, r12, #EN_SDRC_MASK @ disable iclk bit for SDRC |
89 | str r12, [r11] | 168 | str r12, [r11] |
90 | wait_sdrc_idle: | 169 | wait_sdrc_idle: |
91 | ldr r11, omap3_cm_idlest1_core | 170 | ldr r11, omap3_cm_idlest1_core |
92 | ldr r12, [r11] | 171 | ldr r12, [r11] |
93 | and r12, r12, #0x2 @ check for SDRC idle | 172 | and r12, r12, #ST_SDRC_MASK @ check for SDRC idle |
94 | cmp r12, #2 | 173 | cmp r12, #ST_SDRC_MASK |
95 | bne wait_sdrc_idle | 174 | bne wait_sdrc_idle |
96 | bx lr | 175 | bx lr |
97 | configure_core_dpll: | 176 | configure_core_dpll: |
@@ -99,36 +178,23 @@ configure_core_dpll: | |||
99 | ldr r12, [r11] | 178 | ldr r12, [r11] |
100 | ldr r10, core_m2_mask_val @ modify m2 for core dpll | 179 | ldr r10, core_m2_mask_val @ modify m2 for core dpll |
101 | and r12, r12, r10 | 180 | and r12, r12, r10 |
102 | orr r12, r12, r3, lsl #0x1B @ r3 contains the M2 val | 181 | orr r12, r12, r0, lsl #CORE_DPLL_CLKOUT_DIV_SHIFT |
103 | str r12, [r11] | 182 | str r12, [r11] |
104 | ldr r12, [r11] @ posted-write barrier for CM | 183 | ldr r12, [r11] @ posted-write barrier for CM |
105 | mov r12, #0x800 @ wait for the clock to stabilise | ||
106 | cmp r3, #2 | ||
107 | bne wait_clk_stable | ||
108 | bx lr | 184 | bx lr |
109 | wait_clk_stable: | 185 | wait_clk_stable: |
110 | subs r12, r12, #1 | 186 | subs r12, r12, #1 |
111 | bne wait_clk_stable | 187 | bne wait_clk_stable |
112 | nop | ||
113 | nop | ||
114 | nop | ||
115 | nop | ||
116 | nop | ||
117 | nop | ||
118 | nop | ||
119 | nop | ||
120 | nop | ||
121 | nop | ||
122 | bx lr | 188 | bx lr |
123 | enable_sdrc: | 189 | enable_sdrc: |
124 | ldr r11, omap3_cm_iclken1_core | 190 | ldr r11, omap3_cm_iclken1_core |
125 | ldr r12, [r11] | 191 | ldr r12, [r11] |
126 | orr r12, r12, #0x2 @ enable iclk bit for SDRC | 192 | orr r12, r12, #EN_SDRC_MASK @ enable iclk bit for SDRC |
127 | str r12, [r11] | 193 | str r12, [r11] |
128 | wait_sdrc_idle1: | 194 | wait_sdrc_idle1: |
129 | ldr r11, omap3_cm_idlest1_core | 195 | ldr r11, omap3_cm_idlest1_core |
130 | ldr r12, [r11] | 196 | ldr r12, [r11] |
131 | and r12, r12, #0x2 | 197 | and r12, r12, #ST_SDRC_MASK |
132 | cmp r12, #0 | 198 | cmp r12, #0 |
133 | bne wait_sdrc_idle1 | 199 | bne wait_sdrc_idle1 |
134 | restore_sdrc_power_val: | 200 | restore_sdrc_power_val: |
@@ -138,25 +204,46 @@ restore_sdrc_power_val: | |||
138 | wait_dll_lock: | 204 | wait_dll_lock: |
139 | ldr r11, omap3_sdrc_dlla_status | 205 | ldr r11, omap3_sdrc_dlla_status |
140 | ldr r12, [r11] | 206 | ldr r12, [r11] |
141 | and r12, r12, #0x4 | 207 | and r12, r12, #LOCKSTATUS_MASK |
142 | cmp r12, #0x4 | 208 | cmp r12, #LOCKSTATUS_MASK |
143 | bne wait_dll_lock | 209 | bne wait_dll_lock |
144 | bx lr | 210 | bx lr |
145 | wait_dll_unlock: | 211 | wait_dll_unlock: |
146 | ldr r11, omap3_sdrc_dlla_status | 212 | ldr r11, omap3_sdrc_dlla_status |
147 | ldr r12, [r11] | 213 | ldr r12, [r11] |
148 | and r12, r12, #0x4 | 214 | and r12, r12, #LOCKSTATUS_MASK |
149 | cmp r12, #0x0 | 215 | cmp r12, #0x0 |
150 | bne wait_dll_unlock | 216 | bne wait_dll_unlock |
151 | bx lr | 217 | bx lr |
152 | configure_sdrc: | 218 | configure_sdrc: |
153 | ldr r11, omap3_sdrc_rfr_ctrl | 219 | ldr r12, omap_sdrc_rfr_ctrl_0_val @ fetch value from SRAM |
154 | str r0, [r11] | 220 | ldr r11, omap3_sdrc_rfr_ctrl_0 @ fetch addr from SRAM |
155 | ldr r11, omap3_sdrc_actim_ctrla | 221 | str r12, [r11] @ store |
156 | str r1, [r11] | 222 | ldr r12, omap_sdrc_actim_ctrl_a_0_val |
157 | ldr r11, omap3_sdrc_actim_ctrlb | 223 | ldr r11, omap3_sdrc_actim_ctrl_a_0 |
158 | str r2, [r11] | 224 | str r12, [r11] |
159 | ldr r2, [r11] @ posted-write barrier for SDRC | 225 | ldr r12, omap_sdrc_actim_ctrl_b_0_val |
226 | ldr r11, omap3_sdrc_actim_ctrl_b_0 | ||
227 | str r12, [r11] | ||
228 | ldr r12, omap_sdrc_mr_0_val | ||
229 | ldr r11, omap3_sdrc_mr_0 | ||
230 | str r12, [r11] | ||
231 | ldr r12, omap_sdrc_rfr_ctrl_1_val | ||
232 | cmp r12, #0 @ if SDRC_RFR_CTRL_1 is 0, | ||
233 | beq skip_cs1_prog @ do not program cs1 params | ||
234 | ldr r11, omap3_sdrc_rfr_ctrl_1 | ||
235 | str r12, [r11] | ||
236 | ldr r12, omap_sdrc_actim_ctrl_a_1_val | ||
237 | ldr r11, omap3_sdrc_actim_ctrl_a_1 | ||
238 | str r12, [r11] | ||
239 | ldr r12, omap_sdrc_actim_ctrl_b_1_val | ||
240 | ldr r11, omap3_sdrc_actim_ctrl_b_1 | ||
241 | str r12, [r11] | ||
242 | ldr r12, omap_sdrc_mr_1_val | ||
243 | ldr r11, omap3_sdrc_mr_1 | ||
244 | str r12, [r11] | ||
245 | skip_cs1_prog: | ||
246 | ldr r12, [r11] @ posted-write barrier for SDRC | ||
160 | bx lr | 247 | bx lr |
161 | 248 | ||
162 | omap3_sdrc_power: | 249 | omap3_sdrc_power: |
@@ -167,12 +254,40 @@ omap3_cm_idlest1_core: | |||
167 | .word OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST) | 254 | .word OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST) |
168 | omap3_cm_iclken1_core: | 255 | omap3_cm_iclken1_core: |
169 | .word OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1) | 256 | .word OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1) |
170 | omap3_sdrc_rfr_ctrl: | 257 | |
258 | omap3_sdrc_rfr_ctrl_0: | ||
171 | .word OMAP34XX_SDRC_REGADDR(SDRC_RFR_CTRL_0) | 259 | .word OMAP34XX_SDRC_REGADDR(SDRC_RFR_CTRL_0) |
172 | omap3_sdrc_actim_ctrla: | 260 | omap3_sdrc_rfr_ctrl_1: |
261 | .word OMAP34XX_SDRC_REGADDR(SDRC_RFR_CTRL_1) | ||
262 | omap3_sdrc_actim_ctrl_a_0: | ||
173 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_A_0) | 263 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_A_0) |
174 | omap3_sdrc_actim_ctrlb: | 264 | omap3_sdrc_actim_ctrl_a_1: |
265 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_A_1) | ||
266 | omap3_sdrc_actim_ctrl_b_0: | ||
175 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_B_0) | 267 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_B_0) |
268 | omap3_sdrc_actim_ctrl_b_1: | ||
269 | .word OMAP34XX_SDRC_REGADDR(SDRC_ACTIM_CTRL_B_1) | ||
270 | omap3_sdrc_mr_0: | ||
271 | .word OMAP34XX_SDRC_REGADDR(SDRC_MR_0) | ||
272 | omap3_sdrc_mr_1: | ||
273 | .word OMAP34XX_SDRC_REGADDR(SDRC_MR_1) | ||
274 | omap_sdrc_rfr_ctrl_0_val: | ||
275 | .word 0xDEADBEEF | ||
276 | omap_sdrc_rfr_ctrl_1_val: | ||
277 | .word 0xDEADBEEF | ||
278 | omap_sdrc_actim_ctrl_a_0_val: | ||
279 | .word 0xDEADBEEF | ||
280 | omap_sdrc_actim_ctrl_a_1_val: | ||
281 | .word 0xDEADBEEF | ||
282 | omap_sdrc_actim_ctrl_b_0_val: | ||
283 | .word 0xDEADBEEF | ||
284 | omap_sdrc_actim_ctrl_b_1_val: | ||
285 | .word 0xDEADBEEF | ||
286 | omap_sdrc_mr_0_val: | ||
287 | .word 0xDEADBEEF | ||
288 | omap_sdrc_mr_1_val: | ||
289 | .word 0xDEADBEEF | ||
290 | |||
176 | omap3_sdrc_dlla_status: | 291 | omap3_sdrc_dlla_status: |
177 | .word OMAP34XX_SDRC_REGADDR(SDRC_DLLA_STATUS) | 292 | .word OMAP34XX_SDRC_REGADDR(SDRC_DLLA_STATUS) |
178 | omap3_sdrc_dlla_ctrl: | 293 | omap3_sdrc_dlla_ctrl: |
@@ -182,3 +297,4 @@ core_m2_mask_val: | |||
182 | 297 | ||
183 | ENTRY(omap3_sram_configure_core_dpll_sz) | 298 | ENTRY(omap3_sram_configure_core_dpll_sz) |
184 | .word . - omap3_sram_configure_core_dpll | 299 | .word . - omap3_sram_configure_core_dpll |
300 | |||
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index d85296dc896c..739e59e8025c 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
@@ -155,20 +155,6 @@ static struct platform_device musb_device = { | |||
155 | .resource = musb_resources, | 155 | .resource = musb_resources, |
156 | }; | 156 | }; |
157 | 157 | ||
158 | #ifdef CONFIG_NOP_USB_XCEIV | ||
159 | static u64 nop_xceiv_dmamask = DMA_BIT_MASK(32); | ||
160 | |||
161 | static struct platform_device nop_xceiv_device = { | ||
162 | .name = "nop_usb_xceiv", | ||
163 | .id = -1, | ||
164 | .dev = { | ||
165 | .dma_mask = &nop_xceiv_dmamask, | ||
166 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
167 | .platform_data = NULL, | ||
168 | }, | ||
169 | }; | ||
170 | #endif | ||
171 | |||
172 | void __init usb_musb_init(void) | 158 | void __init usb_musb_init(void) |
173 | { | 159 | { |
174 | if (cpu_is_omap243x()) | 160 | if (cpu_is_omap243x()) |
@@ -183,13 +169,6 @@ void __init usb_musb_init(void) | |||
183 | */ | 169 | */ |
184 | musb_plat.clock = "ick"; | 170 | musb_plat.clock = "ick"; |
185 | 171 | ||
186 | #ifdef CONFIG_NOP_USB_XCEIV | ||
187 | if (platform_device_register(&nop_xceiv_device) < 0) { | ||
188 | printk(KERN_ERR "Unable to register NOP-XCEIV device\n"); | ||
189 | return; | ||
190 | } | ||
191 | #endif | ||
192 | |||
193 | if (platform_device_register(&musb_device) < 0) { | 172 | if (platform_device_register(&musb_device) < 0) { |
194 | printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n"); | 173 | printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n"); |
195 | return; | 174 | return; |
diff --git a/arch/arm/mach-orion5x/addr-map.c b/arch/arm/mach-orion5x/addr-map.c index 6f3f77d031d0..d78731edebb6 100644 --- a/arch/arm/mach-orion5x/addr-map.c +++ b/arch/arm/mach-orion5x/addr-map.c | |||
@@ -200,6 +200,6 @@ void __init orion5x_setup_pcie_wa_win(u32 base, u32 size) | |||
200 | 200 | ||
201 | int __init orion5x_setup_sram_win(void) | 201 | int __init orion5x_setup_sram_win(void) |
202 | { | 202 | { |
203 | return setup_cpu_win(win_alloc_count, ORION5X_SRAM_PHYS_BASE, | 203 | return setup_cpu_win(win_alloc_count++, ORION5X_SRAM_PHYS_BASE, |
204 | ORION5X_SRAM_SIZE, TARGET_SRAM, ATTR_SRAM, -1); | 204 | ORION5X_SRAM_SIZE, TARGET_SRAM, ATTR_SRAM, -1); |
205 | } | 205 | } |
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index eafcc49009ea..f87fa1253803 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
@@ -562,7 +562,7 @@ static struct platform_device orion5x_crypto_device = { | |||
562 | .resource = orion5x_crypto_res, | 562 | .resource = orion5x_crypto_res, |
563 | }; | 563 | }; |
564 | 564 | ||
565 | int __init orion5x_crypto_init(void) | 565 | static int __init orion5x_crypto_init(void) |
566 | { | 566 | { |
567 | int ret; | 567 | int ret; |
568 | 568 | ||
@@ -697,6 +697,14 @@ void __init orion5x_init(void) | |||
697 | } | 697 | } |
698 | 698 | ||
699 | /* | 699 | /* |
700 | * The 5082/5181l/5182/6082/6082l/6183 have crypto | ||
701 | * while 5180n/5181/5281 don't have crypto. | ||
702 | */ | ||
703 | if ((dev == MV88F5181_DEV_ID && rev >= MV88F5181L_REV_A0) || | ||
704 | dev == MV88F5182_DEV_ID || dev == MV88F6183_DEV_ID) | ||
705 | orion5x_crypto_init(); | ||
706 | |||
707 | /* | ||
700 | * Register watchdog driver | 708 | * Register watchdog driver |
701 | */ | 709 | */ |
702 | orion5x_wdt_init(); | 710 | orion5x_wdt_init(); |
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h index de483e83edd7..8f004503c96d 100644 --- a/arch/arm/mach-orion5x/common.h +++ b/arch/arm/mach-orion5x/common.h | |||
@@ -38,7 +38,6 @@ void orion5x_spi_init(void); | |||
38 | void orion5x_uart0_init(void); | 38 | void orion5x_uart0_init(void); |
39 | void orion5x_uart1_init(void); | 39 | void orion5x_uart1_init(void); |
40 | void orion5x_xor_init(void); | 40 | void orion5x_xor_init(void); |
41 | int orion5x_crypto_init(void); | ||
42 | 41 | ||
43 | /* | 42 | /* |
44 | * PCIe/PCI functions. | 43 | * PCIe/PCI functions. |
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index f4533f8ff4e8..89c992b8f75b 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -401,6 +401,16 @@ config MACH_PALMZ72 | |||
401 | Say Y here if you intend to run this kernel on Palm Zire 72 | 401 | Say Y here if you intend to run this kernel on Palm Zire 72 |
402 | handheld computer. | 402 | handheld computer. |
403 | 403 | ||
404 | config MACH_TREO680 | ||
405 | bool "Palm Treo 680" | ||
406 | default y | ||
407 | depends on ARCH_PXA_PALM | ||
408 | select PXA27x | ||
409 | select IWMMXT | ||
410 | help | ||
411 | Say Y here if you intend to run this kernel on Palm Treo 680 | ||
412 | smartphone. | ||
413 | |||
404 | config MACH_PALMLD | 414 | config MACH_PALMLD |
405 | bool "Palm LifeDrive" | 415 | bool "Palm LifeDrive" |
406 | default y | 416 | default y |
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index d18ffef44b8c..d4c6122a342f 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -62,6 +62,7 @@ obj-$(CONFIG_MACH_PALMT5) += palmt5.o | |||
62 | obj-$(CONFIG_MACH_PALMTX) += palmtx.o | 62 | obj-$(CONFIG_MACH_PALMTX) += palmtx.o |
63 | obj-$(CONFIG_MACH_PALMLD) += palmld.o | 63 | obj-$(CONFIG_MACH_PALMLD) += palmld.o |
64 | obj-$(CONFIG_MACH_PALMZ72) += palmz72.o | 64 | obj-$(CONFIG_MACH_PALMZ72) += palmz72.o |
65 | obj-$(CONFIG_MACH_TREO680) += treo680.o | ||
65 | obj-$(CONFIG_ARCH_VIPER) += viper.o | 66 | obj-$(CONFIG_ARCH_VIPER) += viper.o |
66 | 67 | ||
67 | ifeq ($(CONFIG_MACH_ZYLONITE),y) | 68 | ifeq ($(CONFIG_MACH_ZYLONITE),y) |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 962dda2e154a..5363e1aea3fb 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/pm.h> | 23 | #include <linux/pm.h> |
24 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
25 | #include <linux/backlight.h> | 25 | #include <linux/backlight.h> |
26 | #include <linux/i2c.h> | ||
26 | #include <linux/io.h> | 27 | #include <linux/io.h> |
27 | #include <linux/spi/spi.h> | 28 | #include <linux/spi/spi.h> |
28 | #include <linux/spi/ads7846.h> | 29 | #include <linux/spi/ads7846.h> |
@@ -600,6 +601,10 @@ static struct platform_device *devices[] __initdata = { | |||
600 | &sharpsl_rom_device, | 601 | &sharpsl_rom_device, |
601 | }; | 602 | }; |
602 | 603 | ||
604 | static struct i2c_board_info __initdata corgi_i2c_devices[] = { | ||
605 | { I2C_BOARD_INFO("wm8731", 0x1b) }, | ||
606 | }; | ||
607 | |||
603 | static void corgi_poweroff(void) | 608 | static void corgi_poweroff(void) |
604 | { | 609 | { |
605 | if (!machine_is_corgi()) | 610 | if (!machine_is_corgi()) |
@@ -634,6 +639,7 @@ static void __init corgi_init(void) | |||
634 | pxa_set_mci_info(&corgi_mci_platform_data); | 639 | pxa_set_mci_info(&corgi_mci_platform_data); |
635 | pxa_set_ficp_info(&corgi_ficp_platform_data); | 640 | pxa_set_ficp_info(&corgi_ficp_platform_data); |
636 | pxa_set_i2c_info(NULL); | 641 | pxa_set_i2c_info(NULL); |
642 | i2c_register_board_info(0, ARRAY_AND_SIZE(corgi_i2c_devices)); | ||
637 | 643 | ||
638 | platform_scoop_config = &corgi_pcmcia_config; | 644 | platform_scoop_config = &corgi_pcmcia_config; |
639 | 645 | ||
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index 243e0802b5f4..9cd09465a0e8 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/apm-emulation.h> | 30 | #include <linux/apm-emulation.h> |
31 | #include <linux/i2c.h> | 31 | #include <linux/i2c.h> |
32 | #include <linux/i2c/pca953x.h> | 32 | #include <linux/i2c/pca953x.h> |
33 | #include <linux/regulator/userspace-consumer.h> | ||
33 | 34 | ||
34 | #include <media/soc_camera.h> | 35 | #include <media/soc_camera.h> |
35 | 36 | ||
@@ -735,6 +736,7 @@ static struct pxa2xx_spi_chip em_x270_libertas_chip = { | |||
735 | .rx_threshold = 1, | 736 | .rx_threshold = 1, |
736 | .tx_threshold = 1, | 737 | .tx_threshold = 1, |
737 | .timeout = 1000, | 738 | .timeout = 1000, |
739 | .gpio_cs = 14, | ||
738 | }; | 740 | }; |
739 | 741 | ||
740 | static unsigned long em_x270_libertas_pin_config[] = { | 742 | static unsigned long em_x270_libertas_pin_config[] = { |
@@ -803,7 +805,6 @@ static int em_x270_libertas_teardown(struct spi_device *spi) | |||
803 | 805 | ||
804 | struct libertas_spi_platform_data em_x270_libertas_pdata = { | 806 | struct libertas_spi_platform_data em_x270_libertas_pdata = { |
805 | .use_dummy_writes = 1, | 807 | .use_dummy_writes = 1, |
806 | .gpio_cs = 14, | ||
807 | .setup = em_x270_libertas_setup, | 808 | .setup = em_x270_libertas_setup, |
808 | .teardown = em_x270_libertas_teardown, | 809 | .teardown = em_x270_libertas_teardown, |
809 | }; | 810 | }; |
@@ -838,10 +839,14 @@ static void __init em_x270_init_spi(void) | |||
838 | static inline void em_x270_init_spi(void) {} | 839 | static inline void em_x270_init_spi(void) {} |
839 | #endif | 840 | #endif |
840 | 841 | ||
841 | #if defined(CONFIG_SND_PXA2XX_AC97) || defined(CONFIG_SND_PXA2XX_AC97_MODULE) | 842 | #if defined(CONFIG_SND_PXA2XX_LIB_AC97) |
843 | static pxa2xx_audio_ops_t em_x270_ac97_info = { | ||
844 | .reset_gpio = 113, | ||
845 | }; | ||
846 | |||
842 | static void __init em_x270_init_ac97(void) | 847 | static void __init em_x270_init_ac97(void) |
843 | { | 848 | { |
844 | pxa_set_ac97_info(NULL); | 849 | pxa_set_ac97_info(&em_x270_ac97_info); |
845 | } | 850 | } |
846 | #else | 851 | #else |
847 | static inline void em_x270_init_ac97(void) {} | 852 | static inline void em_x270_init_ac97(void) {} |
@@ -1038,6 +1043,52 @@ static void __init em_x270_init_camera(void) | |||
1038 | static inline void em_x270_init_camera(void) {} | 1043 | static inline void em_x270_init_camera(void) {} |
1039 | #endif | 1044 | #endif |
1040 | 1045 | ||
1046 | static struct regulator_bulk_data em_x270_gps_consumer_supply = { | ||
1047 | .supply = "vcc gps", | ||
1048 | }; | ||
1049 | |||
1050 | static struct regulator_userspace_consumer_data em_x270_gps_consumer_data = { | ||
1051 | .name = "vcc gps", | ||
1052 | .num_supplies = 1, | ||
1053 | .supplies = &em_x270_gps_consumer_supply, | ||
1054 | }; | ||
1055 | |||
1056 | static struct platform_device em_x270_gps_userspace_consumer = { | ||
1057 | .name = "reg-userspace-consumer", | ||
1058 | .id = 0, | ||
1059 | .dev = { | ||
1060 | .platform_data = &em_x270_gps_consumer_data, | ||
1061 | }, | ||
1062 | }; | ||
1063 | |||
1064 | static struct regulator_bulk_data em_x270_gprs_consumer_supply = { | ||
1065 | .supply = "vcc gprs", | ||
1066 | }; | ||
1067 | |||
1068 | static struct regulator_userspace_consumer_data em_x270_gprs_consumer_data = { | ||
1069 | .name = "vcc gprs", | ||
1070 | .num_supplies = 1, | ||
1071 | .supplies = &em_x270_gprs_consumer_supply | ||
1072 | }; | ||
1073 | |||
1074 | static struct platform_device em_x270_gprs_userspace_consumer = { | ||
1075 | .name = "reg-userspace-consumer", | ||
1076 | .id = 1, | ||
1077 | .dev = { | ||
1078 | .platform_data = &em_x270_gprs_consumer_data, | ||
1079 | } | ||
1080 | }; | ||
1081 | |||
1082 | static struct platform_device *em_x270_userspace_consumers[] = { | ||
1083 | &em_x270_gps_userspace_consumer, | ||
1084 | &em_x270_gprs_userspace_consumer, | ||
1085 | }; | ||
1086 | |||
1087 | static void __init em_x270_userspace_consumers_init(void) | ||
1088 | { | ||
1089 | platform_add_devices(ARRAY_AND_SIZE(em_x270_userspace_consumers)); | ||
1090 | } | ||
1091 | |||
1041 | /* DA9030 related initializations */ | 1092 | /* DA9030 related initializations */ |
1042 | #define REGULATOR_CONSUMER(_name, _dev, _supply) \ | 1093 | #define REGULATOR_CONSUMER(_name, _dev, _supply) \ |
1043 | static struct regulator_consumer_supply _name##_consumers[] = { \ | 1094 | static struct regulator_consumer_supply _name##_consumers[] = { \ |
@@ -1047,11 +1098,11 @@ static inline void em_x270_init_camera(void) {} | |||
1047 | }, \ | 1098 | }, \ |
1048 | } | 1099 | } |
1049 | 1100 | ||
1050 | REGULATOR_CONSUMER(ldo3, NULL, "vcc gps"); | 1101 | REGULATOR_CONSUMER(ldo3, &em_x270_gps_userspace_consumer.dev, "vcc gps"); |
1051 | REGULATOR_CONSUMER(ldo5, NULL, "vcc cam"); | 1102 | REGULATOR_CONSUMER(ldo5, NULL, "vcc cam"); |
1052 | REGULATOR_CONSUMER(ldo10, &pxa_device_mci.dev, "vcc sdio"); | 1103 | REGULATOR_CONSUMER(ldo10, &pxa_device_mci.dev, "vcc sdio"); |
1053 | REGULATOR_CONSUMER(ldo12, NULL, "vcc usb"); | 1104 | REGULATOR_CONSUMER(ldo12, NULL, "vcc usb"); |
1054 | REGULATOR_CONSUMER(ldo19, NULL, "vcc gprs"); | 1105 | REGULATOR_CONSUMER(ldo19, &em_x270_gprs_userspace_consumer.dev, "vcc gprs"); |
1055 | 1106 | ||
1056 | #define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask) \ | 1107 | #define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask) \ |
1057 | static struct regulator_init_data _ldo##_data = { \ | 1108 | static struct regulator_init_data _ldo##_data = { \ |
@@ -1062,6 +1113,7 @@ REGULATOR_CONSUMER(ldo19, NULL, "vcc gprs"); | |||
1062 | .enabled = 0, \ | 1113 | .enabled = 0, \ |
1063 | }, \ | 1114 | }, \ |
1064 | .valid_ops_mask = _ops_mask, \ | 1115 | .valid_ops_mask = _ops_mask, \ |
1116 | .apply_uV = 1, \ | ||
1065 | }, \ | 1117 | }, \ |
1066 | .num_consumer_supplies = ARRAY_SIZE(_ldo##_consumers), \ | 1118 | .num_consumer_supplies = ARRAY_SIZE(_ldo##_consumers), \ |
1067 | .consumer_supplies = _ldo##_consumers, \ | 1119 | .consumer_supplies = _ldo##_consumers, \ |
@@ -1089,12 +1141,16 @@ struct power_supply_info em_x270_psy_info = { | |||
1089 | 1141 | ||
1090 | static void em_x270_battery_low(void) | 1142 | static void em_x270_battery_low(void) |
1091 | { | 1143 | { |
1144 | #if defined(CONFIG_APM_EMULATION) | ||
1092 | apm_queue_event(APM_LOW_BATTERY); | 1145 | apm_queue_event(APM_LOW_BATTERY); |
1146 | #endif | ||
1093 | } | 1147 | } |
1094 | 1148 | ||
1095 | static void em_x270_battery_critical(void) | 1149 | static void em_x270_battery_critical(void) |
1096 | { | 1150 | { |
1151 | #if defined(CONFIG_APM_EMULATION) | ||
1097 | apm_queue_event(APM_CRITICAL_SUSPEND); | 1152 | apm_queue_event(APM_CRITICAL_SUSPEND); |
1153 | #endif | ||
1098 | } | 1154 | } |
1099 | 1155 | ||
1100 | struct da9030_battery_info em_x270_batterty_info = { | 1156 | struct da9030_battery_info em_x270_batterty_info = { |
@@ -1240,6 +1296,7 @@ static void __init em_x270_init(void) | |||
1240 | em_x270_init_spi(); | 1296 | em_x270_init_spi(); |
1241 | em_x270_init_i2c(); | 1297 | em_x270_init_i2c(); |
1242 | em_x270_init_camera(); | 1298 | em_x270_init_camera(); |
1299 | em_x270_userspace_consumers_init(); | ||
1243 | } | 1300 | } |
1244 | 1301 | ||
1245 | MACHINE_START(EM_X270, "Compulab EM-X270") | 1302 | MACHINE_START(EM_X270, "Compulab EM-X270") |
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index 7fff467e84fc..81359d574f88 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/pwm_backlight.h> | 30 | #include <linux/pwm_backlight.h> |
31 | #include <linux/regulator/bq24022.h> | 31 | #include <linux/regulator/bq24022.h> |
32 | #include <linux/regulator/machine.h> | 32 | #include <linux/regulator/machine.h> |
33 | #include <linux/regulator/max1586.h> | ||
33 | #include <linux/spi/ads7846.h> | 34 | #include <linux/spi/ads7846.h> |
34 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
35 | #include <linux/usb/gpio_vbus.h> | 36 | #include <linux/usb/gpio_vbus.h> |
@@ -775,6 +776,45 @@ static struct platform_device strataflash = { | |||
775 | }; | 776 | }; |
776 | 777 | ||
777 | /* | 778 | /* |
779 | * Maxim MAX1587A on PI2C | ||
780 | */ | ||
781 | |||
782 | static struct regulator_consumer_supply max1587a_consumer = { | ||
783 | .supply = "vcc_core", | ||
784 | }; | ||
785 | |||
786 | static struct regulator_init_data max1587a_v3_info = { | ||
787 | .constraints = { | ||
788 | .name = "vcc_core range", | ||
789 | .min_uV = 900000, | ||
790 | .max_uV = 1705000, | ||
791 | .always_on = 1, | ||
792 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
793 | }, | ||
794 | .num_consumer_supplies = 1, | ||
795 | .consumer_supplies = &max1587a_consumer, | ||
796 | }; | ||
797 | |||
798 | static struct max1586_subdev_data max1587a_subdev = { | ||
799 | .name = "vcc_core", | ||
800 | .id = MAX1586_V3, | ||
801 | .platform_data = &max1587a_v3_info, | ||
802 | }; | ||
803 | |||
804 | static struct max1586_platform_data max1587a_info = { | ||
805 | .num_subdevs = 1, | ||
806 | .subdevs = &max1587a_subdev, | ||
807 | .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ | ||
808 | }; | ||
809 | |||
810 | static struct i2c_board_info __initdata pi2c_board_info[] = { | ||
811 | { | ||
812 | I2C_BOARD_INFO("max1586", 0x14), | ||
813 | .platform_data = &max1587a_info, | ||
814 | }, | ||
815 | }; | ||
816 | |||
817 | /* | ||
778 | * PCMCIA | 818 | * PCMCIA |
779 | */ | 819 | */ |
780 | 820 | ||
@@ -828,6 +868,7 @@ static void __init hx4700_init(void) | |||
828 | pxa_set_ficp_info(&ficp_info); | 868 | pxa_set_ficp_info(&ficp_info); |
829 | pxa27x_set_i2c_power_info(NULL); | 869 | pxa27x_set_i2c_power_info(NULL); |
830 | pxa_set_i2c_info(NULL); | 870 | pxa_set_i2c_info(NULL); |
871 | i2c_register_board_info(1, ARRAY_AND_SIZE(pi2c_board_info)); | ||
831 | pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); | 872 | pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); |
832 | spi_register_board_info(ARRAY_AND_SIZE(tsc2046_board_info)); | 873 | spi_register_board_info(ARRAY_AND_SIZE(tsc2046_board_info)); |
833 | 874 | ||
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h b/arch/arm/mach-pxa/include/mach/mfp-pxa300.h index ae8441192ef0..7139e0dc26d1 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa300.h | |||
@@ -567,9 +567,9 @@ | |||
567 | #define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3) | 567 | #define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3) |
568 | #define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1) | 568 | #define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1) |
569 | 569 | ||
570 | #define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, MFP_AF0, MFP_DS01X) | 570 | #define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, AF0, DS01X) |
571 | #define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, MFP_AF0, MFP_DS01X) | 571 | #define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, AF0, DS01X) |
572 | #define ULPI_STP MFP_CFG_DRV(ULPI_STP, MFP_AF0, MFP_DS01X) | 572 | #define ULPI_STP MFP_CFG_DRV(ULPI_STP, AF0, DS01X) |
573 | #endif /* CONFIG_CPU_PXA310 */ | 573 | #endif /* CONFIG_CPU_PXA310 */ |
574 | 574 | ||
575 | #endif /* __ASM_ARCH_MFP_PXA300_H */ | 575 | #endif /* __ASM_ARCH_MFP_PXA300_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/palmz72.h b/arch/arm/mach-pxa/include/mach/palmz72.h index 5032307ebf7d..2806ef69ba5a 100644 --- a/arch/arm/mach-pxa/include/mach/palmz72.h +++ b/arch/arm/mach-pxa/include/mach/palmz72.h | |||
@@ -21,7 +21,7 @@ | |||
21 | /* SD/MMC */ | 21 | /* SD/MMC */ |
22 | #define GPIO_NR_PALMZ72_SD_DETECT_N 14 | 22 | #define GPIO_NR_PALMZ72_SD_DETECT_N 14 |
23 | #define GPIO_NR_PALMZ72_SD_POWER_N 98 | 23 | #define GPIO_NR_PALMZ72_SD_POWER_N 98 |
24 | #define GPIO_NR_PALMZ72_SD_RO 115 | 24 | #define GPIO_NR_PALMZ72_SD_RO 115 |
25 | 25 | ||
26 | /* Touchscreen */ | 26 | /* Touchscreen */ |
27 | #define GPIO_NR_PALMZ72_WM9712_IRQ 27 | 27 | #define GPIO_NR_PALMZ72_WM9712_IRQ 27 |
@@ -31,8 +31,7 @@ | |||
31 | 31 | ||
32 | /* USB */ | 32 | /* USB */ |
33 | #define GPIO_NR_PALMZ72_USB_DETECT_N 15 | 33 | #define GPIO_NR_PALMZ72_USB_DETECT_N 15 |
34 | #define GPIO_NR_PALMZ72_USB_POWER 95 | 34 | #define GPIO_NR_PALMZ72_USB_PULLUP 95 |
35 | #define GPIO_NR_PALMZ72_USB_PULLUP 12 | ||
36 | 35 | ||
37 | /* LCD/Backlight */ | 36 | /* LCD/Backlight */ |
38 | #define GPIO_NR_PALMZ72_BL_POWER 20 | 37 | #define GPIO_NR_PALMZ72_BL_POWER 20 |
diff --git a/arch/arm/mach-pxa/include/mach/treo680.h b/arch/arm/mach-pxa/include/mach/treo680.h new file mode 100644 index 000000000000..af443b24d99a --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/treo680.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * GPIOs and interrupts for Palm Treo 680 smartphone | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #ifndef _INCLUDE_TREO680_H_ | ||
11 | #define _INCLUDE_TREO680_H_ | ||
12 | |||
13 | /* GPIOs */ | ||
14 | #define GPIO_NR_TREO680_POWER_DETECT 0 | ||
15 | #define GPIO_NR_TREO680_AMP_EN 27 | ||
16 | #define GPIO_NR_TREO680_KEYB_BL 24 | ||
17 | #define GPIO_NR_TREO680_VIBRATE_EN 44 | ||
18 | #define GPIO_NR_TREO680_GREEN_LED 20 | ||
19 | #define GPIO_NR_TREO680_RED_LED 79 | ||
20 | #define GPIO_NR_TREO680_SD_DETECT_N 113 | ||
21 | #define GPIO_NR_TREO680_SD_READONLY 33 | ||
22 | #define GPIO_NR_TREO680_EP_DETECT_N 116 | ||
23 | #define GPIO_NR_TREO680_SD_POWER 42 | ||
24 | #define GPIO_NR_TREO680_USB_DETECT 1 | ||
25 | #define GPIO_NR_TREO680_USB_PULLUP 114 | ||
26 | #define GPIO_NR_TREO680_GSM_POWER 40 | ||
27 | #define GPIO_NR_TREO680_GSM_RESET 87 | ||
28 | #define GPIO_NR_TREO680_GSM_WAKE 57 | ||
29 | #define GPIO_NR_TREO680_GSM_HOST_WAKE 14 | ||
30 | #define GPIO_NR_TREO680_GSM_TRIGGER 10 | ||
31 | #define GPIO_NR_TREO680_BT_EN 43 | ||
32 | #define GPIO_NR_TREO680_IR_EN 115 | ||
33 | #define GPIO_NR_TREO680_IR_TXD 47 | ||
34 | #define GPIO_NR_TREO680_BL_POWER 38 | ||
35 | #define GPIO_NR_TREO680_LCD_POWER 25 | ||
36 | |||
37 | /* Various addresses */ | ||
38 | #define TREO680_PHYS_RAM_START 0xa0000000 | ||
39 | #define TREO680_PHYS_IO_START 0x40000000 | ||
40 | #define TREO680_STR_BASE 0xa2000000 | ||
41 | |||
42 | /* BACKLIGHT */ | ||
43 | #define TREO680_MAX_INTENSITY 254 | ||
44 | #define TREO680_DEFAULT_INTENSITY 160 | ||
45 | #define TREO680_LIMIT_MASK 0x7F | ||
46 | #define TREO680_PRESCALER 63 | ||
47 | #define TREO680_PERIOD_NS 3500 | ||
48 | |||
49 | #endif | ||
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c index 4dc8c2ec40a9..2d28132c725b 100644 --- a/arch/arm/mach-pxa/mioa701.c +++ b/arch/arm/mach-pxa/mioa701.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/wm97xx_batt.h> | 37 | #include <linux/wm97xx_batt.h> |
38 | #include <linux/mtd/physmap.h> | 38 | #include <linux/mtd/physmap.h> |
39 | #include <linux/usb/gpio_vbus.h> | 39 | #include <linux/usb/gpio_vbus.h> |
40 | #include <linux/regulator/max1586.h> | ||
40 | 41 | ||
41 | #include <asm/mach-types.h> | 42 | #include <asm/mach-types.h> |
42 | #include <asm/mach/arch.h> | 43 | #include <asm/mach/arch.h> |
@@ -717,6 +718,38 @@ static struct wm97xx_batt_info mioa701_battery_data = { | |||
717 | }; | 718 | }; |
718 | 719 | ||
719 | /* | 720 | /* |
721 | * Voltage regulation | ||
722 | */ | ||
723 | static struct regulator_consumer_supply max1586_consumers[] = { | ||
724 | { | ||
725 | .supply = "vcc_core", | ||
726 | } | ||
727 | }; | ||
728 | |||
729 | static struct regulator_init_data max1586_v3_info = { | ||
730 | .constraints = { | ||
731 | .name = "vcc_core range", | ||
732 | .min_uV = 1000000, | ||
733 | .max_uV = 1705000, | ||
734 | .always_on = 1, | ||
735 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
736 | }, | ||
737 | .num_consumer_supplies = ARRAY_SIZE(max1586_consumers), | ||
738 | .consumer_supplies = max1586_consumers, | ||
739 | }; | ||
740 | |||
741 | static struct max1586_subdev_data max1586_subdevs[] = { | ||
742 | { .name = "vcc_core", .id = MAX1586_V3, | ||
743 | .platform_data = &max1586_v3_info }, | ||
744 | }; | ||
745 | |||
746 | static struct max1586_platform_data max1586_info = { | ||
747 | .subdevs = max1586_subdevs, | ||
748 | .num_subdevs = ARRAY_SIZE(max1586_subdevs), | ||
749 | .v3_gain = MAX1586_GAIN_NO_R24, /* 700..1475 mV */ | ||
750 | }; | ||
751 | |||
752 | /* | ||
720 | * Camera interface | 753 | * Camera interface |
721 | */ | 754 | */ |
722 | struct pxacamera_platform_data mioa701_pxacamera_platform_data = { | 755 | struct pxacamera_platform_data mioa701_pxacamera_platform_data = { |
@@ -725,6 +758,13 @@ struct pxacamera_platform_data mioa701_pxacamera_platform_data = { | |||
725 | .mclk_10khz = 5000, | 758 | .mclk_10khz = 5000, |
726 | }; | 759 | }; |
727 | 760 | ||
761 | static struct i2c_board_info __initdata mioa701_pi2c_devices[] = { | ||
762 | { | ||
763 | I2C_BOARD_INFO("max1586", 0x14), | ||
764 | .platform_data = &max1586_info, | ||
765 | }, | ||
766 | }; | ||
767 | |||
728 | static struct soc_camera_link iclink = { | 768 | static struct soc_camera_link iclink = { |
729 | .bus_id = 0, /* Must match id in pxa27x_device_camera in device.c */ | 769 | .bus_id = 0, /* Must match id in pxa27x_device_camera in device.c */ |
730 | }; | 770 | }; |
@@ -825,7 +865,9 @@ static void __init mioa701_machine_init(void) | |||
825 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 865 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
826 | gsm_init(); | 866 | gsm_init(); |
827 | 867 | ||
868 | i2c_register_board_info(1, ARRAY_AND_SIZE(mioa701_pi2c_devices)); | ||
828 | pxa_set_i2c_info(&i2c_pdata); | 869 | pxa_set_i2c_info(&i2c_pdata); |
870 | pxa27x_set_i2c_power_info(NULL); | ||
829 | pxa_set_camera_info(&mioa701_pxacamera_platform_data); | 871 | pxa_set_camera_info(&mioa701_pxacamera_platform_data); |
830 | i2c_register_board_info(0, ARRAY_AND_SIZE(mioa701_i2c_devices)); | 872 | i2c_register_board_info(0, ARRAY_AND_SIZE(mioa701_i2c_devices)); |
831 | } | 873 | } |
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c index ed70f281dd09..169fcc18154e 100644 --- a/arch/arm/mach-pxa/palmld.c +++ b/arch/arm/mach-pxa/palmld.c | |||
@@ -128,6 +128,10 @@ static unsigned long palmld_pin_config[] __initdata = { | |||
128 | GPIO38_GPIO, /* wifi ready */ | 128 | GPIO38_GPIO, /* wifi ready */ |
129 | GPIO81_GPIO, /* wifi reset */ | 129 | GPIO81_GPIO, /* wifi reset */ |
130 | 130 | ||
131 | /* FFUART */ | ||
132 | GPIO34_FFUART_RXD, | ||
133 | GPIO39_FFUART_TXD, | ||
134 | |||
131 | /* HDD */ | 135 | /* HDD */ |
132 | GPIO98_GPIO, /* HDD reset */ | 136 | GPIO98_GPIO, /* HDD reset */ |
133 | GPIO115_GPIO, /* HDD power */ | 137 | GPIO115_GPIO, /* HDD power */ |
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index aae64a12a734..33f726ff55e5 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c | |||
@@ -111,6 +111,10 @@ static unsigned long palmt5_pin_config[] __initdata = { | |||
111 | /* PWM */ | 111 | /* PWM */ |
112 | GPIO16_PWM0_OUT, | 112 | GPIO16_PWM0_OUT, |
113 | 113 | ||
114 | /* FFUART */ | ||
115 | GPIO34_FFUART_RXD, | ||
116 | GPIO39_FFUART_TXD, | ||
117 | |||
114 | /* MISC */ | 118 | /* MISC */ |
115 | GPIO10_GPIO, /* hotsync button */ | 119 | GPIO10_GPIO, /* hotsync button */ |
116 | GPIO90_GPIO, /* power detect */ | 120 | GPIO90_GPIO, /* power detect */ |
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c index 6c15d84bde53..83d020879581 100644 --- a/arch/arm/mach-pxa/palmtx.c +++ b/arch/arm/mach-pxa/palmtx.c | |||
@@ -127,6 +127,10 @@ static unsigned long palmtx_pin_config[] __initdata = { | |||
127 | GPIO76_LCD_PCLK, | 127 | GPIO76_LCD_PCLK, |
128 | GPIO77_LCD_BIAS, | 128 | GPIO77_LCD_BIAS, |
129 | 129 | ||
130 | /* FFUART */ | ||
131 | GPIO34_FFUART_RXD, | ||
132 | GPIO39_FFUART_TXD, | ||
133 | |||
130 | /* MISC. */ | 134 | /* MISC. */ |
131 | GPIO10_GPIO, /* hotsync button */ | 135 | GPIO10_GPIO, /* hotsync button */ |
132 | GPIO12_GPIO, /* power detect */ | 136 | GPIO12_GPIO, /* power detect */ |
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c index b88eb4dd2c84..c3645aa3fa3d 100644 --- a/arch/arm/mach-pxa/palmz72.c +++ b/arch/arm/mach-pxa/palmz72.c | |||
@@ -27,7 +27,9 @@ | |||
27 | #include <linux/pda_power.h> | 27 | #include <linux/pda_power.h> |
28 | #include <linux/pwm_backlight.h> | 28 | #include <linux/pwm_backlight.h> |
29 | #include <linux/gpio.h> | 29 | #include <linux/gpio.h> |
30 | #include <linux/wm97xx_batt.h> | ||
30 | #include <linux/power_supply.h> | 31 | #include <linux/power_supply.h> |
32 | #include <linux/usb/gpio_vbus.h> | ||
31 | 33 | ||
32 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
@@ -41,6 +43,8 @@ | |||
41 | #include <mach/irda.h> | 43 | #include <mach/irda.h> |
42 | #include <mach/pxa27x_keypad.h> | 44 | #include <mach/pxa27x_keypad.h> |
43 | #include <mach/udc.h> | 45 | #include <mach/udc.h> |
46 | #include <mach/palmasoc.h> | ||
47 | |||
44 | #include <mach/pm.h> | 48 | #include <mach/pm.h> |
45 | 49 | ||
46 | #include "generic.h" | 50 | #include "generic.h" |
@@ -66,6 +70,8 @@ static unsigned long palmz72_pin_config[] __initdata = { | |||
66 | GPIO29_AC97_SDATA_IN_0, | 70 | GPIO29_AC97_SDATA_IN_0, |
67 | GPIO30_AC97_SDATA_OUT, | 71 | GPIO30_AC97_SDATA_OUT, |
68 | GPIO31_AC97_SYNC, | 72 | GPIO31_AC97_SYNC, |
73 | GPIO89_AC97_SYSCLK, | ||
74 | GPIO113_AC97_nRESET, | ||
69 | 75 | ||
70 | /* IrDA */ | 76 | /* IrDA */ |
71 | GPIO49_GPIO, /* ir disable */ | 77 | GPIO49_GPIO, /* ir disable */ |
@@ -77,8 +83,7 @@ static unsigned long palmz72_pin_config[] __initdata = { | |||
77 | 83 | ||
78 | /* USB */ | 84 | /* USB */ |
79 | GPIO15_GPIO, /* usb detect */ | 85 | GPIO15_GPIO, /* usb detect */ |
80 | GPIO12_GPIO, /* usb pullup */ | 86 | GPIO95_GPIO, /* usb pullup */ |
81 | GPIO95_GPIO, /* usb power */ | ||
82 | 87 | ||
83 | /* Matrix keypad */ | 88 | /* Matrix keypad */ |
84 | GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, | 89 | GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, |
@@ -355,6 +360,22 @@ static struct platform_device palmz72_leds = { | |||
355 | }; | 360 | }; |
356 | 361 | ||
357 | /****************************************************************************** | 362 | /****************************************************************************** |
363 | * UDC | ||
364 | ******************************************************************************/ | ||
365 | static struct gpio_vbus_mach_info palmz72_udc_info = { | ||
366 | .gpio_vbus = GPIO_NR_PALMZ72_USB_DETECT_N, | ||
367 | .gpio_pullup = GPIO_NR_PALMZ72_USB_PULLUP, | ||
368 | }; | ||
369 | |||
370 | static struct platform_device palmz72_gpio_vbus = { | ||
371 | .name = "gpio-vbus", | ||
372 | .id = -1, | ||
373 | .dev = { | ||
374 | .platform_data = &palmz72_udc_info, | ||
375 | }, | ||
376 | }; | ||
377 | |||
378 | /****************************************************************************** | ||
358 | * Power supply | 379 | * Power supply |
359 | ******************************************************************************/ | 380 | ******************************************************************************/ |
360 | static int power_supply_init(struct device *dev) | 381 | static int power_supply_init(struct device *dev) |
@@ -422,6 +443,31 @@ static struct platform_device power_supply = { | |||
422 | }; | 443 | }; |
423 | 444 | ||
424 | /****************************************************************************** | 445 | /****************************************************************************** |
446 | * WM97xx battery | ||
447 | ******************************************************************************/ | ||
448 | static struct wm97xx_batt_info wm97xx_batt_pdata = { | ||
449 | .batt_aux = WM97XX_AUX_ID3, | ||
450 | .temp_aux = WM97XX_AUX_ID2, | ||
451 | .charge_gpio = -1, | ||
452 | .max_voltage = PALMZ72_BAT_MAX_VOLTAGE, | ||
453 | .min_voltage = PALMZ72_BAT_MIN_VOLTAGE, | ||
454 | .batt_mult = 1000, | ||
455 | .batt_div = 414, | ||
456 | .temp_mult = 1, | ||
457 | .temp_div = 1, | ||
458 | .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO, | ||
459 | .batt_name = "main-batt", | ||
460 | }; | ||
461 | |||
462 | /****************************************************************************** | ||
463 | * aSoC audio | ||
464 | ******************************************************************************/ | ||
465 | static struct platform_device palmz72_asoc = { | ||
466 | .name = "palm27x-asoc", | ||
467 | .id = -1, | ||
468 | }; | ||
469 | |||
470 | /****************************************************************************** | ||
425 | * Framebuffer | 471 | * Framebuffer |
426 | ******************************************************************************/ | 472 | ******************************************************************************/ |
427 | static struct pxafb_mode_info palmz72_lcd_modes[] = { | 473 | static struct pxafb_mode_info palmz72_lcd_modes[] = { |
@@ -527,17 +573,32 @@ device_initcall(palmz72_pm_init); | |||
527 | static struct platform_device *devices[] __initdata = { | 573 | static struct platform_device *devices[] __initdata = { |
528 | &palmz72_backlight, | 574 | &palmz72_backlight, |
529 | &palmz72_leds, | 575 | &palmz72_leds, |
576 | &palmz72_asoc, | ||
530 | &power_supply, | 577 | &power_supply, |
578 | &palmz72_gpio_vbus, | ||
531 | }; | 579 | }; |
532 | 580 | ||
581 | /* setup udc GPIOs initial state */ | ||
582 | static void __init palmz72_udc_init(void) | ||
583 | { | ||
584 | if (!gpio_request(GPIO_NR_PALMZ72_USB_PULLUP, "USB Pullup")) { | ||
585 | gpio_direction_output(GPIO_NR_PALMZ72_USB_PULLUP, 0); | ||
586 | gpio_free(GPIO_NR_PALMZ72_USB_PULLUP); | ||
587 | } | ||
588 | } | ||
589 | |||
533 | static void __init palmz72_init(void) | 590 | static void __init palmz72_init(void) |
534 | { | 591 | { |
535 | pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); | 592 | pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); |
593 | |||
536 | set_pxa_fb_info(&palmz72_lcd_screen); | 594 | set_pxa_fb_info(&palmz72_lcd_screen); |
537 | pxa_set_mci_info(&palmz72_mci_platform_data); | 595 | pxa_set_mci_info(&palmz72_mci_platform_data); |
596 | palmz72_udc_init(); | ||
538 | pxa_set_ac97_info(NULL); | 597 | pxa_set_ac97_info(NULL); |
539 | pxa_set_ficp_info(&palmz72_ficp_platform_data); | 598 | pxa_set_ficp_info(&palmz72_ficp_platform_data); |
540 | pxa_set_keypad_info(&palmz72_keypad_platform_data); | 599 | pxa_set_keypad_info(&palmz72_keypad_platform_data); |
600 | wm97xx_bat_set_pdata(&wm97xx_batt_pdata); | ||
601 | |||
541 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 602 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
542 | } | 603 | } |
543 | 604 | ||
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index ac431ed10399..9352d4a34837 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/mtd/physmap.h> | 23 | #include <linux/mtd/physmap.h> |
24 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
25 | #include <linux/i2c.h> | ||
25 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
26 | #include <linux/spi/ads7846.h> | 27 | #include <linux/spi/ads7846.h> |
27 | #include <linux/mtd/sharpsl.h> | 28 | #include <linux/mtd/sharpsl.h> |
@@ -486,6 +487,10 @@ static struct platform_device *devices[] __initdata = { | |||
486 | &sharpsl_rom_device, | 487 | &sharpsl_rom_device, |
487 | }; | 488 | }; |
488 | 489 | ||
490 | static struct i2c_board_info __initdata poodle_i2c_devices[] = { | ||
491 | { I2C_BOARD_INFO("wm8731", 0x1b) }, | ||
492 | }; | ||
493 | |||
489 | static void poodle_poweroff(void) | 494 | static void poodle_poweroff(void) |
490 | { | 495 | { |
491 | arm_machine_restart('h', NULL); | 496 | arm_machine_restart('h', NULL); |
@@ -519,6 +524,7 @@ static void __init poodle_init(void) | |||
519 | pxa_set_mci_info(&poodle_mci_platform_data); | 524 | pxa_set_mci_info(&poodle_mci_platform_data); |
520 | pxa_set_ficp_info(&poodle_ficp_platform_data); | 525 | pxa_set_ficp_info(&poodle_ficp_platform_data); |
521 | pxa_set_i2c_info(NULL); | 526 | pxa_set_i2c_info(NULL); |
527 | i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); | ||
522 | poodle_init_spi(); | 528 | poodle_init_spi(); |
523 | } | 529 | } |
524 | 530 | ||
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 6f678d93bf4e..09b7b1a10cad 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -250,7 +250,7 @@ static DEFINE_PXA3_CKEN(pxa3xx_mmc2, MMC2, 19500000, 0); | |||
250 | static struct clk_lookup pxa3xx_clkregs[] = { | 250 | static struct clk_lookup pxa3xx_clkregs[] = { |
251 | INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"), | 251 | INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"), |
252 | /* Power I2C clock is always on */ | 252 | /* Power I2C clock is always on */ |
253 | INIT_CLKREG(&clk_dummy, "pxa2xx-i2c.1", NULL), | 253 | INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), |
254 | INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL), | 254 | INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL), |
255 | INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"), | 255 | INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"), |
256 | INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"), | 256 | INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"), |
diff --git a/arch/arm/mach-pxa/treo680.c b/arch/arm/mach-pxa/treo680.c new file mode 100644 index 000000000000..753ec4df17b9 --- /dev/null +++ b/arch/arm/mach-pxa/treo680.c | |||
@@ -0,0 +1,612 @@ | |||
1 | /* | ||
2 | * Hardware definitions for Palm Treo 680 | ||
3 | * | ||
4 | * Author: Tomas Cech <sleep_walker@suse.cz> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * (find more info at www.hackndev.com) | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #include <linux/platform_device.h> | ||
15 | #include <linux/delay.h> | ||
16 | #include <linux/irq.h> | ||
17 | #include <linux/gpio_keys.h> | ||
18 | #include <linux/input.h> | ||
19 | #include <linux/pda_power.h> | ||
20 | #include <linux/pwm_backlight.h> | ||
21 | #include <linux/gpio.h> | ||
22 | #include <linux/wm97xx_batt.h> | ||
23 | #include <linux/power_supply.h> | ||
24 | #include <linux/sysdev.h> | ||
25 | #include <linux/w1-gpio.h> | ||
26 | |||
27 | #include <asm/mach-types.h> | ||
28 | #include <asm/mach/arch.h> | ||
29 | #include <asm/mach/map.h> | ||
30 | |||
31 | #include <mach/pxa27x.h> | ||
32 | #include <mach/pxa27x-udc.h> | ||
33 | #include <mach/audio.h> | ||
34 | #include <mach/treo680.h> | ||
35 | #include <mach/mmc.h> | ||
36 | #include <mach/pxafb.h> | ||
37 | #include <mach/irda.h> | ||
38 | #include <mach/pxa27x_keypad.h> | ||
39 | #include <mach/udc.h> | ||
40 | #include <mach/ohci.h> | ||
41 | #include <mach/pxa2xx-regs.h> | ||
42 | #include <mach/palmasoc.h> | ||
43 | #include <mach/camera.h> | ||
44 | |||
45 | #include <sound/pxa2xx-lib.h> | ||
46 | |||
47 | #include "generic.h" | ||
48 | #include "devices.h" | ||
49 | |||
50 | /****************************************************************************** | ||
51 | * Pin configuration | ||
52 | ******************************************************************************/ | ||
53 | static unsigned long treo680_pin_config[] __initdata = { | ||
54 | /* MMC */ | ||
55 | GPIO32_MMC_CLK, | ||
56 | GPIO92_MMC_DAT_0, | ||
57 | GPIO109_MMC_DAT_1, | ||
58 | GPIO110_MMC_DAT_2, | ||
59 | GPIO111_MMC_DAT_3, | ||
60 | GPIO112_MMC_CMD, | ||
61 | GPIO33_GPIO, /* SD read only */ | ||
62 | GPIO113_GPIO, /* SD detect */ | ||
63 | |||
64 | /* AC97 */ | ||
65 | GPIO28_AC97_BITCLK, | ||
66 | GPIO29_AC97_SDATA_IN_0, | ||
67 | GPIO30_AC97_SDATA_OUT, | ||
68 | GPIO31_AC97_SYNC, | ||
69 | GPIO89_AC97_SYSCLK, | ||
70 | GPIO95_AC97_nRESET, | ||
71 | |||
72 | /* IrDA */ | ||
73 | GPIO46_FICP_RXD, | ||
74 | GPIO47_FICP_TXD, | ||
75 | |||
76 | /* PWM */ | ||
77 | GPIO16_PWM0_OUT, | ||
78 | |||
79 | /* USB */ | ||
80 | GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, /* usb detect */ | ||
81 | |||
82 | /* MATRIX KEYPAD */ | ||
83 | GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, | ||
84 | GPIO101_KP_MKIN_1, | ||
85 | GPIO102_KP_MKIN_2, | ||
86 | GPIO97_KP_MKIN_3, | ||
87 | GPIO98_KP_MKIN_4, | ||
88 | GPIO99_KP_MKIN_5, | ||
89 | GPIO91_KP_MKIN_6, | ||
90 | GPIO13_KP_MKIN_7, | ||
91 | GPIO103_KP_MKOUT_0 | MFP_LPM_DRIVE_HIGH, | ||
92 | GPIO104_KP_MKOUT_1, | ||
93 | GPIO105_KP_MKOUT_2, | ||
94 | GPIO106_KP_MKOUT_3, | ||
95 | GPIO107_KP_MKOUT_4, | ||
96 | GPIO108_KP_MKOUT_5, | ||
97 | GPIO96_KP_MKOUT_6, | ||
98 | GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH, /* Hotsync button */ | ||
99 | |||
100 | /* LCD */ | ||
101 | GPIO58_LCD_LDD_0, | ||
102 | GPIO59_LCD_LDD_1, | ||
103 | GPIO60_LCD_LDD_2, | ||
104 | GPIO61_LCD_LDD_3, | ||
105 | GPIO62_LCD_LDD_4, | ||
106 | GPIO63_LCD_LDD_5, | ||
107 | GPIO64_LCD_LDD_6, | ||
108 | GPIO65_LCD_LDD_7, | ||
109 | GPIO66_LCD_LDD_8, | ||
110 | GPIO67_LCD_LDD_9, | ||
111 | GPIO68_LCD_LDD_10, | ||
112 | GPIO69_LCD_LDD_11, | ||
113 | GPIO70_LCD_LDD_12, | ||
114 | GPIO71_LCD_LDD_13, | ||
115 | GPIO72_LCD_LDD_14, | ||
116 | GPIO73_LCD_LDD_15, | ||
117 | GPIO74_LCD_FCLK, | ||
118 | GPIO75_LCD_LCLK, | ||
119 | GPIO76_LCD_PCLK, | ||
120 | |||
121 | /* Quick Capture Interface */ | ||
122 | GPIO84_CIF_FV, | ||
123 | GPIO85_CIF_LV, | ||
124 | GPIO53_CIF_MCLK, | ||
125 | GPIO54_CIF_PCLK, | ||
126 | GPIO81_CIF_DD_0, | ||
127 | GPIO55_CIF_DD_1, | ||
128 | GPIO51_CIF_DD_2, | ||
129 | GPIO50_CIF_DD_3, | ||
130 | GPIO52_CIF_DD_4, | ||
131 | GPIO48_CIF_DD_5, | ||
132 | GPIO17_CIF_DD_6, | ||
133 | GPIO12_CIF_DD_7, | ||
134 | |||
135 | /* I2C */ | ||
136 | GPIO117_I2C_SCL, | ||
137 | GPIO118_I2C_SDA, | ||
138 | |||
139 | /* GSM */ | ||
140 | GPIO14_GPIO | WAKEUP_ON_EDGE_BOTH, /* GSM host wake up */ | ||
141 | GPIO34_FFUART_RXD, | ||
142 | GPIO35_FFUART_CTS, | ||
143 | GPIO39_FFUART_TXD, | ||
144 | GPIO41_FFUART_RTS, | ||
145 | |||
146 | /* MISC. */ | ||
147 | GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* external power detect */ | ||
148 | GPIO15_GPIO | WAKEUP_ON_EDGE_BOTH, /* silent switch */ | ||
149 | GPIO116_GPIO, /* headphone detect */ | ||
150 | GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* bluetooth host wake up */ | ||
151 | }; | ||
152 | |||
153 | /****************************************************************************** | ||
154 | * SD/MMC card controller | ||
155 | ******************************************************************************/ | ||
156 | static int treo680_mci_init(struct device *dev, | ||
157 | irq_handler_t treo680_detect_int, void *data) | ||
158 | { | ||
159 | int err = 0; | ||
160 | |||
161 | /* Setup an interrupt for detecting card insert/remove events */ | ||
162 | err = gpio_request(GPIO_NR_TREO680_SD_DETECT_N, "SD IRQ"); | ||
163 | |||
164 | if (err) | ||
165 | goto err; | ||
166 | |||
167 | err = gpio_direction_input(GPIO_NR_TREO680_SD_DETECT_N); | ||
168 | if (err) | ||
169 | goto err2; | ||
170 | |||
171 | err = request_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N), | ||
172 | treo680_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM | | ||
173 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | ||
174 | "SD/MMC card detect", data); | ||
175 | |||
176 | if (err) { | ||
177 | dev_err(dev, "%s: cannot request SD/MMC card detect IRQ\n", | ||
178 | __func__); | ||
179 | goto err2; | ||
180 | } | ||
181 | |||
182 | err = gpio_request(GPIO_NR_TREO680_SD_POWER, "SD_POWER"); | ||
183 | if (err) | ||
184 | goto err3; | ||
185 | |||
186 | err = gpio_direction_output(GPIO_NR_TREO680_SD_POWER, 1); | ||
187 | if (err) | ||
188 | goto err4; | ||
189 | |||
190 | err = gpio_request(GPIO_NR_TREO680_SD_READONLY, "SD_READONLY"); | ||
191 | if (err) | ||
192 | goto err4; | ||
193 | |||
194 | err = gpio_direction_input(GPIO_NR_TREO680_SD_READONLY); | ||
195 | if (err) | ||
196 | goto err5; | ||
197 | |||
198 | return 0; | ||
199 | |||
200 | err5: | ||
201 | gpio_free(GPIO_NR_TREO680_SD_READONLY); | ||
202 | err4: | ||
203 | gpio_free(GPIO_NR_TREO680_SD_POWER); | ||
204 | err3: | ||
205 | free_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N), data); | ||
206 | err2: | ||
207 | gpio_free(GPIO_NR_TREO680_SD_DETECT_N); | ||
208 | err: | ||
209 | return err; | ||
210 | } | ||
211 | |||
212 | static void treo680_mci_exit(struct device *dev, void *data) | ||
213 | { | ||
214 | gpio_free(GPIO_NR_TREO680_SD_READONLY); | ||
215 | gpio_free(GPIO_NR_TREO680_SD_POWER); | ||
216 | free_irq(gpio_to_irq(GPIO_NR_TREO680_SD_DETECT_N), data); | ||
217 | gpio_free(GPIO_NR_TREO680_SD_DETECT_N); | ||
218 | } | ||
219 | |||
220 | static void treo680_mci_power(struct device *dev, unsigned int vdd) | ||
221 | { | ||
222 | struct pxamci_platform_data *p_d = dev->platform_data; | ||
223 | gpio_set_value(GPIO_NR_TREO680_SD_POWER, p_d->ocr_mask & (1 << vdd)); | ||
224 | } | ||
225 | |||
226 | static int treo680_mci_get_ro(struct device *dev) | ||
227 | { | ||
228 | return gpio_get_value(GPIO_NR_TREO680_SD_READONLY); | ||
229 | } | ||
230 | |||
231 | static struct pxamci_platform_data treo680_mci_platform_data = { | ||
232 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
233 | .setpower = treo680_mci_power, | ||
234 | .get_ro = treo680_mci_get_ro, | ||
235 | .init = treo680_mci_init, | ||
236 | .exit = treo680_mci_exit, | ||
237 | }; | ||
238 | |||
239 | /****************************************************************************** | ||
240 | * GPIO keyboard | ||
241 | ******************************************************************************/ | ||
242 | static unsigned int treo680_matrix_keys[] = { | ||
243 | KEY(0, 0, KEY_F8), /* Red/Off/Power */ | ||
244 | KEY(0, 1, KEY_LEFT), | ||
245 | KEY(0, 2, KEY_LEFTCTRL), /* Alternate */ | ||
246 | KEY(0, 3, KEY_L), | ||
247 | KEY(0, 4, KEY_A), | ||
248 | KEY(0, 5, KEY_Q), | ||
249 | KEY(0, 6, KEY_P), | ||
250 | |||
251 | KEY(1, 0, KEY_RIGHTCTRL), /* Menu */ | ||
252 | KEY(1, 1, KEY_RIGHT), | ||
253 | KEY(1, 2, KEY_LEFTSHIFT), /* Left shift */ | ||
254 | KEY(1, 3, KEY_Z), | ||
255 | KEY(1, 4, KEY_S), | ||
256 | KEY(1, 5, KEY_W), | ||
257 | |||
258 | KEY(2, 0, KEY_F1), /* Phone */ | ||
259 | KEY(2, 1, KEY_UP), | ||
260 | KEY(2, 2, KEY_0), | ||
261 | KEY(2, 3, KEY_X), | ||
262 | KEY(2, 4, KEY_D), | ||
263 | KEY(2, 5, KEY_E), | ||
264 | |||
265 | KEY(3, 0, KEY_F10), /* Calendar */ | ||
266 | KEY(3, 1, KEY_DOWN), | ||
267 | KEY(3, 2, KEY_SPACE), | ||
268 | KEY(3, 3, KEY_C), | ||
269 | KEY(3, 4, KEY_F), | ||
270 | KEY(3, 5, KEY_R), | ||
271 | |||
272 | KEY(4, 0, KEY_F12), /* Mail */ | ||
273 | KEY(4, 1, KEY_KPENTER), | ||
274 | KEY(4, 2, KEY_RIGHTALT), /* Alt */ | ||
275 | KEY(4, 3, KEY_V), | ||
276 | KEY(4, 4, KEY_G), | ||
277 | KEY(4, 5, KEY_T), | ||
278 | |||
279 | KEY(5, 0, KEY_F9), /* Home */ | ||
280 | KEY(5, 1, KEY_PAGEUP), /* Side up */ | ||
281 | KEY(5, 2, KEY_DOT), | ||
282 | KEY(5, 3, KEY_B), | ||
283 | KEY(5, 4, KEY_H), | ||
284 | KEY(5, 5, KEY_Y), | ||
285 | |||
286 | KEY(6, 0, KEY_TAB), /* Side Activate */ | ||
287 | KEY(6, 1, KEY_PAGEDOWN), /* Side down */ | ||
288 | KEY(6, 2, KEY_ENTER), | ||
289 | KEY(6, 3, KEY_N), | ||
290 | KEY(6, 4, KEY_J), | ||
291 | KEY(6, 5, KEY_U), | ||
292 | |||
293 | KEY(7, 0, KEY_F6), /* Green/Call */ | ||
294 | KEY(7, 1, KEY_O), | ||
295 | KEY(7, 2, KEY_BACKSPACE), | ||
296 | KEY(7, 3, KEY_M), | ||
297 | KEY(7, 4, KEY_K), | ||
298 | KEY(7, 5, KEY_I), | ||
299 | }; | ||
300 | |||
301 | static struct pxa27x_keypad_platform_data treo680_keypad_platform_data = { | ||
302 | .matrix_key_rows = 8, | ||
303 | .matrix_key_cols = 7, | ||
304 | .matrix_key_map = treo680_matrix_keys, | ||
305 | .matrix_key_map_size = ARRAY_SIZE(treo680_matrix_keys), | ||
306 | .direct_key_map = { KEY_CONNECT }, | ||
307 | .direct_key_num = 1, | ||
308 | |||
309 | .debounce_interval = 30, | ||
310 | }; | ||
311 | |||
312 | /****************************************************************************** | ||
313 | * aSoC audio | ||
314 | ******************************************************************************/ | ||
315 | |||
316 | static pxa2xx_audio_ops_t treo680_ac97_pdata = { | ||
317 | .reset_gpio = 95, | ||
318 | }; | ||
319 | |||
320 | /****************************************************************************** | ||
321 | * Backlight | ||
322 | ******************************************************************************/ | ||
323 | static int treo680_backlight_init(struct device *dev) | ||
324 | { | ||
325 | int ret; | ||
326 | |||
327 | ret = gpio_request(GPIO_NR_TREO680_BL_POWER, "BL POWER"); | ||
328 | if (ret) | ||
329 | goto err; | ||
330 | ret = gpio_direction_output(GPIO_NR_TREO680_BL_POWER, 0); | ||
331 | if (ret) | ||
332 | goto err2; | ||
333 | ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER"); | ||
334 | if (ret) | ||
335 | goto err2; | ||
336 | ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0); | ||
337 | if (ret) | ||
338 | goto err3; | ||
339 | |||
340 | return 0; | ||
341 | err3: | ||
342 | gpio_free(GPIO_NR_TREO680_LCD_POWER); | ||
343 | err2: | ||
344 | gpio_free(GPIO_NR_TREO680_BL_POWER); | ||
345 | err: | ||
346 | return ret; | ||
347 | } | ||
348 | |||
349 | static int treo680_backlight_notify(int brightness) | ||
350 | { | ||
351 | gpio_set_value(GPIO_NR_TREO680_BL_POWER, brightness); | ||
352 | return TREO680_MAX_INTENSITY - brightness; | ||
353 | }; | ||
354 | |||
355 | static void treo680_backlight_exit(struct device *dev) | ||
356 | { | ||
357 | gpio_free(GPIO_NR_TREO680_BL_POWER); | ||
358 | gpio_free(GPIO_NR_TREO680_LCD_POWER); | ||
359 | } | ||
360 | |||
361 | static struct platform_pwm_backlight_data treo680_backlight_data = { | ||
362 | .pwm_id = 0, | ||
363 | .max_brightness = TREO680_MAX_INTENSITY, | ||
364 | .dft_brightness = TREO680_DEFAULT_INTENSITY, | ||
365 | .pwm_period_ns = TREO680_PERIOD_NS, | ||
366 | .init = treo680_backlight_init, | ||
367 | .notify = treo680_backlight_notify, | ||
368 | .exit = treo680_backlight_exit, | ||
369 | }; | ||
370 | |||
371 | static struct platform_device treo680_backlight = { | ||
372 | .name = "pwm-backlight", | ||
373 | .dev = { | ||
374 | .parent = &pxa27x_device_pwm0.dev, | ||
375 | .platform_data = &treo680_backlight_data, | ||
376 | }, | ||
377 | }; | ||
378 | |||
379 | /****************************************************************************** | ||
380 | * IrDA | ||
381 | ******************************************************************************/ | ||
382 | static void treo680_transceiver_mode(struct device *dev, int mode) | ||
383 | { | ||
384 | gpio_set_value(GPIO_NR_TREO680_IR_EN, mode & IR_OFF); | ||
385 | pxa2xx_transceiver_mode(dev, mode); | ||
386 | } | ||
387 | |||
388 | static int treo680_irda_startup(struct device *dev) | ||
389 | { | ||
390 | int err; | ||
391 | |||
392 | err = gpio_request(GPIO_NR_TREO680_IR_EN, "Ir port disable"); | ||
393 | if (err) | ||
394 | goto err1; | ||
395 | |||
396 | err = gpio_direction_output(GPIO_NR_TREO680_IR_EN, 1); | ||
397 | if (err) | ||
398 | goto err2; | ||
399 | |||
400 | return 0; | ||
401 | |||
402 | err2: | ||
403 | dev_err(dev, "treo680_irda: cannot change IR gpio direction\n"); | ||
404 | gpio_free(GPIO_NR_TREO680_IR_EN); | ||
405 | err1: | ||
406 | dev_err(dev, "treo680_irda: cannot allocate IR gpio\n"); | ||
407 | return err; | ||
408 | } | ||
409 | |||
410 | static void treo680_irda_shutdown(struct device *dev) | ||
411 | { | ||
412 | gpio_free(GPIO_NR_TREO680_IR_EN); | ||
413 | } | ||
414 | |||
415 | static struct pxaficp_platform_data treo680_ficp_info = { | ||
416 | .transceiver_cap = IR_FIRMODE | IR_SIRMODE | IR_OFF, | ||
417 | .startup = treo680_irda_startup, | ||
418 | .shutdown = treo680_irda_shutdown, | ||
419 | .transceiver_mode = treo680_transceiver_mode, | ||
420 | }; | ||
421 | |||
422 | /****************************************************************************** | ||
423 | * UDC | ||
424 | ******************************************************************************/ | ||
425 | static struct pxa2xx_udc_mach_info treo680_udc_info __initdata = { | ||
426 | .gpio_vbus = GPIO_NR_TREO680_USB_DETECT, | ||
427 | .gpio_vbus_inverted = 1, | ||
428 | .gpio_pullup = GPIO_NR_TREO680_USB_PULLUP, | ||
429 | }; | ||
430 | |||
431 | |||
432 | /****************************************************************************** | ||
433 | * USB host | ||
434 | ******************************************************************************/ | ||
435 | static struct pxaohci_platform_data treo680_ohci_info = { | ||
436 | .port_mode = PMM_PERPORT_MODE, | ||
437 | .flags = ENABLE_PORT1 | ENABLE_PORT3, | ||
438 | .power_budget = 0, | ||
439 | }; | ||
440 | |||
441 | /****************************************************************************** | ||
442 | * Power supply | ||
443 | ******************************************************************************/ | ||
444 | static int power_supply_init(struct device *dev) | ||
445 | { | ||
446 | int ret; | ||
447 | |||
448 | ret = gpio_request(GPIO_NR_TREO680_POWER_DETECT, "CABLE_STATE_AC"); | ||
449 | if (ret) | ||
450 | goto err1; | ||
451 | ret = gpio_direction_input(GPIO_NR_TREO680_POWER_DETECT); | ||
452 | if (ret) | ||
453 | goto err2; | ||
454 | |||
455 | return 0; | ||
456 | |||
457 | err2: | ||
458 | gpio_free(GPIO_NR_TREO680_POWER_DETECT); | ||
459 | err1: | ||
460 | return ret; | ||
461 | } | ||
462 | |||
463 | static int treo680_is_ac_online(void) | ||
464 | { | ||
465 | return gpio_get_value(GPIO_NR_TREO680_POWER_DETECT); | ||
466 | } | ||
467 | |||
468 | static void power_supply_exit(struct device *dev) | ||
469 | { | ||
470 | gpio_free(GPIO_NR_TREO680_POWER_DETECT); | ||
471 | } | ||
472 | |||
473 | static char *treo680_supplicants[] = { | ||
474 | "main-battery", | ||
475 | }; | ||
476 | |||
477 | static struct pda_power_pdata power_supply_info = { | ||
478 | .init = power_supply_init, | ||
479 | .is_ac_online = treo680_is_ac_online, | ||
480 | .exit = power_supply_exit, | ||
481 | .supplied_to = treo680_supplicants, | ||
482 | .num_supplicants = ARRAY_SIZE(treo680_supplicants), | ||
483 | }; | ||
484 | |||
485 | static struct platform_device power_supply = { | ||
486 | .name = "pda-power", | ||
487 | .id = -1, | ||
488 | .dev = { | ||
489 | .platform_data = &power_supply_info, | ||
490 | }, | ||
491 | }; | ||
492 | |||
493 | /****************************************************************************** | ||
494 | * Vibra and LEDs | ||
495 | ******************************************************************************/ | ||
496 | static struct gpio_led gpio_leds[] = { | ||
497 | { | ||
498 | .name = "treo680:vibra:vibra", | ||
499 | .default_trigger = "none", | ||
500 | .gpio = GPIO_NR_TREO680_VIBRATE_EN, | ||
501 | }, | ||
502 | { | ||
503 | .name = "treo680:green:led", | ||
504 | .default_trigger = "mmc0", | ||
505 | .gpio = GPIO_NR_TREO680_GREEN_LED, | ||
506 | }, | ||
507 | { | ||
508 | .name = "treo680:keybbl:keybbl", | ||
509 | .default_trigger = "none", | ||
510 | .gpio = GPIO_NR_TREO680_KEYB_BL, | ||
511 | }, | ||
512 | }; | ||
513 | |||
514 | static struct gpio_led_platform_data gpio_led_info = { | ||
515 | .leds = gpio_leds, | ||
516 | .num_leds = ARRAY_SIZE(gpio_leds), | ||
517 | }; | ||
518 | |||
519 | static struct platform_device treo680_leds = { | ||
520 | .name = "leds-gpio", | ||
521 | .id = -1, | ||
522 | .dev = { | ||
523 | .platform_data = &gpio_led_info, | ||
524 | } | ||
525 | }; | ||
526 | |||
527 | |||
528 | /****************************************************************************** | ||
529 | * Framebuffer | ||
530 | ******************************************************************************/ | ||
531 | /* TODO: add support for 324x324 */ | ||
532 | static struct pxafb_mode_info treo680_lcd_modes[] = { | ||
533 | { | ||
534 | .pixclock = 86538, | ||
535 | .xres = 320, | ||
536 | .yres = 320, | ||
537 | .bpp = 16, | ||
538 | |||
539 | .left_margin = 20, | ||
540 | .right_margin = 8, | ||
541 | .upper_margin = 8, | ||
542 | .lower_margin = 5, | ||
543 | |||
544 | .hsync_len = 4, | ||
545 | .vsync_len = 1, | ||
546 | }, | ||
547 | }; | ||
548 | |||
549 | static struct pxafb_mach_info treo680_lcd_screen = { | ||
550 | .modes = treo680_lcd_modes, | ||
551 | .num_modes = ARRAY_SIZE(treo680_lcd_modes), | ||
552 | .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, | ||
553 | }; | ||
554 | |||
555 | /****************************************************************************** | ||
556 | * Power management - standby | ||
557 | ******************************************************************************/ | ||
558 | static void __init treo680_pm_init(void) | ||
559 | { | ||
560 | static u32 resume[] = { | ||
561 | 0xe3a00101, /* mov r0, #0x40000000 */ | ||
562 | 0xe380060f, /* orr r0, r0, #0x00f00000 */ | ||
563 | 0xe590f008, /* ldr pc, [r0, #0x08] */ | ||
564 | }; | ||
565 | |||
566 | /* this is where the bootloader jumps */ | ||
567 | memcpy(phys_to_virt(TREO680_STR_BASE), resume, sizeof(resume)); | ||
568 | } | ||
569 | |||
570 | /****************************************************************************** | ||
571 | * Machine init | ||
572 | ******************************************************************************/ | ||
573 | static struct platform_device *devices[] __initdata = { | ||
574 | &treo680_backlight, | ||
575 | &treo680_leds, | ||
576 | &power_supply, | ||
577 | }; | ||
578 | |||
579 | /* setup udc GPIOs initial state */ | ||
580 | static void __init treo680_udc_init(void) | ||
581 | { | ||
582 | if (!gpio_request(GPIO_NR_TREO680_USB_PULLUP, "UDC Vbus")) { | ||
583 | gpio_direction_output(GPIO_NR_TREO680_USB_PULLUP, 1); | ||
584 | gpio_free(GPIO_NR_TREO680_USB_PULLUP); | ||
585 | } | ||
586 | } | ||
587 | |||
588 | static void __init treo680_init(void) | ||
589 | { | ||
590 | treo680_pm_init(); | ||
591 | pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config)); | ||
592 | pxa_set_keypad_info(&treo680_keypad_platform_data); | ||
593 | set_pxa_fb_info(&treo680_lcd_screen); | ||
594 | pxa_set_mci_info(&treo680_mci_platform_data); | ||
595 | treo680_udc_init(); | ||
596 | pxa_set_udc_info(&treo680_udc_info); | ||
597 | pxa_set_ac97_info(&treo680_ac97_pdata); | ||
598 | pxa_set_ficp_info(&treo680_ficp_info); | ||
599 | pxa_set_ohci_info(&treo680_ohci_info); | ||
600 | |||
601 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
602 | } | ||
603 | |||
604 | MACHINE_START(TREO680, "Palm Treo 680") | ||
605 | .phys_io = TREO680_PHYS_IO_START, | ||
606 | .io_pg_offst = io_p2v(0x40000000), | ||
607 | .boot_params = 0xa0000100, | ||
608 | .map_io = pxa_map_io, | ||
609 | .init_irq = pxa27x_init_irq, | ||
610 | .timer = &pxa_timer, | ||
611 | .init_machine = treo680_init, | ||
612 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c b/arch/arm/mach-pxa/zylonite_pxa300.c index cefd1c0a854a..84095440a878 100644 --- a/arch/arm/mach-pxa/zylonite_pxa300.c +++ b/arch/arm/mach-pxa/zylonite_pxa300.c | |||
@@ -197,10 +197,12 @@ static void __init zylonite_detect_lcd_panel(void) | |||
197 | for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { | 197 | for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { |
198 | id = id << 1; | 198 | id = id << 1; |
199 | gpio = mfp_to_gpio(lcd_detect_pins[i]); | 199 | gpio = mfp_to_gpio(lcd_detect_pins[i]); |
200 | gpio_request(gpio, "LCD_ID_PINS"); | ||
200 | gpio_direction_input(gpio); | 201 | gpio_direction_input(gpio); |
201 | 202 | ||
202 | if (gpio_get_value(gpio)) | 203 | if (gpio_get_value(gpio)) |
203 | id = id | 0x1; | 204 | id = id | 0x1; |
205 | gpio_free(gpio); | ||
204 | } | 206 | } |
205 | 207 | ||
206 | /* lcd id, flush out bit 1 */ | 208 | /* lcd id, flush out bit 1 */ |
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c b/arch/arm/mach-pxa/zylonite_pxa320.c index cc5a22833605..60d08f23f5e4 100644 --- a/arch/arm/mach-pxa/zylonite_pxa320.c +++ b/arch/arm/mach-pxa/zylonite_pxa320.c | |||
@@ -176,10 +176,12 @@ static void __init zylonite_detect_lcd_panel(void) | |||
176 | for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { | 176 | for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { |
177 | id = id << 1; | 177 | id = id << 1; |
178 | gpio = mfp_to_gpio(lcd_detect_pins[i]); | 178 | gpio = mfp_to_gpio(lcd_detect_pins[i]); |
179 | gpio_request(gpio, "LCD_ID_PINS"); | ||
179 | gpio_direction_input(gpio); | 180 | gpio_direction_input(gpio); |
180 | 181 | ||
181 | if (gpio_get_value(gpio)) | 182 | if (gpio_get_value(gpio)) |
182 | id = id | 0x1; | 183 | id = id | 0x1; |
184 | gpio_free(gpio); | ||
183 | } | 185 | } |
184 | 186 | ||
185 | /* lcd id, flush out bit 1 */ | 187 | /* lcd id, flush out bit 1 */ |
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index 9ea9c05093cd..facbd49eec67 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -208,8 +208,7 @@ struct platform_device realview_i2c_device = { | |||
208 | 208 | ||
209 | static struct i2c_board_info realview_i2c_board_info[] = { | 209 | static struct i2c_board_info realview_i2c_board_info[] = { |
210 | { | 210 | { |
211 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | 211 | I2C_BOARD_INFO("ds1338", 0xd0 >> 1), |
212 | .type = "ds1338", | ||
213 | }, | 212 | }, |
214 | }; | 213 | }; |
215 | 214 | ||
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c index 1fe294d0bf9d..ede2a57240a3 100644 --- a/arch/arm/mach-realview/realview_pbx.c +++ b/arch/arm/mach-realview/realview_pbx.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
28 | #include <asm/leds.h> | 28 | #include <asm/leds.h> |
29 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
30 | #include <asm/smp_twd.h> | ||
30 | #include <asm/hardware/gic.h> | 31 | #include <asm/hardware/gic.h> |
31 | #include <asm/hardware/cache-l2x0.h> | 32 | #include <asm/hardware/cache-l2x0.h> |
32 | 33 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/gpio-core.h b/arch/arm/mach-s3c2410/include/mach/gpio-core.h index 8fe192081d3a..f8b879a7973c 100644 --- a/arch/arm/mach-s3c2410/include/mach/gpio-core.h +++ b/arch/arm/mach-s3c2410/include/mach/gpio-core.h | |||
@@ -28,7 +28,7 @@ static inline struct s3c_gpio_chip *s3c_gpiolib_getchip(unsigned int pin) | |||
28 | return NULL; | 28 | return NULL; |
29 | 29 | ||
30 | chip = &s3c24xx_gpios[pin/32]; | 30 | chip = &s3c24xx_gpios[pin/32]; |
31 | return (S3C2410_GPIO_OFFSET(pin) > chip->chip.ngpio) ? chip : NULL; | 31 | return (S3C2410_GPIO_OFFSET(pin) < chip->chip.ngpio) ? chip : NULL; |
32 | } | 32 | } |
33 | 33 | ||
34 | #endif /* __ASM_ARCH_GPIO_CORE_H */ | 34 | #endif /* __ASM_ARCH_GPIO_CORE_H */ |
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 | ||
87 | config 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 | |||
87 | endmenu | 97 | endmenu |
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 | |||
22 | obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o | 22 | obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o |
23 | obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o | 23 | obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o |
24 | obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o | 24 | obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o |
25 | obj-$(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..ec71a6965786 --- /dev/null +++ b/arch/arm/mach-s3c2440/mach-mini2440.c | |||
@@ -0,0 +1,702 @@ | |||
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 <linux/mtd/mtd.h> | ||
52 | #include <linux/mtd/nand.h> | ||
53 | #include <linux/mtd/nand_ecc.h> | ||
54 | #include <linux/mtd/partitions.h> | ||
55 | |||
56 | #include <plat/clock.h> | ||
57 | #include <plat/devs.h> | ||
58 | #include <plat/cpu.h> | ||
59 | |||
60 | #include <sound/s3c24xx_uda134x.h> | ||
61 | |||
62 | #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) | ||
63 | |||
64 | static struct map_desc mini2440_iodesc[] __initdata = { | ||
65 | /* nothing to declare, move along */ | ||
66 | }; | ||
67 | |||
68 | #define UCON S3C2410_UCON_DEFAULT | ||
69 | #define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB | ||
70 | #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE | ||
71 | |||
72 | |||
73 | static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = { | ||
74 | [0] = { | ||
75 | .hwport = 0, | ||
76 | .flags = 0, | ||
77 | .ucon = UCON, | ||
78 | .ulcon = ULCON, | ||
79 | .ufcon = UFCON, | ||
80 | }, | ||
81 | [1] = { | ||
82 | .hwport = 1, | ||
83 | .flags = 0, | ||
84 | .ucon = UCON, | ||
85 | .ulcon = ULCON, | ||
86 | .ufcon = UFCON, | ||
87 | }, | ||
88 | [2] = { | ||
89 | .hwport = 2, | ||
90 | .flags = 0, | ||
91 | .ucon = UCON, | ||
92 | .ulcon = ULCON, | ||
93 | .ufcon = UFCON, | ||
94 | }, | ||
95 | }; | ||
96 | |||
97 | /* USB device UDC support */ | ||
98 | |||
99 | static void mini2440_udc_pullup(enum s3c2410_udc_cmd_e cmd) | ||
100 | { | ||
101 | pr_debug("udc: pullup(%d)\n", cmd); | ||
102 | |||
103 | switch (cmd) { | ||
104 | case S3C2410_UDC_P_ENABLE : | ||
105 | s3c2410_gpio_setpin(S3C2410_GPC(5), 1); | ||
106 | break; | ||
107 | case S3C2410_UDC_P_DISABLE : | ||
108 | s3c2410_gpio_setpin(S3C2410_GPC(5), 0); | ||
109 | break; | ||
110 | case S3C2410_UDC_P_RESET : | ||
111 | break; | ||
112 | default: | ||
113 | break; | ||
114 | } | ||
115 | } | ||
116 | |||
117 | static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = { | ||
118 | .udc_command = mini2440_udc_pullup, | ||
119 | }; | ||
120 | |||
121 | |||
122 | /* LCD timing and setup */ | ||
123 | |||
124 | /* | ||
125 | * This macro simplifies the table bellow | ||
126 | */ | ||
127 | #define _LCD_DECLARE(_clock,_xres,margin_left,margin_right,hsync, \ | ||
128 | _yres,margin_top,margin_bottom,vsync, refresh) \ | ||
129 | .width = _xres, \ | ||
130 | .xres = _xres, \ | ||
131 | .height = _yres, \ | ||
132 | .yres = _yres, \ | ||
133 | .left_margin = margin_left, \ | ||
134 | .right_margin = margin_right, \ | ||
135 | .upper_margin = margin_top, \ | ||
136 | .lower_margin = margin_bottom, \ | ||
137 | .hsync_len = hsync, \ | ||
138 | .vsync_len = vsync, \ | ||
139 | .pixclock = ((_clock*100000000000LL) / \ | ||
140 | ((refresh) * \ | ||
141 | (hsync + margin_left + _xres + margin_right) * \ | ||
142 | (vsync + margin_top + _yres + margin_bottom))), \ | ||
143 | .bpp = 16,\ | ||
144 | .type = (S3C2410_LCDCON1_TFT16BPP |\ | ||
145 | S3C2410_LCDCON1_TFT) | ||
146 | |||
147 | struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = { | ||
148 | [0] = { /* mini2440 + 3.5" TFT + touchscreen */ | ||
149 | _LCD_DECLARE( | ||
150 | 7, /* The 3.5 is quite fast */ | ||
151 | 240, 21, 38, 6, /* x timing */ | ||
152 | 320, 4, 4, 2, /* y timing */ | ||
153 | 60), /* refresh rate */ | ||
154 | .lcdcon5 = (S3C2410_LCDCON5_FRM565 | | ||
155 | S3C2410_LCDCON5_INVVLINE | | ||
156 | S3C2410_LCDCON5_INVVFRAME | | ||
157 | S3C2410_LCDCON5_INVVDEN | | ||
158 | S3C2410_LCDCON5_PWREN), | ||
159 | }, | ||
160 | [1] = { /* mini2440 + 7" TFT + touchscreen */ | ||
161 | _LCD_DECLARE( | ||
162 | 10, /* the 7" runs slower */ | ||
163 | 800, 40, 40, 48, /* x timing */ | ||
164 | 480, 29, 3, 3, /* y timing */ | ||
165 | 50), /* refresh rate */ | ||
166 | .lcdcon5 = (S3C2410_LCDCON5_FRM565 | | ||
167 | S3C2410_LCDCON5_INVVLINE | | ||
168 | S3C2410_LCDCON5_INVVFRAME | | ||
169 | S3C2410_LCDCON5_PWREN), | ||
170 | }, | ||
171 | /* The VGA shield can outout at several resolutions. All share | ||
172 | * the same timings, however, anything smaller than 1024x768 | ||
173 | * will only be displayed in the top left corner of a 1024x768 | ||
174 | * XGA output unless you add optional dip switches to the shield. | ||
175 | * Therefore timings for other resolutions have been ommited here. | ||
176 | */ | ||
177 | [2] = { | ||
178 | _LCD_DECLARE( | ||
179 | 10, | ||
180 | 1024, 1, 2, 2, /* y timing */ | ||
181 | 768, 200, 16, 16, /* x timing */ | ||
182 | 24), /* refresh rate, maximum stable, | ||
183 | tested with the FPGA shield */ | ||
184 | .lcdcon5 = (S3C2410_LCDCON5_FRM565 | | ||
185 | S3C2410_LCDCON5_HWSWP), | ||
186 | }, | ||
187 | }; | ||
188 | |||
189 | /* todo - put into gpio header */ | ||
190 | |||
191 | #define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2)) | ||
192 | #define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2)) | ||
193 | |||
194 | struct s3c2410fb_mach_info mini2440_fb_info __initdata = { | ||
195 | .displays = &mini2440_lcd_cfg[0], /* not constant! see init */ | ||
196 | .num_displays = 1, | ||
197 | .default_display = 0, | ||
198 | |||
199 | /* Enable VD[2..7], VD[10..15], VD[18..23] and VCLK, syncs, VDEN | ||
200 | * and disable the pull down resistors on pins we are using for LCD | ||
201 | * data. */ | ||
202 | |||
203 | .gpcup = (0xf << 1) | (0x3f << 10), | ||
204 | |||
205 | .gpccon = (S3C2410_GPC1_VCLK | S3C2410_GPC2_VLINE | | ||
206 | S3C2410_GPC3_VFRAME | S3C2410_GPC4_VM | | ||
207 | S3C2410_GPC10_VD2 | S3C2410_GPC11_VD3 | | ||
208 | S3C2410_GPC12_VD4 | S3C2410_GPC13_VD5 | | ||
209 | S3C2410_GPC14_VD6 | S3C2410_GPC15_VD7), | ||
210 | |||
211 | .gpccon_mask = (S3C2410_GPCCON_MASK(1) | S3C2410_GPCCON_MASK(2) | | ||
212 | S3C2410_GPCCON_MASK(3) | S3C2410_GPCCON_MASK(4) | | ||
213 | S3C2410_GPCCON_MASK(10) | S3C2410_GPCCON_MASK(11) | | ||
214 | S3C2410_GPCCON_MASK(12) | S3C2410_GPCCON_MASK(13) | | ||
215 | S3C2410_GPCCON_MASK(14) | S3C2410_GPCCON_MASK(15)), | ||
216 | |||
217 | .gpdup = (0x3f << 2) | (0x3f << 10), | ||
218 | |||
219 | .gpdcon = (S3C2410_GPD2_VD10 | S3C2410_GPD3_VD11 | | ||
220 | S3C2410_GPD4_VD12 | S3C2410_GPD5_VD13 | | ||
221 | S3C2410_GPD6_VD14 | S3C2410_GPD7_VD15 | | ||
222 | S3C2410_GPD10_VD18 | S3C2410_GPD11_VD19 | | ||
223 | S3C2410_GPD12_VD20 | S3C2410_GPD13_VD21 | | ||
224 | S3C2410_GPD14_VD22 | S3C2410_GPD15_VD23), | ||
225 | |||
226 | .gpdcon_mask = (S3C2410_GPDCON_MASK(2) | S3C2410_GPDCON_MASK(3) | | ||
227 | S3C2410_GPDCON_MASK(4) | S3C2410_GPDCON_MASK(5) | | ||
228 | S3C2410_GPDCON_MASK(6) | S3C2410_GPDCON_MASK(7) | | ||
229 | S3C2410_GPDCON_MASK(10) | S3C2410_GPDCON_MASK(11)| | ||
230 | S3C2410_GPDCON_MASK(12) | S3C2410_GPDCON_MASK(13)| | ||
231 | S3C2410_GPDCON_MASK(14) | S3C2410_GPDCON_MASK(15)), | ||
232 | }; | ||
233 | |||
234 | /* MMC/SD */ | ||
235 | |||
236 | static struct s3c24xx_mci_pdata mini2440_mmc_cfg __initdata = { | ||
237 | .gpio_detect = S3C2410_GPG(8), | ||
238 | .gpio_wprotect = S3C2410_GPH(8), | ||
239 | .set_power = NULL, | ||
240 | .ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34, | ||
241 | }; | ||
242 | |||
243 | /* NAND Flash on MINI2440 board */ | ||
244 | |||
245 | static struct mtd_partition mini2440_default_nand_part[] __initdata = { | ||
246 | [0] = { | ||
247 | .name = "u-boot", | ||
248 | .size = SZ_256K, | ||
249 | .offset = 0, | ||
250 | }, | ||
251 | [1] = { | ||
252 | .name = "u-boot-env", | ||
253 | .size = SZ_128K, | ||
254 | .offset = SZ_256K, | ||
255 | }, | ||
256 | [2] = { | ||
257 | .name = "kernel", | ||
258 | /* 5 megabytes, for a kernel with no modules | ||
259 | * or a uImage with a ramdisk attached */ | ||
260 | .size = 0x00500000, | ||
261 | .offset = SZ_256K + SZ_128K, | ||
262 | }, | ||
263 | [3] = { | ||
264 | .name = "root", | ||
265 | .offset = SZ_256K + SZ_128K + 0x00500000, | ||
266 | .size = MTDPART_SIZ_FULL, | ||
267 | }, | ||
268 | }; | ||
269 | |||
270 | static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = { | ||
271 | [0] = { | ||
272 | .name = "nand", | ||
273 | .nr_chips = 1, | ||
274 | .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part), | ||
275 | .partitions = mini2440_default_nand_part, | ||
276 | .flash_bbt = 1, /* we use u-boot to create a BBT */ | ||
277 | }, | ||
278 | }; | ||
279 | |||
280 | static struct s3c2410_platform_nand mini2440_nand_info __initdata = { | ||
281 | .tacls = 0, | ||
282 | .twrph0 = 25, | ||
283 | .twrph1 = 15, | ||
284 | .nr_sets = ARRAY_SIZE(mini2440_nand_sets), | ||
285 | .sets = mini2440_nand_sets, | ||
286 | .ignore_unset_ecc = 1, | ||
287 | }; | ||
288 | |||
289 | /* DM9000AEP 10/100 ethernet controller */ | ||
290 | |||
291 | static struct resource mini2440_dm9k_resource[] __initdata = { | ||
292 | [0] = { | ||
293 | .start = MACH_MINI2440_DM9K_BASE, | ||
294 | .end = MACH_MINI2440_DM9K_BASE + 3, | ||
295 | .flags = IORESOURCE_MEM | ||
296 | }, | ||
297 | [1] = { | ||
298 | .start = MACH_MINI2440_DM9K_BASE + 4, | ||
299 | .end = MACH_MINI2440_DM9K_BASE + 7, | ||
300 | .flags = IORESOURCE_MEM | ||
301 | }, | ||
302 | [2] = { | ||
303 | .start = IRQ_EINT7, | ||
304 | .end = IRQ_EINT7, | ||
305 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | ||
306 | } | ||
307 | }; | ||
308 | |||
309 | /* | ||
310 | * The DM9000 has no eeprom, and it's MAC address is set by | ||
311 | * the bootloader before starting the kernel. | ||
312 | */ | ||
313 | static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = { | ||
314 | .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), | ||
315 | }; | ||
316 | |||
317 | static struct platform_device mini2440_device_eth __initdata = { | ||
318 | .name = "dm9000", | ||
319 | .id = -1, | ||
320 | .num_resources = ARRAY_SIZE(mini2440_dm9k_resource), | ||
321 | .resource = mini2440_dm9k_resource, | ||
322 | .dev = { | ||
323 | .platform_data = &mini2440_dm9k_pdata, | ||
324 | }, | ||
325 | }; | ||
326 | |||
327 | /* CON5 | ||
328 | * +--+ /-----\ | ||
329 | * | | | | | ||
330 | * | | | BAT | | ||
331 | * | | \_____/ | ||
332 | * | | | ||
333 | * | | +----+ +----+ | ||
334 | * | | | K5 | | K1 | | ||
335 | * | | +----+ +----+ | ||
336 | * | | +----+ +----+ | ||
337 | * | | | K4 | | K2 | | ||
338 | * | | +----+ +----+ | ||
339 | * | | +----+ +----+ | ||
340 | * | | | K6 | | K3 | | ||
341 | * | | +----+ +----+ | ||
342 | * ..... | ||
343 | */ | ||
344 | static struct gpio_keys_button mini2440_buttons[] __initdata = { | ||
345 | { | ||
346 | .gpio = S3C2410_GPG(0), /* K1 */ | ||
347 | .code = KEY_F1, | ||
348 | .desc = "Button 1", | ||
349 | .active_low = 1, | ||
350 | }, | ||
351 | { | ||
352 | .gpio = S3C2410_GPG(3), /* K2 */ | ||
353 | .code = KEY_F2, | ||
354 | .desc = "Button 2", | ||
355 | .active_low = 1, | ||
356 | }, | ||
357 | { | ||
358 | .gpio = S3C2410_GPG(5), /* K3 */ | ||
359 | .code = KEY_F3, | ||
360 | .desc = "Button 3", | ||
361 | .active_low = 1, | ||
362 | }, | ||
363 | { | ||
364 | .gpio = S3C2410_GPG(6), /* K4 */ | ||
365 | .code = KEY_POWER, | ||
366 | .desc = "Power", | ||
367 | .active_low = 1, | ||
368 | }, | ||
369 | { | ||
370 | .gpio = S3C2410_GPG(7), /* K5 */ | ||
371 | .code = KEY_F5, | ||
372 | .desc = "Button 5", | ||
373 | .active_low = 1, | ||
374 | }, | ||
375 | #if 0 | ||
376 | /* this pin is also known as TCLK1 and seems to already | ||
377 | * marked as "in use" somehow in the kernel -- possibly wrongly */ | ||
378 | { | ||
379 | .gpio = S3C2410_GPG(11), /* K6 */ | ||
380 | .code = KEY_F6, | ||
381 | .desc = "Button 6", | ||
382 | .active_low = 1, | ||
383 | }, | ||
384 | #endif | ||
385 | }; | ||
386 | |||
387 | static struct gpio_keys_platform_data mini2440_button_data __initdata = { | ||
388 | .buttons = mini2440_buttons, | ||
389 | .nbuttons = ARRAY_SIZE(mini2440_buttons), | ||
390 | }; | ||
391 | |||
392 | static struct platform_device mini2440_button_device __initdata = { | ||
393 | .name = "gpio-keys", | ||
394 | .id = -1, | ||
395 | .dev = { | ||
396 | .platform_data = &mini2440_button_data, | ||
397 | } | ||
398 | }; | ||
399 | |||
400 | /* LEDS */ | ||
401 | |||
402 | static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = { | ||
403 | .name = "led1", | ||
404 | .gpio = S3C2410_GPB(5), | ||
405 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | ||
406 | .def_trigger = "heartbeat", | ||
407 | }; | ||
408 | |||
409 | static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = { | ||
410 | .name = "led2", | ||
411 | .gpio = S3C2410_GPB(6), | ||
412 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | ||
413 | .def_trigger = "nand-disk", | ||
414 | }; | ||
415 | |||
416 | static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = { | ||
417 | .name = "led3", | ||
418 | .gpio = S3C2410_GPB(7), | ||
419 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | ||
420 | .def_trigger = "mmc0", | ||
421 | }; | ||
422 | |||
423 | static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = { | ||
424 | .name = "led4", | ||
425 | .gpio = S3C2410_GPB(8), | ||
426 | .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, | ||
427 | .def_trigger = "", | ||
428 | }; | ||
429 | |||
430 | static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = { | ||
431 | .name = "backlight", | ||
432 | .gpio = S3C2410_GPG(4), | ||
433 | .def_trigger = "backlight", | ||
434 | }; | ||
435 | |||
436 | static struct platform_device mini2440_led1 __initdata = { | ||
437 | .name = "s3c24xx_led", | ||
438 | .id = 1, | ||
439 | .dev = { | ||
440 | .platform_data = &mini2440_led1_pdata, | ||
441 | }, | ||
442 | }; | ||
443 | |||
444 | static struct platform_device mini2440_led2 __initdata = { | ||
445 | .name = "s3c24xx_led", | ||
446 | .id = 2, | ||
447 | .dev = { | ||
448 | .platform_data = &mini2440_led2_pdata, | ||
449 | }, | ||
450 | }; | ||
451 | |||
452 | static struct platform_device mini2440_led3 __initdata = { | ||
453 | .name = "s3c24xx_led", | ||
454 | .id = 3, | ||
455 | .dev = { | ||
456 | .platform_data = &mini2440_led3_pdata, | ||
457 | }, | ||
458 | }; | ||
459 | |||
460 | static struct platform_device mini2440_led4 __initdata = { | ||
461 | .name = "s3c24xx_led", | ||
462 | .id = 4, | ||
463 | .dev = { | ||
464 | .platform_data = &mini2440_led4_pdata, | ||
465 | }, | ||
466 | }; | ||
467 | |||
468 | static struct platform_device mini2440_led_backlight __initdata = { | ||
469 | .name = "s3c24xx_led", | ||
470 | .id = 5, | ||
471 | .dev = { | ||
472 | .platform_data = &mini2440_led_backlight_pdata, | ||
473 | }, | ||
474 | }; | ||
475 | |||
476 | /* AUDIO */ | ||
477 | |||
478 | static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = { | ||
479 | .l3_clk = S3C2410_GPB(4), | ||
480 | .l3_mode = S3C2410_GPB(2), | ||
481 | .l3_data = S3C2410_GPB(3), | ||
482 | .model = UDA134X_UDA1341 | ||
483 | }; | ||
484 | |||
485 | static struct platform_device mini2440_audio __initdata = { | ||
486 | .name = "s3c24xx_uda134x", | ||
487 | .id = 0, | ||
488 | .dev = { | ||
489 | .platform_data = &mini2440_audio_pins, | ||
490 | }, | ||
491 | }; | ||
492 | |||
493 | /* | ||
494 | * I2C devices | ||
495 | */ | ||
496 | static struct at24_platform_data at24c08 = { | ||
497 | .byte_len = SZ_8K / 8, | ||
498 | .page_size = 16, | ||
499 | }; | ||
500 | |||
501 | static struct i2c_board_info mini2440_i2c_devs[] __initdata = { | ||
502 | { | ||
503 | I2C_BOARD_INFO("24c08", 0x50), | ||
504 | .platform_data = &at24c08, | ||
505 | }, | ||
506 | }; | ||
507 | |||
508 | static struct platform_device *mini2440_devices[] __initdata = { | ||
509 | &s3c_device_usb, | ||
510 | &s3c_device_wdt, | ||
511 | /* &s3c_device_adc,*/ /* ADC doesn't like living with touchscreen ! */ | ||
512 | &s3c_device_i2c0, | ||
513 | &s3c_device_rtc, | ||
514 | &s3c_device_usbgadget, | ||
515 | &mini2440_device_eth, | ||
516 | &mini2440_led1, | ||
517 | &mini2440_led2, | ||
518 | &mini2440_led3, | ||
519 | &mini2440_led4, | ||
520 | &mini2440_button_device, | ||
521 | &s3c_device_nand, | ||
522 | &s3c_device_sdi, | ||
523 | &s3c_device_iis, | ||
524 | &mini2440_audio, | ||
525 | /* &s3c_device_timer[0],*/ /* buzzer pwm, no API for it */ | ||
526 | /* remaining devices are optional */ | ||
527 | }; | ||
528 | |||
529 | static void __init mini2440_map_io(void) | ||
530 | { | ||
531 | s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc)); | ||
532 | s3c24xx_init_clocks(12000000); | ||
533 | s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs)); | ||
534 | |||
535 | s3c_device_nand.dev.platform_data = &mini2440_nand_info; | ||
536 | s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg; | ||
537 | } | ||
538 | |||
539 | /* | ||
540 | * mini2440_features string | ||
541 | * | ||
542 | * t = Touchscreen present | ||
543 | * b = backlight control | ||
544 | * c = camera [TODO] | ||
545 | * 0-9 LCD configuration | ||
546 | * | ||
547 | */ | ||
548 | static char mini2440_features_str[12] __initdata = "0tb"; | ||
549 | |||
550 | static int __init mini2440_features_setup(char *str) | ||
551 | { | ||
552 | if (str) | ||
553 | strlcpy(mini2440_features_str, str, sizeof(mini2440_features_str)); | ||
554 | return 1; | ||
555 | } | ||
556 | |||
557 | __setup("mini2440=", mini2440_features_setup); | ||
558 | |||
559 | #define FEATURE_SCREEN (1 << 0) | ||
560 | #define FEATURE_BACKLIGHT (1 << 1) | ||
561 | #define FEATURE_TOUCH (1 << 2) | ||
562 | #define FEATURE_CAMERA (1 << 3) | ||
563 | |||
564 | struct mini2440_features_t { | ||
565 | int count; | ||
566 | int done; | ||
567 | int lcd_index; | ||
568 | struct platform_device *optional[8]; | ||
569 | }; | ||
570 | |||
571 | static void mini2440_parse_features( | ||
572 | struct mini2440_features_t * features, | ||
573 | const char * features_str ) | ||
574 | { | ||
575 | const char * fp = features_str; | ||
576 | |||
577 | features->count = 0; | ||
578 | features->done = 0; | ||
579 | features->lcd_index = -1; | ||
580 | |||
581 | while (*fp) { | ||
582 | char f = *fp++; | ||
583 | |||
584 | switch (f) { | ||
585 | case '0'...'9': /* tft screen */ | ||
586 | if (features->done & FEATURE_SCREEN) { | ||
587 | printk(KERN_INFO "MINI2440: '%c' ignored, " | ||
588 | "screen type already set\n", f); | ||
589 | } else { | ||
590 | int li = f - '0'; | ||
591 | if (li >= ARRAY_SIZE(mini2440_lcd_cfg)) | ||
592 | printk(KERN_INFO "MINI2440: " | ||
593 | "'%c' out of range LCD mode\n", f); | ||
594 | else { | ||
595 | features->optional[features->count++] = | ||
596 | &s3c_device_lcd; | ||
597 | features->lcd_index = li; | ||
598 | } | ||
599 | } | ||
600 | features->done |= FEATURE_SCREEN; | ||
601 | break; | ||
602 | case 'b': | ||
603 | if (features->done & FEATURE_BACKLIGHT) | ||
604 | printk(KERN_INFO "MINI2440: '%c' ignored, " | ||
605 | "backlight already set\n", f); | ||
606 | else { | ||
607 | features->optional[features->count++] = | ||
608 | &mini2440_led_backlight; | ||
609 | } | ||
610 | features->done |= FEATURE_BACKLIGHT; | ||
611 | break; | ||
612 | case 't': | ||
613 | printk(KERN_INFO "MINI2440: '%c' ignored, " | ||
614 | "touchscreen not compiled in\n", f); | ||
615 | break; | ||
616 | case 'c': | ||
617 | if (features->done & FEATURE_CAMERA) | ||
618 | printk(KERN_INFO "MINI2440: '%c' ignored, " | ||
619 | "camera already registered\n", f); | ||
620 | else | ||
621 | features->optional[features->count++] = | ||
622 | &s3c_device_camif; | ||
623 | features->done |= FEATURE_CAMERA; | ||
624 | break; | ||
625 | } | ||
626 | } | ||
627 | } | ||
628 | |||
629 | static void __init mini2440_init(void) | ||
630 | { | ||
631 | struct mini2440_features_t features = { 0 }; | ||
632 | int i; | ||
633 | |||
634 | printk(KERN_INFO "MINI2440: Option string mini2440=%s\n", | ||
635 | mini2440_features_str); | ||
636 | |||
637 | /* Parse the feature string */ | ||
638 | mini2440_parse_features(&features, mini2440_features_str); | ||
639 | |||
640 | /* turn LCD on */ | ||
641 | s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND); | ||
642 | |||
643 | /* Turn the backlight early on */ | ||
644 | s3c2410_gpio_setpin(S3C2410_GPG(4), 1); | ||
645 | s3c2410_gpio_cfgpin(S3C2410_GPG(4), S3C2410_GPIO_OUTPUT); | ||
646 | |||
647 | /* remove pullup on optional PWM backlight -- unused on 3.5 and 7"s */ | ||
648 | s3c2410_gpio_pullup(S3C2410_GPB(1), 0); | ||
649 | s3c2410_gpio_setpin(S3C2410_GPB(1), 0); | ||
650 | s3c2410_gpio_cfgpin(S3C2410_GPB(1), S3C2410_GPIO_INPUT); | ||
651 | |||
652 | /* Make sure the D+ pullup pin is output */ | ||
653 | s3c2410_gpio_cfgpin(S3C2410_GPC(5), S3C2410_GPIO_OUTPUT); | ||
654 | |||
655 | /* mark the key as input, without pullups (there is one on the board) */ | ||
656 | for (i = 0; i < ARRAY_SIZE(mini2440_buttons); i++) { | ||
657 | s3c2410_gpio_pullup(mini2440_buttons[i].gpio, 0); | ||
658 | s3c2410_gpio_cfgpin(mini2440_buttons[i].gpio, | ||
659 | S3C2410_GPIO_INPUT); | ||
660 | } | ||
661 | if (features.lcd_index != -1) { | ||
662 | int li; | ||
663 | |||
664 | mini2440_fb_info.displays = | ||
665 | &mini2440_lcd_cfg[features.lcd_index]; | ||
666 | |||
667 | printk(KERN_INFO "MINI2440: LCD"); | ||
668 | for (li = 0; li < ARRAY_SIZE(mini2440_lcd_cfg); li++) | ||
669 | if (li == features.lcd_index) | ||
670 | printk(" [%d:%dx%d]", li, | ||
671 | mini2440_lcd_cfg[li].width, | ||
672 | mini2440_lcd_cfg[li].height); | ||
673 | else | ||
674 | printk(" %d:%dx%d", li, | ||
675 | mini2440_lcd_cfg[li].width, | ||
676 | mini2440_lcd_cfg[li].height); | ||
677 | printk("\n"); | ||
678 | s3c24xx_fb_set_platdata(&mini2440_fb_info); | ||
679 | } | ||
680 | s3c24xx_udc_set_platdata(&mini2440_udc_cfg); | ||
681 | s3c_i2c0_set_platdata(NULL); | ||
682 | i2c_register_board_info(0, mini2440_i2c_devs, | ||
683 | ARRAY_SIZE(mini2440_i2c_devs)); | ||
684 | |||
685 | platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices)); | ||
686 | |||
687 | if (features.count) /* the optional features */ | ||
688 | platform_add_devices(features.optional, features.count); | ||
689 | |||
690 | } | ||
691 | |||
692 | |||
693 | MACHINE_START(MINI2440, "MINI2440") | ||
694 | /* Maintainer: Michel Pollet <buserror@gmail.com> */ | ||
695 | .phys_io = S3C2410_PA_UART, | ||
696 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | ||
697 | .boot_params = S3C2410_SDRAM_PA + 0x100, | ||
698 | .map_io = mini2440_map_io, | ||
699 | .init_machine = mini2440_init, | ||
700 | .init_irq = s3c24xx_init_irq, | ||
701 | .timer = &s3c24xx_timer, | ||
702 | MACHINE_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 | ||
27 | config 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 | ||
28 | endmenu | 40 | endmenu |
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- := | |||
12 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o | 12 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o |
13 | obj-$(CONFIG_CPU_S3C2442) += clock.o | 13 | obj-$(CONFIG_CPU_S3C2442) += clock.o |
14 | 14 | ||
15 | obj-$(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 | |||
82 | int 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..0fb385bd9cd9 --- /dev/null +++ b/arch/arm/mach-s3c2442/mach-gta02.c | |||
@@ -0,0 +1,645 @@ | |||
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 | |||
90 | static struct pcf50633 *gta02_pcf; | ||
91 | |||
92 | /* | ||
93 | * This gets called every 1ms when we paniced. | ||
94 | */ | ||
95 | |||
96 | static 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 | |||
115 | static 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 | |||
128 | static 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 | |||
164 | static void | ||
165 | gta02_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 | |||
185 | static struct delayed_work gta02_charger_work; | ||
186 | static int gta02_usb_vbus_draw; | ||
187 | |||
188 | static 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 | |||
212 | static void gta02_pmu_event_callback(struct pcf50633 *pcf, int irq) | ||
213 | { | ||
214 | if (irq == PCF50633_IRQ_USBINS) { | ||
215 | schedule_delayed_work(>a02_charger_work, | ||
216 | GTA02_CHARGER_CONFIGURE_TIMEOUT); | ||
217 | |||
218 | return; | ||
219 | } | ||
220 | |||
221 | if (irq == PCF50633_IRQ_USBREM) { | ||
222 | cancel_delayed_work_sync(>a02_charger_work); | ||
223 | gta02_usb_vbus_draw = 0; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | static 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(>a02_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 | |||
250 | static void gta02_pmu_attach_child_devices(struct pcf50633 *pcf); | ||
251 | |||
252 | |||
253 | static char *gta02_batteries[] = { | ||
254 | "battery", | ||
255 | }; | ||
256 | |||
257 | struct 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 | |||
389 | static struct physmap_flash_data gta02_nor_flash_data = { | ||
390 | .width = 2, | ||
391 | }; | ||
392 | |||
393 | static 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 | |||
399 | static struct platform_device gta02_nor_flash = { | ||
400 | .name = "physmap-flash", | ||
401 | .id = 0, | ||
402 | .dev = { | ||
403 | .platform_data = >a02_nor_flash_data, | ||
404 | }, | ||
405 | .resource = >a02_nor_flash_resource, | ||
406 | .num_resources = 1, | ||
407 | }; | ||
408 | |||
409 | |||
410 | struct platform_device s3c24xx_pwm_device = { | ||
411 | .name = "s3c24xx_pwm", | ||
412 | .num_resources = 0, | ||
413 | }; | ||
414 | |||
415 | static struct i2c_board_info gta02_i2c_devs[] __initdata = { | ||
416 | { | ||
417 | I2C_BOARD_INFO("pcf50633", 0x73), | ||
418 | .irq = GTA02_IRQ_PCF50633, | ||
419 | .platform_data = >a02_pcf_pdata, | ||
420 | }, | ||
421 | { | ||
422 | I2C_BOARD_INFO("wm8753", 0x1a), | ||
423 | }, | ||
424 | }; | ||
425 | |||
426 | static 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 | .flash_bbt = 1, | ||
437 | }, | ||
438 | }; | ||
439 | |||
440 | /* | ||
441 | * Choose a set of timings derived from S3C@2442B MCP54 | ||
442 | * data sheet (K5D2G13ACM-D075 MCP Memory). | ||
443 | */ | ||
444 | |||
445 | static struct s3c2410_platform_nand gta02_nand_info = { | ||
446 | .tacls = 0, | ||
447 | .twrph0 = 25, | ||
448 | .twrph1 = 15, | ||
449 | .nr_sets = ARRAY_SIZE(gta02_nand_sets), | ||
450 | .sets = gta02_nand_sets, | ||
451 | }; | ||
452 | |||
453 | |||
454 | static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd) | ||
455 | { | ||
456 | switch (cmd) { | ||
457 | case S3C2410_UDC_P_ENABLE: | ||
458 | pr_debug("%s S3C2410_UDC_P_ENABLE\n", __func__); | ||
459 | gpio_direction_output(GTA02_GPIO_USB_PULLUP, 1); | ||
460 | break; | ||
461 | case S3C2410_UDC_P_DISABLE: | ||
462 | pr_debug("%s S3C2410_UDC_P_DISABLE\n", __func__); | ||
463 | gpio_direction_output(GTA02_GPIO_USB_PULLUP, 0); | ||
464 | break; | ||
465 | case S3C2410_UDC_P_RESET: | ||
466 | pr_debug("%s S3C2410_UDC_P_RESET\n", __func__); | ||
467 | /* FIXME: Do something here. */ | ||
468 | } | ||
469 | } | ||
470 | |||
471 | /* Get PMU to set USB current limit accordingly. */ | ||
472 | static struct s3c2410_udc_mach_info gta02_udc_cfg = { | ||
473 | .vbus_draw = gta02_udc_vbus_draw, | ||
474 | .udc_command = gta02_udc_command, | ||
475 | |||
476 | }; | ||
477 | |||
478 | |||
479 | |||
480 | static void gta02_bl_set_intensity(int intensity) | ||
481 | { | ||
482 | struct pcf50633 *pcf = gta02_pcf; | ||
483 | int old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); | ||
484 | |||
485 | /* We map 8-bit intensity to 6-bit intensity in hardware. */ | ||
486 | intensity >>= 2; | ||
487 | |||
488 | /* | ||
489 | * This can happen during, eg, print of panic on blanked console, | ||
490 | * but we can't service i2c without interrupts active, so abort. | ||
491 | */ | ||
492 | if (in_atomic()) { | ||
493 | printk(KERN_ERR "gta02_bl_set_intensity called while atomic\n"); | ||
494 | return; | ||
495 | } | ||
496 | |||
497 | old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); | ||
498 | if (intensity == old_intensity) | ||
499 | return; | ||
500 | |||
501 | /* We can't do this anywhere else. */ | ||
502 | pcf50633_reg_write(pcf, PCF50633_REG_LEDDIM, 5); | ||
503 | |||
504 | if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3)) | ||
505 | old_intensity = 0; | ||
506 | |||
507 | /* | ||
508 | * The PCF50633 cannot handle LEDOUT = 0 (datasheet p60) | ||
509 | * if seen, you have to re-enable the LED unit. | ||
510 | */ | ||
511 | if (!intensity || !old_intensity) | ||
512 | pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 0); | ||
513 | |||
514 | /* Illegal to set LEDOUT to 0. */ | ||
515 | if (!intensity) | ||
516 | pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, 2); | ||
517 | else | ||
518 | pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, | ||
519 | intensity); | ||
520 | |||
521 | if (intensity) | ||
522 | pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 2); | ||
523 | |||
524 | } | ||
525 | |||
526 | static struct generic_bl_info gta02_bl_info = { | ||
527 | .name = "gta02-bl", | ||
528 | .max_intensity = 0xff, | ||
529 | .default_intensity = 0xff, | ||
530 | .set_bl_intensity = gta02_bl_set_intensity, | ||
531 | }; | ||
532 | |||
533 | static struct platform_device gta02_bl_dev = { | ||
534 | .name = "generic-bl", | ||
535 | .id = 1, | ||
536 | .dev = { | ||
537 | .platform_data = >a02_bl_info, | ||
538 | }, | ||
539 | }; | ||
540 | |||
541 | |||
542 | |||
543 | /* USB */ | ||
544 | static struct s3c2410_hcd_info gta02_usb_info = { | ||
545 | .port[0] = { | ||
546 | .flags = S3C_HCDFLG_USED, | ||
547 | }, | ||
548 | .port[1] = { | ||
549 | .flags = 0, | ||
550 | }, | ||
551 | }; | ||
552 | |||
553 | |||
554 | static void __init gta02_map_io(void) | ||
555 | { | ||
556 | s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc)); | ||
557 | s3c24xx_init_clocks(12000000); | ||
558 | s3c24xx_init_uarts(gta02_uartcfgs, ARRAY_SIZE(gta02_uartcfgs)); | ||
559 | } | ||
560 | |||
561 | |||
562 | /* These are the guys that don't need to be children of PMU. */ | ||
563 | |||
564 | static struct platform_device *gta02_devices[] __initdata = { | ||
565 | &s3c_device_usb, | ||
566 | &s3c_device_wdt, | ||
567 | &s3c_device_sdi, | ||
568 | &s3c_device_usbgadget, | ||
569 | &s3c_device_nand, | ||
570 | >a02_nor_flash, | ||
571 | &s3c24xx_pwm_device, | ||
572 | &s3c_device_iis, | ||
573 | &s3c_device_i2c0, | ||
574 | }; | ||
575 | |||
576 | /* These guys DO need to be children of PMU. */ | ||
577 | |||
578 | static struct platform_device *gta02_devices_pmu_children[] = { | ||
579 | >a02_bl_dev, | ||
580 | }; | ||
581 | |||
582 | |||
583 | /* | ||
584 | * This is called when pc50633 is probed, quite late in the day since it is an | ||
585 | * I2C bus device. Here we can define platform devices with the advantage that | ||
586 | * we can mark the pcf50633 as the parent. This makes them get suspended and | ||
587 | * resumed with their parent the pcf50633 still around. All devices whose | ||
588 | * operation depends on something from pcf50633 must have this relationship | ||
589 | * made explicit like this, or suspend and resume will become an unreliable | ||
590 | * hellworld. | ||
591 | */ | ||
592 | |||
593 | static void gta02_pmu_attach_child_devices(struct pcf50633 *pcf) | ||
594 | { | ||
595 | int n; | ||
596 | |||
597 | /* Grab a copy of the now probed PMU pointer. */ | ||
598 | gta02_pcf = pcf; | ||
599 | |||
600 | for (n = 0; n < ARRAY_SIZE(gta02_devices_pmu_children); n++) | ||
601 | gta02_devices_pmu_children[n]->dev.parent = pcf->dev; | ||
602 | |||
603 | platform_add_devices(gta02_devices_pmu_children, | ||
604 | ARRAY_SIZE(gta02_devices_pmu_children)); | ||
605 | } | ||
606 | |||
607 | static void gta02_poweroff(void) | ||
608 | { | ||
609 | pcf50633_reg_set_bit_mask(gta02_pcf, PCF50633_REG_OOCSHDWN, 1, 1); | ||
610 | } | ||
611 | |||
612 | static void __init gta02_machine_init(void) | ||
613 | { | ||
614 | /* Set the panic callback to make AUX LED blink at ~5Hz. */ | ||
615 | panic_blink = gta02_panic_blink; | ||
616 | |||
617 | s3c_pm_init(); | ||
618 | |||
619 | #ifdef CONFIG_CHARGER_PCF50633 | ||
620 | INIT_DELAYED_WORK(>a02_charger_work, gta02_charger_worker); | ||
621 | #endif | ||
622 | |||
623 | s3c_device_usb.dev.platform_data = >a02_usb_info; | ||
624 | s3c_device_nand.dev.platform_data = >a02_nand_info; | ||
625 | |||
626 | s3c24xx_udc_set_platdata(>a02_udc_cfg); | ||
627 | s3c_i2c0_set_platdata(NULL); | ||
628 | |||
629 | i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs)); | ||
630 | |||
631 | platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices)); | ||
632 | pm_power_off = gta02_poweroff; | ||
633 | } | ||
634 | |||
635 | |||
636 | MACHINE_START(NEO1973_GTA02, "GTA02") | ||
637 | /* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */ | ||
638 | .phys_io = S3C2410_PA_UART, | ||
639 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | ||
640 | .boot_params = S3C2410_SDRAM_PA + 0x100, | ||
641 | .map_io = gta02_map_io, | ||
642 | .init_irq = s3c24xx_init_irq, | ||
643 | .init_machine = gta02_machine_init, | ||
644 | .timer = &s3c24xx_timer, | ||
645 | MACHINE_END | ||
diff --git a/arch/arm/mach-u300/clock.c b/arch/arm/mach-u300/clock.c index 5cd04d6751b3..111f7ea32b38 100644 --- a/arch/arm/mach-u300/clock.c +++ b/arch/arm/mach-u300/clock.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/timer.h> | 25 | #include <linux/timer.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | #include <linux/seq_file.h> | ||
27 | 28 | ||
28 | #include <asm/clkdev.h> | 29 | #include <asm/clkdev.h> |
29 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
@@ -702,6 +703,7 @@ static struct clk amba_clk = { | |||
702 | .rate = 52000000, /* this varies! */ | 703 | .rate = 52000000, /* this varies! */ |
703 | .hw_ctrld = true, | 704 | .hw_ctrld = true, |
704 | .reset = false, | 705 | .reset = false, |
706 | .lock = __SPIN_LOCK_UNLOCKED(amba_clk.lock), | ||
705 | }; | 707 | }; |
706 | 708 | ||
707 | /* | 709 | /* |
@@ -720,6 +722,7 @@ static struct clk cpu_clk = { | |||
720 | .set_rate = clk_set_rate_cpuclk, | 722 | .set_rate = clk_set_rate_cpuclk, |
721 | .get_rate = clk_get_rate_cpuclk, | 723 | .get_rate = clk_get_rate_cpuclk, |
722 | .round_rate = clk_round_rate_cpuclk, | 724 | .round_rate = clk_round_rate_cpuclk, |
725 | .lock = __SPIN_LOCK_UNLOCKED(cpu_clk.lock), | ||
723 | }; | 726 | }; |
724 | 727 | ||
725 | static struct clk nandif_clk = { | 728 | static struct clk nandif_clk = { |
@@ -732,6 +735,7 @@ static struct clk nandif_clk = { | |||
732 | .clk_val = U300_SYSCON_SBCER_NANDIF_CLK_EN, | 735 | .clk_val = U300_SYSCON_SBCER_NANDIF_CLK_EN, |
733 | .enable = syscon_clk_enable, | 736 | .enable = syscon_clk_enable, |
734 | .disable = syscon_clk_disable, | 737 | .disable = syscon_clk_disable, |
738 | .lock = __SPIN_LOCK_UNLOCKED(nandif_clk.lock), | ||
735 | }; | 739 | }; |
736 | 740 | ||
737 | static struct clk semi_clk = { | 741 | static struct clk semi_clk = { |
@@ -744,6 +748,7 @@ static struct clk semi_clk = { | |||
744 | .clk_val = U300_SYSCON_SBCER_SEMI_CLK_EN, | 748 | .clk_val = U300_SYSCON_SBCER_SEMI_CLK_EN, |
745 | .enable = syscon_clk_enable, | 749 | .enable = syscon_clk_enable, |
746 | .disable = syscon_clk_disable, | 750 | .disable = syscon_clk_disable, |
751 | .lock = __SPIN_LOCK_UNLOCKED(semi_clk.lock), | ||
747 | }; | 752 | }; |
748 | 753 | ||
749 | #ifdef CONFIG_MACH_U300_BS335 | 754 | #ifdef CONFIG_MACH_U300_BS335 |
@@ -758,6 +763,7 @@ static struct clk isp_clk = { | |||
758 | .clk_val = U300_SYSCON_SBCER_ISP_CLK_EN, | 763 | .clk_val = U300_SYSCON_SBCER_ISP_CLK_EN, |
759 | .enable = syscon_clk_enable, | 764 | .enable = syscon_clk_enable, |
760 | .disable = syscon_clk_disable, | 765 | .disable = syscon_clk_disable, |
766 | .lock = __SPIN_LOCK_UNLOCKED(isp_clk.lock), | ||
761 | }; | 767 | }; |
762 | 768 | ||
763 | static struct clk cds_clk = { | 769 | static struct clk cds_clk = { |
@@ -771,6 +777,7 @@ static struct clk cds_clk = { | |||
771 | .clk_val = U300_SYSCON_SBCER_CDS_CLK_EN, | 777 | .clk_val = U300_SYSCON_SBCER_CDS_CLK_EN, |
772 | .enable = syscon_clk_enable, | 778 | .enable = syscon_clk_enable, |
773 | .disable = syscon_clk_disable, | 779 | .disable = syscon_clk_disable, |
780 | .lock = __SPIN_LOCK_UNLOCKED(cds_clk.lock), | ||
774 | }; | 781 | }; |
775 | #endif | 782 | #endif |
776 | 783 | ||
@@ -785,6 +792,7 @@ static struct clk dma_clk = { | |||
785 | .clk_val = U300_SYSCON_SBCER_DMAC_CLK_EN, | 792 | .clk_val = U300_SYSCON_SBCER_DMAC_CLK_EN, |
786 | .enable = syscon_clk_enable, | 793 | .enable = syscon_clk_enable, |
787 | .disable = syscon_clk_disable, | 794 | .disable = syscon_clk_disable, |
795 | .lock = __SPIN_LOCK_UNLOCKED(dma_clk.lock), | ||
788 | }; | 796 | }; |
789 | 797 | ||
790 | static struct clk aaif_clk = { | 798 | static struct clk aaif_clk = { |
@@ -798,6 +806,7 @@ static struct clk aaif_clk = { | |||
798 | .clk_val = U300_SYSCON_SBCER_AAIF_CLK_EN, | 806 | .clk_val = U300_SYSCON_SBCER_AAIF_CLK_EN, |
799 | .enable = syscon_clk_enable, | 807 | .enable = syscon_clk_enable, |
800 | .disable = syscon_clk_disable, | 808 | .disable = syscon_clk_disable, |
809 | .lock = __SPIN_LOCK_UNLOCKED(aaif_clk.lock), | ||
801 | }; | 810 | }; |
802 | 811 | ||
803 | static struct clk apex_clk = { | 812 | static struct clk apex_clk = { |
@@ -811,6 +820,7 @@ static struct clk apex_clk = { | |||
811 | .clk_val = U300_SYSCON_SBCER_APEX_CLK_EN, | 820 | .clk_val = U300_SYSCON_SBCER_APEX_CLK_EN, |
812 | .enable = syscon_clk_enable, | 821 | .enable = syscon_clk_enable, |
813 | .disable = syscon_clk_disable, | 822 | .disable = syscon_clk_disable, |
823 | .lock = __SPIN_LOCK_UNLOCKED(apex_clk.lock), | ||
814 | }; | 824 | }; |
815 | 825 | ||
816 | static struct clk video_enc_clk = { | 826 | static struct clk video_enc_clk = { |
@@ -825,6 +835,7 @@ static struct clk video_enc_clk = { | |||
825 | .clk_val = U300_SYSCON_SBCER_VIDEO_ENC_CLK_EN, | 835 | .clk_val = U300_SYSCON_SBCER_VIDEO_ENC_CLK_EN, |
826 | .enable = syscon_clk_enable, | 836 | .enable = syscon_clk_enable, |
827 | .disable = syscon_clk_disable, | 837 | .disable = syscon_clk_disable, |
838 | .lock = __SPIN_LOCK_UNLOCKED(video_enc_clk.lock), | ||
828 | }; | 839 | }; |
829 | 840 | ||
830 | static struct clk xgam_clk = { | 841 | static struct clk xgam_clk = { |
@@ -839,6 +850,7 @@ static struct clk xgam_clk = { | |||
839 | .get_rate = clk_get_rate_xgamclk, | 850 | .get_rate = clk_get_rate_xgamclk, |
840 | .enable = syscon_clk_enable, | 851 | .enable = syscon_clk_enable, |
841 | .disable = syscon_clk_disable, | 852 | .disable = syscon_clk_disable, |
853 | .lock = __SPIN_LOCK_UNLOCKED(xgam_clk.lock), | ||
842 | }; | 854 | }; |
843 | 855 | ||
844 | /* This clock is used to activate the video encoder */ | 856 | /* This clock is used to activate the video encoder */ |
@@ -854,6 +866,7 @@ static struct clk ahb_clk = { | |||
854 | .enable = syscon_clk_enable, | 866 | .enable = syscon_clk_enable, |
855 | .disable = syscon_clk_disable, | 867 | .disable = syscon_clk_disable, |
856 | .get_rate = clk_get_rate_ahb_clk, | 868 | .get_rate = clk_get_rate_ahb_clk, |
869 | .lock = __SPIN_LOCK_UNLOCKED(ahb_clk.lock), | ||
857 | }; | 870 | }; |
858 | 871 | ||
859 | 872 | ||
@@ -871,6 +884,7 @@ static struct clk ahb_subsys_clk = { | |||
871 | .enable = syscon_clk_enable, | 884 | .enable = syscon_clk_enable, |
872 | .disable = syscon_clk_disable, | 885 | .disable = syscon_clk_disable, |
873 | .get_rate = clk_get_rate_ahb_clk, | 886 | .get_rate = clk_get_rate_ahb_clk, |
887 | .lock = __SPIN_LOCK_UNLOCKED(ahb_subsys_clk.lock), | ||
874 | }; | 888 | }; |
875 | 889 | ||
876 | static struct clk intcon_clk = { | 890 | static struct clk intcon_clk = { |
@@ -882,6 +896,8 @@ static struct clk intcon_clk = { | |||
882 | .res_reg = U300_SYSCON_VBASE + U300_SYSCON_RRR, | 896 | .res_reg = U300_SYSCON_VBASE + U300_SYSCON_RRR, |
883 | .res_mask = U300_SYSCON_RRR_INTCON_RESET_EN, | 897 | .res_mask = U300_SYSCON_RRR_INTCON_RESET_EN, |
884 | /* INTCON can be reset but not clock-gated */ | 898 | /* INTCON can be reset but not clock-gated */ |
899 | .lock = __SPIN_LOCK_UNLOCKED(intcon_clk.lock), | ||
900 | |||
885 | }; | 901 | }; |
886 | 902 | ||
887 | static struct clk mspro_clk = { | 903 | static struct clk mspro_clk = { |
@@ -895,6 +911,7 @@ static struct clk mspro_clk = { | |||
895 | .clk_val = U300_SYSCON_SBCER_MSPRO_CLK_EN, | 911 | .clk_val = U300_SYSCON_SBCER_MSPRO_CLK_EN, |
896 | .enable = syscon_clk_enable, | 912 | .enable = syscon_clk_enable, |
897 | .disable = syscon_clk_disable, | 913 | .disable = syscon_clk_disable, |
914 | .lock = __SPIN_LOCK_UNLOCKED(mspro_clk.lock), | ||
898 | }; | 915 | }; |
899 | 916 | ||
900 | static struct clk emif_clk = { | 917 | static struct clk emif_clk = { |
@@ -909,6 +926,7 @@ static struct clk emif_clk = { | |||
909 | .enable = syscon_clk_enable, | 926 | .enable = syscon_clk_enable, |
910 | .disable = syscon_clk_disable, | 927 | .disable = syscon_clk_disable, |
911 | .get_rate = clk_get_rate_emif_clk, | 928 | .get_rate = clk_get_rate_emif_clk, |
929 | .lock = __SPIN_LOCK_UNLOCKED(emif_clk.lock), | ||
912 | }; | 930 | }; |
913 | 931 | ||
914 | 932 | ||
@@ -926,6 +944,7 @@ static struct clk fast_clk = { | |||
926 | .clk_val = U300_SYSCON_SBCER_FAST_BRIDGE_CLK_EN, | 944 | .clk_val = U300_SYSCON_SBCER_FAST_BRIDGE_CLK_EN, |
927 | .enable = syscon_clk_enable, | 945 | .enable = syscon_clk_enable, |
928 | .disable = syscon_clk_disable, | 946 | .disable = syscon_clk_disable, |
947 | .lock = __SPIN_LOCK_UNLOCKED(fast_clk.lock), | ||
929 | }; | 948 | }; |
930 | 949 | ||
931 | static struct clk mmcsd_clk = { | 950 | static struct clk mmcsd_clk = { |
@@ -942,6 +961,7 @@ static struct clk mmcsd_clk = { | |||
942 | .round_rate = clk_round_rate_mclk, | 961 | .round_rate = clk_round_rate_mclk, |
943 | .disable = syscon_clk_disable, | 962 | .disable = syscon_clk_disable, |
944 | .enable = syscon_clk_enable, | 963 | .enable = syscon_clk_enable, |
964 | .lock = __SPIN_LOCK_UNLOCKED(mmcsd_clk.lock), | ||
945 | }; | 965 | }; |
946 | 966 | ||
947 | static struct clk i2s0_clk = { | 967 | static struct clk i2s0_clk = { |
@@ -956,6 +976,7 @@ static struct clk i2s0_clk = { | |||
956 | .enable = syscon_clk_enable, | 976 | .enable = syscon_clk_enable, |
957 | .disable = syscon_clk_disable, | 977 | .disable = syscon_clk_disable, |
958 | .get_rate = clk_get_rate_i2s_i2c_spi, | 978 | .get_rate = clk_get_rate_i2s_i2c_spi, |
979 | .lock = __SPIN_LOCK_UNLOCKED(i2s0_clk.lock), | ||
959 | }; | 980 | }; |
960 | 981 | ||
961 | static struct clk i2s1_clk = { | 982 | static struct clk i2s1_clk = { |
@@ -970,6 +991,7 @@ static struct clk i2s1_clk = { | |||
970 | .enable = syscon_clk_enable, | 991 | .enable = syscon_clk_enable, |
971 | .disable = syscon_clk_disable, | 992 | .disable = syscon_clk_disable, |
972 | .get_rate = clk_get_rate_i2s_i2c_spi, | 993 | .get_rate = clk_get_rate_i2s_i2c_spi, |
994 | .lock = __SPIN_LOCK_UNLOCKED(i2s1_clk.lock), | ||
973 | }; | 995 | }; |
974 | 996 | ||
975 | static struct clk i2c0_clk = { | 997 | static struct clk i2c0_clk = { |
@@ -984,6 +1006,7 @@ static struct clk i2c0_clk = { | |||
984 | .enable = syscon_clk_enable, | 1006 | .enable = syscon_clk_enable, |
985 | .disable = syscon_clk_disable, | 1007 | .disable = syscon_clk_disable, |
986 | .get_rate = clk_get_rate_i2s_i2c_spi, | 1008 | .get_rate = clk_get_rate_i2s_i2c_spi, |
1009 | .lock = __SPIN_LOCK_UNLOCKED(i2c0_clk.lock), | ||
987 | }; | 1010 | }; |
988 | 1011 | ||
989 | static struct clk i2c1_clk = { | 1012 | static struct clk i2c1_clk = { |
@@ -998,6 +1021,7 @@ static struct clk i2c1_clk = { | |||
998 | .enable = syscon_clk_enable, | 1021 | .enable = syscon_clk_enable, |
999 | .disable = syscon_clk_disable, | 1022 | .disable = syscon_clk_disable, |
1000 | .get_rate = clk_get_rate_i2s_i2c_spi, | 1023 | .get_rate = clk_get_rate_i2s_i2c_spi, |
1024 | .lock = __SPIN_LOCK_UNLOCKED(i2c1_clk.lock), | ||
1001 | }; | 1025 | }; |
1002 | 1026 | ||
1003 | static struct clk spi_clk = { | 1027 | static struct clk spi_clk = { |
@@ -1012,6 +1036,7 @@ static struct clk spi_clk = { | |||
1012 | .enable = syscon_clk_enable, | 1036 | .enable = syscon_clk_enable, |
1013 | .disable = syscon_clk_disable, | 1037 | .disable = syscon_clk_disable, |
1014 | .get_rate = clk_get_rate_i2s_i2c_spi, | 1038 | .get_rate = clk_get_rate_i2s_i2c_spi, |
1039 | .lock = __SPIN_LOCK_UNLOCKED(spi_clk.lock), | ||
1015 | }; | 1040 | }; |
1016 | 1041 | ||
1017 | #ifdef CONFIG_MACH_U300_BS335 | 1042 | #ifdef CONFIG_MACH_U300_BS335 |
@@ -1026,6 +1051,7 @@ static struct clk uart1_clk = { | |||
1026 | .clk_val = U300_SYSCON_SBCER_UART1_CLK_EN, | 1051 | .clk_val = U300_SYSCON_SBCER_UART1_CLK_EN, |
1027 | .enable = syscon_clk_enable, | 1052 | .enable = syscon_clk_enable, |
1028 | .disable = syscon_clk_disable, | 1053 | .disable = syscon_clk_disable, |
1054 | .lock = __SPIN_LOCK_UNLOCKED(uart1_clk.lock), | ||
1029 | }; | 1055 | }; |
1030 | #endif | 1056 | #endif |
1031 | 1057 | ||
@@ -1044,6 +1070,7 @@ static struct clk slow_clk = { | |||
1044 | .clk_val = U300_SYSCON_SBCER_SLOW_BRIDGE_CLK_EN, | 1070 | .clk_val = U300_SYSCON_SBCER_SLOW_BRIDGE_CLK_EN, |
1045 | .enable = syscon_clk_enable, | 1071 | .enable = syscon_clk_enable, |
1046 | .disable = syscon_clk_disable, | 1072 | .disable = syscon_clk_disable, |
1073 | .lock = __SPIN_LOCK_UNLOCKED(slow_clk.lock), | ||
1047 | }; | 1074 | }; |
1048 | 1075 | ||
1049 | /* TODO: implement SYSCON clock? */ | 1076 | /* TODO: implement SYSCON clock? */ |
@@ -1055,6 +1082,7 @@ static struct clk wdog_clk = { | |||
1055 | .rate = 32768, | 1082 | .rate = 32768, |
1056 | .reset = false, | 1083 | .reset = false, |
1057 | /* This is always on, cannot be enabled/disabled or reset */ | 1084 | /* This is always on, cannot be enabled/disabled or reset */ |
1085 | .lock = __SPIN_LOCK_UNLOCKED(wdog_clk.lock), | ||
1058 | }; | 1086 | }; |
1059 | 1087 | ||
1060 | /* This one is hardwired to PLL13 */ | 1088 | /* This one is hardwired to PLL13 */ |
@@ -1069,6 +1097,7 @@ static struct clk uart_clk = { | |||
1069 | .clk_val = U300_SYSCON_SBCER_UART_CLK_EN, | 1097 | .clk_val = U300_SYSCON_SBCER_UART_CLK_EN, |
1070 | .enable = syscon_clk_enable, | 1098 | .enable = syscon_clk_enable, |
1071 | .disable = syscon_clk_disable, | 1099 | .disable = syscon_clk_disable, |
1100 | .lock = __SPIN_LOCK_UNLOCKED(uart_clk.lock), | ||
1072 | }; | 1101 | }; |
1073 | 1102 | ||
1074 | static struct clk keypad_clk = { | 1103 | static struct clk keypad_clk = { |
@@ -1082,6 +1111,7 @@ static struct clk keypad_clk = { | |||
1082 | .clk_val = U300_SYSCON_SBCER_KEYPAD_CLK_EN, | 1111 | .clk_val = U300_SYSCON_SBCER_KEYPAD_CLK_EN, |
1083 | .enable = syscon_clk_enable, | 1112 | .enable = syscon_clk_enable, |
1084 | .disable = syscon_clk_disable, | 1113 | .disable = syscon_clk_disable, |
1114 | .lock = __SPIN_LOCK_UNLOCKED(keypad_clk.lock), | ||
1085 | }; | 1115 | }; |
1086 | 1116 | ||
1087 | static struct clk gpio_clk = { | 1117 | static struct clk gpio_clk = { |
@@ -1095,6 +1125,7 @@ static struct clk gpio_clk = { | |||
1095 | .clk_val = U300_SYSCON_SBCER_GPIO_CLK_EN, | 1125 | .clk_val = U300_SYSCON_SBCER_GPIO_CLK_EN, |
1096 | .enable = syscon_clk_enable, | 1126 | .enable = syscon_clk_enable, |
1097 | .disable = syscon_clk_disable, | 1127 | .disable = syscon_clk_disable, |
1128 | .lock = __SPIN_LOCK_UNLOCKED(gpio_clk.lock), | ||
1098 | }; | 1129 | }; |
1099 | 1130 | ||
1100 | static struct clk rtc_clk = { | 1131 | static struct clk rtc_clk = { |
@@ -1106,6 +1137,7 @@ static struct clk rtc_clk = { | |||
1106 | .res_reg = U300_SYSCON_VBASE + U300_SYSCON_RSR, | 1137 | .res_reg = U300_SYSCON_VBASE + U300_SYSCON_RSR, |
1107 | .res_mask = U300_SYSCON_RSR_RTC_RESET_EN, | 1138 | .res_mask = U300_SYSCON_RSR_RTC_RESET_EN, |
1108 | /* This clock is always on, cannot be enabled/disabled */ | 1139 | /* This clock is always on, cannot be enabled/disabled */ |
1140 | .lock = __SPIN_LOCK_UNLOCKED(rtc_clk.lock), | ||
1109 | }; | 1141 | }; |
1110 | 1142 | ||
1111 | static struct clk bustr_clk = { | 1143 | static struct clk bustr_clk = { |
@@ -1119,6 +1151,7 @@ static struct clk bustr_clk = { | |||
1119 | .clk_val = U300_SYSCON_SBCER_BTR_CLK_EN, | 1151 | .clk_val = U300_SYSCON_SBCER_BTR_CLK_EN, |
1120 | .enable = syscon_clk_enable, | 1152 | .enable = syscon_clk_enable, |
1121 | .disable = syscon_clk_disable, | 1153 | .disable = syscon_clk_disable, |
1154 | .lock = __SPIN_LOCK_UNLOCKED(bustr_clk.lock), | ||
1122 | }; | 1155 | }; |
1123 | 1156 | ||
1124 | static struct clk evhist_clk = { | 1157 | static struct clk evhist_clk = { |
@@ -1132,6 +1165,7 @@ static struct clk evhist_clk = { | |||
1132 | .clk_val = U300_SYSCON_SBCER_EH_CLK_EN, | 1165 | .clk_val = U300_SYSCON_SBCER_EH_CLK_EN, |
1133 | .enable = syscon_clk_enable, | 1166 | .enable = syscon_clk_enable, |
1134 | .disable = syscon_clk_disable, | 1167 | .disable = syscon_clk_disable, |
1168 | .lock = __SPIN_LOCK_UNLOCKED(evhist_clk.lock), | ||
1135 | }; | 1169 | }; |
1136 | 1170 | ||
1137 | static struct clk timer_clk = { | 1171 | static struct clk timer_clk = { |
@@ -1145,6 +1179,7 @@ static struct clk timer_clk = { | |||
1145 | .clk_val = U300_SYSCON_SBCER_ACC_TMR_CLK_EN, | 1179 | .clk_val = U300_SYSCON_SBCER_ACC_TMR_CLK_EN, |
1146 | .enable = syscon_clk_enable, | 1180 | .enable = syscon_clk_enable, |
1147 | .disable = syscon_clk_disable, | 1181 | .disable = syscon_clk_disable, |
1182 | .lock = __SPIN_LOCK_UNLOCKED(timer_clk.lock), | ||
1148 | }; | 1183 | }; |
1149 | 1184 | ||
1150 | static struct clk app_timer_clk = { | 1185 | static struct clk app_timer_clk = { |
@@ -1158,6 +1193,7 @@ static struct clk app_timer_clk = { | |||
1158 | .clk_val = U300_SYSCON_SBCER_APP_TMR_CLK_EN, | 1193 | .clk_val = U300_SYSCON_SBCER_APP_TMR_CLK_EN, |
1159 | .enable = syscon_clk_enable, | 1194 | .enable = syscon_clk_enable, |
1160 | .disable = syscon_clk_disable, | 1195 | .disable = syscon_clk_disable, |
1196 | .lock = __SPIN_LOCK_UNLOCKED(app_timer_clk.lock), | ||
1161 | }; | 1197 | }; |
1162 | 1198 | ||
1163 | #ifdef CONFIG_MACH_U300_BS335 | 1199 | #ifdef CONFIG_MACH_U300_BS335 |
@@ -1172,6 +1208,7 @@ static struct clk ppm_clk = { | |||
1172 | .clk_val = U300_SYSCON_SBCER_PPM_CLK_EN, | 1208 | .clk_val = U300_SYSCON_SBCER_PPM_CLK_EN, |
1173 | .enable = syscon_clk_enable, | 1209 | .enable = syscon_clk_enable, |
1174 | .disable = syscon_clk_disable, | 1210 | .disable = syscon_clk_disable, |
1211 | .lock = __SPIN_LOCK_UNLOCKED(ppm_clk.lock), | ||
1175 | }; | 1212 | }; |
1176 | #endif | 1213 | #endif |
1177 | 1214 | ||
@@ -1187,53 +1224,53 @@ static struct clk ppm_clk = { | |||
1187 | */ | 1224 | */ |
1188 | static struct clk_lookup lookups[] = { | 1225 | static struct clk_lookup lookups[] = { |
1189 | /* Connected directly to the AMBA bus */ | 1226 | /* Connected directly to the AMBA bus */ |
1190 | DEF_LOOKUP("amba", &amba_clk), | 1227 | DEF_LOOKUP("amba", &amba_clk), |
1191 | DEF_LOOKUP("cpu", &cpu_clk), | 1228 | DEF_LOOKUP("cpu", &cpu_clk), |
1192 | DEF_LOOKUP("nandif", &nandif_clk), | 1229 | DEF_LOOKUP("fsmc", &nandif_clk), |
1193 | DEF_LOOKUP("semi", &semi_clk), | 1230 | DEF_LOOKUP("semi", &semi_clk), |
1194 | #ifdef CONFIG_MACH_U300_BS335 | 1231 | #ifdef CONFIG_MACH_U300_BS335 |
1195 | DEF_LOOKUP("isp", &isp_clk), | 1232 | DEF_LOOKUP("isp", &isp_clk), |
1196 | DEF_LOOKUP("cds", &cds_clk), | 1233 | DEF_LOOKUP("cds", &cds_clk), |
1197 | #endif | 1234 | #endif |
1198 | DEF_LOOKUP("dma", &dma_clk), | 1235 | DEF_LOOKUP("dma", &dma_clk), |
1199 | DEF_LOOKUP("aaif", &aaif_clk), | 1236 | DEF_LOOKUP("msl", &aaif_clk), |
1200 | DEF_LOOKUP("apex", &apex_clk), | 1237 | DEF_LOOKUP("apex", &apex_clk), |
1201 | DEF_LOOKUP("video_enc", &video_enc_clk), | 1238 | DEF_LOOKUP("video_enc", &video_enc_clk), |
1202 | DEF_LOOKUP("xgam", &xgam_clk), | 1239 | DEF_LOOKUP("xgam", &xgam_clk), |
1203 | DEF_LOOKUP("ahb", &ahb_clk), | 1240 | DEF_LOOKUP("ahb", &ahb_clk), |
1204 | /* AHB bridge clocks */ | 1241 | /* AHB bridge clocks */ |
1205 | DEF_LOOKUP("ahb", &ahb_subsys_clk), | 1242 | DEF_LOOKUP("ahb_subsys", &ahb_subsys_clk), |
1206 | DEF_LOOKUP("intcon", &intcon_clk), | 1243 | DEF_LOOKUP("intcon", &intcon_clk), |
1207 | DEF_LOOKUP("mspro", &mspro_clk), | 1244 | DEF_LOOKUP("mspro", &mspro_clk), |
1208 | DEF_LOOKUP("pl172", &emif_clk), | 1245 | DEF_LOOKUP("pl172", &emif_clk), |
1209 | /* FAST bridge clocks */ | 1246 | /* FAST bridge clocks */ |
1210 | DEF_LOOKUP("fast", &fast_clk), | 1247 | DEF_LOOKUP("fast", &fast_clk), |
1211 | DEF_LOOKUP("mmci", &mmcsd_clk), | 1248 | DEF_LOOKUP("mmci", &mmcsd_clk), |
1212 | /* | 1249 | /* |
1213 | * The .0 and .1 identifiers on these comes from the platform device | 1250 | * The .0 and .1 identifiers on these comes from the platform device |
1214 | * .id field and are assigned when the platform devices are registered. | 1251 | * .id field and are assigned when the platform devices are registered. |
1215 | */ | 1252 | */ |
1216 | DEF_LOOKUP("i2s.0", &i2s0_clk), | 1253 | DEF_LOOKUP("i2s.0", &i2s0_clk), |
1217 | DEF_LOOKUP("i2s.1", &i2s1_clk), | 1254 | DEF_LOOKUP("i2s.1", &i2s1_clk), |
1218 | DEF_LOOKUP("stddci2c.0", &i2c0_clk), | 1255 | DEF_LOOKUP("stu300.0", &i2c0_clk), |
1219 | DEF_LOOKUP("stddci2c.1", &i2c1_clk), | 1256 | DEF_LOOKUP("stu300.1", &i2c1_clk), |
1220 | DEF_LOOKUP("pl022", &spi_clk), | 1257 | DEF_LOOKUP("pl022", &spi_clk), |
1221 | #ifdef CONFIG_MACH_U300_BS335 | 1258 | #ifdef CONFIG_MACH_U300_BS335 |
1222 | DEF_LOOKUP("uart1", &uart1_clk), | 1259 | DEF_LOOKUP("uart1", &uart1_clk), |
1223 | #endif | 1260 | #endif |
1224 | /* SLOW bridge clocks */ | 1261 | /* SLOW bridge clocks */ |
1225 | DEF_LOOKUP("slow", &slow_clk), | 1262 | DEF_LOOKUP("slow", &slow_clk), |
1226 | DEF_LOOKUP("wdog", &wdog_clk), | 1263 | DEF_LOOKUP("coh901327_wdog", &wdog_clk), |
1227 | DEF_LOOKUP("uart0", &uart_clk), | 1264 | DEF_LOOKUP("uart0", &uart_clk), |
1228 | DEF_LOOKUP("apptimer", &app_timer_clk), | 1265 | DEF_LOOKUP("apptimer", &app_timer_clk), |
1229 | DEF_LOOKUP("keypad", &keypad_clk), | 1266 | DEF_LOOKUP("coh901461-keypad", &keypad_clk), |
1230 | DEF_LOOKUP("u300-gpio", &gpio_clk), | 1267 | DEF_LOOKUP("u300-gpio", &gpio_clk), |
1231 | DEF_LOOKUP("rtc0", &rtc_clk), | 1268 | DEF_LOOKUP("rtc-coh901331", &rtc_clk), |
1232 | DEF_LOOKUP("bustr", &bustr_clk), | 1269 | DEF_LOOKUP("bustr", &bustr_clk), |
1233 | DEF_LOOKUP("evhist", &evhist_clk), | 1270 | DEF_LOOKUP("evhist", &evhist_clk), |
1234 | DEF_LOOKUP("timer", &timer_clk), | 1271 | DEF_LOOKUP("timer", &timer_clk), |
1235 | #ifdef CONFIG_MACH_U300_BS335 | 1272 | #ifdef CONFIG_MACH_U300_BS335 |
1236 | DEF_LOOKUP("ppm", &ppm_clk), | 1273 | DEF_LOOKUP("ppm", &ppm_clk), |
1237 | #endif | 1274 | #endif |
1238 | }; | 1275 | }; |
1239 | 1276 | ||
@@ -1427,16 +1464,20 @@ static const struct file_operations u300_clocks_operations = { | |||
1427 | .release = single_release, | 1464 | .release = single_release, |
1428 | }; | 1465 | }; |
1429 | 1466 | ||
1430 | static void init_clk_read_procfs(void) | 1467 | static int __init init_clk_read_debugfs(void) |
1431 | { | 1468 | { |
1432 | /* Expose a simple debugfs interface to view all clocks */ | 1469 | /* Expose a simple debugfs interface to view all clocks */ |
1433 | (void) debugfs_create_file("u300_clocks", S_IFREG | S_IRUGO, | 1470 | (void) debugfs_create_file("u300_clocks", S_IFREG | S_IRUGO, |
1434 | NULL, NULL, &u300_clocks_operations); | 1471 | NULL, NULL, |
1435 | } | 1472 | &u300_clocks_operations); |
1436 | #else | 1473 | return 0; |
1437 | static inline void init_clk_read_procfs(void) | ||
1438 | { | ||
1439 | } | 1474 | } |
1475 | /* | ||
1476 | * This needs to come in after the core_initcall() for the | ||
1477 | * overall clocks, because debugfs is not available until | ||
1478 | * the subsystems come up. | ||
1479 | */ | ||
1480 | module_init(init_clk_read_debugfs); | ||
1440 | #endif | 1481 | #endif |
1441 | 1482 | ||
1442 | static int __init u300_clock_init(void) | 1483 | static int __init u300_clock_init(void) |
@@ -1462,8 +1503,6 @@ static int __init u300_clock_init(void) | |||
1462 | 1503 | ||
1463 | clk_register(); | 1504 | clk_register(); |
1464 | 1505 | ||
1465 | init_clk_read_procfs(); | ||
1466 | |||
1467 | /* | 1506 | /* |
1468 | * Some of these may be on when we boot the system so make sure they | 1507 | * Some of these may be on when we boot the system so make sure they |
1469 | * are turned OFF. | 1508 | * are turned OFF. |
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 89b3ccf35e1b..2e9b8ccd8ec2 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c | |||
@@ -455,8 +455,8 @@ void __init u300_init_irq(void) | |||
455 | for (i = 0; i < NR_IRQS; i++) | 455 | for (i = 0; i < NR_IRQS; i++) |
456 | set_bit(i, (unsigned long *) &mask[0]); | 456 | set_bit(i, (unsigned long *) &mask[0]); |
457 | u300_enable_intcon_clock(); | 457 | u300_enable_intcon_clock(); |
458 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], 0); | 458 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], mask[0]); |
459 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], 0); | 459 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], mask[1]); |
460 | } | 460 | } |
461 | 461 | ||
462 | 462 | ||
@@ -510,7 +510,7 @@ static struct db_chip db_chips[] __initdata = { | |||
510 | } | 510 | } |
511 | }; | 511 | }; |
512 | 512 | ||
513 | static void u300_init_check_chip(void) | 513 | static void __init u300_init_check_chip(void) |
514 | { | 514 | { |
515 | 515 | ||
516 | u16 val; | 516 | u16 val; |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 69214fc8bd19..31093af7d052 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -342,8 +342,7 @@ static struct platform_device versatile_i2c_device = { | |||
342 | 342 | ||
343 | static struct i2c_board_info versatile_i2c_board_info[] = { | 343 | static struct i2c_board_info versatile_i2c_board_info[] = { |
344 | { | 344 | { |
345 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | 345 | I2C_BOARD_INFO("ds1338", 0xd0 >> 1), |
346 | .type = "ds1338", | ||
347 | }, | 346 | }, |
348 | }; | 347 | }; |
349 | 348 | ||
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 3a398befed41..03cd27d917b9 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -62,6 +62,12 @@ | |||
62 | #define SHIFT_ASR 0x40 | 62 | #define SHIFT_ASR 0x40 |
63 | #define SHIFT_RORRRX 0x60 | 63 | #define SHIFT_RORRRX 0x60 |
64 | 64 | ||
65 | #define BAD_INSTR 0xdeadc0de | ||
66 | |||
67 | /* Thumb-2 32 bit format per ARMv7 DDI0406A A6.3, either f800h,e800h,f800h */ | ||
68 | #define IS_T32(hi16) \ | ||
69 | (((hi16) & 0xe000) == 0xe000 && ((hi16) & 0x1800)) | ||
70 | |||
65 | static unsigned long ai_user; | 71 | static unsigned long ai_user; |
66 | static unsigned long ai_sys; | 72 | static unsigned long ai_sys; |
67 | static unsigned long ai_skipped; | 73 | static unsigned long ai_skipped; |
@@ -332,38 +338,48 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
332 | struct pt_regs *regs) | 338 | struct pt_regs *regs) |
333 | { | 339 | { |
334 | unsigned int rd = RD_BITS(instr); | 340 | unsigned int rd = RD_BITS(instr); |
335 | 341 | unsigned int rd2; | |
336 | if (((rd & 1) == 1) || (rd == 14)) | 342 | int load; |
343 | |||
344 | if ((instr & 0xfe000000) == 0xe8000000) { | ||
345 | /* ARMv7 Thumb-2 32-bit LDRD/STRD */ | ||
346 | rd2 = (instr >> 8) & 0xf; | ||
347 | load = !!(LDST_L_BIT(instr)); | ||
348 | } else if (((rd & 1) == 1) || (rd == 14)) | ||
337 | goto bad; | 349 | goto bad; |
350 | else { | ||
351 | load = ((instr & 0xf0) == 0xd0); | ||
352 | rd2 = rd + 1; | ||
353 | } | ||
338 | 354 | ||
339 | ai_dword += 1; | 355 | ai_dword += 1; |
340 | 356 | ||
341 | if (user_mode(regs)) | 357 | if (user_mode(regs)) |
342 | goto user; | 358 | goto user; |
343 | 359 | ||
344 | if ((instr & 0xf0) == 0xd0) { | 360 | if (load) { |
345 | unsigned long val; | 361 | unsigned long val; |
346 | get32_unaligned_check(val, addr); | 362 | get32_unaligned_check(val, addr); |
347 | regs->uregs[rd] = val; | 363 | regs->uregs[rd] = val; |
348 | get32_unaligned_check(val, addr + 4); | 364 | get32_unaligned_check(val, addr + 4); |
349 | regs->uregs[rd + 1] = val; | 365 | regs->uregs[rd2] = val; |
350 | } else { | 366 | } else { |
351 | put32_unaligned_check(regs->uregs[rd], addr); | 367 | put32_unaligned_check(regs->uregs[rd], addr); |
352 | put32_unaligned_check(regs->uregs[rd + 1], addr + 4); | 368 | put32_unaligned_check(regs->uregs[rd2], addr + 4); |
353 | } | 369 | } |
354 | 370 | ||
355 | return TYPE_LDST; | 371 | return TYPE_LDST; |
356 | 372 | ||
357 | user: | 373 | user: |
358 | if ((instr & 0xf0) == 0xd0) { | 374 | if (load) { |
359 | unsigned long val; | 375 | unsigned long val; |
360 | get32t_unaligned_check(val, addr); | 376 | get32t_unaligned_check(val, addr); |
361 | regs->uregs[rd] = val; | 377 | regs->uregs[rd] = val; |
362 | get32t_unaligned_check(val, addr + 4); | 378 | get32t_unaligned_check(val, addr + 4); |
363 | regs->uregs[rd + 1] = val; | 379 | regs->uregs[rd2] = val; |
364 | } else { | 380 | } else { |
365 | put32t_unaligned_check(regs->uregs[rd], addr); | 381 | put32t_unaligned_check(regs->uregs[rd], addr); |
366 | put32t_unaligned_check(regs->uregs[rd + 1], addr + 4); | 382 | put32t_unaligned_check(regs->uregs[rd2], addr + 4); |
367 | } | 383 | } |
368 | 384 | ||
369 | return TYPE_LDST; | 385 | return TYPE_LDST; |
@@ -616,8 +632,72 @@ thumb2arm(u16 tinstr) | |||
616 | /* Else fall through for illegal instruction case */ | 632 | /* Else fall through for illegal instruction case */ |
617 | 633 | ||
618 | default: | 634 | default: |
619 | return 0xdeadc0de; | 635 | return BAD_INSTR; |
636 | } | ||
637 | } | ||
638 | |||
639 | /* | ||
640 | * Convert Thumb-2 32 bit LDM, STM, LDRD, STRD to equivalent instruction | ||
641 | * handlable by ARM alignment handler, also find the corresponding handler, | ||
642 | * so that we can reuse ARM userland alignment fault fixups for Thumb. | ||
643 | * | ||
644 | * @pinstr: original Thumb-2 instruction; returns new handlable instruction | ||
645 | * @regs: register context. | ||
646 | * @poffset: return offset from faulted addr for later writeback | ||
647 | * | ||
648 | * NOTES: | ||
649 | * 1. Comments below refer to ARMv7 DDI0406A Thumb Instruction sections. | ||
650 | * 2. Register name Rt from ARMv7 is same as Rd from ARMv6 (Rd is Rt) | ||
651 | */ | ||
652 | static void * | ||
653 | do_alignment_t32_to_handler(unsigned long *pinstr, struct pt_regs *regs, | ||
654 | union offset_union *poffset) | ||
655 | { | ||
656 | unsigned long instr = *pinstr; | ||
657 | u16 tinst1 = (instr >> 16) & 0xffff; | ||
658 | u16 tinst2 = instr & 0xffff; | ||
659 | poffset->un = 0; | ||
660 | |||
661 | switch (tinst1 & 0xffe0) { | ||
662 | /* A6.3.5 Load/Store multiple */ | ||
663 | case 0xe880: /* STM/STMIA/STMEA,LDM/LDMIA, PUSH/POP T2 */ | ||
664 | case 0xe8a0: /* ...above writeback version */ | ||
665 | case 0xe900: /* STMDB/STMFD, LDMDB/LDMEA */ | ||
666 | case 0xe920: /* ...above writeback version */ | ||
667 | /* no need offset decision since handler calculates it */ | ||
668 | return do_alignment_ldmstm; | ||
669 | |||
670 | case 0xf840: /* POP/PUSH T3 (single register) */ | ||
671 | if (RN_BITS(instr) == 13 && (tinst2 & 0x09ff) == 0x0904) { | ||
672 | u32 L = !!(LDST_L_BIT(instr)); | ||
673 | const u32 subset[2] = { | ||
674 | 0xe92d0000, /* STMDB sp!,{registers} */ | ||
675 | 0xe8bd0000, /* LDMIA sp!,{registers} */ | ||
676 | }; | ||
677 | *pinstr = subset[L] | (1<<RD_BITS(instr)); | ||
678 | return do_alignment_ldmstm; | ||
679 | } | ||
680 | /* Else fall through for illegal instruction case */ | ||
681 | break; | ||
682 | |||
683 | /* A6.3.6 Load/store double, STRD/LDRD(immed, lit, reg) */ | ||
684 | case 0xe860: | ||
685 | case 0xe960: | ||
686 | case 0xe8e0: | ||
687 | case 0xe9e0: | ||
688 | poffset->un = (tinst2 & 0xff) << 2; | ||
689 | case 0xe940: | ||
690 | case 0xe9c0: | ||
691 | return do_alignment_ldrdstrd; | ||
692 | |||
693 | /* | ||
694 | * No need to handle load/store instructions up to word size | ||
695 | * since ARMv6 and later CPUs can perform unaligned accesses. | ||
696 | */ | ||
697 | default: | ||
698 | break; | ||
620 | } | 699 | } |
700 | return NULL; | ||
621 | } | 701 | } |
622 | 702 | ||
623 | static int | 703 | static int |
@@ -630,6 +710,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
630 | mm_segment_t fs; | 710 | mm_segment_t fs; |
631 | unsigned int fault; | 711 | unsigned int fault; |
632 | u16 tinstr = 0; | 712 | u16 tinstr = 0; |
713 | int isize = 4; | ||
714 | int thumb2_32b = 0; | ||
633 | 715 | ||
634 | instrptr = instruction_pointer(regs); | 716 | instrptr = instruction_pointer(regs); |
635 | 717 | ||
@@ -637,8 +719,19 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
637 | set_fs(KERNEL_DS); | 719 | set_fs(KERNEL_DS); |
638 | if (thumb_mode(regs)) { | 720 | if (thumb_mode(regs)) { |
639 | fault = __get_user(tinstr, (u16 *)(instrptr & ~1)); | 721 | fault = __get_user(tinstr, (u16 *)(instrptr & ~1)); |
640 | if (!(fault)) | 722 | if (!fault) { |
641 | instr = thumb2arm(tinstr); | 723 | if (cpu_architecture() >= CPU_ARCH_ARMv7 && |
724 | IS_T32(tinstr)) { | ||
725 | /* Thumb-2 32-bit */ | ||
726 | u16 tinst2 = 0; | ||
727 | fault = __get_user(tinst2, (u16 *)(instrptr+2)); | ||
728 | instr = (tinstr << 16) | tinst2; | ||
729 | thumb2_32b = 1; | ||
730 | } else { | ||
731 | isize = 2; | ||
732 | instr = thumb2arm(tinstr); | ||
733 | } | ||
734 | } | ||
642 | } else | 735 | } else |
643 | fault = __get_user(instr, (u32 *)instrptr); | 736 | fault = __get_user(instr, (u32 *)instrptr); |
644 | set_fs(fs); | 737 | set_fs(fs); |
@@ -655,7 +748,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
655 | 748 | ||
656 | fixup: | 749 | fixup: |
657 | 750 | ||
658 | regs->ARM_pc += thumb_mode(regs) ? 2 : 4; | 751 | regs->ARM_pc += isize; |
659 | 752 | ||
660 | switch (CODING_BITS(instr)) { | 753 | switch (CODING_BITS(instr)) { |
661 | case 0x00000000: /* 3.13.4 load/store instruction extensions */ | 754 | case 0x00000000: /* 3.13.4 load/store instruction extensions */ |
@@ -714,18 +807,25 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
714 | handler = do_alignment_ldrstr; | 807 | handler = do_alignment_ldrstr; |
715 | break; | 808 | break; |
716 | 809 | ||
717 | case 0x08000000: /* ldm or stm */ | 810 | case 0x08000000: /* ldm or stm, or thumb-2 32bit instruction */ |
718 | handler = do_alignment_ldmstm; | 811 | if (thumb2_32b) |
812 | handler = do_alignment_t32_to_handler(&instr, regs, &offset); | ||
813 | else | ||
814 | handler = do_alignment_ldmstm; | ||
719 | break; | 815 | break; |
720 | 816 | ||
721 | default: | 817 | default: |
722 | goto bad; | 818 | goto bad; |
723 | } | 819 | } |
724 | 820 | ||
821 | if (!handler) | ||
822 | goto bad; | ||
725 | type = handler(addr, instr, regs); | 823 | type = handler(addr, instr, regs); |
726 | 824 | ||
727 | if (type == TYPE_ERROR || type == TYPE_FAULT) | 825 | if (type == TYPE_ERROR || type == TYPE_FAULT) { |
826 | regs->ARM_pc -= isize; | ||
728 | goto bad_or_fault; | 827 | goto bad_or_fault; |
828 | } | ||
729 | 829 | ||
730 | if (type == TYPE_LDST) | 830 | if (type == TYPE_LDST) |
731 | do_alignment_finish_ldst(addr, instr, regs, offset); | 831 | do_alignment_finish_ldst(addr, instr, regs, offset); |
@@ -735,7 +835,6 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
735 | bad_or_fault: | 835 | bad_or_fault: |
736 | if (type == TYPE_ERROR) | 836 | if (type == TYPE_ERROR) |
737 | goto bad; | 837 | goto bad; |
738 | regs->ARM_pc -= thumb_mode(regs) ? 2 : 4; | ||
739 | /* | 838 | /* |
740 | * We got a fault - fix it up, or die. | 839 | * We got a fault - fix it up, or die. |
741 | */ | 840 | */ |
@@ -751,8 +850,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
751 | */ | 850 | */ |
752 | printk(KERN_ERR "Alignment trap: not handling instruction " | 851 | printk(KERN_ERR "Alignment trap: not handling instruction " |
753 | "%0*lx at [<%08lx>]\n", | 852 | "%0*lx at [<%08lx>]\n", |
754 | thumb_mode(regs) ? 4 : 8, | 853 | isize << 1, |
755 | thumb_mode(regs) ? tinstr : instr, instrptr); | 854 | isize == 2 ? tinstr : instr, instrptr); |
756 | ai_skipped += 1; | 855 | ai_skipped += 1; |
757 | return 1; | 856 | return 1; |
758 | 857 | ||
@@ -763,8 +862,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
763 | printk("Alignment trap: %s (%d) PC=0x%08lx Instr=0x%0*lx " | 862 | printk("Alignment trap: %s (%d) PC=0x%08lx Instr=0x%0*lx " |
764 | "Address=0x%08lx FSR 0x%03x\n", current->comm, | 863 | "Address=0x%08lx FSR 0x%03x\n", current->comm, |
765 | task_pid_nr(current), instrptr, | 864 | task_pid_nr(current), instrptr, |
766 | thumb_mode(regs) ? 4 : 8, | 865 | isize << 1, |
767 | thumb_mode(regs) ? tinstr : instr, | 866 | isize == 2 ? tinstr : instr, |
768 | addr, fsr); | 867 | addr, fsr); |
769 | 868 | ||
770 | if (ai_usermode & UM_FIXUP) | 869 | if (ai_usermode & UM_FIXUP) |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 0455557a2899..6fdcbb709827 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -208,7 +208,7 @@ good_area: | |||
208 | * than endlessly redo the fault. | 208 | * than endlessly redo the fault. |
209 | */ | 209 | */ |
210 | survive: | 210 | survive: |
211 | fault = handle_mm_fault(mm, vma, addr & PAGE_MASK, fsr & (1 << 11)); | 211 | fault = handle_mm_fault(mm, vma, addr & PAGE_MASK, (fsr & (1 << 11)) ? FAULT_FLAG_WRITE : 0); |
212 | if (unlikely(fault & VM_FAULT_ERROR)) { | 212 | if (unlikely(fault & VM_FAULT_ERROR)) { |
213 | if (fault & VM_FAULT_OOM) | 213 | if (fault & VM_FAULT_OOM) |
214 | goto out_of_memory; | 214 | goto out_of_memory; |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 8277802ec859..3a7279c1ce5e 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -120,6 +120,32 @@ void show_mem(void) | |||
120 | printk("%d pages swap cached\n", cached); | 120 | printk("%d pages swap cached\n", cached); |
121 | } | 121 | } |
122 | 122 | ||
123 | static void __init find_node_limits(int node, struct meminfo *mi, | ||
124 | unsigned long *min, unsigned long *max_low, unsigned long *max_high) | ||
125 | { | ||
126 | int i; | ||
127 | |||
128 | *min = -1UL; | ||
129 | *max_low = *max_high = 0; | ||
130 | |||
131 | for_each_nodebank(i, mi, node) { | ||
132 | struct membank *bank = &mi->bank[i]; | ||
133 | unsigned long start, end; | ||
134 | |||
135 | start = bank_pfn_start(bank); | ||
136 | end = bank_pfn_end(bank); | ||
137 | |||
138 | if (*min > start) | ||
139 | *min = start; | ||
140 | if (*max_high < end) | ||
141 | *max_high = end; | ||
142 | if (bank->highmem) | ||
143 | continue; | ||
144 | if (*max_low < end) | ||
145 | *max_low = end; | ||
146 | } | ||
147 | } | ||
148 | |||
123 | /* | 149 | /* |
124 | * FIXME: We really want to avoid allocating the bootmap bitmap | 150 | * FIXME: We really want to avoid allocating the bootmap bitmap |
125 | * over the top of the initrd. Hopefully, this is located towards | 151 | * over the top of the initrd. Hopefully, this is located towards |
@@ -210,41 +236,25 @@ static inline void map_memory_bank(struct membank *bank) | |||
210 | #endif | 236 | #endif |
211 | } | 237 | } |
212 | 238 | ||
213 | static unsigned long __init bootmem_init_node(int node, struct meminfo *mi) | 239 | static void __init bootmem_init_node(int node, struct meminfo *mi, |
240 | unsigned long start_pfn, unsigned long end_pfn) | ||
214 | { | 241 | { |
215 | unsigned long start_pfn, end_pfn, boot_pfn; | 242 | unsigned long boot_pfn; |
216 | unsigned int boot_pages; | 243 | unsigned int boot_pages; |
217 | pg_data_t *pgdat; | 244 | pg_data_t *pgdat; |
218 | int i; | 245 | int i; |
219 | 246 | ||
220 | start_pfn = -1UL; | ||
221 | end_pfn = 0; | ||
222 | |||
223 | /* | 247 | /* |
224 | * Calculate the pfn range, and map the memory banks for this node. | 248 | * Map the memory banks for this node. |
225 | */ | 249 | */ |
226 | for_each_nodebank(i, mi, node) { | 250 | for_each_nodebank(i, mi, node) { |
227 | struct membank *bank = &mi->bank[i]; | 251 | struct membank *bank = &mi->bank[i]; |
228 | unsigned long start, end; | ||
229 | 252 | ||
230 | start = bank_pfn_start(bank); | 253 | if (!bank->highmem) |
231 | end = bank_pfn_end(bank); | 254 | map_memory_bank(bank); |
232 | |||
233 | if (start_pfn > start) | ||
234 | start_pfn = start; | ||
235 | if (end_pfn < end) | ||
236 | end_pfn = end; | ||
237 | |||
238 | map_memory_bank(bank); | ||
239 | } | 255 | } |
240 | 256 | ||
241 | /* | 257 | /* |
242 | * If there is no memory in this node, ignore it. | ||
243 | */ | ||
244 | if (end_pfn == 0) | ||
245 | return end_pfn; | ||
246 | |||
247 | /* | ||
248 | * Allocate the bootmem bitmap page. | 258 | * Allocate the bootmem bitmap page. |
249 | */ | 259 | */ |
250 | boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn); | 260 | boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn); |
@@ -260,7 +270,8 @@ static unsigned long __init bootmem_init_node(int node, struct meminfo *mi) | |||
260 | 270 | ||
261 | for_each_nodebank(i, mi, node) { | 271 | for_each_nodebank(i, mi, node) { |
262 | struct membank *bank = &mi->bank[i]; | 272 | struct membank *bank = &mi->bank[i]; |
263 | free_bootmem_node(pgdat, bank_phys_start(bank), bank_phys_size(bank)); | 273 | if (!bank->highmem) |
274 | free_bootmem_node(pgdat, bank_phys_start(bank), bank_phys_size(bank)); | ||
264 | memory_present(node, bank_pfn_start(bank), bank_pfn_end(bank)); | 275 | memory_present(node, bank_pfn_start(bank), bank_pfn_end(bank)); |
265 | } | 276 | } |
266 | 277 | ||
@@ -269,8 +280,6 @@ static unsigned long __init bootmem_init_node(int node, struct meminfo *mi) | |||
269 | */ | 280 | */ |
270 | reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT, | 281 | reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT, |
271 | boot_pages << PAGE_SHIFT, BOOTMEM_DEFAULT); | 282 | boot_pages << PAGE_SHIFT, BOOTMEM_DEFAULT); |
272 | |||
273 | return end_pfn; | ||
274 | } | 283 | } |
275 | 284 | ||
276 | static void __init bootmem_reserve_initrd(int node) | 285 | static void __init bootmem_reserve_initrd(int node) |
@@ -297,33 +306,39 @@ static void __init bootmem_reserve_initrd(int node) | |||
297 | static void __init bootmem_free_node(int node, struct meminfo *mi) | 306 | static void __init bootmem_free_node(int node, struct meminfo *mi) |
298 | { | 307 | { |
299 | unsigned long zone_size[MAX_NR_ZONES], zhole_size[MAX_NR_ZONES]; | 308 | unsigned long zone_size[MAX_NR_ZONES], zhole_size[MAX_NR_ZONES]; |
300 | unsigned long start_pfn, end_pfn; | 309 | unsigned long min, max_low, max_high; |
301 | pg_data_t *pgdat = NODE_DATA(node); | ||
302 | int i; | 310 | int i; |
303 | 311 | ||
304 | start_pfn = pgdat->bdata->node_min_pfn; | 312 | find_node_limits(node, mi, &min, &max_low, &max_high); |
305 | end_pfn = pgdat->bdata->node_low_pfn; | ||
306 | 313 | ||
307 | /* | 314 | /* |
308 | * initialise the zones within this node. | 315 | * initialise the zones within this node. |
309 | */ | 316 | */ |
310 | memset(zone_size, 0, sizeof(zone_size)); | 317 | memset(zone_size, 0, sizeof(zone_size)); |
311 | memset(zhole_size, 0, sizeof(zhole_size)); | ||
312 | 318 | ||
313 | /* | 319 | /* |
314 | * The size of this node has already been determined. If we need | 320 | * The size of this node has already been determined. If we need |
315 | * to do anything fancy with the allocation of this memory to the | 321 | * to do anything fancy with the allocation of this memory to the |
316 | * zones, now is the time to do it. | 322 | * zones, now is the time to do it. |
317 | */ | 323 | */ |
318 | zone_size[0] = end_pfn - start_pfn; | 324 | zone_size[0] = max_low - min; |
325 | #ifdef CONFIG_HIGHMEM | ||
326 | zone_size[ZONE_HIGHMEM] = max_high - max_low; | ||
327 | #endif | ||
319 | 328 | ||
320 | /* | 329 | /* |
321 | * For each bank in this node, calculate the size of the holes. | 330 | * For each bank in this node, calculate the size of the holes. |
322 | * holes = node_size - sum(bank_sizes_in_node) | 331 | * holes = node_size - sum(bank_sizes_in_node) |
323 | */ | 332 | */ |
324 | zhole_size[0] = zone_size[0]; | 333 | memcpy(zhole_size, zone_size, sizeof(zhole_size)); |
325 | for_each_nodebank(i, mi, node) | 334 | for_each_nodebank(i, mi, node) { |
326 | zhole_size[0] -= bank_pfn_size(&mi->bank[i]); | 335 | int idx = 0; |
336 | #ifdef CONFIG_HIGHMEM | ||
337 | if (mi->bank[i].highmem) | ||
338 | idx = ZONE_HIGHMEM; | ||
339 | #endif | ||
340 | zhole_size[idx] -= bank_pfn_size(&mi->bank[i]); | ||
341 | } | ||
327 | 342 | ||
328 | /* | 343 | /* |
329 | * Adjust the sizes according to any special requirements for | 344 | * Adjust the sizes according to any special requirements for |
@@ -331,13 +346,13 @@ static void __init bootmem_free_node(int node, struct meminfo *mi) | |||
331 | */ | 346 | */ |
332 | arch_adjust_zones(node, zone_size, zhole_size); | 347 | arch_adjust_zones(node, zone_size, zhole_size); |
333 | 348 | ||
334 | free_area_init_node(node, zone_size, start_pfn, zhole_size); | 349 | free_area_init_node(node, zone_size, min, zhole_size); |
335 | } | 350 | } |
336 | 351 | ||
337 | void __init bootmem_init(void) | 352 | void __init bootmem_init(void) |
338 | { | 353 | { |
339 | struct meminfo *mi = &meminfo; | 354 | struct meminfo *mi = &meminfo; |
340 | unsigned long memend_pfn = 0; | 355 | unsigned long min, max_low, max_high; |
341 | int node, initrd_node; | 356 | int node, initrd_node; |
342 | 357 | ||
343 | /* | 358 | /* |
@@ -345,11 +360,29 @@ void __init bootmem_init(void) | |||
345 | */ | 360 | */ |
346 | initrd_node = check_initrd(mi); | 361 | initrd_node = check_initrd(mi); |
347 | 362 | ||
363 | max_low = max_high = 0; | ||
364 | |||
348 | /* | 365 | /* |
349 | * Run through each node initialising the bootmem allocator. | 366 | * Run through each node initialising the bootmem allocator. |
350 | */ | 367 | */ |
351 | for_each_node(node) { | 368 | for_each_node(node) { |
352 | unsigned long end_pfn = bootmem_init_node(node, mi); | 369 | unsigned long node_low, node_high; |
370 | |||
371 | find_node_limits(node, mi, &min, &node_low, &node_high); | ||
372 | |||
373 | if (node_low > max_low) | ||
374 | max_low = node_low; | ||
375 | if (node_high > max_high) | ||
376 | max_high = node_high; | ||
377 | |||
378 | /* | ||
379 | * If there is no memory in this node, ignore it. | ||
380 | * (We can't have nodes which have no lowmem) | ||
381 | */ | ||
382 | if (node_low == 0) | ||
383 | continue; | ||
384 | |||
385 | bootmem_init_node(node, mi, min, node_low); | ||
353 | 386 | ||
354 | /* | 387 | /* |
355 | * Reserve any special node zero regions. | 388 | * Reserve any special node zero regions. |
@@ -362,12 +395,6 @@ void __init bootmem_init(void) | |||
362 | */ | 395 | */ |
363 | if (node == initrd_node) | 396 | if (node == initrd_node) |
364 | bootmem_reserve_initrd(node); | 397 | bootmem_reserve_initrd(node); |
365 | |||
366 | /* | ||
367 | * Remember the highest memory PFN. | ||
368 | */ | ||
369 | if (end_pfn > memend_pfn) | ||
370 | memend_pfn = end_pfn; | ||
371 | } | 398 | } |
372 | 399 | ||
373 | /* | 400 | /* |
@@ -383,7 +410,7 @@ void __init bootmem_init(void) | |||
383 | for_each_node(node) | 410 | for_each_node(node) |
384 | bootmem_free_node(node, mi); | 411 | bootmem_free_node(node, mi); |
385 | 412 | ||
386 | high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1; | 413 | high_memory = __va((max_low << PAGE_SHIFT) - 1) + 1; |
387 | 414 | ||
388 | /* | 415 | /* |
389 | * This doesn't seem to be used by the Linux memory manager any | 416 | * This doesn't seem to be used by the Linux memory manager any |
@@ -393,7 +420,8 @@ void __init bootmem_init(void) | |||
393 | * Note: max_low_pfn and max_pfn reflect the number of _pages_ in | 420 | * Note: max_low_pfn and max_pfn reflect the number of _pages_ in |
394 | * the system, not the maximum PFN. | 421 | * the system, not the maximum PFN. |
395 | */ | 422 | */ |
396 | max_pfn = max_low_pfn = memend_pfn - PHYS_PFN_OFFSET; | 423 | max_low_pfn = max_low - PHYS_PFN_OFFSET; |
424 | max_pfn = max_high - PHYS_PFN_OFFSET; | ||
397 | } | 425 | } |
398 | 426 | ||
399 | static inline int free_area(unsigned long pfn, unsigned long end, char *s) | 427 | static inline int free_area(unsigned long pfn, unsigned long end, char *s) |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index fdaa9bb87c16..4426ee67ceca 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -687,13 +687,19 @@ __early_param("vmalloc=", early_vmalloc); | |||
687 | 687 | ||
688 | static void __init sanity_check_meminfo(void) | 688 | static void __init sanity_check_meminfo(void) |
689 | { | 689 | { |
690 | int i, j; | 690 | int i, j, highmem = 0; |
691 | 691 | ||
692 | for (i = 0, j = 0; i < meminfo.nr_banks; i++) { | 692 | for (i = 0, j = 0; i < meminfo.nr_banks; i++) { |
693 | struct membank *bank = &meminfo.bank[j]; | 693 | struct membank *bank = &meminfo.bank[j]; |
694 | *bank = meminfo.bank[i]; | 694 | *bank = meminfo.bank[i]; |
695 | 695 | ||
696 | #ifdef CONFIG_HIGHMEM | 696 | #ifdef CONFIG_HIGHMEM |
697 | if (__va(bank->start) > VMALLOC_MIN || | ||
698 | __va(bank->start) < (void *)PAGE_OFFSET) | ||
699 | highmem = 1; | ||
700 | |||
701 | bank->highmem = highmem; | ||
702 | |||
697 | /* | 703 | /* |
698 | * Split those memory banks which are partially overlapping | 704 | * Split those memory banks which are partially overlapping |
699 | * the vmalloc area greatly simplifying things later. | 705 | * the vmalloc area greatly simplifying things later. |
@@ -714,6 +720,7 @@ static void __init sanity_check_meminfo(void) | |||
714 | i++; | 720 | i++; |
715 | bank[1].size -= VMALLOC_MIN - __va(bank->start); | 721 | bank[1].size -= VMALLOC_MIN - __va(bank->start); |
716 | bank[1].start = __pa(VMALLOC_MIN - 1) + 1; | 722 | bank[1].start = __pa(VMALLOC_MIN - 1) + 1; |
723 | bank[1].highmem = highmem = 1; | ||
717 | j++; | 724 | j++; |
718 | } | 725 | } |
719 | bank->size = VMALLOC_MIN - __va(bank->start); | 726 | bank->size = VMALLOC_MIN - __va(bank->start); |
@@ -836,6 +843,13 @@ void __init reserve_node_zero(pg_data_t *pgdat) | |||
836 | BOOTMEM_EXCLUSIVE); | 843 | BOOTMEM_EXCLUSIVE); |
837 | } | 844 | } |
838 | 845 | ||
846 | if (machine_is_treo680()) { | ||
847 | reserve_bootmem_node(pgdat, 0xa0000000, 0x1000, | ||
848 | BOOTMEM_EXCLUSIVE); | ||
849 | reserve_bootmem_node(pgdat, 0xa2000000, 0x1000, | ||
850 | BOOTMEM_EXCLUSIVE); | ||
851 | } | ||
852 | |||
839 | if (machine_is_palmt5()) | 853 | if (machine_is_palmt5()) |
840 | reserve_bootmem_node(pgdat, 0xa0200000, 0x1000, | 854 | reserve_bootmem_node(pgdat, 0xa0200000, 0x1000, |
841 | BOOTMEM_EXCLUSIVE); | 855 | BOOTMEM_EXCLUSIVE); |
diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c index 195e48edd8c2..ac5c80062b70 100644 --- a/arch/arm/mm/proc-syms.c +++ b/arch/arm/mm/proc-syms.c | |||
@@ -27,6 +27,7 @@ EXPORT_SYMBOL(__cpuc_flush_kern_all); | |||
27 | EXPORT_SYMBOL(__cpuc_flush_user_all); | 27 | EXPORT_SYMBOL(__cpuc_flush_user_all); |
28 | EXPORT_SYMBOL(__cpuc_flush_user_range); | 28 | EXPORT_SYMBOL(__cpuc_flush_user_range); |
29 | EXPORT_SYMBOL(__cpuc_coherent_kern_range); | 29 | EXPORT_SYMBOL(__cpuc_coherent_kern_range); |
30 | EXPORT_SYMBOL(__cpuc_flush_dcache_page); | ||
30 | EXPORT_SYMBOL(dmac_inv_range); /* because of flush_ioremap_region() */ | 31 | EXPORT_SYMBOL(dmac_inv_range); /* because of flush_ioremap_region() */ |
31 | #else | 32 | #else |
32 | EXPORT_SYMBOL(cpu_cache); | 33 | EXPORT_SYMBOL(cpu_cache); |
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx3.h b/arch/arm/plat-mxc/include/mach/iomux-mx3.h index 27f8d1b2bc6b..2eb182f73876 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx3.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx3.h | |||
@@ -602,6 +602,8 @@ enum iomux_pins { | |||
602 | #define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC) | 602 | #define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC) |
603 | #define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2) | 603 | #define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2) |
604 | #define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2) | 604 | #define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2) |
605 | #define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1) | ||
606 | #define MX31_PIN_CSPI2_SCLK__I2C3_SCL IOMUX_MODE(MX31_PIN_CSPI2_SCLK, IOMUX_CONFIG_ALT1) | ||
605 | #define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC) | 607 | #define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC) |
606 | #define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC) | 608 | #define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC) |
607 | #define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC) | 609 | #define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC) |
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c index 843e8af64066..1868c0d8f9b5 100644 --- a/arch/arm/plat-omap/cpu-omap.c +++ b/arch/arm/plat-omap/cpu-omap.c | |||
@@ -78,10 +78,10 @@ static int omap_target(struct cpufreq_policy *policy, | |||
78 | 78 | ||
79 | /* Ensure desired rate is within allowed range. Some govenors | 79 | /* Ensure desired rate is within allowed range. Some govenors |
80 | * (ondemand) will just pass target_freq=0 to get the minimum. */ | 80 | * (ondemand) will just pass target_freq=0 to get the minimum. */ |
81 | if (target_freq < policy->cpuinfo.min_freq) | 81 | if (target_freq < policy->min) |
82 | target_freq = policy->cpuinfo.min_freq; | 82 | target_freq = policy->min; |
83 | if (target_freq > policy->cpuinfo.max_freq) | 83 | if (target_freq > policy->max) |
84 | target_freq = policy->cpuinfo.max_freq; | 84 | target_freq = policy->max; |
85 | 85 | ||
86 | freqs.old = omap_getspeed(0); | 86 | freqs.old = omap_getspeed(0); |
87 | freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000; | 87 | freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000; |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index def14ec265b3..e3ac94f09006 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -946,7 +946,9 @@ void omap_start_dma(int lch) | |||
946 | 946 | ||
947 | cur_lch = next_lch; | 947 | cur_lch = next_lch; |
948 | } while (next_lch != -1); | 948 | } while (next_lch != -1); |
949 | } else if (cpu_class_is_omap2()) { | 949 | } else if (cpu_is_omap242x() || |
950 | (cpu_is_omap243x() && omap_type() <= OMAP2430_REV_ES1_0)) { | ||
951 | |||
950 | /* Errata: Need to write lch even if not using chaining */ | 952 | /* Errata: Need to write lch even if not using chaining */ |
951 | dma_write(lch, CLNK_CTRL(lch)); | 953 | dma_write(lch, CLNK_CTRL(lch)); |
952 | } | 954 | } |
@@ -2457,6 +2459,19 @@ static int __init omap_init_dma(void) | |||
2457 | setup_irq(irq, &omap24xx_dma_irq); | 2459 | setup_irq(irq, &omap24xx_dma_irq); |
2458 | } | 2460 | } |
2459 | 2461 | ||
2462 | /* Enable smartidle idlemodes and autoidle */ | ||
2463 | if (cpu_is_omap34xx()) { | ||
2464 | u32 v = dma_read(OCP_SYSCONFIG); | ||
2465 | v &= ~(DMA_SYSCONFIG_MIDLEMODE_MASK | | ||
2466 | DMA_SYSCONFIG_SIDLEMODE_MASK | | ||
2467 | DMA_SYSCONFIG_AUTOIDLE); | ||
2468 | v |= (DMA_SYSCONFIG_MIDLEMODE(DMA_IDLEMODE_SMARTIDLE) | | ||
2469 | DMA_SYSCONFIG_SIDLEMODE(DMA_IDLEMODE_SMARTIDLE) | | ||
2470 | DMA_SYSCONFIG_AUTOIDLE); | ||
2471 | dma_write(v , OCP_SYSCONFIG); | ||
2472 | } | ||
2473 | |||
2474 | |||
2460 | /* FIXME: Update LCD DMA to work on 24xx */ | 2475 | /* FIXME: Update LCD DMA to work on 24xx */ |
2461 | if (cpu_class_is_omap1()) { | 2476 | if (cpu_class_is_omap1()) { |
2462 | r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0, | 2477 | r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0, |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 7fd89ba8d3b5..9298bc0ab171 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -476,14 +476,12 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable) | |||
476 | __raw_writel(l, reg); | 476 | __raw_writel(l, reg); |
477 | } | 477 | } |
478 | 478 | ||
479 | static int __omap_get_gpio_datain(int gpio) | 479 | static int _get_gpio_datain(struct gpio_bank *bank, int gpio) |
480 | { | 480 | { |
481 | struct gpio_bank *bank; | ||
482 | void __iomem *reg; | 481 | void __iomem *reg; |
483 | 482 | ||
484 | if (check_gpio(gpio) < 0) | 483 | if (check_gpio(gpio) < 0) |
485 | return -EINVAL; | 484 | return -EINVAL; |
486 | bank = get_gpio_bank(gpio); | ||
487 | reg = bank->base; | 485 | reg = bank->base; |
488 | switch (bank->method) { | 486 | switch (bank->method) { |
489 | #ifdef CONFIG_ARCH_OMAP1 | 487 | #ifdef CONFIG_ARCH_OMAP1 |
@@ -524,6 +522,53 @@ static int __omap_get_gpio_datain(int gpio) | |||
524 | & (1 << get_gpio_index(gpio))) != 0; | 522 | & (1 << get_gpio_index(gpio))) != 0; |
525 | } | 523 | } |
526 | 524 | ||
525 | static int _get_gpio_dataout(struct gpio_bank *bank, int gpio) | ||
526 | { | ||
527 | void __iomem *reg; | ||
528 | |||
529 | if (check_gpio(gpio) < 0) | ||
530 | return -EINVAL; | ||
531 | reg = bank->base; | ||
532 | |||
533 | switch (bank->method) { | ||
534 | #ifdef CONFIG_ARCH_OMAP1 | ||
535 | case METHOD_MPUIO: | ||
536 | reg += OMAP_MPUIO_OUTPUT; | ||
537 | break; | ||
538 | #endif | ||
539 | #ifdef CONFIG_ARCH_OMAP15XX | ||
540 | case METHOD_GPIO_1510: | ||
541 | reg += OMAP1510_GPIO_DATA_OUTPUT; | ||
542 | break; | ||
543 | #endif | ||
544 | #ifdef CONFIG_ARCH_OMAP16XX | ||
545 | case METHOD_GPIO_1610: | ||
546 | reg += OMAP1610_GPIO_DATAOUT; | ||
547 | break; | ||
548 | #endif | ||
549 | #ifdef CONFIG_ARCH_OMAP730 | ||
550 | case METHOD_GPIO_730: | ||
551 | reg += OMAP730_GPIO_DATA_OUTPUT; | ||
552 | break; | ||
553 | #endif | ||
554 | #ifdef CONFIG_ARCH_OMAP850 | ||
555 | case METHOD_GPIO_850: | ||
556 | reg += OMAP850_GPIO_DATA_OUTPUT; | ||
557 | break; | ||
558 | #endif | ||
559 | #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) || \ | ||
560 | defined(CONFIG_ARCH_OMAP4) | ||
561 | case METHOD_GPIO_24XX: | ||
562 | reg += OMAP24XX_GPIO_DATAOUT; | ||
563 | break; | ||
564 | #endif | ||
565 | default: | ||
566 | return -EINVAL; | ||
567 | } | ||
568 | |||
569 | return (__raw_readl(reg) & (1 << get_gpio_index(gpio))) != 0; | ||
570 | } | ||
571 | |||
527 | #define MOD_REG_BIT(reg, bit_mask, set) \ | 572 | #define MOD_REG_BIT(reg, bit_mask, set) \ |
528 | do { \ | 573 | do { \ |
529 | int l = __raw_readl(base + reg); \ | 574 | int l = __raw_readl(base + reg); \ |
@@ -1189,6 +1234,7 @@ static void gpio_mask_irq(unsigned int irq) | |||
1189 | struct gpio_bank *bank = get_irq_chip_data(irq); | 1234 | struct gpio_bank *bank = get_irq_chip_data(irq); |
1190 | 1235 | ||
1191 | _set_gpio_irqenable(bank, gpio, 0); | 1236 | _set_gpio_irqenable(bank, gpio, 0); |
1237 | _set_gpio_triggering(bank, get_gpio_index(gpio), IRQ_TYPE_NONE); | ||
1192 | } | 1238 | } |
1193 | 1239 | ||
1194 | static void gpio_unmask_irq(unsigned int irq) | 1240 | static void gpio_unmask_irq(unsigned int irq) |
@@ -1196,6 +1242,11 @@ static void gpio_unmask_irq(unsigned int irq) | |||
1196 | unsigned int gpio = irq - IH_GPIO_BASE; | 1242 | unsigned int gpio = irq - IH_GPIO_BASE; |
1197 | struct gpio_bank *bank = get_irq_chip_data(irq); | 1243 | struct gpio_bank *bank = get_irq_chip_data(irq); |
1198 | unsigned int irq_mask = 1 << get_gpio_index(gpio); | 1244 | unsigned int irq_mask = 1 << get_gpio_index(gpio); |
1245 | struct irq_desc *desc = irq_to_desc(irq); | ||
1246 | u32 trigger = desc->status & IRQ_TYPE_SENSE_MASK; | ||
1247 | |||
1248 | if (trigger) | ||
1249 | _set_gpio_triggering(bank, get_gpio_index(gpio), trigger); | ||
1199 | 1250 | ||
1200 | /* For level-triggered GPIOs, the clearing must be done after | 1251 | /* For level-triggered GPIOs, the clearing must be done after |
1201 | * the HW source is cleared, thus after the handler has run */ | 1252 | * the HW source is cleared, thus after the handler has run */ |
@@ -1350,9 +1401,49 @@ static int gpio_input(struct gpio_chip *chip, unsigned offset) | |||
1350 | return 0; | 1401 | return 0; |
1351 | } | 1402 | } |
1352 | 1403 | ||
1404 | static int gpio_is_input(struct gpio_bank *bank, int mask) | ||
1405 | { | ||
1406 | void __iomem *reg = bank->base; | ||
1407 | |||
1408 | switch (bank->method) { | ||
1409 | case METHOD_MPUIO: | ||
1410 | reg += OMAP_MPUIO_IO_CNTL; | ||
1411 | break; | ||
1412 | case METHOD_GPIO_1510: | ||
1413 | reg += OMAP1510_GPIO_DIR_CONTROL; | ||
1414 | break; | ||
1415 | case METHOD_GPIO_1610: | ||
1416 | reg += OMAP1610_GPIO_DIRECTION; | ||
1417 | break; | ||
1418 | case METHOD_GPIO_730: | ||
1419 | reg += OMAP730_GPIO_DIR_CONTROL; | ||
1420 | break; | ||
1421 | case METHOD_GPIO_850: | ||
1422 | reg += OMAP850_GPIO_DIR_CONTROL; | ||
1423 | break; | ||
1424 | case METHOD_GPIO_24XX: | ||
1425 | reg += OMAP24XX_GPIO_OE; | ||
1426 | break; | ||
1427 | } | ||
1428 | return __raw_readl(reg) & mask; | ||
1429 | } | ||
1430 | |||
1353 | static int gpio_get(struct gpio_chip *chip, unsigned offset) | 1431 | static int gpio_get(struct gpio_chip *chip, unsigned offset) |
1354 | { | 1432 | { |
1355 | return __omap_get_gpio_datain(chip->base + offset); | 1433 | struct gpio_bank *bank; |
1434 | void __iomem *reg; | ||
1435 | int gpio; | ||
1436 | u32 mask; | ||
1437 | |||
1438 | gpio = chip->base + offset; | ||
1439 | bank = get_gpio_bank(gpio); | ||
1440 | reg = bank->base; | ||
1441 | mask = 1 << get_gpio_index(gpio); | ||
1442 | |||
1443 | if (gpio_is_input(bank, mask)) | ||
1444 | return _get_gpio_datain(bank, gpio); | ||
1445 | else | ||
1446 | return _get_gpio_dataout(bank, gpio); | ||
1356 | } | 1447 | } |
1357 | 1448 | ||
1358 | static int gpio_output(struct gpio_chip *chip, unsigned offset, int value) | 1449 | static int gpio_output(struct gpio_chip *chip, unsigned offset, int value) |
@@ -1585,6 +1676,7 @@ static int __init _omap_gpio_init(void) | |||
1585 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_IRQENABLE1); | 1676 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_IRQENABLE1); |
1586 | __raw_writel(0xffffffff, bank->base + OMAP24XX_GPIO_IRQSTATUS1); | 1677 | __raw_writel(0xffffffff, bank->base + OMAP24XX_GPIO_IRQSTATUS1); |
1587 | __raw_writew(0x0015, bank->base + OMAP24XX_GPIO_SYSCONFIG); | 1678 | __raw_writew(0x0015, bank->base + OMAP24XX_GPIO_SYSCONFIG); |
1679 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_DEBOUNCE_EN); | ||
1588 | 1680 | ||
1589 | /* Initialize interface clock ungated, module enabled */ | 1681 | /* Initialize interface clock ungated, module enabled */ |
1590 | __raw_writel(0, bank->base + OMAP24XX_GPIO_CTRL); | 1682 | __raw_writel(0, bank->base + OMAP24XX_GPIO_CTRL); |
@@ -1885,34 +1977,6 @@ arch_initcall(omap_gpio_sysinit); | |||
1885 | #include <linux/debugfs.h> | 1977 | #include <linux/debugfs.h> |
1886 | #include <linux/seq_file.h> | 1978 | #include <linux/seq_file.h> |
1887 | 1979 | ||
1888 | static int gpio_is_input(struct gpio_bank *bank, int mask) | ||
1889 | { | ||
1890 | void __iomem *reg = bank->base; | ||
1891 | |||
1892 | switch (bank->method) { | ||
1893 | case METHOD_MPUIO: | ||
1894 | reg += OMAP_MPUIO_IO_CNTL; | ||
1895 | break; | ||
1896 | case METHOD_GPIO_1510: | ||
1897 | reg += OMAP1510_GPIO_DIR_CONTROL; | ||
1898 | break; | ||
1899 | case METHOD_GPIO_1610: | ||
1900 | reg += OMAP1610_GPIO_DIRECTION; | ||
1901 | break; | ||
1902 | case METHOD_GPIO_730: | ||
1903 | reg += OMAP730_GPIO_DIR_CONTROL; | ||
1904 | break; | ||
1905 | case METHOD_GPIO_850: | ||
1906 | reg += OMAP850_GPIO_DIR_CONTROL; | ||
1907 | break; | ||
1908 | case METHOD_GPIO_24XX: | ||
1909 | reg += OMAP24XX_GPIO_OE; | ||
1910 | break; | ||
1911 | } | ||
1912 | return __raw_readl(reg) & mask; | ||
1913 | } | ||
1914 | |||
1915 | |||
1916 | static int dbg_gpio_show(struct seq_file *s, void *unused) | 1980 | static int dbg_gpio_show(struct seq_file *s, void *unused) |
1917 | { | 1981 | { |
1918 | unsigned i, j, gpio; | 1982 | unsigned i, j, gpio; |
diff --git a/arch/arm/plat-omap/include/mach/clock.h b/arch/arm/plat-omap/include/mach/clock.h index f9f65e1ba3f1..4b8b0d65cbf2 100644 --- a/arch/arm/plat-omap/include/mach/clock.h +++ b/arch/arm/plat-omap/include/mach/clock.h | |||
@@ -20,6 +20,8 @@ struct clockdomain; | |||
20 | struct clkops { | 20 | struct clkops { |
21 | int (*enable)(struct clk *); | 21 | int (*enable)(struct clk *); |
22 | void (*disable)(struct clk *); | 22 | void (*disable)(struct clk *); |
23 | void (*find_idlest)(struct clk *, void __iomem **, u8 *); | ||
24 | void (*find_companion)(struct clk *, void __iomem **, u8 *); | ||
23 | }; | 25 | }; |
24 | 26 | ||
25 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \ | 27 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \ |
diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h index fc60c4ebcc28..11e73d9e8928 100644 --- a/arch/arm/plat-omap/include/mach/cpu.h +++ b/arch/arm/plat-omap/include/mach/cpu.h | |||
@@ -30,6 +30,17 @@ | |||
30 | #ifndef __ASM_ARCH_OMAP_CPU_H | 30 | #ifndef __ASM_ARCH_OMAP_CPU_H |
31 | #define __ASM_ARCH_OMAP_CPU_H | 31 | #define __ASM_ARCH_OMAP_CPU_H |
32 | 32 | ||
33 | /* | ||
34 | * Omap device type i.e. EMU/HS/TST/GP/BAD | ||
35 | */ | ||
36 | #define OMAP2_DEVICE_TYPE_TEST 0 | ||
37 | #define OMAP2_DEVICE_TYPE_EMU 1 | ||
38 | #define OMAP2_DEVICE_TYPE_SEC 2 | ||
39 | #define OMAP2_DEVICE_TYPE_GP 3 | ||
40 | #define OMAP2_DEVICE_TYPE_BAD 4 | ||
41 | |||
42 | int omap_type(void); | ||
43 | |||
33 | struct omap_chip_id { | 44 | struct omap_chip_id { |
34 | u8 oc; | 45 | u8 oc; |
35 | u8 type; | 46 | u8 type; |
@@ -367,9 +378,6 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
367 | #define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \ | 378 | #define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \ |
368 | cpu_is_omap44xx()) | 379 | cpu_is_omap44xx()) |
369 | 380 | ||
370 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \ | ||
371 | defined(CONFIG_ARCH_OMAP4) | ||
372 | |||
373 | /* Various silicon revisions for omap2 */ | 381 | /* Various silicon revisions for omap2 */ |
374 | #define OMAP242X_CLASS 0x24200024 | 382 | #define OMAP242X_CLASS 0x24200024 |
375 | #define OMAP2420_REV_ES1_0 0x24200024 | 383 | #define OMAP2420_REV_ES1_0 0x24200024 |
@@ -424,17 +432,4 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
424 | 432 | ||
425 | 433 | ||
426 | int omap_chip_is(struct omap_chip_id oci); | 434 | int omap_chip_is(struct omap_chip_id oci); |
427 | int omap_type(void); | ||
428 | |||
429 | /* | ||
430 | * Macro to detect device type i.e. EMU/HS/TST/GP/BAD | ||
431 | */ | ||
432 | #define OMAP2_DEVICE_TYPE_TEST 0 | ||
433 | #define OMAP2_DEVICE_TYPE_EMU 1 | ||
434 | #define OMAP2_DEVICE_TYPE_SEC 2 | ||
435 | #define OMAP2_DEVICE_TYPE_GP 3 | ||
436 | #define OMAP2_DEVICE_TYPE_BAD 4 | ||
437 | |||
438 | void omap2_check_revision(void); | 435 | void omap2_check_revision(void); |
439 | |||
440 | #endif /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */ | ||
diff --git a/arch/arm/plat-omap/include/mach/dma.h b/arch/arm/plat-omap/include/mach/dma.h index 8c1eae88737e..7b939cc01962 100644 --- a/arch/arm/plat-omap/include/mach/dma.h +++ b/arch/arm/plat-omap/include/mach/dma.h | |||
@@ -389,6 +389,21 @@ | |||
389 | #define DMA_THREAD_FIFO_25 (0x02 << 14) | 389 | #define DMA_THREAD_FIFO_25 (0x02 << 14) |
390 | #define DMA_THREAD_FIFO_50 (0x03 << 14) | 390 | #define DMA_THREAD_FIFO_50 (0x03 << 14) |
391 | 391 | ||
392 | /* DMA4_OCP_SYSCONFIG bits */ | ||
393 | #define DMA_SYSCONFIG_MIDLEMODE_MASK (3 << 12) | ||
394 | #define DMA_SYSCONFIG_CLOCKACTIVITY_MASK (3 << 8) | ||
395 | #define DMA_SYSCONFIG_EMUFREE (1 << 5) | ||
396 | #define DMA_SYSCONFIG_SIDLEMODE_MASK (3 << 3) | ||
397 | #define DMA_SYSCONFIG_SOFTRESET (1 << 2) | ||
398 | #define DMA_SYSCONFIG_AUTOIDLE (1 << 0) | ||
399 | |||
400 | #define DMA_SYSCONFIG_MIDLEMODE(n) ((n) << 12) | ||
401 | #define DMA_SYSCONFIG_SIDLEMODE(n) ((n) << 3) | ||
402 | |||
403 | #define DMA_IDLEMODE_SMARTIDLE 0x2 | ||
404 | #define DMA_IDLEMODE_NO_IDLE 0x1 | ||
405 | #define DMA_IDLEMODE_FORCE_IDLE 0x0 | ||
406 | |||
392 | /* Chaining modes*/ | 407 | /* Chaining modes*/ |
393 | #ifndef CONFIG_ARCH_OMAP1 | 408 | #ifndef CONFIG_ARCH_OMAP1 |
394 | #define OMAP_DMA_STATIC_CHAIN 0x1 | 409 | #define OMAP_DMA_STATIC_CHAIN 0x1 |
diff --git a/arch/arm/plat-omap/include/mach/io.h b/arch/arm/plat-omap/include/mach/io.h index 3b2814720569..21fb0efdda86 100644 --- a/arch/arm/plat-omap/include/mach/io.h +++ b/arch/arm/plat-omap/include/mach/io.h | |||
@@ -201,7 +201,7 @@ | |||
201 | #define OMAP2_IO_ADDRESS(pa) IOMEM(__OMAP2_IO_ADDRESS(pa)) | 201 | #define OMAP2_IO_ADDRESS(pa) IOMEM(__OMAP2_IO_ADDRESS(pa)) |
202 | 202 | ||
203 | #ifdef __ASSEMBLER__ | 203 | #ifdef __ASSEMBLER__ |
204 | #define IOMEM(x) x | 204 | #define IOMEM(x) (x) |
205 | #else | 205 | #else |
206 | #define IOMEM(x) ((void __force __iomem *)(x)) | 206 | #define IOMEM(x) ((void __force __iomem *)(x)) |
207 | 207 | ||
@@ -228,7 +228,8 @@ extern void omap1_map_common_io(void); | |||
228 | extern void omap1_init_common_hw(void); | 228 | extern void omap1_init_common_hw(void); |
229 | 229 | ||
230 | extern void omap2_map_common_io(void); | 230 | extern void omap2_map_common_io(void); |
231 | extern void omap2_init_common_hw(struct omap_sdrc_params *sp); | 231 | extern void omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, |
232 | struct omap_sdrc_params *sdrc_cs1); | ||
232 | 233 | ||
233 | #define __arch_ioremap(p,s,t) omap_ioremap(p,s,t) | 234 | #define __arch_ioremap(p,s,t) omap_ioremap(p,s,t) |
234 | #define __arch_iounmap(v) omap_iounmap(v) | 235 | #define __arch_iounmap(v) omap_iounmap(v) |
diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h index 85a621705766..80281c458baf 100644 --- a/arch/arm/plat-omap/include/mach/mux.h +++ b/arch/arm/plat-omap/include/mach/mux.h | |||
@@ -853,6 +853,10 @@ enum omap34xx_index { | |||
853 | AE5_34XX_GPIO143, | 853 | AE5_34XX_GPIO143, |
854 | H19_34XX_GPIO164_OUT, | 854 | H19_34XX_GPIO164_OUT, |
855 | J25_34XX_GPIO170, | 855 | J25_34XX_GPIO170, |
856 | |||
857 | /* OMAP3 SDRC CKE signals to SDR/DDR ram chips */ | ||
858 | H16_34XX_SDRC_CKE0, | ||
859 | H17_34XX_SDRC_CKE1, | ||
856 | }; | 860 | }; |
857 | 861 | ||
858 | struct omap_mux_cfg { | 862 | struct omap_mux_cfg { |
diff --git a/arch/arm/plat-omap/include/mach/prcm.h b/arch/arm/plat-omap/include/mach/prcm.h index 24ac3c715912..cda2a70397b4 100644 --- a/arch/arm/plat-omap/include/mach/prcm.h +++ b/arch/arm/plat-omap/include/mach/prcm.h | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | u32 omap_prcm_get_reset_sources(void); | 26 | u32 omap_prcm_get_reset_sources(void); |
27 | void omap_prcm_arch_reset(char mode); | 27 | void omap_prcm_arch_reset(char mode); |
28 | int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, const char *name); | ||
28 | 29 | ||
29 | #endif | 30 | #endif |
30 | 31 | ||
diff --git a/arch/arm/plat-omap/include/mach/sdrc.h b/arch/arm/plat-omap/include/mach/sdrc.h index adc73522491f..0be18e4ff182 100644 --- a/arch/arm/plat-omap/include/mach/sdrc.h +++ b/arch/arm/plat-omap/include/mach/sdrc.h | |||
@@ -30,6 +30,10 @@ | |||
30 | #define SDRC_ACTIM_CTRL_A_0 0x09c | 30 | #define SDRC_ACTIM_CTRL_A_0 0x09c |
31 | #define SDRC_ACTIM_CTRL_B_0 0x0a0 | 31 | #define SDRC_ACTIM_CTRL_B_0 0x0a0 |
32 | #define SDRC_RFR_CTRL_0 0x0a4 | 32 | #define SDRC_RFR_CTRL_0 0x0a4 |
33 | #define SDRC_MR_1 0x0B4 | ||
34 | #define SDRC_ACTIM_CTRL_A_1 0x0C4 | ||
35 | #define SDRC_ACTIM_CTRL_B_1 0x0C8 | ||
36 | #define SDRC_RFR_CTRL_1 0x0D4 | ||
33 | 37 | ||
34 | /* | 38 | /* |
35 | * These values represent the number of memory clock cycles between | 39 | * These values represent the number of memory clock cycles between |
@@ -102,8 +106,11 @@ struct omap_sdrc_params { | |||
102 | u32 mr; | 106 | u32 mr; |
103 | }; | 107 | }; |
104 | 108 | ||
105 | void __init omap2_sdrc_init(struct omap_sdrc_params *sp); | 109 | void __init omap2_sdrc_init(struct omap_sdrc_params *sdrc_cs0, |
106 | struct omap_sdrc_params *omap2_sdrc_get_params(unsigned long r); | 110 | struct omap_sdrc_params *sdrc_cs1); |
111 | int omap2_sdrc_get_params(unsigned long r, | ||
112 | struct omap_sdrc_params **sdrc_cs0, | ||
113 | struct omap_sdrc_params **sdrc_cs1); | ||
107 | 114 | ||
108 | #ifdef CONFIG_ARCH_OMAP2 | 115 | #ifdef CONFIG_ARCH_OMAP2 |
109 | 116 | ||
diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h index 13abd02d1527..def0529c75eb 100644 --- a/arch/arm/plat-omap/include/mach/serial.h +++ b/arch/arm/plat-omap/include/mach/serial.h | |||
@@ -59,6 +59,7 @@ extern void omap_uart_check_wakeup(void); | |||
59 | extern void omap_uart_prepare_suspend(void); | 59 | extern void omap_uart_prepare_suspend(void); |
60 | extern void omap_uart_prepare_idle(int num); | 60 | extern void omap_uart_prepare_idle(int num); |
61 | extern void omap_uart_resume_idle(int num); | 61 | extern void omap_uart_resume_idle(int num); |
62 | extern void omap_uart_enable_irqs(int enable); | ||
62 | #endif | 63 | #endif |
63 | 64 | ||
64 | #endif | 65 | #endif |
diff --git a/arch/arm/plat-omap/include/mach/sram.h b/arch/arm/plat-omap/include/mach/sram.h index dca7c16ae903..8974e3fc2691 100644 --- a/arch/arm/plat-omap/include/mach/sram.h +++ b/arch/arm/plat-omap/include/mach/sram.h | |||
@@ -21,10 +21,12 @@ extern void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, | |||
21 | u32 mem_type); | 21 | u32 mem_type); |
22 | extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); | 22 | extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); |
23 | 23 | ||
24 | extern u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl, | 24 | extern u32 omap3_configure_core_dpll( |
25 | u32 sdrc_actim_ctrla, | 25 | u32 m2, u32 unlock_dll, u32 f, u32 inc, |
26 | u32 sdrc_actim_ctrlb, u32 m2, | 26 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, |
27 | u32 unlock_dll); | 27 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, |
28 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
29 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1); | ||
28 | 30 | ||
29 | /* Do not use these */ | 31 | /* Do not use these */ |
30 | extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); | 32 | extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); |
@@ -58,11 +60,12 @@ extern void omap243x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, | |||
58 | u32 mem_type); | 60 | u32 mem_type); |
59 | extern unsigned long omap243x_sram_reprogram_sdrc_sz; | 61 | extern unsigned long omap243x_sram_reprogram_sdrc_sz; |
60 | 62 | ||
61 | 63 | extern u32 omap3_sram_configure_core_dpll( | |
62 | extern u32 omap3_sram_configure_core_dpll(u32 sdrc_rfr_ctrl, | 64 | u32 m2, u32 unlock_dll, u32 f, u32 inc, |
63 | u32 sdrc_actim_ctrla, | 65 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, |
64 | u32 sdrc_actim_ctrlb, u32 m2, | 66 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, |
65 | u32 unlock_dll); | 67 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, |
68 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1); | ||
66 | extern unsigned long omap3_sram_configure_core_dpll_sz; | 69 | extern unsigned long omap3_sram_configure_core_dpll_sz; |
67 | 70 | ||
68 | #endif | 71 | #endif |
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index 4cf449fa2cb5..4a0301399013 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c | |||
@@ -298,7 +298,7 @@ void flush_iotlb_page(struct iommu *obj, u32 da) | |||
298 | if ((start <= da) && (da < start + bytes)) { | 298 | if ((start <= da) && (da < start + bytes)) { |
299 | dev_dbg(obj->dev, "%s: %08x<=%08x(%x)\n", | 299 | dev_dbg(obj->dev, "%s: %08x<=%08x(%x)\n", |
300 | __func__, start, da, bytes); | 300 | __func__, start, da, bytes); |
301 | 301 | iotlb_load_cr(obj, &cr); | |
302 | iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY); | 302 | iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY); |
303 | } | 303 | } |
304 | } | 304 | } |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index a5b9bcd6b108..5eae7876979c 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -44,9 +44,9 @@ | |||
44 | #define OMAP2_SRAM_VA 0xe3000000 | 44 | #define OMAP2_SRAM_VA 0xe3000000 |
45 | #define OMAP2_SRAM_PUB_VA (OMAP2_SRAM_VA + 0x800) | 45 | #define OMAP2_SRAM_PUB_VA (OMAP2_SRAM_VA + 0x800) |
46 | #define OMAP3_SRAM_PA 0x40200000 | 46 | #define OMAP3_SRAM_PA 0x40200000 |
47 | #define OMAP3_SRAM_VA 0xd7000000 | 47 | #define OMAP3_SRAM_VA 0xe3000000 |
48 | #define OMAP3_SRAM_PUB_PA 0x40208000 | 48 | #define OMAP3_SRAM_PUB_PA 0x40208000 |
49 | #define OMAP3_SRAM_PUB_VA 0xd7008000 | 49 | #define OMAP3_SRAM_PUB_VA (OMAP3_SRAM_VA + 0x8000) |
50 | #define OMAP4_SRAM_PA 0x40200000 /*0x402f0000*/ | 50 | #define OMAP4_SRAM_PA 0x40200000 /*0x402f0000*/ |
51 | #define OMAP4_SRAM_VA 0xd7000000 /*0xd70f0000*/ | 51 | #define OMAP4_SRAM_VA 0xd7000000 /*0xd70f0000*/ |
52 | 52 | ||
@@ -133,7 +133,12 @@ void __init omap_detect_sram(void) | |||
133 | if (cpu_is_omap34xx()) { | 133 | if (cpu_is_omap34xx()) { |
134 | omap_sram_base = OMAP3_SRAM_PUB_VA; | 134 | omap_sram_base = OMAP3_SRAM_PUB_VA; |
135 | omap_sram_start = OMAP3_SRAM_PUB_PA; | 135 | omap_sram_start = OMAP3_SRAM_PUB_PA; |
136 | omap_sram_size = 0x8000; /* 32K */ | 136 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || |
137 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { | ||
138 | omap_sram_size = 0x7000; /* 28K */ | ||
139 | } else { | ||
140 | omap_sram_size = 0x8000; /* 32K */ | ||
141 | } | ||
137 | } else { | 142 | } else { |
138 | omap_sram_base = OMAP2_SRAM_PUB_VA; | 143 | omap_sram_base = OMAP2_SRAM_PUB_VA; |
139 | omap_sram_start = OMAP2_SRAM_PUB_PA; | 144 | omap_sram_start = OMAP2_SRAM_PUB_PA; |
@@ -368,18 +373,26 @@ static inline int omap243x_sram_init(void) | |||
368 | 373 | ||
369 | #ifdef CONFIG_ARCH_OMAP3 | 374 | #ifdef CONFIG_ARCH_OMAP3 |
370 | 375 | ||
371 | static u32 (*_omap3_sram_configure_core_dpll)(u32 sdrc_rfr_ctrl, | 376 | static u32 (*_omap3_sram_configure_core_dpll)( |
372 | u32 sdrc_actim_ctrla, | 377 | u32 m2, u32 unlock_dll, u32 f, u32 inc, |
373 | u32 sdrc_actim_ctrlb, | 378 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, |
374 | u32 m2, u32 unlock_dll); | 379 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, |
375 | u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl, u32 sdrc_actim_ctrla, | 380 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, |
376 | u32 sdrc_actim_ctrlb, u32 m2, u32 unlock_dll) | 381 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1); |
382 | |||
383 | u32 omap3_configure_core_dpll(u32 m2, u32 unlock_dll, u32 f, u32 inc, | ||
384 | u32 sdrc_rfr_ctrl_0, u32 sdrc_actim_ctrl_a_0, | ||
385 | u32 sdrc_actim_ctrl_b_0, u32 sdrc_mr_0, | ||
386 | u32 sdrc_rfr_ctrl_1, u32 sdrc_actim_ctrl_a_1, | ||
387 | u32 sdrc_actim_ctrl_b_1, u32 sdrc_mr_1) | ||
377 | { | 388 | { |
378 | BUG_ON(!_omap3_sram_configure_core_dpll); | 389 | BUG_ON(!_omap3_sram_configure_core_dpll); |
379 | return _omap3_sram_configure_core_dpll(sdrc_rfr_ctrl, | 390 | return _omap3_sram_configure_core_dpll( |
380 | sdrc_actim_ctrla, | 391 | m2, unlock_dll, f, inc, |
381 | sdrc_actim_ctrlb, m2, | 392 | sdrc_rfr_ctrl_0, sdrc_actim_ctrl_a_0, |
382 | unlock_dll); | 393 | sdrc_actim_ctrl_b_0, sdrc_mr_0, |
394 | sdrc_rfr_ctrl_1, sdrc_actim_ctrl_a_1, | ||
395 | sdrc_actim_ctrl_b_1, sdrc_mr_1); | ||
383 | } | 396 | } |
384 | 397 | ||
385 | /* REVISIT: Should this be same as omap34xx_sram_init() after off-idle? */ | 398 | /* REVISIT: Should this be same as omap34xx_sram_init() after off-idle? */ |
diff --git a/arch/arm/plat-orion/include/plat/gpio.h b/arch/arm/plat-orion/include/plat/gpio.h index 9646a94ed3d0..07c430fdc9ef 100644 --- a/arch/arm/plat-orion/include/plat/gpio.h +++ b/arch/arm/plat-orion/include/plat/gpio.h | |||
@@ -11,6 +11,8 @@ | |||
11 | #ifndef __PLAT_GPIO_H | 11 | #ifndef __PLAT_GPIO_H |
12 | #define __PLAT_GPIO_H | 12 | #define __PLAT_GPIO_H |
13 | 13 | ||
14 | #include <linux/init.h> | ||
15 | |||
14 | /* | 16 | /* |
15 | * GENERIC_GPIO primitives. | 17 | * GENERIC_GPIO primitives. |
16 | */ | 18 | */ |
diff --git a/arch/arm/plat-pxa/gpio.c b/arch/arm/plat-pxa/gpio.c index abc79d44acaa..98548c6903a0 100644 --- a/arch/arm/plat-pxa/gpio.c +++ b/arch/arm/plat-pxa/gpio.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
19 | #include <linux/bootmem.h> | 19 | #include <linux/slab.h> |
20 | 20 | ||
21 | #include <mach/gpio.h> | 21 | #include <mach/gpio.h> |
22 | 22 | ||
@@ -112,17 +112,12 @@ static int __init pxa_init_gpio_chip(int gpio_end) | |||
112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; | 112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; |
113 | struct pxa_gpio_chip *chips; | 113 | struct pxa_gpio_chip *chips; |
114 | 114 | ||
115 | /* this is early, we have to use bootmem allocator, and we really | 115 | chips = kzalloc(nbanks * sizeof(struct pxa_gpio_chip), GFP_KERNEL); |
116 | * want this to be allocated dynamically for different 'gpio_end' | ||
117 | */ | ||
118 | chips = alloc_bootmem_low(nbanks * sizeof(struct pxa_gpio_chip)); | ||
119 | if (chips == NULL) { | 116 | if (chips == NULL) { |
120 | pr_err("%s: failed to allocate GPIO chips\n", __func__); | 117 | pr_err("%s: failed to allocate GPIO chips\n", __func__); |
121 | return -ENOMEM; | 118 | return -ENOMEM; |
122 | } | 119 | } |
123 | 120 | ||
124 | memset(chips, 0, nbanks * sizeof(struct pxa_gpio_chip)); | ||
125 | |||
126 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { | 121 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { |
127 | struct gpio_chip *c = &chips[i].chip; | 122 | struct gpio_chip *c = &chips[i].chip; |
128 | 123 | ||
diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile index 610651455a78..0761766b1833 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 | |||
34 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o | 34 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o |
35 | obj-y += dev-i2c0.o | 35 | obj-y += dev-i2c0.o |
36 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o | 36 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o |
37 | obj-$(CONFIG_SND_S3C64XX_SOC_I2S) += dev-audio.o | ||
37 | obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o | 38 | obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o |
38 | obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o | 39 | obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o |
39 | obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o | 40 | obj-$(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 | |||
22 | static 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 | |||
30 | struct 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 | }; | ||
36 | EXPORT_SYMBOL(s3c64xx_device_iis0); | ||
37 | |||
38 | static 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 | |||
46 | struct 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 | }; | ||
52 | EXPORT_SYMBOL(s3c64xx_device_iis1); | ||
53 | |||
54 | static 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 | |||
62 | struct 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 | }; | ||
68 | EXPORT_SYMBOL(s3c64xx_device_iisv4); | ||
diff --git a/arch/arm/plat-s3c/gpio-config.c b/arch/arm/plat-s3c/gpio-config.c index 08044dec9731..456969b6fa0d 100644 --- a/arch/arm/plat-s3c/gpio-config.c +++ b/arch/arm/plat-s3c/gpio-config.c | |||
@@ -119,7 +119,7 @@ int s3c_gpio_setcfg_s3c64xx_4bit(struct s3c_gpio_chip *chip, | |||
119 | unsigned int shift = (off & 7) * 4; | 119 | unsigned int shift = (off & 7) * 4; |
120 | u32 con; | 120 | u32 con; |
121 | 121 | ||
122 | if (off < 8 && chip->chip.ngpio >= 8) | 122 | if (off < 8 && chip->chip.ngpio > 8) |
123 | reg -= 4; | 123 | reg -= 4; |
124 | 124 | ||
125 | if (s3c_gpio_is_cfg_special(cfg)) { | 125 | if (s3c_gpio_is_cfg_special(cfg)) { |
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h index a0b6768fddcf..2e170827e0b0 100644 --- a/arch/arm/plat-s3c/include/plat/devs.h +++ b/arch/arm/plat-s3c/include/plat/devs.h | |||
@@ -24,16 +24,20 @@ extern struct platform_device *s3c24xx_uart_src[]; | |||
24 | 24 | ||
25 | extern struct platform_device s3c_device_timer[]; | 25 | extern struct platform_device s3c_device_timer[]; |
26 | 26 | ||
27 | extern struct platform_device s3c64xx_device_iis0; | ||
28 | extern struct platform_device s3c64xx_device_iis1; | ||
29 | extern struct platform_device s3c64xx_device_iisv4; | ||
30 | |||
27 | extern struct platform_device s3c_device_fb; | 31 | extern struct platform_device s3c_device_fb; |
28 | extern struct platform_device s3c_device_usb; | 32 | extern struct platform_device s3c_device_usb; |
29 | extern struct platform_device s3c_device_lcd; | 33 | extern struct platform_device s3c_device_lcd; |
30 | extern struct platform_device s3c_device_wdt; | 34 | extern struct platform_device s3c_device_wdt; |
31 | extern struct platform_device s3c_device_i2c0; | 35 | extern struct platform_device s3c_device_i2c0; |
32 | extern struct platform_device s3c_device_i2c1; | 36 | extern struct platform_device s3c_device_i2c1; |
33 | extern struct platform_device s3c_device_iis; | ||
34 | extern struct platform_device s3c_device_rtc; | 37 | extern struct platform_device s3c_device_rtc; |
35 | extern struct platform_device s3c_device_adc; | 38 | extern struct platform_device s3c_device_adc; |
36 | extern struct platform_device s3c_device_sdi; | 39 | extern struct platform_device s3c_device_sdi; |
40 | extern struct platform_device s3c_device_iis; | ||
37 | extern struct platform_device s3c_device_hwmon; | 41 | extern struct platform_device s3c_device_hwmon; |
38 | extern struct platform_device s3c_device_hsmmc0; | 42 | extern struct platform_device s3c_device_hsmmc0; |
39 | extern struct platform_device s3c_device_hsmmc1; | 43 | extern struct platform_device s3c_device_hsmmc1; |
diff --git a/arch/arm/plat-s3c/include/plat/nand.h b/arch/arm/plat-s3c/include/plat/nand.h index f4dcd14af059..18f958801e64 100644 --- a/arch/arm/plat-s3c/include/plat/nand.h +++ b/arch/arm/plat-s3c/include/plat/nand.h | |||
@@ -10,19 +10,26 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | /* struct s3c2410_nand_set | 13 | /** |
14 | * struct s3c2410_nand_set - define a set of one or more nand chips | ||
15 | * @disable_ecc: Entirely disable ECC - Dangerous | ||
16 | * @flash_bbt: Openmoko u-boot can create a Bad Block Table | ||
17 | * Setting this flag will allow the kernel to | ||
18 | * look for it at boot time and also skip the NAND | ||
19 | * scan. | ||
20 | * @nr_chips: Number of chips in this set | ||
21 | * @nr_partitions: Number of partitions pointed to by @partitions | ||
22 | * @name: Name of set (optional) | ||
23 | * @nr_map: Map for low-layer logical to physical chip numbers (option) | ||
24 | * @partitions: The mtd partition list | ||
14 | * | 25 | * |
15 | * define an set of one or more nand chips registered with an unique mtd | 26 | * define a set of one or more nand chips registered with an unique mtd. Also |
16 | * | 27 | * allows to pass flag to the underlying NAND layer. 'disable_ecc' will trigger |
17 | * nr_chips = number of chips in this set | 28 | * a warning at boot time. |
18 | * nr_partitions = number of partitions pointed to be partitoons (or zero) | 29 | */ |
19 | * name = name of set (optional) | ||
20 | * nr_map = map for low-layer logical to physical chip numbers (option) | ||
21 | * partitions = mtd partition list | ||
22 | */ | ||
23 | |||
24 | struct s3c2410_nand_set { | 30 | struct s3c2410_nand_set { |
25 | unsigned int disable_ecc : 1; | 31 | unsigned int disable_ecc:1; |
32 | unsigned int flash_bbt:1; | ||
26 | 33 | ||
27 | int nr_chips; | 34 | int nr_chips; |
28 | int nr_partitions; | 35 | int nr_partitions; |
@@ -39,7 +46,7 @@ struct s3c2410_platform_nand { | |||
39 | int twrph0; /* active time for nWE/nOE */ | 46 | int twrph0; /* active time for nWE/nOE */ |
40 | int twrph1; /* time for release CLE/ALE from nWE/nOE inactive */ | 47 | int twrph1; /* time for release CLE/ALE from nWE/nOE inactive */ |
41 | 48 | ||
42 | unsigned int ignore_unset_ecc : 1; | 49 | unsigned int ignore_unset_ecc:1; |
43 | 50 | ||
44 | int nr_sets; | 51 | int nr_sets; |
45 | struct s3c2410_nand_set *sets; | 52 | struct s3c2410_nand_set *sets; |
diff --git a/arch/arm/plat-s3c24xx/Makefile b/arch/arm/plat-s3c24xx/Makefile index 636cb12711df..579a165c2827 100644 --- a/arch/arm/plat-s3c24xx/Makefile +++ b/arch/arm/plat-s3c24xx/Makefile | |||
@@ -29,7 +29,7 @@ obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o | |||
29 | obj-$(CONFIG_PM) += pm.o | 29 | obj-$(CONFIG_PM) += pm.o |
30 | obj-$(CONFIG_PM) += irq-pm.o | 30 | obj-$(CONFIG_PM) += irq-pm.o |
31 | obj-$(CONFIG_PM) += sleep.o | 31 | obj-$(CONFIG_PM) += sleep.o |
32 | obj-$(CONFIG_HAVE_PWM) += pwm.o | 32 | obj-$(CONFIG_S3C24XX_PWM) += pwm.o |
33 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o | 33 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o |
34 | obj-$(CONFIG_S3C2410_DMA) += dma.o | 34 | obj-$(CONFIG_S3C2410_DMA) += dma.o |
35 | obj-$(CONFIG_S3C24XX_ADC) += adc.o | 35 | obj-$(CONFIG_S3C24XX_ADC) += adc.o |
diff --git a/arch/arm/plat-s3c24xx/clock-dclk.c b/arch/arm/plat-s3c24xx/clock-dclk.c index 5b75a797b5ab..0afb217a775e 100644 --- a/arch/arm/plat-s3c24xx/clock-dclk.c +++ b/arch/arm/plat-s3c24xx/clock-dclk.c | |||
@@ -129,7 +129,7 @@ static int s3c24xx_clkout_setparent(struct clk *clk, struct clk *parent) | |||
129 | 129 | ||
130 | /* calculate the MISCCR setting for the clock */ | 130 | /* calculate the MISCCR setting for the clock */ |
131 | 131 | ||
132 | if (parent == &clk_xtal) | 132 | if (parent == &clk_mpll) |
133 | source = S3C2410_MISCCR_CLK0_MPLL; | 133 | source = S3C2410_MISCCR_CLK0_MPLL; |
134 | else if (parent == &clk_upll) | 134 | else if (parent == &clk_upll) |
135 | source = S3C2410_MISCCR_CLK0_UPLL; | 135 | source = S3C2410_MISCCR_CLK0_UPLL; |
diff --git a/arch/arm/plat-s3c24xx/pwm.c b/arch/arm/plat-s3c24xx/pwm.c index 0120b760315b..82a6d4de02a3 100644 --- a/arch/arm/plat-s3c24xx/pwm.c +++ b/arch/arm/plat-s3c24xx/pwm.c | |||
@@ -246,6 +246,10 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) | |||
246 | 246 | ||
247 | tcmp = duty_ns / tin_ns; | 247 | tcmp = duty_ns / tin_ns; |
248 | tcmp = tcnt - tcmp; | 248 | tcmp = tcnt - tcmp; |
249 | /* the pwm hw only checks the compare register after a decrement, | ||
250 | so the pin never toggles if tcmp = tcnt */ | ||
251 | if (tcmp == tcnt) | ||
252 | tcmp--; | ||
249 | 253 | ||
250 | pwm_dbg(pwm, "tin_ns=%lu, tcmp=%ld/%lu\n", tin_ns, tcmp, tcnt); | 254 | pwm_dbg(pwm, "tin_ns=%lu, tcmp=%ld/%lu\n", tin_ns, tcmp, tcnt); |
251 | 255 | ||
diff --git a/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c b/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c index 9edf7894eedd..da7a61728c18 100644 --- a/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c +++ b/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c | |||
@@ -12,8 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | #include <mach/spi.h> | 17 | #include <mach/spi.h> |
19 | #include <mach/regs-gpio.h> | 18 | #include <mach/regs-gpio.h> |
diff --git a/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c b/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c index f34d0fc69ad8..86b9edc67413 100644 --- a/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c +++ b/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c | |||
@@ -12,8 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | #include <mach/spi.h> | 17 | #include <mach/spi.h> |
19 | #include <mach/regs-gpio.h> | 18 | #include <mach/regs-gpio.h> |
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 | ||
24 | obj-$(CONFIG_CPU_S3C6400_INIT) += s3c6400-init.o | 24 | obj-$(CONFIG_CPU_S3C6400_INIT) += s3c6400-init.o |
25 | obj-$(CONFIG_CPU_S3C6400_CLOCK) += s3c6400-clock.o | 25 | obj-$(CONFIG_CPU_S3C6400_CLOCK) += s3c6400-clock.o |
26 | obj-$(CONFIG_CPU_FREQ_S3C64XX) += cpufreq.o | ||
26 | 27 | ||
27 | # PM support | 28 | # PM support |
28 | 29 | ||
diff --git a/arch/arm/plat-s3c64xx/clock.c b/arch/arm/plat-s3c64xx/clock.c index 0bc2fa1dfc40..7a36e899360d 100644 --- a/arch/arm/plat-s3c64xx/clock.c +++ b/arch/arm/plat-s3c64xx/clock.c | |||
@@ -191,7 +191,7 @@ static struct clk init_clocks[] = { | |||
191 | .id = -1, | 191 | .id = -1, |
192 | .parent = &clk_h, | 192 | .parent = &clk_h, |
193 | .enable = s3c64xx_hclk_ctrl, | 193 | .enable = s3c64xx_hclk_ctrl, |
194 | .ctrlbit = S3C_CLKCON_SCLK_UHOST, | 194 | .ctrlbit = S3C_CLKCON_HCLK_UHOST, |
195 | }, { | 195 | }, { |
196 | .name = "hsmmc", | 196 | .name = "hsmmc", |
197 | .id = 0, | 197 | .id = 0, |
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 | |||
20 | static struct clk *armclk; | ||
21 | static struct regulator *vddarm; | ||
22 | |||
23 | #ifdef CONFIG_CPU_S3C6410 | ||
24 | struct s3c64xx_dvfs { | ||
25 | unsigned int vddarm_min; | ||
26 | unsigned int vddarm_max; | ||
27 | }; | ||
28 | |||
29 | static 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 | |||
37 | static 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 | |||
51 | static 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 | |||
59 | static 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 | |||
67 | static 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 | |||
134 | err_clk: | ||
135 | if (clk_set_rate(armclk, freqs.old * 1000) < 0) | ||
136 | pr_err("Failed to restore original clock rate\n"); | ||
137 | err: | ||
138 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | ||
139 | |||
140 | return ret; | ||
141 | } | ||
142 | |||
143 | #ifdef CONFIG_REGULATOR | ||
144 | static 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 | |||
181 | static 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 | |||
248 | static 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 | |||
258 | static int __init s3c64xx_cpufreq_init(void) | ||
259 | { | ||
260 | return cpufreq_register_driver(&s3c64xx_cpufreq_driver); | ||
261 | } | ||
262 | module_init(s3c64xx_cpufreq_init); | ||
diff --git a/arch/arm/plat-s3c64xx/gpiolib.c b/arch/arm/plat-s3c64xx/gpiolib.c index da7b60ee5e67..92859290ea33 100644 --- a/arch/arm/plat-s3c64xx/gpiolib.c +++ b/arch/arm/plat-s3c64xx/gpiolib.c | |||
@@ -321,6 +321,11 @@ static struct s3c_gpio_cfg gpio_2bit_cfg_eint11 = { | |||
321 | .get_pull = s3c_gpio_getpull_updown, | 321 | .get_pull = s3c_gpio_getpull_updown, |
322 | }; | 322 | }; |
323 | 323 | ||
324 | int s3c64xx_gpio2int_gpn(struct gpio_chip *chip, unsigned pin) | ||
325 | { | ||
326 | return IRQ_EINT(0) + pin; | ||
327 | } | ||
328 | |||
324 | static struct s3c_gpio_chip gpio_2bit[] = { | 329 | static struct s3c_gpio_chip gpio_2bit[] = { |
325 | { | 330 | { |
326 | .base = S3C64XX_GPF_BASE, | 331 | .base = S3C64XX_GPF_BASE, |
@@ -353,6 +358,7 @@ static struct s3c_gpio_chip gpio_2bit[] = { | |||
353 | .base = S3C64XX_GPN(0), | 358 | .base = S3C64XX_GPN(0), |
354 | .ngpio = S3C64XX_GPIO_N_NR, | 359 | .ngpio = S3C64XX_GPIO_N_NR, |
355 | .label = "GPN", | 360 | .label = "GPN", |
361 | .to_irq = s3c64xx_gpio2int_gpn, | ||
356 | }, | 362 | }, |
357 | }, { | 363 | }, { |
358 | .base = S3C64XX_GPO_BASE, | 364 | .base = S3C64XX_GPO_BASE, |
diff --git a/arch/arm/plat-s3c64xx/include/plat/regs-clock.h b/arch/arm/plat-s3c64xx/include/plat/regs-clock.h index 52836d41e333..a8777a755dfa 100644 --- a/arch/arm/plat-s3c64xx/include/plat/regs-clock.h +++ b/arch/arm/plat-s3c64xx/include/plat/regs-clock.h | |||
@@ -88,11 +88,11 @@ | |||
88 | #define S3C6400_CLKDIV2_SPI0_SHIFT (0) | 88 | #define S3C6400_CLKDIV2_SPI0_SHIFT (0) |
89 | 89 | ||
90 | /* HCLK GATE Registers */ | 90 | /* HCLK GATE Registers */ |
91 | #define S3C_CLKCON_HCLK_BUS (1<<30) | 91 | #define S3C_CLKCON_HCLK_3DSE (1<<31) |
92 | #define S3C_CLKCON_HCLK_SECUR (1<<29) | 92 | #define S3C_CLKCON_HCLK_UHOST (1<<29) |
93 | #define S3C_CLKCON_HCLK_SDMA1 (1<<28) | 93 | #define S3C_CLKCON_HCLK_SECUR (1<<28) |
94 | #define S3C_CLKCON_HCLK_SDMA2 (1<<27) | 94 | #define S3C_CLKCON_HCLK_SDMA1 (1<<27) |
95 | #define S3C_CLKCON_HCLK_UHOST (1<<26) | 95 | #define S3C_CLKCON_HCLK_SDMA0 (1<<26) |
96 | #define S3C_CLKCON_HCLK_IROM (1<<25) | 96 | #define S3C_CLKCON_HCLK_IROM (1<<25) |
97 | #define S3C_CLKCON_HCLK_DDR1 (1<<24) | 97 | #define S3C_CLKCON_HCLK_DDR1 (1<<24) |
98 | #define S3C_CLKCON_HCLK_DDR0 (1<<23) | 98 | #define S3C_CLKCON_HCLK_DDR0 (1<<23) |
diff --git a/arch/arm/plat-s3c64xx/pm.c b/arch/arm/plat-s3c64xx/pm.c index 07a6516a4f3c..47632fc7eb66 100644 --- a/arch/arm/plat-s3c64xx/pm.c +++ b/arch/arm/plat-s3c64xx/pm.c | |||
@@ -117,8 +117,6 @@ void s3c_pm_save_core(void) | |||
117 | * this. | 117 | * this. |
118 | */ | 118 | */ |
119 | 119 | ||
120 | #include <plat/regs-gpio.h> | ||
121 | |||
122 | static void s3c64xx_cpu_suspend(void) | 120 | static void s3c64xx_cpu_suspend(void) |
123 | { | 121 | { |
124 | unsigned long tmp; | 122 | unsigned long tmp; |
diff --git a/arch/arm/plat-s3c64xx/s3c6400-clock.c b/arch/arm/plat-s3c64xx/s3c6400-clock.c index 1debc1f9f987..febac1950d8e 100644 --- a/arch/arm/plat-s3c64xx/s3c6400-clock.c +++ b/arch/arm/plat-s3c64xx/s3c6400-clock.c | |||
@@ -153,7 +153,7 @@ static unsigned long s3c64xx_clk_arm_round_rate(struct clk *clk, | |||
153 | u32 div; | 153 | u32 div; |
154 | 154 | ||
155 | if (parent < rate) | 155 | if (parent < rate) |
156 | return rate; | 156 | return parent; |
157 | 157 | ||
158 | div = (parent / rate) - 1; | 158 | div = (parent / rate) - 1; |
159 | if (div > armclk_mask) | 159 | if (div > armclk_mask) |
@@ -175,7 +175,7 @@ static int s3c64xx_clk_arm_set_rate(struct clk *clk, unsigned long rate) | |||
175 | div = clk_get_rate(clk->parent) / rate; | 175 | div = clk_get_rate(clk->parent) / rate; |
176 | 176 | ||
177 | val = __raw_readl(S3C_CLK_DIV0); | 177 | val = __raw_readl(S3C_CLK_DIV0); |
178 | val &= armclk_mask; | 178 | val &= ~armclk_mask; |
179 | val |= (div - 1); | 179 | val |= (div - 1); |
180 | __raw_writel(val, S3C_CLK_DIV0); | 180 | __raw_writel(val, S3C_CLK_DIV0); |
181 | 181 | ||
diff --git a/arch/arm/plat-stmp3xxx/pinmux.c b/arch/arm/plat-stmp3xxx/pinmux.c index d41200382208..6d6b1a468eda 100644 --- a/arch/arm/plat-stmp3xxx/pinmux.c +++ b/arch/arm/plat-stmp3xxx/pinmux.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/sysdev.h> | 22 | #include <linux/sysdev.h> |
23 | #include <linux/string.h> | 23 | #include <linux/string.h> |
24 | #include <linux/bitops.h> | 24 | #include <linux/bitops.h> |
25 | #include <linux/sysdev.h> | ||
26 | #include <linux/irq.h> | 25 | #include <linux/irq.h> |
27 | 26 | ||
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index fec64678a63a..33026eff2aa4 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Fri May 29 10:14:20 2009 | 15 | # Last update: Sat Jun 20 22:28:39 2009 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -1455,7 +1455,7 @@ gba MACH_GBA GBA 1457 | |||
1455 | h6044 MACH_H6044 H6044 1458 | 1455 | h6044 MACH_H6044 H6044 1458 |
1456 | app MACH_APP APP 1459 | 1456 | app MACH_APP APP 1459 |
1457 | tct_hammer MACH_TCT_HAMMER TCT_HAMMER 1460 | 1457 | tct_hammer MACH_TCT_HAMMER TCT_HAMMER 1460 |
1458 | herald MACH_HERMES HERMES 1461 | 1458 | herald MACH_HERALD HERALD 1461 |
1459 | artemis MACH_ARTEMIS ARTEMIS 1462 | 1459 | artemis MACH_ARTEMIS ARTEMIS 1462 |
1460 | htctitan MACH_HTCTITAN HTCTITAN 1463 | 1460 | htctitan MACH_HTCTITAN HTCTITAN 1463 |
1461 | qranium MACH_QRANIUM QRANIUM 1464 | 1461 | qranium MACH_QRANIUM QRANIUM 1464 |
@@ -2245,3 +2245,38 @@ str9 MACH_STR9 STR9 2257 | |||
2245 | omap3_wl_ff MACH_OMAP3_WL_FF OMAP3_WL_FF 2258 | 2245 | omap3_wl_ff MACH_OMAP3_WL_FF OMAP3_WL_FF 2258 |
2246 | simcom MACH_SIMCOM SIMCOM 2259 | 2246 | simcom MACH_SIMCOM SIMCOM 2259 |
2247 | mcwebio MACH_MCWEBIO MCWEBIO 2260 | 2247 | mcwebio MACH_MCWEBIO MCWEBIO 2260 |
2248 | omap3_phrazer MACH_OMAP3_PHRAZER OMAP3_PHRAZER 2261 | ||
2249 | darwin MACH_DARWIN DARWIN 2262 | ||
2250 | oratiscomu MACH_ORATISCOMU ORATISCOMU 2263 | ||
2251 | rtsbc20 MACH_RTSBC20 RTSBC20 2264 | ||
2252 | i780 MACH_I780 I780 2265 | ||
2253 | gemini324 MACH_GEMINI324 GEMINI324 2266 | ||
2254 | oratislan MACH_ORATISLAN ORATISLAN 2267 | ||
2255 | oratisalog MACH_ORATISALOG ORATISALOG 2268 | ||
2256 | oratismadi MACH_ORATISMADI ORATISMADI 2269 | ||
2257 | oratisot16 MACH_ORATISOT16 ORATISOT16 2270 | ||
2258 | oratisdesk MACH_ORATISDESK ORATISDESK 2271 | ||
2259 | v2p_ca9 MACH_V2P_CA9 V2P_CA9 2272 | ||
2260 | sintexo MACH_SINTEXO SINTEXO 2273 | ||
2261 | cm3389 MACH_CM3389 CM3389 2274 | ||
2262 | omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275 | ||
2263 | sgh_i900 MACH_SGH_I900 SGH_I900 2276 | ||
2264 | bst100 MACH_BST100 BST100 2277 | ||
2265 | passion MACH_PASSION PASSION 2278 | ||
2266 | indesign_at91sam MACH_INDESIGN_AT91SAM INDESIGN_AT91SAM 2279 | ||
2267 | c4_badger MACH_C4_BADGER C4_BADGER 2280 | ||
2268 | c4_viper MACH_C4_VIPER C4_VIPER 2281 | ||
2269 | d2net MACH_D2NET D2NET 2282 | ||
2270 | bigdisk MACH_BIGDISK BIGDISK 2283 | ||
2271 | notalvision MACH_NOTALVISION NOTALVISION 2284 | ||
2272 | omap3_kboc MACH_OMAP3_KBOC OMAP3_KBOC 2285 | ||
2273 | cyclone MACH_CYCLONE CYCLONE 2286 | ||
2274 | ninja MACH_NINJA NINJA 2287 | ||
2275 | at91sam9g20ek_2mmc MACH_AT91SAM9G20EK_2MMC AT91SAM9G20EK_2MMC 2288 | ||
2276 | bcmring MACH_BCMRING BCMRING 2289 | ||
2277 | resol_dl2 MACH_RESOL_DL2 RESOL_DL2 2290 | ||
2278 | ifosw MACH_IFOSW IFOSW 2291 | ||
2279 | htcrhodium MACH_HTCRHODIUM HTCRHODIUM 2292 | ||
2280 | htctopaz MACH_HTCTOPAZ HTCTOPAZ 2293 | ||
2281 | matrix504 MACH_MATRIX504 MATRIX504 2294 | ||
2282 | mrfsa MACH_MRFSA MRFSA 2295 | ||