Skip to content

Commit

Permalink
thermal: exynos: Fix to clear only the generated interrupts
Browse files Browse the repository at this point in the history
This patch uses the TMU status register to know the generated interrupts
and only clear them in the interrupt handler.

Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Acked-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
Acked-by: Eduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
  • Loading branch information
Amit Daniel Kachhap authored and Eduardo Valentin committed Aug 13, 2013
1 parent 7ca04e5 commit a4463c4
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
11 changes: 5 additions & 6 deletions drivers/thermal/samsung/exynos_tmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -351,17 +351,16 @@ static void exynos_tmu_work(struct work_struct *work)
struct exynos_tmu_data, irq_work);
struct exynos_tmu_platform_data *pdata = data->pdata;
const struct exynos_tmu_registers *reg = pdata->registers;
unsigned int val_irq;

exynos_report_trigger();
mutex_lock(&data->lock);
clk_enable(data->clk);

if (data->soc == SOC_ARCH_EXYNOS)
writel((reg->inten_rise_mask << reg->inten_rise_shift) |
(reg->inten_fall_mask << reg->inten_fall_shift),
data->base + reg->tmu_intclear);
else
writel(reg->inten_rise_mask, data->base + reg->tmu_intclear);
/* TODO: take action based on particular interrupt */
val_irq = readl(data->base + reg->tmu_intstat);
/* clear the interrupts */
writel(val_irq, data->base + reg->tmu_intclear);

clk_disable(data->clk);
mutex_unlock(&data->lock);
Expand Down
2 changes: 2 additions & 0 deletions drivers/thermal/samsung/exynos_tmu_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ static const struct exynos_tmu_registers exynos4210_tmu_registers = {
.inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
.inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
.inten_rise3_shift = EXYNOS_TMU_INTEN_RISE3_SHIFT,
.tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
.tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
};
struct exynos_tmu_platform_data const exynos4210_default_tmu_data = {
Expand Down Expand Up @@ -112,6 +113,7 @@ static const struct exynos_tmu_registers exynos5250_tmu_registers = {
.inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
.inten_rise3_shift = EXYNOS_TMU_INTEN_RISE3_SHIFT,
.inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
.tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
.tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
.emul_con = EXYNOS_EMUL_CON,
.emul_temp_shift = EXYNOS_EMUL_DATA_SHIFT,
Expand Down

0 comments on commit a4463c4

Please sign in to comment.