diff options
Diffstat (limited to 'arch/blackfin/kernel')
| -rw-r--r-- | arch/blackfin/kernel/gptimers.c | 2 | ||||
| -rw-r--r-- | arch/blackfin/kernel/time-ts.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c index cdbe075de1dc..8b81dc04488a 100644 --- a/arch/blackfin/kernel/gptimers.c +++ b/arch/blackfin/kernel/gptimers.c | |||
| @@ -268,7 +268,7 @@ void disable_gptimers(uint16_t mask) | |||
| 268 | _disable_gptimers(mask); | 268 | _disable_gptimers(mask); |
| 269 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) | 269 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) |
| 270 | if (mask & (1 << i)) | 270 | if (mask & (1 << i)) |
| 271 | group_regs[BFIN_TIMER_OCTET(i)]->status |= trun_mask[i]; | 271 | group_regs[BFIN_TIMER_OCTET(i)]->status = trun_mask[i]; |
| 272 | SSYNC(); | 272 | SSYNC(); |
| 273 | } | 273 | } |
| 274 | EXPORT_SYMBOL(disable_gptimers); | 274 | EXPORT_SYMBOL(disable_gptimers); |
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c index 8c9a43daf80f..cdb4beb6bc8f 100644 --- a/arch/blackfin/kernel/time-ts.c +++ b/arch/blackfin/kernel/time-ts.c | |||
| @@ -206,8 +206,14 @@ irqreturn_t bfin_gptmr0_interrupt(int irq, void *dev_id) | |||
| 206 | { | 206 | { |
| 207 | struct clock_event_device *evt = dev_id; | 207 | struct clock_event_device *evt = dev_id; |
| 208 | smp_mb(); | 208 | smp_mb(); |
| 209 | evt->event_handler(evt); | 209 | /* |
| 210 | * We want to ACK before we handle so that we can handle smaller timer | ||
| 211 | * intervals. This way if the timer expires again while we're handling | ||
| 212 | * things, we're more likely to see that 2nd int rather than swallowing | ||
| 213 | * it by ACKing the int at the end of this handler. | ||
| 214 | */ | ||
| 210 | bfin_gptmr0_ack(); | 215 | bfin_gptmr0_ack(); |
| 216 | evt->event_handler(evt); | ||
| 211 | return IRQ_HANDLED; | 217 | return IRQ_HANDLED; |
| 212 | } | 218 | } |
| 213 | 219 | ||
