]> git.hungrycats.org Git - linux/commitdiff
[PATCH] USB stv680 driver update
authorGreg Kroah-Hartman <greg@kroah.com>
Tue, 5 Feb 2002 09:17:14 +0000 (01:17 -0800)
committerGreg Kroah-Hartman <greg@kroah.com>
Tue, 5 Feb 2002 09:17:14 +0000 (01:17 -0800)
Here's a patch against 2.5.3 for the USB stv680 driver that fixes two
bugs in the existing driver.  This patch was done by Kevin Sisson.

drivers/usb/stv680.c

index fad991e9a25032f657510643b40b75f7f8b956c6..e5f89a3de975a710bacaeee6fa408d65934a5856 100644 (file)
  *                         improve quality. Got rid of green line around 
  *                         frame. Fix brightness reset when changing size 
  *                         bug. Adjusted gamma filters slightly.
+ *
+ * ver 0.25 Jan, 2002 (kjs)
+ *                        Fixed a bug in which the driver sometimes attempted
+ *                        to set to a non-supported size. This allowed
+ *                        gnomemeeting to work.
+ *                        Fixed proc entry removal bug.
  */
 
 #include <linux/config.h>
@@ -87,7 +93,7 @@ static unsigned int debug = 0;
 /*
  * Version Information
  */
-#define DRIVER_VERSION "v0.24"
+#define DRIVER_VERSION "v0.25"
 #define DRIVER_AUTHOR "Kevin Sisson <kjsisson@bellsouth.net>"
 #define DRIVER_DESC "STV0680 USB Camera Driver"
 
@@ -659,7 +665,7 @@ static void proc_stv680_destroy (void)
        if (stv680_proc_entry == NULL)
                return;
 
-       remove_proc_entry ("stv", video_proc_entry);
+       remove_proc_entry ("stv680", video_proc_entry);
 }
 #endif                         /* CONFIG_PROC_FS && CONFIG_VIDEO_PROC_FS */
 
@@ -862,20 +868,23 @@ static int stv680_set_size (struct usb_stv *stv680, int width, int height)
        if ((width < (stv680->maxwidth / 2)) || (height < (stv680->maxheight / 2))) {
                width = stv680->maxwidth / 2;
                height = stv680->maxheight / 2;
-       } else if ((width >= 158) && (width <= 166)) {
+       } else if ((width >= 158) && (width <= 166) && (stv680->QVGA == 1)) {
                width = 160;
                height = 120;
-       } else if ((width >= 172) && (width <= 180)) {
+       } else if ((width >= 172) && (width <= 180) && (stv680->CIF == 1)) {
                width = 176;
                height = 144;
-       } else if ((width >= 318) && (width <= 350)) {
+       } else if ((width >= 318) && (width <= 350) && (stv680->QVGA == 1)) {
                width = 320;
                height = 240;
-       } else if ((width >= 350) && (width <= 358)) {
+       } else if ((width >= 350) && (width <= 358) && (stv680->CIF == 1)) {
                width = 352;
                height = 288;
+       } else {
+               PDEBUG (1, "STV(e): request for non-supported size: request: v.width = %i, v.height = %i  actual: stv.width = %i, stv.height = %i", width, height, stv680->vwidth, stv680->vheight);
+               return 1;
        }
-
+       
        /* Stop a current stream and start it again at the new size */
        if (wasstreaming)
                stv680_stop_stream (stv680);