Lines Matching refs:muxadc
61 static int gpio_muxadc_chan_read_by_index(struct gpio_muxadc *muxadc, in gpio_muxadc_chan_read_by_index() argument
68 chan_data = &muxadc->data->chans[index]; in gpio_muxadc_chan_read_by_index()
69 for (i = 0; i < muxadc->gpios->ndescs; i++) { in gpio_muxadc_chan_read_by_index()
70 struct gpio_desc *gpiod = muxadc->gpios->desc[i]; in gpio_muxadc_chan_read_by_index()
77 saradc_chan = &muxadc->adc_chans[saradc_chan_id]; in gpio_muxadc_chan_read_by_index()
85 struct gpio_muxadc *muxadc = iio_priv(indio_dev); in gpio_muxadc_read_raw() local
90 ret = gpio_muxadc_chan_read_by_index(muxadc, in gpio_muxadc_read_raw()
153 struct gpio_muxadc *muxadc; in gpio_muxadc_probe() local
160 indio_dev = devm_iio_device_alloc(dev, sizeof(*muxadc)); in gpio_muxadc_probe()
164 muxadc = iio_priv(indio_dev); in gpio_muxadc_probe()
171 muxadc->data = match->data; in gpio_muxadc_probe()
173 muxadc->gpios = devm_gpiod_get_array(dev, "switch", GPIOD_OUT_LOW); in gpio_muxadc_probe()
174 if (IS_ERR(muxadc->gpios)) { in gpio_muxadc_probe()
176 return PTR_ERR(muxadc->gpios); in gpio_muxadc_probe()
179 muxadc->adc_chans = iio_channel_get_all(dev); in gpio_muxadc_probe()
180 if (IS_ERR(muxadc->adc_chans)) in gpio_muxadc_probe()
181 return PTR_ERR(muxadc->adc_chans); in gpio_muxadc_probe()
187 while (muxadc->adc_chans[nr_adc_chans].indio_dev) in gpio_muxadc_probe()
189 if (muxadc->data->saradc_nr_chans != nr_adc_chans) { in gpio_muxadc_probe()
194 muxadc->nr_chans = of_property_count_strings(np, "labels"); in gpio_muxadc_probe()
195 if (muxadc->nr_chans != muxadc->data->nr_chans) { in gpio_muxadc_probe()
197 muxadc->nr_chans); in gpio_muxadc_probe()
201 muxadc->muxchans = devm_kcalloc(dev, muxadc->nr_chans, in gpio_muxadc_probe()
204 if (!muxadc->muxchans) in gpio_muxadc_probe()
207 for (i = 0; i < muxadc->nr_chans; i++) { in gpio_muxadc_probe()
212 muxadc->muxchans[i].type = IIO_VOLTAGE; in gpio_muxadc_probe()
213 muxadc->muxchans[i].channel = i; in gpio_muxadc_probe()
214 muxadc->muxchans[i].info_mask_separate = BIT(IIO_CHAN_INFO_RAW); in gpio_muxadc_probe()
216 &muxadc->muxchans[i].extend_name); in gpio_muxadc_probe()
224 indio_dev->channels = muxadc->muxchans; in gpio_muxadc_probe()
225 indio_dev->num_channels = muxadc->nr_chans; in gpio_muxadc_probe()