diff options
| author | Ralf Baechle <ralf@linux-mips.org> | 2010-02-27 06:53:35 -0500 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2010-02-27 06:53:35 -0500 |
| commit | d8d607d59e78a865e0b55c60e84412519a83022c (patch) | |
| tree | f0fbe9f676871c6b1b407d76ae7180d3ca9cbe02 | |
| parent | c45ef44f474a82fdec96704bece192e487dca373 (diff) | |
MIPS: BCM63xx: Convert timer locks to raw spinlocks.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| -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 | ||
