Re: [RESEND PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-29 Thread Eduardo Valentin
On Tue, Jul 22, 2014 at 11:41:56AM +0530, amit daniel kachhap wrote:
> On Mon, Jul 21, 2014 at 11:34 AM, Zhang Rui  wrote:
> > On Fri, 2014-07-18 at 09:00 +0900, Chanwoo Choi wrote:
> >> This patch adds the registers, bit fields and compatible strings
> >> required to support for the 1 TMU channels on Exynos3250.
> >>
> >> Signed-off-by: Chanwoo Choi 
> >> [Add MUX address setting bits by Jonghwa Lee]
> >> Signed-off-by: Jonghwa Lee 
> >> Acked-by: Kyungmin Park 
> >> Reviewed-by: Amit Daniel Kachhap
> >
> > Eduardo and Amit,
> >
> > do you have any comments on this?
> The changes looks fine to me. I already reviewed these patches earlier.


Bartlomiej, can you please rebase your work on top of this one?

> 
> thanks,
> Amit
> >
> > thanks,
> > rui
> >
> >> ---
> >>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
> >>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
> >>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
> >>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
> >> ++
> >>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
> >>  5 files changed, 105 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
> >> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> >> index c949092..ae738f5 100644
> >> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> >> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> >> @@ -3,6 +3,7 @@
> >>  ** Required properties:
> >>
> >>  - compatible : One of the following:
> >> +"samsung,exynos3250-tmu"
> >>  "samsung,exynos4412-tmu"
> >>  "samsung,exynos4210-tmu"
> >>  "samsung,exynos5250-tmu"
> >> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
> >> b/drivers/thermal/samsung/exynos_tmu.c
> >> index d7ca9f4..a2a08ea 100644
> >> --- a/drivers/thermal/samsung/exynos_tmu.c
> >> +++ b/drivers/thermal/samsung/exynos_tmu.c
> >> @@ -505,6 +505,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
> >>
> >>  static const struct of_device_id exynos_tmu_match[] = {
> >>   {
> >> + .compatible = "samsung,exynos3250-tmu",
> >> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
> >> + },
> >> + {
> >>   .compatible = "samsung,exynos4210-tmu",
> >>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
> >>   },
> >> @@ -677,7 +681,8 @@ static int exynos_tmu_probe(struct platform_device 
> >> *pdev)
> >>   goto err_clk_sec;
> >>   }
> >>
> >> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
> >> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
> >> + pdata->type == SOC_ARCH_EXYNOS4210 ||
> >>   pdata->type == SOC_ARCH_EXYNOS4412 ||
> >>   pdata->type == SOC_ARCH_EXYNOS5250 ||
> >>   pdata->type == SOC_ARCH_EXYNOS5260 ||
> >> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
> >> b/drivers/thermal/samsung/exynos_tmu.h
> >> index edd08cf..1b4a644 100644
> >> --- a/drivers/thermal/samsung/exynos_tmu.h
> >> +++ b/drivers/thermal/samsung/exynos_tmu.h
> >> @@ -40,7 +40,8 @@ enum calibration_mode {
> >>  };
> >>
> >>  enum soc_type {
> >> - SOC_ARCH_EXYNOS4210 = 1,
> >> + SOC_ARCH_EXYNOS3250 = 1,
> >> + SOC_ARCH_EXYNOS4210,
> >>   SOC_ARCH_EXYNOS4412,
> >>   SOC_ARCH_EXYNOS5250,
> >>   SOC_ARCH_EXYNOS5260,
> >> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
> >> b/drivers/thermal/samsung/exynos_tmu_data.c
> >> index c1d81dc..aa8e0de 100644
> >> --- a/drivers/thermal/samsung/exynos_tmu_data.c
> >> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
> >> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
> >> exynos4210_default_tmu_data = {
> >>  };
> >>  #endif
> >>
> >> +#if defined(CONFIG_SOC_EXYNOS3250)
> >> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
> >> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
> >> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
> >> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
> >> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
> >> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
> >> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
> >> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
> >> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
> >> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
> >> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
> >> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
> >> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
> >> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
> >> + .tmu_status = EXYNOS_TMU_REG_STATUS,
> >> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
> >> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
> >> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
> >> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
> >> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0

Re: [RESEND PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-21 Thread amit daniel kachhap
On Mon, Jul 21, 2014 at 11:34 AM, Zhang Rui  wrote:
> On Fri, 2014-07-18 at 09:00 +0900, Chanwoo Choi wrote:
>> This patch adds the registers, bit fields and compatible strings
>> required to support for the 1 TMU channels on Exynos3250.
>>
>> Signed-off-by: Chanwoo Choi 
>> [Add MUX address setting bits by Jonghwa Lee]
>> Signed-off-by: Jonghwa Lee 
>> Acked-by: Kyungmin Park 
>> Reviewed-by: Amit Daniel Kachhap
>
> Eduardo and Amit,
>
> do you have any comments on this?
The changes looks fine to me. I already reviewed these patches earlier.

thanks,
Amit
>
> thanks,
> rui
>
>> ---
>>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
>> ++
>>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>>  5 files changed, 105 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
>> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> index c949092..ae738f5 100644
>> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> @@ -3,6 +3,7 @@
>>  ** Required properties:
>>
>>  - compatible : One of the following:
>> +"samsung,exynos3250-tmu"
>>  "samsung,exynos4412-tmu"
>>  "samsung,exynos4210-tmu"
>>  "samsung,exynos5250-tmu"
>> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
>> b/drivers/thermal/samsung/exynos_tmu.c
>> index d7ca9f4..a2a08ea 100644
>> --- a/drivers/thermal/samsung/exynos_tmu.c
>> +++ b/drivers/thermal/samsung/exynos_tmu.c
>> @@ -505,6 +505,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>>
>>  static const struct of_device_id exynos_tmu_match[] = {
>>   {
>> + .compatible = "samsung,exynos3250-tmu",
>> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
>> + },
>> + {
>>   .compatible = "samsung,exynos4210-tmu",
>>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>>   },
>> @@ -677,7 +681,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>>   goto err_clk_sec;
>>   }
>>
>> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
>> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
>> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>>   pdata->type == SOC_ARCH_EXYNOS5260 ||
>> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
>> b/drivers/thermal/samsung/exynos_tmu.h
>> index edd08cf..1b4a644 100644
>> --- a/drivers/thermal/samsung/exynos_tmu.h
>> +++ b/drivers/thermal/samsung/exynos_tmu.h
>> @@ -40,7 +40,8 @@ enum calibration_mode {
>>  };
>>
>>  enum soc_type {
>> - SOC_ARCH_EXYNOS4210 = 1,
>> + SOC_ARCH_EXYNOS3250 = 1,
>> + SOC_ARCH_EXYNOS4210,
>>   SOC_ARCH_EXYNOS4412,
>>   SOC_ARCH_EXYNOS5250,
>>   SOC_ARCH_EXYNOS5260,
>> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
>> b/drivers/thermal/samsung/exynos_tmu_data.c
>> index c1d81dc..aa8e0de 100644
>> --- a/drivers/thermal/samsung/exynos_tmu_data.c
>> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
>> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
>> exynos4210_default_tmu_data = {
>>  };
>>  #endif
>>
>> +#if defined(CONFIG_SOC_EXYNOS3250)
>> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
>> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
>> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
>> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
>> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
>> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
>> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
>> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
>> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
>> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
>> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
>> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
>> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
>> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
>> + .tmu_status = EXYNOS_TMU_REG_STATUS,
>> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
>> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
>> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
>> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
>> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
>> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
>> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
>> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
>> + .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
>> + .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
>> + .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
>> + .intclr_rise_shi

Re: [RESEND PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-20 Thread Zhang Rui
On Fri, 2014-07-18 at 09:00 +0900, Chanwoo Choi wrote:
> This patch adds the registers, bit fields and compatible strings
> required to support for the 1 TMU channels on Exynos3250.
> 
> Signed-off-by: Chanwoo Choi 
> [Add MUX address setting bits by Jonghwa Lee]
> Signed-off-by: Jonghwa Lee 
> Acked-by: Kyungmin Park 
> Reviewed-by: Amit Daniel Kachhap

Eduardo and Amit,

do you have any comments on this?

thanks,
rui

> ---
>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
> ++
>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>  5 files changed, 105 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> index c949092..ae738f5 100644
> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> @@ -3,6 +3,7 @@
>  ** Required properties:
>  
>  - compatible : One of the following:
> +"samsung,exynos3250-tmu"
>  "samsung,exynos4412-tmu"
>  "samsung,exynos4210-tmu"
>  "samsung,exynos5250-tmu"
> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
> b/drivers/thermal/samsung/exynos_tmu.c
> index d7ca9f4..a2a08ea 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -505,6 +505,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>  
>  static const struct of_device_id exynos_tmu_match[] = {
>   {
> + .compatible = "samsung,exynos3250-tmu",
> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
> + },
> + {
>   .compatible = "samsung,exynos4210-tmu",
>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>   },
> @@ -677,7 +681,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>   goto err_clk_sec;
>   }
>  
> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>   pdata->type == SOC_ARCH_EXYNOS5260 ||
> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
> b/drivers/thermal/samsung/exynos_tmu.h
> index edd08cf..1b4a644 100644
> --- a/drivers/thermal/samsung/exynos_tmu.h
> +++ b/drivers/thermal/samsung/exynos_tmu.h
> @@ -40,7 +40,8 @@ enum calibration_mode {
>  };
>  
>  enum soc_type {
> - SOC_ARCH_EXYNOS4210 = 1,
> + SOC_ARCH_EXYNOS3250 = 1,
> + SOC_ARCH_EXYNOS4210,
>   SOC_ARCH_EXYNOS4412,
>   SOC_ARCH_EXYNOS5250,
>   SOC_ARCH_EXYNOS5260,
> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
> b/drivers/thermal/samsung/exynos_tmu_data.c
> index c1d81dc..aa8e0de 100644
> --- a/drivers/thermal/samsung/exynos_tmu_data.c
> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
> exynos4210_default_tmu_data = {
>  };
>  #endif
>  
> +#if defined(CONFIG_SOC_EXYNOS3250)
> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
> + .tmu_status = EXYNOS_TMU_REG_STATUS,
> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
> + .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
> + .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
> + .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
> + .intclr_rise_shift = EXYNOS_TMU_RISE_INT_SHIFT,
> + .intclr_rise_mask = EXYNOS_TMU_RISE_INT_MASK,
> + .intclr_fall_mask = EXYNOS_TMU_FALL_INT_MASK,
> + .emul_con = EXYNOS_EMUL_CON,
> + .emul_temp_shift = EXYNOS_EMUL_DATA_SHIFT,
> + .emul_time_sh

[RESEND PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-17 Thread Chanwoo Choi
This patch adds the registers, bit fields and compatible strings
required to support for the 1 TMU channels on Exynos3250.

Signed-off-by: Chanwoo Choi 
[Add MUX address setting bits by Jonghwa Lee]
Signed-off-by: Jonghwa Lee 
Acked-by: Kyungmin Park 
Reviewed-by: Amit Daniel Kachhap
---
 .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
 drivers/thermal/samsung/exynos_tmu.c   |  7 +-
 drivers/thermal/samsung/exynos_tmu.h   |  3 +-
 drivers/thermal/samsung/exynos_tmu_data.c  | 89 ++
 drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
 5 files changed, 105 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
index c949092..ae738f5 100644
--- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
+++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
@@ -3,6 +3,7 @@
 ** Required properties:
 
 - compatible : One of the following:
+  "samsung,exynos3250-tmu"
   "samsung,exynos4412-tmu"
   "samsung,exynos4210-tmu"
   "samsung,exynos5250-tmu"
diff --git a/drivers/thermal/samsung/exynos_tmu.c 
b/drivers/thermal/samsung/exynos_tmu.c
index d7ca9f4..a2a08ea 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -505,6 +505,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
 
 static const struct of_device_id exynos_tmu_match[] = {
{
+   .compatible = "samsung,exynos3250-tmu",
+   .data = (void *)EXYNOS3250_TMU_DRV_DATA,
+   },
+   {
.compatible = "samsung,exynos4210-tmu",
.data = (void *)EXYNOS4210_TMU_DRV_DATA,
},
@@ -677,7 +681,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
goto err_clk_sec;
}
 
-   if (pdata->type == SOC_ARCH_EXYNOS4210 ||
+   if (pdata->type == SOC_ARCH_EXYNOS3250 ||
+   pdata->type == SOC_ARCH_EXYNOS4210 ||
pdata->type == SOC_ARCH_EXYNOS4412 ||
pdata->type == SOC_ARCH_EXYNOS5250 ||
pdata->type == SOC_ARCH_EXYNOS5260 ||
diff --git a/drivers/thermal/samsung/exynos_tmu.h 
b/drivers/thermal/samsung/exynos_tmu.h
index edd08cf..1b4a644 100644
--- a/drivers/thermal/samsung/exynos_tmu.h
+++ b/drivers/thermal/samsung/exynos_tmu.h
@@ -40,7 +40,8 @@ enum calibration_mode {
 };
 
 enum soc_type {
-   SOC_ARCH_EXYNOS4210 = 1,
+   SOC_ARCH_EXYNOS3250 = 1,
+   SOC_ARCH_EXYNOS4210,
SOC_ARCH_EXYNOS4412,
SOC_ARCH_EXYNOS5250,
SOC_ARCH_EXYNOS5260,
diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
b/drivers/thermal/samsung/exynos_tmu_data.c
index c1d81dc..aa8e0de 100644
--- a/drivers/thermal/samsung/exynos_tmu_data.c
+++ b/drivers/thermal/samsung/exynos_tmu_data.c
@@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
exynos4210_default_tmu_data = {
 };
 #endif
 
+#if defined(CONFIG_SOC_EXYNOS3250)
+static const struct exynos_tmu_registers exynos3250_tmu_registers = {
+   .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
+   .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
+   .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
+   .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
+   .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
+   .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
+   .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
+   .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
+   .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
+   .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
+   .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
+   .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
+   .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
+   .tmu_status = EXYNOS_TMU_REG_STATUS,
+   .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
+   .threshold_th0 = EXYNOS_THD_TEMP_RISE,
+   .threshold_th1 = EXYNOS_THD_TEMP_FALL,
+   .tmu_inten = EXYNOS_TMU_REG_INTEN,
+   .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
+   .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
+   .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
+   .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
+   .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
+   .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
+   .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
+   .intclr_rise_shift = EXYNOS_TMU_RISE_INT_SHIFT,
+   .intclr_rise_mask = EXYNOS_TMU_RISE_INT_MASK,
+   .intclr_fall_mask = EXYNOS_TMU_FALL_INT_MASK,
+   .emul_con = EXYNOS_EMUL_CON,
+   .emul_temp_shift = EXYNOS_EMUL_DATA_SHIFT,
+   .emul_time_shift = EXYNOS_EMUL_TIME_SHIFT,
+   .emul_time_mask = EXYNOS_EMUL_TIME_MASK,
+};
+
+#define EXYNOS3250_TMU_DATA \
+   .threshold_falling = 10, \
+   .trigger_levels[0] = 70, \
+   .trigger_levels[1] = 95, \
+   .trigger_

Re: [PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-13 Thread Chanwoo Choi
Dear Eduardo,

Could you please review or pick this patch?

Best Regards,
Chanwoo Choi

On 07/10/2014 12:36 PM, Amit Kachhap wrote:
> On Wed, Jul 9, 2014 at 8:30 AM, Chanwoo Choi  wrote:
>> On 07/01/2014 09:33 AM, Chanwoo Choi wrote:
>>> This patch add registers, bit fields and compatible strings for Exynos3250 
>>> TMU
>>> (Thermal Management Unit). Exynos3250 uses the Cortex-A7 dual cores and has
>>> a target speed of 1.0 GHz.
>>>
>>> Signed-off-by: Chanwoo Choi 
>>> [Add MUX address setting bits by Jonghwa Lee]
>>> Signed-off-by: Jonghwa Lee 
>>> Acked-by: Kyungmin Park 
> 
> Changes look fine to me.
> Reviewed-by: Amit Daniel Kachhap
> 
>>> ---
>>>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>>>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>>>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>>>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
>>> ++
>>>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>>>  5 files changed, 105 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
>>> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> index c949092..ae738f5 100644
>>> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> @@ -3,6 +3,7 @@
>>>  ** Required properties:
>>>
>>>  - compatible : One of the following:
>>> +"samsung,exynos3250-tmu"
>>>  "samsung,exynos4412-tmu"
>>>  "samsung,exynos4210-tmu"
>>>  "samsung,exynos5250-tmu"
>>> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
>>> b/drivers/thermal/samsung/exynos_tmu.c
>>> index 2412090..97ebc1e 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu.c
>>> +++ b/drivers/thermal/samsung/exynos_tmu.c
>>> @@ -501,6 +501,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>>>
>>>  static const struct of_device_id exynos_tmu_match[] = {
>>>   {
>>> + .compatible = "samsung,exynos3250-tmu",
>>> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
>>> + },
>>> + {
>>>   .compatible = "samsung,exynos4210-tmu",
>>>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>>>   },
>>> @@ -675,7 +679,8 @@ static int exynos_tmu_probe(struct platform_device 
>>> *pdev)
>>>   goto err_clk_sec;
>>>   }
>>>
>>> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
>>> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
>>> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>>>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>>>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>>>   pdata->type == SOC_ARCH_EXYNOS5260 ||
>>> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
>>> b/drivers/thermal/samsung/exynos_tmu.h
>>> index edd08cf..1b4a644 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu.h
>>> +++ b/drivers/thermal/samsung/exynos_tmu.h
>>> @@ -40,7 +40,8 @@ enum calibration_mode {
>>>  };
>>>
>>>  enum soc_type {
>>> - SOC_ARCH_EXYNOS4210 = 1,
>>> + SOC_ARCH_EXYNOS3250 = 1,
>>> + SOC_ARCH_EXYNOS4210,
>>>   SOC_ARCH_EXYNOS4412,
>>>   SOC_ARCH_EXYNOS5250,
>>>   SOC_ARCH_EXYNOS5260,
>>> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
>>> b/drivers/thermal/samsung/exynos_tmu_data.c
>>> index c1d81dc..aa8e0de 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu_data.c
>>> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
>>> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
>>> exynos4210_default_tmu_data = {
>>>  };
>>>  #endif
>>>
>>> +#if defined(CONFIG_SOC_EXYNOS3250)
>>> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
>>> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
>>> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
>>> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
>>> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
>>> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
>>> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
>>> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
>>> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
>>> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
>>> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
>>> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
>>> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
>>> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
>>> + .tmu_status = EXYNOS_TMU_REG_STATUS,
>>> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
>>> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
>>> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
>>> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
>>> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
>>> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
>>> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
>>> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
>>> + .tmu_int

Re: [PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-13 Thread Chanwoo Choi
On 07/10/2014 12:36 PM, Amit Kachhap wrote:
> On Wed, Jul 9, 2014 at 8:30 AM, Chanwoo Choi  wrote:
>> On 07/01/2014 09:33 AM, Chanwoo Choi wrote:
>>> This patch add registers, bit fields and compatible strings for Exynos3250 
>>> TMU
>>> (Thermal Management Unit). Exynos3250 uses the Cortex-A7 dual cores and has
>>> a target speed of 1.0 GHz.
>>>
>>> Signed-off-by: Chanwoo Choi 
>>> [Add MUX address setting bits by Jonghwa Lee]
>>> Signed-off-by: Jonghwa Lee 
>>> Acked-by: Kyungmin Park 
> 
> Changes look fine to me.
> Reviewed-by: Amit Daniel Kachhap

Thanks for your review.

Best Regards,
Chanwoo Choi

> 
>>> ---
>>>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>>>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>>>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>>>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
>>> ++
>>>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>>>  5 files changed, 105 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
>>> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> index c949092..ae738f5 100644
>>> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>>> @@ -3,6 +3,7 @@
>>>  ** Required properties:
>>>
>>>  - compatible : One of the following:
>>> +"samsung,exynos3250-tmu"
>>>  "samsung,exynos4412-tmu"
>>>  "samsung,exynos4210-tmu"
>>>  "samsung,exynos5250-tmu"
>>> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
>>> b/drivers/thermal/samsung/exynos_tmu.c
>>> index 2412090..97ebc1e 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu.c
>>> +++ b/drivers/thermal/samsung/exynos_tmu.c
>>> @@ -501,6 +501,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>>>
>>>  static const struct of_device_id exynos_tmu_match[] = {
>>>   {
>>> + .compatible = "samsung,exynos3250-tmu",
>>> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
>>> + },
>>> + {
>>>   .compatible = "samsung,exynos4210-tmu",
>>>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>>>   },
>>> @@ -675,7 +679,8 @@ static int exynos_tmu_probe(struct platform_device 
>>> *pdev)
>>>   goto err_clk_sec;
>>>   }
>>>
>>> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
>>> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
>>> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>>>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>>>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>>>   pdata->type == SOC_ARCH_EXYNOS5260 ||
>>> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
>>> b/drivers/thermal/samsung/exynos_tmu.h
>>> index edd08cf..1b4a644 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu.h
>>> +++ b/drivers/thermal/samsung/exynos_tmu.h
>>> @@ -40,7 +40,8 @@ enum calibration_mode {
>>>  };
>>>
>>>  enum soc_type {
>>> - SOC_ARCH_EXYNOS4210 = 1,
>>> + SOC_ARCH_EXYNOS3250 = 1,
>>> + SOC_ARCH_EXYNOS4210,
>>>   SOC_ARCH_EXYNOS4412,
>>>   SOC_ARCH_EXYNOS5250,
>>>   SOC_ARCH_EXYNOS5260,
>>> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
>>> b/drivers/thermal/samsung/exynos_tmu_data.c
>>> index c1d81dc..aa8e0de 100644
>>> --- a/drivers/thermal/samsung/exynos_tmu_data.c
>>> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
>>> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
>>> exynos4210_default_tmu_data = {
>>>  };
>>>  #endif
>>>
>>> +#if defined(CONFIG_SOC_EXYNOS3250)
>>> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
>>> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
>>> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
>>> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
>>> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
>>> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
>>> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
>>> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
>>> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
>>> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
>>> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
>>> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
>>> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
>>> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
>>> + .tmu_status = EXYNOS_TMU_REG_STATUS,
>>> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
>>> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
>>> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
>>> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
>>> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
>>> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
>>> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
>>> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
>>> + .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
>>>

Re: [PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-09 Thread Amit Kachhap
On Wed, Jul 9, 2014 at 8:30 AM, Chanwoo Choi  wrote:
> On 07/01/2014 09:33 AM, Chanwoo Choi wrote:
>> This patch add registers, bit fields and compatible strings for Exynos3250 
>> TMU
>> (Thermal Management Unit). Exynos3250 uses the Cortex-A7 dual cores and has
>> a target speed of 1.0 GHz.
>>
>> Signed-off-by: Chanwoo Choi 
>> [Add MUX address setting bits by Jonghwa Lee]
>> Signed-off-by: Jonghwa Lee 
>> Acked-by: Kyungmin Park 

Changes look fine to me.
Reviewed-by: Amit Daniel Kachhap

>> ---
>>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
>> ++
>>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>>  5 files changed, 105 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
>> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> index c949092..ae738f5 100644
>> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
>> @@ -3,6 +3,7 @@
>>  ** Required properties:
>>
>>  - compatible : One of the following:
>> +"samsung,exynos3250-tmu"
>>  "samsung,exynos4412-tmu"
>>  "samsung,exynos4210-tmu"
>>  "samsung,exynos5250-tmu"
>> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
>> b/drivers/thermal/samsung/exynos_tmu.c
>> index 2412090..97ebc1e 100644
>> --- a/drivers/thermal/samsung/exynos_tmu.c
>> +++ b/drivers/thermal/samsung/exynos_tmu.c
>> @@ -501,6 +501,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>>
>>  static const struct of_device_id exynos_tmu_match[] = {
>>   {
>> + .compatible = "samsung,exynos3250-tmu",
>> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
>> + },
>> + {
>>   .compatible = "samsung,exynos4210-tmu",
>>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>>   },
>> @@ -675,7 +679,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>>   goto err_clk_sec;
>>   }
>>
>> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
>> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
>> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>>   pdata->type == SOC_ARCH_EXYNOS5260 ||
>> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
>> b/drivers/thermal/samsung/exynos_tmu.h
>> index edd08cf..1b4a644 100644
>> --- a/drivers/thermal/samsung/exynos_tmu.h
>> +++ b/drivers/thermal/samsung/exynos_tmu.h
>> @@ -40,7 +40,8 @@ enum calibration_mode {
>>  };
>>
>>  enum soc_type {
>> - SOC_ARCH_EXYNOS4210 = 1,
>> + SOC_ARCH_EXYNOS3250 = 1,
>> + SOC_ARCH_EXYNOS4210,
>>   SOC_ARCH_EXYNOS4412,
>>   SOC_ARCH_EXYNOS5250,
>>   SOC_ARCH_EXYNOS5260,
>> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
>> b/drivers/thermal/samsung/exynos_tmu_data.c
>> index c1d81dc..aa8e0de 100644
>> --- a/drivers/thermal/samsung/exynos_tmu_data.c
>> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
>> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
>> exynos4210_default_tmu_data = {
>>  };
>>  #endif
>>
>> +#if defined(CONFIG_SOC_EXYNOS3250)
>> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
>> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
>> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
>> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
>> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
>> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
>> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
>> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
>> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
>> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
>> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
>> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
>> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
>> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
>> + .tmu_status = EXYNOS_TMU_REG_STATUS,
>> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
>> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
>> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
>> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
>> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
>> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
>> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
>> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
>> + .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
>> + .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
>> + .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
>> + .intclr_rise_shift = EXYNOS_TMU_RISE_INT_SHIFT,
>> + .intclr_rise_mask = EXYNOS_TMU_RISE_INT_MASK,

Re: [PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-07-08 Thread Chanwoo Choi
On 07/01/2014 09:33 AM, Chanwoo Choi wrote:
> This patch add registers, bit fields and compatible strings for Exynos3250 TMU
> (Thermal Management Unit). Exynos3250 uses the Cortex-A7 dual cores and has
> a target speed of 1.0 GHz.
> 
> Signed-off-by: Chanwoo Choi 
> [Add MUX address setting bits by Jonghwa Lee]
> Signed-off-by: Jonghwa Lee 
> Acked-by: Kyungmin Park 
> ---
>  .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
>  drivers/thermal/samsung/exynos_tmu.c   |  7 +-
>  drivers/thermal/samsung/exynos_tmu.h   |  3 +-
>  drivers/thermal/samsung/exynos_tmu_data.c  | 89 
> ++
>  drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
>  5 files changed, 105 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
> b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> index c949092..ae738f5 100644
> --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
> @@ -3,6 +3,7 @@
>  ** Required properties:
>  
>  - compatible : One of the following:
> +"samsung,exynos3250-tmu"
>  "samsung,exynos4412-tmu"
>  "samsung,exynos4210-tmu"
>  "samsung,exynos5250-tmu"
> diff --git a/drivers/thermal/samsung/exynos_tmu.c 
> b/drivers/thermal/samsung/exynos_tmu.c
> index 2412090..97ebc1e 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -501,6 +501,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
>  
>  static const struct of_device_id exynos_tmu_match[] = {
>   {
> + .compatible = "samsung,exynos3250-tmu",
> + .data = (void *)EXYNOS3250_TMU_DRV_DATA,
> + },
> + {
>   .compatible = "samsung,exynos4210-tmu",
>   .data = (void *)EXYNOS4210_TMU_DRV_DATA,
>   },
> @@ -675,7 +679,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>   goto err_clk_sec;
>   }
>  
> - if (pdata->type == SOC_ARCH_EXYNOS4210 ||
> + if (pdata->type == SOC_ARCH_EXYNOS3250 ||
> + pdata->type == SOC_ARCH_EXYNOS4210 ||
>   pdata->type == SOC_ARCH_EXYNOS4412 ||
>   pdata->type == SOC_ARCH_EXYNOS5250 ||
>   pdata->type == SOC_ARCH_EXYNOS5260 ||
> diff --git a/drivers/thermal/samsung/exynos_tmu.h 
> b/drivers/thermal/samsung/exynos_tmu.h
> index edd08cf..1b4a644 100644
> --- a/drivers/thermal/samsung/exynos_tmu.h
> +++ b/drivers/thermal/samsung/exynos_tmu.h
> @@ -40,7 +40,8 @@ enum calibration_mode {
>  };
>  
>  enum soc_type {
> - SOC_ARCH_EXYNOS4210 = 1,
> + SOC_ARCH_EXYNOS3250 = 1,
> + SOC_ARCH_EXYNOS4210,
>   SOC_ARCH_EXYNOS4412,
>   SOC_ARCH_EXYNOS5250,
>   SOC_ARCH_EXYNOS5260,
> diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
> b/drivers/thermal/samsung/exynos_tmu_data.c
> index c1d81dc..aa8e0de 100644
> --- a/drivers/thermal/samsung/exynos_tmu_data.c
> +++ b/drivers/thermal/samsung/exynos_tmu_data.c
> @@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
> exynos4210_default_tmu_data = {
>  };
>  #endif
>  
> +#if defined(CONFIG_SOC_EXYNOS3250)
> +static const struct exynos_tmu_registers exynos3250_tmu_registers = {
> + .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
> + .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
> + .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
> + .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
> + .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
> + .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
> + .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
> + .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
> + .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
> + .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
> + .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
> + .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
> + .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
> + .tmu_status = EXYNOS_TMU_REG_STATUS,
> + .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
> + .threshold_th0 = EXYNOS_THD_TEMP_RISE,
> + .threshold_th1 = EXYNOS_THD_TEMP_FALL,
> + .tmu_inten = EXYNOS_TMU_REG_INTEN,
> + .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
> + .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
> + .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
> + .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
> + .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
> + .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
> + .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
> + .intclr_rise_shift = EXYNOS_TMU_RISE_INT_SHIFT,
> + .intclr_rise_mask = EXYNOS_TMU_RISE_INT_MASK,
> + .intclr_fall_mask = EXYNOS_TMU_FALL_INT_MASK,
> + .emul_con = EXYNOS_EMUL_CON,
> + .emul_temp_shift = EXYNOS_EMUL_DATA_SHIFT,
> + .emul_time_shift = EXYNOS_EMUL_TIME_SHIFT,
> + .emul_time_mask

[PATCH] thermal: samsung: Add TMU support for Exynos3250 SoC

2014-06-30 Thread Chanwoo Choi
This patch add registers, bit fields and compatible strings for Exynos3250 TMU
(Thermal Management Unit). Exynos3250 uses the Cortex-A7 dual cores and has
a target speed of 1.0 GHz.

Signed-off-by: Chanwoo Choi 
[Add MUX address setting bits by Jonghwa Lee]
Signed-off-by: Jonghwa Lee 
Acked-by: Kyungmin Park 
---
 .../devicetree/bindings/thermal/exynos-thermal.txt |  1 +
 drivers/thermal/samsung/exynos_tmu.c   |  7 +-
 drivers/thermal/samsung/exynos_tmu.h   |  3 +-
 drivers/thermal/samsung/exynos_tmu_data.c  | 89 ++
 drivers/thermal/samsung/exynos_tmu_data.h  |  7 ++
 5 files changed, 105 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 
b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
index c949092..ae738f5 100644
--- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
+++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
@@ -3,6 +3,7 @@
 ** Required properties:
 
 - compatible : One of the following:
+  "samsung,exynos3250-tmu"
   "samsung,exynos4412-tmu"
   "samsung,exynos4210-tmu"
   "samsung,exynos5250-tmu"
diff --git a/drivers/thermal/samsung/exynos_tmu.c 
b/drivers/thermal/samsung/exynos_tmu.c
index 2412090..97ebc1e 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -501,6 +501,10 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)
 
 static const struct of_device_id exynos_tmu_match[] = {
{
+   .compatible = "samsung,exynos3250-tmu",
+   .data = (void *)EXYNOS3250_TMU_DRV_DATA,
+   },
+   {
.compatible = "samsung,exynos4210-tmu",
.data = (void *)EXYNOS4210_TMU_DRV_DATA,
},
@@ -675,7 +679,8 @@ static int exynos_tmu_probe(struct platform_device *pdev)
goto err_clk_sec;
}
 
-   if (pdata->type == SOC_ARCH_EXYNOS4210 ||
+   if (pdata->type == SOC_ARCH_EXYNOS3250 ||
+   pdata->type == SOC_ARCH_EXYNOS4210 ||
pdata->type == SOC_ARCH_EXYNOS4412 ||
pdata->type == SOC_ARCH_EXYNOS5250 ||
pdata->type == SOC_ARCH_EXYNOS5260 ||
diff --git a/drivers/thermal/samsung/exynos_tmu.h 
b/drivers/thermal/samsung/exynos_tmu.h
index edd08cf..1b4a644 100644
--- a/drivers/thermal/samsung/exynos_tmu.h
+++ b/drivers/thermal/samsung/exynos_tmu.h
@@ -40,7 +40,8 @@ enum calibration_mode {
 };
 
 enum soc_type {
-   SOC_ARCH_EXYNOS4210 = 1,
+   SOC_ARCH_EXYNOS3250 = 1,
+   SOC_ARCH_EXYNOS4210,
SOC_ARCH_EXYNOS4412,
SOC_ARCH_EXYNOS5250,
SOC_ARCH_EXYNOS5260,
diff --git a/drivers/thermal/samsung/exynos_tmu_data.c 
b/drivers/thermal/samsung/exynos_tmu_data.c
index c1d81dc..aa8e0de 100644
--- a/drivers/thermal/samsung/exynos_tmu_data.c
+++ b/drivers/thermal/samsung/exynos_tmu_data.c
@@ -90,6 +90,95 @@ struct exynos_tmu_init_data const 
exynos4210_default_tmu_data = {
 };
 #endif
 
+#if defined(CONFIG_SOC_EXYNOS3250)
+static const struct exynos_tmu_registers exynos3250_tmu_registers = {
+   .triminfo_data = EXYNOS_TMU_REG_TRIMINFO,
+   .triminfo_25_shift = EXYNOS_TRIMINFO_25_SHIFT,
+   .triminfo_85_shift = EXYNOS_TRIMINFO_85_SHIFT,
+   .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
+   .test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
+   .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
+   .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
+   .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
+   .therm_trip_mode_mask = EXYNOS_TMU_TRIP_MODE_MASK,
+   .therm_trip_en_shift = EXYNOS_TMU_THERM_TRIP_EN_SHIFT,
+   .buf_slope_sel_shift = EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT,
+   .buf_slope_sel_mask = EXYNOS_TMU_BUF_SLOPE_SEL_MASK,
+   .core_en_shift = EXYNOS_TMU_CORE_EN_SHIFT,
+   .tmu_status = EXYNOS_TMU_REG_STATUS,
+   .tmu_cur_temp = EXYNOS_TMU_REG_CURRENT_TEMP,
+   .threshold_th0 = EXYNOS_THD_TEMP_RISE,
+   .threshold_th1 = EXYNOS_THD_TEMP_FALL,
+   .tmu_inten = EXYNOS_TMU_REG_INTEN,
+   .inten_rise0_shift = EXYNOS_TMU_INTEN_RISE0_SHIFT,
+   .inten_rise1_shift = EXYNOS_TMU_INTEN_RISE1_SHIFT,
+   .inten_rise2_shift = EXYNOS_TMU_INTEN_RISE2_SHIFT,
+   .inten_fall0_shift = EXYNOS_TMU_INTEN_FALL0_SHIFT,
+   .tmu_intstat = EXYNOS_TMU_REG_INTSTAT,
+   .tmu_intclear = EXYNOS_TMU_REG_INTCLEAR,
+   .intclr_fall_shift = EXYNOS_TMU_CLEAR_FALL_INT_SHIFT,
+   .intclr_rise_shift = EXYNOS_TMU_RISE_INT_SHIFT,
+   .intclr_rise_mask = EXYNOS_TMU_RISE_INT_MASK,
+   .intclr_fall_mask = EXYNOS_TMU_FALL_INT_MASK,
+   .emul_con = EXYNOS_EMUL_CON,
+   .emul_temp_shift = EXYNOS_EMUL_DATA_SHIFT,
+   .emul_time_shift = EXYNOS_EMUL_TIME_SHIFT,
+   .emul_time_mask = EXYNOS_EMUL_TIME_MASK,
+};
+
+#define EXYNOS3250_TMU_DATA \
+   .threshold_falling = 10, \
+   .trigger_levels[0] = 70, \
+   .trigger_levels[1]