aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorSaeed Bishara <saeed@marvell.com>2009-08-06 08:12:43 -0400
committerNicolas Pitre <nico@fluxnic.net>2009-11-27 15:43:06 -0500
commitedabd38e1a017e922e3e3b485ee3ddb4df433aa4 (patch)
treec79cef3e59f62014c12ff1203e84b0bac5610a55 /arch/arm
parent8d27b2f7988b652dbabf79291a3e2550c06e1af5 (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>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig13
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/boot/compressed/head.S6
-rw-r--r--arch/arm/configs/dove_defconfig1617
-rw-r--r--arch/arm/mach-dove/Kconfig14
-rw-r--r--arch/arm/mach-dove/Makefile3
-rw-r--r--arch/arm/mach-dove/Makefile.boot3
-rw-r--r--arch/arm/mach-dove/addr-map.c149
-rw-r--r--arch/arm/mach-dove/common.c777
-rw-r--r--arch/arm/mach-dove/common.h40
-rw-r--r--arch/arm/mach-dove/dove-db-setup.c102
-rw-r--r--arch/arm/mach-dove/include/mach/bridge-regs.h58
-rw-r--r--arch/arm/mach-dove/include/mach/debug-macro.S20
-rw-r--r--arch/arm/mach-dove/include/mach/dove.h180
-rw-r--r--arch/arm/mach-dove/include/mach/entry-macro.S39
-rw-r--r--arch/arm/mach-dove/include/mach/gpio.h49
-rw-r--r--arch/arm/mach-dove/include/mach/hardware.h26
-rw-r--r--arch/arm/mach-dove/include/mach/io.h20
-rw-r--r--arch/arm/mach-dove/include/mach/irqs.h101
-rw-r--r--arch/arm/mach-dove/include/mach/memory.h10
-rw-r--r--arch/arm/mach-dove/include/mach/pm.h54
-rw-r--r--arch/arm/mach-dove/include/mach/system.h36
-rw-r--r--arch/arm/mach-dove/include/mach/timex.h9
-rw-r--r--arch/arm/mach-dove/include/mach/uncompress.h37
-rw-r--r--arch/arm/mach-dove/include/mach/vmalloc.h5
-rw-r--r--arch/arm/mach-dove/irq.c133
-rw-r--r--arch/arm/mach-dove/pcie.c238
-rw-r--r--arch/arm/mm/Kconfig2
-rw-r--r--arch/arm/mm/proc-v6.S33
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
436config 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
436config ARCH_KIRKWOOD 447config 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
748source "arch/arm/mach-kirkwood/Kconfig" 759source "arch/arm/mach-kirkwood/Kconfig"
749 760
761source "arch/arm/mach-dove/Kconfig"
762
750source "arch/arm/plat-s3c24xx/Kconfig" 763source "arch/arm/plat-s3c24xx/Kconfig"
751source "arch/arm/plat-s3c64xx/Kconfig" 764source "arch/arm/plat-s3c64xx/Kconfig"
752source "arch/arm/plat-s3c/Kconfig" 765source "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
122machine-$(CONFIG_ARCH_BCMRING) := bcmring 122machine-$(CONFIG_ARCH_BCMRING) := bcmring
123machine-$(CONFIG_ARCH_CLPS711X) := clps711x 123machine-$(CONFIG_ARCH_CLPS711X) := clps711x
124machine-$(CONFIG_ARCH_DAVINCI) := davinci 124machine-$(CONFIG_ARCH_DAVINCI) := davinci
125machine-$(CONFIG_ARCH_DOVE) := dove
125machine-$(CONFIG_ARCH_EBSA110) := ebsa110 126machine-$(CONFIG_ARCH_EBSA110) := ebsa110
126machine-$(CONFIG_ARCH_EP93XX) := ep93xx 127machine-$(CONFIG_ARCH_EP93XX) := ep93xx
127machine-$(CONFIG_ARCH_GEMINI) := gemini 128machine-$(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#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_STACKTRACE_SUPPORT=y
13CONFIG_HAVE_LATENCYTOP_SUPPORT=y
14CONFIG_LOCKDEP_SUPPORT=y
15CONFIG_TRACE_IRQFLAGS_SUPPORT=y
16CONFIG_HARDIRQS_SW_RESEND=y
17CONFIG_GENERIC_IRQ_PROBE=y
18CONFIG_RWSEM_GENERIC_SPINLOCK=y
19CONFIG_GENERIC_HWEIGHT=y
20CONFIG_GENERIC_CALIBRATE_DELAY=y
21CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
22CONFIG_VECTORS_BASE=0xffff0000
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
25
26#
27# General setup
28#
29CONFIG_EXPERIMENTAL=y
30CONFIG_BROKEN_ON_SMP=y
31CONFIG_INIT_ENV_ARG_LIMIT=32
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SWAP=y
35CONFIG_SYSVIPC=y
36CONFIG_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#
45CONFIG_TREE_RCU=y
46# CONFIG_TREE_PREEMPT_RCU is not set
47# CONFIG_RCU_TRACE is not set
48CONFIG_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
52CONFIG_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
59CONFIG_CC_OPTIMIZE_FOR_SIZE=y
60CONFIG_SYSCTL=y
61CONFIG_ANON_INODES=y
62CONFIG_EMBEDDED=y
63CONFIG_UID16=y
64CONFIG_SYSCTL_SYSCALL=y
65CONFIG_KALLSYMS=y
66# CONFIG_KALLSYMS_ALL is not set
67# CONFIG_KALLSYMS_EXTRA_PASS is not set
68CONFIG_HOTPLUG=y
69CONFIG_PRINTK=y
70CONFIG_BUG=y
71CONFIG_ELF_CORE=y
72CONFIG_BASE_FULL=y
73CONFIG_FUTEX=y
74CONFIG_EPOLL=y
75CONFIG_SIGNALFD=y
76CONFIG_TIMERFD=y
77CONFIG_EVENTFD=y
78CONFIG_SHMEM=y
79CONFIG_AIO=y
80
81#
82# Kernel Performance Events And Counters
83#
84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_PCI_QUIRKS=y
86CONFIG_COMPAT_BRK=y
87CONFIG_SLAB=y
88# CONFIG_SLUB is not set
89# CONFIG_SLOB is not set
90# CONFIG_PROFILING is not set
91CONFIG_HAVE_OPROFILE=y
92# CONFIG_KPROBES is not set
93CONFIG_HAVE_KPROBES=y
94CONFIG_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
101CONFIG_HAVE_GENERIC_DMA_COHERENT=y
102CONFIG_SLABINFO=y
103CONFIG_RT_MUTEXES=y
104CONFIG_BASE_SMALL=0
105CONFIG_MODULES=y
106# CONFIG_MODULE_FORCE_LOAD is not set
107CONFIG_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
111CONFIG_BLOCK=y
112CONFIG_LBDAF=y
113# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set
115
116#
117# IO Schedulers
118#
119CONFIG_IOSCHED_NOOP=y
120CONFIG_IOSCHED_AS=y
121CONFIG_IOSCHED_DEADLINE=y
122CONFIG_IOSCHED_CFQ=y
123# CONFIG_DEFAULT_AS is not set
124# CONFIG_DEFAULT_DEADLINE is not set
125CONFIG_DEFAULT_CFQ=y
126# CONFIG_DEFAULT_NOOP is not set
127CONFIG_DEFAULT_IOSCHED="cfq"
128# CONFIG_FREEZER is not set
129
130#
131# System Type
132#
133CONFIG_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
156CONFIG_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#
183CONFIG_MACH_DOVE_DB=y
184CONFIG_PLAT_ORION=y
185
186#
187# Processor Type
188#
189CONFIG_CPU_32=y
190CONFIG_CPU_V6=y
191CONFIG_CPU_32v6K=y
192CONFIG_CPU_32v6=y
193CONFIG_CPU_ABRT_EV6=y
194CONFIG_CPU_PABRT_V6=y
195CONFIG_CPU_CACHE_V6=y
196CONFIG_CPU_CACHE_VIPT=y
197CONFIG_CPU_COPY_V6=y
198CONFIG_CPU_TLB_V6=y
199CONFIG_CPU_HAS_ASID=y
200CONFIG_CPU_CP15=y
201CONFIG_CPU_CP15_MMU=y
202
203#
204# Processor Features
205#
206CONFIG_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
210CONFIG_ARM_L1_CACHE_SHIFT=5
211# CONFIG_ARM_ERRATA_411920 is not set
212
213#
214# Bus support
215#
216CONFIG_PCI=y
217CONFIG_PCI_SYSCALL=y
218# CONFIG_ARCH_SUPPORTS_MSI is not set
219CONFIG_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#
228CONFIG_TICK_ONESHOT=y
229CONFIG_NO_HZ=y
230CONFIG_HIGH_RES_TIMERS=y
231CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
232CONFIG_VMSPLIT_3G=y
233# CONFIG_VMSPLIT_2G is not set
234# CONFIG_VMSPLIT_1G is not set
235CONFIG_PAGE_OFFSET=0xC0000000
236CONFIG_PREEMPT_NONE=y
237# CONFIG_PREEMPT_VOLUNTARY is not set
238# CONFIG_PREEMPT is not set
239CONFIG_HZ=100
240CONFIG_AEABI=y
241CONFIG_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
245CONFIG_SELECT_MEMORY_MODEL=y
246CONFIG_FLATMEM_MANUAL=y
247# CONFIG_DISCONTIGMEM_MANUAL is not set
248# CONFIG_SPARSEMEM_MANUAL is not set
249CONFIG_FLATMEM=y
250CONFIG_FLAT_NODE_MEM_MAP=y
251CONFIG_PAGEFLAGS_EXTENDED=y
252CONFIG_SPLIT_PTLOCK_CPUS=4
253# CONFIG_PHYS_ADDR_T_64BIT is not set
254CONFIG_ZONE_DMA_FLAG=0
255CONFIG_VIRT_TO_BUS=y
256CONFIG_HAVE_MLOCK=y
257CONFIG_HAVE_MLOCKED_PAGE_BIT=y
258# CONFIG_KSM is not set
259CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
260CONFIG_ALIGNMENT_TRAP=y
261# CONFIG_UACCESS_WITH_MEMCPY is not set
262
263#
264# Boot options
265#
266CONFIG_ZBOOT_ROM_TEXT=0x0
267CONFIG_ZBOOT_ROM_BSS=0x0
268CONFIG_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
286CONFIG_VFP=y
287
288#
289# Userspace binary formats
290#
291CONFIG_BINFMT_ELF=y
292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
293CONFIG_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
301CONFIG_ARCH_SUSPEND_POSSIBLE=y
302CONFIG_NET=y
303
304#
305# Networking options
306#
307CONFIG_PACKET=y
308CONFIG_PACKET_MMAP=y
309CONFIG_UNIX=y
310CONFIG_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
316CONFIG_INET=y
317CONFIG_IP_MULTICAST=y
318# CONFIG_IP_ADVANCED_ROUTER is not set
319CONFIG_IP_FIB_HASH=y
320CONFIG_IP_PNP=y
321CONFIG_IP_PNP_DHCP=y
322CONFIG_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
334CONFIG_INET_XFRM_MODE_TRANSPORT=y
335CONFIG_INET_XFRM_MODE_TUNNEL=y
336CONFIG_INET_XFRM_MODE_BEET=y
337CONFIG_INET_LRO=y
338CONFIG_INET_DIAG=y
339CONFIG_INET_TCP_DIAG=y
340# CONFIG_TCP_CONG_ADVANCED is not set
341CONFIG_TCP_CONG_CUBIC=y
342CONFIG_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#
389CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
390# CONFIG_DEVTMPFS is not set
391CONFIG_STANDALONE=y
392CONFIG_PREVENT_FIRMWARE_BUILD=y
393CONFIG_FW_LOADER=y
394CONFIG_FIRMWARE_IN_KERNEL=y
395CONFIG_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
400CONFIG_MTD=y
401# CONFIG_MTD_DEBUG is not set
402# CONFIG_MTD_TESTS is not set
403# CONFIG_MTD_CONCAT is not set
404CONFIG_MTD_PARTITIONS=y
405# CONFIG_MTD_REDBOOT_PARTS is not set
406CONFIG_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#
413CONFIG_MTD_CHAR=y
414CONFIG_MTD_BLKDEVS=y
415CONFIG_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#
426CONFIG_MTD_CFI=y
427CONFIG_MTD_JEDECPROBE=y
428CONFIG_MTD_GEN_PROBE=y
429CONFIG_MTD_CFI_ADV_OPTIONS=y
430CONFIG_MTD_CFI_NOSWAP=y
431# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
432# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
433CONFIG_MTD_CFI_GEOMETRY=y
434CONFIG_MTD_MAP_BANK_WIDTH_1=y
435CONFIG_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
440CONFIG_MTD_CFI_I1=y
441CONFIG_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
445CONFIG_MTD_CFI_INTELEXT=y
446# CONFIG_MTD_CFI_AMDSTD is not set
447CONFIG_MTD_CFI_STAA=y
448CONFIG_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
457CONFIG_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
469CONFIG_MTD_M25P80=y
470CONFIG_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#
494CONFIG_MTD_UBI=y
495CONFIG_MTD_UBI_WL_THRESHOLD=4096
496CONFIG_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
504CONFIG_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
510CONFIG_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
515CONFIG_BLK_DEV_RAM=y
516CONFIG_BLK_DEV_RAM_COUNT=1
517CONFIG_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
523CONFIG_HAVE_IDE=y
524# CONFIG_IDE is not set
525
526#
527# SCSI device support
528#
529# CONFIG_RAID_ATTRS is not set
530CONFIG_SCSI=y
531CONFIG_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#
539CONFIG_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
549CONFIG_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
562CONFIG_ATA=y
563# CONFIG_ATA_NONSTANDARD is not set
564CONFIG_ATA_VERBOSE_ERROR=y
565CONFIG_SATA_PMP=y
566# CONFIG_SATA_AHCI is not set
567# CONFIG_SATA_SIL24 is not set
568CONFIG_ATA_SFF=y
569# CONFIG_SATA_SVW is not set
570# CONFIG_ATA_PIIX is not set
571CONFIG_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
642CONFIG_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
650CONFIG_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
671CONFIG_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
690CONFIG_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
698CONFIG_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#
729CONFIG_INPUT=y
730# CONFIG_INPUT_FF_MEMLESS is not set
731CONFIG_INPUT_POLLDEV=y
732
733#
734# Userland interfaces
735#
736# CONFIG_INPUT_MOUSEDEV is not set
737# CONFIG_INPUT_JOYDEV is not set
738CONFIG_INPUT_EVDEV=y
739# CONFIG_INPUT_EVBUG is not set
740
741#
742# Input Device Drivers
743#
744CONFIG_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
757CONFIG_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#
779CONFIG_VT=y
780CONFIG_CONSOLE_TRANSLATIONS=y
781CONFIG_VT_CONSOLE=y
782CONFIG_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#
791CONFIG_SERIAL_8250=y
792CONFIG_SERIAL_8250_CONSOLE=y
793# CONFIG_SERIAL_8250_PCI is not set
794CONFIG_SERIAL_8250_NR_UARTS=4
795CONFIG_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
802CONFIG_SERIAL_CORE=y
803CONFIG_SERIAL_CORE_CONSOLE=y
804# CONFIG_SERIAL_JSM is not set
805CONFIG_UNIX98_PTYS=y
806# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
807CONFIG_LEGACY_PTYS=y
808CONFIG_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
815CONFIG_DEVPORT=y
816CONFIG_I2C=y
817CONFIG_I2C_BOARDINFO=y
818CONFIG_I2C_COMPAT=y
819CONFIG_I2C_CHARDEV=y
820CONFIG_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
848CONFIG_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
879CONFIG_SPI=y
880# CONFIG_SPI_DEBUG is not set
881CONFIG_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
888CONFIG_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
900CONFIG_ARCH_REQUIRE_GPIOLIB=y
901CONFIG_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
937CONFIG_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#
970CONFIG_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
986CONFIG_DUMMY_CONSOLE=y
987# CONFIG_SOUND is not set
988CONFIG_HID_SUPPORT=y
989CONFIG_HID=y
990# CONFIG_HIDRAW is not set
991
992#
993# USB Input Devices
994#
995CONFIG_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
1028CONFIG_USB_SUPPORT=y
1029CONFIG_USB_ARCH_HAS_HCD=y
1030CONFIG_USB_ARCH_HAS_OHCI=y
1031CONFIG_USB_ARCH_HAS_EHCI=y
1032CONFIG_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#
1039CONFIG_USB_DEVICEFS=y
1040CONFIG_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
1054CONFIG_USB_EHCI_HCD=y
1055CONFIG_USB_EHCI_ROOT_HUB_TT=y
1056CONFIG_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#
1084CONFIG_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
1147CONFIG_RTC_LIB=y
1148CONFIG_RTC_CLASS=y
1149CONFIG_RTC_HCTOSYS=y
1150CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1151# CONFIG_RTC_DEBUG is not set
1152
1153#
1154# RTC interfaces
1155#
1156CONFIG_RTC_INTF_SYSFS=y
1157CONFIG_RTC_INTF_PROC=y
1158CONFIG_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#
1210CONFIG_DMADEVICES=y
1211
1212#
1213# DMA Devices
1214#
1215CONFIG_MV_XOR=y
1216CONFIG_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#
1235CONFIG_EXT2_FS=y
1236# CONFIG_EXT2_FS_XATTR is not set
1237# CONFIG_EXT2_FS_XIP is not set
1238CONFIG_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
1242CONFIG_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
1252CONFIG_FILE_LOCKING=y
1253CONFIG_FSNOTIFY=y
1254CONFIG_DNOTIFY=y
1255CONFIG_INOTIFY=y
1256CONFIG_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#
1270CONFIG_ISO9660_FS=y
1271CONFIG_JOLIET=y
1272# CONFIG_ZISOFS is not set
1273CONFIG_UDF_FS=m
1274CONFIG_UDF_NLS=y
1275
1276#
1277# DOS/FAT/NT Filesystems
1278#
1279CONFIG_FAT_FS=y
1280CONFIG_MSDOS_FS=y
1281CONFIG_VFAT_FS=y
1282CONFIG_FAT_DEFAULT_CODEPAGE=437
1283CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1284# CONFIG_NTFS_FS is not set
1285
1286#
1287# Pseudo filesystems
1288#
1289CONFIG_PROC_FS=y
1290CONFIG_PROC_SYSCTL=y
1291CONFIG_PROC_PAGE_MONITOR=y
1292CONFIG_SYSFS=y
1293CONFIG_TMPFS=y
1294# CONFIG_TMPFS_POSIX_ACL is not set
1295# CONFIG_HUGETLB_PAGE is not set
1296# CONFIG_CONFIGFS_FS is not set
1297CONFIG_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
1305CONFIG_JFFS2_FS=y
1306CONFIG_JFFS2_FS_DEBUG=0
1307CONFIG_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
1312CONFIG_JFFS2_ZLIB=y
1313# CONFIG_JFFS2_LZO is not set
1314CONFIG_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
1327CONFIG_NETWORK_FILESYSTEMS=y
1328CONFIG_NFS_FS=y
1329CONFIG_NFS_V3=y
1330# CONFIG_NFS_V3_ACL is not set
1331# CONFIG_NFS_V4 is not set
1332CONFIG_ROOT_NFS=y
1333# CONFIG_NFSD is not set
1334CONFIG_LOCKD=y
1335CONFIG_LOCKD_V4=y
1336CONFIG_NFS_COMMON=y
1337CONFIG_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#
1349CONFIG_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
1355CONFIG_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
1367CONFIG_NLS=y
1368CONFIG_NLS_DEFAULT="iso8859-1"
1369CONFIG_NLS_CODEPAGE_437=y
1370# CONFIG_NLS_CODEPAGE_737 is not set
1371# CONFIG_NLS_CODEPAGE_775 is not set
1372CONFIG_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
1393CONFIG_NLS_ISO8859_1=y
1394CONFIG_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
1406CONFIG_NLS_UTF8=y
1407# CONFIG_DLM is not set
1408
1409#
1410# Kernel hacking
1411#
1412# CONFIG_PRINTK_TIME is not set
1413CONFIG_ENABLE_WARN_DEPRECATED=y
1414CONFIG_ENABLE_MUST_CHECK=y
1415CONFIG_FRAME_WARN=1024
1416CONFIG_MAGIC_SYSRQ=y
1417# CONFIG_STRIP_ASM_SYMS is not set
1418# CONFIG_UNUSED_SYMBOLS is not set
1419CONFIG_DEBUG_FS=y
1420# CONFIG_HEADERS_CHECK is not set
1421CONFIG_DEBUG_KERNEL=y
1422# CONFIG_DEBUG_SHIRQ is not set
1423CONFIG_DETECT_SOFTLOCKUP=y
1424# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1425CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1426CONFIG_DETECT_HUNG_TASK=y
1427# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1428CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1429# CONFIG_SCHED_DEBUG is not set
1430# CONFIG_SCHEDSTATS is not set
1431CONFIG_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
1446CONFIG_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
1462CONFIG_SYSCTL_SYSCALL_CHECK=y
1463# CONFIG_PAGE_POISONING is not set
1464CONFIG_HAVE_FUNCTION_TRACER=y
1465CONFIG_TRACING_SUPPORT=y
1466CONFIG_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
1472CONFIG_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
1481CONFIG_HAVE_ARCH_KGDB=y
1482# CONFIG_KGDB is not set
1483CONFIG_ARM_UNWIND=y
1484CONFIG_DEBUG_USER=y
1485CONFIG_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
1496CONFIG_CRYPTO=y
1497
1498#
1499# Crypto core or helper
1500#
1501CONFIG_CRYPTO_ALGAPI=y
1502CONFIG_CRYPTO_ALGAPI2=y
1503CONFIG_CRYPTO_AEAD2=y
1504CONFIG_CRYPTO_BLKCIPHER=y
1505CONFIG_CRYPTO_BLKCIPHER2=y
1506CONFIG_CRYPTO_HASH=y
1507CONFIG_CRYPTO_HASH2=y
1508CONFIG_CRYPTO_RNG2=y
1509CONFIG_CRYPTO_PCOMP=y
1510CONFIG_CRYPTO_MANAGER=y
1511CONFIG_CRYPTO_MANAGER2=y
1512# CONFIG_CRYPTO_GF128MUL is not set
1513CONFIG_CRYPTO_NULL=y
1514CONFIG_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#
1529CONFIG_CRYPTO_CBC=y
1530# CONFIG_CRYPTO_CTR is not set
1531# CONFIG_CRYPTO_CTS is not set
1532CONFIG_CRYPTO_ECB=m
1533# CONFIG_CRYPTO_LRW is not set
1534CONFIG_CRYPTO_PCBC=m
1535# CONFIG_CRYPTO_XTS is not set
1536
1537#
1538# Hash modes
1539#
1540CONFIG_CRYPTO_HMAC=y
1541# CONFIG_CRYPTO_XCBC is not set
1542# CONFIG_CRYPTO_VMAC is not set
1543
1544#
1545# Digest
1546#
1547CONFIG_CRYPTO_CRC32C=y
1548# CONFIG_CRYPTO_GHASH is not set
1549CONFIG_CRYPTO_MD4=y
1550CONFIG_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
1556CONFIG_CRYPTO_SHA1=y
1557CONFIG_CRYPTO_SHA256=y
1558CONFIG_CRYPTO_SHA512=y
1559# CONFIG_CRYPTO_TGR192 is not set
1560# CONFIG_CRYPTO_WP512 is not set
1561
1562#
1563# Ciphers
1564#
1565CONFIG_CRYPTO_AES=y
1566# CONFIG_CRYPTO_ANUBIS is not set
1567# CONFIG_CRYPTO_ARC4 is not set
1568CONFIG_CRYPTO_BLOWFISH=y
1569# CONFIG_CRYPTO_CAMELLIA is not set
1570# CONFIG_CRYPTO_CAST5 is not set
1571# CONFIG_CRYPTO_CAST6 is not set
1572CONFIG_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
1578CONFIG_CRYPTO_TEA=y
1579CONFIG_CRYPTO_TWOFISH=y
1580CONFIG_CRYPTO_TWOFISH_COMMON=y
1581
1582#
1583# Compression
1584#
1585CONFIG_CRYPTO_DEFLATE=y
1586# CONFIG_CRYPTO_ZLIB is not set
1587CONFIG_CRYPTO_LZO=y
1588
1589#
1590# Random Number Generation
1591#
1592# CONFIG_CRYPTO_ANSI_CPRNG is not set
1593CONFIG_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#
1601CONFIG_BITREVERSE=y
1602CONFIG_GENERIC_FIND_LAST_BIT=y
1603CONFIG_CRC_CCITT=y
1604CONFIG_CRC16=y
1605# CONFIG_CRC_T10DIF is not set
1606CONFIG_CRC_ITU_T=m
1607CONFIG_CRC32=y
1608# CONFIG_CRC7 is not set
1609CONFIG_LIBCRC32C=y
1610CONFIG_ZLIB_INFLATE=y
1611CONFIG_ZLIB_DEFLATE=y
1612CONFIG_LZO_COMPRESS=y
1613CONFIG_LZO_DECOMPRESS=y
1614CONFIG_HAS_IOMEM=y
1615CONFIG_HAS_IOPORT=y
1616CONFIG_HAS_DMA=y
1617CONFIG_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 @@
1if ARCH_DOVE
2
3menu "Marvell Dove Implementations"
4
5config 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
12endmenu
13
14endif
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 @@
1obj-y += common.o addr-map.o irq.o pcie.o
2
3obj-$(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
2params_phys-y := 0x00000100
3initrd_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
45struct mbus_dram_target_info dove_mbus_dram_info;
46
47static inline void __iomem *ddr_map_sc(int i)
48{
49 return (void __iomem *)(DOVE_MC_VIRT_BASE + 0x100 + ((i) << 4));
50}
51
52static int cpu_win_can_remap(int win)
53{
54 if (win < 4)
55 return 1;
56
57 return 0;
58}
59
60static 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
78void __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 ****************************************************************************/
42static 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
66void __init dove_map_io(void)
67{
68 iotable_init(dove_io_desc, ARRAY_SIZE(dove_io_desc));
69}
70
71/*****************************************************************************
72 * EHCI
73 ****************************************************************************/
74static struct orion_ehci_data dove_ehci_data = {
75 .dram = &dove_mbus_dram_info,
76 .phy_version = EHCI_PHY_NA,
77};
78
79static u64 ehci_dmamask = DMA_BIT_MASK(32);
80
81/*****************************************************************************
82 * EHCI0
83 ****************************************************************************/
84static 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
96static 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
108void __init dove_ehci0_init(void)
109{
110 platform_device_register(&dove_ehci0);
111}
112
113/*****************************************************************************
114 * EHCI1
115 ****************************************************************************/
116static 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
128static 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
140void __init dove_ehci1_init(void)
141{
142 platform_device_register(&dove_ehci1);
143}
144
145/*****************************************************************************
146 * GE00
147 ****************************************************************************/
148struct mv643xx_eth_shared_platform_data dove_ge00_shared_data = {
149 .t_clk = 0,
150 .dram = &dove_mbus_dram_info,
151};
152
153static 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
162static 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
172static 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
181static 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
191void __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 ****************************************************************************/
203static 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
214void __init dove_rtc_init(void)
215{
216 platform_device_register_simple("rtc-mv", -1, dove_rtc_resource, 2);
217}
218
219/*****************************************************************************
220 * SATA
221 ****************************************************************************/
222static 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
236static 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
246void __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 ****************************************************************************/
256static 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
269static 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
281static 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
291void __init dove_uart0_init(void)
292{
293 platform_device_register(&dove_uart0);
294}
295
296/*****************************************************************************
297 * UART1
298 ****************************************************************************/
299static 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
312static 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
324static 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
334void __init dove_uart1_init(void)
335{
336 platform_device_register(&dove_uart1);
337}
338
339/*****************************************************************************
340 * UART2
341 ****************************************************************************/
342static 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
355static 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
367static 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
377void __init dove_uart2_init(void)
378{
379 platform_device_register(&dove_uart2);
380}
381
382/*****************************************************************************
383 * UART3
384 ****************************************************************************/
385static 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
398static 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
410static 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
420void __init dove_uart3_init(void)
421{
422 platform_device_register(&dove_uart3);
423}
424
425/*****************************************************************************
426 * SPI0
427 ****************************************************************************/
428static struct orion_spi_info dove_spi0_data = {
429 .tclk = 0,
430};
431
432static 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
444static 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
454void __init dove_spi0_init(void)
455{
456 platform_device_register(&dove_spi0);
457}
458
459/*****************************************************************************
460 * SPI1
461 ****************************************************************************/
462static struct orion_spi_info dove_spi1_data = {
463 .tclk = 0,
464};
465
466static 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
478static 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
488void __init dove_spi1_init(void)
489{
490 platform_device_register(&dove_spi1);
491}
492
493/*****************************************************************************
494 * I2C
495 ****************************************************************************/
496static 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
502static 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
516static 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
526void __init dove_i2c_init(void)
527{
528 platform_device_register(&dove_i2c);
529}
530
531/*****************************************************************************
532 * Time handling
533 ****************************************************************************/
534static int get_tclk(void)
535{
536 /* use DOVE_RESET_SAMPLE_HI/LO to detect tclk */
537 return 166666667;
538}
539
540static void dove_timer_init(void)
541{
542 orion_time_init(IRQ_DOVE_BRIDGE, get_tclk());
543}
544
545struct sys_timer dove_timer = {
546 .init = dove_timer_init,
547};
548
549/*****************************************************************************
550 * XOR
551 ****************************************************************************/
552static struct mv_xor_platform_shared_data dove_xor_shared_data = {
553 .dram = &dove_mbus_dram_info,
554};
555
556/*****************************************************************************
557 * XOR 0
558 ****************************************************************************/
559static u64 dove_xor0_dmamask = DMA_BIT_MASK(32);
560
561static 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
575static 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
585static 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
593static struct mv_xor_platform_data dove_xor00_data = {
594 .shared = &dove_xor0_shared,
595 .hw_id = 0,
596 .pool_size = PAGE_SIZE,
597};
598
599static 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
611static 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
619static struct mv_xor_platform_data dove_xor01_data = {
620 .shared = &dove_xor0_shared,
621 .hw_id = 1,
622 .pool_size = PAGE_SIZE,
623};
624
625static 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
637void __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 ****************************************************************************/
658static u64 dove_xor1_dmamask = DMA_BIT_MASK(32);
659
660static 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
674static 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
684static 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
692static struct mv_xor_platform_data dove_xor10_data = {
693 .shared = &dove_xor1_shared,
694 .hw_id = 0,
695 .pool_size = PAGE_SIZE,
696};
697
698static 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
710static 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
718static struct mv_xor_platform_data dove_xor11_data = {
719 .shared = &dove_xor1_shared,
720 .hw_id = 1,
721 .pool_size = PAGE_SIZE,
722};
723
724static 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
736void __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
754void __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
14struct mv643xx_eth_platform_data;
15struct mv_sata_platform_data;
16
17extern struct sys_timer dove_timer;
18extern struct mbus_dram_target_info dove_mbus_dram_info;
19
20/*
21 * Basic Dove init functions used early by machine-setup.
22 */
23void dove_map_io(void);
24void dove_init(void);
25void dove_init_irq(void);
26void dove_setup_cpu_mbus(void);
27void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data);
28void dove_sata_init(struct mv_sata_platform_data *sata_data);
29void dove_pcie_init(int init_port0, int init_port1);
30void dove_ehci0_init(void);
31void dove_ehci1_init(void);
32void dove_uart0_init(void);
33void dove_uart1_init(void);
34void dove_uart2_init(void);
35void dove_uart3_init(void);
36void dove_spi0_init(void);
37void dove_spi1_init(void);
38void 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
31static struct mv643xx_eth_platform_data dove_db_ge00_data = {
32 .phy_addr = MV643XX_ETH_PHY_ADDR_DEFAULT,
33};
34
35static 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 ****************************************************************************/
43static const struct flash_platform_data dove_db_spi_flash_data = {
44 .type = "m25p64",
45};
46
47static 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 ****************************************************************************/
61static 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
69subsys_initcall(dove_db_pci_init);
70
71/*****************************************************************************
72 * Board Init
73 ****************************************************************************/
74static 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
94MACHINE_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,
102MACHINE_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
33static 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
41static 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
38static 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
46static 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
14static inline void arch_idle(void)
15{
16 cpu_do_idle();
17}
18
19static 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
16static 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
29static 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
23static 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
39static 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
49static 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
59static 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
68static 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
75static 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
94void __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
23struct 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
33static struct pcie_port pcie_port[2];
34static int num_pcie_ports;
35
36
37static 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
97static 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
110static 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
122static 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
141static 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
158static struct pci_ops pcie_ops = {
159 .read = pcie_rd_conf,
160 .write = pcie_wr_conf,
161};
162
163static 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}
178DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
179
180static struct pci_bus __init *
181dove_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
195static 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
202static 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
210static 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
229void __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
390config CPU_V6 390config 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
134cpu_v6_name: 134cpu_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
139cpu_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