diff options
author | Eric Miao <eric.miao@marvell.com> | 2009-03-09 09:21:07 -0400 |
---|---|---|
committer | Eric Miao <eric.miao@marvell.com> | 2009-03-09 09:21:07 -0400 |
commit | abcea2c322cef559ef2f108b4763d107a5ccc37f (patch) | |
tree | 5fec7fec372f9bdb70703f6c77bfc49cda945442 /arch/arm | |
parent | 8118aea23c328fd4913b325af53fda9d530b1d56 (diff) | |
parent | 6d831c6554e4f95083919914955a1a3a4a6acfa9 (diff) |
Merge branch 'devel' of ssh://master.kernel.org/home/rmk/linux-2.6-arm into devel
Diffstat (limited to 'arch/arm')
221 files changed, 6327 insertions, 2808 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index dbfdf87f993f..12abdd43201f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -241,6 +241,7 @@ config ARCH_VERSATILE | |||
241 | config ARCH_AT91 | 241 | config ARCH_AT91 |
242 | bool "Atmel AT91" | 242 | bool "Atmel AT91" |
243 | select GENERIC_GPIO | 243 | select GENERIC_GPIO |
244 | select ARCH_REQUIRE_GPIOLIB | ||
244 | select HAVE_CLK | 245 | select HAVE_CLK |
245 | help | 246 | help |
246 | This enables support for systems based on the Atmel AT91RM9200, | 247 | This enables support for systems based on the Atmel AT91RM9200, |
@@ -1092,7 +1093,7 @@ source "drivers/cpufreq/Kconfig" | |||
1092 | 1093 | ||
1093 | config CPU_FREQ_SA1100 | 1094 | config CPU_FREQ_SA1100 |
1094 | bool | 1095 | bool |
1095 | depends on CPU_FREQ && (SA1100_H3100 || SA1100_H3600 || SA1100_H3800 || SA1100_LART || SA1100_PLEB || SA1100_BADGE4 || SA1100_HACKKIT) | 1096 | depends on CPU_FREQ && (SA1100_H3100 || SA1100_H3600 || SA1100_LART || SA1100_PLEB || SA1100_BADGE4 || SA1100_HACKKIT) |
1096 | default y | 1097 | default y |
1097 | 1098 | ||
1098 | config CPU_FREQ_SA1110 | 1099 | config CPU_FREQ_SA1110 |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 192ee01a9ba2..a71fd941ade7 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -2,18 +2,29 @@ menu "Kernel hacking" | |||
2 | 2 | ||
3 | source "lib/Kconfig.debug" | 3 | source "lib/Kconfig.debug" |
4 | 4 | ||
5 | # RMK wants arm kernels compiled with frame pointers so hardwire this to y. | 5 | # RMK wants arm kernels compiled with frame pointers or stack unwinding. |
6 | # If you know what you are doing and are willing to live without stack | 6 | # If you know what you are doing and are willing to live without stack |
7 | # traces, you can get a slightly smaller kernel by setting this option to | 7 | # traces, you can get a slightly smaller kernel by setting this option to |
8 | # n, but then RMK will have to kill you ;). | 8 | # n, but then RMK will have to kill you ;). |
9 | config FRAME_POINTER | 9 | config FRAME_POINTER |
10 | bool | 10 | bool |
11 | default y | 11 | default y if !ARM_UNWIND |
12 | help | 12 | help |
13 | If you say N here, the resulting kernel will be slightly smaller and | 13 | If you say N here, the resulting kernel will be slightly smaller and |
14 | faster. However, when a problem occurs with the kernel, the | 14 | faster. However, if neither FRAME_POINTER nor ARM_UNWIND are enabled, |
15 | information that is reported is severely limited. Most people | 15 | when a problem occurs with the kernel, the information that is |
16 | should say Y here. | 16 | reported is severely limited. |
17 | |||
18 | config ARM_UNWIND | ||
19 | bool "Enable stack unwinding support" | ||
20 | depends on AEABI && EXPERIMENTAL | ||
21 | default y | ||
22 | help | ||
23 | This option enables stack unwinding support in the kernel | ||
24 | using the information automatically generated by the | ||
25 | compiler. The resulting kernel image is slightly bigger but | ||
26 | the performance is not affected. Currently, this feature | ||
27 | only works with EABI compilers. If unsure say Y. | ||
17 | 28 | ||
18 | config DEBUG_USER | 29 | config DEBUG_USER |
19 | bool "Verbose user fault messages" | 30 | bool "Verbose user fault messages" |
@@ -66,7 +77,7 @@ config DEBUG_ICEDCC | |||
66 | Say Y here if you want the debug print routines to direct their | 77 | Say Y here if you want the debug print routines to direct their |
67 | output to the EmbeddedICE macrocell's DCC channel using | 78 | output to the EmbeddedICE macrocell's DCC channel using |
68 | co-processor 14. This is known to work on the ARM9 style ICE | 79 | co-processor 14. This is known to work on the ARM9 style ICE |
69 | channel. | 80 | channel and on the XScale with the PEEDI. |
70 | 81 | ||
71 | It does include a timeout to ensure that the system does not | 82 | It does include a timeout to ensure that the system does not |
72 | totally freeze when there is nothing connected to read. | 83 | totally freeze when there is nothing connected to read. |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 24e0f0187697..e7ef876e574b 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -85,6 +85,10 @@ else | |||
85 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) | 85 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) |
86 | endif | 86 | endif |
87 | 87 | ||
88 | ifeq ($(CONFIG_ARM_UNWIND),y) | ||
89 | CFLAGS_ABI +=-funwind-tables | ||
90 | endif | ||
91 | |||
88 | # Need -Uarm for gcc < 3.x | 92 | # Need -Uarm for gcc < 3.x |
89 | KBUILD_CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm | 93 | KBUILD_CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm |
90 | KBUILD_AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float | 94 | KBUILD_AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 77d614232d81..d1b678dc120b 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -27,6 +27,12 @@ | |||
27 | .macro writeb, ch, rb | 27 | .macro writeb, ch, rb |
28 | mcr p14, 0, \ch, c0, c5, 0 | 28 | mcr p14, 0, \ch, c0, c5, 0 |
29 | .endm | 29 | .endm |
30 | #elif defined(CONFIG_CPU_XSCALE) | ||
31 | .macro loadsp, rb | ||
32 | .endm | ||
33 | .macro writeb, ch, rb | ||
34 | mcr p14, 0, \ch, c8, c0, 0 | ||
35 | .endm | ||
30 | #else | 36 | #else |
31 | .macro loadsp, rb | 37 | .macro loadsp, rb |
32 | .endm | 38 | .endm |
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 3fc08413fff0..393c81641314 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -46,6 +46,21 @@ static void icedcc_putc(int ch) | |||
46 | 46 | ||
47 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); | 47 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); |
48 | } | 48 | } |
49 | #elif defined(CONFIG_CPU_XSCALE) | ||
50 | |||
51 | static void icedcc_putc(int ch) | ||
52 | { | ||
53 | int status, i = 0x4000000; | ||
54 | |||
55 | do { | ||
56 | if (--i < 0) | ||
57 | return; | ||
58 | |||
59 | asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status)); | ||
60 | } while (status & (1 << 28)); | ||
61 | |||
62 | asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch)); | ||
63 | } | ||
49 | 64 | ||
50 | #else | 65 | #else |
51 | 66 | ||
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in index 153a07e7222b..a5924b9b88bd 100644 --- a/arch/arm/boot/compressed/vmlinux.lds.in +++ b/arch/arm/boot/compressed/vmlinux.lds.in | |||
@@ -11,6 +11,11 @@ OUTPUT_ARCH(arm) | |||
11 | ENTRY(_start) | 11 | ENTRY(_start) |
12 | SECTIONS | 12 | SECTIONS |
13 | { | 13 | { |
14 | /DISCARD/ : { | ||
15 | *(.ARM.exidx*) | ||
16 | *(.ARM.extab*) | ||
17 | } | ||
18 | |||
14 | . = TEXT_START; | 19 | . = TEXT_START; |
15 | _text = .; | 20 | _text = .; |
16 | 21 | ||
diff --git a/arch/arm/common/clkdev.c b/arch/arm/common/clkdev.c index 17a17b49a45b..1037bba18329 100644 --- a/arch/arm/common/clkdev.c +++ b/arch/arm/common/clkdev.c | |||
@@ -24,6 +24,15 @@ | |||
24 | static LIST_HEAD(clocks); | 24 | static LIST_HEAD(clocks); |
25 | static DEFINE_MUTEX(clocks_mutex); | 25 | static DEFINE_MUTEX(clocks_mutex); |
26 | 26 | ||
27 | /* | ||
28 | * Find the correct struct clk for the device and connection ID. | ||
29 | * We do slightly fuzzy matching here: | ||
30 | * An entry with a NULL ID is assumed to be a wildcard. | ||
31 | * If an entry has a device ID, it must match | ||
32 | * If an entry has a connection ID, it must match | ||
33 | * Then we take the most specific entry - with the following | ||
34 | * order of precidence: dev+con > dev only > con only. | ||
35 | */ | ||
27 | static struct clk *clk_find(const char *dev_id, const char *con_id) | 36 | static struct clk *clk_find(const char *dev_id, const char *con_id) |
28 | { | 37 | { |
29 | struct clk_lookup *p; | 38 | struct clk_lookup *p; |
@@ -31,13 +40,17 @@ static struct clk *clk_find(const char *dev_id, const char *con_id) | |||
31 | int match, best = 0; | 40 | int match, best = 0; |
32 | 41 | ||
33 | list_for_each_entry(p, &clocks, node) { | 42 | list_for_each_entry(p, &clocks, node) { |
34 | if ((p->dev_id && !dev_id) || (p->con_id && !con_id)) | ||
35 | continue; | ||
36 | match = 0; | 43 | match = 0; |
37 | if (p->dev_id) | 44 | if (p->dev_id) { |
38 | match += 2 * (strcmp(p->dev_id, dev_id) == 0); | 45 | if (!dev_id || strcmp(p->dev_id, dev_id)) |
39 | if (p->con_id) | 46 | continue; |
40 | match += 1 * (strcmp(p->con_id, con_id) == 0); | 47 | match += 2; |
48 | } | ||
49 | if (p->con_id) { | ||
50 | if (!con_id || strcmp(p->con_id, con_id)) | ||
51 | continue; | ||
52 | match += 1; | ||
53 | } | ||
41 | if (match == 0) | 54 | if (match == 0) |
42 | continue; | 55 | continue; |
43 | 56 | ||
diff --git a/arch/arm/configs/acs5k_defconfig b/arch/arm/configs/acs5k_defconfig new file mode 100644 index 000000000000..1cab4e79d368 --- /dev/null +++ b/arch/arm/configs/acs5k_defconfig | |||
@@ -0,0 +1,1233 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.27-simtec-micrel1 | ||
4 | # Tue Dec 16 13:31:34 2008 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | # CONFIG_GENERIC_TIME is not set | ||
10 | # CONFIG_GENERIC_CLOCKEVENTS is not set | ||
11 | CONFIG_MMU=y | ||
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | ||
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
16 | CONFIG_LOCKDEP_SUPPORT=y | ||
17 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
18 | CONFIG_HARDIRQS_SW_RESEND=y | ||
19 | CONFIG_GENERIC_IRQ_PROBE=y | ||
20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=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 | ||
28 | CONFIG_VECTORS_BASE=0xffff0000 | ||
29 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
30 | |||
31 | # | ||
32 | # General setup | ||
33 | # | ||
34 | CONFIG_EXPERIMENTAL=y | ||
35 | CONFIG_BROKEN_ON_SMP=y | ||
36 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
37 | CONFIG_LOCALVERSION="" | ||
38 | CONFIG_LOCALVERSION_AUTO=y | ||
39 | # CONFIG_SWAP is not set | ||
40 | CONFIG_SYSVIPC=y | ||
41 | CONFIG_SYSVIPC_SYSCTL=y | ||
42 | CONFIG_POSIX_MQUEUE=y | ||
43 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
44 | # CONFIG_TASKSTATS is not set | ||
45 | # CONFIG_AUDIT is not set | ||
46 | # CONFIG_IKCONFIG is not set | ||
47 | CONFIG_LOG_BUF_SHIFT=14 | ||
48 | # CONFIG_CGROUPS is not set | ||
49 | # CONFIG_GROUP_SCHED is not set | ||
50 | CONFIG_SYSFS_DEPRECATED=y | ||
51 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
52 | # CONFIG_RELAY is not set | ||
53 | CONFIG_NAMESPACES=y | ||
54 | # CONFIG_UTS_NS is not set | ||
55 | # CONFIG_IPC_NS is not set | ||
56 | # CONFIG_USER_NS is not set | ||
57 | # CONFIG_PID_NS is not set | ||
58 | CONFIG_BLK_DEV_INITRD=y | ||
59 | CONFIG_INITRAMFS_SOURCE="" | ||
60 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
61 | CONFIG_SYSCTL=y | ||
62 | # CONFIG_EMBEDDED is not set | ||
63 | CONFIG_UID16=y | ||
64 | CONFIG_SYSCTL_SYSCALL=y | ||
65 | CONFIG_KALLSYMS=y | ||
66 | # CONFIG_KALLSYMS_ALL is not set | ||
67 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
68 | CONFIG_HOTPLUG=y | ||
69 | CONFIG_PRINTK=y | ||
70 | CONFIG_BUG=y | ||
71 | CONFIG_ELF_CORE=y | ||
72 | CONFIG_COMPAT_BRK=y | ||
73 | CONFIG_BASE_FULL=y | ||
74 | CONFIG_FUTEX=y | ||
75 | CONFIG_ANON_INODES=y | ||
76 | CONFIG_EPOLL=y | ||
77 | CONFIG_SIGNALFD=y | ||
78 | CONFIG_TIMERFD=y | ||
79 | CONFIG_EVENTFD=y | ||
80 | CONFIG_SHMEM=y | ||
81 | CONFIG_VM_EVENT_COUNTERS=y | ||
82 | CONFIG_SLAB=y | ||
83 | # CONFIG_SLUB is not set | ||
84 | # CONFIG_SLOB is not set | ||
85 | # CONFIG_PROFILING is not set | ||
86 | # CONFIG_MARKERS is not set | ||
87 | CONFIG_HAVE_OPROFILE=y | ||
88 | # CONFIG_KPROBES is not set | ||
89 | # CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set | ||
90 | # CONFIG_HAVE_IOREMAP_PROT is not set | ||
91 | CONFIG_HAVE_KPROBES=y | ||
92 | CONFIG_HAVE_KRETPROBES=y | ||
93 | # CONFIG_HAVE_ARCH_TRACEHOOK is not set | ||
94 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
95 | # CONFIG_USE_GENERIC_SMP_HELPERS is not set | ||
96 | # CONFIG_HAVE_CLK is not set | ||
97 | CONFIG_PROC_PAGE_MONITOR=y | ||
98 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
99 | CONFIG_SLABINFO=y | ||
100 | CONFIG_RT_MUTEXES=y | ||
101 | # CONFIG_TINY_SHMEM is not set | ||
102 | CONFIG_BASE_SMALL=0 | ||
103 | CONFIG_MODULES=y | ||
104 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
105 | CONFIG_MODULE_UNLOAD=y | ||
106 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
107 | # CONFIG_MODVERSIONS is not set | ||
108 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
109 | CONFIG_KMOD=y | ||
110 | CONFIG_BLOCK=y | ||
111 | # CONFIG_LBD is not set | ||
112 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
113 | # CONFIG_LSF is not set | ||
114 | # CONFIG_BLK_DEV_BSG is not set | ||
115 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
116 | |||
117 | # | ||
118 | # IO Schedulers | ||
119 | # | ||
120 | CONFIG_IOSCHED_NOOP=y | ||
121 | CONFIG_IOSCHED_AS=y | ||
122 | # CONFIG_IOSCHED_DEADLINE is not set | ||
123 | # CONFIG_IOSCHED_CFQ is not set | ||
124 | CONFIG_DEFAULT_AS=y | ||
125 | # CONFIG_DEFAULT_DEADLINE is not set | ||
126 | # CONFIG_DEFAULT_CFQ is not set | ||
127 | # CONFIG_DEFAULT_NOOP is not set | ||
128 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
129 | CONFIG_CLASSIC_RCU=y | ||
130 | |||
131 | # | ||
132 | # System Type | ||
133 | # | ||
134 | # CONFIG_ARCH_AAEC2000 is not set | ||
135 | # CONFIG_ARCH_INTEGRATOR is not set | ||
136 | # CONFIG_ARCH_REALVIEW is not set | ||
137 | # CONFIG_ARCH_VERSATILE is not set | ||
138 | # CONFIG_ARCH_AT91 is not set | ||
139 | # CONFIG_ARCH_CLPS7500 is not set | ||
140 | # CONFIG_ARCH_CLPS711X is not set | ||
141 | # CONFIG_ARCH_EBSA110 is not set | ||
142 | # CONFIG_ARCH_EP93XX is not set | ||
143 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
144 | # CONFIG_ARCH_NETX is not set | ||
145 | # CONFIG_ARCH_H720X is not set | ||
146 | # CONFIG_ARCH_IMX is not set | ||
147 | # CONFIG_ARCH_IOP13XX is not set | ||
148 | # CONFIG_ARCH_IOP32X is not set | ||
149 | # CONFIG_ARCH_IOP33X is not set | ||
150 | # CONFIG_ARCH_IXP23XX is not set | ||
151 | # CONFIG_ARCH_IXP2000 is not set | ||
152 | # CONFIG_ARCH_IXP4XX is not set | ||
153 | # CONFIG_ARCH_L7200 is not set | ||
154 | # CONFIG_ARCH_KIRKWOOD is not set | ||
155 | CONFIG_ARCH_KS8695=y | ||
156 | # CONFIG_ARCH_NS9XXX is not set | ||
157 | # CONFIG_ARCH_LOKI is not set | ||
158 | # CONFIG_ARCH_MV78XX0 is not set | ||
159 | # CONFIG_ARCH_MXC is not set | ||
160 | # CONFIG_ARCH_ORION5X is not set | ||
161 | # CONFIG_ARCH_PNX4008 is not set | ||
162 | # CONFIG_ARCH_PXA is not set | ||
163 | # CONFIG_ARCH_RPC is not set | ||
164 | # CONFIG_ARCH_SA1100 is not set | ||
165 | # CONFIG_ARCH_S3C2410 is not set | ||
166 | # CONFIG_ARCH_SHARK is not set | ||
167 | # CONFIG_ARCH_LH7A40X is not set | ||
168 | # CONFIG_ARCH_DAVINCI is not set | ||
169 | # CONFIG_ARCH_OMAP is not set | ||
170 | # CONFIG_ARCH_MSM7X00A is not set | ||
171 | |||
172 | # | ||
173 | # Boot options | ||
174 | # | ||
175 | |||
176 | # | ||
177 | # Power management | ||
178 | # | ||
179 | |||
180 | # | ||
181 | # Kendin/Micrel KS8695 Implementations | ||
182 | # | ||
183 | CONFIG_MACH_KS8695=y | ||
184 | CONFIG_MACH_DSM320=y | ||
185 | CONFIG_MACH_ACS5K=y | ||
186 | |||
187 | # | ||
188 | # Processor Type | ||
189 | # | ||
190 | CONFIG_CPU_32=y | ||
191 | CONFIG_CPU_ARM922T=y | ||
192 | CONFIG_CPU_32v4T=y | ||
193 | CONFIG_CPU_ABRT_EV4T=y | ||
194 | CONFIG_CPU_PABRT_NOIFAR=y | ||
195 | CONFIG_CPU_CACHE_V4WT=y | ||
196 | CONFIG_CPU_CACHE_VIVT=y | ||
197 | CONFIG_CPU_COPY_V4WB=y | ||
198 | CONFIG_CPU_TLB_V4WBI=y | ||
199 | CONFIG_CPU_CP15=y | ||
200 | CONFIG_CPU_CP15_MMU=y | ||
201 | |||
202 | # | ||
203 | # Processor Features | ||
204 | # | ||
205 | # CONFIG_ARM_THUMB is not set | ||
206 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
207 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
208 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
209 | # CONFIG_OUTER_CACHE is not set | ||
210 | |||
211 | # | ||
212 | # Bus support | ||
213 | # | ||
214 | CONFIG_PCI=y | ||
215 | CONFIG_PCI_SYSCALL=y | ||
216 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
217 | CONFIG_PCI_LEGACY=y | ||
218 | CONFIG_PCI_DEBUG=y | ||
219 | CONFIG_PCCARD=y | ||
220 | # CONFIG_PCMCIA_DEBUG is not set | ||
221 | CONFIG_PCMCIA=y | ||
222 | CONFIG_PCMCIA_LOAD_CIS=y | ||
223 | CONFIG_PCMCIA_IOCTL=y | ||
224 | CONFIG_CARDBUS=y | ||
225 | |||
226 | # | ||
227 | # PC-card bridges | ||
228 | # | ||
229 | CONFIG_YENTA=y | ||
230 | CONFIG_YENTA_O2=y | ||
231 | CONFIG_YENTA_RICOH=y | ||
232 | CONFIG_YENTA_TI=y | ||
233 | CONFIG_YENTA_ENE_TUNE=y | ||
234 | CONFIG_YENTA_TOSHIBA=y | ||
235 | # CONFIG_PD6729 is not set | ||
236 | # CONFIG_I82092 is not set | ||
237 | CONFIG_PCCARD_NONSTATIC=y | ||
238 | |||
239 | # | ||
240 | # Kernel Features | ||
241 | # | ||
242 | # CONFIG_TICK_ONESHOT is not set | ||
243 | # CONFIG_PREEMPT is not set | ||
244 | CONFIG_HZ=100 | ||
245 | CONFIG_AEABI=y | ||
246 | CONFIG_OABI_COMPAT=y | ||
247 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
248 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
249 | CONFIG_SELECT_MEMORY_MODEL=y | ||
250 | CONFIG_FLATMEM_MANUAL=y | ||
251 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
252 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
253 | CONFIG_FLATMEM=y | ||
254 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
255 | # CONFIG_SPARSEMEM_STATIC is not set | ||
256 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
257 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
258 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
259 | # CONFIG_RESOURCES_64BIT is not set | ||
260 | CONFIG_ZONE_DMA_FLAG=1 | ||
261 | CONFIG_BOUNCE=y | ||
262 | CONFIG_VIRT_TO_BUS=y | ||
263 | # CONFIG_LEDS is not set | ||
264 | CONFIG_ALIGNMENT_TRAP=y | ||
265 | |||
266 | # | ||
267 | # Boot options | ||
268 | # | ||
269 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
270 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
271 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw" | ||
272 | # CONFIG_XIP_KERNEL is not set | ||
273 | # CONFIG_KEXEC is not set | ||
274 | |||
275 | # | ||
276 | # Floating point emulation | ||
277 | # | ||
278 | |||
279 | # | ||
280 | # At least one emulation must be selected | ||
281 | # | ||
282 | # CONFIG_FPE_NWFPE is not set | ||
283 | # CONFIG_FPE_FASTFPE is not set | ||
284 | |||
285 | # | ||
286 | # Userspace binary formats | ||
287 | # | ||
288 | CONFIG_BINFMT_ELF=y | ||
289 | # CONFIG_BINFMT_AOUT is not set | ||
290 | # CONFIG_BINFMT_MISC is not set | ||
291 | |||
292 | # | ||
293 | # Power management options | ||
294 | # | ||
295 | # CONFIG_PM is not set | ||
296 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
297 | CONFIG_NET=y | ||
298 | |||
299 | # | ||
300 | # Networking options | ||
301 | # | ||
302 | CONFIG_PACKET=y | ||
303 | # CONFIG_PACKET_MMAP is not set | ||
304 | CONFIG_UNIX=y | ||
305 | CONFIG_XFRM=y | ||
306 | # CONFIG_XFRM_USER is not set | ||
307 | # CONFIG_XFRM_SUB_POLICY is not set | ||
308 | # CONFIG_XFRM_MIGRATE is not set | ||
309 | # CONFIG_XFRM_STATISTICS is not set | ||
310 | # CONFIG_NET_KEY is not set | ||
311 | CONFIG_INET=y | ||
312 | # CONFIG_IP_MULTICAST is not set | ||
313 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
314 | CONFIG_IP_FIB_HASH=y | ||
315 | CONFIG_IP_PNP=y | ||
316 | CONFIG_IP_PNP_DHCP=y | ||
317 | # CONFIG_IP_PNP_BOOTP is not set | ||
318 | # CONFIG_IP_PNP_RARP is not set | ||
319 | # CONFIG_NET_IPIP is not set | ||
320 | # CONFIG_NET_IPGRE is not set | ||
321 | # CONFIG_ARPD is not set | ||
322 | # CONFIG_SYN_COOKIES is not set | ||
323 | # CONFIG_INET_AH is not set | ||
324 | # CONFIG_INET_ESP is not set | ||
325 | # CONFIG_INET_IPCOMP is not set | ||
326 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
327 | # CONFIG_INET_TUNNEL is not set | ||
328 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
329 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
330 | CONFIG_INET_XFRM_MODE_BEET=y | ||
331 | # CONFIG_INET_LRO is not set | ||
332 | CONFIG_INET_DIAG=y | ||
333 | CONFIG_INET_TCP_DIAG=y | ||
334 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
335 | CONFIG_TCP_CONG_CUBIC=y | ||
336 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
337 | # CONFIG_TCP_MD5SIG is not set | ||
338 | # CONFIG_IPV6 is not set | ||
339 | # CONFIG_NETWORK_SECMARK is not set | ||
340 | # CONFIG_NETFILTER is not set | ||
341 | # CONFIG_IP_DCCP is not set | ||
342 | # CONFIG_IP_SCTP is not set | ||
343 | # CONFIG_TIPC is not set | ||
344 | # CONFIG_ATM is not set | ||
345 | # CONFIG_BRIDGE is not set | ||
346 | # CONFIG_VLAN_8021Q is not set | ||
347 | # CONFIG_DECNET is not set | ||
348 | # CONFIG_LLC2 is not set | ||
349 | # CONFIG_IPX is not set | ||
350 | # CONFIG_ATALK is not set | ||
351 | # CONFIG_X25 is not set | ||
352 | # CONFIG_LAPB is not set | ||
353 | # CONFIG_ECONET is not set | ||
354 | # CONFIG_WAN_ROUTER is not set | ||
355 | # CONFIG_NET_SCHED is not set | ||
356 | |||
357 | # | ||
358 | # Network testing | ||
359 | # | ||
360 | # CONFIG_NET_PKTGEN is not set | ||
361 | # CONFIG_HAMRADIO is not set | ||
362 | # CONFIG_CAN is not set | ||
363 | # CONFIG_IRDA is not set | ||
364 | # CONFIG_BT is not set | ||
365 | # CONFIG_AF_RXRPC is not set | ||
366 | |||
367 | # | ||
368 | # Wireless | ||
369 | # | ||
370 | # CONFIG_CFG80211 is not set | ||
371 | CONFIG_WIRELESS_EXT=y | ||
372 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
373 | # CONFIG_MAC80211 is not set | ||
374 | # CONFIG_IEEE80211 is not set | ||
375 | # CONFIG_RFKILL is not set | ||
376 | # CONFIG_NET_9P is not set | ||
377 | |||
378 | # | ||
379 | # Device Drivers | ||
380 | # | ||
381 | |||
382 | # | ||
383 | # Generic Driver Options | ||
384 | # | ||
385 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
386 | CONFIG_STANDALONE=y | ||
387 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
388 | CONFIG_FW_LOADER=y | ||
389 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
390 | CONFIG_EXTRA_FIRMWARE="" | ||
391 | # CONFIG_DEBUG_DRIVER is not set | ||
392 | # CONFIG_DEBUG_DEVRES is not set | ||
393 | # CONFIG_SYS_HYPERVISOR is not set | ||
394 | # CONFIG_CONNECTOR is not set | ||
395 | CONFIG_MTD=y | ||
396 | # CONFIG_MTD_DEBUG is not set | ||
397 | CONFIG_MTD_CONCAT=y | ||
398 | CONFIG_MTD_PARTITIONS=y | ||
399 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
400 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
401 | # CONFIG_MTD_AFS_PARTS is not set | ||
402 | # CONFIG_MTD_AR7_PARTS is not set | ||
403 | |||
404 | # | ||
405 | # User Modules And Translation Layers | ||
406 | # | ||
407 | CONFIG_MTD_CHAR=y | ||
408 | CONFIG_MTD_BLKDEVS=y | ||
409 | CONFIG_MTD_BLOCK=y | ||
410 | # CONFIG_FTL is not set | ||
411 | # CONFIG_NFTL is not set | ||
412 | # CONFIG_INFTL is not set | ||
413 | # CONFIG_RFD_FTL is not set | ||
414 | # CONFIG_SSFDC is not set | ||
415 | # CONFIG_MTD_OOPS is not set | ||
416 | |||
417 | # | ||
418 | # RAM/ROM/Flash chip drivers | ||
419 | # | ||
420 | CONFIG_MTD_CFI=y | ||
421 | CONFIG_MTD_JEDECPROBE=y | ||
422 | CONFIG_MTD_GEN_PROBE=y | ||
423 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
424 | CONFIG_MTD_CFI_NOSWAP=y | ||
425 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
426 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
427 | # CONFIG_MTD_CFI_GEOMETRY is not set | ||
428 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
429 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
430 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
431 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
432 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
433 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
434 | CONFIG_MTD_CFI_I1=y | ||
435 | CONFIG_MTD_CFI_I2=y | ||
436 | # CONFIG_MTD_CFI_I4 is not set | ||
437 | # CONFIG_MTD_CFI_I8 is not set | ||
438 | # CONFIG_MTD_OTP is not set | ||
439 | CONFIG_MTD_CFI_INTELEXT=y | ||
440 | CONFIG_MTD_CFI_AMDSTD=y | ||
441 | # CONFIG_MTD_CFI_STAA is not set | ||
442 | CONFIG_MTD_CFI_UTIL=y | ||
443 | # CONFIG_MTD_RAM is not set | ||
444 | # CONFIG_MTD_ROM is not set | ||
445 | # CONFIG_MTD_ABSENT is not set | ||
446 | |||
447 | # | ||
448 | # Mapping drivers for chip access | ||
449 | # | ||
450 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
451 | CONFIG_MTD_PHYSMAP=y | ||
452 | CONFIG_MTD_PHYSMAP_START=0x8000000 | ||
453 | CONFIG_MTD_PHYSMAP_LEN=0 | ||
454 | CONFIG_MTD_PHYSMAP_BANKWIDTH=4 | ||
455 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
456 | # CONFIG_MTD_IMPA7 is not set | ||
457 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
458 | # CONFIG_MTD_PLATRAM is not set | ||
459 | |||
460 | # | ||
461 | # Self-contained MTD device drivers | ||
462 | # | ||
463 | # CONFIG_MTD_PMC551 is not set | ||
464 | # CONFIG_MTD_SLRAM is not set | ||
465 | # CONFIG_MTD_PHRAM is not set | ||
466 | # CONFIG_MTD_MTDRAM is not set | ||
467 | # CONFIG_MTD_BLOCK2MTD is not set | ||
468 | |||
469 | # | ||
470 | # Disk-On-Chip Device Drivers | ||
471 | # | ||
472 | # CONFIG_MTD_DOC2000 is not set | ||
473 | # CONFIG_MTD_DOC2001 is not set | ||
474 | # CONFIG_MTD_DOC2001PLUS is not set | ||
475 | # CONFIG_MTD_NAND is not set | ||
476 | # CONFIG_MTD_ONENAND is not set | ||
477 | |||
478 | # | ||
479 | # UBI - Unsorted block images | ||
480 | # | ||
481 | # CONFIG_MTD_UBI is not set | ||
482 | # CONFIG_PARPORT is not set | ||
483 | CONFIG_BLK_DEV=y | ||
484 | # CONFIG_BLK_CPQ_DA is not set | ||
485 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
486 | # CONFIG_BLK_DEV_DAC960 is not set | ||
487 | # CONFIG_BLK_DEV_UMEM is not set | ||
488 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
489 | # CONFIG_BLK_DEV_LOOP is not set | ||
490 | # CONFIG_BLK_DEV_NBD is not set | ||
491 | # CONFIG_BLK_DEV_SX8 is not set | ||
492 | CONFIG_BLK_DEV_RAM=y | ||
493 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
494 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
495 | # CONFIG_BLK_DEV_XIP is not set | ||
496 | # CONFIG_CDROM_PKTCDVD is not set | ||
497 | # CONFIG_ATA_OVER_ETH is not set | ||
498 | CONFIG_MISC_DEVICES=y | ||
499 | # CONFIG_PHANTOM is not set | ||
500 | # CONFIG_EEPROM_93CX6 is not set | ||
501 | # CONFIG_SGI_IOC4 is not set | ||
502 | # CONFIG_TIFM_CORE is not set | ||
503 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
504 | # CONFIG_HP_ILO is not set | ||
505 | CONFIG_HAVE_IDE=y | ||
506 | # CONFIG_IDE is not set | ||
507 | |||
508 | # | ||
509 | # SCSI device support | ||
510 | # | ||
511 | # CONFIG_RAID_ATTRS is not set | ||
512 | # CONFIG_SCSI is not set | ||
513 | # CONFIG_SCSI_DMA is not set | ||
514 | # CONFIG_SCSI_NETLINK is not set | ||
515 | # CONFIG_ATA is not set | ||
516 | # CONFIG_MD is not set | ||
517 | # CONFIG_FUSION is not set | ||
518 | |||
519 | # | ||
520 | # IEEE 1394 (FireWire) support | ||
521 | # | ||
522 | |||
523 | # | ||
524 | # Enable only one of the two stacks, unless you know what you are doing | ||
525 | # | ||
526 | # CONFIG_FIREWIRE is not set | ||
527 | # CONFIG_IEEE1394 is not set | ||
528 | # CONFIG_I2O is not set | ||
529 | CONFIG_NETDEVICES=y | ||
530 | # CONFIG_DUMMY is not set | ||
531 | # CONFIG_BONDING is not set | ||
532 | # CONFIG_MACVLAN is not set | ||
533 | # CONFIG_EQUALIZER is not set | ||
534 | # CONFIG_TUN is not set | ||
535 | # CONFIG_VETH is not set | ||
536 | # CONFIG_ARCNET is not set | ||
537 | # CONFIG_PHYLIB is not set | ||
538 | CONFIG_NET_ETHERNET=y | ||
539 | CONFIG_MII=y | ||
540 | CONFIG_ARM_KS8695_ETHER=y | ||
541 | # CONFIG_AX88796 is not set | ||
542 | # CONFIG_HAPPYMEAL is not set | ||
543 | # CONFIG_SUNGEM is not set | ||
544 | # CONFIG_CASSINI is not set | ||
545 | # CONFIG_NET_VENDOR_3COM is not set | ||
546 | # CONFIG_SMC91X is not set | ||
547 | # CONFIG_DM9000 is not set | ||
548 | # CONFIG_NET_TULIP is not set | ||
549 | # CONFIG_HP100 is not set | ||
550 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
551 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
552 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
553 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
554 | # CONFIG_NET_PCI is not set | ||
555 | # CONFIG_B44 is not set | ||
556 | # CONFIG_NETDEV_1000 is not set | ||
557 | # CONFIG_NETDEV_10000 is not set | ||
558 | # CONFIG_TR is not set | ||
559 | |||
560 | # | ||
561 | # Wireless LAN | ||
562 | # | ||
563 | # CONFIG_WLAN_PRE80211 is not set | ||
564 | CONFIG_WLAN_80211=y | ||
565 | # CONFIG_PCMCIA_RAYCS is not set | ||
566 | # CONFIG_IPW2100 is not set | ||
567 | # CONFIG_IPW2200 is not set | ||
568 | # CONFIG_LIBERTAS is not set | ||
569 | # CONFIG_HERMES is not set | ||
570 | # CONFIG_ATMEL is not set | ||
571 | # CONFIG_AIRO_CS is not set | ||
572 | # CONFIG_PCMCIA_WL3501 is not set | ||
573 | CONFIG_PRISM54=m | ||
574 | # CONFIG_IWLWIFI_LEDS is not set | ||
575 | # CONFIG_HOSTAP is not set | ||
576 | # CONFIG_NET_PCMCIA is not set | ||
577 | # CONFIG_WAN is not set | ||
578 | # CONFIG_FDDI is not set | ||
579 | # CONFIG_HIPPI is not set | ||
580 | # CONFIG_PPP is not set | ||
581 | # CONFIG_SLIP is not set | ||
582 | # CONFIG_NETCONSOLE is not set | ||
583 | # CONFIG_NETPOLL is not set | ||
584 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
585 | # CONFIG_ISDN is not set | ||
586 | |||
587 | # | ||
588 | # Input device support | ||
589 | # | ||
590 | CONFIG_INPUT=y | ||
591 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
592 | # CONFIG_INPUT_POLLDEV is not set | ||
593 | |||
594 | # | ||
595 | # Userland interfaces | ||
596 | # | ||
597 | CONFIG_INPUT_MOUSEDEV=y | ||
598 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
599 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
600 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
601 | # CONFIG_INPUT_JOYDEV is not set | ||
602 | # CONFIG_INPUT_EVDEV is not set | ||
603 | # CONFIG_INPUT_EVBUG is not set | ||
604 | |||
605 | # | ||
606 | # Input Device Drivers | ||
607 | # | ||
608 | # CONFIG_INPUT_KEYBOARD is not set | ||
609 | # CONFIG_INPUT_MOUSE is not set | ||
610 | # CONFIG_INPUT_JOYSTICK is not set | ||
611 | # CONFIG_INPUT_TABLET is not set | ||
612 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
613 | # CONFIG_INPUT_MISC is not set | ||
614 | |||
615 | # | ||
616 | # Hardware I/O ports | ||
617 | # | ||
618 | # CONFIG_SERIO is not set | ||
619 | # CONFIG_GAMEPORT is not set | ||
620 | |||
621 | # | ||
622 | # Character devices | ||
623 | # | ||
624 | CONFIG_VT=y | ||
625 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
626 | CONFIG_VT_CONSOLE=y | ||
627 | CONFIG_HW_CONSOLE=y | ||
628 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
629 | CONFIG_DEVKMEM=y | ||
630 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
631 | # CONFIG_NOZOMI is not set | ||
632 | |||
633 | # | ||
634 | # Serial drivers | ||
635 | # | ||
636 | # CONFIG_SERIAL_8250 is not set | ||
637 | |||
638 | # | ||
639 | # Non-8250 serial port support | ||
640 | # | ||
641 | CONFIG_SERIAL_KS8695=y | ||
642 | CONFIG_SERIAL_KS8695_CONSOLE=y | ||
643 | CONFIG_SERIAL_CORE=y | ||
644 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
645 | # CONFIG_SERIAL_JSM is not set | ||
646 | CONFIG_UNIX98_PTYS=y | ||
647 | CONFIG_LEGACY_PTYS=y | ||
648 | CONFIG_LEGACY_PTY_COUNT=256 | ||
649 | # CONFIG_IPMI_HANDLER is not set | ||
650 | CONFIG_HW_RANDOM=m | ||
651 | # CONFIG_NVRAM is not set | ||
652 | # CONFIG_R3964 is not set | ||
653 | # CONFIG_APPLICOM is not set | ||
654 | |||
655 | # | ||
656 | # PCMCIA character devices | ||
657 | # | ||
658 | # CONFIG_SYNCLINK_CS is not set | ||
659 | # CONFIG_CARDMAN_4000 is not set | ||
660 | # CONFIG_CARDMAN_4040 is not set | ||
661 | # CONFIG_IPWIRELESS is not set | ||
662 | # CONFIG_RAW_DRIVER is not set | ||
663 | # CONFIG_TCG_TPM is not set | ||
664 | CONFIG_DEVPORT=y | ||
665 | CONFIG_ACS5KCAN=y | ||
666 | CONFIG_I2C=y | ||
667 | CONFIG_I2C_BOARDINFO=y | ||
668 | CONFIG_I2C_CHARDEV=y | ||
669 | CONFIG_I2C_HELPER_AUTO=y | ||
670 | CONFIG_I2C_ALGOBIT=y | ||
671 | |||
672 | # | ||
673 | # I2C Hardware Bus support | ||
674 | # | ||
675 | |||
676 | # | ||
677 | # PC SMBus host controller drivers | ||
678 | # | ||
679 | # CONFIG_I2C_ALI1535 is not set | ||
680 | # CONFIG_I2C_ALI1563 is not set | ||
681 | # CONFIG_I2C_ALI15X3 is not set | ||
682 | # CONFIG_I2C_AMD756 is not set | ||
683 | # CONFIG_I2C_AMD8111 is not set | ||
684 | # CONFIG_I2C_I801 is not set | ||
685 | # CONFIG_I2C_ISCH is not set | ||
686 | # CONFIG_I2C_PIIX4 is not set | ||
687 | # CONFIG_I2C_NFORCE2 is not set | ||
688 | # CONFIG_I2C_SIS5595 is not set | ||
689 | # CONFIG_I2C_SIS630 is not set | ||
690 | # CONFIG_I2C_SIS96X is not set | ||
691 | # CONFIG_I2C_VIA is not set | ||
692 | # CONFIG_I2C_VIAPRO is not set | ||
693 | |||
694 | # | ||
695 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
696 | # | ||
697 | CONFIG_I2C_GPIO=y | ||
698 | # CONFIG_I2C_OCORES is not set | ||
699 | # CONFIG_I2C_SIMTEC is not set | ||
700 | |||
701 | # | ||
702 | # External I2C/SMBus adapter drivers | ||
703 | # | ||
704 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
705 | # CONFIG_I2C_TAOS_EVM is not set | ||
706 | |||
707 | # | ||
708 | # Graphics adapter I2C/DDC channel drivers | ||
709 | # | ||
710 | # CONFIG_I2C_VOODOO3 is not set | ||
711 | |||
712 | # | ||
713 | # Other I2C/SMBus bus drivers | ||
714 | # | ||
715 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
716 | # CONFIG_I2C_STUB is not set | ||
717 | |||
718 | # | ||
719 | # Miscellaneous I2C Chip support | ||
720 | # | ||
721 | # CONFIG_DS1682 is not set | ||
722 | # CONFIG_AT24 is not set | ||
723 | # CONFIG_SENSORS_EEPROM is not set | ||
724 | # CONFIG_SENSORS_PCF8574 is not set | ||
725 | # CONFIG_PCF8575 is not set | ||
726 | # CONFIG_SENSORS_PCF8591 is not set | ||
727 | # CONFIG_TPS65010 is not set | ||
728 | # CONFIG_SENSORS_MAX6875 is not set | ||
729 | # CONFIG_SENSORS_TSL2550 is not set | ||
730 | # CONFIG_I2C_DEBUG_CORE is not set | ||
731 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
732 | # CONFIG_I2C_DEBUG_BUS is not set | ||
733 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
734 | # CONFIG_SPI is not set | ||
735 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
736 | CONFIG_GPIOLIB=y | ||
737 | # CONFIG_DEBUG_GPIO is not set | ||
738 | CONFIG_GPIO_SYSFS=y | ||
739 | |||
740 | # | ||
741 | # I2C GPIO expanders: | ||
742 | # | ||
743 | # CONFIG_GPIO_MAX732X is not set | ||
744 | CONFIG_GPIO_PCA953X=y | ||
745 | # CONFIG_GPIO_PCF857X is not set | ||
746 | |||
747 | # | ||
748 | # PCI GPIO expanders: | ||
749 | # | ||
750 | # CONFIG_GPIO_BT8XX is not set | ||
751 | |||
752 | # | ||
753 | # SPI GPIO expanders: | ||
754 | # | ||
755 | # CONFIG_W1 is not set | ||
756 | # CONFIG_POWER_SUPPLY is not set | ||
757 | CONFIG_HWMON=y | ||
758 | # CONFIG_HWMON_VID is not set | ||
759 | # CONFIG_SENSORS_AD7414 is not set | ||
760 | # CONFIG_SENSORS_AD7418 is not set | ||
761 | # CONFIG_SENSORS_ADM1021 is not set | ||
762 | # CONFIG_SENSORS_ADM1025 is not set | ||
763 | # CONFIG_SENSORS_ADM1026 is not set | ||
764 | # CONFIG_SENSORS_ADM1029 is not set | ||
765 | # CONFIG_SENSORS_ADM1031 is not set | ||
766 | # CONFIG_SENSORS_ADM9240 is not set | ||
767 | # CONFIG_SENSORS_ADT7470 is not set | ||
768 | # CONFIG_SENSORS_ADT7473 is not set | ||
769 | # CONFIG_SENSORS_ATXP1 is not set | ||
770 | # CONFIG_SENSORS_DS1621 is not set | ||
771 | # CONFIG_SENSORS_I5K_AMB is not set | ||
772 | # CONFIG_SENSORS_F71805F is not set | ||
773 | # CONFIG_SENSORS_F71882FG is not set | ||
774 | # CONFIG_SENSORS_F75375S is not set | ||
775 | # CONFIG_SENSORS_GL518SM is not set | ||
776 | # CONFIG_SENSORS_GL520SM is not set | ||
777 | # CONFIG_SENSORS_IT87 is not set | ||
778 | # CONFIG_SENSORS_LM63 is not set | ||
779 | # CONFIG_SENSORS_LM75 is not set | ||
780 | # CONFIG_SENSORS_LM77 is not set | ||
781 | # CONFIG_SENSORS_LM78 is not set | ||
782 | # CONFIG_SENSORS_LM80 is not set | ||
783 | # CONFIG_SENSORS_LM83 is not set | ||
784 | # CONFIG_SENSORS_LM85 is not set | ||
785 | # CONFIG_SENSORS_LM87 is not set | ||
786 | # CONFIG_SENSORS_LM90 is not set | ||
787 | # CONFIG_SENSORS_LM92 is not set | ||
788 | # CONFIG_SENSORS_LM93 is not set | ||
789 | # CONFIG_SENSORS_MAX1619 is not set | ||
790 | # CONFIG_SENSORS_MAX6650 is not set | ||
791 | # CONFIG_SENSORS_PC87360 is not set | ||
792 | # CONFIG_SENSORS_PC87427 is not set | ||
793 | # CONFIG_SENSORS_SIS5595 is not set | ||
794 | # CONFIG_SENSORS_DME1737 is not set | ||
795 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
796 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
797 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
798 | # CONFIG_SENSORS_ADS7828 is not set | ||
799 | # CONFIG_SENSORS_THMC50 is not set | ||
800 | # CONFIG_SENSORS_VIA686A is not set | ||
801 | # CONFIG_SENSORS_VT1211 is not set | ||
802 | # CONFIG_SENSORS_VT8231 is not set | ||
803 | # CONFIG_SENSORS_W83781D is not set | ||
804 | # CONFIG_SENSORS_W83791D is not set | ||
805 | # CONFIG_SENSORS_W83792D is not set | ||
806 | # CONFIG_SENSORS_W83793 is not set | ||
807 | # CONFIG_SENSORS_W83L785TS is not set | ||
808 | # CONFIG_SENSORS_W83L786NG is not set | ||
809 | # CONFIG_SENSORS_W83627HF is not set | ||
810 | # CONFIG_SENSORS_W83627EHF is not set | ||
811 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
812 | CONFIG_WATCHDOG=y | ||
813 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
814 | |||
815 | # | ||
816 | # Watchdog Device Drivers | ||
817 | # | ||
818 | # CONFIG_SOFT_WATCHDOG is not set | ||
819 | CONFIG_KS8695_WATCHDOG=y | ||
820 | # CONFIG_ALIM7101_WDT is not set | ||
821 | |||
822 | # | ||
823 | # PCI-based Watchdog Cards | ||
824 | # | ||
825 | # CONFIG_PCIPCWATCHDOG is not set | ||
826 | # CONFIG_WDTPCI is not set | ||
827 | |||
828 | # | ||
829 | # Sonics Silicon Backplane | ||
830 | # | ||
831 | CONFIG_SSB_POSSIBLE=y | ||
832 | # CONFIG_SSB is not set | ||
833 | |||
834 | # | ||
835 | # Multifunction device drivers | ||
836 | # | ||
837 | # CONFIG_MFD_CORE is not set | ||
838 | # CONFIG_MFD_SM501 is not set | ||
839 | # CONFIG_MFD_ASIC3 is not set | ||
840 | # CONFIG_HTC_EGPIO is not set | ||
841 | # CONFIG_HTC_PASIC3 is not set | ||
842 | # CONFIG_MFD_TMIO is not set | ||
843 | # CONFIG_MFD_T7L66XB is not set | ||
844 | # CONFIG_MFD_TC6387XB is not set | ||
845 | # CONFIG_MFD_TC6393XB is not set | ||
846 | |||
847 | # | ||
848 | # Multimedia devices | ||
849 | # | ||
850 | |||
851 | # | ||
852 | # Multimedia core support | ||
853 | # | ||
854 | # CONFIG_VIDEO_DEV is not set | ||
855 | # CONFIG_DVB_CORE is not set | ||
856 | # CONFIG_VIDEO_MEDIA is not set | ||
857 | |||
858 | # | ||
859 | # Multimedia drivers | ||
860 | # | ||
861 | # CONFIG_DAB is not set | ||
862 | |||
863 | # | ||
864 | # Graphics support | ||
865 | # | ||
866 | # CONFIG_DRM is not set | ||
867 | # CONFIG_VGASTATE is not set | ||
868 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
869 | # CONFIG_FB is not set | ||
870 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
871 | |||
872 | # | ||
873 | # Display device support | ||
874 | # | ||
875 | # CONFIG_DISPLAY_SUPPORT is not set | ||
876 | |||
877 | # | ||
878 | # Console display driver support | ||
879 | # | ||
880 | # CONFIG_VGA_CONSOLE is not set | ||
881 | CONFIG_DUMMY_CONSOLE=y | ||
882 | # CONFIG_SOUND is not set | ||
883 | CONFIG_HID_SUPPORT=y | ||
884 | CONFIG_HID=y | ||
885 | CONFIG_HID_DEBUG=y | ||
886 | # CONFIG_HIDRAW is not set | ||
887 | CONFIG_USB_SUPPORT=y | ||
888 | CONFIG_USB_ARCH_HAS_HCD=y | ||
889 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
890 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
891 | # CONFIG_USB is not set | ||
892 | |||
893 | # | ||
894 | # Enable Host or Gadget support to see Inventra options | ||
895 | # | ||
896 | |||
897 | # | ||
898 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
899 | # | ||
900 | # CONFIG_USB_GADGET is not set | ||
901 | # CONFIG_MMC is not set | ||
902 | # CONFIG_NEW_LEDS is not set | ||
903 | CONFIG_RTC_LIB=y | ||
904 | CONFIG_RTC_CLASS=y | ||
905 | CONFIG_RTC_HCTOSYS=y | ||
906 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
907 | # CONFIG_RTC_DEBUG is not set | ||
908 | |||
909 | # | ||
910 | # RTC interfaces | ||
911 | # | ||
912 | CONFIG_RTC_INTF_SYSFS=y | ||
913 | CONFIG_RTC_INTF_PROC=y | ||
914 | CONFIG_RTC_INTF_DEV=y | ||
915 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
916 | # CONFIG_RTC_DRV_TEST is not set | ||
917 | |||
918 | # | ||
919 | # I2C RTC drivers | ||
920 | # | ||
921 | # CONFIG_RTC_DRV_DS1307 is not set | ||
922 | # CONFIG_RTC_DRV_DS1374 is not set | ||
923 | # CONFIG_RTC_DRV_DS1672 is not set | ||
924 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
925 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
926 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
927 | # CONFIG_RTC_DRV_X1205 is not set | ||
928 | CONFIG_RTC_DRV_PCF8563=y | ||
929 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
930 | # CONFIG_RTC_DRV_M41T80 is not set | ||
931 | # CONFIG_RTC_DRV_S35390A is not set | ||
932 | # CONFIG_RTC_DRV_FM3130 is not set | ||
933 | |||
934 | # | ||
935 | # SPI RTC drivers | ||
936 | # | ||
937 | |||
938 | # | ||
939 | # Platform RTC drivers | ||
940 | # | ||
941 | # CONFIG_RTC_DRV_CMOS is not set | ||
942 | # CONFIG_RTC_DRV_DS1511 is not set | ||
943 | # CONFIG_RTC_DRV_DS1553 is not set | ||
944 | # CONFIG_RTC_DRV_DS1742 is not set | ||
945 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
946 | # CONFIG_RTC_DRV_M48T86 is not set | ||
947 | # CONFIG_RTC_DRV_M48T59 is not set | ||
948 | # CONFIG_RTC_DRV_V3020 is not set | ||
949 | |||
950 | # | ||
951 | # on-CPU RTC drivers | ||
952 | # | ||
953 | # CONFIG_DMADEVICES is not set | ||
954 | |||
955 | # | ||
956 | # Voltage and Current regulators | ||
957 | # | ||
958 | # CONFIG_REGULATOR is not set | ||
959 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | ||
960 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | ||
961 | # CONFIG_REGULATOR_BQ24022 is not set | ||
962 | # CONFIG_UIO is not set | ||
963 | |||
964 | # | ||
965 | # File systems | ||
966 | # | ||
967 | CONFIG_EXT2_FS=y | ||
968 | # CONFIG_EXT2_FS_XATTR is not set | ||
969 | # CONFIG_EXT2_FS_XIP is not set | ||
970 | # CONFIG_EXT3_FS is not set | ||
971 | # CONFIG_EXT4DEV_FS is not set | ||
972 | # CONFIG_REISERFS_FS is not set | ||
973 | # CONFIG_JFS_FS is not set | ||
974 | # CONFIG_FS_POSIX_ACL is not set | ||
975 | # CONFIG_XFS_FS is not set | ||
976 | # CONFIG_OCFS2_FS is not set | ||
977 | CONFIG_DNOTIFY=y | ||
978 | CONFIG_INOTIFY=y | ||
979 | CONFIG_INOTIFY_USER=y | ||
980 | # CONFIG_QUOTA is not set | ||
981 | # CONFIG_AUTOFS_FS is not set | ||
982 | # CONFIG_AUTOFS4_FS is not set | ||
983 | # CONFIG_FUSE_FS is not set | ||
984 | |||
985 | # | ||
986 | # CD-ROM/DVD Filesystems | ||
987 | # | ||
988 | # CONFIG_ISO9660_FS is not set | ||
989 | # CONFIG_UDF_FS is not set | ||
990 | |||
991 | # | ||
992 | # DOS/FAT/NT Filesystems | ||
993 | # | ||
994 | # CONFIG_MSDOS_FS is not set | ||
995 | # CONFIG_VFAT_FS is not set | ||
996 | # CONFIG_NTFS_FS is not set | ||
997 | |||
998 | # | ||
999 | # Pseudo filesystems | ||
1000 | # | ||
1001 | CONFIG_PROC_FS=y | ||
1002 | CONFIG_PROC_SYSCTL=y | ||
1003 | CONFIG_SYSFS=y | ||
1004 | CONFIG_TMPFS=y | ||
1005 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1006 | # CONFIG_HUGETLB_PAGE is not set | ||
1007 | # CONFIG_CONFIGFS_FS is not set | ||
1008 | |||
1009 | # | ||
1010 | # Miscellaneous filesystems | ||
1011 | # | ||
1012 | # CONFIG_ADFS_FS is not set | ||
1013 | # CONFIG_AFFS_FS is not set | ||
1014 | # CONFIG_HFS_FS is not set | ||
1015 | # CONFIG_HFSPLUS_FS is not set | ||
1016 | # CONFIG_BEFS_FS is not set | ||
1017 | # CONFIG_BFS_FS is not set | ||
1018 | # CONFIG_EFS_FS is not set | ||
1019 | CONFIG_JFFS2_FS=y | ||
1020 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1021 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1022 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1023 | CONFIG_JFFS2_SUMMARY=y | ||
1024 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1025 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
1026 | CONFIG_JFFS2_ZLIB=y | ||
1027 | # CONFIG_JFFS2_LZO is not set | ||
1028 | CONFIG_JFFS2_RTIME=y | ||
1029 | CONFIG_JFFS2_RUBIN=y | ||
1030 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
1031 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
1032 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
1033 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | ||
1034 | CONFIG_CRAMFS=y | ||
1035 | # CONFIG_VXFS_FS is not set | ||
1036 | # CONFIG_MINIX_FS is not set | ||
1037 | # CONFIG_OMFS_FS is not set | ||
1038 | # CONFIG_HPFS_FS is not set | ||
1039 | # CONFIG_QNX4FS_FS is not set | ||
1040 | # CONFIG_ROMFS_FS is not set | ||
1041 | # CONFIG_SYSV_FS is not set | ||
1042 | # CONFIG_UFS_FS is not set | ||
1043 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1044 | CONFIG_NFS_FS=y | ||
1045 | CONFIG_NFS_V3=y | ||
1046 | # CONFIG_NFS_V3_ACL is not set | ||
1047 | # CONFIG_NFS_V4 is not set | ||
1048 | CONFIG_ROOT_NFS=y | ||
1049 | # CONFIG_NFSD is not set | ||
1050 | CONFIG_LOCKD=y | ||
1051 | CONFIG_LOCKD_V4=y | ||
1052 | CONFIG_NFS_COMMON=y | ||
1053 | CONFIG_SUNRPC=y | ||
1054 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1055 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1056 | # CONFIG_SMB_FS is not set | ||
1057 | # CONFIG_CIFS is not set | ||
1058 | # CONFIG_NCP_FS is not set | ||
1059 | # CONFIG_CODA_FS is not set | ||
1060 | # CONFIG_AFS_FS is not set | ||
1061 | |||
1062 | # | ||
1063 | # Partition Types | ||
1064 | # | ||
1065 | # CONFIG_PARTITION_ADVANCED is not set | ||
1066 | CONFIG_MSDOS_PARTITION=y | ||
1067 | # CONFIG_NLS is not set | ||
1068 | # CONFIG_DLM is not set | ||
1069 | |||
1070 | # | ||
1071 | # Kernel hacking | ||
1072 | # | ||
1073 | # CONFIG_PRINTK_TIME is not set | ||
1074 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1075 | CONFIG_ENABLE_MUST_CHECK=y | ||
1076 | CONFIG_FRAME_WARN=1024 | ||
1077 | # CONFIG_MAGIC_SYSRQ is not set | ||
1078 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1079 | # CONFIG_DEBUG_FS is not set | ||
1080 | # CONFIG_HEADERS_CHECK is not set | ||
1081 | CONFIG_DEBUG_KERNEL=y | ||
1082 | # CONFIG_DEBUG_SHIRQ is not set | ||
1083 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1084 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1085 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1086 | CONFIG_SCHED_DEBUG=y | ||
1087 | # CONFIG_SCHEDSTATS is not set | ||
1088 | # CONFIG_TIMER_STATS is not set | ||
1089 | # CONFIG_DEBUG_OBJECTS is not set | ||
1090 | # CONFIG_DEBUG_SLAB is not set | ||
1091 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1092 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1093 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1094 | CONFIG_DEBUG_MUTEXES=y | ||
1095 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1096 | # CONFIG_PROVE_LOCKING is not set | ||
1097 | # CONFIG_LOCK_STAT is not set | ||
1098 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1099 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1100 | # CONFIG_DEBUG_KOBJECT is not set | ||
1101 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1102 | # CONFIG_DEBUG_INFO is not set | ||
1103 | # CONFIG_DEBUG_VM is not set | ||
1104 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1105 | CONFIG_DEBUG_MEMORY_INIT=y | ||
1106 | # CONFIG_DEBUG_LIST is not set | ||
1107 | # CONFIG_DEBUG_SG 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_BACKTRACE_SELF_TEST is not set | ||
1112 | # CONFIG_FAULT_INJECTION is not set | ||
1113 | # CONFIG_LATENCYTOP is not set | ||
1114 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1115 | CONFIG_HAVE_FTRACE=y | ||
1116 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1117 | # CONFIG_FTRACE is not set | ||
1118 | # CONFIG_SCHED_TRACER is not set | ||
1119 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
1120 | # CONFIG_SAMPLES is not set | ||
1121 | CONFIG_HAVE_ARCH_KGDB=y | ||
1122 | # CONFIG_KGDB is not set | ||
1123 | CONFIG_DEBUG_USER=y | ||
1124 | # CONFIG_DEBUG_ERRORS is not set | ||
1125 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1126 | CONFIG_DEBUG_LL=y | ||
1127 | # CONFIG_DEBUG_ICEDCC is not set | ||
1128 | |||
1129 | # | ||
1130 | # Security options | ||
1131 | # | ||
1132 | # CONFIG_KEYS is not set | ||
1133 | # CONFIG_SECURITY is not set | ||
1134 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1135 | CONFIG_CRYPTO=y | ||
1136 | |||
1137 | # | ||
1138 | # Crypto core or helper | ||
1139 | # | ||
1140 | # CONFIG_CRYPTO_MANAGER is not set | ||
1141 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1142 | # CONFIG_CRYPTO_NULL is not set | ||
1143 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1144 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1145 | # CONFIG_CRYPTO_TEST is not set | ||
1146 | |||
1147 | # | ||
1148 | # Authenticated Encryption with Associated Data | ||
1149 | # | ||
1150 | # CONFIG_CRYPTO_CCM is not set | ||
1151 | # CONFIG_CRYPTO_GCM is not set | ||
1152 | # CONFIG_CRYPTO_SEQIV is not set | ||
1153 | |||
1154 | # | ||
1155 | # Block modes | ||
1156 | # | ||
1157 | # CONFIG_CRYPTO_CBC is not set | ||
1158 | # CONFIG_CRYPTO_CTR is not set | ||
1159 | # CONFIG_CRYPTO_CTS is not set | ||
1160 | # CONFIG_CRYPTO_ECB is not set | ||
1161 | # CONFIG_CRYPTO_LRW is not set | ||
1162 | # CONFIG_CRYPTO_PCBC is not set | ||
1163 | # CONFIG_CRYPTO_XTS is not set | ||
1164 | |||
1165 | # | ||
1166 | # Hash modes | ||
1167 | # | ||
1168 | # CONFIG_CRYPTO_HMAC is not set | ||
1169 | # CONFIG_CRYPTO_XCBC is not set | ||
1170 | |||
1171 | # | ||
1172 | # Digest | ||
1173 | # | ||
1174 | # CONFIG_CRYPTO_CRC32C is not set | ||
1175 | # CONFIG_CRYPTO_MD4 is not set | ||
1176 | # CONFIG_CRYPTO_MD5 is not set | ||
1177 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1178 | # CONFIG_CRYPTO_RMD128 is not set | ||
1179 | # CONFIG_CRYPTO_RMD160 is not set | ||
1180 | # CONFIG_CRYPTO_RMD256 is not set | ||
1181 | # CONFIG_CRYPTO_RMD320 is not set | ||
1182 | # CONFIG_CRYPTO_SHA1 is not set | ||
1183 | # CONFIG_CRYPTO_SHA256 is not set | ||
1184 | # CONFIG_CRYPTO_SHA512 is not set | ||
1185 | # CONFIG_CRYPTO_TGR192 is not set | ||
1186 | # CONFIG_CRYPTO_WP512 is not set | ||
1187 | |||
1188 | # | ||
1189 | # Ciphers | ||
1190 | # | ||
1191 | # CONFIG_CRYPTO_AES is not set | ||
1192 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1193 | # CONFIG_CRYPTO_ARC4 is not set | ||
1194 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1195 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1196 | # CONFIG_CRYPTO_CAST5 is not set | ||
1197 | # CONFIG_CRYPTO_CAST6 is not set | ||
1198 | # CONFIG_CRYPTO_DES is not set | ||
1199 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1200 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1201 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1202 | # CONFIG_CRYPTO_SEED is not set | ||
1203 | # CONFIG_CRYPTO_SERPENT is not set | ||
1204 | # CONFIG_CRYPTO_TEA is not set | ||
1205 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1206 | |||
1207 | # | ||
1208 | # Compression | ||
1209 | # | ||
1210 | # CONFIG_CRYPTO_DEFLATE is not set | ||
1211 | # CONFIG_CRYPTO_LZO is not set | ||
1212 | CONFIG_CRYPTO_HW=y | ||
1213 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1214 | |||
1215 | # | ||
1216 | # Library routines | ||
1217 | # | ||
1218 | CONFIG_BITREVERSE=y | ||
1219 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1220 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1221 | # CONFIG_CRC_CCITT is not set | ||
1222 | # CONFIG_CRC16 is not set | ||
1223 | # CONFIG_CRC_T10DIF is not set | ||
1224 | # CONFIG_CRC_ITU_T is not set | ||
1225 | CONFIG_CRC32=y | ||
1226 | # CONFIG_CRC7 is not set | ||
1227 | # CONFIG_LIBCRC32C is not set | ||
1228 | CONFIG_ZLIB_INFLATE=y | ||
1229 | CONFIG_ZLIB_DEFLATE=y | ||
1230 | CONFIG_PLIST=y | ||
1231 | CONFIG_HAS_IOMEM=y | ||
1232 | CONFIG_HAS_IOPORT=y | ||
1233 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/configs/acs5k_tiny_defconfig b/arch/arm/configs/acs5k_tiny_defconfig new file mode 100644 index 000000000000..8e3d084afd78 --- /dev/null +++ b/arch/arm/configs/acs5k_tiny_defconfig | |||
@@ -0,0 +1,941 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.27-simtec-micrel1 | ||
4 | # Tue Jan 6 13:23:07 2009 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | # CONFIG_GENERIC_TIME is not set | ||
10 | # CONFIG_GENERIC_CLOCKEVENTS is not set | ||
11 | CONFIG_MMU=y | ||
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | ||
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
16 | CONFIG_LOCKDEP_SUPPORT=y | ||
17 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
18 | CONFIG_HARDIRQS_SW_RESEND=y | ||
19 | CONFIG_GENERIC_IRQ_PROBE=y | ||
20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=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 | ||
28 | CONFIG_VECTORS_BASE=0xffff0000 | ||
29 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
30 | |||
31 | # | ||
32 | # General setup | ||
33 | # | ||
34 | CONFIG_EXPERIMENTAL=y | ||
35 | CONFIG_BROKEN_ON_SMP=y | ||
36 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
37 | CONFIG_LOCALVERSION="" | ||
38 | CONFIG_LOCALVERSION_AUTO=y | ||
39 | # CONFIG_SWAP is not set | ||
40 | CONFIG_SYSVIPC=y | ||
41 | CONFIG_SYSVIPC_SYSCTL=y | ||
42 | CONFIG_POSIX_MQUEUE=y | ||
43 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
44 | # CONFIG_TASKSTATS is not set | ||
45 | # CONFIG_AUDIT is not set | ||
46 | # CONFIG_IKCONFIG is not set | ||
47 | CONFIG_LOG_BUF_SHIFT=14 | ||
48 | # CONFIG_CGROUPS is not set | ||
49 | # CONFIG_GROUP_SCHED is not set | ||
50 | CONFIG_SYSFS_DEPRECATED=y | ||
51 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
52 | # CONFIG_RELAY is not set | ||
53 | CONFIG_NAMESPACES=y | ||
54 | # CONFIG_UTS_NS is not set | ||
55 | # CONFIG_IPC_NS is not set | ||
56 | # CONFIG_USER_NS is not set | ||
57 | # CONFIG_PID_NS is not set | ||
58 | # CONFIG_BLK_DEV_INITRD is not set | ||
59 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
60 | CONFIG_SYSCTL=y | ||
61 | # CONFIG_EMBEDDED is not set | ||
62 | CONFIG_UID16=y | ||
63 | CONFIG_SYSCTL_SYSCALL=y | ||
64 | CONFIG_KALLSYMS=y | ||
65 | # CONFIG_KALLSYMS_ALL is not set | ||
66 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
67 | CONFIG_HOTPLUG=y | ||
68 | CONFIG_PRINTK=y | ||
69 | CONFIG_BUG=y | ||
70 | CONFIG_ELF_CORE=y | ||
71 | CONFIG_COMPAT_BRK=y | ||
72 | CONFIG_BASE_FULL=y | ||
73 | CONFIG_FUTEX=y | ||
74 | CONFIG_ANON_INODES=y | ||
75 | CONFIG_EPOLL=y | ||
76 | CONFIG_SIGNALFD=y | ||
77 | CONFIG_TIMERFD=y | ||
78 | CONFIG_EVENTFD=y | ||
79 | CONFIG_SHMEM=y | ||
80 | CONFIG_VM_EVENT_COUNTERS=y | ||
81 | CONFIG_SLAB=y | ||
82 | # CONFIG_SLUB is not set | ||
83 | # CONFIG_SLOB is not set | ||
84 | # CONFIG_PROFILING is not set | ||
85 | # CONFIG_MARKERS is not set | ||
86 | CONFIG_HAVE_OPROFILE=y | ||
87 | # CONFIG_KPROBES is not set | ||
88 | # CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set | ||
89 | # CONFIG_HAVE_IOREMAP_PROT is not set | ||
90 | CONFIG_HAVE_KPROBES=y | ||
91 | CONFIG_HAVE_KRETPROBES=y | ||
92 | # CONFIG_HAVE_ARCH_TRACEHOOK is not set | ||
93 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
94 | # CONFIG_USE_GENERIC_SMP_HELPERS is not set | ||
95 | # CONFIG_HAVE_CLK is not set | ||
96 | CONFIG_PROC_PAGE_MONITOR=y | ||
97 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
98 | CONFIG_SLABINFO=y | ||
99 | CONFIG_RT_MUTEXES=y | ||
100 | # CONFIG_TINY_SHMEM is not set | ||
101 | CONFIG_BASE_SMALL=0 | ||
102 | CONFIG_MODULES=y | ||
103 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
104 | CONFIG_MODULE_UNLOAD=y | ||
105 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
106 | # CONFIG_MODVERSIONS is not set | ||
107 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
108 | CONFIG_KMOD=y | ||
109 | CONFIG_BLOCK=y | ||
110 | # CONFIG_LBD is not set | ||
111 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
112 | # CONFIG_LSF is not set | ||
113 | # CONFIG_BLK_DEV_BSG is not set | ||
114 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
115 | |||
116 | # | ||
117 | # IO Schedulers | ||
118 | # | ||
119 | CONFIG_IOSCHED_NOOP=y | ||
120 | CONFIG_IOSCHED_AS=y | ||
121 | # CONFIG_IOSCHED_DEADLINE is not set | ||
122 | # CONFIG_IOSCHED_CFQ is not set | ||
123 | CONFIG_DEFAULT_AS=y | ||
124 | # CONFIG_DEFAULT_DEADLINE is not set | ||
125 | # CONFIG_DEFAULT_CFQ is not set | ||
126 | # CONFIG_DEFAULT_NOOP is not set | ||
127 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
128 | CONFIG_CLASSIC_RCU=y | ||
129 | |||
130 | # | ||
131 | # System Type | ||
132 | # | ||
133 | # CONFIG_ARCH_AAEC2000 is not set | ||
134 | # CONFIG_ARCH_INTEGRATOR is not set | ||
135 | # CONFIG_ARCH_REALVIEW is not set | ||
136 | # CONFIG_ARCH_VERSATILE is not set | ||
137 | # CONFIG_ARCH_AT91 is not set | ||
138 | # CONFIG_ARCH_CLPS7500 is not set | ||
139 | # CONFIG_ARCH_CLPS711X is not set | ||
140 | # CONFIG_ARCH_EBSA110 is not set | ||
141 | # CONFIG_ARCH_EP93XX is not set | ||
142 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
143 | # CONFIG_ARCH_NETX is not set | ||
144 | # CONFIG_ARCH_H720X is not set | ||
145 | # CONFIG_ARCH_IMX is not set | ||
146 | # CONFIG_ARCH_IOP13XX is not set | ||
147 | # CONFIG_ARCH_IOP32X is not set | ||
148 | # CONFIG_ARCH_IOP33X is not set | ||
149 | # CONFIG_ARCH_IXP23XX is not set | ||
150 | # CONFIG_ARCH_IXP2000 is not set | ||
151 | # CONFIG_ARCH_IXP4XX is not set | ||
152 | # CONFIG_ARCH_L7200 is not set | ||
153 | # CONFIG_ARCH_KIRKWOOD is not set | ||
154 | CONFIG_ARCH_KS8695=y | ||
155 | # CONFIG_ARCH_NS9XXX is not set | ||
156 | # CONFIG_ARCH_LOKI is not set | ||
157 | # CONFIG_ARCH_MV78XX0 is not set | ||
158 | # CONFIG_ARCH_MXC is not set | ||
159 | # CONFIG_ARCH_ORION5X is not set | ||
160 | # CONFIG_ARCH_PNX4008 is not set | ||
161 | # CONFIG_ARCH_PXA is not set | ||
162 | # CONFIG_ARCH_RPC is not set | ||
163 | # CONFIG_ARCH_SA1100 is not set | ||
164 | # CONFIG_ARCH_S3C2410 is not set | ||
165 | # CONFIG_ARCH_SHARK is not set | ||
166 | # CONFIG_ARCH_LH7A40X is not set | ||
167 | # CONFIG_ARCH_DAVINCI is not set | ||
168 | # CONFIG_ARCH_OMAP is not set | ||
169 | # CONFIG_ARCH_MSM7X00A is not set | ||
170 | |||
171 | # | ||
172 | # Boot options | ||
173 | # | ||
174 | |||
175 | # | ||
176 | # Power management | ||
177 | # | ||
178 | |||
179 | # | ||
180 | # Kendin/Micrel KS8695 Implementations | ||
181 | # | ||
182 | # CONFIG_MACH_KS8695 is not set | ||
183 | # CONFIG_MACH_DSM320 is not set | ||
184 | CONFIG_MACH_ACS5K=y | ||
185 | |||
186 | # | ||
187 | # Processor Type | ||
188 | # | ||
189 | CONFIG_CPU_32=y | ||
190 | CONFIG_CPU_ARM922T=y | ||
191 | CONFIG_CPU_32v4T=y | ||
192 | CONFIG_CPU_ABRT_EV4T=y | ||
193 | CONFIG_CPU_PABRT_NOIFAR=y | ||
194 | CONFIG_CPU_CACHE_V4WT=y | ||
195 | CONFIG_CPU_CACHE_VIVT=y | ||
196 | CONFIG_CPU_COPY_V4WB=y | ||
197 | CONFIG_CPU_TLB_V4WBI=y | ||
198 | CONFIG_CPU_CP15=y | ||
199 | CONFIG_CPU_CP15_MMU=y | ||
200 | |||
201 | # | ||
202 | # Processor Features | ||
203 | # | ||
204 | # CONFIG_ARM_THUMB is not set | ||
205 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
206 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
207 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
208 | # CONFIG_OUTER_CACHE is not set | ||
209 | |||
210 | # | ||
211 | # Bus support | ||
212 | # | ||
213 | # CONFIG_PCI is not set | ||
214 | # CONFIG_PCI_SYSCALL is not set | ||
215 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
216 | # CONFIG_PCCARD is not set | ||
217 | |||
218 | # | ||
219 | # Kernel Features | ||
220 | # | ||
221 | # CONFIG_TICK_ONESHOT is not set | ||
222 | # CONFIG_PREEMPT is not set | ||
223 | CONFIG_HZ=100 | ||
224 | CONFIG_AEABI=y | ||
225 | CONFIG_OABI_COMPAT=y | ||
226 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
227 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
228 | CONFIG_SELECT_MEMORY_MODEL=y | ||
229 | CONFIG_FLATMEM_MANUAL=y | ||
230 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
231 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
232 | CONFIG_FLATMEM=y | ||
233 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
234 | # CONFIG_SPARSEMEM_STATIC is not set | ||
235 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
236 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
237 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
238 | # CONFIG_RESOURCES_64BIT is not set | ||
239 | CONFIG_ZONE_DMA_FLAG=1 | ||
240 | CONFIG_BOUNCE=y | ||
241 | CONFIG_VIRT_TO_BUS=y | ||
242 | # CONFIG_LEDS is not set | ||
243 | CONFIG_ALIGNMENT_TRAP=y | ||
244 | |||
245 | # | ||
246 | # Boot options | ||
247 | # | ||
248 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
249 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
250 | CONFIG_CMDLINE="console=ttyAM0,115200 init=/bin/sh" | ||
251 | # CONFIG_XIP_KERNEL is not set | ||
252 | # CONFIG_KEXEC is not set | ||
253 | |||
254 | # | ||
255 | # Floating point emulation | ||
256 | # | ||
257 | |||
258 | # | ||
259 | # At least one emulation must be selected | ||
260 | # | ||
261 | CONFIG_FPE_NWFPE=y | ||
262 | # CONFIG_FPE_NWFPE_XP is not set | ||
263 | # CONFIG_FPE_FASTFPE is not set | ||
264 | |||
265 | # | ||
266 | # Userspace binary formats | ||
267 | # | ||
268 | CONFIG_BINFMT_ELF=y | ||
269 | # CONFIG_BINFMT_AOUT is not set | ||
270 | # CONFIG_BINFMT_MISC is not set | ||
271 | |||
272 | # | ||
273 | # Power management options | ||
274 | # | ||
275 | # CONFIG_PM is not set | ||
276 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
277 | CONFIG_NET=y | ||
278 | |||
279 | # | ||
280 | # Networking options | ||
281 | # | ||
282 | CONFIG_PACKET=y | ||
283 | # CONFIG_PACKET_MMAP is not set | ||
284 | CONFIG_UNIX=y | ||
285 | # CONFIG_NET_KEY is not set | ||
286 | CONFIG_INET=y | ||
287 | # CONFIG_IP_MULTICAST is not set | ||
288 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
289 | CONFIG_IP_FIB_HASH=y | ||
290 | # CONFIG_IP_PNP is not set | ||
291 | # CONFIG_NET_IPIP is not set | ||
292 | # CONFIG_NET_IPGRE is not set | ||
293 | # CONFIG_ARPD is not set | ||
294 | # CONFIG_SYN_COOKIES is not set | ||
295 | # CONFIG_INET_AH is not set | ||
296 | # CONFIG_INET_ESP is not set | ||
297 | # CONFIG_INET_IPCOMP is not set | ||
298 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
299 | # CONFIG_INET_TUNNEL is not set | ||
300 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
301 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
302 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
303 | # CONFIG_INET_LRO is not set | ||
304 | CONFIG_INET_DIAG=y | ||
305 | CONFIG_INET_TCP_DIAG=y | ||
306 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
307 | CONFIG_TCP_CONG_CUBIC=y | ||
308 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
309 | # CONFIG_TCP_MD5SIG is not set | ||
310 | # CONFIG_IPV6 is not set | ||
311 | # CONFIG_NETWORK_SECMARK is not set | ||
312 | # CONFIG_NETFILTER is not set | ||
313 | # CONFIG_IP_DCCP is not set | ||
314 | # CONFIG_IP_SCTP is not set | ||
315 | # CONFIG_TIPC is not set | ||
316 | # CONFIG_ATM is not set | ||
317 | # CONFIG_BRIDGE is not set | ||
318 | # CONFIG_VLAN_8021Q is not set | ||
319 | # CONFIG_DECNET is not set | ||
320 | # CONFIG_LLC2 is not set | ||
321 | # CONFIG_IPX is not set | ||
322 | # CONFIG_ATALK is not set | ||
323 | # CONFIG_X25 is not set | ||
324 | # CONFIG_LAPB is not set | ||
325 | # CONFIG_ECONET is not set | ||
326 | # CONFIG_WAN_ROUTER is not set | ||
327 | # CONFIG_NET_SCHED is not set | ||
328 | |||
329 | # | ||
330 | # Network testing | ||
331 | # | ||
332 | # CONFIG_NET_PKTGEN is not set | ||
333 | # CONFIG_HAMRADIO is not set | ||
334 | # CONFIG_CAN is not set | ||
335 | # CONFIG_IRDA is not set | ||
336 | # CONFIG_BT is not set | ||
337 | # CONFIG_AF_RXRPC is not set | ||
338 | |||
339 | # | ||
340 | # Wireless | ||
341 | # | ||
342 | # CONFIG_CFG80211 is not set | ||
343 | # CONFIG_WIRELESS_EXT is not set | ||
344 | # CONFIG_MAC80211 is not set | ||
345 | # CONFIG_IEEE80211 is not set | ||
346 | # CONFIG_RFKILL is not set | ||
347 | # CONFIG_NET_9P is not set | ||
348 | |||
349 | # | ||
350 | # Device Drivers | ||
351 | # | ||
352 | |||
353 | # | ||
354 | # Generic Driver Options | ||
355 | # | ||
356 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
357 | CONFIG_STANDALONE=y | ||
358 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
359 | CONFIG_FW_LOADER=y | ||
360 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
361 | CONFIG_EXTRA_FIRMWARE="" | ||
362 | # CONFIG_DEBUG_DRIVER is not set | ||
363 | # CONFIG_DEBUG_DEVRES is not set | ||
364 | # CONFIG_SYS_HYPERVISOR is not set | ||
365 | # CONFIG_CONNECTOR is not set | ||
366 | CONFIG_MTD=y | ||
367 | # CONFIG_MTD_DEBUG is not set | ||
368 | CONFIG_MTD_CONCAT=y | ||
369 | CONFIG_MTD_PARTITIONS=y | ||
370 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
371 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
372 | # CONFIG_MTD_AFS_PARTS is not set | ||
373 | # CONFIG_MTD_AR7_PARTS is not set | ||
374 | |||
375 | # | ||
376 | # User Modules And Translation Layers | ||
377 | # | ||
378 | CONFIG_MTD_CHAR=y | ||
379 | CONFIG_MTD_BLKDEVS=y | ||
380 | CONFIG_MTD_BLOCK=y | ||
381 | # CONFIG_FTL is not set | ||
382 | # CONFIG_NFTL is not set | ||
383 | # CONFIG_INFTL is not set | ||
384 | # CONFIG_RFD_FTL is not set | ||
385 | # CONFIG_SSFDC is not set | ||
386 | # CONFIG_MTD_OOPS is not set | ||
387 | |||
388 | # | ||
389 | # RAM/ROM/Flash chip drivers | ||
390 | # | ||
391 | CONFIG_MTD_CFI=y | ||
392 | CONFIG_MTD_JEDECPROBE=y | ||
393 | CONFIG_MTD_GEN_PROBE=y | ||
394 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
395 | CONFIG_MTD_CFI_NOSWAP=y | ||
396 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
397 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
398 | # CONFIG_MTD_CFI_GEOMETRY is not set | ||
399 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
400 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
401 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
402 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
403 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
404 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
405 | CONFIG_MTD_CFI_I1=y | ||
406 | CONFIG_MTD_CFI_I2=y | ||
407 | # CONFIG_MTD_CFI_I4 is not set | ||
408 | # CONFIG_MTD_CFI_I8 is not set | ||
409 | # CONFIG_MTD_OTP is not set | ||
410 | CONFIG_MTD_CFI_INTELEXT=y | ||
411 | CONFIG_MTD_CFI_AMDSTD=y | ||
412 | # CONFIG_MTD_CFI_STAA is not set | ||
413 | CONFIG_MTD_CFI_UTIL=y | ||
414 | # CONFIG_MTD_RAM is not set | ||
415 | # CONFIG_MTD_ROM is not set | ||
416 | # CONFIG_MTD_ABSENT is not set | ||
417 | |||
418 | # | ||
419 | # Mapping drivers for chip access | ||
420 | # | ||
421 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
422 | CONFIG_MTD_PHYSMAP=y | ||
423 | CONFIG_MTD_PHYSMAP_START=0x8000000 | ||
424 | CONFIG_MTD_PHYSMAP_LEN=0 | ||
425 | CONFIG_MTD_PHYSMAP_BANKWIDTH=4 | ||
426 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
427 | # CONFIG_MTD_IMPA7 is not set | ||
428 | # CONFIG_MTD_PLATRAM is not set | ||
429 | |||
430 | # | ||
431 | # Self-contained MTD device drivers | ||
432 | # | ||
433 | # CONFIG_MTD_SLRAM is not set | ||
434 | # CONFIG_MTD_PHRAM is not set | ||
435 | # CONFIG_MTD_MTDRAM is not set | ||
436 | # CONFIG_MTD_BLOCK2MTD is not set | ||
437 | |||
438 | # | ||
439 | # Disk-On-Chip Device Drivers | ||
440 | # | ||
441 | # CONFIG_MTD_DOC2000 is not set | ||
442 | # CONFIG_MTD_DOC2001 is not set | ||
443 | # CONFIG_MTD_DOC2001PLUS is not set | ||
444 | # CONFIG_MTD_NAND is not set | ||
445 | # CONFIG_MTD_ONENAND is not set | ||
446 | |||
447 | # | ||
448 | # UBI - Unsorted block images | ||
449 | # | ||
450 | # CONFIG_MTD_UBI is not set | ||
451 | # CONFIG_PARPORT is not set | ||
452 | # CONFIG_BLK_DEV is not set | ||
453 | # CONFIG_MISC_DEVICES is not set | ||
454 | CONFIG_HAVE_IDE=y | ||
455 | # CONFIG_IDE is not set | ||
456 | |||
457 | # | ||
458 | # SCSI device support | ||
459 | # | ||
460 | # CONFIG_RAID_ATTRS is not set | ||
461 | # CONFIG_SCSI is not set | ||
462 | # CONFIG_SCSI_DMA is not set | ||
463 | # CONFIG_SCSI_NETLINK is not set | ||
464 | # CONFIG_ATA is not set | ||
465 | # CONFIG_MD is not set | ||
466 | CONFIG_NETDEVICES=y | ||
467 | # CONFIG_DUMMY is not set | ||
468 | # CONFIG_BONDING is not set | ||
469 | # CONFIG_MACVLAN is not set | ||
470 | # CONFIG_EQUALIZER is not set | ||
471 | # CONFIG_TUN is not set | ||
472 | # CONFIG_VETH is not set | ||
473 | # CONFIG_PHYLIB is not set | ||
474 | CONFIG_NET_ETHERNET=y | ||
475 | CONFIG_MII=y | ||
476 | CONFIG_ARM_KS8695_ETHER=y | ||
477 | # CONFIG_AX88796 is not set | ||
478 | # CONFIG_SMC91X is not set | ||
479 | # CONFIG_DM9000 is not set | ||
480 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
481 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
482 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
483 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
484 | # CONFIG_B44 is not set | ||
485 | # CONFIG_NETDEV_1000 is not set | ||
486 | # CONFIG_NETDEV_10000 is not set | ||
487 | |||
488 | # | ||
489 | # Wireless LAN | ||
490 | # | ||
491 | # CONFIG_WLAN_PRE80211 is not set | ||
492 | CONFIG_WLAN_80211=y | ||
493 | # CONFIG_LIBERTAS is not set | ||
494 | # CONFIG_IWLWIFI_LEDS is not set | ||
495 | # CONFIG_HOSTAP is not set | ||
496 | # CONFIG_WAN is not set | ||
497 | # CONFIG_PPP is not set | ||
498 | # CONFIG_SLIP is not set | ||
499 | # CONFIG_NETCONSOLE is not set | ||
500 | # CONFIG_NETPOLL is not set | ||
501 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
502 | # CONFIG_ISDN is not set | ||
503 | |||
504 | # | ||
505 | # Input device support | ||
506 | # | ||
507 | CONFIG_INPUT=y | ||
508 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
509 | # CONFIG_INPUT_POLLDEV is not set | ||
510 | |||
511 | # | ||
512 | # Userland interfaces | ||
513 | # | ||
514 | CONFIG_INPUT_MOUSEDEV=y | ||
515 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
516 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
517 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
518 | # CONFIG_INPUT_JOYDEV is not set | ||
519 | # CONFIG_INPUT_EVDEV is not set | ||
520 | # CONFIG_INPUT_EVBUG is not set | ||
521 | |||
522 | # | ||
523 | # Input Device Drivers | ||
524 | # | ||
525 | # CONFIG_INPUT_KEYBOARD is not set | ||
526 | # CONFIG_INPUT_MOUSE is not set | ||
527 | # CONFIG_INPUT_JOYSTICK is not set | ||
528 | # CONFIG_INPUT_TABLET is not set | ||
529 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
530 | # CONFIG_INPUT_MISC is not set | ||
531 | |||
532 | # | ||
533 | # Hardware I/O ports | ||
534 | # | ||
535 | # CONFIG_SERIO is not set | ||
536 | # CONFIG_GAMEPORT is not set | ||
537 | |||
538 | # | ||
539 | # Character devices | ||
540 | # | ||
541 | CONFIG_VT=y | ||
542 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
543 | CONFIG_VT_CONSOLE=y | ||
544 | CONFIG_HW_CONSOLE=y | ||
545 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
546 | CONFIG_DEVKMEM=y | ||
547 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
548 | |||
549 | # | ||
550 | # Serial drivers | ||
551 | # | ||
552 | # CONFIG_SERIAL_8250 is not set | ||
553 | |||
554 | # | ||
555 | # Non-8250 serial port support | ||
556 | # | ||
557 | CONFIG_SERIAL_KS8695=y | ||
558 | CONFIG_SERIAL_KS8695_CONSOLE=y | ||
559 | CONFIG_SERIAL_CORE=y | ||
560 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
561 | CONFIG_UNIX98_PTYS=y | ||
562 | CONFIG_LEGACY_PTYS=y | ||
563 | CONFIG_LEGACY_PTY_COUNT=256 | ||
564 | # CONFIG_IPMI_HANDLER is not set | ||
565 | # CONFIG_HW_RANDOM is not set | ||
566 | # CONFIG_NVRAM is not set | ||
567 | # CONFIG_R3964 is not set | ||
568 | # CONFIG_RAW_DRIVER is not set | ||
569 | # CONFIG_TCG_TPM is not set | ||
570 | CONFIG_ACS5KCAN=y | ||
571 | CONFIG_I2C=y | ||
572 | CONFIG_I2C_BOARDINFO=y | ||
573 | CONFIG_I2C_CHARDEV=y | ||
574 | CONFIG_I2C_HELPER_AUTO=y | ||
575 | CONFIG_I2C_ALGOBIT=y | ||
576 | |||
577 | # | ||
578 | # I2C Hardware Bus support | ||
579 | # | ||
580 | |||
581 | # | ||
582 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
583 | # | ||
584 | CONFIG_I2C_GPIO=y | ||
585 | # CONFIG_I2C_OCORES is not set | ||
586 | # CONFIG_I2C_SIMTEC is not set | ||
587 | |||
588 | # | ||
589 | # External I2C/SMBus adapter drivers | ||
590 | # | ||
591 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
592 | # CONFIG_I2C_TAOS_EVM is not set | ||
593 | |||
594 | # | ||
595 | # Other I2C/SMBus bus drivers | ||
596 | # | ||
597 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
598 | # CONFIG_I2C_STUB is not set | ||
599 | |||
600 | # | ||
601 | # Miscellaneous I2C Chip support | ||
602 | # | ||
603 | # CONFIG_DS1682 is not set | ||
604 | # CONFIG_AT24 is not set | ||
605 | # CONFIG_SENSORS_EEPROM is not set | ||
606 | # CONFIG_SENSORS_PCF8574 is not set | ||
607 | # CONFIG_PCF8575 is not set | ||
608 | # CONFIG_SENSORS_PCF8591 is not set | ||
609 | # CONFIG_TPS65010 is not set | ||
610 | # CONFIG_SENSORS_MAX6875 is not set | ||
611 | # CONFIG_SENSORS_TSL2550 is not set | ||
612 | # CONFIG_I2C_DEBUG_CORE is not set | ||
613 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
614 | # CONFIG_I2C_DEBUG_BUS is not set | ||
615 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
616 | # CONFIG_SPI is not set | ||
617 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
618 | CONFIG_GPIOLIB=y | ||
619 | # CONFIG_DEBUG_GPIO is not set | ||
620 | CONFIG_GPIO_SYSFS=y | ||
621 | |||
622 | # | ||
623 | # I2C GPIO expanders: | ||
624 | # | ||
625 | # CONFIG_GPIO_MAX732X is not set | ||
626 | CONFIG_GPIO_PCA953X=y | ||
627 | # CONFIG_GPIO_PCF857X is not set | ||
628 | |||
629 | # | ||
630 | # PCI GPIO expanders: | ||
631 | # | ||
632 | |||
633 | # | ||
634 | # SPI GPIO expanders: | ||
635 | # | ||
636 | # CONFIG_W1 is not set | ||
637 | # CONFIG_POWER_SUPPLY is not set | ||
638 | # CONFIG_HWMON is not set | ||
639 | CONFIG_WATCHDOG=y | ||
640 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
641 | |||
642 | # | ||
643 | # Watchdog Device Drivers | ||
644 | # | ||
645 | # CONFIG_SOFT_WATCHDOG is not set | ||
646 | CONFIG_KS8695_WATCHDOG=y | ||
647 | |||
648 | # | ||
649 | # Sonics Silicon Backplane | ||
650 | # | ||
651 | CONFIG_SSB_POSSIBLE=y | ||
652 | # CONFIG_SSB is not set | ||
653 | |||
654 | # | ||
655 | # Multifunction device drivers | ||
656 | # | ||
657 | # CONFIG_MFD_CORE is not set | ||
658 | # CONFIG_MFD_SM501 is not set | ||
659 | # CONFIG_MFD_ASIC3 is not set | ||
660 | # CONFIG_HTC_EGPIO is not set | ||
661 | # CONFIG_HTC_PASIC3 is not set | ||
662 | # CONFIG_MFD_TMIO is not set | ||
663 | # CONFIG_MFD_T7L66XB is not set | ||
664 | # CONFIG_MFD_TC6387XB is not set | ||
665 | # CONFIG_MFD_TC6393XB is not set | ||
666 | |||
667 | # | ||
668 | # Multimedia devices | ||
669 | # | ||
670 | |||
671 | # | ||
672 | # Multimedia core support | ||
673 | # | ||
674 | # CONFIG_VIDEO_DEV is not set | ||
675 | # CONFIG_DVB_CORE is not set | ||
676 | # CONFIG_VIDEO_MEDIA is not set | ||
677 | |||
678 | # | ||
679 | # Multimedia drivers | ||
680 | # | ||
681 | # CONFIG_DAB is not set | ||
682 | |||
683 | # | ||
684 | # Graphics support | ||
685 | # | ||
686 | # CONFIG_VGASTATE is not set | ||
687 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
688 | # CONFIG_FB is not set | ||
689 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
690 | |||
691 | # | ||
692 | # Display device support | ||
693 | # | ||
694 | # CONFIG_DISPLAY_SUPPORT is not set | ||
695 | |||
696 | # | ||
697 | # Console display driver support | ||
698 | # | ||
699 | # CONFIG_VGA_CONSOLE is not set | ||
700 | CONFIG_DUMMY_CONSOLE=y | ||
701 | # CONFIG_SOUND is not set | ||
702 | # CONFIG_HID_SUPPORT is not set | ||
703 | # CONFIG_USB_SUPPORT is not set | ||
704 | # CONFIG_MMC is not set | ||
705 | # CONFIG_NEW_LEDS is not set | ||
706 | CONFIG_RTC_LIB=y | ||
707 | CONFIG_RTC_CLASS=y | ||
708 | CONFIG_RTC_HCTOSYS=y | ||
709 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
710 | # CONFIG_RTC_DEBUG is not set | ||
711 | |||
712 | # | ||
713 | # RTC interfaces | ||
714 | # | ||
715 | CONFIG_RTC_INTF_SYSFS=y | ||
716 | CONFIG_RTC_INTF_PROC=y | ||
717 | CONFIG_RTC_INTF_DEV=y | ||
718 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
719 | # CONFIG_RTC_DRV_TEST is not set | ||
720 | |||
721 | # | ||
722 | # I2C RTC drivers | ||
723 | # | ||
724 | # CONFIG_RTC_DRV_DS1307 is not set | ||
725 | # CONFIG_RTC_DRV_DS1374 is not set | ||
726 | # CONFIG_RTC_DRV_DS1672 is not set | ||
727 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
728 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
729 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
730 | # CONFIG_RTC_DRV_X1205 is not set | ||
731 | CONFIG_RTC_DRV_PCF8563=y | ||
732 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
733 | # CONFIG_RTC_DRV_M41T80 is not set | ||
734 | # CONFIG_RTC_DRV_S35390A is not set | ||
735 | # CONFIG_RTC_DRV_FM3130 is not set | ||
736 | |||
737 | # | ||
738 | # SPI RTC drivers | ||
739 | # | ||
740 | |||
741 | # | ||
742 | # Platform RTC drivers | ||
743 | # | ||
744 | # CONFIG_RTC_DRV_CMOS is not set | ||
745 | # CONFIG_RTC_DRV_DS1511 is not set | ||
746 | # CONFIG_RTC_DRV_DS1553 is not set | ||
747 | # CONFIG_RTC_DRV_DS1742 is not set | ||
748 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
749 | # CONFIG_RTC_DRV_M48T86 is not set | ||
750 | # CONFIG_RTC_DRV_M48T59 is not set | ||
751 | # CONFIG_RTC_DRV_V3020 is not set | ||
752 | |||
753 | # | ||
754 | # on-CPU RTC drivers | ||
755 | # | ||
756 | # CONFIG_DMADEVICES is not set | ||
757 | |||
758 | # | ||
759 | # Voltage and Current regulators | ||
760 | # | ||
761 | # CONFIG_REGULATOR is not set | ||
762 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | ||
763 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | ||
764 | # CONFIG_REGULATOR_BQ24022 is not set | ||
765 | # CONFIG_UIO is not set | ||
766 | |||
767 | # | ||
768 | # File systems | ||
769 | # | ||
770 | # CONFIG_EXT2_FS is not set | ||
771 | # CONFIG_EXT3_FS is not set | ||
772 | # CONFIG_EXT4DEV_FS is not set | ||
773 | # CONFIG_REISERFS_FS is not set | ||
774 | # CONFIG_JFS_FS is not set | ||
775 | # CONFIG_FS_POSIX_ACL is not set | ||
776 | # CONFIG_XFS_FS is not set | ||
777 | # CONFIG_OCFS2_FS is not set | ||
778 | CONFIG_DNOTIFY=y | ||
779 | CONFIG_INOTIFY=y | ||
780 | CONFIG_INOTIFY_USER=y | ||
781 | # CONFIG_QUOTA is not set | ||
782 | # CONFIG_AUTOFS_FS is not set | ||
783 | # CONFIG_AUTOFS4_FS is not set | ||
784 | # CONFIG_FUSE_FS is not set | ||
785 | |||
786 | # | ||
787 | # CD-ROM/DVD Filesystems | ||
788 | # | ||
789 | # CONFIG_ISO9660_FS is not set | ||
790 | # CONFIG_UDF_FS is not set | ||
791 | |||
792 | # | ||
793 | # DOS/FAT/NT Filesystems | ||
794 | # | ||
795 | # CONFIG_MSDOS_FS is not set | ||
796 | # CONFIG_VFAT_FS is not set | ||
797 | # CONFIG_NTFS_FS is not set | ||
798 | |||
799 | # | ||
800 | # Pseudo filesystems | ||
801 | # | ||
802 | CONFIG_PROC_FS=y | ||
803 | CONFIG_PROC_SYSCTL=y | ||
804 | CONFIG_SYSFS=y | ||
805 | CONFIG_TMPFS=y | ||
806 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
807 | # CONFIG_HUGETLB_PAGE is not set | ||
808 | # CONFIG_CONFIGFS_FS is not set | ||
809 | |||
810 | # | ||
811 | # Miscellaneous filesystems | ||
812 | # | ||
813 | # CONFIG_ADFS_FS is not set | ||
814 | # CONFIG_AFFS_FS is not set | ||
815 | # CONFIG_HFS_FS is not set | ||
816 | # CONFIG_HFSPLUS_FS is not set | ||
817 | # CONFIG_BEFS_FS is not set | ||
818 | # CONFIG_BFS_FS is not set | ||
819 | # CONFIG_EFS_FS is not set | ||
820 | CONFIG_JFFS2_FS=y | ||
821 | CONFIG_JFFS2_FS_DEBUG=0 | ||
822 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
823 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
824 | CONFIG_JFFS2_SUMMARY=y | ||
825 | # CONFIG_JFFS2_FS_XATTR is not set | ||
826 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
827 | CONFIG_JFFS2_ZLIB=y | ||
828 | # CONFIG_JFFS2_LZO is not set | ||
829 | CONFIG_JFFS2_RTIME=y | ||
830 | CONFIG_JFFS2_RUBIN=y | ||
831 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
832 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
833 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
834 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | ||
835 | # CONFIG_CRAMFS is not set | ||
836 | CONFIG_SQUASHFS=y | ||
837 | # CONFIG_SQUASHFS_EMBEDDED is not set | ||
838 | CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 | ||
839 | # CONFIG_VXFS_FS is not set | ||
840 | # CONFIG_MINIX_FS is not set | ||
841 | # CONFIG_OMFS_FS is not set | ||
842 | # CONFIG_HPFS_FS is not set | ||
843 | # CONFIG_QNX4FS_FS is not set | ||
844 | # CONFIG_ROMFS_FS is not set | ||
845 | # CONFIG_SYSV_FS is not set | ||
846 | # CONFIG_UFS_FS is not set | ||
847 | # CONFIG_NETWORK_FILESYSTEMS is not set | ||
848 | |||
849 | # | ||
850 | # Partition Types | ||
851 | # | ||
852 | # CONFIG_PARTITION_ADVANCED is not set | ||
853 | CONFIG_MSDOS_PARTITION=y | ||
854 | # CONFIG_NLS is not set | ||
855 | # CONFIG_DLM is not set | ||
856 | |||
857 | # | ||
858 | # Kernel hacking | ||
859 | # | ||
860 | # CONFIG_PRINTK_TIME is not set | ||
861 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
862 | CONFIG_ENABLE_MUST_CHECK=y | ||
863 | CONFIG_FRAME_WARN=1024 | ||
864 | # CONFIG_MAGIC_SYSRQ is not set | ||
865 | # CONFIG_UNUSED_SYMBOLS is not set | ||
866 | # CONFIG_DEBUG_FS is not set | ||
867 | # CONFIG_HEADERS_CHECK is not set | ||
868 | CONFIG_DEBUG_KERNEL=y | ||
869 | # CONFIG_DEBUG_SHIRQ is not set | ||
870 | CONFIG_DETECT_SOFTLOCKUP=y | ||
871 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
872 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
873 | CONFIG_SCHED_DEBUG=y | ||
874 | # CONFIG_SCHEDSTATS is not set | ||
875 | # CONFIG_TIMER_STATS is not set | ||
876 | # CONFIG_DEBUG_OBJECTS is not set | ||
877 | # CONFIG_DEBUG_SLAB is not set | ||
878 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
879 | # CONFIG_RT_MUTEX_TESTER is not set | ||
880 | # CONFIG_DEBUG_SPINLOCK is not set | ||
881 | CONFIG_DEBUG_MUTEXES=y | ||
882 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
883 | # CONFIG_PROVE_LOCKING is not set | ||
884 | # CONFIG_LOCK_STAT is not set | ||
885 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
886 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
887 | # CONFIG_DEBUG_KOBJECT is not set | ||
888 | CONFIG_DEBUG_BUGVERBOSE=y | ||
889 | # CONFIG_DEBUG_INFO is not set | ||
890 | # CONFIG_DEBUG_VM is not set | ||
891 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
892 | CONFIG_DEBUG_MEMORY_INIT=y | ||
893 | # CONFIG_DEBUG_LIST is not set | ||
894 | # CONFIG_DEBUG_SG is not set | ||
895 | CONFIG_FRAME_POINTER=y | ||
896 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
897 | # CONFIG_RCU_TORTURE_TEST is not set | ||
898 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
899 | # CONFIG_FAULT_INJECTION is not set | ||
900 | # CONFIG_LATENCYTOP is not set | ||
901 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
902 | CONFIG_HAVE_FTRACE=y | ||
903 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
904 | # CONFIG_FTRACE is not set | ||
905 | # CONFIG_SCHED_TRACER is not set | ||
906 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
907 | # CONFIG_SAMPLES is not set | ||
908 | CONFIG_HAVE_ARCH_KGDB=y | ||
909 | # CONFIG_KGDB is not set | ||
910 | CONFIG_DEBUG_USER=y | ||
911 | # CONFIG_DEBUG_ERRORS is not set | ||
912 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
913 | # CONFIG_DEBUG_LL is not set | ||
914 | |||
915 | # | ||
916 | # Security options | ||
917 | # | ||
918 | # CONFIG_KEYS is not set | ||
919 | # CONFIG_SECURITY is not set | ||
920 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
921 | # CONFIG_CRYPTO is not set | ||
922 | |||
923 | # | ||
924 | # Library routines | ||
925 | # | ||
926 | CONFIG_BITREVERSE=y | ||
927 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
928 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
929 | # CONFIG_CRC_CCITT is not set | ||
930 | # CONFIG_CRC16 is not set | ||
931 | # CONFIG_CRC_T10DIF is not set | ||
932 | # CONFIG_CRC_ITU_T is not set | ||
933 | CONFIG_CRC32=y | ||
934 | # CONFIG_CRC7 is not set | ||
935 | # CONFIG_LIBCRC32C is not set | ||
936 | CONFIG_ZLIB_INFLATE=y | ||
937 | CONFIG_ZLIB_DEFLATE=y | ||
938 | CONFIG_PLIST=y | ||
939 | CONFIG_HAS_IOMEM=y | ||
940 | CONFIG_HAS_IOPORT=y | ||
941 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/configs/afeb9260_defconfig b/arch/arm/configs/afeb9260_defconfig index ce909586a34f..f7a272cb3da0 100644 --- a/arch/arm/configs/afeb9260_defconfig +++ b/arch/arm/configs/afeb9260_defconfig | |||
@@ -719,8 +719,8 @@ CONFIG_I2C_GPIO=y | |||
719 | # Miscellaneous I2C Chip support | 719 | # Miscellaneous I2C Chip support |
720 | # | 720 | # |
721 | # CONFIG_DS1682 is not set | 721 | # CONFIG_DS1682 is not set |
722 | CONFIG_AT24=y | 722 | CONFIG_EEPROM_AT24=y |
723 | # CONFIG_SENSORS_EEPROM is not set | 723 | # CONFIG_EEPROM_LEGACY is not set |
724 | # CONFIG_SENSORS_PCF8574 is not set | 724 | # CONFIG_SENSORS_PCF8574 is not set |
725 | # CONFIG_PCF8575 is not set | 725 | # CONFIG_PCF8575 is not set |
726 | # CONFIG_SENSORS_PCA9539 is not set | 726 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -744,7 +744,7 @@ CONFIG_SPI_ATMEL=y | |||
744 | # | 744 | # |
745 | # SPI Protocol Masters | 745 | # SPI Protocol Masters |
746 | # | 746 | # |
747 | # CONFIG_SPI_AT25 is not set | 747 | # CONFIG_EEPROM_AT25 is not set |
748 | CONFIG_SPI_SPIDEV=y | 748 | CONFIG_SPI_SPIDEV=y |
749 | # CONFIG_SPI_TLE62X0 is not set | 749 | # CONFIG_SPI_TLE62X0 is not set |
750 | # CONFIG_W1 is not set | 750 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/ams_delta_defconfig b/arch/arm/configs/ams_delta_defconfig index 2c4aa11f0b0d..764732529ea3 100644 --- a/arch/arm/configs/ams_delta_defconfig +++ b/arch/arm/configs/ams_delta_defconfig | |||
@@ -767,7 +767,7 @@ CONFIG_I2C_OMAP=y | |||
767 | # | 767 | # |
768 | # CONFIG_SENSORS_DS1337 is not set | 768 | # CONFIG_SENSORS_DS1337 is not set |
769 | # CONFIG_SENSORS_DS1374 is not set | 769 | # CONFIG_SENSORS_DS1374 is not set |
770 | # CONFIG_SENSORS_EEPROM is not set | 770 | # CONFIG_EEPROM_LEGACY is not set |
771 | # CONFIG_SENSORS_PCF8574 is not set | 771 | # CONFIG_SENSORS_PCF8574 is not set |
772 | # CONFIG_SENSORS_PCA9539 is not set | 772 | # CONFIG_SENSORS_PCA9539 is not set |
773 | # CONFIG_SENSORS_PCF8591 is not set | 773 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig index b1cd331aaecf..c66dd399e426 100644 --- a/arch/arm/configs/assabet_defconfig +++ b/arch/arm/configs/assabet_defconfig | |||
@@ -89,7 +89,6 @@ CONFIG_SA1100_ASSABET=y | |||
89 | # CONFIG_SA1100_COLLIE is not set | 89 | # CONFIG_SA1100_COLLIE is not set |
90 | # CONFIG_SA1100_H3100 is not set | 90 | # CONFIG_SA1100_H3100 is not set |
91 | # CONFIG_SA1100_H3600 is not set | 91 | # CONFIG_SA1100_H3600 is not set |
92 | # CONFIG_SA1100_H3800 is not set | ||
93 | # CONFIG_SA1100_BADGE4 is not set | 92 | # CONFIG_SA1100_BADGE4 is not set |
94 | # CONFIG_SA1100_JORNADA720 is not set | 93 | # CONFIG_SA1100_JORNADA720 is not set |
95 | # CONFIG_SA1100_HACKKIT is not set | 94 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/at91cap9adk_defconfig b/arch/arm/configs/at91cap9adk_defconfig index bf97801a1068..bc6bd9f6174d 100644 --- a/arch/arm/configs/at91cap9adk_defconfig +++ b/arch/arm/configs/at91cap9adk_defconfig | |||
@@ -676,7 +676,7 @@ CONFIG_I2C_CHARDEV=y | |||
676 | # CONFIG_SENSORS_DS1337 is not set | 676 | # CONFIG_SENSORS_DS1337 is not set |
677 | # CONFIG_SENSORS_DS1374 is not set | 677 | # CONFIG_SENSORS_DS1374 is not set |
678 | # CONFIG_DS1682 is not set | 678 | # CONFIG_DS1682 is not set |
679 | # CONFIG_SENSORS_EEPROM is not set | 679 | # CONFIG_EEPROM_LEGACY is not set |
680 | # CONFIG_SENSORS_PCF8574 is not set | 680 | # CONFIG_SENSORS_PCF8574 is not set |
681 | # CONFIG_SENSORS_PCA9539 is not set | 681 | # CONFIG_SENSORS_PCA9539 is not set |
682 | # CONFIG_SENSORS_PCF8591 is not set | 682 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -703,7 +703,7 @@ CONFIG_SPI_ATMEL=y | |||
703 | # | 703 | # |
704 | # SPI Protocol Masters | 704 | # SPI Protocol Masters |
705 | # | 705 | # |
706 | # CONFIG_SPI_AT25 is not set | 706 | # CONFIG_EEPROM_AT25 is not set |
707 | # CONFIG_SPI_SPIDEV is not set | 707 | # CONFIG_SPI_SPIDEV is not set |
708 | # CONFIG_SPI_TLE62X0 is not set | 708 | # CONFIG_SPI_TLE62X0 is not set |
709 | # CONFIG_W1 is not set | 709 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig index 868fb7b9530b..238b218394e3 100644 --- a/arch/arm/configs/at91rm9200dk_defconfig +++ b/arch/arm/configs/at91rm9200dk_defconfig | |||
@@ -636,7 +636,7 @@ CONFIG_I2C_GPIO=y | |||
636 | # | 636 | # |
637 | # CONFIG_SENSORS_DS1337 is not set | 637 | # CONFIG_SENSORS_DS1337 is not set |
638 | # CONFIG_SENSORS_DS1374 is not set | 638 | # CONFIG_SENSORS_DS1374 is not set |
639 | # CONFIG_SENSORS_EEPROM is not set | 639 | # CONFIG_EEPROM_LEGACY is not set |
640 | # CONFIG_SENSORS_PCF8574 is not set | 640 | # CONFIG_SENSORS_PCF8574 is not set |
641 | # CONFIG_SENSORS_PCA9539 is not set | 641 | # CONFIG_SENSORS_PCA9539 is not set |
642 | # CONFIG_SENSORS_PCF8591 is not set | 642 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig index de43fc675616..9f7a99ace514 100644 --- a/arch/arm/configs/at91rm9200ek_defconfig +++ b/arch/arm/configs/at91rm9200ek_defconfig | |||
@@ -610,7 +610,7 @@ CONFIG_I2C_GPIO=y | |||
610 | # | 610 | # |
611 | # CONFIG_SENSORS_DS1337 is not set | 611 | # CONFIG_SENSORS_DS1337 is not set |
612 | # CONFIG_SENSORS_DS1374 is not set | 612 | # CONFIG_SENSORS_DS1374 is not set |
613 | # CONFIG_SENSORS_EEPROM is not set | 613 | # CONFIG_EEPROM_LEGACY is not set |
614 | # CONFIG_SENSORS_PCF8574 is not set | 614 | # CONFIG_SENSORS_PCF8574 is not set |
615 | # CONFIG_SENSORS_PCA9539 is not set | 615 | # CONFIG_SENSORS_PCA9539 is not set |
616 | # CONFIG_SENSORS_PCF8591 is not set | 616 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig index 38e6a0abeb4e..e0ee7060f9aa 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260ek_defconfig | |||
@@ -582,7 +582,7 @@ CONFIG_I2C_GPIO=y | |||
582 | # CONFIG_SENSORS_DS1337 is not set | 582 | # CONFIG_SENSORS_DS1337 is not set |
583 | # CONFIG_SENSORS_DS1374 is not set | 583 | # CONFIG_SENSORS_DS1374 is not set |
584 | # CONFIG_DS1682 is not set | 584 | # CONFIG_DS1682 is not set |
585 | # CONFIG_SENSORS_EEPROM is not set | 585 | # CONFIG_EEPROM_LEGACY is not set |
586 | # CONFIG_SENSORS_PCF8574 is not set | 586 | # CONFIG_SENSORS_PCF8574 is not set |
587 | # CONFIG_SENSORS_PCA9539 is not set | 587 | # CONFIG_SENSORS_PCA9539 is not set |
588 | # CONFIG_SENSORS_PCF8591 is not set | 588 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig index 93b779f94b41..01d1ef97d8be 100644 --- a/arch/arm/configs/at91sam9261ek_defconfig +++ b/arch/arm/configs/at91sam9261ek_defconfig | |||
@@ -660,7 +660,7 @@ CONFIG_I2C_GPIO=y | |||
660 | # CONFIG_SENSORS_DS1337 is not set | 660 | # CONFIG_SENSORS_DS1337 is not set |
661 | # CONFIG_SENSORS_DS1374 is not set | 661 | # CONFIG_SENSORS_DS1374 is not set |
662 | # CONFIG_DS1682 is not set | 662 | # CONFIG_DS1682 is not set |
663 | # CONFIG_SENSORS_EEPROM is not set | 663 | # CONFIG_EEPROM_LEGACY is not set |
664 | # CONFIG_SENSORS_PCF8574 is not set | 664 | # CONFIG_SENSORS_PCF8574 is not set |
665 | # CONFIG_SENSORS_PCA9539 is not set | 665 | # CONFIG_SENSORS_PCA9539 is not set |
666 | # CONFIG_SENSORS_PCF8591 is not set | 666 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -687,7 +687,7 @@ CONFIG_SPI_ATMEL=y | |||
687 | # | 687 | # |
688 | # SPI Protocol Masters | 688 | # SPI Protocol Masters |
689 | # | 689 | # |
690 | # CONFIG_SPI_AT25 is not set | 690 | # CONFIG_EEPROM_AT25 is not set |
691 | # CONFIG_SPI_SPIDEV is not set | 691 | # CONFIG_SPI_SPIDEV is not set |
692 | # CONFIG_SPI_TLE62X0 is not set | 692 | # CONFIG_SPI_TLE62X0 is not set |
693 | # CONFIG_W1 is not set | 693 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig index a7ddd94363ca..036a126725c1 100644 --- a/arch/arm/configs/at91sam9263ek_defconfig +++ b/arch/arm/configs/at91sam9263ek_defconfig | |||
@@ -670,7 +670,7 @@ CONFIG_I2C_GPIO=y | |||
670 | # CONFIG_SENSORS_DS1337 is not set | 670 | # CONFIG_SENSORS_DS1337 is not set |
671 | # CONFIG_SENSORS_DS1374 is not set | 671 | # CONFIG_SENSORS_DS1374 is not set |
672 | # CONFIG_DS1682 is not set | 672 | # CONFIG_DS1682 is not set |
673 | # CONFIG_SENSORS_EEPROM is not set | 673 | # CONFIG_EEPROM_LEGACY is not set |
674 | # CONFIG_SENSORS_PCF8574 is not set | 674 | # CONFIG_SENSORS_PCF8574 is not set |
675 | # CONFIG_SENSORS_PCA9539 is not set | 675 | # CONFIG_SENSORS_PCA9539 is not set |
676 | # CONFIG_SENSORS_PCF8591 is not set | 676 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -697,7 +697,7 @@ CONFIG_SPI_ATMEL=y | |||
697 | # | 697 | # |
698 | # SPI Protocol Masters | 698 | # SPI Protocol Masters |
699 | # | 699 | # |
700 | # CONFIG_SPI_AT25 is not set | 700 | # CONFIG_EEPROM_AT25 is not set |
701 | # CONFIG_SPI_SPIDEV is not set | 701 | # CONFIG_SPI_SPIDEV is not set |
702 | # CONFIG_SPI_TLE62X0 is not set | 702 | # CONFIG_SPI_TLE62X0 is not set |
703 | # CONFIG_W1 is not set | 703 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9g20ek_defconfig b/arch/arm/configs/at91sam9g20ek_defconfig index df0d6ee672b3..7e018a04c31b 100644 --- a/arch/arm/configs/at91sam9g20ek_defconfig +++ b/arch/arm/configs/at91sam9g20ek_defconfig | |||
@@ -665,7 +665,7 @@ CONFIG_SPI_ATMEL=y | |||
665 | # | 665 | # |
666 | # SPI Protocol Masters | 666 | # SPI Protocol Masters |
667 | # | 667 | # |
668 | # CONFIG_SPI_AT25 is not set | 668 | # CONFIG_EEPROM_AT25 is not set |
669 | CONFIG_SPI_SPIDEV=y | 669 | CONFIG_SPI_SPIDEV=y |
670 | # CONFIG_SPI_TLE62X0 is not set | 670 | # CONFIG_SPI_TLE62X0 is not set |
671 | # CONFIG_W1 is not set | 671 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/at91sam9rlek_defconfig b/arch/arm/configs/at91sam9rlek_defconfig index 811bebbdc784..237a2a6a8517 100644 --- a/arch/arm/configs/at91sam9rlek_defconfig +++ b/arch/arm/configs/at91sam9rlek_defconfig | |||
@@ -566,7 +566,7 @@ CONFIG_I2C_GPIO=y | |||
566 | # CONFIG_SENSORS_DS1337 is not set | 566 | # CONFIG_SENSORS_DS1337 is not set |
567 | # CONFIG_SENSORS_DS1374 is not set | 567 | # CONFIG_SENSORS_DS1374 is not set |
568 | # CONFIG_DS1682 is not set | 568 | # CONFIG_DS1682 is not set |
569 | # CONFIG_SENSORS_EEPROM is not set | 569 | # CONFIG_EEPROM_LEGACY is not set |
570 | # CONFIG_SENSORS_PCF8574 is not set | 570 | # CONFIG_SENSORS_PCF8574 is not set |
571 | # CONFIG_SENSORS_PCA9539 is not set | 571 | # CONFIG_SENSORS_PCA9539 is not set |
572 | # CONFIG_SENSORS_PCF8591 is not set | 572 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -593,7 +593,7 @@ CONFIG_SPI_ATMEL=y | |||
593 | # | 593 | # |
594 | # SPI Protocol Masters | 594 | # SPI Protocol Masters |
595 | # | 595 | # |
596 | # CONFIG_SPI_AT25 is not set | 596 | # CONFIG_EEPROM_AT25 is not set |
597 | # CONFIG_SPI_SPIDEV is not set | 597 | # CONFIG_SPI_SPIDEV is not set |
598 | # CONFIG_SPI_TLE62X0 is not set | 598 | # CONFIG_SPI_TLE62X0 is not set |
599 | # CONFIG_W1 is not set | 599 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/ateb9200_defconfig b/arch/arm/configs/ateb9200_defconfig index 85c80f723d8e..a19e824cf7f8 100644 --- a/arch/arm/configs/ateb9200_defconfig +++ b/arch/arm/configs/ateb9200_defconfig | |||
@@ -723,7 +723,7 @@ CONFIG_I2C_GPIO=m | |||
723 | # | 723 | # |
724 | # CONFIG_SENSORS_DS1337 is not set | 724 | # CONFIG_SENSORS_DS1337 is not set |
725 | # CONFIG_SENSORS_DS1374 is not set | 725 | # CONFIG_SENSORS_DS1374 is not set |
726 | # CONFIG_SENSORS_EEPROM is not set | 726 | # CONFIG_EEPROM_LEGACY is not set |
727 | # CONFIG_SENSORS_PCF8574 is not set | 727 | # CONFIG_SENSORS_PCF8574 is not set |
728 | # CONFIG_SENSORS_PCA9539 is not set | 728 | # CONFIG_SENSORS_PCA9539 is not set |
729 | # CONFIG_SENSORS_PCF8591 is not set | 729 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/badge4_defconfig b/arch/arm/configs/badge4_defconfig index b2bbf217c707..f264846218a2 100644 --- a/arch/arm/configs/badge4_defconfig +++ b/arch/arm/configs/badge4_defconfig | |||
@@ -91,7 +91,6 @@ CONFIG_ARCH_SA1100=y | |||
91 | # CONFIG_SA1100_COLLIE is not set | 91 | # CONFIG_SA1100_COLLIE is not set |
92 | # CONFIG_SA1100_H3100 is not set | 92 | # CONFIG_SA1100_H3100 is not set |
93 | # CONFIG_SA1100_H3600 is not set | 93 | # CONFIG_SA1100_H3600 is not set |
94 | # CONFIG_SA1100_H3800 is not set | ||
95 | CONFIG_SA1100_BADGE4=y | 94 | CONFIG_SA1100_BADGE4=y |
96 | # CONFIG_SA1100_JORNADA720 is not set | 95 | # CONFIG_SA1100_JORNADA720 is not set |
97 | # CONFIG_SA1100_HACKKIT is not set | 96 | # CONFIG_SA1100_HACKKIT is not set |
@@ -750,7 +749,7 @@ CONFIG_I2C_ELEKTOR=m | |||
750 | # Other I2C Chip support | 749 | # Other I2C Chip support |
751 | # | 750 | # |
752 | # CONFIG_SENSORS_DS1337 is not set | 751 | # CONFIG_SENSORS_DS1337 is not set |
753 | # CONFIG_SENSORS_EEPROM is not set | 752 | # CONFIG_EEPROM_LEGACY is not set |
754 | # CONFIG_SENSORS_PCF8574 is not set | 753 | # CONFIG_SENSORS_PCF8574 is not set |
755 | # CONFIG_SENSORS_PCF8591 is not set | 754 | # CONFIG_SENSORS_PCF8591 is not set |
756 | # CONFIG_SENSORS_RTC8564 is not set | 755 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/cam60_defconfig b/arch/arm/configs/cam60_defconfig index f945105d6cd6..8448108347cf 100644 --- a/arch/arm/configs/cam60_defconfig +++ b/arch/arm/configs/cam60_defconfig | |||
@@ -722,7 +722,7 @@ CONFIG_I2C_ALGOBIT=y | |||
722 | # CONFIG_SENSORS_DS1337 is not set | 722 | # CONFIG_SENSORS_DS1337 is not set |
723 | # CONFIG_SENSORS_DS1374 is not set | 723 | # CONFIG_SENSORS_DS1374 is not set |
724 | # CONFIG_DS1682 is not set | 724 | # CONFIG_DS1682 is not set |
725 | # CONFIG_SENSORS_EEPROM is not set | 725 | # CONFIG_EEPROM_LEGACY is not set |
726 | # CONFIG_SENSORS_PCF8574 is not set | 726 | # CONFIG_SENSORS_PCF8574 is not set |
727 | # CONFIG_SENSORS_PCA9539 is not set | 727 | # CONFIG_SENSORS_PCA9539 is not set |
728 | # CONFIG_SENSORS_PCF8591 is not set | 728 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -749,7 +749,7 @@ CONFIG_SPI_ATMEL=y | |||
749 | # | 749 | # |
750 | # SPI Protocol Masters | 750 | # SPI Protocol Masters |
751 | # | 751 | # |
752 | # CONFIG_SPI_AT25 is not set | 752 | # CONFIG_EEPROM_AT25 is not set |
753 | # CONFIG_SPI_SPIDEV is not set | 753 | # CONFIG_SPI_SPIDEV is not set |
754 | # CONFIG_SPI_TLE62X0 is not set | 754 | # CONFIG_SPI_TLE62X0 is not set |
755 | # CONFIG_W1 is not set | 755 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/cerfcube_defconfig b/arch/arm/configs/cerfcube_defconfig index ee130b528bd4..2b4c0668b1b4 100644 --- a/arch/arm/configs/cerfcube_defconfig +++ b/arch/arm/configs/cerfcube_defconfig | |||
@@ -93,7 +93,6 @@ CONFIG_SA1100_CERF_FLASH_16MB=y | |||
93 | # CONFIG_SA1100_COLLIE is not set | 93 | # CONFIG_SA1100_COLLIE is not set |
94 | # CONFIG_SA1100_H3100 is not set | 94 | # CONFIG_SA1100_H3100 is not set |
95 | # CONFIG_SA1100_H3600 is not set | 95 | # CONFIG_SA1100_H3600 is not set |
96 | # CONFIG_SA1100_H3800 is not set | ||
97 | # CONFIG_SA1100_BADGE4 is not set | 96 | # CONFIG_SA1100_BADGE4 is not set |
98 | # CONFIG_SA1100_JORNADA720 is not set | 97 | # CONFIG_SA1100_JORNADA720 is not set |
99 | # CONFIG_SA1100_HACKKIT is not set | 98 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/cm_x300_defconfig b/arch/arm/configs/cm_x300_defconfig index 46f1c9dc350c..227da0843ead 100644 --- a/arch/arm/configs/cm_x300_defconfig +++ b/arch/arm/configs/cm_x300_defconfig | |||
@@ -763,8 +763,8 @@ CONFIG_I2C_PXA=y | |||
763 | # Miscellaneous I2C Chip support | 763 | # Miscellaneous I2C Chip support |
764 | # | 764 | # |
765 | # CONFIG_DS1682 is not set | 765 | # CONFIG_DS1682 is not set |
766 | # CONFIG_AT24 is not set | 766 | # CONFIG_EEPROM_AT24 is not set |
767 | # CONFIG_SENSORS_EEPROM is not set | 767 | # CONFIG_EEPROM_LEGACY is not set |
768 | # CONFIG_SENSORS_PCF8574 is not set | 768 | # CONFIG_SENSORS_PCF8574 is not set |
769 | # CONFIG_PCF8575 is not set | 769 | # CONFIG_PCF8575 is not set |
770 | # CONFIG_SENSORS_PCF8591 is not set | 770 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/colibri_defconfig b/arch/arm/configs/colibri_defconfig index c3e3418ed4fe..744086fff414 100644 --- a/arch/arm/configs/colibri_defconfig +++ b/arch/arm/configs/colibri_defconfig | |||
@@ -801,7 +801,7 @@ CONFIG_I2C_CHARDEV=y | |||
801 | # CONFIG_SENSORS_DS1337 is not set | 801 | # CONFIG_SENSORS_DS1337 is not set |
802 | # CONFIG_SENSORS_DS1374 is not set | 802 | # CONFIG_SENSORS_DS1374 is not set |
803 | # CONFIG_DS1682 is not set | 803 | # CONFIG_DS1682 is not set |
804 | # CONFIG_SENSORS_EEPROM is not set | 804 | # CONFIG_EEPROM_LEGACY is not set |
805 | # CONFIG_SENSORS_PCF8574 is not set | 805 | # CONFIG_SENSORS_PCF8574 is not set |
806 | # CONFIG_SENSORS_PCA9539 is not set | 806 | # CONFIG_SENSORS_PCA9539 is not set |
807 | # CONFIG_SENSORS_PCF8591 is not set | 807 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig index f7622e658163..1aa62249031b 100644 --- a/arch/arm/configs/collie_defconfig +++ b/arch/arm/configs/collie_defconfig | |||
@@ -113,7 +113,6 @@ CONFIG_ARCH_SA1100=y | |||
113 | CONFIG_SA1100_COLLIE=y | 113 | CONFIG_SA1100_COLLIE=y |
114 | # CONFIG_SA1100_H3100 is not set | 114 | # CONFIG_SA1100_H3100 is not set |
115 | # CONFIG_SA1100_H3600 is not set | 115 | # CONFIG_SA1100_H3600 is not set |
116 | # CONFIG_SA1100_H3800 is not set | ||
117 | # CONFIG_SA1100_BADGE4 is not set | 116 | # CONFIG_SA1100_BADGE4 is not set |
118 | # CONFIG_SA1100_JORNADA720 is not set | 117 | # CONFIG_SA1100_JORNADA720 is not set |
119 | # CONFIG_SA1100_HACKKIT is not set | 118 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/corgi_defconfig b/arch/arm/configs/corgi_defconfig index 98765438048d..d6cd165e9310 100644 --- a/arch/arm/configs/corgi_defconfig +++ b/arch/arm/configs/corgi_defconfig | |||
@@ -982,8 +982,8 @@ CONFIG_I2C_PXA=y | |||
982 | # Miscellaneous I2C Chip support | 982 | # Miscellaneous I2C Chip support |
983 | # | 983 | # |
984 | # CONFIG_DS1682 is not set | 984 | # CONFIG_DS1682 is not set |
985 | # CONFIG_AT24 is not set | 985 | # CONFIG_EEPROM_AT24 is not set |
986 | # CONFIG_SENSORS_EEPROM is not set | 986 | # CONFIG_EEPROM_LEGACY is not set |
987 | # CONFIG_SENSORS_PCF8574 is not set | 987 | # CONFIG_SENSORS_PCF8574 is not set |
988 | # CONFIG_PCF8575 is not set | 988 | # CONFIG_PCF8575 is not set |
989 | # CONFIG_SENSORS_PCA9539 is not set | 989 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -1008,7 +1008,7 @@ CONFIG_SPI_PXA2XX=y | |||
1008 | # | 1008 | # |
1009 | # SPI Protocol Masters | 1009 | # SPI Protocol Masters |
1010 | # | 1010 | # |
1011 | # CONFIG_SPI_AT25 is not set | 1011 | # CONFIG_EEPROM_AT25 is not set |
1012 | # CONFIG_SPI_SPIDEV is not set | 1012 | # CONFIG_SPI_SPIDEV is not set |
1013 | # CONFIG_SPI_TLE62X0 is not set | 1013 | # CONFIG_SPI_TLE62X0 is not set |
1014 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 1014 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig index 67e65e4f0cdc..29f68c2effe6 100644 --- a/arch/arm/configs/csb337_defconfig +++ b/arch/arm/configs/csb337_defconfig | |||
@@ -679,7 +679,7 @@ CONFIG_I2C_GPIO=y | |||
679 | # CONFIG_SENSORS_DS1337 is not set | 679 | # CONFIG_SENSORS_DS1337 is not set |
680 | # CONFIG_SENSORS_DS1374 is not set | 680 | # CONFIG_SENSORS_DS1374 is not set |
681 | # CONFIG_DS1682 is not set | 681 | # CONFIG_DS1682 is not set |
682 | # CONFIG_SENSORS_EEPROM is not set | 682 | # CONFIG_EEPROM_LEGACY is not set |
683 | # CONFIG_SENSORS_PCF8574 is not set | 683 | # CONFIG_SENSORS_PCF8574 is not set |
684 | # CONFIG_SENSORS_PCA9539 is not set | 684 | # CONFIG_SENSORS_PCA9539 is not set |
685 | # CONFIG_SENSORS_PCF8591 is not set | 685 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig index 99702146c9fc..f7b60ceed6c7 100644 --- a/arch/arm/configs/csb637_defconfig +++ b/arch/arm/configs/csb637_defconfig | |||
@@ -704,7 +704,7 @@ CONFIG_I2C_CHARDEV=y | |||
704 | # Miscellaneous I2C Chip support | 704 | # Miscellaneous I2C Chip support |
705 | # | 705 | # |
706 | # CONFIG_DS1682 is not set | 706 | # CONFIG_DS1682 is not set |
707 | # CONFIG_SENSORS_EEPROM is not set | 707 | # CONFIG_EEPROM_LEGACY is not set |
708 | # CONFIG_SENSORS_PCF8574 is not set | 708 | # CONFIG_SENSORS_PCF8574 is not set |
709 | # CONFIG_PCF8575 is not set | 709 | # CONFIG_PCF8575 is not set |
710 | # CONFIG_SENSORS_PCF8591 is not set | 710 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ecbat91_defconfig b/arch/arm/configs/ecbat91_defconfig index cfeb817ad21a..ca520733bdb0 100644 --- a/arch/arm/configs/ecbat91_defconfig +++ b/arch/arm/configs/ecbat91_defconfig | |||
@@ -721,7 +721,7 @@ CONFIG_I2C_GPIO=y | |||
721 | # | 721 | # |
722 | # CONFIG_SENSORS_DS1337 is not set | 722 | # CONFIG_SENSORS_DS1337 is not set |
723 | # CONFIG_SENSORS_DS1374 is not set | 723 | # CONFIG_SENSORS_DS1374 is not set |
724 | # CONFIG_SENSORS_EEPROM is not set | 724 | # CONFIG_EEPROM_LEGACY is not set |
725 | # CONFIG_SENSORS_PCF8574 is not set | 725 | # CONFIG_SENSORS_PCF8574 is not set |
726 | # CONFIG_SENSORS_PCA9539 is not set | 726 | # CONFIG_SENSORS_PCA9539 is not set |
727 | # CONFIG_SENSORS_PCF8591 is not set | 727 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -747,7 +747,7 @@ CONFIG_SPI_AT91=y | |||
747 | # | 747 | # |
748 | # SPI Protocol Masters | 748 | # SPI Protocol Masters |
749 | # | 749 | # |
750 | # CONFIG_SPI_AT25 is not set | 750 | # CONFIG_EEPROM_AT25 is not set |
751 | # CONFIG_SPI_SPIDEV is not set | 751 | # CONFIG_SPI_SPIDEV is not set |
752 | 752 | ||
753 | # | 753 | # |
diff --git a/arch/arm/configs/em_x270_defconfig b/arch/arm/configs/em_x270_defconfig index 1f759601e3b4..e9955b786c80 100644 --- a/arch/arm/configs/em_x270_defconfig +++ b/arch/arm/configs/em_x270_defconfig | |||
@@ -811,8 +811,8 @@ CONFIG_I2C_PXA=y | |||
811 | # Miscellaneous I2C Chip support | 811 | # Miscellaneous I2C Chip support |
812 | # | 812 | # |
813 | # CONFIG_DS1682 is not set | 813 | # CONFIG_DS1682 is not set |
814 | # CONFIG_AT24 is not set | 814 | # CONFIG_EEPROM_AT24 is not set |
815 | # CONFIG_SENSORS_EEPROM is not set | 815 | # CONFIG_EEPROM_LEGACY is not set |
816 | # CONFIG_SENSORS_PCF8574 is not set | 816 | # CONFIG_SENSORS_PCF8574 is not set |
817 | # CONFIG_PCF8575 is not set | 817 | # CONFIG_PCF8575 is not set |
818 | # CONFIG_SENSORS_PCA9539 is not set | 818 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig index 21aa013793c6..3f89d5f25bce 100644 --- a/arch/arm/configs/ep93xx_defconfig +++ b/arch/arm/configs/ep93xx_defconfig | |||
@@ -681,7 +681,7 @@ CONFIG_I2C_ALGOBIT=y | |||
681 | # | 681 | # |
682 | # CONFIG_SENSORS_DS1337 is not set | 682 | # CONFIG_SENSORS_DS1337 is not set |
683 | # CONFIG_SENSORS_DS1374 is not set | 683 | # CONFIG_SENSORS_DS1374 is not set |
684 | CONFIG_SENSORS_EEPROM=y | 684 | CONFIG_EEPROM_LEGACY=y |
685 | # CONFIG_SENSORS_PCF8574 is not set | 685 | # CONFIG_SENSORS_PCF8574 is not set |
686 | # CONFIG_SENSORS_PCA9539 is not set | 686 | # CONFIG_SENSORS_PCA9539 is not set |
687 | # CONFIG_SENSORS_PCF8591 is not set | 687 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ezx_defconfig b/arch/arm/configs/ezx_defconfig index 2a84d557adc2..d5ee16e6abf3 100644 --- a/arch/arm/configs/ezx_defconfig +++ b/arch/arm/configs/ezx_defconfig | |||
@@ -877,7 +877,7 @@ CONFIG_I2C_PXA=y | |||
877 | # Miscellaneous I2C Chip support | 877 | # Miscellaneous I2C Chip support |
878 | # | 878 | # |
879 | # CONFIG_DS1682 is not set | 879 | # CONFIG_DS1682 is not set |
880 | # CONFIG_SENSORS_EEPROM is not set | 880 | # CONFIG_EEPROM_LEGACY is not set |
881 | # CONFIG_SENSORS_PCF8574 is not set | 881 | # CONFIG_SENSORS_PCF8574 is not set |
882 | # CONFIG_PCF8575 is not set | 882 | # CONFIG_PCF8575 is not set |
883 | # CONFIG_SENSORS_PCF8591 is not set | 883 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -900,7 +900,7 @@ CONFIG_SPI_PXA2XX=m | |||
900 | # | 900 | # |
901 | # SPI Protocol Masters | 901 | # SPI Protocol Masters |
902 | # | 902 | # |
903 | # CONFIG_SPI_AT25 is not set | 903 | # CONFIG_EEPROM_AT25 is not set |
904 | # CONFIG_SPI_SPIDEV is not set | 904 | # CONFIG_SPI_SPIDEV is not set |
905 | # CONFIG_SPI_TLE62X0 is not set | 905 | # CONFIG_SPI_TLE62X0 is not set |
906 | CONFIG_HAVE_GPIO_LIB=y | 906 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig index 299dc22294a0..6ace512fa101 100644 --- a/arch/arm/configs/footbridge_defconfig +++ b/arch/arm/configs/footbridge_defconfig | |||
@@ -801,7 +801,7 @@ CONFIG_I2C=m | |||
801 | # | 801 | # |
802 | # Other I2C Chip support | 802 | # Other I2C Chip support |
803 | # | 803 | # |
804 | # CONFIG_SENSORS_EEPROM is not set | 804 | # CONFIG_EEPROM_LEGACY is not set |
805 | # CONFIG_SENSORS_PCF8574 is not set | 805 | # CONFIG_SENSORS_PCF8574 is not set |
806 | # CONFIG_SENSORS_PCF8591 is not set | 806 | # CONFIG_SENSORS_PCF8591 is not set |
807 | # CONFIG_SENSORS_RTC8564 is not set | 807 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig index 8f986e9f1c62..f2e16fd0a6bb 100644 --- a/arch/arm/configs/h3600_defconfig +++ b/arch/arm/configs/h3600_defconfig | |||
@@ -90,7 +90,6 @@ CONFIG_ARCH_SA1100=y | |||
90 | # CONFIG_SA1100_COLLIE is not set | 90 | # CONFIG_SA1100_COLLIE is not set |
91 | # CONFIG_SA1100_H3100 is not set | 91 | # CONFIG_SA1100_H3100 is not set |
92 | CONFIG_SA1100_H3600=y | 92 | CONFIG_SA1100_H3600=y |
93 | # CONFIG_SA1100_H3800 is not set | ||
94 | CONFIG_SA1100_H3XXX=y | 93 | CONFIG_SA1100_H3XXX=y |
95 | # CONFIG_SA1100_BADGE4 is not set | 94 | # CONFIG_SA1100_BADGE4 is not set |
96 | # CONFIG_SA1100_JORNADA720 is not set | 95 | # CONFIG_SA1100_JORNADA720 is not set |
diff --git a/arch/arm/configs/hackkit_defconfig b/arch/arm/configs/hackkit_defconfig index 1c8fb89a6730..db0708d5cbea 100644 --- a/arch/arm/configs/hackkit_defconfig +++ b/arch/arm/configs/hackkit_defconfig | |||
@@ -91,7 +91,6 @@ CONFIG_ARCH_SA1100=y | |||
91 | # CONFIG_SA1100_COLLIE is not set | 91 | # CONFIG_SA1100_COLLIE is not set |
92 | # CONFIG_SA1100_H3100 is not set | 92 | # CONFIG_SA1100_H3100 is not set |
93 | # CONFIG_SA1100_H3600 is not set | 93 | # CONFIG_SA1100_H3600 is not set |
94 | # CONFIG_SA1100_H3800 is not set | ||
95 | # CONFIG_SA1100_BADGE4 is not set | 94 | # CONFIG_SA1100_BADGE4 is not set |
96 | # CONFIG_SA1100_JORNADA720 is not set | 95 | # CONFIG_SA1100_JORNADA720 is not set |
97 | CONFIG_SA1100_HACKKIT=y | 96 | CONFIG_SA1100_HACKKIT=y |
diff --git a/arch/arm/configs/iop13xx_defconfig b/arch/arm/configs/iop13xx_defconfig index 482e57061053..89c17761726b 100644 --- a/arch/arm/configs/iop13xx_defconfig +++ b/arch/arm/configs/iop13xx_defconfig | |||
@@ -744,7 +744,7 @@ CONFIG_I2C_IOP3XX=y | |||
744 | # CONFIG_SENSORS_DS1337 is not set | 744 | # CONFIG_SENSORS_DS1337 is not set |
745 | # CONFIG_SENSORS_DS1374 is not set | 745 | # CONFIG_SENSORS_DS1374 is not set |
746 | # CONFIG_DS1682 is not set | 746 | # CONFIG_DS1682 is not set |
747 | # CONFIG_SENSORS_EEPROM is not set | 747 | # CONFIG_EEPROM_LEGACY is not set |
748 | # CONFIG_SENSORS_PCF8574 is not set | 748 | # CONFIG_SENSORS_PCF8574 is not set |
749 | # CONFIG_SENSORS_PCA9539 is not set | 749 | # CONFIG_SENSORS_PCA9539 is not set |
750 | # CONFIG_SENSORS_PCF8591 is not set | 750 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/iop32x_defconfig b/arch/arm/configs/iop32x_defconfig index 8612f58e1056..d70177b38f5f 100644 --- a/arch/arm/configs/iop32x_defconfig +++ b/arch/arm/configs/iop32x_defconfig | |||
@@ -847,7 +847,7 @@ CONFIG_I2C_IOP3XX=y | |||
847 | # CONFIG_SENSORS_DS1337 is not set | 847 | # CONFIG_SENSORS_DS1337 is not set |
848 | # CONFIG_SENSORS_DS1374 is not set | 848 | # CONFIG_SENSORS_DS1374 is not set |
849 | # CONFIG_DS1682 is not set | 849 | # CONFIG_DS1682 is not set |
850 | # CONFIG_SENSORS_EEPROM is not set | 850 | # CONFIG_EEPROM_LEGACY is not set |
851 | # CONFIG_SENSORS_PCF8574 is not set | 851 | # CONFIG_SENSORS_PCF8574 is not set |
852 | # CONFIG_SENSORS_PCA9539 is not set | 852 | # CONFIG_SENSORS_PCA9539 is not set |
853 | # CONFIG_SENSORS_PCF8591 is not set | 853 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/iop33x_defconfig b/arch/arm/configs/iop33x_defconfig index 8b0098d19d08..eec488298267 100644 --- a/arch/arm/configs/iop33x_defconfig +++ b/arch/arm/configs/iop33x_defconfig | |||
@@ -746,7 +746,7 @@ CONFIG_I2C_IOP3XX=y | |||
746 | # CONFIG_SENSORS_DS1337 is not set | 746 | # CONFIG_SENSORS_DS1337 is not set |
747 | # CONFIG_SENSORS_DS1374 is not set | 747 | # CONFIG_SENSORS_DS1374 is not set |
748 | # CONFIG_DS1682 is not set | 748 | # CONFIG_DS1682 is not set |
749 | # CONFIG_SENSORS_EEPROM is not set | 749 | # CONFIG_EEPROM_LEGACY is not set |
750 | # CONFIG_SENSORS_PCF8574 is not set | 750 | # CONFIG_SENSORS_PCF8574 is not set |
751 | # CONFIG_SENSORS_PCA9539 is not set | 751 | # CONFIG_SENSORS_PCA9539 is not set |
752 | # CONFIG_SENSORS_PCF8591 is not set | 752 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp2000_defconfig b/arch/arm/configs/ixp2000_defconfig index 84680db6c615..57526c15e854 100644 --- a/arch/arm/configs/ixp2000_defconfig +++ b/arch/arm/configs/ixp2000_defconfig | |||
@@ -768,7 +768,7 @@ CONFIG_I2C_IXP2000=y | |||
768 | # | 768 | # |
769 | # CONFIG_SENSORS_DS1337 is not set | 769 | # CONFIG_SENSORS_DS1337 is not set |
770 | # CONFIG_SENSORS_DS1374 is not set | 770 | # CONFIG_SENSORS_DS1374 is not set |
771 | CONFIG_SENSORS_EEPROM=y | 771 | CONFIG_EEPROM_LEGACY=y |
772 | # CONFIG_SENSORS_PCF8574 is not set | 772 | # CONFIG_SENSORS_PCF8574 is not set |
773 | # CONFIG_SENSORS_PCA9539 is not set | 773 | # CONFIG_SENSORS_PCA9539 is not set |
774 | # CONFIG_SENSORS_PCF8591 is not set | 774 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp23xx_defconfig b/arch/arm/configs/ixp23xx_defconfig index 4a2f7b2372db..ef97561ed75b 100644 --- a/arch/arm/configs/ixp23xx_defconfig +++ b/arch/arm/configs/ixp23xx_defconfig | |||
@@ -900,7 +900,7 @@ CONFIG_I2C_ALGOBIT=y | |||
900 | # | 900 | # |
901 | # CONFIG_SENSORS_DS1337 is not set | 901 | # CONFIG_SENSORS_DS1337 is not set |
902 | # CONFIG_SENSORS_DS1374 is not set | 902 | # CONFIG_SENSORS_DS1374 is not set |
903 | CONFIG_SENSORS_EEPROM=y | 903 | CONFIG_EEPROM_LEGACY=y |
904 | # CONFIG_SENSORS_PCF8574 is not set | 904 | # CONFIG_SENSORS_PCF8574 is not set |
905 | # CONFIG_SENSORS_PCA9539 is not set | 905 | # CONFIG_SENSORS_PCA9539 is not set |
906 | # CONFIG_SENSORS_PCF8591 is not set | 906 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig index fc14932e3abd..95cd8dfb5f1e 100644 --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig | |||
@@ -1083,7 +1083,7 @@ CONFIG_I2C_IXP4XX=y | |||
1083 | # CONFIG_SENSORS_DS1337 is not set | 1083 | # CONFIG_SENSORS_DS1337 is not set |
1084 | # CONFIG_SENSORS_DS1374 is not set | 1084 | # CONFIG_SENSORS_DS1374 is not set |
1085 | # CONFIG_DS1682 is not set | 1085 | # CONFIG_DS1682 is not set |
1086 | CONFIG_SENSORS_EEPROM=y | 1086 | CONFIG_EEPROM_LEGACY=y |
1087 | # CONFIG_SENSORS_PCF8574 is not set | 1087 | # CONFIG_SENSORS_PCF8574 is not set |
1088 | # CONFIG_SENSORS_PCA9539 is not set | 1088 | # CONFIG_SENSORS_PCA9539 is not set |
1089 | # CONFIG_SENSORS_PCF8591 is not set | 1089 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig index 81fadafae02d..f3074e49f2fa 100644 --- a/arch/arm/configs/jornada720_defconfig +++ b/arch/arm/configs/jornada720_defconfig | |||
@@ -178,7 +178,6 @@ CONFIG_DMABOUNCE=y | |||
178 | # CONFIG_SA1100_COLLIE is not set | 178 | # CONFIG_SA1100_COLLIE is not set |
179 | # CONFIG_SA1100_H3100 is not set | 179 | # CONFIG_SA1100_H3100 is not set |
180 | # CONFIG_SA1100_H3600 is not set | 180 | # CONFIG_SA1100_H3600 is not set |
181 | # CONFIG_SA1100_H3800 is not set | ||
182 | # CONFIG_SA1100_BADGE4 is not set | 181 | # CONFIG_SA1100_BADGE4 is not set |
183 | CONFIG_SA1100_JORNADA720=y | 182 | CONFIG_SA1100_JORNADA720=y |
184 | CONFIG_SA1100_JORNADA720_SSP=y | 183 | CONFIG_SA1100_JORNADA720_SSP=y |
diff --git a/arch/arm/configs/kafa_defconfig b/arch/arm/configs/kafa_defconfig index 6dd95a2c8d5d..9f92fc527f59 100644 --- a/arch/arm/configs/kafa_defconfig +++ b/arch/arm/configs/kafa_defconfig | |||
@@ -603,7 +603,7 @@ CONFIG_I2C_GPIO=y | |||
603 | # | 603 | # |
604 | # CONFIG_SENSORS_DS1337 is not set | 604 | # CONFIG_SENSORS_DS1337 is not set |
605 | # CONFIG_SENSORS_DS1374 is not set | 605 | # CONFIG_SENSORS_DS1374 is not set |
606 | # CONFIG_SENSORS_EEPROM is not set | 606 | # CONFIG_EEPROM_LEGACY is not set |
607 | # CONFIG_SENSORS_PCF8574 is not set | 607 | # CONFIG_SENSORS_PCF8574 is not set |
608 | # CONFIG_SENSORS_PCA9539 is not set | 608 | # CONFIG_SENSORS_PCA9539 is not set |
609 | # CONFIG_SENSORS_PCF8591 is not set | 609 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig index ab8b1e0d0dac..4bc38078d580 100644 --- a/arch/arm/configs/kirkwood_defconfig +++ b/arch/arm/configs/kirkwood_defconfig | |||
@@ -905,8 +905,8 @@ CONFIG_I2C_MV64XXX=y | |||
905 | # Miscellaneous I2C Chip support | 905 | # Miscellaneous I2C Chip support |
906 | # | 906 | # |
907 | # CONFIG_DS1682 is not set | 907 | # CONFIG_DS1682 is not set |
908 | # CONFIG_AT24 is not set | 908 | # CONFIG_EEPROM_AT24 is not set |
909 | # CONFIG_SENSORS_EEPROM is not set | 909 | # CONFIG_EEPROM_LEGACY is not set |
910 | # CONFIG_SENSORS_PCF8574 is not set | 910 | # CONFIG_SENSORS_PCF8574 is not set |
911 | # CONFIG_PCF8575 is not set | 911 | # CONFIG_PCF8575 is not set |
912 | # CONFIG_SENSORS_PCA9539 is not set | 912 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -930,7 +930,7 @@ CONFIG_SPI_ORION=y | |||
930 | # | 930 | # |
931 | # SPI Protocol Masters | 931 | # SPI Protocol Masters |
932 | # | 932 | # |
933 | # CONFIG_SPI_AT25 is not set | 933 | # CONFIG_EEPROM_AT25 is not set |
934 | # CONFIG_SPI_SPIDEV is not set | 934 | # CONFIG_SPI_SPIDEV is not set |
935 | # CONFIG_SPI_TLE62X0 is not set | 935 | # CONFIG_SPI_TLE62X0 is not set |
936 | # CONFIG_W1 is not set | 936 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/lart_defconfig b/arch/arm/configs/lart_defconfig index a1cc34f25602..56ae56899d2e 100644 --- a/arch/arm/configs/lart_defconfig +++ b/arch/arm/configs/lart_defconfig | |||
@@ -87,7 +87,6 @@ CONFIG_ARCH_SA1100=y | |||
87 | # CONFIG_SA1100_COLLIE is not set | 87 | # CONFIG_SA1100_COLLIE is not set |
88 | # CONFIG_SA1100_H3100 is not set | 88 | # CONFIG_SA1100_H3100 is not set |
89 | # CONFIG_SA1100_H3600 is not set | 89 | # CONFIG_SA1100_H3600 is not set |
90 | # CONFIG_SA1100_H3800 is not set | ||
91 | # CONFIG_SA1100_BADGE4 is not set | 90 | # CONFIG_SA1100_BADGE4 is not set |
92 | # CONFIG_SA1100_JORNADA720 is not set | 91 | # CONFIG_SA1100_JORNADA720 is not set |
93 | # CONFIG_SA1100_HACKKIT is not set | 92 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/loki_defconfig b/arch/arm/configs/loki_defconfig index 17da7c3b3d53..b720fcffbcd4 100644 --- a/arch/arm/configs/loki_defconfig +++ b/arch/arm/configs/loki_defconfig | |||
@@ -654,7 +654,7 @@ CONFIG_I2C_MV64XXX=y | |||
654 | # Miscellaneous I2C Chip support | 654 | # Miscellaneous I2C Chip support |
655 | # | 655 | # |
656 | # CONFIG_DS1682 is not set | 656 | # CONFIG_DS1682 is not set |
657 | # CONFIG_SENSORS_EEPROM is not set | 657 | # CONFIG_EEPROM_LEGACY is not set |
658 | # CONFIG_SENSORS_PCF8574 is not set | 658 | # CONFIG_SENSORS_PCF8574 is not set |
659 | # CONFIG_PCF8575 is not set | 659 | # CONFIG_PCF8575 is not set |
660 | # CONFIG_SENSORS_PCF8591 is not set | 660 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -675,7 +675,7 @@ CONFIG_SPI_MASTER=y | |||
675 | # | 675 | # |
676 | # SPI Protocol Masters | 676 | # SPI Protocol Masters |
677 | # | 677 | # |
678 | # CONFIG_SPI_AT25 is not set | 678 | # CONFIG_EEPROM_AT25 is not set |
679 | # CONFIG_SPI_SPIDEV is not set | 679 | # CONFIG_SPI_SPIDEV is not set |
680 | # CONFIG_SPI_TLE62X0 is not set | 680 | # CONFIG_SPI_TLE62X0 is not set |
681 | # CONFIG_W1 is not set | 681 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig index 4154d61af664..91bc3974f191 100644 --- a/arch/arm/configs/magician_defconfig +++ b/arch/arm/configs/magician_defconfig | |||
@@ -753,7 +753,7 @@ CONFIG_I2C_PXA=y | |||
753 | # | 753 | # |
754 | # CONFIG_DS1682 is not set | 754 | # CONFIG_DS1682 is not set |
755 | # CONFIG_AT24 is not set | 755 | # CONFIG_AT24 is not set |
756 | # CONFIG_SENSORS_EEPROM is not set | 756 | # CONFIG_EEPROM_LEGACY is not set |
757 | # CONFIG_SENSORS_PCF8574 is not set | 757 | # CONFIG_SENSORS_PCF8574 is not set |
758 | # CONFIG_PCF8575 is not set | 758 | # CONFIG_PCF8575 is not set |
759 | # CONFIG_SENSORS_PCA9539 is not set | 759 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/msm_defconfig b/arch/arm/configs/msm_defconfig index 3b4ecf2a90dd..cc3b06ee24f9 100644 --- a/arch/arm/configs/msm_defconfig +++ b/arch/arm/configs/msm_defconfig | |||
@@ -580,7 +580,7 @@ CONFIG_I2C_MSM=y | |||
580 | # CONFIG_SENSORS_DS1337 is not set | 580 | # CONFIG_SENSORS_DS1337 is not set |
581 | # CONFIG_SENSORS_DS1374 is not set | 581 | # CONFIG_SENSORS_DS1374 is not set |
582 | # CONFIG_DS1682 is not set | 582 | # CONFIG_DS1682 is not set |
583 | # CONFIG_SENSORS_EEPROM is not set | 583 | # CONFIG_EEPROM_LEGACY is not set |
584 | # CONFIG_SENSORS_PCF8574 is not set | 584 | # CONFIG_SENSORS_PCF8574 is not set |
585 | # CONFIG_SENSORS_PCA9539 is not set | 585 | # CONFIG_SENSORS_PCA9539 is not set |
586 | CONFIG_SENSORS_PCA9633=y | 586 | CONFIG_SENSORS_PCA9633=y |
diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig index d38ebf8721a4..83c817f31bcc 100644 --- a/arch/arm/configs/mv78xx0_defconfig +++ b/arch/arm/configs/mv78xx0_defconfig | |||
@@ -832,7 +832,7 @@ CONFIG_I2C_MV64XXX=y | |||
832 | # Miscellaneous I2C Chip support | 832 | # Miscellaneous I2C Chip support |
833 | # | 833 | # |
834 | # CONFIG_DS1682 is not set | 834 | # CONFIG_DS1682 is not set |
835 | # CONFIG_SENSORS_EEPROM is not set | 835 | # CONFIG_EEPROM_LEGACY is not set |
836 | # CONFIG_SENSORS_PCF8574 is not set | 836 | # CONFIG_SENSORS_PCF8574 is not set |
837 | # CONFIG_PCF8575 is not set | 837 | # CONFIG_PCF8575 is not set |
838 | # CONFIG_SENSORS_PCF8591 is not set | 838 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/n770_defconfig b/arch/arm/configs/n770_defconfig index 568ef1770d5f..672f6db06a52 100644 --- a/arch/arm/configs/n770_defconfig +++ b/arch/arm/configs/n770_defconfig | |||
@@ -767,7 +767,7 @@ CONFIG_I2C_OMAP=y | |||
767 | # CONFIG_SENSORS_DS1337 is not set | 767 | # CONFIG_SENSORS_DS1337 is not set |
768 | # CONFIG_SENSORS_DS1374 is not set | 768 | # CONFIG_SENSORS_DS1374 is not set |
769 | # CONFIG_DS1682 is not set | 769 | # CONFIG_DS1682 is not set |
770 | # CONFIG_SENSORS_EEPROM is not set | 770 | # CONFIG_EEPROM_LEGACY is not set |
771 | # CONFIG_SENSORS_PCF8574 is not set | 771 | # CONFIG_SENSORS_PCF8574 is not set |
772 | # CONFIG_SENSORS_PCA9539 is not set | 772 | # CONFIG_SENSORS_PCA9539 is not set |
773 | # CONFIG_SENSORS_PCF8591 is not set | 773 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -798,7 +798,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
798 | # | 798 | # |
799 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
800 | # | 800 | # |
801 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
802 | # CONFIG_SPI_TSC2101 is not set | 802 | # CONFIG_SPI_TSC2101 is not set |
803 | # CONFIG_SPI_TSC2102 is not set | 803 | # CONFIG_SPI_TSC2102 is not set |
804 | # CONFIG_SPI_TSC210X is not set | 804 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/neocore926_defconfig b/arch/arm/configs/neocore926_defconfig index 325f1e105f69..e0e4e98b5aa2 100644 --- a/arch/arm/configs/neocore926_defconfig +++ b/arch/arm/configs/neocore926_defconfig | |||
@@ -774,8 +774,8 @@ CONFIG_I2C_CHARDEV=y | |||
774 | # Miscellaneous I2C Chip support | 774 | # Miscellaneous I2C Chip support |
775 | # | 775 | # |
776 | # CONFIG_DS1682 is not set | 776 | # CONFIG_DS1682 is not set |
777 | # CONFIG_AT24 is not set | 777 | # CONFIG_EEPROM_AT24 is not set |
778 | # CONFIG_SENSORS_EEPROM is not set | 778 | # CONFIG_EEPROM_LEGACY is not set |
779 | # CONFIG_SENSORS_PCF8574 is not set | 779 | # CONFIG_SENSORS_PCF8574 is not set |
780 | # CONFIG_PCF8575 is not set | 780 | # CONFIG_PCF8575 is not set |
781 | # CONFIG_SENSORS_PCA9539 is not set | 781 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -798,7 +798,7 @@ CONFIG_SPI_ATMEL=y | |||
798 | # | 798 | # |
799 | # SPI Protocol Masters | 799 | # SPI Protocol Masters |
800 | # | 800 | # |
801 | # CONFIG_SPI_AT25 is not set | 801 | # CONFIG_EEPROM_AT25 is not set |
802 | # CONFIG_SPI_SPIDEV is not set | 802 | # CONFIG_SPI_SPIDEV is not set |
803 | # CONFIG_SPI_TLE62X0 is not set | 803 | # CONFIG_SPI_TLE62X0 is not set |
804 | # CONFIG_W1 is not set | 804 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig index 92ccdc6492f7..36cd62edd05c 100644 --- a/arch/arm/configs/neponset_defconfig +++ b/arch/arm/configs/neponset_defconfig | |||
@@ -91,7 +91,6 @@ CONFIG_ASSABET_NEPONSET=y | |||
91 | # CONFIG_SA1100_COLLIE is not set | 91 | # CONFIG_SA1100_COLLIE is not set |
92 | # CONFIG_SA1100_H3100 is not set | 92 | # CONFIG_SA1100_H3100 is not set |
93 | # CONFIG_SA1100_H3600 is not set | 93 | # CONFIG_SA1100_H3600 is not set |
94 | # CONFIG_SA1100_H3800 is not set | ||
95 | # CONFIG_SA1100_BADGE4 is not set | 94 | # CONFIG_SA1100_BADGE4 is not set |
96 | # CONFIG_SA1100_JORNADA720 is not set | 95 | # CONFIG_SA1100_JORNADA720 is not set |
97 | # CONFIG_SA1100_HACKKIT is not set | 96 | # CONFIG_SA1100_HACKKIT is not set |
@@ -737,7 +736,7 @@ CONFIG_I2C_ALGOBIT=y | |||
737 | # | 736 | # |
738 | # Other I2C Chip support | 737 | # Other I2C Chip support |
739 | # | 738 | # |
740 | # CONFIG_SENSORS_EEPROM is not set | 739 | # CONFIG_EEPROM_LEGACY is not set |
741 | # CONFIG_SENSORS_PCF8574 is not set | 740 | # CONFIG_SENSORS_PCF8574 is not set |
742 | # CONFIG_SENSORS_PCF8591 is not set | 741 | # CONFIG_SENSORS_PCF8591 is not set |
743 | # CONFIG_SENSORS_RTC8564 is not set | 742 | # CONFIG_SENSORS_RTC8564 is not set |
diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig index e042d27eae16..4c6fb7e959df 100644 --- a/arch/arm/configs/omap3_beagle_defconfig +++ b/arch/arm/configs/omap3_beagle_defconfig | |||
@@ -687,8 +687,8 @@ CONFIG_I2C_OMAP=y | |||
687 | # Miscellaneous I2C Chip support | 687 | # Miscellaneous I2C Chip support |
688 | # | 688 | # |
689 | # CONFIG_DS1682 is not set | 689 | # CONFIG_DS1682 is not set |
690 | # CONFIG_AT24 is not set | 690 | # CONFIG_EEPROM_AT24 is not set |
691 | # CONFIG_SENSORS_EEPROM is not set | 691 | # CONFIG_EEPROM_LEGACY is not set |
692 | # CONFIG_SENSORS_PCF8574 is not set | 692 | # CONFIG_SENSORS_PCF8574 is not set |
693 | # CONFIG_PCF8575 is not set | 693 | # CONFIG_PCF8575 is not set |
694 | # CONFIG_SENSORS_PCA9539 is not set | 694 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/omap3_pandora_defconfig b/arch/arm/configs/omap3_pandora_defconfig index 09543f4de5bc..b54ad2e2da36 100644 --- a/arch/arm/configs/omap3_pandora_defconfig +++ b/arch/arm/configs/omap3_pandora_defconfig | |||
@@ -713,8 +713,8 @@ CONFIG_I2C_OMAP=y | |||
713 | # Miscellaneous I2C Chip support | 713 | # Miscellaneous I2C Chip support |
714 | # | 714 | # |
715 | # CONFIG_DS1682 is not set | 715 | # CONFIG_DS1682 is not set |
716 | # CONFIG_AT24 is not set | 716 | # CONFIG_EEPROM_AT24 is not set |
717 | # CONFIG_SENSORS_EEPROM is not set | 717 | # CONFIG_EEPROM_LEGACY is not set |
718 | # CONFIG_SENSORS_PCF8574 is not set | 718 | # CONFIG_SENSORS_PCF8574 is not set |
719 | # CONFIG_PCF8575 is not set | 719 | # CONFIG_PCF8575 is not set |
720 | # CONFIG_SENSORS_PCA9539 is not set | 720 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -740,7 +740,7 @@ CONFIG_SPI_OMAP24XX=y | |||
740 | # | 740 | # |
741 | # SPI Protocol Masters | 741 | # SPI Protocol Masters |
742 | # | 742 | # |
743 | # CONFIG_SPI_AT25 is not set | 743 | # CONFIG_EEPROM_AT25 is not set |
744 | # CONFIG_SPI_SPIDEV is not set | 744 | # CONFIG_SPI_SPIDEV is not set |
745 | # CONFIG_SPI_TLE62X0 is not set | 745 | # CONFIG_SPI_TLE62X0 is not set |
746 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 746 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/omap_2430sdp_defconfig b/arch/arm/configs/omap_2430sdp_defconfig index b0617c0da2a1..640e9afc4630 100644 --- a/arch/arm/configs/omap_2430sdp_defconfig +++ b/arch/arm/configs/omap_2430sdp_defconfig | |||
@@ -710,7 +710,7 @@ CONFIG_I2C_OMAP=y | |||
710 | # CONFIG_SENSORS_DS1337 is not set | 710 | # CONFIG_SENSORS_DS1337 is not set |
711 | # CONFIG_SENSORS_DS1374 is not set | 711 | # CONFIG_SENSORS_DS1374 is not set |
712 | # CONFIG_DS1682 is not set | 712 | # CONFIG_DS1682 is not set |
713 | # CONFIG_SENSORS_EEPROM is not set | 713 | # CONFIG_EEPROM_LEGACY is not set |
714 | # CONFIG_SENSORS_PCF8574 is not set | 714 | # CONFIG_SENSORS_PCF8574 is not set |
715 | # CONFIG_SENSORS_PCA9539 is not set | 715 | # CONFIG_SENSORS_PCA9539 is not set |
716 | # CONFIG_SENSORS_PCF8591 is not set | 716 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -743,7 +743,7 @@ CONFIG_SPI_MASTER=y | |||
743 | # | 743 | # |
744 | # SPI Protocol Masters | 744 | # SPI Protocol Masters |
745 | # | 745 | # |
746 | # CONFIG_SPI_AT25 is not set | 746 | # CONFIG_EEPROM_AT25 is not set |
747 | # CONFIG_SPI_TSC2101 is not set | 747 | # CONFIG_SPI_TSC2101 is not set |
748 | # CONFIG_SPI_TSC2102 is not set | 748 | # CONFIG_SPI_TSC2102 is not set |
749 | # CONFIG_SPI_TSC210X is not set | 749 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_apollon_2420_defconfig b/arch/arm/configs/omap_apollon_2420_defconfig index bb39dfc72d69..ac7adf34c54a 100644 --- a/arch/arm/configs/omap_apollon_2420_defconfig +++ b/arch/arm/configs/omap_apollon_2420_defconfig | |||
@@ -612,7 +612,7 @@ CONFIG_SPI_OMAP24XX=y | |||
612 | # | 612 | # |
613 | # SPI Protocol Masters | 613 | # SPI Protocol Masters |
614 | # | 614 | # |
615 | # CONFIG_SPI_AT25 is not set | 615 | # CONFIG_EEPROM_AT25 is not set |
616 | # CONFIG_SPI_TSC2101 is not set | 616 | # CONFIG_SPI_TSC2101 is not set |
617 | # CONFIG_SPI_TSC2102 is not set | 617 | # CONFIG_SPI_TSC2102 is not set |
618 | # CONFIG_SPI_TSC210X is not set | 618 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_generic_1510_defconfig b/arch/arm/configs/omap_generic_1510_defconfig index 4b1c252f2091..ccdc661b5856 100644 --- a/arch/arm/configs/omap_generic_1510_defconfig +++ b/arch/arm/configs/omap_generic_1510_defconfig | |||
@@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y | |||
637 | # CONFIG_SENSORS_DS1337 is not set | 637 | # CONFIG_SENSORS_DS1337 is not set |
638 | # CONFIG_SENSORS_DS1374 is not set | 638 | # CONFIG_SENSORS_DS1374 is not set |
639 | # CONFIG_DS1682 is not set | 639 | # CONFIG_DS1682 is not set |
640 | # CONFIG_SENSORS_EEPROM is not set | 640 | # CONFIG_EEPROM_LEGACY is not set |
641 | # CONFIG_SENSORS_PCF8574 is not set | 641 | # CONFIG_SENSORS_PCF8574 is not set |
642 | # CONFIG_SENSORS_PCA9539 is not set | 642 | # CONFIG_SENSORS_PCA9539 is not set |
643 | # CONFIG_SENSORS_PCF8591 is not set | 643 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_generic_1610_defconfig b/arch/arm/configs/omap_generic_1610_defconfig index fc66f019d56c..0c42c8955047 100644 --- a/arch/arm/configs/omap_generic_1610_defconfig +++ b/arch/arm/configs/omap_generic_1610_defconfig | |||
@@ -641,7 +641,7 @@ CONFIG_I2C_ALGOBIT=y | |||
641 | # CONFIG_SENSORS_DS1337 is not set | 641 | # CONFIG_SENSORS_DS1337 is not set |
642 | # CONFIG_SENSORS_DS1374 is not set | 642 | # CONFIG_SENSORS_DS1374 is not set |
643 | # CONFIG_DS1682 is not set | 643 | # CONFIG_DS1682 is not set |
644 | # CONFIG_SENSORS_EEPROM is not set | 644 | # CONFIG_EEPROM_LEGACY is not set |
645 | # CONFIG_SENSORS_PCF8574 is not set | 645 | # CONFIG_SENSORS_PCF8574 is not set |
646 | # CONFIG_SENSORS_PCA9539 is not set | 646 | # CONFIG_SENSORS_PCA9539 is not set |
647 | # CONFIG_SENSORS_PCF8591 is not set | 647 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig index c03507202f3c..74dbdc644d32 100644 --- a/arch/arm/configs/omap_h2_1610_defconfig +++ b/arch/arm/configs/omap_h2_1610_defconfig | |||
@@ -700,7 +700,7 @@ CONFIG_I2C_OMAP=y | |||
700 | # Miscellaneous I2C Chip support | 700 | # Miscellaneous I2C Chip support |
701 | # | 701 | # |
702 | # CONFIG_DS1682 is not set | 702 | # CONFIG_DS1682 is not set |
703 | # CONFIG_SENSORS_EEPROM is not set | 703 | # CONFIG_EEPROM_LEGACY is not set |
704 | # CONFIG_SENSORS_PCF8574 is not set | 704 | # CONFIG_SENSORS_PCF8574 is not set |
705 | # CONFIG_PCF8575 is not set | 705 | # CONFIG_PCF8575 is not set |
706 | # CONFIG_SENSORS_PCF8591 is not set | 706 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -731,7 +731,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
731 | # | 731 | # |
732 | # SPI Protocol Masters | 732 | # SPI Protocol Masters |
733 | # | 733 | # |
734 | # CONFIG_SPI_AT25 is not set | 734 | # CONFIG_EEPROM_AT25 is not set |
735 | CONFIG_SPI_TSC2101=y | 735 | CONFIG_SPI_TSC2101=y |
736 | # CONFIG_SPI_TSC2102 is not set | 736 | # CONFIG_SPI_TSC2102 is not set |
737 | # CONFIG_SPI_TSC210X is not set | 737 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/omap_h4_2420_defconfig b/arch/arm/configs/omap_h4_2420_defconfig index 5bc89185a64f..a4aab8e4c29b 100644 --- a/arch/arm/configs/omap_h4_2420_defconfig +++ b/arch/arm/configs/omap_h4_2420_defconfig | |||
@@ -681,7 +681,7 @@ CONFIG_I2C_OMAP=y | |||
681 | # CONFIG_SENSORS_DS1337 is not set | 681 | # CONFIG_SENSORS_DS1337 is not set |
682 | # CONFIG_SENSORS_DS1374 is not set | 682 | # CONFIG_SENSORS_DS1374 is not set |
683 | # CONFIG_DS1682 is not set | 683 | # CONFIG_DS1682 is not set |
684 | # CONFIG_SENSORS_EEPROM is not set | 684 | # CONFIG_EEPROM_LEGACY is not set |
685 | # CONFIG_SENSORS_PCF8574 is not set | 685 | # CONFIG_SENSORS_PCF8574 is not set |
686 | # CONFIG_SENSORS_PCA9539 is not set | 686 | # CONFIG_SENSORS_PCA9539 is not set |
687 | # CONFIG_SENSORS_PCF8591 is not set | 687 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_innovator_1510_defconfig b/arch/arm/configs/omap_innovator_1510_defconfig index 55b2611bd90a..0cfe363e3365 100644 --- a/arch/arm/configs/omap_innovator_1510_defconfig +++ b/arch/arm/configs/omap_innovator_1510_defconfig | |||
@@ -631,7 +631,7 @@ CONFIG_I2C_BOARDINFO=y | |||
631 | # CONFIG_SENSORS_DS1337 is not set | 631 | # CONFIG_SENSORS_DS1337 is not set |
632 | # CONFIG_SENSORS_DS1374 is not set | 632 | # CONFIG_SENSORS_DS1374 is not set |
633 | # CONFIG_DS1682 is not set | 633 | # CONFIG_DS1682 is not set |
634 | # CONFIG_SENSORS_EEPROM is not set | 634 | # CONFIG_EEPROM_LEGACY is not set |
635 | # CONFIG_SENSORS_PCF8574 is not set | 635 | # CONFIG_SENSORS_PCF8574 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
637 | # CONFIG_SENSORS_PCF8591 is not set | 637 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/omap_ldp_defconfig b/arch/arm/configs/omap_ldp_defconfig index b77d054169ee..aa9d34feddc6 100644 --- a/arch/arm/configs/omap_ldp_defconfig +++ b/arch/arm/configs/omap_ldp_defconfig | |||
@@ -629,8 +629,8 @@ CONFIG_I2C_OMAP=y | |||
629 | # Miscellaneous I2C Chip support | 629 | # Miscellaneous I2C Chip support |
630 | # | 630 | # |
631 | # CONFIG_DS1682 is not set | 631 | # CONFIG_DS1682 is not set |
632 | # CONFIG_AT24 is not set | 632 | # CONFIG_EEPROM_AT24 is not set |
633 | # CONFIG_SENSORS_EEPROM is not set | 633 | # CONFIG_EEPROM_LEGACY is not set |
634 | # CONFIG_SENSORS_PCF8574 is not set | 634 | # CONFIG_SENSORS_PCF8574 is not set |
635 | # CONFIG_PCF8575 is not set | 635 | # CONFIG_PCF8575 is not set |
636 | # CONFIG_SENSORS_PCA9539 is not set | 636 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -656,7 +656,7 @@ CONFIG_SPI_OMAP24XX=y | |||
656 | # | 656 | # |
657 | # SPI Protocol Masters | 657 | # SPI Protocol Masters |
658 | # | 658 | # |
659 | # CONFIG_SPI_AT25 is not set | 659 | # CONFIG_EEPROM_AT25 is not set |
660 | # CONFIG_SPI_SPIDEV is not set | 660 | # CONFIG_SPI_SPIDEV is not set |
661 | # CONFIG_SPI_TLE62X0 is not set | 661 | # CONFIG_SPI_TLE62X0 is not set |
662 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 662 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/omap_osk_5912_defconfig b/arch/arm/configs/omap_osk_5912_defconfig index b68e0144cab5..6b3b5c610da0 100644 --- a/arch/arm/configs/omap_osk_5912_defconfig +++ b/arch/arm/configs/omap_osk_5912_defconfig | |||
@@ -711,7 +711,7 @@ CONFIG_I2C_OMAP=y | |||
711 | # CONFIG_SENSORS_DS1337 is not set | 711 | # CONFIG_SENSORS_DS1337 is not set |
712 | # CONFIG_SENSORS_DS1374 is not set | 712 | # CONFIG_SENSORS_DS1374 is not set |
713 | # CONFIG_DS1682 is not set | 713 | # CONFIG_DS1682 is not set |
714 | # CONFIG_SENSORS_EEPROM is not set | 714 | # CONFIG_EEPROM_LEGACY is not set |
715 | # CONFIG_SENSORS_PCF8574 is not set | 715 | # CONFIG_SENSORS_PCF8574 is not set |
716 | # CONFIG_SENSORS_PCA9539 is not set | 716 | # CONFIG_SENSORS_PCA9539 is not set |
717 | # CONFIG_SENSORS_PCF8591 is not set | 717 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/onearm_defconfig b/arch/arm/configs/onearm_defconfig index 418ca2febbe3..f8701fadb600 100644 --- a/arch/arm/configs/onearm_defconfig +++ b/arch/arm/configs/onearm_defconfig | |||
@@ -698,7 +698,7 @@ CONFIG_I2C_CHARDEV=y | |||
698 | # | 698 | # |
699 | # CONFIG_SENSORS_DS1337 is not set | 699 | # CONFIG_SENSORS_DS1337 is not set |
700 | # CONFIG_SENSORS_DS1374 is not set | 700 | # CONFIG_SENSORS_DS1374 is not set |
701 | # CONFIG_SENSORS_EEPROM is not set | 701 | # CONFIG_EEPROM_LEGACY is not set |
702 | # CONFIG_SENSORS_PCF8574 is not set | 702 | # CONFIG_SENSORS_PCF8574 is not set |
703 | # CONFIG_SENSORS_PCA9539 is not set | 703 | # CONFIG_SENSORS_PCA9539 is not set |
704 | # CONFIG_SENSORS_PCF8591 is not set | 704 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig index b2456ca544c9..a8ee6984a09e 100644 --- a/arch/arm/configs/orion5x_defconfig +++ b/arch/arm/configs/orion5x_defconfig | |||
@@ -886,8 +886,8 @@ CONFIG_I2C_MV64XXX=y | |||
886 | # Miscellaneous I2C Chip support | 886 | # Miscellaneous I2C Chip support |
887 | # | 887 | # |
888 | # CONFIG_DS1682 is not set | 888 | # CONFIG_DS1682 is not set |
889 | # CONFIG_AT24 is not set | 889 | # CONFIG_EEPROM_AT24 is not set |
890 | # CONFIG_SENSORS_EEPROM is not set | 890 | # CONFIG_EEPROM_LEGACY is not set |
891 | # CONFIG_SENSORS_PCF8574 is not set | 891 | # CONFIG_SENSORS_PCF8574 is not set |
892 | # CONFIG_PCF8575 is not set | 892 | # CONFIG_PCF8575 is not set |
893 | # CONFIG_SENSORS_PCA9539 is not set | 893 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/overo_defconfig b/arch/arm/configs/overo_defconfig index 49200967a153..a57f9e4124fa 100644 --- a/arch/arm/configs/overo_defconfig +++ b/arch/arm/configs/overo_defconfig | |||
@@ -858,8 +858,8 @@ CONFIG_I2C_OMAP=y | |||
858 | # Miscellaneous I2C Chip support | 858 | # Miscellaneous I2C Chip support |
859 | # | 859 | # |
860 | # CONFIG_DS1682 is not set | 860 | # CONFIG_DS1682 is not set |
861 | # CONFIG_AT24 is not set | 861 | # CONFIG_EEPROM_AT24 is not set |
862 | CONFIG_SENSORS_EEPROM=y | 862 | CONFIG_EEPROM_LEGACY=y |
863 | # CONFIG_SENSORS_PCF8574 is not set | 863 | # CONFIG_SENSORS_PCF8574 is not set |
864 | # CONFIG_PCF8575 is not set | 864 | # CONFIG_PCF8575 is not set |
865 | # CONFIG_SENSORS_PCA9539 is not set | 865 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -885,7 +885,7 @@ CONFIG_SPI_OMAP24XX=y | |||
885 | # | 885 | # |
886 | # SPI Protocol Masters | 886 | # SPI Protocol Masters |
887 | # | 887 | # |
888 | # CONFIG_SPI_AT25 is not set | 888 | # CONFIG_EEPROM_AT25 is not set |
889 | # CONFIG_SPI_SPIDEV is not set | 889 | # CONFIG_SPI_SPIDEV is not set |
890 | # CONFIG_SPI_TLE62X0 is not set | 890 | # CONFIG_SPI_TLE62X0 is not set |
891 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 891 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/palmz71_defconfig b/arch/arm/configs/palmz71_defconfig index 6361922e71c1..08e14068fff7 100644 --- a/arch/arm/configs/palmz71_defconfig +++ b/arch/arm/configs/palmz71_defconfig | |||
@@ -554,7 +554,7 @@ CONFIG_SPI_OMAP_UWIRE=y | |||
554 | # | 554 | # |
555 | # SPI Protocol Masters | 555 | # SPI Protocol Masters |
556 | # | 556 | # |
557 | # CONFIG_SPI_AT25 is not set | 557 | # CONFIG_EEPROM_AT25 is not set |
558 | # CONFIG_SPI_TSC2101 is not set | 558 | # CONFIG_SPI_TSC2101 is not set |
559 | # CONFIG_SPI_TSC2102 is not set | 559 | # CONFIG_SPI_TSC2102 is not set |
560 | # CONFIG_SPI_TSC210X is not set | 560 | # CONFIG_SPI_TSC210X is not set |
diff --git a/arch/arm/configs/palmz72_defconfig b/arch/arm/configs/palmz72_defconfig index 3245f8f33e0a..a0dc37c05dea 100644 --- a/arch/arm/configs/palmz72_defconfig +++ b/arch/arm/configs/palmz72_defconfig | |||
@@ -527,8 +527,8 @@ CONFIG_I2C_PXA=y | |||
527 | # Miscellaneous I2C Chip support | 527 | # Miscellaneous I2C Chip support |
528 | # | 528 | # |
529 | # CONFIG_DS1682 is not set | 529 | # CONFIG_DS1682 is not set |
530 | # CONFIG_AT24 is not set | 530 | # CONFIG_EEPROM_AT24 is not set |
531 | # CONFIG_SENSORS_EEPROM is not set | 531 | # CONFIG_EEPROM_LEGACY is not set |
532 | # CONFIG_SENSORS_PCF8574 is not set | 532 | # CONFIG_SENSORS_PCF8574 is not set |
533 | # CONFIG_PCF8575 is not set | 533 | # CONFIG_PCF8575 is not set |
534 | # CONFIG_SENSORS_PCA9539 is not set | 534 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -552,7 +552,7 @@ CONFIG_SPI_MASTER=y | |||
552 | # | 552 | # |
553 | # SPI Protocol Masters | 553 | # SPI Protocol Masters |
554 | # | 554 | # |
555 | # CONFIG_SPI_AT25 is not set | 555 | # CONFIG_EEPROM_AT25 is not set |
556 | CONFIG_SPI_SPIDEV=y | 556 | CONFIG_SPI_SPIDEV=y |
557 | # CONFIG_SPI_TLE62X0 is not set | 557 | # CONFIG_SPI_TLE62X0 is not set |
558 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 558 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/pcm027_defconfig b/arch/arm/configs/pcm027_defconfig index 17b9b2469570..05ad96a43b1d 100644 --- a/arch/arm/configs/pcm027_defconfig +++ b/arch/arm/configs/pcm027_defconfig | |||
@@ -606,7 +606,7 @@ CONFIG_I2C_PXA=y | |||
606 | # CONFIG_SENSORS_DS1337 is not set | 606 | # CONFIG_SENSORS_DS1337 is not set |
607 | # CONFIG_SENSORS_DS1374 is not set | 607 | # CONFIG_SENSORS_DS1374 is not set |
608 | # CONFIG_DS1682 is not set | 608 | # CONFIG_DS1682 is not set |
609 | CONFIG_SENSORS_EEPROM=y | 609 | CONFIG_EEPROM_LEGACY=y |
610 | # CONFIG_SENSORS_PCF8574 is not set | 610 | # CONFIG_SENSORS_PCF8574 is not set |
611 | # CONFIG_SENSORS_PCA9539 is not set | 611 | # CONFIG_SENSORS_PCA9539 is not set |
612 | # CONFIG_SENSORS_PCF8591 is not set | 612 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/pcm038_defconfig b/arch/arm/configs/pcm038_defconfig index 6b798c215ca8..41429a00f58c 100644 --- a/arch/arm/configs/pcm038_defconfig +++ b/arch/arm/configs/pcm038_defconfig | |||
@@ -604,7 +604,7 @@ CONFIG_I2C_BOARDINFO=y | |||
604 | # Miscellaneous I2C Chip support | 604 | # Miscellaneous I2C Chip support |
605 | # | 605 | # |
606 | # CONFIG_DS1682 is not set | 606 | # CONFIG_DS1682 is not set |
607 | # CONFIG_SENSORS_EEPROM is not set | 607 | # CONFIG_EEPROM_LEGACY is not set |
608 | # CONFIG_SENSORS_PCF8574 is not set | 608 | # CONFIG_SENSORS_PCF8574 is not set |
609 | # CONFIG_PCF8575 is not set | 609 | # CONFIG_PCF8575 is not set |
610 | # CONFIG_SENSORS_PCF8591 is not set | 610 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -626,7 +626,7 @@ CONFIG_SPI_BITBANG=y | |||
626 | # | 626 | # |
627 | # SPI Protocol Masters | 627 | # SPI Protocol Masters |
628 | # | 628 | # |
629 | # CONFIG_SPI_AT25 is not set | 629 | # CONFIG_EEPROM_AT25 is not set |
630 | # CONFIG_SPI_SPIDEV is not set | 630 | # CONFIG_SPI_SPIDEV is not set |
631 | # CONFIG_SPI_TLE62X0 is not set | 631 | # CONFIG_SPI_TLE62X0 is not set |
632 | CONFIG_HAVE_GPIO_LIB=y | 632 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/picotux200_defconfig b/arch/arm/configs/picotux200_defconfig index 59e4463c2da2..9018f0f298aa 100644 --- a/arch/arm/configs/picotux200_defconfig +++ b/arch/arm/configs/picotux200_defconfig | |||
@@ -744,7 +744,7 @@ CONFIG_I2C_GPIO=m | |||
744 | # | 744 | # |
745 | CONFIG_SENSORS_DS1337=m | 745 | CONFIG_SENSORS_DS1337=m |
746 | CONFIG_SENSORS_DS1374=m | 746 | CONFIG_SENSORS_DS1374=m |
747 | CONFIG_SENSORS_EEPROM=m | 747 | CONFIG_EEPROM_LEGACY=m |
748 | CONFIG_SENSORS_PCF8574=m | 748 | CONFIG_SENSORS_PCF8574=m |
749 | CONFIG_SENSORS_PCA9539=m | 749 | CONFIG_SENSORS_PCA9539=m |
750 | CONFIG_SENSORS_PCF8591=m | 750 | CONFIG_SENSORS_PCF8591=m |
diff --git a/arch/arm/configs/pleb_defconfig b/arch/arm/configs/pleb_defconfig index a6b47ea8e465..f2d2dda25949 100644 --- a/arch/arm/configs/pleb_defconfig +++ b/arch/arm/configs/pleb_defconfig | |||
@@ -88,7 +88,6 @@ CONFIG_ARCH_SA1100=y | |||
88 | # CONFIG_SA1100_COLLIE is not set | 88 | # CONFIG_SA1100_COLLIE is not set |
89 | # CONFIG_SA1100_H3100 is not set | 89 | # CONFIG_SA1100_H3100 is not set |
90 | # CONFIG_SA1100_H3600 is not set | 90 | # CONFIG_SA1100_H3600 is not set |
91 | # CONFIG_SA1100_H3800 is not set | ||
92 | # CONFIG_SA1100_BADGE4 is not set | 91 | # CONFIG_SA1100_BADGE4 is not set |
93 | # CONFIG_SA1100_JORNADA720 is not set | 92 | # CONFIG_SA1100_JORNADA720 is not set |
94 | # CONFIG_SA1100_HACKKIT is not set | 93 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/pnx4008_defconfig b/arch/arm/configs/pnx4008_defconfig index 811b8f60d19d..67b5f1e15f4a 100644 --- a/arch/arm/configs/pnx4008_defconfig +++ b/arch/arm/configs/pnx4008_defconfig | |||
@@ -915,7 +915,7 @@ CONFIG_I2C_ALGOPCA=m | |||
915 | # | 915 | # |
916 | # CONFIG_SENSORS_DS1337 is not set | 916 | # CONFIG_SENSORS_DS1337 is not set |
917 | # CONFIG_SENSORS_DS1374 is not set | 917 | # CONFIG_SENSORS_DS1374 is not set |
918 | CONFIG_SENSORS_EEPROM=m | 918 | CONFIG_EEPROM_LEGACY=m |
919 | CONFIG_SENSORS_PCF8574=m | 919 | CONFIG_SENSORS_PCF8574=m |
920 | # CONFIG_SENSORS_PCA9539 is not set | 920 | # CONFIG_SENSORS_PCA9539 is not set |
921 | CONFIG_SENSORS_PCF8591=m | 921 | CONFIG_SENSORS_PCF8591=m |
diff --git a/arch/arm/configs/qil-a9260_defconfig b/arch/arm/configs/qil-a9260_defconfig index 5cbd81589647..cd1d717903ac 100644 --- a/arch/arm/configs/qil-a9260_defconfig +++ b/arch/arm/configs/qil-a9260_defconfig | |||
@@ -687,7 +687,7 @@ CONFIG_I2C_CHARDEV=y | |||
687 | # CONFIG_SENSORS_DS1337 is not set | 687 | # CONFIG_SENSORS_DS1337 is not set |
688 | # CONFIG_SENSORS_DS1374 is not set | 688 | # CONFIG_SENSORS_DS1374 is not set |
689 | # CONFIG_DS1682 is not set | 689 | # CONFIG_DS1682 is not set |
690 | # CONFIG_SENSORS_EEPROM is not set | 690 | # CONFIG_EEPROM_LEGACY is not set |
691 | # CONFIG_SENSORS_PCF8574 is not set | 691 | # CONFIG_SENSORS_PCF8574 is not set |
692 | # CONFIG_SENSORS_PCA9539 is not set | 692 | # CONFIG_SENSORS_PCA9539 is not set |
693 | # CONFIG_SENSORS_PCF8591 is not set | 693 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -714,7 +714,7 @@ CONFIG_SPI_ATMEL=y | |||
714 | # | 714 | # |
715 | # SPI Protocol Masters | 715 | # SPI Protocol Masters |
716 | # | 716 | # |
717 | # CONFIG_SPI_AT25 is not set | 717 | # CONFIG_EEPROM_AT25 is not set |
718 | # CONFIG_SPI_SPIDEV is not set | 718 | # CONFIG_SPI_SPIDEV is not set |
719 | # CONFIG_SPI_TLE62X0 is not set | 719 | # CONFIG_SPI_TLE62X0 is not set |
720 | # CONFIG_W1 is not set | 720 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig index f62d1817d2c6..a29d61fe4c6a 100644 --- a/arch/arm/configs/rpc_defconfig +++ b/arch/arm/configs/rpc_defconfig | |||
@@ -590,7 +590,7 @@ CONFIG_I2C_ACORN=y | |||
590 | # CONFIG_SENSORS_DS1337 is not set | 590 | # CONFIG_SENSORS_DS1337 is not set |
591 | # CONFIG_SENSORS_DS1374 is not set | 591 | # CONFIG_SENSORS_DS1374 is not set |
592 | # CONFIG_DS1682 is not set | 592 | # CONFIG_DS1682 is not set |
593 | # CONFIG_SENSORS_EEPROM is not set | 593 | # CONFIG_EEPROM_LEGACY is not set |
594 | # CONFIG_SENSORS_PCF8574 is not set | 594 | # CONFIG_SENSORS_PCF8574 is not set |
595 | # CONFIG_SENSORS_PCA9539 is not set | 595 | # CONFIG_SENSORS_PCA9539 is not set |
596 | # CONFIG_SENSORS_PCF8591 is not set | 596 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 35faaea8623e..65a583ee5df8 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -923,7 +923,7 @@ CONFIG_I2C_SIMTEC=y | |||
923 | # Miscellaneous I2C Chip support | 923 | # Miscellaneous I2C Chip support |
924 | # | 924 | # |
925 | # CONFIG_DS1682 is not set | 925 | # CONFIG_DS1682 is not set |
926 | CONFIG_SENSORS_EEPROM=m | 926 | CONFIG_EEPROM_LEGACY=m |
927 | # CONFIG_SENSORS_PCF8574 is not set | 927 | # CONFIG_SENSORS_PCF8574 is not set |
928 | # CONFIG_PCF8575 is not set | 928 | # CONFIG_PCF8575 is not set |
929 | # CONFIG_SENSORS_PCF8591 is not set | 929 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -950,7 +950,7 @@ CONFIG_SPI_S3C24XX_GPIO=m | |||
950 | # | 950 | # |
951 | # SPI Protocol Masters | 951 | # SPI Protocol Masters |
952 | # | 952 | # |
953 | # CONFIG_SPI_AT25 is not set | 953 | # CONFIG_EEPROM_AT25 is not set |
954 | # CONFIG_SPI_SPIDEV is not set | 954 | # CONFIG_SPI_SPIDEV is not set |
955 | # CONFIG_SPI_TLE62X0 is not set | 955 | # CONFIG_SPI_TLE62X0 is not set |
956 | CONFIG_HAVE_GPIO_LIB=y | 956 | CONFIG_HAVE_GPIO_LIB=y |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index cf3c1b5d7048..2e8fa50e9a09 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -465,8 +465,8 @@ CONFIG_I2C_S3C2410=y | |||
465 | # Miscellaneous I2C Chip support | 465 | # Miscellaneous I2C Chip support |
466 | # | 466 | # |
467 | # CONFIG_DS1682 is not set | 467 | # CONFIG_DS1682 is not set |
468 | CONFIG_AT24=y | 468 | CONFIG_EEPROM_AT24=y |
469 | # CONFIG_SENSORS_EEPROM is not set | 469 | # CONFIG_EEPROM_LEGACY is not set |
470 | # CONFIG_SENSORS_PCF8574 is not set | 470 | # CONFIG_SENSORS_PCF8574 is not set |
471 | # CONFIG_PCF8575 is not set | 471 | # CONFIG_PCF8575 is not set |
472 | # CONFIG_SENSORS_PCA9539 is not set | 472 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/shannon_defconfig b/arch/arm/configs/shannon_defconfig index d052c8f80515..984f7096a533 100644 --- a/arch/arm/configs/shannon_defconfig +++ b/arch/arm/configs/shannon_defconfig | |||
@@ -87,7 +87,6 @@ CONFIG_ARCH_SA1100=y | |||
87 | # CONFIG_SA1100_COLLIE is not set | 87 | # CONFIG_SA1100_COLLIE is not set |
88 | # CONFIG_SA1100_H3100 is not set | 88 | # CONFIG_SA1100_H3100 is not set |
89 | # CONFIG_SA1100_H3600 is not set | 89 | # CONFIG_SA1100_H3600 is not set |
90 | # CONFIG_SA1100_H3800 is not set | ||
91 | # CONFIG_SA1100_BADGE4 is not set | 90 | # CONFIG_SA1100_BADGE4 is not set |
92 | # CONFIG_SA1100_JORNADA720 is not set | 91 | # CONFIG_SA1100_JORNADA720 is not set |
93 | # CONFIG_SA1100_HACKKIT is not set | 92 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/shark_defconfig b/arch/arm/configs/shark_defconfig index 9b6561d119af..90235bf7a1de 100644 --- a/arch/arm/configs/shark_defconfig +++ b/arch/arm/configs/shark_defconfig | |||
@@ -1,88 +1,174 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-git3 | 3 | # Linux kernel version: 2.6.28-git6 |
4 | # Sat Jul 16 15:21:47 2005 | 4 | # Thu Jan 8 17:14:47 2009 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | # CONFIG_GENERIC_GPIO is not set | ||
9 | # CONFIG_GENERIC_TIME is not set | ||
10 | # CONFIG_GENERIC_CLOCKEVENTS is not set | ||
7 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | 12 | # CONFIG_NO_IOPORT is not set |
13 | CONFIG_GENERIC_HARDIRQS=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | ||
15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
16 | CONFIG_LOCKDEP_SUPPORT=y | ||
17 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
18 | CONFIG_HARDIRQS_SW_RESEND=y | ||
19 | CONFIG_GENERIC_IRQ_PROBE=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
21 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
22 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
23 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 24 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
25 | CONFIG_ZONE_DMA=y | ||
26 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
27 | CONFIG_VECTORS_BASE=0xffff0000 | ||
28 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 29 | ||
12 | # | 30 | # |
13 | # Code maturity level options | 31 | # General setup |
14 | # | 32 | # |
15 | CONFIG_EXPERIMENTAL=y | 33 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 34 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 35 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | 36 | CONFIG_LOCALVERSION="" |
37 | # CONFIG_LOCALVERSION_AUTO is not set | ||
24 | CONFIG_SWAP=y | 38 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 39 | CONFIG_SYSVIPC=y |
40 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | # CONFIG_POSIX_MQUEUE is not set | 41 | # CONFIG_POSIX_MQUEUE is not set |
27 | # CONFIG_BSD_PROCESS_ACCT is not set | 42 | # CONFIG_BSD_PROCESS_ACCT is not set |
28 | CONFIG_SYSCTL=y | 43 | # CONFIG_TASKSTATS is not set |
29 | # CONFIG_AUDIT is not set | 44 | # CONFIG_AUDIT is not set |
30 | # CONFIG_HOTPLUG is not set | ||
31 | CONFIG_KOBJECT_UEVENT=y | ||
32 | # CONFIG_IKCONFIG is not set | 45 | # CONFIG_IKCONFIG is not set |
46 | CONFIG_LOG_BUF_SHIFT=14 | ||
47 | # CONFIG_CGROUPS is not set | ||
48 | CONFIG_GROUP_SCHED=y | ||
49 | CONFIG_FAIR_GROUP_SCHED=y | ||
50 | # CONFIG_RT_GROUP_SCHED is not set | ||
51 | CONFIG_USER_SCHED=y | ||
52 | # CONFIG_CGROUP_SCHED is not set | ||
53 | CONFIG_SYSFS_DEPRECATED=y | ||
54 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
55 | # CONFIG_RELAY is not set | ||
56 | CONFIG_NAMESPACES=y | ||
57 | # CONFIG_UTS_NS is not set | ||
58 | # CONFIG_IPC_NS is not set | ||
59 | # CONFIG_USER_NS is not set | ||
60 | # CONFIG_PID_NS is not set | ||
61 | # CONFIG_BLK_DEV_INITRD is not set | ||
62 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
63 | CONFIG_SYSCTL=y | ||
33 | # CONFIG_EMBEDDED is not set | 64 | # CONFIG_EMBEDDED is not set |
65 | CONFIG_UID16=y | ||
66 | CONFIG_SYSCTL_SYSCALL=y | ||
34 | CONFIG_KALLSYMS=y | 67 | CONFIG_KALLSYMS=y |
35 | # CONFIG_KALLSYMS_ALL is not set | 68 | # CONFIG_KALLSYMS_ALL is not set |
36 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 69 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
70 | CONFIG_HOTPLUG=y | ||
37 | CONFIG_PRINTK=y | 71 | CONFIG_PRINTK=y |
38 | CONFIG_BUG=y | 72 | CONFIG_BUG=y |
73 | CONFIG_ELF_CORE=y | ||
74 | CONFIG_COMPAT_BRK=y | ||
39 | CONFIG_BASE_FULL=y | 75 | CONFIG_BASE_FULL=y |
40 | CONFIG_FUTEX=y | 76 | CONFIG_FUTEX=y |
77 | CONFIG_ANON_INODES=y | ||
41 | CONFIG_EPOLL=y | 78 | CONFIG_EPOLL=y |
42 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 79 | CONFIG_SIGNALFD=y |
80 | CONFIG_TIMERFD=y | ||
81 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 82 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 83 | CONFIG_AIO=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 84 | CONFIG_VM_EVENT_COUNTERS=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 85 | CONFIG_PCI_QUIRKS=y |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 86 | CONFIG_SLAB=y |
87 | # CONFIG_SLUB is not set | ||
88 | # CONFIG_SLOB is not set | ||
89 | # CONFIG_PROFILING is not set | ||
90 | CONFIG_HAVE_OPROFILE=y | ||
91 | # CONFIG_KPROBES is not set | ||
92 | CONFIG_HAVE_KPROBES=y | ||
93 | CONFIG_HAVE_KRETPROBES=y | ||
94 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
95 | CONFIG_SLABINFO=y | ||
96 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 97 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 98 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 99 | CONFIG_MODULES=y |
100 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
55 | CONFIG_MODULE_UNLOAD=y | 101 | CONFIG_MODULE_UNLOAD=y |
56 | CONFIG_MODULE_FORCE_UNLOAD=y | 102 | CONFIG_MODULE_FORCE_UNLOAD=y |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 103 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 104 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 105 | CONFIG_KMOD=y |
106 | CONFIG_BLOCK=y | ||
107 | # CONFIG_LBD is not set | ||
108 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
109 | # CONFIG_BLK_DEV_BSG is not set | ||
110 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
111 | |||
112 | # | ||
113 | # IO Schedulers | ||
114 | # | ||
115 | CONFIG_IOSCHED_NOOP=y | ||
116 | CONFIG_IOSCHED_AS=y | ||
117 | CONFIG_IOSCHED_DEADLINE=y | ||
118 | CONFIG_IOSCHED_CFQ=y | ||
119 | # CONFIG_DEFAULT_AS is not set | ||
120 | # CONFIG_DEFAULT_DEADLINE is not set | ||
121 | CONFIG_DEFAULT_CFQ=y | ||
122 | # CONFIG_DEFAULT_NOOP is not set | ||
123 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
124 | CONFIG_CLASSIC_RCU=y | ||
125 | # CONFIG_TREE_RCU is not set | ||
126 | # CONFIG_PREEMPT_RCU is not set | ||
127 | # CONFIG_TREE_RCU_TRACE is not set | ||
128 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
129 | # CONFIG_FREEZER is not set | ||
61 | 130 | ||
62 | # | 131 | # |
63 | # System Type | 132 | # System Type |
64 | # | 133 | # |
65 | # CONFIG_ARCH_CLPS7500 is not set | 134 | # CONFIG_ARCH_AAEC2000 is not set |
135 | # CONFIG_ARCH_INTEGRATOR is not set | ||
136 | # CONFIG_ARCH_REALVIEW is not set | ||
137 | # CONFIG_ARCH_VERSATILE is not set | ||
138 | # CONFIG_ARCH_AT91 is not set | ||
66 | # CONFIG_ARCH_CLPS711X is not set | 139 | # CONFIG_ARCH_CLPS711X is not set |
67 | # CONFIG_ARCH_CO285 is not set | ||
68 | # CONFIG_ARCH_EBSA110 is not set | 140 | # CONFIG_ARCH_EBSA110 is not set |
141 | # CONFIG_ARCH_EP93XX is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 142 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 143 | # CONFIG_ARCH_NETX is not set |
71 | # CONFIG_ARCH_IOP3XX is not set | 144 | # CONFIG_ARCH_H720X is not set |
72 | # CONFIG_ARCH_IXP4XX is not set | 145 | # CONFIG_ARCH_IMX is not set |
146 | # CONFIG_ARCH_IOP13XX is not set | ||
147 | # CONFIG_ARCH_IOP32X is not set | ||
148 | # CONFIG_ARCH_IOP33X is not set | ||
149 | # CONFIG_ARCH_IXP23XX is not set | ||
73 | # CONFIG_ARCH_IXP2000 is not set | 150 | # CONFIG_ARCH_IXP2000 is not set |
151 | # CONFIG_ARCH_IXP4XX is not set | ||
74 | # CONFIG_ARCH_L7200 is not set | 152 | # CONFIG_ARCH_L7200 is not set |
153 | # CONFIG_ARCH_KIRKWOOD is not set | ||
154 | # CONFIG_ARCH_KS8695 is not set | ||
155 | # CONFIG_ARCH_NS9XXX is not set | ||
156 | # CONFIG_ARCH_LOKI is not set | ||
157 | # CONFIG_ARCH_MV78XX0 is not set | ||
158 | # CONFIG_ARCH_MXC is not set | ||
159 | # CONFIG_ARCH_ORION5X is not set | ||
160 | # CONFIG_ARCH_PNX4008 is not set | ||
75 | # CONFIG_ARCH_PXA is not set | 161 | # CONFIG_ARCH_PXA is not set |
76 | # CONFIG_ARCH_RPC is not set | 162 | # CONFIG_ARCH_RPC is not set |
77 | # CONFIG_ARCH_SA1100 is not set | 163 | # CONFIG_ARCH_SA1100 is not set |
78 | # CONFIG_ARCH_S3C2410 is not set | 164 | # CONFIG_ARCH_S3C2410 is not set |
165 | # CONFIG_ARCH_S3C64XX is not set | ||
79 | CONFIG_ARCH_SHARK=y | 166 | CONFIG_ARCH_SHARK=y |
80 | # CONFIG_ARCH_LH7A40X is not set | 167 | # CONFIG_ARCH_LH7A40X is not set |
168 | # CONFIG_ARCH_DAVINCI is not set | ||
81 | # CONFIG_ARCH_OMAP is not set | 169 | # CONFIG_ARCH_OMAP is not set |
82 | # CONFIG_ARCH_VERSATILE is not set | 170 | # CONFIG_ARCH_MSM is not set |
83 | # CONFIG_ARCH_IMX is not set | 171 | # CONFIG_ARCH_W90X900 is not set |
84 | # CONFIG_ARCH_H720X is not set | ||
85 | # CONFIG_ARCH_AAEC2000 is not set | ||
86 | 172 | ||
87 | # | 173 | # |
88 | # Processor Type | 174 | # Processor Type |
@@ -91,14 +177,20 @@ CONFIG_CPU_32=y | |||
91 | CONFIG_CPU_SA110=y | 177 | CONFIG_CPU_SA110=y |
92 | CONFIG_CPU_32v4=y | 178 | CONFIG_CPU_32v4=y |
93 | CONFIG_CPU_ABRT_EV4=y | 179 | CONFIG_CPU_ABRT_EV4=y |
180 | CONFIG_CPU_PABRT_NOIFAR=y | ||
94 | CONFIG_CPU_CACHE_V4WB=y | 181 | CONFIG_CPU_CACHE_V4WB=y |
95 | CONFIG_CPU_CACHE_VIVT=y | 182 | CONFIG_CPU_CACHE_VIVT=y |
96 | CONFIG_CPU_COPY_V4WB=y | 183 | CONFIG_CPU_COPY_V4WB=y |
97 | CONFIG_CPU_TLB_V4WB=y | 184 | CONFIG_CPU_TLB_V4WB=y |
185 | CONFIG_CPU_CP15=y | ||
186 | CONFIG_CPU_CP15_MMU=y | ||
98 | 187 | ||
99 | # | 188 | # |
100 | # Processor Features | 189 | # Processor Features |
101 | # | 190 | # |
191 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
192 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
193 | # CONFIG_OUTER_CACHE is not set | ||
102 | 194 | ||
103 | # | 195 | # |
104 | # Bus support | 196 | # Bus support |
@@ -107,22 +199,40 @@ CONFIG_ISA=y | |||
107 | CONFIG_ISA_DMA=y | 199 | CONFIG_ISA_DMA=y |
108 | CONFIG_ISA_DMA_API=y | 200 | CONFIG_ISA_DMA_API=y |
109 | CONFIG_PCI=y | 201 | CONFIG_PCI=y |
202 | CONFIG_PCI_SYSCALL=y | ||
110 | CONFIG_PCI_HOST_VIA82C505=y | 203 | CONFIG_PCI_HOST_VIA82C505=y |
111 | CONFIG_PCI_LEGACY_PROC=y | 204 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
112 | # CONFIG_PCI_NAMES is not set | 205 | CONFIG_PCI_LEGACY=y |
113 | # CONFIG_PCI_DEBUG is not set | 206 | # CONFIG_PCI_DEBUG is not set |
114 | |||
115 | # | ||
116 | # PCCARD (PCMCIA/CardBus) support | ||
117 | # | ||
118 | # CONFIG_PCCARD is not set | 207 | # CONFIG_PCCARD is not set |
119 | 208 | ||
120 | # | 209 | # |
121 | # Kernel Features | 210 | # Kernel Features |
122 | # | 211 | # |
123 | # CONFIG_SMP is not set | 212 | CONFIG_VMSPLIT_3G=y |
213 | # CONFIG_VMSPLIT_2G is not set | ||
214 | # CONFIG_VMSPLIT_1G is not set | ||
215 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
124 | # CONFIG_PREEMPT is not set | 216 | # CONFIG_PREEMPT is not set |
125 | # CONFIG_DISCONTIGMEM is not set | 217 | CONFIG_HZ=100 |
218 | # CONFIG_AEABI is not set | ||
219 | CONFIG_ARCH_FLATMEM_HAS_HOLES=y | ||
220 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
221 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
222 | CONFIG_SELECT_MEMORY_MODEL=y | ||
223 | CONFIG_FLATMEM_MANUAL=y | ||
224 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
225 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
226 | CONFIG_FLATMEM=y | ||
227 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
228 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
229 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
230 | # CONFIG_RESOURCES_64BIT is not set | ||
231 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
232 | CONFIG_ZONE_DMA_FLAG=1 | ||
233 | CONFIG_BOUNCE=y | ||
234 | CONFIG_VIRT_TO_BUS=y | ||
235 | CONFIG_UNEVICTABLE_LRU=y | ||
126 | CONFIG_LEDS=y | 236 | CONFIG_LEDS=y |
127 | CONFIG_LEDS_TIMER=y | 237 | CONFIG_LEDS_TIMER=y |
128 | # CONFIG_LEDS_CPU is not set | 238 | # CONFIG_LEDS_CPU is not set |
@@ -135,6 +245,12 @@ CONFIG_ZBOOT_ROM_TEXT=0x0 | |||
135 | CONFIG_ZBOOT_ROM_BSS=0x0 | 245 | CONFIG_ZBOOT_ROM_BSS=0x0 |
136 | CONFIG_CMDLINE="" | 246 | CONFIG_CMDLINE="" |
137 | # CONFIG_XIP_KERNEL is not set | 247 | # CONFIG_XIP_KERNEL is not set |
248 | # CONFIG_KEXEC is not set | ||
249 | |||
250 | # | ||
251 | # CPU Power Management | ||
252 | # | ||
253 | # CONFIG_CPU_IDLE is not set | ||
138 | 254 | ||
139 | # | 255 | # |
140 | # Floating point emulation | 256 | # Floating point emulation |
@@ -143,13 +259,16 @@ CONFIG_CMDLINE="" | |||
143 | # | 259 | # |
144 | # At least one emulation must be selected | 260 | # At least one emulation must be selected |
145 | # | 261 | # |
146 | # CONFIG_FPE_NWFPE is not set | 262 | CONFIG_FPE_NWFPE=y |
147 | CONFIG_FPE_FASTFPE=y | 263 | # CONFIG_FPE_NWFPE_XP is not set |
264 | # CONFIG_FPE_FASTFPE is not set | ||
148 | 265 | ||
149 | # | 266 | # |
150 | # Userspace binary formats | 267 | # Userspace binary formats |
151 | # | 268 | # |
152 | CONFIG_BINFMT_ELF=y | 269 | CONFIG_BINFMT_ELF=y |
270 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
271 | CONFIG_HAVE_AOUT=y | ||
153 | # CONFIG_BINFMT_AOUT is not set | 272 | # CONFIG_BINFMT_AOUT is not set |
154 | # CONFIG_BINFMT_MISC is not set | 273 | # CONFIG_BINFMT_MISC is not set |
155 | # CONFIG_ARTHUR is not set | 274 | # CONFIG_ARTHUR is not set |
@@ -158,44 +277,104 @@ CONFIG_BINFMT_ELF=y | |||
158 | # Power management options | 277 | # Power management options |
159 | # | 278 | # |
160 | # CONFIG_PM is not set | 279 | # CONFIG_PM is not set |
280 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
281 | CONFIG_NET=y | ||
161 | 282 | ||
162 | # | 283 | # |
163 | # Device Drivers | 284 | # Networking options |
164 | # | 285 | # |
286 | # CONFIG_NET_NS is not set | ||
287 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
288 | CONFIG_PACKET=y | ||
289 | # CONFIG_PACKET_MMAP is not set | ||
290 | CONFIG_UNIX=y | ||
291 | # CONFIG_NET_KEY is not set | ||
292 | CONFIG_INET=y | ||
293 | # CONFIG_IP_MULTICAST is not set | ||
294 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
295 | CONFIG_IP_FIB_HASH=y | ||
296 | # CONFIG_IP_PNP is not set | ||
297 | # CONFIG_NET_IPIP is not set | ||
298 | # CONFIG_NET_IPGRE is not set | ||
299 | # CONFIG_ARPD is not set | ||
300 | # CONFIG_SYN_COOKIES is not set | ||
301 | # CONFIG_INET_AH is not set | ||
302 | # CONFIG_INET_ESP is not set | ||
303 | # CONFIG_INET_IPCOMP is not set | ||
304 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
305 | # CONFIG_INET_TUNNEL is not set | ||
306 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
307 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
308 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
309 | # CONFIG_INET_LRO is not set | ||
310 | # CONFIG_INET_DIAG is not set | ||
311 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
312 | CONFIG_TCP_CONG_CUBIC=y | ||
313 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
314 | # CONFIG_TCP_MD5SIG is not set | ||
315 | # CONFIG_IPV6 is not set | ||
316 | # CONFIG_NETWORK_SECMARK is not set | ||
317 | # CONFIG_NETFILTER is not set | ||
318 | # CONFIG_IP_DCCP is not set | ||
319 | # CONFIG_IP_SCTP is not set | ||
320 | # CONFIG_TIPC is not set | ||
321 | # CONFIG_ATM is not set | ||
322 | # CONFIG_BRIDGE is not set | ||
323 | # CONFIG_NET_DSA is not set | ||
324 | # CONFIG_VLAN_8021Q is not set | ||
325 | # CONFIG_DECNET is not set | ||
326 | # CONFIG_LLC2 is not set | ||
327 | # CONFIG_IPX is not set | ||
328 | # CONFIG_ATALK is not set | ||
329 | # CONFIG_X25 is not set | ||
330 | # CONFIG_LAPB is not set | ||
331 | # CONFIG_ECONET is not set | ||
332 | # CONFIG_WAN_ROUTER is not set | ||
333 | # CONFIG_NET_SCHED is not set | ||
334 | # CONFIG_DCB is not set | ||
165 | 335 | ||
166 | # | 336 | # |
167 | # Generic Driver Options | 337 | # Network testing |
168 | # | 338 | # |
169 | # CONFIG_STANDALONE is not set | 339 | # CONFIG_NET_PKTGEN is not set |
170 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 340 | # CONFIG_HAMRADIO is not set |
171 | # CONFIG_FW_LOADER is not set | 341 | # CONFIG_CAN is not set |
172 | # CONFIG_DEBUG_DRIVER is not set | 342 | # CONFIG_IRDA is not set |
343 | # CONFIG_BT is not set | ||
344 | # CONFIG_AF_RXRPC is not set | ||
345 | # CONFIG_PHONET is not set | ||
346 | # CONFIG_WIRELESS is not set | ||
347 | # CONFIG_RFKILL is not set | ||
348 | # CONFIG_NET_9P is not set | ||
173 | 349 | ||
174 | # | 350 | # |
175 | # Memory Technology Devices (MTD) | 351 | # Device Drivers |
176 | # | 352 | # |
177 | # CONFIG_MTD is not set | ||
178 | 353 | ||
179 | # | 354 | # |
180 | # Parallel port support | 355 | # Generic Driver Options |
181 | # | 356 | # |
357 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
358 | # CONFIG_STANDALONE is not set | ||
359 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
360 | CONFIG_FW_LOADER=y | ||
361 | # CONFIG_FIRMWARE_IN_KERNEL is not set | ||
362 | CONFIG_EXTRA_FIRMWARE="" | ||
363 | # CONFIG_DEBUG_DRIVER is not set | ||
364 | # CONFIG_DEBUG_DEVRES is not set | ||
365 | # CONFIG_SYS_HYPERVISOR is not set | ||
366 | # CONFIG_CONNECTOR is not set | ||
367 | # CONFIG_MTD is not set | ||
182 | CONFIG_PARPORT=m | 368 | CONFIG_PARPORT=m |
183 | CONFIG_PARPORT_PC=m | 369 | CONFIG_PARPORT_PC=m |
184 | # CONFIG_PARPORT_SERIAL is not set | 370 | # CONFIG_PARPORT_SERIAL is not set |
185 | # CONFIG_PARPORT_PC_FIFO is not set | 371 | # CONFIG_PARPORT_PC_FIFO is not set |
186 | # CONFIG_PARPORT_PC_SUPERIO is not set | 372 | # CONFIG_PARPORT_PC_SUPERIO is not set |
187 | # CONFIG_PARPORT_ARC is not set | ||
188 | # CONFIG_PARPORT_GSC is not set | 373 | # CONFIG_PARPORT_GSC is not set |
374 | # CONFIG_PARPORT_AX88796 is not set | ||
189 | # CONFIG_PARPORT_1284 is not set | 375 | # CONFIG_PARPORT_1284 is not set |
190 | |||
191 | # | ||
192 | # Plug and Play support | ||
193 | # | ||
194 | # CONFIG_PNP is not set | 376 | # CONFIG_PNP is not set |
195 | 377 | CONFIG_BLK_DEV=y | |
196 | # | ||
197 | # Block devices | ||
198 | # | ||
199 | # CONFIG_BLK_DEV_XD is not set | 378 | # CONFIG_BLK_DEV_XD is not set |
200 | # CONFIG_PARIDE is not set | 379 | # CONFIG_PARIDE is not set |
201 | # CONFIG_BLK_CPQ_DA is not set | 380 | # CONFIG_BLK_CPQ_DA is not set |
@@ -210,52 +389,78 @@ CONFIG_BLK_DEV_LOOP=y | |||
210 | CONFIG_BLK_DEV_RAM=y | 389 | CONFIG_BLK_DEV_RAM=y |
211 | CONFIG_BLK_DEV_RAM_COUNT=16 | 390 | CONFIG_BLK_DEV_RAM_COUNT=16 |
212 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 391 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
213 | # CONFIG_BLK_DEV_INITRD is not set | 392 | # CONFIG_BLK_DEV_XIP is not set |
214 | CONFIG_INITRAMFS_SOURCE="" | ||
215 | # CONFIG_CDROM_PKTCDVD is not set | 393 | # CONFIG_CDROM_PKTCDVD is not set |
216 | |||
217 | # | ||
218 | # IO Schedulers | ||
219 | # | ||
220 | CONFIG_IOSCHED_NOOP=y | ||
221 | CONFIG_IOSCHED_AS=y | ||
222 | CONFIG_IOSCHED_DEADLINE=y | ||
223 | CONFIG_IOSCHED_CFQ=y | ||
224 | # CONFIG_ATA_OVER_ETH is not set | 394 | # CONFIG_ATA_OVER_ETH is not set |
225 | 395 | # CONFIG_BLK_DEV_HD is not set | |
226 | # | 396 | CONFIG_MISC_DEVICES=y |
227 | # ATA/ATAPI/MFM/RLL support | 397 | # CONFIG_PHANTOM is not set |
228 | # | 398 | # CONFIG_EEPROM_93CX6 is not set |
399 | # CONFIG_SGI_IOC4 is not set | ||
400 | # CONFIG_TIFM_CORE is not set | ||
401 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
402 | # CONFIG_HP_ILO is not set | ||
403 | # CONFIG_C2PORT is not set | ||
404 | CONFIG_HAVE_IDE=y | ||
229 | CONFIG_IDE=y | 405 | CONFIG_IDE=y |
230 | CONFIG_BLK_DEV_IDE=y | ||
231 | 406 | ||
232 | # | 407 | # |
233 | # Please see Documentation/ide.txt for help/info on IDE drives | 408 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
234 | # | 409 | # |
410 | CONFIG_IDE_ATAPI=y | ||
235 | # CONFIG_BLK_DEV_IDE_SATA is not set | 411 | # CONFIG_BLK_DEV_IDE_SATA is not set |
236 | CONFIG_BLK_DEV_IDEDISK=y | 412 | CONFIG_IDE_GD=y |
237 | # CONFIG_IDEDISK_MULTI_MODE is not set | 413 | CONFIG_IDE_GD_ATA=y |
414 | # CONFIG_IDE_GD_ATAPI is not set | ||
238 | CONFIG_BLK_DEV_IDECD=m | 415 | CONFIG_BLK_DEV_IDECD=m |
416 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
239 | # CONFIG_BLK_DEV_IDETAPE is not set | 417 | # CONFIG_BLK_DEV_IDETAPE is not set |
240 | CONFIG_BLK_DEV_IDEFLOPPY=y | ||
241 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
242 | # CONFIG_IDE_TASK_IOCTL is not set | 418 | # CONFIG_IDE_TASK_IOCTL is not set |
419 | CONFIG_IDE_PROC_FS=y | ||
243 | 420 | ||
244 | # | 421 | # |
245 | # IDE chipset support/bugfixes | 422 | # IDE chipset support/bugfixes |
246 | # | 423 | # |
247 | CONFIG_IDE_GENERIC=y | 424 | # CONFIG_BLK_DEV_PLATFORM is not set |
248 | # CONFIG_BLK_DEV_IDEPCI is not set | 425 | |
426 | # | ||
427 | # PCI IDE chipsets support | ||
428 | # | ||
429 | # CONFIG_BLK_DEV_GENERIC is not set | ||
430 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
431 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
432 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
433 | # CONFIG_BLK_DEV_CMD64X is not set | ||
434 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
435 | # CONFIG_BLK_DEV_CS5520 is not set | ||
436 | # CONFIG_BLK_DEV_CS5530 is not set | ||
437 | # CONFIG_BLK_DEV_HPT366 is not set | ||
438 | # CONFIG_BLK_DEV_JMICRON is not set | ||
439 | # CONFIG_BLK_DEV_SC1200 is not set | ||
440 | # CONFIG_BLK_DEV_PIIX is not set | ||
441 | # CONFIG_BLK_DEV_IT8213 is not set | ||
442 | # CONFIG_BLK_DEV_IT821X is not set | ||
443 | # CONFIG_BLK_DEV_NS87415 is not set | ||
444 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
445 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
446 | # CONFIG_BLK_DEV_SVWKS is not set | ||
447 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
448 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
449 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
450 | # CONFIG_BLK_DEV_TRM290 is not set | ||
451 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
452 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
249 | CONFIG_IDE_ARM=y | 453 | CONFIG_IDE_ARM=y |
250 | # CONFIG_IDE_CHIPSETS is not set | ||
251 | # CONFIG_BLK_DEV_IDEDMA is not set | 454 | # CONFIG_BLK_DEV_IDEDMA is not set |
252 | # CONFIG_IDEDMA_AUTO is not set | ||
253 | # CONFIG_BLK_DEV_HD is not set | ||
254 | 455 | ||
255 | # | 456 | # |
256 | # SCSI device support | 457 | # SCSI device support |
257 | # | 458 | # |
459 | # CONFIG_RAID_ATTRS is not set | ||
258 | CONFIG_SCSI=m | 460 | CONFIG_SCSI=m |
461 | CONFIG_SCSI_DMA=y | ||
462 | # CONFIG_SCSI_TGT is not set | ||
463 | # CONFIG_SCSI_NETLINK is not set | ||
259 | CONFIG_SCSI_PROC_FS=y | 464 | CONFIG_SCSI_PROC_FS=y |
260 | 465 | ||
261 | # | 466 | # |
@@ -275,17 +480,20 @@ CONFIG_CHR_DEV_SG=m | |||
275 | # CONFIG_SCSI_MULTI_LUN is not set | 480 | # CONFIG_SCSI_MULTI_LUN is not set |
276 | # CONFIG_SCSI_CONSTANTS is not set | 481 | # CONFIG_SCSI_CONSTANTS is not set |
277 | # CONFIG_SCSI_LOGGING is not set | 482 | # CONFIG_SCSI_LOGGING is not set |
483 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
484 | CONFIG_SCSI_WAIT_SCAN=m | ||
278 | 485 | ||
279 | # | 486 | # |
280 | # SCSI Transport Attributes | 487 | # SCSI Transports |
281 | # | 488 | # |
282 | # CONFIG_SCSI_SPI_ATTRS is not set | 489 | # CONFIG_SCSI_SPI_ATTRS is not set |
283 | # CONFIG_SCSI_FC_ATTRS is not set | 490 | # CONFIG_SCSI_FC_ATTRS is not set |
284 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 491 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
285 | 492 | # CONFIG_SCSI_SAS_LIBSAS is not set | |
286 | # | 493 | # CONFIG_SCSI_SRP_ATTRS is not set |
287 | # SCSI low-level drivers | 494 | CONFIG_SCSI_LOWLEVEL=y |
288 | # | 495 | # CONFIG_ISCSI_TCP is not set |
496 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
289 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 497 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
290 | # CONFIG_SCSI_3W_9XXX is not set | 498 | # CONFIG_SCSI_3W_9XXX is not set |
291 | # CONFIG_SCSI_7000FASST is not set | 499 | # CONFIG_SCSI_7000FASST is not set |
@@ -296,12 +504,18 @@ CONFIG_CHR_DEV_SG=m | |||
296 | # CONFIG_SCSI_AIC7XXX is not set | 504 | # CONFIG_SCSI_AIC7XXX is not set |
297 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 505 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
298 | # CONFIG_SCSI_AIC79XX is not set | 506 | # CONFIG_SCSI_AIC79XX is not set |
507 | # CONFIG_SCSI_AIC94XX is not set | ||
299 | # CONFIG_SCSI_DPT_I2O is not set | 508 | # CONFIG_SCSI_DPT_I2O is not set |
509 | # CONFIG_SCSI_ADVANSYS is not set | ||
300 | # CONFIG_SCSI_IN2000 is not set | 510 | # CONFIG_SCSI_IN2000 is not set |
511 | # CONFIG_SCSI_ARCMSR is not set | ||
301 | # CONFIG_MEGARAID_NEWGEN is not set | 512 | # CONFIG_MEGARAID_NEWGEN is not set |
302 | # CONFIG_MEGARAID_LEGACY is not set | 513 | # CONFIG_MEGARAID_LEGACY is not set |
303 | # CONFIG_SCSI_SATA is not set | 514 | # CONFIG_MEGARAID_SAS is not set |
515 | # CONFIG_SCSI_HPTIOP is not set | ||
304 | # CONFIG_SCSI_BUSLOGIC is not set | 516 | # CONFIG_SCSI_BUSLOGIC is not set |
517 | # CONFIG_LIBFC is not set | ||
518 | # CONFIG_FCOE is not set | ||
305 | # CONFIG_SCSI_DMX3191D is not set | 519 | # CONFIG_SCSI_DMX3191D is not set |
306 | # CONFIG_SCSI_DTC3280 is not set | 520 | # CONFIG_SCSI_DTC3280 is not set |
307 | # CONFIG_SCSI_EATA is not set | 521 | # CONFIG_SCSI_EATA is not set |
@@ -314,20 +528,15 @@ CONFIG_CHR_DEV_SG=m | |||
314 | # CONFIG_SCSI_INIA100 is not set | 528 | # CONFIG_SCSI_INIA100 is not set |
315 | # CONFIG_SCSI_PPA is not set | 529 | # CONFIG_SCSI_PPA is not set |
316 | # CONFIG_SCSI_IMM is not set | 530 | # CONFIG_SCSI_IMM is not set |
531 | # CONFIG_SCSI_MVSAS is not set | ||
317 | # CONFIG_SCSI_NCR53C406A is not set | 532 | # CONFIG_SCSI_NCR53C406A is not set |
533 | # CONFIG_SCSI_STEX is not set | ||
318 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 534 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
319 | # CONFIG_SCSI_IPR is not set | ||
320 | # CONFIG_SCSI_PAS16 is not set | 535 | # CONFIG_SCSI_PAS16 is not set |
321 | # CONFIG_SCSI_PSI240I is not set | ||
322 | # CONFIG_SCSI_QLOGIC_FAS is not set | 536 | # CONFIG_SCSI_QLOGIC_FAS is not set |
323 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
324 | # CONFIG_SCSI_QLOGIC_1280 is not set | 537 | # CONFIG_SCSI_QLOGIC_1280 is not set |
325 | CONFIG_SCSI_QLA2XXX=m | 538 | # CONFIG_SCSI_QLA_FC is not set |
326 | # CONFIG_SCSI_QLA21XX is not set | 539 | # CONFIG_SCSI_QLA_ISCSI is not set |
327 | # CONFIG_SCSI_QLA22XX is not set | ||
328 | # CONFIG_SCSI_QLA2300 is not set | ||
329 | # CONFIG_SCSI_QLA2322 is not set | ||
330 | # CONFIG_SCSI_QLA6312 is not set | ||
331 | # CONFIG_SCSI_LPFC is not set | 540 | # CONFIG_SCSI_LPFC is not set |
332 | # CONFIG_SCSI_SYM53C416 is not set | 541 | # CONFIG_SCSI_SYM53C416 is not set |
333 | # CONFIG_SCSI_DC395x is not set | 542 | # CONFIG_SCSI_DC395x is not set |
@@ -336,123 +545,57 @@ CONFIG_SCSI_QLA2XXX=m | |||
336 | # CONFIG_SCSI_U14_34F is not set | 545 | # CONFIG_SCSI_U14_34F is not set |
337 | # CONFIG_SCSI_NSP32 is not set | 546 | # CONFIG_SCSI_NSP32 is not set |
338 | # CONFIG_SCSI_DEBUG is not set | 547 | # CONFIG_SCSI_DEBUG is not set |
339 | 548 | # CONFIG_SCSI_SRP is not set | |
340 | # | 549 | # CONFIG_SCSI_DH is not set |
341 | # Multi-device support (RAID and LVM) | 550 | # CONFIG_ATA is not set |
342 | # | ||
343 | # CONFIG_MD is not set | 551 | # CONFIG_MD is not set |
344 | |||
345 | # | ||
346 | # Fusion MPT device support | ||
347 | # | ||
348 | # CONFIG_FUSION is not set | 552 | # CONFIG_FUSION is not set |
349 | # CONFIG_FUSION_SPI is not set | ||
350 | # CONFIG_FUSION_FC is not set | ||
351 | 553 | ||
352 | # | 554 | # |
353 | # IEEE 1394 (FireWire) support | 555 | # IEEE 1394 (FireWire) support |
354 | # | 556 | # |
355 | # CONFIG_IEEE1394 is not set | ||
356 | 557 | ||
357 | # | 558 | # |
358 | # I2O device support | 559 | # Enable only one of the two stacks, unless you know what you are doing |
359 | # | 560 | # |
561 | # CONFIG_FIREWIRE is not set | ||
562 | # CONFIG_IEEE1394 is not set | ||
360 | # CONFIG_I2O is not set | 563 | # CONFIG_I2O is not set |
361 | |||
362 | # | ||
363 | # Networking support | ||
364 | # | ||
365 | CONFIG_NET=y | ||
366 | |||
367 | # | ||
368 | # Networking options | ||
369 | # | ||
370 | CONFIG_PACKET=y | ||
371 | # CONFIG_PACKET_MMAP is not set | ||
372 | CONFIG_UNIX=y | ||
373 | # CONFIG_NET_KEY is not set | ||
374 | CONFIG_INET=y | ||
375 | # CONFIG_IP_MULTICAST is not set | ||
376 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
377 | # CONFIG_IP_PNP is not set | ||
378 | # CONFIG_NET_IPIP is not set | ||
379 | # CONFIG_NET_IPGRE is not set | ||
380 | # CONFIG_ARPD is not set | ||
381 | # CONFIG_SYN_COOKIES is not set | ||
382 | # CONFIG_INET_AH is not set | ||
383 | # CONFIG_INET_ESP is not set | ||
384 | # CONFIG_INET_IPCOMP is not set | ||
385 | # CONFIG_INET_TUNNEL is not set | ||
386 | CONFIG_IP_TCPDIAG=y | ||
387 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
388 | # CONFIG_IPV6 is not set | ||
389 | # CONFIG_NETFILTER is not set | ||
390 | |||
391 | # | ||
392 | # SCTP Configuration (EXPERIMENTAL) | ||
393 | # | ||
394 | # CONFIG_IP_SCTP is not set | ||
395 | # CONFIG_ATM is not set | ||
396 | # CONFIG_BRIDGE is not set | ||
397 | # CONFIG_VLAN_8021Q is not set | ||
398 | # CONFIG_DECNET is not set | ||
399 | # CONFIG_LLC2 is not set | ||
400 | # CONFIG_IPX is not set | ||
401 | # CONFIG_ATALK is not set | ||
402 | # CONFIG_X25 is not set | ||
403 | # CONFIG_LAPB is not set | ||
404 | # CONFIG_NET_DIVERT is not set | ||
405 | # CONFIG_ECONET is not set | ||
406 | # CONFIG_WAN_ROUTER is not set | ||
407 | |||
408 | # | ||
409 | # QoS and/or fair queueing | ||
410 | # | ||
411 | # CONFIG_NET_SCHED is not set | ||
412 | # CONFIG_NET_CLS_ROUTE is not set | ||
413 | |||
414 | # | ||
415 | # Network testing | ||
416 | # | ||
417 | # CONFIG_NET_PKTGEN is not set | ||
418 | # CONFIG_NETPOLL is not set | ||
419 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
420 | # CONFIG_HAMRADIO is not set | ||
421 | # CONFIG_IRDA is not set | ||
422 | # CONFIG_BT is not set | ||
423 | CONFIG_NETDEVICES=y | 564 | CONFIG_NETDEVICES=y |
424 | # CONFIG_DUMMY is not set | 565 | # CONFIG_DUMMY is not set |
425 | # CONFIG_BONDING is not set | 566 | # CONFIG_BONDING is not set |
567 | # CONFIG_MACVLAN is not set | ||
426 | # CONFIG_EQUALIZER is not set | 568 | # CONFIG_EQUALIZER is not set |
427 | # CONFIG_TUN is not set | 569 | # CONFIG_TUN is not set |
428 | 570 | # CONFIG_VETH is not set | |
429 | # | ||
430 | # ARCnet devices | ||
431 | # | ||
432 | # CONFIG_ARCNET is not set | 571 | # CONFIG_ARCNET is not set |
433 | 572 | # CONFIG_PHYLIB is not set | |
434 | # | ||
435 | # Ethernet (10 or 100Mbit) | ||
436 | # | ||
437 | CONFIG_NET_ETHERNET=y | 573 | CONFIG_NET_ETHERNET=y |
438 | # CONFIG_MII is not set | 574 | # CONFIG_MII is not set |
575 | # CONFIG_AX88796 is not set | ||
439 | # CONFIG_HAPPYMEAL is not set | 576 | # CONFIG_HAPPYMEAL is not set |
440 | # CONFIG_SUNGEM is not set | 577 | # CONFIG_SUNGEM is not set |
578 | # CONFIG_CASSINI is not set | ||
441 | # CONFIG_NET_VENDOR_3COM is not set | 579 | # CONFIG_NET_VENDOR_3COM is not set |
442 | # CONFIG_LANCE is not set | 580 | # CONFIG_LANCE is not set |
443 | # CONFIG_NET_VENDOR_SMC is not set | 581 | # CONFIG_NET_VENDOR_SMC is not set |
444 | # CONFIG_SMC91X is not set | 582 | # CONFIG_SMC91X is not set |
445 | # CONFIG_DM9000 is not set | 583 | # CONFIG_DM9000 is not set |
584 | # CONFIG_SMC911X is not set | ||
585 | # CONFIG_SMSC911X is not set | ||
446 | # CONFIG_NET_VENDOR_RACAL is not set | 586 | # CONFIG_NET_VENDOR_RACAL is not set |
447 | |||
448 | # | ||
449 | # Tulip family network device support | ||
450 | # | ||
451 | # CONFIG_NET_TULIP is not set | 587 | # CONFIG_NET_TULIP is not set |
452 | # CONFIG_AT1700 is not set | 588 | # CONFIG_AT1700 is not set |
453 | # CONFIG_DEPCA is not set | 589 | # CONFIG_DEPCA is not set |
454 | # CONFIG_HP100 is not set | 590 | # CONFIG_HP100 is not set |
455 | # CONFIG_NET_ISA is not set | 591 | # CONFIG_NET_ISA is not set |
592 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
593 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
594 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
595 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
596 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
597 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
598 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
456 | CONFIG_NET_PCI=y | 599 | CONFIG_NET_PCI=y |
457 | # CONFIG_PCNET32 is not set | 600 | # CONFIG_PCNET32 is not set |
458 | # CONFIG_AMD8111_ETH is not set | 601 | # CONFIG_AMD8111_ETH is not set |
@@ -462,56 +605,69 @@ CONFIG_NET_PCI=y | |||
462 | # CONFIG_B44 is not set | 605 | # CONFIG_B44 is not set |
463 | # CONFIG_FORCEDETH is not set | 606 | # CONFIG_FORCEDETH is not set |
464 | CONFIG_CS89x0=y | 607 | CONFIG_CS89x0=y |
465 | # CONFIG_DGRS is not set | 608 | CONFIG_CS89x0_NOEEPROM=y |
466 | # CONFIG_EEPRO100 is not set | ||
467 | # CONFIG_E100 is not set | 609 | # CONFIG_E100 is not set |
468 | # CONFIG_FEALNX is not set | 610 | # CONFIG_FEALNX is not set |
469 | # CONFIG_NATSEMI is not set | 611 | # CONFIG_NATSEMI is not set |
470 | # CONFIG_NE2K_PCI is not set | 612 | # CONFIG_NE2K_PCI is not set |
471 | # CONFIG_8139CP is not set | 613 | # CONFIG_8139CP is not set |
472 | # CONFIG_8139TOO is not set | 614 | # CONFIG_8139TOO is not set |
615 | # CONFIG_R6040 is not set | ||
473 | # CONFIG_SIS900 is not set | 616 | # CONFIG_SIS900 is not set |
474 | # CONFIG_EPIC100 is not set | 617 | # CONFIG_EPIC100 is not set |
618 | # CONFIG_SMSC9420 is not set | ||
475 | # CONFIG_SUNDANCE is not set | 619 | # CONFIG_SUNDANCE is not set |
476 | # CONFIG_TLAN is not set | 620 | # CONFIG_TLAN is not set |
477 | # CONFIG_VIA_RHINE is not set | 621 | # CONFIG_VIA_RHINE is not set |
622 | # CONFIG_SC92031 is not set | ||
478 | # CONFIG_NET_POCKET is not set | 623 | # CONFIG_NET_POCKET is not set |
479 | 624 | # CONFIG_ATL2 is not set | |
480 | # | 625 | CONFIG_NETDEV_1000=y |
481 | # Ethernet (1000 Mbit) | ||
482 | # | ||
483 | # CONFIG_ACENIC is not set | 626 | # CONFIG_ACENIC is not set |
484 | # CONFIG_DL2K is not set | 627 | # CONFIG_DL2K is not set |
485 | # CONFIG_E1000 is not set | 628 | # CONFIG_E1000 is not set |
629 | # CONFIG_E1000E is not set | ||
630 | # CONFIG_IP1000 is not set | ||
631 | # CONFIG_IGB is not set | ||
486 | # CONFIG_NS83820 is not set | 632 | # CONFIG_NS83820 is not set |
487 | # CONFIG_HAMACHI is not set | 633 | # CONFIG_HAMACHI is not set |
488 | # CONFIG_YELLOWFIN is not set | 634 | # CONFIG_YELLOWFIN is not set |
489 | # CONFIG_R8169 is not set | 635 | # CONFIG_R8169 is not set |
636 | # CONFIG_SIS190 is not set | ||
490 | # CONFIG_SKGE is not set | 637 | # CONFIG_SKGE is not set |
491 | # CONFIG_SK98LIN is not set | 638 | # CONFIG_SKY2 is not set |
492 | # CONFIG_VIA_VELOCITY is not set | 639 | # CONFIG_VIA_VELOCITY is not set |
493 | # CONFIG_TIGON3 is not set | 640 | # CONFIG_TIGON3 is not set |
494 | # CONFIG_BNX2 is not set | 641 | # CONFIG_BNX2 is not set |
495 | 642 | # CONFIG_QLA3XXX is not set | |
496 | # | 643 | # CONFIG_ATL1 is not set |
497 | # Ethernet (10000 Mbit) | 644 | # CONFIG_ATL1E is not set |
498 | # | 645 | # CONFIG_JME is not set |
646 | CONFIG_NETDEV_10000=y | ||
647 | # CONFIG_CHELSIO_T1 is not set | ||
648 | CONFIG_CHELSIO_T3_DEPENDS=y | ||
649 | # CONFIG_CHELSIO_T3 is not set | ||
650 | # CONFIG_ENIC is not set | ||
651 | # CONFIG_IXGBE is not set | ||
499 | # CONFIG_IXGB is not set | 652 | # CONFIG_IXGB is not set |
500 | # CONFIG_S2IO is not set | 653 | # CONFIG_S2IO is not set |
501 | 654 | # CONFIG_MYRI10GE is not set | |
502 | # | 655 | # CONFIG_NETXEN_NIC is not set |
503 | # Token Ring devices | 656 | # CONFIG_NIU is not set |
504 | # | 657 | # CONFIG_MLX4_EN is not set |
658 | # CONFIG_MLX4_CORE is not set | ||
659 | # CONFIG_TEHUTI is not set | ||
660 | # CONFIG_BNX2X is not set | ||
661 | # CONFIG_QLGE is not set | ||
662 | # CONFIG_SFC is not set | ||
505 | # CONFIG_TR is not set | 663 | # CONFIG_TR is not set |
506 | 664 | ||
507 | # | 665 | # |
508 | # Wireless LAN (non-hamradio) | 666 | # Wireless LAN |
509 | # | ||
510 | # CONFIG_NET_RADIO is not set | ||
511 | |||
512 | # | ||
513 | # Wan interfaces | ||
514 | # | 667 | # |
668 | # CONFIG_WLAN_PRE80211 is not set | ||
669 | # CONFIG_WLAN_80211 is not set | ||
670 | # CONFIG_IWLWIFI_LEDS is not set | ||
515 | # CONFIG_WAN is not set | 671 | # CONFIG_WAN is not set |
516 | # CONFIG_FDDI is not set | 672 | # CONFIG_FDDI is not set |
517 | # CONFIG_HIPPI is not set | 673 | # CONFIG_HIPPI is not set |
@@ -519,18 +675,17 @@ CONFIG_CS89x0=y | |||
519 | # CONFIG_PPP is not set | 675 | # CONFIG_PPP is not set |
520 | # CONFIG_SLIP is not set | 676 | # CONFIG_SLIP is not set |
521 | # CONFIG_NET_FC is not set | 677 | # CONFIG_NET_FC is not set |
522 | # CONFIG_SHAPER is not set | ||
523 | # CONFIG_NETCONSOLE is not set | 678 | # CONFIG_NETCONSOLE is not set |
524 | 679 | # CONFIG_NETPOLL is not set | |
525 | # | 680 | # CONFIG_NET_POLL_CONTROLLER is not set |
526 | # ISDN subsystem | ||
527 | # | ||
528 | # CONFIG_ISDN is not set | 681 | # CONFIG_ISDN is not set |
529 | 682 | ||
530 | # | 683 | # |
531 | # Input device support | 684 | # Input device support |
532 | # | 685 | # |
533 | CONFIG_INPUT=y | 686 | CONFIG_INPUT=y |
687 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
688 | # CONFIG_INPUT_POLLDEV is not set | ||
534 | 689 | ||
535 | # | 690 | # |
536 | # Userland interfaces | 691 | # Userland interfaces |
@@ -540,7 +695,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
540 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 695 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
541 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 696 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
542 | # CONFIG_INPUT_JOYDEV is not set | 697 | # CONFIG_INPUT_JOYDEV is not set |
543 | # CONFIG_INPUT_TSDEV is not set | ||
544 | # CONFIG_INPUT_EVDEV is not set | 698 | # CONFIG_INPUT_EVDEV is not set |
545 | # CONFIG_INPUT_EVBUG is not set | 699 | # CONFIG_INPUT_EVBUG is not set |
546 | 700 | ||
@@ -553,14 +707,25 @@ CONFIG_KEYBOARD_ATKBD=y | |||
553 | # CONFIG_KEYBOARD_LKKBD is not set | 707 | # CONFIG_KEYBOARD_LKKBD is not set |
554 | # CONFIG_KEYBOARD_XTKBD is not set | 708 | # CONFIG_KEYBOARD_XTKBD is not set |
555 | # CONFIG_KEYBOARD_NEWTON is not set | 709 | # CONFIG_KEYBOARD_NEWTON is not set |
710 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
556 | CONFIG_INPUT_MOUSE=y | 711 | CONFIG_INPUT_MOUSE=y |
557 | CONFIG_MOUSE_PS2=y | 712 | CONFIG_MOUSE_PS2=y |
713 | CONFIG_MOUSE_PS2_ALPS=y | ||
714 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
715 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
716 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
717 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
718 | # CONFIG_MOUSE_PS2_ELANTECH is not set | ||
719 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
558 | # CONFIG_MOUSE_SERIAL is not set | 720 | # CONFIG_MOUSE_SERIAL is not set |
721 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
722 | # CONFIG_MOUSE_BCM5974 is not set | ||
559 | # CONFIG_MOUSE_INPORT is not set | 723 | # CONFIG_MOUSE_INPORT is not set |
560 | # CONFIG_MOUSE_LOGIBM is not set | 724 | # CONFIG_MOUSE_LOGIBM is not set |
561 | # CONFIG_MOUSE_PC110PAD is not set | 725 | # CONFIG_MOUSE_PC110PAD is not set |
562 | # CONFIG_MOUSE_VSXXXAA is not set | 726 | # CONFIG_MOUSE_VSXXXAA is not set |
563 | # CONFIG_INPUT_JOYSTICK is not set | 727 | # CONFIG_INPUT_JOYSTICK is not set |
728 | # CONFIG_INPUT_TABLET is not set | ||
564 | # CONFIG_INPUT_TOUCHSCREEN is not set | 729 | # CONFIG_INPUT_TOUCHSCREEN is not set |
565 | # CONFIG_INPUT_MISC is not set | 730 | # CONFIG_INPUT_MISC is not set |
566 | 731 | ||
@@ -580,16 +745,22 @@ CONFIG_SERIO_LIBPS2=y | |||
580 | # Character devices | 745 | # Character devices |
581 | # | 746 | # |
582 | CONFIG_VT=y | 747 | CONFIG_VT=y |
748 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
583 | CONFIG_VT_CONSOLE=y | 749 | CONFIG_VT_CONSOLE=y |
584 | CONFIG_HW_CONSOLE=y | 750 | CONFIG_HW_CONSOLE=y |
751 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
752 | CONFIG_DEVKMEM=y | ||
585 | # CONFIG_SERIAL_NONSTANDARD is not set | 753 | # CONFIG_SERIAL_NONSTANDARD is not set |
754 | # CONFIG_NOZOMI is not set | ||
586 | 755 | ||
587 | # | 756 | # |
588 | # Serial drivers | 757 | # Serial drivers |
589 | # | 758 | # |
590 | CONFIG_SERIAL_8250=y | 759 | CONFIG_SERIAL_8250=y |
591 | CONFIG_SERIAL_8250_CONSOLE=y | 760 | CONFIG_SERIAL_8250_CONSOLE=y |
761 | CONFIG_SERIAL_8250_PCI=y | ||
592 | CONFIG_SERIAL_8250_NR_UARTS=4 | 762 | CONFIG_SERIAL_8250_NR_UARTS=4 |
763 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
593 | # CONFIG_SERIAL_8250_EXTENDED is not set | 764 | # CONFIG_SERIAL_8250_EXTENDED is not set |
594 | 765 | ||
595 | # | 766 | # |
@@ -599,90 +770,122 @@ CONFIG_SERIAL_CORE=y | |||
599 | CONFIG_SERIAL_CORE_CONSOLE=y | 770 | CONFIG_SERIAL_CORE_CONSOLE=y |
600 | # CONFIG_SERIAL_JSM is not set | 771 | # CONFIG_SERIAL_JSM is not set |
601 | CONFIG_UNIX98_PTYS=y | 772 | CONFIG_UNIX98_PTYS=y |
773 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
602 | CONFIG_LEGACY_PTYS=y | 774 | CONFIG_LEGACY_PTYS=y |
603 | CONFIG_LEGACY_PTY_COUNT=256 | 775 | CONFIG_LEGACY_PTY_COUNT=256 |
604 | CONFIG_PRINTER=m | 776 | CONFIG_PRINTER=m |
605 | # CONFIG_LP_CONSOLE is not set | 777 | # CONFIG_LP_CONSOLE is not set |
606 | # CONFIG_PPDEV is not set | 778 | # CONFIG_PPDEV is not set |
607 | # CONFIG_TIPAR is not set | ||
608 | |||
609 | # | ||
610 | # IPMI | ||
611 | # | ||
612 | # CONFIG_IPMI_HANDLER is not set | 779 | # CONFIG_IPMI_HANDLER is not set |
613 | 780 | CONFIG_HW_RANDOM=m | |
614 | # | ||
615 | # Watchdog Cards | ||
616 | # | ||
617 | # CONFIG_WATCHDOG is not set | ||
618 | # CONFIG_NVRAM is not set | 781 | # CONFIG_NVRAM is not set |
619 | CONFIG_RTC=y | ||
620 | # CONFIG_DTLK is not set | 782 | # CONFIG_DTLK is not set |
621 | # CONFIG_R3964 is not set | 783 | # CONFIG_R3964 is not set |
622 | # CONFIG_APPLICOM is not set | 784 | # CONFIG_APPLICOM is not set |
623 | |||
624 | # | ||
625 | # Ftape, the floppy tape device driver | ||
626 | # | ||
627 | # CONFIG_DRM is not set | ||
628 | # CONFIG_RAW_DRIVER is not set | 785 | # CONFIG_RAW_DRIVER is not set |
786 | # CONFIG_TCG_TPM is not set | ||
787 | CONFIG_DEVPORT=y | ||
788 | # CONFIG_I2C is not set | ||
789 | # CONFIG_SPI is not set | ||
790 | # CONFIG_W1 is not set | ||
791 | # CONFIG_POWER_SUPPLY is not set | ||
792 | # CONFIG_HWMON is not set | ||
793 | # CONFIG_THERMAL is not set | ||
794 | # CONFIG_THERMAL_HWMON is not set | ||
795 | # CONFIG_WATCHDOG is not set | ||
796 | CONFIG_SSB_POSSIBLE=y | ||
629 | 797 | ||
630 | # | 798 | # |
631 | # TPM devices | 799 | # Sonics Silicon Backplane |
632 | # | 800 | # |
633 | # CONFIG_TCG_TPM is not set | 801 | # CONFIG_SSB is not set |
634 | 802 | ||
635 | # | 803 | # |
636 | # I2C support | 804 | # Multifunction device drivers |
637 | # | 805 | # |
638 | # CONFIG_I2C is not set | 806 | # CONFIG_MFD_CORE is not set |
807 | # CONFIG_MFD_SM501 is not set | ||
808 | # CONFIG_HTC_PASIC3 is not set | ||
809 | # CONFIG_MFD_TMIO is not set | ||
639 | 810 | ||
640 | # | 811 | # |
641 | # Misc devices | 812 | # Multimedia devices |
642 | # | 813 | # |
643 | 814 | ||
644 | # | 815 | # |
645 | # Multimedia devices | 816 | # Multimedia core support |
646 | # | 817 | # |
647 | # CONFIG_VIDEO_DEV is not set | 818 | # CONFIG_VIDEO_DEV is not set |
819 | # CONFIG_DVB_CORE is not set | ||
820 | # CONFIG_VIDEO_MEDIA is not set | ||
648 | 821 | ||
649 | # | 822 | # |
650 | # Digital Video Broadcasting Devices | 823 | # Multimedia drivers |
651 | # | 824 | # |
652 | # CONFIG_DVB is not set | 825 | # CONFIG_DAB is not set |
653 | 826 | ||
654 | # | 827 | # |
655 | # Graphics support | 828 | # Graphics support |
656 | # | 829 | # |
830 | # CONFIG_DRM is not set | ||
831 | # CONFIG_VGASTATE is not set | ||
832 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
657 | CONFIG_FB=y | 833 | CONFIG_FB=y |
834 | # CONFIG_FIRMWARE_EDID is not set | ||
835 | # CONFIG_FB_DDC is not set | ||
836 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
658 | CONFIG_FB_CFB_FILLRECT=y | 837 | CONFIG_FB_CFB_FILLRECT=y |
659 | CONFIG_FB_CFB_COPYAREA=y | 838 | CONFIG_FB_CFB_COPYAREA=y |
660 | CONFIG_FB_CFB_IMAGEBLIT=y | 839 | CONFIG_FB_CFB_IMAGEBLIT=y |
661 | CONFIG_FB_SOFT_CURSOR=y | 840 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
841 | # CONFIG_FB_SYS_FILLRECT is not set | ||
842 | # CONFIG_FB_SYS_COPYAREA is not set | ||
843 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
844 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
845 | # CONFIG_FB_SYS_FOPS is not set | ||
846 | # CONFIG_FB_SVGALIB is not set | ||
662 | # CONFIG_FB_MACMODES is not set | 847 | # CONFIG_FB_MACMODES is not set |
848 | # CONFIG_FB_BACKLIGHT is not set | ||
663 | # CONFIG_FB_MODE_HELPERS is not set | 849 | # CONFIG_FB_MODE_HELPERS is not set |
664 | # CONFIG_FB_TILEBLITTING is not set | 850 | # CONFIG_FB_TILEBLITTING is not set |
851 | |||
852 | # | ||
853 | # Frame buffer hardware drivers | ||
854 | # | ||
665 | # CONFIG_FB_CIRRUS is not set | 855 | # CONFIG_FB_CIRRUS is not set |
666 | # CONFIG_FB_PM2 is not set | 856 | # CONFIG_FB_PM2 is not set |
667 | CONFIG_FB_CYBER2000=y | 857 | CONFIG_FB_CYBER2000=y |
668 | # CONFIG_FB_ASILIANT is not set | 858 | # CONFIG_FB_ASILIANT is not set |
669 | # CONFIG_FB_IMSTT is not set | 859 | # CONFIG_FB_IMSTT is not set |
860 | # CONFIG_FB_S1D13XXX is not set | ||
670 | # CONFIG_FB_NVIDIA is not set | 861 | # CONFIG_FB_NVIDIA is not set |
671 | # CONFIG_FB_RIVA is not set | 862 | # CONFIG_FB_RIVA is not set |
672 | # CONFIG_FB_MATROX is not set | 863 | # CONFIG_FB_MATROX is not set |
673 | # CONFIG_FB_RADEON_OLD is not set | ||
674 | # CONFIG_FB_RADEON is not set | 864 | # CONFIG_FB_RADEON is not set |
675 | # CONFIG_FB_ATY128 is not set | 865 | # CONFIG_FB_ATY128 is not set |
676 | # CONFIG_FB_ATY is not set | 866 | # CONFIG_FB_ATY is not set |
867 | # CONFIG_FB_S3 is not set | ||
677 | # CONFIG_FB_SAVAGE is not set | 868 | # CONFIG_FB_SAVAGE is not set |
678 | # CONFIG_FB_SIS is not set | 869 | # CONFIG_FB_SIS is not set |
870 | # CONFIG_FB_VIA is not set | ||
679 | # CONFIG_FB_NEOMAGIC is not set | 871 | # CONFIG_FB_NEOMAGIC is not set |
680 | # CONFIG_FB_KYRO is not set | 872 | # CONFIG_FB_KYRO is not set |
681 | # CONFIG_FB_3DFX is not set | 873 | # CONFIG_FB_3DFX is not set |
682 | # CONFIG_FB_VOODOO1 is not set | 874 | # CONFIG_FB_VOODOO1 is not set |
875 | # CONFIG_FB_VT8623 is not set | ||
683 | # CONFIG_FB_TRIDENT is not set | 876 | # CONFIG_FB_TRIDENT is not set |
684 | # CONFIG_FB_S1D13XXX is not set | 877 | # CONFIG_FB_ARK is not set |
878 | # CONFIG_FB_PM3 is not set | ||
879 | # CONFIG_FB_CARMINE is not set | ||
685 | # CONFIG_FB_VIRTUAL is not set | 880 | # CONFIG_FB_VIRTUAL is not set |
881 | # CONFIG_FB_METRONOME is not set | ||
882 | # CONFIG_FB_MB862XX is not set | ||
883 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
884 | |||
885 | # | ||
886 | # Display device support | ||
887 | # | ||
888 | # CONFIG_DISPLAY_SUPPORT is not set | ||
686 | 889 | ||
687 | # | 890 | # |
688 | # Console display driver support | 891 | # Console display driver support |
@@ -691,126 +894,132 @@ CONFIG_FB_CYBER2000=y | |||
691 | # CONFIG_MDA_CONSOLE is not set | 894 | # CONFIG_MDA_CONSOLE is not set |
692 | CONFIG_DUMMY_CONSOLE=y | 895 | CONFIG_DUMMY_CONSOLE=y |
693 | CONFIG_FRAMEBUFFER_CONSOLE=y | 896 | CONFIG_FRAMEBUFFER_CONSOLE=y |
897 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
898 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
694 | # CONFIG_FONTS is not set | 899 | # CONFIG_FONTS is not set |
695 | CONFIG_FONT_8x8=y | 900 | CONFIG_FONT_8x8=y |
696 | CONFIG_FONT_8x16=y | 901 | CONFIG_FONT_8x16=y |
697 | |||
698 | # | ||
699 | # Logo configuration | ||
700 | # | ||
701 | CONFIG_LOGO=y | 902 | CONFIG_LOGO=y |
702 | # CONFIG_LOGO_LINUX_MONO is not set | 903 | # CONFIG_LOGO_LINUX_MONO is not set |
703 | # CONFIG_LOGO_LINUX_VGA16 is not set | 904 | # CONFIG_LOGO_LINUX_VGA16 is not set |
704 | CONFIG_LOGO_LINUX_CLUT224=y | 905 | CONFIG_LOGO_LINUX_CLUT224=y |
705 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
706 | |||
707 | # | ||
708 | # Sound | ||
709 | # | ||
710 | CONFIG_SOUND=m | 906 | CONFIG_SOUND=m |
711 | 907 | CONFIG_SOUND_OSS_CORE=y | |
712 | # | ||
713 | # Advanced Linux Sound Architecture | ||
714 | # | ||
715 | # CONFIG_SND is not set | 908 | # CONFIG_SND is not set |
716 | |||
717 | # | ||
718 | # Open Sound System | ||
719 | # | ||
720 | CONFIG_SOUND_PRIME=m | 909 | CONFIG_SOUND_PRIME=m |
721 | # CONFIG_SOUND_BT878 is not set | ||
722 | # CONFIG_SOUND_CMPCI is not set | ||
723 | # CONFIG_SOUND_EMU10K1 is not set | ||
724 | # CONFIG_SOUND_FUSION is not set | ||
725 | # CONFIG_SOUND_CS4281 is not set | ||
726 | # CONFIG_SOUND_ES1370 is not set | ||
727 | # CONFIG_SOUND_ES1371 is not set | ||
728 | # CONFIG_SOUND_ESSSOLO1 is not set | ||
729 | # CONFIG_SOUND_MAESTRO is not set | ||
730 | # CONFIG_SOUND_MAESTRO3 is not set | ||
731 | # CONFIG_SOUND_ICH is not set | ||
732 | # CONFIG_SOUND_SONICVIBES is not set | ||
733 | # CONFIG_SOUND_TRIDENT is not set | ||
734 | # CONFIG_SOUND_MSNDCLAS is not set | 910 | # CONFIG_SOUND_MSNDCLAS is not set |
735 | # CONFIG_SOUND_MSNDPIN is not set | 911 | # CONFIG_SOUND_MSNDPIN is not set |
736 | # CONFIG_SOUND_VIA82CXXX is not set | ||
737 | CONFIG_SOUND_OSS=m | 912 | CONFIG_SOUND_OSS=m |
738 | # CONFIG_SOUND_TRACEINIT is not set | 913 | # CONFIG_SOUND_TRACEINIT is not set |
739 | # CONFIG_SOUND_DMAP is not set | 914 | # CONFIG_SOUND_DMAP is not set |
740 | # CONFIG_SOUND_AD1816 is not set | ||
741 | # CONFIG_SOUND_AD1889 is not set | ||
742 | # CONFIG_SOUND_SGALAXY is not set | ||
743 | CONFIG_SOUND_ADLIB=m | ||
744 | # CONFIG_SOUND_ACI_MIXER is not set | ||
745 | # CONFIG_SOUND_CS4232 is not set | ||
746 | # CONFIG_SOUND_SSCAPE is not set | 915 | # CONFIG_SOUND_SSCAPE is not set |
747 | # CONFIG_SOUND_GUS is not set | ||
748 | # CONFIG_SOUND_VMIDI is not set | 916 | # CONFIG_SOUND_VMIDI is not set |
749 | # CONFIG_SOUND_TRIX is not set | 917 | # CONFIG_SOUND_TRIX is not set |
750 | # CONFIG_SOUND_MSS is not set | 918 | # CONFIG_SOUND_MSS is not set |
751 | # CONFIG_SOUND_MPU401 is not set | 919 | # CONFIG_SOUND_MPU401 is not set |
752 | # CONFIG_SOUND_NM256 is not set | ||
753 | # CONFIG_SOUND_MAD16 is not set | ||
754 | # CONFIG_SOUND_PAS is not set | 920 | # CONFIG_SOUND_PAS is not set |
755 | # CONFIG_SOUND_PSS is not set | 921 | # CONFIG_SOUND_PSS is not set |
756 | CONFIG_SOUND_SB=m | 922 | CONFIG_SOUND_SB=m |
757 | # CONFIG_SOUND_AWE32_SYNTH is not set | ||
758 | # CONFIG_SOUND_WAVEFRONT is not set | ||
759 | # CONFIG_SOUND_MAUI is not set | ||
760 | # CONFIG_SOUND_YM3812 is not set | 923 | # CONFIG_SOUND_YM3812 is not set |
761 | # CONFIG_SOUND_OPL3SA1 is not set | ||
762 | # CONFIG_SOUND_OPL3SA2 is not set | ||
763 | # CONFIG_SOUND_YMFPCI is not set | ||
764 | # CONFIG_SOUND_UART6850 is not set | 924 | # CONFIG_SOUND_UART6850 is not set |
765 | # CONFIG_SOUND_AEDSP16 is not set | 925 | # CONFIG_SOUND_AEDSP16 is not set |
766 | # CONFIG_SOUND_KAHLUA is not set | 926 | # CONFIG_SOUND_KAHLUA is not set |
767 | # CONFIG_SOUND_ALI5455 is not set | 927 | CONFIG_HID_SUPPORT=y |
768 | # CONFIG_SOUND_FORTE is not set | 928 | CONFIG_HID=y |
769 | # CONFIG_SOUND_RME96XX is not set | 929 | # CONFIG_HID_DEBUG is not set |
770 | # CONFIG_SOUND_AD1980 is not set | 930 | # CONFIG_HIDRAW is not set |
931 | # CONFIG_HID_PID is not set | ||
771 | 932 | ||
772 | # | 933 | # |
773 | # USB support | 934 | # Special HID drivers |
774 | # | 935 | # |
936 | CONFIG_HID_COMPAT=y | ||
937 | CONFIG_USB_SUPPORT=y | ||
775 | CONFIG_USB_ARCH_HAS_HCD=y | 938 | CONFIG_USB_ARCH_HAS_HCD=y |
776 | CONFIG_USB_ARCH_HAS_OHCI=y | 939 | CONFIG_USB_ARCH_HAS_OHCI=y |
940 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
777 | # CONFIG_USB is not set | 941 | # CONFIG_USB is not set |
778 | 942 | ||
779 | # | 943 | # |
780 | # USB Gadget Support | 944 | # Enable Host or Gadget support to see Inventra options |
781 | # | 945 | # |
782 | # CONFIG_USB_GADGET is not set | ||
783 | 946 | ||
784 | # | 947 | # |
785 | # MMC/SD Card support | 948 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; |
786 | # | 949 | # |
950 | # CONFIG_USB_GADGET is not set | ||
951 | # CONFIG_UWB is not set | ||
787 | # CONFIG_MMC is not set | 952 | # CONFIG_MMC is not set |
953 | # CONFIG_MEMSTICK is not set | ||
954 | # CONFIG_ACCESSIBILITY is not set | ||
955 | # CONFIG_NEW_LEDS is not set | ||
956 | CONFIG_RTC_LIB=y | ||
957 | CONFIG_RTC_CLASS=y | ||
958 | CONFIG_RTC_HCTOSYS=y | ||
959 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
960 | # CONFIG_RTC_DEBUG is not set | ||
961 | |||
962 | # | ||
963 | # RTC interfaces | ||
964 | # | ||
965 | CONFIG_RTC_INTF_SYSFS=y | ||
966 | CONFIG_RTC_INTF_PROC=y | ||
967 | CONFIG_RTC_INTF_DEV=y | ||
968 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
969 | # CONFIG_RTC_DRV_TEST is not set | ||
970 | |||
971 | # | ||
972 | # SPI RTC drivers | ||
973 | # | ||
974 | |||
975 | # | ||
976 | # Platform RTC drivers | ||
977 | # | ||
978 | CONFIG_RTC_DRV_CMOS=y | ||
979 | # CONFIG_RTC_DRV_DS1286 is not set | ||
980 | # CONFIG_RTC_DRV_DS1511 is not set | ||
981 | # CONFIG_RTC_DRV_DS1553 is not set | ||
982 | # CONFIG_RTC_DRV_DS1742 is not set | ||
983 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
984 | # CONFIG_RTC_DRV_M48T86 is not set | ||
985 | # CONFIG_RTC_DRV_M48T35 is not set | ||
986 | # CONFIG_RTC_DRV_M48T59 is not set | ||
987 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
988 | # CONFIG_RTC_DRV_V3020 is not set | ||
989 | |||
990 | # | ||
991 | # on-CPU RTC drivers | ||
992 | # | ||
993 | # CONFIG_DMADEVICES is not set | ||
994 | # CONFIG_AUXDISPLAY is not set | ||
995 | # CONFIG_REGULATOR is not set | ||
996 | # CONFIG_UIO is not set | ||
788 | 997 | ||
789 | # | 998 | # |
790 | # File systems | 999 | # File systems |
791 | # | 1000 | # |
792 | CONFIG_EXT2_FS=y | 1001 | CONFIG_EXT2_FS=y |
793 | # CONFIG_EXT2_FS_XATTR is not set | 1002 | # CONFIG_EXT2_FS_XATTR is not set |
1003 | # CONFIG_EXT2_FS_XIP is not set | ||
794 | CONFIG_EXT3_FS=y | 1004 | CONFIG_EXT3_FS=y |
795 | CONFIG_EXT3_FS_XATTR=y | 1005 | CONFIG_EXT3_FS_XATTR=y |
796 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1006 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
797 | # CONFIG_EXT3_FS_SECURITY is not set | 1007 | # CONFIG_EXT3_FS_SECURITY is not set |
1008 | # CONFIG_EXT4_FS is not set | ||
798 | CONFIG_JBD=y | 1009 | CONFIG_JBD=y |
799 | # CONFIG_JBD_DEBUG is not set | ||
800 | CONFIG_FS_MBCACHE=y | 1010 | CONFIG_FS_MBCACHE=y |
801 | # CONFIG_REISERFS_FS is not set | 1011 | # CONFIG_REISERFS_FS is not set |
802 | # CONFIG_JFS_FS is not set | 1012 | # CONFIG_JFS_FS is not set |
803 | 1013 | # CONFIG_FS_POSIX_ACL is not set | |
804 | # | 1014 | CONFIG_FILE_LOCKING=y |
805 | # XFS support | ||
806 | # | ||
807 | # CONFIG_XFS_FS is not set | 1015 | # CONFIG_XFS_FS is not set |
808 | # CONFIG_MINIX_FS is not set | 1016 | # CONFIG_OCFS2_FS is not set |
809 | # CONFIG_ROMFS_FS is not set | ||
810 | # CONFIG_QUOTA is not set | ||
811 | CONFIG_DNOTIFY=y | 1017 | CONFIG_DNOTIFY=y |
1018 | # CONFIG_INOTIFY is not set | ||
1019 | # CONFIG_QUOTA is not set | ||
812 | # CONFIG_AUTOFS_FS is not set | 1020 | # CONFIG_AUTOFS_FS is not set |
813 | # CONFIG_AUTOFS4_FS is not set | 1021 | # CONFIG_AUTOFS4_FS is not set |
1022 | # CONFIG_FUSE_FS is not set | ||
814 | 1023 | ||
815 | # | 1024 | # |
816 | # CD-ROM/DVD Filesystems | 1025 | # CD-ROM/DVD Filesystems |
@@ -834,14 +1043,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
834 | # Pseudo filesystems | 1043 | # Pseudo filesystems |
835 | # | 1044 | # |
836 | CONFIG_PROC_FS=y | 1045 | CONFIG_PROC_FS=y |
1046 | CONFIG_PROC_SYSCTL=y | ||
1047 | CONFIG_PROC_PAGE_MONITOR=y | ||
837 | CONFIG_SYSFS=y | 1048 | CONFIG_SYSFS=y |
838 | CONFIG_DEVFS_FS=y | ||
839 | CONFIG_DEVFS_MOUNT=y | ||
840 | # CONFIG_DEVFS_DEBUG is not set | ||
841 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
842 | # CONFIG_TMPFS is not set | 1049 | # CONFIG_TMPFS is not set |
843 | # CONFIG_HUGETLB_PAGE is not set | 1050 | # CONFIG_HUGETLB_PAGE is not set |
844 | CONFIG_RAMFS=y | 1051 | # CONFIG_CONFIGFS_FS is not set |
845 | 1052 | ||
846 | # | 1053 | # |
847 | # Miscellaneous filesystems | 1054 | # Miscellaneous filesystems |
@@ -855,22 +1062,27 @@ CONFIG_RAMFS=y | |||
855 | # CONFIG_EFS_FS is not set | 1062 | # CONFIG_EFS_FS is not set |
856 | # CONFIG_CRAMFS is not set | 1063 | # CONFIG_CRAMFS is not set |
857 | # CONFIG_VXFS_FS is not set | 1064 | # CONFIG_VXFS_FS is not set |
1065 | # CONFIG_MINIX_FS is not set | ||
1066 | # CONFIG_OMFS_FS is not set | ||
858 | # CONFIG_HPFS_FS is not set | 1067 | # CONFIG_HPFS_FS is not set |
859 | # CONFIG_QNX4FS_FS is not set | 1068 | # CONFIG_QNX4FS_FS is not set |
1069 | # CONFIG_ROMFS_FS is not set | ||
860 | # CONFIG_SYSV_FS is not set | 1070 | # CONFIG_SYSV_FS is not set |
861 | # CONFIG_UFS_FS is not set | 1071 | # CONFIG_UFS_FS is not set |
862 | 1072 | CONFIG_NETWORK_FILESYSTEMS=y | |
863 | # | 1073 | CONFIG_NFS_FS=y |
864 | # Network File Systems | ||
865 | # | ||
866 | CONFIG_NFS_FS=m | ||
867 | CONFIG_NFS_V3=y | 1074 | CONFIG_NFS_V3=y |
1075 | # CONFIG_NFS_V3_ACL is not set | ||
868 | # CONFIG_NFS_V4 is not set | 1076 | # CONFIG_NFS_V4 is not set |
869 | # CONFIG_NFS_DIRECTIO is not set | 1077 | CONFIG_NFSD=m |
870 | # CONFIG_NFSD is not set | 1078 | # CONFIG_NFSD_V3 is not set |
871 | CONFIG_LOCKD=m | 1079 | # CONFIG_NFSD_V4 is not set |
1080 | CONFIG_LOCKD=y | ||
872 | CONFIG_LOCKD_V4=y | 1081 | CONFIG_LOCKD_V4=y |
873 | CONFIG_SUNRPC=m | 1082 | CONFIG_EXPORTFS=m |
1083 | CONFIG_NFS_COMMON=y | ||
1084 | CONFIG_SUNRPC=y | ||
1085 | # CONFIG_SUNRPC_REGISTER_V4 is not set | ||
874 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1086 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
875 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1087 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
876 | # CONFIG_SMB_FS is not set | 1088 | # CONFIG_SMB_FS is not set |
@@ -897,11 +1109,9 @@ CONFIG_MSDOS_PARTITION=y | |||
897 | # CONFIG_SGI_PARTITION is not set | 1109 | # CONFIG_SGI_PARTITION is not set |
898 | # CONFIG_ULTRIX_PARTITION is not set | 1110 | # CONFIG_ULTRIX_PARTITION is not set |
899 | # CONFIG_SUN_PARTITION is not set | 1111 | # CONFIG_SUN_PARTITION is not set |
1112 | # CONFIG_KARMA_PARTITION is not set | ||
900 | # CONFIG_EFI_PARTITION is not set | 1113 | # CONFIG_EFI_PARTITION is not set |
901 | 1114 | # CONFIG_SYSV68_PARTITION is not set | |
902 | # | ||
903 | # Native Language Support | ||
904 | # | ||
905 | CONFIG_NLS=m | 1115 | CONFIG_NLS=m |
906 | CONFIG_NLS_DEFAULT="iso8859-1" | 1116 | CONFIG_NLS_DEFAULT="iso8859-1" |
907 | CONFIG_NLS_CODEPAGE_437=m | 1117 | CONFIG_NLS_CODEPAGE_437=m |
@@ -942,30 +1152,74 @@ CONFIG_NLS_ISO8859_1=m | |||
942 | # CONFIG_NLS_KOI8_R is not set | 1152 | # CONFIG_NLS_KOI8_R is not set |
943 | # CONFIG_NLS_KOI8_U is not set | 1153 | # CONFIG_NLS_KOI8_U is not set |
944 | # CONFIG_NLS_UTF8 is not set | 1154 | # CONFIG_NLS_UTF8 is not set |
945 | 1155 | # CONFIG_DLM is not set | |
946 | # | ||
947 | # Profiling support | ||
948 | # | ||
949 | # CONFIG_PROFILING is not set | ||
950 | 1156 | ||
951 | # | 1157 | # |
952 | # Kernel hacking | 1158 | # Kernel hacking |
953 | # | 1159 | # |
954 | # CONFIG_PRINTK_TIME is not set | 1160 | # CONFIG_PRINTK_TIME is not set |
955 | CONFIG_DEBUG_KERNEL=y | 1161 | # CONFIG_ENABLE_WARN_DEPRECATED is not set |
1162 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
1163 | CONFIG_FRAME_WARN=1024 | ||
956 | # CONFIG_MAGIC_SYSRQ is not set | 1164 | # CONFIG_MAGIC_SYSRQ is not set |
957 | CONFIG_LOG_BUF_SHIFT=14 | 1165 | # CONFIG_UNUSED_SYMBOLS is not set |
1166 | # CONFIG_DEBUG_FS is not set | ||
1167 | # CONFIG_HEADERS_CHECK is not set | ||
1168 | CONFIG_DEBUG_KERNEL=y | ||
1169 | # CONFIG_DEBUG_SHIRQ is not set | ||
1170 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1171 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1172 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1173 | # CONFIG_SCHED_DEBUG is not set | ||
958 | # CONFIG_SCHEDSTATS is not set | 1174 | # CONFIG_SCHEDSTATS is not set |
1175 | # CONFIG_TIMER_STATS is not set | ||
1176 | # CONFIG_DEBUG_OBJECTS is not set | ||
959 | # CONFIG_DEBUG_SLAB is not set | 1177 | # CONFIG_DEBUG_SLAB is not set |
1178 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1179 | # CONFIG_RT_MUTEX_TESTER is not set | ||
960 | # CONFIG_DEBUG_SPINLOCK is not set | 1180 | # CONFIG_DEBUG_SPINLOCK is not set |
1181 | # CONFIG_DEBUG_MUTEXES is not set | ||
1182 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1183 | # CONFIG_PROVE_LOCKING is not set | ||
1184 | # CONFIG_LOCK_STAT is not set | ||
961 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1185 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1186 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
962 | # CONFIG_DEBUG_KOBJECT is not set | 1187 | # CONFIG_DEBUG_KOBJECT is not set |
963 | CONFIG_DEBUG_BUGVERBOSE=y | 1188 | CONFIG_DEBUG_BUGVERBOSE=y |
964 | # CONFIG_DEBUG_INFO is not set | 1189 | # CONFIG_DEBUG_INFO is not set |
965 | # CONFIG_DEBUG_FS is not set | 1190 | # CONFIG_DEBUG_VM is not set |
1191 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1192 | CONFIG_DEBUG_MEMORY_INIT=y | ||
1193 | # CONFIG_DEBUG_LIST is not set | ||
1194 | # CONFIG_DEBUG_SG is not set | ||
1195 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
966 | CONFIG_FRAME_POINTER=y | 1196 | CONFIG_FRAME_POINTER=y |
1197 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1198 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1199 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
1200 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1201 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
1202 | # CONFIG_FAULT_INJECTION is not set | ||
1203 | # CONFIG_LATENCYTOP is not set | ||
1204 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
1205 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
1206 | |||
1207 | # | ||
1208 | # Tracers | ||
1209 | # | ||
1210 | # CONFIG_FUNCTION_TRACER is not set | ||
1211 | # CONFIG_SCHED_TRACER is not set | ||
1212 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
1213 | # CONFIG_BOOT_TRACER is not set | ||
1214 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
1215 | # CONFIG_STACK_TRACER is not set | ||
1216 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | ||
1217 | # CONFIG_SAMPLES is not set | ||
1218 | CONFIG_HAVE_ARCH_KGDB=y | ||
1219 | # CONFIG_KGDB is not set | ||
967 | CONFIG_DEBUG_USER=y | 1220 | CONFIG_DEBUG_USER=y |
968 | # CONFIG_DEBUG_ERRORS is not set | 1221 | # CONFIG_DEBUG_ERRORS is not set |
1222 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
969 | # CONFIG_DEBUG_LL is not set | 1223 | # CONFIG_DEBUG_LL is not set |
970 | 1224 | ||
971 | # | 1225 | # |
@@ -973,19 +1227,23 @@ CONFIG_DEBUG_USER=y | |||
973 | # | 1227 | # |
974 | # CONFIG_KEYS is not set | 1228 | # CONFIG_KEYS is not set |
975 | # CONFIG_SECURITY is not set | 1229 | # CONFIG_SECURITY is not set |
976 | 1230 | # CONFIG_SECURITYFS is not set | |
977 | # | 1231 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
978 | # Cryptographic options | ||
979 | # | ||
980 | # CONFIG_CRYPTO is not set | 1232 | # CONFIG_CRYPTO is not set |
981 | 1233 | ||
982 | # | 1234 | # |
983 | # Hardware crypto devices | ||
984 | # | ||
985 | |||
986 | # | ||
987 | # Library routines | 1235 | # Library routines |
988 | # | 1236 | # |
1237 | CONFIG_BITREVERSE=y | ||
1238 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
989 | # CONFIG_CRC_CCITT is not set | 1239 | # CONFIG_CRC_CCITT is not set |
1240 | # CONFIG_CRC16 is not set | ||
1241 | # CONFIG_CRC_T10DIF is not set | ||
1242 | # CONFIG_CRC_ITU_T is not set | ||
990 | CONFIG_CRC32=y | 1243 | CONFIG_CRC32=y |
1244 | # CONFIG_CRC7 is not set | ||
991 | # CONFIG_LIBCRC32C is not set | 1245 | # CONFIG_LIBCRC32C is not set |
1246 | CONFIG_PLIST=y | ||
1247 | CONFIG_HAS_IOMEM=y | ||
1248 | CONFIG_HAS_IOPORT=y | ||
1249 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/configs/simpad_defconfig b/arch/arm/configs/simpad_defconfig index 03f783e696b3..685d2b513206 100644 --- a/arch/arm/configs/simpad_defconfig +++ b/arch/arm/configs/simpad_defconfig | |||
@@ -89,7 +89,6 @@ CONFIG_ARCH_SA1100=y | |||
89 | # CONFIG_SA1100_COLLIE is not set | 89 | # CONFIG_SA1100_COLLIE is not set |
90 | # CONFIG_SA1100_H3100 is not set | 90 | # CONFIG_SA1100_H3100 is not set |
91 | # CONFIG_SA1100_H3600 is not set | 91 | # CONFIG_SA1100_H3600 is not set |
92 | # CONFIG_SA1100_H3800 is not set | ||
93 | # CONFIG_SA1100_BADGE4 is not set | 92 | # CONFIG_SA1100_BADGE4 is not set |
94 | # CONFIG_SA1100_JORNADA720 is not set | 93 | # CONFIG_SA1100_JORNADA720 is not set |
95 | # CONFIG_SA1100_HACKKIT is not set | 94 | # CONFIG_SA1100_HACKKIT is not set |
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig index 4df5b4db2aa0..745c68ffb885 100644 --- a/arch/arm/configs/spitz_defconfig +++ b/arch/arm/configs/spitz_defconfig | |||
@@ -977,8 +977,8 @@ CONFIG_I2C_PXA=y | |||
977 | # Miscellaneous I2C Chip support | 977 | # Miscellaneous I2C Chip support |
978 | # | 978 | # |
979 | # CONFIG_DS1682 is not set | 979 | # CONFIG_DS1682 is not set |
980 | # CONFIG_AT24 is not set | 980 | # CONFIG_EEPROM_AT24 is not set |
981 | # CONFIG_SENSORS_EEPROM is not set | 981 | # CONFIG_EEPROM_LEGACY is not set |
982 | # CONFIG_SENSORS_PCF8574 is not set | 982 | # CONFIG_SENSORS_PCF8574 is not set |
983 | # CONFIG_PCF8575 is not set | 983 | # CONFIG_PCF8575 is not set |
984 | # CONFIG_SENSORS_PCA9539 is not set | 984 | # CONFIG_SENSORS_PCA9539 is not set |
@@ -1003,7 +1003,7 @@ CONFIG_SPI_PXA2XX=y | |||
1003 | # | 1003 | # |
1004 | # SPI Protocol Masters | 1004 | # SPI Protocol Masters |
1005 | # | 1005 | # |
1006 | # CONFIG_SPI_AT25 is not set | 1006 | # CONFIG_EEPROM_AT25 is not set |
1007 | # CONFIG_SPI_SPIDEV is not set | 1007 | # CONFIG_SPI_SPIDEV is not set |
1008 | # CONFIG_SPI_TLE62X0 is not set | 1008 | # CONFIG_SPI_TLE62X0 is not set |
1009 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 1009 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
diff --git a/arch/arm/configs/sx1_defconfig b/arch/arm/configs/sx1_defconfig index 853dcdd9f2e0..25b007ff8bab 100644 --- a/arch/arm/configs/sx1_defconfig +++ b/arch/arm/configs/sx1_defconfig | |||
@@ -610,7 +610,7 @@ CONFIG_I2C_OMAP=y | |||
610 | # | 610 | # |
611 | # CONFIG_SENSORS_DS1337 is not set | 611 | # CONFIG_SENSORS_DS1337 is not set |
612 | # CONFIG_SENSORS_DS1374 is not set | 612 | # CONFIG_SENSORS_DS1374 is not set |
613 | # CONFIG_SENSORS_EEPROM is not set | 613 | # CONFIG_EEPROM_LEGACY is not set |
614 | # CONFIG_SENSORS_PCF8574 is not set | 614 | # CONFIG_SENSORS_PCF8574 is not set |
615 | # CONFIG_SENSORS_PCA9539 is not set | 615 | # CONFIG_SENSORS_PCA9539 is not set |
616 | # CONFIG_SENSORS_PCF8591 is not set | 616 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/trizeps4_defconfig b/arch/arm/configs/trizeps4_defconfig index 9033d147f052..b6f838197816 100644 --- a/arch/arm/configs/trizeps4_defconfig +++ b/arch/arm/configs/trizeps4_defconfig | |||
@@ -948,7 +948,7 @@ CONFIG_I2C_PXA_SLAVE=y | |||
948 | # | 948 | # |
949 | # CONFIG_SENSORS_DS1337 is not set | 949 | # CONFIG_SENSORS_DS1337 is not set |
950 | # CONFIG_SENSORS_DS1374 is not set | 950 | # CONFIG_SENSORS_DS1374 is not set |
951 | # CONFIG_SENSORS_EEPROM is not set | 951 | # CONFIG_EEPROM_LEGACY is not set |
952 | # CONFIG_SENSORS_PCF8574 is not set | 952 | # CONFIG_SENSORS_PCF8574 is not set |
953 | # CONFIG_SENSORS_PCA9539 is not set | 953 | # CONFIG_SENSORS_PCA9539 is not set |
954 | # CONFIG_SENSORS_PCF8591 is not set | 954 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/usb-a9260_defconfig b/arch/arm/configs/usb-a9260_defconfig index fcb4aaabd439..fd7774033d64 100644 --- a/arch/arm/configs/usb-a9260_defconfig +++ b/arch/arm/configs/usb-a9260_defconfig | |||
@@ -676,7 +676,7 @@ CONFIG_SPI_ATMEL=y | |||
676 | # | 676 | # |
677 | # SPI Protocol Masters | 677 | # SPI Protocol Masters |
678 | # | 678 | # |
679 | # CONFIG_SPI_AT25 is not set | 679 | # CONFIG_EEPROM_AT25 is not set |
680 | # CONFIG_SPI_SPIDEV is not set | 680 | # CONFIG_SPI_SPIDEV is not set |
681 | # CONFIG_SPI_TLE62X0 is not set | 681 | # CONFIG_SPI_TLE62X0 is not set |
682 | # CONFIG_W1 is not set | 682 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/usb-a9263_defconfig b/arch/arm/configs/usb-a9263_defconfig index b786e0407e8e..e7c19dd92557 100644 --- a/arch/arm/configs/usb-a9263_defconfig +++ b/arch/arm/configs/usb-a9263_defconfig | |||
@@ -668,7 +668,7 @@ CONFIG_SPI_ATMEL=y | |||
668 | # | 668 | # |
669 | # SPI Protocol Masters | 669 | # SPI Protocol Masters |
670 | # | 670 | # |
671 | # CONFIG_SPI_AT25 is not set | 671 | # CONFIG_EEPROM_AT25 is not set |
672 | # CONFIG_SPI_SPIDEV is not set | 672 | # CONFIG_SPI_SPIDEV is not set |
673 | # CONFIG_SPI_TLE62X0 is not set | 673 | # CONFIG_SPI_TLE62X0 is not set |
674 | # CONFIG_W1 is not set | 674 | # CONFIG_W1 is not set |
diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig index 8355f88f7292..b11c5da3996c 100644 --- a/arch/arm/configs/versatile_defconfig +++ b/arch/arm/configs/versatile_defconfig | |||
@@ -611,7 +611,7 @@ CONFIG_I2C_ALGOBIT=y | |||
611 | # | 611 | # |
612 | # CONFIG_SENSORS_DS1337 is not set | 612 | # CONFIG_SENSORS_DS1337 is not set |
613 | # CONFIG_SENSORS_DS1374 is not set | 613 | # CONFIG_SENSORS_DS1374 is not set |
614 | CONFIG_SENSORS_EEPROM=m | 614 | CONFIG_EEPROM_LEGACY=m |
615 | # CONFIG_SENSORS_PCF8574 is not set | 615 | # CONFIG_SENSORS_PCF8574 is not set |
616 | # CONFIG_SENSORS_PCA9539 is not set | 616 | # CONFIG_SENSORS_PCA9539 is not set |
617 | # CONFIG_SENSORS_PCF8591 is not set | 617 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/arm/configs/viper_defconfig b/arch/arm/configs/viper_defconfig index d01fecb8673e..30f463d2fa8a 100644 --- a/arch/arm/configs/viper_defconfig +++ b/arch/arm/configs/viper_defconfig | |||
@@ -860,8 +860,8 @@ CONFIG_I2C_PXA=y | |||
860 | # Miscellaneous I2C Chip support | 860 | # Miscellaneous I2C Chip support |
861 | # | 861 | # |
862 | # CONFIG_DS1682 is not set | 862 | # CONFIG_DS1682 is not set |
863 | # CONFIG_AT24 is not set | 863 | # CONFIG_EEPROM_AT24 is not set |
864 | # CONFIG_SENSORS_EEPROM is not set | 864 | # CONFIG_EEPROM_LEGACY is not set |
865 | # CONFIG_SENSORS_PCF8574 is not set | 865 | # CONFIG_SENSORS_PCF8574 is not set |
866 | # CONFIG_PCF8575 is not set | 866 | # CONFIG_PCF8575 is not set |
867 | # CONFIG_SENSORS_PCA9539 is not set | 867 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/arm/configs/yl9200_defconfig b/arch/arm/configs/yl9200_defconfig index a9f41c24c9dc..9192e5977674 100644 --- a/arch/arm/configs/yl9200_defconfig +++ b/arch/arm/configs/yl9200_defconfig | |||
@@ -682,7 +682,7 @@ CONFIG_SPI_ATMEL=y | |||
682 | # | 682 | # |
683 | # SPI Protocol Masters | 683 | # SPI Protocol Masters |
684 | # | 684 | # |
685 | # CONFIG_SPI_AT25 is not set | 685 | # CONFIG_EEPROM_AT25 is not set |
686 | # CONFIG_SPI_TLE62X0 is not set | 686 | # CONFIG_SPI_TLE62X0 is not set |
687 | # CONFIG_W1 is not set | 687 | # CONFIG_W1 is not set |
688 | # CONFIG_POWER_SUPPLY is not set | 688 | # CONFIG_POWER_SUPPLY is not set |
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h index df5638f3643a..7edf3536df24 100644 --- a/arch/arm/include/asm/dma.h +++ b/arch/arm/include/asm/dma.h | |||
@@ -19,21 +19,17 @@ | |||
19 | #include <asm/system.h> | 19 | #include <asm/system.h> |
20 | #include <asm/scatterlist.h> | 20 | #include <asm/scatterlist.h> |
21 | 21 | ||
22 | typedef unsigned int dmach_t; | ||
23 | |||
24 | #include <mach/isa-dma.h> | 22 | #include <mach/isa-dma.h> |
25 | 23 | ||
26 | /* | 24 | /* |
27 | * DMA modes | 25 | * The DMA modes reflect the settings for the ISA DMA controller |
28 | */ | 26 | */ |
29 | typedef unsigned int dmamode_t; | 27 | #define DMA_MODE_MASK 0xcc |
30 | |||
31 | #define DMA_MODE_MASK 3 | ||
32 | 28 | ||
33 | #define DMA_MODE_READ 0 | 29 | #define DMA_MODE_READ 0x44 |
34 | #define DMA_MODE_WRITE 1 | 30 | #define DMA_MODE_WRITE 0x48 |
35 | #define DMA_MODE_CASCADE 2 | 31 | #define DMA_MODE_CASCADE 0xc0 |
36 | #define DMA_AUTOINIT 4 | 32 | #define DMA_AUTOINIT 0x10 |
37 | 33 | ||
38 | extern spinlock_t dma_spin_lock; | 34 | extern spinlock_t dma_spin_lock; |
39 | 35 | ||
@@ -52,44 +48,44 @@ static inline void release_dma_lock(unsigned long flags) | |||
52 | /* Clear the 'DMA Pointer Flip Flop'. | 48 | /* Clear the 'DMA Pointer Flip Flop'. |
53 | * Write 0 for LSB/MSB, 1 for MSB/LSB access. | 49 | * Write 0 for LSB/MSB, 1 for MSB/LSB access. |
54 | */ | 50 | */ |
55 | #define clear_dma_ff(channel) | 51 | #define clear_dma_ff(chan) |
56 | 52 | ||
57 | /* Set only the page register bits of the transfer address. | 53 | /* Set only the page register bits of the transfer address. |
58 | * | 54 | * |
59 | * NOTE: This is an architecture specific function, and should | 55 | * NOTE: This is an architecture specific function, and should |
60 | * be hidden from the drivers | 56 | * be hidden from the drivers |
61 | */ | 57 | */ |
62 | extern void set_dma_page(dmach_t channel, char pagenr); | 58 | extern void set_dma_page(unsigned int chan, char pagenr); |
63 | 59 | ||
64 | /* Request a DMA channel | 60 | /* Request a DMA channel |
65 | * | 61 | * |
66 | * Some architectures may need to do allocate an interrupt | 62 | * Some architectures may need to do allocate an interrupt |
67 | */ | 63 | */ |
68 | extern int request_dma(dmach_t channel, const char * device_id); | 64 | extern int request_dma(unsigned int chan, const char * device_id); |
69 | 65 | ||
70 | /* Free a DMA channel | 66 | /* Free a DMA channel |
71 | * | 67 | * |
72 | * Some architectures may need to do free an interrupt | 68 | * Some architectures may need to do free an interrupt |
73 | */ | 69 | */ |
74 | extern void free_dma(dmach_t channel); | 70 | extern void free_dma(unsigned int chan); |
75 | 71 | ||
76 | /* Enable DMA for this channel | 72 | /* Enable DMA for this channel |
77 | * | 73 | * |
78 | * On some architectures, this may have other side effects like | 74 | * On some architectures, this may have other side effects like |
79 | * enabling an interrupt and setting the DMA registers. | 75 | * enabling an interrupt and setting the DMA registers. |
80 | */ | 76 | */ |
81 | extern void enable_dma(dmach_t channel); | 77 | extern void enable_dma(unsigned int chan); |
82 | 78 | ||
83 | /* Disable DMA for this channel | 79 | /* Disable DMA for this channel |
84 | * | 80 | * |
85 | * On some architectures, this may have other side effects like | 81 | * On some architectures, this may have other side effects like |
86 | * disabling an interrupt or whatever. | 82 | * disabling an interrupt or whatever. |
87 | */ | 83 | */ |
88 | extern void disable_dma(dmach_t channel); | 84 | extern void disable_dma(unsigned int chan); |
89 | 85 | ||
90 | /* Test whether the specified channel has an active DMA transfer | 86 | /* Test whether the specified channel has an active DMA transfer |
91 | */ | 87 | */ |
92 | extern int dma_channel_active(dmach_t channel); | 88 | extern int dma_channel_active(unsigned int chan); |
93 | 89 | ||
94 | /* Set the DMA scatter gather list for this channel | 90 | /* Set the DMA scatter gather list for this channel |
95 | * | 91 | * |
@@ -97,7 +93,7 @@ extern int dma_channel_active(dmach_t channel); | |||
97 | * especially since some DMA architectures don't update the | 93 | * especially since some DMA architectures don't update the |
98 | * DMA address immediately, but defer it to the enable_dma(). | 94 | * DMA address immediately, but defer it to the enable_dma(). |
99 | */ | 95 | */ |
100 | extern void set_dma_sg(dmach_t channel, struct scatterlist *sg, int nr_sg); | 96 | extern void set_dma_sg(unsigned int chan, struct scatterlist *sg, int nr_sg); |
101 | 97 | ||
102 | /* Set the DMA address for this channel | 98 | /* Set the DMA address for this channel |
103 | * | 99 | * |
@@ -105,9 +101,9 @@ extern void set_dma_sg(dmach_t channel, struct scatterlist *sg, int nr_sg); | |||
105 | * especially since some DMA architectures don't update the | 101 | * especially since some DMA architectures don't update the |
106 | * DMA address immediately, but defer it to the enable_dma(). | 102 | * DMA address immediately, but defer it to the enable_dma(). |
107 | */ | 103 | */ |
108 | extern void __set_dma_addr(dmach_t channel, void *addr); | 104 | extern void __set_dma_addr(unsigned int chan, void *addr); |
109 | #define set_dma_addr(channel, addr) \ | 105 | #define set_dma_addr(chan, addr) \ |
110 | __set_dma_addr(channel, bus_to_virt(addr)) | 106 | __set_dma_addr(chan, bus_to_virt(addr)) |
111 | 107 | ||
112 | /* Set the DMA byte count for this channel | 108 | /* Set the DMA byte count for this channel |
113 | * | 109 | * |
@@ -115,7 +111,7 @@ extern void __set_dma_addr(dmach_t channel, void *addr); | |||
115 | * especially since some DMA architectures don't update the | 111 | * especially since some DMA architectures don't update the |
116 | * DMA count immediately, but defer it to the enable_dma(). | 112 | * DMA count immediately, but defer it to the enable_dma(). |
117 | */ | 113 | */ |
118 | extern void set_dma_count(dmach_t channel, unsigned long count); | 114 | extern void set_dma_count(unsigned int chan, unsigned long count); |
119 | 115 | ||
120 | /* Set the transfer direction for this channel | 116 | /* Set the transfer direction for this channel |
121 | * | 117 | * |
@@ -124,11 +120,11 @@ extern void set_dma_count(dmach_t channel, unsigned long count); | |||
124 | * DMA transfer direction immediately, but defer it to the | 120 | * DMA transfer direction immediately, but defer it to the |
125 | * enable_dma(). | 121 | * enable_dma(). |
126 | */ | 122 | */ |
127 | extern void set_dma_mode(dmach_t channel, dmamode_t mode); | 123 | extern void set_dma_mode(unsigned int chan, unsigned int mode); |
128 | 124 | ||
129 | /* Set the transfer speed for this channel | 125 | /* Set the transfer speed for this channel |
130 | */ | 126 | */ |
131 | extern void set_dma_speed(dmach_t channel, int cycle_ns); | 127 | extern void set_dma_speed(unsigned int chan, int cycle_ns); |
132 | 128 | ||
133 | /* Get DMA residue count. After a DMA transfer, this | 129 | /* Get DMA residue count. After a DMA transfer, this |
134 | * should return zero. Reading this while a DMA transfer is | 130 | * should return zero. Reading this while a DMA transfer is |
@@ -136,7 +132,7 @@ extern void set_dma_speed(dmach_t channel, int cycle_ns); | |||
136 | * If called before the channel has been used, it may return 1. | 132 | * If called before the channel has been used, it may return 1. |
137 | * Otherwise, it returns the number of _bytes_ left to transfer. | 133 | * Otherwise, it returns the number of _bytes_ left to transfer. |
138 | */ | 134 | */ |
139 | extern int get_dma_residue(dmach_t channel); | 135 | extern int get_dma_residue(unsigned int chan); |
140 | 136 | ||
141 | #ifndef NO_DMA | 137 | #ifndef NO_DMA |
142 | #define NO_DMA 255 | 138 | #define NO_DMA 255 |
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index a58378c343b9..def8eac6e89d 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h | |||
@@ -50,6 +50,7 @@ typedef struct user_fp elf_fpregset_t; | |||
50 | #define R_ARM_ABS32 2 | 50 | #define R_ARM_ABS32 2 |
51 | #define R_ARM_CALL 28 | 51 | #define R_ARM_CALL 28 |
52 | #define R_ARM_JUMP24 29 | 52 | #define R_ARM_JUMP24 29 |
53 | #define R_ARM_PREL31 42 | ||
53 | 54 | ||
54 | /* | 55 | /* |
55 | * These are used to set parameters in the core dumps. | 56 | * These are used to set parameters in the core dumps. |
diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h index bda489f9f017..f7bd52b1c365 100644 --- a/arch/arm/include/asm/hwcap.h +++ b/arch/arm/include/asm/hwcap.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #define HWCAP_CRUNCH 1024 | 17 | #define HWCAP_CRUNCH 1024 |
18 | #define HWCAP_THUMBEE 2048 | 18 | #define HWCAP_THUMBEE 2048 |
19 | #define HWCAP_NEON 4096 | 19 | #define HWCAP_NEON 4096 |
20 | #define HWCAP_VFPv3 8192 | ||
21 | #define HWCAP_VFPv3D16 16384 | ||
20 | 22 | ||
21 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) | 23 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) |
22 | /* | 24 | /* |
diff --git a/arch/arm/include/asm/mach/dma.h b/arch/arm/include/asm/mach/dma.h index fc7278ea7146..9e614a18e680 100644 --- a/arch/arm/include/asm/mach/dma.h +++ b/arch/arm/include/asm/mach/dma.h | |||
@@ -15,13 +15,13 @@ struct dma_struct; | |||
15 | typedef struct dma_struct dma_t; | 15 | typedef struct dma_struct dma_t; |
16 | 16 | ||
17 | struct dma_ops { | 17 | struct dma_ops { |
18 | int (*request)(dmach_t, dma_t *); /* optional */ | 18 | int (*request)(unsigned int, dma_t *); /* optional */ |
19 | void (*free)(dmach_t, dma_t *); /* optional */ | 19 | void (*free)(unsigned int, dma_t *); /* optional */ |
20 | void (*enable)(dmach_t, dma_t *); /* mandatory */ | 20 | void (*enable)(unsigned int, dma_t *); /* mandatory */ |
21 | void (*disable)(dmach_t, dma_t *); /* mandatory */ | 21 | void (*disable)(unsigned int, dma_t *); /* mandatory */ |
22 | int (*residue)(dmach_t, dma_t *); /* optional */ | 22 | int (*residue)(unsigned int, dma_t *); /* optional */ |
23 | int (*setspeed)(dmach_t, dma_t *, int); /* optional */ | 23 | int (*setspeed)(unsigned int, dma_t *, int); /* optional */ |
24 | char *type; | 24 | const char *type; |
25 | }; | 25 | }; |
26 | 26 | ||
27 | struct dma_struct { | 27 | struct dma_struct { |
@@ -34,24 +34,21 @@ struct dma_struct { | |||
34 | unsigned int active:1; /* Transfer active */ | 34 | unsigned int active:1; /* Transfer active */ |
35 | unsigned int invalid:1; /* Address/Count changed */ | 35 | unsigned int invalid:1; /* Address/Count changed */ |
36 | 36 | ||
37 | dmamode_t dma_mode; /* DMA mode */ | 37 | unsigned int dma_mode; /* DMA mode */ |
38 | int speed; /* DMA speed */ | 38 | int speed; /* DMA speed */ |
39 | 39 | ||
40 | unsigned int lock; /* Device is allocated */ | 40 | unsigned int lock; /* Device is allocated */ |
41 | const char *device_id; /* Device name */ | 41 | const char *device_id; /* Device name */ |
42 | 42 | ||
43 | unsigned int dma_base; /* Controller base address */ | 43 | const struct dma_ops *d_ops; |
44 | int dma_irq; /* Controller IRQ */ | ||
45 | struct scatterlist cur_sg; /* Current controller buffer */ | ||
46 | unsigned int state; | ||
47 | |||
48 | struct dma_ops *d_ops; | ||
49 | }; | 44 | }; |
50 | 45 | ||
51 | /* Prototype: void arch_dma_init(dma) | 46 | /* |
52 | * Purpose : Initialise architecture specific DMA | 47 | * isa_dma_add - add an ISA-style DMA channel |
53 | * Params : dma - pointer to array of DMA structures | ||
54 | */ | 48 | */ |
55 | extern void arch_dma_init(dma_t *dma); | 49 | extern int isa_dma_add(unsigned int, dma_t *dma); |
56 | 50 | ||
57 | extern void isa_init_dma(dma_t *dma); | 51 | /* |
52 | * Add the ISA DMA controller. Always takes channels 0-7. | ||
53 | */ | ||
54 | extern void isa_init_dma(void); | ||
diff --git a/arch/arm/include/asm/module.h b/arch/arm/include/asm/module.h index 24b168dc31a3..e4dfa69abb68 100644 --- a/arch/arm/include/asm/module.h +++ b/arch/arm/include/asm/module.h | |||
@@ -1,15 +1,27 @@ | |||
1 | #ifndef _ASM_ARM_MODULE_H | 1 | #ifndef _ASM_ARM_MODULE_H |
2 | #define _ASM_ARM_MODULE_H | 2 | #define _ASM_ARM_MODULE_H |
3 | 3 | ||
4 | struct mod_arch_specific | ||
5 | { | ||
6 | int foo; | ||
7 | }; | ||
8 | |||
9 | #define Elf_Shdr Elf32_Shdr | 4 | #define Elf_Shdr Elf32_Shdr |
10 | #define Elf_Sym Elf32_Sym | 5 | #define Elf_Sym Elf32_Sym |
11 | #define Elf_Ehdr Elf32_Ehdr | 6 | #define Elf_Ehdr Elf32_Ehdr |
12 | 7 | ||
8 | struct unwind_table; | ||
9 | |||
10 | struct mod_arch_specific | ||
11 | { | ||
12 | #ifdef CONFIG_ARM_UNWIND | ||
13 | Elf_Shdr *unw_sec_init; | ||
14 | Elf_Shdr *unw_sec_devinit; | ||
15 | Elf_Shdr *unw_sec_core; | ||
16 | Elf_Shdr *sec_init_text; | ||
17 | Elf_Shdr *sec_devinit_text; | ||
18 | Elf_Shdr *sec_core_text; | ||
19 | struct unwind_table *unwind_init; | ||
20 | struct unwind_table *unwind_devinit; | ||
21 | struct unwind_table *unwind_core; | ||
22 | #endif | ||
23 | }; | ||
24 | |||
13 | /* | 25 | /* |
14 | * Include the ARM architecture version. | 26 | * Include the ARM architecture version. |
15 | */ | 27 | */ |
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index 73192618f1c2..236a06b9b7ce 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h | |||
@@ -27,6 +27,8 @@ | |||
27 | /* PTRACE_SYSCALL is 24 */ | 27 | /* PTRACE_SYSCALL is 24 */ |
28 | #define PTRACE_GETCRUNCHREGS 25 | 28 | #define PTRACE_GETCRUNCHREGS 25 |
29 | #define PTRACE_SETCRUNCHREGS 26 | 29 | #define PTRACE_SETCRUNCHREGS 26 |
30 | #define PTRACE_GETVFPREGS 27 | ||
31 | #define PTRACE_SETVFPREGS 28 | ||
30 | 32 | ||
31 | /* | 33 | /* |
32 | * PSR bits | 34 | * PSR bits |
diff --git a/arch/arm/include/asm/stacktrace.h b/arch/arm/include/asm/stacktrace.h new file mode 100644 index 000000000000..4d0a16441b29 --- /dev/null +++ b/arch/arm/include/asm/stacktrace.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef __ASM_STACKTRACE_H | ||
2 | #define __ASM_STACKTRACE_H | ||
3 | |||
4 | struct stackframe { | ||
5 | unsigned long fp; | ||
6 | unsigned long sp; | ||
7 | unsigned long lr; | ||
8 | unsigned long pc; | ||
9 | }; | ||
10 | |||
11 | extern int unwind_frame(struct stackframe *frame); | ||
12 | extern void walk_stackframe(struct stackframe *frame, | ||
13 | int (*fn)(struct stackframe *, void *), void *data); | ||
14 | |||
15 | #endif /* __ASM_STACKTRACE_H */ | ||
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h index 68b9ec82a37f..4f8848260ee2 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h | |||
@@ -99,6 +99,8 @@ static inline struct thread_info *current_thread_info(void) | |||
99 | 99 | ||
100 | #define thread_saved_pc(tsk) \ | 100 | #define thread_saved_pc(tsk) \ |
101 | ((unsigned long)(task_thread_info(tsk)->cpu_context.pc)) | 101 | ((unsigned long)(task_thread_info(tsk)->cpu_context.pc)) |
102 | #define thread_saved_sp(tsk) \ | ||
103 | ((unsigned long)(task_thread_info(tsk)->cpu_context.sp)) | ||
102 | #define thread_saved_fp(tsk) \ | 104 | #define thread_saved_fp(tsk) \ |
103 | ((unsigned long)(task_thread_info(tsk)->cpu_context.fp)) | 105 | ((unsigned long)(task_thread_info(tsk)->cpu_context.fp)) |
104 | 106 | ||
@@ -113,6 +115,8 @@ extern void iwmmxt_task_restore(struct thread_info *, void *); | |||
113 | extern void iwmmxt_task_release(struct thread_info *); | 115 | extern void iwmmxt_task_release(struct thread_info *); |
114 | extern void iwmmxt_task_switch(struct thread_info *); | 116 | extern void iwmmxt_task_switch(struct thread_info *); |
115 | 117 | ||
118 | extern void vfp_sync_state(struct thread_info *thread); | ||
119 | |||
116 | #endif | 120 | #endif |
117 | 121 | ||
118 | /* | 122 | /* |
diff --git a/arch/arm/include/asm/traps.h b/arch/arm/include/asm/traps.h index aa399aec568e..491960bf4260 100644 --- a/arch/arm/include/asm/traps.h +++ b/arch/arm/include/asm/traps.h | |||
@@ -25,5 +25,6 @@ static inline int in_exception_text(unsigned long ptr) | |||
25 | } | 25 | } |
26 | 26 | ||
27 | extern void __init early_trap_init(void); | 27 | extern void __init early_trap_init(void); |
28 | extern void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame); | ||
28 | 29 | ||
29 | #endif | 30 | #endif |
diff --git a/arch/arm/include/asm/unwind.h b/arch/arm/include/asm/unwind.h new file mode 100644 index 000000000000..a5edf421005c --- /dev/null +++ b/arch/arm/include/asm/unwind.h | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * arch/arm/include/asm/unwind.h | ||
3 | * | ||
4 | * Copyright (C) 2008 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | ||
19 | |||
20 | #ifndef __ASM_UNWIND_H | ||
21 | #define __ASM_UNWIND_H | ||
22 | |||
23 | #ifndef __ASSEMBLY__ | ||
24 | |||
25 | /* Unwind reason code according the the ARM EABI documents */ | ||
26 | enum unwind_reason_code { | ||
27 | URC_OK = 0, /* operation completed successfully */ | ||
28 | URC_CONTINUE_UNWIND = 8, | ||
29 | URC_FAILURE = 9 /* unspecified failure of some kind */ | ||
30 | }; | ||
31 | |||
32 | struct unwind_idx { | ||
33 | unsigned long addr; | ||
34 | unsigned long insn; | ||
35 | }; | ||
36 | |||
37 | struct unwind_table { | ||
38 | struct list_head list; | ||
39 | struct unwind_idx *start; | ||
40 | struct unwind_idx *stop; | ||
41 | unsigned long begin_addr; | ||
42 | unsigned long end_addr; | ||
43 | }; | ||
44 | |||
45 | extern struct unwind_table *unwind_table_add(unsigned long start, | ||
46 | unsigned long size, | ||
47 | unsigned long text_addr, | ||
48 | unsigned long text_size); | ||
49 | extern void unwind_table_del(struct unwind_table *tab); | ||
50 | extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk); | ||
51 | |||
52 | #ifdef CONFIG_ARM_UNWIND | ||
53 | extern int __init unwind_init(void); | ||
54 | #else | ||
55 | static inline int __init unwind_init(void) | ||
56 | { | ||
57 | return 0; | ||
58 | } | ||
59 | #endif | ||
60 | |||
61 | #endif /* !__ASSEMBLY__ */ | ||
62 | |||
63 | #ifdef CONFIG_ARM_UNWIND | ||
64 | #define UNWIND(code...) code | ||
65 | #else | ||
66 | #define UNWIND(code...) | ||
67 | #endif | ||
68 | |||
69 | #endif /* __ASM_UNWIND_H */ | ||
diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h index 825c1e7c582d..df95e050f9dd 100644 --- a/arch/arm/include/asm/user.h +++ b/arch/arm/include/asm/user.h | |||
@@ -81,4 +81,13 @@ struct user{ | |||
81 | #define HOST_TEXT_START_ADDR (u.start_code) | 81 | #define HOST_TEXT_START_ADDR (u.start_code) |
82 | #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) | 82 | #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) |
83 | 83 | ||
84 | /* | ||
85 | * User specific VFP registers. If only VFPv2 is present, registers 16 to 31 | ||
86 | * are ignored by the ptrace system call. | ||
87 | */ | ||
88 | struct user_vfp { | ||
89 | unsigned long long fpregs[32]; | ||
90 | unsigned long fpscr; | ||
91 | }; | ||
92 | |||
84 | #endif /* _ARM_USER_H */ | 93 | #endif /* _ARM_USER_H */ |
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index 4305345987d3..ca60d335e8fa 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -29,6 +29,7 @@ obj-$(CONFIG_ATAGS_PROC) += atags.o | |||
29 | obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o | 29 | obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o |
30 | obj-$(CONFIG_ARM_THUMBEE) += thumbee.o | 30 | obj-$(CONFIG_ARM_THUMBEE) += thumbee.o |
31 | obj-$(CONFIG_KGDB) += kgdb.o | 31 | obj-$(CONFIG_KGDB) += kgdb.o |
32 | obj-$(CONFIG_ARM_UNWIND) += unwind.o | ||
32 | 33 | ||
33 | obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o | 34 | obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o |
34 | AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312 | 35 | AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312 |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index f53c58290543..b121b6053cce 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
@@ -49,6 +49,33 @@ | |||
49 | 1002: | 49 | 1002: |
50 | .endm | 50 | .endm |
51 | 51 | ||
52 | #elif defined(CONFIG_CPU_XSCALE) | ||
53 | |||
54 | .macro addruart, rx | ||
55 | .endm | ||
56 | |||
57 | .macro senduart, rd, rx | ||
58 | mcr p14, 0, \rd, c8, c0, 0 | ||
59 | .endm | ||
60 | |||
61 | .macro busyuart, rd, rx | ||
62 | 1001: | ||
63 | mrc p14, 0, \rx, c14, c0, 0 | ||
64 | tst \rx, #0x10000000 | ||
65 | beq 1001b | ||
66 | .endm | ||
67 | |||
68 | .macro waituart, rd, rx | ||
69 | mov \rd, #0x10000000 | ||
70 | 1001: | ||
71 | subs \rd, \rd, #1 | ||
72 | bmi 1002f | ||
73 | mrc p14, 0, \rx, c14, c0, 0 | ||
74 | tst \rx, #0x10000000 | ||
75 | bne 1001b | ||
76 | 1002: | ||
77 | .endm | ||
78 | |||
52 | #else | 79 | #else |
53 | 80 | ||
54 | .macro addruart, rx | 81 | .macro addruart, rx |
diff --git a/arch/arm/kernel/dma-isa.c b/arch/arm/kernel/dma-isa.c index 4a3a50495c60..0e88e46fc732 100644 --- a/arch/arm/kernel/dma-isa.c +++ b/arch/arm/kernel/dma-isa.c | |||
@@ -24,11 +24,6 @@ | |||
24 | #include <asm/dma.h> | 24 | #include <asm/dma.h> |
25 | #include <asm/mach/dma.h> | 25 | #include <asm/mach/dma.h> |
26 | 26 | ||
27 | #define ISA_DMA_MODE_READ 0x44 | ||
28 | #define ISA_DMA_MODE_WRITE 0x48 | ||
29 | #define ISA_DMA_MODE_CASCADE 0xc0 | ||
30 | #define ISA_DMA_AUTOINIT 0x10 | ||
31 | |||
32 | #define ISA_DMA_MASK 0 | 27 | #define ISA_DMA_MASK 0 |
33 | #define ISA_DMA_MODE 1 | 28 | #define ISA_DMA_MODE 1 |
34 | #define ISA_DMA_CLRFF 2 | 29 | #define ISA_DMA_CLRFF 2 |
@@ -49,38 +44,35 @@ static unsigned int isa_dma_port[8][7] = { | |||
49 | { 0xd4, 0xd6, 0xd8, 0x48a, 0x08a, 0xcc, 0xce } | 44 | { 0xd4, 0xd6, 0xd8, 0x48a, 0x08a, 0xcc, 0xce } |
50 | }; | 45 | }; |
51 | 46 | ||
52 | static int isa_get_dma_residue(dmach_t channel, dma_t *dma) | 47 | static int isa_get_dma_residue(unsigned int chan, dma_t *dma) |
53 | { | 48 | { |
54 | unsigned int io_port = isa_dma_port[channel][ISA_DMA_COUNT]; | 49 | unsigned int io_port = isa_dma_port[chan][ISA_DMA_COUNT]; |
55 | int count; | 50 | int count; |
56 | 51 | ||
57 | count = 1 + inb(io_port); | 52 | count = 1 + inb(io_port); |
58 | count |= inb(io_port) << 8; | 53 | count |= inb(io_port) << 8; |
59 | 54 | ||
60 | return channel < 4 ? count : (count << 1); | 55 | return chan < 4 ? count : (count << 1); |
61 | } | 56 | } |
62 | 57 | ||
63 | static void isa_enable_dma(dmach_t channel, dma_t *dma) | 58 | static void isa_enable_dma(unsigned int chan, dma_t *dma) |
64 | { | 59 | { |
65 | if (dma->invalid) { | 60 | if (dma->invalid) { |
66 | unsigned long address, length; | 61 | unsigned long address, length; |
67 | unsigned int mode; | 62 | unsigned int mode; |
68 | enum dma_data_direction direction; | 63 | enum dma_data_direction direction; |
69 | 64 | ||
70 | mode = channel & 3; | 65 | mode = (chan & 3) | dma->dma_mode; |
71 | switch (dma->dma_mode & DMA_MODE_MASK) { | 66 | switch (dma->dma_mode & DMA_MODE_MASK) { |
72 | case DMA_MODE_READ: | 67 | case DMA_MODE_READ: |
73 | mode |= ISA_DMA_MODE_READ; | ||
74 | direction = DMA_FROM_DEVICE; | 68 | direction = DMA_FROM_DEVICE; |
75 | break; | 69 | break; |
76 | 70 | ||
77 | case DMA_MODE_WRITE: | 71 | case DMA_MODE_WRITE: |
78 | mode |= ISA_DMA_MODE_WRITE; | ||
79 | direction = DMA_TO_DEVICE; | 72 | direction = DMA_TO_DEVICE; |
80 | break; | 73 | break; |
81 | 74 | ||
82 | case DMA_MODE_CASCADE: | 75 | case DMA_MODE_CASCADE: |
83 | mode |= ISA_DMA_MODE_CASCADE; | ||
84 | direction = DMA_BIDIRECTIONAL; | 76 | direction = DMA_BIDIRECTIONAL; |
85 | break; | 77 | break; |
86 | 78 | ||
@@ -105,34 +97,31 @@ static void isa_enable_dma(dmach_t channel, dma_t *dma) | |||
105 | address = dma->buf.dma_address; | 97 | address = dma->buf.dma_address; |
106 | length = dma->buf.length - 1; | 98 | length = dma->buf.length - 1; |
107 | 99 | ||
108 | outb(address >> 16, isa_dma_port[channel][ISA_DMA_PGLO]); | 100 | outb(address >> 16, isa_dma_port[chan][ISA_DMA_PGLO]); |
109 | outb(address >> 24, isa_dma_port[channel][ISA_DMA_PGHI]); | 101 | outb(address >> 24, isa_dma_port[chan][ISA_DMA_PGHI]); |
110 | 102 | ||
111 | if (channel >= 4) { | 103 | if (chan >= 4) { |
112 | address >>= 1; | 104 | address >>= 1; |
113 | length >>= 1; | 105 | length >>= 1; |
114 | } | 106 | } |
115 | 107 | ||
116 | outb(0, isa_dma_port[channel][ISA_DMA_CLRFF]); | 108 | outb(0, isa_dma_port[chan][ISA_DMA_CLRFF]); |
117 | |||
118 | outb(address, isa_dma_port[channel][ISA_DMA_ADDR]); | ||
119 | outb(address >> 8, isa_dma_port[channel][ISA_DMA_ADDR]); | ||
120 | 109 | ||
121 | outb(length, isa_dma_port[channel][ISA_DMA_COUNT]); | 110 | outb(address, isa_dma_port[chan][ISA_DMA_ADDR]); |
122 | outb(length >> 8, isa_dma_port[channel][ISA_DMA_COUNT]); | 111 | outb(address >> 8, isa_dma_port[chan][ISA_DMA_ADDR]); |
123 | 112 | ||
124 | if (dma->dma_mode & DMA_AUTOINIT) | 113 | outb(length, isa_dma_port[chan][ISA_DMA_COUNT]); |
125 | mode |= ISA_DMA_AUTOINIT; | 114 | outb(length >> 8, isa_dma_port[chan][ISA_DMA_COUNT]); |
126 | 115 | ||
127 | outb(mode, isa_dma_port[channel][ISA_DMA_MODE]); | 116 | outb(mode, isa_dma_port[chan][ISA_DMA_MODE]); |
128 | dma->invalid = 0; | 117 | dma->invalid = 0; |
129 | } | 118 | } |
130 | outb(channel & 3, isa_dma_port[channel][ISA_DMA_MASK]); | 119 | outb(chan & 3, isa_dma_port[chan][ISA_DMA_MASK]); |
131 | } | 120 | } |
132 | 121 | ||
133 | static void isa_disable_dma(dmach_t channel, dma_t *dma) | 122 | static void isa_disable_dma(unsigned int chan, dma_t *dma) |
134 | { | 123 | { |
135 | outb(channel | 4, isa_dma_port[channel][ISA_DMA_MASK]); | 124 | outb(chan | 4, isa_dma_port[chan][ISA_DMA_MASK]); |
136 | } | 125 | } |
137 | 126 | ||
138 | static struct dma_ops isa_dma_ops = { | 127 | static struct dma_ops isa_dma_ops = { |
@@ -160,7 +149,12 @@ static struct resource dma_resources[] = { { | |||
160 | .end = 0x048f | 149 | .end = 0x048f |
161 | } }; | 150 | } }; |
162 | 151 | ||
163 | void __init isa_init_dma(dma_t *dma) | 152 | static dma_t isa_dma[8]; |
153 | |||
154 | /* | ||
155 | * ISA DMA always starts at channel 0 | ||
156 | */ | ||
157 | void __init isa_init_dma(void) | ||
164 | { | 158 | { |
165 | /* | 159 | /* |
166 | * Try to autodetect presence of an ISA DMA controller. | 160 | * Try to autodetect presence of an ISA DMA controller. |
@@ -178,11 +172,11 @@ void __init isa_init_dma(dma_t *dma) | |||
178 | outb(0xaa, 0x00); | 172 | outb(0xaa, 0x00); |
179 | 173 | ||
180 | if (inb(0) == 0x55 && inb(0) == 0xaa) { | 174 | if (inb(0) == 0x55 && inb(0) == 0xaa) { |
181 | int channel, i; | 175 | unsigned int chan, i; |
182 | 176 | ||
183 | for (channel = 0; channel < 8; channel++) { | 177 | for (chan = 0; chan < 8; chan++) { |
184 | dma[channel].d_ops = &isa_dma_ops; | 178 | isa_dma[chan].d_ops = &isa_dma_ops; |
185 | isa_disable_dma(channel, NULL); | 179 | isa_disable_dma(chan, NULL); |
186 | } | 180 | } |
187 | 181 | ||
188 | outb(0x40, 0x0b); | 182 | outb(0x40, 0x0b); |
@@ -217,5 +211,12 @@ void __init isa_init_dma(dma_t *dma) | |||
217 | 211 | ||
218 | for (i = 0; i < ARRAY_SIZE(dma_resources); i++) | 212 | for (i = 0; i < ARRAY_SIZE(dma_resources); i++) |
219 | request_resource(&ioport_resource, dma_resources + i); | 213 | request_resource(&ioport_resource, dma_resources + i); |
214 | |||
215 | for (chan = 0; chan < 8; chan++) { | ||
216 | int ret = isa_dma_add(chan, &isa_dma[chan]); | ||
217 | if (ret) | ||
218 | printk(KERN_ERR "ISADMA%u: unable to register: %d\n", | ||
219 | chan, ret); | ||
220 | } | ||
220 | } | 221 | } |
221 | } | 222 | } |
diff --git a/arch/arm/kernel/dma.c b/arch/arm/kernel/dma.c index d006085ed7e7..7d5b9fb01e71 100644 --- a/arch/arm/kernel/dma.c +++ b/arch/arm/kernel/dma.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
18 | #include <linux/scatterlist.h> | ||
18 | 19 | ||
19 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
20 | 21 | ||
@@ -23,19 +24,40 @@ | |||
23 | DEFINE_SPINLOCK(dma_spin_lock); | 24 | DEFINE_SPINLOCK(dma_spin_lock); |
24 | EXPORT_SYMBOL(dma_spin_lock); | 25 | EXPORT_SYMBOL(dma_spin_lock); |
25 | 26 | ||
26 | static dma_t dma_chan[MAX_DMA_CHANNELS]; | 27 | static dma_t *dma_chan[MAX_DMA_CHANNELS]; |
28 | |||
29 | static inline dma_t *dma_channel(unsigned int chan) | ||
30 | { | ||
31 | if (chan >= MAX_DMA_CHANNELS) | ||
32 | return NULL; | ||
33 | |||
34 | return dma_chan[chan]; | ||
35 | } | ||
36 | |||
37 | int __init isa_dma_add(unsigned int chan, dma_t *dma) | ||
38 | { | ||
39 | if (!dma->d_ops) | ||
40 | return -EINVAL; | ||
41 | |||
42 | sg_init_table(&dma->buf, 1); | ||
43 | |||
44 | if (dma_chan[chan]) | ||
45 | return -EBUSY; | ||
46 | dma_chan[chan] = dma; | ||
47 | return 0; | ||
48 | } | ||
27 | 49 | ||
28 | /* | 50 | /* |
29 | * Request DMA channel | 51 | * Request DMA channel |
30 | * | 52 | * |
31 | * On certain platforms, we have to allocate an interrupt as well... | 53 | * On certain platforms, we have to allocate an interrupt as well... |
32 | */ | 54 | */ |
33 | int request_dma(dmach_t channel, const char *device_id) | 55 | int request_dma(unsigned int chan, const char *device_id) |
34 | { | 56 | { |
35 | dma_t *dma = dma_chan + channel; | 57 | dma_t *dma = dma_channel(chan); |
36 | int ret; | 58 | int ret; |
37 | 59 | ||
38 | if (channel >= MAX_DMA_CHANNELS || !dma->d_ops) | 60 | if (!dma) |
39 | goto bad_dma; | 61 | goto bad_dma; |
40 | 62 | ||
41 | if (xchg(&dma->lock, 1) != 0) | 63 | if (xchg(&dma->lock, 1) != 0) |
@@ -47,7 +69,7 @@ int request_dma(dmach_t channel, const char *device_id) | |||
47 | 69 | ||
48 | ret = 0; | 70 | ret = 0; |
49 | if (dma->d_ops->request) | 71 | if (dma->d_ops->request) |
50 | ret = dma->d_ops->request(channel, dma); | 72 | ret = dma->d_ops->request(chan, dma); |
51 | 73 | ||
52 | if (ret) | 74 | if (ret) |
53 | xchg(&dma->lock, 0); | 75 | xchg(&dma->lock, 0); |
@@ -55,7 +77,7 @@ int request_dma(dmach_t channel, const char *device_id) | |||
55 | return ret; | 77 | return ret; |
56 | 78 | ||
57 | bad_dma: | 79 | bad_dma: |
58 | printk(KERN_ERR "dma: trying to allocate DMA%d\n", channel); | 80 | printk(KERN_ERR "dma: trying to allocate DMA%d\n", chan); |
59 | return -EINVAL; | 81 | return -EINVAL; |
60 | 82 | ||
61 | busy: | 83 | busy: |
@@ -68,42 +90,42 @@ EXPORT_SYMBOL(request_dma); | |||
68 | * | 90 | * |
69 | * On certain platforms, we have to free interrupt as well... | 91 | * On certain platforms, we have to free interrupt as well... |
70 | */ | 92 | */ |
71 | void free_dma(dmach_t channel) | 93 | void free_dma(unsigned int chan) |
72 | { | 94 | { |
73 | dma_t *dma = dma_chan + channel; | 95 | dma_t *dma = dma_channel(chan); |
74 | 96 | ||
75 | if (channel >= MAX_DMA_CHANNELS || !dma->d_ops) | 97 | if (!dma) |
76 | goto bad_dma; | 98 | goto bad_dma; |
77 | 99 | ||
78 | if (dma->active) { | 100 | if (dma->active) { |
79 | printk(KERN_ERR "dma%d: freeing active DMA\n", channel); | 101 | printk(KERN_ERR "dma%d: freeing active DMA\n", chan); |
80 | dma->d_ops->disable(channel, dma); | 102 | dma->d_ops->disable(chan, dma); |
81 | dma->active = 0; | 103 | dma->active = 0; |
82 | } | 104 | } |
83 | 105 | ||
84 | if (xchg(&dma->lock, 0) != 0) { | 106 | if (xchg(&dma->lock, 0) != 0) { |
85 | if (dma->d_ops->free) | 107 | if (dma->d_ops->free) |
86 | dma->d_ops->free(channel, dma); | 108 | dma->d_ops->free(chan, dma); |
87 | return; | 109 | return; |
88 | } | 110 | } |
89 | 111 | ||
90 | printk(KERN_ERR "dma%d: trying to free free DMA\n", channel); | 112 | printk(KERN_ERR "dma%d: trying to free free DMA\n", chan); |
91 | return; | 113 | return; |
92 | 114 | ||
93 | bad_dma: | 115 | bad_dma: |
94 | printk(KERN_ERR "dma: trying to free DMA%d\n", channel); | 116 | printk(KERN_ERR "dma: trying to free DMA%d\n", chan); |
95 | } | 117 | } |
96 | EXPORT_SYMBOL(free_dma); | 118 | EXPORT_SYMBOL(free_dma); |
97 | 119 | ||
98 | /* Set DMA Scatter-Gather list | 120 | /* Set DMA Scatter-Gather list |
99 | */ | 121 | */ |
100 | void set_dma_sg (dmach_t channel, struct scatterlist *sg, int nr_sg) | 122 | void set_dma_sg (unsigned int chan, struct scatterlist *sg, int nr_sg) |
101 | { | 123 | { |
102 | dma_t *dma = dma_chan + channel; | 124 | dma_t *dma = dma_channel(chan); |
103 | 125 | ||
104 | if (dma->active) | 126 | if (dma->active) |
105 | printk(KERN_ERR "dma%d: altering DMA SG while " | 127 | printk(KERN_ERR "dma%d: altering DMA SG while " |
106 | "DMA active\n", channel); | 128 | "DMA active\n", chan); |
107 | 129 | ||
108 | dma->sg = sg; | 130 | dma->sg = sg; |
109 | dma->sgcount = nr_sg; | 131 | dma->sgcount = nr_sg; |
@@ -115,13 +137,13 @@ EXPORT_SYMBOL(set_dma_sg); | |||
115 | * | 137 | * |
116 | * Copy address to the structure, and set the invalid bit | 138 | * Copy address to the structure, and set the invalid bit |
117 | */ | 139 | */ |
118 | void __set_dma_addr (dmach_t channel, void *addr) | 140 | void __set_dma_addr (unsigned int chan, void *addr) |
119 | { | 141 | { |
120 | dma_t *dma = dma_chan + channel; | 142 | dma_t *dma = dma_channel(chan); |
121 | 143 | ||
122 | if (dma->active) | 144 | if (dma->active) |
123 | printk(KERN_ERR "dma%d: altering DMA address while " | 145 | printk(KERN_ERR "dma%d: altering DMA address while " |
124 | "DMA active\n", channel); | 146 | "DMA active\n", chan); |
125 | 147 | ||
126 | dma->sg = NULL; | 148 | dma->sg = NULL; |
127 | dma->addr = addr; | 149 | dma->addr = addr; |
@@ -133,13 +155,13 @@ EXPORT_SYMBOL(__set_dma_addr); | |||
133 | * | 155 | * |
134 | * Copy address to the structure, and set the invalid bit | 156 | * Copy address to the structure, and set the invalid bit |
135 | */ | 157 | */ |
136 | void set_dma_count (dmach_t channel, unsigned long count) | 158 | void set_dma_count (unsigned int chan, unsigned long count) |
137 | { | 159 | { |
138 | dma_t *dma = dma_chan + channel; | 160 | dma_t *dma = dma_channel(chan); |
139 | 161 | ||
140 | if (dma->active) | 162 | if (dma->active) |
141 | printk(KERN_ERR "dma%d: altering DMA count while " | 163 | printk(KERN_ERR "dma%d: altering DMA count while " |
142 | "DMA active\n", channel); | 164 | "DMA active\n", chan); |
143 | 165 | ||
144 | dma->sg = NULL; | 166 | dma->sg = NULL; |
145 | dma->count = count; | 167 | dma->count = count; |
@@ -149,13 +171,13 @@ EXPORT_SYMBOL(set_dma_count); | |||
149 | 171 | ||
150 | /* Set DMA direction mode | 172 | /* Set DMA direction mode |
151 | */ | 173 | */ |
152 | void set_dma_mode (dmach_t channel, dmamode_t mode) | 174 | void set_dma_mode (unsigned int chan, unsigned int mode) |
153 | { | 175 | { |
154 | dma_t *dma = dma_chan + channel; | 176 | dma_t *dma = dma_channel(chan); |
155 | 177 | ||
156 | if (dma->active) | 178 | if (dma->active) |
157 | printk(KERN_ERR "dma%d: altering DMA mode while " | 179 | printk(KERN_ERR "dma%d: altering DMA mode while " |
158 | "DMA active\n", channel); | 180 | "DMA active\n", chan); |
159 | 181 | ||
160 | dma->dma_mode = mode; | 182 | dma->dma_mode = mode; |
161 | dma->invalid = 1; | 183 | dma->invalid = 1; |
@@ -164,42 +186,42 @@ EXPORT_SYMBOL(set_dma_mode); | |||
164 | 186 | ||
165 | /* Enable DMA channel | 187 | /* Enable DMA channel |
166 | */ | 188 | */ |
167 | void enable_dma (dmach_t channel) | 189 | void enable_dma (unsigned int chan) |
168 | { | 190 | { |
169 | dma_t *dma = dma_chan + channel; | 191 | dma_t *dma = dma_channel(chan); |
170 | 192 | ||
171 | if (!dma->lock) | 193 | if (!dma->lock) |
172 | goto free_dma; | 194 | goto free_dma; |
173 | 195 | ||
174 | if (dma->active == 0) { | 196 | if (dma->active == 0) { |
175 | dma->active = 1; | 197 | dma->active = 1; |
176 | dma->d_ops->enable(channel, dma); | 198 | dma->d_ops->enable(chan, dma); |
177 | } | 199 | } |
178 | return; | 200 | return; |
179 | 201 | ||
180 | free_dma: | 202 | free_dma: |
181 | printk(KERN_ERR "dma%d: trying to enable free DMA\n", channel); | 203 | printk(KERN_ERR "dma%d: trying to enable free DMA\n", chan); |
182 | BUG(); | 204 | BUG(); |
183 | } | 205 | } |
184 | EXPORT_SYMBOL(enable_dma); | 206 | EXPORT_SYMBOL(enable_dma); |
185 | 207 | ||
186 | /* Disable DMA channel | 208 | /* Disable DMA channel |
187 | */ | 209 | */ |
188 | void disable_dma (dmach_t channel) | 210 | void disable_dma (unsigned int chan) |
189 | { | 211 | { |
190 | dma_t *dma = dma_chan + channel; | 212 | dma_t *dma = dma_channel(chan); |
191 | 213 | ||
192 | if (!dma->lock) | 214 | if (!dma->lock) |
193 | goto free_dma; | 215 | goto free_dma; |
194 | 216 | ||
195 | if (dma->active == 1) { | 217 | if (dma->active == 1) { |
196 | dma->active = 0; | 218 | dma->active = 0; |
197 | dma->d_ops->disable(channel, dma); | 219 | dma->d_ops->disable(chan, dma); |
198 | } | 220 | } |
199 | return; | 221 | return; |
200 | 222 | ||
201 | free_dma: | 223 | free_dma: |
202 | printk(KERN_ERR "dma%d: trying to disable free DMA\n", channel); | 224 | printk(KERN_ERR "dma%d: trying to disable free DMA\n", chan); |
203 | BUG(); | 225 | BUG(); |
204 | } | 226 | } |
205 | EXPORT_SYMBOL(disable_dma); | 227 | EXPORT_SYMBOL(disable_dma); |
@@ -207,45 +229,38 @@ EXPORT_SYMBOL(disable_dma); | |||
207 | /* | 229 | /* |
208 | * Is the specified DMA channel active? | 230 | * Is the specified DMA channel active? |
209 | */ | 231 | */ |
210 | int dma_channel_active(dmach_t channel) | 232 | int dma_channel_active(unsigned int chan) |
211 | { | 233 | { |
212 | return dma_chan[channel].active; | 234 | dma_t *dma = dma_channel(chan); |
235 | return dma->active; | ||
213 | } | 236 | } |
214 | EXPORT_SYMBOL(dma_channel_active); | 237 | EXPORT_SYMBOL(dma_channel_active); |
215 | 238 | ||
216 | void set_dma_page(dmach_t channel, char pagenr) | 239 | void set_dma_page(unsigned int chan, char pagenr) |
217 | { | 240 | { |
218 | printk(KERN_ERR "dma%d: trying to set_dma_page\n", channel); | 241 | printk(KERN_ERR "dma%d: trying to set_dma_page\n", chan); |
219 | } | 242 | } |
220 | EXPORT_SYMBOL(set_dma_page); | 243 | EXPORT_SYMBOL(set_dma_page); |
221 | 244 | ||
222 | void set_dma_speed(dmach_t channel, int cycle_ns) | 245 | void set_dma_speed(unsigned int chan, int cycle_ns) |
223 | { | 246 | { |
224 | dma_t *dma = dma_chan + channel; | 247 | dma_t *dma = dma_channel(chan); |
225 | int ret = 0; | 248 | int ret = 0; |
226 | 249 | ||
227 | if (dma->d_ops->setspeed) | 250 | if (dma->d_ops->setspeed) |
228 | ret = dma->d_ops->setspeed(channel, dma, cycle_ns); | 251 | ret = dma->d_ops->setspeed(chan, dma, cycle_ns); |
229 | dma->speed = ret; | 252 | dma->speed = ret; |
230 | } | 253 | } |
231 | EXPORT_SYMBOL(set_dma_speed); | 254 | EXPORT_SYMBOL(set_dma_speed); |
232 | 255 | ||
233 | int get_dma_residue(dmach_t channel) | 256 | int get_dma_residue(unsigned int chan) |
234 | { | 257 | { |
235 | dma_t *dma = dma_chan + channel; | 258 | dma_t *dma = dma_channel(chan); |
236 | int ret = 0; | 259 | int ret = 0; |
237 | 260 | ||
238 | if (dma->d_ops->residue) | 261 | if (dma->d_ops->residue) |
239 | ret = dma->d_ops->residue(channel, dma); | 262 | ret = dma->d_ops->residue(chan, dma); |
240 | 263 | ||
241 | return ret; | 264 | return ret; |
242 | } | 265 | } |
243 | EXPORT_SYMBOL(get_dma_residue); | 266 | EXPORT_SYMBOL(get_dma_residue); |
244 | |||
245 | static int __init init_dma(void) | ||
246 | { | ||
247 | arch_dma_init(dma_chan); | ||
248 | return 0; | ||
249 | } | ||
250 | |||
251 | core_initcall(init_dma); | ||
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 77b047475539..d662a2f1fd85 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/vfpmacros.h> | 20 | #include <asm/vfpmacros.h> |
21 | #include <mach/entry-macro.S> | 21 | #include <mach/entry-macro.S> |
22 | #include <asm/thread_notify.h> | 22 | #include <asm/thread_notify.h> |
23 | #include <asm/unwind.h> | ||
23 | 24 | ||
24 | #include "entry-header.S" | 25 | #include "entry-header.S" |
25 | 26 | ||
@@ -123,6 +124,8 @@ ENDPROC(__und_invalid) | |||
123 | #endif | 124 | #endif |
124 | 125 | ||
125 | .macro svc_entry, stack_hole=0 | 126 | .macro svc_entry, stack_hole=0 |
127 | UNWIND(.fnstart ) | ||
128 | UNWIND(.save {r0 - pc} ) | ||
126 | sub sp, sp, #(S_FRAME_SIZE + \stack_hole) | 129 | sub sp, sp, #(S_FRAME_SIZE + \stack_hole) |
127 | SPFIX( tst sp, #4 ) | 130 | SPFIX( tst sp, #4 ) |
128 | SPFIX( bicne sp, sp, #4 ) | 131 | SPFIX( bicne sp, sp, #4 ) |
@@ -196,6 +199,7 @@ __dabt_svc: | |||
196 | ldr r0, [sp, #S_PSR] | 199 | ldr r0, [sp, #S_PSR] |
197 | msr spsr_cxsf, r0 | 200 | msr spsr_cxsf, r0 |
198 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr | 201 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr |
202 | UNWIND(.fnend ) | ||
199 | ENDPROC(__dabt_svc) | 203 | ENDPROC(__dabt_svc) |
200 | 204 | ||
201 | .align 5 | 205 | .align 5 |
@@ -228,6 +232,7 @@ __irq_svc: | |||
228 | bleq trace_hardirqs_on | 232 | bleq trace_hardirqs_on |
229 | #endif | 233 | #endif |
230 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr | 234 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr |
235 | UNWIND(.fnend ) | ||
231 | ENDPROC(__irq_svc) | 236 | ENDPROC(__irq_svc) |
232 | 237 | ||
233 | .ltorg | 238 | .ltorg |
@@ -278,6 +283,7 @@ __und_svc: | |||
278 | ldr lr, [sp, #S_PSR] @ Get SVC cpsr | 283 | ldr lr, [sp, #S_PSR] @ Get SVC cpsr |
279 | msr spsr_cxsf, lr | 284 | msr spsr_cxsf, lr |
280 | ldmia sp, {r0 - pc}^ @ Restore SVC registers | 285 | ldmia sp, {r0 - pc}^ @ Restore SVC registers |
286 | UNWIND(.fnend ) | ||
281 | ENDPROC(__und_svc) | 287 | ENDPROC(__und_svc) |
282 | 288 | ||
283 | .align 5 | 289 | .align 5 |
@@ -320,6 +326,7 @@ __pabt_svc: | |||
320 | ldr r0, [sp, #S_PSR] | 326 | ldr r0, [sp, #S_PSR] |
321 | msr spsr_cxsf, r0 | 327 | msr spsr_cxsf, r0 |
322 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr | 328 | ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr |
329 | UNWIND(.fnend ) | ||
323 | ENDPROC(__pabt_svc) | 330 | ENDPROC(__pabt_svc) |
324 | 331 | ||
325 | .align 5 | 332 | .align 5 |
@@ -343,6 +350,8 @@ ENDPROC(__pabt_svc) | |||
343 | #endif | 350 | #endif |
344 | 351 | ||
345 | .macro usr_entry | 352 | .macro usr_entry |
353 | UNWIND(.fnstart ) | ||
354 | UNWIND(.cantunwind ) @ don't unwind the user space | ||
346 | sub sp, sp, #S_FRAME_SIZE | 355 | sub sp, sp, #S_FRAME_SIZE |
347 | stmib sp, {r1 - r12} | 356 | stmib sp, {r1 - r12} |
348 | 357 | ||
@@ -420,6 +429,7 @@ __dabt_usr: | |||
420 | mov r2, sp | 429 | mov r2, sp |
421 | adr lr, ret_from_exception | 430 | adr lr, ret_from_exception |
422 | b do_DataAbort | 431 | b do_DataAbort |
432 | UNWIND(.fnend ) | ||
423 | ENDPROC(__dabt_usr) | 433 | ENDPROC(__dabt_usr) |
424 | 434 | ||
425 | .align 5 | 435 | .align 5 |
@@ -450,6 +460,7 @@ __irq_usr: | |||
450 | 460 | ||
451 | mov why, #0 | 461 | mov why, #0 |
452 | b ret_to_user | 462 | b ret_to_user |
463 | UNWIND(.fnend ) | ||
453 | ENDPROC(__irq_usr) | 464 | ENDPROC(__irq_usr) |
454 | 465 | ||
455 | .ltorg | 466 | .ltorg |
@@ -484,6 +495,7 @@ __und_usr: | |||
484 | #else | 495 | #else |
485 | b __und_usr_unknown | 496 | b __und_usr_unknown |
486 | #endif | 497 | #endif |
498 | UNWIND(.fnend ) | ||
487 | ENDPROC(__und_usr) | 499 | ENDPROC(__und_usr) |
488 | 500 | ||
489 | @ | 501 | @ |
@@ -650,6 +662,7 @@ ENTRY(fp_enter) | |||
650 | no_fp: mov pc, lr | 662 | no_fp: mov pc, lr |
651 | 663 | ||
652 | __und_usr_unknown: | 664 | __und_usr_unknown: |
665 | enable_irq | ||
653 | mov r0, sp | 666 | mov r0, sp |
654 | adr lr, ret_from_exception | 667 | adr lr, ret_from_exception |
655 | b do_undefinstr | 668 | b do_undefinstr |
@@ -670,14 +683,18 @@ __pabt_usr: | |||
670 | enable_irq @ Enable interrupts | 683 | enable_irq @ Enable interrupts |
671 | mov r1, sp @ regs | 684 | mov r1, sp @ regs |
672 | bl do_PrefetchAbort @ call abort handler | 685 | bl do_PrefetchAbort @ call abort handler |
686 | UNWIND(.fnend ) | ||
673 | /* fall through */ | 687 | /* fall through */ |
674 | /* | 688 | /* |
675 | * This is the return code to user mode for abort handlers | 689 | * This is the return code to user mode for abort handlers |
676 | */ | 690 | */ |
677 | ENTRY(ret_from_exception) | 691 | ENTRY(ret_from_exception) |
692 | UNWIND(.fnstart ) | ||
693 | UNWIND(.cantunwind ) | ||
678 | get_thread_info tsk | 694 | get_thread_info tsk |
679 | mov why, #0 | 695 | mov why, #0 |
680 | b ret_to_user | 696 | b ret_to_user |
697 | UNWIND(.fnend ) | ||
681 | ENDPROC(__pabt_usr) | 698 | ENDPROC(__pabt_usr) |
682 | ENDPROC(ret_from_exception) | 699 | ENDPROC(ret_from_exception) |
683 | 700 | ||
@@ -687,6 +704,8 @@ ENDPROC(ret_from_exception) | |||
687 | * previous and next are guaranteed not to be the same. | 704 | * previous and next are guaranteed not to be the same. |
688 | */ | 705 | */ |
689 | ENTRY(__switch_to) | 706 | ENTRY(__switch_to) |
707 | UNWIND(.fnstart ) | ||
708 | UNWIND(.cantunwind ) | ||
690 | add ip, r1, #TI_CPU_SAVE | 709 | add ip, r1, #TI_CPU_SAVE |
691 | ldr r3, [r2, #TI_TP_VALUE] | 710 | ldr r3, [r2, #TI_TP_VALUE] |
692 | stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack | 711 | stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack |
@@ -716,6 +735,7 @@ ENTRY(__switch_to) | |||
716 | bl atomic_notifier_call_chain | 735 | bl atomic_notifier_call_chain |
717 | mov r0, r5 | 736 | mov r0, r5 |
718 | ldmia r4, {r4 - sl, fp, sp, pc} @ Load all regs saved previously | 737 | ldmia r4, {r4 - sl, fp, sp, pc} @ Load all regs saved previously |
738 | UNWIND(.fnend ) | ||
719 | ENDPROC(__switch_to) | 739 | ENDPROC(__switch_to) |
720 | 740 | ||
721 | __INIT | 741 | __INIT |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 06269ea375c5..b8c1f1411440 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
12 | #include <asm/ftrace.h> | 12 | #include <asm/ftrace.h> |
13 | #include <mach/entry-macro.S> | 13 | #include <mach/entry-macro.S> |
14 | #include <asm/unwind.h> | ||
14 | 15 | ||
15 | #include "entry-header.S" | 16 | #include "entry-header.S" |
16 | 17 | ||
@@ -22,6 +23,8 @@ | |||
22 | * stack. | 23 | * stack. |
23 | */ | 24 | */ |
24 | ret_fast_syscall: | 25 | ret_fast_syscall: |
26 | UNWIND(.fnstart ) | ||
27 | UNWIND(.cantunwind ) | ||
25 | disable_irq @ disable interrupts | 28 | disable_irq @ disable interrupts |
26 | ldr r1, [tsk, #TI_FLAGS] | 29 | ldr r1, [tsk, #TI_FLAGS] |
27 | tst r1, #_TIF_WORK_MASK | 30 | tst r1, #_TIF_WORK_MASK |
@@ -38,6 +41,7 @@ ret_fast_syscall: | |||
38 | mov r0, r0 | 41 | mov r0, r0 |
39 | add sp, sp, #S_FRAME_SIZE - S_PC | 42 | add sp, sp, #S_FRAME_SIZE - S_PC |
40 | movs pc, lr @ return & move spsr_svc into cpsr | 43 | movs pc, lr @ return & move spsr_svc into cpsr |
44 | UNWIND(.fnend ) | ||
41 | 45 | ||
42 | /* | 46 | /* |
43 | * Ok, we need to do extra processing, enter the slow path. | 47 | * Ok, we need to do extra processing, enter the slow path. |
@@ -136,7 +140,7 @@ ENTRY(mcount) | |||
136 | ldmia sp!, {r0-r3, pc} | 140 | ldmia sp!, {r0-r3, pc} |
137 | 141 | ||
138 | trace: | 142 | trace: |
139 | ldr r1, [fp, #-4] | 143 | ldr r1, [fp, #-4] @ lr of instrumented routine |
140 | mov r0, lr | 144 | mov r0, lr |
141 | sub r0, r0, #MCOUNT_INSN_SIZE | 145 | sub r0, r0, #MCOUNT_INSN_SIZE |
142 | mov lr, pc | 146 | mov lr, pc |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 7141cee1fab7..363db186cb93 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -101,7 +101,7 @@ unlock: | |||
101 | /* Handle bad interrupts */ | 101 | /* Handle bad interrupts */ |
102 | static struct irq_desc bad_irq_desc = { | 102 | static struct irq_desc bad_irq_desc = { |
103 | .handle_irq = handle_bad_irq, | 103 | .handle_irq = handle_bad_irq, |
104 | .lock = SPIN_LOCK_UNLOCKED | 104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), |
105 | }; | 105 | }; |
106 | 106 | ||
107 | /* | 107 | /* |
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c index dab48f27263f..13dbd5bf5cc2 100644 --- a/arch/arm/kernel/module.c +++ b/arch/arm/kernel/module.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/sections.h> | 24 | #include <asm/sections.h> |
25 | #include <asm/unwind.h> | ||
25 | 26 | ||
26 | #ifdef CONFIG_XIP_KERNEL | 27 | #ifdef CONFIG_XIP_KERNEL |
27 | /* | 28 | /* |
@@ -66,6 +67,24 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, | |||
66 | char *secstrings, | 67 | char *secstrings, |
67 | struct module *mod) | 68 | struct module *mod) |
68 | { | 69 | { |
70 | #ifdef CONFIG_ARM_UNWIND | ||
71 | Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum; | ||
72 | |||
73 | for (s = sechdrs; s < sechdrs_end; s++) { | ||
74 | if (strcmp(".ARM.exidx.init.text", secstrings + s->sh_name) == 0) | ||
75 | mod->arch.unw_sec_init = s; | ||
76 | else if (strcmp(".ARM.exidx.devinit.text", secstrings + s->sh_name) == 0) | ||
77 | mod->arch.unw_sec_devinit = s; | ||
78 | else if (strcmp(".ARM.exidx", secstrings + s->sh_name) == 0) | ||
79 | mod->arch.unw_sec_core = s; | ||
80 | else if (strcmp(".init.text", secstrings + s->sh_name) == 0) | ||
81 | mod->arch.sec_init_text = s; | ||
82 | else if (strcmp(".devinit.text", secstrings + s->sh_name) == 0) | ||
83 | mod->arch.sec_devinit_text = s; | ||
84 | else if (strcmp(".text", secstrings + s->sh_name) == 0) | ||
85 | mod->arch.sec_core_text = s; | ||
86 | } | ||
87 | #endif | ||
69 | return 0; | 88 | return 0; |
70 | } | 89 | } |
71 | 90 | ||
@@ -104,6 +123,10 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, | |||
104 | loc = dstsec->sh_addr + rel->r_offset; | 123 | loc = dstsec->sh_addr + rel->r_offset; |
105 | 124 | ||
106 | switch (ELF32_R_TYPE(rel->r_info)) { | 125 | switch (ELF32_R_TYPE(rel->r_info)) { |
126 | case R_ARM_NONE: | ||
127 | /* ignore */ | ||
128 | break; | ||
129 | |||
107 | case R_ARM_ABS32: | 130 | case R_ARM_ABS32: |
108 | *(u32 *)loc += sym->st_value; | 131 | *(u32 *)loc += sym->st_value; |
109 | break; | 132 | break; |
@@ -132,6 +155,11 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, | |||
132 | *(u32 *)loc |= offset & 0x00ffffff; | 155 | *(u32 *)loc |= offset & 0x00ffffff; |
133 | break; | 156 | break; |
134 | 157 | ||
158 | case R_ARM_PREL31: | ||
159 | offset = *(u32 *)loc + sym->st_value - loc; | ||
160 | *(u32 *)loc = offset & 0x7fffffff; | ||
161 | break; | ||
162 | |||
135 | default: | 163 | default: |
136 | printk(KERN_ERR "%s: unknown relocation: %u\n", | 164 | printk(KERN_ERR "%s: unknown relocation: %u\n", |
137 | module->name, ELF32_R_TYPE(rel->r_info)); | 165 | module->name, ELF32_R_TYPE(rel->r_info)); |
@@ -150,14 +178,50 @@ apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, | |||
150 | return -ENOEXEC; | 178 | return -ENOEXEC; |
151 | } | 179 | } |
152 | 180 | ||
181 | #ifdef CONFIG_ARM_UNWIND | ||
182 | static void register_unwind_tables(struct module *mod) | ||
183 | { | ||
184 | if (mod->arch.unw_sec_init && mod->arch.sec_init_text) | ||
185 | mod->arch.unwind_init = | ||
186 | unwind_table_add(mod->arch.unw_sec_init->sh_addr, | ||
187 | mod->arch.unw_sec_init->sh_size, | ||
188 | mod->arch.sec_init_text->sh_addr, | ||
189 | mod->arch.sec_init_text->sh_size); | ||
190 | if (mod->arch.unw_sec_devinit && mod->arch.sec_devinit_text) | ||
191 | mod->arch.unwind_devinit = | ||
192 | unwind_table_add(mod->arch.unw_sec_devinit->sh_addr, | ||
193 | mod->arch.unw_sec_devinit->sh_size, | ||
194 | mod->arch.sec_devinit_text->sh_addr, | ||
195 | mod->arch.sec_devinit_text->sh_size); | ||
196 | if (mod->arch.unw_sec_core && mod->arch.sec_core_text) | ||
197 | mod->arch.unwind_core = | ||
198 | unwind_table_add(mod->arch.unw_sec_core->sh_addr, | ||
199 | mod->arch.unw_sec_core->sh_size, | ||
200 | mod->arch.sec_core_text->sh_addr, | ||
201 | mod->arch.sec_core_text->sh_size); | ||
202 | } | ||
203 | |||
204 | static void unregister_unwind_tables(struct module *mod) | ||
205 | { | ||
206 | unwind_table_del(mod->arch.unwind_init); | ||
207 | unwind_table_del(mod->arch.unwind_devinit); | ||
208 | unwind_table_del(mod->arch.unwind_core); | ||
209 | } | ||
210 | #else | ||
211 | static inline void register_unwind_tables(struct module *mod) { } | ||
212 | static inline void unregister_unwind_tables(struct module *mod) { } | ||
213 | #endif | ||
214 | |||
153 | int | 215 | int |
154 | module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs, | 216 | module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs, |
155 | struct module *module) | 217 | struct module *module) |
156 | { | 218 | { |
219 | register_unwind_tables(module); | ||
157 | return 0; | 220 | return 0; |
158 | } | 221 | } |
159 | 222 | ||
160 | void | 223 | void |
161 | module_arch_cleanup(struct module *mod) | 224 | module_arch_cleanup(struct module *mod) |
162 | { | 225 | { |
226 | unregister_unwind_tables(mod); | ||
163 | } | 227 | } |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index d3ea6fa89521..af377c73d90b 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/processor.h> | 34 | #include <asm/processor.h> |
35 | #include <asm/system.h> | 35 | #include <asm/system.h> |
36 | #include <asm/thread_notify.h> | 36 | #include <asm/thread_notify.h> |
37 | #include <asm/stacktrace.h> | ||
37 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
38 | 39 | ||
39 | static const char *processor_modes[] = { | 40 | static const char *processor_modes[] = { |
@@ -372,23 +373,21 @@ EXPORT_SYMBOL(kernel_thread); | |||
372 | 373 | ||
373 | unsigned long get_wchan(struct task_struct *p) | 374 | unsigned long get_wchan(struct task_struct *p) |
374 | { | 375 | { |
375 | unsigned long fp, lr; | 376 | struct stackframe frame; |
376 | unsigned long stack_start, stack_end; | ||
377 | int count = 0; | 377 | int count = 0; |
378 | if (!p || p == current || p->state == TASK_RUNNING) | 378 | if (!p || p == current || p->state == TASK_RUNNING) |
379 | return 0; | 379 | return 0; |
380 | 380 | ||
381 | stack_start = (unsigned long)end_of_stack(p); | 381 | frame.fp = thread_saved_fp(p); |
382 | stack_end = (unsigned long)task_stack_page(p) + THREAD_SIZE; | 382 | frame.sp = thread_saved_sp(p); |
383 | 383 | frame.lr = 0; /* recovered from the stack */ | |
384 | fp = thread_saved_fp(p); | 384 | frame.pc = thread_saved_pc(p); |
385 | do { | 385 | do { |
386 | if (fp < stack_start || fp > stack_end) | 386 | int ret = unwind_frame(&frame); |
387 | if (ret < 0) | ||
387 | return 0; | 388 | return 0; |
388 | lr = ((unsigned long *)fp)[-1]; | 389 | if (!in_sched_functions(frame.pc)) |
389 | if (!in_sched_functions(lr)) | 390 | return frame.pc; |
390 | return lr; | ||
391 | fp = *(unsigned long *) (fp - 12); | ||
392 | } while (count ++ < 16); | 391 | } while (count ++ < 16); |
393 | return 0; | 392 | return 0; |
394 | } | 393 | } |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index df653ea59250..89882a1d0187 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -653,6 +653,54 @@ static int ptrace_setcrunchregs(struct task_struct *tsk, void __user *ufp) | |||
653 | } | 653 | } |
654 | #endif | 654 | #endif |
655 | 655 | ||
656 | #ifdef CONFIG_VFP | ||
657 | /* | ||
658 | * Get the child VFP state. | ||
659 | */ | ||
660 | static int ptrace_getvfpregs(struct task_struct *tsk, void __user *data) | ||
661 | { | ||
662 | struct thread_info *thread = task_thread_info(tsk); | ||
663 | union vfp_state *vfp = &thread->vfpstate; | ||
664 | struct user_vfp __user *ufp = data; | ||
665 | |||
666 | vfp_sync_state(thread); | ||
667 | |||
668 | /* copy the floating point registers */ | ||
669 | if (copy_to_user(&ufp->fpregs, &vfp->hard.fpregs, | ||
670 | sizeof(vfp->hard.fpregs))) | ||
671 | return -EFAULT; | ||
672 | |||
673 | /* copy the status and control register */ | ||
674 | if (put_user(vfp->hard.fpscr, &ufp->fpscr)) | ||
675 | return -EFAULT; | ||
676 | |||
677 | return 0; | ||
678 | } | ||
679 | |||
680 | /* | ||
681 | * Set the child VFP state. | ||
682 | */ | ||
683 | static int ptrace_setvfpregs(struct task_struct *tsk, void __user *data) | ||
684 | { | ||
685 | struct thread_info *thread = task_thread_info(tsk); | ||
686 | union vfp_state *vfp = &thread->vfpstate; | ||
687 | struct user_vfp __user *ufp = data; | ||
688 | |||
689 | vfp_sync_state(thread); | ||
690 | |||
691 | /* copy the floating point registers */ | ||
692 | if (copy_from_user(&vfp->hard.fpregs, &ufp->fpregs, | ||
693 | sizeof(vfp->hard.fpregs))) | ||
694 | return -EFAULT; | ||
695 | |||
696 | /* copy the status and control register */ | ||
697 | if (get_user(vfp->hard.fpscr, &ufp->fpscr)) | ||
698 | return -EFAULT; | ||
699 | |||
700 | return 0; | ||
701 | } | ||
702 | #endif | ||
703 | |||
656 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 704 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
657 | { | 705 | { |
658 | int ret; | 706 | int ret; |
@@ -775,6 +823,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
775 | break; | 823 | break; |
776 | #endif | 824 | #endif |
777 | 825 | ||
826 | #ifdef CONFIG_VFP | ||
827 | case PTRACE_GETVFPREGS: | ||
828 | ret = ptrace_getvfpregs(child, (void __user *)data); | ||
829 | break; | ||
830 | |||
831 | case PTRACE_SETVFPREGS: | ||
832 | ret = ptrace_setvfpregs(child, (void __user *)data); | ||
833 | break; | ||
834 | #endif | ||
835 | |||
778 | default: | 836 | default: |
779 | ret = ptrace_request(child, request, addr, data); | 837 | ret = ptrace_request(child, request, addr, data); |
780 | break; | 838 | break; |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 7049815d66d5..8d21427bb679 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <asm/mach/irq.h> | 40 | #include <asm/mach/irq.h> |
41 | #include <asm/mach/time.h> | 41 | #include <asm/mach/time.h> |
42 | #include <asm/traps.h> | 42 | #include <asm/traps.h> |
43 | #include <asm/unwind.h> | ||
43 | 44 | ||
44 | #include "compat.h" | 45 | #include "compat.h" |
45 | #include "atags.h" | 46 | #include "atags.h" |
@@ -684,6 +685,8 @@ void __init setup_arch(char **cmdline_p) | |||
684 | struct machine_desc *mdesc; | 685 | struct machine_desc *mdesc; |
685 | char *from = default_command_line; | 686 | char *from = default_command_line; |
686 | 687 | ||
688 | unwind_init(); | ||
689 | |||
687 | setup_processor(); | 690 | setup_processor(); |
688 | mdesc = setup_machine(machine_arch_type); | 691 | mdesc = setup_machine(machine_arch_type); |
689 | machine_name = mdesc->name; | 692 | machine_name = mdesc->name; |
@@ -779,6 +782,8 @@ static const char *hwcap_str[] = { | |||
779 | "crunch", | 782 | "crunch", |
780 | "thumbee", | 783 | "thumbee", |
781 | "neon", | 784 | "neon", |
785 | "vfpv3", | ||
786 | "vfpv3d16", | ||
782 | NULL | 787 | NULL |
783 | }; | 788 | }; |
784 | 789 | ||
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 55fa7ff96a3e..7801aac3c043 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -93,6 +93,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
93 | pmd = pmd_offset(pgd + pgd_index(PHYS_OFFSET), PHYS_OFFSET); | 93 | pmd = pmd_offset(pgd + pgd_index(PHYS_OFFSET), PHYS_OFFSET); |
94 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | | 94 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | |
95 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); | 95 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); |
96 | flush_pmd_entry(pmd); | ||
96 | 97 | ||
97 | /* | 98 | /* |
98 | * We need to tell the secondary core where to find | 99 | * We need to tell the secondary core where to find |
@@ -130,6 +131,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
130 | secondary_data.pgdir = 0; | 131 | secondary_data.pgdir = 0; |
131 | 132 | ||
132 | *pmd = __pmd(0); | 133 | *pmd = __pmd(0); |
134 | clean_pmd_entry(pmd); | ||
133 | pgd_free(&init_mm, pgd); | 135 | pgd_free(&init_mm, pgd); |
134 | 136 | ||
135 | if (ret) { | 137 | if (ret) { |
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index fc650f64df43..9f444e5cc165 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c | |||
@@ -2,35 +2,60 @@ | |||
2 | #include <linux/sched.h> | 2 | #include <linux/sched.h> |
3 | #include <linux/stacktrace.h> | 3 | #include <linux/stacktrace.h> |
4 | 4 | ||
5 | #include "stacktrace.h" | 5 | #include <asm/stacktrace.h> |
6 | 6 | ||
7 | int walk_stackframe(unsigned long fp, unsigned long low, unsigned long high, | 7 | #if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) |
8 | int (*fn)(struct stackframe *, void *), void *data) | 8 | /* |
9 | * Unwind the current stack frame and store the new register values in the | ||
10 | * structure passed as argument. Unwinding is equivalent to a function return, | ||
11 | * hence the new PC value rather than LR should be used for backtrace. | ||
12 | * | ||
13 | * With framepointer enabled, a simple function prologue looks like this: | ||
14 | * mov ip, sp | ||
15 | * stmdb sp!, {fp, ip, lr, pc} | ||
16 | * sub fp, ip, #4 | ||
17 | * | ||
18 | * A simple function epilogue looks like this: | ||
19 | * ldm sp, {fp, sp, pc} | ||
20 | * | ||
21 | * Note that with framepointer enabled, even the leaf functions have the same | ||
22 | * prologue and epilogue, therefore we can ignore the LR value in this case. | ||
23 | */ | ||
24 | int unwind_frame(struct stackframe *frame) | ||
9 | { | 25 | { |
10 | struct stackframe *frame; | 26 | unsigned long high, low; |
11 | 27 | unsigned long fp = frame->fp; | |
12 | do { | ||
13 | /* | ||
14 | * Check current frame pointer is within bounds | ||
15 | */ | ||
16 | if (fp < (low + 12) || fp + 4 >= high) | ||
17 | break; | ||
18 | 28 | ||
19 | frame = (struct stackframe *)(fp - 12); | 29 | /* only go to a higher address on the stack */ |
30 | low = frame->sp; | ||
31 | high = ALIGN(low, THREAD_SIZE) + THREAD_SIZE; | ||
20 | 32 | ||
21 | if (fn(frame, data)) | 33 | /* check current frame pointer is within bounds */ |
22 | break; | 34 | if (fp < (low + 12) || fp + 4 >= high) |
35 | return -EINVAL; | ||
23 | 36 | ||
24 | /* | 37 | /* restore the registers from the stack frame */ |
25 | * Update the low bound - the next frame must always | 38 | frame->fp = *(unsigned long *)(fp - 12); |
26 | * be at a higher address than the current frame. | 39 | frame->sp = *(unsigned long *)(fp - 8); |
27 | */ | 40 | frame->pc = *(unsigned long *)(fp - 4); |
28 | low = fp + 4; | ||
29 | fp = frame->fp; | ||
30 | } while (fp); | ||
31 | 41 | ||
32 | return 0; | 42 | return 0; |
33 | } | 43 | } |
44 | #endif | ||
45 | |||
46 | void walk_stackframe(struct stackframe *frame, | ||
47 | int (*fn)(struct stackframe *, void *), void *data) | ||
48 | { | ||
49 | while (1) { | ||
50 | int ret; | ||
51 | |||
52 | if (fn(frame, data)) | ||
53 | break; | ||
54 | ret = unwind_frame(frame); | ||
55 | if (ret < 0) | ||
56 | break; | ||
57 | } | ||
58 | } | ||
34 | EXPORT_SYMBOL(walk_stackframe); | 59 | EXPORT_SYMBOL(walk_stackframe); |
35 | 60 | ||
36 | #ifdef CONFIG_STACKTRACE | 61 | #ifdef CONFIG_STACKTRACE |
@@ -44,7 +69,7 @@ static int save_trace(struct stackframe *frame, void *d) | |||
44 | { | 69 | { |
45 | struct stack_trace_data *data = d; | 70 | struct stack_trace_data *data = d; |
46 | struct stack_trace *trace = data->trace; | 71 | struct stack_trace *trace = data->trace; |
47 | unsigned long addr = frame->lr; | 72 | unsigned long addr = frame->pc; |
48 | 73 | ||
49 | if (data->no_sched_functions && in_sched_functions(addr)) | 74 | if (data->no_sched_functions && in_sched_functions(addr)) |
50 | return 0; | 75 | return 0; |
@@ -61,11 +86,10 @@ static int save_trace(struct stackframe *frame, void *d) | |||
61 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | 86 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) |
62 | { | 87 | { |
63 | struct stack_trace_data data; | 88 | struct stack_trace_data data; |
64 | unsigned long fp, base; | 89 | struct stackframe frame; |
65 | 90 | ||
66 | data.trace = trace; | 91 | data.trace = trace; |
67 | data.skip = trace->skip; | 92 | data.skip = trace->skip; |
68 | base = (unsigned long)task_stack_page(tsk); | ||
69 | 93 | ||
70 | if (tsk != current) { | 94 | if (tsk != current) { |
71 | #ifdef CONFIG_SMP | 95 | #ifdef CONFIG_SMP |
@@ -76,14 +100,22 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | |||
76 | BUG(); | 100 | BUG(); |
77 | #else | 101 | #else |
78 | data.no_sched_functions = 1; | 102 | data.no_sched_functions = 1; |
79 | fp = thread_saved_fp(tsk); | 103 | frame.fp = thread_saved_fp(tsk); |
104 | frame.sp = thread_saved_sp(tsk); | ||
105 | frame.lr = 0; /* recovered from the stack */ | ||
106 | frame.pc = thread_saved_pc(tsk); | ||
80 | #endif | 107 | #endif |
81 | } else { | 108 | } else { |
109 | register unsigned long current_sp asm ("sp"); | ||
110 | |||
82 | data.no_sched_functions = 0; | 111 | data.no_sched_functions = 0; |
83 | asm("mov %0, fp" : "=r" (fp)); | 112 | frame.fp = (unsigned long)__builtin_frame_address(0); |
113 | frame.sp = current_sp; | ||
114 | frame.lr = (unsigned long)__builtin_return_address(0); | ||
115 | frame.pc = (unsigned long)save_stack_trace_tsk; | ||
84 | } | 116 | } |
85 | 117 | ||
86 | walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); | 118 | walk_stackframe(&frame, save_trace, &data); |
87 | if (trace->nr_entries < trace->max_entries) | 119 | if (trace->nr_entries < trace->max_entries) |
88 | trace->entries[trace->nr_entries++] = ULONG_MAX; | 120 | trace->entries[trace->nr_entries++] = ULONG_MAX; |
89 | } | 121 | } |
diff --git a/arch/arm/kernel/stacktrace.h b/arch/arm/kernel/stacktrace.h deleted file mode 100644 index e9fd20cb5662..000000000000 --- a/arch/arm/kernel/stacktrace.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | struct stackframe { | ||
2 | unsigned long fp; | ||
3 | unsigned long sp; | ||
4 | unsigned long lr; | ||
5 | unsigned long pc; | ||
6 | }; | ||
7 | |||
8 | int walk_stackframe(unsigned long fp, unsigned long low, unsigned long high, | ||
9 | int (*fn)(struct stackframe *, void *), void *data); | ||
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index c68b44aa88d2..4cdc4a0bd02d 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -33,6 +33,7 @@ | |||
33 | 33 | ||
34 | #include <asm/leds.h> | 34 | #include <asm/leds.h> |
35 | #include <asm/thread_info.h> | 35 | #include <asm/thread_info.h> |
36 | #include <asm/stacktrace.h> | ||
36 | #include <asm/mach/time.h> | 37 | #include <asm/mach/time.h> |
37 | 38 | ||
38 | /* | 39 | /* |
@@ -55,14 +56,22 @@ EXPORT_SYMBOL(rtc_lock); | |||
55 | #ifdef CONFIG_SMP | 56 | #ifdef CONFIG_SMP |
56 | unsigned long profile_pc(struct pt_regs *regs) | 57 | unsigned long profile_pc(struct pt_regs *regs) |
57 | { | 58 | { |
58 | unsigned long fp, pc = instruction_pointer(regs); | 59 | struct stackframe frame; |
59 | 60 | ||
60 | if (in_lock_functions(pc)) { | 61 | if (!in_lock_functions(regs->ARM_pc)) |
61 | fp = regs->ARM_fp; | 62 | return regs->ARM_pc; |
62 | pc = ((unsigned long *)fp)[-1]; | 63 | |
63 | } | 64 | frame.fp = regs->ARM_fp; |
65 | frame.sp = regs->ARM_sp; | ||
66 | frame.lr = regs->ARM_lr; | ||
67 | frame.pc = regs->ARM_pc; | ||
68 | do { | ||
69 | int ret = unwind_frame(&frame); | ||
70 | if (ret < 0) | ||
71 | return 0; | ||
72 | } while (in_lock_functions(frame.pc)); | ||
64 | 73 | ||
65 | return pc; | 74 | return frame.pc; |
66 | } | 75 | } |
67 | EXPORT_SYMBOL(profile_pc); | 76 | EXPORT_SYMBOL(profile_pc); |
68 | #endif | 77 | #endif |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 79abc4ddc0cf..57eb0f6f6005 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/system.h> | 27 | #include <asm/system.h> |
28 | #include <asm/unistd.h> | 28 | #include <asm/unistd.h> |
29 | #include <asm/traps.h> | 29 | #include <asm/traps.h> |
30 | #include <asm/unwind.h> | ||
30 | 31 | ||
31 | #include "ptrace.h" | 32 | #include "ptrace.h" |
32 | #include "signal.h" | 33 | #include "signal.h" |
@@ -61,6 +62,7 @@ void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long | |||
61 | dump_mem("Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs)); | 62 | dump_mem("Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs)); |
62 | } | 63 | } |
63 | 64 | ||
65 | #ifndef CONFIG_ARM_UNWIND | ||
64 | /* | 66 | /* |
65 | * Stack pointers should always be within the kernels view of | 67 | * Stack pointers should always be within the kernels view of |
66 | * physical memory. If it is not there, then we can't dump | 68 | * physical memory. If it is not there, then we can't dump |
@@ -74,6 +76,7 @@ static int verify_stack(unsigned long sp) | |||
74 | 76 | ||
75 | return 0; | 77 | return 0; |
76 | } | 78 | } |
79 | #endif | ||
77 | 80 | ||
78 | /* | 81 | /* |
79 | * Dump out the contents of some memory nicely... | 82 | * Dump out the contents of some memory nicely... |
@@ -150,13 +153,33 @@ static void dump_instr(struct pt_regs *regs) | |||
150 | set_fs(fs); | 153 | set_fs(fs); |
151 | } | 154 | } |
152 | 155 | ||
156 | #ifdef CONFIG_ARM_UNWIND | ||
157 | static inline void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) | ||
158 | { | ||
159 | unwind_backtrace(regs, tsk); | ||
160 | } | ||
161 | #else | ||
153 | static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) | 162 | static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) |
154 | { | 163 | { |
155 | unsigned int fp; | 164 | unsigned int fp, mode; |
156 | int ok = 1; | 165 | int ok = 1; |
157 | 166 | ||
158 | printk("Backtrace: "); | 167 | printk("Backtrace: "); |
159 | fp = regs->ARM_fp; | 168 | |
169 | if (!tsk) | ||
170 | tsk = current; | ||
171 | |||
172 | if (regs) { | ||
173 | fp = regs->ARM_fp; | ||
174 | mode = processor_mode(regs); | ||
175 | } else if (tsk != current) { | ||
176 | fp = thread_saved_fp(tsk); | ||
177 | mode = 0x10; | ||
178 | } else { | ||
179 | asm("mov %0, fp" : "=r" (fp) : : "cc"); | ||
180 | mode = 0x10; | ||
181 | } | ||
182 | |||
160 | if (!fp) { | 183 | if (!fp) { |
161 | printk("no frame pointer"); | 184 | printk("no frame pointer"); |
162 | ok = 0; | 185 | ok = 0; |
@@ -168,29 +191,20 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) | |||
168 | printk("\n"); | 191 | printk("\n"); |
169 | 192 | ||
170 | if (ok) | 193 | if (ok) |
171 | c_backtrace(fp, processor_mode(regs)); | 194 | c_backtrace(fp, mode); |
172 | } | 195 | } |
196 | #endif | ||
173 | 197 | ||
174 | void dump_stack(void) | 198 | void dump_stack(void) |
175 | { | 199 | { |
176 | __backtrace(); | 200 | dump_backtrace(NULL, NULL); |
177 | } | 201 | } |
178 | 202 | ||
179 | EXPORT_SYMBOL(dump_stack); | 203 | EXPORT_SYMBOL(dump_stack); |
180 | 204 | ||
181 | void show_stack(struct task_struct *tsk, unsigned long *sp) | 205 | void show_stack(struct task_struct *tsk, unsigned long *sp) |
182 | { | 206 | { |
183 | unsigned long fp; | 207 | dump_backtrace(NULL, tsk); |
184 | |||
185 | if (!tsk) | ||
186 | tsk = current; | ||
187 | |||
188 | if (tsk != current) | ||
189 | fp = thread_saved_fp(tsk); | ||
190 | else | ||
191 | asm("mov %0, fp" : "=r" (fp) : : "cc"); | ||
192 | |||
193 | c_backtrace(fp, 0x10); | ||
194 | barrier(); | 208 | barrier(); |
195 | } | 209 | } |
196 | 210 | ||
diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c new file mode 100644 index 000000000000..1dedc2c7ff49 --- /dev/null +++ b/arch/arm/kernel/unwind.c | |||
@@ -0,0 +1,434 @@ | |||
1 | /* | ||
2 | * arch/arm/kernel/unwind.c | ||
3 | * | ||
4 | * Copyright (C) 2008 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | * | ||
19 | * | ||
20 | * Stack unwinding support for ARM | ||
21 | * | ||
22 | * An ARM EABI version of gcc is required to generate the unwind | ||
23 | * tables. For information about the structure of the unwind tables, | ||
24 | * see "Exception Handling ABI for the ARM Architecture" at: | ||
25 | * | ||
26 | * http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.abi/index.html | ||
27 | */ | ||
28 | |||
29 | #include <linux/kernel.h> | ||
30 | #include <linux/init.h> | ||
31 | #include <linux/module.h> | ||
32 | #include <linux/sched.h> | ||
33 | #include <linux/slab.h> | ||
34 | #include <linux/spinlock.h> | ||
35 | #include <linux/list.h> | ||
36 | |||
37 | #include <asm/stacktrace.h> | ||
38 | #include <asm/traps.h> | ||
39 | #include <asm/unwind.h> | ||
40 | |||
41 | /* Dummy functions to avoid linker complaints */ | ||
42 | void __aeabi_unwind_cpp_pr0(void) | ||
43 | { | ||
44 | }; | ||
45 | EXPORT_SYMBOL(__aeabi_unwind_cpp_pr0); | ||
46 | |||
47 | void __aeabi_unwind_cpp_pr1(void) | ||
48 | { | ||
49 | }; | ||
50 | EXPORT_SYMBOL(__aeabi_unwind_cpp_pr1); | ||
51 | |||
52 | void __aeabi_unwind_cpp_pr2(void) | ||
53 | { | ||
54 | }; | ||
55 | EXPORT_SYMBOL(__aeabi_unwind_cpp_pr2); | ||
56 | |||
57 | struct unwind_ctrl_block { | ||
58 | unsigned long vrs[16]; /* virtual register set */ | ||
59 | unsigned long *insn; /* pointer to the current instructions word */ | ||
60 | int entries; /* number of entries left to interpret */ | ||
61 | int byte; /* current byte number in the instructions word */ | ||
62 | }; | ||
63 | |||
64 | enum regs { | ||
65 | FP = 11, | ||
66 | SP = 13, | ||
67 | LR = 14, | ||
68 | PC = 15 | ||
69 | }; | ||
70 | |||
71 | extern struct unwind_idx __start_unwind_idx[]; | ||
72 | extern struct unwind_idx __stop_unwind_idx[]; | ||
73 | |||
74 | static DEFINE_SPINLOCK(unwind_lock); | ||
75 | static LIST_HEAD(unwind_tables); | ||
76 | |||
77 | /* Convert a prel31 symbol to an absolute address */ | ||
78 | #define prel31_to_addr(ptr) \ | ||
79 | ({ \ | ||
80 | /* sign-extend to 32 bits */ \ | ||
81 | long offset = (((long)*(ptr)) << 1) >> 1; \ | ||
82 | (unsigned long)(ptr) + offset; \ | ||
83 | }) | ||
84 | |||
85 | /* | ||
86 | * Binary search in the unwind index. The entries entries are | ||
87 | * guaranteed to be sorted in ascending order by the linker. | ||
88 | */ | ||
89 | static struct unwind_idx *search_index(unsigned long addr, | ||
90 | struct unwind_idx *first, | ||
91 | struct unwind_idx *last) | ||
92 | { | ||
93 | pr_debug("%s(%08lx, %p, %p)\n", __func__, addr, first, last); | ||
94 | |||
95 | if (addr < first->addr) { | ||
96 | pr_warning("unwind: Unknown symbol address %08lx\n", addr); | ||
97 | return NULL; | ||
98 | } else if (addr >= last->addr) | ||
99 | return last; | ||
100 | |||
101 | while (first < last - 1) { | ||
102 | struct unwind_idx *mid = first + ((last - first + 1) >> 1); | ||
103 | |||
104 | if (addr < mid->addr) | ||
105 | last = mid; | ||
106 | else | ||
107 | first = mid; | ||
108 | } | ||
109 | |||
110 | return first; | ||
111 | } | ||
112 | |||
113 | static struct unwind_idx *unwind_find_idx(unsigned long addr) | ||
114 | { | ||
115 | struct unwind_idx *idx = NULL; | ||
116 | unsigned long flags; | ||
117 | |||
118 | pr_debug("%s(%08lx)\n", __func__, addr); | ||
119 | |||
120 | if (core_kernel_text(addr)) | ||
121 | /* main unwind table */ | ||
122 | idx = search_index(addr, __start_unwind_idx, | ||
123 | __stop_unwind_idx - 1); | ||
124 | else { | ||
125 | /* module unwind tables */ | ||
126 | struct unwind_table *table; | ||
127 | |||
128 | spin_lock_irqsave(&unwind_lock, flags); | ||
129 | list_for_each_entry(table, &unwind_tables, list) { | ||
130 | if (addr >= table->begin_addr && | ||
131 | addr < table->end_addr) { | ||
132 | idx = search_index(addr, table->start, | ||
133 | table->stop - 1); | ||
134 | break; | ||
135 | } | ||
136 | } | ||
137 | spin_unlock_irqrestore(&unwind_lock, flags); | ||
138 | } | ||
139 | |||
140 | pr_debug("%s: idx = %p\n", __func__, idx); | ||
141 | return idx; | ||
142 | } | ||
143 | |||
144 | static unsigned long unwind_get_byte(struct unwind_ctrl_block *ctrl) | ||
145 | { | ||
146 | unsigned long ret; | ||
147 | |||
148 | if (ctrl->entries <= 0) { | ||
149 | pr_warning("unwind: Corrupt unwind table\n"); | ||
150 | return 0; | ||
151 | } | ||
152 | |||
153 | ret = (*ctrl->insn >> (ctrl->byte * 8)) & 0xff; | ||
154 | |||
155 | if (ctrl->byte == 0) { | ||
156 | ctrl->insn++; | ||
157 | ctrl->entries--; | ||
158 | ctrl->byte = 3; | ||
159 | } else | ||
160 | ctrl->byte--; | ||
161 | |||
162 | return ret; | ||
163 | } | ||
164 | |||
165 | /* | ||
166 | * Execute the current unwind instruction. | ||
167 | */ | ||
168 | static int unwind_exec_insn(struct unwind_ctrl_block *ctrl) | ||
169 | { | ||
170 | unsigned long insn = unwind_get_byte(ctrl); | ||
171 | |||
172 | pr_debug("%s: insn = %08lx\n", __func__, insn); | ||
173 | |||
174 | if ((insn & 0xc0) == 0x00) | ||
175 | ctrl->vrs[SP] += ((insn & 0x3f) << 2) + 4; | ||
176 | else if ((insn & 0xc0) == 0x40) | ||
177 | ctrl->vrs[SP] -= ((insn & 0x3f) << 2) + 4; | ||
178 | else if ((insn & 0xf0) == 0x80) { | ||
179 | unsigned long mask; | ||
180 | unsigned long *vsp = (unsigned long *)ctrl->vrs[SP]; | ||
181 | int load_sp, reg = 4; | ||
182 | |||
183 | insn = (insn << 8) | unwind_get_byte(ctrl); | ||
184 | mask = insn & 0x0fff; | ||
185 | if (mask == 0) { | ||
186 | pr_warning("unwind: 'Refuse to unwind' instruction %04lx\n", | ||
187 | insn); | ||
188 | return -URC_FAILURE; | ||
189 | } | ||
190 | |||
191 | /* pop R4-R15 according to mask */ | ||
192 | load_sp = mask & (1 << (13 - 4)); | ||
193 | while (mask) { | ||
194 | if (mask & 1) | ||
195 | ctrl->vrs[reg] = *vsp++; | ||
196 | mask >>= 1; | ||
197 | reg++; | ||
198 | } | ||
199 | if (!load_sp) | ||
200 | ctrl->vrs[SP] = (unsigned long)vsp; | ||
201 | } else if ((insn & 0xf0) == 0x90 && | ||
202 | (insn & 0x0d) != 0x0d) | ||
203 | ctrl->vrs[SP] = ctrl->vrs[insn & 0x0f]; | ||
204 | else if ((insn & 0xf0) == 0xa0) { | ||
205 | unsigned long *vsp = (unsigned long *)ctrl->vrs[SP]; | ||
206 | int reg; | ||
207 | |||
208 | /* pop R4-R[4+bbb] */ | ||
209 | for (reg = 4; reg <= 4 + (insn & 7); reg++) | ||
210 | ctrl->vrs[reg] = *vsp++; | ||
211 | if (insn & 0x80) | ||
212 | ctrl->vrs[14] = *vsp++; | ||
213 | ctrl->vrs[SP] = (unsigned long)vsp; | ||
214 | } else if (insn == 0xb0) { | ||
215 | ctrl->vrs[PC] = ctrl->vrs[LR]; | ||
216 | /* no further processing */ | ||
217 | ctrl->entries = 0; | ||
218 | } else if (insn == 0xb1) { | ||
219 | unsigned long mask = unwind_get_byte(ctrl); | ||
220 | unsigned long *vsp = (unsigned long *)ctrl->vrs[SP]; | ||
221 | int reg = 0; | ||
222 | |||
223 | if (mask == 0 || mask & 0xf0) { | ||
224 | pr_warning("unwind: Spare encoding %04lx\n", | ||
225 | (insn << 8) | mask); | ||
226 | return -URC_FAILURE; | ||
227 | } | ||
228 | |||
229 | /* pop R0-R3 according to mask */ | ||
230 | while (mask) { | ||
231 | if (mask & 1) | ||
232 | ctrl->vrs[reg] = *vsp++; | ||
233 | mask >>= 1; | ||
234 | reg++; | ||
235 | } | ||
236 | ctrl->vrs[SP] = (unsigned long)vsp; | ||
237 | } else if (insn == 0xb2) { | ||
238 | unsigned long uleb128 = unwind_get_byte(ctrl); | ||
239 | |||
240 | ctrl->vrs[SP] += 0x204 + (uleb128 << 2); | ||
241 | } else { | ||
242 | pr_warning("unwind: Unhandled instruction %02lx\n", insn); | ||
243 | return -URC_FAILURE; | ||
244 | } | ||
245 | |||
246 | pr_debug("%s: fp = %08lx sp = %08lx lr = %08lx pc = %08lx\n", __func__, | ||
247 | ctrl->vrs[FP], ctrl->vrs[SP], ctrl->vrs[LR], ctrl->vrs[PC]); | ||
248 | |||
249 | return URC_OK; | ||
250 | } | ||
251 | |||
252 | /* | ||
253 | * Unwind a single frame starting with *sp for the symbol at *pc. It | ||
254 | * updates the *pc and *sp with the new values. | ||
255 | */ | ||
256 | int unwind_frame(struct stackframe *frame) | ||
257 | { | ||
258 | unsigned long high, low; | ||
259 | struct unwind_idx *idx; | ||
260 | struct unwind_ctrl_block ctrl; | ||
261 | |||
262 | /* only go to a higher address on the stack */ | ||
263 | low = frame->sp; | ||
264 | high = ALIGN(low, THREAD_SIZE) + THREAD_SIZE; | ||
265 | |||
266 | pr_debug("%s(pc = %08lx lr = %08lx sp = %08lx)\n", __func__, | ||
267 | frame->pc, frame->lr, frame->sp); | ||
268 | |||
269 | if (!kernel_text_address(frame->pc)) | ||
270 | return -URC_FAILURE; | ||
271 | |||
272 | idx = unwind_find_idx(frame->pc); | ||
273 | if (!idx) { | ||
274 | pr_warning("unwind: Index not found %08lx\n", frame->pc); | ||
275 | return -URC_FAILURE; | ||
276 | } | ||
277 | |||
278 | ctrl.vrs[FP] = frame->fp; | ||
279 | ctrl.vrs[SP] = frame->sp; | ||
280 | ctrl.vrs[LR] = frame->lr; | ||
281 | ctrl.vrs[PC] = 0; | ||
282 | |||
283 | if (idx->insn == 1) | ||
284 | /* can't unwind */ | ||
285 | return -URC_FAILURE; | ||
286 | else if ((idx->insn & 0x80000000) == 0) | ||
287 | /* prel31 to the unwind table */ | ||
288 | ctrl.insn = (unsigned long *)prel31_to_addr(&idx->insn); | ||
289 | else if ((idx->insn & 0xff000000) == 0x80000000) | ||
290 | /* only personality routine 0 supported in the index */ | ||
291 | ctrl.insn = &idx->insn; | ||
292 | else { | ||
293 | pr_warning("unwind: Unsupported personality routine %08lx in the index at %p\n", | ||
294 | idx->insn, idx); | ||
295 | return -URC_FAILURE; | ||
296 | } | ||
297 | |||
298 | /* check the personality routine */ | ||
299 | if ((*ctrl.insn & 0xff000000) == 0x80000000) { | ||
300 | ctrl.byte = 2; | ||
301 | ctrl.entries = 1; | ||
302 | } else if ((*ctrl.insn & 0xff000000) == 0x81000000) { | ||
303 | ctrl.byte = 1; | ||
304 | ctrl.entries = 1 + ((*ctrl.insn & 0x00ff0000) >> 16); | ||
305 | } else { | ||
306 | pr_warning("unwind: Unsupported personality routine %08lx at %p\n", | ||
307 | *ctrl.insn, ctrl.insn); | ||
308 | return -URC_FAILURE; | ||
309 | } | ||
310 | |||
311 | while (ctrl.entries > 0) { | ||
312 | int urc; | ||
313 | |||
314 | if (ctrl.vrs[SP] < low || ctrl.vrs[SP] >= high) | ||
315 | return -URC_FAILURE; | ||
316 | urc = unwind_exec_insn(&ctrl); | ||
317 | if (urc < 0) | ||
318 | return urc; | ||
319 | } | ||
320 | |||
321 | if (ctrl.vrs[PC] == 0) | ||
322 | ctrl.vrs[PC] = ctrl.vrs[LR]; | ||
323 | |||
324 | frame->fp = ctrl.vrs[FP]; | ||
325 | frame->sp = ctrl.vrs[SP]; | ||
326 | frame->lr = ctrl.vrs[LR]; | ||
327 | frame->pc = ctrl.vrs[PC]; | ||
328 | |||
329 | return URC_OK; | ||
330 | } | ||
331 | |||
332 | void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk) | ||
333 | { | ||
334 | struct stackframe frame; | ||
335 | unsigned long high, low; | ||
336 | register unsigned long current_sp asm ("sp"); | ||
337 | |||
338 | pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk); | ||
339 | |||
340 | if (!tsk) | ||
341 | tsk = current; | ||
342 | |||
343 | if (regs) { | ||
344 | frame.fp = regs->ARM_fp; | ||
345 | frame.sp = regs->ARM_sp; | ||
346 | frame.lr = regs->ARM_lr; | ||
347 | frame.pc = regs->ARM_pc; | ||
348 | } else if (tsk == current) { | ||
349 | frame.fp = (unsigned long)__builtin_frame_address(0); | ||
350 | frame.sp = current_sp; | ||
351 | frame.lr = (unsigned long)__builtin_return_address(0); | ||
352 | frame.pc = (unsigned long)unwind_backtrace; | ||
353 | } else { | ||
354 | /* task blocked in __switch_to */ | ||
355 | frame.fp = thread_saved_fp(tsk); | ||
356 | frame.sp = thread_saved_sp(tsk); | ||
357 | /* | ||
358 | * The function calling __switch_to cannot be a leaf function | ||
359 | * so LR is recovered from the stack. | ||
360 | */ | ||
361 | frame.lr = 0; | ||
362 | frame.pc = thread_saved_pc(tsk); | ||
363 | } | ||
364 | |||
365 | low = frame.sp & ~(THREAD_SIZE - 1); | ||
366 | high = low + THREAD_SIZE; | ||
367 | |||
368 | while (1) { | ||
369 | int urc; | ||
370 | unsigned long where = frame.pc; | ||
371 | |||
372 | urc = unwind_frame(&frame); | ||
373 | if (urc < 0) | ||
374 | break; | ||
375 | dump_backtrace_entry(where, frame.pc, frame.sp - 4); | ||
376 | } | ||
377 | } | ||
378 | |||
379 | struct unwind_table *unwind_table_add(unsigned long start, unsigned long size, | ||
380 | unsigned long text_addr, | ||
381 | unsigned long text_size) | ||
382 | { | ||
383 | unsigned long flags; | ||
384 | struct unwind_idx *idx; | ||
385 | struct unwind_table *tab = kmalloc(sizeof(*tab), GFP_KERNEL); | ||
386 | |||
387 | pr_debug("%s(%08lx, %08lx, %08lx, %08lx)\n", __func__, start, size, | ||
388 | text_addr, text_size); | ||
389 | |||
390 | if (!tab) | ||
391 | return tab; | ||
392 | |||
393 | tab->start = (struct unwind_idx *)start; | ||
394 | tab->stop = (struct unwind_idx *)(start + size); | ||
395 | tab->begin_addr = text_addr; | ||
396 | tab->end_addr = text_addr + text_size; | ||
397 | |||
398 | /* Convert the symbol addresses to absolute values */ | ||
399 | for (idx = tab->start; idx < tab->stop; idx++) | ||
400 | idx->addr = prel31_to_addr(&idx->addr); | ||
401 | |||
402 | spin_lock_irqsave(&unwind_lock, flags); | ||
403 | list_add_tail(&tab->list, &unwind_tables); | ||
404 | spin_unlock_irqrestore(&unwind_lock, flags); | ||
405 | |||
406 | return tab; | ||
407 | } | ||
408 | |||
409 | void unwind_table_del(struct unwind_table *tab) | ||
410 | { | ||
411 | unsigned long flags; | ||
412 | |||
413 | if (!tab) | ||
414 | return; | ||
415 | |||
416 | spin_lock_irqsave(&unwind_lock, flags); | ||
417 | list_del(&tab->list); | ||
418 | spin_unlock_irqrestore(&unwind_lock, flags); | ||
419 | |||
420 | kfree(tab); | ||
421 | } | ||
422 | |||
423 | int __init unwind_init(void) | ||
424 | { | ||
425 | struct unwind_idx *idx; | ||
426 | |||
427 | /* Convert the symbol addresses to absolute values */ | ||
428 | for (idx = __start_unwind_idx; idx < __stop_unwind_idx; idx++) | ||
429 | idx->addr = prel31_to_addr(&idx->addr); | ||
430 | |||
431 | pr_debug("unwind: ARM stack unwinding initialised\n"); | ||
432 | |||
433 | return 0; | ||
434 | } | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 00216071eaf7..5f664599c945 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -80,6 +80,8 @@ SECTIONS | |||
80 | EXIT_TEXT | 80 | EXIT_TEXT |
81 | EXIT_DATA | 81 | EXIT_DATA |
82 | *(.exitcall.exit) | 82 | *(.exitcall.exit) |
83 | *(.ARM.exidx.exit.text) | ||
84 | *(.ARM.extab.exit.text) | ||
83 | #ifndef CONFIG_MMU | 85 | #ifndef CONFIG_MMU |
84 | *(.fixup) | 86 | *(.fixup) |
85 | *(__ex_table) | 87 | *(__ex_table) |
@@ -110,6 +112,23 @@ SECTIONS | |||
110 | 112 | ||
111 | _etext = .; /* End of text and rodata section */ | 113 | _etext = .; /* End of text and rodata section */ |
112 | 114 | ||
115 | #ifdef CONFIG_ARM_UNWIND | ||
116 | /* | ||
117 | * Stack unwinding tables | ||
118 | */ | ||
119 | . = ALIGN(8); | ||
120 | .ARM.unwind_idx : { | ||
121 | __start_unwind_idx = .; | ||
122 | *(.ARM.exidx*) | ||
123 | __stop_unwind_idx = .; | ||
124 | } | ||
125 | .ARM.unwind_tab : { | ||
126 | __start_unwind_tab = .; | ||
127 | *(.ARM.extab*) | ||
128 | __stop_unwind_tab = .; | ||
129 | } | ||
130 | #endif | ||
131 | |||
113 | #ifdef CONFIG_XIP_KERNEL | 132 | #ifdef CONFIG_XIP_KERNEL |
114 | __data_loc = ALIGN(4); /* location in binary */ | 133 | __data_loc = ALIGN(4); /* location in binary */ |
115 | . = PAGE_OFFSET + TEXT_OFFSET; | 134 | . = PAGE_OFFSET + TEXT_OFFSET; |
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index 81439fe6fb3d..438efbb17482 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c | |||
@@ -238,6 +238,10 @@ static void __init ek_board_init(void) | |||
238 | at91_add_device_i2c(NULL, 0); | 238 | at91_add_device_i2c(NULL, 0); |
239 | /* LEDs */ | 239 | /* LEDs */ |
240 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); | 240 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); |
241 | /* PCK0 provides MCLK to the WM8731 */ | ||
242 | at91_set_B_periph(AT91_PIN_PC1, 0); | ||
243 | /* SSC (for WM8731) */ | ||
244 | at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); | ||
241 | } | 245 | } |
242 | 246 | ||
243 | MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") | 247 | MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") |
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index 7b9ce7a336b0..b5daf7f5e011 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h | |||
@@ -47,9 +47,6 @@ extern void at91_irq_resume(void); | |||
47 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ | 47 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ |
48 | 48 | ||
49 | struct at91_gpio_bank { | 49 | struct at91_gpio_bank { |
50 | unsigned chipbase; /* bank's first GPIO number */ | ||
51 | void __iomem *regbase; /* base of register bank */ | ||
52 | struct at91_gpio_bank *next; /* bank sharing same IRQ/clock/... */ | ||
53 | unsigned short id; /* peripheral ID */ | 50 | unsigned short id; /* peripheral ID */ |
54 | unsigned long offset; /* offset from system peripheral base */ | 51 | unsigned long offset; /* offset from system peripheral base */ |
55 | struct clk *clock; /* associated clock */ | 52 | struct clk *clock; /* associated clock */ |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 9b0447c3d59b..028e4f7a88be 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -24,19 +24,59 @@ | |||
24 | #include <mach/at91_pio.h> | 24 | #include <mach/at91_pio.h> |
25 | #include <mach/gpio.h> | 25 | #include <mach/gpio.h> |
26 | 26 | ||
27 | #include <asm/gpio.h> | ||
28 | |||
27 | #include "generic.h" | 29 | #include "generic.h" |
28 | 30 | ||
31 | struct at91_gpio_chip { | ||
32 | struct gpio_chip chip; | ||
33 | struct at91_gpio_chip *next; /* Bank sharing same clock */ | ||
34 | struct at91_gpio_bank *bank; /* Bank definition */ | ||
35 | void __iomem *regbase; /* Base of register bank */ | ||
36 | }; | ||
29 | 37 | ||
30 | static struct at91_gpio_bank *gpio; | 38 | #define to_at91_gpio_chip(c) container_of(c, struct at91_gpio_chip, chip) |
31 | static int gpio_banks; | 39 | |
40 | static void at91_gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip); | ||
41 | static void at91_gpiolib_set(struct gpio_chip *chip, unsigned offset, int val); | ||
42 | static int at91_gpiolib_get(struct gpio_chip *chip, unsigned offset); | ||
43 | static int at91_gpiolib_direction_output(struct gpio_chip *chip, | ||
44 | unsigned offset, int val); | ||
45 | static int at91_gpiolib_direction_input(struct gpio_chip *chip, | ||
46 | unsigned offset); | ||
47 | static int at91_gpiolib_request(struct gpio_chip *chip, unsigned offset); | ||
48 | |||
49 | #define AT91_GPIO_CHIP(name, base_gpio, nr_gpio) \ | ||
50 | { \ | ||
51 | .chip = { \ | ||
52 | .label = name, \ | ||
53 | .request = at91_gpiolib_request, \ | ||
54 | .direction_input = at91_gpiolib_direction_input, \ | ||
55 | .direction_output = at91_gpiolib_direction_output, \ | ||
56 | .get = at91_gpiolib_get, \ | ||
57 | .set = at91_gpiolib_set, \ | ||
58 | .dbg_show = at91_gpiolib_dbg_show, \ | ||
59 | .base = base_gpio, \ | ||
60 | .ngpio = nr_gpio, \ | ||
61 | }, \ | ||
62 | } | ||
32 | 63 | ||
64 | static struct at91_gpio_chip gpio_chip[] = { | ||
65 | AT91_GPIO_CHIP("A", 0x00 + PIN_BASE, 32), | ||
66 | AT91_GPIO_CHIP("B", 0x20 + PIN_BASE, 32), | ||
67 | AT91_GPIO_CHIP("C", 0x40 + PIN_BASE, 32), | ||
68 | AT91_GPIO_CHIP("D", 0x60 + PIN_BASE, 32), | ||
69 | AT91_GPIO_CHIP("E", 0x80 + PIN_BASE, 32), | ||
70 | }; | ||
71 | |||
72 | static int gpio_banks; | ||
33 | 73 | ||
34 | static inline void __iomem *pin_to_controller(unsigned pin) | 74 | static inline void __iomem *pin_to_controller(unsigned pin) |
35 | { | 75 | { |
36 | pin -= PIN_BASE; | 76 | pin -= PIN_BASE; |
37 | pin /= 32; | 77 | pin /= 32; |
38 | if (likely(pin < gpio_banks)) | 78 | if (likely(pin < gpio_banks)) |
39 | return gpio[pin].regbase; | 79 | return gpio_chip[pin].regbase; |
40 | 80 | ||
41 | return NULL; | 81 | return NULL; |
42 | } | 82 | } |
@@ -197,39 +237,6 @@ int __init_or_module at91_set_multi_drive(unsigned pin, int is_on) | |||
197 | } | 237 | } |
198 | EXPORT_SYMBOL(at91_set_multi_drive); | 238 | EXPORT_SYMBOL(at91_set_multi_drive); |
199 | 239 | ||
200 | /*--------------------------------------------------------------------------*/ | ||
201 | |||
202 | /* new-style GPIO calls; these expect at91_set_GPIO_periph to have been | ||
203 | * called, and maybe at91_set_multi_drive() for putout pins. | ||
204 | */ | ||
205 | |||
206 | int gpio_direction_input(unsigned pin) | ||
207 | { | ||
208 | void __iomem *pio = pin_to_controller(pin); | ||
209 | unsigned mask = pin_to_mask(pin); | ||
210 | |||
211 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) | ||
212 | return -EINVAL; | ||
213 | __raw_writel(mask, pio + PIO_ODR); | ||
214 | return 0; | ||
215 | } | ||
216 | EXPORT_SYMBOL(gpio_direction_input); | ||
217 | |||
218 | int gpio_direction_output(unsigned pin, int value) | ||
219 | { | ||
220 | void __iomem *pio = pin_to_controller(pin); | ||
221 | unsigned mask = pin_to_mask(pin); | ||
222 | |||
223 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) | ||
224 | return -EINVAL; | ||
225 | __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); | ||
226 | __raw_writel(mask, pio + PIO_OER); | ||
227 | return 0; | ||
228 | } | ||
229 | EXPORT_SYMBOL(gpio_direction_output); | ||
230 | |||
231 | /*--------------------------------------------------------------------------*/ | ||
232 | |||
233 | /* | 240 | /* |
234 | * assuming the pin is muxed as a gpio output, set its value. | 241 | * assuming the pin is muxed as a gpio output, set its value. |
235 | */ | 242 | */ |
@@ -282,7 +289,7 @@ static int gpio_irq_set_wake(unsigned pin, unsigned state) | |||
282 | else | 289 | else |
283 | wakeups[bank] &= ~mask; | 290 | wakeups[bank] &= ~mask; |
284 | 291 | ||
285 | set_irq_wake(gpio[bank].id, state); | 292 | set_irq_wake(gpio_chip[bank].bank->id, state); |
286 | 293 | ||
287 | return 0; | 294 | return 0; |
288 | } | 295 | } |
@@ -292,14 +299,14 @@ void at91_gpio_suspend(void) | |||
292 | int i; | 299 | int i; |
293 | 300 | ||
294 | for (i = 0; i < gpio_banks; i++) { | 301 | for (i = 0; i < gpio_banks; i++) { |
295 | void __iomem *pio = gpio[i].regbase; | 302 | void __iomem *pio = gpio_chip[i].regbase; |
296 | 303 | ||
297 | backups[i] = __raw_readl(pio + PIO_IMR); | 304 | backups[i] = __raw_readl(pio + PIO_IMR); |
298 | __raw_writel(backups[i], pio + PIO_IDR); | 305 | __raw_writel(backups[i], pio + PIO_IDR); |
299 | __raw_writel(wakeups[i], pio + PIO_IER); | 306 | __raw_writel(wakeups[i], pio + PIO_IER); |
300 | 307 | ||
301 | if (!wakeups[i]) | 308 | if (!wakeups[i]) |
302 | clk_disable(gpio[i].clock); | 309 | clk_disable(gpio_chip[i].bank->clock); |
303 | else { | 310 | else { |
304 | #ifdef CONFIG_PM_DEBUG | 311 | #ifdef CONFIG_PM_DEBUG |
305 | printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", 'A'+i, wakeups[i]); | 312 | printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", 'A'+i, wakeups[i]); |
@@ -313,10 +320,10 @@ void at91_gpio_resume(void) | |||
313 | int i; | 320 | int i; |
314 | 321 | ||
315 | for (i = 0; i < gpio_banks; i++) { | 322 | for (i = 0; i < gpio_banks; i++) { |
316 | void __iomem *pio = gpio[i].regbase; | 323 | void __iomem *pio = gpio_chip[i].regbase; |
317 | 324 | ||
318 | if (!wakeups[i]) | 325 | if (!wakeups[i]) |
319 | clk_enable(gpio[i].clock); | 326 | clk_enable(gpio_chip[i].bank->clock); |
320 | 327 | ||
321 | __raw_writel(wakeups[i], pio + PIO_IDR); | 328 | __raw_writel(wakeups[i], pio + PIO_IDR); |
322 | __raw_writel(backups[i], pio + PIO_IER); | 329 | __raw_writel(backups[i], pio + PIO_IER); |
@@ -380,12 +387,12 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
380 | { | 387 | { |
381 | unsigned pin; | 388 | unsigned pin; |
382 | struct irq_desc *gpio; | 389 | struct irq_desc *gpio; |
383 | struct at91_gpio_bank *bank; | 390 | struct at91_gpio_chip *at91_gpio; |
384 | void __iomem *pio; | 391 | void __iomem *pio; |
385 | u32 isr; | 392 | u32 isr; |
386 | 393 | ||
387 | bank = get_irq_chip_data(irq); | 394 | at91_gpio = get_irq_chip_data(irq); |
388 | pio = bank->regbase; | 395 | pio = at91_gpio->regbase; |
389 | 396 | ||
390 | /* temporarily mask (level sensitive) parent IRQ */ | 397 | /* temporarily mask (level sensitive) parent IRQ */ |
391 | desc->chip->ack(irq); | 398 | desc->chip->ack(irq); |
@@ -396,14 +403,14 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
396 | */ | 403 | */ |
397 | isr = __raw_readl(pio + PIO_ISR) & __raw_readl(pio + PIO_IMR); | 404 | isr = __raw_readl(pio + PIO_ISR) & __raw_readl(pio + PIO_IMR); |
398 | if (!isr) { | 405 | if (!isr) { |
399 | if (!bank->next) | 406 | if (!at91_gpio->next) |
400 | break; | 407 | break; |
401 | bank = bank->next; | 408 | at91_gpio = at91_gpio->next; |
402 | pio = bank->regbase; | 409 | pio = at91_gpio->regbase; |
403 | continue; | 410 | continue; |
404 | } | 411 | } |
405 | 412 | ||
406 | pin = bank->chipbase; | 413 | pin = at91_gpio->chip.base; |
407 | gpio = &irq_desc[pin]; | 414 | gpio = &irq_desc[pin]; |
408 | 415 | ||
409 | while (isr) { | 416 | while (isr) { |
@@ -430,66 +437,6 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
430 | 437 | ||
431 | /*--------------------------------------------------------------------------*/ | 438 | /*--------------------------------------------------------------------------*/ |
432 | 439 | ||
433 | #ifdef CONFIG_DEBUG_FS | ||
434 | |||
435 | static int at91_gpio_show(struct seq_file *s, void *unused) | ||
436 | { | ||
437 | int bank, j; | ||
438 | |||
439 | /* print heading */ | ||
440 | seq_printf(s, "Pin\t"); | ||
441 | for (bank = 0; bank < gpio_banks; bank++) { | ||
442 | seq_printf(s, "PIO%c\t", 'A' + bank); | ||
443 | }; | ||
444 | seq_printf(s, "\n\n"); | ||
445 | |||
446 | /* print pin status */ | ||
447 | for (j = 0; j < 32; j++) { | ||
448 | seq_printf(s, "%i:\t", j); | ||
449 | |||
450 | for (bank = 0; bank < gpio_banks; bank++) { | ||
451 | unsigned pin = PIN_BASE + (32 * bank) + j; | ||
452 | void __iomem *pio = pin_to_controller(pin); | ||
453 | unsigned mask = pin_to_mask(pin); | ||
454 | |||
455 | if (__raw_readl(pio + PIO_PSR) & mask) | ||
456 | seq_printf(s, "GPIO:%s", __raw_readl(pio + PIO_PDSR) & mask ? "1" : "0"); | ||
457 | else | ||
458 | seq_printf(s, "%s", __raw_readl(pio + PIO_ABSR) & mask ? "B" : "A"); | ||
459 | |||
460 | seq_printf(s, "\t"); | ||
461 | } | ||
462 | |||
463 | seq_printf(s, "\n"); | ||
464 | } | ||
465 | |||
466 | return 0; | ||
467 | } | ||
468 | |||
469 | static int at91_gpio_open(struct inode *inode, struct file *file) | ||
470 | { | ||
471 | return single_open(file, at91_gpio_show, NULL); | ||
472 | } | ||
473 | |||
474 | static const struct file_operations at91_gpio_operations = { | ||
475 | .open = at91_gpio_open, | ||
476 | .read = seq_read, | ||
477 | .llseek = seq_lseek, | ||
478 | .release = single_release, | ||
479 | }; | ||
480 | |||
481 | static int __init at91_gpio_debugfs_init(void) | ||
482 | { | ||
483 | /* /sys/kernel/debug/at91_gpio */ | ||
484 | (void) debugfs_create_file("at91_gpio", S_IFREG | S_IRUGO, NULL, NULL, &at91_gpio_operations); | ||
485 | return 0; | ||
486 | } | ||
487 | postcore_initcall(at91_gpio_debugfs_init); | ||
488 | |||
489 | #endif | ||
490 | |||
491 | /*--------------------------------------------------------------------------*/ | ||
492 | |||
493 | /* This lock class tells lockdep that GPIO irqs are in a different | 440 | /* This lock class tells lockdep that GPIO irqs are in a different |
494 | * category than their parents, so it won't report false recursion. | 441 | * category than their parents, so it won't report false recursion. |
495 | */ | 442 | */ |
@@ -501,20 +448,20 @@ static struct lock_class_key gpio_lock_class; | |||
501 | void __init at91_gpio_irq_setup(void) | 448 | void __init at91_gpio_irq_setup(void) |
502 | { | 449 | { |
503 | unsigned pioc, pin; | 450 | unsigned pioc, pin; |
504 | struct at91_gpio_bank *this, *prev; | 451 | struct at91_gpio_chip *this, *prev; |
505 | 452 | ||
506 | for (pioc = 0, pin = PIN_BASE, this = gpio, prev = NULL; | 453 | for (pioc = 0, pin = PIN_BASE, this = gpio_chip, prev = NULL; |
507 | pioc++ < gpio_banks; | 454 | pioc++ < gpio_banks; |
508 | prev = this, this++) { | 455 | prev = this, this++) { |
509 | unsigned id = this->id; | 456 | unsigned id = this->bank->id; |
510 | unsigned i; | 457 | unsigned i; |
511 | 458 | ||
512 | /* enable PIO controller's clock */ | 459 | /* enable PIO controller's clock */ |
513 | clk_enable(this->clock); | 460 | clk_enable(this->bank->clock); |
514 | 461 | ||
515 | __raw_writel(~0, this->regbase + PIO_IDR); | 462 | __raw_writel(~0, this->regbase + PIO_IDR); |
516 | 463 | ||
517 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { | 464 | for (i = 0, pin = this->chip.base; i < 32; i++, pin++) { |
518 | lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class); | 465 | lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class); |
519 | 466 | ||
520 | /* | 467 | /* |
@@ -539,25 +486,114 @@ void __init at91_gpio_irq_setup(void) | |||
539 | pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, gpio_banks); | 486 | pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, gpio_banks); |
540 | } | 487 | } |
541 | 488 | ||
489 | /* gpiolib support */ | ||
490 | static int at91_gpiolib_direction_input(struct gpio_chip *chip, | ||
491 | unsigned offset) | ||
492 | { | ||
493 | struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); | ||
494 | void __iomem *pio = at91_gpio->regbase; | ||
495 | unsigned mask = 1 << offset; | ||
496 | |||
497 | __raw_writel(mask, pio + PIO_ODR); | ||
498 | return 0; | ||
499 | } | ||
500 | |||
501 | static int at91_gpiolib_direction_output(struct gpio_chip *chip, | ||
502 | unsigned offset, int val) | ||
503 | { | ||
504 | struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); | ||
505 | void __iomem *pio = at91_gpio->regbase; | ||
506 | unsigned mask = 1 << offset; | ||
507 | |||
508 | __raw_writel(mask, pio + (val ? PIO_SODR : PIO_CODR)); | ||
509 | __raw_writel(mask, pio + PIO_OER); | ||
510 | return 0; | ||
511 | } | ||
512 | |||
513 | static int at91_gpiolib_get(struct gpio_chip *chip, unsigned offset) | ||
514 | { | ||
515 | struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); | ||
516 | void __iomem *pio = at91_gpio->regbase; | ||
517 | unsigned mask = 1 << offset; | ||
518 | u32 pdsr; | ||
519 | |||
520 | pdsr = __raw_readl(pio + PIO_PDSR); | ||
521 | return (pdsr & mask) != 0; | ||
522 | } | ||
523 | |||
524 | static void at91_gpiolib_set(struct gpio_chip *chip, unsigned offset, int val) | ||
525 | { | ||
526 | struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); | ||
527 | void __iomem *pio = at91_gpio->regbase; | ||
528 | unsigned mask = 1 << offset; | ||
529 | |||
530 | __raw_writel(mask, pio + (val ? PIO_SODR : PIO_CODR)); | ||
531 | } | ||
532 | |||
533 | static int at91_gpiolib_request(struct gpio_chip *chip, unsigned offset) | ||
534 | { | ||
535 | unsigned pin = chip->base + offset; | ||
536 | void __iomem *pio = pin_to_controller(pin); | ||
537 | unsigned mask = pin_to_mask(pin); | ||
538 | |||
539 | /* Cannot request GPIOs that are in alternate function mode */ | ||
540 | if (!(__raw_readl(pio + PIO_PSR) & mask)) | ||
541 | return -EPERM; | ||
542 | |||
543 | return 0; | ||
544 | } | ||
545 | |||
546 | static void at91_gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip) | ||
547 | { | ||
548 | int i; | ||
549 | |||
550 | for (i = 0; i < chip->ngpio; i++) { | ||
551 | unsigned pin = chip->base + i; | ||
552 | void __iomem *pio = pin_to_controller(pin); | ||
553 | unsigned mask = pin_to_mask(pin); | ||
554 | const char *gpio_label; | ||
555 | |||
556 | gpio_label = gpiochip_is_requested(chip, i); | ||
557 | if (gpio_label) { | ||
558 | seq_printf(s, "[%s] GPIO%s%d: ", | ||
559 | gpio_label, chip->label, i); | ||
560 | if (__raw_readl(pio + PIO_PSR) & mask) | ||
561 | seq_printf(s, "[gpio] %s\n", | ||
562 | at91_get_gpio_value(pin) ? | ||
563 | "set" : "clear"); | ||
564 | else | ||
565 | seq_printf(s, "[periph %s]\n", | ||
566 | __raw_readl(pio + PIO_ABSR) & | ||
567 | mask ? "B" : "A"); | ||
568 | } | ||
569 | } | ||
570 | } | ||
571 | |||
542 | /* | 572 | /* |
543 | * Called from the processor-specific init to enable GPIO pin support. | 573 | * Called from the processor-specific init to enable GPIO pin support. |
544 | */ | 574 | */ |
545 | void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) | 575 | void __init at91_gpio_init(struct at91_gpio_bank *data, int nr_banks) |
546 | { | 576 | { |
547 | unsigned i; | 577 | unsigned i; |
548 | struct at91_gpio_bank *last; | 578 | struct at91_gpio_chip *at91_gpio, *last = NULL; |
549 | 579 | ||
550 | BUG_ON(nr_banks > MAX_GPIO_BANKS); | 580 | BUG_ON(nr_banks > MAX_GPIO_BANKS); |
551 | 581 | ||
552 | gpio = data; | ||
553 | gpio_banks = nr_banks; | 582 | gpio_banks = nr_banks; |
554 | 583 | ||
555 | for (i = 0, last = NULL; i < nr_banks; i++, last = data, data++) { | 584 | for (i = 0; i < nr_banks; i++) { |
556 | data->chipbase = PIN_BASE + i * 32; | 585 | at91_gpio = &gpio_chip[i]; |
557 | data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS; | 586 | |
587 | at91_gpio->bank = &data[i]; | ||
588 | at91_gpio->chip.base = PIN_BASE + i * 32; | ||
589 | at91_gpio->regbase = at91_gpio->bank->offset + | ||
590 | (void __iomem *)AT91_VA_BASE_SYS; | ||
558 | 591 | ||
559 | /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ | 592 | /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */ |
560 | if (last && last->id == data->id) | 593 | if (last && last->bank->id == at91_gpio->bank->id) |
561 | last->next = data; | 594 | last->next = at91_gpio; |
595 | last = at91_gpio; | ||
596 | |||
597 | gpiochip_add(&at91_gpio->chip); | ||
562 | } | 598 | } |
563 | } | 599 | } |
diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h index bffa6741a751..04c91e31c9c5 100644 --- a/arch/arm/mach-at91/include/mach/gpio.h +++ b/arch/arm/mach-at91/include/mach/gpio.h | |||
@@ -213,32 +213,12 @@ extern void at91_gpio_resume(void); | |||
213 | */ | 213 | */ |
214 | 214 | ||
215 | #include <asm/errno.h> | 215 | #include <asm/errno.h> |
216 | |||
217 | static inline int gpio_request(unsigned gpio, const char *label) | ||
218 | { | ||
219 | return 0; | ||
220 | } | ||
221 | |||
222 | static inline void gpio_free(unsigned gpio) | ||
223 | { | ||
224 | might_sleep(); | ||
225 | } | ||
226 | |||
227 | extern int gpio_direction_input(unsigned gpio); | ||
228 | extern int gpio_direction_output(unsigned gpio, int value); | ||
229 | |||
230 | static inline int gpio_get_value(unsigned gpio) | ||
231 | { | ||
232 | return at91_get_gpio_value(gpio); | ||
233 | } | ||
234 | |||
235 | static inline void gpio_set_value(unsigned gpio, int value) | ||
236 | { | ||
237 | at91_set_gpio_value(gpio, value); | ||
238 | } | ||
239 | |||
240 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | 216 | #include <asm-generic/gpio.h> /* cansleep wrappers */ |
241 | 217 | ||
218 | #define gpio_get_value __gpio_get_value | ||
219 | #define gpio_set_value __gpio_set_value | ||
220 | #define gpio_cansleep __gpio_cansleep | ||
221 | |||
242 | static inline int gpio_to_irq(unsigned gpio) | 222 | static inline int gpio_to_irq(unsigned gpio) |
243 | { | 223 | { |
244 | return gpio; | 224 | return gpio; |
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c index fe182a85159c..867ead2559ad 100644 --- a/arch/arm/mach-davinci/usb.c +++ b/arch/arm/mach-davinci/usb.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <mach/common.h> | 13 | #include <mach/common.h> |
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <mach/irqs.h> | ||
15 | 16 | ||
16 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | 17 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) |
17 | static struct musb_hdrc_eps_bits musb_eps[] = { | 18 | static struct musb_hdrc_eps_bits musb_eps[] = { |
@@ -76,29 +77,6 @@ static struct platform_device usb_dev = { | |||
76 | .num_resources = ARRAY_SIZE(usb_resources), | 77 | .num_resources = ARRAY_SIZE(usb_resources), |
77 | }; | 78 | }; |
78 | 79 | ||
79 | #ifdef CONFIG_USB_MUSB_OTG | ||
80 | |||
81 | static struct otg_transceiver *xceiv; | ||
82 | |||
83 | struct otg_transceiver *otg_get_transceiver(void) | ||
84 | { | ||
85 | if (xceiv) | ||
86 | get_device(xceiv->dev); | ||
87 | return xceiv; | ||
88 | } | ||
89 | EXPORT_SYMBOL(otg_get_transceiver); | ||
90 | |||
91 | int otg_set_transceiver(struct otg_transceiver *x) | ||
92 | { | ||
93 | if (xceiv && x) | ||
94 | return -EBUSY; | ||
95 | xceiv = x; | ||
96 | return 0; | ||
97 | } | ||
98 | EXPORT_SYMBOL(otg_set_transceiver); | ||
99 | |||
100 | #endif | ||
101 | |||
102 | void __init setup_usb(unsigned mA, unsigned potpgt_msec) | 80 | void __init setup_usb(unsigned mA, unsigned potpgt_msec) |
103 | { | 81 | { |
104 | usb_data.power = mA / 2; | 82 | usb_data.power = mA / 2; |
diff --git a/arch/arm/mach-ep93xx/Makefile b/arch/arm/mach-ep93xx/Makefile index 944e42d51646..9522e205b73f 100644 --- a/arch/arm/mach-ep93xx/Makefile +++ b/arch/arm/mach-ep93xx/Makefile | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Makefile for the linux kernel. | 2 | # Makefile for the linux kernel. |
3 | # | 3 | # |
4 | obj-y := core.o clock.o gpio.o | 4 | obj-y := core.o clock.o dma-m2p.o gpio.o |
5 | obj-m := | 5 | obj-m := |
6 | obj-n := | 6 | obj-n := |
7 | obj- := | 7 | obj- := |
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c index 96049283a10a..e8ebeaea6c48 100644 --- a/arch/arm/mach-ep93xx/clock.c +++ b/arch/arm/mach-ep93xx/clock.c | |||
@@ -41,6 +41,56 @@ static struct clk clk_usb_host = { | |||
41 | .enable_mask = EP93XX_SYSCON_CLOCK_USH_EN, | 41 | .enable_mask = EP93XX_SYSCON_CLOCK_USH_EN, |
42 | }; | 42 | }; |
43 | 43 | ||
44 | /* DMA Clocks */ | ||
45 | static struct clk clk_m2p0 = { | ||
46 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
47 | .enable_mask = 0x00020000, | ||
48 | }; | ||
49 | static struct clk clk_m2p1 = { | ||
50 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
51 | .enable_mask = 0x00010000, | ||
52 | }; | ||
53 | static struct clk clk_m2p2 = { | ||
54 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
55 | .enable_mask = 0x00080000, | ||
56 | }; | ||
57 | static struct clk clk_m2p3 = { | ||
58 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
59 | .enable_mask = 0x00040000, | ||
60 | }; | ||
61 | static struct clk clk_m2p4 = { | ||
62 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
63 | .enable_mask = 0x00200000, | ||
64 | }; | ||
65 | static struct clk clk_m2p5 = { | ||
66 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
67 | .enable_mask = 0x00100000, | ||
68 | }; | ||
69 | static struct clk clk_m2p6 = { | ||
70 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
71 | .enable_mask = 0x00800000, | ||
72 | }; | ||
73 | static struct clk clk_m2p7 = { | ||
74 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
75 | .enable_mask = 0x00400000, | ||
76 | }; | ||
77 | static struct clk clk_m2p8 = { | ||
78 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
79 | .enable_mask = 0x02000000, | ||
80 | }; | ||
81 | static struct clk clk_m2p9 = { | ||
82 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
83 | .enable_mask = 0x01000000, | ||
84 | }; | ||
85 | static struct clk clk_m2m0 = { | ||
86 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
87 | .enable_mask = 0x04000000, | ||
88 | }; | ||
89 | static struct clk clk_m2m1 = { | ||
90 | .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, | ||
91 | .enable_mask = 0x08000000, | ||
92 | }; | ||
93 | |||
44 | #define INIT_CK(dev,con,ck) \ | 94 | #define INIT_CK(dev,con,ck) \ |
45 | { .dev_id = dev, .con_id = con, .clk = ck } | 95 | { .dev_id = dev, .con_id = con, .clk = ck } |
46 | 96 | ||
@@ -54,6 +104,18 @@ static struct clk_lookup clocks[] = { | |||
54 | INIT_CK(NULL, "pclk", &clk_p), | 104 | INIT_CK(NULL, "pclk", &clk_p), |
55 | INIT_CK(NULL, "pll2", &clk_pll2), | 105 | INIT_CK(NULL, "pll2", &clk_pll2), |
56 | INIT_CK(NULL, "usb_host", &clk_usb_host), | 106 | INIT_CK(NULL, "usb_host", &clk_usb_host), |
107 | INIT_CK(NULL, "m2p0", &clk_m2p0), | ||
108 | INIT_CK(NULL, "m2p1", &clk_m2p1), | ||
109 | INIT_CK(NULL, "m2p2", &clk_m2p2), | ||
110 | INIT_CK(NULL, "m2p3", &clk_m2p3), | ||
111 | INIT_CK(NULL, "m2p4", &clk_m2p4), | ||
112 | INIT_CK(NULL, "m2p5", &clk_m2p5), | ||
113 | INIT_CK(NULL, "m2p6", &clk_m2p6), | ||
114 | INIT_CK(NULL, "m2p7", &clk_m2p7), | ||
115 | INIT_CK(NULL, "m2p8", &clk_m2p8), | ||
116 | INIT_CK(NULL, "m2p9", &clk_m2p9), | ||
117 | INIT_CK(NULL, "m2m0", &clk_m2m0), | ||
118 | INIT_CK(NULL, "m2m1", &clk_m2m1), | ||
57 | }; | 119 | }; |
58 | 120 | ||
59 | 121 | ||
@@ -110,6 +172,22 @@ static unsigned long calc_pll_rate(u32 config_word) | |||
110 | return (unsigned long)rate; | 172 | return (unsigned long)rate; |
111 | } | 173 | } |
112 | 174 | ||
175 | static void __init ep93xx_dma_clock_init(void) | ||
176 | { | ||
177 | clk_m2p0.rate = clk_h.rate; | ||
178 | clk_m2p1.rate = clk_h.rate; | ||
179 | clk_m2p2.rate = clk_h.rate; | ||
180 | clk_m2p3.rate = clk_h.rate; | ||
181 | clk_m2p4.rate = clk_h.rate; | ||
182 | clk_m2p5.rate = clk_h.rate; | ||
183 | clk_m2p6.rate = clk_h.rate; | ||
184 | clk_m2p7.rate = clk_h.rate; | ||
185 | clk_m2p8.rate = clk_h.rate; | ||
186 | clk_m2p9.rate = clk_h.rate; | ||
187 | clk_m2m0.rate = clk_h.rate; | ||
188 | clk_m2m1.rate = clk_h.rate; | ||
189 | } | ||
190 | |||
113 | static int __init ep93xx_clock_init(void) | 191 | static int __init ep93xx_clock_init(void) |
114 | { | 192 | { |
115 | u32 value; | 193 | u32 value; |
@@ -124,6 +202,7 @@ static int __init ep93xx_clock_init(void) | |||
124 | clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7]; | 202 | clk_f.rate = clk_pll1.rate / fclk_divisors[(value >> 25) & 0x7]; |
125 | clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7]; | 203 | clk_h.rate = clk_pll1.rate / hclk_divisors[(value >> 20) & 0x7]; |
126 | clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3]; | 204 | clk_p.rate = clk_h.rate / pclk_divisors[(value >> 18) & 0x3]; |
205 | ep93xx_dma_clock_init(); | ||
127 | 206 | ||
128 | value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2); | 207 | value = __raw_readl(EP93XX_SYSCON_CLOCK_SET2); |
129 | if (!(value & 0x00080000)) { /* PLL2 bypassed? */ | 208 | if (!(value & 0x00080000)) { /* PLL2 bypassed? */ |
diff --git a/arch/arm/mach-ep93xx/dma-m2p.c b/arch/arm/mach-ep93xx/dma-m2p.c new file mode 100644 index 000000000000..a2df5bb7dff0 --- /dev/null +++ b/arch/arm/mach-ep93xx/dma-m2p.c | |||
@@ -0,0 +1,408 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ep93xx/dma-m2p.c | ||
3 | * M2P DMA handling for Cirrus EP93xx chips. | ||
4 | * | ||
5 | * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org> | ||
6 | * Copyright (C) 2006 Applied Data Systems | ||
7 | * | ||
8 | * Copyright (C) 2009 Ryan Mallon <ryan@bluewatersys.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or (at | ||
13 | * your option) any later version. | ||
14 | */ | ||
15 | |||
16 | /* | ||
17 | * On the EP93xx chip the following peripherals my be allocated to the 10 | ||
18 | * Memory to Internal Peripheral (M2P) channels (5 transmit + 5 receive). | ||
19 | * | ||
20 | * I2S contains 3 Tx and 3 Rx DMA Channels | ||
21 | * AAC contains 3 Tx and 3 Rx DMA Channels | ||
22 | * UART1 contains 1 Tx and 1 Rx DMA Channels | ||
23 | * UART2 contains 1 Tx and 1 Rx DMA Channels | ||
24 | * UART3 contains 1 Tx and 1 Rx DMA Channels | ||
25 | * IrDA contains 1 Tx and 1 Rx DMA Channels | ||
26 | * | ||
27 | * SSP and IDE use the Memory to Memory (M2M) channels and are not covered | ||
28 | * with this implementation. | ||
29 | */ | ||
30 | |||
31 | #include <linux/kernel.h> | ||
32 | #include <linux/clk.h> | ||
33 | #include <linux/err.h> | ||
34 | #include <linux/interrupt.h> | ||
35 | #include <linux/module.h> | ||
36 | |||
37 | #include <mach/dma.h> | ||
38 | #include <mach/hardware.h> | ||
39 | |||
40 | #define M2P_CONTROL 0x00 | ||
41 | #define M2P_CONTROL_STALL_IRQ_EN (1 << 0) | ||
42 | #define M2P_CONTROL_NFB_IRQ_EN (1 << 1) | ||
43 | #define M2P_CONTROL_ERROR_IRQ_EN (1 << 3) | ||
44 | #define M2P_CONTROL_ENABLE (1 << 4) | ||
45 | #define M2P_INTERRUPT 0x04 | ||
46 | #define M2P_INTERRUPT_STALL (1 << 0) | ||
47 | #define M2P_INTERRUPT_NFB (1 << 1) | ||
48 | #define M2P_INTERRUPT_ERROR (1 << 3) | ||
49 | #define M2P_PPALLOC 0x08 | ||
50 | #define M2P_STATUS 0x0c | ||
51 | #define M2P_REMAIN 0x14 | ||
52 | #define M2P_MAXCNT0 0x20 | ||
53 | #define M2P_BASE0 0x24 | ||
54 | #define M2P_MAXCNT1 0x30 | ||
55 | #define M2P_BASE1 0x34 | ||
56 | |||
57 | #define STATE_IDLE 0 /* Channel is inactive. */ | ||
58 | #define STATE_STALL 1 /* Channel is active, no buffers pending. */ | ||
59 | #define STATE_ON 2 /* Channel is active, one buffer pending. */ | ||
60 | #define STATE_NEXT 3 /* Channel is active, two buffers pending. */ | ||
61 | |||
62 | struct m2p_channel { | ||
63 | char *name; | ||
64 | void __iomem *base; | ||
65 | int irq; | ||
66 | |||
67 | struct clk *clk; | ||
68 | spinlock_t lock; | ||
69 | |||
70 | void *client; | ||
71 | unsigned next_slot:1; | ||
72 | struct ep93xx_dma_buffer *buffer_xfer; | ||
73 | struct ep93xx_dma_buffer *buffer_next; | ||
74 | struct list_head buffers_pending; | ||
75 | }; | ||
76 | |||
77 | static struct m2p_channel m2p_rx[] = { | ||
78 | {"m2p1", EP93XX_DMA_BASE + 0x0040, IRQ_EP93XX_DMAM2P1}, | ||
79 | {"m2p3", EP93XX_DMA_BASE + 0x00c0, IRQ_EP93XX_DMAM2P3}, | ||
80 | {"m2p5", EP93XX_DMA_BASE + 0x0200, IRQ_EP93XX_DMAM2P5}, | ||
81 | {"m2p7", EP93XX_DMA_BASE + 0x0280, IRQ_EP93XX_DMAM2P7}, | ||
82 | {"m2p9", EP93XX_DMA_BASE + 0x0300, IRQ_EP93XX_DMAM2P9}, | ||
83 | {NULL}, | ||
84 | }; | ||
85 | |||
86 | static struct m2p_channel m2p_tx[] = { | ||
87 | {"m2p0", EP93XX_DMA_BASE + 0x0000, IRQ_EP93XX_DMAM2P0}, | ||
88 | {"m2p2", EP93XX_DMA_BASE + 0x0080, IRQ_EP93XX_DMAM2P2}, | ||
89 | {"m2p4", EP93XX_DMA_BASE + 0x0240, IRQ_EP93XX_DMAM2P4}, | ||
90 | {"m2p6", EP93XX_DMA_BASE + 0x02c0, IRQ_EP93XX_DMAM2P6}, | ||
91 | {"m2p8", EP93XX_DMA_BASE + 0x0340, IRQ_EP93XX_DMAM2P8}, | ||
92 | {NULL}, | ||
93 | }; | ||
94 | |||
95 | static void feed_buf(struct m2p_channel *ch, struct ep93xx_dma_buffer *buf) | ||
96 | { | ||
97 | if (ch->next_slot == 0) { | ||
98 | writel(buf->size, ch->base + M2P_MAXCNT0); | ||
99 | writel(buf->bus_addr, ch->base + M2P_BASE0); | ||
100 | } else { | ||
101 | writel(buf->size, ch->base + M2P_MAXCNT1); | ||
102 | writel(buf->bus_addr, ch->base + M2P_BASE1); | ||
103 | } | ||
104 | ch->next_slot ^= 1; | ||
105 | } | ||
106 | |||
107 | static void choose_buffer_xfer(struct m2p_channel *ch) | ||
108 | { | ||
109 | struct ep93xx_dma_buffer *buf; | ||
110 | |||
111 | ch->buffer_xfer = NULL; | ||
112 | if (!list_empty(&ch->buffers_pending)) { | ||
113 | buf = list_entry(ch->buffers_pending.next, | ||
114 | struct ep93xx_dma_buffer, list); | ||
115 | list_del(&buf->list); | ||
116 | feed_buf(ch, buf); | ||
117 | ch->buffer_xfer = buf; | ||
118 | } | ||
119 | } | ||
120 | |||
121 | static void choose_buffer_next(struct m2p_channel *ch) | ||
122 | { | ||
123 | struct ep93xx_dma_buffer *buf; | ||
124 | |||
125 | ch->buffer_next = NULL; | ||
126 | if (!list_empty(&ch->buffers_pending)) { | ||
127 | buf = list_entry(ch->buffers_pending.next, | ||
128 | struct ep93xx_dma_buffer, list); | ||
129 | list_del(&buf->list); | ||
130 | feed_buf(ch, buf); | ||
131 | ch->buffer_next = buf; | ||
132 | } | ||
133 | } | ||
134 | |||
135 | static inline void m2p_set_control(struct m2p_channel *ch, u32 v) | ||
136 | { | ||
137 | /* | ||
138 | * The control register must be read immediately after being written so | ||
139 | * that the internal state machine is correctly updated. See the ep93xx | ||
140 | * users' guide for details. | ||
141 | */ | ||
142 | writel(v, ch->base + M2P_CONTROL); | ||
143 | readl(ch->base + M2P_CONTROL); | ||
144 | } | ||
145 | |||
146 | static inline int m2p_channel_state(struct m2p_channel *ch) | ||
147 | { | ||
148 | return (readl(ch->base + M2P_STATUS) >> 4) & 0x3; | ||
149 | } | ||
150 | |||
151 | static irqreturn_t m2p_irq(int irq, void *dev_id) | ||
152 | { | ||
153 | struct m2p_channel *ch = dev_id; | ||
154 | struct ep93xx_dma_m2p_client *cl; | ||
155 | u32 irq_status, v; | ||
156 | int error = 0; | ||
157 | |||
158 | cl = ch->client; | ||
159 | |||
160 | spin_lock(&ch->lock); | ||
161 | irq_status = readl(ch->base + M2P_INTERRUPT); | ||
162 | |||
163 | if (irq_status & M2P_INTERRUPT_ERROR) { | ||
164 | writel(M2P_INTERRUPT_ERROR, ch->base + M2P_INTERRUPT); | ||
165 | error = 1; | ||
166 | } | ||
167 | |||
168 | if ((irq_status & (M2P_INTERRUPT_STALL | M2P_INTERRUPT_NFB)) == 0) { | ||
169 | spin_unlock(&ch->lock); | ||
170 | return IRQ_NONE; | ||
171 | } | ||
172 | |||
173 | switch (m2p_channel_state(ch)) { | ||
174 | case STATE_IDLE: | ||
175 | pr_crit("m2p_irq: dma interrupt without a dma buffer\n"); | ||
176 | BUG(); | ||
177 | break; | ||
178 | |||
179 | case STATE_STALL: | ||
180 | cl->buffer_finished(cl->cookie, ch->buffer_xfer, 0, error); | ||
181 | if (ch->buffer_next != NULL) { | ||
182 | cl->buffer_finished(cl->cookie, ch->buffer_next, | ||
183 | 0, error); | ||
184 | } | ||
185 | choose_buffer_xfer(ch); | ||
186 | choose_buffer_next(ch); | ||
187 | if (ch->buffer_xfer != NULL) | ||
188 | cl->buffer_started(cl->cookie, ch->buffer_xfer); | ||
189 | break; | ||
190 | |||
191 | case STATE_ON: | ||
192 | cl->buffer_finished(cl->cookie, ch->buffer_xfer, 0, error); | ||
193 | ch->buffer_xfer = ch->buffer_next; | ||
194 | choose_buffer_next(ch); | ||
195 | cl->buffer_started(cl->cookie, ch->buffer_xfer); | ||
196 | break; | ||
197 | |||
198 | case STATE_NEXT: | ||
199 | pr_crit("m2p_irq: dma interrupt while next\n"); | ||
200 | BUG(); | ||
201 | break; | ||
202 | } | ||
203 | |||
204 | v = readl(ch->base + M2P_CONTROL) & ~(M2P_CONTROL_STALL_IRQ_EN | | ||
205 | M2P_CONTROL_NFB_IRQ_EN); | ||
206 | if (ch->buffer_xfer != NULL) | ||
207 | v |= M2P_CONTROL_STALL_IRQ_EN; | ||
208 | if (ch->buffer_next != NULL) | ||
209 | v |= M2P_CONTROL_NFB_IRQ_EN; | ||
210 | m2p_set_control(ch, v); | ||
211 | |||
212 | spin_unlock(&ch->lock); | ||
213 | return IRQ_HANDLED; | ||
214 | } | ||
215 | |||
216 | static struct m2p_channel *find_free_channel(struct ep93xx_dma_m2p_client *cl) | ||
217 | { | ||
218 | struct m2p_channel *ch; | ||
219 | int i; | ||
220 | |||
221 | if (cl->flags & EP93XX_DMA_M2P_RX) | ||
222 | ch = m2p_rx; | ||
223 | else | ||
224 | ch = m2p_tx; | ||
225 | |||
226 | for (i = 0; ch[i].base; i++) { | ||
227 | struct ep93xx_dma_m2p_client *client; | ||
228 | |||
229 | client = ch[i].client; | ||
230 | if (client != NULL) { | ||
231 | int port; | ||
232 | |||
233 | port = cl->flags & EP93XX_DMA_M2P_PORT_MASK; | ||
234 | if (port == (client->flags & | ||
235 | EP93XX_DMA_M2P_PORT_MASK)) { | ||
236 | pr_warning("DMA channel already used by %s\n", | ||
237 | cl->name ? : "unknown client"); | ||
238 | return ERR_PTR(-EBUSY); | ||
239 | } | ||
240 | } | ||
241 | } | ||
242 | |||
243 | for (i = 0; ch[i].base; i++) { | ||
244 | if (ch[i].client == NULL) | ||
245 | return ch + i; | ||
246 | } | ||
247 | |||
248 | pr_warning("No free DMA channel for %s\n", | ||
249 | cl->name ? : "unknown client"); | ||
250 | return ERR_PTR(-ENODEV); | ||
251 | } | ||
252 | |||
253 | static void channel_enable(struct m2p_channel *ch) | ||
254 | { | ||
255 | struct ep93xx_dma_m2p_client *cl = ch->client; | ||
256 | u32 v; | ||
257 | |||
258 | clk_enable(ch->clk); | ||
259 | |||
260 | v = cl->flags & EP93XX_DMA_M2P_PORT_MASK; | ||
261 | writel(v, ch->base + M2P_PPALLOC); | ||
262 | |||
263 | v = cl->flags & EP93XX_DMA_M2P_ERROR_MASK; | ||
264 | v |= M2P_CONTROL_ENABLE | M2P_CONTROL_ERROR_IRQ_EN; | ||
265 | m2p_set_control(ch, v); | ||
266 | } | ||
267 | |||
268 | static void channel_disable(struct m2p_channel *ch) | ||
269 | { | ||
270 | u32 v; | ||
271 | |||
272 | v = readl(ch->base + M2P_CONTROL); | ||
273 | v &= ~(M2P_CONTROL_STALL_IRQ_EN | M2P_CONTROL_NFB_IRQ_EN); | ||
274 | m2p_set_control(ch, v); | ||
275 | |||
276 | while (m2p_channel_state(ch) == STATE_ON) | ||
277 | cpu_relax(); | ||
278 | |||
279 | m2p_set_control(ch, 0x0); | ||
280 | |||
281 | while (m2p_channel_state(ch) == STATE_STALL) | ||
282 | cpu_relax(); | ||
283 | |||
284 | clk_disable(ch->clk); | ||
285 | } | ||
286 | |||
287 | int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *cl) | ||
288 | { | ||
289 | struct m2p_channel *ch; | ||
290 | int err; | ||
291 | |||
292 | ch = find_free_channel(cl); | ||
293 | if (IS_ERR(ch)) | ||
294 | return PTR_ERR(ch); | ||
295 | |||
296 | err = request_irq(ch->irq, m2p_irq, 0, cl->name ? : "dma-m2p", ch); | ||
297 | if (err) | ||
298 | return err; | ||
299 | |||
300 | ch->client = cl; | ||
301 | ch->next_slot = 0; | ||
302 | ch->buffer_xfer = NULL; | ||
303 | ch->buffer_next = NULL; | ||
304 | INIT_LIST_HEAD(&ch->buffers_pending); | ||
305 | |||
306 | cl->channel = ch; | ||
307 | |||
308 | channel_enable(ch); | ||
309 | |||
310 | return 0; | ||
311 | } | ||
312 | EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_client_register); | ||
313 | |||
314 | void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *cl) | ||
315 | { | ||
316 | struct m2p_channel *ch = cl->channel; | ||
317 | |||
318 | channel_disable(ch); | ||
319 | free_irq(ch->irq, ch); | ||
320 | ch->client = NULL; | ||
321 | } | ||
322 | EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_client_unregister); | ||
323 | |||
324 | void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *cl, | ||
325 | struct ep93xx_dma_buffer *buf) | ||
326 | { | ||
327 | struct m2p_channel *ch = cl->channel; | ||
328 | unsigned long flags; | ||
329 | u32 v; | ||
330 | |||
331 | spin_lock_irqsave(&ch->lock, flags); | ||
332 | v = readl(ch->base + M2P_CONTROL); | ||
333 | if (ch->buffer_xfer == NULL) { | ||
334 | ch->buffer_xfer = buf; | ||
335 | feed_buf(ch, buf); | ||
336 | cl->buffer_started(cl->cookie, buf); | ||
337 | |||
338 | v |= M2P_CONTROL_STALL_IRQ_EN; | ||
339 | m2p_set_control(ch, v); | ||
340 | |||
341 | } else if (ch->buffer_next == NULL) { | ||
342 | ch->buffer_next = buf; | ||
343 | feed_buf(ch, buf); | ||
344 | |||
345 | v |= M2P_CONTROL_NFB_IRQ_EN; | ||
346 | m2p_set_control(ch, v); | ||
347 | } else { | ||
348 | list_add_tail(&buf->list, &ch->buffers_pending); | ||
349 | } | ||
350 | spin_unlock_irqrestore(&ch->lock, flags); | ||
351 | } | ||
352 | EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_submit); | ||
353 | |||
354 | void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *cl, | ||
355 | struct ep93xx_dma_buffer *buf) | ||
356 | { | ||
357 | struct m2p_channel *ch = cl->channel; | ||
358 | |||
359 | list_add_tail(&buf->list, &ch->buffers_pending); | ||
360 | } | ||
361 | EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_submit_recursive); | ||
362 | |||
363 | void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *cl) | ||
364 | { | ||
365 | struct m2p_channel *ch = cl->channel; | ||
366 | |||
367 | channel_disable(ch); | ||
368 | ch->next_slot = 0; | ||
369 | ch->buffer_xfer = NULL; | ||
370 | ch->buffer_next = NULL; | ||
371 | INIT_LIST_HEAD(&ch->buffers_pending); | ||
372 | channel_enable(ch); | ||
373 | } | ||
374 | EXPORT_SYMBOL_GPL(ep93xx_dma_m2p_flush); | ||
375 | |||
376 | static int init_channel(struct m2p_channel *ch) | ||
377 | { | ||
378 | ch->clk = clk_get(NULL, ch->name); | ||
379 | if (IS_ERR(ch->clk)) | ||
380 | return PTR_ERR(ch->clk); | ||
381 | |||
382 | spin_lock_init(&ch->lock); | ||
383 | ch->client = NULL; | ||
384 | |||
385 | return 0; | ||
386 | } | ||
387 | |||
388 | static int __init ep93xx_dma_m2p_init(void) | ||
389 | { | ||
390 | int i; | ||
391 | int ret; | ||
392 | |||
393 | for (i = 0; m2p_rx[i].base; i++) { | ||
394 | ret = init_channel(m2p_rx + i); | ||
395 | if (ret) | ||
396 | return ret; | ||
397 | } | ||
398 | |||
399 | for (i = 0; m2p_tx[i].base; i++) { | ||
400 | ret = init_channel(m2p_tx + i); | ||
401 | if (ret) | ||
402 | return ret; | ||
403 | } | ||
404 | |||
405 | pr_info("M2P DMA subsystem initialized\n"); | ||
406 | return 0; | ||
407 | } | ||
408 | arch_initcall(ep93xx_dma_m2p_init); | ||
diff --git a/arch/arm/mach-ep93xx/edb9307a.c b/arch/arm/mach-ep93xx/edb9307a.c index 5b5c22b681be..6171167d3315 100644 --- a/arch/arm/mach-ep93xx/edb9307a.c +++ b/arch/arm/mach-ep93xx/edb9307a.c | |||
@@ -48,12 +48,24 @@ static struct ep93xx_eth_data edb9307a_eth_data = { | |||
48 | .phy_id = 1, | 48 | .phy_id = 1, |
49 | }; | 49 | }; |
50 | 50 | ||
51 | static struct i2c_board_info __initdata edb9307a_i2c_data[] = { | ||
52 | { | ||
53 | /* On-board battery backed RTC */ | ||
54 | I2C_BOARD_INFO("isl1208", 0x6f), | ||
55 | }, | ||
56 | /* | ||
57 | * The I2C signals are also routed to the Expansion Connector (J4) | ||
58 | */ | ||
59 | }; | ||
60 | |||
51 | static void __init edb9307a_init_machine(void) | 61 | static void __init edb9307a_init_machine(void) |
52 | { | 62 | { |
53 | ep93xx_init_devices(); | 63 | ep93xx_init_devices(); |
54 | platform_device_register(&edb9307a_flash); | 64 | platform_device_register(&edb9307a_flash); |
55 | 65 | ||
56 | ep93xx_register_eth(&edb9307a_eth_data, 1); | 66 | ep93xx_register_eth(&edb9307a_eth_data, 1); |
67 | |||
68 | ep93xx_init_i2c(edb9307a_i2c_data, ARRAY_SIZE(edb9307a_i2c_data)); | ||
57 | } | 69 | } |
58 | 70 | ||
59 | MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") | 71 | MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") |
diff --git a/arch/arm/mach-ep93xx/include/mach/dma.h b/arch/arm/mach-ep93xx/include/mach/dma.h new file mode 100644 index 000000000000..ef6bd9d13148 --- /dev/null +++ b/arch/arm/mach-ep93xx/include/mach/dma.h | |||
@@ -0,0 +1,52 @@ | |||
1 | #ifndef __ASM_ARCH_DMA_H | ||
2 | #define __ASM_ARCH_DMA_H | ||
3 | |||
4 | #include <linux/list.h> | ||
5 | #include <linux/types.h> | ||
6 | |||
7 | struct ep93xx_dma_buffer { | ||
8 | struct list_head list; | ||
9 | u32 bus_addr; | ||
10 | u16 size; | ||
11 | }; | ||
12 | |||
13 | struct ep93xx_dma_m2p_client { | ||
14 | char *name; | ||
15 | u8 flags; | ||
16 | void *cookie; | ||
17 | void (*buffer_started)(void *cookie, | ||
18 | struct ep93xx_dma_buffer *buf); | ||
19 | void (*buffer_finished)(void *cookie, | ||
20 | struct ep93xx_dma_buffer *buf, | ||
21 | int bytes, int error); | ||
22 | |||
23 | /* Internal to the DMA code. */ | ||
24 | void *channel; | ||
25 | }; | ||
26 | |||
27 | #define EP93XX_DMA_M2P_PORT_I2S1 0x00 | ||
28 | #define EP93XX_DMA_M2P_PORT_I2S2 0x01 | ||
29 | #define EP93XX_DMA_M2P_PORT_AAC1 0x02 | ||
30 | #define EP93XX_DMA_M2P_PORT_AAC2 0x03 | ||
31 | #define EP93XX_DMA_M2P_PORT_AAC3 0x04 | ||
32 | #define EP93XX_DMA_M2P_PORT_I2S3 0x05 | ||
33 | #define EP93XX_DMA_M2P_PORT_UART1 0x06 | ||
34 | #define EP93XX_DMA_M2P_PORT_UART2 0x07 | ||
35 | #define EP93XX_DMA_M2P_PORT_UART3 0x08 | ||
36 | #define EP93XX_DMA_M2P_PORT_IRDA 0x09 | ||
37 | #define EP93XX_DMA_M2P_PORT_MASK 0x0f | ||
38 | #define EP93XX_DMA_M2P_TX 0x00 | ||
39 | #define EP93XX_DMA_M2P_RX 0x10 | ||
40 | #define EP93XX_DMA_M2P_ABORT_ON_ERROR 0x20 | ||
41 | #define EP93XX_DMA_M2P_IGNORE_ERROR 0x40 | ||
42 | #define EP93XX_DMA_M2P_ERROR_MASK 0x60 | ||
43 | |||
44 | int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *m2p); | ||
45 | void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *m2p); | ||
46 | void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *m2p, | ||
47 | struct ep93xx_dma_buffer *buf); | ||
48 | void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *m2p, | ||
49 | struct ep93xx_dma_buffer *buf); | ||
50 | void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *m2p); | ||
51 | |||
52 | #endif /* __ASM_ARCH_DMA_H */ | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h index 22d6c9a6e4ca..f66be12b856e 100644 --- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | |||
@@ -58,7 +58,8 @@ | |||
58 | 58 | ||
59 | 59 | ||
60 | /* AHB peripherals */ | 60 | /* AHB peripherals */ |
61 | #define EP93XX_DMA_BASE (EP93XX_AHB_VIRT_BASE + 0x00000000) | 61 | #define EP93XX_DMA_BASE ((void __iomem *) \ |
62 | (EP93XX_AHB_VIRT_BASE + 0x00000000)) | ||
62 | 63 | ||
63 | #define EP93XX_ETHERNET_BASE (EP93XX_AHB_VIRT_BASE + 0x00010000) | 64 | #define EP93XX_ETHERNET_BASE (EP93XX_AHB_VIRT_BASE + 0x00010000) |
64 | #define EP93XX_ETHERNET_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00010000) | 65 | #define EP93XX_ETHERNET_PHYS_BASE (EP93XX_AHB_PHYS_BASE + 0x00010000) |
diff --git a/arch/arm/mach-footbridge/dma.c b/arch/arm/mach-footbridge/dma.c index 4f3506346969..e2e0df8bcee2 100644 --- a/arch/arm/mach-footbridge/dma.c +++ b/arch/arm/mach-footbridge/dma.c | |||
@@ -21,16 +21,16 @@ | |||
21 | #include <asm/hardware/dec21285.h> | 21 | #include <asm/hardware/dec21285.h> |
22 | 22 | ||
23 | #if 0 | 23 | #if 0 |
24 | static int fb_dma_request(dmach_t channel, dma_t *dma) | 24 | static int fb_dma_request(unsigned int chan, dma_t *dma) |
25 | { | 25 | { |
26 | return -EINVAL; | 26 | return -EINVAL; |
27 | } | 27 | } |
28 | 28 | ||
29 | static void fb_dma_enable(dmach_t channel, dma_t *dma) | 29 | static void fb_dma_enable(unsigned int chan, dma_t *dma) |
30 | { | 30 | { |
31 | } | 31 | } |
32 | 32 | ||
33 | static void fb_dma_disable(dmach_t channel, dma_t *dma) | 33 | static void fb_dma_disable(unsigned int chan, dma_t *dma) |
34 | { | 34 | { |
35 | } | 35 | } |
36 | 36 | ||
@@ -42,7 +42,7 @@ static struct dma_ops fb_dma_ops = { | |||
42 | }; | 42 | }; |
43 | #endif | 43 | #endif |
44 | 44 | ||
45 | void __init arch_dma_init(dma_t *dma) | 45 | static int __init fb_dma_init(void) |
46 | { | 46 | { |
47 | #if 0 | 47 | #if 0 |
48 | dma[_DC21285_DMA(0)].d_ops = &fb_dma_ops; | 48 | dma[_DC21285_DMA(0)].d_ops = &fb_dma_ops; |
@@ -50,6 +50,8 @@ void __init arch_dma_init(dma_t *dma) | |||
50 | #endif | 50 | #endif |
51 | #ifdef CONFIG_ISA_DMA | 51 | #ifdef CONFIG_ISA_DMA |
52 | if (footbridge_cfn_mode()) | 52 | if (footbridge_cfn_mode()) |
53 | isa_init_dma(dma + _ISA_DMA(0)); | 53 | isa_init_dma(); |
54 | #endif | 54 | #endif |
55 | return 0; | ||
55 | } | 56 | } |
57 | core_initcall(fb_dma_init); | ||
diff --git a/arch/arm/mach-integrator/clock.h b/arch/arm/mach-integrator/clock.h deleted file mode 100644 index e69de29bb2d1..000000000000 --- a/arch/arm/mach-integrator/clock.h +++ /dev/null | |||
diff --git a/arch/arm/mach-ks8695/Kconfig b/arch/arm/mach-ks8695/Kconfig index 2754daabda55..fe0c82e30b2d 100644 --- a/arch/arm/mach-ks8695/Kconfig +++ b/arch/arm/mach-ks8695/Kconfig | |||
@@ -14,6 +14,12 @@ config MACH_DSM320 | |||
14 | Say 'Y' here if you want your kernel to run on the D-Link | 14 | Say 'Y' here if you want your kernel to run on the D-Link |
15 | DSM-320 Wireless Media Player. | 15 | DSM-320 Wireless Media Player. |
16 | 16 | ||
17 | config MACH_ACS5K | ||
18 | bool "Brivo Systems LLC, ACS-5000 Master board" | ||
19 | help | ||
20 | say 'Y' here if you want your kernel to run on the Brivo | ||
21 | Systems LLC, ACS-5000 Master board. | ||
22 | |||
17 | endmenu | 23 | endmenu |
18 | 24 | ||
19 | endif | 25 | endif |
diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile index f735d2cc0294..7e3e8160ed30 100644 --- a/arch/arm/mach-ks8695/Makefile +++ b/arch/arm/mach-ks8695/Makefile | |||
@@ -17,3 +17,4 @@ obj-$(CONFIG_LEDS) += leds.o | |||
17 | # Board-specific support | 17 | # Board-specific support |
18 | obj-$(CONFIG_MACH_KS8695) += board-micrel.o | 18 | obj-$(CONFIG_MACH_KS8695) += board-micrel.o |
19 | obj-$(CONFIG_MACH_DSM320) += board-dsm320.o | 19 | obj-$(CONFIG_MACH_DSM320) += board-dsm320.o |
20 | obj-$(CONFIG_MACH_ACS5K) += board-acs5k.o | ||
diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c new file mode 100644 index 000000000000..9e3e5a640ad2 --- /dev/null +++ b/arch/arm/mach-ks8695/board-acs5k.c | |||
@@ -0,0 +1,233 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ks8695/board-acs5k.c | ||
3 | * | ||
4 | * Brivo Systems LLC, ACS-5000 Master Board | ||
5 | * | ||
6 | * Copyright 2008 Simtec Electronics | ||
7 | * Daniel Silverstone <dsilvers@simtec.co.uk> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/types.h> | ||
16 | #include <linux/interrupt.h> | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | |||
20 | #include <linux/i2c.h> | ||
21 | #include <linux/i2c-algo-bit.h> | ||
22 | #include <linux/i2c-gpio.h> | ||
23 | #include <linux/i2c/pca953x.h> | ||
24 | |||
25 | #include <linux/mtd/mtd.h> | ||
26 | #include <linux/mtd/map.h> | ||
27 | #include <linux/mtd/physmap.h> | ||
28 | #include <linux/mtd/partitions.h> | ||
29 | |||
30 | #include <asm/mach-types.h> | ||
31 | |||
32 | #include <asm/mach/arch.h> | ||
33 | #include <asm/mach/map.h> | ||
34 | #include <asm/mach/irq.h> | ||
35 | |||
36 | #include <mach/devices.h> | ||
37 | #include <mach/gpio.h> | ||
38 | |||
39 | #include "generic.h" | ||
40 | |||
41 | static struct i2c_gpio_platform_data acs5k_i2c_device_platdata = { | ||
42 | .sda_pin = 4, | ||
43 | .scl_pin = 5, | ||
44 | .udelay = 10, | ||
45 | }; | ||
46 | |||
47 | static struct platform_device acs5k_i2c_device = { | ||
48 | .name = "i2c-gpio", | ||
49 | .id = -1, | ||
50 | .num_resources = 0, | ||
51 | .resource = NULL, | ||
52 | .dev = { | ||
53 | .platform_data = &acs5k_i2c_device_platdata, | ||
54 | }, | ||
55 | }; | ||
56 | |||
57 | static int acs5k_pca9555_setup(struct i2c_client *client, | ||
58 | unsigned gpio_base, unsigned ngpio, | ||
59 | void *context) | ||
60 | { | ||
61 | static int acs5k_gpio_value[] = { | ||
62 | -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, -1, 0, 1, 0, -1, -1 | ||
63 | }; | ||
64 | int n; | ||
65 | |||
66 | for (n = 0; n < ARRAY_SIZE(acs5k_gpio_value); ++n) { | ||
67 | gpio_request(gpio_base + n, "ACS-5000 GPIO Expander"); | ||
68 | if (acs5k_gpio_value[n] < 0) | ||
69 | gpio_direction_input(gpio_base + n); | ||
70 | else | ||
71 | gpio_direction_output(gpio_base + n, | ||
72 | acs5k_gpio_value[n]); | ||
73 | gpio_export(gpio_base + n, 0); /* Export, direction locked down */ | ||
74 | } | ||
75 | |||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | static struct pca953x_platform_data acs5k_i2c_pca9555_platdata = { | ||
80 | .gpio_base = 16, /* Start directly after the CPU's GPIO */ | ||
81 | .invert = 0, /* Do not invert */ | ||
82 | .setup = acs5k_pca9555_setup, | ||
83 | }; | ||
84 | |||
85 | static struct i2c_board_info acs5k_i2c_devs[] __initdata = { | ||
86 | { | ||
87 | I2C_BOARD_INFO("pcf8563", 0x51), | ||
88 | }, | ||
89 | { | ||
90 | I2C_BOARD_INFO("pca9555", 0x20), | ||
91 | .platform_data = &acs5k_i2c_pca9555_platdata, | ||
92 | }, | ||
93 | }; | ||
94 | |||
95 | static void __devinit acs5k_i2c_init(void) | ||
96 | { | ||
97 | /* The gpio interface */ | ||
98 | platform_device_register(&acs5k_i2c_device); | ||
99 | /* I2C devices */ | ||
100 | i2c_register_board_info(0, acs5k_i2c_devs, | ||
101 | ARRAY_SIZE(acs5k_i2c_devs)); | ||
102 | } | ||
103 | |||
104 | static struct mtd_partition acs5k_nor_partitions[] = { | ||
105 | [0] = { | ||
106 | .name = "Boot Agent and config", | ||
107 | .size = SZ_256K, | ||
108 | .offset = 0, | ||
109 | .mask_flags = MTD_WRITEABLE, | ||
110 | }, | ||
111 | [1] = { | ||
112 | .name = "Kernel", | ||
113 | .size = SZ_1M, | ||
114 | .offset = SZ_256K, | ||
115 | }, | ||
116 | [2] = { | ||
117 | .name = "SquashFS1", | ||
118 | .size = SZ_2M, | ||
119 | .offset = SZ_256K + SZ_1M, | ||
120 | }, | ||
121 | [3] = { | ||
122 | .name = "SquashFS2", | ||
123 | .size = SZ_4M + SZ_2M, | ||
124 | .offset = SZ_256K + SZ_1M + SZ_2M, | ||
125 | }, | ||
126 | [4] = { | ||
127 | .name = "Data", | ||
128 | .size = SZ_16M + SZ_4M + SZ_2M + SZ_512K, /* 22.5 MB */ | ||
129 | .offset = SZ_256K + SZ_8M + SZ_1M, | ||
130 | } | ||
131 | }; | ||
132 | |||
133 | static struct physmap_flash_data acs5k_nor_pdata = { | ||
134 | .width = 4, | ||
135 | .nr_parts = ARRAY_SIZE(acs5k_nor_partitions), | ||
136 | .parts = acs5k_nor_partitions, | ||
137 | }; | ||
138 | |||
139 | static struct resource acs5k_nor_resource[] = { | ||
140 | [0] = { | ||
141 | .start = SZ_32M, /* We expect the bootloader to map | ||
142 | * the flash here. | ||
143 | */ | ||
144 | .end = SZ_32M + SZ_16M - 1, | ||
145 | .flags = IORESOURCE_MEM, | ||
146 | }, | ||
147 | [1] = { | ||
148 | .start = SZ_32M + SZ_16M, | ||
149 | .end = SZ_32M + SZ_32M - SZ_256K - 1, | ||
150 | .flags = IORESOURCE_MEM, | ||
151 | } | ||
152 | }; | ||
153 | |||
154 | static struct platform_device acs5k_device_nor = { | ||
155 | .name = "physmap-flash", | ||
156 | .id = -1, | ||
157 | .num_resources = ARRAY_SIZE(acs5k_nor_resource), | ||
158 | .resource = acs5k_nor_resource, | ||
159 | .dev = { | ||
160 | .platform_data = &acs5k_nor_pdata, | ||
161 | }, | ||
162 | }; | ||
163 | |||
164 | static void __init acs5k_register_nor(void) | ||
165 | { | ||
166 | int ret; | ||
167 | |||
168 | if (acs5k_nor_partitions[0].mask_flags == 0) | ||
169 | printk(KERN_WARNING "Warning: Unprotecting bootloader and configuration partition\n"); | ||
170 | |||
171 | ret = platform_device_register(&acs5k_device_nor); | ||
172 | if (ret < 0) | ||
173 | printk(KERN_ERR "failed to register physmap-flash device\n"); | ||
174 | } | ||
175 | |||
176 | static int __init acs5k_protection_setup(char *s) | ||
177 | { | ||
178 | /* We can't allocate anything here but we should be able | ||
179 | * to trivially parse s and decide if we can protect the | ||
180 | * bootloader partition or not | ||
181 | */ | ||
182 | if (strcmp(s, "no") == 0) | ||
183 | acs5k_nor_partitions[0].mask_flags = 0; | ||
184 | |||
185 | return 1; | ||
186 | } | ||
187 | |||
188 | __setup("protect_bootloader=", acs5k_protection_setup); | ||
189 | |||
190 | static void __init acs5k_init_gpio(void) | ||
191 | { | ||
192 | int i; | ||
193 | |||
194 | ks8695_register_gpios(); | ||
195 | for (i = 0; i < 4; ++i) | ||
196 | gpio_request(i, "ACS5K IRQ"); | ||
197 | gpio_request(7, "ACS5K KS_FRDY"); | ||
198 | for (i = 8; i < 16; ++i) | ||
199 | gpio_request(i, "ACS5K Unused"); | ||
200 | |||
201 | gpio_request(3, "ACS5K CAN Control"); | ||
202 | gpio_request(6, "ACS5K Heartbeat"); | ||
203 | gpio_direction_output(3, 1); /* Default CAN_RESET high */ | ||
204 | gpio_direction_output(6, 0); /* Default KS8695_ACTIVE low */ | ||
205 | gpio_export(3, 0); /* export CAN_RESET as output only */ | ||
206 | gpio_export(6, 0); /* export KS8695_ACTIVE as output only */ | ||
207 | } | ||
208 | |||
209 | static void __init acs5k_init(void) | ||
210 | { | ||
211 | acs5k_init_gpio(); | ||
212 | |||
213 | /* Network device */ | ||
214 | ks8695_add_device_lan(); /* eth0 = LAN */ | ||
215 | ks8695_add_device_wan(); /* ethX = WAN */ | ||
216 | |||
217 | /* NOR devices */ | ||
218 | acs5k_register_nor(); | ||
219 | |||
220 | /* I2C bus */ | ||
221 | acs5k_i2c_init(); | ||
222 | } | ||
223 | |||
224 | MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board") | ||
225 | /* Maintainer: Simtec Electronics. */ | ||
226 | .phys_io = KS8695_IO_PA, | ||
227 | .io_pg_offst = (KS8695_IO_VA >> 18) & 0xfffc, | ||
228 | .boot_params = KS8695_SDRAM_PA + 0x100, | ||
229 | .map_io = ks8695_map_io, | ||
230 | .init_irq = ks8695_init_irq, | ||
231 | .init_machine = acs5k_init, | ||
232 | .timer = &ks8695_timer, | ||
233 | MACHINE_END | ||
diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c index c2a96e3965a6..e61967dde9a1 100644 --- a/arch/arm/mach-msm/board-halibut.c +++ b/arch/arm/mach-msm/board-halibut.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
28 | #include <asm/mach/flash.h> | 28 | #include <asm/mach/flash.h> |
29 | 29 | ||
30 | #include <mach/irqs.h> | ||
30 | #include <mach/board.h> | 31 | #include <mach/board.h> |
31 | #include <mach/msm_iomap.h> | 32 | #include <mach/msm_iomap.h> |
32 | 33 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index b240c5f861da..0d784a795092 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -37,16 +37,14 @@ | |||
37 | #include <asm/mach/flash.h> | 37 | #include <asm/mach/flash.h> |
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
39 | 39 | ||
40 | #include <mach/gpio-switch.h> | ||
41 | #include <mach/mux.h> | 40 | #include <mach/mux.h> |
41 | #include <mach/dma.h> | ||
42 | #include <mach/tc.h> | 42 | #include <mach/tc.h> |
43 | #include <mach/nand.h> | 43 | #include <mach/nand.h> |
44 | #include <mach/irda.h> | 44 | #include <mach/irda.h> |
45 | #include <mach/usb.h> | 45 | #include <mach/usb.h> |
46 | #include <mach/keypad.h> | 46 | #include <mach/keypad.h> |
47 | #include <mach/common.h> | 47 | #include <mach/common.h> |
48 | #include <mach/mcbsp.h> | ||
49 | #include <mach/omap-alsa.h> | ||
50 | 48 | ||
51 | static int h2_keymap[] = { | 49 | static int h2_keymap[] = { |
52 | KEY(0, 0, KEY_LEFT), | 50 | KEY(0, 0, KEY_LEFT), |
@@ -292,41 +290,6 @@ static struct platform_device h2_lcd_device = { | |||
292 | .id = -1, | 290 | .id = -1, |
293 | }; | 291 | }; |
294 | 292 | ||
295 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
296 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
297 | .spcr1 = RINTM(3) | RRST, | ||
298 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
299 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), | ||
300 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
301 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
302 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, | ||
303 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
304 | .srgr1 = FWID(15), | ||
305 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), | ||
306 | |||
307 | .pcr0 = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, | ||
308 | /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ | ||
309 | }; | ||
310 | |||
311 | static struct omap_alsa_codec_config alsa_config = { | ||
312 | .name = "H2 TSC2101", | ||
313 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
314 | .codec_configure_dev = NULL, /* tsc2101_configure, */ | ||
315 | .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ | ||
316 | .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ | ||
317 | .codec_clock_on = NULL, /* tsc2101_clock_on, */ | ||
318 | .codec_clock_off = NULL, /* tsc2101_clock_off, */ | ||
319 | .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ | ||
320 | }; | ||
321 | |||
322 | static struct platform_device h2_mcbsp1_device = { | ||
323 | .name = "omap_alsa_mcbsp", | ||
324 | .id = 1, | ||
325 | .dev = { | ||
326 | .platform_data = &alsa_config, | ||
327 | }, | ||
328 | }; | ||
329 | |||
330 | static struct platform_device *h2_devices[] __initdata = { | 293 | static struct platform_device *h2_devices[] __initdata = { |
331 | &h2_nor_device, | 294 | &h2_nor_device, |
332 | &h2_nand_device, | 295 | &h2_nand_device, |
@@ -334,7 +297,6 @@ static struct platform_device *h2_devices[] __initdata = { | |||
334 | &h2_irda_device, | 297 | &h2_irda_device, |
335 | &h2_kp_device, | 298 | &h2_kp_device, |
336 | &h2_lcd_device, | 299 | &h2_lcd_device, |
337 | &h2_mcbsp1_device, | ||
338 | }; | 300 | }; |
339 | 301 | ||
340 | static void __init h2_init_smc91x(void) | 302 | static void __init h2_init_smc91x(void) |
@@ -409,11 +371,6 @@ static struct omap_board_config_kernel h2_config[] __initdata = { | |||
409 | 371 | ||
410 | #define H2_NAND_RB_GPIO_PIN 62 | 372 | #define H2_NAND_RB_GPIO_PIN 62 |
411 | 373 | ||
412 | static int h2_nand_dev_ready(struct omap_nand_platform_data *data) | ||
413 | { | ||
414 | return gpio_get_value(H2_NAND_RB_GPIO_PIN); | ||
415 | } | ||
416 | |||
417 | static void __init h2_init(void) | 374 | static void __init h2_init(void) |
418 | { | 375 | { |
419 | /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped | 376 | /* Here we assume the NOR boot config: NOR on CS3 (possibly swapped |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 5157eea9be35..bf08b6ad22ee 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -49,8 +49,6 @@ | |||
49 | #include <mach/keypad.h> | 49 | #include <mach/keypad.h> |
50 | #include <mach/dma.h> | 50 | #include <mach/dma.h> |
51 | #include <mach/common.h> | 51 | #include <mach/common.h> |
52 | #include <mach/mcbsp.h> | ||
53 | #include <mach/omap-alsa.h> | ||
54 | 52 | ||
55 | #define H3_TS_GPIO 48 | 53 | #define H3_TS_GPIO 48 |
56 | 54 | ||
@@ -387,41 +385,6 @@ static struct spi_board_info h3_spi_board_info[] __initdata = { | |||
387 | }, | 385 | }, |
388 | }; | 386 | }; |
389 | 387 | ||
390 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
391 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
392 | .spcr1 = RINTM(3) | RRST, | ||
393 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
394 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1), | ||
395 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
396 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
397 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG, | ||
398 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
399 | .srgr1 = FWID(15), | ||
400 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(31), | ||
401 | |||
402 | .pcr0 = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP, | ||
403 | /*.pcr0 = CLKXP | CLKRP,*/ /* mcbsp: slave */ | ||
404 | }; | ||
405 | |||
406 | static struct omap_alsa_codec_config alsa_config = { | ||
407 | .name = "H3 TSC2101", | ||
408 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
409 | .codec_configure_dev = NULL, /* tsc2101_configure, */ | ||
410 | .codec_set_samplerate = NULL, /* tsc2101_set_samplerate, */ | ||
411 | .codec_clock_setup = NULL, /* tsc2101_clock_setup, */ | ||
412 | .codec_clock_on = NULL, /* tsc2101_clock_on, */ | ||
413 | .codec_clock_off = NULL, /* tsc2101_clock_off, */ | ||
414 | .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */ | ||
415 | }; | ||
416 | |||
417 | static struct platform_device h3_mcbsp1_device = { | ||
418 | .name = "omap_alsa_mcbsp", | ||
419 | .id = 1, | ||
420 | .dev = { | ||
421 | .platform_data = &alsa_config, | ||
422 | }, | ||
423 | }; | ||
424 | |||
425 | static struct platform_device *devices[] __initdata = { | 388 | static struct platform_device *devices[] __initdata = { |
426 | &nor_device, | 389 | &nor_device, |
427 | &nand_device, | 390 | &nand_device, |
@@ -430,7 +393,6 @@ static struct platform_device *devices[] __initdata = { | |||
430 | &h3_irda_device, | 393 | &h3_irda_device, |
431 | &h3_kp_device, | 394 | &h3_kp_device, |
432 | &h3_lcd_device, | 395 | &h3_lcd_device, |
433 | &h3_mcbsp1_device, | ||
434 | }; | 396 | }; |
435 | 397 | ||
436 | static struct omap_usb_config h3_usb_config __initdata = { | 398 | static struct omap_usb_config h3_usb_config __initdata = { |
@@ -472,18 +434,6 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = { | |||
472 | }, | 434 | }, |
473 | }; | 435 | }; |
474 | 436 | ||
475 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { | ||
476 | { | ||
477 | .name = "mmc_slot", | ||
478 | .gpio = OMAP_MPUIO(1), | ||
479 | .type = OMAP_GPIO_SWITCH_TYPE_COVER, | ||
480 | .debounce_rising = 100, | ||
481 | .debounce_falling = 0, | ||
482 | .notify = h3_mmc_slot_cover_handler, | ||
483 | .notify_data = NULL, | ||
484 | }, | ||
485 | }; | ||
486 | |||
487 | #define H3_NAND_RB_GPIO_PIN 10 | 437 | #define H3_NAND_RB_GPIO_PIN 10 |
488 | 438 | ||
489 | static int nand_dev_ready(struct omap_nand_platform_data *data) | 439 | static int nand_dev_ready(struct omap_nand_platform_data *data) |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index af2fb9070083..071cd02a734e 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -37,8 +37,6 @@ | |||
37 | #include <mach/usb.h> | 37 | #include <mach/usb.h> |
38 | #include <mach/keypad.h> | 38 | #include <mach/keypad.h> |
39 | #include <mach/common.h> | 39 | #include <mach/common.h> |
40 | #include <mach/mcbsp.h> | ||
41 | #include <mach/omap-alsa.h> | ||
42 | #include <mach/mmc.h> | 40 | #include <mach/mmc.h> |
43 | 41 | ||
44 | static int innovator_keymap[] = { | 42 | static int innovator_keymap[] = { |
@@ -115,42 +113,6 @@ static struct platform_device innovator_flash_device = { | |||
115 | .resource = &innovator_flash_resource, | 113 | .resource = &innovator_flash_resource, |
116 | }; | 114 | }; |
117 | 115 | ||
118 | #define DEFAULT_BITPERSAMPLE 16 | ||
119 | |||
120 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
121 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
122 | .spcr1 = RINTM(3) | RRST, | ||
123 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
124 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
125 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
126 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
127 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
128 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
129 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
130 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
131 | /*.pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP,*/ /* mcbsp: master */ | ||
132 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
133 | }; | ||
134 | |||
135 | static struct omap_alsa_codec_config alsa_config = { | ||
136 | .name = "OMAP Innovator AIC23", | ||
137 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
138 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
139 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
140 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
141 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
142 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
143 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
144 | }; | ||
145 | |||
146 | static struct platform_device innovator_mcbsp1_device = { | ||
147 | .name = "omap_alsa_mcbsp", | ||
148 | .id = 1, | ||
149 | .dev = { | ||
150 | .platform_data = &alsa_config, | ||
151 | }, | ||
152 | }; | ||
153 | |||
154 | static struct resource innovator_kp_resources[] = { | 116 | static struct resource innovator_kp_resources[] = { |
155 | [0] = { | 117 | [0] = { |
156 | .start = INT_KEYBOARD, | 118 | .start = INT_KEYBOARD, |
@@ -227,7 +189,6 @@ static struct platform_device innovator1510_spi_device = { | |||
227 | static struct platform_device *innovator1510_devices[] __initdata = { | 189 | static struct platform_device *innovator1510_devices[] __initdata = { |
228 | &innovator_flash_device, | 190 | &innovator_flash_device, |
229 | &innovator1510_smc91x_device, | 191 | &innovator1510_smc91x_device, |
230 | &innovator_mcbsp1_device, | ||
231 | &innovator_kp_device, | 192 | &innovator_kp_device, |
232 | &innovator1510_lcd_device, | 193 | &innovator1510_lcd_device, |
233 | &innovator1510_spi_device, | 194 | &innovator1510_spi_device, |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 4970c402a594..af51e0b180f2 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <mach/keypad.h> | 32 | #include <mach/keypad.h> |
33 | #include <mach/common.h> | 33 | #include <mach/common.h> |
34 | #include <mach/dsp_common.h> | 34 | #include <mach/dsp_common.h> |
35 | #include <mach/aic23.h> | ||
36 | #include <mach/omapfb.h> | 35 | #include <mach/omapfb.h> |
37 | #include <mach/lcd_mipid.h> | 36 | #include <mach/lcd_mipid.h> |
38 | #include <mach/mmc.h> | 37 | #include <mach/mmc.h> |
@@ -261,6 +260,13 @@ static DEFINE_MUTEX(audio_pwr_lock); | |||
261 | */ | 260 | */ |
262 | static int audio_pwr_state = -1; | 261 | static int audio_pwr_state = -1; |
263 | 262 | ||
263 | static inline void aic23_power_up(void) | ||
264 | { | ||
265 | } | ||
266 | static inline void aic23_power_down(void) | ||
267 | { | ||
268 | } | ||
269 | |||
264 | /* | 270 | /* |
265 | * audio_pwr_up / down should be called under audio_pwr_lock | 271 | * audio_pwr_up / down should be called under audio_pwr_lock |
266 | */ | 272 | */ |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index ff9e67baa5c9..1a16ecb2ccc8 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -51,8 +51,6 @@ | |||
51 | #include <mach/mux.h> | 51 | #include <mach/mux.h> |
52 | #include <mach/tc.h> | 52 | #include <mach/tc.h> |
53 | #include <mach/common.h> | 53 | #include <mach/common.h> |
54 | #include <mach/mcbsp.h> | ||
55 | #include <mach/omap-alsa.h> | ||
56 | 54 | ||
57 | static struct mtd_partition osk_partitions[] = { | 55 | static struct mtd_partition osk_partitions[] = { |
58 | /* bootloader (U-Boot, etc) in first sector */ | 56 | /* bootloader (U-Boot, etc) in first sector */ |
@@ -141,47 +139,10 @@ static struct platform_device osk5912_cf_device = { | |||
141 | .resource = osk5912_cf_resources, | 139 | .resource = osk5912_cf_resources, |
142 | }; | 140 | }; |
143 | 141 | ||
144 | #define DEFAULT_BITPERSAMPLE 16 | ||
145 | |||
146 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
147 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
148 | .spcr1 = RINTM(3) | RRST, | ||
149 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
150 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
151 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
152 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
153 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
154 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
155 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
156 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
157 | /*.pcr0 = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP,*/ /* mcbsp: master */ | ||
158 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
159 | }; | ||
160 | |||
161 | static struct omap_alsa_codec_config alsa_config = { | ||
162 | .name = "OSK AIC23", | ||
163 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
164 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
165 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
166 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
167 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
168 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
169 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
170 | }; | ||
171 | |||
172 | static struct platform_device osk5912_mcbsp1_device = { | ||
173 | .name = "omap_alsa_mcbsp", | ||
174 | .id = 1, | ||
175 | .dev = { | ||
176 | .platform_data = &alsa_config, | ||
177 | }, | ||
178 | }; | ||
179 | |||
180 | static struct platform_device *osk5912_devices[] __initdata = { | 142 | static struct platform_device *osk5912_devices[] __initdata = { |
181 | &osk5912_flash_device, | 143 | &osk5912_flash_device, |
182 | &osk5912_smc91x_device, | 144 | &osk5912_smc91x_device, |
183 | &osk5912_cf_device, | 145 | &osk5912_cf_device, |
184 | &osk5912_mcbsp1_device, | ||
185 | }; | 146 | }; |
186 | 147 | ||
187 | static struct gpio_led tps_leds[] = { | 148 | static struct gpio_led tps_leds[] = { |
@@ -259,8 +220,10 @@ static struct i2c_board_info __initdata osk_i2c_board_info[] = { | |||
259 | .platform_data = &tps_board, | 220 | .platform_data = &tps_board, |
260 | 221 | ||
261 | }, | 222 | }, |
223 | { | ||
224 | I2C_BOARD_INFO("tlv320aic23", 0x1B), | ||
225 | }, | ||
262 | /* TODO when driver support is ready: | 226 | /* TODO when driver support is ready: |
263 | * - aic23 audio chip at 0x1a | ||
264 | * - optionally on Mistral, ov9640 camera sensor at 0x30 | 227 | * - optionally on Mistral, ov9640 camera sensor at 0x30 |
265 | */ | 228 | */ |
266 | }; | 229 | }; |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 75e32d35afd9..99f2b43f2541 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -42,8 +42,6 @@ | |||
42 | #include <mach/irda.h> | 42 | #include <mach/irda.h> |
43 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
44 | #include <mach/common.h> | 44 | #include <mach/common.h> |
45 | #include <mach/mcbsp.h> | ||
46 | #include <mach/omap-alsa.h> | ||
47 | 45 | ||
48 | static void __init omap_palmte_init_irq(void) | 46 | static void __init omap_palmte_init_irq(void) |
49 | { | 47 | { |
@@ -195,15 +193,6 @@ static struct omap_usb_config palmte_usb_config __initdata = { | |||
195 | .pins[0] = 2, | 193 | .pins[0] = 2, |
196 | }; | 194 | }; |
197 | 195 | ||
198 | static struct omap_mmc_config palmte_mmc_config __initdata = { | ||
199 | .mmc[0] = { | ||
200 | .enabled = 1, | ||
201 | .wp_pin = PALMTE_MMC_WP_GPIO, | ||
202 | .power_pin = PALMTE_MMC_POWER_GPIO, | ||
203 | .switch_pin = PALMTE_MMC_SWITCH_GPIO, | ||
204 | }, | ||
205 | }; | ||
206 | |||
207 | static struct omap_lcd_config palmte_lcd_config __initdata = { | 196 | static struct omap_lcd_config palmte_lcd_config __initdata = { |
208 | .ctrl_name = "internal", | 197 | .ctrl_name = "internal", |
209 | }; | 198 | }; |
@@ -212,24 +201,6 @@ static struct omap_uart_config palmte_uart_config __initdata = { | |||
212 | .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2), | 201 | .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2), |
213 | }; | 202 | }; |
214 | 203 | ||
215 | static struct omap_mcbsp_reg_cfg palmte_mcbsp1_regs = { | ||
216 | .spcr2 = FRST | GRST | XRST | XINTM(3), | ||
217 | .xcr2 = XDATDLY(1) | XFIG, | ||
218 | .xcr1 = XWDLEN1(OMAP_MCBSP_WORD_32), | ||
219 | .pcr0 = SCLKME | FSXP | CLKXP, | ||
220 | }; | ||
221 | |||
222 | static struct omap_alsa_codec_config palmte_alsa_config = { | ||
223 | .name = "TSC2102 audio", | ||
224 | .mcbsp_regs_alsa = &palmte_mcbsp1_regs, | ||
225 | .codec_configure_dev = NULL, /* tsc2102_configure, */ | ||
226 | .codec_set_samplerate = NULL, /* tsc2102_set_samplerate, */ | ||
227 | .codec_clock_setup = NULL, /* tsc2102_clock_setup, */ | ||
228 | .codec_clock_on = NULL, /* tsc2102_clock_on, */ | ||
229 | .codec_clock_off = NULL, /* tsc2102_clock_off, */ | ||
230 | .get_default_samplerate = NULL, /* tsc2102_get_default_samplerate, */ | ||
231 | }; | ||
232 | |||
233 | #ifdef CONFIG_APM | 204 | #ifdef CONFIG_APM |
234 | /* | 205 | /* |
235 | * Values measured in 10 minute intervals averaged over 10 samples. | 206 | * Values measured in 10 minute intervals averaged over 10 samples. |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 5c001afe8062..1cbc1275c95f 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/mach/flash.h> | 30 | #include <asm/mach/flash.h> |
31 | 31 | ||
32 | #include <mach/led.h> | 32 | #include <mach/led.h> |
33 | #include <mach/mcbsp.h> | ||
34 | #include <mach/gpio.h> | 33 | #include <mach/gpio.h> |
35 | #include <mach/mux.h> | 34 | #include <mach/mux.h> |
36 | #include <mach/usb.h> | 35 | #include <mach/usb.h> |
@@ -40,7 +39,6 @@ | |||
40 | #include <mach/irda.h> | 39 | #include <mach/irda.h> |
41 | #include <mach/keypad.h> | 40 | #include <mach/keypad.h> |
42 | #include <mach/common.h> | 41 | #include <mach/common.h> |
43 | #include <mach/omap-alsa.h> | ||
44 | 42 | ||
45 | #include <linux/spi/spi.h> | 43 | #include <linux/spi/spi.h> |
46 | #include <linux/spi/ads7846.h> | 44 | #include <linux/spi/ads7846.h> |
@@ -122,44 +120,6 @@ static struct platform_device palmtt_flash_device = { | |||
122 | .resource = &palmtt_flash_resource, | 120 | .resource = &palmtt_flash_resource, |
123 | }; | 121 | }; |
124 | 122 | ||
125 | #define DEFAULT_BITPERSAMPLE 16 | ||
126 | |||
127 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
128 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
129 | .spcr1 = RINTM(3) | RRST, | ||
130 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
131 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
132 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | | ||
133 | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
134 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
135 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
136 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | | ||
137 | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
138 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
139 | .srgr2 = GSYNC | CLKSP | FSGM | | ||
140 | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
141 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
142 | }; | ||
143 | |||
144 | static struct omap_alsa_codec_config alsa_config = { | ||
145 | .name = "PalmTT AIC23", | ||
146 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
147 | .codec_configure_dev = NULL, /* aic23_configure, */ | ||
148 | .codec_set_samplerate = NULL, /* aic23_set_samplerate, */ | ||
149 | .codec_clock_setup = NULL, /* aic23_clock_setup, */ | ||
150 | .codec_clock_on = NULL, /* aic23_clock_on, */ | ||
151 | .codec_clock_off = NULL, /* aic23_clock_off, */ | ||
152 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate, */ | ||
153 | }; | ||
154 | |||
155 | static struct platform_device palmtt_mcbsp1_device = { | ||
156 | .name = "omap_alsa_mcbsp", | ||
157 | .id = 1, | ||
158 | .dev = { | ||
159 | .platform_data = &alsa_config, | ||
160 | }, | ||
161 | }; | ||
162 | |||
163 | static struct resource palmtt_kp_resources[] = { | 123 | static struct resource palmtt_kp_resources[] = { |
164 | [0] = { | 124 | [0] = { |
165 | .start = INT_KEYBOARD, | 125 | .start = INT_KEYBOARD, |
@@ -257,7 +217,6 @@ static struct platform_device palmtt_led_device = { | |||
257 | 217 | ||
258 | static struct platform_device *palmtt_devices[] __initdata = { | 218 | static struct platform_device *palmtt_devices[] __initdata = { |
259 | &palmtt_flash_device, | 219 | &palmtt_flash_device, |
260 | &palmtt_mcbsp1_device, | ||
261 | &palmtt_kp_device, | 220 | &palmtt_kp_device, |
262 | &palmtt_lcd_device, | 221 | &palmtt_lcd_device, |
263 | &palmtt_irda_device, | 222 | &palmtt_irda_device, |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index cc05257eb1cd..baf5efbfe3e8 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | #include <asm/mach/flash.h> | 33 | #include <asm/mach/flash.h> |
34 | 34 | ||
35 | #include <mach/mcbsp.h> | ||
36 | #include <mach/gpio.h> | 35 | #include <mach/gpio.h> |
37 | #include <mach/mux.h> | 36 | #include <mach/mux.h> |
38 | #include <mach/usb.h> | 37 | #include <mach/usb.h> |
@@ -179,41 +178,6 @@ static struct platform_device palmz71_spi_device = { | |||
179 | .id = -1, | 178 | .id = -1, |
180 | }; | 179 | }; |
181 | 180 | ||
182 | #define DEFAULT_BITPERSAMPLE 16 | ||
183 | |||
184 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | ||
185 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | ||
186 | .spcr1 = RINTM(3) | RRST, | ||
187 | .rcr2 = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) | | ||
188 | RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0), | ||
189 | .rcr1 = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16), | ||
190 | .xcr2 = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) | | ||
191 | XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG, | ||
192 | .xcr1 = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16), | ||
193 | .srgr1 = FWID(DEFAULT_BITPERSAMPLE - 1), | ||
194 | .srgr2 = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1), | ||
195 | .pcr0 = CLKXP | CLKRP, /* mcbsp: slave */ | ||
196 | }; | ||
197 | |||
198 | static struct omap_alsa_codec_config alsa_config = { | ||
199 | .name = "PalmZ71 AIC23", | ||
200 | .mcbsp_regs_alsa = &mcbsp_regs, | ||
201 | .codec_configure_dev = NULL, /* aic23_configure */ | ||
202 | .codec_set_samplerate = NULL, /* aic23_set_samplerate */ | ||
203 | .codec_clock_setup = NULL, /* aic23_clock_setup */ | ||
204 | .codec_clock_on = NULL, /* aic23_clock_on */ | ||
205 | .codec_clock_off = NULL, /* aic23_clock_off */ | ||
206 | .get_default_samplerate = NULL, /* aic23_get_default_samplerate */ | ||
207 | }; | ||
208 | |||
209 | static struct platform_device palmz71_mcbsp1_device = { | ||
210 | .name = "omap_alsa_mcbsp", | ||
211 | .id = 1, | ||
212 | .dev = { | ||
213 | .platform_data = &alsa_config, | ||
214 | }, | ||
215 | }; | ||
216 | |||
217 | static struct omap_backlight_config palmz71_backlight_config = { | 181 | static struct omap_backlight_config palmz71_backlight_config = { |
218 | .default_intensity = 0xa0, | 182 | .default_intensity = 0xa0, |
219 | }; | 183 | }; |
@@ -229,7 +193,6 @@ static struct platform_device palmz71_backlight_device = { | |||
229 | static struct platform_device *devices[] __initdata = { | 193 | static struct platform_device *devices[] __initdata = { |
230 | &palmz71_rom_device, | 194 | &palmz71_rom_device, |
231 | &palmz71_kp_device, | 195 | &palmz71_kp_device, |
232 | &palmz71_mcbsp1_device, | ||
233 | &palmz71_lcd_device, | 196 | &palmz71_lcd_device, |
234 | &palmz71_irda_device, | 197 | &palmz71_irda_device, |
235 | &palmz71_spi_device, | 198 | &palmz71_spi_device, |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 8171fe0ca082..28c76a1e71c0 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -34,13 +34,12 @@ | |||
34 | 34 | ||
35 | #include <mach/gpio.h> | 35 | #include <mach/gpio.h> |
36 | #include <mach/mux.h> | 36 | #include <mach/mux.h> |
37 | #include <mach/dma.h> | ||
37 | #include <mach/irda.h> | 38 | #include <mach/irda.h> |
38 | #include <mach/usb.h> | 39 | #include <mach/usb.h> |
39 | #include <mach/tc.h> | 40 | #include <mach/tc.h> |
40 | #include <mach/board.h> | 41 | #include <mach/board.h> |
41 | #include <mach/common.h> | 42 | #include <mach/common.h> |
42 | #include <mach/mcbsp.h> | ||
43 | #include <mach/omap-alsa.h> | ||
44 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
45 | 44 | ||
46 | /* Write to I2C device */ | 45 | /* Write to I2C device */ |
@@ -254,35 +253,6 @@ static struct platform_device sx1_irda_device = { | |||
254 | .resource = sx1_irda_resources, | 253 | .resource = sx1_irda_resources, |
255 | }; | 254 | }; |
256 | 255 | ||
257 | /*----------- McBSP & Sound -------------------------*/ | ||
258 | |||
259 | /* Playback interface - McBSP1 */ | ||
260 | static struct omap_mcbsp_reg_cfg mcbsp1_regs = { | ||
261 | .spcr2 = XINTM(3), /* SPCR2=30 */ | ||
262 | .spcr1 = RINTM(3), /* SPCR1=30 */ | ||
263 | .rcr2 = 0, /* RCR2 =00 */ | ||
264 | .rcr1 = RFRLEN1(1) | RWDLEN1(OMAP_MCBSP_WORD_16), /* RCR1=140 */ | ||
265 | .xcr2 = 0, /* XCR2 = 0 */ | ||
266 | .xcr1 = XFRLEN1(1) | XWDLEN1(OMAP_MCBSP_WORD_16), /* XCR1 = 140 */ | ||
267 | .srgr1 = FWID(15) | CLKGDV(12), /* SRGR1=0f0c */ | ||
268 | .srgr2 = FSGM | FPER(31), /* SRGR2=101f */ | ||
269 | .pcr0 = FSXM | FSRM | CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP, | ||
270 | /* PCR0 =0f0f */ | ||
271 | }; | ||
272 | |||
273 | static struct omap_alsa_codec_config sx1_alsa_config = { | ||
274 | .name = "SX1 EGold", | ||
275 | .mcbsp_regs_alsa = &mcbsp1_regs, | ||
276 | }; | ||
277 | |||
278 | static struct platform_device sx1_mcbsp1_device = { | ||
279 | .name = "omap_alsa_mcbsp", | ||
280 | .id = 1, | ||
281 | .dev = { | ||
282 | .platform_data = &sx1_alsa_config, | ||
283 | }, | ||
284 | }; | ||
285 | |||
286 | /*----------- MTD -------------------------*/ | 256 | /*----------- MTD -------------------------*/ |
287 | 257 | ||
288 | static struct mtd_partition sx1_partitions[] = { | 258 | static struct mtd_partition sx1_partitions[] = { |
@@ -394,7 +364,6 @@ static struct platform_device *sx1_devices[] __initdata = { | |||
394 | &sx1_flash_device, | 364 | &sx1_flash_device, |
395 | &sx1_kp_device, | 365 | &sx1_kp_device, |
396 | &sx1_lcd_device, | 366 | &sx1_lcd_device, |
397 | &sx1_mcbsp1_device, | ||
398 | &sx1_irda_device, | 367 | &sx1_irda_device, |
399 | }; | 368 | }; |
400 | /*-----------------------------------------*/ | 369 | /*-----------------------------------------*/ |
@@ -423,9 +392,9 @@ static void __init omap_sx1_init(void) | |||
423 | 392 | ||
424 | /* turn on USB power */ | 393 | /* turn on USB power */ |
425 | /* sx1_setusbpower(1); cant do it here because i2c is not ready */ | 394 | /* sx1_setusbpower(1); cant do it here because i2c is not ready */ |
426 | omap_request_gpio(1); /* A_IRDA_OFF */ | 395 | gpio_request(1, "A_IRDA_OFF"); |
427 | omap_request_gpio(11); /* A_SWITCH */ | 396 | gpio_request(11, "A_SWITCH"); |
428 | omap_request_gpio(15); /* A_USB_ON */ | 397 | gpio_request(15, "A_USB_ON"); |
429 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ | 398 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ |
430 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ | 399 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ |
431 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ | 400 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index c224f3c64235..a7653542a2b0 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/reboot.h> | 22 | #include <linux/reboot.h> |
23 | #include <linux/serial_8250.h> | 23 | #include <linux/serial_8250.h> |
24 | #include <linux/serial_reg.h> | 24 | #include <linux/serial_reg.h> |
25 | #include <linux/irq.h> | ||
26 | 25 | ||
27 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
28 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 77382d8b6b2f..ba5d7c08dc17 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -181,7 +181,7 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
181 | } | 181 | } |
182 | size = OMAP1_MMC_SIZE; | 182 | size = OMAP1_MMC_SIZE; |
183 | 183 | ||
184 | omap_mmc_add(i, base, size, irq, mmc_data[i]); | 184 | omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]); |
185 | }; | 185 | }; |
186 | } | 186 | } |
187 | 187 | ||
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index 4474da7bc88a..575ba31295cf 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <mach/irqs.h> | ||
20 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
22 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
@@ -27,81 +28,8 @@ | |||
27 | #define DPS_RSTCT2_PER_EN (1 << 0) | 28 | #define DPS_RSTCT2_PER_EN (1 << 0) |
28 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) | 29 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) |
29 | 30 | ||
30 | struct mcbsp_internal_clk { | ||
31 | struct clk clk; | ||
32 | struct clk **childs; | ||
33 | int n_childs; | ||
34 | }; | ||
35 | |||
36 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) | 31 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) |
37 | static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk) | 32 | const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" }; |
38 | { | ||
39 | const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" }; | ||
40 | int i; | ||
41 | |||
42 | mclk->n_childs = ARRAY_SIZE(clk_names); | ||
43 | mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *), | ||
44 | GFP_KERNEL); | ||
45 | |||
46 | for (i = 0; i < mclk->n_childs; i++) { | ||
47 | /* We fake a platform device to get correct device id */ | ||
48 | struct platform_device pdev; | ||
49 | |||
50 | pdev.dev.bus = &platform_bus_type; | ||
51 | pdev.id = mclk->clk.id; | ||
52 | mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]); | ||
53 | if (IS_ERR(mclk->childs[i])) | ||
54 | printk(KERN_ERR "Could not get clock %s (%d).\n", | ||
55 | clk_names[i], mclk->clk.id); | ||
56 | } | ||
57 | } | ||
58 | |||
59 | static int omap_mcbsp_clk_enable(struct clk *clk) | ||
60 | { | ||
61 | struct mcbsp_internal_clk *mclk = container_of(clk, | ||
62 | struct mcbsp_internal_clk, clk); | ||
63 | int i; | ||
64 | |||
65 | for (i = 0; i < mclk->n_childs; i++) | ||
66 | clk_enable(mclk->childs[i]); | ||
67 | return 0; | ||
68 | } | ||
69 | |||
70 | static void omap_mcbsp_clk_disable(struct clk *clk) | ||
71 | { | ||
72 | struct mcbsp_internal_clk *mclk = container_of(clk, | ||
73 | struct mcbsp_internal_clk, clk); | ||
74 | int i; | ||
75 | |||
76 | for (i = 0; i < mclk->n_childs; i++) | ||
77 | clk_disable(mclk->childs[i]); | ||
78 | } | ||
79 | |||
80 | static struct mcbsp_internal_clk omap_mcbsp_clks[] = { | ||
81 | { | ||
82 | .clk = { | ||
83 | .name = "mcbsp_clk", | ||
84 | .id = 1, | ||
85 | .enable = omap_mcbsp_clk_enable, | ||
86 | .disable = omap_mcbsp_clk_disable, | ||
87 | }, | ||
88 | }, | ||
89 | { | ||
90 | .clk = { | ||
91 | .name = "mcbsp_clk", | ||
92 | .id = 3, | ||
93 | .enable = omap_mcbsp_clk_enable, | ||
94 | .disable = omap_mcbsp_clk_disable, | ||
95 | }, | ||
96 | }, | ||
97 | }; | ||
98 | |||
99 | #define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks) | ||
100 | #else | ||
101 | #define omap_mcbsp_clks_size 0 | ||
102 | static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks; | ||
103 | static inline void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk) | ||
104 | { } | ||
105 | #endif | 33 | #endif |
106 | 34 | ||
107 | static void omap1_mcbsp_request(unsigned int id) | 35 | static void omap1_mcbsp_request(unsigned int id) |
@@ -166,8 +94,9 @@ static struct omap_mcbsp_platform_data omap15xx_mcbsp_pdata[] = { | |||
166 | .rx_irq = INT_McBSP1RX, | 94 | .rx_irq = INT_McBSP1RX, |
167 | .tx_irq = INT_McBSP1TX, | 95 | .tx_irq = INT_McBSP1TX, |
168 | .ops = &omap1_mcbsp_ops, | 96 | .ops = &omap1_mcbsp_ops, |
169 | .clk_name = "mcbsp_clk", | 97 | .clk_names = clk_names, |
170 | }, | 98 | .num_clks = 3, |
99 | }, | ||
171 | { | 100 | { |
172 | .phys_base = OMAP1510_MCBSP2_BASE, | 101 | .phys_base = OMAP1510_MCBSP2_BASE, |
173 | .dma_rx_sync = OMAP_DMA_MCBSP2_RX, | 102 | .dma_rx_sync = OMAP_DMA_MCBSP2_RX, |
@@ -183,7 +112,8 @@ static struct omap_mcbsp_platform_data omap15xx_mcbsp_pdata[] = { | |||
183 | .rx_irq = INT_McBSP3RX, | 112 | .rx_irq = INT_McBSP3RX, |
184 | .tx_irq = INT_McBSP3TX, | 113 | .tx_irq = INT_McBSP3TX, |
185 | .ops = &omap1_mcbsp_ops, | 114 | .ops = &omap1_mcbsp_ops, |
186 | .clk_name = "mcbsp_clk", | 115 | .clk_names = clk_names, |
116 | .num_clks = 3, | ||
187 | }, | 117 | }, |
188 | }; | 118 | }; |
189 | #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata) | 119 | #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata) |
@@ -201,7 +131,8 @@ static struct omap_mcbsp_platform_data omap16xx_mcbsp_pdata[] = { | |||
201 | .rx_irq = INT_McBSP1RX, | 131 | .rx_irq = INT_McBSP1RX, |
202 | .tx_irq = INT_McBSP1TX, | 132 | .tx_irq = INT_McBSP1TX, |
203 | .ops = &omap1_mcbsp_ops, | 133 | .ops = &omap1_mcbsp_ops, |
204 | .clk_name = "mcbsp_clk", | 134 | .clk_names = clk_names, |
135 | .num_clks = 3, | ||
205 | }, | 136 | }, |
206 | { | 137 | { |
207 | .phys_base = OMAP1610_MCBSP2_BASE, | 138 | .phys_base = OMAP1610_MCBSP2_BASE, |
@@ -218,7 +149,8 @@ static struct omap_mcbsp_platform_data omap16xx_mcbsp_pdata[] = { | |||
218 | .rx_irq = INT_McBSP3RX, | 149 | .rx_irq = INT_McBSP3RX, |
219 | .tx_irq = INT_McBSP3TX, | 150 | .tx_irq = INT_McBSP3TX, |
220 | .ops = &omap1_mcbsp_ops, | 151 | .ops = &omap1_mcbsp_ops, |
221 | .clk_name = "mcbsp_clk", | 152 | .clk_names = clk_names, |
153 | .num_clks = 3, | ||
222 | }, | 154 | }, |
223 | }; | 155 | }; |
224 | #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata) | 156 | #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata) |
@@ -229,15 +161,6 @@ static struct omap_mcbsp_platform_data omap16xx_mcbsp_pdata[] = { | |||
229 | 161 | ||
230 | int __init omap1_mcbsp_init(void) | 162 | int __init omap1_mcbsp_init(void) |
231 | { | 163 | { |
232 | int i; | ||
233 | |||
234 | for (i = 0; i < omap_mcbsp_clks_size; i++) { | ||
235 | if (cpu_is_omap15xx() || cpu_is_omap16xx()) { | ||
236 | omap_mcbsp_clk_init(&omap_mcbsp_clks[i]); | ||
237 | clk_register(&omap_mcbsp_clks[i].clk); | ||
238 | } | ||
239 | } | ||
240 | |||
241 | if (cpu_is_omap730()) | 164 | if (cpu_is_omap730()) |
242 | omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ; | 165 | omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ; |
243 | if (cpu_is_omap15xx()) | 166 | if (cpu_is_omap15xx()) |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index bf1e5d32c2a3..0a7b24ba1652 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -22,8 +22,6 @@ | |||
22 | #include <linux/mtd/mtd.h> | 22 | #include <linux/mtd/mtd.h> |
23 | #include <linux/mtd/partitions.h> | 23 | #include <linux/mtd/partitions.h> |
24 | #include <linux/mtd/onenand.h> | 24 | #include <linux/mtd/onenand.h> |
25 | #include <linux/irq.h> | ||
26 | #include <linux/interrupt.h> | ||
27 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
28 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
29 | #include <linux/err.h> | 27 | #include <linux/err.h> |
@@ -282,65 +280,16 @@ static void __init apollon_led_init(void) | |||
282 | { | 280 | { |
283 | /* LED0 - AA10 */ | 281 | /* LED0 - AA10 */ |
284 | omap_cfg_reg(AA10_242X_GPIO13); | 282 | omap_cfg_reg(AA10_242X_GPIO13); |
285 | omap_request_gpio(LED0_GPIO13); | 283 | gpio_request(LED0_GPIO13, "LED0"); |
286 | omap_set_gpio_direction(LED0_GPIO13, 0); | 284 | gpio_direction_output(LED0_GPIO13, 0); |
287 | omap_set_gpio_dataout(LED0_GPIO13, 0); | ||
288 | /* LED1 - AA6 */ | 285 | /* LED1 - AA6 */ |
289 | omap_cfg_reg(AA6_242X_GPIO14); | 286 | omap_cfg_reg(AA6_242X_GPIO14); |
290 | omap_request_gpio(LED1_GPIO14); | 287 | gpio_request(LED1_GPIO14, "LED1"); |
291 | omap_set_gpio_direction(LED1_GPIO14, 0); | 288 | gpio_direction_output(LED1_GPIO14, 0); |
292 | omap_set_gpio_dataout(LED1_GPIO14, 0); | ||
293 | /* LED2 - AA4 */ | 289 | /* LED2 - AA4 */ |
294 | omap_cfg_reg(AA4_242X_GPIO15); | 290 | omap_cfg_reg(AA4_242X_GPIO15); |
295 | omap_request_gpio(LED2_GPIO15); | 291 | gpio_request(LED2_GPIO15, "LED2"); |
296 | omap_set_gpio_direction(LED2_GPIO15, 0); | 292 | gpio_direction_output(LED2_GPIO15, 0); |
297 | omap_set_gpio_dataout(LED2_GPIO15, 0); | ||
298 | } | ||
299 | |||
300 | static irqreturn_t apollon_sw_interrupt(int irq, void *ignored) | ||
301 | { | ||
302 | static unsigned int led0, led1, led2; | ||
303 | |||
304 | if (irq == OMAP_GPIO_IRQ(SW_ENTER_GPIO16)) | ||
305 | omap_set_gpio_dataout(LED0_GPIO13, led0 ^= 1); | ||
306 | else if (irq == OMAP_GPIO_IRQ(SW_UP_GPIO17)) | ||
307 | omap_set_gpio_dataout(LED1_GPIO14, led1 ^= 1); | ||
308 | else if (irq == OMAP_GPIO_IRQ(SW_DOWN_GPIO58)) | ||
309 | omap_set_gpio_dataout(LED2_GPIO15, led2 ^= 1); | ||
310 | |||
311 | return IRQ_HANDLED; | ||
312 | } | ||
313 | |||
314 | static void __init apollon_sw_init(void) | ||
315 | { | ||
316 | /* Enter SW - Y11 */ | ||
317 | omap_cfg_reg(Y11_242X_GPIO16); | ||
318 | omap_request_gpio(SW_ENTER_GPIO16); | ||
319 | gpio_direction_input(SW_ENTER_GPIO16); | ||
320 | /* Up SW - AA12 */ | ||
321 | omap_cfg_reg(AA12_242X_GPIO17); | ||
322 | omap_request_gpio(SW_UP_GPIO17); | ||
323 | gpio_direction_input(SW_UP_GPIO17); | ||
324 | /* Down SW - AA8 */ | ||
325 | omap_cfg_reg(AA8_242X_GPIO58); | ||
326 | omap_request_gpio(SW_DOWN_GPIO58); | ||
327 | gpio_direction_input(SW_DOWN_GPIO58); | ||
328 | |||
329 | set_irq_type(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), IRQ_TYPE_EDGE_RISING); | ||
330 | if (request_irq(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), &apollon_sw_interrupt, | ||
331 | IRQF_SHARED, "enter sw", | ||
332 | &apollon_sw_interrupt)) | ||
333 | return; | ||
334 | set_irq_type(OMAP_GPIO_IRQ(SW_UP_GPIO17), IRQ_TYPE_EDGE_RISING); | ||
335 | if (request_irq(OMAP_GPIO_IRQ(SW_UP_GPIO17), &apollon_sw_interrupt, | ||
336 | IRQF_SHARED, "up sw", | ||
337 | &apollon_sw_interrupt)) | ||
338 | return; | ||
339 | set_irq_type(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), IRQ_TYPE_EDGE_RISING); | ||
340 | if (request_irq(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), &apollon_sw_interrupt, | ||
341 | IRQF_SHARED, "down sw", | ||
342 | &apollon_sw_interrupt)) | ||
343 | return; | ||
344 | } | 293 | } |
345 | 294 | ||
346 | static void __init apollon_usb_init(void) | 295 | static void __init apollon_usb_init(void) |
@@ -357,7 +306,6 @@ static void __init omap_apollon_init(void) | |||
357 | u32 v; | 306 | u32 v; |
358 | 307 | ||
359 | apollon_led_init(); | 308 | apollon_led_init(); |
360 | apollon_sw_init(); | ||
361 | apollon_flash_init(); | 309 | apollon_flash_init(); |
362 | apollon_usb_init(); | 310 | apollon_usb_init(); |
363 | 311 | ||
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index aa6972781e4a..f6a13451d1fd 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -88,7 +88,7 @@ static inline void __init ldp_init_smc911x(void) | |||
88 | 88 | ||
89 | ldp_smc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); | 89 | ldp_smc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); |
90 | 90 | ||
91 | if (omap_request_gpio(eth_gpio) < 0) { | 91 | if (gpio_request(eth_gpio, "smc911x irq") < 0) { |
92 | printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n", | 92 | printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n", |
93 | eth_gpio); | 93 | eth_gpio); |
94 | return; | 94 | return; |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 9e5ada01b5fa..38c88fbe658d 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | 30 | ||
31 | #include <linux/i2c/twl4030.h> | ||
32 | |||
31 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
@@ -120,6 +122,9 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
120 | unsigned gpio, unsigned ngpio) | 122 | unsigned gpio, unsigned ngpio) |
121 | { | 123 | { |
122 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ | 124 | /* gpio + 0 is "mmc0_cd" (input/IRQ) */ |
125 | omap_cfg_reg(AH8_34XX_GPIO29); | ||
126 | mmc[0].gpio_cd = gpio + 0; | ||
127 | twl4030_mmc_init(mmc); | ||
123 | 128 | ||
124 | /* REVISIT: need ehci-omap hooks for external VBUS | 129 | /* REVISIT: need ehci-omap hooks for external VBUS |
125 | * power switch and overcurrent detect | 130 | * power switch and overcurrent detect |
@@ -304,10 +309,6 @@ static void __init omap3_beagle_init(void) | |||
304 | omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); | 309 | omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); |
305 | omap_serial_init(); | 310 | omap_serial_init(); |
306 | 311 | ||
307 | omap_cfg_reg(AH8_34XX_GPIO29); | ||
308 | mmc[0].gpio_cd = gpio + 0; | ||
309 | twl4030_mmc_init(mmc); | ||
310 | |||
311 | omap_cfg_reg(J25_34XX_GPIO170); | 312 | omap_cfg_reg(J25_34XX_GPIO170); |
312 | gpio_request(170, "DVI_nPD"); | 313 | gpio_request(170, "DVI_nPD"); |
313 | /* REVISIT leave DVI powered down until it's needed ... */ | 314 | /* REVISIT leave DVI powered down until it's needed ... */ |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 9d7216ff6c9f..ce03fa750775 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -421,6 +421,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
421 | int nr_controllers) | 421 | int nr_controllers) |
422 | { | 422 | { |
423 | int i; | 423 | int i; |
424 | char *name; | ||
424 | 425 | ||
425 | for (i = 0; i < nr_controllers; i++) { | 426 | for (i = 0; i < nr_controllers; i++) { |
426 | unsigned long base, size; | 427 | unsigned long base, size; |
@@ -450,12 +451,14 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
450 | continue; | 451 | continue; |
451 | } | 452 | } |
452 | 453 | ||
453 | if (cpu_is_omap2420()) | 454 | if (cpu_is_omap2420()) { |
454 | size = OMAP2420_MMC_SIZE; | 455 | size = OMAP2420_MMC_SIZE; |
455 | else | 456 | name = "mmci-omap"; |
457 | } else { | ||
456 | size = HSMMC_SIZE; | 458 | size = HSMMC_SIZE; |
457 | 459 | name = "mmci-omap-hs"; | |
458 | omap_mmc_add(i, base, size, irq, mmc_data[i]); | 460 | } |
461 | omap_mmc_add(name, i, base, size, irq, mmc_data[i]); | ||
459 | }; | 462 | }; |
460 | } | 463 | } |
461 | 464 | ||
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index b0f8e7d62798..b52a02fc7cd6 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -172,9 +172,13 @@ void __init omap34xx_check_revision(void) | |||
172 | omap_revision = OMAP3430_REV_ES3_0; | 172 | omap_revision = OMAP3430_REV_ES3_0; |
173 | rev_name = "ES3.0"; | 173 | rev_name = "ES3.0"; |
174 | break; | 174 | break; |
175 | case 4: | ||
176 | omap_revision = OMAP3430_REV_ES3_1; | ||
177 | rev_name = "ES3.1"; | ||
178 | break; | ||
175 | default: | 179 | default: |
176 | /* Use the latest known revision as default */ | 180 | /* Use the latest known revision as default */ |
177 | omap_revision = OMAP3430_REV_ES3_0; | 181 | omap_revision = OMAP3430_REV_ES3_1; |
178 | rev_name = "Unknown revision\n"; | 182 | rev_name = "Unknown revision\n"; |
179 | } | 183 | } |
180 | } | 184 | } |
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 636e2821af7d..9ba20d985dda 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -134,6 +134,7 @@ static struct irq_chip omap_irq_chip = { | |||
134 | .ack = omap_mask_ack_irq, | 134 | .ack = omap_mask_ack_irq, |
135 | .mask = omap_mask_irq, | 135 | .mask = omap_mask_irq, |
136 | .unmask = omap_unmask_irq, | 136 | .unmask = omap_unmask_irq, |
137 | .disable = omap_mask_irq, | ||
137 | }; | 138 | }; |
138 | 139 | ||
139 | static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank) | 140 | static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank) |
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index acdc709901cd..a9e631fc1134 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
@@ -17,112 +17,14 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <mach/irqs.h> | ||
20 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
22 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
23 | #include <mach/cpu.h> | 24 | #include <mach/cpu.h> |
24 | #include <mach/mcbsp.h> | 25 | #include <mach/mcbsp.h> |
25 | 26 | ||
26 | struct mcbsp_internal_clk { | 27 | const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" }; |
27 | struct clk clk; | ||
28 | struct clk **childs; | ||
29 | int n_childs; | ||
30 | }; | ||
31 | |||
32 | #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) | ||
33 | static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk) | ||
34 | { | ||
35 | const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" }; | ||
36 | int i; | ||
37 | |||
38 | mclk->n_childs = ARRAY_SIZE(clk_names); | ||
39 | mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *), | ||
40 | GFP_KERNEL); | ||
41 | |||
42 | for (i = 0; i < mclk->n_childs; i++) { | ||
43 | /* We fake a platform device to get correct device id */ | ||
44 | struct platform_device pdev; | ||
45 | |||
46 | pdev.dev.bus = &platform_bus_type; | ||
47 | pdev.id = mclk->clk.id; | ||
48 | mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]); | ||
49 | if (IS_ERR(mclk->childs[i])) | ||
50 | printk(KERN_ERR "Could not get clock %s (%d).\n", | ||
51 | clk_names[i], mclk->clk.id); | ||
52 | } | ||
53 | } | ||
54 | |||
55 | static int omap_mcbsp_clk_enable(struct clk *clk) | ||
56 | { | ||
57 | struct mcbsp_internal_clk *mclk = container_of(clk, | ||
58 | struct mcbsp_internal_clk, clk); | ||
59 | int i; | ||
60 | |||
61 | for (i = 0; i < mclk->n_childs; i++) | ||
62 | clk_enable(mclk->childs[i]); | ||
63 | return 0; | ||
64 | } | ||
65 | |||
66 | static void omap_mcbsp_clk_disable(struct clk *clk) | ||
67 | { | ||
68 | struct mcbsp_internal_clk *mclk = container_of(clk, | ||
69 | struct mcbsp_internal_clk, clk); | ||
70 | int i; | ||
71 | |||
72 | for (i = 0; i < mclk->n_childs; i++) | ||
73 | clk_disable(mclk->childs[i]); | ||
74 | } | ||
75 | |||
76 | static struct mcbsp_internal_clk omap_mcbsp_clks[] = { | ||
77 | { | ||
78 | .clk = { | ||
79 | .name = "mcbsp_clk", | ||
80 | .id = 1, | ||
81 | .enable = omap_mcbsp_clk_enable, | ||
82 | .disable = omap_mcbsp_clk_disable, | ||
83 | }, | ||
84 | }, | ||
85 | { | ||
86 | .clk = { | ||
87 | .name = "mcbsp_clk", | ||
88 | .id = 2, | ||
89 | .enable = omap_mcbsp_clk_enable, | ||
90 | .disable = omap_mcbsp_clk_disable, | ||
91 | }, | ||
92 | }, | ||
93 | { | ||
94 | .clk = { | ||
95 | .name = "mcbsp_clk", | ||
96 | .id = 3, | ||
97 | .enable = omap_mcbsp_clk_enable, | ||
98 | .disable = omap_mcbsp_clk_disable, | ||
99 | }, | ||
100 | }, | ||
101 | { | ||
102 | .clk = { | ||
103 | .name = "mcbsp_clk", | ||
104 | .id = 4, | ||
105 | .enable = omap_mcbsp_clk_enable, | ||
106 | .disable = omap_mcbsp_clk_disable, | ||
107 | }, | ||
108 | }, | ||
109 | { | ||
110 | .clk = { | ||
111 | .name = "mcbsp_clk", | ||
112 | .id = 5, | ||
113 | .enable = omap_mcbsp_clk_enable, | ||
114 | .disable = omap_mcbsp_clk_disable, | ||
115 | }, | ||
116 | }, | ||
117 | }; | ||
118 | |||
119 | #define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks) | ||
120 | #else | ||
121 | #define omap_mcbsp_clks_size 0 | ||
122 | static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks; | ||
123 | static inline void omap_mcbsp_clk_init(struct clk *clk) | ||
124 | { } | ||
125 | #endif | ||
126 | 28 | ||
127 | static void omap2_mcbsp2_mux_setup(void) | 29 | static void omap2_mcbsp2_mux_setup(void) |
128 | { | 30 | { |
@@ -155,7 +57,8 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { | |||
155 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 57 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
156 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 58 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
157 | .ops = &omap2_mcbsp_ops, | 59 | .ops = &omap2_mcbsp_ops, |
158 | .clk_name = "mcbsp_clk", | 60 | .clk_names = clk_names, |
61 | .num_clks = 2, | ||
159 | }, | 62 | }, |
160 | { | 63 | { |
161 | .phys_base = OMAP24XX_MCBSP2_BASE, | 64 | .phys_base = OMAP24XX_MCBSP2_BASE, |
@@ -164,7 +67,8 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { | |||
164 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 67 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
165 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 68 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
166 | .ops = &omap2_mcbsp_ops, | 69 | .ops = &omap2_mcbsp_ops, |
167 | .clk_name = "mcbsp_clk", | 70 | .clk_names = clk_names, |
71 | .num_clks = 2, | ||
168 | }, | 72 | }, |
169 | }; | 73 | }; |
170 | #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata) | 74 | #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata) |
@@ -182,7 +86,8 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
182 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 86 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
183 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 87 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
184 | .ops = &omap2_mcbsp_ops, | 88 | .ops = &omap2_mcbsp_ops, |
185 | .clk_name = "mcbsp_clk", | 89 | .clk_names = clk_names, |
90 | .num_clks = 2, | ||
186 | }, | 91 | }, |
187 | { | 92 | { |
188 | .phys_base = OMAP24XX_MCBSP2_BASE, | 93 | .phys_base = OMAP24XX_MCBSP2_BASE, |
@@ -191,7 +96,8 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
191 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 96 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
192 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 97 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
193 | .ops = &omap2_mcbsp_ops, | 98 | .ops = &omap2_mcbsp_ops, |
194 | .clk_name = "mcbsp_clk", | 99 | .clk_names = clk_names, |
100 | .num_clks = 2, | ||
195 | }, | 101 | }, |
196 | { | 102 | { |
197 | .phys_base = OMAP2430_MCBSP3_BASE, | 103 | .phys_base = OMAP2430_MCBSP3_BASE, |
@@ -200,7 +106,8 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
200 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, | 106 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, |
201 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, | 107 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, |
202 | .ops = &omap2_mcbsp_ops, | 108 | .ops = &omap2_mcbsp_ops, |
203 | .clk_name = "mcbsp_clk", | 109 | .clk_names = clk_names, |
110 | .num_clks = 2, | ||
204 | }, | 111 | }, |
205 | { | 112 | { |
206 | .phys_base = OMAP2430_MCBSP4_BASE, | 113 | .phys_base = OMAP2430_MCBSP4_BASE, |
@@ -209,7 +116,8 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
209 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, | 116 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, |
210 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, | 117 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, |
211 | .ops = &omap2_mcbsp_ops, | 118 | .ops = &omap2_mcbsp_ops, |
212 | .clk_name = "mcbsp_clk", | 119 | .clk_names = clk_names, |
120 | .num_clks = 2, | ||
213 | }, | 121 | }, |
214 | { | 122 | { |
215 | .phys_base = OMAP2430_MCBSP5_BASE, | 123 | .phys_base = OMAP2430_MCBSP5_BASE, |
@@ -218,7 +126,8 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
218 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, | 126 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, |
219 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, | 127 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, |
220 | .ops = &omap2_mcbsp_ops, | 128 | .ops = &omap2_mcbsp_ops, |
221 | .clk_name = "mcbsp_clk", | 129 | .clk_names = clk_names, |
130 | .num_clks = 2, | ||
222 | }, | 131 | }, |
223 | }; | 132 | }; |
224 | #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata) | 133 | #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata) |
@@ -236,7 +145,8 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
236 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 145 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
237 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 146 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
238 | .ops = &omap2_mcbsp_ops, | 147 | .ops = &omap2_mcbsp_ops, |
239 | .clk_name = "mcbsp_clk", | 148 | .clk_names = clk_names, |
149 | .num_clks = 2, | ||
240 | }, | 150 | }, |
241 | { | 151 | { |
242 | .phys_base = OMAP34XX_MCBSP2_BASE, | 152 | .phys_base = OMAP34XX_MCBSP2_BASE, |
@@ -245,7 +155,8 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
245 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 155 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
246 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 156 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
247 | .ops = &omap2_mcbsp_ops, | 157 | .ops = &omap2_mcbsp_ops, |
248 | .clk_name = "mcbsp_clk", | 158 | .clk_names = clk_names, |
159 | .num_clks = 2, | ||
249 | }, | 160 | }, |
250 | { | 161 | { |
251 | .phys_base = OMAP34XX_MCBSP3_BASE, | 162 | .phys_base = OMAP34XX_MCBSP3_BASE, |
@@ -254,7 +165,8 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
254 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, | 165 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, |
255 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, | 166 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, |
256 | .ops = &omap2_mcbsp_ops, | 167 | .ops = &omap2_mcbsp_ops, |
257 | .clk_name = "mcbsp_clk", | 168 | .clk_names = clk_names, |
169 | .num_clks = 2, | ||
258 | }, | 170 | }, |
259 | { | 171 | { |
260 | .phys_base = OMAP34XX_MCBSP4_BASE, | 172 | .phys_base = OMAP34XX_MCBSP4_BASE, |
@@ -263,7 +175,8 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
263 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, | 175 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, |
264 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, | 176 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, |
265 | .ops = &omap2_mcbsp_ops, | 177 | .ops = &omap2_mcbsp_ops, |
266 | .clk_name = "mcbsp_clk", | 178 | .clk_names = clk_names, |
179 | .num_clks = 2, | ||
267 | }, | 180 | }, |
268 | { | 181 | { |
269 | .phys_base = OMAP34XX_MCBSP5_BASE, | 182 | .phys_base = OMAP34XX_MCBSP5_BASE, |
@@ -272,7 +185,8 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
272 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, | 185 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, |
273 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, | 186 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, |
274 | .ops = &omap2_mcbsp_ops, | 187 | .ops = &omap2_mcbsp_ops, |
275 | .clk_name = "mcbsp_clk", | 188 | .clk_names = clk_names, |
189 | .num_clks = 2, | ||
276 | }, | 190 | }, |
277 | }; | 191 | }; |
278 | #define OMAP34XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap34xx_mcbsp_pdata) | 192 | #define OMAP34XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap34xx_mcbsp_pdata) |
@@ -283,14 +197,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
283 | 197 | ||
284 | static int __init omap2_mcbsp_init(void) | 198 | static int __init omap2_mcbsp_init(void) |
285 | { | 199 | { |
286 | int i; | ||
287 | |||
288 | for (i = 0; i < omap_mcbsp_clks_size; i++) { | ||
289 | /* Once we call clk_get inside init, we do not register it */ | ||
290 | omap_mcbsp_clk_init(&omap_mcbsp_clks[i]); | ||
291 | clk_register(&omap_mcbsp_clks[i].clk); | ||
292 | } | ||
293 | |||
294 | if (cpu_is_omap2420()) | 200 | if (cpu_is_omap2420()) |
295 | omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ; | 201 | omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ; |
296 | if (cpu_is_omap2430()) | 202 | if (cpu_is_omap2430()) |
diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S index 43336b93b21c..bf9e96105e11 100644 --- a/arch/arm/mach-omap2/sleep24xx.S +++ b/arch/arm/mach-omap2/sleep24xx.S | |||
@@ -93,9 +93,8 @@ ENTRY(omap24xx_cpu_suspend) | |||
93 | orr r4, r4, #0x40 @ enable self refresh on idle req | 93 | orr r4, r4, #0x40 @ enable self refresh on idle req |
94 | mov r5, #0x2000 @ set delay (DPLL relock + DLL relock) | 94 | mov r5, #0x2000 @ set delay (DPLL relock + DLL relock) |
95 | str r4, [r2] @ make it so | 95 | str r4, [r2] @ make it so |
96 | mov r2, #0 | ||
97 | nop | 96 | nop |
98 | mcr p15, 0, r2, c7, c0, 4 @ wait for interrupt | 97 | mcr p15, 0, r3, c7, c0, 4 @ wait for interrupt |
99 | nop | 98 | nop |
100 | loop: | 99 | loop: |
101 | subs r5, r5, #0x1 @ awake, wait just a bit | 100 | subs r5, r5, #0x1 @ awake, wait just a bit |
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index ae6036300f60..9fc13a2cc3f4 100644 --- a/arch/arm/mach-omap2/timer-gp.c +++ b/arch/arm/mach-omap2/timer-gp.c | |||
@@ -118,7 +118,8 @@ static void __init omap2_gp_clockevent_init(void) | |||
118 | clockevent_gpt.max_delta_ns = | 118 | clockevent_gpt.max_delta_ns = |
119 | clockevent_delta2ns(0xffffffff, &clockevent_gpt); | 119 | clockevent_delta2ns(0xffffffff, &clockevent_gpt); |
120 | clockevent_gpt.min_delta_ns = | 120 | clockevent_gpt.min_delta_ns = |
121 | clockevent_delta2ns(1, &clockevent_gpt); | 121 | clockevent_delta2ns(3, &clockevent_gpt); |
122 | /* Timer internal resynch latency. */ | ||
122 | 123 | ||
123 | clockevent_gpt.cpumask = cpumask_of(0); | 124 | clockevent_gpt.cpumask = cpumask_of(0); |
124 | clockevents_register_device(&clockevent_gpt); | 125 | clockevents_register_device(&clockevent_gpt); |
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index ffd28e48d75f..04d1a07ced7f 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -40,6 +40,9 @@ choice | |||
40 | config GUMSTIX_AM200EPD | 40 | config GUMSTIX_AM200EPD |
41 | bool "Enable AM200EPD board support" | 41 | bool "Enable AM200EPD board support" |
42 | 42 | ||
43 | config GUMSTIX_AM300EPD | ||
44 | bool "Enable AM300EPD board support" | ||
45 | |||
43 | endchoice | 46 | endchoice |
44 | 47 | ||
45 | config MACH_INTELMOTE2 | 48 | config MACH_INTELMOTE2 |
@@ -302,6 +305,11 @@ config MACH_MAGICIAN | |||
302 | select HAVE_PWM | 305 | select HAVE_PWM |
303 | select PXA_HAVE_BOARD_IRQS | 306 | select PXA_HAVE_BOARD_IRQS |
304 | 307 | ||
308 | config MACH_HIMALAYA | ||
309 | bool "HTC Himalaya Support" | ||
310 | select CPU_PXA26x | ||
311 | select FB_W100 | ||
312 | |||
305 | config MACH_MIOA701 | 313 | config MACH_MIOA701 |
306 | bool "Mitac Mio A701 Support" | 314 | bool "Mitac Mio A701 Support" |
307 | select PXA27x | 315 | select PXA27x |
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index 146aba72fa22..361fcfa7531a 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -28,6 +28,7 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o | |||
28 | # Specific board support | 28 | # Specific board support |
29 | obj-$(CONFIG_ARCH_GUMSTIX) += gumstix.o | 29 | obj-$(CONFIG_ARCH_GUMSTIX) += gumstix.o |
30 | obj-$(CONFIG_GUMSTIX_AM200EPD) += am200epd.o | 30 | obj-$(CONFIG_GUMSTIX_AM200EPD) += am200epd.o |
31 | obj-$(CONFIG_GUMSTIX_AM300EPD) += am300epd.o | ||
31 | obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o | 32 | obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o |
32 | obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o | 33 | obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o |
33 | obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o | 34 | obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o |
@@ -45,6 +46,7 @@ obj-$(CONFIG_MACH_PCM990_BASEBOARD) += pcm990-baseboard.o | |||
45 | obj-$(CONFIG_MACH_TOSA) += tosa.o | 46 | obj-$(CONFIG_MACH_TOSA) += tosa.o |
46 | obj-$(CONFIG_MACH_EM_X270) += em-x270.o | 47 | obj-$(CONFIG_MACH_EM_X270) += em-x270.o |
47 | obj-$(CONFIG_MACH_MAGICIAN) += magician.o | 48 | obj-$(CONFIG_MACH_MAGICIAN) += magician.o |
49 | obj-$(CONFIG_MACH_HIMALAYA) += himalaya.o | ||
48 | obj-$(CONFIG_MACH_MIOA701) += mioa701.o mioa701_bootresume.o | 50 | obj-$(CONFIG_MACH_MIOA701) += mioa701.o mioa701_bootresume.o |
49 | obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o | 51 | obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o |
50 | obj-$(CONFIG_MACH_E330) += e330.o | 52 | obj-$(CONFIG_MACH_E330) += e330.o |
diff --git a/arch/arm/mach-pxa/am300epd.c b/arch/arm/mach-pxa/am300epd.c new file mode 100644 index 000000000000..4bd10a17332e --- /dev/null +++ b/arch/arm/mach-pxa/am300epd.c | |||
@@ -0,0 +1,295 @@ | |||
1 | /* | ||
2 | * am300epd.c -- Platform device for AM300 EPD kit | ||
3 | * | ||
4 | * Copyright (C) 2008, Jaya Kumar | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file COPYING in the main directory of this archive for | ||
8 | * more details. | ||
9 | * | ||
10 | * This work was made possible by help and equipment support from E-Ink | ||
11 | * Corporation. http://support.eink.com/community | ||
12 | * | ||
13 | * This driver is written to be used with the Broadsheet display controller. | ||
14 | * on the AM300 EPD prototype kit/development kit with an E-Ink 800x600 | ||
15 | * Vizplex EPD on a Gumstix board using the Broadsheet interface board. | ||
16 | * | ||
17 | */ | ||
18 | |||
19 | #include <linux/module.h> | ||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/errno.h> | ||
22 | #include <linux/string.h> | ||
23 | #include <linux/delay.h> | ||
24 | #include <linux/interrupt.h> | ||
25 | #include <linux/fb.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/platform_device.h> | ||
28 | #include <linux/irq.h> | ||
29 | #include <linux/gpio.h> | ||
30 | |||
31 | #include <mach/gumstix.h> | ||
32 | #include <mach/mfp-pxa25x.h> | ||
33 | #include <mach/pxafb.h> | ||
34 | |||
35 | #include "generic.h" | ||
36 | |||
37 | #include <video/broadsheetfb.h> | ||
38 | |||
39 | static unsigned int panel_type = 6; | ||
40 | static struct platform_device *am300_device; | ||
41 | static struct broadsheet_board am300_board; | ||
42 | |||
43 | static unsigned long am300_pin_config[] __initdata = { | ||
44 | GPIO16_GPIO, | ||
45 | GPIO17_GPIO, | ||
46 | GPIO32_GPIO, | ||
47 | GPIO48_GPIO, | ||
48 | GPIO49_GPIO, | ||
49 | GPIO51_GPIO, | ||
50 | GPIO74_GPIO, | ||
51 | GPIO75_GPIO, | ||
52 | GPIO76_GPIO, | ||
53 | GPIO77_GPIO, | ||
54 | |||
55 | /* this is the 16-bit hdb bus 58-73 */ | ||
56 | GPIO58_GPIO, | ||
57 | GPIO59_GPIO, | ||
58 | GPIO60_GPIO, | ||
59 | GPIO61_GPIO, | ||
60 | |||
61 | GPIO62_GPIO, | ||
62 | GPIO63_GPIO, | ||
63 | GPIO64_GPIO, | ||
64 | GPIO65_GPIO, | ||
65 | |||
66 | GPIO66_GPIO, | ||
67 | GPIO67_GPIO, | ||
68 | GPIO68_GPIO, | ||
69 | GPIO69_GPIO, | ||
70 | |||
71 | GPIO70_GPIO, | ||
72 | GPIO71_GPIO, | ||
73 | GPIO72_GPIO, | ||
74 | GPIO73_GPIO, | ||
75 | }; | ||
76 | |||
77 | /* register offsets for gpio control */ | ||
78 | #define PWR_GPIO_PIN 16 | ||
79 | #define CFG_GPIO_PIN 17 | ||
80 | #define RDY_GPIO_PIN 32 | ||
81 | #define DC_GPIO_PIN 48 | ||
82 | #define RST_GPIO_PIN 49 | ||
83 | #define LED_GPIO_PIN 51 | ||
84 | #define RD_GPIO_PIN 74 | ||
85 | #define WR_GPIO_PIN 75 | ||
86 | #define CS_GPIO_PIN 76 | ||
87 | #define IRQ_GPIO_PIN 77 | ||
88 | |||
89 | /* hdb bus */ | ||
90 | #define DB0_GPIO_PIN 58 | ||
91 | #define DB15_GPIO_PIN 73 | ||
92 | |||
93 | static int gpios[] = { PWR_GPIO_PIN, CFG_GPIO_PIN, RDY_GPIO_PIN, DC_GPIO_PIN, | ||
94 | RST_GPIO_PIN, RD_GPIO_PIN, WR_GPIO_PIN, CS_GPIO_PIN, | ||
95 | IRQ_GPIO_PIN, LED_GPIO_PIN }; | ||
96 | static char *gpio_names[] = { "PWR", "CFG", "RDY", "DC", "RST", "RD", "WR", | ||
97 | "CS", "IRQ", "LED" }; | ||
98 | |||
99 | static int am300_wait_event(struct broadsheetfb_par *par) | ||
100 | { | ||
101 | /* todo: improve err recovery */ | ||
102 | wait_event(par->waitq, gpio_get_value(RDY_GPIO_PIN)); | ||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | static int am300_init_gpio_regs(struct broadsheetfb_par *par) | ||
107 | { | ||
108 | int i; | ||
109 | int err; | ||
110 | char dbname[8]; | ||
111 | |||
112 | for (i = 0; i < ARRAY_SIZE(gpios); i++) { | ||
113 | err = gpio_request(gpios[i], gpio_names[i]); | ||
114 | if (err) { | ||
115 | dev_err(&am300_device->dev, "failed requesting " | ||
116 | "gpio %s, err=%d\n", gpio_names[i], err); | ||
117 | goto err_req_gpio; | ||
118 | } | ||
119 | } | ||
120 | |||
121 | /* we also need to take care of the hdb bus */ | ||
122 | for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) { | ||
123 | sprintf(dbname, "DB%d", i); | ||
124 | err = gpio_request(i, dbname); | ||
125 | if (err) { | ||
126 | dev_err(&am300_device->dev, "failed requesting " | ||
127 | "gpio %d, err=%d\n", i, err); | ||
128 | while (i >= DB0_GPIO_PIN) | ||
129 | gpio_free(i--); | ||
130 | i = ARRAY_SIZE(gpios) - 1; | ||
131 | goto err_req_gpio; | ||
132 | } | ||
133 | } | ||
134 | |||
135 | /* setup the outputs and init values */ | ||
136 | gpio_direction_output(PWR_GPIO_PIN, 0); | ||
137 | gpio_direction_output(CFG_GPIO_PIN, 1); | ||
138 | gpio_direction_output(DC_GPIO_PIN, 0); | ||
139 | gpio_direction_output(RD_GPIO_PIN, 1); | ||
140 | gpio_direction_output(WR_GPIO_PIN, 1); | ||
141 | gpio_direction_output(CS_GPIO_PIN, 1); | ||
142 | gpio_direction_output(RST_GPIO_PIN, 0); | ||
143 | |||
144 | /* setup the inputs */ | ||
145 | gpio_direction_input(RDY_GPIO_PIN); | ||
146 | gpio_direction_input(IRQ_GPIO_PIN); | ||
147 | |||
148 | /* start the hdb bus as an input */ | ||
149 | for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) | ||
150 | gpio_direction_output(i, 0); | ||
151 | |||
152 | /* go into command mode */ | ||
153 | gpio_set_value(CFG_GPIO_PIN, 1); | ||
154 | gpio_set_value(RST_GPIO_PIN, 0); | ||
155 | msleep(10); | ||
156 | gpio_set_value(RST_GPIO_PIN, 1); | ||
157 | msleep(10); | ||
158 | am300_wait_event(par); | ||
159 | |||
160 | return 0; | ||
161 | |||
162 | err_req_gpio: | ||
163 | while (i > 0) | ||
164 | gpio_free(gpios[i--]); | ||
165 | |||
166 | return err; | ||
167 | } | ||
168 | |||
169 | static int am300_init_board(struct broadsheetfb_par *par) | ||
170 | { | ||
171 | return am300_init_gpio_regs(par); | ||
172 | } | ||
173 | |||
174 | static void am300_cleanup(struct broadsheetfb_par *par) | ||
175 | { | ||
176 | int i; | ||
177 | |||
178 | free_irq(IRQ_GPIO(RDY_GPIO_PIN), par); | ||
179 | |||
180 | for (i = 0; i < ARRAY_SIZE(gpios); i++) | ||
181 | gpio_free(gpios[i]); | ||
182 | |||
183 | for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) | ||
184 | gpio_free(i); | ||
185 | |||
186 | } | ||
187 | |||
188 | static u16 am300_get_hdb(struct broadsheetfb_par *par) | ||
189 | { | ||
190 | u16 res = 0; | ||
191 | int i; | ||
192 | |||
193 | for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++) | ||
194 | res |= (gpio_get_value(DB0_GPIO_PIN + i)) ? (1 << i) : 0; | ||
195 | |||
196 | return res; | ||
197 | } | ||
198 | |||
199 | static void am300_set_hdb(struct broadsheetfb_par *par, u16 data) | ||
200 | { | ||
201 | int i; | ||
202 | |||
203 | for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++) | ||
204 | gpio_set_value(DB0_GPIO_PIN + i, (data >> i) & 0x01); | ||
205 | } | ||
206 | |||
207 | |||
208 | static void am300_set_ctl(struct broadsheetfb_par *par, unsigned char bit, | ||
209 | u8 state) | ||
210 | { | ||
211 | switch (bit) { | ||
212 | case BS_CS: | ||
213 | gpio_set_value(CS_GPIO_PIN, state); | ||
214 | break; | ||
215 | case BS_DC: | ||
216 | gpio_set_value(DC_GPIO_PIN, state); | ||
217 | break; | ||
218 | case BS_WR: | ||
219 | gpio_set_value(WR_GPIO_PIN, state); | ||
220 | break; | ||
221 | } | ||
222 | } | ||
223 | |||
224 | static int am300_get_panel_type(void) | ||
225 | { | ||
226 | return panel_type; | ||
227 | } | ||
228 | |||
229 | static irqreturn_t am300_handle_irq(int irq, void *dev_id) | ||
230 | { | ||
231 | struct broadsheetfb_par *par = dev_id; | ||
232 | |||
233 | wake_up(&par->waitq); | ||
234 | return IRQ_HANDLED; | ||
235 | } | ||
236 | |||
237 | static int am300_setup_irq(struct fb_info *info) | ||
238 | { | ||
239 | int ret; | ||
240 | struct broadsheetfb_par *par = info->par; | ||
241 | |||
242 | ret = request_irq(IRQ_GPIO(RDY_GPIO_PIN), am300_handle_irq, | ||
243 | IRQF_DISABLED|IRQF_TRIGGER_RISING, | ||
244 | "AM300", par); | ||
245 | if (ret) | ||
246 | dev_err(&am300_device->dev, "request_irq failed: %d\n", ret); | ||
247 | |||
248 | return ret; | ||
249 | } | ||
250 | |||
251 | static struct broadsheet_board am300_board = { | ||
252 | .owner = THIS_MODULE, | ||
253 | .init = am300_init_board, | ||
254 | .cleanup = am300_cleanup, | ||
255 | .set_hdb = am300_set_hdb, | ||
256 | .get_hdb = am300_get_hdb, | ||
257 | .set_ctl = am300_set_ctl, | ||
258 | .wait_for_rdy = am300_wait_event, | ||
259 | .get_panel_type = am300_get_panel_type, | ||
260 | .setup_irq = am300_setup_irq, | ||
261 | }; | ||
262 | |||
263 | int __init am300_init(void) | ||
264 | { | ||
265 | int ret; | ||
266 | |||
267 | pxa2xx_mfp_config(ARRAY_AND_SIZE(am300_pin_config)); | ||
268 | |||
269 | /* request our platform independent driver */ | ||
270 | request_module("broadsheetfb"); | ||
271 | |||
272 | am300_device = platform_device_alloc("broadsheetfb", -1); | ||
273 | if (!am300_device) | ||
274 | return -ENOMEM; | ||
275 | |||
276 | /* the am300_board that will be seen by broadsheetfb is a copy */ | ||
277 | platform_device_add_data(am300_device, &am300_board, | ||
278 | sizeof(am300_board)); | ||
279 | |||
280 | ret = platform_device_add(am300_device); | ||
281 | |||
282 | if (ret) { | ||
283 | platform_device_put(am300_device); | ||
284 | return ret; | ||
285 | } | ||
286 | |||
287 | return 0; | ||
288 | } | ||
289 | |||
290 | module_param(panel_type, uint, 0); | ||
291 | MODULE_PARM_DESC(panel_type, "Select the panel type: 6, 8, 97"); | ||
292 | |||
293 | MODULE_DESCRIPTION("board driver for am300 epd kit"); | ||
294 | MODULE_AUTHOR("Jaya Kumar"); | ||
295 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index e296ce11658c..9cb4a074d9f0 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c | |||
@@ -191,6 +191,11 @@ int __attribute__((weak)) am200_init(void) | |||
191 | return 0; | 191 | return 0; |
192 | } | 192 | } |
193 | 193 | ||
194 | int __attribute__((weak)) am300_init(void) | ||
195 | { | ||
196 | return 0; | ||
197 | } | ||
198 | |||
194 | static void __init carrier_board_init(void) | 199 | static void __init carrier_board_init(void) |
195 | { | 200 | { |
196 | /* | 201 | /* |
@@ -198,6 +203,7 @@ static void __init carrier_board_init(void) | |||
198 | * they cannot be detected programatically | 203 | * they cannot be detected programatically |
199 | */ | 204 | */ |
200 | am200_init(); | 205 | am200_init(); |
206 | am300_init(); | ||
201 | } | 207 | } |
202 | 208 | ||
203 | static void __init gumstix_init(void) | 209 | static void __init gumstix_init(void) |
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c new file mode 100644 index 000000000000..00884e5a6042 --- /dev/null +++ b/arch/arm/mach-pxa/himalaya.c | |||
@@ -0,0 +1,168 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/himalaya.c | ||
3 | * | ||
4 | * Hardware definitions for the HTC Himalaya | ||
5 | * | ||
6 | * Based on 2.6.21-hh20's himalaya.c and himalaya_lcd.c | ||
7 | * | ||
8 | * Copyright (c) 2008 Zbynek Michl <Zbynek.Michl@seznam.cz> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/device.h> | ||
18 | #include <linux/fb.h> | ||
19 | #include <linux/platform_device.h> | ||
20 | |||
21 | #include <video/w100fb.h> | ||
22 | |||
23 | #include <asm/setup.h> | ||
24 | #include <asm/mach-types.h> | ||
25 | #include <asm/mach/arch.h> | ||
26 | |||
27 | #include <mach/mfp-pxa25x.h> | ||
28 | #include <mach/hardware.h> | ||
29 | #include <mach/pxa-regs.h> | ||
30 | #include <mach/pxa2xx-regs.h> | ||
31 | |||
32 | #include "generic.h" | ||
33 | |||
34 | /* ---------------------- Himalaya LCD definitions -------------------- */ | ||
35 | |||
36 | static struct w100_gen_regs himalaya_lcd_regs = { | ||
37 | .lcd_format = 0x00000003, | ||
38 | .lcdd_cntl1 = 0x00000000, | ||
39 | .lcdd_cntl2 = 0x0003ffff, | ||
40 | .genlcd_cntl1 = 0x00fff003, | ||
41 | .genlcd_cntl2 = 0x00000003, | ||
42 | .genlcd_cntl3 = 0x000102aa, | ||
43 | }; | ||
44 | |||
45 | static struct w100_mode himalaya4_lcd_mode = { | ||
46 | .xres = 240, | ||
47 | .yres = 320, | ||
48 | .left_margin = 0, | ||
49 | .right_margin = 31, | ||
50 | .upper_margin = 15, | ||
51 | .lower_margin = 0, | ||
52 | .crtc_ss = 0x80150014, | ||
53 | .crtc_ls = 0xa0fb00f7, | ||
54 | .crtc_gs = 0xc0080007, | ||
55 | .crtc_vpos_gs = 0x00080007, | ||
56 | .crtc_rev = 0x0000000a, | ||
57 | .crtc_dclk = 0x81700030, | ||
58 | .crtc_gclk = 0x8015010f, | ||
59 | .crtc_goe = 0x00000000, | ||
60 | .pll_freq = 80, | ||
61 | .pixclk_divider = 15, | ||
62 | .pixclk_divider_rotated = 15, | ||
63 | .pixclk_src = CLK_SRC_PLL, | ||
64 | .sysclk_divider = 0, | ||
65 | .sysclk_src = CLK_SRC_PLL, | ||
66 | }; | ||
67 | |||
68 | static struct w100_mode himalaya6_lcd_mode = { | ||
69 | .xres = 240, | ||
70 | .yres = 320, | ||
71 | .left_margin = 9, | ||
72 | .right_margin = 8, | ||
73 | .upper_margin = 5, | ||
74 | .lower_margin = 4, | ||
75 | .crtc_ss = 0x80150014, | ||
76 | .crtc_ls = 0xa0fb00f7, | ||
77 | .crtc_gs = 0xc0080007, | ||
78 | .crtc_vpos_gs = 0x00080007, | ||
79 | .crtc_rev = 0x0000000a, | ||
80 | .crtc_dclk = 0xa1700030, | ||
81 | .crtc_gclk = 0x8015010f, | ||
82 | .crtc_goe = 0x00000000, | ||
83 | .pll_freq = 95, | ||
84 | .pixclk_divider = 0xb, | ||
85 | .pixclk_divider_rotated = 4, | ||
86 | .pixclk_src = CLK_SRC_PLL, | ||
87 | .sysclk_divider = 1, | ||
88 | .sysclk_src = CLK_SRC_PLL, | ||
89 | }; | ||
90 | |||
91 | static struct w100_gpio_regs himalaya_w100_gpio_info = { | ||
92 | .init_data1 = 0xffff0000, /* GPIO_DATA */ | ||
93 | .gpio_dir1 = 0x00000000, /* GPIO_CNTL1 */ | ||
94 | .gpio_oe1 = 0x003c0000, /* GPIO_CNTL2 */ | ||
95 | .init_data2 = 0x00000000, /* GPIO_DATA2 */ | ||
96 | .gpio_dir2 = 0x00000000, /* GPIO_CNTL3 */ | ||
97 | .gpio_oe2 = 0x00000000, /* GPIO_CNTL4 */ | ||
98 | }; | ||
99 | |||
100 | static struct w100fb_mach_info himalaya_fb_info = { | ||
101 | .num_modes = 1, | ||
102 | .regs = &himalaya_lcd_regs, | ||
103 | .gpio = &himalaya_w100_gpio_info, | ||
104 | .xtal_freq = 16000000, | ||
105 | }; | ||
106 | |||
107 | static struct resource himalaya_fb_resources[] = { | ||
108 | [0] = { | ||
109 | .start = 0x08000000, | ||
110 | .end = 0x08ffffff, | ||
111 | .flags = IORESOURCE_MEM, | ||
112 | }, | ||
113 | }; | ||
114 | |||
115 | static struct platform_device himalaya_fb_device = { | ||
116 | .name = "w100fb", | ||
117 | .id = -1, | ||
118 | .dev = { | ||
119 | .platform_data = &himalaya_fb_info, | ||
120 | }, | ||
121 | .num_resources = ARRAY_SIZE(himalaya_fb_resources), | ||
122 | .resource = himalaya_fb_resources, | ||
123 | }; | ||
124 | |||
125 | /* ----------------------------------------------------------------------- */ | ||
126 | |||
127 | static struct platform_device *devices[] __initdata = { | ||
128 | &himalaya_fb_device, | ||
129 | }; | ||
130 | |||
131 | static void __init himalaya_lcd_init(void) | ||
132 | { | ||
133 | int himalaya_boardid; | ||
134 | |||
135 | himalaya_boardid = 0x4; /* hardcoded (detection needs ASIC3 functions) */ | ||
136 | printk(KERN_INFO "himalaya LCD Driver init. boardid=%d\n", | ||
137 | himalaya_boardid); | ||
138 | |||
139 | switch (himalaya_boardid) { | ||
140 | case 0x4: | ||
141 | himalaya_fb_info.modelist = &himalaya4_lcd_mode; | ||
142 | break; | ||
143 | case 0x6: | ||
144 | himalaya_fb_info.modelist = &himalaya6_lcd_mode; | ||
145 | break; | ||
146 | default: | ||
147 | printk(KERN_INFO "himalaya lcd_init: unknown boardid=%d. Using 0x4\n", | ||
148 | himalaya_boardid); | ||
149 | himalaya_fb_info.modelist = &himalaya4_lcd_mode; | ||
150 | } | ||
151 | } | ||
152 | |||
153 | static void __init himalaya_init(void) | ||
154 | { | ||
155 | himalaya_lcd_init(); | ||
156 | platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
157 | } | ||
158 | |||
159 | |||
160 | MACHINE_START(HIMALAYA, "HTC Himalaya") | ||
161 | .phys_io = 0x40000000, | ||
162 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
163 | .boot_params = 0xa0000100, | ||
164 | .map_io = pxa_map_io, | ||
165 | .init_irq = pxa25x_init_irq, | ||
166 | .init_machine = himalaya_init, | ||
167 | .timer = &pxa_timer, | ||
168 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/include/mach/gumstix.h b/arch/arm/mach-pxa/include/mach/gumstix.h index 099f54a41de4..06abd4160607 100644 --- a/arch/arm/mach-pxa/include/mach/gumstix.h +++ b/arch/arm/mach-pxa/include/mach/gumstix.h | |||
@@ -97,4 +97,5 @@ has detected a cable insertion; driven low otherwise. */ | |||
97 | 97 | ||
98 | /* for expansion boards that can't be programatically detected */ | 98 | /* for expansion boards that can't be programatically detected */ |
99 | extern int am200_init(void); | 99 | extern int am200_init(void); |
100 | extern int am300_init(void); | ||
100 | 101 | ||
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig index ad911854eb4c..b6ec10627776 100644 --- a/arch/arm/mach-realview/Kconfig +++ b/arch/arm/mach-realview/Kconfig | |||
@@ -35,6 +35,7 @@ config MACH_REALVIEW_PB11MP | |||
35 | bool "Support RealView/PB11MPCore platform" | 35 | bool "Support RealView/PB11MPCore platform" |
36 | select CPU_V6 | 36 | select CPU_V6 |
37 | select ARM_GIC | 37 | select ARM_GIC |
38 | select HAVE_PATA_PLATFORM | ||
38 | help | 39 | help |
39 | Include support for the ARM(R) RealView MPCore Platform Baseboard. | 40 | Include support for the ARM(R) RealView MPCore Platform Baseboard. |
40 | PB11MPCore is a platform with an on-board ARM11MPCore and has | 41 | PB11MPCore is a platform with an on-board ARM11MPCore and has |
@@ -51,6 +52,7 @@ config MACH_REALVIEW_PBA8 | |||
51 | bool "Support RealView/PB-A8 platform" | 52 | bool "Support RealView/PB-A8 platform" |
52 | select CPU_V7 | 53 | select CPU_V7 |
53 | select ARM_GIC | 54 | select ARM_GIC |
55 | select HAVE_PATA_PLATFORM | ||
54 | help | 56 | help |
55 | Include support for the ARM(R) RealView Cortex-A8 Platform Baseboard. | 57 | Include support for the ARM(R) RealView Cortex-A8 Platform Baseboard. |
56 | PB-A8 is a platform with an on-board Cortex-A8 and has support for | 58 | PB-A8 is a platform with an on-board Cortex-A8 and has support for |
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index bd2aa4f16141..d6766685cfc7 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/clockchips.h> | 29 | #include <linux/clockchips.h> |
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/smc911x.h> | 31 | #include <linux/smc911x.h> |
32 | #include <linux/ata_platform.h> | ||
32 | 33 | ||
33 | #include <asm/clkdev.h> | 34 | #include <asm/clkdev.h> |
34 | #include <asm/system.h> | 35 | #include <asm/system.h> |
@@ -150,6 +151,44 @@ int realview_eth_register(const char *name, struct resource *res) | |||
150 | return platform_device_register(&realview_eth_device); | 151 | return platform_device_register(&realview_eth_device); |
151 | } | 152 | } |
152 | 153 | ||
154 | struct platform_device realview_usb_device = { | ||
155 | .name = "isp1760", | ||
156 | .num_resources = 2, | ||
157 | }; | ||
158 | |||
159 | int realview_usb_register(struct resource *res) | ||
160 | { | ||
161 | realview_usb_device.resource = res; | ||
162 | return platform_device_register(&realview_usb_device); | ||
163 | } | ||
164 | |||
165 | static struct pata_platform_info pata_platform_data = { | ||
166 | .ioport_shift = 1, | ||
167 | }; | ||
168 | |||
169 | static struct resource pata_resources[] = { | ||
170 | [0] = { | ||
171 | .start = REALVIEW_CF_BASE, | ||
172 | .end = REALVIEW_CF_BASE + 0xff, | ||
173 | .flags = IORESOURCE_MEM, | ||
174 | }, | ||
175 | [1] = { | ||
176 | .start = REALVIEW_CF_BASE + 0x100, | ||
177 | .end = REALVIEW_CF_BASE + SZ_4K - 1, | ||
178 | .flags = IORESOURCE_MEM, | ||
179 | }, | ||
180 | }; | ||
181 | |||
182 | struct platform_device realview_cf_device = { | ||
183 | .name = "pata_platform", | ||
184 | .id = -1, | ||
185 | .num_resources = ARRAY_SIZE(pata_resources), | ||
186 | .resource = pata_resources, | ||
187 | .dev = { | ||
188 | .platform_data = &pata_platform_data, | ||
189 | }, | ||
190 | }; | ||
191 | |||
153 | static struct resource realview_i2c_resource = { | 192 | static struct resource realview_i2c_resource = { |
154 | .start = REALVIEW_I2C_BASE, | 193 | .start = REALVIEW_I2C_BASE, |
155 | .end = REALVIEW_I2C_BASE + SZ_4K - 1, | 194 | .end = REALVIEW_I2C_BASE + SZ_4K - 1, |
@@ -158,11 +197,25 @@ static struct resource realview_i2c_resource = { | |||
158 | 197 | ||
159 | struct platform_device realview_i2c_device = { | 198 | struct platform_device realview_i2c_device = { |
160 | .name = "versatile-i2c", | 199 | .name = "versatile-i2c", |
161 | .id = -1, | 200 | .id = 0, |
162 | .num_resources = 1, | 201 | .num_resources = 1, |
163 | .resource = &realview_i2c_resource, | 202 | .resource = &realview_i2c_resource, |
164 | }; | 203 | }; |
165 | 204 | ||
205 | static struct i2c_board_info realview_i2c_board_info[] = { | ||
206 | { | ||
207 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | ||
208 | .type = "ds1338", | ||
209 | }, | ||
210 | }; | ||
211 | |||
212 | static int __init realview_i2c_init(void) | ||
213 | { | ||
214 | return i2c_register_board_info(0, realview_i2c_board_info, | ||
215 | ARRAY_SIZE(realview_i2c_board_info)); | ||
216 | } | ||
217 | arch_initcall(realview_i2c_init); | ||
218 | |||
166 | #define REALVIEW_SYSMCI (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_MCI_OFFSET) | 219 | #define REALVIEW_SYSMCI (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_MCI_OFFSET) |
167 | 220 | ||
168 | static unsigned int realview_mmc_status(struct device *dev) | 221 | static unsigned int realview_mmc_status(struct device *dev) |
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h index 44269b162d49..21c08637683b 100644 --- a/arch/arm/mach-realview/core.h +++ b/arch/arm/mach-realview/core.h | |||
@@ -45,6 +45,7 @@ static struct amba_device name##_device = { \ | |||
45 | } | 45 | } |
46 | 46 | ||
47 | extern struct platform_device realview_flash_device; | 47 | extern struct platform_device realview_flash_device; |
48 | extern struct platform_device realview_cf_device; | ||
48 | extern struct platform_device realview_i2c_device; | 49 | extern struct platform_device realview_i2c_device; |
49 | extern struct mmc_platform_data realview_mmc0_plat_data; | 50 | extern struct mmc_platform_data realview_mmc0_plat_data; |
50 | extern struct mmc_platform_data realview_mmc1_plat_data; | 51 | extern struct mmc_platform_data realview_mmc1_plat_data; |
@@ -62,5 +63,6 @@ extern void realview_leds_event(led_event_t ledevt); | |||
62 | extern void realview_timer_init(unsigned int timer_irq); | 63 | extern void realview_timer_init(unsigned int timer_irq); |
63 | extern int realview_flash_register(struct resource *res, u32 num); | 64 | extern int realview_flash_register(struct resource *res, u32 num); |
64 | extern int realview_eth_register(const char *name, struct resource *res); | 65 | extern int realview_eth_register(const char *name, struct resource *res); |
66 | extern int realview_usb_register(struct resource *res); | ||
65 | 67 | ||
66 | #endif | 68 | #endif |
diff --git a/arch/arm/mach-realview/include/mach/board-pba8.h b/arch/arm/mach-realview/include/mach/board-pba8.h index c8bed8f58bab..307f97b16e5b 100644 --- a/arch/arm/mach-realview/include/mach/board-pba8.h +++ b/arch/arm/mach-realview/include/mach/board-pba8.h | |||
@@ -45,8 +45,6 @@ | |||
45 | #define REALVIEW_PBA8_DMC_BASE 0x100E0000 /* DMC configuration */ | 45 | #define REALVIEW_PBA8_DMC_BASE 0x100E0000 /* DMC configuration */ |
46 | #define REALVIEW_PBA8_SMC_BASE 0x100E1000 /* SMC configuration */ | 46 | #define REALVIEW_PBA8_SMC_BASE 0x100E1000 /* SMC configuration */ |
47 | #define REALVIEW_PBA8_CAN_BASE 0x100E2000 /* CAN bus */ | 47 | #define REALVIEW_PBA8_CAN_BASE 0x100E2000 /* CAN bus */ |
48 | #define REALVIEW_PBA8_CF_BASE 0x18000000 /* Compact flash */ | ||
49 | #define REALVIEW_PBA8_CF_MEM_BASE 0x18003000 /* SMC for Compact flash */ | ||
50 | #define REALVIEW_PBA8_GIC_CPU_BASE 0x1E000000 /* Generic interrupt controller CPU interface */ | 48 | #define REALVIEW_PBA8_GIC_CPU_BASE 0x1E000000 /* Generic interrupt controller CPU interface */ |
51 | #define REALVIEW_PBA8_FLASH0_BASE 0x40000000 | 49 | #define REALVIEW_PBA8_FLASH0_BASE 0x40000000 |
52 | #define REALVIEW_PBA8_FLASH0_SIZE SZ_64M | 50 | #define REALVIEW_PBA8_FLASH0_SIZE SZ_64M |
diff --git a/arch/arm/mach-realview/include/mach/platform.h b/arch/arm/mach-realview/include/mach/platform.h index 793a3a332712..c8f50835fed2 100644 --- a/arch/arm/mach-realview/include/mach/platform.h +++ b/arch/arm/mach-realview/include/mach/platform.h | |||
@@ -204,6 +204,12 @@ | |||
204 | #define REALVIEW_LT_BASE 0x80000000 /* Logic Tile expansion */ | 204 | #define REALVIEW_LT_BASE 0x80000000 /* Logic Tile expansion */ |
205 | 205 | ||
206 | /* | 206 | /* |
207 | * CompactFlash | ||
208 | */ | ||
209 | #define REALVIEW_CF_BASE 0x18000000 /* CompactFlash */ | ||
210 | #define REALVIEW_CF_MEM_BASE 0x18003000 /* SMC for CompactFlash */ | ||
211 | |||
212 | /* | ||
207 | * Disk on Chip | 213 | * Disk on Chip |
208 | */ | 214 | */ |
209 | #define REALVIEW_DOC_BASE 0x2C000000 | 215 | #define REALVIEW_DOC_BASE 0x2C000000 |
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index bed39ed97613..c20fbef122b3 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -264,6 +264,19 @@ static int eth_device_register(void) | |||
264 | return realview_eth_register(name, realview_eb_eth_resources); | 264 | return realview_eth_register(name, realview_eb_eth_resources); |
265 | } | 265 | } |
266 | 266 | ||
267 | static struct resource realview_eb_isp1761_resources[] = { | ||
268 | [0] = { | ||
269 | .start = REALVIEW_EB_USB_BASE, | ||
270 | .end = REALVIEW_EB_USB_BASE + SZ_128K - 1, | ||
271 | .flags = IORESOURCE_MEM, | ||
272 | }, | ||
273 | [1] = { | ||
274 | .start = IRQ_EB_USB, | ||
275 | .end = IRQ_EB_USB, | ||
276 | .flags = IORESOURCE_IRQ, | ||
277 | }, | ||
278 | }; | ||
279 | |||
267 | static void __init gic_init_irq(void) | 280 | static void __init gic_init_irq(void) |
268 | { | 281 | { |
269 | if (core_tile_eb11mp() || core_tile_a9mp()) { | 282 | if (core_tile_eb11mp() || core_tile_a9mp()) { |
@@ -323,6 +336,8 @@ static void realview_eb11mp_fixup(void) | |||
323 | /* platform devices */ | 336 | /* platform devices */ |
324 | realview_eb_eth_resources[1].start = IRQ_EB11MP_ETH; | 337 | realview_eb_eth_resources[1].start = IRQ_EB11MP_ETH; |
325 | realview_eb_eth_resources[1].end = IRQ_EB11MP_ETH; | 338 | realview_eb_eth_resources[1].end = IRQ_EB11MP_ETH; |
339 | realview_eb_isp1761_resources[1].start = IRQ_EB11MP_USB; | ||
340 | realview_eb_isp1761_resources[1].end = IRQ_EB11MP_USB; | ||
326 | } | 341 | } |
327 | 342 | ||
328 | static void __init realview_eb_timer_init(void) | 343 | static void __init realview_eb_timer_init(void) |
@@ -366,6 +381,7 @@ static void __init realview_eb_init(void) | |||
366 | realview_flash_register(&realview_eb_flash_resource, 1); | 381 | realview_flash_register(&realview_eb_flash_resource, 1); |
367 | platform_device_register(&realview_i2c_device); | 382 | platform_device_register(&realview_i2c_device); |
368 | eth_device_register(); | 383 | eth_device_register(); |
384 | realview_usb_register(realview_eb_isp1761_resources); | ||
369 | 385 | ||
370 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 386 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
371 | struct amba_device *d = amba_devs[i]; | 387 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c index 8f0683c22140..a64b84a7a3df 100644 --- a/arch/arm/mach-realview/realview_pb1176.c +++ b/arch/arm/mach-realview/realview_pb1176.c | |||
@@ -222,6 +222,19 @@ static struct resource realview_pb1176_smsc911x_resources[] = { | |||
222 | }, | 222 | }, |
223 | }; | 223 | }; |
224 | 224 | ||
225 | static struct resource realview_pb1176_isp1761_resources[] = { | ||
226 | [0] = { | ||
227 | .start = REALVIEW_PB1176_USB_BASE, | ||
228 | .end = REALVIEW_PB1176_USB_BASE + SZ_128K - 1, | ||
229 | .flags = IORESOURCE_MEM, | ||
230 | }, | ||
231 | [1] = { | ||
232 | .start = IRQ_PB1176_USB, | ||
233 | .end = IRQ_PB1176_USB, | ||
234 | .flags = IORESOURCE_IRQ, | ||
235 | }, | ||
236 | }; | ||
237 | |||
225 | static void __init gic_init_irq(void) | 238 | static void __init gic_init_irq(void) |
226 | { | 239 | { |
227 | /* ARM1176 DevChip GIC, primary */ | 240 | /* ARM1176 DevChip GIC, primary */ |
@@ -260,6 +273,8 @@ static void __init realview_pb1176_init(void) | |||
260 | 273 | ||
261 | realview_flash_register(&realview_pb1176_flash_resource, 1); | 274 | realview_flash_register(&realview_pb1176_flash_resource, 1); |
262 | realview_eth_register(NULL, realview_pb1176_smsc911x_resources); | 275 | realview_eth_register(NULL, realview_pb1176_smsc911x_resources); |
276 | platform_device_register(&realview_i2c_device); | ||
277 | realview_usb_register(realview_pb1176_isp1761_resources); | ||
263 | 278 | ||
264 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 279 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
265 | struct amba_device *d = amba_devs[i]; | 280 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c index 3ebdb2dadd6f..ea1e60eca359 100644 --- a/arch/arm/mach-realview/realview_pb11mp.c +++ b/arch/arm/mach-realview/realview_pb11mp.c | |||
@@ -230,31 +230,19 @@ static struct resource realview_pb11mp_smsc911x_resources[] = { | |||
230 | }, | 230 | }, |
231 | }; | 231 | }; |
232 | 232 | ||
233 | struct resource realview_pb11mp_cf_resources[] = { | 233 | static struct resource realview_pb11mp_isp1761_resources[] = { |
234 | [0] = { | 234 | [0] = { |
235 | .start = REALVIEW_PB11MP_CF_BASE, | 235 | .start = REALVIEW_PB11MP_USB_BASE, |
236 | .end = REALVIEW_PB11MP_CF_BASE + SZ_4K - 1, | 236 | .end = REALVIEW_PB11MP_USB_BASE + SZ_128K - 1, |
237 | .flags = IORESOURCE_MEM, | 237 | .flags = IORESOURCE_MEM, |
238 | }, | 238 | }, |
239 | [1] = { | 239 | [1] = { |
240 | .start = REALVIEW_PB11MP_CF_MEM_BASE, | 240 | .start = IRQ_TC11MP_USB, |
241 | .end = REALVIEW_PB11MP_CF_MEM_BASE + SZ_4K - 1, | 241 | .end = IRQ_TC11MP_USB, |
242 | .flags = IORESOURCE_MEM, | ||
243 | }, | ||
244 | [2] = { | ||
245 | .start = -1, /* FIXME: Find correct irq */ | ||
246 | .end = -1, | ||
247 | .flags = IORESOURCE_IRQ, | 242 | .flags = IORESOURCE_IRQ, |
248 | }, | 243 | }, |
249 | }; | 244 | }; |
250 | 245 | ||
251 | struct platform_device realview_pb11mp_cf_device = { | ||
252 | .name = "compactflash", | ||
253 | .id = 0, | ||
254 | .num_resources = ARRAY_SIZE(realview_pb11mp_cf_resources), | ||
255 | .resource = realview_pb11mp_cf_resources, | ||
256 | }; | ||
257 | |||
258 | static void __init gic_init_irq(void) | 246 | static void __init gic_init_irq(void) |
259 | { | 247 | { |
260 | unsigned int pldctrl; | 248 | unsigned int pldctrl; |
@@ -308,7 +296,8 @@ static void __init realview_pb11mp_init(void) | |||
308 | ARRAY_SIZE(realview_pb11mp_flash_resource)); | 296 | ARRAY_SIZE(realview_pb11mp_flash_resource)); |
309 | realview_eth_register(NULL, realview_pb11mp_smsc911x_resources); | 297 | realview_eth_register(NULL, realview_pb11mp_smsc911x_resources); |
310 | platform_device_register(&realview_i2c_device); | 298 | platform_device_register(&realview_i2c_device); |
311 | platform_device_register(&realview_pb11mp_cf_device); | 299 | platform_device_register(&realview_cf_device); |
300 | realview_usb_register(realview_pb11mp_isp1761_resources); | ||
312 | 301 | ||
313 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 302 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
314 | struct amba_device *d = amba_devs[i]; | 303 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c index 34c94435d2d8..d6ac1eb86576 100644 --- a/arch/arm/mach-realview/realview_pba8.c +++ b/arch/arm/mach-realview/realview_pba8.c | |||
@@ -221,31 +221,19 @@ static struct resource realview_pba8_smsc911x_resources[] = { | |||
221 | }, | 221 | }, |
222 | }; | 222 | }; |
223 | 223 | ||
224 | struct resource realview_pba8_cf_resources[] = { | 224 | static struct resource realview_pba8_isp1761_resources[] = { |
225 | [0] = { | 225 | [0] = { |
226 | .start = REALVIEW_PBA8_CF_BASE, | 226 | .start = REALVIEW_PBA8_USB_BASE, |
227 | .end = REALVIEW_PBA8_CF_BASE + SZ_4K - 1, | 227 | .end = REALVIEW_PBA8_USB_BASE + SZ_128K - 1, |
228 | .flags = IORESOURCE_MEM, | 228 | .flags = IORESOURCE_MEM, |
229 | }, | 229 | }, |
230 | [1] = { | 230 | [1] = { |
231 | .start = REALVIEW_PBA8_CF_MEM_BASE, | 231 | .start = IRQ_PBA8_USB, |
232 | .end = REALVIEW_PBA8_CF_MEM_BASE + SZ_4K - 1, | 232 | .end = IRQ_PBA8_USB, |
233 | .flags = IORESOURCE_MEM, | ||
234 | }, | ||
235 | [2] = { | ||
236 | .start = -1, /* FIXME: Find correct irq */ | ||
237 | .end = -1, | ||
238 | .flags = IORESOURCE_IRQ, | 233 | .flags = IORESOURCE_IRQ, |
239 | }, | 234 | }, |
240 | }; | 235 | }; |
241 | 236 | ||
242 | struct platform_device realview_pba8_cf_device = { | ||
243 | .name = "compactflash", | ||
244 | .id = 0, | ||
245 | .num_resources = ARRAY_SIZE(realview_pba8_cf_resources), | ||
246 | .resource = realview_pba8_cf_resources, | ||
247 | }; | ||
248 | |||
249 | static void __init gic_init_irq(void) | 237 | static void __init gic_init_irq(void) |
250 | { | 238 | { |
251 | /* ARM PB-A8 on-board GIC */ | 239 | /* ARM PB-A8 on-board GIC */ |
@@ -276,7 +264,8 @@ static void __init realview_pba8_init(void) | |||
276 | ARRAY_SIZE(realview_pba8_flash_resource)); | 264 | ARRAY_SIZE(realview_pba8_flash_resource)); |
277 | realview_eth_register(NULL, realview_pba8_smsc911x_resources); | 265 | realview_eth_register(NULL, realview_pba8_smsc911x_resources); |
278 | platform_device_register(&realview_i2c_device); | 266 | platform_device_register(&realview_i2c_device); |
279 | platform_device_register(&realview_pba8_cf_device); | 267 | platform_device_register(&realview_cf_device); |
268 | realview_usb_register(realview_pba8_isp1761_resources); | ||
280 | 269 | ||
281 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 270 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
282 | struct amba_device *d = amba_devs[i]; | 271 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c index 7958a30f8932..c47d974d52bd 100644 --- a/arch/arm/mach-rpc/dma.c +++ b/arch/arm/mach-rpc/dma.c | |||
@@ -26,6 +26,16 @@ | |||
26 | #include <asm/mach/dma.h> | 26 | #include <asm/mach/dma.h> |
27 | #include <asm/hardware/iomd.h> | 27 | #include <asm/hardware/iomd.h> |
28 | 28 | ||
29 | struct iomd_dma { | ||
30 | struct dma_struct dma; | ||
31 | unsigned int state; | ||
32 | unsigned long base; /* Controller base address */ | ||
33 | int irq; /* Controller IRQ */ | ||
34 | struct scatterlist cur_sg; /* Current controller buffer */ | ||
35 | dma_addr_t dma_addr; | ||
36 | unsigned int dma_len; | ||
37 | }; | ||
38 | |||
29 | #if 0 | 39 | #if 0 |
30 | typedef enum { | 40 | typedef enum { |
31 | dma_size_8 = 1, | 41 | dma_size_8 = 1, |
@@ -44,15 +54,15 @@ typedef enum { | |||
44 | #define CR (IOMD_IO0CR - IOMD_IO0CURA) | 54 | #define CR (IOMD_IO0CR - IOMD_IO0CURA) |
45 | #define ST (IOMD_IO0ST - IOMD_IO0CURA) | 55 | #define ST (IOMD_IO0ST - IOMD_IO0CURA) |
46 | 56 | ||
47 | static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma) | 57 | static void iomd_get_next_sg(struct scatterlist *sg, struct iomd_dma *idma) |
48 | { | 58 | { |
49 | unsigned long end, offset, flags = 0; | 59 | unsigned long end, offset, flags = 0; |
50 | 60 | ||
51 | if (dma->sg) { | 61 | if (idma->dma.sg) { |
52 | sg->dma_address = dma->sg->dma_address; | 62 | sg->dma_address = idma->dma_addr; |
53 | offset = sg->dma_address & ~PAGE_MASK; | 63 | offset = sg->dma_address & ~PAGE_MASK; |
54 | 64 | ||
55 | end = offset + dma->sg->length; | 65 | end = offset + idma->dma_len; |
56 | 66 | ||
57 | if (end > PAGE_SIZE) | 67 | if (end > PAGE_SIZE) |
58 | end = PAGE_SIZE; | 68 | end = PAGE_SIZE; |
@@ -62,15 +72,17 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma) | |||
62 | 72 | ||
63 | sg->length = end - TRANSFER_SIZE; | 73 | sg->length = end - TRANSFER_SIZE; |
64 | 74 | ||
65 | dma->sg->length -= end - offset; | 75 | idma->dma_len -= end - offset; |
66 | dma->sg->dma_address += end - offset; | 76 | idma->dma_addr += end - offset; |
67 | 77 | ||
68 | if (dma->sg->length == 0) { | 78 | if (idma->dma_len == 0) { |
69 | if (dma->sgcount > 1) { | 79 | if (idma->dma.sgcount > 1) { |
70 | dma->sg++; | 80 | idma->dma.sg = sg_next(idma->dma.sg); |
71 | dma->sgcount--; | 81 | idma->dma_addr = idma->dma.sg->dma_address; |
82 | idma->dma_len = idma->dma.sg->length; | ||
83 | idma->dma.sgcount--; | ||
72 | } else { | 84 | } else { |
73 | dma->sg = NULL; | 85 | idma->dma.sg = NULL; |
74 | flags |= DMA_END_S; | 86 | flags |= DMA_END_S; |
75 | } | 87 | } |
76 | } | 88 | } |
@@ -85,8 +97,8 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma) | |||
85 | 97 | ||
86 | static irqreturn_t iomd_dma_handle(int irq, void *dev_id) | 98 | static irqreturn_t iomd_dma_handle(int irq, void *dev_id) |
87 | { | 99 | { |
88 | dma_t *dma = (dma_t *)dev_id; | 100 | struct iomd_dma *idma = dev_id; |
89 | unsigned long base = dma->dma_base; | 101 | unsigned long base = idma->base; |
90 | 102 | ||
91 | do { | 103 | do { |
92 | unsigned int status; | 104 | unsigned int status; |
@@ -95,93 +107,99 @@ static irqreturn_t iomd_dma_handle(int irq, void *dev_id) | |||
95 | if (!(status & DMA_ST_INT)) | 107 | if (!(status & DMA_ST_INT)) |
96 | return IRQ_HANDLED; | 108 | return IRQ_HANDLED; |
97 | 109 | ||
98 | if ((dma->state ^ status) & DMA_ST_AB) | 110 | if ((idma->state ^ status) & DMA_ST_AB) |
99 | iomd_get_next_sg(&dma->cur_sg, dma); | 111 | iomd_get_next_sg(&idma->cur_sg, idma); |
100 | 112 | ||
101 | switch (status & (DMA_ST_OFL | DMA_ST_AB)) { | 113 | switch (status & (DMA_ST_OFL | DMA_ST_AB)) { |
102 | case DMA_ST_OFL: /* OIA */ | 114 | case DMA_ST_OFL: /* OIA */ |
103 | case DMA_ST_AB: /* .IB */ | 115 | case DMA_ST_AB: /* .IB */ |
104 | iomd_writel(dma->cur_sg.dma_address, base + CURA); | 116 | iomd_writel(idma->cur_sg.dma_address, base + CURA); |
105 | iomd_writel(dma->cur_sg.length, base + ENDA); | 117 | iomd_writel(idma->cur_sg.length, base + ENDA); |
106 | dma->state = DMA_ST_AB; | 118 | idma->state = DMA_ST_AB; |
107 | break; | 119 | break; |
108 | 120 | ||
109 | case DMA_ST_OFL | DMA_ST_AB: /* OIB */ | 121 | case DMA_ST_OFL | DMA_ST_AB: /* OIB */ |
110 | case 0: /* .IA */ | 122 | case 0: /* .IA */ |
111 | iomd_writel(dma->cur_sg.dma_address, base + CURB); | 123 | iomd_writel(idma->cur_sg.dma_address, base + CURB); |
112 | iomd_writel(dma->cur_sg.length, base + ENDB); | 124 | iomd_writel(idma->cur_sg.length, base + ENDB); |
113 | dma->state = 0; | 125 | idma->state = 0; |
114 | break; | 126 | break; |
115 | } | 127 | } |
116 | 128 | ||
117 | if (status & DMA_ST_OFL && | 129 | if (status & DMA_ST_OFL && |
118 | dma->cur_sg.length == (DMA_END_S|DMA_END_L)) | 130 | idma->cur_sg.length == (DMA_END_S|DMA_END_L)) |
119 | break; | 131 | break; |
120 | } while (1); | 132 | } while (1); |
121 | 133 | ||
122 | dma->state = ~DMA_ST_AB; | 134 | idma->state = ~DMA_ST_AB; |
123 | disable_irq(irq); | 135 | disable_irq(irq); |
124 | 136 | ||
125 | return IRQ_HANDLED; | 137 | return IRQ_HANDLED; |
126 | } | 138 | } |
127 | 139 | ||
128 | static int iomd_request_dma(dmach_t channel, dma_t *dma) | 140 | static int iomd_request_dma(unsigned int chan, dma_t *dma) |
129 | { | 141 | { |
130 | return request_irq(dma->dma_irq, iomd_dma_handle, | 142 | struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma); |
131 | IRQF_DISABLED, dma->device_id, dma); | 143 | |
144 | return request_irq(idma->irq, iomd_dma_handle, | ||
145 | IRQF_DISABLED, idma->dma.device_id, idma); | ||
132 | } | 146 | } |
133 | 147 | ||
134 | static void iomd_free_dma(dmach_t channel, dma_t *dma) | 148 | static void iomd_free_dma(unsigned int chan, dma_t *dma) |
135 | { | 149 | { |
136 | free_irq(dma->dma_irq, dma); | 150 | struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma); |
151 | |||
152 | free_irq(idma->irq, idma); | ||
137 | } | 153 | } |
138 | 154 | ||
139 | static void iomd_enable_dma(dmach_t channel, dma_t *dma) | 155 | static void iomd_enable_dma(unsigned int chan, dma_t *dma) |
140 | { | 156 | { |
141 | unsigned long dma_base = dma->dma_base; | 157 | struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma); |
158 | unsigned long dma_base = idma->base; | ||
142 | unsigned int ctrl = TRANSFER_SIZE | DMA_CR_E; | 159 | unsigned int ctrl = TRANSFER_SIZE | DMA_CR_E; |
143 | 160 | ||
144 | if (dma->invalid) { | 161 | if (idma->dma.invalid) { |
145 | dma->invalid = 0; | 162 | idma->dma.invalid = 0; |
146 | 163 | ||
147 | /* | 164 | /* |
148 | * Cope with ISA-style drivers which expect cache | 165 | * Cope with ISA-style drivers which expect cache |
149 | * coherence. | 166 | * coherence. |
150 | */ | 167 | */ |
151 | if (!dma->sg) { | 168 | if (!idma->dma.sg) { |
152 | dma->sg = &dma->buf; | 169 | idma->dma.sg = &idma->dma.buf; |
153 | dma->sgcount = 1; | 170 | idma->dma.sgcount = 1; |
154 | dma->buf.length = dma->count; | 171 | idma->dma.buf.length = idma->dma.count; |
155 | dma->buf.dma_address = dma_map_single(NULL, | 172 | idma->dma.buf.dma_address = dma_map_single(NULL, |
156 | dma->addr, dma->count, | 173 | idma->dma.addr, idma->dma.count, |
157 | dma->dma_mode == DMA_MODE_READ ? | 174 | idma->dma.dma_mode == DMA_MODE_READ ? |
158 | DMA_FROM_DEVICE : DMA_TO_DEVICE); | 175 | DMA_FROM_DEVICE : DMA_TO_DEVICE); |
159 | } | 176 | } |
160 | 177 | ||
161 | iomd_writeb(DMA_CR_C, dma_base + CR); | 178 | iomd_writeb(DMA_CR_C, dma_base + CR); |
162 | dma->state = DMA_ST_AB; | 179 | idma->state = DMA_ST_AB; |
163 | } | 180 | } |
164 | 181 | ||
165 | if (dma->dma_mode == DMA_MODE_READ) | 182 | if (idma->dma.dma_mode == DMA_MODE_READ) |
166 | ctrl |= DMA_CR_D; | 183 | ctrl |= DMA_CR_D; |
167 | 184 | ||
168 | iomd_writeb(ctrl, dma_base + CR); | 185 | iomd_writeb(ctrl, dma_base + CR); |
169 | enable_irq(dma->dma_irq); | 186 | enable_irq(idma->irq); |
170 | } | 187 | } |
171 | 188 | ||
172 | static void iomd_disable_dma(dmach_t channel, dma_t *dma) | 189 | static void iomd_disable_dma(unsigned int chan, dma_t *dma) |
173 | { | 190 | { |
174 | unsigned long dma_base = dma->dma_base; | 191 | struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma); |
192 | unsigned long dma_base = idma->base; | ||
175 | unsigned long flags; | 193 | unsigned long flags; |
176 | 194 | ||
177 | local_irq_save(flags); | 195 | local_irq_save(flags); |
178 | if (dma->state != ~DMA_ST_AB) | 196 | if (idma->state != ~DMA_ST_AB) |
179 | disable_irq(dma->dma_irq); | 197 | disable_irq(idma->irq); |
180 | iomd_writeb(0, dma_base + CR); | 198 | iomd_writeb(0, dma_base + CR); |
181 | local_irq_restore(flags); | 199 | local_irq_restore(flags); |
182 | } | 200 | } |
183 | 201 | ||
184 | static int iomd_set_dma_speed(dmach_t channel, dma_t *dma, int cycle) | 202 | static int iomd_set_dma_speed(unsigned int chan, dma_t *dma, int cycle) |
185 | { | 203 | { |
186 | int tcr, speed; | 204 | int tcr, speed; |
187 | 205 | ||
@@ -197,7 +215,7 @@ static int iomd_set_dma_speed(dmach_t channel, dma_t *dma, int cycle) | |||
197 | tcr = iomd_readb(IOMD_DMATCR); | 215 | tcr = iomd_readb(IOMD_DMATCR); |
198 | speed &= 3; | 216 | speed &= 3; |
199 | 217 | ||
200 | switch (channel) { | 218 | switch (chan) { |
201 | case DMA_0: | 219 | case DMA_0: |
202 | tcr = (tcr & ~0x03) | speed; | 220 | tcr = (tcr & ~0x03) | speed; |
203 | break; | 221 | break; |
@@ -236,16 +254,22 @@ static struct fiq_handler fh = { | |||
236 | .name = "floppydma" | 254 | .name = "floppydma" |
237 | }; | 255 | }; |
238 | 256 | ||
239 | static void floppy_enable_dma(dmach_t channel, dma_t *dma) | 257 | struct floppy_dma { |
258 | struct dma_struct dma; | ||
259 | unsigned int fiq; | ||
260 | }; | ||
261 | |||
262 | static void floppy_enable_dma(unsigned int chan, dma_t *dma) | ||
240 | { | 263 | { |
264 | struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma); | ||
241 | void *fiqhandler_start; | 265 | void *fiqhandler_start; |
242 | unsigned int fiqhandler_length; | 266 | unsigned int fiqhandler_length; |
243 | struct pt_regs regs; | 267 | struct pt_regs regs; |
244 | 268 | ||
245 | if (dma->sg) | 269 | if (fdma->dma.sg) |
246 | BUG(); | 270 | BUG(); |
247 | 271 | ||
248 | if (dma->dma_mode == DMA_MODE_READ) { | 272 | if (fdma->dma.dma_mode == DMA_MODE_READ) { |
249 | extern unsigned char floppy_fiqin_start, floppy_fiqin_end; | 273 | extern unsigned char floppy_fiqin_start, floppy_fiqin_end; |
250 | fiqhandler_start = &floppy_fiqin_start; | 274 | fiqhandler_start = &floppy_fiqin_start; |
251 | fiqhandler_length = &floppy_fiqin_end - &floppy_fiqin_start; | 275 | fiqhandler_length = &floppy_fiqin_end - &floppy_fiqin_start; |
@@ -255,8 +279,8 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma) | |||
255 | fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start; | 279 | fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start; |
256 | } | 280 | } |
257 | 281 | ||
258 | regs.ARM_r9 = dma->count; | 282 | regs.ARM_r9 = fdma->dma.count; |
259 | regs.ARM_r10 = (unsigned long)dma->addr; | 283 | regs.ARM_r10 = (unsigned long)fdma->dma.addr; |
260 | regs.ARM_fp = (unsigned long)FLOPPYDMA_BASE; | 284 | regs.ARM_fp = (unsigned long)FLOPPYDMA_BASE; |
261 | 285 | ||
262 | if (claim_fiq(&fh)) { | 286 | if (claim_fiq(&fh)) { |
@@ -266,16 +290,17 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma) | |||
266 | 290 | ||
267 | set_fiq_handler(fiqhandler_start, fiqhandler_length); | 291 | set_fiq_handler(fiqhandler_start, fiqhandler_length); |
268 | set_fiq_regs(®s); | 292 | set_fiq_regs(®s); |
269 | enable_fiq(dma->dma_irq); | 293 | enable_fiq(fdma->fiq); |
270 | } | 294 | } |
271 | 295 | ||
272 | static void floppy_disable_dma(dmach_t channel, dma_t *dma) | 296 | static void floppy_disable_dma(unsigned int chan, dma_t *dma) |
273 | { | 297 | { |
274 | disable_fiq(dma->dma_irq); | 298 | struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma); |
299 | disable_fiq(fdma->fiq); | ||
275 | release_fiq(&fh); | 300 | release_fiq(&fh); |
276 | } | 301 | } |
277 | 302 | ||
278 | static int floppy_get_residue(dmach_t channel, dma_t *dma) | 303 | static int floppy_get_residue(unsigned int chan, dma_t *dma) |
279 | { | 304 | { |
280 | struct pt_regs regs; | 305 | struct pt_regs regs; |
281 | get_fiq_regs(®s); | 306 | get_fiq_regs(®s); |
@@ -292,7 +317,7 @@ static struct dma_ops floppy_dma_ops = { | |||
292 | /* | 317 | /* |
293 | * This is virtual DMA - we don't need anything here. | 318 | * This is virtual DMA - we don't need anything here. |
294 | */ | 319 | */ |
295 | static void sound_enable_disable_dma(dmach_t channel, dma_t *dma) | 320 | static void sound_enable_disable_dma(unsigned int chan, dma_t *dma) |
296 | { | 321 | { |
297 | } | 322 | } |
298 | 323 | ||
@@ -302,8 +327,24 @@ static struct dma_ops sound_dma_ops = { | |||
302 | .disable = sound_enable_disable_dma, | 327 | .disable = sound_enable_disable_dma, |
303 | }; | 328 | }; |
304 | 329 | ||
305 | void __init arch_dma_init(dma_t *dma) | 330 | static struct iomd_dma iomd_dma[6]; |
331 | |||
332 | static struct floppy_dma floppy_dma = { | ||
333 | .dma = { | ||
334 | .d_ops = &floppy_dma_ops, | ||
335 | }, | ||
336 | .fiq = FIQ_FLOPPYDATA, | ||
337 | }; | ||
338 | |||
339 | static dma_t sound_dma = { | ||
340 | .d_ops = &sound_dma_ops, | ||
341 | }; | ||
342 | |||
343 | static int __init rpc_dma_init(void) | ||
306 | { | 344 | { |
345 | unsigned int i; | ||
346 | int ret; | ||
347 | |||
307 | iomd_writeb(0, IOMD_IO0CR); | 348 | iomd_writeb(0, IOMD_IO0CR); |
308 | iomd_writeb(0, IOMD_IO1CR); | 349 | iomd_writeb(0, IOMD_IO1CR); |
309 | iomd_writeb(0, IOMD_IO2CR); | 350 | iomd_writeb(0, IOMD_IO2CR); |
@@ -311,31 +352,39 @@ void __init arch_dma_init(dma_t *dma) | |||
311 | 352 | ||
312 | iomd_writeb(0xa0, IOMD_DMATCR); | 353 | iomd_writeb(0xa0, IOMD_DMATCR); |
313 | 354 | ||
314 | dma[DMA_0].dma_base = IOMD_IO0CURA; | ||
315 | dma[DMA_0].dma_irq = IRQ_DMA0; | ||
316 | dma[DMA_0].d_ops = &iomd_dma_ops; | ||
317 | dma[DMA_1].dma_base = IOMD_IO1CURA; | ||
318 | dma[DMA_1].dma_irq = IRQ_DMA1; | ||
319 | dma[DMA_1].d_ops = &iomd_dma_ops; | ||
320 | dma[DMA_2].dma_base = IOMD_IO2CURA; | ||
321 | dma[DMA_2].dma_irq = IRQ_DMA2; | ||
322 | dma[DMA_2].d_ops = &iomd_dma_ops; | ||
323 | dma[DMA_3].dma_base = IOMD_IO3CURA; | ||
324 | dma[DMA_3].dma_irq = IRQ_DMA3; | ||
325 | dma[DMA_3].d_ops = &iomd_dma_ops; | ||
326 | dma[DMA_S0].dma_base = IOMD_SD0CURA; | ||
327 | dma[DMA_S0].dma_irq = IRQ_DMAS0; | ||
328 | dma[DMA_S0].d_ops = &iomd_dma_ops; | ||
329 | dma[DMA_S1].dma_base = IOMD_SD1CURA; | ||
330 | dma[DMA_S1].dma_irq = IRQ_DMAS1; | ||
331 | dma[DMA_S1].d_ops = &iomd_dma_ops; | ||
332 | dma[DMA_VIRTUAL_FLOPPY].dma_irq = FIQ_FLOPPYDATA; | ||
333 | dma[DMA_VIRTUAL_FLOPPY].d_ops = &floppy_dma_ops; | ||
334 | dma[DMA_VIRTUAL_SOUND].d_ops = &sound_dma_ops; | ||
335 | |||
336 | /* | 355 | /* |
337 | * Setup DMA channels 2,3 to be for podules | 356 | * Setup DMA channels 2,3 to be for podules |
338 | * and channels 0,1 for internal devices | 357 | * and channels 0,1 for internal devices |
339 | */ | 358 | */ |
340 | iomd_writeb(DMA_EXT_IO3|DMA_EXT_IO2, IOMD_DMAEXT); | 359 | iomd_writeb(DMA_EXT_IO3|DMA_EXT_IO2, IOMD_DMAEXT); |
360 | |||
361 | iomd_dma[DMA_0].base = IOMD_IO0CURA; | ||
362 | iomd_dma[DMA_0].irq = IRQ_DMA0; | ||
363 | iomd_dma[DMA_1].base = IOMD_IO1CURA; | ||
364 | iomd_dma[DMA_1].irq = IRQ_DMA1; | ||
365 | iomd_dma[DMA_2].base = IOMD_IO2CURA; | ||
366 | iomd_dma[DMA_2].irq = IRQ_DMA2; | ||
367 | iomd_dma[DMA_3].base = IOMD_IO3CURA; | ||
368 | iomd_dma[DMA_3].irq = IRQ_DMA3; | ||
369 | iomd_dma[DMA_S0].base = IOMD_SD0CURA; | ||
370 | iomd_dma[DMA_S0].irq = IRQ_DMAS0; | ||
371 | iomd_dma[DMA_S1].base = IOMD_SD1CURA; | ||
372 | iomd_dma[DMA_S1].irq = IRQ_DMAS1; | ||
373 | |||
374 | for (i = DMA_0; i <= DMA_S1; i++) { | ||
375 | iomd_dma[i].dma.d_ops = &iomd_dma_ops; | ||
376 | |||
377 | ret = isa_dma_add(i, &iomd_dma[i].dma); | ||
378 | if (ret) | ||
379 | printk("IOMDDMA%u: unable to register: %d\n", i, ret); | ||
380 | } | ||
381 | |||
382 | ret = isa_dma_add(DMA_VIRTUAL_FLOPPY, &floppy_dma.dma); | ||
383 | if (ret) | ||
384 | printk("IOMDFLOPPY: unable to register: %d\n", ret); | ||
385 | ret = isa_dma_add(DMA_VIRTUAL_SOUND, &sound_dma); | ||
386 | if (ret) | ||
387 | printk("IOMDSOUND: unable to register: %d\n", ret); | ||
388 | return 0; | ||
341 | } | 389 | } |
390 | core_initcall(rpc_dma_init); | ||
diff --git a/arch/arm/mach-rpc/include/mach/isa-dma.h b/arch/arm/mach-rpc/include/mach/isa-dma.h index bad720548587..67bfc6719c34 100644 --- a/arch/arm/mach-rpc/include/mach/isa-dma.h +++ b/arch/arm/mach-rpc/include/mach/isa-dma.h | |||
@@ -23,5 +23,7 @@ | |||
23 | 23 | ||
24 | #define DMA_FLOPPY DMA_VIRTUAL_FLOPPY | 24 | #define DMA_FLOPPY DMA_VIRTUAL_FLOPPY |
25 | 25 | ||
26 | #define IOMD_DMA_BOUNDARY (PAGE_SIZE - 1) | ||
27 | |||
26 | #endif /* _ASM_ARCH_DMA_H */ | 28 | #endif /* _ASM_ARCH_DMA_H */ |
27 | 29 | ||
diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig index f99d9013905f..bfc38e315187 100644 --- a/arch/arm/mach-sa1100/Kconfig +++ b/arch/arm/mach-sa1100/Kconfig | |||
@@ -71,19 +71,9 @@ config SA1100_H3600 | |||
71 | <http://www.handhelds.org/Compaq/index.html#iPAQ_H3600> | 71 | <http://www.handhelds.org/Compaq/index.html#iPAQ_H3600> |
72 | <http://www.compaq.com/products/handhelds/pocketpc/> | 72 | <http://www.compaq.com/products/handhelds/pocketpc/> |
73 | 73 | ||
74 | config SA1100_H3800 | ||
75 | bool "Compaq iPAQ H3800" | ||
76 | help | ||
77 | Say Y here if you intend to run this kernel on the Compaq iPAQ H3800 | ||
78 | series handheld computer. Information about this machine and the | ||
79 | Linux port to this machine can be found at: | ||
80 | |||
81 | <http://www.handhelds.org/Compaq/index.html#iPAQ_H3800> | ||
82 | <http://www.compaq.com/products/handhelds/pocketpc/> | ||
83 | |||
84 | config SA1100_H3XXX | 74 | config SA1100_H3XXX |
85 | bool | 75 | bool |
86 | depends on SA1100_H3100 || SA1100_H3600 || SA1100_H3800 | 76 | depends on SA1100_H3100 || SA1100_H3600 |
87 | default y | 77 | default y |
88 | 78 | ||
89 | config SA1100_BADGE4 | 79 | config SA1100_BADGE4 |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index c1fbd5b5f9c4..23cfdd593954 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -289,7 +289,7 @@ static struct platform_device sa11x0pcmcia_device = { | |||
289 | }; | 289 | }; |
290 | 290 | ||
291 | static struct platform_device sa11x0mtd_device = { | 291 | static struct platform_device sa11x0mtd_device = { |
292 | .name = "flash", | 292 | .name = "sa1100-mtd", |
293 | .id = -1, | 293 | .id = -1, |
294 | }; | 294 | }; |
295 | 295 | ||
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index af25a78d705d..b9aaa45c6ca4 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c | |||
@@ -42,14 +42,7 @@ | |||
42 | #include <asm/mach/serial_sa1100.h> | 42 | #include <asm/mach/serial_sa1100.h> |
43 | 43 | ||
44 | #include <mach/h3600.h> | 44 | #include <mach/h3600.h> |
45 | |||
46 | #if defined (CONFIG_SA1100_H3600) || defined (CONFIG_SA1100_H3100) | ||
47 | #include <mach/h3600_gpio.h> | 45 | #include <mach/h3600_gpio.h> |
48 | #endif | ||
49 | |||
50 | #ifdef CONFIG_SA1100_H3800 | ||
51 | #include <mach/h3600_asic.h> | ||
52 | #endif | ||
53 | 46 | ||
54 | #include "generic.h" | 47 | #include "generic.h" |
55 | 48 | ||
@@ -519,388 +512,3 @@ MACHINE_END | |||
519 | 512 | ||
520 | #endif /* CONFIG_SA1100_H3600 */ | 513 | #endif /* CONFIG_SA1100_H3600 */ |
521 | 514 | ||
522 | #ifdef CONFIG_SA1100_H3800 | ||
523 | |||
524 | #define SET_ASIC1(x) \ | ||
525 | do {if (setp) { H3800_ASIC1_GPIO_OUT |= (x); } else { H3800_ASIC1_GPIO_OUT &= ~(x); }} while(0) | ||
526 | |||
527 | #define SET_ASIC2(x) \ | ||
528 | do {if (setp) { H3800_ASIC2_GPIOPIOD |= (x); } else { H3800_ASIC2_GPIOPIOD &= ~(x); }} while(0) | ||
529 | |||
530 | #define CLEAR_ASIC1(x) \ | ||
531 | do {if (setp) { H3800_ASIC1_GPIO_OUT &= ~(x); } else { H3800_ASIC1_GPIO_OUT |= (x); }} while(0) | ||
532 | |||
533 | #define CLEAR_ASIC2(x) \ | ||
534 | do {if (setp) { H3800_ASIC2_GPIOPIOD &= ~(x); } else { H3800_ASIC2_GPIOPIOD |= (x); }} while(0) | ||
535 | |||
536 | |||
537 | /* | ||
538 | On screen enable, we get | ||
539 | |||
540 | h3800_video_power_on(1) | ||
541 | LCD controller starts | ||
542 | h3800_video_lcd_enable(1) | ||
543 | |||
544 | On screen disable, we get | ||
545 | |||
546 | h3800_video_lcd_enable(0) | ||
547 | LCD controller stops | ||
548 | h3800_video_power_on(0) | ||
549 | */ | ||
550 | |||
551 | |||
552 | static void h3800_video_power_on(int setp) | ||
553 | { | ||
554 | if (setp) { | ||
555 | H3800_ASIC1_GPIO_OUT |= GPIO1_LCD_ON; | ||
556 | msleep(30); | ||
557 | H3800_ASIC1_GPIO_OUT |= GPIO1_VGL_ON; | ||
558 | msleep(5); | ||
559 | H3800_ASIC1_GPIO_OUT |= GPIO1_VGH_ON; | ||
560 | msleep(50); | ||
561 | H3800_ASIC1_GPIO_OUT |= GPIO1_LCD_5V_ON; | ||
562 | msleep(5); | ||
563 | } else { | ||
564 | msleep(5); | ||
565 | H3800_ASIC1_GPIO_OUT &= ~GPIO1_LCD_5V_ON; | ||
566 | msleep(50); | ||
567 | H3800_ASIC1_GPIO_OUT &= ~GPIO1_VGL_ON; | ||
568 | msleep(5); | ||
569 | H3800_ASIC1_GPIO_OUT &= ~GPIO1_VGH_ON; | ||
570 | msleep(100); | ||
571 | H3800_ASIC1_GPIO_OUT &= ~GPIO1_LCD_ON; | ||
572 | } | ||
573 | } | ||
574 | |||
575 | static void h3800_video_lcd_enable(int setp) | ||
576 | { | ||
577 | if (setp) { | ||
578 | msleep(17); // Wait one from before turning on | ||
579 | H3800_ASIC1_GPIO_OUT |= GPIO1_LCD_PCI; | ||
580 | } else { | ||
581 | H3800_ASIC1_GPIO_OUT &= ~GPIO1_LCD_PCI; | ||
582 | msleep(30); // Wait before turning off | ||
583 | } | ||
584 | } | ||
585 | |||
586 | |||
587 | static void h3800_control_egpio(enum ipaq_egpio_type x, int setp) | ||
588 | { | ||
589 | switch (x) { | ||
590 | case IPAQ_EGPIO_LCD_POWER: | ||
591 | h3800_video_power_on(setp); | ||
592 | break; | ||
593 | case IPAQ_EGPIO_LCD_ENABLE: | ||
594 | h3800_video_lcd_enable(setp); | ||
595 | break; | ||
596 | case IPAQ_EGPIO_CODEC_NRESET: | ||
597 | case IPAQ_EGPIO_AUDIO_ON: | ||
598 | case IPAQ_EGPIO_QMUTE: | ||
599 | printk("%s: error - should not be called\n", __func__); | ||
600 | break; | ||
601 | case IPAQ_EGPIO_OPT_NVRAM_ON: | ||
602 | SET_ASIC2(GPIO2_OPT_ON_NVRAM); | ||
603 | break; | ||
604 | case IPAQ_EGPIO_OPT_ON: | ||
605 | SET_ASIC2(GPIO2_OPT_ON); | ||
606 | break; | ||
607 | case IPAQ_EGPIO_CARD_RESET: | ||
608 | SET_ASIC2(GPIO2_OPT_PCM_RESET); | ||
609 | break; | ||
610 | case IPAQ_EGPIO_OPT_RESET: | ||
611 | SET_ASIC2(GPIO2_OPT_RESET); | ||
612 | break; | ||
613 | case IPAQ_EGPIO_IR_ON: | ||
614 | CLEAR_ASIC1(GPIO1_IR_ON_N); | ||
615 | break; | ||
616 | case IPAQ_EGPIO_IR_FSEL: | ||
617 | break; | ||
618 | case IPAQ_EGPIO_RS232_ON: | ||
619 | SET_ASIC1(GPIO1_RS232_ON); | ||
620 | break; | ||
621 | case IPAQ_EGPIO_VPP_ON: | ||
622 | H3800_ASIC2_FlashWP_VPP_ON = setp; | ||
623 | break; | ||
624 | } | ||
625 | } | ||
626 | |||
627 | static unsigned long h3800_read_egpio(void) | ||
628 | { | ||
629 | return H3800_ASIC1_GPIO_OUT | (H3800_ASIC2_GPIOPIOD << 16); | ||
630 | } | ||
631 | |||
632 | /* We need to fix ASIC2 GPIO over suspend/resume. At the moment, | ||
633 | it doesn't appear that ASIC1 GPIO has the same problem */ | ||
634 | |||
635 | static int h3800_pm_callback(int req) | ||
636 | { | ||
637 | static u16 asic1_data; | ||
638 | static u16 asic2_data; | ||
639 | int result = 0; | ||
640 | |||
641 | printk("%s %d\n", __func__, req); | ||
642 | |||
643 | switch (req) { | ||
644 | case PM_RESUME: | ||
645 | MSC2 = (MSC2 & 0x0000ffff) | 0xE4510000; /* Set MSC2 correctly */ | ||
646 | |||
647 | H3800_ASIC2_GPIOPIOD = asic2_data; | ||
648 | H3800_ASIC2_GPIODIR = GPIO2_PEN_IRQ | ||
649 | | GPIO2_SD_DETECT | ||
650 | | GPIO2_EAR_IN_N | ||
651 | | GPIO2_USB_DETECT_N | ||
652 | | GPIO2_SD_CON_SLT; | ||
653 | |||
654 | H3800_ASIC1_GPIO_OUT = asic1_data; | ||
655 | |||
656 | if (ipaq_model_ops.pm_callback_aux) | ||
657 | result = ipaq_model_ops.pm_callback_aux(req); | ||
658 | break; | ||
659 | |||
660 | case PM_SUSPEND: | ||
661 | if (ipaq_model_ops.pm_callback_aux && | ||
662 | ((result = ipaq_model_ops.pm_callback_aux(req)) != 0)) | ||
663 | return result; | ||
664 | |||
665 | asic1_data = H3800_ASIC1_GPIO_OUT; | ||
666 | asic2_data = H3800_ASIC2_GPIOPIOD; | ||
667 | break; | ||
668 | default: | ||
669 | printk("%s: unrecognized PM callback\n", __func__); | ||
670 | break; | ||
671 | } | ||
672 | return result; | ||
673 | } | ||
674 | |||
675 | static struct ipaq_model_ops h3800_model_ops __initdata = { | ||
676 | .generic_name = "3800", | ||
677 | .control = h3800_control_egpio, | ||
678 | .read = h3800_read_egpio, | ||
679 | .pm_callback = h3800_pm_callback | ||
680 | }; | ||
681 | |||
682 | #define MAX_ASIC_ISR_LOOPS 20 | ||
683 | |||
684 | /* The order of these is important - see #include <mach/irqs.h> */ | ||
685 | static u32 kpio_irq_mask[] = { | ||
686 | KPIO_KEY_ALL, | ||
687 | KPIO_SPI_INT, | ||
688 | KPIO_OWM_INT, | ||
689 | KPIO_ADC_INT, | ||
690 | KPIO_UART_0_INT, | ||
691 | KPIO_UART_1_INT, | ||
692 | KPIO_TIMER_0_INT, | ||
693 | KPIO_TIMER_1_INT, | ||
694 | KPIO_TIMER_2_INT | ||
695 | }; | ||
696 | |||
697 | static u32 gpio_irq_mask[] = { | ||
698 | GPIO2_PEN_IRQ, | ||
699 | GPIO2_SD_DETECT, | ||
700 | GPIO2_EAR_IN_N, | ||
701 | GPIO2_USB_DETECT_N, | ||
702 | GPIO2_SD_CON_SLT, | ||
703 | }; | ||
704 | |||
705 | static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc) | ||
706 | { | ||
707 | int i; | ||
708 | |||
709 | if (0) printk("%s: interrupt received\n", __func__); | ||
710 | |||
711 | desc->chip->ack(irq); | ||
712 | |||
713 | for (i = 0; i < MAX_ASIC_ISR_LOOPS && (GPLR & GPIO_H3800_ASIC); i++) { | ||
714 | u32 irq; | ||
715 | int j; | ||
716 | |||
717 | /* KPIO */ | ||
718 | irq = H3800_ASIC2_KPIINTFLAG; | ||
719 | if (0) printk("%s KPIO 0x%08X\n", __func__, irq); | ||
720 | for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) | ||
721 | if (irq & kpio_irq_mask[j]) | ||
722 | handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j); | ||
723 | |||
724 | /* GPIO2 */ | ||
725 | irq = H3800_ASIC2_GPIINTFLAG; | ||
726 | if (0) printk("%s GPIO 0x%08X\n", __func__, irq); | ||
727 | for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) | ||
728 | if (irq & gpio_irq_mask[j]) | ||
729 | handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j); | ||
730 | } | ||
731 | |||
732 | if (i >= MAX_ASIC_ISR_LOOPS) | ||
733 | printk("%s: interrupt processing overrun\n", __func__); | ||
734 | |||
735 | /* For level-based interrupts */ | ||
736 | desc->chip->unmask(irq); | ||
737 | |||
738 | } | ||
739 | |||
740 | static struct irqaction h3800_irq = { | ||
741 | .name = "h3800_asic", | ||
742 | .handler = h3800_IRQ_demux, | ||
743 | .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, | ||
744 | }; | ||
745 | |||
746 | u32 kpio_int_shadow = 0; | ||
747 | |||
748 | |||
749 | /* mask_ack <- IRQ is first serviced. | ||
750 | mask <- IRQ is disabled. | ||
751 | unmask <- IRQ is enabled | ||
752 | |||
753 | The INTCLR registers are poorly documented. I believe that writing | ||
754 | a "1" to the register clears the specific interrupt, but the documentation | ||
755 | indicates writing a "0" clears the interrupt. In any case, they shouldn't | ||
756 | be read (that's the INTFLAG register) | ||
757 | */ | ||
758 | |||
759 | static void h3800_mask_ack_kpio_irq(unsigned int irq) | ||
760 | { | ||
761 | u32 mask = kpio_irq_mask[irq - H3800_KPIO_IRQ_START]; | ||
762 | kpio_int_shadow &= ~mask; | ||
763 | H3800_ASIC2_KPIINTSTAT = kpio_int_shadow; | ||
764 | H3800_ASIC2_KPIINTCLR = mask; | ||
765 | } | ||
766 | |||
767 | static void h3800_mask_kpio_irq(unsigned int irq) | ||
768 | { | ||
769 | u32 mask = kpio_irq_mask[irq - H3800_KPIO_IRQ_START]; | ||
770 | kpio_int_shadow &= ~mask; | ||
771 | H3800_ASIC2_KPIINTSTAT = kpio_int_shadow; | ||
772 | } | ||
773 | |||
774 | static void h3800_unmask_kpio_irq(unsigned int irq) | ||
775 | { | ||
776 | u32 mask = kpio_irq_mask[irq - H3800_KPIO_IRQ_START]; | ||
777 | kpio_int_shadow |= mask; | ||
778 | H3800_ASIC2_KPIINTSTAT = kpio_int_shadow; | ||
779 | } | ||
780 | |||
781 | static void h3800_mask_ack_gpio_irq(unsigned int irq) | ||
782 | { | ||
783 | u32 mask = gpio_irq_mask[irq - H3800_GPIO_IRQ_START]; | ||
784 | H3800_ASIC2_GPIINTSTAT &= ~mask; | ||
785 | H3800_ASIC2_GPIINTCLR = mask; | ||
786 | } | ||
787 | |||
788 | static void h3800_mask_gpio_irq(unsigned int irq) | ||
789 | { | ||
790 | u32 mask = gpio_irq_mask[irq - H3800_GPIO_IRQ_START]; | ||
791 | H3800_ASIC2_GPIINTSTAT &= ~mask; | ||
792 | } | ||
793 | |||
794 | static void h3800_unmask_gpio_irq(unsigned int irq) | ||
795 | { | ||
796 | u32 mask = gpio_irq_mask[irq - H3800_GPIO_IRQ_START]; | ||
797 | H3800_ASIC2_GPIINTSTAT |= mask; | ||
798 | } | ||
799 | |||
800 | static void __init h3800_init_irq(void) | ||
801 | { | ||
802 | int i; | ||
803 | |||
804 | /* Initialize standard IRQs */ | ||
805 | sa1100_init_irq(); | ||
806 | |||
807 | /* Disable all IRQs and set up clock */ | ||
808 | H3800_ASIC2_KPIINTSTAT = 0; /* Disable all interrupts */ | ||
809 | H3800_ASIC2_GPIINTSTAT = 0; | ||
810 | |||
811 | H3800_ASIC2_KPIINTCLR = 0; /* Clear all KPIO interrupts */ | ||
812 | H3800_ASIC2_GPIINTCLR = 0; /* Clear all GPIO interrupts */ | ||
813 | |||
814 | // H3800_ASIC2_KPIINTCLR = 0xffff; /* Clear all KPIO interrupts */ | ||
815 | // H3800_ASIC2_GPIINTCLR = 0xffff; /* Clear all GPIO interrupts */ | ||
816 | |||
817 | H3800_ASIC2_CLOCK_Enable |= ASIC2_CLOCK_EX0; /* 32 kHZ crystal on */ | ||
818 | H3800_ASIC2_INTR_ClockPrescale |= ASIC2_INTCPS_SET; | ||
819 | H3800_ASIC2_INTR_ClockPrescale = ASIC2_INTCPS_CPS(0x0e) | ASIC2_INTCPS_SET; | ||
820 | H3800_ASIC2_INTR_TimerSet = 1; | ||
821 | |||
822 | #if 0 | ||
823 | for (i = 0; i < H3800_KPIO_IRQ_COUNT; i++) { | ||
824 | int irq = i + H3800_KPIO_IRQ_START; | ||
825 | irq_desc[irq].valid = 1; | ||
826 | irq_desc[irq].probe_ok = 1; | ||
827 | set_irq_chip(irq, &h3800_kpio_irqchip); | ||
828 | } | ||
829 | |||
830 | for (i = 0; i < H3800_GPIO_IRQ_COUNT; i++) { | ||
831 | int irq = i + H3800_GPIO_IRQ_START; | ||
832 | irq_desc[irq].valid = 1; | ||
833 | irq_desc[irq].probe_ok = 1; | ||
834 | set_irq_chip(irq, &h3800_gpio_irqchip); | ||
835 | } | ||
836 | #endif | ||
837 | set_irq_type(IRQ_GPIO_H3800_ASIC, IRQ_TYPE_EDGE_RISING); | ||
838 | set_irq_chained_handler(IRQ_GPIO_H3800_ASIC, h3800_IRQ_demux); | ||
839 | } | ||
840 | |||
841 | |||
842 | #define ASIC1_OUTPUTS 0x7fff /* First 15 bits are used */ | ||
843 | |||
844 | static void __init h3800_map_io(void) | ||
845 | { | ||
846 | h3xxx_map_io(); | ||
847 | |||
848 | /* Add wakeup on AC plug/unplug */ | ||
849 | PWER |= PWER_GPIO12; | ||
850 | |||
851 | /* Initialize h3800-specific values here */ | ||
852 | GPCR = 0x0fffffff; /* All outputs are set low by default */ | ||
853 | GAFR = GPIO_H3800_CLK_OUT | | ||
854 | GPIO_LDD15 | GPIO_LDD14 | GPIO_LDD13 | GPIO_LDD12 | | ||
855 | GPIO_LDD11 | GPIO_LDD10 | GPIO_LDD9 | GPIO_LDD8; | ||
856 | GPDR = GPIO_H3800_CLK_OUT | | ||
857 | GPIO_H3600_COM_RTS | GPIO_H3600_L3_CLOCK | | ||
858 | GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA | | ||
859 | GPIO_LDD15 | GPIO_LDD14 | GPIO_LDD13 | GPIO_LDD12 | | ||
860 | GPIO_LDD11 | GPIO_LDD10 | GPIO_LDD9 | GPIO_LDD8; | ||
861 | TUCR = TUCR_3_6864MHz; /* Seems to be used only for the Bluetooth UART */ | ||
862 | |||
863 | /* Fix the memory bus */ | ||
864 | MSC2 = (MSC2 & 0x0000ffff) | 0xE4510000; | ||
865 | |||
866 | /* Set up ASIC #1 */ | ||
867 | H3800_ASIC1_GPIO_DIR = ASIC1_OUTPUTS; /* All outputs */ | ||
868 | H3800_ASIC1_GPIO_MASK = ASIC1_OUTPUTS; /* No interrupts */ | ||
869 | H3800_ASIC1_GPIO_SLEEP_MASK = ASIC1_OUTPUTS; | ||
870 | H3800_ASIC1_GPIO_SLEEP_DIR = ASIC1_OUTPUTS; | ||
871 | H3800_ASIC1_GPIO_SLEEP_OUT = GPIO1_EAR_ON_N; | ||
872 | H3800_ASIC1_GPIO_BATT_FAULT_DIR = ASIC1_OUTPUTS; | ||
873 | H3800_ASIC1_GPIO_BATT_FAULT_OUT = GPIO1_EAR_ON_N; | ||
874 | |||
875 | H3800_ASIC1_GPIO_OUT = GPIO1_IR_ON_N | ||
876 | | GPIO1_RS232_ON | ||
877 | | GPIO1_EAR_ON_N; | ||
878 | |||
879 | /* Set up ASIC #2 */ | ||
880 | H3800_ASIC2_GPIOPIOD = GPIO2_IN_Y1_N | GPIO2_IN_X1_N; | ||
881 | H3800_ASIC2_GPOBFSTAT = GPIO2_IN_Y1_N | GPIO2_IN_X1_N; | ||
882 | |||
883 | H3800_ASIC2_GPIODIR = GPIO2_PEN_IRQ | ||
884 | | GPIO2_SD_DETECT | ||
885 | | GPIO2_EAR_IN_N | ||
886 | | GPIO2_USB_DETECT_N | ||
887 | | GPIO2_SD_CON_SLT; | ||
888 | |||
889 | /* TODO : Set sleep states & battery fault states */ | ||
890 | |||
891 | /* Clear VPP Enable */ | ||
892 | H3800_ASIC2_FlashWP_VPP_ON = 0; | ||
893 | ipaq_model_ops = h3800_model_ops; | ||
894 | } | ||
895 | |||
896 | MACHINE_START(H3800, "Compaq iPAQ H3800") | ||
897 | .phys_io = 0x80000000, | ||
898 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | ||
899 | .boot_params = 0xc0000100, | ||
900 | .map_io = h3800_map_io, | ||
901 | .init_irq = h3800_init_irq, | ||
902 | .timer = &sa1100_timer, | ||
903 | .init_machine = h3xxx_mach_init, | ||
904 | MACHINE_END | ||
905 | |||
906 | #endif /* CONFIG_SA1100_H3800 */ | ||
diff --git a/arch/arm/mach-sa1100/include/mach/h3600.h b/arch/arm/mach-sa1100/include/mach/h3600.h index 9cc47fddb335..e692ab3dd79f 100644 --- a/arch/arm/mach-sa1100/include/mach/h3600.h +++ b/arch/arm/mach-sa1100/include/mach/h3600.h | |||
@@ -29,7 +29,7 @@ typedef int __bitwise pm_request_t; | |||
29 | #define PM_RESUME ((__force pm_request_t) 2) /* enter D0 */ | 29 | #define PM_RESUME ((__force pm_request_t) 2) /* enter D0 */ |
30 | 30 | ||
31 | /* generalized support for H3xxx series Compaq Pocket PC's */ | 31 | /* generalized support for H3xxx series Compaq Pocket PC's */ |
32 | #define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600() || machine_is_h3800()) | 32 | #define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600()) |
33 | 33 | ||
34 | /* Physical memory regions corresponding to chip selects */ | 34 | /* Physical memory regions corresponding to chip selects */ |
35 | #define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000) | 35 | #define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000) |
diff --git a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h b/arch/arm/mach-sa1100/include/mach/h3600_gpio.h index 62b0b7879685..a36ca76d018b 100644 --- a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h +++ b/arch/arm/mach-sa1100/include/mach/h3600_gpio.h | |||
@@ -48,22 +48,11 @@ | |||
48 | #define GPIO_H3600_OPT_LOCK GPIO_GPIO (22) | 48 | #define GPIO_H3600_OPT_LOCK GPIO_GPIO (22) |
49 | #define GPIO_H3600_OPT_DET GPIO_GPIO (27) | 49 | #define GPIO_H3600_OPT_DET GPIO_GPIO (27) |
50 | 50 | ||
51 | /* H3800 specific pins */ | ||
52 | #define GPIO_H3800_AC_IN GPIO_GPIO (12) | ||
53 | #define GPIO_H3800_COM_DSR GPIO_GPIO (13) | ||
54 | #define GPIO_H3800_MMC_INT GPIO_GPIO (18) | ||
55 | #define GPIO_H3800_NOPT_IND GPIO_GPIO (20) /* Almost exactly the same as GPIO_H3600_OPT_DET */ | ||
56 | #define GPIO_H3800_OPT_BAT_FAULT GPIO_GPIO (22) | ||
57 | #define GPIO_H3800_CLK_OUT GPIO_GPIO (27) | ||
58 | |||
59 | /****************************************************/ | 51 | /****************************************************/ |
60 | 52 | ||
61 | #define IRQ_GPIO_H3600_ACTION_BUTTON IRQ_GPIO18 | 53 | #define IRQ_GPIO_H3600_ACTION_BUTTON IRQ_GPIO18 |
62 | #define IRQ_GPIO_H3600_OPT_DET IRQ_GPIO27 | 54 | #define IRQ_GPIO_H3600_OPT_DET IRQ_GPIO27 |
63 | 55 | ||
64 | #define IRQ_GPIO_H3800_MMC_INT IRQ_GPIO18 | ||
65 | #define IRQ_GPIO_H3800_NOPT_IND IRQ_GPIO20 /* almost same as OPT_DET */ | ||
66 | |||
67 | /* H3100 / 3600 EGPIO pins */ | 56 | /* H3100 / 3600 EGPIO pins */ |
68 | #define EGPIO_H3600_VPP_ON (1 << 0) | 57 | #define EGPIO_H3600_VPP_ON (1 << 0) |
69 | #define EGPIO_H3600_CARD_RESET (1 << 1) /* reset the attached pcmcia/compactflash card. active high. */ | 58 | #define EGPIO_H3600_CARD_RESET (1 << 1) /* reset the attached pcmcia/compactflash card. active high. */ |
@@ -84,457 +73,5 @@ | |||
84 | #define EGPIO_H3600_LCD_5V_ON (1 << 14) /* enable 5V to LCD. active high. */ | 73 | #define EGPIO_H3600_LCD_5V_ON (1 << 14) /* enable 5V to LCD. active high. */ |
85 | #define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */ | 74 | #define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */ |
86 | 75 | ||
87 | /********************* H3800, ASIC #2 ********************/ | ||
88 | |||
89 | #define _H3800_ASIC2_Base (H3600_EGPIO_VIRT) | ||
90 | #define H3800_ASIC2_OFFSET(s,x,y) \ | ||
91 | (*((volatile s *) (_H3800_ASIC2_Base + _H3800_ASIC2_ ## x ## _Base + _H3800_ASIC2_ ## x ## _ ## y))) | ||
92 | #define H3800_ASIC2_NOFFSET(s,x,n,y) \ | ||
93 | (*((volatile s *) (_H3800_ASIC2_Base + _H3800_ASIC2_ ## x ## _ ## n ## _Base + _H3800_ASIC2_ ## x ## _ ## y))) | ||
94 | |||
95 | #define _H3800_ASIC2_GPIO_Base 0x0000 | ||
96 | #define _H3800_ASIC2_GPIO_Direction 0x0000 /* R/W, 16 bits 1:input, 0:output */ | ||
97 | #define _H3800_ASIC2_GPIO_InterruptType 0x0004 /* R/W, 12 bits 1:edge, 0:level */ | ||
98 | #define _H3800_ASIC2_GPIO_InterruptEdgeType 0x0008 /* R/W, 12 bits 1:rising, 0:falling */ | ||
99 | #define _H3800_ASIC2_GPIO_InterruptLevelType 0x000C /* R/W, 12 bits 1:high, 0:low */ | ||
100 | #define _H3800_ASIC2_GPIO_InterruptClear 0x0010 /* W, 12 bits */ | ||
101 | #define _H3800_ASIC2_GPIO_InterruptFlag 0x0010 /* R, 12 bits - reads int status */ | ||
102 | #define _H3800_ASIC2_GPIO_Data 0x0014 /* R/W, 16 bits */ | ||
103 | #define _H3800_ASIC2_GPIO_BattFaultOut 0x0018 /* R/W, 16 bit - sets level on batt fault */ | ||
104 | #define _H3800_ASIC2_GPIO_InterruptEnable 0x001c /* R/W, 12 bits 1:enable interrupt */ | ||
105 | #define _H3800_ASIC2_GPIO_Alternate 0x003c /* R/W, 12+1 bits - set alternate functions */ | ||
106 | |||
107 | #define H3800_ASIC2_GPIO_Direction H3800_ASIC2_OFFSET( u16, GPIO, Direction ) | ||
108 | #define H3800_ASIC2_GPIO_InterruptType H3800_ASIC2_OFFSET( u16, GPIO, InterruptType ) | ||
109 | #define H3800_ASIC2_GPIO_InterruptEdgeType H3800_ASIC2_OFFSET( u16, GPIO, InterruptEdgeType ) | ||
110 | #define H3800_ASIC2_GPIO_InterruptLevelType H3800_ASIC2_OFFSET( u16, GPIO, InterruptLevelType ) | ||
111 | #define H3800_ASIC2_GPIO_InterruptClear H3800_ASIC2_OFFSET( u16, GPIO, InterruptClear ) | ||
112 | #define H3800_ASIC2_GPIO_InterruptFlag H3800_ASIC2_OFFSET( u16, GPIO, InterruptFlag ) | ||
113 | #define H3800_ASIC2_GPIO_Data H3800_ASIC2_OFFSET( u16, GPIO, Data ) | ||
114 | #define H3800_ASIC2_GPIO_BattFaultOut H3800_ASIC2_OFFSET( u16, GPIO, BattFaultOut ) | ||
115 | #define H3800_ASIC2_GPIO_InterruptEnable H3800_ASIC2_OFFSET( u16, GPIO, InterruptEnable ) | ||
116 | #define H3800_ASIC2_GPIO_Alternate H3800_ASIC2_OFFSET( u16, GPIO, Alternate ) | ||
117 | |||
118 | #define GPIO_H3800_ASIC2_IN_Y1_N (1 << 0) /* Output: Touchscreen Y1 */ | ||
119 | #define GPIO_H3800_ASIC2_IN_X0 (1 << 1) /* Output: Touchscreen X0 */ | ||
120 | #define GPIO_H3800_ASIC2_IN_Y0 (1 << 2) /* Output: Touchscreen Y0 */ | ||
121 | #define GPIO_H3800_ASIC2_IN_X1_N (1 << 3) /* Output: Touchscreen X1 */ | ||
122 | #define GPIO_H3800_ASIC2_BT_RST (1 << 4) /* Output: Bluetooth reset */ | ||
123 | #define GPIO_H3800_ASIC2_PEN_IRQ (1 << 5) /* Input : Pen down */ | ||
124 | #define GPIO_H3800_ASIC2_SD_DETECT (1 << 6) /* Input : SD detect */ | ||
125 | #define GPIO_H3800_ASIC2_EAR_IN_N (1 << 7) /* Input : Audio jack plug inserted */ | ||
126 | #define GPIO_H3800_ASIC2_OPT_PCM_RESET (1 << 8) /* Output: */ | ||
127 | #define GPIO_H3800_ASIC2_OPT_RESET (1 << 9) /* Output: */ | ||
128 | #define GPIO_H3800_ASIC2_USB_DETECT_N (1 << 10) /* Input : */ | ||
129 | #define GPIO_H3800_ASIC2_SD_CON_SLT (1 << 11) /* Input : */ | ||
130 | |||
131 | #define _H3800_ASIC2_KPIO_Base 0x0200 | ||
132 | #define _H3800_ASIC2_KPIO_Direction 0x0000 /* R/W, 12 bits 1:input, 0:output */ | ||
133 | #define _H3800_ASIC2_KPIO_InterruptType 0x0004 /* R/W, 12 bits 1:edge, 0:level */ | ||
134 | #define _H3800_ASIC2_KPIO_InterruptEdgeType 0x0008 /* R/W, 12 bits 1:rising, 0:falling */ | ||
135 | #define _H3800_ASIC2_KPIO_InterruptLevelType 0x000C /* R/W, 12 bits 1:high, 0:low */ | ||
136 | #define _H3800_ASIC2_KPIO_InterruptClear 0x0010 /* W, 20 bits - 8 special */ | ||
137 | #define _H3800_ASIC2_KPIO_InterruptFlag 0x0010 /* R, 20 bits - 8 special - reads int status */ | ||
138 | #define _H3800_ASIC2_KPIO_Data 0x0014 /* R/W, 16 bits */ | ||
139 | #define _H3800_ASIC2_KPIO_BattFaultOut 0x0018 /* R/W, 16 bit - sets level on batt fault */ | ||
140 | #define _H3800_ASIC2_KPIO_InterruptEnable 0x001c /* R/W, 20 bits - 8 special */ | ||
141 | #define _H3800_ASIC2_KPIO_Alternate 0x003c /* R/W, 6 bits */ | ||
142 | |||
143 | #define H3800_ASIC2_KPIO_Direction H3800_ASIC2_OFFSET( u16, KPIO, Direction ) | ||
144 | #define H3800_ASIC2_KPIO_InterruptType H3800_ASIC2_OFFSET( u16, KPIO, InterruptType ) | ||
145 | #define H3800_ASIC2_KPIO_InterruptEdgeType H3800_ASIC2_OFFSET( u16, KPIO, InterruptEdgeType ) | ||
146 | #define H3800_ASIC2_KPIO_InterruptLevelType H3800_ASIC2_OFFSET( u16, KPIO, InterruptLevelType ) | ||
147 | #define H3800_ASIC2_KPIO_InterruptClear H3800_ASIC2_OFFSET( u32, KPIO, InterruptClear ) | ||
148 | #define H3800_ASIC2_KPIO_InterruptFlag H3800_ASIC2_OFFSET( u32, KPIO, InterruptFlag ) | ||
149 | #define H3800_ASIC2_KPIO_Data H3800_ASIC2_OFFSET( u16, KPIO, Data ) | ||
150 | #define H3800_ASIC2_KPIO_BattFaultOut H3800_ASIC2_OFFSET( u16, KPIO, BattFaultOut ) | ||
151 | #define H3800_ASIC2_KPIO_InterruptEnable H3800_ASIC2_OFFSET( u32, KPIO, InterruptEnable ) | ||
152 | #define H3800_ASIC2_KPIO_Alternate H3800_ASIC2_OFFSET( u16, KPIO, Alternate ) | ||
153 | |||
154 | #define H3800_ASIC2_KPIO_SPI_INT ( 1 << 16 ) | ||
155 | #define H3800_ASIC2_KPIO_OWM_INT ( 1 << 17 ) | ||
156 | #define H3800_ASIC2_KPIO_ADC_INT ( 1 << 18 ) | ||
157 | #define H3800_ASIC2_KPIO_UART_0_INT ( 1 << 19 ) | ||
158 | #define H3800_ASIC2_KPIO_UART_1_INT ( 1 << 20 ) | ||
159 | #define H3800_ASIC2_KPIO_TIMER_0_INT ( 1 << 21 ) | ||
160 | #define H3800_ASIC2_KPIO_TIMER_1_INT ( 1 << 22 ) | ||
161 | #define H3800_ASIC2_KPIO_TIMER_2_INT ( 1 << 23 ) | ||
162 | |||
163 | #define KPIO_H3800_ASIC2_RECORD_BTN_N (1 << 0) /* Record button */ | ||
164 | #define KPIO_H3800_ASIC2_KEY_5W1_N (1 << 1) /* Keypad */ | ||
165 | #define KPIO_H3800_ASIC2_KEY_5W2_N (1 << 2) /* */ | ||
166 | #define KPIO_H3800_ASIC2_KEY_5W3_N (1 << 3) /* */ | ||
167 | #define KPIO_H3800_ASIC2_KEY_5W4_N (1 << 4) /* */ | ||
168 | #define KPIO_H3800_ASIC2_KEY_5W5_N (1 << 5) /* */ | ||
169 | #define KPIO_H3800_ASIC2_KEY_LEFT_N (1 << 6) /* */ | ||
170 | #define KPIO_H3800_ASIC2_KEY_RIGHT_N (1 << 7) /* */ | ||
171 | #define KPIO_H3800_ASIC2_KEY_AP1_N (1 << 8) /* Old "Calendar" */ | ||
172 | #define KPIO_H3800_ASIC2_KEY_AP2_N (1 << 9) /* Old "Schedule" */ | ||
173 | #define KPIO_H3800_ASIC2_KEY_AP3_N (1 << 10) /* Old "Q" */ | ||
174 | #define KPIO_H3800_ASIC2_KEY_AP4_N (1 << 11) /* Old "Undo" */ | ||
175 | |||
176 | /* Alternate KPIO functions (set by default) */ | ||
177 | #define KPIO_ALT_H3800_ASIC2_KEY_5W1_N (1 << 1) /* Action key */ | ||
178 | #define KPIO_ALT_H3800_ASIC2_KEY_5W2_N (1 << 2) /* J1 of keypad input */ | ||
179 | #define KPIO_ALT_H3800_ASIC2_KEY_5W3_N (1 << 3) /* J2 of keypad input */ | ||
180 | #define KPIO_ALT_H3800_ASIC2_KEY_5W4_N (1 << 4) /* J3 of keypad input */ | ||
181 | #define KPIO_ALT_H3800_ASIC2_KEY_5W5_N (1 << 5) /* J4 of keypad input */ | ||
182 | |||
183 | #define _H3800_ASIC2_SPI_Base 0x0400 | ||
184 | #define _H3800_ASIC2_SPI_Control 0x0000 /* R/W 8 bits */ | ||
185 | #define _H3800_ASIC2_SPI_Data 0x0004 /* R/W 8 bits */ | ||
186 | #define _H3800_ASIC2_SPI_ChipSelectDisabled 0x0008 /* W 8 bits */ | ||
187 | |||
188 | #define H3800_ASIC2_SPI_Control H3800_ASIC2_OFFSET( u8, SPI, Control ) | ||
189 | #define H3800_ASIC2_SPI_Data H3800_ASIC2_OFFSET( u8, SPI, Data ) | ||
190 | #define H3800_ASIC2_SPI_ChipSelectDisabled H3800_ASIC2_OFFSET( u8, SPI, ChipSelectDisabled ) | ||
191 | |||
192 | #define _H3800_ASIC2_PWM_0_Base 0x0600 | ||
193 | #define _H3800_ASIC2_PWM_1_Base 0x0700 | ||
194 | #define _H3800_ASIC2_PWM_TimeBase 0x0000 /* R/W 6 bits */ | ||
195 | #define _H3800_ASIC2_PWM_PeriodTime 0x0004 /* R/W 12 bits */ | ||
196 | #define _H3800_ASIC2_PWM_DutyTime 0x0008 /* R/W 12 bits */ | ||
197 | |||
198 | #define H3800_ASIC2_PWM_0_TimeBase H3800_ASIC2_NOFFSET( u8, PWM, 0, TimeBase ) | ||
199 | #define H3800_ASIC2_PWM_0_PeriodTime H3800_ASIC2_NOFFSET( u16, PWM, 0, PeriodTime ) | ||
200 | #define H3800_ASIC2_PWM_0_DutyTime H3800_ASIC2_NOFFSET( u16, PWM, 0, DutyTime ) | ||
201 | |||
202 | #define H3800_ASIC2_PWM_1_TimeBase H3800_ASIC2_NOFFSET( u8, PWM, 1, TimeBase ) | ||
203 | #define H3800_ASIC2_PWM_1_PeriodTime H3800_ASIC2_NOFFSET( u16, PWM, 1, PeriodTime ) | ||
204 | #define H3800_ASIC2_PWM_1_DutyTime H3800_ASIC2_NOFFSET( u16, PWM, 1, DutyTime ) | ||
205 | |||
206 | #define H3800_ASIC2_PWM_TIMEBASE_MASK 0xf /* Low 4 bits sets time base, max = 8 */ | ||
207 | #define H3800_ASIC2_PWM_TIMEBASE_ENABLE ( 1 << 4 ) /* Enable clock */ | ||
208 | #define H3800_ASIC2_PWM_TIMEBASE_CLEAR ( 1 << 5 ) /* Clear the PWM */ | ||
209 | |||
210 | #define _H3800_ASIC2_LED_0_Base 0x0800 | ||
211 | #define _H3800_ASIC2_LED_1_Base 0x0880 | ||
212 | #define _H3800_ASIC2_LED_2_Base 0x0900 | ||
213 | #define _H3800_ASIC2_LED_TimeBase 0x0000 /* R/W 7 bits */ | ||
214 | #define _H3800_ASIC2_LED_PeriodTime 0x0004 /* R/W 12 bits */ | ||
215 | #define _H3800_ASIC2_LED_DutyTime 0x0008 /* R/W 12 bits */ | ||
216 | #define _H3800_ASIC2_LED_AutoStopCount 0x000c /* R/W 16 bits */ | ||
217 | |||
218 | #define H3800_ASIC2_LED_0_TimeBase H3800_ASIC2_NOFFSET( u8, LED, 0, TimeBase ) | ||
219 | #define H3800_ASIC2_LED_0_PeriodTime H3800_ASIC2_NOFFSET( u16, LED, 0, PeriodTime ) | ||
220 | #define H3800_ASIC2_LED_0_DutyTime H3800_ASIC2_NOFFSET( u16, LED, 0, DutyTime ) | ||
221 | #define H3800_ASIC2_LED_0_AutoStopClock H3800_ASIC2_NOFFSET( u16, LED, 0, AutoStopClock ) | ||
222 | |||
223 | #define H3800_ASIC2_LED_1_TimeBase H3800_ASIC2_NOFFSET( u8, LED, 1, TimeBase ) | ||
224 | #define H3800_ASIC2_LED_1_PeriodTime H3800_ASIC2_NOFFSET( u16, LED, 1, PeriodTime ) | ||
225 | #define H3800_ASIC2_LED_1_DutyTime H3800_ASIC2_NOFFSET( u16, LED, 1, DutyTime ) | ||
226 | #define H3800_ASIC2_LED_1_AutoStopClock H3800_ASIC2_NOFFSET( u16, LED, 1, AutoStopClock ) | ||
227 | |||
228 | #define H3800_ASIC2_LED_2_TimeBase H3800_ASIC2_NOFFSET( u8, LED, 2, TimeBase ) | ||
229 | #define H3800_ASIC2_LED_2_PeriodTime H3800_ASIC2_NOFFSET( u16, LED, 2, PeriodTime ) | ||
230 | #define H3800_ASIC2_LED_2_DutyTime H3800_ASIC2_NOFFSET( u16, LED, 2, DutyTime ) | ||
231 | #define H3800_ASIC2_LED_2_AutoStopClock H3800_ASIC2_NOFFSET( u16, LED, 2, AutoStopClock ) | ||
232 | |||
233 | #define H3800_ASIC2_LED_TIMEBASE_MASK 0x0f /* Low 4 bits sets time base, max = 13 */ | ||
234 | #define H3800_ASIC2_LED_TIMEBASE_BLINK ( 1 << 4 ) /* Enable blinking */ | ||
235 | #define H3800_ASIC2_LED_TIMEBASE_AUTOSTOP ( 1 << 5 ) | ||
236 | #define H3800_ASIC2_LED_TIMEBASE_ALWAYS ( 1 << 6 ) /* Enable blink always */ | ||
237 | |||
238 | #define _H3800_ASIC2_UART_0_Base 0x0A00 | ||
239 | #define _H3800_ASIC2_UART_1_Base 0x0C00 | ||
240 | #define _H3800_ASIC2_UART_Receive 0x0000 /* R 8 bits */ | ||
241 | #define _H3800_ASIC2_UART_Transmit 0x0000 /* W 8 bits */ | ||
242 | #define _H3800_ASIC2_UART_IntEnable 0x0004 /* R/W 8 bits */ | ||
243 | #define _H3800_ASIC2_UART_IntVerify 0x0008 /* R/W 8 bits */ | ||
244 | #define _H3800_ASIC2_UART_FIFOControl 0x000c /* R/W 8 bits */ | ||
245 | #define _H3800_ASIC2_UART_LineControl 0x0010 /* R/W 8 bits */ | ||
246 | #define _H3800_ASIC2_UART_ModemStatus 0x0014 /* R/W 8 bits */ | ||
247 | #define _H3800_ASIC2_UART_LineStatus 0x0018 /* R/W 8 bits */ | ||
248 | #define _H3800_ASIC2_UART_ScratchPad 0x001c /* R/W 8 bits */ | ||
249 | #define _H3800_ASIC2_UART_DivisorLatchL 0x0020 /* R/W 8 bits */ | ||
250 | #define _H3800_ASIC2_UART_DivisorLatchH 0x0024 /* R/W 8 bits */ | ||
251 | |||
252 | #define H3800_ASIC2_UART_0_Receive H3800_ASIC2_NOFFSET( u8, UART, 0, Receive ) | ||
253 | #define H3800_ASIC2_UART_0_Transmit H3800_ASIC2_NOFFSET( u8, UART, 0, Transmit ) | ||
254 | #define H3800_ASIC2_UART_0_IntEnable H3800_ASIC2_NOFFSET( u8, UART, 0, IntEnable ) | ||
255 | #define H3800_ASIC2_UART_0_IntVerify H3800_ASIC2_NOFFSET( u8, UART, 0, IntVerify ) | ||
256 | #define H3800_ASIC2_UART_0_FIFOControl H3800_ASIC2_NOFFSET( u8, UART, 0, FIFOControl ) | ||
257 | #define H3800_ASIC2_UART_0_LineControl H3800_ASIC2_NOFFSET( u8, UART, 0, LineControl ) | ||
258 | #define H3800_ASIC2_UART_0_ModemStatus H3800_ASIC2_NOFFSET( u8, UART, 0, ModemStatus ) | ||
259 | #define H3800_ASIC2_UART_0_LineStatus H3800_ASIC2_NOFFSET( u8, UART, 0, LineStatus ) | ||
260 | #define H3800_ASIC2_UART_0_ScratchPad H3800_ASIC2_NOFFSET( u8, UART, 0, ScratchPad ) | ||
261 | #define H3800_ASIC2_UART_0_DivisorLatchL H3800_ASIC2_NOFFSET( u8, UART, 0, DivisorLatchL ) | ||
262 | #define H3800_ASIC2_UART_0_DivisorLatchH H3800_ASIC2_NOFFSET( u8, UART, 0, DivisorLatchH ) | ||
263 | |||
264 | #define H3800_ASIC2_UART_1_Receive H3800_ASIC2_NOFFSET( u8, UART, 1, Receive ) | ||
265 | #define H3800_ASIC2_UART_1_Transmit H3800_ASIC2_NOFFSET( u8, UART, 1, Transmit ) | ||
266 | #define H3800_ASIC2_UART_1_IntEnable H3800_ASIC2_NOFFSET( u8, UART, 1, IntEnable ) | ||
267 | #define H3800_ASIC2_UART_1_IntVerify H3800_ASIC2_NOFFSET( u8, UART, 1, IntVerify ) | ||
268 | #define H3800_ASIC2_UART_1_FIFOControl H3800_ASIC2_NOFFSET( u8, UART, 1, FIFOControl ) | ||
269 | #define H3800_ASIC2_UART_1_LineControl H3800_ASIC2_NOFFSET( u8, UART, 1, LineControl ) | ||
270 | #define H3800_ASIC2_UART_1_ModemStatus H3800_ASIC2_NOFFSET( u8, UART, 1, ModemStatus ) | ||
271 | #define H3800_ASIC2_UART_1_LineStatus H3800_ASIC2_NOFFSET( u8, UART, 1, LineStatus ) | ||
272 | #define H3800_ASIC2_UART_1_ScratchPad H3800_ASIC2_NOFFSET( u8, UART, 1, ScratchPad ) | ||
273 | #define H3800_ASIC2_UART_1_DivisorLatchL H3800_ASIC2_NOFFSET( u8, UART, 1, DivisorLatchL ) | ||
274 | #define H3800_ASIC2_UART_1_DivisorLatchH H3800_ASIC2_NOFFSET( u8, UART, 1, DivisorLatchH ) | ||
275 | |||
276 | #define _H3800_ASIC2_TIMER_Base 0x0E00 | ||
277 | #define _H3800_ASIC2_TIMER_Command 0x0000 /* R/W 8 bits */ | ||
278 | |||
279 | #define H3800_ASIC2_TIMER_Command H3800_ASIC2_OFFSET( u8, Timer, Command ) | ||
280 | |||
281 | #define H3800_ASIC2_TIMER_GAT_0 ( 1 << 0 ) /* Gate enable, counter 0 */ | ||
282 | #define H3800_ASIC2_TIMER_GAT_1 ( 1 << 1 ) /* Gate enable, counter 1 */ | ||
283 | #define H3800_ASIC2_TIMER_GAT_2 ( 1 << 2 ) /* Gate enable, counter 2 */ | ||
284 | #define H3800_ASIC2_TIMER_CLK_0 ( 1 << 3 ) /* Clock enable, counter 0 */ | ||
285 | #define H3800_ASIC2_TIMER_CLK_1 ( 1 << 4 ) /* Clock enable, counter 1 */ | ||
286 | #define H3800_ASIC2_TIMER_CLK_2 ( 1 << 5 ) /* Clock enable, counter 2 */ | ||
287 | #define H3800_ASIC2_TIMER_MODE_0 ( 1 << 6 ) /* Mode 0 enable, counter 0 */ | ||
288 | #define H3800_ASIC2_TIMER_MODE_1 ( 1 << 7 ) /* Mode 0 enable, counter 1 */ | ||
289 | |||
290 | #define _H3800_ASIC2_CLOCK_Base 0x1000 | ||
291 | #define _H3800_ASIC2_CLOCK_Enable 0x0000 /* R/W 18 bits */ | ||
292 | |||
293 | #define H3800_ASIC2_CLOCK_Enable H3800_ASIC2_OFFSET( u32, CLOCK, Enable ) | ||
294 | |||
295 | #define H3800_ASIC2_CLOCK_AUDIO_1 0x0001 /* Enable 4.1 MHz clock for 8Khz and 4khz sample rate */ | ||
296 | #define H3800_ASIC2_CLOCK_AUDIO_2 0x0002 /* Enable 12.3 MHz clock for 48Khz and 32khz sample rate */ | ||
297 | #define H3800_ASIC2_CLOCK_AUDIO_3 0x0004 /* Enable 5.6 MHz clock for 11 kHZ sample rate */ | ||
298 | #define H3800_ASIC2_CLOCK_AUDIO_4 0x0008 /* Enable 11.289 MHz clock for 44 and 22 kHz sample rate */ | ||
299 | #define H3800_ASIC2_CLOCK_ADC ( 1 << 4 ) /* 1.024 MHz clock to ADC */ | ||
300 | #define H3800_ASIC2_CLOCK_SPI ( 1 << 5 ) /* 4.096 MHz clock to SPI */ | ||
301 | #define H3800_ASIC2_CLOCK_OWM ( 1 << 6 ) /* 4.096 MHz clock to OWM */ | ||
302 | #define H3800_ASIC2_CLOCK_PWM ( 1 << 7 ) /* 2.048 MHz clock to PWM */ | ||
303 | #define H3800_ASIC2_CLOCK_UART_1 ( 1 << 8 ) /* 24.576 MHz clock to UART1 (turn off bit 16) */ | ||
304 | #define H3800_ASIC2_CLOCK_UART_0 ( 1 << 9 ) /* 24.576 MHz clock to UART0 (turn off bit 17) */ | ||
305 | #define H3800_ASIC2_CLOCK_SD_1 ( 1 << 10 ) /* 16.934 MHz to SD */ | ||
306 | #define H3800_ASIC2_CLOCK_SD_2 ( 2 << 10 ) /* 24.576 MHz to SD */ | ||
307 | #define H3800_ASIC2_CLOCK_SD_3 ( 3 << 10 ) /* 33.869 MHz to SD */ | ||
308 | #define H3800_ASIC2_CLOCK_SD_4 ( 4 << 10 ) /* 49.152 MHz to SD */ | ||
309 | #define H3800_ASIC2_CLOCK_EX0 ( 1 << 13 ) /* Enable 32.768 kHz crystal */ | ||
310 | #define H3800_ASIC2_CLOCK_EX1 ( 1 << 14 ) /* Enable 24.576 MHz crystal */ | ||
311 | #define H3800_ASIC2_CLOCK_EX2 ( 1 << 15 ) /* Enable 33.869 MHz crystal */ | ||
312 | #define H3800_ASIC2_CLOCK_SLOW_UART_1 ( 1 << 16 ) /* Enable 3.686 MHz to UART1 (turn off bit 8) */ | ||
313 | #define H3800_ASIC2_CLOCK_SLOW_UART_0 ( 1 << 17 ) /* Enable 3.686 MHz to UART0 (turn off bit 9) */ | ||
314 | |||
315 | #define _H3800_ASIC2_ADC_Base 0x1200 | ||
316 | #define _H3800_ASIC2_ADC_Multiplexer 0x0000 /* R/W 4 bits - low 3 bits set channel */ | ||
317 | #define _H3800_ASIC2_ADC_ControlStatus 0x0004 /* R/W 8 bits */ | ||
318 | #define _H3800_ASIC2_ADC_Data 0x0008 /* R 10 bits */ | ||
319 | |||
320 | #define H3800_ASIC2_ADC_Multiplexer H3800_ASIC2_OFFSET( u8, ADC, Multiplexer ) | ||
321 | #define H3800_ASIC2_ADC_ControlStatus H3800_ASIC2_OFFSET( u8, ADC, ControlStatus ) | ||
322 | #define H3800_ASIC2_ADC_Data H3800_ASIC2_OFFSET( u16, ADC, Data ) | ||
323 | |||
324 | #define H3600_ASIC2_ADC_MUX_CHANNEL_MASK 0x07 /* Low 3 bits sets channel. max = 4 */ | ||
325 | #define H3600_ASIC2_ADC_MUX_CLKEN ( 1 << 3 ) /* Enable clock */ | ||
326 | |||
327 | #define H3600_ASIC2_ADC_CSR_ADPS_MASK 0x0f /* Low 4 bits sets prescale, max = 8 */ | ||
328 | #define H3600_ASIC2_ADC_CSR_FREE_RUN ( 1 << 4 ) | ||
329 | #define H3600_ASIC2_ADC_CSR_INT_ENABLE ( 1 << 5 ) | ||
330 | #define H3600_ASIC2_ADC_CSR_START ( 1 << 6 ) /* Set to start conversion. Goes to 0 when done */ | ||
331 | #define H3600_ASIC2_ADC_CSR_ENABLE ( 1 << 7 ) /* 1:power up ADC, 0:power down */ | ||
332 | |||
333 | |||
334 | #define _H3800_ASIC2_INTR_Base 0x1600 | ||
335 | #define _H3800_ASIC2_INTR_MaskAndFlag 0x0000 /* R/(W) 8bits */ | ||
336 | #define _H3800_ASIC2_INTR_ClockPrescale 0x0004 /* R/(W) 5bits */ | ||
337 | #define _H3800_ASIC2_INTR_TimerSet 0x0008 /* R/(W) 8bits */ | ||
338 | |||
339 | #define H3800_ASIC2_INTR_MaskAndFlag H3800_ASIC2_OFFSET( u8, INTR, MaskAndFlag ) | ||
340 | #define H3800_ASIC2_INTR_ClockPrescale H3800_ASIC2_OFFSET( u8, INTR, ClockPrescale ) | ||
341 | #define H3800_ASIC2_INTR_TimerSet H3800_ASIC2_OFFSET( u8, INTR, TimerSet ) | ||
342 | |||
343 | #define H3800_ASIC2_INTR_GLOBAL_MASK ( 1 << 0 ) /* Global interrupt mask */ | ||
344 | #define H3800_ASIC2_INTR_POWER_ON_RESET ( 1 << 1 ) /* 01: Power on reset (bits 1 & 2 ) */ | ||
345 | #define H3800_ASIC2_INTR_EXTERNAL_RESET ( 2 << 1 ) /* 10: External reset (bits 1 & 2 ) */ | ||
346 | #define H3800_ASIC2_INTR_MASK_UART_0 ( 1 << 4 ) | ||
347 | #define H3800_ASIC2_INTR_MASK_UART_1 ( 1 << 5 ) | ||
348 | #define H3800_ASIC2_INTR_MASK_TIMER ( 1 << 6 ) | ||
349 | #define H3800_ASIC2_INTR_MASK_OWM ( 1 << 7 ) | ||
350 | |||
351 | #define H3800_ASIC2_INTR_CLOCK_PRESCALE 0x0f /* 4 bits, max 14 */ | ||
352 | #define H3800_ASIC2_INTR_SET ( 1 << 4 ) /* Time base enable */ | ||
353 | |||
354 | |||
355 | #define _H3800_ASIC2_OWM_Base 0x1800 | ||
356 | #define _H3800_ASIC2_OWM_Command 0x0000 /* R/W 4 bits command register */ | ||
357 | #define _H3800_ASIC2_OWM_Data 0x0004 /* R/W 8 bits, transmit / receive buffer */ | ||
358 | #define _H3800_ASIC2_OWM_Interrupt 0x0008 /* R/W Command register */ | ||
359 | #define _H3800_ASIC2_OWM_InterruptEnable 0x000c /* R/W Command register */ | ||
360 | #define _H3800_ASIC2_OWM_ClockDivisor 0x0010 /* R/W 5 bits of divisor and pre-scale */ | ||
361 | |||
362 | #define H3800_ASIC2_OWM_Command H3800_ASIC2_OFFSET( u8, OWM, Command ) | ||
363 | #define H3800_ASIC2_OWM_Data H3800_ASIC2_OFFSET( u8, OWM, Data ) | ||
364 | #define H3800_ASIC2_OWM_Interrupt H3800_ASIC2_OFFSET( u8, OWM, Interrupt ) | ||
365 | #define H3800_ASIC2_OWM_InterruptEnable H3800_ASIC2_OFFSET( u8, OWM, InterruptEnable ) | ||
366 | #define H3800_ASIC2_OWM_ClockDivisor H3800_ASIC2_OFFSET( u8, OWM, ClockDivisor ) | ||
367 | |||
368 | #define H3800_ASIC2_OWM_CMD_ONE_WIRE_RESET ( 1 << 0 ) /* Set to force reset on 1-wire bus */ | ||
369 | #define H3800_ASIC2_OWM_CMD_SRA ( 1 << 1 ) /* Set to switch to Search ROM accelerator mode */ | ||
370 | #define H3800_ASIC2_OWM_CMD_DQ_OUTPUT ( 1 << 2 ) /* Write only - forces bus low */ | ||
371 | #define H3800_ASIC2_OWM_CMD_DQ_INPUT ( 1 << 3 ) /* Read only - reflects state of bus */ | ||
372 | |||
373 | #define H3800_ASIC2_OWM_INT_PD ( 1 << 0 ) /* Presence detect */ | ||
374 | #define H3800_ASIC2_OWM_INT_PDR ( 1 << 1 ) /* Presence detect result */ | ||
375 | #define H3800_ASIC2_OWM_INT_TBE ( 1 << 2 ) /* Transmit buffer empty */ | ||
376 | #define H3800_ASIC2_OWM_INT_TEMT ( 1 << 3 ) /* Transmit shift register empty */ | ||
377 | #define H3800_ASIC2_OWM_INT_RBF ( 1 << 4 ) /* Receive buffer full */ | ||
378 | |||
379 | #define H3800_ASIC2_OWM_INTEN_EPD ( 1 << 0 ) /* Enable receive buffer full interrupt */ | ||
380 | #define H3800_ASIC2_OWM_INTEN_IAS ( 1 << 1 ) /* Enable transmit shift register empty interrupt */ | ||
381 | #define H3800_ASIC2_OWM_INTEN_ETBE ( 1 << 2 ) /* Enable transmit buffer empty interrupt */ | ||
382 | #define H3800_ASIC2_OWM_INTEN_ETMT ( 1 << 3 ) /* INTR active state */ | ||
383 | #define H3800_ASIC2_OWM_INTEN_ERBF ( 1 << 4 ) /* Enable presence detect interrupt */ | ||
384 | |||
385 | #define _H3800_ASIC2_FlashCtl_Base 0x1A00 | ||
386 | |||
387 | /****************************************************/ | ||
388 | /* H3800, ASIC #1 | ||
389 | * This ASIC is accesed through ASIC #2, and | ||
390 | * mapped into the 1c00 - 1f00 region | ||
391 | */ | ||
392 | |||
393 | #define H3800_ASIC1_OFFSET(s,x,y) \ | ||
394 | (*((volatile s *) (_H3800_ASIC2_Base + _H3800_ASIC1_ ## x ## _Base + (_H3800_ASIC1_ ## x ## _ ## y << 1)))) | ||
395 | |||
396 | #define _H3800_ASIC1_MMC_Base 0x1c00 | ||
397 | |||
398 | #define _H3800_ASIC1_MMC_StartStopClock 0x00 /* R/W 8bit */ | ||
399 | #define _H3800_ASIC1_MMC_Status 0x02 /* R See below, default 0x0040 */ | ||
400 | #define _H3800_ASIC1_MMC_ClockRate 0x04 /* R/W 8bit, low 3 bits are clock divisor */ | ||
401 | #define _H3800_ASIC1_MMC_SPIRegister 0x08 /* R/W 8bit, see below */ | ||
402 | #define _H3800_ASIC1_MMC_CmdDataCont 0x0a /* R/W 8bit, write to start MMC adapter */ | ||
403 | #define _H3800_ASIC1_MMC_ResponseTimeout 0x0c /* R/W 8bit, clocks before response timeout */ | ||
404 | #define _H3800_ASIC1_MMC_ReadTimeout 0x0e /* R/W 16bit, clocks before received data timeout */ | ||
405 | #define _H3800_ASIC1_MMC_BlockLength 0x10 /* R/W 10bit */ | ||
406 | #define _H3800_ASIC1_MMC_NumOfBlocks 0x12 /* R/W 16bit, in block mode, number of blocks */ | ||
407 | #define _H3800_ASIC1_MMC_InterruptMask 0x1a /* R/W 8bit */ | ||
408 | #define _H3800_ASIC1_MMC_CommandNumber 0x1c /* R/W 6 bits */ | ||
409 | #define _H3800_ASIC1_MMC_ArgumentH 0x1e /* R/W 16 bits */ | ||
410 | #define _H3800_ASIC1_MMC_ArgumentL 0x20 /* R/W 16 bits */ | ||
411 | #define _H3800_ASIC1_MMC_ResFifo 0x22 /* R 8 x 16 bits - contains response FIFO */ | ||
412 | #define _H3800_ASIC1_MMC_BufferPartFull 0x28 /* R/W 8 bits */ | ||
413 | |||
414 | #define H3800_ASIC1_MMC_StartStopClock H3800_ASIC1_OFFSET( u8, MMC, StartStopClock ) | ||
415 | #define H3800_ASIC1_MMC_Status H3800_ASIC1_OFFSET( u16, MMC, Status ) | ||
416 | #define H3800_ASIC1_MMC_ClockRate H3800_ASIC1_OFFSET( u8, MMC, ClockRate ) | ||
417 | #define H3800_ASIC1_MMC_SPIRegister H3800_ASIC1_OFFSET( u8, MMC, SPIRegister ) | ||
418 | #define H3800_ASIC1_MMC_CmdDataCont H3800_ASIC1_OFFSET( u8, MMC, CmdDataCont ) | ||
419 | #define H3800_ASIC1_MMC_ResponseTimeout H3800_ASIC1_OFFSET( u8, MMC, ResponseTimeout ) | ||
420 | #define H3800_ASIC1_MMC_ReadTimeout H3800_ASIC1_OFFSET( u16, MMC, ReadTimeout ) | ||
421 | #define H3800_ASIC1_MMC_BlockLength H3800_ASIC1_OFFSET( u16, MMC, BlockLength ) | ||
422 | #define H3800_ASIC1_MMC_NumOfBlocks H3800_ASIC1_OFFSET( u16, MMC, NumOfBlocks ) | ||
423 | #define H3800_ASIC1_MMC_InterruptMask H3800_ASIC1_OFFSET( u8, MMC, InterruptMask ) | ||
424 | #define H3800_ASIC1_MMC_CommandNumber H3800_ASIC1_OFFSET( u8, MMC, CommandNumber ) | ||
425 | #define H3800_ASIC1_MMC_ArgumentH H3800_ASIC1_OFFSET( u16, MMC, ArgumentH ) | ||
426 | #define H3800_ASIC1_MMC_ArgumentL H3800_ASIC1_OFFSET( u16, MMC, ArgumentL ) | ||
427 | #define H3800_ASIC1_MMC_ResFifo H3800_ASIC1_OFFSET( u16, MMC, ResFifo ) | ||
428 | #define H3800_ASIC1_MMC_BufferPartFull H3800_ASIC1_OFFSET( u8, MMC, BufferPartFull ) | ||
429 | |||
430 | #define H3800_ASIC1_MMC_STOP_CLOCK (1 << 0) /* Write to "StartStopClock" register */ | ||
431 | #define H3800_ASIC1_MMC_START_CLOCK (1 << 1) | ||
432 | |||
433 | #define H3800_ASIC1_MMC_STATUS_READ_TIMEOUT (1 << 0) | ||
434 | #define H3800_ASIC1_MMC_STATUS_RESPONSE_TIMEOUT (1 << 1) | ||
435 | #define H3800_ASIC1_MMC_STATUS_CRC_WRITE_ERROR (1 << 2) | ||
436 | #define H3800_ASIC1_MMC_STATUS_CRC_READ_ERROR (1 << 3) | ||
437 | #define H3800_ASIC1_MMC_STATUS_SPI_READ_ERROR (1 << 4) /* SPI data token error received */ | ||
438 | #define H3800_ASIC1_MMC_STATUS_CRC_RESPONSE_ERROR (1 << 5) | ||
439 | #define H3800_ASIC1_MMC_STATUS_FIFO_EMPTY (1 << 6) | ||
440 | #define H3800_ASIC1_MMC_STATUS_FIFO_FULL (1 << 7) | ||
441 | #define H3800_ASIC1_MMC_STATUS_CLOCK_ENABLE (1 << 8) /* MultiMediaCard clock stopped */ | ||
442 | #define H3800_ASIC1_MMC_STATUS_DATA_TRANSFER_DONE (1 << 11) /* Write operation, indicates transfer finished */ | ||
443 | #define H3800_ASIC1_MMC_STATUS_END_PROGRAM (1 << 12) /* End write and read operations */ | ||
444 | #define H3800_ASIC1_MMC_STATUS_END_COMMAND_RESPONSE (1 << 13) /* End command response */ | ||
445 | |||
446 | #define H3800_ASIC1_MMC_SPI_REG_SPI_ENABLE (1 << 0) /* Enables SPI mode */ | ||
447 | #define H3800_ASIC1_MMC_SPI_REG_CRC_ON (1 << 1) /* 1:turn on CRC */ | ||
448 | #define H3800_ASIC1_MMC_SPI_REG_SPI_CS_ENABLE (1 << 2) /* 1:turn on SPI CS */ | ||
449 | #define H3800_ASIC1_MMC_SPI_REG_CS_ADDRESS_MASK 0x38 /* Bits 3,4,5 are the SPI CS relative address */ | ||
450 | |||
451 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_FORMAT_NO_RESPONSE 0x00 | ||
452 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_FORMAT_R1 0x01 | ||
453 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_FORMAT_R2 0x02 | ||
454 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_FORMAT_R3 0x03 | ||
455 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_DATA_ENABLE (1 << 2) /* This command contains a data transfer */ | ||
456 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_WRITE (1 << 3) /* This data transfer is a write */ | ||
457 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_STREAM_MODE (1 << 4) /* This data transfer is in stream mode */ | ||
458 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_BUSY_BIT (1 << 5) /* Busy signal expected after current cmd */ | ||
459 | #define H3800_ASIC1_MMC_CMD_DATA_CONT_INITIALIZE (1 << 6) /* Enables the 80 bits for initializing card */ | ||
460 | |||
461 | #define H3800_ASIC1_MMC_INT_MASK_DATA_TRANSFER_DONE (1 << 0) | ||
462 | #define H3800_ASIC1_MMC_INT_MASK_PROGRAM_DONE (1 << 1) | ||
463 | #define H3800_ASIC1_MMC_INT_MASK_END_COMMAND_RESPONSE (1 << 2) | ||
464 | #define H3800_ASIC1_MMC_INT_MASK_BUFFER_READY (1 << 3) | ||
465 | |||
466 | #define H3800_ASIC1_MMC_BUFFER_PART_FULL (1 << 0) | ||
467 | |||
468 | /********* GPIO **********/ | ||
469 | |||
470 | #define _H3800_ASIC1_GPIO_Base 0x1e00 | ||
471 | |||
472 | #define _H3800_ASIC1_GPIO_Mask 0x30 /* R/W 0:don't mask, 1:mask interrupt */ | ||
473 | #define _H3800_ASIC1_GPIO_Direction 0x32 /* R/W 0:input, 1:output */ | ||
474 | #define _H3800_ASIC1_GPIO_Out 0x34 /* R/W 0:output low, 1:output high */ | ||
475 | #define _H3800_ASIC1_GPIO_TriggerType 0x36 /* R/W 0:level, 1:edge */ | ||
476 | #define _H3800_ASIC1_GPIO_EdgeTrigger 0x38 /* R/W 0:falling, 1:rising */ | ||
477 | #define _H3800_ASIC1_GPIO_LevelTrigger 0x3A /* R/W 0:low, 1:high level detect */ | ||
478 | #define _H3800_ASIC1_GPIO_LevelStatus 0x3C /* R/W 0:none, 1:detect */ | ||
479 | #define _H3800_ASIC1_GPIO_EdgeStatus 0x3E /* R/W 0:none, 1:detect */ | ||
480 | #define _H3800_ASIC1_GPIO_State 0x40 /* R See masks below (default 0) */ | ||
481 | #define _H3800_ASIC1_GPIO_Reset 0x42 /* R/W See masks below (default 0x04) */ | ||
482 | #define _H3800_ASIC1_GPIO_SleepMask 0x44 /* R/W 0:don't mask, 1:mask trigger in sleep mode */ | ||
483 | #define _H3800_ASIC1_GPIO_SleepDir 0x46 /* R/W direction 0:input, 1:output in sleep mode */ | ||
484 | #define _H3800_ASIC1_GPIO_SleepOut 0x48 /* R/W level 0:low, 1:high in sleep mode */ | ||
485 | #define _H3800_ASIC1_GPIO_Status 0x4A /* R Pin status */ | ||
486 | #define _H3800_ASIC1_GPIO_BattFaultDir 0x4C /* R/W direction 0:input, 1:output in batt_fault */ | ||
487 | #define _H3800_ASIC1_GPIO_BattFaultOut 0x4E /* R/W level 0:low, 1:high in batt_fault */ | ||
488 | |||
489 | #define H3800_ASIC1_GPIO_Mask H3800_ASIC1_OFFSET( u16, GPIO, Mask ) | ||
490 | #define H3800_ASIC1_GPIO_Direction H3800_ASIC1_OFFSET( u16, GPIO, Direction ) | ||
491 | #define H3800_ASIC1_GPIO_Out H3800_ASIC1_OFFSET( u16, GPIO, Out ) | ||
492 | #define H3800_ASIC1_GPIO_TriggerType H3800_ASIC1_OFFSET( u16, GPIO, TriggerType ) | ||
493 | #define H3800_ASIC1_GPIO_EdgeTrigger H3800_ASIC1_OFFSET( u16, GPIO, EdgeTrigger ) | ||
494 | #define H3800_ASIC1_GPIO_LevelTrigger H3800_ASIC1_OFFSET( u16, GPIO, LevelTrigger ) | ||
495 | #define H3800_ASIC1_GPIO_LevelStatus H3800_ASIC1_OFFSET( u16, GPIO, LevelStatus ) | ||
496 | #define H3800_ASIC1_GPIO_EdgeStatus H3800_ASIC1_OFFSET( u16, GPIO, EdgeStatus ) | ||
497 | #define H3800_ASIC1_GPIO_State H3800_ASIC1_OFFSET( u8, GPIO, State ) | ||
498 | #define H3800_ASIC1_GPIO_Reset H3800_ASIC1_OFFSET( u8, GPIO, Reset ) | ||
499 | #define H3800_ASIC1_GPIO_SleepMask H3800_ASIC1_OFFSET( u16, GPIO, SleepMask ) | ||
500 | #define H3800_ASIC1_GPIO_SleepDir H3800_ASIC1_OFFSET( u16, GPIO, SleepDir ) | ||
501 | #define H3800_ASIC1_GPIO_SleepOut H3800_ASIC1_OFFSET( u16, GPIO, SleepOut ) | ||
502 | #define H3800_ASIC1_GPIO_Status H3800_ASIC1_OFFSET( u16, GPIO, Status ) | ||
503 | #define H3800_ASIC1_GPIO_BattFaultDir H3800_ASIC1_OFFSET( u16, GPIO, BattFaultDir ) | ||
504 | #define H3800_ASIC1_GPIO_BattFaultOut H3800_ASIC1_OFFSET( u16, GPIO, BattFaultOut ) | ||
505 | |||
506 | #define H3800_ASIC1_GPIO_STATE_MASK (1 << 0) | ||
507 | #define H3800_ASIC1_GPIO_STATE_DIRECTION (1 << 1) | ||
508 | #define H3800_ASIC1_GPIO_STATE_OUT (1 << 2) | ||
509 | #define H3800_ASIC1_GPIO_STATE_TRIGGER_TYPE (1 << 3) | ||
510 | #define H3800_ASIC1_GPIO_STATE_EDGE_TRIGGER (1 << 4) | ||
511 | #define H3800_ASIC1_GPIO_STATE_LEVEL_TRIGGER (1 << 5) | ||
512 | |||
513 | #define H3800_ASIC1_GPIO_RESET_SOFTWARE (1 << 0) | ||
514 | #define H3800_ASIC1_GPIO_RESET_AUTO_SLEEP (1 << 1) | ||
515 | #define H3800_ASIC1_GPIO_RESET_FIRST_PWR_ON (1 << 2) | ||
516 | |||
517 | /* These are all outputs */ | ||
518 | #define GPIO_H3800_ASIC1_IR_ON_N (1 << 0) /* Apply power to the IR Module */ | ||
519 | #define GPIO_H3800_ASIC1_SD_PWR_ON (1 << 1) /* Secure Digital power on */ | ||
520 | #define GPIO_H3800_ASIC1_RS232_ON (1 << 2) /* Turn on power to the RS232 chip ? */ | ||
521 | #define GPIO_H3800_ASIC1_PULSE_GEN (1 << 3) /* Goes to speaker / earphone */ | ||
522 | #define GPIO_H3800_ASIC1_CH_TIMER (1 << 4) /* */ | ||
523 | #define GPIO_H3800_ASIC1_LCD_5V_ON (1 << 5) /* Enables LCD_5V */ | ||
524 | #define GPIO_H3800_ASIC1_LCD_ON (1 << 6) /* Enables LCD_3V */ | ||
525 | #define GPIO_H3800_ASIC1_LCD_PCI (1 << 7) /* Connects to PDWN on LCD controller */ | ||
526 | #define GPIO_H3800_ASIC1_VGH_ON (1 << 8) /* Drives VGH on the LCD (+9??) */ | ||
527 | #define GPIO_H3800_ASIC1_VGL_ON (1 << 9) /* Drivers VGL on the LCD (-6??) */ | ||
528 | #define GPIO_H3800_ASIC1_FL_PWR_ON (1 << 10) /* Frontlight power on */ | ||
529 | #define GPIO_H3800_ASIC1_BT_PWR_ON (1 << 11) /* Bluetooth power on */ | ||
530 | #define GPIO_H3800_ASIC1_SPK_ON (1 << 12) /* */ | ||
531 | #define GPIO_H3800_ASIC1_EAR_ON_N (1 << 13) /* */ | ||
532 | #define GPIO_H3800_ASIC1_AUD_PWR_ON (1 << 14) /* */ | ||
533 | |||
534 | /* Write enable for the flash */ | ||
535 | |||
536 | #define _H3800_ASIC1_FlashWP_Base 0x1F00 | ||
537 | #define _H3800_ASIC1_FlashWP_VPP_ON 0x00 /* R 1: write, 0: protect */ | ||
538 | #define H3800_ASIC1_FlashWP_VPP_ON H3800_ASIC1_OFFSET( u8, FlashWP, VPP_ON ) | ||
539 | 76 | ||
540 | #endif /* _INCLUDE_H3600_GPIO_H_ */ | 77 | #endif /* _INCLUDE_H3600_GPIO_H_ */ |
diff --git a/arch/arm/mach-sa1100/include/mach/irqs.h b/arch/arm/mach-sa1100/include/mach/irqs.h index 0cb36609b3ac..ae81f80b0cf9 100644 --- a/arch/arm/mach-sa1100/include/mach/irqs.h +++ b/arch/arm/mach-sa1100/include/mach/irqs.h | |||
@@ -153,8 +153,6 @@ | |||
153 | */ | 153 | */ |
154 | #ifdef CONFIG_SA1111 | 154 | #ifdef CONFIG_SA1111 |
155 | #define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1) | 155 | #define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1) |
156 | #elif defined(CONFIG_SA1100_H3800) | ||
157 | #define NR_IRQS (IRQ_BOARD_END) | ||
158 | #elif defined(CONFIG_SHARP_LOCOMO) | 156 | #elif defined(CONFIG_SHARP_LOCOMO) |
159 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) | 157 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) |
160 | #else | 158 | #else |
@@ -175,23 +173,3 @@ | |||
175 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) | 173 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) |
176 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) | 174 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) |
177 | 175 | ||
178 | /* H3800-specific IRQs (CONFIG_SA1100_H3800) */ | ||
179 | #define H3800_KPIO_IRQ_START (IRQ_BOARD_START) | ||
180 | #define IRQ_H3800_KEY (IRQ_BOARD_START + 0) | ||
181 | #define IRQ_H3800_SPI (IRQ_BOARD_START + 1) | ||
182 | #define IRQ_H3800_OWM (IRQ_BOARD_START + 2) | ||
183 | #define IRQ_H3800_ADC (IRQ_BOARD_START + 3) | ||
184 | #define IRQ_H3800_UART_0 (IRQ_BOARD_START + 4) | ||
185 | #define IRQ_H3800_UART_1 (IRQ_BOARD_START + 5) | ||
186 | #define IRQ_H3800_TIMER_0 (IRQ_BOARD_START + 6) | ||
187 | #define IRQ_H3800_TIMER_1 (IRQ_BOARD_START + 7) | ||
188 | #define IRQ_H3800_TIMER_2 (IRQ_BOARD_START + 8) | ||
189 | #define H3800_KPIO_IRQ_COUNT 9 | ||
190 | |||
191 | #define H3800_GPIO_IRQ_START (IRQ_BOARD_START + 9) | ||
192 | #define IRQ_H3800_PEN (IRQ_BOARD_START + 9) | ||
193 | #define IRQ_H3800_SD_DETECT (IRQ_BOARD_START + 10) | ||
194 | #define IRQ_H3800_EAR_IN (IRQ_BOARD_START + 11) | ||
195 | #define IRQ_H3800_USB_DETECT (IRQ_BOARD_START + 12) | ||
196 | #define IRQ_H3800_SD_CON_SLT (IRQ_BOARD_START + 13) | ||
197 | #define H3800_GPIO_IRQ_COUNT 5 | ||
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index 81848aa96424..fd776bb666cd 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c | |||
@@ -226,12 +226,22 @@ static struct platform_device jornada_ssp_device = { | |||
226 | .id = -1, | 226 | .id = -1, |
227 | }; | 227 | }; |
228 | 228 | ||
229 | static struct platform_device jornada_kbd_device = { | ||
230 | .name = "jornada720_kbd", | ||
231 | .id = -1, | ||
232 | }; | ||
233 | |||
234 | static struct platform_device jornada_ts_device = { | ||
235 | .name = "jornada_ts", | ||
236 | .id = -1, | ||
237 | }; | ||
238 | |||
229 | static struct platform_device *devices[] __initdata = { | 239 | static struct platform_device *devices[] __initdata = { |
230 | &sa1111_device, | 240 | &sa1111_device, |
231 | #ifdef CONFIG_SA1100_JORNADA720_SSP | ||
232 | &jornada_ssp_device, | 241 | &jornada_ssp_device, |
233 | #endif | ||
234 | &s1d13xxxfb_device, | 242 | &s1d13xxxfb_device, |
243 | &jornada_kbd_device, | ||
244 | &jornada_ts_device, | ||
235 | }; | 245 | }; |
236 | 246 | ||
237 | static int __init jornada720_init(void) | 247 | static int __init jornada720_init(void) |
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c index a23fd3d0163a..4f3a26512599 100644 --- a/arch/arm/mach-shark/core.c +++ b/arch/arm/mach-shark/core.c | |||
@@ -16,12 +16,28 @@ | |||
16 | #include <asm/leds.h> | 16 | #include <asm/leds.h> |
17 | #include <asm/param.h> | 17 | #include <asm/param.h> |
18 | 18 | ||
19 | #include <mach/hardware.h> | ||
20 | |||
21 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
22 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
23 | #include <asm/mach/time.h> | 21 | #include <asm/mach/time.h> |
24 | 22 | ||
23 | #define IO_BASE 0xe0000000 | ||
24 | #define IO_SIZE 0x08000000 | ||
25 | #define IO_START 0x40000000 | ||
26 | #define ROMCARD_SIZE 0x08000000 | ||
27 | #define ROMCARD_START 0x10000000 | ||
28 | |||
29 | void arch_reset(char mode) | ||
30 | { | ||
31 | short temp; | ||
32 | local_irq_disable(); | ||
33 | /* Reset the Machine via pc[3] of the sequoia chipset */ | ||
34 | outw(0x09,0x24); | ||
35 | temp=inw(0x26); | ||
36 | temp = temp | (1<<3) | (1<<10); | ||
37 | outw(0x09,0x24); | ||
38 | outw(temp,0x26); | ||
39 | } | ||
40 | |||
25 | static struct plat_serial8250_port serial_platform_data[] = { | 41 | static struct plat_serial8250_port serial_platform_data[] = { |
26 | { | 42 | { |
27 | .iobase = 0x3f8, | 43 | .iobase = 0x3f8, |
@@ -50,14 +66,38 @@ static struct platform_device serial_device = { | |||
50 | }, | 66 | }, |
51 | }; | 67 | }; |
52 | 68 | ||
69 | static struct resource rtc_resources[] = { | ||
70 | [0] = { | ||
71 | .start = 0x70, | ||
72 | .end = 0x73, | ||
73 | .flags = IORESOURCE_IO, | ||
74 | }, | ||
75 | [1] = { | ||
76 | .start = IRQ_ISA_RTC_ALARM, | ||
77 | .end = IRQ_ISA_RTC_ALARM, | ||
78 | .flags = IORESOURCE_IRQ, | ||
79 | } | ||
80 | }; | ||
81 | |||
82 | static struct platform_device rtc_device = { | ||
83 | .name = "rtc_cmos", | ||
84 | .id = -1, | ||
85 | .resource = rtc_resources, | ||
86 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
87 | }; | ||
88 | |||
53 | static int __init shark_init(void) | 89 | static int __init shark_init(void) |
54 | { | 90 | { |
55 | int ret; | 91 | int ret; |
56 | 92 | ||
57 | if (machine_is_shark()) | 93 | if (machine_is_shark()) |
94 | { | ||
95 | ret = platform_device_register(&rtc_device); | ||
96 | if (ret) printk(KERN_ERR "Unable to register RTC device: %d\n", ret); | ||
58 | ret = platform_device_register(&serial_device); | 97 | ret = platform_device_register(&serial_device); |
59 | 98 | if (ret) printk(KERN_ERR "Unable to register Serial device: %d\n", ret); | |
60 | return ret; | 99 | } |
100 | return 0; | ||
61 | } | 101 | } |
62 | 102 | ||
63 | arch_initcall(shark_init); | 103 | arch_initcall(shark_init); |
diff --git a/arch/arm/mach-shark/dma.c b/arch/arm/mach-shark/dma.c index 6774b8d5d13d..10b5b8b3272a 100644 --- a/arch/arm/mach-shark/dma.c +++ b/arch/arm/mach-shark/dma.c | |||
@@ -13,9 +13,11 @@ | |||
13 | #include <asm/dma.h> | 13 | #include <asm/dma.h> |
14 | #include <asm/mach/dma.h> | 14 | #include <asm/mach/dma.h> |
15 | 15 | ||
16 | void __init arch_dma_init(dma_t *dma) | 16 | static int __init shark_dma_init(void) |
17 | { | 17 | { |
18 | #ifdef CONFIG_ISA_DMA | 18 | #ifdef CONFIG_ISA_DMA |
19 | isa_init_dma(dma); | 19 | isa_init_dma(); |
20 | #endif | 20 | #endif |
21 | return 0; | ||
21 | } | 22 | } |
23 | core_initcall(shark_dma_init); | ||
diff --git a/arch/arm/mach-shark/include/mach/debug-macro.S b/arch/arm/mach-shark/include/mach/debug-macro.S index 0836cb78b29a..f97a7626bd58 100644 --- a/arch/arm/mach-shark/include/mach/debug-macro.S +++ b/arch/arm/mach-shark/include/mach/debug-macro.S | |||
@@ -27,5 +27,3 @@ | |||
27 | bne 1001b | 27 | bne 1001b |
28 | .endm | 28 | .endm |
29 | 29 | ||
30 | .macro waituart,rd,rx | ||
31 | .endm | ||
diff --git a/arch/arm/mach-shark/include/mach/framebuffer.h b/arch/arm/mach-shark/include/mach/framebuffer.h new file mode 100644 index 000000000000..84a5bf6e5ba3 --- /dev/null +++ b/arch/arm/mach-shark/include/mach/framebuffer.h | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-shark/include/mach/framebuffer.h | ||
3 | * | ||
4 | * by Alexander Schulz | ||
5 | * | ||
6 | */ | ||
7 | |||
8 | #ifndef __ASM_ARCH_FRAMEBUFFER_H | ||
9 | #define __ASM_ARCH_FRAMEBUFFER_H | ||
10 | |||
11 | /* defines for the Framebuffer */ | ||
12 | #define FB_START 0x06000000 | ||
13 | #define FB_SIZE 0x01000000 | ||
14 | |||
15 | #endif | ||
16 | |||
diff --git a/arch/arm/mach-shark/include/mach/hardware.h b/arch/arm/mach-shark/include/mach/hardware.h index 01bf76099ce5..94d84b27a0cb 100644 --- a/arch/arm/mach-shark/include/mach/hardware.h +++ b/arch/arm/mach-shark/include/mach/hardware.h | |||
@@ -10,35 +10,8 @@ | |||
10 | #ifndef __ASM_ARCH_HARDWARE_H | 10 | #ifndef __ASM_ARCH_HARDWARE_H |
11 | #define __ASM_ARCH_HARDWARE_H | 11 | #define __ASM_ARCH_HARDWARE_H |
12 | 12 | ||
13 | #ifndef __ASSEMBLY__ | ||
14 | |||
15 | /* | ||
16 | * Mapping areas | ||
17 | */ | ||
18 | #define IO_BASE 0xe0000000 | ||
19 | |||
20 | #else | ||
21 | |||
22 | #define IO_BASE 0 | ||
23 | |||
24 | #endif | ||
25 | |||
26 | #define IO_SIZE 0x08000000 | ||
27 | #define IO_START 0x40000000 | ||
28 | #define ROMCARD_SIZE 0x08000000 | ||
29 | #define ROMCARD_START 0x10000000 | ||
30 | |||
31 | |||
32 | /* defines for the Framebuffer */ | ||
33 | #define FB_START 0x06000000 | ||
34 | #define FB_SIZE 0x01000000 | ||
35 | |||
36 | #define UNCACHEABLE_ADDR 0xdf010000 | 13 | #define UNCACHEABLE_ADDR 0xdf010000 |
37 | 14 | ||
38 | #define SEQUOIA_LED_GREEN (1<<6) | ||
39 | #define SEQUOIA_LED_AMBER (1<<5) | ||
40 | #define SEQUOIA_LED_BACK (1<<7) | ||
41 | |||
42 | #define pcibios_assign_all_busses() 1 | 15 | #define pcibios_assign_all_busses() 1 |
43 | 16 | ||
44 | #define PCIBIOS_MIN_IO 0x6000 | 17 | #define PCIBIOS_MIN_IO 0x6000 |
diff --git a/arch/arm/mach-shark/include/mach/io.h b/arch/arm/mach-shark/include/mach/io.h index c5cee829fc87..9ccbcecc430b 100644 --- a/arch/arm/mach-shark/include/mach/io.h +++ b/arch/arm/mach-shark/include/mach/io.h | |||
@@ -11,10 +11,10 @@ | |||
11 | #ifndef __ASM_ARM_ARCH_IO_H | 11 | #ifndef __ASM_ARM_ARCH_IO_H |
12 | #define __ASM_ARM_ARCH_IO_H | 12 | #define __ASM_ARM_ARCH_IO_H |
13 | 13 | ||
14 | #define PCIO_BASE 0xe0000000 | 14 | #define IO_SPACE_LIMIT 0xffffffff |
15 | #define IO_SPACE_LIMIT 0xffffffff | ||
16 | 15 | ||
17 | #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) | 16 | #define __io(a) ((void __iomem *)(0xe0000000 + (a))) |
18 | #define __mem_pci(addr) (addr) | 17 | |
18 | #define __mem_pci(addr) (addr) | ||
19 | 19 | ||
20 | #endif | 20 | #endif |
diff --git a/arch/arm/mach-shark/include/mach/irqs.h b/arch/arm/mach-shark/include/mach/irqs.h index 0586acd7cdd5..c8e8a4e1f61a 100644 --- a/arch/arm/mach-shark/include/mach/irqs.h +++ b/arch/arm/mach-shark/include/mach/irqs.h | |||
@@ -7,7 +7,7 @@ | |||
7 | #define NR_IRQS 16 | 7 | #define NR_IRQS 16 |
8 | 8 | ||
9 | #define IRQ_ISA_KEYBOARD 1 | 9 | #define IRQ_ISA_KEYBOARD 1 |
10 | #define RTC_IRQ 8 | 10 | #define IRQ_ISA_RTC_ALARM 8 |
11 | #define I8042_KBD_IRQ 1 | 11 | #define I8042_KBD_IRQ 1 |
12 | #define I8042_AUX_IRQ 12 | 12 | #define I8042_AUX_IRQ 12 |
13 | #define IRQ_HARDDISK 14 | 13 | #define IRQ_HARDDISK 14 |
diff --git a/arch/arm/mach-shark/include/mach/isa-dma.h b/arch/arm/mach-shark/include/mach/isa-dma.h index 864298ff3927..96c43b8f8dda 100644 --- a/arch/arm/mach-shark/include/mach/isa-dma.h +++ b/arch/arm/mach-shark/include/mach/isa-dma.h | |||
@@ -6,10 +6,6 @@ | |||
6 | #ifndef __ASM_ARCH_DMA_H | 6 | #ifndef __ASM_ARCH_DMA_H |
7 | #define __ASM_ARCH_DMA_H | 7 | #define __ASM_ARCH_DMA_H |
8 | 8 | ||
9 | /* Use only the lowest 4MB, nothing else works. | ||
10 | * The rest is not DMAable. See dev / .properties | ||
11 | * in OpenFirmware. | ||
12 | */ | ||
13 | #define MAX_DMA_CHANNELS 8 | 9 | #define MAX_DMA_CHANNELS 8 |
14 | #define DMA_ISA_CASCADE 4 | 10 | #define DMA_ISA_CASCADE 4 |
15 | 11 | ||
diff --git a/arch/arm/mach-shark/include/mach/memory.h b/arch/arm/mach-shark/include/mach/memory.h index c5ab038925d6..3053e5b7f168 100644 --- a/arch/arm/mach-shark/include/mach/memory.h +++ b/arch/arm/mach-shark/include/mach/memory.h | |||
@@ -23,6 +23,7 @@ static inline void __arch_adjust_zones(int node, unsigned long *zone_size, unsig | |||
23 | { | 23 | { |
24 | if (node != 0) return; | 24 | if (node != 0) return; |
25 | /* Only the first 4 MB (=1024 Pages) are usable for DMA */ | 25 | /* Only the first 4 MB (=1024 Pages) are usable for DMA */ |
26 | /* See dev / -> .properties in OpenFirmware. */ | ||
26 | zone_size[1] = zone_size[0] - 1024; | 27 | zone_size[1] = zone_size[0] - 1024; |
27 | zone_size[0] = 1024; | 28 | zone_size[0] = 1024; |
28 | zhole_size[1] = zhole_size[0]; | 29 | zhole_size[1] = zhole_size[0]; |
diff --git a/arch/arm/mach-shark/include/mach/system.h b/arch/arm/mach-shark/include/mach/system.h index e45bd734a03e..0752ca29971a 100644 --- a/arch/arm/mach-shark/include/mach/system.h +++ b/arch/arm/mach-shark/include/mach/system.h | |||
@@ -6,20 +6,8 @@ | |||
6 | #ifndef __ASM_ARCH_SYSTEM_H | 6 | #ifndef __ASM_ARCH_SYSTEM_H |
7 | #define __ASM_ARCH_SYSTEM_H | 7 | #define __ASM_ARCH_SYSTEM_H |
8 | 8 | ||
9 | #include <linux/io.h> | 9 | /* Found in arch/mach-shark/core.c */ |
10 | 10 | extern void arch_reset(char mode); | |
11 | static void arch_reset(char mode) | ||
12 | { | ||
13 | short temp; | ||
14 | local_irq_disable(); | ||
15 | /* Reset the Machine via pc[3] of the sequoia chipset */ | ||
16 | outw(0x09,0x24); | ||
17 | temp=inw(0x26); | ||
18 | temp = temp | (1<<3) | (1<<10); | ||
19 | outw(0x09,0x24); | ||
20 | outw(temp,0x26); | ||
21 | |||
22 | } | ||
23 | 11 | ||
24 | static inline void arch_idle(void) | 12 | static inline void arch_idle(void) |
25 | { | 13 | { |
diff --git a/arch/arm/mach-shark/include/mach/uncompress.h b/arch/arm/mach-shark/include/mach/uncompress.h index 3725e1633418..22ccab4c3c5e 100644 --- a/arch/arm/mach-shark/include/mach/uncompress.h +++ b/arch/arm/mach-shark/include/mach/uncompress.h | |||
@@ -11,7 +11,7 @@ | |||
11 | 11 | ||
12 | static inline void putc(int c) | 12 | static inline void putc(int c) |
13 | { | 13 | { |
14 | int t; | 14 | volatile int t; |
15 | 15 | ||
16 | SERIAL_BASE[0] = c; | 16 | SERIAL_BASE[0] = c; |
17 | t=0x10000; | 17 | t=0x10000; |
diff --git a/arch/arm/mach-shark/leds.c b/arch/arm/mach-shark/leds.c index 8bd8d6bb4d92..c9e32de4adf9 100644 --- a/arch/arm/mach-shark/leds.c +++ b/arch/arm/mach-shark/leds.c | |||
@@ -22,12 +22,16 @@ | |||
22 | #include <linux/ioport.h> | 22 | #include <linux/ioport.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | ||
26 | #include <asm/leds.h> | 25 | #include <asm/leds.h> |
27 | #include <asm/system.h> | 26 | #include <asm/system.h> |
28 | 27 | ||
29 | #define LED_STATE_ENABLED 1 | 28 | #define LED_STATE_ENABLED 1 |
30 | #define LED_STATE_CLAIMED 2 | 29 | #define LED_STATE_CLAIMED 2 |
30 | |||
31 | #define SEQUOIA_LED_GREEN (1<<6) | ||
32 | #define SEQUOIA_LED_AMBER (1<<5) | ||
33 | #define SEQUOIA_LED_BACK (1<<7) | ||
34 | |||
31 | static char led_state; | 35 | static char led_state; |
32 | static short hw_led_state; | 36 | static short hw_led_state; |
33 | static short saved_state; | 37 | static short saved_state; |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 1c43494f5c42..565776680d8c 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -335,11 +335,25 @@ static struct resource versatile_i2c_resource = { | |||
335 | 335 | ||
336 | static struct platform_device versatile_i2c_device = { | 336 | static struct platform_device versatile_i2c_device = { |
337 | .name = "versatile-i2c", | 337 | .name = "versatile-i2c", |
338 | .id = -1, | 338 | .id = 0, |
339 | .num_resources = 1, | 339 | .num_resources = 1, |
340 | .resource = &versatile_i2c_resource, | 340 | .resource = &versatile_i2c_resource, |
341 | }; | 341 | }; |
342 | 342 | ||
343 | static struct i2c_board_info versatile_i2c_board_info[] = { | ||
344 | { | ||
345 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | ||
346 | .type = "ds1338", | ||
347 | }, | ||
348 | }; | ||
349 | |||
350 | static int __init versatile_i2c_init(void) | ||
351 | { | ||
352 | return i2c_register_board_info(0, versatile_i2c_board_info, | ||
353 | ARRAY_SIZE(versatile_i2c_board_info)); | ||
354 | } | ||
355 | arch_initcall(versatile_i2c_init); | ||
356 | |||
343 | #define VERSATILE_SYSMCI (__io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_MCI_OFFSET) | 357 | #define VERSATILE_SYSMCI (__io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_MCI_OFFSET) |
344 | 358 | ||
345 | unsigned int mmc_status(struct device *dev) | 359 | unsigned int mmc_status(struct device *dev) |
diff --git a/arch/arm/mach-w90x900/cpu.h b/arch/arm/mach-w90x900/cpu.h index 40ff40845df0..de29ddcb9459 100644 --- a/arch/arm/mach-w90x900/cpu.h +++ b/arch/arm/mach-w90x900/cpu.h | |||
@@ -43,35 +43,16 @@ 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(int xtal); |
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 sys_timer w90x900_timer; | 47 | extern struct sys_timer w90x900_timer; |
47 | 48 | ||
48 | #define W90X900_RES(name) \ | 49 | #define W90X900_8250PORT(name) \ |
49 | struct resource w90x900_##name##_resource[] = { \ | 50 | { \ |
50 | [0] = { \ | 51 | .membase = name##_BA, \ |
51 | .start = name##_PA, \ | 52 | .mapbase = name##_PA, \ |
52 | .end = name##_PA + 0x0ff, \ | 53 | .irq = IRQ_##name, \ |
53 | .flags = IORESOURCE_MEM, \ | 54 | .uartclk = 11313600, \ |
54 | }, \ | 55 | .regshift = 2, \ |
55 | [1] = { \ | 56 | .iotype = UPIO_MEM, \ |
56 | .start = IRQ_##name, \ | 57 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, \ |
57 | .end = IRQ_##name, \ | ||
58 | .flags = IORESOURCE_IRQ, \ | ||
59 | } \ | ||
60 | } | ||
61 | |||
62 | #define W90X900_DEVICE(devname, regname, devid, platdevname) \ | ||
63 | struct platform_device w90x900_##devname = { \ | ||
64 | .name = platdevname, \ | ||
65 | .id = devid, \ | ||
66 | .num_resources = ARRAY_SIZE(w90x900_##regname##_resource), \ | ||
67 | .resource = w90x900_##regname##_resource, \ | ||
68 | } | ||
69 | |||
70 | #define W90X900_UARTCFG(port, flag, uc, ulc, ufc) \ | ||
71 | { \ | ||
72 | .hwport = port, \ | ||
73 | .flags = flag, \ | ||
74 | .ucon = uc, \ | ||
75 | .ulcon = ulc, \ | ||
76 | .ufcon = ufc, \ | ||
77 | } | 58 | } |
diff --git a/arch/arm/mach-w90x900/mach-w90p910evb.c b/arch/arm/mach-w90x900/mach-w90p910evb.c index 9ebc93f48530..726ff6798a56 100644 --- a/arch/arm/mach-w90x900/mach-w90p910evb.c +++ b/arch/arm/mach-w90x900/mach-w90p910evb.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/timer.h> | 22 | #include <linux/timer.h> |
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/mtd/physmap.h> | ||
25 | 26 | ||
26 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
@@ -32,28 +33,67 @@ | |||
32 | #include <mach/map.h> | 33 | #include <mach/map.h> |
33 | 34 | ||
34 | #include "cpu.h" | 35 | #include "cpu.h" |
36 | /*w90p910 evb norflash driver data */ | ||
35 | 37 | ||
36 | static struct map_desc w90p910_iodesc[] __initdata = { | 38 | #define W90P910_FLASH_BASE 0xA0000000 |
39 | #define W90P910_FLASH_SIZE 0x400000 | ||
40 | |||
41 | static struct mtd_partition w90p910_flash_partitions[] = { | ||
42 | { | ||
43 | .name = "NOR Partition 1 for kernel (960K)", | ||
44 | .size = 0xF0000, | ||
45 | .offset = 0x10000, | ||
46 | }, | ||
47 | { | ||
48 | .name = "NOR Partition 2 for image (1M)", | ||
49 | .size = 0x100000, | ||
50 | .offset = 0x100000, | ||
51 | }, | ||
52 | { | ||
53 | .name = "NOR Partition 3 for user (2M)", | ||
54 | .size = 0x200000, | ||
55 | .offset = 0x00200000, | ||
56 | } | ||
37 | }; | 57 | }; |
38 | 58 | ||
39 | static struct w90x900_uartcfg w90p910_uartcfgs[] = { | 59 | static struct physmap_flash_data w90p910_flash_data = { |
40 | W90X900_UARTCFG(0, 0, 0, 0, 0), | 60 | .width = 2, |
41 | W90X900_UARTCFG(1, 0, 0, 0, 0), | 61 | .parts = w90p910_flash_partitions, |
42 | W90X900_UARTCFG(2, 0, 0, 0, 0), | 62 | .nr_parts = ARRAY_SIZE(w90p910_flash_partitions), |
43 | W90X900_UARTCFG(3, 0, 0, 0, 0), | 63 | }; |
44 | W90X900_UARTCFG(4, 0, 0, 0, 0), | 64 | |
65 | static struct resource w90p910_flash_resources[] = { | ||
66 | { | ||
67 | .start = W90P910_FLASH_BASE, | ||
68 | .end = W90P910_FLASH_BASE + W90P910_FLASH_SIZE - 1, | ||
69 | .flags = IORESOURCE_MEM, | ||
70 | } | ||
71 | }; | ||
72 | |||
73 | static struct platform_device w90p910_flash_device = { | ||
74 | .name = "physmap-flash", | ||
75 | .id = 0, | ||
76 | .dev = { | ||
77 | .platform_data = &w90p910_flash_data, | ||
78 | }, | ||
79 | .resource = w90p910_flash_resources, | ||
80 | .num_resources = ARRAY_SIZE(w90p910_flash_resources), | ||
81 | }; | ||
82 | |||
83 | static struct map_desc w90p910_iodesc[] __initdata = { | ||
45 | }; | 84 | }; |
46 | 85 | ||
47 | /*Here should be your evb resourse,such as LCD*/ | 86 | /*Here should be your evb resourse,such as LCD*/ |
48 | 87 | ||
49 | static struct platform_device *w90p910evb_dev[] __initdata = { | 88 | static struct platform_device *w90p910evb_dev[] __initdata = { |
89 | &w90p910_serial_device, | ||
90 | &w90p910_flash_device, | ||
50 | }; | 91 | }; |
51 | 92 | ||
52 | static void __init w90p910evb_map_io(void) | 93 | static void __init w90p910evb_map_io(void) |
53 | { | 94 | { |
54 | w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc)); | 95 | w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc)); |
55 | w90p910_init_clocks(0); | 96 | w90p910_init_clocks(0); |
56 | w90p910_init_uarts(w90p910_uartcfgs, ARRAY_SIZE(w90p910_uartcfgs)); | ||
57 | } | 97 | } |
58 | 98 | ||
59 | static void __init w90p910evb_init(void) | 99 | static void __init w90p910evb_init(void) |
diff --git a/arch/arm/mach-w90x900/w90p910.c b/arch/arm/mach-w90x900/w90p910.c index aa783bc94310..2bcbaa681b99 100644 --- a/arch/arm/mach-w90x900/w90p910.c +++ b/arch/arm/mach-w90x900/w90p910.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/init.h> | 25 | #include <linux/init.h> |
26 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | #include <linux/serial_8250.h> | ||
28 | 29 | ||
29 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
@@ -36,12 +37,6 @@ | |||
36 | 37 | ||
37 | #include "cpu.h" | 38 | #include "cpu.h" |
38 | 39 | ||
39 | /*W90P910 has five uarts*/ | ||
40 | |||
41 | #define MAX_UART_COUNT 5 | ||
42 | static int uart_count; | ||
43 | static struct platform_device *uart_devs[MAX_UART_COUNT-1]; | ||
44 | |||
45 | /* Initial IO mappings */ | 40 | /* Initial IO mappings */ |
46 | 41 | ||
47 | static struct map_desc w90p910_iodesc[] __initdata = { | 42 | static struct map_desc w90p910_iodesc[] __initdata = { |
@@ -53,48 +48,19 @@ static struct map_desc w90p910_iodesc[] __initdata = { | |||
53 | /*IODESC_ENT(LCD),*/ | 48 | /*IODESC_ENT(LCD),*/ |
54 | }; | 49 | }; |
55 | 50 | ||
56 | /*Init the dev resource*/ | 51 | /* Initial serial platform data */ |
57 | |||
58 | static W90X900_RES(UART0); | ||
59 | static W90X900_RES(UART1); | ||
60 | static W90X900_RES(UART2); | ||
61 | static W90X900_RES(UART3); | ||
62 | static W90X900_RES(UART4); | ||
63 | static W90X900_DEVICE(uart0, UART0, 0, "w90x900-uart"); | ||
64 | static W90X900_DEVICE(uart1, UART1, 1, "w90x900-uart"); | ||
65 | static W90X900_DEVICE(uart2, UART2, 2, "w90x900-uart"); | ||
66 | static W90X900_DEVICE(uart3, UART3, 3, "w90x900-uart"); | ||
67 | static W90X900_DEVICE(uart4, UART4, 4, "w90x900-uart"); | ||
68 | |||
69 | static struct platform_device *uart_devices[] __initdata = { | ||
70 | &w90x900_uart0, | ||
71 | &w90x900_uart1, | ||
72 | &w90x900_uart2, | ||
73 | &w90x900_uart3, | ||
74 | &w90x900_uart4 | ||
75 | }; | ||
76 | 52 | ||
77 | /*Init W90P910 uart device*/ | 53 | struct plat_serial8250_port w90p910_uart_data[] = { |
54 | W90X900_8250PORT(UART0), | ||
55 | }; | ||
78 | 56 | ||
79 | void __init w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no) | 57 | struct platform_device w90p910_serial_device = { |
80 | { | 58 | .name = "serial8250", |
81 | struct platform_device *platdev; | 59 | .id = PLAT8250_DEV_PLATFORM, |
82 | int uart, uartdev; | 60 | .dev = { |
83 | 61 | .platform_data = w90p910_uart_data, | |
84 | /*By min() to judge count of uart be used indeed*/ | 62 | }, |
85 | 63 | }; | |
86 | uartdev = ARRAY_SIZE(uart_devices); | ||
87 | no = min(uartdev, no); | ||
88 | |||
89 | for (uart = 0; uart < no; uart++, cfg++) { | ||
90 | if (cfg->hwport != uart) | ||
91 | printk(KERN_ERR "w90x900_uartcfg[%d] error\n", uart); | ||
92 | platdev = uart_devices[cfg->hwport]; | ||
93 | uart_devs[uart] = platdev; | ||
94 | platdev->dev.platform_data = cfg; | ||
95 | } | ||
96 | uart_count = uart; | ||
97 | } | ||
98 | 64 | ||
99 | /*Init W90P910 evb io*/ | 65 | /*Init W90P910 evb io*/ |
100 | 66 | ||
@@ -122,13 +88,6 @@ static int __init w90p910_init_cpu(void) | |||
122 | 88 | ||
123 | static int __init w90x900_arch_init(void) | 89 | static int __init w90x900_arch_init(void) |
124 | { | 90 | { |
125 | int ret; | 91 | return w90p910_init_cpu(); |
126 | |||
127 | ret = w90p910_init_cpu(); | ||
128 | if (ret != 0) | ||
129 | return ret; | ||
130 | |||
131 | return platform_add_devices(uart_devs, uart_count); | ||
132 | |||
133 | } | 92 | } |
134 | arch_initcall(w90x900_arch_init); | 93 | arch_initcall(w90x900_arch_init); |
diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c index bdb5fd983b15..1601698b9800 100644 --- a/arch/arm/mm/copypage-v4mc.c +++ b/arch/arm/mm/copypage-v4mc.c | |||
@@ -68,7 +68,7 @@ mc_copy_user_page(void *from, void *to) | |||
68 | : "r" (from), "r" (to), "I" (PAGE_SIZE / 64)); | 68 | : "r" (from), "r" (to), "I" (PAGE_SIZE / 64)); |
69 | } | 69 | } |
70 | 70 | ||
71 | void v4_mc_copy_user_highpage(struct page *from, struct page *to, | 71 | void v4_mc_copy_user_highpage(struct page *to, struct page *from, |
72 | unsigned long vaddr) | 72 | unsigned long vaddr) |
73 | { | 73 | { |
74 | void *kto = kmap_atomic(to, KM_USER1); | 74 | void *kto = kmap_atomic(to, KM_USER1); |
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c index 81d0b8772de3..bc0099d5ae85 100644 --- a/arch/arm/mm/fault-armv.c +++ b/arch/arm/mm/fault-armv.c | |||
@@ -66,7 +66,10 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address) | |||
66 | * fault (ie, is old), we can safely ignore any issues. | 66 | * fault (ie, is old), we can safely ignore any issues. |
67 | */ | 67 | */ |
68 | if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) { | 68 | if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) { |
69 | flush_cache_page(vma, address, pte_pfn(entry)); | 69 | unsigned long pfn = pte_pfn(entry); |
70 | flush_cache_page(vma, address, pfn); | ||
71 | outer_flush_range((pfn << PAGE_SHIFT), | ||
72 | (pfn << PAGE_SHIFT) + PAGE_SIZE); | ||
70 | pte_val(entry) &= ~L_PTE_MT_MASK; | 73 | pte_val(entry) &= ~L_PTE_MT_MASK; |
71 | pte_val(entry) |= shared_pte_mask; | 74 | pte_val(entry) |= shared_pte_mask; |
72 | set_pte_at(vma->vm_mm, address, pte, entry); | 75 | set_pte_at(vma->vm_mm, address, pte, entry); |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 18373f73f2fc..9f88dd3be601 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -138,7 +138,7 @@ void __check_kvm_seq(struct mm_struct *mm) | |||
138 | */ | 138 | */ |
139 | static void unmap_area_sections(unsigned long virt, unsigned long size) | 139 | static void unmap_area_sections(unsigned long virt, unsigned long size) |
140 | { | 140 | { |
141 | unsigned long addr = virt, end = virt + (size & ~SZ_1M); | 141 | unsigned long addr = virt, end = virt + (size & ~(SZ_1M - 1)); |
142 | pgd_t *pgd; | 142 | pgd_t *pgd; |
143 | 143 | ||
144 | flush_cache_vunmap(addr, end); | 144 | flush_cache_vunmap(addr, end); |
@@ -337,10 +337,7 @@ void __iounmap(volatile void __iomem *io_addr) | |||
337 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); | 337 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); |
338 | #ifndef CONFIG_SMP | 338 | #ifndef CONFIG_SMP |
339 | struct vm_struct **p, *tmp; | 339 | struct vm_struct **p, *tmp; |
340 | #endif | ||
341 | unsigned int section_mapping = 0; | ||
342 | 340 | ||
343 | #ifndef CONFIG_SMP | ||
344 | /* | 341 | /* |
345 | * If this is a section based mapping we need to handle it | 342 | * If this is a section based mapping we need to handle it |
346 | * specially as the VM subsystem does not know how to handle | 343 | * specially as the VM subsystem does not know how to handle |
@@ -352,11 +349,8 @@ void __iounmap(volatile void __iomem *io_addr) | |||
352 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { | 349 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { |
353 | if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { | 350 | if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { |
354 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { | 351 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { |
355 | *p = tmp->next; | ||
356 | unmap_area_sections((unsigned long)tmp->addr, | 352 | unmap_area_sections((unsigned long)tmp->addr, |
357 | tmp->size); | 353 | tmp->size); |
358 | kfree(tmp); | ||
359 | section_mapping = 1; | ||
360 | } | 354 | } |
361 | break; | 355 | break; |
362 | } | 356 | } |
@@ -364,7 +358,6 @@ void __iounmap(volatile void __iomem *io_addr) | |||
364 | write_unlock(&vmlist_lock); | 358 | write_unlock(&vmlist_lock); |
365 | #endif | 359 | #endif |
366 | 360 | ||
367 | if (!section_mapping) | 361 | vunmap(addr); |
368 | vunmap(addr); | ||
369 | } | 362 | } |
370 | EXPORT_SYMBOL(__iounmap); | 363 | EXPORT_SYMBOL(__iounmap); |
diff --git a/arch/arm/oprofile/backtrace.c b/arch/arm/oprofile/backtrace.c index cefc21c2eee4..d805a52b5032 100644 --- a/arch/arm/oprofile/backtrace.c +++ b/arch/arm/oprofile/backtrace.c | |||
@@ -18,15 +18,14 @@ | |||
18 | #include <linux/mm.h> | 18 | #include <linux/mm.h> |
19 | #include <linux/uaccess.h> | 19 | #include <linux/uaccess.h> |
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | 21 | #include <asm/stacktrace.h> | |
22 | #include "../kernel/stacktrace.h" | ||
23 | 22 | ||
24 | static int report_trace(struct stackframe *frame, void *d) | 23 | static int report_trace(struct stackframe *frame, void *d) |
25 | { | 24 | { |
26 | unsigned int *depth = d; | 25 | unsigned int *depth = d; |
27 | 26 | ||
28 | if (*depth) { | 27 | if (*depth) { |
29 | oprofile_add_trace(frame->lr); | 28 | oprofile_add_trace(frame->pc); |
30 | (*depth)--; | 29 | (*depth)--; |
31 | } | 30 | } |
32 | 31 | ||
@@ -70,9 +69,12 @@ void arm_backtrace(struct pt_regs * const regs, unsigned int depth) | |||
70 | struct frame_tail *tail = ((struct frame_tail *) regs->ARM_fp) - 1; | 69 | struct frame_tail *tail = ((struct frame_tail *) regs->ARM_fp) - 1; |
71 | 70 | ||
72 | if (!user_mode(regs)) { | 71 | if (!user_mode(regs)) { |
73 | unsigned long base = ((unsigned long)regs) & ~(THREAD_SIZE - 1); | 72 | struct stackframe frame; |
74 | walk_stackframe(regs->ARM_fp, base, base + THREAD_SIZE, | 73 | frame.fp = regs->ARM_fp; |
75 | report_trace, &depth); | 74 | frame.sp = regs->ARM_sp; |
75 | frame.lr = regs->ARM_lr; | ||
76 | frame.pc = regs->ARM_pc; | ||
77 | walk_stackframe(&frame, report_trace, &depth); | ||
76 | return; | 78 | return; |
77 | } | 79 | } |
78 | 80 | ||
diff --git a/arch/arm/plat-mxc/dma-mx1-mx2.c b/arch/arm/plat-mxc/dma-mx1-mx2.c index 2905ec758758..a9bab15f0fd0 100644 --- a/arch/arm/plat-mxc/dma-mx1-mx2.c +++ b/arch/arm/plat-mxc/dma-mx1-mx2.c | |||
@@ -113,7 +113,7 @@ struct imx_dma_channel { | |||
113 | void (*err_handler) (int, void *, int errcode); | 113 | void (*err_handler) (int, void *, int errcode); |
114 | void (*prog_handler) (int, void *, struct scatterlist *); | 114 | void (*prog_handler) (int, void *, struct scatterlist *); |
115 | void *data; | 115 | void *data; |
116 | unsigned int dma_mode; | 116 | unsigned int dma_mode; |
117 | struct scatterlist *sg; | 117 | struct scatterlist *sg; |
118 | unsigned int resbytes; | 118 | unsigned int resbytes; |
119 | int dma_num; | 119 | int dma_num; |
diff --git a/arch/arm/plat-mxc/include/mach/ipu.h b/arch/arm/plat-mxc/include/mach/ipu.h new file mode 100644 index 000000000000..a9221f1cc1a0 --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/ipu.h | |||
@@ -0,0 +1,181 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef _IPU_H_ | ||
13 | #define _IPU_H_ | ||
14 | |||
15 | #include <linux/types.h> | ||
16 | #include <linux/dmaengine.h> | ||
17 | |||
18 | /* IPU DMA Controller channel definitions. */ | ||
19 | enum ipu_channel { | ||
20 | IDMAC_IC_0 = 0, /* IC (encoding task) to memory */ | ||
21 | IDMAC_IC_1 = 1, /* IC (viewfinder task) to memory */ | ||
22 | IDMAC_ADC_0 = 1, | ||
23 | IDMAC_IC_2 = 2, | ||
24 | IDMAC_ADC_1 = 2, | ||
25 | IDMAC_IC_3 = 3, | ||
26 | IDMAC_IC_4 = 4, | ||
27 | IDMAC_IC_5 = 5, | ||
28 | IDMAC_IC_6 = 6, | ||
29 | IDMAC_IC_7 = 7, /* IC (sensor data) to memory */ | ||
30 | IDMAC_IC_8 = 8, | ||
31 | IDMAC_IC_9 = 9, | ||
32 | IDMAC_IC_10 = 10, | ||
33 | IDMAC_IC_11 = 11, | ||
34 | IDMAC_IC_12 = 12, | ||
35 | IDMAC_IC_13 = 13, | ||
36 | IDMAC_SDC_0 = 14, /* Background synchronous display data */ | ||
37 | IDMAC_SDC_1 = 15, /* Foreground data (overlay) */ | ||
38 | IDMAC_SDC_2 = 16, | ||
39 | IDMAC_SDC_3 = 17, | ||
40 | IDMAC_ADC_2 = 18, | ||
41 | IDMAC_ADC_3 = 19, | ||
42 | IDMAC_ADC_4 = 20, | ||
43 | IDMAC_ADC_5 = 21, | ||
44 | IDMAC_ADC_6 = 22, | ||
45 | IDMAC_ADC_7 = 23, | ||
46 | IDMAC_PF_0 = 24, | ||
47 | IDMAC_PF_1 = 25, | ||
48 | IDMAC_PF_2 = 26, | ||
49 | IDMAC_PF_3 = 27, | ||
50 | IDMAC_PF_4 = 28, | ||
51 | IDMAC_PF_5 = 29, | ||
52 | IDMAC_PF_6 = 30, | ||
53 | IDMAC_PF_7 = 31, | ||
54 | }; | ||
55 | |||
56 | /* Order significant! */ | ||
57 | enum ipu_channel_status { | ||
58 | IPU_CHANNEL_FREE, | ||
59 | IPU_CHANNEL_INITIALIZED, | ||
60 | IPU_CHANNEL_READY, | ||
61 | IPU_CHANNEL_ENABLED, | ||
62 | }; | ||
63 | |||
64 | #define IPU_CHANNELS_NUM 32 | ||
65 | |||
66 | enum pixel_fmt { | ||
67 | /* 1 byte */ | ||
68 | IPU_PIX_FMT_GENERIC, | ||
69 | IPU_PIX_FMT_RGB332, | ||
70 | IPU_PIX_FMT_YUV420P, | ||
71 | IPU_PIX_FMT_YUV422P, | ||
72 | IPU_PIX_FMT_YUV420P2, | ||
73 | IPU_PIX_FMT_YVU422P, | ||
74 | /* 2 bytes */ | ||
75 | IPU_PIX_FMT_RGB565, | ||
76 | IPU_PIX_FMT_RGB666, | ||
77 | IPU_PIX_FMT_BGR666, | ||
78 | IPU_PIX_FMT_YUYV, | ||
79 | IPU_PIX_FMT_UYVY, | ||
80 | /* 3 bytes */ | ||
81 | IPU_PIX_FMT_RGB24, | ||
82 | IPU_PIX_FMT_BGR24, | ||
83 | /* 4 bytes */ | ||
84 | IPU_PIX_FMT_GENERIC_32, | ||
85 | IPU_PIX_FMT_RGB32, | ||
86 | IPU_PIX_FMT_BGR32, | ||
87 | IPU_PIX_FMT_ABGR32, | ||
88 | IPU_PIX_FMT_BGRA32, | ||
89 | IPU_PIX_FMT_RGBA32, | ||
90 | }; | ||
91 | |||
92 | enum ipu_color_space { | ||
93 | IPU_COLORSPACE_RGB, | ||
94 | IPU_COLORSPACE_YCBCR, | ||
95 | IPU_COLORSPACE_YUV | ||
96 | }; | ||
97 | |||
98 | /* | ||
99 | * Enumeration of IPU rotation modes | ||
100 | */ | ||
101 | enum ipu_rotate_mode { | ||
102 | /* Note the enum values correspond to BAM value */ | ||
103 | IPU_ROTATE_NONE = 0, | ||
104 | IPU_ROTATE_VERT_FLIP = 1, | ||
105 | IPU_ROTATE_HORIZ_FLIP = 2, | ||
106 | IPU_ROTATE_180 = 3, | ||
107 | IPU_ROTATE_90_RIGHT = 4, | ||
108 | IPU_ROTATE_90_RIGHT_VFLIP = 5, | ||
109 | IPU_ROTATE_90_RIGHT_HFLIP = 6, | ||
110 | IPU_ROTATE_90_LEFT = 7, | ||
111 | }; | ||
112 | |||
113 | struct ipu_platform_data { | ||
114 | unsigned int irq_base; | ||
115 | }; | ||
116 | |||
117 | /* | ||
118 | * Enumeration of DI ports for ADC. | ||
119 | */ | ||
120 | enum display_port { | ||
121 | DISP0, | ||
122 | DISP1, | ||
123 | DISP2, | ||
124 | DISP3 | ||
125 | }; | ||
126 | |||
127 | struct idmac_video_param { | ||
128 | unsigned short in_width; | ||
129 | unsigned short in_height; | ||
130 | uint32_t in_pixel_fmt; | ||
131 | unsigned short out_width; | ||
132 | unsigned short out_height; | ||
133 | uint32_t out_pixel_fmt; | ||
134 | unsigned short out_stride; | ||
135 | bool graphics_combine_en; | ||
136 | bool global_alpha_en; | ||
137 | bool key_color_en; | ||
138 | enum display_port disp; | ||
139 | unsigned short out_left; | ||
140 | unsigned short out_top; | ||
141 | }; | ||
142 | |||
143 | /* | ||
144 | * Union of initialization parameters for a logical channel. So far only video | ||
145 | * parameters are used. | ||
146 | */ | ||
147 | union ipu_channel_param { | ||
148 | struct idmac_video_param video; | ||
149 | }; | ||
150 | |||
151 | struct idmac_tx_desc { | ||
152 | struct dma_async_tx_descriptor txd; | ||
153 | struct scatterlist *sg; /* scatterlist for this */ | ||
154 | unsigned int sg_len; /* tx-descriptor. */ | ||
155 | struct list_head list; | ||
156 | }; | ||
157 | |||
158 | struct idmac_channel { | ||
159 | struct dma_chan dma_chan; | ||
160 | dma_cookie_t completed; /* last completed cookie */ | ||
161 | union ipu_channel_param params; | ||
162 | enum ipu_channel link; /* input channel, linked to the output */ | ||
163 | enum ipu_channel_status status; | ||
164 | void *client; /* Only one client per channel */ | ||
165 | unsigned int n_tx_desc; | ||
166 | struct idmac_tx_desc *desc; /* allocated tx-descriptors */ | ||
167 | struct scatterlist *sg[2]; /* scatterlist elements in buffer-0 and -1 */ | ||
168 | struct list_head free_list; /* free tx-descriptors */ | ||
169 | struct list_head queue; /* queued tx-descriptors */ | ||
170 | spinlock_t lock; /* protects sg[0,1], queue */ | ||
171 | struct mutex chan_mutex; /* protects status, cookie, free_list */ | ||
172 | bool sec_chan_en; | ||
173 | int active_buffer; | ||
174 | unsigned int eof_irq; | ||
175 | char eof_name[16]; /* EOF IRQ name for request_irq() */ | ||
176 | }; | ||
177 | |||
178 | #define to_tx_desc(tx) container_of(tx, struct idmac_tx_desc, txd) | ||
179 | #define to_idmac_chan(c) container_of(c, struct idmac_channel, dma_chan) | ||
180 | |||
181 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h index e06d3cb0ee11..c02b8fc2d821 100644 --- a/arch/arm/plat-mxc/include/mach/irqs.h +++ b/arch/arm/plat-mxc/include/mach/irqs.h | |||
@@ -35,7 +35,15 @@ | |||
35 | #define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) | 35 | #define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) |
36 | #define MXC_BOARD_IRQS 16 | 36 | #define MXC_BOARD_IRQS 16 |
37 | 37 | ||
38 | #define NR_IRQS (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) | 38 | #define MXC_IPU_IRQ_START (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) |
39 | |||
40 | #ifdef CONFIG_MX3_IPU_IRQS | ||
41 | #define MX3_IPU_IRQS CONFIG_MX3_IPU_IRQS | ||
42 | #else | ||
43 | #define MX3_IPU_IRQS 0 | ||
44 | #endif | ||
45 | |||
46 | #define NR_IRQS (MXC_IPU_IRQ_START + MX3_IPU_IRQS) | ||
39 | 47 | ||
40 | extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); | 48 | extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); |
41 | 49 | ||
diff --git a/arch/arm/plat-mxc/include/mach/mmc.h b/arch/arm/plat-mxc/include/mach/mmc.h new file mode 100644 index 000000000000..de2128dada5c --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/mmc.h | |||
@@ -0,0 +1,36 @@ | |||
1 | #ifndef ASMARM_ARCH_MMC_H | ||
2 | #define ASMARM_ARCH_MMC_H | ||
3 | |||
4 | #include <linux/mmc/host.h> | ||
5 | |||
6 | struct device; | ||
7 | |||
8 | /* board specific SDHC data, optional. | ||
9 | * If not present, a writable card with 3,3V is assumed. | ||
10 | */ | ||
11 | struct imxmmc_platform_data { | ||
12 | /* Return values for the get_ro callback should be: | ||
13 | * 0 for a read/write card | ||
14 | * 1 for a read-only card | ||
15 | * -ENOSYS when not supported (equal to NULL callback) | ||
16 | * or a negative errno value when something bad happened | ||
17 | */ | ||
18 | int (*get_ro)(struct device *); | ||
19 | |||
20 | /* board specific hook to (de)initialize the SD slot. | ||
21 | * The board code can call 'handler' on a card detection | ||
22 | * change giving data as argument. | ||
23 | */ | ||
24 | int (*init)(struct device *dev, irq_handler_t handler, void *data); | ||
25 | void (*exit)(struct device *dev, void *data); | ||
26 | |||
27 | /* available voltages. If not given, assume | ||
28 | * MMC_VDD_32_33 | MMC_VDD_33_34 | ||
29 | */ | ||
30 | unsigned int ocr_avail; | ||
31 | |||
32 | /* adjust slot voltage */ | ||
33 | void (*setpower)(struct device *, unsigned int vdd); | ||
34 | }; | ||
35 | |||
36 | #endif | ||
diff --git a/arch/arm/plat-mxc/include/mach/mx3fb.h b/arch/arm/plat-mxc/include/mach/mx3fb.h new file mode 100644 index 000000000000..e391a76ca87d --- /dev/null +++ b/arch/arm/plat-mxc/include/mach/mx3fb.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 | ||
3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #ifndef __ASM_ARCH_MX3FB_H__ | ||
11 | #define __ASM_ARCH_MX3FB_H__ | ||
12 | |||
13 | #include <linux/device.h> | ||
14 | #include <linux/fb.h> | ||
15 | |||
16 | /* Proprietary FB_SYNC_ flags */ | ||
17 | #define FB_SYNC_OE_ACT_HIGH 0x80000000 | ||
18 | #define FB_SYNC_CLK_INVERT 0x40000000 | ||
19 | #define FB_SYNC_DATA_INVERT 0x20000000 | ||
20 | #define FB_SYNC_CLK_IDLE_EN 0x10000000 | ||
21 | #define FB_SYNC_SHARP_MODE 0x08000000 | ||
22 | #define FB_SYNC_SWAP_RGB 0x04000000 | ||
23 | #define FB_SYNC_CLK_SEL_EN 0x02000000 | ||
24 | |||
25 | /** | ||
26 | * struct mx3fb_platform_data - mx3fb platform data | ||
27 | * | ||
28 | * @dma_dev: pointer to the dma-device, used for dma-slave connection | ||
29 | * @mode: pointer to a platform-provided per mxc_register_fb() videomode | ||
30 | */ | ||
31 | struct mx3fb_platform_data { | ||
32 | struct device *dma_dev; | ||
33 | const char *name; | ||
34 | const struct fb_videomode *mode; | ||
35 | int num_modes; | ||
36 | }; | ||
37 | |||
38 | #endif | ||
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index ac15c23fd5da..208dbb121f47 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -200,14 +200,15 @@ void omap_mcbsp_register_board_cfg(struct omap_mcbsp_platform_data *config, | |||
200 | /* | 200 | /* |
201 | * Register MMC devices. Called from mach-omap1 and mach-omap2 device init. | 201 | * Register MMC devices. Called from mach-omap1 and mach-omap2 device init. |
202 | */ | 202 | */ |
203 | int __init omap_mmc_add(int id, unsigned long base, unsigned long size, | 203 | int __init omap_mmc_add(const char *name, int id, unsigned long base, |
204 | unsigned int irq, struct omap_mmc_platform_data *data) | 204 | unsigned long size, unsigned int irq, |
205 | struct omap_mmc_platform_data *data) | ||
205 | { | 206 | { |
206 | struct platform_device *pdev; | 207 | struct platform_device *pdev; |
207 | struct resource res[OMAP_MMC_NR_RES]; | 208 | struct resource res[OMAP_MMC_NR_RES]; |
208 | int ret; | 209 | int ret; |
209 | 210 | ||
210 | pdev = platform_device_alloc("mmci-omap", id); | 211 | pdev = platform_device_alloc(name, id); |
211 | if (!pdev) | 212 | if (!pdev) |
212 | return -ENOMEM; | 213 | return -ENOMEM; |
213 | 214 | ||
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 692d2b495af3..47ec77af4ccb 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -278,14 +278,11 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, | |||
278 | u32 val; | 278 | u32 val; |
279 | 279 | ||
280 | val = dma_read(CCR(lch)); | 280 | val = dma_read(CCR(lch)); |
281 | val &= ~(3 << 19); | ||
282 | if (dma_trigger > 63) | ||
283 | val |= 1 << 20; | ||
284 | if (dma_trigger > 31) | ||
285 | val |= 1 << 19; | ||
286 | 281 | ||
287 | val &= ~(0x1f); | 282 | /* DMA_SYNCHRO_CONTROL_UPPER depends on the channel number */ |
288 | val |= (dma_trigger & 0x1f); | 283 | val &= ~((3 << 19) | 0x1f); |
284 | val |= (dma_trigger & ~0x1f) << 14; | ||
285 | val |= dma_trigger & 0x1f; | ||
289 | 286 | ||
290 | if (sync_mode & OMAP_DMA_SYNC_FRAME) | 287 | if (sync_mode & OMAP_DMA_SYNC_FRAME) |
291 | val |= 1 << 5; | 288 | val |= 1 << 5; |
@@ -712,6 +709,7 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
712 | chan->dev_name = dev_name; | 709 | chan->dev_name = dev_name; |
713 | chan->callback = callback; | 710 | chan->callback = callback; |
714 | chan->data = data; | 711 | chan->data = data; |
712 | chan->flags = 0; | ||
715 | 713 | ||
716 | #ifndef CONFIG_ARCH_OMAP1 | 714 | #ifndef CONFIG_ARCH_OMAP1 |
717 | if (cpu_class_is_omap2()) { | 715 | if (cpu_class_is_omap2()) { |
@@ -1891,11 +1889,11 @@ static int omap2_dma_handle_ch(int ch) | |||
1891 | status = dma_read(CSR(ch)); | 1889 | status = dma_read(CSR(ch)); |
1892 | } | 1890 | } |
1893 | 1891 | ||
1892 | dma_write(status, CSR(ch)); | ||
1893 | |||
1894 | if (likely(dma_chan[ch].callback != NULL)) | 1894 | if (likely(dma_chan[ch].callback != NULL)) |
1895 | dma_chan[ch].callback(ch, status, dma_chan[ch].data); | 1895 | dma_chan[ch].callback(ch, status, dma_chan[ch].data); |
1896 | 1896 | ||
1897 | dma_write(status, CSR(ch)); | ||
1898 | |||
1899 | return 0; | 1897 | return 0; |
1900 | } | 1898 | } |
1901 | 1899 | ||
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 07b6968a7d16..f856a90b264e 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -1789,6 +1789,8 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1789 | /* FIXME for at least omap2, show pullup/pulldown state */ | 1789 | /* FIXME for at least omap2, show pullup/pulldown state */ |
1790 | 1790 | ||
1791 | irqstat = irq_desc[irq].status; | 1791 | irqstat = irq_desc[irq].status; |
1792 | #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP24XX) || \ | ||
1793 | defined(CONFIG_ARCH_OMAP34XX) | ||
1792 | if (is_in && ((bank->suspend_wakeup & mask) | 1794 | if (is_in && ((bank->suspend_wakeup & mask) |
1793 | || irqstat & IRQ_TYPE_SENSE_MASK)) { | 1795 | || irqstat & IRQ_TYPE_SENSE_MASK)) { |
1794 | char *trigger = NULL; | 1796 | char *trigger = NULL; |
@@ -1818,6 +1820,7 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1818 | (bank->suspend_wakeup & mask) | 1820 | (bank->suspend_wakeup & mask) |
1819 | ? " wakeup" : ""); | 1821 | ? " wakeup" : ""); |
1820 | } | 1822 | } |
1823 | #endif | ||
1821 | seq_printf(s, "\n"); | 1824 | seq_printf(s, "\n"); |
1822 | } | 1825 | } |
1823 | 1826 | ||
diff --git a/arch/arm/plat-omap/include/mach/aic23.h b/arch/arm/plat-omap/include/mach/aic23.h deleted file mode 100644 index 5ccedac77526..000000000000 --- a/arch/arm/plat-omap/include/mach/aic23.h +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-omap/include/mach/aic23.h | ||
3 | * | ||
4 | * Hardware definitions for TI TLV320AIC23 audio codec | ||
5 | * | ||
6 | * Copyright (C) 2002 RidgeRun, Inc. | ||
7 | * Author: Steve Johnson | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify it | ||
10 | * under the terms of the GNU General Public License as published by the | ||
11 | * Free Software Foundation; either version 2 of the License, or (at your | ||
12 | * option) any later version. | ||
13 | * | ||
14 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
15 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
16 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
17 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
18 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
19 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
20 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
21 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
22 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
23 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License along | ||
26 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
27 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
28 | */ | ||
29 | |||
30 | #ifndef __ASM_ARCH_AIC23_H | ||
31 | #define __ASM_ARCH_AIC23_H | ||
32 | |||
33 | // Codec TLV320AIC23 | ||
34 | #define LEFT_LINE_VOLUME_ADDR 0x00 | ||
35 | #define RIGHT_LINE_VOLUME_ADDR 0x01 | ||
36 | #define LEFT_CHANNEL_VOLUME_ADDR 0x02 | ||
37 | #define RIGHT_CHANNEL_VOLUME_ADDR 0x03 | ||
38 | #define ANALOG_AUDIO_CONTROL_ADDR 0x04 | ||
39 | #define DIGITAL_AUDIO_CONTROL_ADDR 0x05 | ||
40 | #define POWER_DOWN_CONTROL_ADDR 0x06 | ||
41 | #define DIGITAL_AUDIO_FORMAT_ADDR 0x07 | ||
42 | #define SAMPLE_RATE_CONTROL_ADDR 0x08 | ||
43 | #define DIGITAL_INTERFACE_ACT_ADDR 0x09 | ||
44 | #define RESET_CONTROL_ADDR 0x0F | ||
45 | |||
46 | // Left (right) line input volume control register | ||
47 | #define LRS_ENABLED 0x0100 | ||
48 | #define LIM_MUTED 0x0080 | ||
49 | #define LIV_DEFAULT 0x0017 | ||
50 | #define LIV_MAX 0x001f | ||
51 | #define LIV_MIN 0x0000 | ||
52 | |||
53 | // Left (right) channel headphone volume control register | ||
54 | #define LZC_ON 0x0080 | ||
55 | #define LHV_DEFAULT 0x0079 | ||
56 | #define LHV_MAX 0x007f | ||
57 | #define LHV_MIN 0x0000 | ||
58 | |||
59 | // Analog audio path control register | ||
60 | #define STA_REG(x) ((x)<<6) | ||
61 | #define STE_ENABLED 0x0020 | ||
62 | #define DAC_SELECTED 0x0010 | ||
63 | #define BYPASS_ON 0x0008 | ||
64 | #define INSEL_MIC 0x0004 | ||
65 | #define MICM_MUTED 0x0002 | ||
66 | #define MICB_20DB 0x0001 | ||
67 | |||
68 | // Digital audio path control register | ||
69 | #define DACM_MUTE 0x0008 | ||
70 | #define DEEMP_32K 0x0002 | ||
71 | #define DEEMP_44K 0x0004 | ||
72 | #define DEEMP_48K 0x0006 | ||
73 | #define ADCHP_ON 0x0001 | ||
74 | |||
75 | // Power control down register | ||
76 | #define DEVICE_POWER_OFF 0x0080 | ||
77 | #define CLK_OFF 0x0040 | ||
78 | #define OSC_OFF 0x0020 | ||
79 | #define OUT_OFF 0x0010 | ||
80 | #define DAC_OFF 0x0008 | ||
81 | #define ADC_OFF 0x0004 | ||
82 | #define MIC_OFF 0x0002 | ||
83 | #define LINE_OFF 0x0001 | ||
84 | |||
85 | // Digital audio interface register | ||
86 | #define MS_MASTER 0x0040 | ||
87 | #define LRSWAP_ON 0x0020 | ||
88 | #define LRP_ON 0x0010 | ||
89 | #define IWL_16 0x0000 | ||
90 | #define IWL_20 0x0004 | ||
91 | #define IWL_24 0x0008 | ||
92 | #define IWL_32 0x000C | ||
93 | #define FOR_I2S 0x0002 | ||
94 | #define FOR_DSP 0x0003 | ||
95 | |||
96 | // Sample rate control register | ||
97 | #define CLKOUT_HALF 0x0080 | ||
98 | #define CLKIN_HALF 0x0040 | ||
99 | #define BOSR_384fs 0x0002 // BOSR_272fs when in USB mode | ||
100 | #define USB_CLK_ON 0x0001 | ||
101 | #define SR_MASK 0xf | ||
102 | #define CLKOUT_SHIFT 7 | ||
103 | #define CLKIN_SHIFT 6 | ||
104 | #define SR_SHIFT 2 | ||
105 | #define BOSR_SHIFT 1 | ||
106 | |||
107 | // Digital interface register | ||
108 | #define ACT_ON 0x0001 | ||
109 | |||
110 | #define TLV320AIC23ID1 (0x1a) // cs low | ||
111 | #define TLV320AIC23ID2 (0x1b) // cs high | ||
112 | |||
113 | void aic23_power_up(void); | ||
114 | void aic23_power_down(void); | ||
115 | |||
116 | #endif /* __ASM_ARCH_AIC23_H */ | ||
diff --git a/arch/arm/plat-omap/include/mach/board-h3.h b/arch/arm/plat-omap/include/mach/board-h3.h index 14909dc7858a..1888326da7ea 100644 --- a/arch/arm/plat-omap/include/mach/board-h3.h +++ b/arch/arm/plat-omap/include/mach/board-h3.h | |||
@@ -30,7 +30,9 @@ | |||
30 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ | 30 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ |
31 | #define OMAP1710_ETHR_START 0x04000300 | 31 | #define OMAP1710_ETHR_START 0x04000300 |
32 | 32 | ||
33 | #define H3_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
34 | # define H3_TPS_GPIO_MMC_PWR_EN (H3_TPS_GPIO_BASE + 4) | ||
35 | |||
33 | extern void h3_mmc_init(void); | 36 | extern void h3_mmc_init(void); |
34 | extern void h3_mmc_slot_cover_handler(void *arg, int state); | ||
35 | 37 | ||
36 | #endif /* __ASM_ARCH_OMAP_H3_H */ | 38 | #endif /* __ASM_ARCH_OMAP_H3_H */ |
diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h index b2062f1175de..a8e1178a9468 100644 --- a/arch/arm/plat-omap/include/mach/cpu.h +++ b/arch/arm/plat-omap/include/mach/cpu.h | |||
@@ -339,6 +339,7 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
339 | #define OMAP3430_REV_ES2_0 0x34301034 | 339 | #define OMAP3430_REV_ES2_0 0x34301034 |
340 | #define OMAP3430_REV_ES2_1 0x34302034 | 340 | #define OMAP3430_REV_ES2_1 0x34302034 |
341 | #define OMAP3430_REV_ES3_0 0x34303034 | 341 | #define OMAP3430_REV_ES3_0 0x34303034 |
342 | #define OMAP3430_REV_ES3_1 0x34304034 | ||
342 | 343 | ||
343 | /* | 344 | /* |
344 | * omap_chip bits | 345 | * omap_chip bits |
diff --git a/arch/arm/plat-omap/include/mach/gpio.h b/arch/arm/plat-omap/include/mach/gpio.h index 04e68e88f134..8d9dfe314387 100644 --- a/arch/arm/plat-omap/include/mach/gpio.h +++ b/arch/arm/plat-omap/include/mach/gpio.h | |||
@@ -87,16 +87,6 @@ extern void omap_set_gpio_debounce_time(int gpio, int enable); | |||
87 | #include <linux/errno.h> | 87 | #include <linux/errno.h> |
88 | #include <asm-generic/gpio.h> | 88 | #include <asm-generic/gpio.h> |
89 | 89 | ||
90 | static inline int omap_request_gpio(int gpio) | ||
91 | { | ||
92 | return gpio_request(gpio, "FIXME"); | ||
93 | } | ||
94 | |||
95 | static inline void omap_free_gpio(int gpio) | ||
96 | { | ||
97 | gpio_free(gpio); | ||
98 | } | ||
99 | |||
100 | static inline int gpio_get_value(unsigned gpio) | 90 | static inline int gpio_get_value(unsigned gpio) |
101 | { | 91 | { |
102 | return __gpio_get_value(gpio); | 92 | return __gpio_get_value(gpio); |
diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h b/arch/arm/plat-omap/include/mach/mcbsp.h index 6a0d1a0a24a7..113c2466c86a 100644 --- a/arch/arm/plat-omap/include/mach/mcbsp.h +++ b/arch/arm/plat-omap/include/mach/mcbsp.h | |||
@@ -87,6 +87,10 @@ | |||
87 | #define OMAP_MCBSP_REG_XCERG 0x3A | 87 | #define OMAP_MCBSP_REG_XCERG 0x3A |
88 | #define OMAP_MCBSP_REG_XCERH 0x3C | 88 | #define OMAP_MCBSP_REG_XCERH 0x3C |
89 | 89 | ||
90 | /* Dummy defines, these are not available on omap1 */ | ||
91 | #define OMAP_MCBSP_REG_XCCR 0x00 | ||
92 | #define OMAP_MCBSP_REG_RCCR 0x00 | ||
93 | |||
90 | #define AUDIO_MCBSP_DATAWRITE (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1) | 94 | #define AUDIO_MCBSP_DATAWRITE (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1) |
91 | #define AUDIO_MCBSP_DATAREAD (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1) | 95 | #define AUDIO_MCBSP_DATAREAD (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1) |
92 | 96 | ||
@@ -231,11 +235,16 @@ | |||
231 | #define XPBBLK(value) ((value)<<7) /* Bits 7:8 */ | 235 | #define XPBBLK(value) ((value)<<7) /* Bits 7:8 */ |
232 | 236 | ||
233 | /*********************** McBSP XCCR bit definitions *************************/ | 237 | /*********************** McBSP XCCR bit definitions *************************/ |
238 | #define EXTCLKGATE 0x8000 | ||
239 | #define PPCONNECT 0x4000 | ||
240 | #define DXENDLY(value) ((value)<<12) /* Bits 12:13 */ | ||
241 | #define XFULL_CYCLE 0x0800 | ||
234 | #define DILB 0x0020 | 242 | #define DILB 0x0020 |
235 | #define XDMAEN 0x0008 | 243 | #define XDMAEN 0x0008 |
236 | #define XDISABLE 0x0001 | 244 | #define XDISABLE 0x0001 |
237 | 245 | ||
238 | /********************** McBSP RCCR bit definitions *************************/ | 246 | /********************** McBSP RCCR bit definitions *************************/ |
247 | #define RFULL_CYCLE 0x0800 | ||
239 | #define RDMAEN 0x0008 | 248 | #define RDMAEN 0x0008 |
240 | #define RDISABLE 0x0001 | 249 | #define RDISABLE 0x0001 |
241 | 250 | ||
@@ -267,6 +276,8 @@ struct omap_mcbsp_reg_cfg { | |||
267 | u16 rcerh; | 276 | u16 rcerh; |
268 | u16 xcerg; | 277 | u16 xcerg; |
269 | u16 xcerh; | 278 | u16 xcerh; |
279 | u16 xccr; | ||
280 | u16 rccr; | ||
270 | }; | 281 | }; |
271 | 282 | ||
272 | typedef enum { | 283 | typedef enum { |
@@ -333,7 +344,8 @@ struct omap_mcbsp_platform_data { | |||
333 | u8 dma_rx_sync, dma_tx_sync; | 344 | u8 dma_rx_sync, dma_tx_sync; |
334 | u16 rx_irq, tx_irq; | 345 | u16 rx_irq, tx_irq; |
335 | struct omap_mcbsp_ops *ops; | 346 | struct omap_mcbsp_ops *ops; |
336 | char const *clk_name; | 347 | char const **clk_names; |
348 | int num_clks; | ||
337 | }; | 349 | }; |
338 | 350 | ||
339 | struct omap_mcbsp { | 351 | struct omap_mcbsp { |
@@ -365,7 +377,8 @@ struct omap_mcbsp { | |||
365 | /* Protect the field .free, while checking if the mcbsp is in use */ | 377 | /* Protect the field .free, while checking if the mcbsp is in use */ |
366 | spinlock_t lock; | 378 | spinlock_t lock; |
367 | struct omap_mcbsp_platform_data *pdata; | 379 | struct omap_mcbsp_platform_data *pdata; |
368 | struct clk *clk; | 380 | struct clk **clks; |
381 | int num_clks; | ||
369 | }; | 382 | }; |
370 | extern struct omap_mcbsp **mcbsp_ptr; | 383 | extern struct omap_mcbsp **mcbsp_ptr; |
371 | extern int omap_mcbsp_count; | 384 | extern int omap_mcbsp_count; |
diff --git a/arch/arm/plat-omap/include/mach/mmc.h b/arch/arm/plat-omap/include/mach/mmc.h index 031250f02805..73a9e15031b1 100644 --- a/arch/arm/plat-omap/include/mach/mmc.h +++ b/arch/arm/plat-omap/include/mach/mmc.h | |||
@@ -115,8 +115,9 @@ void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
115 | int nr_controllers); | 115 | int nr_controllers); |
116 | void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, | 116 | void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, |
117 | int nr_controllers); | 117 | int nr_controllers); |
118 | int omap_mmc_add(int id, unsigned long base, unsigned long size, | 118 | int omap_mmc_add(const char *name, int id, unsigned long base, |
119 | unsigned int irq, struct omap_mmc_platform_data *data); | 119 | unsigned long size, unsigned int irq, |
120 | struct omap_mmc_platform_data *data); | ||
120 | #else | 121 | #else |
121 | static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | 122 | static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, |
122 | int nr_controllers) | 123 | int nr_controllers) |
@@ -126,8 +127,9 @@ static inline void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, | |||
126 | int nr_controllers) | 127 | int nr_controllers) |
127 | { | 128 | { |
128 | } | 129 | } |
129 | static inline int omap_mmc_add(int id, unsigned long base, unsigned long size, | 130 | static inline int omap_mmc_add(const char *name, int id, unsigned long base, |
130 | unsigned int irq, struct omap_mmc_platform_data *data) | 131 | unsigned long size, unsigned int irq, |
132 | struct omap_mmc_platform_data *data) | ||
131 | { | 133 | { |
132 | return 0; | 134 | return 0; |
133 | } | 135 | } |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index af33fc713e1a..e5842e30e534 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c | |||
@@ -173,6 +173,10 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) | |||
173 | OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2); | 173 | OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2); |
174 | OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1); | 174 | OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1); |
175 | OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0); | 175 | OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0); |
176 | if (cpu_is_omap2430() || cpu_is_omap34xx()) { | ||
177 | OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr); | ||
178 | OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr); | ||
179 | } | ||
176 | } | 180 | } |
177 | EXPORT_SYMBOL(omap_mcbsp_config); | 181 | EXPORT_SYMBOL(omap_mcbsp_config); |
178 | 182 | ||
@@ -210,6 +214,7 @@ EXPORT_SYMBOL(omap_mcbsp_set_io_type); | |||
210 | int omap_mcbsp_request(unsigned int id) | 214 | int omap_mcbsp_request(unsigned int id) |
211 | { | 215 | { |
212 | struct omap_mcbsp *mcbsp; | 216 | struct omap_mcbsp *mcbsp; |
217 | int i; | ||
213 | int err; | 218 | int err; |
214 | 219 | ||
215 | if (!omap_mcbsp_check_valid_id(id)) { | 220 | if (!omap_mcbsp_check_valid_id(id)) { |
@@ -221,7 +226,8 @@ int omap_mcbsp_request(unsigned int id) | |||
221 | if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request) | 226 | if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request) |
222 | mcbsp->pdata->ops->request(id); | 227 | mcbsp->pdata->ops->request(id); |
223 | 228 | ||
224 | clk_enable(mcbsp->clk); | 229 | for (i = 0; i < mcbsp->num_clks; i++) |
230 | clk_enable(mcbsp->clks[i]); | ||
225 | 231 | ||
226 | spin_lock(&mcbsp->lock); | 232 | spin_lock(&mcbsp->lock); |
227 | if (!mcbsp->free) { | 233 | if (!mcbsp->free) { |
@@ -272,6 +278,7 @@ EXPORT_SYMBOL(omap_mcbsp_request); | |||
272 | void omap_mcbsp_free(unsigned int id) | 278 | void omap_mcbsp_free(unsigned int id) |
273 | { | 279 | { |
274 | struct omap_mcbsp *mcbsp; | 280 | struct omap_mcbsp *mcbsp; |
281 | int i; | ||
275 | 282 | ||
276 | if (!omap_mcbsp_check_valid_id(id)) { | 283 | if (!omap_mcbsp_check_valid_id(id)) { |
277 | printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); | 284 | printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); |
@@ -282,7 +289,8 @@ void omap_mcbsp_free(unsigned int id) | |||
282 | if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free) | 289 | if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free) |
283 | mcbsp->pdata->ops->free(id); | 290 | mcbsp->pdata->ops->free(id); |
284 | 291 | ||
285 | clk_disable(mcbsp->clk); | 292 | for (i = mcbsp->num_clks - 1; i >= 0; i--) |
293 | clk_disable(mcbsp->clks[i]); | ||
286 | 294 | ||
287 | spin_lock(&mcbsp->lock); | 295 | spin_lock(&mcbsp->lock); |
288 | if (mcbsp->free) { | 296 | if (mcbsp->free) { |
@@ -868,6 +876,7 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) | |||
868 | struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data; | 876 | struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data; |
869 | struct omap_mcbsp *mcbsp; | 877 | struct omap_mcbsp *mcbsp; |
870 | int id = pdev->id - 1; | 878 | int id = pdev->id - 1; |
879 | int i; | ||
871 | int ret = 0; | 880 | int ret = 0; |
872 | 881 | ||
873 | if (!pdata) { | 882 | if (!pdata) { |
@@ -912,14 +921,25 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) | |||
912 | mcbsp->dma_rx_sync = pdata->dma_rx_sync; | 921 | mcbsp->dma_rx_sync = pdata->dma_rx_sync; |
913 | mcbsp->dma_tx_sync = pdata->dma_tx_sync; | 922 | mcbsp->dma_tx_sync = pdata->dma_tx_sync; |
914 | 923 | ||
915 | if (pdata->clk_name) | 924 | if (pdata->num_clks) { |
916 | mcbsp->clk = clk_get(&pdev->dev, pdata->clk_name); | 925 | mcbsp->num_clks = pdata->num_clks; |
917 | if (IS_ERR(mcbsp->clk)) { | 926 | mcbsp->clks = kzalloc(mcbsp->num_clks * sizeof(struct clk *), |
918 | dev_err(&pdev->dev, | 927 | GFP_KERNEL); |
919 | "Invalid clock configuration for McBSP%d.\n", | 928 | if (!mcbsp->clks) { |
920 | mcbsp->id); | 929 | ret = -ENOMEM; |
921 | ret = PTR_ERR(mcbsp->clk); | 930 | goto exit; |
922 | goto err_clk; | 931 | } |
932 | for (i = 0; i < mcbsp->num_clks; i++) { | ||
933 | mcbsp->clks[i] = clk_get(&pdev->dev, pdata->clk_names[i]); | ||
934 | if (IS_ERR(mcbsp->clks[i])) { | ||
935 | dev_err(&pdev->dev, | ||
936 | "Invalid %s configuration for McBSP%d.\n", | ||
937 | pdata->clk_names[i], mcbsp->id); | ||
938 | ret = PTR_ERR(mcbsp->clks[i]); | ||
939 | goto err_clk; | ||
940 | } | ||
941 | } | ||
942 | |||
923 | } | 943 | } |
924 | 944 | ||
925 | mcbsp->pdata = pdata; | 945 | mcbsp->pdata = pdata; |
@@ -928,6 +948,9 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) | |||
928 | return 0; | 948 | return 0; |
929 | 949 | ||
930 | err_clk: | 950 | err_clk: |
951 | while (i--) | ||
952 | clk_put(mcbsp->clks[i]); | ||
953 | kfree(mcbsp->clks); | ||
931 | iounmap(mcbsp->io_base); | 954 | iounmap(mcbsp->io_base); |
932 | err_ioremap: | 955 | err_ioremap: |
933 | mcbsp->free = 0; | 956 | mcbsp->free = 0; |
@@ -938,6 +961,7 @@ exit: | |||
938 | static int __devexit omap_mcbsp_remove(struct platform_device *pdev) | 961 | static int __devexit omap_mcbsp_remove(struct platform_device *pdev) |
939 | { | 962 | { |
940 | struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev); | 963 | struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev); |
964 | int i; | ||
941 | 965 | ||
942 | platform_set_drvdata(pdev, NULL); | 966 | platform_set_drvdata(pdev, NULL); |
943 | if (mcbsp) { | 967 | if (mcbsp) { |
@@ -946,12 +970,18 @@ static int __devexit omap_mcbsp_remove(struct platform_device *pdev) | |||
946 | mcbsp->pdata->ops->free) | 970 | mcbsp->pdata->ops->free) |
947 | mcbsp->pdata->ops->free(mcbsp->id); | 971 | mcbsp->pdata->ops->free(mcbsp->id); |
948 | 972 | ||
949 | clk_disable(mcbsp->clk); | 973 | for (i = mcbsp->num_clks - 1; i >= 0; i--) { |
950 | clk_put(mcbsp->clk); | 974 | clk_disable(mcbsp->clks[i]); |
975 | clk_put(mcbsp->clks[i]); | ||
976 | } | ||
951 | 977 | ||
952 | iounmap(mcbsp->io_base); | 978 | iounmap(mcbsp->io_base); |
953 | 979 | ||
954 | mcbsp->clk = NULL; | 980 | if (mcbsp->num_clks) { |
981 | kfree(mcbsp->clks); | ||
982 | mcbsp->clks = NULL; | ||
983 | mcbsp->num_clks = 0; | ||
984 | } | ||
955 | mcbsp->free = 0; | 985 | mcbsp->free = 0; |
956 | mcbsp->dev = NULL; | 986 | mcbsp->dev = NULL; |
957 | } | 987 | } |
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index add0485703b5..e278de6862ae 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -431,15 +431,6 @@ bad: | |||
431 | 431 | ||
432 | /*-------------------------------------------------------------------------*/ | 432 | /*-------------------------------------------------------------------------*/ |
433 | 433 | ||
434 | #if defined(CONFIG_USB_GADGET_OMAP) || \ | ||
435 | defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) || \ | ||
436 | (defined(CONFIG_USB_OTG) && defined(CONFIG_ARCH_OMAP_OTG)) | ||
437 | static void usb_release(struct device *dev) | ||
438 | { | ||
439 | /* normally not freed */ | ||
440 | } | ||
441 | #endif | ||
442 | |||
443 | #ifdef CONFIG_USB_GADGET_OMAP | 434 | #ifdef CONFIG_USB_GADGET_OMAP |
444 | 435 | ||
445 | static struct resource udc_resources[] = { | 436 | static struct resource udc_resources[] = { |
@@ -466,7 +457,6 @@ static struct platform_device udc_device = { | |||
466 | .name = "omap_udc", | 457 | .name = "omap_udc", |
467 | .id = -1, | 458 | .id = -1, |
468 | .dev = { | 459 | .dev = { |
469 | .release = usb_release, | ||
470 | .dma_mask = &udc_dmamask, | 460 | .dma_mask = &udc_dmamask, |
471 | .coherent_dma_mask = 0xffffffff, | 461 | .coherent_dma_mask = 0xffffffff, |
472 | }, | 462 | }, |
@@ -497,7 +487,6 @@ static struct platform_device ohci_device = { | |||
497 | .name = "ohci", | 487 | .name = "ohci", |
498 | .id = -1, | 488 | .id = -1, |
499 | .dev = { | 489 | .dev = { |
500 | .release = usb_release, | ||
501 | .dma_mask = &ohci_dmamask, | 490 | .dma_mask = &ohci_dmamask, |
502 | .coherent_dma_mask = 0xffffffff, | 491 | .coherent_dma_mask = 0xffffffff, |
503 | }, | 492 | }, |
@@ -524,9 +513,6 @@ static struct resource otg_resources[] = { | |||
524 | static struct platform_device otg_device = { | 513 | static struct platform_device otg_device = { |
525 | .name = "omap_otg", | 514 | .name = "omap_otg", |
526 | .id = -1, | 515 | .id = -1, |
527 | .dev = { | ||
528 | .release = usb_release, | ||
529 | }, | ||
530 | .num_resources = ARRAY_SIZE(otg_resources), | 516 | .num_resources = ARRAY_SIZE(otg_resources), |
531 | .resource = otg_resources, | 517 | .resource = otg_resources, |
532 | }; | 518 | }; |
diff --git a/arch/arm/plat-s3c/include/plat/uncompress.h b/arch/arm/plat-s3c/include/plat/uncompress.h index 6061de87f225..dc66a477f62e 100644 --- a/arch/arm/plat-s3c/include/plat/uncompress.h +++ b/arch/arm/plat-s3c/include/plat/uncompress.h | |||
@@ -90,7 +90,10 @@ static inline void flush(void) | |||
90 | { | 90 | { |
91 | } | 91 | } |
92 | 92 | ||
93 | #define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0) | 93 | #define __raw_writel(d, ad) \ |
94 | do { \ | ||
95 | *((volatile unsigned int __force *)(ad)) = (d); \ | ||
96 | } while (0) | ||
94 | 97 | ||
95 | /* CONFIG_S3C_BOOT_WATCHDOG | 98 | /* CONFIG_S3C_BOOT_WATCHDOG |
96 | * | 99 | * |
diff --git a/arch/arm/vfp/vfp.h b/arch/arm/vfp/vfp.h index 8de86e4feada..c8c98dd44ad4 100644 --- a/arch/arm/vfp/vfp.h +++ b/arch/arm/vfp/vfp.h | |||
@@ -377,6 +377,4 @@ struct op { | |||
377 | u32 flags; | 377 | u32 flags; |
378 | }; | 378 | }; |
379 | 379 | ||
380 | #if defined(CONFIG_SMP) || defined(CONFIG_PM) | ||
381 | extern void vfp_save_state(void *location, u32 fpexc); | 380 | extern void vfp_save_state(void *location, u32 fpexc); |
382 | #endif | ||
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index c92a08bd6a86..a5a4e57763c3 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
@@ -172,7 +172,6 @@ process_exception: | |||
172 | @ retry the faulted instruction | 172 | @ retry the faulted instruction |
173 | ENDPROC(vfp_support_entry) | 173 | ENDPROC(vfp_support_entry) |
174 | 174 | ||
175 | #if defined(CONFIG_SMP) || defined(CONFIG_PM) | ||
176 | ENTRY(vfp_save_state) | 175 | ENTRY(vfp_save_state) |
177 | @ Save the current VFP state | 176 | @ Save the current VFP state |
178 | @ r0 - save location | 177 | @ r0 - save location |
@@ -190,7 +189,6 @@ ENTRY(vfp_save_state) | |||
190 | stmia r0, {r1, r2, r3, r12} @ save FPEXC, FPSCR, FPINST, FPINST2 | 189 | stmia r0, {r1, r2, r3, r12} @ save FPEXC, FPSCR, FPINST, FPINST2 |
191 | mov pc, lr | 190 | mov pc, lr |
192 | ENDPROC(vfp_save_state) | 191 | ENDPROC(vfp_save_state) |
193 | #endif | ||
194 | 192 | ||
195 | last_VFP_context_address: | 193 | last_VFP_context_address: |
196 | .word last_VFP_context | 194 | .word last_VFP_context |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 9f476a1be2ca..75457b30d813 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
@@ -377,6 +377,55 @@ static void vfp_pm_init(void) | |||
377 | static inline void vfp_pm_init(void) { } | 377 | static inline void vfp_pm_init(void) { } |
378 | #endif /* CONFIG_PM */ | 378 | #endif /* CONFIG_PM */ |
379 | 379 | ||
380 | /* | ||
381 | * Synchronise the hardware VFP state of a thread other than current with the | ||
382 | * saved one. This function is used by the ptrace mechanism. | ||
383 | */ | ||
384 | #ifdef CONFIG_SMP | ||
385 | void vfp_sync_state(struct thread_info *thread) | ||
386 | { | ||
387 | /* | ||
388 | * On SMP systems, the VFP state is automatically saved at every | ||
389 | * context switch. We mark the thread VFP state as belonging to a | ||
390 | * non-existent CPU so that the saved one will be reloaded when | ||
391 | * needed. | ||
392 | */ | ||
393 | thread->vfpstate.hard.cpu = NR_CPUS; | ||
394 | } | ||
395 | #else | ||
396 | void vfp_sync_state(struct thread_info *thread) | ||
397 | { | ||
398 | unsigned int cpu = get_cpu(); | ||
399 | u32 fpexc = fmrx(FPEXC); | ||
400 | |||
401 | /* | ||
402 | * If VFP is enabled, the previous state was already saved and | ||
403 | * last_VFP_context updated. | ||
404 | */ | ||
405 | if (fpexc & FPEXC_EN) | ||
406 | goto out; | ||
407 | |||
408 | if (!last_VFP_context[cpu]) | ||
409 | goto out; | ||
410 | |||
411 | /* | ||
412 | * Save the last VFP state on this CPU. | ||
413 | */ | ||
414 | fmxr(FPEXC, fpexc | FPEXC_EN); | ||
415 | vfp_save_state(last_VFP_context[cpu], fpexc); | ||
416 | fmxr(FPEXC, fpexc); | ||
417 | |||
418 | /* | ||
419 | * Set the context to NULL to force a reload the next time the thread | ||
420 | * uses the VFP. | ||
421 | */ | ||
422 | last_VFP_context[cpu] = NULL; | ||
423 | |||
424 | out: | ||
425 | put_cpu(); | ||
426 | } | ||
427 | #endif | ||
428 | |||
380 | #include <linux/smp.h> | 429 | #include <linux/smp.h> |
381 | 430 | ||
382 | /* | 431 | /* |
@@ -427,6 +476,18 @@ static int __init vfp_init(void) | |||
427 | * in place; report VFP support to userspace. | 476 | * in place; report VFP support to userspace. |
428 | */ | 477 | */ |
429 | elf_hwcap |= HWCAP_VFP; | 478 | elf_hwcap |= HWCAP_VFP; |
479 | #ifdef CONFIG_VFPv3 | ||
480 | if (VFP_arch >= 3) { | ||
481 | elf_hwcap |= HWCAP_VFPv3; | ||
482 | |||
483 | /* | ||
484 | * Check for VFPv3 D16. CPUs in this configuration | ||
485 | * only have 16 x 64bit registers. | ||
486 | */ | ||
487 | if (((fmrx(MVFR0) & MVFR0_A_SIMD_MASK)) == 1) | ||
488 | elf_hwcap |= HWCAP_VFPv3D16; | ||
489 | } | ||
490 | #endif | ||
430 | #ifdef CONFIG_NEON | 491 | #ifdef CONFIG_NEON |
431 | /* | 492 | /* |
432 | * Check for the presence of the Advanced SIMD | 493 | * Check for the presence of the Advanced SIMD |