• Home
  • Raw
  • Download

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()
470 (indio_dev->currentmode & INDIO_BUFFER_SOFTWARE)) { in stm32_dfsdm_channels_configure()
480 dev_dbg(&indio_dev->dev, "Samples actual resolution: %d bits", in stm32_dfsdm_channels_configure()
485 chan = indio_dev->channels + bit; in stm32_dfsdm_channels_configure()
498 static int stm32_dfsdm_filter_configure(struct iio_dev *indio_dev, in stm32_dfsdm_filter_configure() argument
502 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_filter_configure()
528 ret = stm32_dfsdm_filter_set_trig(indio_dev, fl_id, trig); in stm32_dfsdm_filter_configure()
559 chan = indio_dev->channels + bit; in stm32_dfsdm_filter_configure()
565 if (indio_dev->currentmode & INDIO_BUFFER_SOFTWARE) in stm32_dfsdm_filter_configure()
573 chan = indio_dev->channels + bit; in stm32_dfsdm_filter_configure()
599 struct iio_dev *indio_dev, in stm32_dfsdm_channel_parse_of() argument
607 ret = of_property_read_u32_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
611 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
617 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
623 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
627 dev_err(&indio_dev->dev, in stm32_dfsdm_channel_parse_of()
636 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
648 ret = of_property_read_string_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
660 ret = of_property_read_u32_index(indio_dev->dev.of_node, in stm32_dfsdm_channel_parse_of()
669 static ssize_t dfsdm_adc_audio_get_spiclk(struct iio_dev *indio_dev, in dfsdm_adc_audio_get_spiclk() argument
674 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_get_spiclk()
679 static int dfsdm_adc_set_samp_freq(struct iio_dev *indio_dev, in dfsdm_adc_set_samp_freq() argument
683 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_set_samp_freq()
689 dev_dbg(&indio_dev->dev, in dfsdm_adc_set_samp_freq()
693 ret = stm32_dfsdm_compute_all_osrs(indio_dev, oversamp); in dfsdm_adc_set_samp_freq()
703 static ssize_t dfsdm_adc_audio_set_spiclk(struct iio_dev *indio_dev, in dfsdm_adc_audio_set_spiclk() argument
708 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_set_spiclk()
714 dev_err(&indio_dev->dev, "enter %s\n", __func__); in dfsdm_adc_audio_set_spiclk()
727 ret = dfsdm_adc_set_samp_freq(indio_dev, sample_freq, spi_freq); in dfsdm_adc_audio_set_spiclk()
736 static int stm32_dfsdm_start_conv(struct iio_dev *indio_dev, in stm32_dfsdm_start_conv() argument
739 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_start_conv()
743 ret = stm32_dfsdm_channels_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
747 ret = stm32_dfsdm_start_channel(indio_dev); in stm32_dfsdm_start_conv()
751 ret = stm32_dfsdm_filter_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
765 stm32_dfsdm_stop_channel(indio_dev); in stm32_dfsdm_start_conv()
770 static void stm32_dfsdm_stop_conv(struct iio_dev *indio_dev) in stm32_dfsdm_stop_conv() argument
772 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_stop_conv()
780 stm32_dfsdm_stop_channel(indio_dev); in stm32_dfsdm_stop_conv()
783 static int stm32_dfsdm_set_watermark(struct iio_dev *indio_dev, in stm32_dfsdm_set_watermark() argument
786 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_set_watermark()
853 struct iio_dev *indio_dev = data; in stm32_dfsdm_dma_buffer_done() local
854 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_buffer_done()
867 dev_dbg(&indio_dev->dev, "%s: pos = %d, available = %d\n", __func__, in stm32_dfsdm_dma_buffer_done()
871 while (available >= indio_dev->scan_bytes) { in stm32_dfsdm_dma_buffer_done()
876 available -= indio_dev->scan_bytes; in stm32_dfsdm_dma_buffer_done()
877 adc->bufi += indio_dev->scan_bytes; in stm32_dfsdm_dma_buffer_done()
895 iio_push_to_buffers(indio_dev, buffer); in stm32_dfsdm_dma_buffer_done()
902 static int stm32_dfsdm_adc_dma_start(struct iio_dev *indio_dev) in stm32_dfsdm_adc_dma_start() argument
904 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_start()
921 dev_dbg(&indio_dev->dev, "%s size=%d watermark=%d\n", __func__, in stm32_dfsdm_adc_dma_start()
924 if (adc->nconv == 1 && !indio_dev->trig) in stm32_dfsdm_adc_dma_start()
942 desc->callback_param = indio_dev; in stm32_dfsdm_adc_dma_start()
952 if (adc->nconv == 1 && !indio_dev->trig) { in stm32_dfsdm_adc_dma_start()
977 static void stm32_dfsdm_adc_dma_stop(struct iio_dev *indio_dev) in stm32_dfsdm_adc_dma_stop() argument
979 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_stop()
989 static int stm32_dfsdm_update_scan_mode(struct iio_dev *indio_dev, in stm32_dfsdm_update_scan_mode() argument
992 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_update_scan_mode()
994 adc->nconv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_dfsdm_update_scan_mode()
997 dev_dbg(&indio_dev->dev, "nconv=%d mask=%lx\n", adc->nconv, *scan_mask); in stm32_dfsdm_update_scan_mode()
1002 static int stm32_dfsdm_postenable(struct iio_dev *indio_dev) in stm32_dfsdm_postenable() argument
1004 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_postenable()
1020 ret = stm32_dfsdm_adc_dma_start(indio_dev); in stm32_dfsdm_postenable()
1022 dev_err(&indio_dev->dev, "Can't start DMA\n"); in stm32_dfsdm_postenable()
1026 ret = stm32_dfsdm_start_conv(indio_dev, indio_dev->trig); in stm32_dfsdm_postenable()
1028 dev_err(&indio_dev->dev, "Can't start conversion\n"); in stm32_dfsdm_postenable()
1035 stm32_dfsdm_adc_dma_stop(indio_dev); in stm32_dfsdm_postenable()
1045 static int stm32_dfsdm_predisable(struct iio_dev *indio_dev) in stm32_dfsdm_predisable() argument
1047 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_predisable()
1049 stm32_dfsdm_stop_conv(indio_dev); in stm32_dfsdm_predisable()
1051 stm32_dfsdm_adc_dma_stop(indio_dev); in stm32_dfsdm_predisable()
1115 static int stm32_dfsdm_single_conv(struct iio_dev *indio_dev, in stm32_dfsdm_single_conv() argument
1118 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_single_conv()
1137 ret = stm32_dfsdm_start_conv(indio_dev, NULL); in stm32_dfsdm_single_conv()
1158 stm32_dfsdm_stop_conv(indio_dev); in stm32_dfsdm_single_conv()
1168 static int stm32_dfsdm_write_raw(struct iio_dev *indio_dev, in stm32_dfsdm_write_raw() argument
1172 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_write_raw()
1191 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1195 ret = stm32_dfsdm_compute_all_osrs(indio_dev, val); in stm32_dfsdm_write_raw()
1197 dev_dbg(&indio_dev->dev, in stm32_dfsdm_write_raw()
1203 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1210 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1214 ret = dfsdm_adc_set_samp_freq(indio_dev, val, spi_freq); in stm32_dfsdm_write_raw()
1215 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_write_raw()
1222 static int stm32_dfsdm_read_raw(struct iio_dev *indio_dev, in stm32_dfsdm_read_raw() argument
1226 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_read_raw()
1231 ret = iio_device_claim_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1236 dev_err(&indio_dev->dev, in stm32_dfsdm_read_raw()
1239 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1242 ret = stm32_dfsdm_single_conv(indio_dev, chan, val); in stm32_dfsdm_read_raw()
1245 dev_err(&indio_dev->dev, in stm32_dfsdm_read_raw()
1248 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1251 iio_device_release_direct_mode(indio_dev); in stm32_dfsdm_read_raw()
1268 static int stm32_dfsdm_validate_trigger(struct iio_dev *indio_dev, in stm32_dfsdm_validate_trigger() argument
1271 return stm32_dfsdm_get_jextsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_dfsdm_validate_trigger()
1291 struct iio_dev *indio_dev = arg; in stm32_dfsdm_irq() local
1292 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_irq()
1307 dev_warn(&indio_dev->dev, "Overrun detected\n"); in stm32_dfsdm_irq()
1331 static void stm32_dfsdm_dma_release(struct iio_dev *indio_dev) in stm32_dfsdm_dma_release() argument
1333 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_release()
1344 struct iio_dev *indio_dev) in stm32_dfsdm_dma_request() argument
1346 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_request()
1364 indio_dev->modes |= INDIO_BUFFER_SOFTWARE; in stm32_dfsdm_dma_request()
1365 indio_dev->setup_ops = &stm32_dfsdm_buffer_setup_ops; in stm32_dfsdm_dma_request()
1370 static int stm32_dfsdm_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_dfsdm_adc_chan_init_one() argument
1373 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_chan_init_one()
1376 ret = stm32_dfsdm_channel_parse_of(adc->dfsdm, indio_dev, ch); in stm32_dfsdm_adc_chan_init_one()
1404 static int stm32_dfsdm_audio_init(struct device *dev, struct iio_dev *indio_dev) in stm32_dfsdm_audio_init() argument
1407 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_audio_init()
1411 ch = devm_kzalloc(&indio_dev->dev, sizeof(*ch), GFP_KERNEL); in stm32_dfsdm_audio_init()
1417 ret = stm32_dfsdm_adc_chan_init_one(indio_dev, ch); in stm32_dfsdm_audio_init()
1419 dev_err(&indio_dev->dev, "Channels init failed\n"); in stm32_dfsdm_audio_init()
1428 indio_dev->num_channels = 1; in stm32_dfsdm_audio_init()
1429 indio_dev->channels = ch; in stm32_dfsdm_audio_init()
1431 return stm32_dfsdm_dma_request(dev, indio_dev); in stm32_dfsdm_audio_init()
1434 static int stm32_dfsdm_adc_init(struct device *dev, struct iio_dev *indio_dev) in stm32_dfsdm_adc_init() argument
1437 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_init()
1442 ret = stm32_dfsdm_compute_all_osrs(indio_dev, adc->oversamp); in stm32_dfsdm_adc_init()
1446 num_ch = of_property_count_u32_elems(indio_dev->dev.of_node, in stm32_dfsdm_adc_init()
1449 dev_err(&indio_dev->dev, "Bad st,adc-channels\n"); in stm32_dfsdm_adc_init()
1454 adc->hwc = devm_iio_hw_consumer_alloc(&indio_dev->dev); in stm32_dfsdm_adc_init()
1458 ch = devm_kcalloc(&indio_dev->dev, num_ch, sizeof(*ch), in stm32_dfsdm_adc_init()
1465 ret = stm32_dfsdm_adc_chan_init_one(indio_dev, &ch[chan_idx]); in stm32_dfsdm_adc_init()
1467 dev_err(&indio_dev->dev, "Channels init failed\n"); in stm32_dfsdm_adc_init()
1472 indio_dev->num_channels = num_ch; in stm32_dfsdm_adc_init()
1473 indio_dev->channels = ch; in stm32_dfsdm_adc_init()
1478 ret = stm32_dfsdm_dma_request(dev, indio_dev); in stm32_dfsdm_adc_init()
1488 ret = iio_triggered_buffer_setup(indio_dev, in stm32_dfsdm_adc_init()
1492 stm32_dfsdm_dma_release(indio_dev); in stm32_dfsdm_adc_init()
1493 dev_err(&indio_dev->dev, "buffer setup failed\n"); in stm32_dfsdm_adc_init()
1498 indio_dev->modes |= INDIO_HARDWARE_TRIGGERED; in stm32_dfsdm_adc_init()
1625 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_dfsdm_adc_remove() local
1626 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_remove()
1630 iio_device_unregister(indio_dev); in stm32_dfsdm_adc_remove()
1631 stm32_dfsdm_dma_release(indio_dev); in stm32_dfsdm_adc_remove()
1638 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_dfsdm_adc_suspend() local
1640 if (iio_buffer_enabled(indio_dev)) in stm32_dfsdm_adc_suspend()
1641 stm32_dfsdm_predisable(indio_dev); in stm32_dfsdm_adc_suspend()
1648 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_dfsdm_adc_resume() local
1649 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_resume()
1655 for (i = 0; i < indio_dev->num_channels; i++) { in stm32_dfsdm_adc_resume()
1656 chan = indio_dev->channels + i; in stm32_dfsdm_adc_resume()
1663 if (iio_buffer_enabled(indio_dev)) in stm32_dfsdm_adc_resume()
1664 stm32_dfsdm_postenable(indio_dev); in stm32_dfsdm_adc_resume()