Lines Matching refs:indio_dev
170 void (*irq_clear)(struct iio_dev *indio_dev, u32 msk);
543 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_hw_stop() local
544 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_hw_stop()
547 adc->cfg->unprepare(indio_dev); in stm32_adc_hw_stop()
557 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_hw_start() local
558 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_hw_start()
570 ret = adc->cfg->prepare(indio_dev); in stm32_adc_hw_start()
594 static void stm32f4_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32f4_adc_start_conv() argument
596 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_start_conv()
614 static void stm32f4_adc_stop_conv(struct iio_dev *indio_dev) in stm32f4_adc_stop_conv() argument
616 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_stop_conv()
626 static void stm32f4_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32f4_adc_irq_clear() argument
628 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_irq_clear()
633 static void stm32h7_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32h7_adc_start_conv() argument
635 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_start_conv()
654 static void stm32h7_adc_stop_conv(struct iio_dev *indio_dev) in stm32h7_adc_stop_conv() argument
656 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_stop_conv()
666 dev_warn(&indio_dev->dev, "stop failed\n"); in stm32h7_adc_stop_conv()
671 static void stm32h7_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32h7_adc_irq_clear() argument
673 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_irq_clear()
678 static int stm32h7_adc_exit_pwr_down(struct iio_dev *indio_dev) in stm32h7_adc_exit_pwr_down() argument
680 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_exit_pwr_down()
702 dev_err(&indio_dev->dev, "Failed to exit power down\n"); in stm32h7_adc_exit_pwr_down()
716 static int stm32h7_adc_enable(struct iio_dev *indio_dev) in stm32h7_adc_enable() argument
718 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_enable()
730 dev_err(&indio_dev->dev, "Failed to enable ADC\n"); in stm32h7_adc_enable()
739 static void stm32h7_adc_disable(struct iio_dev *indio_dev) in stm32h7_adc_disable() argument
741 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_disable()
751 dev_warn(&indio_dev->dev, "Failed to disable\n"); in stm32h7_adc_disable()
759 static int stm32h7_adc_read_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_read_selfcalib() argument
761 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_read_selfcalib()
776 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_read_selfcalib()
803 static int stm32h7_adc_restore_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_restore_selfcalib() argument
805 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_restore_selfcalib()
827 dev_err(&indio_dev->dev, "Failed to write calfact\n"); in stm32h7_adc_restore_selfcalib()
843 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_restore_selfcalib()
848 dev_err(&indio_dev->dev, "calfact not consistent\n"); in stm32h7_adc_restore_selfcalib()
876 static int stm32h7_adc_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_selfcalib() argument
878 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_selfcalib()
899 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
916 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
938 static int stm32h7_adc_prepare(struct iio_dev *indio_dev) in stm32h7_adc_prepare() argument
940 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_prepare()
943 ret = stm32h7_adc_exit_pwr_down(indio_dev); in stm32h7_adc_prepare()
947 ret = stm32h7_adc_selfcalib(indio_dev); in stm32h7_adc_prepare()
954 ret = stm32h7_adc_enable(indio_dev); in stm32h7_adc_prepare()
960 ret = stm32h7_adc_restore_selfcalib(indio_dev); in stm32h7_adc_prepare()
962 ret = stm32h7_adc_read_selfcalib(indio_dev); in stm32h7_adc_prepare()
971 stm32h7_adc_disable(indio_dev); in stm32h7_adc_prepare()
978 static void stm32h7_adc_unprepare(struct iio_dev *indio_dev) in stm32h7_adc_unprepare() argument
980 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_unprepare()
982 stm32h7_adc_disable(indio_dev); in stm32h7_adc_unprepare()
997 static int stm32_adc_conf_scan_seq(struct iio_dev *indio_dev, in stm32_adc_conf_scan_seq() argument
1000 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_conf_scan_seq()
1010 for_each_set_bit(bit, scan_mask, indio_dev->masklength) { in stm32_adc_conf_scan_seq()
1011 chan = indio_dev->channels + bit; in stm32_adc_conf_scan_seq()
1020 dev_dbg(&indio_dev->dev, "%s chan %d to SQ%d\n", in stm32_adc_conf_scan_seq()
1048 static int stm32_adc_get_trig_extsel(struct iio_dev *indio_dev, in stm32_adc_get_trig_extsel() argument
1051 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_extsel()
1079 static int stm32_adc_set_trig(struct iio_dev *indio_dev, in stm32_adc_set_trig() argument
1082 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig()
1088 ret = stm32_adc_get_trig_extsel(indio_dev, trig); in stm32_adc_set_trig()
1108 static int stm32_adc_set_trig_pol(struct iio_dev *indio_dev, in stm32_adc_set_trig_pol() argument
1112 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig_pol()
1119 static int stm32_adc_get_trig_pol(struct iio_dev *indio_dev, in stm32_adc_get_trig_pol() argument
1122 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_pol()
1150 static int stm32_adc_single_conv(struct iio_dev *indio_dev, in stm32_adc_single_conv() argument
1154 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_single_conv()
1155 struct device *dev = indio_dev->dev.parent; in stm32_adc_single_conv()
1189 adc->cfg->start_conv(indio_dev, false); in stm32_adc_single_conv()
1202 adc->cfg->stop_conv(indio_dev); in stm32_adc_single_conv()
1212 static int stm32_adc_read_raw(struct iio_dev *indio_dev, in stm32_adc_read_raw() argument
1216 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_read_raw()
1221 ret = iio_device_claim_direct_mode(indio_dev); in stm32_adc_read_raw()
1225 ret = stm32_adc_single_conv(indio_dev, chan, val); in stm32_adc_read_raw()
1228 iio_device_release_direct_mode(indio_dev); in stm32_adc_read_raw()
1254 static void stm32_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32_adc_irq_clear() argument
1256 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_irq_clear()
1258 adc->cfg->irq_clear(indio_dev, msk); in stm32_adc_irq_clear()
1263 struct iio_dev *indio_dev = data; in stm32_adc_threaded_isr() local
1264 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_threaded_isr()
1276 adc->cfg->stop_conv(indio_dev); in stm32_adc_threaded_isr()
1277 stm32_adc_irq_clear(indio_dev, regs->isr_ovr.mask); in stm32_adc_threaded_isr()
1278 dev_err(&indio_dev->dev, "Overrun, stopping: restart needed\n"); in stm32_adc_threaded_isr()
1283 dev_err_ratelimited(&indio_dev->dev, in stm32_adc_threaded_isr()
1292 struct iio_dev *indio_dev = data; in stm32_adc_isr() local
1293 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_isr()
1317 if (iio_buffer_enabled(indio_dev)) { in stm32_adc_isr()
1321 iio_trigger_poll(indio_dev->trig); in stm32_adc_isr()
1340 static int stm32_adc_validate_trigger(struct iio_dev *indio_dev, in stm32_adc_validate_trigger() argument
1343 return stm32_adc_get_trig_extsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_adc_validate_trigger()
1346 static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val) in stm32_adc_set_watermark() argument
1348 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_watermark()
1364 static int stm32_adc_update_scan_mode(struct iio_dev *indio_dev, in stm32_adc_update_scan_mode() argument
1367 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_update_scan_mode()
1368 struct device *dev = indio_dev->dev.parent; in stm32_adc_update_scan_mode()
1377 adc->num_conv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_adc_update_scan_mode()
1379 ret = stm32_adc_conf_scan_seq(indio_dev, scan_mask); in stm32_adc_update_scan_mode()
1386 static int stm32_adc_of_xlate(struct iio_dev *indio_dev, in stm32_adc_of_xlate() argument
1391 for (i = 0; i < indio_dev->num_channels; i++) in stm32_adc_of_xlate()
1392 if (indio_dev->channels[i].channel == iiospec->args[0]) in stm32_adc_of_xlate()
1412 static int stm32_adc_debugfs_reg_access(struct iio_dev *indio_dev, in stm32_adc_debugfs_reg_access() argument
1416 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_debugfs_reg_access()
1417 struct device *dev = indio_dev->dev.parent; in stm32_adc_debugfs_reg_access()
1473 struct iio_dev *indio_dev = data; in stm32_adc_dma_buffer_done() local
1474 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_buffer_done()
1486 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_dma_buffer_done()
1488 while (residue >= indio_dev->scan_bytes) { in stm32_adc_dma_buffer_done()
1491 iio_push_to_buffers(indio_dev, buffer); in stm32_adc_dma_buffer_done()
1493 residue -= indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1494 adc->bufi += indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1500 static int stm32_adc_dma_start(struct iio_dev *indio_dev) in stm32_adc_dma_start() argument
1502 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_start()
1510 dev_dbg(&indio_dev->dev, "%s size=%d watermark=%d\n", __func__, in stm32_adc_dma_start()
1523 desc->callback_param = indio_dev; in stm32_adc_dma_start()
1538 static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev) in stm32_adc_buffer_postenable() argument
1540 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_postenable()
1541 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_postenable()
1550 ret = stm32_adc_set_trig(indio_dev, indio_dev->trig); in stm32_adc_buffer_postenable()
1552 dev_err(&indio_dev->dev, "Can't set trigger\n"); in stm32_adc_buffer_postenable()
1556 ret = stm32_adc_dma_start(indio_dev); in stm32_adc_buffer_postenable()
1558 dev_err(&indio_dev->dev, "Can't start dma\n"); in stm32_adc_buffer_postenable()
1570 adc->cfg->start_conv(indio_dev, !!adc->dma_chan); in stm32_adc_buffer_postenable()
1575 stm32_adc_set_trig(indio_dev, NULL); in stm32_adc_buffer_postenable()
1583 static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev) in stm32_adc_buffer_predisable() argument
1585 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_predisable()
1586 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_predisable()
1588 adc->cfg->stop_conv(indio_dev); in stm32_adc_buffer_predisable()
1597 if (stm32_adc_set_trig(indio_dev, NULL)) in stm32_adc_buffer_predisable()
1598 dev_err(&indio_dev->dev, "Can't clear trigger\n"); in stm32_adc_buffer_predisable()
1614 struct iio_dev *indio_dev = pf->indio_dev; in stm32_adc_trigger_handler() local
1615 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_trigger_handler()
1617 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_trigger_handler()
1622 iio_push_to_buffers_with_timestamp(indio_dev, adc->buffer, in stm32_adc_trigger_handler()
1627 while (residue >= indio_dev->scan_bytes) { in stm32_adc_trigger_handler()
1630 iio_push_to_buffers_with_timestamp(indio_dev, buffer, in stm32_adc_trigger_handler()
1632 residue -= indio_dev->scan_bytes; in stm32_adc_trigger_handler()
1633 adc->bufi += indio_dev->scan_bytes; in stm32_adc_trigger_handler()
1639 iio_trigger_notify_done(indio_dev->trig); in stm32_adc_trigger_handler()
1659 static int stm32_adc_of_get_resolution(struct iio_dev *indio_dev) in stm32_adc_of_get_resolution() argument
1661 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_of_get_resolution()
1662 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_of_get_resolution()
1673 dev_err(&indio_dev->dev, "Bad resolution: %u bits\n", res); in stm32_adc_of_get_resolution()
1677 dev_dbg(&indio_dev->dev, "Using %u bits resolution\n", res); in stm32_adc_of_get_resolution()
1701 static void stm32_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_adc_chan_init_one() argument
1705 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_init_one()
1738 static int stm32_adc_chan_of_init(struct iio_dev *indio_dev) in stm32_adc_chan_of_init() argument
1740 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_chan_of_init()
1741 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_of_init()
1752 dev_err(&indio_dev->dev, "Bad st,adc-channels?\n"); in stm32_adc_chan_of_init()
1761 dev_err(&indio_dev->dev, "Bad st,adc-diff-channels?\n"); in stm32_adc_chan_of_init()
1775 dev_err(&indio_dev->dev, "No channels configured\n"); in stm32_adc_chan_of_init()
1782 dev_err(&indio_dev->dev, "Invalid st,min-sample-time-nsecs\n"); in stm32_adc_chan_of_init()
1786 channels = devm_kcalloc(&indio_dev->dev, num_channels, in stm32_adc_chan_of_init()
1793 dev_err(&indio_dev->dev, "Invalid channel %d\n", val); in stm32_adc_chan_of_init()
1800 dev_err(&indio_dev->dev, in stm32_adc_chan_of_init()
1805 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], val, in stm32_adc_chan_of_init()
1813 dev_err(&indio_dev->dev, "Invalid channel in%d-in%d\n", in stm32_adc_chan_of_init()
1817 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], in stm32_adc_chan_of_init()
1836 indio_dev->num_channels = scan_index; in stm32_adc_chan_of_init()
1837 indio_dev->channels = channels; in stm32_adc_chan_of_init()
1842 static int stm32_adc_dma_request(struct device *dev, struct iio_dev *indio_dev) in stm32_adc_dma_request() argument
1844 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_request()
1891 struct iio_dev *indio_dev; in stm32_adc_probe() local
1900 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc)); in stm32_adc_probe()
1901 if (!indio_dev) in stm32_adc_probe()
1904 adc = iio_priv(indio_dev); in stm32_adc_probe()
1911 indio_dev->name = dev_name(&pdev->dev); in stm32_adc_probe()
1912 indio_dev->dev.of_node = pdev->dev.of_node; in stm32_adc_probe()
1913 indio_dev->info = &stm32_adc_iio_info; in stm32_adc_probe()
1914 indio_dev->modes = INDIO_DIRECT_MODE | INDIO_HARDWARE_TRIGGERED; in stm32_adc_probe()
1916 platform_set_drvdata(pdev, indio_dev); in stm32_adc_probe()
1930 0, pdev->name, indio_dev); in stm32_adc_probe()
1947 ret = stm32_adc_of_get_resolution(indio_dev); in stm32_adc_probe()
1951 ret = stm32_adc_chan_of_init(indio_dev); in stm32_adc_probe()
1955 ret = stm32_adc_dma_request(dev, indio_dev); in stm32_adc_probe()
1962 ret = iio_triggered_buffer_setup(indio_dev, in stm32_adc_probe()
1981 ret = iio_device_register(indio_dev); in stm32_adc_probe()
1999 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_probe()
2014 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_adc_remove() local
2015 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_remove()
2018 iio_device_unregister(indio_dev); in stm32_adc_remove()
2023 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_remove()
2037 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_suspend() local
2039 if (iio_buffer_enabled(indio_dev)) in stm32_adc_suspend()
2040 stm32_adc_buffer_predisable(indio_dev); in stm32_adc_suspend()
2047 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_resume() local
2054 if (!iio_buffer_enabled(indio_dev)) in stm32_adc_resume()
2057 ret = stm32_adc_update_scan_mode(indio_dev, in stm32_adc_resume()
2058 indio_dev->active_scan_mask); in stm32_adc_resume()
2062 return stm32_adc_buffer_postenable(indio_dev); in stm32_adc_resume()