Skip to content

Commit

Permalink
ARM: 5787/1: U300 COH 901 331 fixes
Browse files Browse the repository at this point in the history
This will fix some small issues with the COH 901 331 RTC driver:
- Interrupt is disabled after alarm so that we don't fire
  multiple interrupts.
- We return 0 from the coh901331_alarm_irq_enable() ridding
  a compile warning.
- We alter the name in the U300 device registry to match that
  of the driver so they sucessfully resolve.

Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Linus Walleij authored and Russell King committed Nov 16, 2009
1 parent 927585f commit 378ce74
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
2 changes: 1 addition & 1 deletion arch/arm/mach-u300/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ static struct platform_device keypad_device = {
};

static struct platform_device rtc_device = {
.name = "rtc0",
.name = "rtc-coh901331",
.id = -1,
.num_resources = ARRAY_SIZE(rtc_resources),
.resource = rtc_resources,
Expand Down
11 changes: 11 additions & 0 deletions drivers/rtc/rtc-coh901331.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,16 @@ static irqreturn_t coh901331_interrupt(int irq, void *data)
clk_enable(rtap->clk);
/* Ack IRQ */
writel(1, rtap->virtbase + COH901331_IRQ_EVENT);
/*
* Disable the interrupt. This is necessary because
* the RTC lives on a lower-clocked line and will
* not release the IRQ line until after a few (slower)
* clock cycles. The interrupt will be re-enabled when
* a new alarm is set anyway.
*/
writel(0, rtap->virtbase + COH901331_IRQ_MASK);
clk_disable(rtap->clk);

/* Set alarm flag */
rtc_update_irq(rtap->rtc, 1, RTC_AF);

Expand Down Expand Up @@ -128,6 +137,8 @@ static int coh901331_alarm_irq_enable(struct device *dev, unsigned int enabled)
else
writel(0, rtap->virtbase + COH901331_IRQ_MASK);
clk_disable(rtap->clk);

return 0;
}

static struct rtc_class_ops coh901331_ops = {
Expand Down

0 comments on commit 378ce74

Please sign in to comment.