Lines Matching +full:buffered +full:- +full:positive
1 // SPDX-License-Identifier: GPL-2.0-only
31 * struct iio_dummy_accel_calibscale - realworld to register mapping
32 * @val: first value in read_raw - here integer part.
33 * @val2: second value in read_raw etc - here micro part.
34 * @regval: register value - magic device specific numbers.
51 * simple event - triggered when value rises above
61 * simple step detect event - triggered when a step is detected
70 * simple transition event - triggered when the reported running confidence
80 * simple transition event - triggered when the reported walking confidence
91 * iio_dummy_channels - Description of available channels
141 /* Differential ADC channel in_voltage1-voltage2_raw etc*/
147 * for the positive part, channel2 for the negative.
153 * in_voltage1-voltage2_raw
159 * in_voltage-voltage_scale
160 * Shared version of scale - shared by differential
176 /* Differential ADC channel in_voltage3-voltage4_raw etc*/
230 .scan_index = -1, /* No buffer support */
240 .scan_index = -1, /* No buffer support */
251 .scan_index = -1, /* No buffer support */
262 .scan_index = -1, /* No buffer support */
271 * iio_dummy_read_raw() - data read function.
286 int ret = -EINVAL; in iio_dummy_read_raw()
288 mutex_lock(&st->lock); in iio_dummy_read_raw()
290 case IIO_CHAN_INFO_RAW: /* magic value - channel value read */ in iio_dummy_read_raw()
291 switch (chan->type) { in iio_dummy_read_raw()
293 if (chan->output) { in iio_dummy_read_raw()
295 *val = st->dac_val; in iio_dummy_read_raw()
297 } else if (chan->differential) { in iio_dummy_read_raw()
298 if (chan->channel == 1) in iio_dummy_read_raw()
299 *val = st->differential_adc_val[0]; in iio_dummy_read_raw()
301 *val = st->differential_adc_val[1]; in iio_dummy_read_raw()
304 *val = st->single_ended_adc_val; in iio_dummy_read_raw()
309 *val = st->accel_val; in iio_dummy_read_raw()
317 switch (chan->type) { in iio_dummy_read_raw()
319 *val = st->steps; in iio_dummy_read_raw()
323 switch (chan->channel2) { in iio_dummy_read_raw()
325 *val = st->activity_running; in iio_dummy_read_raw()
329 *val = st->activity_walking; in iio_dummy_read_raw()
341 /* only single ended adc -> 7 */ in iio_dummy_read_raw()
346 switch (chan->type) { in iio_dummy_read_raw()
348 switch (chan->differential) { in iio_dummy_read_raw()
350 /* only single ended adc -> 0.001333 */ in iio_dummy_read_raw()
356 /* all differential adc -> 0.000001344 */ in iio_dummy_read_raw()
367 /* only the acceleration axis - read from cache */ in iio_dummy_read_raw()
368 *val = st->accel_calibbias; in iio_dummy_read_raw()
372 *val = st->accel_calibscale->val; in iio_dummy_read_raw()
373 *val2 = st->accel_calibscale->val2; in iio_dummy_read_raw()
382 switch (chan->type) { in iio_dummy_read_raw()
384 *val = st->steps_enabled; in iio_dummy_read_raw()
392 switch (chan->type) { in iio_dummy_read_raw()
394 *val = st->height; in iio_dummy_read_raw()
405 mutex_unlock(&st->lock); in iio_dummy_read_raw()
410 * iio_dummy_write_raw() - data write function.
434 switch (chan->type) { in iio_dummy_write_raw()
436 if (chan->output == 0) in iio_dummy_write_raw()
437 return -EINVAL; in iio_dummy_write_raw()
440 mutex_lock(&st->lock); in iio_dummy_write_raw()
441 st->dac_val = val; in iio_dummy_write_raw()
442 mutex_unlock(&st->lock); in iio_dummy_write_raw()
445 return -EINVAL; in iio_dummy_write_raw()
448 switch (chan->type) { in iio_dummy_write_raw()
450 mutex_lock(&st->lock); in iio_dummy_write_raw()
451 st->steps = val; in iio_dummy_write_raw()
452 mutex_unlock(&st->lock); in iio_dummy_write_raw()
459 switch (chan->channel2) { in iio_dummy_write_raw()
461 st->activity_running = val; in iio_dummy_write_raw()
464 st->activity_walking = val; in iio_dummy_write_raw()
467 return -EINVAL; in iio_dummy_write_raw()
471 return -EINVAL; in iio_dummy_write_raw()
474 mutex_lock(&st->lock); in iio_dummy_write_raw()
475 /* Compare against table - hard matching here */ in iio_dummy_write_raw()
481 ret = -EINVAL; in iio_dummy_write_raw()
483 st->accel_calibscale = &dummy_scales[i]; in iio_dummy_write_raw()
484 mutex_unlock(&st->lock); in iio_dummy_write_raw()
487 mutex_lock(&st->lock); in iio_dummy_write_raw()
488 st->accel_calibbias = val; in iio_dummy_write_raw()
489 mutex_unlock(&st->lock); in iio_dummy_write_raw()
492 switch (chan->type) { in iio_dummy_write_raw()
494 mutex_lock(&st->lock); in iio_dummy_write_raw()
495 st->steps_enabled = val; in iio_dummy_write_raw()
496 mutex_unlock(&st->lock); in iio_dummy_write_raw()
499 return -EINVAL; in iio_dummy_write_raw()
502 switch (chan->type) { in iio_dummy_write_raw()
504 st->height = val; in iio_dummy_write_raw()
507 return -EINVAL; in iio_dummy_write_raw()
511 return -EINVAL; in iio_dummy_write_raw()
530 * iio_dummy_init_device() - device instance specific init
540 st->dac_val = 0; in iio_dummy_init_device()
541 st->single_ended_adc_val = 73; in iio_dummy_init_device()
542 st->differential_adc_val[0] = 33; in iio_dummy_init_device()
543 st->differential_adc_val[1] = -34; in iio_dummy_init_device()
544 st->accel_val = 34; in iio_dummy_init_device()
545 st->accel_calibbias = -7; in iio_dummy_init_device()
546 st->accel_calibscale = &dummy_scales[0]; in iio_dummy_init_device()
547 st->steps = 47; in iio_dummy_init_device()
548 st->activity_running = 98; in iio_dummy_init_device()
549 st->activity_walking = 4; in iio_dummy_init_device()
555 * iio_dummy_probe() - device instance probe
573 * parent = &spi->dev; in iio_dummy_probe()
574 * parent = &client->dev; in iio_dummy_probe()
579 ret = -ENOMEM; in iio_dummy_probe()
592 ret = -ENOMEM; in iio_dummy_probe()
597 mutex_init(&st->lock); in iio_dummy_probe()
607 swd->device = indio_dev; in iio_dummy_probe()
615 * indio_dev->name = id->name; in iio_dummy_probe()
616 * indio_dev->name = spi_get_device_id(spi)->name; in iio_dummy_probe()
618 indio_dev->name = kstrdup(name, GFP_KERNEL); in iio_dummy_probe()
621 indio_dev->channels = iio_dummy_channels; in iio_dummy_probe()
622 indio_dev->num_channels = ARRAY_SIZE(iio_dummy_channels); in iio_dummy_probe()
628 indio_dev->info = &iio_dummy_info; in iio_dummy_probe()
631 indio_dev->modes = INDIO_DIRECT_MODE; in iio_dummy_probe()
661 * iio_dummy_remove() - device instance removal function
674 struct iio_dev *indio_dev = swd->device; in iio_dummy_remove()
681 /* Buffered capture related cleanup */ in iio_dummy_remove()
687 kfree(indio_dev->name); in iio_dummy_remove()
694 * module_iio_sw_device_driver() - device driver registration
699 * Documentation/i2c/writing-clients.rst
701 * Documentation/spi/spi-summary.rst