Lines Matching +full:adc +full:- +full:channels
10 * ADC<bb><c>S<sss>, where
12 * * c is the number of channels (1, 2, 4, 8)
17 * http://www.national.com/ds/DC/ADC<bb><c>S<sss>.pdf
45 #include <linux/hwmon-sysfs.h>
55 u32 channels; member
65 struct adcxx *adc = spi_get_drvdata(spi); in adcxx_read() local
71 if (mutex_lock_interruptible(&adc->lock)) in adcxx_read()
72 return -ERESTARTSYS; in adcxx_read()
74 if (adc->channels == 1) { in adcxx_read()
77 tx_buf[0] = attr->index << 3; /* other bits are don't care */ in adcxx_read()
90 value = value * adc->reference >> 12; in adcxx_read()
93 mutex_unlock(&adc->lock); in adcxx_read()
108 struct adcxx *adc = spi_get_drvdata(spi); in adcxx_show_max() local
111 if (mutex_lock_interruptible(&adc->lock)) in adcxx_show_max()
112 return -ERESTARTSYS; in adcxx_show_max()
114 reference = adc->reference; in adcxx_show_max()
116 mutex_unlock(&adc->lock); in adcxx_show_max()
125 struct adcxx *adc = spi_get_drvdata(spi); in adcxx_set_max() local
129 return -EINVAL; in adcxx_set_max()
131 if (mutex_lock_interruptible(&adc->lock)) in adcxx_set_max()
132 return -ERESTARTSYS; in adcxx_set_max()
134 adc->reference = value; in adcxx_set_max()
136 mutex_unlock(&adc->lock); in adcxx_set_max()
144 return sprintf(buf, "%s\n", to_spi_device(dev)->modalias); in adcxx_show_name()
162 /*----------------------------------------------------------------------*/
166 int channels = spi_get_device_id(spi)->driver_data; in adcxx_probe() local
167 struct adcxx *adc; in adcxx_probe() local
171 adc = devm_kzalloc(&spi->dev, sizeof(*adc), GFP_KERNEL); in adcxx_probe()
172 if (!adc) in adcxx_probe()
173 return -ENOMEM; in adcxx_probe()
176 adc->reference = 3300; in adcxx_probe()
177 adc->channels = channels; in adcxx_probe()
178 mutex_init(&adc->lock); in adcxx_probe()
180 mutex_lock(&adc->lock); in adcxx_probe()
182 spi_set_drvdata(spi, adc); in adcxx_probe()
184 for (i = 0; i < 3 + adc->channels; i++) { in adcxx_probe()
185 status = device_create_file(&spi->dev, &ad_input[i].dev_attr); in adcxx_probe()
187 dev_err(&spi->dev, "device_create_file failed.\n"); in adcxx_probe()
192 adc->hwmon_dev = hwmon_device_register(&spi->dev); in adcxx_probe()
193 if (IS_ERR(adc->hwmon_dev)) { in adcxx_probe()
194 dev_err(&spi->dev, "hwmon_device_register failed.\n"); in adcxx_probe()
195 status = PTR_ERR(adc->hwmon_dev); in adcxx_probe()
199 mutex_unlock(&adc->lock); in adcxx_probe()
203 for (i--; i >= 0; i--) in adcxx_probe()
204 device_remove_file(&spi->dev, &ad_input[i].dev_attr); in adcxx_probe()
206 mutex_unlock(&adc->lock); in adcxx_probe()
212 struct adcxx *adc = spi_get_drvdata(spi); in adcxx_remove() local
215 mutex_lock(&adc->lock); in adcxx_remove()
216 hwmon_device_unregister(adc->hwmon_dev); in adcxx_remove()
217 for (i = 0; i < 3 + adc->channels; i++) in adcxx_remove()
218 device_remove_file(&spi->dev, &ad_input[i].dev_attr); in adcxx_remove()
220 mutex_unlock(&adc->lock); in adcxx_remove()