Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-29 Thread Peter Feuerer

Hi Javi,

Javi Merino writes:


On Tue, Oct 28, 2014 at 07:33:39PM +, Peter Feuerer wrote:

Hi Rui,

I wonder whether you've had time to apply my set of patches already?  Would 
you please be so kind to just send me a short reply?


The bang-bang governor was merged and is part of v3.18-rc2:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8264fce6de03f3915e2301f52f181a982718a8cb


Thanks for your mail.

Seems like the other 5 patches of the series were not applied.  So I 
need to take care again, or?


kind regards,
--peter;




Cheers,
Javi


Peter Feuerer writes:

> Hi Rui,
> 
> Zhang Rui writes:
> 
>> On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

>>> Hi Rui,
>>> 
>>> Peter Feuerer writes:
>>> 
>>> > The bang-bang thermal governor uses a hysteresis to switch abruptly on

>>> > or off a cooling device.  It is intended to control fans, which can
>>> > not be throttled but just switched on or off.
>>> > Bang-bang cannot be set as default governor as it is intended for
>>> > special devices only.  For those special devices the driver needs to
>>> > explicitely request it.
>>> > 
>>> > Cc: Andrew Morton 

>>> > Cc: Zhang Rui 
>>> 
>>> Anything that prevents you from giving your acked-by?
>>> 
>> NO.
>> 
>> I'll queue them for 3.18.
> 
> Are all 6 patches in for 3.18 as you promissed?
> 
> kind regards,

> --peter;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-29 Thread Javi Merino
On Tue, Oct 28, 2014 at 07:33:39PM +, Peter Feuerer wrote:
> Hi Rui,
> 
> I wonder whether you've had time to apply my set of patches already?  Would 
> you please be so kind to just send me a short reply?

The bang-bang governor was merged and is part of v3.18-rc2:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8264fce6de03f3915e2301f52f181a982718a8cb

Cheers,
Javi

> Peter Feuerer writes:
> 
> > Hi Rui,
> > 
> > Zhang Rui writes:
> > 
> >> On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:
> >>> Hi Rui,
> >>> 
> >>> Peter Feuerer writes:
> >>> 
> >>> > The bang-bang thermal governor uses a hysteresis to switch abruptly on
> >>> > or off a cooling device.  It is intended to control fans, which can
> >>> > not be throttled but just switched on or off.
> >>> > Bang-bang cannot be set as default governor as it is intended for
> >>> > special devices only.  For those special devices the driver needs to
> >>> > explicitely request it.
> >>> > 
> >>> > Cc: Andrew Morton 
> >>> > Cc: Zhang Rui 
> >>> 
> >>> Anything that prevents you from giving your acked-by?
> >>> 
> >> NO.
> >> 
> >> I'll queue them for 3.18.
> > 
> > Are all 6 patches in for 3.18 as you promissed?
> > 
> > kind regards,
> > --peter;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-29 Thread Javi Merino
On Tue, Oct 28, 2014 at 07:33:39PM +, Peter Feuerer wrote:
 Hi Rui,
 
 I wonder whether you've had time to apply my set of patches already?  Would 
 you please be so kind to just send me a short reply?

The bang-bang governor was merged and is part of v3.18-rc2:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8264fce6de03f3915e2301f52f181a982718a8cb

Cheers,
Javi

 Peter Feuerer writes:
 
  Hi Rui,
  
  Zhang Rui writes:
  
  On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:
  Hi Rui,
  
  Peter Feuerer writes:
  
   The bang-bang thermal governor uses a hysteresis to switch abruptly on
   or off a cooling device.  It is intended to control fans, which can
   not be throttled but just switched on or off.
   Bang-bang cannot be set as default governor as it is intended for
   special devices only.  For those special devices the driver needs to
   explicitely request it.
   
   Cc: Andrew Morton a...@linux-foundation.org
   Cc: Zhang Rui rui.zh...@intel.com
  
  Anything that prevents you from giving your acked-by?
  
  NO.
  
  I'll queue them for 3.18.
  
  Are all 6 patches in for 3.18 as you promissed?
  
  kind regards,
  --peter;
 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/
 

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-29 Thread Peter Feuerer

Hi Javi,

Javi Merino writes:


On Tue, Oct 28, 2014 at 07:33:39PM +, Peter Feuerer wrote:

Hi Rui,

I wonder whether you've had time to apply my set of patches already?  Would 
you please be so kind to just send me a short reply?


The bang-bang governor was merged and is part of v3.18-rc2:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8264fce6de03f3915e2301f52f181a982718a8cb


Thanks for your mail.

Seems like the other 5 patches of the series were not applied.  So I 
need to take care again, or?


kind regards,
--peter;




Cheers,
Javi


Peter Feuerer writes:

 Hi Rui,
 
 Zhang Rui writes:
 
 On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

 Hi Rui,
 
 Peter Feuerer writes:
 
  The bang-bang thermal governor uses a hysteresis to switch abruptly on

  or off a cooling device.  It is intended to control fans, which can
  not be throttled but just switched on or off.
  Bang-bang cannot be set as default governor as it is intended for
  special devices only.  For those special devices the driver needs to
  explicitely request it.
  
  Cc: Andrew Morton a...@linux-foundation.org

  Cc: Zhang Rui rui.zh...@intel.com
 
 Anything that prevents you from giving your acked-by?
 
 NO.
 
 I'll queue them for 3.18.
 
 Are all 6 patches in for 3.18 as you promissed?
 
 kind regards,

 --peter;
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/




--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-28 Thread Peter Feuerer

Hi Rui,

I wonder whether you've had time to apply my set of patches already?  Would 
you please be so kind to just send me a short reply?


thanks and kind regards,
--peter;


Peter Feuerer writes:


Hi Rui,

Zhang Rui writes:


On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

Hi Rui,

Peter Feuerer writes:

> The bang-bang thermal governor uses a hysteresis to switch abruptly on
> or off a cooling device.  It is intended to control fans, which can
> not be throttled but just switched on or off.
> Bang-bang cannot be set as default governor as it is intended for
> special devices only.  For those special devices the driver needs to
> explicitely request it.
> 
> Cc: Andrew Morton 

> Cc: Zhang Rui 

Anything that prevents you from giving your acked-by?


NO.

I'll queue them for 3.18.


Are all 6 patches in for 3.18 as you promissed?

kind regards,
--peter;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-28 Thread Peter Feuerer

Hi Rui,

I wonder whether you've had time to apply my set of patches already?  Would 
you please be so kind to just send me a short reply?


thanks and kind regards,
--peter;


Peter Feuerer writes:


Hi Rui,

Zhang Rui writes:


On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

Hi Rui,

Peter Feuerer writes:

 The bang-bang thermal governor uses a hysteresis to switch abruptly on
 or off a cooling device.  It is intended to control fans, which can
 not be throttled but just switched on or off.
 Bang-bang cannot be set as default governor as it is intended for
 special devices only.  For those special devices the driver needs to
 explicitely request it.
 
 Cc: Andrew Morton a...@linux-foundation.org

 Cc: Zhang Rui rui.zh...@intel.com

Anything that prevents you from giving your acked-by?


NO.

I'll queue them for 3.18.


Are all 6 patches in for 3.18 as you promissed?

kind regards,
--peter;

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-21 Thread Peter Feuerer

Hi Rui,

Zhang Rui writes:


On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

Hi Rui,

Peter Feuerer writes:

> The bang-bang thermal governor uses a hysteresis to switch abruptly on
> or off a cooling device.  It is intended to control fans, which can
> not be throttled but just switched on or off.
> Bang-bang cannot be set as default governor as it is intended for
> special devices only.  For those special devices the driver needs to
> explicitely request it.
> 
> Cc: Andrew Morton 

> Cc: Zhang Rui 

Anything that prevents you from giving your acked-by?


NO.

I'll queue them for 3.18.


Are all 6 patches in for 3.18 as you promissed?

kind regards,
--peter;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-10-21 Thread Peter Feuerer

Hi Rui,

Zhang Rui writes:


On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:

Hi Rui,

Peter Feuerer writes:

 The bang-bang thermal governor uses a hysteresis to switch abruptly on
 or off a cooling device.  It is intended to control fans, which can
 not be throttled but just switched on or off.
 Bang-bang cannot be set as default governor as it is intended for
 special devices only.  For those special devices the driver needs to
 explicitely request it.
 
 Cc: Andrew Morton a...@linux-foundation.org

 Cc: Zhang Rui rui.zh...@intel.com

Anything that prevents you from giving your acked-by?


NO.

I'll queue them for 3.18.


Are all 6 patches in for 3.18 as you promissed?

kind regards,
--peter;
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-27 Thread Zhang Rui
On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:
> Hi Rui,
> 
> Peter Feuerer writes:
> 
> > The bang-bang thermal governor uses a hysteresis to switch abruptly on
> > or off a cooling device.  It is intended to control fans, which can
> > not be throttled but just switched on or off.
> > Bang-bang cannot be set as default governor as it is intended for
> > special devices only.  For those special devices the driver needs to
> > explicitely request it.
> > 
> > Cc: Andrew Morton 
> > Cc: Zhang Rui 
> 
> Anything that prevents you from giving your acked-by?
> 
NO.

I'll queue them for 3.18.

thanks,
rui

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-27 Thread Zhang Rui
On Sat, 2014-07-26 at 16:14 +0200, Peter Feuerer wrote:
 Hi Rui,
 
 Peter Feuerer writes:
 
  The bang-bang thermal governor uses a hysteresis to switch abruptly on
  or off a cooling device.  It is intended to control fans, which can
  not be throttled but just switched on or off.
  Bang-bang cannot be set as default governor as it is intended for
  special devices only.  For those special devices the driver needs to
  explicitely request it.
  
  Cc: Andrew Morton a...@linux-foundation.org
  Cc: Zhang Rui rui.zh...@intel.com
 
 Anything that prevents you from giving your acked-by?
 
NO.

I'll queue them for 3.18.

thanks,
rui

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-26 Thread Peter Feuerer

Hi Rui,

Peter Feuerer writes:


The bang-bang thermal governor uses a hysteresis to switch abruptly on
or off a cooling device.  It is intended to control fans, which can
not be throttled but just switched on or off.
Bang-bang cannot be set as default governor as it is intended for
special devices only.  For those special devices the driver needs to
explicitely request it.

Cc: Andrew Morton 
Cc: Zhang Rui 


Anything that prevents you from giving your acked-by?

[...]

--
kind regards,
--peter;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-26 Thread Peter Feuerer

Hi Rui,

Peter Feuerer writes:


The bang-bang thermal governor uses a hysteresis to switch abruptly on
or off a cooling device.  It is intended to control fans, which can
not be throttled but just switched on or off.
Bang-bang cannot be set as default governor as it is intended for
special devices only.  For those special devices the driver needs to
explicitely request it.

Cc: Andrew Morton a...@linux-foundation.org
Cc: Zhang Rui rui.zh...@intel.com


Anything that prevents you from giving your acked-by?

[...]

--
kind regards,
--peter;
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-22 Thread Peter Feuerer
The bang-bang thermal governor uses a hysteresis to switch abruptly on
or off a cooling device.  It is intended to control fans, which can
not be throttled but just switched on or off.
Bang-bang cannot be set as default governor as it is intended for
special devices only.  For those special devices the driver needs to
explicitely request it.

Cc: Andrew Morton 
Cc: Zhang Rui 
Cc: Andreas Mohr 
Cc: Borislav Petkov 
Cc: Javi Merino 
Cc: linux...@vger.kernel.org
Signed-off-by: Peter Feuerer 
---
 drivers/thermal/Kconfig |  10 +++
 drivers/thermal/Makefile|   1 +
 drivers/thermal/gov_bang_bang.c | 131 
 drivers/thermal/thermal_core.c  |   5 ++
 drivers/thermal/thermal_core.h  |   8 +++
 5 files changed, 155 insertions(+)
 create mode 100644 drivers/thermal/gov_bang_bang.c

diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index f9a1386..fa14d56 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -84,6 +84,16 @@ config THERMAL_GOV_STEP_WISE
  Enable this to manage platform thermals using a simple linear
  governor.
 
+config THERMAL_GOV_BANG_BANG
+   bool "Bang Bang thermal governor"
+   default n
+   help
+ Enable this to manage platform thermals using bang bang governor.
+
+ Say 'Y' here if you want to use two point temperature regulation
+ used for fans without throttling.  Some fan drivers depend on this
+ governor to be enabled (e.g. acerhdf).
+
 config THERMAL_GOV_USER_SPACE
bool "User_space thermal governor"
help
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index de0636a..a675980 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -11,6 +11,7 @@ thermal_sys-$(CONFIG_THERMAL_OF)  += of-thermal.o
 
 # governors
 thermal_sys-$(CONFIG_THERMAL_GOV_FAIR_SHARE)   += fair_share.o
+thermal_sys-$(CONFIG_THERMAL_GOV_BANG_BANG)+= gov_bang_bang.o
 thermal_sys-$(CONFIG_THERMAL_GOV_STEP_WISE)+= step_wise.o
 thermal_sys-$(CONFIG_THERMAL_GOV_USER_SPACE)   += user_space.o
 
diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c
new file mode 100644
index 000..c5dd76b
--- /dev/null
+++ b/drivers/thermal/gov_bang_bang.c
@@ -0,0 +1,131 @@
+/*
+ *  gov_bang_bang.c - A simple thermal throttling governor using hysteresis
+ *
+ *  Copyright (C) 2014 Peter Feuerer 
+ *
+ *  Based on step_wise.c with following Copyrights:
+ *  Copyright (C) 2012 Intel Corp
+ *  Copyright (C) 2012 Durgadoss R 
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that 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.
+ *
+ */
+
+#include 
+
+#include "thermal_core.h"
+
+static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
+{
+   long trip_temp;
+   unsigned long trip_hyst;
+   struct thermal_instance *instance;
+
+   tz->ops->get_trip_temp(tz, trip, _temp);
+   tz->ops->get_trip_hyst(tz, trip, _hyst);
+
+   dev_dbg(>device, "Trip%d[temp=%ld]:temp=%d:hyst=%ld\n",
+   trip, trip_temp, tz->temperature,
+   trip_hyst);
+
+   mutex_lock(>lock);
+
+   list_for_each_entry(instance, >thermal_instances, tz_node) {
+   if (instance->trip != trip)
+   continue;
+
+   /* in case fan is in initial state, switch the fan off */
+   if (instance->target == THERMAL_NO_TARGET)
+   instance->target = 0;
+
+   /* in case fan is neither on nor off set the fan to active */
+   if (instance->target != 0 && instance->target != 1) {
+   pr_warn("Thermal instance %s controlled by bang-bang 
has unexpected state: %ld\n",
+   instance->name, instance->target);
+   instance->target = 1;
+   }
+
+   /*
+* enable fan when temperature exceeds trip_temp and disable
+* the fan in case it falls below trip_temp minus hysteresis
+*/
+   if (instance->target == 0 && tz->temperature >= trip_temp)
+   instance->target = 1;
+   else if (instance->target == 1 &&
+   tz->temperature < trip_temp - trip_hyst)
+   instance->target = 0;
+
+   dev_dbg(>cdev->device, "target=%d\n",
+   (int)instance->target);
+
+   instance->cdev->updated = false; /* cdev needs update */
+   }
+
+   

[PATCH v5 3/6] thermal: Added Bang-bang thermal governor

2014-07-22 Thread Peter Feuerer
The bang-bang thermal governor uses a hysteresis to switch abruptly on
or off a cooling device.  It is intended to control fans, which can
not be throttled but just switched on or off.
Bang-bang cannot be set as default governor as it is intended for
special devices only.  For those special devices the driver needs to
explicitely request it.

Cc: Andrew Morton a...@linux-foundation.org
Cc: Zhang Rui rui.zh...@intel.com
Cc: Andreas Mohr a...@lisas.de
Cc: Borislav Petkov b...@suse.de
Cc: Javi Merino javi.mer...@arm.com
Cc: linux...@vger.kernel.org
Signed-off-by: Peter Feuerer pe...@piie.net
---
 drivers/thermal/Kconfig |  10 +++
 drivers/thermal/Makefile|   1 +
 drivers/thermal/gov_bang_bang.c | 131 
 drivers/thermal/thermal_core.c  |   5 ++
 drivers/thermal/thermal_core.h  |   8 +++
 5 files changed, 155 insertions(+)
 create mode 100644 drivers/thermal/gov_bang_bang.c

diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index f9a1386..fa14d56 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -84,6 +84,16 @@ config THERMAL_GOV_STEP_WISE
  Enable this to manage platform thermals using a simple linear
  governor.
 
+config THERMAL_GOV_BANG_BANG
+   bool Bang Bang thermal governor
+   default n
+   help
+ Enable this to manage platform thermals using bang bang governor.
+
+ Say 'Y' here if you want to use two point temperature regulation
+ used for fans without throttling.  Some fan drivers depend on this
+ governor to be enabled (e.g. acerhdf).
+
 config THERMAL_GOV_USER_SPACE
bool User_space thermal governor
help
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index de0636a..a675980 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -11,6 +11,7 @@ thermal_sys-$(CONFIG_THERMAL_OF)  += of-thermal.o
 
 # governors
 thermal_sys-$(CONFIG_THERMAL_GOV_FAIR_SHARE)   += fair_share.o
+thermal_sys-$(CONFIG_THERMAL_GOV_BANG_BANG)+= gov_bang_bang.o
 thermal_sys-$(CONFIG_THERMAL_GOV_STEP_WISE)+= step_wise.o
 thermal_sys-$(CONFIG_THERMAL_GOV_USER_SPACE)   += user_space.o
 
diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c
new file mode 100644
index 000..c5dd76b
--- /dev/null
+++ b/drivers/thermal/gov_bang_bang.c
@@ -0,0 +1,131 @@
+/*
+ *  gov_bang_bang.c - A simple thermal throttling governor using hysteresis
+ *
+ *  Copyright (C) 2014 Peter Feuerer pe...@piie.net
+ *
+ *  Based on step_wise.c with following Copyrights:
+ *  Copyright (C) 2012 Intel Corp
+ *  Copyright (C) 2012 Durgadoss R durgados...@intel.com
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that 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.
+ *
+ */
+
+#include linux/thermal.h
+
+#include thermal_core.h
+
+static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
+{
+   long trip_temp;
+   unsigned long trip_hyst;
+   struct thermal_instance *instance;
+
+   tz-ops-get_trip_temp(tz, trip, trip_temp);
+   tz-ops-get_trip_hyst(tz, trip, trip_hyst);
+
+   dev_dbg(tz-device, Trip%d[temp=%ld]:temp=%d:hyst=%ld\n,
+   trip, trip_temp, tz-temperature,
+   trip_hyst);
+
+   mutex_lock(tz-lock);
+
+   list_for_each_entry(instance, tz-thermal_instances, tz_node) {
+   if (instance-trip != trip)
+   continue;
+
+   /* in case fan is in initial state, switch the fan off */
+   if (instance-target == THERMAL_NO_TARGET)
+   instance-target = 0;
+
+   /* in case fan is neither on nor off set the fan to active */
+   if (instance-target != 0  instance-target != 1) {
+   pr_warn(Thermal instance %s controlled by bang-bang 
has unexpected state: %ld\n,
+   instance-name, instance-target);
+   instance-target = 1;
+   }
+
+   /*
+* enable fan when temperature exceeds trip_temp and disable
+* the fan in case it falls below trip_temp minus hysteresis
+*/
+   if (instance-target == 0  tz-temperature = trip_temp)
+   instance-target = 1;
+   else if (instance-target == 1 
+   tz-temperature  trip_temp - trip_hyst)
+   instance-target = 0;
+
+   dev_dbg(instance-cdev-device, target=%d\n,
+