aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/light/tsl2563.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/light/tsl2563.c')
-rw-r--r--drivers/staging/iio/light/tsl2563.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c
index 7a57791521f..370777245f8 100644
--- a/drivers/staging/iio/light/tsl2563.c
+++ b/drivers/staging/iio/light/tsl2563.c
@@ -751,9 +751,6 @@ static int __devinit tsl2563_probe(struct i2c_client *client,
751 indio_dev->info = &tsl2563_info; 751 indio_dev->info = &tsl2563_info;
752 else 752 else
753 indio_dev->info = &tsl2563_info_no_irq; 753 indio_dev->info = &tsl2563_info_no_irq;
754 ret = iio_device_register(indio_dev);
755 if (ret)
756 goto fail1;
757 if (client->irq) { 754 if (client->irq) {
758 ret = request_threaded_irq(client->irq, 755 ret = request_threaded_irq(client->irq,
759 NULL, 756 NULL,
@@ -772,12 +769,16 @@ static int __devinit tsl2563_probe(struct i2c_client *client,
772 /* The interrupt cannot yet be enabled so this is fine without lock */ 769 /* The interrupt cannot yet be enabled so this is fine without lock */
773 schedule_delayed_work(&chip->poweroff_work, 5 * HZ); 770 schedule_delayed_work(&chip->poweroff_work, 5 * HZ);
774 771
772 ret = iio_device_register(indio_dev);
773 if (ret)
774 goto fail3;
775
775 return 0; 776 return 0;
776fail3: 777fail3:
777 if (client->irq) 778 if (client->irq)
778 free_irq(client->irq, indio_dev); 779 free_irq(client->irq, indio_dev);
779fail2: 780fail2:
780 iio_device_unregister(indio_dev); 781 iio_free_device(indio_dev);
781fail1: 782fail1:
782 kfree(chip); 783 kfree(chip);
783 return err; 784 return err;