aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/fan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/fan.c')
-rw-r--r--drivers/acpi/fan.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
index 384cfc3083e1..6cf4988206f2 100644
--- a/drivers/acpi/fan.c
+++ b/drivers/acpi/fan.c
@@ -129,8 +129,18 @@ static int fan_get_state_acpi4(struct acpi_device *device, unsigned long *state)
129 129
130 control = obj->package.elements[1].integer.value; 130 control = obj->package.elements[1].integer.value;
131 for (i = 0; i < fan->fps_count; i++) { 131 for (i = 0; i < fan->fps_count; i++) {
132 if (control == fan->fps[i].control) 132 /*
133 * When Fine Grain Control is set, return the state
134 * corresponding to maximum fan->fps[i].control
135 * value compared to the current speed. Here the
136 * fan->fps[] is sorted array with increasing speed.
137 */
138 if (fan->fif.fine_grain_ctrl && control < fan->fps[i].control) {
139 i = (i > 0) ? i - 1 : 0;
133 break; 140 break;
141 } else if (control == fan->fps[i].control) {
142 break;
143 }
134 } 144 }
135 if (i == fan->fps_count) { 145 if (i == fan->fps_count) {
136 dev_dbg(&device->dev, "Invalid control value returned\n"); 146 dev_dbg(&device->dev, "Invalid control value returned\n");