rtc: ds1307: Switch to managed irq allocation
authorNishanth Menon <nm@ti.com>
Tue, 23 Jun 2015 16:15:11 +0000 (11:15 -0500)
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>
Sat, 5 Sep 2015 11:19:05 +0000 (13:19 +0200)
Since we are not doing anything fancy in remove function that requires
us to sequence IRQ free operation, we might as well switch over to devm_
equivalent of managed IRQ allocation and remove the explicit free_irq
since it'd be done automatically at remove.

Signed-off-by: Nishanth Menon <nm@ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
drivers/rtc/rtc-ds1307.c

index 8ea496e54a2e82575a4692709c630f1143071f54..0a98d8a5279150e4549fff3b9c8763d2fd7120fb 100644 (file)
@@ -1156,9 +1156,10 @@ read_rtc:
        }
 
        if (want_irq) {
-               err = request_threaded_irq(client->irq, NULL, irq_handler,
-                                          IRQF_SHARED | IRQF_ONESHOT,
-                                          ds1307->rtc->name, client);
+               err = devm_request_threaded_irq(&client->dev,
+                                               client->irq, NULL, irq_handler,
+                                               IRQF_SHARED | IRQF_ONESHOT,
+                                               ds1307->rtc->name, client);
                if (err) {
                        client->irq = 0;
                        dev_err(&client->dev, "unable to request IRQ!\n");
@@ -1212,9 +1213,6 @@ static int ds1307_remove(struct i2c_client *client)
 {
        struct ds1307 *ds1307 = i2c_get_clientdata(client);
 
-       if (test_and_clear_bit(HAS_ALARM, &ds1307->flags))
-               free_irq(client->irq, client);
-
        if (test_and_clear_bit(HAS_NVRAM, &ds1307->flags))
                sysfs_remove_bin_file(&client->dev.kobj, ds1307->nvram);