V4L/DVB (13866): gspca - main: Add the cam flag 'no_urb_create'.
authorJean-Francois Moine <moinejf@free.fr>
Tue, 15 Dec 2009 08:23:04 +0000 (05:23 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:27 +0000 (15:10 -0300)
This flag permits subdrivers to create specific transfer URBs.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/gspca.c
drivers/media/video/gspca/gspca.h

index 0e6a4ec0fec94596efe75f3065db4855011e56e9..61be007e8fb3affef1c7ce12499ab31689808bd8 100644 (file)
@@ -607,11 +607,14 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
                goto out;
        }
        for (;;) {
-               PDEBUG(D_STREAM, "init transfer alt %d", gspca_dev->alt);
-               ret = create_urbs(gspca_dev, ep);
-               if (ret < 0) {
-                       destroy_urbs(gspca_dev);
-                       goto out;
+               if (!gspca_dev->cam.no_urb_create) {
+                       PDEBUG(D_STREAM, "init transfer alt %d",
+                               gspca_dev->alt);
+                       ret = create_urbs(gspca_dev, ep);
+                       if (ret < 0) {
+                               destroy_urbs(gspca_dev);
+                               goto out;
+                       }
                }
 
                /* clear the bulk endpoint */
index f0b4cbc33bf34d309084362a23caab7bd40b8949..790dad736888f0a272adb86a6dbb009e0af0c4de 100644 (file)
@@ -54,20 +54,21 @@ struct framerates {
 
 /* device information - set at probe time */
 struct cam {
-       int bulk_size;          /* buffer size when image transfer by bulk */
        const struct v4l2_pix_format *cam_mode; /* size nmodes */
-       char nmodes;
        const struct framerates *mode_framerates; /* must have size nmode,
                                                   * just like cam_mode */
-       __u8 bulk_nurbs;        /* number of URBs in bulk mode
+       u32 bulk_size;          /* buffer size when image transfer by bulk */
+       u32 input_flags;        /* value for ENUM_INPUT status flags */
+       u8 nmodes;              /* size of cam_mode */
+       u8 no_urb_create;       /* don't create transfer URBs */
+       u8 bulk_nurbs;          /* number of URBs in bulk mode
                                 * - cannot be > MAX_NURBS
                                 * - when 0 and bulk_size != 0 means
                                 *   1 URB and submit done by subdriver */
        u8 bulk;                /* image transfer by 0:isoc / 1:bulk */
        u8 npkt;                /* number of packets in an ISOC message
                                 * 0 is the default value: 32 packets */
-       u32 input_flags;        /* value for ENUM_INPUT status flags */
-       char reverse_alts;      /* Alt settings are in high to low order */
+       u8 reverse_alts;        /* Alt settings are in high to low order */
 };
 
 struct gspca_dev;