Re: [PATCH V3 10/21] thermal: exynos: Fix to clear only the generated interrupts

2013-05-12 Thread amit daniel kachhap
On Fri, May 10, 2013 at 9:10 PM, Eduardo Valentin
eduardo.valen...@ti.com wrote:
 On 09-05-2013 22:22, amit daniel kachhap wrote:
 Hi,

 On Thu, May 9, 2013 at 8:03 PM, Eduardo Valentin
 eduardo.valen...@ti.com wrote:
 On 07-05-2013 09:01, Amit Daniel Kachhap wrote:
 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@samsung.com
 Signed-off-by: Amit Daniel Kachhap amit.dan...@samsung.com
 ---
  drivers/thermal/samsung/exynos_tmu.c  |   10 --
  drivers/thermal/samsung/exynos_tmu_data.c |2 ++
  2 files changed, 6 insertions(+), 6 deletions(-)

 diff --git a/drivers/thermal/samsung/exynos_tmu.c 
 b/drivers/thermal/samsung/exynos_tmu.c
 index 97b87aa..082d5a2 100644
 --- a/drivers/thermal/samsung/exynos_tmu.c
 +++ b/drivers/thermal/samsung/exynos_tmu.c
 @@ -325,17 +325,15 @@ static void exynos_tmu_work(struct work_struct *work)
   struct exynos_tmu_data, irq_work);
   struct exynos_tmu_platform_data *pdata = data-pdata;
   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);
 + val_irq = readl(data-base + reg-tmu_intstat);
 + /* clear the interrupts */
 + writel(val_irq, data-base + reg-tmu_intclear);


 hmmm.. Don t you need to act accordingly depending on what is in your
 int status?

 Earlier also it is done like this way. Basically core thermal layer
 checks temp for each trip so even if I check for which threshold
 interrupt is raised it is of no use. Anyway this is a TODO for me.


 Please add  a /* TODO: */ entry then.
ok,

Thanks,
Amit Daniel

 Thanks,
 Amit Daniel

   clk_disable(data-clk);
   mutex_unlock(data-lock);
 diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
 b/drivers/thermal/samsung/exynos_tmu_data.c
 index 3a1ded1..7322597 100644
 --- a/drivers/thermal/samsung/exynos_tmu_data.c
 +++ b/drivers/thermal/samsung/exynos_tmu_data.c
 @@ -45,6 +45,7 @@ static 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 = {
 @@ -111,6 +112,7 @@ static 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,







--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V3 10/21] thermal: exynos: Fix to clear only the generated interrupts

2013-05-09 Thread Eduardo Valentin
On 07-05-2013 09:01, Amit Daniel Kachhap wrote:
 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@samsung.com
 Signed-off-by: Amit Daniel Kachhap amit.dan...@samsung.com
 ---
  drivers/thermal/samsung/exynos_tmu.c  |   10 --
  drivers/thermal/samsung/exynos_tmu_data.c |2 ++
  2 files changed, 6 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/thermal/samsung/exynos_tmu.c 
 b/drivers/thermal/samsung/exynos_tmu.c
 index 97b87aa..082d5a2 100644
 --- a/drivers/thermal/samsung/exynos_tmu.c
 +++ b/drivers/thermal/samsung/exynos_tmu.c
 @@ -325,17 +325,15 @@ static void exynos_tmu_work(struct work_struct *work)
   struct exynos_tmu_data, irq_work);
   struct exynos_tmu_platform_data *pdata = data-pdata;
   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);
 + val_irq = readl(data-base + reg-tmu_intstat);
 + /* clear the interrupts */
 + writel(val_irq, data-base + reg-tmu_intclear);
  

hmmm.. Don t you need to act accordingly depending on what is in your
int status?

   clk_disable(data-clk);
   mutex_unlock(data-lock);
 diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
 b/drivers/thermal/samsung/exynos_tmu_data.c
 index 3a1ded1..7322597 100644
 --- a/drivers/thermal/samsung/exynos_tmu_data.c
 +++ b/drivers/thermal/samsung/exynos_tmu_data.c
 @@ -45,6 +45,7 @@ static 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 = {
 @@ -111,6 +112,7 @@ static 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,
 




signature.asc
Description: OpenPGP digital signature