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()
983 stm32h7_adc_disable(indio_dev); in stm32h7_adc_unprepare()
998 static int stm32_adc_conf_scan_seq(struct iio_dev *indio_dev, in stm32_adc_conf_scan_seq() argument
1001 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_conf_scan_seq()
1011 for_each_set_bit(bit, scan_mask, indio_dev->masklength) { in stm32_adc_conf_scan_seq()
1012 chan = indio_dev->channels + bit; in stm32_adc_conf_scan_seq()
1021 dev_dbg(&indio_dev->dev, "%s chan %d to SQ%d\n", in stm32_adc_conf_scan_seq()
1049 static int stm32_adc_get_trig_extsel(struct iio_dev *indio_dev, in stm32_adc_get_trig_extsel() argument
1052 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_extsel()
1080 static int stm32_adc_set_trig(struct iio_dev *indio_dev, in stm32_adc_set_trig() argument
1083 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig()
1089 ret = stm32_adc_get_trig_extsel(indio_dev, trig); in stm32_adc_set_trig()
1109 static int stm32_adc_set_trig_pol(struct iio_dev *indio_dev, in stm32_adc_set_trig_pol() argument
1113 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig_pol()
1120 static int stm32_adc_get_trig_pol(struct iio_dev *indio_dev, in stm32_adc_get_trig_pol() argument
1123 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_pol()
1151 static int stm32_adc_single_conv(struct iio_dev *indio_dev, in stm32_adc_single_conv() argument
1155 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_single_conv()
1156 struct device *dev = indio_dev->dev.parent; in stm32_adc_single_conv()
1190 adc->cfg->start_conv(indio_dev, false); in stm32_adc_single_conv()
1203 adc->cfg->stop_conv(indio_dev); in stm32_adc_single_conv()
1213 static int stm32_adc_read_raw(struct iio_dev *indio_dev, in stm32_adc_read_raw() argument
1217 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_read_raw()
1222 ret = iio_device_claim_direct_mode(indio_dev); in stm32_adc_read_raw()
1226 ret = stm32_adc_single_conv(indio_dev, chan, val); in stm32_adc_read_raw()
1229 iio_device_release_direct_mode(indio_dev); in stm32_adc_read_raw()
1255 static void stm32_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32_adc_irq_clear() argument
1257 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_irq_clear()
1259 adc->cfg->irq_clear(indio_dev, msk); in stm32_adc_irq_clear()
1264 struct iio_dev *indio_dev = data; in stm32_adc_threaded_isr() local
1265 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()
1287 struct iio_dev *indio_dev = data; in stm32_adc_isr() local
1288 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_isr()
1308 if (iio_buffer_enabled(indio_dev)) { in stm32_adc_isr()
1312 iio_trigger_poll(indio_dev->trig); in stm32_adc_isr()
1331 static int stm32_adc_validate_trigger(struct iio_dev *indio_dev, in stm32_adc_validate_trigger() argument
1334 return stm32_adc_get_trig_extsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_adc_validate_trigger()
1337 static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val) in stm32_adc_set_watermark() argument
1339 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_watermark()
1355 static int stm32_adc_update_scan_mode(struct iio_dev *indio_dev, in stm32_adc_update_scan_mode() argument
1358 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_update_scan_mode()
1359 struct device *dev = indio_dev->dev.parent; in stm32_adc_update_scan_mode()
1368 adc->num_conv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_adc_update_scan_mode()
1370 ret = stm32_adc_conf_scan_seq(indio_dev, scan_mask); in stm32_adc_update_scan_mode()
1377 static int stm32_adc_of_xlate(struct iio_dev *indio_dev, in stm32_adc_of_xlate() argument
1382 for (i = 0; i < indio_dev->num_channels; i++) in stm32_adc_of_xlate()
1383 if (indio_dev->channels[i].channel == iiospec->args[0]) in stm32_adc_of_xlate()
1403 static int stm32_adc_debugfs_reg_access(struct iio_dev *indio_dev, in stm32_adc_debugfs_reg_access() argument
1407 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_debugfs_reg_access()
1408 struct device *dev = indio_dev->dev.parent; in stm32_adc_debugfs_reg_access()
1464 struct iio_dev *indio_dev = data; in stm32_adc_dma_buffer_done() local
1465 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_buffer_done()
1477 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_dma_buffer_done()
1479 while (residue >= indio_dev->scan_bytes) { in stm32_adc_dma_buffer_done()
1482 iio_push_to_buffers(indio_dev, buffer); in stm32_adc_dma_buffer_done()
1484 residue -= indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1485 adc->bufi += indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1491 static int stm32_adc_dma_start(struct iio_dev *indio_dev) in stm32_adc_dma_start() argument
1493 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_start()
1501 dev_dbg(&indio_dev->dev, "%s size=%d watermark=%d\n", __func__, in stm32_adc_dma_start()
1514 desc->callback_param = indio_dev; in stm32_adc_dma_start()
1529 static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev) in stm32_adc_buffer_postenable() argument
1531 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_postenable()
1532 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_postenable()
1541 ret = stm32_adc_set_trig(indio_dev, indio_dev->trig); in stm32_adc_buffer_postenable()
1543 dev_err(&indio_dev->dev, "Can't set trigger\n"); in stm32_adc_buffer_postenable()
1547 ret = stm32_adc_dma_start(indio_dev); in stm32_adc_buffer_postenable()
1549 dev_err(&indio_dev->dev, "Can't start dma\n"); in stm32_adc_buffer_postenable()
1561 adc->cfg->start_conv(indio_dev, !!adc->dma_chan); in stm32_adc_buffer_postenable()
1566 stm32_adc_set_trig(indio_dev, NULL); in stm32_adc_buffer_postenable()
1574 static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev) in stm32_adc_buffer_predisable() argument
1576 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_predisable()
1577 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_predisable()
1579 adc->cfg->stop_conv(indio_dev); in stm32_adc_buffer_predisable()
1588 if (stm32_adc_set_trig(indio_dev, NULL)) in stm32_adc_buffer_predisable()
1589 dev_err(&indio_dev->dev, "Can't clear trigger\n"); in stm32_adc_buffer_predisable()
1605 struct iio_dev *indio_dev = pf->indio_dev; in stm32_adc_trigger_handler() local
1606 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_trigger_handler()
1608 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_trigger_handler()
1613 iio_push_to_buffers_with_timestamp(indio_dev, adc->buffer, in stm32_adc_trigger_handler()
1618 while (residue >= indio_dev->scan_bytes) { in stm32_adc_trigger_handler()
1621 iio_push_to_buffers_with_timestamp(indio_dev, buffer, in stm32_adc_trigger_handler()
1623 residue -= indio_dev->scan_bytes; in stm32_adc_trigger_handler()
1624 adc->bufi += indio_dev->scan_bytes; in stm32_adc_trigger_handler()
1630 iio_trigger_notify_done(indio_dev->trig); in stm32_adc_trigger_handler()
1650 static int stm32_adc_of_get_resolution(struct iio_dev *indio_dev) in stm32_adc_of_get_resolution() argument
1652 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_of_get_resolution()
1653 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_of_get_resolution()
1664 dev_err(&indio_dev->dev, "Bad resolution: %u bits\n", res); in stm32_adc_of_get_resolution()
1668 dev_dbg(&indio_dev->dev, "Using %u bits resolution\n", res); in stm32_adc_of_get_resolution()
1692 static void stm32_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_adc_chan_init_one() argument
1696 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_init_one()
1729 static int stm32_adc_chan_of_init(struct iio_dev *indio_dev) in stm32_adc_chan_of_init() argument
1731 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_chan_of_init()
1732 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_of_init()
1743 dev_err(&indio_dev->dev, "Bad st,adc-channels?\n"); in stm32_adc_chan_of_init()
1752 dev_err(&indio_dev->dev, "Bad st,adc-diff-channels?\n"); in stm32_adc_chan_of_init()
1766 dev_err(&indio_dev->dev, "No channels configured\n"); in stm32_adc_chan_of_init()
1773 dev_err(&indio_dev->dev, "Invalid st,min-sample-time-nsecs\n"); in stm32_adc_chan_of_init()
1777 channels = devm_kcalloc(&indio_dev->dev, num_channels, in stm32_adc_chan_of_init()
1784 dev_err(&indio_dev->dev, "Invalid channel %d\n", val); in stm32_adc_chan_of_init()
1791 dev_err(&indio_dev->dev, in stm32_adc_chan_of_init()
1796 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], val, in stm32_adc_chan_of_init()
1804 dev_err(&indio_dev->dev, "Invalid channel in%d-in%d\n", in stm32_adc_chan_of_init()
1808 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], in stm32_adc_chan_of_init()
1827 indio_dev->num_channels = scan_index; in stm32_adc_chan_of_init()
1828 indio_dev->channels = channels; in stm32_adc_chan_of_init()
1833 static int stm32_adc_dma_request(struct device *dev, struct iio_dev *indio_dev) in stm32_adc_dma_request() argument
1835 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_request()
1882 struct iio_dev *indio_dev; in stm32_adc_probe() local
1891 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc)); in stm32_adc_probe()
1892 if (!indio_dev) in stm32_adc_probe()
1895 adc = iio_priv(indio_dev); in stm32_adc_probe()
1902 indio_dev->name = dev_name(&pdev->dev); in stm32_adc_probe()
1903 indio_dev->dev.of_node = pdev->dev.of_node; in stm32_adc_probe()
1904 indio_dev->info = &stm32_adc_iio_info; in stm32_adc_probe()
1905 indio_dev->modes = INDIO_DIRECT_MODE | INDIO_HARDWARE_TRIGGERED; in stm32_adc_probe()
1907 platform_set_drvdata(pdev, indio_dev); in stm32_adc_probe()
1921 0, pdev->name, indio_dev); in stm32_adc_probe()
1938 ret = stm32_adc_of_get_resolution(indio_dev); in stm32_adc_probe()
1942 ret = stm32_adc_chan_of_init(indio_dev); in stm32_adc_probe()
1946 ret = stm32_adc_dma_request(dev, indio_dev); in stm32_adc_probe()
1953 ret = iio_triggered_buffer_setup(indio_dev, in stm32_adc_probe()
1972 ret = iio_device_register(indio_dev); in stm32_adc_probe()
1990 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_probe()
2005 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_adc_remove() local
2006 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_remove()
2009 iio_device_unregister(indio_dev); in stm32_adc_remove()
2014 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_remove()
2028 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_suspend() local
2030 if (iio_buffer_enabled(indio_dev)) in stm32_adc_suspend()
2031 stm32_adc_buffer_predisable(indio_dev); in stm32_adc_suspend()
2038 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_resume() local
2045 if (!iio_buffer_enabled(indio_dev)) in stm32_adc_resume()
2048 ret = stm32_adc_update_scan_mode(indio_dev, in stm32_adc_resume()
2049 indio_dev->active_scan_mask); in stm32_adc_resume()
2053 return stm32_adc_buffer_postenable(indio_dev); in stm32_adc_resume()