Lines Matching refs:data

56 /* Register data is read (and cached) at most once per second. */
69 u8 rpm_output[2]; /* The fan RPM data for fans 1 and 2 is then
133 /* helper to grab and cache data, at most one time per second */
136 struct tc654_data *data = dev_get_drvdata(dev);
137 struct i2c_client *client = data->client;
140 mutex_lock(&data->update_lock);
141 if (time_before(jiffies, data->last_updated + TC654_UPDATE_INTERVAL) &&
142 likely(data->valid))
148 data->rpm_output[0] = ret;
153 data->rpm_output[1] = ret;
158 data->fan_fault[0] = ret;
163 data->fan_fault[1] = ret;
168 data->config = ret;
173 data->status = ret;
178 data->duty_cycle = ret & 0x0f;
180 data->last_updated = jiffies;
181 data->valid = true;
183 mutex_unlock(&data->update_lock);
186 data = ERR_PTR(ret);
188 return data;
199 struct tc654_data *data = tc654_update_client(dev);
202 if (IS_ERR(data))
203 return PTR_ERR(data);
205 if (data->config & TC654_REG_CONFIG_RES)
206 val = data->rpm_output[nr] * TC654_HIGH_RPM_RESOLUTION;
208 val = data->rpm_output[nr] * TC654_LOW_RPM_RESOLUTION;
217 struct tc654_data *data = tc654_update_client(dev);
219 if (IS_ERR(data))
220 return PTR_ERR(data);
223 TC654_FAN_FAULT_FROM_REG(data->fan_fault[nr]));
230 struct tc654_data *data = dev_get_drvdata(dev);
231 struct i2c_client *client = data->client;
240 mutex_lock(&data->update_lock);
242 data->fan_fault[nr] = TC654_FAN_FAULT_TO_REG(val);
244 data->fan_fault[nr]);
246 mutex_unlock(&data->update_lock);
254 struct tc654_data *data = tc654_update_client(dev);
257 if (IS_ERR(data))
258 return PTR_ERR(data);
261 val = !!(data->status & TC654_REG_STATUS_F1F);
263 val = !!(data->status & TC654_REG_STATUS_F2F);
274 struct tc654_data *data = tc654_update_client(dev);
277 if (IS_ERR(data))
278 return PTR_ERR(data);
280 val = BIT((data->config >> TC654_FAN_PULSE_SHIFT[nr]) & 0x03);
289 struct tc654_data *data = dev_get_drvdata(dev);
290 struct i2c_client *client = data->client;
315 mutex_lock(&data->update_lock);
317 data->config &= ~(0x03 << TC654_FAN_PULSE_SHIFT[nr]);
318 data->config |= (config << TC654_FAN_PULSE_SHIFT[nr]);
319 ret = i2c_smbus_write_byte_data(client, TC654_REG_CONFIG, data->config);
321 mutex_unlock(&data->update_lock);
328 struct tc654_data *data = tc654_update_client(dev);
330 if (IS_ERR(data))
331 return PTR_ERR(data);
333 return sprintf(buf, "%d\n", !!(data->config & TC654_REG_CONFIG_DUTYC));
339 struct tc654_data *data = dev_get_drvdata(dev);
340 struct i2c_client *client = data->client;
350 mutex_lock(&data->update_lock);
353 data->config |= TC654_REG_CONFIG_DUTYC;
355 data->config &= ~TC654_REG_CONFIG_DUTYC;
357 ret = i2c_smbus_write_byte_data(client, TC654_REG_CONFIG, data->config);
359 mutex_unlock(&data->update_lock);
369 struct tc654_data *data = tc654_update_client(dev);
372 if (IS_ERR(data))
373 return PTR_ERR(data);
375 if (data->config & TC654_REG_CONFIG_SDM)
378 pwm = tc654_pwm_map[data->duty_cycle];
383 static int _set_pwm(struct tc654_data *data, unsigned long val)
385 struct i2c_client *client = data->client;
388 mutex_lock(&data->update_lock);
391 data->config |= TC654_REG_CONFIG_SDM;
392 data->duty_cycle = 0;
394 data->config &= ~TC654_REG_CONFIG_SDM;
395 data->duty_cycle = val - 1;
398 ret = i2c_smbus_write_byte_data(client, TC654_REG_CONFIG, data->config);
403 data->duty_cycle);
406 mutex_unlock(&data->update_lock);
413 struct tc654_data *data = dev_get_drvdata(dev);
424 ret = _set_pwm(data, val);
439 /* Driver data */
479 struct tc654_data *data = tc654_update_client(cdev->devdata);
481 if (IS_ERR(data))
482 return PTR_ERR(data);
484 if (data->config & TC654_REG_CONFIG_SDM)
487 *state = data->duty_cycle + 1; /* offset PWM States by 1 */
494 struct tc654_data *data = tc654_update_client(cdev->devdata);
496 if (IS_ERR(data))
497 return PTR_ERR(data);
499 return _set_pwm(data, clamp_val(state, 0, TC654_MAX_COOLING_STATE));
515 struct tc654_data *data;
522 data = devm_kzalloc(dev, sizeof(struct tc654_data), GFP_KERNEL);
523 if (!data)
526 data->client = client;
527 mutex_init(&data->update_lock);
533 data->config = ret;
536 devm_hwmon_device_register_with_groups(dev, client->name, data,