Lines Matching defs:fan

3  * GPD Pocket fan controller driver
33 "Millicelsius values above which the fan speed increases");
38 "Hysteresis in millicelsius before lowering the fan speed");
43 "minimum fan speed to allow when system is powered by AC");
55 static void gpd_pocket_fan_set_speed(struct gpd_pocket_fan_data *fan, int speed)
57 if (speed == fan->last_speed)
60 gpiod_direction_output(fan->gpio0, !!(speed & 1));
61 gpiod_direction_output(fan->gpio1, !!(speed & 2));
63 fan->last_speed = speed;
76 struct gpd_pocket_fan_data *fan =
80 if (thermal_zone_get_temp(fan->dts0, &t0) ||
81 thermal_zone_get_temp(fan->dts1, &t1)) {
82 dev_warn(fan->dev, "Error getting temperature\n");
89 speed = fan->last_speed;
108 if (fan->last_speed <= 0 && speed)
112 gpd_pocket_fan_set_speed(fan, speed);
115 queue_delayed_work(system_wq, &fan->work,
119 static void gpd_pocket_fan_force_update(struct gpd_pocket_fan_data *fan)
121 fan->last_speed = -1;
122 mod_delayed_work(system_wq, &fan->work, 0);
127 struct gpd_pocket_fan_data *fan;
151 fan = devm_kzalloc(&pdev->dev, sizeof(*fan), GFP_KERNEL);
152 if (!fan)
155 fan->dev = &pdev->dev;
156 ret = devm_delayed_work_autocancel(&pdev->dev, &fan->work,
162 fan->dts0 = thermal_zone_get_zone_by_name("soc_dts0");
163 if (IS_ERR(fan->dts0))
166 fan->dts1 = thermal_zone_get_zone_by_name("soc_dts1");
167 if (IS_ERR(fan->dts1))
170 fan->gpio0 = devm_gpiod_get_index(fan->dev, NULL, 0, GPIOD_ASIS);
171 if (IS_ERR(fan->gpio0))
172 return PTR_ERR(fan->gpio0);
174 fan->gpio1 = devm_gpiod_get_index(fan->dev, NULL, 1, GPIOD_ASIS);
175 if (IS_ERR(fan->gpio1))
176 return PTR_ERR(fan->gpio1);
178 gpd_pocket_fan_force_update(fan);
180 platform_set_drvdata(pdev, fan);
187 struct gpd_pocket_fan_data *fan = dev_get_drvdata(dev);
189 cancel_delayed_work_sync(&fan->work);
190 gpd_pocket_fan_set_speed(fan, gpd_pocket_fan_min_speed());
196 struct gpd_pocket_fan_data *fan = dev_get_drvdata(dev);
198 gpd_pocket_fan_force_update(fan);
223 MODULE_DESCRIPTION("GPD pocket fan driver");