Lines Matching refs:indio_dev
213 void (*irq_clear)(struct iio_dev *indio_dev, u32 msk);
627 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_hw_stop() local
628 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_hw_stop()
631 adc->cfg->unprepare(indio_dev); in stm32_adc_hw_stop()
640 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_hw_start() local
641 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_hw_start()
651 ret = adc->cfg->prepare(indio_dev); in stm32_adc_hw_start()
664 static void stm32_adc_int_ch_enable(struct iio_dev *indio_dev) in stm32_adc_int_ch_enable() argument
666 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_int_ch_enable()
675 dev_dbg(&indio_dev->dev, "Enable VDDCore\n"); in stm32_adc_int_ch_enable()
680 dev_dbg(&indio_dev->dev, "Enable VREFInt\n"); in stm32_adc_int_ch_enable()
685 dev_dbg(&indio_dev->dev, "Enable VBAT\n"); in stm32_adc_int_ch_enable()
728 static void stm32f4_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32f4_adc_start_conv() argument
730 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_start_conv()
748 static void stm32f4_adc_stop_conv(struct iio_dev *indio_dev) in stm32f4_adc_stop_conv() argument
750 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_stop_conv()
760 static void stm32f4_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32f4_adc_irq_clear() argument
762 struct stm32_adc *adc = iio_priv(indio_dev); in stm32f4_adc_irq_clear()
767 static void stm32h7_adc_start_conv(struct iio_dev *indio_dev, bool dma) in stm32h7_adc_start_conv() argument
769 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_start_conv()
788 static void stm32h7_adc_stop_conv(struct iio_dev *indio_dev) in stm32h7_adc_stop_conv() argument
790 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_stop_conv()
800 dev_warn(&indio_dev->dev, "stop failed\n"); in stm32h7_adc_stop_conv()
805 static void stm32h7_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32h7_adc_irq_clear() argument
807 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_irq_clear()
812 static int stm32h7_adc_exit_pwr_down(struct iio_dev *indio_dev) in stm32h7_adc_exit_pwr_down() argument
814 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_exit_pwr_down()
836 dev_err(&indio_dev->dev, "Failed to exit power down\n"); in stm32h7_adc_exit_pwr_down()
850 static int stm32h7_adc_enable(struct iio_dev *indio_dev) in stm32h7_adc_enable() argument
852 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_enable()
864 dev_err(&indio_dev->dev, "Failed to enable ADC\n"); in stm32h7_adc_enable()
873 static void stm32h7_adc_disable(struct iio_dev *indio_dev) in stm32h7_adc_disable() argument
875 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_disable()
885 dev_warn(&indio_dev->dev, "Failed to disable\n"); in stm32h7_adc_disable()
893 static int stm32h7_adc_read_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_read_selfcalib() argument
895 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_read_selfcalib()
910 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_read_selfcalib()
937 static int stm32h7_adc_restore_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_restore_selfcalib() argument
939 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_restore_selfcalib()
961 dev_err(&indio_dev->dev, "Failed to write calfact\n"); in stm32h7_adc_restore_selfcalib()
977 dev_err(&indio_dev->dev, "Failed to read calfact\n"); in stm32h7_adc_restore_selfcalib()
982 dev_err(&indio_dev->dev, "calfact not consistent\n"); in stm32h7_adc_restore_selfcalib()
1010 static int stm32h7_adc_selfcalib(struct iio_dev *indio_dev) in stm32h7_adc_selfcalib() argument
1012 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_selfcalib()
1033 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
1050 dev_err(&indio_dev->dev, "calibration failed\n"); in stm32h7_adc_selfcalib()
1072 static int stm32h7_adc_prepare(struct iio_dev *indio_dev) in stm32h7_adc_prepare() argument
1074 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_prepare()
1077 ret = stm32h7_adc_exit_pwr_down(indio_dev); in stm32h7_adc_prepare()
1081 ret = stm32h7_adc_selfcalib(indio_dev); in stm32h7_adc_prepare()
1086 stm32_adc_int_ch_enable(indio_dev); in stm32h7_adc_prepare()
1090 ret = stm32h7_adc_enable(indio_dev); in stm32h7_adc_prepare()
1096 ret = stm32h7_adc_restore_selfcalib(indio_dev); in stm32h7_adc_prepare()
1098 ret = stm32h7_adc_read_selfcalib(indio_dev); in stm32h7_adc_prepare()
1107 stm32h7_adc_disable(indio_dev); in stm32h7_adc_prepare()
1116 static void stm32h7_adc_unprepare(struct iio_dev *indio_dev) in stm32h7_adc_unprepare() argument
1118 struct stm32_adc *adc = iio_priv(indio_dev); in stm32h7_adc_unprepare()
1121 stm32h7_adc_disable(indio_dev); in stm32h7_adc_unprepare()
1137 static int stm32_adc_conf_scan_seq(struct iio_dev *indio_dev, in stm32_adc_conf_scan_seq() argument
1140 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_conf_scan_seq()
1150 for_each_set_bit(bit, scan_mask, indio_dev->masklength) { in stm32_adc_conf_scan_seq()
1151 chan = indio_dev->channels + bit; in stm32_adc_conf_scan_seq()
1160 dev_dbg(&indio_dev->dev, "%s chan %d to SQ%d\n", in stm32_adc_conf_scan_seq()
1188 static int stm32_adc_get_trig_extsel(struct iio_dev *indio_dev, in stm32_adc_get_trig_extsel() argument
1191 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_extsel()
1219 static int stm32_adc_set_trig(struct iio_dev *indio_dev, in stm32_adc_set_trig() argument
1222 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig()
1228 ret = stm32_adc_get_trig_extsel(indio_dev, trig); in stm32_adc_set_trig()
1248 static int stm32_adc_set_trig_pol(struct iio_dev *indio_dev, in stm32_adc_set_trig_pol() argument
1252 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_trig_pol()
1259 static int stm32_adc_get_trig_pol(struct iio_dev *indio_dev, in stm32_adc_get_trig_pol() argument
1262 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_get_trig_pol()
1290 static int stm32_adc_single_conv(struct iio_dev *indio_dev, in stm32_adc_single_conv() argument
1294 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_single_conv()
1295 struct device *dev = indio_dev->dev.parent; in stm32_adc_single_conv()
1327 adc->cfg->start_conv(indio_dev, false); in stm32_adc_single_conv()
1340 adc->cfg->stop_conv(indio_dev); in stm32_adc_single_conv()
1350 static int stm32_adc_read_raw(struct iio_dev *indio_dev, in stm32_adc_read_raw() argument
1354 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_read_raw()
1360 ret = iio_device_claim_direct_mode(indio_dev); in stm32_adc_read_raw()
1364 ret = stm32_adc_single_conv(indio_dev, chan, val); in stm32_adc_read_raw()
1371 iio_device_release_direct_mode(indio_dev); in stm32_adc_read_raw()
1397 static void stm32_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) in stm32_adc_irq_clear() argument
1399 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_irq_clear()
1401 adc->cfg->irq_clear(indio_dev, msk); in stm32_adc_irq_clear()
1406 struct iio_dev *indio_dev = data; in stm32_adc_threaded_isr() local
1407 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_threaded_isr()
1419 adc->cfg->stop_conv(indio_dev); in stm32_adc_threaded_isr()
1420 stm32_adc_irq_clear(indio_dev, regs->isr_ovr.mask); in stm32_adc_threaded_isr()
1421 dev_err(&indio_dev->dev, "Overrun, stopping: restart needed\n"); in stm32_adc_threaded_isr()
1426 dev_err_ratelimited(&indio_dev->dev, in stm32_adc_threaded_isr()
1435 struct iio_dev *indio_dev = data; in stm32_adc_isr() local
1436 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_isr()
1460 if (iio_buffer_enabled(indio_dev)) { in stm32_adc_isr()
1464 iio_trigger_poll(indio_dev->trig); in stm32_adc_isr()
1483 static int stm32_adc_validate_trigger(struct iio_dev *indio_dev, in stm32_adc_validate_trigger() argument
1486 return stm32_adc_get_trig_extsel(indio_dev, trig) < 0 ? -EINVAL : 0; in stm32_adc_validate_trigger()
1489 static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val) in stm32_adc_set_watermark() argument
1491 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_set_watermark()
1507 static int stm32_adc_update_scan_mode(struct iio_dev *indio_dev, in stm32_adc_update_scan_mode() argument
1510 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_update_scan_mode()
1511 struct device *dev = indio_dev->dev.parent; in stm32_adc_update_scan_mode()
1518 adc->num_conv = bitmap_weight(scan_mask, indio_dev->masklength); in stm32_adc_update_scan_mode()
1520 ret = stm32_adc_conf_scan_seq(indio_dev, scan_mask); in stm32_adc_update_scan_mode()
1527 static int stm32_adc_of_xlate(struct iio_dev *indio_dev, in stm32_adc_of_xlate() argument
1532 for (i = 0; i < indio_dev->num_channels; i++) in stm32_adc_of_xlate()
1533 if (indio_dev->channels[i].channel == iiospec->args[0]) in stm32_adc_of_xlate()
1553 static int stm32_adc_debugfs_reg_access(struct iio_dev *indio_dev, in stm32_adc_debugfs_reg_access() argument
1557 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_debugfs_reg_access()
1558 struct device *dev = indio_dev->dev.parent; in stm32_adc_debugfs_reg_access()
1612 struct iio_dev *indio_dev = data; in stm32_adc_dma_buffer_done() local
1613 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_buffer_done()
1625 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_dma_buffer_done()
1627 while (residue >= indio_dev->scan_bytes) { in stm32_adc_dma_buffer_done()
1630 iio_push_to_buffers(indio_dev, buffer); in stm32_adc_dma_buffer_done()
1632 residue -= indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1633 adc->bufi += indio_dev->scan_bytes; in stm32_adc_dma_buffer_done()
1639 static int stm32_adc_dma_start(struct iio_dev *indio_dev) in stm32_adc_dma_start() argument
1641 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_start()
1649 dev_dbg(&indio_dev->dev, "%s size=%d watermark=%d\n", __func__, in stm32_adc_dma_start()
1662 desc->callback_param = indio_dev; in stm32_adc_dma_start()
1677 static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev) in stm32_adc_buffer_postenable() argument
1679 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_postenable()
1680 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_postenable()
1687 ret = stm32_adc_set_trig(indio_dev, indio_dev->trig); in stm32_adc_buffer_postenable()
1689 dev_err(&indio_dev->dev, "Can't set trigger\n"); in stm32_adc_buffer_postenable()
1693 ret = stm32_adc_dma_start(indio_dev); in stm32_adc_buffer_postenable()
1695 dev_err(&indio_dev->dev, "Can't start dma\n"); in stm32_adc_buffer_postenable()
1707 adc->cfg->start_conv(indio_dev, !!adc->dma_chan); in stm32_adc_buffer_postenable()
1712 stm32_adc_set_trig(indio_dev, NULL); in stm32_adc_buffer_postenable()
1720 static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev) in stm32_adc_buffer_predisable() argument
1722 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_buffer_predisable()
1723 struct device *dev = indio_dev->dev.parent; in stm32_adc_buffer_predisable()
1725 adc->cfg->stop_conv(indio_dev); in stm32_adc_buffer_predisable()
1734 if (stm32_adc_set_trig(indio_dev, NULL)) in stm32_adc_buffer_predisable()
1735 dev_err(&indio_dev->dev, "Can't clear trigger\n"); in stm32_adc_buffer_predisable()
1751 struct iio_dev *indio_dev = pf->indio_dev; in stm32_adc_trigger_handler() local
1752 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_trigger_handler()
1754 dev_dbg(&indio_dev->dev, "%s bufi=%d\n", __func__, adc->bufi); in stm32_adc_trigger_handler()
1758 iio_push_to_buffers_with_timestamp(indio_dev, adc->buffer, in stm32_adc_trigger_handler()
1760 iio_trigger_notify_done(indio_dev->trig); in stm32_adc_trigger_handler()
1779 static int stm32_adc_of_get_resolution(struct iio_dev *indio_dev) in stm32_adc_of_get_resolution() argument
1781 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_of_get_resolution()
1782 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_of_get_resolution()
1793 dev_err(&indio_dev->dev, "Bad resolution: %u bits\n", res); in stm32_adc_of_get_resolution()
1797 dev_dbg(&indio_dev->dev, "Using %u bits resolution\n", res); in stm32_adc_of_get_resolution()
1828 static void stm32_adc_chan_init_one(struct iio_dev *indio_dev, in stm32_adc_chan_init_one() argument
1832 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_init_one()
1868 static int stm32_adc_get_legacy_chan_count(struct iio_dev *indio_dev, struct stm32_adc *adc) in stm32_adc_get_legacy_chan_count() argument
1870 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_get_legacy_chan_count()
1876 dev_err(&indio_dev->dev, "Bad st,adc-channels?\n"); in stm32_adc_get_legacy_chan_count()
1885 dev_err(&indio_dev->dev, "Bad st,adc-diff-channels?\n"); in stm32_adc_get_legacy_chan_count()
1895 dev_err(&indio_dev->dev, "Invalid st,min-sample-time-nsecs\n"); in stm32_adc_get_legacy_chan_count()
1902 static int stm32_adc_legacy_chan_init(struct iio_dev *indio_dev, in stm32_adc_legacy_chan_init() argument
1906 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_legacy_chan_init()
1920 dev_err(&indio_dev->dev, "Failed to get diff channels %d\n", ret); in stm32_adc_legacy_chan_init()
1927 dev_err(&indio_dev->dev, "Invalid channel in%d-in%d\n", in stm32_adc_legacy_chan_init()
1932 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], in stm32_adc_legacy_chan_init()
1941 dev_err(&indio_dev->dev, "Invalid channel %d\n", val); in stm32_adc_legacy_chan_init()
1948 dev_err(&indio_dev->dev, "channel %d misconfigured\n", val); in stm32_adc_legacy_chan_init()
1952 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], val, in stm32_adc_legacy_chan_init()
1973 static int stm32_adc_populate_int_ch(struct iio_dev *indio_dev, const char *ch_name, in stm32_adc_populate_int_ch() argument
1976 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_populate_int_ch()
1988 ret = nvmem_cell_read_u16(&indio_dev->dev, "vrefint", &vrefint); in stm32_adc_populate_int_ch()
1990 return dev_err_probe(indio_dev->dev.parent, ret, in stm32_adc_populate_int_ch()
1994 dev_dbg(&indio_dev->dev, "vrefint calibration not found\n"); in stm32_adc_populate_int_ch()
2003 static int stm32_adc_generic_chan_init(struct iio_dev *indio_dev, in stm32_adc_generic_chan_init() argument
2007 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_generic_chan_init()
2018 dev_err(&indio_dev->dev, "Missing channel index %d\n", ret); in stm32_adc_generic_chan_init()
2026 dev_err(&indio_dev->dev, "Label %s exceeds %d characters\n", in stm32_adc_generic_chan_init()
2031 ret = stm32_adc_populate_int_ch(indio_dev, name, val); in stm32_adc_generic_chan_init()
2035 dev_err(&indio_dev->dev, "Invalid label %d\n", ret); in stm32_adc_generic_chan_init()
2040 dev_err(&indio_dev->dev, "Invalid channel %d\n", val); in stm32_adc_generic_chan_init()
2051 dev_err(&indio_dev->dev, "Invalid channel in%d-in%d\n", in stm32_adc_generic_chan_init()
2056 dev_err(&indio_dev->dev, "Invalid diff-channels property %d\n", ret); in stm32_adc_generic_chan_init()
2060 stm32_adc_chan_init_one(indio_dev, &channels[scan_index], val, in stm32_adc_generic_chan_init()
2070 dev_err(&indio_dev->dev, "Invalid st,min-sample-time-ns property %d\n", in stm32_adc_generic_chan_init()
2086 static int stm32_adc_chan_of_init(struct iio_dev *indio_dev, bool timestamping) in stm32_adc_chan_of_init() argument
2088 struct device_node *node = indio_dev->dev.of_node; in stm32_adc_chan_of_init()
2089 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_chan_of_init()
2103 ret = stm32_adc_get_legacy_chan_count(indio_dev, adc); in stm32_adc_chan_of_init()
2105 dev_err(indio_dev->dev.parent, "No channel found\n"); in stm32_adc_chan_of_init()
2115 dev_err(&indio_dev->dev, "Channel number [%d] exceeds %d\n", in stm32_adc_chan_of_init()
2123 channels = devm_kcalloc(&indio_dev->dev, num_channels, in stm32_adc_chan_of_init()
2129 ret = stm32_adc_legacy_chan_init(indio_dev, adc, channels); in stm32_adc_chan_of_init()
2131 ret = stm32_adc_generic_chan_init(indio_dev, adc, channels); in stm32_adc_chan_of_init()
2149 indio_dev->num_channels = scan_index; in stm32_adc_chan_of_init()
2150 indio_dev->channels = channels; in stm32_adc_chan_of_init()
2155 static int stm32_adc_dma_request(struct device *dev, struct iio_dev *indio_dev) in stm32_adc_dma_request() argument
2157 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_dma_request()
2204 struct iio_dev *indio_dev; in stm32_adc_probe() local
2214 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc)); in stm32_adc_probe()
2215 if (!indio_dev) in stm32_adc_probe()
2218 adc = iio_priv(indio_dev); in stm32_adc_probe()
2225 indio_dev->name = dev_name(&pdev->dev); in stm32_adc_probe()
2226 indio_dev->dev.of_node = pdev->dev.of_node; in stm32_adc_probe()
2227 indio_dev->info = &stm32_adc_iio_info; in stm32_adc_probe()
2228 indio_dev->modes = INDIO_DIRECT_MODE | INDIO_HARDWARE_TRIGGERED; in stm32_adc_probe()
2230 platform_set_drvdata(pdev, indio_dev); in stm32_adc_probe()
2244 0, pdev->name, indio_dev); in stm32_adc_probe()
2261 ret = stm32_adc_of_get_resolution(indio_dev); in stm32_adc_probe()
2265 ret = stm32_adc_dma_request(dev, indio_dev); in stm32_adc_probe()
2278 ret = stm32_adc_chan_of_init(indio_dev, timestamping); in stm32_adc_probe()
2282 ret = iio_triggered_buffer_setup(indio_dev, in stm32_adc_probe()
2301 ret = iio_device_register(indio_dev); in stm32_adc_probe()
2319 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_probe()
2334 struct iio_dev *indio_dev = platform_get_drvdata(pdev); in stm32_adc_remove() local
2335 struct stm32_adc *adc = iio_priv(indio_dev); in stm32_adc_remove()
2338 iio_device_unregister(indio_dev); in stm32_adc_remove()
2343 iio_triggered_buffer_cleanup(indio_dev); in stm32_adc_remove()
2357 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_suspend() local
2359 if (iio_buffer_enabled(indio_dev)) in stm32_adc_suspend()
2360 stm32_adc_buffer_predisable(indio_dev); in stm32_adc_suspend()
2367 struct iio_dev *indio_dev = dev_get_drvdata(dev); in stm32_adc_resume() local
2374 if (!iio_buffer_enabled(indio_dev)) in stm32_adc_resume()
2377 ret = stm32_adc_update_scan_mode(indio_dev, in stm32_adc_resume()
2378 indio_dev->active_scan_mask); in stm32_adc_resume()
2382 return stm32_adc_buffer_postenable(indio_dev); in stm32_adc_resume()