Hi, this seems like a tricky problem.

I've been using 2.6.23.9 for a long time, 2.6.26 for a month or two
and now just switched to 2.6.27.11. Before 2.6.23.9 I used a few
older kernels with older em28xx drivers. Since 2.6.23.9 I've been
using em28xx-new and have stayed mostly up to date with source in hg.

The USB audio interface is picked up without problems by the ALSA USB
audio driver, but ever since I can remember, the audio device never
produced any audio the first time the device was plugged in after a
reboot of the system. I would have to unplug, and reconnect the
device, and only then would I get sound. Image was fine also on the
first try however.

This still happens on 2.6.27.11 with changeset 291.

The only way I get sound is if I load the driver before plugging
the device, and even then I sometimes need to start tvtime or mplayer
more than once. If the driver was not loaded before plugging the
device no number of application restarts will produce sound.

It seems like this is another timing issue in the driver?
How do I best debug this further?

The attached patch is required to build cleanly against 2.6.27.11.


//Peter
diff -r bd9f074ca2ab em28xx-video.c
--- a/em28xx-video.c    Thu Jan 15 19:54:26 2009 +0100
+++ b/em28xx-video.c    Tue Jan 20 21:47:31 2009 +0100
@@ -1903,7 +1903,7 @@
  * em28xx_v4l2_ioctl()
  * Handle V4L2 ioctl. Has the prototype of v4l2_kioctl.
  */
-static int em28xx_v4l2_ioctl(struct file *filp,
+static int em28xx_v4l2_ioctl(struct inode *inode, struct file *filp,
                             unsigned int cmd, void *arg);
 
 
@@ -2873,7 +2873,7 @@
  * em28xx_v4l2_ioctl()
  * Handle V4L2 ioctl. Has the prototype of v4l2_kioctl.
  */
-static int em28xx_v4l2_ioctl(struct file *filp,
+static int em28xx_v4l2_ioctl(struct inode *inode, struct file *filp,
                             unsigned int cmd, void *arg)
 {
        int ret = 0;
@@ -2909,7 +2909,7 @@
 static int em28xx_v4l2_ioctl_fops(struct inode *inode, struct file *filp,
                             unsigned int cmd, unsigned long arg)
 {
-       return em28xx_v4l2_ioctl(filp, cmd, (void *)arg);
+       return em28xx_v4l2_ioctl(NULL, filp, cmd, (void *)arg);
 }
 
 static struct file_operations em28xx_v4l_fops = {
_______________________________________________
Em28xx mailing list
[email protected]
http://mcentral.de/mailman/listinfo/em28xx

Reply via email to