Lines Matching refs:info
62 static int sun20i_gpadc_adc_read(struct sun20i_gpadc_iio *info,
68 mutex_lock(&info->lock);
70 reinit_completion(&info->completion);
72 if (info->last_channel != chan->channel) {
73 info->last_channel = chan->channel;
77 info->regs + SUN20I_GPADC_CS_EN);
81 info->regs + SUN20I_GPADC_DATA_INTC);
85 ctrl = readl(info->regs + SUN20I_GPADC_CTRL);
87 writel(ctrl, info->regs + SUN20I_GPADC_CTRL);
96 if (!wait_for_completion_timeout(&info->completion, msecs_to_jiffies(10))) {
102 *val = readl(info->regs + SUN20I_GPADC_CH_DATA(chan->channel));
105 mutex_unlock(&info->lock);
114 struct sun20i_gpadc_iio *info = iio_priv(indio_dev);
118 return sun20i_gpadc_adc_read(info, chan, val);
131 struct sun20i_gpadc_iio *info = data;
134 writel(GENMASK(31, 0), info->regs + SUN20I_GPADC_DATA_INTS);
136 complete(&info->completion);
196 struct sun20i_gpadc_iio *info;
202 indio_dev = devm_iio_device_alloc(dev, sizeof(*info));
206 info = iio_priv(indio_dev);
207 info->last_channel = -1;
209 mutex_init(&info->lock);
210 init_completion(&info->completion);
216 indio_dev->info = &sun20i_gpadc_iio_info;
219 info->regs = devm_platform_ioremap_resource(pdev, 0);
220 if (IS_ERR(info->regs))
221 return PTR_ERR(info->regs);
244 dev_name(dev), info);
250 info->regs + SUN20I_GPADC_CTRL);