| 1 | From 7cc9c853cf4657bc971a3bf8736fa0412f23eea2 Mon Sep 17 00:00:00 2001 |
| 2 | From: Mike A. Chan <mikechan@google.com> |
| 3 | Date: Tue, 14 Oct 2008 19:46:11 -0700 |
| 4 | Subject: [PATCH 118/134] [ARM] goldfish: Add goldfish platform. |
| 5 | MIME-Version: 1.0 |
| 6 | Content-Type: text/plain; charset=utf-8 |
| 7 | Content-Transfer-Encoding: 8bit |
| 8 | |
| 9 | Signed-off-by: Mike A. Chan <mikechan@google.com> |
| 10 | Signed-off-by: Arve Hjønnevåg <arve@android.com> |
| 11 | --- |
| 12 | arch/arm/Kconfig | 10 + |
| 13 | arch/arm/Makefile | 1 + |
| 14 | arch/arm/configs/goldfish_defconfig | 1166 +++++++++++++++++++++ |
| 15 | arch/arm/mach-goldfish/Kconfig | 11 + |
| 16 | arch/arm/mach-goldfish/Makefile | 9 + |
| 17 | arch/arm/mach-goldfish/Makefile.boot | 4 + |
| 18 | arch/arm/mach-goldfish/board-goldfish.c | 122 +++ |
| 19 | arch/arm/mach-goldfish/include/mach/dma.h | 1 + |
| 20 | arch/arm/mach-goldfish/include/mach/entry-macro.S | 34 + |
| 21 | arch/arm/mach-goldfish/include/mach/hardware.h | 44 + |
| 22 | arch/arm/mach-goldfish/include/mach/io.h | 24 + |
| 23 | arch/arm/mach-goldfish/include/mach/irqs.h | 24 + |
| 24 | arch/arm/mach-goldfish/include/mach/memory.h | 35 + |
| 25 | arch/arm/mach-goldfish/include/mach/system.h | 30 + |
| 26 | arch/arm/mach-goldfish/include/mach/timer.h | 28 + |
| 27 | arch/arm/mach-goldfish/include/mach/timex.h | 24 + |
| 28 | arch/arm/mach-goldfish/include/mach/uncompress.h | 40 + |
| 29 | arch/arm/mach-goldfish/include/mach/vmalloc.h | 21 + |
| 30 | arch/arm/mach-goldfish/pdev_bus.c | 222 ++++ |
| 31 | arch/arm/mach-goldfish/timer.c | 147 +++ |
| 32 | 20 files changed, 1997 insertions(+), 0 deletions(-) |
| 33 | create mode 100644 arch/arm/configs/goldfish_defconfig |
| 34 | create mode 100644 arch/arm/mach-goldfish/Kconfig |
| 35 | create mode 100644 arch/arm/mach-goldfish/Makefile |
| 36 | create mode 100644 arch/arm/mach-goldfish/Makefile.boot |
| 37 | create mode 100644 arch/arm/mach-goldfish/board-goldfish.c |
| 38 | create mode 100644 arch/arm/mach-goldfish/include/mach/dma.h |
| 39 | create mode 100644 arch/arm/mach-goldfish/include/mach/entry-macro.S |
| 40 | create mode 100644 arch/arm/mach-goldfish/include/mach/hardware.h |
| 41 | create mode 100644 arch/arm/mach-goldfish/include/mach/io.h |
| 42 | create mode 100644 arch/arm/mach-goldfish/include/mach/irqs.h |
| 43 | create mode 100644 arch/arm/mach-goldfish/include/mach/memory.h |
| 44 | create mode 100644 arch/arm/mach-goldfish/include/mach/system.h |
| 45 | create mode 100644 arch/arm/mach-goldfish/include/mach/timer.h |
| 46 | create mode 100644 arch/arm/mach-goldfish/include/mach/timex.h |
| 47 | create mode 100644 arch/arm/mach-goldfish/include/mach/uncompress.h |
| 48 | create mode 100644 arch/arm/mach-goldfish/include/mach/vmalloc.h |
| 49 | create mode 100644 arch/arm/mach-goldfish/pdev_bus.c |
| 50 | create mode 100644 arch/arm/mach-goldfish/timer.c |
| 51 | |
| 52 | --- a/arch/arm/Kconfig |
| 53 | +++ b/arch/arm/Kconfig |
| 54 | @@ -206,6 +206,14 @@ config ARCH_AAEC2000 |
| 55 | help |
| 56 | This enables support for systems based on the Agilent AAEC-2000 |
| 57 | |
| 58 | +config ARCH_GOLDFISH |
| 59 | + bool "Goldfish" |
| 60 | + select CPU_ARM926T |
| 61 | + select GENERIC_TIME |
| 62 | + select GENERIC_CLOCKEVENTS |
| 63 | + help |
| 64 | + Support for Goldfish Virtual Platform. |
| 65 | + |
| 66 | config ARCH_INTEGRATOR |
| 67 | bool "ARM Ltd. Integrator family" |
| 68 | select ARM_AMBA |
| 69 | @@ -620,6 +628,8 @@ config ARCH_W90X900 |
| 70 | |
| 71 | endchoice |
| 72 | |
| 73 | +source "arch/arm/mach-goldfish/Kconfig" |
| 74 | + |
| 75 | source "arch/arm/mach-clps711x/Kconfig" |
| 76 | |
| 77 | source "arch/arm/mach-ep93xx/Kconfig" |
| 78 | --- a/arch/arm/Makefile |
| 79 | +++ b/arch/arm/Makefile |
| 80 | @@ -138,6 +138,7 @@ endif |
| 81 | machine-$(CONFIG_ARCH_IMX) := imx |
| 82 | machine-$(CONFIG_ARCH_H720X) := h720x |
| 83 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 |
| 84 | + machine-$(CONFIG_ARCH_GOLDFISH) := goldfish |
| 85 | machine-$(CONFIG_ARCH_REALVIEW) := realview |
| 86 | machine-$(CONFIG_ARCH_AT91) := at91 |
| 87 | machine-$(CONFIG_ARCH_EP93XX) := ep93xx |
| 88 | --- /dev/null |
| 89 | +++ b/arch/arm/configs/goldfish_defconfig |
| 90 | @@ -0,0 +1,1166 @@ |
| 91 | +# |
| 92 | +# Automatically generated make config: don't edit |
| 93 | +# Linux kernel version: 2.6.29 |
| 94 | +# Wed Apr 8 20:40:44 2009 |
| 95 | +# |
| 96 | +CONFIG_ARM=y |
| 97 | +CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
| 98 | +# CONFIG_GENERIC_GPIO is not set |
| 99 | +CONFIG_GENERIC_TIME=y |
| 100 | +CONFIG_GENERIC_CLOCKEVENTS=y |
| 101 | +CONFIG_MMU=y |
| 102 | +# CONFIG_NO_IOPORT is not set |
| 103 | +CONFIG_GENERIC_HARDIRQS=y |
| 104 | +CONFIG_STACKTRACE_SUPPORT=y |
| 105 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
| 106 | +CONFIG_LOCKDEP_SUPPORT=y |
| 107 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
| 108 | +CONFIG_HARDIRQS_SW_RESEND=y |
| 109 | +CONFIG_GENERIC_IRQ_PROBE=y |
| 110 | +CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 111 | +# CONFIG_ARCH_HAS_ILOG2_U32 is not set |
| 112 | +# CONFIG_ARCH_HAS_ILOG2_U64 is not set |
| 113 | +CONFIG_GENERIC_HWEIGHT=y |
| 114 | +CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 115 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
| 116 | +CONFIG_VECTORS_BASE=0xffff0000 |
| 117 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
| 118 | + |
| 119 | +# |
| 120 | +# General setup |
| 121 | +# |
| 122 | +CONFIG_EXPERIMENTAL=y |
| 123 | +CONFIG_BROKEN_ON_SMP=y |
| 124 | +CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 125 | +CONFIG_LOCALVERSION="" |
| 126 | +CONFIG_LOCALVERSION_AUTO=y |
| 127 | +CONFIG_SWAP=y |
| 128 | +CONFIG_SYSVIPC=y |
| 129 | +CONFIG_SYSVIPC_SYSCTL=y |
| 130 | +# CONFIG_POSIX_MQUEUE is not set |
| 131 | +# CONFIG_BSD_PROCESS_ACCT is not set |
| 132 | +# CONFIG_TASKSTATS is not set |
| 133 | +# CONFIG_AUDIT is not set |
| 134 | + |
| 135 | +# |
| 136 | +# RCU Subsystem |
| 137 | +# |
| 138 | +CONFIG_CLASSIC_RCU=y |
| 139 | +# CONFIG_TREE_RCU is not set |
| 140 | +# CONFIG_PREEMPT_RCU is not set |
| 141 | +# CONFIG_TREE_RCU_TRACE is not set |
| 142 | +# CONFIG_PREEMPT_RCU_TRACE is not set |
| 143 | +CONFIG_IKCONFIG=y |
| 144 | +CONFIG_IKCONFIG_PROC=y |
| 145 | +CONFIG_LOG_BUF_SHIFT=16 |
| 146 | +# CONFIG_GROUP_SCHED is not set |
| 147 | +# CONFIG_CGROUPS is not set |
| 148 | +# CONFIG_SYSFS_DEPRECATED_V2 is not set |
| 149 | +# CONFIG_RELAY is not set |
| 150 | +CONFIG_NAMESPACES=y |
| 151 | +# CONFIG_UTS_NS is not set |
| 152 | +# CONFIG_IPC_NS is not set |
| 153 | +# CONFIG_USER_NS is not set |
| 154 | +# CONFIG_PID_NS is not set |
| 155 | +# CONFIG_NET_NS is not set |
| 156 | +CONFIG_BLK_DEV_INITRD=y |
| 157 | +CONFIG_INITRAMFS_SOURCE="" |
| 158 | +CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
| 159 | +CONFIG_SYSCTL=y |
| 160 | +CONFIG_ANON_INODES=y |
| 161 | +CONFIG_PANIC_TIMEOUT=0 |
| 162 | +# CONFIG_EMBEDDED is not set |
| 163 | +CONFIG_UID16=y |
| 164 | +CONFIG_SYSCTL_SYSCALL=y |
| 165 | +CONFIG_KALLSYMS=y |
| 166 | +# CONFIG_KALLSYMS_ALL is not set |
| 167 | +# CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 168 | +CONFIG_HOTPLUG=y |
| 169 | +CONFIG_PRINTK=y |
| 170 | +CONFIG_BUG=y |
| 171 | +CONFIG_ELF_CORE=y |
| 172 | +CONFIG_BASE_FULL=y |
| 173 | +CONFIG_FUTEX=y |
| 174 | +CONFIG_EPOLL=y |
| 175 | +CONFIG_SIGNALFD=y |
| 176 | +CONFIG_TIMERFD=y |
| 177 | +CONFIG_EVENTFD=y |
| 178 | +CONFIG_SHMEM=y |
| 179 | +CONFIG_AIO=y |
| 180 | +CONFIG_ASHMEM=y |
| 181 | +CONFIG_VM_EVENT_COUNTERS=y |
| 182 | +CONFIG_COMPAT_BRK=y |
| 183 | +CONFIG_SLAB=y |
| 184 | +# CONFIG_SLUB is not set |
| 185 | +# CONFIG_SLOB is not set |
| 186 | +# CONFIG_PROFILING is not set |
| 187 | +CONFIG_HAVE_OPROFILE=y |
| 188 | +CONFIG_HAVE_KPROBES=y |
| 189 | +CONFIG_HAVE_KRETPROBES=y |
| 190 | +CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
| 191 | +CONFIG_SLABINFO=y |
| 192 | +CONFIG_RT_MUTEXES=y |
| 193 | +CONFIG_BASE_SMALL=0 |
| 194 | +# CONFIG_MODULES is not set |
| 195 | +CONFIG_BLOCK=y |
| 196 | +# CONFIG_LBD is not set |
| 197 | +# CONFIG_BLK_DEV_IO_TRACE is not set |
| 198 | +# CONFIG_BLK_DEV_BSG is not set |
| 199 | +# CONFIG_BLK_DEV_INTEGRITY is not set |
| 200 | + |
| 201 | +# |
| 202 | +# IO Schedulers |
| 203 | +# |
| 204 | +CONFIG_IOSCHED_NOOP=y |
| 205 | +CONFIG_IOSCHED_AS=y |
| 206 | +CONFIG_IOSCHED_DEADLINE=y |
| 207 | +CONFIG_IOSCHED_CFQ=y |
| 208 | +CONFIG_DEFAULT_AS=y |
| 209 | +# CONFIG_DEFAULT_DEADLINE is not set |
| 210 | +# CONFIG_DEFAULT_CFQ is not set |
| 211 | +# CONFIG_DEFAULT_NOOP is not set |
| 212 | +CONFIG_DEFAULT_IOSCHED="anticipatory" |
| 213 | +CONFIG_FREEZER=y |
| 214 | + |
| 215 | +# |
| 216 | +# System Type |
| 217 | +# |
| 218 | +# CONFIG_ARCH_AAEC2000 is not set |
| 219 | +CONFIG_ARCH_GOLDFISH=y |
| 220 | +# CONFIG_ARCH_INTEGRATOR is not set |
| 221 | +# CONFIG_ARCH_REALVIEW is not set |
| 222 | +# CONFIG_ARCH_VERSATILE is not set |
| 223 | +# CONFIG_ARCH_AT91 is not set |
| 224 | +# CONFIG_ARCH_CLPS711X is not set |
| 225 | +# CONFIG_ARCH_EBSA110 is not set |
| 226 | +# CONFIG_ARCH_EP93XX is not set |
| 227 | +# CONFIG_ARCH_FOOTBRIDGE is not set |
| 228 | +# CONFIG_ARCH_NETX is not set |
| 229 | +# CONFIG_ARCH_H720X is not set |
| 230 | +# CONFIG_ARCH_IMX is not set |
| 231 | +# CONFIG_ARCH_IOP13XX is not set |
| 232 | +# CONFIG_ARCH_IOP32X is not set |
| 233 | +# CONFIG_ARCH_IOP33X is not set |
| 234 | +# CONFIG_ARCH_IXP23XX is not set |
| 235 | +# CONFIG_ARCH_IXP2000 is not set |
| 236 | +# CONFIG_ARCH_IXP4XX is not set |
| 237 | +# CONFIG_ARCH_L7200 is not set |
| 238 | +# CONFIG_ARCH_KIRKWOOD is not set |
| 239 | +# CONFIG_ARCH_KS8695 is not set |
| 240 | +# CONFIG_ARCH_NS9XXX is not set |
| 241 | +# CONFIG_ARCH_LOKI is not set |
| 242 | +# CONFIG_ARCH_MV78XX0 is not set |
| 243 | +# CONFIG_ARCH_MXC is not set |
| 244 | +# CONFIG_ARCH_ORION5X is not set |
| 245 | +# CONFIG_ARCH_PNX4008 is not set |
| 246 | +# CONFIG_ARCH_PXA is not set |
| 247 | +# CONFIG_ARCH_RPC is not set |
| 248 | +# CONFIG_ARCH_SA1100 is not set |
| 249 | +# CONFIG_ARCH_S3C2410 is not set |
| 250 | +# CONFIG_ARCH_S3C64XX is not set |
| 251 | +# CONFIG_ARCH_SHARK is not set |
| 252 | +# CONFIG_ARCH_LH7A40X is not set |
| 253 | +# CONFIG_ARCH_DAVINCI is not set |
| 254 | +# CONFIG_ARCH_OMAP is not set |
| 255 | +# CONFIG_ARCH_MSM is not set |
| 256 | +# CONFIG_ARCH_W90X900 is not set |
| 257 | + |
| 258 | +# |
| 259 | +# Goldfish Options |
| 260 | +# |
| 261 | +CONFIG_MACH_GOLDFISH=y |
| 262 | + |
| 263 | +# |
| 264 | +# Processor Type |
| 265 | +# |
| 266 | +CONFIG_CPU_32=y |
| 267 | +CONFIG_CPU_ARM926T=y |
| 268 | +CONFIG_CPU_32v5=y |
| 269 | +CONFIG_CPU_ABRT_EV5TJ=y |
| 270 | +CONFIG_CPU_PABRT_NOIFAR=y |
| 271 | +CONFIG_CPU_CACHE_VIVT=y |
| 272 | +CONFIG_CPU_COPY_V4WB=y |
| 273 | +CONFIG_CPU_TLB_V4WBI=y |
| 274 | +CONFIG_CPU_CP15=y |
| 275 | +CONFIG_CPU_CP15_MMU=y |
| 276 | + |
| 277 | +# |
| 278 | +# Processor Features |
| 279 | +# |
| 280 | +CONFIG_ARM_THUMB=y |
| 281 | +# CONFIG_CPU_ICACHE_DISABLE is not set |
| 282 | +# CONFIG_CPU_DCACHE_DISABLE is not set |
| 283 | +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set |
| 284 | +# CONFIG_CPU_CACHE_ROUND_ROBIN is not set |
| 285 | +# CONFIG_OUTER_CACHE is not set |
| 286 | + |
| 287 | +# |
| 288 | +# Bus support |
| 289 | +# |
| 290 | +# CONFIG_PCI_SYSCALL is not set |
| 291 | +# CONFIG_ARCH_SUPPORTS_MSI is not set |
| 292 | +# CONFIG_PCCARD is not set |
| 293 | + |
| 294 | +# |
| 295 | +# Kernel Features |
| 296 | +# |
| 297 | +CONFIG_TICK_ONESHOT=y |
| 298 | +CONFIG_NO_HZ=y |
| 299 | +CONFIG_HIGH_RES_TIMERS=y |
| 300 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
| 301 | +CONFIG_VMSPLIT_3G=y |
| 302 | +# CONFIG_VMSPLIT_2G is not set |
| 303 | +# CONFIG_VMSPLIT_1G is not set |
| 304 | +CONFIG_PAGE_OFFSET=0xC0000000 |
| 305 | +# CONFIG_PREEMPT is not set |
| 306 | +CONFIG_HZ=100 |
| 307 | +CONFIG_AEABI=y |
| 308 | +# CONFIG_OABI_COMPAT is not set |
| 309 | +CONFIG_ARCH_FLATMEM_HAS_HOLES=y |
| 310 | +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
| 311 | +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set |
| 312 | +CONFIG_SELECT_MEMORY_MODEL=y |
| 313 | +CONFIG_FLATMEM_MANUAL=y |
| 314 | +# CONFIG_DISCONTIGMEM_MANUAL is not set |
| 315 | +# CONFIG_SPARSEMEM_MANUAL is not set |
| 316 | +CONFIG_FLATMEM=y |
| 317 | +CONFIG_FLAT_NODE_MEM_MAP=y |
| 318 | +CONFIG_PAGEFLAGS_EXTENDED=y |
| 319 | +CONFIG_SPLIT_PTLOCK_CPUS=4096 |
| 320 | +# CONFIG_PHYS_ADDR_T_64BIT is not set |
| 321 | +CONFIG_ZONE_DMA_FLAG=0 |
| 322 | +CONFIG_VIRT_TO_BUS=y |
| 323 | +CONFIG_UNEVICTABLE_LRU=y |
| 324 | +CONFIG_ALIGNMENT_TRAP=y |
| 325 | + |
| 326 | +# |
| 327 | +# Boot options |
| 328 | +# |
| 329 | +CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 330 | +CONFIG_ZBOOT_ROM_BSS=0x0 |
| 331 | +CONFIG_CMDLINE="" |
| 332 | +# CONFIG_XIP_KERNEL is not set |
| 333 | +# CONFIG_KEXEC is not set |
| 334 | + |
| 335 | +# |
| 336 | +# CPU Power Management |
| 337 | +# |
| 338 | +# CONFIG_CPU_IDLE is not set |
| 339 | + |
| 340 | +# |
| 341 | +# Floating point emulation |
| 342 | +# |
| 343 | + |
| 344 | +# |
| 345 | +# At least one emulation must be selected |
| 346 | +# |
| 347 | +CONFIG_VFP=y |
| 348 | + |
| 349 | +# |
| 350 | +# Userspace binary formats |
| 351 | +# |
| 352 | +CONFIG_BINFMT_ELF=y |
| 353 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
| 354 | +CONFIG_HAVE_AOUT=y |
| 355 | +# CONFIG_BINFMT_AOUT is not set |
| 356 | +CONFIG_BINFMT_MISC=y |
| 357 | + |
| 358 | +# |
| 359 | +# Power management options |
| 360 | +# |
| 361 | +CONFIG_PM=y |
| 362 | +# CONFIG_PM_DEBUG is not set |
| 363 | +CONFIG_PM_SLEEP=y |
| 364 | +CONFIG_SUSPEND=y |
| 365 | +CONFIG_SUSPEND_FREEZER=y |
| 366 | +CONFIG_HAS_WAKELOCK=y |
| 367 | +CONFIG_HAS_EARLYSUSPEND=y |
| 368 | +CONFIG_WAKELOCK=y |
| 369 | +CONFIG_WAKELOCK_STAT=y |
| 370 | +CONFIG_USER_WAKELOCK=y |
| 371 | +CONFIG_EARLYSUSPEND=y |
| 372 | +# CONFIG_NO_USER_SPACE_SCREEN_ACCESS_CONTROL is not set |
| 373 | +CONFIG_CONSOLE_EARLYSUSPEND=y |
| 374 | +# CONFIG_FB_EARLYSUSPEND is not set |
| 375 | +# CONFIG_APM_EMULATION is not set |
| 376 | +CONFIG_ARCH_SUSPEND_POSSIBLE=y |
| 377 | +CONFIG_NET=y |
| 378 | + |
| 379 | +# |
| 380 | +# Networking options |
| 381 | +# |
| 382 | +CONFIG_COMPAT_NET_DEV_OPS=y |
| 383 | +CONFIG_PACKET=y |
| 384 | +CONFIG_PACKET_MMAP=y |
| 385 | +CONFIG_UNIX=y |
| 386 | +CONFIG_XFRM=y |
| 387 | +# CONFIG_XFRM_USER is not set |
| 388 | +# CONFIG_XFRM_SUB_POLICY is not set |
| 389 | +# CONFIG_XFRM_MIGRATE is not set |
| 390 | +# CONFIG_XFRM_STATISTICS is not set |
| 391 | +CONFIG_XFRM_IPCOMP=y |
| 392 | +# CONFIG_NET_KEY is not set |
| 393 | +CONFIG_INET=y |
| 394 | +CONFIG_IP_MULTICAST=y |
| 395 | +# CONFIG_IP_ADVANCED_ROUTER is not set |
| 396 | +CONFIG_IP_FIB_HASH=y |
| 397 | +CONFIG_IP_PNP=y |
| 398 | +CONFIG_IP_PNP_DHCP=y |
| 399 | +CONFIG_IP_PNP_BOOTP=y |
| 400 | +# CONFIG_IP_PNP_RARP is not set |
| 401 | +CONFIG_NET_IPIP=y |
| 402 | +CONFIG_NET_IPGRE=y |
| 403 | +CONFIG_NET_IPGRE_BROADCAST=y |
| 404 | +CONFIG_IP_MROUTE=y |
| 405 | +CONFIG_IP_PIMSM_V1=y |
| 406 | +CONFIG_IP_PIMSM_V2=y |
| 407 | +CONFIG_ARPD=y |
| 408 | +CONFIG_SYN_COOKIES=y |
| 409 | +CONFIG_INET_AH=y |
| 410 | +CONFIG_INET_ESP=y |
| 411 | +CONFIG_INET_IPCOMP=y |
| 412 | +CONFIG_INET_XFRM_TUNNEL=y |
| 413 | +CONFIG_INET_TUNNEL=y |
| 414 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y |
| 415 | +CONFIG_INET_XFRM_MODE_TUNNEL=y |
| 416 | +CONFIG_INET_XFRM_MODE_BEET=y |
| 417 | +# CONFIG_INET_LRO is not set |
| 418 | +CONFIG_INET_DIAG=y |
| 419 | +CONFIG_INET_TCP_DIAG=y |
| 420 | +# CONFIG_TCP_CONG_ADVANCED is not set |
| 421 | +CONFIG_TCP_CONG_CUBIC=y |
| 422 | +CONFIG_DEFAULT_TCP_CONG="cubic" |
| 423 | +# CONFIG_TCP_MD5SIG is not set |
| 424 | +# CONFIG_IPV6 is not set |
| 425 | +CONFIG_ANDROID_PARANOID_NETWORK=y |
| 426 | +# CONFIG_NETWORK_SECMARK is not set |
| 427 | +# CONFIG_NETFILTER is not set |
| 428 | +# CONFIG_IP_DCCP is not set |
| 429 | +# CONFIG_IP_SCTP is not set |
| 430 | +# CONFIG_TIPC is not set |
| 431 | +# CONFIG_ATM is not set |
| 432 | +CONFIG_STP=y |
| 433 | +CONFIG_BRIDGE=y |
| 434 | +# CONFIG_NET_DSA is not set |
| 435 | +CONFIG_VLAN_8021Q=y |
| 436 | +# CONFIG_VLAN_8021Q_GVRP is not set |
| 437 | +# CONFIG_DECNET is not set |
| 438 | +CONFIG_LLC=y |
| 439 | +# CONFIG_LLC2 is not set |
| 440 | +# CONFIG_IPX is not set |
| 441 | +# CONFIG_ATALK is not set |
| 442 | +# CONFIG_X25 is not set |
| 443 | +# CONFIG_LAPB is not set |
| 444 | +# CONFIG_ECONET is not set |
| 445 | +# CONFIG_WAN_ROUTER is not set |
| 446 | +# CONFIG_NET_SCHED is not set |
| 447 | +# CONFIG_DCB is not set |
| 448 | + |
| 449 | +# |
| 450 | +# Network testing |
| 451 | +# |
| 452 | +# CONFIG_NET_PKTGEN is not set |
| 453 | +# CONFIG_HAMRADIO is not set |
| 454 | +# CONFIG_CAN is not set |
| 455 | +# CONFIG_IRDA is not set |
| 456 | +# CONFIG_BT is not set |
| 457 | +# CONFIG_AF_RXRPC is not set |
| 458 | +# CONFIG_PHONET is not set |
| 459 | +CONFIG_WIRELESS=y |
| 460 | +# CONFIG_CFG80211 is not set |
| 461 | +CONFIG_WIRELESS_OLD_REGULATORY=y |
| 462 | +# CONFIG_WIRELESS_EXT is not set |
| 463 | +# CONFIG_LIB80211 is not set |
| 464 | +# CONFIG_MAC80211 is not set |
| 465 | +# CONFIG_WIMAX is not set |
| 466 | +# CONFIG_RFKILL is not set |
| 467 | +# CONFIG_NET_9P is not set |
| 468 | + |
| 469 | +# |
| 470 | +# Device Drivers |
| 471 | +# |
| 472 | + |
| 473 | +# |
| 474 | +# Generic Driver Options |
| 475 | +# |
| 476 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 477 | +CONFIG_STANDALONE=y |
| 478 | +CONFIG_PREVENT_FIRMWARE_BUILD=y |
| 479 | +CONFIG_FW_LOADER=y |
| 480 | +CONFIG_FIRMWARE_IN_KERNEL=y |
| 481 | +CONFIG_EXTRA_FIRMWARE="" |
| 482 | +# CONFIG_DEBUG_DRIVER is not set |
| 483 | +# CONFIG_DEBUG_DEVRES is not set |
| 484 | +# CONFIG_SYS_HYPERVISOR is not set |
| 485 | +CONFIG_CONNECTOR=y |
| 486 | +CONFIG_PROC_EVENTS=y |
| 487 | +CONFIG_MTD=y |
| 488 | +# CONFIG_MTD_DEBUG is not set |
| 489 | +# CONFIG_MTD_CONCAT is not set |
| 490 | +# CONFIG_MTD_PARTITIONS is not set |
| 491 | + |
| 492 | +# |
| 493 | +# User Modules And Translation Layers |
| 494 | +# |
| 495 | +CONFIG_MTD_CHAR=y |
| 496 | +CONFIG_MTD_BLKDEVS=y |
| 497 | +CONFIG_MTD_BLOCK=y |
| 498 | +# CONFIG_FTL is not set |
| 499 | +# CONFIG_NFTL is not set |
| 500 | +# CONFIG_INFTL is not set |
| 501 | +# CONFIG_RFD_FTL is not set |
| 502 | +# CONFIG_SSFDC is not set |
| 503 | +# CONFIG_MTD_OOPS is not set |
| 504 | + |
| 505 | +# |
| 506 | +# RAM/ROM/Flash chip drivers |
| 507 | +# |
| 508 | +# CONFIG_MTD_CFI is not set |
| 509 | +# CONFIG_MTD_JEDECPROBE is not set |
| 510 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y |
| 511 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y |
| 512 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y |
| 513 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set |
| 514 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set |
| 515 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set |
| 516 | +CONFIG_MTD_CFI_I1=y |
| 517 | +CONFIG_MTD_CFI_I2=y |
| 518 | +# CONFIG_MTD_CFI_I4 is not set |
| 519 | +# CONFIG_MTD_CFI_I8 is not set |
| 520 | +# CONFIG_MTD_RAM is not set |
| 521 | +# CONFIG_MTD_ROM is not set |
| 522 | +# CONFIG_MTD_ABSENT is not set |
| 523 | + |
| 524 | +# |
| 525 | +# Mapping drivers for chip access |
| 526 | +# |
| 527 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set |
| 528 | +# CONFIG_MTD_PLATRAM is not set |
| 529 | + |
| 530 | +# |
| 531 | +# Self-contained MTD device drivers |
| 532 | +# |
| 533 | +# CONFIG_MTD_SLRAM is not set |
| 534 | +# CONFIG_MTD_PHRAM is not set |
| 535 | +# CONFIG_MTD_MTDRAM is not set |
| 536 | +# CONFIG_MTD_BLOCK2MTD is not set |
| 537 | + |
| 538 | +# |
| 539 | +# Disk-On-Chip Device Drivers |
| 540 | +# |
| 541 | +# CONFIG_MTD_DOC2000 is not set |
| 542 | +# CONFIG_MTD_DOC2001 is not set |
| 543 | +# CONFIG_MTD_DOC2001PLUS is not set |
| 544 | +CONFIG_MTD_GOLDFISH_NAND=y |
| 545 | +# CONFIG_MTD_NAND is not set |
| 546 | +# CONFIG_MTD_ONENAND is not set |
| 547 | + |
| 548 | +# |
| 549 | +# LPDDR flash memory drivers |
| 550 | +# |
| 551 | +# CONFIG_MTD_LPDDR is not set |
| 552 | + |
| 553 | +# |
| 554 | +# UBI - Unsorted block images |
| 555 | +# |
| 556 | +# CONFIG_MTD_UBI is not set |
| 557 | +# CONFIG_PARPORT is not set |
| 558 | +CONFIG_BLK_DEV=y |
| 559 | +# CONFIG_BLK_DEV_COW_COMMON is not set |
| 560 | +CONFIG_BLK_DEV_LOOP=y |
| 561 | +# CONFIG_BLK_DEV_CRYPTOLOOP is not set |
| 562 | +CONFIG_BLK_DEV_NBD=y |
| 563 | +CONFIG_BLK_DEV_RAM=y |
| 564 | +CONFIG_BLK_DEV_RAM_COUNT=16 |
| 565 | +CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 566 | +# CONFIG_BLK_DEV_XIP is not set |
| 567 | +# CONFIG_CDROM_PKTCDVD is not set |
| 568 | +# CONFIG_ATA_OVER_ETH is not set |
| 569 | +CONFIG_MISC_DEVICES=y |
| 570 | +CONFIG_ANDROID_PMEM=y |
| 571 | +# CONFIG_ENCLOSURE_SERVICES is not set |
| 572 | +# CONFIG_KERNEL_DEBUGGER_CORE is not set |
| 573 | +# CONFIG_UID_STAT is not set |
| 574 | +CONFIG_QEMU_TRACE=y |
| 575 | +# CONFIG_C2PORT is not set |
| 576 | + |
| 577 | +# |
| 578 | +# EEPROM support |
| 579 | +# |
| 580 | +# CONFIG_EEPROM_93CX6 is not set |
| 581 | +CONFIG_HAVE_IDE=y |
| 582 | +# CONFIG_IDE is not set |
| 583 | + |
| 584 | +# |
| 585 | +# SCSI device support |
| 586 | +# |
| 587 | +# CONFIG_RAID_ATTRS is not set |
| 588 | +# CONFIG_SCSI is not set |
| 589 | +# CONFIG_SCSI_DMA is not set |
| 590 | +# CONFIG_SCSI_NETLINK is not set |
| 591 | +# CONFIG_ATA is not set |
| 592 | +# CONFIG_MD is not set |
| 593 | +CONFIG_NETDEVICES=y |
| 594 | +# CONFIG_DUMMY is not set |
| 595 | +# CONFIG_BONDING is not set |
| 596 | +# CONFIG_MACVLAN is not set |
| 597 | +# CONFIG_EQUALIZER is not set |
| 598 | +# CONFIG_TUN is not set |
| 599 | +# CONFIG_VETH is not set |
| 600 | +# CONFIG_PHYLIB is not set |
| 601 | +CONFIG_NET_ETHERNET=y |
| 602 | +CONFIG_MII=y |
| 603 | +# CONFIG_AX88796 is not set |
| 604 | +CONFIG_SMC91X=y |
| 605 | +# CONFIG_DM9000 is not set |
| 606 | +# CONFIG_SMC911X is not set |
| 607 | +# CONFIG_SMSC911X is not set |
| 608 | +# CONFIG_DNET is not set |
| 609 | +# CONFIG_IBM_NEW_EMAC_ZMII is not set |
| 610 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set |
| 611 | +# CONFIG_IBM_NEW_EMAC_TAH is not set |
| 612 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
| 613 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set |
| 614 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set |
| 615 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set |
| 616 | +# CONFIG_B44 is not set |
| 617 | +CONFIG_NETDEV_1000=y |
| 618 | +CONFIG_NETDEV_10000=y |
| 619 | + |
| 620 | +# |
| 621 | +# Wireless LAN |
| 622 | +# |
| 623 | +# CONFIG_WLAN_PRE80211 is not set |
| 624 | +# CONFIG_WLAN_80211 is not set |
| 625 | +# CONFIG_IWLWIFI_LEDS is not set |
| 626 | + |
| 627 | +# |
| 628 | +# Enable WiMAX (Networking options) to see the WiMAX drivers |
| 629 | +# |
| 630 | +# CONFIG_WAN is not set |
| 631 | +# CONFIG_PPP is not set |
| 632 | +# CONFIG_SLIP is not set |
| 633 | +# CONFIG_NETCONSOLE is not set |
| 634 | +# CONFIG_NETPOLL is not set |
| 635 | +# CONFIG_NET_POLL_CONTROLLER is not set |
| 636 | +# CONFIG_ISDN is not set |
| 637 | + |
| 638 | +# |
| 639 | +# Input device support |
| 640 | +# |
| 641 | +CONFIG_INPUT=y |
| 642 | +# CONFIG_INPUT_FF_MEMLESS is not set |
| 643 | +# CONFIG_INPUT_POLLDEV is not set |
| 644 | + |
| 645 | +# |
| 646 | +# Userland interfaces |
| 647 | +# |
| 648 | +CONFIG_INPUT_MOUSEDEV=y |
| 649 | +CONFIG_INPUT_MOUSEDEV_PSAUX=y |
| 650 | +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
| 651 | +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
| 652 | +# CONFIG_INPUT_JOYDEV is not set |
| 653 | +CONFIG_INPUT_EVDEV=y |
| 654 | +# CONFIG_INPUT_EVBUG is not set |
| 655 | +# CONFIG_INPUT_KEYRESET is not set |
| 656 | + |
| 657 | +# |
| 658 | +# Input Device Drivers |
| 659 | +# |
| 660 | +CONFIG_INPUT_KEYBOARD=y |
| 661 | +CONFIG_KEYBOARD_ATKBD=y |
| 662 | +# CONFIG_KEYBOARD_SUNKBD is not set |
| 663 | +# CONFIG_KEYBOARD_LKKBD is not set |
| 664 | +# CONFIG_KEYBOARD_XTKBD is not set |
| 665 | +# CONFIG_KEYBOARD_NEWTON is not set |
| 666 | +# CONFIG_KEYBOARD_STOWAWAY is not set |
| 667 | +CONFIG_KEYBOARD_GOLDFISH_EVENTS=y |
| 668 | +# CONFIG_INPUT_MOUSE is not set |
| 669 | +# CONFIG_INPUT_JOYSTICK is not set |
| 670 | +# CONFIG_INPUT_TABLET is not set |
| 671 | +# CONFIG_INPUT_TOUCHSCREEN is not set |
| 672 | +CONFIG_INPUT_MISC=y |
| 673 | +# CONFIG_INPUT_ATI_REMOTE is not set |
| 674 | +# CONFIG_INPUT_ATI_REMOTE2 is not set |
| 675 | +# CONFIG_INPUT_KEYSPAN_REMOTE is not set |
| 676 | +# CONFIG_INPUT_POWERMATE is not set |
| 677 | +# CONFIG_INPUT_YEALINK is not set |
| 678 | +# CONFIG_INPUT_CM109 is not set |
| 679 | +# CONFIG_INPUT_UINPUT is not set |
| 680 | +# CONFIG_INPUT_GPIO is not set |
| 681 | +# CONFIG_INPUT_KEYCHORD is not set |
| 682 | + |
| 683 | +# |
| 684 | +# Hardware I/O ports |
| 685 | +# |
| 686 | +CONFIG_SERIO=y |
| 687 | +# CONFIG_SERIO_SERPORT is not set |
| 688 | +CONFIG_SERIO_LIBPS2=y |
| 689 | +# CONFIG_SERIO_RAW is not set |
| 690 | +# CONFIG_GAMEPORT is not set |
| 691 | + |
| 692 | +# |
| 693 | +# Character devices |
| 694 | +# |
| 695 | +CONFIG_VT=y |
| 696 | +CONFIG_CONSOLE_TRANSLATIONS=y |
| 697 | +CONFIG_VT_CONSOLE=y |
| 698 | +CONFIG_HW_CONSOLE=y |
| 699 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set |
| 700 | +CONFIG_DEVMEM=y |
| 701 | +CONFIG_DEVKMEM=y |
| 702 | +# CONFIG_SERIAL_NONSTANDARD is not set |
| 703 | + |
| 704 | +# |
| 705 | +# Serial drivers |
| 706 | +# |
| 707 | +# CONFIG_SERIAL_8250 is not set |
| 708 | + |
| 709 | +# |
| 710 | +# Non-8250 serial port support |
| 711 | +# |
| 712 | +CONFIG_UNIX98_PTYS=y |
| 713 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
| 714 | +# CONFIG_LEGACY_PTYS is not set |
| 715 | +# CONFIG_IPMI_HANDLER is not set |
| 716 | +CONFIG_HW_RANDOM=y |
| 717 | +# CONFIG_R3964 is not set |
| 718 | +# CONFIG_RAW_DRIVER is not set |
| 719 | +# CONFIG_TCG_TPM is not set |
| 720 | +# CONFIG_DCC_TTY is not set |
| 721 | +CONFIG_GOLDFISH_TTY=y |
| 722 | +# CONFIG_I2C is not set |
| 723 | +# CONFIG_SPI is not set |
| 724 | +# CONFIG_W1 is not set |
| 725 | +CONFIG_POWER_SUPPLY=y |
| 726 | +# CONFIG_POWER_SUPPLY_DEBUG is not set |
| 727 | +# CONFIG_PDA_POWER is not set |
| 728 | +# CONFIG_BATTERY_DS2760 is not set |
| 729 | +CONFIG_BATTERY_GOLDFISH=y |
| 730 | +# CONFIG_HWMON is not set |
| 731 | +# CONFIG_THERMAL is not set |
| 732 | +# CONFIG_THERMAL_HWMON is not set |
| 733 | +# CONFIG_WATCHDOG is not set |
| 734 | +CONFIG_SSB_POSSIBLE=y |
| 735 | + |
| 736 | +# |
| 737 | +# Sonics Silicon Backplane |
| 738 | +# |
| 739 | +# CONFIG_SSB is not set |
| 740 | + |
| 741 | +# |
| 742 | +# Multifunction device drivers |
| 743 | +# |
| 744 | +# CONFIG_MFD_CORE is not set |
| 745 | +# CONFIG_MFD_SM501 is not set |
| 746 | +# CONFIG_HTC_PASIC3 is not set |
| 747 | +# CONFIG_MFD_TMIO is not set |
| 748 | + |
| 749 | +# |
| 750 | +# Multimedia devices |
| 751 | +# |
| 752 | + |
| 753 | +# |
| 754 | +# Multimedia core support |
| 755 | +# |
| 756 | +# CONFIG_VIDEO_DEV is not set |
| 757 | +# CONFIG_DVB_CORE is not set |
| 758 | +# CONFIG_VIDEO_MEDIA is not set |
| 759 | + |
| 760 | +# |
| 761 | +# Multimedia drivers |
| 762 | +# |
| 763 | +# CONFIG_DAB is not set |
| 764 | + |
| 765 | +# |
| 766 | +# Graphics support |
| 767 | +# |
| 768 | +# CONFIG_VGASTATE is not set |
| 769 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set |
| 770 | +CONFIG_FB=y |
| 771 | +# CONFIG_FIRMWARE_EDID is not set |
| 772 | +# CONFIG_FB_DDC is not set |
| 773 | +# CONFIG_FB_BOOT_VESA_SUPPORT is not set |
| 774 | +CONFIG_FB_CFB_FILLRECT=y |
| 775 | +CONFIG_FB_CFB_COPYAREA=y |
| 776 | +CONFIG_FB_CFB_IMAGEBLIT=y |
| 777 | +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
| 778 | +# CONFIG_FB_SYS_FILLRECT is not set |
| 779 | +# CONFIG_FB_SYS_COPYAREA is not set |
| 780 | +# CONFIG_FB_SYS_IMAGEBLIT is not set |
| 781 | +# CONFIG_FB_FOREIGN_ENDIAN is not set |
| 782 | +# CONFIG_FB_SYS_FOPS is not set |
| 783 | +# CONFIG_FB_SVGALIB is not set |
| 784 | +# CONFIG_FB_MACMODES is not set |
| 785 | +# CONFIG_FB_BACKLIGHT is not set |
| 786 | +CONFIG_FB_MODE_HELPERS=y |
| 787 | +CONFIG_FB_TILEBLITTING=y |
| 788 | + |
| 789 | +# |
| 790 | +# Frame buffer hardware drivers |
| 791 | +# |
| 792 | +# CONFIG_FB_UVESA is not set |
| 793 | +# CONFIG_FB_S1D13XXX is not set |
| 794 | +CONFIG_FB_GOLDFISH=y |
| 795 | +# CONFIG_FB_VIRTUAL is not set |
| 796 | +# CONFIG_FB_METRONOME is not set |
| 797 | +# CONFIG_FB_MB862XX is not set |
| 798 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
| 799 | + |
| 800 | +# |
| 801 | +# Display device support |
| 802 | +# |
| 803 | +# CONFIG_DISPLAY_SUPPORT is not set |
| 804 | + |
| 805 | +# |
| 806 | +# Console display driver support |
| 807 | +# |
| 808 | +# CONFIG_VGA_CONSOLE is not set |
| 809 | +CONFIG_DUMMY_CONSOLE=y |
| 810 | +CONFIG_FRAMEBUFFER_CONSOLE=y |
| 811 | +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set |
| 812 | +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
| 813 | +# CONFIG_FONTS is not set |
| 814 | +CONFIG_FONT_8x8=y |
| 815 | +CONFIG_FONT_8x16=y |
| 816 | +# CONFIG_LOGO is not set |
| 817 | +# CONFIG_SOUND is not set |
| 818 | +CONFIG_HID_SUPPORT=y |
| 819 | +CONFIG_HID=y |
| 820 | +# CONFIG_HID_DEBUG is not set |
| 821 | +# CONFIG_HIDRAW is not set |
| 822 | +# CONFIG_HID_PID is not set |
| 823 | + |
| 824 | +# |
| 825 | +# Special HID drivers |
| 826 | +# |
| 827 | +CONFIG_HID_COMPAT=y |
| 828 | +CONFIG_USB_SUPPORT=y |
| 829 | +CONFIG_USB_ARCH_HAS_HCD=y |
| 830 | +# CONFIG_USB_ARCH_HAS_OHCI is not set |
| 831 | +# CONFIG_USB_ARCH_HAS_EHCI is not set |
| 832 | +# CONFIG_USB is not set |
| 833 | + |
| 834 | +# |
| 835 | +# Enable Host or Gadget support to see Inventra options |
| 836 | +# |
| 837 | + |
| 838 | +# |
| 839 | +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
| 840 | +# |
| 841 | +# CONFIG_USB_GADGET is not set |
| 842 | + |
| 843 | +# |
| 844 | +# OTG and related infrastructure |
| 845 | +# |
| 846 | +CONFIG_MMC=y |
| 847 | +# CONFIG_MMC_DEBUG is not set |
| 848 | +# CONFIG_MMC_UNSAFE_RESUME is not set |
| 849 | +# CONFIG_MMC_EMBEDDED_SDIO is not set |
| 850 | +# CONFIG_MMC_PARANOID_SD_INIT is not set |
| 851 | + |
| 852 | +# |
| 853 | +# MMC/SD/SDIO Card Drivers |
| 854 | +# |
| 855 | +CONFIG_MMC_BLOCK=y |
| 856 | +CONFIG_MMC_BLOCK_BOUNCE=y |
| 857 | +CONFIG_MMC_BLOCK_PARANOID_RESUME=y |
| 858 | +# CONFIG_SDIO_UART is not set |
| 859 | +# CONFIG_MMC_TEST is not set |
| 860 | + |
| 861 | +# |
| 862 | +# MMC/SD/SDIO Host Controller Drivers |
| 863 | +# |
| 864 | +# CONFIG_MMC_SDHCI is not set |
| 865 | +CONFIG_MMC_GOLDFISH=y |
| 866 | +# CONFIG_MEMSTICK is not set |
| 867 | +# CONFIG_ACCESSIBILITY is not set |
| 868 | +# CONFIG_NEW_LEDS is not set |
| 869 | +# CONFIG_SWITCH is not set |
| 870 | +CONFIG_RTC_LIB=y |
| 871 | +CONFIG_RTC_CLASS=y |
| 872 | +CONFIG_RTC_HCTOSYS=y |
| 873 | +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
| 874 | +# CONFIG_RTC_DEBUG is not set |
| 875 | + |
| 876 | +# |
| 877 | +# RTC interfaces |
| 878 | +# |
| 879 | +CONFIG_RTC_INTF_SYSFS=y |
| 880 | +CONFIG_RTC_INTF_PROC=y |
| 881 | +CONFIG_RTC_INTF_DEV=y |
| 882 | +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set |
| 883 | +CONFIG_RTC_INTF_ALARM=y |
| 884 | +# CONFIG_RTC_DRV_TEST is not set |
| 885 | + |
| 886 | +# |
| 887 | +# SPI RTC drivers |
| 888 | +# |
| 889 | + |
| 890 | +# |
| 891 | +# Platform RTC drivers |
| 892 | +# |
| 893 | +# CONFIG_RTC_DRV_CMOS is not set |
| 894 | +# CONFIG_RTC_DRV_DS1286 is not set |
| 895 | +# CONFIG_RTC_DRV_DS1511 is not set |
| 896 | +# CONFIG_RTC_DRV_DS1553 is not set |
| 897 | +# CONFIG_RTC_DRV_DS1742 is not set |
| 898 | +# CONFIG_RTC_DRV_STK17TA8 is not set |
| 899 | +# CONFIG_RTC_DRV_M48T86 is not set |
| 900 | +# CONFIG_RTC_DRV_M48T35 is not set |
| 901 | +# CONFIG_RTC_DRV_M48T59 is not set |
| 902 | +# CONFIG_RTC_DRV_BQ4802 is not set |
| 903 | +# CONFIG_RTC_DRV_V3020 is not set |
| 904 | + |
| 905 | +# |
| 906 | +# on-CPU RTC drivers |
| 907 | +# |
| 908 | +CONFIG_RTC_DRV_GOLDFISH=y |
| 909 | +# CONFIG_DMADEVICES is not set |
| 910 | +# CONFIG_REGULATOR is not set |
| 911 | +# CONFIG_UIO is not set |
| 912 | +CONFIG_STAGING=y |
| 913 | +# CONFIG_STAGING_EXCLUDE_BUILD is not set |
| 914 | +# CONFIG_ECHO is not set |
| 915 | + |
| 916 | +# |
| 917 | +# Android |
| 918 | +# |
| 919 | +CONFIG_ANDROID=y |
| 920 | +CONFIG_ANDROID_BINDER_IPC=y |
| 921 | +CONFIG_ANDROID_LOGGER=y |
| 922 | +# CONFIG_ANDROID_RAM_CONSOLE is not set |
| 923 | +CONFIG_ANDROID_TIMED_OUTPUT=y |
| 924 | +CONFIG_ANDROID_LOW_MEMORY_KILLER=y |
| 925 | + |
| 926 | +# |
| 927 | +# File systems |
| 928 | +# |
| 929 | +# CONFIG_EXT2_FS is not set |
| 930 | +# CONFIG_EXT3_FS is not set |
| 931 | +# CONFIG_EXT4_FS is not set |
| 932 | +# CONFIG_REISERFS_FS is not set |
| 933 | +# CONFIG_JFS_FS is not set |
| 934 | +# CONFIG_FS_POSIX_ACL is not set |
| 935 | +CONFIG_FILE_LOCKING=y |
| 936 | +# CONFIG_XFS_FS is not set |
| 937 | +# CONFIG_OCFS2_FS is not set |
| 938 | +# CONFIG_BTRFS_FS is not set |
| 939 | +CONFIG_DNOTIFY=y |
| 940 | +CONFIG_INOTIFY=y |
| 941 | +CONFIG_INOTIFY_USER=y |
| 942 | +# CONFIG_QUOTA is not set |
| 943 | +# CONFIG_AUTOFS_FS is not set |
| 944 | +# CONFIG_AUTOFS4_FS is not set |
| 945 | +# CONFIG_FUSE_FS is not set |
| 946 | + |
| 947 | +# |
| 948 | +# CD-ROM/DVD Filesystems |
| 949 | +# |
| 950 | +# CONFIG_ISO9660_FS is not set |
| 951 | +# CONFIG_UDF_FS is not set |
| 952 | + |
| 953 | +# |
| 954 | +# DOS/FAT/NT Filesystems |
| 955 | +# |
| 956 | +CONFIG_FAT_FS=y |
| 957 | +CONFIG_MSDOS_FS=y |
| 958 | +CONFIG_VFAT_FS=y |
| 959 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 |
| 960 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" |
| 961 | +# CONFIG_NTFS_FS is not set |
| 962 | + |
| 963 | +# |
| 964 | +# Pseudo filesystems |
| 965 | +# |
| 966 | +CONFIG_PROC_FS=y |
| 967 | +CONFIG_PROC_SYSCTL=y |
| 968 | +CONFIG_PROC_PAGE_MONITOR=y |
| 969 | +CONFIG_SYSFS=y |
| 970 | +CONFIG_TMPFS=y |
| 971 | +# CONFIG_TMPFS_POSIX_ACL is not set |
| 972 | +# CONFIG_HUGETLB_PAGE is not set |
| 973 | +# CONFIG_CONFIGFS_FS is not set |
| 974 | +CONFIG_MISC_FILESYSTEMS=y |
| 975 | +# CONFIG_ADFS_FS is not set |
| 976 | +# CONFIG_AFFS_FS is not set |
| 977 | +# CONFIG_HFS_FS is not set |
| 978 | +# CONFIG_HFSPLUS_FS is not set |
| 979 | +# CONFIG_BEFS_FS is not set |
| 980 | +# CONFIG_BFS_FS is not set |
| 981 | +# CONFIG_EFS_FS is not set |
| 982 | +CONFIG_YAFFS_FS=y |
| 983 | +CONFIG_YAFFS_YAFFS1=y |
| 984 | +# CONFIG_YAFFS_9BYTE_TAGS is not set |
| 985 | +# CONFIG_YAFFS_DOES_ECC is not set |
| 986 | +CONFIG_YAFFS_YAFFS2=y |
| 987 | +CONFIG_YAFFS_AUTO_YAFFS2=y |
| 988 | +# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set |
| 989 | +# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set |
| 990 | +# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set |
| 991 | +CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y |
| 992 | +# CONFIG_JFFS2_FS is not set |
| 993 | +# CONFIG_CRAMFS is not set |
| 994 | +# CONFIG_SQUASHFS is not set |
| 995 | +# CONFIG_VXFS_FS is not set |
| 996 | +# CONFIG_MINIX_FS is not set |
| 997 | +# CONFIG_OMFS_FS is not set |
| 998 | +# CONFIG_HPFS_FS is not set |
| 999 | +# CONFIG_QNX4FS_FS is not set |
| 1000 | +# CONFIG_ROMFS_FS is not set |
| 1001 | +# CONFIG_SYSV_FS is not set |
| 1002 | +# CONFIG_UFS_FS is not set |
| 1003 | +CONFIG_NETWORK_FILESYSTEMS=y |
| 1004 | +# CONFIG_NFS_FS is not set |
| 1005 | +CONFIG_NFSD=y |
| 1006 | +CONFIG_NFSD_V3=y |
| 1007 | +# CONFIG_NFSD_V3_ACL is not set |
| 1008 | +# CONFIG_NFSD_V4 is not set |
| 1009 | +CONFIG_LOCKD=y |
| 1010 | +CONFIG_LOCKD_V4=y |
| 1011 | +CONFIG_EXPORTFS=y |
| 1012 | +CONFIG_NFS_COMMON=y |
| 1013 | +CONFIG_SUNRPC=y |
| 1014 | +# CONFIG_SUNRPC_REGISTER_V4 is not set |
| 1015 | +# CONFIG_RPCSEC_GSS_KRB5 is not set |
| 1016 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set |
| 1017 | +CONFIG_SMB_FS=y |
| 1018 | +# CONFIG_SMB_NLS_DEFAULT is not set |
| 1019 | +# CONFIG_CIFS is not set |
| 1020 | +# CONFIG_NCP_FS is not set |
| 1021 | +# CONFIG_CODA_FS is not set |
| 1022 | +# CONFIG_AFS_FS is not set |
| 1023 | + |
| 1024 | +# |
| 1025 | +# Partition Types |
| 1026 | +# |
| 1027 | +# CONFIG_PARTITION_ADVANCED is not set |
| 1028 | +CONFIG_MSDOS_PARTITION=y |
| 1029 | +CONFIG_NLS=y |
| 1030 | +CONFIG_NLS_DEFAULT="iso8859-1" |
| 1031 | +CONFIG_NLS_CODEPAGE_437=y |
| 1032 | +# CONFIG_NLS_CODEPAGE_737 is not set |
| 1033 | +# CONFIG_NLS_CODEPAGE_775 is not set |
| 1034 | +# CONFIG_NLS_CODEPAGE_850 is not set |
| 1035 | +# CONFIG_NLS_CODEPAGE_852 is not set |
| 1036 | +# CONFIG_NLS_CODEPAGE_855 is not set |
| 1037 | +# CONFIG_NLS_CODEPAGE_857 is not set |
| 1038 | +# CONFIG_NLS_CODEPAGE_860 is not set |
| 1039 | +# CONFIG_NLS_CODEPAGE_861 is not set |
| 1040 | +# CONFIG_NLS_CODEPAGE_862 is not set |
| 1041 | +# CONFIG_NLS_CODEPAGE_863 is not set |
| 1042 | +# CONFIG_NLS_CODEPAGE_864 is not set |
| 1043 | +# CONFIG_NLS_CODEPAGE_865 is not set |
| 1044 | +# CONFIG_NLS_CODEPAGE_866 is not set |
| 1045 | +# CONFIG_NLS_CODEPAGE_869 is not set |
| 1046 | +# CONFIG_NLS_CODEPAGE_936 is not set |
| 1047 | +# CONFIG_NLS_CODEPAGE_950 is not set |
| 1048 | +# CONFIG_NLS_CODEPAGE_932 is not set |
| 1049 | +# CONFIG_NLS_CODEPAGE_949 is not set |
| 1050 | +# CONFIG_NLS_CODEPAGE_874 is not set |
| 1051 | +# CONFIG_NLS_ISO8859_8 is not set |
| 1052 | +# CONFIG_NLS_CODEPAGE_1250 is not set |
| 1053 | +# CONFIG_NLS_CODEPAGE_1251 is not set |
| 1054 | +# CONFIG_NLS_ASCII is not set |
| 1055 | +CONFIG_NLS_ISO8859_1=y |
| 1056 | +# CONFIG_NLS_ISO8859_2 is not set |
| 1057 | +# CONFIG_NLS_ISO8859_3 is not set |
| 1058 | +# CONFIG_NLS_ISO8859_4 is not set |
| 1059 | +# CONFIG_NLS_ISO8859_5 is not set |
| 1060 | +# CONFIG_NLS_ISO8859_6 is not set |
| 1061 | +# CONFIG_NLS_ISO8859_7 is not set |
| 1062 | +# CONFIG_NLS_ISO8859_9 is not set |
| 1063 | +# CONFIG_NLS_ISO8859_13 is not set |
| 1064 | +# CONFIG_NLS_ISO8859_14 is not set |
| 1065 | +# CONFIG_NLS_ISO8859_15 is not set |
| 1066 | +# CONFIG_NLS_KOI8_R is not set |
| 1067 | +# CONFIG_NLS_KOI8_U is not set |
| 1068 | +# CONFIG_NLS_UTF8 is not set |
| 1069 | +# CONFIG_DLM is not set |
| 1070 | + |
| 1071 | +# |
| 1072 | +# Kernel hacking |
| 1073 | +# |
| 1074 | +# CONFIG_PRINTK_TIME is not set |
| 1075 | +CONFIG_ENABLE_WARN_DEPRECATED=y |
| 1076 | +CONFIG_ENABLE_MUST_CHECK=y |
| 1077 | +CONFIG_FRAME_WARN=1024 |
| 1078 | +CONFIG_MAGIC_SYSRQ=y |
| 1079 | +# CONFIG_UNUSED_SYMBOLS is not set |
| 1080 | +# CONFIG_DEBUG_FS is not set |
| 1081 | +# CONFIG_HEADERS_CHECK is not set |
| 1082 | +CONFIG_DEBUG_KERNEL=y |
| 1083 | +# CONFIG_DEBUG_SHIRQ is not set |
| 1084 | +# CONFIG_DETECT_SOFTLOCKUP is not set |
| 1085 | +CONFIG_SCHED_DEBUG=y |
| 1086 | +CONFIG_SCHEDSTATS=y |
| 1087 | +# CONFIG_TIMER_STATS is not set |
| 1088 | +# CONFIG_DEBUG_OBJECTS is not set |
| 1089 | +# CONFIG_DEBUG_SLAB is not set |
| 1090 | +# CONFIG_DEBUG_RT_MUTEXES is not set |
| 1091 | +# CONFIG_RT_MUTEX_TESTER is not set |
| 1092 | +# CONFIG_DEBUG_SPINLOCK is not set |
| 1093 | +# CONFIG_DEBUG_MUTEXES is not set |
| 1094 | +# CONFIG_DEBUG_LOCK_ALLOC is not set |
| 1095 | +# CONFIG_PROVE_LOCKING is not set |
| 1096 | +# CONFIG_LOCK_STAT is not set |
| 1097 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1098 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
| 1099 | +# CONFIG_DEBUG_KOBJECT is not set |
| 1100 | +CONFIG_DEBUG_BUGVERBOSE=y |
| 1101 | +# CONFIG_DEBUG_INFO is not set |
| 1102 | +# CONFIG_DEBUG_VM is not set |
| 1103 | +# CONFIG_DEBUG_WRITECOUNT is not set |
| 1104 | +CONFIG_DEBUG_MEMORY_INIT=y |
| 1105 | +# CONFIG_DEBUG_LIST is not set |
| 1106 | +# CONFIG_DEBUG_SG is not set |
| 1107 | +# CONFIG_DEBUG_NOTIFIERS is not set |
| 1108 | +CONFIG_FRAME_POINTER=y |
| 1109 | +# CONFIG_BOOT_PRINTK_DELAY is not set |
| 1110 | +# CONFIG_RCU_TORTURE_TEST is not set |
| 1111 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set |
| 1112 | +# CONFIG_BACKTRACE_SELF_TEST is not set |
| 1113 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
| 1114 | +# CONFIG_FAULT_INJECTION is not set |
| 1115 | +# CONFIG_LATENCYTOP is not set |
| 1116 | +# CONFIG_SYSCTL_SYSCALL_CHECK is not set |
| 1117 | +CONFIG_HAVE_FUNCTION_TRACER=y |
| 1118 | + |
| 1119 | +# |
| 1120 | +# Tracers |
| 1121 | +# |
| 1122 | +# CONFIG_FUNCTION_TRACER is not set |
| 1123 | +# CONFIG_IRQSOFF_TRACER is not set |
| 1124 | +# CONFIG_SCHED_TRACER is not set |
| 1125 | +# CONFIG_CONTEXT_SWITCH_TRACER is not set |
| 1126 | +# CONFIG_BOOT_TRACER is not set |
| 1127 | +# CONFIG_TRACE_BRANCH_PROFILING is not set |
| 1128 | +# CONFIG_STACK_TRACER is not set |
| 1129 | +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set |
| 1130 | +# CONFIG_SAMPLES is not set |
| 1131 | +CONFIG_HAVE_ARCH_KGDB=y |
| 1132 | +# CONFIG_KGDB is not set |
| 1133 | +# CONFIG_DEBUG_USER is not set |
| 1134 | +# CONFIG_DEBUG_ERRORS is not set |
| 1135 | +# CONFIG_DEBUG_STACK_USAGE is not set |
| 1136 | +# CONFIG_DEBUG_LL is not set |
| 1137 | + |
| 1138 | +# |
| 1139 | +# Security options |
| 1140 | +# |
| 1141 | +# CONFIG_KEYS is not set |
| 1142 | +# CONFIG_SECURITY is not set |
| 1143 | +# CONFIG_SECURITYFS is not set |
| 1144 | +# CONFIG_SECURITY_FILE_CAPABILITIES is not set |
| 1145 | +CONFIG_CRYPTO=y |
| 1146 | + |
| 1147 | +# |
| 1148 | +# Crypto core or helper |
| 1149 | +# |
| 1150 | +# CONFIG_CRYPTO_FIPS is not set |
| 1151 | +CONFIG_CRYPTO_ALGAPI=y |
| 1152 | +CONFIG_CRYPTO_ALGAPI2=y |
| 1153 | +CONFIG_CRYPTO_AEAD=y |
| 1154 | +CONFIG_CRYPTO_AEAD2=y |
| 1155 | +CONFIG_CRYPTO_BLKCIPHER=y |
| 1156 | +CONFIG_CRYPTO_BLKCIPHER2=y |
| 1157 | +CONFIG_CRYPTO_HASH=y |
| 1158 | +CONFIG_CRYPTO_HASH2=y |
| 1159 | +CONFIG_CRYPTO_RNG2=y |
| 1160 | +CONFIG_CRYPTO_MANAGER=y |
| 1161 | +CONFIG_CRYPTO_MANAGER2=y |
| 1162 | +# CONFIG_CRYPTO_GF128MUL is not set |
| 1163 | +# CONFIG_CRYPTO_NULL is not set |
| 1164 | +# CONFIG_CRYPTO_CRYPTD is not set |
| 1165 | +CONFIG_CRYPTO_AUTHENC=y |
| 1166 | + |
| 1167 | +# |
| 1168 | +# Authenticated Encryption with Associated Data |
| 1169 | +# |
| 1170 | +# CONFIG_CRYPTO_CCM is not set |
| 1171 | +# CONFIG_CRYPTO_GCM is not set |
| 1172 | +# CONFIG_CRYPTO_SEQIV is not set |
| 1173 | + |
| 1174 | +# |
| 1175 | +# Block modes |
| 1176 | +# |
| 1177 | +CONFIG_CRYPTO_CBC=y |
| 1178 | +# CONFIG_CRYPTO_CTR is not set |
| 1179 | +# CONFIG_CRYPTO_CTS is not set |
| 1180 | +CONFIG_CRYPTO_ECB=y |
| 1181 | +# CONFIG_CRYPTO_LRW is not set |
| 1182 | +CONFIG_CRYPTO_PCBC=y |
| 1183 | +# CONFIG_CRYPTO_XTS is not set |
| 1184 | + |
| 1185 | +# |
| 1186 | +# Hash modes |
| 1187 | +# |
| 1188 | +CONFIG_CRYPTO_HMAC=y |
| 1189 | +# CONFIG_CRYPTO_XCBC is not set |
| 1190 | + |
| 1191 | +# |
| 1192 | +# Digest |
| 1193 | +# |
| 1194 | +# CONFIG_CRYPTO_CRC32C is not set |
| 1195 | +# CONFIG_CRYPTO_MD4 is not set |
| 1196 | +CONFIG_CRYPTO_MD5=y |
| 1197 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 1198 | +# CONFIG_CRYPTO_RMD128 is not set |
| 1199 | +# CONFIG_CRYPTO_RMD160 is not set |
| 1200 | +# CONFIG_CRYPTO_RMD256 is not set |
| 1201 | +# CONFIG_CRYPTO_RMD320 is not set |
| 1202 | +CONFIG_CRYPTO_SHA1=y |
| 1203 | +# CONFIG_CRYPTO_SHA256 is not set |
| 1204 | +# CONFIG_CRYPTO_SHA512 is not set |
| 1205 | +# CONFIG_CRYPTO_TGR192 is not set |
| 1206 | +# CONFIG_CRYPTO_WP512 is not set |
| 1207 | + |
| 1208 | +# |
| 1209 | +# Ciphers |
| 1210 | +# |
| 1211 | +# CONFIG_CRYPTO_AES is not set |
| 1212 | +# CONFIG_CRYPTO_ANUBIS is not set |
| 1213 | +# CONFIG_CRYPTO_ARC4 is not set |
| 1214 | +# CONFIG_CRYPTO_BLOWFISH is not set |
| 1215 | +# CONFIG_CRYPTO_CAMELLIA is not set |
| 1216 | +# CONFIG_CRYPTO_CAST5 is not set |
| 1217 | +# CONFIG_CRYPTO_CAST6 is not set |
| 1218 | +CONFIG_CRYPTO_DES=y |
| 1219 | +# CONFIG_CRYPTO_FCRYPT is not set |
| 1220 | +# CONFIG_CRYPTO_KHAZAD is not set |
| 1221 | +# CONFIG_CRYPTO_SALSA20 is not set |
| 1222 | +# CONFIG_CRYPTO_SEED is not set |
| 1223 | +# CONFIG_CRYPTO_SERPENT is not set |
| 1224 | +# CONFIG_CRYPTO_TEA is not set |
| 1225 | +# CONFIG_CRYPTO_TWOFISH is not set |
| 1226 | + |
| 1227 | +# |
| 1228 | +# Compression |
| 1229 | +# |
| 1230 | +CONFIG_CRYPTO_DEFLATE=y |
| 1231 | +# CONFIG_CRYPTO_LZO is not set |
| 1232 | + |
| 1233 | +# |
| 1234 | +# Random Number Generation |
| 1235 | +# |
| 1236 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set |
| 1237 | +CONFIG_CRYPTO_HW=y |
| 1238 | + |
| 1239 | +# |
| 1240 | +# Library routines |
| 1241 | +# |
| 1242 | +CONFIG_BITREVERSE=y |
| 1243 | +CONFIG_GENERIC_FIND_LAST_BIT=y |
| 1244 | +# CONFIG_CRC_CCITT is not set |
| 1245 | +# CONFIG_CRC16 is not set |
| 1246 | +# CONFIG_CRC_T10DIF is not set |
| 1247 | +# CONFIG_CRC_ITU_T is not set |
| 1248 | +CONFIG_CRC32=y |
| 1249 | +# CONFIG_CRC7 is not set |
| 1250 | +# CONFIG_LIBCRC32C is not set |
| 1251 | +CONFIG_ZLIB_INFLATE=y |
| 1252 | +CONFIG_ZLIB_DEFLATE=y |
| 1253 | +CONFIG_PLIST=y |
| 1254 | +CONFIG_HAS_IOMEM=y |
| 1255 | +CONFIG_HAS_IOPORT=y |
| 1256 | +CONFIG_HAS_DMA=y |
| 1257 | --- /dev/null |
| 1258 | +++ b/arch/arm/mach-goldfish/Kconfig |
| 1259 | @@ -0,0 +1,11 @@ |
| 1260 | +if ARCH_GOLDFISH |
| 1261 | + |
| 1262 | +menu "Goldfish Options" |
| 1263 | + |
| 1264 | +config MACH_GOLDFISH |
| 1265 | + bool "Goldfish (Virtual Platform)" |
| 1266 | + select CPU_ARM926T |
| 1267 | + |
| 1268 | +endmenu |
| 1269 | + |
| 1270 | +endif |
| 1271 | --- /dev/null |
| 1272 | +++ b/arch/arm/mach-goldfish/Makefile |
| 1273 | @@ -0,0 +1,9 @@ |
| 1274 | +# |
| 1275 | +# Makefile for the linux kernel. |
| 1276 | +# |
| 1277 | + |
| 1278 | +# Object file lists. |
| 1279 | + |
| 1280 | +obj-y := pdev_bus.o timer.o |
| 1281 | +obj-$(CONFIG_MACH_GOLDFISH) += board-goldfish.o |
| 1282 | + |
| 1283 | --- /dev/null |
| 1284 | +++ b/arch/arm/mach-goldfish/Makefile.boot |
| 1285 | @@ -0,0 +1,4 @@ |
| 1286 | + zreladdr-y := 0x00008000 |
| 1287 | +params_phys-y := 0x00000100 |
| 1288 | +initrd_phys-y := 0x00800000 |
| 1289 | + |
| 1290 | --- /dev/null |
| 1291 | +++ b/arch/arm/mach-goldfish/board-goldfish.c |
| 1292 | @@ -0,0 +1,122 @@ |
| 1293 | +/* arch/arm/mach-goldfish/board-goldfish.c |
| 1294 | +** |
| 1295 | +** Copyright (C) 2007 Google, Inc. |
| 1296 | +** |
| 1297 | +** This software is licensed under the terms of the GNU General Public |
| 1298 | +** License version 2, as published by the Free Software Foundation, and |
| 1299 | +** may be copied, distributed, and modified under those terms. |
| 1300 | +** |
| 1301 | +** This program is distributed in the hope that it will be useful, |
| 1302 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1303 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1304 | +** GNU General Public License for more details. |
| 1305 | +** |
| 1306 | +*/ |
| 1307 | + |
| 1308 | +#include <linux/kernel.h> |
| 1309 | +#include <linux/init.h> |
| 1310 | +#include <linux/interrupt.h> |
| 1311 | +#include <linux/irq.h> |
| 1312 | +#include <linux/platform_device.h> |
| 1313 | +#include <linux/delay.h> |
| 1314 | +#include <linux/mtd/mtd.h> |
| 1315 | +#include <linux/mtd/nand.h> |
| 1316 | +#include <linux/mtd/partitions.h> |
| 1317 | +#include <linux/input.h> |
| 1318 | + |
| 1319 | +#include <mach/hardware.h> |
| 1320 | +#include <asm/io.h> |
| 1321 | +#include <asm/mach-types.h> |
| 1322 | +#include <asm/mach/arch.h> |
| 1323 | +#include <asm/mach/flash.h> |
| 1324 | +#include <asm/mach/map.h> |
| 1325 | +#include <asm/mach/time.h> |
| 1326 | + |
| 1327 | +int GOLDFISH_READY = 0; |
| 1328 | + |
| 1329 | +static struct resource goldfish_pdev_bus_resources[] = { |
| 1330 | + { |
| 1331 | + .start = GOLDFISH_PDEV_BUS_BASE, |
| 1332 | + .end = GOLDFISH_PDEV_BUS_BASE + GOLDFISH_PDEV_BUS_END - 1, |
| 1333 | + .flags = IORESOURCE_IO, |
| 1334 | + }, |
| 1335 | + { |
| 1336 | + .start = IRQ_PDEV_BUS, |
| 1337 | + .end = IRQ_PDEV_BUS, |
| 1338 | + .flags = IORESOURCE_IRQ, |
| 1339 | + } |
| 1340 | +}; |
| 1341 | + |
| 1342 | + |
| 1343 | +struct platform_device goldfish_pdev_bus_device = { |
| 1344 | + .name = "goldfish_pdev_bus", |
| 1345 | + .id = -1, |
| 1346 | + .num_resources = ARRAY_SIZE(goldfish_pdev_bus_resources), |
| 1347 | + .resource = goldfish_pdev_bus_resources |
| 1348 | +}; |
| 1349 | + |
| 1350 | +static void __init goldfish_init(void) |
| 1351 | +{ |
| 1352 | + platform_device_register(&goldfish_pdev_bus_device); |
| 1353 | +} |
| 1354 | + |
| 1355 | +void goldfish_mask_irq(unsigned int irq) |
| 1356 | +{ |
| 1357 | + writel(irq, IO_ADDRESS(GOLDFISH_INTERRUPT_BASE) + GOLDFISH_INTERRUPT_DISABLE); |
| 1358 | +} |
| 1359 | + |
| 1360 | +void goldfish_unmask_irq(unsigned int irq) |
| 1361 | +{ |
| 1362 | + writel(irq, IO_ADDRESS(GOLDFISH_INTERRUPT_BASE) + GOLDFISH_INTERRUPT_ENABLE); |
| 1363 | +} |
| 1364 | + |
| 1365 | +static struct irq_chip goldfish_irq_chip = { |
| 1366 | + .name = "goldfish", |
| 1367 | + .mask = goldfish_mask_irq, |
| 1368 | + .mask_ack = goldfish_mask_irq, |
| 1369 | + .unmask = goldfish_unmask_irq, |
| 1370 | +}; |
| 1371 | + |
| 1372 | +void goldfish_init_irq(void) |
| 1373 | +{ |
| 1374 | + unsigned int i; |
| 1375 | + uint32_t int_base = IO_ADDRESS(GOLDFISH_INTERRUPT_BASE); |
| 1376 | + |
| 1377 | + /* |
| 1378 | + * Disable all interrupt sources |
| 1379 | + */ |
| 1380 | + writel(1, int_base + GOLDFISH_INTERRUPT_DISABLE_ALL); |
| 1381 | + |
| 1382 | + for (i = 0; i < NR_IRQS; i++) { |
| 1383 | + set_irq_chip(i, &goldfish_irq_chip); |
| 1384 | + set_irq_handler(i, handle_level_irq); |
| 1385 | + set_irq_flags(i, IRQF_VALID | IRQF_PROBE); |
| 1386 | + } |
| 1387 | +} |
| 1388 | + |
| 1389 | +static struct map_desc goldfish_io_desc[] __initdata = { |
| 1390 | + { |
| 1391 | + .virtual = IO_BASE, |
| 1392 | + .pfn = __phys_to_pfn(IO_START), |
| 1393 | + .length = IO_SIZE, |
| 1394 | + .type = MT_DEVICE |
| 1395 | + }, |
| 1396 | +}; |
| 1397 | + |
| 1398 | +static void __init goldfish_map_io(void) |
| 1399 | +{ |
| 1400 | + iotable_init(goldfish_io_desc, ARRAY_SIZE(goldfish_io_desc)); |
| 1401 | + GOLDFISH_READY = 1; |
| 1402 | +} |
| 1403 | + |
| 1404 | +extern struct sys_timer goldfish_timer; |
| 1405 | + |
| 1406 | +MACHINE_START(GOLDFISH, "Goldfish") |
| 1407 | + .phys_io = 0xff000000, |
| 1408 | + .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, |
| 1409 | + .boot_params = 0x00000100, |
| 1410 | + .map_io = goldfish_map_io, |
| 1411 | + .init_irq = goldfish_init_irq, |
| 1412 | + .init_machine = goldfish_init, |
| 1413 | + .timer = &goldfish_timer, |
| 1414 | +MACHINE_END |
| 1415 | --- /dev/null |
| 1416 | +++ b/arch/arm/mach-goldfish/include/mach/dma.h |
| 1417 | @@ -0,0 +1 @@ |
| 1418 | +/* include/asm-arm/arch-goldfish/dma.h */ |
| 1419 | --- /dev/null |
| 1420 | +++ b/arch/arm/mach-goldfish/include/mach/entry-macro.S |
| 1421 | @@ -0,0 +1,34 @@ |
| 1422 | +/* include/asm-arm/arch-goldfish/entry-macro.S |
| 1423 | +** |
| 1424 | +** Copyright (C) 2007 Google, Inc. |
| 1425 | +** |
| 1426 | +** This software is licensed under the terms of the GNU General Public |
| 1427 | +** License version 2, as published by the Free Software Foundation, and |
| 1428 | +** may be copied, distributed, and modified under those terms. |
| 1429 | +** |
| 1430 | +** This program is distributed in the hope that it will be useful, |
| 1431 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1432 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1433 | +** GNU General Public License for more details. |
| 1434 | +** |
| 1435 | +*/ |
| 1436 | + |
| 1437 | +#include <mach/hardware.h> |
| 1438 | +#include <mach/irqs.h> |
| 1439 | + |
| 1440 | + .macro disable_fiq |
| 1441 | + .endm |
| 1442 | + |
| 1443 | + .macro get_irqnr_preamble, base, tmp |
| 1444 | + .endm |
| 1445 | + |
| 1446 | + .macro arch_ret_to_user, tmp1, tmp2 |
| 1447 | + .endm |
| 1448 | + |
| 1449 | + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 1450 | + ldr \base, =IO_ADDRESS(GOLDFISH_INTERRUPT_BASE) |
| 1451 | + ldr \irqnr, [\base, #GOLDFISH_INTERRUPT_NUMBER] |
| 1452 | + ldr \irqstat, [\base, #GOLDFISH_INTERRUPT_STATUS] |
| 1453 | + teq \irqstat, #0 |
| 1454 | + /* EQ will be set if no irqs pending */ |
| 1455 | + .endm |
| 1456 | --- /dev/null |
| 1457 | +++ b/arch/arm/mach-goldfish/include/mach/hardware.h |
| 1458 | @@ -0,0 +1,44 @@ |
| 1459 | +/* include/asm-arm/arch-goldfish/hardware.h |
| 1460 | +** |
| 1461 | +** Copyright (C) 2007 Google, Inc. |
| 1462 | +** |
| 1463 | +** This software is licensed under the terms of the GNU General Public |
| 1464 | +** License version 2, as published by the Free Software Foundation, and |
| 1465 | +** may be copied, distributed, and modified under those terms. |
| 1466 | +** |
| 1467 | +** This program is distributed in the hope that it will be useful, |
| 1468 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1469 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1470 | +** GNU General Public License for more details. |
| 1471 | +** |
| 1472 | +*/ |
| 1473 | + |
| 1474 | +#ifndef __ASM_ARCH_HARDWARE_H |
| 1475 | +#define __ASM_ARCH_HARDWARE_H |
| 1476 | + |
| 1477 | +#include <asm/sizes.h> |
| 1478 | + |
| 1479 | +/* |
| 1480 | + * Where in virtual memory the IO devices (timers, system controllers |
| 1481 | + * and so on) |
| 1482 | + */ |
| 1483 | +#define IO_BASE 0xfe000000 // VA of IO |
| 1484 | +#define IO_SIZE 0x00800000 // How much? |
| 1485 | +#define IO_START 0xff000000 // PA of IO |
| 1486 | + |
| 1487 | +#define GOLDFISH_INTERRUPT_BASE (0x0) |
| 1488 | +#define GOLDFISH_INTERRUPT_STATUS (0x00) // number of pending interrupts |
| 1489 | +#define GOLDFISH_INTERRUPT_NUMBER (0x04) |
| 1490 | +#define GOLDFISH_INTERRUPT_DISABLE_ALL (0x08) |
| 1491 | +#define GOLDFISH_INTERRUPT_DISABLE (0x0c) |
| 1492 | +#define GOLDFISH_INTERRUPT_ENABLE (0x10) |
| 1493 | + |
| 1494 | +#define GOLDFISH_PDEV_BUS_BASE (0x1000) |
| 1495 | +#define GOLDFISH_PDEV_BUS_END (0x100) |
| 1496 | + |
| 1497 | +#define GOLDFISH_TIMER_BASE (0x3000) |
| 1498 | + |
| 1499 | +/* macro to get at IO space when running virtually */ |
| 1500 | +#define IO_ADDRESS(x) ((x) + IO_BASE) |
| 1501 | + |
| 1502 | +#endif |
| 1503 | --- /dev/null |
| 1504 | +++ b/arch/arm/mach-goldfish/include/mach/io.h |
| 1505 | @@ -0,0 +1,24 @@ |
| 1506 | +/* include/asm-arm/arch-goldfish/io.h |
| 1507 | +** |
| 1508 | +** Copyright (C) 2007 Google, Inc. |
| 1509 | +** |
| 1510 | +** This software is licensed under the terms of the GNU General Public |
| 1511 | +** License version 2, as published by the Free Software Foundation, and |
| 1512 | +** may be copied, distributed, and modified under those terms. |
| 1513 | +** |
| 1514 | +** This program is distributed in the hope that it will be useful, |
| 1515 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1516 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1517 | +** GNU General Public License for more details. |
| 1518 | +** |
| 1519 | +*/ |
| 1520 | + |
| 1521 | +#ifndef __ASM_ARM_ARCH_IO_H |
| 1522 | +#define __ASM_ARM_ARCH_IO_H |
| 1523 | + |
| 1524 | +#define IO_SPACE_LIMIT 0xffffffff |
| 1525 | + |
| 1526 | +#define __io(a) ((void __iomem *)(a)) |
| 1527 | +#define __mem_pci(a) (a) |
| 1528 | + |
| 1529 | +#endif |
| 1530 | --- /dev/null |
| 1531 | +++ b/arch/arm/mach-goldfish/include/mach/irqs.h |
| 1532 | @@ -0,0 +1,24 @@ |
| 1533 | +/* include/asm-arm/arch-goldfish/irqs.h |
| 1534 | +** |
| 1535 | +** Copyright (C) 2007 Google, Inc. |
| 1536 | +** |
| 1537 | +** This software is licensed under the terms of the GNU General Public |
| 1538 | +** License version 2, as published by the Free Software Foundation, and |
| 1539 | +** may be copied, distributed, and modified under those terms. |
| 1540 | +** |
| 1541 | +** This program is distributed in the hope that it will be useful, |
| 1542 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1543 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1544 | +** GNU General Public License for more details. |
| 1545 | +** |
| 1546 | +*/ |
| 1547 | + |
| 1548 | +#ifndef __ASM_ARCH_IRQS_H |
| 1549 | +#define __ASM_ARCH_IRQS_H |
| 1550 | + |
| 1551 | +#define IRQ_PDEV_BUS (1) |
| 1552 | +#define IRQ_TIMER (3) |
| 1553 | + |
| 1554 | +#define NR_IRQS (256) |
| 1555 | + |
| 1556 | +#endif |
| 1557 | --- /dev/null |
| 1558 | +++ b/arch/arm/mach-goldfish/include/mach/memory.h |
| 1559 | @@ -0,0 +1,35 @@ |
| 1560 | +/* include/asm-arm/arch-goldfish/memory.h |
| 1561 | +** |
| 1562 | +** Copyright (C) 2007 Google, Inc. |
| 1563 | +** |
| 1564 | +** This software is licensed under the terms of the GNU General Public |
| 1565 | +** License version 2, as published by the Free Software Foundation, and |
| 1566 | +** may be copied, distributed, and modified under those terms. |
| 1567 | +** |
| 1568 | +** This program is distributed in the hope that it will be useful, |
| 1569 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1570 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1571 | +** GNU General Public License for more details. |
| 1572 | +** |
| 1573 | +*/ |
| 1574 | + |
| 1575 | +#ifndef __ASM_ARCH_MEMORY_H |
| 1576 | +#define __ASM_ARCH_MEMORY_H |
| 1577 | + |
| 1578 | +/* |
| 1579 | + * Physical DRAM offset. |
| 1580 | + */ |
| 1581 | +#define PHYS_OFFSET UL(0x00000000) |
| 1582 | +#define BUS_OFFSET UL(0x00000000) |
| 1583 | + |
| 1584 | +/* |
| 1585 | + * Virtual view <-> DMA view memory address translations |
| 1586 | + * virt_to_bus: Used to translate the virtual address to an |
| 1587 | + * address suitable to be passed to set_dma_addr |
| 1588 | + * bus_to_virt: Used to convert an address for DMA operations |
| 1589 | + * to an address that the kernel can use. |
| 1590 | + */ |
| 1591 | +#define __virt_to_bus(x) (x - PAGE_OFFSET + BUS_OFFSET) |
| 1592 | +#define __bus_to_virt(x) (x - BUS_OFFSET + PAGE_OFFSET) |
| 1593 | + |
| 1594 | +#endif |
| 1595 | --- /dev/null |
| 1596 | +++ b/arch/arm/mach-goldfish/include/mach/system.h |
| 1597 | @@ -0,0 +1,30 @@ |
| 1598 | +/* include/asm-arm/arch-goldfish/system.h |
| 1599 | +** |
| 1600 | +** Copyright (C) 2007 Google, Inc. |
| 1601 | +** |
| 1602 | +** This software is licensed under the terms of the GNU General Public |
| 1603 | +** License version 2, as published by the Free Software Foundation, and |
| 1604 | +** may be copied, distributed, and modified under those terms. |
| 1605 | +** |
| 1606 | +** This program is distributed in the hope that it will be useful, |
| 1607 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1608 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1609 | +** GNU General Public License for more details. |
| 1610 | +** |
| 1611 | +*/ |
| 1612 | + |
| 1613 | +#ifndef __ASM_ARCH_SYSTEM_H |
| 1614 | +#define __ASM_ARCH_SYSTEM_H |
| 1615 | + |
| 1616 | +#include <asm/proc-fns.h> |
| 1617 | + |
| 1618 | +static inline void arch_idle(void) |
| 1619 | +{ |
| 1620 | + cpu_do_idle(); |
| 1621 | +} |
| 1622 | + |
| 1623 | +static inline void arch_reset(char mode, const char *cmd) |
| 1624 | +{ |
| 1625 | +} |
| 1626 | + |
| 1627 | +#endif |
| 1628 | --- /dev/null |
| 1629 | +++ b/arch/arm/mach-goldfish/include/mach/timer.h |
| 1630 | @@ -0,0 +1,28 @@ |
| 1631 | +/* include/asm-arm/arch-goldfish/timer.h |
| 1632 | +** |
| 1633 | +** Copyright (C) 2007 Google, Inc. |
| 1634 | +** |
| 1635 | +** This software is licensed under the terms of the GNU General Public |
| 1636 | +** License version 2, as published by the Free Software Foundation, and |
| 1637 | +** may be copied, distributed, and modified under those terms. |
| 1638 | +** |
| 1639 | +** This program is distributed in the hope that it will be useful, |
| 1640 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1641 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1642 | +** GNU General Public License for more details. |
| 1643 | +** |
| 1644 | +*/ |
| 1645 | + |
| 1646 | +#ifndef __ASM_ARCH_TIMER_H |
| 1647 | +#define __ASM_ARCH_TIMER_H |
| 1648 | + |
| 1649 | +enum { |
| 1650 | + TIMER_TIME_LOW = 0x00, // get low bits of current time and update TIMER_TIME_HIGH |
| 1651 | + TIMER_TIME_HIGH = 0x04, // get high bits of time at last TIMER_TIME_LOW read |
| 1652 | + TIMER_ALARM_LOW = 0x08, // set low bits of alarm and activate it |
| 1653 | + TIMER_ALARM_HIGH = 0x0c, // set high bits of next alarm |
| 1654 | + TIMER_CLEAR_INTERRUPT = 0x10, |
| 1655 | + TIMER_CLEAR_ALARM = 0x14 |
| 1656 | +}; |
| 1657 | + |
| 1658 | +#endif |
| 1659 | --- /dev/null |
| 1660 | +++ b/arch/arm/mach-goldfish/include/mach/timex.h |
| 1661 | @@ -0,0 +1,24 @@ |
| 1662 | +/* include/asm-arm/arch-goldfish/timex.h |
| 1663 | +** |
| 1664 | +** Copyright (C) 2007 Google, Inc. |
| 1665 | +** |
| 1666 | +** This software is licensed under the terms of the GNU General Public |
| 1667 | +** License version 2, as published by the Free Software Foundation, and |
| 1668 | +** may be copied, distributed, and modified under those terms. |
| 1669 | +** |
| 1670 | +** This program is distributed in the hope that it will be useful, |
| 1671 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1672 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1673 | +** GNU General Public License for more details. |
| 1674 | +** |
| 1675 | +*/ |
| 1676 | + |
| 1677 | +#ifndef __ASM_ARCH_TIMEX_H |
| 1678 | +#define __ASM_ARCH_TIMEX_H |
| 1679 | + |
| 1680 | +/* |
| 1681 | + * ?? |
| 1682 | + */ |
| 1683 | +#define CLOCK_TICK_RATE (50000000 / 16) |
| 1684 | + |
| 1685 | +#endif |
| 1686 | --- /dev/null |
| 1687 | +++ b/arch/arm/mach-goldfish/include/mach/uncompress.h |
| 1688 | @@ -0,0 +1,40 @@ |
| 1689 | +/* include/asm-arm/arch-goldfish/uncompress.h |
| 1690 | +** |
| 1691 | +** Copyright (C) 2007 Google, Inc. |
| 1692 | +** |
| 1693 | +** This software is licensed under the terms of the GNU General Public |
| 1694 | +** License version 2, as published by the Free Software Foundation, and |
| 1695 | +** may be copied, distributed, and modified under those terms. |
| 1696 | +** |
| 1697 | +** This program is distributed in the hope that it will be useful, |
| 1698 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1699 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1700 | +** GNU General Public License for more details. |
| 1701 | +** |
| 1702 | +*/ |
| 1703 | + |
| 1704 | +#ifndef __ASM_ARCH_UNCOMPRESS_H |
| 1705 | +#define __ASM_ARCH_UNCOMPRESS_H |
| 1706 | + |
| 1707 | +#define GOLDFISH_TTY_PUT_CHAR (*(volatile unsigned int *)0xff002000) |
| 1708 | + |
| 1709 | +/* |
| 1710 | + * This does not append a newline |
| 1711 | + */ |
| 1712 | +static void putc(int c) |
| 1713 | +{ |
| 1714 | + GOLDFISH_TTY_PUT_CHAR = c; |
| 1715 | +} |
| 1716 | + |
| 1717 | +static inline void flush(void) |
| 1718 | +{ |
| 1719 | +} |
| 1720 | + |
| 1721 | +/* |
| 1722 | + * nothing to do |
| 1723 | + */ |
| 1724 | +#define arch_decomp_setup() |
| 1725 | + |
| 1726 | +#define arch_decomp_wdog() |
| 1727 | + |
| 1728 | +#endif |
| 1729 | --- /dev/null |
| 1730 | +++ b/arch/arm/mach-goldfish/include/mach/vmalloc.h |
| 1731 | @@ -0,0 +1,21 @@ |
| 1732 | +/* include/asm-arm/arch-goldfish/vmalloc.h |
| 1733 | +** |
| 1734 | +** Copyright (C) 2007 Google, Inc. |
| 1735 | +** |
| 1736 | +** This software is licensed under the terms of the GNU General Public |
| 1737 | +** License version 2, as published by the Free Software Foundation, and |
| 1738 | +** may be copied, distributed, and modified under those terms. |
| 1739 | +** |
| 1740 | +** This program is distributed in the hope that it will be useful, |
| 1741 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1742 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1743 | +** GNU General Public License for more details. |
| 1744 | +** |
| 1745 | +*/ |
| 1746 | + |
| 1747 | +#ifndef __ASM_ARCH_VMALLOC_H |
| 1748 | +#define __ASM_ARCH_VMALLOC_H |
| 1749 | + |
| 1750 | +#define VMALLOC_END (PAGE_OFFSET + 0x3c000000) |
| 1751 | + |
| 1752 | +#endif |
| 1753 | --- /dev/null |
| 1754 | +++ b/arch/arm/mach-goldfish/pdev_bus.c |
| 1755 | @@ -0,0 +1,222 @@ |
| 1756 | +/* arch/arm/mach-goldfish/pdev_bus.c |
| 1757 | +** |
| 1758 | +** Copyright (C) 2007 Google, Inc. |
| 1759 | +** |
| 1760 | +** This software is licensed under the terms of the GNU General Public |
| 1761 | +** License version 2, as published by the Free Software Foundation, and |
| 1762 | +** may be copied, distributed, and modified under those terms. |
| 1763 | +** |
| 1764 | +** This program is distributed in the hope that it will be useful, |
| 1765 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1766 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1767 | +** GNU General Public License for more details. |
| 1768 | +** |
| 1769 | +*/ |
| 1770 | + |
| 1771 | +#include <linux/kernel.h> |
| 1772 | +#include <linux/init.h> |
| 1773 | +#include <linux/interrupt.h> |
| 1774 | +#include <linux/irq.h> |
| 1775 | +#include <linux/platform_device.h> |
| 1776 | + |
| 1777 | +#include <mach/hardware.h> |
| 1778 | +#include <asm/io.h> |
| 1779 | +#include <asm/mach-types.h> |
| 1780 | +#include <asm/mach/arch.h> |
| 1781 | + |
| 1782 | +#define PDEV_BUS_OP_DONE (0x00) |
| 1783 | +#define PDEV_BUS_OP_REMOVE_DEV (0x04) |
| 1784 | +#define PDEV_BUS_OP_ADD_DEV (0x08) |
| 1785 | + |
| 1786 | +#define PDEV_BUS_OP_INIT (0x00) |
| 1787 | + |
| 1788 | +#define PDEV_BUS_OP (0x00) |
| 1789 | +#define PDEV_BUS_GET_NAME (0x04) |
| 1790 | +#define PDEV_BUS_NAME_LEN (0x08) |
| 1791 | +#define PDEV_BUS_ID (0x0c) |
| 1792 | +#define PDEV_BUS_IO_BASE (0x10) |
| 1793 | +#define PDEV_BUS_IO_SIZE (0x14) |
| 1794 | +#define PDEV_BUS_IRQ (0x18) |
| 1795 | +#define PDEV_BUS_IRQ_COUNT (0x1c) |
| 1796 | + |
| 1797 | +struct pdev_bus_dev { |
| 1798 | + struct list_head list; |
| 1799 | + struct platform_device pdev; |
| 1800 | + struct resource resources[0]; |
| 1801 | +}; |
| 1802 | + |
| 1803 | +static void goldfish_pdev_worker(struct work_struct *work); |
| 1804 | + |
| 1805 | +static uint32_t pdev_bus_base; |
| 1806 | +static uint32_t pdev_bus_irq; |
| 1807 | +static LIST_HEAD(pdev_bus_new_devices); |
| 1808 | +static LIST_HEAD(pdev_bus_registered_devices); |
| 1809 | +static LIST_HEAD(pdev_bus_removed_devices); |
| 1810 | +static DECLARE_WORK(pdev_bus_worker, goldfish_pdev_worker); |
| 1811 | + |
| 1812 | + |
| 1813 | +static void goldfish_pdev_worker(struct work_struct *work) |
| 1814 | +{ |
| 1815 | + int ret; |
| 1816 | + struct pdev_bus_dev *pos, *n; |
| 1817 | + |
| 1818 | + list_for_each_entry_safe(pos, n, &pdev_bus_removed_devices, list) { |
| 1819 | + list_del(&pos->list); |
| 1820 | + platform_device_unregister(&pos->pdev); |
| 1821 | + kfree(pos); |
| 1822 | + } |
| 1823 | + list_for_each_entry_safe(pos, n, &pdev_bus_new_devices, list) { |
| 1824 | + list_del(&pos->list); |
| 1825 | + ret = platform_device_register(&pos->pdev); |
| 1826 | + if(ret) { |
| 1827 | + printk("goldfish_pdev_worker failed to register device, %s\n", pos->pdev.name); |
| 1828 | + } |
| 1829 | + else { |
| 1830 | + printk("goldfish_pdev_worker registered %s\n", pos->pdev.name); |
| 1831 | + } |
| 1832 | + list_add(&pos->list, &pdev_bus_registered_devices); |
| 1833 | + } |
| 1834 | +} |
| 1835 | + |
| 1836 | +static void goldfish_pdev_remove(void) |
| 1837 | +{ |
| 1838 | + struct pdev_bus_dev *pos, *n; |
| 1839 | + uint32_t base; |
| 1840 | + |
| 1841 | + base = readl(pdev_bus_base + PDEV_BUS_IO_BASE); |
| 1842 | + |
| 1843 | + list_for_each_entry_safe(pos, n, &pdev_bus_new_devices, list) { |
| 1844 | + if(pos->resources[0].start == base) { |
| 1845 | + list_del(&pos->list); |
| 1846 | + kfree(pos); |
| 1847 | + return; |
| 1848 | + } |
| 1849 | + } |
| 1850 | + list_for_each_entry_safe(pos, n, &pdev_bus_registered_devices, list) { |
| 1851 | + if(pos->resources[0].start == base) { |
| 1852 | + list_del(&pos->list); |
| 1853 | + list_add(&pos->list, &pdev_bus_removed_devices); |
| 1854 | + schedule_work(&pdev_bus_worker); |
| 1855 | + return; |
| 1856 | + } |
| 1857 | + }; |
| 1858 | + printk("goldfish_pdev_remove could not find device at %x\n", base); |
| 1859 | +} |
| 1860 | + |
| 1861 | +static int goldfish_new_pdev(void) |
| 1862 | +{ |
| 1863 | + struct pdev_bus_dev *dev; |
| 1864 | + uint32_t name_len; |
| 1865 | + uint32_t irq = -1, irq_count; |
| 1866 | + int resource_count = 2; |
| 1867 | + uint32_t base; |
| 1868 | + char *name; |
| 1869 | + |
| 1870 | + base = readl(pdev_bus_base + PDEV_BUS_IO_BASE); |
| 1871 | + |
| 1872 | + irq_count = readl(pdev_bus_base + PDEV_BUS_IRQ_COUNT); |
| 1873 | + name_len = readl(pdev_bus_base + PDEV_BUS_NAME_LEN); |
| 1874 | + if(irq_count) |
| 1875 | + resource_count++; |
| 1876 | + |
| 1877 | + dev = kzalloc(sizeof(*dev) + sizeof(struct resource) * resource_count + name_len + 1, GFP_ATOMIC); |
| 1878 | + if(dev == NULL) |
| 1879 | + return -ENOMEM; |
| 1880 | + |
| 1881 | + dev->pdev.num_resources = resource_count; |
| 1882 | + dev->pdev.resource = (struct resource *)(dev + 1); |
| 1883 | + dev->pdev.name = name = (char *)(dev->pdev.resource + resource_count); |
| 1884 | + dev->pdev.dev.coherent_dma_mask = ~0; |
| 1885 | + |
| 1886 | + writel(name, pdev_bus_base + PDEV_BUS_GET_NAME); |
| 1887 | + name[name_len] = '\0'; |
| 1888 | + dev->pdev.id = readl(pdev_bus_base + PDEV_BUS_ID); |
| 1889 | + dev->pdev.resource[0].start = base; |
| 1890 | + dev->pdev.resource[0].end = base + readl(pdev_bus_base + PDEV_BUS_IO_SIZE) - 1; |
| 1891 | + dev->pdev.resource[0].flags = IORESOURCE_MEM; |
| 1892 | + if(irq_count) { |
| 1893 | + irq = readl(pdev_bus_base + PDEV_BUS_IRQ); |
| 1894 | + dev->pdev.resource[1].start = irq; |
| 1895 | + dev->pdev.resource[1].end = irq + irq_count - 1; |
| 1896 | + dev->pdev.resource[1].flags = IORESOURCE_IRQ; |
| 1897 | + } |
| 1898 | + |
| 1899 | + printk("goldfish_new_pdev %s at %x irq %d\n", name, base, irq); |
| 1900 | + list_add(&dev->list, &pdev_bus_new_devices); |
| 1901 | + schedule_work(&pdev_bus_worker); |
| 1902 | + |
| 1903 | + return 0; |
| 1904 | +} |
| 1905 | + |
| 1906 | +static irqreturn_t goldfish_pdev_bus_interrupt(int irq, void *dev_id) |
| 1907 | +{ |
| 1908 | + irqreturn_t ret = IRQ_NONE; |
| 1909 | + while(1) { |
| 1910 | + uint32_t op = readl(pdev_bus_base + PDEV_BUS_OP); |
| 1911 | + switch(op) { |
| 1912 | + case PDEV_BUS_OP_DONE: |
| 1913 | + return IRQ_NONE; |
| 1914 | + |
| 1915 | + case PDEV_BUS_OP_REMOVE_DEV: |
| 1916 | + goldfish_pdev_remove(); |
| 1917 | + break; |
| 1918 | + |
| 1919 | + case PDEV_BUS_OP_ADD_DEV: |
| 1920 | + goldfish_new_pdev(); |
| 1921 | + break; |
| 1922 | + } |
| 1923 | + ret = IRQ_HANDLED; |
| 1924 | + } |
| 1925 | +} |
| 1926 | + |
| 1927 | +static int __devinit goldfish_pdev_bus_probe(struct platform_device *pdev) |
| 1928 | +{ |
| 1929 | + int ret; |
| 1930 | + struct resource *r; |
| 1931 | + r = platform_get_resource(pdev, IORESOURCE_IO, 0); |
| 1932 | + if(r == NULL) |
| 1933 | + return -EINVAL; |
| 1934 | + pdev_bus_base = IO_ADDRESS(r->start); |
| 1935 | + |
| 1936 | + r = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 1937 | + if(r == NULL) |
| 1938 | + return -EINVAL; |
| 1939 | + pdev_bus_irq = r->start; |
| 1940 | + |
| 1941 | + ret = request_irq(pdev_bus_irq, goldfish_pdev_bus_interrupt, IRQF_SHARED, "goldfish_pdev_bus", pdev); |
| 1942 | + if(ret) |
| 1943 | + goto err_request_irq_failed; |
| 1944 | + |
| 1945 | + writel(PDEV_BUS_OP_INIT, pdev_bus_base + PDEV_BUS_OP); |
| 1946 | + |
| 1947 | +err_request_irq_failed: |
| 1948 | + return ret; |
| 1949 | +} |
| 1950 | + |
| 1951 | +static int __devexit goldfish_pdev_bus_remove(struct platform_device *pdev) |
| 1952 | +{ |
| 1953 | + free_irq(pdev_bus_irq, pdev); |
| 1954 | + return 0; |
| 1955 | +} |
| 1956 | + |
| 1957 | +static struct platform_driver goldfish_pdev_bus_driver = { |
| 1958 | + .probe = goldfish_pdev_bus_probe, |
| 1959 | + .remove = __devexit_p(goldfish_pdev_bus_remove), |
| 1960 | + .driver = { |
| 1961 | + .name = "goldfish_pdev_bus" |
| 1962 | + } |
| 1963 | +}; |
| 1964 | + |
| 1965 | +static int __init goldfish_pdev_bus_init(void) |
| 1966 | +{ |
| 1967 | + return platform_driver_register(&goldfish_pdev_bus_driver); |
| 1968 | +} |
| 1969 | + |
| 1970 | +static void __exit goldfish_pdev_bus_exit(void) |
| 1971 | +{ |
| 1972 | + platform_driver_unregister(&goldfish_pdev_bus_driver); |
| 1973 | +} |
| 1974 | + |
| 1975 | +module_init(goldfish_pdev_bus_init); |
| 1976 | +module_exit(goldfish_pdev_bus_exit); |
| 1977 | + |
| 1978 | --- /dev/null |
| 1979 | +++ b/arch/arm/mach-goldfish/timer.c |
| 1980 | @@ -0,0 +1,147 @@ |
| 1981 | +/* arch/arm/mach-goldfish/timer.c |
| 1982 | +** |
| 1983 | +** Copyright (C) 2007 Google, Inc. |
| 1984 | +** |
| 1985 | +** This software is licensed under the terms of the GNU General Public |
| 1986 | +** License version 2, as published by the Free Software Foundation, and |
| 1987 | +** may be copied, distributed, and modified under those terms. |
| 1988 | +** |
| 1989 | +** This program is distributed in the hope that it will be useful, |
| 1990 | +** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 1991 | +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 1992 | +** GNU General Public License for more details. |
| 1993 | +** |
| 1994 | +*/ |
| 1995 | + |
| 1996 | +#include <linux/clockchips.h> |
| 1997 | +#include <linux/interrupt.h> |
| 1998 | +#include <linux/irq.h> |
| 1999 | + |
| 2000 | +#include <mach/timer.h> |
| 2001 | +#include <mach/hardware.h> |
| 2002 | +#include <asm/io.h> |
| 2003 | +#include <asm/mach/time.h> |
| 2004 | + |
| 2005 | +#include <linux/platform_device.h> |
| 2006 | + |
| 2007 | +static DEFINE_SPINLOCK(goldfish_timer_lock); |
| 2008 | +static int goldfish_timer_ready; |
| 2009 | + |
| 2010 | +static irqreturn_t goldfish_timer_interrupt(int irq, void *dev_id) |
| 2011 | +{ |
| 2012 | + uint32_t timer_base = IO_ADDRESS(GOLDFISH_TIMER_BASE); |
| 2013 | + struct clock_event_device *evt = dev_id; |
| 2014 | + |
| 2015 | + writel(1, timer_base + TIMER_CLEAR_INTERRUPT); |
| 2016 | + if (evt->event_handler) |
| 2017 | + evt->event_handler(evt); |
| 2018 | + return IRQ_HANDLED; |
| 2019 | +} |
| 2020 | + |
| 2021 | +static cycle_t goldfish_timer_read(struct clocksource *cs) |
| 2022 | +{ |
| 2023 | + uint32_t timer_base = IO_ADDRESS(GOLDFISH_TIMER_BASE); |
| 2024 | + unsigned long irqflags; |
| 2025 | + cycle_t rv; |
| 2026 | + |
| 2027 | + spin_lock_irqsave(&goldfish_timer_lock, irqflags); |
| 2028 | + rv = readl(timer_base + TIMER_TIME_LOW); |
| 2029 | + rv |= (int64_t)readl(timer_base + TIMER_TIME_HIGH) << 32; |
| 2030 | + spin_unlock_irqrestore(&goldfish_timer_lock, irqflags); |
| 2031 | + return rv; |
| 2032 | +} |
| 2033 | + |
| 2034 | +static int goldfish_timer_set_next_event(unsigned long cycles, |
| 2035 | + struct clock_event_device *evt) |
| 2036 | +{ |
| 2037 | + uint32_t timer_base = IO_ADDRESS(GOLDFISH_TIMER_BASE); |
| 2038 | + unsigned long irqflags; |
| 2039 | + uint64_t alarm; |
| 2040 | + |
| 2041 | + spin_lock_irqsave(&goldfish_timer_lock, irqflags); |
| 2042 | + alarm = readl(timer_base + TIMER_TIME_LOW); |
| 2043 | + alarm |= (int64_t)readl(timer_base + TIMER_TIME_HIGH) << 32; |
| 2044 | + alarm += cycles; |
| 2045 | + writel(alarm >> 32, timer_base + TIMER_ALARM_HIGH); |
| 2046 | + writel(alarm, timer_base + TIMER_ALARM_LOW); |
| 2047 | + spin_unlock_irqrestore(&goldfish_timer_lock, irqflags); |
| 2048 | + return 0; |
| 2049 | +} |
| 2050 | + |
| 2051 | +static void goldfish_timer_set_mode(enum clock_event_mode mode, |
| 2052 | + struct clock_event_device *evt) |
| 2053 | +{ |
| 2054 | + uint32_t timer_base = IO_ADDRESS(GOLDFISH_TIMER_BASE); |
| 2055 | + switch (mode) { |
| 2056 | + case CLOCK_EVT_MODE_RESUME: |
| 2057 | + case CLOCK_EVT_MODE_PERIODIC: |
| 2058 | + break; |
| 2059 | + case CLOCK_EVT_MODE_ONESHOT: |
| 2060 | + break; |
| 2061 | + case CLOCK_EVT_MODE_UNUSED: |
| 2062 | + case CLOCK_EVT_MODE_SHUTDOWN: |
| 2063 | + writel(1, timer_base + TIMER_CLEAR_ALARM); |
| 2064 | + break; |
| 2065 | + } |
| 2066 | +} |
| 2067 | + |
| 2068 | +unsigned long long sched_clock(void) |
| 2069 | +{ |
| 2070 | + if(goldfish_timer_ready) |
| 2071 | + return ktime_to_ns(ktime_get()); |
| 2072 | + else |
| 2073 | + return 0; |
| 2074 | +} |
| 2075 | + |
| 2076 | +static struct clock_event_device goldfish_clockevent = { |
| 2077 | + .name = "goldfish_timer", |
| 2078 | + .features = CLOCK_EVT_FEAT_ONESHOT, |
| 2079 | + .max_delta_ns = ULONG_MAX, |
| 2080 | + .min_delta_ns = 1, |
| 2081 | + .mult = 1, |
| 2082 | + .shift = 0, |
| 2083 | + .rating = 200, |
| 2084 | + .set_next_event = goldfish_timer_set_next_event, |
| 2085 | + .set_mode = goldfish_timer_set_mode, |
| 2086 | +}; |
| 2087 | + |
| 2088 | +static struct clocksource goldfish_clocksource = { |
| 2089 | + .name = "goldfish_timer", |
| 2090 | + .rating = 200, |
| 2091 | + .read = goldfish_timer_read, |
| 2092 | + .mult = 1, |
| 2093 | + .mask = CLOCKSOURCE_MASK(64), |
| 2094 | + .shift = 0, |
| 2095 | + .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
| 2096 | +}; |
| 2097 | + |
| 2098 | +static struct irqaction goldfish_timer_irq = { |
| 2099 | + .name = "Goldfish Timer Tick", |
| 2100 | + .flags = IRQF_DISABLED | IRQF_TIMER, |
| 2101 | + .handler = goldfish_timer_interrupt, |
| 2102 | + .dev_id = &goldfish_clockevent, |
| 2103 | +}; |
| 2104 | + |
| 2105 | +static void __init goldfish_timer_init(void) |
| 2106 | +{ |
| 2107 | + int res; |
| 2108 | + |
| 2109 | + res = clocksource_register(&goldfish_clocksource); |
| 2110 | + if (res) |
| 2111 | + printk(KERN_ERR "goldfish_timer_init: " |
| 2112 | + "clocksource_register failed\n"); |
| 2113 | + |
| 2114 | + res = setup_irq(IRQ_TIMER, &goldfish_timer_irq); |
| 2115 | + if (res) |
| 2116 | + printk(KERN_ERR "goldfish_timer_init: setup_irq failed\n"); |
| 2117 | + |
| 2118 | + goldfish_clockevent.cpumask = cpumask_of(0); |
| 2119 | + clockevents_register_device(&goldfish_clockevent); |
| 2120 | + |
| 2121 | + goldfish_timer_ready = 1; |
| 2122 | +} |
| 2123 | + |
| 2124 | +struct sys_timer goldfish_timer = { |
| 2125 | + .init = goldfish_timer_init, |
| 2126 | +}; |
| 2127 | + |
| 2128 | |