Lines Matching defs:adc_dev
66 static inline void cc10001_adc_write_reg(struct cc10001_adc_device *adc_dev,
69 writel(val, adc_dev->reg_base + reg);
72 static inline u32 cc10001_adc_read_reg(struct cc10001_adc_device *adc_dev,
75 return readl(adc_dev->reg_base + reg);
78 static void cc10001_adc_power_up(struct cc10001_adc_device *adc_dev)
80 cc10001_adc_write_reg(adc_dev, CC10001_ADC_POWER_DOWN, 0);
81 ndelay(adc_dev->start_delay_ns);
84 static void cc10001_adc_power_down(struct cc10001_adc_device *adc_dev)
86 cc10001_adc_write_reg(adc_dev, CC10001_ADC_POWER_DOWN,
90 static void cc10001_adc_start(struct cc10001_adc_device *adc_dev,
97 cc10001_adc_write_reg(adc_dev, CC10001_ADC_CONFIG, val);
100 val = cc10001_adc_read_reg(adc_dev, CC10001_ADC_CONFIG);
102 cc10001_adc_write_reg(adc_dev, CC10001_ADC_CONFIG, val);
109 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
112 while (!(cc10001_adc_read_reg(adc_dev, CC10001_ADC_EOC) &
121 while ((cc10001_adc_read_reg(adc_dev, CC10001_ADC_CHSEL_SAMPLED) &
130 return cc10001_adc_read_reg(adc_dev, CC10001_ADC_DDATA_OUT) &
136 struct cc10001_adc_device *adc_dev;
147 adc_dev = iio_priv(indio_dev);
148 data = adc_dev->buf;
150 mutex_lock(&adc_dev->lock);
152 if (!adc_dev->shared)
153 cc10001_adc_power_up(adc_dev);
156 delay_ns = adc_dev->eoc_delay_ns / CC10001_MAX_POLL_COUNT;
164 cc10001_adc_start(adc_dev, channel);
177 if (!adc_dev->shared)
178 cc10001_adc_power_down(adc_dev);
180 mutex_unlock(&adc_dev->lock);
193 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
197 if (!adc_dev->shared)
198 cc10001_adc_power_up(adc_dev);
201 delay_ns = adc_dev->eoc_delay_ns / CC10001_MAX_POLL_COUNT;
203 cc10001_adc_start(adc_dev, chan->channel);
207 if (!adc_dev->shared)
208 cc10001_adc_power_down(adc_dev);
217 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
224 mutex_lock(&adc_dev->lock);
226 mutex_unlock(&adc_dev->lock);
233 ret = regulator_get_voltage(adc_dev->reg);
249 struct cc10001_adc_device *adc_dev = iio_priv(indio_dev);
251 kfree(adc_dev->buf);
252 adc_dev->buf = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
253 if (!adc_dev->buf)
321 struct cc10001_adc_device *adc_dev;
327 indio_dev = devm_iio_device_alloc(dev, sizeof(*adc_dev));
331 adc_dev = iio_priv(indio_dev);
335 adc_dev->shared = true;
339 adc_dev->reg = devm_regulator_get(dev, "vref");
340 if (IS_ERR(adc_dev->reg))
341 return PTR_ERR(adc_dev->reg);
343 ret = regulator_enable(adc_dev->reg);
347 ret = devm_add_action_or_reset(dev, cc10001_reg_disable, adc_dev->reg);
355 adc_dev->reg_base = devm_platform_ioremap_resource(pdev, 0);
356 if (IS_ERR(adc_dev->reg_base))
357 return PTR_ERR(adc_dev->reg_base);
359 adc_dev->adc_clk = devm_clk_get_enabled(dev, "adc");
360 if (IS_ERR(adc_dev->adc_clk)) {
362 return PTR_ERR(adc_dev->adc_clk);
365 adc_clk_rate = clk_get_rate(adc_dev->adc_clk);
371 adc_dev->eoc_delay_ns = NSEC_PER_SEC / adc_clk_rate;
372 adc_dev->start_delay_ns = adc_dev->eoc_delay_ns * CC10001_WAIT_CYCLES;
379 if (adc_dev->shared)
380 cc10001_adc_power_up(adc_dev);
382 ret = devm_add_action_or_reset(dev, cc10001_pd_cb, adc_dev);
390 mutex_init(&adc_dev->lock);