Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[sfrench/cifs-2.6.git] / drivers / rtc / rtc-at32ap700x.c
index 2999214ca534b411fec6e0ae1c1c760be15c5ddb..42244f14b41c50df9904abf5715dcf3dbd8f4b84 100644 (file)
@@ -225,18 +225,12 @@ static int __init at32_rtc_probe(struct platform_device *pdev)
                goto out;
        }
 
-       ret = request_irq(irq, at32_rtc_interrupt, IRQF_SHARED, "rtc", rtc);
-       if (ret) {
-               dev_dbg(&pdev->dev, "could not request irq %d\n", irq);
-               goto out;
-       }
-
        rtc->irq = irq;
        rtc->regs = ioremap(regs->start, regs->end - regs->start + 1);
        if (!rtc->regs) {
                ret = -ENOMEM;
                dev_dbg(&pdev->dev, "could not map I/O memory\n");
-               goto out_free_irq;
+               goto out;
        }
        spin_lock_init(&rtc->lock);
 
@@ -253,12 +247,18 @@ static int __init at32_rtc_probe(struct platform_device *pdev)
                                | RTC_BIT(CTRL_EN));
        }
 
+       ret = request_irq(irq, at32_rtc_interrupt, IRQF_SHARED, "rtc", rtc);
+       if (ret) {
+               dev_dbg(&pdev->dev, "could not request irq %d\n", irq);
+               goto out_iounmap;
+       }
+
        rtc->rtc = rtc_device_register(pdev->name, &pdev->dev,
                                &at32_rtc_ops, THIS_MODULE);
        if (IS_ERR(rtc->rtc)) {
                dev_dbg(&pdev->dev, "could not register rtc device\n");
                ret = PTR_ERR(rtc->rtc);
-               goto out_iounmap;
+               goto out_free_irq;
        }
 
        platform_set_drvdata(pdev, rtc);
@@ -268,10 +268,10 @@ static int __init at32_rtc_probe(struct platform_device *pdev)
 
        return 0;
 
-out_iounmap:
-       iounmap(rtc->regs);
 out_free_irq:
        free_irq(irq, rtc);
+out_iounmap:
+       iounmap(rtc->regs);
 out:
        kfree(rtc);
        return ret;
@@ -290,7 +290,7 @@ static int __exit at32_rtc_remove(struct platform_device *pdev)
        return 0;
 }
 
-MODULE_ALIAS("at32ap700x_rtc");
+MODULE_ALIAS("platform:at32ap700x_rtc");
 
 static struct platform_driver at32_rtc_driver = {
        .remove         = __exit_p(at32_rtc_remove),