Lines Matching refs:indio_dev

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