aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/nxp/pnx833x/common/interrupts.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-02-27 19:19:22 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2010-02-27 19:19:22 -0500
commitf1dd6ad599732fc89f36fdd65a2c2cf3c63a8711 (patch)
tree5092207128e47cba99dc0fe373fff6a36f4cb4b8 /arch/mips/nxp/pnx833x/common/interrupts.c
parent8d37a371b6869920e6c40c495c68eabba1ef3909 (diff)
parente10b234b3c4e255d3300a486c4ac15b43253ac6d (diff)
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (141 commits) MIPS: Alchemy: defconfig updates MIPS: Alchemy: Fix Au1100 ethernet build failure MIPS: Alchemy: Repair db1500/bosporus builds MIPS: ARC: Cleanup unused definitions from sgialib.h MIPS: Cobalt: convert legacy port addresses to GT-64111 bus addresses MIPS: Alchemy: use 36bit addresses for PCMCIA resources. MIPS: Cobalt: Fix theoretical port aliasing issue MIPS: Use ALIGN(x, bytes) instead of __ALIGN_MASK(x, bytes - 1) MIPS: Crazy spinlock speed test. MIPS: Optimize spinlocks. MIPS: Alchemy: devboard PM needs to save CPLD registers. MIPS: PowerTV: Eliminate duplicate opcode definition macros MIPS: Lemote 2F: Move printks out of port_access_lock. MIPS: PNX833x: Convert IRQ controller locks to raw spinlocks. MIPS: Octeon: Replace spinlock with raw_spinlocks in dma-octeon.c. MIPS: Octeon: Replace rwlocks in irq_chip handlers with raw_spinlocks. MIPS: Octeon: Convert octeon_irq_msi_lock to raw spinlock. MIPS: Loongson: Remove pointless sample_lock from oprofile code. MIPS: SNI: Convert sni_rm200_i8259A_lock to raw spinlock. MIPS: i8259: Convert IRQ controller lock to raw spinlock. ...
Diffstat (limited to 'arch/mips/nxp/pnx833x/common/interrupts.c')
-rw-r--r--arch/mips/nxp/pnx833x/common/interrupts.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/arch/mips/nxp/pnx833x/common/interrupts.c b/arch/mips/nxp/pnx833x/common/interrupts.c
index 3a467c04f81..941916f8aaf 100644
--- a/arch/mips/nxp/pnx833x/common/interrupts.c
+++ b/arch/mips/nxp/pnx833x/common/interrupts.c
@@ -156,19 +156,19 @@ static int irqflags[PNX833X_PIC_NUM_IRQ]; /* initialized by zeroes */
156#define IRQFLAG_STARTED 1 156#define IRQFLAG_STARTED 1
157#define IRQFLAG_DISABLED 2 157#define IRQFLAG_DISABLED 2
158 158
159static DEFINE_SPINLOCK(pnx833x_irq_lock); 159static DEFINE_RAW_SPINLOCK(pnx833x_irq_lock);
160 160
161static unsigned int pnx833x_startup_pic_irq(unsigned int irq) 161static unsigned int pnx833x_startup_pic_irq(unsigned int irq)
162{ 162{
163 unsigned long flags; 163 unsigned long flags;
164 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; 164 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE;
165 165
166 spin_lock_irqsave(&pnx833x_irq_lock, flags); 166 raw_spin_lock_irqsave(&pnx833x_irq_lock, flags);
167 167
168 irqflags[pic_irq] = IRQFLAG_STARTED; /* started, not disabled */ 168 irqflags[pic_irq] = IRQFLAG_STARTED; /* started, not disabled */
169 pnx833x_hard_enable_pic_irq(pic_irq); 169 pnx833x_hard_enable_pic_irq(pic_irq);
170 170
171 spin_unlock_irqrestore(&pnx833x_irq_lock, flags); 171 raw_spin_unlock_irqrestore(&pnx833x_irq_lock, flags);
172 return 0; 172 return 0;
173} 173}
174 174
@@ -177,12 +177,12 @@ static void pnx833x_shutdown_pic_irq(unsigned int irq)
177 unsigned long flags; 177 unsigned long flags;
178 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; 178 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE;
179 179
180 spin_lock_irqsave(&pnx833x_irq_lock, flags); 180 raw_spin_lock_irqsave(&pnx833x_irq_lock, flags);
181 181
182 irqflags[pic_irq] = 0; /* not started */ 182 irqflags[pic_irq] = 0; /* not started */
183 pnx833x_hard_disable_pic_irq(pic_irq); 183 pnx833x_hard_disable_pic_irq(pic_irq);
184 184
185 spin_unlock_irqrestore(&pnx833x_irq_lock, flags); 185 raw_spin_unlock_irqrestore(&pnx833x_irq_lock, flags);
186} 186}
187 187
188static void pnx833x_enable_pic_irq(unsigned int irq) 188static void pnx833x_enable_pic_irq(unsigned int irq)
@@ -190,13 +190,13 @@ static void pnx833x_enable_pic_irq(unsigned int irq)
190 unsigned long flags; 190 unsigned long flags;
191 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; 191 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE;
192 192
193 spin_lock_irqsave(&pnx833x_irq_lock, flags); 193 raw_spin_lock_irqsave(&pnx833x_irq_lock, flags);
194 194
195 irqflags[pic_irq] &= ~IRQFLAG_DISABLED; 195 irqflags[pic_irq] &= ~IRQFLAG_DISABLED;
196 if (irqflags[pic_irq] == IRQFLAG_STARTED) 196 if (irqflags[pic_irq] == IRQFLAG_STARTED)
197 pnx833x_hard_enable_pic_irq(pic_irq); 197 pnx833x_hard_enable_pic_irq(pic_irq);
198 198
199 spin_unlock_irqrestore(&pnx833x_irq_lock, flags); 199 raw_spin_unlock_irqrestore(&pnx833x_irq_lock, flags);
200} 200}
201 201
202static void pnx833x_disable_pic_irq(unsigned int irq) 202static void pnx833x_disable_pic_irq(unsigned int irq)
@@ -204,12 +204,12 @@ static void pnx833x_disable_pic_irq(unsigned int irq)
204 unsigned long flags; 204 unsigned long flags;
205 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE; 205 unsigned int pic_irq = irq - PNX833X_PIC_IRQ_BASE;
206 206
207 spin_lock_irqsave(&pnx833x_irq_lock, flags); 207 raw_spin_lock_irqsave(&pnx833x_irq_lock, flags);
208 208
209 irqflags[pic_irq] |= IRQFLAG_DISABLED; 209 irqflags[pic_irq] |= IRQFLAG_DISABLED;
210 pnx833x_hard_disable_pic_irq(pic_irq); 210 pnx833x_hard_disable_pic_irq(pic_irq);
211 211
212 spin_unlock_irqrestore(&pnx833x_irq_lock, flags); 212 raw_spin_unlock_irqrestore(&pnx833x_irq_lock, flags);
213} 213}
214 214
215static void pnx833x_ack_pic_irq(unsigned int irq) 215static void pnx833x_ack_pic_irq(unsigned int irq)
@@ -220,15 +220,15 @@ static void pnx833x_end_pic_irq(unsigned int irq)
220{ 220{
221} 221}
222 222
223static DEFINE_SPINLOCK(pnx833x_gpio_pnx833x_irq_lock); 223static DEFINE_RAW_SPINLOCK(pnx833x_gpio_pnx833x_irq_lock);
224 224
225static unsigned int pnx833x_startup_gpio_irq(unsigned int irq) 225static unsigned int pnx833x_startup_gpio_irq(unsigned int irq)
226{ 226{
227 int pin = irq - PNX833X_GPIO_IRQ_BASE; 227 int pin = irq - PNX833X_GPIO_IRQ_BASE;
228 unsigned long flags; 228 unsigned long flags;
229 spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); 229 raw_spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags);
230 pnx833x_gpio_enable_irq(pin); 230 pnx833x_gpio_enable_irq(pin);
231 spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); 231 raw_spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags);
232 return 0; 232 return 0;
233} 233}
234 234
@@ -236,18 +236,18 @@ static void pnx833x_enable_gpio_irq(unsigned int irq)
236{ 236{
237 int pin = irq - PNX833X_GPIO_IRQ_BASE; 237 int pin = irq - PNX833X_GPIO_IRQ_BASE;
238 unsigned long flags; 238 unsigned long flags;
239 spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); 239 raw_spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags);
240 pnx833x_gpio_enable_irq(pin); 240 pnx833x_gpio_enable_irq(pin);
241 spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); 241 raw_spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags);
242} 242}
243 243
244static void pnx833x_disable_gpio_irq(unsigned int irq) 244static void pnx833x_disable_gpio_irq(unsigned int irq)
245{ 245{
246 int pin = irq - PNX833X_GPIO_IRQ_BASE; 246 int pin = irq - PNX833X_GPIO_IRQ_BASE;
247 unsigned long flags; 247 unsigned long flags;
248 spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); 248 raw_spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags);
249 pnx833x_gpio_disable_irq(pin); 249 pnx833x_gpio_disable_irq(pin);
250 spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); 250 raw_spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags);
251} 251}
252 252
253static void pnx833x_ack_gpio_irq(unsigned int irq) 253static void pnx833x_ack_gpio_irq(unsigned int irq)
@@ -258,9 +258,9 @@ static void pnx833x_end_gpio_irq(unsigned int irq)
258{ 258{
259 int pin = irq - PNX833X_GPIO_IRQ_BASE; 259 int pin = irq - PNX833X_GPIO_IRQ_BASE;
260 unsigned long flags; 260 unsigned long flags;
261 spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags); 261 raw_spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags);
262 pnx833x_gpio_clear_irq(pin); 262 pnx833x_gpio_clear_irq(pin);
263 spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags); 263 raw_spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags);
264} 264}
265 265
266static int pnx833x_set_type_gpio_irq(unsigned int irq, unsigned int flow_type) 266static int pnx833x_set_type_gpio_irq(unsigned int irq, unsigned int flow_type)
@@ -377,4 +377,3 @@ void __init plat_time_init(void)
377 377
378 mips_hpt_frequency *= 500000; 378 mips_hpt_frequency *= 500000;
379} 379}
380