diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-09-02 12:14:40 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-06 19:02:01 -0400 |
commit | 26d25ae3f0d8ffe350aacc75b71198d6b35bd1f4 (patch) | |
tree | 8b7867c7cfb8202e5313c462256ebf7e9932a1f1 /drivers/staging/iio/meter/ade7754.c | |
parent | 330c6c57e6284a755d7e8a031b3c917571ee6dc3 (diff) |
staging:iio: rework of attribute registration.
This set also includes quite a number of bug fixes of particularly
remove functions.
Necessary due to issue pointed out in Bart Van Assche's patch:
docs/driver-model: Document device.groups
V2: Rebase due to patch reordering.
V3: Pull various error fixes and cleanups out into their own patches.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <Michael.Hennerich@analog.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/meter/ade7754.c')
-rw-r--r-- | drivers/staging/iio/meter/ade7754.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/staging/iio/meter/ade7754.c b/drivers/staging/iio/meter/ade7754.c index 6f0f464aba3..8adb2a98bb3 100644 --- a/drivers/staging/iio/meter/ade7754.c +++ b/drivers/staging/iio/meter/ade7754.c | |||
@@ -536,7 +536,7 @@ static const struct iio_info ade7754_info = { | |||
536 | 536 | ||
537 | static int __devinit ade7754_probe(struct spi_device *spi) | 537 | static int __devinit ade7754_probe(struct spi_device *spi) |
538 | { | 538 | { |
539 | int ret, regdone = 0; | 539 | int ret; |
540 | struct ade7754_state *st; | 540 | struct ade7754_state *st; |
541 | struct iio_dev *indio_dev; | 541 | struct iio_dev *indio_dev; |
542 | 542 | ||
@@ -558,22 +558,18 @@ static int __devinit ade7754_probe(struct spi_device *spi) | |||
558 | indio_dev->info = &ade7754_info; | 558 | indio_dev->info = &ade7754_info; |
559 | indio_dev->modes = INDIO_DIRECT_MODE; | 559 | indio_dev->modes = INDIO_DIRECT_MODE; |
560 | 560 | ||
561 | ret = iio_device_register(indio_dev); | ||
562 | if (ret) | ||
563 | goto error_free_dev; | ||
564 | regdone = 1; | ||
565 | |||
566 | /* Get the device into a sane initial state */ | 561 | /* Get the device into a sane initial state */ |
567 | ret = ade7754_initial_setup(indio_dev); | 562 | ret = ade7754_initial_setup(indio_dev); |
568 | if (ret) | 563 | if (ret) |
569 | goto error_free_dev; | 564 | goto error_free_dev; |
565 | ret = iio_device_register(indio_dev); | ||
566 | if (ret) | ||
567 | goto error_free_dev; | ||
568 | |||
570 | return 0; | 569 | return 0; |
571 | 570 | ||
572 | error_free_dev: | 571 | error_free_dev: |
573 | if (regdone) | 572 | iio_free_device(indio_dev); |
574 | iio_device_unregister(indio_dev); | ||
575 | else | ||
576 | iio_free_device(indio_dev); | ||
577 | 573 | ||
578 | error_ret: | 574 | error_ret: |
579 | return ret; | 575 | return ret; |