RE: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-08-14 Thread Hongtao Jia

 -Original Message-
 From: Eduardo Valentin [mailto:edubez...@gmail.com]
 Sent: Friday, August 14, 2015 12:29 PM
 To: Jia Hongtao-B38951
 Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; linux-
 p...@vger.kernel.org
 Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support based
 on TMU
 
 Hello Hongtao,
 
 On Fri, Aug 14, 2015 at 03:15:22AM +, Hongtao Jia wrote:
  Hi Eduardo,
 
  In previous mail I asked questions about including header files in
 device tree.
  Don't bother, I have already figured out the solution.
 
  Another questions is about cpu cooling:
  I found out that there is no explicit calling for registering cpu
  cooling device in the of-thermal style drivers.
 
 Your understanding is correct.
 
 
  And Samsung did it in cpufreq driver: drivers/cpufreq/exynos-cpufreq.c
 
 
 Yes.
 
  Should all the of-thermal driver use the same way?
 
 of-thermal won't handle the cooling device registering. It is typically
 registered by the cpufreq driver. Have a look in
   drivers/cpufreq/cpufreq-dt.c
 
  Or is there any recommendation for registering cpu cooling device?
  (I enabled the CONFIG_CPUFREQ_DT and still got no cooling device
  registered)
 
 If your system supports using cpufreq-dt, then it will handle registering
 the cpucooling for you, if you configures the cooling dt properties in
 your DT files.
 
 How does your DT entry look like?

Here is the related code snippet:

cpus {
#address-cells = 1;
#size-cells = 0;

cpu0: PowerPC,e5500@0 {
device_type = cpu;
reg = 0;
clocks = mux0;
next-level-cache = L2_1;
/*cooling-min-level = 0;*/
/*cooling-max-level = 1;*/
#cooling-cells = 2;
L2_1: l2-cache {
next-level-cache = cpc;
};
};
cpu1: PowerPC,e5500@1 {
device_type = cpu;
reg = 1;
clocks = mux1;
next-level-cache = L2_2;
/*cooling-min-level = 0;*/
/*cooling-max-level = 1;*/
#cooling-cells = 2;
L2_2: l2-cache {
next-level-cache = cpc;
};
};
cpu2: PowerPC,e5500@2 {
device_type = cpu;
reg = 2;
clocks = mux2;
next-level-cache = L2_3;
/*cooling-min-level = 0;*/
/*cooling-max-level = 1;*/
#cooling-cells = 2;
L2_3: l2-cache {
next-level-cache = cpc;
};
};
cpu3: PowerPC,e5500@3 {
device_type = cpu;
reg = 3;
clocks = mux3;
next-level-cache = L2_4;
/*cooling-min-level = 0;*/
/*cooling-max-level = 1;*/
#cooling-cells = 2;
L2_4: l2-cache {
next-level-cache = cpc;
};
};

..

thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = 1000;
polling-delay = 5000;

thermal-sensors = tmu;

trips {
cpu_alert: cpu-alert {
temperature = 45000;
hysteresis = 2000;
type = passive;
};
cpu_crit: cpu-crit {
temperature = 95000;
hysteresis = 2000;
type = critical;
};
};

cooling-maps {
map0 {
trip = cpu_alert;
cooling-device =
cpu0 THERMAL_NO_LIMIT
THERMAL_NO_LIMIT;
};
map1 {
trip = cpu_alert;
cooling-device =
cpu1 THERMAL_NO_LIMIT
THERMAL_NO_LIMIT

RE: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-08-13 Thread Hongtao Jia
Hi Eduardo,

In previous mail I asked questions about including header files in device tree.
Don't bother, I have already figured out the solution.

Another questions is about cpu cooling:
I found out that there is no explicit calling for registering cpu cooling
device in the of-thermal style drivers.

And Samsung did it in cpufreq driver: drivers/cpufreq/exynos-cpufreq.c

Should all the of-thermal driver use the same way?
Or is there any recommendation for registering cpu cooling device?
(I enabled the CONFIG_CPUFREQ_DT and still got no cooling device registered)

Thanks.

---
Best Regards,
Hongtao


 -Original Message-
 From: Linuxppc-dev [mailto:linuxppc-dev-
 bounces+b38951=freescale@lists.ozlabs.org] On Behalf Of Hongtao Jia
 Sent: Friday, August 07, 2015 4:15 PM
 To: Eduardo Valentin
 Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; linux-
 p...@vger.kernel.org
 Subject: RE: [PATCH V2] QorIQ/TMU: add thermal management support based
 on TMU
 
 Thanks for your comments.
 Please see my questions inline.
 
 Thanks.
 ---
 Best Regards,
 Hongtao
 
 
  -Original Message-
  From: Eduardo Valentin [mailto:edubez...@gmail.com]
  Sent: Thursday, August 06, 2015 3:43 AM
  To: Jia Hongtao-B38951
  Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood
  Scott-
  B07421
  Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support
  based on TMU
 
  On Thu, Jul 30, 2015 at 08:13:09AM +, Hongtao Jia wrote:
   - Any specific reason why not using OF thermal?
   - No, actually.
  
   I'd like to use OF thermal after some clarification.
  
   Regarding to cooling-maps. For some cases there should be more
   than one cpus as cooling device and they are independent.
   1. Let's say 4. So we need to provide 4 maps like map0-map3. Right?
 
  That would depend on the amount of sensors you have. Do you have one
  sensor per cpu? if the answer is yes, then you probably want to have
  four different map entries, yes, but one on each thermal zone of each
  cpu temperature sensor. if the answer is no, then you would need to
  have all the maps in the same thermal zone.
 
   2. cooling-max-level may vary depend on switch settings or firmware.
  Is that
  OK if I do not provide cooling-min-level and cooling-max-level
  property?
 
  That is already achievable by using the cooling-device property of a
  cooling map.
 
  Please have a look in the example section of the
  Documentation/devicetree/bindings/thermal/thermal.txt
 
 Yes, I read this file.
 So in my understanding:
 There is no need to provide cooling-min-level and cooling-max-level
 property.
 THERMAL_NO_LIMIT value in cooling device node will indicate the driver to
 automatically parse the min and max state, right?
 
 Talking about THERMAL_NO_LIMIT, I need to #include dt-
 bindings/thermal/thermal.h to provide the definition. But I got
 compiling error when build dtb file.
 I did some research and using make t1040qds.dtb in order to involve
 preprocessor.
 But with simply adding #include dt-bindings/thermal/thermal.h to
 t1040si-post.dtsi at line 35 I still got error like this:
 Error: arch/powerpc/boot/dts/fsl/t1040si-post.dtsi:35.1-9 syntax error
 FATAL ERROR: Unable to parse input tree
 
 Could you help me out here.
 Thanks.
 
 
  Let me know if you need further clarification.
 
 
  BR,
 
  Eduardo Valentin
 
  
   Thanks.
   -Hongtao
  
  
-Original Message-
From: Eduardo Valentin [mailto:edubez...@gmail.com]
Sent: Thursday, July 30, 2015 2:56 PM
To: Jia Hongtao-B38951
Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood
Scott-
B07421
Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support
based on TMU
   
On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
 It supports one critical trip point and one passive trip point.
 The cpufreq is used as the cooling device to throttle CPUs when
 the passive trip is crossed.

 Signed-off-by: Jia Hongtao hongtao@freescale.com
 ---
 This patch based on:
 http://patchwork.ozlabs.org/patch/482987/

 Changes for V2:
 * Add tmu-range parse.
 * Use default trend hook.
 * Using latest thermal_zone_bind_cooling_device API.
 * Add calibration check during initialization.
 * Disable/enalbe device when suspend/resume.

  drivers/thermal/Kconfig |  11 ++
  drivers/thermal/Makefile|   1 +
  drivers/thermal/qoriq_thermal.c | 406
 
  3 files changed, 418 insertions(+)  create mode 100644
 drivers/thermal/qoriq_thermal.c

 diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
 index
 118938e..a200745 100644
 --- a/drivers/thermal/Kconfig
 +++ b/drivers/thermal/Kconfig
 @@ -180,6 +180,17 @@ config IMX_THERMAL
 cpufreq is used as the cooling device to throttle CPUs when
  the
 passive trip is crossed

Re: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-08-13 Thread Eduardo Valentin
Hello Hongtao,

On Fri, Aug 14, 2015 at 03:15:22AM +, Hongtao Jia wrote:
 Hi Eduardo,
 
 In previous mail I asked questions about including header files in device 
 tree.
 Don't bother, I have already figured out the solution.
 
 Another questions is about cpu cooling:
 I found out that there is no explicit calling for registering cpu cooling
 device in the of-thermal style drivers.

Your understanding is correct.

 
 And Samsung did it in cpufreq driver: drivers/cpufreq/exynos-cpufreq.c
 

Yes.

 Should all the of-thermal driver use the same way?

of-thermal won't handle the cooling device registering. It is typically
registered by the cpufreq driver. Have a look in
drivers/cpufreq/cpufreq-dt.c

 Or is there any recommendation for registering cpu cooling device?
 (I enabled the CONFIG_CPUFREQ_DT and still got no cooling device registered)

If your system supports using cpufreq-dt, then it will handle
registering the cpucooling for you, if you configures the cooling dt
properties in your DT files.

How does your DT entry look like?

BR,

Eduardo 
 
 Thanks.
 
 ---
 Best Regards,
 Hongtao
 
 
  -Original Message-
  From: Linuxppc-dev [mailto:linuxppc-dev-
  bounces+b38951=freescale@lists.ozlabs.org] On Behalf Of Hongtao Jia
  Sent: Friday, August 07, 2015 4:15 PM
  To: Eduardo Valentin
  Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; linux-
  p...@vger.kernel.org
  Subject: RE: [PATCH V2] QorIQ/TMU: add thermal management support based
  on TMU
  
  Thanks for your comments.
  Please see my questions inline.
  
  Thanks.
  ---
  Best Regards,
  Hongtao
  
  
   -Original Message-
   From: Eduardo Valentin [mailto:edubez...@gmail.com]
   Sent: Thursday, August 06, 2015 3:43 AM
   To: Jia Hongtao-B38951
   Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood
   Scott-
   B07421
   Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support
   based on TMU
  
   On Thu, Jul 30, 2015 at 08:13:09AM +, Hongtao Jia wrote:
- Any specific reason why not using OF thermal?
- No, actually.
   
I'd like to use OF thermal after some clarification.
   
Regarding to cooling-maps. For some cases there should be more
than one cpus as cooling device and they are independent.
1. Let's say 4. So we need to provide 4 maps like map0-map3. Right?
  
   That would depend on the amount of sensors you have. Do you have one
   sensor per cpu? if the answer is yes, then you probably want to have
   four different map entries, yes, but one on each thermal zone of each
   cpu temperature sensor. if the answer is no, then you would need to
   have all the maps in the same thermal zone.
  
2. cooling-max-level may vary depend on switch settings or firmware.
   Is that
   OK if I do not provide cooling-min-level and cooling-max-level
   property?
  
   That is already achievable by using the cooling-device property of a
   cooling map.
  
   Please have a look in the example section of the
   Documentation/devicetree/bindings/thermal/thermal.txt
  
  Yes, I read this file.
  So in my understanding:
  There is no need to provide cooling-min-level and cooling-max-level
  property.
  THERMAL_NO_LIMIT value in cooling device node will indicate the driver to
  automatically parse the min and max state, right?
  
  Talking about THERMAL_NO_LIMIT, I need to #include dt-
  bindings/thermal/thermal.h to provide the definition. But I got
  compiling error when build dtb file.
  I did some research and using make t1040qds.dtb in order to involve
  preprocessor.
  But with simply adding #include dt-bindings/thermal/thermal.h to
  t1040si-post.dtsi at line 35 I still got error like this:
  Error: arch/powerpc/boot/dts/fsl/t1040si-post.dtsi:35.1-9 syntax error
  FATAL ERROR: Unable to parse input tree
  
  Could you help me out here.
  Thanks.
  
  
   Let me know if you need further clarification.
  
  
   BR,
  
   Eduardo Valentin
  
   
Thanks.
-Hongtao
   
   
 -Original Message-
 From: Eduardo Valentin [mailto:edubez...@gmail.com]
 Sent: Thursday, July 30, 2015 2:56 PM
 To: Jia Hongtao-B38951
 Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood
 Scott-
 B07421
 Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support
 based on TMU

 On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
  It supports one critical trip point and one passive trip point.
  The cpufreq is used as the cooling device to throttle CPUs when
  the passive trip is crossed.
 
  Signed-off-by: Jia Hongtao hongtao@freescale.com
  ---
  This patch based on:
  http://patchwork.ozlabs.org/patch/482987/
 
  Changes for V2:
  * Add tmu-range parse.
  * Use default trend hook.
  * Using latest thermal_zone_bind_cooling_device API.
  * Add calibration check during initialization.
  * Disable/enalbe device when suspend/resume

RE: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-08-07 Thread Hongtao Jia
Thanks for your comments.
Please see my questions inline.

Thanks.
---
Best Regards,
Hongtao


 -Original Message-
 From: Eduardo Valentin [mailto:edubez...@gmail.com]
 Sent: Thursday, August 06, 2015 3:43 AM
 To: Jia Hongtao-B38951
 Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood Scott-
 B07421
 Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support based
 on TMU
 
 On Thu, Jul 30, 2015 at 08:13:09AM +, Hongtao Jia wrote:
  - Any specific reason why not using OF thermal?
  - No, actually.
 
  I'd like to use OF thermal after some clarification.
 
  Regarding to cooling-maps. For some cases there should be more than
  one cpus as cooling device and they are independent.
  1. Let's say 4. So we need to provide 4 maps like map0-map3. Right?
 
 That would depend on the amount of sensors you have. Do you have one
 sensor per cpu? if the answer is yes, then you probably want to have four
 different map entries, yes, but one on each thermal zone of each cpu
 temperature sensor. if the answer is no, then you would need to have all
 the maps in the same thermal zone.
 
  2. cooling-max-level may vary depend on switch settings or firmware.
 Is that
 OK if I do not provide cooling-min-level and cooling-max-level
 property?
 
 That is already achievable by using the cooling-device property of a
 cooling map.
 
 Please have a look in the example section of the
 Documentation/devicetree/bindings/thermal/thermal.txt

Yes, I read this file.
So in my understanding:
There is no need to provide cooling-min-level and cooling-max-level 
property.
THERMAL_NO_LIMIT value in cooling device node will indicate the driver to
automatically parse the min and max state, right?

Talking about THERMAL_NO_LIMIT, I need to #include 
dt-bindings/thermal/thermal.h
to provide the definition. But I got compiling error when build dtb file.
I did some research and using make t1040qds.dtb in order to involve 
preprocessor.
But with simply adding #include dt-bindings/thermal/thermal.h to 
t1040si-post.dtsi
at line 35 I still got error like this:
Error: arch/powerpc/boot/dts/fsl/t1040si-post.dtsi:35.1-9 syntax error
FATAL ERROR: Unable to parse input tree

Could you help me out here.
Thanks.

 
 Let me know if you need further clarification.
 
 
 BR,
 
 Eduardo Valentin
 
 
  Thanks.
  -Hongtao
 
 
   -Original Message-
   From: Eduardo Valentin [mailto:edubez...@gmail.com]
   Sent: Thursday, July 30, 2015 2:56 PM
   To: Jia Hongtao-B38951
   Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood
   Scott-
   B07421
   Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support
   based on TMU
  
   On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
It supports one critical trip point and one passive trip point.
The cpufreq is used as the cooling device to throttle CPUs when
the passive trip is crossed.
   
Signed-off-by: Jia Hongtao hongtao@freescale.com
---
This patch based on:
http://patchwork.ozlabs.org/patch/482987/
   
Changes for V2:
* Add tmu-range parse.
* Use default trend hook.
* Using latest thermal_zone_bind_cooling_device API.
* Add calibration check during initialization.
* Disable/enalbe device when suspend/resume.
   
 drivers/thermal/Kconfig |  11 ++
 drivers/thermal/Makefile|   1 +
 drivers/thermal/qoriq_thermal.c | 406

 3 files changed, 418 insertions(+)  create mode 100644
drivers/thermal/qoriq_thermal.c
   
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index
118938e..a200745 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -180,6 +180,17 @@ config IMX_THERMAL
  cpufreq is used as the cooling device to throttle CPUs when
 the
  passive trip is crossed.
   
+config QORIQ_THERMAL
+   tristate Freescale QorIQ Thermal Monitoring Unit
+   depends on CPU_THERMAL
+   depends on OF
+   default n
+   help
+ Enable thermal management based on Freescale QorIQ Thermal
   Monitoring
+ Unit (TMU). It supports one critical trip point and one
+passive
   trip
+ point. The cpufreq is used as the cooling device to
 throttle
+CPUs
   when
+ the passive trip is crossed.
+
 config SPEAR_THERMAL
bool SPEAr thermal sensor driver
depends on PLAT_SPEAR
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index
535dfee..8c25859 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -33,6 +33,7 @@ obj-$(CONFIG_DOVE_THERMAL)+= dove_thermal.o
 obj-$(CONFIG_DB8500_THERMAL)   += db8500_thermal.o
 obj-$(CONFIG_ARMADA_THERMAL)   += armada_thermal.o
 obj-$(CONFIG_IMX_THERMAL)  += imx_thermal.o
+obj-$(CONFIG_QORIQ_THERMAL)+= qoriq_thermal.o
 obj

Re: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-08-05 Thread Eduardo Valentin
On Thu, Jul 30, 2015 at 08:13:09AM +, Hongtao Jia wrote:
 - Any specific reason why not using OF thermal?
 - No, actually.
 
 I'd like to use OF thermal after some clarification.
 
 Regarding to cooling-maps. For some cases there should be more than one cpus
 as cooling device and they are independent.
 1. Let's say 4. So we need to provide 4 maps like map0-map3. Right?

That would depend on the amount of sensors you have. Do you have one
sensor per cpu? if the answer is yes, then you probably want to have
four different map entries, yes, but one on each thermal zone of each
cpu temperature sensor. if the answer is no, then you would need to have
all the maps in the same thermal zone.

 2. cooling-max-level may vary depend on switch settings or firmware. Is that
OK if I do not provide cooling-min-level and cooling-max-level 
 property?

That is already achievable by using the cooling-device property of a
cooling map.

Please have a look in the example section of the
Documentation/devicetree/bindings/thermal/thermal.txt

Let me know if you need further clarification.


BR,

Eduardo Valentin


 Thanks.
 -Hongtao
 
 
  -Original Message-
  From: Eduardo Valentin [mailto:edubez...@gmail.com]
  Sent: Thursday, July 30, 2015 2:56 PM
  To: Jia Hongtao-B38951
  Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood Scott-
  B07421
  Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support based
  on TMU
  
  On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
   It supports one critical trip point and one passive trip point.
   The cpufreq is used as the cooling device to throttle CPUs when the
   passive trip is crossed.
  
   Signed-off-by: Jia Hongtao hongtao@freescale.com
   ---
   This patch based on:
   http://patchwork.ozlabs.org/patch/482987/
  
   Changes for V2:
   * Add tmu-range parse.
   * Use default trend hook.
   * Using latest thermal_zone_bind_cooling_device API.
   * Add calibration check during initialization.
   * Disable/enalbe device when suspend/resume.
  
drivers/thermal/Kconfig |  11 ++
drivers/thermal/Makefile|   1 +
drivers/thermal/qoriq_thermal.c | 406
   
3 files changed, 418 insertions(+)
create mode 100644 drivers/thermal/qoriq_thermal.c
  
   diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index
   118938e..a200745 100644
   --- a/drivers/thermal/Kconfig
   +++ b/drivers/thermal/Kconfig
   @@ -180,6 +180,17 @@ config IMX_THERMAL
   cpufreq is used as the cooling device to throttle CPUs when the
   passive trip is crossed.
  
   +config QORIQ_THERMAL
   + tristate Freescale QorIQ Thermal Monitoring Unit
   + depends on CPU_THERMAL
   + depends on OF
   + default n
   + help
   +   Enable thermal management based on Freescale QorIQ Thermal
  Monitoring
   +   Unit (TMU). It supports one critical trip point and one passive
  trip
   +   point. The cpufreq is used as the cooling device to throttle CPUs
  when
   +   the passive trip is crossed.
   +
config SPEAR_THERMAL
 bool SPEAr thermal sensor driver
 depends on PLAT_SPEAR
   diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile index
   535dfee..8c25859 100644
   --- a/drivers/thermal/Makefile
   +++ b/drivers/thermal/Makefile
   @@ -33,6 +33,7 @@ obj-$(CONFIG_DOVE_THERMAL)  += dove_thermal.o
obj-$(CONFIG_DB8500_THERMAL) += db8500_thermal.o
obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o
obj-$(CONFIG_IMX_THERMAL)+= imx_thermal.o
   +obj-$(CONFIG_QORIQ_THERMAL)  += qoriq_thermal.o
obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
obj-$(CONFIG_INTEL_POWERCLAMP)   += intel_powerclamp.o
obj-$(CONFIG_X86_PKG_TEMP_THERMAL)   += x86_pkg_temp_thermal.o
   diff --git a/drivers/thermal/qoriq_thermal.c
   b/drivers/thermal/qoriq_thermal.c new file mode 100644 index
   000..0694f42
   --- /dev/null
   +++ b/drivers/thermal/qoriq_thermal.c
   @@ -0,0 +1,406 @@
   +/*
   + * Copyright 2015 Freescale Semiconductor, Inc.
   + *
   + * This program is free software; you can redistribute it and/or
   +modify it
   + * under the terms and conditions of the GNU General Public License,
   + * version 2, as published by the Free Software Foundation.
   + *
   + * This program is distributed in the hope it will be useful, but
   +WITHOUT
   + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   +or
   + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   +License for
   + * more details.
   + *
   + */
   +
   +/*
   + * Based on Freescale QorIQ Thermal Monitoring Unit (TMU)  */
   +#include linux/cpufreq.h #include linux/cpu_cooling.h #include
   +linux/module.h #include linux/platform_device.h #include
   +linux/err.h #include linux/io.h #include linux/of.h #include
   +linux/of_address.h #include linux/thermal.h
   +
   +#define SITES_MAX16

RE: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-07-30 Thread Hongtao Jia
- Any specific reason why not using OF thermal?
- No, actually.

I'd like to use OF thermal after some clarification.

Regarding to cooling-maps. For some cases there should be more than one cpus
as cooling device and they are independent.
1. Let's say 4. So we need to provide 4 maps like map0-map3. Right?
2. cooling-max-level may vary depend on switch settings or firmware. Is that
   OK if I do not provide cooling-min-level and cooling-max-level property?
   
Thanks.
-Hongtao


 -Original Message-
 From: Eduardo Valentin [mailto:edubez...@gmail.com]
 Sent: Thursday, July 30, 2015 2:56 PM
 To: Jia Hongtao-B38951
 Cc: linux...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Wood Scott-
 B07421
 Subject: Re: [PATCH V2] QorIQ/TMU: add thermal management support based
 on TMU
 
 On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
  It supports one critical trip point and one passive trip point.
  The cpufreq is used as the cooling device to throttle CPUs when the
  passive trip is crossed.
 
  Signed-off-by: Jia Hongtao hongtao@freescale.com
  ---
  This patch based on:
  http://patchwork.ozlabs.org/patch/482987/
 
  Changes for V2:
  * Add tmu-range parse.
  * Use default trend hook.
  * Using latest thermal_zone_bind_cooling_device API.
  * Add calibration check during initialization.
  * Disable/enalbe device when suspend/resume.
 
   drivers/thermal/Kconfig |  11 ++
   drivers/thermal/Makefile|   1 +
   drivers/thermal/qoriq_thermal.c | 406
  
   3 files changed, 418 insertions(+)
   create mode 100644 drivers/thermal/qoriq_thermal.c
 
  diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index
  118938e..a200745 100644
  --- a/drivers/thermal/Kconfig
  +++ b/drivers/thermal/Kconfig
  @@ -180,6 +180,17 @@ config IMX_THERMAL
cpufreq is used as the cooling device to throttle CPUs when the
passive trip is crossed.
 
  +config QORIQ_THERMAL
  +   tristate Freescale QorIQ Thermal Monitoring Unit
  +   depends on CPU_THERMAL
  +   depends on OF
  +   default n
  +   help
  + Enable thermal management based on Freescale QorIQ Thermal
 Monitoring
  + Unit (TMU). It supports one critical trip point and one passive
 trip
  + point. The cpufreq is used as the cooling device to throttle CPUs
 when
  + the passive trip is crossed.
  +
   config SPEAR_THERMAL
  bool SPEAr thermal sensor driver
  depends on PLAT_SPEAR
  diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile index
  535dfee..8c25859 100644
  --- a/drivers/thermal/Makefile
  +++ b/drivers/thermal/Makefile
  @@ -33,6 +33,7 @@ obj-$(CONFIG_DOVE_THERMAL)+= dove_thermal.o
   obj-$(CONFIG_DB8500_THERMAL)   += db8500_thermal.o
   obj-$(CONFIG_ARMADA_THERMAL)   += armada_thermal.o
   obj-$(CONFIG_IMX_THERMAL)  += imx_thermal.o
  +obj-$(CONFIG_QORIQ_THERMAL)+= qoriq_thermal.o
   obj-$(CONFIG_DB8500_CPUFREQ_COOLING)   += db8500_cpufreq_cooling.o
   obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o
   obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o
  diff --git a/drivers/thermal/qoriq_thermal.c
  b/drivers/thermal/qoriq_thermal.c new file mode 100644 index
  000..0694f42
  --- /dev/null
  +++ b/drivers/thermal/qoriq_thermal.c
  @@ -0,0 +1,406 @@
  +/*
  + * Copyright 2015 Freescale Semiconductor, Inc.
  + *
  + * This program is free software; you can redistribute it and/or
  +modify it
  + * under the terms and conditions of the GNU General Public License,
  + * version 2, as published by the Free Software Foundation.
  + *
  + * This program is distributed in the hope it will be useful, but
  +WITHOUT
  + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  +or
  + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  +License for
  + * more details.
  + *
  + */
  +
  +/*
  + * Based on Freescale QorIQ Thermal Monitoring Unit (TMU)  */
  +#include linux/cpufreq.h #include linux/cpu_cooling.h #include
  +linux/module.h #include linux/platform_device.h #include
  +linux/err.h #include linux/io.h #include linux/of.h #include
  +linux/of_address.h #include linux/thermal.h
  +
  +#define SITES_MAX  16
  +
  +#define TMU_TEMP_PASSIVE   85000
  +#define TMU_TEMP_CRITICAL  95000
  +
  +#define TMU_PASSIVE_DELAY  1000/* Milliseconds */
  +#define TMU_POLLING_DELAY  5000
  +
  +/* The driver supports 1 passive trip point and 1 critical trip point
  +*/ enum tmu_thermal_trip {
  +   TMU_TRIP_PASSIVE,
  +   TMU_TRIP_CRITICAL,
  +   TMU_TRIP_NUM,
  +};
  +
  +/*
  + * QorIQ TMU Registers
  + */
  +struct qoriq_tmu_site_regs {
  +   __be32 tritsr;  /* Immediate Temperature Site Register */
  +   __be32 tratsr;  /* Average Temperature Site Register */
  +   u8 res0[0x8];
  +} __packed;
  +
  +struct qoriq_tmu_regs {
  +   __be32 tmr; /* Mode Register */
  +#define TMR_DISABLE0x0
  +#define TMR_ME

Re: [PATCH V2] QorIQ/TMU: add thermal management support based on TMU

2015-07-30 Thread Eduardo Valentin
On Wed, Jul 29, 2015 at 02:19:39PM +0800, Jia Hongtao wrote:
 It supports one critical trip point and one passive trip point.
 The cpufreq is used as the cooling device to throttle CPUs when
 the passive trip is crossed.
 
 Signed-off-by: Jia Hongtao hongtao@freescale.com
 ---
 This patch based on:
 http://patchwork.ozlabs.org/patch/482987/
 
 Changes for V2:
 * Add tmu-range parse.
 * Use default trend hook.
 * Using latest thermal_zone_bind_cooling_device API.
 * Add calibration check during initialization.
 * Disable/enalbe device when suspend/resume.
 
  drivers/thermal/Kconfig |  11 ++
  drivers/thermal/Makefile|   1 +
  drivers/thermal/qoriq_thermal.c | 406 
 
  3 files changed, 418 insertions(+)
  create mode 100644 drivers/thermal/qoriq_thermal.c
 
 diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
 index 118938e..a200745 100644
 --- a/drivers/thermal/Kconfig
 +++ b/drivers/thermal/Kconfig
 @@ -180,6 +180,17 @@ config IMX_THERMAL
 cpufreq is used as the cooling device to throttle CPUs when the
 passive trip is crossed.
  
 +config QORIQ_THERMAL
 + tristate Freescale QorIQ Thermal Monitoring Unit
 + depends on CPU_THERMAL
 + depends on OF
 + default n
 + help
 +   Enable thermal management based on Freescale QorIQ Thermal Monitoring
 +   Unit (TMU). It supports one critical trip point and one passive trip
 +   point. The cpufreq is used as the cooling device to throttle CPUs when
 +   the passive trip is crossed.
 +
  config SPEAR_THERMAL
   bool SPEAr thermal sensor driver
   depends on PLAT_SPEAR
 diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
 index 535dfee..8c25859 100644
 --- a/drivers/thermal/Makefile
 +++ b/drivers/thermal/Makefile
 @@ -33,6 +33,7 @@ obj-$(CONFIG_DOVE_THERMAL)  += dove_thermal.o
  obj-$(CONFIG_DB8500_THERMAL) += db8500_thermal.o
  obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o
  obj-$(CONFIG_IMX_THERMAL)+= imx_thermal.o
 +obj-$(CONFIG_QORIQ_THERMAL)  += qoriq_thermal.o
  obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
  obj-$(CONFIG_INTEL_POWERCLAMP)   += intel_powerclamp.o
  obj-$(CONFIG_X86_PKG_TEMP_THERMAL)   += x86_pkg_temp_thermal.o
 diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c
 new file mode 100644
 index 000..0694f42
 --- /dev/null
 +++ b/drivers/thermal/qoriq_thermal.c
 @@ -0,0 +1,406 @@
 +/*
 + * Copyright 2015 Freescale Semiconductor, Inc.
 + *
 + * This program is free software; you can redistribute it and/or modify it
 + * under the terms and conditions of the GNU General Public License,
 + * version 2, as published by the Free Software Foundation.
 + *
 + * This program is distributed in the hope it will be useful, but WITHOUT
 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 + * more details.
 + *
 + */
 +
 +/*
 + * Based on Freescale QorIQ Thermal Monitoring Unit (TMU)
 + */
 +#include linux/cpufreq.h
 +#include linux/cpu_cooling.h
 +#include linux/module.h
 +#include linux/platform_device.h
 +#include linux/err.h
 +#include linux/io.h
 +#include linux/of.h
 +#include linux/of_address.h
 +#include linux/thermal.h
 +
 +#define SITES_MAX16
 +
 +#define TMU_TEMP_PASSIVE 85000
 +#define TMU_TEMP_CRITICAL95000
 +
 +#define TMU_PASSIVE_DELAY1000/* Milliseconds */
 +#define TMU_POLLING_DELAY5000
 +
 +/* The driver supports 1 passive trip point and 1 critical trip point */
 +enum tmu_thermal_trip {
 + TMU_TRIP_PASSIVE,
 + TMU_TRIP_CRITICAL,
 + TMU_TRIP_NUM,
 +};
 +
 +/*
 + * QorIQ TMU Registers
 + */
 +struct qoriq_tmu_site_regs {
 + __be32 tritsr;  /* Immediate Temperature Site Register */
 + __be32 tratsr;  /* Average Temperature Site Register */
 + u8 res0[0x8];
 +} __packed;
 +
 +struct qoriq_tmu_regs {
 + __be32 tmr; /* Mode Register */
 +#define TMR_DISABLE  0x0
 +#define TMR_ME   0x8000
 +#define TMR_ALPF 0x0c00
 +#define TMR_MSITE0x8000
 +#define TMR_ALL  (TMR_ME | TMR_ALPF | TMR_MSITE)
 + __be32 tsr; /* Status Register */
 + __be32 tmtmir;  /* Temperature measurement interval Register */
 +#define TMTMIR_DEFAULT   0x0007
 + u8 res0[0x14];
 + __be32 tier;/* Interrupt Enable Register */
 +#define TIER_DISABLE 0x0
 + __be32 tidr;/* Interrupt Detect Register */
 + __be32 tiscr;   /* Interrupt Site Capture Register */
 + __be32 ticscr;  /* Interrupt Critical Site Capture Register */
 + u8 res1[0x10];
 + __be32 tmhtcrh; /* High Temperature Capture Register */
 + __be32 tmhtcrl; /* Low Temperature Capture Register */
 + u8 res2[0x8];
 + __be32 tmhtitr; /* High Temperature