Skip to content

Commit

Permalink
platform/x86: GPD pocket fan: Set speed to max on get_temp failure
Browse files Browse the repository at this point in the history
When we fail to get the temperature, assume the worst and set the speed
to max.

While at it introduce a define for MAX_SPEED.

Cc: James <kernel@madingley.org>
Suggested-by: James <kernel@madingley.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  • Loading branch information
Hans de Goede authored and Andy Shevchenko committed Jan 29, 2018
1 parent 00f8b2f commit d890acf
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions drivers/platform/x86/gpd-pocket-fan.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
#include <linux/thermal.h>
#include <linux/workqueue.h>

#define MAX_SPEED 3

static int temp_limits[3] = { 55000, 60000, 65000 };
module_param_array(temp_limits, int, NULL, 0444);
MODULE_PARM_DESC(temp_limits,
Expand Down Expand Up @@ -53,9 +55,8 @@ static void gpd_pocket_fan_worker(struct work_struct *work)
if (thermal_zone_get_temp(fan->dts0, &t0) ||
thermal_zone_get_temp(fan->dts1, &t1)) {
dev_warn(fan->dev, "Error getting temperature\n");
queue_delayed_work(system_wq, &fan->work,
msecs_to_jiffies(1000));
return;
speed = MAX_SPEED;
goto set_speed;
}

temp = max(t0, t1);
Expand All @@ -79,8 +80,9 @@ static void gpd_pocket_fan_worker(struct work_struct *work)
speed = i;

if (fan->last_speed <= 0 && speed)
speed = 3; /* kick start motor */
speed = MAX_SPEED; /* kick start motor */

set_speed:
gpd_pocket_fan_set_speed(fan, speed);

/* When mostly idle (low temp/speed), slow down the poll interval. */
Expand Down

0 comments on commit d890acf

Please sign in to comment.