Lines Matching refs:data

36  * Factor by equations [2] and [3] from data sheet; valid for fans where the number of edges
90 * struct emc2305_data - device-specific data
97 * @cdev_data: array of cooling devices data
120 static int emc2305_get_max_channel(const struct emc2305_data *data)
122 return data->pwm_num;
127 struct emc2305_data *data = cdev->devdata;
143 if (!data->pwm_separate)
159 struct emc2305_data *data = cdev->devdata;
165 *state = data->cdev_data[cdev_idx].cur_state;
171 struct emc2305_data *data = cdev->devdata;
172 *state = data->max_state;
176 static int __emc2305_set_cur_state(struct emc2305_data *data, int cdev_idx, unsigned long state)
179 struct i2c_client *client = data->client;
182 state = max_t(unsigned long, state, data->cdev_data[cdev_idx].last_hwmon_state);
184 val = EMC2305_PWM_STATE2DUTY(state, data->max_state, EMC2305_FAN_MAX);
186 data->cdev_data[cdev_idx].cur_state = state;
187 if (data->pwm_separate) {
196 for (i = 0; i < data->pwm_num; i++) {
209 struct emc2305_data *data = cdev->devdata;
211 if (state > data->max_state)
219 data->cdev_data[cdev_idx].last_thermal_state = state;
220 ret = __emc2305_set_cur_state(data, cdev_idx, state);
235 struct emc2305_data *data = dev_get_drvdata(dev);
236 struct i2c_client *client = data->client;
248 struct emc2305_data *data = dev_get_drvdata(dev);
249 struct i2c_client *client = data->client;
266 struct emc2305_data *data = dev_get_drvdata(dev);
267 struct i2c_client *client = data->client;
274 struct emc2305_data *data = dev_get_drvdata(dev);
275 struct i2c_client *client = data->client;
278 if (val < data->pwm_min[channel] || val > EMC2305_FAN_MAX)
284 data->cdev_data[channel].cur_state = EMC2305_PWM_DUTY2STATE(val, data->max_state,
291 struct emc2305_data *data = dev_get_drvdata(dev);
296 pwm = data->pwm_min[cdev_idx];
298 data->cdev_data[cdev_idx].cdev =
299 thermal_cooling_device_register(emc2305_fan_name[idx], data,
302 if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
304 return PTR_ERR(data->cdev_data[cdev_idx].cdev);
307 if (data->pwm_separate) {
312 for (i = 0; i < data->pwm_num; i++) {
318 data->cdev_data[cdev_idx].cur_state =
319 EMC2305_PWM_DUTY2STATE(data->pwm_min[cdev_idx], data->max_state,
321 data->cdev_data[cdev_idx].last_hwmon_state =
322 EMC2305_PWM_DUTY2STATE(data->pwm_min[cdev_idx], data->max_state,
329 struct emc2305_data *data = dev_get_drvdata(dev);
332 if (!data->pwm_separate)
335 for (i = 0; i < data->pwm_num; i++) {
349 struct emc2305_data *data = dev_get_drvdata(dev);
354 if (data->cdev_data[i].cdev)
355 thermal_cooling_device_unregister(data->cdev_data[i].cdev);
359 emc2305_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel)
361 int max_channel = emc2305_get_max_channel(data);
395 struct emc2305_data *data = dev_get_drvdata(dev);
404 if (data->pwm_separate)
408 data->cdev_data[cdev_idx].last_hwmon_state =
409 EMC2305_PWM_DUTY2STATE(val, data->max_state,
415 if (data->cdev_data[cdev_idx].last_hwmon_state >=
416 data->cdev_data[cdev_idx].last_thermal_state)
417 return __emc2305_set_cur_state(data, cdev_idx,
418 data->cdev_data[cdev_idx].last_hwmon_state);
506 struct emc2305_data *data = i2c_get_clientdata(client);
515 data->pwm_num = 5;
518 data->pwm_num = 3;
521 data->pwm_num = 2;
524 data->pwm_num = 1;
537 struct emc2305_data *data;
550 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
551 if (!data)
554 i2c_set_clientdata(client, data);
555 data->client = client;
565 data->max_state = pdata->max_state;
573 data->pwm_num = pdata->pwm_num;
574 data->pwm_separate = pdata->pwm_separate;
576 data->pwm_min[i] = pdata->pwm_min[i];
578 data->max_state = EMC2305_FAN_MAX_STATE;
579 data->pwm_separate = false;
581 data->pwm_min[i] = EMC2305_FAN_MIN;
584 data->hwmon_dev = devm_hwmon_device_register_with_info(dev, "emc2305", data,
586 if (IS_ERR(data->hwmon_dev))
587 return PTR_ERR(data->hwmon_dev);
595 for (i = 0; i < data->pwm_num; i++) {
597 data->pwm_min[i]);