aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2006-10-05 09:55:46 -0400
committerDavid Howells <dhowells@warthog.cambridge.redhat.com>2006-10-05 10:10:12 -0400
commit7d12e780e003f93433d49ce78cfedf4b4c52adc5 (patch)
tree6748550400445c11a306b132009f3001e3525df8 /drivers/isdn
parentda482792a6d1a3fbaaa25fae867b343fb4db3246 (diff)
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
Diffstat (limited to 'drivers/isdn')
-rw-r--r--drivers/isdn/act2000/act2000_isa.c2
-rw-r--r--drivers/isdn/gigaset/bas-gigaset.c12
-rw-r--r--drivers/isdn/gigaset/usb-gigaset.c4
-rw-r--r--drivers/isdn/hardware/avm/avmcard.h4
-rw-r--r--drivers/isdn/hardware/avm/b1.c2
-rw-r--r--drivers/isdn/hardware/avm/b1dma.c2
-rw-r--r--drivers/isdn/hardware/avm/c4.c2
-rw-r--r--drivers/isdn/hardware/avm/t1isa.c2
-rw-r--r--drivers/isdn/hardware/eicon/diva.c4
-rw-r--r--drivers/isdn/hardware/eicon/divasmain.c3
-rw-r--r--drivers/isdn/hisax/amd7930_fn.c2
-rw-r--r--drivers/isdn/hisax/asuscom.c4
-rw-r--r--drivers/isdn/hisax/avm_a1.c2
-rw-r--r--drivers/isdn/hisax/avm_a1p.c2
-rw-r--r--drivers/isdn/hisax/avm_pci.c2
-rw-r--r--drivers/isdn/hisax/bkm_a4t.c2
-rw-r--r--drivers/isdn/hisax/bkm_a8.c2
-rw-r--r--drivers/isdn/hisax/diva.c8
-rw-r--r--drivers/isdn/hisax/elsa.c4
-rw-r--r--drivers/isdn/hisax/enternow_pci.c2
-rw-r--r--drivers/isdn/hisax/gazel.c4
-rw-r--r--drivers/isdn/hisax/hfc4s8s_l1.c2
-rw-r--r--drivers/isdn/hisax/hfc_pci.c2
-rw-r--r--drivers/isdn/hisax/hfc_sx.c2
-rw-r--r--drivers/isdn/hisax/hfc_usb.c8
-rw-r--r--drivers/isdn/hisax/hfcscard.c2
-rw-r--r--drivers/isdn/hisax/hisax.h2
-rw-r--r--drivers/isdn/hisax/hisax_fcpcipnp.c4
-rw-r--r--drivers/isdn/hisax/icc.c2
-rw-r--r--drivers/isdn/hisax/isac.c2
-rw-r--r--drivers/isdn/hisax/isurf.c2
-rw-r--r--drivers/isdn/hisax/ix1_micro.c2
-rw-r--r--drivers/isdn/hisax/mic.c2
-rw-r--r--drivers/isdn/hisax/netjet.h2
-rw-r--r--drivers/isdn/hisax/niccy.c3
-rw-r--r--drivers/isdn/hisax/nj_s.c2
-rw-r--r--drivers/isdn/hisax/nj_u.c2
-rw-r--r--drivers/isdn/hisax/s0box.c2
-rw-r--r--drivers/isdn/hisax/saphir.c2
-rw-r--r--drivers/isdn/hisax/sedlbauer.c6
-rw-r--r--drivers/isdn/hisax/sportster.c2
-rw-r--r--drivers/isdn/hisax/st5481_b.c2
-rw-r--r--drivers/isdn/hisax/st5481_d.c2
-rw-r--r--drivers/isdn/hisax/st5481_usb.c6
-rw-r--r--drivers/isdn/hisax/teleint.c2
-rw-r--r--drivers/isdn/hisax/teles0.c2
-rw-r--r--drivers/isdn/hisax/teles3.c2
-rw-r--r--drivers/isdn/hisax/telespci.c2
-rw-r--r--drivers/isdn/hisax/w6692.c4
-rw-r--r--drivers/isdn/hysdn/boardergo.c2
-rw-r--r--drivers/isdn/pcbit/layer2.c2
-rw-r--r--drivers/isdn/pcbit/layer2.h2
-rw-r--r--drivers/isdn/sc/init.c2
-rw-r--r--drivers/isdn/sc/interrupt.c2
54 files changed, 76 insertions, 80 deletions
diff --git a/drivers/isdn/act2000/act2000_isa.c b/drivers/isdn/act2000/act2000_isa.c
index bc98d77c5ecd..3014495b7ff7 100644
--- a/drivers/isdn/act2000/act2000_isa.c
+++ b/drivers/isdn/act2000/act2000_isa.c
@@ -63,7 +63,7 @@ act2000_isa_detect(unsigned short portbase)
63} 63}
64 64
65static irqreturn_t 65static irqreturn_t
66act2000_isa_interrupt(int irq, void *dev_id, struct pt_regs *regs) 66act2000_isa_interrupt(int irq, void *dev_id)
67{ 67{
68 act2000_card *card = irq2card_map[irq]; 68 act2000_card *card = irq2card_map[irq];
69 u_char istatus; 69 u_char istatus;
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
index 5cfbe6a38010..0c937325a1b3 100644
--- a/drivers/isdn/gigaset/bas-gigaset.c
+++ b/drivers/isdn/gigaset/bas-gigaset.c
@@ -454,7 +454,7 @@ inline static int update_basstate(struct bas_cardstate *ucs,
454 * urb USB request block 454 * urb USB request block
455 * urb->context = inbuf structure for controller state 455 * urb->context = inbuf structure for controller state
456 */ 456 */
457static void read_ctrl_callback(struct urb *urb, struct pt_regs *regs) 457static void read_ctrl_callback(struct urb *urb)
458{ 458{
459 struct inbuf_t *inbuf = urb->context; 459 struct inbuf_t *inbuf = urb->context;
460 struct cardstate *cs = inbuf->cs; 460 struct cardstate *cs = inbuf->cs;
@@ -596,7 +596,7 @@ static int atread_submit(struct cardstate *cs, int timeout)
596 * urb USB request block 596 * urb USB request block
597 * urb->context = controller state structure 597 * urb->context = controller state structure
598 */ 598 */
599static void read_int_callback(struct urb *urb, struct pt_regs *regs) 599static void read_int_callback(struct urb *urb)
600{ 600{
601 struct cardstate *cs = urb->context; 601 struct cardstate *cs = urb->context;
602 struct bas_cardstate *ucs = cs->hw.bas; 602 struct bas_cardstate *ucs = cs->hw.bas;
@@ -762,7 +762,7 @@ resubmit:
762 * urb USB request block of completed request 762 * urb USB request block of completed request
763 * urb->context = bc_state structure 763 * urb->context = bc_state structure
764 */ 764 */
765static void read_iso_callback(struct urb *urb, struct pt_regs *regs) 765static void read_iso_callback(struct urb *urb)
766{ 766{
767 struct bc_state *bcs; 767 struct bc_state *bcs;
768 struct bas_bc_state *ubc; 768 struct bas_bc_state *ubc;
@@ -827,7 +827,7 @@ static void read_iso_callback(struct urb *urb, struct pt_regs *regs)
827 * urb USB request block of completed request 827 * urb USB request block of completed request
828 * urb->context = isow_urbctx_t structure 828 * urb->context = isow_urbctx_t structure
829 */ 829 */
830static void write_iso_callback(struct urb *urb, struct pt_regs *regs) 830static void write_iso_callback(struct urb *urb)
831{ 831{
832 struct isow_urbctx_t *ucx; 832 struct isow_urbctx_t *ucx;
833 struct bas_bc_state *ubc; 833 struct bas_bc_state *ubc;
@@ -1415,7 +1415,7 @@ static void req_timeout(unsigned long data)
1415 * urb USB request block of completed request 1415 * urb USB request block of completed request
1416 * urb->context = hardware specific controller state structure 1416 * urb->context = hardware specific controller state structure
1417 */ 1417 */
1418static void write_ctrl_callback(struct urb *urb, struct pt_regs *regs) 1418static void write_ctrl_callback(struct urb *urb)
1419{ 1419{
1420 struct bas_cardstate *ucs = urb->context; 1420 struct bas_cardstate *ucs = urb->context;
1421 int rc; 1421 int rc;
@@ -1661,7 +1661,7 @@ static void complete_cb(struct cardstate *cs)
1661 * urb USB request block of completed request 1661 * urb USB request block of completed request
1662 * urb->context = controller state structure 1662 * urb->context = controller state structure
1663 */ 1663 */
1664static void write_command_callback(struct urb *urb, struct pt_regs *regs) 1664static void write_command_callback(struct urb *urb)
1665{ 1665{
1666 struct cardstate *cs = urb->context; 1666 struct cardstate *cs = urb->context;
1667 struct bas_cardstate *ucs = cs->hw.bas; 1667 struct bas_cardstate *ucs = cs->hw.bas;
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
index 6e05d9d4a51a..4ffa9eb1c28e 100644
--- a/drivers/isdn/gigaset/usb-gigaset.c
+++ b/drivers/isdn/gigaset/usb-gigaset.c
@@ -362,7 +362,7 @@ static void gigaset_modem_fill(unsigned long data)
362 * 362 *
363 * It is called if the data was received from the device. 363 * It is called if the data was received from the device.
364 */ 364 */
365static void gigaset_read_int_callback(struct urb *urb, struct pt_regs *regs) 365static void gigaset_read_int_callback(struct urb *urb)
366{ 366{
367 struct inbuf_t *inbuf = urb->context; 367 struct inbuf_t *inbuf = urb->context;
368 struct cardstate *cs = inbuf->cs; 368 struct cardstate *cs = inbuf->cs;
@@ -420,7 +420,7 @@ static void gigaset_read_int_callback(struct urb *urb, struct pt_regs *regs)
420 420
421 421
422/* This callback routine is called when data was transmitted to the device. */ 422/* This callback routine is called when data was transmitted to the device. */
423static void gigaset_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 423static void gigaset_write_bulk_callback(struct urb *urb)
424{ 424{
425 struct cardstate *cs = urb->context; 425 struct cardstate *cs = urb->context;
426 unsigned long flags; 426 unsigned long flags;
diff --git a/drivers/isdn/hardware/avm/avmcard.h b/drivers/isdn/hardware/avm/avmcard.h
index 3b431723c7cb..d964f07e4a56 100644
--- a/drivers/isdn/hardware/avm/avmcard.h
+++ b/drivers/isdn/hardware/avm/avmcard.h
@@ -554,7 +554,7 @@ void b1_register_appl(struct capi_ctr *ctrl, u16 appl,
554void b1_release_appl(struct capi_ctr *ctrl, u16 appl); 554void b1_release_appl(struct capi_ctr *ctrl, u16 appl);
555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb); 555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
556void b1_parse_version(avmctrl_info *card); 556void b1_parse_version(avmctrl_info *card);
557irqreturn_t b1_interrupt(int interrupt, void *devptr, struct pt_regs *regs); 557irqreturn_t b1_interrupt(int interrupt, void *devptr);
558 558
559int b1ctl_read_proc(char *page, char **start, off_t off, 559int b1ctl_read_proc(char *page, char **start, off_t off,
560 int count, int *eof, struct capi_ctr *ctrl); 560 int count, int *eof, struct capi_ctr *ctrl);
@@ -567,7 +567,7 @@ void avmcard_dma_free(avmcard_dmainfo *);
567int b1pciv4_detect(avmcard *card); 567int b1pciv4_detect(avmcard *card);
568int t1pci_detect(avmcard *card); 568int t1pci_detect(avmcard *card);
569void b1dma_reset(avmcard *card); 569void b1dma_reset(avmcard *card);
570irqreturn_t b1dma_interrupt(int interrupt, void *devptr, struct pt_regs *regs); 570irqreturn_t b1dma_interrupt(int interrupt, void *devptr);
571 571
572int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data); 572int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data);
573void b1dma_reset_ctr(struct capi_ctr *ctrl); 573void b1dma_reset_ctr(struct capi_ctr *ctrl);
diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 0c7061d55027..da2729247713 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -485,7 +485,7 @@ void b1_parse_version(avmctrl_info *cinfo)
485 485
486/* ------------------------------------------------------------- */ 486/* ------------------------------------------------------------- */
487 487
488irqreturn_t b1_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 488irqreturn_t b1_interrupt(int interrupt, void *devptr)
489{ 489{
490 avmcard *card = devptr; 490 avmcard *card = devptr;
491 avmctrl_info *cinfo = &card->ctrlinfo[0]; 491 avmctrl_info *cinfo = &card->ctrlinfo[0];
diff --git a/drivers/isdn/hardware/avm/b1dma.c b/drivers/isdn/hardware/avm/b1dma.c
index a4beeb46c859..ddd47cdfdb1f 100644
--- a/drivers/isdn/hardware/avm/b1dma.c
+++ b/drivers/isdn/hardware/avm/b1dma.c
@@ -628,7 +628,7 @@ static void b1dma_handle_interrupt(avmcard *card)
628 spin_unlock(&card->lock); 628 spin_unlock(&card->lock);
629} 629}
630 630
631irqreturn_t b1dma_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 631irqreturn_t b1dma_interrupt(int interrupt, void *devptr)
632{ 632{
633 avmcard *card = devptr; 633 avmcard *card = devptr;
634 634
diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 6c3d5f5f1f4b..2a3eb38f0ebb 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -713,7 +713,7 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
713 return IRQ_HANDLED; 713 return IRQ_HANDLED;
714} 714}
715 715
716static irqreturn_t c4_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 716static irqreturn_t c4_interrupt(int interrupt, void *devptr)
717{ 717{
718 avmcard *card = devptr; 718 avmcard *card = devptr;
719 719
diff --git a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
index 5a2f854d55b5..e47c60b0a8ec 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -131,7 +131,7 @@ static int t1_detectandinit(unsigned int base, unsigned irq, int cardnr)
131 return 0; 131 return 0;
132} 132}
133 133
134static irqreturn_t t1isa_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 134static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
135{ 135{
136 avmcard *card = devptr; 136 avmcard *card = devptr;
137 avmctrl_info *cinfo = &card->ctrlinfo[0]; 137 avmctrl_info *cinfo = &card->ctrlinfo[0];
diff --git a/drivers/isdn/hardware/eicon/diva.c b/drivers/isdn/hardware/eicon/diva.c
index 8ab8027f33c0..ffa2afa77c2f 100644
--- a/drivers/isdn/hardware/eicon/diva.c
+++ b/drivers/isdn/hardware/eicon/diva.c
@@ -71,8 +71,6 @@ DivaIdiReqFunc(29)
71DivaIdiReqFunc(30) 71DivaIdiReqFunc(30)
72DivaIdiReqFunc(31) 72DivaIdiReqFunc(31)
73 73
74struct pt_regs;
75
76/* 74/*
77** LOCALS 75** LOCALS
78*/ 76*/
@@ -515,7 +513,7 @@ diva_xdi_read(void *adapter, void *os_handle, void __user *dst,
515} 513}
516 514
517 515
518irqreturn_t diva_os_irq_wrapper(int irq, void *context, struct pt_regs *regs) 516irqreturn_t diva_os_irq_wrapper(int irq, void *context)
519{ 517{
520 diva_os_xdi_adapter_t *a = (diva_os_xdi_adapter_t *) context; 518 diva_os_xdi_adapter_t *a = (diva_os_xdi_adapter_t *) context;
521 diva_xdi_clear_interrupts_proc_t clear_int_proc; 519 diva_xdi_clear_interrupts_proc_t clear_int_proc;
diff --git a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c
index b7dadba13e82..dae2e83dd5e8 100644
--- a/drivers/isdn/hardware/eicon/divasmain.c
+++ b/drivers/isdn/hardware/eicon/divasmain.c
@@ -58,8 +58,7 @@ static char *DRIVERLNAME = "divas";
58static char *DEVNAME = "Divas"; 58static char *DEVNAME = "Divas";
59char *DRIVERRELEASE_DIVAS = "2.0"; 59char *DRIVERRELEASE_DIVAS = "2.0";
60 60
61extern irqreturn_t diva_os_irq_wrapper(int irq, void *context, 61extern irqreturn_t diva_os_irq_wrapper(int irq, void *context);
62 struct pt_regs *regs);
63extern int create_divas_proc(void); 62extern int create_divas_proc(void);
64extern void remove_divas_proc(void); 63extern void remove_divas_proc(void);
65extern void diva_get_vserial_number(PISDN_ADAPTER IoAdapter, char *buf); 64extern void diva_get_vserial_number(PISDN_ADAPTER IoAdapter, char *buf);
diff --git a/drivers/isdn/hisax/amd7930_fn.c b/drivers/isdn/hisax/amd7930_fn.c
index 8ae08c41c853..bec59010bc66 100644
--- a/drivers/isdn/hisax/amd7930_fn.c
+++ b/drivers/isdn/hisax/amd7930_fn.c
@@ -733,7 +733,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
733 wByteAMD(cs, 0x21, 0x82); 733 wByteAMD(cs, 0x21, 0x82);
734 wByteAMD(cs, 0x21, 0x02); 734 wByteAMD(cs, 0x21, 0x02);
735 spin_unlock_irqrestore(&cs->lock, flags); 735 spin_unlock_irqrestore(&cs->lock, flags);
736 cs->irq_func(cs->irq, cs, NULL); 736 cs->irq_func(cs->irq, cs);
737 737
738 if (cs->debug & L1_DEB_ISAC) 738 if (cs->debug & L1_DEB_ISAC)
739 debugl1(cs, "Amd7930: dbusy_timer_handler: Transmitter reset"); 739 debugl1(cs, "Amd7930: dbusy_timer_handler: Transmitter reset");
diff --git a/drivers/isdn/hisax/asuscom.c b/drivers/isdn/hisax/asuscom.c
index 93ff941c48f1..61e69e9c4aa9 100644
--- a/drivers/isdn/hisax/asuscom.c
+++ b/drivers/isdn/hisax/asuscom.c
@@ -156,7 +156,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
156#include "hscx_irq.c" 156#include "hscx_irq.c"
157 157
158static irqreturn_t 158static irqreturn_t
159asuscom_interrupt(int intno, void *dev_id, struct pt_regs *regs) 159asuscom_interrupt(int intno, void *dev_id)
160{ 160{
161 struct IsdnCardState *cs = dev_id; 161 struct IsdnCardState *cs = dev_id;
162 u_char val; 162 u_char val;
@@ -194,7 +194,7 @@ asuscom_interrupt(int intno, void *dev_id, struct pt_regs *regs)
194} 194}
195 195
196static irqreturn_t 196static irqreturn_t
197asuscom_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 197asuscom_interrupt_ipac(int intno, void *dev_id)
198{ 198{
199 struct IsdnCardState *cs = dev_id; 199 struct IsdnCardState *cs = dev_id;
200 u_char ista, val, icnt = 5; 200 u_char ista, val, icnt = 5;
diff --git a/drivers/isdn/hisax/avm_a1.c b/drivers/isdn/hisax/avm_a1.c
index 729e906bdc61..d9028e9b9b8f 100644
--- a/drivers/isdn/hisax/avm_a1.c
+++ b/drivers/isdn/hisax/avm_a1.c
@@ -101,7 +101,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
101#include "hscx_irq.c" 101#include "hscx_irq.c"
102 102
103static irqreturn_t 103static irqreturn_t
104avm_a1_interrupt(int intno, void *dev_id, struct pt_regs *regs) 104avm_a1_interrupt(int intno, void *dev_id)
105{ 105{
106 struct IsdnCardState *cs = dev_id; 106 struct IsdnCardState *cs = dev_id;
107 u_char val, sval; 107 u_char val, sval;
diff --git a/drivers/isdn/hisax/avm_a1p.c b/drivers/isdn/hisax/avm_a1p.c
index 574e252dfa43..c87fa3f9b298 100644
--- a/drivers/isdn/hisax/avm_a1p.c
+++ b/drivers/isdn/hisax/avm_a1p.c
@@ -140,7 +140,7 @@ WriteHSCXfifo(struct IsdnCardState *cs, int hscx, u_char * data, int size)
140#include "hscx_irq.c" 140#include "hscx_irq.c"
141 141
142static irqreturn_t 142static irqreturn_t
143avm_a1p_interrupt(int intno, void *dev_id, struct pt_regs *regs) 143avm_a1p_interrupt(int intno, void *dev_id)
144{ 144{
145 struct IsdnCardState *cs = dev_id; 145 struct IsdnCardState *cs = dev_id;
146 u_char val, sval; 146 u_char val, sval;
diff --git a/drivers/isdn/hisax/avm_pci.c b/drivers/isdn/hisax/avm_pci.c
index 369afd3a3a4b..b04a178e5021 100644
--- a/drivers/isdn/hisax/avm_pci.c
+++ b/drivers/isdn/hisax/avm_pci.c
@@ -651,7 +651,7 @@ inithdlc(struct IsdnCardState *cs)
651} 651}
652 652
653static irqreturn_t 653static irqreturn_t
654avm_pcipnp_interrupt(int intno, void *dev_id, struct pt_regs *regs) 654avm_pcipnp_interrupt(int intno, void *dev_id)
655{ 655{
656 struct IsdnCardState *cs = dev_id; 656 struct IsdnCardState *cs = dev_id;
657 u_long flags; 657 u_long flags;
diff --git a/drivers/isdn/hisax/bkm_a4t.c b/drivers/isdn/hisax/bkm_a4t.c
index 87a630128a6c..871310d56a6e 100644
--- a/drivers/isdn/hisax/bkm_a4t.c
+++ b/drivers/isdn/hisax/bkm_a4t.c
@@ -125,7 +125,7 @@ WriteJADE(struct IsdnCardState *cs, int jade, u_char offset, u_char value)
125#include "jade_irq.c" 125#include "jade_irq.c"
126 126
127static irqreturn_t 127static irqreturn_t
128bkm_interrupt(int intno, void *dev_id, struct pt_regs *regs) 128bkm_interrupt(int intno, void *dev_id)
129{ 129{
130 struct IsdnCardState *cs = dev_id; 130 struct IsdnCardState *cs = dev_id;
131 u_char val = 0; 131 u_char val = 0;
diff --git a/drivers/isdn/hisax/bkm_a8.c b/drivers/isdn/hisax/bkm_a8.c
index dae090a9a489..340310645346 100644
--- a/drivers/isdn/hisax/bkm_a8.c
+++ b/drivers/isdn/hisax/bkm_a8.c
@@ -140,7 +140,7 @@ set_ipac_active(struct IsdnCardState *cs, u_int active)
140#include "hscx_irq.c" 140#include "hscx_irq.c"
141 141
142static irqreturn_t 142static irqreturn_t
143bkm_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 143bkm_interrupt_ipac(int intno, void *dev_id)
144{ 144{
145 struct IsdnCardState *cs = dev_id; 145 struct IsdnCardState *cs = dev_id;
146 u_char ista, val, icnt = 5; 146 u_char ista, val, icnt = 5;
diff --git a/drivers/isdn/hisax/diva.c b/drivers/isdn/hisax/diva.c
index e294fa3918f3..7e95f04f13da 100644
--- a/drivers/isdn/hisax/diva.c
+++ b/drivers/isdn/hisax/diva.c
@@ -289,7 +289,7 @@ MemWriteHSCX_IPACX(struct IsdnCardState *cs, int hscx, u_char offset, u_char val
289#include "hscx_irq.c" 289#include "hscx_irq.c"
290 290
291static irqreturn_t 291static irqreturn_t
292diva_interrupt(int intno, void *dev_id, struct pt_regs *regs) 292diva_interrupt(int intno, void *dev_id)
293{ 293{
294 struct IsdnCardState *cs = dev_id; 294 struct IsdnCardState *cs = dev_id;
295 u_char val, sval; 295 u_char val, sval;
@@ -319,7 +319,7 @@ diva_interrupt(int intno, void *dev_id, struct pt_regs *regs)
319} 319}
320 320
321static irqreturn_t 321static irqreturn_t
322diva_irq_ipac_isa(int intno, void *dev_id, struct pt_regs *regs) 322diva_irq_ipac_isa(int intno, void *dev_id)
323{ 323{
324 struct IsdnCardState *cs = dev_id; 324 struct IsdnCardState *cs = dev_id;
325 u_char ista,val; 325 u_char ista,val;
@@ -630,7 +630,7 @@ Memhscx_int_main(struct IsdnCardState *cs, u_char val)
630} 630}
631 631
632static irqreturn_t 632static irqreturn_t
633diva_irq_ipac_pci(int intno, void *dev_id, struct pt_regs *regs) 633diva_irq_ipac_pci(int intno, void *dev_id)
634{ 634{
635 struct IsdnCardState *cs = dev_id; 635 struct IsdnCardState *cs = dev_id;
636 u_char ista,val; 636 u_char ista,val;
@@ -685,7 +685,7 @@ Start_IPACPCI:
685} 685}
686 686
687static irqreturn_t 687static irqreturn_t
688diva_irq_ipacx_pci(int intno, void *dev_id, struct pt_regs *regs) 688diva_irq_ipacx_pci(int intno, void *dev_id)
689{ 689{
690 struct IsdnCardState *cs = dev_id; 690 struct IsdnCardState *cs = dev_id;
691 u_char val; 691 u_char val;
diff --git a/drivers/isdn/hisax/elsa.c b/drivers/isdn/hisax/elsa.c
index 3b3e318f6076..fab3e4ea0595 100644
--- a/drivers/isdn/hisax/elsa.c
+++ b/drivers/isdn/hisax/elsa.c
@@ -282,7 +282,7 @@ TimerRun(struct IsdnCardState *cs)
282#include "hscx_irq.c" 282#include "hscx_irq.c"
283 283
284static irqreturn_t 284static irqreturn_t
285elsa_interrupt(int intno, void *dev_id, struct pt_regs *regs) 285elsa_interrupt(int intno, void *dev_id)
286{ 286{
287 struct IsdnCardState *cs = dev_id; 287 struct IsdnCardState *cs = dev_id;
288 u_long flags; 288 u_long flags;
@@ -361,7 +361,7 @@ elsa_interrupt(int intno, void *dev_id, struct pt_regs *regs)
361} 361}
362 362
363static irqreturn_t 363static irqreturn_t
364elsa_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 364elsa_interrupt_ipac(int intno, void *dev_id)
365{ 365{
366 struct IsdnCardState *cs = dev_id; 366 struct IsdnCardState *cs = dev_id;
367 u_long flags; 367 u_long flags;
diff --git a/drivers/isdn/hisax/enternow_pci.c b/drivers/isdn/hisax/enternow_pci.c
index 76c7d29d1b2f..b45de9d408d1 100644
--- a/drivers/isdn/hisax/enternow_pci.c
+++ b/drivers/isdn/hisax/enternow_pci.c
@@ -240,7 +240,7 @@ enpci_card_msg(struct IsdnCardState *cs, int mt, void *arg)
240} 240}
241 241
242static irqreturn_t 242static irqreturn_t
243enpci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 243enpci_interrupt(int intno, void *dev_id)
244{ 244{
245 struct IsdnCardState *cs = dev_id; 245 struct IsdnCardState *cs = dev_id;
246 unsigned char s0val, s1val, ir; 246 unsigned char s0val, s1val, ir;
diff --git a/drivers/isdn/hisax/gazel.c b/drivers/isdn/hisax/gazel.c
index fe2937267777..3efa719b6d29 100644
--- a/drivers/isdn/hisax/gazel.c
+++ b/drivers/isdn/hisax/gazel.c
@@ -243,7 +243,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
243#include "hscx_irq.c" 243#include "hscx_irq.c"
244 244
245static irqreturn_t 245static irqreturn_t
246gazel_interrupt(int intno, void *dev_id, struct pt_regs *regs) 246gazel_interrupt(int intno, void *dev_id)
247{ 247{
248#define MAXCOUNT 5 248#define MAXCOUNT 5
249 struct IsdnCardState *cs = dev_id; 249 struct IsdnCardState *cs = dev_id;
@@ -274,7 +274,7 @@ gazel_interrupt(int intno, void *dev_id, struct pt_regs *regs)
274 274
275 275
276static irqreturn_t 276static irqreturn_t
277gazel_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 277gazel_interrupt_ipac(int intno, void *dev_id)
278{ 278{
279 struct IsdnCardState *cs = dev_id; 279 struct IsdnCardState *cs = dev_id;
280 u_char ista, val; 280 u_char ista, val;
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
index 0ca5e66d2f5a..d852c9d998b2 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.c
+++ b/drivers/isdn/hisax/hfc4s8s_l1.c
@@ -1268,7 +1268,7 @@ hfc4s8s_bh(hfc4s8s_hw * hw)
1268/* interrupt handler */ 1268/* interrupt handler */
1269/*********************/ 1269/*********************/
1270static irqreturn_t 1270static irqreturn_t
1271hfc4s8s_interrupt(int intno, void *dev_id, struct pt_regs *regs) 1271hfc4s8s_interrupt(int intno, void *dev_id)
1272{ 1272{
1273 hfc4s8s_hw *hw = dev_id; 1273 hfc4s8s_hw *hw = dev_id;
1274 u_char b, ovr; 1274 u_char b, ovr;
diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
index 1df60ca9481f..93f60b563515 100644
--- a/drivers/isdn/hisax/hfc_pci.c
+++ b/drivers/isdn/hisax/hfc_pci.c
@@ -931,7 +931,7 @@ receive_emsg(struct IsdnCardState *cs)
931/* Interrupt handler */ 931/* Interrupt handler */
932/*********************/ 932/*********************/
933static irqreturn_t 933static irqreturn_t
934hfcpci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 934hfcpci_interrupt(int intno, void *dev_id)
935{ 935{
936 u_long flags; 936 u_long flags;
937 struct IsdnCardState *cs = dev_id; 937 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/hfc_sx.c b/drivers/isdn/hisax/hfc_sx.c
index b7e8e23be337..954d1536db1f 100644
--- a/drivers/isdn/hisax/hfc_sx.c
+++ b/drivers/isdn/hisax/hfc_sx.c
@@ -691,7 +691,7 @@ receive_emsg(struct IsdnCardState *cs)
691/* Interrupt handler */ 691/* Interrupt handler */
692/*********************/ 692/*********************/
693static irqreturn_t 693static irqreturn_t
694hfcsx_interrupt(int intno, void *dev_id, struct pt_regs *regs) 694hfcsx_interrupt(int intno, void *dev_id)
695{ 695{
696 struct IsdnCardState *cs = dev_id; 696 struct IsdnCardState *cs = dev_id;
697 u_char exval; 697 u_char exval;
diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
index 6b88ecb5047d..7105b043add8 100644
--- a/drivers/isdn/hisax/hfc_usb.c
+++ b/drivers/isdn/hisax/hfc_usb.c
@@ -276,7 +276,7 @@ control_action_handler(hfcusb_data * hfc, int reg, int val, int action)
276/* control completion routine handling background control cmds */ 276/* control completion routine handling background control cmds */
277/***************************************************************/ 277/***************************************************************/
278static void 278static void
279ctrl_complete(struct urb *urb, struct pt_regs *regs) 279ctrl_complete(struct urb *urb)
280{ 280{
281 hfcusb_data *hfc = (hfcusb_data *) urb->context; 281 hfcusb_data *hfc = (hfcusb_data *) urb->context;
282 ctrl_buft *buf; 282 ctrl_buft *buf;
@@ -603,7 +603,7 @@ static int iso_packets[8] =
603/* transmit completion routine for all ISO tx fifos */ 603/* transmit completion routine for all ISO tx fifos */
604/*****************************************************/ 604/*****************************************************/
605static void 605static void
606tx_iso_complete(struct urb *urb, struct pt_regs *regs) 606tx_iso_complete(struct urb *urb)
607{ 607{
608 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context; 608 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context;
609 usb_fifo *fifo = context_iso_urb->owner_fifo; 609 usb_fifo *fifo = context_iso_urb->owner_fifo;
@@ -726,7 +726,7 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
726/* receive completion routine for all ISO tx fifos */ 726/* receive completion routine for all ISO tx fifos */
727/*****************************************************/ 727/*****************************************************/
728static void 728static void
729rx_iso_complete(struct urb *urb, struct pt_regs *regs) 729rx_iso_complete(struct urb *urb)
730{ 730{
731 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context; 731 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context;
732 usb_fifo *fifo = context_iso_urb->owner_fifo; 732 usb_fifo *fifo = context_iso_urb->owner_fifo;
@@ -919,7 +919,7 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
919/* receive completion routine for all rx fifos */ 919/* receive completion routine for all rx fifos */
920/***********************************************/ 920/***********************************************/
921static void 921static void
922rx_complete(struct urb *urb, struct pt_regs *regs) 922rx_complete(struct urb *urb)
923{ 923{
924 int len; 924 int len;
925 int status; 925 int status;
diff --git a/drivers/isdn/hisax/hfcscard.c b/drivers/isdn/hisax/hfcscard.c
index 4e7f472877e9..57670dc5034d 100644
--- a/drivers/isdn/hisax/hfcscard.c
+++ b/drivers/isdn/hisax/hfcscard.c
@@ -21,7 +21,7 @@ extern const char *CardType[];
21static const char *hfcs_revision = "$Revision: 1.10.2.4 $"; 21static const char *hfcs_revision = "$Revision: 1.10.2.4 $";
22 22
23static irqreturn_t 23static irqreturn_t
24hfcs_interrupt(int intno, void *dev_id, struct pt_regs *regs) 24hfcs_interrupt(int intno, void *dev_id)
25{ 25{
26 struct IsdnCardState *cs = dev_id; 26 struct IsdnCardState *cs = dev_id;
27 u_char val, stat; 27 u_char val, stat;
diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
index 2f9d5118ceaf..159c5896061e 100644
--- a/drivers/isdn/hisax/hisax.h
+++ b/drivers/isdn/hisax/hisax.h
@@ -941,7 +941,7 @@ struct IsdnCardState {
941 int (*cardmsg) (struct IsdnCardState *, int, void *); 941 int (*cardmsg) (struct IsdnCardState *, int, void *);
942 void (*setstack_d) (struct PStack *, struct IsdnCardState *); 942 void (*setstack_d) (struct PStack *, struct IsdnCardState *);
943 void (*DC_Close) (struct IsdnCardState *); 943 void (*DC_Close) (struct IsdnCardState *);
944 int (*irq_func) (int, void *, struct pt_regs *); 944 int (*irq_func) (int, void *);
945 int (*auxcmd) (struct IsdnCardState *, isdn_ctrl *); 945 int (*auxcmd) (struct IsdnCardState *, isdn_ctrl *);
946 struct Channel channel[2+MAX_WAITING_CALLS]; 946 struct Channel channel[2+MAX_WAITING_CALLS];
947 struct BCState bcs[2+MAX_WAITING_CALLS]; 947 struct BCState bcs[2+MAX_WAITING_CALLS];
diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
index 881a4165cfb4..f6db55a752c4 100644
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c
@@ -651,7 +651,7 @@ static void fritz_b_l2l1(struct hisax_if *ifc, int pr, void *arg)
651// ---------------------------------------------------------------------- 651// ----------------------------------------------------------------------
652 652
653static irqreturn_t 653static irqreturn_t
654fcpci2_irq(int intno, void *dev, struct pt_regs *regs) 654fcpci2_irq(int intno, void *dev)
655{ 655{
656 struct fritz_adapter *adapter = dev; 656 struct fritz_adapter *adapter = dev;
657 unsigned char val; 657 unsigned char val;
@@ -671,7 +671,7 @@ fcpci2_irq(int intno, void *dev, struct pt_regs *regs)
671} 671}
672 672
673static irqreturn_t 673static irqreturn_t
674fcpci_irq(int intno, void *dev, struct pt_regs *regs) 674fcpci_irq(int intno, void *dev)
675{ 675{
676 struct fritz_adapter *adapter = dev; 676 struct fritz_adapter *adapter = dev;
677 unsigned char sval; 677 unsigned char sval;
diff --git a/drivers/isdn/hisax/icc.c b/drivers/isdn/hisax/icc.c
index 2cf7b665609e..da706925d54d 100644
--- a/drivers/isdn/hisax/icc.c
+++ b/drivers/isdn/hisax/icc.c
@@ -608,7 +608,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
608 debugl1(cs, "D-Channel Busy no skb"); 608 debugl1(cs, "D-Channel Busy no skb");
609 } 609 }
610 cs->writeisac(cs, ICC_CMDR, 0x01); /* Transmitter reset */ 610 cs->writeisac(cs, ICC_CMDR, 0x01); /* Transmitter reset */
611 cs->irq_func(cs->irq, cs, NULL); 611 cs->irq_func(cs->irq, cs);
612 } 612 }
613 } 613 }
614} 614}
diff --git a/drivers/isdn/hisax/isac.c b/drivers/isdn/hisax/isac.c
index 565b7892c267..282f349408bc 100644
--- a/drivers/isdn/hisax/isac.c
+++ b/drivers/isdn/hisax/isac.c
@@ -609,7 +609,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
609 debugl1(cs, "D-Channel Busy no skb"); 609 debugl1(cs, "D-Channel Busy no skb");
610 } 610 }
611 cs->writeisac(cs, ISAC_CMDR, 0x01); /* Transmitter reset */ 611 cs->writeisac(cs, ISAC_CMDR, 0x01); /* Transmitter reset */
612 cs->irq_func(cs->irq, cs, NULL); 612 cs->irq_func(cs->irq, cs);
613 } 613 }
614 } 614 }
615} 615}
diff --git a/drivers/isdn/hisax/isurf.c b/drivers/isdn/hisax/isurf.c
index 715a1a8cd694..55de06953540 100644
--- a/drivers/isdn/hisax/isurf.c
+++ b/drivers/isdn/hisax/isurf.c
@@ -83,7 +83,7 @@ WriteISAR(struct IsdnCardState *cs, int mode, u_char offset, u_char value)
83} 83}
84 84
85static irqreturn_t 85static irqreturn_t
86isurf_interrupt(int intno, void *dev_id, struct pt_regs *regs) 86isurf_interrupt(int intno, void *dev_id)
87{ 87{
88 struct IsdnCardState *cs = dev_id; 88 struct IsdnCardState *cs = dev_id;
89 u_char val; 89 u_char val;
diff --git a/drivers/isdn/hisax/ix1_micro.c b/drivers/isdn/hisax/ix1_micro.c
index 39717506c678..252d79de5e5e 100644
--- a/drivers/isdn/hisax/ix1_micro.c
+++ b/drivers/isdn/hisax/ix1_micro.c
@@ -125,7 +125,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
125#include "hscx_irq.c" 125#include "hscx_irq.c"
126 126
127static irqreturn_t 127static irqreturn_t
128ix1micro_interrupt(int intno, void *dev_id, struct pt_regs *regs) 128ix1micro_interrupt(int intno, void *dev_id)
129{ 129{
130 struct IsdnCardState *cs = dev_id; 130 struct IsdnCardState *cs = dev_id;
131 u_char val; 131 u_char val;
diff --git a/drivers/isdn/hisax/mic.c b/drivers/isdn/hisax/mic.c
index 8c82519593a8..a81d175d9f64 100644
--- a/drivers/isdn/hisax/mic.c
+++ b/drivers/isdn/hisax/mic.c
@@ -120,7 +120,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
120#include "hscx_irq.c" 120#include "hscx_irq.c"
121 121
122static irqreturn_t 122static irqreturn_t
123mic_interrupt(int intno, void *dev_id, struct pt_regs *regs) 123mic_interrupt(int intno, void *dev_id)
124{ 124{
125 struct IsdnCardState *cs = dev_id; 125 struct IsdnCardState *cs = dev_id;
126 u_char val; 126 u_char val;
diff --git a/drivers/isdn/hisax/netjet.h b/drivers/isdn/hisax/netjet.h
index 1080508f3c6a..4d89d3ea4173 100644
--- a/drivers/isdn/hisax/netjet.h
+++ b/drivers/isdn/hisax/netjet.h
@@ -66,7 +66,7 @@ void read_tiger(struct IsdnCardState *cs);
66void write_tiger(struct IsdnCardState *cs); 66void write_tiger(struct IsdnCardState *cs);
67 67
68void netjet_fill_dma(struct BCState *bcs); 68void netjet_fill_dma(struct BCState *bcs);
69void netjet_interrupt(int intno, void *dev_id, struct pt_regs *regs); 69void netjet_interrupt(int intno, void *dev_id);
70void inittiger(struct IsdnCardState *cs); 70void inittiger(struct IsdnCardState *cs);
71void release_io_netjet(struct IsdnCardState *cs); 71void release_io_netjet(struct IsdnCardState *cs);
72 72
diff --git a/drivers/isdn/hisax/niccy.c b/drivers/isdn/hisax/niccy.c
index 0945336c28da..e5918c6fe73d 100644
--- a/drivers/isdn/hisax/niccy.c
+++ b/drivers/isdn/hisax/niccy.c
@@ -122,8 +122,7 @@ static void WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset,
122 122
123#include "hscx_irq.c" 123#include "hscx_irq.c"
124 124
125static irqreturn_t niccy_interrupt(int intno, void *dev_id, 125static irqreturn_t niccy_interrupt(int intno, void *dev_id)
126 struct pt_regs *regs)
127{ 126{
128 struct IsdnCardState *cs = dev_id; 127 struct IsdnCardState *cs = dev_id;
129 u_char val; 128 u_char val;
diff --git a/drivers/isdn/hisax/nj_s.c b/drivers/isdn/hisax/nj_s.c
index 80025fd890f4..c09ffb135330 100644
--- a/drivers/isdn/hisax/nj_s.c
+++ b/drivers/isdn/hisax/nj_s.c
@@ -26,7 +26,7 @@ static void dummywr(struct IsdnCardState *cs, int chan, u_char off, u_char value
26} 26}
27 27
28static irqreturn_t 28static irqreturn_t
29netjet_s_interrupt(int intno, void *dev_id, struct pt_regs *regs) 29netjet_s_interrupt(int intno, void *dev_id)
30{ 30{
31 struct IsdnCardState *cs = dev_id; 31 struct IsdnCardState *cs = dev_id;
32 u_char val, s1val, s0val; 32 u_char val, s1val, s0val;
diff --git a/drivers/isdn/hisax/nj_u.c b/drivers/isdn/hisax/nj_u.c
index 37497162d539..8202cf34ecae 100644
--- a/drivers/isdn/hisax/nj_u.c
+++ b/drivers/isdn/hisax/nj_u.c
@@ -26,7 +26,7 @@ static void dummywr(struct IsdnCardState *cs, int chan, u_char off, u_char value
26} 26}
27 27
28static irqreturn_t 28static irqreturn_t
29netjet_u_interrupt(int intno, void *dev_id, struct pt_regs *regs) 29netjet_u_interrupt(int intno, void *dev_id)
30{ 30{
31 struct IsdnCardState *cs = dev_id; 31 struct IsdnCardState *cs = dev_id;
32 u_char val, sval; 32 u_char val, sval;
diff --git a/drivers/isdn/hisax/s0box.c b/drivers/isdn/hisax/s0box.c
index e76042d323ea..150ef68b4ae2 100644
--- a/drivers/isdn/hisax/s0box.c
+++ b/drivers/isdn/hisax/s0box.c
@@ -141,7 +141,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
141#include "hscx_irq.c" 141#include "hscx_irq.c"
142 142
143static irqreturn_t 143static irqreturn_t
144s0box_interrupt(int intno, void *dev_id, struct pt_regs *regs) 144s0box_interrupt(int intno, void *dev_id)
145{ 145{
146#define MAXCOUNT 5 146#define MAXCOUNT 5
147 struct IsdnCardState *cs = dev_id; 147 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/saphir.c b/drivers/isdn/hisax/saphir.c
index d943d365890b..c99b16690fb3 100644
--- a/drivers/isdn/hisax/saphir.c
+++ b/drivers/isdn/hisax/saphir.c
@@ -117,7 +117,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
117#include "hscx_irq.c" 117#include "hscx_irq.c"
118 118
119static irqreturn_t 119static irqreturn_t
120saphir_interrupt(int intno, void *dev_id, struct pt_regs *regs) 120saphir_interrupt(int intno, void *dev_id)
121{ 121{
122 struct IsdnCardState *cs = dev_id; 122 struct IsdnCardState *cs = dev_id;
123 u_char val; 123 u_char val;
diff --git a/drivers/isdn/hisax/sedlbauer.c b/drivers/isdn/hisax/sedlbauer.c
index 8d8e8a299892..9522141f4351 100644
--- a/drivers/isdn/hisax/sedlbauer.c
+++ b/drivers/isdn/hisax/sedlbauer.c
@@ -260,7 +260,7 @@ WriteISAR(struct IsdnCardState *cs, int mode, u_char offset, u_char value)
260#include "hscx_irq.c" 260#include "hscx_irq.c"
261 261
262static irqreturn_t 262static irqreturn_t
263sedlbauer_interrupt(int intno, void *dev_id, struct pt_regs *regs) 263sedlbauer_interrupt(int intno, void *dev_id)
264{ 264{
265 struct IsdnCardState *cs = dev_id; 265 struct IsdnCardState *cs = dev_id;
266 u_char val; 266 u_char val;
@@ -306,7 +306,7 @@ sedlbauer_interrupt(int intno, void *dev_id, struct pt_regs *regs)
306} 306}
307 307
308static irqreturn_t 308static irqreturn_t
309sedlbauer_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 309sedlbauer_interrupt_ipac(int intno, void *dev_id)
310{ 310{
311 struct IsdnCardState *cs = dev_id; 311 struct IsdnCardState *cs = dev_id;
312 u_char ista, val, icnt = 5; 312 u_char ista, val, icnt = 5;
@@ -353,7 +353,7 @@ Start_IPAC:
353} 353}
354 354
355static irqreturn_t 355static irqreturn_t
356sedlbauer_interrupt_isar(int intno, void *dev_id, struct pt_regs *regs) 356sedlbauer_interrupt_isar(int intno, void *dev_id)
357{ 357{
358 struct IsdnCardState *cs = dev_id; 358 struct IsdnCardState *cs = dev_id;
359 u_char val; 359 u_char val;
diff --git a/drivers/isdn/hisax/sportster.c b/drivers/isdn/hisax/sportster.c
index a49b694eb730..02209500b3b7 100644
--- a/drivers/isdn/hisax/sportster.c
+++ b/drivers/isdn/hisax/sportster.c
@@ -99,7 +99,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
99#include "hscx_irq.c" 99#include "hscx_irq.c"
100 100
101static irqreturn_t 101static irqreturn_t
102sportster_interrupt(int intno, void *dev_id, struct pt_regs *regs) 102sportster_interrupt(int intno, void *dev_id)
103{ 103{
104 struct IsdnCardState *cs = dev_id; 104 struct IsdnCardState *cs = dev_id;
105 u_char val; 105 u_char val;
diff --git a/drivers/isdn/hisax/st5481_b.c b/drivers/isdn/hisax/st5481_b.c
index aca2a3954b14..75d0f248e4ee 100644
--- a/drivers/isdn/hisax/st5481_b.c
+++ b/drivers/isdn/hisax/st5481_b.c
@@ -161,7 +161,7 @@ static void led_blink(struct st5481_adapter *adapter)
161 st5481_usb_device_ctrl_msg(adapter, GPIO_OUT, leds, NULL, NULL); 161 st5481_usb_device_ctrl_msg(adapter, GPIO_OUT, leds, NULL, NULL);
162} 162}
163 163
164static void usb_b_out_complete(struct urb *urb, struct pt_regs *regs) 164static void usb_b_out_complete(struct urb *urb)
165{ 165{
166 struct st5481_bcs *bcs = urb->context; 166 struct st5481_bcs *bcs = urb->context;
167 struct st5481_b_out *b_out = &bcs->b_out; 167 struct st5481_b_out *b_out = &bcs->b_out;
diff --git a/drivers/isdn/hisax/st5481_d.c b/drivers/isdn/hisax/st5481_d.c
index 98adec440590..1d8c2618366c 100644
--- a/drivers/isdn/hisax/st5481_d.c
+++ b/drivers/isdn/hisax/st5481_d.c
@@ -370,7 +370,7 @@ static void fifo_reseted(void *context)
370 FsmEvent(&adapter->d_out.fsm, EV_DOUT_RESETED, NULL); 370 FsmEvent(&adapter->d_out.fsm, EV_DOUT_RESETED, NULL);
371} 371}
372 372
373static void usb_d_out_complete(struct urb *urb, struct pt_regs *regs) 373static void usb_d_out_complete(struct urb *urb)
374{ 374{
375 struct st5481_adapter *adapter = urb->context; 375 struct st5481_adapter *adapter = urb->context;
376 struct st5481_d_out *d_out = &adapter->d_out; 376 struct st5481_d_out *d_out = &adapter->d_out;
diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c
index b096b64b0253..ff1595122048 100644
--- a/drivers/isdn/hisax/st5481_usb.c
+++ b/drivers/isdn/hisax/st5481_usb.c
@@ -125,7 +125,7 @@ void st5481_ph_command(struct st5481_adapter *adapter, unsigned int command)
125 * Call the user provided completion routine and try 125 * Call the user provided completion routine and try
126 * to send the next request. 126 * to send the next request.
127 */ 127 */
128static void usb_ctrl_complete(struct urb *urb, struct pt_regs *regs) 128static void usb_ctrl_complete(struct urb *urb)
129{ 129{
130 struct st5481_adapter *adapter = urb->context; 130 struct st5481_adapter *adapter = urb->context;
131 struct st5481_ctrl *ctrl = &adapter->ctrl; 131 struct st5481_ctrl *ctrl = &adapter->ctrl;
@@ -179,7 +179,7 @@ static void usb_ctrl_complete(struct urb *urb, struct pt_regs *regs)
179 * Decode the register values and schedule a private event. 179 * Decode the register values and schedule a private event.
180 * Called at interrupt. 180 * Called at interrupt.
181 */ 181 */
182static void usb_int_complete(struct urb *urb, struct pt_regs *regs) 182static void usb_int_complete(struct urb *urb)
183{ 183{
184 u8 *data = urb->transfer_buffer; 184 u8 *data = urb->transfer_buffer;
185 u8 irqbyte; 185 u8 irqbyte;
@@ -483,7 +483,7 @@ void st5481_release_isocpipes(struct urb* urb[2])
483 * called 50 times per second with 20 ISOC descriptors. 483 * called 50 times per second with 20 ISOC descriptors.
484 * Called at interrupt. 484 * Called at interrupt.
485 */ 485 */
486static void usb_in_complete(struct urb *urb, struct pt_regs *regs) 486static void usb_in_complete(struct urb *urb)
487{ 487{
488 struct st5481_in *in = urb->context; 488 struct st5481_in *in = urb->context;
489 unsigned char *ptr; 489 unsigned char *ptr;
diff --git a/drivers/isdn/hisax/teleint.c b/drivers/isdn/hisax/teleint.c
index e94dc6f5bd62..0909662b7458 100644
--- a/drivers/isdn/hisax/teleint.c
+++ b/drivers/isdn/hisax/teleint.c
@@ -157,7 +157,7 @@ WriteHFC(struct IsdnCardState *cs, int data, u_char reg, u_char value)
157} 157}
158 158
159static irqreturn_t 159static irqreturn_t
160TeleInt_interrupt(int intno, void *dev_id, struct pt_regs *regs) 160TeleInt_interrupt(int intno, void *dev_id)
161{ 161{
162 struct IsdnCardState *cs = dev_id; 162 struct IsdnCardState *cs = dev_id;
163 u_char val; 163 u_char val;
diff --git a/drivers/isdn/hisax/teles0.c b/drivers/isdn/hisax/teles0.c
index f94af0930a17..48581335f43c 100644
--- a/drivers/isdn/hisax/teles0.c
+++ b/drivers/isdn/hisax/teles0.c
@@ -144,7 +144,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
144#include "hscx_irq.c" 144#include "hscx_irq.c"
145 145
146static irqreturn_t 146static irqreturn_t
147teles0_interrupt(int intno, void *dev_id, struct pt_regs *regs) 147teles0_interrupt(int intno, void *dev_id)
148{ 148{
149 struct IsdnCardState *cs = dev_id; 149 struct IsdnCardState *cs = dev_id;
150 u_char val; 150 u_char val;
diff --git a/drivers/isdn/hisax/teles3.c b/drivers/isdn/hisax/teles3.c
index 5cb712437da4..6a5e379e0774 100644
--- a/drivers/isdn/hisax/teles3.c
+++ b/drivers/isdn/hisax/teles3.c
@@ -101,7 +101,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
101#include "hscx_irq.c" 101#include "hscx_irq.c"
102 102
103static irqreturn_t 103static irqreturn_t
104teles3_interrupt(int intno, void *dev_id, struct pt_regs *regs) 104teles3_interrupt(int intno, void *dev_id)
105{ 105{
106#define MAXCOUNT 5 106#define MAXCOUNT 5
107 struct IsdnCardState *cs = dev_id; 107 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/telespci.c b/drivers/isdn/hisax/telespci.c
index dca446865f24..d09f6d033f15 100644
--- a/drivers/isdn/hisax/telespci.c
+++ b/drivers/isdn/hisax/telespci.c
@@ -226,7 +226,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
226#include "hscx_irq.c" 226#include "hscx_irq.c"
227 227
228static irqreturn_t 228static irqreturn_t
229telespci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 229telespci_interrupt(int intno, void *dev_id)
230{ 230{
231 struct IsdnCardState *cs = dev_id; 231 struct IsdnCardState *cs = dev_id;
232 u_char hval, ival; 232 u_char hval, ival;
diff --git a/drivers/isdn/hisax/w6692.c b/drivers/isdn/hisax/w6692.c
index 0595293b8659..1655341797a9 100644
--- a/drivers/isdn/hisax/w6692.c
+++ b/drivers/isdn/hisax/w6692.c
@@ -400,7 +400,7 @@ W6692B_interrupt(struct IsdnCardState *cs, u_char bchan)
400} 400}
401 401
402static irqreturn_t 402static irqreturn_t
403W6692_interrupt(int intno, void *dev_id, struct pt_regs *regs) 403W6692_interrupt(int intno, void *dev_id)
404{ 404{
405 struct IsdnCardState *cs = dev_id; 405 struct IsdnCardState *cs = dev_id;
406 u_char val, exval, v1; 406 u_char val, exval, v1;
@@ -715,7 +715,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
715 } 715 }
716 cs->writeW6692(cs, W_D_CMDR, W_D_CMDR_XRST); /* Transmitter reset */ 716 cs->writeW6692(cs, W_D_CMDR, W_D_CMDR_XRST); /* Transmitter reset */
717 spin_unlock_irqrestore(&cs->lock, flags); 717 spin_unlock_irqrestore(&cs->lock, flags);
718 cs->irq_func(cs->irq, cs, NULL); 718 cs->irq_func(cs->irq, cs);
719 return; 719 return;
720 } 720 }
721 } 721 }
diff --git a/drivers/isdn/hysdn/boardergo.c b/drivers/isdn/hysdn/boardergo.c
index 73afebdf80bd..160f22fa5941 100644
--- a/drivers/isdn/hysdn/boardergo.c
+++ b/drivers/isdn/hysdn/boardergo.c
@@ -33,7 +33,7 @@
33/* The cards interrupt handler. Called from system */ 33/* The cards interrupt handler. Called from system */
34/***************************************************/ 34/***************************************************/
35static irqreturn_t 35static irqreturn_t
36ergo_interrupt(int intno, void *dev_id, struct pt_regs *regs) 36ergo_interrupt(int intno, void *dev_id)
37{ 37{
38 hysdn_card *card = dev_id; /* parameter from irq */ 38 hysdn_card *card = dev_id; /* parameter from irq */
39 tErgDpram *dpr; 39 tErgDpram *dpr;
diff --git a/drivers/isdn/pcbit/layer2.c b/drivers/isdn/pcbit/layer2.c
index ba766930f088..13e7d219d1c7 100644
--- a/drivers/isdn/pcbit/layer2.c
+++ b/drivers/isdn/pcbit/layer2.c
@@ -512,7 +512,7 @@ pcbit_firmware_bug(struct pcbit_dev *dev)
512} 512}
513 513
514irqreturn_t 514irqreturn_t
515pcbit_irq_handler(int interrupt, void *devptr, struct pt_regs *regs) 515pcbit_irq_handler(int interrupt, void *devptr)
516{ 516{
517 struct pcbit_dev *dev; 517 struct pcbit_dev *dev;
518 u_char info, 518 u_char info,
diff --git a/drivers/isdn/pcbit/layer2.h b/drivers/isdn/pcbit/layer2.h
index 0d99da3a3e2b..2ac295e1a6e5 100644
--- a/drivers/isdn/pcbit/layer2.h
+++ b/drivers/isdn/pcbit/layer2.h
@@ -124,7 +124,7 @@ struct frame_buf {
124extern int pcbit_l2_write(struct pcbit_dev * dev, ulong msg, ushort refnum, 124extern int pcbit_l2_write(struct pcbit_dev * dev, ulong msg, ushort refnum,
125 struct sk_buff *skb, unsigned short hdr_len); 125 struct sk_buff *skb, unsigned short hdr_len);
126 126
127extern irqreturn_t pcbit_irq_handler(int interrupt, void *, struct pt_regs *regs); 127extern irqreturn_t pcbit_irq_handler(int interrupt, void *);
128 128
129extern struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS]; 129extern struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS];
130 130
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index a627e68023f6..222ca7c08baa 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -35,7 +35,7 @@ module_param_array(irq, int, NULL, 0);
35module_param_array(ram, int, NULL, 0); 35module_param_array(ram, int, NULL, 0);
36module_param(do_reset, bool, 0); 36module_param(do_reset, bool, 0);
37 37
38extern irqreturn_t interrupt_handler(int, void *, struct pt_regs *); 38extern irqreturn_t interrupt_handler(int, void *);
39extern int sndpkt(int, int, int, struct sk_buff *); 39extern int sndpkt(int, int, int, struct sk_buff *);
40extern int command(isdn_ctrl *); 40extern int command(isdn_ctrl *);
41extern int indicate_status(int, int, ulong, char*); 41extern int indicate_status(int, int, ulong, char*);
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index ae6263125ac2..cd17de18cb76 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -45,7 +45,7 @@ static int get_card_from_irq(int irq)
45/* 45/*
46 * 46 *
47 */ 47 */
48irqreturn_t interrupt_handler(int interrupt, void *cardptr, struct pt_regs *regs) 48irqreturn_t interrupt_handler(int interrupt, void *cardptr)
49{ 49{
50 50
51 RspMessage rcvmsg; 51 RspMessage rcvmsg;