Lines Matching defs:adc_dev
67 static inline void cc10001_adc_write_reg(struct cc10001_adc_device *adc_dev,
70 writel(val, adc_dev->reg_base + reg);
73 static inline u32 cc10001_adc_read_reg(struct cc10001_adc_device *adc_dev,
76 return readl(adc_dev->reg_base + reg);
79 static void cc10001_adc_power_up(struct cc10001_adc_device *adc_dev)
81 cc10001_adc_write_reg(adc_dev, CC10001_ADC_POWER_DOWN, 0);
82 ndelay(adc_dev->start_delay_ns);
85 static void cc10001_adc_power_down(struct cc10001_adc_device *adc_dev)
87 cc10001_adc_write_reg(adc_dev, CC10001_ADC_POWER_DOWN,
91 static void cc10001_adc_start(struct cc10001_adc_device *adc_dev,
98 cc10001_adc_write_reg(adc_dev, CC10001_ADC_CONFIG, val);
101 val = cc10001_adc_read_reg(adc_dev, CC10001_ADC_CONFIG);
103 cc10001_adc_write_reg(adc_dev, CC10001_ADC_CONFIG, val);
110 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
113 while (!(cc10001_adc_read_reg(adc_dev, CC10001_ADC_EOC) &
122 while ((cc10001_adc_read_reg(adc_dev, CC10001_ADC_CHSEL_SAMPLED) &
131 return cc10001_adc_read_reg(adc_dev, CC10001_ADC_DDATA_OUT) &
137 struct cc10001_adc_device *adc_dev;
148 adc_dev = iio_priv(indio_dev);
149 data = adc_dev->buf;
151 mutex_lock(&adc_dev->lock);
153 if (!adc_dev->shared)
154 cc10001_adc_power_up(adc_dev);
157 delay_ns = adc_dev->eoc_delay_ns / CC10001_MAX_POLL_COUNT;
165 cc10001_adc_start(adc_dev, channel);
178 if (!adc_dev->shared)
179 cc10001_adc_power_down(adc_dev);
181 mutex_unlock(&adc_dev->lock);
194 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
198 if (!adc_dev->shared)
199 cc10001_adc_power_up(adc_dev);
202 delay_ns = adc_dev->eoc_delay_ns / CC10001_MAX_POLL_COUNT;
204 cc10001_adc_start(adc_dev, chan->channel);
208 if (!adc_dev->shared)
209 cc10001_adc_power_down(adc_dev);
218 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
225 mutex_lock(&adc_dev->lock);
227 mutex_unlock(&adc_dev->lock);
234 ret = regulator_get_voltage(adc_dev->reg);
250 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
252 kfree(adc_dev->buf);
253 adc_dev->buf = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
254 if (!adc_dev->buf)
311 struct cc10001_adc_device *adc_dev;
317 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*adc_dev));
321 adc_dev = iio_priv(indio_dev);
325 adc_dev->shared = true;
329 adc_dev->reg = devm_regulator_get(&pdev->dev, "vref");
330 if (IS_ERR(adc_dev->reg))
331 return PTR_ERR(adc_dev->reg);
333 ret = regulator_enable(adc_dev->reg);
341 adc_dev->reg_base = devm_platform_ioremap_resource(pdev, 0);
342 if (IS_ERR(adc_dev->reg_base)) {
343 ret = PTR_ERR(adc_dev->reg_base);
347 adc_dev->adc_clk = devm_clk_get(&pdev->dev, "adc");
348 if (IS_ERR(adc_dev->adc_clk)) {
350 ret = PTR_ERR(adc_dev->adc_clk);
354 ret = clk_prepare_enable(adc_dev->adc_clk);
360 adc_clk_rate = clk_get_rate(adc_dev->adc_clk);
367 adc_dev->eoc_delay_ns = NSEC_PER_SEC / adc_clk_rate;
368 adc_dev->start_delay_ns = adc_dev->eoc_delay_ns * CC10001_WAIT_CYCLES;
375 if (adc_dev->shared)
376 cc10001_adc_power_up(adc_dev);
383 mutex_init(&adc_dev->lock);
401 clk_disable_unprepare(adc_dev->adc_clk);
403 regulator_disable(adc_dev->reg);
410 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
412 cc10001_adc_power_down(adc_dev);
415 clk_disable_unprepare(adc_dev->adc_clk);
416 regulator_disable(adc_dev->reg);