Lines Matching full:tmp108
2 /* Texas Instruments TMP108 SMBus temperature sensor driver
21 #define DRIVER_NAME "tmp108"
73 struct tmp108 { struct
79 /* convert 12-bit TMP108 register value to milliCelsius */
85 /* convert milliCelsius to left adjusted 12-bit TMP108 register value */
94 struct tmp108 *tmp108 = dev_get_drvdata(dev); in tmp108_read() argument
100 err = regmap_read(tmp108->regmap, TMP108_REG_CONF, in tmp108_read()
127 if (time_before(jiffies, tmp108->ready_time)) { in tmp108_read()
132 err = regmap_read(tmp108->regmap, TMP108_REG_TEMP, ®val); in tmp108_read()
139 err = regmap_read(tmp108->regmap, attr == hwmon_temp_min ? in tmp108_read()
147 err = regmap_read(tmp108->regmap, TMP108_REG_CONF, ®val); in tmp108_read()
155 err = regmap_read(tmp108->regmap, TMP108_REG_CONF, ®val); in tmp108_read()
173 err = regmap_read(tmp108->regmap, attr == hwmon_temp_min_hyst ? in tmp108_read()
193 struct tmp108 *tmp108 = dev_get_drvdata(dev); in tmp108_write() local
207 return regmap_update_bits(tmp108->regmap, in tmp108_write()
219 return regmap_write(tmp108->regmap, in tmp108_write()
226 err = regmap_read(tmp108->regmap, in tmp108_write()
244 return regmap_update_bits(tmp108->regmap, TMP108_REG_CONF, in tmp108_write()
298 struct tmp108 *tmp108 = data; in tmp108_restore_config() local
300 regmap_write(tmp108->regmap, TMP108_REG_CONF, tmp108->orig_config); in tmp108_restore_config()
330 struct tmp108 *tmp108; in tmp108_probe() local
341 tmp108 = devm_kzalloc(dev, sizeof(*tmp108), GFP_KERNEL); in tmp108_probe()
342 if (!tmp108) in tmp108_probe()
345 dev_set_drvdata(dev, tmp108); in tmp108_probe()
347 tmp108->regmap = devm_regmap_init_i2c(client, &tmp108_regmap_config); in tmp108_probe()
348 if (IS_ERR(tmp108->regmap)) { in tmp108_probe()
349 err = PTR_ERR(tmp108->regmap); in tmp108_probe()
354 err = regmap_read(tmp108->regmap, TMP108_REG_CONF, &config); in tmp108_probe()
359 tmp108->orig_config = config; in tmp108_probe()
368 err = regmap_write(tmp108->regmap, TMP108_REG_CONF, config); in tmp108_probe()
374 tmp108->ready_time = jiffies; in tmp108_probe()
375 if ((tmp108->orig_config & TMP108_CONF_MODE_MASK) == in tmp108_probe()
377 tmp108->ready_time += in tmp108_probe()
380 err = devm_add_action_or_reset(dev, tmp108_restore_config, tmp108); in tmp108_probe()
387 tmp108, in tmp108_probe()
395 struct tmp108 *tmp108 = dev_get_drvdata(dev); in tmp108_suspend() local
397 return regmap_update_bits(tmp108->regmap, TMP108_REG_CONF, in tmp108_suspend()
403 struct tmp108 *tmp108 = dev_get_drvdata(dev); in tmp108_resume() local
406 err = regmap_update_bits(tmp108->regmap, TMP108_REG_CONF, in tmp108_resume()
408 tmp108->ready_time = jiffies + in tmp108_resume()
416 { "tmp108", 0 },
423 { .compatible = "ti,tmp108", },
442 MODULE_DESCRIPTION("Texas Instruments TMP108 temperature sensor driver");