From a035e4ea4ef103dad12a7c370e64e2b653369a1c Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 13 Dec 2006 00:35:04 -0800 Subject: [PATCH] --- yaml --- r: 44485 b: refs/heads/master c: f3e92d355e1251fb6d1a15508f2a5448d2354727 h: refs/heads/master i: 44483: b67ef5565d579479185a3e0ff8211036c6a7c0d6 v: v3 --- [refs] | 2 +- trunk/drivers/char/rtc.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 128d23e3cc25..cae4b554e142 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e8c5c045d790e7018c56f1a998a2d240b732ea3c +refs/heads/master: f3e92d355e1251fb6d1a15508f2a5448d2354727 diff --git a/trunk/drivers/char/rtc.c b/trunk/drivers/char/rtc.c index 66a7385bc34a..2eb53bea1866 100644 --- a/trunk/drivers/char/rtc.c +++ b/trunk/drivers/char/rtc.c @@ -958,6 +958,7 @@ static int __init rtc_init(void) } } #endif + rtc_has_irq = 0; printk(KERN_ERR "rtc_init: no PC rtc found\n"); return -EIO; @@ -972,6 +973,7 @@ static int __init rtc_init(void) * PCI Slot 2 INTA# (and some INTx# in Slot 1). */ if (request_irq(rtc_irq, rtc_interrupt, IRQF_SHARED, "rtc", (void *)&rtc_port)) { + rtc_has_irq = 0; printk(KERN_ERR "rtc: cannot register IRQ %d\n", rtc_irq); return -EIO; } @@ -982,6 +984,9 @@ static int __init rtc_init(void) else r = request_mem_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc"); if (!r) { +#ifdef RTC_IRQ + rtc_has_irq = 0; +#endif printk(KERN_ERR "rtc: I/O resource %lx is not free.\n", (long)(RTC_PORT(0))); return -EIO; @@ -996,6 +1001,7 @@ static int __init rtc_init(void) if(request_irq(RTC_IRQ, rtc_int_handler_ptr, IRQF_DISABLED, "rtc", NULL)) { /* Yeah right, seeing as irq 8 doesn't even hit the bus. */ + rtc_has_irq = 0; printk(KERN_ERR "rtc: IRQ %d is not free.\n", RTC_IRQ); if (RTC_IOMAPPED) release_region(RTC_PORT(0), RTC_IO_EXTENT); @@ -1012,6 +1018,7 @@ static int __init rtc_init(void) if (misc_register(&rtc_dev)) { #ifdef RTC_IRQ free_irq(RTC_IRQ, NULL); + rtc_has_irq = 0; #endif release_region(RTC_PORT(0), RTC_IO_EXTENT); return -ENODEV; @@ -1021,6 +1028,7 @@ static int __init rtc_init(void) if (!ent) { #ifdef RTC_IRQ free_irq(RTC_IRQ, NULL); + rtc_has_irq = 0; #endif release_region(RTC_PORT(0), RTC_IO_EXTENT); misc_deregister(&rtc_dev);