Hi, 14. Mai 2016 13:47 Uhr, "Michele Di Giorgio" <[email protected]> schrieb: > Bang-bang thermal governor uses trip point hysteresis to make decisions. > Hysteresis is a required property in the device tree for trip points, but it > is > an optional thermal zone device operation. Hence, we need to check whether the > function pointer is valid or not. > > If it is not available, we assume the hysteresis to be zero. Consequently, a > highly varying temperature will make the governor continuosly switch a cooling > device ON and OFF. > > CC: Zhang Rui <[email protected]> > CC: Eduardo Valentin <[email protected]> > CC: Peter Feuerer <[email protected]> > Signed-off-by: Michele Di Giorgio <[email protected]>
Acked-by: Peter Feuerer <[email protected]> Thanks. -- kind regards, --peter; > --- > Using trip_hyst == 0 makes the governor work sensibly but may cause > oscillations > of the control signals of a cooling device. An alternative to this could be to > fail the registration of the thermal governor. > > Another way would be to set the default value of the hysteresis to x% of the > trip temperature, to make the governor less sensitive to highly varying > inputs. > > drivers/thermal/gov_bang_bang.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c > index 39d1519..bb118a1 100644 > --- a/drivers/thermal/gov_bang_bang.c > +++ b/drivers/thermal/gov_bang_bang.c > @@ -29,7 +29,13 @@ static void thermal_zone_trip_update(struct > thermal_zone_device *tz, int trip) > struct thermal_instance *instance; > > tz->ops->get_trip_temp(tz, trip, &trip_temp); > - tz->ops->get_trip_hyst(tz, trip, &trip_hyst); > + > + if (!tz->ops->get_trip_hyst) { > + pr_warn_once("Undefined get_trip_hyst for thermal zone %s - " > + "running with default hysteresis zero\n", tz->type); > + trip_hyst = 0; > + } else > + tz->ops->get_trip_hyst(tz, trip, &trip_hyst); > > dev_dbg(&tz->device, "Trip%d[temp=%d]:temp=%d:hyst=%d\n", > trip, trip_temp, tz->temperature, > -- > 1.9.1

