• Home
  • Raw
  • Download

Lines Matching +full:data +full:- +full:channel

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * max31790.c - Part of lm_sensors, Linux kernel modules for hardware
51 * Client data (each client gets its own)
70 struct max31790_data *data = dev_get_drvdata(dev); in max31790_update_device() local
71 struct i2c_client *client = data->client; in max31790_update_device()
72 struct max31790_data *ret = data; in max31790_update_device()
76 mutex_lock(&data->update_lock); in max31790_update_device()
78 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) { in max31790_update_device()
83 data->fault_status = rv & 0x3F; in max31790_update_device()
89 data->fault_status |= (rv & 0x3F) << 6; in max31790_update_device()
96 data->tach[i] = rv; in max31790_update_device()
98 if (data->fan_config[i] in max31790_update_device()
105 data->tach[NR_CHANNEL + i] = rv; in max31790_update_device()
111 data->pwm[i] = rv; in max31790_update_device()
117 data->target_count[i] = rv; in max31790_update_device()
121 data->last_updated = jiffies; in max31790_update_device()
122 data->valid = true; in max31790_update_device()
127 data->valid = false; in max31790_update_device()
131 mutex_unlock(&data->update_lock); in max31790_update_device()
163 static int max31790_read_fan(struct device *dev, u32 attr, int channel, in max31790_read_fan() argument
166 struct max31790_data *data = max31790_update_device(dev); in max31790_read_fan() local
169 if (IS_ERR(data)) in max31790_read_fan()
170 return PTR_ERR(data); in max31790_read_fan()
174 sr = get_tach_period(data->fan_dynamics[channel % NR_CHANNEL]); in max31790_read_fan()
175 rpm = RPM_FROM_REG(data->tach[channel], sr); in max31790_read_fan()
179 sr = get_tach_period(data->fan_dynamics[channel]); in max31790_read_fan()
180 rpm = RPM_FROM_REG(data->target_count[channel], sr); in max31790_read_fan()
184 *val = !!(data->fault_status & (1 << channel)); in max31790_read_fan()
187 return -EOPNOTSUPP; in max31790_read_fan()
191 static int max31790_write_fan(struct device *dev, u32 attr, int channel, in max31790_write_fan() argument
194 struct max31790_data *data = dev_get_drvdata(dev); in max31790_write_fan() local
195 struct i2c_client *client = data->client; in max31790_write_fan()
201 mutex_lock(&data->update_lock); in max31790_write_fan()
207 data->fan_dynamics[channel] = in max31790_write_fan()
208 ((data->fan_dynamics[channel] & in max31790_write_fan()
212 MAX31790_REG_FAN_DYNAMICS(channel), in max31790_write_fan()
213 data->fan_dynamics[channel]); in max31790_write_fan()
217 sr = get_tach_period(data->fan_dynamics[channel]); in max31790_write_fan()
221 data->target_count[channel] = target_count << 5; in max31790_write_fan()
224 MAX31790_REG_TARGET_COUNT(channel), in max31790_write_fan()
225 data->target_count[channel]); in max31790_write_fan()
228 err = -EOPNOTSUPP; in max31790_write_fan()
232 mutex_unlock(&data->update_lock); in max31790_write_fan()
237 static umode_t max31790_fan_is_visible(const void *_data, u32 attr, int channel) in max31790_fan_is_visible() argument
239 const struct max31790_data *data = _data; in max31790_fan_is_visible() local
240 u8 fan_config = data->fan_config[channel % NR_CHANNEL]; in max31790_fan_is_visible()
245 if (channel < NR_CHANNEL || in max31790_fan_is_visible()
250 if (channel < NR_CHANNEL && in max31790_fan_is_visible()
259 static int max31790_read_pwm(struct device *dev, u32 attr, int channel, in max31790_read_pwm() argument
262 struct max31790_data *data = max31790_update_device(dev); in max31790_read_pwm() local
265 if (IS_ERR(data)) in max31790_read_pwm()
266 return PTR_ERR(data); in max31790_read_pwm()
268 fan_config = data->fan_config[channel]; in max31790_read_pwm()
272 *val = data->pwm[channel] >> 8; in max31790_read_pwm()
283 return -EOPNOTSUPP; in max31790_read_pwm()
287 static int max31790_write_pwm(struct device *dev, u32 attr, int channel, in max31790_write_pwm() argument
290 struct max31790_data *data = dev_get_drvdata(dev); in max31790_write_pwm() local
291 struct i2c_client *client = data->client; in max31790_write_pwm()
295 mutex_lock(&data->update_lock); in max31790_write_pwm()
300 err = -EINVAL; in max31790_write_pwm()
303 data->valid = false; in max31790_write_pwm()
305 MAX31790_REG_PWMOUT(channel), in max31790_write_pwm()
309 fan_config = data->fan_config[channel]; in max31790_write_pwm()
329 err = -EINVAL; in max31790_write_pwm()
332 if (fan_config != data->fan_config[channel]) { in max31790_write_pwm()
333 err = i2c_smbus_write_byte_data(client, MAX31790_REG_FAN_CONFIG(channel), in max31790_write_pwm()
336 data->fan_config[channel] = fan_config; in max31790_write_pwm()
340 err = -EOPNOTSUPP; in max31790_write_pwm()
344 mutex_unlock(&data->update_lock); in max31790_write_pwm()
349 static umode_t max31790_pwm_is_visible(const void *_data, u32 attr, int channel) in max31790_pwm_is_visible() argument
351 const struct max31790_data *data = _data; in max31790_pwm_is_visible() local
352 u8 fan_config = data->fan_config[channel]; in max31790_pwm_is_visible()
366 u32 attr, int channel, long *val) in max31790_read() argument
370 return max31790_read_fan(dev, attr, channel, val); in max31790_read()
372 return max31790_read_pwm(dev, attr, channel, val); in max31790_read()
374 return -EOPNOTSUPP; in max31790_read()
379 u32 attr, int channel, long val) in max31790_write() argument
383 return max31790_write_fan(dev, attr, channel, val); in max31790_write()
385 return max31790_write_pwm(dev, attr, channel, val); in max31790_write()
387 return -EOPNOTSUPP; in max31790_write()
391 static umode_t max31790_is_visible(const void *data, in max31790_is_visible() argument
393 u32 attr, int channel) in max31790_is_visible() argument
397 return max31790_fan_is_visible(data, attr, channel); in max31790_is_visible()
399 return max31790_pwm_is_visible(data, attr, channel); in max31790_is_visible()
441 struct max31790_data *data) in max31790_init_client() argument
450 data->fan_config[i] = rv; in max31790_init_client()
456 data->fan_dynamics[i] = rv; in max31790_init_client()
464 struct i2c_adapter *adapter = client->adapter; in max31790_probe()
465 struct device *dev = &client->dev; in max31790_probe()
466 struct max31790_data *data; in max31790_probe() local
472 return -ENODEV; in max31790_probe()
474 data = devm_kzalloc(dev, sizeof(struct max31790_data), GFP_KERNEL); in max31790_probe()
475 if (!data) in max31790_probe()
476 return -ENOMEM; in max31790_probe()
478 data->client = client; in max31790_probe()
479 mutex_init(&data->update_lock); in max31790_probe()
484 err = max31790_init_client(client, data); in max31790_probe()
488 hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, in max31790_probe()
489 data, in max31790_probe()