Lines Matching refs:adc_dev
73 static u32 get_adc_step_mask(struct tiadc_device *adc_dev) in get_adc_step_mask() argument
77 step_en = ((1 << adc_dev->channels) - 1); in get_adc_step_mask()
78 step_en <<= TOTAL_STEPS - adc_dev->channels + 1; in get_adc_step_mask()
82 static u32 get_adc_chan_step_mask(struct tiadc_device *adc_dev, in get_adc_chan_step_mask() argument
87 for (i = 0; i < ARRAY_SIZE(adc_dev->channel_step); i++) { in get_adc_chan_step_mask()
88 if (chan->channel == adc_dev->channel_line[i]) { in get_adc_chan_step_mask()
91 step = adc_dev->channel_step[i]; in get_adc_chan_step_mask()
100 static u32 get_adc_step_bit(struct tiadc_device *adc_dev, int chan) in get_adc_step_bit() argument
102 return 1 << adc_dev->channel_step[chan]; in get_adc_step_bit()
107 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_step_config() local
108 struct device *dev = adc_dev->mfd_tscadc->dev; in tiadc_step_config()
123 for (i = 0; i < adc_dev->channels; i++) { in tiadc_step_config()
126 chan = adc_dev->channel_line[i]; in tiadc_step_config()
128 if (adc_dev->step_avg[i] > STEPCONFIG_AVG_16) { in tiadc_step_config()
131 adc_dev->step_avg[i] = STEPCONFIG_AVG_16; in tiadc_step_config()
134 if (adc_dev->step_avg[i]) in tiadc_step_config()
136 STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1) | in tiadc_step_config()
144 tiadc_writel(adc_dev, REG_STEPCONFIG(steps), in tiadc_step_config()
147 if (adc_dev->open_delay[i] > STEPDELAY_OPEN_MASK) { in tiadc_step_config()
150 adc_dev->open_delay[i] = STEPDELAY_OPEN_MASK; in tiadc_step_config()
153 if (adc_dev->sample_delay[i] > 0xFF) { in tiadc_step_config()
156 adc_dev->sample_delay[i] = 0xFF; in tiadc_step_config()
159 tiadc_writel(adc_dev, REG_STEPDELAY(steps), in tiadc_step_config()
160 STEPDELAY_OPEN(adc_dev->open_delay[i]) | in tiadc_step_config()
161 STEPDELAY_SAMPLE(adc_dev->sample_delay[i])); in tiadc_step_config()
163 adc_dev->channel_step[i] = steps; in tiadc_step_config()
171 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_irq_h() local
175 status = tiadc_readl(adc_dev, REG_IRQSTATUS); in tiadc_irq_h()
183 config = tiadc_readl(adc_dev, REG_CTRL); in tiadc_irq_h()
185 tiadc_writel(adc_dev, REG_CTRL, config); in tiadc_irq_h()
186 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1OVRRUN in tiadc_irq_h()
194 adc_fsm = tiadc_readl(adc_dev, REG_ADCFSM); in tiadc_irq_h()
197 tiadc_writel(adc_dev, REG_CTRL, (config | CNTRLREG_TSCSSENB)); in tiadc_irq_h()
201 tiadc_writel(adc_dev, REG_IRQCLR, IRQENB_FIFO1THRES); in tiadc_irq_h()
211 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_worker_h() local
213 u16 *data = adc_dev->data; in tiadc_worker_h()
215 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_worker_h()
218 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_worker_h()
224 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES); in tiadc_worker_h()
225 tiadc_writel(adc_dev, REG_IRQENABLE, IRQENB_FIFO1THRES); in tiadc_worker_h()
233 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_dma_rx_complete() local
234 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_dma_rx_complete()
249 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_start_dma() local
250 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_start_dma()
262 adc_dev->total_ch_enabled) - 1; in tiadc_start_dma()
284 tiadc_writel(adc_dev, REG_FIFO1THR, dma->fifo_thresh); in tiadc_start_dma()
285 tiadc_writel(adc_dev, REG_DMA1REQ, dma->fifo_thresh); in tiadc_start_dma()
286 tiadc_writel(adc_dev, REG_DMAENABLE_SET, DMA_FIFO1); in tiadc_start_dma()
293 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_preenable() local
296 tiadc_writel(adc_dev, REG_IRQCLR, (IRQENB_FIFO1THRES | in tiadc_buffer_preenable()
301 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_buffer_preenable()
303 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_buffer_preenable()
310 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_postenable() local
311 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_buffer_postenable()
317 for_each_set_bit(bit, indio_dev->active_scan_mask, adc_dev->channels) { in tiadc_buffer_postenable()
318 enb |= (get_adc_step_bit(adc_dev, bit) << 1); in tiadc_buffer_postenable()
319 adc_dev->total_ch_enabled++; in tiadc_buffer_postenable()
321 adc_dev->buffer_en_ch_steps = enb; in tiadc_buffer_postenable()
326 am335x_tsc_se_set_cache(adc_dev->mfd_tscadc, enb); in tiadc_buffer_postenable()
328 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES in tiadc_buffer_postenable()
334 tiadc_writel(adc_dev, REG_IRQENABLE, irq_enable); in tiadc_buffer_postenable()
341 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_predisable() local
342 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_buffer_predisable()
345 tiadc_writel(adc_dev, REG_IRQCLR, (IRQENB_FIFO1THRES | in tiadc_buffer_predisable()
347 am335x_tsc_se_clr(adc_dev->mfd_tscadc, adc_dev->buffer_en_ch_steps); in tiadc_buffer_predisable()
348 adc_dev->buffer_en_ch_steps = 0; in tiadc_buffer_predisable()
349 adc_dev->total_ch_enabled = 0; in tiadc_buffer_predisable()
351 tiadc_writel(adc_dev, REG_DMAENABLE_CLEAR, 0x2); in tiadc_buffer_predisable()
356 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_buffer_predisable()
358 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_buffer_predisable()
410 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_iio_buffered_hardware_remove() local
412 free_irq(adc_dev->mfd_tscadc->irq, indio_dev); in tiadc_iio_buffered_hardware_remove()
430 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_channel_init() local
445 chan->channel = adc_dev->channel_line[i]; in tiadc_channel_init()
468 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_read_raw() local
479 step_en = get_adc_chan_step_mask(adc_dev, chan); in tiadc_read_raw()
483 mutex_lock(&adc_dev->fifo1_lock); in tiadc_read_raw()
484 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_read_raw()
486 tiadc_readl(adc_dev, REG_FIFO1); in tiadc_read_raw()
488 am335x_tsc_se_set_once(adc_dev->mfd_tscadc, step_en); in tiadc_read_raw()
491 (IDLE_TIMEOUT * adc_dev->channels); in tiadc_read_raw()
494 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_read_raw()
499 am335x_tsc_se_adc_done(adc_dev->mfd_tscadc); in tiadc_read_raw()
504 map_val = adc_dev->channel_step[chan->scan_index]; in tiadc_read_raw()
514 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_read_raw()
524 am335x_tsc_se_adc_done(adc_dev->mfd_tscadc); in tiadc_read_raw()
530 mutex_unlock(&adc_dev->fifo1_lock); in tiadc_read_raw()
539 struct tiadc_device *adc_dev) in tiadc_request_dma() argument
541 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_request_dma()
547 dma->conf.src_addr = adc_dev->mfd_tscadc->tscadc_phys_base + REG_FIFO1; in tiadc_request_dma()
553 dma->chan = dma_request_chan(adc_dev->mfd_tscadc->dev, "fifo1"); in tiadc_request_dma()
574 struct tiadc_device *adc_dev) in tiadc_parse_dt() argument
583 adc_dev->channel_line[channels] = val; in tiadc_parse_dt()
586 adc_dev->open_delay[channels] = STEPCONFIG_OPENDLY; in tiadc_parse_dt()
587 adc_dev->sample_delay[channels] = STEPCONFIG_SAMPLEDLY; in tiadc_parse_dt()
588 adc_dev->step_avg[channels] = 16; in tiadc_parse_dt()
594 adc_dev->step_avg, channels); in tiadc_parse_dt()
596 adc_dev->open_delay, channels); in tiadc_parse_dt()
598 adc_dev->sample_delay, channels); in tiadc_parse_dt()
600 adc_dev->channels = channels; in tiadc_parse_dt()
607 struct tiadc_device *adc_dev; in tiadc_probe() local
616 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc_dev)); in tiadc_probe()
621 adc_dev = iio_priv(indio_dev); in tiadc_probe()
623 adc_dev->mfd_tscadc = ti_tscadc_dev_get(pdev); in tiadc_probe()
624 tiadc_parse_dt(pdev, adc_dev); in tiadc_probe()
632 tiadc_writel(adc_dev, REG_FIFO1THR, FIFO1_THRESHOLD); in tiadc_probe()
633 mutex_init(&adc_dev->fifo1_lock); in tiadc_probe()
635 err = tiadc_channel_init(indio_dev, adc_dev->channels); in tiadc_probe()
642 adc_dev->mfd_tscadc->irq, in tiadc_probe()
655 err = tiadc_request_dma(pdev, adc_dev); in tiadc_probe()
673 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_remove() local
674 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_remove()
686 step_en = get_adc_step_mask(adc_dev); in tiadc_remove()
687 am335x_tsc_se_clr(adc_dev->mfd_tscadc, step_en); in tiadc_remove()
695 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_suspend() local
701 idle = tiadc_readl(adc_dev, REG_CTRL); in tiadc_suspend()
703 tiadc_writel(adc_dev, REG_CTRL, (idle | in tiadc_suspend()
713 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_resume() local
717 restore = tiadc_readl(adc_dev, REG_CTRL); in tiadc_resume()
719 tiadc_writel(adc_dev, REG_CTRL, restore); in tiadc_resume()
722 am335x_tsc_se_set_cache(adc_dev->mfd_tscadc, in tiadc_resume()
723 adc_dev->buffer_en_ch_steps); in tiadc_resume()