aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-12-01 18:53:33 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-12-01 18:53:33 -0500
commitca98f825ea05edb41346f12408caa30be8a287c6 (patch)
tree98826d67758b0bd028a04e16446441adb66f4d66
parentb67c26e4fcfdade157d5bd54085720e71518cccd (diff)
parent11849fe67430ba48547e17b25a7831da29863efa (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
-rw-r--r--arch/arm/configs/spitz_defconfig19
-rw-r--r--arch/arm/mach-ixp4xx/ixdp425-setup.c2
-rw-r--r--arch/arm/mach-pxa/Kconfig2
-rw-r--r--arch/arm/mm/flush.c7
-rw-r--r--include/asm-arm/semaphore.h5
-rw-r--r--include/asm-arm/spinlock.h26
6 files changed, 51 insertions, 10 deletions
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig
index 18e9beaec465..9895539533d6 100644
--- a/arch/arm/configs/spitz_defconfig
+++ b/arch/arm/configs/spitz_defconfig
@@ -897,7 +897,24 @@ CONFIG_UNIX98_PTYS=y
897# 897#
898# I2C support 898# I2C support
899# 899#
900# CONFIG_I2C is not set 900CONFIG_I2C=y
901# CONFIG_I2C_CHARDEV is not set
902
903#
904# I2C Algorithms
905#
906# CONFIG_I2C_ALGOBIT is not set
907# CONFIG_I2C_ALGOPCF is not set
908# CONFIG_I2C_ALGOPCA is not set
909
910#
911# I2C Hardware Bus support
912#
913CONFIG_I2C_PXA=y
914# CONFIG_I2C_PXA_SLAVE is not set
915# CONFIG_I2C_PARPORT_LIGHT is not set
916# CONFIG_I2C_STUB is not set
917# CONFIG_I2C_PCA_ISA is not set
901 918
902# 919#
903# Hardware Monitoring support 920# Hardware Monitoring support
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c
index 0a41080d2266..3a22d84e1047 100644
--- a/arch/arm/mach-ixp4xx/ixdp425-setup.c
+++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c
@@ -85,7 +85,7 @@ static struct plat_serial8250_port ixdp425_uart_data[] = {
85 { 85 {
86 .mapbase = IXP4XX_UART2_BASE_PHYS, 86 .mapbase = IXP4XX_UART2_BASE_PHYS,
87 .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, 87 .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
88 .irq = IRQ_IXP4XX_UART1, 88 .irq = IRQ_IXP4XX_UART2,
89 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, 89 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
90 .iotype = UPIO_MEM, 90 .iotype = UPIO_MEM,
91 .regshift = 2, 91 .regshift = 2,
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 526acbc32067..2a58499c0968 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -77,6 +77,8 @@ config MACH_AKITA
77 depends PXA_SHARPSL_27x 77 depends PXA_SHARPSL_27x
78 select PXA_SHARP_Cxx00 78 select PXA_SHARP_Cxx00
79 select MACH_SPITZ 79 select MACH_SPITZ
80 select I2C
81 select I2C_PXA
80 82
81config MACH_SPITZ 83config MACH_SPITZ
82 bool "Enable Sharp Zaurus SL-3000 (Spitz) Support" 84 bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index c9a03981b785..330695b6b19d 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -155,14 +155,19 @@ static void __flush_dcache_aliases(struct address_space *mapping, struct page *p
155 * space mappings, we can be lazy and remember that we may have dirty 155 * space mappings, we can be lazy and remember that we may have dirty
156 * kernel cache lines for later. Otherwise, we assume we have 156 * kernel cache lines for later. Otherwise, we assume we have
157 * aliasing mappings. 157 * aliasing mappings.
158 *
159 * Note that we disable the lazy flush for SMP.
158 */ 160 */
159void flush_dcache_page(struct page *page) 161void flush_dcache_page(struct page *page)
160{ 162{
161 struct address_space *mapping = page_mapping(page); 163 struct address_space *mapping = page_mapping(page);
162 164
165#ifndef CONFIG_SMP
163 if (mapping && !mapping_mapped(mapping)) 166 if (mapping && !mapping_mapped(mapping))
164 set_bit(PG_dcache_dirty, &page->flags); 167 set_bit(PG_dcache_dirty, &page->flags);
165 else { 168 else
169#endif
170 {
166 __flush_dcache_page(mapping, page); 171 __flush_dcache_page(mapping, page);
167 if (mapping && cache_is_vivt()) 172 if (mapping && cache_is_vivt())
168 __flush_dcache_aliases(mapping, page); 173 __flush_dcache_aliases(mapping, page);
diff --git a/include/asm-arm/semaphore.h b/include/asm-arm/semaphore.h
index 71ca7d412687..d5dc624f452a 100644
--- a/include/asm-arm/semaphore.h
+++ b/include/asm-arm/semaphore.h
@@ -47,11 +47,6 @@ static inline void init_MUTEX_LOCKED(struct semaphore *sem)
47 sema_init(sem, 0); 47 sema_init(sem, 0);
48} 48}
49 49
50static inline int sema_count(struct semaphore *sem)
51{
52 return atomic_read(&sem->count);
53}
54
55/* 50/*
56 * special register calling convention 51 * special register calling convention
57 */ 52 */
diff --git a/include/asm-arm/spinlock.h b/include/asm-arm/spinlock.h
index 6ed4f916b166..43ad4e55878c 100644
--- a/include/asm-arm/spinlock.h
+++ b/include/asm-arm/spinlock.h
@@ -30,6 +30,9 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock)
30 __asm__ __volatile__( 30 __asm__ __volatile__(
31"1: ldrex %0, [%1]\n" 31"1: ldrex %0, [%1]\n"
32" teq %0, #0\n" 32" teq %0, #0\n"
33#ifdef CONFIG_CPU_32v6K
34" wfene\n"
35#endif
33" strexeq %0, %2, [%1]\n" 36" strexeq %0, %2, [%1]\n"
34" teqeq %0, #0\n" 37" teqeq %0, #0\n"
35" bne 1b" 38" bne 1b"
@@ -65,7 +68,11 @@ static inline void __raw_spin_unlock(raw_spinlock_t *lock)
65 smp_mb(); 68 smp_mb();
66 69
67 __asm__ __volatile__( 70 __asm__ __volatile__(
68" str %1, [%0]" 71" str %1, [%0]\n"
72#ifdef CONFIG_CPU_32v6K
73" mcr p15, 0, %1, c7, c10, 4\n" /* DSB */
74" sev"
75#endif
69 : 76 :
70 : "r" (&lock->lock), "r" (0) 77 : "r" (&lock->lock), "r" (0)
71 : "cc"); 78 : "cc");
@@ -87,6 +94,9 @@ static inline void __raw_write_lock(raw_rwlock_t *rw)
87 __asm__ __volatile__( 94 __asm__ __volatile__(
88"1: ldrex %0, [%1]\n" 95"1: ldrex %0, [%1]\n"
89" teq %0, #0\n" 96" teq %0, #0\n"
97#ifdef CONFIG_CPU_32v6K
98" wfene\n"
99#endif
90" strexeq %0, %2, [%1]\n" 100" strexeq %0, %2, [%1]\n"
91" teq %0, #0\n" 101" teq %0, #0\n"
92" bne 1b" 102" bne 1b"
@@ -122,7 +132,11 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw)
122 smp_mb(); 132 smp_mb();
123 133
124 __asm__ __volatile__( 134 __asm__ __volatile__(
125 "str %1, [%0]" 135 "str %1, [%0]\n"
136#ifdef CONFIG_CPU_32v6K
137" mcr p15, 0, %1, c7, c10, 4\n" /* DSB */
138" sev\n"
139#endif
126 : 140 :
127 : "r" (&rw->lock), "r" (0) 141 : "r" (&rw->lock), "r" (0)
128 : "cc"); 142 : "cc");
@@ -148,6 +162,9 @@ static inline void __raw_read_lock(raw_rwlock_t *rw)
148"1: ldrex %0, [%2]\n" 162"1: ldrex %0, [%2]\n"
149" adds %0, %0, #1\n" 163" adds %0, %0, #1\n"
150" strexpl %1, %0, [%2]\n" 164" strexpl %1, %0, [%2]\n"
165#ifdef CONFIG_CPU_32v6K
166" wfemi\n"
167#endif
151" rsbpls %0, %1, #0\n" 168" rsbpls %0, %1, #0\n"
152" bmi 1b" 169" bmi 1b"
153 : "=&r" (tmp), "=&r" (tmp2) 170 : "=&r" (tmp), "=&r" (tmp2)
@@ -169,6 +186,11 @@ static inline void __raw_read_unlock(raw_rwlock_t *rw)
169" strex %1, %0, [%2]\n" 186" strex %1, %0, [%2]\n"
170" teq %1, #0\n" 187" teq %1, #0\n"
171" bne 1b" 188" bne 1b"
189#ifdef CONFIG_CPU_32v6K
190"\n cmp %0, #0\n"
191" mcreq p15, 0, %0, c7, c10, 4\n"
192" seveq"
193#endif
172 : "=&r" (tmp), "=&r" (tmp2) 194 : "=&r" (tmp), "=&r" (tmp2)
173 : "r" (&rw->lock) 195 : "r" (&rw->lock)
174 : "cc"); 196 : "cc");