Lines Matching full:adc
3 * This file is the ADC part of the STM32 DFSDM driver
11 #include <linux/iio/adc/stm32-dfsdm-adc.h>
79 /* ADC specific */
318 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_compute_all_osrs() local
319 struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[adc->fl_id]; in stm32_dfsdm_compute_all_osrs()
339 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_start_channel() local
340 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_start_channel()
345 for_each_set_bit(bit, &adc->smask, sizeof(adc->smask) * BITS_PER_BYTE) { in stm32_dfsdm_start_channel()
359 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_stop_channel() local
360 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_stop_channel()
364 for_each_set_bit(bit, &adc->smask, sizeof(adc->smask) * BITS_PER_BYTE) { in stm32_dfsdm_stop_channel()
394 static int stm32_dfsdm_start_filter(struct stm32_dfsdm_adc *adc, in stm32_dfsdm_start_filter() argument
398 struct stm32_dfsdm *dfsdm = adc->dfsdm; in stm32_dfsdm_start_filter()
408 if (adc->nconv > 1 || trig) in stm32_dfsdm_start_filter()
429 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_filter_set_trig() local
430 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_filter_set_trig()
458 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_channels_configure() local
459 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_channels_configure()
460 struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[fl_id]; in stm32_dfsdm_channels_configure()
472 if (adc->nconv == 1 && !trig && iio_buffer_enabled(indio_dev)) { in stm32_dfsdm_channels_configure()
485 for_each_set_bit(bit, &adc->smask, in stm32_dfsdm_channels_configure()
486 sizeof(adc->smask) * BITS_PER_BYTE) { in stm32_dfsdm_channels_configure()
504 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_filter_configure() local
505 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_filter_configure()
506 struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[fl_id]; in stm32_dfsdm_filter_configure()
559 if (adc->nconv == 1 && !trig) { in stm32_dfsdm_filter_configure()
560 bit = __ffs(adc->smask); in stm32_dfsdm_filter_configure()
573 for_each_set_bit(bit, &adc->smask, in stm32_dfsdm_filter_configure()
574 sizeof(adc->smask) * BITS_PER_BYTE) { in stm32_dfsdm_filter_configure()
583 cr1 = DFSDM_CR1_JSCAN((adc->nconv > 1) ? 1 : 0); in stm32_dfsdm_filter_configure()
610 "st,adc-channels", chan_idx, in stm32_dfsdm_channel_parse_of()
614 " Error parsing 'st,adc-channels' for idx %d\n", in stm32_dfsdm_channel_parse_of()
626 "st,adc-channel-names", chan_idx, in stm32_dfsdm_channel_parse_of()
630 " Error parsing 'st,adc-channel-names' for idx %d\n", in stm32_dfsdm_channel_parse_of()
639 "st,adc-channel-types", chan_idx, in stm32_dfsdm_channel_parse_of()
651 "st,adc-channel-clk-src", chan_idx, in stm32_dfsdm_channel_parse_of()
663 "st,adc-alt-channel", chan_idx, in stm32_dfsdm_channel_parse_of()
677 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_generic_channel_parse_of() local
707 ret = fwnode_property_read_string(node, "st,adc-channel-type", &of_str); in stm32_dfsdm_generic_channel_parse_of()
717 ret = fwnode_property_read_string(node, "st,adc-channel-clk-src", &of_str); in stm32_dfsdm_generic_channel_parse_of()
727 ret = fwnode_property_read_u32(node, "st,adc-alt-channel", &df_ch->alt_si); in stm32_dfsdm_generic_channel_parse_of()
731 if (adc->dev_data->type == DFSDM_IIO) { in stm32_dfsdm_generic_channel_parse_of()
736 adc->backend[ch->scan_index] = backend; in stm32_dfsdm_generic_channel_parse_of()
747 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_get_spiclk() local
749 return snprintf(buf, PAGE_SIZE, "%d\n", adc->spi_freq); in dfsdm_adc_audio_get_spiclk()
756 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_set_samp_freq() local
770 adc->sample_freq = spi_freq / oversamp; in dfsdm_adc_set_samp_freq()
771 adc->oversamp = oversamp; in dfsdm_adc_set_samp_freq()
781 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in dfsdm_adc_audio_set_spiclk() local
782 struct stm32_dfsdm_channel *ch = &adc->dfsdm->ch_list[chan->channel]; in dfsdm_adc_audio_set_spiclk()
783 unsigned int sample_freq = adc->sample_freq; in dfsdm_adc_audio_set_spiclk()
804 adc->spi_freq = spi_freq; in dfsdm_adc_audio_set_spiclk()
812 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_start_conv() local
813 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_start_conv()
816 ret = stm32_dfsdm_channels_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
824 ret = stm32_dfsdm_filter_configure(indio_dev, adc->fl_id, trig); in stm32_dfsdm_start_conv()
828 ret = stm32_dfsdm_start_filter(adc, adc->fl_id, trig); in stm32_dfsdm_start_conv()
835 regmap_clear_bits(regmap, DFSDM_CR1(adc->fl_id), DFSDM_CR1_CFG_MASK); in stm32_dfsdm_start_conv()
844 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_stop_conv() local
845 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_stop_conv()
847 stm32_dfsdm_stop_filter(adc->dfsdm, adc->fl_id); in stm32_dfsdm_stop_conv()
849 regmap_clear_bits(regmap, DFSDM_CR1(adc->fl_id), DFSDM_CR1_CFG_MASK); in stm32_dfsdm_stop_conv()
857 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_set_watermark() local
868 adc->buf_sz = min(rx_buf_sz, watermark * 2 * adc->nconv); in stm32_dfsdm_set_watermark()
873 static unsigned int stm32_dfsdm_adc_dma_residue(struct stm32_dfsdm_adc *adc) in stm32_dfsdm_adc_dma_residue() argument
878 status = dmaengine_tx_status(adc->dma_chan, in stm32_dfsdm_adc_dma_residue()
879 adc->dma_chan->cookie, in stm32_dfsdm_adc_dma_residue()
883 unsigned int i = adc->buf_sz - state.residue; in stm32_dfsdm_adc_dma_residue()
887 if (i >= adc->bufi) in stm32_dfsdm_adc_dma_residue()
888 size = i - adc->bufi; in stm32_dfsdm_adc_dma_residue()
890 size = adc->buf_sz + i - adc->bufi; in stm32_dfsdm_adc_dma_residue()
898 static inline void stm32_dfsdm_process_data(struct stm32_dfsdm_adc *adc, in stm32_dfsdm_process_data() argument
901 struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[adc->fl_id]; in stm32_dfsdm_process_data()
903 unsigned int i = adc->nconv; in stm32_dfsdm_process_data()
925 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_buffer_done() local
926 int available = stm32_dfsdm_adc_dma_residue(adc); in stm32_dfsdm_dma_buffer_done()
939 adc->bufi, available); in stm32_dfsdm_dma_buffer_done()
940 old_pos = adc->bufi; in stm32_dfsdm_dma_buffer_done()
943 s32 *buffer = (s32 *)&adc->rx_buf[adc->bufi]; in stm32_dfsdm_dma_buffer_done()
945 stm32_dfsdm_process_data(adc, buffer); in stm32_dfsdm_dma_buffer_done()
948 adc->bufi += indio_dev->scan_bytes; in stm32_dfsdm_dma_buffer_done()
949 if (adc->bufi >= adc->buf_sz) { in stm32_dfsdm_dma_buffer_done()
950 if (adc->cb) in stm32_dfsdm_dma_buffer_done()
951 adc->cb(&adc->rx_buf[old_pos], in stm32_dfsdm_dma_buffer_done()
952 adc->buf_sz - old_pos, adc->cb_priv); in stm32_dfsdm_dma_buffer_done()
953 adc->bufi = 0; in stm32_dfsdm_dma_buffer_done()
965 if (adc->dev_data->type == DFSDM_IIO) in stm32_dfsdm_dma_buffer_done()
968 if (adc->cb) in stm32_dfsdm_dma_buffer_done()
969 adc->cb(&adc->rx_buf[old_pos], adc->bufi - old_pos, in stm32_dfsdm_dma_buffer_done()
970 adc->cb_priv); in stm32_dfsdm_dma_buffer_done()
975 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_start() local
982 .src_addr = (dma_addr_t)adc->dfsdm->phys_base, in stm32_dfsdm_adc_dma_start()
989 if (!adc->dma_chan) in stm32_dfsdm_adc_dma_start()
993 adc->buf_sz, adc->buf_sz / 2); in stm32_dfsdm_adc_dma_start()
995 if (adc->nconv == 1 && !indio_dev->trig) in stm32_dfsdm_adc_dma_start()
996 config.src_addr += DFSDM_RDATAR(adc->fl_id); in stm32_dfsdm_adc_dma_start()
998 config.src_addr += DFSDM_JDATAR(adc->fl_id); in stm32_dfsdm_adc_dma_start()
999 ret = dmaengine_slave_config(adc->dma_chan, &config); in stm32_dfsdm_adc_dma_start()
1004 desc = dmaengine_prep_dma_cyclic(adc->dma_chan, in stm32_dfsdm_adc_dma_start()
1005 adc->dma_buf, in stm32_dfsdm_adc_dma_start()
1006 adc->buf_sz, adc->buf_sz / 2, in stm32_dfsdm_adc_dma_start()
1021 dma_async_issue_pending(adc->dma_chan); in stm32_dfsdm_adc_dma_start()
1023 if (adc->nconv == 1 && !indio_dev->trig) { in stm32_dfsdm_adc_dma_start()
1025 ret = regmap_set_bits(adc->dfsdm->regmap, in stm32_dfsdm_adc_dma_start()
1026 DFSDM_CR1(adc->fl_id), in stm32_dfsdm_adc_dma_start()
1030 ret = regmap_set_bits(adc->dfsdm->regmap, in stm32_dfsdm_adc_dma_start()
1031 DFSDM_CR1(adc->fl_id), in stm32_dfsdm_adc_dma_start()
1041 dmaengine_terminate_all(adc->dma_chan); in stm32_dfsdm_adc_dma_start()
1048 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_dma_stop() local
1050 if (!adc->dma_chan) in stm32_dfsdm_adc_dma_stop()
1053 regmap_clear_bits(adc->dfsdm->regmap, DFSDM_CR1(adc->fl_id), in stm32_dfsdm_adc_dma_stop()
1055 dmaengine_terminate_all(adc->dma_chan); in stm32_dfsdm_adc_dma_stop()
1061 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_update_scan_mode() local
1063 adc->nconv = bitmap_weight(scan_mask, iio_get_masklength(indio_dev)); in stm32_dfsdm_update_scan_mode()
1064 adc->smask = *scan_mask; in stm32_dfsdm_update_scan_mode()
1066 dev_dbg(&indio_dev->dev, "nconv=%d mask=%lx\n", adc->nconv, *scan_mask); in stm32_dfsdm_update_scan_mode()
1073 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_postenable() local
1077 /* Reset adc buffer index */ in stm32_dfsdm_postenable()
1078 adc->bufi = 0; in stm32_dfsdm_postenable()
1080 if (adc->hwc) { in stm32_dfsdm_postenable()
1081 ret = iio_hw_consumer_enable(adc->hwc); in stm32_dfsdm_postenable()
1086 if (adc->backend) { in stm32_dfsdm_postenable()
1087 while (adc->backend[i]) { in stm32_dfsdm_postenable()
1088 ret = iio_backend_enable(adc->backend[i]); in stm32_dfsdm_postenable()
1095 ret = stm32_dfsdm_start_dfsdm(adc->dfsdm); in stm32_dfsdm_postenable()
1116 stm32_dfsdm_stop_dfsdm(adc->dfsdm); in stm32_dfsdm_postenable()
1118 if (adc->hwc) in stm32_dfsdm_postenable()
1119 iio_hw_consumer_disable(adc->hwc); in stm32_dfsdm_postenable()
1126 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_predisable() local
1133 stm32_dfsdm_stop_dfsdm(adc->dfsdm); in stm32_dfsdm_predisable()
1135 if (adc->backend) { in stm32_dfsdm_predisable()
1136 while (adc->backend[i]) { in stm32_dfsdm_predisable()
1137 iio_backend_disable(adc->backend[i]); in stm32_dfsdm_predisable()
1142 if (adc->hwc) in stm32_dfsdm_predisable()
1143 iio_hw_consumer_disable(adc->hwc); in stm32_dfsdm_predisable()
1169 struct stm32_dfsdm_adc *adc; in stm32_dfsdm_get_buff_cb() local
1173 adc = iio_priv(iio_dev); in stm32_dfsdm_get_buff_cb()
1175 adc->cb = cb; in stm32_dfsdm_get_buff_cb()
1176 adc->cb_priv = private; in stm32_dfsdm_get_buff_cb()
1189 struct stm32_dfsdm_adc *adc; in stm32_dfsdm_release_buff_cb() local
1193 adc = iio_priv(iio_dev); in stm32_dfsdm_release_buff_cb()
1195 adc->cb = NULL; in stm32_dfsdm_release_buff_cb()
1196 adc->cb_priv = NULL; in stm32_dfsdm_release_buff_cb()
1205 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_single_conv() local
1209 reinit_completion(&adc->completion); in stm32_dfsdm_single_conv()
1211 adc->buffer = res; in stm32_dfsdm_single_conv()
1213 ret = stm32_dfsdm_start_dfsdm(adc->dfsdm); in stm32_dfsdm_single_conv()
1217 ret = regmap_update_bits(adc->dfsdm->regmap, DFSDM_CR2(adc->fl_id), in stm32_dfsdm_single_conv()
1222 adc->nconv = 1; in stm32_dfsdm_single_conv()
1223 adc->smask = BIT(chan->scan_index); in stm32_dfsdm_single_conv()
1226 regmap_update_bits(adc->dfsdm->regmap, DFSDM_CR2(adc->fl_id), in stm32_dfsdm_single_conv()
1231 time_left = wait_for_completion_interruptible_timeout(&adc->completion, in stm32_dfsdm_single_conv()
1235 regmap_update_bits(adc->dfsdm->regmap, DFSDM_CR2(adc->fl_id), in stm32_dfsdm_single_conv()
1247 stm32_dfsdm_process_data(adc, res); in stm32_dfsdm_single_conv()
1250 stm32_dfsdm_stop_dfsdm(adc->dfsdm); in stm32_dfsdm_single_conv()
1259 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_write_raw() local
1260 struct stm32_dfsdm_channel *ch = &adc->dfsdm->ch_list[chan->channel]; in stm32_dfsdm_write_raw()
1266 spi_freq = adc->dfsdm->spi_master_freq; in stm32_dfsdm_write_raw()
1270 spi_freq = adc->dfsdm->spi_master_freq / 2; in stm32_dfsdm_write_raw()
1273 spi_freq = adc->spi_freq; in stm32_dfsdm_write_raw()
1286 adc->sample_freq, spi_freq / val); in stm32_dfsdm_write_raw()
1287 adc->oversamp = val; in stm32_dfsdm_write_raw()
1288 adc->sample_freq = spi_freq / val; in stm32_dfsdm_write_raw()
1313 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_read_raw() local
1315 struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[adc->fl_id]; in stm32_dfsdm_read_raw()
1329 if (adc->hwc) in stm32_dfsdm_read_raw()
1330 ret = iio_hw_consumer_enable(adc->hwc); in stm32_dfsdm_read_raw()
1331 if (adc->backend) in stm32_dfsdm_read_raw()
1332 ret = iio_backend_enable(adc->backend[idx]); in stm32_dfsdm_read_raw()
1341 if (adc->hwc) in stm32_dfsdm_read_raw()
1342 iio_hw_consumer_disable(adc->hwc); in stm32_dfsdm_read_raw()
1343 if (adc->backend) in stm32_dfsdm_read_raw()
1344 iio_backend_disable(adc->backend[idx]); in stm32_dfsdm_read_raw()
1356 *val = adc->oversamp; in stm32_dfsdm_read_raw()
1361 *val = adc->sample_freq; in stm32_dfsdm_read_raw()
1374 if (adc->backend) { in stm32_dfsdm_read_raw()
1375 ret = iio_backend_read_scale(adc->backend[idx], chan, val, NULL); in stm32_dfsdm_read_raw()
1398 if (adc->backend) { in stm32_dfsdm_read_raw()
1399 ret = iio_backend_read_offset(adc->backend[idx], chan, val, NULL); in stm32_dfsdm_read_raw()
1437 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_irq() local
1438 struct regmap *regmap = adc->dfsdm->regmap; in stm32_dfsdm_irq()
1441 regmap_read(regmap, DFSDM_ISR(adc->fl_id), &status); in stm32_dfsdm_irq()
1442 regmap_read(regmap, DFSDM_CR2(adc->fl_id), &int_en); in stm32_dfsdm_irq()
1446 regmap_read(regmap, DFSDM_RDATAR(adc->fl_id), adc->buffer); in stm32_dfsdm_irq()
1447 complete(&adc->completion); in stm32_dfsdm_irq()
1453 regmap_set_bits(regmap, DFSDM_ICR(adc->fl_id), in stm32_dfsdm_irq()
1477 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_release() local
1479 if (adc->dma_chan) { in stm32_dfsdm_dma_release()
1480 dma_free_coherent(adc->dma_chan->device->dev, in stm32_dfsdm_dma_release()
1482 adc->rx_buf, adc->dma_buf); in stm32_dfsdm_dma_release()
1483 dma_release_channel(adc->dma_chan); in stm32_dfsdm_dma_release()
1490 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_dma_request() local
1492 adc->dma_chan = dma_request_chan(dev, "rx"); in stm32_dfsdm_dma_request()
1493 if (IS_ERR(adc->dma_chan)) { in stm32_dfsdm_dma_request()
1494 int ret = PTR_ERR(adc->dma_chan); in stm32_dfsdm_dma_request()
1496 adc->dma_chan = NULL; in stm32_dfsdm_dma_request()
1500 adc->rx_buf = dma_alloc_coherent(adc->dma_chan->device->dev, in stm32_dfsdm_dma_request()
1502 &adc->dma_buf, GFP_KERNEL); in stm32_dfsdm_dma_request()
1503 if (!adc->rx_buf) { in stm32_dfsdm_dma_request()
1504 dma_release_channel(adc->dma_chan); in stm32_dfsdm_dma_request()
1517 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_chan_init_one() local
1521 ret = stm32_dfsdm_generic_channel_parse_of(adc->dfsdm, indio_dev, ch, child); in stm32_dfsdm_adc_chan_init_one()
1523 ret = stm32_dfsdm_channel_parse_of(adc->dfsdm, indio_dev, ch); in stm32_dfsdm_adc_chan_init_one()
1546 if (adc->dev_data->type == DFSDM_AUDIO) { in stm32_dfsdm_adc_chan_init_one()
1556 return stm32_dfsdm_chan_configure(adc->dfsdm, in stm32_dfsdm_adc_chan_init_one()
1557 &adc->dfsdm->ch_list[ch->channel]); in stm32_dfsdm_adc_chan_init_one()
1599 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_audio_init() local
1604 /* If st,adc-channels is defined legacy binding is used. Else assume generic binding. */ in stm32_dfsdm_audio_init()
1605 num_ch = of_property_count_u32_elems(indio_dev->dev.of_node, "st,adc-channels"); in stm32_dfsdm_audio_init()
1627 d_ch = &adc->dfsdm->ch_list[ch->channel]; in stm32_dfsdm_audio_init()
1629 adc->spi_freq = adc->dfsdm->spi_master_freq; in stm32_dfsdm_audio_init()
1637 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_init() local
1641 adc->oversamp = DFSDM_DEFAULT_OVERSAMPLING; in stm32_dfsdm_adc_init()
1642 ret = stm32_dfsdm_compute_all_osrs(indio_dev, adc->oversamp); in stm32_dfsdm_adc_init()
1649 num_ch = of_property_count_u32_elems(indio_dev->dev.of_node, "st,adc-channels"); in stm32_dfsdm_adc_init()
1651 dev_err(&indio_dev->dev, "Bad st,adc-channels\n"); in stm32_dfsdm_adc_init()
1658 if (num_ch > adc->dfsdm->num_chs) { in stm32_dfsdm_adc_init()
1660 num_ch, adc->dfsdm->num_chs); in stm32_dfsdm_adc_init()
1667 adc->hwc = devm_iio_hw_consumer_alloc(&indio_dev->dev); in stm32_dfsdm_adc_init()
1668 if (IS_ERR(adc->hwc)) in stm32_dfsdm_adc_init()
1673 adc->hwc = NULL; in stm32_dfsdm_adc_init()
1675 adc->backend = devm_kcalloc(&indio_dev->dev, num_ch, sizeof(*adc->backend), in stm32_dfsdm_adc_init()
1677 if (!adc->backend) in stm32_dfsdm_adc_init()
1693 init_completion(&adc->completion); in stm32_dfsdm_adc_init()
1733 .compatible = "st,stm32-dfsdm-adc",
1747 struct stm32_dfsdm_adc *adc; in stm32_dfsdm_adc_probe() local
1755 iio = devm_iio_device_alloc(dev, sizeof(*adc)); in stm32_dfsdm_adc_probe()
1761 adc = iio_priv(iio); in stm32_dfsdm_adc_probe()
1762 adc->dfsdm = dev_get_drvdata(dev->parent); in stm32_dfsdm_adc_probe()
1769 ret = of_property_read_u32(dev->of_node, "reg", &adc->fl_id); in stm32_dfsdm_adc_probe()
1770 if (ret != 0 || adc->fl_id >= adc->dfsdm->num_fls) { in stm32_dfsdm_adc_probe()
1780 snprintf(name, sizeof("dfsdm-pdm0"), "dfsdm-pdm%d", adc->fl_id); in stm32_dfsdm_adc_probe()
1783 snprintf(name, sizeof("dfsdm-adc0"), "dfsdm-adc%d", adc->fl_id); in stm32_dfsdm_adc_probe()
1808 adc->dfsdm->fl_list[adc->fl_id].ford = val; in stm32_dfsdm_adc_probe()
1812 adc->dfsdm->fl_list[adc->fl_id].sync_mode = val; in stm32_dfsdm_adc_probe()
1814 adc->dev_data = dev_data; in stm32_dfsdm_adc_probe()
1844 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_remove() local
1846 if (adc->dev_data->type == DFSDM_AUDIO) in stm32_dfsdm_adc_remove()
1865 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); in stm32_dfsdm_adc_resume() local
1873 ch = &adc->dfsdm->ch_list[chan->channel]; in stm32_dfsdm_adc_resume()
1874 ret = stm32_dfsdm_chan_configure(adc->dfsdm, ch); in stm32_dfsdm_adc_resume()
1891 .name = "stm32-dfsdm-adc",
1900 MODULE_DESCRIPTION("STM32 sigma delta ADC");