diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/sh/kernel/cpu/clock.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c index e7eef07536f5..51ec64cdf348 100644 --- a/arch/sh/kernel/cpu/clock.c +++ b/arch/sh/kernel/cpu/clock.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * arch/sh/kernel/cpu/clock.c - SuperH clock framework | 2 | * arch/sh/kernel/cpu/clock.c - SuperH clock framework |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2005 Paul Mundt | 4 | * Copyright (C) 2005, 2006 Paul Mundt |
| 5 | * | 5 | * |
| 6 | * This clock framework is derived from the OMAP version by: | 6 | * This clock framework is derived from the OMAP version by: |
| 7 | * | 7 | * |
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| 18 | #include <linux/mutex.h> | ||
| 18 | #include <linux/list.h> | 19 | #include <linux/list.h> |
| 19 | #include <linux/kref.h> | 20 | #include <linux/kref.h> |
| 20 | #include <linux/seq_file.h> | 21 | #include <linux/seq_file.h> |
| @@ -24,7 +25,7 @@ | |||
| 24 | 25 | ||
| 25 | static LIST_HEAD(clock_list); | 26 | static LIST_HEAD(clock_list); |
| 26 | static DEFINE_SPINLOCK(clock_lock); | 27 | static DEFINE_SPINLOCK(clock_lock); |
| 27 | static DECLARE_MUTEX(clock_list_sem); | 28 | static DEFINE_MUTEX(clock_list_sem); |
| 28 | 29 | ||
| 29 | /* | 30 | /* |
| 30 | * Each subtype is expected to define the init routines for these clocks, | 31 | * Each subtype is expected to define the init routines for these clocks, |
| @@ -140,21 +141,21 @@ void clk_disable(struct clk *clk) | |||
| 140 | 141 | ||
| 141 | int clk_register(struct clk *clk) | 142 | int clk_register(struct clk *clk) |
| 142 | { | 143 | { |
| 143 | down(&clock_list_sem); | 144 | mutex_lock(&clock_list_sem); |
| 144 | 145 | ||
| 145 | list_add(&clk->node, &clock_list); | 146 | list_add(&clk->node, &clock_list); |
| 146 | kref_init(&clk->kref); | 147 | kref_init(&clk->kref); |
| 147 | 148 | ||
| 148 | up(&clock_list_sem); | 149 | mutex_unlock(&clock_list_sem); |
| 149 | 150 | ||
| 150 | return 0; | 151 | return 0; |
| 151 | } | 152 | } |
| 152 | 153 | ||
| 153 | void clk_unregister(struct clk *clk) | 154 | void clk_unregister(struct clk *clk) |
| 154 | { | 155 | { |
| 155 | down(&clock_list_sem); | 156 | mutex_lock(&clock_list_sem); |
| 156 | list_del(&clk->node); | 157 | list_del(&clk->node); |
| 157 | up(&clock_list_sem); | 158 | mutex_unlock(&clock_list_sem); |
| 158 | } | 159 | } |
| 159 | 160 | ||
| 160 | inline unsigned long clk_get_rate(struct clk *clk) | 161 | inline unsigned long clk_get_rate(struct clk *clk) |
| @@ -198,14 +199,14 @@ struct clk *clk_get(const char *id) | |||
| 198 | { | 199 | { |
| 199 | struct clk *p, *clk = ERR_PTR(-ENOENT); | 200 | struct clk *p, *clk = ERR_PTR(-ENOENT); |
| 200 | 201 | ||
| 201 | down(&clock_list_sem); | 202 | mutex_lock(&clock_list_sem); |
| 202 | list_for_each_entry(p, &clock_list, node) { | 203 | list_for_each_entry(p, &clock_list, node) { |
| 203 | if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { | 204 | if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { |
| 204 | clk = p; | 205 | clk = p; |
| 205 | break; | 206 | break; |
| 206 | } | 207 | } |
| 207 | } | 208 | } |
| 208 | up(&clock_list_sem); | 209 | mutex_unlock(&clock_list_sem); |
| 209 | 210 | ||
| 210 | return clk; | 211 | return clk; |
| 211 | } | 212 | } |
