Lines Matching refs:indio_dev

65 	int (*init)(struct device *dev, struct iio_dev *indio_dev);
170 static int stm32_dfsdm_get_jextsel(struct iio_dev *indio_dev, in stm32_dfsdm_get_jextsel() argument
312 static int stm32_dfsdm_compute_all_osrs(struct iio_dev *indio_dev, in stm32_dfsdm_compute_all_osrs() argument
315 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_compute_all_osrs()
325 dev_err(&indio_dev->dev, in stm32_dfsdm_compute_all_osrs()
334 static int stm32_dfsdm_start_channel(struct iio_dev *indio_dev) in stm32_dfsdm_start_channel() argument
336 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_start_channel()
343 chan = indio_dev->channels + bit; in stm32_dfsdm_start_channel()
354 static void stm32_dfsdm_stop_channel(struct iio_dev *indio_dev) in stm32_dfsdm_stop_channel() argument
356 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_stop_channel()
362 chan = indio_dev->channels + bit; in stm32_dfsdm_stop_channel()
422 static int stm32_dfsdm_filter_set_trig(struct iio_dev *indio_dev, in stm32_dfsdm_filter_set_trig() argument
426 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_filter_set_trig()
432 ret = stm32_dfsdm_get_jextsel(indio_dev, trig); in stm32_dfsdm_filter_set_trig()
451 static int stm32_dfsdm_channels_configure(struct iio_dev *indio_dev, in stm32_dfsdm_channels_configure() argument
455 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_channels_configure()
469 if (adc->nconv == 1 && !trig && iio_buffer_enabled(indio_dev)) { in stm32_dfsdm_channels_configure()
479 dev_dbg(&indio_dev->dev, "Samples actual resolution: %d bits", in stm32_dfsdm_channels_configure()
484 chan = indio_dev->channels + bit; in stm32_dfsdm_channels_configure()
497 static int stm32_dfsdm_filter_configure(struct iio_dev *indio_dev, in stm32_dfsdm_filter_configure() argument
501 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_filter_configure()
527 ret = stm32_dfsdm_filter_set_trig(indio_dev, fl_id, trig); in stm32_dfsdm_filter_configure()
558 chan = indio_dev->channels + bit; in stm32_dfsdm_filter_configure()
564 if (iio_buffer_enabled(indio_dev)) in stm32_dfsdm_filter_configure()
572 chan = indio_dev->channels + bit; in stm32_dfsdm_filter_configure()
598 struct iio_dev *indio_dev, in stm32_dfsdm_channel_parse_of() argument
606 ret = of_property_read_u32_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
610 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
616 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
622 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
626 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
635 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
647 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
659 ret = of_property_read_u32_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
668 static ssize_t dfsdm_adc_audio_get_spiclk(struct iio_dev *indio_dev, in dfsdm_adc_audio_get_spiclk() argument
673 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_get_spiclk()
678 static int dfsdm_adc_set_samp_freq(struct iio_dev *indio_dev, in dfsdm_adc_set_samp_freq() argument
682 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_set_samp_freq()
688 dev_dbg(&indio_dev->dev, in dfsdm_adc_set_samp_freq()
692 ret = stm32_dfsdm_compute_all_osrs(indio_dev, oversamp); in dfsdm_adc_set_samp_freq()
702 static ssize_t dfsdm_adc_audio_set_spiclk(struct iio_dev *indio_dev, in dfsdm_adc_audio_set_spiclk() argument
707 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_set_spiclk()
713 dev_err(&indio_dev->dev, "enter %s\n", __func__); in dfsdm_adc_audio_set_spiclk()
726 ret = dfsdm_adc_set_samp_freq(indio_dev, sample_freq, spi_freq); in dfsdm_adc_audio_set_spiclk()
735 static int stm32_dfsdm_start_conv(struct iio_dev *indio_dev, in stm32_dfsdm_start_conv() argument
738 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_start_conv()
742 ret = stm32_dfsdm_channels_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
746 ret = stm32_dfsdm_start_channel(indio_dev); in stm32_dfsdm_start_conv()
750 ret = stm32_dfsdm_filter_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
764 stm32_dfsdm_stop_channel(indio_dev); in stm32_dfsdm_start_conv()
769 static void stm32_dfsdm_stop_conv(struct iio_dev *indio_dev) in stm32_dfsdm_stop_conv() argument
771 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_stop_conv()
779 stm32_dfsdm_stop_channel(indio_dev); in stm32_dfsdm_stop_conv()
782 static int stm32_dfsdm_set_watermark(struct iio_dev *indio_dev, in stm32_dfsdm_set_watermark() argument
785 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_set_watermark()
852 struct iio_dev *indio_dev = data; in stm32_dfsdm_dma_buffer_done() local
853 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_buffer_done()
866 dev_dbg(&indio_dev->dev, "pos = %d, available = %d\n", in stm32_dfsdm_dma_buffer_done()
870 while (available >= indio_dev->scan_bytes) { in stm32_dfsdm_dma_buffer_done()
875 available -= indio_dev->scan_bytes; in stm32_dfsdm_dma_buffer_done()
876 adc->bufi += indio_dev->scan_bytes; in stm32_dfsdm_dma_buffer_done()
894 iio_push_to_buffers(indio_dev, buffer); in stm32_dfsdm_dma_buffer_done()
901 static int stm32_dfsdm_adc_dma_start(struct iio_dev *indio_dev) in stm32_dfsdm_adc_dma_start() argument
903 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_start()
920 dev_dbg(&indio_dev->dev, "size=%d watermark=%d\n", in stm32_dfsdm_adc_dma_start()
923 if (adc->nconv == 1 && !indio_dev->trig) in stm32_dfsdm_adc_dma_start()
941 desc->callback_param = indio_dev; in stm32_dfsdm_adc_dma_start()
951 if (adc->nconv == 1 && !indio_dev->trig) { in stm32_dfsdm_adc_dma_start()
976 static void stm32_dfsdm_adc_dma_stop(struct iio_dev *indio_dev) in stm32_dfsdm_adc_dma_stop() argument
978 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_stop()
988 static int stm32_dfsdm_update_scan_mode(struct iio_dev *indio_dev, in stm32_dfsdm_update_scan_mode() argument
991 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_update_scan_mode()
993 adc->nconv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_dfsdm_update_scan_mode()
996 dev_dbg(&indio_dev->dev, "nconv=%d mask=%lx\n", adc->nconv, *scan_mask); in stm32_dfsdm_update_scan_mode()
1001 static int stm32_dfsdm_postenable(struct iio_dev *indio_dev) in stm32_dfsdm_postenable() argument
1003 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_postenable()
1019 ret = stm32_dfsdm_adc_dma_start(indio_dev); in stm32_dfsdm_postenable()
1021 dev_err(&indio_dev->dev, "Can't start DMA\n"); in stm32_dfsdm_postenable()
1025 ret = stm32_dfsdm_start_conv(indio_dev, indio_dev->trig); in stm32_dfsdm_postenable()
1027 dev_err(&indio_dev->dev, "Can't start conversion\n"); in stm32_dfsdm_postenable()
1034 stm32_dfsdm_adc_dma_stop(indio_dev); in stm32_dfsdm_postenable()
1044 static int stm32_dfsdm_predisable(struct iio_dev *indio_dev) in stm32_dfsdm_predisable() argument
1046 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_predisable()
1048 stm32_dfsdm_stop_conv(indio_dev); in stm32_dfsdm_predisable()
1050 stm32_dfsdm_adc_dma_stop(indio_dev); in stm32_dfsdm_predisable()
1114 static int stm32_dfsdm_single_conv(struct iio_dev *indio_dev, in stm32_dfsdm_single_conv() argument
1117 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_single_conv()
1136 ret = stm32_dfsdm_start_conv(indio_dev, NULL); in stm32_dfsdm_single_conv()
1157 stm32_dfsdm_stop_conv(indio_dev); in stm32_dfsdm_single_conv()
1167 static int stm32_dfsdm_write_raw(struct iio_dev *indio_dev, in stm32_dfsdm_write_raw() argument
1171 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_write_raw()
1190 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1194 ret = stm32_dfsdm_compute_all_osrs(indio_dev, val); in stm32_dfsdm_write_raw()
1196 dev_dbg(&indio_dev->dev, in stm32_dfsdm_write_raw()
1202 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1209 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1213 ret = dfsdm_adc_set_samp_freq(indio_dev, val, spi_freq); in stm32_dfsdm_write_raw()
1214 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1221 static int stm32_dfsdm_read_raw(struct iio_dev *indio_dev, in stm32_dfsdm_read_raw() argument
1225 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_read_raw()
1230 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1235 dev_err(&indio_dev->dev, in stm32_dfsdm_read_raw()
1238 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1241 ret = stm32_dfsdm_single_conv(indio_dev, chan, val); in stm32_dfsdm_read_raw()
1244 dev_err(&indio_dev->dev, in stm32_dfsdm_read_raw()
1247 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1250 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1267 static int stm32_dfsdm_validate_trigger(struct iio_dev *indio_dev, in stm32_dfsdm_validate_trigger() argument
1270 return stm32_dfsdm_get_jextsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_dfsdm_validate_trigger()
1290 struct iio_dev *indio_dev = arg; in stm32_dfsdm_irq() local
1291 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_irq()
1306 dev_warn(&indio_dev->dev, "Overrun detected\n"); in stm32_dfsdm_irq()
1330 static void stm32_dfsdm_dma_release(struct iio_dev *indio_dev) in stm32_dfsdm_dma_release() argument
1332 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_release()
1343 struct iio_dev *indio_dev) in stm32_dfsdm_dma_request() argument
1345 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_request()
1363 indio_dev->modes |= INDIO_BUFFER_SOFTWARE; in stm32_dfsdm_dma_request()
1364 indio_dev->setup_ops = &stm32_dfsdm_buffer_setup_ops; in stm32_dfsdm_dma_request()
1369 static int stm32_dfsdm_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_dfsdm_adc_chan_init_one() argument
1372 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_chan_init_one()
1375 ret = stm32_dfsdm_channel_parse_of(adc->dfsdm, indio_dev, ch); in stm32_dfsdm_adc_chan_init_one()
1403 static int stm32_dfsdm_audio_init(struct device *dev, struct iio_dev *indio_dev) in stm32_dfsdm_audio_init() argument
1406 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_audio_init()
1410 ch = devm_kzalloc(&indio_dev->dev, sizeof(*ch), GFP_KERNEL); in stm32_dfsdm_audio_init()
1416 ret = stm32_dfsdm_adc_chan_init_one(indio_dev, ch); in stm32_dfsdm_audio_init()
1418 dev_err(&indio_dev->dev, "Channels init failed\n"); in stm32_dfsdm_audio_init()
1427 indio_dev->num_channels = 1; in stm32_dfsdm_audio_init()
1428 indio_dev->channels = ch; in stm32_dfsdm_audio_init()
1430 return stm32_dfsdm_dma_request(dev, indio_dev); in stm32_dfsdm_audio_init()
1433 static int stm32_dfsdm_adc_init(struct device *dev, struct iio_dev *indio_dev) in stm32_dfsdm_adc_init() argument
1436 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_init()
1441 ret = stm32_dfsdm_compute_all_osrs(indio_dev, adc->oversamp); in stm32_dfsdm_adc_init()
1445 num_ch = of_property_count_u32_elems(indio_dev->dev.of_node, in stm32_dfsdm_adc_init()
1448 dev_err(&indio_dev->dev, "Bad st,adc-channels\n"); in stm32_dfsdm_adc_init()
1453 adc->hwc = devm_iio_hw_consumer_alloc(&indio_dev->dev); in stm32_dfsdm_adc_init()
1457 ch = devm_kcalloc(&indio_dev->dev, num_ch, sizeof(*ch), in stm32_dfsdm_adc_init()
1464 ret = stm32_dfsdm_adc_chan_init_one(indio_dev, &ch[chan_idx]); in stm32_dfsdm_adc_init()
1466 dev_err(&indio_dev->dev, "Channels init failed\n"); in stm32_dfsdm_adc_init()
1471 indio_dev->num_channels = num_ch; in stm32_dfsdm_adc_init()
1472 indio_dev->channels = ch; in stm32_dfsdm_adc_init()
1477 ret = stm32_dfsdm_dma_request(dev, indio_dev); in stm32_dfsdm_adc_init()
1487 ret = iio_triggered_buffer_setup(indio_dev, in stm32_dfsdm_adc_init()
1491 stm32_dfsdm_dma_release(indio_dev); in stm32_dfsdm_adc_init()
1492 dev_err(&indio_dev->dev, "buffer setup failed\n"); in stm32_dfsdm_adc_init()
1497 indio_dev->modes |= INDIO_HARDWARE_TRIGGERED; in stm32_dfsdm_adc_init()
1623 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_dfsdm_adc_remove() local
1624 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_remove()
1628 iio_device_unregister(indio_dev); in stm32_dfsdm_adc_remove()
1629 stm32_dfsdm_dma_release(indio_dev); in stm32_dfsdm_adc_remove()
1636 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_dfsdm_adc_suspend() local
1638 if (iio_buffer_enabled(indio_dev)) in stm32_dfsdm_adc_suspend()
1639 stm32_dfsdm_predisable(indio_dev); in stm32_dfsdm_adc_suspend()
1646 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_dfsdm_adc_resume() local
1647 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_resume()
1653 for (i = 0; i < indio_dev->num_channels; i++) { in stm32_dfsdm_adc_resume()
1654 chan = indio_dev->channels + i; in stm32_dfsdm_adc_resume()
1661 if (iio_buffer_enabled(indio_dev)) in stm32_dfsdm_adc_resume()
1662 stm32_dfsdm_postenable(indio_dev); in stm32_dfsdm_adc_resume()