Lines Matching +full:16 +full:- +full:channel

1 // SPDX-License-Identifier: GPL-2.0-or-later
32 * struct ad5446_state - driver instance specific data
53 * struct ad5446_chip_info - chip specific information
54 * @channel: channel spec for the DAC
60 struct iio_chan_spec channel; member
74 st->pwr_down_mode = mode + 1; in ad5446_set_powerdown_mode()
84 return st->pwr_down_mode - 1; in ad5446_get_powerdown_mode()
101 return sysfs_emit(buf, "%d\n", st->pwr_down); in ad5446_read_dac_powerdown()
119 mutex_lock(&st->lock); in ad5446_write_dac_powerdown()
120 st->pwr_down = powerdown; in ad5446_write_dac_powerdown()
122 if (st->pwr_down) { in ad5446_write_dac_powerdown()
123 shift = chan->scan_type.realbits + chan->scan_type.shift; in ad5446_write_dac_powerdown()
124 val = st->pwr_down_mode << shift; in ad5446_write_dac_powerdown()
126 val = st->cached_val; in ad5446_write_dac_powerdown()
129 ret = st->chip_info->write(st, val); in ad5446_write_dac_powerdown()
130 mutex_unlock(&st->lock); in ad5446_write_dac_powerdown()
151 .channel = 0, \
179 *val = st->cached_val >> chan->scan_type.shift; in ad5446_read_raw()
182 *val = st->vref_mv; in ad5446_read_raw()
183 *val2 = chan->scan_type.realbits; in ad5446_read_raw()
186 return -EINVAL; in ad5446_read_raw()
200 if (val >= (1 << chan->scan_type.realbits) || val < 0) in ad5446_write_raw()
201 return -EINVAL; in ad5446_write_raw()
203 val <<= chan->scan_type.shift; in ad5446_write_raw()
204 mutex_lock(&st->lock); in ad5446_write_raw()
205 st->cached_val = val; in ad5446_write_raw()
206 if (!st->pwr_down) in ad5446_write_raw()
207 ret = st->chip_info->write(st, val); in ad5446_write_raw()
208 mutex_unlock(&st->lock); in ad5446_write_raw()
211 ret = -EINVAL; in ad5446_write_raw()
231 return -ENOMEM; in ad5446_probe()
234 st->chip_info = chip_info; in ad5446_probe()
236 st->dev = dev; in ad5446_probe()
238 indio_dev->name = name; in ad5446_probe()
239 indio_dev->info = &ad5446_info; in ad5446_probe()
240 indio_dev->modes = INDIO_DIRECT_MODE; in ad5446_probe()
241 indio_dev->channels = &st->chip_info->channel; in ad5446_probe()
242 indio_dev->num_channels = 1; in ad5446_probe()
244 mutex_init(&st->lock); in ad5446_probe()
246 st->pwr_down_mode = MODE_PWRDWN_1k; in ad5446_probe()
249 if (ret < 0 && ret != -ENODEV) in ad5446_probe()
251 if (ret == -ENODEV) { in ad5446_probe()
252 if (chip_info->int_vref_mv) in ad5446_probe()
253 st->vref_mv = chip_info->int_vref_mv; in ad5446_probe()
257 st->vref_mv = ret / 1000; in ad5446_probe()
267 struct spi_device *spi = to_spi_device(st->dev); in ad5446_write()
275 struct spi_device *spi = to_spi_device(st->dev); in ad5660_write()
317 .channel = AD5446_CHANNEL_POWERDOWN(8, 16, 4),
321 .channel = AD5446_CHANNEL_POWERDOWN(10, 16, 2),
325 .channel = AD5446_CHANNEL_POWERDOWN(12, 16, 0),
329 .channel = AD5446_CHANNEL(12, 16, 2),
333 .channel = AD5446_CHANNEL(14, 16, 0),
337 .channel = AD5446_CHANNEL(8, 16, 6),
341 .channel = AD5446_CHANNEL(10, 16, 4),
345 .channel = AD5446_CHANNEL(16, 16, 0),
349 .channel = AD5446_CHANNEL(12, 16, 4),
353 .channel = AD5446_CHANNEL(14, 16, 0),
357 .channel = AD5446_CHANNEL(16, 16, 0),
361 .channel = AD5446_CHANNEL_POWERDOWN(8, 16, 6),
365 .channel = AD5446_CHANNEL_POWERDOWN(10, 16, 4),
369 .channel = AD5446_CHANNEL_POWERDOWN(12, 16, 2),
373 .channel = AD5446_CHANNEL_POWERDOWN(14, 16, 0),
377 .channel = AD5446_CHANNEL_POWERDOWN(12, 16, 2),
382 .channel = AD5446_CHANNEL_POWERDOWN(12, 16, 2),
387 .channel = AD5446_CHANNEL_POWERDOWN(14, 16, 0),
392 .channel = AD5446_CHANNEL_POWERDOWN(14, 16, 0),
397 .channel = AD5446_CHANNEL_POWERDOWN(16, 16, 0),
402 .channel = AD5446_CHANNEL_POWERDOWN(16, 16, 0),
407 .channel = AD5446_CHANNEL_POWERDOWN(16, 16, 0),
432 {"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */
433 {"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */
434 {"ad5640-2500", ID_AD5640_2500},
435 {"ad5640-1250", ID_AD5640_1250},
436 {"ad5660-2500", ID_AD5660_2500},
437 {"ad5660-1250", ID_AD5660_1250},
457 return ad5446_probe(&spi->dev, id->name, in ad5446_spi_probe()
458 &ad5446_spi_chip_info[id->driver_data]); in ad5446_spi_probe()
491 struct i2c_client *client = to_i2c_client(st->dev); in ad5622_write()
499 return -EIO; in ad5622_write()
519 .channel = AD5446_CHANNEL_POWERDOWN(8, 16, 4),
523 .channel = AD5446_CHANNEL_POWERDOWN(10, 16, 2),
527 .channel = AD5446_CHANNEL_POWERDOWN(12, 16, 0),
535 return ad5446_probe(&i2c->dev, id->name, in ad5446_i2c_probe()
536 &ad5446_i2c_chip_info[id->driver_data]); in ad5446_i2c_probe()