diff options
Diffstat (limited to 'drivers/thermal/samsung/exynos_tmu.c')
-rw-r--r-- | drivers/thermal/samsung/exynos_tmu.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 33f494ea1ed1..f6f63ca6faf3 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c | |||
@@ -351,17 +351,16 @@ static void exynos_tmu_work(struct work_struct *work) | |||
351 | struct exynos_tmu_data, irq_work); | 351 | struct exynos_tmu_data, irq_work); |
352 | struct exynos_tmu_platform_data *pdata = data->pdata; | 352 | struct exynos_tmu_platform_data *pdata = data->pdata; |
353 | const struct exynos_tmu_registers *reg = pdata->registers; | 353 | const struct exynos_tmu_registers *reg = pdata->registers; |
354 | unsigned int val_irq; | ||
354 | 355 | ||
355 | exynos_report_trigger(); | 356 | exynos_report_trigger(); |
356 | mutex_lock(&data->lock); | 357 | mutex_lock(&data->lock); |
357 | clk_enable(data->clk); | 358 | clk_enable(data->clk); |
358 | 359 | ||
359 | if (data->soc == SOC_ARCH_EXYNOS) | 360 | /* TODO: take action based on particular interrupt */ |
360 | writel((reg->inten_rise_mask << reg->inten_rise_shift) | | 361 | val_irq = readl(data->base + reg->tmu_intstat); |
361 | (reg->inten_fall_mask << reg->inten_fall_shift), | 362 | /* clear the interrupts */ |
362 | data->base + reg->tmu_intclear); | 363 | writel(val_irq, data->base + reg->tmu_intclear); |
363 | else | ||
364 | writel(reg->inten_rise_mask, data->base + reg->tmu_intclear); | ||
365 | 364 | ||
366 | clk_disable(data->clk); | 365 | clk_disable(data->clk); |
367 | mutex_unlock(&data->lock); | 366 | mutex_unlock(&data->lock); |