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()
556 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_hw_start() local
557 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_hw_start()
567 ret = adc->cfg->prepare(indio_dev); in stm32_adc_hw_start()
590 static void stm32f4_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32f4_adc_start_conv() argument
592 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_start_conv()
610 static void stm32f4_adc_stop_conv(struct iio_dev *indio_dev) in stm32f4_adc_stop_conv() argument
612 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_stop_conv()
622 static void stm32f4_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32f4_adc_irq_clear() argument
624 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_irq_clear()
629 static void stm32h7_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32h7_adc_start_conv() argument
631 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_start_conv()
650 static void stm32h7_adc_stop_conv(struct iio_dev *indio_dev) in stm32h7_adc_stop_conv() argument
652 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_stop_conv()
662 dev_warn(&indio_dev->dev, "stop failed\n"); in stm32h7_adc_stop_conv()
667 static void stm32h7_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32h7_adc_irq_clear() argument
669 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_irq_clear()
674 static int stm32h7_adc_exit_pwr_down(struct iio_dev *indio_dev) in stm32h7_adc_exit_pwr_down() argument
676 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_exit_pwr_down()
698 dev_err(&indio_dev->dev, "Failed to exit power down\n"); in stm32h7_adc_exit_pwr_down()
712 static int stm32h7_adc_enable(struct iio_dev *indio_dev) in stm32h7_adc_enable() argument
714 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_enable()
726 dev_err(&indio_dev->dev, "Failed to enable ADC\n"); in stm32h7_adc_enable()
735 static void stm32h7_adc_disable(struct iio_dev *indio_dev) in stm32h7_adc_disable() argument
737 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_disable()
747 dev_warn(&indio_dev->dev, "Failed to disable\n"); in stm32h7_adc_disable()
755 static int stm32h7_adc_read_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_read_selfcalib() argument
757 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_read_selfcalib()
772 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_read_selfcalib()
799 static int stm32h7_adc_restore_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_restore_selfcalib() argument
801 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_restore_selfcalib()
823 dev_err(&indio_dev->dev, "Failed to write calfact\n"); in stm32h7_adc_restore_selfcalib()
839 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_restore_selfcalib()
844 dev_err(&indio_dev->dev, "calfact not consistent\n"); in stm32h7_adc_restore_selfcalib()
872 static int stm32h7_adc_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_selfcalib() argument
874 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_selfcalib()
895 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
912 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
934 static int stm32h7_adc_prepare(struct iio_dev *indio_dev) in stm32h7_adc_prepare() argument
936 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_prepare()
939 ret = stm32h7_adc_exit_pwr_down(indio_dev); in stm32h7_adc_prepare()
943 ret = stm32h7_adc_selfcalib(indio_dev); in stm32h7_adc_prepare()
950 ret = stm32h7_adc_enable(indio_dev); in stm32h7_adc_prepare()
956 ret = stm32h7_adc_restore_selfcalib(indio_dev); in stm32h7_adc_prepare()
958 ret = stm32h7_adc_read_selfcalib(indio_dev); in stm32h7_adc_prepare()
967 stm32h7_adc_disable(indio_dev); in stm32h7_adc_prepare()
974 static void stm32h7_adc_unprepare(struct iio_dev *indio_dev) in stm32h7_adc_unprepare() argument
976 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_unprepare()
978 stm32h7_adc_disable(indio_dev); in stm32h7_adc_unprepare()
993 static int stm32_adc_conf_scan_seq(struct iio_dev *indio_dev, in stm32_adc_conf_scan_seq() argument
996 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_conf_scan_seq()
1006 for_each_set_bit(bit, scan_mask, indio_dev->masklength) { in stm32_adc_conf_scan_seq()
1007 chan = indio_dev->channels + bit; in stm32_adc_conf_scan_seq()
1016 dev_dbg(&indio_dev->dev, "%s chan %d to SQ%d\n", in stm32_adc_conf_scan_seq()
1044 static int stm32_adc_get_trig_extsel(struct iio_dev *indio_dev, in stm32_adc_get_trig_extsel() argument
1047 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_extsel()
1075 static int stm32_adc_set_trig(struct iio_dev *indio_dev, in stm32_adc_set_trig() argument
1078 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig()
1084 ret = stm32_adc_get_trig_extsel(indio_dev, trig); in stm32_adc_set_trig()
1104 static int stm32_adc_set_trig_pol(struct iio_dev *indio_dev, in stm32_adc_set_trig_pol() argument
1108 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig_pol()
1115 static int stm32_adc_get_trig_pol(struct iio_dev *indio_dev, in stm32_adc_get_trig_pol() argument
1118 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_pol()
1146 static int stm32_adc_single_conv(struct iio_dev *indio_dev, in stm32_adc_single_conv() argument
1150 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_single_conv()
1151 struct device *dev = indio_dev->dev.parent; in stm32_adc_single_conv()
1183 adc->cfg->start_conv(indio_dev, false); in stm32_adc_single_conv()
1196 adc->cfg->stop_conv(indio_dev); in stm32_adc_single_conv()
1206 static int stm32_adc_read_raw(struct iio_dev *indio_dev, in stm32_adc_read_raw() argument
1210 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_read_raw()
1215 ret = iio_device_claim_direct_mode(indio_dev); in stm32_adc_read_raw()
1219 ret = stm32_adc_single_conv(indio_dev, chan, val); in stm32_adc_read_raw()
1222 iio_device_release_direct_mode(indio_dev); in stm32_adc_read_raw()
1248 static void stm32_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32_adc_irq_clear() argument
1250 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_irq_clear()
1252 adc->cfg->irq_clear(indio_dev, msk); in stm32_adc_irq_clear()
1257 struct iio_dev *indio_dev = data; in stm32_adc_threaded_isr() local
1258 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_threaded_isr()
1270 adc->cfg->stop_conv(indio_dev); in stm32_adc_threaded_isr()
1271 stm32_adc_irq_clear(indio_dev, regs->isr_ovr.mask); in stm32_adc_threaded_isr()
1272 dev_err(&indio_dev->dev, "Overrun, stopping: restart needed\n"); in stm32_adc_threaded_isr()
1277 dev_err_ratelimited(&indio_dev->dev, in stm32_adc_threaded_isr()
1286 struct iio_dev *indio_dev = data; in stm32_adc_isr() local
1287 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_isr()
1311 if (iio_buffer_enabled(indio_dev)) { in stm32_adc_isr()
1315 iio_trigger_poll(indio_dev->trig); in stm32_adc_isr()
1334 static int stm32_adc_validate_trigger(struct iio_dev *indio_dev, in stm32_adc_validate_trigger() argument
1337 return stm32_adc_get_trig_extsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_adc_validate_trigger()
1340 static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val) in stm32_adc_set_watermark() argument
1342 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_watermark()
1358 static int stm32_adc_update_scan_mode(struct iio_dev *indio_dev, in stm32_adc_update_scan_mode() argument
1361 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_update_scan_mode()
1362 struct device *dev = indio_dev->dev.parent; in stm32_adc_update_scan_mode()
1369 adc->num_conv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_adc_update_scan_mode()
1371 ret = stm32_adc_conf_scan_seq(indio_dev, scan_mask); in stm32_adc_update_scan_mode()
1378 static int stm32_adc_of_xlate(struct iio_dev *indio_dev, in stm32_adc_of_xlate() argument
1383 for (i = 0; i < indio_dev->num_channels; i++) in stm32_adc_of_xlate()
1384 if (indio_dev->channels[i].channel == iiospec->args[0]) in stm32_adc_of_xlate()
1404 static int stm32_adc_debugfs_reg_access(struct iio_dev *indio_dev, in stm32_adc_debugfs_reg_access() argument
1408 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_debugfs_reg_access()
1409 struct device *dev = indio_dev->dev.parent; in stm32_adc_debugfs_reg_access()
1463 struct iio_dev *indio_dev = data; in stm32_adc_dma_buffer_done() local
1464 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_buffer_done()
1476 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_dma_buffer_done()
1478 while (residue >= indio_dev->scan_bytes) { in stm32_adc_dma_buffer_done()
1481 iio_push_to_buffers(indio_dev, buffer); in stm32_adc_dma_buffer_done()
1483 residue -= indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1484 adc->bufi += indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1490 static int stm32_adc_dma_start(struct iio_dev *indio_dev) in stm32_adc_dma_start() argument
1492 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_start()
1500 dev_dbg(&indio_dev->dev, "%s size=%d watermark=%d\n", __func__, in stm32_adc_dma_start()
1513 desc->callback_param = indio_dev; in stm32_adc_dma_start()
1528 static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev) in stm32_adc_buffer_postenable() argument
1530 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_postenable()
1531 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_postenable()
1538 ret = stm32_adc_set_trig(indio_dev, indio_dev->trig); in stm32_adc_buffer_postenable()
1540 dev_err(&indio_dev->dev, "Can't set trigger\n"); in stm32_adc_buffer_postenable()
1544 ret = stm32_adc_dma_start(indio_dev); in stm32_adc_buffer_postenable()
1546 dev_err(&indio_dev->dev, "Can't start dma\n"); in stm32_adc_buffer_postenable()
1558 adc->cfg->start_conv(indio_dev, !!adc->dma_chan); in stm32_adc_buffer_postenable()
1563 stm32_adc_set_trig(indio_dev, NULL); in stm32_adc_buffer_postenable()
1571 static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev) in stm32_adc_buffer_predisable() argument
1573 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_predisable()
1574 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_predisable()
1576 adc->cfg->stop_conv(indio_dev); in stm32_adc_buffer_predisable()
1585 if (stm32_adc_set_trig(indio_dev, NULL)) in stm32_adc_buffer_predisable()
1586 dev_err(&indio_dev->dev, "Can't clear trigger\n"); in stm32_adc_buffer_predisable()
1602 struct iio_dev *indio_dev = pf->indio_dev; in stm32_adc_trigger_handler() local
1603 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_trigger_handler()
1605 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_trigger_handler()
1609 iio_push_to_buffers_with_timestamp(indio_dev, adc->buffer, in stm32_adc_trigger_handler()
1611 iio_trigger_notify_done(indio_dev->trig); in stm32_adc_trigger_handler()
1630 static int stm32_adc_of_get_resolution(struct iio_dev *indio_dev) in stm32_adc_of_get_resolution() argument
1632 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_of_get_resolution()
1633 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_of_get_resolution()
1644 dev_err(&indio_dev->dev, "Bad resolution: %u bits\n", res); in stm32_adc_of_get_resolution()
1648 dev_dbg(&indio_dev->dev, "Using %u bits resolution\n", res); in stm32_adc_of_get_resolution()
1672 static void stm32_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_adc_chan_init_one() argument
1676 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_init_one()
1709 static int stm32_adc_chan_of_init(struct iio_dev *indio_dev, bool timestamping) in stm32_adc_chan_of_init() argument
1711 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_chan_of_init()
1712 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_of_init()
1723 dev_err(&indio_dev->dev, "Bad st,adc-channels?\n"); in stm32_adc_chan_of_init()
1732 dev_err(&indio_dev->dev, "Bad st,adc-diff-channels?\n"); in stm32_adc_chan_of_init()
1746 dev_err(&indio_dev->dev, "No channels configured\n"); in stm32_adc_chan_of_init()
1753 dev_err(&indio_dev->dev, "Invalid st,min-sample-time-nsecs\n"); in stm32_adc_chan_of_init()
1760 channels = devm_kcalloc(&indio_dev->dev, num_channels, in stm32_adc_chan_of_init()
1767 dev_err(&indio_dev->dev, "Invalid channel %d\n", val); in stm32_adc_chan_of_init()
1774 dev_err(&indio_dev->dev, in stm32_adc_chan_of_init()
1779 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], val, in stm32_adc_chan_of_init()
1787 dev_err(&indio_dev->dev, "Invalid channel in%d-in%d\n", in stm32_adc_chan_of_init()
1791 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], in stm32_adc_chan_of_init()
1823 indio_dev->num_channels = scan_index; in stm32_adc_chan_of_init()
1824 indio_dev->channels = channels; in stm32_adc_chan_of_init()
1829 static int stm32_adc_dma_request(struct device *dev, struct iio_dev *indio_dev) in stm32_adc_dma_request() argument
1831 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_request()
1878 struct iio_dev *indio_dev; in stm32_adc_probe() local
1888 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc)); in stm32_adc_probe()
1889 if (!indio_dev) in stm32_adc_probe()
1892 adc = iio_priv(indio_dev); in stm32_adc_probe()
1899 indio_dev->name = dev_name(&pdev->dev); in stm32_adc_probe()
1900 indio_dev->dev.of_node = pdev->dev.of_node; in stm32_adc_probe()
1901 indio_dev->info = &stm32_adc_iio_info; in stm32_adc_probe()
1902 indio_dev->modes = INDIO_DIRECT_MODE | INDIO_HARDWARE_TRIGGERED; in stm32_adc_probe()
1904 platform_set_drvdata(pdev, indio_dev); in stm32_adc_probe()
1918 0, pdev->name, indio_dev); in stm32_adc_probe()
1935 ret = stm32_adc_of_get_resolution(indio_dev); in stm32_adc_probe()
1939 ret = stm32_adc_dma_request(dev, indio_dev); in stm32_adc_probe()
1952 ret = stm32_adc_chan_of_init(indio_dev, timestamping); in stm32_adc_probe()
1956 ret = iio_triggered_buffer_setup(indio_dev, in stm32_adc_probe()
1975 ret = iio_device_register(indio_dev); in stm32_adc_probe()
1993 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_probe()
2008 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_adc_remove() local
2009 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_remove()
2012 iio_device_unregister(indio_dev); in stm32_adc_remove()
2017 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_remove()
2031 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_suspend() local
2033 if (iio_buffer_enabled(indio_dev)) in stm32_adc_suspend()
2034 stm32_adc_buffer_predisable(indio_dev); in stm32_adc_suspend()
2041 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_resume() local
2048 if (!iio_buffer_enabled(indio_dev)) in stm32_adc_resume()
2051 ret = stm32_adc_update_scan_mode(indio_dev, in stm32_adc_resume()
2052 indio_dev->active_scan_mask); in stm32_adc_resume()
2056 return stm32_adc_buffer_postenable(indio_dev); in stm32_adc_resume()