Lines Matching full:st

330 #define at91_adc_readl(st, reg)		readl_relaxed(st->base + reg)  argument
331 #define at91_adc_writel(st, reg, val) writel_relaxed(val, st->base + reg) argument
489 static void at91_adc_config_emr(struct at91_adc_state *st) in at91_adc_config_emr() argument
492 unsigned int emr = at91_adc_readl(st, AT91_SAMA5D2_EMR); in at91_adc_config_emr()
501 switch (st->oversampling_ratio) { in at91_adc_config_emr()
516 at91_adc_writel(st, AT91_SAMA5D2_EMR, emr); in at91_adc_config_emr()
519 static int at91_adc_adjust_val_osr(struct at91_adc_state *st, int *val) in at91_adc_adjust_val_osr() argument
521 if (st->oversampling_ratio == AT91_OSR_1SAMPLES) { in at91_adc_adjust_val_osr()
527 } else if (st->oversampling_ratio == AT91_OSR_4SAMPLES) { in at91_adc_adjust_val_osr()
538 static void at91_adc_adjust_val_osr_array(struct at91_adc_state *st, void *buf, in at91_adc_adjust_val_osr_array() argument
554 at91_adc_adjust_val_osr(st, &val); in at91_adc_adjust_val_osr_array()
560 static int at91_adc_configure_touch(struct at91_adc_state *st, bool state) in at91_adc_configure_touch() argument
562 u32 clk_khz = st->current_sample_rate / 1000; in at91_adc_configure_touch()
569 at91_adc_writel(st, AT91_SAMA5D2_IDR, in at91_adc_configure_touch()
571 at91_adc_writel(st, AT91_SAMA5D2_TSMR, 0); in at91_adc_configure_touch()
597 at91_adc_writel(st, AT91_SAMA5D2_TSMR, tsmr); in at91_adc_configure_touch()
599 acr = at91_adc_readl(st, AT91_SAMA5D2_ACR); in at91_adc_configure_touch()
602 at91_adc_writel(st, AT91_SAMA5D2_ACR, acr); in at91_adc_configure_touch()
605 st->touch_st.sample_period_val = in at91_adc_configure_touch()
609 at91_adc_writel(st, AT91_SAMA5D2_IER, AT91_SAMA5D2_IER_PEN); in at91_adc_configure_touch()
614 static u16 at91_adc_touch_pos(struct at91_adc_state *st, int reg) in at91_adc_touch_pos() argument
625 val = at91_adc_readl(st, reg); in at91_adc_touch_pos()
627 dev_dbg(&iio_priv_to_dev(st)->dev, "pos is 0\n"); in at91_adc_touch_pos()
633 dev_err(&iio_priv_to_dev(st)->dev, "scale is 0\n"); in at91_adc_touch_pos()
641 static u16 at91_adc_touch_x_pos(struct at91_adc_state *st) in at91_adc_touch_x_pos() argument
643 st->touch_st.x_pos = at91_adc_touch_pos(st, AT91_SAMA5D2_XPOSR); in at91_adc_touch_x_pos()
644 return st->touch_st.x_pos; in at91_adc_touch_x_pos()
647 static u16 at91_adc_touch_y_pos(struct at91_adc_state *st) in at91_adc_touch_y_pos() argument
649 return at91_adc_touch_pos(st, AT91_SAMA5D2_YPOSR); in at91_adc_touch_y_pos()
652 static u16 at91_adc_touch_pressure(struct at91_adc_state *st) in at91_adc_touch_pressure() argument
661 val = at91_adc_readl(st, AT91_SAMA5D2_PRESSR); in at91_adc_touch_pressure()
666 pres = rxp * (st->touch_st.x_pos * factor / 1024) * in at91_adc_touch_pressure()
680 static int at91_adc_read_position(struct at91_adc_state *st, int chan, u16 *val) in at91_adc_read_position() argument
683 if (!st->touch_st.touching) in at91_adc_read_position()
686 *val = at91_adc_touch_x_pos(st); in at91_adc_read_position()
688 *val = at91_adc_touch_y_pos(st); in at91_adc_read_position()
695 static int at91_adc_read_pressure(struct at91_adc_state *st, int chan, u16 *val) in at91_adc_read_pressure() argument
698 if (!st->touch_st.touching) in at91_adc_read_pressure()
701 *val = at91_adc_touch_pressure(st); in at91_adc_read_pressure()
711 struct at91_adc_state *st = iio_priv(indio); in at91_adc_configure_trigger() local
712 u32 status = at91_adc_readl(st, AT91_SAMA5D2_TRGR); in at91_adc_configure_trigger()
719 status |= st->selected_trig->trgmod_value; in at91_adc_configure_trigger()
722 at91_adc_writel(st, AT91_SAMA5D2_TRGR, status); in at91_adc_configure_trigger()
735 at91_adc_writel(st, AT91_SAMA5D2_CHER, in at91_adc_configure_trigger()
738 if (!st->dma_st.dma_chan) { in at91_adc_configure_trigger()
739 at91_adc_writel(st, AT91_SAMA5D2_IER, in at91_adc_configure_trigger()
744 if (!st->dma_st.dma_chan) { in at91_adc_configure_trigger()
745 at91_adc_writel(st, AT91_SAMA5D2_IDR, in at91_adc_configure_trigger()
748 at91_adc_writel(st, AT91_SAMA5D2_CHDR, in at91_adc_configure_trigger()
759 struct at91_adc_state *st = iio_priv(indio); in at91_adc_reenable_trigger() local
762 if (st->dma_st.dma_chan) in at91_adc_reenable_trigger()
765 enable_irq(st->irq); in at91_adc_reenable_trigger()
768 at91_adc_readl(st, AT91_SAMA5D2_LCDR); in at91_adc_reenable_trigger()
778 static int at91_adc_dma_size_done(struct at91_adc_state *st) in at91_adc_dma_size_done() argument
784 status = dmaengine_tx_status(st->dma_st.dma_chan, in at91_adc_dma_size_done()
785 st->dma_st.dma_chan->cookie, in at91_adc_dma_size_done()
791 i = st->dma_st.rx_buf_sz - state.residue; in at91_adc_dma_size_done()
794 if (i >= st->dma_st.buf_idx) in at91_adc_dma_size_done()
795 size = i - st->dma_st.buf_idx; in at91_adc_dma_size_done()
797 size = st->dma_st.rx_buf_sz + i - st->dma_st.buf_idx; in at91_adc_dma_size_done()
810 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_dma_start() local
816 if (!st->dma_st.dma_chan) in at91_adc_dma_start()
820 st->dma_st.buf_idx = 0; in at91_adc_dma_start()
826 st->dma_st.rx_buf_sz = 0; in at91_adc_dma_start()
836 st->dma_st.rx_buf_sz += chan->scan_type.storagebits / 8; in at91_adc_dma_start()
838 st->dma_st.rx_buf_sz *= st->dma_st.watermark; in at91_adc_dma_start()
841 desc = dmaengine_prep_dma_cyclic(st->dma_st.dma_chan, in at91_adc_dma_start()
842 st->dma_st.rx_dma_buf, in at91_adc_dma_start()
843 st->dma_st.rx_buf_sz, in at91_adc_dma_start()
844 st->dma_st.rx_buf_sz / 2, in at91_adc_dma_start()
859 dmaengine_terminate_async(st->dma_st.dma_chan); in at91_adc_dma_start()
864 at91_adc_writel(st, AT91_SAMA5D2_IER, AT91_SAMA5D2_IER_GOVRE); in at91_adc_dma_start()
866 dma_async_issue_pending(st->dma_st.dma_chan); in at91_adc_dma_start()
869 st->dma_st.dma_ts = iio_get_time_ns(indio_dev); in at91_adc_dma_start()
879 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_buffer_postenable() local
883 &st->touch_st.channels_bitmask, in at91_adc_buffer_postenable()
886 return at91_adc_configure_touch(st, true); in at91_adc_buffer_postenable()
904 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_buffer_predisable() local
910 &st->touch_st.channels_bitmask, in at91_adc_buffer_predisable()
913 return at91_adc_configure_touch(st, false); in at91_adc_buffer_predisable()
924 if (!st->dma_st.dma_chan) in at91_adc_buffer_predisable()
928 dmaengine_terminate_sync(st->dma_st.dma_chan); in at91_adc_buffer_predisable()
946 if (st->dma_st.dma_chan) in at91_adc_buffer_predisable()
947 at91_adc_readl(st, chan->address); in at91_adc_buffer_predisable()
951 at91_adc_readl(st, AT91_SAMA5D2_OVER); in at91_adc_buffer_predisable()
984 struct at91_adc_state *st = iio_priv(indio); in at91_adc_trigger_init() local
986 st->trig = at91_adc_allocate_trigger(indio, st->selected_trig->name); in at91_adc_trigger_init()
987 if (IS_ERR(st->trig)) { in at91_adc_trigger_init()
990 return PTR_ERR(st->trig); in at91_adc_trigger_init()
999 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_trigger_handler_nodma() local
1022 val = at91_adc_readl(st, chan->address); in at91_adc_trigger_handler_nodma()
1023 at91_adc_adjust_val_osr(st, &val); in at91_adc_trigger_handler_nodma()
1024 st->buffer[i] = val; in at91_adc_trigger_handler_nodma()
1026 st->buffer[i] = 0; in at91_adc_trigger_handler_nodma()
1031 iio_push_to_buffers_with_timestamp(indio_dev, st->buffer, in at91_adc_trigger_handler_nodma()
1037 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_trigger_handler_dma() local
1038 int transferred_len = at91_adc_dma_size_done(st); in at91_adc_trigger_handler_dma()
1043 u32 status = at91_adc_readl(st, AT91_SAMA5D2_ISR); in at91_adc_trigger_handler_dma()
1049 sample_size = div_s64(st->dma_st.rx_buf_sz, st->dma_st.watermark); in at91_adc_trigger_handler_dma()
1057 interval = div_s64((ns - st->dma_st.dma_ts), sample_count); in at91_adc_trigger_handler_dma()
1064 at91_adc_adjust_val_osr_array(st, in at91_adc_trigger_handler_dma()
1065 &st->dma_st.rx_buf[st->dma_st.buf_idx], in at91_adc_trigger_handler_dma()
1069 (st->dma_st.rx_buf + st->dma_st.buf_idx), in at91_adc_trigger_handler_dma()
1070 (st->dma_st.dma_ts + interval * sample_index)); in at91_adc_trigger_handler_dma()
1074 st->dma_st.buf_idx += sample_size; in at91_adc_trigger_handler_dma()
1076 if (st->dma_st.buf_idx >= st->dma_st.rx_buf_sz) in at91_adc_trigger_handler_dma()
1077 st->dma_st.buf_idx = 0; in at91_adc_trigger_handler_dma()
1081 st->dma_st.dma_ts = iio_get_time_ns(indio_dev); in at91_adc_trigger_handler_dma()
1088 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_trigger_handler() local
1090 if (st->dma_st.dma_chan) in at91_adc_trigger_handler()
1102 struct at91_adc_state *st = iio_priv(indio); in at91_adc_buffer_init() local
1104 if (st->selected_trig->hw_trig) { in at91_adc_buffer_init()
1142 static void at91_adc_setup_samp_freq(struct at91_adc_state *st, unsigned freq) in at91_adc_setup_samp_freq() argument
1144 struct iio_dev *indio_dev = iio_priv_to_dev(st); in at91_adc_setup_samp_freq()
1147 f_per = clk_get_rate(st->per_clk); in at91_adc_setup_samp_freq()
1150 startup = at91_adc_startup_time(st->soc_info.startup_time, in at91_adc_setup_samp_freq()
1153 mr = at91_adc_readl(st, AT91_SAMA5D2_MR); in at91_adc_setup_samp_freq()
1157 at91_adc_writel(st, AT91_SAMA5D2_MR, mr); in at91_adc_setup_samp_freq()
1161 st->current_sample_rate = freq; in at91_adc_setup_samp_freq()
1164 static inline unsigned at91_adc_get_sample_freq(struct at91_adc_state *st) in at91_adc_get_sample_freq() argument
1166 return st->current_sample_rate; in at91_adc_get_sample_freq()
1171 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_touch_data_handler() local
1182 at91_adc_read_position(st, chan->channel, &val); in at91_adc_touch_data_handler()
1184 at91_adc_read_pressure(st, chan->channel, &val); in at91_adc_touch_data_handler()
1187 st->buffer[i] = val; in at91_adc_touch_data_handler()
1198 schedule_work(&st->touch_st.workq); in at91_adc_touch_data_handler()
1201 static void at91_adc_pen_detect_interrupt(struct at91_adc_state *st) in at91_adc_pen_detect_interrupt() argument
1203 at91_adc_writel(st, AT91_SAMA5D2_IDR, AT91_SAMA5D2_IER_PEN); in at91_adc_pen_detect_interrupt()
1204 at91_adc_writel(st, AT91_SAMA5D2_IER, AT91_SAMA5D2_IER_NOPEN | in at91_adc_pen_detect_interrupt()
1207 at91_adc_writel(st, AT91_SAMA5D2_TRGR, in at91_adc_pen_detect_interrupt()
1209 AT91_SAMA5D2_TRGR_TRGPER(st->touch_st.sample_period_val)); in at91_adc_pen_detect_interrupt()
1210 st->touch_st.touching = true; in at91_adc_pen_detect_interrupt()
1213 static void at91_adc_no_pen_detect_interrupt(struct at91_adc_state *st) in at91_adc_no_pen_detect_interrupt() argument
1215 struct iio_dev *indio_dev = iio_priv_to_dev(st); in at91_adc_no_pen_detect_interrupt()
1217 at91_adc_writel(st, AT91_SAMA5D2_TRGR, in at91_adc_no_pen_detect_interrupt()
1219 at91_adc_writel(st, AT91_SAMA5D2_IDR, AT91_SAMA5D2_IER_NOPEN | in at91_adc_no_pen_detect_interrupt()
1222 st->touch_st.touching = false; in at91_adc_no_pen_detect_interrupt()
1226 at91_adc_writel(st, AT91_SAMA5D2_IER, AT91_SAMA5D2_IER_PEN); in at91_adc_no_pen_detect_interrupt()
1233 struct at91_adc_state *st = container_of(touch_st, in at91_adc_workq_handler() local
1235 struct iio_dev *indio_dev = iio_priv_to_dev(st); in at91_adc_workq_handler()
1237 iio_push_to_buffers(indio_dev, st->buffer); in at91_adc_workq_handler()
1243 struct at91_adc_state *st = iio_priv(indio); in at91_adc_interrupt() local
1244 u32 status = at91_adc_readl(st, AT91_SAMA5D2_ISR); in at91_adc_interrupt()
1245 u32 imr = at91_adc_readl(st, AT91_SAMA5D2_IMR); in at91_adc_interrupt()
1253 at91_adc_pen_detect_interrupt(st); in at91_adc_interrupt()
1256 at91_adc_no_pen_detect_interrupt(st); in at91_adc_interrupt()
1266 status = at91_adc_readl(st, AT91_SAMA5D2_XPOSR); in at91_adc_interrupt()
1267 status = at91_adc_readl(st, AT91_SAMA5D2_YPOSR); in at91_adc_interrupt()
1268 status = at91_adc_readl(st, AT91_SAMA5D2_PRESSR); in at91_adc_interrupt()
1269 } else if (iio_buffer_enabled(indio) && !st->dma_st.dma_chan) { in at91_adc_interrupt()
1273 } else if (iio_buffer_enabled(indio) && st->dma_st.dma_chan) { in at91_adc_interrupt()
1279 st->conversion_value = at91_adc_readl(st, st->chan->address); in at91_adc_interrupt()
1280 st->conversion_done = true; in at91_adc_interrupt()
1281 wake_up_interruptible(&st->wq_data_available); in at91_adc_interrupt()
1289 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_read_info_raw() local
1302 mutex_lock(&st->lock); in at91_adc_read_info_raw()
1304 ret = at91_adc_read_position(st, chan->channel, in at91_adc_read_info_raw()
1307 mutex_unlock(&st->lock); in at91_adc_read_info_raw()
1310 return at91_adc_adjust_val_osr(st, val); in at91_adc_read_info_raw()
1316 mutex_lock(&st->lock); in at91_adc_read_info_raw()
1318 ret = at91_adc_read_pressure(st, chan->channel, in at91_adc_read_info_raw()
1321 mutex_unlock(&st->lock); in at91_adc_read_info_raw()
1324 return at91_adc_adjust_val_osr(st, val); in at91_adc_read_info_raw()
1332 mutex_lock(&st->lock); in at91_adc_read_info_raw()
1334 st->chan = chan; in at91_adc_read_info_raw()
1340 at91_adc_writel(st, AT91_SAMA5D2_COR, cor); in at91_adc_read_info_raw()
1341 at91_adc_writel(st, AT91_SAMA5D2_CHER, BIT(chan->channel)); in at91_adc_read_info_raw()
1342 at91_adc_writel(st, AT91_SAMA5D2_IER, BIT(chan->channel)); in at91_adc_read_info_raw()
1343 at91_adc_writel(st, AT91_SAMA5D2_CR, AT91_SAMA5D2_CR_START); in at91_adc_read_info_raw()
1345 ret = wait_event_interruptible_timeout(st->wq_data_available, in at91_adc_read_info_raw()
1346 st->conversion_done, in at91_adc_read_info_raw()
1352 *val = st->conversion_value; in at91_adc_read_info_raw()
1353 ret = at91_adc_adjust_val_osr(st, val); in at91_adc_read_info_raw()
1356 st->conversion_done = false; in at91_adc_read_info_raw()
1359 at91_adc_writel(st, AT91_SAMA5D2_IDR, BIT(chan->channel)); in at91_adc_read_info_raw()
1360 at91_adc_writel(st, AT91_SAMA5D2_CHDR, BIT(chan->channel)); in at91_adc_read_info_raw()
1363 at91_adc_readl(st, AT91_SAMA5D2_LCDR); in at91_adc_read_info_raw()
1365 mutex_unlock(&st->lock); in at91_adc_read_info_raw()
1375 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_read_raw() local
1381 *val = st->vref_uv / 1000; in at91_adc_read_raw()
1388 *val = at91_adc_get_sample_freq(st); in at91_adc_read_raw()
1392 *val = st->oversampling_ratio; in at91_adc_read_raw()
1404 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_write_raw() local
1412 if (val == st->oversampling_ratio) in at91_adc_write_raw()
1414 st->oversampling_ratio = val; in at91_adc_write_raw()
1416 at91_adc_config_emr(st); in at91_adc_write_raw()
1419 if (val < st->soc_info.min_sample_rate || in at91_adc_write_raw()
1420 val > st->soc_info.max_sample_rate) in at91_adc_write_raw()
1423 at91_adc_setup_samp_freq(st, val); in at91_adc_write_raw()
1433 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_dma_init() local
1444 if (st->dma_st.dma_chan) in at91_adc_dma_init()
1447 st->dma_st.dma_chan = dma_request_slave_channel(&pdev->dev, "rx"); in at91_adc_dma_init()
1449 if (!st->dma_st.dma_chan) { in at91_adc_dma_init()
1454 st->dma_st.rx_buf = dma_alloc_coherent(st->dma_st.dma_chan->device->dev, in at91_adc_dma_init()
1456 &st->dma_st.rx_dma_buf, in at91_adc_dma_init()
1458 if (!st->dma_st.rx_buf) { in at91_adc_dma_init()
1465 config.src_addr = (phys_addr_t)(st->dma_st.phys_addr in at91_adc_dma_init()
1471 if (dmaengine_slave_config(st->dma_st.dma_chan, &config)) { in at91_adc_dma_init()
1477 dma_chan_name(st->dma_st.dma_chan)); in at91_adc_dma_init()
1482 dma_free_coherent(st->dma_st.dma_chan->device->dev, pages * PAGE_SIZE, in at91_adc_dma_init()
1483 st->dma_st.rx_buf, st->dma_st.rx_dma_buf); in at91_adc_dma_init()
1485 dma_release_channel(st->dma_st.dma_chan); in at91_adc_dma_init()
1486 st->dma_st.dma_chan = 0; in at91_adc_dma_init()
1494 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_dma_disable() local
1500 if (!st->dma_st.dma_chan) in at91_adc_dma_disable()
1504 dmaengine_terminate_sync(st->dma_st.dma_chan); in at91_adc_dma_disable()
1506 dma_free_coherent(st->dma_st.dma_chan->device->dev, pages * PAGE_SIZE, in at91_adc_dma_disable()
1507 st->dma_st.rx_buf, st->dma_st.rx_dma_buf); in at91_adc_dma_disable()
1508 dma_release_channel(st->dma_st.dma_chan); in at91_adc_dma_disable()
1509 st->dma_st.dma_chan = 0; in at91_adc_dma_disable()
1516 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_set_watermark() local
1521 if (!st->selected_trig->hw_trig) { in at91_adc_set_watermark()
1527 st->dma_st.watermark = val; in at91_adc_set_watermark()
1546 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_update_scan_mode() local
1548 if (bitmap_subset(scan_mask, &st->touch_st.channels_bitmask, in at91_adc_update_scan_mode()
1555 if (bitmap_intersects(&st->touch_st.channels_bitmask, scan_mask, in at91_adc_update_scan_mode()
1561 static void at91_adc_hw_init(struct at91_adc_state *st) in at91_adc_hw_init() argument
1563 at91_adc_writel(st, AT91_SAMA5D2_CR, AT91_SAMA5D2_CR_SWRST); in at91_adc_hw_init()
1564 at91_adc_writel(st, AT91_SAMA5D2_IDR, 0xffffffff); in at91_adc_hw_init()
1569 at91_adc_writel(st, AT91_SAMA5D2_MR, in at91_adc_hw_init()
1572 at91_adc_setup_samp_freq(st, st->soc_info.min_sample_rate); in at91_adc_hw_init()
1575 at91_adc_config_emr(st); in at91_adc_hw_init()
1582 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_get_fifo_state() local
1584 return scnprintf(buf, PAGE_SIZE, "%d\n", !!st->dma_st.dma_chan); in at91_adc_get_fifo_state()
1591 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_get_watermark() local
1593 return scnprintf(buf, PAGE_SIZE, "%d\n", st->dma_st.watermark); in at91_adc_get_watermark()
1638 struct at91_adc_state *st; in at91_adc_probe() local
1643 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*st)); in at91_adc_probe()
1654 st = iio_priv(indio_dev); in at91_adc_probe()
1656 bitmap_set(&st->touch_st.channels_bitmask, in at91_adc_probe()
1658 bitmap_set(&st->touch_st.channels_bitmask, in at91_adc_probe()
1660 bitmap_set(&st->touch_st.channels_bitmask, in at91_adc_probe()
1663 st->oversampling_ratio = AT91_OSR_1SAMPLES; in at91_adc_probe()
1667 &st->soc_info.min_sample_rate); in at91_adc_probe()
1676 &st->soc_info.max_sample_rate); in at91_adc_probe()
1684 &st->soc_info.startup_time); in at91_adc_probe()
1698 st->selected_trig = NULL; in at91_adc_probe()
1703 st->selected_trig = &at91_adc_trigger_list[i]; in at91_adc_probe()
1707 if (!st->selected_trig) { in at91_adc_probe()
1712 init_waitqueue_head(&st->wq_data_available); in at91_adc_probe()
1713 mutex_init(&st->lock); in at91_adc_probe()
1714 INIT_WORK(&st->touch_st.workq, at91_adc_workq_handler); in at91_adc_probe()
1721 st->dma_st.phys_addr = res->start; in at91_adc_probe()
1723 st->base = devm_ioremap_resource(&pdev->dev, res); in at91_adc_probe()
1724 if (IS_ERR(st->base)) in at91_adc_probe()
1725 return PTR_ERR(st->base); in at91_adc_probe()
1727 st->irq = platform_get_irq(pdev, 0); in at91_adc_probe()
1728 if (st->irq <= 0) { in at91_adc_probe()
1729 if (!st->irq) in at91_adc_probe()
1730 st->irq = -ENXIO; in at91_adc_probe()
1732 return st->irq; in at91_adc_probe()
1735 st->per_clk = devm_clk_get(&pdev->dev, "adc_clk"); in at91_adc_probe()
1736 if (IS_ERR(st->per_clk)) in at91_adc_probe()
1737 return PTR_ERR(st->per_clk); in at91_adc_probe()
1739 st->reg = devm_regulator_get(&pdev->dev, "vddana"); in at91_adc_probe()
1740 if (IS_ERR(st->reg)) in at91_adc_probe()
1741 return PTR_ERR(st->reg); in at91_adc_probe()
1743 st->vref = devm_regulator_get(&pdev->dev, "vref"); in at91_adc_probe()
1744 if (IS_ERR(st->vref)) in at91_adc_probe()
1745 return PTR_ERR(st->vref); in at91_adc_probe()
1747 ret = devm_request_irq(&pdev->dev, st->irq, at91_adc_interrupt, 0, in at91_adc_probe()
1752 ret = regulator_enable(st->reg); in at91_adc_probe()
1756 ret = regulator_enable(st->vref); in at91_adc_probe()
1760 st->vref_uv = regulator_get_voltage(st->vref); in at91_adc_probe()
1761 if (st->vref_uv <= 0) { in at91_adc_probe()
1766 at91_adc_hw_init(st); in at91_adc_probe()
1768 ret = clk_prepare_enable(st->per_clk); in at91_adc_probe()
1780 if (st->selected_trig->hw_trig) { in at91_adc_probe()
1790 st->dma_st.watermark = 1; in at91_adc_probe()
1803 if (st->selected_trig->hw_trig) in at91_adc_probe()
1805 st->selected_trig->name); in at91_adc_probe()
1808 readl_relaxed(st->base + AT91_SAMA5D2_VERSION)); in at91_adc_probe()
1815 clk_disable_unprepare(st->per_clk); in at91_adc_probe()
1817 regulator_disable(st->vref); in at91_adc_probe()
1819 regulator_disable(st->reg); in at91_adc_probe()
1826 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_remove() local
1832 clk_disable_unprepare(st->per_clk); in at91_adc_remove()
1834 regulator_disable(st->vref); in at91_adc_remove()
1835 regulator_disable(st->reg); in at91_adc_remove()
1843 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_suspend() local
1851 at91_adc_writel(st, AT91_SAMA5D2_CR, AT91_SAMA5D2_CR_SWRST); in at91_adc_suspend()
1853 clk_disable_unprepare(st->per_clk); in at91_adc_suspend()
1854 regulator_disable(st->vref); in at91_adc_suspend()
1855 regulator_disable(st->reg); in at91_adc_suspend()
1863 struct at91_adc_state *st = iio_priv(indio_dev); in at91_adc_resume() local
1870 ret = regulator_enable(st->reg); in at91_adc_resume()
1874 ret = regulator_enable(st->vref); in at91_adc_resume()
1878 ret = clk_prepare_enable(st->per_clk); in at91_adc_resume()
1882 at91_adc_hw_init(st); in at91_adc_resume()
1890 &st->touch_st.channels_bitmask, in at91_adc_resume()
1893 return at91_adc_configure_touch(st, true); in at91_adc_resume()
1895 return at91_adc_configure_trigger(st->trig, true); in at91_adc_resume()
1902 regulator_disable(st->vref); in at91_adc_resume()
1904 regulator_disable(st->reg); in at91_adc_resume()