summaryrefslogtreecommitdiff
path: root/linux/drivers/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2006-10-21 18:00:02 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-10-21 18:00:02 -0200
commitf6d43b4abf8f3952809dd9890402d842847ee0a7 (patch)
treea3b2e091107a3e0f82bfdd5ab79fa877f1d40f3e /linux/drivers/media
parent417dfe4bde154a61c7f5e9065a66033e45b26b31 (diff)
downloadmediapointer-dvb-s2-f6d43b4abf8f3952809dd9890402d842847ee0a7.tar.gz
mediapointer-dvb-s2-f6d43b4abf8f3952809dd9890402d842847ee0a7.tar.bz2
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Kernel-sync: This patch is required to allow compilation of the tree with kernel 2.6.19. This is the original description of the original patch, signed by David Howells <dhowells@redhat.com>: 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: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media')
-rw-r--r--linux/drivers/media/common/saa7146_core.c4
-rw-r--r--linux/drivers/media/dvb/b2c2/flexcop-pci.c4
-rw-r--r--linux/drivers/media/dvb/b2c2/flexcop-usb.c4
-rw-r--r--linux/drivers/media/dvb/bt8xx/bt878.c4
-rw-r--r--linux/drivers/media/dvb/cinergyT2/cinergyT2.c8
-rw-r--r--linux/drivers/media/dvb/dvb-usb/usb-urb.c4
-rw-r--r--linux/drivers/media/dvb/pluto2/pluto2.c4
-rw-r--r--linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c4
-rw-r--r--linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c8
-rw-r--r--linux/drivers/media/video/arv.c4
-rw-r--r--linux/drivers/media/video/bt8xx/bttv-driver.c4
-rw-r--r--linux/drivers/media/video/cpia2/cpia2_usb.c8
-rw-r--r--linux/drivers/media/video/cpia_usb.c4
-rw-r--r--linux/drivers/media/video/cx88/cx88-alsa.c4
-rw-r--r--linux/drivers/media/video/cx88/cx88-mpeg.c4
-rw-r--r--linux/drivers/media/video/cx88/cx88-video.c4
-rw-r--r--linux/drivers/media/video/dabusb.c4
-rw-r--r--linux/drivers/media/video/em28xx/em28xx-core.c12
-rw-r--r--linux/drivers/media/video/et61x251/et61x251_core.c4
-rw-r--r--linux/drivers/media/video/meye.c4
-rw-r--r--linux/drivers/media/video/ov511.c4
-rw-r--r--linux/drivers/media/video/planb.c8
-rw-r--r--linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c8
-rw-r--r--linux/drivers/media/video/pvrusb2/pvrusb2-io.c4
-rw-r--r--linux/drivers/media/video/pwc/pwc-if.c4
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-alsa.c4
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-core.c4
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-oss.c4
-rw-r--r--linux/drivers/media/video/se401.c8
-rw-r--r--linux/drivers/media/video/sn9c102/sn9c102_core.c4
-rw-r--r--linux/drivers/media/video/stradis.c4
-rw-r--r--linux/drivers/media/video/stv680.c4
-rw-r--r--linux/drivers/media/video/usbvideo/konicawc.c4
-rw-r--r--linux/drivers/media/video/usbvideo/quickcam_messenger.c8
-rw-r--r--linux/drivers/media/video/usbvideo/usbvideo.c4
-rw-r--r--linux/drivers/media/video/vino.c4
-rw-r--r--linux/drivers/media/video/w9968cf.c8
-rw-r--r--linux/drivers/media/video/zc0301/zc0301_core.c4
-rw-r--r--linux/drivers/media/video/zoran_device.c4
-rw-r--r--linux/drivers/media/video/zoran_device.h4
-rw-r--r--linux/drivers/media/video/zr36120.c8
41 files changed, 208 insertions, 0 deletions
diff --git a/linux/drivers/media/common/saa7146_core.c b/linux/drivers/media/common/saa7146_core.c
index b5db34f98..b13f2ade3 100644
--- a/linux/drivers/media/common/saa7146_core.c
+++ b/linux/drivers/media/common/saa7146_core.c
@@ -230,7 +230,11 @@ int saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt
/********************************************************************************/
/* interrupt handler */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t interrupt_hw(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t interrupt_hw(int irq, void *dev_id)
+#endif
{
struct saa7146_dev *dev = dev_id;
u32 isr = 0;
diff --git a/linux/drivers/media/dvb/b2c2/flexcop-pci.c b/linux/drivers/media/dvb/b2c2/flexcop-pci.c
index eb2e6432c..e6362f304 100644
--- a/linux/drivers/media/dvb/b2c2/flexcop-pci.c
+++ b/linux/drivers/media/dvb/b2c2/flexcop-pci.c
@@ -122,7 +122,11 @@ static void flexcop_pci_irq_check_work(void *data)
/* When PID filtering is turned on, we use the timer IRQ, because small amounts
* of data need to be passed to the user space instantly as well. When PID
* filtering is turned off, we use the page-change-IRQ */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t flexcop_pci_isr(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t flexcop_pci_isr(int irq, void *dev_id)
+#endif
{
struct flexcop_pci *fc_pci = dev_id;
struct flexcop_device *fc = fc_pci->fc_dev;
diff --git a/linux/drivers/media/dvb/b2c2/flexcop-usb.c b/linux/drivers/media/dvb/b2c2/flexcop-usb.c
index 8a3ae27f8..8d16d6e72 100644
--- a/linux/drivers/media/dvb/b2c2/flexcop-usb.c
+++ b/linux/drivers/media/dvb/b2c2/flexcop-usb.c
@@ -328,7 +328,11 @@ static void flexcop_usb_process_frame(struct flexcop_usb *fc_usb, u8 *buffer, in
fc_usb->tmp_buffer_length = l;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void flexcop_usb_urb_complete(struct urb *urb, struct pt_regs *ptregs)
+#else
+static void flexcop_usb_urb_complete(struct urb *urb)
+#endif
{
struct flexcop_usb *fc_usb = urb->context;
int i;
diff --git a/linux/drivers/media/dvb/bt8xx/bt878.c b/linux/drivers/media/dvb/bt8xx/bt878.c
index 755822ee6..c63314b9f 100644
--- a/linux/drivers/media/dvb/bt8xx/bt878.c
+++ b/linux/drivers/media/dvb/bt8xx/bt878.c
@@ -266,7 +266,11 @@ EXPORT_SYMBOL(bt878_stop);
/* Interrupt service routine */
/*****************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t bt878_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t bt878_irq(int irq, void *dev_id)
+#endif
{
u32 stat, astat, mask;
int count;
diff --git a/linux/drivers/media/dvb/cinergyT2/cinergyT2.c b/linux/drivers/media/dvb/cinergyT2/cinergyT2.c
index 5964b27f9..90672efea 100644
--- a/linux/drivers/media/dvb/cinergyT2/cinergyT2.c
+++ b/linux/drivers/media/dvb/cinergyT2/cinergyT2.c
@@ -255,7 +255,11 @@ static void cinergyt2_sleep (struct cinergyt2 *cinergyt2, int sleep)
cinergyt2->sleeping = sleep;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs);
+#else
+static void cinergyt2_stream_irq (struct urb *urb);
+#endif
static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb *urb)
{
@@ -275,7 +279,11 @@ static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb
return err;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs)
+#else
+static void cinergyt2_stream_irq (struct urb *urb)
+#endif
{
struct cinergyt2 *cinergyt2 = urb->context;
diff --git a/linux/drivers/media/dvb/dvb-usb/usb-urb.c b/linux/drivers/media/dvb/dvb-usb/usb-urb.c
index 572b2d9aa..2ed0a214b 100644
--- a/linux/drivers/media/dvb/dvb-usb/usb-urb.c
+++ b/linux/drivers/media/dvb/dvb-usb/usb-urb.c
@@ -11,7 +11,11 @@
#include "dvb-usb-common.h"
/* URB stuff for streaming */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void usb_urb_complete(struct urb *urb, struct pt_regs *ptregs)
+#else
+static void usb_urb_complete(struct urb *urb)
+#endif
{
struct usb_data_stream *stream = urb->context;
int ptype = usb_pipetype(urb->pipe);
diff --git a/linux/drivers/media/dvb/pluto2/pluto2.c b/linux/drivers/media/dvb/pluto2/pluto2.c
index 2310b2bfe..3de55e0cc 100644
--- a/linux/drivers/media/dvb/pluto2/pluto2.c
+++ b/linux/drivers/media/dvb/pluto2/pluto2.c
@@ -306,7 +306,11 @@ static void pluto_dma_end(struct pluto *pluto, unsigned int nbpackets)
TS_DMA_BYTES, PCI_DMA_FROMDEVICE);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t pluto_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t pluto_irq(int irq, void *dev_id)
+#endif
{
struct pluto *pluto = dev_id;
u32 tscr;
diff --git a/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index af3391314..239a48bcb 100644
--- a/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/linux/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -740,7 +740,11 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void ttusb_iso_irq(struct urb *urb, struct pt_regs *ptregs)
+#else
+static void ttusb_iso_irq(struct urb *urb)
+#endif
{
struct ttusb *ttusb = urb->context;
diff --git a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index 36dd35db4..f2d18a5fb 100644
--- a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@ -214,7 +214,11 @@ static u16 rc_keys[] = {
static void ttusb_dec_set_model(struct ttusb_dec *dec,
enum ttusb_dec_model model);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void ttusb_dec_handle_irq( struct urb *urb, struct pt_regs *regs)
+#else
+static void ttusb_dec_handle_irq( struct urb *urb)
+#endif
{
struct ttusb_dec * dec = urb->context;
char *buffer = dec->irq_buffer;
@@ -766,7 +770,11 @@ static void ttusb_dec_process_urb_frame_list(unsigned long data)
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void ttusb_dec_process_urb(struct urb *urb, struct pt_regs *ptregs)
+#else
+static void ttusb_dec_process_urb(struct urb *urb)
+#endif
{
struct ttusb_dec *dec = urb->context;
diff --git a/linux/drivers/media/video/arv.c b/linux/drivers/media/video/arv.c
index 3be35eb39..11302b1d1 100644
--- a/linux/drivers/media/video/arv.c
+++ b/linux/drivers/media/video/arv.c
@@ -550,7 +550,11 @@ static int ar_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
/*
* Interrupt handler
*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void ar_interrupt(int irq, void *dev, struct pt_regs *regs)
+#else
+static void ar_interrupt(int irq, void *dev)
+#endif
{
struct ar_device *ar = dev;
unsigned int line_count;
diff --git a/linux/drivers/media/video/bt8xx/bttv-driver.c b/linux/drivers/media/video/bt8xx/bttv-driver.c
index f2924c532..88f7f65f4 100644
--- a/linux/drivers/media/video/bt8xx/bttv-driver.c
+++ b/linux/drivers/media/video/bt8xx/bttv-driver.c
@@ -3780,7 +3780,11 @@ bttv_irq_switch_vbi(struct bttv *btv)
spin_unlock(&btv->s_lock);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
+#else
+static irqreturn_t bttv_irq(int irq, void *dev_id)
+#endif
{
u32 stat,astat;
u32 dstat;
diff --git a/linux/drivers/media/video/cpia2/cpia2_usb.c b/linux/drivers/media/video/cpia2/cpia2_usb.c
index f4da02941..0d4bb91dc 100644
--- a/linux/drivers/media/video/cpia2/cpia2_usb.c
+++ b/linux/drivers/media/video/cpia2/cpia2_usb.c
@@ -49,7 +49,11 @@ static int frame_sizes[] = {
#define FRAME_SIZE_PER_DESC frame_sizes[cam->cur_alt]
static void process_frame(struct camera_data *cam);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void cpia2_usb_complete(struct urb *urb, struct pt_regs *);
+#else
+static void cpia2_usb_complete(struct urb *urb);
+#endif
static int cpia2_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id);
static void cpia2_usb_disconnect(struct usb_interface *intf);
@@ -199,7 +203,11 @@ static void add_COM(struct camera_data *cam)
*
* callback when incoming packet is received
*****************************************************************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void cpia2_usb_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void cpia2_usb_complete(struct urb *urb)
+#endif
{
int i;
unsigned char *cdata;
diff --git a/linux/drivers/media/video/cpia_usb.c b/linux/drivers/media/video/cpia_usb.c
index 2ee34a3b9..0d974be34 100644
--- a/linux/drivers/media/video/cpia_usb.c
+++ b/linux/drivers/media/video/cpia_usb.c
@@ -109,7 +109,11 @@ static struct cpia_camera_ops cpia_usb_ops = {
static LIST_HEAD(cam_list);
static spinlock_t cam_list_lock_usb;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void cpia_usb_complete(struct urb *urb)
+#endif
{
int i;
char *cdata;
diff --git a/linux/drivers/media/video/cx88/cx88-alsa.c b/linux/drivers/media/video/cx88/cx88-alsa.c
index 3fd1abdf7..bf67ec27d 100644
--- a/linux/drivers/media/video/cx88/cx88-alsa.c
+++ b/linux/drivers/media/video/cx88/cx88-alsa.c
@@ -287,7 +287,11 @@ static void cx8801_aud_irq(snd_cx88_card_t *chip)
/*
* BOARD Specific: Handles IRQ calls
*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t cx8801_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t cx8801_irq(int irq, void *dev_id)
+#endif
{
snd_cx88_card_t *chip = dev_id;
struct cx88_core *core = chip->core;
diff --git a/linux/drivers/media/video/cx88/cx88-mpeg.c b/linux/drivers/media/video/cx88/cx88-mpeg.c
index dd5fd1b64..f90a9e7fd 100644
--- a/linux/drivers/media/video/cx88/cx88-mpeg.c
+++ b/linux/drivers/media/video/cx88/cx88-mpeg.c
@@ -407,7 +407,11 @@ static void cx8802_mpeg_irq(struct cx8802_dev *dev)
#define MAX_IRQ_LOOP 10
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t cx8802_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t cx8802_irq(int irq, void *dev_id)
+#endif
{
struct cx8802_dev *dev = dev_id;
struct cx88_core *core = dev->core;
diff --git a/linux/drivers/media/video/cx88/cx88-video.c b/linux/drivers/media/video/cx88/cx88-video.c
index 46de90a1b..6a420d6db 100644
--- a/linux/drivers/media/video/cx88/cx88-video.c
+++ b/linux/drivers/media/video/cx88/cx88-video.c
@@ -2065,7 +2065,11 @@ static void cx8800_vid_irq(struct cx8800_dev *dev)
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t cx8800_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t cx8800_irq(int irq, void *dev_id)
+#endif
{
struct cx8800_dev *dev = dev_id;
struct cx88_core *core = dev->core;
diff --git a/linux/drivers/media/video/dabusb.c b/linux/drivers/media/video/dabusb.c
index 5896b6d4b..44c43d63c 100644
--- a/linux/drivers/media/video/dabusb.c
+++ b/linux/drivers/media/video/dabusb.c
@@ -169,7 +169,11 @@ static int dabusb_free_buffers (pdabusb_t s)
return 0;
}
/*-------------------------------------------------------------------*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void dabusb_iso_complete (struct urb *purb, struct pt_regs *regs)
+#else
+static void dabusb_iso_complete (struct urb *purb)
+#endif
{
pbuff_t b = purb->context;
pdabusb_t s = b->s;
diff --git a/linux/drivers/media/video/em28xx/em28xx-core.c b/linux/drivers/media/video/em28xx/em28xx-core.c
index c7f7869f5..f5d256862 100644
--- a/linux/drivers/media/video/em28xx/em28xx-core.c
+++ b/linux/drivers/media/video/em28xx/em28xx-core.c
@@ -441,7 +441,11 @@ int em28xx_resolution_set(struct em28xx *dev)
/******************* isoc transfer handling ****************************/
#ifdef ENABLE_DEBUG_ISOC_FRAMES
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void em28xx_isoc_dump(struct urb *urb, struct pt_regs *regs)
+#else
+static void em28xx_isoc_dump(struct urb *urb)
+#endif
{
int len = 0;
int ntrans = 0;
@@ -593,7 +597,11 @@ static inline void em28xx_isoc_video_copy(struct em28xx *dev,
* em28xx_isoIrq()
* handles the incoming isoc urbs and fills the frames from our inqueue
*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs)
+#else
+static void em28xx_isocIrq(struct urb *urb)
+#endif
{
struct em28xx *dev = urb->context;
int i, status;
@@ -604,7 +612,11 @@ static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs)
return;
#ifdef ENABLE_DEBUG_ISOC_FRAMES
if (isoc_debug>1)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
em28xx_isoc_dump(urb, regs);
+#else
+ em28xx_isoc_dump(urb);
+#endif
#endif
if (urb->status == -ENOENT)
diff --git a/linux/drivers/media/video/et61x251/et61x251_core.c b/linux/drivers/media/video/et61x251/et61x251_core.c
index cf59793cf..d8961d82c 100644
--- a/linux/drivers/media/video/et61x251/et61x251_core.c
+++ b/linux/drivers/media/video/et61x251/et61x251_core.c
@@ -398,7 +398,11 @@ int et61x251_i2c_write(struct et61x251_device* cam, u8 address, u8 value)
/*****************************************************************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void et61x251_urb_complete(struct urb *urb, struct pt_regs* regs)
+#else
+static void et61x251_urb_complete(struct urb *urb)
+#endif
{
struct et61x251_device* cam = urb->context;
struct et61x251_frame_t** f;
diff --git a/linux/drivers/media/video/meye.c b/linux/drivers/media/video/meye.c
index 1265de39e..2ee2d9fd0 100644
--- a/linux/drivers/media/video/meye.c
+++ b/linux/drivers/media/video/meye.c
@@ -787,7 +787,11 @@ static void mchip_cont_compression_start(void)
/* Interrupt handling */
/****************************************************************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t meye_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t meye_irq(int irq, void *dev_id)
+#endif
{
u32 v;
int reqnr;
diff --git a/linux/drivers/media/video/ov511.c b/linux/drivers/media/video/ov511.c
index eb638dde1..b1fb74147 100644
--- a/linux/drivers/media/video/ov511.c
+++ b/linux/drivers/media/video/ov511.c
@@ -3503,7 +3503,11 @@ check_middle:
}
static void
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs)
+#else
+ov51x_isoc_irq(struct urb *urb)
+#endif
{
int i;
struct usb_ov511 *ov;
diff --git a/linux/drivers/media/video/planb.c b/linux/drivers/media/video/planb.c
index baa0c55a7..667edaf0d 100644
--- a/linux/drivers/media/video/planb.c
+++ b/linux/drivers/media/video/planb.c
@@ -92,7 +92,11 @@ static void planb_close(struct video_device *);
static int planb_ioctl(struct video_device *, unsigned int, void *);
static int planb_init_done(struct video_device *);
static int planb_mmap(struct video_device *, const char *, unsigned long);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void planb_irq(int, void *, struct pt_regs *);
+#else
+static void planb_irq(int, void *);
+#endif
static void release_planb(void);
int init_planbs(struct video_init *);
@@ -1317,7 +1321,11 @@ cmd_tab_data_end:
return c1;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void planb_irq(int irq, void *dev_id, struct pt_regs * regs)
+#else
+static void planb_irq(int irq, void *dev_id)
+#endif
{
unsigned int stat, astat;
struct planb *pb = (struct planb *)dev_id;
diff --git a/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 065ccb0bb..17cb1d5c6 100644
--- a/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2611,7 +2611,11 @@ void pvr2_reset_ctl_endpoints(struct pvr2_hdw *hdw)
#endif /* 0 */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void pvr2_ctl_write_complete(struct urb *urb)
+#endif
{
struct pvr2_hdw *hdw = urb->context;
hdw->ctl_write_pend_flag = 0;
@@ -2620,7 +2624,11 @@ static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs)
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void pvr2_ctl_read_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void pvr2_ctl_read_complete(struct urb *urb)
+#endif
{
struct pvr2_hdw *hdw = urb->context;
hdw->ctl_read_pend_flag = 0;
diff --git a/linux/drivers/media/video/pvrusb2/pvrusb2-io.c b/linux/drivers/media/video/pvrusb2/pvrusb2-io.c
index 7b3b53010..afb378b2a 100644
--- a/linux/drivers/media/video/pvrusb2/pvrusb2-io.c
+++ b/linux/drivers/media/video/pvrusb2/pvrusb2-io.c
@@ -449,7 +449,11 @@ static void pvr2_stream_done(struct pvr2_stream *sp)
} while (0); mutex_unlock(&sp->mutex);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void buffer_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void buffer_complete(struct urb *urb)
+#endif
{
struct pvr2_buffer *bp = urb->context;
struct pvr2_stream *sp;
diff --git a/linux/drivers/media/video/pwc/pwc-if.c b/linux/drivers/media/video/pwc/pwc-if.c
index c05eab846..3c83629b1 100644
--- a/linux/drivers/media/video/pwc/pwc-if.c
+++ b/linux/drivers/media/video/pwc/pwc-if.c
@@ -707,7 +707,11 @@ static int pwc_rcv_short_packet(struct pwc_device *pdev, const struct pwc_frame_
/* This gets called for the Isochronous pipe (video). This is done in
* interrupt time, so it has to be fast, not crash, and not stall. Neat.
*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void pwc_isoc_handler(struct urb *urb, struct pt_regs *regs)
+#else
+static void pwc_isoc_handler(struct urb *urb)
+#endif
{
struct pwc_device *pdev;
int i, fst, flen;
diff --git a/linux/drivers/media/video/saa7134/saa7134-alsa.c b/linux/drivers/media/video/saa7134/saa7134-alsa.c
index 64fba2d36..3dcd2203f 100644
--- a/linux/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/linux/drivers/media/video/saa7134/saa7134-alsa.c
@@ -235,7 +235,11 @@ static void saa7134_irq_alsa_done(struct saa7134_dev *dev,
*
*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id)
+#endif
{
struct saa7134_dmasound *dmasound = dev_id;
struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/linux/drivers/media/video/saa7134/saa7134-core.c b/linux/drivers/media/video/saa7134/saa7134-core.c
index 21e363c2f..a65da12e4 100644
--- a/linux/drivers/media/video/saa7134/saa7134-core.c
+++ b/linux/drivers/media/video/saa7134/saa7134-core.c
@@ -559,7 +559,11 @@ static void print_irqstatus(struct saa7134_dev *dev, int loop,
printk("\n");
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t saa7134_irq(int irq, void *dev_id)
+#endif
{
struct saa7134_dev *dev = (struct saa7134_dev*) dev_id;
unsigned long report,status;
diff --git a/linux/drivers/media/video/saa7134/saa7134-oss.c b/linux/drivers/media/video/saa7134/saa7134-oss.c
index 510ce8a36..f8cc49af6 100644
--- a/linux/drivers/media/video/saa7134/saa7134-oss.c
+++ b/linux/drivers/media/video/saa7134/saa7134-oss.c
@@ -832,7 +832,11 @@ struct file_operations saa7134_mixer_fops = {
/* ------------------------------------------------------------------ */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t saa7134_oss_irq(int irq, void *dev_id)
+#endif
{
struct saa7134_dmasound *dmasound = dev_id;
struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/linux/drivers/media/video/se401.c b/linux/drivers/media/video/se401.c
index 67987baee..4d10fe563 100644
--- a/linux/drivers/media/video/se401.c
+++ b/linux/drivers/media/video/se401.c
@@ -282,7 +282,11 @@ static void se401_auto_resetlevel(struct usb_se401 *se401)
}
/* irq handler for snapshot button */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void se401_button_irq(struct urb *urb, struct pt_regs *regs)
+#else
+static void se401_button_irq(struct urb *urb)
+#endif
{
struct usb_se401 *se401 = urb->context;
int status;
@@ -318,7 +322,11 @@ exit:
__FUNCTION__, status);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void se401_video_irq(struct urb *urb, struct pt_regs *regs)
+#else
+static void se401_video_irq(struct urb *urb)
+#endif
{
struct usb_se401 *se401 = urb->context;
int length = urb->actual_length;
diff --git a/linux/drivers/media/video/sn9c102/sn9c102_core.c b/linux/drivers/media/video/sn9c102/sn9c102_core.c
index bb02282f0..d9c512fef 100644
--- a/linux/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/linux/drivers/media/video/sn9c102/sn9c102_core.c
@@ -518,7 +518,11 @@ sn9c102_find_eof_header(struct sn9c102_device* cam, void* mem, size_t len)
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void sn9c102_urb_complete(struct urb *urb, struct pt_regs* regs)
+#else
+static void sn9c102_urb_complete(struct urb *urb)
+#endif
{
struct sn9c102_device* cam = urb->context;
struct sn9c102_frame_t** f;
diff --git a/linux/drivers/media/video/stradis.c b/linux/drivers/media/video/stradis.c
index 267252d2a..a11f1cbf9 100644
--- a/linux/drivers/media/video/stradis.c
+++ b/linux/drivers/media/video/stradis.c
@@ -407,7 +407,11 @@ static void send_osd_data(struct saa7146 *saa)
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t saa7146_irq(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t saa7146_irq(int irq, void *dev_id)
+#endif
{
struct saa7146 *saa = dev_id;
u32 stat, astat;
diff --git a/linux/drivers/media/video/stv680.c b/linux/drivers/media/video/stv680.c
index 44ff13f36..5dfa8eadb 100644
--- a/linux/drivers/media/video/stv680.c
+++ b/linux/drivers/media/video/stv680.c
@@ -614,7 +614,11 @@ static int stv680_set_pict (struct usb_stv *stv680, struct video_picture *p)
return 0;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void stv680_video_irq (struct urb *urb, struct pt_regs *regs)
+#else
+static void stv680_video_irq (struct urb *urb)
+#endif
{
struct usb_stv *stv680 = urb->context;
int length = urb->actual_length;
diff --git a/linux/drivers/media/video/usbvideo/konicawc.c b/linux/drivers/media/video/usbvideo/konicawc.c
index 8c0e25fde..5ab17aaab 100644
--- a/linux/drivers/media/video/usbvideo/konicawc.c
+++ b/linux/drivers/media/video/usbvideo/konicawc.c
@@ -393,7 +393,11 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void konicawc_isoc_irq(struct urb *urb, struct pt_regs *regs)
+#else
+static void konicawc_isoc_irq(struct urb *urb)
+#endif
{
struct uvd *uvd = urb->context;
struct konicawc *cam = (struct konicawc *)uvd->user_data;
diff --git a/linux/drivers/media/video/usbvideo/quickcam_messenger.c b/linux/drivers/media/video/usbvideo/quickcam_messenger.c
index 66e750336..95f6b86f0 100644
--- a/linux/drivers/media/video/usbvideo/quickcam_messenger.c
+++ b/linux/drivers/media/video/usbvideo/quickcam_messenger.c
@@ -130,7 +130,11 @@ static void qcm_report_buttonstat(struct qcm *cam)
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void qcm_int_irq(struct urb *urb, struct pt_regs *regs)
+#else
+static void qcm_int_irq(struct urb *urb)
+#endif
{
int ret;
struct uvd *uvd = urb->context;
@@ -611,7 +615,11 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
err("usb_submit_urb error (%d)", ret);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void qcm_isoc_irq(struct urb *urb, struct pt_regs *regs)
+#else
+static void qcm_isoc_irq(struct urb *urb)
+#endif
{
int len;
struct uvd *uvd = urb->context;
diff --git a/linux/drivers/media/video/usbvideo/usbvideo.c b/linux/drivers/media/video/usbvideo/usbvideo.c
index 4db4569a5..0f839d7de 100644
--- a/linux/drivers/media/video/usbvideo/usbvideo.c
+++ b/linux/drivers/media/video/usbvideo/usbvideo.c
@@ -1680,7 +1680,11 @@ static int usbvideo_CompressIsochronous(struct uvd *uvd, struct urb *urb)
return totlen;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void usbvideo_IsocIrq(struct urb *urb, struct pt_regs *regs)
+#else
+static void usbvideo_IsocIrq(struct urb *urb)
+#endif
{
int i, ret, len;
struct uvd *uvd = urb->context;
diff --git a/linux/drivers/media/video/vino.c b/linux/drivers/media/video/vino.c
index 0ff1ecc00..c4b7fc2bc 100644
--- a/linux/drivers/media/video/vino.c
+++ b/linux/drivers/media/video/vino.c
@@ -2325,7 +2325,11 @@ static void vino_capture_tasklet(unsigned long channel) {
}
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static irqreturn_t vino_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+#else
+static irqreturn_t vino_interrupt(int irq, void *dev_id)
+#endif
{
u32 ctrl, intr;
unsigned int fc_a, fc_b;
diff --git a/linux/drivers/media/video/w9968cf.c b/linux/drivers/media/video/w9968cf.c
index 2912326a5..0a9e1d462 100644
--- a/linux/drivers/media/video/w9968cf.c
+++ b/linux/drivers/media/video/w9968cf.c
@@ -417,7 +417,11 @@ static int w9968cf_write_fsb(struct w9968cf_device*, u16* data);
static int w9968cf_write_sb(struct w9968cf_device*, u16 value);
static int w9968cf_read_sb(struct w9968cf_device*);
static int w9968cf_upload_quantizationtables(struct w9968cf_device*);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs);
+#else
+static void w9968cf_urb_complete(struct urb *urb);
+#endif
/* Low-level I2C (SMBus) I/O */
static int w9968cf_smbus_start(struct w9968cf_device*);
@@ -781,7 +785,11 @@ static int w9968cf_allocate_memory(struct w9968cf_device* cam)
If there are no requested frames in the FIFO list, packets are collected into
a temporary buffer.
--------------------------------------------------------------------------*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs)
+#else
+static void w9968cf_urb_complete(struct urb *urb)
+#endif
{
struct w9968cf_device* cam = (struct w9968cf_device*)urb->context;
struct w9968cf_frame_t** f;
diff --git a/linux/drivers/media/video/zc0301/zc0301_core.c b/linux/drivers/media/video/zc0301/zc0301_core.c
index 1b2be2d2a..aa3ad3c2e 100644
--- a/linux/drivers/media/video/zc0301/zc0301_core.c
+++ b/linux/drivers/media/video/zc0301/zc0301_core.c
@@ -303,7 +303,11 @@ int zc0301_i2c_write(struct zc0301_device* cam, u16 address, u16 value)
/*****************************************************************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
static void zc0301_urb_complete(struct urb *urb, struct pt_regs* regs)
+#else
+static void zc0301_urb_complete(struct urb *urb)
+#endif
{
struct zc0301_device* cam = urb->context;
struct zc0301_frame_t** f;
diff --git a/linux/drivers/media/video/zoran_device.c b/linux/drivers/media/video/zoran_device.c
index 57fd910f2..583ba4cb6 100644
--- a/linux/drivers/media/video/zoran_device.c
+++ b/linux/drivers/media/video/zoran_device.c
@@ -1409,8 +1409,12 @@ error_handler (struct zoran *zr,
irqreturn_t
zoran_irq (int irq,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
void *dev_id,
struct pt_regs *regs)
+#else
+ void *dev_id)
+#endif
{
u32 stat, astat;
int count;
diff --git a/linux/drivers/media/video/zoran_device.h b/linux/drivers/media/video/zoran_device.h
index f19705cbd..c46d1b076 100644
--- a/linux/drivers/media/video/zoran_device.h
+++ b/linux/drivers/media/video/zoran_device.h
@@ -64,9 +64,13 @@ extern int wait_grab_pending(struct zoran *zr);
/* interrupts */
extern void print_interrupts(struct zoran *zr);
extern void clear_interrupt_counters(struct zoran *zr);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
extern irqreturn_t zoran_irq(int irq,
void *dev_id,
struct pt_regs *regs);
+#else
+extern irqreturn_t zoran_irq(int irq, void *dev_id);
+#endif
/* JPEG codec access */
extern void jpeg_start(struct zoran *zr);
diff --git a/linux/drivers/media/video/zr36120.c b/linux/drivers/media/video/zr36120.c
index b5ffe53c4..3d0b1fe18 100644
--- a/linux/drivers/media/video/zr36120.c
+++ b/linux/drivers/media/video/zr36120.c
@@ -335,13 +335,21 @@ DEBUG(printk(CARD_DEBUG "turning off\n",CARD));
}
static
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
void zoran_irq(int irq, void *dev_id, struct pt_regs * regs)
+#else
+void zoran_irq(int irq, void *dev_id)
+#endif
{
u32 stat,estat;
int count = 0;
struct zoran *ztv = dev_id;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
UNUSED(irq); UNUSED(regs);
+#else
+ UNUSED(irq);
+#endif
for (;;) {
/* get/clear interrupt status bits */
stat=zrread(ZORAN_ISR);