diff options
Diffstat (limited to 'arch/arm')
116 files changed, 1230 insertions, 550 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c5408bf1bf43..92622eb5cc0d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -253,6 +253,7 @@ config ARCH_REALVIEW | |||
253 | select GENERIC_TIME | 253 | select GENERIC_TIME |
254 | select GENERIC_CLOCKEVENTS | 254 | select GENERIC_CLOCKEVENTS |
255 | select ARCH_WANT_OPTIONAL_GPIOLIB | 255 | select ARCH_WANT_OPTIONAL_GPIOLIB |
256 | select GPIO_PL061 if GPIOLIB | ||
256 | help | 257 | help |
257 | This enables support for ARM Ltd RealView boards. | 258 | This enables support for ARM Ltd RealView boards. |
258 | 259 | ||
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 0f23009170a1..c5191b1532e8 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -172,7 +172,7 @@ not_angel: | |||
172 | adr r0, LC0 | 172 | adr r0, LC0 |
173 | ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp}) | 173 | ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp}) |
174 | THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} ) | 174 | THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} ) |
175 | THUMB( ldr sp, [r0, #28] ) | 175 | THUMB( ldr sp, [r0, #32] ) |
176 | subs r0, r0, r1 @ calculate the delta offset | 176 | subs r0, r0, r1 @ calculate the delta offset |
177 | 177 | ||
178 | @ if delta is zero, we are | 178 | @ if delta is zero, we are |
@@ -685,8 +685,8 @@ proc_types: | |||
685 | W(b) __armv4_mmu_cache_off | 685 | W(b) __armv4_mmu_cache_off |
686 | W(b) __armv4_mmu_cache_flush | 686 | W(b) __armv4_mmu_cache_flush |
687 | 687 | ||
688 | .word 0x56056930 | 688 | .word 0x56056900 |
689 | .word 0xff0ffff0 @ PXA935 | 689 | .word 0xffffff00 @ PXA9xx |
690 | W(b) __armv4_mmu_cache_on | 690 | W(b) __armv4_mmu_cache_on |
691 | W(b) __armv4_mmu_cache_off | 691 | W(b) __armv4_mmu_cache_off |
692 | W(b) __armv4_mmu_cache_flush | 692 | W(b) __armv4_mmu_cache_flush |
@@ -697,12 +697,6 @@ proc_types: | |||
697 | W(b) __armv4_mmu_cache_off | 697 | W(b) __armv4_mmu_cache_off |
698 | W(b) __armv5tej_mmu_cache_flush | 698 | W(b) __armv5tej_mmu_cache_flush |
699 | 699 | ||
700 | .word 0x56056930 | ||
701 | .word 0xff0ffff0 @ PXA935 | ||
702 | W(b) __armv4_mmu_cache_on | ||
703 | W(b) __armv4_mmu_cache_off | ||
704 | W(b) __armv4_mmu_cache_flush | ||
705 | |||
706 | .word 0x56050000 @ Feroceon | 700 | .word 0x56050000 @ Feroceon |
707 | .word 0xff0f0000 | 701 | .word 0xff0f0000 |
708 | W(b) __armv4_mmu_cache_on | 702 | W(b) __armv4_mmu_cache_on |
diff --git a/arch/arm/configs/bcmring_defconfig b/arch/arm/configs/bcmring_defconfig index 1e12167c89b7..6ac6693299bc 100644 --- a/arch/arm/configs/bcmring_defconfig +++ b/arch/arm/configs/bcmring_defconfig | |||
@@ -1,13 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.31-rc3 | 3 | # Linux kernel version: 2.6.34-rc2 |
4 | # Fri Jul 17 12:07:28 2009 | 4 | # Mon Mar 29 12:01:41 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_TIME=y | 8 | CONFIG_GENERIC_TIME=y |
9 | CONFIG_GENERIC_CLOCKEVENTS=y | 9 | CONFIG_GENERIC_CLOCKEVENTS=y |
10 | CONFIG_MMU=y | 10 | CONFIG_HAVE_PROC_CPU=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_STACKTRACE_SUPPORT=y | 12 | CONFIG_STACKTRACE_SUPPORT=y |
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -18,6 +18,7 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
19 | CONFIG_GENERIC_HWEIGHT=y | 19 | CONFIG_GENERIC_HWEIGHT=y |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 20 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_NEED_DMA_MAP_STATE=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 22 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
22 | CONFIG_VECTORS_BASE=0xffff0000 | 23 | CONFIG_VECTORS_BASE=0xffff0000 |
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 24 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -32,6 +33,12 @@ CONFIG_LOCK_KERNEL=y | |||
32 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 33 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
33 | CONFIG_LOCALVERSION="" | 34 | CONFIG_LOCALVERSION="" |
34 | # CONFIG_LOCALVERSION_AUTO is not set | 35 | # CONFIG_LOCALVERSION_AUTO is not set |
36 | CONFIG_HAVE_KERNEL_GZIP=y | ||
37 | CONFIG_HAVE_KERNEL_LZO=y | ||
38 | CONFIG_KERNEL_GZIP=y | ||
39 | # CONFIG_KERNEL_BZIP2 is not set | ||
40 | # CONFIG_KERNEL_LZMA is not set | ||
41 | # CONFIG_KERNEL_LZO is not set | ||
35 | # CONFIG_SWAP is not set | 42 | # CONFIG_SWAP is not set |
36 | CONFIG_SYSVIPC=y | 43 | CONFIG_SYSVIPC=y |
37 | CONFIG_SYSVIPC_SYSCTL=y | 44 | CONFIG_SYSVIPC_SYSCTL=y |
@@ -43,21 +50,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
43 | # | 50 | # |
44 | # RCU Subsystem | 51 | # RCU Subsystem |
45 | # | 52 | # |
46 | CONFIG_CLASSIC_RCU=y | 53 | CONFIG_TREE_RCU=y |
47 | # CONFIG_TREE_RCU is not set | 54 | # CONFIG_TREE_PREEMPT_RCU is not set |
48 | # CONFIG_PREEMPT_RCU is not set | 55 | # CONFIG_TINY_RCU is not set |
56 | # CONFIG_RCU_TRACE is not set | ||
57 | CONFIG_RCU_FANOUT=32 | ||
58 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
49 | # CONFIG_TREE_RCU_TRACE is not set | 59 | # CONFIG_TREE_RCU_TRACE is not set |
50 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
51 | # CONFIG_IKCONFIG is not set | 60 | # CONFIG_IKCONFIG is not set |
52 | CONFIG_LOG_BUF_SHIFT=17 | 61 | CONFIG_LOG_BUF_SHIFT=17 |
53 | # CONFIG_GROUP_SCHED is not set | ||
54 | # CONFIG_CGROUPS is not set | ||
55 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | 62 | # CONFIG_SYSFS_DEPRECATED_V2 is not set |
56 | # CONFIG_RELAY is not set | 63 | # CONFIG_RELAY is not set |
57 | # CONFIG_NAMESPACES is not set | 64 | # CONFIG_NAMESPACES is not set |
58 | # CONFIG_BLK_DEV_INITRD is not set | 65 | # CONFIG_BLK_DEV_INITRD is not set |
59 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 66 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
60 | CONFIG_SYSCTL=y | 67 | CONFIG_SYSCTL=y |
68 | CONFIG_ANON_INODES=y | ||
61 | CONFIG_EMBEDDED=y | 69 | CONFIG_EMBEDDED=y |
62 | CONFIG_UID16=y | 70 | CONFIG_UID16=y |
63 | CONFIG_SYSCTL_SYSCALL=y | 71 | CONFIG_SYSCTL_SYSCALL=y |
@@ -75,19 +83,21 @@ CONFIG_FUTEX=y | |||
75 | # CONFIG_EVENTFD is not set | 83 | # CONFIG_EVENTFD is not set |
76 | CONFIG_SHMEM=y | 84 | CONFIG_SHMEM=y |
77 | # CONFIG_AIO is not set | 85 | # CONFIG_AIO is not set |
86 | CONFIG_HAVE_PERF_EVENTS=y | ||
87 | CONFIG_PERF_USE_VMALLOC=y | ||
78 | 88 | ||
79 | # | 89 | # |
80 | # Performance Counters | 90 | # Kernel Performance Events And Counters |
81 | # | 91 | # |
92 | CONFIG_PERF_EVENTS=y | ||
93 | CONFIG_PERF_COUNTERS=y | ||
82 | # CONFIG_VM_EVENT_COUNTERS is not set | 94 | # CONFIG_VM_EVENT_COUNTERS is not set |
83 | # CONFIG_SLUB_DEBUG is not set | 95 | # CONFIG_SLUB_DEBUG is not set |
84 | # CONFIG_STRIP_ASM_SYMS is not set | ||
85 | # CONFIG_COMPAT_BRK is not set | 96 | # CONFIG_COMPAT_BRK is not set |
86 | # CONFIG_SLAB is not set | 97 | # CONFIG_SLAB is not set |
87 | CONFIG_SLUB=y | 98 | CONFIG_SLUB=y |
88 | # CONFIG_SLOB is not set | 99 | # CONFIG_SLOB is not set |
89 | # CONFIG_PROFILING is not set | 100 | # CONFIG_PROFILING is not set |
90 | # CONFIG_MARKERS is not set | ||
91 | CONFIG_HAVE_OPROFILE=y | 101 | CONFIG_HAVE_OPROFILE=y |
92 | # CONFIG_KPROBES is not set | 102 | # CONFIG_KPROBES is not set |
93 | CONFIG_HAVE_KPROBES=y | 103 | CONFIG_HAVE_KPROBES=y |
@@ -115,24 +125,53 @@ CONFIG_LBDAF=y | |||
115 | # IO Schedulers | 125 | # IO Schedulers |
116 | # | 126 | # |
117 | CONFIG_IOSCHED_NOOP=y | 127 | CONFIG_IOSCHED_NOOP=y |
118 | # CONFIG_IOSCHED_AS is not set | ||
119 | # CONFIG_IOSCHED_DEADLINE is not set | 128 | # CONFIG_IOSCHED_DEADLINE is not set |
120 | # CONFIG_IOSCHED_CFQ is not set | 129 | # CONFIG_IOSCHED_CFQ is not set |
121 | # CONFIG_DEFAULT_AS is not set | ||
122 | # CONFIG_DEFAULT_DEADLINE is not set | 130 | # CONFIG_DEFAULT_DEADLINE is not set |
123 | # CONFIG_DEFAULT_CFQ is not set | 131 | # CONFIG_DEFAULT_CFQ is not set |
124 | CONFIG_DEFAULT_NOOP=y | 132 | CONFIG_DEFAULT_NOOP=y |
125 | CONFIG_DEFAULT_IOSCHED="noop" | 133 | CONFIG_DEFAULT_IOSCHED="noop" |
134 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
135 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
136 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
137 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
138 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
139 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
140 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
141 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
142 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
143 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
144 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
145 | # CONFIG_INLINE_READ_LOCK is not set | ||
146 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
147 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
148 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
149 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
150 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
151 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
152 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
153 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
154 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
155 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
156 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
157 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
158 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
159 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
160 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
161 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
162 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
126 | # CONFIG_FREEZER is not set | 163 | # CONFIG_FREEZER is not set |
127 | 164 | ||
128 | # | 165 | # |
129 | # System Type | 166 | # System Type |
130 | # | 167 | # |
168 | CONFIG_MMU=y | ||
131 | # CONFIG_ARCH_AAEC2000 is not set | 169 | # CONFIG_ARCH_AAEC2000 is not set |
132 | # CONFIG_ARCH_INTEGRATOR is not set | 170 | # CONFIG_ARCH_INTEGRATOR is not set |
133 | # CONFIG_ARCH_REALVIEW is not set | 171 | # CONFIG_ARCH_REALVIEW is not set |
134 | # CONFIG_ARCH_VERSATILE is not set | 172 | # CONFIG_ARCH_VERSATILE is not set |
135 | # CONFIG_ARCH_AT91 is not set | 173 | # CONFIG_ARCH_AT91 is not set |
174 | CONFIG_ARCH_BCMRING=y | ||
136 | # CONFIG_ARCH_CLPS711X is not set | 175 | # CONFIG_ARCH_CLPS711X is not set |
137 | # CONFIG_ARCH_GEMINI is not set | 176 | # CONFIG_ARCH_GEMINI is not set |
138 | # CONFIG_ARCH_EBSA110 is not set | 177 | # CONFIG_ARCH_EBSA110 is not set |
@@ -149,6 +188,7 @@ CONFIG_DEFAULT_IOSCHED="noop" | |||
149 | # CONFIG_ARCH_IXP2000 is not set | 188 | # CONFIG_ARCH_IXP2000 is not set |
150 | # CONFIG_ARCH_IXP4XX is not set | 189 | # CONFIG_ARCH_IXP4XX is not set |
151 | # CONFIG_ARCH_L7200 is not set | 190 | # CONFIG_ARCH_L7200 is not set |
191 | # CONFIG_ARCH_DOVE is not set | ||
152 | # CONFIG_ARCH_KIRKWOOD is not set | 192 | # CONFIG_ARCH_KIRKWOOD is not set |
153 | # CONFIG_ARCH_LOKI is not set | 193 | # CONFIG_ARCH_LOKI is not set |
154 | # CONFIG_ARCH_MV78XX0 is not set | 194 | # CONFIG_ARCH_MV78XX0 is not set |
@@ -157,19 +197,26 @@ CONFIG_DEFAULT_IOSCHED="noop" | |||
157 | # CONFIG_ARCH_KS8695 is not set | 197 | # CONFIG_ARCH_KS8695 is not set |
158 | # CONFIG_ARCH_NS9XXX is not set | 198 | # CONFIG_ARCH_NS9XXX is not set |
159 | # CONFIG_ARCH_W90X900 is not set | 199 | # CONFIG_ARCH_W90X900 is not set |
200 | # CONFIG_ARCH_NUC93X is not set | ||
160 | # CONFIG_ARCH_PNX4008 is not set | 201 | # CONFIG_ARCH_PNX4008 is not set |
161 | # CONFIG_ARCH_PXA is not set | 202 | # CONFIG_ARCH_PXA is not set |
162 | # CONFIG_ARCH_MSM is not set | 203 | # CONFIG_ARCH_MSM is not set |
204 | # CONFIG_ARCH_SHMOBILE is not set | ||
163 | # CONFIG_ARCH_RPC is not set | 205 | # CONFIG_ARCH_RPC is not set |
164 | # CONFIG_ARCH_SA1100 is not set | 206 | # CONFIG_ARCH_SA1100 is not set |
165 | # CONFIG_ARCH_S3C2410 is not set | 207 | # CONFIG_ARCH_S3C2410 is not set |
166 | # CONFIG_ARCH_S3C64XX is not set | 208 | # CONFIG_ARCH_S3C64XX is not set |
209 | # CONFIG_ARCH_S5P6440 is not set | ||
210 | # CONFIG_ARCH_S5P6442 is not set | ||
211 | # CONFIG_ARCH_S5PC1XX is not set | ||
212 | # CONFIG_ARCH_S5PV210 is not set | ||
167 | # CONFIG_ARCH_SHARK is not set | 213 | # CONFIG_ARCH_SHARK is not set |
168 | # CONFIG_ARCH_LH7A40X is not set | 214 | # CONFIG_ARCH_LH7A40X is not set |
169 | # CONFIG_ARCH_U300 is not set | 215 | # CONFIG_ARCH_U300 is not set |
216 | # CONFIG_ARCH_U8500 is not set | ||
217 | # CONFIG_ARCH_NOMADIK is not set | ||
170 | # CONFIG_ARCH_DAVINCI is not set | 218 | # CONFIG_ARCH_DAVINCI is not set |
171 | # CONFIG_ARCH_OMAP is not set | 219 | # CONFIG_ARCH_OMAP is not set |
172 | CONFIG_ARCH_BCMRING=y | ||
173 | # CONFIG_ARCH_FPGA11107 is not set | 220 | # CONFIG_ARCH_FPGA11107 is not set |
174 | CONFIG_ARCH_BCM11107=y | 221 | CONFIG_ARCH_BCM11107=y |
175 | 222 | ||
@@ -185,7 +232,7 @@ CONFIG_CPU_V6=y | |||
185 | CONFIG_CPU_32v6K=y | 232 | CONFIG_CPU_32v6K=y |
186 | CONFIG_CPU_32v6=y | 233 | CONFIG_CPU_32v6=y |
187 | CONFIG_CPU_ABRT_EV6=y | 234 | CONFIG_CPU_ABRT_EV6=y |
188 | CONFIG_CPU_PABRT_NOIFAR=y | 235 | CONFIG_CPU_PABRT_V6=y |
189 | CONFIG_CPU_CACHE_V6=y | 236 | CONFIG_CPU_CACHE_V6=y |
190 | CONFIG_CPU_CACHE_VIPT=y | 237 | CONFIG_CPU_CACHE_VIPT=y |
191 | CONFIG_CPU_COPY_V6=y | 238 | CONFIG_CPU_COPY_V6=y |
@@ -201,6 +248,8 @@ CONFIG_ARM_THUMB=y | |||
201 | # CONFIG_CPU_ICACHE_DISABLE is not set | 248 | # CONFIG_CPU_ICACHE_DISABLE is not set |
202 | # CONFIG_CPU_DCACHE_DISABLE is not set | 249 | # CONFIG_CPU_DCACHE_DISABLE is not set |
203 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 250 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
251 | CONFIG_ARM_L1_CACHE_SHIFT=5 | ||
252 | CONFIG_CPU_HAS_PMU=y | ||
204 | # CONFIG_ARM_ERRATA_411920 is not set | 253 | # CONFIG_ARM_ERRATA_411920 is not set |
205 | CONFIG_COMMON_CLKDEV=y | 254 | CONFIG_COMMON_CLKDEV=y |
206 | 255 | ||
@@ -222,6 +271,8 @@ CONFIG_VMSPLIT_3G=y | |||
222 | # CONFIG_VMSPLIT_2G is not set | 271 | # CONFIG_VMSPLIT_2G is not set |
223 | # CONFIG_VMSPLIT_1G is not set | 272 | # CONFIG_VMSPLIT_1G is not set |
224 | CONFIG_PAGE_OFFSET=0xC0000000 | 273 | CONFIG_PAGE_OFFSET=0xC0000000 |
274 | # CONFIG_PREEMPT_NONE is not set | ||
275 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
225 | CONFIG_PREEMPT=y | 276 | CONFIG_PREEMPT=y |
226 | CONFIG_HZ=100 | 277 | CONFIG_HZ=100 |
227 | CONFIG_AEABI=y | 278 | CONFIG_AEABI=y |
@@ -229,6 +280,7 @@ CONFIG_AEABI=y | |||
229 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | 280 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
230 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | 281 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
231 | # CONFIG_HIGHMEM is not set | 282 | # CONFIG_HIGHMEM is not set |
283 | CONFIG_HW_PERF_EVENTS=y | ||
232 | CONFIG_SELECT_MEMORY_MODEL=y | 284 | CONFIG_SELECT_MEMORY_MODEL=y |
233 | CONFIG_FLATMEM_MANUAL=y | 285 | CONFIG_FLATMEM_MANUAL=y |
234 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 286 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -240,8 +292,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
240 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 292 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
241 | CONFIG_ZONE_DMA_FLAG=0 | 293 | CONFIG_ZONE_DMA_FLAG=0 |
242 | CONFIG_VIRT_TO_BUS=y | 294 | CONFIG_VIRT_TO_BUS=y |
243 | CONFIG_HAVE_MLOCK=y | 295 | # CONFIG_KSM is not set |
244 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
245 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 296 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
246 | CONFIG_ALIGNMENT_TRAP=y | 297 | CONFIG_ALIGNMENT_TRAP=y |
247 | CONFIG_UACCESS_WITH_MEMCPY=y | 298 | CONFIG_UACCESS_WITH_MEMCPY=y |
@@ -335,9 +386,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
335 | # CONFIG_CONNECTOR is not set | 386 | # CONFIG_CONNECTOR is not set |
336 | CONFIG_MTD=y | 387 | CONFIG_MTD=y |
337 | # CONFIG_MTD_DEBUG is not set | 388 | # CONFIG_MTD_DEBUG is not set |
389 | # CONFIG_MTD_TESTS is not set | ||
338 | CONFIG_MTD_CONCAT=y | 390 | CONFIG_MTD_CONCAT=y |
339 | CONFIG_MTD_PARTITIONS=y | 391 | CONFIG_MTD_PARTITIONS=y |
340 | # CONFIG_MTD_TESTS is not set | ||
341 | # CONFIG_MTD_REDBOOT_PARTS is not set | 392 | # CONFIG_MTD_REDBOOT_PARTS is not set |
342 | CONFIG_MTD_CMDLINE_PARTS=y | 393 | CONFIG_MTD_CMDLINE_PARTS=y |
343 | # CONFIG_MTD_AFS_PARTS is not set | 394 | # CONFIG_MTD_AFS_PARTS is not set |
@@ -433,6 +484,10 @@ CONFIG_MTD_NAND_BCM_UMI_HWCS=y | |||
433 | CONFIG_BLK_DEV=y | 484 | CONFIG_BLK_DEV=y |
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | 485 | # CONFIG_BLK_DEV_COW_COMMON is not set |
435 | # CONFIG_BLK_DEV_LOOP is not set | 486 | # CONFIG_BLK_DEV_LOOP is not set |
487 | |||
488 | # | ||
489 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
490 | # | ||
436 | # CONFIG_BLK_DEV_NBD is not set | 491 | # CONFIG_BLK_DEV_NBD is not set |
437 | # CONFIG_BLK_DEV_RAM is not set | 492 | # CONFIG_BLK_DEV_RAM is not set |
438 | # CONFIG_CDROM_PKTCDVD is not set | 493 | # CONFIG_CDROM_PKTCDVD is not set |
@@ -444,6 +499,7 @@ CONFIG_HAVE_IDE=y | |||
444 | # | 499 | # |
445 | # SCSI device support | 500 | # SCSI device support |
446 | # | 501 | # |
502 | CONFIG_SCSI_MOD=y | ||
447 | # CONFIG_RAID_ATTRS is not set | 503 | # CONFIG_RAID_ATTRS is not set |
448 | # CONFIG_SCSI is not set | 504 | # CONFIG_SCSI is not set |
449 | # CONFIG_SCSI_DMA is not set | 505 | # CONFIG_SCSI_DMA is not set |
@@ -452,6 +508,7 @@ CONFIG_HAVE_IDE=y | |||
452 | # CONFIG_MD is not set | 508 | # CONFIG_MD is not set |
453 | # CONFIG_NETDEVICES is not set | 509 | # CONFIG_NETDEVICES is not set |
454 | # CONFIG_ISDN is not set | 510 | # CONFIG_ISDN is not set |
511 | # CONFIG_PHONE is not set | ||
455 | 512 | ||
456 | # | 513 | # |
457 | # Input device support | 514 | # Input device support |
@@ -459,6 +516,7 @@ CONFIG_HAVE_IDE=y | |||
459 | CONFIG_INPUT=y | 516 | CONFIG_INPUT=y |
460 | # CONFIG_INPUT_FF_MEMLESS is not set | 517 | # CONFIG_INPUT_FF_MEMLESS is not set |
461 | # CONFIG_INPUT_POLLDEV is not set | 518 | # CONFIG_INPUT_POLLDEV is not set |
519 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
462 | 520 | ||
463 | # | 521 | # |
464 | # Userland interfaces | 522 | # Userland interfaces |
@@ -508,6 +566,7 @@ CONFIG_SERIAL_AMBA_PL011=y | |||
508 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 566 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
509 | CONFIG_SERIAL_CORE=y | 567 | CONFIG_SERIAL_CORE=y |
510 | CONFIG_SERIAL_CORE_CONSOLE=y | 568 | CONFIG_SERIAL_CORE_CONSOLE=y |
569 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
511 | CONFIG_UNIX98_PTYS=y | 570 | CONFIG_UNIX98_PTYS=y |
512 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 571 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
513 | CONFIG_LEGACY_PTYS=y | 572 | CONFIG_LEGACY_PTYS=y |
@@ -519,13 +578,17 @@ CONFIG_LEGACY_PTY_COUNT=64 | |||
519 | # CONFIG_TCG_TPM is not set | 578 | # CONFIG_TCG_TPM is not set |
520 | # CONFIG_I2C is not set | 579 | # CONFIG_I2C is not set |
521 | # CONFIG_SPI is not set | 580 | # CONFIG_SPI is not set |
581 | |||
582 | # | ||
583 | # PPS support | ||
584 | # | ||
585 | # CONFIG_PPS is not set | ||
522 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | 586 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y |
523 | # CONFIG_GPIOLIB is not set | 587 | # CONFIG_GPIOLIB is not set |
524 | # CONFIG_W1 is not set | 588 | # CONFIG_W1 is not set |
525 | # CONFIG_POWER_SUPPLY is not set | 589 | # CONFIG_POWER_SUPPLY is not set |
526 | # CONFIG_HWMON is not set | 590 | # CONFIG_HWMON is not set |
527 | # CONFIG_THERMAL is not set | 591 | # CONFIG_THERMAL is not set |
528 | # CONFIG_THERMAL_HWMON is not set | ||
529 | # CONFIG_WATCHDOG is not set | 592 | # CONFIG_WATCHDOG is not set |
530 | CONFIG_SSB_POSSIBLE=y | 593 | CONFIG_SSB_POSSIBLE=y |
531 | 594 | ||
@@ -541,6 +604,7 @@ CONFIG_SSB_POSSIBLE=y | |||
541 | # CONFIG_MFD_SM501 is not set | 604 | # CONFIG_MFD_SM501 is not set |
542 | # CONFIG_HTC_PASIC3 is not set | 605 | # CONFIG_HTC_PASIC3 is not set |
543 | # CONFIG_MFD_TMIO is not set | 606 | # CONFIG_MFD_TMIO is not set |
607 | # CONFIG_REGULATOR is not set | ||
544 | # CONFIG_MEDIA_SUPPORT is not set | 608 | # CONFIG_MEDIA_SUPPORT is not set |
545 | 609 | ||
546 | # | 610 | # |
@@ -566,14 +630,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
566 | # CONFIG_USB_SUPPORT is not set | 630 | # CONFIG_USB_SUPPORT is not set |
567 | # CONFIG_MMC is not set | 631 | # CONFIG_MMC is not set |
568 | # CONFIG_MEMSTICK is not set | 632 | # CONFIG_MEMSTICK is not set |
569 | # CONFIG_ACCESSIBILITY is not set | ||
570 | # CONFIG_NEW_LEDS is not set | 633 | # CONFIG_NEW_LEDS is not set |
634 | # CONFIG_ACCESSIBILITY is not set | ||
571 | CONFIG_RTC_LIB=y | 635 | CONFIG_RTC_LIB=y |
572 | # CONFIG_RTC_CLASS is not set | 636 | # CONFIG_RTC_CLASS is not set |
573 | # CONFIG_DMADEVICES is not set | 637 | # CONFIG_DMADEVICES is not set |
574 | # CONFIG_AUXDISPLAY is not set | 638 | # CONFIG_AUXDISPLAY is not set |
575 | # CONFIG_REGULATOR is not set | ||
576 | # CONFIG_UIO is not set | 639 | # CONFIG_UIO is not set |
640 | |||
641 | # | ||
642 | # TI VLYNQ | ||
643 | # | ||
577 | # CONFIG_STAGING is not set | 644 | # CONFIG_STAGING is not set |
578 | 645 | ||
579 | # | 646 | # |
@@ -589,9 +656,12 @@ CONFIG_FS_POSIX_ACL=y | |||
589 | # CONFIG_GFS2_FS is not set | 656 | # CONFIG_GFS2_FS is not set |
590 | # CONFIG_OCFS2_FS is not set | 657 | # CONFIG_OCFS2_FS is not set |
591 | # CONFIG_BTRFS_FS is not set | 658 | # CONFIG_BTRFS_FS is not set |
659 | # CONFIG_NILFS2_FS is not set | ||
592 | # CONFIG_FILE_LOCKING is not set | 660 | # CONFIG_FILE_LOCKING is not set |
593 | # CONFIG_FSNOTIFY is not set | 661 | # CONFIG_FSNOTIFY is not set |
662 | # CONFIG_DNOTIFY is not set | ||
594 | # CONFIG_INOTIFY is not set | 663 | # CONFIG_INOTIFY is not set |
664 | # CONFIG_INOTIFY_USER is not set | ||
595 | # CONFIG_QUOTA is not set | 665 | # CONFIG_QUOTA is not set |
596 | # CONFIG_AUTOFS_FS is not set | 666 | # CONFIG_AUTOFS_FS is not set |
597 | # CONFIG_AUTOFS4_FS is not set | 667 | # CONFIG_AUTOFS4_FS is not set |
@@ -647,6 +717,7 @@ CONFIG_JFFS2_ZLIB=y | |||
647 | # CONFIG_JFFS2_LZO is not set | 717 | # CONFIG_JFFS2_LZO is not set |
648 | CONFIG_JFFS2_RTIME=y | 718 | CONFIG_JFFS2_RTIME=y |
649 | # CONFIG_JFFS2_RUBIN is not set | 719 | # CONFIG_JFFS2_RUBIN is not set |
720 | # CONFIG_LOGFS is not set | ||
650 | # CONFIG_CRAMFS is not set | 721 | # CONFIG_CRAMFS is not set |
651 | # CONFIG_SQUASHFS is not set | 722 | # CONFIG_SQUASHFS is not set |
652 | # CONFIG_VXFS_FS is not set | 723 | # CONFIG_VXFS_FS is not set |
@@ -657,7 +728,6 @@ CONFIG_JFFS2_RTIME=y | |||
657 | # CONFIG_ROMFS_FS is not set | 728 | # CONFIG_ROMFS_FS is not set |
658 | # CONFIG_SYSV_FS is not set | 729 | # CONFIG_SYSV_FS is not set |
659 | # CONFIG_UFS_FS is not set | 730 | # CONFIG_UFS_FS is not set |
660 | # CONFIG_NILFS2_FS is not set | ||
661 | # CONFIG_NETWORK_FILESYSTEMS is not set | 731 | # CONFIG_NETWORK_FILESYSTEMS is not set |
662 | 732 | ||
663 | # | 733 | # |
@@ -675,11 +745,12 @@ CONFIG_MSDOS_PARTITION=y | |||
675 | CONFIG_ENABLE_MUST_CHECK=y | 745 | CONFIG_ENABLE_MUST_CHECK=y |
676 | CONFIG_FRAME_WARN=1024 | 746 | CONFIG_FRAME_WARN=1024 |
677 | CONFIG_MAGIC_SYSRQ=y | 747 | CONFIG_MAGIC_SYSRQ=y |
748 | # CONFIG_STRIP_ASM_SYMS is not set | ||
678 | # CONFIG_UNUSED_SYMBOLS is not set | 749 | # CONFIG_UNUSED_SYMBOLS is not set |
679 | # CONFIG_DEBUG_FS is not set | 750 | # CONFIG_DEBUG_FS is not set |
680 | CONFIG_HEADERS_CHECK=y | 751 | CONFIG_HEADERS_CHECK=y |
681 | # CONFIG_DEBUG_KERNEL is not set | 752 | # CONFIG_DEBUG_KERNEL is not set |
682 | # CONFIG_DEBUG_BUGVERBOSE is not set | 753 | CONFIG_DEBUG_BUGVERBOSE=y |
683 | # CONFIG_DEBUG_MEMORY_INIT is not set | 754 | # CONFIG_DEBUG_MEMORY_INIT is not set |
684 | CONFIG_FRAME_POINTER=y | 755 | CONFIG_FRAME_POINTER=y |
685 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 756 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
@@ -693,6 +764,7 @@ CONFIG_TRACING_SUPPORT=y | |||
693 | CONFIG_HAVE_ARCH_KGDB=y | 764 | CONFIG_HAVE_ARCH_KGDB=y |
694 | # CONFIG_ARM_UNWIND is not set | 765 | # CONFIG_ARM_UNWIND is not set |
695 | # CONFIG_DEBUG_USER is not set | 766 | # CONFIG_DEBUG_USER is not set |
767 | # CONFIG_OC_ETM is not set | ||
696 | 768 | ||
697 | # | 769 | # |
698 | # Security options | 770 | # Security options |
@@ -700,7 +772,11 @@ CONFIG_HAVE_ARCH_KGDB=y | |||
700 | # CONFIG_KEYS is not set | 772 | # CONFIG_KEYS is not set |
701 | # CONFIG_SECURITY is not set | 773 | # CONFIG_SECURITY is not set |
702 | # CONFIG_SECURITYFS is not set | 774 | # CONFIG_SECURITYFS is not set |
703 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 775 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
776 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
777 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
778 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
779 | CONFIG_DEFAULT_SECURITY="" | ||
704 | # CONFIG_CRYPTO is not set | 780 | # CONFIG_CRYPTO is not set |
705 | # CONFIG_BINARY_PRINTF is not set | 781 | # CONFIG_BINARY_PRINTF is not set |
706 | 782 | ||
diff --git a/arch/arm/configs/imote2_defconfig b/arch/arm/configs/imote2_defconfig index 95d2becfc664..21f2bff8a363 100644 --- a/arch/arm/configs/imote2_defconfig +++ b/arch/arm/configs/imote2_defconfig | |||
@@ -1,13 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.33-rc8 | 3 | # Linux kernel version: 2.6.34-rc2 |
4 | # Sat Feb 13 21:48:53 2010 | 4 | # Thu Apr 8 14:49:08 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | 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_HAVE_PROC_CPU=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 12 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 14 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -19,6 +20,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
19 | CONFIG_ARCH_HAS_CPUFREQ=y | 20 | CONFIG_ARCH_HAS_CPUFREQ=y |
20 | CONFIG_GENERIC_HWEIGHT=y | 21 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
23 | CONFIG_NEED_DMA_MAP_STATE=y | ||
22 | CONFIG_ARCH_MTD_XIP=y | 24 | CONFIG_ARCH_MTD_XIP=y |
23 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 25 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
24 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -60,11 +62,6 @@ CONFIG_RCU_FANOUT=32 | |||
60 | # CONFIG_TREE_RCU_TRACE is not set | 62 | # CONFIG_TREE_RCU_TRACE is not set |
61 | # CONFIG_IKCONFIG is not set | 63 | # CONFIG_IKCONFIG is not set |
62 | CONFIG_LOG_BUF_SHIFT=14 | 64 | CONFIG_LOG_BUF_SHIFT=14 |
63 | CONFIG_GROUP_SCHED=y | ||
64 | CONFIG_FAIR_GROUP_SCHED=y | ||
65 | # CONFIG_RT_GROUP_SCHED is not set | ||
66 | CONFIG_USER_SCHED=y | ||
67 | # CONFIG_CGROUP_SCHED is not set | ||
68 | # CONFIG_CGROUPS is not set | 65 | # CONFIG_CGROUPS is not set |
69 | CONFIG_SYSFS_DEPRECATED=y | 66 | CONFIG_SYSFS_DEPRECATED=y |
70 | CONFIG_SYSFS_DEPRECATED_V2=y | 67 | CONFIG_SYSFS_DEPRECATED_V2=y |
@@ -97,10 +94,14 @@ CONFIG_TIMERFD=y | |||
97 | CONFIG_EVENTFD=y | 94 | CONFIG_EVENTFD=y |
98 | CONFIG_SHMEM=y | 95 | CONFIG_SHMEM=y |
99 | CONFIG_AIO=y | 96 | CONFIG_AIO=y |
97 | CONFIG_HAVE_PERF_EVENTS=y | ||
98 | CONFIG_PERF_USE_VMALLOC=y | ||
100 | 99 | ||
101 | # | 100 | # |
102 | # Kernel Performance Events And Counters | 101 | # Kernel Performance Events And Counters |
103 | # | 102 | # |
103 | # CONFIG_PERF_EVENTS is not set | ||
104 | # CONFIG_PERF_COUNTERS is not set | ||
104 | CONFIG_VM_EVENT_COUNTERS=y | 105 | CONFIG_VM_EVENT_COUNTERS=y |
105 | # CONFIG_COMPAT_BRK is not set | 106 | # CONFIG_COMPAT_BRK is not set |
106 | CONFIG_SLAB=y | 107 | CONFIG_SLAB=y |
@@ -184,6 +185,7 @@ CONFIG_MMU=y | |||
184 | # CONFIG_ARCH_REALVIEW is not set | 185 | # CONFIG_ARCH_REALVIEW is not set |
185 | # CONFIG_ARCH_VERSATILE is not set | 186 | # CONFIG_ARCH_VERSATILE is not set |
186 | # CONFIG_ARCH_AT91 is not set | 187 | # CONFIG_ARCH_AT91 is not set |
188 | # CONFIG_ARCH_BCMRING is not set | ||
187 | # CONFIG_ARCH_CLPS711X is not set | 189 | # CONFIG_ARCH_CLPS711X is not set |
188 | # CONFIG_ARCH_GEMINI is not set | 190 | # CONFIG_ARCH_GEMINI is not set |
189 | # CONFIG_ARCH_EBSA110 is not set | 191 | # CONFIG_ARCH_EBSA110 is not set |
@@ -193,7 +195,6 @@ CONFIG_MMU=y | |||
193 | # CONFIG_ARCH_STMP3XXX is not set | 195 | # CONFIG_ARCH_STMP3XXX is not set |
194 | # CONFIG_ARCH_NETX is not set | 196 | # CONFIG_ARCH_NETX is not set |
195 | # CONFIG_ARCH_H720X is not set | 197 | # CONFIG_ARCH_H720X is not set |
196 | # CONFIG_ARCH_NOMADIK is not set | ||
197 | # CONFIG_ARCH_IOP13XX is not set | 198 | # CONFIG_ARCH_IOP13XX is not set |
198 | # CONFIG_ARCH_IOP32X is not set | 199 | # CONFIG_ARCH_IOP32X is not set |
199 | # CONFIG_ARCH_IOP33X is not set | 200 | # CONFIG_ARCH_IOP33X is not set |
@@ -210,21 +211,26 @@ CONFIG_MMU=y | |||
210 | # CONFIG_ARCH_KS8695 is not set | 211 | # CONFIG_ARCH_KS8695 is not set |
211 | # CONFIG_ARCH_NS9XXX is not set | 212 | # CONFIG_ARCH_NS9XXX is not set |
212 | # CONFIG_ARCH_W90X900 is not set | 213 | # CONFIG_ARCH_W90X900 is not set |
214 | # CONFIG_ARCH_NUC93X is not set | ||
213 | # CONFIG_ARCH_PNX4008 is not set | 215 | # CONFIG_ARCH_PNX4008 is not set |
214 | CONFIG_ARCH_PXA=y | 216 | CONFIG_ARCH_PXA=y |
215 | # CONFIG_ARCH_MSM is not set | 217 | # CONFIG_ARCH_MSM is not set |
218 | # CONFIG_ARCH_SHMOBILE is not set | ||
216 | # CONFIG_ARCH_RPC is not set | 219 | # CONFIG_ARCH_RPC is not set |
217 | # CONFIG_ARCH_SA1100 is not set | 220 | # CONFIG_ARCH_SA1100 is not set |
218 | # CONFIG_ARCH_S3C2410 is not set | 221 | # CONFIG_ARCH_S3C2410 is not set |
219 | # CONFIG_ARCH_S3C64XX is not set | 222 | # CONFIG_ARCH_S3C64XX is not set |
223 | # CONFIG_ARCH_S5P6440 is not set | ||
224 | # CONFIG_ARCH_S5P6442 is not set | ||
220 | # CONFIG_ARCH_S5PC1XX is not set | 225 | # CONFIG_ARCH_S5PC1XX is not set |
226 | # CONFIG_ARCH_S5PV210 is not set | ||
221 | # CONFIG_ARCH_SHARK is not set | 227 | # CONFIG_ARCH_SHARK is not set |
222 | # CONFIG_ARCH_LH7A40X is not set | 228 | # CONFIG_ARCH_LH7A40X is not set |
223 | # CONFIG_ARCH_U300 is not set | 229 | # CONFIG_ARCH_U300 is not set |
230 | # CONFIG_ARCH_U8500 is not set | ||
231 | # CONFIG_ARCH_NOMADIK is not set | ||
224 | # CONFIG_ARCH_DAVINCI is not set | 232 | # CONFIG_ARCH_DAVINCI is not set |
225 | # CONFIG_ARCH_OMAP is not set | 233 | # CONFIG_ARCH_OMAP is not set |
226 | # CONFIG_ARCH_BCMRING is not set | ||
227 | # CONFIG_ARCH_U8500 is not set | ||
228 | 234 | ||
229 | # | 235 | # |
230 | # Intel PXA2xx/PXA3xx Implementations | 236 | # Intel PXA2xx/PXA3xx Implementations |
@@ -253,6 +259,7 @@ CONFIG_ARCH_PXA=y | |||
253 | # CONFIG_MACH_EM_X270 is not set | 259 | # CONFIG_MACH_EM_X270 is not set |
254 | # CONFIG_MACH_EXEDA is not set | 260 | # CONFIG_MACH_EXEDA is not set |
255 | # CONFIG_MACH_CM_X300 is not set | 261 | # CONFIG_MACH_CM_X300 is not set |
262 | # CONFIG_MACH_CAPC7117 is not set | ||
256 | # CONFIG_ARCH_GUMSTIX is not set | 263 | # CONFIG_ARCH_GUMSTIX is not set |
257 | CONFIG_MACH_INTELMOTE2=y | 264 | CONFIG_MACH_INTELMOTE2=y |
258 | # CONFIG_MACH_STARGATE2 is not set | 265 | # CONFIG_MACH_STARGATE2 is not set |
@@ -275,7 +282,11 @@ CONFIG_MACH_INTELMOTE2=y | |||
275 | # CONFIG_PXA_EZX is not set | 282 | # CONFIG_PXA_EZX is not set |
276 | # CONFIG_MACH_MP900C is not set | 283 | # CONFIG_MACH_MP900C is not set |
277 | # CONFIG_ARCH_PXA_PALM is not set | 284 | # CONFIG_ARCH_PXA_PALM is not set |
285 | # CONFIG_MACH_RAUMFELD_RC is not set | ||
286 | # CONFIG_MACH_RAUMFELD_CONNECTOR is not set | ||
287 | # CONFIG_MACH_RAUMFELD_SPEAKER is not set | ||
278 | # CONFIG_PXA_SHARPSL is not set | 288 | # CONFIG_PXA_SHARPSL is not set |
289 | # CONFIG_MACH_ICONTROL is not set | ||
279 | # CONFIG_ARCH_PXA_ESERIES is not set | 290 | # CONFIG_ARCH_PXA_ESERIES is not set |
280 | CONFIG_PXA27x=y | 291 | CONFIG_PXA27x=y |
281 | CONFIG_PXA_SSP=y | 292 | CONFIG_PXA_SSP=y |
@@ -302,6 +313,7 @@ CONFIG_ARM_THUMB=y | |||
302 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 313 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
303 | CONFIG_IWMMXT=y | 314 | CONFIG_IWMMXT=y |
304 | CONFIG_XSCALE_PMU=y | 315 | CONFIG_XSCALE_PMU=y |
316 | CONFIG_CPU_HAS_PMU=y | ||
305 | CONFIG_COMMON_CLKDEV=y | 317 | CONFIG_COMMON_CLKDEV=y |
306 | 318 | ||
307 | # | 319 | # |
@@ -352,7 +364,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
352 | # | 364 | # |
353 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 365 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
354 | CONFIG_ZBOOT_ROM_BSS=0x0 | 366 | CONFIG_ZBOOT_ROM_BSS=0x0 |
355 | CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=3 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug" | 367 | CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS2,115200 mem=32M" |
356 | # CONFIG_XIP_KERNEL is not set | 368 | # CONFIG_XIP_KERNEL is not set |
357 | CONFIG_KEXEC=y | 369 | CONFIG_KEXEC=y |
358 | CONFIG_ATAGS_PROC=y | 370 | CONFIG_ATAGS_PROC=y |
@@ -360,24 +372,8 @@ CONFIG_ATAGS_PROC=y | |||
360 | # | 372 | # |
361 | # CPU Power Management | 373 | # CPU Power Management |
362 | # | 374 | # |
363 | CONFIG_CPU_FREQ=y | 375 | # CONFIG_CPU_FREQ is not set |
364 | CONFIG_CPU_FREQ_TABLE=y | 376 | # CONFIG_CPU_IDLE is not set |
365 | CONFIG_CPU_FREQ_DEBUG=y | ||
366 | CONFIG_CPU_FREQ_STAT=y | ||
367 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | ||
368 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
369 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
370 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
371 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | ||
372 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | ||
373 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
374 | CONFIG_CPU_FREQ_GOV_POWERSAVE=m | ||
375 | CONFIG_CPU_FREQ_GOV_USERSPACE=m | ||
376 | CONFIG_CPU_FREQ_GOV_ONDEMAND=m | ||
377 | CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m | ||
378 | CONFIG_CPU_IDLE=y | ||
379 | CONFIG_CPU_IDLE_GOV_LADDER=y | ||
380 | CONFIG_CPU_IDLE_GOV_MENU=y | ||
381 | 377 | ||
382 | # | 378 | # |
383 | # Floating point emulation | 379 | # Floating point emulation |
@@ -409,6 +405,7 @@ CONFIG_SUSPEND=y | |||
409 | CONFIG_SUSPEND_FREEZER=y | 405 | CONFIG_SUSPEND_FREEZER=y |
410 | CONFIG_APM_EMULATION=y | 406 | CONFIG_APM_EMULATION=y |
411 | CONFIG_PM_RUNTIME=y | 407 | CONFIG_PM_RUNTIME=y |
408 | CONFIG_PM_OPS=y | ||
412 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 409 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
413 | CONFIG_NET=y | 410 | CONFIG_NET=y |
414 | 411 | ||
@@ -416,7 +413,6 @@ CONFIG_NET=y | |||
416 | # Networking options | 413 | # Networking options |
417 | # | 414 | # |
418 | CONFIG_PACKET=y | 415 | CONFIG_PACKET=y |
419 | CONFIG_PACKET_MMAP=y | ||
420 | CONFIG_UNIX=y | 416 | CONFIG_UNIX=y |
421 | CONFIG_XFRM=y | 417 | CONFIG_XFRM=y |
422 | # CONFIG_XFRM_USER is not set | 418 | # CONFIG_XFRM_USER is not set |
@@ -506,6 +502,7 @@ CONFIG_NF_CT_NETLINK=m | |||
506 | CONFIG_NETFILTER_XTABLES=m | 502 | CONFIG_NETFILTER_XTABLES=m |
507 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 503 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
508 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set | 504 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set |
505 | # CONFIG_NETFILTER_XT_TARGET_CT is not set | ||
509 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | 506 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set |
510 | CONFIG_NETFILTER_XT_TARGET_HL=m | 507 | CONFIG_NETFILTER_XT_TARGET_HL=m |
511 | CONFIG_NETFILTER_XT_TARGET_LED=m | 508 | CONFIG_NETFILTER_XT_TARGET_LED=m |
@@ -622,6 +619,7 @@ CONFIG_IP6_NF_RAW=m | |||
622 | # CONFIG_ATM is not set | 619 | # CONFIG_ATM is not set |
623 | CONFIG_STP=m | 620 | CONFIG_STP=m |
624 | CONFIG_BRIDGE=m | 621 | CONFIG_BRIDGE=m |
622 | # CONFIG_BRIDGE_IGMP_SNOOPING is not set | ||
625 | # CONFIG_NET_DSA is not set | 623 | # CONFIG_NET_DSA is not set |
626 | # CONFIG_VLAN_8021Q is not set | 624 | # CONFIG_VLAN_8021Q is not set |
627 | # CONFIG_DECNET is not set | 625 | # CONFIG_DECNET is not set |
@@ -646,32 +644,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
646 | # CONFIG_HAMRADIO is not set | 644 | # CONFIG_HAMRADIO is not set |
647 | # CONFIG_CAN is not set | 645 | # CONFIG_CAN is not set |
648 | # CONFIG_IRDA is not set | 646 | # CONFIG_IRDA is not set |
649 | CONFIG_BT=y | 647 | # CONFIG_BT is not set |
650 | CONFIG_BT_L2CAP=y | ||
651 | CONFIG_BT_SCO=y | ||
652 | CONFIG_BT_RFCOMM=y | ||
653 | CONFIG_BT_RFCOMM_TTY=y | ||
654 | CONFIG_BT_BNEP=y | ||
655 | CONFIG_BT_BNEP_MC_FILTER=y | ||
656 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
657 | CONFIG_BT_HIDP=y | ||
658 | |||
659 | # | ||
660 | # Bluetooth device drivers | ||
661 | # | ||
662 | CONFIG_BT_HCIBTUSB=m | ||
663 | CONFIG_BT_HCIBTSDIO=m | ||
664 | CONFIG_BT_HCIUART=y | ||
665 | CONFIG_BT_HCIUART_H4=y | ||
666 | # CONFIG_BT_HCIUART_BCSP is not set | ||
667 | # CONFIG_BT_HCIUART_LL is not set | ||
668 | CONFIG_BT_HCIBCM203X=m | ||
669 | CONFIG_BT_HCIBPA10X=m | ||
670 | CONFIG_BT_HCIBFUSB=m | ||
671 | CONFIG_BT_HCIVHCI=m | ||
672 | CONFIG_BT_MRVL=m | ||
673 | CONFIG_BT_MRVL_SDIO=m | ||
674 | # CONFIG_BT_ATH3K is not set | ||
675 | # CONFIG_AF_RXRPC is not set | 648 | # CONFIG_AF_RXRPC is not set |
676 | CONFIG_FIB_RULES=y | 649 | CONFIG_FIB_RULES=y |
677 | # CONFIG_WIRELESS is not set | 650 | # CONFIG_WIRELESS is not set |
@@ -687,7 +660,8 @@ CONFIG_FIB_RULES=y | |||
687 | # Generic Driver Options | 660 | # Generic Driver Options |
688 | # | 661 | # |
689 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 662 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
690 | # CONFIG_DEVTMPFS is not set | 663 | CONFIG_DEVTMPFS=y |
664 | CONFIG_DEVTMPFS_MOUNT=y | ||
691 | CONFIG_STANDALONE=y | 665 | CONFIG_STANDALONE=y |
692 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 666 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
693 | CONFIG_FW_LOADER=m | 667 | CONFIG_FW_LOADER=m |
@@ -703,9 +677,9 @@ CONFIG_MTD=y | |||
703 | # CONFIG_MTD_CONCAT is not set | 677 | # CONFIG_MTD_CONCAT is not set |
704 | CONFIG_MTD_PARTITIONS=y | 678 | CONFIG_MTD_PARTITIONS=y |
705 | # CONFIG_MTD_REDBOOT_PARTS is not set | 679 | # CONFIG_MTD_REDBOOT_PARTS is not set |
706 | # CONFIG_MTD_CMDLINE_PARTS is not set | 680 | CONFIG_MTD_CMDLINE_PARTS=y |
707 | # CONFIG_MTD_AFS_PARTS is not set | 681 | CONFIG_MTD_AFS_PARTS=y |
708 | # CONFIG_MTD_AR7_PARTS is not set | 682 | CONFIG_MTD_AR7_PARTS=y |
709 | 683 | ||
710 | # | 684 | # |
711 | # User Modules And Translation Layers | 685 | # User Modules And Translation Layers |
@@ -812,6 +786,7 @@ CONFIG_HAVE_IDE=y | |||
812 | # | 786 | # |
813 | # SCSI device support | 787 | # SCSI device support |
814 | # | 788 | # |
789 | CONFIG_SCSI_MOD=y | ||
815 | # CONFIG_RAID_ATTRS is not set | 790 | # CONFIG_RAID_ATTRS is not set |
816 | # CONFIG_SCSI is not set | 791 | # CONFIG_SCSI is not set |
817 | # CONFIG_SCSI_DMA is not set | 792 | # CONFIG_SCSI_DMA is not set |
@@ -965,6 +940,7 @@ CONFIG_SERIAL_PXA=y | |||
965 | CONFIG_SERIAL_PXA_CONSOLE=y | 940 | CONFIG_SERIAL_PXA_CONSOLE=y |
966 | CONFIG_SERIAL_CORE=y | 941 | CONFIG_SERIAL_CORE=y |
967 | CONFIG_SERIAL_CORE_CONSOLE=y | 942 | CONFIG_SERIAL_CORE_CONSOLE=y |
943 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
968 | CONFIG_UNIX98_PTYS=y | 944 | CONFIG_UNIX98_PTYS=y |
969 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 945 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
970 | CONFIG_LEGACY_PTYS=y | 946 | CONFIG_LEGACY_PTYS=y |
@@ -993,6 +969,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
993 | CONFIG_I2C_PXA=y | 969 | CONFIG_I2C_PXA=y |
994 | # CONFIG_I2C_PXA_SLAVE is not set | 970 | # CONFIG_I2C_PXA_SLAVE is not set |
995 | # CONFIG_I2C_SIMTEC is not set | 971 | # CONFIG_I2C_SIMTEC is not set |
972 | # CONFIG_I2C_XILINX is not set | ||
996 | 973 | ||
997 | # | 974 | # |
998 | # External I2C/SMBus adapter drivers | 975 | # External I2C/SMBus adapter drivers |
@@ -1006,15 +983,9 @@ CONFIG_I2C_PXA=y | |||
1006 | # | 983 | # |
1007 | # CONFIG_I2C_PCA_PLATFORM is not set | 984 | # CONFIG_I2C_PCA_PLATFORM is not set |
1008 | # CONFIG_I2C_STUB is not set | 985 | # CONFIG_I2C_STUB is not set |
1009 | |||
1010 | # | ||
1011 | # Miscellaneous I2C Chip support | ||
1012 | # | ||
1013 | # CONFIG_SENSORS_TSL2550 is not set | ||
1014 | # CONFIG_I2C_DEBUG_CORE is not set | 986 | # CONFIG_I2C_DEBUG_CORE is not set |
1015 | # CONFIG_I2C_DEBUG_ALGO is not set | 987 | # CONFIG_I2C_DEBUG_ALGO is not set |
1016 | # CONFIG_I2C_DEBUG_BUS is not set | 988 | # CONFIG_I2C_DEBUG_BUS is not set |
1017 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
1018 | CONFIG_SPI=y | 989 | CONFIG_SPI=y |
1019 | # CONFIG_SPI_DEBUG is not set | 990 | # CONFIG_SPI_DEBUG is not set |
1020 | CONFIG_SPI_MASTER=y | 991 | CONFIG_SPI_MASTER=y |
@@ -1046,10 +1017,12 @@ CONFIG_GPIO_SYSFS=y | |||
1046 | # | 1017 | # |
1047 | # Memory mapped GPIO expanders: | 1018 | # Memory mapped GPIO expanders: |
1048 | # | 1019 | # |
1020 | # CONFIG_GPIO_IT8761E is not set | ||
1049 | 1021 | ||
1050 | # | 1022 | # |
1051 | # I2C GPIO expanders: | 1023 | # I2C GPIO expanders: |
1052 | # | 1024 | # |
1025 | # CONFIG_GPIO_MAX7300 is not set | ||
1053 | # CONFIG_GPIO_MAX732X is not set | 1026 | # CONFIG_GPIO_MAX732X is not set |
1054 | # CONFIG_GPIO_PCA953X is not set | 1027 | # CONFIG_GPIO_PCA953X is not set |
1055 | # CONFIG_GPIO_PCF857X is not set | 1028 | # CONFIG_GPIO_PCF857X is not set |
@@ -1093,10 +1066,12 @@ CONFIG_SSB_POSSIBLE=y | |||
1093 | # Multifunction device drivers | 1066 | # Multifunction device drivers |
1094 | # | 1067 | # |
1095 | # CONFIG_MFD_CORE is not set | 1068 | # CONFIG_MFD_CORE is not set |
1069 | # CONFIG_MFD_88PM860X is not set | ||
1096 | # CONFIG_MFD_SM501 is not set | 1070 | # CONFIG_MFD_SM501 is not set |
1097 | # CONFIG_MFD_ASIC3 is not set | 1071 | # CONFIG_MFD_ASIC3 is not set |
1098 | # CONFIG_HTC_EGPIO is not set | 1072 | # CONFIG_HTC_EGPIO is not set |
1099 | # CONFIG_HTC_PASIC3 is not set | 1073 | # CONFIG_HTC_PASIC3 is not set |
1074 | # CONFIG_HTC_I2CPLD is not set | ||
1100 | # CONFIG_TPS65010 is not set | 1075 | # CONFIG_TPS65010 is not set |
1101 | # CONFIG_TWL4030_CORE is not set | 1076 | # CONFIG_TWL4030_CORE is not set |
1102 | # CONFIG_MFD_TMIO is not set | 1077 | # CONFIG_MFD_TMIO is not set |
@@ -1105,22 +1080,25 @@ CONFIG_SSB_POSSIBLE=y | |||
1105 | # CONFIG_MFD_TC6393XB is not set | 1080 | # CONFIG_MFD_TC6393XB is not set |
1106 | CONFIG_PMIC_DA903X=y | 1081 | CONFIG_PMIC_DA903X=y |
1107 | # CONFIG_PMIC_ADP5520 is not set | 1082 | # CONFIG_PMIC_ADP5520 is not set |
1083 | # CONFIG_MFD_MAX8925 is not set | ||
1108 | # CONFIG_MFD_WM8400 is not set | 1084 | # CONFIG_MFD_WM8400 is not set |
1109 | # CONFIG_MFD_WM831X is not set | 1085 | # CONFIG_MFD_WM831X is not set |
1110 | # CONFIG_MFD_WM8350_I2C is not set | 1086 | # CONFIG_MFD_WM8350_I2C is not set |
1087 | # CONFIG_MFD_WM8994 is not set | ||
1111 | # CONFIG_MFD_PCF50633 is not set | 1088 | # CONFIG_MFD_PCF50633 is not set |
1112 | # CONFIG_MFD_MC13783 is not set | 1089 | # CONFIG_MFD_MC13783 is not set |
1113 | # CONFIG_AB3100_CORE is not set | 1090 | # CONFIG_AB3100_CORE is not set |
1114 | # CONFIG_EZX_PCAP is not set | 1091 | # CONFIG_EZX_PCAP is not set |
1115 | # CONFIG_MFD_88PM8607 is not set | ||
1116 | # CONFIG_AB4500_CORE is not set | 1092 | # CONFIG_AB4500_CORE is not set |
1117 | CONFIG_REGULATOR=y | 1093 | CONFIG_REGULATOR=y |
1118 | CONFIG_REGULATOR_DEBUG=y | 1094 | CONFIG_REGULATOR_DEBUG=y |
1095 | # CONFIG_REGULATOR_DUMMY is not set | ||
1119 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | 1096 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set |
1120 | CONFIG_REGULATOR_VIRTUAL_CONSUMER=y | 1097 | CONFIG_REGULATOR_VIRTUAL_CONSUMER=y |
1121 | CONFIG_REGULATOR_USERSPACE_CONSUMER=y | 1098 | CONFIG_REGULATOR_USERSPACE_CONSUMER=y |
1122 | # CONFIG_REGULATOR_BQ24022 is not set | 1099 | # CONFIG_REGULATOR_BQ24022 is not set |
1123 | # CONFIG_REGULATOR_MAX1586 is not set | 1100 | # CONFIG_REGULATOR_MAX1586 is not set |
1101 | # CONFIG_REGULATOR_MAX8649 is not set | ||
1124 | # CONFIG_REGULATOR_MAX8660 is not set | 1102 | # CONFIG_REGULATOR_MAX8660 is not set |
1125 | CONFIG_REGULATOR_DA903X=y | 1103 | CONFIG_REGULATOR_DA903X=y |
1126 | # CONFIG_REGULATOR_LP3971 is not set | 1104 | # CONFIG_REGULATOR_LP3971 is not set |
@@ -1218,6 +1196,7 @@ CONFIG_VIDEO_IR_I2C=y | |||
1218 | # CONFIG_VIDEO_SAA7191 is not set | 1196 | # CONFIG_VIDEO_SAA7191 is not set |
1219 | # CONFIG_VIDEO_TVP514X is not set | 1197 | # CONFIG_VIDEO_TVP514X is not set |
1220 | # CONFIG_VIDEO_TVP5150 is not set | 1198 | # CONFIG_VIDEO_TVP5150 is not set |
1199 | # CONFIG_VIDEO_TVP7002 is not set | ||
1221 | # CONFIG_VIDEO_VPX3220 is not set | 1200 | # CONFIG_VIDEO_VPX3220 is not set |
1222 | 1201 | ||
1223 | # | 1202 | # |
@@ -1264,15 +1243,7 @@ CONFIG_SOC_CAMERA_MT9M111=y | |||
1264 | CONFIG_VIDEO_PXA27x=y | 1243 | CONFIG_VIDEO_PXA27x=y |
1265 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set | 1244 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set |
1266 | # CONFIG_V4L_USB_DRIVERS is not set | 1245 | # CONFIG_V4L_USB_DRIVERS is not set |
1267 | CONFIG_RADIO_ADAPTERS=y | 1246 | # CONFIG_RADIO_ADAPTERS is not set |
1268 | # CONFIG_I2C_SI4713 is not set | ||
1269 | # CONFIG_RADIO_SI4713 is not set | ||
1270 | # CONFIG_USB_DSBR is not set | ||
1271 | # CONFIG_RADIO_SI470X is not set | ||
1272 | # CONFIG_USB_MR800 is not set | ||
1273 | CONFIG_RADIO_TEA5764=y | ||
1274 | CONFIG_RADIO_TEA5764_XTAL=y | ||
1275 | # CONFIG_RADIO_TEF6862 is not set | ||
1276 | # CONFIG_DAB is not set | 1247 | # CONFIG_DAB is not set |
1277 | 1248 | ||
1278 | # | 1249 | # |
@@ -1398,8 +1369,6 @@ CONFIG_HID=y | |||
1398 | # | 1369 | # |
1399 | # Special HID drivers | 1370 | # Special HID drivers |
1400 | # | 1371 | # |
1401 | CONFIG_HID_APPLE=m | ||
1402 | # CONFIG_HID_WACOM is not set | ||
1403 | CONFIG_USB_SUPPORT=y | 1372 | CONFIG_USB_SUPPORT=y |
1404 | CONFIG_USB_ARCH_HAS_HCD=y | 1373 | CONFIG_USB_ARCH_HAS_HCD=y |
1405 | CONFIG_USB_ARCH_HAS_OHCI=y | 1374 | CONFIG_USB_ARCH_HAS_OHCI=y |
@@ -1477,7 +1446,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1477 | # CONFIG_USB_RIO500 is not set | 1446 | # CONFIG_USB_RIO500 is not set |
1478 | # CONFIG_USB_LEGOTOWER is not set | 1447 | # CONFIG_USB_LEGOTOWER is not set |
1479 | # CONFIG_USB_LCD is not set | 1448 | # CONFIG_USB_LCD is not set |
1480 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1481 | # CONFIG_USB_LED is not set | 1449 | # CONFIG_USB_LED is not set |
1482 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1450 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1483 | # CONFIG_USB_CYTHERM is not set | 1451 | # CONFIG_USB_CYTHERM is not set |
@@ -1489,7 +1457,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1489 | # CONFIG_USB_IOWARRIOR is not set | 1457 | # CONFIG_USB_IOWARRIOR is not set |
1490 | # CONFIG_USB_TEST is not set | 1458 | # CONFIG_USB_TEST is not set |
1491 | # CONFIG_USB_ISIGHTFW is not set | 1459 | # CONFIG_USB_ISIGHTFW is not set |
1492 | # CONFIG_USB_VST is not set | ||
1493 | CONFIG_USB_GADGET=y | 1460 | CONFIG_USB_GADGET=y |
1494 | # CONFIG_USB_GADGET_DEBUG is not set | 1461 | # CONFIG_USB_GADGET_DEBUG is not set |
1495 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 1462 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -1529,6 +1496,7 @@ CONFIG_USB_ETH=y | |||
1529 | # CONFIG_USB_MIDI_GADGET is not set | 1496 | # CONFIG_USB_MIDI_GADGET is not set |
1530 | # CONFIG_USB_G_PRINTER is not set | 1497 | # CONFIG_USB_G_PRINTER is not set |
1531 | # CONFIG_USB_CDC_COMPOSITE is not set | 1498 | # CONFIG_USB_CDC_COMPOSITE is not set |
1499 | # CONFIG_USB_G_NOKIA is not set | ||
1532 | # CONFIG_USB_G_MULTI is not set | 1500 | # CONFIG_USB_G_MULTI is not set |
1533 | 1501 | ||
1534 | # | 1502 | # |
@@ -1555,8 +1523,6 @@ CONFIG_SDIO_UART=m | |||
1555 | # | 1523 | # |
1556 | CONFIG_MMC_PXA=y | 1524 | CONFIG_MMC_PXA=y |
1557 | # CONFIG_MMC_SDHCI is not set | 1525 | # CONFIG_MMC_SDHCI is not set |
1558 | # CONFIG_MMC_AT91 is not set | ||
1559 | # CONFIG_MMC_ATMELMCI is not set | ||
1560 | CONFIG_MMC_SPI=y | 1526 | CONFIG_MMC_SPI=y |
1561 | # CONFIG_MEMSTICK is not set | 1527 | # CONFIG_MEMSTICK is not set |
1562 | CONFIG_NEW_LEDS=y | 1528 | CONFIG_NEW_LEDS=y |
@@ -1574,11 +1540,11 @@ CONFIG_LEDS_LP3944=y | |||
1574 | # CONFIG_LEDS_REGULATOR is not set | 1540 | # CONFIG_LEDS_REGULATOR is not set |
1575 | # CONFIG_LEDS_BD2802 is not set | 1541 | # CONFIG_LEDS_BD2802 is not set |
1576 | # CONFIG_LEDS_LT3593 is not set | 1542 | # CONFIG_LEDS_LT3593 is not set |
1543 | CONFIG_LEDS_TRIGGERS=y | ||
1577 | 1544 | ||
1578 | # | 1545 | # |
1579 | # LED Triggers | 1546 | # LED Triggers |
1580 | # | 1547 | # |
1581 | CONFIG_LEDS_TRIGGERS=y | ||
1582 | CONFIG_LEDS_TRIGGER_TIMER=y | 1548 | CONFIG_LEDS_TRIGGER_TIMER=y |
1583 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | 1549 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y |
1584 | CONFIG_LEDS_TRIGGER_BACKLIGHT=y | 1550 | CONFIG_LEDS_TRIGGER_BACKLIGHT=y |
@@ -1656,7 +1622,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1656 | # on-CPU RTC drivers | 1622 | # on-CPU RTC drivers |
1657 | # | 1623 | # |
1658 | # CONFIG_RTC_DRV_SA1100 is not set | 1624 | # CONFIG_RTC_DRV_SA1100 is not set |
1659 | # CONFIG_RTC_DRV_PXA is not set | 1625 | CONFIG_RTC_DRV_PXA=y |
1660 | # CONFIG_DMADEVICES is not set | 1626 | # CONFIG_DMADEVICES is not set |
1661 | # CONFIG_AUXDISPLAY is not set | 1627 | # CONFIG_AUXDISPLAY is not set |
1662 | # CONFIG_UIO is not set | 1628 | # CONFIG_UIO is not set |
@@ -1681,19 +1647,10 @@ CONFIG_EXT3_FS_XATTR=y | |||
1681 | CONFIG_JBD=m | 1647 | CONFIG_JBD=m |
1682 | # CONFIG_JBD_DEBUG is not set | 1648 | # CONFIG_JBD_DEBUG is not set |
1683 | CONFIG_FS_MBCACHE=m | 1649 | CONFIG_FS_MBCACHE=m |
1684 | CONFIG_REISERFS_FS=m | 1650 | # CONFIG_REISERFS_FS is not set |
1685 | # CONFIG_REISERFS_CHECK is not set | ||
1686 | # CONFIG_REISERFS_PROC_INFO is not set | ||
1687 | CONFIG_REISERFS_FS_XATTR=y | ||
1688 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
1689 | CONFIG_REISERFS_FS_SECURITY=y | ||
1690 | # CONFIG_JFS_FS is not set | 1651 | # CONFIG_JFS_FS is not set |
1691 | CONFIG_FS_POSIX_ACL=y | 1652 | CONFIG_FS_POSIX_ACL=y |
1692 | CONFIG_XFS_FS=m | 1653 | # CONFIG_XFS_FS is not set |
1693 | # CONFIG_XFS_QUOTA is not set | ||
1694 | # CONFIG_XFS_POSIX_ACL is not set | ||
1695 | # CONFIG_XFS_RT is not set | ||
1696 | # CONFIG_XFS_DEBUG is not set | ||
1697 | # CONFIG_OCFS2_FS is not set | 1654 | # CONFIG_OCFS2_FS is not set |
1698 | # CONFIG_BTRFS_FS is not set | 1655 | # CONFIG_BTRFS_FS is not set |
1699 | # CONFIG_NILFS2_FS is not set | 1656 | # CONFIG_NILFS2_FS is not set |
@@ -1716,9 +1673,7 @@ CONFIG_CUSE=m | |||
1716 | # | 1673 | # |
1717 | # CD-ROM/DVD Filesystems | 1674 | # CD-ROM/DVD Filesystems |
1718 | # | 1675 | # |
1719 | CONFIG_ISO9660_FS=m | 1676 | # CONFIG_ISO9660_FS is not set |
1720 | CONFIG_JOLIET=y | ||
1721 | CONFIG_ZISOFS=y | ||
1722 | # CONFIG_UDF_FS is not set | 1677 | # CONFIG_UDF_FS is not set |
1723 | 1678 | ||
1724 | # | 1679 | # |
@@ -1750,12 +1705,14 @@ CONFIG_MISC_FILESYSTEMS=y | |||
1750 | # CONFIG_BEFS_FS is not set | 1705 | # CONFIG_BEFS_FS is not set |
1751 | # CONFIG_BFS_FS is not set | 1706 | # CONFIG_BFS_FS is not set |
1752 | # CONFIG_EFS_FS is not set | 1707 | # CONFIG_EFS_FS is not set |
1753 | CONFIG_JFFS2_FS=m | 1708 | CONFIG_JFFS2_FS=y |
1754 | CONFIG_JFFS2_FS_DEBUG=0 | 1709 | CONFIG_JFFS2_FS_DEBUG=0 |
1755 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1710 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
1756 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | 1711 | CONFIG_JFFS2_FS_WBUF_VERIFY=y |
1757 | # CONFIG_JFFS2_SUMMARY is not set | 1712 | CONFIG_JFFS2_SUMMARY=y |
1758 | # CONFIG_JFFS2_FS_XATTR is not set | 1713 | CONFIG_JFFS2_FS_XATTR=y |
1714 | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
1715 | CONFIG_JFFS2_FS_SECURITY=y | ||
1759 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | 1716 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y |
1760 | CONFIG_JFFS2_ZLIB=y | 1717 | CONFIG_JFFS2_ZLIB=y |
1761 | CONFIG_JFFS2_LZO=y | 1718 | CONFIG_JFFS2_LZO=y |
@@ -1765,6 +1722,7 @@ CONFIG_JFFS2_RUBIN=y | |||
1765 | CONFIG_JFFS2_CMODE_PRIORITY=y | 1722 | CONFIG_JFFS2_CMODE_PRIORITY=y |
1766 | # CONFIG_JFFS2_CMODE_SIZE is not set | 1723 | # CONFIG_JFFS2_CMODE_SIZE is not set |
1767 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | 1724 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set |
1725 | # CONFIG_LOGFS is not set | ||
1768 | CONFIG_CRAMFS=m | 1726 | CONFIG_CRAMFS=m |
1769 | CONFIG_SQUASHFS=m | 1727 | CONFIG_SQUASHFS=m |
1770 | # CONFIG_SQUASHFS_EMBEDDED is not set | 1728 | # CONFIG_SQUASHFS_EMBEDDED is not set |
@@ -1802,6 +1760,7 @@ CONFIG_SUNRPC=y | |||
1802 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1760 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1803 | CONFIG_SMB_FS=m | 1761 | CONFIG_SMB_FS=m |
1804 | # CONFIG_SMB_NLS_DEFAULT is not set | 1762 | # CONFIG_SMB_NLS_DEFAULT is not set |
1763 | # CONFIG_CEPH_FS is not set | ||
1805 | CONFIG_CIFS=m | 1764 | CONFIG_CIFS=m |
1806 | CONFIG_CIFS_STATS=y | 1765 | CONFIG_CIFS_STATS=y |
1807 | # CONFIG_CIFS_STATS2 is not set | 1766 | # CONFIG_CIFS_STATS2 is not set |
@@ -1895,6 +1854,7 @@ CONFIG_DEBUG_SPINLOCK=y | |||
1895 | CONFIG_DEBUG_MUTEXES=y | 1854 | CONFIG_DEBUG_MUTEXES=y |
1896 | CONFIG_DEBUG_LOCK_ALLOC=y | 1855 | CONFIG_DEBUG_LOCK_ALLOC=y |
1897 | CONFIG_PROVE_LOCKING=y | 1856 | CONFIG_PROVE_LOCKING=y |
1857 | # CONFIG_PROVE_RCU is not set | ||
1898 | CONFIG_LOCKDEP=y | 1858 | CONFIG_LOCKDEP=y |
1899 | # CONFIG_LOCK_STAT is not set | 1859 | # CONFIG_LOCK_STAT is not set |
1900 | # CONFIG_DEBUG_LOCKDEP is not set | 1860 | # CONFIG_DEBUG_LOCKDEP is not set |
@@ -1918,6 +1878,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1918 | # CONFIG_BACKTRACE_SELF_TEST is not set | 1878 | # CONFIG_BACKTRACE_SELF_TEST is not set |
1919 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 1879 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
1920 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1880 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1881 | # CONFIG_LKDTM is not set | ||
1921 | # CONFIG_FAULT_INJECTION is not set | 1882 | # CONFIG_FAULT_INJECTION is not set |
1922 | # CONFIG_LATENCYTOP is not set | 1883 | # CONFIG_LATENCYTOP is not set |
1923 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1884 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
@@ -2061,9 +2022,9 @@ CONFIG_CRC32=y | |||
2061 | CONFIG_CRC7=y | 2022 | CONFIG_CRC7=y |
2062 | CONFIG_LIBCRC32C=m | 2023 | CONFIG_LIBCRC32C=m |
2063 | CONFIG_ZLIB_INFLATE=y | 2024 | CONFIG_ZLIB_INFLATE=y |
2064 | CONFIG_ZLIB_DEFLATE=m | 2025 | CONFIG_ZLIB_DEFLATE=y |
2065 | CONFIG_LZO_COMPRESS=m | 2026 | CONFIG_LZO_COMPRESS=y |
2066 | CONFIG_LZO_DECOMPRESS=m | 2027 | CONFIG_LZO_DECOMPRESS=y |
2067 | CONFIG_DECOMPRESS_GZIP=y | 2028 | CONFIG_DECOMPRESS_GZIP=y |
2068 | CONFIG_DECOMPRESS_BZIP2=y | 2029 | CONFIG_DECOMPRESS_BZIP2=y |
2069 | CONFIG_DECOMPRESS_LZMA=y | 2030 | CONFIG_DECOMPRESS_LZMA=y |
@@ -2075,3 +2036,4 @@ CONFIG_HAS_IOMEM=y | |||
2075 | CONFIG_HAS_IOPORT=y | 2036 | CONFIG_HAS_IOPORT=y |
2076 | CONFIG_HAS_DMA=y | 2037 | CONFIG_HAS_DMA=y |
2077 | CONFIG_NLATTR=y | 2038 | CONFIG_NLATTR=y |
2039 | CONFIG_GENERIC_ATOMIC64=y | ||
diff --git a/arch/arm/configs/n8x0_defconfig b/arch/arm/configs/n8x0_defconfig index 216ad00948af..9405e32783de 100644 --- a/arch/arm/configs/n8x0_defconfig +++ b/arch/arm/configs/n8x0_defconfig | |||
@@ -1058,7 +1058,6 @@ CONFIG_JFFS2_CMODE_PRIORITY=y | |||
1058 | # CONFIG_ROMFS_FS is not set | 1058 | # CONFIG_ROMFS_FS is not set |
1059 | # CONFIG_SYSV_FS is not set | 1059 | # CONFIG_SYSV_FS is not set |
1060 | # CONFIG_UFS_FS is not set | 1060 | # CONFIG_UFS_FS is not set |
1061 | # CONFIG_NILFS2_FS is not set | ||
1062 | CONFIG_NETWORK_FILESYSTEMS=y | 1061 | CONFIG_NETWORK_FILESYSTEMS=y |
1063 | # CONFIG_NFS_FS is not set | 1062 | # CONFIG_NFS_FS is not set |
1064 | # CONFIG_NFSD is not set | 1063 | # CONFIG_NFSD is not set |
diff --git a/arch/arm/configs/omap_zoom2_defconfig b/arch/arm/configs/omap_zoom2_defconfig index f5c6e11cf189..881faea03d79 100644 --- a/arch/arm/configs/omap_zoom2_defconfig +++ b/arch/arm/configs/omap_zoom2_defconfig | |||
@@ -661,7 +661,7 @@ CONFIG_DEVKMEM=y | |||
661 | CONFIG_SERIAL_8250=y | 661 | CONFIG_SERIAL_8250=y |
662 | CONFIG_SERIAL_8250_CONSOLE=y | 662 | CONFIG_SERIAL_8250_CONSOLE=y |
663 | CONFIG_SERIAL_8250_NR_UARTS=32 | 663 | CONFIG_SERIAL_8250_NR_UARTS=32 |
664 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 664 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 |
665 | CONFIG_SERIAL_8250_EXTENDED=y | 665 | CONFIG_SERIAL_8250_EXTENDED=y |
666 | CONFIG_SERIAL_8250_MANY_PORTS=y | 666 | CONFIG_SERIAL_8250_MANY_PORTS=y |
667 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 667 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
diff --git a/arch/arm/configs/omap_zoom3_defconfig b/arch/arm/configs/omap_zoom3_defconfig index ea9a5012d332..5e55b550a408 100644 --- a/arch/arm/configs/omap_zoom3_defconfig +++ b/arch/arm/configs/omap_zoom3_defconfig | |||
@@ -680,7 +680,7 @@ CONFIG_DEVKMEM=y | |||
680 | CONFIG_SERIAL_8250=y | 680 | CONFIG_SERIAL_8250=y |
681 | CONFIG_SERIAL_8250_CONSOLE=y | 681 | CONFIG_SERIAL_8250_CONSOLE=y |
682 | CONFIG_SERIAL_8250_NR_UARTS=32 | 682 | CONFIG_SERIAL_8250_NR_UARTS=32 |
683 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 683 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 |
684 | CONFIG_SERIAL_8250_EXTENDED=y | 684 | CONFIG_SERIAL_8250_EXTENDED=y |
685 | CONFIG_SERIAL_8250_MANY_PORTS=y | 685 | CONFIG_SERIAL_8250_MANY_PORTS=y |
686 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 686 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig index 45135ffadc57..473f9e13f08b 100644 --- a/arch/arm/configs/rx51_defconfig +++ b/arch/arm/configs/rx51_defconfig | |||
@@ -59,8 +59,6 @@ CONFIG_FAIR_GROUP_SCHED=y | |||
59 | CONFIG_USER_SCHED=y | 59 | CONFIG_USER_SCHED=y |
60 | # CONFIG_CGROUP_SCHED is not set | 60 | # CONFIG_CGROUP_SCHED is not set |
61 | # CONFIG_CGROUPS is not set | 61 | # CONFIG_CGROUPS is not set |
62 | CONFIG_SYSFS_DEPRECATED=y | ||
63 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
64 | # CONFIG_RELAY is not set | 62 | # CONFIG_RELAY is not set |
65 | # CONFIG_NAMESPACES is not set | 63 | # CONFIG_NAMESPACES is not set |
66 | CONFIG_BLK_DEV_INITRD=y | 64 | CONFIG_BLK_DEV_INITRD=y |
@@ -480,7 +478,6 @@ CONFIG_BT_HIDP=m | |||
480 | # CONFIG_BT_HCIBFUSB is not set | 478 | # CONFIG_BT_HCIBFUSB is not set |
481 | # CONFIG_BT_HCIVHCI is not set | 479 | # CONFIG_BT_HCIVHCI is not set |
482 | # CONFIG_AF_RXRPC is not set | 480 | # CONFIG_AF_RXRPC is not set |
483 | # CONFIG_PHONET is not set | ||
484 | CONFIG_WIRELESS=y | 481 | CONFIG_WIRELESS=y |
485 | CONFIG_CFG80211=y | 482 | CONFIG_CFG80211=y |
486 | # CONFIG_CFG80211_REG_DEBUG is not set | 483 | # CONFIG_CFG80211_REG_DEBUG is not set |
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 00f46d9ce299..6e8f05c8a1c8 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
@@ -149,10 +149,10 @@ | |||
149 | 149 | ||
150 | #define USER(x...) \ | 150 | #define USER(x...) \ |
151 | 9999: x; \ | 151 | 9999: x; \ |
152 | .section __ex_table,"a"; \ | 152 | .pushsection __ex_table,"a"; \ |
153 | .align 3; \ | 153 | .align 3; \ |
154 | .long 9999b,9001f; \ | 154 | .long 9999b,9001f; \ |
155 | .previous | 155 | .popsection |
156 | 156 | ||
157 | /* | 157 | /* |
158 | * SMP data memory barrier | 158 | * SMP data memory barrier |
@@ -193,10 +193,10 @@ | |||
193 | .error "Unsupported inc macro argument" | 193 | .error "Unsupported inc macro argument" |
194 | .endif | 194 | .endif |
195 | 195 | ||
196 | .section __ex_table,"a" | 196 | .pushsection __ex_table,"a" |
197 | .align 3 | 197 | .align 3 |
198 | .long 9999b, \abort | 198 | .long 9999b, \abort |
199 | .previous | 199 | .popsection |
200 | .endm | 200 | .endm |
201 | 201 | ||
202 | .macro usracc, instr, reg, ptr, inc, cond, rept, abort | 202 | .macro usracc, instr, reg, ptr, inc, cond, rept, abort |
@@ -234,10 +234,10 @@ | |||
234 | .error "Unsupported inc macro argument" | 234 | .error "Unsupported inc macro argument" |
235 | .endif | 235 | .endif |
236 | 236 | ||
237 | .section __ex_table,"a" | 237 | .pushsection __ex_table,"a" |
238 | .align 3 | 238 | .align 3 |
239 | .long 9999b, \abort | 239 | .long 9999b, \abort |
240 | .previous | 240 | .popsection |
241 | .endr | 241 | .endr |
242 | .endm | 242 | .endm |
243 | 243 | ||
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h index e8ddec2cb158..a0162fa94564 100644 --- a/arch/arm/include/asm/atomic.h +++ b/arch/arm/include/asm/atomic.h | |||
@@ -24,7 +24,7 @@ | |||
24 | * strex/ldrex monitor on some implementations. The reason we can use it for | 24 | * strex/ldrex monitor on some implementations. The reason we can use it for |
25 | * atomic_set() is the clrex or dummy strex done on every exception return. | 25 | * atomic_set() is the clrex or dummy strex done on every exception return. |
26 | */ | 26 | */ |
27 | #define atomic_read(v) ((v)->counter) | 27 | #define atomic_read(v) (*(volatile int *)&(v)->counter) |
28 | #define atomic_set(v,i) (((v)->counter) = (i)) | 28 | #define atomic_set(v,i) (((v)->counter) = (i)) |
29 | 29 | ||
30 | #if __LINUX_ARM_ARCH__ >= 6 | 30 | #if __LINUX_ARM_ARCH__ >= 6 |
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 0d08d4170b64..4656a24058d2 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
@@ -371,6 +371,10 @@ static inline void __flush_icache_all(void) | |||
371 | #ifdef CONFIG_ARM_ERRATA_411920 | 371 | #ifdef CONFIG_ARM_ERRATA_411920 |
372 | extern void v6_icache_inval_all(void); | 372 | extern void v6_icache_inval_all(void); |
373 | v6_icache_inval_all(); | 373 | v6_icache_inval_all(); |
374 | #elif defined(CONFIG_SMP) && __LINUX_ARM_ARCH__ >= 7 | ||
375 | asm("mcr p15, 0, %0, c7, c1, 0 @ invalidate I-cache inner shareable\n" | ||
376 | : | ||
377 | : "r" (0)); | ||
374 | #else | 378 | #else |
375 | asm("mcr p15, 0, %0, c7, c5, 0 @ invalidate I-cache\n" | 379 | asm("mcr p15, 0, %0, c7, c5, 0 @ invalidate I-cache\n" |
376 | : | 380 | : |
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index bff056489cc1..51662feb9f1d 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h | |||
@@ -9,6 +9,8 @@ | |||
9 | #include <asm/ptrace.h> | 9 | #include <asm/ptrace.h> |
10 | #include <asm/user.h> | 10 | #include <asm/user.h> |
11 | 11 | ||
12 | struct task_struct; | ||
13 | |||
12 | typedef unsigned long elf_greg_t; | 14 | typedef unsigned long elf_greg_t; |
13 | typedef unsigned long elf_freg_t[3]; | 15 | typedef unsigned long elf_freg_t[3]; |
14 | 16 | ||
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index bfcc15929a7f..540a044153a5 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -21,14 +21,14 @@ | |||
21 | "2: strt %0, [%2]\n" \ | 21 | "2: strt %0, [%2]\n" \ |
22 | " mov %0, #0\n" \ | 22 | " mov %0, #0\n" \ |
23 | "3:\n" \ | 23 | "3:\n" \ |
24 | " .section __ex_table,\"a\"\n" \ | 24 | " .pushsection __ex_table,\"a\"\n" \ |
25 | " .align 3\n" \ | 25 | " .align 3\n" \ |
26 | " .long 1b, 4f, 2b, 4f\n" \ | 26 | " .long 1b, 4f, 2b, 4f\n" \ |
27 | " .previous\n" \ | 27 | " .popsection\n" \ |
28 | " .section .fixup,\"ax\"\n" \ | 28 | " .pushsection .fixup,\"ax\"\n" \ |
29 | "4: mov %0, %4\n" \ | 29 | "4: mov %0, %4\n" \ |
30 | " b 3b\n" \ | 30 | " b 3b\n" \ |
31 | " .previous" \ | 31 | " .popsection" \ |
32 | : "=&r" (ret), "=&r" (oldval) \ | 32 | : "=&r" (ret), "=&r" (oldval) \ |
33 | : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ | 33 | : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ |
34 | : "cc", "memory") | 34 | : "cc", "memory") |
@@ -102,14 +102,14 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
102 | " it eq @ explicit IT needed for the 2b label\n" | 102 | " it eq @ explicit IT needed for the 2b label\n" |
103 | "2: streqt %2, [%3]\n" | 103 | "2: streqt %2, [%3]\n" |
104 | "3:\n" | 104 | "3:\n" |
105 | " .section __ex_table,\"a\"\n" | 105 | " .pushsection __ex_table,\"a\"\n" |
106 | " .align 3\n" | 106 | " .align 3\n" |
107 | " .long 1b, 4f, 2b, 4f\n" | 107 | " .long 1b, 4f, 2b, 4f\n" |
108 | " .previous\n" | 108 | " .popsection\n" |
109 | " .section .fixup,\"ax\"\n" | 109 | " .pushsection .fixup,\"ax\"\n" |
110 | "4: mov %0, %4\n" | 110 | "4: mov %0, %4\n" |
111 | " b 3b\n" | 111 | " b 3b\n" |
112 | " .previous" | 112 | " .popsection" |
113 | : "=&r" (val) | 113 | : "=&r" (val) |
114 | : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) | 114 | : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) |
115 | : "cc", "memory"); | 115 | : "cc", "memory"); |
diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h index 7f36d00600b4..feb988a7ec37 100644 --- a/arch/arm/include/asm/highmem.h +++ b/arch/arm/include/asm/highmem.h | |||
@@ -11,7 +11,11 @@ | |||
11 | 11 | ||
12 | #define kmap_prot PAGE_KERNEL | 12 | #define kmap_prot PAGE_KERNEL |
13 | 13 | ||
14 | #define flush_cache_kmaps() flush_cache_all() | 14 | #define flush_cache_kmaps() \ |
15 | do { \ | ||
16 | if (cache_is_vivt()) \ | ||
17 | flush_cache_all(); \ | ||
18 | } while (0) | ||
15 | 19 | ||
16 | extern pte_t *pkmap_page_table; | 20 | extern pte_t *pkmap_page_table; |
17 | 21 | ||
@@ -21,11 +25,20 @@ extern void *kmap_high(struct page *page); | |||
21 | extern void *kmap_high_get(struct page *page); | 25 | extern void *kmap_high_get(struct page *page); |
22 | extern void kunmap_high(struct page *page); | 26 | extern void kunmap_high(struct page *page); |
23 | 27 | ||
28 | extern void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte); | ||
29 | extern void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte); | ||
30 | |||
31 | /* | ||
32 | * The following functions are already defined by <linux/highmem.h> | ||
33 | * when CONFIG_HIGHMEM is not set. | ||
34 | */ | ||
35 | #ifdef CONFIG_HIGHMEM | ||
24 | extern void *kmap(struct page *page); | 36 | extern void *kmap(struct page *page); |
25 | extern void kunmap(struct page *page); | 37 | extern void kunmap(struct page *page); |
26 | extern void *kmap_atomic(struct page *page, enum km_type type); | 38 | extern void *kmap_atomic(struct page *page, enum km_type type); |
27 | extern void kunmap_atomic(void *kvaddr, enum km_type type); | 39 | extern void kunmap_atomic(void *kvaddr, enum km_type type); |
28 | extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type); | 40 | extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type); |
29 | extern struct page *kmap_atomic_to_page(const void *ptr); | 41 | extern struct page *kmap_atomic_to_page(const void *ptr); |
42 | #endif | ||
30 | 43 | ||
31 | #endif | 44 | #endif |
diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h index c019949a5189..c4b2ea3fbe42 100644 --- a/arch/arm/include/asm/kmap_types.h +++ b/arch/arm/include/asm/kmap_types.h | |||
@@ -18,6 +18,7 @@ enum km_type { | |||
18 | KM_IRQ1, | 18 | KM_IRQ1, |
19 | KM_SOFTIRQ0, | 19 | KM_SOFTIRQ0, |
20 | KM_SOFTIRQ1, | 20 | KM_SOFTIRQ1, |
21 | KM_L1_CACHE, | ||
21 | KM_L2_CACHE, | 22 | KM_L2_CACHE, |
22 | KM_TYPE_NR | 23 | KM_TYPE_NR |
23 | }; | 24 | }; |
diff --git a/arch/arm/include/asm/smp_twd.h b/arch/arm/include/asm/smp_twd.h index 7be0978b2625..634f357be6bb 100644 --- a/arch/arm/include/asm/smp_twd.h +++ b/arch/arm/include/asm/smp_twd.h | |||
@@ -1,6 +1,23 @@ | |||
1 | #ifndef __ASMARM_SMP_TWD_H | 1 | #ifndef __ASMARM_SMP_TWD_H |
2 | #define __ASMARM_SMP_TWD_H | 2 | #define __ASMARM_SMP_TWD_H |
3 | 3 | ||
4 | #define TWD_TIMER_LOAD 0x00 | ||
5 | #define TWD_TIMER_COUNTER 0x04 | ||
6 | #define TWD_TIMER_CONTROL 0x08 | ||
7 | #define TWD_TIMER_INTSTAT 0x0C | ||
8 | |||
9 | #define TWD_WDOG_LOAD 0x20 | ||
10 | #define TWD_WDOG_COUNTER 0x24 | ||
11 | #define TWD_WDOG_CONTROL 0x28 | ||
12 | #define TWD_WDOG_INTSTAT 0x2C | ||
13 | #define TWD_WDOG_RESETSTAT 0x30 | ||
14 | #define TWD_WDOG_DISABLE 0x34 | ||
15 | |||
16 | #define TWD_TIMER_CONTROL_ENABLE (1 << 0) | ||
17 | #define TWD_TIMER_CONTROL_ONESHOT (0 << 1) | ||
18 | #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) | ||
19 | #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) | ||
20 | |||
4 | struct clock_event_device; | 21 | struct clock_event_device; |
5 | 22 | ||
6 | extern void __iomem *twd_base; | 23 | extern void __iomem *twd_base; |
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index e085e2c545eb..bd863d8608cd 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
@@ -46,6 +46,9 @@ | |||
46 | #define TLB_V7_UIS_FULL (1 << 20) | 46 | #define TLB_V7_UIS_FULL (1 << 20) |
47 | #define TLB_V7_UIS_ASID (1 << 21) | 47 | #define TLB_V7_UIS_ASID (1 << 21) |
48 | 48 | ||
49 | /* Inner Shareable BTB operation (ARMv7 MP extensions) */ | ||
50 | #define TLB_V7_IS_BTB (1 << 22) | ||
51 | |||
49 | #define TLB_L2CLEAN_FR (1 << 29) /* Feroceon */ | 52 | #define TLB_L2CLEAN_FR (1 << 29) /* Feroceon */ |
50 | #define TLB_DCLEAN (1 << 30) | 53 | #define TLB_DCLEAN (1 << 30) |
51 | #define TLB_WB (1 << 31) | 54 | #define TLB_WB (1 << 31) |
@@ -183,7 +186,7 @@ | |||
183 | #endif | 186 | #endif |
184 | 187 | ||
185 | #ifdef CONFIG_SMP | 188 | #ifdef CONFIG_SMP |
186 | #define v7wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_BTB | \ | 189 | #define v7wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_V7_IS_BTB | \ |
187 | TLB_V7_UIS_FULL | TLB_V7_UIS_PAGE | TLB_V7_UIS_ASID) | 190 | TLB_V7_UIS_FULL | TLB_V7_UIS_PAGE | TLB_V7_UIS_ASID) |
188 | #else | 191 | #else |
189 | #define v7wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_BTB | \ | 192 | #define v7wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_BTB | \ |
@@ -339,6 +342,12 @@ static inline void local_flush_tlb_all(void) | |||
339 | dsb(); | 342 | dsb(); |
340 | isb(); | 343 | isb(); |
341 | } | 344 | } |
345 | if (tlb_flag(TLB_V7_IS_BTB)) { | ||
346 | /* flush the branch target cache */ | ||
347 | asm("mcr p15, 0, %0, c7, c1, 6" : : "r" (zero) : "cc"); | ||
348 | dsb(); | ||
349 | isb(); | ||
350 | } | ||
342 | } | 351 | } |
343 | 352 | ||
344 | static inline void local_flush_tlb_mm(struct mm_struct *mm) | 353 | static inline void local_flush_tlb_mm(struct mm_struct *mm) |
@@ -376,6 +385,12 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm) | |||
376 | asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc"); | 385 | asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc"); |
377 | dsb(); | 386 | dsb(); |
378 | } | 387 | } |
388 | if (tlb_flag(TLB_V7_IS_BTB)) { | ||
389 | /* flush the branch target cache */ | ||
390 | asm("mcr p15, 0, %0, c7, c1, 6" : : "r" (zero) : "cc"); | ||
391 | dsb(); | ||
392 | isb(); | ||
393 | } | ||
379 | } | 394 | } |
380 | 395 | ||
381 | static inline void | 396 | static inline void |
@@ -416,6 +431,12 @@ local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr) | |||
416 | asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc"); | 431 | asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc"); |
417 | dsb(); | 432 | dsb(); |
418 | } | 433 | } |
434 | if (tlb_flag(TLB_V7_IS_BTB)) { | ||
435 | /* flush the branch target cache */ | ||
436 | asm("mcr p15, 0, %0, c7, c1, 6" : : "r" (zero) : "cc"); | ||
437 | dsb(); | ||
438 | isb(); | ||
439 | } | ||
419 | } | 440 | } |
420 | 441 | ||
421 | static inline void local_flush_tlb_kernel_page(unsigned long kaddr) | 442 | static inline void local_flush_tlb_kernel_page(unsigned long kaddr) |
@@ -454,6 +475,12 @@ static inline void local_flush_tlb_kernel_page(unsigned long kaddr) | |||
454 | dsb(); | 475 | dsb(); |
455 | isb(); | 476 | isb(); |
456 | } | 477 | } |
478 | if (tlb_flag(TLB_V7_IS_BTB)) { | ||
479 | /* flush the branch target cache */ | ||
480 | asm("mcr p15, 0, %0, c7, c1, 6" : : "r" (zero) : "cc"); | ||
481 | dsb(); | ||
482 | isb(); | ||
483 | } | ||
457 | } | 484 | } |
458 | 485 | ||
459 | /* | 486 | /* |
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 1d6bd40a4322..33e4a48fe103 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h | |||
@@ -229,16 +229,16 @@ do { \ | |||
229 | __asm__ __volatile__( \ | 229 | __asm__ __volatile__( \ |
230 | "1: ldrbt %1,[%2]\n" \ | 230 | "1: ldrbt %1,[%2]\n" \ |
231 | "2:\n" \ | 231 | "2:\n" \ |
232 | " .section .fixup,\"ax\"\n" \ | 232 | " .pushsection .fixup,\"ax\"\n" \ |
233 | " .align 2\n" \ | 233 | " .align 2\n" \ |
234 | "3: mov %0, %3\n" \ | 234 | "3: mov %0, %3\n" \ |
235 | " mov %1, #0\n" \ | 235 | " mov %1, #0\n" \ |
236 | " b 2b\n" \ | 236 | " b 2b\n" \ |
237 | " .previous\n" \ | 237 | " .popsection\n" \ |
238 | " .section __ex_table,\"a\"\n" \ | 238 | " .pushsection __ex_table,\"a\"\n" \ |
239 | " .align 3\n" \ | 239 | " .align 3\n" \ |
240 | " .long 1b, 3b\n" \ | 240 | " .long 1b, 3b\n" \ |
241 | " .previous" \ | 241 | " .popsection" \ |
242 | : "+r" (err), "=&r" (x) \ | 242 | : "+r" (err), "=&r" (x) \ |
243 | : "r" (addr), "i" (-EFAULT) \ | 243 | : "r" (addr), "i" (-EFAULT) \ |
244 | : "cc") | 244 | : "cc") |
@@ -265,16 +265,16 @@ do { \ | |||
265 | __asm__ __volatile__( \ | 265 | __asm__ __volatile__( \ |
266 | "1: ldrt %1,[%2]\n" \ | 266 | "1: ldrt %1,[%2]\n" \ |
267 | "2:\n" \ | 267 | "2:\n" \ |
268 | " .section .fixup,\"ax\"\n" \ | 268 | " .pushsection .fixup,\"ax\"\n" \ |
269 | " .align 2\n" \ | 269 | " .align 2\n" \ |
270 | "3: mov %0, %3\n" \ | 270 | "3: mov %0, %3\n" \ |
271 | " mov %1, #0\n" \ | 271 | " mov %1, #0\n" \ |
272 | " b 2b\n" \ | 272 | " b 2b\n" \ |
273 | " .previous\n" \ | 273 | " .popsection\n" \ |
274 | " .section __ex_table,\"a\"\n" \ | 274 | " .pushsection __ex_table,\"a\"\n" \ |
275 | " .align 3\n" \ | 275 | " .align 3\n" \ |
276 | " .long 1b, 3b\n" \ | 276 | " .long 1b, 3b\n" \ |
277 | " .previous" \ | 277 | " .popsection" \ |
278 | : "+r" (err), "=&r" (x) \ | 278 | : "+r" (err), "=&r" (x) \ |
279 | : "r" (addr), "i" (-EFAULT) \ | 279 | : "r" (addr), "i" (-EFAULT) \ |
280 | : "cc") | 280 | : "cc") |
@@ -310,15 +310,15 @@ do { \ | |||
310 | __asm__ __volatile__( \ | 310 | __asm__ __volatile__( \ |
311 | "1: strbt %1,[%2]\n" \ | 311 | "1: strbt %1,[%2]\n" \ |
312 | "2:\n" \ | 312 | "2:\n" \ |
313 | " .section .fixup,\"ax\"\n" \ | 313 | " .pushsection .fixup,\"ax\"\n" \ |
314 | " .align 2\n" \ | 314 | " .align 2\n" \ |
315 | "3: mov %0, %3\n" \ | 315 | "3: mov %0, %3\n" \ |
316 | " b 2b\n" \ | 316 | " b 2b\n" \ |
317 | " .previous\n" \ | 317 | " .popsection\n" \ |
318 | " .section __ex_table,\"a\"\n" \ | 318 | " .pushsection __ex_table,\"a\"\n" \ |
319 | " .align 3\n" \ | 319 | " .align 3\n" \ |
320 | " .long 1b, 3b\n" \ | 320 | " .long 1b, 3b\n" \ |
321 | " .previous" \ | 321 | " .popsection" \ |
322 | : "+r" (err) \ | 322 | : "+r" (err) \ |
323 | : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ | 323 | : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ |
324 | : "cc") | 324 | : "cc") |
@@ -343,15 +343,15 @@ do { \ | |||
343 | __asm__ __volatile__( \ | 343 | __asm__ __volatile__( \ |
344 | "1: strt %1,[%2]\n" \ | 344 | "1: strt %1,[%2]\n" \ |
345 | "2:\n" \ | 345 | "2:\n" \ |
346 | " .section .fixup,\"ax\"\n" \ | 346 | " .pushsection .fixup,\"ax\"\n" \ |
347 | " .align 2\n" \ | 347 | " .align 2\n" \ |
348 | "3: mov %0, %3\n" \ | 348 | "3: mov %0, %3\n" \ |
349 | " b 2b\n" \ | 349 | " b 2b\n" \ |
350 | " .previous\n" \ | 350 | " .popsection\n" \ |
351 | " .section __ex_table,\"a\"\n" \ | 351 | " .pushsection __ex_table,\"a\"\n" \ |
352 | " .align 3\n" \ | 352 | " .align 3\n" \ |
353 | " .long 1b, 3b\n" \ | 353 | " .long 1b, 3b\n" \ |
354 | " .previous" \ | 354 | " .popsection" \ |
355 | : "+r" (err) \ | 355 | : "+r" (err) \ |
356 | : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ | 356 | : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ |
357 | : "cc") | 357 | : "cc") |
@@ -371,16 +371,16 @@ do { \ | |||
371 | THUMB( "1: strt " __reg_oper1 ", [%1]\n" ) \ | 371 | THUMB( "1: strt " __reg_oper1 ", [%1]\n" ) \ |
372 | THUMB( "2: strt " __reg_oper0 ", [%1, #4]\n" ) \ | 372 | THUMB( "2: strt " __reg_oper0 ", [%1, #4]\n" ) \ |
373 | "3:\n" \ | 373 | "3:\n" \ |
374 | " .section .fixup,\"ax\"\n" \ | 374 | " .pushsection .fixup,\"ax\"\n" \ |
375 | " .align 2\n" \ | 375 | " .align 2\n" \ |
376 | "4: mov %0, %3\n" \ | 376 | "4: mov %0, %3\n" \ |
377 | " b 3b\n" \ | 377 | " b 3b\n" \ |
378 | " .previous\n" \ | 378 | " .popsection\n" \ |
379 | " .section __ex_table,\"a\"\n" \ | 379 | " .pushsection __ex_table,\"a\"\n" \ |
380 | " .align 3\n" \ | 380 | " .align 3\n" \ |
381 | " .long 1b, 4b\n" \ | 381 | " .long 1b, 4b\n" \ |
382 | " .long 2b, 4b\n" \ | 382 | " .long 2b, 4b\n" \ |
383 | " .previous" \ | 383 | " .popsection" \ |
384 | : "+r" (err), "+r" (__pu_addr) \ | 384 | : "+r" (err), "+r" (__pu_addr) \ |
385 | : "r" (x), "i" (-EFAULT) \ | 385 | : "r" (x), "i" (-EFAULT) \ |
386 | : "cc") | 386 | : "cc") |
diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h index bf65e9f4525d..47f023aa8495 100644 --- a/arch/arm/include/asm/ucontext.h +++ b/arch/arm/include/asm/ucontext.h | |||
@@ -59,23 +59,22 @@ struct iwmmxt_sigframe { | |||
59 | #endif /* CONFIG_IWMMXT */ | 59 | #endif /* CONFIG_IWMMXT */ |
60 | 60 | ||
61 | #ifdef CONFIG_VFP | 61 | #ifdef CONFIG_VFP |
62 | #if __LINUX_ARM_ARCH__ < 6 | ||
63 | /* For ARM pre-v6, we use fstmiax and fldmiax. This adds one extra | ||
64 | * word after the registers, and a word of padding at the end for | ||
65 | * alignment. */ | ||
66 | #define VFP_MAGIC 0x56465001 | 62 | #define VFP_MAGIC 0x56465001 |
67 | #define VFP_STORAGE_SIZE 152 | ||
68 | #else | ||
69 | #define VFP_MAGIC 0x56465002 | ||
70 | #define VFP_STORAGE_SIZE 144 | ||
71 | #endif | ||
72 | 63 | ||
73 | struct vfp_sigframe | 64 | struct vfp_sigframe |
74 | { | 65 | { |
75 | unsigned long magic; | 66 | unsigned long magic; |
76 | unsigned long size; | 67 | unsigned long size; |
77 | union vfp_state storage; | 68 | struct user_vfp ufp; |
78 | }; | 69 | struct user_vfp_exc ufp_exc; |
70 | } __attribute__((__aligned__(8))); | ||
71 | |||
72 | /* | ||
73 | * 8 byte for magic and size, 264 byte for ufp, 12 bytes for ufp_exc, | ||
74 | * 4 bytes padding. | ||
75 | */ | ||
76 | #define VFP_STORAGE_SIZE sizeof(struct vfp_sigframe) | ||
77 | |||
79 | #endif /* CONFIG_VFP */ | 78 | #endif /* CONFIG_VFP */ |
80 | 79 | ||
81 | /* | 80 | /* |
@@ -91,7 +90,7 @@ struct aux_sigframe { | |||
91 | #ifdef CONFIG_IWMMXT | 90 | #ifdef CONFIG_IWMMXT |
92 | struct iwmmxt_sigframe iwmmxt; | 91 | struct iwmmxt_sigframe iwmmxt; |
93 | #endif | 92 | #endif |
94 | #if 0 && defined CONFIG_VFP /* Not yet saved. */ | 93 | #ifdef CONFIG_VFP |
95 | struct vfp_sigframe vfp; | 94 | struct vfp_sigframe vfp; |
96 | #endif | 95 | #endif |
97 | /* Something that isn't a valid magic number for any coprocessor. */ | 96 | /* Something that isn't a valid magic number for any coprocessor. */ |
diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h index df95e050f9dd..05ac4b06876a 100644 --- a/arch/arm/include/asm/user.h +++ b/arch/arm/include/asm/user.h | |||
@@ -83,11 +83,21 @@ struct user{ | |||
83 | 83 | ||
84 | /* | 84 | /* |
85 | * User specific VFP registers. If only VFPv2 is present, registers 16 to 31 | 85 | * User specific VFP registers. If only VFPv2 is present, registers 16 to 31 |
86 | * are ignored by the ptrace system call. | 86 | * are ignored by the ptrace system call and the signal handler. |
87 | */ | 87 | */ |
88 | struct user_vfp { | 88 | struct user_vfp { |
89 | unsigned long long fpregs[32]; | 89 | unsigned long long fpregs[32]; |
90 | unsigned long fpscr; | 90 | unsigned long fpscr; |
91 | }; | 91 | }; |
92 | 92 | ||
93 | /* | ||
94 | * VFP exception registers exposed to user space during signal delivery. | ||
95 | * Fields not relavant to the current VFP architecture are ignored. | ||
96 | */ | ||
97 | struct user_vfp_exc { | ||
98 | unsigned long fpexc; | ||
99 | unsigned long fpinst; | ||
100 | unsigned long fpinst2; | ||
101 | }; | ||
102 | |||
93 | #endif /* _ARM_USER_H */ | 103 | #endif /* _ARM_USER_H */ |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 6c5cf369183b..7ee48e7f8f31 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -523,16 +523,16 @@ ENDPROC(__und_usr) | |||
523 | /* | 523 | /* |
524 | * The out of line fixup for the ldrt above. | 524 | * The out of line fixup for the ldrt above. |
525 | */ | 525 | */ |
526 | .section .fixup, "ax" | 526 | .pushsection .fixup, "ax" |
527 | 4: mov pc, r9 | 527 | 4: mov pc, r9 |
528 | .previous | 528 | .popsection |
529 | .section __ex_table,"a" | 529 | .pushsection __ex_table,"a" |
530 | .long 1b, 4b | 530 | .long 1b, 4b |
531 | #if __LINUX_ARM_ARCH__ >= 7 | 531 | #if __LINUX_ARM_ARCH__ >= 7 |
532 | .long 2b, 4b | 532 | .long 2b, 4b |
533 | .long 3b, 4b | 533 | .long 3b, 4b |
534 | #endif | 534 | #endif |
535 | .previous | 535 | .popsection |
536 | 536 | ||
537 | /* | 537 | /* |
538 | * Check whether the instruction is a co-processor instruction. | 538 | * Check whether the instruction is a co-processor instruction. |
@@ -676,10 +676,10 @@ do_fpe: | |||
676 | * lr = unrecognised FP instruction return address | 676 | * lr = unrecognised FP instruction return address |
677 | */ | 677 | */ |
678 | 678 | ||
679 | .data | 679 | .pushsection .data |
680 | ENTRY(fp_enter) | 680 | ENTRY(fp_enter) |
681 | .word no_fp | 681 | .word no_fp |
682 | .previous | 682 | .popsection |
683 | 683 | ||
684 | ENTRY(no_fp) | 684 | ENTRY(no_fp) |
685 | mov pc, lr | 685 | mov pc, lr |
diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c index c63842766229..0298286ad4ad 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c | |||
@@ -62,15 +62,15 @@ int ftrace_modify_code(unsigned long pc, unsigned char *old_code, | |||
62 | " movne %0, #2 \n" | 62 | " movne %0, #2 \n" |
63 | "3:\n" | 63 | "3:\n" |
64 | 64 | ||
65 | ".section .fixup, \"ax\"\n" | 65 | ".pushsection .fixup, \"ax\"\n" |
66 | "4: mov %0, #1 \n" | 66 | "4: mov %0, #1 \n" |
67 | " b 3b \n" | 67 | " b 3b \n" |
68 | ".previous\n" | 68 | ".popsection\n" |
69 | 69 | ||
70 | ".section __ex_table, \"a\"\n" | 70 | ".pushsection __ex_table, \"a\"\n" |
71 | " .long 1b, 4b \n" | 71 | " .long 1b, 4b \n" |
72 | " .long 2b, 4b \n" | 72 | " .long 2b, 4b \n" |
73 | ".previous\n" | 73 | ".popsection\n" |
74 | 74 | ||
75 | : "=r"(err), "=r"(replaced) | 75 | : "=r"(err), "=r"(replaced) |
76 | : "r"(pc), "r"(new), "r"(old), "0"(err), "1"(replaced) | 76 | : "r"(pc), "r"(new), "r"(old), "0"(err), "1"(replaced) |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 0e12e0acbf26..acf5e6fdb6dc 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -355,7 +355,7 @@ EXPORT_SYMBOL(dump_fpu); | |||
355 | * the thread function, and r3 points to the exit function. | 355 | * the thread function, and r3 points to the exit function. |
356 | */ | 356 | */ |
357 | extern void kernel_thread_helper(void); | 357 | extern void kernel_thread_helper(void); |
358 | asm( ".section .text\n" | 358 | asm( ".pushsection .text\n" |
359 | " .align\n" | 359 | " .align\n" |
360 | " .type kernel_thread_helper, #function\n" | 360 | " .type kernel_thread_helper, #function\n" |
361 | "kernel_thread_helper:\n" | 361 | "kernel_thread_helper:\n" |
@@ -363,11 +363,11 @@ asm( ".section .text\n" | |||
363 | " mov lr, r3\n" | 363 | " mov lr, r3\n" |
364 | " mov pc, r2\n" | 364 | " mov pc, r2\n" |
365 | " .size kernel_thread_helper, . - kernel_thread_helper\n" | 365 | " .size kernel_thread_helper, . - kernel_thread_helper\n" |
366 | " .previous"); | 366 | " .popsection"); |
367 | 367 | ||
368 | #ifdef CONFIG_ARM_UNWIND | 368 | #ifdef CONFIG_ARM_UNWIND |
369 | extern void kernel_thread_exit(long code); | 369 | extern void kernel_thread_exit(long code); |
370 | asm( ".section .text\n" | 370 | asm( ".pushsection .text\n" |
371 | " .align\n" | 371 | " .align\n" |
372 | " .type kernel_thread_exit, #function\n" | 372 | " .type kernel_thread_exit, #function\n" |
373 | "kernel_thread_exit:\n" | 373 | "kernel_thread_exit:\n" |
@@ -377,7 +377,7 @@ asm( ".section .text\n" | |||
377 | " nop\n" | 377 | " nop\n" |
378 | " .fnend\n" | 378 | " .fnend\n" |
379 | " .size kernel_thread_exit, . - kernel_thread_exit\n" | 379 | " .size kernel_thread_exit, . - kernel_thread_exit\n" |
380 | " .previous"); | 380 | " .popsection"); |
381 | #else | 381 | #else |
382 | #define kernel_thread_exit do_exit | 382 | #define kernel_thread_exit do_exit |
383 | #endif | 383 | #endif |
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index e7714f367eb8..907d5a620bca 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/ucontext.h> | 19 | #include <asm/ucontext.h> |
20 | #include <asm/unistd.h> | 20 | #include <asm/unistd.h> |
21 | #include <asm/vfp.h> | ||
21 | 22 | ||
22 | #include "ptrace.h" | 23 | #include "ptrace.h" |
23 | #include "signal.h" | 24 | #include "signal.h" |
@@ -175,6 +176,90 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame) | |||
175 | 176 | ||
176 | #endif | 177 | #endif |
177 | 178 | ||
179 | #ifdef CONFIG_VFP | ||
180 | |||
181 | static int preserve_vfp_context(struct vfp_sigframe __user *frame) | ||
182 | { | ||
183 | struct thread_info *thread = current_thread_info(); | ||
184 | struct vfp_hard_struct *h = &thread->vfpstate.hard; | ||
185 | const unsigned long magic = VFP_MAGIC; | ||
186 | const unsigned long size = VFP_STORAGE_SIZE; | ||
187 | int err = 0; | ||
188 | |||
189 | vfp_sync_hwstate(thread); | ||
190 | __put_user_error(magic, &frame->magic, err); | ||
191 | __put_user_error(size, &frame->size, err); | ||
192 | |||
193 | /* | ||
194 | * Copy the floating point registers. There can be unused | ||
195 | * registers see asm/hwcap.h for details. | ||
196 | */ | ||
197 | err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs, | ||
198 | sizeof(h->fpregs)); | ||
199 | /* | ||
200 | * Copy the status and control register. | ||
201 | */ | ||
202 | __put_user_error(h->fpscr, &frame->ufp.fpscr, err); | ||
203 | |||
204 | /* | ||
205 | * Copy the exception registers. | ||
206 | */ | ||
207 | __put_user_error(h->fpexc, &frame->ufp_exc.fpexc, err); | ||
208 | __put_user_error(h->fpinst, &frame->ufp_exc.fpinst, err); | ||
209 | __put_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err); | ||
210 | |||
211 | return err ? -EFAULT : 0; | ||
212 | } | ||
213 | |||
214 | static int restore_vfp_context(struct vfp_sigframe __user *frame) | ||
215 | { | ||
216 | struct thread_info *thread = current_thread_info(); | ||
217 | struct vfp_hard_struct *h = &thread->vfpstate.hard; | ||
218 | unsigned long magic; | ||
219 | unsigned long size; | ||
220 | unsigned long fpexc; | ||
221 | int err = 0; | ||
222 | |||
223 | __get_user_error(magic, &frame->magic, err); | ||
224 | __get_user_error(size, &frame->size, err); | ||
225 | |||
226 | if (err) | ||
227 | return -EFAULT; | ||
228 | if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE) | ||
229 | return -EINVAL; | ||
230 | |||
231 | /* | ||
232 | * Copy the floating point registers. There can be unused | ||
233 | * registers see asm/hwcap.h for details. | ||
234 | */ | ||
235 | err |= __copy_from_user(&h->fpregs, &frame->ufp.fpregs, | ||
236 | sizeof(h->fpregs)); | ||
237 | /* | ||
238 | * Copy the status and control register. | ||
239 | */ | ||
240 | __get_user_error(h->fpscr, &frame->ufp.fpscr, err); | ||
241 | |||
242 | /* | ||
243 | * Sanitise and restore the exception registers. | ||
244 | */ | ||
245 | __get_user_error(fpexc, &frame->ufp_exc.fpexc, err); | ||
246 | /* Ensure the VFP is enabled. */ | ||
247 | fpexc |= FPEXC_EN; | ||
248 | /* Ensure FPINST2 is invalid and the exception flag is cleared. */ | ||
249 | fpexc &= ~(FPEXC_EX | FPEXC_FP2V); | ||
250 | h->fpexc = fpexc; | ||
251 | |||
252 | __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err); | ||
253 | __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err); | ||
254 | |||
255 | if (!err) | ||
256 | vfp_flush_hwstate(thread); | ||
257 | |||
258 | return err ? -EFAULT : 0; | ||
259 | } | ||
260 | |||
261 | #endif | ||
262 | |||
178 | /* | 263 | /* |
179 | * Do a signal return; undo the signal stack. These are aligned to 64-bit. | 264 | * Do a signal return; undo the signal stack. These are aligned to 64-bit. |
180 | */ | 265 | */ |
@@ -233,8 +318,8 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf) | |||
233 | err |= restore_iwmmxt_context(&aux->iwmmxt); | 318 | err |= restore_iwmmxt_context(&aux->iwmmxt); |
234 | #endif | 319 | #endif |
235 | #ifdef CONFIG_VFP | 320 | #ifdef CONFIG_VFP |
236 | // if (err == 0) | 321 | if (err == 0) |
237 | // err |= vfp_restore_state(&sf->aux.vfp); | 322 | err |= restore_vfp_context(&aux->vfp); |
238 | #endif | 323 | #endif |
239 | 324 | ||
240 | return err; | 325 | return err; |
@@ -348,8 +433,8 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set) | |||
348 | err |= preserve_iwmmxt_context(&aux->iwmmxt); | 433 | err |= preserve_iwmmxt_context(&aux->iwmmxt); |
349 | #endif | 434 | #endif |
350 | #ifdef CONFIG_VFP | 435 | #ifdef CONFIG_VFP |
351 | // if (err == 0) | 436 | if (err == 0) |
352 | // err |= vfp_save_state(&sf->aux.vfp); | 437 | err |= preserve_vfp_context(&aux->vfp); |
353 | #endif | 438 | #endif |
354 | __put_user_error(0, &aux->end_magic, err); | 439 | __put_user_error(0, &aux->end_magic, err); |
355 | 440 | ||
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 577543f3857f..a01194e583ff 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -86,6 +86,12 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
86 | return PTR_ERR(idle); | 86 | return PTR_ERR(idle); |
87 | } | 87 | } |
88 | ci->idle = idle; | 88 | ci->idle = idle; |
89 | } else { | ||
90 | /* | ||
91 | * Since this idle thread is being re-used, call | ||
92 | * init_idle() to reinitialize the thread structure. | ||
93 | */ | ||
94 | init_idle(idle, cpu); | ||
89 | } | 95 | } |
90 | 96 | ||
91 | /* | 97 | /* |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index ea02a7b1c244..7c5f0c024db7 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
@@ -21,23 +21,6 @@ | |||
21 | #include <asm/smp_twd.h> | 21 | #include <asm/smp_twd.h> |
22 | #include <asm/hardware/gic.h> | 22 | #include <asm/hardware/gic.h> |
23 | 23 | ||
24 | #define TWD_TIMER_LOAD 0x00 | ||
25 | #define TWD_TIMER_COUNTER 0x04 | ||
26 | #define TWD_TIMER_CONTROL 0x08 | ||
27 | #define TWD_TIMER_INTSTAT 0x0C | ||
28 | |||
29 | #define TWD_WDOG_LOAD 0x20 | ||
30 | #define TWD_WDOG_COUNTER 0x24 | ||
31 | #define TWD_WDOG_CONTROL 0x28 | ||
32 | #define TWD_WDOG_INTSTAT 0x2C | ||
33 | #define TWD_WDOG_RESETSTAT 0x30 | ||
34 | #define TWD_WDOG_DISABLE 0x34 | ||
35 | |||
36 | #define TWD_TIMER_CONTROL_ENABLE (1 << 0) | ||
37 | #define TWD_TIMER_CONTROL_ONESHOT (0 << 1) | ||
38 | #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) | ||
39 | #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) | ||
40 | |||
41 | /* set up by the platform code */ | 24 | /* set up by the platform code */ |
42 | void __iomem *twd_base; | 25 | void __iomem *twd_base; |
43 | 26 | ||
diff --git a/arch/arm/lib/backtrace.S b/arch/arm/lib/backtrace.S index aaf7220d9e30..a673297b0cf1 100644 --- a/arch/arm/lib/backtrace.S +++ b/arch/arm/lib/backtrace.S | |||
@@ -110,13 +110,13 @@ no_frame: ldmfd sp!, {r4 - r8, pc} | |||
110 | ENDPROC(__backtrace) | 110 | ENDPROC(__backtrace) |
111 | ENDPROC(c_backtrace) | 111 | ENDPROC(c_backtrace) |
112 | 112 | ||
113 | .section __ex_table,"a" | 113 | .pushsection __ex_table,"a" |
114 | .align 3 | 114 | .align 3 |
115 | .long 1001b, 1006b | 115 | .long 1001b, 1006b |
116 | .long 1002b, 1006b | 116 | .long 1002b, 1006b |
117 | .long 1003b, 1006b | 117 | .long 1003b, 1006b |
118 | .long 1004b, 1006b | 118 | .long 1004b, 1006b |
119 | .previous | 119 | .popsection |
120 | 120 | ||
121 | #define instr r4 | 121 | #define instr r4 |
122 | #define reg r5 | 122 | #define reg r5 |
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S index 1279abd8b886..14a0d988c82c 100644 --- a/arch/arm/lib/clear_user.S +++ b/arch/arm/lib/clear_user.S | |||
@@ -45,9 +45,10 @@ USER( strnebt r2, [r0]) | |||
45 | mov r0, #0 | 45 | mov r0, #0 |
46 | ldmfd sp!, {r1, pc} | 46 | ldmfd sp!, {r1, pc} |
47 | ENDPROC(__clear_user) | 47 | ENDPROC(__clear_user) |
48 | ENDPROC(__clear_user_std) | ||
48 | 49 | ||
49 | .section .fixup,"ax" | 50 | .pushsection .fixup,"ax" |
50 | .align 0 | 51 | .align 0 |
51 | 9001: ldmfd sp!, {r0, pc} | 52 | 9001: ldmfd sp!, {r0, pc} |
52 | .previous | 53 | .popsection |
53 | 54 | ||
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S index e4fe124acedc..66a477a3e3cc 100644 --- a/arch/arm/lib/copy_from_user.S +++ b/arch/arm/lib/copy_from_user.S | |||
@@ -90,7 +90,7 @@ ENTRY(__copy_from_user) | |||
90 | 90 | ||
91 | ENDPROC(__copy_from_user) | 91 | ENDPROC(__copy_from_user) |
92 | 92 | ||
93 | .section .fixup,"ax" | 93 | .pushsection .fixup,"ax" |
94 | .align 0 | 94 | .align 0 |
95 | copy_abort_preamble | 95 | copy_abort_preamble |
96 | ldmfd sp!, {r1, r2} | 96 | ldmfd sp!, {r1, r2} |
@@ -100,5 +100,5 @@ ENDPROC(__copy_from_user) | |||
100 | bl __memzero | 100 | bl __memzero |
101 | ldr r0, [sp], #4 | 101 | ldr r0, [sp], #4 |
102 | copy_abort_end | 102 | copy_abort_end |
103 | .previous | 103 | .popsection |
104 | 104 | ||
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S index 1a71e1584442..d066df686e17 100644 --- a/arch/arm/lib/copy_to_user.S +++ b/arch/arm/lib/copy_to_user.S | |||
@@ -93,13 +93,14 @@ WEAK(__copy_to_user) | |||
93 | #include "copy_template.S" | 93 | #include "copy_template.S" |
94 | 94 | ||
95 | ENDPROC(__copy_to_user) | 95 | ENDPROC(__copy_to_user) |
96 | ENDPROC(__copy_to_user_std) | ||
96 | 97 | ||
97 | .section .fixup,"ax" | 98 | .pushsection .fixup,"ax" |
98 | .align 0 | 99 | .align 0 |
99 | copy_abort_preamble | 100 | copy_abort_preamble |
100 | ldmfd sp!, {r1, r2, r3} | 101 | ldmfd sp!, {r1, r2, r3} |
101 | sub r0, r0, r1 | 102 | sub r0, r0, r1 |
102 | rsb r0, r0, r2 | 103 | rsb r0, r0, r2 |
103 | copy_abort_end | 104 | copy_abort_end |
104 | .previous | 105 | .popsection |
105 | 106 | ||
diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S index fd0e9dcd9fdc..59ff6fdc1e63 100644 --- a/arch/arm/lib/csumpartialcopyuser.S +++ b/arch/arm/lib/csumpartialcopyuser.S | |||
@@ -68,7 +68,7 @@ | |||
68 | * so properly, we would have to add in whatever registers were loaded before | 68 | * so properly, we would have to add in whatever registers were loaded before |
69 | * the fault, which, with the current asm above is not predictable. | 69 | * the fault, which, with the current asm above is not predictable. |
70 | */ | 70 | */ |
71 | .section .fixup,"ax" | 71 | .pushsection .fixup,"ax" |
72 | .align 4 | 72 | .align 4 |
73 | 9001: mov r4, #-EFAULT | 73 | 9001: mov r4, #-EFAULT |
74 | ldr r5, [fp, #4] @ *err_ptr | 74 | ldr r5, [fp, #4] @ *err_ptr |
@@ -80,4 +80,4 @@ | |||
80 | strneb r0, [r1], #1 | 80 | strneb r0, [r1], #1 |
81 | bne 9002b | 81 | bne 9002b |
82 | load_regs | 82 | load_regs |
83 | .previous | 83 | .popsection |
diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S index a1814d927122..b1631a7dbe75 100644 --- a/arch/arm/lib/getuser.S +++ b/arch/arm/lib/getuser.S | |||
@@ -64,9 +64,9 @@ __get_user_bad: | |||
64 | mov pc, lr | 64 | mov pc, lr |
65 | ENDPROC(__get_user_bad) | 65 | ENDPROC(__get_user_bad) |
66 | 66 | ||
67 | .section __ex_table, "a" | 67 | .pushsection __ex_table, "a" |
68 | .long 1b, __get_user_bad | 68 | .long 1b, __get_user_bad |
69 | .long 2b, __get_user_bad | 69 | .long 2b, __get_user_bad |
70 | .long 3b, __get_user_bad | 70 | .long 3b, __get_user_bad |
71 | .long 4b, __get_user_bad | 71 | .long 4b, __get_user_bad |
72 | .previous | 72 | .popsection |
diff --git a/arch/arm/lib/putuser.S b/arch/arm/lib/putuser.S index 02fedbf07c0d..5a01a23c6c06 100644 --- a/arch/arm/lib/putuser.S +++ b/arch/arm/lib/putuser.S | |||
@@ -81,11 +81,11 @@ __put_user_bad: | |||
81 | mov pc, lr | 81 | mov pc, lr |
82 | ENDPROC(__put_user_bad) | 82 | ENDPROC(__put_user_bad) |
83 | 83 | ||
84 | .section __ex_table, "a" | 84 | .pushsection __ex_table, "a" |
85 | .long 1b, __put_user_bad | 85 | .long 1b, __put_user_bad |
86 | .long 2b, __put_user_bad | 86 | .long 2b, __put_user_bad |
87 | .long 3b, __put_user_bad | 87 | .long 3b, __put_user_bad |
88 | .long 4b, __put_user_bad | 88 | .long 4b, __put_user_bad |
89 | .long 5b, __put_user_bad | 89 | .long 5b, __put_user_bad |
90 | .long 6b, __put_user_bad | 90 | .long 6b, __put_user_bad |
91 | .previous | 91 | .popsection |
diff --git a/arch/arm/lib/strncpy_from_user.S b/arch/arm/lib/strncpy_from_user.S index 1c9814f346c6..f202d7bd1647 100644 --- a/arch/arm/lib/strncpy_from_user.S +++ b/arch/arm/lib/strncpy_from_user.S | |||
@@ -33,11 +33,11 @@ ENTRY(__strncpy_from_user) | |||
33 | mov pc, lr | 33 | mov pc, lr |
34 | ENDPROC(__strncpy_from_user) | 34 | ENDPROC(__strncpy_from_user) |
35 | 35 | ||
36 | .section .fixup,"ax" | 36 | .pushsection .fixup,"ax" |
37 | .align 0 | 37 | .align 0 |
38 | 9001: mov r3, #0 | 38 | 9001: mov r3, #0 |
39 | strb r3, [r0, #0] @ null terminate | 39 | strb r3, [r0, #0] @ null terminate |
40 | mov r0, #-EFAULT | 40 | mov r0, #-EFAULT |
41 | mov pc, lr | 41 | mov pc, lr |
42 | .previous | 42 | .popsection |
43 | 43 | ||
diff --git a/arch/arm/lib/strnlen_user.S b/arch/arm/lib/strnlen_user.S index 7855b2906659..0ecbb459c4f1 100644 --- a/arch/arm/lib/strnlen_user.S +++ b/arch/arm/lib/strnlen_user.S | |||
@@ -33,8 +33,8 @@ ENTRY(__strnlen_user) | |||
33 | mov pc, lr | 33 | mov pc, lr |
34 | ENDPROC(__strnlen_user) | 34 | ENDPROC(__strnlen_user) |
35 | 35 | ||
36 | .section .fixup,"ax" | 36 | .pushsection .fixup,"ax" |
37 | .align 0 | 37 | .align 0 |
38 | 9001: mov r0, #0 | 38 | 9001: mov r0, #0 |
39 | mov pc, lr | 39 | mov pc, lr |
40 | .previous | 40 | .popsection |
diff --git a/arch/arm/lib/uaccess.S b/arch/arm/lib/uaccess.S index ffdd27498cee..fee9f6f88adb 100644 --- a/arch/arm/lib/uaccess.S +++ b/arch/arm/lib/uaccess.S | |||
@@ -279,10 +279,10 @@ USER( strgtbt r3, [r0], #1) @ May fault | |||
279 | b .Lc2u_finished | 279 | b .Lc2u_finished |
280 | ENDPROC(__copy_to_user) | 280 | ENDPROC(__copy_to_user) |
281 | 281 | ||
282 | .section .fixup,"ax" | 282 | .pushsection .fixup,"ax" |
283 | .align 0 | 283 | .align 0 |
284 | 9001: ldmfd sp!, {r0, r4 - r7, pc} | 284 | 9001: ldmfd sp!, {r0, r4 - r7, pc} |
285 | .previous | 285 | .popsection |
286 | 286 | ||
287 | /* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n); | 287 | /* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n); |
288 | * Purpose : copy a block from user memory to kernel memory | 288 | * Purpose : copy a block from user memory to kernel memory |
@@ -545,7 +545,7 @@ USER( ldrgtbt r3, [r1], #1) @ May fault | |||
545 | b .Lcfu_finished | 545 | b .Lcfu_finished |
546 | ENDPROC(__copy_from_user) | 546 | ENDPROC(__copy_from_user) |
547 | 547 | ||
548 | .section .fixup,"ax" | 548 | .pushsection .fixup,"ax" |
549 | .align 0 | 549 | .align 0 |
550 | /* | 550 | /* |
551 | * We took an exception. r0 contains a pointer to | 551 | * We took an exception. r0 contains a pointer to |
@@ -559,5 +559,5 @@ ENDPROC(__copy_from_user) | |||
559 | blne __memzero | 559 | blne __memzero |
560 | mov r0, r4 | 560 | mov r0, r4 |
561 | ldmfd sp!, {r4 - r7, pc} | 561 | ldmfd sp!, {r4 - r7, pc} |
562 | .previous | 562 | .popsection |
563 | 563 | ||
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index 027dd570dcc3..d4004557532a 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
@@ -16,8 +16,8 @@ obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_d | |||
16 | obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o | 16 | obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o |
17 | obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o | 17 | obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o |
18 | obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o | 18 | obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o |
19 | obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o | 19 | obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o |
20 | obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o | 20 | obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o |
21 | obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o | 21 | obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o |
22 | obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o | 22 | obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o |
23 | obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o | 23 | obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o |
diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S index 987fab3d846a..9c5b48e68a71 100644 --- a/arch/arm/mach-at91/pm_slowclock.S +++ b/arch/arm/mach-at91/pm_slowclock.S | |||
@@ -175,8 +175,6 @@ ENTRY(at91_slow_clock) | |||
175 | orr r3, r3, #(1 << 29) /* bit 29 always set */ | 175 | orr r3, r3, #(1 << 29) /* bit 29 always set */ |
176 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] | 176 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] |
177 | 177 | ||
178 | wait_pllalock | ||
179 | |||
180 | /* Save PLLB setting and disable it */ | 178 | /* Save PLLB setting and disable it */ |
181 | ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 179 | ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] |
182 | str r3, .saved_pllbr | 180 | str r3, .saved_pllbr |
@@ -184,8 +182,6 @@ ENTRY(at91_slow_clock) | |||
184 | mov r3, #AT91_PMC_PLLCOUNT | 182 | mov r3, #AT91_PMC_PLLCOUNT |
185 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 183 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] |
186 | 184 | ||
187 | wait_pllblock | ||
188 | |||
189 | /* Turn off the main oscillator */ | 185 | /* Turn off the main oscillator */ |
190 | ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] | 186 | ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] |
191 | bic r3, r3, #AT91_PMC_MOSCEN | 187 | bic r3, r3, #AT91_PMC_MOSCEN |
@@ -205,13 +201,25 @@ ENTRY(at91_slow_clock) | |||
205 | ldr r3, .saved_pllbr | 201 | ldr r3, .saved_pllbr |
206 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] | 202 | str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] |
207 | 203 | ||
204 | tst r3, #(AT91_PMC_MUL & 0xff0000) | ||
205 | bne 1f | ||
206 | tst r3, #(AT91_PMC_MUL & ~0xff0000) | ||
207 | beq 2f | ||
208 | 1: | ||
208 | wait_pllblock | 209 | wait_pllblock |
210 | 2: | ||
209 | 211 | ||
210 | /* Restore PLLA setting */ | 212 | /* Restore PLLA setting */ |
211 | ldr r3, .saved_pllar | 213 | ldr r3, .saved_pllar |
212 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] | 214 | str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] |
213 | 215 | ||
216 | tst r3, #(AT91_PMC_MUL & 0xff0000) | ||
217 | bne 3f | ||
218 | tst r3, #(AT91_PMC_MUL & ~0xff0000) | ||
219 | beq 4f | ||
220 | 3: | ||
214 | wait_pllalock | 221 | wait_pllalock |
222 | 4: | ||
215 | 223 | ||
216 | #ifdef SLOWDOWN_MASTER_CLOCK | 224 | #ifdef SLOWDOWN_MASTER_CLOCK |
217 | /* | 225 | /* |
diff --git a/arch/arm/mach-bcmring/dma.c b/arch/arm/mach-bcmring/dma.c index 2ccf670ce1ac..29c0a911df26 100644 --- a/arch/arm/mach-bcmring/dma.c +++ b/arch/arm/mach-bcmring/dma.c | |||
@@ -2221,11 +2221,15 @@ EXPORT_SYMBOL(dma_map_create_descriptor_ring); | |||
2221 | int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | 2221 | int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ |
2222 | int dirtied /* non-zero if any of the pages were modified */ | 2222 | int dirtied /* non-zero if any of the pages were modified */ |
2223 | ) { | 2223 | ) { |
2224 | |||
2225 | int rc = 0; | ||
2224 | int regionIdx; | 2226 | int regionIdx; |
2225 | int segmentIdx; | 2227 | int segmentIdx; |
2226 | DMA_Region_t *region; | 2228 | DMA_Region_t *region; |
2227 | DMA_Segment_t *segment; | 2229 | DMA_Segment_t *segment; |
2228 | 2230 | ||
2231 | down(&memMap->lock); | ||
2232 | |||
2229 | for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) { | 2233 | for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) { |
2230 | region = &memMap->region[regionIdx]; | 2234 | region = &memMap->region[regionIdx]; |
2231 | 2235 | ||
@@ -2239,7 +2243,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
2239 | printk(KERN_ERR | 2243 | printk(KERN_ERR |
2240 | "%s: vmalloc'd pages are not yet supported\n", | 2244 | "%s: vmalloc'd pages are not yet supported\n", |
2241 | __func__); | 2245 | __func__); |
2242 | return -EINVAL; | 2246 | rc = -EINVAL; |
2247 | goto out; | ||
2243 | } | 2248 | } |
2244 | 2249 | ||
2245 | case DMA_MEM_TYPE_KMALLOC: | 2250 | case DMA_MEM_TYPE_KMALLOC: |
@@ -2276,7 +2281,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
2276 | printk(KERN_ERR | 2281 | printk(KERN_ERR |
2277 | "%s: Unsupported memory type: %d\n", | 2282 | "%s: Unsupported memory type: %d\n", |
2278 | __func__, region->memType); | 2283 | __func__, region->memType); |
2279 | return -EINVAL; | 2284 | rc = -EINVAL; |
2285 | goto out; | ||
2280 | } | 2286 | } |
2281 | } | 2287 | } |
2282 | 2288 | ||
@@ -2314,9 +2320,10 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
2314 | memMap->numRegionsUsed = 0; | 2320 | memMap->numRegionsUsed = 0; |
2315 | memMap->inUse = 0; | 2321 | memMap->inUse = 0; |
2316 | 2322 | ||
2323 | out: | ||
2317 | up(&memMap->lock); | 2324 | up(&memMap->lock); |
2318 | 2325 | ||
2319 | return 0; | 2326 | return rc; |
2320 | } | 2327 | } |
2321 | 2328 | ||
2322 | EXPORT_SYMBOL(dma_unmap); | 2329 | EXPORT_SYMBOL(dma_unmap); |
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c index 122e61a9f505..e8cb982f5e8e 100644 --- a/arch/arm/mach-davinci/da830.c +++ b/arch/arm/mach-davinci/da830.c | |||
@@ -410,7 +410,7 @@ static struct clk_lookup da830_clks[] = { | |||
410 | CLK("davinci-mcasp.0", NULL, &mcasp0_clk), | 410 | CLK("davinci-mcasp.0", NULL, &mcasp0_clk), |
411 | CLK("davinci-mcasp.1", NULL, &mcasp1_clk), | 411 | CLK("davinci-mcasp.1", NULL, &mcasp1_clk), |
412 | CLK("davinci-mcasp.2", NULL, &mcasp2_clk), | 412 | CLK("davinci-mcasp.2", NULL, &mcasp2_clk), |
413 | CLK("musb_hdrc", NULL, &usb20_clk), | 413 | CLK(NULL, "usb20", &usb20_clk), |
414 | CLK(NULL, "aemif", &aemif_clk), | 414 | CLK(NULL, "aemif", &aemif_clk), |
415 | CLK(NULL, "aintc", &aintc_clk), | 415 | CLK(NULL, "aintc", &aintc_clk), |
416 | CLK(NULL, "secu_mgr", &secu_mgr_clk), | 416 | CLK(NULL, "secu_mgr", &secu_mgr_clk), |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index 27772e18e45b..0d6ee583f65c 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -758,7 +758,6 @@ static u8 dm365_default_priorities[DAVINCI_N_AINTC_IRQ] = { | |||
758 | [IRQ_MMCINT] = 7, | 758 | [IRQ_MMCINT] = 7, |
759 | [IRQ_DM365_MMCINT1] = 7, | 759 | [IRQ_DM365_MMCINT1] = 7, |
760 | [IRQ_DM365_PWMINT3] = 7, | 760 | [IRQ_DM365_PWMINT3] = 7, |
761 | [IRQ_DDRINT] = 4, | ||
762 | [IRQ_AEMIFINT] = 2, | 761 | [IRQ_AEMIFINT] = 2, |
763 | [IRQ_DM365_SDIOINT1] = 2, | 762 | [IRQ_DM365_SDIOINT1] = 2, |
764 | [IRQ_TINT0_TINT12] = 7, | 763 | [IRQ_TINT0_TINT12] = 7, |
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c index 02d939853b88..53137387aee1 100644 --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c | |||
@@ -1267,7 +1267,8 @@ int edma_start(unsigned channel) | |||
1267 | /* EDMA channel with event association */ | 1267 | /* EDMA channel with event association */ |
1268 | pr_debug("EDMA: ER%d %08x\n", j, | 1268 | pr_debug("EDMA: ER%d %08x\n", j, |
1269 | edma_shadow0_read_array(ctlr, SH_ER, j)); | 1269 | edma_shadow0_read_array(ctlr, SH_ER, j)); |
1270 | /* Clear any pending error */ | 1270 | /* Clear any pending event or error */ |
1271 | edma_write_array(ctlr, EDMA_ECR, j, mask); | ||
1271 | edma_write_array(ctlr, EDMA_EMCR, j, mask); | 1272 | edma_write_array(ctlr, EDMA_EMCR, j, mask); |
1272 | /* Clear any SER */ | 1273 | /* Clear any SER */ |
1273 | edma_shadow0_write_array(ctlr, SH_SECR, j, mask); | 1274 | edma_shadow0_write_array(ctlr, SH_SECR, j, mask); |
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index cc9be7fee627..03acfd39042b 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Author: Mark A. Greer <mgreer@mvista.com> | 4 | * Author: Mark A. Greer <mgreer@mvista.com> |
5 | * | 5 | * |
6 | * 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under | 6 | * 2007, 2009-2010 (c) MontaVista Software, Inc. This file is licensed under |
7 | * the terms of the GNU General Public License version 2. This program | 7 | * the terms of the GNU General Public License version 2. This program |
8 | * is licensed "as is" without any warranty of any kind, whether express | 8 | * is licensed "as is" without any warranty of any kind, whether express |
9 | * or implied. | 9 | * or implied. |
@@ -13,7 +13,9 @@ | |||
13 | 13 | ||
14 | #include <video/da8xx-fb.h> | 14 | #include <video/da8xx-fb.h> |
15 | 15 | ||
16 | #include <linux/platform_device.h> | ||
16 | #include <linux/davinci_emac.h> | 17 | #include <linux/davinci_emac.h> |
18 | |||
17 | #include <mach/serial.h> | 19 | #include <mach/serial.h> |
18 | #include <mach/edma.h> | 20 | #include <mach/edma.h> |
19 | #include <mach/i2c.h> | 21 | #include <mach/i2c.h> |
@@ -144,6 +146,10 @@ extern const short da850_mmcsd0_pins[]; | |||
144 | extern const short da850_nand_pins[]; | 146 | extern const short da850_nand_pins[]; |
145 | extern const short da850_nor_pins[]; | 147 | extern const short da850_nor_pins[]; |
146 | 148 | ||
149 | #ifdef CONFIG_DAVINCI_MUX | ||
147 | int da8xx_pinmux_setup(const short pins[]); | 150 | int da8xx_pinmux_setup(const short pins[]); |
151 | #else | ||
152 | static inline int da8xx_pinmux_setup(const short pins[]) { return 0; } | ||
153 | #endif | ||
148 | 154 | ||
149 | #endif /* __ASM_ARCH_DAVINCI_DA8XX_H */ | 155 | #endif /* __ASM_ARCH_DAVINCI_DA8XX_H */ |
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 42d985beece5..9e0b106b4f5f 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c | |||
@@ -253,8 +253,6 @@ static void __init timer_init(void) | |||
253 | irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq; | 253 | irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq; |
254 | setup_irq(irq, &t->irqaction); | 254 | setup_irq(irq, &t->irqaction); |
255 | } | 255 | } |
256 | |||
257 | timer32_config(&timers[i]); | ||
258 | } | 256 | } |
259 | } | 257 | } |
260 | 258 | ||
@@ -331,6 +329,7 @@ static void __init davinci_timer_init(void) | |||
331 | unsigned int clocksource_id; | 329 | unsigned int clocksource_id; |
332 | static char err[] __initdata = KERN_ERR | 330 | static char err[] __initdata = KERN_ERR |
333 | "%s: can't register clocksource!\n"; | 331 | "%s: can't register clocksource!\n"; |
332 | int i; | ||
334 | 333 | ||
335 | clockevent_id = soc_info->timer_info->clockevent_id; | 334 | clockevent_id = soc_info->timer_info->clockevent_id; |
336 | clocksource_id = soc_info->timer_info->clocksource_id; | 335 | clocksource_id = soc_info->timer_info->clocksource_id; |
@@ -389,6 +388,9 @@ static void __init davinci_timer_init(void) | |||
389 | 388 | ||
390 | clockevent_davinci.cpumask = cpumask_of(0); | 389 | clockevent_davinci.cpumask = cpumask_of(0); |
391 | clockevents_register_device(&clockevent_davinci); | 390 | clockevents_register_device(&clockevent_davinci); |
391 | |||
392 | for (i=0; i< ARRAY_SIZE(timers); i++) | ||
393 | timer32_config(&timers[i]); | ||
392 | } | 394 | } |
393 | 395 | ||
394 | struct sys_timer davinci_timer = { | 396 | struct sys_timer davinci_timer = { |
diff --git a/arch/arm/mach-ep93xx/gpio.c b/arch/arm/mach-ep93xx/gpio.c index cc377ae8c428..cf547ad7ebd4 100644 --- a/arch/arm/mach-ep93xx/gpio.c +++ b/arch/arm/mach-ep93xx/gpio.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | 26 | ||
27 | /************************************************************************* | 27 | /************************************************************************* |
28 | * GPIO handling for EP93xx | 28 | * Interrupt handling for EP93xx on-chip GPIOs |
29 | *************************************************************************/ | 29 | *************************************************************************/ |
30 | static unsigned char gpio_int_unmasked[3]; | 30 | static unsigned char gpio_int_unmasked[3]; |
31 | static unsigned char gpio_int_enabled[3]; | 31 | static unsigned char gpio_int_enabled[3]; |
@@ -40,7 +40,7 @@ static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 }; | |||
40 | static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; | 40 | static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; |
41 | static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 }; | 41 | static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 }; |
42 | 42 | ||
43 | void ep93xx_gpio_update_int_params(unsigned port) | 43 | static void ep93xx_gpio_update_int_params(unsigned port) |
44 | { | 44 | { |
45 | BUG_ON(port > 2); | 45 | BUG_ON(port > 2); |
46 | 46 | ||
@@ -56,7 +56,7 @@ void ep93xx_gpio_update_int_params(unsigned port) | |||
56 | EP93XX_GPIO_REG(int_en_register_offset[port])); | 56 | EP93XX_GPIO_REG(int_en_register_offset[port])); |
57 | } | 57 | } |
58 | 58 | ||
59 | void ep93xx_gpio_int_mask(unsigned line) | 59 | static inline void ep93xx_gpio_int_mask(unsigned line) |
60 | { | 60 | { |
61 | gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7)); | 61 | gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7)); |
62 | } | 62 | } |
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig index 3872af1cf2c3..170f68e46dd5 100644 --- a/arch/arm/mach-mx3/Kconfig +++ b/arch/arm/mach-mx3/Kconfig | |||
@@ -62,6 +62,15 @@ config MACH_MX31_3DS | |||
62 | Include support for MX31PDK (3DS) platform. This includes specific | 62 | Include support for MX31PDK (3DS) platform. This includes specific |
63 | configurations for the board and its peripherals. | 63 | configurations for the board and its peripherals. |
64 | 64 | ||
65 | config MACH_MX31_3DS_MXC_NAND_USE_BBT | ||
66 | bool "Make the MXC NAND driver use the in flash Bad Block Table" | ||
67 | depends on MACH_MX31_3DS | ||
68 | depends on MTD_NAND_MXC | ||
69 | help | ||
70 | Enable this if you want that the MXC NAND driver uses the in flash | ||
71 | Bad Block Table to know what blocks are bad instead of scanning the | ||
72 | entire flash looking for bad block markers. | ||
73 | |||
65 | config MACH_MX31MOBOARD | 74 | config MACH_MX31MOBOARD |
66 | bool "Support mx31moboard platforms (EPFL Mobots group)" | 75 | bool "Support mx31moboard platforms (EPFL Mobots group)" |
67 | select ARCH_MX31 | 76 | select ARCH_MX31 |
@@ -95,6 +104,7 @@ config MACH_PCM043 | |||
95 | config MACH_ARMADILLO5X0 | 104 | config MACH_ARMADILLO5X0 |
96 | bool "Support Atmark Armadillo-500 Development Base Board" | 105 | bool "Support Atmark Armadillo-500 Development Base Board" |
97 | select ARCH_MX31 | 106 | select ARCH_MX31 |
107 | select MXC_ULPI if USB_ULPI | ||
98 | help | 108 | help |
99 | Include support for Atmark Armadillo-500 platform. This includes | 109 | Include support for Atmark Armadillo-500 platform. This includes |
100 | specific configurations for the board and its peripherals. | 110 | specific configurations for the board and its peripherals. |
diff --git a/arch/arm/mach-mx3/clock-imx31.c b/arch/arm/mach-mx3/clock-imx31.c index 80dba9966b5e..9a9eb6de6127 100644 --- a/arch/arm/mach-mx3/clock-imx31.c +++ b/arch/arm/mach-mx3/clock-imx31.c | |||
@@ -468,6 +468,7 @@ static struct clk ahb_clk = { | |||
468 | } | 468 | } |
469 | 469 | ||
470 | DEFINE_CLOCK(perclk_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); | 470 | DEFINE_CLOCK(perclk_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); |
471 | DEFINE_CLOCK(ckil_clk, 0, NULL, 0, clk_ckil_get_rate, NULL, NULL); | ||
471 | 472 | ||
472 | DEFINE_CLOCK(sdhc1_clk, 0, MXC_CCM_CGR0, 0, NULL, NULL, &perclk_clk); | 473 | DEFINE_CLOCK(sdhc1_clk, 0, MXC_CCM_CGR0, 0, NULL, NULL, &perclk_clk); |
473 | DEFINE_CLOCK(sdhc2_clk, 1, MXC_CCM_CGR0, 2, NULL, NULL, &perclk_clk); | 474 | DEFINE_CLOCK(sdhc2_clk, 1, MXC_CCM_CGR0, 2, NULL, NULL, &perclk_clk); |
@@ -490,7 +491,7 @@ DEFINE_CLOCK(mpeg4_clk, 0, MXC_CCM_CGR1, 0, NULL, NULL, &ahb_clk); | |||
490 | DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk); | 491 | DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk); |
491 | DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk); | 492 | DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk); |
492 | DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &serial_pll_clk); | 493 | DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &serial_pll_clk); |
493 | DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ipg_clk); | 494 | DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ckil_clk); |
494 | DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk); | 495 | DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk); |
495 | DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk); | 496 | DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk); |
496 | DEFINE_CLOCK(usb_clk2, 0, MXC_CCM_CGR1, 18, usb_get_rate, NULL, &ahb_clk); | 497 | DEFINE_CLOCK(usb_clk2, 0, MXC_CCM_CGR1, 18, usb_get_rate, NULL, &ahb_clk); |
@@ -514,7 +515,6 @@ DEFINE_CLOCK(usb_clk1, 0, NULL, 0, usb_get_rate, NULL, &usb_pll_clk) | |||
514 | DEFINE_CLOCK(nfc_clk, 0, NULL, 0, nfc_get_rate, NULL, &ahb_clk); | 515 | DEFINE_CLOCK(nfc_clk, 0, NULL, 0, nfc_get_rate, NULL, &ahb_clk); |
515 | DEFINE_CLOCK(scc_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); | 516 | DEFINE_CLOCK(scc_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); |
516 | DEFINE_CLOCK(ipg_clk, 0, NULL, 0, ipg_get_rate, NULL, &ahb_clk); | 517 | DEFINE_CLOCK(ipg_clk, 0, NULL, 0, ipg_get_rate, NULL, &ahb_clk); |
517 | DEFINE_CLOCK(ckil_clk, 0, NULL, 0, clk_ckil_get_rate, NULL, NULL); | ||
518 | 518 | ||
519 | #define _REGISTER_CLOCK(d, n, c) \ | 519 | #define _REGISTER_CLOCK(d, n, c) \ |
520 | { \ | 520 | { \ |
@@ -572,7 +572,6 @@ static struct clk_lookup lookups[] = { | |||
572 | _REGISTER_CLOCK(NULL, "iim", iim_clk) | 572 | _REGISTER_CLOCK(NULL, "iim", iim_clk) |
573 | _REGISTER_CLOCK(NULL, "mpeg4", mpeg4_clk) | 573 | _REGISTER_CLOCK(NULL, "mpeg4", mpeg4_clk) |
574 | _REGISTER_CLOCK(NULL, "mbx", mbx_clk) | 574 | _REGISTER_CLOCK(NULL, "mbx", mbx_clk) |
575 | _REGISTER_CLOCK("mxc_rtc", NULL, ckil_clk) | ||
576 | }; | 575 | }; |
577 | 576 | ||
578 | int __init mx31_clocks_init(unsigned long fref) | 577 | int __init mx31_clocks_init(unsigned long fref) |
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c index 6adb586515ea..f8911154a9fa 100644 --- a/arch/arm/mach-mx3/devices.c +++ b/arch/arm/mach-mx3/devices.c | |||
@@ -575,11 +575,26 @@ struct platform_device imx_ssi_device1 = { | |||
575 | .resource = imx_ssi_resources1, | 575 | .resource = imx_ssi_resources1, |
576 | }; | 576 | }; |
577 | 577 | ||
578 | static int mx3_devices_init(void) | 578 | static struct resource imx_wdt_resources[] = { |
579 | { | ||
580 | .flags = IORESOURCE_MEM, | ||
581 | }, | ||
582 | }; | ||
583 | |||
584 | struct platform_device imx_wdt_device0 = { | ||
585 | .name = "imx-wdt", | ||
586 | .id = 0, | ||
587 | .num_resources = ARRAY_SIZE(imx_wdt_resources), | ||
588 | .resource = imx_wdt_resources, | ||
589 | }; | ||
590 | |||
591 | static int __init mx3_devices_init(void) | ||
579 | { | 592 | { |
580 | if (cpu_is_mx31()) { | 593 | if (cpu_is_mx31()) { |
581 | mxc_nand_resources[0].start = MX31_NFC_BASE_ADDR; | 594 | mxc_nand_resources[0].start = MX31_NFC_BASE_ADDR; |
582 | mxc_nand_resources[0].end = MX31_NFC_BASE_ADDR + 0xfff; | 595 | mxc_nand_resources[0].end = MX31_NFC_BASE_ADDR + 0xfff; |
596 | imx_wdt_resources[0].start = MX31_WDOG_BASE_ADDR; | ||
597 | imx_wdt_resources[0].end = MX31_WDOG_BASE_ADDR + 0x3fff; | ||
583 | mxc_register_device(&mxc_rnga_device, NULL); | 598 | mxc_register_device(&mxc_rnga_device, NULL); |
584 | } | 599 | } |
585 | if (cpu_is_mx35()) { | 600 | if (cpu_is_mx35()) { |
@@ -597,6 +612,8 @@ static int mx3_devices_init(void) | |||
597 | imx_ssi_resources0[1].end = MX35_INT_SSI1; | 612 | imx_ssi_resources0[1].end = MX35_INT_SSI1; |
598 | imx_ssi_resources1[1].start = MX35_INT_SSI2; | 613 | imx_ssi_resources1[1].start = MX35_INT_SSI2; |
599 | imx_ssi_resources1[1].end = MX35_INT_SSI2; | 614 | imx_ssi_resources1[1].end = MX35_INT_SSI2; |
615 | imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR; | ||
616 | imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff; | ||
600 | } | 617 | } |
601 | 618 | ||
602 | return 0; | 619 | return 0; |
diff --git a/arch/arm/mach-mx3/devices.h b/arch/arm/mach-mx3/devices.h index 42cf175eac6b..4f77eb501274 100644 --- a/arch/arm/mach-mx3/devices.h +++ b/arch/arm/mach-mx3/devices.h | |||
@@ -25,4 +25,5 @@ extern struct platform_device mxc_spi_device1; | |||
25 | extern struct platform_device mxc_spi_device2; | 25 | extern struct platform_device mxc_spi_device2; |
26 | extern struct platform_device imx_ssi_device0; | 26 | extern struct platform_device imx_ssi_device0; |
27 | extern struct platform_device imx_ssi_device1; | 27 | extern struct platform_device imx_ssi_device1; |
28 | 28 | extern struct platform_device imx_ssi_device1; | |
29 | extern struct platform_device imx_wdt_device0; | ||
diff --git a/arch/arm/mach-mx3/mach-armadillo5x0.c b/arch/arm/mach-mx3/mach-armadillo5x0.c index 3d72b0b89705..5f72ec91af2d 100644 --- a/arch/arm/mach-mx3/mach-armadillo5x0.c +++ b/arch/arm/mach-mx3/mach-armadillo5x0.c | |||
@@ -36,6 +36,9 @@ | |||
36 | #include <linux/input.h> | 36 | #include <linux/input.h> |
37 | #include <linux/gpio_keys.h> | 37 | #include <linux/gpio_keys.h> |
38 | #include <linux/i2c.h> | 38 | #include <linux/i2c.h> |
39 | #include <linux/usb/otg.h> | ||
40 | #include <linux/usb/ulpi.h> | ||
41 | #include <linux/delay.h> | ||
39 | 42 | ||
40 | #include <mach/hardware.h> | 43 | #include <mach/hardware.h> |
41 | #include <asm/mach-types.h> | 44 | #include <asm/mach-types.h> |
@@ -52,6 +55,8 @@ | |||
52 | #include <mach/ipu.h> | 55 | #include <mach/ipu.h> |
53 | #include <mach/mx3fb.h> | 56 | #include <mach/mx3fb.h> |
54 | #include <mach/mxc_nand.h> | 57 | #include <mach/mxc_nand.h> |
58 | #include <mach/mxc_ehci.h> | ||
59 | #include <mach/ulpi.h> | ||
55 | 60 | ||
56 | #include "devices.h" | 61 | #include "devices.h" |
57 | #include "crm_regs.h" | 62 | #include "crm_regs.h" |
@@ -103,8 +108,158 @@ static int armadillo5x0_pins[] = { | |||
103 | /* I2C2 */ | 108 | /* I2C2 */ |
104 | MX31_PIN_CSPI2_MOSI__SCL, | 109 | MX31_PIN_CSPI2_MOSI__SCL, |
105 | MX31_PIN_CSPI2_MISO__SDA, | 110 | MX31_PIN_CSPI2_MISO__SDA, |
111 | /* OTG */ | ||
112 | MX31_PIN_USBOTG_DATA0__USBOTG_DATA0, | ||
113 | MX31_PIN_USBOTG_DATA1__USBOTG_DATA1, | ||
114 | MX31_PIN_USBOTG_DATA2__USBOTG_DATA2, | ||
115 | MX31_PIN_USBOTG_DATA3__USBOTG_DATA3, | ||
116 | MX31_PIN_USBOTG_DATA4__USBOTG_DATA4, | ||
117 | MX31_PIN_USBOTG_DATA5__USBOTG_DATA5, | ||
118 | MX31_PIN_USBOTG_DATA6__USBOTG_DATA6, | ||
119 | MX31_PIN_USBOTG_DATA7__USBOTG_DATA7, | ||
120 | MX31_PIN_USBOTG_CLK__USBOTG_CLK, | ||
121 | MX31_PIN_USBOTG_DIR__USBOTG_DIR, | ||
122 | MX31_PIN_USBOTG_NXT__USBOTG_NXT, | ||
123 | MX31_PIN_USBOTG_STP__USBOTG_STP, | ||
124 | /* USB host 2 */ | ||
125 | IOMUX_MODE(MX31_PIN_USBH2_CLK, IOMUX_CONFIG_FUNC), | ||
126 | IOMUX_MODE(MX31_PIN_USBH2_DIR, IOMUX_CONFIG_FUNC), | ||
127 | IOMUX_MODE(MX31_PIN_USBH2_NXT, IOMUX_CONFIG_FUNC), | ||
128 | IOMUX_MODE(MX31_PIN_USBH2_STP, IOMUX_CONFIG_FUNC), | ||
129 | IOMUX_MODE(MX31_PIN_USBH2_DATA0, IOMUX_CONFIG_FUNC), | ||
130 | IOMUX_MODE(MX31_PIN_USBH2_DATA1, IOMUX_CONFIG_FUNC), | ||
131 | IOMUX_MODE(MX31_PIN_STXD3, IOMUX_CONFIG_FUNC), | ||
132 | IOMUX_MODE(MX31_PIN_SRXD3, IOMUX_CONFIG_FUNC), | ||
133 | IOMUX_MODE(MX31_PIN_SCK3, IOMUX_CONFIG_FUNC), | ||
134 | IOMUX_MODE(MX31_PIN_SFS3, IOMUX_CONFIG_FUNC), | ||
135 | IOMUX_MODE(MX31_PIN_STXD6, IOMUX_CONFIG_FUNC), | ||
136 | IOMUX_MODE(MX31_PIN_SRXD6, IOMUX_CONFIG_FUNC), | ||
106 | }; | 137 | }; |
107 | 138 | ||
139 | /* USB */ | ||
140 | #if defined(CONFIG_USB_ULPI) | ||
141 | |||
142 | #define OTG_RESET IOMUX_TO_GPIO(MX31_PIN_STXD4) | ||
143 | #define USBH2_RESET IOMUX_TO_GPIO(MX31_PIN_SCK6) | ||
144 | #define USBH2_CS IOMUX_TO_GPIO(MX31_PIN_GPIO1_3) | ||
145 | |||
146 | #define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \ | ||
147 | PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU) | ||
148 | |||
149 | static int usbotg_init(struct platform_device *pdev) | ||
150 | { | ||
151 | int err; | ||
152 | |||
153 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA0, USB_PAD_CFG); | ||
154 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA1, USB_PAD_CFG); | ||
155 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA2, USB_PAD_CFG); | ||
156 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA3, USB_PAD_CFG); | ||
157 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA4, USB_PAD_CFG); | ||
158 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA5, USB_PAD_CFG); | ||
159 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA6, USB_PAD_CFG); | ||
160 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA7, USB_PAD_CFG); | ||
161 | mxc_iomux_set_pad(MX31_PIN_USBOTG_CLK, USB_PAD_CFG); | ||
162 | mxc_iomux_set_pad(MX31_PIN_USBOTG_DIR, USB_PAD_CFG); | ||
163 | mxc_iomux_set_pad(MX31_PIN_USBOTG_NXT, USB_PAD_CFG); | ||
164 | mxc_iomux_set_pad(MX31_PIN_USBOTG_STP, USB_PAD_CFG); | ||
165 | |||
166 | /* Chip already enabled by hardware */ | ||
167 | /* OTG phy reset*/ | ||
168 | err = gpio_request(OTG_RESET, "USB-OTG-RESET"); | ||
169 | if (err) { | ||
170 | pr_err("Failed to request the usb otg reset gpio\n"); | ||
171 | return err; | ||
172 | } | ||
173 | |||
174 | err = gpio_direction_output(OTG_RESET, 1/*HIGH*/); | ||
175 | if (err) { | ||
176 | pr_err("Failed to reset the usb otg phy\n"); | ||
177 | goto otg_free_reset; | ||
178 | } | ||
179 | |||
180 | gpio_set_value(OTG_RESET, 0/*LOW*/); | ||
181 | mdelay(5); | ||
182 | gpio_set_value(OTG_RESET, 1/*HIGH*/); | ||
183 | |||
184 | return 0; | ||
185 | |||
186 | otg_free_reset: | ||
187 | gpio_free(OTG_RESET); | ||
188 | return err; | ||
189 | } | ||
190 | |||
191 | static int usbh2_init(struct platform_device *pdev) | ||
192 | { | ||
193 | int err; | ||
194 | |||
195 | mxc_iomux_set_pad(MX31_PIN_USBH2_CLK, USB_PAD_CFG); | ||
196 | mxc_iomux_set_pad(MX31_PIN_USBH2_DIR, USB_PAD_CFG); | ||
197 | mxc_iomux_set_pad(MX31_PIN_USBH2_NXT, USB_PAD_CFG); | ||
198 | mxc_iomux_set_pad(MX31_PIN_USBH2_STP, USB_PAD_CFG); | ||
199 | mxc_iomux_set_pad(MX31_PIN_USBH2_DATA0, USB_PAD_CFG); | ||
200 | mxc_iomux_set_pad(MX31_PIN_USBH2_DATA1, USB_PAD_CFG); | ||
201 | mxc_iomux_set_pad(MX31_PIN_SRXD6, USB_PAD_CFG); | ||
202 | mxc_iomux_set_pad(MX31_PIN_STXD6, USB_PAD_CFG); | ||
203 | mxc_iomux_set_pad(MX31_PIN_SFS3, USB_PAD_CFG); | ||
204 | mxc_iomux_set_pad(MX31_PIN_SCK3, USB_PAD_CFG); | ||
205 | mxc_iomux_set_pad(MX31_PIN_SRXD3, USB_PAD_CFG); | ||
206 | mxc_iomux_set_pad(MX31_PIN_STXD3, USB_PAD_CFG); | ||
207 | |||
208 | mxc_iomux_set_gpr(MUX_PGP_UH2, true); | ||
209 | |||
210 | |||
211 | /* Enable the chip */ | ||
212 | err = gpio_request(USBH2_CS, "USB-H2-CS"); | ||
213 | if (err) { | ||
214 | pr_err("Failed to request the usb host 2 CS gpio\n"); | ||
215 | return err; | ||
216 | } | ||
217 | |||
218 | err = gpio_direction_output(USBH2_CS, 0/*Enabled*/); | ||
219 | if (err) { | ||
220 | pr_err("Failed to drive the usb host 2 CS gpio\n"); | ||
221 | goto h2_free_cs; | ||
222 | } | ||
223 | |||
224 | /* H2 phy reset*/ | ||
225 | err = gpio_request(USBH2_RESET, "USB-H2-RESET"); | ||
226 | if (err) { | ||
227 | pr_err("Failed to request the usb host 2 reset gpio\n"); | ||
228 | goto h2_free_cs; | ||
229 | } | ||
230 | |||
231 | err = gpio_direction_output(USBH2_RESET, 1/*HIGH*/); | ||
232 | if (err) { | ||
233 | pr_err("Failed to reset the usb host 2 phy\n"); | ||
234 | goto h2_free_reset; | ||
235 | } | ||
236 | |||
237 | gpio_set_value(USBH2_RESET, 0/*LOW*/); | ||
238 | mdelay(5); | ||
239 | gpio_set_value(USBH2_RESET, 1/*HIGH*/); | ||
240 | |||
241 | return 0; | ||
242 | |||
243 | h2_free_reset: | ||
244 | gpio_free(USBH2_RESET); | ||
245 | h2_free_cs: | ||
246 | gpio_free(USBH2_CS); | ||
247 | return err; | ||
248 | } | ||
249 | |||
250 | static struct mxc_usbh_platform_data usbotg_pdata = { | ||
251 | .init = usbotg_init, | ||
252 | .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT, | ||
253 | .flags = MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_INTERFACE_DIFF_UNI, | ||
254 | }; | ||
255 | |||
256 | static struct mxc_usbh_platform_data usbh2_pdata = { | ||
257 | .init = usbh2_init, | ||
258 | .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT, | ||
259 | .flags = MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_INTERFACE_DIFF_UNI, | ||
260 | }; | ||
261 | #endif /* CONFIG_USB_ULPI */ | ||
262 | |||
108 | /* RTC over I2C*/ | 263 | /* RTC over I2C*/ |
109 | #define ARMADILLO5X0_RTC_GPIO IOMUX_TO_GPIO(MX31_PIN_SRXD4) | 264 | #define ARMADILLO5X0_RTC_GPIO IOMUX_TO_GPIO(MX31_PIN_SRXD4) |
110 | 265 | ||
@@ -393,6 +548,17 @@ static void __init armadillo5x0_init(void) | |||
393 | if (armadillo5x0_i2c_rtc.irq == 0) | 548 | if (armadillo5x0_i2c_rtc.irq == 0) |
394 | pr_warning("armadillo5x0_init: failed to get RTC IRQ\n"); | 549 | pr_warning("armadillo5x0_init: failed to get RTC IRQ\n"); |
395 | i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1); | 550 | i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1); |
551 | |||
552 | /* USB */ | ||
553 | #if defined(CONFIG_USB_ULPI) | ||
554 | usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | ||
555 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | ||
556 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | ||
557 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | ||
558 | |||
559 | mxc_register_device(&mxc_otg_host, &usbotg_pdata); | ||
560 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | ||
561 | #endif | ||
396 | } | 562 | } |
397 | 563 | ||
398 | static void __init armadillo5x0_timer_init(void) | 564 | static void __init armadillo5x0_timer_init(void) |
diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c index b88c18ad7698..f54af1e29ca4 100644 --- a/arch/arm/mach-mx3/mach-mx31_3ds.c +++ b/arch/arm/mach-mx3/mach-mx31_3ds.c | |||
@@ -23,6 +23,9 @@ | |||
23 | #include <linux/gpio.h> | 23 | #include <linux/gpio.h> |
24 | #include <linux/smsc911x.h> | 24 | #include <linux/smsc911x.h> |
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/mfd/mc13783.h> | ||
27 | #include <linux/spi/spi.h> | ||
28 | #include <linux/regulator/machine.h> | ||
26 | 29 | ||
27 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
28 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
@@ -31,26 +34,96 @@ | |||
31 | #include <asm/memory.h> | 34 | #include <asm/memory.h> |
32 | #include <asm/mach/map.h> | 35 | #include <asm/mach/map.h> |
33 | #include <mach/common.h> | 36 | #include <mach/common.h> |
34 | #include <mach/board-mx31pdk.h> | 37 | #include <mach/board-mx31_3ds.h> |
35 | #include <mach/imx-uart.h> | 38 | #include <mach/imx-uart.h> |
36 | #include <mach/iomux-mx3.h> | 39 | #include <mach/iomux-mx3.h> |
40 | #include <mach/mxc_nand.h> | ||
41 | #include <mach/spi.h> | ||
37 | #include "devices.h" | 42 | #include "devices.h" |
38 | 43 | ||
39 | /*! | 44 | /*! |
40 | * @file mx31pdk.c | 45 | * @file mx31_3ds.c |
41 | * | 46 | * |
42 | * @brief This file contains the board-specific initialization routines. | 47 | * @brief This file contains the board-specific initialization routines. |
43 | * | 48 | * |
44 | * @ingroup System | 49 | * @ingroup System |
45 | */ | 50 | */ |
46 | 51 | ||
47 | static int mx31pdk_pins[] = { | 52 | static int mx31_3ds_pins[] = { |
48 | /* UART1 */ | 53 | /* UART1 */ |
49 | MX31_PIN_CTS1__CTS1, | 54 | MX31_PIN_CTS1__CTS1, |
50 | MX31_PIN_RTS1__RTS1, | 55 | MX31_PIN_RTS1__RTS1, |
51 | MX31_PIN_TXD1__TXD1, | 56 | MX31_PIN_TXD1__TXD1, |
52 | MX31_PIN_RXD1__RXD1, | 57 | MX31_PIN_RXD1__RXD1, |
53 | IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), | 58 | IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), |
59 | /* SPI 1 */ | ||
60 | MX31_PIN_CSPI2_SCLK__SCLK, | ||
61 | MX31_PIN_CSPI2_MOSI__MOSI, | ||
62 | MX31_PIN_CSPI2_MISO__MISO, | ||
63 | MX31_PIN_CSPI2_SPI_RDY__SPI_RDY, | ||
64 | MX31_PIN_CSPI2_SS0__SS0, | ||
65 | MX31_PIN_CSPI2_SS2__SS2, /*CS for MC13783 */ | ||
66 | /* MC13783 IRQ */ | ||
67 | IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO), | ||
68 | }; | ||
69 | |||
70 | /* Regulators */ | ||
71 | static struct regulator_init_data pwgtx_init = { | ||
72 | .constraints = { | ||
73 | .boot_on = 1, | ||
74 | .always_on = 1, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct mc13783_regulator_init_data mx31_3ds_regulators[] = { | ||
79 | { | ||
80 | .id = MC13783_REGU_PWGT1SPI, /* Power Gate for ARM core. */ | ||
81 | .init_data = &pwgtx_init, | ||
82 | }, { | ||
83 | .id = MC13783_REGU_PWGT2SPI, /* Power Gate for L2 Cache. */ | ||
84 | .init_data = &pwgtx_init, | ||
85 | }, | ||
86 | }; | ||
87 | |||
88 | /* MC13783 */ | ||
89 | static struct mc13783_platform_data mc13783_pdata __initdata = { | ||
90 | .regulators = mx31_3ds_regulators, | ||
91 | .num_regulators = ARRAY_SIZE(mx31_3ds_regulators), | ||
92 | .flags = MC13783_USE_REGULATOR, | ||
93 | }; | ||
94 | |||
95 | /* SPI */ | ||
96 | static int spi1_internal_chipselect[] = { | ||
97 | MXC_SPI_CS(0), | ||
98 | MXC_SPI_CS(2), | ||
99 | }; | ||
100 | |||
101 | static struct spi_imx_master spi1_pdata = { | ||
102 | .chipselect = spi1_internal_chipselect, | ||
103 | .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect), | ||
104 | }; | ||
105 | |||
106 | static struct spi_board_info mx31_3ds_spi_devs[] __initdata = { | ||
107 | { | ||
108 | .modalias = "mc13783", | ||
109 | .max_speed_hz = 1000000, | ||
110 | .bus_num = 1, | ||
111 | .chip_select = 1, /* SS2 */ | ||
112 | .platform_data = &mc13783_pdata, | ||
113 | .irq = IOMUX_TO_IRQ(MX31_PIN_GPIO1_3), | ||
114 | .mode = SPI_CS_HIGH, | ||
115 | }, | ||
116 | }; | ||
117 | |||
118 | /* | ||
119 | * NAND Flash | ||
120 | */ | ||
121 | static struct mxc_nand_platform_data imx31_3ds_nand_flash_pdata = { | ||
122 | .width = 1, | ||
123 | .hw_ecc = 1, | ||
124 | #ifdef MACH_MX31_3DS_MXC_NAND_USE_BBT | ||
125 | .flash_bbt = 1, | ||
126 | #endif | ||
54 | }; | 127 | }; |
55 | 128 | ||
56 | static struct imxuart_platform_data uart_pdata = { | 129 | static struct imxuart_platform_data uart_pdata = { |
@@ -95,7 +168,7 @@ static struct platform_device smsc911x_device = { | |||
95 | * LEDs, switches, interrupts for Ethernet. | 168 | * LEDs, switches, interrupts for Ethernet. |
96 | */ | 169 | */ |
97 | 170 | ||
98 | static void mx31pdk_expio_irq_handler(uint32_t irq, struct irq_desc *desc) | 171 | static void mx31_3ds_expio_irq_handler(uint32_t irq, struct irq_desc *desc) |
99 | { | 172 | { |
100 | uint32_t imr_val; | 173 | uint32_t imr_val; |
101 | uint32_t int_valid; | 174 | uint32_t int_valid; |
@@ -163,7 +236,7 @@ static struct irq_chip expio_irq_chip = { | |||
163 | .unmask = expio_unmask_irq, | 236 | .unmask = expio_unmask_irq, |
164 | }; | 237 | }; |
165 | 238 | ||
166 | static int __init mx31pdk_init_expio(void) | 239 | static int __init mx31_3ds_init_expio(void) |
167 | { | 240 | { |
168 | int i; | 241 | int i; |
169 | int ret; | 242 | int ret; |
@@ -176,7 +249,7 @@ static int __init mx31pdk_init_expio(void) | |||
176 | return -ENODEV; | 249 | return -ENODEV; |
177 | } | 250 | } |
178 | 251 | ||
179 | pr_info("i.MX31PDK Debug board detected, rev = 0x%04X\n", | 252 | pr_info("i.MX31 3DS Debug board detected, rev = 0x%04X\n", |
180 | __raw_readw(CPLD_CODE_VER_REG)); | 253 | __raw_readw(CPLD_CODE_VER_REG)); |
181 | 254 | ||
182 | /* | 255 | /* |
@@ -201,7 +274,7 @@ static int __init mx31pdk_init_expio(void) | |||
201 | set_irq_flags(i, IRQF_VALID); | 274 | set_irq_flags(i, IRQF_VALID); |
202 | } | 275 | } |
203 | set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_LOW); | 276 | set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_LOW); |
204 | set_irq_chained_handler(EXPIO_PARENT_INT, mx31pdk_expio_irq_handler); | 277 | set_irq_chained_handler(EXPIO_PARENT_INT, mx31_3ds_expio_irq_handler); |
205 | 278 | ||
206 | return 0; | 279 | return 0; |
207 | } | 280 | } |
@@ -209,7 +282,7 @@ static int __init mx31pdk_init_expio(void) | |||
209 | /* | 282 | /* |
210 | * This structure defines the MX31 memory map. | 283 | * This structure defines the MX31 memory map. |
211 | */ | 284 | */ |
212 | static struct map_desc mx31pdk_io_desc[] __initdata = { | 285 | static struct map_desc mx31_3ds_io_desc[] __initdata = { |
213 | { | 286 | { |
214 | .virtual = MX31_CS5_BASE_ADDR_VIRT, | 287 | .virtual = MX31_CS5_BASE_ADDR_VIRT, |
215 | .pfn = __phys_to_pfn(MX31_CS5_BASE_ADDR), | 288 | .pfn = __phys_to_pfn(MX31_CS5_BASE_ADDR), |
@@ -221,10 +294,10 @@ static struct map_desc mx31pdk_io_desc[] __initdata = { | |||
221 | /* | 294 | /* |
222 | * Set up static virtual mappings. | 295 | * Set up static virtual mappings. |
223 | */ | 296 | */ |
224 | static void __init mx31pdk_map_io(void) | 297 | static void __init mx31_3ds_map_io(void) |
225 | { | 298 | { |
226 | mx31_map_io(); | 299 | mx31_map_io(); |
227 | iotable_init(mx31pdk_io_desc, ARRAY_SIZE(mx31pdk_io_desc)); | 300 | iotable_init(mx31_3ds_io_desc, ARRAY_SIZE(mx31_3ds_io_desc)); |
228 | } | 301 | } |
229 | 302 | ||
230 | /*! | 303 | /*! |
@@ -232,35 +305,40 @@ static void __init mx31pdk_map_io(void) | |||
232 | */ | 305 | */ |
233 | static void __init mxc_board_init(void) | 306 | static void __init mxc_board_init(void) |
234 | { | 307 | { |
235 | mxc_iomux_setup_multiple_pins(mx31pdk_pins, ARRAY_SIZE(mx31pdk_pins), | 308 | mxc_iomux_setup_multiple_pins(mx31_3ds_pins, ARRAY_SIZE(mx31_3ds_pins), |
236 | "mx31pdk"); | 309 | "mx31_3ds"); |
237 | 310 | ||
238 | mxc_register_device(&mxc_uart_device0, &uart_pdata); | 311 | mxc_register_device(&mxc_uart_device0, &uart_pdata); |
312 | mxc_register_device(&mxc_nand_device, &imx31_3ds_nand_flash_pdata); | ||
313 | |||
314 | mxc_register_device(&mxc_spi_device1, &spi1_pdata); | ||
315 | spi_register_board_info(mx31_3ds_spi_devs, | ||
316 | ARRAY_SIZE(mx31_3ds_spi_devs)); | ||
239 | 317 | ||
240 | if (!mx31pdk_init_expio()) | 318 | if (!mx31_3ds_init_expio()) |
241 | platform_device_register(&smsc911x_device); | 319 | platform_device_register(&smsc911x_device); |
242 | } | 320 | } |
243 | 321 | ||
244 | static void __init mx31pdk_timer_init(void) | 322 | static void __init mx31_3ds_timer_init(void) |
245 | { | 323 | { |
246 | mx31_clocks_init(26000000); | 324 | mx31_clocks_init(26000000); |
247 | } | 325 | } |
248 | 326 | ||
249 | static struct sys_timer mx31pdk_timer = { | 327 | static struct sys_timer mx31_3ds_timer = { |
250 | .init = mx31pdk_timer_init, | 328 | .init = mx31_3ds_timer_init, |
251 | }; | 329 | }; |
252 | 330 | ||
253 | /* | 331 | /* |
254 | * The following uses standard kernel macros defined in arch.h in order to | 332 | * The following uses standard kernel macros defined in arch.h in order to |
255 | * initialize __mach_desc_MX31PDK data structure. | 333 | * initialize __mach_desc_MX31_3DS data structure. |
256 | */ | 334 | */ |
257 | MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") | 335 | MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") |
258 | /* Maintainer: Freescale Semiconductor, Inc. */ | 336 | /* Maintainer: Freescale Semiconductor, Inc. */ |
259 | .phys_io = MX31_AIPS1_BASE_ADDR, | 337 | .phys_io = MX31_AIPS1_BASE_ADDR, |
260 | .io_pg_offst = (MX31_AIPS1_BASE_ADDR_VIRT >> 18) & 0xfffc, | 338 | .io_pg_offst = (MX31_AIPS1_BASE_ADDR_VIRT >> 18) & 0xfffc, |
261 | .boot_params = MX3x_PHYS_OFFSET + 0x100, | 339 | .boot_params = MX3x_PHYS_OFFSET + 0x100, |
262 | .map_io = mx31pdk_map_io, | 340 | .map_io = mx31_3ds_map_io, |
263 | .init_irq = mx31_init_irq, | 341 | .init_irq = mx31_init_irq, |
264 | .init_machine = mxc_board_init, | 342 | .init_machine = mxc_board_init, |
265 | .timer = &mx31pdk_timer, | 343 | .timer = &mx31_3ds_timer, |
266 | MACHINE_END | 344 | MACHINE_END |
diff --git a/arch/arm/mach-mx3/mach-pcm037.c b/arch/arm/mach-mx3/mach-pcm037.c index 034ec8190065..2df1ec55a97e 100644 --- a/arch/arm/mach-mx3/mach-pcm037.c +++ b/arch/arm/mach-mx3/mach-pcm037.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/can/platform/sja1000.h> | 35 | #include <linux/can/platform/sja1000.h> |
36 | #include <linux/usb/otg.h> | 36 | #include <linux/usb/otg.h> |
37 | #include <linux/usb/ulpi.h> | 37 | #include <linux/usb/ulpi.h> |
38 | #include <linux/fsl_devices.h> | ||
39 | #include <linux/gfp.h> | 38 | #include <linux/gfp.h> |
40 | 39 | ||
41 | #include <media/soc_camera.h> | 40 | #include <media/soc_camera.h> |
diff --git a/arch/arm/mach-mx3/mx31lite-db.c b/arch/arm/mach-mx3/mx31lite-db.c index ccd874225c3b..093c595ca581 100644 --- a/arch/arm/mach-mx3/mx31lite-db.c +++ b/arch/arm/mach-mx3/mx31lite-db.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/types.h> | 28 | #include <linux/types.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <linux/gpio.h> | 30 | #include <linux/gpio.h> |
31 | #include <linux/platform_device.h> | ||
32 | #include <linux/leds.h> | 31 | #include <linux/leds.h> |
33 | #include <linux/platform_device.h> | 32 | #include <linux/platform_device.h> |
34 | 33 | ||
@@ -206,5 +205,6 @@ void __init mx31lite_db_init(void) | |||
206 | mxc_register_device(&mxcsdhc_device0, &mmc_pdata); | 205 | mxc_register_device(&mxcsdhc_device0, &mmc_pdata); |
207 | mxc_register_device(&mxc_spi_device0, &spi0_pdata); | 206 | mxc_register_device(&mxc_spi_device0, &spi0_pdata); |
208 | platform_device_register(&litekit_led_device); | 207 | platform_device_register(&litekit_led_device); |
208 | mxc_register_device(&imx_wdt_device0, NULL); | ||
209 | } | 209 | } |
210 | 210 | ||
diff --git a/arch/arm/mach-mx5/clock-mx51.c b/arch/arm/mach-mx5/clock-mx51.c index be90c03101cd..1ee6ce4087b8 100644 --- a/arch/arm/mach-mx5/clock-mx51.c +++ b/arch/arm/mach-mx5/clock-mx51.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include <asm/clkdev.h> | 18 | #include <asm/clkdev.h> |
19 | #include <asm/div64.h> | ||
19 | 20 | ||
20 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
21 | #include <mach/common.h> | 22 | #include <mach/common.h> |
@@ -757,7 +758,7 @@ DEFINE_CLOCK(uart3_ipg_clk, 2, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG7_OFFSET, | |||
757 | 758 | ||
758 | /* GPT */ | 759 | /* GPT */ |
759 | DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, | 760 | DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, |
760 | NULL, NULL, &ipg_perclk, NULL); | 761 | NULL, NULL, &ipg_clk, NULL); |
761 | DEFINE_CLOCK(gpt_ipg_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG10_OFFSET, | 762 | DEFINE_CLOCK(gpt_ipg_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG10_OFFSET, |
762 | NULL, NULL, &ipg_clk, NULL); | 763 | NULL, NULL, &ipg_clk, NULL); |
763 | 764 | ||
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c index 41c769f08c4d..2d37785e3857 100644 --- a/arch/arm/mach-mx5/cpu.c +++ b/arch/arm/mach-mx5/cpu.c | |||
@@ -14,9 +14,62 @@ | |||
14 | #include <linux/types.h> | 14 | #include <linux/types.h> |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/module.h> | ||
17 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
18 | #include <asm/io.h> | 19 | #include <asm/io.h> |
19 | 20 | ||
21 | static int cpu_silicon_rev = -1; | ||
22 | |||
23 | #define SI_REV 0x48 | ||
24 | |||
25 | static void query_silicon_parameter(void) | ||
26 | { | ||
27 | void __iomem *rom = ioremap(MX51_IROM_BASE_ADDR, MX51_IROM_SIZE); | ||
28 | u32 rev; | ||
29 | |||
30 | if (!rom) { | ||
31 | cpu_silicon_rev = -EINVAL; | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | rev = readl(rom + SI_REV); | ||
36 | switch (rev) { | ||
37 | case 0x1: | ||
38 | cpu_silicon_rev = MX51_CHIP_REV_1_0; | ||
39 | break; | ||
40 | case 0x2: | ||
41 | cpu_silicon_rev = MX51_CHIP_REV_1_1; | ||
42 | break; | ||
43 | case 0x10: | ||
44 | cpu_silicon_rev = MX51_CHIP_REV_2_0; | ||
45 | break; | ||
46 | case 0x20: | ||
47 | cpu_silicon_rev = MX51_CHIP_REV_3_0; | ||
48 | break; | ||
49 | default: | ||
50 | cpu_silicon_rev = 0; | ||
51 | } | ||
52 | |||
53 | iounmap(rom); | ||
54 | } | ||
55 | |||
56 | /* | ||
57 | * Returns: | ||
58 | * the silicon revision of the cpu | ||
59 | * -EINVAL - not a mx51 | ||
60 | */ | ||
61 | int mx51_revision(void) | ||
62 | { | ||
63 | if (!cpu_is_mx51()) | ||
64 | return -EINVAL; | ||
65 | |||
66 | if (cpu_silicon_rev == -1) | ||
67 | query_silicon_parameter(); | ||
68 | |||
69 | return cpu_silicon_rev; | ||
70 | } | ||
71 | EXPORT_SYMBOL(mx51_revision); | ||
72 | |||
20 | static int __init post_cpu_init(void) | 73 | static int __init post_cpu_init(void) |
21 | { | 74 | { |
22 | unsigned int reg; | 75 | unsigned int reg; |
diff --git a/arch/arm/mach-mx5/mm.c b/arch/arm/mach-mx5/mm.c index c21e18be7af8..b7677ef80cc4 100644 --- a/arch/arm/mach-mx5/mm.c +++ b/arch/arm/mach-mx5/mm.c | |||
@@ -35,11 +35,6 @@ static struct map_desc mxc_io_desc[] __initdata = { | |||
35 | .length = MX51_DEBUG_SIZE, | 35 | .length = MX51_DEBUG_SIZE, |
36 | .type = MT_DEVICE | 36 | .type = MT_DEVICE |
37 | }, { | 37 | }, { |
38 | .virtual = MX51_TZIC_BASE_ADDR_VIRT, | ||
39 | .pfn = __phys_to_pfn(MX51_TZIC_BASE_ADDR), | ||
40 | .length = MX51_TZIC_SIZE, | ||
41 | .type = MT_DEVICE | ||
42 | }, { | ||
43 | .virtual = MX51_AIPS1_BASE_ADDR_VIRT, | 38 | .virtual = MX51_AIPS1_BASE_ADDR_VIRT, |
44 | .pfn = __phys_to_pfn(MX51_AIPS1_BASE_ADDR), | 39 | .pfn = __phys_to_pfn(MX51_AIPS1_BASE_ADDR), |
45 | .length = MX51_AIPS1_SIZE, | 40 | .length = MX51_AIPS1_SIZE, |
@@ -54,11 +49,6 @@ static struct map_desc mxc_io_desc[] __initdata = { | |||
54 | .pfn = __phys_to_pfn(MX51_AIPS2_BASE_ADDR), | 49 | .pfn = __phys_to_pfn(MX51_AIPS2_BASE_ADDR), |
55 | .length = MX51_AIPS2_SIZE, | 50 | .length = MX51_AIPS2_SIZE, |
56 | .type = MT_DEVICE | 51 | .type = MT_DEVICE |
57 | }, { | ||
58 | .virtual = MX51_NFC_AXI_BASE_ADDR_VIRT, | ||
59 | .pfn = __phys_to_pfn(MX51_NFC_AXI_BASE_ADDR), | ||
60 | .length = MX51_NFC_AXI_SIZE, | ||
61 | .type = MT_DEVICE | ||
62 | }, | 52 | }, |
63 | }; | 53 | }; |
64 | 54 | ||
@@ -69,14 +59,6 @@ static struct map_desc mxc_io_desc[] __initdata = { | |||
69 | */ | 59 | */ |
70 | void __init mx51_map_io(void) | 60 | void __init mx51_map_io(void) |
71 | { | 61 | { |
72 | u32 tzic_addr; | ||
73 | |||
74 | if (mx51_revision() < MX51_CHIP_REV_2_0) | ||
75 | tzic_addr = 0x8FFFC000; | ||
76 | else | ||
77 | tzic_addr = 0xE0003000; | ||
78 | mxc_io_desc[2].pfn = __phys_to_pfn(tzic_addr); | ||
79 | |||
80 | mxc_set_cpu_type(MXC_CPU_MX51); | 62 | mxc_set_cpu_type(MXC_CPU_MX51); |
81 | mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); | 63 | mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); |
82 | mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR)); | 64 | mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR)); |
@@ -85,5 +67,17 @@ void __init mx51_map_io(void) | |||
85 | 67 | ||
86 | void __init mx51_init_irq(void) | 68 | void __init mx51_init_irq(void) |
87 | { | 69 | { |
88 | tzic_init_irq(MX51_IO_ADDRESS(MX51_TZIC_BASE_ADDR)); | 70 | unsigned long tzic_addr; |
71 | void __iomem *tzic_virt; | ||
72 | |||
73 | if (mx51_revision() < MX51_CHIP_REV_2_0) | ||
74 | tzic_addr = MX51_TZIC_BASE_ADDR_TO1; | ||
75 | else | ||
76 | tzic_addr = MX51_TZIC_BASE_ADDR; | ||
77 | |||
78 | tzic_virt = ioremap(tzic_addr, SZ_16K); | ||
79 | if (!tzic_virt) | ||
80 | panic("unable to map TZIC interrupt controller\n"); | ||
81 | |||
82 | tzic_init_irq(tzic_virt); | ||
89 | } | 83 | } |
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 9ad118563f7d..20cfbcc6c60c 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -68,12 +68,6 @@ struct sys_timer omap_timer; | |||
68 | * --------------------------------------------------------------------------- | 68 | * --------------------------------------------------------------------------- |
69 | */ | 69 | */ |
70 | 70 | ||
71 | #if defined(CONFIG_ARCH_OMAP16XX) | ||
72 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 | ||
73 | #else | ||
74 | #error OMAP 32KHz timer does not currently work on 15XX! | ||
75 | #endif | ||
76 | |||
77 | /* 16xx specific defines */ | 71 | /* 16xx specific defines */ |
78 | #define OMAP1_32K_TIMER_BASE 0xfffb9000 | 72 | #define OMAP1_32K_TIMER_BASE 0xfffb9000 |
79 | #define OMAP1_32K_TIMER_CR 0x08 | 73 | #define OMAP1_32K_TIMER_CR 0x08 |
@@ -150,15 +144,6 @@ static struct clock_event_device clockevent_32k_timer = { | |||
150 | .set_mode = omap_32k_timer_set_mode, | 144 | .set_mode = omap_32k_timer_set_mode, |
151 | }; | 145 | }; |
152 | 146 | ||
153 | /* | ||
154 | * The 32KHz synchronized timer is an additional timer on 16xx. | ||
155 | * It is always running. | ||
156 | */ | ||
157 | static inline unsigned long omap_32k_sync_timer_read(void) | ||
158 | { | ||
159 | return omap_readl(TIMER_32K_SYNCHRONIZED); | ||
160 | } | ||
161 | |||
162 | static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id) | 147 | static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id) |
163 | { | 148 | { |
164 | struct clock_event_device *evt = &clockevent_32k_timer; | 149 | struct clock_event_device *evt = &clockevent_32k_timer; |
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index a8a3d1e23e26..2455dcc744a0 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -59,8 +59,10 @@ config MACH_OMAP3_BEAGLE | |||
59 | select OMAP_PACKAGE_CBB | 59 | select OMAP_PACKAGE_CBB |
60 | 60 | ||
61 | config MACH_DEVKIT8000 | 61 | config MACH_DEVKIT8000 |
62 | bool "DEVKIT8000 board" | 62 | bool "DEVKIT8000 board" |
63 | depends on ARCH_OMAP3 | 63 | depends on ARCH_OMAP3 |
64 | select OMAP_PACKAGE_CUS | ||
65 | select OMAP_MUX | ||
64 | 66 | ||
65 | config MACH_OMAP_LDP | 67 | config MACH_OMAP_LDP |
66 | bool "OMAP3 LDP board" | 68 | bool "OMAP3 LDP board" |
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c index a0a2a113465c..504d2bd222fe 100644 --- a/arch/arm/mach-omap2/board-3630sdp.c +++ b/arch/arm/mach-omap2/board-3630sdp.c | |||
@@ -96,6 +96,7 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
96 | static void __init omap_sdp_init(void) | 96 | static void __init omap_sdp_init(void) |
97 | { | 97 | { |
98 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBP); | 98 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBP); |
99 | omap_serial_init(); | ||
99 | zoom_peripherals_init(); | 100 | zoom_peripherals_init(); |
100 | board_smc91x_init(); | 101 | board_smc91x_init(); |
101 | enable_board_wakeup_source(); | 102 | enable_board_wakeup_source(); |
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 6ae880585d54..c1c4389fbd8f 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c | |||
@@ -294,9 +294,9 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
294 | 294 | ||
295 | static void __init am3517_evm_init(void) | 295 | static void __init am3517_evm_init(void) |
296 | { | 296 | { |
297 | am3517_evm_i2c_init(); | ||
298 | |||
299 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | 297 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); |
298 | |||
299 | am3517_evm_i2c_init(); | ||
300 | platform_add_devices(am3517_evm_devices, | 300 | platform_add_devices(am3517_evm_devices, |
301 | ARRAY_SIZE(am3517_evm_devices)); | 301 | ARRAY_SIZE(am3517_evm_devices)); |
302 | 302 | ||
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 5bfc13b3176c..47e3af2166d4 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -50,7 +50,6 @@ | |||
50 | #include <linux/input/matrix_keypad.h> | 50 | #include <linux/input/matrix_keypad.h> |
51 | #include <linux/spi/spi.h> | 51 | #include <linux/spi/spi.h> |
52 | #include <linux/spi/ads7846.h> | 52 | #include <linux/spi/ads7846.h> |
53 | #include <linux/usb/otg.h> | ||
54 | #include <linux/dm9000.h> | 53 | #include <linux/dm9000.h> |
55 | #include <linux/interrupt.h> | 54 | #include <linux/interrupt.h> |
56 | 55 | ||
@@ -269,20 +268,6 @@ static int devkit8000_twl_gpio_setup(struct device *dev, | |||
269 | devkit8000_vmmc1_supply.dev = mmc[0].dev; | 268 | devkit8000_vmmc1_supply.dev = mmc[0].dev; |
270 | devkit8000_vsim_supply.dev = mmc[0].dev; | 269 | devkit8000_vsim_supply.dev = mmc[0].dev; |
271 | 270 | ||
272 | /* REVISIT: need ehci-omap hooks for external VBUS | ||
273 | * power switch and overcurrent detect | ||
274 | */ | ||
275 | |||
276 | gpio_request(gpio + 1, "EHCI_nOC"); | ||
277 | gpio_direction_input(gpio + 1); | ||
278 | |||
279 | /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ | ||
280 | gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); | ||
281 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); | ||
282 | |||
283 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | ||
284 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | ||
285 | |||
286 | return 0; | 271 | return 0; |
287 | } | 272 | } |
288 | 273 | ||
@@ -303,7 +288,7 @@ static struct regulator_consumer_supply devkit8000_vpll2_supplies[] = { | |||
303 | .dev = &devkit8000_lcd_device.dev, | 288 | .dev = &devkit8000_lcd_device.dev, |
304 | }, | 289 | }, |
305 | { | 290 | { |
306 | .supply = "vdss_dsi", | 291 | .supply = "vdds_dsi", |
307 | .dev = &devkit8000_dss_device.dev, | 292 | .dev = &devkit8000_dss_device.dev, |
308 | } | 293 | } |
309 | }; | 294 | }; |
@@ -639,17 +624,21 @@ static struct omap_musb_board_data musb_board_data = { | |||
639 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 624 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { |
640 | 625 | ||
641 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | 626 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, |
642 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 627 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, |
643 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 628 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, |
644 | 629 | ||
645 | .phy_reset = true, | 630 | .phy_reset = true, |
646 | .reset_gpio_port[0] = -EINVAL, | 631 | .reset_gpio_port[0] = -EINVAL, |
647 | .reset_gpio_port[1] = 147, | 632 | .reset_gpio_port[1] = -EINVAL, |
648 | .reset_gpio_port[2] = -EINVAL | 633 | .reset_gpio_port[2] = -EINVAL |
649 | }; | 634 | }; |
650 | 635 | ||
651 | static void __init devkit8000_init(void) | 636 | static void __init devkit8000_init(void) |
652 | { | 637 | { |
638 | omap_serial_init(); | ||
639 | |||
640 | omap_dm9000_init(); | ||
641 | |||
653 | devkit8000_i2c_init(); | 642 | devkit8000_i2c_init(); |
654 | platform_add_devices(devkit8000_devices, | 643 | platform_add_devices(devkit8000_devices, |
655 | ARRAY_SIZE(devkit8000_devices)); | 644 | ARRAY_SIZE(devkit8000_devices)); |
@@ -659,25 +648,15 @@ static void __init devkit8000_init(void) | |||
659 | spi_register_board_info(devkit8000_spi_board_info, | 648 | spi_register_board_info(devkit8000_spi_board_info, |
660 | ARRAY_SIZE(devkit8000_spi_board_info)); | 649 | ARRAY_SIZE(devkit8000_spi_board_info)); |
661 | 650 | ||
662 | omap_serial_init(); | ||
663 | |||
664 | omap_dm9000_init(); | ||
665 | |||
666 | devkit8000_ads7846_init(); | 651 | devkit8000_ads7846_init(); |
667 | 652 | ||
668 | omap_mux_init_gpio(170, OMAP_PIN_INPUT); | ||
669 | |||
670 | gpio_request(170, "DVI_nPD"); | ||
671 | /* REVISIT leave DVI powered down until it's needed ... */ | ||
672 | gpio_direction_output(170, true); | ||
673 | |||
674 | usb_musb_init(&musb_board_data); | 653 | usb_musb_init(&musb_board_data); |
675 | usb_ehci_init(&ehci_pdata); | 654 | usb_ehci_init(&ehci_pdata); |
676 | devkit8000_flash_init(); | 655 | devkit8000_flash_init(); |
677 | 656 | ||
678 | /* Ensure SDRC pins are mux'd for self-refresh */ | 657 | /* Ensure SDRC pins are mux'd for self-refresh */ |
679 | omap_mux_init_signal("sdr_cke0", OMAP_PIN_OUTPUT); | 658 | omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); |
680 | omap_mux_init_signal("sdr_cke1", OMAP_PIN_OUTPUT); | 659 | omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); |
681 | } | 660 | } |
682 | 661 | ||
683 | static void __init devkit8000_map_io(void) | 662 | static void __init devkit8000_map_io(void) |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 3c7789d45051..d55c57b761a9 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -458,13 +458,13 @@ static struct omap_musb_board_data musb_board_data = { | |||
458 | }; | 458 | }; |
459 | 459 | ||
460 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | 460 | static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { |
461 | .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 461 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, |
462 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | 462 | .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, |
463 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, | 463 | .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, |
464 | 464 | ||
465 | .phy_reset = true, | 465 | .phy_reset = true, |
466 | .reset_gpio_port[0] = -EINVAL, | 466 | .reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET, |
467 | .reset_gpio_port[1] = IGEP2_GPIO_USBH_NRESET, | 467 | .reset_gpio_port[1] = -EINVAL, |
468 | .reset_gpio_port[2] = -EINVAL, | 468 | .reset_gpio_port[2] = -EINVAL, |
469 | }; | 469 | }; |
470 | 470 | ||
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index da9bcb898991..3ccc34ebdcc7 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -216,7 +216,7 @@ static void __init n8x0_onenand_init(void) {} | |||
216 | */ | 216 | */ |
217 | #define N8X0_SLOT_SWITCH_GPIO 96 | 217 | #define N8X0_SLOT_SWITCH_GPIO 96 |
218 | #define N810_EMMC_VSD_GPIO 23 | 218 | #define N810_EMMC_VSD_GPIO 23 |
219 | #define NN810_EMMC_VIO_GPIO 9 | 219 | #define N810_EMMC_VIO_GPIO 9 |
220 | 220 | ||
221 | static int n8x0_mmc_switch_slot(struct device *dev, int slot) | 221 | static int n8x0_mmc_switch_slot(struct device *dev, int slot) |
222 | { | 222 | { |
@@ -304,10 +304,10 @@ static void n810_set_power_emmc(struct device *dev, | |||
304 | if (power_on) { | 304 | if (power_on) { |
305 | gpio_set_value(N810_EMMC_VSD_GPIO, 1); | 305 | gpio_set_value(N810_EMMC_VSD_GPIO, 1); |
306 | msleep(1); | 306 | msleep(1); |
307 | gpio_set_value(NN810_EMMC_VIO_GPIO, 1); | 307 | gpio_set_value(N810_EMMC_VIO_GPIO, 1); |
308 | msleep(1); | 308 | msleep(1); |
309 | } else { | 309 | } else { |
310 | gpio_set_value(NN810_EMMC_VIO_GPIO, 0); | 310 | gpio_set_value(N810_EMMC_VIO_GPIO, 0); |
311 | msleep(50); | 311 | msleep(50); |
312 | gpio_set_value(N810_EMMC_VSD_GPIO, 0); | 312 | gpio_set_value(N810_EMMC_VSD_GPIO, 0); |
313 | msleep(50); | 313 | msleep(50); |
@@ -468,7 +468,7 @@ static void n8x0_mmc_cleanup(struct device *dev) | |||
468 | 468 | ||
469 | if (machine_is_nokia_n810()) { | 469 | if (machine_is_nokia_n810()) { |
470 | gpio_free(N810_EMMC_VSD_GPIO); | 470 | gpio_free(N810_EMMC_VSD_GPIO); |
471 | gpio_free(NN810_EMMC_VIO_GPIO); | 471 | gpio_free(N810_EMMC_VIO_GPIO); |
472 | } | 472 | } |
473 | } | 473 | } |
474 | 474 | ||
@@ -529,7 +529,7 @@ void __init n8x0_mmc_init(void) | |||
529 | 529 | ||
530 | err = gpio_request(N8X0_SLOT_SWITCH_GPIO, "MMC slot switch"); | 530 | err = gpio_request(N8X0_SLOT_SWITCH_GPIO, "MMC slot switch"); |
531 | if (err) | 531 | if (err) |
532 | return err; | 532 | return; |
533 | 533 | ||
534 | gpio_direction_output(N8X0_SLOT_SWITCH_GPIO, 0); | 534 | gpio_direction_output(N8X0_SLOT_SWITCH_GPIO, 0); |
535 | 535 | ||
@@ -537,17 +537,17 @@ void __init n8x0_mmc_init(void) | |||
537 | err = gpio_request(N810_EMMC_VSD_GPIO, "MMC slot 2 Vddf"); | 537 | err = gpio_request(N810_EMMC_VSD_GPIO, "MMC slot 2 Vddf"); |
538 | if (err) { | 538 | if (err) { |
539 | gpio_free(N8X0_SLOT_SWITCH_GPIO); | 539 | gpio_free(N8X0_SLOT_SWITCH_GPIO); |
540 | return err; | 540 | return; |
541 | } | 541 | } |
542 | gpio_direction_output(N810_EMMC_VSD_GPIO, 0); | 542 | gpio_direction_output(N810_EMMC_VSD_GPIO, 0); |
543 | 543 | ||
544 | err = gpio_request(NN810_EMMC_VIO_GPIO, "MMC slot 2 Vdd"); | 544 | err = gpio_request(N810_EMMC_VIO_GPIO, "MMC slot 2 Vdd"); |
545 | if (err) { | 545 | if (err) { |
546 | gpio_free(N8X0_SLOT_SWITCH_GPIO); | 546 | gpio_free(N8X0_SLOT_SWITCH_GPIO); |
547 | gpio_free(N810_EMMC_VSD_GPIO); | 547 | gpio_free(N810_EMMC_VSD_GPIO); |
548 | return err; | 548 | return; |
549 | } | 549 | } |
550 | gpio_direction_output(NN810_EMMC_VIO_GPIO, 0); | 550 | gpio_direction_output(N810_EMMC_VIO_GPIO, 0); |
551 | } | 551 | } |
552 | 552 | ||
553 | mmc_data[0] = &mmc1_data; | 553 | mmc_data[0] = &mmc1_data; |
diff --git a/arch/arm/mach-omap2/board-sdp-flash.c b/arch/arm/mach-omap2/board-sdp-flash.c index b1b88deec7f2..2d026328e385 100644 --- a/arch/arm/mach-omap2/board-sdp-flash.c +++ b/arch/arm/mach-omap2/board-sdp-flash.c | |||
@@ -253,20 +253,20 @@ void __init sdp_flash_init(struct flash_partitions sdp_partition_info[]) | |||
253 | } | 253 | } |
254 | 254 | ||
255 | if (norcs > GPMC_CS_NUM) | 255 | if (norcs > GPMC_CS_NUM) |
256 | printk(KERN_INFO "OneNAND: Unable to find configuration " | 256 | printk(KERN_INFO "NOR: Unable to find configuration " |
257 | " in GPMC\n "); | 257 | "in GPMC\n"); |
258 | else | 258 | else |
259 | board_nor_init(sdp_partition_info[0], norcs); | 259 | board_nor_init(sdp_partition_info[0], norcs); |
260 | 260 | ||
261 | if (onenandcs > GPMC_CS_NUM) | 261 | if (onenandcs > GPMC_CS_NUM) |
262 | printk(KERN_INFO "OneNAND: Unable to find configuration " | 262 | printk(KERN_INFO "OneNAND: Unable to find configuration " |
263 | " in GPMC\n "); | 263 | "in GPMC\n"); |
264 | else | 264 | else |
265 | board_onenand_init(sdp_partition_info[1], onenandcs); | 265 | board_onenand_init(sdp_partition_info[1], onenandcs); |
266 | 266 | ||
267 | if (nandcs > GPMC_CS_NUM) | 267 | if (nandcs > GPMC_CS_NUM) |
268 | printk(KERN_INFO "NAND: Unable to find configuration " | 268 | printk(KERN_INFO "NAND: Unable to find configuration " |
269 | " in GPMC\n "); | 269 | "in GPMC\n"); |
270 | else | 270 | else |
271 | board_nand_init(sdp_partition_info[2], nandcs); | 271 | board_nand_init(sdp_partition_info[2], nandcs); |
272 | } | 272 | } |
diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c index bb4018b60642..e15d2e87cfc1 100644 --- a/arch/arm/mach-omap2/board-zoom-debugboard.c +++ b/arch/arm/mach-omap2/board-zoom-debugboard.c | |||
@@ -96,7 +96,7 @@ static struct plat_serial8250_port serial_platform_data[] = { | |||
96 | 96 | ||
97 | static struct platform_device zoom_debugboard_serial_device = { | 97 | static struct platform_device zoom_debugboard_serial_device = { |
98 | .name = "serial8250", | 98 | .name = "serial8250", |
99 | .id = 3, | 99 | .id = PLAT8250_DEV_PLATFORM, |
100 | .dev = { | 100 | .dev = { |
101 | .platform_data = serial_platform_data, | 101 | .platform_data = serial_platform_data, |
102 | }, | 102 | }, |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index ca95d8d64136..6b3984964cc5 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -280,7 +280,6 @@ static void enable_board_wakeup_source(void) | |||
280 | void __init zoom_peripherals_init(void) | 280 | void __init zoom_peripherals_init(void) |
281 | { | 281 | { |
282 | omap_i2c_init(); | 282 | omap_i2c_init(); |
283 | omap_serial_init(); | ||
284 | usb_musb_init(&musb_board_data); | 283 | usb_musb_init(&musb_board_data); |
285 | enable_board_wakeup_source(); | 284 | enable_board_wakeup_source(); |
286 | } | 285 | } |
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index d5153b6bd6cb..9cba5560519b 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -895,7 +895,7 @@ static struct clk dpll4_m4x2_ck = { | |||
895 | .ops = &clkops_omap2_dflt_wait, | 895 | .ops = &clkops_omap2_dflt_wait, |
896 | .parent = &dpll4_m4_ck, | 896 | .parent = &dpll4_m4_ck, |
897 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | 897 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), |
898 | .enable_bit = OMAP3430_PWRDN_CAM_SHIFT, | 898 | .enable_bit = OMAP3430_PWRDN_DSS1_SHIFT, |
899 | .flags = INVERT_ENABLE, | 899 | .flags = INVERT_ENABLE, |
900 | .clkdm_name = "dpll4_clkdm", | 900 | .clkdm_name = "dpll4_clkdm", |
901 | .recalc = &omap3_clkoutx2_recalc, | 901 | .recalc = &omap3_clkoutx2_recalc, |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 28b107967c86..a5c0c9c8e496 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -2671,10 +2671,10 @@ static struct omap_clk omap44xx_clks[] = { | |||
2671 | CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X), | 2671 | CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X), |
2672 | CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X), | 2672 | CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X), |
2673 | CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X), | 2673 | CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X), |
2674 | CLK("omap-mcspi.1", "ick", &dummy_ck, CK_443X), | 2674 | CLK("omap2_mcspi.1", "ick", &dummy_ck, CK_443X), |
2675 | CLK("omap-mcspi.2", "ick", &dummy_ck, CK_443X), | 2675 | CLK("omap2_mcspi.2", "ick", &dummy_ck, CK_443X), |
2676 | CLK("omap-mcspi.3", "ick", &dummy_ck, CK_443X), | 2676 | CLK("omap2_mcspi.3", "ick", &dummy_ck, CK_443X), |
2677 | CLK("omap-mcspi.4", "ick", &dummy_ck, CK_443X), | 2677 | CLK("omap2_mcspi.4", "ick", &dummy_ck, CK_443X), |
2678 | CLK(NULL, "uart1_ick", &dummy_ck, CK_443X), | 2678 | CLK(NULL, "uart1_ick", &dummy_ck, CK_443X), |
2679 | CLK(NULL, "uart2_ick", &dummy_ck, CK_443X), | 2679 | CLK(NULL, "uart2_ick", &dummy_ck, CK_443X), |
2680 | CLK(NULL, "uart3_ick", &dummy_ck, CK_443X), | 2680 | CLK(NULL, "uart3_ick", &dummy_ck, CK_443X), |
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index b87ad66f083e..6e568ec995ee 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c | |||
@@ -240,7 +240,7 @@ static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable) | |||
240 | bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO; | 240 | bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO; |
241 | else | 241 | else |
242 | bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO; | 242 | bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO; |
243 | } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) { | 243 | } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { |
244 | if (enable) | 244 | if (enable) |
245 | bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO; | 245 | bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO; |
246 | else | 246 | else |
@@ -812,7 +812,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm) | |||
812 | cm_set_mod_reg_bits(OMAP24XX_FORCESTATE, | 812 | cm_set_mod_reg_bits(OMAP24XX_FORCESTATE, |
813 | clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); | 813 | clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); |
814 | 814 | ||
815 | } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) { | 815 | } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { |
816 | 816 | ||
817 | u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP << | 817 | u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP << |
818 | __ffs(clkdm->clktrctrl_mask)); | 818 | __ffs(clkdm->clktrctrl_mask)); |
@@ -856,7 +856,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm) | |||
856 | cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE, | 856 | cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE, |
857 | clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); | 857 | clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL); |
858 | 858 | ||
859 | } else if (cpu_is_omap34xx() | cpu_is_omap44xx()) { | 859 | } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { |
860 | 860 | ||
861 | u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP << | 861 | u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP << |
862 | __ffs(clkdm->clktrctrl_mask)); | 862 | __ffs(clkdm->clktrctrl_mask)); |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 23e4d7733610..2271b9bd1f50 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -726,7 +726,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
726 | if (!cpu_is_omap44xx()) | 726 | if (!cpu_is_omap44xx()) |
727 | return; | 727 | return; |
728 | base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET; | 728 | base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET; |
729 | irq = OMAP44XX_IRQ_MMC4; | 729 | irq = OMAP44XX_IRQ_MMC5; |
730 | break; | 730 | break; |
731 | default: | 731 | default: |
732 | continue; | 732 | continue; |
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index 64d74f05abbe..e57fb29ff855 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c | |||
@@ -39,6 +39,9 @@ static int omap2_nand_gpmc_retime(void) | |||
39 | struct gpmc_timings t; | 39 | struct gpmc_timings t; |
40 | int err; | 40 | int err; |
41 | 41 | ||
42 | if (!gpmc_nand_data->gpmc_t) | ||
43 | return 0; | ||
44 | |||
42 | memset(&t, 0, sizeof(t)); | 45 | memset(&t, 0, sizeof(t)); |
43 | t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->sync_clk); | 46 | t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->sync_clk); |
44 | t.cs_on = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->cs_on); | 47 | t.cs_on = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->cs_on); |
diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S index ff25c7e4e606..50fd74916643 100644 --- a/arch/arm/mach-omap2/include/mach/entry-macro.S +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S | |||
@@ -52,7 +52,7 @@ omap_irq_base: .word 0 | |||
52 | 52 | ||
53 | mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision | 53 | mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision |
54 | and \tmp, \tmp, #0x000f0000 @ only check architecture | 54 | and \tmp, \tmp, #0x000f0000 @ only check architecture |
55 | cmp \tmp, #0x00060000 @ is v6? | 55 | cmp \tmp, #0x00070000 @ is v6? |
56 | beq 2400f @ found v6 so it's omap24xx | 56 | beq 2400f @ found v6 so it's omap24xx |
57 | mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision | 57 | mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision |
58 | and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9 | 58 | and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9 |
diff --git a/arch/arm/mach-omap2/omap-headsmp.S b/arch/arm/mach-omap2/omap-headsmp.S index aa3f65c2ac97..ef0e7a00dd6c 100644 --- a/arch/arm/mach-omap2/omap-headsmp.S +++ b/arch/arm/mach-omap2/omap-headsmp.S | |||
@@ -33,7 +33,7 @@ | |||
33 | ENTRY(omap_secondary_startup) | 33 | ENTRY(omap_secondary_startup) |
34 | hold: ldr r12,=0x103 | 34 | hold: ldr r12,=0x103 |
35 | dsb | 35 | dsb |
36 | smc @ read from AuxCoreBoot0 | 36 | smc #0 @ read from AuxCoreBoot0 |
37 | mov r0, r0, lsr #9 | 37 | mov r0, r0, lsr #9 |
38 | mrc p15, 0, r4, c0, c0, 5 | 38 | mrc p15, 0, r4, c0, c0, 5 |
39 | and r4, r4, #0x0f | 39 | and r4, r4, #0x0f |
@@ -52,7 +52,7 @@ ENTRY(omap_modify_auxcoreboot0) | |||
52 | stmfd sp!, {r1-r12, lr} | 52 | stmfd sp!, {r1-r12, lr} |
53 | ldr r12, =0x104 | 53 | ldr r12, =0x104 |
54 | dsb | 54 | dsb |
55 | smc | 55 | smc #0 |
56 | ldmfd sp!, {r1-r12, pc} | 56 | ldmfd sp!, {r1-r12, pc} |
57 | END(omap_modify_auxcoreboot0) | 57 | END(omap_modify_auxcoreboot0) |
58 | 58 | ||
@@ -60,6 +60,6 @@ ENTRY(omap_auxcoreboot_addr) | |||
60 | stmfd sp!, {r2-r12, lr} | 60 | stmfd sp!, {r2-r12, lr} |
61 | ldr r12, =0x105 | 61 | ldr r12, =0x105 |
62 | dsb | 62 | dsb |
63 | smc | 63 | smc #0 |
64 | ldmfd sp!, {r2-r12, pc} | 64 | ldmfd sp!, {r2-r12, pc} |
65 | END(omap_auxcoreboot_addr) | 65 | END(omap_auxcoreboot_addr) |
diff --git a/arch/arm/mach-omap2/omap44xx-smc.S b/arch/arm/mach-omap2/omap44xx-smc.S index 89bb2b141473..f61c7771ca47 100644 --- a/arch/arm/mach-omap2/omap44xx-smc.S +++ b/arch/arm/mach-omap2/omap44xx-smc.S | |||
@@ -27,6 +27,6 @@ ENTRY(omap_smc1) | |||
27 | mov r12, r0 | 27 | mov r12, r0 |
28 | mov r0, r1 | 28 | mov r0, r1 |
29 | dsb | 29 | dsb |
30 | smc | 30 | smc #0 |
31 | ldmfd sp!, {r2-r12, pc} | 31 | ldmfd sp!, {r2-r12, pc} |
32 | END(omap_smc1) | 32 | END(omap_smc1) |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index c6649472ce0d..e436dcb19795 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -1511,6 +1511,9 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh) | |||
1511 | c = oh->slaves[oh->_mpu_port_index]->_clk; | 1511 | c = oh->slaves[oh->_mpu_port_index]->_clk; |
1512 | } | 1512 | } |
1513 | 1513 | ||
1514 | if (!c->clkdm) | ||
1515 | return NULL; | ||
1516 | |||
1514 | return c->clkdm->pwrdm.ptr; | 1517 | return c->clkdm->pwrdm.ptr; |
1515 | 1518 | ||
1516 | } | 1519 | } |
diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 9a0fb385622b..ebfce7d1a5d3 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c | |||
@@ -222,7 +222,7 @@ void pwrdm_init(struct powerdomain **pwrdm_list) | |||
222 | { | 222 | { |
223 | struct powerdomain **p = NULL; | 223 | struct powerdomain **p = NULL; |
224 | 224 | ||
225 | if (cpu_is_omap24xx() | cpu_is_omap34xx()) { | 225 | if (cpu_is_omap24xx() || cpu_is_omap34xx()) { |
226 | pwrstctrl_reg_offs = OMAP2_PM_PWSTCTRL; | 226 | pwrstctrl_reg_offs = OMAP2_PM_PWSTCTRL; |
227 | pwrstst_reg_offs = OMAP2_PM_PWSTST; | 227 | pwrstst_reg_offs = OMAP2_PM_PWSTST; |
228 | } else if (cpu_is_omap44xx()) { | 228 | } else if (cpu_is_omap44xx()) { |
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 9537f6f2352d..07a60f1204ca 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c | |||
@@ -123,7 +123,7 @@ struct omap3_prcm_regs prcm_context; | |||
123 | u32 omap_prcm_get_reset_sources(void) | 123 | u32 omap_prcm_get_reset_sources(void) |
124 | { | 124 | { |
125 | /* XXX This presumably needs modification for 34XX */ | 125 | /* XXX This presumably needs modification for 34XX */ |
126 | if (cpu_is_omap24xx() | cpu_is_omap34xx()) | 126 | if (cpu_is_omap24xx() || cpu_is_omap34xx()) |
127 | return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f; | 127 | return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f; |
128 | if (cpu_is_omap44xx()) | 128 | if (cpu_is_omap44xx()) |
129 | return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f; | 129 | return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f; |
@@ -157,7 +157,7 @@ void omap_prcm_arch_reset(char mode, const char *cmd) | |||
157 | else | 157 | else |
158 | WARN_ON(1); | 158 | WARN_ON(1); |
159 | 159 | ||
160 | if (cpu_is_omap24xx() | cpu_is_omap34xx()) | 160 | if (cpu_is_omap24xx() || cpu_is_omap34xx()) |
161 | prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, | 161 | prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, |
162 | OMAP2_RM_RSTCTRL); | 162 | OMAP2_RM_RSTCTRL); |
163 | if (cpu_is_omap44xx()) | 163 | if (cpu_is_omap44xx()) |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index da77930480e9..3771254dfa81 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -115,7 +115,6 @@ static struct plat_serial8250_port serial_platform_data2[] = { | |||
115 | } | 115 | } |
116 | }; | 116 | }; |
117 | 117 | ||
118 | #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) | ||
119 | static struct plat_serial8250_port serial_platform_data3[] = { | 118 | static struct plat_serial8250_port serial_platform_data3[] = { |
120 | { | 119 | { |
121 | .irq = 70, | 120 | .irq = 70, |
@@ -128,23 +127,12 @@ static struct plat_serial8250_port serial_platform_data3[] = { | |||
128 | } | 127 | } |
129 | }; | 128 | }; |
130 | 129 | ||
131 | static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals) | ||
132 | { | ||
133 | serial_platform_data3[0].mapbase = omap2_globals->uart4_phys; | ||
134 | } | ||
135 | #else | ||
136 | static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals) | ||
137 | { | ||
138 | } | ||
139 | #endif | ||
140 | |||
141 | void __init omap2_set_globals_uart(struct omap_globals *omap2_globals) | 130 | void __init omap2_set_globals_uart(struct omap_globals *omap2_globals) |
142 | { | 131 | { |
143 | serial_platform_data0[0].mapbase = omap2_globals->uart1_phys; | 132 | serial_platform_data0[0].mapbase = omap2_globals->uart1_phys; |
144 | serial_platform_data1[0].mapbase = omap2_globals->uart2_phys; | 133 | serial_platform_data1[0].mapbase = omap2_globals->uart2_phys; |
145 | serial_platform_data2[0].mapbase = omap2_globals->uart3_phys; | 134 | serial_platform_data2[0].mapbase = omap2_globals->uart3_phys; |
146 | if (cpu_is_omap3630() || cpu_is_omap44xx()) | 135 | serial_platform_data3[0].mapbase = omap2_globals->uart4_phys; |
147 | omap2_set_globals_uart4(omap2_globals); | ||
148 | } | 136 | } |
149 | 137 | ||
150 | static inline unsigned int __serial_read_reg(struct uart_port *up, | 138 | static inline unsigned int __serial_read_reg(struct uart_port *up, |
@@ -550,7 +538,7 @@ static ssize_t sleep_timeout_store(struct device *dev, | |||
550 | unsigned int value; | 538 | unsigned int value; |
551 | 539 | ||
552 | if (sscanf(buf, "%u", &value) != 1) { | 540 | if (sscanf(buf, "%u", &value) != 1) { |
553 | printk(KERN_ERR "sleep_timeout_store: Invalid value\n"); | 541 | dev_err(dev, "sleep_timeout_store: Invalid value\n"); |
554 | return -EINVAL; | 542 | return -EINVAL; |
555 | } | 543 | } |
556 | 544 | ||
@@ -664,27 +652,33 @@ void __init omap_serial_early_init(void) | |||
664 | struct device *dev = &pdev->dev; | 652 | struct device *dev = &pdev->dev; |
665 | struct plat_serial8250_port *p = dev->platform_data; | 653 | struct plat_serial8250_port *p = dev->platform_data; |
666 | 654 | ||
655 | /* Don't map zero-based physical address */ | ||
656 | if (p->mapbase == 0) { | ||
657 | dev_warn(dev, "no physical address for uart#%d," | ||
658 | " so skipping early_init...\n", i); | ||
659 | continue; | ||
660 | } | ||
667 | /* | 661 | /* |
668 | * Module 4KB + L4 interconnect 4KB | 662 | * Module 4KB + L4 interconnect 4KB |
669 | * Static mapping, never released | 663 | * Static mapping, never released |
670 | */ | 664 | */ |
671 | p->membase = ioremap(p->mapbase, SZ_8K); | 665 | p->membase = ioremap(p->mapbase, SZ_8K); |
672 | if (!p->membase) { | 666 | if (!p->membase) { |
673 | printk(KERN_ERR "ioremap failed for uart%i\n", i + 1); | 667 | dev_err(dev, "ioremap failed for uart%i\n", i + 1); |
674 | continue; | 668 | continue; |
675 | } | 669 | } |
676 | 670 | ||
677 | sprintf(name, "uart%d_ick", i + 1); | 671 | sprintf(name, "uart%d_ick", i + 1); |
678 | uart->ick = clk_get(NULL, name); | 672 | uart->ick = clk_get(NULL, name); |
679 | if (IS_ERR(uart->ick)) { | 673 | if (IS_ERR(uart->ick)) { |
680 | printk(KERN_ERR "Could not get uart%d_ick\n", i + 1); | 674 | dev_err(dev, "Could not get uart%d_ick\n", i + 1); |
681 | uart->ick = NULL; | 675 | uart->ick = NULL; |
682 | } | 676 | } |
683 | 677 | ||
684 | sprintf(name, "uart%d_fck", i+1); | 678 | sprintf(name, "uart%d_fck", i+1); |
685 | uart->fck = clk_get(NULL, name); | 679 | uart->fck = clk_get(NULL, name); |
686 | if (IS_ERR(uart->fck)) { | 680 | if (IS_ERR(uart->fck)) { |
687 | printk(KERN_ERR "Could not get uart%d_fck\n", i + 1); | 681 | dev_err(dev, "Could not get uart%d_fck\n", i + 1); |
688 | uart->fck = NULL; | 682 | uart->fck = NULL; |
689 | } | 683 | } |
690 | 684 | ||
@@ -727,6 +721,13 @@ void __init omap_serial_init_port(int port) | |||
727 | pdev = &uart->pdev; | 721 | pdev = &uart->pdev; |
728 | dev = &pdev->dev; | 722 | dev = &pdev->dev; |
729 | 723 | ||
724 | /* Don't proceed if there's no clocks available */ | ||
725 | if (unlikely(!uart->ick || !uart->fck)) { | ||
726 | WARN(1, "%s: can't init uart%d, no clocks available\n", | ||
727 | kobject_name(&dev->kobj), port); | ||
728 | return; | ||
729 | } | ||
730 | |||
730 | omap_uart_enable_clocks(uart); | 731 | omap_uart_enable_clocks(uart); |
731 | 732 | ||
732 | omap_uart_reset(uart); | 733 | omap_uart_reset(uart); |
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h index 811743c56147..5f2ba8d9015c 100644 --- a/arch/arm/mach-pxa/include/mach/colibri.h +++ b/arch/arm/mach-pxa/include/mach/colibri.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _COLIBRI_H_ | 2 | #define _COLIBRI_H_ |
3 | 3 | ||
4 | #include <net/ax88796.h> | 4 | #include <net/ax88796.h> |
5 | #include <mach/mfp.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * common settings for all modules | 8 | * common settings for all modules |
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h index 7515757d6911..3d8d8cb09685 100644 --- a/arch/arm/mach-pxa/include/mach/hardware.h +++ b/arch/arm/mach-pxa/include/mach/hardware.h | |||
@@ -202,7 +202,7 @@ | |||
202 | #define __cpu_is_pxa950(id) \ | 202 | #define __cpu_is_pxa950(id) \ |
203 | ({ \ | 203 | ({ \ |
204 | unsigned int _id = (id) >> 4 & 0xfff; \ | 204 | unsigned int _id = (id) >> 4 & 0xfff; \ |
205 | id == 0x697; \ | 205 | _id == 0x697; \ |
206 | }) | 206 | }) |
207 | #else | 207 | #else |
208 | #define __cpu_is_pxa950(id) (0) | 208 | #define __cpu_is_pxa950(id) (0) |
diff --git a/arch/arm/mach-pxa/include/mach/regs-u2d.h b/arch/arm/mach-pxa/include/mach/regs-u2d.h index 44b0b20b69a4..c15c0c57de08 100644 --- a/arch/arm/mach-pxa/include/mach/regs-u2d.h +++ b/arch/arm/mach-pxa/include/mach/regs-u2d.h | |||
@@ -166,7 +166,8 @@ | |||
166 | #define U2DMACSR_BUSERRTYPE (7 << 10) /* PX Bus Error Type */ | 166 | #define U2DMACSR_BUSERRTYPE (7 << 10) /* PX Bus Error Type */ |
167 | #define U2DMACSR_EORINTR (1 << 9) /* End Of Receive */ | 167 | #define U2DMACSR_EORINTR (1 << 9) /* End Of Receive */ |
168 | #define U2DMACSR_REQPEND (1 << 8) /* Request Pending */ | 168 | #define U2DMACSR_REQPEND (1 << 8) /* Request Pending */ |
169 | #define U2DMACSR_RASINTR (1 << 4) /* Request After Channel Stopped (read / write 1 clear) */#define U2DMACSR_STOPINTR (1 << 3) /* Stop Interrupt (read only) */ | 169 | #define U2DMACSR_RASINTR (1 << 4) /* Request After Channel Stopped (read / write 1 clear) */ |
170 | #define U2DMACSR_STOPINTR (1 << 3) /* Stop Interrupt (read only) */ | ||
170 | #define U2DMACSR_ENDINTR (1 << 2) /* End Interrupt (read / write 1 clear) */ | 171 | #define U2DMACSR_ENDINTR (1 << 2) /* End Interrupt (read / write 1 clear) */ |
171 | #define U2DMACSR_STARTINTR (1 << 1) /* Start Interrupt (read / write 1 clear) */ | 172 | #define U2DMACSR_STARTINTR (1 << 1) /* Start Interrupt (read / write 1 clear) */ |
172 | #define U2DMACSR_BUSERRINTR (1 << 0) /* Bus Error Interrupt (read / write 1 clear) */ | 173 | #define U2DMACSR_BUSERRINTR (1 << 0) /* Bus Error Interrupt (read / write 1 clear) */ |
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 44bb675e47f1..d12667bd9ebe 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
@@ -983,7 +983,7 @@ static void __init raumfeld_common_init(void) | |||
983 | int i; | 983 | int i; |
984 | 984 | ||
985 | for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++) | 985 | for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++) |
986 | if (!strcmp(gpio_keys_button[i].desc, "on/off button")) | 986 | if (!strcmp(gpio_keys_button[i].desc, "on_off button")) |
987 | gpio_keys_button[i].active_low = 1; | 987 | gpio_keys_button[i].active_low = 1; |
988 | } | 988 | } |
989 | 989 | ||
@@ -1009,8 +1009,7 @@ static void __init raumfeld_common_init(void) | |||
1009 | gpio_direction_output(GPIO_W2W_PDN, 0); | 1009 | gpio_direction_output(GPIO_W2W_PDN, 0); |
1010 | 1010 | ||
1011 | /* this can be used to switch off the device */ | 1011 | /* this can be used to switch off the device */ |
1012 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, | 1012 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown"); |
1013 | "supply shutdown"); | ||
1014 | if (ret < 0) | 1013 | if (ret < 0) |
1015 | pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); | 1014 | pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); |
1016 | else | 1015 | else |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 19b5109d9808..01bdd7500df4 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -363,7 +363,7 @@ static struct gpio_keys_button spitz_gpio_keys[] = { | |||
363 | .type = EV_PWR, | 363 | .type = EV_PWR, |
364 | .code = KEY_SUSPEND, | 364 | .code = KEY_SUSPEND, |
365 | .gpio = SPITZ_GPIO_ON_KEY, | 365 | .gpio = SPITZ_GPIO_ON_KEY, |
366 | .desc = "On/Off", | 366 | .desc = "On Off", |
367 | .wakeup = 1, | 367 | .wakeup = 1, |
368 | }, | 368 | }, |
369 | /* Two buttons detecting the lid state */ | 369 | /* Two buttons detecting the lid state */ |
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index 9e0c5c3988a1..e90114a7e246 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/pm.h> | 34 | #include <linux/pm.h> |
35 | #include <linux/sched.h> | 35 | #include <linux/sched.h> |
36 | #include <linux/gpio.h> | 36 | #include <linux/gpio.h> |
37 | #include <linux/jiffies.h> | ||
37 | #include <linux/i2c-gpio.h> | 38 | #include <linux/i2c-gpio.h> |
38 | #include <linux/serial_8250.h> | 39 | #include <linux/serial_8250.h> |
39 | #include <linux/smc91x.h> | 40 | #include <linux/smc91x.h> |
@@ -454,7 +455,7 @@ static struct i2c_gpio_platform_data i2c_bus_data = { | |||
454 | .sda_pin = VIPER_RTC_I2C_SDA_GPIO, | 455 | .sda_pin = VIPER_RTC_I2C_SDA_GPIO, |
455 | .scl_pin = VIPER_RTC_I2C_SCL_GPIO, | 456 | .scl_pin = VIPER_RTC_I2C_SCL_GPIO, |
456 | .udelay = 10, | 457 | .udelay = 10, |
457 | .timeout = 100, | 458 | .timeout = HZ, |
458 | }; | 459 | }; |
459 | 460 | ||
460 | static struct platform_device i2c_bus_device = { | 461 | static struct platform_device i2c_bus_device = { |
@@ -779,7 +780,7 @@ static void __init viper_tpm_init(void) | |||
779 | .sda_pin = VIPER_TPM_I2C_SDA_GPIO, | 780 | .sda_pin = VIPER_TPM_I2C_SDA_GPIO, |
780 | .scl_pin = VIPER_TPM_I2C_SCL_GPIO, | 781 | .scl_pin = VIPER_TPM_I2C_SCL_GPIO, |
781 | .udelay = 10, | 782 | .udelay = 10, |
782 | .timeout = 100, | 783 | .timeout = HZ, |
783 | }; | 784 | }; |
784 | char *errstr; | 785 | char *errstr; |
785 | 786 | ||
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index f2dbce5f3cd4..d5a95738f85b 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -254,7 +254,7 @@ static unsigned int realview_mmc_status(struct device *dev) | |||
254 | else | 254 | else |
255 | mask = 2; | 255 | mask = 2; |
256 | 256 | ||
257 | return readl(REALVIEW_SYSMCI) & mask; | 257 | return !(readl(REALVIEW_SYSMCI) & mask); |
258 | } | 258 | } |
259 | 259 | ||
260 | struct mmci_platform_data realview_mmc0_plat_data = { | 260 | struct mmci_platform_data realview_mmc0_plat_data = { |
diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig index b17d52f7cc48..fd4c52b7ccb6 100644 --- a/arch/arm/mach-sa1100/Kconfig +++ b/arch/arm/mach-sa1100/Kconfig | |||
@@ -57,7 +57,7 @@ config SA1100_COLLIE | |||
57 | config SA1100_H3100 | 57 | config SA1100_H3100 |
58 | bool "Compaq iPAQ H3100" | 58 | bool "Compaq iPAQ H3100" |
59 | select HTC_EGPIO | 59 | select HTC_EGPIO |
60 | select CPU_FREQ_SA1100 | 60 | select CPU_FREQ_SA1110 |
61 | help | 61 | help |
62 | Say Y here if you intend to run this kernel on the Compaq iPAQ | 62 | Say Y here if you intend to run this kernel on the Compaq iPAQ |
63 | H3100 handheld computer. Information about this machine and the | 63 | H3100 handheld computer. Information about this machine and the |
@@ -68,7 +68,7 @@ config SA1100_H3100 | |||
68 | config SA1100_H3600 | 68 | config SA1100_H3600 |
69 | bool "Compaq iPAQ H3600/H3700" | 69 | bool "Compaq iPAQ H3600/H3700" |
70 | select HTC_EGPIO | 70 | select HTC_EGPIO |
71 | select CPU_FREQ_SA1100 | 71 | select CPU_FREQ_SA1110 |
72 | help | 72 | help |
73 | Say Y here if you intend to run this kernel on the Compaq iPAQ | 73 | Say Y here if you intend to run this kernel on the Compaq iPAQ |
74 | H3600 handheld computer. Information about this machine and the | 74 | H3600 handheld computer. Information about this machine and the |
diff --git a/arch/arm/mach-sa1100/cpu-sa1110.c b/arch/arm/mach-sa1100/cpu-sa1110.c index 63b32b68b296..7252874d328b 100644 --- a/arch/arm/mach-sa1100/cpu-sa1110.c +++ b/arch/arm/mach-sa1100/cpu-sa1110.c | |||
@@ -363,6 +363,9 @@ static int __init sa1110_clk_init(void) | |||
363 | struct sdram_params *sdram; | 363 | struct sdram_params *sdram; |
364 | const char *name = sdram_name; | 364 | const char *name = sdram_name; |
365 | 365 | ||
366 | if (!cpu_is_sa1110()) | ||
367 | return -ENODEV; | ||
368 | |||
366 | if (!name[0]) { | 369 | if (!name[0]) { |
367 | if (machine_is_assabet()) | 370 | if (machine_is_assabet()) |
368 | name = "TC59SM716-CL3"; | 371 | name = "TC59SM716-CL3"; |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index edddd66faac6..a2ab51fa73e2 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -166,15 +166,15 @@ union offset_union { | |||
166 | THUMB( "1: "ins" %1, [%2]\n" ) \ | 166 | THUMB( "1: "ins" %1, [%2]\n" ) \ |
167 | THUMB( " add %2, %2, #1\n" ) \ | 167 | THUMB( " add %2, %2, #1\n" ) \ |
168 | "2:\n" \ | 168 | "2:\n" \ |
169 | " .section .fixup,\"ax\"\n" \ | 169 | " .pushsection .fixup,\"ax\"\n" \ |
170 | " .align 2\n" \ | 170 | " .align 2\n" \ |
171 | "3: mov %0, #1\n" \ | 171 | "3: mov %0, #1\n" \ |
172 | " b 2b\n" \ | 172 | " b 2b\n" \ |
173 | " .previous\n" \ | 173 | " .popsection\n" \ |
174 | " .section __ex_table,\"a\"\n" \ | 174 | " .pushsection __ex_table,\"a\"\n" \ |
175 | " .align 3\n" \ | 175 | " .align 3\n" \ |
176 | " .long 1b, 3b\n" \ | 176 | " .long 1b, 3b\n" \ |
177 | " .previous\n" \ | 177 | " .popsection\n" \ |
178 | : "=r" (err), "=&r" (val), "=r" (addr) \ | 178 | : "=r" (err), "=&r" (val), "=r" (addr) \ |
179 | : "0" (err), "2" (addr)) | 179 | : "0" (err), "2" (addr)) |
180 | 180 | ||
@@ -226,16 +226,16 @@ union offset_union { | |||
226 | " mov %1, %1, "NEXT_BYTE"\n" \ | 226 | " mov %1, %1, "NEXT_BYTE"\n" \ |
227 | "2: "ins" %1, [%2]\n" \ | 227 | "2: "ins" %1, [%2]\n" \ |
228 | "3:\n" \ | 228 | "3:\n" \ |
229 | " .section .fixup,\"ax\"\n" \ | 229 | " .pushsection .fixup,\"ax\"\n" \ |
230 | " .align 2\n" \ | 230 | " .align 2\n" \ |
231 | "4: mov %0, #1\n" \ | 231 | "4: mov %0, #1\n" \ |
232 | " b 3b\n" \ | 232 | " b 3b\n" \ |
233 | " .previous\n" \ | 233 | " .popsection\n" \ |
234 | " .section __ex_table,\"a\"\n" \ | 234 | " .pushsection __ex_table,\"a\"\n" \ |
235 | " .align 3\n" \ | 235 | " .align 3\n" \ |
236 | " .long 1b, 4b\n" \ | 236 | " .long 1b, 4b\n" \ |
237 | " .long 2b, 4b\n" \ | 237 | " .long 2b, 4b\n" \ |
238 | " .previous\n" \ | 238 | " .popsection\n" \ |
239 | : "=r" (err), "=&r" (v), "=&r" (a) \ | 239 | : "=r" (err), "=&r" (v), "=&r" (a) \ |
240 | : "0" (err), "1" (v), "2" (a)); \ | 240 | : "0" (err), "1" (v), "2" (a)); \ |
241 | if (err) \ | 241 | if (err) \ |
@@ -266,18 +266,18 @@ union offset_union { | |||
266 | " mov %1, %1, "NEXT_BYTE"\n" \ | 266 | " mov %1, %1, "NEXT_BYTE"\n" \ |
267 | "4: "ins" %1, [%2]\n" \ | 267 | "4: "ins" %1, [%2]\n" \ |
268 | "5:\n" \ | 268 | "5:\n" \ |
269 | " .section .fixup,\"ax\"\n" \ | 269 | " .pushsection .fixup,\"ax\"\n" \ |
270 | " .align 2\n" \ | 270 | " .align 2\n" \ |
271 | "6: mov %0, #1\n" \ | 271 | "6: mov %0, #1\n" \ |
272 | " b 5b\n" \ | 272 | " b 5b\n" \ |
273 | " .previous\n" \ | 273 | " .popsection\n" \ |
274 | " .section __ex_table,\"a\"\n" \ | 274 | " .pushsection __ex_table,\"a\"\n" \ |
275 | " .align 3\n" \ | 275 | " .align 3\n" \ |
276 | " .long 1b, 6b\n" \ | 276 | " .long 1b, 6b\n" \ |
277 | " .long 2b, 6b\n" \ | 277 | " .long 2b, 6b\n" \ |
278 | " .long 3b, 6b\n" \ | 278 | " .long 3b, 6b\n" \ |
279 | " .long 4b, 6b\n" \ | 279 | " .long 4b, 6b\n" \ |
280 | " .previous\n" \ | 280 | " .popsection\n" \ |
281 | : "=r" (err), "=&r" (v), "=&r" (a) \ | 281 | : "=r" (err), "=&r" (v), "=&r" (a) \ |
282 | : "0" (err), "1" (v), "2" (a)); \ | 282 | : "0" (err), "1" (v), "2" (a)); \ |
283 | if (err) \ | 283 | if (err) \ |
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 9d89c67a1cc3..e46ecd847138 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S | |||
@@ -211,6 +211,9 @@ v6_dma_inv_range: | |||
211 | mcrne p15, 0, r1, c7, c15, 1 @ clean & invalidate unified line | 211 | mcrne p15, 0, r1, c7, c15, 1 @ clean & invalidate unified line |
212 | #endif | 212 | #endif |
213 | 1: | 213 | 1: |
214 | #ifdef CONFIG_SMP | ||
215 | str r0, [r0] @ write for ownership | ||
216 | #endif | ||
214 | #ifdef HARVARD_CACHE | 217 | #ifdef HARVARD_CACHE |
215 | mcr p15, 0, r0, c7, c6, 1 @ invalidate D line | 218 | mcr p15, 0, r0, c7, c6, 1 @ invalidate D line |
216 | #else | 219 | #else |
@@ -231,6 +234,9 @@ v6_dma_inv_range: | |||
231 | v6_dma_clean_range: | 234 | v6_dma_clean_range: |
232 | bic r0, r0, #D_CACHE_LINE_SIZE - 1 | 235 | bic r0, r0, #D_CACHE_LINE_SIZE - 1 |
233 | 1: | 236 | 1: |
237 | #ifdef CONFIG_SMP | ||
238 | ldr r2, [r0] @ read for ownership | ||
239 | #endif | ||
234 | #ifdef HARVARD_CACHE | 240 | #ifdef HARVARD_CACHE |
235 | mcr p15, 0, r0, c7, c10, 1 @ clean D line | 241 | mcr p15, 0, r0, c7, c10, 1 @ clean D line |
236 | #else | 242 | #else |
@@ -251,6 +257,10 @@ v6_dma_clean_range: | |||
251 | ENTRY(v6_dma_flush_range) | 257 | ENTRY(v6_dma_flush_range) |
252 | bic r0, r0, #D_CACHE_LINE_SIZE - 1 | 258 | bic r0, r0, #D_CACHE_LINE_SIZE - 1 |
253 | 1: | 259 | 1: |
260 | #ifdef CONFIG_SMP | ||
261 | ldr r2, [r0] @ read for ownership | ||
262 | str r2, [r0] @ write for ownership | ||
263 | #endif | ||
254 | #ifdef HARVARD_CACHE | 264 | #ifdef HARVARD_CACHE |
255 | mcr p15, 0, r0, c7, c14, 1 @ clean & invalidate D line | 265 | mcr p15, 0, r0, c7, c14, 1 @ clean & invalidate D line |
256 | #else | 266 | #else |
@@ -273,7 +283,9 @@ ENTRY(v6_dma_map_area) | |||
273 | add r1, r1, r0 | 283 | add r1, r1, r0 |
274 | teq r2, #DMA_FROM_DEVICE | 284 | teq r2, #DMA_FROM_DEVICE |
275 | beq v6_dma_inv_range | 285 | beq v6_dma_inv_range |
276 | b v6_dma_clean_range | 286 | teq r2, #DMA_TO_DEVICE |
287 | beq v6_dma_clean_range | ||
288 | b v6_dma_flush_range | ||
277 | ENDPROC(v6_dma_map_area) | 289 | ENDPROC(v6_dma_map_area) |
278 | 290 | ||
279 | /* | 291 | /* |
@@ -283,9 +295,6 @@ ENDPROC(v6_dma_map_area) | |||
283 | * - dir - DMA direction | 295 | * - dir - DMA direction |
284 | */ | 296 | */ |
285 | ENTRY(v6_dma_unmap_area) | 297 | ENTRY(v6_dma_unmap_area) |
286 | add r1, r1, r0 | ||
287 | teq r2, #DMA_TO_DEVICE | ||
288 | bne v6_dma_inv_range | ||
289 | mov pc, lr | 298 | mov pc, lr |
290 | ENDPROC(v6_dma_unmap_area) | 299 | ENDPROC(v6_dma_unmap_area) |
291 | 300 | ||
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index bcd64f265870..06a90dcfc60a 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
@@ -167,7 +167,11 @@ ENTRY(v7_coherent_user_range) | |||
167 | cmp r0, r1 | 167 | cmp r0, r1 |
168 | blo 1b | 168 | blo 1b |
169 | mov r0, #0 | 169 | mov r0, #0 |
170 | #ifdef CONFIG_SMP | ||
171 | mcr p15, 0, r0, c7, c1, 6 @ invalidate BTB Inner Shareable | ||
172 | #else | ||
170 | mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB | 173 | mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB |
174 | #endif | ||
171 | dsb | 175 | dsb |
172 | isb | 176 | isb |
173 | mov pc, lr | 177 | mov pc, lr |
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c index 8bca4dea6dfa..f55fa1044f72 100644 --- a/arch/arm/mm/copypage-v6.c +++ b/arch/arm/mm/copypage-v6.c | |||
@@ -41,14 +41,7 @@ static void v6_copy_user_highpage_nonaliasing(struct page *to, | |||
41 | kfrom = kmap_atomic(from, KM_USER0); | 41 | kfrom = kmap_atomic(from, KM_USER0); |
42 | kto = kmap_atomic(to, KM_USER1); | 42 | kto = kmap_atomic(to, KM_USER1); |
43 | copy_page(kto, kfrom); | 43 | copy_page(kto, kfrom); |
44 | #ifdef CONFIG_HIGHMEM | 44 | __cpuc_flush_dcache_area(kto, PAGE_SIZE); |
45 | /* | ||
46 | * kmap_atomic() doesn't set the page virtual address, and | ||
47 | * kunmap_atomic() takes care of cache flushing already. | ||
48 | */ | ||
49 | if (page_address(to) != NULL) | ||
50 | #endif | ||
51 | __cpuc_flush_dcache_area(kto, PAGE_SIZE); | ||
52 | kunmap_atomic(kto, KM_USER1); | 45 | kunmap_atomic(kto, KM_USER1); |
53 | kunmap_atomic(kfrom, KM_USER0); | 46 | kunmap_atomic(kfrom, KM_USER0); |
54 | } | 47 | } |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 1351edc0b26f..13fa536d82e6 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -464,6 +464,11 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset, | |||
464 | vaddr += offset; | 464 | vaddr += offset; |
465 | op(vaddr, len, dir); | 465 | op(vaddr, len, dir); |
466 | kunmap_high(page); | 466 | kunmap_high(page); |
467 | } else if (cache_is_vipt()) { | ||
468 | pte_t saved_pte; | ||
469 | vaddr = kmap_high_l1_vipt(page, &saved_pte); | ||
470 | op(vaddr + offset, len, dir); | ||
471 | kunmap_high_l1_vipt(page, saved_pte); | ||
467 | } | 472 | } |
468 | } else { | 473 | } else { |
469 | vaddr = page_address(page) + offset; | 474 | vaddr = page_address(page) + offset; |
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index e34f095e2090..c6844cb9b508 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
15 | #include <asm/cachetype.h> | 15 | #include <asm/cachetype.h> |
16 | #include <asm/highmem.h> | ||
16 | #include <asm/smp_plat.h> | 17 | #include <asm/smp_plat.h> |
17 | #include <asm/system.h> | 18 | #include <asm/system.h> |
18 | #include <asm/tlbflush.h> | 19 | #include <asm/tlbflush.h> |
@@ -152,21 +153,25 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page, | |||
152 | 153 | ||
153 | void __flush_dcache_page(struct address_space *mapping, struct page *page) | 154 | void __flush_dcache_page(struct address_space *mapping, struct page *page) |
154 | { | 155 | { |
155 | void *addr = page_address(page); | ||
156 | |||
157 | /* | 156 | /* |
158 | * Writeback any data associated with the kernel mapping of this | 157 | * Writeback any data associated with the kernel mapping of this |
159 | * page. This ensures that data in the physical page is mutually | 158 | * page. This ensures that data in the physical page is mutually |
160 | * coherent with the kernels mapping. | 159 | * coherent with the kernels mapping. |
161 | */ | 160 | */ |
162 | #ifdef CONFIG_HIGHMEM | 161 | if (!PageHighMem(page)) { |
163 | /* | 162 | __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE); |
164 | * kmap_atomic() doesn't set the page virtual address, and | 163 | } else { |
165 | * kunmap_atomic() takes care of cache flushing already. | 164 | void *addr = kmap_high_get(page); |
166 | */ | 165 | if (addr) { |
167 | if (addr) | 166 | __cpuc_flush_dcache_area(addr, PAGE_SIZE); |
168 | #endif | 167 | kunmap_high(page); |
169 | __cpuc_flush_dcache_area(addr, PAGE_SIZE); | 168 | } else if (cache_is_vipt()) { |
169 | pte_t saved_pte; | ||
170 | addr = kmap_high_l1_vipt(page, &saved_pte); | ||
171 | __cpuc_flush_dcache_area(addr, PAGE_SIZE); | ||
172 | kunmap_high_l1_vipt(page, saved_pte); | ||
173 | } | ||
174 | } | ||
170 | 175 | ||
171 | /* | 176 | /* |
172 | * If this is a page cache page, and we have an aliasing VIPT cache, | 177 | * If this is a page cache page, and we have an aliasing VIPT cache, |
diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c index 2be1ec7c1b41..77b030f5ec09 100644 --- a/arch/arm/mm/highmem.c +++ b/arch/arm/mm/highmem.c | |||
@@ -79,7 +79,8 @@ void kunmap_atomic(void *kvaddr, enum km_type type) | |||
79 | unsigned int idx = type + KM_TYPE_NR * smp_processor_id(); | 79 | unsigned int idx = type + KM_TYPE_NR * smp_processor_id(); |
80 | 80 | ||
81 | if (kvaddr >= (void *)FIXADDR_START) { | 81 | if (kvaddr >= (void *)FIXADDR_START) { |
82 | __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); | 82 | if (cache_is_vivt()) |
83 | __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); | ||
83 | #ifdef CONFIG_DEBUG_HIGHMEM | 84 | #ifdef CONFIG_DEBUG_HIGHMEM |
84 | BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx)); | 85 | BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx)); |
85 | set_pte_ext(TOP_PTE(vaddr), __pte(0), 0); | 86 | set_pte_ext(TOP_PTE(vaddr), __pte(0), 0); |
@@ -124,3 +125,87 @@ struct page *kmap_atomic_to_page(const void *ptr) | |||
124 | pte = TOP_PTE(vaddr); | 125 | pte = TOP_PTE(vaddr); |
125 | return pte_page(*pte); | 126 | return pte_page(*pte); |
126 | } | 127 | } |
128 | |||
129 | #ifdef CONFIG_CPU_CACHE_VIPT | ||
130 | |||
131 | #include <linux/percpu.h> | ||
132 | |||
133 | /* | ||
134 | * The VIVT cache of a highmem page is always flushed before the page | ||
135 | * is unmapped. Hence unmapped highmem pages need no cache maintenance | ||
136 | * in that case. | ||
137 | * | ||
138 | * However unmapped pages may still be cached with a VIPT cache, and | ||
139 | * it is not possible to perform cache maintenance on them using physical | ||
140 | * addresses unfortunately. So we have no choice but to set up a temporary | ||
141 | * virtual mapping for that purpose. | ||
142 | * | ||
143 | * Yet this VIPT cache maintenance may be triggered from DMA support | ||
144 | * functions which are possibly called from interrupt context. As we don't | ||
145 | * want to keep interrupt disabled all the time when such maintenance is | ||
146 | * taking place, we therefore allow for some reentrancy by preserving and | ||
147 | * restoring the previous fixmap entry before the interrupted context is | ||
148 | * resumed. If the reentrancy depth is 0 then there is no need to restore | ||
149 | * the previous fixmap, and leaving the current one in place allow it to | ||
150 | * be reused the next time without a TLB flush (common with DMA). | ||
151 | */ | ||
152 | |||
153 | static DEFINE_PER_CPU(int, kmap_high_l1_vipt_depth); | ||
154 | |||
155 | void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte) | ||
156 | { | ||
157 | unsigned int idx, cpu = smp_processor_id(); | ||
158 | int *depth = &per_cpu(kmap_high_l1_vipt_depth, cpu); | ||
159 | unsigned long vaddr, flags; | ||
160 | pte_t pte, *ptep; | ||
161 | |||
162 | idx = KM_L1_CACHE + KM_TYPE_NR * cpu; | ||
163 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
164 | ptep = TOP_PTE(vaddr); | ||
165 | pte = mk_pte(page, kmap_prot); | ||
166 | |||
167 | if (!in_interrupt()) | ||
168 | preempt_disable(); | ||
169 | |||
170 | raw_local_irq_save(flags); | ||
171 | (*depth)++; | ||
172 | if (pte_val(*ptep) == pte_val(pte)) { | ||
173 | *saved_pte = pte; | ||
174 | } else { | ||
175 | *saved_pte = *ptep; | ||
176 | set_pte_ext(ptep, pte, 0); | ||
177 | local_flush_tlb_kernel_page(vaddr); | ||
178 | } | ||
179 | raw_local_irq_restore(flags); | ||
180 | |||
181 | return (void *)vaddr; | ||
182 | } | ||
183 | |||
184 | void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte) | ||
185 | { | ||
186 | unsigned int idx, cpu = smp_processor_id(); | ||
187 | int *depth = &per_cpu(kmap_high_l1_vipt_depth, cpu); | ||
188 | unsigned long vaddr, flags; | ||
189 | pte_t pte, *ptep; | ||
190 | |||
191 | idx = KM_L1_CACHE + KM_TYPE_NR * cpu; | ||
192 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
193 | ptep = TOP_PTE(vaddr); | ||
194 | pte = mk_pte(page, kmap_prot); | ||
195 | |||
196 | BUG_ON(pte_val(*ptep) != pte_val(pte)); | ||
197 | BUG_ON(*depth <= 0); | ||
198 | |||
199 | raw_local_irq_save(flags); | ||
200 | (*depth)--; | ||
201 | if (*depth != 0 && pte_val(pte) != pte_val(saved_pte)) { | ||
202 | set_pte_ext(ptep, saved_pte, 0); | ||
203 | local_flush_tlb_kernel_page(vaddr); | ||
204 | } | ||
205 | raw_local_irq_restore(flags); | ||
206 | |||
207 | if (!in_interrupt()) | ||
208 | preempt_enable(); | ||
209 | } | ||
210 | |||
211 | #endif /* CONFIG_CPU_CACHE_VIPT */ | ||
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 83db12a68d56..0ed29bfeba1c 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -86,9 +86,6 @@ void show_mem(void) | |||
86 | printk("Mem-info:\n"); | 86 | printk("Mem-info:\n"); |
87 | show_free_areas(); | 87 | show_free_areas(); |
88 | for_each_online_node(node) { | 88 | for_each_online_node(node) { |
89 | pg_data_t *n = NODE_DATA(node); | ||
90 | struct page *map = pgdat_page_nr(n, 0) - n->node_start_pfn; | ||
91 | |||
92 | for_each_nodebank (i,mi,node) { | 89 | for_each_nodebank (i,mi,node) { |
93 | struct membank *bank = &mi->bank[i]; | 90 | struct membank *bank = &mi->bank[i]; |
94 | unsigned int pfn1, pfn2; | 91 | unsigned int pfn1, pfn2; |
@@ -97,8 +94,8 @@ void show_mem(void) | |||
97 | pfn1 = bank_pfn_start(bank); | 94 | pfn1 = bank_pfn_start(bank); |
98 | pfn2 = bank_pfn_end(bank); | 95 | pfn2 = bank_pfn_end(bank); |
99 | 96 | ||
100 | page = map + pfn1; | 97 | page = pfn_to_page(pfn1); |
101 | end = map + pfn2; | 98 | end = pfn_to_page(pfn2 - 1) + 1; |
102 | 99 | ||
103 | do { | 100 | do { |
104 | total++; | 101 | total++; |
@@ -603,9 +600,6 @@ void __init mem_init(void) | |||
603 | reserved_pages = free_pages = 0; | 600 | reserved_pages = free_pages = 0; |
604 | 601 | ||
605 | for_each_online_node(node) { | 602 | for_each_online_node(node) { |
606 | pg_data_t *n = NODE_DATA(node); | ||
607 | struct page *map = pgdat_page_nr(n, 0) - n->node_start_pfn; | ||
608 | |||
609 | for_each_nodebank(i, &meminfo, node) { | 603 | for_each_nodebank(i, &meminfo, node) { |
610 | struct membank *bank = &meminfo.bank[i]; | 604 | struct membank *bank = &meminfo.bank[i]; |
611 | unsigned int pfn1, pfn2; | 605 | unsigned int pfn1, pfn2; |
@@ -614,8 +608,8 @@ void __init mem_init(void) | |||
614 | pfn1 = bank_pfn_start(bank); | 608 | pfn1 = bank_pfn_start(bank); |
615 | pfn2 = bank_pfn_end(bank); | 609 | pfn2 = bank_pfn_end(bank); |
616 | 610 | ||
617 | page = map + pfn1; | 611 | page = pfn_to_page(pfn1); |
618 | end = map + pfn2; | 612 | end = pfn_to_page(pfn2 - 1) + 1; |
619 | 613 | ||
620 | do { | 614 | do { |
621 | if (PageReserved(page)) | 615 | if (PageReserved(page)) |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 9d4da6ac28eb..241c24a1c18f 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -420,6 +420,10 @@ static void __init build_mem_type_table(void) | |||
420 | user_pgprot |= L_PTE_SHARED; | 420 | user_pgprot |= L_PTE_SHARED; |
421 | kern_pgprot |= L_PTE_SHARED; | 421 | kern_pgprot |= L_PTE_SHARED; |
422 | vecs_pgprot |= L_PTE_SHARED; | 422 | vecs_pgprot |= L_PTE_SHARED; |
423 | mem_types[MT_DEVICE_WC].prot_sect |= PMD_SECT_S; | ||
424 | mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED; | ||
425 | mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S; | ||
426 | mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED; | ||
423 | mem_types[MT_MEMORY].prot_sect |= PMD_SECT_S; | 427 | mem_types[MT_MEMORY].prot_sect |= PMD_SECT_S; |
424 | mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_S; | 428 | mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_S; |
425 | #endif | 429 | #endif |
@@ -1050,10 +1054,12 @@ void setup_mm_for_reboot(char mode) | |||
1050 | pgd_t *pgd; | 1054 | pgd_t *pgd; |
1051 | int i; | 1055 | int i; |
1052 | 1056 | ||
1053 | if (current->mm && current->mm->pgd) | 1057 | /* |
1054 | pgd = current->mm->pgd; | 1058 | * We need to access to user-mode page tables here. For kernel threads |
1055 | else | 1059 | * we don't have any user-mode mappings so we use the context that we |
1056 | pgd = init_mm.pgd; | 1060 | * "borrowed". |
1061 | */ | ||
1062 | pgd = current->active_mm->pgd; | ||
1057 | 1063 | ||
1058 | base_pmdval = PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | PMD_TYPE_SECT; | 1064 | base_pmdval = PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | PMD_TYPE_SECT; |
1059 | if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale()) | 1065 | if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale()) |
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c index 9bfeb6b9509a..33b327379f07 100644 --- a/arch/arm/mm/nommu.c +++ b/arch/arm/mm/nommu.c | |||
@@ -65,6 +65,15 @@ void flush_dcache_page(struct page *page) | |||
65 | } | 65 | } |
66 | EXPORT_SYMBOL(flush_dcache_page); | 66 | EXPORT_SYMBOL(flush_dcache_page); |
67 | 67 | ||
68 | void copy_to_user_page(struct vm_area_struct *vma, struct page *page, | ||
69 | unsigned long uaddr, void *dst, const void *src, | ||
70 | unsigned long len) | ||
71 | { | ||
72 | memcpy(dst, src, len); | ||
73 | if (vma->vm_flags & VM_EXEC) | ||
74 | __cpuc_coherent_user_range(uaddr, uaddr + len); | ||
75 | } | ||
76 | |||
68 | void __iomem *__arm_ioremap_pfn(unsigned long pfn, unsigned long offset, | 77 | void __iomem *__arm_ioremap_pfn(unsigned long pfn, unsigned long offset, |
69 | size_t size, unsigned int mtype) | 78 | size_t size, unsigned int mtype) |
70 | { | 79 | { |
@@ -87,8 +96,8 @@ void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, | |||
87 | } | 96 | } |
88 | EXPORT_SYMBOL(__arm_ioremap); | 97 | EXPORT_SYMBOL(__arm_ioremap); |
89 | 98 | ||
90 | void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, | 99 | void __iomem *__arm_ioremap_caller(unsigned long phys_addr, size_t size, |
91 | unsigned int mtype, void *caller) | 100 | unsigned int mtype, void *caller) |
92 | { | 101 | { |
93 | return __arm_ioremap(phys_addr, size, mtype); | 102 | return __arm_ioremap(phys_addr, size, mtype); |
94 | } | 103 | } |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index ee7700242c19..5c47760c2064 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -45,7 +45,7 @@ ENTRY(cpu_sa1100_proc_init) | |||
45 | mcr p15, 0, r0, c9, c0, 5 @ Allow read-buffer operations from userland | 45 | mcr p15, 0, r0, c9, c0, 5 @ Allow read-buffer operations from userland |
46 | mov pc, lr | 46 | mov pc, lr |
47 | 47 | ||
48 | .previous | 48 | .section .text |
49 | 49 | ||
50 | /* | 50 | /* |
51 | * cpu_sa1100_proc_fin() | 51 | * cpu_sa1100_proc_fin() |
diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S index 0cb1848bd876..f3f288a9546d 100644 --- a/arch/arm/mm/tlb-v7.S +++ b/arch/arm/mm/tlb-v7.S | |||
@@ -50,7 +50,11 @@ ENTRY(v7wbi_flush_user_tlb_range) | |||
50 | cmp r0, r1 | 50 | cmp r0, r1 |
51 | blo 1b | 51 | blo 1b |
52 | mov ip, #0 | 52 | mov ip, #0 |
53 | #ifdef CONFIG_SMP | ||
54 | mcr p15, 0, ip, c7, c1, 6 @ flush BTAC/BTB Inner Shareable | ||
55 | #else | ||
53 | mcr p15, 0, ip, c7, c5, 6 @ flush BTAC/BTB | 56 | mcr p15, 0, ip, c7, c5, 6 @ flush BTAC/BTB |
57 | #endif | ||
54 | dsb | 58 | dsb |
55 | mov pc, lr | 59 | mov pc, lr |
56 | ENDPROC(v7wbi_flush_user_tlb_range) | 60 | ENDPROC(v7wbi_flush_user_tlb_range) |
@@ -79,7 +83,11 @@ ENTRY(v7wbi_flush_kern_tlb_range) | |||
79 | cmp r0, r1 | 83 | cmp r0, r1 |
80 | blo 1b | 84 | blo 1b |
81 | mov r2, #0 | 85 | mov r2, #0 |
86 | #ifdef CONFIG_SMP | ||
87 | mcr p15, 0, r2, c7, c1, 6 @ flush BTAC/BTB Inner Shareable | ||
88 | #else | ||
82 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB | 89 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB |
90 | #endif | ||
83 | dsb | 91 | dsb |
84 | isb | 92 | isb |
85 | mov pc, lr | 93 | mov pc, lr |
diff --git a/arch/arm/nwfpe/entry.S b/arch/arm/nwfpe/entry.S index 48bca0db4607..cafa18354339 100644 --- a/arch/arm/nwfpe/entry.S +++ b/arch/arm/nwfpe/entry.S | |||
@@ -111,12 +111,12 @@ next: | |||
111 | @ to fault. Emit the appropriate exception gunk to fix things up. | 111 | @ to fault. Emit the appropriate exception gunk to fix things up. |
112 | @ ??? For some reason, faults can happen at .Lx2 even with a | 112 | @ ??? For some reason, faults can happen at .Lx2 even with a |
113 | @ plain LDR instruction. Weird, but it seems harmless. | 113 | @ plain LDR instruction. Weird, but it seems harmless. |
114 | .section .fixup,"ax" | 114 | .pushsection .fixup,"ax" |
115 | .align 2 | 115 | .align 2 |
116 | .Lfix: mov pc, r9 @ let the user eat segfaults | 116 | .Lfix: mov pc, r9 @ let the user eat segfaults |
117 | .previous | 117 | .popsection |
118 | 118 | ||
119 | .section __ex_table,"a" | 119 | .pushsection __ex_table,"a" |
120 | .align 3 | 120 | .align 3 |
121 | .long .Lx1, .Lfix | 121 | .long .Lx1, .Lfix |
122 | .previous | 122 | .popsection |
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31pdk.h b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h index 2bbd6ed17f50..da92933a233b 100644 --- a/arch/arm/plat-mxc/include/mach/board-mx31pdk.h +++ b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h | |||
@@ -8,8 +8,8 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #ifndef __ASM_ARCH_MXC_BOARD_MX31PDK_H__ | 11 | #ifndef __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ |
12 | #define __ASM_ARCH_MXC_BOARD_MX31PDK_H__ | 12 | #define __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ |
13 | 13 | ||
14 | /* Definitions for components on the Debug board */ | 14 | /* Definitions for components on the Debug board */ |
15 | 15 | ||
@@ -56,4 +56,4 @@ | |||
56 | 56 | ||
57 | #define MXC_MAX_EXP_IO_LINES 16 | 57 | #define MXC_MAX_EXP_IO_LINES 16 |
58 | 58 | ||
59 | #endif /* __ASM_ARCH_MXC_BOARD_MX31PDK_H__ */ | 59 | #endif /* __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h b/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h index 07be8ad7ec37..7c4870bd5a21 100644 --- a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h +++ b/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h | |||
@@ -31,7 +31,13 @@ | |||
31 | #define DMA_MODE_WRITE 1 | 31 | #define DMA_MODE_WRITE 1 |
32 | #define DMA_MODE_MASK 1 | 32 | #define DMA_MODE_MASK 1 |
33 | 33 | ||
34 | #define DMA_BASE IO_ADDRESS(DMA_BASE_ADDR) | 34 | #define MX1_DMA_REG(offset) MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR + (offset)) |
35 | |||
36 | /* DMA Interrupt Mask Register */ | ||
37 | #define MX1_DMA_DIMR MX1_DMA_REG(0x08) | ||
38 | |||
39 | /* Channel Control Register */ | ||
40 | #define MX1_DMA_CCR(x) MX1_DMA_REG(0x8c + ((x) << 6)) | ||
35 | 41 | ||
36 | #define IMX_DMA_MEMSIZE_32 (0 << 4) | 42 | #define IMX_DMA_MEMSIZE_32 (0 << 4) |
37 | #define IMX_DMA_MEMSIZE_8 (1 << 4) | 43 | #define IMX_DMA_MEMSIZE_8 (1 << 4) |
diff --git a/arch/arm/plat-mxc/include/mach/mx51.h b/arch/arm/plat-mxc/include/mach/mx51.h index 771532b6b4a6..5aad344d5651 100644 --- a/arch/arm/plat-mxc/include/mach/mx51.h +++ b/arch/arm/plat-mxc/include/mach/mx51.h | |||
@@ -14,7 +14,7 @@ | |||
14 | * FB100000 70000000 1M SPBA 0 | 14 | * FB100000 70000000 1M SPBA 0 |
15 | * FB000000 73F00000 1M AIPS 1 | 15 | * FB000000 73F00000 1M AIPS 1 |
16 | * FB200000 83F00000 1M AIPS 2 | 16 | * FB200000 83F00000 1M AIPS 2 |
17 | * FA100000 8FFFC000 16K TZIC (interrupt controller) | 17 | * 8FFFC000 16K TZIC (interrupt controller) |
18 | * 90000000 256M CSD0 SDRAM/DDR | 18 | * 90000000 256M CSD0 SDRAM/DDR |
19 | * A0000000 256M CSD1 SDRAM/DDR | 19 | * A0000000 256M CSD1 SDRAM/DDR |
20 | * B0000000 128M CS0 Flash | 20 | * B0000000 128M CS0 Flash |
@@ -23,11 +23,17 @@ | |||
23 | * C8000000 64M CS3 Flash | 23 | * C8000000 64M CS3 Flash |
24 | * CC000000 32M CS4 SRAM | 24 | * CC000000 32M CS4 SRAM |
25 | * CE000000 32M CS5 SRAM | 25 | * CE000000 32M CS5 SRAM |
26 | * F9000000 CFFF0000 64K NFC (NAND Flash AXI) | 26 | * CFFF0000 64K NFC (NAND Flash AXI) |
27 | * | 27 | * |
28 | */ | 28 | */ |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * IROM | ||
32 | */ | ||
33 | #define MX51_IROM_BASE_ADDR 0x0 | ||
34 | #define MX51_IROM_SIZE SZ_64K | ||
35 | |||
36 | /* | ||
31 | * IRAM | 37 | * IRAM |
32 | */ | 38 | */ |
33 | #define MX51_IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */ | 39 | #define MX51_IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */ |
@@ -40,7 +46,6 @@ | |||
40 | * NFC | 46 | * NFC |
41 | */ | 47 | */ |
42 | #define MX51_NFC_AXI_BASE_ADDR 0xCFFF0000 /* NAND flash AXI */ | 48 | #define MX51_NFC_AXI_BASE_ADDR 0xCFFF0000 /* NAND flash AXI */ |
43 | #define MX51_NFC_AXI_BASE_ADDR_VIRT 0xF9000000 | ||
44 | #define MX51_NFC_AXI_SIZE SZ_64K | 49 | #define MX51_NFC_AXI_SIZE SZ_64K |
45 | 50 | ||
46 | /* | 51 | /* |
@@ -49,9 +54,8 @@ | |||
49 | #define MX51_GPU_BASE_ADDR 0x20000000 | 54 | #define MX51_GPU_BASE_ADDR 0x20000000 |
50 | #define MX51_GPU2D_BASE_ADDR 0xD0000000 | 55 | #define MX51_GPU2D_BASE_ADDR 0xD0000000 |
51 | 56 | ||
52 | #define MX51_TZIC_BASE_ADDR 0x8FFFC000 | 57 | #define MX51_TZIC_BASE_ADDR_TO1 0x8FFFC000 |
53 | #define MX51_TZIC_BASE_ADDR_VIRT 0xFA100000 | 58 | #define MX51_TZIC_BASE_ADDR 0xE0000000 |
54 | #define MX51_TZIC_SIZE SZ_16K | ||
55 | 59 | ||
56 | #define MX51_DEBUG_BASE_ADDR 0x60000000 | 60 | #define MX51_DEBUG_BASE_ADDR 0x60000000 |
57 | #define MX51_DEBUG_BASE_ADDR_VIRT 0xFA200000 | 61 | #define MX51_DEBUG_BASE_ADDR_VIRT 0xFA200000 |
@@ -232,12 +236,10 @@ | |||
232 | #define MX51_IO_ADDRESS(x) \ | 236 | #define MX51_IO_ADDRESS(x) \ |
233 | (void __iomem *) \ | 237 | (void __iomem *) \ |
234 | (MX51_IS_MODULE(x, IRAM) ? MX51_IRAM_IO_ADDRESS(x) : \ | 238 | (MX51_IS_MODULE(x, IRAM) ? MX51_IRAM_IO_ADDRESS(x) : \ |
235 | MX51_IS_MODULE(x, TZIC) ? MX51_TZIC_IO_ADDRESS(x) : \ | ||
236 | MX51_IS_MODULE(x, DEBUG) ? MX51_DEBUG_IO_ADDRESS(x) : \ | 239 | MX51_IS_MODULE(x, DEBUG) ? MX51_DEBUG_IO_ADDRESS(x) : \ |
237 | MX51_IS_MODULE(x, SPBA0) ? MX51_SPBA0_IO_ADDRESS(x) : \ | 240 | MX51_IS_MODULE(x, SPBA0) ? MX51_SPBA0_IO_ADDRESS(x) : \ |
238 | MX51_IS_MODULE(x, AIPS1) ? MX51_AIPS1_IO_ADDRESS(x) : \ | 241 | MX51_IS_MODULE(x, AIPS1) ? MX51_AIPS1_IO_ADDRESS(x) : \ |
239 | MX51_IS_MODULE(x, AIPS2) ? MX51_AIPS2_IO_ADDRESS(x) : \ | 242 | MX51_IS_MODULE(x, AIPS2) ? MX51_AIPS2_IO_ADDRESS(x) : \ |
240 | MX51_IS_MODULE(x, NFC_AXI) ? MX51_NFC_AXI_IO_ADDRESS(x) : \ | ||
241 | 0xDEADBEEF) | 243 | 0xDEADBEEF) |
242 | 244 | ||
243 | /* | 245 | /* |
@@ -246,9 +248,6 @@ | |||
246 | #define MX51_IRAM_IO_ADDRESS(x) \ | 248 | #define MX51_IRAM_IO_ADDRESS(x) \ |
247 | (((x) - MX51_IRAM_BASE_ADDR) + MX51_IRAM_BASE_ADDR_VIRT) | 249 | (((x) - MX51_IRAM_BASE_ADDR) + MX51_IRAM_BASE_ADDR_VIRT) |
248 | 250 | ||
249 | #define MX51_TZIC_IO_ADDRESS(x) \ | ||
250 | (((x) - MX51_TZIC_BASE_ADDR) + MX51_TZIC_BASE_ADDR_VIRT) | ||
251 | |||
252 | #define MX51_DEBUG_IO_ADDRESS(x) \ | 251 | #define MX51_DEBUG_IO_ADDRESS(x) \ |
253 | (((x) - MX51_DEBUG_BASE_ADDR) + MX51_DEBUG_BASE_ADDR_VIRT) | 252 | (((x) - MX51_DEBUG_BASE_ADDR) + MX51_DEBUG_BASE_ADDR_VIRT) |
254 | 253 | ||
@@ -261,9 +260,6 @@ | |||
261 | #define MX51_AIPS2_IO_ADDRESS(x) \ | 260 | #define MX51_AIPS2_IO_ADDRESS(x) \ |
262 | (((x) - MX51_AIPS2_BASE_ADDR) + MX51_AIPS2_BASE_ADDR_VIRT) | 261 | (((x) - MX51_AIPS2_BASE_ADDR) + MX51_AIPS2_BASE_ADDR_VIRT) |
263 | 262 | ||
264 | #define MX51_NFC_AXI_IO_ADDRESS(x) \ | ||
265 | (((x) - MX51_NFC_AXI_BASE_ADDR) + MX51_NFC_AXI_BASE_ADDR_VIRT) | ||
266 | |||
267 | #define MX51_IS_MEM_DEVICE_NONSHARED(x) 0 | 263 | #define MX51_IS_MEM_DEVICE_NONSHARED(x) 0 |
268 | 264 | ||
269 | /* | 265 | /* |
@@ -443,12 +439,7 @@ | |||
443 | 439 | ||
444 | #if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS) | 440 | #if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS) |
445 | 441 | ||
446 | extern unsigned int system_rev; | 442 | extern int mx51_revision(void); |
447 | |||
448 | static inline unsigned int mx51_revision(void) | ||
449 | { | ||
450 | return system_rev; | ||
451 | } | ||
452 | #endif | 443 | #endif |
453 | 444 | ||
454 | #endif /* __ASM_ARCH_MXC_MX51_H__ */ | 445 | #endif /* __ASM_ARCH_MXC_MX51_H__ */ |
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h index 52e476a150ca..b6d3d0fddc48 100644 --- a/arch/arm/plat-mxc/include/mach/uncompress.h +++ b/arch/arm/plat-mxc/include/mach/uncompress.h | |||
@@ -66,6 +66,7 @@ static inline void flush(void) | |||
66 | #define MX2X_UART1_BASE_ADDR 0x1000a000 | 66 | #define MX2X_UART1_BASE_ADDR 0x1000a000 |
67 | #define MX3X_UART1_BASE_ADDR 0x43F90000 | 67 | #define MX3X_UART1_BASE_ADDR 0x43F90000 |
68 | #define MX3X_UART2_BASE_ADDR 0x43F94000 | 68 | #define MX3X_UART2_BASE_ADDR 0x43F94000 |
69 | #define MX51_UART1_BASE_ADDR 0x73fbc000 | ||
69 | 70 | ||
70 | static __inline__ void __arch_decomp_setup(unsigned long arch_id) | 71 | static __inline__ void __arch_decomp_setup(unsigned long arch_id) |
71 | { | 72 | { |
@@ -101,6 +102,9 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id) | |||
101 | case MACH_TYPE_MAGX_ZN5: | 102 | case MACH_TYPE_MAGX_ZN5: |
102 | uart_base = MX3X_UART2_BASE_ADDR; | 103 | uart_base = MX3X_UART2_BASE_ADDR; |
103 | break; | 104 | break; |
105 | case MACH_TYPE_MX51_BABBAGE: | ||
106 | uart_base = MX51_UART1_BASE_ADDR; | ||
107 | break; | ||
104 | default: | 108 | default: |
105 | break; | 109 | break; |
106 | } | 110 | } |
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 088c1a03b946..f12f0e39ddf2 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -44,9 +44,6 @@ | |||
44 | 44 | ||
45 | #define NO_LENGTH_CHECK 0xffffffff | 45 | #define NO_LENGTH_CHECK 0xffffffff |
46 | 46 | ||
47 | unsigned char omap_bootloader_tag[512]; | ||
48 | int omap_bootloader_tag_len; | ||
49 | |||
50 | struct omap_board_config_kernel *omap_board_config; | 47 | struct omap_board_config_kernel *omap_board_config; |
51 | int omap_board_config_size; | 48 | int omap_board_config_size; |
52 | 49 | ||
@@ -100,10 +97,17 @@ EXPORT_SYMBOL(omap_get_var_config); | |||
100 | 97 | ||
101 | #include <linux/clocksource.h> | 98 | #include <linux/clocksource.h> |
102 | 99 | ||
100 | /* | ||
101 | * offset_32k holds the init time counter value. It is then subtracted | ||
102 | * from every counter read to achieve a counter that counts time from the | ||
103 | * kernel boot (needed for sched_clock()). | ||
104 | */ | ||
105 | static u32 offset_32k __read_mostly; | ||
106 | |||
103 | #ifdef CONFIG_ARCH_OMAP16XX | 107 | #ifdef CONFIG_ARCH_OMAP16XX |
104 | static cycle_t omap16xx_32k_read(struct clocksource *cs) | 108 | static cycle_t omap16xx_32k_read(struct clocksource *cs) |
105 | { | 109 | { |
106 | return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED); | 110 | return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED) - offset_32k; |
107 | } | 111 | } |
108 | #else | 112 | #else |
109 | #define omap16xx_32k_read NULL | 113 | #define omap16xx_32k_read NULL |
@@ -112,7 +116,7 @@ static cycle_t omap16xx_32k_read(struct clocksource *cs) | |||
112 | #ifdef CONFIG_ARCH_OMAP2420 | 116 | #ifdef CONFIG_ARCH_OMAP2420 |
113 | static cycle_t omap2420_32k_read(struct clocksource *cs) | 117 | static cycle_t omap2420_32k_read(struct clocksource *cs) |
114 | { | 118 | { |
115 | return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10); | 119 | return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k; |
116 | } | 120 | } |
117 | #else | 121 | #else |
118 | #define omap2420_32k_read NULL | 122 | #define omap2420_32k_read NULL |
@@ -121,7 +125,7 @@ static cycle_t omap2420_32k_read(struct clocksource *cs) | |||
121 | #ifdef CONFIG_ARCH_OMAP2430 | 125 | #ifdef CONFIG_ARCH_OMAP2430 |
122 | static cycle_t omap2430_32k_read(struct clocksource *cs) | 126 | static cycle_t omap2430_32k_read(struct clocksource *cs) |
123 | { | 127 | { |
124 | return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10); | 128 | return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k; |
125 | } | 129 | } |
126 | #else | 130 | #else |
127 | #define omap2430_32k_read NULL | 131 | #define omap2430_32k_read NULL |
@@ -130,7 +134,7 @@ static cycle_t omap2430_32k_read(struct clocksource *cs) | |||
130 | #ifdef CONFIG_ARCH_OMAP3 | 134 | #ifdef CONFIG_ARCH_OMAP3 |
131 | static cycle_t omap34xx_32k_read(struct clocksource *cs) | 135 | static cycle_t omap34xx_32k_read(struct clocksource *cs) |
132 | { | 136 | { |
133 | return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10); | 137 | return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10) - offset_32k; |
134 | } | 138 | } |
135 | #else | 139 | #else |
136 | #define omap34xx_32k_read NULL | 140 | #define omap34xx_32k_read NULL |
@@ -139,7 +143,7 @@ static cycle_t omap34xx_32k_read(struct clocksource *cs) | |||
139 | #ifdef CONFIG_ARCH_OMAP4 | 143 | #ifdef CONFIG_ARCH_OMAP4 |
140 | static cycle_t omap44xx_32k_read(struct clocksource *cs) | 144 | static cycle_t omap44xx_32k_read(struct clocksource *cs) |
141 | { | 145 | { |
142 | return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10); | 146 | return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10) - offset_32k; |
143 | } | 147 | } |
144 | #else | 148 | #else |
145 | #define omap44xx_32k_read NULL | 149 | #define omap44xx_32k_read NULL |
@@ -227,6 +231,8 @@ static int __init omap_init_clocksource_32k(void) | |||
227 | clocksource_32k.mult = clocksource_hz2mult(32768, | 231 | clocksource_32k.mult = clocksource_hz2mult(32768, |
228 | clocksource_32k.shift); | 232 | clocksource_32k.shift); |
229 | 233 | ||
234 | offset_32k = clocksource_32k.read(&clocksource_32k); | ||
235 | |||
230 | if (clocksource_register(&clocksource_32k)) | 236 | if (clocksource_register(&clocksource_32k)) |
231 | printk(err, clocksource_32k.name); | 237 | printk(err, clocksource_32k.name); |
232 | } | 238 | } |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 5c6c342c53f5..1d959965ff52 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -937,6 +937,15 @@ void omap_start_dma(int lch) | |||
937 | { | 937 | { |
938 | u32 l; | 938 | u32 l; |
939 | 939 | ||
940 | /* | ||
941 | * The CPC/CDAC register needs to be initialized to zero | ||
942 | * before starting dma transfer. | ||
943 | */ | ||
944 | if (cpu_is_omap15xx()) | ||
945 | dma_write(0, CPC(lch)); | ||
946 | else | ||
947 | dma_write(0, CDAC(lch)); | ||
948 | |||
940 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { | 949 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { |
941 | int next_lch, cur_lch; | 950 | int next_lch, cur_lch; |
942 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; | 951 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 76a347b3ce07..45a225d09125 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -798,7 +798,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) | |||
798 | case METHOD_MPUIO: | 798 | case METHOD_MPUIO: |
799 | reg += OMAP_MPUIO_GPIO_INT_EDGE; | 799 | reg += OMAP_MPUIO_GPIO_INT_EDGE; |
800 | l = __raw_readl(reg); | 800 | l = __raw_readl(reg); |
801 | if (trigger & IRQ_TYPE_EDGE_BOTH) | 801 | if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) |
802 | bank->toggle_mask |= 1 << gpio; | 802 | bank->toggle_mask |= 1 << gpio; |
803 | if (trigger & IRQ_TYPE_EDGE_RISING) | 803 | if (trigger & IRQ_TYPE_EDGE_RISING) |
804 | l |= 1 << gpio; | 804 | l |= 1 << gpio; |
@@ -812,7 +812,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) | |||
812 | case METHOD_GPIO_1510: | 812 | case METHOD_GPIO_1510: |
813 | reg += OMAP1510_GPIO_INT_CONTROL; | 813 | reg += OMAP1510_GPIO_INT_CONTROL; |
814 | l = __raw_readl(reg); | 814 | l = __raw_readl(reg); |
815 | if (trigger & IRQ_TYPE_EDGE_BOTH) | 815 | if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) |
816 | bank->toggle_mask |= 1 << gpio; | 816 | bank->toggle_mask |= 1 << gpio; |
817 | if (trigger & IRQ_TYPE_EDGE_RISING) | 817 | if (trigger & IRQ_TYPE_EDGE_RISING) |
818 | l |= 1 << gpio; | 818 | l |= 1 << gpio; |
@@ -846,7 +846,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) | |||
846 | case METHOD_GPIO_7XX: | 846 | case METHOD_GPIO_7XX: |
847 | reg += OMAP7XX_GPIO_INT_CONTROL; | 847 | reg += OMAP7XX_GPIO_INT_CONTROL; |
848 | l = __raw_readl(reg); | 848 | l = __raw_readl(reg); |
849 | if (trigger & IRQ_TYPE_EDGE_BOTH) | 849 | if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) |
850 | bank->toggle_mask |= 1 << gpio; | 850 | bank->toggle_mask |= 1 << gpio; |
851 | if (trigger & IRQ_TYPE_EDGE_RISING) | 851 | if (trigger & IRQ_TYPE_EDGE_RISING) |
852 | l |= 1 << gpio; | 852 | l |= 1 << gpio; |
diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index b65088a869e9..401701977dbb 100644 --- a/arch/arm/plat-omap/include/plat/irqs.h +++ b/arch/arm/plat-omap/include/plat/irqs.h | |||
@@ -345,8 +345,6 @@ | |||
345 | #define INT_34XX_MMC3_IRQ 94 | 345 | #define INT_34XX_MMC3_IRQ 94 |
346 | #define INT_34XX_GPT12_IRQ 95 | 346 | #define INT_34XX_GPT12_IRQ 95 |
347 | 347 | ||
348 | #define INT_34XX_BENCH_MPU_EMUL 3 | ||
349 | |||
350 | #define INT_35XX_HECC0_IRQ 24 | 348 | #define INT_35XX_HECC0_IRQ 24 |
351 | #define INT_35XX_HECC1_IRQ 28 | 349 | #define INT_35XX_HECC1_IRQ 28 |
352 | #define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67 | 350 | #define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67 |
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h index 39748354ce45..7de903d7c1ce 100644 --- a/arch/arm/plat-omap/include/plat/mcbsp.h +++ b/arch/arm/plat-omap/include/plat/mcbsp.h | |||
@@ -59,7 +59,7 @@ | |||
59 | #define OMAP44XX_MCBSP1_BASE 0x49022000 | 59 | #define OMAP44XX_MCBSP1_BASE 0x49022000 |
60 | #define OMAP44XX_MCBSP2_BASE 0x49024000 | 60 | #define OMAP44XX_MCBSP2_BASE 0x49024000 |
61 | #define OMAP44XX_MCBSP3_BASE 0x49026000 | 61 | #define OMAP44XX_MCBSP3_BASE 0x49026000 |
62 | #define OMAP44XX_MCBSP4_BASE 0x48074000 | 62 | #define OMAP44XX_MCBSP4_BASE 0x48096000 |
63 | 63 | ||
64 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) | 64 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) |
65 | 65 | ||
diff --git a/arch/arm/plat-omap/include/plat/nand.h b/arch/arm/plat-omap/include/plat/nand.h index 6ba88d2630d9..f8efd5466b1d 100644 --- a/arch/arm/plat-omap/include/plat/nand.h +++ b/arch/arm/plat-omap/include/plat/nand.h | |||
@@ -29,4 +29,11 @@ struct omap_nand_platform_data { | |||
29 | /* size (4 KiB) for IO mapping */ | 29 | /* size (4 KiB) for IO mapping */ |
30 | #define NAND_IO_SIZE SZ_4K | 30 | #define NAND_IO_SIZE SZ_4K |
31 | 31 | ||
32 | #if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE) | ||
32 | extern int gpmc_nand_init(struct omap_nand_platform_data *d); | 33 | extern int gpmc_nand_init(struct omap_nand_platform_data *d); |
34 | #else | ||
35 | static inline int gpmc_nand_init(struct omap_nand_platform_data *d) | ||
36 | { | ||
37 | return 0; | ||
38 | } | ||
39 | #endif | ||
diff --git a/arch/arm/plat-omap/include/plat/omap44xx.h b/arch/arm/plat-omap/include/plat/omap44xx.h index 2302474a3748..b3ef1a7f53cc 100644 --- a/arch/arm/plat-omap/include/plat/omap44xx.h +++ b/arch/arm/plat-omap/include/plat/omap44xx.h | |||
@@ -32,7 +32,7 @@ | |||
32 | #define OMAP4430_PRM_BASE 0x4a306000 | 32 | #define OMAP4430_PRM_BASE 0x4a306000 |
33 | #define OMAP44XX_GPMC_BASE 0x50000000 | 33 | #define OMAP44XX_GPMC_BASE 0x50000000 |
34 | #define OMAP443X_SCM_BASE 0x4a002000 | 34 | #define OMAP443X_SCM_BASE 0x4a002000 |
35 | #define OMAP443X_CTRL_BASE OMAP443X_SCM_BASE | 35 | #define OMAP443X_CTRL_BASE 0x4a100000 |
36 | #define OMAP44XX_IC_BASE 0x48200000 | 36 | #define OMAP44XX_IC_BASE 0x48200000 |
37 | #define OMAP44XX_IVA_INTC_BASE 0x40000000 | 37 | #define OMAP44XX_IVA_INTC_BASE 0x40000000 |
38 | #define IRQ_SIR_IRQ 0x0040 | 38 | #define IRQ_SIR_IRQ 0x0040 |
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h index 440b4164f2f6..36d6ea56ab51 100644 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h | |||
@@ -294,8 +294,8 @@ struct omap_hwmod_class_sysconfig { | |||
294 | u16 rev_offs; | 294 | u16 rev_offs; |
295 | u16 sysc_offs; | 295 | u16 sysc_offs; |
296 | u16 syss_offs; | 296 | u16 syss_offs; |
297 | u16 sysc_flags; | ||
297 | u8 idlemodes; | 298 | u8 idlemodes; |
298 | u8 sysc_flags; | ||
299 | u8 clockact; | 299 | u8 clockact; |
300 | struct omap_hwmod_sysc_fields *sysc_fields; | 300 | struct omap_hwmod_sysc_fields *sysc_fields; |
301 | }; | 301 | }; |
diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index 568578db93b6..876ca8d5e927 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h | |||
@@ -46,7 +46,7 @@ struct ehci_hcd_omap_platform_data { | |||
46 | struct omap_musb_board_data { | 46 | struct omap_musb_board_data { |
47 | u8 interface_type; | 47 | u8 interface_type; |
48 | u8 mode; | 48 | u8 mode; |
49 | u8 power; | 49 | u16 power; |
50 | }; | 50 | }; |
51 | 51 | ||
52 | enum musb_interface {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI}; | 52 | enum musb_interface {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI}; |
diff --git a/arch/arm/plat-pxa/dma.c b/arch/arm/plat-pxa/dma.c index 742350e0f2a7..2d3c19d7c7b1 100644 --- a/arch/arm/plat-pxa/dma.c +++ b/arch/arm/plat-pxa/dma.c | |||
@@ -245,7 +245,7 @@ static void pxa_dma_init_debugfs(void) | |||
245 | 245 | ||
246 | dbgfs_chan = kmalloc(sizeof(*dbgfs_state) * num_dma_channels, | 246 | dbgfs_chan = kmalloc(sizeof(*dbgfs_state) * num_dma_channels, |
247 | GFP_KERNEL); | 247 | GFP_KERNEL); |
248 | if (!dbgfs_state) | 248 | if (!dbgfs_chan) |
249 | goto err_alloc; | 249 | goto err_alloc; |
250 | 250 | ||
251 | chandir = debugfs_create_dir("channels", dbgfs_root); | 251 | chandir = debugfs_create_dir("channels", dbgfs_root); |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 1536f1784cac..8f10d24ae625 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: Sat Mar 20 15:35:41 2010 | 15 | # Last update: Sat May 1 10:36:42 2010 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -2749,3 +2749,58 @@ stamp9g45 MACH_STAMP9G45 STAMP9G45 2761 | |||
2749 | h6053 MACH_H6053 H6053 2762 | 2749 | h6053 MACH_H6053 H6053 2762 |
2750 | smint01 MACH_SMINT01 SMINT01 2763 | 2750 | smint01 MACH_SMINT01 SMINT01 2763 |
2751 | prtlvt2 MACH_PRTLVT2 PRTLVT2 2764 | 2751 | prtlvt2 MACH_PRTLVT2 PRTLVT2 2764 |
2752 | ap420 MACH_AP420 AP420 2765 | ||
2753 | htcshift MACH_HTCSHIFT HTCSHIFT 2766 | ||
2754 | davinci_dm365_fc MACH_DAVINCI_DM365_FC DAVINCI_DM365_FC 2767 | ||
2755 | msm8x55_surf MACH_MSM8X55_SURF MSM8X55_SURF 2768 | ||
2756 | msm8x55_ffa MACH_MSM8X55_FFA MSM8X55_FFA 2769 | ||
2757 | esl_vamana MACH_ESL_VAMANA ESL_VAMANA 2770 | ||
2758 | sbc35 MACH_SBC35 SBC35 2771 | ||
2759 | mpx6446 MACH_MPX6446 MPX6446 2772 | ||
2760 | oreo_controller MACH_OREO_CONTROLLER OREO_CONTROLLER 2773 | ||
2761 | kopin_models MACH_KOPIN_MODELS KOPIN_MODELS 2774 | ||
2762 | ttc_vision2 MACH_TTC_VISION2 TTC_VISION2 2775 | ||
2763 | cns3420vb MACH_CNS3420VB CNS3420VB 2776 | ||
2764 | lpc2 MACH_LPC2 LPC2 2777 | ||
2765 | olympus MACH_OLYMPUS OLYMPUS 2778 | ||
2766 | vortex MACH_VORTEX VORTEX 2779 | ||
2767 | s5pc200 MACH_S5PC200 S5PC200 2780 | ||
2768 | ecucore_9263 MACH_ECUCORE_9263 ECUCORE_9263 2781 | ||
2769 | smdkc200 MACH_SMDKC200 SMDKC200 2782 | ||
2770 | emsiso_sx27 MACH_EMSISO_SX27 EMSISO_SX27 2783 | ||
2771 | apx_som9g45_ek MACH_APX_SOM9G45_EK APX_SOM9G45_EK 2784 | ||
2772 | songshan MACH_SONGSHAN SONGSHAN 2785 | ||
2773 | tianshan MACH_TIANSHAN TIANSHAN 2786 | ||
2774 | vpx500 MACH_VPX500 VPX500 2787 | ||
2775 | am3517sam MACH_AM3517SAM AM3517SAM 2788 | ||
2776 | skat91_sim508 MACH_SKAT91_SIM508 SKAT91_SIM508 2789 | ||
2777 | skat91_s3e MACH_SKAT91_S3E SKAT91_S3E 2790 | ||
2778 | omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791 | ||
2779 | df7220 MACH_DF7220 DF7220 2792 | ||
2780 | nemini MACH_NEMINI NEMINI 2793 | ||
2781 | t8200 MACH_T8200 T8200 2794 | ||
2782 | apf51 MACH_APF51 APF51 2795 | ||
2783 | dr_rc_unit MACH_DR_RC_UNIT DR_RC_UNIT 2796 | ||
2784 | bordeaux MACH_BORDEAUX BORDEAUX 2797 | ||
2785 | catania_b MACH_CATANIA_B CATANIA_B 2798 | ||
2786 | mx51_ocean MACH_MX51_OCEAN MX51_OCEAN 2799 | ||
2787 | ti8168evm MACH_TI8168EVM TI8168EVM 2800 | ||
2788 | neocoreomap MACH_NEOCOREOMAP NEOCOREOMAP 2801 | ||
2789 | withings_wbp MACH_WITHINGS_WBP WITHINGS_WBP 2802 | ||
2790 | dbps MACH_DBPS DBPS 2803 | ||
2791 | sbc9261 MACH_SBC9261 SBC9261 2804 | ||
2792 | pcbfp0001 MACH_PCBFP0001 PCBFP0001 2805 | ||
2793 | speedy MACH_SPEEDY SPEEDY 2806 | ||
2794 | chrysaor MACH_CHRYSAOR CHRYSAOR 2807 | ||
2795 | tango MACH_TANGO TANGO 2808 | ||
2796 | synology_dsx11 MACH_SYNOLOGY_DSX11 SYNOLOGY_DSX11 2809 | ||
2797 | hanlin_v3ext MACH_HANLIN_V3EXT HANLIN_V3EXT 2810 | ||
2798 | hanlin_v5 MACH_HANLIN_V5 HANLIN_V5 2811 | ||
2799 | hanlin_v3plus MACH_HANLIN_V3PLUS HANLIN_V3PLUS 2812 | ||
2800 | iriver_story MACH_IRIVER_STORY IRIVER_STORY 2813 | ||
2801 | irex_iliad MACH_IREX_ILIAD IREX_ILIAD 2814 | ||
2802 | irex_dr1000 MACH_IREX_DR1000 IREX_DR1000 2815 | ||
2803 | teton_bga MACH_TETON_BGA TETON_BGA 2816 | ||
2804 | snapper9g45 MACH_SNAPPER9G45 SNAPPER9G45 2817 | ||
2805 | tam3517 MACH_TAM3517 TAM3517 2818 | ||
2806 | pdc100 MACH_PDC100 PDC100 2819 | ||
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index a420cb949328..315a540c7ce5 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
@@ -428,26 +428,6 @@ static void vfp_pm_init(void) | |||
428 | static inline void vfp_pm_init(void) { } | 428 | static inline void vfp_pm_init(void) { } |
429 | #endif /* CONFIG_PM */ | 429 | #endif /* CONFIG_PM */ |
430 | 430 | ||
431 | /* | ||
432 | * Synchronise the hardware VFP state of a thread other than current with the | ||
433 | * saved one. This function is used by the ptrace mechanism. | ||
434 | */ | ||
435 | #ifdef CONFIG_SMP | ||
436 | void vfp_sync_hwstate(struct thread_info *thread) | ||
437 | { | ||
438 | } | ||
439 | |||
440 | void vfp_flush_hwstate(struct thread_info *thread) | ||
441 | { | ||
442 | /* | ||
443 | * On SMP systems, the VFP state is automatically saved at every | ||
444 | * context switch. We mark the thread VFP state as belonging to a | ||
445 | * non-existent CPU so that the saved one will be reloaded when | ||
446 | * needed. | ||
447 | */ | ||
448 | thread->vfpstate.hard.cpu = NR_CPUS; | ||
449 | } | ||
450 | #else | ||
451 | void vfp_sync_hwstate(struct thread_info *thread) | 431 | void vfp_sync_hwstate(struct thread_info *thread) |
452 | { | 432 | { |
453 | unsigned int cpu = get_cpu(); | 433 | unsigned int cpu = get_cpu(); |
@@ -490,9 +470,18 @@ void vfp_flush_hwstate(struct thread_info *thread) | |||
490 | last_VFP_context[cpu] = NULL; | 470 | last_VFP_context[cpu] = NULL; |
491 | } | 471 | } |
492 | 472 | ||
473 | #ifdef CONFIG_SMP | ||
474 | /* | ||
475 | * For SMP we still have to take care of the case where the thread | ||
476 | * migrates to another CPU and then back to the original CPU on which | ||
477 | * the last VFP user is still the same thread. Mark the thread VFP | ||
478 | * state as belonging to a non-existent CPU so that the saved one will | ||
479 | * be reloaded in the above case. | ||
480 | */ | ||
481 | thread->vfpstate.hard.cpu = NR_CPUS; | ||
482 | #endif | ||
493 | put_cpu(); | 483 | put_cpu(); |
494 | } | 484 | } |
495 | #endif | ||
496 | 485 | ||
497 | #include <linux/smp.h> | 486 | #include <linux/smp.h> |
498 | 487 | ||