aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2013-07-30 04:44:00 -0400
committerJonathan Cameron <jic23@kernel.org>2013-08-03 13:55:51 -0400
commitbace48f44adb954ad71e62779d1be52dae3f0caf (patch)
tree46ba7548a08919a2da7f96d3c3269c866d20ef14
parent3d0ccbaff396920eedeb6a8d0dbb3c95847e937e (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.c25
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
785fail3: 785fail:
786 cancel_delayed_work(&chip->poweroff_work); 786 cancel_delayed_work(&chip->poweroff_work);
787 flush_scheduled_work(); 787 flush_scheduled_work();
788fail2:
789 if (client->irq)
790 free_irq(client->irq, indio_dev);
791fail1:
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}