Lines Matching +full:convert +full:- +full:channels
1 // SPDX-License-Identifier: GPL-2.0-or-later
23 /* Channels */
88 complete(&gpadc->complete); in da9150_gpadc_irq()
98 mutex_lock(&gpadc->lock); in da9150_gpadc_read_adc()
101 da9150_reg_write(gpadc->da9150, DA9150_GPADC_MAN, in da9150_gpadc_read_adc()
105 /* Consume left-over completion from a previous timeout */ in da9150_gpadc_read_adc()
106 try_wait_for_completion(&gpadc->complete); in da9150_gpadc_read_adc()
109 wait_for_completion_timeout(&gpadc->complete, msecs_to_jiffies(5)); in da9150_gpadc_read_adc()
112 da9150_bulk_read(gpadc->da9150, DA9150_GPADC_RES_A, 2, result_regs); in da9150_gpadc_read_adc()
114 mutex_unlock(&gpadc->lock); in da9150_gpadc_read_adc()
118 dev_err(gpadc->dev, "Timeout on channel %d of GPADC\n", in da9150_gpadc_read_adc()
120 return -ETIMEDOUT; in da9150_gpadc_read_adc()
123 /* LSBs - 2 bits */ in da9150_gpadc_read_adc()
126 /* MSBs - 8 bits */ in da9150_gpadc_read_adc()
134 /* Convert to mV */ in da9150_gpadc_gpio_6v_voltage_now()
140 /* Convert to mA */ in da9150_gpadc_ibus_current_avg()
146 /* Convert to mV */ in da9150_gpadc_vbus_21v_voltage_now()
152 /* Convert to mV */ in da9150_gpadc_vsys_6v_voltage_now()
182 /* No processing for other channels so return raw value */ in da9150_gpadc_read_processed()
203 return -EINVAL; in da9150_gpadc_read_scale()
215 *val = -144; in da9150_gpadc_read_offset()
218 return -EINVAL; in da9150_gpadc_read_offset()
228 if ((chan->channel < DA9150_GPADC_CHAN_GPIOA) || in da9150_gpadc_read_raw()
229 (chan->channel > DA9150_GPADC_CHAN_TJUNC_OVP)) in da9150_gpadc_read_raw()
230 return -EINVAL; in da9150_gpadc_read_raw()
235 return da9150_gpadc_read_processed(gpadc, chan->channel, in da9150_gpadc_read_raw()
236 chan->address, val); in da9150_gpadc_read_raw()
238 return da9150_gpadc_read_scale(chan->channel, val, val2); in da9150_gpadc_read_raw()
240 return da9150_gpadc_read_offset(chan->channel, val); in da9150_gpadc_read_raw()
242 return -EINVAL; in da9150_gpadc_read_raw()
276 /* Supported channels */
293 /* Default maps used by da9150-charger */
295 IIO_MAP("IBUS", "da9150-charger", "CHAN_IBUS"),
296 IIO_MAP("VBUS", "da9150-charger", "CHAN_VBUS"),
297 IIO_MAP("TJUNC_CORE", "da9150-charger", "CHAN_TJUNC"),
298 IIO_MAP("VBAT", "da9150-charger", "CHAN_VBAT"),
304 struct device *dev = &pdev->dev; in da9150_gpadc_probe()
305 struct da9150 *da9150 = dev_get_drvdata(dev->parent); in da9150_gpadc_probe()
312 dev_err(&pdev->dev, "Failed to allocate IIO device\n"); in da9150_gpadc_probe()
313 return -ENOMEM; in da9150_gpadc_probe()
317 gpadc->da9150 = da9150; in da9150_gpadc_probe()
318 gpadc->dev = dev; in da9150_gpadc_probe()
319 mutex_init(&gpadc->lock); in da9150_gpadc_probe()
320 init_completion(&gpadc->complete); in da9150_gpadc_probe()
333 ret = devm_iio_map_array_register(&pdev->dev, indio_dev, da9150_gpadc_default_maps); in da9150_gpadc_probe()
339 indio_dev->name = dev_name(dev); in da9150_gpadc_probe()
340 indio_dev->info = &da9150_gpadc_info; in da9150_gpadc_probe()
341 indio_dev->modes = INDIO_DIRECT_MODE; in da9150_gpadc_probe()
342 indio_dev->channels = da9150_gpadc_channels; in da9150_gpadc_probe()
343 indio_dev->num_channels = ARRAY_SIZE(da9150_gpadc_channels); in da9150_gpadc_probe()
345 return devm_iio_device_register(&pdev->dev, indio_dev); in da9150_gpadc_probe()
350 .name = "da9150-gpadc",