4ad0fe6c1b45062e80a03a1b0a7f2a368c93f73d
[openwrt/openwrt.git] / target / linux / s3c24xx / patches-2.6.29 / 000-downgrade-to-rc3.patch
1 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/include/asm/bug.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h
2 --- linux-2.6.29.owrt/arch/alpha/include/asm/bug.h 2009-05-10 22:04:41.000000000 +0200
3 +++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h 2009-05-10 23:48:27.000000000 +0200
4 @@ -8,12 +8,17 @@
5
6 /* ??? Would be nice to use .gprel32 here, but we can't be sure that the
7 function loaded the GP, so this could fail in modules. */
8 -#define BUG() do { \
9 - __asm__ __volatile__( \
10 - "call_pal %0 # bugchk\n\t" \
11 - ".long %1\n\t.8byte %2" \
12 - : : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \
13 - for ( ; ; ); } while (0)
14 +static inline void ATTRIB_NORET __BUG(const char *file, int line)
15 +{
16 + __asm__ __volatile__(
17 + "call_pal %0 # bugchk\n\t"
18 + ".long %1\n\t.8byte %2"
19 + : : "i" (PAL_bugchk), "i"(line), "i"(file));
20 + for ( ; ; )
21 + ;
22 +}
23 +
24 +#define BUG() __BUG(__FILE__, __LINE__)
25
26 #define HAVE_ARCH_BUG
27 #endif
28 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h
29 --- linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 22:04:41.000000000 +0200
30 +++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 23:48:27.000000000 +0200
31 @@ -29,8 +29,6 @@
32
33 #else /* no PCI - no IOMMU. */
34
35 -#include <asm/io.h> /* for virt_to_phys() */
36 -
37 struct scatterlist;
38 void *dma_alloc_coherent(struct device *dev, size_t size,
39 dma_addr_t *dma_handle, gfp_t gfp);
40 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/Kconfig linux-2.6.29-rc3.owrt/arch/alpha/Kconfig
41 --- linux-2.6.29.owrt/arch/alpha/Kconfig 2009-05-10 22:04:41.000000000 +0200
42 +++ linux-2.6.29-rc3.owrt/arch/alpha/Kconfig 2009-05-10 23:48:27.000000000 +0200
43 @@ -8,7 +8,6 @@
44 select HAVE_AOUT
45 select HAVE_IDE
46 select HAVE_OPROFILE
47 - select HAVE_SYSCALL_WRAPPERS
48 help
49 The Alpha is a 64-bit general-purpose processor designed and
50 marketed by the Digital Equipment Corporation of blessed memory,
51 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/entry.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S
52 --- linux-2.6.29.owrt/arch/alpha/kernel/entry.S 2009-05-10 22:04:41.000000000 +0200
53 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S 2009-05-10 23:48:27.000000000 +0200
54 @@ -933,7 +933,7 @@
55 osf_sigprocmask:
56 .prologue 0
57 mov $sp, $18
58 - jmp $31, sys_osf_sigprocmask
59 + jmp $31, do_osf_sigprocmask
60 .end osf_sigprocmask
61
62 .align 4
63 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c
64 --- linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 22:04:41.000000000 +0200
65 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 23:48:27.000000000 +0200
66 @@ -54,7 +54,8 @@
67 * identical to OSF as we don't return 0 on success, but doing otherwise
68 * would require changes to libc. Hopefully this is good enough.
69 */
70 -SYSCALL_DEFINE1(osf_brk, unsigned long, brk)
71 +asmlinkage unsigned long
72 +osf_brk(unsigned long brk)
73 {
74 unsigned long retval = sys_brk(brk);
75 if (brk && brk != retval)
76 @@ -65,9 +66,9 @@
77 /*
78 * This is pure guess-work..
79 */
80 -SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start,
81 - unsigned long, text_len, unsigned long, bss_start,
82 - unsigned long, bss_len)
83 +asmlinkage int
84 +osf_set_program_attributes(unsigned long text_start, unsigned long text_len,
85 + unsigned long bss_start, unsigned long bss_len)
86 {
87 struct mm_struct *mm;
88
89 @@ -145,9 +146,9 @@
90 return -EFAULT;
91 }
92
93 -SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd,
94 - struct osf_dirent __user *, dirent, unsigned int, count,
95 - long __user *, basep)
96 +asmlinkage int
97 +osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent,
98 + unsigned int count, long __user *basep)
99 {
100 int error;
101 struct file *file;
102 @@ -176,9 +177,9 @@
103
104 #undef NAME_OFFSET
105
106 -SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len,
107 - unsigned long, prot, unsigned long, flags, unsigned long, fd,
108 - unsigned long, off)
109 +asmlinkage unsigned long
110 +osf_mmap(unsigned long addr, unsigned long len, unsigned long prot,
111 + unsigned long flags, unsigned long fd, unsigned long off)
112 {
113 struct file *file = NULL;
114 unsigned long ret = -EBADF;
115 @@ -253,8 +254,8 @@
116 return error;
117 }
118
119 -SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
120 - struct osf_statfs __user *, buffer, unsigned long, bufsiz)
121 +asmlinkage int
122 +osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz)
123 {
124 struct path path;
125 int retval;
126 @@ -267,8 +268,8 @@
127 return retval;
128 }
129
130 -SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd,
131 - struct osf_statfs __user *, buffer, unsigned long, bufsiz)
132 +asmlinkage int
133 +osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz)
134 {
135 struct file *file;
136 int retval;
137 @@ -367,8 +368,8 @@
138 return do_mount("", dirname, "proc", flags, NULL);
139 }
140
141 -SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path,
142 - int, flag, void __user *, data)
143 +asmlinkage int
144 +osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data)
145 {
146 int retval = -EINVAL;
147 char *name;
148 @@ -398,7 +399,8 @@
149 return retval;
150 }
151
152 -SYSCALL_DEFINE1(osf_utsname, char __user *, name)
153 +asmlinkage int
154 +osf_utsname(char __user *name)
155 {
156 int error;
157
158 @@ -421,12 +423,14 @@
159 return error;
160 }
161
162 -SYSCALL_DEFINE0(getpagesize)
163 +asmlinkage unsigned long
164 +sys_getpagesize(void)
165 {
166 return PAGE_SIZE;
167 }
168
169 -SYSCALL_DEFINE0(getdtablesize)
170 +asmlinkage unsigned long
171 +sys_getdtablesize(void)
172 {
173 return sysctl_nr_open;
174 }
175 @@ -434,7 +438,8 @@
176 /*
177 * For compatibility with OSF/1 only. Use utsname(2) instead.
178 */
179 -SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen)
180 +asmlinkage int
181 +osf_getdomainname(char __user *name, int namelen)
182 {
183 unsigned len;
184 int i;
185 @@ -522,8 +527,8 @@
186 PL_DEL = 5, PL_FDEL = 6
187 };
188
189 -SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code,
190 - union pl_args __user *, args)
191 +asmlinkage long
192 +osf_proplist_syscall(enum pl_code code, union pl_args __user *args)
193 {
194 long error;
195 int __user *min_buf_size_ptr;
196 @@ -562,8 +567,8 @@
197 return error;
198 }
199
200 -SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss,
201 - struct sigstack __user *, uoss)
202 +asmlinkage int
203 +osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss)
204 {
205 unsigned long usp = rdusp();
206 unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size;
207 @@ -603,7 +608,8 @@
208 return error;
209 }
210
211 -SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count)
212 +asmlinkage long
213 +osf_sysinfo(int command, char __user *buf, long count)
214 {
215 char *sysinfo_table[] = {
216 utsname()->sysname,
217 @@ -641,8 +647,9 @@
218 return err;
219 }
220
221 -SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
222 - unsigned long, nbytes, int __user *, start, void __user *, arg)
223 +asmlinkage unsigned long
224 +osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
225 + int __user *start, void __user *arg)
226 {
227 unsigned long w;
228 struct percpu_struct *cpu;
229 @@ -698,8 +705,9 @@
230 return -EOPNOTSUPP;
231 }
232
233 -SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
234 - unsigned long, nbytes, int __user *, start, void __user *, arg)
235 +asmlinkage unsigned long
236 +osf_setsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
237 + int __user *start, void __user *arg)
238 {
239 switch (op) {
240 case SSI_IEEE_FP_CONTROL: {
241 @@ -872,8 +880,8 @@
242 value->tv_sec = jiffies / HZ;
243 }
244
245 -SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv,
246 - struct timezone __user *, tz)
247 +asmlinkage int
248 +osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
249 {
250 if (tv) {
251 struct timeval ktv;
252 @@ -888,8 +896,8 @@
253 return 0;
254 }
255
256 -SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
257 - struct timezone __user *, tz)
258 +asmlinkage int
259 +osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
260 {
261 struct timespec kts;
262 struct timezone ktz;
263 @@ -908,7 +916,8 @@
264 return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
265 }
266
267 -SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it)
268 +asmlinkage int
269 +osf_getitimer(int which, struct itimerval32 __user *it)
270 {
271 struct itimerval kit;
272 int error;
273 @@ -920,8 +929,8 @@
274 return error;
275 }
276
277 -SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
278 - struct itimerval32 __user *, out)
279 +asmlinkage int
280 +osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __user *out)
281 {
282 struct itimerval kin, kout;
283 int error;
284 @@ -943,8 +952,8 @@
285
286 }
287
288 -SYSCALL_DEFINE2(osf_utimes, char __user *, filename,
289 - struct timeval32 __user *, tvs)
290 +asmlinkage int
291 +osf_utimes(char __user *filename, struct timeval32 __user *tvs)
292 {
293 struct timespec tv[2];
294
295 @@ -970,8 +979,9 @@
296 #define MAX_SELECT_SECONDS \
297 ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1)
298
299 -SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp,
300 - fd_set __user *, exp, struct timeval32 __user *, tvp)
301 +asmlinkage int
302 +osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
303 + struct timeval32 __user *tvp)
304 {
305 struct timespec end_time, *to = NULL;
306 if (tvp) {
307 @@ -1016,7 +1026,8 @@
308 long ru_nivcsw; /* involuntary " */
309 };
310
311 -SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru)
312 +asmlinkage int
313 +osf_getrusage(int who, struct rusage32 __user *ru)
314 {
315 struct rusage32 r;
316
317 @@ -1042,8 +1053,9 @@
318 return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
319 }
320
321 -SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
322 - struct rusage32 __user *, ur)
323 +asmlinkage long
324 +osf_wait4(pid_t pid, int __user *ustatus, int options,
325 + struct rusage32 __user *ur)
326 {
327 struct rusage r;
328 long ret, err;
329 @@ -1089,8 +1101,8 @@
330 * seems to be a timeval pointer, and I suspect the second
331 * one is the time remaining.. Ho humm.. No documentation.
332 */
333 -SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep,
334 - struct timeval32 __user *, remain)
335 +asmlinkage int
336 +osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remain)
337 {
338 struct timeval tmp;
339 unsigned long ticks;
340 @@ -1143,7 +1155,8 @@
341 int :32; int :32; int :32; int :32;
342 };
343
344 -SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
345 +asmlinkage int
346 +sys_old_adjtimex(struct timex32 __user *txc_p)
347 {
348 struct timex txc;
349 int ret;
350 @@ -1254,8 +1267,8 @@
351 return 0;
352 }
353
354 -SYSCALL_DEFINE3(osf_readv, unsigned long, fd,
355 - const struct iovec __user *, vector, unsigned long, count)
356 +asmlinkage ssize_t
357 +osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long count)
358 {
359 if (unlikely(personality(current->personality) == PER_OSF4))
360 if (osf_fix_iov_len(vector, count))
361 @@ -1263,8 +1276,8 @@
362 return sys_readv(fd, vector, count);
363 }
364
365 -SYSCALL_DEFINE3(osf_writev, unsigned long, fd,
366 - const struct iovec __user *, vector, unsigned long, count)
367 +asmlinkage ssize_t
368 +osf_writev(unsigned long fd, const struct iovec __user * vector, unsigned long count)
369 {
370 if (unlikely(personality(current->personality) == PER_OSF4))
371 if (osf_fix_iov_len(vector, count))
372 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c
373 --- linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 22:04:41.000000000 +0200
374 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 23:48:27.000000000 +0200
375 @@ -109,8 +109,7 @@
376 /* Stubs for the routines in pci_iommu.c: */
377
378 void *
379 -__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
380 - dma_addr_t *dma_addrp, gfp_t gfp)
381 +pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
382 {
383 return NULL;
384 }
385 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/process.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c
386 --- linux-2.6.29.owrt/arch/alpha/kernel/process.c 2009-05-10 22:04:41.000000000 +0200
387 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c 2009-05-10 23:48:27.000000000 +0200
388 @@ -93,8 +93,8 @@
389 if (cpuid != boot_cpuid) {
390 flags |= 0x00040000UL; /* "remain halted" */
391 *pflags = flags;
392 - set_cpu_present(cpuid, false);
393 - set_cpu_possible(cpuid, false);
394 + cpu_clear(cpuid, cpu_present_map);
395 + cpu_clear(cpuid, cpu_possible_map);
396 halt();
397 }
398 #endif
399 @@ -120,8 +120,8 @@
400
401 #ifdef CONFIG_SMP
402 /* Wait for the secondaries to halt. */
403 - set_cpu_present(boot_cpuid, false);
404 - set_cpu_possible(boot_cpuid, false);
405 + cpu_clear(boot_cpuid, cpu_present_map);
406 + cpu_clear(boot_cpuid, cpu_possible_map);
407 while (cpus_weight(cpu_present_map))
408 barrier();
409 #endif
410 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/signal.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c
411 --- linux-2.6.29.owrt/arch/alpha/kernel/signal.c 2009-05-10 22:04:41.000000000 +0200
412 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c 2009-05-10 23:48:27.000000000 +0200
413 @@ -19,7 +19,6 @@
414 #include <linux/tty.h>
415 #include <linux/binfmts.h>
416 #include <linux/bitops.h>
417 -#include <linux/syscalls.h>
418
419 #include <asm/uaccess.h>
420 #include <asm/sigcontext.h>
421 @@ -52,8 +51,8 @@
422 * Note that we don't need to acquire the kernel lock for SMP
423 * operation, as all of this is local to this thread.
424 */
425 -SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask,
426 - struct pt_regs *, regs)
427 +asmlinkage unsigned long
428 +do_osf_sigprocmask(int how, unsigned long newmask, struct pt_regs *regs)
429 {
430 unsigned long oldmask = -EINVAL;
431
432 @@ -82,9 +81,9 @@
433 return oldmask;
434 }
435
436 -SYSCALL_DEFINE3(osf_sigaction, int, sig,
437 - const struct osf_sigaction __user *, act,
438 - struct osf_sigaction __user *, oact)
439 +asmlinkage int
440 +osf_sigaction(int sig, const struct osf_sigaction __user *act,
441 + struct osf_sigaction __user *oact)
442 {
443 struct k_sigaction new_ka, old_ka;
444 int ret;
445 @@ -113,9 +112,10 @@
446 return ret;
447 }
448
449 -SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
450 - struct sigaction __user *, oact,
451 - size_t, sigsetsize, void __user *, restorer)
452 +asmlinkage long
453 +sys_rt_sigaction(int sig, const struct sigaction __user *act,
454 + struct sigaction __user *oact,
455 + size_t sigsetsize, void __user *restorer)
456 {
457 struct k_sigaction new_ka, old_ka;
458 int ret;
459 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/smp.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c
460 --- linux-2.6.29.owrt/arch/alpha/kernel/smp.c 2009-05-10 22:04:41.000000000 +0200
461 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c 2009-05-10 23:48:27.000000000 +0200
462 @@ -121,11 +121,10 @@
463 {
464 int cpuid = hard_smp_processor_id();
465
466 - if (cpu_online(cpuid)) {
467 + if (cpu_test_and_set(cpuid, cpu_online_map)) {
468 printk("??, cpu 0x%x already present??\n", cpuid);
469 BUG();
470 }
471 - set_cpu_online(cpuid, true);
472
473 /* Turn on machine checks. */
474 wrmces(7);
475 @@ -436,8 +435,8 @@
476 ((char *)cpubase + i*hwrpb->processor_size);
477 if ((cpu->flags & 0x1cc) == 0x1cc) {
478 smp_num_probed++;
479 - set_cpu_possible(i, true);
480 - set_cpu_present(i, true);
481 + cpu_set(i, cpu_possible_map);
482 + cpu_set(i, cpu_present_map);
483 cpu->pal_revision = boot_cpu_palrev;
484 }
485
486 @@ -470,8 +469,8 @@
487
488 /* Nothing to do on a UP box, or when told not to. */
489 if (smp_num_probed == 1 || max_cpus == 0) {
490 - init_cpu_possible(cpumask_of(boot_cpuid));
491 - init_cpu_present(cpumask_of(boot_cpuid));
492 + cpu_possible_map = cpumask_of_cpu(boot_cpuid);
493 + cpu_present_map = cpumask_of_cpu(boot_cpuid);
494 printk(KERN_INFO "SMP mode deactivated.\n");
495 return;
496 }
497 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/alpha/kernel/systbls.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S
498 --- linux-2.6.29.owrt/arch/alpha/kernel/systbls.S 2009-05-10 22:04:41.000000000 +0200
499 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S 2009-05-10 23:48:27.000000000 +0200
500 @@ -17,7 +17,7 @@
501 .quad sys_write
502 .quad alpha_ni_syscall /* 5 */
503 .quad sys_close
504 - .quad sys_osf_wait4
505 + .quad osf_wait4
506 .quad alpha_ni_syscall
507 .quad sys_link
508 .quad sys_unlink /* 10 */
509 @@ -27,11 +27,11 @@
510 .quad sys_mknod
511 .quad sys_chmod /* 15 */
512 .quad sys_chown
513 - .quad sys_osf_brk
514 + .quad osf_brk
515 .quad alpha_ni_syscall
516 .quad sys_lseek
517 .quad sys_getxpid /* 20 */
518 - .quad sys_osf_mount
519 + .quad osf_mount
520 .quad sys_umount
521 .quad sys_setuid
522 .quad sys_getxuid
523 @@ -53,7 +53,7 @@
524 .quad alpha_ni_syscall /* 40 */
525 .quad sys_dup
526 .quad sys_alpha_pipe
527 - .quad sys_osf_set_program_attributes
528 + .quad osf_set_program_attributes
529 .quad alpha_ni_syscall
530 .quad sys_open /* 45 */
531 .quad alpha_ni_syscall
532 @@ -81,7 +81,7 @@
533 .quad sys_newlstat
534 .quad alpha_ni_syscall
535 .quad alpha_ni_syscall /* 70 */
536 - .quad sys_osf_mmap
537 + .quad osf_mmap
538 .quad alpha_ni_syscall
539 .quad sys_munmap
540 .quad sys_mprotect
541 @@ -94,17 +94,17 @@
542 .quad sys_setgroups /* 80 */
543 .quad alpha_ni_syscall
544 .quad sys_setpgid
545 - .quad sys_osf_setitimer
546 + .quad osf_setitimer
547 .quad alpha_ni_syscall
548 .quad alpha_ni_syscall /* 85 */
549 - .quad sys_osf_getitimer
550 + .quad osf_getitimer
551 .quad sys_gethostname
552 .quad sys_sethostname
553 .quad sys_getdtablesize
554 .quad sys_dup2 /* 90 */
555 .quad sys_newfstat
556 .quad sys_fcntl
557 - .quad sys_osf_select
558 + .quad osf_select
559 .quad sys_poll
560 .quad sys_fsync /* 95 */
561 .quad sys_setpriority
562 @@ -123,22 +123,22 @@
563 .quad alpha_ni_syscall
564 .quad alpha_ni_syscall /* 110 */
565 .quad sys_sigsuspend
566 - .quad sys_osf_sigstack
567 + .quad osf_sigstack
568 .quad sys_recvmsg
569 .quad sys_sendmsg
570 .quad alpha_ni_syscall /* 115 */
571 - .quad sys_osf_gettimeofday
572 - .quad sys_osf_getrusage
573 + .quad osf_gettimeofday
574 + .quad osf_getrusage
575 .quad sys_getsockopt
576 .quad alpha_ni_syscall
577 #ifdef CONFIG_OSF4_COMPAT
578 - .quad sys_osf_readv /* 120 */
579 - .quad sys_osf_writev
580 + .quad osf_readv /* 120 */
581 + .quad osf_writev
582 #else
583 .quad sys_readv /* 120 */
584 .quad sys_writev
585 #endif
586 - .quad sys_osf_settimeofday
587 + .quad osf_settimeofday
588 .quad sys_fchown
589 .quad sys_fchmod
590 .quad sys_recvfrom /* 125 */
591 @@ -154,7 +154,7 @@
592 .quad sys_socketpair /* 135 */
593 .quad sys_mkdir
594 .quad sys_rmdir
595 - .quad sys_osf_utimes
596 + .quad osf_utimes
597 .quad alpha_ni_syscall
598 .quad alpha_ni_syscall /* 140 */
599 .quad sys_getpeername
600 @@ -172,16 +172,16 @@
601 .quad alpha_ni_syscall
602 .quad alpha_ni_syscall
603 .quad alpha_ni_syscall /* 155 */
604 - .quad sys_osf_sigaction
605 + .quad osf_sigaction
606 .quad alpha_ni_syscall
607 .quad alpha_ni_syscall
608 - .quad sys_osf_getdirentries
609 - .quad sys_osf_statfs /* 160 */
610 - .quad sys_osf_fstatfs
611 + .quad osf_getdirentries
612 + .quad osf_statfs /* 160 */
613 + .quad osf_fstatfs
614 .quad alpha_ni_syscall
615 .quad alpha_ni_syscall
616 .quad alpha_ni_syscall
617 - .quad sys_osf_getdomainname /* 165 */
618 + .quad osf_getdomainname /* 165 */
619 .quad sys_setdomainname
620 .quad alpha_ni_syscall
621 .quad alpha_ni_syscall
622 @@ -224,7 +224,7 @@
623 .quad sys_semctl
624 .quad sys_semget /* 205 */
625 .quad sys_semop
626 - .quad sys_osf_utsname
627 + .quad osf_utsname
628 .quad sys_lchown
629 .quad sys_shmat
630 .quad sys_shmctl /* 210 */
631 @@ -258,23 +258,23 @@
632 .quad alpha_ni_syscall
633 .quad alpha_ni_syscall
634 .quad alpha_ni_syscall /* 240 */
635 - .quad sys_osf_sysinfo
636 + .quad osf_sysinfo
637 .quad alpha_ni_syscall
638 .quad alpha_ni_syscall
639 - .quad sys_osf_proplist_syscall
640 + .quad osf_proplist_syscall
641 .quad alpha_ni_syscall /* 245 */
642 .quad alpha_ni_syscall
643 .quad alpha_ni_syscall
644 .quad alpha_ni_syscall
645 .quad alpha_ni_syscall
646 .quad alpha_ni_syscall /* 250 */
647 - .quad sys_osf_usleep_thread
648 + .quad osf_usleep_thread
649 .quad alpha_ni_syscall
650 .quad alpha_ni_syscall
651 .quad sys_sysfs
652 .quad alpha_ni_syscall /* 255 */
653 - .quad sys_osf_getsysinfo
654 - .quad sys_osf_setsysinfo
655 + .quad osf_getsysinfo
656 + .quad osf_setsysinfo
657 .quad alpha_ni_syscall
658 .quad alpha_ni_syscall
659 .quad alpha_ni_syscall /* 260 */
660 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/elf.c linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c
661 --- linux-2.6.29.owrt/arch/arm/kernel/elf.c 2009-05-10 22:04:41.000000000 +0200
662 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c 2009-05-10 23:48:27.000000000 +0200
663 @@ -74,9 +74,9 @@
664 */
665 int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
666 {
667 - if (executable_stack != EXSTACK_DISABLE_X)
668 + if (executable_stack != EXSTACK_ENABLE_X)
669 return 1;
670 - if (cpu_architecture() < CPU_ARCH_ARMv6)
671 + if (cpu_architecture() <= CPU_ARCH_ARMv6)
672 return 1;
673 return 0;
674 }
675 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S
676 --- linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 22:04:41.000000000 +0200
677 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 23:48:27.000000000 +0200
678 @@ -650,7 +650,6 @@
679 no_fp: mov pc, lr
680
681 __und_usr_unknown:
682 - enable_irq
683 mov r0, sp
684 adr lr, ret_from_exception
685 b do_undefinstr
686 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/entry-common.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S
687 --- linux-2.6.29.owrt/arch/arm/kernel/entry-common.S 2009-05-10 22:04:41.000000000 +0200
688 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S 2009-05-10 23:48:27.000000000 +0200
689 @@ -111,7 +111,6 @@
690 .globl mcount_call
691 mcount_call:
692 bl ftrace_stub
693 - ldr lr, [fp, #-4] @ restore lr
694 ldmia sp!, {r0-r3, pc}
695
696 ENTRY(ftrace_caller)
697 @@ -123,7 +122,6 @@
698 .globl ftrace_call
699 ftrace_call:
700 bl ftrace_stub
701 - ldr lr, [fp, #-4] @ restore lr
702 ldmia sp!, {r0-r3, pc}
703
704 #else
705 @@ -135,16 +133,14 @@
706 adr r0, ftrace_stub
707 cmp r0, r2
708 bne trace
709 - ldr lr, [fp, #-4] @ restore lr
710 ldmia sp!, {r0-r3, pc}
711
712 trace:
713 - ldr r1, [fp, #-4] @ lr of instrumented routine
714 + ldr r1, [fp, #-4]
715 mov r0, lr
716 sub r0, r0, #MCOUNT_INSN_SIZE
717 mov lr, pc
718 mov pc, r2
719 - mov lr, r1 @ restore lr
720 ldmia sp!, {r0-r3, pc}
721
722 #endif /* CONFIG_DYNAMIC_FTRACE */
723 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/fiq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c
724 --- linux-2.6.29.owrt/arch/arm/kernel/fiq.c 2009-05-10 22:04:41.000000000 +0200
725 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c 2009-05-10 23:48:27.000000000 +0200
726 @@ -88,7 +88,7 @@
727 * disable irqs for the duration. Note - these functions are almost
728 * entirely coded in assembly.
729 */
730 -void __naked set_fiq_regs(struct pt_regs *regs)
731 +void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
732 {
733 register unsigned long tmp;
734 asm volatile (
735 @@ -106,7 +106,7 @@
736 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
737 }
738
739 -void __naked get_fiq_regs(struct pt_regs *regs)
740 +void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
741 {
742 register unsigned long tmp;
743 asm volatile (
744 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/irq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c
745 --- linux-2.6.29.owrt/arch/arm/kernel/irq.c 2009-05-10 22:04:41.000000000 +0200
746 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c 2009-05-10 23:48:27.000000000 +0200
747 @@ -101,7 +101,7 @@
748 /* Handle bad interrupts */
749 static struct irq_desc bad_irq_desc = {
750 .handle_irq = handle_bad_irq,
751 - .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock),
752 + .lock = SPIN_LOCK_UNLOCKED
753 };
754
755 /*
756 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c
757 --- linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 22:04:41.000000000 +0200
758 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 23:48:27.000000000 +0200
759 @@ -13,8 +13,8 @@
760 #include <asm/cacheflush.h>
761 #include <asm/mach-types.h>
762
763 -extern const unsigned char relocate_new_kernel[];
764 -extern const unsigned int relocate_new_kernel_size;
765 +const extern unsigned char relocate_new_kernel[];
766 +const extern unsigned int relocate_new_kernel_size;
767
768 extern void setup_mm_for_reboot(char mode);
769
770 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/kernel/setup.c linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c
771 --- linux-2.6.29.owrt/arch/arm/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
772 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c 2009-05-10 23:48:27.000000000 +0200
773 @@ -233,13 +233,12 @@
774 unsigned int cachetype = read_cpuid_cachetype();
775 unsigned int arch = cpu_architecture();
776
777 - if (arch >= CPU_ARCH_ARMv6) {
778 - if ((cachetype & (7 << 29)) == 4 << 29) {
779 - /* ARMv7 register format */
780 - cacheid = CACHEID_VIPT_NONALIASING;
781 - if ((cachetype & (3 << 14)) == 1 << 14)
782 - cacheid |= CACHEID_ASID_TAGGED;
783 - } else if (cachetype & (1 << 23))
784 + if (arch >= CPU_ARCH_ARMv7) {
785 + cacheid = CACHEID_VIPT_NONALIASING;
786 + if ((cachetype & (3 << 14)) == 1 << 14)
787 + cacheid |= CACHEID_ASID_TAGGED;
788 + } else if (arch >= CPU_ARCH_ARMv6) {
789 + if (cachetype & (1 << 23))
790 cacheid = CACHEID_VIPT_ALIASING;
791 else
792 cacheid = CACHEID_VIPT_NONALIASING;
793 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c
794 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 22:04:41.000000000 +0200
795 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 23:48:27.000000000 +0200
796 @@ -697,7 +697,7 @@
797 * Watchdog
798 * -------------------------------------------------------------------- */
799
800 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
801 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
802 static struct platform_device at91cap9_wdt_device = {
803 .name = "at91_wdt",
804 .id = -1,
805 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c
806 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 22:04:41.000000000 +0200
807 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 23:48:27.000000000 +0200
808 @@ -643,7 +643,7 @@
809 * Watchdog
810 * -------------------------------------------------------------------- */
811
812 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
813 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
814 static struct platform_device at91sam9260_wdt_device = {
815 .name = "at91_wdt",
816 .id = -1,
817 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c
818 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 22:04:41.000000000 +0200
819 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 23:48:27.000000000 +0200
820 @@ -621,7 +621,7 @@
821 * Watchdog
822 * -------------------------------------------------------------------- */
823
824 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
825 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
826 static struct platform_device at91sam9261_wdt_device = {
827 .name = "at91_wdt",
828 .id = -1,
829 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c
830 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 22:04:41.000000000 +0200
831 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 23:48:27.000000000 +0200
832 @@ -347,111 +347,6 @@
833 void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
834 #endif
835
836 -/* --------------------------------------------------------------------
837 - * Compact Flash (PCMCIA or IDE)
838 - * -------------------------------------------------------------------- */
839 -
840 -#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
841 - defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
842 -
843 -static struct at91_cf_data cf0_data;
844 -
845 -static struct resource cf0_resources[] = {
846 - [0] = {
847 - .start = AT91_CHIPSELECT_4,
848 - .end = AT91_CHIPSELECT_4 + SZ_256M - 1,
849 - .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
850 - }
851 -};
852 -
853 -static struct platform_device cf0_device = {
854 - .id = 0,
855 - .dev = {
856 - .platform_data = &cf0_data,
857 - },
858 - .resource = cf0_resources,
859 - .num_resources = ARRAY_SIZE(cf0_resources),
860 -};
861 -
862 -static struct at91_cf_data cf1_data;
863 -
864 -static struct resource cf1_resources[] = {
865 - [0] = {
866 - .start = AT91_CHIPSELECT_5,
867 - .end = AT91_CHIPSELECT_5 + SZ_256M - 1,
868 - .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
869 - }
870 -};
871 -
872 -static struct platform_device cf1_device = {
873 - .id = 1,
874 - .dev = {
875 - .platform_data = &cf1_data,
876 - },
877 - .resource = cf1_resources,
878 - .num_resources = ARRAY_SIZE(cf1_resources),
879 -};
880 -
881 -void __init at91_add_device_cf(struct at91_cf_data *data)
882 -{
883 - unsigned long ebi0_csa;
884 - struct platform_device *pdev;
885 -
886 - if (!data)
887 - return;
888 -
889 - /*
890 - * assign CS4 or CS5 to SMC with Compact Flash logic support,
891 - * we assume SMC timings are configured by board code,
892 - * except True IDE where timings are controlled by driver
893 - */
894 - ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
895 - switch (data->chipselect) {
896 - case 4:
897 - at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */
898 - ebi0_csa |= AT91_MATRIX_EBI0_CS4A_SMC_CF1;
899 - cf0_data = *data;
900 - pdev = &cf0_device;
901 - break;
902 - case 5:
903 - at91_set_A_periph(AT91_PIN_PD7, 0); /* EBI0_NCS5/CFCS1 */
904 - ebi0_csa |= AT91_MATRIX_EBI0_CS5A_SMC_CF2;
905 - cf1_data = *data;
906 - pdev = &cf1_device;
907 - break;
908 - default:
909 - printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
910 - data->chipselect);
911 - return;
912 - }
913 - at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa);
914 -
915 - if (data->det_pin) {
916 - at91_set_gpio_input(data->det_pin, 1);
917 - at91_set_deglitch(data->det_pin, 1);
918 - }
919 -
920 - if (data->irq_pin) {
921 - at91_set_gpio_input(data->irq_pin, 1);
922 - at91_set_deglitch(data->irq_pin, 1);
923 - }
924 -
925 - if (data->vcc_pin)
926 - /* initially off */
927 - at91_set_gpio_output(data->vcc_pin, 0);
928 -
929 - /* enable EBI controlled pins */
930 - at91_set_A_periph(AT91_PIN_PD5, 1); /* NWAIT */
931 - at91_set_A_periph(AT91_PIN_PD8, 0); /* CFCE1 */
932 - at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
933 - at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
934 -
935 - pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
936 - platform_device_register(pdev);
937 -}
938 -#else
939 -void __init at91_add_device_cf(struct at91_cf_data *data) {}
940 -#endif
941
942 /* --------------------------------------------------------------------
943 * NAND / SmartMedia
944 @@ -959,7 +854,7 @@
945 * Watchdog
946 * -------------------------------------------------------------------- */
947
948 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
949 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
950 static struct platform_device at91sam9263_wdt_device = {
951 .name = "at91_wdt",
952 .id = -1,
953 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c
954 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 22:04:41.000000000 +0200
955 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 23:48:27.000000000 +0200
956 @@ -609,7 +609,7 @@
957 * Watchdog
958 * -------------------------------------------------------------------- */
959
960 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
961 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
962 static struct platform_device at91sam9rl_wdt_device = {
963 .name = "at91_wdt",
964 .id = -1,
965 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c
966 --- linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 22:04:41.000000000 +0200
967 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 23:48:27.000000000 +0200
968 @@ -490,8 +490,7 @@
969
970 /*--------------------------------------------------------------------------*/
971
972 -/*
973 - * This lock class tells lockdep that GPIO irqs are in a different
974 +/* This lock class tells lockdep that GPIO irqs are in a different
975 * category than their parents, so it won't report false recursion.
976 */
977 static struct lock_class_key gpio_lock_class;
978 @@ -510,6 +509,9 @@
979 unsigned id = this->id;
980 unsigned i;
981
982 + /* enable PIO controller's clock */
983 + clk_enable(this->clock);
984 +
985 __raw_writel(~0, this->regbase + PIO_IDR);
986
987 for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
988 @@ -554,14 +556,7 @@
989 data->chipbase = PIN_BASE + i * 32;
990 data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS;
991
992 - /* enable PIO controller's clock */
993 - clk_enable(data->clock);
994 -
995 - /*
996 - * Some processors share peripheral ID between multiple GPIO banks.
997 - * SAM9263 (PIOC, PIOD, PIOE)
998 - * CAP9 (PIOA, PIOB, PIOC, PIOD)
999 - */
1000 + /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */
1001 if (last && last->id == data->id)
1002 last->next = data;
1003 }
1004 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h
1005 --- linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 22:04:41.000000000 +0200
1006 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 23:48:27.000000000 +0200
1007 @@ -56,9 +56,6 @@
1008 u8 vcc_pin; /* power switching */
1009 u8 rst_pin; /* card reset */
1010 u8 chipselect; /* EBI Chip Select number */
1011 - u8 flags;
1012 -#define AT91_CF_TRUE_IDE 0x01
1013 -#define AT91_IDE_SWAP_A0_A2 0x02
1014 };
1015 extern void __init at91_add_device_cf(struct at91_cf_data *data);
1016
1017 @@ -96,7 +93,6 @@
1018 u8 enable_pin; /* chip enable */
1019 u8 det_pin; /* card detect */
1020 u8 rdy_pin; /* ready/busy */
1021 - u8 rdy_pin_active_low; /* rdy_pin value is inverted */
1022 u8 ale; /* address line number connected to ALE */
1023 u8 cle; /* address line number connected to CLE */
1024 u8 bus_width_16; /* buswidth is 16 bit */
1025 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-at91/pm.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c
1026 --- linux-2.6.29.owrt/arch/arm/mach-at91/pm.c 2009-05-10 22:04:41.000000000 +0200
1027 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c 2009-05-10 23:48:27.000000000 +0200
1028 @@ -332,6 +332,7 @@
1029 at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
1030
1031 error:
1032 + sdram_selfrefresh_disable();
1033 target_state = PM_SUSPEND_ON;
1034 at91_irq_resume();
1035 at91_gpio_resume();
1036 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c
1037 --- linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 22:04:41.000000000 +0200
1038 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 23:48:27.000000000 +0200
1039 @@ -311,9 +311,6 @@
1040 gpio_request(gpio + 7, "nCF_SEL");
1041 gpio_direction_output(gpio + 7, 1);
1042
1043 - /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
1044 - setup_usb(500, 8);
1045 -
1046 return 0;
1047 }
1048
1049 @@ -420,6 +417,9 @@
1050 platform_add_devices(davinci_evm_devices,
1051 ARRAY_SIZE(davinci_evm_devices));
1052 evm_init_i2c();
1053 +
1054 + /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
1055 + setup_usb(500, 8);
1056 }
1057
1058 static __init void davinci_evm_irq_init(void)
1059 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c
1060 --- linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 22:04:41.000000000 +0200
1061 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 23:48:27.000000000 +0200
1062 @@ -231,11 +231,6 @@
1063 .lpsc = DAVINCI_LPSC_GPIO,
1064 },
1065 {
1066 - .name = "usb",
1067 - .rate = &commonrate,
1068 - .lpsc = DAVINCI_LPSC_USB,
1069 - },
1070 - {
1071 .name = "AEMIFCLK",
1072 .rate = &commonrate,
1073 .lpsc = DAVINCI_LPSC_AEMIF,
1074 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c
1075 --- linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 22:04:41.000000000 +0200
1076 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 23:48:27.000000000 +0200
1077 @@ -47,7 +47,6 @@
1078 #elif defined(CONFIG_USB_MUSB_HOST)
1079 .mode = MUSB_HOST,
1080 #endif
1081 - .clock = "usb",
1082 .config = &musb_config,
1083 };
1084
1085 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h
1086 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 1970-01-01 01:00:00.000000000 +0100
1087 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 2009-05-10 23:48:27.000000000 +0200
1088 @@ -0,0 +1,3 @@
1089 +/*
1090 + * arch/arm/mach-ep93xx/include/mach/gesbc9312.h
1091 + */
1092 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h
1093 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 22:04:41.000000000 +0200
1094 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 23:48:27.000000000 +0200
1095 @@ -10,6 +10,7 @@
1096
1097 #include "platform.h"
1098
1099 +#include "gesbc9312.h"
1100 #include "ts72xx.h"
1101
1102 #endif
1103 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h
1104 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 22:04:41.000000000 +0200
1105 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 23:48:27.000000000 +0200
1106 @@ -4,8 +4,6 @@
1107
1108 #ifndef __ASSEMBLY__
1109
1110 -struct i2c_board_info;
1111 -
1112 struct ep93xx_eth_data
1113 {
1114 unsigned char dev_addr[6];
1115 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c
1116 --- linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 22:04:41.000000000 +0200
1117 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 23:48:27.000000000 +0200
1118 @@ -42,7 +42,7 @@
1119 writel(0, GPIO_EDGE_CAUSE(32));
1120
1121 for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) {
1122 - set_irq_chip(i, &orion_gpio_irq_chip);
1123 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1124 set_irq_handler(i, handle_level_irq);
1125 irq_desc[i].status |= IRQ_LEVEL;
1126 set_irq_flags(i, IRQF_VALID);
1127 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c
1128 --- linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 22:04:41.000000000 +0200
1129 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 23:48:27.000000000 +0200
1130 @@ -27,7 +27,6 @@
1131 #include <asm/mach/map.h>
1132 #include <asm/mach/flash.h>
1133
1134 -#include <mach/irqs.h>
1135 #include <mach/board.h>
1136 #include <mach/msm_iomap.h>
1137
1138 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c
1139 --- linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 22:04:41.000000000 +0200
1140 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 23:48:27.000000000 +0200
1141 @@ -40,7 +40,7 @@
1142 writel(0, GPIO_EDGE_CAUSE(0));
1143
1144 for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) {
1145 - set_irq_chip(i, &orion_gpio_irq_chip);
1146 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1147 set_irq_handler(i, handle_level_irq);
1148 irq_desc[i].status |= IRQ_LEVEL;
1149 set_irq_flags(i, IRQF_VALID);
1150 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c
1151 --- linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 22:04:41.000000000 +0200
1152 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 23:48:27.000000000 +0200
1153 @@ -23,8 +23,6 @@
1154 #include <linux/init.h>
1155 #include <linux/platform_device.h>
1156 #include <linux/gpio.h>
1157 -
1158 -#include <mach/irqs.h>
1159 #include <mach/hardware.h>
1160
1161 static struct resource imx_csi_resources[] = {
1162 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c
1163 --- linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 22:04:41.000000000 +0200
1164 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 23:48:27.000000000 +0200
1165 @@ -21,7 +21,6 @@
1166 #include <asm/mach/arch.h>
1167 #include <asm/mach/time.h>
1168
1169 -#include <mach/irqs.h>
1170 #include <mach/hardware.h>
1171 #include <mach/common.h>
1172 #include <mach/imx-uart.h>
1173 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c
1174 --- linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 22:04:41.000000000 +0200
1175 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 23:48:27.000000000 +0200
1176 @@ -181,7 +181,7 @@
1177 }
1178 size = OMAP1_MMC_SIZE;
1179
1180 - omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]);
1181 + omap_mmc_add(i, base, size, irq, mmc_data[i]);
1182 };
1183 }
1184
1185 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c
1186 --- linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
1187 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
1188 @@ -28,8 +28,81 @@
1189 #define DPS_RSTCT2_PER_EN (1 << 0)
1190 #define DSP_RSTCT2_WD_PER_EN (1 << 1)
1191
1192 +struct mcbsp_internal_clk {
1193 + struct clk clk;
1194 + struct clk **childs;
1195 + int n_childs;
1196 +};
1197 +
1198 #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
1199 -const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
1200 +static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1201 +{
1202 + const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
1203 + int i;
1204 +
1205 + mclk->n_childs = ARRAY_SIZE(clk_names);
1206 + mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
1207 + GFP_KERNEL);
1208 +
1209 + for (i = 0; i < mclk->n_childs; i++) {
1210 + /* We fake a platform device to get correct device id */
1211 + struct platform_device pdev;
1212 +
1213 + pdev.dev.bus = &platform_bus_type;
1214 + pdev.id = mclk->clk.id;
1215 + mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
1216 + if (IS_ERR(mclk->childs[i]))
1217 + printk(KERN_ERR "Could not get clock %s (%d).\n",
1218 + clk_names[i], mclk->clk.id);
1219 + }
1220 +}
1221 +
1222 +static int omap_mcbsp_clk_enable(struct clk *clk)
1223 +{
1224 + struct mcbsp_internal_clk *mclk = container_of(clk,
1225 + struct mcbsp_internal_clk, clk);
1226 + int i;
1227 +
1228 + for (i = 0; i < mclk->n_childs; i++)
1229 + clk_enable(mclk->childs[i]);
1230 + return 0;
1231 +}
1232 +
1233 +static void omap_mcbsp_clk_disable(struct clk *clk)
1234 +{
1235 + struct mcbsp_internal_clk *mclk = container_of(clk,
1236 + struct mcbsp_internal_clk, clk);
1237 + int i;
1238 +
1239 + for (i = 0; i < mclk->n_childs; i++)
1240 + clk_disable(mclk->childs[i]);
1241 +}
1242 +
1243 +static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
1244 + {
1245 + .clk = {
1246 + .name = "mcbsp_clk",
1247 + .id = 1,
1248 + .enable = omap_mcbsp_clk_enable,
1249 + .disable = omap_mcbsp_clk_disable,
1250 + },
1251 + },
1252 + {
1253 + .clk = {
1254 + .name = "mcbsp_clk",
1255 + .id = 3,
1256 + .enable = omap_mcbsp_clk_enable,
1257 + .disable = omap_mcbsp_clk_disable,
1258 + },
1259 + },
1260 +};
1261 +
1262 +#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
1263 +#else
1264 +#define omap_mcbsp_clks_size 0
1265 +static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
1266 +static inline void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1267 +{ }
1268 #endif
1269
1270 static void omap1_mcbsp_request(unsigned int id)
1271 @@ -94,9 +167,8 @@
1272 .rx_irq = INT_McBSP1RX,
1273 .tx_irq = INT_McBSP1TX,
1274 .ops = &omap1_mcbsp_ops,
1275 - .clk_names = clk_names,
1276 - .num_clks = 3,
1277 - },
1278 + .clk_name = "mcbsp_clk",
1279 + },
1280 {
1281 .phys_base = OMAP1510_MCBSP2_BASE,
1282 .dma_rx_sync = OMAP_DMA_MCBSP2_RX,
1283 @@ -112,8 +184,7 @@
1284 .rx_irq = INT_McBSP3RX,
1285 .tx_irq = INT_McBSP3TX,
1286 .ops = &omap1_mcbsp_ops,
1287 - .clk_names = clk_names,
1288 - .num_clks = 3,
1289 + .clk_name = "mcbsp_clk",
1290 },
1291 };
1292 #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata)
1293 @@ -131,8 +202,7 @@
1294 .rx_irq = INT_McBSP1RX,
1295 .tx_irq = INT_McBSP1TX,
1296 .ops = &omap1_mcbsp_ops,
1297 - .clk_names = clk_names,
1298 - .num_clks = 3,
1299 + .clk_name = "mcbsp_clk",
1300 },
1301 {
1302 .phys_base = OMAP1610_MCBSP2_BASE,
1303 @@ -149,8 +219,7 @@
1304 .rx_irq = INT_McBSP3RX,
1305 .tx_irq = INT_McBSP3TX,
1306 .ops = &omap1_mcbsp_ops,
1307 - .clk_names = clk_names,
1308 - .num_clks = 3,
1309 + .clk_name = "mcbsp_clk",
1310 },
1311 };
1312 #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata)
1313 @@ -161,6 +230,15 @@
1314
1315 int __init omap1_mcbsp_init(void)
1316 {
1317 + int i;
1318 +
1319 + for (i = 0; i < omap_mcbsp_clks_size; i++) {
1320 + if (cpu_is_omap15xx() || cpu_is_omap16xx()) {
1321 + omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
1322 + clk_register(&omap_mcbsp_clks[i].clk);
1323 + }
1324 + }
1325 +
1326 if (cpu_is_omap730())
1327 omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ;
1328 if (cpu_is_omap15xx())
1329 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c
1330 --- linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 22:04:41.000000000 +0200
1331 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 23:48:27.000000000 +0200
1332 @@ -81,7 +81,7 @@
1333 }
1334
1335 ldp_smc911x_resources[0].start = cs_mem_base + 0x0;
1336 - ldp_smc911x_resources[0].end = cs_mem_base + 0xff;
1337 + ldp_smc911x_resources[0].end = cs_mem_base + 0xf;
1338 udelay(100);
1339
1340 eth_gpio = LDP_SMC911X_GPIO;
1341 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c
1342 --- linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 22:04:41.000000000 +0200
1343 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 23:48:27.000000000 +0200
1344 @@ -178,9 +178,7 @@
1345 #ifdef CONFIG_I2C2_OMAP_BEAGLE
1346 omap_register_i2c_bus(2, 400, NULL, 0);
1347 #endif
1348 - /* Bus 3 is attached to the DVI port where devices like the pico DLP
1349 - * projector don't work reliably with 400kHz */
1350 - omap_register_i2c_bus(3, 100, NULL, 0);
1351 + omap_register_i2c_bus(3, 400, NULL, 0);
1352 return 0;
1353 }
1354
1355 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c
1356 --- linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 22:04:41.000000000 +0200
1357 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 23:48:27.000000000 +0200
1358 @@ -565,7 +565,7 @@
1359 *
1360 * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
1361 * find the corresponding register field value. The return register value is
1362 - * the value before left-shifting. Returns ~0 on error
1363 + * the value before left-shifting. Returns 0xffffffff on error
1364 */
1365 u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
1366 {
1367 @@ -577,7 +577,7 @@
1368
1369 clks = omap2_get_clksel_by_parent(clk, clk->parent);
1370 if (clks == NULL)
1371 - return ~0;
1372 + return 0;
1373
1374 for (clkr = clks->rates; clkr->div; clkr++) {
1375 if ((clkr->flags & cpu_mask) && (clkr->div == div))
1376 @@ -588,7 +588,7 @@
1377 printk(KERN_ERR "clock: Could not find divisor %d for "
1378 "clock %s parent %s\n", div, clk->name,
1379 clk->parent->name);
1380 - return ~0;
1381 + return 0;
1382 }
1383
1384 return clkr->val;
1385 @@ -708,7 +708,7 @@
1386 return 0;
1387
1388 for (clkr = clks->rates; clkr->div; clkr++) {
1389 - if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
1390 + if (clkr->flags & (cpu_mask | DEFAULT_RATE))
1391 break; /* Found the default rate for this platform */
1392 }
1393
1394 @@ -746,7 +746,7 @@
1395 return -EINVAL;
1396
1397 if (clk->usecount > 0)
1398 - omap2_clk_disable(clk);
1399 + _omap2_clk_disable(clk);
1400
1401 /* Set new source value (previous dividers if any in effect) */
1402 reg_val = __raw_readl(src_addr) & ~field_mask;
1403 @@ -759,10 +759,10 @@
1404 wmb();
1405 }
1406
1407 - clk->parent = new_parent;
1408 -
1409 if (clk->usecount > 0)
1410 - omap2_clk_enable(clk);
1411 + _omap2_clk_enable(clk);
1412 +
1413 + clk->parent = new_parent;
1414
1415 /* CLKSEL clocks follow their parents' rates, divided by a divisor */
1416 clk->rate = new_parent->rate;
1417 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c
1418 --- linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 22:04:41.000000000 +0200
1419 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 23:48:27.000000000 +0200
1420 @@ -421,7 +421,6 @@
1421 int nr_controllers)
1422 {
1423 int i;
1424 - char *name;
1425
1426 for (i = 0; i < nr_controllers; i++) {
1427 unsigned long base, size;
1428 @@ -451,14 +450,12 @@
1429 continue;
1430 }
1431
1432 - if (cpu_is_omap2420()) {
1433 + if (cpu_is_omap2420())
1434 size = OMAP2420_MMC_SIZE;
1435 - name = "mmci-omap";
1436 - } else {
1437 + else
1438 size = HSMMC_SIZE;
1439 - name = "mmci-omap-hs";
1440 - }
1441 - omap_mmc_add(name, i, base, size, irq, mmc_data[i]);
1442 +
1443 + omap_mmc_add(i, base, size, irq, mmc_data[i]);
1444 };
1445 }
1446
1447 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/id.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c
1448 --- linux-2.6.29.owrt/arch/arm/mach-omap2/id.c 2009-05-10 22:04:41.000000000 +0200
1449 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c 2009-05-10 23:48:27.000000000 +0200
1450 @@ -172,13 +172,9 @@
1451 omap_revision = OMAP3430_REV_ES3_0;
1452 rev_name = "ES3.0";
1453 break;
1454 - case 4:
1455 - omap_revision = OMAP3430_REV_ES3_1;
1456 - rev_name = "ES3.1";
1457 - break;
1458 default:
1459 /* Use the latest known revision as default */
1460 - omap_revision = OMAP3430_REV_ES3_1;
1461 + omap_revision = OMAP3430_REV_ES3_0;
1462 rev_name = "Unknown revision\n";
1463 }
1464 }
1465 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c
1466 --- linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 22:04:41.000000000 +0200
1467 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 23:48:27.000000000 +0200
1468 @@ -134,7 +134,6 @@
1469 .ack = omap_mask_ack_irq,
1470 .mask = omap_mask_irq,
1471 .unmask = omap_unmask_irq,
1472 - .disable = omap_mask_irq,
1473 };
1474
1475 static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
1476 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c
1477 --- linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
1478 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
1479 @@ -24,7 +24,106 @@
1480 #include <mach/cpu.h>
1481 #include <mach/mcbsp.h>
1482
1483 -const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
1484 +struct mcbsp_internal_clk {
1485 + struct clk clk;
1486 + struct clk **childs;
1487 + int n_childs;
1488 +};
1489 +
1490 +#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
1491 +static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1492 +{
1493 + const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
1494 + int i;
1495 +
1496 + mclk->n_childs = ARRAY_SIZE(clk_names);
1497 + mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
1498 + GFP_KERNEL);
1499 +
1500 + for (i = 0; i < mclk->n_childs; i++) {
1501 + /* We fake a platform device to get correct device id */
1502 + struct platform_device pdev;
1503 +
1504 + pdev.dev.bus = &platform_bus_type;
1505 + pdev.id = mclk->clk.id;
1506 + mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
1507 + if (IS_ERR(mclk->childs[i]))
1508 + printk(KERN_ERR "Could not get clock %s (%d).\n",
1509 + clk_names[i], mclk->clk.id);
1510 + }
1511 +}
1512 +
1513 +static int omap_mcbsp_clk_enable(struct clk *clk)
1514 +{
1515 + struct mcbsp_internal_clk *mclk = container_of(clk,
1516 + struct mcbsp_internal_clk, clk);
1517 + int i;
1518 +
1519 + for (i = 0; i < mclk->n_childs; i++)
1520 + clk_enable(mclk->childs[i]);
1521 + return 0;
1522 +}
1523 +
1524 +static void omap_mcbsp_clk_disable(struct clk *clk)
1525 +{
1526 + struct mcbsp_internal_clk *mclk = container_of(clk,
1527 + struct mcbsp_internal_clk, clk);
1528 + int i;
1529 +
1530 + for (i = 0; i < mclk->n_childs; i++)
1531 + clk_disable(mclk->childs[i]);
1532 +}
1533 +
1534 +static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
1535 + {
1536 + .clk = {
1537 + .name = "mcbsp_clk",
1538 + .id = 1,
1539 + .enable = omap_mcbsp_clk_enable,
1540 + .disable = omap_mcbsp_clk_disable,
1541 + },
1542 + },
1543 + {
1544 + .clk = {
1545 + .name = "mcbsp_clk",
1546 + .id = 2,
1547 + .enable = omap_mcbsp_clk_enable,
1548 + .disable = omap_mcbsp_clk_disable,
1549 + },
1550 + },
1551 + {
1552 + .clk = {
1553 + .name = "mcbsp_clk",
1554 + .id = 3,
1555 + .enable = omap_mcbsp_clk_enable,
1556 + .disable = omap_mcbsp_clk_disable,
1557 + },
1558 + },
1559 + {
1560 + .clk = {
1561 + .name = "mcbsp_clk",
1562 + .id = 4,
1563 + .enable = omap_mcbsp_clk_enable,
1564 + .disable = omap_mcbsp_clk_disable,
1565 + },
1566 + },
1567 + {
1568 + .clk = {
1569 + .name = "mcbsp_clk",
1570 + .id = 5,
1571 + .enable = omap_mcbsp_clk_enable,
1572 + .disable = omap_mcbsp_clk_disable,
1573 + },
1574 + },
1575 +};
1576 +
1577 +#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
1578 +#else
1579 +#define omap_mcbsp_clks_size 0
1580 +static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
1581 +static inline void omap_mcbsp_clk_init(struct clk *clk)
1582 +{ }
1583 +#endif
1584
1585 static void omap2_mcbsp2_mux_setup(void)
1586 {
1587 @@ -57,8 +156,7 @@
1588 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1589 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1590 .ops = &omap2_mcbsp_ops,
1591 - .clk_names = clk_names,
1592 - .num_clks = 2,
1593 + .clk_name = "mcbsp_clk",
1594 },
1595 {
1596 .phys_base = OMAP24XX_MCBSP2_BASE,
1597 @@ -67,8 +165,7 @@
1598 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1599 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1600 .ops = &omap2_mcbsp_ops,
1601 - .clk_names = clk_names,
1602 - .num_clks = 2,
1603 + .clk_name = "mcbsp_clk",
1604 },
1605 };
1606 #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata)
1607 @@ -86,8 +183,7 @@
1608 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1609 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1610 .ops = &omap2_mcbsp_ops,
1611 - .clk_names = clk_names,
1612 - .num_clks = 2,
1613 + .clk_name = "mcbsp_clk",
1614 },
1615 {
1616 .phys_base = OMAP24XX_MCBSP2_BASE,
1617 @@ -96,8 +192,7 @@
1618 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1619 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1620 .ops = &omap2_mcbsp_ops,
1621 - .clk_names = clk_names,
1622 - .num_clks = 2,
1623 + .clk_name = "mcbsp_clk",
1624 },
1625 {
1626 .phys_base = OMAP2430_MCBSP3_BASE,
1627 @@ -106,8 +201,7 @@
1628 .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
1629 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
1630 .ops = &omap2_mcbsp_ops,
1631 - .clk_names = clk_names,
1632 - .num_clks = 2,
1633 + .clk_name = "mcbsp_clk",
1634 },
1635 {
1636 .phys_base = OMAP2430_MCBSP4_BASE,
1637 @@ -116,8 +210,7 @@
1638 .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
1639 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
1640 .ops = &omap2_mcbsp_ops,
1641 - .clk_names = clk_names,
1642 - .num_clks = 2,
1643 + .clk_name = "mcbsp_clk",
1644 },
1645 {
1646 .phys_base = OMAP2430_MCBSP5_BASE,
1647 @@ -126,8 +219,7 @@
1648 .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
1649 .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
1650 .ops = &omap2_mcbsp_ops,
1651 - .clk_names = clk_names,
1652 - .num_clks = 2,
1653 + .clk_name = "mcbsp_clk",
1654 },
1655 };
1656 #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata)
1657 @@ -145,8 +237,7 @@
1658 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1659 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1660 .ops = &omap2_mcbsp_ops,
1661 - .clk_names = clk_names,
1662 - .num_clks = 2,
1663 + .clk_name = "mcbsp_clk",
1664 },
1665 {
1666 .phys_base = OMAP34XX_MCBSP2_BASE,
1667 @@ -155,8 +246,7 @@
1668 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1669 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1670 .ops = &omap2_mcbsp_ops,
1671 - .clk_names = clk_names,
1672 - .num_clks = 2,
1673 + .clk_name = "mcbsp_clk",
1674 },
1675 {
1676 .phys_base = OMAP34XX_MCBSP3_BASE,
1677 @@ -165,8 +255,7 @@
1678 .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
1679 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
1680 .ops = &omap2_mcbsp_ops,
1681 - .clk_names = clk_names,
1682 - .num_clks = 2,
1683 + .clk_name = "mcbsp_clk",
1684 },
1685 {
1686 .phys_base = OMAP34XX_MCBSP4_BASE,
1687 @@ -175,8 +264,7 @@
1688 .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
1689 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
1690 .ops = &omap2_mcbsp_ops,
1691 - .clk_names = clk_names,
1692 - .num_clks = 2,
1693 + .clk_name = "mcbsp_clk",
1694 },
1695 {
1696 .phys_base = OMAP34XX_MCBSP5_BASE,
1697 @@ -185,8 +273,7 @@
1698 .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
1699 .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
1700 .ops = &omap2_mcbsp_ops,
1701 - .clk_names = clk_names,
1702 - .num_clks = 2,
1703 + .clk_name = "mcbsp_clk",
1704 },
1705 };
1706 #define OMAP34XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap34xx_mcbsp_pdata)
1707 @@ -197,6 +284,14 @@
1708
1709 static int __init omap2_mcbsp_init(void)
1710 {
1711 + int i;
1712 +
1713 + for (i = 0; i < omap_mcbsp_clks_size; i++) {
1714 + /* Once we call clk_get inside init, we do not register it */
1715 + omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
1716 + clk_register(&omap_mcbsp_clks[i].clk);
1717 + }
1718 +
1719 if (cpu_is_omap2420())
1720 omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ;
1721 if (cpu_is_omap2430())
1722 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S
1723 --- linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 22:04:41.000000000 +0200
1724 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 23:48:28.000000000 +0200
1725 @@ -93,8 +93,9 @@
1726 orr r4, r4, #0x40 @ enable self refresh on idle req
1727 mov r5, #0x2000 @ set delay (DPLL relock + DLL relock)
1728 str r4, [r2] @ make it so
1729 + mov r2, #0
1730 nop
1731 - mcr p15, 0, r3, c7, c0, 4 @ wait for interrupt
1732 + mcr p15, 0, r2, c7, c0, 4 @ wait for interrupt
1733 nop
1734 loop:
1735 subs r5, r5, #0x1 @ awake, wait just a bit
1736 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c
1737 --- linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 22:04:41.000000000 +0200
1738 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 23:48:28.000000000 +0200
1739 @@ -118,8 +118,7 @@
1740 clockevent_gpt.max_delta_ns =
1741 clockevent_delta2ns(0xffffffff, &clockevent_gpt);
1742 clockevent_gpt.min_delta_ns =
1743 - clockevent_delta2ns(3, &clockevent_gpt);
1744 - /* Timer internal resynch latency. */
1745 + clockevent_delta2ns(1, &clockevent_gpt);
1746
1747 clockevent_gpt.cpumask = cpumask_of(0);
1748 clockevents_register_device(&clockevent_gpt);
1749 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c
1750 --- linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 22:04:41.000000000 +0200
1751 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 23:48:28.000000000 +0200
1752 @@ -431,10 +431,6 @@
1753 /*****************************************************************************
1754 * XOR engine
1755 ****************************************************************************/
1756 -struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
1757 - .dram = &orion5x_mbus_dram_info,
1758 -};
1759 -
1760 static struct resource orion5x_xor_shared_resources[] = {
1761 {
1762 .name = "xor low",
1763 @@ -452,9 +448,6 @@
1764 static struct platform_device orion5x_xor_shared = {
1765 .name = MV_XOR_SHARED_NAME,
1766 .id = 0,
1767 - .dev = {
1768 - .platform_data = &orion5x_xor_shared_data,
1769 - },
1770 .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
1771 .resource = orion5x_xor_shared_resources,
1772 };
1773 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c
1774 --- linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 22:04:41.000000000 +0200
1775 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 23:48:28.000000000 +0200
1776 @@ -44,7 +44,7 @@
1777 * User can use set_type() if he wants to use edge types handlers.
1778 */
1779 for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) {
1780 - set_irq_chip(i, &orion_gpio_irq_chip);
1781 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1782 set_irq_handler(i, handle_level_irq);
1783 irq_desc[i].status |= IRQ_LEVEL;
1784 set_irq_flags(i, IRQF_VALID);
1785 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c
1786 --- linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 22:04:41.000000000 +0200
1787 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 23:48:28.000000000 +0200
1788 @@ -121,16 +121,6 @@
1789 if (dma_channels == NULL)
1790 return -ENOMEM;
1791
1792 - /* dma channel priorities on pxa2xx processors:
1793 - * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
1794 - * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
1795 - * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
1796 - */
1797 - for (i = 0; i < num_ch; i++) {
1798 - DCSR(i) = 0;
1799 - dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
1800 - }
1801 -
1802 ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
1803 if (ret) {
1804 printk (KERN_CRIT "Wow! Can't register IRQ for DMA\n");
1805 @@ -138,6 +128,14 @@
1806 return ret;
1807 }
1808
1809 + /* dma channel priorities on pxa2xx processors:
1810 + * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
1811 + * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
1812 + * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
1813 + */
1814 + for (i = 0; i < num_ch; i++)
1815 + dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
1816 +
1817 num_dma_channels = num_ch;
1818 return 0;
1819 }
1820 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h
1821 --- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 22:04:41.000000000 +0200
1822 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 23:48:28.000000000 +0200
1823 @@ -1,8 +1,6 @@
1824 #ifndef __ASM_ARCH_REGS_AC97_H
1825 #define __ASM_ARCH_REGS_AC97_H
1826
1827 -#include <mach/hardware.h>
1828 -
1829 /*
1830 * AC97 Controller registers
1831 */
1832 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h
1833 --- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 22:04:41.000000000 +0200
1834 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 23:48:28.000000000 +0200
1835 @@ -41,9 +41,6 @@
1836 #elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
1837 #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */
1838 #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */
1839 -#endif
1840 -
1841 -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
1842 #define SSCR0_EDSS (1 << 20) /* Extended data size select */
1843 #define SSCR0_NCS (1 << 21) /* Network clock select */
1844 #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */
1845 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c
1846 --- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 22:04:41.000000000 +0200
1847 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 23:48:28.000000000 +0200
1848 @@ -88,13 +88,13 @@
1849 static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0);
1850
1851 static struct clk_lookup common_clkregs[] = {
1852 - INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
1853 + INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", "NANDCLK"),
1854 };
1855
1856 static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
1857
1858 static struct clk_lookup pxa310_clkregs[] = {
1859 - INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL),
1860 + INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", "MMCCLK"),
1861 };
1862
1863 static int __init pxa300_init(void)
1864 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c
1865 --- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 22:04:41.000000000 +0200
1866 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 23:48:28.000000000 +0200
1867 @@ -83,7 +83,7 @@
1868 static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0);
1869
1870 static struct clk_lookup pxa320_clkregs[] = {
1871 - INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
1872 + INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", "NANDCLK"),
1873 };
1874
1875 static int __init pxa320_init(void)
1876 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c
1877 --- linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 22:04:41.000000000 +0200
1878 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 23:48:28.000000000 +0200
1879 @@ -19,7 +19,6 @@
1880 #include <linux/serial_8250.h>
1881 #include <linux/ata_platform.h>
1882 #include <linux/io.h>
1883 -#include <linux/i2c.h>
1884
1885 #include <asm/elf.h>
1886 #include <asm/mach-types.h>
1887 @@ -202,13 +201,8 @@
1888 &pata_device,
1889 };
1890
1891 -static struct i2c_board_info i2c_rtc = {
1892 - I2C_BOARD_INFO("pcf8583", 0x50)
1893 -};
1894 -
1895 static int __init rpc_init(void)
1896 {
1897 - i2c_register_board_info(0, &i2c_rtc, 1);
1898 return platform_add_devices(devs, ARRAY_SIZE(devs));
1899 }
1900
1901 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c
1902 --- linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 22:04:41.000000000 +0200
1903 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 23:48:28.000000000 +0200
1904 @@ -129,7 +129,7 @@
1905 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
1906 };
1907
1908 -static struct map_desc smdk6410_iodesc[] = {};
1909 +struct map_desc smdk6410_iodesc[] = {};
1910
1911 static struct platform_device *smdk6410_devices[] __initdata = {
1912 #ifdef CONFIG_SMDK6410_SD_CH0
1913 @@ -146,7 +146,7 @@
1914
1915 static struct i2c_board_info i2c_devs0[] __initdata = {
1916 { I2C_BOARD_INFO("24c08", 0x50), },
1917 - { I2C_BOARD_INFO("wm8580", 0x1b), },
1918 + { I2C_BOARD_INFO("WM8580", 0X1b), },
1919 };
1920
1921 static struct i2c_board_info i2c_devs1[] __initdata = {
1922 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c
1923 --- linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 22:04:41.000000000 +0200
1924 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 23:48:28.000000000 +0200
1925 @@ -289,7 +289,7 @@
1926 };
1927
1928 static struct platform_device sa11x0mtd_device = {
1929 - .name = "sa1100-mtd",
1930 + .name = "flash",
1931 .id = -1,
1932 };
1933
1934 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S
1935 --- linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 22:04:41.000000000 +0200
1936 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 23:48:28.000000000 +0200
1937 @@ -23,8 +23,7 @@
1938 #ifdef CONFIG_CPU_32v6K
1939 clrex
1940 #else
1941 - sub r1, sp, #4 @ Get unused stack location
1942 - strex r0, r1, [r1] @ Clear the exclusive monitor
1943 + strex r0, r1, [sp] @ Clear the exclusive monitor
1944 #endif
1945 mrc p15, 0, r1, c5, c0, 0 @ get FSR
1946 mrc p15, 0, r0, c6, c0, 0 @ get FAR
1947 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c
1948 --- linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 22:04:41.000000000 +0200
1949 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 23:48:28.000000000 +0200
1950 @@ -13,7 +13,7 @@
1951 #include <linux/init.h>
1952 #include <linux/highmem.h>
1953
1954 -static void __naked
1955 +static void __attribute__((naked))
1956 feroceon_copy_user_page(void *kto, const void *kfrom)
1957 {
1958 asm("\
1959 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c
1960 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 22:04:41.000000000 +0200
1961 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 23:48:28.000000000 +0200
1962 @@ -15,7 +15,7 @@
1963 *
1964 * FIXME: do we need to handle cache stuff...
1965 */
1966 -static void __naked
1967 +static void __attribute__((naked))
1968 v3_copy_user_page(void *kto, const void *kfrom)
1969 {
1970 asm("\n\
1971 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c
1972 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 22:04:41.000000000 +0200
1973 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 23:48:28.000000000 +0200
1974 @@ -44,7 +44,7 @@
1975 * instruction. If your processor does not supply this, you have to write your
1976 * own copy_user_highpage that does the right thing.
1977 */
1978 -static void __naked
1979 +static void __attribute__((naked))
1980 mc_copy_user_page(void *from, void *to)
1981 {
1982 asm volatile(
1983 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c
1984 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 22:04:41.000000000 +0200
1985 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 23:48:28.000000000 +0200
1986 @@ -22,7 +22,7 @@
1987 * instruction. If your processor does not supply this, you have to write your
1988 * own copy_user_highpage that does the right thing.
1989 */
1990 -static void __naked
1991 +static void __attribute__((naked))
1992 v4wb_copy_user_page(void *kto, const void *kfrom)
1993 {
1994 asm("\
1995 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c
1996 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 22:04:41.000000000 +0200
1997 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 23:48:28.000000000 +0200
1998 @@ -20,7 +20,7 @@
1999 * dirty data in the cache. However, we do have to ensure that
2000 * subsequent reads are up to date.
2001 */
2002 -static void __naked
2003 +static void __attribute__((naked))
2004 v4wt_copy_user_page(void *kto, const void *kfrom)
2005 {
2006 asm("\
2007 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c
2008 --- linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 22:04:41.000000000 +0200
2009 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 23:48:28.000000000 +0200
2010 @@ -29,7 +29,7 @@
2011 * if we eventually end up using our copied page.
2012 *
2013 */
2014 -static void __naked
2015 +static void __attribute__((naked))
2016 xsc3_mc_copy_user_page(void *kto, const void *kfrom)
2017 {
2018 asm("\
2019 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c
2020 --- linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 22:04:41.000000000 +0200
2021 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 23:48:28.000000000 +0200
2022 @@ -42,7 +42,7 @@
2023 * Dcache aliasing issue. The writes will be forwarded to the write buffer,
2024 * and merged as appropriate.
2025 */
2026 -static void __naked
2027 +static void __attribute__((naked))
2028 mc_copy_user_page(void *from, void *to)
2029 {
2030 /*
2031 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c
2032 --- linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 22:04:41.000000000 +0200
2033 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 23:48:28.000000000 +0200
2034 @@ -490,30 +490,26 @@
2035 */
2036 void dma_cache_maint(const void *start, size_t size, int direction)
2037 {
2038 - void (*inner_op)(const void *, const void *);
2039 - void (*outer_op)(unsigned long, unsigned long);
2040 + const void *end = start + size;
2041
2042 - BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
2043 + BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1));
2044
2045 switch (direction) {
2046 case DMA_FROM_DEVICE: /* invalidate only */
2047 - inner_op = dmac_inv_range;
2048 - outer_op = outer_inv_range;
2049 + dmac_inv_range(start, end);
2050 + outer_inv_range(__pa(start), __pa(end));
2051 break;
2052 case DMA_TO_DEVICE: /* writeback only */
2053 - inner_op = dmac_clean_range;
2054 - outer_op = outer_clean_range;
2055 + dmac_clean_range(start, end);
2056 + outer_clean_range(__pa(start), __pa(end));
2057 break;
2058 case DMA_BIDIRECTIONAL: /* writeback and invalidate */
2059 - inner_op = dmac_flush_range;
2060 - outer_op = outer_flush_range;
2061 + dmac_flush_range(start, end);
2062 + outer_flush_range(__pa(start), __pa(end));
2063 break;
2064 default:
2065 BUG();
2066 }
2067 -
2068 - inner_op(start, start + size);
2069 - outer_op(__pa(start), __pa(start) + size);
2070 }
2071 EXPORT_SYMBOL(dma_cache_maint);
2072
2073 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/fault-armv.c linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c
2074 --- linux-2.6.29.owrt/arch/arm/mm/fault-armv.c 2009-05-10 22:04:41.000000000 +0200
2075 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c 2009-05-10 23:48:28.000000000 +0200
2076 @@ -66,10 +66,7 @@
2077 * fault (ie, is old), we can safely ignore any issues.
2078 */
2079 if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) {
2080 - unsigned long pfn = pte_pfn(entry);
2081 - flush_cache_page(vma, address, pfn);
2082 - outer_flush_range((pfn << PAGE_SHIFT),
2083 - (pfn << PAGE_SHIFT) + PAGE_SIZE);
2084 + flush_cache_page(vma, address, pte_pfn(entry));
2085 pte_val(entry) &= ~L_PTE_MT_MASK;
2086 pte_val(entry) |= shared_pte_mask;
2087 set_pte_at(vma->vm_mm, address, pte, entry);
2088 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/init.c linux-2.6.29-rc3.owrt/arch/arm/mm/init.c
2089 --- linux-2.6.29.owrt/arch/arm/mm/init.c 2009-05-10 22:04:41.000000000 +0200
2090 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/init.c 2009-05-10 23:48:28.000000000 +0200
2091 @@ -382,7 +382,7 @@
2092 for_each_node(node)
2093 bootmem_free_node(node, mi);
2094
2095 - high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
2096 + high_memory = __va(memend_pfn << PAGE_SHIFT);
2097
2098 /*
2099 * This doesn't seem to be used by the Linux memory manager any
2100 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/mmap.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c
2101 --- linux-2.6.29.owrt/arch/arm/mm/mmap.c 2009-05-10 22:04:41.000000000 +0200
2102 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c 2009-05-10 23:48:28.000000000 +0200
2103 @@ -124,7 +124,7 @@
2104 {
2105 if (addr < PHYS_OFFSET)
2106 return 0;
2107 - if (addr + size >= __pa(high_memory - 1))
2108 + if (addr + size > __pa(high_memory))
2109 return 0;
2110
2111 return 1;
2112 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/mm/mmu.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c
2113 --- linux-2.6.29.owrt/arch/arm/mm/mmu.c 2009-05-10 22:04:41.000000000 +0200
2114 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c 2009-05-10 23:48:28.000000000 +0200
2115 @@ -693,8 +693,7 @@
2116 * Check whether this memory bank would entirely overlap
2117 * the vmalloc area.
2118 */
2119 - if (__va(bank->start) >= VMALLOC_MIN ||
2120 - __va(bank->start) < PAGE_OFFSET) {
2121 + if (__va(bank->start) >= VMALLOC_MIN) {
2122 printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx "
2123 "(vmalloc region overlap).\n",
2124 bank->start, bank->start + bank->size - 1);
2125 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h
2126 --- linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
2127 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h 1970-01-01 01:00:00.000000000 +0100
2128 @@ -1,36 +0,0 @@
2129 -#ifndef ASMARM_ARCH_MMC_H
2130 -#define ASMARM_ARCH_MMC_H
2131 -
2132 -#include <linux/mmc/host.h>
2133 -
2134 -struct device;
2135 -
2136 -/* board specific SDHC data, optional.
2137 - * If not present, a writable card with 3,3V is assumed.
2138 - */
2139 -struct imxmmc_platform_data {
2140 - /* Return values for the get_ro callback should be:
2141 - * 0 for a read/write card
2142 - * 1 for a read-only card
2143 - * -ENOSYS when not supported (equal to NULL callback)
2144 - * or a negative errno value when something bad happened
2145 - */
2146 - int (*get_ro)(struct device *);
2147 -
2148 - /* board specific hook to (de)initialize the SD slot.
2149 - * The board code can call 'handler' on a card detection
2150 - * change giving data as argument.
2151 - */
2152 - int (*init)(struct device *dev, irq_handler_t handler, void *data);
2153 - void (*exit)(struct device *dev, void *data);
2154 -
2155 - /* available voltages. If not given, assume
2156 - * MMC_VDD_32_33 | MMC_VDD_33_34
2157 - */
2158 - unsigned int ocr_avail;
2159 -
2160 - /* adjust slot voltage */
2161 - void (*setpower)(struct device *, unsigned int vdd);
2162 -};
2163 -
2164 -#endif
2165 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/common.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c
2166 --- linux-2.6.29.owrt/arch/arm/plat-omap/common.c 2009-05-10 22:04:41.000000000 +0200
2167 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c 2009-05-10 23:48:28.000000000 +0200
2168 @@ -200,16 +200,20 @@
2169 };
2170
2171 /*
2172 + * Rounds down to nearest nsec.
2173 + */
2174 +unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
2175 +{
2176 + return cyc2ns(&clocksource_32k, ticks_32k);
2177 +}
2178 +
2179 +/*
2180 * Returns current time from boot in nsecs. It's OK for this to wrap
2181 * around for now, as it's just a relative time stamp.
2182 */
2183 unsigned long long sched_clock(void)
2184 {
2185 - unsigned long long ret;
2186 -
2187 - ret = (unsigned long long)omap_32k_read();
2188 - ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
2189 - return ret;
2190 + return omap_32k_ticks_to_nsecs(omap_32k_read());
2191 }
2192
2193 static int __init omap_init_clocksource_32k(void)
2194 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/devices.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c
2195 --- linux-2.6.29.owrt/arch/arm/plat-omap/devices.c 2009-05-10 22:04:41.000000000 +0200
2196 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c 2009-05-10 23:48:28.000000000 +0200
2197 @@ -200,15 +200,14 @@
2198 /*
2199 * Register MMC devices. Called from mach-omap1 and mach-omap2 device init.
2200 */
2201 -int __init omap_mmc_add(const char *name, int id, unsigned long base,
2202 - unsigned long size, unsigned int irq,
2203 - struct omap_mmc_platform_data *data)
2204 +int __init omap_mmc_add(int id, unsigned long base, unsigned long size,
2205 + unsigned int irq, struct omap_mmc_platform_data *data)
2206 {
2207 struct platform_device *pdev;
2208 struct resource res[OMAP_MMC_NR_RES];
2209 int ret;
2210
2211 - pdev = platform_device_alloc(name, id);
2212 + pdev = platform_device_alloc("mmci-omap", id);
2213 if (!pdev)
2214 return -ENOMEM;
2215
2216 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/dma.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c
2217 --- linux-2.6.29.owrt/arch/arm/plat-omap/dma.c 2009-05-10 22:04:41.000000000 +0200
2218 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c 2009-05-10 23:48:28.000000000 +0200
2219 @@ -709,7 +709,6 @@
2220 chan->dev_name = dev_name;
2221 chan->callback = callback;
2222 chan->data = data;
2223 - chan->flags = 0;
2224
2225 #ifndef CONFIG_ARCH_OMAP1
2226 if (cpu_class_is_omap2()) {
2227 @@ -1889,11 +1888,11 @@
2228 status = dma_read(CSR(ch));
2229 }
2230
2231 - dma_write(status, CSR(ch));
2232 -
2233 if (likely(dma_chan[ch].callback != NULL))
2234 dma_chan[ch].callback(ch, status, dma_chan[ch].data);
2235
2236 + dma_write(status, CSR(ch));
2237 +
2238 return 0;
2239 }
2240
2241 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h
2242 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 22:04:41.000000000 +0200
2243 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 23:48:28.000000000 +0200
2244 @@ -35,7 +35,7 @@
2245 extern struct sys_timer omap_timer;
2246 extern void omap_serial_init(void);
2247 extern void omap_serial_enable_clocks(int enable);
2248 -#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
2249 +#ifdef CONFIG_I2C_OMAP
2250 extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
2251 struct i2c_board_info const *info,
2252 unsigned len);
2253 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h
2254 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 22:04:41.000000000 +0200
2255 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 23:48:28.000000000 +0200
2256 @@ -339,7 +339,6 @@
2257 #define OMAP3430_REV_ES2_0 0x34301034
2258 #define OMAP3430_REV_ES2_1 0x34302034
2259 #define OMAP3430_REV_ES3_0 0x34303034
2260 -#define OMAP3430_REV_ES3_1 0x34304034
2261
2262 /*
2263 * omap_chip bits
2264 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h
2265 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 22:04:41.000000000 +0200
2266 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 23:48:28.000000000 +0200
2267 @@ -344,8 +344,7 @@
2268 u8 dma_rx_sync, dma_tx_sync;
2269 u16 rx_irq, tx_irq;
2270 struct omap_mcbsp_ops *ops;
2271 - char const **clk_names;
2272 - int num_clks;
2273 + char const *clk_name;
2274 };
2275
2276 struct omap_mcbsp {
2277 @@ -377,8 +376,7 @@
2278 /* Protect the field .free, while checking if the mcbsp is in use */
2279 spinlock_t lock;
2280 struct omap_mcbsp_platform_data *pdata;
2281 - struct clk **clks;
2282 - int num_clks;
2283 + struct clk *clk;
2284 };
2285 extern struct omap_mcbsp **mcbsp_ptr;
2286 extern int omap_mcbsp_count;
2287 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h
2288 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
2289 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 23:48:28.000000000 +0200
2290 @@ -115,9 +115,8 @@
2291 int nr_controllers);
2292 void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
2293 int nr_controllers);
2294 -int omap_mmc_add(const char *name, int id, unsigned long base,
2295 - unsigned long size, unsigned int irq,
2296 - struct omap_mmc_platform_data *data);
2297 +int omap_mmc_add(int id, unsigned long base, unsigned long size,
2298 + unsigned int irq, struct omap_mmc_platform_data *data);
2299 #else
2300 static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
2301 int nr_controllers)
2302 @@ -127,9 +126,8 @@
2303 int nr_controllers)
2304 {
2305 }
2306 -static inline int omap_mmc_add(const char *name, int id, unsigned long base,
2307 - unsigned long size, unsigned int irq,
2308 - struct omap_mmc_platform_data *data)
2309 +static inline int omap_mmc_add(int id, unsigned long base, unsigned long size,
2310 + unsigned int irq, struct omap_mmc_platform_data *data)
2311 {
2312 return 0;
2313 }
2314 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h
2315 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 22:04:41.000000000 +0200
2316 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 23:48:28.000000000 +0200
2317 @@ -108,7 +108,7 @@
2318 !defined(CONFIG_ARCH_OMAP15XX) && \
2319 !defined(CONFIG_ARCH_OMAP16XX) && \
2320 !defined(CONFIG_ARCH_OMAP24XX)
2321 -#warning "Power management for this processor not implemented yet"
2322 +#error "Power management for this processor not implemented yet"
2323 #endif
2324
2325 #ifndef __ASSEMBLER__
2326 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/Makefile linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile
2327 --- linux-2.6.29.owrt/arch/arm/plat-omap/Makefile 2009-05-10 22:04:41.000000000 +0200
2328 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile 2009-05-10 23:48:28.000000000 +0200
2329 @@ -18,8 +18,7 @@
2330 obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
2331 obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
2332 obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
2333 -i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
2334 -obj-y += $(i2c-omap-m) $(i2c-omap-y)
2335 +obj-$(CONFIG_I2C_OMAP) += i2c.o
2336
2337 # OMAP mailbox framework
2338 obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
2339 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c
2340 --- linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
2341 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 23:48:28.000000000 +0200
2342 @@ -214,7 +214,6 @@
2343 int omap_mcbsp_request(unsigned int id)
2344 {
2345 struct omap_mcbsp *mcbsp;
2346 - int i;
2347 int err;
2348
2349 if (!omap_mcbsp_check_valid_id(id)) {
2350 @@ -226,8 +225,7 @@
2351 if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request)
2352 mcbsp->pdata->ops->request(id);
2353
2354 - for (i = 0; i < mcbsp->num_clks; i++)
2355 - clk_enable(mcbsp->clks[i]);
2356 + clk_enable(mcbsp->clk);
2357
2358 spin_lock(&mcbsp->lock);
2359 if (!mcbsp->free) {
2360 @@ -278,7 +276,6 @@
2361 void omap_mcbsp_free(unsigned int id)
2362 {
2363 struct omap_mcbsp *mcbsp;
2364 - int i;
2365
2366 if (!omap_mcbsp_check_valid_id(id)) {
2367 printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
2368 @@ -289,8 +286,7 @@
2369 if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free)
2370 mcbsp->pdata->ops->free(id);
2371
2372 - for (i = mcbsp->num_clks - 1; i >= 0; i--)
2373 - clk_disable(mcbsp->clks[i]);
2374 + clk_disable(mcbsp->clk);
2375
2376 spin_lock(&mcbsp->lock);
2377 if (mcbsp->free) {
2378 @@ -876,7 +872,6 @@
2379 struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data;
2380 struct omap_mcbsp *mcbsp;
2381 int id = pdev->id - 1;
2382 - int i;
2383 int ret = 0;
2384
2385 if (!pdata) {
2386 @@ -921,25 +916,14 @@
2387 mcbsp->dma_rx_sync = pdata->dma_rx_sync;
2388 mcbsp->dma_tx_sync = pdata->dma_tx_sync;
2389
2390 - if (pdata->num_clks) {
2391 - mcbsp->num_clks = pdata->num_clks;
2392 - mcbsp->clks = kzalloc(mcbsp->num_clks * sizeof(struct clk *),
2393 - GFP_KERNEL);
2394 - if (!mcbsp->clks) {
2395 - ret = -ENOMEM;
2396 - goto exit;
2397 - }
2398 - for (i = 0; i < mcbsp->num_clks; i++) {
2399 - mcbsp->clks[i] = clk_get(&pdev->dev, pdata->clk_names[i]);
2400 - if (IS_ERR(mcbsp->clks[i])) {
2401 - dev_err(&pdev->dev,
2402 - "Invalid %s configuration for McBSP%d.\n",
2403 - pdata->clk_names[i], mcbsp->id);
2404 - ret = PTR_ERR(mcbsp->clks[i]);
2405 - goto err_clk;
2406 - }
2407 - }
2408 -
2409 + if (pdata->clk_name)
2410 + mcbsp->clk = clk_get(&pdev->dev, pdata->clk_name);
2411 + if (IS_ERR(mcbsp->clk)) {
2412 + dev_err(&pdev->dev,
2413 + "Invalid clock configuration for McBSP%d.\n",
2414 + mcbsp->id);
2415 + ret = PTR_ERR(mcbsp->clk);
2416 + goto err_clk;
2417 }
2418
2419 mcbsp->pdata = pdata;
2420 @@ -948,9 +932,6 @@
2421 return 0;
2422
2423 err_clk:
2424 - while (i--)
2425 - clk_put(mcbsp->clks[i]);
2426 - kfree(mcbsp->clks);
2427 iounmap(mcbsp->io_base);
2428 err_ioremap:
2429 mcbsp->free = 0;
2430 @@ -961,7 +942,6 @@
2431 static int __devexit omap_mcbsp_remove(struct platform_device *pdev)
2432 {
2433 struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev);
2434 - int i;
2435
2436 platform_set_drvdata(pdev, NULL);
2437 if (mcbsp) {
2438 @@ -970,18 +950,12 @@
2439 mcbsp->pdata->ops->free)
2440 mcbsp->pdata->ops->free(mcbsp->id);
2441
2442 - for (i = mcbsp->num_clks - 1; i >= 0; i--) {
2443 - clk_disable(mcbsp->clks[i]);
2444 - clk_put(mcbsp->clks[i]);
2445 - }
2446 + clk_disable(mcbsp->clk);
2447 + clk_put(mcbsp->clk);
2448
2449 iounmap(mcbsp->io_base);
2450
2451 - if (mcbsp->num_clks) {
2452 - kfree(mcbsp->clks);
2453 - mcbsp->clks = NULL;
2454 - mcbsp->num_clks = 0;
2455 - }
2456 + mcbsp->clk = NULL;
2457 mcbsp->free = 0;
2458 mcbsp->dev = NULL;
2459 }
2460 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c
2461 --- linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 22:04:41.000000000 +0200
2462 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 23:48:28.000000000 +0200
2463 @@ -265,36 +265,51 @@
2464 * polarity LEVEL mask
2465 *
2466 ****************************************************************************/
2467 +static void gpio_irq_edge_ack(u32 irq)
2468 +{
2469 + int pin = irq_to_gpio(irq);
2470 +
2471 + writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
2472 +}
2473
2474 -static void gpio_irq_ack(u32 irq)
2475 +static void gpio_irq_edge_mask(u32 irq)
2476 {
2477 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2478 - if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
2479 - int pin = irq_to_gpio(irq);
2480 - writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
2481 - }
2482 + int pin = irq_to_gpio(irq);
2483 + u32 u;
2484 +
2485 + u = readl(GPIO_EDGE_MASK(pin));
2486 + u &= ~(1 << (pin & 31));
2487 + writel(u, GPIO_EDGE_MASK(pin));
2488 +}
2489 +
2490 +static void gpio_irq_edge_unmask(u32 irq)
2491 +{
2492 + int pin = irq_to_gpio(irq);
2493 + u32 u;
2494 +
2495 + u = readl(GPIO_EDGE_MASK(pin));
2496 + u |= 1 << (pin & 31);
2497 + writel(u, GPIO_EDGE_MASK(pin));
2498 }
2499
2500 -static void gpio_irq_mask(u32 irq)
2501 +static void gpio_irq_level_mask(u32 irq)
2502 {
2503 int pin = irq_to_gpio(irq);
2504 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2505 - u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
2506 - GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
2507 - u32 u = readl(reg);
2508 + u32 u;
2509 +
2510 + u = readl(GPIO_LEVEL_MASK(pin));
2511 u &= ~(1 << (pin & 31));
2512 - writel(u, reg);
2513 + writel(u, GPIO_LEVEL_MASK(pin));
2514 }
2515
2516 -static void gpio_irq_unmask(u32 irq)
2517 +static void gpio_irq_level_unmask(u32 irq)
2518 {
2519 int pin = irq_to_gpio(irq);
2520 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2521 - u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
2522 - GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
2523 - u32 u = readl(reg);
2524 + u32 u;
2525 +
2526 + u = readl(GPIO_LEVEL_MASK(pin));
2527 u |= 1 << (pin & 31);
2528 - writel(u, reg);
2529 + writel(u, GPIO_LEVEL_MASK(pin));
2530 }
2531
2532 static int gpio_irq_set_type(u32 irq, u32 type)
2533 @@ -316,9 +331,9 @@
2534 * Set edge/level type.
2535 */
2536 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
2537 - desc->handle_irq = handle_edge_irq;
2538 + desc->chip = &orion_gpio_irq_edge_chip;
2539 } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
2540 - desc->handle_irq = handle_level_irq;
2541 + desc->chip = &orion_gpio_irq_level_chip;
2542 } else {
2543 printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type);
2544 return -EINVAL;
2545 @@ -356,11 +371,19 @@
2546 return 0;
2547 }
2548
2549 -struct irq_chip orion_gpio_irq_chip = {
2550 - .name = "orion_gpio",
2551 - .ack = gpio_irq_ack,
2552 - .mask = gpio_irq_mask,
2553 - .unmask = gpio_irq_unmask,
2554 +struct irq_chip orion_gpio_irq_edge_chip = {
2555 + .name = "orion_gpio_irq_edge",
2556 + .ack = gpio_irq_edge_ack,
2557 + .mask = gpio_irq_edge_mask,
2558 + .unmask = gpio_irq_edge_unmask,
2559 + .set_type = gpio_irq_set_type,
2560 +};
2561 +
2562 +struct irq_chip orion_gpio_irq_level_chip = {
2563 + .name = "orion_gpio_irq_level",
2564 + .mask = gpio_irq_level_mask,
2565 + .mask_ack = gpio_irq_level_mask,
2566 + .unmask = gpio_irq_level_unmask,
2567 .set_type = gpio_irq_set_type,
2568 };
2569
2570 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h
2571 --- linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 22:04:41.000000000 +0200
2572 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 23:48:28.000000000 +0200
2573 @@ -31,7 +31,8 @@
2574 /*
2575 * GPIO interrupt handling.
2576 */
2577 -extern struct irq_chip orion_gpio_irq_chip;
2578 +extern struct irq_chip orion_gpio_irq_edge_chip;
2579 +extern struct irq_chip orion_gpio_irq_level_chip;
2580 void orion_gpio_irq_handler(int irqoff);
2581
2582
2583 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c
2584 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 22:04:41.000000000 +0200
2585 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 23:48:28.000000000 +0200
2586 @@ -248,7 +248,7 @@
2587 &clk_48m,
2588 };
2589
2590 -void __init s3c64xx_register_clocks(void)
2591 +void s3c64xx_register_clocks(void)
2592 {
2593 struct clk *clkp;
2594 int ret;
2595 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c
2596 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 22:04:41.000000000 +0200
2597 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 23:48:28.000000000 +0200
2598 @@ -417,4 +417,4 @@
2599 return 0;
2600 }
2601
2602 -core_initcall(s3c64xx_gpiolib_init);
2603 +arch_initcall(s3c64xx_gpiolib_init);
2604 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h
2605 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 22:04:41.000000000 +0200
2606 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 23:48:28.000000000 +0200
2607 @@ -117,7 +117,7 @@
2608 #define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
2609 #define IRQ_NFC S3C64XX_IRQ_VIC1(13)
2610 #define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
2611 -#define IRQ_USBH S3C64XX_IRQ_VIC1(15)
2612 +#define IRQ_UHOST S3C64XX_IRQ_VIC1(15)
2613 #define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
2614 #define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
2615 #define IRQ_IIC S3C64XX_IRQ_VIC1(18)
2616 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c
2617 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 22:04:41.000000000 +0200
2618 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 23:48:28.000000000 +0200
2619 @@ -207,7 +207,7 @@
2620
2621 static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
2622 {
2623 - void __iomem *reg_base = uirq->regs;
2624 + void *reg_base = uirq->regs;
2625 unsigned int irq;
2626 int offs;
2627
2628 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c
2629 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 22:04:41.000000000 +0200
2630 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 23:48:28.000000000 +0200
2631 @@ -14,15 +14,12 @@
2632
2633 #include <linux/kernel.h>
2634 #include <linux/interrupt.h>
2635 -#include <linux/gpio.h>
2636 #include <linux/irq.h>
2637 #include <linux/io.h>
2638
2639 #include <asm/hardware/vic.h>
2640
2641 #include <plat/regs-irqtype.h>
2642 -#include <plat/regs-gpio.h>
2643 -#include <plat/gpio-cfg.h>
2644
2645 #include <mach/map.h>
2646 #include <plat/cpu.h>
2647 @@ -58,7 +55,7 @@
2648 u32 mask;
2649
2650 mask = __raw_readl(S3C64XX_EINT0MASK);
2651 - mask &= ~eint_irq_to_bit(irq);
2652 + mask |= eint_irq_to_bit(irq);
2653 __raw_writel(mask, S3C64XX_EINT0MASK);
2654 }
2655
2656 @@ -77,7 +74,6 @@
2657 static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
2658 {
2659 int offs = eint_offset(irq);
2660 - int pin;
2661 int shift;
2662 u32 ctrl, mask;
2663 u32 newvalue = 0;
2664 @@ -129,15 +125,6 @@
2665 ctrl |= newvalue << shift;
2666 __raw_writel(ctrl, reg);
2667
2668 - /* set the GPIO pin appropriately */
2669 -
2670 - if (offs < 23)
2671 - pin = S3C64XX_GPN(offs);
2672 - else
2673 - pin = S3C64XX_GPM(offs - 23);
2674 -
2675 - s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
2676 -
2677 return 0;
2678 }
2679
2680 @@ -194,7 +181,7 @@
2681 s3c_irq_demux_eint(20, 27);
2682 }
2683
2684 -static int __init s3c64xx_init_irq_eint(void)
2685 +int __init s3c64xx_init_irq_eint(void)
2686 {
2687 int irq;
2688
2689 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c
2690 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 22:04:41.000000000 +0200
2691 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 23:48:28.000000000 +0200
2692 @@ -36,7 +36,7 @@
2693 * ext_xtal_mux for want of an actual name from the manual.
2694 */
2695
2696 -static struct clk clk_ext_xtal_mux = {
2697 +struct clk clk_ext_xtal_mux = {
2698 .name = "ext_xtal",
2699 .id = -1,
2700 };
2701 @@ -63,7 +63,7 @@
2702 void __iomem *reg_divider;
2703 };
2704
2705 -static struct clk clk_fout_apll = {
2706 +struct clk clk_fout_apll = {
2707 .name = "fout_apll",
2708 .id = -1,
2709 };
2710 @@ -78,7 +78,7 @@
2711 .nr_sources = ARRAY_SIZE(clk_src_apll_list),
2712 };
2713
2714 -static struct clksrc_clk clk_mout_apll = {
2715 +struct clksrc_clk clk_mout_apll = {
2716 .clk = {
2717 .name = "mout_apll",
2718 .id = -1,
2719 @@ -88,7 +88,7 @@
2720 .sources = &clk_src_apll,
2721 };
2722
2723 -static struct clk clk_fout_epll = {
2724 +struct clk clk_fout_epll = {
2725 .name = "fout_epll",
2726 .id = -1,
2727 };
2728 @@ -103,7 +103,7 @@
2729 .nr_sources = ARRAY_SIZE(clk_src_epll_list),
2730 };
2731
2732 -static struct clksrc_clk clk_mout_epll = {
2733 +struct clksrc_clk clk_mout_epll = {
2734 .clk = {
2735 .name = "mout_epll",
2736 .id = -1,
2737 @@ -123,7 +123,7 @@
2738 .nr_sources = ARRAY_SIZE(clk_src_mpll_list),
2739 };
2740
2741 -static struct clksrc_clk clk_mout_mpll = {
2742 +struct clksrc_clk clk_mout_mpll = {
2743 .clk = {
2744 .name = "mout_mpll",
2745 .id = -1,
2746 @@ -145,7 +145,7 @@
2747 return rate;
2748 }
2749
2750 -static struct clk clk_dout_mpll = {
2751 +struct clk clk_dout_mpll = {
2752 .name = "dout_mpll",
2753 .id = -1,
2754 .parent = &clk_mout_mpll.clk,
2755 @@ -189,10 +189,10 @@
2756 };
2757
2758 static struct clk *clkset_uhost_list[] = {
2759 - &clk_48m,
2760 &clk_mout_epll.clk,
2761 &clk_dout_mpll,
2762 &clk_fin_epll,
2763 + &clk_48m,
2764 };
2765
2766 static struct clk_sources clkset_uhost = {
2767 @@ -239,12 +239,10 @@
2768
2769 rate = clk_round_rate(clk, rate);
2770 div = clk_get_rate(clk->parent) / rate;
2771 - if (div > 16)
2772 - return -EINVAL;
2773
2774 val = __raw_readl(reg);
2775 - val &= ~(0xf << sclk->shift);
2776 - val |= (div - 1) << sclk->shift;
2777 + val &= ~sclk->mask;
2778 + val |= (rate - 1) << sclk->shift;
2779 __raw_writel(val, reg);
2780
2781 return 0;
2782 @@ -353,7 +351,7 @@
2783
2784 static struct clksrc_clk clk_usbhost = {
2785 .clk = {
2786 - .name = "usb-bus-host",
2787 + .name = "usb-host-bus",
2788 .id = -1,
2789 .ctrlbit = S3C_CLKCON_SCLK_UHOST,
2790 .enable = s3c64xx_sclk_ctrl,
2791 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/arm/tools/mach-types linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types
2792 --- linux-2.6.29.owrt/arch/arm/tools/mach-types 2009-05-10 22:04:41.000000000 +0200
2793 +++ linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types 2009-05-10 23:48:28.000000000 +0200
2794 @@ -12,7 +12,7 @@
2795 #
2796 # http://www.arm.linux.org.uk/developer/machines/?action=new
2797 #
2798 -# Last update: Thu Mar 12 18:01:45 2009
2799 +# Last update: Sun Nov 30 16:39:36 2008
2800 #
2801 # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
2802 #
2803 @@ -1811,7 +1811,7 @@
2804 jade MACH_JADE JADE 1821
2805 ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
2806 gprisc3 MACH_GPRISC3 GPRISC3 1823
2807 -stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
2808 +stamp9260 MACH_STAMP9260 STAMP9260 1824
2809 smdk6430 MACH_SMDK6430 SMDK6430 1825
2810 smdkc100 MACH_SMDKC100 SMDKC100 1826
2811 tavorevb MACH_TAVOREVB TAVOREVB 1827
2812 @@ -1993,134 +1993,4 @@
2813 benzina MACH_BENZINA BENZINA 2003
2814 blaze MACH_BLAZE BLAZE 2004
2815 linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
2816 -htckovsky MACH_HTCVENUS HTCVENUS 2006
2817 -sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
2818 -hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
2819 -sapphira MACH_SAPPHIRA SAPPHIRA 2009
2820 -dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
2821 -armbox MACH_ARMBOX ARMBOX 2011
2822 -harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
2823 -ribaldo MACH_RIBALDO RIBALDO 2013
2824 -agora MACH_AGORA AGORA 2014
2825 -omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
2826 -a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
2827 -usg2410 MACH_USG2410 USG2410 2017
2828 -pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
2829 -mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
2830 -topas910 MACH_TOPAS910 TOPAS910 2020
2831 -hyena MACH_HYENA HYENA 2021
2832 -pospax MACH_POSPAX POSPAX 2022
2833 -hdl_gx MACH_HDL_GX HDL_GX 2023
2834 -ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
2835 -ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
2836 -crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
2837 -egauge2 MACH_EGAUGE2 EGAUGE2 2027
2838 -didj MACH_DIDJ DIDJ 2028
2839 -m_s3c2443 MACH_MEISTER MEISTER 2029
2840 -htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
2841 -cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
2842 -smdk6440 MACH_SMDK6440 SMDK6440 2032
2843 -omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
2844 -ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
2845 -pvg610_100 MACH_PVG610 PVG610 2035
2846 -hprw6815 MACH_HPRW6815 HPRW6815 2036
2847 -omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
2848 -nas4220b MACH_NAS4220B NAS4220B 2038
2849 -htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
2850 -htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
2851 -scaler MACH_SCALER SCALER 2041
2852 -zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
2853 -aspenite MACH_ASPENITE ASPENITE 2043
2854 -teton MACH_TETON TETON 2044
2855 -ttc_dkb MACH_TTC_DKB TTC_DKB 2045
2856 -bishop2 MACH_BISHOP2 BISHOP2 2046
2857 -ippv5 MACH_IPPV5 IPPV5 2047
2858 -farm926 MACH_FARM926 FARM926 2048
2859 -mmccpu MACH_MMCCPU MMCCPU 2049
2860 -sgmsfl MACH_SGMSFL SGMSFL 2050
2861 -tt8000 MACH_TT8000 TT8000 2051
2862 -zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
2863 -mptc MACH_MPTC MPTC 2053
2864 -h6051 MACH_H6051 H6051 2054
2865 -pvg610_101 MACH_PVG610_101 PVG610_101 2055
2866 -stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
2867 -pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
2868 -tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
2869 -tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
2870 -aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
2871 -dx900 MACH_DX900 DX900 2061
2872 -cpodc2 MACH_CPODC2 CPODC2 2062
2873 -tilt_8925 MACH_TILT_8925 TILT_8925 2063
2874 -davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
2875 -swordfish MACH_SWORDFISH SWORDFISH 2065
2876 -corvus MACH_CORVUS CORVUS 2066
2877 -taurus MACH_TAURUS TAURUS 2067
2878 -axm MACH_AXM AXM 2068
2879 -axc MACH_AXC AXC 2069
2880 -baby MACH_BABY BABY 2070
2881 -mp200 MACH_MP200 MP200 2071
2882 -pcm043 MACH_PCM043 PCM043 2072
2883 -hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
2884 -kbk9g20 MACH_KBK9G20 KBK9G20 2074
2885 -adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
2886 -avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
2887 -suc82x MACH_SUC SUC 2077
2888 -at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
2889 -mendoza MACH_MENDOZA MENDOZA 2079
2890 -kira MACH_KIRA KIRA 2080
2891 -mx1hbm MACH_MX1HBM MX1HBM 2081
2892 -quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
2893 -quatro4230 MACH_QUATRO4230 QUATRO4230 2083
2894 -nsb400 MACH_NSB400 NSB400 2084
2895 -drp255 MACH_DRP255 DRP255 2085
2896 -thoth MACH_THOTH THOTH 2086
2897 -firestone MACH_FIRESTONE FIRESTONE 2087
2898 -asusp750 MACH_ASUSP750 ASUSP750 2088
2899 -ctera_dl MACH_CTERA_DL CTERA_DL 2089
2900 -socr MACH_SOCR SOCR 2090
2901 -htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
2902 -heroc MACH_HEROC HEROC 2092
2903 -zeno6800 MACH_ZENO6800 ZENO6800 2093
2904 -sc2mcs MACH_SC2MCS SC2MCS 2094
2905 -gene100 MACH_GENE100 GENE100 2095
2906 -as353x MACH_AS353X AS353X 2096
2907 -sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
2908 -at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
2909 -mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
2910 -cc9200 MACH_CC9200 CC9200 2100
2911 -sm9200 MACH_SM9200 SM9200 2101
2912 -tp9200 MACH_TP9200 TP9200 2102
2913 -snapperdv MACH_SNAPPERDV SNAPPERDV 2103
2914 -avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
2915 -avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
2916 -omap3axon MACH_OMAP3AXON OMAP3AXON 2106
2917 -ma8xx MACH_MA8XX MA8XX 2107
2918 -mp201ek MACH_MP201EK MP201EK 2108
2919 -davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
2920 -mpa1600 MACH_MPA1600 MPA1600 2110
2921 -pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
2922 -nsb667 MACH_NSB667 NSB667 2112
2923 -rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
2924 -twocom MACH_TWOCOM TWOCOM 2114
2925 -ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
2926 -hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
2927 -afeusb MACH_AFEUSB AFEUSB 2117
2928 -t830 MACH_T830 T830 2118
2929 -spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
2930 -om_3d7k MACH_OM_3D7K OM_3D7K 2120
2931 -picocom2 MACH_PICOCOM2 PICOCOM2 2121
2932 -uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
2933 -uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
2934 -cherry MACH_CHERRY CHERRY 2124
2935 -mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
2936 -s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
2937 -tx37 MACH_TX37 TX37 2127
2938 -sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
2939 -benzglb MACH_BENZGLB BENZGLB 2129
2940 -benztd MACH_BENZTD BENZTD 2130
2941 -cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
2942 -solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
2943 -mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
2944 -fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
2945 -rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
2946 -smallogger MACH_SMALLOGGER SMALLOGGER 2136
2947 +htcvenus MACH_HTCVENUS HTCVENUS 2006
2948 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h
2949 --- linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 22:04:40.000000000 +0200
2950 +++ linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 23:48:28.000000000 +0200
2951 @@ -116,7 +116,6 @@
2952 int enable_pin; /* chip enable */
2953 int det_pin; /* card detect */
2954 int rdy_pin; /* ready/busy */
2955 - u8 rdy_pin_active_low; /* rdy_pin value is inverted */
2956 u8 ale; /* address line number connected to ALE */
2957 u8 cle; /* address line number connected to CLE */
2958 u8 bus_width_16; /* buswidth is 16 bit */
2959 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h
2960 --- linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 22:04:40.000000000 +0200
2961 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 23:48:28.000000000 +0200
2962 @@ -1,9 +1,30 @@
2963 /*
2964 - * bfin_sport.h - userspace header for bfin sport driver
2965 + * File: include/asm-blackfin/bfin_sport.h
2966 + * Based on:
2967 + * Author: Roy Huang (roy.huang@analog.com)
2968 *
2969 - * Copyright 2004-2008 Analog Devices Inc.
2970 + * Created: Thu Aug. 24 2006
2971 + * Description:
2972 *
2973 - * Licensed under the GPL-2 or later.
2974 + * Modified:
2975 + * Copyright 2004-2006 Analog Devices Inc.
2976 + *
2977 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
2978 + *
2979 + * This program is free software; you can redistribute it and/or modify
2980 + * it under the terms of the GNU General Public License as published by
2981 + * the Free Software Foundation; either version 2 of the License, or
2982 + * (at your option) any later version.
2983 + *
2984 + * This program is distributed in the hope that it will be useful,
2985 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2986 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2987 + * GNU General Public License for more details.
2988 + *
2989 + * You should have received a copy of the GNU General Public License
2990 + * along with this program; if not, see the file COPYING, or write
2991 + * to the Free Software Foundation, Inc.,
2992 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2993 */
2994
2995 #ifndef __BFIN_SPORT_H__
2996 @@ -21,10 +42,11 @@
2997 #define NORM_FORMAT 0x0
2998 #define ALAW_FORMAT 0x2
2999 #define ULAW_FORMAT 0x3
3000 +struct sport_register;
3001
3002 /* Function driver which use sport must initialize the structure */
3003 struct sport_config {
3004 - /* TDM (multichannels), I2S or other mode */
3005 + /*TDM (multichannels), I2S or other mode */
3006 unsigned int mode:3;
3007
3008 /* if TDM mode is selected, channels must be set */
3009 @@ -50,18 +72,12 @@
3010 int serial_clk;
3011 int fsync_clk;
3012
3013 - unsigned int data_format:2; /* Normal, u-law or a-law */
3014 + unsigned int data_format:2; /*Normal, u-law or a-law */
3015
3016 int word_len; /* How length of the word in bits, 3-32 bits */
3017 int dma_enabled;
3018 };
3019
3020 -/* Userspace interface */
3021 -#define SPORT_IOC_MAGIC 'P'
3022 -#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
3023 -
3024 -#ifdef __KERNEL__
3025 -
3026 struct sport_register {
3027 unsigned short tcr1;
3028 unsigned short reserved0;
3029 @@ -101,6 +117,9 @@
3030 unsigned long mrcs3;
3031 };
3032
3033 +#define SPORT_IOC_MAGIC 'P'
3034 +#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
3035 +
3036 struct sport_dev {
3037 struct cdev cdev; /* Char device structure */
3038
3039 @@ -130,8 +149,6 @@
3040 struct sport_config config;
3041 };
3042
3043 -#endif
3044 -
3045 #define SPORT_TCR1 0
3046 #define SPORT_TCR2 1
3047 #define SPORT_TCLKDIV 2
3048 @@ -152,4 +169,4 @@
3049 #define SPORT_MRCS2 22
3050 #define SPORT_MRCS3 23
3051
3052 -#endif
3053 +#endif /*__BFIN_SPORT_H__*/
3054 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h
3055 --- linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 22:04:40.000000000 +0200
3056 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 23:48:28.000000000 +0200
3057 @@ -63,23 +63,23 @@
3058 csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
3059 unsigned short proto, __wsum sum)
3060 {
3061 - unsigned int carry;
3062
3063 - __asm__ ("%0 = %0 + %2;\n\t"
3064 - "CC = AC0;\n\t"
3065 - "%1 = CC;\n\t"
3066 - "%0 = %0 + %1;\n\t"
3067 - "%0 = %0 + %3;\n\t"
3068 - "CC = AC0;\n\t"
3069 - "%1 = CC;\n\t"
3070 - "%0 = %0 + %1;\n\t"
3071 - "%0 = %0 + %4;\n\t"
3072 - "CC = AC0;\n\t"
3073 - "%1 = CC;\n\t"
3074 - "%0 = %0 + %1;\n\t"
3075 - : "=d" (sum), "=&d" (carry)
3076 - : "d" (daddr), "d" (saddr), "d" ((len + proto) << 8), "0"(sum)
3077 - : "CC");
3078 + __asm__ ("%0 = %0 + %1;\n\t"
3079 + "CC = AC0;\n\t"
3080 + "if !CC jump 4;\n\t"
3081 + "%0 = %0 + %4;\n\t"
3082 + "%0 = %0 + %2;\n\t"
3083 + "CC = AC0;\n\t"
3084 + "if !CC jump 4;\n\t"
3085 + "%0 = %0 + %4;\n\t"
3086 + "%0 = %0 + %3;\n\t"
3087 + "CC = AC0;\n\t"
3088 + "if !CC jump 4;\n\t"
3089 + "%0 = %0 + %4;\n\t"
3090 + "NOP;\n\t"
3091 + : "=d" (sum)
3092 + : "d" (daddr), "d" (saddr), "d" ((ntohs(len)<<16)+proto*256), "d" (1), "0"(sum)
3093 + : "CC");
3094
3095 return (sum);
3096 }
3097 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h
3098 --- linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 22:04:40.000000000 +0200
3099 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 23:48:28.000000000 +0200
3100 @@ -13,7 +13,29 @@
3101
3102 static inline void __delay(unsigned long loops)
3103 {
3104 -__asm__ __volatile__ (
3105 + if (ANOMALY_05000312) {
3106 + /* Interrupted loads to loop registers -> bad */
3107 + unsigned long tmp;
3108 + __asm__ __volatile__(
3109 + "[--SP] = LC0;"
3110 + "[--SP] = LT0;"
3111 + "[--SP] = LB0;"
3112 + "LSETUP (1f,1f) LC0 = %1;"
3113 + "1: NOP;"
3114 + /* We take advantage of the fact that LC0 is 0 at
3115 + * the end of the loop. Otherwise we'd need some
3116 + * NOPs after the CLI here.
3117 + */
3118 + "CLI %0;"
3119 + "LB0 = [SP++];"
3120 + "LT0 = [SP++];"
3121 + "LC0 = [SP++];"
3122 + "STI %0;"
3123 + : "=d" (tmp)
3124 + : "a" (loops)
3125 + );
3126 + } else
3127 + __asm__ __volatile__ (
3128 "LSETUP(1f, 1f) LC0 = %0;"
3129 "1: NOP;"
3130 :
3131 @@ -25,15 +47,16 @@
3132 #include <linux/param.h> /* needed for HZ */
3133
3134 /*
3135 - * close approximation borrowed from m68knommu to avoid 64-bit math
3136 + * Use only for very small delays ( < 1 msec). Should probably use a
3137 + * lookup table, really, as the multiplications take much too long with
3138 + * short delays. This is a "reasonable" implementation, though (and the
3139 + * first constant multiplications gets optimized away if the delay is
3140 + * a constant)
3141 */
3142 -
3143 -#define HZSCALE (268435456 / (1000000/HZ))
3144 -
3145 static inline void udelay(unsigned long usecs)
3146 {
3147 extern unsigned long loops_per_jiffy;
3148 - __delay((((usecs * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6);
3149 + __delay(usecs * loops_per_jiffy / (1000000 / HZ));
3150 }
3151
3152 #endif
3153 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h
3154 --- linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 22:04:40.000000000 +0200
3155 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 23:48:28.000000000 +0200
3156 @@ -27,6 +27,60 @@
3157 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
3158 */
3159
3160 +/*
3161 +* Number BF537/6/4 BF561 BF533/2/1
3162 +* BF527/5/2
3163 +*
3164 +* GPIO_0 PF0 PF0 PF0
3165 +* GPIO_1 PF1 PF1 PF1
3166 +* GPIO_2 PF2 PF2 PF2
3167 +* GPIO_3 PF3 PF3 PF3
3168 +* GPIO_4 PF4 PF4 PF4
3169 +* GPIO_5 PF5 PF5 PF5
3170 +* GPIO_6 PF6 PF6 PF6
3171 +* GPIO_7 PF7 PF7 PF7
3172 +* GPIO_8 PF8 PF8 PF8
3173 +* GPIO_9 PF9 PF9 PF9
3174 +* GPIO_10 PF10 PF10 PF10
3175 +* GPIO_11 PF11 PF11 PF11
3176 +* GPIO_12 PF12 PF12 PF12
3177 +* GPIO_13 PF13 PF13 PF13
3178 +* GPIO_14 PF14 PF14 PF14
3179 +* GPIO_15 PF15 PF15 PF15
3180 +* GPIO_16 PG0 PF16
3181 +* GPIO_17 PG1 PF17
3182 +* GPIO_18 PG2 PF18
3183 +* GPIO_19 PG3 PF19
3184 +* GPIO_20 PG4 PF20
3185 +* GPIO_21 PG5 PF21
3186 +* GPIO_22 PG6 PF22
3187 +* GPIO_23 PG7 PF23
3188 +* GPIO_24 PG8 PF24
3189 +* GPIO_25 PG9 PF25
3190 +* GPIO_26 PG10 PF26
3191 +* GPIO_27 PG11 PF27
3192 +* GPIO_28 PG12 PF28
3193 +* GPIO_29 PG13 PF29
3194 +* GPIO_30 PG14 PF30
3195 +* GPIO_31 PG15 PF31
3196 +* GPIO_32 PH0 PF32
3197 +* GPIO_33 PH1 PF33
3198 +* GPIO_34 PH2 PF34
3199 +* GPIO_35 PH3 PF35
3200 +* GPIO_36 PH4 PF36
3201 +* GPIO_37 PH5 PF37
3202 +* GPIO_38 PH6 PF38
3203 +* GPIO_39 PH7 PF39
3204 +* GPIO_40 PH8 PF40
3205 +* GPIO_41 PH9 PF41
3206 +* GPIO_42 PH10 PF42
3207 +* GPIO_43 PH11 PF43
3208 +* GPIO_44 PH12 PF44
3209 +* GPIO_45 PH13 PF45
3210 +* GPIO_46 PH14 PF46
3211 +* GPIO_47 PH15 PF47
3212 +*/
3213 +
3214 #ifndef __ARCH_BLACKFIN_GPIO_H__
3215 #define __ARCH_BLACKFIN_GPIO_H__
3216
3217 @@ -241,6 +295,10 @@
3218 int bfin_gpio_get_value(unsigned gpio);
3219 void bfin_gpio_set_value(unsigned gpio, int value);
3220
3221 +#ifndef BF548_FAMILY
3222 +#define bfin_gpio_set_value(gpio, value) set_gpio_data(gpio, value)
3223 +#endif
3224 +
3225 #ifdef CONFIG_GPIOLIB
3226 #include <asm-generic/gpio.h> /* cansleep wrappers */
3227
3228 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h
3229 --- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 22:04:40.000000000 +0200
3230 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 23:48:28.000000000 +0200
3231 @@ -1,5 +1,5 @@
3232 /* -*- linux-c -*-
3233 - * include/asm-blackfin/ipipe_base.h
3234 + * include/asm-blackfin/_baseipipe.h
3235 *
3236 * Copyright (C) 2007 Philippe Gerum.
3237 *
3238 @@ -27,9 +27,8 @@
3239 #define IPIPE_NR_XIRQS NR_IRQS
3240 #define IPIPE_IRQ_ISHIFT 5 /* 2^5 for 32bits arch. */
3241
3242 -/* Blackfin-specific, per-cpu pipeline status */
3243 -#define IPIPE_SYNCDEFER_FLAG 15
3244 -#define IPIPE_SYNCDEFER_MASK (1L << IPIPE_SYNCDEFER_MASK)
3245 +/* Blackfin-specific, global domain flags */
3246 +#define IPIPE_ROOTLOCK_FLAG 1 /* Lock pipeline for root */
3247
3248 /* Blackfin traps -- i.e. exception vector numbers */
3249 #define IPIPE_NR_FAULTS 52 /* We leave a gap after VEC_ILL_RES. */
3250 @@ -49,6 +48,11 @@
3251
3252 #ifndef __ASSEMBLY__
3253
3254 +#include <linux/bitops.h>
3255 +
3256 +extern int test_bit(int nr, const void *addr);
3257 +
3258 +
3259 extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
3260
3261 static inline void __ipipe_stall_root(void)
3262 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h
3263 --- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 22:04:40.000000000 +0200
3264 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 23:48:28.000000000 +0200
3265 @@ -35,9 +35,9 @@
3266 #include <asm/atomic.h>
3267 #include <asm/traps.h>
3268
3269 -#define IPIPE_ARCH_STRING "1.9-00"
3270 +#define IPIPE_ARCH_STRING "1.8-00"
3271 #define IPIPE_MAJOR_NUMBER 1
3272 -#define IPIPE_MINOR_NUMBER 9
3273 +#define IPIPE_MINOR_NUMBER 8
3274 #define IPIPE_PATCH_NUMBER 0
3275
3276 #ifdef CONFIG_SMP
3277 @@ -83,9 +83,9 @@
3278 "%2 = CYCLES2\n" \
3279 "CC = %2 == %0\n" \
3280 "if ! CC jump 1b\n" \
3281 - : "=d,a" (((unsigned long *)&t)[1]), \
3282 - "=d,a" (((unsigned long *)&t)[0]), \
3283 - "=d,a" (__cy2) \
3284 + : "=r" (((unsigned long *)&t)[1]), \
3285 + "=r" (((unsigned long *)&t)[0]), \
3286 + "=r" (__cy2) \
3287 : /*no input*/ : "CC"); \
3288 t; \
3289 })
3290 @@ -118,40 +118,35 @@
3291
3292 #define __ipipe_disable_irq(irq) (irq_desc[irq].chip->mask(irq))
3293
3294 -static inline int __ipipe_check_tickdev(const char *devname)
3295 -{
3296 - return 1;
3297 -}
3298 +#define __ipipe_lock_root() \
3299 + set_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
3300
3301 -static inline void __ipipe_lock_root(void)
3302 -{
3303 - set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
3304 -}
3305 -
3306 -static inline void __ipipe_unlock_root(void)
3307 -{
3308 - clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
3309 -}
3310 +#define __ipipe_unlock_root() \
3311 + clear_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
3312
3313 void __ipipe_enable_pipeline(void);
3314
3315 #define __ipipe_hook_critical_ipi(ipd) do { } while (0)
3316
3317 -#define __ipipe_sync_pipeline ___ipipe_sync_pipeline
3318 -void ___ipipe_sync_pipeline(unsigned long syncmask);
3319 +#define __ipipe_sync_pipeline(syncmask) \
3320 + do { \
3321 + struct ipipe_domain *ipd = ipipe_current_domain; \
3322 + if (likely(ipd != ipipe_root_domain || !test_bit(IPIPE_ROOTLOCK_FLAG, &ipd->flags))) \
3323 + __ipipe_sync_stage(syncmask); \
3324 + } while (0)
3325
3326 void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
3327
3328 int __ipipe_get_irq_priority(unsigned irq);
3329
3330 +int __ipipe_get_irqthread_priority(unsigned irq);
3331 +
3332 void __ipipe_stall_root_raw(void);
3333
3334 void __ipipe_unstall_root_raw(void);
3335
3336 void __ipipe_serial_debug(const char *fmt, ...);
3337
3338 -asmlinkage void __ipipe_call_irqtail(unsigned long addr);
3339 -
3340 DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
3341
3342 extern unsigned long __ipipe_core_clock;
3343 @@ -167,25 +162,42 @@
3344
3345 #define __ipipe_run_irqtail() /* Must be a macro */ \
3346 do { \
3347 + asmlinkage void __ipipe_call_irqtail(void); \
3348 unsigned long __pending; \
3349 - CSYNC(); \
3350 + CSYNC(); \
3351 __pending = bfin_read_IPEND(); \
3352 if (__pending & 0x8000) { \
3353 __pending &= ~0x8010; \
3354 if (__pending && (__pending & (__pending - 1)) == 0) \
3355 - __ipipe_call_irqtail(__ipipe_irq_tail_hook); \
3356 + __ipipe_call_irqtail(); \
3357 } \
3358 } while (0)
3359
3360 #define __ipipe_run_isr(ipd, irq) \
3361 do { \
3362 if (ipd == ipipe_root_domain) { \
3363 - local_irq_enable_hw(); \
3364 - if (ipipe_virtual_irq_p(irq)) \
3365 + /* \
3366 + * Note: the I-pipe implements a threaded interrupt model on \
3367 + * this arch for Linux external IRQs. The interrupt handler we \
3368 + * call here only wakes up the associated IRQ thread. \
3369 + */ \
3370 + if (ipipe_virtual_irq_p(irq)) { \
3371 + /* No irqtail here; virtual interrupts have no effect \
3372 + on IPEND so there is no need for processing \
3373 + deferral. */ \
3374 + local_irq_enable_nohead(ipd); \
3375 ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
3376 - else \
3377 + local_irq_disable_nohead(ipd); \
3378 + } else \
3379 + /* \
3380 + * No need to run the irqtail here either; \
3381 + * we can't be preempted by hw IRQs, so \
3382 + * non-Linux IRQs cannot stack over the short \
3383 + * thread wakeup code. Which in turn means \
3384 + * that no irqtail condition could be pending \
3385 + * for domains above Linux in the pipeline. \
3386 + */ \
3387 ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
3388 - local_irq_disable_hw(); \
3389 } else { \
3390 __clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
3391 local_irq_enable_nohead(ipd); \
3392 @@ -205,24 +217,42 @@
3393
3394 int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
3395
3396 -#ifdef CONFIG_GENERIC_CLOCKEVENTS
3397 -#define IRQ_SYSTMR IRQ_CORETMR
3398 -#define IRQ_PRIOTMR IRQ_CORETMR
3399 -#else
3400 +#define IS_SYSIRQ(irq) ((irq) > IRQ_CORETMR && (irq) <= SYS_IRQS)
3401 +#define IS_GPIOIRQ(irq) ((irq) >= GPIO_IRQ_BASE && (irq) < NR_IRQS)
3402 +
3403 #define IRQ_SYSTMR IRQ_TIMER0
3404 #define IRQ_PRIOTMR CONFIG_IRQ_TIMER0
3405 -#endif
3406
3407 -#ifdef CONFIG_BF561
3408 +#if defined(CONFIG_BF531) || defined(CONFIG_BF532) || defined(CONFIG_BF533)
3409 +#define PRIO_GPIODEMUX(irq) CONFIG_PFA
3410 +#elif defined(CONFIG_BF534) || defined(CONFIG_BF536) || defined(CONFIG_BF537)
3411 +#define PRIO_GPIODEMUX(irq) CONFIG_IRQ_PROG_INTA
3412 +#elif defined(CONFIG_BF52x)
3413 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PORTF_INTA ? CONFIG_IRQ_PORTF_INTA : \
3414 + (irq) == IRQ_PORTG_INTA ? CONFIG_IRQ_PORTG_INTA : \
3415 + (irq) == IRQ_PORTH_INTA ? CONFIG_IRQ_PORTH_INTA : \
3416 + -1)
3417 +#elif defined(CONFIG_BF561)
3418 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PROG0_INTA ? CONFIG_IRQ_PROG0_INTA : \
3419 + (irq) == IRQ_PROG1_INTA ? CONFIG_IRQ_PROG1_INTA : \
3420 + (irq) == IRQ_PROG2_INTA ? CONFIG_IRQ_PROG2_INTA : \
3421 + -1)
3422 #define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
3423 #define bfin_write_TIMER_ENABLE(val) bfin_write_TMRS8_ENABLE(val)
3424 #define bfin_write_TIMER_STATUS(val) bfin_write_TMRS8_STATUS(val)
3425 #define bfin_read_TIMER_STATUS() bfin_read_TMRS8_STATUS()
3426 #elif defined(CONFIG_BF54x)
3427 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PINT0 ? CONFIG_IRQ_PINT0 : \
3428 + (irq) == IRQ_PINT1 ? CONFIG_IRQ_PINT1 : \
3429 + (irq) == IRQ_PINT2 ? CONFIG_IRQ_PINT2 : \
3430 + (irq) == IRQ_PINT3 ? CONFIG_IRQ_PINT3 : \
3431 + -1)
3432 #define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
3433 #define bfin_write_TIMER_ENABLE(val) bfin_write_TIMER_ENABLE0(val)
3434 #define bfin_write_TIMER_STATUS(val) bfin_write_TIMER_STATUS0(val)
3435 #define bfin_read_TIMER_STATUS(val) bfin_read_TIMER_STATUS0(val)
3436 +#else
3437 +# error "no PRIO_GPIODEMUX() for this part"
3438 #endif
3439
3440 #define __ipipe_root_tick_p(regs) ((regs->ipend & 0x10) != 0)
3441 @@ -245,6 +275,4 @@
3442
3443 #endif /* !CONFIG_IPIPE */
3444
3445 -#define ipipe_update_tick_evtdev(evtdev) do { } while (0)
3446 -
3447 #endif /* !__ASM_BLACKFIN_IPIPE_H */
3448 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h
3449 --- linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 22:04:40.000000000 +0200
3450 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 23:48:28.000000000 +0200
3451 @@ -61,38 +61,20 @@
3452 #define raw_irqs_disabled_flags(flags) (!irqs_enabled_from_flags_hw(flags))
3453 #define local_test_iflag_hw(x) irqs_enabled_from_flags_hw(x)
3454
3455 -#define local_save_flags(x) \
3456 - do { \
3457 - (x) = __ipipe_test_root() ? \
3458 - __all_masked_irq_flags : bfin_irq_flags; \
3459 - barrier(); \
3460 - } while (0)
3461 -
3462 -#define local_irq_save(x) \
3463 - do { \
3464 - (x) = __ipipe_test_and_stall_root() ? \
3465 +#define local_save_flags(x) \
3466 + do { \
3467 + (x) = __ipipe_test_root() ? \
3468 __all_masked_irq_flags : bfin_irq_flags; \
3469 - barrier(); \
3470 } while (0)
3471
3472 -static inline void local_irq_restore(unsigned long x)
3473 -{
3474 - barrier();
3475 - __ipipe_restore_root(x == __all_masked_irq_flags);
3476 -}
3477 -
3478 -#define local_irq_disable() \
3479 - do { \
3480 - __ipipe_stall_root(); \
3481 - barrier(); \
3482 +#define local_irq_save(x) \
3483 + do { \
3484 + (x) = __ipipe_test_and_stall_root(); \
3485 } while (0)
3486
3487 -static inline void local_irq_enable(void)
3488 -{
3489 - barrier();
3490 - __ipipe_unstall_root();
3491 -}
3492 -
3493 +#define local_irq_restore(x) __ipipe_restore_root(x)
3494 +#define local_irq_disable() __ipipe_stall_root()
3495 +#define local_irq_enable() __ipipe_unstall_root()
3496 #define irqs_disabled() __ipipe_test_root()
3497
3498 #define local_save_flags_hw(x) \
3499 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild
3500 --- linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 22:04:40.000000000 +0200
3501 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 23:48:28.000000000 +0200
3502 @@ -1,4 +1,3 @@
3503 include include/asm-generic/Kbuild.asm
3504
3505 -unifdef-y += bfin_sport.h
3506 unifdef-y += fixed_code.h
3507 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h
3508 --- linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 22:04:40.000000000 +0200
3509 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 23:48:28.000000000 +0200
3510 @@ -1,8 +1,32 @@
3511 -/* Blackfin KGDB header
3512 +/*
3513 + * File: include/asm-blackfin/kgdb.h
3514 + * Based on:
3515 + * Author: Sonic Zhang
3516 + *
3517 + * Created:
3518 + * Description:
3519 + *
3520 + * Rev: $Id: kgdb_bfin_linux-2.6.x.patch 4934 2007-02-13 09:32:11Z sonicz $
3521 + *
3522 + * Modified:
3523 + * Copyright 2005-2006 Analog Devices Inc.
3524 + *
3525 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
3526 *
3527 - * Copyright 2005-2009 Analog Devices Inc.
3528 + * This program is free software; you can redistribute it and/or modify
3529 + * it under the terms of the GNU General Public License as published by
3530 + * the Free Software Foundation; either version 2 of the License, or
3531 + * (at your option) any later version.
3532 *
3533 - * Licensed under the GPL-2 or later.
3534 + * This program is distributed in the hope that it will be useful,
3535 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3536 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3537 + * GNU General Public License for more details.
3538 + *
3539 + * You should have received a copy of the GNU General Public License
3540 + * along with this program; if not, see the file COPYING, or write
3541 + * to the Free Software Foundation, Inc.,
3542 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
3543 */
3544
3545 #ifndef __ASM_BLACKFIN_KGDB_H__
3546 @@ -13,18 +37,17 @@
3547 /* gdb locks */
3548 #define KGDB_MAX_NO_CPUS 8
3549
3550 -/*
3551 - * BUFMAX defines the maximum number of characters in inbound/outbound buffers.
3552 - * At least NUMREGBYTES*2 are needed for register packets.
3553 - * Longer buffer is needed to list all threads.
3554 - */
3555 +/************************************************************************/
3556 +/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/
3557 +/* at least NUMREGBYTES*2 are needed for register packets */
3558 +/* Longer buffer is needed to list all threads */
3559 #define BUFMAX 2048
3560
3561 /*
3562 - * Note that this register image is different from
3563 - * the register image that Linux produces at interrupt time.
3564 - *
3565 - * Linux's register image is defined by struct pt_regs in ptrace.h.
3566 + * Note that this register image is different from
3567 + * the register image that Linux produces at interrupt time.
3568 + *
3569 + * Linux's register image is defined by struct pt_regs in ptrace.h.
3570 */
3571 enum regnames {
3572 /* Core Registers */
3573 @@ -81,14 +104,14 @@
3574 BFIN_RETX,
3575 BFIN_RETN,
3576 BFIN_RETE,
3577 -
3578 +
3579 /* Pseudo Registers */
3580 BFIN_PC,
3581 BFIN_CC,
3582 BFIN_EXTRA1, /* Address of .text section. */
3583 BFIN_EXTRA2, /* Address of .data section. */
3584 BFIN_EXTRA3, /* Address of .bss section. */
3585 - BFIN_FDPIC_EXEC,
3586 + BFIN_FDPIC_EXEC,
3587 BFIN_FDPIC_INTERP,
3588
3589 /* MMRs */
3590 @@ -103,7 +126,7 @@
3591
3592 static inline void arch_kgdb_breakpoint(void)
3593 {
3594 - asm("EXCPT 2;");
3595 + asm(" EXCPT 2;");
3596 }
3597 #define BREAK_INSTR_SIZE 2
3598 #define CACHE_FLUSH_IS_SAFE 1
3599 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h
3600 --- linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 22:04:40.000000000 +0200
3601 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 23:48:28.000000000 +0200
3602 @@ -115,7 +115,7 @@
3603 #define mem_SDRRC (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num)
3604
3605 /* Enable SCLK Out */
3606 -#define mem_SDGCTL (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
3607 +#define mem_SDGCTL (0x80000000 | SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
3608 #else
3609 #define mem_SDRRC CONFIG_MEM_SDRRC
3610 #define mem_SDGCTL CONFIG_MEM_SDGCTL
3611 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h
3612 --- linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 22:04:40.000000000 +0200
3613 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 23:48:28.000000000 +0200
3614 @@ -59,7 +59,6 @@
3615 unsigned long icplb_fault_addr;
3616 unsigned long retx;
3617 unsigned long seqstat;
3618 - unsigned int __nmi_count; /* number of times NMI asserted on this CPU */
3619 };
3620
3621 extern struct blackfin_pda cpu_pda[];
3622 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h
3623 --- linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 22:04:40.000000000 +0200
3624 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 23:48:28.000000000 +0200
3625 @@ -15,6 +15,6 @@
3626 extern void native_machine_power_off(void);
3627
3628 /* common reboot workarounds */
3629 -extern void bfin_reset_boot_spi_cs(unsigned short pin);
3630 +extern void bfin_gpio_reset_spi0_ssel1(void);
3631
3632 #endif
3633 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h
3634 --- linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 22:04:40.000000000 +0200
3635 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 23:48:28.000000000 +0200
3636 @@ -122,7 +122,6 @@
3637 #define TIF_MEMDIE 4
3638 #define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
3639 #define TIF_FREEZE 6 /* is freezing for suspend */
3640 -#define TIF_IRQ_SYNC 7 /* sync pipeline stage */
3641
3642 /* as above, but as bit values */
3643 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
3644 @@ -131,7 +130,6 @@
3645 #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
3646 #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
3647 #define _TIF_FREEZE (1<<TIF_FREEZE)
3648 -#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC)
3649
3650 #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
3651
3652 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig
3653 --- linux-2.6.29.owrt/arch/blackfin/Kconfig 2009-05-10 22:04:40.000000000 +0200
3654 +++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig 2009-05-10 23:48:28.000000000 +0200
3655 @@ -169,51 +169,26 @@
3656 help
3657 BF542 Processor Support.
3658
3659 -config BF542M
3660 - bool "BF542m"
3661 - help
3662 - BF542 Processor Support.
3663 -
3664 config BF544
3665 bool "BF544"
3666 help
3667 BF544 Processor Support.
3668
3669 -config BF544M
3670 - bool "BF544m"
3671 - help
3672 - BF544 Processor Support.
3673 -
3674 config BF547
3675 bool "BF547"
3676 help
3677 BF547 Processor Support.
3678
3679 -config BF547M
3680 - bool "BF547m"
3681 - help
3682 - BF547 Processor Support.
3683 -
3684 config BF548
3685 bool "BF548"
3686 help
3687 BF548 Processor Support.
3688
3689 -config BF548M
3690 - bool "BF548m"
3691 - help
3692 - BF548 Processor Support.
3693 -
3694 config BF549
3695 bool "BF549"
3696 help
3697 BF549 Processor Support.
3698
3699 -config BF549M
3700 - bool "BF549m"
3701 - help
3702 - BF549 Processor Support.
3703 -
3704 config BF561
3705 bool "BF561"
3706 help
3707 @@ -249,39 +224,39 @@
3708
3709 config BF_REV_MIN
3710 int
3711 - default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
3712 + default 0 if (BF51x || BF52x || BF54x)
3713 default 2 if (BF537 || BF536 || BF534)
3714 - default 3 if (BF561 || BF533 || BF532 || BF531 || BF54xM)
3715 + default 3 if (BF561 ||BF533 || BF532 || BF531)
3716 default 4 if (BF538 || BF539)
3717
3718 config BF_REV_MAX
3719 int
3720 - default 2 if (BF51x || BF52x || (BF54x && !BF54xM))
3721 - default 3 if (BF537 || BF536 || BF534 || BF54xM)
3722 + default 2 if (BF51x || BF52x || BF54x)
3723 + default 3 if (BF537 || BF536 || BF534)
3724 default 5 if (BF561 || BF538 || BF539)
3725 default 6 if (BF533 || BF532 || BF531)
3726
3727 choice
3728 prompt "Silicon Rev"
3729 - default BF_REV_0_1 if (BF51x || BF52x || (BF54x && !BF54xM))
3730 + default BF_REV_0_1 if (BF51x || BF52x || BF54x)
3731 default BF_REV_0_2 if (BF534 || BF536 || BF537)
3732 - default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF54xM || BF561)
3733 + default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF561)
3734
3735 config BF_REV_0_0
3736 bool "0.0"
3737 - depends on (BF51x || BF52x || (BF54x && !BF54xM))
3738 + depends on (BF51x || BF52x || BF54x)
3739
3740 config BF_REV_0_1
3741 bool "0.1"
3742 - depends on (BF52x || (BF54x && !BF54xM))
3743 + depends on (BF52x || BF54x)
3744
3745 config BF_REV_0_2
3746 bool "0.2"
3747 - depends on (BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM))
3748 + depends on (BF52x || BF537 || BF536 || BF534 || BF54x)
3749
3750 config BF_REV_0_3
3751 bool "0.3"
3752 - depends on (BF54xM || BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
3753 + depends on (BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
3754
3755 config BF_REV_0_4
3756 bool "0.4"
3757 @@ -318,14 +293,9 @@
3758 depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
3759 default y
3760
3761 -config BF54xM
3762 - bool
3763 - depends on (BF542M || BF544M || BF547M || BF548M || BF549M)
3764 - default y
3765 -
3766 config BF54x
3767 bool
3768 - depends on (BF542 || BF544 || BF547 || BF548 || BF549 || BF54xM)
3769 + depends on (BF542 || BF544 || BF547 || BF548 || BF549)
3770 default y
3771
3772 config MEM_GENERIC_BOARD
3773 @@ -1129,7 +1099,6 @@
3774
3775 config PM_WAKEUP_BY_GPIO
3776 bool "Allow Wakeup from Standby by GPIO"
3777 - depends on PM && !BF54x
3778
3779 config PM_WAKEUP_GPIO_NUMBER
3780 int "GPIO number"
3781 @@ -1169,12 +1138,6 @@
3782 default n
3783 help
3784 Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
3785 - (all processors, except ADSP-BF549). This option sets
3786 - the general-purpose wake-up enable (GPWE) control bit to enable
3787 - wake-up upon detection of an active low signal on the /GPW (PH7) pin.
3788 - On ADSP-BF549 this option enables the the same functionality on the
3789 - /MRXON pin also PH7.
3790 -
3791 endmenu
3792
3793 menu "CPU Frequency scaling"
3794 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/Kconfig.debug linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug
3795 --- linux-2.6.29.owrt/arch/blackfin/Kconfig.debug 2009-05-10 22:04:41.000000000 +0200
3796 +++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug 2009-05-10 23:48:28.000000000 +0200
3797 @@ -21,6 +21,12 @@
3798 config HAVE_ARCH_KGDB
3799 def_bool y
3800
3801 +config KGDB_TESTCASE
3802 + tristate "KGDB: for test case in expect"
3803 + default n
3804 + help
3805 + This is a kgdb test case for automated testing.
3806 +
3807 config DEBUG_VERBOSE
3808 bool "Verbose fault messages"
3809 default y
3810 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c
3811 --- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 22:04:41.000000000 +0200
3812 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 23:48:28.000000000 +0200
3813 @@ -249,13 +249,6 @@
3814
3815 spin_lock_irqsave(&mdma_lock, flags);
3816
3817 - /* Force a sync in case a previous config reset on this channel
3818 - * occurred. This is needed so subsequent writes to DMA registers
3819 - * are not spuriously lost/corrupted. Do it under irq lock and
3820 - * without the anomaly version (because we are atomic already).
3821 - */
3822 - __builtin_bfin_ssync();
3823 -
3824 if (bfin_read_MDMA_S0_CONFIG())
3825 while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE))
3826 continue;
3827 diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c
3828 --- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 22:04:41.000000000 +0200
3829 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 23:48:28.000000000 +0200
3830 @@ -27,6 +27,59 @@
3831 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
3832 */
3833
3834 +/*
3835 +* Number BF537/6/4 BF561 BF533/2/1 BF549/8/4/2
3836 +*
3837 +* GPIO_0 PF0 PF0 PF0 PA0...PJ13
3838 +* GPIO_1 PF1 PF1 PF1
3839 +* GPIO_2 PF2 PF2 PF2
3840 +* GPIO_3 PF3 PF3 PF3
3841 +* GPIO_4 PF4 PF4 PF4
3842 +* GPIO_5 PF5 PF5 PF5
3843 +* GPIO_6 PF6 PF6 PF6
3844 +* GPIO_7 PF7 PF7 PF7
3845 +* GPIO_8 PF8 PF8 PF8
3846 +* GPIO_9 PF9 PF9 PF9
3847 +* GPIO_10 PF10 PF10 PF10
3848 +* GPIO_11 PF11 PF11 PF11
3849 +* GPIO_12 PF12 PF12 PF12
3850 +* GPIO_13 PF13 PF13 PF13
3851 +* GPIO_14 PF14 PF14 PF14
3852 +* GPIO_15 PF15 PF15 PF15
3853 +* GPIO_16 PG0 PF16
3854 +* GPIO_17 PG1 PF17
3855 +* GPIO_18 PG2 PF18
3856 +* GPIO_19 PG3 PF19
3857 +* GPIO_20 PG4 PF20
3858 +* GPIO_21 PG5 PF21
3859 +* GPIO_22 PG6 PF22
3860 +* GPIO_23 PG7 PF23
3861 +* GPIO_24 PG8 PF24
3862 +* GPIO_25 PG9 PF25
3863 +* GPIO_26 PG10 PF26
3864 +* GPIO_27 PG11 PF27
3865 +* GPIO_28 PG12 PF28
3866 +* GPIO_29 PG13 PF29
3867 +* GPIO_30 PG14 PF30
3868 +* GPIO_31 PG15 PF31
3869 +* GPIO_32 PH0 PF32
3870 +* GPIO_33 PH1 PF33
3871 +* GPIO_34 PH2 PF34
3872 +* GPIO_35 PH3 PF35
3873 +* GPIO_36 PH4 PF36
3874 +* GPIO_37 PH5 PF37
3875 +* GPIO_38 PH6 PF38
3876 +* GPIO_39 PH7 PF39
3877 +* GPIO_40 PH8 PF40
3878 +* GPIO_41 PH9 PF41
3879 +* GPIO_42 PH10 PF42
3880 +* GPIO_43 PH11 PF43
3881 +* GPIO_44 PH12 PF44
3882 +* GPIO_45 PH13 PF45
3883 +* GPIO_46 PH14 PF46
3884 +* GPIO_47 PH15 PF47
3885 +*/
3886 +
3887 #include <linux/delay.h>
3888 #include <linux/module.h>
3889 #include <linux/err.h>
3890 @@ -66,61 +119,62 @@
3891 #define AWA_DUMMY_READ(...) do { } while (0)
3892 #endif
3893
3894 -static struct gpio_port_t * const gpio_array[] = {
3895 #if defined(BF533_FAMILY) || defined(BF538_FAMILY)
3896 +static struct gpio_port_t *gpio_bankb[] = {
3897 (struct gpio_port_t *) FIO_FLAG_D,
3898 -#elif defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
3899 +};
3900 +#endif
3901 +
3902 +#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
3903 +static struct gpio_port_t *gpio_bankb[] = {
3904 (struct gpio_port_t *) PORTFIO,
3905 (struct gpio_port_t *) PORTGIO,
3906 (struct gpio_port_t *) PORTHIO,
3907 -#elif defined(BF561_FAMILY)
3908 - (struct gpio_port_t *) FIO0_FLAG_D,
3909 - (struct gpio_port_t *) FIO1_FLAG_D,
3910 - (struct gpio_port_t *) FIO2_FLAG_D,
3911 -#elif defined(BF548_FAMILY)
3912 - (struct gpio_port_t *)PORTA_FER,
3913 - (struct gpio_port_t *)PORTB_FER,
3914 - (struct gpio_port_t *)PORTC_FER,
3915 - (struct gpio_port_t *)PORTD_FER,
3916 - (struct gpio_port_t *)PORTE_FER,
3917 - (struct gpio_port_t *)PORTF_FER,
3918 - (struct gpio_port_t *)PORTG_FER,
3919 - (struct gpio_port_t *)PORTH_FER,
3920 - (struct gpio_port_t *)PORTI_FER,
3921 - (struct gpio_port_t *)PORTJ_FER,
3922 -#else
3923 -# error no gpio arrays defined
3924 -#endif
3925 };
3926
3927 -#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
3928 -static unsigned short * const port_fer[] = {
3929 +static unsigned short *port_fer[] = {
3930 (unsigned short *) PORTF_FER,
3931 (unsigned short *) PORTG_FER,
3932 (unsigned short *) PORTH_FER,
3933 };
3934 +#endif
3935
3936 -# if !defined(BF537_FAMILY)
3937 -static unsigned short * const port_mux[] = {
3938 +#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
3939 +static unsigned short *port_mux[] = {
3940 (unsigned short *) PORTF_MUX,
3941 (unsigned short *) PORTG_MUX,
3942 (unsigned short *) PORTH_MUX,
3943 };
3944
3945 static const
3946 -u8 pmux_offset[][16] = {
3947 -# if defined(BF527_FAMILY)
3948 - { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
3949 - { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
3950 - { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
3951 -# elif defined(BF518_FAMILY)
3952 - { 0, 2, 2, 2, 2, 2, 2, 4, 6, 6, 6, 8, 8, 8, 8, 10 }, /* PORTF */
3953 - { 0, 0, 0, 2, 4, 6, 6, 6, 8, 10, 10, 12, 14, 14, 14, 14 }, /* PORTG */
3954 - { 0, 0, 0, 0, 2, 2, 4, 6, 10, 10, 10, 10, 10, 10, 10, 10 }, /* PORTH */
3955 -# endif
3956 +u8 pmux_offset[][16] =
3957 + {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
3958 + { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
3959 + { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
3960 + };
3961 +#endif
3962 +
3963 +#ifdef BF561_FAMILY
3964 +static struct gpio_port_t *gpio_bankb[] = {
3965 + (struct gpio_port_t *) FIO0_FLAG_D,
3966 + (struct gpio_port_t *) FIO1_FLAG_D,
3967 + (struct gpio_port_t *) FIO2_FLAG_D,
3968 };
3969 -# endif
3970 +#endif
3971
3972 +#ifdef BF548_FAMILY
3973 +static struct gpio_port_t *gpio_array[] = {
3974 + (struct gpio_port_t *)PORTA_FER,
3975 + (struct gpio_port_t *)PORTB_FER,
3976 + (struct gpio_port_t *)PORTC_FER,
3977 + (struct gpio_port_t *)PORTD_FER,
3978 + (struct gpio_port_t *)PORTE_FER,
3979 + (struct gpio_port_t *)PORTF_FER,
3980 + (struct gpio_port_t *)PORTG_FER,
3981 + (struct gpio_port_t *)PORTH_FER,
3982 + (struct gpio_port_t *)PORTI_FER,
3983 + (struct gpio_port_t *)PORTJ_FER,
3984 +};
3985 #endif
3986
3987 static unsigned short reserved_gpio_map[GPIO_BANK_NUM];
3988 @@ -134,9 +188,35 @@
3989 } str_ident[MAX_RESOURCES];
3990
3991 #if defined(CONFIG_PM)
3992 +#if defined(CONFIG_BF54x)
3993 +static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
3994 +#else
3995 +static unsigned short wakeup_map[GPIO_BANK_NUM];
3996 +static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
3997 static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
3998 +
3999 +#ifdef BF533_FAMILY
4000 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB};
4001 +#endif
4002 +
4003 +#ifdef BF537_FAMILY
4004 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX};
4005 +#endif
4006 +
4007 +#ifdef BF538_FAMILY
4008 +static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB};
4009 #endif
4010
4011 +#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
4012 +static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB};
4013 +#endif
4014 +
4015 +#ifdef BF561_FAMILY
4016 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB};
4017 +#endif
4018 +#endif
4019 +#endif /* CONFIG_PM */
4020 +
4021 inline int check_gpio(unsigned gpio)
4022 {
4023 #if defined(BF548_FAMILY)
4024 @@ -250,10 +330,9 @@
4025 {.res = P_SPI0_SSEL3, .offset = 0},
4026 };
4027
4028 -static void portmux_setup(unsigned short per)
4029 +static void portmux_setup(unsigned short per, unsigned short function)
4030 {
4031 u16 y, offset, muxreg;
4032 - u16 function = P_FUNCT2MUX(per);
4033
4034 for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) {
4035 if (port_mux_lut[y].res == per) {
4036 @@ -274,33 +353,30 @@
4037 }
4038 }
4039 #elif defined(BF548_FAMILY)