From: Richard Zhao Date: Mon, 8 Aug 2011 01:16:27 +0000 (+0800) Subject: ENGR00154429 rtc-snvs: request_irq too early X-Git-Tag: v3.0.35-fsl~2185 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=33cb19a01263f07fd79da90cef942cb1b254e742;p=karo-tx-linux.git ENGR00154429 rtc-snvs: request_irq too early request_irq should be after hw init. It can avoid meaningless interrupt. Signed-off-by: Richard Zhao --- diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c index 3125ec09926c..dfd784936b28 100644 --- a/drivers/rtc/rtc-snvs.c +++ b/drivers/rtc/rtc-snvs.c @@ -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)) {