diff options
author | Ke Wei <kewei@marvell.com> | 2008-05-23 04:23:22 -0400 |
---|---|---|
committer | Lennert Buytenhek <buytenh@marvell.com> | 2008-06-22 16:45:01 -0400 |
commit | 1219715de70956557b9dedf3ee021a73d4f4ec52 (patch) | |
tree | 8d778c742bb7e5a0f087e8f8f88a210da6f0125a /arch/arm/plat-orion | |
parent | ab6d15d50637fc25ee941710b23fed09ceb28db3 (diff) |
[ARM] Orion: add a separate BRIDGE_INT_TIMER1_CLR define
Some Feroceon-based SoCs have an MBUS bridge interrupt controller
that requires writing a one instead of a zero to clear edge
interrupt sources such as timer expiry.
This patch adds a new BRIDGE_INT_TIMER1_CLR define, which platform
code can set to either ~BRIDGE_INT_TIMER1 (write-zero-to-clear) or
BRIDGE_INT_TIMER1 (write-one-to-clear) depending on the platform.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Diffstat (limited to 'arch/arm/plat-orion')
-rw-r--r-- | arch/arm/plat-orion/time.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c index 28b5285446e8..93c4ef9f0067 100644 --- a/arch/arm/plat-orion/time.c +++ b/arch/arm/plat-orion/time.c | |||
@@ -74,7 +74,7 @@ orion_clkevt_next_event(unsigned long delta, struct clock_event_device *dev) | |||
74 | /* | 74 | /* |
75 | * Clear and enable clockevent timer interrupt. | 75 | * Clear and enable clockevent timer interrupt. |
76 | */ | 76 | */ |
77 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 77 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
78 | 78 | ||
79 | u = readl(BRIDGE_MASK); | 79 | u = readl(BRIDGE_MASK); |
80 | u |= BRIDGE_INT_TIMER1; | 80 | u |= BRIDGE_INT_TIMER1; |
@@ -138,7 +138,7 @@ orion_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) | |||
138 | /* | 138 | /* |
139 | * ACK pending timer interrupt. | 139 | * ACK pending timer interrupt. |
140 | */ | 140 | */ |
141 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 141 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
142 | 142 | ||
143 | } | 143 | } |
144 | local_irq_restore(flags); | 144 | local_irq_restore(flags); |
@@ -159,7 +159,7 @@ static irqreturn_t orion_timer_interrupt(int irq, void *dev_id) | |||
159 | /* | 159 | /* |
160 | * ACK timer interrupt and call event handler. | 160 | * ACK timer interrupt and call event handler. |
161 | */ | 161 | */ |
162 | writel(~BRIDGE_INT_TIMER1, BRIDGE_CAUSE); | 162 | writel(BRIDGE_INT_TIMER1_CLR, BRIDGE_CAUSE); |
163 | orion_clkevt.event_handler(&orion_clkevt); | 163 | orion_clkevt.event_handler(&orion_clkevt); |
164 | 164 | ||
165 | return IRQ_HANDLED; | 165 | return IRQ_HANDLED; |