[ARM] Convert some arm semaphores to mutexes

The arm clock semaphores are strict mutexes, convert them to the new
mutex implementation

Signed-off-by: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by Arjan van de Ven and committed by Russell King 00431707 f4619025

+67 -58
+8 -7
arch/arm/common/rtctime.c
··· 18 18 #include <linux/miscdevice.h> 19 19 #include <linux/spinlock.h> 20 20 #include <linux/device.h> 21 + #include <linux/mutex.h> 21 22 22 23 #include <asm/rtc.h> 23 24 #include <asm/semaphore.h> ··· 35 34 /* 36 35 * rtc_sem protects rtc_inuse and rtc_ops 37 36 */ 38 - static DECLARE_MUTEX(rtc_sem); 37 + static DEFINE_MUTEX(rtc_mutex); 39 38 static unsigned long rtc_inuse; 40 39 static struct rtc_ops *rtc_ops; 41 40 ··· 356 355 { 357 356 int ret; 358 357 359 - down(&rtc_sem); 358 + mutex_lock(&rtc_mutex); 360 359 361 360 if (rtc_inuse) { 362 361 ret = -EBUSY; ··· 374 373 rtc_inuse = 1; 375 374 } 376 375 } 377 - up(&rtc_sem); 376 + mutex_unlock(&rtc_mutex); 378 377 379 378 return ret; 380 379 } ··· 480 479 { 481 480 int ret = -EBUSY; 482 481 483 - down(&rtc_sem); 482 + mutex_lock(&rtc_mutex); 484 483 if (rtc_ops == NULL) { 485 484 rtc_ops = ops; 486 485 ··· 489 488 create_proc_read_entry("driver/rtc", 0, NULL, 490 489 rtc_read_proc, ops); 491 490 } 492 - up(&rtc_sem); 491 + mutex_unlock(&rtc_mutex); 493 492 494 493 return ret; 495 494 } ··· 497 496 498 497 void unregister_rtc(struct rtc_ops *rtc) 499 498 { 500 - down(&rtc_sem); 499 + mutex_lock(&rtc_mutex); 501 500 if (rtc == rtc_ops) { 502 501 remove_proc_entry("driver/rtc", NULL); 503 502 misc_deregister(&rtc_miscdev); 504 503 rtc_ops = NULL; 505 504 } 506 - up(&rtc_sem); 505 + mutex_unlock(&rtc_mutex); 507 506 } 508 507 EXPORT_SYMBOL(unregister_rtc);
+4 -3
arch/arm/kernel/ecard.c
··· 40 40 #include <linux/proc_fs.h> 41 41 #include <linux/device.h> 42 42 #include <linux/init.h> 43 + #include <linux/mutex.h> 43 44 44 45 #include <asm/dma.h> 45 46 #include <asm/ecard.h> ··· 207 206 208 207 static DECLARE_WAIT_QUEUE_HEAD(ecard_wait); 209 208 static struct ecard_request *ecard_req; 210 - static DECLARE_MUTEX(ecard_sem); 209 + static DEFINE_MUTEX(ecard_mutex); 211 210 212 211 /* 213 212 * Set up the expansion card daemon's page tables. ··· 300 299 301 300 req->complete = &completion; 302 301 303 - down(&ecard_sem); 302 + mutex_lock(&ecard_mutex); 304 303 ecard_req = req; 305 304 wake_up(&ecard_wait); 306 305 ··· 308 307 * Now wait for kecardd to run. 309 308 */ 310 309 wait_for_completion(&completion); 311 - up(&ecard_sem); 310 + mutex_unlock(&ecard_mutex); 312 311 } 313 312 314 313 /* ======================= Mid-level card control ===================== */
+8 -7
arch/arm/mach-aaec2000/clock.c
··· 16 16 #include <linux/err.h> 17 17 #include <linux/string.h> 18 18 #include <linux/clk.h> 19 + #include <linux/mutex.h> 19 20 20 21 #include <asm/semaphore.h> 21 22 22 23 #include "clock.h" 23 24 24 25 static LIST_HEAD(clocks); 25 - static DECLARE_MUTEX(clocks_sem); 26 + static DEFINE_MUTEX(clocks_mutex); 26 27 27 28 struct clk *clk_get(struct device *dev, const char *id) 28 29 { 29 30 struct clk *p, *clk = ERR_PTR(-ENOENT); 30 31 31 - down(&clocks_sem); 32 + mutex_lock(&clocks_mutex); 32 33 list_for_each_entry(p, &clocks, node) { 33 34 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 34 35 clk = p; 35 36 break; 36 37 } 37 38 } 38 - up(&clocks_sem); 39 + mutex_unlock(&clocks_mutex); 39 40 40 41 return clk; 41 42 } ··· 79 78 80 79 int clk_register(struct clk *clk) 81 80 { 82 - down(&clocks_sem); 81 + mutex_lock(&clocks_mutex); 83 82 list_add(&clk->node, &clocks); 84 - up(&clocks_sem); 83 + mutex_unlock(&clocks_mutex); 85 84 return 0; 86 85 } 87 86 EXPORT_SYMBOL(clk_register); 88 87 89 88 void clk_unregister(struct clk *clk) 90 89 { 91 - down(&clocks_sem); 90 + mutex_lock(&clocks_mutex); 92 91 list_del(&clk->node); 93 - up(&clocks_sem); 92 + mutex_unlock(&clocks_mutex); 94 93 } 95 94 EXPORT_SYMBOL(clk_unregister); 96 95
+8 -7
arch/arm/mach-integrator/clock.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/string.h> 17 17 #include <linux/clk.h> 18 + #include <linux/mutex.h> 18 19 19 20 #include <asm/semaphore.h> 20 21 #include <asm/hardware/icst525.h> ··· 23 22 #include "clock.h" 24 23 25 24 static LIST_HEAD(clocks); 26 - static DECLARE_MUTEX(clocks_sem); 25 + static DEFINE_MUTEX(clocks_mutex); 27 26 28 27 struct clk *clk_get(struct device *dev, const char *id) 29 28 { 30 29 struct clk *p, *clk = ERR_PTR(-ENOENT); 31 30 32 - down(&clocks_sem); 31 + mutex_lock(&clocks_mutex); 33 32 list_for_each_entry(p, &clocks, node) { 34 33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 35 34 clk = p; 36 35 break; 37 36 } 38 37 } 39 - up(&clocks_sem); 38 + mutex_unlock(&clocks_mutex); 40 39 41 40 return clk; 42 41 } ··· 108 107 109 108 int clk_register(struct clk *clk) 110 109 { 111 - down(&clocks_sem); 110 + mutex_lock(&clocks_mutex); 112 111 list_add(&clk->node, &clocks); 113 - up(&clocks_sem); 112 + mutex_unlock(&clocks_mutex); 114 113 return 0; 115 114 } 116 115 EXPORT_SYMBOL(clk_register); 117 116 118 117 void clk_unregister(struct clk *clk) 119 118 { 120 - down(&clocks_sem); 119 + mutex_lock(&clocks_mutex); 121 120 list_del(&clk->node); 122 - up(&clocks_sem); 121 + mutex_unlock(&clocks_mutex); 123 122 } 124 123 EXPORT_SYMBOL(clk_unregister); 125 124
+9 -8
arch/arm/mach-pxa/ssp.c
··· 31 31 #include <linux/interrupt.h> 32 32 #include <linux/ioport.h> 33 33 #include <linux/init.h> 34 + #include <linux/mutex.h> 34 35 #include <asm/io.h> 35 36 #include <asm/irq.h> 36 37 #include <asm/hardware.h> ··· 60 59 #endif 61 60 }; 62 61 63 - static DECLARE_MUTEX(sem); 62 + static DEFINE_MUTEX(mutex); 64 63 static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; 65 64 66 65 static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) ··· 240 239 if (port > PXA_SSP_PORTS || port == 0) 241 240 return -ENODEV; 242 241 243 - down(&sem); 242 + mutex_lock(&mutex); 244 243 if (use_count[port - 1]) { 245 - up(&sem); 244 + mutex_unlock(&mutex); 246 245 return -EBUSY; 247 246 } 248 247 use_count[port - 1]++; 249 248 250 249 if (!request_mem_region(__PREG(SSCR0_P(port)), 0x2c, "SSP")) { 251 250 use_count[port - 1]--; 252 - up(&sem); 251 + mutex_unlock(&mutex); 253 252 return -EBUSY; 254 253 } 255 254 dev->port = port; ··· 266 265 267 266 /* turn on SSP port clock */ 268 267 pxa_set_cken(ssp_info[port-1].clock, 1); 269 - up(&sem); 268 + mutex_unlock(&mutex); 270 269 return 0; 271 270 272 271 out_region: 273 272 release_mem_region(__PREG(SSCR0_P(port)), 0x2c); 274 273 use_count[port - 1]--; 275 - up(&sem); 274 + mutex_unlock(&mutex); 276 275 return ret; 277 276 } 278 277 ··· 283 282 */ 284 283 void ssp_exit(struct ssp_dev *dev) 285 284 { 286 - down(&sem); 285 + mutex_lock(&mutex); 287 286 SSCR0_P(dev->port) &= ~SSCR0_SSE; 288 287 289 288 if (dev->port > PXA_SSP_PORTS || dev->port == 0) { ··· 296 295 free_irq(dev->irq, dev); 297 296 release_mem_region(__PREG(SSCR0_P(dev->port)), 0x2c); 298 297 use_count[dev->port - 1]--; 299 - up(&sem); 298 + mutex_unlock(&mutex); 300 299 } 301 300 302 301 EXPORT_SYMBOL(ssp_write_word);
+8 -7
arch/arm/mach-realview/clock.c
··· 14 14 #include <linux/errno.h> 15 15 #include <linux/err.h> 16 16 #include <linux/clk.h> 17 + #include <linux/mutex.h> 17 18 18 19 #include <asm/semaphore.h> 19 20 #include <asm/hardware/icst307.h> ··· 22 21 #include "clock.h" 23 22 24 23 static LIST_HEAD(clocks); 25 - static DECLARE_MUTEX(clocks_sem); 24 + static DEFINE_MUTEX(clocks_mutex); 26 25 27 26 struct clk *clk_get(struct device *dev, const char *id) 28 27 { 29 28 struct clk *p, *clk = ERR_PTR(-ENOENT); 30 29 31 - down(&clocks_sem); 30 + mutex_lock(&clocks_mutex); 32 31 list_for_each_entry(p, &clocks, node) { 33 32 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 34 33 clk = p; 35 34 break; 36 35 } 37 36 } 38 - up(&clocks_sem); 37 + mutex_unlock(&clocks_mutex); 39 38 40 39 return clk; 41 40 } ··· 110 109 111 110 int clk_register(struct clk *clk) 112 111 { 113 - down(&clocks_sem); 112 + mutex_lock(&clocks_mutex); 114 113 list_add(&clk->node, &clocks); 115 - up(&clocks_sem); 114 + mutex_unlock(&clocks_mutex); 116 115 return 0; 117 116 } 118 117 EXPORT_SYMBOL(clk_register); 119 118 120 119 void clk_unregister(struct clk *clk) 121 120 { 122 - down(&clocks_sem); 121 + mutex_lock(&clocks_mutex); 123 122 list_del(&clk->node); 124 - up(&clocks_sem); 123 + mutex_unlock(&clocks_mutex); 125 124 } 126 125 EXPORT_SYMBOL(clk_unregister); 127 126
+6 -5
arch/arm/mach-s3c2410/clock.c
··· 37 37 #include <linux/interrupt.h> 38 38 #include <linux/ioport.h> 39 39 #include <linux/clk.h> 40 + #include <linux/mutex.h> 40 41 41 42 #include <asm/hardware.h> 42 43 #include <asm/atomic.h> ··· 52 51 /* clock information */ 53 52 54 53 static LIST_HEAD(clocks); 55 - static DECLARE_MUTEX(clocks_sem); 54 + static DEFINE_MUTEX(clocks_mutex); 56 55 57 56 /* old functions */ 58 57 ··· 103 102 else 104 103 idno = to_platform_device(dev)->id; 105 104 106 - down(&clocks_sem); 105 + mutex_lock(&clocks_mutex); 107 106 108 107 list_for_each_entry(p, &clocks, list) { 109 108 if (p->id == idno && ··· 127 126 } 128 127 } 129 128 130 - up(&clocks_sem); 129 + mutex_unlock(&clocks_mutex); 131 130 return clk; 132 131 } 133 132 ··· 363 362 364 363 /* add to the list of available clocks */ 365 364 366 - down(&clocks_sem); 365 + mutex_lock(&clocks_mutex); 367 366 list_add(&clk->list, &clocks); 368 - up(&clocks_sem); 367 + mutex_unlock(&clocks_mutex); 369 368 370 369 return 0; 371 370 }
+8 -7
arch/arm/mach-versatile/clock.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/string.h> 17 17 #include <linux/clk.h> 18 + #include <linux/mutex.h> 18 19 19 20 #include <asm/semaphore.h> 20 21 #include <asm/hardware/icst307.h> ··· 23 22 #include "clock.h" 24 23 25 24 static LIST_HEAD(clocks); 26 - static DECLARE_MUTEX(clocks_sem); 25 + static DEFINE_MUTEX(clocks_mutex); 27 26 28 27 struct clk *clk_get(struct device *dev, const char *id) 29 28 { 30 29 struct clk *p, *clk = ERR_PTR(-ENOENT); 31 30 32 - down(&clocks_sem); 31 + mutex_lock(&clocks_mutex); 33 32 list_for_each_entry(p, &clocks, node) { 34 33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 35 34 clk = p; 36 35 break; 37 36 } 38 37 } 39 - up(&clocks_sem); 38 + mutex_unlock(&clocks_mutex); 40 39 41 40 return clk; 42 41 } ··· 111 110 112 111 int clk_register(struct clk *clk) 113 112 { 114 - down(&clocks_sem); 113 + mutex_lock(&clocks_mutex); 115 114 list_add(&clk->node, &clocks); 116 - up(&clocks_sem); 115 + mutex_unlock(&clocks_mutex); 117 116 return 0; 118 117 } 119 118 EXPORT_SYMBOL(clk_register); 120 119 121 120 void clk_unregister(struct clk *clk) 122 121 { 123 - down(&clocks_sem); 122 + mutex_lock(&clocks_mutex); 124 123 list_del(&clk->node); 125 - up(&clocks_sem); 124 + mutex_unlock(&clocks_mutex); 126 125 } 127 126 EXPORT_SYMBOL(clk_unregister); 128 127
+8 -7
arch/arm/plat-omap/clock.c
··· 20 20 #include <linux/err.h> 21 21 #include <linux/string.h> 22 22 #include <linux/clk.h> 23 + #include <linux/mutex.h> 23 24 24 25 #include <asm/io.h> 25 26 #include <asm/semaphore.h> ··· 28 27 #include <asm/arch/clock.h> 29 28 30 29 LIST_HEAD(clocks); 31 - static DECLARE_MUTEX(clocks_sem); 30 + static DEFINE_MUTEX(clocks_mutex); 32 31 DEFINE_SPINLOCK(clockfw_lock); 33 32 34 33 static struct clk_functions *arch_clock; ··· 41 40 { 42 41 struct clk *p, *clk = ERR_PTR(-ENOENT); 43 42 44 - down(&clocks_sem); 43 + mutex_lock(&clocks_mutex); 45 44 list_for_each_entry(p, &clocks, node) { 46 45 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 47 46 clk = p; 48 47 break; 49 48 } 50 49 } 51 - up(&clocks_sem); 50 + mutex_unlock(&clocks_mutex); 52 51 53 52 return clk; 54 53 } ··· 250 249 251 250 int clk_register(struct clk *clk) 252 251 { 253 - down(&clocks_sem); 252 + mutex_lock(&clocks_mutex); 254 253 list_add(&clk->node, &clocks); 255 254 if (clk->init) 256 255 clk->init(clk); 257 - up(&clocks_sem); 256 + mutex_unlock(&clocks_mutex); 258 257 259 258 return 0; 260 259 } ··· 262 261 263 262 void clk_unregister(struct clk *clk) 264 263 { 265 - down(&clocks_sem); 264 + mutex_lock(&clocks_mutex); 266 265 list_del(&clk->node); 267 - up(&clocks_sem); 266 + mutex_unlock(&clocks_mutex); 268 267 } 269 268 EXPORT_SYMBOL(clk_unregister); 270 269