Lines Matching +full:one +full:- +full:shot
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * lm75.c - Part of lm_sensors, Linux kernel modules for hardware
60 * struct lm75_params - lm75 configuration parameters.
78 * than one.
120 /*-----------------------------------------------------------------------*/
127 * In case of being supported multiple configurations, the default one must
132 .clr_mask = 1 << 5, /* not one-shot mode */
146 .set_mask = 3 << 5, /* 12-bit mode*/
155 .set_mask = 2 << 5, /* 11-bit mode */
164 .set_mask = 2 << 5, /* 11-bit mode */
173 .set_mask = 2 << 5, /* 11-bit mode */
185 .set_mask = 3 << 5, /* 12-bit mode*/
226 .clr_mask = 1 << 1 | 1 << 7, /* disable SMBAlert and one-shot */
242 .set_mask = 3 << 5, /* 12-bit mode */
243 .clr_mask = 1 << 7, /* not one-shot mode */
252 .set_mask = 3 << 5, /* 12-bit mode */
253 .clr_mask = 1 << 7, /* not one-shot mode */
261 .set_mask = 3 << 5, /* 12-bit mode */
262 .clr_mask = 1 << 7, /* not one-shot mode */
270 .set_mask = 3 << 5, /* 12-bit mode */
271 .clr_mask = 1 << 7, /* not one-shot mode*/
280 .set_mask = 0x60C0, /* 12-bit mode, 8 samples / second */
281 .clr_mask = 1 << 15, /* no one-shot mode*/
289 .set_mask = 3 << 5, /* 12-bit mode */
290 .clr_mask = 1 << 7, /* not one-shot mode*/
298 .set_mask = 3 << 5, /* 12-bit mode */
299 .clr_mask = 1 << 7, /* not one-shot mode*/
307 .set_mask = 3 << 5, /* 12-bit mode */
308 .clr_mask = 1 << 7, /* not one-shot mode*/
315 [tmp75b] = { /* not one-shot mode, Conversion rate 37Hz */
325 .clr_mask = 1 << 5, /*not one-shot mode*/
329 [tmp1075] = { /* not one-shot mode, 27.5 ms sample rate */
340 return ((temp >> (16 - resolution)) * 1000) >> (resolution - 8); in lm75_reg_to_mc()
346 return regmap_update_bits(data->regmap, LM75_REG_CONF, in lm75_write_config()
369 *val = data->sample_time; in lm75_read()
372 return -EINVAL; in lm75_read()
390 return -EINVAL; in lm75_read()
392 err = regmap_read(data->regmap, reg, ®val); in lm75_read()
397 switch (data->kind) { in lm75_read()
403 return -EINVAL; in lm75_read()
406 *val = lm75_reg_to_mc(regval, data->resolution); in lm75_read()
410 return -EINVAL; in lm75_read()
429 return -EINVAL; in lm75_write_temp()
436 if (data->params->resolution_limits) in lm75_write_temp()
437 resolution = data->params->resolution_limits; in lm75_write_temp()
439 resolution = data->resolution; in lm75_write_temp()
442 temp = DIV_ROUND_CLOSEST(temp << (resolution - 8), in lm75_write_temp()
443 1000) << (16 - resolution); in lm75_write_temp()
445 return regmap_write(data->regmap, reg, (u16)temp); in lm75_write_temp()
454 index = find_closest(val, data->params->sample_times, in lm75_update_interval()
455 (int)data->params->num_sample_times); in lm75_update_interval()
457 switch (data->kind) { in lm75_update_interval()
464 data->sample_time = data->params->sample_times[index]; in lm75_update_interval()
465 if (data->params->resolutions) in lm75_update_interval()
466 data->resolution = data->params->resolutions[index]; in lm75_update_interval()
470 err = regmap_update_bits(data->regmap, LM75_REG_CONF, in lm75_update_interval()
471 0xc000, (3 - index) << 14); in lm75_update_interval()
474 data->sample_time = data->params->sample_times[index]; in lm75_update_interval()
477 err = regmap_write(data->regmap, PCT2075_REG_IDLE, index + 1); in lm75_update_interval()
480 data->sample_time = data->params->sample_times[index]; in lm75_update_interval()
492 return -EINVAL; in lm75_write_chip()
506 return -EINVAL; in lm75_write()
520 if (config_data->params->num_sample_times > 1) in lm75_is_visible()
533 if (config_data->params->alarm) in lm75_is_visible()
581 if (!data->params->config_reg_16bits) in lm75_i2c_reg_read()
600 (reg == LM75_REG_CONF && !data->params->config_reg_16bits)) in lm75_i2c_reg_write()
620 .data.out = data->reg_buf, in lm75_i3c_reg_read()
625 .data.out = data->val_buf, in lm75_i3c_reg_read()
630 data->reg_buf[0] = reg; in lm75_i3c_reg_read()
632 if (reg == LM75_REG_CONF && !data->params->config_reg_16bits) in lm75_i3c_reg_read()
633 xfers[1].len--; in lm75_i3c_reg_read()
639 if (reg == LM75_REG_CONF && !data->params->config_reg_16bits) in lm75_i3c_reg_read()
640 *val = data->val_buf[0]; in lm75_i3c_reg_read()
642 *val = data->val_buf[0] | (data->val_buf[1] << 8); in lm75_i3c_reg_read()
644 *val = data->val_buf[1] | (data->val_buf[0] << 8); in lm75_i3c_reg_read()
657 .data.out = data->val_buf, in lm75_i3c_reg_write()
661 data->val_buf[0] = reg; in lm75_i3c_reg_write()
664 (reg == LM75_REG_CONF && !data->params->config_reg_16bits)) { in lm75_i3c_reg_write()
665 xfers[0].len--; in lm75_i3c_reg_write()
666 data->val_buf[1] = val & 0xff; in lm75_i3c_reg_write()
668 data->val_buf[1] = val & 0xff; in lm75_i3c_reg_write()
669 data->val_buf[2] = (val >> 8) & 0xff; in lm75_i3c_reg_write()
671 data->val_buf[1] = (val >> 8) & 0xff; in lm75_i3c_reg_write()
672 data->val_buf[2] = val & 0xff; in lm75_i3c_reg_write()
699 regmap_write(lm75->regmap, LM75_REG_CONF, lm75->orig_conf); in lm75_remove()
711 return -ENOMEM; in lm75_generic_probe()
716 data->kind = kind; in lm75_generic_probe()
717 data->regmap = regmap; in lm75_generic_probe()
727 data->params = &device_params[data->kind]; in lm75_generic_probe()
730 data->sample_time = data->params->default_sample_time; in lm75_generic_probe()
731 data->resolution = data->params->default_resolution; in lm75_generic_probe()
734 err = regmap_read(data->regmap, LM75_REG_CONF, &status); in lm75_generic_probe()
737 data->orig_conf = status; in lm75_generic_probe()
739 err = lm75_write_config(data, data->params->set_mask, in lm75_generic_probe()
740 data->params->clr_mask); in lm75_generic_probe()
754 if (data->params->alarm) { in lm75_generic_probe()
777 struct device *dev = &client->dev; in lm75_i2c_probe()
780 if (!i2c_check_functionality(client->adapter, in lm75_i2c_probe()
782 return -EOPNOTSUPP; in lm75_i2c_probe()
788 return lm75_generic_probe(dev, client->name, (uintptr_t)i2c_get_match_data(client), in lm75_i2c_probe()
789 client->irq, regmap); in lm75_i2c_probe()
853 id_data = i3c_device_match_id(i3cdev, lm75_i3c_ids)->data; in lm75_i3c_probe()
855 return lm75_generic_probe(dev, id_data->name, id_data->type, 0, regmap); in lm75_i3c_probe()
985 /* Return 0 if detection is successful, -ENODEV otherwise */
989 struct i2c_adapter *adapter = new_client->adapter; in lm75_detect()
996 return -ENODEV; in lm75_detect()
999 * Now, we do the remaining detection. There is no identification- in lm75_detect()
1001 * unused bits, registers cycling over 8-address boundaries, in lm75_detect()
1002 * addresses 0x04-0x07 returning the last read value. in lm75_detect()
1026 return -ENODEV; in lm75_detect()
1037 return -ENODEV; in lm75_detect()
1048 return -ENODEV; in lm75_detect()
1054 return -ENODEV; in lm75_detect()
1061 return -ENODEV; in lm75_detect()
1068 return -ENODEV; in lm75_detect()
1071 return -ENODEV; in lm75_detect()
1074 strscpy(info->type, is_lm75a ? "lm75a" : "lm75", I2C_NAME_SIZE); in lm75_detect()
1084 return regmap_update_bits(data->regmap, LM75_REG_CONF, LM75_SHUTDOWN, LM75_SHUTDOWN); in lm75_suspend()
1091 return regmap_update_bits(data->regmap, LM75_REG_CONF, LM75_SHUTDOWN, 0); in lm75_resume()