aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
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/media
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/media')
-rw-r--r--drivers/media/common/saa7146_core.c2
-rw-r--r--drivers/media/dvb/b2c2/flexcop-pci.c2
-rw-r--r--drivers/media/dvb/b2c2/flexcop-usb.c2
-rw-r--r--drivers/media/dvb/bt8xx/bt878.c2
-rw-r--r--drivers/media/dvb/cinergyT2/cinergyT2.c4
-rw-r--r--drivers/media/dvb/dvb-usb/usb-urb.c2
-rw-r--r--drivers/media/dvb/pluto2/pluto2.c2
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c2
-rw-r--r--drivers/media/dvb/ttusb-dec/ttusb_dec.c4
-rw-r--r--drivers/media/video/arv.c2
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/video/cpia2/cpia2_usb.c4
-rw-r--r--drivers/media/video/cpia_usb.c2
-rw-r--r--drivers/media/video/cx88/cx88-alsa.c2
-rw-r--r--drivers/media/video/cx88/cx88-mpeg.c2
-rw-r--r--drivers/media/video/cx88/cx88-video.c2
-rw-r--r--drivers/media/video/dabusb.c2
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c6
-rw-r--r--drivers/media/video/et61x251/et61x251_core.c2
-rw-r--r--drivers/media/video/meye.c2
-rw-r--r--drivers/media/video/ov511.c2
-rw-r--r--drivers/media/video/planb.c4
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c4
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-io.c2
-rw-r--r--drivers/media/video/pwc/pwc-if.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-oss.c2
-rw-r--r--drivers/media/video/se401.c4
-rw-r--r--drivers/media/video/sn9c102/sn9c102_core.c2
-rw-r--r--drivers/media/video/stradis.c2
-rw-r--r--drivers/media/video/stv680.c2
-rw-r--r--drivers/media/video/usbvideo/konicawc.c2
-rw-r--r--drivers/media/video/usbvideo/quickcam_messenger.c4
-rw-r--r--drivers/media/video/usbvideo/usbvideo.c2
-rw-r--r--drivers/media/video/vino.c2
-rw-r--r--drivers/media/video/w9968cf.c4
-rw-r--r--drivers/media/video/zc0301/zc0301_core.c2
-rw-r--r--drivers/media/video/zoran_device.c3
-rw-r--r--drivers/media/video/zoran_device.h4
-rw-r--r--drivers/media/video/zr36120.c4
41 files changed, 52 insertions, 55 deletions
diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c
index b88451e33c09..86cbdbcf9d7d 100644
--- a/drivers/media/common/saa7146_core.c
+++ b/drivers/media/common/saa7146_core.c
@@ -230,7 +230,7 @@ int saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt
230 230
231/********************************************************************************/ 231/********************************************************************************/
232/* interrupt handler */ 232/* interrupt handler */
233static irqreturn_t interrupt_hw(int irq, void *dev_id, struct pt_regs *regs) 233static irqreturn_t interrupt_hw(int irq, void *dev_id)
234{ 234{
235 struct saa7146_dev *dev = dev_id; 235 struct saa7146_dev *dev = dev_id;
236 u32 isr = 0; 236 u32 isr = 0;
diff --git a/drivers/media/dvb/b2c2/flexcop-pci.c b/drivers/media/dvb/b2c2/flexcop-pci.c
index eb2e6432c8c2..06893243f3d4 100644
--- a/drivers/media/dvb/b2c2/flexcop-pci.c
+++ b/drivers/media/dvb/b2c2/flexcop-pci.c
@@ -122,7 +122,7 @@ static void flexcop_pci_irq_check_work(void *data)
122/* When PID filtering is turned on, we use the timer IRQ, because small amounts 122/* When PID filtering is turned on, we use the timer IRQ, because small amounts
123 * of data need to be passed to the user space instantly as well. When PID 123 * of data need to be passed to the user space instantly as well. When PID
124 * filtering is turned off, we use the page-change-IRQ */ 124 * filtering is turned off, we use the page-change-IRQ */
125static irqreturn_t flexcop_pci_isr(int irq, void *dev_id, struct pt_regs *regs) 125static irqreturn_t flexcop_pci_isr(int irq, void *dev_id)
126{ 126{
127 struct flexcop_pci *fc_pci = dev_id; 127 struct flexcop_pci *fc_pci = dev_id;
128 struct flexcop_device *fc = fc_pci->fc_dev; 128 struct flexcop_device *fc = fc_pci->fc_dev;
diff --git a/drivers/media/dvb/b2c2/flexcop-usb.c b/drivers/media/dvb/b2c2/flexcop-usb.c
index 515954f96c9a..2853ea1bdaf1 100644
--- a/drivers/media/dvb/b2c2/flexcop-usb.c
+++ b/drivers/media/dvb/b2c2/flexcop-usb.c
@@ -328,7 +328,7 @@ static void flexcop_usb_process_frame(struct flexcop_usb *fc_usb, u8 *buffer, in
328 fc_usb->tmp_buffer_length = l; 328 fc_usb->tmp_buffer_length = l;
329} 329}
330 330
331static void flexcop_usb_urb_complete(struct urb *urb, struct pt_regs *ptregs) 331static void flexcop_usb_urb_complete(struct urb *urb)
332{ 332{
333 struct flexcop_usb *fc_usb = urb->context; 333 struct flexcop_usb *fc_usb = urb->context;
334 int i; 334 int i;
diff --git a/drivers/media/dvb/bt8xx/bt878.c b/drivers/media/dvb/bt8xx/bt878.c
index 755822ee6e9b..329a51c18562 100644
--- a/drivers/media/dvb/bt8xx/bt878.c
+++ b/drivers/media/dvb/bt8xx/bt878.c
@@ -266,7 +266,7 @@ EXPORT_SYMBOL(bt878_stop);
266/* Interrupt service routine */ 266/* Interrupt service routine */
267/*****************************/ 267/*****************************/
268 268
269static irqreturn_t bt878_irq(int irq, void *dev_id, struct pt_regs *regs) 269static irqreturn_t bt878_irq(int irq, void *dev_id)
270{ 270{
271 u32 stat, astat, mask; 271 u32 stat, astat, mask;
272 int count; 272 int count;
diff --git a/drivers/media/dvb/cinergyT2/cinergyT2.c b/drivers/media/dvb/cinergyT2/cinergyT2.c
index 410fa6d620ff..ff7d4f56ced3 100644
--- a/drivers/media/dvb/cinergyT2/cinergyT2.c
+++ b/drivers/media/dvb/cinergyT2/cinergyT2.c
@@ -238,7 +238,7 @@ static void cinergyt2_sleep (struct cinergyt2 *cinergyt2, int sleep)
238 cinergyt2->sleeping = sleep; 238 cinergyt2->sleeping = sleep;
239} 239}
240 240
241static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs); 241static void cinergyt2_stream_irq (struct urb *urb);
242 242
243static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb *urb) 243static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb *urb)
244{ 244{
@@ -258,7 +258,7 @@ static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb
258 return err; 258 return err;
259} 259}
260 260
261static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs) 261static void cinergyt2_stream_irq (struct urb *urb)
262{ 262{
263 struct cinergyt2 *cinergyt2 = urb->context; 263 struct cinergyt2 *cinergyt2 = urb->context;
264 264
diff --git a/drivers/media/dvb/dvb-usb/usb-urb.c b/drivers/media/dvb/dvb-usb/usb-urb.c
index 572b2d9aa66a..78035ee824ca 100644
--- a/drivers/media/dvb/dvb-usb/usb-urb.c
+++ b/drivers/media/dvb/dvb-usb/usb-urb.c
@@ -11,7 +11,7 @@
11#include "dvb-usb-common.h" 11#include "dvb-usb-common.h"
12 12
13/* URB stuff for streaming */ 13/* URB stuff for streaming */
14static void usb_urb_complete(struct urb *urb, struct pt_regs *ptregs) 14static void usb_urb_complete(struct urb *urb)
15{ 15{
16 struct usb_data_stream *stream = urb->context; 16 struct usb_data_stream *stream = urb->context;
17 int ptype = usb_pipetype(urb->pipe); 17 int ptype = usb_pipetype(urb->pipe);
diff --git a/drivers/media/dvb/pluto2/pluto2.c b/drivers/media/dvb/pluto2/pluto2.c
index 2310b2bfed4e..8e4ce101eb22 100644
--- a/drivers/media/dvb/pluto2/pluto2.c
+++ b/drivers/media/dvb/pluto2/pluto2.c
@@ -306,7 +306,7 @@ static void pluto_dma_end(struct pluto *pluto, unsigned int nbpackets)
306 TS_DMA_BYTES, PCI_DMA_FROMDEVICE); 306 TS_DMA_BYTES, PCI_DMA_FROMDEVICE);
307} 307}
308 308
309static irqreturn_t pluto_irq(int irq, void *dev_id, struct pt_regs *regs) 309static irqreturn_t pluto_irq(int irq, void *dev_id)
310{ 310{
311 struct pluto *pluto = dev_id; 311 struct pluto *pluto = dev_id;
312 u32 tscr; 312 u32 tscr;
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index 234199875f53..60820deb900b 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -732,7 +732,7 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
732 } 732 }
733} 733}
734 734
735static void ttusb_iso_irq(struct urb *urb, struct pt_regs *ptregs) 735static void ttusb_iso_irq(struct urb *urb)
736{ 736{
737 struct ttusb *ttusb = urb->context; 737 struct ttusb *ttusb = urb->context;
738 738
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index de077a757192..a1c9fa9919ea 100644
--- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@ -203,7 +203,7 @@ static u16 rc_keys[] = {
203static void ttusb_dec_set_model(struct ttusb_dec *dec, 203static void ttusb_dec_set_model(struct ttusb_dec *dec,
204 enum ttusb_dec_model model); 204 enum ttusb_dec_model model);
205 205
206static void ttusb_dec_handle_irq( struct urb *urb, struct pt_regs *regs) 206static void ttusb_dec_handle_irq( struct urb *urb)
207{ 207{
208 struct ttusb_dec * dec = urb->context; 208 struct ttusb_dec * dec = urb->context;
209 char *buffer = dec->irq_buffer; 209 char *buffer = dec->irq_buffer;
@@ -755,7 +755,7 @@ static void ttusb_dec_process_urb_frame_list(unsigned long data)
755 } 755 }
756} 756}
757 757
758static void ttusb_dec_process_urb(struct urb *urb, struct pt_regs *ptregs) 758static void ttusb_dec_process_urb(struct urb *urb)
759{ 759{
760 struct ttusb_dec *dec = urb->context; 760 struct ttusb_dec *dec = urb->context;
761 761
diff --git a/drivers/media/video/arv.c b/drivers/media/video/arv.c
index 5c5e682a3004..4861799eb430 100644
--- a/drivers/media/video/arv.c
+++ b/drivers/media/video/arv.c
@@ -549,7 +549,7 @@ static int ar_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
549/* 549/*
550 * Interrupt handler 550 * Interrupt handler
551 */ 551 */
552static void ar_interrupt(int irq, void *dev, struct pt_regs *regs) 552static void ar_interrupt(int irq, void *dev)
553{ 553{
554 struct ar_device *ar = dev; 554 struct ar_device *ar = dev;
555 unsigned int line_count; 555 unsigned int line_count;
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 50dde82844ec..6e1ddad9f0c1 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3753,7 +3753,7 @@ bttv_irq_switch_vbi(struct bttv *btv)
3753 spin_unlock(&btv->s_lock); 3753 spin_unlock(&btv->s_lock);
3754} 3754}
3755 3755
3756static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs) 3756static irqreturn_t bttv_irq(int irq, void *dev_id)
3757{ 3757{
3758 u32 stat,astat; 3758 u32 stat,astat;
3759 u32 dstat; 3759 u32 dstat;
diff --git a/drivers/media/video/cpia2/cpia2_usb.c b/drivers/media/video/cpia2/cpia2_usb.c
index f4da02941493..28dc6a1a1e43 100644
--- a/drivers/media/video/cpia2/cpia2_usb.c
+++ b/drivers/media/video/cpia2/cpia2_usb.c
@@ -49,7 +49,7 @@ static int frame_sizes[] = {
49#define FRAME_SIZE_PER_DESC frame_sizes[cam->cur_alt] 49#define FRAME_SIZE_PER_DESC frame_sizes[cam->cur_alt]
50 50
51static void process_frame(struct camera_data *cam); 51static void process_frame(struct camera_data *cam);
52static void cpia2_usb_complete(struct urb *urb, struct pt_regs *); 52static void cpia2_usb_complete(struct urb *urb);
53static int cpia2_usb_probe(struct usb_interface *intf, 53static int cpia2_usb_probe(struct usb_interface *intf,
54 const struct usb_device_id *id); 54 const struct usb_device_id *id);
55static void cpia2_usb_disconnect(struct usb_interface *intf); 55static void cpia2_usb_disconnect(struct usb_interface *intf);
@@ -199,7 +199,7 @@ static void add_COM(struct camera_data *cam)
199 * 199 *
200 * callback when incoming packet is received 200 * callback when incoming packet is received
201 *****************************************************************************/ 201 *****************************************************************************/
202static void cpia2_usb_complete(struct urb *urb, struct pt_regs *regs) 202static void cpia2_usb_complete(struct urb *urb)
203{ 203{
204 int i; 204 int i;
205 unsigned char *cdata; 205 unsigned char *cdata;
diff --git a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c
index 2ee34a3b9280..9da4726eb9b9 100644
--- a/drivers/media/video/cpia_usb.c
+++ b/drivers/media/video/cpia_usb.c
@@ -109,7 +109,7 @@ static struct cpia_camera_ops cpia_usb_ops = {
109static LIST_HEAD(cam_list); 109static LIST_HEAD(cam_list);
110static spinlock_t cam_list_lock_usb; 110static spinlock_t cam_list_lock_usb;
111 111
112static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) 112static void cpia_usb_complete(struct urb *urb)
113{ 113{
114 int i; 114 int i;
115 char *cdata; 115 char *cdata;
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index f0340662e078..e4355fdc3b6d 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -262,7 +262,7 @@ static void cx8801_aud_irq(snd_cx88_card_t *chip)
262/* 262/*
263 * BOARD Specific: Handles IRQ calls 263 * BOARD Specific: Handles IRQ calls
264 */ 264 */
265static irqreturn_t cx8801_irq(int irq, void *dev_id, struct pt_regs *regs) 265static irqreturn_t cx8801_irq(int irq, void *dev_id)
266{ 266{
267 snd_cx88_card_t *chip = dev_id; 267 snd_cx88_card_t *chip = dev_id;
268 struct cx88_core *core = chip->core; 268 struct cx88_core *core = chip->core;
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index d6d980774c21..6b23a4e6f66d 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -376,7 +376,7 @@ static void cx8802_mpeg_irq(struct cx8802_dev *dev)
376 376
377#define MAX_IRQ_LOOP 10 377#define MAX_IRQ_LOOP 10
378 378
379static irqreturn_t cx8802_irq(int irq, void *dev_id, struct pt_regs *regs) 379static irqreturn_t cx8802_irq(int irq, void *dev_id)
380{ 380{
381 struct cx8802_dev *dev = dev_id; 381 struct cx8802_dev *dev = dev_id;
382 struct cx88_core *core = dev->core; 382 struct cx88_core *core = dev->core;
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index cb0c0eea20f9..90e298d074d1 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1744,7 +1744,7 @@ static void cx8800_vid_irq(struct cx8800_dev *dev)
1744 } 1744 }
1745} 1745}
1746 1746
1747static irqreturn_t cx8800_irq(int irq, void *dev_id, struct pt_regs *regs) 1747static irqreturn_t cx8800_irq(int irq, void *dev_id)
1748{ 1748{
1749 struct cx8800_dev *dev = dev_id; 1749 struct cx8800_dev *dev = dev_id;
1750 struct cx88_core *core = dev->core; 1750 struct cx88_core *core = dev->core;
diff --git a/drivers/media/video/dabusb.c b/drivers/media/video/dabusb.c
index b9ba95f5e026..b1012e92ee04 100644
--- a/drivers/media/video/dabusb.c
+++ b/drivers/media/video/dabusb.c
@@ -166,7 +166,7 @@ static int dabusb_free_buffers (pdabusb_t s)
166 return 0; 166 return 0;
167} 167}
168/*-------------------------------------------------------------------*/ 168/*-------------------------------------------------------------------*/
169static void dabusb_iso_complete (struct urb *purb, struct pt_regs *regs) 169static void dabusb_iso_complete (struct urb *purb)
170{ 170{
171 pbuff_t b = purb->context; 171 pbuff_t b = purb->context;
172 pdabusb_t s = b->s; 172 pdabusb_t s = b->s;
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index 4350cc75b025..255a47dfb84f 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -382,7 +382,7 @@ int em28xx_resolution_set(struct em28xx *dev)
382/******************* isoc transfer handling ****************************/ 382/******************* isoc transfer handling ****************************/
383 383
384#ifdef ENABLE_DEBUG_ISOC_FRAMES 384#ifdef ENABLE_DEBUG_ISOC_FRAMES
385static void em28xx_isoc_dump(struct urb *urb, struct pt_regs *regs) 385static void em28xx_isoc_dump(struct urb *urb)
386{ 386{
387 int len = 0; 387 int len = 0;
388 int ntrans = 0; 388 int ntrans = 0;
@@ -534,7 +534,7 @@ static inline void em28xx_isoc_video_copy(struct em28xx *dev,
534 * em28xx_isoIrq() 534 * em28xx_isoIrq()
535 * handles the incoming isoc urbs and fills the frames from our inqueue 535 * handles the incoming isoc urbs and fills the frames from our inqueue
536 */ 536 */
537static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs) 537static void em28xx_isocIrq(struct urb *urb)
538{ 538{
539 struct em28xx *dev = urb->context; 539 struct em28xx *dev = urb->context;
540 int i, status; 540 int i, status;
@@ -545,7 +545,7 @@ static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs)
545 return; 545 return;
546#ifdef ENABLE_DEBUG_ISOC_FRAMES 546#ifdef ENABLE_DEBUG_ISOC_FRAMES
547 if (isoc_debug>1) 547 if (isoc_debug>1)
548 em28xx_isoc_dump(urb, regs); 548 em28xx_isoc_dump(urb);
549#endif 549#endif
550 550
551 if (urb->status == -ENOENT) 551 if (urb->status == -ENOENT)
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
index 8992b6e62b9f..bc544cc7ccb8 100644
--- a/drivers/media/video/et61x251/et61x251_core.c
+++ b/drivers/media/video/et61x251/et61x251_core.c
@@ -398,7 +398,7 @@ int et61x251_i2c_write(struct et61x251_device* cam, u8 address, u8 value)
398 398
399/*****************************************************************************/ 399/*****************************************************************************/
400 400
401static void et61x251_urb_complete(struct urb *urb, struct pt_regs* regs) 401static void et61x251_urb_complete(struct urb *urb)
402{ 402{
403 struct et61x251_device* cam = urb->context; 403 struct et61x251_device* cam = urb->context;
404 struct et61x251_frame_t** f; 404 struct et61x251_frame_t** f;
diff --git a/drivers/media/video/meye.c b/drivers/media/video/meye.c
index e278753f8f25..b083338823df 100644
--- a/drivers/media/video/meye.c
+++ b/drivers/media/video/meye.c
@@ -786,7 +786,7 @@ static void mchip_cont_compression_start(void)
786/* Interrupt handling */ 786/* Interrupt handling */
787/****************************************************************************/ 787/****************************************************************************/
788 788
789static irqreturn_t meye_irq(int irq, void *dev_id, struct pt_regs *regs) 789static irqreturn_t meye_irq(int irq, void *dev_id)
790{ 790{
791 u32 v; 791 u32 v;
792 int reqnr; 792 int reqnr;
diff --git a/drivers/media/video/ov511.c b/drivers/media/video/ov511.c
index 5d8cd283fcd8..ce4886f1528d 100644
--- a/drivers/media/video/ov511.c
+++ b/drivers/media/video/ov511.c
@@ -3503,7 +3503,7 @@ check_middle:
3503} 3503}
3504 3504
3505static void 3505static void
3506ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs) 3506ov51x_isoc_irq(struct urb *urb)
3507{ 3507{
3508 int i; 3508 int i;
3509 struct usb_ov511 *ov; 3509 struct usb_ov511 *ov;
diff --git a/drivers/media/video/planb.c b/drivers/media/video/planb.c
index 3484e36b6801..368d6e219fa4 100644
--- a/drivers/media/video/planb.c
+++ b/drivers/media/video/planb.c
@@ -91,7 +91,7 @@ static void planb_close(struct video_device *);
91static int planb_ioctl(struct video_device *, unsigned int, void *); 91static int planb_ioctl(struct video_device *, unsigned int, void *);
92static int planb_init_done(struct video_device *); 92static int planb_init_done(struct video_device *);
93static int planb_mmap(struct video_device *, const char *, unsigned long); 93static int planb_mmap(struct video_device *, const char *, unsigned long);
94static void planb_irq(int, void *, struct pt_regs *); 94static void planb_irq(int, void *);
95static void release_planb(void); 95static void release_planb(void);
96int init_planbs(struct video_init *); 96int init_planbs(struct video_init *);
97 97
@@ -1316,7 +1316,7 @@ cmd_tab_data_end:
1316 return c1; 1316 return c1;
1317} 1317}
1318 1318
1319static void planb_irq(int irq, void *dev_id, struct pt_regs * regs) 1319static void planb_irq(int irq, void *dev_id)
1320{ 1320{
1321 unsigned int stat, astat; 1321 unsigned int stat, astat;
1322 struct planb *pb = (struct planb *)dev_id; 1322 struct planb *pb = (struct planb *)dev_id;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 3d8cd0daf6a9..f920e0ccacd3 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2552,7 +2552,7 @@ void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int v)
2552} 2552}
2553 2553
2554 2554
2555static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs) 2555static void pvr2_ctl_write_complete(struct urb *urb)
2556{ 2556{
2557 struct pvr2_hdw *hdw = urb->context; 2557 struct pvr2_hdw *hdw = urb->context;
2558 hdw->ctl_write_pend_flag = 0; 2558 hdw->ctl_write_pend_flag = 0;
@@ -2561,7 +2561,7 @@ static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs)
2561} 2561}
2562 2562
2563 2563
2564static void pvr2_ctl_read_complete(struct urb *urb, struct pt_regs *regs) 2564static void pvr2_ctl_read_complete(struct urb *urb)
2565{ 2565{
2566 struct pvr2_hdw *hdw = urb->context; 2566 struct pvr2_hdw *hdw = urb->context;
2567 hdw->ctl_read_pend_flag = 0; 2567 hdw->ctl_read_pend_flag = 0;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.c b/drivers/media/video/pvrusb2/pvrusb2-io.c
index 1e393762546c..70aa63eba0cb 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-io.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-io.c
@@ -429,7 +429,7 @@ static void pvr2_stream_done(struct pvr2_stream *sp)
429 } while (0); mutex_unlock(&sp->mutex); 429 } while (0); mutex_unlock(&sp->mutex);
430} 430}
431 431
432static void buffer_complete(struct urb *urb, struct pt_regs *regs) 432static void buffer_complete(struct urb *urb)
433{ 433{
434 struct pvr2_buffer *bp = urb->context; 434 struct pvr2_buffer *bp = urb->context;
435 struct pvr2_stream *sp; 435 struct pvr2_stream *sp;
diff --git a/drivers/media/video/pwc/pwc-if.c b/drivers/media/video/pwc/pwc-if.c
index 53c4b5790d5c..c77b85cf3d80 100644
--- a/drivers/media/video/pwc/pwc-if.c
+++ b/drivers/media/video/pwc/pwc-if.c
@@ -682,7 +682,7 @@ static int pwc_rcv_short_packet(struct pwc_device *pdev, const struct pwc_frame_
682/* This gets called for the Isochronous pipe (video). This is done in 682/* This gets called for the Isochronous pipe (video). This is done in
683 * interrupt time, so it has to be fast, not crash, and not stall. Neat. 683 * interrupt time, so it has to be fast, not crash, and not stall. Neat.
684 */ 684 */
685static void pwc_isoc_handler(struct urb *urb, struct pt_regs *regs) 685static void pwc_isoc_handler(struct urb *urb)
686{ 686{
687 struct pwc_device *pdev; 687 struct pwc_device *pdev;
688 int i, fst, flen; 688 int i, fst, flen;
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index a39e0136ce3b..4abf5c03a740 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -212,7 +212,7 @@ static void saa7134_irq_alsa_done(struct saa7134_dev *dev,
212 * 212 *
213 */ 213 */
214 214
215static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs) 215static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id)
216{ 216{
217 struct saa7134_dmasound *dmasound = dev_id; 217 struct saa7134_dmasound *dmasound = dev_id;
218 struct saa7134_dev *dev = dmasound->priv_data; 218 struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index 09aa62f61af7..5c9e63dfbea6 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -495,7 +495,7 @@ static void print_irqstatus(struct saa7134_dev *dev, int loop,
495 printk("\n"); 495 printk("\n");
496} 496}
497 497
498static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs) 498static irqreturn_t saa7134_irq(int irq, void *dev_id)
499{ 499{
500 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id; 500 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id;
501 unsigned long report,status; 501 unsigned long report,status;
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c
index 2e3ba5f31453..bfcb860d14cc 100644
--- a/drivers/media/video/saa7134/saa7134-oss.c
+++ b/drivers/media/video/saa7134/saa7134-oss.c
@@ -814,7 +814,7 @@ struct file_operations saa7134_mixer_fops = {
814 814
815/* ------------------------------------------------------------------ */ 815/* ------------------------------------------------------------------ */
816 816
817static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs) 817static irqreturn_t saa7134_oss_irq(int irq, void *dev_id)
818{ 818{
819 struct saa7134_dmasound *dmasound = dev_id; 819 struct saa7134_dmasound *dmasound = dev_id;
820 struct saa7134_dev *dev = dmasound->priv_data; 820 struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/drivers/media/video/se401.c b/drivers/media/video/se401.c
index 67987baee77a..7aeec574d7ce 100644
--- a/drivers/media/video/se401.c
+++ b/drivers/media/video/se401.c
@@ -282,7 +282,7 @@ static void se401_auto_resetlevel(struct usb_se401 *se401)
282} 282}
283 283
284/* irq handler for snapshot button */ 284/* irq handler for snapshot button */
285static void se401_button_irq(struct urb *urb, struct pt_regs *regs) 285static void se401_button_irq(struct urb *urb)
286{ 286{
287 struct usb_se401 *se401 = urb->context; 287 struct usb_se401 *se401 = urb->context;
288 int status; 288 int status;
@@ -318,7 +318,7 @@ exit:
318 __FUNCTION__, status); 318 __FUNCTION__, status);
319} 319}
320 320
321static void se401_video_irq(struct urb *urb, struct pt_regs *regs) 321static void se401_video_irq(struct urb *urb)
322{ 322{
323 struct usb_se401 *se401 = urb->context; 323 struct usb_se401 *se401 = urb->context;
324 int length = urb->actual_length; 324 int length = urb->actual_length;
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
index 48d138a7c723..3e0ff8a78468 100644
--- a/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/drivers/media/video/sn9c102/sn9c102_core.c
@@ -518,7 +518,7 @@ sn9c102_find_eof_header(struct sn9c102_device* cam, void* mem, size_t len)
518} 518}
519 519
520 520
521static void sn9c102_urb_complete(struct urb *urb, struct pt_regs* regs) 521static void sn9c102_urb_complete(struct urb *urb)
522{ 522{
523 struct sn9c102_device* cam = urb->context; 523 struct sn9c102_device* cam = urb->context;
524 struct sn9c102_frame_t** f; 524 struct sn9c102_frame_t** f;
diff --git a/drivers/media/video/stradis.c b/drivers/media/video/stradis.c
index 5686547ba76a..525d81288d55 100644
--- a/drivers/media/video/stradis.c
+++ b/drivers/media/video/stradis.c
@@ -406,7 +406,7 @@ static void send_osd_data(struct saa7146 *saa)
406 } 406 }
407} 407}
408 408
409static irqreturn_t saa7146_irq(int irq, void *dev_id, struct pt_regs *regs) 409static irqreturn_t saa7146_irq(int irq, void *dev_id)
410{ 410{
411 struct saa7146 *saa = dev_id; 411 struct saa7146 *saa = dev_id;
412 u32 stat, astat; 412 u32 stat, astat;
diff --git a/drivers/media/video/stv680.c b/drivers/media/video/stv680.c
index 2ba2991a214f..87e11300181d 100644
--- a/drivers/media/video/stv680.c
+++ b/drivers/media/video/stv680.c
@@ -582,7 +582,7 @@ static int stv680_set_pict (struct usb_stv *stv680, struct video_picture *p)
582 return 0; 582 return 0;
583} 583}
584 584
585static void stv680_video_irq (struct urb *urb, struct pt_regs *regs) 585static void stv680_video_irq (struct urb *urb)
586{ 586{
587 struct usb_stv *stv680 = urb->context; 587 struct usb_stv *stv680 = urb->context;
588 int length = urb->actual_length; 588 int length = urb->actual_length;
diff --git a/drivers/media/video/usbvideo/konicawc.c b/drivers/media/video/usbvideo/konicawc.c
index 4eee8be88314..abe214619092 100644
--- a/drivers/media/video/usbvideo/konicawc.c
+++ b/drivers/media/video/usbvideo/konicawc.c
@@ -387,7 +387,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
387} 387}
388 388
389 389
390static void konicawc_isoc_irq(struct urb *urb, struct pt_regs *regs) 390static void konicawc_isoc_irq(struct urb *urb)
391{ 391{
392 struct uvd *uvd = urb->context; 392 struct uvd *uvd = urb->context;
393 struct konicawc *cam = (struct konicawc *)uvd->user_data; 393 struct konicawc *cam = (struct konicawc *)uvd->user_data;
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.c b/drivers/media/video/usbvideo/quickcam_messenger.c
index 56e01b622417..9a26b9484aae 100644
--- a/drivers/media/video/usbvideo/quickcam_messenger.c
+++ b/drivers/media/video/usbvideo/quickcam_messenger.c
@@ -125,7 +125,7 @@ static void qcm_report_buttonstat(struct qcm *cam)
125 } 125 }
126} 126}
127 127
128static void qcm_int_irq(struct urb *urb, struct pt_regs *regs) 128static void qcm_int_irq(struct urb *urb)
129{ 129{
130 int ret; 130 int ret;
131 struct uvd *uvd = urb->context; 131 struct uvd *uvd = urb->context;
@@ -606,7 +606,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
606 err("usb_submit_urb error (%d)", ret); 606 err("usb_submit_urb error (%d)", ret);
607} 607}
608 608
609static void qcm_isoc_irq(struct urb *urb, struct pt_regs *regs) 609static void qcm_isoc_irq(struct urb *urb)
610{ 610{
611 int len; 611 int len;
612 struct uvd *uvd = urb->context; 612 struct uvd *uvd = urb->context;
diff --git a/drivers/media/video/usbvideo/usbvideo.c b/drivers/media/video/usbvideo/usbvideo.c
index 13b37c8c0d56..d8b88024bc2f 100644
--- a/drivers/media/video/usbvideo/usbvideo.c
+++ b/drivers/media/video/usbvideo/usbvideo.c
@@ -1680,7 +1680,7 @@ static int usbvideo_CompressIsochronous(struct uvd *uvd, struct urb *urb)
1680 return totlen; 1680 return totlen;
1681} 1681}
1682 1682
1683static void usbvideo_IsocIrq(struct urb *urb, struct pt_regs *regs) 1683static void usbvideo_IsocIrq(struct urb *urb)
1684{ 1684{
1685 int i, ret, len; 1685 int i, ret, len;
1686 struct uvd *uvd = urb->context; 1686 struct uvd *uvd = urb->context;
diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
index d1e04f7c530b..6b6dff4d236a 100644
--- a/drivers/media/video/vino.c
+++ b/drivers/media/video/vino.c
@@ -2325,7 +2325,7 @@ static void vino_capture_tasklet(unsigned long channel) {
2325 } 2325 }
2326} 2326}
2327 2327
2328static irqreturn_t vino_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2328static irqreturn_t vino_interrupt(int irq, void *dev_id)
2329{ 2329{
2330 u32 ctrl, intr; 2330 u32 ctrl, intr;
2331 unsigned int fc_a, fc_b; 2331 unsigned int fc_a, fc_b;
diff --git a/drivers/media/video/w9968cf.c b/drivers/media/video/w9968cf.c
index 2912326a5aef..ddce2fb83424 100644
--- a/drivers/media/video/w9968cf.c
+++ b/drivers/media/video/w9968cf.c
@@ -417,7 +417,7 @@ static int w9968cf_write_fsb(struct w9968cf_device*, u16* data);
417static int w9968cf_write_sb(struct w9968cf_device*, u16 value); 417static int w9968cf_write_sb(struct w9968cf_device*, u16 value);
418static int w9968cf_read_sb(struct w9968cf_device*); 418static int w9968cf_read_sb(struct w9968cf_device*);
419static int w9968cf_upload_quantizationtables(struct w9968cf_device*); 419static int w9968cf_upload_quantizationtables(struct w9968cf_device*);
420static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs); 420static void w9968cf_urb_complete(struct urb *urb);
421 421
422/* Low-level I2C (SMBus) I/O */ 422/* Low-level I2C (SMBus) I/O */
423static int w9968cf_smbus_start(struct w9968cf_device*); 423static int w9968cf_smbus_start(struct w9968cf_device*);
@@ -781,7 +781,7 @@ static int w9968cf_allocate_memory(struct w9968cf_device* cam)
781 If there are no requested frames in the FIFO list, packets are collected into 781 If there are no requested frames in the FIFO list, packets are collected into
782 a temporary buffer. 782 a temporary buffer.
783 --------------------------------------------------------------------------*/ 783 --------------------------------------------------------------------------*/
784static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs) 784static void w9968cf_urb_complete(struct urb *urb)
785{ 785{
786 struct w9968cf_device* cam = (struct w9968cf_device*)urb->context; 786 struct w9968cf_device* cam = (struct w9968cf_device*)urb->context;
787 struct w9968cf_frame_t** f; 787 struct w9968cf_frame_t** f;
diff --git a/drivers/media/video/zc0301/zc0301_core.c b/drivers/media/video/zc0301/zc0301_core.c
index 1b2be2d2a3ec..5b5563424422 100644
--- a/drivers/media/video/zc0301/zc0301_core.c
+++ b/drivers/media/video/zc0301/zc0301_core.c
@@ -303,7 +303,7 @@ int zc0301_i2c_write(struct zc0301_device* cam, u16 address, u16 value)
303 303
304/*****************************************************************************/ 304/*****************************************************************************/
305 305
306static void zc0301_urb_complete(struct urb *urb, struct pt_regs* regs) 306static void zc0301_urb_complete(struct urb *urb)
307{ 307{
308 struct zc0301_device* cam = urb->context; 308 struct zc0301_device* cam = urb->context;
309 struct zc0301_frame_t** f; 309 struct zc0301_frame_t** f;
diff --git a/drivers/media/video/zoran_device.c b/drivers/media/video/zoran_device.c
index 3cbac2e8aed3..d9d5020a2224 100644
--- a/drivers/media/video/zoran_device.c
+++ b/drivers/media/video/zoran_device.c
@@ -1408,8 +1408,7 @@ error_handler (struct zoran *zr,
1408 1408
1409irqreturn_t 1409irqreturn_t
1410zoran_irq (int irq, 1410zoran_irq (int irq,
1411 void *dev_id, 1411 void *dev_id)
1412 struct pt_regs *regs)
1413{ 1412{
1414 u32 stat, astat; 1413 u32 stat, astat;
1415 int count; 1414 int count;
diff --git a/drivers/media/video/zoran_device.h b/drivers/media/video/zoran_device.h
index f19705cbdb39..37fa86a34083 100644
--- a/drivers/media/video/zoran_device.h
+++ b/drivers/media/video/zoran_device.h
@@ -64,9 +64,7 @@ extern int wait_grab_pending(struct zoran *zr);
64/* interrupts */ 64/* interrupts */
65extern void print_interrupts(struct zoran *zr); 65extern void print_interrupts(struct zoran *zr);
66extern void clear_interrupt_counters(struct zoran *zr); 66extern void clear_interrupt_counters(struct zoran *zr);
67extern irqreturn_t zoran_irq(int irq, 67extern irqreturn_t zoran_irq(int irq, void *dev_id);
68 void *dev_id,
69 struct pt_regs *regs);
70 68
71/* JPEG codec access */ 69/* JPEG codec access */
72extern void jpeg_start(struct zoran *zr); 70extern void jpeg_start(struct zoran *zr);
diff --git a/drivers/media/video/zr36120.c b/drivers/media/video/zr36120.c
index b5ffe53c40d8..0cbf564388a6 100644
--- a/drivers/media/video/zr36120.c
+++ b/drivers/media/video/zr36120.c
@@ -335,13 +335,13 @@ DEBUG(printk(CARD_DEBUG "turning off\n",CARD));
335} 335}
336 336
337static 337static
338void zoran_irq(int irq, void *dev_id, struct pt_regs * regs) 338void zoran_irq(int irq, void *dev_id)
339{ 339{
340 u32 stat,estat; 340 u32 stat,estat;
341 int count = 0; 341 int count = 0;
342 struct zoran *ztv = dev_id; 342 struct zoran *ztv = dev_id;
343 343
344 UNUSED(irq); UNUSED(regs); 344 UNUSED(irq);
345 for (;;) { 345 for (;;) {
346 /* get/clear interrupt status bits */ 346 /* get/clear interrupt status bits */
347 stat=zrread(ZORAN_ISR); 347 stat=zrread(ZORAN_ISR);