summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Zhao <richard.zhao@freescale.com>2011-08-08 09:16:27 +0800
committerXinyu Chen <b03824@freescale.com>2011-08-08 13:07:22 +0800
commitc7a972020f52d432f1c6a6425fbdeab9124da092 (patch)
tree77cebb7c2d7bfbcb95605b2d8087d8d46735153e
parentcd9856c350ab43dca3bec25b34e2298a212c8a29 (diff)
ENGR00154429 rtc-snvs: request_irq too early
request_irq should be after hw init. It can avoid meaningless interrupt. Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
-rw-r--r--drivers/rtc/rtc-snvs.c23
1 files changed, 11 insertions, 12 deletions
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)) {