aboutsummaryrefslogtreecommitdiffstats
path: root/sound/oss
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 /sound/oss
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 'sound/oss')
-rw-r--r--sound/oss/ad1816.c2
-rw-r--r--sound/oss/ad1848.c4
-rw-r--r--sound/oss/ad1889.c2
-rw-r--r--sound/oss/btaudio.c2
-rw-r--r--sound/oss/cs46xx.c2
-rw-r--r--sound/oss/dmasound/dmasound_atari.c4
-rw-r--r--sound/oss/dmasound/dmasound_awacs.c14
-rw-r--r--sound/oss/dmasound/dmasound_paula.c4
-rw-r--r--sound/oss/dmasound/dmasound_q40.c8
-rw-r--r--sound/oss/emu10k1/irqmgr.c2
-rw-r--r--sound/oss/emu10k1/main.c2
-rw-r--r--sound/oss/es1371.c2
-rw-r--r--sound/oss/hal2.c2
-rw-r--r--sound/oss/i810_audio.c2
-rw-r--r--sound/oss/mpu401.c2
-rw-r--r--sound/oss/mpu401.h3
-rw-r--r--sound/oss/msnd_pinnacle.c2
-rw-r--r--sound/oss/nec_vrc5477.c2
-rw-r--r--sound/oss/nm256.h2
-rw-r--r--sound/oss/nm256_audio.c8
-rw-r--r--sound/oss/pas2_card.c2
-rw-r--r--sound/oss/sb_common.c4
-rw-r--r--sound/oss/sh_dac_audio.c2
-rw-r--r--sound/oss/swarm_cs4297a.c2
-rw-r--r--sound/oss/trident.c2
-rw-r--r--sound/oss/uart401.c2
-rw-r--r--sound/oss/uart6850.c2
-rw-r--r--sound/oss/via82cxxx_audio.c6
-rw-r--r--sound/oss/vidc.h2
-rw-r--r--sound/oss/vwsnd.c4
-rw-r--r--sound/oss/waveartist.c2
31 files changed, 50 insertions, 51 deletions
diff --git a/sound/oss/ad1816.c b/sound/oss/ad1816.c
index 29057836c644..caabf31193f7 100644
--- a/sound/oss/ad1816.c
+++ b/sound/oss/ad1816.c
@@ -521,7 +521,7 @@ static struct audio_driver ad1816_audio_driver =
521/* Interrupt handler */ 521/* Interrupt handler */
522 522
523 523
524static irqreturn_t ad1816_interrupt (int irq, void *dev_id, struct pt_regs *dummy) 524static irqreturn_t ad1816_interrupt (int irq, void *dev_id)
525{ 525{
526 unsigned char status; 526 unsigned char status;
527 ad1816_info *devc = (ad1816_info *)dev_id; 527 ad1816_info *devc = (ad1816_info *)dev_id;
diff --git a/sound/oss/ad1848.c b/sound/oss/ad1848.c
index 257b7536fb18..0ffa9970bf0f 100644
--- a/sound/oss/ad1848.c
+++ b/sound/oss/ad1848.c
@@ -195,7 +195,7 @@ static void ad1848_halt(int dev);
195static void ad1848_halt_input(int dev); 195static void ad1848_halt_input(int dev);
196static void ad1848_halt_output(int dev); 196static void ad1848_halt_output(int dev);
197static void ad1848_trigger(int dev, int bits); 197static void ad1848_trigger(int dev, int bits);
198static irqreturn_t adintr(int irq, void *dev_id, struct pt_regs *dummy); 198static irqreturn_t adintr(int irq, void *dev_id);
199 199
200#ifndef EXCLUDE_TIMERS 200#ifndef EXCLUDE_TIMERS
201static int ad1848_tmr_install(int dev); 201static int ad1848_tmr_install(int dev);
@@ -2196,7 +2196,7 @@ void ad1848_unload(int io_base, int irq, int dma_playback, int dma_capture, int
2196 printk(KERN_ERR "ad1848: Can't find device to be unloaded. Base=%x\n", io_base); 2196 printk(KERN_ERR "ad1848: Can't find device to be unloaded. Base=%x\n", io_base);
2197} 2197}
2198 2198
2199static irqreturn_t adintr(int irq, void *dev_id, struct pt_regs *dummy) 2199static irqreturn_t adintr(int irq, void *dev_id)
2200{ 2200{
2201 unsigned char status; 2201 unsigned char status;
2202 ad1848_info *devc; 2202 ad1848_info *devc;
diff --git a/sound/oss/ad1889.c b/sound/oss/ad1889.c
index f56f870b4840..09263d72a519 100644
--- a/sound/oss/ad1889.c
+++ b/sound/oss/ad1889.c
@@ -929,7 +929,7 @@ static struct pci_device_id ad1889_id_tbl[] = {
929}; 929};
930MODULE_DEVICE_TABLE(pci, ad1889_id_tbl); 930MODULE_DEVICE_TABLE(pci, ad1889_id_tbl);
931 931
932static irqreturn_t ad1889_interrupt(int irq, void *dev_id, struct pt_regs *regs) 932static irqreturn_t ad1889_interrupt(int irq, void *dev_id)
933{ 933{
934 u32 stat; 934 u32 stat;
935 ad1889_dev_t *dev = (ad1889_dev_t *)dev_id; 935 ad1889_dev_t *dev = (ad1889_dev_t *)dev_id;
diff --git a/sound/oss/btaudio.c b/sound/oss/btaudio.c
index 324a81fd3a3b..6ad384114239 100644
--- a/sound/oss/btaudio.c
+++ b/sound/oss/btaudio.c
@@ -824,7 +824,7 @@ static char *irq_name[] = { "", "", "", "OFLOW", "", "", "", "", "", "", "",
824 "RISCI", "FBUS", "FTRGT", "FDSR", "PPERR", 824 "RISCI", "FBUS", "FTRGT", "FDSR", "PPERR",
825 "RIPERR", "PABORT", "OCERR", "SCERR" }; 825 "RIPERR", "PABORT", "OCERR", "SCERR" };
826 826
827static irqreturn_t btaudio_irq(int irq, void *dev_id, struct pt_regs * regs) 827static irqreturn_t btaudio_irq(int irq, void *dev_id)
828{ 828{
829 int count = 0; 829 int count = 0;
830 u32 stat,astat; 830 u32 stat,astat;
diff --git a/sound/oss/cs46xx.c b/sound/oss/cs46xx.c
index 43193581f836..6e3c41f530e6 100644
--- a/sound/oss/cs46xx.c
+++ b/sound/oss/cs46xx.c
@@ -1613,7 +1613,7 @@ static void cs_handle_midi(struct cs_card *card)
1613 wake_up(&card->midi.owait); 1613 wake_up(&card->midi.owait);
1614} 1614}
1615 1615
1616static irqreturn_t cs_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1616static irqreturn_t cs_interrupt(int irq, void *dev_id)
1617{ 1617{
1618 struct cs_card *card = (struct cs_card *)dev_id; 1618 struct cs_card *card = (struct cs_card *)dev_id;
1619 /* Single channel card */ 1619 /* Single channel card */
diff --git a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c
index dc31373069a5..285239d64b82 100644
--- a/sound/oss/dmasound/dmasound_atari.c
+++ b/sound/oss/dmasound/dmasound_atari.c
@@ -133,7 +133,7 @@ static int FalconSetFormat(int format);
133static int FalconSetVolume(int volume); 133static int FalconSetVolume(int volume);
134static void AtaPlayNextFrame(int index); 134static void AtaPlayNextFrame(int index);
135static void AtaPlay(void); 135static void AtaPlay(void);
136static irqreturn_t AtaInterrupt(int irq, void *dummy, struct pt_regs *fp); 136static irqreturn_t AtaInterrupt(int irq, void *dummy);
137 137
138/*** Mid level stuff *********************************************************/ 138/*** Mid level stuff *********************************************************/
139 139
@@ -1257,7 +1257,7 @@ static void AtaPlay(void)
1257} 1257}
1258 1258
1259 1259
1260static irqreturn_t AtaInterrupt(int irq, void *dummy, struct pt_regs *fp) 1260static irqreturn_t AtaInterrupt(int irq, void *dummy)
1261{ 1261{
1262#if 0 1262#if 0
1263 /* ++TeSche: if you should want to test this... */ 1263 /* ++TeSche: if you should want to test this... */
diff --git a/sound/oss/dmasound/dmasound_awacs.c b/sound/oss/dmasound/dmasound_awacs.c
index 9ae659f82430..3bd19c36fcd9 100644
--- a/sound/oss/dmasound/dmasound_awacs.c
+++ b/sound/oss/dmasound/dmasound_awacs.c
@@ -281,9 +281,9 @@ static int PMacSetFormat(int format);
281static int PMacSetVolume(int volume); 281static int PMacSetVolume(int volume);
282static void PMacPlay(void); 282static void PMacPlay(void);
283static void PMacRecord(void); 283static void PMacRecord(void);
284static irqreturn_t pmac_awacs_tx_intr(int irq, void *devid, struct pt_regs *regs); 284static irqreturn_t pmac_awacs_tx_intr(int irq, void *devid);
285static irqreturn_t pmac_awacs_rx_intr(int irq, void *devid, struct pt_regs *regs); 285static irqreturn_t pmac_awacs_rx_intr(int irq, void *devid);
286static irqreturn_t pmac_awacs_intr(int irq, void *devid, struct pt_regs *regs); 286static irqreturn_t pmac_awacs_intr(int irq, void *devid);
287static void awacs_write(int val); 287static void awacs_write(int val);
288static int awacs_get_volume(int reg, int lshift); 288static int awacs_get_volume(int reg, int lshift);
289static int awacs_volume_setter(int volume, int n, int mute, int lshift); 289static int awacs_volume_setter(int volume, int n, int mute, int lshift);
@@ -398,7 +398,7 @@ read_audio_gpio(int gpio_addr)
398 * Headphone interrupt via GPIO (Tumbler, Snapper, DACA) 398 * Headphone interrupt via GPIO (Tumbler, Snapper, DACA)
399 */ 399 */
400static irqreturn_t 400static irqreturn_t
401headphone_intr(int irq, void *devid, struct pt_regs *regs) 401headphone_intr(int irq, void *devid)
402{ 402{
403 unsigned long flags; 403 unsigned long flags;
404 404
@@ -1037,7 +1037,7 @@ static void PMacRecord(void)
1037*/ 1037*/
1038 1038
1039static irqreturn_t 1039static irqreturn_t
1040pmac_awacs_tx_intr(int irq, void *devid, struct pt_regs *regs) 1040pmac_awacs_tx_intr(int irq, void *devid)
1041{ 1041{
1042 int i = write_sq.front; 1042 int i = write_sq.front;
1043 int stat; 1043 int stat;
@@ -1129,7 +1129,7 @@ printk("dmasound_pmac: tx-irq: xfer died - patching it up...\n") ;
1129 1129
1130 1130
1131static irqreturn_t 1131static irqreturn_t
1132pmac_awacs_rx_intr(int irq, void *devid, struct pt_regs *regs) 1132pmac_awacs_rx_intr(int irq, void *devid)
1133{ 1133{
1134 int stat ; 1134 int stat ;
1135 /* For some reason on my PowerBook G3, I get one interrupt 1135 /* For some reason on my PowerBook G3, I get one interrupt
@@ -1212,7 +1212,7 @@ printk("dmasound_pmac: rx-irq: DIED - attempting resurection\n");
1212 1212
1213 1213
1214static irqreturn_t 1214static irqreturn_t
1215pmac_awacs_intr(int irq, void *devid, struct pt_regs *regs) 1215pmac_awacs_intr(int irq, void *devid)
1216{ 1216{
1217 int ctrl; 1217 int ctrl;
1218 int status; 1218 int status;
diff --git a/sound/oss/dmasound/dmasound_paula.c b/sound/oss/dmasound/dmasound_paula.c
index 68e1d8f6c359..90fc058e1159 100644
--- a/sound/oss/dmasound/dmasound_paula.c
+++ b/sound/oss/dmasound/dmasound_paula.c
@@ -82,7 +82,7 @@ static int AmiSetVolume(int volume);
82static int AmiSetTreble(int treble); 82static int AmiSetTreble(int treble);
83static void AmiPlayNextFrame(int index); 83static void AmiPlayNextFrame(int index);
84static void AmiPlay(void); 84static void AmiPlay(void);
85static irqreturn_t AmiInterrupt(int irq, void *dummy, struct pt_regs *fp); 85static irqreturn_t AmiInterrupt(int irq, void *dummy);
86 86
87#ifdef CONFIG_HEARTBEAT 87#ifdef CONFIG_HEARTBEAT
88 88
@@ -556,7 +556,7 @@ static void AmiPlay(void)
556} 556}
557 557
558 558
559static irqreturn_t AmiInterrupt(int irq, void *dummy, struct pt_regs *fp) 559static irqreturn_t AmiInterrupt(int irq, void *dummy)
560{ 560{
561 int minframes = 1; 561 int minframes = 1;
562 562
diff --git a/sound/oss/dmasound/dmasound_q40.c b/sound/oss/dmasound/dmasound_q40.c
index e2081f32b0c4..b3379dd7ca5e 100644
--- a/sound/oss/dmasound/dmasound_q40.c
+++ b/sound/oss/dmasound/dmasound_q40.c
@@ -48,8 +48,8 @@ static int Q40SetFormat(int format);
48static int Q40SetVolume(int volume); 48static int Q40SetVolume(int volume);
49static void Q40PlayNextFrame(int index); 49static void Q40PlayNextFrame(int index);
50static void Q40Play(void); 50static void Q40Play(void);
51static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp); 51static irqreturn_t Q40StereoInterrupt(int irq, void *dummy);
52static irqreturn_t Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp); 52static irqreturn_t Q40MonoInterrupt(int irq, void *dummy);
53static void Q40Interrupt(void); 53static void Q40Interrupt(void);
54 54
55 55
@@ -451,7 +451,7 @@ static void Q40Play(void)
451 spin_unlock_irqrestore(&dmasound.lock, flags); 451 spin_unlock_irqrestore(&dmasound.lock, flags);
452} 452}
453 453
454static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp) 454static irqreturn_t Q40StereoInterrupt(int irq, void *dummy)
455{ 455{
456 spin_lock(&dmasound.lock); 456 spin_lock(&dmasound.lock);
457 if (q40_sc>1){ 457 if (q40_sc>1){
@@ -463,7 +463,7 @@ static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp)
463 spin_unlock(&dmasound.lock); 463 spin_unlock(&dmasound.lock);
464 return IRQ_HANDLED; 464 return IRQ_HANDLED;
465} 465}
466static irqreturn_t Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp) 466static irqreturn_t Q40MonoInterrupt(int irq, void *dummy)
467{ 467{
468 spin_lock(&dmasound.lock); 468 spin_lock(&dmasound.lock);
469 if (q40_sc>0){ 469 if (q40_sc>0){
diff --git a/sound/oss/emu10k1/irqmgr.c b/sound/oss/emu10k1/irqmgr.c
index d19b464ba01b..fb2ce638f01c 100644
--- a/sound/oss/emu10k1/irqmgr.c
+++ b/sound/oss/emu10k1/irqmgr.c
@@ -37,7 +37,7 @@
37 37
38/* Interrupt handler */ 38/* Interrupt handler */
39 39
40irqreturn_t emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 40irqreturn_t emu10k1_interrupt(int irq, void *dev_id)
41{ 41{
42 struct emu10k1_card *card = (struct emu10k1_card *) dev_id; 42 struct emu10k1_card *card = (struct emu10k1_card *) dev_id;
43 u32 irqstatus, irqstatus_tmp; 43 u32 irqstatus, irqstatus_tmp;
diff --git a/sound/oss/emu10k1/main.c b/sound/oss/emu10k1/main.c
index c4ce94d6e10c..6c59df7b0001 100644
--- a/sound/oss/emu10k1/main.c
+++ b/sound/oss/emu10k1/main.c
@@ -167,7 +167,7 @@ extern struct file_operations emu10k1_midi_fops;
167static struct midi_operations emu10k1_midi_operations; 167static struct midi_operations emu10k1_midi_operations;
168#endif 168#endif
169 169
170extern irqreturn_t emu10k1_interrupt(int, void *, struct pt_regs *s); 170extern irqreturn_t emu10k1_interrupt(int, void *);
171 171
172static int __devinit emu10k1_audio_init(struct emu10k1_card *card) 172static int __devinit emu10k1_audio_init(struct emu10k1_card *card)
173{ 173{
diff --git a/sound/oss/es1371.c b/sound/oss/es1371.c
index a2ffe723dad5..2562f4769b90 100644
--- a/sound/oss/es1371.c
+++ b/sound/oss/es1371.c
@@ -1100,7 +1100,7 @@ static void es1371_handle_midi(struct es1371_state *s)
1100 outb((s->midi.ocnt > 0) ? UCTRL_RXINTEN | UCTRL_ENA_TXINT : UCTRL_RXINTEN, s->io+ES1371_REG_UART_CONTROL); 1100 outb((s->midi.ocnt > 0) ? UCTRL_RXINTEN | UCTRL_ENA_TXINT : UCTRL_RXINTEN, s->io+ES1371_REG_UART_CONTROL);
1101} 1101}
1102 1102
1103static irqreturn_t es1371_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1103static irqreturn_t es1371_interrupt(int irq, void *dev_id)
1104{ 1104{
1105 struct es1371_state *s = (struct es1371_state *)dev_id; 1105 struct es1371_state *s = (struct es1371_state *)dev_id;
1106 unsigned int intsrc, sctl; 1106 unsigned int intsrc, sctl;
diff --git a/sound/oss/hal2.c b/sound/oss/hal2.c
index 80ab402dae9a..7807abac0625 100644
--- a/sound/oss/hal2.c
+++ b/sound/oss/hal2.c
@@ -370,7 +370,7 @@ static void hal2_adc_interrupt(struct hal2_codec *adc)
370 wake_up(&adc->dma_wait); 370 wake_up(&adc->dma_wait);
371} 371}
372 372
373static irqreturn_t hal2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 373static irqreturn_t hal2_interrupt(int irq, void *dev_id)
374{ 374{
375 struct hal2_card *hal2 = (struct hal2_card*)dev_id; 375 struct hal2_card *hal2 = (struct hal2_card*)dev_id;
376 irqreturn_t ret = IRQ_NONE; 376 irqreturn_t ret = IRQ_NONE;
diff --git a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c
index ddcddc2347f7..a48af879b466 100644
--- a/sound/oss/i810_audio.c
+++ b/sound/oss/i810_audio.c
@@ -1523,7 +1523,7 @@ static void i810_channel_interrupt(struct i810_card *card)
1523#endif 1523#endif
1524} 1524}
1525 1525
1526static irqreturn_t i810_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1526static irqreturn_t i810_interrupt(int irq, void *dev_id)
1527{ 1527{
1528 struct i810_card *card = (struct i810_card *)dev_id; 1528 struct i810_card *card = (struct i810_card *)dev_id;
1529 u32 status; 1529 u32 status;
diff --git a/sound/oss/mpu401.c b/sound/oss/mpu401.c
index 162d07cc489f..58d4a5d05a27 100644
--- a/sound/oss/mpu401.c
+++ b/sound/oss/mpu401.c
@@ -432,7 +432,7 @@ static void mpu401_input_loop(struct mpu_config *devc)
432 devc->m_busy = 0; 432 devc->m_busy = 0;
433} 433}
434 434
435static irqreturn_t mpuintr(int irq, void *dev_id, struct pt_regs *dummy) 435static irqreturn_t mpuintr(int irq, void *dev_id)
436{ 436{
437 struct mpu_config *devc; 437 struct mpu_config *devc;
438 int dev = (int) dev_id; 438 int dev = (int) dev_id;
diff --git a/sound/oss/mpu401.h b/sound/oss/mpu401.h
index 84c0e9522ef7..0ad1e9ee74f7 100644
--- a/sound/oss/mpu401.h
+++ b/sound/oss/mpu401.h
@@ -3,10 +3,9 @@
3int probe_uart401 (struct address_info *hw_config, struct module *owner); 3int probe_uart401 (struct address_info *hw_config, struct module *owner);
4void unload_uart401 (struct address_info *hw_config); 4void unload_uart401 (struct address_info *hw_config);
5 5
6irqreturn_t uart401intr (int irq, void *dev_id, struct pt_regs * dummy); 6irqreturn_t uart401intr (int irq, void *dev_id);
7 7
8/* From mpu401.c */ 8/* From mpu401.c */
9int probe_mpu401(struct address_info *hw_config, struct resource *ports); 9int probe_mpu401(struct address_info *hw_config, struct resource *ports);
10int attach_mpu401(struct address_info * hw_config, struct module *owner); 10int attach_mpu401(struct address_info * hw_config, struct module *owner);
11void unload_mpu401(struct address_info *hw_info); 11void unload_mpu401(struct address_info *hw_info);
12
diff --git a/sound/oss/msnd_pinnacle.c b/sound/oss/msnd_pinnacle.c
index 6d7763dae895..d5146790f5e3 100644
--- a/sound/oss/msnd_pinnacle.c
+++ b/sound/oss/msnd_pinnacle.c
@@ -1087,7 +1087,7 @@ static __inline__ void eval_dsp_msg(register WORD wMessage)
1087 } 1087 }
1088} 1088}
1089 1089
1090static irqreturn_t intr(int irq, void *dev_id, struct pt_regs *regs) 1090static irqreturn_t intr(int irq, void *dev_id)
1091{ 1091{
1092 /* Send ack to DSP */ 1092 /* Send ack to DSP */
1093 msnd_inb(dev.io + HP_RXL); 1093 msnd_inb(dev.io + HP_RXL);
diff --git a/sound/oss/nec_vrc5477.c b/sound/oss/nec_vrc5477.c
index 6f7f2f0423e4..da9728e17727 100644
--- a/sound/oss/nec_vrc5477.c
+++ b/sound/oss/nec_vrc5477.c
@@ -848,7 +848,7 @@ static inline void vrc5477_ac97_dac_interrupt(struct vrc5477_ac97_state *s)
848 wake_up_interruptible(&dac->wait); 848 wake_up_interruptible(&dac->wait);
849} 849}
850 850
851static irqreturn_t vrc5477_ac97_interrupt(int irq, void *dev_id, struct pt_regs *regs) 851static irqreturn_t vrc5477_ac97_interrupt(int irq, void *dev_id)
852{ 852{
853 struct vrc5477_ac97_state *s = (struct vrc5477_ac97_state *)dev_id; 853 struct vrc5477_ac97_state *s = (struct vrc5477_ac97_state *)dev_id;
854 u32 irqStatus; 854 u32 irqStatus;
diff --git a/sound/oss/nm256.h b/sound/oss/nm256.h
index 21e07b5081f2..1dade9033995 100644
--- a/sound/oss/nm256.h
+++ b/sound/oss/nm256.h
@@ -115,7 +115,7 @@ struct nm256_info
115 int has_irq; 115 int has_irq;
116 116
117 /* The card interrupt service routine. */ 117 /* The card interrupt service routine. */
118 irqreturn_t (*introutine) (int, void *, struct pt_regs *); 118 irq_handler_t introutine;
119 119
120 /* Current audio config, cached. */ 120 /* Current audio config, cached. */
121 struct sinfo { 121 struct sinfo {
diff --git a/sound/oss/nm256_audio.c b/sound/oss/nm256_audio.c
index 7760dddf2b32..44cd15505001 100644
--- a/sound/oss/nm256_audio.c
+++ b/sound/oss/nm256_audio.c
@@ -45,8 +45,8 @@ static struct audio_driver nm256_audio_driver;
45 45
46static int nm256_grabInterrupt (struct nm256_info *card); 46static int nm256_grabInterrupt (struct nm256_info *card);
47static int nm256_releaseInterrupt (struct nm256_info *card); 47static int nm256_releaseInterrupt (struct nm256_info *card);
48static irqreturn_t nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy); 48static irqreturn_t nm256_interrupt (int irq, void *dev_id);
49static irqreturn_t nm256_interrupt_zx (int irq, void *dev_id, struct pt_regs *dummy); 49static irqreturn_t nm256_interrupt_zx (int irq, void *dev_id);
50 50
51/* These belong in linux/pci.h. */ 51/* These belong in linux/pci.h. */
52#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005 52#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005
@@ -526,7 +526,7 @@ nm256_initHw (struct nm256_info *card)
526 */ 526 */
527 527
528static irqreturn_t 528static irqreturn_t
529nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy) 529nm256_interrupt (int irq, void *dev_id)
530{ 530{
531 struct nm256_info *card = (struct nm256_info *)dev_id; 531 struct nm256_info *card = (struct nm256_info *)dev_id;
532 u16 status; 532 u16 status;
@@ -629,7 +629,7 @@ nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy)
629 */ 629 */
630 630
631static irqreturn_t 631static irqreturn_t
632nm256_interrupt_zx (int irq, void *dev_id, struct pt_regs *dummy) 632nm256_interrupt_zx (int irq, void *dev_id)
633{ 633{
634 struct nm256_info *card = (struct nm256_info *)dev_id; 634 struct nm256_info *card = (struct nm256_info *)dev_id;
635 u32 status; 635 u32 status;
diff --git a/sound/oss/pas2_card.c b/sound/oss/pas2_card.c
index 4ebb9638746e..25f3a22c52ee 100644
--- a/sound/oss/pas2_card.c
+++ b/sound/oss/pas2_card.c
@@ -88,7 +88,7 @@ void pas_write(unsigned char data, int ioaddr)
88 88
89/******************* Begin of the Interrupt Handler ********************/ 89/******************* Begin of the Interrupt Handler ********************/
90 90
91static irqreturn_t pasintr(int irq, void *dev_id, struct pt_regs *dummy) 91static irqreturn_t pasintr(int irq, void *dev_id)
92{ 92{
93 int status; 93 int status;
94 94
diff --git a/sound/oss/sb_common.c b/sound/oss/sb_common.c
index bbe5b7596d0e..440537c72604 100644
--- a/sound/oss/sb_common.c
+++ b/sound/oss/sb_common.c
@@ -132,7 +132,7 @@ static void sb_intr (sb_devc *devc)
132 132
133 if (src & 4) /* MPU401 interrupt */ 133 if (src & 4) /* MPU401 interrupt */
134 if(devc->midi_irq_cookie) 134 if(devc->midi_irq_cookie)
135 uart401intr(devc->irq, devc->midi_irq_cookie, NULL); 135 uart401intr(devc->irq, devc->midi_irq_cookie);
136 136
137 if (!(src & 3)) 137 if (!(src & 3))
138 return; /* Not a DSP interrupt */ 138 return; /* Not a DSP interrupt */
@@ -200,7 +200,7 @@ static void pci_intr(sb_devc *devc)
200 sb_intr(devc); 200 sb_intr(devc);
201} 201}
202 202
203static irqreturn_t sbintr(int irq, void *dev_id, struct pt_regs *dummy) 203static irqreturn_t sbintr(int irq, void *dev_id)
204{ 204{
205 sb_devc *devc = dev_id; 205 sb_devc *devc = dev_id;
206 206
diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c
index 83ff8a71f716..3b3b4da8cfd3 100644
--- a/sound/oss/sh_dac_audio.c
+++ b/sound/oss/sh_dac_audio.c
@@ -263,7 +263,7 @@ struct file_operations dac_audio_fops = {
263 .release = dac_audio_release, 263 .release = dac_audio_release,
264}; 264};
265 265
266static irqreturn_t timer1_interrupt(int irq, void *dev, struct pt_regs *regs) 266static irqreturn_t timer1_interrupt(int irq, void *dev)
267{ 267{
268 unsigned long timer_status; 268 unsigned long timer_status;
269 269
diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
index 3edf8d4ac998..471c274c5000 100644
--- a/sound/oss/swarm_cs4297a.c
+++ b/sound/oss/swarm_cs4297a.c
@@ -2505,7 +2505,7 @@ static /*const */ struct file_operations cs4297a_audio_fops = {
2505 .release = cs4297a_release, 2505 .release = cs4297a_release,
2506}; 2506};
2507 2507
2508static void cs4297a_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2508static void cs4297a_interrupt(int irq, void *dev_id)
2509{ 2509{
2510 struct cs4297a_state *s = (struct cs4297a_state *) dev_id; 2510 struct cs4297a_state *s = (struct cs4297a_state *) dev_id;
2511 u32 status; 2511 u32 status;
diff --git a/sound/oss/trident.c b/sound/oss/trident.c
index 147c816a1f22..7a363a178afd 100644
--- a/sound/oss/trident.c
+++ b/sound/oss/trident.c
@@ -1811,7 +1811,7 @@ cyber_address_interrupt(struct trident_card *card)
1811} 1811}
1812 1812
1813static irqreturn_t 1813static irqreturn_t
1814trident_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1814trident_interrupt(int irq, void *dev_id)
1815{ 1815{
1816 struct trident_card *card = (struct trident_card *) dev_id; 1816 struct trident_card *card = (struct trident_card *) dev_id;
1817 u32 event; 1817 u32 event;
diff --git a/sound/oss/uart401.c b/sound/oss/uart401.c
index 8e18b6e25818..a446b826d5fc 100644
--- a/sound/oss/uart401.c
+++ b/sound/oss/uart401.c
@@ -96,7 +96,7 @@ static void uart401_input_loop(uart401_devc * devc)
96 printk(KERN_WARNING "Too much work in interrupt on uart401 (0x%X). UART jabbering ??\n", devc->base); 96 printk(KERN_WARNING "Too much work in interrupt on uart401 (0x%X). UART jabbering ??\n", devc->base);
97} 97}
98 98
99irqreturn_t uart401intr(int irq, void *dev_id, struct pt_regs *dummy) 99irqreturn_t uart401intr(int irq, void *dev_id)
100{ 100{
101 uart401_devc *devc = dev_id; 101 uart401_devc *devc = dev_id;
102 102
diff --git a/sound/oss/uart6850.c b/sound/oss/uart6850.c
index 501d3e654a67..f3f914aa92ee 100644
--- a/sound/oss/uart6850.c
+++ b/sound/oss/uart6850.c
@@ -104,7 +104,7 @@ static void uart6850_input_loop(void)
104 } 104 }
105} 105}
106 106
107static irqreturn_t m6850intr(int irq, void *dev_id, struct pt_regs *dummy) 107static irqreturn_t m6850intr(int irq, void *dev_id)
108{ 108{
109 if (input_avail()) 109 if (input_avail())
110 uart6850_input_loop(); 110 uart6850_input_loop();
diff --git a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c
index 2fec42fc3482..17837d4b5ed3 100644
--- a/sound/oss/via82cxxx_audio.c
+++ b/sound/oss/via82cxxx_audio.c
@@ -1912,7 +1912,7 @@ static void via_intr_channel (struct via_info *card, struct via_channel *chan)
1912} 1912}
1913 1913
1914 1914
1915static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1915static irqreturn_t via_interrupt(int irq, void *dev_id)
1916{ 1916{
1917 struct via_info *card = dev_id; 1917 struct via_info *card = dev_id;
1918 u32 status32; 1918 u32 status32;
@@ -1927,7 +1927,7 @@ static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1927 { 1927 {
1928#ifdef CONFIG_MIDI_VIA82CXXX 1928#ifdef CONFIG_MIDI_VIA82CXXX
1929 if (card->midi_devc) 1929 if (card->midi_devc)
1930 uart401intr(irq, card->midi_devc, regs); 1930 uart401intr(irq, card->midi_devc);
1931#endif 1931#endif
1932 return IRQ_HANDLED; 1932 return IRQ_HANDLED;
1933 } 1933 }
@@ -1950,7 +1950,7 @@ static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1950 return IRQ_HANDLED; 1950 return IRQ_HANDLED;
1951} 1951}
1952 1952
1953static irqreturn_t via_new_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1953static irqreturn_t via_new_interrupt(int irq, void *dev_id)
1954{ 1954{
1955 struct via_info *card = dev_id; 1955 struct via_info *card = dev_id;
1956 u32 status32; 1956 u32 status32;
diff --git a/sound/oss/vidc.h b/sound/oss/vidc.h
index d5b8064dc565..0d1424751ecd 100644
--- a/sound/oss/vidc.h
+++ b/sound/oss/vidc.h
@@ -33,7 +33,7 @@ extern unsigned long vidc_fill_2x16_s(unsigned long ibuf, unsigned long iend,
33 * DMA Interrupt handler 33 * DMA Interrupt handler
34 */ 34 */
35 35
36extern irqreturn_t vidc_sound_dma_irq(int irqnr, void *ref, struct pt_regs *regs); 36extern irqreturn_t vidc_sound_dma_irq(int irqnr, void *ref);
37 37
38/* 38/*
39 * Filler routine pointer 39 * Filler routine pointer
diff --git a/sound/oss/vwsnd.c b/sound/oss/vwsnd.c
index 5f140c7586b3..0cd4d6ec9862 100644
--- a/sound/oss/vwsnd.c
+++ b/sound/oss/vwsnd.c
@@ -2233,12 +2233,12 @@ static void vwsnd_audio_write_intr(vwsnd_dev_t *devc, unsigned int status)
2233 pcm_output(devc, underflown, 0); 2233 pcm_output(devc, underflown, 0);
2234} 2234}
2235 2235
2236static irqreturn_t vwsnd_audio_intr(int irq, void *dev_id, struct pt_regs *regs) 2236static irqreturn_t vwsnd_audio_intr(int irq, void *dev_id)
2237{ 2237{
2238 vwsnd_dev_t *devc = (vwsnd_dev_t *) dev_id; 2238 vwsnd_dev_t *devc = (vwsnd_dev_t *) dev_id;
2239 unsigned int status; 2239 unsigned int status;
2240 2240
2241 DBGEV("(irq=%d, dev_id=0x%p, regs=0x%p)\n", irq, dev_id, regs); 2241 DBGEV("(irq=%d, dev_id=0x%p)\n", irq, dev_id);
2242 2242
2243 status = li_get_clear_intr_status(&devc->lith); 2243 status = li_get_clear_intr_status(&devc->lith);
2244 vwsnd_audio_read_intr(devc, status); 2244 vwsnd_audio_read_intr(devc, status);
diff --git a/sound/oss/waveartist.c b/sound/oss/waveartist.c
index 59a2f28eb5a5..c5bf363d32c2 100644
--- a/sound/oss/waveartist.c
+++ b/sound/oss/waveartist.c
@@ -833,7 +833,7 @@ static struct audio_driver waveartist_audio_driver = {
833 833
834 834
835static irqreturn_t 835static irqreturn_t
836waveartist_intr(int irq, void *dev_id, struct pt_regs *regs) 836waveartist_intr(int irq, void *dev_id)
837{ 837{
838 wavnc_info *devc = (wavnc_info *)dev_id; 838 wavnc_info *devc = (wavnc_info *)dev_id;
839 int irqstatus, status; 839 int irqstatus, status;