diff options
author | Sachin Kamat <sachin.kamat@linaro.org> | 2013-07-30 04:44:00 -0400 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-08-03 13:55:51 -0400 |
commit | bace48f44adb954ad71e62779d1be52dae3f0caf (patch) | |
tree | 46ba7548a08919a2da7f96d3c3269c866d20ef14 | |
parent | 3d0ccbaff396920eedeb6a8d0dbb3c95847e937e (diff) |
iio: light: tsl2563: Use devm_* APIs
devm_* APIs are device managed and make code simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r-- | drivers/iio/light/tsl2563.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c index 1f529f36f138..ebb962c5c323 100644 --- a/drivers/iio/light/tsl2563.c +++ b/drivers/iio/light/tsl2563.c | |||
@@ -702,7 +702,7 @@ static int tsl2563_probe(struct i2c_client *client, | |||
702 | int err = 0; | 702 | int err = 0; |
703 | u8 id = 0; | 703 | u8 id = 0; |
704 | 704 | ||
705 | indio_dev = iio_device_alloc(sizeof(*chip)); | 705 | indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip)); |
706 | if (!indio_dev) | 706 | if (!indio_dev) |
707 | return -ENOMEM; | 707 | return -ENOMEM; |
708 | 708 | ||
@@ -714,13 +714,13 @@ static int tsl2563_probe(struct i2c_client *client, | |||
714 | err = tsl2563_detect(chip); | 714 | err = tsl2563_detect(chip); |
715 | if (err) { | 715 | if (err) { |
716 | dev_err(&client->dev, "detect error %d\n", -err); | 716 | dev_err(&client->dev, "detect error %d\n", -err); |
717 | goto fail1; | 717 | return err; |
718 | } | 718 | } |
719 | 719 | ||
720 | err = tsl2563_read_id(chip, &id); | 720 | err = tsl2563_read_id(chip, &id); |
721 | if (err) { | 721 | if (err) { |
722 | dev_err(&client->dev, "read id error %d\n", -err); | 722 | dev_err(&client->dev, "read id error %d\n", -err); |
723 | goto fail1; | 723 | return err; |
724 | } | 724 | } |
725 | 725 | ||
726 | mutex_init(&chip->lock); | 726 | mutex_init(&chip->lock); |
@@ -751,7 +751,7 @@ static int tsl2563_probe(struct i2c_client *client, | |||
751 | indio_dev->info = &tsl2563_info_no_irq; | 751 | indio_dev->info = &tsl2563_info_no_irq; |
752 | 752 | ||
753 | if (client->irq) { | 753 | if (client->irq) { |
754 | err = request_threaded_irq(client->irq, | 754 | err = devm_request_threaded_irq(&client->dev, client->irq, |
755 | NULL, | 755 | NULL, |
756 | &tsl2563_event_handler, | 756 | &tsl2563_event_handler, |
757 | IRQF_TRIGGER_RISING | IRQF_ONESHOT, | 757 | IRQF_TRIGGER_RISING | IRQF_ONESHOT, |
@@ -759,14 +759,14 @@ static int tsl2563_probe(struct i2c_client *client, | |||
759 | indio_dev); | 759 | indio_dev); |
760 | if (err) { | 760 | if (err) { |
761 | dev_err(&client->dev, "irq request error %d\n", -err); | 761 | dev_err(&client->dev, "irq request error %d\n", -err); |
762 | goto fail1; | 762 | return err; |
763 | } | 763 | } |
764 | } | 764 | } |
765 | 765 | ||
766 | err = tsl2563_configure(chip); | 766 | err = tsl2563_configure(chip); |
767 | if (err) { | 767 | if (err) { |
768 | dev_err(&client->dev, "configure error %d\n", -err); | 768 | dev_err(&client->dev, "configure error %d\n", -err); |
769 | goto fail2; | 769 | return err; |
770 | } | 770 | } |
771 | 771 | ||
772 | INIT_DELAYED_WORK(&chip->poweroff_work, tsl2563_poweroff_work); | 772 | INIT_DELAYED_WORK(&chip->poweroff_work, tsl2563_poweroff_work); |
@@ -777,19 +777,14 @@ static int tsl2563_probe(struct i2c_client *client, | |||
777 | err = iio_device_register(indio_dev); | 777 | err = iio_device_register(indio_dev); |
778 | if (err) { | 778 | if (err) { |
779 | dev_err(&client->dev, "iio registration error %d\n", -err); | 779 | dev_err(&client->dev, "iio registration error %d\n", -err); |
780 | goto fail3; | 780 | goto fail; |
781 | } | 781 | } |
782 | 782 | ||
783 | return 0; | 783 | return 0; |
784 | 784 | ||
785 | fail3: | 785 | fail: |
786 | cancel_delayed_work(&chip->poweroff_work); | 786 | cancel_delayed_work(&chip->poweroff_work); |
787 | flush_scheduled_work(); | 787 | flush_scheduled_work(); |
788 | fail2: | ||
789 | if (client->irq) | ||
790 | free_irq(client->irq, indio_dev); | ||
791 | fail1: | ||
792 | iio_device_free(indio_dev); | ||
793 | return err; | 788 | return err; |
794 | } | 789 | } |
795 | 790 | ||
@@ -807,10 +802,6 @@ static int tsl2563_remove(struct i2c_client *client) | |||
807 | chip->intr); | 802 | chip->intr); |
808 | flush_scheduled_work(); | 803 | flush_scheduled_work(); |
809 | tsl2563_set_power(chip, 0); | 804 | tsl2563_set_power(chip, 0); |
810 | if (client->irq) | ||
811 | free_irq(client->irq, indio_dev); | ||
812 | |||
813 | iio_device_free(indio_dev); | ||
814 | 805 | ||
815 | return 0; | 806 | return 0; |
816 | } | 807 | } |