diff options
Diffstat (limited to 'arch/mips/bcm63xx/timer.c')
-rw-r--r-- | arch/mips/bcm63xx/timer.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/arch/mips/bcm63xx/timer.c b/arch/mips/bcm63xx/timer.c index ba522bdcde4b..5f1135981568 100644 --- a/arch/mips/bcm63xx/timer.c +++ b/arch/mips/bcm63xx/timer.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <bcm63xx_timer.h> | 17 | #include <bcm63xx_timer.h> |
18 | #include <bcm63xx_regs.h> | 18 | #include <bcm63xx_regs.h> |
19 | 19 | ||
20 | static DEFINE_SPINLOCK(timer_reg_lock); | 20 | static DEFINE_RAW_SPINLOCK(timer_reg_lock); |
21 | static DEFINE_SPINLOCK(timer_data_lock); | 21 | static DEFINE_RAW_SPINLOCK(timer_data_lock); |
22 | static struct clk *periph_clk; | 22 | static struct clk *periph_clk; |
23 | 23 | ||
24 | static struct timer_data { | 24 | static struct timer_data { |
@@ -31,23 +31,23 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) | |||
31 | u32 stat; | 31 | u32 stat; |
32 | int i; | 32 | int i; |
33 | 33 | ||
34 | spin_lock(&timer_reg_lock); | 34 | raw_spin_lock(&timer_reg_lock); |
35 | stat = bcm_timer_readl(TIMER_IRQSTAT_REG); | 35 | stat = bcm_timer_readl(TIMER_IRQSTAT_REG); |
36 | bcm_timer_writel(stat, TIMER_IRQSTAT_REG); | 36 | bcm_timer_writel(stat, TIMER_IRQSTAT_REG); |
37 | spin_unlock(&timer_reg_lock); | 37 | raw_spin_unlock(&timer_reg_lock); |
38 | 38 | ||
39 | for (i = 0; i < BCM63XX_TIMER_COUNT; i++) { | 39 | for (i = 0; i < BCM63XX_TIMER_COUNT; i++) { |
40 | if (!(stat & TIMER_IRQSTAT_TIMER_CAUSE(i))) | 40 | if (!(stat & TIMER_IRQSTAT_TIMER_CAUSE(i))) |
41 | continue; | 41 | continue; |
42 | 42 | ||
43 | spin_lock(&timer_data_lock); | 43 | raw_spin_lock(&timer_data_lock); |
44 | if (!timer_data[i].cb) { | 44 | if (!timer_data[i].cb) { |
45 | spin_unlock(&timer_data_lock); | 45 | raw_spin_unlock(&timer_data_lock); |
46 | continue; | 46 | continue; |
47 | } | 47 | } |
48 | 48 | ||
49 | timer_data[i].cb(timer_data[i].data); | 49 | timer_data[i].cb(timer_data[i].data); |
50 | spin_unlock(&timer_data_lock); | 50 | raw_spin_unlock(&timer_data_lock); |
51 | } | 51 | } |
52 | 52 | ||
53 | return IRQ_HANDLED; | 53 | return IRQ_HANDLED; |
@@ -61,7 +61,7 @@ int bcm63xx_timer_enable(int id) | |||
61 | if (id >= BCM63XX_TIMER_COUNT) | 61 | if (id >= BCM63XX_TIMER_COUNT) |
62 | return -EINVAL; | 62 | return -EINVAL; |
63 | 63 | ||
64 | spin_lock_irqsave(&timer_reg_lock, flags); | 64 | raw_spin_lock_irqsave(&timer_reg_lock, flags); |
65 | 65 | ||
66 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); | 66 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); |
67 | reg |= TIMER_CTL_ENABLE_MASK; | 67 | reg |= TIMER_CTL_ENABLE_MASK; |
@@ -71,7 +71,7 @@ int bcm63xx_timer_enable(int id) | |||
71 | reg |= TIMER_IRQSTAT_TIMER_IR_EN(id); | 71 | reg |= TIMER_IRQSTAT_TIMER_IR_EN(id); |
72 | bcm_timer_writel(reg, TIMER_IRQSTAT_REG); | 72 | bcm_timer_writel(reg, TIMER_IRQSTAT_REG); |
73 | 73 | ||
74 | spin_unlock_irqrestore(&timer_reg_lock, flags); | 74 | raw_spin_unlock_irqrestore(&timer_reg_lock, flags); |
75 | return 0; | 75 | return 0; |
76 | } | 76 | } |
77 | 77 | ||
@@ -85,7 +85,7 @@ int bcm63xx_timer_disable(int id) | |||
85 | if (id >= BCM63XX_TIMER_COUNT) | 85 | if (id >= BCM63XX_TIMER_COUNT) |
86 | return -EINVAL; | 86 | return -EINVAL; |
87 | 87 | ||
88 | spin_lock_irqsave(&timer_reg_lock, flags); | 88 | raw_spin_lock_irqsave(&timer_reg_lock, flags); |
89 | 89 | ||
90 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); | 90 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); |
91 | reg &= ~TIMER_CTL_ENABLE_MASK; | 91 | reg &= ~TIMER_CTL_ENABLE_MASK; |
@@ -95,7 +95,7 @@ int bcm63xx_timer_disable(int id) | |||
95 | reg &= ~TIMER_IRQSTAT_TIMER_IR_EN(id); | 95 | reg &= ~TIMER_IRQSTAT_TIMER_IR_EN(id); |
96 | bcm_timer_writel(reg, TIMER_IRQSTAT_REG); | 96 | bcm_timer_writel(reg, TIMER_IRQSTAT_REG); |
97 | 97 | ||
98 | spin_unlock_irqrestore(&timer_reg_lock, flags); | 98 | raw_spin_unlock_irqrestore(&timer_reg_lock, flags); |
99 | return 0; | 99 | return 0; |
100 | } | 100 | } |
101 | 101 | ||
@@ -110,7 +110,7 @@ int bcm63xx_timer_register(int id, void (*callback)(void *data), void *data) | |||
110 | return -EINVAL; | 110 | return -EINVAL; |
111 | 111 | ||
112 | ret = 0; | 112 | ret = 0; |
113 | spin_lock_irqsave(&timer_data_lock, flags); | 113 | raw_spin_lock_irqsave(&timer_data_lock, flags); |
114 | if (timer_data[id].cb) { | 114 | if (timer_data[id].cb) { |
115 | ret = -EBUSY; | 115 | ret = -EBUSY; |
116 | goto out; | 116 | goto out; |
@@ -120,7 +120,7 @@ int bcm63xx_timer_register(int id, void (*callback)(void *data), void *data) | |||
120 | timer_data[id].data = data; | 120 | timer_data[id].data = data; |
121 | 121 | ||
122 | out: | 122 | out: |
123 | spin_unlock_irqrestore(&timer_data_lock, flags); | 123 | raw_spin_unlock_irqrestore(&timer_data_lock, flags); |
124 | return ret; | 124 | return ret; |
125 | } | 125 | } |
126 | 126 | ||
@@ -133,9 +133,9 @@ void bcm63xx_timer_unregister(int id) | |||
133 | if (id >= BCM63XX_TIMER_COUNT) | 133 | if (id >= BCM63XX_TIMER_COUNT) |
134 | return; | 134 | return; |
135 | 135 | ||
136 | spin_lock_irqsave(&timer_data_lock, flags); | 136 | raw_spin_lock_irqsave(&timer_data_lock, flags); |
137 | timer_data[id].cb = NULL; | 137 | timer_data[id].cb = NULL; |
138 | spin_unlock_irqrestore(&timer_data_lock, flags); | 138 | raw_spin_unlock_irqrestore(&timer_data_lock, flags); |
139 | } | 139 | } |
140 | 140 | ||
141 | EXPORT_SYMBOL(bcm63xx_timer_unregister); | 141 | EXPORT_SYMBOL(bcm63xx_timer_unregister); |
@@ -159,7 +159,7 @@ int bcm63xx_timer_set(int id, int monotonic, unsigned int countdown_us) | |||
159 | if (countdown & ~TIMER_CTL_COUNTDOWN_MASK) | 159 | if (countdown & ~TIMER_CTL_COUNTDOWN_MASK) |
160 | return -EINVAL; | 160 | return -EINVAL; |
161 | 161 | ||
162 | spin_lock_irqsave(&timer_reg_lock, flags); | 162 | raw_spin_lock_irqsave(&timer_reg_lock, flags); |
163 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); | 163 | reg = bcm_timer_readl(TIMER_CTLx_REG(id)); |
164 | 164 | ||
165 | if (monotonic) | 165 | if (monotonic) |
@@ -171,7 +171,7 @@ int bcm63xx_timer_set(int id, int monotonic, unsigned int countdown_us) | |||
171 | reg |= countdown; | 171 | reg |= countdown; |
172 | bcm_timer_writel(reg, TIMER_CTLx_REG(id)); | 172 | bcm_timer_writel(reg, TIMER_CTLx_REG(id)); |
173 | 173 | ||
174 | spin_unlock_irqrestore(&timer_reg_lock, flags); | 174 | raw_spin_unlock_irqrestore(&timer_reg_lock, flags); |
175 | return 0; | 175 | return 0; |
176 | } | 176 | } |
177 | 177 | ||