History

Merge master.kernel.org:/home/rmk/linux-2.6-arm

Linus Torvalds committed 20 years ago

Commit ca98f822 parents b67c26e 11849fe6 files · +51 −10Browse files

Unified · Split

6 files
  1. arch/arm/configs/spitz_defconfig +18 −1
  2. arch/arm/mach-ixp4xx/ixdp425-setup.c +1 −1
  3. arch/arm/mach-pxa/Kconfig +2 −0
  4. arch/arm/mm/flush.c +6 −1
  5. include/asm-arm/semaphore.h +0 −5
  6. include/asm-arm/spinlock.h +24 −2
arch/arm/configs/spitz_defconfig+18−1
@@ -897,7 +897,24 @@ CONFIG_UNIX98_PTYS=y · 896 unmodified lines
897897 #
898898 # I2C support
899899 #
900−# CONFIG_I2C is not set
900+CONFIG_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+#
913+CONFIG_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
901918
902919 #
903920 # Hardware Monitoring support
arch/arm/mach-ixp4xx/ixdp425-setup.c+1−1
@@ -85,7 +85,7 @@ static struct plat_serial8250_port ixdp425_uart_data[] = { · 84 unmodified lines
8585 {
8686 .mapbase = IXP4XX_UART2_BASE_PHYS,
8787 .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
88− .irq = IRQ_IXP4XX_UART1,
88+ .irq = IRQ_IXP4XX_UART2,
8989 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
9090 .iotype = UPIO_MEM,
9191 .regshift = 2,
arch/arm/mach-pxa/Kconfig+2−0
@@ -77,6 +77,8 @@ config MACH_AKITA · 76 unmodified lines
7777 depends PXA_SHARPSL_27x
7878 select PXA_SHARP_Cxx00
7979 select MACH_SPITZ
80+ select I2C
81+ select I2C_PXA
8082
8183 config MACH_SPITZ
8284 bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
arch/arm/mm/flush.c+6−1
@@ -155,14 +155,19 @@ static void __flush_dcache_aliases(struct address_space *mapping, struct page *p · 154 unmodified lines
155155 * space mappings, we can be lazy and remember that we may have dirty
156156 * kernel cache lines for later. Otherwise, we assume we have
157157 * aliasing mappings.
158+ *
159+ * Note that we disable the lazy flush for SMP.
158160 */
159161 void flush_dcache_page(struct page *page)
160162 {
161163 struct address_space *mapping = page_mapping(page);
162164
165+#ifndef CONFIG_SMP
163166 if (mapping && !mapping_mapped(mapping))
164167 set_bit(PG_dcache_dirty, &page->flags);
165− else {
168+ else
169+#endif
170+ {
166171 __flush_dcache_page(mapping, page);
167172 if (mapping && cache_is_vivt())
168173 __flush_dcache_aliases(mapping, page);
include/asm-arm/semaphore.h+0−5
@@ -47,11 +47,6 @@ static inline void init_MUTEX_LOCKED(struct semaphore *sem) · 46 unmodified lines
4747 sema_init(sem, 0);
4848 }
4949
50−static inline int sema_count(struct semaphore *sem)
51−{
52− return atomic_read(&sem->count);
53−}
54−
5550 /*
5651 * special register calling convention
5752 */
include/asm-arm/spinlock.h+24−2
@@ -30,6 +30,9 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) · 29 unmodified lines
3030 __asm__ __volatile__(
3131 "1: ldrex %0, [%1]\n"
3232 " teq %0, #0\n"
33+#ifdef CONFIG_CPU_32v6K
34+" wfene\n"
35+#endif
3336 " strexeq %0, %2, [%1]\n"
3437 " teqeq %0, #0\n"
3538 " bne 1b"
@@ -65,7 +68,11 @@ static inline void __raw_spin_unlock(raw_spinlock_t *lock) · 29 unmodified lines
6568 smp_mb();
6669
6770 __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
6976 :
7077 : "r" (&lock->lock), "r" (0)
7178 : "cc");
@@ -87,6 +94,9 @@ static inline void __raw_write_lock(raw_rwlock_t *rw) · 15 unmodified lines
8794 __asm__ __volatile__(
8895 "1: ldrex %0, [%1]\n"
8996 " teq %0, #0\n"
97+#ifdef CONFIG_CPU_32v6K
98+" wfene\n"
99+#endif
90100 " strexeq %0, %2, [%1]\n"
91101 " teq %0, #0\n"
92102 " bne 1b"
@@ -122,7 +132,11 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) · 29 unmodified lines
122132 smp_mb();
123133
124134 __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
126140 :
127141 : "r" (&rw->lock), "r" (0)
128142 : "cc");
@@ -148,6 +162,9 @@ static inline void __raw_read_lock(raw_rwlock_t *rw) · 19 unmodified lines
148162 "1: ldrex %0, [%2]\n"
149163 " adds %0, %0, #1\n"
150164 " strexpl %1, %0, [%2]\n"
165+#ifdef CONFIG_CPU_32v6K
166+" wfemi\n"
167+#endif
151168 " rsbpls %0, %1, #0\n"
152169 " bmi 1b"
153170 : "=&r" (tmp), "=&r" (tmp2)
@@ -169,6 +186,11 @@ static inline void __raw_read_unlock(raw_rwlock_t *rw) · 15 unmodified lines
169186 " strex %1, %0, [%2]\n"
170187 " teq %1, #0\n"
171188 " 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
172194 : "=&r" (tmp), "=&r" (tmp2)
173195 : "r" (&rw->lock)
174196 : "cc");