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 | |
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')
-rw-r--r-- | drivers/staging/iio/meter/ade7753.c | 15 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7754.c | 16 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7758_core.c | 18 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7759.c | 12 |
4 files changed, 24 insertions, 37 deletions
diff --git a/drivers/staging/iio/meter/ade7753.c b/drivers/staging/iio/meter/ade7753.c index bccc5798fa5..8cf7308874b 100644 --- a/drivers/staging/iio/meter/ade7753.c +++ b/drivers/staging/iio/meter/ade7753.c | |||
@@ -513,7 +513,7 @@ static const struct iio_info ade7753_info = { | |||
513 | 513 | ||
514 | static int __devinit ade7753_probe(struct spi_device *spi) | 514 | static int __devinit ade7753_probe(struct spi_device *spi) |
515 | { | 515 | { |
516 | int ret, regdone = 0; | 516 | int ret; |
517 | struct ade7753_state *st; | 517 | struct ade7753_state *st; |
518 | struct iio_dev *indio_dev; | 518 | struct iio_dev *indio_dev; |
519 | 519 | ||
@@ -535,22 +535,19 @@ static int __devinit ade7753_probe(struct spi_device *spi) | |||
535 | indio_dev->info = &ade7753_info; | 535 | indio_dev->info = &ade7753_info; |
536 | indio_dev->modes = INDIO_DIRECT_MODE; | 536 | indio_dev->modes = INDIO_DIRECT_MODE; |
537 | 537 | ||
538 | ret = iio_device_register(indio_dev); | 538 | /* Get the device into a sane initial state */ |
539 | ret = ade7753_initial_setup(indio_dev); | ||
539 | if (ret) | 540 | if (ret) |
540 | goto error_free_dev; | 541 | goto error_free_dev; |
541 | regdone = 1; | ||
542 | 542 | ||
543 | /* Get the device into a sane initial state */ | 543 | ret = iio_device_register(indio_dev); |
544 | ret = ade7753_initial_setup(indio_dev); | ||
545 | if (ret) | 544 | if (ret) |
546 | goto error_free_dev; | 545 | goto error_free_dev; |
546 | |||
547 | return 0; | 547 | return 0; |
548 | 548 | ||
549 | error_free_dev: | 549 | error_free_dev: |
550 | if (regdone) | 550 | iio_free_device(indio_dev); |
551 | iio_device_unregister(indio_dev); | ||
552 | else | ||
553 | iio_free_device(indio_dev); | ||
554 | 551 | ||
555 | error_ret: | 552 | error_ret: |
556 | return ret; | 553 | return ret; |
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; |
diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index ce513bda021..7cbf1cb198f 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c | |||
@@ -733,7 +733,7 @@ static const struct iio_info ade7758_info = { | |||
733 | 733 | ||
734 | static int __devinit ade7758_probe(struct spi_device *spi) | 734 | static int __devinit ade7758_probe(struct spi_device *spi) |
735 | { | 735 | { |
736 | int i, ret, regdone = 0; | 736 | int i, ret; |
737 | struct ade7758_state *st; | 737 | struct ade7758_state *st; |
738 | struct iio_dev *indio_dev = iio_allocate_device(sizeof(*st)); | 738 | struct iio_dev *indio_dev = iio_allocate_device(sizeof(*st)); |
739 | 739 | ||
@@ -775,11 +775,6 @@ static int __devinit ade7758_probe(struct spi_device *spi) | |||
775 | if (ret) | 775 | if (ret) |
776 | goto error_free_tx; | 776 | goto error_free_tx; |
777 | 777 | ||
778 | ret = iio_device_register(indio_dev); | ||
779 | if (ret) | ||
780 | goto error_unreg_ring_funcs; | ||
781 | regdone = 1; | ||
782 | |||
783 | ret = iio_ring_buffer_register(indio_dev, | 778 | ret = iio_ring_buffer_register(indio_dev, |
784 | &ade7758_channels[0], | 779 | &ade7758_channels[0], |
785 | ARRAY_SIZE(ade7758_channels)); | 780 | ARRAY_SIZE(ade7758_channels)); |
@@ -796,9 +791,13 @@ static int __devinit ade7758_probe(struct spi_device *spi) | |||
796 | if (spi->irq) { | 791 | if (spi->irq) { |
797 | ret = ade7758_probe_trigger(indio_dev); | 792 | ret = ade7758_probe_trigger(indio_dev); |
798 | if (ret) | 793 | if (ret) |
799 | goto error_remove_trigger; | 794 | goto error_uninitialize_ring; |
800 | } | 795 | } |
801 | 796 | ||
797 | ret = iio_device_register(indio_dev); | ||
798 | if (ret) | ||
799 | goto error_remove_trigger; | ||
800 | |||
802 | return 0; | 801 | return 0; |
803 | 802 | ||
804 | error_remove_trigger: | 803 | error_remove_trigger: |
@@ -813,10 +812,7 @@ error_free_tx: | |||
813 | error_free_rx: | 812 | error_free_rx: |
814 | kfree(st->rx); | 813 | kfree(st->rx); |
815 | error_free_dev: | 814 | error_free_dev: |
816 | if (regdone) | 815 | iio_free_device(indio_dev); |
817 | iio_device_unregister(indio_dev); | ||
818 | else | ||
819 | iio_free_device(indio_dev); | ||
820 | error_ret: | 816 | error_ret: |
821 | return ret; | 817 | return ret; |
822 | } | 818 | } |
diff --git a/drivers/staging/iio/meter/ade7759.c b/drivers/staging/iio/meter/ade7759.c index 31723e8e64f..8e44e46d82a 100644 --- a/drivers/staging/iio/meter/ade7759.c +++ b/drivers/staging/iio/meter/ade7759.c | |||
@@ -480,19 +480,17 @@ static int __devinit ade7759_probe(struct spi_device *spi) | |||
480 | indio_dev->info = &ade7759_info; | 480 | indio_dev->info = &ade7759_info; |
481 | indio_dev->modes = INDIO_DIRECT_MODE; | 481 | indio_dev->modes = INDIO_DIRECT_MODE; |
482 | 482 | ||
483 | ret = iio_device_register(indio_dev); | 483 | /* Get the device into a sane initial state */ |
484 | ret = ade7759_initial_setup(indio_dev); | ||
484 | if (ret) | 485 | if (ret) |
485 | goto error_free_dev; | 486 | goto error_free_dev; |
486 | 487 | ||
487 | /* Get the device into a sane initial state */ | 488 | ret = iio_device_register(indio_dev); |
488 | ret = ade7759_initial_setup(indio_dev); | ||
489 | if (ret) | 489 | if (ret) |
490 | goto error_unreg_dev; | 490 | goto error_free_dev; |
491 | return 0; | ||
492 | 491 | ||
492 | return 0; | ||
493 | 493 | ||
494 | error_unreg_dev: | ||
495 | iio_device_unregister(indio_dev); | ||
496 | error_free_dev: | 494 | error_free_dev: |
497 | iio_free_device(indio_dev); | 495 | iio_free_device(indio_dev); |
498 | error_ret: | 496 | error_ret: |