lkml.org 
[lkml]   [2020]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC PATCH 4/4] thermal: Modify thermal governors to do nothing for "cold" trip points
Date
For now, thermal governors do not support monitoring of falling
temperature. Hence, in case of calls to the governor for trip points marked
as cold, return doing nothing.

Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>
---
drivers/thermal/gov_bang_bang.c | 8 ++++++++
drivers/thermal/gov_fair_share.c | 8 ++++++++
drivers/thermal/gov_power_allocator.c | 8 ++++++++
drivers/thermal/gov_step_wise.c | 8 ++++++++
4 files changed, 32 insertions(+)

diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c
index 991a1c54296d..8324d13de1e7 100644
--- a/drivers/thermal/gov_bang_bang.c
+++ b/drivers/thermal/gov_bang_bang.c
@@ -99,6 +99,14 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
static int bang_bang_control(struct thermal_zone_device *tz, int trip)
{
struct thermal_instance *instance;
+ enum thermal_trip_type trip_type;
+
+ /* Return doing nothing in case of cold trip point */
+ if (trip != THERMAL_TRIPS_NONE) {
+ tz->ops->get_trip_type(tz, trip, &trip_type);
+ if (trip_type == THERMAL_TRIP_COLD)
+ return 0;
+ }

thermal_zone_trip_update(tz, trip);

diff --git a/drivers/thermal/gov_fair_share.c b/drivers/thermal/gov_fair_share.c
index aaa07180ab48..c0adce525faa 100644
--- a/drivers/thermal/gov_fair_share.c
+++ b/drivers/thermal/gov_fair_share.c
@@ -81,6 +81,14 @@ static int fair_share_throttle(struct thermal_zone_device *tz, int trip)
int total_weight = 0;
int total_instance = 0;
int cur_trip_level = get_trip_level(tz);
+ enum thermal_trip_type trip_type;
+
+ /* Return doing nothing in case of cold trip point */
+ if (trip != THERMAL_TRIPS_NONE) {
+ tz->ops->get_trip_type(tz, trip, &trip_type);
+ if (trip_type == THERMAL_TRIP_COLD)
+ return 0;
+ }

list_for_each_entry(instance, &tz->thermal_instances, tz_node) {
if (instance->trip != trip)
diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index 44636475b2a3..2644ad4d4032 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -613,8 +613,16 @@ static int power_allocator_throttle(struct thermal_zone_device *tz, int trip)
{
int ret;
int switch_on_temp, control_temp;
+ enum thermal_trip_type trip_type;
struct power_allocator_params *params = tz->governor_data;

+ /* Return doing nothing in case of cold trip point */
+ if (trip != THERMAL_TRIPS_NONE) {
+ tz->ops->get_trip_type(tz, trip, &trip_type);
+ if (trip_type == THERMAL_TRIP_COLD)
+ return 0;
+ }
+
/*
* We get called for every trip point but we only need to do
* our calculations once
diff --git a/drivers/thermal/gov_step_wise.c b/drivers/thermal/gov_step_wise.c
index 2ae7198d3067..009aefda0441 100644
--- a/drivers/thermal/gov_step_wise.c
+++ b/drivers/thermal/gov_step_wise.c
@@ -186,6 +186,14 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
static int step_wise_throttle(struct thermal_zone_device *tz, int trip)
{
struct thermal_instance *instance;
+ enum thermal_trip_type trip_type;
+
+ /* For now, return doing nothing in case of cold trip point */
+ if (trip != THERMAL_TRIPS_NONE) {
+ tz->ops->get_trip_type(tz, trip, &trip_type);
+ if (trip_type == THERMAL_TRIP_COLD)
+ return 0;
+ }

thermal_zone_trip_update(tz, trip);

--
2.25.1
\
 
 \ /
  Last update: 2020-07-10 15:52    [W:0.112 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site