]> git.karo-electronics.de Git - linux-beck.git/commitdiff
V4L/DVB (13327): em28xx: fix alt modprobe parameter
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Nov 2009 17:51:01 +0000 (14:51 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:41:21 +0000 (18:41 -0200)
It seems that some patch broke alt modprobe parameter. Fix it to allow
changing alternate interfaces during module load and at runtime.

If changed during runtime, you'll need to stop a and restart stream for
the parameter to be used.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/em28xx/em28xx-core.c
drivers/media/video/em28xx/em28xx.h

index a88257a7d94ffeaee476669a8ddd154d4ddcc12b..33586004eb4438edec8df5eae2c2bdb4f6b3d69e 100644 (file)
@@ -50,7 +50,7 @@ MODULE_PARM_DESC(reg_debug, "enable debug messages [URB reg]");
                printk(KERN_INFO "%s %s :"fmt, \
                         dev->name, __func__ , ##arg); } while (0)
 
-static int alt = EM28XX_PINOUT;
+static int alt;
 module_param(alt, int, 0644);
 MODULE_PARM_DESC(alt, "alternate setting to use for video endpoint");
 
@@ -778,6 +778,16 @@ int em28xx_set_alternate(struct em28xx *dev)
        int i;
        unsigned int min_pkt_size = dev->width * 2 + 4;
 
+       /*
+        * alt = 0 is used only for control messages, so, only values
+        * greater than 0 can be used for streaming.
+        */
+       if (alt && alt < dev->num_alt) {
+               em28xx_coredbg("alternate forced to %d\n", dev->alt);
+               dev->alt = alt;
+               goto set_alt;
+       }
+
        /* When image size is bigger than a certain value,
           the frame size should be increased, otherwise, only
           green screen will be received.
@@ -798,6 +808,7 @@ int em28xx_set_alternate(struct em28xx *dev)
                        dev->alt = i;
        }
 
+set_alt:
        if (dev->alt != prev_alt) {
                em28xx_coredbg("minimum isoc packet size: %u (alt=%d)\n",
                                min_pkt_size, dev->alt);
index a476f7bb7bf8f36e5b7852be19d8432c105deccb..bca5cbb7931c0943da68c79467009be0bf736a1f 100644 (file)
  */
 #define EM28XX_NUM_PACKETS 40
 
-/* default alternate; 0 means choose the best */
-#define EM28XX_PINOUT 0
-
 #define EM28XX_INTERLACED_DEFAULT 1
 
 /*