diff options
-rw-r--r-- | arch/arm/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/configs/w90p910_defconfig | 423 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/clock.c | 77 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/clock.h | 36 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/cpu.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/gpio.c | 154 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/clkdev.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/gpio.h | 34 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/irqs.h | 49 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/map.h | 101 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/regs-clock.h | 31 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/include/mach/regs-usb.h | 35 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/mach-w90p910evb.c | 164 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/mfp-w90p910.c | 116 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/w90p910.c | 53 |
16 files changed, 1189 insertions, 98 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 8381bd793146..430d2b756165 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -478,6 +478,9 @@ config ARCH_NS9XXX | |||
478 | config ARCH_W90X900 | 478 | config ARCH_W90X900 |
479 | bool "Nuvoton W90X900 CPU" | 479 | bool "Nuvoton W90X900 CPU" |
480 | select CPU_ARM926T | 480 | select CPU_ARM926T |
481 | select ARCH_REQUIRE_GPIOLIB | ||
482 | select GENERIC_GPIO | ||
483 | select COMMON_CLKDEV | ||
481 | help | 484 | help |
482 | Support for Nuvoton (Winbond logic dept.) ARM9 processor,You | 485 | Support for Nuvoton (Winbond logic dept.) ARM9 processor,You |
483 | can login www.mcuos.com or www.nuvoton.com to know more. | 486 | can login www.mcuos.com or www.nuvoton.com to know more. |
diff --git a/arch/arm/configs/w90p910_defconfig b/arch/arm/configs/w90p910_defconfig index 56bda7c6d670..5245655a0ad3 100644 --- a/arch/arm/configs/w90p910_defconfig +++ b/arch/arm/configs/w90p910_defconfig | |||
@@ -1,11 +1,11 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.27-rc8-git8 | 3 | # Linux kernel version: 2.6.30 |
4 | # Sat Nov 15 10:05:00 2008 | 4 | # Wed Jun 10 22:09:25 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | # CONFIG_GENERIC_GPIO is not set | 8 | CONFIG_GENERIC_GPIO=y |
9 | # CONFIG_GENERIC_TIME is not set | 9 | # CONFIG_GENERIC_TIME is not set |
10 | # CONFIG_GENERIC_CLOCKEVENTS is not set | 10 | # CONFIG_GENERIC_CLOCKEVENTS is not set |
11 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
@@ -22,8 +22,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
23 | CONFIG_GENERIC_HWEIGHT=y | 23 | CONFIG_GENERIC_HWEIGHT=y |
24 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 24 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
26 | CONFIG_ZONE_DMA=y | ||
27 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 25 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
28 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
29 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -42,10 +40,19 @@ CONFIG_SYSVIPC=y | |||
42 | CONFIG_SYSVIPC_SYSCTL=y | 40 | CONFIG_SYSVIPC_SYSCTL=y |
43 | CONFIG_BSD_PROCESS_ACCT=y | 41 | CONFIG_BSD_PROCESS_ACCT=y |
44 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 42 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
43 | |||
44 | # | ||
45 | # RCU Subsystem | ||
46 | # | ||
47 | CONFIG_CLASSIC_RCU=y | ||
48 | # CONFIG_TREE_RCU is not set | ||
49 | # CONFIG_PREEMPT_RCU is not set | ||
50 | # CONFIG_TREE_RCU_TRACE is not set | ||
51 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
45 | # CONFIG_IKCONFIG is not set | 52 | # CONFIG_IKCONFIG is not set |
46 | CONFIG_LOG_BUF_SHIFT=17 | 53 | CONFIG_LOG_BUF_SHIFT=17 |
47 | # CONFIG_CGROUPS is not set | ||
48 | # CONFIG_GROUP_SCHED is not set | 54 | # CONFIG_GROUP_SCHED is not set |
55 | # CONFIG_CGROUPS is not set | ||
49 | CONFIG_SYSFS_DEPRECATED=y | 56 | CONFIG_SYSFS_DEPRECATED=y |
50 | CONFIG_SYSFS_DEPRECATED_V2=y | 57 | CONFIG_SYSFS_DEPRECATED_V2=y |
51 | CONFIG_RELAY=y | 58 | CONFIG_RELAY=y |
@@ -56,52 +63,53 @@ CONFIG_USER_NS=y | |||
56 | # CONFIG_PID_NS is not set | 63 | # CONFIG_PID_NS is not set |
57 | CONFIG_BLK_DEV_INITRD=y | 64 | CONFIG_BLK_DEV_INITRD=y |
58 | CONFIG_INITRAMFS_SOURCE="" | 65 | CONFIG_INITRAMFS_SOURCE="" |
66 | CONFIG_RD_GZIP=y | ||
67 | CONFIG_RD_BZIP2=y | ||
68 | CONFIG_RD_LZMA=y | ||
69 | # CONFIG_INITRAMFS_COMPRESSION_NONE is not set | ||
70 | # CONFIG_INITRAMFS_COMPRESSION_GZIP is not set | ||
71 | # CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set | ||
72 | # CONFIG_INITRAMFS_COMPRESSION_LZMA is not set | ||
59 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 73 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
60 | CONFIG_SYSCTL=y | 74 | CONFIG_SYSCTL=y |
75 | CONFIG_ANON_INODES=y | ||
61 | # CONFIG_EMBEDDED is not set | 76 | # CONFIG_EMBEDDED is not set |
62 | CONFIG_UID16=y | 77 | CONFIG_UID16=y |
63 | CONFIG_SYSCTL_SYSCALL=y | 78 | CONFIG_SYSCTL_SYSCALL=y |
64 | CONFIG_KALLSYMS=y | 79 | CONFIG_KALLSYMS=y |
65 | CONFIG_KALLSYMS_EXTRA_PASS=y | 80 | CONFIG_KALLSYMS_EXTRA_PASS=y |
81 | # CONFIG_STRIP_ASM_SYMS is not set | ||
66 | CONFIG_HOTPLUG=y | 82 | CONFIG_HOTPLUG=y |
67 | CONFIG_PRINTK=y | 83 | CONFIG_PRINTK=y |
68 | CONFIG_BUG=y | 84 | CONFIG_BUG=y |
69 | CONFIG_ELF_CORE=y | 85 | CONFIG_ELF_CORE=y |
70 | CONFIG_COMPAT_BRK=y | ||
71 | CONFIG_BASE_FULL=y | 86 | CONFIG_BASE_FULL=y |
72 | CONFIG_FUTEX=y | 87 | CONFIG_FUTEX=y |
73 | CONFIG_ANON_INODES=y | ||
74 | CONFIG_EPOLL=y | 88 | CONFIG_EPOLL=y |
75 | CONFIG_SIGNALFD=y | 89 | CONFIG_SIGNALFD=y |
76 | CONFIG_TIMERFD=y | 90 | CONFIG_TIMERFD=y |
77 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
78 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_AIO=y | ||
79 | CONFIG_VM_EVENT_COUNTERS=y | 94 | CONFIG_VM_EVENT_COUNTERS=y |
95 | CONFIG_COMPAT_BRK=y | ||
80 | CONFIG_SLAB=y | 96 | CONFIG_SLAB=y |
81 | # CONFIG_SLUB is not set | 97 | # CONFIG_SLUB is not set |
82 | # CONFIG_SLOB is not set | 98 | # CONFIG_SLOB is not set |
83 | # CONFIG_PROFILING is not set | 99 | # CONFIG_PROFILING is not set |
100 | CONFIG_TRACEPOINTS=y | ||
84 | # CONFIG_MARKERS is not set | 101 | # CONFIG_MARKERS is not set |
85 | CONFIG_HAVE_OPROFILE=y | 102 | CONFIG_HAVE_OPROFILE=y |
86 | # CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set | ||
87 | # CONFIG_HAVE_IOREMAP_PROT is not set | ||
88 | CONFIG_HAVE_KPROBES=y | 103 | CONFIG_HAVE_KPROBES=y |
89 | CONFIG_HAVE_KRETPROBES=y | 104 | CONFIG_HAVE_KRETPROBES=y |
90 | # CONFIG_HAVE_ARCH_TRACEHOOK is not set | 105 | # CONFIG_SLOW_WORK is not set |
91 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
92 | # CONFIG_USE_GENERIC_SMP_HELPERS is not set | ||
93 | # CONFIG_HAVE_CLK is not set | ||
94 | CONFIG_PROC_PAGE_MONITOR=y | ||
95 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 106 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
96 | CONFIG_SLABINFO=y | 107 | CONFIG_SLABINFO=y |
97 | CONFIG_RT_MUTEXES=y | 108 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | ||
99 | CONFIG_BASE_SMALL=0 | 109 | CONFIG_BASE_SMALL=0 |
100 | # CONFIG_MODULES is not set | 110 | # CONFIG_MODULES is not set |
101 | CONFIG_BLOCK=y | 111 | CONFIG_BLOCK=y |
102 | CONFIG_LBD=y | 112 | CONFIG_LBD=y |
103 | CONFIG_BLK_DEV_IO_TRACE=y | ||
104 | CONFIG_LSF=y | ||
105 | CONFIG_BLK_DEV_BSG=y | 113 | CONFIG_BLK_DEV_BSG=y |
106 | # CONFIG_BLK_DEV_INTEGRITY is not set | 114 | # CONFIG_BLK_DEV_INTEGRITY is not set |
107 | 115 | ||
@@ -117,7 +125,7 @@ CONFIG_IOSCHED_CFQ=y | |||
117 | CONFIG_DEFAULT_CFQ=y | 125 | CONFIG_DEFAULT_CFQ=y |
118 | # CONFIG_DEFAULT_NOOP is not set | 126 | # CONFIG_DEFAULT_NOOP is not set |
119 | CONFIG_DEFAULT_IOSCHED="cfq" | 127 | CONFIG_DEFAULT_IOSCHED="cfq" |
120 | CONFIG_CLASSIC_RCU=y | 128 | # CONFIG_FREEZER is not set |
121 | 129 | ||
122 | # | 130 | # |
123 | # System Type | 131 | # System Type |
@@ -127,10 +135,10 @@ CONFIG_CLASSIC_RCU=y | |||
127 | # CONFIG_ARCH_REALVIEW is not set | 135 | # CONFIG_ARCH_REALVIEW is not set |
128 | # CONFIG_ARCH_VERSATILE is not set | 136 | # CONFIG_ARCH_VERSATILE is not set |
129 | # CONFIG_ARCH_AT91 is not set | 137 | # CONFIG_ARCH_AT91 is not set |
130 | # CONFIG_ARCH_CLPS7500 is not set | ||
131 | # CONFIG_ARCH_CLPS711X is not set | 138 | # CONFIG_ARCH_CLPS711X is not set |
132 | # CONFIG_ARCH_EBSA110 is not set | 139 | # CONFIG_ARCH_EBSA110 is not set |
133 | # CONFIG_ARCH_EP93XX is not set | 140 | # CONFIG_ARCH_EP93XX is not set |
141 | # CONFIG_ARCH_GEMINI is not set | ||
134 | # CONFIG_ARCH_FOOTBRIDGE is not set | 142 | # CONFIG_ARCH_FOOTBRIDGE is not set |
135 | # CONFIG_ARCH_NETX is not set | 143 | # CONFIG_ARCH_NETX is not set |
136 | # CONFIG_ARCH_H720X is not set | 144 | # CONFIG_ARCH_H720X is not set |
@@ -151,23 +159,17 @@ CONFIG_CLASSIC_RCU=y | |||
151 | # CONFIG_ARCH_ORION5X is not set | 159 | # CONFIG_ARCH_ORION5X is not set |
152 | # CONFIG_ARCH_PNX4008 is not set | 160 | # CONFIG_ARCH_PNX4008 is not set |
153 | # CONFIG_ARCH_PXA is not set | 161 | # CONFIG_ARCH_PXA is not set |
162 | # CONFIG_ARCH_MMP is not set | ||
154 | # CONFIG_ARCH_RPC is not set | 163 | # CONFIG_ARCH_RPC is not set |
155 | # CONFIG_ARCH_SA1100 is not set | 164 | # CONFIG_ARCH_SA1100 is not set |
156 | # CONFIG_ARCH_S3C2410 is not set | 165 | # CONFIG_ARCH_S3C2410 is not set |
166 | # CONFIG_ARCH_S3C64XX is not set | ||
157 | # CONFIG_ARCH_SHARK is not set | 167 | # CONFIG_ARCH_SHARK is not set |
158 | # CONFIG_ARCH_LH7A40X is not set | 168 | # CONFIG_ARCH_LH7A40X is not set |
159 | # CONFIG_ARCH_DAVINCI is not set | 169 | # CONFIG_ARCH_DAVINCI is not set |
160 | # CONFIG_ARCH_OMAP is not set | 170 | # CONFIG_ARCH_OMAP is not set |
161 | # CONFIG_ARCH_MSM7X00A is not set | 171 | # CONFIG_ARCH_MSM is not set |
162 | CONFIG_ARCH_W90X900=y | 172 | CONFIG_ARCH_W90X900=y |
163 | |||
164 | # | ||
165 | # Boot options | ||
166 | # | ||
167 | |||
168 | # | ||
169 | # Power management | ||
170 | # | ||
171 | CONFIG_CPU_W90P910=y | 173 | CONFIG_CPU_W90P910=y |
172 | 174 | ||
173 | # | 175 | # |
@@ -198,6 +200,7 @@ CONFIG_ARM_THUMB=y | |||
198 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | 200 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set |
199 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | 201 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set |
200 | # CONFIG_OUTER_CACHE is not set | 202 | # CONFIG_OUTER_CACHE is not set |
203 | CONFIG_COMMON_CLKDEV=y | ||
201 | 204 | ||
202 | # | 205 | # |
203 | # Bus support | 206 | # Bus support |
@@ -209,27 +212,32 @@ CONFIG_ARM_THUMB=y | |||
209 | # | 212 | # |
210 | # Kernel Features | 213 | # Kernel Features |
211 | # | 214 | # |
212 | # CONFIG_TICK_ONESHOT is not set | 215 | CONFIG_VMSPLIT_3G=y |
216 | # CONFIG_VMSPLIT_2G is not set | ||
217 | # CONFIG_VMSPLIT_1G is not set | ||
218 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
213 | CONFIG_PREEMPT=y | 219 | CONFIG_PREEMPT=y |
214 | CONFIG_HZ=100 | 220 | CONFIG_HZ=100 |
215 | CONFIG_AEABI=y | 221 | CONFIG_AEABI=y |
216 | CONFIG_OABI_COMPAT=y | 222 | CONFIG_OABI_COMPAT=y |
217 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | 223 | # CONFIG_ARCH_HAS_HOLES_MEMORYMODEL is not set |
218 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 224 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
225 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
226 | # CONFIG_HIGHMEM is not set | ||
219 | CONFIG_SELECT_MEMORY_MODEL=y | 227 | CONFIG_SELECT_MEMORY_MODEL=y |
220 | CONFIG_FLATMEM_MANUAL=y | 228 | CONFIG_FLATMEM_MANUAL=y |
221 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 229 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
222 | # CONFIG_SPARSEMEM_MANUAL is not set | 230 | # CONFIG_SPARSEMEM_MANUAL is not set |
223 | CONFIG_FLATMEM=y | 231 | CONFIG_FLATMEM=y |
224 | CONFIG_FLAT_NODE_MEM_MAP=y | 232 | CONFIG_FLAT_NODE_MEM_MAP=y |
225 | # CONFIG_SPARSEMEM_STATIC is not set | ||
226 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
227 | CONFIG_PAGEFLAGS_EXTENDED=y | 233 | CONFIG_PAGEFLAGS_EXTENDED=y |
228 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 234 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
229 | # CONFIG_RESOURCES_64BIT is not set | 235 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
230 | CONFIG_ZONE_DMA_FLAG=1 | 236 | CONFIG_ZONE_DMA_FLAG=0 |
231 | CONFIG_BOUNCE=y | ||
232 | CONFIG_VIRT_TO_BUS=y | 237 | CONFIG_VIRT_TO_BUS=y |
238 | CONFIG_UNEVICTABLE_LRU=y | ||
239 | CONFIG_HAVE_MLOCK=y | ||
240 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
233 | CONFIG_ALIGNMENT_TRAP=y | 241 | CONFIG_ALIGNMENT_TRAP=y |
234 | 242 | ||
235 | # | 243 | # |
@@ -237,12 +245,17 @@ CONFIG_ALIGNMENT_TRAP=y | |||
237 | # | 245 | # |
238 | CONFIG_ZBOOT_ROM_TEXT=0 | 246 | CONFIG_ZBOOT_ROM_TEXT=0 |
239 | CONFIG_ZBOOT_ROM_BSS=0 | 247 | CONFIG_ZBOOT_ROM_BSS=0 |
240 | CONFIG_CMDLINE="root=/dev/ram0 console=ttyS0,115200n8 initrd=0xa00000,4000000 mem=64M" | 248 | CONFIG_CMDLINE="root=/dev/ram0 console=ttyS0,115200n8 rdinit=/sbin/init mem=64M" |
241 | # CONFIG_XIP_KERNEL is not set | 249 | # CONFIG_XIP_KERNEL is not set |
242 | CONFIG_KEXEC=y | 250 | CONFIG_KEXEC=y |
243 | CONFIG_ATAGS_PROC=y | 251 | CONFIG_ATAGS_PROC=y |
244 | 252 | ||
245 | # | 253 | # |
254 | # CPU Power Management | ||
255 | # | ||
256 | # CONFIG_CPU_IDLE is not set | ||
257 | |||
258 | # | ||
246 | # Floating point emulation | 259 | # Floating point emulation |
247 | # | 260 | # |
248 | 261 | ||
@@ -258,6 +271,8 @@ CONFIG_FPE_NWFPE=y | |||
258 | # Userspace binary formats | 271 | # Userspace binary formats |
259 | # | 272 | # |
260 | CONFIG_BINFMT_ELF=y | 273 | CONFIG_BINFMT_ELF=y |
274 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
275 | CONFIG_HAVE_AOUT=y | ||
261 | # CONFIG_BINFMT_AOUT is not set | 276 | # CONFIG_BINFMT_AOUT is not set |
262 | # CONFIG_BINFMT_MISC is not set | 277 | # CONFIG_BINFMT_MISC is not set |
263 | 278 | ||
@@ -282,11 +297,93 @@ CONFIG_FW_LOADER=y | |||
282 | CONFIG_FIRMWARE_IN_KERNEL=y | 297 | CONFIG_FIRMWARE_IN_KERNEL=y |
283 | CONFIG_EXTRA_FIRMWARE="" | 298 | CONFIG_EXTRA_FIRMWARE="" |
284 | # CONFIG_SYS_HYPERVISOR is not set | 299 | # CONFIG_SYS_HYPERVISOR is not set |
285 | # CONFIG_MTD is not set | 300 | CONFIG_MTD=y |
301 | # CONFIG_MTD_DEBUG is not set | ||
302 | CONFIG_MTD_CONCAT=y | ||
303 | CONFIG_MTD_PARTITIONS=y | ||
304 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
305 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
306 | # CONFIG_MTD_AFS_PARTS is not set | ||
307 | # CONFIG_MTD_AR7_PARTS is not set | ||
308 | |||
309 | # | ||
310 | # User Modules And Translation Layers | ||
311 | # | ||
312 | CONFIG_MTD_CHAR=y | ||
313 | CONFIG_MTD_BLKDEVS=y | ||
314 | CONFIG_MTD_BLOCK=y | ||
315 | # CONFIG_FTL is not set | ||
316 | # CONFIG_NFTL is not set | ||
317 | # CONFIG_INFTL is not set | ||
318 | # CONFIG_RFD_FTL is not set | ||
319 | # CONFIG_SSFDC is not set | ||
320 | # CONFIG_MTD_OOPS is not set | ||
321 | |||
322 | # | ||
323 | # RAM/ROM/Flash chip drivers | ||
324 | # | ||
325 | CONFIG_MTD_CFI=y | ||
326 | # CONFIG_MTD_JEDECPROBE is not set | ||
327 | CONFIG_MTD_GEN_PROBE=y | ||
328 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
329 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
330 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
331 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
332 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
333 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
334 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
335 | CONFIG_MTD_CFI_I1=y | ||
336 | CONFIG_MTD_CFI_I2=y | ||
337 | # CONFIG_MTD_CFI_I4 is not set | ||
338 | # CONFIG_MTD_CFI_I8 is not set | ||
339 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
340 | CONFIG_MTD_CFI_AMDSTD=y | ||
341 | # CONFIG_MTD_CFI_STAA is not set | ||
342 | CONFIG_MTD_CFI_UTIL=y | ||
343 | # CONFIG_MTD_RAM is not set | ||
344 | # CONFIG_MTD_ROM is not set | ||
345 | # CONFIG_MTD_ABSENT is not set | ||
346 | |||
347 | # | ||
348 | # Mapping drivers for chip access | ||
349 | # | ||
350 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
351 | CONFIG_MTD_PHYSMAP=y | ||
352 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
353 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
354 | # CONFIG_MTD_PLATRAM is not set | ||
355 | |||
356 | # | ||
357 | # Self-contained MTD device drivers | ||
358 | # | ||
359 | # CONFIG_MTD_SLRAM is not set | ||
360 | # CONFIG_MTD_PHRAM is not set | ||
361 | # CONFIG_MTD_MTDRAM is not set | ||
362 | # CONFIG_MTD_BLOCK2MTD is not set | ||
363 | |||
364 | # | ||
365 | # Disk-On-Chip Device Drivers | ||
366 | # | ||
367 | # CONFIG_MTD_DOC2000 is not set | ||
368 | # CONFIG_MTD_DOC2001 is not set | ||
369 | # CONFIG_MTD_DOC2001PLUS is not set | ||
370 | # CONFIG_MTD_NAND is not set | ||
371 | # CONFIG_MTD_ONENAND is not set | ||
372 | |||
373 | # | ||
374 | # LPDDR flash memory drivers | ||
375 | # | ||
376 | # CONFIG_MTD_LPDDR is not set | ||
377 | |||
378 | # | ||
379 | # UBI - Unsorted block images | ||
380 | # | ||
381 | # CONFIG_MTD_UBI is not set | ||
286 | # CONFIG_PARPORT is not set | 382 | # CONFIG_PARPORT is not set |
287 | CONFIG_BLK_DEV=y | 383 | CONFIG_BLK_DEV=y |
288 | # CONFIG_BLK_DEV_COW_COMMON is not set | 384 | # CONFIG_BLK_DEV_COW_COMMON is not set |
289 | # CONFIG_BLK_DEV_LOOP is not set | 385 | # CONFIG_BLK_DEV_LOOP is not set |
386 | # CONFIG_BLK_DEV_UB is not set | ||
290 | CONFIG_BLK_DEV_RAM=y | 387 | CONFIG_BLK_DEV_RAM=y |
291 | CONFIG_BLK_DEV_RAM_COUNT=16 | 388 | CONFIG_BLK_DEV_RAM_COUNT=16 |
292 | CONFIG_BLK_DEV_RAM_SIZE=16384 | 389 | CONFIG_BLK_DEV_RAM_SIZE=16384 |
@@ -300,9 +397,41 @@ CONFIG_HAVE_IDE=y | |||
300 | # SCSI device support | 397 | # SCSI device support |
301 | # | 398 | # |
302 | # CONFIG_RAID_ATTRS is not set | 399 | # CONFIG_RAID_ATTRS is not set |
303 | # CONFIG_SCSI is not set | 400 | CONFIG_SCSI=y |
304 | # CONFIG_SCSI_DMA is not set | 401 | CONFIG_SCSI_DMA=y |
402 | # CONFIG_SCSI_TGT is not set | ||
305 | # CONFIG_SCSI_NETLINK is not set | 403 | # CONFIG_SCSI_NETLINK is not set |
404 | # CONFIG_SCSI_PROC_FS is not set | ||
405 | |||
406 | # | ||
407 | # SCSI support type (disk, tape, CD-ROM) | ||
408 | # | ||
409 | CONFIG_BLK_DEV_SD=y | ||
410 | # CONFIG_CHR_DEV_ST is not set | ||
411 | # CONFIG_CHR_DEV_OSST is not set | ||
412 | # CONFIG_BLK_DEV_SR is not set | ||
413 | # CONFIG_CHR_DEV_SG is not set | ||
414 | # CONFIG_CHR_DEV_SCH is not set | ||
415 | |||
416 | # | ||
417 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
418 | # | ||
419 | # CONFIG_SCSI_MULTI_LUN is not set | ||
420 | # CONFIG_SCSI_CONSTANTS is not set | ||
421 | # CONFIG_SCSI_LOGGING is not set | ||
422 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
423 | |||
424 | # | ||
425 | # SCSI Transports | ||
426 | # | ||
427 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
428 | # CONFIG_SCSI_FC_ATTRS is not set | ||
429 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
430 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
431 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
432 | # CONFIG_SCSI_LOWLEVEL is not set | ||
433 | # CONFIG_SCSI_DH is not set | ||
434 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
306 | # CONFIG_ATA is not set | 435 | # CONFIG_ATA is not set |
307 | # CONFIG_MD is not set | 436 | # CONFIG_MD is not set |
308 | 437 | ||
@@ -354,38 +483,57 @@ CONFIG_HW_CONSOLE=y | |||
354 | # | 483 | # |
355 | # Serial drivers | 484 | # Serial drivers |
356 | # | 485 | # |
357 | # CONFIG_SERIAL_8250 is not set | 486 | CONFIG_SERIAL_8250=y |
487 | CONFIG_SERIAL_8250_CONSOLE=y | ||
488 | CONFIG_SERIAL_8250_NR_UARTS=1 | ||
489 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 | ||
490 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
358 | 491 | ||
359 | # | 492 | # |
360 | # Non-8250 serial port support | 493 | # Non-8250 serial port support |
361 | # | 494 | # |
362 | CONFIG_SERIAL_W90X900=y | ||
363 | # CONFIG_SERIAL_W90X900_PORT1 is not set | ||
364 | # CONFIG_SERIAL_W90X900_PORT2 is not set | ||
365 | # CONFIG_SERIAL_W90X900_PORT3 is not set | ||
366 | # CONFIG_SERIAL_W90X900_PORT4 is not set | ||
367 | CONFIG_SERIAL_W90X900_CONSOLE=y | ||
368 | CONFIG_SERIAL_CORE=y | 495 | CONFIG_SERIAL_CORE=y |
369 | CONFIG_SERIAL_CORE_CONSOLE=y | 496 | CONFIG_SERIAL_CORE_CONSOLE=y |
370 | CONFIG_UNIX98_PTYS=y | 497 | CONFIG_UNIX98_PTYS=y |
498 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
371 | # CONFIG_LEGACY_PTYS is not set | 499 | # CONFIG_LEGACY_PTYS is not set |
372 | # CONFIG_IPMI_HANDLER is not set | 500 | # CONFIG_IPMI_HANDLER is not set |
373 | # CONFIG_HW_RANDOM is not set | 501 | # CONFIG_HW_RANDOM is not set |
374 | # CONFIG_NVRAM is not set | ||
375 | # CONFIG_R3964 is not set | 502 | # CONFIG_R3964 is not set |
376 | # CONFIG_RAW_DRIVER is not set | 503 | # CONFIG_RAW_DRIVER is not set |
377 | # CONFIG_TCG_TPM is not set | 504 | # CONFIG_TCG_TPM is not set |
378 | # CONFIG_I2C is not set | 505 | # CONFIG_I2C is not set |
379 | # CONFIG_SPI is not set | 506 | # CONFIG_SPI is not set |
507 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
508 | CONFIG_GPIOLIB=y | ||
509 | # CONFIG_GPIO_SYSFS is not set | ||
510 | |||
511 | # | ||
512 | # Memory mapped GPIO expanders: | ||
513 | # | ||
514 | |||
515 | # | ||
516 | # I2C GPIO expanders: | ||
517 | # | ||
518 | |||
519 | # | ||
520 | # PCI GPIO expanders: | ||
521 | # | ||
522 | |||
523 | # | ||
524 | # SPI GPIO expanders: | ||
525 | # | ||
380 | # CONFIG_W1 is not set | 526 | # CONFIG_W1 is not set |
381 | # CONFIG_POWER_SUPPLY is not set | 527 | # CONFIG_POWER_SUPPLY is not set |
382 | # CONFIG_HWMON is not set | 528 | # CONFIG_HWMON is not set |
529 | # CONFIG_THERMAL is not set | ||
530 | # CONFIG_THERMAL_HWMON is not set | ||
383 | # CONFIG_WATCHDOG is not set | 531 | # CONFIG_WATCHDOG is not set |
532 | CONFIG_SSB_POSSIBLE=y | ||
384 | 533 | ||
385 | # | 534 | # |
386 | # Sonics Silicon Backplane | 535 | # Sonics Silicon Backplane |
387 | # | 536 | # |
388 | CONFIG_SSB_POSSIBLE=y | ||
389 | # CONFIG_SSB is not set | 537 | # CONFIG_SSB is not set |
390 | 538 | ||
391 | # | 539 | # |
@@ -393,10 +541,11 @@ CONFIG_SSB_POSSIBLE=y | |||
393 | # | 541 | # |
394 | # CONFIG_MFD_CORE is not set | 542 | # CONFIG_MFD_CORE is not set |
395 | # CONFIG_MFD_SM501 is not set | 543 | # CONFIG_MFD_SM501 is not set |
544 | # CONFIG_MFD_ASIC3 is not set | ||
545 | # CONFIG_HTC_EGPIO is not set | ||
396 | # CONFIG_HTC_PASIC3 is not set | 546 | # CONFIG_HTC_PASIC3 is not set |
397 | # CONFIG_MFD_TMIO is not set | 547 | # CONFIG_MFD_TMIO is not set |
398 | # CONFIG_MFD_T7L66XB is not set | 548 | # CONFIG_MFD_TC6393XB is not set |
399 | # CONFIG_MFD_TC6387XB is not set | ||
400 | 549 | ||
401 | # | 550 | # |
402 | # Multimedia devices | 551 | # Multimedia devices |
@@ -433,33 +582,131 @@ CONFIG_SSB_POSSIBLE=y | |||
433 | CONFIG_DUMMY_CONSOLE=y | 582 | CONFIG_DUMMY_CONSOLE=y |
434 | # CONFIG_SOUND is not set | 583 | # CONFIG_SOUND is not set |
435 | # CONFIG_HID_SUPPORT is not set | 584 | # CONFIG_HID_SUPPORT is not set |
436 | # CONFIG_USB_SUPPORT is not set | 585 | CONFIG_USB_SUPPORT=y |
586 | CONFIG_USB_ARCH_HAS_HCD=y | ||
587 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
588 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
589 | CONFIG_USB=y | ||
590 | # CONFIG_USB_DEBUG is not set | ||
591 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
592 | |||
593 | # | ||
594 | # Miscellaneous USB options | ||
595 | # | ||
596 | # CONFIG_USB_DEVICEFS is not set | ||
597 | CONFIG_USB_DEVICE_CLASS=y | ||
598 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
599 | # CONFIG_USB_OTG is not set | ||
600 | CONFIG_USB_MON=y | ||
601 | # CONFIG_USB_WUSB is not set | ||
602 | # CONFIG_USB_WUSB_CBAF is not set | ||
603 | |||
604 | # | ||
605 | # USB Host Controller Drivers | ||
606 | # | ||
607 | # CONFIG_USB_C67X00_HCD is not set | ||
608 | # CONFIG_USB_OXU210HP_HCD is not set | ||
609 | # CONFIG_USB_ISP116X_HCD is not set | ||
610 | # CONFIG_USB_ISP1760_HCD is not set | ||
611 | # CONFIG_USB_SL811_HCD is not set | ||
612 | # CONFIG_USB_R8A66597_HCD is not set | ||
613 | # CONFIG_USB_HWA_HCD is not set | ||
614 | |||
615 | # | ||
616 | # USB Device Class drivers | ||
617 | # | ||
618 | # CONFIG_USB_ACM is not set | ||
619 | # CONFIG_USB_PRINTER is not set | ||
620 | # CONFIG_USB_WDM is not set | ||
621 | # CONFIG_USB_TMC is not set | ||
622 | |||
623 | # | ||
624 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
625 | # | ||
626 | |||
627 | # | ||
628 | # also be needed; see USB_STORAGE Help for more info | ||
629 | # | ||
630 | CONFIG_USB_STORAGE=y | ||
631 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
632 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
633 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
634 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
635 | # CONFIG_USB_STORAGE_USBAT is not set | ||
636 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
637 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
638 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
639 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
640 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
641 | # CONFIG_USB_STORAGE_KARMA is not set | ||
642 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
643 | # CONFIG_USB_LIBUSUAL is not set | ||
644 | |||
645 | # | ||
646 | # USB Imaging devices | ||
647 | # | ||
648 | # CONFIG_USB_MDC800 is not set | ||
649 | # CONFIG_USB_MICROTEK is not set | ||
650 | |||
651 | # | ||
652 | # USB port drivers | ||
653 | # | ||
654 | # CONFIG_USB_SERIAL is not set | ||
655 | |||
656 | # | ||
657 | # USB Miscellaneous drivers | ||
658 | # | ||
659 | # CONFIG_USB_EMI62 is not set | ||
660 | # CONFIG_USB_EMI26 is not set | ||
661 | # CONFIG_USB_ADUTUX is not set | ||
662 | # CONFIG_USB_SEVSEG is not set | ||
663 | # CONFIG_USB_RIO500 is not set | ||
664 | # CONFIG_USB_LEGOTOWER is not set | ||
665 | # CONFIG_USB_LCD is not set | ||
666 | # CONFIG_USB_BERRY_CHARGE is not set | ||
667 | # CONFIG_USB_LED is not set | ||
668 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
669 | # CONFIG_USB_CYTHERM is not set | ||
670 | # CONFIG_USB_IDMOUSE is not set | ||
671 | # CONFIG_USB_FTDI_ELAN is not set | ||
672 | # CONFIG_USB_APPLEDISPLAY is not set | ||
673 | # CONFIG_USB_LD is not set | ||
674 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
675 | # CONFIG_USB_IOWARRIOR is not set | ||
676 | # CONFIG_USB_ISIGHTFW is not set | ||
677 | # CONFIG_USB_VST is not set | ||
678 | # CONFIG_USB_GADGET is not set | ||
679 | |||
680 | # | ||
681 | # OTG and related infrastructure | ||
682 | # | ||
683 | # CONFIG_USB_GPIO_VBUS is not set | ||
684 | # CONFIG_NOP_USB_XCEIV is not set | ||
437 | # CONFIG_MMC is not set | 685 | # CONFIG_MMC is not set |
686 | # CONFIG_MEMSTICK is not set | ||
687 | # CONFIG_ACCESSIBILITY is not set | ||
438 | # CONFIG_NEW_LEDS is not set | 688 | # CONFIG_NEW_LEDS is not set |
439 | CONFIG_RTC_LIB=y | 689 | CONFIG_RTC_LIB=y |
440 | # CONFIG_RTC_CLASS is not set | 690 | # CONFIG_RTC_CLASS is not set |
441 | # CONFIG_DMADEVICES is not set | 691 | # CONFIG_DMADEVICES is not set |
442 | 692 | # CONFIG_AUXDISPLAY is not set | |
443 | # | ||
444 | # Voltage and Current regulators | ||
445 | # | ||
446 | # CONFIG_REGULATOR is not set | 693 | # CONFIG_REGULATOR is not set |
447 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | ||
448 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | ||
449 | # CONFIG_REGULATOR_BQ24022 is not set | ||
450 | # CONFIG_UIO is not set | 694 | # CONFIG_UIO is not set |
695 | # CONFIG_STAGING is not set | ||
451 | 696 | ||
452 | # | 697 | # |
453 | # File systems | 698 | # File systems |
454 | # | 699 | # |
455 | # CONFIG_EXT2_FS is not set | 700 | # CONFIG_EXT2_FS is not set |
456 | # CONFIG_EXT3_FS is not set | 701 | # CONFIG_EXT3_FS is not set |
457 | # CONFIG_EXT4DEV_FS is not set | 702 | # CONFIG_EXT4_FS is not set |
458 | # CONFIG_REISERFS_FS is not set | 703 | # CONFIG_REISERFS_FS is not set |
459 | # CONFIG_JFS_FS is not set | 704 | # CONFIG_JFS_FS is not set |
460 | CONFIG_FS_POSIX_ACL=y | 705 | CONFIG_FS_POSIX_ACL=y |
706 | CONFIG_FILE_LOCKING=y | ||
461 | # CONFIG_XFS_FS is not set | 707 | # CONFIG_XFS_FS is not set |
462 | # CONFIG_GFS2_FS is not set | 708 | # CONFIG_GFS2_FS is not set |
709 | # CONFIG_BTRFS_FS is not set | ||
463 | # CONFIG_DNOTIFY is not set | 710 | # CONFIG_DNOTIFY is not set |
464 | # CONFIG_INOTIFY is not set | 711 | # CONFIG_INOTIFY is not set |
465 | # CONFIG_QUOTA is not set | 712 | # CONFIG_QUOTA is not set |
@@ -469,6 +716,11 @@ CONFIG_FS_POSIX_ACL=y | |||
469 | CONFIG_GENERIC_ACL=y | 716 | CONFIG_GENERIC_ACL=y |
470 | 717 | ||
471 | # | 718 | # |
719 | # Caches | ||
720 | # | ||
721 | # CONFIG_FSCACHE is not set | ||
722 | |||
723 | # | ||
472 | # CD-ROM/DVD Filesystems | 724 | # CD-ROM/DVD Filesystems |
473 | # | 725 | # |
474 | # CONFIG_ISO9660_FS is not set | 726 | # CONFIG_ISO9660_FS is not set |
@@ -486,15 +738,13 @@ CONFIG_GENERIC_ACL=y | |||
486 | # | 738 | # |
487 | CONFIG_PROC_FS=y | 739 | CONFIG_PROC_FS=y |
488 | CONFIG_PROC_SYSCTL=y | 740 | CONFIG_PROC_SYSCTL=y |
741 | CONFIG_PROC_PAGE_MONITOR=y | ||
489 | CONFIG_SYSFS=y | 742 | CONFIG_SYSFS=y |
490 | CONFIG_TMPFS=y | 743 | CONFIG_TMPFS=y |
491 | CONFIG_TMPFS_POSIX_ACL=y | 744 | CONFIG_TMPFS_POSIX_ACL=y |
492 | # CONFIG_HUGETLB_PAGE is not set | 745 | # CONFIG_HUGETLB_PAGE is not set |
493 | # CONFIG_CONFIGFS_FS is not set | 746 | # CONFIG_CONFIGFS_FS is not set |
494 | 747 | CONFIG_MISC_FILESYSTEMS=y | |
495 | # | ||
496 | # Miscellaneous filesystems | ||
497 | # | ||
498 | # CONFIG_ADFS_FS is not set | 748 | # CONFIG_ADFS_FS is not set |
499 | # CONFIG_AFFS_FS is not set | 749 | # CONFIG_AFFS_FS is not set |
500 | # CONFIG_HFS_FS is not set | 750 | # CONFIG_HFS_FS is not set |
@@ -502,15 +752,22 @@ CONFIG_TMPFS_POSIX_ACL=y | |||
502 | # CONFIG_BEFS_FS is not set | 752 | # CONFIG_BEFS_FS is not set |
503 | # CONFIG_BFS_FS is not set | 753 | # CONFIG_BFS_FS is not set |
504 | # CONFIG_EFS_FS is not set | 754 | # CONFIG_EFS_FS is not set |
755 | # CONFIG_JFFS2_FS is not set | ||
505 | # CONFIG_CRAMFS is not set | 756 | # CONFIG_CRAMFS is not set |
757 | # CONFIG_SQUASHFS is not set | ||
506 | # CONFIG_VXFS_FS is not set | 758 | # CONFIG_VXFS_FS is not set |
507 | # CONFIG_MINIX_FS is not set | 759 | # CONFIG_MINIX_FS is not set |
508 | # CONFIG_OMFS_FS is not set | 760 | # CONFIG_OMFS_FS is not set |
509 | # CONFIG_HPFS_FS is not set | 761 | # CONFIG_HPFS_FS is not set |
510 | # CONFIG_QNX4FS_FS is not set | 762 | # CONFIG_QNX4FS_FS is not set |
511 | CONFIG_ROMFS_FS=y | 763 | CONFIG_ROMFS_FS=y |
764 | CONFIG_ROMFS_BACKED_BY_BLOCK=y | ||
765 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
766 | # CONFIG_ROMFS_BACKED_BY_BOTH is not set | ||
767 | CONFIG_ROMFS_ON_BLOCK=y | ||
512 | # CONFIG_SYSV_FS is not set | 768 | # CONFIG_SYSV_FS is not set |
513 | # CONFIG_UFS_FS is not set | 769 | # CONFIG_UFS_FS is not set |
770 | # CONFIG_NILFS2_FS is not set | ||
514 | 771 | ||
515 | # | 772 | # |
516 | # Partition Types | 773 | # Partition Types |
@@ -586,18 +843,36 @@ CONFIG_FRAME_WARN=1024 | |||
586 | CONFIG_DEBUG_FS=y | 843 | CONFIG_DEBUG_FS=y |
587 | # CONFIG_HEADERS_CHECK is not set | 844 | # CONFIG_HEADERS_CHECK is not set |
588 | # CONFIG_DEBUG_KERNEL is not set | 845 | # CONFIG_DEBUG_KERNEL is not set |
846 | CONFIG_STACKTRACE=y | ||
589 | CONFIG_DEBUG_BUGVERBOSE=y | 847 | CONFIG_DEBUG_BUGVERBOSE=y |
590 | CONFIG_DEBUG_MEMORY_INIT=y | 848 | CONFIG_DEBUG_MEMORY_INIT=y |
591 | CONFIG_FRAME_POINTER=y | 849 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
592 | # CONFIG_LATENCYTOP is not set | 850 | # CONFIG_LATENCYTOP is not set |
593 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 851 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
594 | CONFIG_HAVE_FTRACE=y | 852 | CONFIG_NOP_TRACER=y |
595 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 853 | CONFIG_HAVE_FUNCTION_TRACER=y |
596 | # CONFIG_FTRACE is not set | 854 | CONFIG_RING_BUFFER=y |
855 | CONFIG_TRACING=y | ||
856 | CONFIG_TRACING_SUPPORT=y | ||
857 | |||
858 | # | ||
859 | # Tracers | ||
860 | # | ||
861 | # CONFIG_FUNCTION_TRACER is not set | ||
597 | # CONFIG_SCHED_TRACER is not set | 862 | # CONFIG_SCHED_TRACER is not set |
598 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 863 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
864 | # CONFIG_EVENT_TRACER is not set | ||
865 | # CONFIG_BOOT_TRACER is not set | ||
866 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
867 | # CONFIG_STACK_TRACER is not set | ||
868 | # CONFIG_KMEMTRACE is not set | ||
869 | # CONFIG_WORKQUEUE_TRACER is not set | ||
870 | CONFIG_BLK_DEV_IO_TRACE=y | ||
871 | # CONFIG_FTRACE_STARTUP_TEST is not set | ||
872 | # CONFIG_DYNAMIC_DEBUG is not set | ||
599 | # CONFIG_SAMPLES is not set | 873 | # CONFIG_SAMPLES is not set |
600 | CONFIG_HAVE_ARCH_KGDB=y | 874 | CONFIG_HAVE_ARCH_KGDB=y |
875 | CONFIG_ARM_UNWIND=y | ||
601 | # CONFIG_DEBUG_USER is not set | 876 | # CONFIG_DEBUG_USER is not set |
602 | 877 | ||
603 | # | 878 | # |
@@ -605,14 +880,15 @@ CONFIG_HAVE_ARCH_KGDB=y | |||
605 | # | 880 | # |
606 | # CONFIG_KEYS is not set | 881 | # CONFIG_KEYS is not set |
607 | # CONFIG_SECURITY is not set | 882 | # CONFIG_SECURITY is not set |
883 | # CONFIG_SECURITYFS is not set | ||
608 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 884 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
609 | # CONFIG_CRYPTO is not set | 885 | # CONFIG_CRYPTO is not set |
886 | CONFIG_BINARY_PRINTF=y | ||
610 | 887 | ||
611 | # | 888 | # |
612 | # Library routines | 889 | # Library routines |
613 | # | 890 | # |
614 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | 891 | CONFIG_GENERIC_FIND_LAST_BIT=y |
615 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
616 | # CONFIG_CRC_CCITT is not set | 892 | # CONFIG_CRC_CCITT is not set |
617 | # CONFIG_CRC16 is not set | 893 | # CONFIG_CRC16 is not set |
618 | # CONFIG_CRC_T10DIF is not set | 894 | # CONFIG_CRC_T10DIF is not set |
@@ -620,7 +896,10 @@ CONFIG_HAVE_ARCH_KGDB=y | |||
620 | # CONFIG_CRC32 is not set | 896 | # CONFIG_CRC32 is not set |
621 | # CONFIG_CRC7 is not set | 897 | # CONFIG_CRC7 is not set |
622 | # CONFIG_LIBCRC32C is not set | 898 | # CONFIG_LIBCRC32C is not set |
623 | CONFIG_PLIST=y | 899 | CONFIG_ZLIB_INFLATE=y |
900 | CONFIG_DECOMPRESS_GZIP=y | ||
901 | CONFIG_DECOMPRESS_BZIP2=y | ||
902 | CONFIG_DECOMPRESS_LZMA=y | ||
624 | CONFIG_HAS_IOMEM=y | 903 | CONFIG_HAS_IOMEM=y |
625 | CONFIG_HAS_IOPORT=y | 904 | CONFIG_HAS_IOPORT=y |
626 | CONFIG_HAS_DMA=y | 905 | CONFIG_HAS_DMA=y |
diff --git a/arch/arm/mach-w90x900/Makefile b/arch/arm/mach-w90x900/Makefile index 0c0c1d63f1c7..d50c94f4dbdf 100644 --- a/arch/arm/mach-w90x900/Makefile +++ b/arch/arm/mach-w90x900/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | # Object file lists. | 5 | # Object file lists. |
6 | 6 | ||
7 | obj-y := irq.o time.o | 7 | obj-y := irq.o time.o mfp-w90p910.o gpio.o clock.o |
8 | 8 | ||
9 | # W90X900 CPU support files | 9 | # W90X900 CPU support files |
10 | 10 | ||
diff --git a/arch/arm/mach-w90x900/clock.c b/arch/arm/mach-w90x900/clock.c new file mode 100644 index 000000000000..f420613cd395 --- /dev/null +++ b/arch/arm/mach-w90x900/clock.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-w90x900/clock.c | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License. | ||
11 | */ | ||
12 | |||
13 | #include <linux/module.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/list.h> | ||
16 | #include <linux/errno.h> | ||
17 | #include <linux/err.h> | ||
18 | #include <linux/string.h> | ||
19 | #include <linux/clk.h> | ||
20 | #include <linux/spinlock.h> | ||
21 | #include <linux/platform_device.h> | ||
22 | #include <linux/io.h> | ||
23 | |||
24 | #include <mach/hardware.h> | ||
25 | |||
26 | #include "clock.h" | ||
27 | |||
28 | static DEFINE_SPINLOCK(clocks_lock); | ||
29 | |||
30 | int clk_enable(struct clk *clk) | ||
31 | { | ||
32 | unsigned long flags; | ||
33 | |||
34 | spin_lock_irqsave(&clocks_lock, flags); | ||
35 | if (clk->enabled++ == 0) | ||
36 | (clk->enable)(clk, 1); | ||
37 | spin_unlock_irqrestore(&clocks_lock, flags); | ||
38 | |||
39 | return 0; | ||
40 | } | ||
41 | EXPORT_SYMBOL(clk_enable); | ||
42 | |||
43 | void clk_disable(struct clk *clk) | ||
44 | { | ||
45 | unsigned long flags; | ||
46 | |||
47 | WARN_ON(clk->enabled == 0); | ||
48 | |||
49 | spin_lock_irqsave(&clocks_lock, flags); | ||
50 | if (--clk->enabled == 0) | ||
51 | (clk->enable)(clk, 0); | ||
52 | spin_unlock_irqrestore(&clocks_lock, flags); | ||
53 | } | ||
54 | EXPORT_SYMBOL(clk_disable); | ||
55 | |||
56 | void w90x900_clk_enable(struct clk *clk, int enable) | ||
57 | { | ||
58 | unsigned int clocks = clk->cken; | ||
59 | unsigned long clken; | ||
60 | |||
61 | clken = __raw_readl(W90X900_VA_CLKPWR); | ||
62 | |||
63 | if (enable) | ||
64 | clken |= clocks; | ||
65 | else | ||
66 | clken &= ~clocks; | ||
67 | |||
68 | __raw_writel(clken, W90X900_VA_CLKPWR); | ||
69 | } | ||
70 | |||
71 | void clks_register(struct clk_lookup *clks, size_t num) | ||
72 | { | ||
73 | int i; | ||
74 | |||
75 | for (i = 0; i < num; i++) | ||
76 | clkdev_add(&clks[i]); | ||
77 | } | ||
diff --git a/arch/arm/mach-w90x900/clock.h b/arch/arm/mach-w90x900/clock.h new file mode 100644 index 000000000000..4f27bda76d56 --- /dev/null +++ b/arch/arm/mach-w90x900/clock.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-w90x900/clock.h | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License. | ||
11 | */ | ||
12 | |||
13 | #include <asm/clkdev.h> | ||
14 | |||
15 | void w90x900_clk_enable(struct clk *clk, int enable); | ||
16 | void clks_register(struct clk_lookup *clks, size_t num); | ||
17 | |||
18 | struct clk { | ||
19 | unsigned long cken; | ||
20 | unsigned int enabled; | ||
21 | void (*enable)(struct clk *, int enable); | ||
22 | }; | ||
23 | |||
24 | #define DEFINE_CLK(_name, _ctrlbit) \ | ||
25 | struct clk clk_##_name = { \ | ||
26 | .enable = w90x900_clk_enable, \ | ||
27 | .cken = (1 << _ctrlbit), \ | ||
28 | } | ||
29 | |||
30 | #define DEF_CLKLOOK(_clk, _devname, _conname) \ | ||
31 | { \ | ||
32 | .clk = _clk, \ | ||
33 | .dev_id = _devname, \ | ||
34 | .con_id = _conname, \ | ||
35 | } | ||
36 | |||
diff --git a/arch/arm/mach-w90x900/cpu.h b/arch/arm/mach-w90x900/cpu.h index de29ddcb9459..57b5dbabeb41 100644 --- a/arch/arm/mach-w90x900/cpu.h +++ b/arch/arm/mach-w90x900/cpu.h | |||
@@ -41,7 +41,7 @@ struct sys_timer; | |||
41 | extern void w90x900_init_irq(void); | 41 | extern void w90x900_init_irq(void); |
42 | extern void w90p910_init_io(struct map_desc *mach_desc, int size); | 42 | extern void w90p910_init_io(struct map_desc *mach_desc, int size); |
43 | extern void w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no); | 43 | extern void w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no); |
44 | extern void w90p910_init_clocks(int xtal); | 44 | extern void w90p910_init_clocks(void); |
45 | extern void w90p910_map_io(struct map_desc *mach_desc, int size); | 45 | extern void w90p910_map_io(struct map_desc *mach_desc, int size); |
46 | extern struct platform_device w90p910_serial_device; | 46 | extern struct platform_device w90p910_serial_device; |
47 | extern struct sys_timer w90x900_timer; | 47 | extern struct sys_timer w90x900_timer; |
diff --git a/arch/arm/mach-w90x900/gpio.c b/arch/arm/mach-w90x900/gpio.c new file mode 100644 index 000000000000..c72e0dfa1825 --- /dev/null +++ b/arch/arm/mach-w90x900/gpio.c | |||
@@ -0,0 +1,154 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-w90p910/gpio.c | ||
3 | * | ||
4 | * Generic w90p910 GPIO handling | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/clk.h> | ||
14 | #include <linux/errno.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/irq.h> | ||
17 | #include <linux/debugfs.h> | ||
18 | #include <linux/seq_file.h> | ||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/list.h> | ||
21 | #include <linux/module.h> | ||
22 | #include <linux/io.h> | ||
23 | #include <linux/gpio.h> | ||
24 | |||
25 | #include <mach/hardware.h> | ||
26 | |||
27 | #define GPIO_BASE (W90X900_VA_GPIO) | ||
28 | #define GPIO_DIR (0x04) | ||
29 | #define GPIO_OUT (0x08) | ||
30 | #define GPIO_IN (0x0C) | ||
31 | #define GROUPINERV (0x10) | ||
32 | #define GPIO_GPIO(Nb) (0x00000001 << (Nb)) | ||
33 | #define to_w90p910_gpio_chip(c) container_of(c, struct w90p910_gpio_chip, chip) | ||
34 | |||
35 | #define W90P910_GPIO_CHIP(name, base_gpio, nr_gpio) \ | ||
36 | { \ | ||
37 | .chip = { \ | ||
38 | .label = name, \ | ||
39 | .direction_input = w90p910_dir_input, \ | ||
40 | .direction_output = w90p910_dir_output, \ | ||
41 | .get = w90p910_gpio_get, \ | ||
42 | .set = w90p910_gpio_set, \ | ||
43 | .base = base_gpio, \ | ||
44 | .ngpio = nr_gpio, \ | ||
45 | } \ | ||
46 | } | ||
47 | |||
48 | struct w90p910_gpio_chip { | ||
49 | struct gpio_chip chip; | ||
50 | void __iomem *regbase; /* Base of group register*/ | ||
51 | spinlock_t gpio_lock; | ||
52 | }; | ||
53 | |||
54 | static int w90p910_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
55 | { | ||
56 | struct w90p910_gpio_chip *w90p910_gpio = to_w90p910_gpio_chip(chip); | ||
57 | void __iomem *pio = w90p910_gpio->regbase + GPIO_IN; | ||
58 | unsigned int regval; | ||
59 | |||
60 | regval = __raw_readl(pio); | ||
61 | regval &= GPIO_GPIO(offset); | ||
62 | |||
63 | return (regval != 0); | ||
64 | } | ||
65 | |||
66 | static void w90p910_gpio_set(struct gpio_chip *chip, unsigned offset, int val) | ||
67 | { | ||
68 | struct w90p910_gpio_chip *w90p910_gpio = to_w90p910_gpio_chip(chip); | ||
69 | void __iomem *pio = w90p910_gpio->regbase + GPIO_OUT; | ||
70 | unsigned int regval; | ||
71 | unsigned long flags; | ||
72 | |||
73 | spin_lock_irqsave(&w90p910_gpio->gpio_lock, flags); | ||
74 | |||
75 | regval = __raw_readl(pio); | ||
76 | |||
77 | if (val) | ||
78 | regval |= GPIO_GPIO(offset); | ||
79 | else | ||
80 | regval &= ~GPIO_GPIO(offset); | ||
81 | |||
82 | __raw_writel(regval, pio); | ||
83 | |||
84 | spin_unlock_irqrestore(&w90p910_gpio->gpio_lock, flags); | ||
85 | } | ||
86 | |||
87 | static int w90p910_dir_input(struct gpio_chip *chip, unsigned offset) | ||
88 | { | ||
89 | struct w90p910_gpio_chip *w90p910_gpio = to_w90p910_gpio_chip(chip); | ||
90 | void __iomem *pio = w90p910_gpio->regbase + GPIO_DIR; | ||
91 | unsigned int regval; | ||
92 | unsigned long flags; | ||
93 | |||
94 | spin_lock_irqsave(&w90p910_gpio->gpio_lock, flags); | ||
95 | |||
96 | regval = __raw_readl(pio); | ||
97 | regval &= ~GPIO_GPIO(offset); | ||
98 | __raw_writel(regval, pio); | ||
99 | |||
100 | spin_unlock_irqrestore(&w90p910_gpio->gpio_lock, flags); | ||
101 | |||
102 | return 0; | ||
103 | } | ||
104 | |||
105 | static int w90p910_dir_output(struct gpio_chip *chip, unsigned offset, int val) | ||
106 | { | ||
107 | struct w90p910_gpio_chip *w90p910_gpio = to_w90p910_gpio_chip(chip); | ||
108 | void __iomem *outreg = w90p910_gpio->regbase + GPIO_OUT; | ||
109 | void __iomem *pio = w90p910_gpio->regbase + GPIO_DIR; | ||
110 | unsigned int regval; | ||
111 | unsigned long flags; | ||
112 | |||
113 | spin_lock_irqsave(&w90p910_gpio->gpio_lock, flags); | ||
114 | |||
115 | regval = __raw_readl(pio); | ||
116 | regval |= GPIO_GPIO(offset); | ||
117 | __raw_writel(regval, pio); | ||
118 | |||
119 | regval = __raw_readl(outreg); | ||
120 | |||
121 | if (val) | ||
122 | regval |= GPIO_GPIO(offset); | ||
123 | else | ||
124 | regval &= ~GPIO_GPIO(offset); | ||
125 | |||
126 | __raw_writel(regval, outreg); | ||
127 | |||
128 | spin_unlock_irqrestore(&w90p910_gpio->gpio_lock, flags); | ||
129 | |||
130 | return 0; | ||
131 | } | ||
132 | |||
133 | static struct w90p910_gpio_chip w90p910_gpio[] = { | ||
134 | W90P910_GPIO_CHIP("GROUPC", 0, 16), | ||
135 | W90P910_GPIO_CHIP("GROUPD", 16, 10), | ||
136 | W90P910_GPIO_CHIP("GROUPE", 26, 14), | ||
137 | W90P910_GPIO_CHIP("GROUPF", 40, 10), | ||
138 | W90P910_GPIO_CHIP("GROUPG", 50, 17), | ||
139 | W90P910_GPIO_CHIP("GROUPH", 67, 8), | ||
140 | W90P910_GPIO_CHIP("GROUPI", 75, 17), | ||
141 | }; | ||
142 | |||
143 | void __init w90p910_init_gpio(int nr_group) | ||
144 | { | ||
145 | unsigned i; | ||
146 | struct w90p910_gpio_chip *gpio_chip; | ||
147 | |||
148 | for (i = 0; i < nr_group; i++) { | ||
149 | gpio_chip = &w90p910_gpio[i]; | ||
150 | spin_lock_init(&gpio_chip->gpio_lock); | ||
151 | gpio_chip->regbase = GPIO_BASE + i * GROUPINERV; | ||
152 | gpiochip_add(&gpio_chip->chip); | ||
153 | } | ||
154 | } | ||
diff --git a/arch/arm/mach-w90x900/include/mach/clkdev.h b/arch/arm/mach-w90x900/include/mach/clkdev.h new file mode 100644 index 000000000000..04b37a89801c --- /dev/null +++ b/arch/arm/mach-w90x900/include/mach/clkdev.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #ifndef __ASM_MACH_CLKDEV_H | ||
2 | #define __ASM_MACH_CLKDEV_H | ||
3 | |||
4 | #define __clk_get(clk) ({ 1; }) | ||
5 | #define __clk_put(clk) do { } while (0) | ||
6 | |||
7 | #endif | ||
diff --git a/arch/arm/mach-w90x900/include/mach/gpio.h b/arch/arm/mach-w90x900/include/mach/gpio.h new file mode 100644 index 000000000000..034da3e390c9 --- /dev/null +++ b/arch/arm/mach-w90x900/include/mach/gpio.h | |||
@@ -0,0 +1,34 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-w90p910/include/mach/gpio.h | ||
3 | * | ||
4 | * Generic w90p910 GPIO handling | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_W90P910_GPIO_H | ||
14 | #define __ASM_ARCH_W90P910_GPIO_H | ||
15 | |||
16 | #include <mach/hardware.h> | ||
17 | #include <asm/irq.h> | ||
18 | #include <asm-generic/gpio.h> | ||
19 | |||
20 | #define gpio_get_value __gpio_get_value | ||
21 | #define gpio_set_value __gpio_set_value | ||
22 | #define gpio_cansleep __gpio_cansleep | ||
23 | |||
24 | static inline int gpio_to_irq(unsigned gpio) | ||
25 | { | ||
26 | return gpio; | ||
27 | } | ||
28 | |||
29 | static inline int irq_to_gpio(unsigned irq) | ||
30 | { | ||
31 | return irq; | ||
32 | } | ||
33 | |||
34 | #endif | ||
diff --git a/arch/arm/mach-w90x900/include/mach/irqs.h b/arch/arm/mach-w90x900/include/mach/irqs.h index 1c583f9cbcde..9d5cba3a509f 100644 --- a/arch/arm/mach-w90x900/include/mach/irqs.h +++ b/arch/arm/mach-w90x900/include/mach/irqs.h | |||
@@ -1,8 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-w90x900/include/mach/irqs.h | 2 | * arch/arm/mach-w90x900/include/mach/irqs.h |
3 | * | 3 | * |
4 | * Copyright (c) 2008 Nuvoton technology corporation | 4 | * Copyright (c) 2008 Nuvoton technology corporation. |
5 | * All rights reserved. | ||
6 | * | 5 | * |
7 | * Wan ZongShun <mcuos.com@gmail.com> | 6 | * Wan ZongShun <mcuos.com@gmail.com> |
8 | * | 7 | * |
@@ -10,8 +9,7 @@ | |||
10 | * | 9 | * |
11 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
12 | * it under the terms of the GNU General Public License as published by | 11 | * it under the terms of the GNU General Public License as published by |
13 | * the Free Software Foundation; either version 2 of the License, or | 12 | * the Free Software Foundation;version 2 of the License. |
14 | * (at your option) any later version. | ||
15 | * | 13 | * |
16 | */ | 14 | */ |
17 | 15 | ||
@@ -31,6 +29,11 @@ | |||
31 | /* Main cpu interrupts */ | 29 | /* Main cpu interrupts */ |
32 | 30 | ||
33 | #define IRQ_WDT W90X900_IRQ(1) | 31 | #define IRQ_WDT W90X900_IRQ(1) |
32 | #define IRQ_GROUP0 W90X900_IRQ(2) | ||
33 | #define IRQ_GROUP1 W90X900_IRQ(3) | ||
34 | #define IRQ_ACTL W90X900_IRQ(4) | ||
35 | #define IRQ_LCD W90X900_IRQ(5) | ||
36 | #define IRQ_RTC W90X900_IRQ(6) | ||
34 | #define IRQ_UART0 W90X900_IRQ(7) | 37 | #define IRQ_UART0 W90X900_IRQ(7) |
35 | #define IRQ_UART1 W90X900_IRQ(8) | 38 | #define IRQ_UART1 W90X900_IRQ(8) |
36 | #define IRQ_UART2 W90X900_IRQ(9) | 39 | #define IRQ_UART2 W90X900_IRQ(9) |
@@ -39,7 +42,45 @@ | |||
39 | #define IRQ_TIMER0 W90X900_IRQ(12) | 42 | #define IRQ_TIMER0 W90X900_IRQ(12) |
40 | #define IRQ_TIMER1 W90X900_IRQ(13) | 43 | #define IRQ_TIMER1 W90X900_IRQ(13) |
41 | #define IRQ_T_INT_GROUP W90X900_IRQ(14) | 44 | #define IRQ_T_INT_GROUP W90X900_IRQ(14) |
45 | #define IRQ_USBH W90X900_IRQ(15) | ||
46 | #define IRQ_EMCTX W90X900_IRQ(16) | ||
47 | #define IRQ_EMCRX W90X900_IRQ(17) | ||
48 | #define IRQ_GDMAGROUP W90X900_IRQ(18) | ||
49 | #define IRQ_DMAC W90X900_IRQ(19) | ||
50 | #define IRQ_FMI W90X900_IRQ(20) | ||
51 | #define IRQ_USBD W90X900_IRQ(21) | ||
52 | #define IRQ_ATAPI W90X900_IRQ(22) | ||
53 | #define IRQ_G2D W90X900_IRQ(23) | ||
54 | #define IRQ_PCI W90X900_IRQ(24) | ||
55 | #define IRQ_SCGROUP W90X900_IRQ(25) | ||
56 | #define IRQ_I2CGROUP W90X900_IRQ(26) | ||
57 | #define IRQ_SSP W90X900_IRQ(27) | ||
58 | #define IRQ_PWM W90X900_IRQ(28) | ||
59 | #define IRQ_KPI W90X900_IRQ(29) | ||
60 | #define IRQ_P2SGROUP W90X900_IRQ(30) | ||
42 | #define IRQ_ADC W90X900_IRQ(31) | 61 | #define IRQ_ADC W90X900_IRQ(31) |
43 | #define NR_IRQS (IRQ_ADC+1) | 62 | #define NR_IRQS (IRQ_ADC+1) |
44 | 63 | ||
64 | /*for irq group*/ | ||
65 | |||
66 | #define IRQ_PS2_PORT0 0x10000000 | ||
67 | #define IRQ_PS2_PORT1 0x20000000 | ||
68 | #define IRQ_I2C_LINE0 0x04000000 | ||
69 | #define IRQ_I2C_LINE1 0x08000000 | ||
70 | #define IRQ_SC_CARD0 0x01000000 | ||
71 | #define IRQ_SC_CARD1 0x02000000 | ||
72 | #define IRQ_GDMA_CH0 0x00100000 | ||
73 | #define IRQ_GDMA_CH1 0x00200000 | ||
74 | #define IRQ_TIMER2 0x00010000 | ||
75 | #define IRQ_TIMER3 0x00020000 | ||
76 | #define IRQ_TIMER4 0x00040000 | ||
77 | #define IRQ_GROUP0_IRQ0 0x00000001 | ||
78 | #define IRQ_GROUP0_IRQ1 0x00000002 | ||
79 | #define IRQ_GROUP0_IRQ2 0x00000004 | ||
80 | #define IRQ_GROUP0_IRQ3 0x00000008 | ||
81 | #define IRQ_GROUP1_IRQ4 0x00000010 | ||
82 | #define IRQ_GROUP1_IRQ5 0x00000020 | ||
83 | #define IRQ_GROUP1_IRQ6 0x00000040 | ||
84 | #define IRQ_GROUP1_IRQ7 0x00000080 | ||
85 | |||
45 | #endif /* __ASM_ARCH_IRQ_H */ | 86 | #endif /* __ASM_ARCH_IRQ_H */ |
diff --git a/arch/arm/mach-w90x900/include/mach/map.h b/arch/arm/mach-w90x900/include/mach/map.h index 79320ebe614b..1a2095304117 100644 --- a/arch/arm/mach-w90x900/include/mach/map.h +++ b/arch/arm/mach-w90x900/include/mach/map.h | |||
@@ -1,8 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-w90x900/include/mach/map.h | 2 | * arch/arm/mach-w90x900/include/mach/map.h |
3 | * | 3 | * |
4 | * Copyright (c) 2008 Nuvoton technology corporation | 4 | * Copyright (c) 2008 Nuvoton technology corporation. |
5 | * All rights reserved. | ||
6 | * | 5 | * |
7 | * Wan ZongShun <mcuos.com@gmail.com> | 6 | * Wan ZongShun <mcuos.com@gmail.com> |
8 | * | 7 | * |
@@ -10,8 +9,7 @@ | |||
10 | * | 9 | * |
11 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
12 | * it under the terms of the GNU General Public License as published by | 11 | * it under the terms of the GNU General Public License as published by |
13 | * the Free Software Foundation; either version 2 of the License, or | 12 | * the Free Software Foundation;version 2 of the License. |
14 | * (at your option) any later version. | ||
15 | * | 13 | * |
16 | */ | 14 | */ |
17 | 15 | ||
@@ -34,7 +32,6 @@ | |||
34 | * interrupt controller is the first thing we put in, to make | 32 | * interrupt controller is the first thing we put in, to make |
35 | * the assembly code for the irq detection easier | 33 | * the assembly code for the irq detection easier |
36 | */ | 34 | */ |
37 | |||
38 | #define W90X900_VA_IRQ W90X900_ADDR(0x00000000) | 35 | #define W90X900_VA_IRQ W90X900_ADDR(0x00000000) |
39 | #define W90X900_PA_IRQ (0xB8002000) | 36 | #define W90X900_PA_IRQ (0xB8002000) |
40 | #define W90X900_SZ_IRQ SZ_4K | 37 | #define W90X900_SZ_IRQ SZ_4K |
@@ -44,33 +41,117 @@ | |||
44 | #define W90X900_SZ_GCR SZ_4K | 41 | #define W90X900_SZ_GCR SZ_4K |
45 | 42 | ||
46 | /* Clock and Power management */ | 43 | /* Clock and Power management */ |
47 | |||
48 | #define W90X900_VA_CLKPWR (W90X900_VA_GCR+0x200) | 44 | #define W90X900_VA_CLKPWR (W90X900_VA_GCR+0x200) |
49 | #define W90X900_PA_CLKPWR (0xB0000200) | 45 | #define W90X900_PA_CLKPWR (0xB0000200) |
50 | #define W90X900_SZ_CLKPWR SZ_4K | 46 | #define W90X900_SZ_CLKPWR SZ_4K |
51 | 47 | ||
52 | /* EBI management */ | 48 | /* EBI management */ |
53 | |||
54 | #define W90X900_VA_EBI W90X900_ADDR(0x00001000) | 49 | #define W90X900_VA_EBI W90X900_ADDR(0x00001000) |
55 | #define W90X900_PA_EBI (0xB0001000) | 50 | #define W90X900_PA_EBI (0xB0001000) |
56 | #define W90X900_SZ_EBI SZ_4K | 51 | #define W90X900_SZ_EBI SZ_4K |
57 | 52 | ||
58 | /* UARTs */ | 53 | /* UARTs */ |
59 | |||
60 | #define W90X900_VA_UART W90X900_ADDR(0x08000000) | 54 | #define W90X900_VA_UART W90X900_ADDR(0x08000000) |
61 | #define W90X900_PA_UART (0xB8000000) | 55 | #define W90X900_PA_UART (0xB8000000) |
62 | #define W90X900_SZ_UART SZ_4K | 56 | #define W90X900_SZ_UART SZ_4K |
63 | 57 | ||
64 | /* Timers */ | 58 | /* Timers */ |
65 | |||
66 | #define W90X900_VA_TIMER W90X900_ADDR(0x08001000) | 59 | #define W90X900_VA_TIMER W90X900_ADDR(0x08001000) |
67 | #define W90X900_PA_TIMER (0xB8001000) | 60 | #define W90X900_PA_TIMER (0xB8001000) |
68 | #define W90X900_SZ_TIMER SZ_4K | 61 | #define W90X900_SZ_TIMER SZ_4K |
69 | 62 | ||
70 | /* GPIO ports */ | 63 | /* GPIO ports */ |
71 | |||
72 | #define W90X900_VA_GPIO W90X900_ADDR(0x08003000) | 64 | #define W90X900_VA_GPIO W90X900_ADDR(0x08003000) |
73 | #define W90X900_PA_GPIO (0xB8003000) | 65 | #define W90X900_PA_GPIO (0xB8003000) |
74 | #define W90X900_SZ_GPIO SZ_4K | 66 | #define W90X900_SZ_GPIO SZ_4K |
75 | 67 | ||
68 | /* GDMA control */ | ||
69 | #define W90X900_VA_GDMA W90X900_ADDR(0x00004000) | ||
70 | #define W90X900_PA_GDMA (0xB0004000) | ||
71 | #define W90X900_SZ_GDMA SZ_4K | ||
72 | |||
73 | /* USB host controller*/ | ||
74 | #define W90X900_VA_USBEHCIHOST W90X900_ADDR(0x00005000) | ||
75 | #define W90X900_PA_USBEHCIHOST (0xB0005000) | ||
76 | #define W90X900_SZ_USBEHCIHOST SZ_4K | ||
77 | |||
78 | #define W90X900_VA_USBOHCIHOST W90X900_ADDR(0x00007000) | ||
79 | #define W90X900_PA_USBOHCIHOST (0xB0007000) | ||
80 | #define W90X900_SZ_USBOHCIHOST SZ_4K | ||
81 | |||
82 | /* I2C hardware controller */ | ||
83 | #define W90X900_VA_I2C W90X900_ADDR(0x08006000) | ||
84 | #define W90X900_PA_I2C (0xB8006000) | ||
85 | #define W90X900_SZ_I2C SZ_4K | ||
86 | |||
87 | /* Keypad Interface*/ | ||
88 | #define W90X900_VA_KPI W90X900_ADDR(0x08008000) | ||
89 | #define W90X900_PA_KPI (0xB8008000) | ||
90 | #define W90X900_SZ_KPI SZ_4K | ||
91 | |||
92 | /* Smart card host*/ | ||
93 | #define W90X900_VA_SC W90X900_ADDR(0x08005000) | ||
94 | #define W90X900_PA_SC (0xB8005000) | ||
95 | #define W90X900_SZ_SC SZ_4K | ||
96 | |||
97 | /* LCD controller*/ | ||
98 | #define W90X900_VA_LCD W90X900_ADDR(0x00008000) | ||
99 | #define W90X900_PA_LCD (0xB0008000) | ||
100 | #define W90X900_SZ_LCD SZ_4K | ||
101 | |||
102 | /* 2D controller*/ | ||
103 | #define W90X900_VA_GE W90X900_ADDR(0x0000B000) | ||
104 | #define W90X900_PA_GE (0xB000B000) | ||
105 | #define W90X900_SZ_GE SZ_4K | ||
106 | |||
107 | /* ATAPI */ | ||
108 | #define W90X900_VA_ATAPI W90X900_ADDR(0x0000A000) | ||
109 | #define W90X900_PA_ATAPI (0xB000A000) | ||
110 | #define W90X900_SZ_ATAPI SZ_4K | ||
111 | |||
112 | /* ADC */ | ||
113 | #define W90X900_VA_ADC W90X900_ADDR(0x0800A000) | ||
114 | #define W90X900_PA_ADC (0xB800A000) | ||
115 | #define W90X900_SZ_ADC SZ_4K | ||
116 | |||
117 | /* PS2 Interface*/ | ||
118 | #define W90X900_VA_PS2 W90X900_ADDR(0x08009000) | ||
119 | #define W90X900_PA_PS2 (0xB8009000) | ||
120 | #define W90X900_SZ_PS2 SZ_4K | ||
121 | |||
122 | /* RTC */ | ||
123 | #define W90X900_VA_RTC W90X900_ADDR(0x08004000) | ||
124 | #define W90X900_PA_RTC (0xB8004000) | ||
125 | #define W90X900_SZ_RTC SZ_4K | ||
126 | |||
127 | /* Pulse Width Modulation(PWM) Registers */ | ||
128 | #define W90X900_VA_PWM W90X900_ADDR(0x08007000) | ||
129 | #define W90X900_PA_PWM (0xB8007000) | ||
130 | #define W90X900_SZ_PWM SZ_4K | ||
131 | |||
132 | /* Audio Controller controller */ | ||
133 | #define W90X900_VA_ACTL W90X900_ADDR(0x00009000) | ||
134 | #define W90X900_PA_ACTL (0xB0009000) | ||
135 | #define W90X900_SZ_ACTL SZ_4K | ||
136 | |||
137 | /* DMA controller */ | ||
138 | #define W90X900_VA_DMA W90X900_ADDR(0x0000c000) | ||
139 | #define W90X900_PA_DMA (0xB000c000) | ||
140 | #define W90X900_SZ_DMA SZ_4K | ||
141 | |||
142 | /* FMI controller */ | ||
143 | #define W90X900_VA_FMI W90X900_ADDR(0x0000d000) | ||
144 | #define W90X900_PA_FMI (0xB000d000) | ||
145 | #define W90X900_SZ_FMI SZ_4K | ||
146 | |||
147 | /* USB Device port */ | ||
148 | #define W90X900_VA_USBDEV W90X900_ADDR(0x00006000) | ||
149 | #define W90X900_PA_USBDEV (0xB0006000) | ||
150 | #define W90X900_SZ_USBDEV SZ_4K | ||
151 | |||
152 | /* External MAC control*/ | ||
153 | #define W90X900_VA_EMC W90X900_ADDR(0x00003000) | ||
154 | #define W90X900_PA_EMC (0xB0003000) | ||
155 | #define W90X900_SZ_EMC SZ_4K | ||
156 | |||
76 | #endif /* __ASM_ARCH_MAP_H */ | 157 | #endif /* __ASM_ARCH_MAP_H */ |
diff --git a/arch/arm/mach-w90x900/include/mach/regs-clock.h b/arch/arm/mach-w90x900/include/mach/regs-clock.h new file mode 100644 index 000000000000..f10b6a8dc069 --- /dev/null +++ b/arch/arm/mach-w90x900/include/mach/regs-clock.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-w90x900/include/mach/regs-clock.h | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation. | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation;version 2 of the License. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_ARCH_REGS_CLOCK_H | ||
15 | #define __ASM_ARCH_REGS_CLOCK_H | ||
16 | |||
17 | /* Clock Control Registers */ | ||
18 | #define CLK_BA W90X900_VA_CLKPWR | ||
19 | #define REG_CLKEN (CLK_BA + 0x00) | ||
20 | #define REG_CLKSEL (CLK_BA + 0x04) | ||
21 | #define REG_CLKDIV (CLK_BA + 0x08) | ||
22 | #define REG_PLLCON0 (CLK_BA + 0x0C) | ||
23 | #define REG_PLLCON1 (CLK_BA + 0x10) | ||
24 | #define REG_PMCON (CLK_BA + 0x14) | ||
25 | #define REG_IRQWAKECON (CLK_BA + 0x18) | ||
26 | #define REG_IRQWAKEFLAG (CLK_BA + 0x1C) | ||
27 | #define REG_IPSRST (CLK_BA + 0x20) | ||
28 | #define REG_CLKEN1 (CLK_BA + 0x24) | ||
29 | #define REG_CLKDIV1 (CLK_BA + 0x28) | ||
30 | |||
31 | #endif /* __ASM_ARCH_REGS_CLOCK_H */ | ||
diff --git a/arch/arm/mach-w90x900/include/mach/regs-usb.h b/arch/arm/mach-w90x900/include/mach/regs-usb.h new file mode 100644 index 000000000000..ab74b0c2480b --- /dev/null +++ b/arch/arm/mach-w90x900/include/mach/regs-usb.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-w90x900/include/mach/regs-usb.h | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation. | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation;version 2 of the License. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_ARCH_REGS_USB_H | ||
15 | #define __ASM_ARCH_REGS_USB_H | ||
16 | |||
17 | /* usb Control Registers */ | ||
18 | #define USBH_BA W90X900_VA_USBEHCIHOST | ||
19 | #define USBD_BA W90X900_VA_USBDEV | ||
20 | #define USBO_BA W90X900_VA_USBOHCIHOST | ||
21 | |||
22 | /* USB Host Control Registers */ | ||
23 | #define REG_UPSCR0 (USBH_BA+0x064) | ||
24 | #define REG_UPSCR1 (USBH_BA+0x068) | ||
25 | #define REG_USBPCR0 (USBH_BA+0x0C4) | ||
26 | #define REG_USBPCR1 (USBH_BA+0x0C8) | ||
27 | |||
28 | /* USBH OHCI Control Registers */ | ||
29 | #define REG_OpModEn (USBO_BA+0x204) | ||
30 | /*This bit controls the polarity of over | ||
31 | *current flag from external power IC. | ||
32 | */ | ||
33 | #define OCALow 0x08 | ||
34 | |||
35 | #endif /* __ASM_ARCH_REGS_USB_H */ | ||
diff --git a/arch/arm/mach-w90x900/mach-w90p910evb.c b/arch/arm/mach-w90x900/mach-w90p910evb.c index 726ff6798a56..7a62bd348e80 100644 --- a/arch/arm/mach-w90x900/mach-w90p910evb.c +++ b/arch/arm/mach-w90x900/mach-w90p910evb.c | |||
@@ -3,15 +3,13 @@ | |||
3 | * | 3 | * |
4 | * Based on mach-s3c2410/mach-smdk2410.c by Jonas Dietsche | 4 | * Based on mach-s3c2410/mach-smdk2410.c by Jonas Dietsche |
5 | * | 5 | * |
6 | * Copyright (C) 2008 Nuvoton technology corporation | 6 | * Copyright (C) 2008 Nuvoton technology corporation. |
7 | * All rights reserved. | ||
8 | * | 7 | * |
9 | * Wan ZongShun <mcuos.com@gmail.com> | 8 | * Wan ZongShun <mcuos.com@gmail.com> |
10 | * | 9 | * |
11 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
12 | * modify it under the terms of the GNU General Public License as | 11 | * modify it under the terms of the GNU General Public License as |
13 | * published by the Free Software Foundation; either version 2 of | 12 | * published by the Free Software Foundation;version 2 of the License. |
14 | * the License, or (at your option) any later version. | ||
15 | * | 13 | * |
16 | */ | 14 | */ |
17 | 15 | ||
@@ -80,6 +78,156 @@ static struct platform_device w90p910_flash_device = { | |||
80 | .num_resources = ARRAY_SIZE(w90p910_flash_resources), | 78 | .num_resources = ARRAY_SIZE(w90p910_flash_resources), |
81 | }; | 79 | }; |
82 | 80 | ||
81 | /* USB EHCI Host Controller */ | ||
82 | |||
83 | static struct resource w90x900_usb_ehci_resource[] = { | ||
84 | [0] = { | ||
85 | .start = W90X900_PA_USBEHCIHOST, | ||
86 | .end = W90X900_PA_USBEHCIHOST + W90X900_SZ_USBEHCIHOST - 1, | ||
87 | .flags = IORESOURCE_MEM, | ||
88 | }, | ||
89 | [1] = { | ||
90 | .start = IRQ_USBH, | ||
91 | .end = IRQ_USBH, | ||
92 | .flags = IORESOURCE_IRQ, | ||
93 | } | ||
94 | }; | ||
95 | |||
96 | static u64 w90x900_device_usb_ehci_dmamask = 0xffffffffUL; | ||
97 | |||
98 | struct platform_device w90x900_device_usb_ehci = { | ||
99 | .name = "w90x900-ehci", | ||
100 | .id = -1, | ||
101 | .num_resources = ARRAY_SIZE(w90x900_usb_ehci_resource), | ||
102 | .resource = w90x900_usb_ehci_resource, | ||
103 | .dev = { | ||
104 | .dma_mask = &w90x900_device_usb_ehci_dmamask, | ||
105 | .coherent_dma_mask = 0xffffffffUL | ||
106 | } | ||
107 | }; | ||
108 | EXPORT_SYMBOL(w90x900_device_usb_ehci); | ||
109 | |||
110 | /* USB OHCI Host Controller */ | ||
111 | |||
112 | static struct resource w90x900_usb_ohci_resource[] = { | ||
113 | [0] = { | ||
114 | .start = W90X900_PA_USBOHCIHOST, | ||
115 | .end = W90X900_PA_USBOHCIHOST + W90X900_SZ_USBOHCIHOST - 1, | ||
116 | .flags = IORESOURCE_MEM, | ||
117 | }, | ||
118 | [1] = { | ||
119 | .start = IRQ_USBH, | ||
120 | .end = IRQ_USBH, | ||
121 | .flags = IORESOURCE_IRQ, | ||
122 | } | ||
123 | }; | ||
124 | |||
125 | static u64 w90x900_device_usb_ohci_dmamask = 0xffffffffUL; | ||
126 | struct platform_device w90x900_device_usb_ohci = { | ||
127 | .name = "w90x900-ohci", | ||
128 | .id = -1, | ||
129 | .num_resources = ARRAY_SIZE(w90x900_usb_ohci_resource), | ||
130 | .resource = w90x900_usb_ohci_resource, | ||
131 | .dev = { | ||
132 | .dma_mask = &w90x900_device_usb_ohci_dmamask, | ||
133 | .coherent_dma_mask = 0xffffffffUL | ||
134 | } | ||
135 | }; | ||
136 | EXPORT_SYMBOL(w90x900_device_usb_ohci); | ||
137 | |||
138 | /*TouchScreen controller*/ | ||
139 | |||
140 | static struct resource w90x900_ts_resource[] = { | ||
141 | [0] = { | ||
142 | .start = W90X900_PA_ADC, | ||
143 | .end = W90X900_PA_ADC + W90X900_SZ_ADC-1, | ||
144 | .flags = IORESOURCE_MEM, | ||
145 | }, | ||
146 | [1] = { | ||
147 | .start = IRQ_ADC, | ||
148 | .end = IRQ_ADC, | ||
149 | .flags = IORESOURCE_IRQ, | ||
150 | }, | ||
151 | }; | ||
152 | |||
153 | struct platform_device w90x900_device_ts = { | ||
154 | .name = "w90x900-ts", | ||
155 | .id = -1, | ||
156 | .resource = w90x900_ts_resource, | ||
157 | .num_resources = ARRAY_SIZE(w90x900_ts_resource), | ||
158 | }; | ||
159 | EXPORT_SYMBOL(w90x900_device_ts); | ||
160 | |||
161 | /* RTC controller*/ | ||
162 | |||
163 | static struct resource w90x900_rtc_resource[] = { | ||
164 | [0] = { | ||
165 | .start = W90X900_PA_RTC, | ||
166 | .end = W90X900_PA_RTC + 0xff, | ||
167 | .flags = IORESOURCE_MEM, | ||
168 | }, | ||
169 | [1] = { | ||
170 | .start = IRQ_RTC, | ||
171 | .end = IRQ_RTC, | ||
172 | .flags = IORESOURCE_IRQ, | ||
173 | }, | ||
174 | }; | ||
175 | |||
176 | struct platform_device w90x900_device_rtc = { | ||
177 | .name = "w90x900-rtc", | ||
178 | .id = -1, | ||
179 | .num_resources = ARRAY_SIZE(w90x900_rtc_resource), | ||
180 | .resource = w90x900_rtc_resource, | ||
181 | }; | ||
182 | EXPORT_SYMBOL(w90x900_device_rtc); | ||
183 | |||
184 | /* KPI controller*/ | ||
185 | |||
186 | static struct resource w90x900_kpi_resource[] = { | ||
187 | [0] = { | ||
188 | .start = W90X900_PA_KPI, | ||
189 | .end = W90X900_PA_KPI + W90X900_SZ_KPI - 1, | ||
190 | .flags = IORESOURCE_MEM, | ||
191 | }, | ||
192 | [1] = { | ||
193 | .start = IRQ_KPI, | ||
194 | .end = IRQ_KPI, | ||
195 | .flags = IORESOURCE_IRQ, | ||
196 | } | ||
197 | |||
198 | }; | ||
199 | |||
200 | struct platform_device w90x900_device_kpi = { | ||
201 | .name = "w90x900-kpi", | ||
202 | .id = -1, | ||
203 | .num_resources = ARRAY_SIZE(w90x900_kpi_resource), | ||
204 | .resource = w90x900_kpi_resource, | ||
205 | }; | ||
206 | EXPORT_SYMBOL(w90x900_device_kpi); | ||
207 | |||
208 | /* USB Device (Gadget)*/ | ||
209 | |||
210 | static struct resource w90x900_usbgadget_resource[] = { | ||
211 | [0] = { | ||
212 | .start = W90X900_PA_USBDEV, | ||
213 | .end = W90X900_PA_USBDEV + W90X900_SZ_USBDEV - 1, | ||
214 | .flags = IORESOURCE_MEM, | ||
215 | }, | ||
216 | [1] = { | ||
217 | .start = IRQ_USBD, | ||
218 | .end = IRQ_USBD, | ||
219 | .flags = IORESOURCE_IRQ, | ||
220 | } | ||
221 | }; | ||
222 | |||
223 | struct platform_device w90x900_device_usbgadget = { | ||
224 | .name = "w90x900-usbgadget", | ||
225 | .id = -1, | ||
226 | .num_resources = ARRAY_SIZE(w90x900_usbgadget_resource), | ||
227 | .resource = w90x900_usbgadget_resource, | ||
228 | }; | ||
229 | EXPORT_SYMBOL(w90x900_device_usbgadget); | ||
230 | |||
83 | static struct map_desc w90p910_iodesc[] __initdata = { | 231 | static struct map_desc w90p910_iodesc[] __initdata = { |
84 | }; | 232 | }; |
85 | 233 | ||
@@ -88,12 +236,18 @@ static struct map_desc w90p910_iodesc[] __initdata = { | |||
88 | static struct platform_device *w90p910evb_dev[] __initdata = { | 236 | static struct platform_device *w90p910evb_dev[] __initdata = { |
89 | &w90p910_serial_device, | 237 | &w90p910_serial_device, |
90 | &w90p910_flash_device, | 238 | &w90p910_flash_device, |
239 | &w90x900_device_usb_ehci, | ||
240 | &w90x900_device_usb_ohci, | ||
241 | &w90x900_device_ts, | ||
242 | &w90x900_device_rtc, | ||
243 | &w90x900_device_kpi, | ||
244 | &w90x900_device_usbgadget, | ||
91 | }; | 245 | }; |
92 | 246 | ||
93 | static void __init w90p910evb_map_io(void) | 247 | static void __init w90p910evb_map_io(void) |
94 | { | 248 | { |
95 | w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc)); | 249 | w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc)); |
96 | w90p910_init_clocks(0); | 250 | w90p910_init_clocks(); |
97 | } | 251 | } |
98 | 252 | ||
99 | static void __init w90p910evb_init(void) | 253 | static void __init w90p910evb_init(void) |
diff --git a/arch/arm/mach-w90x900/mfp-w90p910.c b/arch/arm/mach-w90x900/mfp-w90p910.c new file mode 100644 index 000000000000..a3520fefb5e7 --- /dev/null +++ b/arch/arm/mach-w90x900/mfp-w90p910.c | |||
@@ -0,0 +1,116 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-w90x900/mfp-w90p910.c | ||
3 | * | ||
4 | * Copyright (c) 2008 Nuvoton technology corporation | ||
5 | * | ||
6 | * Wan ZongShun <mcuos.com@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation;version 2 of the License. | ||
11 | */ | ||
12 | |||
13 | #include <linux/module.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/device.h> | ||
16 | #include <linux/list.h> | ||
17 | #include <linux/errno.h> | ||
18 | #include <linux/err.h> | ||
19 | #include <linux/string.h> | ||
20 | #include <linux/clk.h> | ||
21 | #include <linux/mutex.h> | ||
22 | #include <linux/io.h> | ||
23 | |||
24 | #include <mach/hardware.h> | ||
25 | |||
26 | #define REG_MFSEL (W90X900_VA_GCR + 0xC) | ||
27 | |||
28 | #define GPSELF (0x01 << 1) | ||
29 | |||
30 | #define GPSELC (0x03 << 2) | ||
31 | #define ENKPI (0x02 << 2) | ||
32 | #define ENNAND (0x01 << 2) | ||
33 | |||
34 | #define GPSELEI0 (0x01 << 26) | ||
35 | #define GPSELEI1 (0x01 << 27) | ||
36 | |||
37 | static DECLARE_MUTEX(mfp_sem); | ||
38 | |||
39 | void mfp_set_groupf(struct device *dev) | ||
40 | { | ||
41 | unsigned long mfpen; | ||
42 | const char *dev_id; | ||
43 | |||
44 | BUG_ON(!dev); | ||
45 | |||
46 | down(&mfp_sem); | ||
47 | |||
48 | dev_id = dev_name(dev); | ||
49 | |||
50 | mfpen = __raw_readl(REG_MFSEL); | ||
51 | |||
52 | if (strcmp(dev_id, "w90p910-emc") == 0) | ||
53 | mfpen |= GPSELF;/*enable mac*/ | ||
54 | else | ||
55 | mfpen &= ~GPSELF;/*GPIOF[9:0]*/ | ||
56 | |||
57 | __raw_writel(mfpen, REG_MFSEL); | ||
58 | |||
59 | up(&mfp_sem); | ||
60 | } | ||
61 | EXPORT_SYMBOL(mfp_set_groupf); | ||
62 | |||
63 | void mfp_set_groupc(struct device *dev) | ||
64 | { | ||
65 | unsigned long mfpen; | ||
66 | const char *dev_id; | ||
67 | |||
68 | BUG_ON(!dev); | ||
69 | |||
70 | down(&mfp_sem); | ||
71 | |||
72 | dev_id = dev_name(dev); | ||
73 | |||
74 | mfpen = __raw_readl(REG_MFSEL); | ||
75 | |||
76 | if (strcmp(dev_id, "w90p910-lcd") == 0) | ||
77 | mfpen |= GPSELC;/*enable lcd*/ | ||
78 | else if (strcmp(dev_id, "w90p910-kpi") == 0) { | ||
79 | mfpen &= (~GPSELC);/*enable kpi*/ | ||
80 | mfpen |= ENKPI; | ||
81 | } else if (strcmp(dev_id, "w90p910-nand") == 0) { | ||
82 | mfpen &= (~GPSELC);/*enable nand*/ | ||
83 | mfpen |= ENNAND; | ||
84 | } else | ||
85 | mfpen &= (~GPSELC);/*GPIOC[14:0]*/ | ||
86 | |||
87 | __raw_writel(mfpen, REG_MFSEL); | ||
88 | |||
89 | up(&mfp_sem); | ||
90 | } | ||
91 | EXPORT_SYMBOL(mfp_set_groupc); | ||
92 | |||
93 | void mfp_set_groupi(struct device *dev, int gpio) | ||
94 | { | ||
95 | unsigned long mfpen; | ||
96 | const char *dev_id; | ||
97 | |||
98 | BUG_ON(!dev); | ||
99 | |||
100 | down(&mfp_sem); | ||
101 | |||
102 | dev_id = dev_name(dev); | ||
103 | |||
104 | mfpen = __raw_readl(REG_MFSEL); | ||
105 | |||
106 | if (strcmp(dev_id, "w90p910-wdog") == 0) | ||
107 | mfpen |= GPSELEI1;/*enable wdog*/ | ||
108 | else if (strcmp(dev_id, "w90p910-atapi") == 0) | ||
109 | mfpen |= GPSELEI0;/*enable atapi*/ | ||
110 | |||
111 | __raw_writel(mfpen, REG_MFSEL); | ||
112 | |||
113 | up(&mfp_sem); | ||
114 | } | ||
115 | EXPORT_SYMBOL(mfp_set_groupi); | ||
116 | |||
diff --git a/arch/arm/mach-w90x900/w90p910.c b/arch/arm/mach-w90x900/w90p910.c index 2bcbaa681b99..1c97e4930b7a 100644 --- a/arch/arm/mach-w90x900/w90p910.c +++ b/arch/arm/mach-w90x900/w90p910.c | |||
@@ -3,8 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Based on linux/arch/arm/plat-s3c24xx/s3c244x.c by Ben Dooks | 4 | * Based on linux/arch/arm/plat-s3c24xx/s3c244x.c by Ben Dooks |
5 | * | 5 | * |
6 | * Copyright (c) 2008 Nuvoton technology corporation | 6 | * Copyright (c) 2008 Nuvoton technology corporation. |
7 | * All rights reserved. | ||
8 | * | 7 | * |
9 | * Wan ZongShun <mcuos.com@gmail.com> | 8 | * Wan ZongShun <mcuos.com@gmail.com> |
10 | * | 9 | * |
@@ -12,8 +11,7 @@ | |||
12 | * | 11 | * |
13 | * This program is free software; you can redistribute it and/or modify | 12 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License as published by | 13 | * it under the terms of the GNU General Public License as published by |
15 | * the Free Software Foundation; either version 2 of the License, or | 14 | * the Free Software Foundation;version 2 of the License. |
16 | * (at your option) any later version. | ||
17 | * | 15 | * |
18 | */ | 16 | */ |
19 | 17 | ||
@@ -36,6 +34,7 @@ | |||
36 | #include <mach/regs-serial.h> | 34 | #include <mach/regs-serial.h> |
37 | 35 | ||
38 | #include "cpu.h" | 36 | #include "cpu.h" |
37 | #include "clock.h" | ||
39 | 38 | ||
40 | /* Initial IO mappings */ | 39 | /* Initial IO mappings */ |
41 | 40 | ||
@@ -45,9 +44,52 @@ static struct map_desc w90p910_iodesc[] __initdata = { | |||
45 | IODESC_ENT(UART), | 44 | IODESC_ENT(UART), |
46 | IODESC_ENT(TIMER), | 45 | IODESC_ENT(TIMER), |
47 | IODESC_ENT(EBI), | 46 | IODESC_ENT(EBI), |
47 | IODESC_ENT(USBEHCIHOST), | ||
48 | IODESC_ENT(USBOHCIHOST), | ||
49 | IODESC_ENT(ADC), | ||
50 | IODESC_ENT(RTC), | ||
51 | IODESC_ENT(KPI), | ||
52 | IODESC_ENT(USBDEV), | ||
48 | /*IODESC_ENT(LCD),*/ | 53 | /*IODESC_ENT(LCD),*/ |
49 | }; | 54 | }; |
50 | 55 | ||
56 | /* Initial clock declarations. */ | ||
57 | static DEFINE_CLK(lcd, 0); | ||
58 | static DEFINE_CLK(audio, 1); | ||
59 | static DEFINE_CLK(fmi, 4); | ||
60 | static DEFINE_CLK(dmac, 5); | ||
61 | static DEFINE_CLK(atapi, 6); | ||
62 | static DEFINE_CLK(emc, 7); | ||
63 | static DEFINE_CLK(usbd, 8); | ||
64 | static DEFINE_CLK(usbh, 9); | ||
65 | static DEFINE_CLK(g2d, 10);; | ||
66 | static DEFINE_CLK(pwm, 18); | ||
67 | static DEFINE_CLK(ps2, 24); | ||
68 | static DEFINE_CLK(kpi, 25); | ||
69 | static DEFINE_CLK(wdt, 26); | ||
70 | static DEFINE_CLK(gdma, 27); | ||
71 | static DEFINE_CLK(adc, 28); | ||
72 | static DEFINE_CLK(usi, 29); | ||
73 | |||
74 | static struct clk_lookup w90p910_clkregs[] = { | ||
75 | DEF_CLKLOOK(&clk_lcd, "w90p910-lcd", NULL), | ||
76 | DEF_CLKLOOK(&clk_audio, "w90p910-audio", NULL), | ||
77 | DEF_CLKLOOK(&clk_fmi, "w90p910-fmi", NULL), | ||
78 | DEF_CLKLOOK(&clk_dmac, "w90p910-dmac", NULL), | ||
79 | DEF_CLKLOOK(&clk_atapi, "w90p910-atapi", NULL), | ||
80 | DEF_CLKLOOK(&clk_emc, "w90p910-emc", NULL), | ||
81 | DEF_CLKLOOK(&clk_usbd, "w90p910-usbd", NULL), | ||
82 | DEF_CLKLOOK(&clk_usbh, "w90p910-usbh", NULL), | ||
83 | DEF_CLKLOOK(&clk_g2d, "w90p910-g2d", NULL), | ||
84 | DEF_CLKLOOK(&clk_pwm, "w90p910-pwm", NULL), | ||
85 | DEF_CLKLOOK(&clk_ps2, "w90p910-ps2", NULL), | ||
86 | DEF_CLKLOOK(&clk_kpi, "w90p910-kpi", NULL), | ||
87 | DEF_CLKLOOK(&clk_wdt, "w90p910-wdt", NULL), | ||
88 | DEF_CLKLOOK(&clk_gdma, "w90p910-gdma", NULL), | ||
89 | DEF_CLKLOOK(&clk_adc, "w90p910-adc", NULL), | ||
90 | DEF_CLKLOOK(&clk_usi, "w90p910-usi", NULL), | ||
91 | }; | ||
92 | |||
51 | /* Initial serial platform data */ | 93 | /* Initial serial platform data */ |
52 | 94 | ||
53 | struct plat_serial8250_port w90p910_uart_data[] = { | 95 | struct plat_serial8250_port w90p910_uart_data[] = { |
@@ -77,8 +119,9 @@ void __init w90p910_map_io(struct map_desc *mach_desc, int mach_size) | |||
77 | 119 | ||
78 | /*Init W90P910 clock*/ | 120 | /*Init W90P910 clock*/ |
79 | 121 | ||
80 | void __init w90p910_init_clocks(int xtal) | 122 | void __init w90p910_init_clocks(void) |
81 | { | 123 | { |
124 | clks_register(w90p910_clkregs, ARRAY_SIZE(w90p910_clkregs)); | ||
82 | } | 125 | } |
83 | 126 | ||
84 | static int __init w90p910_init_cpu(void) | 127 | static int __init w90p910_init_cpu(void) |