diff -urN em28xx-new.orig/cx25843/em28xx-cx25843.c em28xx-new/cx25843/em28xx-cx25843.c --- em28xx-new.orig/cx25843/em28xx-cx25843.c 2009-04-09 19:28:53.000000000 +0200 +++ em28xx-new/cx25843/em28xx-cx25843.c 2009-06-12 15:11:43.865650156 +0200 @@ -23,6 +23,10 @@ #include "em28xx-cx25843.h" +#define VIDIOC_INT_S_VIDEO_ROUTING _IOW ('d', 111, struct v4l2_routing) +#define VIDIOC_INT_G_VIDEO_ROUTING _IOR ('d', 112, struct v4l2_routing) +#define VIDIOC_INT_S_AUDIO_ROUTING _IOW ('d', 109, struct v4l2_routing) + MODULE_DESCRIPTION("cx25843 for Empia em28xx based devices"); MODULE_AUTHOR("Markus Rechberger "); MODULE_LICENSE("GPL"); diff -urN em28xx-new.orig/em28xx-audio.c em28xx-new/em28xx-audio.c --- em28xx-new.orig/em28xx-audio.c 2009-04-09 19:28:53.000000000 +0200 +++ em28xx-new/em28xx-audio.c 2009-06-12 15:09:38.869977396 +0200 @@ -46,6 +46,8 @@ #include "em28xx.h" #include "xc5000/xc5000_control.h" +#define VIDIOC_INT_S_AUDIO_ROUTING _IOW ('d', 109, struct v4l2_routing) + static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; static int em28xx_cmd(struct em28xx *dev, int cmd, int arg); diff -urN em28xx-new.orig/em28xx-i2c.c em28xx-new/em28xx-i2c.c --- em28xx-new.orig/em28xx-i2c.c 2009-04-09 19:28:53.000000000 +0200 +++ em28xx-new/em28xx-i2c.c 2009-06-12 15:08:44.596693725 +0200 @@ -44,6 +44,8 @@ #include "xc5000/xc5000_control.h" +#define TUNER_SET_TYPE_ADDR _IOW('d', 90, int) + /* ----------------------------------------------------------- */ diff -urN em28xx-new.orig/em28xx-video.c em28xx-new/em28xx-video.c --- em28xx-new.orig/em28xx-video.c 2009-04-22 15:19:52.000000000 +0200 +++ em28xx-new/em28xx-video.c 2009-06-12 15:07:31.429010659 +0200 @@ -53,6 +53,10 @@ #include "xc5000/xc5000_module.h" #include "cx25843/em28xx-cx25843.h" +#define VIDIOC_INT_S_VIDEO_ROUTING _IOW ('d', 111, struct v4l2_routing) +#define VIDIOC_INT_I2S_CLOCK_FREQ _IOW ('d', 108, u32) +#define VIDIOC_INT_S_AUDIO_ROUTING _IOW ('d', 109, struct v4l2_routing) + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) #include "i2c-compat.h" #include @@ -578,9 +582,9 @@ * inits the device and starts isoc transfer */ -static int em28xx_v4l2_open(struct inode *inode, struct file *filp) +static int em28xx_v4l2_open(struct file *filp) { - int minor = iminor(inode); + int minor = video_devdata(filp)->minor; int errCode = 0; int mode = V4L2_TUNER_ANALOG_TV; int type = 0; @@ -880,7 +884,7 @@ * stops streaming and deallocates all resources allocated by the * v4l2 calls and ioctls */ -static int em28xx_v4l2_close(struct inode *inode, struct file *filp) +static int em28xx_v4l2_close(struct file *filp) { int errCode; struct em28xx_fh *fh; @@ -1169,7 +1173,7 @@ * em28xx_v4l2_poll() * will allocate buffers when called for the first time */ -static unsigned int em28xx_v4l2_poll(struct file *filp, poll_table *wait) +static unsigned int em28xx_v4l2_poll(struct file *filp, struct poll_table_struct *wait) { unsigned int mask = 0; struct em28xx_fh *fh = filp->private_data; @@ -1919,7 +1923,7 @@ * em28xx_v4l2_ioctl() via em28xx_video_do_ioctl(). Userspace * copying is done already, arg is a kernel pointer. */ -static int em28xx_do_ioctl(struct inode *inode, struct file *filp, +static int em28xx_do_ioctl(struct file *filp, struct em28xx *dev, unsigned int cmd, void *arg, v4l2_kioctl driver_ioctl) { @@ -2436,7 +2440,7 @@ * em28xx_v4l2_ioctl. Userspace * copying is done already, arg is a kernel pointer. */ -static int em28xx_video_do_ioctl(struct inode *inode, struct file *filp, +static int em28xx_video_do_ioctl(struct file *filp, unsigned int cmd, void *arg) { struct em28xx_fh *fh = filp->private_data; @@ -2459,8 +2463,8 @@ strlcpy(cap->driver, "em28xx", sizeof(cap->driver)); strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card)); - strlcpy(cap->bus_info, dev->udev->dev.bus_id, - sizeof(cap->bus_info)); + /*strlcpy(cap->bus_info, dev->udev->dev.bus_id, + sizeof(cap->bus_info));*/ cap->version = EM28XX_VERSION_CODE; cap->capabilities = #if 0 @@ -2875,7 +2879,7 @@ return em28xx_do_ioctl(inode, filp, dev, cmd, arg, em28xx_video_do_ioctl); #else - return em28xx_do_ioctl(inode, filp, dev, cmd, arg, + return em28xx_do_ioctl(filp, dev, cmd, arg, em28xx_v4l2_ioctl); #endif } @@ -2930,7 +2934,7 @@ * struct v4l2_ioctl_ops. The struct v4l2_ioctl_ops was introduced with commit * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a399810ca69d9d4bd30ab8c1678c7439e567f90b */ -static int em28xx_v4l2_ioctl_fops(struct inode *inode, struct file *filp, +static int em28xx_v4l2_ioctl_fops(struct file *filp, unsigned int cmd, unsigned long arg) { #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28) @@ -2940,7 +2944,7 @@ #endif } -static struct file_operations em28xx_v4l_fops = { +static struct v4l2_file_operations em28xx_v4l_fops = { .owner = THIS_MODULE, .open = em28xx_v4l2_open, .release = em28xx_v4l2_close, @@ -2948,7 +2952,6 @@ .read = em28xx_v4l2_read, .poll = em28xx_v4l2_poll, .mmap = em28xx_v4l2_mmap, - .llseek = no_llseek, #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) #if 0 .compat_ioctl = v4l_compat_ioctl32, diff -urN em28xx-new.orig/tvp5150/tvp5150.c em28xx-new/tvp5150/tvp5150.c --- em28xx-new.orig/tvp5150/tvp5150.c 2009-04-09 19:28:53.000000000 +0200 +++ em28xx-new/tvp5150/tvp5150.c 2009-06-14 04:58:09.246216302 +0200 @@ -9,7 +9,7 @@ #include #include #include -#include +//#include #include #include #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) @@ -21,6 +21,10 @@ #include "tvp5150_reg.h" +#define VIDIOC_INT_S_VIDEO_ROUTING _IOW ('d', 111, struct v4l2_routing) +#define VIDIOC_INT_G_VIDEO_ROUTING _IOR ('d', 112, struct v4l2_routing) +#define I2C_DRIVERID_TVP5150 76 + MODULE_DESCRIPTION("Texas Instruments TVP5150A video decoder driver"); MODULE_AUTHOR("Mauro Carvalho Chehab"); MODULE_LICENSE("GPL");