aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-26 15:43:07 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-26 15:43:07 -0400
commit3b3dd79d6a8b3debd0291465fc8cd9caf765d545 (patch)
treef60ac6ac5524d1042881e002bf04246af5c623ad /arch
parentc3ae1f33569e06984f0426a7834ff63251d44d84 (diff)
parent7832bb5d450aefa45b6dac3b3140eade66bb12ad (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: Blackfin: irq: remove IRQF_DISABLED Blackfin: boards: clean up i2c_board_info Blackfin: drop unused Kconfig symbol Blackfin: bf537-stamp: register ASoC EVAL-ADAU1373 board driver Blackfin: bf537-stamp: Register adav801 codec and ASoC machine driver Blackfin: bf537-stamp: register adau1701 codec and asoc machine driver Blackfin: merge asm/mutex.h into kbuild too Blackfin: bf537-stamp: fix ad73311 codec config macro Blackfin: bf537-stamp: fix ad1836 name Blackfin: kgdb_test: rework code to avoid -O0 usage Blackfin: fix sparse warnings in copy_to/from_user Blackfin: bf548-ezkit: update defconfig Blackfin: SMP: fix scheduling deadlock Blackfin: H8606: fixup bogus ioresource init Blackfin: SMP: convert to common asm-generic/atomic.h
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/Kconfig4
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig13
-rw-r--r--arch/blackfin/include/asm/Kbuild1
-rw-r--r--arch/blackfin/include/asm/atomic.h104
-rw-r--r--arch/blackfin/include/asm/mutex.h1
-rw-r--r--arch/blackfin/include/asm/uaccess.h6
-rw-r--r--arch/blackfin/kernel/Makefile2
-rw-r--r--arch/blackfin/kernel/kgdb_test.c3
-rw-r--r--arch/blackfin/kernel/time-ts.c6
-rw-r--r--arch/blackfin/kernel/time.c1
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c3
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537e.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537u.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c88
-rw-r--r--arch/blackfin/mach-bf537/boards/tcm_bf537.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/cm_bf561.c2
-rw-r--r--arch/blackfin/mach-bf561/smp.c2
-rw-r--r--arch/blackfin/mach-common/smp.c7
18 files changed, 85 insertions, 164 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index c7476295de80..abe5a9e85148 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -248,10 +248,6 @@ config HOTPLUG_CPU
248 depends on SMP && HOTPLUG 248 depends on SMP && HOTPLUG
249 default y 249 default y
250 250
251config HAVE_LEGACY_PER_CPU_AREA
252 def_bool y
253 depends on SMP
254
255config BF_REV_MIN 251config BF_REV_MIN
256 int 252 int
257 default 0 if (BF51x || BF52x || (BF54x && !BF54xM)) 253 default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index 56151b5dbc44..0e6d841b5d01 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -4,7 +4,6 @@ CONFIG_IKCONFIG=y
4CONFIG_IKCONFIG_PROC=y 4CONFIG_IKCONFIG_PROC=y
5CONFIG_LOG_BUF_SHIFT=14 5CONFIG_LOG_BUF_SHIFT=14
6CONFIG_BLK_DEV_INITRD=y 6CONFIG_BLK_DEV_INITRD=y
7# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
8CONFIG_EXPERT=y 7CONFIG_EXPERT=y
9# CONFIG_SYSCTL_SYSCALL is not set 8# CONFIG_SYSCTL_SYSCALL is not set
10# CONFIG_ELF_CORE is not set 9# CONFIG_ELF_CORE is not set
@@ -40,7 +39,6 @@ CONFIG_EBIU_MODEVAL=0x1
40CONFIG_EBIU_FCTLVAL=0x6 39CONFIG_EBIU_FCTLVAL=0x6
41CONFIG_BINFMT_FLAT=y 40CONFIG_BINFMT_FLAT=y
42CONFIG_BINFMT_ZFLAT=y 41CONFIG_BINFMT_ZFLAT=y
43CONFIG_PM=y
44CONFIG_NET=y 42CONFIG_NET=y
45CONFIG_PACKET=y 43CONFIG_PACKET=y
46CONFIG_UNIX=y 44CONFIG_UNIX=y
@@ -55,7 +53,6 @@ CONFIG_IP_PNP=y
55CONFIG_CAN=m 53CONFIG_CAN=m
56CONFIG_CAN_RAW=m 54CONFIG_CAN_RAW=m
57CONFIG_CAN_BCM=m 55CONFIG_CAN_BCM=m
58CONFIG_CAN_DEV=m
59CONFIG_CAN_BFIN=m 56CONFIG_CAN_BFIN=m
60CONFIG_IRDA=m 57CONFIG_IRDA=m
61CONFIG_IRLAN=m 58CONFIG_IRLAN=m
@@ -67,7 +64,6 @@ CONFIG_BFIN_SIR3=y
67CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 64CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
68CONFIG_FW_LOADER=m 65CONFIG_FW_LOADER=m
69CONFIG_MTD=y 66CONFIG_MTD=y
70CONFIG_MTD_PARTITIONS=y
71CONFIG_MTD_CMDLINE_PARTS=y 67CONFIG_MTD_CMDLINE_PARTS=y
72CONFIG_MTD_CHAR=y 68CONFIG_MTD_CHAR=y
73CONFIG_MTD_BLOCK=y 69CONFIG_MTD_BLOCK=y
@@ -105,12 +101,12 @@ CONFIG_INPUT_TOUCHSCREEN=y
105CONFIG_TOUCHSCREEN_AD7877=m 101CONFIG_TOUCHSCREEN_AD7877=m
106CONFIG_INPUT_MISC=y 102CONFIG_INPUT_MISC=y
107# CONFIG_SERIO is not set 103# CONFIG_SERIO is not set
108# CONFIG_DEVKMEM is not set 104# CONFIG_LEGACY_PTYS is not set
109CONFIG_BFIN_JTAG_COMM=m 105CONFIG_BFIN_JTAG_COMM=m
106# CONFIG_DEVKMEM is not set
110CONFIG_SERIAL_BFIN=y 107CONFIG_SERIAL_BFIN=y
111CONFIG_SERIAL_BFIN_CONSOLE=y 108CONFIG_SERIAL_BFIN_CONSOLE=y
112CONFIG_SERIAL_BFIN_UART1=y 109CONFIG_SERIAL_BFIN_UART1=y
113# CONFIG_LEGACY_PTYS is not set
114# CONFIG_HW_RANDOM is not set 110# CONFIG_HW_RANDOM is not set
115CONFIG_I2C=y 111CONFIG_I2C=y
116CONFIG_I2C_CHARDEV=y 112CONFIG_I2C_CHARDEV=y
@@ -163,6 +159,7 @@ CONFIG_USB_DEVICEFS=y
163CONFIG_USB_OTG_BLACKLIST_HUB=y 159CONFIG_USB_OTG_BLACKLIST_HUB=y
164CONFIG_USB_MON=y 160CONFIG_USB_MON=y
165CONFIG_USB_MUSB_HDRC=y 161CONFIG_USB_MUSB_HDRC=y
162CONFIG_USB_MUSB_BLACKFIN=y
166CONFIG_USB_STORAGE=y 163CONFIG_USB_STORAGE=y
167CONFIG_MMC=y 164CONFIG_MMC=y
168CONFIG_MMC_BLOCK=m 165CONFIG_MMC_BLOCK=m
@@ -185,8 +182,6 @@ CONFIG_NFS_FS=m
185CONFIG_NFS_V3=y 182CONFIG_NFS_V3=y
186CONFIG_NFSD=m 183CONFIG_NFSD=m
187CONFIG_NFSD_V3=y 184CONFIG_NFSD_V3=y
188CONFIG_SMB_FS=m
189CONFIG_SMB_NLS_DEFAULT=y
190CONFIG_CIFS=y 185CONFIG_CIFS=y
191CONFIG_NLS_CODEPAGE_437=m 186CONFIG_NLS_CODEPAGE_437=m
192CONFIG_NLS_CODEPAGE_936=m 187CONFIG_NLS_CODEPAGE_936=m
@@ -196,7 +191,6 @@ CONFIG_DEBUG_KERNEL=y
196CONFIG_DEBUG_SHIRQ=y 191CONFIG_DEBUG_SHIRQ=y
197CONFIG_DETECT_HUNG_TASK=y 192CONFIG_DETECT_HUNG_TASK=y
198CONFIG_DEBUG_INFO=y 193CONFIG_DEBUG_INFO=y
199# CONFIG_RCU_CPU_STALL_DETECTOR is not set
200# CONFIG_FTRACE is not set 194# CONFIG_FTRACE is not set
201CONFIG_DEBUG_MMRS=y 195CONFIG_DEBUG_MMRS=y
202CONFIG_DEBUG_HWERR=y 196CONFIG_DEBUG_HWERR=y
@@ -206,5 +200,4 @@ CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE=y
206CONFIG_EARLY_PRINTK=y 200CONFIG_EARLY_PRINTK=y
207CONFIG_CPLB_INFO=y 201CONFIG_CPLB_INFO=y
208CONFIG_BFIN_PSEUDODBG_INSNS=y 202CONFIG_BFIN_PSEUDODBG_INSNS=y
209CONFIG_CRYPTO=y
210# CONFIG_CRYPTO_ANSI_CPRNG is not set 203# CONFIG_CRYPTO_ANSI_CPRNG is not set
diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild
index 7a075eaf6041..5a0625aad6a0 100644
--- a/arch/blackfin/include/asm/Kbuild
+++ b/arch/blackfin/include/asm/Kbuild
@@ -21,6 +21,7 @@ generic-y += local64.h
21generic-y += local.h 21generic-y += local.h
22generic-y += mman.h 22generic-y += mman.h
23generic-y += msgbuf.h 23generic-y += msgbuf.h
24generic-y += mutex.h
24generic-y += param.h 25generic-y += param.h
25generic-y += percpu.h 26generic-y += percpu.h
26generic-y += pgalloc.h 27generic-y += pgalloc.h
diff --git a/arch/blackfin/include/asm/atomic.h b/arch/blackfin/include/asm/atomic.h
index 135225696fd2..54c6e2887e9f 100644
--- a/arch/blackfin/include/asm/atomic.h
+++ b/arch/blackfin/include/asm/atomic.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright 2004-2009 Analog Devices Inc. 2 * Copyright 2004-2011 Analog Devices Inc.
3 * 3 *
4 * Licensed under the GPL-2 or later. 4 * Licensed under the GPL-2 or later.
5 */ 5 */
@@ -7,111 +7,27 @@
7#ifndef __ARCH_BLACKFIN_ATOMIC__ 7#ifndef __ARCH_BLACKFIN_ATOMIC__
8#define __ARCH_BLACKFIN_ATOMIC__ 8#define __ARCH_BLACKFIN_ATOMIC__
9 9
10#ifndef CONFIG_SMP 10#ifdef CONFIG_SMP
11# include <asm-generic/atomic.h>
12#else
13 11
14#include <linux/types.h> 12#include <linux/linkage.h>
15#include <asm/system.h> /* local_irq_XXX() */
16
17/*
18 * Atomic operations that C can't guarantee us. Useful for
19 * resource counting etc..
20 */
21
22#define ATOMIC_INIT(i) { (i) }
23#define atomic_set(v, i) (((v)->counter) = i)
24
25#define atomic_read(v) __raw_uncached_fetch_asm(&(v)->counter)
26 13
27asmlinkage int __raw_uncached_fetch_asm(const volatile int *ptr); 14asmlinkage int __raw_uncached_fetch_asm(const volatile int *ptr);
28
29asmlinkage int __raw_atomic_update_asm(volatile int *ptr, int value); 15asmlinkage int __raw_atomic_update_asm(volatile int *ptr, int value);
30
31asmlinkage int __raw_atomic_clear_asm(volatile int *ptr, int value); 16asmlinkage int __raw_atomic_clear_asm(volatile int *ptr, int value);
32
33asmlinkage int __raw_atomic_set_asm(volatile int *ptr, int value); 17asmlinkage int __raw_atomic_set_asm(volatile int *ptr, int value);
34
35asmlinkage int __raw_atomic_xor_asm(volatile int *ptr, int value); 18asmlinkage int __raw_atomic_xor_asm(volatile int *ptr, int value);
36
37asmlinkage int __raw_atomic_test_asm(const volatile int *ptr, int value); 19asmlinkage int __raw_atomic_test_asm(const volatile int *ptr, int value);
38 20
39static inline void atomic_add(int i, atomic_t *v) 21#define atomic_read(v) __raw_uncached_fetch_asm(&(v)->counter)
40{
41 __raw_atomic_update_asm(&v->counter, i);
42}
43
44static inline void atomic_sub(int i, atomic_t *v)
45{
46 __raw_atomic_update_asm(&v->counter, -i);
47}
48
49static inline int atomic_add_return(int i, atomic_t *v)
50{
51 return __raw_atomic_update_asm(&v->counter, i);
52}
53
54static inline int atomic_sub_return(int i, atomic_t *v)
55{
56 return __raw_atomic_update_asm(&v->counter, -i);
57}
58 22
59static inline void atomic_inc(volatile atomic_t *v) 23#define atomic_add_return(i, v) __raw_atomic_update_asm(&(v)->counter, i)
60{ 24#define atomic_sub_return(i, v) __raw_atomic_update_asm(&(v)->counter, -(i))
61 __raw_atomic_update_asm(&v->counter, 1);
62}
63
64static inline void atomic_dec(volatile atomic_t *v)
65{
66 __raw_atomic_update_asm(&v->counter, -1);
67}
68
69static inline void atomic_clear_mask(int mask, atomic_t *v)
70{
71 __raw_atomic_clear_asm(&v->counter, mask);
72}
73
74static inline void atomic_set_mask(int mask, atomic_t *v)
75{
76 __raw_atomic_set_asm(&v->counter, mask);
77}
78
79/* Atomic operations are already serializing */
80#define smp_mb__before_atomic_dec() barrier()
81#define smp_mb__after_atomic_dec() barrier()
82#define smp_mb__before_atomic_inc() barrier()
83#define smp_mb__after_atomic_inc() barrier()
84
85#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
86#define atomic_dec_return(v) atomic_sub_return(1,(v))
87#define atomic_inc_return(v) atomic_add_return(1,(v))
88
89#define atomic_cmpxchg(v, o, n) ((int)cmpxchg(&((v)->counter), (o), (n)))
90#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
91
92#define __atomic_add_unless(v, a, u) \
93({ \
94 int c, old; \
95 c = atomic_read(v); \
96 while (c != (u) && (old = atomic_cmpxchg((v), c, c + (a))) != c) \
97 c = old; \
98 c; \
99})
100
101/*
102 * atomic_inc_and_test - increment and test
103 * @v: pointer of type atomic_t
104 *
105 * Atomically increments @v by 1
106 * and returns true if the result is zero, or false for all
107 * other cases.
108 */
109#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
110
111#define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0)
112#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
113 25
26#define atomic_clear_mask(m, v) __raw_atomic_clear_asm(&(v)->counter, m)
27#define atomic_set_mask(m, v) __raw_atomic_set_asm(&(v)->counter, m)
114 28
115#endif 29#endif
116 30
31#include <asm-generic/atomic.h>
32
117#endif 33#endif
diff --git a/arch/blackfin/include/asm/mutex.h b/arch/blackfin/include/asm/mutex.h
deleted file mode 100644
index ff6101aa2c71..000000000000
--- a/arch/blackfin/include/asm/mutex.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-generic/mutex-dec.h>
diff --git a/arch/blackfin/include/asm/uaccess.h b/arch/blackfin/include/asm/uaccess.h
index 1c0d190adaef..5cc111502822 100644
--- a/arch/blackfin/include/asm/uaccess.h
+++ b/arch/blackfin/include/asm/uaccess.h
@@ -195,17 +195,17 @@ static inline unsigned long __must_check
195copy_from_user(void *to, const void __user *from, unsigned long n) 195copy_from_user(void *to, const void __user *from, unsigned long n)
196{ 196{
197 if (access_ok(VERIFY_READ, from, n)) 197 if (access_ok(VERIFY_READ, from, n))
198 memcpy(to, from, n); 198 memcpy(to, (const void __force *)from, n);
199 else 199 else
200 return n; 200 return n;
201 return 0; 201 return 0;
202} 202}
203 203
204static inline unsigned long __must_check 204static inline unsigned long __must_check
205copy_to_user(void *to, const void __user *from, unsigned long n) 205copy_to_user(void __user *to, const void *from, unsigned long n)
206{ 206{
207 if (access_ok(VERIFY_WRITE, to, n)) 207 if (access_ok(VERIFY_WRITE, to, n))
208 memcpy(to, from, n); 208 memcpy((void __force *)to, from, n);
209 else 209 else
210 return n; 210 return n;
211 return 0; 211 return 0;
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile
index b7bdc42fe1a3..1f88edd4572a 100644
--- a/arch/blackfin/kernel/Makefile
+++ b/arch/blackfin/kernel/Makefile
@@ -38,6 +38,6 @@ obj-$(CONFIG_PERF_EVENTS) += perf_event.o
38 38
39# the kgdb test puts code into L2 and without linker 39# the kgdb test puts code into L2 and without linker
40# relaxation, we need to force long calls to/from it 40# relaxation, we need to force long calls to/from it
41CFLAGS_kgdb_test.o := -mlong-calls -O0 41CFLAGS_kgdb_test.o := -mlong-calls
42 42
43obj-$(CONFIG_DEBUG_MMRS) += debug-mmrs.o 43obj-$(CONFIG_DEBUG_MMRS) += debug-mmrs.o
diff --git a/arch/blackfin/kernel/kgdb_test.c b/arch/blackfin/kernel/kgdb_test.c
index 2a6e9dbb62a5..4a7dcfea98af 100644
--- a/arch/blackfin/kernel/kgdb_test.c
+++ b/arch/blackfin/kernel/kgdb_test.c
@@ -50,8 +50,7 @@ void kgdb_l2_test(void)
50 50
51#endif 51#endif
52 52
53 53noinline int kgdb_test(char *name, int len, int count, int z)
54int kgdb_test(char *name, int len, int count, int z)
55{ 54{
56 pr_alert("kgdb name(%d): %s, %d, %d\n", len, name, count, z); 55 pr_alert("kgdb name(%d): %s, %d, %d\n", len, name, count, z);
57 count = z; 56 count = z;
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index 9e9b60d969dc..1bcf3a3c57d8 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -188,8 +188,7 @@ irqreturn_t bfin_gptmr0_interrupt(int irq, void *dev_id)
188 188
189static struct irqaction gptmr0_irq = { 189static struct irqaction gptmr0_irq = {
190 .name = "Blackfin GPTimer0", 190 .name = "Blackfin GPTimer0",
191 .flags = IRQF_DISABLED | IRQF_TIMER | \ 191 .flags = IRQF_TIMER | IRQF_IRQPOLL | IRQF_PERCPU,
192 IRQF_IRQPOLL | IRQF_PERCPU,
193 .handler = bfin_gptmr0_interrupt, 192 .handler = bfin_gptmr0_interrupt,
194}; 193};
195 194
@@ -297,8 +296,7 @@ irqreturn_t bfin_coretmr_interrupt(int irq, void *dev_id)
297 296
298static struct irqaction coretmr_irq = { 297static struct irqaction coretmr_irq = {
299 .name = "Blackfin CoreTimer", 298 .name = "Blackfin CoreTimer",
300 .flags = IRQF_DISABLED | IRQF_TIMER | \ 299 .flags = IRQF_TIMER | IRQF_IRQPOLL | IRQF_PERCPU,
301 IRQF_IRQPOLL | IRQF_PERCPU,
302 .handler = bfin_coretmr_interrupt, 300 .handler = bfin_coretmr_interrupt,
303}; 301};
304 302
diff --git a/arch/blackfin/kernel/time.c b/arch/blackfin/kernel/time.c
index ceb2bf63dfe2..2310b249675f 100644
--- a/arch/blackfin/kernel/time.c
+++ b/arch/blackfin/kernel/time.c
@@ -25,7 +25,6 @@
25 25
26static struct irqaction bfin_timer_irq = { 26static struct irqaction bfin_timer_irq = {
27 .name = "Blackfin Timer Tick", 27 .name = "Blackfin Timer Tick",
28 .flags = IRQF_DISABLED
29}; 28};
30 29
31#if defined(CONFIG_IPIPE) 30#if defined(CONFIG_IPIPE)
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
index eb325ed6607e..5da5787fc4ef 100644
--- a/arch/blackfin/mach-bf533/boards/H8606.c
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -54,7 +54,8 @@ static struct resource dm9000_resources[] = {
54 [2] = { 54 [2] = {
55 .start = IRQ_PF10, 55 .start = IRQ_PF10,
56 .end = IRQ_PF10, 56 .end = IRQ_PF10,
57 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | IRQF_SHARED | IRQF_TRIGGER_HIGH), 57 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE |
58 IORESOURCE_IRQ_SHAREABLE),
58 }, 59 },
59}; 60};
60 61
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537e.c b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
index 44fd8409db10..9fb20d6d8f91 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
@@ -605,7 +605,7 @@ static struct platform_device bfin_mac_device = {
605 605
606static struct pata_platform_info bfin_pata_platform_data = { 606static struct pata_platform_info bfin_pata_platform_data = {
607 .ioport_shift = 2, 607 .ioport_shift = 2,
608 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 608 .irq_type = IRQF_TRIGGER_HIGH,
609}; 609};
610 610
611static struct resource bfin_pata_resources[] = { 611static struct resource bfin_pata_resources[] = {
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537u.c b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
index 1b4ac5c64aae..5ba389fc61ae 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537u.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
@@ -570,7 +570,7 @@ static struct platform_device bfin_mac_device = {
570 570
571static struct pata_platform_info bfin_pata_platform_data = { 571static struct pata_platform_info bfin_pata_platform_data = {
572 .ioport_shift = 2, 572 .ioport_shift = 2,
573 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 573 .irq_type = IRQF_TRIGGER_HIGH,
574}; 574};
575 575
576static struct resource bfin_pata_resources[] = { 576static struct resource bfin_pata_resources[] = {
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index b52e6728f64f..6c916a67ef68 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -962,10 +962,10 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
962 }, 962 },
963#endif 963#endif
964 964
965#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ 965#if defined(CONFIG_SND_BF5XX_SOC_AD1836) \
966 || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) 966 || defined(CONFIG_SND_BF5XX_SOC_AD1836_MODULE)
967 { 967 {
968 .modalias = "ad183x", 968 .modalias = "ad1836",
969 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 969 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
970 .bus_num = 0, 970 .bus_num = 0,
971 .chip_select = 4, 971 .chip_select = 4,
@@ -984,9 +984,9 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
984 }, 984 },
985#endif 985#endif
986 986
987#if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE) 987#if defined(CONFIG_SND_SOC_ADAV80X) || defined(CONFIG_SND_SOC_ADV80X_MODULE)
988 { 988 {
989 .modalias = "adav80x", 989 .modalias = "adav801",
990 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 990 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
991 .bus_num = 0, 991 .bus_num = 0,
992 .chip_select = 1, 992 .chip_select = 1,
@@ -2101,7 +2101,7 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2101 }, 2101 },
2102#endif 2102#endif
2103 2103
2104#if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE) 2104#if defined(CONFIG_SND_SOC_ADAV80X) || defined(CONFIG_SND_SOC_ADAV80X_MODULE)
2105 { 2105 {
2106 I2C_BOARD_INFO("adav803", 0x10), 2106 I2C_BOARD_INFO("adav803", 0x10),
2107 }, 2107 },
@@ -2134,23 +2134,6 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2134 }, 2134 },
2135#endif 2135#endif
2136 2136
2137#if defined(CONFIG_AD7414) || defined(CONFIG_AD7414_MODULE)
2138 {
2139 I2C_BOARD_INFO("ad7414", 0x9),
2140 .irq = IRQ_PG5,
2141 .irq_flags = IRQF_TRIGGER_LOW,
2142 },
2143#endif
2144
2145#if defined(CONFIG_AD7416) || defined(CONFIG_AD7416_MODULE)
2146 {
2147 I2C_BOARD_INFO("ad7417", 0xb),
2148 .irq = IRQ_PG5,
2149 .irq_flags = IRQF_TRIGGER_LOW,
2150 .platform_data = (void *)GPIO_PF4,
2151 },
2152#endif
2153
2154#if defined(CONFIG_ADE7854_I2C) || defined(CONFIG_ADE7854_I2C_MODULE) 2137#if defined(CONFIG_ADE7854_I2C) || defined(CONFIG_ADE7854_I2C_MODULE)
2155 { 2138 {
2156 I2C_BOARD_INFO("ade7854", 0x38), 2139 I2C_BOARD_INFO("ade7854", 0x38),
@@ -2161,15 +2144,6 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2161 { 2144 {
2162 I2C_BOARD_INFO("adt75", 0x9), 2145 I2C_BOARD_INFO("adt75", 0x9),
2163 .irq = IRQ_PG5, 2146 .irq = IRQ_PG5,
2164 .irq_flags = IRQF_TRIGGER_LOW,
2165 },
2166#endif
2167
2168#if defined(CONFIG_ADT7408) || defined(CONFIG_ADT7408_MODULE)
2169 {
2170 I2C_BOARD_INFO("adt7408", 0x18),
2171 .irq = IRQ_PG5,
2172 .irq_flags = IRQF_TRIGGER_LOW,
2173 }, 2147 },
2174#endif 2148#endif
2175 2149
@@ -2178,7 +2152,6 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2178 I2C_BOARD_INFO("adt7410", 0x48), 2152 I2C_BOARD_INFO("adt7410", 0x48),
2179 /* CT critical temperature event. line 0 */ 2153 /* CT critical temperature event. line 0 */
2180 .irq = IRQ_PG5, 2154 .irq = IRQ_PG5,
2181 .irq_flags = IRQF_TRIGGER_LOW,
2182 .platform_data = (void *)&adt7410_platform_data, 2155 .platform_data = (void *)&adt7410_platform_data,
2183 }, 2156 },
2184#endif 2157#endif
@@ -2187,7 +2160,6 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2187 { 2160 {
2188 I2C_BOARD_INFO("ad7291", 0x20), 2161 I2C_BOARD_INFO("ad7291", 0x20),
2189 .irq = IRQ_PG5, 2162 .irq = IRQ_PG5,
2190 .irq_flags = IRQF_TRIGGER_LOW,
2191 }, 2163 },
2192#endif 2164#endif
2193 2165
@@ -2275,6 +2247,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
2275 I2C_BOARD_INFO("adau1361", 0x38), 2247 I2C_BOARD_INFO("adau1361", 0x38),
2276 }, 2248 },
2277#endif 2249#endif
2250#if defined(CONFIG_SND_SOC_ADAU1701) || defined(CONFIG_SND_SOC_ADAU1701_MODULE)
2251 {
2252 I2C_BOARD_INFO("adau1701", 0x34),
2253 },
2254#endif
2278#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE) 2255#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE)
2279 { 2256 {
2280 I2C_BOARD_INFO("ad5258", 0x18), 2257 I2C_BOARD_INFO("ad5258", 0x18),
@@ -2388,7 +2365,7 @@ static struct platform_device bfin_sport1_uart_device = {
2388#define PATA_INT IRQ_PF5 2365#define PATA_INT IRQ_PF5
2389static struct pata_platform_info bfin_pata_platform_data = { 2366static struct pata_platform_info bfin_pata_platform_data = {
2390 .ioport_shift = 1, 2367 .ioport_shift = 1,
2391 .irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 2368 .irq_flags = IRQF_TRIGGER_HIGH,
2392}; 2369};
2393 2370
2394static struct resource bfin_pata_resources[] = { 2371static struct resource bfin_pata_resources[] = {
@@ -2540,13 +2517,21 @@ static struct platform_device bfin_ac97_pcm = {
2540}; 2517};
2541#endif 2518#endif
2542 2519
2543#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE) 2520#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
2544static struct platform_device bfin_ad73311_codec_device = { 2521static struct platform_device bfin_ad73311_codec_device = {
2545 .name = "ad73311", 2522 .name = "ad73311",
2546 .id = -1, 2523 .id = -1,
2547}; 2524};
2548#endif 2525#endif
2549 2526
2527#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAV80X) || \
2528 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAV80X_MODULE)
2529static struct platform_device bfin_eval_adav801_device = {
2530 .name = "bfin-eval-adav801",
2531 .id = -1,
2532};
2533#endif
2534
2550#if defined(CONFIG_SND_BF5XX_SOC_I2S) || defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE) 2535#if defined(CONFIG_SND_BF5XX_SOC_I2S) || defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE)
2551static struct platform_device bfin_i2s = { 2536static struct platform_device bfin_i2s = {
2552 .name = "bfin-i2s", 2537 .name = "bfin-i2s",
@@ -2661,6 +2646,20 @@ static struct platform_device iio_gpio_trigger = {
2661}; 2646};
2662#endif 2647#endif
2663 2648
2649#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1373) || \
2650 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1373_MODULE)
2651static struct platform_device bf5xx_adau1373_device = {
2652 .name = "bfin-eval-adau1373",
2653};
2654#endif
2655
2656#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1701) || \
2657 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1701_MODULE)
2658static struct platform_device bf5xx_adau1701_device = {
2659 .name = "bfin-eval-adau1701",
2660};
2661#endif
2662
2664static struct platform_device *stamp_devices[] __initdata = { 2663static struct platform_device *stamp_devices[] __initdata = {
2665 2664
2666 &bfin_dpmc, 2665 &bfin_dpmc,
@@ -2782,7 +2781,7 @@ static struct platform_device *stamp_devices[] __initdata = {
2782 &bfin_ac97_pcm, 2781 &bfin_ac97_pcm,
2783#endif 2782#endif
2784 2783
2785#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE) 2784#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
2786 &bfin_ad73311_codec_device, 2785 &bfin_ad73311_codec_device,
2787#endif 2786#endif
2788 2787
@@ -2821,6 +2820,21 @@ static struct platform_device *stamp_devices[] __initdata = {
2821 defined(CONFIG_IIO_GPIO_TRIGGER_MODULE) 2820 defined(CONFIG_IIO_GPIO_TRIGGER_MODULE)
2822 &iio_gpio_trigger, 2821 &iio_gpio_trigger,
2823#endif 2822#endif
2823
2824#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1373) || \
2825 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1373_MODULE)
2826 &bf5xx_adau1373_device,
2827#endif
2828
2829#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1701) || \
2830 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAU1701_MODULE)
2831 &bf5xx_adau1701_device,
2832#endif
2833
2834#if defined(CONFIG_SND_SOC_BFIN_EVAL_ADAV80X) || \
2835 defined(CONFIG_SND_SOC_BFIN_EVAL_ADAV80X_MODULE)
2836 &bfin_eval_adav801_device,
2837#endif
2824}; 2838};
2825 2839
2826static int __init net2272_init(void) 2840static int __init net2272_init(void)
diff --git a/arch/blackfin/mach-bf537/boards/tcm_bf537.c b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
index 9b7287abdfa1..2da0316d890e 100644
--- a/arch/blackfin/mach-bf537/boards/tcm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
@@ -572,7 +572,7 @@ static struct platform_device bfin_mac_device = {
572 572
573static struct pata_platform_info bfin_pata_platform_data = { 573static struct pata_platform_info bfin_pata_platform_data = {
574 .ioport_shift = 2, 574 .ioport_shift = 2,
575 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 575 .irq_type = IRQF_TRIGGER_HIGH,
576}; 576};
577 577
578static struct resource bfin_pata_resources[] = { 578static struct resource bfin_pata_resources[] = {
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c
index e4f397d1d65b..c1b72f2d6354 100644
--- a/arch/blackfin/mach-bf561/boards/cm_bf561.c
+++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c
@@ -348,7 +348,7 @@ static struct platform_device bfin_sir0_device = {
348 348
349static struct pata_platform_info bfin_pata_platform_data = { 349static struct pata_platform_info bfin_pata_platform_data = {
350 .ioport_shift = 2, 350 .ioport_shift = 2,
351 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 351 .irq_type = IRQF_TRIGGER_HIGH,
352}; 352};
353 353
354static struct resource bfin_pata_resources[] = { 354static struct resource bfin_pata_resources[] = {
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c
index 85abd8be1343..db22401e7605 100644
--- a/arch/blackfin/mach-bf561/smp.c
+++ b/arch/blackfin/mach-bf561/smp.c
@@ -114,7 +114,7 @@ void __init platform_request_ipi(int irq, void *handler)
114 int ret; 114 int ret;
115 const char *name = (irq == IRQ_SUPPLE_0) ? supple0 : supple1; 115 const char *name = (irq == IRQ_SUPPLE_0) ? supple0 : supple1;
116 116
117 ret = request_irq(irq, handler, IRQF_DISABLED | IRQF_PERCPU, name, handler); 117 ret = request_irq(irq, handler, IRQF_PERCPU, name, handler);
118 if (ret) 118 if (ret)
119 panic("Cannot request %s for IPI service", name); 119 panic("Cannot request %s for IPI service", name);
120} 120}
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
index 107622aacf6b..0784a52389c8 100644
--- a/arch/blackfin/mach-common/smp.c
+++ b/arch/blackfin/mach-common/smp.c
@@ -295,10 +295,15 @@ EXPORT_SYMBOL_GPL(smp_call_function_single);
295 295
296void smp_send_reschedule(int cpu) 296void smp_send_reschedule(int cpu)
297{ 297{
298 cpumask_t callmap;
298 /* simply trigger an ipi */ 299 /* simply trigger an ipi */
299 if (cpu_is_offline(cpu)) 300 if (cpu_is_offline(cpu))
300 return; 301 return;
301 platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); 302
303 cpumask_clear(&callmap);
304 cpumask_set_cpu(cpu, &callmap);
305
306 smp_send_message(callmap, BFIN_IPI_RESCHEDULE, NULL, NULL, 0);
302 307
303 return; 308 return;
304} 309}