summaryrefslogtreecommitdiff
path: root/drivers/rtc
diff options
context:
space:
mode:
authorRichard Zhao <richard.zhao@freescale.com>2011-08-08 09:16:27 +0800
committerJason Liu <r64343@freescale.com>2012-01-09 20:21:53 +0800
commitaa4879ebb45ddb5be00d971db26ed253f03adf8a (patch)
tree4df07451d55920508440f431e005484eaa8a055c /drivers/rtc
parent4ca5226e62f27f1acf8b9b99f60235b6e2d6745d (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>
Diffstat (limited to 'drivers/rtc')
-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)) {