Lines Matching defs:fan

3  * GPD Pocket fan controller driver
32 "Millicelsius values above which the fan speed increases");
37 "Hysteresis in millicelsius before lowering the fan speed");
42 "minimum fan speed to allow when system is powered by AC");
54 static void gpd_pocket_fan_set_speed(struct gpd_pocket_fan_data *fan, int speed)
56 if (speed == fan->last_speed)
59 gpiod_direction_output(fan->gpio0, !!(speed & 1));
60 gpiod_direction_output(fan->gpio1, !!(speed & 2));
62 fan->last_speed = speed;
75 struct gpd_pocket_fan_data *fan =
79 if (thermal_zone_get_temp(fan->dts0, &t0) ||
80 thermal_zone_get_temp(fan->dts1, &t1)) {
81 dev_warn(fan->dev, "Error getting temperature\n");
88 speed = fan->last_speed;
107 if (fan->last_speed <= 0 && speed)
111 gpd_pocket_fan_set_speed(fan, speed);
114 queue_delayed_work(system_wq, &fan->work,
118 static void gpd_pocket_fan_force_update(struct gpd_pocket_fan_data *fan)
120 fan->last_speed = -1;
121 mod_delayed_work(system_wq, &fan->work, 0);
126 struct gpd_pocket_fan_data *fan;
150 fan = devm_kzalloc(&pdev->dev, sizeof(*fan), GFP_KERNEL);
151 if (!fan)
154 fan->dev = &pdev->dev;
155 INIT_DELAYED_WORK(&fan->work, gpd_pocket_fan_worker);
158 fan->dts0 = thermal_zone_get_zone_by_name("soc_dts0");
159 if (IS_ERR(fan->dts0))
162 fan->dts1 = thermal_zone_get_zone_by_name("soc_dts1");
163 if (IS_ERR(fan->dts1))
166 fan->gpio0 = devm_gpiod_get_index(fan->dev, NULL, 0, GPIOD_ASIS);
167 if (IS_ERR(fan->gpio0))
168 return PTR_ERR(fan->gpio0);
170 fan->gpio1 = devm_gpiod_get_index(fan->dev, NULL, 1, GPIOD_ASIS);
171 if (IS_ERR(fan->gpio1))
172 return PTR_ERR(fan->gpio1);
174 gpd_pocket_fan_force_update(fan);
176 platform_set_drvdata(pdev, fan);
182 struct gpd_pocket_fan_data *fan = platform_get_drvdata(pdev);
184 cancel_delayed_work_sync(&fan->work);
191 struct gpd_pocket_fan_data *fan = dev_get_drvdata(dev);
193 cancel_delayed_work_sync(&fan->work);
194 gpd_pocket_fan_set_speed(fan, gpd_pocket_fan_min_speed());
200 struct gpd_pocket_fan_data *fan = dev_get_drvdata(dev);
202 gpd_pocket_fan_force_update(fan);
228 MODULE_DESCRIPTION("GPD pocket fan driver");