static void fan_ramping_work_func(struct work_struct *work)
{
- int rru, rrd;
+ int rru, rrd, err;
int cur_pwm, next_pwm;
struct delayed_work *dwork = container_of(work, struct delayed_work,
work);
next_pwm = max(next_pwm, fan_data->next_target_pwm);
next_pwm = max(0, next_pwm);
}
+
+ if ((next_pwm != 0) && !(regulator_is_enabled(fan_data->fan_reg))) {
+ err = regulator_enable(fan_data->fan_reg);
+ if (err < 0)
+ dev_err(fan_data->dev,
+ " Coudn't enable vdd-fan\n");
+ else
+ dev_info(fan_data->dev,
+ " Enabled vdd-fan\n");
+ }
+ if ((next_pwm == 0) && (regulator_is_enabled(fan_data->fan_reg))) {
+ err = regulator_disable(fan_data->fan_reg);
+ if (err < 0)
+ dev_err(fan_data->dev,
+ " Couldn't disable vdd-fan\n");
+ else
+ dev_info(fan_data->dev,
+ " Disabled vdd-fan\n");
+ }
+
set_pwm_duty_cycle(next_pwm, fan_data);
fan_data->fan_cur_pwm = next_pwm;
if (fan_data->next_target_pwm != next_pwm)
fan_data->fan_state_cap_lookup[i]);
}
- err = regulator_enable(fan_data->fan_reg);
- if (err < 0)
- dev_err(&pdev->dev, " Coudn't enable regulator\n");
- else
- dev_info(&pdev->dev, " Enabled regulator\n");
-
return err;
sysfs_fail:
/*Start thermal control*/
fan_data->fan_temp_control_flag = 1;
- err = regulator_enable(fan_data->fan_reg);
- if (err < 0)
- dev_err(&pdev->dev, "Not able to enable Fan regulator\n");
-
mutex_unlock(&fan_data->fan_state_lock);
return 0;
}