diff options
author | Saeed Bishara <saeed@marvell.com> | 2009-08-06 08:12:43 -0400 |
---|---|---|
committer | Nicolas Pitre <nico@fluxnic.net> | 2009-11-27 15:43:06 -0500 |
commit | edabd38e1a017e922e3e3b485ee3ddb4df433aa4 (patch) | |
tree | c79cef3e59f62014c12ff1203e84b0bac5610a55 | |
parent | 8d27b2f7988b652dbabf79291a3e2550c06e1af5 (diff) |
ARM: add base support for Marvell Dove SoC
The Marvell Dove (88AP510) is a high-performance, highly integrated,
low power SoC with high-end ARM-compatible processor (known as PJ4),
graphics processing unit, high-definition video decoding acceleration
hardware, and a broad range of peripherals.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
29 files changed, 3773 insertions, 2 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1c4119c60040..7fae1ef9dde0 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -433,6 +433,17 @@ config ARCH_L7200 | |||
433 | If you have any questions or comments about the Linux kernel port | 433 | If you have any questions or comments about the Linux kernel port |
434 | to this board, send e-mail to <sjhill@cotw.com>. | 434 | to this board, send e-mail to <sjhill@cotw.com>. |
435 | 435 | ||
436 | config ARCH_DOVE | ||
437 | bool "Marvell Dove" | ||
438 | select PCI | ||
439 | select GENERIC_GPIO | ||
440 | select ARCH_REQUIRE_GPIOLIB | ||
441 | select GENERIC_TIME | ||
442 | select GENERIC_CLOCKEVENTS | ||
443 | select PLAT_ORION | ||
444 | help | ||
445 | Support for the Marvell Dove SoC 88AP510 | ||
446 | |||
436 | config ARCH_KIRKWOOD | 447 | config ARCH_KIRKWOOD |
437 | bool "Marvell Kirkwood" | 448 | bool "Marvell Kirkwood" |
438 | select CPU_FEROCEON | 449 | select CPU_FEROCEON |
@@ -747,6 +758,8 @@ source "arch/arm/mach-orion5x/Kconfig" | |||
747 | 758 | ||
748 | source "arch/arm/mach-kirkwood/Kconfig" | 759 | source "arch/arm/mach-kirkwood/Kconfig" |
749 | 760 | ||
761 | source "arch/arm/mach-dove/Kconfig" | ||
762 | |||
750 | source "arch/arm/plat-s3c24xx/Kconfig" | 763 | source "arch/arm/plat-s3c24xx/Kconfig" |
751 | source "arch/arm/plat-s3c64xx/Kconfig" | 764 | source "arch/arm/plat-s3c64xx/Kconfig" |
752 | source "arch/arm/plat-s3c/Kconfig" | 765 | source "arch/arm/plat-s3c/Kconfig" |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index a73caaf66763..2ddc323b1c6a 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -122,6 +122,7 @@ machine-$(CONFIG_ARCH_AT91) := at91 | |||
122 | machine-$(CONFIG_ARCH_BCMRING) := bcmring | 122 | machine-$(CONFIG_ARCH_BCMRING) := bcmring |
123 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x | 123 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x |
124 | machine-$(CONFIG_ARCH_DAVINCI) := davinci | 124 | machine-$(CONFIG_ARCH_DAVINCI) := davinci |
125 | machine-$(CONFIG_ARCH_DOVE) := dove | ||
125 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 | 126 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 |
126 | machine-$(CONFIG_ARCH_EP93XX) := ep93xx | 127 | machine-$(CONFIG_ARCH_EP93XX) := ep93xx |
127 | machine-$(CONFIG_ARCH_GEMINI) := gemini | 128 | machine-$(CONFIG_ARCH_GEMINI) := gemini |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index fa6fbf45cf3b..d356af7cef82 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -743,6 +743,12 @@ proc_types: | |||
743 | W(b) __armv4_mmu_cache_off | 743 | W(b) __armv4_mmu_cache_off |
744 | W(b) __armv6_mmu_cache_flush | 744 | W(b) __armv6_mmu_cache_flush |
745 | 745 | ||
746 | .word 0x560f5810 @ Marvell PJ4 ARMv6 | ||
747 | .word 0xff0ffff0 | ||
748 | W(b) __armv4_mmu_cache_on | ||
749 | W(b) __armv4_mmu_cache_off | ||
750 | W(b) __armv6_mmu_cache_flush | ||
751 | |||
746 | .word 0x000f0000 @ new CPU Id | 752 | .word 0x000f0000 @ new CPU Id |
747 | .word 0x000f0000 | 753 | .word 0x000f0000 |
748 | W(b) __armv7_mmu_cache_on | 754 | W(b) __armv7_mmu_cache_on |
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig new file mode 100644 index 000000000000..f2d1ea0abb84 --- /dev/null +++ b/arch/arm/configs/dove_defconfig | |||
@@ -0,0 +1,1617 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.32-rc6 | ||
4 | # Tue Nov 24 13:48:39 2009 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_STACKTRACE_SUPPORT=y | ||
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
14 | CONFIG_LOCKDEP_SUPPORT=y | ||
15 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
16 | CONFIG_HARDIRQS_SW_RESEND=y | ||
17 | CONFIG_GENERIC_IRQ_PROBE=y | ||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
19 | CONFIG_GENERIC_HWEIGHT=y | ||
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
22 | CONFIG_VECTORS_BASE=0xffff0000 | ||
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
24 | CONFIG_CONSTRUCTORS=y | ||
25 | |||
26 | # | ||
27 | # General setup | ||
28 | # | ||
29 | CONFIG_EXPERIMENTAL=y | ||
30 | CONFIG_BROKEN_ON_SMP=y | ||
31 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
32 | CONFIG_LOCALVERSION="" | ||
33 | CONFIG_LOCALVERSION_AUTO=y | ||
34 | CONFIG_SWAP=y | ||
35 | CONFIG_SYSVIPC=y | ||
36 | CONFIG_SYSVIPC_SYSCTL=y | ||
37 | # CONFIG_POSIX_MQUEUE is not set | ||
38 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
39 | # CONFIG_TASKSTATS is not set | ||
40 | # CONFIG_AUDIT is not set | ||
41 | |||
42 | # | ||
43 | # RCU Subsystem | ||
44 | # | ||
45 | CONFIG_TREE_RCU=y | ||
46 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
47 | # CONFIG_RCU_TRACE is not set | ||
48 | CONFIG_RCU_FANOUT=32 | ||
49 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
50 | # CONFIG_TREE_RCU_TRACE is not set | ||
51 | # CONFIG_IKCONFIG is not set | ||
52 | CONFIG_LOG_BUF_SHIFT=14 | ||
53 | # CONFIG_GROUP_SCHED is not set | ||
54 | # CONFIG_CGROUPS is not set | ||
55 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
56 | # CONFIG_RELAY is not set | ||
57 | # CONFIG_NAMESPACES is not set | ||
58 | # CONFIG_BLK_DEV_INITRD is not set | ||
59 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
60 | CONFIG_SYSCTL=y | ||
61 | CONFIG_ANON_INODES=y | ||
62 | CONFIG_EMBEDDED=y | ||
63 | CONFIG_UID16=y | ||
64 | CONFIG_SYSCTL_SYSCALL=y | ||
65 | CONFIG_KALLSYMS=y | ||
66 | # CONFIG_KALLSYMS_ALL is not set | ||
67 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
68 | CONFIG_HOTPLUG=y | ||
69 | CONFIG_PRINTK=y | ||
70 | CONFIG_BUG=y | ||
71 | CONFIG_ELF_CORE=y | ||
72 | CONFIG_BASE_FULL=y | ||
73 | CONFIG_FUTEX=y | ||
74 | CONFIG_EPOLL=y | ||
75 | CONFIG_SIGNALFD=y | ||
76 | CONFIG_TIMERFD=y | ||
77 | CONFIG_EVENTFD=y | ||
78 | CONFIG_SHMEM=y | ||
79 | CONFIG_AIO=y | ||
80 | |||
81 | # | ||
82 | # Kernel Performance Events And Counters | ||
83 | # | ||
84 | CONFIG_VM_EVENT_COUNTERS=y | ||
85 | CONFIG_PCI_QUIRKS=y | ||
86 | CONFIG_COMPAT_BRK=y | ||
87 | CONFIG_SLAB=y | ||
88 | # CONFIG_SLUB is not set | ||
89 | # CONFIG_SLOB is not set | ||
90 | # CONFIG_PROFILING is not set | ||
91 | CONFIG_HAVE_OPROFILE=y | ||
92 | # CONFIG_KPROBES is not set | ||
93 | CONFIG_HAVE_KPROBES=y | ||
94 | CONFIG_HAVE_KRETPROBES=y | ||
95 | |||
96 | # | ||
97 | # GCOV-based kernel profiling | ||
98 | # | ||
99 | # CONFIG_GCOV_KERNEL is not set | ||
100 | # CONFIG_SLOW_WORK is not set | ||
101 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
102 | CONFIG_SLABINFO=y | ||
103 | CONFIG_RT_MUTEXES=y | ||
104 | CONFIG_BASE_SMALL=0 | ||
105 | CONFIG_MODULES=y | ||
106 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
107 | CONFIG_MODULE_UNLOAD=y | ||
108 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
109 | # CONFIG_MODVERSIONS is not set | ||
110 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
111 | CONFIG_BLOCK=y | ||
112 | CONFIG_LBDAF=y | ||
113 | # CONFIG_BLK_DEV_BSG is not set | ||
114 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
115 | |||
116 | # | ||
117 | # IO Schedulers | ||
118 | # | ||
119 | CONFIG_IOSCHED_NOOP=y | ||
120 | CONFIG_IOSCHED_AS=y | ||
121 | CONFIG_IOSCHED_DEADLINE=y | ||
122 | CONFIG_IOSCHED_CFQ=y | ||
123 | # CONFIG_DEFAULT_AS is not set | ||
124 | # CONFIG_DEFAULT_DEADLINE is not set | ||
125 | CONFIG_DEFAULT_CFQ=y | ||
126 | # CONFIG_DEFAULT_NOOP is not set | ||
127 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
128 | # CONFIG_FREEZER is not set | ||
129 | |||
130 | # | ||
131 | # System Type | ||
132 | # | ||
133 | CONFIG_MMU=y | ||
134 | # CONFIG_ARCH_AAEC2000 is not set | ||
135 | # CONFIG_ARCH_INTEGRATOR is not set | ||
136 | # CONFIG_ARCH_REALVIEW is not set | ||
137 | # CONFIG_ARCH_VERSATILE is not set | ||
138 | # CONFIG_ARCH_AT91 is not set | ||
139 | # CONFIG_ARCH_CLPS711X is not set | ||
140 | # CONFIG_ARCH_GEMINI is not set | ||
141 | # CONFIG_ARCH_EBSA110 is not set | ||
142 | # CONFIG_ARCH_EP93XX is not set | ||
143 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
144 | # CONFIG_ARCH_MXC is not set | ||
145 | # CONFIG_ARCH_STMP3XXX is not set | ||
146 | # CONFIG_ARCH_NETX is not set | ||
147 | # CONFIG_ARCH_H720X is not set | ||
148 | # CONFIG_ARCH_NOMADIK is not set | ||
149 | # CONFIG_ARCH_IOP13XX is not set | ||
150 | # CONFIG_ARCH_IOP32X is not set | ||
151 | # CONFIG_ARCH_IOP33X is not set | ||
152 | # CONFIG_ARCH_IXP23XX is not set | ||
153 | # CONFIG_ARCH_IXP2000 is not set | ||
154 | # CONFIG_ARCH_IXP4XX is not set | ||
155 | # CONFIG_ARCH_L7200 is not set | ||
156 | CONFIG_ARCH_DOVE=y | ||
157 | # CONFIG_ARCH_KIRKWOOD is not set | ||
158 | # CONFIG_ARCH_LOKI is not set | ||
159 | # CONFIG_ARCH_MV78XX0 is not set | ||
160 | # CONFIG_ARCH_ORION5X is not set | ||
161 | # CONFIG_ARCH_MMP is not set | ||
162 | # CONFIG_ARCH_KS8695 is not set | ||
163 | # CONFIG_ARCH_NS9XXX is not set | ||
164 | # CONFIG_ARCH_W90X900 is not set | ||
165 | # CONFIG_ARCH_PNX4008 is not set | ||
166 | # CONFIG_ARCH_PXA is not set | ||
167 | # CONFIG_ARCH_MSM is not set | ||
168 | # CONFIG_ARCH_RPC is not set | ||
169 | # CONFIG_ARCH_SA1100 is not set | ||
170 | # CONFIG_ARCH_S3C2410 is not set | ||
171 | # CONFIG_ARCH_S3C64XX is not set | ||
172 | # CONFIG_ARCH_S5PC1XX is not set | ||
173 | # CONFIG_ARCH_SHARK is not set | ||
174 | # CONFIG_ARCH_LH7A40X is not set | ||
175 | # CONFIG_ARCH_U300 is not set | ||
176 | # CONFIG_ARCH_DAVINCI is not set | ||
177 | # CONFIG_ARCH_OMAP is not set | ||
178 | # CONFIG_ARCH_BCMRING is not set | ||
179 | |||
180 | # | ||
181 | # Marvell Dove Implementations | ||
182 | # | ||
183 | CONFIG_MACH_DOVE_DB=y | ||
184 | CONFIG_PLAT_ORION=y | ||
185 | |||
186 | # | ||
187 | # Processor Type | ||
188 | # | ||
189 | CONFIG_CPU_32=y | ||
190 | CONFIG_CPU_V6=y | ||
191 | CONFIG_CPU_32v6K=y | ||
192 | CONFIG_CPU_32v6=y | ||
193 | CONFIG_CPU_ABRT_EV6=y | ||
194 | CONFIG_CPU_PABRT_V6=y | ||
195 | CONFIG_CPU_CACHE_V6=y | ||
196 | CONFIG_CPU_CACHE_VIPT=y | ||
197 | CONFIG_CPU_COPY_V6=y | ||
198 | CONFIG_CPU_TLB_V6=y | ||
199 | CONFIG_CPU_HAS_ASID=y | ||
200 | CONFIG_CPU_CP15=y | ||
201 | CONFIG_CPU_CP15_MMU=y | ||
202 | |||
203 | # | ||
204 | # Processor Features | ||
205 | # | ||
206 | CONFIG_ARM_THUMB=y | ||
207 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
208 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
209 | # CONFIG_CPU_BPREDICT_DISABLE is not set | ||
210 | CONFIG_ARM_L1_CACHE_SHIFT=5 | ||
211 | # CONFIG_ARM_ERRATA_411920 is not set | ||
212 | |||
213 | # | ||
214 | # Bus support | ||
215 | # | ||
216 | CONFIG_PCI=y | ||
217 | CONFIG_PCI_SYSCALL=y | ||
218 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
219 | CONFIG_PCI_LEGACY=y | ||
220 | # CONFIG_PCI_DEBUG is not set | ||
221 | # CONFIG_PCI_STUB is not set | ||
222 | # CONFIG_PCI_IOV is not set | ||
223 | # CONFIG_PCCARD is not set | ||
224 | |||
225 | # | ||
226 | # Kernel Features | ||
227 | # | ||
228 | CONFIG_TICK_ONESHOT=y | ||
229 | CONFIG_NO_HZ=y | ||
230 | CONFIG_HIGH_RES_TIMERS=y | ||
231 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
232 | CONFIG_VMSPLIT_3G=y | ||
233 | # CONFIG_VMSPLIT_2G is not set | ||
234 | # CONFIG_VMSPLIT_1G is not set | ||
235 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
236 | CONFIG_PREEMPT_NONE=y | ||
237 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
238 | # CONFIG_PREEMPT is not set | ||
239 | CONFIG_HZ=100 | ||
240 | CONFIG_AEABI=y | ||
241 | CONFIG_OABI_COMPAT=y | ||
242 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
243 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
244 | # CONFIG_HIGHMEM is not set | ||
245 | CONFIG_SELECT_MEMORY_MODEL=y | ||
246 | CONFIG_FLATMEM_MANUAL=y | ||
247 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
248 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
249 | CONFIG_FLATMEM=y | ||
250 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
251 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
252 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
253 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
254 | CONFIG_ZONE_DMA_FLAG=0 | ||
255 | CONFIG_VIRT_TO_BUS=y | ||
256 | CONFIG_HAVE_MLOCK=y | ||
257 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
258 | # CONFIG_KSM is not set | ||
259 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
260 | CONFIG_ALIGNMENT_TRAP=y | ||
261 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
262 | |||
263 | # | ||
264 | # Boot options | ||
265 | # | ||
266 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
267 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
268 | CONFIG_CMDLINE="" | ||
269 | # CONFIG_XIP_KERNEL is not set | ||
270 | # CONFIG_KEXEC is not set | ||
271 | |||
272 | # | ||
273 | # CPU Power Management | ||
274 | # | ||
275 | # CONFIG_CPU_IDLE is not set | ||
276 | |||
277 | # | ||
278 | # Floating point emulation | ||
279 | # | ||
280 | |||
281 | # | ||
282 | # At least one emulation must be selected | ||
283 | # | ||
284 | # CONFIG_FPE_NWFPE is not set | ||
285 | # CONFIG_FPE_FASTFPE is not set | ||
286 | CONFIG_VFP=y | ||
287 | |||
288 | # | ||
289 | # Userspace binary formats | ||
290 | # | ||
291 | CONFIG_BINFMT_ELF=y | ||
292 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
293 | CONFIG_HAVE_AOUT=y | ||
294 | # CONFIG_BINFMT_AOUT is not set | ||
295 | # CONFIG_BINFMT_MISC is not set | ||
296 | |||
297 | # | ||
298 | # Power management options | ||
299 | # | ||
300 | # CONFIG_PM is not set | ||
301 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
302 | CONFIG_NET=y | ||
303 | |||
304 | # | ||
305 | # Networking options | ||
306 | # | ||
307 | CONFIG_PACKET=y | ||
308 | CONFIG_PACKET_MMAP=y | ||
309 | CONFIG_UNIX=y | ||
310 | CONFIG_XFRM=y | ||
311 | # CONFIG_XFRM_USER is not set | ||
312 | # CONFIG_XFRM_SUB_POLICY is not set | ||
313 | # CONFIG_XFRM_MIGRATE is not set | ||
314 | # CONFIG_XFRM_STATISTICS is not set | ||
315 | # CONFIG_NET_KEY is not set | ||
316 | CONFIG_INET=y | ||
317 | CONFIG_IP_MULTICAST=y | ||
318 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
319 | CONFIG_IP_FIB_HASH=y | ||
320 | CONFIG_IP_PNP=y | ||
321 | CONFIG_IP_PNP_DHCP=y | ||
322 | CONFIG_IP_PNP_BOOTP=y | ||
323 | # CONFIG_IP_PNP_RARP is not set | ||
324 | # CONFIG_NET_IPIP is not set | ||
325 | # CONFIG_NET_IPGRE is not set | ||
326 | # CONFIG_IP_MROUTE is not set | ||
327 | # CONFIG_ARPD is not set | ||
328 | # CONFIG_SYN_COOKIES is not set | ||
329 | # CONFIG_INET_AH is not set | ||
330 | # CONFIG_INET_ESP is not set | ||
331 | # CONFIG_INET_IPCOMP is not set | ||
332 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
333 | # CONFIG_INET_TUNNEL is not set | ||
334 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
335 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
336 | CONFIG_INET_XFRM_MODE_BEET=y | ||
337 | CONFIG_INET_LRO=y | ||
338 | CONFIG_INET_DIAG=y | ||
339 | CONFIG_INET_TCP_DIAG=y | ||
340 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
341 | CONFIG_TCP_CONG_CUBIC=y | ||
342 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
343 | # CONFIG_TCP_MD5SIG is not set | ||
344 | # CONFIG_IPV6 is not set | ||
345 | # CONFIG_NETWORK_SECMARK is not set | ||
346 | # CONFIG_NETFILTER is not set | ||
347 | # CONFIG_IP_DCCP is not set | ||
348 | # CONFIG_IP_SCTP is not set | ||
349 | # CONFIG_RDS is not set | ||
350 | # CONFIG_TIPC is not set | ||
351 | # CONFIG_ATM is not set | ||
352 | # CONFIG_BRIDGE is not set | ||
353 | # CONFIG_NET_DSA is not set | ||
354 | # CONFIG_VLAN_8021Q is not set | ||
355 | # CONFIG_DECNET is not set | ||
356 | # CONFIG_LLC2 is not set | ||
357 | # CONFIG_IPX is not set | ||
358 | # CONFIG_ATALK is not set | ||
359 | # CONFIG_X25 is not set | ||
360 | # CONFIG_LAPB is not set | ||
361 | # CONFIG_ECONET is not set | ||
362 | # CONFIG_WAN_ROUTER is not set | ||
363 | # CONFIG_PHONET is not set | ||
364 | # CONFIG_IEEE802154 is not set | ||
365 | # CONFIG_NET_SCHED is not set | ||
366 | # CONFIG_DCB is not set | ||
367 | |||
368 | # | ||
369 | # Network testing | ||
370 | # | ||
371 | # CONFIG_NET_PKTGEN is not set | ||
372 | # CONFIG_HAMRADIO is not set | ||
373 | # CONFIG_CAN is not set | ||
374 | # CONFIG_IRDA is not set | ||
375 | # CONFIG_BT is not set | ||
376 | # CONFIG_AF_RXRPC is not set | ||
377 | # CONFIG_WIRELESS is not set | ||
378 | # CONFIG_WIMAX is not set | ||
379 | # CONFIG_RFKILL is not set | ||
380 | # CONFIG_NET_9P is not set | ||
381 | |||
382 | # | ||
383 | # Device Drivers | ||
384 | # | ||
385 | |||
386 | # | ||
387 | # Generic Driver Options | ||
388 | # | ||
389 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
390 | # CONFIG_DEVTMPFS is not set | ||
391 | CONFIG_STANDALONE=y | ||
392 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
393 | CONFIG_FW_LOADER=y | ||
394 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
395 | CONFIG_EXTRA_FIRMWARE="" | ||
396 | # CONFIG_DEBUG_DRIVER is not set | ||
397 | # CONFIG_DEBUG_DEVRES is not set | ||
398 | # CONFIG_SYS_HYPERVISOR is not set | ||
399 | # CONFIG_CONNECTOR is not set | ||
400 | CONFIG_MTD=y | ||
401 | # CONFIG_MTD_DEBUG is not set | ||
402 | # CONFIG_MTD_TESTS is not set | ||
403 | # CONFIG_MTD_CONCAT is not set | ||
404 | CONFIG_MTD_PARTITIONS=y | ||
405 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
406 | CONFIG_MTD_CMDLINE_PARTS=y | ||
407 | # CONFIG_MTD_AFS_PARTS is not set | ||
408 | # CONFIG_MTD_AR7_PARTS is not set | ||
409 | |||
410 | # | ||
411 | # User Modules And Translation Layers | ||
412 | # | ||
413 | CONFIG_MTD_CHAR=y | ||
414 | CONFIG_MTD_BLKDEVS=y | ||
415 | CONFIG_MTD_BLOCK=y | ||
416 | # CONFIG_FTL is not set | ||
417 | # CONFIG_NFTL is not set | ||
418 | # CONFIG_INFTL is not set | ||
419 | # CONFIG_RFD_FTL is not set | ||
420 | # CONFIG_SSFDC is not set | ||
421 | # CONFIG_MTD_OOPS is not set | ||
422 | |||
423 | # | ||
424 | # RAM/ROM/Flash chip drivers | ||
425 | # | ||
426 | CONFIG_MTD_CFI=y | ||
427 | CONFIG_MTD_JEDECPROBE=y | ||
428 | CONFIG_MTD_GEN_PROBE=y | ||
429 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
430 | CONFIG_MTD_CFI_NOSWAP=y | ||
431 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
432 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
433 | CONFIG_MTD_CFI_GEOMETRY=y | ||
434 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
435 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
436 | # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set | ||
437 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
438 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
439 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
440 | CONFIG_MTD_CFI_I1=y | ||
441 | CONFIG_MTD_CFI_I2=y | ||
442 | # CONFIG_MTD_CFI_I4 is not set | ||
443 | # CONFIG_MTD_CFI_I8 is not set | ||
444 | # CONFIG_MTD_OTP is not set | ||
445 | CONFIG_MTD_CFI_INTELEXT=y | ||
446 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
447 | CONFIG_MTD_CFI_STAA=y | ||
448 | CONFIG_MTD_CFI_UTIL=y | ||
449 | # CONFIG_MTD_RAM is not set | ||
450 | # CONFIG_MTD_ROM is not set | ||
451 | # CONFIG_MTD_ABSENT is not set | ||
452 | |||
453 | # | ||
454 | # Mapping drivers for chip access | ||
455 | # | ||
456 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
457 | CONFIG_MTD_PHYSMAP=y | ||
458 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
459 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
460 | # CONFIG_MTD_IMPA7 is not set | ||
461 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
462 | # CONFIG_MTD_PLATRAM is not set | ||
463 | |||
464 | # | ||
465 | # Self-contained MTD device drivers | ||
466 | # | ||
467 | # CONFIG_MTD_PMC551 is not set | ||
468 | # CONFIG_MTD_DATAFLASH is not set | ||
469 | CONFIG_MTD_M25P80=y | ||
470 | CONFIG_M25PXX_USE_FAST_READ=y | ||
471 | # CONFIG_MTD_SST25L is not set | ||
472 | # CONFIG_MTD_SLRAM is not set | ||
473 | # CONFIG_MTD_PHRAM is not set | ||
474 | # CONFIG_MTD_MTDRAM is not set | ||
475 | # CONFIG_MTD_BLOCK2MTD is not set | ||
476 | |||
477 | # | ||
478 | # Disk-On-Chip Device Drivers | ||
479 | # | ||
480 | # CONFIG_MTD_DOC2000 is not set | ||
481 | # CONFIG_MTD_DOC2001 is not set | ||
482 | # CONFIG_MTD_DOC2001PLUS is not set | ||
483 | # CONFIG_MTD_NAND is not set | ||
484 | # CONFIG_MTD_ONENAND is not set | ||
485 | |||
486 | # | ||
487 | # LPDDR flash memory drivers | ||
488 | # | ||
489 | # CONFIG_MTD_LPDDR is not set | ||
490 | |||
491 | # | ||
492 | # UBI - Unsorted block images | ||
493 | # | ||
494 | CONFIG_MTD_UBI=y | ||
495 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
496 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
497 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
498 | |||
499 | # | ||
500 | # UBI debugging options | ||
501 | # | ||
502 | # CONFIG_MTD_UBI_DEBUG is not set | ||
503 | # CONFIG_PARPORT is not set | ||
504 | CONFIG_BLK_DEV=y | ||
505 | # CONFIG_BLK_CPQ_DA is not set | ||
506 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
507 | # CONFIG_BLK_DEV_DAC960 is not set | ||
508 | # CONFIG_BLK_DEV_UMEM is not set | ||
509 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
510 | CONFIG_BLK_DEV_LOOP=y | ||
511 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
512 | # CONFIG_BLK_DEV_NBD is not set | ||
513 | # CONFIG_BLK_DEV_SX8 is not set | ||
514 | # CONFIG_BLK_DEV_UB is not set | ||
515 | CONFIG_BLK_DEV_RAM=y | ||
516 | CONFIG_BLK_DEV_RAM_COUNT=1 | ||
517 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
518 | # CONFIG_BLK_DEV_XIP is not set | ||
519 | # CONFIG_CDROM_PKTCDVD is not set | ||
520 | # CONFIG_ATA_OVER_ETH is not set | ||
521 | # CONFIG_MG_DISK is not set | ||
522 | # CONFIG_MISC_DEVICES is not set | ||
523 | CONFIG_HAVE_IDE=y | ||
524 | # CONFIG_IDE is not set | ||
525 | |||
526 | # | ||
527 | # SCSI device support | ||
528 | # | ||
529 | # CONFIG_RAID_ATTRS is not set | ||
530 | CONFIG_SCSI=y | ||
531 | CONFIG_SCSI_DMA=y | ||
532 | # CONFIG_SCSI_TGT is not set | ||
533 | # CONFIG_SCSI_NETLINK is not set | ||
534 | # CONFIG_SCSI_PROC_FS is not set | ||
535 | |||
536 | # | ||
537 | # SCSI support type (disk, tape, CD-ROM) | ||
538 | # | ||
539 | CONFIG_BLK_DEV_SD=y | ||
540 | # CONFIG_CHR_DEV_ST is not set | ||
541 | # CONFIG_CHR_DEV_OSST is not set | ||
542 | # CONFIG_BLK_DEV_SR is not set | ||
543 | # CONFIG_CHR_DEV_SG is not set | ||
544 | # CONFIG_CHR_DEV_SCH is not set | ||
545 | # CONFIG_SCSI_MULTI_LUN is not set | ||
546 | # CONFIG_SCSI_CONSTANTS is not set | ||
547 | # CONFIG_SCSI_LOGGING is not set | ||
548 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
549 | CONFIG_SCSI_WAIT_SCAN=m | ||
550 | |||
551 | # | ||
552 | # SCSI Transports | ||
553 | # | ||
554 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
555 | # CONFIG_SCSI_FC_ATTRS is not set | ||
556 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
557 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
558 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
559 | # CONFIG_SCSI_LOWLEVEL is not set | ||
560 | # CONFIG_SCSI_DH is not set | ||
561 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
562 | CONFIG_ATA=y | ||
563 | # CONFIG_ATA_NONSTANDARD is not set | ||
564 | CONFIG_ATA_VERBOSE_ERROR=y | ||
565 | CONFIG_SATA_PMP=y | ||
566 | # CONFIG_SATA_AHCI is not set | ||
567 | # CONFIG_SATA_SIL24 is not set | ||
568 | CONFIG_ATA_SFF=y | ||
569 | # CONFIG_SATA_SVW is not set | ||
570 | # CONFIG_ATA_PIIX is not set | ||
571 | CONFIG_SATA_MV=y | ||
572 | # CONFIG_SATA_NV is not set | ||
573 | # CONFIG_PDC_ADMA is not set | ||
574 | # CONFIG_SATA_QSTOR is not set | ||
575 | # CONFIG_SATA_PROMISE is not set | ||
576 | # CONFIG_SATA_SX4 is not set | ||
577 | # CONFIG_SATA_SIL is not set | ||
578 | # CONFIG_SATA_SIS is not set | ||
579 | # CONFIG_SATA_ULI is not set | ||
580 | # CONFIG_SATA_VIA is not set | ||
581 | # CONFIG_SATA_VITESSE is not set | ||
582 | # CONFIG_SATA_INIC162X is not set | ||
583 | # CONFIG_PATA_ALI is not set | ||
584 | # CONFIG_PATA_AMD is not set | ||
585 | # CONFIG_PATA_ARTOP is not set | ||
586 | # CONFIG_PATA_ATP867X is not set | ||
587 | # CONFIG_PATA_ATIIXP is not set | ||
588 | # CONFIG_PATA_CMD640_PCI is not set | ||
589 | # CONFIG_PATA_CMD64X is not set | ||
590 | # CONFIG_PATA_CS5520 is not set | ||
591 | # CONFIG_PATA_CS5530 is not set | ||
592 | # CONFIG_PATA_CYPRESS is not set | ||
593 | # CONFIG_PATA_EFAR is not set | ||
594 | # CONFIG_ATA_GENERIC is not set | ||
595 | # CONFIG_PATA_HPT366 is not set | ||
596 | # CONFIG_PATA_HPT37X is not set | ||
597 | # CONFIG_PATA_HPT3X2N is not set | ||
598 | # CONFIG_PATA_HPT3X3 is not set | ||
599 | # CONFIG_PATA_IT821X is not set | ||
600 | # CONFIG_PATA_IT8213 is not set | ||
601 | # CONFIG_PATA_JMICRON is not set | ||
602 | # CONFIG_PATA_TRIFLEX is not set | ||
603 | # CONFIG_PATA_MARVELL is not set | ||
604 | # CONFIG_PATA_MPIIX is not set | ||
605 | # CONFIG_PATA_OLDPIIX is not set | ||
606 | # CONFIG_PATA_NETCELL is not set | ||
607 | # CONFIG_PATA_NINJA32 is not set | ||
608 | # CONFIG_PATA_NS87410 is not set | ||
609 | # CONFIG_PATA_NS87415 is not set | ||
610 | # CONFIG_PATA_OPTI is not set | ||
611 | # CONFIG_PATA_OPTIDMA is not set | ||
612 | # CONFIG_PATA_PDC_OLD is not set | ||
613 | # CONFIG_PATA_RADISYS is not set | ||
614 | # CONFIG_PATA_RDC is not set | ||
615 | # CONFIG_PATA_RZ1000 is not set | ||
616 | # CONFIG_PATA_SC1200 is not set | ||
617 | # CONFIG_PATA_SERVERWORKS is not set | ||
618 | # CONFIG_PATA_PDC2027X is not set | ||
619 | # CONFIG_PATA_SIL680 is not set | ||
620 | # CONFIG_PATA_SIS is not set | ||
621 | # CONFIG_PATA_VIA is not set | ||
622 | # CONFIG_PATA_WINBOND is not set | ||
623 | # CONFIG_PATA_PLATFORM is not set | ||
624 | # CONFIG_PATA_SCH is not set | ||
625 | # CONFIG_MD is not set | ||
626 | # CONFIG_FUSION is not set | ||
627 | |||
628 | # | ||
629 | # IEEE 1394 (FireWire) support | ||
630 | # | ||
631 | |||
632 | # | ||
633 | # You can enable one or both FireWire driver stacks. | ||
634 | # | ||
635 | |||
636 | # | ||
637 | # See the help texts for more information. | ||
638 | # | ||
639 | # CONFIG_FIREWIRE is not set | ||
640 | # CONFIG_IEEE1394 is not set | ||
641 | # CONFIG_I2O is not set | ||
642 | CONFIG_NETDEVICES=y | ||
643 | # CONFIG_DUMMY is not set | ||
644 | # CONFIG_BONDING is not set | ||
645 | # CONFIG_MACVLAN is not set | ||
646 | # CONFIG_EQUALIZER is not set | ||
647 | # CONFIG_TUN is not set | ||
648 | # CONFIG_VETH is not set | ||
649 | # CONFIG_ARCNET is not set | ||
650 | CONFIG_PHYLIB=y | ||
651 | |||
652 | # | ||
653 | # MII PHY device drivers | ||
654 | # | ||
655 | # CONFIG_MARVELL_PHY is not set | ||
656 | # CONFIG_DAVICOM_PHY is not set | ||
657 | # CONFIG_QSEMI_PHY is not set | ||
658 | # CONFIG_LXT_PHY is not set | ||
659 | # CONFIG_CICADA_PHY is not set | ||
660 | # CONFIG_VITESSE_PHY is not set | ||
661 | # CONFIG_SMSC_PHY is not set | ||
662 | # CONFIG_BROADCOM_PHY is not set | ||
663 | # CONFIG_ICPLUS_PHY is not set | ||
664 | # CONFIG_REALTEK_PHY is not set | ||
665 | # CONFIG_NATIONAL_PHY is not set | ||
666 | # CONFIG_STE10XP is not set | ||
667 | # CONFIG_LSI_ET1011C_PHY is not set | ||
668 | # CONFIG_FIXED_PHY is not set | ||
669 | # CONFIG_MDIO_BITBANG is not set | ||
670 | # CONFIG_NET_ETHERNET is not set | ||
671 | CONFIG_NETDEV_1000=y | ||
672 | # CONFIG_ACENIC is not set | ||
673 | # CONFIG_DL2K is not set | ||
674 | # CONFIG_E1000 is not set | ||
675 | # CONFIG_E1000E is not set | ||
676 | # CONFIG_IP1000 is not set | ||
677 | # CONFIG_IGB is not set | ||
678 | # CONFIG_IGBVF is not set | ||
679 | # CONFIG_NS83820 is not set | ||
680 | # CONFIG_HAMACHI is not set | ||
681 | # CONFIG_YELLOWFIN is not set | ||
682 | # CONFIG_R8169 is not set | ||
683 | # CONFIG_SIS190 is not set | ||
684 | # CONFIG_SKGE is not set | ||
685 | # CONFIG_SKY2 is not set | ||
686 | # CONFIG_VIA_VELOCITY is not set | ||
687 | # CONFIG_TIGON3 is not set | ||
688 | # CONFIG_BNX2 is not set | ||
689 | # CONFIG_CNIC is not set | ||
690 | CONFIG_MV643XX_ETH=y | ||
691 | # CONFIG_QLA3XXX is not set | ||
692 | # CONFIG_ATL1 is not set | ||
693 | # CONFIG_ATL1E is not set | ||
694 | # CONFIG_ATL1C is not set | ||
695 | # CONFIG_JME is not set | ||
696 | # CONFIG_NETDEV_10000 is not set | ||
697 | # CONFIG_TR is not set | ||
698 | CONFIG_WLAN=y | ||
699 | # CONFIG_WLAN_PRE80211 is not set | ||
700 | # CONFIG_WLAN_80211 is not set | ||
701 | |||
702 | # | ||
703 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
704 | # | ||
705 | |||
706 | # | ||
707 | # USB Network Adapters | ||
708 | # | ||
709 | # CONFIG_USB_CATC is not set | ||
710 | # CONFIG_USB_KAWETH is not set | ||
711 | # CONFIG_USB_PEGASUS is not set | ||
712 | # CONFIG_USB_RTL8150 is not set | ||
713 | # CONFIG_USB_USBNET is not set | ||
714 | # CONFIG_WAN is not set | ||
715 | # CONFIG_FDDI is not set | ||
716 | # CONFIG_HIPPI is not set | ||
717 | # CONFIG_PPP is not set | ||
718 | # CONFIG_SLIP is not set | ||
719 | # CONFIG_NET_FC is not set | ||
720 | # CONFIG_NETCONSOLE is not set | ||
721 | # CONFIG_NETPOLL is not set | ||
722 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
723 | # CONFIG_ISDN is not set | ||
724 | # CONFIG_PHONE is not set | ||
725 | |||
726 | # | ||
727 | # Input device support | ||
728 | # | ||
729 | CONFIG_INPUT=y | ||
730 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
731 | CONFIG_INPUT_POLLDEV=y | ||
732 | |||
733 | # | ||
734 | # Userland interfaces | ||
735 | # | ||
736 | # CONFIG_INPUT_MOUSEDEV is not set | ||
737 | # CONFIG_INPUT_JOYDEV is not set | ||
738 | CONFIG_INPUT_EVDEV=y | ||
739 | # CONFIG_INPUT_EVBUG is not set | ||
740 | |||
741 | # | ||
742 | # Input Device Drivers | ||
743 | # | ||
744 | CONFIG_INPUT_KEYBOARD=y | ||
745 | # CONFIG_KEYBOARD_ADP5588 is not set | ||
746 | # CONFIG_KEYBOARD_ATKBD is not set | ||
747 | # CONFIG_QT2160 is not set | ||
748 | # CONFIG_KEYBOARD_LKKBD is not set | ||
749 | # CONFIG_KEYBOARD_GPIO is not set | ||
750 | # CONFIG_KEYBOARD_MATRIX is not set | ||
751 | # CONFIG_KEYBOARD_MAX7359 is not set | ||
752 | # CONFIG_KEYBOARD_NEWTON is not set | ||
753 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
754 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
755 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
756 | # CONFIG_KEYBOARD_XTKBD is not set | ||
757 | CONFIG_INPUT_MOUSE=y | ||
758 | # CONFIG_MOUSE_PS2 is not set | ||
759 | # CONFIG_MOUSE_SERIAL is not set | ||
760 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
761 | # CONFIG_MOUSE_BCM5974 is not set | ||
762 | # CONFIG_MOUSE_VSXXXAA is not set | ||
763 | # CONFIG_MOUSE_GPIO is not set | ||
764 | # CONFIG_MOUSE_SYNAPTICS_I2C is not set | ||
765 | # CONFIG_INPUT_JOYSTICK is not set | ||
766 | # CONFIG_INPUT_TABLET is not set | ||
767 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
768 | # CONFIG_INPUT_MISC is not set | ||
769 | |||
770 | # | ||
771 | # Hardware I/O ports | ||
772 | # | ||
773 | # CONFIG_SERIO is not set | ||
774 | # CONFIG_GAMEPORT is not set | ||
775 | |||
776 | # | ||
777 | # Character devices | ||
778 | # | ||
779 | CONFIG_VT=y | ||
780 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
781 | CONFIG_VT_CONSOLE=y | ||
782 | CONFIG_HW_CONSOLE=y | ||
783 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
784 | # CONFIG_DEVKMEM is not set | ||
785 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
786 | # CONFIG_NOZOMI is not set | ||
787 | |||
788 | # | ||
789 | # Serial drivers | ||
790 | # | ||
791 | CONFIG_SERIAL_8250=y | ||
792 | CONFIG_SERIAL_8250_CONSOLE=y | ||
793 | # CONFIG_SERIAL_8250_PCI is not set | ||
794 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
795 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | ||
796 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
797 | |||
798 | # | ||
799 | # Non-8250 serial port support | ||
800 | # | ||
801 | # CONFIG_SERIAL_MAX3100 is not set | ||
802 | CONFIG_SERIAL_CORE=y | ||
803 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
804 | # CONFIG_SERIAL_JSM is not set | ||
805 | CONFIG_UNIX98_PTYS=y | ||
806 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
807 | CONFIG_LEGACY_PTYS=y | ||
808 | CONFIG_LEGACY_PTY_COUNT=16 | ||
809 | # CONFIG_IPMI_HANDLER is not set | ||
810 | # CONFIG_HW_RANDOM is not set | ||
811 | # CONFIG_R3964 is not set | ||
812 | # CONFIG_APPLICOM is not set | ||
813 | # CONFIG_RAW_DRIVER is not set | ||
814 | # CONFIG_TCG_TPM is not set | ||
815 | CONFIG_DEVPORT=y | ||
816 | CONFIG_I2C=y | ||
817 | CONFIG_I2C_BOARDINFO=y | ||
818 | CONFIG_I2C_COMPAT=y | ||
819 | CONFIG_I2C_CHARDEV=y | ||
820 | CONFIG_I2C_HELPER_AUTO=y | ||
821 | |||
822 | # | ||
823 | # I2C Hardware Bus support | ||
824 | # | ||
825 | |||
826 | # | ||
827 | # PC SMBus host controller drivers | ||
828 | # | ||
829 | # CONFIG_I2C_ALI1535 is not set | ||
830 | # CONFIG_I2C_ALI1563 is not set | ||
831 | # CONFIG_I2C_ALI15X3 is not set | ||
832 | # CONFIG_I2C_AMD756 is not set | ||
833 | # CONFIG_I2C_AMD8111 is not set | ||
834 | # CONFIG_I2C_I801 is not set | ||
835 | # CONFIG_I2C_ISCH is not set | ||
836 | # CONFIG_I2C_PIIX4 is not set | ||
837 | # CONFIG_I2C_NFORCE2 is not set | ||
838 | # CONFIG_I2C_SIS5595 is not set | ||
839 | # CONFIG_I2C_SIS630 is not set | ||
840 | # CONFIG_I2C_SIS96X is not set | ||
841 | # CONFIG_I2C_VIA is not set | ||
842 | # CONFIG_I2C_VIAPRO is not set | ||
843 | |||
844 | # | ||
845 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
846 | # | ||
847 | # CONFIG_I2C_GPIO is not set | ||
848 | CONFIG_I2C_MV64XXX=y | ||
849 | # CONFIG_I2C_OCORES is not set | ||
850 | # CONFIG_I2C_SIMTEC is not set | ||
851 | |||
852 | # | ||
853 | # External I2C/SMBus adapter drivers | ||
854 | # | ||
855 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
856 | # CONFIG_I2C_TAOS_EVM is not set | ||
857 | # CONFIG_I2C_TINY_USB is not set | ||
858 | |||
859 | # | ||
860 | # Graphics adapter I2C/DDC channel drivers | ||
861 | # | ||
862 | # CONFIG_I2C_VOODOO3 is not set | ||
863 | |||
864 | # | ||
865 | # Other I2C/SMBus bus drivers | ||
866 | # | ||
867 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
868 | # CONFIG_I2C_STUB is not set | ||
869 | |||
870 | # | ||
871 | # Miscellaneous I2C Chip support | ||
872 | # | ||
873 | # CONFIG_DS1682 is not set | ||
874 | # CONFIG_SENSORS_TSL2550 is not set | ||
875 | # CONFIG_I2C_DEBUG_CORE is not set | ||
876 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
877 | # CONFIG_I2C_DEBUG_BUS is not set | ||
878 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
879 | CONFIG_SPI=y | ||
880 | # CONFIG_SPI_DEBUG is not set | ||
881 | CONFIG_SPI_MASTER=y | ||
882 | |||
883 | # | ||
884 | # SPI Master Controller Drivers | ||
885 | # | ||
886 | # CONFIG_SPI_BITBANG is not set | ||
887 | # CONFIG_SPI_GPIO is not set | ||
888 | CONFIG_SPI_ORION=y | ||
889 | |||
890 | # | ||
891 | # SPI Protocol Masters | ||
892 | # | ||
893 | # CONFIG_SPI_SPIDEV is not set | ||
894 | # CONFIG_SPI_TLE62X0 is not set | ||
895 | |||
896 | # | ||
897 | # PPS support | ||
898 | # | ||
899 | # CONFIG_PPS is not set | ||
900 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
901 | CONFIG_GPIOLIB=y | ||
902 | # CONFIG_DEBUG_GPIO is not set | ||
903 | # CONFIG_GPIO_SYSFS is not set | ||
904 | |||
905 | # | ||
906 | # Memory mapped GPIO expanders: | ||
907 | # | ||
908 | |||
909 | # | ||
910 | # I2C GPIO expanders: | ||
911 | # | ||
912 | # CONFIG_GPIO_MAX732X is not set | ||
913 | # CONFIG_GPIO_PCA953X is not set | ||
914 | # CONFIG_GPIO_PCF857X is not set | ||
915 | |||
916 | # | ||
917 | # PCI GPIO expanders: | ||
918 | # | ||
919 | # CONFIG_GPIO_BT8XX is not set | ||
920 | # CONFIG_GPIO_LANGWELL is not set | ||
921 | |||
922 | # | ||
923 | # SPI GPIO expanders: | ||
924 | # | ||
925 | # CONFIG_GPIO_MAX7301 is not set | ||
926 | # CONFIG_GPIO_MCP23S08 is not set | ||
927 | # CONFIG_GPIO_MC33880 is not set | ||
928 | |||
929 | # | ||
930 | # AC97 GPIO expanders: | ||
931 | # | ||
932 | # CONFIG_W1 is not set | ||
933 | # CONFIG_POWER_SUPPLY is not set | ||
934 | # CONFIG_HWMON is not set | ||
935 | # CONFIG_THERMAL is not set | ||
936 | # CONFIG_WATCHDOG is not set | ||
937 | CONFIG_SSB_POSSIBLE=y | ||
938 | |||
939 | # | ||
940 | # Sonics Silicon Backplane | ||
941 | # | ||
942 | # CONFIG_SSB is not set | ||
943 | |||
944 | # | ||
945 | # Multifunction device drivers | ||
946 | # | ||
947 | # CONFIG_MFD_CORE is not set | ||
948 | # CONFIG_MFD_SM501 is not set | ||
949 | # CONFIG_MFD_ASIC3 is not set | ||
950 | # CONFIG_HTC_EGPIO is not set | ||
951 | # CONFIG_HTC_PASIC3 is not set | ||
952 | # CONFIG_TPS65010 is not set | ||
953 | # CONFIG_TWL4030_CORE is not set | ||
954 | # CONFIG_MFD_TMIO is not set | ||
955 | # CONFIG_MFD_TC6393XB is not set | ||
956 | # CONFIG_PMIC_DA903X is not set | ||
957 | # CONFIG_MFD_WM8400 is not set | ||
958 | # CONFIG_MFD_WM831X is not set | ||
959 | # CONFIG_MFD_WM8350_I2C is not set | ||
960 | # CONFIG_MFD_PCF50633 is not set | ||
961 | # CONFIG_MFD_MC13783 is not set | ||
962 | # CONFIG_AB3100_CORE is not set | ||
963 | # CONFIG_EZX_PCAP is not set | ||
964 | # CONFIG_REGULATOR is not set | ||
965 | # CONFIG_MEDIA_SUPPORT is not set | ||
966 | |||
967 | # | ||
968 | # Graphics support | ||
969 | # | ||
970 | CONFIG_VGA_ARB=y | ||
971 | # CONFIG_DRM is not set | ||
972 | # CONFIG_VGASTATE is not set | ||
973 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
974 | # CONFIG_FB is not set | ||
975 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
976 | |||
977 | # | ||
978 | # Display device support | ||
979 | # | ||
980 | # CONFIG_DISPLAY_SUPPORT is not set | ||
981 | |||
982 | # | ||
983 | # Console display driver support | ||
984 | # | ||
985 | # CONFIG_VGA_CONSOLE is not set | ||
986 | CONFIG_DUMMY_CONSOLE=y | ||
987 | # CONFIG_SOUND is not set | ||
988 | CONFIG_HID_SUPPORT=y | ||
989 | CONFIG_HID=y | ||
990 | # CONFIG_HIDRAW is not set | ||
991 | |||
992 | # | ||
993 | # USB Input Devices | ||
994 | # | ||
995 | CONFIG_USB_HID=y | ||
996 | # CONFIG_HID_PID is not set | ||
997 | # CONFIG_USB_HIDDEV is not set | ||
998 | |||
999 | # | ||
1000 | # Special HID drivers | ||
1001 | # | ||
1002 | # CONFIG_HID_A4TECH is not set | ||
1003 | # CONFIG_HID_APPLE is not set | ||
1004 | # CONFIG_HID_BELKIN is not set | ||
1005 | # CONFIG_HID_CHERRY is not set | ||
1006 | # CONFIG_HID_CHICONY is not set | ||
1007 | # CONFIG_HID_CYPRESS is not set | ||
1008 | # CONFIG_HID_DRAGONRISE is not set | ||
1009 | # CONFIG_HID_EZKEY is not set | ||
1010 | # CONFIG_HID_KYE is not set | ||
1011 | # CONFIG_HID_GYRATION is not set | ||
1012 | # CONFIG_HID_TWINHAN is not set | ||
1013 | # CONFIG_HID_KENSINGTON is not set | ||
1014 | # CONFIG_HID_LOGITECH is not set | ||
1015 | # CONFIG_HID_MICROSOFT is not set | ||
1016 | # CONFIG_HID_MONTEREY is not set | ||
1017 | # CONFIG_HID_NTRIG is not set | ||
1018 | # CONFIG_HID_PANTHERLORD is not set | ||
1019 | # CONFIG_HID_PETALYNX is not set | ||
1020 | # CONFIG_HID_SAMSUNG is not set | ||
1021 | # CONFIG_HID_SONY is not set | ||
1022 | # CONFIG_HID_SUNPLUS is not set | ||
1023 | # CONFIG_HID_GREENASIA is not set | ||
1024 | # CONFIG_HID_SMARTJOYPLUS is not set | ||
1025 | # CONFIG_HID_TOPSEED is not set | ||
1026 | # CONFIG_HID_THRUSTMASTER is not set | ||
1027 | # CONFIG_HID_ZEROPLUS is not set | ||
1028 | CONFIG_USB_SUPPORT=y | ||
1029 | CONFIG_USB_ARCH_HAS_HCD=y | ||
1030 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
1031 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
1032 | CONFIG_USB=y | ||
1033 | # CONFIG_USB_DEBUG is not set | ||
1034 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1035 | |||
1036 | # | ||
1037 | # Miscellaneous USB options | ||
1038 | # | ||
1039 | CONFIG_USB_DEVICEFS=y | ||
1040 | CONFIG_USB_DEVICE_CLASS=y | ||
1041 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
1042 | # CONFIG_USB_OTG is not set | ||
1043 | # CONFIG_USB_OTG_WHITELIST is not set | ||
1044 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
1045 | # CONFIG_USB_MON is not set | ||
1046 | # CONFIG_USB_WUSB is not set | ||
1047 | # CONFIG_USB_WUSB_CBAF is not set | ||
1048 | |||
1049 | # | ||
1050 | # USB Host Controller Drivers | ||
1051 | # | ||
1052 | # CONFIG_USB_C67X00_HCD is not set | ||
1053 | # CONFIG_USB_XHCI_HCD is not set | ||
1054 | CONFIG_USB_EHCI_HCD=y | ||
1055 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
1056 | CONFIG_USB_EHCI_TT_NEWSCHED=y | ||
1057 | # CONFIG_USB_OXU210HP_HCD is not set | ||
1058 | # CONFIG_USB_ISP116X_HCD is not set | ||
1059 | # CONFIG_USB_ISP1760_HCD is not set | ||
1060 | # CONFIG_USB_ISP1362_HCD is not set | ||
1061 | # CONFIG_USB_OHCI_HCD is not set | ||
1062 | # CONFIG_USB_UHCI_HCD is not set | ||
1063 | # CONFIG_USB_SL811_HCD is not set | ||
1064 | # CONFIG_USB_R8A66597_HCD is not set | ||
1065 | # CONFIG_USB_WHCI_HCD is not set | ||
1066 | # CONFIG_USB_HWA_HCD is not set | ||
1067 | # CONFIG_USB_MUSB_HDRC is not set | ||
1068 | |||
1069 | # | ||
1070 | # USB Device Class drivers | ||
1071 | # | ||
1072 | # CONFIG_USB_ACM is not set | ||
1073 | # CONFIG_USB_PRINTER is not set | ||
1074 | # CONFIG_USB_WDM is not set | ||
1075 | # CONFIG_USB_TMC is not set | ||
1076 | |||
1077 | # | ||
1078 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
1079 | # | ||
1080 | |||
1081 | # | ||
1082 | # also be needed; see USB_STORAGE Help for more info | ||
1083 | # | ||
1084 | CONFIG_USB_STORAGE=y | ||
1085 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
1086 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
1087 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
1088 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
1089 | # CONFIG_USB_STORAGE_USBAT is not set | ||
1090 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
1091 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
1092 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
1093 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
1094 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
1095 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1096 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1097 | # CONFIG_USB_LIBUSUAL is not set | ||
1098 | |||
1099 | # | ||
1100 | # USB Imaging devices | ||
1101 | # | ||
1102 | # CONFIG_USB_MDC800 is not set | ||
1103 | # CONFIG_USB_MICROTEK is not set | ||
1104 | |||
1105 | # | ||
1106 | # USB port drivers | ||
1107 | # | ||
1108 | # CONFIG_USB_SERIAL is not set | ||
1109 | |||
1110 | # | ||
1111 | # USB Miscellaneous drivers | ||
1112 | # | ||
1113 | # CONFIG_USB_EMI62 is not set | ||
1114 | # CONFIG_USB_EMI26 is not set | ||
1115 | # CONFIG_USB_ADUTUX is not set | ||
1116 | # CONFIG_USB_SEVSEG is not set | ||
1117 | # CONFIG_USB_RIO500 is not set | ||
1118 | # CONFIG_USB_LEGOTOWER is not set | ||
1119 | # CONFIG_USB_LCD is not set | ||
1120 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1121 | # CONFIG_USB_LED is not set | ||
1122 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1123 | # CONFIG_USB_CYTHERM is not set | ||
1124 | # CONFIG_USB_IDMOUSE is not set | ||
1125 | # CONFIG_USB_FTDI_ELAN is not set | ||
1126 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1127 | # CONFIG_USB_SISUSBVGA is not set | ||
1128 | # CONFIG_USB_LD is not set | ||
1129 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1130 | # CONFIG_USB_IOWARRIOR is not set | ||
1131 | # CONFIG_USB_TEST is not set | ||
1132 | # CONFIG_USB_ISIGHTFW is not set | ||
1133 | # CONFIG_USB_VST is not set | ||
1134 | # CONFIG_USB_GADGET is not set | ||
1135 | |||
1136 | # | ||
1137 | # OTG and related infrastructure | ||
1138 | # | ||
1139 | # CONFIG_USB_GPIO_VBUS is not set | ||
1140 | # CONFIG_NOP_USB_XCEIV is not set | ||
1141 | # CONFIG_UWB is not set | ||
1142 | # CONFIG_MMC is not set | ||
1143 | # CONFIG_MEMSTICK is not set | ||
1144 | # CONFIG_NEW_LEDS is not set | ||
1145 | # CONFIG_ACCESSIBILITY is not set | ||
1146 | # CONFIG_INFINIBAND is not set | ||
1147 | CONFIG_RTC_LIB=y | ||
1148 | CONFIG_RTC_CLASS=y | ||
1149 | CONFIG_RTC_HCTOSYS=y | ||
1150 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1151 | # CONFIG_RTC_DEBUG is not set | ||
1152 | |||
1153 | # | ||
1154 | # RTC interfaces | ||
1155 | # | ||
1156 | CONFIG_RTC_INTF_SYSFS=y | ||
1157 | CONFIG_RTC_INTF_PROC=y | ||
1158 | CONFIG_RTC_INTF_DEV=y | ||
1159 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
1160 | # CONFIG_RTC_DRV_TEST is not set | ||
1161 | |||
1162 | # | ||
1163 | # I2C RTC drivers | ||
1164 | # | ||
1165 | # CONFIG_RTC_DRV_DS1307 is not set | ||
1166 | # CONFIG_RTC_DRV_DS1374 is not set | ||
1167 | # CONFIG_RTC_DRV_DS1672 is not set | ||
1168 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
1169 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
1170 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
1171 | # CONFIG_RTC_DRV_X1205 is not set | ||
1172 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
1173 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
1174 | # CONFIG_RTC_DRV_M41T80 is not set | ||
1175 | # CONFIG_RTC_DRV_S35390A is not set | ||
1176 | # CONFIG_RTC_DRV_FM3130 is not set | ||
1177 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1178 | # CONFIG_RTC_DRV_RX8025 is not set | ||
1179 | |||
1180 | # | ||
1181 | # SPI RTC drivers | ||
1182 | # | ||
1183 | # CONFIG_RTC_DRV_M41T94 is not set | ||
1184 | # CONFIG_RTC_DRV_DS1305 is not set | ||
1185 | # CONFIG_RTC_DRV_DS1390 is not set | ||
1186 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
1187 | # CONFIG_RTC_DRV_R9701 is not set | ||
1188 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
1189 | # CONFIG_RTC_DRV_DS3234 is not set | ||
1190 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
1191 | |||
1192 | # | ||
1193 | # Platform RTC drivers | ||
1194 | # | ||
1195 | # CONFIG_RTC_DRV_CMOS is not set | ||
1196 | # CONFIG_RTC_DRV_DS1286 is not set | ||
1197 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1198 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1199 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1200 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1201 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1202 | # CONFIG_RTC_DRV_M48T35 is not set | ||
1203 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1204 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
1205 | # CONFIG_RTC_DRV_V3020 is not set | ||
1206 | |||
1207 | # | ||
1208 | # on-CPU RTC drivers | ||
1209 | # | ||
1210 | CONFIG_DMADEVICES=y | ||
1211 | |||
1212 | # | ||
1213 | # DMA Devices | ||
1214 | # | ||
1215 | CONFIG_MV_XOR=y | ||
1216 | CONFIG_DMA_ENGINE=y | ||
1217 | |||
1218 | # | ||
1219 | # DMA Clients | ||
1220 | # | ||
1221 | # CONFIG_NET_DMA is not set | ||
1222 | # CONFIG_ASYNC_TX_DMA is not set | ||
1223 | # CONFIG_DMATEST is not set | ||
1224 | # CONFIG_AUXDISPLAY is not set | ||
1225 | # CONFIG_UIO is not set | ||
1226 | |||
1227 | # | ||
1228 | # TI VLYNQ | ||
1229 | # | ||
1230 | # CONFIG_STAGING is not set | ||
1231 | |||
1232 | # | ||
1233 | # File systems | ||
1234 | # | ||
1235 | CONFIG_EXT2_FS=y | ||
1236 | # CONFIG_EXT2_FS_XATTR is not set | ||
1237 | # CONFIG_EXT2_FS_XIP is not set | ||
1238 | CONFIG_EXT3_FS=y | ||
1239 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
1240 | # CONFIG_EXT3_FS_XATTR is not set | ||
1241 | # CONFIG_EXT4_FS is not set | ||
1242 | CONFIG_JBD=y | ||
1243 | # CONFIG_JBD_DEBUG is not set | ||
1244 | # CONFIG_REISERFS_FS is not set | ||
1245 | # CONFIG_JFS_FS is not set | ||
1246 | # CONFIG_FS_POSIX_ACL is not set | ||
1247 | # CONFIG_XFS_FS is not set | ||
1248 | # CONFIG_GFS2_FS is not set | ||
1249 | # CONFIG_OCFS2_FS is not set | ||
1250 | # CONFIG_BTRFS_FS is not set | ||
1251 | # CONFIG_NILFS2_FS is not set | ||
1252 | CONFIG_FILE_LOCKING=y | ||
1253 | CONFIG_FSNOTIFY=y | ||
1254 | CONFIG_DNOTIFY=y | ||
1255 | CONFIG_INOTIFY=y | ||
1256 | CONFIG_INOTIFY_USER=y | ||
1257 | # CONFIG_QUOTA is not set | ||
1258 | # CONFIG_AUTOFS_FS is not set | ||
1259 | # CONFIG_AUTOFS4_FS is not set | ||
1260 | # CONFIG_FUSE_FS is not set | ||
1261 | |||
1262 | # | ||
1263 | # Caches | ||
1264 | # | ||
1265 | # CONFIG_FSCACHE is not set | ||
1266 | |||
1267 | # | ||
1268 | # CD-ROM/DVD Filesystems | ||
1269 | # | ||
1270 | CONFIG_ISO9660_FS=y | ||
1271 | CONFIG_JOLIET=y | ||
1272 | # CONFIG_ZISOFS is not set | ||
1273 | CONFIG_UDF_FS=m | ||
1274 | CONFIG_UDF_NLS=y | ||
1275 | |||
1276 | # | ||
1277 | # DOS/FAT/NT Filesystems | ||
1278 | # | ||
1279 | CONFIG_FAT_FS=y | ||
1280 | CONFIG_MSDOS_FS=y | ||
1281 | CONFIG_VFAT_FS=y | ||
1282 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1283 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1284 | # CONFIG_NTFS_FS is not set | ||
1285 | |||
1286 | # | ||
1287 | # Pseudo filesystems | ||
1288 | # | ||
1289 | CONFIG_PROC_FS=y | ||
1290 | CONFIG_PROC_SYSCTL=y | ||
1291 | CONFIG_PROC_PAGE_MONITOR=y | ||
1292 | CONFIG_SYSFS=y | ||
1293 | CONFIG_TMPFS=y | ||
1294 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1295 | # CONFIG_HUGETLB_PAGE is not set | ||
1296 | # CONFIG_CONFIGFS_FS is not set | ||
1297 | CONFIG_MISC_FILESYSTEMS=y | ||
1298 | # CONFIG_ADFS_FS is not set | ||
1299 | # CONFIG_AFFS_FS is not set | ||
1300 | # CONFIG_HFS_FS is not set | ||
1301 | # CONFIG_HFSPLUS_FS is not set | ||
1302 | # CONFIG_BEFS_FS is not set | ||
1303 | # CONFIG_BFS_FS is not set | ||
1304 | # CONFIG_EFS_FS is not set | ||
1305 | CONFIG_JFFS2_FS=y | ||
1306 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1307 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1308 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1309 | # CONFIG_JFFS2_SUMMARY is not set | ||
1310 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1311 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1312 | CONFIG_JFFS2_ZLIB=y | ||
1313 | # CONFIG_JFFS2_LZO is not set | ||
1314 | CONFIG_JFFS2_RTIME=y | ||
1315 | # CONFIG_JFFS2_RUBIN is not set | ||
1316 | # CONFIG_UBIFS_FS is not set | ||
1317 | # CONFIG_CRAMFS is not set | ||
1318 | # CONFIG_SQUASHFS is not set | ||
1319 | # CONFIG_VXFS_FS is not set | ||
1320 | # CONFIG_MINIX_FS is not set | ||
1321 | # CONFIG_OMFS_FS is not set | ||
1322 | # CONFIG_HPFS_FS is not set | ||
1323 | # CONFIG_QNX4FS_FS is not set | ||
1324 | # CONFIG_ROMFS_FS is not set | ||
1325 | # CONFIG_SYSV_FS is not set | ||
1326 | # CONFIG_UFS_FS is not set | ||
1327 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1328 | CONFIG_NFS_FS=y | ||
1329 | CONFIG_NFS_V3=y | ||
1330 | # CONFIG_NFS_V3_ACL is not set | ||
1331 | # CONFIG_NFS_V4 is not set | ||
1332 | CONFIG_ROOT_NFS=y | ||
1333 | # CONFIG_NFSD is not set | ||
1334 | CONFIG_LOCKD=y | ||
1335 | CONFIG_LOCKD_V4=y | ||
1336 | CONFIG_NFS_COMMON=y | ||
1337 | CONFIG_SUNRPC=y | ||
1338 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1339 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1340 | # CONFIG_SMB_FS is not set | ||
1341 | # CONFIG_CIFS is not set | ||
1342 | # CONFIG_NCP_FS is not set | ||
1343 | # CONFIG_CODA_FS is not set | ||
1344 | # CONFIG_AFS_FS is not set | ||
1345 | |||
1346 | # | ||
1347 | # Partition Types | ||
1348 | # | ||
1349 | CONFIG_PARTITION_ADVANCED=y | ||
1350 | # CONFIG_ACORN_PARTITION is not set | ||
1351 | # CONFIG_OSF_PARTITION is not set | ||
1352 | # CONFIG_AMIGA_PARTITION is not set | ||
1353 | # CONFIG_ATARI_PARTITION is not set | ||
1354 | # CONFIG_MAC_PARTITION is not set | ||
1355 | CONFIG_MSDOS_PARTITION=y | ||
1356 | # CONFIG_BSD_DISKLABEL is not set | ||
1357 | # CONFIG_MINIX_SUBPARTITION is not set | ||
1358 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
1359 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
1360 | # CONFIG_LDM_PARTITION is not set | ||
1361 | # CONFIG_SGI_PARTITION is not set | ||
1362 | # CONFIG_ULTRIX_PARTITION is not set | ||
1363 | # CONFIG_SUN_PARTITION is not set | ||
1364 | # CONFIG_KARMA_PARTITION is not set | ||
1365 | # CONFIG_EFI_PARTITION is not set | ||
1366 | # CONFIG_SYSV68_PARTITION is not set | ||
1367 | CONFIG_NLS=y | ||
1368 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1369 | CONFIG_NLS_CODEPAGE_437=y | ||
1370 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1371 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1372 | CONFIG_NLS_CODEPAGE_850=y | ||
1373 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1374 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1375 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1376 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1377 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1378 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1379 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1380 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1381 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1382 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1383 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1384 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1385 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1386 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1387 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1388 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1389 | # CONFIG_NLS_ISO8859_8 is not set | ||
1390 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1391 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1392 | # CONFIG_NLS_ASCII is not set | ||
1393 | CONFIG_NLS_ISO8859_1=y | ||
1394 | CONFIG_NLS_ISO8859_2=y | ||
1395 | # CONFIG_NLS_ISO8859_3 is not set | ||
1396 | # CONFIG_NLS_ISO8859_4 is not set | ||
1397 | # CONFIG_NLS_ISO8859_5 is not set | ||
1398 | # CONFIG_NLS_ISO8859_6 is not set | ||
1399 | # CONFIG_NLS_ISO8859_7 is not set | ||
1400 | # CONFIG_NLS_ISO8859_9 is not set | ||
1401 | # CONFIG_NLS_ISO8859_13 is not set | ||
1402 | # CONFIG_NLS_ISO8859_14 is not set | ||
1403 | # CONFIG_NLS_ISO8859_15 is not set | ||
1404 | # CONFIG_NLS_KOI8_R is not set | ||
1405 | # CONFIG_NLS_KOI8_U is not set | ||
1406 | CONFIG_NLS_UTF8=y | ||
1407 | # CONFIG_DLM is not set | ||
1408 | |||
1409 | # | ||
1410 | # Kernel hacking | ||
1411 | # | ||
1412 | # CONFIG_PRINTK_TIME is not set | ||
1413 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1414 | CONFIG_ENABLE_MUST_CHECK=y | ||
1415 | CONFIG_FRAME_WARN=1024 | ||
1416 | CONFIG_MAGIC_SYSRQ=y | ||
1417 | # CONFIG_STRIP_ASM_SYMS is not set | ||
1418 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1419 | CONFIG_DEBUG_FS=y | ||
1420 | # CONFIG_HEADERS_CHECK is not set | ||
1421 | CONFIG_DEBUG_KERNEL=y | ||
1422 | # CONFIG_DEBUG_SHIRQ is not set | ||
1423 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1424 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1425 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1426 | CONFIG_DETECT_HUNG_TASK=y | ||
1427 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
1428 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
1429 | # CONFIG_SCHED_DEBUG is not set | ||
1430 | # CONFIG_SCHEDSTATS is not set | ||
1431 | CONFIG_TIMER_STATS=y | ||
1432 | # CONFIG_DEBUG_OBJECTS is not set | ||
1433 | # CONFIG_DEBUG_SLAB is not set | ||
1434 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
1435 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1436 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1437 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1438 | # CONFIG_DEBUG_MUTEXES is not set | ||
1439 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1440 | # CONFIG_PROVE_LOCKING is not set | ||
1441 | # CONFIG_LOCK_STAT is not set | ||
1442 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1443 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1444 | # CONFIG_DEBUG_KOBJECT is not set | ||
1445 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1446 | CONFIG_DEBUG_INFO=y | ||
1447 | # CONFIG_DEBUG_VM is not set | ||
1448 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1449 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
1450 | # CONFIG_DEBUG_LIST is not set | ||
1451 | # CONFIG_DEBUG_SG is not set | ||
1452 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1453 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
1454 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1455 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1456 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
1457 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1458 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
1459 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
1460 | # CONFIG_FAULT_INJECTION is not set | ||
1461 | # CONFIG_LATENCYTOP is not set | ||
1462 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
1463 | # CONFIG_PAGE_POISONING is not set | ||
1464 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
1465 | CONFIG_TRACING_SUPPORT=y | ||
1466 | CONFIG_FTRACE=y | ||
1467 | # CONFIG_FUNCTION_TRACER is not set | ||
1468 | # CONFIG_IRQSOFF_TRACER is not set | ||
1469 | # CONFIG_SCHED_TRACER is not set | ||
1470 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
1471 | # CONFIG_BOOT_TRACER is not set | ||
1472 | CONFIG_BRANCH_PROFILE_NONE=y | ||
1473 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
1474 | # CONFIG_PROFILE_ALL_BRANCHES is not set | ||
1475 | # CONFIG_STACK_TRACER is not set | ||
1476 | # CONFIG_KMEMTRACE is not set | ||
1477 | # CONFIG_WORKQUEUE_TRACER is not set | ||
1478 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
1479 | # CONFIG_DYNAMIC_DEBUG is not set | ||
1480 | # CONFIG_SAMPLES is not set | ||
1481 | CONFIG_HAVE_ARCH_KGDB=y | ||
1482 | # CONFIG_KGDB is not set | ||
1483 | CONFIG_ARM_UNWIND=y | ||
1484 | CONFIG_DEBUG_USER=y | ||
1485 | CONFIG_DEBUG_ERRORS=y | ||
1486 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1487 | # CONFIG_DEBUG_LL is not set | ||
1488 | |||
1489 | # | ||
1490 | # Security options | ||
1491 | # | ||
1492 | # CONFIG_KEYS is not set | ||
1493 | # CONFIG_SECURITY is not set | ||
1494 | # CONFIG_SECURITYFS is not set | ||
1495 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1496 | CONFIG_CRYPTO=y | ||
1497 | |||
1498 | # | ||
1499 | # Crypto core or helper | ||
1500 | # | ||
1501 | CONFIG_CRYPTO_ALGAPI=y | ||
1502 | CONFIG_CRYPTO_ALGAPI2=y | ||
1503 | CONFIG_CRYPTO_AEAD2=y | ||
1504 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1505 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1506 | CONFIG_CRYPTO_HASH=y | ||
1507 | CONFIG_CRYPTO_HASH2=y | ||
1508 | CONFIG_CRYPTO_RNG2=y | ||
1509 | CONFIG_CRYPTO_PCOMP=y | ||
1510 | CONFIG_CRYPTO_MANAGER=y | ||
1511 | CONFIG_CRYPTO_MANAGER2=y | ||
1512 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1513 | CONFIG_CRYPTO_NULL=y | ||
1514 | CONFIG_CRYPTO_WORKQUEUE=y | ||
1515 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1516 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1517 | # CONFIG_CRYPTO_TEST is not set | ||
1518 | |||
1519 | # | ||
1520 | # Authenticated Encryption with Associated Data | ||
1521 | # | ||
1522 | # CONFIG_CRYPTO_CCM is not set | ||
1523 | # CONFIG_CRYPTO_GCM is not set | ||
1524 | # CONFIG_CRYPTO_SEQIV is not set | ||
1525 | |||
1526 | # | ||
1527 | # Block modes | ||
1528 | # | ||
1529 | CONFIG_CRYPTO_CBC=y | ||
1530 | # CONFIG_CRYPTO_CTR is not set | ||
1531 | # CONFIG_CRYPTO_CTS is not set | ||
1532 | CONFIG_CRYPTO_ECB=m | ||
1533 | # CONFIG_CRYPTO_LRW is not set | ||
1534 | CONFIG_CRYPTO_PCBC=m | ||
1535 | # CONFIG_CRYPTO_XTS is not set | ||
1536 | |||
1537 | # | ||
1538 | # Hash modes | ||
1539 | # | ||
1540 | CONFIG_CRYPTO_HMAC=y | ||
1541 | # CONFIG_CRYPTO_XCBC is not set | ||
1542 | # CONFIG_CRYPTO_VMAC is not set | ||
1543 | |||
1544 | # | ||
1545 | # Digest | ||
1546 | # | ||
1547 | CONFIG_CRYPTO_CRC32C=y | ||
1548 | # CONFIG_CRYPTO_GHASH is not set | ||
1549 | CONFIG_CRYPTO_MD4=y | ||
1550 | CONFIG_CRYPTO_MD5=y | ||
1551 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1552 | # CONFIG_CRYPTO_RMD128 is not set | ||
1553 | # CONFIG_CRYPTO_RMD160 is not set | ||
1554 | # CONFIG_CRYPTO_RMD256 is not set | ||
1555 | # CONFIG_CRYPTO_RMD320 is not set | ||
1556 | CONFIG_CRYPTO_SHA1=y | ||
1557 | CONFIG_CRYPTO_SHA256=y | ||
1558 | CONFIG_CRYPTO_SHA512=y | ||
1559 | # CONFIG_CRYPTO_TGR192 is not set | ||
1560 | # CONFIG_CRYPTO_WP512 is not set | ||
1561 | |||
1562 | # | ||
1563 | # Ciphers | ||
1564 | # | ||
1565 | CONFIG_CRYPTO_AES=y | ||
1566 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1567 | # CONFIG_CRYPTO_ARC4 is not set | ||
1568 | CONFIG_CRYPTO_BLOWFISH=y | ||
1569 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1570 | # CONFIG_CRYPTO_CAST5 is not set | ||
1571 | # CONFIG_CRYPTO_CAST6 is not set | ||
1572 | CONFIG_CRYPTO_DES=y | ||
1573 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1574 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1575 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1576 | # CONFIG_CRYPTO_SEED is not set | ||
1577 | # CONFIG_CRYPTO_SERPENT is not set | ||
1578 | CONFIG_CRYPTO_TEA=y | ||
1579 | CONFIG_CRYPTO_TWOFISH=y | ||
1580 | CONFIG_CRYPTO_TWOFISH_COMMON=y | ||
1581 | |||
1582 | # | ||
1583 | # Compression | ||
1584 | # | ||
1585 | CONFIG_CRYPTO_DEFLATE=y | ||
1586 | # CONFIG_CRYPTO_ZLIB is not set | ||
1587 | CONFIG_CRYPTO_LZO=y | ||
1588 | |||
1589 | # | ||
1590 | # Random Number Generation | ||
1591 | # | ||
1592 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
1593 | CONFIG_CRYPTO_HW=y | ||
1594 | # CONFIG_CRYPTO_DEV_MV_CESA is not set | ||
1595 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1596 | # CONFIG_BINARY_PRINTF is not set | ||
1597 | |||
1598 | # | ||
1599 | # Library routines | ||
1600 | # | ||
1601 | CONFIG_BITREVERSE=y | ||
1602 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1603 | CONFIG_CRC_CCITT=y | ||
1604 | CONFIG_CRC16=y | ||
1605 | # CONFIG_CRC_T10DIF is not set | ||
1606 | CONFIG_CRC_ITU_T=m | ||
1607 | CONFIG_CRC32=y | ||
1608 | # CONFIG_CRC7 is not set | ||
1609 | CONFIG_LIBCRC32C=y | ||
1610 | CONFIG_ZLIB_INFLATE=y | ||
1611 | CONFIG_ZLIB_DEFLATE=y | ||
1612 | CONFIG_LZO_COMPRESS=y | ||
1613 | CONFIG_LZO_DECOMPRESS=y | ||
1614 | CONFIG_HAS_IOMEM=y | ||
1615 | CONFIG_HAS_IOPORT=y | ||
1616 | CONFIG_HAS_DMA=y | ||
1617 | CONFIG_NLATTR=y | ||
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig new file mode 100644 index 000000000000..3b9a32ace909 --- /dev/null +++ b/arch/arm/mach-dove/Kconfig | |||
@@ -0,0 +1,14 @@ | |||
1 | if ARCH_DOVE | ||
2 | |||
3 | menu "Marvell Dove Implementations" | ||
4 | |||
5 | config MACH_DOVE_DB | ||
6 | bool "Marvell DB-MV88AP510 Development Board" | ||
7 | select I2C_BOARDINFO | ||
8 | help | ||
9 | Say 'Y' here if you want your kernel to support the | ||
10 | Marvell DB-MV88AP510 Development Board. | ||
11 | |||
12 | endmenu | ||
13 | |||
14 | endif | ||
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile new file mode 100644 index 000000000000..7ab3be53f642 --- /dev/null +++ b/arch/arm/mach-dove/Makefile | |||
@@ -0,0 +1,3 @@ | |||
1 | obj-y += common.o addr-map.o irq.o pcie.o | ||
2 | |||
3 | obj-$(CONFIG_MACH_DOVE_DB) += dove-db-setup.o | ||
diff --git a/arch/arm/mach-dove/Makefile.boot b/arch/arm/mach-dove/Makefile.boot new file mode 100644 index 000000000000..67039c3e0c48 --- /dev/null +++ b/arch/arm/mach-dove/Makefile.boot | |||
@@ -0,0 +1,3 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-dove/addr-map.c b/arch/arm/mach-dove/addr-map.c new file mode 100644 index 000000000000..00be4fc26dd7 --- /dev/null +++ b/arch/arm/mach-dove/addr-map.c | |||
@@ -0,0 +1,149 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/addr-map.c | ||
3 | * | ||
4 | * Address map functions for Marvell Dove 88AP510 SoC | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/mbus.h> | ||
14 | #include <linux/io.h> | ||
15 | #include <asm/mach/arch.h> | ||
16 | #include <asm/setup.h> | ||
17 | #include "common.h" | ||
18 | |||
19 | /* | ||
20 | * Generic Address Decode Windows bit settings | ||
21 | */ | ||
22 | #define TARGET_DDR 0x0 | ||
23 | #define TARGET_BOOTROM 0x1 | ||
24 | #define TARGET_CESA 0x3 | ||
25 | #define TARGET_PCIE0 0x4 | ||
26 | #define TARGET_PCIE1 0x8 | ||
27 | #define TARGET_SCRATCHPAD 0xd | ||
28 | |||
29 | #define ATTR_CESA 0x01 | ||
30 | #define ATTR_BOOTROM 0xfd | ||
31 | #define ATTR_DEV_SPI0_ROM 0xfe | ||
32 | #define ATTR_DEV_SPI1_ROM 0xfb | ||
33 | #define ATTR_PCIE_IO 0xe0 | ||
34 | #define ATTR_PCIE_MEM 0xe8 | ||
35 | #define ATTR_SCRATCHPAD 0x0 | ||
36 | |||
37 | /* | ||
38 | * CPU Address Decode Windows registers | ||
39 | */ | ||
40 | #define WIN_CTRL(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x0) | ||
41 | #define WIN_BASE(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x4) | ||
42 | #define WIN_REMAP_LO(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0x8) | ||
43 | #define WIN_REMAP_HI(n) (BRIDGE_VIRT_BASE + ((n) << 4) + 0xc) | ||
44 | |||
45 | struct mbus_dram_target_info dove_mbus_dram_info; | ||
46 | |||
47 | static inline void __iomem *ddr_map_sc(int i) | ||
48 | { | ||
49 | return (void __iomem *)(DOVE_MC_VIRT_BASE + 0x100 + ((i) << 4)); | ||
50 | } | ||
51 | |||
52 | static int cpu_win_can_remap(int win) | ||
53 | { | ||
54 | if (win < 4) | ||
55 | return 1; | ||
56 | |||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | static void __init setup_cpu_win(int win, u32 base, u32 size, | ||
61 | u8 target, u8 attr, int remap) | ||
62 | { | ||
63 | u32 ctrl; | ||
64 | |||
65 | base &= 0xffff0000; | ||
66 | ctrl = ((size - 1) & 0xffff0000) | (attr << 8) | (target << 4) | 1; | ||
67 | |||
68 | writel(base, WIN_BASE(win)); | ||
69 | writel(ctrl, WIN_CTRL(win)); | ||
70 | if (cpu_win_can_remap(win)) { | ||
71 | if (remap < 0) | ||
72 | remap = base; | ||
73 | writel(remap & 0xffff0000, WIN_REMAP_LO(win)); | ||
74 | writel(0, WIN_REMAP_HI(win)); | ||
75 | } | ||
76 | } | ||
77 | |||
78 | void __init dove_setup_cpu_mbus(void) | ||
79 | { | ||
80 | int i; | ||
81 | int cs; | ||
82 | |||
83 | /* | ||
84 | * First, disable and clear windows. | ||
85 | */ | ||
86 | for (i = 0; i < 8; i++) { | ||
87 | writel(0, WIN_BASE(i)); | ||
88 | writel(0, WIN_CTRL(i)); | ||
89 | if (cpu_win_can_remap(i)) { | ||
90 | writel(0, WIN_REMAP_LO(i)); | ||
91 | writel(0, WIN_REMAP_HI(i)); | ||
92 | } | ||
93 | } | ||
94 | |||
95 | /* | ||
96 | * Setup windows for PCIe IO+MEM space. | ||
97 | */ | ||
98 | setup_cpu_win(0, DOVE_PCIE0_IO_PHYS_BASE, DOVE_PCIE0_IO_SIZE, | ||
99 | TARGET_PCIE0, ATTR_PCIE_IO, DOVE_PCIE0_IO_BUS_BASE); | ||
100 | setup_cpu_win(1, DOVE_PCIE1_IO_PHYS_BASE, DOVE_PCIE1_IO_SIZE, | ||
101 | TARGET_PCIE1, ATTR_PCIE_IO, DOVE_PCIE1_IO_BUS_BASE); | ||
102 | setup_cpu_win(2, DOVE_PCIE0_MEM_PHYS_BASE, DOVE_PCIE0_MEM_SIZE, | ||
103 | TARGET_PCIE0, ATTR_PCIE_MEM, -1); | ||
104 | setup_cpu_win(3, DOVE_PCIE1_MEM_PHYS_BASE, DOVE_PCIE1_MEM_SIZE, | ||
105 | TARGET_PCIE1, ATTR_PCIE_MEM, -1); | ||
106 | |||
107 | /* | ||
108 | * Setup window for CESA engine. | ||
109 | */ | ||
110 | setup_cpu_win(4, DOVE_CESA_PHYS_BASE, DOVE_CESA_SIZE, | ||
111 | TARGET_CESA, ATTR_CESA, -1); | ||
112 | |||
113 | /* | ||
114 | * Setup the Window to the BootROM for Standby and Sleep Resume | ||
115 | */ | ||
116 | setup_cpu_win(5, DOVE_BOOTROM_PHYS_BASE, DOVE_BOOTROM_SIZE, | ||
117 | TARGET_BOOTROM, ATTR_BOOTROM, -1); | ||
118 | |||
119 | /* | ||
120 | * Setup the Window to the PMU Scratch Pad space | ||
121 | */ | ||
122 | setup_cpu_win(6, DOVE_SCRATCHPAD_PHYS_BASE, DOVE_SCRATCHPAD_SIZE, | ||
123 | TARGET_SCRATCHPAD, ATTR_SCRATCHPAD, -1); | ||
124 | |||
125 | /* | ||
126 | * Setup MBUS dram target info. | ||
127 | */ | ||
128 | dove_mbus_dram_info.mbus_dram_target_id = TARGET_DDR; | ||
129 | |||
130 | for (i = 0, cs = 0; i < 2; i++) { | ||
131 | u32 map = readl(ddr_map_sc(i)); | ||
132 | |||
133 | /* | ||
134 | * Chip select enabled? | ||
135 | */ | ||
136 | if (map & 1) { | ||
137 | struct mbus_dram_window *w; | ||
138 | |||
139 | w = &dove_mbus_dram_info.cs[cs++]; | ||
140 | w->cs_index = i; | ||
141 | w->mbus_attr = 0; /* CS address decoding done inside */ | ||
142 | /* the DDR controller, no need to */ | ||
143 | /* provide attributes */ | ||
144 | w->base = map & 0xff800000; | ||
145 | w->size = 0x100000 << (((map & 0x000f0000) >> 16) - 4); | ||
146 | } | ||
147 | } | ||
148 | dove_mbus_dram_info.num_cs = cs; | ||
149 | } | ||
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c new file mode 100644 index 000000000000..a20cf099cd97 --- /dev/null +++ b/arch/arm/mach-dove/common.c | |||
@@ -0,0 +1,777 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/common.c | ||
3 | * | ||
4 | * Core functions for Marvell Dove 88AP510 System On Chip | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/delay.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/platform_device.h> | ||
15 | #include <linux/pci.h> | ||
16 | #include <linux/serial_8250.h> | ||
17 | #include <linux/clk.h> | ||
18 | #include <linux/mbus.h> | ||
19 | #include <linux/mv643xx_eth.h> | ||
20 | #include <linux/mv643xx_i2c.h> | ||
21 | #include <linux/ata_platform.h> | ||
22 | #include <linux/spi/orion_spi.h> | ||
23 | #include <linux/gpio.h> | ||
24 | #include <asm/page.h> | ||
25 | #include <asm/setup.h> | ||
26 | #include <asm/timex.h> | ||
27 | #include <asm/mach/map.h> | ||
28 | #include <asm/mach/time.h> | ||
29 | #include <asm/mach/pci.h> | ||
30 | #include <mach/dove.h> | ||
31 | #include <mach/bridge-regs.h> | ||
32 | #include <asm/mach/arch.h> | ||
33 | #include <linux/irq.h> | ||
34 | #include <plat/mv_xor.h> | ||
35 | #include <plat/ehci-orion.h> | ||
36 | #include <plat/time.h> | ||
37 | #include "common.h" | ||
38 | |||
39 | /***************************************************************************** | ||
40 | * I/O Address Mapping | ||
41 | ****************************************************************************/ | ||
42 | static struct map_desc dove_io_desc[] __initdata = { | ||
43 | { | ||
44 | .virtual = DOVE_SB_REGS_VIRT_BASE, | ||
45 | .pfn = __phys_to_pfn(DOVE_SB_REGS_PHYS_BASE), | ||
46 | .length = DOVE_SB_REGS_SIZE, | ||
47 | .type = MT_DEVICE, | ||
48 | }, { | ||
49 | .virtual = DOVE_NB_REGS_VIRT_BASE, | ||
50 | .pfn = __phys_to_pfn(DOVE_NB_REGS_PHYS_BASE), | ||
51 | .length = DOVE_NB_REGS_SIZE, | ||
52 | .type = MT_DEVICE, | ||
53 | }, { | ||
54 | .virtual = DOVE_PCIE0_IO_VIRT_BASE, | ||
55 | .pfn = __phys_to_pfn(DOVE_PCIE0_IO_PHYS_BASE), | ||
56 | .length = DOVE_PCIE0_IO_SIZE, | ||
57 | .type = MT_DEVICE, | ||
58 | }, { | ||
59 | .virtual = DOVE_PCIE1_IO_VIRT_BASE, | ||
60 | .pfn = __phys_to_pfn(DOVE_PCIE1_IO_PHYS_BASE), | ||
61 | .length = DOVE_PCIE1_IO_SIZE, | ||
62 | .type = MT_DEVICE, | ||
63 | }, | ||
64 | }; | ||
65 | |||
66 | void __init dove_map_io(void) | ||
67 | { | ||
68 | iotable_init(dove_io_desc, ARRAY_SIZE(dove_io_desc)); | ||
69 | } | ||
70 | |||
71 | /***************************************************************************** | ||
72 | * EHCI | ||
73 | ****************************************************************************/ | ||
74 | static struct orion_ehci_data dove_ehci_data = { | ||
75 | .dram = &dove_mbus_dram_info, | ||
76 | .phy_version = EHCI_PHY_NA, | ||
77 | }; | ||
78 | |||
79 | static u64 ehci_dmamask = DMA_BIT_MASK(32); | ||
80 | |||
81 | /***************************************************************************** | ||
82 | * EHCI0 | ||
83 | ****************************************************************************/ | ||
84 | static struct resource dove_ehci0_resources[] = { | ||
85 | { | ||
86 | .start = DOVE_USB0_PHYS_BASE, | ||
87 | .end = DOVE_USB0_PHYS_BASE + SZ_4K - 1, | ||
88 | .flags = IORESOURCE_MEM, | ||
89 | }, { | ||
90 | .start = IRQ_DOVE_USB0, | ||
91 | .end = IRQ_DOVE_USB0, | ||
92 | .flags = IORESOURCE_IRQ, | ||
93 | }, | ||
94 | }; | ||
95 | |||
96 | static struct platform_device dove_ehci0 = { | ||
97 | .name = "orion-ehci", | ||
98 | .id = 0, | ||
99 | .dev = { | ||
100 | .dma_mask = &ehci_dmamask, | ||
101 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
102 | .platform_data = &dove_ehci_data, | ||
103 | }, | ||
104 | .resource = dove_ehci0_resources, | ||
105 | .num_resources = ARRAY_SIZE(dove_ehci0_resources), | ||
106 | }; | ||
107 | |||
108 | void __init dove_ehci0_init(void) | ||
109 | { | ||
110 | platform_device_register(&dove_ehci0); | ||
111 | } | ||
112 | |||
113 | /***************************************************************************** | ||
114 | * EHCI1 | ||
115 | ****************************************************************************/ | ||
116 | static struct resource dove_ehci1_resources[] = { | ||
117 | { | ||
118 | .start = DOVE_USB1_PHYS_BASE, | ||
119 | .end = DOVE_USB1_PHYS_BASE + SZ_4K - 1, | ||
120 | .flags = IORESOURCE_MEM, | ||
121 | }, { | ||
122 | .start = IRQ_DOVE_USB1, | ||
123 | .end = IRQ_DOVE_USB1, | ||
124 | .flags = IORESOURCE_IRQ, | ||
125 | }, | ||
126 | }; | ||
127 | |||
128 | static struct platform_device dove_ehci1 = { | ||
129 | .name = "orion-ehci", | ||
130 | .id = 1, | ||
131 | .dev = { | ||
132 | .dma_mask = &ehci_dmamask, | ||
133 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
134 | .platform_data = &dove_ehci_data, | ||
135 | }, | ||
136 | .resource = dove_ehci1_resources, | ||
137 | .num_resources = ARRAY_SIZE(dove_ehci1_resources), | ||
138 | }; | ||
139 | |||
140 | void __init dove_ehci1_init(void) | ||
141 | { | ||
142 | platform_device_register(&dove_ehci1); | ||
143 | } | ||
144 | |||
145 | /***************************************************************************** | ||
146 | * GE00 | ||
147 | ****************************************************************************/ | ||
148 | struct mv643xx_eth_shared_platform_data dove_ge00_shared_data = { | ||
149 | .t_clk = 0, | ||
150 | .dram = &dove_mbus_dram_info, | ||
151 | }; | ||
152 | |||
153 | static struct resource dove_ge00_shared_resources[] = { | ||
154 | { | ||
155 | .name = "ge00 base", | ||
156 | .start = DOVE_GE00_PHYS_BASE + 0x2000, | ||
157 | .end = DOVE_GE00_PHYS_BASE + SZ_16K - 1, | ||
158 | .flags = IORESOURCE_MEM, | ||
159 | }, | ||
160 | }; | ||
161 | |||
162 | static struct platform_device dove_ge00_shared = { | ||
163 | .name = MV643XX_ETH_SHARED_NAME, | ||
164 | .id = 0, | ||
165 | .dev = { | ||
166 | .platform_data = &dove_ge00_shared_data, | ||
167 | }, | ||
168 | .num_resources = 1, | ||
169 | .resource = dove_ge00_shared_resources, | ||
170 | }; | ||
171 | |||
172 | static struct resource dove_ge00_resources[] = { | ||
173 | { | ||
174 | .name = "ge00 irq", | ||
175 | .start = IRQ_DOVE_GE00_SUM, | ||
176 | .end = IRQ_DOVE_GE00_SUM, | ||
177 | .flags = IORESOURCE_IRQ, | ||
178 | }, | ||
179 | }; | ||
180 | |||
181 | static struct platform_device dove_ge00 = { | ||
182 | .name = MV643XX_ETH_NAME, | ||
183 | .id = 0, | ||
184 | .num_resources = 1, | ||
185 | .resource = dove_ge00_resources, | ||
186 | .dev = { | ||
187 | .coherent_dma_mask = 0xffffffff, | ||
188 | }, | ||
189 | }; | ||
190 | |||
191 | void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data) | ||
192 | { | ||
193 | eth_data->shared = &dove_ge00_shared; | ||
194 | dove_ge00.dev.platform_data = eth_data; | ||
195 | |||
196 | platform_device_register(&dove_ge00_shared); | ||
197 | platform_device_register(&dove_ge00); | ||
198 | } | ||
199 | |||
200 | /***************************************************************************** | ||
201 | * SoC RTC | ||
202 | ****************************************************************************/ | ||
203 | static struct resource dove_rtc_resource[] = { | ||
204 | { | ||
205 | .start = DOVE_RTC_PHYS_BASE, | ||
206 | .end = DOVE_RTC_PHYS_BASE + 32 - 1, | ||
207 | .flags = IORESOURCE_MEM, | ||
208 | }, { | ||
209 | .start = IRQ_DOVE_RTC, | ||
210 | .flags = IORESOURCE_IRQ, | ||
211 | } | ||
212 | }; | ||
213 | |||
214 | void __init dove_rtc_init(void) | ||
215 | { | ||
216 | platform_device_register_simple("rtc-mv", -1, dove_rtc_resource, 2); | ||
217 | } | ||
218 | |||
219 | /***************************************************************************** | ||
220 | * SATA | ||
221 | ****************************************************************************/ | ||
222 | static struct resource dove_sata_resources[] = { | ||
223 | { | ||
224 | .name = "sata base", | ||
225 | .start = DOVE_SATA_PHYS_BASE, | ||
226 | .end = DOVE_SATA_PHYS_BASE + 0x5000 - 1, | ||
227 | .flags = IORESOURCE_MEM, | ||
228 | }, { | ||
229 | .name = "sata irq", | ||
230 | .start = IRQ_DOVE_SATA, | ||
231 | .end = IRQ_DOVE_SATA, | ||
232 | .flags = IORESOURCE_IRQ, | ||
233 | }, | ||
234 | }; | ||
235 | |||
236 | static struct platform_device dove_sata = { | ||
237 | .name = "sata_mv", | ||
238 | .id = 0, | ||
239 | .dev = { | ||
240 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
241 | }, | ||
242 | .num_resources = ARRAY_SIZE(dove_sata_resources), | ||
243 | .resource = dove_sata_resources, | ||
244 | }; | ||
245 | |||
246 | void __init dove_sata_init(struct mv_sata_platform_data *sata_data) | ||
247 | { | ||
248 | sata_data->dram = &dove_mbus_dram_info; | ||
249 | dove_sata.dev.platform_data = sata_data; | ||
250 | platform_device_register(&dove_sata); | ||
251 | } | ||
252 | |||
253 | /***************************************************************************** | ||
254 | * UART0 | ||
255 | ****************************************************************************/ | ||
256 | static struct plat_serial8250_port dove_uart0_data[] = { | ||
257 | { | ||
258 | .mapbase = DOVE_UART0_PHYS_BASE, | ||
259 | .membase = (char *)DOVE_UART0_VIRT_BASE, | ||
260 | .irq = IRQ_DOVE_UART_0, | ||
261 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
262 | .iotype = UPIO_MEM, | ||
263 | .regshift = 2, | ||
264 | .uartclk = 0, | ||
265 | }, { | ||
266 | }, | ||
267 | }; | ||
268 | |||
269 | static struct resource dove_uart0_resources[] = { | ||
270 | { | ||
271 | .start = DOVE_UART0_PHYS_BASE, | ||
272 | .end = DOVE_UART0_PHYS_BASE + SZ_256 - 1, | ||
273 | .flags = IORESOURCE_MEM, | ||
274 | }, { | ||
275 | .start = IRQ_DOVE_UART_0, | ||
276 | .end = IRQ_DOVE_UART_0, | ||
277 | .flags = IORESOURCE_IRQ, | ||
278 | }, | ||
279 | }; | ||
280 | |||
281 | static struct platform_device dove_uart0 = { | ||
282 | .name = "serial8250", | ||
283 | .id = 0, | ||
284 | .dev = { | ||
285 | .platform_data = dove_uart0_data, | ||
286 | }, | ||
287 | .resource = dove_uart0_resources, | ||
288 | .num_resources = ARRAY_SIZE(dove_uart0_resources), | ||
289 | }; | ||
290 | |||
291 | void __init dove_uart0_init(void) | ||
292 | { | ||
293 | platform_device_register(&dove_uart0); | ||
294 | } | ||
295 | |||
296 | /***************************************************************************** | ||
297 | * UART1 | ||
298 | ****************************************************************************/ | ||
299 | static struct plat_serial8250_port dove_uart1_data[] = { | ||
300 | { | ||
301 | .mapbase = DOVE_UART1_PHYS_BASE, | ||
302 | .membase = (char *)DOVE_UART1_VIRT_BASE, | ||
303 | .irq = IRQ_DOVE_UART_1, | ||
304 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
305 | .iotype = UPIO_MEM, | ||
306 | .regshift = 2, | ||
307 | .uartclk = 0, | ||
308 | }, { | ||
309 | }, | ||
310 | }; | ||
311 | |||
312 | static struct resource dove_uart1_resources[] = { | ||
313 | { | ||
314 | .start = DOVE_UART1_PHYS_BASE, | ||
315 | .end = DOVE_UART1_PHYS_BASE + SZ_256 - 1, | ||
316 | .flags = IORESOURCE_MEM, | ||
317 | }, { | ||
318 | .start = IRQ_DOVE_UART_1, | ||
319 | .end = IRQ_DOVE_UART_1, | ||
320 | .flags = IORESOURCE_IRQ, | ||
321 | }, | ||
322 | }; | ||
323 | |||
324 | static struct platform_device dove_uart1 = { | ||
325 | .name = "serial8250", | ||
326 | .id = 1, | ||
327 | .dev = { | ||
328 | .platform_data = dove_uart1_data, | ||
329 | }, | ||
330 | .resource = dove_uart1_resources, | ||
331 | .num_resources = ARRAY_SIZE(dove_uart1_resources), | ||
332 | }; | ||
333 | |||
334 | void __init dove_uart1_init(void) | ||
335 | { | ||
336 | platform_device_register(&dove_uart1); | ||
337 | } | ||
338 | |||
339 | /***************************************************************************** | ||
340 | * UART2 | ||
341 | ****************************************************************************/ | ||
342 | static struct plat_serial8250_port dove_uart2_data[] = { | ||
343 | { | ||
344 | .mapbase = DOVE_UART2_PHYS_BASE, | ||
345 | .membase = (char *)DOVE_UART2_VIRT_BASE, | ||
346 | .irq = IRQ_DOVE_UART_2, | ||
347 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
348 | .iotype = UPIO_MEM, | ||
349 | .regshift = 2, | ||
350 | .uartclk = 0, | ||
351 | }, { | ||
352 | }, | ||
353 | }; | ||
354 | |||
355 | static struct resource dove_uart2_resources[] = { | ||
356 | { | ||
357 | .start = DOVE_UART2_PHYS_BASE, | ||
358 | .end = DOVE_UART2_PHYS_BASE + SZ_256 - 1, | ||
359 | .flags = IORESOURCE_MEM, | ||
360 | }, { | ||
361 | .start = IRQ_DOVE_UART_2, | ||
362 | .end = IRQ_DOVE_UART_2, | ||
363 | .flags = IORESOURCE_IRQ, | ||
364 | }, | ||
365 | }; | ||
366 | |||
367 | static struct platform_device dove_uart2 = { | ||
368 | .name = "serial8250", | ||
369 | .id = 2, | ||
370 | .dev = { | ||
371 | .platform_data = dove_uart2_data, | ||
372 | }, | ||
373 | .resource = dove_uart2_resources, | ||
374 | .num_resources = ARRAY_SIZE(dove_uart2_resources), | ||
375 | }; | ||
376 | |||
377 | void __init dove_uart2_init(void) | ||
378 | { | ||
379 | platform_device_register(&dove_uart2); | ||
380 | } | ||
381 | |||
382 | /***************************************************************************** | ||
383 | * UART3 | ||
384 | ****************************************************************************/ | ||
385 | static struct plat_serial8250_port dove_uart3_data[] = { | ||
386 | { | ||
387 | .mapbase = DOVE_UART3_PHYS_BASE, | ||
388 | .membase = (char *)DOVE_UART3_VIRT_BASE, | ||
389 | .irq = IRQ_DOVE_UART_3, | ||
390 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
391 | .iotype = UPIO_MEM, | ||
392 | .regshift = 2, | ||
393 | .uartclk = 0, | ||
394 | }, { | ||
395 | }, | ||
396 | }; | ||
397 | |||
398 | static struct resource dove_uart3_resources[] = { | ||
399 | { | ||
400 | .start = DOVE_UART3_PHYS_BASE, | ||
401 | .end = DOVE_UART3_PHYS_BASE + SZ_256 - 1, | ||
402 | .flags = IORESOURCE_MEM, | ||
403 | }, { | ||
404 | .start = IRQ_DOVE_UART_3, | ||
405 | .end = IRQ_DOVE_UART_3, | ||
406 | .flags = IORESOURCE_IRQ, | ||
407 | }, | ||
408 | }; | ||
409 | |||
410 | static struct platform_device dove_uart3 = { | ||
411 | .name = "serial8250", | ||
412 | .id = 3, | ||
413 | .dev = { | ||
414 | .platform_data = dove_uart3_data, | ||
415 | }, | ||
416 | .resource = dove_uart3_resources, | ||
417 | .num_resources = ARRAY_SIZE(dove_uart3_resources), | ||
418 | }; | ||
419 | |||
420 | void __init dove_uart3_init(void) | ||
421 | { | ||
422 | platform_device_register(&dove_uart3); | ||
423 | } | ||
424 | |||
425 | /***************************************************************************** | ||
426 | * SPI0 | ||
427 | ****************************************************************************/ | ||
428 | static struct orion_spi_info dove_spi0_data = { | ||
429 | .tclk = 0, | ||
430 | }; | ||
431 | |||
432 | static struct resource dove_spi0_resources[] = { | ||
433 | { | ||
434 | .start = DOVE_SPI0_PHYS_BASE, | ||
435 | .end = DOVE_SPI0_PHYS_BASE + SZ_512 - 1, | ||
436 | .flags = IORESOURCE_MEM, | ||
437 | }, { | ||
438 | .start = IRQ_DOVE_SPI0, | ||
439 | .end = IRQ_DOVE_SPI0, | ||
440 | .flags = IORESOURCE_IRQ, | ||
441 | }, | ||
442 | }; | ||
443 | |||
444 | static struct platform_device dove_spi0 = { | ||
445 | .name = "orion_spi", | ||
446 | .id = 0, | ||
447 | .resource = dove_spi0_resources, | ||
448 | .dev = { | ||
449 | .platform_data = &dove_spi0_data, | ||
450 | }, | ||
451 | .num_resources = ARRAY_SIZE(dove_spi0_resources), | ||
452 | }; | ||
453 | |||
454 | void __init dove_spi0_init(void) | ||
455 | { | ||
456 | platform_device_register(&dove_spi0); | ||
457 | } | ||
458 | |||
459 | /***************************************************************************** | ||
460 | * SPI1 | ||
461 | ****************************************************************************/ | ||
462 | static struct orion_spi_info dove_spi1_data = { | ||
463 | .tclk = 0, | ||
464 | }; | ||
465 | |||
466 | static struct resource dove_spi1_resources[] = { | ||
467 | { | ||
468 | .start = DOVE_SPI1_PHYS_BASE, | ||
469 | .end = DOVE_SPI1_PHYS_BASE + SZ_512 - 1, | ||
470 | .flags = IORESOURCE_MEM, | ||
471 | }, { | ||
472 | .start = IRQ_DOVE_SPI1, | ||
473 | .end = IRQ_DOVE_SPI1, | ||
474 | .flags = IORESOURCE_IRQ, | ||
475 | }, | ||
476 | }; | ||
477 | |||
478 | static struct platform_device dove_spi1 = { | ||
479 | .name = "orion_spi", | ||
480 | .id = 1, | ||
481 | .resource = dove_spi1_resources, | ||
482 | .dev = { | ||
483 | .platform_data = &dove_spi1_data, | ||
484 | }, | ||
485 | .num_resources = ARRAY_SIZE(dove_spi1_resources), | ||
486 | }; | ||
487 | |||
488 | void __init dove_spi1_init(void) | ||
489 | { | ||
490 | platform_device_register(&dove_spi1); | ||
491 | } | ||
492 | |||
493 | /***************************************************************************** | ||
494 | * I2C | ||
495 | ****************************************************************************/ | ||
496 | static struct mv64xxx_i2c_pdata dove_i2c_data = { | ||
497 | .freq_m = 10, /* assumes 166 MHz TCLK gets 94.3kHz */ | ||
498 | .freq_n = 3, | ||
499 | .timeout = 1000, /* Default timeout of 1 second */ | ||
500 | }; | ||
501 | |||
502 | static struct resource dove_i2c_resources[] = { | ||
503 | { | ||
504 | .name = "i2c base", | ||
505 | .start = DOVE_I2C_PHYS_BASE, | ||
506 | .end = DOVE_I2C_PHYS_BASE + 0x20 - 1, | ||
507 | .flags = IORESOURCE_MEM, | ||
508 | }, { | ||
509 | .name = "i2c irq", | ||
510 | .start = IRQ_DOVE_I2C, | ||
511 | .end = IRQ_DOVE_I2C, | ||
512 | .flags = IORESOURCE_IRQ, | ||
513 | }, | ||
514 | }; | ||
515 | |||
516 | static struct platform_device dove_i2c = { | ||
517 | .name = MV64XXX_I2C_CTLR_NAME, | ||
518 | .id = 0, | ||
519 | .num_resources = ARRAY_SIZE(dove_i2c_resources), | ||
520 | .resource = dove_i2c_resources, | ||
521 | .dev = { | ||
522 | .platform_data = &dove_i2c_data, | ||
523 | }, | ||
524 | }; | ||
525 | |||
526 | void __init dove_i2c_init(void) | ||
527 | { | ||
528 | platform_device_register(&dove_i2c); | ||
529 | } | ||
530 | |||
531 | /***************************************************************************** | ||
532 | * Time handling | ||
533 | ****************************************************************************/ | ||
534 | static int get_tclk(void) | ||
535 | { | ||
536 | /* use DOVE_RESET_SAMPLE_HI/LO to detect tclk */ | ||
537 | return 166666667; | ||
538 | } | ||
539 | |||
540 | static void dove_timer_init(void) | ||
541 | { | ||
542 | orion_time_init(IRQ_DOVE_BRIDGE, get_tclk()); | ||
543 | } | ||
544 | |||
545 | struct sys_timer dove_timer = { | ||
546 | .init = dove_timer_init, | ||
547 | }; | ||
548 | |||
549 | /***************************************************************************** | ||
550 | * XOR | ||
551 | ****************************************************************************/ | ||
552 | static struct mv_xor_platform_shared_data dove_xor_shared_data = { | ||
553 | .dram = &dove_mbus_dram_info, | ||
554 | }; | ||
555 | |||
556 | /***************************************************************************** | ||
557 | * XOR 0 | ||
558 | ****************************************************************************/ | ||
559 | static u64 dove_xor0_dmamask = DMA_BIT_MASK(32); | ||
560 | |||
561 | static struct resource dove_xor0_shared_resources[] = { | ||
562 | { | ||
563 | .name = "xor 0 low", | ||
564 | .start = DOVE_XOR0_PHYS_BASE, | ||
565 | .end = DOVE_XOR0_PHYS_BASE + 0xff, | ||
566 | .flags = IORESOURCE_MEM, | ||
567 | }, { | ||
568 | .name = "xor 0 high", | ||
569 | .start = DOVE_XOR0_HIGH_PHYS_BASE, | ||
570 | .end = DOVE_XOR0_HIGH_PHYS_BASE + 0xff, | ||
571 | .flags = IORESOURCE_MEM, | ||
572 | }, | ||
573 | }; | ||
574 | |||
575 | static struct platform_device dove_xor0_shared = { | ||
576 | .name = MV_XOR_SHARED_NAME, | ||
577 | .id = 0, | ||
578 | .dev = { | ||
579 | .platform_data = &dove_xor_shared_data, | ||
580 | }, | ||
581 | .num_resources = ARRAY_SIZE(dove_xor0_shared_resources), | ||
582 | .resource = dove_xor0_shared_resources, | ||
583 | }; | ||
584 | |||
585 | static struct resource dove_xor00_resources[] = { | ||
586 | [0] = { | ||
587 | .start = IRQ_DOVE_XOR_00, | ||
588 | .end = IRQ_DOVE_XOR_00, | ||
589 | .flags = IORESOURCE_IRQ, | ||
590 | }, | ||
591 | }; | ||
592 | |||
593 | static struct mv_xor_platform_data dove_xor00_data = { | ||
594 | .shared = &dove_xor0_shared, | ||
595 | .hw_id = 0, | ||
596 | .pool_size = PAGE_SIZE, | ||
597 | }; | ||
598 | |||
599 | static struct platform_device dove_xor00_channel = { | ||
600 | .name = MV_XOR_NAME, | ||
601 | .id = 0, | ||
602 | .num_resources = ARRAY_SIZE(dove_xor00_resources), | ||
603 | .resource = dove_xor00_resources, | ||
604 | .dev = { | ||
605 | .dma_mask = &dove_xor0_dmamask, | ||
606 | .coherent_dma_mask = DMA_BIT_MASK(64), | ||
607 | .platform_data = (void *)&dove_xor00_data, | ||
608 | }, | ||
609 | }; | ||
610 | |||
611 | static struct resource dove_xor01_resources[] = { | ||
612 | [0] = { | ||
613 | .start = IRQ_DOVE_XOR_01, | ||
614 | .end = IRQ_DOVE_XOR_01, | ||
615 | .flags = IORESOURCE_IRQ, | ||
616 | }, | ||
617 | }; | ||
618 | |||
619 | static struct mv_xor_platform_data dove_xor01_data = { | ||
620 | .shared = &dove_xor0_shared, | ||
621 | .hw_id = 1, | ||
622 | .pool_size = PAGE_SIZE, | ||
623 | }; | ||
624 | |||
625 | static struct platform_device dove_xor01_channel = { | ||
626 | .name = MV_XOR_NAME, | ||
627 | .id = 1, | ||
628 | .num_resources = ARRAY_SIZE(dove_xor01_resources), | ||
629 | .resource = dove_xor01_resources, | ||
630 | .dev = { | ||
631 | .dma_mask = &dove_xor0_dmamask, | ||
632 | .coherent_dma_mask = DMA_BIT_MASK(64), | ||
633 | .platform_data = (void *)&dove_xor01_data, | ||
634 | }, | ||
635 | }; | ||
636 | |||
637 | void __init dove_xor0_init(void) | ||
638 | { | ||
639 | platform_device_register(&dove_xor0_shared); | ||
640 | |||
641 | /* | ||
642 | * two engines can't do memset simultaneously, this limitation | ||
643 | * satisfied by removing memset support from one of the engines. | ||
644 | */ | ||
645 | dma_cap_set(DMA_MEMCPY, dove_xor00_data.cap_mask); | ||
646 | dma_cap_set(DMA_XOR, dove_xor00_data.cap_mask); | ||
647 | platform_device_register(&dove_xor00_channel); | ||
648 | |||
649 | dma_cap_set(DMA_MEMCPY, dove_xor01_data.cap_mask); | ||
650 | dma_cap_set(DMA_MEMSET, dove_xor01_data.cap_mask); | ||
651 | dma_cap_set(DMA_XOR, dove_xor01_data.cap_mask); | ||
652 | platform_device_register(&dove_xor01_channel); | ||
653 | } | ||
654 | |||
655 | /***************************************************************************** | ||
656 | * XOR 1 | ||
657 | ****************************************************************************/ | ||
658 | static u64 dove_xor1_dmamask = DMA_BIT_MASK(32); | ||
659 | |||
660 | static struct resource dove_xor1_shared_resources[] = { | ||
661 | { | ||
662 | .name = "xor 0 low", | ||
663 | .start = DOVE_XOR1_PHYS_BASE, | ||
664 | .end = DOVE_XOR1_PHYS_BASE + 0xff, | ||
665 | .flags = IORESOURCE_MEM, | ||
666 | }, { | ||
667 | .name = "xor 0 high", | ||
668 | .start = DOVE_XOR1_HIGH_PHYS_BASE, | ||
669 | .end = DOVE_XOR1_HIGH_PHYS_BASE + 0xff, | ||
670 | .flags = IORESOURCE_MEM, | ||
671 | }, | ||
672 | }; | ||
673 | |||
674 | static struct platform_device dove_xor1_shared = { | ||
675 | .name = MV_XOR_SHARED_NAME, | ||
676 | .id = 1, | ||
677 | .dev = { | ||
678 | .platform_data = &dove_xor_shared_data, | ||
679 | }, | ||
680 | .num_resources = ARRAY_SIZE(dove_xor1_shared_resources), | ||
681 | .resource = dove_xor1_shared_resources, | ||
682 | }; | ||
683 | |||
684 | static struct resource dove_xor10_resources[] = { | ||
685 | [0] = { | ||
686 | .start = IRQ_DOVE_XOR_10, | ||
687 | .end = IRQ_DOVE_XOR_10, | ||
688 | .flags = IORESOURCE_IRQ, | ||
689 | }, | ||
690 | }; | ||
691 | |||
692 | static struct mv_xor_platform_data dove_xor10_data = { | ||
693 | .shared = &dove_xor1_shared, | ||
694 | .hw_id = 0, | ||
695 | .pool_size = PAGE_SIZE, | ||
696 | }; | ||
697 | |||
698 | static struct platform_device dove_xor10_channel = { | ||
699 | .name = MV_XOR_NAME, | ||
700 | .id = 2, | ||
701 | .num_resources = ARRAY_SIZE(dove_xor10_resources), | ||
702 | .resource = dove_xor10_resources, | ||
703 | .dev = { | ||
704 | .dma_mask = &dove_xor1_dmamask, | ||
705 | .coherent_dma_mask = DMA_BIT_MASK(64), | ||
706 | .platform_data = (void *)&dove_xor10_data, | ||
707 | }, | ||
708 | }; | ||
709 | |||
710 | static struct resource dove_xor11_resources[] = { | ||
711 | [0] = { | ||
712 | .start = IRQ_DOVE_XOR_11, | ||
713 | .end = IRQ_DOVE_XOR_11, | ||
714 | .flags = IORESOURCE_IRQ, | ||
715 | }, | ||
716 | }; | ||
717 | |||
718 | static struct mv_xor_platform_data dove_xor11_data = { | ||
719 | .shared = &dove_xor1_shared, | ||
720 | .hw_id = 1, | ||
721 | .pool_size = PAGE_SIZE, | ||
722 | }; | ||
723 | |||
724 | static struct platform_device dove_xor11_channel = { | ||
725 | .name = MV_XOR_NAME, | ||
726 | .id = 3, | ||
727 | .num_resources = ARRAY_SIZE(dove_xor11_resources), | ||
728 | .resource = dove_xor11_resources, | ||
729 | .dev = { | ||
730 | .dma_mask = &dove_xor1_dmamask, | ||
731 | .coherent_dma_mask = DMA_BIT_MASK(64), | ||
732 | .platform_data = (void *)&dove_xor11_data, | ||
733 | }, | ||
734 | }; | ||
735 | |||
736 | void __init dove_xor1_init(void) | ||
737 | { | ||
738 | platform_device_register(&dove_xor1_shared); | ||
739 | |||
740 | /* | ||
741 | * two engines can't do memset simultaneously, this limitation | ||
742 | * satisfied by removing memset support from one of the engines. | ||
743 | */ | ||
744 | dma_cap_set(DMA_MEMCPY, dove_xor10_data.cap_mask); | ||
745 | dma_cap_set(DMA_XOR, dove_xor10_data.cap_mask); | ||
746 | platform_device_register(&dove_xor10_channel); | ||
747 | |||
748 | dma_cap_set(DMA_MEMCPY, dove_xor11_data.cap_mask); | ||
749 | dma_cap_set(DMA_MEMSET, dove_xor11_data.cap_mask); | ||
750 | dma_cap_set(DMA_XOR, dove_xor11_data.cap_mask); | ||
751 | platform_device_register(&dove_xor11_channel); | ||
752 | } | ||
753 | |||
754 | void __init dove_init(void) | ||
755 | { | ||
756 | int tclk; | ||
757 | |||
758 | tclk = get_tclk(); | ||
759 | |||
760 | printk(KERN_INFO "Dove 88AP510 SoC, "); | ||
761 | printk(KERN_INFO "TCLK = %dMHz\n", (tclk + 499999) / 1000000); | ||
762 | |||
763 | dove_setup_cpu_mbus(); | ||
764 | |||
765 | dove_ge00_shared_data.t_clk = tclk; | ||
766 | dove_uart0_data[0].uartclk = tclk; | ||
767 | dove_uart1_data[0].uartclk = tclk; | ||
768 | dove_uart2_data[0].uartclk = tclk; | ||
769 | dove_uart3_data[0].uartclk = tclk; | ||
770 | dove_spi0_data.tclk = tclk; | ||
771 | dove_spi1_data.tclk = tclk; | ||
772 | |||
773 | /* internal devices that every board has */ | ||
774 | dove_rtc_init(); | ||
775 | dove_xor0_init(); | ||
776 | dove_xor1_init(); | ||
777 | } | ||
diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h new file mode 100644 index 000000000000..b29e8937de4f --- /dev/null +++ b/arch/arm/mach-dove/common.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/common.h | ||
3 | * | ||
4 | * Core functions for Marvell Dove 88AP510 System On Chip | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ARCH_DOVE_COMMON_H | ||
12 | #define __ARCH_DOVE_COMMON_H | ||
13 | |||
14 | struct mv643xx_eth_platform_data; | ||
15 | struct mv_sata_platform_data; | ||
16 | |||
17 | extern struct sys_timer dove_timer; | ||
18 | extern struct mbus_dram_target_info dove_mbus_dram_info; | ||
19 | |||
20 | /* | ||
21 | * Basic Dove init functions used early by machine-setup. | ||
22 | */ | ||
23 | void dove_map_io(void); | ||
24 | void dove_init(void); | ||
25 | void dove_init_irq(void); | ||
26 | void dove_setup_cpu_mbus(void); | ||
27 | void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data); | ||
28 | void dove_sata_init(struct mv_sata_platform_data *sata_data); | ||
29 | void dove_pcie_init(int init_port0, int init_port1); | ||
30 | void dove_ehci0_init(void); | ||
31 | void dove_ehci1_init(void); | ||
32 | void dove_uart0_init(void); | ||
33 | void dove_uart1_init(void); | ||
34 | void dove_uart2_init(void); | ||
35 | void dove_uart3_init(void); | ||
36 | void dove_spi0_init(void); | ||
37 | void dove_spi1_init(void); | ||
38 | void dove_i2c_init(void); | ||
39 | |||
40 | #endif | ||
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c new file mode 100644 index 000000000000..f2971b745224 --- /dev/null +++ b/arch/arm/mach-dove/dove-db-setup.c | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/dove-db-setup.c | ||
3 | * | ||
4 | * Marvell DB-MV88AP510-BP Development Board Setup | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/mtd/physmap.h> | ||
16 | #include <linux/mtd/nand.h> | ||
17 | #include <linux/timer.h> | ||
18 | #include <linux/ata_platform.h> | ||
19 | #include <linux/mv643xx_eth.h> | ||
20 | #include <linux/i2c.h> | ||
21 | #include <linux/pci.h> | ||
22 | #include <linux/spi/spi.h> | ||
23 | #include <linux/spi/orion_spi.h> | ||
24 | #include <linux/spi/flash.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <asm/mach-types.h> | ||
27 | #include <asm/mach/arch.h> | ||
28 | #include <mach/dove.h> | ||
29 | #include "common.h" | ||
30 | |||
31 | static struct mv643xx_eth_platform_data dove_db_ge00_data = { | ||
32 | .phy_addr = MV643XX_ETH_PHY_ADDR_DEFAULT, | ||
33 | }; | ||
34 | |||
35 | static struct mv_sata_platform_data dove_db_sata_data = { | ||
36 | .n_ports = 1, | ||
37 | }; | ||
38 | |||
39 | /***************************************************************************** | ||
40 | * SPI Devices: | ||
41 | * SPI0: 4M Flash ST-M25P32-VMF6P | ||
42 | ****************************************************************************/ | ||
43 | static const struct flash_platform_data dove_db_spi_flash_data = { | ||
44 | .type = "m25p64", | ||
45 | }; | ||
46 | |||
47 | static struct spi_board_info __initdata dove_db_spi_flash_info[] = { | ||
48 | { | ||
49 | .modalias = "m25p80", | ||
50 | .platform_data = &dove_db_spi_flash_data, | ||
51 | .irq = -1, | ||
52 | .max_speed_hz = 20000000, | ||
53 | .bus_num = 0, | ||
54 | .chip_select = 0, | ||
55 | }, | ||
56 | }; | ||
57 | |||
58 | /***************************************************************************** | ||
59 | * PCI | ||
60 | ****************************************************************************/ | ||
61 | static int __init dove_db_pci_init(void) | ||
62 | { | ||
63 | if (machine_is_dove_db()) | ||
64 | dove_pcie_init(1, 1); | ||
65 | |||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | subsys_initcall(dove_db_pci_init); | ||
70 | |||
71 | /***************************************************************************** | ||
72 | * Board Init | ||
73 | ****************************************************************************/ | ||
74 | static void __init dove_db_init(void) | ||
75 | { | ||
76 | /* | ||
77 | * Basic Dove setup. Needs to be called early. | ||
78 | */ | ||
79 | dove_init(); | ||
80 | |||
81 | dove_ge00_init(&dove_db_ge00_data); | ||
82 | dove_ehci0_init(); | ||
83 | dove_ehci1_init(); | ||
84 | dove_sata_init(&dove_db_sata_data); | ||
85 | dove_spi0_init(); | ||
86 | dove_spi1_init(); | ||
87 | dove_uart0_init(); | ||
88 | dove_uart1_init(); | ||
89 | dove_i2c_init(); | ||
90 | spi_register_board_info(dove_db_spi_flash_info, | ||
91 | ARRAY_SIZE(dove_db_spi_flash_info)); | ||
92 | } | ||
93 | |||
94 | MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board") | ||
95 | .phys_io = DOVE_SB_REGS_PHYS_BASE, | ||
96 | .io_pg_offst = ((DOVE_SB_REGS_VIRT_BASE) >> 18) & 0xfffc, | ||
97 | .boot_params = 0x00000100, | ||
98 | .init_machine = dove_db_init, | ||
99 | .map_io = dove_map_io, | ||
100 | .init_irq = dove_init_irq, | ||
101 | .timer = &dove_timer, | ||
102 | MACHINE_END | ||
diff --git a/arch/arm/mach-dove/include/mach/bridge-regs.h b/arch/arm/mach-dove/include/mach/bridge-regs.h new file mode 100644 index 000000000000..214a4c31f069 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/bridge-regs.h | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/bridge-regs.h | ||
3 | * | ||
4 | * Mbus-L to Mbus Bridge Registers | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_BRIDGE_REGS_H | ||
12 | #define __ASM_ARCH_BRIDGE_REGS_H | ||
13 | |||
14 | #include <mach/dove.h> | ||
15 | |||
16 | #define CPU_CONFIG (BRIDGE_VIRT_BASE | 0x0000) | ||
17 | |||
18 | #define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104) | ||
19 | #define CPU_CTRL_PCIE0_LINK 0x00000001 | ||
20 | #define CPU_RESET 0x00000002 | ||
21 | #define CPU_CTRL_PCIE1_LINK 0x00000008 | ||
22 | |||
23 | #define RSTOUTn_MASK (BRIDGE_VIRT_BASE | 0x0108) | ||
24 | #define SOFT_RESET_OUT_EN 0x00000004 | ||
25 | |||
26 | #define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c) | ||
27 | #define SOFT_RESET 0x00000001 | ||
28 | |||
29 | #define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110) | ||
30 | #define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114) | ||
31 | #define BRIDGE_INT_TIMER0 0x0002 | ||
32 | #define BRIDGE_INT_TIMER1 0x0004 | ||
33 | #define BRIDGE_INT_TIMER1_CLR (~0x0004) | ||
34 | |||
35 | #define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200) | ||
36 | #define IRQ_CAUSE_LOW_OFF 0x0000 | ||
37 | #define IRQ_MASK_LOW_OFF 0x0004 | ||
38 | #define FIQ_MASK_LOW_OFF 0x0008 | ||
39 | #define ENDPOINT_MASK_LOW_OFF 0x000c | ||
40 | #define IRQ_CAUSE_HIGH_OFF 0x0010 | ||
41 | #define IRQ_MASK_HIGH_OFF 0x0014 | ||
42 | #define FIQ_MASK_HIGH_OFF 0x0018 | ||
43 | #define ENDPOINT_MASK_HIGH_OFF 0x001c | ||
44 | #define PCIE_INTERRUPT_MASK_OFF 0x0020 | ||
45 | |||
46 | #define IRQ_MASK_LOW (IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF) | ||
47 | #define FIQ_MASK_LOW (IRQ_VIRT_BASE + FIQ_MASK_LOW_OFF) | ||
48 | #define ENDPOINT_MASK_LOW (IRQ_VIRT_BASE + ENDPOINT_MASK_LOW_OFF) | ||
49 | #define IRQ_MASK_HIGH (IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF) | ||
50 | #define FIQ_MASK_HIGH (IRQ_VIRT_BASE + FIQ_MASK_HIGH_OFF) | ||
51 | #define ENDPOINT_MASK_HIGH (IRQ_VIRT_BASE + ENDPOINT_MASK_HIGH_OFF) | ||
52 | #define PCIE_INTERRUPT_MASK (IRQ_VIRT_BASE + PCIE_INTERRUPT_MASK_OFF) | ||
53 | |||
54 | #define POWER_MANAGEMENT (BRIDGE_VIRT_BASE | 0x011c) | ||
55 | |||
56 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) | ||
57 | |||
58 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/debug-macro.S b/arch/arm/mach-dove/include/mach/debug-macro.S new file mode 100644 index 000000000000..9b89ec7d3040 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/debug-macro.S | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/debug-macro.S | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <mach/bridge-regs.h> | ||
10 | |||
11 | .macro addruart,rx | ||
12 | mrc p15, 0, \rx, c1, c0 | ||
13 | tst \rx, #1 @ MMU enabled? | ||
14 | ldreq \rx, =DOVE_SB_REGS_PHYS_BASE | ||
15 | ldrne \rx, =DOVE_SB_REGS_VIRT_BASE | ||
16 | orr \rx, \rx, #0x00012000 | ||
17 | .endm | ||
18 | |||
19 | #define UART_SHIFT 2 | ||
20 | #include <asm/hardware/debug-8250.S> | ||
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h new file mode 100644 index 000000000000..f6a08397f046 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/dove.h | |||
@@ -0,0 +1,180 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/dove.h | ||
3 | * | ||
4 | * Generic definitions for Marvell Dove 88AP510 SoC | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_DOVE_H | ||
12 | #define __ASM_ARCH_DOVE_H | ||
13 | |||
14 | #include <mach/vmalloc.h> | ||
15 | |||
16 | /* | ||
17 | * Marvell Dove address maps. | ||
18 | * | ||
19 | * phys virt size | ||
20 | * c8000000 fdb00000 1M Cryptographic SRAM | ||
21 | * e0000000 @runtime 128M PCIe-0 Memory space | ||
22 | * e8000000 @runtime 128M PCIe-1 Memory space | ||
23 | * f1000000 fde00000 8M on-chip south-bridge registers | ||
24 | * f1800000 fe600000 8M on-chip north-bridge registers | ||
25 | * f2000000 fee00000 1M PCIe-0 I/O space | ||
26 | * f2100000 fef00000 1M PCIe-1 I/O space | ||
27 | */ | ||
28 | |||
29 | #define DOVE_CESA_PHYS_BASE 0xc8000000 | ||
30 | #define DOVE_CESA_VIRT_BASE 0xfdb00000 | ||
31 | #define DOVE_CESA_SIZE SZ_1M | ||
32 | |||
33 | #define DOVE_PCIE0_MEM_PHYS_BASE 0xe0000000 | ||
34 | #define DOVE_PCIE0_MEM_SIZE SZ_128M | ||
35 | |||
36 | #define DOVE_PCIE1_MEM_PHYS_BASE 0xe8000000 | ||
37 | #define DOVE_PCIE1_MEM_SIZE SZ_128M | ||
38 | |||
39 | #define DOVE_BOOTROM_PHYS_BASE 0xf8000000 | ||
40 | #define DOVE_BOOTROM_SIZE SZ_128M | ||
41 | |||
42 | #define DOVE_SCRATCHPAD_PHYS_BASE 0xf0000000 | ||
43 | #define DOVE_SCRATCHPAD_VIRT_BASE 0xfdd00000 | ||
44 | #define DOVE_SCRATCHPAD_SIZE SZ_1M | ||
45 | |||
46 | #define DOVE_SB_REGS_PHYS_BASE 0xf1000000 | ||
47 | #define DOVE_SB_REGS_VIRT_BASE 0xfde00000 | ||
48 | #define DOVE_SB_REGS_SIZE SZ_8M | ||
49 | |||
50 | #define DOVE_NB_REGS_PHYS_BASE 0xf1800000 | ||
51 | #define DOVE_NB_REGS_VIRT_BASE 0xfe600000 | ||
52 | #define DOVE_NB_REGS_SIZE SZ_8M | ||
53 | |||
54 | #define DOVE_PCIE0_IO_PHYS_BASE 0xf2000000 | ||
55 | #define DOVE_PCIE0_IO_VIRT_BASE 0xfee00000 | ||
56 | #define DOVE_PCIE0_IO_BUS_BASE 0x00000000 | ||
57 | #define DOVE_PCIE0_IO_SIZE SZ_1M | ||
58 | |||
59 | #define DOVE_PCIE1_IO_PHYS_BASE 0xf2100000 | ||
60 | #define DOVE_PCIE1_IO_VIRT_BASE 0xfef00000 | ||
61 | #define DOVE_PCIE1_IO_BUS_BASE 0x00100000 | ||
62 | #define DOVE_PCIE1_IO_SIZE SZ_1M | ||
63 | |||
64 | /* | ||
65 | * Dove Core Registers Map | ||
66 | */ | ||
67 | |||
68 | /* SPI, I2C, UART */ | ||
69 | #define DOVE_I2C_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x11000) | ||
70 | #define DOVE_UART0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x12000) | ||
71 | #define DOVE_UART0_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x12000) | ||
72 | #define DOVE_UART1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x12100) | ||
73 | #define DOVE_UART1_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x12100) | ||
74 | #define DOVE_UART2_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x12200) | ||
75 | #define DOVE_UART2_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x12200) | ||
76 | #define DOVE_UART3_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x12300) | ||
77 | #define DOVE_UART3_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x12300) | ||
78 | #define DOVE_SPI0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x10600) | ||
79 | #define DOVE_SPI1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x14600) | ||
80 | |||
81 | /* North-South Bridge */ | ||
82 | #define BRIDGE_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x20000) | ||
83 | |||
84 | /* Cryptographic Engine */ | ||
85 | #define DOVE_CRYPT_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x30000) | ||
86 | |||
87 | /* PCIe 0 */ | ||
88 | #define DOVE_PCIE0_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x40000) | ||
89 | |||
90 | /* USB */ | ||
91 | #define DOVE_USB0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x50000) | ||
92 | #define DOVE_USB1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x51000) | ||
93 | |||
94 | /* XOR 0 Engine */ | ||
95 | #define DOVE_XOR0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x60800) | ||
96 | #define DOVE_XOR0_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x60800) | ||
97 | #define DOVE_XOR0_HIGH_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x60A00) | ||
98 | #define DOVE_XOR0_HIGH_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x60A00) | ||
99 | |||
100 | /* XOR 1 Engine */ | ||
101 | #define DOVE_XOR1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x60900) | ||
102 | #define DOVE_XOR1_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x60900) | ||
103 | #define DOVE_XOR1_HIGH_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x60B00) | ||
104 | #define DOVE_XOR1_HIGH_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x60B00) | ||
105 | |||
106 | /* Gigabit Ethernet */ | ||
107 | #define DOVE_GE00_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x70000) | ||
108 | |||
109 | /* PCIe 1 */ | ||
110 | #define DOVE_PCIE1_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x80000) | ||
111 | |||
112 | /* CAFE */ | ||
113 | #define DOVE_SDIO0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x92000) | ||
114 | #define DOVE_SDIO1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x90000) | ||
115 | #define DOVE_CAM_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x94000) | ||
116 | #define DOVE_CAFE_WIN_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x98000) | ||
117 | |||
118 | /* SATA */ | ||
119 | #define DOVE_SATA_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xa0000) | ||
120 | |||
121 | /* I2S/SPDIF */ | ||
122 | #define DOVE_AUD0_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xb0000) | ||
123 | #define DOVE_AUD1_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xb4000) | ||
124 | |||
125 | /* NAND Flash Controller */ | ||
126 | #define DOVE_NFC_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xc0000) | ||
127 | |||
128 | /* MPP, GPIO, Reset Sampling */ | ||
129 | #define DOVE_MPP_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0200) | ||
130 | #define DOVE_PMU_MPP_GENERAL_CTRL (DOVE_MPP_VIRT_BASE + 0x10) | ||
131 | #define DOVE_RESET_SAMPLE_LO (DOVE_MPP_VIRT_BASE | 0x014) | ||
132 | #define DOVE_RESET_SAMPLE_HI (DOVE_MPP_VIRT_BASE | 0x018) | ||
133 | #define DOVE_GPIO_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0400) | ||
134 | #define DOVE_MPP_GENERAL_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe803c) | ||
135 | #define DOVE_AU1_SPDIFO_GPIO_EN (1 << 1) | ||
136 | #define DOVE_NAND_GPIO_EN (1 << 0) | ||
137 | #define DOVE_MPP_CTRL4_VIRT_BASE (DOVE_GPIO_VIRT_BASE + 0x40) | ||
138 | |||
139 | |||
140 | /* Power Management */ | ||
141 | #define DOVE_PMU_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0000) | ||
142 | |||
143 | /* Real Time Clock */ | ||
144 | #define DOVE_RTC_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xd8500) | ||
145 | |||
146 | /* AC97 */ | ||
147 | #define DOVE_AC97_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xe0000) | ||
148 | #define DOVE_AC97_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe0000) | ||
149 | |||
150 | /* Peripheral DMA */ | ||
151 | #define DOVE_PDMA_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xe4000) | ||
152 | #define DOVE_PDMA_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe4000) | ||
153 | |||
154 | #define DOVE_GLOBAL_CONFIG_1 (DOVE_SB_REGS_VIRT_BASE | 0xe802C) | ||
155 | #define DOVE_TWSI_ENABLE_OPTION1 (1 << 7) | ||
156 | #define DOVE_GLOBAL_CONFIG_2 (DOVE_SB_REGS_VIRT_BASE | 0xe8030) | ||
157 | #define DOVE_TWSI_ENABLE_OPTION2 (1 << 20) | ||
158 | #define DOVE_TWSI_ENABLE_OPTION3 (1 << 21) | ||
159 | #define DOVE_TWSI_OPTION3_GPIO (1 << 22) | ||
160 | #define DOVE_SSP_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0xec000) | ||
161 | #define DOVE_SSP_CTRL_STATUS_1 (DOVE_SB_REGS_VIRT_BASE | 0xe8034) | ||
162 | #define DOVE_SSP_ON_AU1 (1 << 0) | ||
163 | #define DOVE_SSP_CLOCK_ENABLE (1 << 1) | ||
164 | #define DOVE_SSP_BPB_CLOCK_SRC_SSP (1 << 11) | ||
165 | /* Memory Controller */ | ||
166 | #define DOVE_MC_VIRT_BASE (DOVE_NB_REGS_VIRT_BASE | 0x00000) | ||
167 | |||
168 | /* LCD Controller */ | ||
169 | #define DOVE_LCD_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x10000) | ||
170 | #define DOVE_LCD1_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x20000) | ||
171 | #define DOVE_LCD2_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x10000) | ||
172 | #define DOVE_LCD_DCON_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x30000) | ||
173 | |||
174 | /* Graphic Engine */ | ||
175 | #define DOVE_GPU_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x40000) | ||
176 | |||
177 | /* Video Engine */ | ||
178 | #define DOVE_VPU_PHYS_BASE (DOVE_NB_REGS_PHYS_BASE | 0x400000) | ||
179 | |||
180 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/entry-macro.S b/arch/arm/mach-dove/include/mach/entry-macro.S new file mode 100644 index 000000000000..e84c78c2a8b7 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/entry-macro.S | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/entry-macro.S | ||
3 | * | ||
4 | * Low-level IRQ helper macros for Marvell Dove platforms | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <mach/bridge-regs.h> | ||
12 | |||
13 | .macro disable_fiq | ||
14 | .endm | ||
15 | |||
16 | .macro arch_ret_to_user, tmp1, tmp2 | ||
17 | .endm | ||
18 | |||
19 | .macro get_irqnr_preamble, base, tmp | ||
20 | ldr \base, =IRQ_VIRT_BASE | ||
21 | .endm | ||
22 | |||
23 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
24 | @ check low interrupts | ||
25 | ldr \irqstat, [\base, #IRQ_CAUSE_LOW_OFF] | ||
26 | ldr \tmp, [\base, #IRQ_MASK_LOW_OFF] | ||
27 | mov \irqnr, #31 | ||
28 | ands \irqstat, \irqstat, \tmp | ||
29 | |||
30 | @ if no low interrupts set, check high interrupts | ||
31 | ldreq \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF] | ||
32 | ldreq \tmp, [\base, #IRQ_MASK_HIGH_OFF] | ||
33 | moveq \irqnr, #63 | ||
34 | andeqs \irqstat, \irqstat, \tmp | ||
35 | |||
36 | @ find first active interrupt source | ||
37 | clzne \irqstat, \irqstat | ||
38 | subne \irqnr, \irqnr, \irqstat | ||
39 | .endm | ||
diff --git a/arch/arm/mach-dove/include/mach/gpio.h b/arch/arm/mach-dove/include/mach/gpio.h new file mode 100644 index 000000000000..0ee70ff39e11 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/gpio.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/gpio.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_GPIO_H | ||
10 | #define __ASM_ARCH_GPIO_H | ||
11 | |||
12 | #include <asm/errno.h> | ||
13 | #include <mach/irqs.h> | ||
14 | #include <plat/gpio.h> | ||
15 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
16 | |||
17 | #define GPIO_MAX 64 | ||
18 | |||
19 | #define GPIO_BASE_LO (DOVE_GPIO_VIRT_BASE + 0x00) | ||
20 | #define GPIO_BASE_HI (DOVE_GPIO_VIRT_BASE + 0x20) | ||
21 | |||
22 | #define GPIO_BASE(pin) ((pin < 32) ? GPIO_BASE_LO : GPIO_BASE_HI) | ||
23 | |||
24 | #define GPIO_OUT(pin) (GPIO_BASE(pin) + 0x00) | ||
25 | #define GPIO_IO_CONF(pin) (GPIO_BASE(pin) + 0x04) | ||
26 | #define GPIO_BLINK_EN(pin) (GPIO_BASE(pin) + 0x08) | ||
27 | #define GPIO_IN_POL(pin) (GPIO_BASE(pin) + 0x0c) | ||
28 | #define GPIO_DATA_IN(pin) (GPIO_BASE(pin) + 0x10) | ||
29 | #define GPIO_EDGE_CAUSE(pin) (GPIO_BASE(pin) + 0x14) | ||
30 | #define GPIO_EDGE_MASK(pin) (GPIO_BASE(pin) + 0x18) | ||
31 | #define GPIO_LEVEL_MASK(pin) (GPIO_BASE(pin) + 0x1c) | ||
32 | |||
33 | static inline int gpio_to_irq(int pin) | ||
34 | { | ||
35 | if (pin < NR_GPIO_IRQS) | ||
36 | return pin + IRQ_DOVE_GPIO_START; | ||
37 | |||
38 | return -EINVAL; | ||
39 | } | ||
40 | |||
41 | static inline int irq_to_gpio(int irq) | ||
42 | { | ||
43 | if (IRQ_DOVE_GPIO_START < irq && irq < NR_IRQS) | ||
44 | return irq - IRQ_DOVE_GPIO_START; | ||
45 | |||
46 | return -EINVAL; | ||
47 | } | ||
48 | |||
49 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/hardware.h b/arch/arm/mach-dove/include/mach/hardware.h new file mode 100644 index 000000000000..32b0826e7873 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/hardware.h | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/hardware.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_HARDWARE_H | ||
10 | #define __ASM_ARCH_HARDWARE_H | ||
11 | |||
12 | #include "dove.h" | ||
13 | |||
14 | #define pcibios_assign_all_busses() 1 | ||
15 | |||
16 | #define PCIBIOS_MIN_IO 0x1000 | ||
17 | #define PCIBIOS_MIN_MEM 0x01000000 | ||
18 | #define PCIMEM_BASE DOVE_PCIE0_MEM_PHYS_BASE | ||
19 | |||
20 | |||
21 | /* Macros below are required for compatibility with PXA AC'97 driver. */ | ||
22 | #define __REG(x) (*((volatile u32 *)((x) - DOVE_SB_REGS_PHYS_BASE + \ | ||
23 | DOVE_SB_REGS_VIRT_BASE))) | ||
24 | #define __PREG(x) (((u32)&(x)) - DOVE_SB_REGS_VIRT_BASE + \ | ||
25 | DOVE_SB_REGS_PHYS_BASE) | ||
26 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/io.h b/arch/arm/mach-dove/include/mach/io.h new file mode 100644 index 000000000000..3b3e4721ce2e --- /dev/null +++ b/arch/arm/mach-dove/include/mach/io.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/io.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_IO_H | ||
10 | #define __ASM_ARCH_IO_H | ||
11 | |||
12 | #include "dove.h" | ||
13 | |||
14 | #define IO_SPACE_LIMIT 0xffffffff | ||
15 | |||
16 | #define __io(a) ((void __iomem *)(((a) - DOVE_PCIE0_IO_PHYS_BASE) +\ | ||
17 | DOVE_PCIE0_IO_VIRT_BASE)) | ||
18 | #define __mem_pci(a) (a) | ||
19 | |||
20 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/irqs.h b/arch/arm/mach-dove/include/mach/irqs.h new file mode 100644 index 000000000000..46681466f92b --- /dev/null +++ b/arch/arm/mach-dove/include/mach/irqs.h | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/irqs.h | ||
3 | * | ||
4 | * IRQ definitions for Marvell Dove 88AP510 SoC | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_IRQS_H | ||
12 | #define __ASM_ARCH_IRQS_H | ||
13 | |||
14 | /* | ||
15 | * Dove Low Interrupt Controller | ||
16 | */ | ||
17 | #define IRQ_DOVE_BRIDGE 0 | ||
18 | #define IRQ_DOVE_H2C 1 | ||
19 | #define IRQ_DOVE_C2H 2 | ||
20 | #define IRQ_DOVE_NAND 3 | ||
21 | #define IRQ_DOVE_PDMA 4 | ||
22 | #define IRQ_DOVE_SPI1 5 | ||
23 | #define IRQ_DOVE_SPI0 6 | ||
24 | #define IRQ_DOVE_UART_0 7 | ||
25 | #define IRQ_DOVE_UART_1 8 | ||
26 | #define IRQ_DOVE_UART_2 9 | ||
27 | #define IRQ_DOVE_UART_3 10 | ||
28 | #define IRQ_DOVE_I2C 11 | ||
29 | #define IRQ_DOVE_GPIO_0_7 12 | ||
30 | #define IRQ_DOVE_GPIO_8_15 13 | ||
31 | #define IRQ_DOVE_GPIO_16_23 14 | ||
32 | #define IRQ_DOVE_PCIE0_ERR 15 | ||
33 | #define IRQ_DOVE_PCIE0 16 | ||
34 | #define IRQ_DOVE_PCIE1_ERR 17 | ||
35 | #define IRQ_DOVE_PCIE1 18 | ||
36 | #define IRQ_DOVE_I2S0 19 | ||
37 | #define IRQ_DOVE_I2S0_ERR 20 | ||
38 | #define IRQ_DOVE_I2S1 21 | ||
39 | #define IRQ_DOVE_I2S1_ERR 22 | ||
40 | #define IRQ_DOVE_USB_ERR 23 | ||
41 | #define IRQ_DOVE_USB0 24 | ||
42 | #define IRQ_DOVE_USB1 25 | ||
43 | #define IRQ_DOVE_GE00_RX 26 | ||
44 | #define IRQ_DOVE_GE00_TX 27 | ||
45 | #define IRQ_DOVE_GE00_MISC 28 | ||
46 | #define IRQ_DOVE_GE00_SUM 29 | ||
47 | #define IRQ_DOVE_GE00_ERR 30 | ||
48 | #define IRQ_DOVE_CRYPTO 31 | ||
49 | |||
50 | /* | ||
51 | * Dove High Interrupt Controller | ||
52 | */ | ||
53 | #define IRQ_DOVE_AC97 32 | ||
54 | #define IRQ_DOVE_PMU 33 | ||
55 | #define IRQ_DOVE_CAM 34 | ||
56 | #define IRQ_DOVE_SDIO0 35 | ||
57 | #define IRQ_DOVE_SDIO1 36 | ||
58 | #define IRQ_DOVE_SDIO0_WAKEUP 37 | ||
59 | #define IRQ_DOVE_SDIO1_WAKEUP 38 | ||
60 | #define IRQ_DOVE_XOR_00 39 | ||
61 | #define IRQ_DOVE_XOR_01 40 | ||
62 | #define IRQ_DOVE_XOR0_ERR 41 | ||
63 | #define IRQ_DOVE_XOR_10 42 | ||
64 | #define IRQ_DOVE_XOR_11 43 | ||
65 | #define IRQ_DOVE_XOR1_ERR 44 | ||
66 | #define IRQ_DOVE_LCD_DCON 45 | ||
67 | #define IRQ_DOVE_LCD1 46 | ||
68 | #define IRQ_DOVE_LCD0 47 | ||
69 | #define IRQ_DOVE_GPU 48 | ||
70 | #define IRQ_DOVE_PERFORM_MNTR 49 | ||
71 | #define IRQ_DOVE_VPRO_DMA1 51 | ||
72 | #define IRQ_DOVE_SSP_TIMER 54 | ||
73 | #define IRQ_DOVE_SSP 55 | ||
74 | #define IRQ_DOVE_MC_L2_ERR 56 | ||
75 | #define IRQ_DOVE_CRYPTO_ERR 59 | ||
76 | #define IRQ_DOVE_GPIO_24_31 60 | ||
77 | #define IRQ_DOVE_HIGH_GPIO 61 | ||
78 | #define IRQ_DOVE_SATA 62 | ||
79 | |||
80 | /* | ||
81 | * DOVE General Purpose Pins | ||
82 | */ | ||
83 | #define IRQ_DOVE_GPIO_START 64 | ||
84 | #define NR_GPIO_IRQS 64 | ||
85 | |||
86 | /* | ||
87 | * PMU interrupts | ||
88 | */ | ||
89 | #define IRQ_DOVE_PMU_START (IRQ_DOVE_GPIO_START + NR_GPIO_IRQS) | ||
90 | #define NR_PMU_IRQS 7 | ||
91 | #define IRQ_DOVE_RTC (IRQ_DOVE_PMU_START + 5) | ||
92 | |||
93 | #define NR_IRQS (IRQ_DOVE_PMU_START + NR_PMU_IRQS) | ||
94 | |||
95 | /* Required for compatability with PXA AC97 driver. */ | ||
96 | #define IRQ_AC97 IRQ_DOVE_AC97 | ||
97 | /* Required for compatability with PXA DMA driver. */ | ||
98 | #define IRQ_DMA IRQ_DOVE_PDMA | ||
99 | /* Required for compatability with PXA NAND driver */ | ||
100 | #define IRQ_NAND IRQ_DOVE_NAND | ||
101 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/memory.h b/arch/arm/mach-dove/include/mach/memory.h new file mode 100644 index 000000000000..d66872074946 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/memory.h | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/memory.h | ||
3 | */ | ||
4 | |||
5 | #ifndef __ASM_ARCH_MEMORY_H | ||
6 | #define __ASM_ARCH_MEMORY_H | ||
7 | |||
8 | #define PHYS_OFFSET UL(0x00000000) | ||
9 | |||
10 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/pm.h b/arch/arm/mach-dove/include/mach/pm.h new file mode 100644 index 000000000000..3ad9f946a9e8 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/pm.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/pm.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_PM_H | ||
10 | #define __ASM_ARCH_PM_H | ||
11 | |||
12 | #include <asm/errno.h> | ||
13 | #include <mach/irqs.h> | ||
14 | |||
15 | #define CLOCK_GATING_CONTROL (DOVE_PMU_VIRT_BASE + 0x38) | ||
16 | #define CLOCK_GATING_USB0_MASK (1 << 0) | ||
17 | #define CLOCK_GATING_USB1_MASK (1 << 1) | ||
18 | #define CLOCK_GATING_GBE_MASK (1 << 2) | ||
19 | #define CLOCK_GATING_SATA_MASK (1 << 3) | ||
20 | #define CLOCK_GATING_PCIE0_MASK (1 << 4) | ||
21 | #define CLOCK_GATING_PCIE1_MASK (1 << 5) | ||
22 | #define CLOCK_GATING_SDIO0_MASK (1 << 8) | ||
23 | #define CLOCK_GATING_SDIO1_MASK (1 << 9) | ||
24 | #define CLOCK_GATING_NAND_MASK (1 << 10) | ||
25 | #define CLOCK_GATING_CAMERA_MASK (1 << 11) | ||
26 | #define CLOCK_GATING_I2S0_MASK (1 << 12) | ||
27 | #define CLOCK_GATING_I2S1_MASK (1 << 13) | ||
28 | #define CLOCK_GATING_CRYPTO_MASK (1 << 15) | ||
29 | #define CLOCK_GATING_AC97_MASK (1 << 21) | ||
30 | #define CLOCK_GATING_PDMA_MASK (1 << 22) | ||
31 | #define CLOCK_GATING_XOR0_MASK (1 << 23) | ||
32 | #define CLOCK_GATING_XOR1_MASK (1 << 24) | ||
33 | #define CLOCK_GATING_GIGA_PHY_MASK (1 << 30) | ||
34 | |||
35 | #define PMU_INTERRUPT_CAUSE (DOVE_PMU_VIRT_BASE + 0x50) | ||
36 | #define PMU_INTERRUPT_MASK (DOVE_PMU_VIRT_BASE + 0x54) | ||
37 | |||
38 | static inline int pmu_to_irq(int pin) | ||
39 | { | ||
40 | if (pin < NR_PMU_IRQS) | ||
41 | return pin + IRQ_DOVE_PMU_START; | ||
42 | |||
43 | return -EINVAL; | ||
44 | } | ||
45 | |||
46 | static inline int irq_to_pmu(int irq) | ||
47 | { | ||
48 | if (IRQ_DOVE_PMU_START < irq && irq < NR_IRQS) | ||
49 | return irq - IRQ_DOVE_PMU_START; | ||
50 | |||
51 | return -EINVAL; | ||
52 | } | ||
53 | |||
54 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/system.h b/arch/arm/mach-dove/include/mach/system.h new file mode 100644 index 000000000000..356afda56853 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/system.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/system.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_SYSTEM_H | ||
10 | #define __ASM_ARCH_SYSTEM_H | ||
11 | |||
12 | #include <mach/bridge-regs.h> | ||
13 | |||
14 | static inline void arch_idle(void) | ||
15 | { | ||
16 | cpu_do_idle(); | ||
17 | } | ||
18 | |||
19 | static inline void arch_reset(char mode, const char *cmd) | ||
20 | { | ||
21 | /* | ||
22 | * Enable soft reset to assert RSTOUTn. | ||
23 | */ | ||
24 | writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK); | ||
25 | |||
26 | /* | ||
27 | * Assert soft reset. | ||
28 | */ | ||
29 | writel(SOFT_RESET, SYSTEM_SOFT_RESET); | ||
30 | |||
31 | while (1) | ||
32 | ; | ||
33 | } | ||
34 | |||
35 | |||
36 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/timex.h b/arch/arm/mach-dove/include/mach/timex.h new file mode 100644 index 000000000000..251d538541db --- /dev/null +++ b/arch/arm/mach-dove/include/mach/timex.h | |||
@@ -0,0 +1,9 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/timex.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #define CLOCK_TICK_RATE (100 * HZ) | ||
diff --git a/arch/arm/mach-dove/include/mach/uncompress.h b/arch/arm/mach-dove/include/mach/uncompress.h new file mode 100644 index 000000000000..2c5cdd7a3eed --- /dev/null +++ b/arch/arm/mach-dove/include/mach/uncompress.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/uncompress.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #include <mach/dove.h> | ||
10 | |||
11 | #define UART_THR ((volatile unsigned char *)(DOVE_UART0_PHYS_BASE + 0x0)) | ||
12 | #define UART_LSR ((volatile unsigned char *)(DOVE_UART0_PHYS_BASE + 0x14)) | ||
13 | |||
14 | #define LSR_THRE 0x20 | ||
15 | |||
16 | static void putc(const char c) | ||
17 | { | ||
18 | int i; | ||
19 | |||
20 | for (i = 0; i < 0x1000; i++) { | ||
21 | /* Transmit fifo not full? */ | ||
22 | if (*UART_LSR & LSR_THRE) | ||
23 | break; | ||
24 | } | ||
25 | |||
26 | *UART_THR = c; | ||
27 | } | ||
28 | |||
29 | static void flush(void) | ||
30 | { | ||
31 | } | ||
32 | |||
33 | /* | ||
34 | * nothing to do | ||
35 | */ | ||
36 | #define arch_decomp_setup() | ||
37 | #define arch_decomp_wdog() | ||
diff --git a/arch/arm/mach-dove/include/mach/vmalloc.h b/arch/arm/mach-dove/include/mach/vmalloc.h new file mode 100644 index 000000000000..8b2c974755c6 --- /dev/null +++ b/arch/arm/mach-dove/include/mach/vmalloc.h | |||
@@ -0,0 +1,5 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/include/mach/vmalloc.h | ||
3 | */ | ||
4 | |||
5 | #define VMALLOC_END 0xfd800000 | ||
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c new file mode 100644 index 000000000000..61bfcb3b08c2 --- /dev/null +++ b/arch/arm/mach-dove/irq.c | |||
@@ -0,0 +1,133 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/irq.c | ||
3 | * | ||
4 | * Dove IRQ handling. | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/irq.h> | ||
14 | #include <linux/gpio.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <asm/mach/arch.h> | ||
17 | #include <plat/irq.h> | ||
18 | #include <asm/mach/irq.h> | ||
19 | #include <mach/pm.h> | ||
20 | #include <mach/bridge-regs.h> | ||
21 | #include "common.h" | ||
22 | |||
23 | static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | ||
24 | { | ||
25 | int irqoff; | ||
26 | BUG_ON(irq < IRQ_DOVE_GPIO_0_7 || irq > IRQ_DOVE_HIGH_GPIO); | ||
27 | |||
28 | irqoff = irq <= IRQ_DOVE_GPIO_16_23 ? irq - IRQ_DOVE_GPIO_0_7 : | ||
29 | 3 + irq - IRQ_DOVE_GPIO_24_31; | ||
30 | |||
31 | orion_gpio_irq_handler(irqoff << 3); | ||
32 | if (irq == IRQ_DOVE_HIGH_GPIO) { | ||
33 | orion_gpio_irq_handler(40); | ||
34 | orion_gpio_irq_handler(48); | ||
35 | orion_gpio_irq_handler(56); | ||
36 | } | ||
37 | } | ||
38 | |||
39 | static void pmu_irq_mask(unsigned int irq) | ||
40 | { | ||
41 | int pin = irq_to_pmu(irq); | ||
42 | u32 u; | ||
43 | |||
44 | u = readl(PMU_INTERRUPT_MASK); | ||
45 | u &= ~(1 << (pin & 31)); | ||
46 | writel(u, PMU_INTERRUPT_MASK); | ||
47 | } | ||
48 | |||
49 | static void pmu_irq_unmask(unsigned int irq) | ||
50 | { | ||
51 | int pin = irq_to_pmu(irq); | ||
52 | u32 u; | ||
53 | |||
54 | u = readl(PMU_INTERRUPT_MASK); | ||
55 | u |= 1 << (pin & 31); | ||
56 | writel(u, PMU_INTERRUPT_MASK); | ||
57 | } | ||
58 | |||
59 | static void pmu_irq_ack(unsigned int irq) | ||
60 | { | ||
61 | int pin = irq_to_pmu(irq); | ||
62 | u32 u; | ||
63 | |||
64 | u = ~(1 << (pin & 31)); | ||
65 | writel(u, PMU_INTERRUPT_CAUSE); | ||
66 | } | ||
67 | |||
68 | static struct irq_chip pmu_irq_chip = { | ||
69 | .name = "pmu_irq", | ||
70 | .mask = pmu_irq_mask, | ||
71 | .unmask = pmu_irq_unmask, | ||
72 | .ack = pmu_irq_ack, | ||
73 | }; | ||
74 | |||
75 | static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc) | ||
76 | { | ||
77 | unsigned long cause = readl(PMU_INTERRUPT_CAUSE); | ||
78 | |||
79 | cause &= readl(PMU_INTERRUPT_MASK); | ||
80 | if (cause == 0) { | ||
81 | do_bad_IRQ(irq, desc); | ||
82 | return; | ||
83 | } | ||
84 | |||
85 | for (irq = 0; irq < NR_PMU_IRQS; irq++) { | ||
86 | if (!(cause & (1 << irq))) | ||
87 | continue; | ||
88 | irq = pmu_to_irq(irq); | ||
89 | desc = irq_desc + irq; | ||
90 | desc_handle_irq(irq, desc); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | void __init dove_init_irq(void) | ||
95 | { | ||
96 | int i; | ||
97 | |||
98 | orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)); | ||
99 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); | ||
100 | |||
101 | /* | ||
102 | * Mask and clear GPIO IRQ interrupts. | ||
103 | */ | ||
104 | writel(0, GPIO_LEVEL_MASK(0)); | ||
105 | writel(0, GPIO_EDGE_MASK(0)); | ||
106 | writel(0, GPIO_EDGE_CAUSE(0)); | ||
107 | |||
108 | /* | ||
109 | * Mask and clear PMU interrupts | ||
110 | */ | ||
111 | writel(0, PMU_INTERRUPT_MASK); | ||
112 | writel(0, PMU_INTERRUPT_CAUSE); | ||
113 | |||
114 | for (i = IRQ_DOVE_GPIO_START; i < IRQ_DOVE_PMU_START; i++) { | ||
115 | set_irq_chip(i, &orion_gpio_irq_chip); | ||
116 | set_irq_handler(i, handle_level_irq); | ||
117 | irq_desc[i].status |= IRQ_LEVEL; | ||
118 | set_irq_flags(i, IRQF_VALID); | ||
119 | } | ||
120 | set_irq_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler); | ||
121 | set_irq_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler); | ||
122 | set_irq_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler); | ||
123 | set_irq_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler); | ||
124 | set_irq_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler); | ||
125 | |||
126 | for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) { | ||
127 | set_irq_chip(i, &pmu_irq_chip); | ||
128 | set_irq_handler(i, handle_level_irq); | ||
129 | irq_desc[i].status |= IRQ_LEVEL; | ||
130 | set_irq_flags(i, IRQF_VALID); | ||
131 | } | ||
132 | set_irq_chained_handler(IRQ_DOVE_PMU, pmu_irq_handler); | ||
133 | } | ||
diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c new file mode 100644 index 000000000000..502d1ca2f4b7 --- /dev/null +++ b/arch/arm/mach-dove/pcie.c | |||
@@ -0,0 +1,238 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-dove/pcie.c | ||
3 | * | ||
4 | * PCIe functions for Marvell Dove 88AP510 SoC | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/pci.h> | ||
13 | #include <linux/mbus.h> | ||
14 | #include <asm/mach/pci.h> | ||
15 | #include <asm/mach/arch.h> | ||
16 | #include <asm/setup.h> | ||
17 | #include <asm/delay.h> | ||
18 | #include <plat/pcie.h> | ||
19 | #include <mach/irqs.h> | ||
20 | #include <mach/bridge-regs.h> | ||
21 | #include "common.h" | ||
22 | |||
23 | struct pcie_port { | ||
24 | u8 index; | ||
25 | u8 root_bus_nr; | ||
26 | void __iomem *base; | ||
27 | spinlock_t conf_lock; | ||
28 | char io_space_name[16]; | ||
29 | char mem_space_name[16]; | ||
30 | struct resource res[2]; | ||
31 | }; | ||
32 | |||
33 | static struct pcie_port pcie_port[2]; | ||
34 | static int num_pcie_ports; | ||
35 | |||
36 | |||
37 | static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys) | ||
38 | { | ||
39 | struct pcie_port *pp; | ||
40 | |||
41 | if (nr >= num_pcie_ports) | ||
42 | return 0; | ||
43 | |||
44 | pp = &pcie_port[nr]; | ||
45 | pp->root_bus_nr = sys->busnr; | ||
46 | |||
47 | /* | ||
48 | * Generic PCIe unit setup. | ||
49 | */ | ||
50 | orion_pcie_set_local_bus_nr(pp->base, sys->busnr); | ||
51 | |||
52 | orion_pcie_setup(pp->base, &dove_mbus_dram_info); | ||
53 | |||
54 | /* | ||
55 | * IORESOURCE_IO | ||
56 | */ | ||
57 | snprintf(pp->io_space_name, sizeof(pp->io_space_name), | ||
58 | "PCIe %d I/O", pp->index); | ||
59 | pp->io_space_name[sizeof(pp->io_space_name) - 1] = 0; | ||
60 | pp->res[0].name = pp->io_space_name; | ||
61 | if (pp->index == 0) { | ||
62 | pp->res[0].start = DOVE_PCIE0_IO_PHYS_BASE; | ||
63 | pp->res[0].end = pp->res[0].start + DOVE_PCIE0_IO_SIZE - 1; | ||
64 | } else { | ||
65 | pp->res[0].start = DOVE_PCIE1_IO_PHYS_BASE; | ||
66 | pp->res[0].end = pp->res[0].start + DOVE_PCIE1_IO_SIZE - 1; | ||
67 | } | ||
68 | pp->res[0].flags = IORESOURCE_IO; | ||
69 | if (request_resource(&ioport_resource, &pp->res[0])) | ||
70 | panic("Request PCIe IO resource failed\n"); | ||
71 | sys->resource[0] = &pp->res[0]; | ||
72 | |||
73 | /* | ||
74 | * IORESOURCE_MEM | ||
75 | */ | ||
76 | snprintf(pp->mem_space_name, sizeof(pp->mem_space_name), | ||
77 | "PCIe %d MEM", pp->index); | ||
78 | pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0; | ||
79 | pp->res[1].name = pp->mem_space_name; | ||
80 | if (pp->index == 0) { | ||
81 | pp->res[1].start = DOVE_PCIE0_MEM_PHYS_BASE; | ||
82 | pp->res[1].end = pp->res[1].start + DOVE_PCIE0_MEM_SIZE - 1; | ||
83 | } else { | ||
84 | pp->res[1].start = DOVE_PCIE1_MEM_PHYS_BASE; | ||
85 | pp->res[1].end = pp->res[1].start + DOVE_PCIE1_MEM_SIZE - 1; | ||
86 | } | ||
87 | pp->res[1].flags = IORESOURCE_MEM; | ||
88 | if (request_resource(&iomem_resource, &pp->res[1])) | ||
89 | panic("Request PCIe Memory resource failed\n"); | ||
90 | sys->resource[1] = &pp->res[1]; | ||
91 | |||
92 | sys->resource[2] = NULL; | ||
93 | |||
94 | return 1; | ||
95 | } | ||
96 | |||
97 | static struct pcie_port *bus_to_port(int bus) | ||
98 | { | ||
99 | int i; | ||
100 | |||
101 | for (i = num_pcie_ports - 1; i >= 0; i--) { | ||
102 | int rbus = pcie_port[i].root_bus_nr; | ||
103 | if (rbus != -1 && rbus <= bus) | ||
104 | break; | ||
105 | } | ||
106 | |||
107 | return i >= 0 ? pcie_port + i : NULL; | ||
108 | } | ||
109 | |||
110 | static int pcie_valid_config(struct pcie_port *pp, int bus, int dev) | ||
111 | { | ||
112 | /* | ||
113 | * Don't go out when trying to access nonexisting devices | ||
114 | * on the local bus. | ||
115 | */ | ||
116 | if (bus == pp->root_bus_nr && dev > 1) | ||
117 | return 0; | ||
118 | |||
119 | return 1; | ||
120 | } | ||
121 | |||
122 | static int pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where, | ||
123 | int size, u32 *val) | ||
124 | { | ||
125 | struct pcie_port *pp = bus_to_port(bus->number); | ||
126 | unsigned long flags; | ||
127 | int ret; | ||
128 | |||
129 | if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) { | ||
130 | *val = 0xffffffff; | ||
131 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
132 | } | ||
133 | |||
134 | spin_lock_irqsave(&pp->conf_lock, flags); | ||
135 | ret = orion_pcie_rd_conf(pp->base, bus, devfn, where, size, val); | ||
136 | spin_unlock_irqrestore(&pp->conf_lock, flags); | ||
137 | |||
138 | return ret; | ||
139 | } | ||
140 | |||
141 | static int pcie_wr_conf(struct pci_bus *bus, u32 devfn, | ||
142 | int where, int size, u32 val) | ||
143 | { | ||
144 | struct pcie_port *pp = bus_to_port(bus->number); | ||
145 | unsigned long flags; | ||
146 | int ret; | ||
147 | |||
148 | if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) | ||
149 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
150 | |||
151 | spin_lock_irqsave(&pp->conf_lock, flags); | ||
152 | ret = orion_pcie_wr_conf(pp->base, bus, devfn, where, size, val); | ||
153 | spin_unlock_irqrestore(&pp->conf_lock, flags); | ||
154 | |||
155 | return ret; | ||
156 | } | ||
157 | |||
158 | static struct pci_ops pcie_ops = { | ||
159 | .read = pcie_rd_conf, | ||
160 | .write = pcie_wr_conf, | ||
161 | }; | ||
162 | |||
163 | static void __devinit rc_pci_fixup(struct pci_dev *dev) | ||
164 | { | ||
165 | /* | ||
166 | * Prevent enumeration of root complex. | ||
167 | */ | ||
168 | if (dev->bus->parent == NULL && dev->devfn == 0) { | ||
169 | int i; | ||
170 | |||
171 | for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { | ||
172 | dev->resource[i].start = 0; | ||
173 | dev->resource[i].end = 0; | ||
174 | dev->resource[i].flags = 0; | ||
175 | } | ||
176 | } | ||
177 | } | ||
178 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup); | ||
179 | |||
180 | static struct pci_bus __init * | ||
181 | dove_pcie_scan_bus(int nr, struct pci_sys_data *sys) | ||
182 | { | ||
183 | struct pci_bus *bus; | ||
184 | |||
185 | if (nr < num_pcie_ports) { | ||
186 | bus = pci_scan_bus(sys->busnr, &pcie_ops, sys); | ||
187 | } else { | ||
188 | bus = NULL; | ||
189 | BUG(); | ||
190 | } | ||
191 | |||
192 | return bus; | ||
193 | } | ||
194 | |||
195 | static int __init dove_pcie_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | ||
196 | { | ||
197 | struct pcie_port *pp = bus_to_port(dev->bus->number); | ||
198 | |||
199 | return pp->index ? IRQ_DOVE_PCIE1 : IRQ_DOVE_PCIE0; | ||
200 | } | ||
201 | |||
202 | static struct hw_pci dove_pci __initdata = { | ||
203 | .nr_controllers = 2, | ||
204 | .swizzle = pci_std_swizzle, | ||
205 | .setup = dove_pcie_setup, | ||
206 | .scan = dove_pcie_scan_bus, | ||
207 | .map_irq = dove_pcie_map_irq, | ||
208 | }; | ||
209 | |||
210 | static void __init add_pcie_port(int index, unsigned long base) | ||
211 | { | ||
212 | printk(KERN_INFO "Dove PCIe port %d: ", index); | ||
213 | |||
214 | if (orion_pcie_link_up((void __iomem *)base)) { | ||
215 | struct pcie_port *pp = &pcie_port[num_pcie_ports++]; | ||
216 | |||
217 | printk(KERN_INFO "link up\n"); | ||
218 | |||
219 | pp->index = index; | ||
220 | pp->root_bus_nr = -1; | ||
221 | pp->base = (void __iomem *)base; | ||
222 | spin_lock_init(&pp->conf_lock); | ||
223 | memset(pp->res, 0, sizeof(pp->res)); | ||
224 | } else { | ||
225 | printk(KERN_INFO "link down, ignoring\n"); | ||
226 | } | ||
227 | } | ||
228 | |||
229 | void __init dove_pcie_init(int init_port0, int init_port1) | ||
230 | { | ||
231 | if (init_port0) | ||
232 | add_pcie_port(0, DOVE_PCIE0_VIRT_BASE); | ||
233 | |||
234 | if (init_port1) | ||
235 | add_pcie_port(1, DOVE_PCIE1_VIRT_BASE); | ||
236 | |||
237 | pci_common_init(&dove_pci); | ||
238 | } | ||
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 9264d814cd7a..1549863d7b54 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -388,7 +388,7 @@ config CPU_FEROCEON_OLD_ID | |||
388 | 388 | ||
389 | # ARMv6 | 389 | # ARMv6 |
390 | config CPU_V6 | 390 | config CPU_V6 |
391 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX | 391 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || ARCH_DOVE |
392 | select CPU_32v6 | 392 | select CPU_32v6 |
393 | select CPU_ABRT_EV6 | 393 | select CPU_ABRT_EV6 |
394 | select CPU_PABRT_V6 | 394 | select CPU_PABRT_V6 |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 70f75d2e3ead..5485c821101c 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -130,9 +130,16 @@ ENTRY(cpu_v6_set_pte_ext) | |||
130 | 130 | ||
131 | 131 | ||
132 | 132 | ||
133 | 133 | .type cpu_v6_name, #object | |
134 | cpu_v6_name: | 134 | cpu_v6_name: |
135 | .asciz "ARMv6-compatible processor" | 135 | .asciz "ARMv6-compatible processor" |
136 | .size cpu_v6_name, . - cpu_v6_name | ||
137 | |||
138 | .type cpu_pj4_name, #object | ||
139 | cpu_pj4_name: | ||
140 | .asciz "Marvell PJ4 processor" | ||
141 | .size cpu_pj4_name, . - cpu_pj4_name | ||
142 | |||
136 | .align | 143 | .align |
137 | 144 | ||
138 | __INIT | 145 | __INIT |
@@ -241,3 +248,27 @@ __v6_proc_info: | |||
241 | .long v6_user_fns | 248 | .long v6_user_fns |
242 | .long v6_cache_fns | 249 | .long v6_cache_fns |
243 | .size __v6_proc_info, . - __v6_proc_info | 250 | .size __v6_proc_info, . - __v6_proc_info |
251 | |||
252 | .type __pj4_v6_proc_info, #object | ||
253 | __pj4_v6_proc_info: | ||
254 | .long 0x560f5810 | ||
255 | .long 0xff0ffff0 | ||
256 | .long PMD_TYPE_SECT | \ | ||
257 | PMD_SECT_BUFFERABLE | \ | ||
258 | PMD_SECT_CACHEABLE | \ | ||
259 | PMD_SECT_AP_WRITE | \ | ||
260 | PMD_SECT_AP_READ | ||
261 | .long PMD_TYPE_SECT | \ | ||
262 | PMD_SECT_XN | \ | ||
263 | PMD_SECT_AP_WRITE | \ | ||
264 | PMD_SECT_AP_READ | ||
265 | b __v6_setup | ||
266 | .long cpu_arch_name | ||
267 | .long cpu_elf_name | ||
268 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
269 | .long cpu_pj4_name | ||
270 | .long v6_processor_functions | ||
271 | .long v6wbi_tlb_fns | ||
272 | .long v6_user_fns | ||
273 | .long v6_cache_fns | ||
274 | .size __pj4_v6_proc_info, . - __pj4_v6_proc_info | ||