]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00154429 rtc-snvs: request_irq too early
authorRichard Zhao <richard.zhao@freescale.com>
Mon, 8 Aug 2011 01:16:27 +0000 (09:16 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:33:05 +0000 (08:33 +0200)
request_irq should be after hw init. It can avoid meaningless interrupt.

Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
drivers/rtc/rtc-snvs.c

index 3125ec09926ccd3b3152c21080f7b39301d22499..dfd784936b285c05266861d6435427a273482f58 100644 (file)
@@ -482,19 +482,7 @@ static int snvs_rtc_probe(struct platform_device *pdev)
        pdata->baseaddr = res->start;
        pdata->ioaddr = ioremap(pdata->baseaddr, 0xC00);
        ioaddr = pdata->ioaddr;
-
-       /* Configure and enable the RTC */
        pdata->irq = platform_get_irq(pdev, 0);
-       if (pdata->irq >= 0) {
-               if (request_irq(pdata->irq, snvs_rtc_interrupt, IRQF_SHARED,
-                               pdev->name, pdev) < 0) {
-                       dev_warn(&pdev->dev, "interrupt not available.\n");
-                       pdata->irq = -1;
-               } else {
-                       disable_irq(pdata->irq);
-                       pdata->irq_enable = false;
-               }
-       }
 
        /* initialize glitch detect */
        __raw_writel(SNVS_LPPGDR_INIT, ioaddr + SNVS_LPPGDR);
@@ -513,6 +501,17 @@ static int snvs_rtc_probe(struct platform_device *pdev)
        __raw_writel(0xFFFFFFFF, ioaddr + SNVS_LPSR);
        udelay(100);
 
+       if (pdata->irq >= 0) {
+               if (request_irq(pdata->irq, snvs_rtc_interrupt, IRQF_SHARED,
+                               pdev->name, pdev) < 0) {
+                       dev_warn(&pdev->dev, "interrupt not available.\n");
+                       pdata->irq = -1;
+               } else {
+                       disable_irq(pdata->irq);
+                       pdata->irq_enable = false;
+               }
+       }
+
        rtc = rtc_device_register(pdev->name, &pdev->dev,
                                  &snvs_rtc_ops, THIS_MODULE);
        if (IS_ERR(rtc)) {