ltc2309
static int ltc2309_read_raw_channel(struct ltc2309 *ltc2309,
ret = i2c_smbus_write_byte(ltc2309->client, din);
dev_err(ltc2309->dev, "i2c command failed: %pe\n",
if (ltc2309->read_delay_us)
fsleep(ltc2309->read_delay_us);
ret = i2c_master_recv(ltc2309->client, (char *)&buf, 2);
dev_err(ltc2309->dev, "i2c read failed: %pe\n", ERR_PTR(ret));
struct ltc2309 *ltc2309 = iio_priv(indio_dev);
mutex_lock(<c2309->lock);
ret = ltc2309_read_raw_channel(ltc2309, chan->address, val);
mutex_unlock(<c2309->lock);
*val = ltc2309->vref_mv;
struct ltc2309 *ltc2309;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*ltc2309));
ltc2309 = iio_priv(indio_dev);
ltc2309->dev = &indio_dev->dev;
ltc2309->client = client;
ltc2309->read_delay_us = chip_info->read_delay_us;
return dev_err_probe(ltc2309->dev, ret,
ltc2309->vref_mv = ret == -ENODEV ? LTC2309_INTERNAL_REF_MV : ret / 1000;
mutex_init(<c2309->lock);