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