Lines Matching +full:enum +full:- +full:model
1 // SPDX-License-Identifier: GPL-2.0-or-later
80 unsigned long interval; /* in milli-seconds */
84 u8 status, config, model, trutherm; member
103 struct i2c_client *client = data->client; in lm95241_update_device()
105 mutex_lock(&data->update_lock); in lm95241_update_device()
107 if (time_after(jiffies, data->last_updated in lm95241_update_device()
108 + msecs_to_jiffies(data->interval)) || in lm95241_update_device()
109 !data->valid) { in lm95241_update_device()
114 data->temp[i] in lm95241_update_device()
118 data->status = i2c_smbus_read_byte_data(client, in lm95241_update_device()
120 data->last_updated = jiffies; in lm95241_update_device()
121 data->valid = true; in lm95241_update_device()
124 mutex_unlock(&data->update_lock); in lm95241_update_device()
136 *val = data->interval; in lm95241_read_chip()
139 return -EOPNOTSUPP; in lm95241_read_chip()
150 if (!channel || (data->config & BIT(channel - 1))) in lm95241_read_temp()
151 *val = temp_from_reg_signed(data->temp[channel * 2], in lm95241_read_temp()
152 data->temp[channel * 2 + 1]); in lm95241_read_temp()
154 *val = temp_from_reg_unsigned(data->temp[channel * 2], in lm95241_read_temp()
155 data->temp[channel * 2 + 1]); in lm95241_read_temp()
159 *val = (data->config & R1DF_MASK) ? -128000 : 0; in lm95241_read_temp()
161 *val = (data->config & R2DF_MASK) ? -128000 : 0; in lm95241_read_temp()
165 *val = (data->config & R1DF_MASK) ? 127875 : 255875; in lm95241_read_temp()
167 *val = (data->config & R2DF_MASK) ? 127875 : 255875; in lm95241_read_temp()
171 *val = (data->model & R1MS_MASK) ? 1 : 2; in lm95241_read_temp()
173 *val = (data->model & R2MS_MASK) ? 1 : 2; in lm95241_read_temp()
177 *val = !!(data->status & R1DM); in lm95241_read_temp()
179 *val = !!(data->status & R2DM); in lm95241_read_temp()
182 return -EOPNOTSUPP; in lm95241_read_temp()
186 static int lm95241_read(struct device *dev, enum hwmon_sensor_types type, in lm95241_read()
195 return -EOPNOTSUPP; in lm95241_read()
207 mutex_lock(&data->update_lock); in lm95241_write_chip()
211 config = data->config & ~CFG_CRMASK; in lm95241_write_chip()
225 data->interval = convrate; in lm95241_write_chip()
226 data->config = config; in lm95241_write_chip()
227 ret = i2c_smbus_write_byte_data(data->client, in lm95241_write_chip()
231 ret = -EOPNOTSUPP; in lm95241_write_chip()
234 mutex_unlock(&data->update_lock); in lm95241_write_chip()
242 struct i2c_client *client = data->client; in lm95241_write_temp()
245 mutex_lock(&data->update_lock); in lm95241_write_temp()
251 data->config |= R1DF_MASK; in lm95241_write_temp()
253 data->config &= ~R1DF_MASK; in lm95241_write_temp()
256 data->config |= R2DF_MASK; in lm95241_write_temp()
258 data->config &= ~R2DF_MASK; in lm95241_write_temp()
260 data->valid = false; in lm95241_write_temp()
262 data->config); in lm95241_write_temp()
267 data->config |= R1DF_MASK; in lm95241_write_temp()
269 data->config &= ~R1DF_MASK; in lm95241_write_temp()
272 data->config |= R2DF_MASK; in lm95241_write_temp()
274 data->config &= ~R2DF_MASK; in lm95241_write_temp()
276 data->valid = false; in lm95241_write_temp()
278 data->config); in lm95241_write_temp()
282 ret = -EINVAL; in lm95241_write_temp()
286 data->trutherm &= ~(TT_MASK << TT1_SHIFT); in lm95241_write_temp()
288 data->model |= R1MS_MASK; in lm95241_write_temp()
289 data->trutherm |= (TT_ON << TT1_SHIFT); in lm95241_write_temp()
291 data->model &= ~R1MS_MASK; in lm95241_write_temp()
292 data->trutherm |= (TT_OFF << TT1_SHIFT); in lm95241_write_temp()
295 data->trutherm &= ~(TT_MASK << TT2_SHIFT); in lm95241_write_temp()
297 data->model |= R2MS_MASK; in lm95241_write_temp()
298 data->trutherm |= (TT_ON << TT2_SHIFT); in lm95241_write_temp()
300 data->model &= ~R2MS_MASK; in lm95241_write_temp()
301 data->trutherm |= (TT_OFF << TT2_SHIFT); in lm95241_write_temp()
306 data->model); in lm95241_write_temp()
310 data->trutherm); in lm95241_write_temp()
313 ret = -EOPNOTSUPP; in lm95241_write_temp()
317 mutex_unlock(&data->update_lock); in lm95241_write_temp()
322 static int lm95241_write(struct device *dev, enum hwmon_sensor_types type, in lm95241_write()
331 return -EOPNOTSUPP; in lm95241_write()
336 enum hwmon_sensor_types type, in lm95241_is_visible()
364 /* Return 0 if detection is successful, -ENODEV otherwise */
368 struct i2c_adapter *adapter = new_client->adapter; in lm95241_detect()
373 return -ENODEV; in lm95241_detect()
377 return -ENODEV; in lm95241_detect()
388 return -ENODEV; in lm95241_detect()
392 strscpy(info->type, name, I2C_NAME_SIZE); in lm95241_detect()
399 data->interval = 1000; in lm95241_init_client()
400 data->config = CFG_CR1000; in lm95241_init_client()
401 data->trutherm = (TT_OFF << TT1_SHIFT) | (TT_OFF << TT2_SHIFT); in lm95241_init_client()
403 i2c_smbus_write_byte_data(client, LM95241_REG_RW_CONFIG, data->config); in lm95241_init_client()
407 data->trutherm); in lm95241_init_client()
409 data->model); in lm95241_init_client()
437 struct device *dev = &client->dev; in lm95241_probe()
443 return -ENOMEM; in lm95241_probe()
445 data->client = client; in lm95241_probe()
446 mutex_init(&data->update_lock); in lm95241_probe()
451 hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, in lm95241_probe()