aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/act2000
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-23 18:57:39 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-23 18:57:39 -0700
commit25c263542ddf9396012b6a6fa2b327d304f7f9a3 (patch)
treed7258f81da125b0bf4a2ce0ede2e79db38a7ed04 /drivers/isdn/act2000
parentd8581969904b8a72db726c4b9090234c0f0bb18f (diff)
parent7c2399756ab8ccb2c57da4630b4aa4a1d61b3846 (diff)
downloadkernel_samsung_smdk4412-25c263542ddf9396012b6a6fa2b327d304f7f9a3.tar.gz
kernel_samsung_smdk4412-25c263542ddf9396012b6a6fa2b327d304f7f9a3.tar.bz2
kernel_samsung_smdk4412-25c263542ddf9396012b6a6fa2b327d304f7f9a3.zip
Merge branch 'irq-upstream' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6
* 'irq-upstream' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6: [SPARC, XEN, NET/CXGB3] use irq_handler_t where appropriate drivers/char/riscom8: clean up irq handling isdn/sc: irq handler clean isdn/act2000: fix major bug. clean irq handler. char/pcmcia/synclink_cs: trim trailing whitespace drivers/char/ip2: separate polling and irq-driven work entry points drivers/char/ip2: split out irq core logic into separate function [NETDRVR] lib82596, netxen: delete pointless tests from irq handler Eliminate pointless casts from void* in a few driver irq handlers. [PARPORT] Remove unused 'irq' argument from parport irq functions [PARPORT] Kill useful 'irq' arg from parport_{generic_irq,ieee1284_interrupt} [PARPORT] Consolidate code copies into a single generic irq handler
Diffstat (limited to 'drivers/isdn/act2000')
-rw-r--r--drivers/isdn/act2000/act2000_isa.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/isdn/act2000/act2000_isa.c b/drivers/isdn/act2000/act2000_isa.c
index 819ea85576a..1bd8960ead3 100644
--- a/drivers/isdn/act2000/act2000_isa.c
+++ b/drivers/isdn/act2000/act2000_isa.c
@@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase)
}
static irqreturn_t
-act2000_isa_interrupt(int irq, void *dev_id)
+act2000_isa_interrupt(int dummy, void *dev_id)
{
act2000_card *card = dev_id;
u_char istatus;
@@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id)
printk(KERN_WARNING "act2000: errIRQ\n");
}
if (istatus)
- printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", irq, istatus);
+ printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", card->irq, istatus);
return IRQ_HANDLED;
}
@@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card)
int
act2000_isa_config_irq(act2000_card * card, short irq)
{
+ int old_irq;
+
if (card->flags & ACT2000_FLAGS_IVALID) {
free_irq(card->irq, card);
}
@@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq)
if (!irq)
return 0;
- if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
- card->irq = irq;
+ old_irq = card->irq;
+ card->irq = irq;
+ if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
+ card->irq = old_irq;
card->flags |= ACT2000_FLAGS_IVALID;
printk(KERN_WARNING
"act2000: Could not request irq %d\n",irq);