Lines Matching refs:ltc2309
29 * struct ltc2309 - internal device data structure
36 struct ltc2309 {
103 static int ltc2309_read_raw_channel(struct ltc2309 *ltc2309,
114 ret = i2c_smbus_write_byte(ltc2309->client, din);
116 dev_err(ltc2309->dev, "i2c command failed: %pe\n",
121 ret = i2c_master_recv(ltc2309->client, (char *)&buf, 2);
123 dev_err(ltc2309->dev, "i2c read failed: %pe\n", ERR_PTR(ret));
136 struct ltc2309 *ltc2309 = iio_priv(indio_dev);
141 mutex_lock(<c2309->lock);
142 ret = ltc2309_read_raw_channel(ltc2309, chan->address, val);
143 mutex_unlock(<c2309->lock);
148 *val = ltc2309->vref_mv;
168 struct ltc2309 *ltc2309;
171 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*ltc2309));
175 ltc2309 = iio_priv(indio_dev);
176 ltc2309->dev = &indio_dev->dev;
177 ltc2309->client = client;
178 ltc2309->vref_mv = 4096; /* Default to the internal ref */
180 indio_dev->name = "ltc2309";
186 ltc2309->vref = devm_regulator_get_optional(&client->dev, "vref");
187 if (IS_ERR(ltc2309->vref)) {
188 ret = PTR_ERR(ltc2309->vref);
190 ltc2309->vref = NULL;
195 if (ltc2309->vref) {
196 ret = regulator_enable(ltc2309->vref);
198 return dev_err_probe(ltc2309->dev, ret,
201 ret = devm_add_action_or_reset(ltc2309->dev,
203 ltc2309->vref);
205 return dev_err_probe(ltc2309->dev, ret,
210 ret = regulator_get_voltage(ltc2309->vref);
214 ltc2309->vref_mv = ret / 1000;
217 mutex_init(<c2309->lock);
223 { .compatible = "lltc,ltc2309" },
229 { "ltc2309" },
236 .name = "ltc2309",