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()
150 if (adc_dev->open_delay[i] > STEPDELAY_OPEN_MASK) { in tiadc_step_config()
153 adc_dev->open_delay[i] = STEPDELAY_OPEN_MASK; in tiadc_step_config()
156 if (adc_dev->sample_delay[i] > 0xFF) { in tiadc_step_config()
159 adc_dev->sample_delay[i] = 0xFF; in tiadc_step_config()
162 tiadc_writel(adc_dev, REG_STEPDELAY(steps), in tiadc_step_config()
163 STEPDELAY_OPEN(adc_dev->open_delay[i]) | in tiadc_step_config()
164 STEPDELAY_SAMPLE(adc_dev->sample_delay[i])); in tiadc_step_config()
166 adc_dev->channel_step[i] = steps; in tiadc_step_config()
174 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_irq_h() local
178 status = tiadc_readl(adc_dev, REG_IRQSTATUS); in tiadc_irq_h()
186 config = tiadc_readl(adc_dev, REG_CTRL); in tiadc_irq_h()
188 tiadc_writel(adc_dev, REG_CTRL, config); in tiadc_irq_h()
189 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1OVRRUN in tiadc_irq_h()
197 adc_fsm = tiadc_readl(adc_dev, REG_ADCFSM); in tiadc_irq_h()
200 tiadc_writel(adc_dev, REG_CTRL, (config | CNTRLREG_TSCSSENB)); in tiadc_irq_h()
204 tiadc_writel(adc_dev, REG_IRQCLR, IRQENB_FIFO1THRES); in tiadc_irq_h()
214 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_worker_h() local
216 u16 *data = adc_dev->data; in tiadc_worker_h()
218 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_worker_h()
221 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_worker_h()
227 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES); in tiadc_worker_h()
228 tiadc_writel(adc_dev, REG_IRQENABLE, IRQENB_FIFO1THRES); in tiadc_worker_h()
236 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_dma_rx_complete() local
237 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_dma_rx_complete()
252 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_start_dma() local
253 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_start_dma()
265 adc_dev->total_ch_enabled) - 1; in tiadc_start_dma()
287 tiadc_writel(adc_dev, REG_FIFO1THR, dma->fifo_thresh); in tiadc_start_dma()
288 tiadc_writel(adc_dev, REG_DMA1REQ, dma->fifo_thresh); in tiadc_start_dma()
289 tiadc_writel(adc_dev, REG_DMAENABLE_SET, DMA_FIFO1); in tiadc_start_dma()
296 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_preenable() local
299 tiadc_writel(adc_dev, REG_IRQCLR, (IRQENB_FIFO1THRES | in tiadc_buffer_preenable()
304 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_buffer_preenable()
306 tiadc_readl(adc_dev, REG_FIFO1); in tiadc_buffer_preenable()
313 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_postenable() local
314 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_buffer_postenable()
320 for_each_set_bit(bit, indio_dev->active_scan_mask, adc_dev->channels) { in tiadc_buffer_postenable()
321 enb |= (get_adc_step_bit(adc_dev, bit) << 1); in tiadc_buffer_postenable()
322 adc_dev->total_ch_enabled++; in tiadc_buffer_postenable()
324 adc_dev->buffer_en_ch_steps = enb; in tiadc_buffer_postenable()
329 am335x_tsc_se_set_cache(adc_dev->mfd_tscadc, enb); in tiadc_buffer_postenable()
331 tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES in tiadc_buffer_postenable()
337 tiadc_writel(adc_dev, REG_IRQENABLE, irq_enable); in tiadc_buffer_postenable()
344 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_buffer_predisable() local
345 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_buffer_predisable()
348 tiadc_writel(adc_dev, REG_IRQCLR, (IRQENB_FIFO1THRES | in tiadc_buffer_predisable()
350 am335x_tsc_se_clr(adc_dev->mfd_tscadc, adc_dev->buffer_en_ch_steps); in tiadc_buffer_predisable()
351 adc_dev->buffer_en_ch_steps = 0; in tiadc_buffer_predisable()
352 adc_dev->total_ch_enabled = 0; in tiadc_buffer_predisable()
354 tiadc_writel(adc_dev, REG_DMAENABLE_CLEAR, 0x2); in tiadc_buffer_predisable()
359 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_buffer_predisable()
361 tiadc_readl(adc_dev, REG_FIFO1); in tiadc_buffer_predisable()
414 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_channel_init() local
430 chan->channel = adc_dev->channel_line[i]; in tiadc_channel_init()
448 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_read_raw() local
459 step_en = get_adc_chan_step_mask(adc_dev, chan); in tiadc_read_raw()
463 mutex_lock(&adc_dev->fifo1_lock); in tiadc_read_raw()
464 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_read_raw()
466 tiadc_readl(adc_dev, REG_FIFO1); in tiadc_read_raw()
468 am335x_tsc_se_set_once(adc_dev->mfd_tscadc, step_en); in tiadc_read_raw()
471 (IDLE_TIMEOUT * adc_dev->channels); in tiadc_read_raw()
474 fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); in tiadc_read_raw()
479 am335x_tsc_se_adc_done(adc_dev->mfd_tscadc); in tiadc_read_raw()
484 map_val = adc_dev->channel_step[chan->scan_index]; in tiadc_read_raw()
494 read = tiadc_readl(adc_dev, REG_FIFO1); in tiadc_read_raw()
504 am335x_tsc_se_adc_done(adc_dev->mfd_tscadc); in tiadc_read_raw()
510 mutex_unlock(&adc_dev->fifo1_lock); in tiadc_read_raw()
519 struct tiadc_device *adc_dev) in tiadc_request_dma() argument
521 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_request_dma()
527 dma->conf.src_addr = adc_dev->mfd_tscadc->tscadc_phys_base + REG_FIFO1; in tiadc_request_dma()
533 dma->chan = dma_request_chan(adc_dev->mfd_tscadc->dev, "fifo1"); in tiadc_request_dma()
554 struct tiadc_device *adc_dev) in tiadc_parse_dt() argument
563 adc_dev->channel_line[channels] = val; in tiadc_parse_dt()
566 adc_dev->open_delay[channels] = STEPCONFIG_OPENDLY; in tiadc_parse_dt()
567 adc_dev->sample_delay[channels] = STEPCONFIG_SAMPLEDLY; in tiadc_parse_dt()
568 adc_dev->step_avg[channels] = 16; in tiadc_parse_dt()
574 adc_dev->step_avg, channels); in tiadc_parse_dt()
576 adc_dev->open_delay, channels); in tiadc_parse_dt()
578 adc_dev->sample_delay, channels); in tiadc_parse_dt()
580 adc_dev->channels = channels; in tiadc_parse_dt()
587 struct tiadc_device *adc_dev; in tiadc_probe() local
596 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc_dev)); in tiadc_probe()
601 adc_dev = iio_priv(indio_dev); in tiadc_probe()
603 adc_dev->mfd_tscadc = ti_tscadc_dev_get(pdev); in tiadc_probe()
604 tiadc_parse_dt(pdev, adc_dev); in tiadc_probe()
611 tiadc_writel(adc_dev, REG_FIFO1THR, FIFO1_THRESHOLD); in tiadc_probe()
612 mutex_init(&adc_dev->fifo1_lock); in tiadc_probe()
614 err = tiadc_channel_init(&pdev->dev, indio_dev, adc_dev->channels); in tiadc_probe()
621 adc_dev->mfd_tscadc->irq, in tiadc_probe()
634 err = tiadc_request_dma(pdev, adc_dev); in tiadc_probe()
650 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_remove() local
651 struct tiadc_dma *dma = &adc_dev->dma; in tiadc_remove()
661 step_en = get_adc_step_mask(adc_dev); in tiadc_remove()
662 am335x_tsc_se_clr(adc_dev->mfd_tscadc, step_en); in tiadc_remove()
670 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_suspend() local
673 idle = tiadc_readl(adc_dev, REG_CTRL); in tiadc_suspend()
675 tiadc_writel(adc_dev, REG_CTRL, (idle | in tiadc_suspend()
684 struct tiadc_device *adc_dev = iio_priv(indio_dev); in tiadc_resume() local
688 restore = tiadc_readl(adc_dev, REG_CTRL); in tiadc_resume()
690 tiadc_writel(adc_dev, REG_CTRL, restore); in tiadc_resume()
693 am335x_tsc_se_set_cache(adc_dev->mfd_tscadc, in tiadc_resume()
694 adc_dev->buffer_en_ch_steps); in tiadc_resume()