diff -ubwr ./Conexant/cx11646.h /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/Conexant/cx11646.h
--- ./Conexant/cx11646.h	Fri Apr 21 12:02:04 2006
+++ /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/Conexant/cx11646.h	Mon Jan 22 09:41:14 2007
@@ -25,12 +25,6 @@
 static void cx11646_start(struct usb_spca50x *spca50x);
 static void cx11646_stop0(struct usb_spca50x *spca50x);
 static void cx11646_stopN(struct usb_spca50x *spca50x);
-static __u16 cx_getbrightness(struct usb_spca50x *spca50x);
-static __u16 cx_getcontrast(struct usb_spca50x *spca50x);
-static __u16 cx_getcolors(struct usb_spca50x *spca50x);
-static void cx_setbrightness(struct usb_spca50x *spca50x);
-static void cx_setcontrast(struct usb_spca50x *spca50x);
-static void cx_setcolors(struct usb_spca50x *spca50x);
 static int cx11646_config(struct usb_spca50x *spca50x);
 static void cx11646_shutdown(struct usb_spca50x *spca50x);
 static void cx11646_setAutobright(struct usb_spca50x *spca50x);
diff -ubwr ./decoder/gspcadecoder.c /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/decoder/gspcadecoder.c
--- ./decoder/gspcadecoder.c	Thu Dec  7 16:54:34 2006
+++ /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/decoder/gspcadecoder.c	Thu Feb  8 22:50:57 2007
@@ -304,7 +304,6 @@
 
 };
 
-int spca50x_outpicture(struct spca50x_frame *myframe);
 
 static int jpeg_decode411(struct spca50x_frame *myframe, int force_rgb);
 static int jpeg_decode422(struct spca50x_frame *myframe, int force_rgb);
@@ -607,7 +606,7 @@
 	    break;
 
 	default:
-
+	    // printf("%s: bad row %d 0x%x\n", __FUNCTION__, row, word);
 	    return -1;
 	}
 	outp += width;
@@ -891,6 +890,7 @@
     *bitfill += 7;
     return 0xff;
 }
+static
 int internal_spca561_decode(int width, int height, unsigned char *inbuf, unsigned char *outbuf)	// {{{
 {
     // buffers
@@ -1361,6 +1361,7 @@
 
     return 0;
 }
+static
 void decode_spca561(unsigned char *inbuf, char *outbuf, int width,
 		    int height)
 {
@@ -1480,6 +1481,7 @@
 	dscans[i].dc = 0;
     return 0;
 }
+static
 void
 jpeg_reset_input_context(struct dec_data *decode, unsigned char *buf,
 			 int oescap)
@@ -1857,12 +1859,12 @@
 {
     unsigned int i, j, k, l;
     int tc, th, tt, tac, tdc;
-    unsigned char *ptr;
+    const unsigned char *ptr;
     unsigned int qIndex = spca50x->qindex;
     memcpy(spca50x->maindecode.comps, comp_template,
 	   MAXCOMP * sizeof(struct comp));
     /* set up the huffman table */
-    ptr = (unsigned char *) GsmartJPEGHuffmanTable;
+    ptr = (const unsigned char *) GsmartJPEGHuffmanTable;
     l = GSMART_JPG_HUFFMAN_TABLE_LENGTH;
     while (l > 0) {
 	int hufflen[16];
@@ -1889,7 +1891,7 @@
     }
 
     /* set up the scan table */
-    ptr = (unsigned char *) GsmartJPEGScanTable;
+    ptr = (const unsigned char *) GsmartJPEGScanTable;
     for (i = 0; i < 3; i++) {
 	spca50x->maindecode.dscans[i].cid = *ptr++;
 	tdc = *ptr++;
diff -ubwr ./gspca.h /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/gspca.h
--- ./gspca.h	Wed Nov 29 18:24:32 2006
+++ /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/gspca.h	Wed Jan 31 17:29:09 2007
@@ -34,7 +34,7 @@
 #define PAC207_ENDPOINT_ADDRESS 5	/* Isoc endpoint number */
 /* only 2 or 4 frames are allowed here !!! */
 #define SPCA50X_NUMFRAMES 2
-#define SPCA50X_NUMSBUF 2
+#define SPCA50X_NUMSBUF 4
 #define VENDOR_SONIX 0x0c45
 #define VENDOR_ETOMS 0x102c
 #define VENDOR_SUNPLUS 0x04fc
diff -ubwr ./gspca_core.c /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/gspca_core.c
--- ./gspca_core.c	Wed Jan 10 22:22:01 2007
+++ /usr/ports/luigi/gspca/work-luigi/gspcav1-20070110/gspca_core.c	Fri Feb  9 11:57:34 2007
@@ -32,7 +32,7 @@
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
-static const char version[] = GSPCA_VERSION;
+static const char gspca_version[] = GSPCA_VERSION;
 #ifndef AUTOCONF_INCLUDED
 #include <linux/config.h>
 #endif
@@ -163,13 +163,6 @@
 static int spca5xx_set_light_freq(struct usb_spca50x *spca50x, int freq);
 
 static struct usb_driver spca5xx_driver;
-#ifndef max
-static inline int
-max(int a, int b)
-{
-	return (a > b) ? a : b;
-}
-#endif				/* max */
 /**********************************************************************
 * List of known SPCA50X-based cameras
 **********************************************************************/
@@ -854,7 +847,7 @@
 * FIXME as I don't know how to set the bandwith budget
 * we allow the maximum
 **/
-struct usb_host_endpoint *
+static struct usb_host_endpoint *
 gspca_set_isoc_ep(struct usb_spca50x *spca50x, int nbalt)
 {
 	int i, j;
@@ -1901,6 +1894,9 @@
 	if (spca50x->user)
 		goto out;
 	err = -ENOMEM;
+	/* XXX set compress and autoexpo */
+	spca50x->autoexpo = autoexpo;
+	spca50x->compress = compress;
 	if (spca50x_alloc(spca50x))
 		goto out;
 /* initialize sensor and decoding */
@@ -4100,7 +4096,7 @@
 {
 	if (usb_register(&spca5xx_driver) < 0)
 		return -1;
-	info("gspca driver %s registered", version);
+	info("gspca driver %s registered", gspca_version);
 	return 0;
 }
 static void __exit
