Lines Matching full:max9611
3 * iio/adc/max9611.c
5 * Maxim max9611/max9612 high side current sense amplifier with
14 * Maxim max9611/max9612.
27 #define DRIVER_NAME "max9611"
29 /* max9611 register addresses */
36 /* max9611 REG1 mux configuration options */
44 /* max9611 voltage (both csa and input) helper macros */
49 * max9611 current sense amplifier voltage output:
69 * max9611 common input mode (CIM): LSB is 14mV, with 14mV offset at 25 C
78 * max9611 temperature reading: LSB is 480 milli degrees Celsius
204 * @max9611: max9611 device
208 static int max9611_read_single(struct max9611_dev *max9611, in max9611_read_single() argument
221 mutex_lock(&max9611->lock); in max9611_read_single()
222 ret = i2c_smbus_write_byte_data(max9611->i2c_client, in max9611_read_single()
225 dev_err(max9611->dev, "i2c write byte failed: 0x%2x - 0x%2x\n", in max9611_read_single()
227 mutex_unlock(&max9611->lock); in max9611_read_single()
235 ret = i2c_smbus_read_word_swapped(max9611->i2c_client, reg_addr); in max9611_read_single()
237 dev_err(max9611->dev, "i2c read word from 0x%2x failed\n", in max9611_read_single()
239 mutex_unlock(&max9611->lock); in max9611_read_single()
244 mutex_unlock(&max9611->lock); in max9611_read_single()
257 * @max9611: max9611 device
261 static int max9611_read_csa_voltage(struct max9611_dev *max9611, in max9611_read_csa_voltage() argument
274 ret = max9611_read_single(max9611, gain_selectors[i], adc_raw); in max9611_read_csa_voltage()
352 * Even if max9611 can output raw csa voltage readings, in max9611_read_raw()
425 struct max9611_dev *max9611 = iio_priv(dev_to_iio_dev(dev)); in max9611_shunt_resistor_show() local
428 i = max9611->shunt_resistor_uohm / 1000000; in max9611_shunt_resistor_show()
429 r = max9611->shunt_resistor_uohm % 1000000; in max9611_shunt_resistor_show()
454 static int max9611_init(struct max9611_dev *max9611) in max9611_init() argument
456 struct i2c_client *client = max9611->i2c_client; in max9611_init()
463 dev_err(max9611->dev, in max9611_init()
469 ret = max9611_read_single(max9611, CONF_TEMP, ®val); in max9611_init()
478 dev_err(max9611->dev, in max9611_init()
485 ret = i2c_smbus_write_byte_data(max9611->i2c_client, in max9611_init()
488 dev_err(max9611->dev, "i2c write byte failed: 0x%2x - 0x%2x\n", in max9611_init()
493 ret = i2c_smbus_write_byte_data(max9611->i2c_client, in max9611_init()
496 dev_err(max9611->dev, "i2c write byte failed: 0x%2x - 0x%2x\n", in max9611_init()
506 {.compatible = "maxim,max9611", .data = "max9611"},
519 struct max9611_dev *max9611; in max9611_probe() local
524 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*max9611)); in max9611_probe()
530 max9611 = iio_priv(indio_dev); in max9611_probe()
531 max9611->dev = &client->dev; in max9611_probe()
532 max9611->i2c_client = client; in max9611_probe()
533 mutex_init(&max9611->lock); in max9611_probe()
542 max9611->shunt_resistor_uohm = of_shunt; in max9611_probe()
544 ret = max9611_init(max9611); in max9611_probe()
567 MODULE_DESCRIPTION("Maxim max9611/12 current sense amplifier with 12bit ADC");