Lines Matching refs:fan_data

64 	struct gpio_fan_data *fan_data =  in fan_alarm_notify()  local
67 sysfs_notify(&fan_data->pdev->dev.kobj, NULL, "fan1_alarm"); in fan_alarm_notify()
68 kobject_uevent(&fan_data->pdev->dev.kobj, KOBJ_CHANGE); in fan_alarm_notify()
73 struct gpio_fan_data *fan_data = dev_id; in fan_alarm_irq_handler() local
75 schedule_work(&fan_data->alarm_work); in fan_alarm_irq_handler()
83 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_fan_alarm() local
84 struct gpio_fan_alarm *alarm = fan_data->alarm; in show_fan_alarm()
95 static int fan_alarm_init(struct gpio_fan_data *fan_data, in fan_alarm_init() argument
100 struct platform_device *pdev = fan_data->pdev; in fan_alarm_init()
102 fan_data->alarm = alarm; in fan_alarm_init()
120 INIT_WORK(&fan_data->alarm_work, fan_alarm_notify); in fan_alarm_init()
123 IRQF_SHARED, "GPIO fan alarm", fan_data); in fan_alarm_init()
132 static void __set_fan_ctrl(struct gpio_fan_data *fan_data, int ctrl_val) in __set_fan_ctrl() argument
136 for (i = 0; i < fan_data->num_ctrl; i++) in __set_fan_ctrl()
137 gpio_set_value_cansleep(fan_data->ctrl[i], (ctrl_val >> i) & 1); in __set_fan_ctrl()
140 static int __get_fan_ctrl(struct gpio_fan_data *fan_data) in __get_fan_ctrl() argument
145 for (i = 0; i < fan_data->num_ctrl; i++) { in __get_fan_ctrl()
148 value = gpio_get_value_cansleep(fan_data->ctrl[i]); in __get_fan_ctrl()
155 static void set_fan_speed(struct gpio_fan_data *fan_data, int speed_index) in set_fan_speed() argument
157 if (fan_data->speed_index == speed_index) in set_fan_speed()
160 __set_fan_ctrl(fan_data, fan_data->speed[speed_index].ctrl_val); in set_fan_speed()
161 fan_data->speed_index = speed_index; in set_fan_speed()
164 static int get_fan_speed_index(struct gpio_fan_data *fan_data) in get_fan_speed_index() argument
166 int ctrl_val = __get_fan_ctrl(fan_data); in get_fan_speed_index()
169 for (i = 0; i < fan_data->num_speed; i++) in get_fan_speed_index()
170 if (fan_data->speed[i].ctrl_val == ctrl_val) in get_fan_speed_index()
173 dev_warn(&fan_data->pdev->dev, in get_fan_speed_index()
179 static int rpm_to_speed_index(struct gpio_fan_data *fan_data, unsigned long rpm) in rpm_to_speed_index() argument
181 struct gpio_fan_speed *speed = fan_data->speed; in rpm_to_speed_index()
184 for (i = 0; i < fan_data->num_speed; i++) in rpm_to_speed_index()
188 return fan_data->num_speed - 1; in rpm_to_speed_index()
194 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_pwm() local
195 u8 pwm = fan_data->speed_index * 255 / (fan_data->num_speed - 1); in show_pwm()
203 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in set_pwm() local
211 mutex_lock(&fan_data->lock); in set_pwm()
213 if (!fan_data->pwm_enable) { in set_pwm()
218 speed_index = DIV_ROUND_UP(pwm * (fan_data->num_speed - 1), 255); in set_pwm()
219 set_fan_speed(fan_data, speed_index); in set_pwm()
222 mutex_unlock(&fan_data->lock); in set_pwm()
230 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_pwm_enable() local
232 return sprintf(buf, "%d\n", fan_data->pwm_enable); in show_pwm_enable()
238 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in set_pwm_enable() local
244 if (fan_data->pwm_enable == val) in set_pwm_enable()
247 mutex_lock(&fan_data->lock); in set_pwm_enable()
249 fan_data->pwm_enable = val; in set_pwm_enable()
253 set_fan_speed(fan_data, fan_data->num_speed - 1); in set_pwm_enable()
255 mutex_unlock(&fan_data->lock); in set_pwm_enable()
269 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_rpm_min() local
271 return sprintf(buf, "%d\n", fan_data->speed[0].rpm); in show_rpm_min()
277 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_rpm_max() local
280 fan_data->speed[fan_data->num_speed - 1].rpm); in show_rpm_max()
286 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in show_rpm() local
288 return sprintf(buf, "%d\n", fan_data->speed[fan_data->speed_index].rpm); in show_rpm()
294 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in set_rpm() local
301 mutex_lock(&fan_data->lock); in set_rpm()
303 if (!fan_data->pwm_enable) { in set_rpm()
308 set_fan_speed(fan_data, rpm_to_speed_index(fan_data, rpm)); in set_rpm()
311 mutex_unlock(&fan_data->lock); in set_rpm()
361 static int fan_ctrl_init(struct gpio_fan_data *fan_data, in fan_ctrl_init() argument
364 struct platform_device *pdev = fan_data->pdev; in fan_ctrl_init()
381 fan_data->num_ctrl = num_ctrl; in fan_ctrl_init()
382 fan_data->ctrl = ctrl; in fan_ctrl_init()
383 fan_data->num_speed = pdata->num_speed; in fan_ctrl_init()
384 fan_data->speed = pdata->speed; in fan_ctrl_init()
385 fan_data->pwm_enable = true; /* Enable manual fan speed control. */ in fan_ctrl_init()
386 fan_data->speed_index = get_fan_speed_index(fan_data); in fan_ctrl_init()
387 if (fan_data->speed_index < 0) in fan_ctrl_init()
388 return fan_data->speed_index; in fan_ctrl_init()
396 struct gpio_fan_data *fan_data = cdev->devdata; in gpio_fan_get_max_state() local
398 if (!fan_data) in gpio_fan_get_max_state()
401 *state = fan_data->num_speed - 1; in gpio_fan_get_max_state()
408 struct gpio_fan_data *fan_data = cdev->devdata; in gpio_fan_get_cur_state() local
410 if (!fan_data) in gpio_fan_get_cur_state()
413 *state = fan_data->speed_index; in gpio_fan_get_cur_state()
420 struct gpio_fan_data *fan_data = cdev->devdata; in gpio_fan_set_cur_state() local
422 if (!fan_data) in gpio_fan_set_cur_state()
425 set_fan_speed(fan_data, state); in gpio_fan_set_cur_state()
543 struct gpio_fan_data *fan_data; in gpio_fan_probe() local
546 fan_data = devm_kzalloc(&pdev->dev, sizeof(struct gpio_fan_data), in gpio_fan_probe()
548 if (!fan_data) in gpio_fan_probe()
568 fan_data->pdev = pdev; in gpio_fan_probe()
569 platform_set_drvdata(pdev, fan_data); in gpio_fan_probe()
570 mutex_init(&fan_data->lock); in gpio_fan_probe()
574 err = fan_alarm_init(fan_data, pdata->alarm); in gpio_fan_probe()
583 err = fan_ctrl_init(fan_data, pdata); in gpio_fan_probe()
589 fan_data->hwmon_dev = in gpio_fan_probe()
591 "gpio_fan", fan_data, in gpio_fan_probe()
593 if (IS_ERR(fan_data->hwmon_dev)) in gpio_fan_probe()
594 return PTR_ERR(fan_data->hwmon_dev); in gpio_fan_probe()
597 fan_data->cdev = thermal_of_cooling_device_register(pdev->dev.of_node, in gpio_fan_probe()
599 fan_data, in gpio_fan_probe()
603 fan_data->cdev = thermal_cooling_device_register("gpio-fan", fan_data, in gpio_fan_probe()
614 struct gpio_fan_data *fan_data = platform_get_drvdata(pdev); in gpio_fan_remove() local
616 if (!IS_ERR(fan_data->cdev)) in gpio_fan_remove()
617 thermal_cooling_device_unregister(fan_data->cdev); in gpio_fan_remove()
619 if (fan_data->ctrl) in gpio_fan_remove()
620 set_fan_speed(fan_data, 0); in gpio_fan_remove()
633 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in gpio_fan_suspend() local
635 if (fan_data->ctrl) { in gpio_fan_suspend()
636 fan_data->resume_speed = fan_data->speed_index; in gpio_fan_suspend()
637 set_fan_speed(fan_data, 0); in gpio_fan_suspend()
645 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); in gpio_fan_resume() local
647 if (fan_data->ctrl) in gpio_fan_resume()
648 set_fan_speed(fan_data, fan_data->resume_speed); in gpio_fan_resume()