ad7887.c (27eb2c4b3d3e13f376a359e293c212a2e9407af5) ad7887.c (82429e0d33ece550378852539827916cda0a6b69)
1/*
2 * AD7887 SPI ADC driver
3 *
4 * Copyright 2010-2011 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2.
7 */
8

--- 223 unchanged lines hidden (view full) ---

232 .read_raw = &ad7887_read_raw,
233 .driver_module = THIS_MODULE,
234};
235
236static int ad7887_probe(struct spi_device *spi)
237{
238 struct ad7887_platform_data *pdata = spi->dev.platform_data;
239 struct ad7887_state *st;
1/*
2 * AD7887 SPI ADC driver
3 *
4 * Copyright 2010-2011 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2.
7 */
8

--- 223 unchanged lines hidden (view full) ---

232 .read_raw = &ad7887_read_raw,
233 .driver_module = THIS_MODULE,
234};
235
236static int ad7887_probe(struct spi_device *spi)
237{
238 struct ad7887_platform_data *pdata = spi->dev.platform_data;
239 struct ad7887_state *st;
240 struct iio_dev *indio_dev = iio_device_alloc(sizeof(*st));
240 struct iio_dev *indio_dev;
241 uint8_t mode;
242 int ret;
243
241 uint8_t mode;
242 int ret;
243
244 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
244 if (indio_dev == NULL)
245 return -ENOMEM;
246
247 st = iio_priv(indio_dev);
248
249 if (!pdata || !pdata->use_onchip_ref) {
245 if (indio_dev == NULL)
246 return -ENOMEM;
247
248 st = iio_priv(indio_dev);
249
250 if (!pdata || !pdata->use_onchip_ref) {
250 st->reg = regulator_get(&spi->dev, "vref");
251 if (IS_ERR(st->reg)) {
252 ret = PTR_ERR(st->reg);
253 goto error_free;
254 }
251 st->reg = devm_regulator_get(&spi->dev, "vref");
252 if (IS_ERR(st->reg))
253 return PTR_ERR(st->reg);
255
256 ret = regulator_enable(st->reg);
257 if (ret)
254
255 ret = regulator_enable(st->reg);
256 if (ret)
258 goto error_put_reg;
257 return ret;
259 }
260
261 st->chip_info =
262 &ad7887_chip_info_tbl[spi_get_device_id(spi)->driver_data];
263
264 spi_set_drvdata(spi, indio_dev);
265 st->spi = spi;
266

--- 59 unchanged lines hidden (view full) ---

326 goto error_unregister_ring;
327
328 return 0;
329error_unregister_ring:
330 iio_triggered_buffer_cleanup(indio_dev);
331error_disable_reg:
332 if (st->reg)
333 regulator_disable(st->reg);
258 }
259
260 st->chip_info =
261 &ad7887_chip_info_tbl[spi_get_device_id(spi)->driver_data];
262
263 spi_set_drvdata(spi, indio_dev);
264 st->spi = spi;
265

--- 59 unchanged lines hidden (view full) ---

325 goto error_unregister_ring;
326
327 return 0;
328error_unregister_ring:
329 iio_triggered_buffer_cleanup(indio_dev);
330error_disable_reg:
331 if (st->reg)
332 regulator_disable(st->reg);
334error_put_reg:
335 if (st->reg)
336 regulator_put(st->reg);
337error_free:
338 iio_device_free(indio_dev);
339
340 return ret;
341}
342
343static int ad7887_remove(struct spi_device *spi)
344{
345 struct iio_dev *indio_dev = spi_get_drvdata(spi);
346 struct ad7887_state *st = iio_priv(indio_dev);
347
348 iio_device_unregister(indio_dev);
349 iio_triggered_buffer_cleanup(indio_dev);
333
334 return ret;
335}
336
337static int ad7887_remove(struct spi_device *spi)
338{
339 struct iio_dev *indio_dev = spi_get_drvdata(spi);
340 struct ad7887_state *st = iio_priv(indio_dev);
341
342 iio_device_unregister(indio_dev);
343 iio_triggered_buffer_cleanup(indio_dev);
350 if (st->reg) {
344 if (st->reg)
351 regulator_disable(st->reg);
345 regulator_disable(st->reg);
352 regulator_put(st->reg);
353 }
354 iio_device_free(indio_dev);
355
356 return 0;
357}
358
359static const struct spi_device_id ad7887_id[] = {
360 {"ad7887", ID_AD7887},
361 {}
362};

--- 16 unchanged lines hidden ---
346
347 return 0;
348}
349
350static const struct spi_device_id ad7887_id[] = {
351 {"ad7887", ID_AD7887},
352 {}
353};

--- 16 unchanged lines hidden ---