• Home
  • Raw
  • Download

Lines Matching +full:adc +full:- +full:dev

10  * ADC<bb><c>S<sss>, where
17 * http://www.national.com/ds/DC/ADC<bb><c>S<sss>.pdf
45 #include <linux/hwmon-sysfs.h>
60 static ssize_t adcxx_read(struct device *dev, in adcxx_read() argument
63 struct spi_device *spi = to_spi_device(dev); in adcxx_read()
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()
82 dev_warn(dev, "SPI synch. transfer failed with status %d\n", in adcxx_read()
88 dev_dbg(dev, "raw value = 0x%x\n", value); in adcxx_read()
90 value = value * adc->reference >> 12; in adcxx_read()
93 mutex_unlock(&adc->lock); in adcxx_read()
97 static ssize_t adcxx_show_min(struct device *dev, in adcxx_show_min() argument
104 static ssize_t adcxx_show_max(struct device *dev, in adcxx_show_max() argument
107 struct spi_device *spi = to_spi_device(dev); in adcxx_show_max()
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()
121 static ssize_t adcxx_set_max(struct device *dev, in adcxx_set_max() argument
124 struct spi_device *spi = to_spi_device(dev); in adcxx_set_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()
141 static ssize_t adcxx_show_name(struct device *dev, struct device_attribute in adcxx_show_name() argument
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()
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()