+++ /dev/null
-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
---- linux-2.6.29.owrt/arch/alpha/include/asm/bug.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h 2009-05-10 23:48:27.000000000 +0200
-@@ -8,12 +8,17 @@
-
- /* ??? Would be nice to use .gprel32 here, but we can't be sure that the
- function loaded the GP, so this could fail in modules. */
--#define BUG() do { \
-- __asm__ __volatile__( \
-- "call_pal %0 # bugchk\n\t" \
-- ".long %1\n\t.8byte %2" \
-- : : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \
-- for ( ; ; ); } while (0)
-+static inline void ATTRIB_NORET __BUG(const char *file, int line)
-+{
-+ __asm__ __volatile__(
-+ "call_pal %0 # bugchk\n\t"
-+ ".long %1\n\t.8byte %2"
-+ : : "i" (PAL_bugchk), "i"(line), "i"(file));
-+ for ( ; ; )
-+ ;
-+}
-+
-+#define BUG() __BUG(__FILE__, __LINE__)
-
- #define HAVE_ARCH_BUG
- #endif
-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
---- linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 23:48:27.000000000 +0200
-@@ -29,8 +29,6 @@
-
- #else /* no PCI - no IOMMU. */
-
--#include <asm/io.h> /* for virt_to_phys() */
--
- struct scatterlist;
- void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *dma_handle, gfp_t gfp);
-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
---- linux-2.6.29.owrt/arch/alpha/Kconfig 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/Kconfig 2009-05-10 23:48:27.000000000 +0200
-@@ -8,7 +8,6 @@
- select HAVE_AOUT
- select HAVE_IDE
- select HAVE_OPROFILE
-- select HAVE_SYSCALL_WRAPPERS
- help
- The Alpha is a 64-bit general-purpose processor designed and
- marketed by the Digital Equipment Corporation of blessed memory,
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/entry.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S 2009-05-10 23:48:27.000000000 +0200
-@@ -933,7 +933,7 @@
- osf_sigprocmask:
- .prologue 0
- mov $sp, $18
-- jmp $31, sys_osf_sigprocmask
-+ jmp $31, do_osf_sigprocmask
- .end osf_sigprocmask
-
- .align 4
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 23:48:27.000000000 +0200
-@@ -54,7 +54,8 @@
- * identical to OSF as we don't return 0 on success, but doing otherwise
- * would require changes to libc. Hopefully this is good enough.
- */
--SYSCALL_DEFINE1(osf_brk, unsigned long, brk)
-+asmlinkage unsigned long
-+osf_brk(unsigned long brk)
- {
- unsigned long retval = sys_brk(brk);
- if (brk && brk != retval)
-@@ -65,9 +66,9 @@
- /*
- * This is pure guess-work..
- */
--SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start,
-- unsigned long, text_len, unsigned long, bss_start,
-- unsigned long, bss_len)
-+asmlinkage int
-+osf_set_program_attributes(unsigned long text_start, unsigned long text_len,
-+ unsigned long bss_start, unsigned long bss_len)
- {
- struct mm_struct *mm;
-
-@@ -145,9 +146,9 @@
- return -EFAULT;
- }
-
--SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd,
-- struct osf_dirent __user *, dirent, unsigned int, count,
-- long __user *, basep)
-+asmlinkage int
-+osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent,
-+ unsigned int count, long __user *basep)
- {
- int error;
- struct file *file;
-@@ -176,9 +177,9 @@
-
- #undef NAME_OFFSET
-
--SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len,
-- unsigned long, prot, unsigned long, flags, unsigned long, fd,
-- unsigned long, off)
-+asmlinkage unsigned long
-+osf_mmap(unsigned long addr, unsigned long len, unsigned long prot,
-+ unsigned long flags, unsigned long fd, unsigned long off)
- {
- struct file *file = NULL;
- unsigned long ret = -EBADF;
-@@ -253,8 +254,8 @@
- return error;
- }
-
--SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
-- struct osf_statfs __user *, buffer, unsigned long, bufsiz)
-+asmlinkage int
-+osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz)
- {
- struct path path;
- int retval;
-@@ -267,8 +268,8 @@
- return retval;
- }
-
--SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd,
-- struct osf_statfs __user *, buffer, unsigned long, bufsiz)
-+asmlinkage int
-+osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz)
- {
- struct file *file;
- int retval;
-@@ -367,8 +368,8 @@
- return do_mount("", dirname, "proc", flags, NULL);
- }
-
--SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path,
-- int, flag, void __user *, data)
-+asmlinkage int
-+osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data)
- {
- int retval = -EINVAL;
- char *name;
-@@ -398,7 +399,8 @@
- return retval;
- }
-
--SYSCALL_DEFINE1(osf_utsname, char __user *, name)
-+asmlinkage int
-+osf_utsname(char __user *name)
- {
- int error;
-
-@@ -421,12 +423,14 @@
- return error;
- }
-
--SYSCALL_DEFINE0(getpagesize)
-+asmlinkage unsigned long
-+sys_getpagesize(void)
- {
- return PAGE_SIZE;
- }
-
--SYSCALL_DEFINE0(getdtablesize)
-+asmlinkage unsigned long
-+sys_getdtablesize(void)
- {
- return sysctl_nr_open;
- }
-@@ -434,7 +438,8 @@
- /*
- * For compatibility with OSF/1 only. Use utsname(2) instead.
- */
--SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen)
-+asmlinkage int
-+osf_getdomainname(char __user *name, int namelen)
- {
- unsigned len;
- int i;
-@@ -522,8 +527,8 @@
- PL_DEL = 5, PL_FDEL = 6
- };
-
--SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code,
-- union pl_args __user *, args)
-+asmlinkage long
-+osf_proplist_syscall(enum pl_code code, union pl_args __user *args)
- {
- long error;
- int __user *min_buf_size_ptr;
-@@ -562,8 +567,8 @@
- return error;
- }
-
--SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss,
-- struct sigstack __user *, uoss)
-+asmlinkage int
-+osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss)
- {
- unsigned long usp = rdusp();
- unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size;
-@@ -603,7 +608,8 @@
- return error;
- }
-
--SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count)
-+asmlinkage long
-+osf_sysinfo(int command, char __user *buf, long count)
- {
- char *sysinfo_table[] = {
- utsname()->sysname,
-@@ -641,8 +647,9 @@
- return err;
- }
-
--SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
-- unsigned long, nbytes, int __user *, start, void __user *, arg)
-+asmlinkage unsigned long
-+osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
-+ int __user *start, void __user *arg)
- {
- unsigned long w;
- struct percpu_struct *cpu;
-@@ -698,8 +705,9 @@
- return -EOPNOTSUPP;
- }
-
--SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
-- unsigned long, nbytes, int __user *, start, void __user *, arg)
-+asmlinkage unsigned long
-+osf_setsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
-+ int __user *start, void __user *arg)
- {
- switch (op) {
- case SSI_IEEE_FP_CONTROL: {
-@@ -872,8 +880,8 @@
- value->tv_sec = jiffies / HZ;
- }
-
--SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv,
-- struct timezone __user *, tz)
-+asmlinkage int
-+osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
- {
- if (tv) {
- struct timeval ktv;
-@@ -888,8 +896,8 @@
- return 0;
- }
-
--SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
-- struct timezone __user *, tz)
-+asmlinkage int
-+osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
- {
- struct timespec kts;
- struct timezone ktz;
-@@ -908,7 +916,8 @@
- return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
- }
-
--SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it)
-+asmlinkage int
-+osf_getitimer(int which, struct itimerval32 __user *it)
- {
- struct itimerval kit;
- int error;
-@@ -920,8 +929,8 @@
- return error;
- }
-
--SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
-- struct itimerval32 __user *, out)
-+asmlinkage int
-+osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __user *out)
- {
- struct itimerval kin, kout;
- int error;
-@@ -943,8 +952,8 @@
-
- }
-
--SYSCALL_DEFINE2(osf_utimes, char __user *, filename,
-- struct timeval32 __user *, tvs)
-+asmlinkage int
-+osf_utimes(char __user *filename, struct timeval32 __user *tvs)
- {
- struct timespec tv[2];
-
-@@ -970,8 +979,9 @@
- #define MAX_SELECT_SECONDS \
- ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1)
-
--SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp,
-- fd_set __user *, exp, struct timeval32 __user *, tvp)
-+asmlinkage int
-+osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
-+ struct timeval32 __user *tvp)
- {
- struct timespec end_time, *to = NULL;
- if (tvp) {
-@@ -1016,7 +1026,8 @@
- long ru_nivcsw; /* involuntary " */
- };
-
--SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru)
-+asmlinkage int
-+osf_getrusage(int who, struct rusage32 __user *ru)
- {
- struct rusage32 r;
-
-@@ -1042,8 +1053,9 @@
- return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
- }
-
--SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
-- struct rusage32 __user *, ur)
-+asmlinkage long
-+osf_wait4(pid_t pid, int __user *ustatus, int options,
-+ struct rusage32 __user *ur)
- {
- struct rusage r;
- long ret, err;
-@@ -1089,8 +1101,8 @@
- * seems to be a timeval pointer, and I suspect the second
- * one is the time remaining.. Ho humm.. No documentation.
- */
--SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep,
-- struct timeval32 __user *, remain)
-+asmlinkage int
-+osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remain)
- {
- struct timeval tmp;
- unsigned long ticks;
-@@ -1143,7 +1155,8 @@
- int :32; int :32; int :32; int :32;
- };
-
--SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
-+asmlinkage int
-+sys_old_adjtimex(struct timex32 __user *txc_p)
- {
- struct timex txc;
- int ret;
-@@ -1254,8 +1267,8 @@
- return 0;
- }
-
--SYSCALL_DEFINE3(osf_readv, unsigned long, fd,
-- const struct iovec __user *, vector, unsigned long, count)
-+asmlinkage ssize_t
-+osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long count)
- {
- if (unlikely(personality(current->personality) == PER_OSF4))
- if (osf_fix_iov_len(vector, count))
-@@ -1263,8 +1276,8 @@
- return sys_readv(fd, vector, count);
- }
-
--SYSCALL_DEFINE3(osf_writev, unsigned long, fd,
-- const struct iovec __user *, vector, unsigned long, count)
-+asmlinkage ssize_t
-+osf_writev(unsigned long fd, const struct iovec __user * vector, unsigned long count)
- {
- if (unlikely(personality(current->personality) == PER_OSF4))
- if (osf_fix_iov_len(vector, count))
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 23:48:27.000000000 +0200
-@@ -109,8 +109,7 @@
- /* Stubs for the routines in pci_iommu.c: */
-
- void *
--__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
-- dma_addr_t *dma_addrp, gfp_t gfp)
-+pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
- {
- return NULL;
- }
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/process.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c 2009-05-10 23:48:27.000000000 +0200
-@@ -93,8 +93,8 @@
- if (cpuid != boot_cpuid) {
- flags |= 0x00040000UL; /* "remain halted" */
- *pflags = flags;
-- set_cpu_present(cpuid, false);
-- set_cpu_possible(cpuid, false);
-+ cpu_clear(cpuid, cpu_present_map);
-+ cpu_clear(cpuid, cpu_possible_map);
- halt();
- }
- #endif
-@@ -120,8 +120,8 @@
-
- #ifdef CONFIG_SMP
- /* Wait for the secondaries to halt. */
-- set_cpu_present(boot_cpuid, false);
-- set_cpu_possible(boot_cpuid, false);
-+ cpu_clear(boot_cpuid, cpu_present_map);
-+ cpu_clear(boot_cpuid, cpu_possible_map);
- while (cpus_weight(cpu_present_map))
- barrier();
- #endif
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/signal.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c 2009-05-10 23:48:27.000000000 +0200
-@@ -19,7 +19,6 @@
- #include <linux/tty.h>
- #include <linux/binfmts.h>
- #include <linux/bitops.h>
--#include <linux/syscalls.h>
-
- #include <asm/uaccess.h>
- #include <asm/sigcontext.h>
-@@ -52,8 +51,8 @@
- * Note that we don't need to acquire the kernel lock for SMP
- * operation, as all of this is local to this thread.
- */
--SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask,
-- struct pt_regs *, regs)
-+asmlinkage unsigned long
-+do_osf_sigprocmask(int how, unsigned long newmask, struct pt_regs *regs)
- {
- unsigned long oldmask = -EINVAL;
-
-@@ -82,9 +81,9 @@
- return oldmask;
- }
-
--SYSCALL_DEFINE3(osf_sigaction, int, sig,
-- const struct osf_sigaction __user *, act,
-- struct osf_sigaction __user *, oact)
-+asmlinkage int
-+osf_sigaction(int sig, const struct osf_sigaction __user *act,
-+ struct osf_sigaction __user *oact)
- {
- struct k_sigaction new_ka, old_ka;
- int ret;
-@@ -113,9 +112,10 @@
- return ret;
- }
-
--SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
-- struct sigaction __user *, oact,
-- size_t, sigsetsize, void __user *, restorer)
-+asmlinkage long
-+sys_rt_sigaction(int sig, const struct sigaction __user *act,
-+ struct sigaction __user *oact,
-+ size_t sigsetsize, void __user *restorer)
- {
- struct k_sigaction new_ka, old_ka;
- int ret;
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/smp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c 2009-05-10 23:48:27.000000000 +0200
-@@ -121,11 +121,10 @@
- {
- int cpuid = hard_smp_processor_id();
-
-- if (cpu_online(cpuid)) {
-+ if (cpu_test_and_set(cpuid, cpu_online_map)) {
- printk("??, cpu 0x%x already present??\n", cpuid);
- BUG();
- }
-- set_cpu_online(cpuid, true);
-
- /* Turn on machine checks. */
- wrmces(7);
-@@ -436,8 +435,8 @@
- ((char *)cpubase + i*hwrpb->processor_size);
- if ((cpu->flags & 0x1cc) == 0x1cc) {
- smp_num_probed++;
-- set_cpu_possible(i, true);
-- set_cpu_present(i, true);
-+ cpu_set(i, cpu_possible_map);
-+ cpu_set(i, cpu_present_map);
- cpu->pal_revision = boot_cpu_palrev;
- }
-
-@@ -470,8 +469,8 @@
-
- /* Nothing to do on a UP box, or when told not to. */
- if (smp_num_probed == 1 || max_cpus == 0) {
-- init_cpu_possible(cpumask_of(boot_cpuid));
-- init_cpu_present(cpumask_of(boot_cpuid));
-+ cpu_possible_map = cpumask_of_cpu(boot_cpuid);
-+ cpu_present_map = cpumask_of_cpu(boot_cpuid);
- printk(KERN_INFO "SMP mode deactivated.\n");
- return;
- }
-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
---- linux-2.6.29.owrt/arch/alpha/kernel/systbls.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S 2009-05-10 23:48:27.000000000 +0200
-@@ -17,7 +17,7 @@
- .quad sys_write
- .quad alpha_ni_syscall /* 5 */
- .quad sys_close
-- .quad sys_osf_wait4
-+ .quad osf_wait4
- .quad alpha_ni_syscall
- .quad sys_link
- .quad sys_unlink /* 10 */
-@@ -27,11 +27,11 @@
- .quad sys_mknod
- .quad sys_chmod /* 15 */
- .quad sys_chown
-- .quad sys_osf_brk
-+ .quad osf_brk
- .quad alpha_ni_syscall
- .quad sys_lseek
- .quad sys_getxpid /* 20 */
-- .quad sys_osf_mount
-+ .quad osf_mount
- .quad sys_umount
- .quad sys_setuid
- .quad sys_getxuid
-@@ -53,7 +53,7 @@
- .quad alpha_ni_syscall /* 40 */
- .quad sys_dup
- .quad sys_alpha_pipe
-- .quad sys_osf_set_program_attributes
-+ .quad osf_set_program_attributes
- .quad alpha_ni_syscall
- .quad sys_open /* 45 */
- .quad alpha_ni_syscall
-@@ -81,7 +81,7 @@
- .quad sys_newlstat
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 70 */
-- .quad sys_osf_mmap
-+ .quad osf_mmap
- .quad alpha_ni_syscall
- .quad sys_munmap
- .quad sys_mprotect
-@@ -94,17 +94,17 @@
- .quad sys_setgroups /* 80 */
- .quad alpha_ni_syscall
- .quad sys_setpgid
-- .quad sys_osf_setitimer
-+ .quad osf_setitimer
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 85 */
-- .quad sys_osf_getitimer
-+ .quad osf_getitimer
- .quad sys_gethostname
- .quad sys_sethostname
- .quad sys_getdtablesize
- .quad sys_dup2 /* 90 */
- .quad sys_newfstat
- .quad sys_fcntl
-- .quad sys_osf_select
-+ .quad osf_select
- .quad sys_poll
- .quad sys_fsync /* 95 */
- .quad sys_setpriority
-@@ -123,22 +123,22 @@
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 110 */
- .quad sys_sigsuspend
-- .quad sys_osf_sigstack
-+ .quad osf_sigstack
- .quad sys_recvmsg
- .quad sys_sendmsg
- .quad alpha_ni_syscall /* 115 */
-- .quad sys_osf_gettimeofday
-- .quad sys_osf_getrusage
-+ .quad osf_gettimeofday
-+ .quad osf_getrusage
- .quad sys_getsockopt
- .quad alpha_ni_syscall
- #ifdef CONFIG_OSF4_COMPAT
-- .quad sys_osf_readv /* 120 */
-- .quad sys_osf_writev
-+ .quad osf_readv /* 120 */
-+ .quad osf_writev
- #else
- .quad sys_readv /* 120 */
- .quad sys_writev
- #endif
-- .quad sys_osf_settimeofday
-+ .quad osf_settimeofday
- .quad sys_fchown
- .quad sys_fchmod
- .quad sys_recvfrom /* 125 */
-@@ -154,7 +154,7 @@
- .quad sys_socketpair /* 135 */
- .quad sys_mkdir
- .quad sys_rmdir
-- .quad sys_osf_utimes
-+ .quad osf_utimes
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 140 */
- .quad sys_getpeername
-@@ -172,16 +172,16 @@
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 155 */
-- .quad sys_osf_sigaction
-+ .quad osf_sigaction
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
-- .quad sys_osf_getdirentries
-- .quad sys_osf_statfs /* 160 */
-- .quad sys_osf_fstatfs
-+ .quad osf_getdirentries
-+ .quad osf_statfs /* 160 */
-+ .quad osf_fstatfs
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
-- .quad sys_osf_getdomainname /* 165 */
-+ .quad osf_getdomainname /* 165 */
- .quad sys_setdomainname
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
-@@ -224,7 +224,7 @@
- .quad sys_semctl
- .quad sys_semget /* 205 */
- .quad sys_semop
-- .quad sys_osf_utsname
-+ .quad osf_utsname
- .quad sys_lchown
- .quad sys_shmat
- .quad sys_shmctl /* 210 */
-@@ -258,23 +258,23 @@
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 240 */
-- .quad sys_osf_sysinfo
-+ .quad osf_sysinfo
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
-- .quad sys_osf_proplist_syscall
-+ .quad osf_proplist_syscall
- .quad alpha_ni_syscall /* 245 */
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 250 */
-- .quad sys_osf_usleep_thread
-+ .quad osf_usleep_thread
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad sys_sysfs
- .quad alpha_ni_syscall /* 255 */
-- .quad sys_osf_getsysinfo
-- .quad sys_osf_setsysinfo
-+ .quad osf_getsysinfo
-+ .quad osf_setsysinfo
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall
- .quad alpha_ni_syscall /* 260 */
-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
---- linux-2.6.29.owrt/arch/arm/kernel/elf.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c 2009-05-10 23:48:27.000000000 +0200
-@@ -74,9 +74,9 @@
- */
- int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
- {
-- if (executable_stack != EXSTACK_DISABLE_X)
-+ if (executable_stack != EXSTACK_ENABLE_X)
- return 1;
-- if (cpu_architecture() < CPU_ARCH_ARMv6)
-+ if (cpu_architecture() <= CPU_ARCH_ARMv6)
- return 1;
- return 0;
- }
-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
---- linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 23:48:27.000000000 +0200
-@@ -650,7 +650,6 @@
- no_fp: mov pc, lr
-
- __und_usr_unknown:
-- enable_irq
- mov r0, sp
- adr lr, ret_from_exception
- b do_undefinstr
-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
---- linux-2.6.29.owrt/arch/arm/kernel/entry-common.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S 2009-05-10 23:48:27.000000000 +0200
-@@ -111,7 +111,6 @@
- .globl mcount_call
- mcount_call:
- bl ftrace_stub
-- ldr lr, [fp, #-4] @ restore lr
- ldmia sp!, {r0-r3, pc}
-
- ENTRY(ftrace_caller)
-@@ -123,7 +122,6 @@
- .globl ftrace_call
- ftrace_call:
- bl ftrace_stub
-- ldr lr, [fp, #-4] @ restore lr
- ldmia sp!, {r0-r3, pc}
-
- #else
-@@ -135,16 +133,14 @@
- adr r0, ftrace_stub
- cmp r0, r2
- bne trace
-- ldr lr, [fp, #-4] @ restore lr
- ldmia sp!, {r0-r3, pc}
-
- trace:
-- ldr r1, [fp, #-4] @ lr of instrumented routine
-+ ldr r1, [fp, #-4]
- mov r0, lr
- sub r0, r0, #MCOUNT_INSN_SIZE
- mov lr, pc
- mov pc, r2
-- mov lr, r1 @ restore lr
- ldmia sp!, {r0-r3, pc}
-
- #endif /* CONFIG_DYNAMIC_FTRACE */
-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
---- linux-2.6.29.owrt/arch/arm/kernel/fiq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -88,7 +88,7 @@
- * disable irqs for the duration. Note - these functions are almost
- * entirely coded in assembly.
- */
--void __naked set_fiq_regs(struct pt_regs *regs)
-+void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
- {
- register unsigned long tmp;
- asm volatile (
-@@ -106,7 +106,7 @@
- : "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
- }
-
--void __naked get_fiq_regs(struct pt_regs *regs)
-+void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
- {
- register unsigned long tmp;
- asm volatile (
-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
---- linux-2.6.29.owrt/arch/arm/kernel/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -101,7 +101,7 @@
- /* Handle bad interrupts */
- static struct irq_desc bad_irq_desc = {
- .handle_irq = handle_bad_irq,
-- .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock),
-+ .lock = SPIN_LOCK_UNLOCKED
- };
-
- /*
-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
---- linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 23:48:27.000000000 +0200
-@@ -13,8 +13,8 @@
- #include <asm/cacheflush.h>
- #include <asm/mach-types.h>
-
--extern const unsigned char relocate_new_kernel[];
--extern const unsigned int relocate_new_kernel_size;
-+const extern unsigned char relocate_new_kernel[];
-+const extern unsigned int relocate_new_kernel_size;
-
- extern void setup_mm_for_reboot(char mode);
-
-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
---- linux-2.6.29.owrt/arch/arm/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c 2009-05-10 23:48:27.000000000 +0200
-@@ -233,13 +233,12 @@
- unsigned int cachetype = read_cpuid_cachetype();
- unsigned int arch = cpu_architecture();
-
-- if (arch >= CPU_ARCH_ARMv6) {
-- if ((cachetype & (7 << 29)) == 4 << 29) {
-- /* ARMv7 register format */
-- cacheid = CACHEID_VIPT_NONALIASING;
-- if ((cachetype & (3 << 14)) == 1 << 14)
-- cacheid |= CACHEID_ASID_TAGGED;
-- } else if (cachetype & (1 << 23))
-+ if (arch >= CPU_ARCH_ARMv7) {
-+ cacheid = CACHEID_VIPT_NONALIASING;
-+ if ((cachetype & (3 << 14)) == 1 << 14)
-+ cacheid |= CACHEID_ASID_TAGGED;
-+ } else if (arch >= CPU_ARCH_ARMv6) {
-+ if (cachetype & (1 << 23))
- cacheid = CACHEID_VIPT_ALIASING;
- else
- cacheid = CACHEID_VIPT_NONALIASING;
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -697,7 +697,7 @@
- * Watchdog
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91cap9_wdt_device = {
- .name = "at91_wdt",
- .id = -1,
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -643,7 +643,7 @@
- * Watchdog
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9260_wdt_device = {
- .name = "at91_wdt",
- .id = -1,
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -621,7 +621,7 @@
- * Watchdog
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9261_wdt_device = {
- .name = "at91_wdt",
- .id = -1,
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -347,111 +347,6 @@
- void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
- #endif
-
--/* --------------------------------------------------------------------
-- * Compact Flash (PCMCIA or IDE)
-- * -------------------------------------------------------------------- */
--
--#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
-- defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
--
--static struct at91_cf_data cf0_data;
--
--static struct resource cf0_resources[] = {
-- [0] = {
-- .start = AT91_CHIPSELECT_4,
-- .end = AT91_CHIPSELECT_4 + SZ_256M - 1,
-- .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
-- }
--};
--
--static struct platform_device cf0_device = {
-- .id = 0,
-- .dev = {
-- .platform_data = &cf0_data,
-- },
-- .resource = cf0_resources,
-- .num_resources = ARRAY_SIZE(cf0_resources),
--};
--
--static struct at91_cf_data cf1_data;
--
--static struct resource cf1_resources[] = {
-- [0] = {
-- .start = AT91_CHIPSELECT_5,
-- .end = AT91_CHIPSELECT_5 + SZ_256M - 1,
-- .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
-- }
--};
--
--static struct platform_device cf1_device = {
-- .id = 1,
-- .dev = {
-- .platform_data = &cf1_data,
-- },
-- .resource = cf1_resources,
-- .num_resources = ARRAY_SIZE(cf1_resources),
--};
--
--void __init at91_add_device_cf(struct at91_cf_data *data)
--{
-- unsigned long ebi0_csa;
-- struct platform_device *pdev;
--
-- if (!data)
-- return;
--
-- /*
-- * assign CS4 or CS5 to SMC with Compact Flash logic support,
-- * we assume SMC timings are configured by board code,
-- * except True IDE where timings are controlled by driver
-- */
-- ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
-- switch (data->chipselect) {
-- case 4:
-- at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */
-- ebi0_csa |= AT91_MATRIX_EBI0_CS4A_SMC_CF1;
-- cf0_data = *data;
-- pdev = &cf0_device;
-- break;
-- case 5:
-- at91_set_A_periph(AT91_PIN_PD7, 0); /* EBI0_NCS5/CFCS1 */
-- ebi0_csa |= AT91_MATRIX_EBI0_CS5A_SMC_CF2;
-- cf1_data = *data;
-- pdev = &cf1_device;
-- break;
-- default:
-- printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
-- data->chipselect);
-- return;
-- }
-- at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa);
--
-- if (data->det_pin) {
-- at91_set_gpio_input(data->det_pin, 1);
-- at91_set_deglitch(data->det_pin, 1);
-- }
--
-- if (data->irq_pin) {
-- at91_set_gpio_input(data->irq_pin, 1);
-- at91_set_deglitch(data->irq_pin, 1);
-- }
--
-- if (data->vcc_pin)
-- /* initially off */
-- at91_set_gpio_output(data->vcc_pin, 0);
--
-- /* enable EBI controlled pins */
-- at91_set_A_periph(AT91_PIN_PD5, 1); /* NWAIT */
-- at91_set_A_periph(AT91_PIN_PD8, 0); /* CFCE1 */
-- at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
-- at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
--
-- pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
-- platform_device_register(pdev);
--}
--#else
--void __init at91_add_device_cf(struct at91_cf_data *data) {}
--#endif
-
- /* --------------------------------------------------------------------
- * NAND / SmartMedia
-@@ -959,7 +854,7 @@
- * Watchdog
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9263_wdt_device = {
- .name = "at91_wdt",
- .id = -1,
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -609,7 +609,7 @@
- * Watchdog
- * -------------------------------------------------------------------- */
-
--#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
-+#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
- static struct platform_device at91sam9rl_wdt_device = {
- .name = "at91_wdt",
- .id = -1,
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 23:48:27.000000000 +0200
-@@ -490,8 +490,7 @@
-
- /*--------------------------------------------------------------------------*/
-
--/*
-- * This lock class tells lockdep that GPIO irqs are in a different
-+/* This lock class tells lockdep that GPIO irqs are in a different
- * category than their parents, so it won't report false recursion.
- */
- static struct lock_class_key gpio_lock_class;
-@@ -510,6 +509,9 @@
- unsigned id = this->id;
- unsigned i;
-
-+ /* enable PIO controller's clock */
-+ clk_enable(this->clock);
-+
- __raw_writel(~0, this->regbase + PIO_IDR);
-
- for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
-@@ -554,14 +556,7 @@
- data->chipbase = PIN_BASE + i * 32;
- data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS;
-
-- /* enable PIO controller's clock */
-- clk_enable(data->clock);
--
-- /*
-- * Some processors share peripheral ID between multiple GPIO banks.
-- * SAM9263 (PIOC, PIOD, PIOE)
-- * CAP9 (PIOA, PIOB, PIOC, PIOD)
-- */
-+ /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */
- if (last && last->id == data->id)
- last->next = data;
- }
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 23:48:27.000000000 +0200
-@@ -56,9 +56,6 @@
- u8 vcc_pin; /* power switching */
- u8 rst_pin; /* card reset */
- u8 chipselect; /* EBI Chip Select number */
-- u8 flags;
--#define AT91_CF_TRUE_IDE 0x01
--#define AT91_IDE_SWAP_A0_A2 0x02
- };
- extern void __init at91_add_device_cf(struct at91_cf_data *data);
-
-@@ -96,7 +93,6 @@
- u8 enable_pin; /* chip enable */
- u8 det_pin; /* card detect */
- u8 rdy_pin; /* ready/busy */
-- u8 rdy_pin_active_low; /* rdy_pin value is inverted */
- u8 ale; /* address line number connected to ALE */
- u8 cle; /* address line number connected to CLE */
- u8 bus_width_16; /* buswidth is 16 bit */
-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
---- linux-2.6.29.owrt/arch/arm/mach-at91/pm.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c 2009-05-10 23:48:27.000000000 +0200
-@@ -332,6 +332,7 @@
- at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
-
- error:
-+ sdram_selfrefresh_disable();
- target_state = PM_SUSPEND_ON;
- at91_irq_resume();
- at91_gpio_resume();
-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
---- linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 23:48:27.000000000 +0200
-@@ -311,9 +311,6 @@
- gpio_request(gpio + 7, "nCF_SEL");
- gpio_direction_output(gpio + 7, 1);
-
-- /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
-- setup_usb(500, 8);
--
- return 0;
- }
-
-@@ -420,6 +417,9 @@
- platform_add_devices(davinci_evm_devices,
- ARRAY_SIZE(davinci_evm_devices));
- evm_init_i2c();
-+
-+ /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
-+ setup_usb(500, 8);
- }
-
- static __init void davinci_evm_irq_init(void)
-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
---- linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 23:48:27.000000000 +0200
-@@ -231,11 +231,6 @@
- .lpsc = DAVINCI_LPSC_GPIO,
- },
- {
-- .name = "usb",
-- .rate = &commonrate,
-- .lpsc = DAVINCI_LPSC_USB,
-- },
-- {
- .name = "AEMIFCLK",
- .rate = &commonrate,
- .lpsc = DAVINCI_LPSC_AEMIF,
-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
---- linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 23:48:27.000000000 +0200
-@@ -47,7 +47,6 @@
- #elif defined(CONFIG_USB_MUSB_HOST)
- .mode = MUSB_HOST,
- #endif
-- .clock = "usb",
- .config = &musb_config,
- };
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 2009-05-10 23:48:27.000000000 +0200
-@@ -0,0 +1,3 @@
-+/*
-+ * arch/arm/mach-ep93xx/include/mach/gesbc9312.h
-+ */
-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
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 23:48:27.000000000 +0200
-@@ -10,6 +10,7 @@
-
- #include "platform.h"
-
-+#include "gesbc9312.h"
- #include "ts72xx.h"
-
- #endif
-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
---- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 23:48:27.000000000 +0200
-@@ -4,8 +4,6 @@
-
- #ifndef __ASSEMBLY__
-
--struct i2c_board_info;
--
- struct ep93xx_eth_data
- {
- unsigned char dev_addr[6];
-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
---- linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -42,7 +42,7 @@
- writel(0, GPIO_EDGE_CAUSE(32));
-
- for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) {
-- set_irq_chip(i, &orion_gpio_irq_chip);
-+ set_irq_chip(i, &orion_gpio_irq_level_chip);
- set_irq_handler(i, handle_level_irq);
- irq_desc[i].status |= IRQ_LEVEL;
- set_irq_flags(i, IRQF_VALID);
-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
---- linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 23:48:27.000000000 +0200
-@@ -27,7 +27,6 @@
- #include <asm/mach/map.h>
- #include <asm/mach/flash.h>
-
--#include <mach/irqs.h>
- #include <mach/board.h>
- #include <mach/msm_iomap.h>
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -40,7 +40,7 @@
- writel(0, GPIO_EDGE_CAUSE(0));
-
- for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) {
-- set_irq_chip(i, &orion_gpio_irq_chip);
-+ set_irq_chip(i, &orion_gpio_irq_level_chip);
- set_irq_handler(i, handle_level_irq);
- irq_desc[i].status |= IRQ_LEVEL;
- set_irq_flags(i, IRQF_VALID);
-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
---- linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -23,8 +23,6 @@
- #include <linux/init.h>
- #include <linux/platform_device.h>
- #include <linux/gpio.h>
--
--#include <mach/irqs.h>
- #include <mach/hardware.h>
-
- static struct resource imx_csi_resources[] = {
-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
---- linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 23:48:27.000000000 +0200
-@@ -21,7 +21,6 @@
- #include <asm/mach/arch.h>
- #include <asm/mach/time.h>
-
--#include <mach/irqs.h>
- #include <mach/hardware.h>
- #include <mach/common.h>
- #include <mach/imx-uart.h>
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -181,7 +181,7 @@
- }
- size = OMAP1_MMC_SIZE;
-
-- omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]);
-+ omap_mmc_add(i, base, size, irq, mmc_data[i]);
- };
- }
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
-@@ -28,8 +28,81 @@
- #define DPS_RSTCT2_PER_EN (1 << 0)
- #define DSP_RSTCT2_WD_PER_EN (1 << 1)
-
-+struct mcbsp_internal_clk {
-+ struct clk clk;
-+ struct clk **childs;
-+ int n_childs;
-+};
-+
- #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
--const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
-+static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{
-+ const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
-+ int i;
-+
-+ mclk->n_childs = ARRAY_SIZE(clk_names);
-+ mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
-+ GFP_KERNEL);
-+
-+ for (i = 0; i < mclk->n_childs; i++) {
-+ /* We fake a platform device to get correct device id */
-+ struct platform_device pdev;
-+
-+ pdev.dev.bus = &platform_bus_type;
-+ pdev.id = mclk->clk.id;
-+ mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
-+ if (IS_ERR(mclk->childs[i]))
-+ printk(KERN_ERR "Could not get clock %s (%d).\n",
-+ clk_names[i], mclk->clk.id);
-+ }
-+}
-+
-+static int omap_mcbsp_clk_enable(struct clk *clk)
-+{
-+ struct mcbsp_internal_clk *mclk = container_of(clk,
-+ struct mcbsp_internal_clk, clk);
-+ int i;
-+
-+ for (i = 0; i < mclk->n_childs; i++)
-+ clk_enable(mclk->childs[i]);
-+ return 0;
-+}
-+
-+static void omap_mcbsp_clk_disable(struct clk *clk)
-+{
-+ struct mcbsp_internal_clk *mclk = container_of(clk,
-+ struct mcbsp_internal_clk, clk);
-+ int i;
-+
-+ for (i = 0; i < mclk->n_childs; i++)
-+ clk_disable(mclk->childs[i]);
-+}
-+
-+static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 1,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 3,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+};
-+
-+#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
-+#else
-+#define omap_mcbsp_clks_size 0
-+static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
-+static inline void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{ }
- #endif
-
- static void omap1_mcbsp_request(unsigned int id)
-@@ -94,9 +167,8 @@
- .rx_irq = INT_McBSP1RX,
- .tx_irq = INT_McBSP1TX,
- .ops = &omap1_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 3,
-- },
-+ .clk_name = "mcbsp_clk",
-+ },
- {
- .phys_base = OMAP1510_MCBSP2_BASE,
- .dma_rx_sync = OMAP_DMA_MCBSP2_RX,
-@@ -112,8 +184,7 @@
- .rx_irq = INT_McBSP3RX,
- .tx_irq = INT_McBSP3TX,
- .ops = &omap1_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 3,
-+ .clk_name = "mcbsp_clk",
- },
- };
- #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata)
-@@ -131,8 +202,7 @@
- .rx_irq = INT_McBSP1RX,
- .tx_irq = INT_McBSP1TX,
- .ops = &omap1_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 3,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP1610_MCBSP2_BASE,
-@@ -149,8 +219,7 @@
- .rx_irq = INT_McBSP3RX,
- .tx_irq = INT_McBSP3TX,
- .ops = &omap1_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 3,
-+ .clk_name = "mcbsp_clk",
- },
- };
- #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata)
-@@ -161,6 +230,15 @@
-
- int __init omap1_mcbsp_init(void)
- {
-+ int i;
-+
-+ for (i = 0; i < omap_mcbsp_clks_size; i++) {
-+ if (cpu_is_omap15xx() || cpu_is_omap16xx()) {
-+ omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
-+ clk_register(&omap_mcbsp_clks[i].clk);
-+ }
-+ }
-+
- if (cpu_is_omap730())
- omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ;
- if (cpu_is_omap15xx())
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 23:48:27.000000000 +0200
-@@ -81,7 +81,7 @@
- }
-
- ldp_smc911x_resources[0].start = cs_mem_base + 0x0;
-- ldp_smc911x_resources[0].end = cs_mem_base + 0xff;
-+ ldp_smc911x_resources[0].end = cs_mem_base + 0xf;
- udelay(100);
-
- eth_gpio = LDP_SMC911X_GPIO;
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 23:48:27.000000000 +0200
-@@ -178,9 +178,7 @@
- #ifdef CONFIG_I2C2_OMAP_BEAGLE
- omap_register_i2c_bus(2, 400, NULL, 0);
- #endif
-- /* Bus 3 is attached to the DVI port where devices like the pico DLP
-- * projector don't work reliably with 400kHz */
-- omap_register_i2c_bus(3, 100, NULL, 0);
-+ omap_register_i2c_bus(3, 400, NULL, 0);
- return 0;
- }
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 23:48:27.000000000 +0200
-@@ -565,7 +565,7 @@
- *
- * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
- * find the corresponding register field value. The return register value is
-- * the value before left-shifting. Returns ~0 on error
-+ * the value before left-shifting. Returns 0xffffffff on error
- */
- u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
- {
-@@ -577,7 +577,7 @@
-
- clks = omap2_get_clksel_by_parent(clk, clk->parent);
- if (clks == NULL)
-- return ~0;
-+ return 0;
-
- for (clkr = clks->rates; clkr->div; clkr++) {
- if ((clkr->flags & cpu_mask) && (clkr->div == div))
-@@ -588,7 +588,7 @@
- printk(KERN_ERR "clock: Could not find divisor %d for "
- "clock %s parent %s\n", div, clk->name,
- clk->parent->name);
-- return ~0;
-+ return 0;
- }
-
- return clkr->val;
-@@ -708,7 +708,7 @@
- return 0;
-
- for (clkr = clks->rates; clkr->div; clkr++) {
-- if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
-+ if (clkr->flags & (cpu_mask | DEFAULT_RATE))
- break; /* Found the default rate for this platform */
- }
-
-@@ -746,7 +746,7 @@
- return -EINVAL;
-
- if (clk->usecount > 0)
-- omap2_clk_disable(clk);
-+ _omap2_clk_disable(clk);
-
- /* Set new source value (previous dividers if any in effect) */
- reg_val = __raw_readl(src_addr) & ~field_mask;
-@@ -759,10 +759,10 @@
- wmb();
- }
-
-- clk->parent = new_parent;
--
- if (clk->usecount > 0)
-- omap2_clk_enable(clk);
-+ _omap2_clk_enable(clk);
-+
-+ clk->parent = new_parent;
-
- /* CLKSEL clocks follow their parents' rates, divided by a divisor */
- clk->rate = new_parent->rate;
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 23:48:27.000000000 +0200
-@@ -421,7 +421,6 @@
- int nr_controllers)
- {
- int i;
-- char *name;
-
- for (i = 0; i < nr_controllers; i++) {
- unsigned long base, size;
-@@ -451,14 +450,12 @@
- continue;
- }
-
-- if (cpu_is_omap2420()) {
-+ if (cpu_is_omap2420())
- size = OMAP2420_MMC_SIZE;
-- name = "mmci-omap";
-- } else {
-+ else
- size = HSMMC_SIZE;
-- name = "mmci-omap-hs";
-- }
-- omap_mmc_add(name, i, base, size, irq, mmc_data[i]);
-+
-+ omap_mmc_add(i, base, size, irq, mmc_data[i]);
- };
- }
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/id.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c 2009-05-10 23:48:27.000000000 +0200
-@@ -172,13 +172,9 @@
- omap_revision = OMAP3430_REV_ES3_0;
- rev_name = "ES3.0";
- break;
-- case 4:
-- omap_revision = OMAP3430_REV_ES3_1;
-- rev_name = "ES3.1";
-- break;
- default:
- /* Use the latest known revision as default */
-- omap_revision = OMAP3430_REV_ES3_1;
-+ omap_revision = OMAP3430_REV_ES3_0;
- rev_name = "Unknown revision\n";
- }
- }
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 23:48:27.000000000 +0200
-@@ -134,7 +134,6 @@
- .ack = omap_mask_ack_irq,
- .mask = omap_mask_irq,
- .unmask = omap_unmask_irq,
-- .disable = omap_mask_irq,
- };
-
- static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
-@@ -24,7 +24,106 @@
- #include <mach/cpu.h>
- #include <mach/mcbsp.h>
-
--const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
-+struct mcbsp_internal_clk {
-+ struct clk clk;
-+ struct clk **childs;
-+ int n_childs;
-+};
-+
-+#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
-+static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
-+{
-+ const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
-+ int i;
-+
-+ mclk->n_childs = ARRAY_SIZE(clk_names);
-+ mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
-+ GFP_KERNEL);
-+
-+ for (i = 0; i < mclk->n_childs; i++) {
-+ /* We fake a platform device to get correct device id */
-+ struct platform_device pdev;
-+
-+ pdev.dev.bus = &platform_bus_type;
-+ pdev.id = mclk->clk.id;
-+ mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
-+ if (IS_ERR(mclk->childs[i]))
-+ printk(KERN_ERR "Could not get clock %s (%d).\n",
-+ clk_names[i], mclk->clk.id);
-+ }
-+}
-+
-+static int omap_mcbsp_clk_enable(struct clk *clk)
-+{
-+ struct mcbsp_internal_clk *mclk = container_of(clk,
-+ struct mcbsp_internal_clk, clk);
-+ int i;
-+
-+ for (i = 0; i < mclk->n_childs; i++)
-+ clk_enable(mclk->childs[i]);
-+ return 0;
-+}
-+
-+static void omap_mcbsp_clk_disable(struct clk *clk)
-+{
-+ struct mcbsp_internal_clk *mclk = container_of(clk,
-+ struct mcbsp_internal_clk, clk);
-+ int i;
-+
-+ for (i = 0; i < mclk->n_childs; i++)
-+ clk_disable(mclk->childs[i]);
-+}
-+
-+static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 1,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 2,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 3,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 4,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+ {
-+ .clk = {
-+ .name = "mcbsp_clk",
-+ .id = 5,
-+ .enable = omap_mcbsp_clk_enable,
-+ .disable = omap_mcbsp_clk_disable,
-+ },
-+ },
-+};
-+
-+#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
-+#else
-+#define omap_mcbsp_clks_size 0
-+static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
-+static inline void omap_mcbsp_clk_init(struct clk *clk)
-+{ }
-+#endif
-
- static void omap2_mcbsp2_mux_setup(void)
- {
-@@ -57,8 +156,7 @@
- .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP24XX_MCBSP2_BASE,
-@@ -67,8 +165,7 @@
- .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- };
- #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata)
-@@ -86,8 +183,7 @@
- .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP24XX_MCBSP2_BASE,
-@@ -96,8 +192,7 @@
- .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP2430_MCBSP3_BASE,
-@@ -106,8 +201,7 @@
- .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP2430_MCBSP4_BASE,
-@@ -116,8 +210,7 @@
- .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP2430_MCBSP5_BASE,
-@@ -126,8 +219,7 @@
- .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- };
- #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata)
-@@ -145,8 +237,7 @@
- .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP34XX_MCBSP2_BASE,
-@@ -155,8 +246,7 @@
- .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP34XX_MCBSP3_BASE,
-@@ -165,8 +255,7 @@
- .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP34XX_MCBSP4_BASE,
-@@ -175,8 +264,7 @@
- .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- {
- .phys_base = OMAP34XX_MCBSP5_BASE,
-@@ -185,8 +273,7 @@
- .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
- .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
- .ops = &omap2_mcbsp_ops,
-- .clk_names = clk_names,
-- .num_clks = 2,
-+ .clk_name = "mcbsp_clk",
- },
- };
- #define OMAP34XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap34xx_mcbsp_pdata)
-@@ -197,6 +284,14 @@
-
- static int __init omap2_mcbsp_init(void)
- {
-+ int i;
-+
-+ for (i = 0; i < omap_mcbsp_clks_size; i++) {
-+ /* Once we call clk_get inside init, we do not register it */
-+ omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
-+ clk_register(&omap_mcbsp_clks[i].clk);
-+ }
-+
- if (cpu_is_omap2420())
- omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ;
- if (cpu_is_omap2430())
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 23:48:28.000000000 +0200
-@@ -93,8 +93,9 @@
- orr r4, r4, #0x40 @ enable self refresh on idle req
- mov r5, #0x2000 @ set delay (DPLL relock + DLL relock)
- str r4, [r2] @ make it so
-+ mov r2, #0
- nop
-- mcr p15, 0, r3, c7, c0, 4 @ wait for interrupt
-+ mcr p15, 0, r2, c7, c0, 4 @ wait for interrupt
- nop
- loop:
- subs r5, r5, #0x1 @ awake, wait just a bit
-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
---- linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -118,8 +118,7 @@
- clockevent_gpt.max_delta_ns =
- clockevent_delta2ns(0xffffffff, &clockevent_gpt);
- clockevent_gpt.min_delta_ns =
-- clockevent_delta2ns(3, &clockevent_gpt);
-- /* Timer internal resynch latency. */
-+ clockevent_delta2ns(1, &clockevent_gpt);
-
- clockevent_gpt.cpumask = cpumask_of(0);
- clockevents_register_device(&clockevent_gpt);
-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
---- linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 23:48:28.000000000 +0200
-@@ -431,10 +431,6 @@
- /*****************************************************************************
- * XOR engine
- ****************************************************************************/
--struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
-- .dram = &orion5x_mbus_dram_info,
--};
--
- static struct resource orion5x_xor_shared_resources[] = {
- {
- .name = "xor low",
-@@ -452,9 +448,6 @@
- static struct platform_device orion5x_xor_shared = {
- .name = MV_XOR_SHARED_NAME,
- .id = 0,
-- .dev = {
-- .platform_data = &orion5x_xor_shared_data,
-- },
- .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
- .resource = orion5x_xor_shared_resources,
- };
-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
---- linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 23:48:28.000000000 +0200
-@@ -44,7 +44,7 @@
- * User can use set_type() if he wants to use edge types handlers.
- */
- for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) {
-- set_irq_chip(i, &orion_gpio_irq_chip);
-+ set_irq_chip(i, &orion_gpio_irq_level_chip);
- set_irq_handler(i, handle_level_irq);
- irq_desc[i].status |= IRQ_LEVEL;
- set_irq_flags(i, IRQF_VALID);
-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
---- linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 23:48:28.000000000 +0200
-@@ -121,16 +121,6 @@
- if (dma_channels == NULL)
- return -ENOMEM;
-
-- /* dma channel priorities on pxa2xx processors:
-- * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
-- * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
-- * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
-- */
-- for (i = 0; i < num_ch; i++) {
-- DCSR(i) = 0;
-- dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
-- }
--
- ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
- if (ret) {
- printk (KERN_CRIT "Wow! Can't register IRQ for DMA\n");
-@@ -138,6 +128,14 @@
- return ret;
- }
-
-+ /* dma channel priorities on pxa2xx processors:
-+ * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
-+ * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
-+ * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
-+ */
-+ for (i = 0; i < num_ch; i++)
-+ dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
-+
- num_dma_channels = num_ch;
- return 0;
- }
-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
---- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 23:48:28.000000000 +0200
-@@ -1,8 +1,6 @@
- #ifndef __ASM_ARCH_REGS_AC97_H
- #define __ASM_ARCH_REGS_AC97_H
-
--#include <mach/hardware.h>
--
- /*
- * AC97 Controller registers
- */
-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
---- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 23:48:28.000000000 +0200
-@@ -41,9 +41,6 @@
- #elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
- #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */
- #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */
--#endif
--
--#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
- #define SSCR0_EDSS (1 << 20) /* Extended data size select */
- #define SSCR0_NCS (1 << 21) /* Network clock select */
- #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */
-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
---- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 23:48:28.000000000 +0200
-@@ -88,13 +88,13 @@
- static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0);
-
- static struct clk_lookup common_clkregs[] = {
-- INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
-+ INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", "NANDCLK"),
- };
-
- static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
-
- static struct clk_lookup pxa310_clkregs[] = {
-- INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL),
-+ INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", "MMCCLK"),
- };
-
- static int __init pxa300_init(void)
-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
---- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 23:48:28.000000000 +0200
-@@ -83,7 +83,7 @@
- static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0);
-
- static struct clk_lookup pxa320_clkregs[] = {
-- INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
-+ INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", "NANDCLK"),
- };
-
- static int __init pxa320_init(void)
-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
---- linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 23:48:28.000000000 +0200
-@@ -19,7 +19,6 @@
- #include <linux/serial_8250.h>
- #include <linux/ata_platform.h>
- #include <linux/io.h>
--#include <linux/i2c.h>
-
- #include <asm/elf.h>
- #include <asm/mach-types.h>
-@@ -202,13 +201,8 @@
- &pata_device,
- };
-
--static struct i2c_board_info i2c_rtc = {
-- I2C_BOARD_INFO("pcf8583", 0x50)
--};
--
- static int __init rpc_init(void)
- {
-- i2c_register_board_info(0, &i2c_rtc, 1);
- return platform_add_devices(devs, ARRAY_SIZE(devs));
- }
-
-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
---- linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 23:48:28.000000000 +0200
-@@ -129,7 +129,7 @@
- .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
- };
-
--static struct map_desc smdk6410_iodesc[] = {};
-+struct map_desc smdk6410_iodesc[] = {};
-
- static struct platform_device *smdk6410_devices[] __initdata = {
- #ifdef CONFIG_SMDK6410_SD_CH0
-@@ -146,7 +146,7 @@
-
- static struct i2c_board_info i2c_devs0[] __initdata = {
- { I2C_BOARD_INFO("24c08", 0x50), },
-- { I2C_BOARD_INFO("wm8580", 0x1b), },
-+ { I2C_BOARD_INFO("WM8580", 0X1b), },
- };
-
- static struct i2c_board_info i2c_devs1[] __initdata = {
-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
---- linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 23:48:28.000000000 +0200
-@@ -289,7 +289,7 @@
- };
-
- static struct platform_device sa11x0mtd_device = {
-- .name = "sa1100-mtd",
-+ .name = "flash",
- .id = -1,
- };
-
-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
---- linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 23:48:28.000000000 +0200
-@@ -23,8 +23,7 @@
- #ifdef CONFIG_CPU_32v6K
- clrex
- #else
-- sub r1, sp, #4 @ Get unused stack location
-- strex r0, r1, [r1] @ Clear the exclusive monitor
-+ strex r0, r1, [sp] @ Clear the exclusive monitor
- #endif
- mrc p15, 0, r1, c5, c0, 0 @ get FSR
- mrc p15, 0, r0, c6, c0, 0 @ get FAR
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 23:48:28.000000000 +0200
-@@ -13,7 +13,7 @@
- #include <linux/init.h>
- #include <linux/highmem.h>
-
--static void __naked
-+static void __attribute__((naked))
- feroceon_copy_user_page(void *kto, const void *kfrom)
- {
- asm("\
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 23:48:28.000000000 +0200
-@@ -15,7 +15,7 @@
- *
- * FIXME: do we need to handle cache stuff...
- */
--static void __naked
-+static void __attribute__((naked))
- v3_copy_user_page(void *kto, const void *kfrom)
- {
- asm("\n\
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 23:48:28.000000000 +0200
-@@ -44,7 +44,7 @@
- * instruction. If your processor does not supply this, you have to write your
- * own copy_user_highpage that does the right thing.
- */
--static void __naked
-+static void __attribute__((naked))
- mc_copy_user_page(void *from, void *to)
- {
- asm volatile(
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 23:48:28.000000000 +0200
-@@ -22,7 +22,7 @@
- * instruction. If your processor does not supply this, you have to write your
- * own copy_user_highpage that does the right thing.
- */
--static void __naked
-+static void __attribute__((naked))
- v4wb_copy_user_page(void *kto, const void *kfrom)
- {
- asm("\
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 23:48:28.000000000 +0200
-@@ -20,7 +20,7 @@
- * dirty data in the cache. However, we do have to ensure that
- * subsequent reads are up to date.
- */
--static void __naked
-+static void __attribute__((naked))
- v4wt_copy_user_page(void *kto, const void *kfrom)
- {
- asm("\
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 23:48:28.000000000 +0200
-@@ -29,7 +29,7 @@
- * if we eventually end up using our copied page.
- *
- */
--static void __naked
-+static void __attribute__((naked))
- xsc3_mc_copy_user_page(void *kto, const void *kfrom)
- {
- asm("\
-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
---- linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 23:48:28.000000000 +0200
-@@ -42,7 +42,7 @@
- * Dcache aliasing issue. The writes will be forwarded to the write buffer,
- * and merged as appropriate.
- */
--static void __naked
-+static void __attribute__((naked))
- mc_copy_user_page(void *from, void *to)
- {
- /*
-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
---- linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 23:48:28.000000000 +0200
-@@ -490,30 +490,26 @@
- */
- void dma_cache_maint(const void *start, size_t size, int direction)
- {
-- void (*inner_op)(const void *, const void *);
-- void (*outer_op)(unsigned long, unsigned long);
-+ const void *end = start + size;
-
-- BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
-+ BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1));
-
- switch (direction) {
- case DMA_FROM_DEVICE: /* invalidate only */
-- inner_op = dmac_inv_range;
-- outer_op = outer_inv_range;
-+ dmac_inv_range(start, end);
-+ outer_inv_range(__pa(start), __pa(end));
- break;
- case DMA_TO_DEVICE: /* writeback only */
-- inner_op = dmac_clean_range;
-- outer_op = outer_clean_range;
-+ dmac_clean_range(start, end);
-+ outer_clean_range(__pa(start), __pa(end));
- break;
- case DMA_BIDIRECTIONAL: /* writeback and invalidate */
-- inner_op = dmac_flush_range;
-- outer_op = outer_flush_range;
-+ dmac_flush_range(start, end);
-+ outer_flush_range(__pa(start), __pa(end));
- break;
- default:
- BUG();
- }
--
-- inner_op(start, start + size);
-- outer_op(__pa(start), __pa(start) + size);
- }
- EXPORT_SYMBOL(dma_cache_maint);
-
-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
---- linux-2.6.29.owrt/arch/arm/mm/fault-armv.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c 2009-05-10 23:48:28.000000000 +0200
-@@ -66,10 +66,7 @@
- * fault (ie, is old), we can safely ignore any issues.
- */
- if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) {
-- unsigned long pfn = pte_pfn(entry);
-- flush_cache_page(vma, address, pfn);
-- outer_flush_range((pfn << PAGE_SHIFT),
-- (pfn << PAGE_SHIFT) + PAGE_SIZE);
-+ flush_cache_page(vma, address, pte_pfn(entry));
- pte_val(entry) &= ~L_PTE_MT_MASK;
- pte_val(entry) |= shared_pte_mask;
- set_pte_at(vma->vm_mm, address, pte, entry);
-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
---- linux-2.6.29.owrt/arch/arm/mm/init.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/init.c 2009-05-10 23:48:28.000000000 +0200
-@@ -382,7 +382,7 @@
- for_each_node(node)
- bootmem_free_node(node, mi);
-
-- high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
-+ high_memory = __va(memend_pfn << PAGE_SHIFT);
-
- /*
- * This doesn't seem to be used by the Linux memory manager any
-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
---- linux-2.6.29.owrt/arch/arm/mm/mmap.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c 2009-05-10 23:48:28.000000000 +0200
-@@ -124,7 +124,7 @@
- {
- if (addr < PHYS_OFFSET)
- return 0;
-- if (addr + size >= __pa(high_memory - 1))
-+ if (addr + size > __pa(high_memory))
- return 0;
-
- return 1;
-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
---- linux-2.6.29.owrt/arch/arm/mm/mmu.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c 2009-05-10 23:48:28.000000000 +0200
-@@ -693,8 +693,7 @@
- * Check whether this memory bank would entirely overlap
- * the vmalloc area.
- */
-- if (__va(bank->start) >= VMALLOC_MIN ||
-- __va(bank->start) < PAGE_OFFSET) {
-+ if (__va(bank->start) >= VMALLOC_MIN) {
- printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx "
- "(vmalloc region overlap).\n",
- bank->start, bank->start + bank->size - 1);
-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
---- linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,36 +0,0 @@
--#ifndef ASMARM_ARCH_MMC_H
--#define ASMARM_ARCH_MMC_H
--
--#include <linux/mmc/host.h>
--
--struct device;
--
--/* board specific SDHC data, optional.
-- * If not present, a writable card with 3,3V is assumed.
-- */
--struct imxmmc_platform_data {
-- /* Return values for the get_ro callback should be:
-- * 0 for a read/write card
-- * 1 for a read-only card
-- * -ENOSYS when not supported (equal to NULL callback)
-- * or a negative errno value when something bad happened
-- */
-- int (*get_ro)(struct device *);
--
-- /* board specific hook to (de)initialize the SD slot.
-- * The board code can call 'handler' on a card detection
-- * change giving data as argument.
-- */
-- int (*init)(struct device *dev, irq_handler_t handler, void *data);
-- void (*exit)(struct device *dev, void *data);
--
-- /* available voltages. If not given, assume
-- * MMC_VDD_32_33 | MMC_VDD_33_34
-- */
-- unsigned int ocr_avail;
--
-- /* adjust slot voltage */
-- void (*setpower)(struct device *, unsigned int vdd);
--};
--
--#endif
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/common.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c 2009-05-10 23:48:28.000000000 +0200
-@@ -200,16 +200,20 @@
- };
-
- /*
-+ * Rounds down to nearest nsec.
-+ */
-+unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
-+{
-+ return cyc2ns(&clocksource_32k, ticks_32k);
-+}
-+
-+/*
- * Returns current time from boot in nsecs. It's OK for this to wrap
- * around for now, as it's just a relative time stamp.
- */
- unsigned long long sched_clock(void)
- {
-- unsigned long long ret;
--
-- ret = (unsigned long long)omap_32k_read();
-- ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
-- return ret;
-+ return omap_32k_ticks_to_nsecs(omap_32k_read());
- }
-
- static int __init omap_init_clocksource_32k(void)
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/devices.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c 2009-05-10 23:48:28.000000000 +0200
-@@ -200,15 +200,14 @@
- /*
- * Register MMC devices. Called from mach-omap1 and mach-omap2 device init.
- */
--int __init omap_mmc_add(const char *name, int id, unsigned long base,
-- unsigned long size, unsigned int irq,
-- struct omap_mmc_platform_data *data)
-+int __init omap_mmc_add(int id, unsigned long base, unsigned long size,
-+ unsigned int irq, struct omap_mmc_platform_data *data)
- {
- struct platform_device *pdev;
- struct resource res[OMAP_MMC_NR_RES];
- int ret;
-
-- pdev = platform_device_alloc(name, id);
-+ pdev = platform_device_alloc("mmci-omap", id);
- if (!pdev)
- return -ENOMEM;
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/dma.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c 2009-05-10 23:48:28.000000000 +0200
-@@ -709,7 +709,6 @@
- chan->dev_name = dev_name;
- chan->callback = callback;
- chan->data = data;
-- chan->flags = 0;
-
- #ifndef CONFIG_ARCH_OMAP1
- if (cpu_class_is_omap2()) {
-@@ -1889,11 +1888,11 @@
- status = dma_read(CSR(ch));
- }
-
-- dma_write(status, CSR(ch));
--
- if (likely(dma_chan[ch].callback != NULL))
- dma_chan[ch].callback(ch, status, dma_chan[ch].data);
-
-+ dma_write(status, CSR(ch));
-+
- return 0;
- }
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 23:48:28.000000000 +0200
-@@ -35,7 +35,7 @@
- extern struct sys_timer omap_timer;
- extern void omap_serial_init(void);
- extern void omap_serial_enable_clocks(int enable);
--#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
-+#ifdef CONFIG_I2C_OMAP
- extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
- struct i2c_board_info const *info,
- unsigned len);
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 23:48:28.000000000 +0200
-@@ -339,7 +339,6 @@
- #define OMAP3430_REV_ES2_0 0x34301034
- #define OMAP3430_REV_ES2_1 0x34302034
- #define OMAP3430_REV_ES3_0 0x34303034
--#define OMAP3430_REV_ES3_1 0x34304034
-
- /*
- * omap_chip bits
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 23:48:28.000000000 +0200
-@@ -344,8 +344,7 @@
- u8 dma_rx_sync, dma_tx_sync;
- u16 rx_irq, tx_irq;
- struct omap_mcbsp_ops *ops;
-- char const **clk_names;
-- int num_clks;
-+ char const *clk_name;
- };
-
- struct omap_mcbsp {
-@@ -377,8 +376,7 @@
- /* Protect the field .free, while checking if the mcbsp is in use */
- spinlock_t lock;
- struct omap_mcbsp_platform_data *pdata;
-- struct clk **clks;
-- int num_clks;
-+ struct clk *clk;
- };
- extern struct omap_mcbsp **mcbsp_ptr;
- extern int omap_mcbsp_count;
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 23:48:28.000000000 +0200
-@@ -115,9 +115,8 @@
- int nr_controllers);
- void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
- int nr_controllers);
--int omap_mmc_add(const char *name, int id, unsigned long base,
-- unsigned long size, unsigned int irq,
-- struct omap_mmc_platform_data *data);
-+int omap_mmc_add(int id, unsigned long base, unsigned long size,
-+ unsigned int irq, struct omap_mmc_platform_data *data);
- #else
- static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
- int nr_controllers)
-@@ -127,9 +126,8 @@
- int nr_controllers)
- {
- }
--static inline int omap_mmc_add(const char *name, int id, unsigned long base,
-- unsigned long size, unsigned int irq,
-- struct omap_mmc_platform_data *data)
-+static inline int omap_mmc_add(int id, unsigned long base, unsigned long size,
-+ unsigned int irq, struct omap_mmc_platform_data *data)
- {
- return 0;
- }
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 23:48:28.000000000 +0200
-@@ -108,7 +108,7 @@
- !defined(CONFIG_ARCH_OMAP15XX) && \
- !defined(CONFIG_ARCH_OMAP16XX) && \
- !defined(CONFIG_ARCH_OMAP24XX)
--#warning "Power management for this processor not implemented yet"
-+#error "Power management for this processor not implemented yet"
- #endif
-
- #ifndef __ASSEMBLER__
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/Makefile 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile 2009-05-10 23:48:28.000000000 +0200
-@@ -18,8 +18,7 @@
- obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
- obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
- obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
--i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
--obj-y += $(i2c-omap-m) $(i2c-omap-y)
-+obj-$(CONFIG_I2C_OMAP) += i2c.o
-
- # OMAP mailbox framework
- obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
-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
---- linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -214,7 +214,6 @@
- int omap_mcbsp_request(unsigned int id)
- {
- struct omap_mcbsp *mcbsp;
-- int i;
- int err;
-
- if (!omap_mcbsp_check_valid_id(id)) {
-@@ -226,8 +225,7 @@
- if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request)
- mcbsp->pdata->ops->request(id);
-
-- for (i = 0; i < mcbsp->num_clks; i++)
-- clk_enable(mcbsp->clks[i]);
-+ clk_enable(mcbsp->clk);
-
- spin_lock(&mcbsp->lock);
- if (!mcbsp->free) {
-@@ -278,7 +276,6 @@
- void omap_mcbsp_free(unsigned int id)
- {
- struct omap_mcbsp *mcbsp;
-- int i;
-
- if (!omap_mcbsp_check_valid_id(id)) {
- printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
-@@ -289,8 +286,7 @@
- if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free)
- mcbsp->pdata->ops->free(id);
-
-- for (i = mcbsp->num_clks - 1; i >= 0; i--)
-- clk_disable(mcbsp->clks[i]);
-+ clk_disable(mcbsp->clk);
-
- spin_lock(&mcbsp->lock);
- if (mcbsp->free) {
-@@ -876,7 +872,6 @@
- struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data;
- struct omap_mcbsp *mcbsp;
- int id = pdev->id - 1;
-- int i;
- int ret = 0;
-
- if (!pdata) {
-@@ -921,25 +916,14 @@
- mcbsp->dma_rx_sync = pdata->dma_rx_sync;
- mcbsp->dma_tx_sync = pdata->dma_tx_sync;
-
-- if (pdata->num_clks) {
-- mcbsp->num_clks = pdata->num_clks;
-- mcbsp->clks = kzalloc(mcbsp->num_clks * sizeof(struct clk *),
-- GFP_KERNEL);
-- if (!mcbsp->clks) {
-- ret = -ENOMEM;
-- goto exit;
-- }
-- for (i = 0; i < mcbsp->num_clks; i++) {
-- mcbsp->clks[i] = clk_get(&pdev->dev, pdata->clk_names[i]);
-- if (IS_ERR(mcbsp->clks[i])) {
-- dev_err(&pdev->dev,
-- "Invalid %s configuration for McBSP%d.\n",
-- pdata->clk_names[i], mcbsp->id);
-- ret = PTR_ERR(mcbsp->clks[i]);
-- goto err_clk;
-- }
-- }
--
-+ if (pdata->clk_name)
-+ mcbsp->clk = clk_get(&pdev->dev, pdata->clk_name);
-+ if (IS_ERR(mcbsp->clk)) {
-+ dev_err(&pdev->dev,
-+ "Invalid clock configuration for McBSP%d.\n",
-+ mcbsp->id);
-+ ret = PTR_ERR(mcbsp->clk);
-+ goto err_clk;
- }
-
- mcbsp->pdata = pdata;
-@@ -948,9 +932,6 @@
- return 0;
-
- err_clk:
-- while (i--)
-- clk_put(mcbsp->clks[i]);
-- kfree(mcbsp->clks);
- iounmap(mcbsp->io_base);
- err_ioremap:
- mcbsp->free = 0;
-@@ -961,7 +942,6 @@
- static int __devexit omap_mcbsp_remove(struct platform_device *pdev)
- {
- struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev);
-- int i;
-
- platform_set_drvdata(pdev, NULL);
- if (mcbsp) {
-@@ -970,18 +950,12 @@
- mcbsp->pdata->ops->free)
- mcbsp->pdata->ops->free(mcbsp->id);
-
-- for (i = mcbsp->num_clks - 1; i >= 0; i--) {
-- clk_disable(mcbsp->clks[i]);
-- clk_put(mcbsp->clks[i]);
-- }
-+ clk_disable(mcbsp->clk);
-+ clk_put(mcbsp->clk);
-
- iounmap(mcbsp->io_base);
-
-- if (mcbsp->num_clks) {
-- kfree(mcbsp->clks);
-- mcbsp->clks = NULL;
-- mcbsp->num_clks = 0;
-- }
-+ mcbsp->clk = NULL;
- mcbsp->free = 0;
- mcbsp->dev = NULL;
- }
-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
---- linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 23:48:28.000000000 +0200
-@@ -265,36 +265,51 @@
- * polarity LEVEL mask
- *
- ****************************************************************************/
-+static void gpio_irq_edge_ack(u32 irq)
-+{
-+ int pin = irq_to_gpio(irq);
-+
-+ writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
-+}
-
--static void gpio_irq_ack(u32 irq)
-+static void gpio_irq_edge_mask(u32 irq)
- {
-- int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
-- if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
-- int pin = irq_to_gpio(irq);
-- writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
-- }
-+ int pin = irq_to_gpio(irq);
-+ u32 u;
-+
-+ u = readl(GPIO_EDGE_MASK(pin));
-+ u &= ~(1 << (pin & 31));
-+ writel(u, GPIO_EDGE_MASK(pin));
-+}
-+
-+static void gpio_irq_edge_unmask(u32 irq)
-+{
-+ int pin = irq_to_gpio(irq);
-+ u32 u;
-+
-+ u = readl(GPIO_EDGE_MASK(pin));
-+ u |= 1 << (pin & 31);
-+ writel(u, GPIO_EDGE_MASK(pin));
- }
-
--static void gpio_irq_mask(u32 irq)
-+static void gpio_irq_level_mask(u32 irq)
- {
- int pin = irq_to_gpio(irq);
-- int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
-- u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
-- GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
-- u32 u = readl(reg);
-+ u32 u;
-+
-+ u = readl(GPIO_LEVEL_MASK(pin));
- u &= ~(1 << (pin & 31));
-- writel(u, reg);
-+ writel(u, GPIO_LEVEL_MASK(pin));
- }
-
--static void gpio_irq_unmask(u32 irq)
-+static void gpio_irq_level_unmask(u32 irq)
- {
- int pin = irq_to_gpio(irq);
-- int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
-- u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
-- GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
-- u32 u = readl(reg);
-+ u32 u;
-+
-+ u = readl(GPIO_LEVEL_MASK(pin));
- u |= 1 << (pin & 31);
-- writel(u, reg);
-+ writel(u, GPIO_LEVEL_MASK(pin));
- }
-
- static int gpio_irq_set_type(u32 irq, u32 type)
-@@ -316,9 +331,9 @@
- * Set edge/level type.
- */
- if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
-- desc->handle_irq = handle_edge_irq;
-+ desc->chip = &orion_gpio_irq_edge_chip;
- } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
-- desc->handle_irq = handle_level_irq;
-+ desc->chip = &orion_gpio_irq_level_chip;
- } else {
- printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type);
- return -EINVAL;
-@@ -356,11 +371,19 @@
- return 0;
- }
-
--struct irq_chip orion_gpio_irq_chip = {
-- .name = "orion_gpio",
-- .ack = gpio_irq_ack,
-- .mask = gpio_irq_mask,
-- .unmask = gpio_irq_unmask,
-+struct irq_chip orion_gpio_irq_edge_chip = {
-+ .name = "orion_gpio_irq_edge",
-+ .ack = gpio_irq_edge_ack,
-+ .mask = gpio_irq_edge_mask,
-+ .unmask = gpio_irq_edge_unmask,
-+ .set_type = gpio_irq_set_type,
-+};
-+
-+struct irq_chip orion_gpio_irq_level_chip = {
-+ .name = "orion_gpio_irq_level",
-+ .mask = gpio_irq_level_mask,
-+ .mask_ack = gpio_irq_level_mask,
-+ .unmask = gpio_irq_level_unmask,
- .set_type = gpio_irq_set_type,
- };
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 23:48:28.000000000 +0200
-@@ -31,7 +31,8 @@
- /*
- * GPIO interrupt handling.
- */
--extern struct irq_chip orion_gpio_irq_chip;
-+extern struct irq_chip orion_gpio_irq_edge_chip;
-+extern struct irq_chip orion_gpio_irq_level_chip;
- void orion_gpio_irq_handler(int irqoff);
-
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 23:48:28.000000000 +0200
-@@ -248,7 +248,7 @@
- &clk_48m,
- };
-
--void __init s3c64xx_register_clocks(void)
-+void s3c64xx_register_clocks(void)
- {
- struct clk *clkp;
- int ret;
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 23:48:28.000000000 +0200
-@@ -417,4 +417,4 @@
- return 0;
- }
-
--core_initcall(s3c64xx_gpiolib_init);
-+arch_initcall(s3c64xx_gpiolib_init);
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 23:48:28.000000000 +0200
-@@ -117,7 +117,7 @@
- #define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
- #define IRQ_NFC S3C64XX_IRQ_VIC1(13)
- #define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
--#define IRQ_USBH S3C64XX_IRQ_VIC1(15)
-+#define IRQ_UHOST S3C64XX_IRQ_VIC1(15)
- #define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
- #define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
- #define IRQ_IIC S3C64XX_IRQ_VIC1(18)
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 23:48:28.000000000 +0200
-@@ -207,7 +207,7 @@
-
- static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
- {
-- void __iomem *reg_base = uirq->regs;
-+ void *reg_base = uirq->regs;
- unsigned int irq;
- int offs;
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 23:48:28.000000000 +0200
-@@ -14,15 +14,12 @@
-
- #include <linux/kernel.h>
- #include <linux/interrupt.h>
--#include <linux/gpio.h>
- #include <linux/irq.h>
- #include <linux/io.h>
-
- #include <asm/hardware/vic.h>
-
- #include <plat/regs-irqtype.h>
--#include <plat/regs-gpio.h>
--#include <plat/gpio-cfg.h>
-
- #include <mach/map.h>
- #include <plat/cpu.h>
-@@ -58,7 +55,7 @@
- u32 mask;
-
- mask = __raw_readl(S3C64XX_EINT0MASK);
-- mask &= ~eint_irq_to_bit(irq);
-+ mask |= eint_irq_to_bit(irq);
- __raw_writel(mask, S3C64XX_EINT0MASK);
- }
-
-@@ -77,7 +74,6 @@
- static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
- {
- int offs = eint_offset(irq);
-- int pin;
- int shift;
- u32 ctrl, mask;
- u32 newvalue = 0;
-@@ -129,15 +125,6 @@
- ctrl |= newvalue << shift;
- __raw_writel(ctrl, reg);
-
-- /* set the GPIO pin appropriately */
--
-- if (offs < 23)
-- pin = S3C64XX_GPN(offs);
-- else
-- pin = S3C64XX_GPM(offs - 23);
--
-- s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
--
- return 0;
- }
-
-@@ -194,7 +181,7 @@
- s3c_irq_demux_eint(20, 27);
- }
-
--static int __init s3c64xx_init_irq_eint(void)
-+int __init s3c64xx_init_irq_eint(void)
- {
- int irq;
-
-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
---- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 23:48:28.000000000 +0200
-@@ -36,7 +36,7 @@
- * ext_xtal_mux for want of an actual name from the manual.
- */
-
--static struct clk clk_ext_xtal_mux = {
-+struct clk clk_ext_xtal_mux = {
- .name = "ext_xtal",
- .id = -1,
- };
-@@ -63,7 +63,7 @@
- void __iomem *reg_divider;
- };
-
--static struct clk clk_fout_apll = {
-+struct clk clk_fout_apll = {
- .name = "fout_apll",
- .id = -1,
- };
-@@ -78,7 +78,7 @@
- .nr_sources = ARRAY_SIZE(clk_src_apll_list),
- };
-
--static struct clksrc_clk clk_mout_apll = {
-+struct clksrc_clk clk_mout_apll = {
- .clk = {
- .name = "mout_apll",
- .id = -1,
-@@ -88,7 +88,7 @@
- .sources = &clk_src_apll,
- };
-
--static struct clk clk_fout_epll = {
-+struct clk clk_fout_epll = {
- .name = "fout_epll",
- .id = -1,
- };
-@@ -103,7 +103,7 @@
- .nr_sources = ARRAY_SIZE(clk_src_epll_list),
- };
-
--static struct clksrc_clk clk_mout_epll = {
-+struct clksrc_clk clk_mout_epll = {
- .clk = {
- .name = "mout_epll",
- .id = -1,
-@@ -123,7 +123,7 @@
- .nr_sources = ARRAY_SIZE(clk_src_mpll_list),
- };
-
--static struct clksrc_clk clk_mout_mpll = {
-+struct clksrc_clk clk_mout_mpll = {
- .clk = {
- .name = "mout_mpll",
- .id = -1,
-@@ -145,7 +145,7 @@
- return rate;
- }
-
--static struct clk clk_dout_mpll = {
-+struct clk clk_dout_mpll = {
- .name = "dout_mpll",
- .id = -1,
- .parent = &clk_mout_mpll.clk,
-@@ -189,10 +189,10 @@
- };
-
- static struct clk *clkset_uhost_list[] = {
-- &clk_48m,
- &clk_mout_epll.clk,
- &clk_dout_mpll,
- &clk_fin_epll,
-+ &clk_48m,
- };
-
- static struct clk_sources clkset_uhost = {
-@@ -239,12 +239,10 @@
-
- rate = clk_round_rate(clk, rate);
- div = clk_get_rate(clk->parent) / rate;
-- if (div > 16)
-- return -EINVAL;
-
- val = __raw_readl(reg);
-- val &= ~(0xf << sclk->shift);
-- val |= (div - 1) << sclk->shift;
-+ val &= ~sclk->mask;
-+ val |= (rate - 1) << sclk->shift;
- __raw_writel(val, reg);
-
- return 0;
-@@ -353,7 +351,7 @@
-
- static struct clksrc_clk clk_usbhost = {
- .clk = {
-- .name = "usb-bus-host",
-+ .name = "usb-host-bus",
- .id = -1,
- .ctrlbit = S3C_CLKCON_SCLK_UHOST,
- .enable = s3c64xx_sclk_ctrl,
-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
---- linux-2.6.29.owrt/arch/arm/tools/mach-types 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types 2009-05-10 23:48:28.000000000 +0200
-@@ -12,7 +12,7 @@
- #
- # http://www.arm.linux.org.uk/developer/machines/?action=new
- #
--# Last update: Thu Mar 12 18:01:45 2009
-+# Last update: Sun Nov 30 16:39:36 2008
- #
- # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
- #
-@@ -1811,7 +1811,7 @@
- jade MACH_JADE JADE 1821
- ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
- gprisc3 MACH_GPRISC3 GPRISC3 1823
--stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
-+stamp9260 MACH_STAMP9260 STAMP9260 1824
- smdk6430 MACH_SMDK6430 SMDK6430 1825
- smdkc100 MACH_SMDKC100 SMDKC100 1826
- tavorevb MACH_TAVOREVB TAVOREVB 1827
-@@ -1993,134 +1993,4 @@
- benzina MACH_BENZINA BENZINA 2003
- blaze MACH_BLAZE BLAZE 2004
- linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
--htckovsky MACH_HTCVENUS HTCVENUS 2006
--sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
--hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
--sapphira MACH_SAPPHIRA SAPPHIRA 2009
--dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
--armbox MACH_ARMBOX ARMBOX 2011
--harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
--ribaldo MACH_RIBALDO RIBALDO 2013
--agora MACH_AGORA AGORA 2014
--omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
--a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
--usg2410 MACH_USG2410 USG2410 2017
--pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
--mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
--topas910 MACH_TOPAS910 TOPAS910 2020
--hyena MACH_HYENA HYENA 2021
--pospax MACH_POSPAX POSPAX 2022
--hdl_gx MACH_HDL_GX HDL_GX 2023
--ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
--ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
--crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
--egauge2 MACH_EGAUGE2 EGAUGE2 2027
--didj MACH_DIDJ DIDJ 2028
--m_s3c2443 MACH_MEISTER MEISTER 2029
--htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
--cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
--smdk6440 MACH_SMDK6440 SMDK6440 2032
--omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
--ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
--pvg610_100 MACH_PVG610 PVG610 2035
--hprw6815 MACH_HPRW6815 HPRW6815 2036
--omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
--nas4220b MACH_NAS4220B NAS4220B 2038
--htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
--htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
--scaler MACH_SCALER SCALER 2041
--zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
--aspenite MACH_ASPENITE ASPENITE 2043
--teton MACH_TETON TETON 2044
--ttc_dkb MACH_TTC_DKB TTC_DKB 2045
--bishop2 MACH_BISHOP2 BISHOP2 2046
--ippv5 MACH_IPPV5 IPPV5 2047
--farm926 MACH_FARM926 FARM926 2048
--mmccpu MACH_MMCCPU MMCCPU 2049
--sgmsfl MACH_SGMSFL SGMSFL 2050
--tt8000 MACH_TT8000 TT8000 2051
--zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
--mptc MACH_MPTC MPTC 2053
--h6051 MACH_H6051 H6051 2054
--pvg610_101 MACH_PVG610_101 PVG610_101 2055
--stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
--pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
--tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
--tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
--aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
--dx900 MACH_DX900 DX900 2061
--cpodc2 MACH_CPODC2 CPODC2 2062
--tilt_8925 MACH_TILT_8925 TILT_8925 2063
--davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
--swordfish MACH_SWORDFISH SWORDFISH 2065
--corvus MACH_CORVUS CORVUS 2066
--taurus MACH_TAURUS TAURUS 2067
--axm MACH_AXM AXM 2068
--axc MACH_AXC AXC 2069
--baby MACH_BABY BABY 2070
--mp200 MACH_MP200 MP200 2071
--pcm043 MACH_PCM043 PCM043 2072
--hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
--kbk9g20 MACH_KBK9G20 KBK9G20 2074
--adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
--avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
--suc82x MACH_SUC SUC 2077
--at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
--mendoza MACH_MENDOZA MENDOZA 2079
--kira MACH_KIRA KIRA 2080
--mx1hbm MACH_MX1HBM MX1HBM 2081
--quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
--quatro4230 MACH_QUATRO4230 QUATRO4230 2083
--nsb400 MACH_NSB400 NSB400 2084
--drp255 MACH_DRP255 DRP255 2085
--thoth MACH_THOTH THOTH 2086
--firestone MACH_FIRESTONE FIRESTONE 2087
--asusp750 MACH_ASUSP750 ASUSP750 2088
--ctera_dl MACH_CTERA_DL CTERA_DL 2089
--socr MACH_SOCR SOCR 2090
--htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
--heroc MACH_HEROC HEROC 2092
--zeno6800 MACH_ZENO6800 ZENO6800 2093
--sc2mcs MACH_SC2MCS SC2MCS 2094
--gene100 MACH_GENE100 GENE100 2095
--as353x MACH_AS353X AS353X 2096
--sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
--at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
--mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
--cc9200 MACH_CC9200 CC9200 2100
--sm9200 MACH_SM9200 SM9200 2101
--tp9200 MACH_TP9200 TP9200 2102
--snapperdv MACH_SNAPPERDV SNAPPERDV 2103
--avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
--avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
--omap3axon MACH_OMAP3AXON OMAP3AXON 2106
--ma8xx MACH_MA8XX MA8XX 2107
--mp201ek MACH_MP201EK MP201EK 2108
--davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
--mpa1600 MACH_MPA1600 MPA1600 2110
--pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
--nsb667 MACH_NSB667 NSB667 2112
--rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
--twocom MACH_TWOCOM TWOCOM 2114
--ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
--hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
--afeusb MACH_AFEUSB AFEUSB 2117
--t830 MACH_T830 T830 2118
--spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
--om_3d7k MACH_OM_3D7K OM_3D7K 2120
--picocom2 MACH_PICOCOM2 PICOCOM2 2121
--uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
--uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
--cherry MACH_CHERRY CHERRY 2124
--mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
--s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
--tx37 MACH_TX37 TX37 2127
--sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
--benzglb MACH_BENZGLB BENZGLB 2129
--benztd MACH_BENZTD BENZTD 2130
--cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
--solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
--mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
--fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
--rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
--smallogger MACH_SMALLOGGER SMALLOGGER 2136
-+htcvenus MACH_HTCVENUS HTCVENUS 2006
-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
---- linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 23:48:28.000000000 +0200
-@@ -116,7 +116,6 @@
- int enable_pin; /* chip enable */
- int det_pin; /* card detect */
- int rdy_pin; /* ready/busy */
-- u8 rdy_pin_active_low; /* rdy_pin value is inverted */
- u8 ale; /* address line number connected to ALE */
- u8 cle; /* address line number connected to CLE */
- u8 bus_width_16; /* buswidth is 16 bit */
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 23:48:28.000000000 +0200
-@@ -1,9 +1,30 @@
- /*
-- * bfin_sport.h - userspace header for bfin sport driver
-+ * File: include/asm-blackfin/bfin_sport.h
-+ * Based on:
-+ * Author: Roy Huang (roy.huang@analog.com)
- *
-- * Copyright 2004-2008 Analog Devices Inc.
-+ * Created: Thu Aug. 24 2006
-+ * Description:
- *
-- * Licensed under the GPL-2 or later.
-+ * Modified:
-+ * Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs: Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- #ifndef __BFIN_SPORT_H__
-@@ -21,10 +42,11 @@
- #define NORM_FORMAT 0x0
- #define ALAW_FORMAT 0x2
- #define ULAW_FORMAT 0x3
-+struct sport_register;
-
- /* Function driver which use sport must initialize the structure */
- struct sport_config {
-- /* TDM (multichannels), I2S or other mode */
-+ /*TDM (multichannels), I2S or other mode */
- unsigned int mode:3;
-
- /* if TDM mode is selected, channels must be set */
-@@ -50,18 +72,12 @@
- int serial_clk;
- int fsync_clk;
-
-- unsigned int data_format:2; /* Normal, u-law or a-law */
-+ unsigned int data_format:2; /*Normal, u-law or a-law */
-
- int word_len; /* How length of the word in bits, 3-32 bits */
- int dma_enabled;
- };
-
--/* Userspace interface */
--#define SPORT_IOC_MAGIC 'P'
--#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
--
--#ifdef __KERNEL__
--
- struct sport_register {
- unsigned short tcr1;
- unsigned short reserved0;
-@@ -101,6 +117,9 @@
- unsigned long mrcs3;
- };
-
-+#define SPORT_IOC_MAGIC 'P'
-+#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
-+
- struct sport_dev {
- struct cdev cdev; /* Char device structure */
-
-@@ -130,8 +149,6 @@
- struct sport_config config;
- };
-
--#endif
--
- #define SPORT_TCR1 0
- #define SPORT_TCR2 1
- #define SPORT_TCLKDIV 2
-@@ -152,4 +169,4 @@
- #define SPORT_MRCS2 22
- #define SPORT_MRCS3 23
-
--#endif
-+#endif /*__BFIN_SPORT_H__*/
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 23:48:28.000000000 +0200
-@@ -63,23 +63,23 @@
- csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
- unsigned short proto, __wsum sum)
- {
-- unsigned int carry;
-
-- __asm__ ("%0 = %0 + %2;\n\t"
-- "CC = AC0;\n\t"
-- "%1 = CC;\n\t"
-- "%0 = %0 + %1;\n\t"
-- "%0 = %0 + %3;\n\t"
-- "CC = AC0;\n\t"
-- "%1 = CC;\n\t"
-- "%0 = %0 + %1;\n\t"
-- "%0 = %0 + %4;\n\t"
-- "CC = AC0;\n\t"
-- "%1 = CC;\n\t"
-- "%0 = %0 + %1;\n\t"
-- : "=d" (sum), "=&d" (carry)
-- : "d" (daddr), "d" (saddr), "d" ((len + proto) << 8), "0"(sum)
-- : "CC");
-+ __asm__ ("%0 = %0 + %1;\n\t"
-+ "CC = AC0;\n\t"
-+ "if !CC jump 4;\n\t"
-+ "%0 = %0 + %4;\n\t"
-+ "%0 = %0 + %2;\n\t"
-+ "CC = AC0;\n\t"
-+ "if !CC jump 4;\n\t"
-+ "%0 = %0 + %4;\n\t"
-+ "%0 = %0 + %3;\n\t"
-+ "CC = AC0;\n\t"
-+ "if !CC jump 4;\n\t"
-+ "%0 = %0 + %4;\n\t"
-+ "NOP;\n\t"
-+ : "=d" (sum)
-+ : "d" (daddr), "d" (saddr), "d" ((ntohs(len)<<16)+proto*256), "d" (1), "0"(sum)
-+ : "CC");
-
- return (sum);
- }
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 23:48:28.000000000 +0200
-@@ -13,7 +13,29 @@
-
- static inline void __delay(unsigned long loops)
- {
--__asm__ __volatile__ (
-+ if (ANOMALY_05000312) {
-+ /* Interrupted loads to loop registers -> bad */
-+ unsigned long tmp;
-+ __asm__ __volatile__(
-+ "[--SP] = LC0;"
-+ "[--SP] = LT0;"
-+ "[--SP] = LB0;"
-+ "LSETUP (1f,1f) LC0 = %1;"
-+ "1: NOP;"
-+ /* We take advantage of the fact that LC0 is 0 at
-+ * the end of the loop. Otherwise we'd need some
-+ * NOPs after the CLI here.
-+ */
-+ "CLI %0;"
-+ "LB0 = [SP++];"
-+ "LT0 = [SP++];"
-+ "LC0 = [SP++];"
-+ "STI %0;"
-+ : "=d" (tmp)
-+ : "a" (loops)
-+ );
-+ } else
-+ __asm__ __volatile__ (
- "LSETUP(1f, 1f) LC0 = %0;"
- "1: NOP;"
- :
-@@ -25,15 +47,16 @@
- #include <linux/param.h> /* needed for HZ */
-
- /*
-- * close approximation borrowed from m68knommu to avoid 64-bit math
-+ * Use only for very small delays ( < 1 msec). Should probably use a
-+ * lookup table, really, as the multiplications take much too long with
-+ * short delays. This is a "reasonable" implementation, though (and the
-+ * first constant multiplications gets optimized away if the delay is
-+ * a constant)
- */
--
--#define HZSCALE (268435456 / (1000000/HZ))
--
- static inline void udelay(unsigned long usecs)
- {
- extern unsigned long loops_per_jiffy;
-- __delay((((usecs * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6);
-+ __delay(usecs * loops_per_jiffy / (1000000 / HZ));
- }
-
- #endif
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 23:48:28.000000000 +0200
-@@ -27,6 +27,60 @@
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-+/*
-+* Number BF537/6/4 BF561 BF533/2/1
-+* BF527/5/2
-+*
-+* GPIO_0 PF0 PF0 PF0
-+* GPIO_1 PF1 PF1 PF1
-+* GPIO_2 PF2 PF2 PF2
-+* GPIO_3 PF3 PF3 PF3
-+* GPIO_4 PF4 PF4 PF4
-+* GPIO_5 PF5 PF5 PF5
-+* GPIO_6 PF6 PF6 PF6
-+* GPIO_7 PF7 PF7 PF7
-+* GPIO_8 PF8 PF8 PF8
-+* GPIO_9 PF9 PF9 PF9
-+* GPIO_10 PF10 PF10 PF10
-+* GPIO_11 PF11 PF11 PF11
-+* GPIO_12 PF12 PF12 PF12
-+* GPIO_13 PF13 PF13 PF13
-+* GPIO_14 PF14 PF14 PF14
-+* GPIO_15 PF15 PF15 PF15
-+* GPIO_16 PG0 PF16
-+* GPIO_17 PG1 PF17
-+* GPIO_18 PG2 PF18
-+* GPIO_19 PG3 PF19
-+* GPIO_20 PG4 PF20
-+* GPIO_21 PG5 PF21
-+* GPIO_22 PG6 PF22
-+* GPIO_23 PG7 PF23
-+* GPIO_24 PG8 PF24
-+* GPIO_25 PG9 PF25
-+* GPIO_26 PG10 PF26
-+* GPIO_27 PG11 PF27
-+* GPIO_28 PG12 PF28
-+* GPIO_29 PG13 PF29
-+* GPIO_30 PG14 PF30
-+* GPIO_31 PG15 PF31
-+* GPIO_32 PH0 PF32
-+* GPIO_33 PH1 PF33
-+* GPIO_34 PH2 PF34
-+* GPIO_35 PH3 PF35
-+* GPIO_36 PH4 PF36
-+* GPIO_37 PH5 PF37
-+* GPIO_38 PH6 PF38
-+* GPIO_39 PH7 PF39
-+* GPIO_40 PH8 PF40
-+* GPIO_41 PH9 PF41
-+* GPIO_42 PH10 PF42
-+* GPIO_43 PH11 PF43
-+* GPIO_44 PH12 PF44
-+* GPIO_45 PH13 PF45
-+* GPIO_46 PH14 PF46
-+* GPIO_47 PH15 PF47
-+*/
-+
- #ifndef __ARCH_BLACKFIN_GPIO_H__
- #define __ARCH_BLACKFIN_GPIO_H__
-
-@@ -241,6 +295,10 @@
- int bfin_gpio_get_value(unsigned gpio);
- void bfin_gpio_set_value(unsigned gpio, int value);
-
-+#ifndef BF548_FAMILY
-+#define bfin_gpio_set_value(gpio, value) set_gpio_data(gpio, value)
-+#endif
-+
- #ifdef CONFIG_GPIOLIB
- #include <asm-generic/gpio.h> /* cansleep wrappers */
-
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 23:48:28.000000000 +0200
-@@ -1,5 +1,5 @@
- /* -*- linux-c -*-
-- * include/asm-blackfin/ipipe_base.h
-+ * include/asm-blackfin/_baseipipe.h
- *
- * Copyright (C) 2007 Philippe Gerum.
- *
-@@ -27,9 +27,8 @@
- #define IPIPE_NR_XIRQS NR_IRQS
- #define IPIPE_IRQ_ISHIFT 5 /* 2^5 for 32bits arch. */
-
--/* Blackfin-specific, per-cpu pipeline status */
--#define IPIPE_SYNCDEFER_FLAG 15
--#define IPIPE_SYNCDEFER_MASK (1L << IPIPE_SYNCDEFER_MASK)
-+/* Blackfin-specific, global domain flags */
-+#define IPIPE_ROOTLOCK_FLAG 1 /* Lock pipeline for root */
-
- /* Blackfin traps -- i.e. exception vector numbers */
- #define IPIPE_NR_FAULTS 52 /* We leave a gap after VEC_ILL_RES. */
-@@ -49,6 +48,11 @@
-
- #ifndef __ASSEMBLY__
-
-+#include <linux/bitops.h>
-+
-+extern int test_bit(int nr, const void *addr);
-+
-+
- extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
-
- static inline void __ipipe_stall_root(void)
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 23:48:28.000000000 +0200
-@@ -35,9 +35,9 @@
- #include <asm/atomic.h>
- #include <asm/traps.h>
-
--#define IPIPE_ARCH_STRING "1.9-00"
-+#define IPIPE_ARCH_STRING "1.8-00"
- #define IPIPE_MAJOR_NUMBER 1
--#define IPIPE_MINOR_NUMBER 9
-+#define IPIPE_MINOR_NUMBER 8
- #define IPIPE_PATCH_NUMBER 0
-
- #ifdef CONFIG_SMP
-@@ -83,9 +83,9 @@
- "%2 = CYCLES2\n" \
- "CC = %2 == %0\n" \
- "if ! CC jump 1b\n" \
-- : "=d,a" (((unsigned long *)&t)[1]), \
-- "=d,a" (((unsigned long *)&t)[0]), \
-- "=d,a" (__cy2) \
-+ : "=r" (((unsigned long *)&t)[1]), \
-+ "=r" (((unsigned long *)&t)[0]), \
-+ "=r" (__cy2) \
- : /*no input*/ : "CC"); \
- t; \
- })
-@@ -118,40 +118,35 @@
-
- #define __ipipe_disable_irq(irq) (irq_desc[irq].chip->mask(irq))
-
--static inline int __ipipe_check_tickdev(const char *devname)
--{
-- return 1;
--}
-+#define __ipipe_lock_root() \
-+ set_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
-
--static inline void __ipipe_lock_root(void)
--{
-- set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
--}
--
--static inline void __ipipe_unlock_root(void)
--{
-- clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
--}
-+#define __ipipe_unlock_root() \
-+ clear_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
-
- void __ipipe_enable_pipeline(void);
-
- #define __ipipe_hook_critical_ipi(ipd) do { } while (0)
-
--#define __ipipe_sync_pipeline ___ipipe_sync_pipeline
--void ___ipipe_sync_pipeline(unsigned long syncmask);
-+#define __ipipe_sync_pipeline(syncmask) \
-+ do { \
-+ struct ipipe_domain *ipd = ipipe_current_domain; \
-+ if (likely(ipd != ipipe_root_domain || !test_bit(IPIPE_ROOTLOCK_FLAG, &ipd->flags))) \
-+ __ipipe_sync_stage(syncmask); \
-+ } while (0)
-
- void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
-
- int __ipipe_get_irq_priority(unsigned irq);
-
-+int __ipipe_get_irqthread_priority(unsigned irq);
-+
- void __ipipe_stall_root_raw(void);
-
- void __ipipe_unstall_root_raw(void);
-
- void __ipipe_serial_debug(const char *fmt, ...);
-
--asmlinkage void __ipipe_call_irqtail(unsigned long addr);
--
- DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
-
- extern unsigned long __ipipe_core_clock;
-@@ -167,25 +162,42 @@
-
- #define __ipipe_run_irqtail() /* Must be a macro */ \
- do { \
-+ asmlinkage void __ipipe_call_irqtail(void); \
- unsigned long __pending; \
-- CSYNC(); \
-+ CSYNC(); \
- __pending = bfin_read_IPEND(); \
- if (__pending & 0x8000) { \
- __pending &= ~0x8010; \
- if (__pending && (__pending & (__pending - 1)) == 0) \
-- __ipipe_call_irqtail(__ipipe_irq_tail_hook); \
-+ __ipipe_call_irqtail(); \
- } \
- } while (0)
-
- #define __ipipe_run_isr(ipd, irq) \
- do { \
- if (ipd == ipipe_root_domain) { \
-- local_irq_enable_hw(); \
-- if (ipipe_virtual_irq_p(irq)) \
-+ /* \
-+ * Note: the I-pipe implements a threaded interrupt model on \
-+ * this arch for Linux external IRQs. The interrupt handler we \
-+ * call here only wakes up the associated IRQ thread. \
-+ */ \
-+ if (ipipe_virtual_irq_p(irq)) { \
-+ /* No irqtail here; virtual interrupts have no effect \
-+ on IPEND so there is no need for processing \
-+ deferral. */ \
-+ local_irq_enable_nohead(ipd); \
- ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
-- else \
-+ local_irq_disable_nohead(ipd); \
-+ } else \
-+ /* \
-+ * No need to run the irqtail here either; \
-+ * we can't be preempted by hw IRQs, so \
-+ * non-Linux IRQs cannot stack over the short \
-+ * thread wakeup code. Which in turn means \
-+ * that no irqtail condition could be pending \
-+ * for domains above Linux in the pipeline. \
-+ */ \
- ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
-- local_irq_disable_hw(); \
- } else { \
- __clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
- local_irq_enable_nohead(ipd); \
-@@ -205,24 +217,42 @@
-
- int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
-
--#ifdef CONFIG_GENERIC_CLOCKEVENTS
--#define IRQ_SYSTMR IRQ_CORETMR
--#define IRQ_PRIOTMR IRQ_CORETMR
--#else
-+#define IS_SYSIRQ(irq) ((irq) > IRQ_CORETMR && (irq) <= SYS_IRQS)
-+#define IS_GPIOIRQ(irq) ((irq) >= GPIO_IRQ_BASE && (irq) < NR_IRQS)
-+
- #define IRQ_SYSTMR IRQ_TIMER0
- #define IRQ_PRIOTMR CONFIG_IRQ_TIMER0
--#endif
-
--#ifdef CONFIG_BF561
-+#if defined(CONFIG_BF531) || defined(CONFIG_BF532) || defined(CONFIG_BF533)
-+#define PRIO_GPIODEMUX(irq) CONFIG_PFA
-+#elif defined(CONFIG_BF534) || defined(CONFIG_BF536) || defined(CONFIG_BF537)
-+#define PRIO_GPIODEMUX(irq) CONFIG_IRQ_PROG_INTA
-+#elif defined(CONFIG_BF52x)
-+#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PORTF_INTA ? CONFIG_IRQ_PORTF_INTA : \
-+ (irq) == IRQ_PORTG_INTA ? CONFIG_IRQ_PORTG_INTA : \
-+ (irq) == IRQ_PORTH_INTA ? CONFIG_IRQ_PORTH_INTA : \
-+ -1)
-+#elif defined(CONFIG_BF561)
-+#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PROG0_INTA ? CONFIG_IRQ_PROG0_INTA : \
-+ (irq) == IRQ_PROG1_INTA ? CONFIG_IRQ_PROG1_INTA : \
-+ (irq) == IRQ_PROG2_INTA ? CONFIG_IRQ_PROG2_INTA : \
-+ -1)
- #define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
- #define bfin_write_TIMER_ENABLE(val) bfin_write_TMRS8_ENABLE(val)
- #define bfin_write_TIMER_STATUS(val) bfin_write_TMRS8_STATUS(val)
- #define bfin_read_TIMER_STATUS() bfin_read_TMRS8_STATUS()
- #elif defined(CONFIG_BF54x)
-+#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PINT0 ? CONFIG_IRQ_PINT0 : \
-+ (irq) == IRQ_PINT1 ? CONFIG_IRQ_PINT1 : \
-+ (irq) == IRQ_PINT2 ? CONFIG_IRQ_PINT2 : \
-+ (irq) == IRQ_PINT3 ? CONFIG_IRQ_PINT3 : \
-+ -1)
- #define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
- #define bfin_write_TIMER_ENABLE(val) bfin_write_TIMER_ENABLE0(val)
- #define bfin_write_TIMER_STATUS(val) bfin_write_TIMER_STATUS0(val)
- #define bfin_read_TIMER_STATUS(val) bfin_read_TIMER_STATUS0(val)
-+#else
-+# error "no PRIO_GPIODEMUX() for this part"
- #endif
-
- #define __ipipe_root_tick_p(regs) ((regs->ipend & 0x10) != 0)
-@@ -245,6 +275,4 @@
-
- #endif /* !CONFIG_IPIPE */
-
--#define ipipe_update_tick_evtdev(evtdev) do { } while (0)
--
- #endif /* !__ASM_BLACKFIN_IPIPE_H */
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 23:48:28.000000000 +0200
-@@ -61,38 +61,20 @@
- #define raw_irqs_disabled_flags(flags) (!irqs_enabled_from_flags_hw(flags))
- #define local_test_iflag_hw(x) irqs_enabled_from_flags_hw(x)
-
--#define local_save_flags(x) \
-- do { \
-- (x) = __ipipe_test_root() ? \
-- __all_masked_irq_flags : bfin_irq_flags; \
-- barrier(); \
-- } while (0)
--
--#define local_irq_save(x) \
-- do { \
-- (x) = __ipipe_test_and_stall_root() ? \
-+#define local_save_flags(x) \
-+ do { \
-+ (x) = __ipipe_test_root() ? \
- __all_masked_irq_flags : bfin_irq_flags; \
-- barrier(); \
- } while (0)
-
--static inline void local_irq_restore(unsigned long x)
--{
-- barrier();
-- __ipipe_restore_root(x == __all_masked_irq_flags);
--}
--
--#define local_irq_disable() \
-- do { \
-- __ipipe_stall_root(); \
-- barrier(); \
-+#define local_irq_save(x) \
-+ do { \
-+ (x) = __ipipe_test_and_stall_root(); \
- } while (0)
-
--static inline void local_irq_enable(void)
--{
-- barrier();
-- __ipipe_unstall_root();
--}
--
-+#define local_irq_restore(x) __ipipe_restore_root(x)
-+#define local_irq_disable() __ipipe_stall_root()
-+#define local_irq_enable() __ipipe_unstall_root()
- #define irqs_disabled() __ipipe_test_root()
-
- #define local_save_flags_hw(x) \
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 23:48:28.000000000 +0200
-@@ -1,4 +1,3 @@
- include include/asm-generic/Kbuild.asm
-
--unifdef-y += bfin_sport.h
- unifdef-y += fixed_code.h
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 23:48:28.000000000 +0200
-@@ -1,8 +1,32 @@
--/* Blackfin KGDB header
-+/*
-+ * File: include/asm-blackfin/kgdb.h
-+ * Based on:
-+ * Author: Sonic Zhang
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Rev: $Id: kgdb_bfin_linux-2.6.x.patch 4934 2007-02-13 09:32:11Z sonicz $
-+ *
-+ * Modified:
-+ * Copyright 2005-2006 Analog Devices Inc.
-+ *
-+ * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright 2005-2009 Analog Devices Inc.
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
- *
-- * Licensed under the GPL-2 or later.
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- #ifndef __ASM_BLACKFIN_KGDB_H__
-@@ -13,18 +37,17 @@
- /* gdb locks */
- #define KGDB_MAX_NO_CPUS 8
-
--/*
-- * BUFMAX defines the maximum number of characters in inbound/outbound buffers.
-- * At least NUMREGBYTES*2 are needed for register packets.
-- * Longer buffer is needed to list all threads.
-- */
-+/************************************************************************/
-+/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/
-+/* at least NUMREGBYTES*2 are needed for register packets */
-+/* Longer buffer is needed to list all threads */
- #define BUFMAX 2048
-
- /*
-- * Note that this register image is different from
-- * the register image that Linux produces at interrupt time.
-- *
-- * Linux's register image is defined by struct pt_regs in ptrace.h.
-+ * Note that this register image is different from
-+ * the register image that Linux produces at interrupt time.
-+ *
-+ * Linux's register image is defined by struct pt_regs in ptrace.h.
- */
- enum regnames {
- /* Core Registers */
-@@ -81,14 +104,14 @@
- BFIN_RETX,
- BFIN_RETN,
- BFIN_RETE,
--
-+
- /* Pseudo Registers */
- BFIN_PC,
- BFIN_CC,
- BFIN_EXTRA1, /* Address of .text section. */
- BFIN_EXTRA2, /* Address of .data section. */
- BFIN_EXTRA3, /* Address of .bss section. */
-- BFIN_FDPIC_EXEC,
-+ BFIN_FDPIC_EXEC,
- BFIN_FDPIC_INTERP,
-
- /* MMRs */
-@@ -103,7 +126,7 @@
-
- static inline void arch_kgdb_breakpoint(void)
- {
-- asm("EXCPT 2;");
-+ asm(" EXCPT 2;");
- }
- #define BREAK_INSTR_SIZE 2
- #define CACHE_FLUSH_IS_SAFE 1
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 23:48:28.000000000 +0200
-@@ -115,7 +115,7 @@
- #define mem_SDRRC (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num)
-
- /* Enable SCLK Out */
--#define mem_SDGCTL (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
-+#define mem_SDGCTL (0x80000000 | SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
- #else
- #define mem_SDRRC CONFIG_MEM_SDRRC
- #define mem_SDGCTL CONFIG_MEM_SDGCTL
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 23:48:28.000000000 +0200
-@@ -59,7 +59,6 @@
- unsigned long icplb_fault_addr;
- unsigned long retx;
- unsigned long seqstat;
-- unsigned int __nmi_count; /* number of times NMI asserted on this CPU */
- };
-
- extern struct blackfin_pda cpu_pda[];
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 23:48:28.000000000 +0200
-@@ -15,6 +15,6 @@
- extern void native_machine_power_off(void);
-
- /* common reboot workarounds */
--extern void bfin_reset_boot_spi_cs(unsigned short pin);
-+extern void bfin_gpio_reset_spi0_ssel1(void);
-
- #endif
-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
---- linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 23:48:28.000000000 +0200
-@@ -122,7 +122,6 @@
- #define TIF_MEMDIE 4
- #define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
- #define TIF_FREEZE 6 /* is freezing for suspend */
--#define TIF_IRQ_SYNC 7 /* sync pipeline stage */
-
- /* as above, but as bit values */
- #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
-@@ -131,7 +130,6 @@
- #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
- #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
- #define _TIF_FREEZE (1<<TIF_FREEZE)
--#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC)
-
- #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
-
-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
---- linux-2.6.29.owrt/arch/blackfin/Kconfig 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig 2009-05-10 23:48:28.000000000 +0200
-@@ -169,51 +169,26 @@
- help
- BF542 Processor Support.
-
--config BF542M
-- bool "BF542m"
-- help
-- BF542 Processor Support.
--
- config BF544
- bool "BF544"
- help
- BF544 Processor Support.
-
--config BF544M
-- bool "BF544m"
-- help
-- BF544 Processor Support.
--
- config BF547
- bool "BF547"
- help
- BF547 Processor Support.
-
--config BF547M
-- bool "BF547m"
-- help
-- BF547 Processor Support.
--
- config BF548
- bool "BF548"
- help
- BF548 Processor Support.
-
--config BF548M
-- bool "BF548m"
-- help
-- BF548 Processor Support.
--
- config BF549
- bool "BF549"
- help
- BF549 Processor Support.
-
--config BF549M
-- bool "BF549m"
-- help
-- BF549 Processor Support.
--
- config BF561
- bool "BF561"
- help
-@@ -249,39 +224,39 @@
-
- config BF_REV_MIN
- int
-- default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
-+ default 0 if (BF51x || BF52x || BF54x)
- default 2 if (BF537 || BF536 || BF534)
-- default 3 if (BF561 || BF533 || BF532 || BF531 || BF54xM)
-+ default 3 if (BF561 ||BF533 || BF532 || BF531)
- default 4 if (BF538 || BF539)
-
- config BF_REV_MAX
- int
-- default 2 if (BF51x || BF52x || (BF54x && !BF54xM))
-- default 3 if (BF537 || BF536 || BF534 || BF54xM)
-+ default 2 if (BF51x || BF52x || BF54x)
-+ default 3 if (BF537 || BF536 || BF534)
- default 5 if (BF561 || BF538 || BF539)
- default 6 if (BF533 || BF532 || BF531)
-
- choice
- prompt "Silicon Rev"
-- default BF_REV_0_1 if (BF51x || BF52x || (BF54x && !BF54xM))
-+ default BF_REV_0_1 if (BF51x || BF52x || BF54x)
- default BF_REV_0_2 if (BF534 || BF536 || BF537)
-- default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF54xM || BF561)
-+ default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF561)
-
- config BF_REV_0_0
- bool "0.0"
-- depends on (BF51x || BF52x || (BF54x && !BF54xM))
-+ depends on (BF51x || BF52x || BF54x)
-
- config BF_REV_0_1
- bool "0.1"
-- depends on (BF52x || (BF54x && !BF54xM))
-+ depends on (BF52x || BF54x)
-
- config BF_REV_0_2
- bool "0.2"
-- depends on (BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM))
-+ depends on (BF52x || BF537 || BF536 || BF534 || BF54x)
-
- config BF_REV_0_3
- bool "0.3"
-- depends on (BF54xM || BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
-+ depends on (BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
-
- config BF_REV_0_4
- bool "0.4"
-@@ -318,14 +293,9 @@
- depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
- default y
-
--config BF54xM
-- bool
-- depends on (BF542M || BF544M || BF547M || BF548M || BF549M)
-- default y
--
- config BF54x
- bool
-- depends on (BF542 || BF544 || BF547 || BF548 || BF549 || BF54xM)
-+ depends on (BF542 || BF544 || BF547 || BF548 || BF549)
- default y
-
- config MEM_GENERIC_BOARD
-@@ -1129,7 +1099,6 @@
-
- config PM_WAKEUP_BY_GPIO
- bool "Allow Wakeup from Standby by GPIO"
-- depends on PM && !BF54x
-
- config PM_WAKEUP_GPIO_NUMBER
- int "GPIO number"
-@@ -1169,12 +1138,6 @@
- default n
- help
- Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
-- (all processors, except ADSP-BF549). This option sets
-- the general-purpose wake-up enable (GPWE) control bit to enable
-- wake-up upon detection of an active low signal on the /GPW (PH7) pin.
-- On ADSP-BF549 this option enables the the same functionality on the
-- /MRXON pin also PH7.
--
- endmenu
-
- menu "CPU Frequency scaling"
-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
---- linux-2.6.29.owrt/arch/blackfin/Kconfig.debug 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug 2009-05-10 23:48:28.000000000 +0200
-@@ -21,6 +21,12 @@
- config HAVE_ARCH_KGDB
- def_bool y
-
-+config KGDB_TESTCASE
-+ tristate "KGDB: for test case in expect"
-+ default n
-+ help
-+ This is a kgdb test case for automated testing.
-+
- config DEBUG_VERBOSE
- bool "Verbose fault messages"
- default y
-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
---- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 23:48:28.000000000 +0200
-@@ -249,13 +249,6 @@
-
- spin_lock_irqsave(&mdma_lock, flags);
-
-- /* Force a sync in case a previous config reset on this channel
-- * occurred. This is needed so subsequent writes to DMA registers
-- * are not spuriously lost/corrupted. Do it under irq lock and
-- * without the anomaly version (because we are atomic already).
-- */
-- __builtin_bfin_ssync();
--
- if (bfin_read_MDMA_S0_CONFIG())
- while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE))
- continue;
-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
---- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 23:48:28.000000000 +0200
-@@ -27,6 +27,59 @@
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-+/*
-+* Number BF537/6/4 BF561 BF533/2/1 BF549/8/4/2
-+*
-+* GPIO_0 PF0 PF0 PF0 PA0...PJ13
-+* GPIO_1 PF1 PF1 PF1
-+* GPIO_2 PF2 PF2 PF2
-+* GPIO_3 PF3 PF3 PF3
-+* GPIO_4 PF4 PF4 PF4
-+* GPIO_5 PF5 PF5 PF5
-+* GPIO_6 PF6 PF6 PF6
-+* GPIO_7 PF7 PF7 PF7
-+* GPIO_8 PF8 PF8 PF8
-+* GPIO_9 PF9 PF9 PF9
-+* GPIO_10 PF10 PF10 PF10
-+* GPIO_11 PF11 PF11 PF11
-+* GPIO_12 PF12 PF12 PF12
-+* GPIO_13 PF13 PF13 PF13
-+* GPIO_14 PF14 PF14 PF14
-+* GPIO_15 PF15 PF15 PF15
-+* GPIO_16 PG0 PF16
-+* GPIO_17 PG1 PF17
-+* GPIO_18 PG2 PF18
-+* GPIO_19 PG3 PF19
-+* GPIO_20 PG4 PF20
-+* GPIO_21 PG5 PF21
-+* GPIO_22 PG6 PF22
-+* GPIO_23 PG7 PF23
-+* GPIO_24 PG8 PF24
-+* GPIO_25 PG9 PF25
-+* GPIO_26 PG10 PF26
-+* GPIO_27 PG11 PF27
-+* GPIO_28 PG12 PF28
-+* GPIO_29 PG13 PF29
-+* GPIO_30 PG14 PF30
-+* GPIO_31 PG15 PF31
-+* GPIO_32 PH0 PF32
-+* GPIO_33 PH1 PF33
-+* GPIO_34 PH2 PF34
-+* GPIO_35 PH3 PF35
-+* GPIO_36 PH4 PF36
-+* GPIO_37 PH5 PF37
-+* GPIO_38 PH6 PF38
-+* GPIO_39 PH7 PF39
-+* GPIO_40 PH8 PF40
-+* GPIO_41 PH9 PF41
-+* GPIO_42 PH10 PF42
-+* GPIO_43 PH11 PF43
-+* GPIO_44 PH12 PF44
-+* GPIO_45 PH13 PF45
-+* GPIO_46 PH14 PF46
-+* GPIO_47 PH15 PF47
-+*/
-+
- #include <linux/delay.h>
- #include <linux/module.h>
- #include <linux/err.h>
-@@ -66,61 +119,62 @@
- #define AWA_DUMMY_READ(...) do { } while (0)
- #endif
-
--static struct gpio_port_t * const gpio_array[] = {
- #if defined(BF533_FAMILY) || defined(BF538_FAMILY)
-+static struct gpio_port_t *gpio_bankb[] = {
- (struct gpio_port_t *) FIO_FLAG_D,
--#elif defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-+};
-+#endif
-+
-+#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-+static struct gpio_port_t *gpio_bankb[] = {
- (struct gpio_port_t *) PORTFIO,
- (struct gpio_port_t *) PORTGIO,
- (struct gpio_port_t *) PORTHIO,
--#elif defined(BF561_FAMILY)
-- (struct gpio_port_t *) FIO0_FLAG_D,
-- (struct gpio_port_t *) FIO1_FLAG_D,
-- (struct gpio_port_t *) FIO2_FLAG_D,
--#elif defined(BF548_FAMILY)
-- (struct gpio_port_t *)PORTA_FER,
-- (struct gpio_port_t *)PORTB_FER,
-- (struct gpio_port_t *)PORTC_FER,
-- (struct gpio_port_t *)PORTD_FER,
-- (struct gpio_port_t *)PORTE_FER,
-- (struct gpio_port_t *)PORTF_FER,
-- (struct gpio_port_t *)PORTG_FER,
-- (struct gpio_port_t *)PORTH_FER,
-- (struct gpio_port_t *)PORTI_FER,
-- (struct gpio_port_t *)PORTJ_FER,
--#else
--# error no gpio arrays defined
--#endif
- };
-
--#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
--static unsigned short * const port_fer[] = {
-+static unsigned short *port_fer[] = {
- (unsigned short *) PORTF_FER,
- (unsigned short *) PORTG_FER,
- (unsigned short *) PORTH_FER,
- };
-+#endif
-
--# if !defined(BF537_FAMILY)
--static unsigned short * const port_mux[] = {
-+#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-+static unsigned short *port_mux[] = {
- (unsigned short *) PORTF_MUX,
- (unsigned short *) PORTG_MUX,
- (unsigned short *) PORTH_MUX,
- };
-
- static const
--u8 pmux_offset[][16] = {
--# if defined(BF527_FAMILY)
-- { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
-- { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
-- { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
--# elif defined(BF518_FAMILY)
-- { 0, 2, 2, 2, 2, 2, 2, 4, 6, 6, 6, 8, 8, 8, 8, 10 }, /* PORTF */
-- { 0, 0, 0, 2, 4, 6, 6, 6, 8, 10, 10, 12, 14, 14, 14, 14 }, /* PORTG */
-- { 0, 0, 0, 0, 2, 2, 4, 6, 10, 10, 10, 10, 10, 10, 10, 10 }, /* PORTH */
--# endif
-+u8 pmux_offset[][16] =
-+ {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
-+ { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
-+ { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
-+ };
-+#endif
-+
-+#ifdef BF561_FAMILY
-+static struct gpio_port_t *gpio_bankb[] = {
-+ (struct gpio_port_t *) FIO0_FLAG_D,
-+ (struct gpio_port_t *) FIO1_FLAG_D,
-+ (struct gpio_port_t *) FIO2_FLAG_D,
- };
--# endif
-+#endif
-
-+#ifdef BF548_FAMILY
-+static struct gpio_port_t *gpio_array[] = {
-+ (struct gpio_port_t *)PORTA_FER,
-+ (struct gpio_port_t *)PORTB_FER,
-+ (struct gpio_port_t *)PORTC_FER,
-+ (struct gpio_port_t *)PORTD_FER,
-+ (struct gpio_port_t *)PORTE_FER,
-+ (struct gpio_port_t *)PORTF_FER,
-+ (struct gpio_port_t *)PORTG_FER,
-+ (struct gpio_port_t *)PORTH_FER,
-+ (struct gpio_port_t *)PORTI_FER,
-+ (struct gpio_port_t *)PORTJ_FER,
-+};
- #endif
-
- static unsigned short reserved_gpio_map[GPIO_BANK_NUM];
-@@ -134,9 +188,35 @@
- } str_ident[MAX_RESOURCES];
-
- #if defined(CONFIG_PM)
-+#if defined(CONFIG_BF54x)
-+static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
-+#else
-+static unsigned short wakeup_map[GPIO_BANK_NUM];
-+static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
- static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
-+
-+#ifdef BF533_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB};
-+#endif
-+
-+#ifdef BF537_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX};
-+#endif
-+
-+#ifdef BF538_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB};
- #endif
-
-+#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-+static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB};
-+#endif
-+
-+#ifdef BF561_FAMILY
-+static unsigned int sic_iwr_irqs[] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB};
-+#endif
-+#endif
-+#endif /* CONFIG_PM */
-+
- inline int check_gpio(unsigned gpio)
- {
- #if defined(BF548_FAMILY)
-@@ -250,10 +330,9 @@
- {.res = P_SPI0_SSEL3, .offset = 0},
- };
-
--static void portmux_setup(unsigned short per)
-+static void portmux_setup(unsigned short per, unsigned short function)
- {
- u16 y, offset, muxreg;
-- u16 function = P_FUNCT2MUX(per);
-
- for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) {
- if (port_mux_lut[y].res == per) {
-@@ -274,33 +353,30 @@
- }
- }
- #elif defined(BF548_FAMILY)
--inline void portmux_setup(unsigned short per)
-+inline void portmux_setup(unsigned short portno, unsigned short function)
- {
- u32 pmux;
-- u16 ident = P_IDENT(per);
-- u16 function = P_FUNCT2MUX(per);
-
-- pmux = gpio_array[gpio_bank(ident)]->port_mux;
-+ pmux = gpio_array[gpio_bank(portno)]->port_mux;
-
-- pmux &= ~(0x3 << (2 * gpio_sub_n(ident)));
-- pmux |= (function & 0x3) << (2 * gpio_sub_n(ident));
-+ pmux &= ~(0x3 << (2 * gpio_sub_n(portno)));
-+ pmux |= (function & 0x3) << (2 * gpio_sub_n(portno));
-
-- gpio_array[gpio_bank(ident)]->port_mux = pmux;
-+ gpio_array[gpio_bank(portno)]->port_mux = pmux;
- }
-
--inline u16 get_portmux(unsigned short per)
-+inline u16 get_portmux(unsigned short portno)
- {
- u32 pmux;
-- u16 ident = P_IDENT(per);
-
-- pmux = gpio_array[gpio_bank(ident)]->port_mux;
-+ pmux = gpio_array[gpio_bank(portno)]->port_mux;
-
-- return (pmux >> (2 * gpio_sub_n(ident)) & 0x3);
-+ return (pmux >> (2 * gpio_sub_n(portno)) & 0x3);
- }
- #elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
--inline void portmux_setup(unsigned short per)
-+inline void portmux_setup(unsigned short portno, unsigned short function)
- {
-- u16 pmux, ident = P_IDENT(per), function = P_FUNCT2MUX(per);
-+ u16 pmux, ident = P_IDENT(portno);
- u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)];
-
- pmux = *port_mux[gpio_bank(ident)];
-@@ -348,71 +424,90 @@
- unsigned long flags; \
- local_irq_save_hw(flags); \
- if (arg) \
-- gpio_array[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
-+ gpio_bankb[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
- else \
-- gpio_array[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
-+ gpio_bankb[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
- AWA_DUMMY_READ(name); \
- local_irq_restore_hw(flags); \
- } \
- EXPORT_SYMBOL(set_gpio_ ## name);
-
--SET_GPIO(dir) /* set_gpio_dir() */
--SET_GPIO(inen) /* set_gpio_inen() */
--SET_GPIO(polar) /* set_gpio_polar() */
--SET_GPIO(edge) /* set_gpio_edge() */
--SET_GPIO(both) /* set_gpio_both() */
-+SET_GPIO(dir)
-+SET_GPIO(inen)
-+SET_GPIO(polar)
-+SET_GPIO(edge)
-+SET_GPIO(both)
-
-
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define SET_GPIO_SC(name) \
- void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
- { \
- unsigned long flags; \
-- if (ANOMALY_05000311 || ANOMALY_05000323) \
-- local_irq_save_hw(flags); \
-+ local_irq_save_hw(flags); \
- if (arg) \
-- gpio_array[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
-+ gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
- else \
-- gpio_array[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
-- if (ANOMALY_05000311 || ANOMALY_05000323) { \
-- AWA_DUMMY_READ(name); \
-- local_irq_restore_hw(flags); \
-- } \
-+ gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
-+ AWA_DUMMY_READ(name); \
-+ local_irq_restore_hw(flags); \
- } \
- EXPORT_SYMBOL(set_gpio_ ## name);
-+#else
-+#define SET_GPIO_SC(name) \
-+void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
-+{ \
-+ if (arg) \
-+ gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
-+ else \
-+ gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
-+} \
-+EXPORT_SYMBOL(set_gpio_ ## name);
-+#endif
-
- SET_GPIO_SC(maska)
- SET_GPIO_SC(maskb)
- SET_GPIO_SC(data)
-
-+#if ANOMALY_05000311 || ANOMALY_05000323
- void set_gpio_toggle(unsigned gpio)
- {
- unsigned long flags;
-- if (ANOMALY_05000311 || ANOMALY_05000323)
-- local_irq_save_hw(flags);
-- gpio_array[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
-- if (ANOMALY_05000311 || ANOMALY_05000323) {
-- AWA_DUMMY_READ(toggle);
-- local_irq_restore_hw(flags);
-- }
-+ local_irq_save_hw(flags);
-+ gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
-+ AWA_DUMMY_READ(toggle);
-+ local_irq_restore_hw(flags);
-+}
-+#else
-+void set_gpio_toggle(unsigned gpio)
-+{
-+ gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
- }
-+#endif
- EXPORT_SYMBOL(set_gpio_toggle);
-
-
- /*Set current PORT date (16-bit word)*/
-
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define SET_GPIO_P(name) \
- void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
- { \
- unsigned long flags; \
-- if (ANOMALY_05000311 || ANOMALY_05000323) \
-- local_irq_save_hw(flags); \
-- gpio_array[gpio_bank(gpio)]->name = arg; \
-- if (ANOMALY_05000311 || ANOMALY_05000323) { \
-- AWA_DUMMY_READ(name); \
-- local_irq_restore_hw(flags); \
-- } \
-+ local_irq_save_hw(flags); \
-+ gpio_bankb[gpio_bank(gpio)]->name = arg; \
-+ AWA_DUMMY_READ(name); \
-+ local_irq_restore_hw(flags); \
-+} \
-+EXPORT_SYMBOL(set_gpiop_ ## name);
-+#else
-+#define SET_GPIO_P(name) \
-+void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
-+{ \
-+ gpio_bankb[gpio_bank(gpio)]->name = arg; \
- } \
- EXPORT_SYMBOL(set_gpiop_ ## name);
-+#endif
-
- SET_GPIO_P(data)
- SET_GPIO_P(dir)
-@@ -424,21 +519,27 @@
- SET_GPIO_P(maskb)
-
- /* Get a specific bit */
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define GET_GPIO(name) \
- unsigned short get_gpio_ ## name(unsigned gpio) \
- { \
- unsigned long flags; \
- unsigned short ret; \
-- if (ANOMALY_05000311 || ANOMALY_05000323) \
-- local_irq_save_hw(flags); \
-- ret = 0x01 & (gpio_array[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
-- if (ANOMALY_05000311 || ANOMALY_05000323) { \
-- AWA_DUMMY_READ(name); \
-- local_irq_restore_hw(flags); \
-- } \
-+ local_irq_save_hw(flags); \
-+ ret = 0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
-+ AWA_DUMMY_READ(name); \
-+ local_irq_restore_hw(flags); \
- return ret; \
- } \
- EXPORT_SYMBOL(get_gpio_ ## name);
-+#else
-+#define GET_GPIO(name) \
-+unsigned short get_gpio_ ## name(unsigned gpio) \
-+{ \
-+ return (0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio))); \
-+} \
-+EXPORT_SYMBOL(get_gpio_ ## name);
-+#endif
-
- GET_GPIO(data)
- GET_GPIO(dir)
-@@ -451,21 +552,27 @@
-
- /*Get current PORT date (16-bit word)*/
-
-+#if ANOMALY_05000311 || ANOMALY_05000323
- #define GET_GPIO_P(name) \
- unsigned short get_gpiop_ ## name(unsigned gpio) \
- { \
- unsigned long flags; \
- unsigned short ret; \
-- if (ANOMALY_05000311 || ANOMALY_05000323) \
-- local_irq_save_hw(flags); \
-- ret = (gpio_array[gpio_bank(gpio)]->name); \
-- if (ANOMALY_05000311 || ANOMALY_05000323) { \
-- AWA_DUMMY_READ(name); \
-- local_irq_restore_hw(flags); \
-- } \
-+ local_irq_save_hw(flags); \
-+ ret = (gpio_bankb[gpio_bank(gpio)]->name); \
-+ AWA_DUMMY_READ(name); \
-+ local_irq_restore_hw(flags); \
- return ret; \
- } \
- EXPORT_SYMBOL(get_gpiop_ ## name);
-+#else
-+#define GET_GPIO_P(name) \
-+unsigned short get_gpiop_ ## name(unsigned gpio) \
-+{ \
-+ return (gpio_bankb[gpio_bank(gpio)]->name);\
-+} \
-+EXPORT_SYMBOL(get_gpiop_ ## name);
-+#endif
-
- GET_GPIO_P(data)
- GET_GPIO_P(dir)
-@@ -478,26 +585,6 @@
-
-
- #ifdef CONFIG_PM
--
--static unsigned short wakeup_map[GPIO_BANK_NUM];
--static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
--
--static const unsigned int sic_iwr_irqs[] = {
--#if defined(BF533_FAMILY)
-- IRQ_PROG_INTB
--#elif defined(BF537_FAMILY)
-- IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX
--#elif defined(BF538_FAMILY)
-- IRQ_PORTF_INTB
--#elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
-- IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB
--#elif defined(BF561_FAMILY)
-- IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB
--#else
--# error no SIC_IWR defined
--#endif
--};
--
- /***********************************************************
- *
- * FUNCTIONS: Blackfin PM Setup API
-@@ -582,18 +669,18 @@
- mask = wakeup_map[gpio_bank(i)];
- bank = gpio_bank(i);
-
-- gpio_bank_saved[bank].maskb = gpio_array[bank]->maskb;
-- gpio_array[bank]->maskb = 0;
-+ gpio_bank_saved[bank].maskb = gpio_bankb[bank]->maskb;
-+ gpio_bankb[bank]->maskb = 0;
-
- if (mask) {
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
- gpio_bank_saved[bank].fer = *port_fer[bank];
- #endif
-- gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
-- gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
-- gpio_bank_saved[bank].dir = gpio_array[bank]->dir;
-- gpio_bank_saved[bank].edge = gpio_array[bank]->edge;
-- gpio_bank_saved[bank].both = gpio_array[bank]->both;
-+ gpio_bank_saved[bank].inen = gpio_bankb[bank]->inen;
-+ gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
-+ gpio_bank_saved[bank].dir = gpio_bankb[bank]->dir;
-+ gpio_bank_saved[bank].edge = gpio_bankb[bank]->edge;
-+ gpio_bank_saved[bank].both = gpio_bankb[bank]->both;
- gpio_bank_saved[bank].reserved =
- reserved_gpio_map[bank];
-
-@@ -613,7 +700,7 @@
- }
-
- bfin_internal_set_wake(sic_iwr_irqs[bank], 1);
-- gpio_array[bank]->maskb_set = wakeup_map[gpio_bank(i)];
-+ gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
- }
- }
-
-@@ -634,18 +721,18 @@
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
- *port_fer[bank] = gpio_bank_saved[bank].fer;
- #endif
-- gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
-- gpio_array[bank]->dir = gpio_bank_saved[bank].dir;
-- gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
-- gpio_array[bank]->edge = gpio_bank_saved[bank].edge;
-- gpio_array[bank]->both = gpio_bank_saved[bank].both;
-+ gpio_bankb[bank]->inen = gpio_bank_saved[bank].inen;
-+ gpio_bankb[bank]->dir = gpio_bank_saved[bank].dir;
-+ gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
-+ gpio_bankb[bank]->edge = gpio_bank_saved[bank].edge;
-+ gpio_bankb[bank]->both = gpio_bank_saved[bank].both;
-
- reserved_gpio_map[bank] =
- gpio_bank_saved[bank].reserved;
- bfin_internal_set_wake(sic_iwr_irqs[bank], 0);
- }
-
-- gpio_array[bank]->maskb = gpio_bank_saved[bank].maskb;
-+ gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
- }
- AWA_DUMMY_READ(maskb);
- }
-@@ -658,21 +745,21 @@
- bank = gpio_bank(i);
-
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
-- gpio_bank_saved[bank].fer = *port_fer[bank];
-+ gpio_bank_saved[bank].fer = *port_fer[bank];
- #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-- gpio_bank_saved[bank].mux = *port_mux[bank];
-+ gpio_bank_saved[bank].mux = *port_mux[bank];
- #else
-- if (bank == 0)
-- gpio_bank_saved[bank].mux = bfin_read_PORT_MUX();
-+ if (bank == 0)
-+ gpio_bank_saved[bank].mux = bfin_read_PORT_MUX();
- #endif
- #endif
-- gpio_bank_saved[bank].data = gpio_array[bank]->data;
-- gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
-- gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
-- gpio_bank_saved[bank].dir = gpio_array[bank]->dir;
-- gpio_bank_saved[bank].edge = gpio_array[bank]->edge;
-- gpio_bank_saved[bank].both = gpio_array[bank]->both;
-- gpio_bank_saved[bank].maska = gpio_array[bank]->maska;
-+ gpio_bank_saved[bank].data = gpio_bankb[bank]->data;
-+ gpio_bank_saved[bank].inen = gpio_bankb[bank]->inen;
-+ gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
-+ gpio_bank_saved[bank].dir = gpio_bankb[bank]->dir;
-+ gpio_bank_saved[bank].edge = gpio_bankb[bank]->edge;
-+ gpio_bank_saved[bank].both = gpio_bankb[bank]->both;
-+ gpio_bank_saved[bank].maska = gpio_bankb[bank]->maska;
- }
-
- AWA_DUMMY_READ(maska);
-@@ -683,27 +770,27 @@
- int i, bank;
-
- for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
-- bank = gpio_bank(i);
-+ bank = gpio_bank(i);
-
- #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
- #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
-- *port_mux[bank] = gpio_bank_saved[bank].mux;
-+ *port_mux[bank] = gpio_bank_saved[bank].mux;
- #else
-- if (bank == 0)
-- bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
-+ if (bank == 0)
-+ bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
- #endif
-- *port_fer[bank] = gpio_bank_saved[bank].fer;
-+ *port_fer[bank] = gpio_bank_saved[bank].fer;
- #endif
-- gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
-- gpio_array[bank]->dir = gpio_bank_saved[bank].dir;
-- gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
-- gpio_array[bank]->edge = gpio_bank_saved[bank].edge;
-- gpio_array[bank]->both = gpio_bank_saved[bank].both;
-+ gpio_bankb[bank]->inen = gpio_bank_saved[bank].inen;
-+ gpio_bankb[bank]->dir = gpio_bank_saved[bank].dir;
-+ gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
-+ gpio_bankb[bank]->edge = gpio_bank_saved[bank].edge;
-+ gpio_bankb[bank]->both = gpio_bank_saved[bank].both;
-
-- gpio_array[bank]->data_set = gpio_bank_saved[bank].data
-- | gpio_bank_saved[bank].dir;
-+ gpio_bankb[bank]->data_set = gpio_bank_saved[bank].data
-+ | gpio_bank_saved[bank].dir;
-
-- gpio_array[bank]->maska = gpio_bank_saved[bank].maska;
-+ gpio_bankb[bank]->maska = gpio_bank_saved[bank].maska;
- }
- AWA_DUMMY_READ(maska);
- }
-@@ -730,12 +817,12 @@
- for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
- bank = gpio_bank(i);
-
-- gpio_bank_saved[bank].fer = gpio_array[bank]->port_fer;
-- gpio_bank_saved[bank].mux = gpio_array[bank]->port_mux;
-- gpio_bank_saved[bank].data = gpio_array[bank]->data;
-- gpio_bank_saved[bank].data = gpio_array[bank]->data;
-- gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
-- gpio_bank_saved[bank].dir = gpio_array[bank]->dir_set;
-+ gpio_bank_saved[bank].fer = gpio_array[bank]->port_fer;
-+ gpio_bank_saved[bank].mux = gpio_array[bank]->port_mux;
-+ gpio_bank_saved[bank].data = gpio_array[bank]->port_data;
-+ gpio_bank_saved[bank].data = gpio_array[bank]->port_data;
-+ gpio_bank_saved[bank].inen = gpio_array[bank]->port_inen;
-+ gpio_bank_saved[bank].dir = gpio_array[bank]->port_dir_set;
- }
- }
-
-@@ -744,21 +831,21 @@
- int i, bank;
-
- for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
-- bank = gpio_bank(i);
-+ bank = gpio_bank(i);
-
-- gpio_array[bank]->port_mux = gpio_bank_saved[bank].mux;
-- gpio_array[bank]->port_fer = gpio_bank_saved[bank].fer;
-- gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
-- gpio_array[bank]->dir_set = gpio_bank_saved[bank].dir;
-- gpio_array[bank]->data_set = gpio_bank_saved[bank].data
-- | gpio_bank_saved[bank].dir;
-+ gpio_array[bank]->port_mux = gpio_bank_saved[bank].mux;
-+ gpio_array[bank]->port_fer = gpio_bank_saved[bank].fer;
-+ gpio_array[bank]->port_inen = gpio_bank_saved[bank].inen;
-+ gpio_array[bank]->port_dir_set = gpio_bank_saved[bank].dir;
-+ gpio_array[bank]->port_set = gpio_bank_saved[bank].data
-+ | gpio_bank_saved[bank].dir;
- }
- }
- #endif
-
- unsigned short get_gpio_dir(unsigned gpio)
- {
-- return (0x01 & (gpio_array[gpio_bank(gpio)]->dir_clear >> gpio_sub_n(gpio)));
-+ return (0x01 & (gpio_array[gpio_bank(gpio)]->port_dir_clear >> gpio_sub_n(gpio)));
- }
- EXPORT_SYMBOL(get_gpio_dir);
-
-@@ -818,7 +905,9 @@
- */
-
- #ifdef BF548_FAMILY
-- if (!((per & P_MAYSHARE) && get_portmux(per) == P_FUNCT2MUX(per))) {
-+ u16 funct = get_portmux(ident);
-+
-+ if (!((per & P_MAYSHARE) && (funct == P_FUNCT2MUX(per)))) {
- #else
- if (!(per & P_MAYSHARE)) {
- #endif
-@@ -842,7 +931,11 @@
- anyway:
- reserved_peri_map[gpio_bank(ident)] |= gpio_bit(ident);
-
-- portmux_setup(per);
-+#ifdef BF548_FAMILY
-+ portmux_setup(ident, P_FUNCT2MUX(per));
-+#else
-+ portmux_setup(per, P_FUNCT2MUX(per));
-+#endif
- port_setup(ident, PERIPHERAL_USAGE);
-
- local_irq_restore_hw(flags);
-@@ -884,6 +977,9 @@
- if (!(per & P_DEFINED))
- return;
-
-+ if (check_gpio(ident) < 0)
-+ return;
-+
- local_irq_save_hw(flags);
-
- if (unlikely(!(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident)))) {
-@@ -960,15 +1056,9 @@
- local_irq_restore_hw(flags);
- return -EBUSY;
- }
-- if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+ if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio)))
- printk(KERN_NOTICE "bfin-gpio: GPIO %d is already reserved as gpio-irq!"
- " (Documentation/blackfin/bfin-gpio-notes.txt)\n", gpio);
-- }
--#ifndef BF548_FAMILY
-- else { /* Reset POLAR setting when acquiring a gpio for the first time */
-- set_gpio_polar(gpio, 0);
-- }
--#endif
-
- reserved_gpio_map[gpio_bank(gpio)] |= gpio_bit(gpio);
- set_label(gpio, label);
-@@ -988,8 +1078,6 @@
- if (check_gpio(gpio) < 0)
- return;
-
-- might_sleep();
--
- local_irq_save_hw(flags);
-
- if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
-@@ -1070,16 +1158,8 @@
- local_irq_restore_hw(flags);
- }
-
--static inline void __bfin_gpio_direction_input(unsigned gpio)
--{
--#ifdef BF548_FAMILY
-- gpio_array[gpio_bank(gpio)]->dir_clear = gpio_bit(gpio);
--#else
-- gpio_array[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
--#endif
-- gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
--}
-
-+#ifdef BF548_FAMILY
- int bfin_gpio_direction_input(unsigned gpio)
- {
- unsigned long flags;
-@@ -1090,85 +1170,125 @@
- }
-
- local_irq_save_hw(flags);
-- __bfin_gpio_direction_input(gpio);
-- AWA_DUMMY_READ(inen);
-+ gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
-+ gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
- local_irq_restore_hw(flags);
-
- return 0;
- }
- EXPORT_SYMBOL(bfin_gpio_direction_input);
-
--void bfin_gpio_irq_prepare(unsigned gpio)
-+int bfin_gpio_direction_output(unsigned gpio, int value)
- {
--#ifdef BF548_FAMILY
- unsigned long flags;
--#endif
-
-- port_setup(gpio, GPIO_USAGE);
-+ if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+ gpio_error(gpio);
-+ return -EINVAL;
-+ }
-
--#ifdef BF548_FAMILY
- local_irq_save_hw(flags);
-- __bfin_gpio_direction_input(gpio);
-+ gpio_array[gpio_bank(gpio)]->port_inen &= ~gpio_bit(gpio);
-+ gpio_set_value(gpio, value);
-+ gpio_array[gpio_bank(gpio)]->port_dir_set = gpio_bit(gpio);
- local_irq_restore_hw(flags);
--#endif
-+
-+ return 0;
- }
-+EXPORT_SYMBOL(bfin_gpio_direction_output);
-
- void bfin_gpio_set_value(unsigned gpio, int arg)
- {
- if (arg)
-- gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+ gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio);
- else
-- gpio_array[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
-+ gpio_array[gpio_bank(gpio)]->port_clear = gpio_bit(gpio);
- }
- EXPORT_SYMBOL(bfin_gpio_set_value);
-
--int bfin_gpio_direction_output(unsigned gpio, int value)
-+int bfin_gpio_get_value(unsigned gpio)
-+{
-+ return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio)));
-+}
-+EXPORT_SYMBOL(bfin_gpio_get_value);
-+
-+void bfin_gpio_irq_prepare(unsigned gpio)
- {
- unsigned long flags;
-
-- if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-- gpio_error(gpio);
-- return -EINVAL;
-- }
-+ port_setup(gpio, GPIO_USAGE);
-
- local_irq_save_hw(flags);
--
-- gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
-- gpio_set_value(gpio, value);
--#ifdef BF548_FAMILY
-- gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio);
--#else
-- gpio_array[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
--#endif
--
-- AWA_DUMMY_READ(dir);
-+ gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
-+ gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
- local_irq_restore_hw(flags);
--
-- return 0;
- }
--EXPORT_SYMBOL(bfin_gpio_direction_output);
-+
-+#else
-
- int bfin_gpio_get_value(unsigned gpio)
- {
--#ifdef BF548_FAMILY
-- return (1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio)));
--#else
- unsigned long flags;
-+ int ret;
-
- if (unlikely(get_gpio_edge(gpio))) {
-- int ret;
- local_irq_save_hw(flags);
- set_gpio_edge(gpio, 0);
- ret = get_gpio_data(gpio);
- set_gpio_edge(gpio, 1);
- local_irq_restore_hw(flags);
-+
- return ret;
- } else
- return get_gpio_data(gpio);
--#endif
- }
- EXPORT_SYMBOL(bfin_gpio_get_value);
-
-+
-+int bfin_gpio_direction_input(unsigned gpio)
-+{
-+ unsigned long flags;
-+
-+ if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+ gpio_error(gpio);
-+ return -EINVAL;
-+ }
-+
-+ local_irq_save_hw(flags);
-+ gpio_bankb[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
-+ gpio_bankb[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
-+ AWA_DUMMY_READ(inen);
-+ local_irq_restore_hw(flags);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(bfin_gpio_direction_input);
-+
-+int bfin_gpio_direction_output(unsigned gpio, int value)
-+{
-+ unsigned long flags;
-+
-+ if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
-+ gpio_error(gpio);
-+ return -EINVAL;
-+ }
-+
-+ local_irq_save_hw(flags);
-+ gpio_bankb[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
-+
-+ if (value)
-+ gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+ else
-+ gpio_bankb[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
-+
-+ gpio_bankb[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
-+ AWA_DUMMY_READ(dir);
-+ local_irq_restore_hw(flags);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(bfin_gpio_direction_output);
-+
- /* If we are booting from SPI and our board lacks a strong enough pull up,
- * the core can reset and execute the bootrom faster than the resistor can
- * pull the signal logically high. To work around this (common) error in
-@@ -1179,15 +1299,23 @@
- * lives here as we need to force all the GPIO states w/out going through
- * BUG() checks and such.
- */
--void bfin_reset_boot_spi_cs(unsigned short pin)
-+void bfin_gpio_reset_spi0_ssel1(void)
- {
-- unsigned short gpio = P_IDENT(pin);
-+ u16 gpio = P_IDENT(P_SPI0_SSEL1);
-+
- port_setup(gpio, GPIO_USAGE);
-- gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
-+ gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
- AWA_DUMMY_READ(data_set);
- udelay(1);
- }
-
-+void bfin_gpio_irq_prepare(unsigned gpio)
-+{
-+ port_setup(gpio, GPIO_USAGE);
-+}
-+
-+#endif /*BF548_FAMILY */
-+
- #if defined(CONFIG_PROC_FS)
- static int gpio_proc_read(char *buf, char **start, off_t offset,
- int len, int *unused_i, void *unused_v)
-@@ -1241,7 +1369,11 @@
-
- void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value)
- {
-+#ifdef BF548_FAMILY
- return bfin_gpio_set_value(gpio, value);
-+#else
-+ return set_gpio_data(gpio, value);
-+#endif
- }
-
- int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c 2009-05-10 23:48:28.000000000 +0200
-@@ -63,8 +63,10 @@
- dcplb_tbl[cpu][i_d].addr = 0;
- dcplb_tbl[cpu][i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
-
-+#if 0
- icplb_tbl[cpu][i_i].addr = 0;
-- icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_1KB;
-+ icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_4KB;
-+#endif
-
- /* Cover kernel memory with 4M pages. */
- addr = 0;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c 2009-05-10 23:48:28.000000000 +0200
-@@ -53,13 +53,9 @@
-
- i_d = i_i = 0;
-
--#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
- /* Set up the zero page. */
- d_tbl[i_d].addr = 0;
- d_tbl[i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
-- i_tbl[i_i].addr = 0;
-- i_tbl[i_i++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
--#endif
-
- /* Cover kernel memory with 4M pages. */
- addr = 0;
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c 2009-05-10 23:48:28.000000000 +0200
-@@ -163,14 +163,12 @@
- nr_icplb_supv_miss[cpu]++;
-
- base = 0;
-- idx = 0;
-- do {
-+ for (idx = 0; idx < icplb_nr_bounds; idx++) {
- eaddr = icplb_bounds[idx].eaddr;
- if (addr < eaddr)
- break;
- base = eaddr;
-- } while (++idx < icplb_nr_bounds);
--
-+ }
- if (unlikely(idx == icplb_nr_bounds))
- return CPLB_NO_ADDR_MATCH;
-
-@@ -210,14 +208,12 @@
- nr_dcplb_supv_miss[cpu]++;
-
- base = 0;
-- idx = 0;
-- do {
-+ for (idx = 0; idx < dcplb_nr_bounds; idx++) {
- eaddr = dcplb_bounds[idx].eaddr;
- if (addr < eaddr)
- break;
- base = eaddr;
-- } while (++idx < dcplb_nr_bounds);
--
-+ }
- if (unlikely(idx == dcplb_nr_bounds))
- return CPLB_NO_ADDR_MATCH;
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c 2009-05-10 23:48:28.000000000 +0200
-@@ -35,8 +35,14 @@
- #include <asm/atomic.h>
- #include <asm/io.h>
-
-+static int create_irq_threads;
-+
- DEFINE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
-
-+static DEFINE_PER_CPU(unsigned long, pending_irqthread_mask);
-+
-+static DEFINE_PER_CPU(int [IVG13 + 1], pending_irq_count);
-+
- asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs);
-
- static void __ipipe_no_irqtail(void);
-@@ -87,7 +93,6 @@
- */
- void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs)
- {
-- struct ipipe_percpu_domain_data *p = ipipe_root_cpudom_ptr();
- struct ipipe_domain *this_domain, *next_domain;
- struct list_head *head, *pos;
- int m_ack, s = -1;
-@@ -99,6 +104,7 @@
- * interrupt.
- */
- m_ack = (regs == NULL || irq == IRQ_SYSTMR || irq == IRQ_CORETMR);
-+
- this_domain = ipipe_current_domain;
-
- if (unlikely(test_bit(IPIPE_STICKY_FLAG, &this_domain->irqs[irq].control)))
-@@ -108,28 +114,49 @@
- next_domain = list_entry(head, struct ipipe_domain, p_link);
- if (likely(test_bit(IPIPE_WIRED_FLAG, &next_domain->irqs[irq].control))) {
- if (!m_ack && next_domain->irqs[irq].acknowledge != NULL)
-- next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
-- if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
-- s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
-+ next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
-+ if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
-+ s = __test_and_set_bit(IPIPE_STALL_FLAG,
-+ &ipipe_root_cpudom_var(status));
- __ipipe_dispatch_wired(next_domain, irq);
-- goto out;
-+ goto finalize;
-+ return;
- }
- }
-
- /* Ack the interrupt. */
-
- pos = head;
-+
- while (pos != &__ipipe_pipeline) {
- next_domain = list_entry(pos, struct ipipe_domain, p_link);
-+ /*
-+ * For each domain handling the incoming IRQ, mark it
-+ * as pending in its log.
-+ */
- if (test_bit(IPIPE_HANDLE_FLAG, &next_domain->irqs[irq].control)) {
-+ /*
-+ * Domains that handle this IRQ are polled for
-+ * acknowledging it by decreasing priority
-+ * order. The interrupt must be made pending
-+ * _first_ in the domain's status flags before
-+ * the PIC is unlocked.
-+ */
- __ipipe_set_irq_pending(next_domain, irq);
-+
- if (!m_ack && next_domain->irqs[irq].acknowledge != NULL) {
-- next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
-+ next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
- m_ack = 1;
- }
- }
-+
-+ /*
-+ * If the domain does not want the IRQ to be passed
-+ * down the interrupt pipe, exit the loop now.
-+ */
- if (!test_bit(IPIPE_PASS_FLAG, &next_domain->irqs[irq].control))
- break;
-+
- pos = next_domain->p_link.next;
- }
-
-@@ -139,24 +166,18 @@
- * immediately to the current domain if the interrupt has been
- * marked as 'sticky'. This search does not go beyond the
- * current domain in the pipeline. We also enforce the
-- * additional root stage lock (blackfin-specific).
-- */
-- if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
-- s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
-+ * additional root stage lock (blackfin-specific). */
-
-- /*
-- * If the interrupt preempted the head domain, then do not
-- * even try to walk the pipeline, unless an interrupt is
-- * pending for it.
-- */
-- if (test_bit(IPIPE_AHEAD_FLAG, &this_domain->flags) &&
-- ipipe_head_cpudom_var(irqpend_himask) == 0)
-- goto out;
-+ if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
-+ s = __test_and_set_bit(IPIPE_STALL_FLAG,
-+ &ipipe_root_cpudom_var(status));
-+finalize:
-
- __ipipe_walk_pipeline(head);
--out:
-+
- if (!s)
-- __clear_bit(IPIPE_STALL_FLAG, &p->status);
-+ __clear_bit(IPIPE_STALL_FLAG,
-+ &ipipe_root_cpudom_var(status));
- }
-
- int __ipipe_check_root(void)
-@@ -166,7 +187,7 @@
-
- void __ipipe_enable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
- {
-- struct irq_desc *desc = irq_to_desc(irq);
-+ struct irq_desc *desc = irq_desc + irq;
- int prio = desc->ic_prio;
-
- desc->depth = 0;
-@@ -178,7 +199,7 @@
-
- void __ipipe_disable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
- {
-- struct irq_desc *desc = irq_to_desc(irq);
-+ struct irq_desc *desc = irq_desc + irq;
- int prio = desc->ic_prio;
-
- if (ipd != &ipipe_root &&
-@@ -215,18 +236,15 @@
- {
- unsigned long flags;
-
-- /*
-- * We need to run the IRQ tail hook whenever we don't
-+ /* We need to run the IRQ tail hook whenever we don't
- * propagate a syscall to higher domains, because we know that
- * important operations might be pending there (e.g. Xenomai
-- * deferred rescheduling).
-- */
-+ * deferred rescheduling). */
-
-- if (regs->orig_p0 < NR_syscalls) {
-+ if (!__ipipe_syscall_watched_p(current, regs->orig_p0)) {
- void (*hook)(void) = (void (*)(void))__ipipe_irq_tail_hook;
- hook();
-- if ((current->flags & PF_EVNOTIFY) == 0)
-- return 0;
-+ return 0;
- }
-
- /*
-@@ -294,46 +312,112 @@
- {
- unsigned long flags;
-
--#ifdef CONFIG_IPIPE_DEBUG
- if (irq >= IPIPE_NR_IRQS ||
- (ipipe_virtual_irq_p(irq)
- && !test_bit(irq - IPIPE_VIRQ_BASE, &__ipipe_virtual_irq_map)))
- return -EINVAL;
--#endif
-
- local_irq_save_hw(flags);
-+
- __ipipe_handle_irq(irq, NULL);
-+
- local_irq_restore_hw(flags);
-
- return 1;
- }
-
--asmlinkage void __ipipe_sync_root(void)
-+/* Move Linux IRQ to threads. */
-+
-+static int do_irqd(void *__desc)
- {
-- unsigned long flags;
-+ struct irq_desc *desc = __desc;
-+ unsigned irq = desc - irq_desc;
-+ int thrprio = desc->thr_prio;
-+ int thrmask = 1 << thrprio;
-+ int cpu = smp_processor_id();
-+ cpumask_t cpumask;
-+
-+ sigfillset(¤t->blocked);
-+ current->flags |= PF_NOFREEZE;
-+ cpumask = cpumask_of_cpu(cpu);
-+ set_cpus_allowed(current, cpumask);
-+ ipipe_setscheduler_root(current, SCHED_FIFO, 50 + thrprio);
-+
-+ while (!kthread_should_stop()) {
-+ local_irq_disable();
-+ if (!(desc->status & IRQ_SCHEDULED)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+resched:
-+ local_irq_enable();
-+ schedule();
-+ local_irq_disable();
-+ }
-+ __set_current_state(TASK_RUNNING);
-+ /*
-+ * If higher priority interrupt servers are ready to
-+ * run, reschedule immediately. We need this for the
-+ * GPIO demux IRQ handler to unmask the interrupt line
-+ * _last_, after all GPIO IRQs have run.
-+ */
-+ if (per_cpu(pending_irqthread_mask, cpu) & ~(thrmask|(thrmask-1)))
-+ goto resched;
-+ if (--per_cpu(pending_irq_count[thrprio], cpu) == 0)
-+ per_cpu(pending_irqthread_mask, cpu) &= ~thrmask;
-+ desc->status &= ~IRQ_SCHEDULED;
-+ desc->thr_handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs));
-+ local_irq_enable();
-+ }
-+ __set_current_state(TASK_RUNNING);
-+ return 0;
-+}
-
-- BUG_ON(irqs_disabled());
-+static void kick_irqd(unsigned irq, void *cookie)
-+{
-+ struct irq_desc *desc = irq_desc + irq;
-+ int thrprio = desc->thr_prio;
-+ int thrmask = 1 << thrprio;
-+ int cpu = smp_processor_id();
-+
-+ if (!(desc->status & IRQ_SCHEDULED)) {
-+ desc->status |= IRQ_SCHEDULED;
-+ per_cpu(pending_irqthread_mask, cpu) |= thrmask;
-+ ++per_cpu(pending_irq_count[thrprio], cpu);
-+ wake_up_process(desc->thread);
-+ }
-+}
-
-- local_irq_save_hw(flags);
-+int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc)
-+{
-+ if (desc->thread || !create_irq_threads)
-+ return 0;
-
-- clear_thread_flag(TIF_IRQ_SYNC);
-+ desc->thread = kthread_create(do_irqd, desc, "IRQ %d", irq);
-+ if (desc->thread == NULL) {
-+ printk(KERN_ERR "irqd: could not create IRQ thread %d!\n", irq);
-+ return -ENOMEM;
-+ }
-
-- if (ipipe_root_cpudom_var(irqpend_himask) != 0)
-- __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY);
-+ wake_up_process(desc->thread);
-
-- local_irq_restore_hw(flags);
-+ desc->thr_handler = ipipe_root_domain->irqs[irq].handler;
-+ ipipe_root_domain->irqs[irq].handler = &kick_irqd;
-+
-+ return 0;
- }
-
--void ___ipipe_sync_pipeline(unsigned long syncmask)
-+void __init ipipe_init_irq_threads(void)
- {
-- struct ipipe_domain *ipd = ipipe_current_domain;
-+ unsigned irq;
-+ struct irq_desc *desc;
-
-- if (ipd == ipipe_root_domain) {
-- if (test_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status)))
-- return;
-- }
-+ create_irq_threads = 1;
-
-- __ipipe_sync_stage(syncmask);
-+ for (irq = 0; irq < NR_IRQS; irq++) {
-+ desc = irq_desc + irq;
-+ if (desc->action != NULL ||
-+ (desc->status & IRQ_NOREQUEST) != 0)
-+ ipipe_start_irq_thread(irq, desc);
-+ }
- }
-
- EXPORT_SYMBOL(show_stack);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c 2009-05-10 23:48:28.000000000 +0200
-@@ -35,7 +35,6 @@
- #include <linux/interrupt.h>
- #include <linux/irq.h>
- #include <asm/trace.h>
--#include <asm/pda.h>
-
- static atomic_t irq_err_count;
- static spinlock_t irq_controller_lock;
-@@ -92,13 +91,8 @@
- seq_putc(p, '\n');
- skip:
- spin_unlock_irqrestore(&irq_desc[i].lock, flags);
-- } else if (i == NR_IRQS) {
-- seq_printf(p, "NMI: ");
-- for_each_online_cpu(j)
-- seq_printf(p, "%10u ", cpu_pda[j].__nmi_count);
-- seq_printf(p, " CORE Non Maskable Interrupt\n");
-+ } else if (i == NR_IRQS)
- seq_printf(p, "Err: %10u\n", atomic_read(&irq_err_count));
-- }
- return 0;
- }
-
-@@ -144,15 +138,11 @@
- #endif
- generic_handle_irq(irq);
-
--#ifndef CONFIG_IPIPE
-- /*
-- * If we're the only interrupt running (ignoring IRQ15 which
-- * is for syscalls), lower our priority to IRQ14 so that
-- * softirqs run at that level. If there's another,
-- * lower-level interrupt, irq_exit will defer softirqs to
-- * that. If the interrupt pipeline is enabled, we are already
-- * running at IRQ14 priority, so we don't need this code.
-- */
-+#ifndef CONFIG_IPIPE /* Useless and bugous over the I-pipe: IRQs are threaded. */
-+ /* If we're the only interrupt running (ignoring IRQ15 which is for
-+ syscalls), lower our priority to IRQ14 so that softirqs run at
-+ that level. If there's another, lower-level interrupt, irq_exit
-+ will defer softirqs to that. */
- CSYNC();
- pending = bfin_read_IPEND() & ~0x8000;
- other_ints = pending & (pending - 1);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c 2009-05-10 23:48:28.000000000 +0200
-@@ -20,7 +20,6 @@
- static char cmdline[256];
- static unsigned long len;
-
--#ifndef CONFIG_SMP
- static int num1 __attribute__((l1_data));
-
- void kgdb_l1_test(void) __attribute__((l1_text));
-@@ -33,8 +32,6 @@
- printk(KERN_ALERT "L1(after change) : data variable addr = 0x%p, data value is %d\n", &num1, num1);
- return ;
- }
--#endif
--
- #if L2_LENGTH
-
- static int num2 __attribute__((l2));
-@@ -62,12 +59,10 @@
- static int test_proc_output(char *buf)
- {
- kgdb_test("hello world!", 12, 0x55, 0x10);
--#ifndef CONFIG_SMP
- kgdb_l1_test();
--#endif
--#if L2_LENGTH
-+ #if L2_LENGTH
- kgdb_l2_test();
--#endif
-+ #endif
-
- return 0;
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile
---- linux-2.6.29.owrt/arch/blackfin/kernel/Makefile 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile 2009-05-10 23:48:28.000000000 +0200
-@@ -21,9 +21,5 @@
- obj-$(CONFIG_CPLB_INFO) += cplbinfo.o
- obj-$(CONFIG_MODULES) += module.o
- obj-$(CONFIG_KGDB) += kgdb.o
--obj-$(CONFIG_KGDB_TESTS) += kgdb_test.o
-+obj-$(CONFIG_KGDB_TESTCASE) += kgdb_test.o
- obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
--
--# the kgdb test puts code into L2 and without linker
--# relaxation, we need to force long calls to/from it
--CFLAGS_kgdb_test.o := -mlong-calls -O0
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c 2009-05-10 23:48:28.000000000 +0200
-@@ -45,7 +45,6 @@
- #include <asm/asm-offsets.h>
- #include <asm/dma.h>
- #include <asm/fixed_code.h>
--#include <asm/cacheflush.h>
- #include <asm/mem_map.h>
-
- #define TEXT_OFFSET 0
-@@ -241,7 +240,7 @@
-
- } else if (addr >= FIXED_CODE_START
- && addr + sizeof(tmp) <= FIXED_CODE_END) {
-- copy_from_user_page(0, 0, 0, &tmp, (const void *)(addr), sizeof(tmp));
-+ memcpy(&tmp, (const void *)(addr), sizeof(tmp));
- copied = sizeof(tmp);
-
- } else
-@@ -321,7 +320,7 @@
-
- } else if (addr >= FIXED_CODE_START
- && addr + sizeof(data) <= FIXED_CODE_END) {
-- copy_to_user_page(0, 0, 0, (void *)(addr), &data, sizeof(data));
-+ memcpy((void *)(addr), &data, sizeof(data));
- copied = sizeof(data);
-
- } else
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c 2009-05-10 23:48:28.000000000 +0200
-@@ -20,8 +20,8 @@
- * reset while the Core B bit (on dual core parts) is cleared by
- * the core reset.
- */
--__attribute__ ((__l1_text__, __noreturn__))
--static void bfin_reset(void)
-+__attribute__((l1_text))
-+static void _bfin_reset(void)
- {
- /* Wait for completion of "system" events such as cache line
- * line fills so that we avoid infinite stalls later on as
-@@ -30,11 +30,7 @@
- */
- __builtin_bfin_ssync();
-
-- /* The bootrom checks to see how it was reset and will
-- * automatically perform a software reset for us when
-- * it starts executing after the core reset.
-- */
-- if (ANOMALY_05000353 || ANOMALY_05000386) {
-+ while (1) {
- /* Initiate System software reset. */
- bfin_write_SWRST(0x7);
-
-@@ -54,11 +50,6 @@
- /* Clear System software reset */
- bfin_write_SWRST(0);
-
-- /* The BF526 ROM will crash during reset */
--#if defined(__ADSPBF522__) || defined(__ADSPBF524__) || defined(__ADSPBF526__)
-- bfin_read_SWRST();
--#endif
--
- /* Wait for the SWRST write to complete. Cannot rely on SSYNC
- * though as the System state is all reset now.
- */
-@@ -69,11 +60,22 @@
- : "a" (15 * 1)
- : "LC1", "LB1", "LT1"
- );
-- }
-
-- while (1)
- /* Issue core reset */
- asm("raise 1");
-+ }
-+}
-+
-+static void bfin_reset(void)
-+{
-+ if (ANOMALY_05000353 || ANOMALY_05000386)
-+ _bfin_reset();
-+ else
-+ /* the bootrom checks to see how it was reset and will
-+ * automatically perform a software reset for us when
-+ * it starts executing boot
-+ */
-+ asm("raise 1;");
- }
-
- __attribute__((weak))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/setup.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
-@@ -60,7 +60,7 @@
- #define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */
- #define BFIN_MEMMAP_RAM 1
- #define BFIN_MEMMAP_RESERVED 2
--static struct bfin_memmap {
-+struct bfin_memmap {
- int nr_map;
- struct bfin_memmap_entry {
- unsigned long long addr; /* start of memory segment */
-@@ -824,15 +824,7 @@
- flash_probe();
- #endif
-
-- printk(KERN_INFO "Boot Mode: %i\n", bfin_read_SYSCR() & 0xF);
--
-- /* Newer parts mirror SWRST bits in SYSCR */
--#if defined(CONFIG_BF53x) || defined(CONFIG_BF561) || \
-- defined(CONFIG_BF538) || defined(CONFIG_BF539)
- _bfin_swrst = bfin_read_SWRST();
--#else
-- _bfin_swrst = bfin_read_SYSCR();
--#endif
-
- #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
- bfin_write_SWRST(_bfin_swrst & ~DOUBLE_FAULT);
-@@ -861,7 +853,7 @@
- else if (_bfin_swrst & RESET_SOFTWARE)
- printk(KERN_NOTICE "Reset caused by Software reset\n");
-
-- printk(KERN_INFO "Blackfin support (C) 2004-2009 Analog Devices, Inc.\n");
-+ printk(KERN_INFO "Blackfin support (C) 2004-2008 Analog Devices, Inc.\n");
- if (bfin_compiled_revid() == 0xffff)
- printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU);
- else if (bfin_compiled_revid() == -1)
-@@ -889,10 +881,6 @@
- CPU, bfin_revid());
- }
-
-- /* We can't run on BF548-0.1 due to ANOMALY 05000448 */
-- if (bfin_cpuid() == 0x27de && bfin_revid() == 1)
-- panic("You can't run on this processor due to 05000448\n");
--
- printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n");
-
- printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n",
-@@ -1145,12 +1133,12 @@
- icache_size = 0;
-
- seq_printf(m, "cache size\t: %d KB(L1 icache) "
-- "%d KB(L1 dcache%s) %d KB(L2 cache)\n",
-+ "%d KB(L1 dcache-%s) %d KB(L2 cache)\n",
- icache_size, dcache_size,
- #if defined CONFIG_BFIN_WB
-- "-wb"
-+ "wb"
- #elif defined CONFIG_BFIN_WT
-- "-wt"
-+ "wt"
- #endif
- "", 0);
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/time.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/time.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c 2009-05-10 23:48:28.000000000 +0200
-@@ -134,10 +134,7 @@
-
- write_seqlock(&xtime_lock);
- #if defined(CONFIG_TICK_SOURCE_SYSTMR0) && !defined(CONFIG_IPIPE)
-- /*
-- * TIMIL0 is latched in __ipipe_grab_irq() when the I-Pipe is
-- * enabled.
-- */
-+/* FIXME: Here TIMIL0 is not set when IPIPE enabled, why? */
- if (get_gptimer_status(0) & TIMER_STATUS_TIMIL0) {
- #endif
- do_timer(1);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/kernel/traps.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c
---- linux-2.6.29.owrt/arch/blackfin/kernel/traps.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
-@@ -673,14 +673,6 @@
- verbose_printk("RTI");
- else if (opcode == 0x0012)
- verbose_printk("RTX");
-- else if (opcode == 0x0013)
-- verbose_printk("RTN");
-- else if (opcode == 0x0014)
-- verbose_printk("RTE");
-- else if (opcode == 0x0025)
-- verbose_printk("EMUEXCPT");
-- else if (opcode == 0x0040 && opcode <= 0x0047)
-- verbose_printk("STI R%i", opcode & 7);
- else if (opcode >= 0x0050 && opcode <= 0x0057)
- verbose_printk("JUMP (P%i)", opcode & 7);
- else if (opcode >= 0x0060 && opcode <= 0x0067)
-@@ -689,10 +681,6 @@
- verbose_printk("CALL (PC+P%i)", opcode & 7);
- else if (opcode >= 0x0080 && opcode <= 0x0087)
- verbose_printk("JUMP (PC+P%i)", opcode & 7);
-- else if (opcode >= 0x0090 && opcode <= 0x009F)
-- verbose_printk("RAISE 0x%x", opcode & 0xF);
-- else if (opcode >= 0x00A0 && opcode <= 0x00AF)
-- verbose_printk("EXCPT 0x%x", opcode & 0xF);
- else if ((opcode >= 0x1000 && opcode <= 0x13FF) || (opcode >= 0x1800 && opcode <= 0x1BFF))
- verbose_printk("IF !CC JUMP");
- else if ((opcode >= 0x1400 && opcode <= 0x17ff) || (opcode >= 0x1c00 && opcode <= 0x1fff))
-@@ -832,8 +820,11 @@
- decode_address(buf, (unsigned int)stack);
- printk(KERN_NOTICE " SP: [0x%p] %s\n", stack, buf);
-
-+ addr = (unsigned int *)((unsigned int)stack & ~0x3F);
-+
- /* First thing is to look for a frame pointer */
-- for (addr = (unsigned int *)((unsigned int)stack & ~0xF); addr < endstack; addr++) {
-+ for (addr = (unsigned int *)((unsigned int)stack & ~0xF), i = 0;
-+ addr < endstack; addr++, i++) {
- if (*addr & 0x1)
- continue;
- ins_addr = (unsigned short *)*addr;
-@@ -843,8 +834,7 @@
-
- if (fp) {
- /* Let's check to see if it is a frame pointer */
-- while (fp >= (addr - 1) && fp < endstack
-- && fp && ((unsigned int) fp & 0x3) == 0)
-+ while (fp >= (addr - 1) && fp < endstack && fp)
- fp = (unsigned int *)*fp;
- if (fp == 0 || fp == endstack) {
- fp = addr - 1;
-@@ -1062,9 +1052,8 @@
- char buf [150];
- struct irqaction *action;
- unsigned int i;
-- unsigned long flags = 0;
-+ unsigned long flags;
- unsigned int cpu = smp_processor_id();
-- unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
-
- verbose_printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\t\t%s\n", print_tainted());
- verbose_printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n",
-@@ -1084,22 +1073,17 @@
- }
- verbose_printk(KERN_NOTICE " EXCAUSE : 0x%lx\n",
- fp->seqstat & SEQSTAT_EXCAUSE);
-- for (i = 2; i <= 15 ; i++) {
-+ for (i = 6; i <= 15 ; i++) {
- if (fp->ipend & (1 << i)) {
-- if (i != 4) {
-- decode_address(buf, bfin_read32(EVT0 + 4*i));
-- verbose_printk(KERN_NOTICE " physical IVG%i asserted : %s\n", i, buf);
-- } else
-- verbose_printk(KERN_NOTICE " interrupts disabled\n");
-+ decode_address(buf, bfin_read32(EVT0 + 4*i));
-+ verbose_printk(KERN_NOTICE " physical IVG%i asserted : %s\n", i, buf);
- }
- }
-
- /* if no interrupts are going off, don't print this out */
- if (fp->ipend & ~0x3F) {
- for (i = 0; i < (NR_IRQS - 1); i++) {
-- if (!in_atomic)
-- spin_lock_irqsave(&irq_desc[i].lock, flags);
--
-+ spin_lock_irqsave(&irq_desc[i].lock, flags);
- action = irq_desc[i].action;
- if (!action)
- goto unlock;
-@@ -1112,8 +1096,7 @@
- }
- verbose_printk("\n");
- unlock:
-- if (!in_atomic)
-- spin_unlock_irqrestore(&irq_desc[i].lock, flags);
-+ spin_unlock_irqrestore(&irq_desc[i].lock, flags);
- }
- }
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c 2009-05-10 23:48:28.000000000 +0200
-@@ -46,7 +46,6 @@
- #include <asm/dpmc.h>
- #include <asm/bfin_sdh.h>
- #include <linux/spi/ad7877.h>
--#include <net/dsa.h>
-
- /*
- * Name the Board for the /proc/cpuinfo
-@@ -105,33 +104,10 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
--};
--
--#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
--static struct dsa_platform_data ksz8893m_switch_data = {
-- .mii_bus = &bfin_mii_bus.dev,
-- .netdev = &bfin_mac_device.dev,
-- .port_names[0] = NULL,
-- .port_names[1] = "eth%d",
-- .port_names[2] = "eth%d",
-- .port_names[3] = "cpu",
--};
--
--static struct platform_device ksz8893m_switch_device = {
-- .name = "dsa",
-- .id = 0,
-- .num_resources = 0,
-- .dev.platform_data = &ksz8893m_switch_data,
- };
- #endif
--#endif
-
- #if defined(CONFIG_MTD_M25P80) \
- || defined(CONFIG_MTD_M25P80_MODULE)
-@@ -171,20 +147,9 @@
- };
- #endif
-
--#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--#if defined(CONFIG_NET_DSA_KSZ8893M) \
-- || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
--/* SPI SWITCH CHIP */
--static struct bfin5xx_spi_chip spi_switch_info = {
-- .enable_dma = 0,
-- .bits_per_word = 8,
--};
--#endif
--#endif
--
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -261,28 +226,23 @@
- },
- #endif
-
--#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--#if defined(CONFIG_NET_DSA_KSZ8893M) \
-- || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "ksz8893m",
-- .max_speed_hz = 5000000,
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 1,
-+ .chip_select = 0,
- .platform_data = NULL,
-- .controller_data = &spi_switch_info,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
--#endif
--#endif
--
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -513,6 +473,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
- {
-@@ -526,6 +487,7 @@
- },
- #endif
- };
-+#endif
-
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -622,11 +584,7 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
--#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
-- &ksz8893m_switch_device,
--#endif
- #endif
-
- #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-@@ -674,8 +632,12 @@
- static int __init ezbrd_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
- return 0;
-@@ -687,7 +649,7 @@
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,12 +2,12 @@
- * File: include/asm-blackfin/mach-bf518/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
- /* This file shoule be up to date with:
-- * - Revision B, 02/03/2009; ADSP-BF512/BF514/BF516/BF518 Blackfin Processor Anomaly List
-+ * - ????
- */
-
- #ifndef _MACH_ANOMALY_H_
-@@ -19,8 +19,6 @@
- #define ANOMALY_05000122 (1)
- /* False Hardware Error from an Access in the Shadow of a Conditional Branch */
- #define ANOMALY_05000245 (1)
--/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */
--#define ANOMALY_05000254 (1)
- /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
- #define ANOMALY_05000265 (1)
- /* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
-@@ -55,12 +53,6 @@
- #define ANOMALY_05000443 (1)
- /* Incorrect L1 Instruction Bank B Memory Map Location */
- #define ANOMALY_05000444 (1)
--/* Incorrect Default Hysteresis Setting for RESET, NMI, and BMODE Signals */
--#define ANOMALY_05000452 (1)
--/* PWM_TRIPB Signal Not Available on PG10 */
--#define ANOMALY_05000453 (1)
--/* PPI_FS3 is Driven One Half Cycle Later Than PPI Data */
--#define ANOMALY_05000455 (1)
-
- /* Anomalies that don't exist on this proc */
- #define ANOMALY_05000125 (0)
-@@ -73,20 +65,15 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
- #define ANOMALY_05000285 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000312 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (0)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (0)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
- CH_UART0_TX,
- CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
- CH_UART1_TX,
- CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
- CONFIG_UART1_CTS_PIN,
- CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -103,8 +103,6 @@
- #define P_SPI1_SSEL4 (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(2))
- #define P_SPI1_SSEL5 (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(2))
-
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
--
- /* SPORT Port Mux */
- #define P_SPORT0_DRPRI (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(0))
- #define P_SPORT0_RSCLK (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c 2009-05-10 23:48:28.000000000 +0200
-@@ -403,13 +403,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -487,9 +482,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -585,13 +580,23 @@
- .controller_data = &ad9960_spi_chip_info,
- },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-- .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -788,6 +793,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
- {
-@@ -803,6 +809,7 @@
- },
- #endif
- };
-+#endif
-
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -913,7 +920,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -962,23 +968,27 @@
- &bfin_gpios_device,
- };
-
--static int __init cm_init(void)
-+static int __init stamp_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
- return 0;
- }
-
--arch_initcall(cm_init);
-+arch_initcall(stamp_init);
-
- void native_machine_restart(char *cmd)
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c 2009-05-10 23:48:28.000000000 +0200
-@@ -208,13 +208,8 @@
-
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -256,9 +251,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -366,13 +361,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc_dummy",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -585,6 +590,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
- {
-@@ -598,6 +604,7 @@
- },
- #endif
- };
-+#endif
-
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -713,7 +720,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -758,23 +764,27 @@
- &bfin_gpios_device,
- };
-
--static int __init ezbrd_init(void)
-+static int __init stamp_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
- return 0;
- }
-
--arch_initcall(ezbrd_init);
-+arch_initcall(stamp_init);
-
- void native_machine_restart(char *cmd)
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c 2009-05-10 23:48:28.000000000 +0200
-@@ -425,13 +425,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -835,6 +830,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
- {
-@@ -848,6 +844,7 @@
- },
- #endif
- };
-+#endif
-
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -991,7 +988,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -1052,23 +1048,27 @@
- &bfin_gpios_device,
- };
-
--static int __init ezkit_init(void)
-+static int __init stamp_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
- return 0;
- }
-
--arch_initcall(ezkit_init);
-+arch_initcall(stamp_init);
-
- void native_machine_restart(char *cmd)
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-
- void bfin_get_ether_addr(char *addr)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
- * File: include/asm-blackfin/mach-bf527/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
-@@ -167,16 +167,12 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
- #define ANOMALY_05000285 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000312 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000363 (0)
- #define ANOMALY_05000412 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
- CH_UART0_TX,
- CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
- CH_UART1_TX,
- CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
- CONFIG_UART1_CTS_PIN,
- CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -73,8 +73,6 @@
-
- #define P_HWAIT (P_DONTCARE)
-
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
--
- #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
- #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(2))
- #define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(2))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -101,9 +101,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -129,13 +129,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+ {
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -299,8 +309,10 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- };
-+#endif
-
- static const unsigned int cclk_vlev_datasheet[] =
- {
-@@ -378,8 +390,10 @@
-
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-
- ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- if (ret < 0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c 2009-05-10 23:48:28.000000000 +0200
-@@ -96,9 +96,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -138,13 +138,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc_dummy",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,126 @@
-+/*
-+ * File: arch/blackfin/mach-bf533/generic_board.c
-+ * Based on: arch/blackfin/mach-bf533/ezkit.c
-+ * Author: Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created: 2005
-+ * Description:
-+ *
-+ * Modified:
-+ * Copyright 2005 National ICT Australia (NICTA)
-+ * Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs: Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+
-+/*
-+ * Name the Board for the /proc/cpuinfo
-+ */
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+static struct platform_device rtc_device = {
-+ .name = "rtc-bfin",
-+ .id = -1,
-+};
-+#endif
-+
-+/*
-+ * Driver needs to know address, irq and flag pin.
-+ */
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+ {
-+ .start = 0x20300300,
-+ .end = 0x20300300 + 16,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = IRQ_PROG_INTB,
-+ .end = IRQ_PROG_INTB,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ }, {
-+ .start = IRQ_PF7,
-+ .end = IRQ_PF7,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+
-+static struct platform_device smc91x_device = {
-+ .name = "smc91x",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(smc91x_resources),
-+ .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+ {
-+ .start = 0xFFC00400,
-+ .end = 0xFFC004FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = IRQ_UART0_RX,
-+ .end = IRQ_UART0_RX+1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = CH_UART0_RX,
-+ .end = CH_UART0_RX+1,
-+ .flags = IORESOURCE_DMA,
-+ },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+ .name = "bfin_sir",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+ .resource = bfin_sir0_resources,
-+};
-+#endif
-+#endif
-+
-+static struct platform_device *generic_board_devices[] __initdata = {
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+ &rtc_device,
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+ &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+ &bfin_sir0_device,
-+#endif
-+#endif
-+};
-+
-+static int __init generic_board_init(void)
-+{
-+ printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+ return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices));
-+}
-+
-+arch_initcall(generic_board_init);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c 2009-05-10 23:48:28.000000000 +0200
-@@ -127,8 +127,8 @@
- #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
- /* all SPI peripherals info goes here */
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
- /*
- * CPOL (Clock Polarity)
- * 0 - Active high SCK
-@@ -152,13 +152,14 @@
- /* Notice: for blackfin, the speed_hz is the value of register
- * SPI_BAUD, not the real baudrate */
- static struct spi_board_info bfin_spi_board_info[] __initdata = {
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 2,
- .bus_num = 1,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- },
- #endif
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
-@@ -38,4 +38,9 @@
- help
- Core support for IP04/IP04 open hardware IP-PBX.
-
-+config GENERIC_BF533_BOARD
-+ bool "Generic"
-+ help
-+ Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf533/boards/Makefile
- #
-
-+obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o
- obj-$(CONFIG_BFIN533_STAMP) += stamp.o
- obj-$(CONFIG_BFIN532_IP0X) += ip0x.o
- obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -441,6 +441,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
- {
-@@ -460,6 +461,7 @@
- },
- #endif
- };
-+#endif
-
- static const unsigned int cclk_vlev_datasheet[] =
- {
-@@ -548,8 +550,10 @@
-
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-
- ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- if (ret < 0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
- * File: include/asm-blackfin/mach-bf533/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
-@@ -160,7 +160,7 @@
- #define ANOMALY_05000301 (__SILICON_REVISION__ < 6)
- /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
- #define ANOMALY_05000302 (__SILICON_REVISION__ < 5)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
- /* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */
- #define ANOMALY_05000306 (__SILICON_REVISION__ < 5)
-@@ -278,12 +278,9 @@
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -134,7 +134,7 @@
- CH_UART_TX,
- CH_UART_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -54,11 +54,14 @@
- #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PF2))
- #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PF1))
- #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PF0))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
-
- #define P_TMR2 (P_DONTCARE)
- #define P_TMR1 (P_DONTCARE)
- #define P_TMR0 (P_DONTCARE)
- #define P_TMRCLK (P_DEFINED | P_IDENT(GPIO_PF1))
-
-+
-+
-+
-+
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c 2009-05-10 23:48:28.000000000 +0200
-@@ -108,9 +108,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -160,13 +160,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-- .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 1,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = 7,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -469,13 +479,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -586,7 +591,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,739 @@
-+/*
-+ * File: arch/blackfin/mach-bf537/boards/generic_board.c
-+ * Based on: arch/blackfin/mach-bf533/boards/ezkit.c
-+ * Author: Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Modified:
-+ * Copyright 2005 National ICT Australia (NICTA)
-+ * Copyright 2004-2008 Analog Devices Inc.
-+ *
-+ * Bugs: Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/etherdevice.h>
-+#include <linux/platform_device.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/flash.h>
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+#include <linux/usb/isp1362.h>
-+#endif
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/usb/sl811.h>
-+#include <asm/dma.h>
-+#include <asm/bfin5xx_spi.h>
-+#include <asm/reboot.h>
-+#include <asm/portmux.h>
-+#include <linux/spi/ad7877.h>
-+
-+/*
-+ * Name the Board for the /proc/cpuinfo
-+ */
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+/*
-+ * Driver needs to know address, irq and flag pin.
-+ */
-+
-+#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
-+#include <linux/usb/isp1760.h>
-+static struct resource bfin_isp1760_resources[] = {
-+ [0] = {
-+ .start = 0x203C0000,
-+ .end = 0x203C0000 + 0x000fffff,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = IRQ_PF7,
-+ .end = IRQ_PF7,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct isp1760_platform_data isp1760_priv = {
-+ .is_isp1761 = 0,
-+ .port1_disable = 0,
-+ .bus_width_16 = 1,
-+ .port1_otg = 0,
-+ .analog_oc = 0,
-+ .dack_polarity_high = 0,
-+ .dreq_polarity_high = 0,
-+};
-+
-+static struct platform_device bfin_isp1760_device = {
-+ .name = "isp1760-hcd",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &isp1760_priv,
-+ },
-+ .num_resources = ARRAY_SIZE(bfin_isp1760_resources),
-+ .resource = bfin_isp1760_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
-+static struct resource bfin_pcmcia_cf_resources[] = {
-+ {
-+ .start = 0x20310000, /* IO PORT */
-+ .end = 0x20312000,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = 0x20311000, /* Attribute Memory */
-+ .end = 0x20311FFF,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = IRQ_PF4,
-+ .end = IRQ_PF4,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
-+ }, {
-+ .start = 6, /* Card Detect PF6 */
-+ .end = 6,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device bfin_pcmcia_cf_device = {
-+ .name = "bfin_cf_pcmcia",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
-+ .resource = bfin_pcmcia_cf_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+static struct platform_device rtc_device = {
-+ .name = "rtc-bfin",
-+ .id = -1,
-+};
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+ {
-+ .name = "smc91x-regs",
-+ .start = 0x20300300,
-+ .end = 0x20300300 + 16,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+
-+ .start = IRQ_PF7,
-+ .end = IRQ_PF7,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+static struct platform_device smc91x_device = {
-+ .name = "smc91x",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(smc91x_resources),
-+ .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
-+static struct resource dm9000_resources[] = {
-+ [0] = {
-+ .start = 0x203FB800,
-+ .end = 0x203FB800 + 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = 0x203FB800 + 4,
-+ .end = 0x203FB800 + 5,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [2] = {
-+ .start = IRQ_PF9,
-+ .end = IRQ_PF9,
-+ .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
-+ },
-+};
-+
-+static struct platform_device dm9000_device = {
-+ .name = "dm9000",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(dm9000_resources),
-+ .resource = dm9000_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
-+static struct resource sl811_hcd_resources[] = {
-+ {
-+ .start = 0x20340000,
-+ .end = 0x20340000,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = 0x20340004,
-+ .end = 0x20340004,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = CONFIG_USB_SL811_BFIN_IRQ,
-+ .end = CONFIG_USB_SL811_BFIN_IRQ,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+
-+#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
-+void sl811_port_power(struct device *dev, int is_on)
-+{
-+ gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
-+ gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
-+
-+}
-+#endif
-+
-+static struct sl811_platform_data sl811_priv = {
-+ .potpg = 10,
-+ .power = 250, /* == 500mA */
-+#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
-+ .port_power = &sl811_port_power,
-+#endif
-+};
-+
-+static struct platform_device sl811_hcd_device = {
-+ .name = "sl811-hcd",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &sl811_priv,
-+ },
-+ .num_resources = ARRAY_SIZE(sl811_hcd_resources),
-+ .resource = sl811_hcd_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+static struct resource isp1362_hcd_resources[] = {
-+ {
-+ .start = 0x20360000,
-+ .end = 0x20360000,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = 0x20360004,
-+ .end = 0x20360004,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
-+ .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+
-+static struct isp1362_platform_data isp1362_priv = {
-+ .sel15Kres = 1,
-+ .clknotstop = 0,
-+ .oc_enable = 0,
-+ .int_act_high = 0,
-+ .int_edge_triggered = 0,
-+ .remote_wakeup_connected = 0,
-+ .no_power_switching = 1,
-+ .power_switching_mode = 0,
-+};
-+
-+static struct platform_device isp1362_hcd_device = {
-+ .name = "isp1362-hcd",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &isp1362_priv,
-+ },
-+ .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
-+ .resource = isp1362_hcd_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+static struct platform_device bfin_mac_device = {
-+ .name = "bfin_mac",
-+};
-+#endif
-+
-+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
-+static struct resource net2272_bfin_resources[] = {
-+ {
-+ .start = 0x20300000,
-+ .end = 0x20300000 + 0x100,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = IRQ_PF7,
-+ .end = IRQ_PF7,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+
-+static struct platform_device net2272_bfin_device = {
-+ .name = "net2272",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(net2272_bfin_resources),
-+ .resource = net2272_bfin_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+/* all SPI peripherals info goes here */
-+
-+#if defined(CONFIG_MTD_M25P80) \
-+ || defined(CONFIG_MTD_M25P80_MODULE)
-+static struct mtd_partition bfin_spi_flash_partitions[] = {
-+ {
-+ .name = "bootloader(spi)",
-+ .size = 0x00020000,
-+ .offset = 0,
-+ .mask_flags = MTD_CAP_ROM
-+ }, {
-+ .name = "linux kernel(spi)",
-+ .size = 0xe0000,
-+ .offset = 0x20000
-+ }, {
-+ .name = "file system(spi)",
-+ .size = 0x700000,
-+ .offset = 0x00100000,
-+ }
-+};
-+
-+static struct flash_platform_data bfin_spi_flash_data = {
-+ .name = "m25p80",
-+ .parts = bfin_spi_flash_partitions,
-+ .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
-+ .type = "m25p64",
-+};
-+
-+/* SPI flash chip (m25p64) */
-+static struct bfin5xx_spi_chip spi_flash_chip_info = {
-+ .enable_dma = 0, /* use dma transfer with this chip*/
-+ .bits_per_word = 8,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_ADC_BF533) \
-+ || defined(CONFIG_SPI_ADC_BF533_MODULE)
-+/* SPI ADC chip */
-+static struct bfin5xx_spi_chip spi_adc_chip_info = {
-+ .enable_dma = 1, /* use dma transfer with this chip*/
-+ .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_SND_BLACKFIN_AD1836) \
-+ || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
-+static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
-+ .enable_dma = 0,
-+ .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
-+static struct bfin5xx_spi_chip ad9960_spi_chip_info = {
-+ .enable_dma = 0,
-+ .bits_per_word = 16,
-+};
-+#endif
-+
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
-+ .bits_per_word = 8,
-+};
-+#endif
-+
-+#if defined(CONFIG_PBX)
-+static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
-+ .ctl_reg = 0x4, /* send zero */
-+ .enable_dma = 0,
-+ .bits_per_word = 8,
-+ .cs_change_per_word = 1,
-+};
-+#endif
-+
-+#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
-+static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
-+ .enable_dma = 0,
-+ .bits_per_word = 16,
-+};
-+
-+static const struct ad7877_platform_data bfin_ad7877_ts_info = {
-+ .model = 7877,
-+ .vref_delay_usecs = 50, /* internal, no capacitor */
-+ .x_plate_ohms = 419,
-+ .y_plate_ohms = 486,
-+ .pressure_max = 1000,
-+ .pressure_min = 0,
-+ .stopacq_polarity = 1,
-+ .first_conversion_delay = 3,
-+ .acquisition_time = 1,
-+ .averaging = 1,
-+ .pen_down_acc_interval = 1,
-+};
-+#endif
-+
-+static struct spi_board_info bfin_spi_board_info[] __initdata = {
-+#if defined(CONFIG_MTD_M25P80) \
-+ || defined(CONFIG_MTD_M25P80_MODULE)
-+ {
-+ /* the modalias must be the same as spi device driver name */
-+ .modalias = "m25p80", /* Name of spi_driver for this device */
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0, /* Framework bus number */
-+ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
-+ .platform_data = &bfin_spi_flash_data,
-+ .controller_data = &spi_flash_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+#endif
-+
-+#if defined(CONFIG_SPI_ADC_BF533) \
-+ || defined(CONFIG_SPI_ADC_BF533_MODULE)
-+ {
-+ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
-+ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0, /* Framework bus number */
-+ .chip_select = 1, /* Framework chip select. */
-+ .platform_data = NULL, /* No spi_driver specific config */
-+ .controller_data = &spi_adc_chip_info,
-+ },
-+#endif
-+
-+#if defined(CONFIG_SND_BLACKFIN_AD1836) \
-+ || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
-+ {
-+ .modalias = "ad1836-spi",
-+ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
-+ .controller_data = &ad1836_spi_chip_info,
-+ },
-+#endif
-+#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
-+ {
-+ .modalias = "ad9960-spi",
-+ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 1,
-+ .controller_data = &ad9960_spi_chip_info,
-+ },
-+#endif
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+ {
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+#endif
-+#if defined(CONFIG_PBX)
-+ {
-+ .modalias = "fxs-spi",
-+ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 8 - CONFIG_J11_JUMPER,
-+ .controller_data = &spi_si3xxx_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "fxo-spi",
-+ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 8 - CONFIG_J19_JUMPER,
-+ .controller_data = &spi_si3xxx_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+#endif
-+#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
-+ {
-+ .modalias = "ad7877",
-+ .platform_data = &bfin_ad7877_ts_info,
-+ .irq = IRQ_PF6,
-+ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 1,
-+ .controller_data = &spi_ad7877_chip_info,
-+ },
-+#endif
-+};
-+
-+/* SPI controller data */
-+static struct bfin5xx_spi_master bfin_spi0_info = {
-+ .num_chipselect = 8,
-+ .enable_dma = 1, /* master has the ability to do dma transfer */
-+ .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
-+};
-+
-+/* SPI (0) */
-+static struct resource bfin_spi0_resource[] = {
-+ [0] = {
-+ .start = SPI0_REGBASE,
-+ .end = SPI0_REGBASE + 0xFF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = CH_SPI,
-+ .end = CH_SPI,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device bfin_spi0_device = {
-+ .name = "bfin-spi",
-+ .id = 0, /* Bus number */
-+ .num_resources = ARRAY_SIZE(bfin_spi0_resource),
-+ .resource = bfin_spi0_resource,
-+ .dev = {
-+ .platform_data = &bfin_spi0_info, /* Passed to driver */
-+ },
-+};
-+#endif /* spi master and devices */
-+
-+#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
-+static struct platform_device bfin_fb_device = {
-+ .name = "bf537-lq035",
-+};
-+#endif
-+
-+#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
-+static struct platform_device bfin_fb_adv7393_device = {
-+ .name = "bfin-adv7393",
-+};
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
-+static struct resource bfin_uart_resources[] = {
-+ {
-+ .start = 0xFFC00400,
-+ .end = 0xFFC004FF,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = 0xFFC02000,
-+ .end = 0xFFC020FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+static struct platform_device bfin_uart_device = {
-+ .name = "bfin-uart",
-+ .id = 1,
-+ .num_resources = ARRAY_SIZE(bfin_uart_resources),
-+ .resource = bfin_uart_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+ {
-+ .start = 0xFFC00400,
-+ .end = 0xFFC004FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = IRQ_UART0_RX,
-+ .end = IRQ_UART0_RX+1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = CH_UART0_RX,
-+ .end = CH_UART0_RX+1,
-+ .flags = IORESOURCE_DMA,
-+ },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+ .name = "bfin_sir",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+ .resource = bfin_sir0_resources,
-+};
-+#endif
-+#ifdef CONFIG_BFIN_SIR1
-+static struct resource bfin_sir1_resources[] = {
-+ {
-+ .start = 0xFFC02000,
-+ .end = 0xFFC020FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = IRQ_UART1_RX,
-+ .end = IRQ_UART1_RX+1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = CH_UART1_RX,
-+ .end = CH_UART1_RX+1,
-+ .flags = IORESOURCE_DMA,
-+ },
-+};
-+
-+static struct platform_device bfin_sir1_device = {
-+ .name = "bfin_sir",
-+ .id = 1,
-+ .num_resources = ARRAY_SIZE(bfin_sir1_resources),
-+ .resource = bfin_sir1_resources,
-+};
-+#endif
-+#endif
-+
-+#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
-+static struct resource bfin_twi0_resource[] = {
-+ [0] = {
-+ .start = TWI0_REGBASE,
-+ .end = TWI0_REGBASE + 0xFF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = IRQ_TWI,
-+ .end = IRQ_TWI,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static struct platform_device i2c_bfin_twi_device = {
-+ .name = "i2c-bfin-twi",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(bfin_twi0_resource),
-+ .resource = bfin_twi0_resource,
-+};
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
-+static struct platform_device bfin_sport0_uart_device = {
-+ .name = "bfin-sport-uart",
-+ .id = 0,
-+};
-+
-+static struct platform_device bfin_sport1_uart_device = {
-+ .name = "bfin-sport-uart",
-+ .id = 1,
-+};
-+#endif
-+
-+static struct platform_device *stamp_devices[] __initdata = {
-+#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
-+ &bfin_pcmcia_cf_device,
-+#endif
-+
-+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
-+ &rtc_device,
-+#endif
-+
-+#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
-+ &sl811_hcd_device,
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
-+ &isp1362_hcd_device,
-+#endif
-+
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+ &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
-+ &dm9000_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+ &bfin_mac_device,
-+#endif
-+
-+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
-+ &net2272_bfin_device,
-+#endif
-+
-+#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
-+ &bfin_isp1760_device,
-+#endif
-+
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+ &bfin_spi0_device,
-+#endif
-+
-+#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
-+ &bfin_fb_device,
-+#endif
-+
-+#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
-+ &bfin_fb_adv7393_device,
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
-+ &bfin_uart_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+ &bfin_sir0_device,
-+#endif
-+#ifdef CONFIG_BFIN_SIR1
-+ &bfin_sir1_device,
-+#endif
-+#endif
-+
-+#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
-+ &i2c_bfin_twi_device,
-+#endif
-+
-+#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
-+ &bfin_sport0_uart_device,
-+ &bfin_sport1_uart_device,
-+#endif
-+};
-+
-+static int __init stamp_init(void)
-+{
-+ printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+ platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-+#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
-+ spi_register_board_info(bfin_spi_board_info,
-+ ARRAY_SIZE(bfin_spi_board_info));
-+#endif
-+
-+ return 0;
-+}
-+
-+arch_initcall(stamp_init);
-+
-+void native_machine_restart(char *cmd)
-+{
-+ /* workaround reboot hang when booting from SPI */
-+ if ((bfin_read_SYSCR() & 0x7) == 0x3)
-+ bfin_gpio_reset_spi0_ssel1();
-+}
-+
-+#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-+void bfin_get_ether_addr(char *addr)
-+{
-+ random_ether_addr(addr);
-+ printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
-+}
-+EXPORT_SYMBOL(bfin_get_ether_addr);
-+#endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
-@@ -33,4 +33,9 @@
- help
- Board supply package for CSP Minotaur
-
-+config GENERIC_BF537_BOARD
-+ bool "Generic"
-+ help
-+ Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf537/boards/Makefile
- #
-
-+obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o
- obj-$(CONFIG_BFIN537_STAMP) += stamp.o
- obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o
- obj-$(CONFIG_BFIN537_BLUETECHNIX_TCM) += tcm_bf537.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c 2009-05-10 23:48:28.000000000 +0200
-@@ -61,13 +61,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -134,9 +129,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -156,13 +151,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+ {
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 0,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -319,7 +324,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -373,5 +377,5 @@
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c 2009-05-10 23:48:28.000000000 +0200
-@@ -198,13 +198,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -289,9 +284,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -364,13 +359,23 @@
- .controller_data = &ad9960_spi_chip_info,
- },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+ {
-+ .modalias = "spi_mmc_dummy",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = 7,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -524,7 +529,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -554,7 +558,7 @@
- #endif
- };
-
--static int __init pnav_init(void)
-+static int __init stamp_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
-@@ -565,7 +569,7 @@
- return 0;
- }
-
--arch_initcall(pnav_init);
-+arch_initcall(stamp_init);
-
- void bfin_get_ether_addr(char *addr)
- {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c 2009-05-10 23:48:28.000000000 +0200
-@@ -321,13 +321,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -1073,6 +1068,7 @@
- };
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
- #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
- {
-@@ -1106,6 +1102,7 @@
- },
- #endif
- };
-+#endif
-
- #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
- static struct platform_device bfin_sport0_uart_device = {
-@@ -1220,7 +1217,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -1288,8 +1284,12 @@
- static int __init stamp_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info,
- ARRAY_SIZE(bfin_i2c_board_info));
-+#endif
-+
- bfin_plat_nand_init();
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
- spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
-@@ -1307,7 +1307,7 @@
- {
- /* workaround reboot hang when booting from SPI */
- if ((bfin_read_SYSCR() & 0x7) == 0x3)
-- bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
-+ bfin_gpio_reset_spi0_ssel1();
- }
-
- /*
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c 2009-05-10 23:48:28.000000000 +0200
-@@ -108,9 +108,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -160,13 +160,23 @@
- },
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc_dummy",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = 7,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
-+ .mode = SPI_MODE_3,
-+ },
-+ {
-+ .modalias = "spi_mmc",
-+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
-+ .bus_num = 0,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-@@ -471,13 +481,8 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
--static struct platform_device bfin_mii_bus = {
-- .name = "bfin_mii_bus",
--};
--
- static struct platform_device bfin_mac_device = {
- .name = "bfin_mac",
-- .dev.platform_data = &bfin_mii_bus,
- };
- #endif
-
-@@ -588,7 +593,6 @@
- #endif
-
- #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
-- &bfin_mii_bus,
- &bfin_mac_device,
- #endif
-
-@@ -611,7 +615,7 @@
- &bfin_gpios_device,
- };
-
--static int __init tcm_bf537_init(void)
-+static int __init cm_bf537_init(void)
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
- platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices));
-@@ -625,7 +629,7 @@
- return 0;
- }
-
--arch_initcall(tcm_bf537_init);
-+arch_initcall(cm_bf537_init);
-
- void bfin_get_ether_addr(char *addr)
- {
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
- * File: include/asm-blackfin/mach-bf537/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
-@@ -110,7 +110,7 @@
- #define ANOMALY_05000301 (1)
- /* SSYNCs After Writes To CAN/DMA MMR Registers Are Not Always Handled Correctly */
- #define ANOMALY_05000304 (__SILICON_REVISION__ < 3)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 3)
- /* SCKELOW Bit Does Not Maintain State Through Hibernate */
- #define ANOMALY_05000307 (__SILICON_REVISION__ < 3)
-@@ -168,12 +168,9 @@
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
- CH_UART0_TX,
- CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
- CH_UART1_TX,
- CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
- CONFIG_UART1_CTS_PIN,
- CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -31,7 +31,6 @@
- #define P_PPI0_FS1 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(1))
- #define P_TACLK0 (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(1))
- #define P_TMRCLK (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(1))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
-
- #define P_PPI0_D0 (P_DEFINED | P_IDENT(GPIO_PG0) | P_FUNCT(0))
- #define P_PPI0_D1 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
- * File: include/asm-blackfin/mach-bf538/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
-@@ -120,17 +120,13 @@
- #define ANOMALY_05000198 (0)
- #define ANOMALY_05000230 (0)
- #define ANOMALY_05000263 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000353 (1)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -144,7 +144,7 @@
- CH_UART0_TX,
- CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-@@ -158,7 +158,7 @@
- CH_UART1_TX,
- CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART1_CTSRTS
- CONFIG_UART1_CTS_PIN,
- CONFIG_UART1_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -102,6 +102,5 @@
- #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PF2))
- #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PF1))
- #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PF0))
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
-
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c 2009-05-10 23:48:28.000000000 +0200
-@@ -781,6 +781,7 @@
- #endif
- #endif
-
-+#ifdef CONFIG_I2C_BOARDINFO
- static struct i2c_board_info __initdata bfin_i2c_board_info0[] = {
- };
-
-@@ -799,6 +800,7 @@
- #endif
- };
- #endif
-+#endif
-
- #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
- #include <linux/gpio_keys.h>
-@@ -954,12 +956,14 @@
- {
- printk(KERN_INFO "%s(): registering device resources\n", __func__);
-
-+#ifdef CONFIG_I2C_BOARDINFO
- i2c_register_board_info(0, bfin_i2c_board_info0,
- ARRAY_SIZE(bfin_i2c_board_info0));
- #if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
- i2c_register_board_info(1, bfin_i2c_board_info1,
- ARRAY_SIZE(bfin_i2c_board_info1));
- #endif
-+#endif
-
- platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices));
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,12 +2,12 @@
- * File: include/asm-blackfin/mach-bf548/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
- /* This file shoule be up to date with:
-- * - Revision H, 01/16/2009; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
-+ * - Revision G, 08/07/2008; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
- */
-
- #ifndef _MACH_ANOMALY_H_
-@@ -91,6 +91,8 @@
- #define ANOMALY_05000371 (__SILICON_REVISION__ < 2)
- /* USB DP/DM Data Pins May Lose State When Entering Hibernate */
- #define ANOMALY_05000372 (__SILICON_REVISION__ < 1)
-+/* Mobile DDR Operation Not Functional */
-+#define ANOMALY_05000377 (1)
- /* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */
- #define ANOMALY_05000378 (__SILICON_REVISION__ < 2)
- /* 16-Bit NAND FLASH Boot Mode Is Not Functional */
-@@ -155,22 +157,8 @@
- #define ANOMALY_05000429 (__SILICON_REVISION__ < 2)
- /* Software System Reset Corrupts PLL_LOCKCNT Register */
- #define ANOMALY_05000430 (__SILICON_REVISION__ >= 2)
--/* Incorrect Use of Stack in Lockbox Firmware During Authentication */
--#define ANOMALY_05000431 (__SILICON_REVISION__ < 3)
--/* OTP Write Accesses Not Supported */
--#define ANOMALY_05000442 (__SILICON_REVISION__ < 1)
- /* IFLUSH Instruction at End of Hardware Loop Causes Infinite Stall */
- #define ANOMALY_05000443 (1)
--/* CDMAPRIO and L2DMAPRIO Bits in the SYSCR Register Are Not Functional */
--#define ANOMALY_05000446 (1)
--/* UART IrDA Receiver Fails on Extended Bit Pulses */
--#define ANOMALY_05000447 (1)
--/* DDR Clock Duty Cycle Spec Violation (tCH, tCL) */
--#define ANOMALY_05000448 (__SILICON_REVISION__ == 1)
--/* Reduced Timing Margins on DDR Output Setup and Hold (tDS and tDH) */
--#define ANOMALY_05000449 (__SILICON_REVISION__ == 1)
--/* USB DMA Mode 1 Short Packet Data Corruption */
--#define ANOMALY_05000450 (1
-
- /* Anomalies that don't exist on this proc */
- #define ANOMALY_05000125 (0)
-@@ -183,13 +171,10 @@
- #define ANOMALY_05000263 (0)
- #define ANOMALY_05000266 (0)
- #define ANOMALY_05000273 (0)
--#define ANOMALY_05000278 (0)
--#define ANOMALY_05000305 (0)
- #define ANOMALY_05000307 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000323 (0)
- #define ANOMALY_05000363 (0)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000412 (0)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h 2009-05-10 23:48:28.000000000 +0200
-@@ -104,18 +104,6 @@
-
- #define AMGCTLVAL (V_AMBEN | V_AMCKEN)
-
--#if defined(CONFIG_BF542M)
--# define CONFIG_BF542
--#elif defined(CONFIG_BF544M)
--# define CONFIG_BF544
--#elif defined(CONFIG_BF547M)
--# define CONFIG_BF547
--#elif defined(CONFIG_BF548M)
--# define CONFIG_BF548
--#elif defined(CONFIG_BF549M)
--# define CONFIG_BF549
--#endif
--
- #if defined(CONFIG_BF542)
- # define CPU "BF542"
- # define CPUID 0x27de
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -63,7 +63,7 @@
- #define UART_ENABLE_INTS(x, v) UART_SET_IER(x, v)
- #define UART_DISABLE_INTS(x) UART_CLEAR_IER(x, 0xF)
-
--#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART2_CTSRTS)
-+#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS)
- # define CONFIG_SERIAL_BFIN_CTSRTS
-
- # ifndef CONFIG_UART0_CTS_PIN
-@@ -74,12 +74,12 @@
- # define CONFIG_UART0_RTS_PIN -1
- # endif
-
--# ifndef CONFIG_UART2_CTS_PIN
--# define CONFIG_UART2_CTS_PIN -1
-+# ifndef CONFIG_UART1_CTS_PIN
-+# define CONFIG_UART1_CTS_PIN -1
- # endif
-
--# ifndef CONFIG_UART2_RTS_PIN
--# define CONFIG_UART2_RTS_PIN -1
-+# ifndef CONFIG_UART1_RTS_PIN
-+# define CONFIG_UART1_RTS_PIN -1
- # endif
- #endif
-
-@@ -130,7 +130,7 @@
- CH_UART0_TX,
- CH_UART0_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-@@ -144,10 +144,6 @@
- CH_UART1_TX,
- CH_UART1_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-- 0,
-- 0,
--#endif
- },
- #endif
- #ifdef CONFIG_SERIAL_BFIN_UART2
-@@ -158,7 +154,7 @@
- CH_UART2_TX,
- CH_UART2_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART2_CTSRTS
- CONFIG_UART2_CTS_PIN,
- CONFIG_UART2_RTS_PIN,
- #endif
-@@ -172,10 +168,6 @@
- CH_UART3_TX,
- CH_UART3_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-- 0,
-- 0,
--#endif
- },
- #endif
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h 2009-05-10 23:48:28.000000000 +0200
-@@ -195,17 +195,17 @@
- struct gpio_port_t {
- unsigned short port_fer;
- unsigned short dummy1;
-- unsigned short data;
-+ unsigned short port_data;
- unsigned short dummy2;
-- unsigned short data_set;
-+ unsigned short port_set;
- unsigned short dummy3;
-- unsigned short data_clear;
-+ unsigned short port_clear;
- unsigned short dummy4;
-- unsigned short dir_set;
-+ unsigned short port_dir_set;
- unsigned short dummy5;
-- unsigned short dir_clear;
-+ unsigned short port_dir_clear;
- unsigned short dummy6;
-- unsigned short inen;
-+ unsigned short port_inen;
- unsigned short dummy7;
- unsigned int port_mux;
- };
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h 2009-05-10 23:48:28.000000000 +0200
-@@ -123,8 +123,8 @@
- #define IRQ_MXVR_ERROR BFIN_IRQ(51) /* MXVR Status (Error) Interrupt */
- #define IRQ_MXVR_MSG BFIN_IRQ(52) /* MXVR Message Interrupt */
- #define IRQ_MXVR_PKT BFIN_IRQ(53) /* MXVR Packet Interrupt */
--#define IRQ_EPPI1_ERROR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
--#define IRQ_EPPI2_ERROR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
-+#define IRQ_EPP1_ERROR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
-+#define IRQ_EPP2_ERROR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
- #define IRQ_UART3_ERROR BFIN_IRQ(56) /* UART3 Status (Error) Interrupt */
- #define IRQ_HOST_ERROR BFIN_IRQ(57) /* HOST Status (Error) Interrupt */
- #define IRQ_PIXC_ERROR BFIN_IRQ(59) /* PIXC Status (Error) Interrupt */
-@@ -361,8 +361,8 @@
- #define IRQ_UART2_ERR IRQ_UART2_ERROR
- #define IRQ_CAN0_ERR IRQ_CAN0_ERROR
- #define IRQ_MXVR_ERR IRQ_MXVR_ERROR
--#define IRQ_EPPI1_ERR IRQ_EPPI1_ERROR
--#define IRQ_EPPI2_ERR IRQ_EPPI2_ERROR
-+#define IRQ_EPP1_ERR IRQ_EPP1_ERROR
-+#define IRQ_EPP2_ERR IRQ_EPP2_ERROR
- #define IRQ_UART3_ERR IRQ_UART3_ERROR
- #define IRQ_HOST_ERR IRQ_HOST_ERROR
- #define IRQ_PIXC_ERR IRQ_PIXC_ERROR
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -125,7 +125,6 @@
- #define P_KEY_COL2 (P_DEFINED | P_IDENT(GPIO_PD14) | P_FUNCT(3))
- #define P_KEY_COL3 (P_DEFINED | P_IDENT(GPIO_PD15) | P_FUNCT(3))
-
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
- #define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PE0) | P_FUNCT(0))
- #define P_SPI0_MISO (P_DEFINED | P_IDENT(GPIO_PE1) | P_FUNCT(0))
- #define P_SPI0_MOSI (P_DEFINED | P_IDENT(GPIO_PE2) | P_FUNCT(0))
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c 2009-05-10 23:48:28.000000000 +0200
-@@ -105,9 +105,9 @@
- };
- #endif
-
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
--static struct bfin5xx_spi_chip mmc_spi_chip_info = {
-- .enable_dma = 0,
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
-+static struct bfin5xx_spi_chip spi_mmc_chip_info = {
-+ .enable_dma = 1,
- .bits_per_word = 8,
- };
- #endif
-@@ -155,13 +155,14 @@
- .controller_data = &ad9960_spi_chip_info,
- },
- #endif
--#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
-+#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
- {
-- .modalias = "mmc_spi",
-+ .modalias = "spi_mmc",
- .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
- .bus_num = 0,
-- .chip_select = 5,
-- .controller_data = &mmc_spi_chip_info,
-+ .chip_select = CONFIG_SPI_MMC_CS_CHAN,
-+ .platform_data = NULL,
-+ .controller_data = &spi_mmc_chip_info,
- .mode = SPI_MODE_3,
- },
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
-@@ -0,0 +1,113 @@
-+/*
-+ * File: arch/blackfin/mach-bf561/generic_board.c
-+ * Based on: arch/blackfin/mach-bf533/ezkit.c
-+ * Author: Aidan Williams <aidan@nicta.com.au>
-+ *
-+ * Created:
-+ * Description:
-+ *
-+ * Modified:
-+ * Copyright 2005 National ICT Australia (NICTA)
-+ * Copyright 2004-2006 Analog Devices Inc.
-+ *
-+ * Bugs: Enter bugs at http://blackfin.uclinux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see the file COPYING, or write
-+ * to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+
-+const char bfin_board_name[] = "UNKNOWN BOARD";
-+
-+/*
-+ * Driver needs to know address, irq and flag pin.
-+ */
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+static struct resource smc91x_resources[] = {
-+ {
-+ .start = 0x2C010300,
-+ .end = 0x2C010300 + 16,
-+ .flags = IORESOURCE_MEM,
-+ }, {
-+ .start = IRQ_PROG_INTB,
-+ .end = IRQ_PROG_INTB,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ }, {
-+ .start = IRQ_PF9,
-+ .end = IRQ_PF9,
-+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
-+ },
-+};
-+
-+static struct platform_device smc91x_device = {
-+ .name = "smc91x",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(smc91x_resources),
-+ .resource = smc91x_resources,
-+};
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+static struct resource bfin_sir0_resources[] = {
-+ {
-+ .start = 0xFFC00400,
-+ .end = 0xFFC004FF,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = IRQ_UART0_RX,
-+ .end = IRQ_UART0_RX+1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = CH_UART0_RX,
-+ .end = CH_UART0_RX+1,
-+ .flags = IORESOURCE_DMA,
-+ },
-+};
-+
-+static struct platform_device bfin_sir0_device = {
-+ .name = "bfin_sir",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(bfin_sir0_resources),
-+ .resource = bfin_sir0_resources,
-+};
-+#endif
-+#endif
-+
-+static struct platform_device *generic_board_devices[] __initdata = {
-+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-+ &smc91x_device,
-+#endif
-+
-+#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
-+#ifdef CONFIG_BFIN_SIR0
-+ &bfin_sir0_device,
-+#endif
-+#endif
-+};
-+
-+static int __init generic_board_init(void)
-+{
-+ printk(KERN_INFO "%s(): registering device resources\n", __func__);
-+ return platform_add_devices(generic_board_devices,
-+ ARRAY_SIZE(generic_board_devices));
-+}
-+
-+arch_initcall(generic_board_init);
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
-@@ -19,4 +19,9 @@
- help
- CM-BF561 support for EVAL- and DEV-Board.
-
-+config GENERIC_BF561_BOARD
-+ bool "Generic"
-+ help
-+ Generic or Custom board support.
-+
- endchoice
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
-@@ -2,6 +2,7 @@
- # arch/blackfin/mach-bf561/boards/Makefile
- #
-
-+obj-$(CONFIG_GENERIC_BF561_BOARD) += generic_board.o
- obj-$(CONFIG_BFIN561_BLUETECHNIX_CM) += cm_bf561.o
- obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o
- obj-$(CONFIG_BFIN561_TEPLA) += tepla.o
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
-@@ -2,7 +2,7 @@
- * File: include/asm-blackfin/mach-bf561/anomaly.h
- * Bugs: Enter bugs at http://blackfin.uclinux.org/
- *
-- * Copyright (C) 2004-2009 Analog Devices Inc.
-+ * Copyright (C) 2004-2008 Analog Devices Inc.
- * Licensed under the GPL-2 or later.
- */
-
-@@ -224,7 +224,7 @@
- #define ANOMALY_05000301 (1)
- /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
- #define ANOMALY_05000302 (1)
--/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
-+/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
- #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
- /* SCKELOW Bit Does Not Maintain State Through Hibernate */
- #define ANOMALY_05000307 (__SILICON_REVISION__ < 5)
-@@ -283,11 +283,8 @@
- #define ANOMALY_05000273 (0)
- #define ANOMALY_05000311 (0)
- #define ANOMALY_05000353 (1)
--#define ANOMALY_05000380 (0)
- #define ANOMALY_05000386 (1)
- #define ANOMALY_05000432 (0)
- #define ANOMALY_05000435 (0)
--#define ANOMALY_05000447 (0)
--#define ANOMALY_05000448 (0)
-
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
-@@ -134,7 +134,7 @@
- CH_UART_TX,
- CH_UART_RX,
- #endif
--#ifdef CONFIG_SERIAL_BFIN_CTSRTS
-+#ifdef CONFIG_BFIN_UART0_CTSRTS
- CONFIG_UART0_CTS_PIN,
- CONFIG_UART0_RTS_PIN,
- #endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h 2009-05-10 23:48:28.000000000 +0200
-@@ -1106,8 +1106,6 @@
- #define DLEN_8 0x0 /* PPI Data Length mask for DLEN=8 */
- #define DLEN(x) (((x-9) & 0x07) << 11) /* PPI Data Length (only works for x=10-->x=16) */
- #define POL 0x0000C000 /* PPI Signal Polarities */
--#define POLC 0x4000 /* PPI Clock Polarity */
--#define POLS 0x8000 /* PPI Frame Sync Polarity */
-
- /* PPI_STATUS Masks */
- #define FLD 0x00000400 /* Field Indicator */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h
---- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
-@@ -85,6 +85,5 @@
- #define P_SPI0_MOSI (P_DONTCARE)
- #define P_SPI0_MISO (P_DONTCARE)
- #define P_SPI0_SCK (P_DONTCARE)
--#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
-
- #endif /* _MACH_PORTMUX_H_ */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c
---- linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c 2009-05-10 23:48:28.000000000 +0200
-@@ -62,12 +62,3 @@
- #if (CONFIG_BOOT_LOAD & 0x3)
- # error "The kernel load address must be 4 byte aligned"
- #endif
--
--/* The entire kernel must be able to make a 24bit pcrel call to start of L1 */
--#if ((0xffffffff - L1_CODE_START + 1) + CONFIG_BOOT_LOAD) > 0x1000000
--# error "The kernel load address is too high; keep it below 10meg for safety"
--#endif
--
--#if ANOMALY_05000448
--# error You are using a part with anomaly 05000448, this issue causes random memory read/write failures - that means random crashes.
--#endif
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S 2009-05-10 23:48:28.000000000 +0200
-@@ -66,33 +66,11 @@
-
- /* Invalidate all instruction cache lines assocoiated with this memory area */
- ENTRY(_blackfin_icache_flush_range)
--/*
-- * Walkaround to avoid loading wrong instruction after invalidating icache
-- * and following sequence is met.
-- *
-- * 1) One instruction address is cached in the instruction cache.
-- * 2) This instruction in SDRAM is changed.
-- * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
-- * 4) This instruction is executed again, but the old one is loaded.
-- */
-- P0 = R0;
-- IFLUSH[P0];
- do_flush IFLUSH, , nop
- ENDPROC(_blackfin_icache_flush_range)
-
- /* Flush all cache lines assocoiated with this area of memory. */
- ENTRY(_blackfin_icache_dcache_flush_range)
--/*
-- * Walkaround to avoid loading wrong instruction after invalidating icache
-- * and following sequence is met.
-- *
-- * 1) One instruction address is cached in the instruction cache.
-- * 2) This instruction in SDRAM is changed.
-- * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
-- * 4) This instruction is executed again, but the old one is loaded.
-- */
-- P0 = R0;
-- IFLUSH[P0];
- do_flush FLUSH, IFLUSH
- ENDPROC(_blackfin_icache_dcache_flush_range)
-
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c
---- linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c 2009-05-10 23:48:28.000000000 +0200
-@@ -14,10 +14,9 @@
- #include <asm/clocks.h>
- #include <asm/mem_init.h>
-
--#define SDGCTL_WIDTH (1 << 31) /* SDRAM external data path width */
- #define PLL_CTL_VAL \
- (((CONFIG_VCO_MULT & 63) << 9) | CLKIN_HALF | \
-- (PLL_BYPASS << 8) | (ANOMALY_05000305 ? 0 : 0x8000))
-+ (PLL_BYPASS << 8) | (ANOMALY_05000265 ? 0x8000 : 0))
-
- __attribute__((l1_text))
- static void do_sync(void)
-@@ -77,7 +76,7 @@
- bfin_write_PLL_DIV(CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
- #ifdef EBIU_SDGCTL
- bfin_write_EBIU_SDRRC(mem_SDRRC);
-- bfin_write_EBIU_SDGCTL((bfin_read_EBIU_SDGCTL() & SDGCTL_WIDTH) | mem_SDGCTL);
-+ bfin_write_EBIU_SDGCTL(mem_SDGCTL);
- #else
- bfin_write_EBIU_RSTCTL(bfin_read_EBIU_RSTCTL() & ~(SRREQ));
- do_sync();
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S 2009-05-10 23:48:28.000000000 +0200
-@@ -376,22 +376,10 @@
- #endif
-
- #ifdef PINT0_ASSIGN
-- PM_SYS_PUSH(PINT0_MASK_SET)
-- PM_SYS_PUSH(PINT1_MASK_SET)
-- PM_SYS_PUSH(PINT2_MASK_SET)
-- PM_SYS_PUSH(PINT3_MASK_SET)
- PM_SYS_PUSH(PINT0_ASSIGN)
- PM_SYS_PUSH(PINT1_ASSIGN)
- PM_SYS_PUSH(PINT2_ASSIGN)
- PM_SYS_PUSH(PINT3_ASSIGN)
-- PM_SYS_PUSH(PINT0_INVERT_SET)
-- PM_SYS_PUSH(PINT1_INVERT_SET)
-- PM_SYS_PUSH(PINT2_INVERT_SET)
-- PM_SYS_PUSH(PINT3_INVERT_SET)
-- PM_SYS_PUSH(PINT0_EDGE_SET)
-- PM_SYS_PUSH(PINT1_EDGE_SET)
-- PM_SYS_PUSH(PINT2_EDGE_SET)
-- PM_SYS_PUSH(PINT3_EDGE_SET)
- #endif
-
- PM_SYS_PUSH(EBIU_AMBCTL0)
-@@ -726,22 +714,10 @@
- PM_SYS_POP(EBIU_AMBCTL0)
-
- #ifdef PINT0_ASSIGN
-- PM_SYS_POP(PINT3_EDGE_SET)
-- PM_SYS_POP(PINT2_EDGE_SET)
-- PM_SYS_POP(PINT1_EDGE_SET)
-- PM_SYS_POP(PINT0_EDGE_SET)
-- PM_SYS_POP(PINT3_INVERT_SET)
-- PM_SYS_POP(PINT2_INVERT_SET)
-- PM_SYS_POP(PINT1_INVERT_SET)
-- PM_SYS_POP(PINT0_INVERT_SET)
- PM_SYS_POP(PINT3_ASSIGN)
- PM_SYS_POP(PINT2_ASSIGN)
- PM_SYS_POP(PINT1_ASSIGN)
- PM_SYS_POP(PINT0_ASSIGN)
-- PM_SYS_POP(PINT3_MASK_SET)
-- PM_SYS_POP(PINT2_MASK_SET)
-- PM_SYS_POP(PINT1_MASK_SET)
-- PM_SYS_POP(PINT0_MASK_SET)
- #endif
-
- #ifdef SICA_IWR1
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S 2009-05-10 23:48:28.000000000 +0200
-@@ -151,6 +151,13 @@
- jump.s _bfin_return_from_exception;
- ENDPROC(_ex_syscall)
-
-+ENTRY(_ex_soft_bp)
-+ r7 = retx;
-+ r7 += -2;
-+ retx = r7;
-+ jump.s _ex_trap_c;
-+ENDPROC(_ex_soft_bp)
-+
- ENTRY(_ex_single_step)
- /* If we just returned from an interrupt, the single step event is
- for the RTI instruction. */
-@@ -600,19 +607,6 @@
- p2 = [p2];
-
- [p2+(TASK_THREAD+THREAD_KSP)] = sp;
--#ifdef CONFIG_IPIPE
-- r0 = sp;
-- SP += -12;
-- call ___ipipe_syscall_root;
-- SP += 12;
-- cc = r0 == 1;
-- if cc jump .Lsyscall_really_exit;
-- cc = r0 == -1;
-- if cc jump .Lresume_userspace;
-- r3 = [sp + PT_R3];
-- r4 = [sp + PT_R4];
-- p0 = [sp + PT_ORIG_P0];
--#endif /* CONFIG_IPIPE */
-
- /* Check the System Call */
- r7 = __NR_syscall;
-@@ -667,17 +661,6 @@
- r7 = r7 & r4;
-
- .Lsyscall_resched:
--#ifdef CONFIG_IPIPE
-- cc = BITTST(r7, TIF_IRQ_SYNC);
-- if !cc jump .Lsyscall_no_irqsync;
-- [--sp] = reti;
-- r0 = [sp++];
-- SP += -12;
-- call ___ipipe_sync_root;
-- SP += 12;
-- jump .Lresume_userspace_1;
--.Lsyscall_no_irqsync:
--#endif
- cc = BITTST(r7, TIF_NEED_RESCHED);
- if !cc jump .Lsyscall_sigpending;
-
-@@ -709,10 +692,6 @@
- .Lsyscall_really_exit:
- r5 = [sp + PT_RESERVED];
- rets = r5;
--#ifdef CONFIG_IPIPE
-- [--sp] = reti;
-- r5 = [sp++];
--#endif /* CONFIG_IPIPE */
- rts;
- ENDPROC(_system_call)
-
-@@ -799,15 +778,6 @@
- ENDPROC(_resume)
-
- ENTRY(_ret_from_exception)
--#ifdef CONFIG_IPIPE
-- [--sp] = rets;
-- SP += -12;
-- call ___ipipe_check_root
-- SP += 12
-- rets = [sp++];
-- cc = r0 == 0;
-- if cc jump 4f; /* not on behalf of Linux, get out */
--#endif /* CONFIG_IPIPE */
- p2.l = lo(IPEND);
- p2.h = hi(IPEND);
-
-@@ -864,28 +834,6 @@
- rts;
- ENDPROC(_ret_from_exception)
-
--#ifdef CONFIG_IPIPE
--
--_sync_root_irqs:
-- [--sp] = reti; /* Reenable interrupts */
-- r0 = [sp++];
-- jump.l ___ipipe_sync_root
--
--_resume_kernel_from_int:
-- r0.l = _sync_root_irqs
-- r0.h = _sync_root_irqs
-- [--sp] = rets;
-- [--sp] = ( r7:4, p5:3 );
-- SP += -12;
-- call ___ipipe_call_irqtail
-- SP += 12;
-- ( r7:4, p5:3 ) = [sp++];
-- rets = [sp++];
-- rts
--#else
--#define _resume_kernel_from_int 2f
--#endif
--
- ENTRY(_return_from_int)
- /* If someone else already raised IRQ 15, do nothing. */
- csync;
-@@ -907,7 +855,7 @@
- r1 = r0 - r1;
- r2 = r0 & r1;
- cc = r2 == 0;
-- if !cc jump _resume_kernel_from_int;
-+ if !cc jump 2f;
-
- /* Lower the interrupt level to 15. */
- p0.l = lo(EVT15);
-@@ -1139,7 +1087,7 @@
- * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined
- */
- .long _ex_syscall /* 0x00 - User Defined - Linux Syscall */
-- .long _ex_trap_c /* 0x01 - User Defined - Software breakpoint */
-+ .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */
- #ifdef CONFIG_KGDB
- .long _ex_trap_c /* 0x02 - User Defined - KGDB initial connection
- and break signal trap */
-diff -ruN --exclude='*.rej' --exclude='*.orig' --exclude=Documentation --exclude='*_defconfig' --exclude='*.ppm' --exclude='*bnx2_fw*' linux-2.6.29.owrt/arch/blackfin/mach-common/head.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S
---- linux-2.6.29.owrt/arch/blackfin/mach-common/head.S 2009-05-10 22:04:40.000000000 +0200
-+++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S 2009-05-10 23:48:28.000000000 +0200
-@@ -17,19 +17,6 @@
-
- __INIT
-
--ENTRY(__init_clear_bss)
-- r2 = r2 - r1;
-- cc = r2 == 0;
-- if cc jump .L_bss_done;
-- r2 >>= 2;
-- p1 = r1;
-- p2 = r2;
-- lsetup (1f, 1f) lc0 = p2;
--1: [p1++] = r0;
--.L_bss_done:
-- rts;
--ENDPROC(__init_clear_bss)
--
- #define INITIAL_STACK (L1_SCRATCH_START + L1_SCRATCH_LENGTH - 12)
-
- ENTRY(__start)
-@@ -157,35 +144,6 @@
- call _init_early_exception_vectors;
- #endif
-
--