aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2008-07-04 10:16:16 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 06:16:53 -0400
commita5ae2062252e697d38e53dbbeb91460252208914 (patch)
tree38706e9f36e2d93cd3dee8eea639bb74a17b3efa /drivers
parent54ab92ca05550550bcec2462de2605f35d079b66 (diff)
V4L/DVB (8195): gspca: Input buffer overwritten in spca561 + cleanup code.
spca561: Input buffer may be changed on reg write. (all sd): Cleanup code, 'const' added. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/gspca/conex.c98
-rw-r--r--drivers/media/video/gspca/etoms.c546
-rw-r--r--drivers/media/video/gspca/gspca.c6
-rw-r--r--drivers/media/video/gspca/gspca.h26
-rw-r--r--drivers/media/video/gspca/mars.c13
-rw-r--r--drivers/media/video/gspca/ov519.c60
-rw-r--r--drivers/media/video/gspca/pac207.c14
-rw-r--r--drivers/media/video/gspca/pac7311.c40
-rw-r--r--drivers/media/video/gspca/sonixj.c165
-rw-r--r--drivers/media/video/gspca/spca500.c301
-rw-r--r--drivers/media/video/gspca/spca501.c27
-rw-r--r--drivers/media/video/gspca/spca505.c22
-rw-r--r--drivers/media/video/gspca/spca508.c22
-rw-r--r--drivers/media/video/gspca/spca561.c30
-rw-r--r--drivers/media/video/gspca/stk014.c36
-rw-r--r--drivers/media/video/gspca/sunplus.c28
-rw-r--r--drivers/media/video/gspca/t613.c198
-rw-r--r--drivers/media/video/gspca/tv8532.c22
-rw-r--r--drivers/media/video/gspca/vc032x.c80
-rw-r--r--drivers/media/video/gspca/zc3xx.c246
20 files changed, 932 insertions, 1048 deletions
diff --git a/drivers/media/video/gspca/conex.c b/drivers/media/video/gspca/conex.c
index 473bea750b5f..6d50247b7ad2 100644
--- a/drivers/media/video/gspca/conex.c
+++ b/drivers/media/video/gspca/conex.c
@@ -25,8 +25,8 @@
25#define CONEX_CAM 1 /* special JPEG header */ 25#define CONEX_CAM 1 /* special JPEG header */
26#include "jpeg.h" 26#include "jpeg.h"
27 27
28#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 3) 28#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
29static const char version[] = "2.1.3"; 29static const char version[] = "2.1.4";
30 30
31MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 31MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
32MODULE_DESCRIPTION("GSPCA USB Conexant Camera Driver"); 32MODULE_DESCRIPTION("GSPCA USB Conexant Camera Driver");
@@ -229,7 +229,7 @@ static void cx11646_fw(struct gspca_dev*gspca_dev)
229 reg_w(gspca_dev->dev, 0x006a, &val, 1); 229 reg_w(gspca_dev->dev, 0x006a, &val, 1);
230} 230}
231 231
232static __u8 cxsensor[] = { 232static const __u8 cxsensor[] = {
233 0x88, 0x12, 0x70, 0x01, 233 0x88, 0x12, 0x70, 0x01,
234 0x88, 0x0d, 0x02, 0x01, 234 0x88, 0x0d, 0x02, 0x01,
235 0x88, 0x0f, 0x00, 0x01, 235 0x88, 0x0f, 0x00, 0x01,
@@ -244,24 +244,24 @@ static __u8 cxsensor[] = {
244 0x00 244 0x00
245}; 245};
246 246
247static __u8 reg20[] = { 0x10, 0x42, 0x81, 0x19, 0xd3, 0xff, 0xa7, 0xff }; 247static const __u8 reg20[] = { 0x10, 0x42, 0x81, 0x19, 0xd3, 0xff, 0xa7, 0xff };
248static __u8 reg28[] = { 0x87, 0x00, 0x87, 0x00, 0x8f, 0xff, 0xea, 0xff }; 248static const __u8 reg28[] = { 0x87, 0x00, 0x87, 0x00, 0x8f, 0xff, 0xea, 0xff };
249static __u8 reg10[] = { 0xb1, 0xb1 }; 249static const __u8 reg10[] = { 0xb1, 0xb1 };
250static __u8 reg71a[] = { 0x08, 0x18, 0x0a, 0x1e }; /* 640 */ 250static const __u8 reg71a[] = { 0x08, 0x18, 0x0a, 0x1e }; /* 640 */
251static __u8 reg71b[] = { 0x04, 0x0c, 0x05, 0x0f }; 251static const __u8 reg71b[] = { 0x04, 0x0c, 0x05, 0x0f };
252 /* 352{0x04,0x0a,0x06,0x12}; //352{0x05,0x0e,0x06,0x11}; //352 */ 252 /* 352{0x04,0x0a,0x06,0x12}; //352{0x05,0x0e,0x06,0x11}; //352 */
253static __u8 reg71c[] = { 0x02, 0x07, 0x03, 0x09 }; 253static const __u8 reg71c[] = { 0x02, 0x07, 0x03, 0x09 };
254 /* 320{0x04,0x0c,0x05,0x0f}; //320 */ 254 /* 320{0x04,0x0c,0x05,0x0f}; //320 */
255static __u8 reg71d[] = { 0x02, 0x07, 0x03, 0x09 }; /* 176 */ 255static const __u8 reg71d[] = { 0x02, 0x07, 0x03, 0x09 }; /* 176 */
256static __u8 reg7b[] = { 0x00, 0xff, 0x00, 0xff, 0x00, 0xff }; 256static const __u8 reg7b[] = { 0x00, 0xff, 0x00, 0xff, 0x00, 0xff };
257 257
258static void cx_sensor(struct gspca_dev*gspca_dev) 258static void cx_sensor(struct gspca_dev*gspca_dev)
259{ 259{
260 __u8 val = 0; 260 __u8 val;
261 int i = 0; 261 int i = 0;
262 __u8 bufread[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; 262 __u8 bufread[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
263 int length = 0; 263 int length;
264 __u8 *ptsensor = cxsensor; 264 const __u8 *ptsensor = cxsensor;
265 265
266 reg_w(gspca_dev->dev, 0x0020, reg20, 8); 266 reg_w(gspca_dev->dev, 0x0020, reg20, 8);
267 reg_w(gspca_dev->dev, 0x0028, reg28, 8); 267 reg_w(gspca_dev->dev, 0x0028, reg28, 8);
@@ -305,7 +305,7 @@ static void cx_sensor(struct gspca_dev*gspca_dev)
305 reg_r(gspca_dev->dev, 0x00e7, bufread, 8); 305 reg_r(gspca_dev->dev, 0x00e7, bufread, 8);
306} 306}
307 307
308static __u8 cx_inits_176[] = { 308static const __u8 cx_inits_176[] = {
309 0x33, 0x81, 0xB0, 0x00, 0x90, 0x00, 0x0A, 0x03, /* 176x144 */ 309 0x33, 0x81, 0xB0, 0x00, 0x90, 0x00, 0x0A, 0x03, /* 176x144 */
310 0x00, 0x03, 0x03, 0x03, 0x1B, 0x05, 0x30, 0x03, 310 0x00, 0x03, 0x03, 0x03, 0x1B, 0x05, 0x30, 0x03,
311 0x65, 0x15, 0x18, 0x25, 0x03, 0x25, 0x08, 0x30, 311 0x65, 0x15, 0x18, 0x25, 0x03, 0x25, 0x08, 0x30,
@@ -314,7 +314,7 @@ static __u8 cx_inits_176[] = {
314 0xF7, 0xFF, 0x88, 0xFF, 0x66, 0x02, 0x28, 0x02, 314 0xF7, 0xFF, 0x88, 0xFF, 0x66, 0x02, 0x28, 0x02,
315 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 315 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
316}; 316};
317static __u8 cx_inits_320[] = { 317static const __u8 cx_inits_320[] = {
318 0x7f, 0x7f, 0x40, 0x01, 0xf0, 0x00, 0x02, 0x01, 318 0x7f, 0x7f, 0x40, 0x01, 0xf0, 0x00, 0x02, 0x01,
319 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x02, 0x01, 319 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x02, 0x01,
320 0x65, 0x45, 0xfa, 0x4c, 0x2c, 0xdf, 0xb9, 0x81, 320 0x65, 0x45, 0xfa, 0x4c, 0x2c, 0xdf, 0xb9, 0x81,
@@ -323,7 +323,7 @@ static __u8 cx_inits_320[] = {
323 0xf5, 0xff, 0x6d, 0xff, 0xf6, 0x01, 0x43, 0x02, 323 0xf5, 0xff, 0x6d, 0xff, 0xf6, 0x01, 0x43, 0x02,
324 0xd3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 324 0xd3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
325}; 325};
326static __u8 cx_inits_352[] = { 326static const __u8 cx_inits_352[] = {
327 0x2e, 0x7c, 0x60, 0x01, 0x20, 0x01, 0x05, 0x03, 327 0x2e, 0x7c, 0x60, 0x01, 0x20, 0x01, 0x05, 0x03,
328 0x00, 0x06, 0x03, 0x06, 0x1b, 0x10, 0x05, 0x3b, 328 0x00, 0x06, 0x03, 0x06, 0x1b, 0x10, 0x05, 0x3b,
329 0x30, 0x25, 0x18, 0x25, 0x08, 0x30, 0x03, 0x25, 329 0x30, 0x25, 0x18, 0x25, 0x08, 0x30, 0x03, 0x25,
@@ -332,7 +332,7 @@ static __u8 cx_inits_352[] = {
332 0xf5, 0xff, 0x6b, 0xff, 0xee, 0x01, 0x43, 0x02, 332 0xf5, 0xff, 0x6b, 0xff, 0xee, 0x01, 0x43, 0x02,
333 0xe4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 333 0xe4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
334}; 334};
335static __u8 cx_inits_640[] = { 335static const __u8 cx_inits_640[] = {
336 0x7e, 0x7e, 0x80, 0x02, 0xe0, 0x01, 0x01, 0x01, 336 0x7e, 0x7e, 0x80, 0x02, 0xe0, 0x01, 0x01, 0x01,
337 0x00, 0x02, 0x01, 0x02, 0x10, 0x30, 0x01, 0x01, 337 0x00, 0x02, 0x01, 0x02, 0x10, 0x30, 0x01, 0x01,
338 0x65, 0x45, 0xf7, 0x52, 0x2c, 0xdf, 0xb9, 0x81, 338 0x65, 0x45, 0xf7, 0x52, 0x2c, 0xdf, 0xb9, 0x81,
@@ -344,7 +344,7 @@ static __u8 cx_inits_640[] = {
344 344
345static int cx11646_initsize(struct gspca_dev *gspca_dev) 345static int cx11646_initsize(struct gspca_dev *gspca_dev)
346{ 346{
347 __u8 *cxinit; 347 const __u8 *cxinit;
348 __u8 val; 348 __u8 val;
349 static const __u8 reg12[] = { 0x08, 0x05, 0x07, 0x04, 0x24 }; 349 static const __u8 reg12[] = { 0x08, 0x05, 0x07, 0x04, 0x24 };
350 static const __u8 reg17[] = 350 static const __u8 reg17[] =
@@ -396,7 +396,7 @@ static int cx11646_initsize(struct gspca_dev *gspca_dev)
396 return val; 396 return val;
397} 397}
398 398
399static __u8 cx_jpeg_init[][8] = { 399static const __u8 cx_jpeg_init[][8] = {
400 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x15}, /* 1 */ 400 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x15}, /* 1 */
401 {0x0f, 0x10, 0x12, 0x10, 0x0d, 0x15, 0x12, 0x11}, 401 {0x0f, 0x10, 0x12, 0x10, 0x0d, 0x15, 0x12, 0x11},
402 {0x12, 0x18, 0x16, 0x15, 0x19, 0x20, 0x35, 0x22}, 402 {0x12, 0x18, 0x16, 0x15, 0x19, 0x20, 0x35, 0x22},
@@ -479,7 +479,7 @@ static __u8 cx_jpeg_init[][8] = {
479}; 479};
480 480
481 481
482static __u8 cxjpeg_640[][8] = { 482static const __u8 cxjpeg_640[][8] = {
483 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x10}, /* 1 */ 483 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x10}, /* 1 */
484 {0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e, 0x0d}, 484 {0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e, 0x0d},
485 {0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28, 0x1a}, 485 {0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28, 0x1a},
@@ -508,7 +508,7 @@ static __u8 cxjpeg_640[][8] = {
508 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00}, 508 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00},
509 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /* 27 */ 509 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /* 27 */
510}; 510};
511static __u8 cxjpeg_352[][8] = { 511static const __u8 cxjpeg_352[][8] = {
512 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x0d}, 512 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x0d},
513 {0x09, 0x09, 0x0b, 0x09, 0x08, 0x0D, 0x0b, 0x0a}, 513 {0x09, 0x09, 0x0b, 0x09, 0x08, 0x0D, 0x0b, 0x0a},
514 {0x0b, 0x0e, 0x0d, 0x0d, 0x0f, 0x13, 0x1f, 0x14}, 514 {0x0b, 0x0e, 0x0d, 0x0d, 0x0f, 0x13, 0x1f, 0x14},
@@ -537,7 +537,7 @@ static __u8 cxjpeg_352[][8] = {
537 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00}, 537 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00},
538 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} 538 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
539}; 539};
540static __u8 cxjpeg_320[][8] = { 540static const __u8 cxjpeg_320[][8] = {
541 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x05}, 541 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x05},
542 {0x03, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04, 0x04}, 542 {0x03, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04, 0x04},
543 {0x04, 0x05, 0x05, 0x05, 0x06, 0x07, 0x0c, 0x08}, 543 {0x04, 0x05, 0x05, 0x05, 0x06, 0x07, 0x0c, 0x08},
@@ -566,7 +566,7 @@ static __u8 cxjpeg_320[][8] = {
566 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00}, 566 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00},
567 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /* 27 */ 567 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /* 27 */
568}; 568};
569static __u8 cxjpeg_176[][8] = { 569static const __u8 cxjpeg_176[][8] = {
570 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x0d}, 570 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x0d},
571 {0x09, 0x09, 0x0B, 0x09, 0x08, 0x0D, 0x0B, 0x0A}, 571 {0x09, 0x09, 0x0B, 0x09, 0x08, 0x0D, 0x0B, 0x0A},
572 {0x0B, 0x0E, 0x0D, 0x0D, 0x0F, 0x13, 0x1F, 0x14}, 572 {0x0B, 0x0E, 0x0D, 0x0D, 0x0F, 0x13, 0x1F, 0x14},
@@ -595,7 +595,8 @@ static __u8 cxjpeg_176[][8] = {
595 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00}, 595 {0x00, 0x01, 0x11, 0x02, 0x11, 0x00, 0x3F, 0x00},
596 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} 596 {0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
597}; 597};
598static __u8 cxjpeg_qtable[][8] = { /* 640 take with the zcx30x part */ 598/* 640 take with the zcx30x part */
599static const __u8 cxjpeg_qtable[][8] = {
599 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x08}, 600 {0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x08},
600 {0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07, 0x07}, 601 {0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07, 0x07},
601 {0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14, 0x0a}, 602 {0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14, 0x0a},
@@ -641,22 +642,23 @@ static void cx11646_jpegInit(struct gspca_dev*gspca_dev)
641 reg_w(gspca_dev->dev, 0x0055, &val, 1); 642 reg_w(gspca_dev->dev, 0x0055, &val, 1);
642} 643}
643 644
644static __u8 reg12[] = { 0x0a, 0x05, 0x07, 0x04, 0x19 }; 645static const __u8 reg12[] = { 0x0a, 0x05, 0x07, 0x04, 0x19 };
645static __u8 regE5_8[] = { 0x88, 0x00, 0xd4, 0x01, 0x88, 0x01, 0x01, 0x01 }; 646static const __u8 regE5_8[] =
646static __u8 regE5a[] = { 0x88, 0x0a, 0x0c, 0x01 }; 647 { 0x88, 0x00, 0xd4, 0x01, 0x88, 0x01, 0x01, 0x01 };
647static __u8 regE5b[] = { 0x88, 0x0b, 0x12, 0x01 }; 648static const __u8 regE5a[] = { 0x88, 0x0a, 0x0c, 0x01 };
648static __u8 regE5c[] = { 0x88, 0x05, 0x01, 0x01 }; 649static const __u8 regE5b[] = { 0x88, 0x0b, 0x12, 0x01 };
649static __u8 reg51[] = { 0x77, 0x03 }; 650static const __u8 regE5c[] = { 0x88, 0x05, 0x01, 0x01 };
650static __u8 reg70 = 0x03; 651static const __u8 reg51[] = { 0x77, 0x03 };
652static const __u8 reg70 = 0x03;
651 653
652static void cx11646_jpeg(struct gspca_dev*gspca_dev) 654static void cx11646_jpeg(struct gspca_dev*gspca_dev)
653{ 655{
654 __u8 val; 656 __u8 val;
655 int i; 657 int i;
656 int length = 8; 658 int length;
657 __u8 Reg55 = 0x14; 659 __u8 Reg55;
658 __u8 bufread[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; 660 __u8 bufread[8];
659 int retry = 50; 661 int retry;
660 662
661 val = 0x01; 663 val = 0x01;
662 reg_w(gspca_dev->dev, 0x00c0, &val, 1); 664 reg_w(gspca_dev->dev, 0x00c0, &val, 1);
@@ -665,6 +667,7 @@ static void cx11646_jpeg(struct gspca_dev*gspca_dev)
665 val = 0x00; 667 val = 0x00;
666 reg_w(gspca_dev->dev, 0x00c0, &val, 1); 668 reg_w(gspca_dev->dev, 0x00c0, &val, 1);
667 reg_r(gspca_dev->dev, 0x0001, &val, 1); 669 reg_r(gspca_dev->dev, 0x0001, &val, 1);
670 length = 8;
668 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) { 671 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) {
669 case 0: 672 case 0:
670 for (i = 0; i < 27; i++) { 673 for (i = 0; i < 27; i++) {
@@ -719,6 +722,7 @@ static void cx11646_jpeg(struct gspca_dev*gspca_dev)
719 val = 0x00; 722 val = 0x00;
720 reg_w(gspca_dev->dev, 0x0000, &val, 1); 723 reg_w(gspca_dev->dev, 0x0000, &val, 1);
721 /* wait for completion */ 724 /* wait for completion */
725 retry = 50;
722 while (retry--) { 726 while (retry--) {
723 reg_r(gspca_dev->dev, 0x0002, &val, 1); 727 reg_r(gspca_dev->dev, 0x0002, &val, 1);
724 /* 0x07 until 0x00 */ 728 /* 0x07 until 0x00 */
@@ -796,8 +800,8 @@ static void cx11646_init1(struct gspca_dev *gspca_dev)
796 reg_w(gspca_dev->dev, 0x003f, &val, 1); 800 reg_w(gspca_dev->dev, 0x003f, &val, 1);
797 val = 0x40; 801 val = 0x40;
798 reg_w(gspca_dev->dev, 0x003d, &val, 1); 802 reg_w(gspca_dev->dev, 0x003d, &val, 1);
799/* val= 0x60; */ 803/* val= 0x60; */
800/* reg_w(gspca_dev->dev,0x00,0x00,0x003d,&val,1); */ 804/* reg_w(gspca_dev->dev, 0x00, 0x00, 0x003d, &val, 1); */
801 reg_r(gspca_dev->dev, 0x0099, &val, 1); /* ->0x07 */ 805 reg_r(gspca_dev->dev, 0x0099, &val, 1); /* ->0x07 */
802 806
803 while (cx_sensor_init[i][0]) { 807 while (cx_sensor_init[i][0]) {
@@ -827,7 +831,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
827 cam->cam_mode = vga_mode; 831 cam->cam_mode = vga_mode;
828 cam->nmodes = sizeof vga_mode / sizeof vga_mode[0]; 832 cam->nmodes = sizeof vga_mode / sizeof vga_mode[0];
829 833
830 sd->qindex = 0; /* set the quantization table */ 834 sd->qindex = 0; /* set the quantization */
831 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 835 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value;
832 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 836 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value;
833 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 837 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value;
@@ -891,7 +895,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
891 895
892static void sd_pkt_scan(struct gspca_dev *gspca_dev, 896static void sd_pkt_scan(struct gspca_dev *gspca_dev,
893 struct gspca_frame *frame, /* target */ 897 struct gspca_frame *frame, /* target */
894 unsigned char *data, /* isoc packet */ 898 __u8 *data, /* isoc packet */
895 int len) /* iso packet length */ 899 int len) /* iso packet length */
896{ 900{
897 if (data[0] == 0xff && data[1] == 0xd8) { 901 if (data[0] == 0xff && data[1] == 0xd8) {
@@ -914,21 +918,22 @@ static void setbrightness(struct gspca_dev*gspca_dev)
914{ 918{
915 struct sd *sd = (struct sd *) gspca_dev; 919 struct sd *sd = (struct sd *) gspca_dev;
916 __u8 regE5cbx[] = { 0x88, 0x00, 0xd4, 0x01, 0x88, 0x01, 0x01, 0x01 }; 920 __u8 regE5cbx[] = { 0x88, 0x00, 0xd4, 0x01, 0x88, 0x01, 0x01, 0x01 };
917 __u8 reg51c[] = { 0x77, 0x03 }; 921 __u8 reg51c[2];
918 __u8 bright; 922 __u8 bright;
919 __u8 colors; 923 __u8 colors;
920 __u8 val; 924 __u8 val;
921 __u8 bufread[8]; 925 __u8 bufread[8];
922 926
923 bright = sd->brightness; 927 bright = sd->brightness;
924 colors = sd->colors;
925 regE5cbx[2] = bright; 928 regE5cbx[2] = bright;
926 reg51c[1] = colors;
927 reg_w(gspca_dev->dev, 0x00e5, regE5cbx, 8); 929 reg_w(gspca_dev->dev, 0x00e5, regE5cbx, 8);
928 reg_r(gspca_dev->dev, 0x00e8, bufread, 8); 930 reg_r(gspca_dev->dev, 0x00e8, bufread, 8);
929 reg_w(gspca_dev->dev, 0x00e5, regE5c, 4); 931 reg_w(gspca_dev->dev, 0x00e5, regE5c, 4);
930 reg_r(gspca_dev->dev, 0x00e8, &val, 1); /* 0x00 */ 932 reg_r(gspca_dev->dev, 0x00e8, &val, 1); /* 0x00 */
931 933
934 colors = sd->colors;
935 reg51c[0] = 0x77;
936 reg51c[1] = colors;
932 reg_w(gspca_dev->dev, 0x0051, reg51c, 2); 937 reg_w(gspca_dev->dev, 0x0051, reg51c, 2);
933 reg_w(gspca_dev->dev, 0x0010, reg10, 2); 938 reg_w(gspca_dev->dev, 0x0010, reg10, 2);
934 reg_w(gspca_dev->dev, 0x0070, &reg70, 1); 939 reg_w(gspca_dev->dev, 0x0070, &reg70, 1);
@@ -938,14 +943,15 @@ static void setcontrast(struct gspca_dev*gspca_dev)
938{ 943{
939 struct sd *sd = (struct sd *) gspca_dev; 944 struct sd *sd = (struct sd *) gspca_dev;
940 __u8 regE5acx[] = { 0x88, 0x0a, 0x0c, 0x01 }; /* seem MSB */ 945 __u8 regE5acx[] = { 0x88, 0x0a, 0x0c, 0x01 }; /* seem MSB */
941 /* __u8 regE5bcx[]={0x88,0x0b,0x12,0x01}; // LSB */ 946/* __u8 regE5bcx[] = { 0x88, 0x0b, 0x12, 0x01}; * LSB */
942 __u8 reg51c[] = { 0x77, 0x03 }; 947 __u8 reg51c[2];
943 __u8 val; 948 __u8 val;
944 949
945 reg51c[1] = sd->colors;
946 regE5acx[2] = sd->contrast; 950 regE5acx[2] = sd->contrast;
947 reg_w(gspca_dev->dev, 0x00e5, regE5acx, 4); 951 reg_w(gspca_dev->dev, 0x00e5, regE5acx, 4);
948 reg_r(gspca_dev->dev, 0x00e8, &val, 1); /* 0x00 */ 952 reg_r(gspca_dev->dev, 0x00e8, &val, 1); /* 0x00 */
953 reg51c[0] = 0x77;
954 reg51c[1] = sd->colors;
949 reg_w(gspca_dev->dev, 0x0051, reg51c, 2); 955 reg_w(gspca_dev->dev, 0x0051, reg51c, 2);
950 reg_w(gspca_dev->dev, 0x0010, reg10, 2); 956 reg_w(gspca_dev->dev, 0x0010, reg10, 2);
951 reg_w(gspca_dev->dev, 0x0070, &reg70, 1); 957 reg_w(gspca_dev->dev, 0x0070, &reg70, 1);
diff --git a/drivers/media/video/gspca/etoms.c b/drivers/media/video/gspca/etoms.c
index ed7a8f9c0d7a..bbbe65923cfc 100644
--- a/drivers/media/video/gspca/etoms.c
+++ b/drivers/media/video/gspca/etoms.c
@@ -22,8 +22,8 @@
22 22
23#include "gspca.h" 23#include "gspca.h"
24 24
25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 3) 25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
26static const char version[] = "2.1.3"; 26static const char version[] = "2.1.4";
27 27
28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
29MODULE_DESCRIPTION("Etoms USB Camera Driver"); 29MODULE_DESCRIPTION("Etoms USB Camera Driver");
@@ -56,7 +56,6 @@ static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val);
56static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val); 56static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val);
57 57
58static struct ctrl sd_ctrls[] = { 58static struct ctrl sd_ctrls[] = {
59#define SD_BRIGHTNESS 0
60 { 59 {
61 { 60 {
62 .id = V4L2_CID_BRIGHTNESS, 61 .id = V4L2_CID_BRIGHTNESS,
@@ -65,12 +64,12 @@ static struct ctrl sd_ctrls[] = {
65 .minimum = 1, 64 .minimum = 1,
66 .maximum = 127, 65 .maximum = 127,
67 .step = 1, 66 .step = 1,
68 .default_value = 63, 67#define BRIGHTNESS_DEF 63
68 .default_value = BRIGHTNESS_DEF,
69 }, 69 },
70 .set = sd_setbrightness, 70 .set = sd_setbrightness,
71 .get = sd_getbrightness, 71 .get = sd_getbrightness,
72 }, 72 },
73#define SD_CONTRAST 1
74 { 73 {
75 { 74 {
76 .id = V4L2_CID_CONTRAST, 75 .id = V4L2_CID_CONTRAST,
@@ -79,12 +78,12 @@ static struct ctrl sd_ctrls[] = {
79 .minimum = 0, 78 .minimum = 0,
80 .maximum = 255, 79 .maximum = 255,
81 .step = 1, 80 .step = 1,
82 .default_value = 127, 81#define CONTRAST_DEF 127
82 .default_value = CONTRAST_DEF,
83 }, 83 },
84 .set = sd_setcontrast, 84 .set = sd_setcontrast,
85 .get = sd_getcontrast, 85 .get = sd_getcontrast,
86 }, 86 },
87#define SD_COLOR 2
88 { 87 {
89 { 88 {
90 .id = V4L2_CID_SATURATION, 89 .id = V4L2_CID_SATURATION,
@@ -93,12 +92,12 @@ static struct ctrl sd_ctrls[] = {
93 .minimum = 0, 92 .minimum = 0,
94 .maximum = 15, 93 .maximum = 15,
95 .step = 1, 94 .step = 1,
96 .default_value = 7, 95#define COLOR_DEF 7
96 .default_value = COLOR_DEF,
97 }, 97 },
98 .set = sd_setcolors, 98 .set = sd_setcolors,
99 .get = sd_getcolors, 99 .get = sd_getcolors,
100 }, 100 },
101#define SD_AUTOGAIN 3
102 { 101 {
103 { 102 {
104 .id = V4L2_CID_AUTOGAIN, 103 .id = V4L2_CID_AUTOGAIN,
@@ -107,7 +106,8 @@ static struct ctrl sd_ctrls[] = {
107 .minimum = 0, 106 .minimum = 0,
108 .maximum = 1, 107 .maximum = 1,
109 .step = 1, 108 .step = 1,
110 .default_value = 1, 109#define AUTOGAIN_DEF 1
110 .default_value = AUTOGAIN_DEF,
111 }, 111 },
112 .set = sd_setautogain, 112 .set = sd_setautogain,
113 .get = sd_getautogain, 113 .get = sd_getautogain,
@@ -205,13 +205,13 @@ static struct cam_mode sif_mode[] = {
205#define PAS106_REG0e 0x0e /* global gain [4..0](default 0x0e) */ 205#define PAS106_REG0e 0x0e /* global gain [4..0](default 0x0e) */
206#define PAS106_REG13 0x13 /* end i2c write */ 206#define PAS106_REG13 0x13 /* end i2c write */
207 207
208static __u8 GainRGBG[] = { 0x80, 0x80, 0x80, 0x80, 0x00, 0x00 }; 208static const __u8 GainRGBG[] = { 0x80, 0x80, 0x80, 0x80, 0x00, 0x00 };
209 209
210static __u8 I2c2[] = { 0x08, 0x08, 0x08, 0x08, 0x0d }; 210static const __u8 I2c2[] = { 0x08, 0x08, 0x08, 0x08, 0x0d };
211 211
212static __u8 I2c3[] = { 0x12, 0x05 }; 212static const __u8 I2c3[] = { 0x12, 0x05 };
213 213
214static __u8 I2c4[] = { 0x41, 0x08 }; 214static const __u8 I2c4[] = { 0x41, 0x08 };
215 215
216static void reg_r(struct usb_device *dev, 216static void reg_r(struct usb_device *dev,
217 __u16 index, __u8 *buffer, int len) 217 __u16 index, __u8 *buffer, int len)
@@ -223,8 +223,21 @@ static void reg_r(struct usb_device *dev,
223 0, index, buffer, len, 500); 223 0, index, buffer, len, 500);
224} 224}
225 225
226static void reg_w_val(struct usb_device *dev,
227 __u16 index, __u8 val)
228{
229 __u8 data;
230
231 data = val;
232 usb_control_msg(dev,
233 usb_sndctrlpipe(dev, 0),
234 0,
235 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
236 0, index, &data, 1, 500);
237}
238
226static void reg_w(struct usb_device *dev, 239static void reg_w(struct usb_device *dev,
227 __u16 index, __u8 *buffer, __u16 len) 240 __u16 index, const __u8 *buffer, __u16 len)
228{ 241{
229 __u8 tmpbuf[8]; 242 __u8 tmpbuf[8];
230 243
@@ -236,48 +249,42 @@ static void reg_w(struct usb_device *dev,
236 0, index, tmpbuf, len, 500); 249 0, index, tmpbuf, len, 500);
237} 250}
238 251
239static int Et_i2cwrite(struct usb_device *dev, __u8 reg, __u8 *buffer, 252static int Et_i2cwrite(struct usb_device *dev, __u8 reg,
240 __u16 length, __u8 mode) 253 const __u8 *buffer,
254 __u16 len, __u8 mode)
241{ 255{
242/* buffer should be [D0..D7] */ 256 /* buffer should be [D0..D7] */
243 int i, j; 257 __u8 ptchcount;
244 __u8 base = 0x40; /* sensor base for the pas106 */ 258
245 __u8 ptchcount = 0; 259 /* set the base address */
246 260 reg_w_val(dev, ET_I2C_BASE, 0x40); /* sensor base for the pas106 */
247 ptchcount = (((length & 0x07) << 4) | (mode & 0x03)); 261 /* set count and prefetch */
248/* set the base address */ 262 ptchcount = ((len & 0x07) << 4) | (mode & 0x03);
249 reg_w(dev, ET_I2C_BASE, &base, 1); 263 reg_w_val(dev, ET_I2C_COUNT, ptchcount);
250/* set count and prefetch */ 264 /* set the register base */
251 reg_w(dev, ET_I2C_COUNT, &ptchcount, 1); 265 reg_w_val(dev, ET_I2C_REG, reg);
252/* set the register base */ 266 while (--len >= 0)
253 reg_w(dev, ET_I2C_REG, &reg, 1); 267 reg_w_val(dev, ET_I2C_DATA0 + len, buffer[len]);
254 j = length - 1;
255 for (i = 0; i < length; i++) {
256 reg_w(dev, (ET_I2C_DATA0 + j), &buffer[j], 1);
257 j--;
258 }
259 return 0; 268 return 0;
260} 269}
261 270
262static int Et_i2cread(struct usb_device *dev, __u8 reg, __u8 *buffer, 271static int Et_i2cread(struct usb_device *dev, __u8 reg,
263 __u16 length, __u8 mode) 272 __u8 *buffer,
273 __u16 length, __u8 mode)
264{ 274{
265/* buffer should be [D0..D7] */ 275 /* buffer should be [D0..D7] */
266 int i, j; 276 int i, j;
267 __u8 base = 0x40; /* sensor base for the pas106 */
268 __u8 ptchcount; 277 __u8 ptchcount;
269 __u8 prefetch = 0x02; 278
270 279 /* set the base address */
271 ptchcount = (((length & 0x07) << 4) | (mode & 0x03)); 280 reg_w_val(dev, ET_I2C_BASE, 0x40); /* sensor base for the pas106 */
272/* set the base address */ 281 /* set count and prefetch */
273 reg_w(dev, ET_I2C_BASE, &base, 1); 282 ptchcount = ((length & 0x07) << 4) | (mode & 0x03);
274/* set count and prefetch */ 283 reg_w_val(dev, ET_I2C_COUNT, ptchcount);
275 reg_w(dev, ET_I2C_COUNT, &ptchcount, 1); 284 /* set the register base */
276/* set the register base */ 285 reg_w_val(dev, ET_I2C_REG, reg);
277 reg_w(dev, ET_I2C_REG, &reg, 1); 286 reg_w_val(dev, ET_I2C_PREFETCH, 0x02); /* prefetch */
278 reg_w(dev, ET_I2C_PREFETCH, &prefetch, 1); 287 reg_w_val(dev, ET_I2C_PREFETCH, 0);
279 prefetch = 0x00;
280 reg_w(dev, ET_I2C_PREFETCH, &prefetch, 1);
281 j = length - 1; 288 j = length - 1;
282 for (i = 0; i < length; i++) { 289 for (i = 0; i < length; i++) {
283 reg_r(dev, (ET_I2C_DATA0 + j), &buffer[j], 1); 290 reg_r(dev, (ET_I2C_DATA0 + j), &buffer[j], 1);
@@ -299,222 +306,139 @@ static int Et_WaitStatus(struct usb_device *dev)
299 return 0; 306 return 0;
300} 307}
301 308
302static int Et_videoOff(struct usb_device *dev) 309static int et_video(struct usb_device *dev, int on)
303{ 310{
304 int err; 311 int err;
305 __u8 stopvideo = 0;
306 312
307 reg_w(dev, ET_GPIO_OUT, &stopvideo, 1); 313 reg_w_val(dev, ET_GPIO_OUT, on
314 ? 0x10 /* startvideo - set Bit5 */
315 : 0); /* stopvideo */
308 err = Et_WaitStatus(dev); 316 err = Et_WaitStatus(dev);
309 if (!err) 317 if (!err)
310 PDEBUG(D_ERR, "timeout Et_waitStatus VideoON"); 318 PDEBUG(D_ERR, "timeout video on/off");
311 return err;
312}
313
314static int Et_videoOn(struct usb_device *dev)
315{
316 int err;
317 __u8 startvideo = 0x10; /* set Bit5 */
318
319 reg_w(dev, ET_GPIO_OUT, &startvideo, 1);
320 err = Et_WaitStatus(dev);
321 if (!err)
322 PDEBUG(D_ERR, "timeout Et_waitStatus VideoOFF");
323 return err; 319 return err;
324} 320}
325 321
326static void Et_init2(struct gspca_dev *gspca_dev) 322static void Et_init2(struct gspca_dev *gspca_dev)
327{ 323{
328 struct usb_device *dev = gspca_dev->dev; 324 struct usb_device *dev = gspca_dev->dev;
329 __u8 value = 0x00; 325 __u8 value;
330 __u8 received = 0x00; 326 __u8 received;
331 __u8 FormLine[] = { 0x84, 0x03, 0x14, 0xf4, 0x01, 0x05 }; 327 static const __u8 FormLine[] = { 0x84, 0x03, 0x14, 0xf4, 0x01, 0x05 };
332 328
333 PDEBUG(D_STREAM, "Open Init2 ET"); 329 PDEBUG(D_STREAM, "Open Init2 ET");
334 value = 0x2f; 330 reg_w_val(dev, ET_GPIO_DIR_CTRL, 0x2f);
335 reg_w(dev, ET_GPIO_DIR_CTRL, &value, 1); 331 reg_w_val(dev, ET_GPIO_OUT, 0x10);
336 value = 0x10;
337 reg_w(dev, ET_GPIO_OUT, &value, 1);
338 reg_r(dev, ET_GPIO_IN, &received, 1); 332 reg_r(dev, ET_GPIO_IN, &received, 1);
339 value = 0x14; /* 0x14 // 0x16 enabled pattern */ 333 reg_w_val(dev, ET_ClCK, 0x14); /* 0x14 // 0x16 enabled pattern */
340 reg_w(dev, ET_ClCK, &value, 1); 334 reg_w_val(dev, ET_CTRL, 0x1b);
341 value = 0x1b;
342 reg_w(dev, ET_CTRL, &value, 1);
343 335
344 /* compression et subsampling */ 336 /* compression et subsampling */
345 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) 337 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode)
346 value = ET_COMP_VAL1; /* 320 */ 338 value = ET_COMP_VAL1; /* 320 */
347 else 339 else
348 value = ET_COMP_VAL0; /* 640 */ 340 value = ET_COMP_VAL0; /* 640 */
349 reg_w(dev, ET_COMP, &value, 1); 341 reg_w_val(dev, ET_COMP, value);
350 value = 0x1f; 342 reg_w_val(dev, ET_MAXQt, 0x1f);
351 reg_w(dev, ET_MAXQt, &value, 1); 343 reg_w_val(dev, ET_MINQt, 0x04);
352 value = 0x04;
353 reg_w(dev, ET_MINQt, &value, 1);
354 /* undocumented registers */ 344 /* undocumented registers */
355 value = 0xff; 345 reg_w_val(dev, ET_REG1d, 0xff);
356 reg_w(dev, ET_REG1d, &value, 1); 346 reg_w_val(dev, ET_REG1e, 0xff);
357 value = 0xff; 347 reg_w_val(dev, ET_REG1f, 0xff);
358 reg_w(dev, ET_REG1e, &value, 1); 348 reg_w_val(dev, ET_REG20, 0x35);
359 value = 0xff; 349 reg_w_val(dev, ET_REG21, 0x01);
360 reg_w(dev, ET_REG1f, &value, 1); 350 reg_w_val(dev, ET_REG22, 0x00);
361 value = 0x35; 351 reg_w_val(dev, ET_REG23, 0xff);
362 reg_w(dev, ET_REG20, &value, 1); 352 reg_w_val(dev, ET_REG24, 0xff);
363 value = 0x01; 353 reg_w_val(dev, ET_REG25, 0x0f);
364 reg_w(dev, ET_REG21, &value, 1);
365 value = 0x00;
366 reg_w(dev, ET_REG22, &value, 1);
367 value = 0xff;
368 reg_w(dev, ET_REG23, &value, 1);
369 value = 0xff;
370 reg_w(dev, ET_REG24, &value, 1);
371 value = 0x0f;
372 reg_w(dev, ET_REG25, &value, 1);
373 /* colors setting */ 354 /* colors setting */
374 value = 0x11; 355 reg_w_val(dev, 0x30, 0x11); /* 0x30 */
375 reg_w(dev, 0x30, &value, 1); /* 0x30 */ 356 reg_w_val(dev, 0x31, 0x40);
376 value = 0x40; 357 reg_w_val(dev, 0x32, 0x00);
377 reg_w(dev, 0x31, &value, 1); 358 reg_w_val(dev, ET_O_RED, 0x00); /* 0x34 */
378 value = 0x00; 359 reg_w_val(dev, ET_O_GREEN1, 0x00);
379 reg_w(dev, 0x32, &value, 1); 360 reg_w_val(dev, ET_O_BLUE, 0x00);
380 value = 0x00; 361 reg_w_val(dev, ET_O_GREEN2, 0x00);
381 reg_w(dev, ET_O_RED, &value, 1); /* 0x34 */
382 value = 0x00;
383 reg_w(dev, ET_O_GREEN1, &value, 1);
384 value = 0x00;
385 reg_w(dev, ET_O_BLUE, &value, 1);
386 value = 0x00;
387 reg_w(dev, ET_O_GREEN2, &value, 1);
388 /*************/ 362 /*************/
389 value = 0x80; 363 reg_w_val(dev, ET_G_RED, 0x80); /* 0x4d */
390 reg_w(dev, ET_G_RED, &value, 1); /* 0x4d */ 364 reg_w_val(dev, ET_G_GREEN1, 0x80);
391 value = 0x80; 365 reg_w_val(dev, ET_G_BLUE, 0x80);
392 reg_w(dev, ET_G_GREEN1, &value, 1); 366 reg_w_val(dev, ET_G_GREEN2, 0x80);
393 value = 0x80; 367 reg_w_val(dev, ET_G_GR_H, 0x00);
394 reg_w(dev, ET_G_BLUE, &value, 1); 368 reg_w_val(dev, ET_G_GB_H, 0x00); /* 0x52 */
395 value = 0x80;
396 reg_w(dev, ET_G_GREEN2, &value, 1);
397 value = 0x00;
398 reg_w(dev, ET_G_GR_H, &value, 1);
399 value = 0x00;
400 reg_w(dev, ET_G_GB_H, &value, 1); /* 0x52 */
401 /* Window control registers */ 369 /* Window control registers */
402 370 reg_w_val(dev, 0x61, 0x80); /* use cmc_out */
403 value = 0x80; /* use cmc_out */ 371 reg_w_val(dev, 0x62, 0x02);
404 reg_w(dev, 0x61, &value, 1); 372 reg_w_val(dev, 0x63, 0x03);
405 373 reg_w_val(dev, 0x64, 0x14);
406 value = 0x02; 374 reg_w_val(dev, 0x65, 0x0e);
407 reg_w(dev, 0x62, &value, 1); 375 reg_w_val(dev, 0x66, 0x02);
408 value = 0x03; 376 reg_w_val(dev, 0x67, 0x02);
409 reg_w(dev, 0x63, &value, 1);
410 value = 0x14;
411 reg_w(dev, 0x64, &value, 1);
412 value = 0x0e;
413 reg_w(dev, 0x65, &value, 1);
414 value = 0x02;
415 reg_w(dev, 0x66, &value, 1);
416 value = 0x02;
417 reg_w(dev, 0x67, &value, 1);
418 377
419 /**************************************/ 378 /**************************************/
420 value = 0x8f; 379 reg_w_val(dev, ET_SYNCHRO, 0x8f); /* 0x68 */
421 reg_w(dev, ET_SYNCHRO, &value, 1); /* 0x68 */ 380 reg_w_val(dev, ET_STARTX, 0x69); /* 0x6a //0x69 */
422 value = 0x69; /* 0x6a //0x69 */ 381 reg_w_val(dev, ET_STARTY, 0x0d); /* 0x0d //0x0c */
423 reg_w(dev, ET_STARTX, &value, 1); 382 reg_w_val(dev, ET_WIDTH_LOW, 0x80);
424 value = 0x0d; /* 0x0d //0x0c */ 383 reg_w_val(dev, ET_HEIGTH_LOW, 0xe0);
425 reg_w(dev, ET_STARTY, &value, 1); 384 reg_w_val(dev, ET_W_H_HEIGTH, 0x60); /* 6d */
426 value = 0x80; 385 reg_w_val(dev, ET_REG6e, 0x86);
427 reg_w(dev, ET_WIDTH_LOW, &value, 1); 386 reg_w_val(dev, ET_REG6f, 0x01);
428 value = 0xe0; 387 reg_w_val(dev, ET_REG70, 0x26);
429 reg_w(dev, ET_HEIGTH_LOW, &value, 1); 388 reg_w_val(dev, ET_REG71, 0x7a);
430 value = 0x60; 389 reg_w_val(dev, ET_REG72, 0x01);
431 reg_w(dev, ET_W_H_HEIGTH, &value, 1); /* 6d */
432 value = 0x86;
433 reg_w(dev, ET_REG6e, &value, 1);
434 value = 0x01;
435 reg_w(dev, ET_REG6f, &value, 1);
436 value = 0x26;
437 reg_w(dev, ET_REG70, &value, 1);
438 value = 0x7a;
439 reg_w(dev, ET_REG71, &value, 1);
440 value = 0x01;
441 reg_w(dev, ET_REG72, &value, 1);
442 /* Clock Pattern registers ***************** */ 390 /* Clock Pattern registers ***************** */
443 value = 0x00; 391 reg_w_val(dev, ET_REG73, 0x00);
444 reg_w(dev, ET_REG73, &value, 1); 392 reg_w_val(dev, ET_REG74, 0x18); /* 0x28 */
445 value = 0x18; /* 0x28 */ 393 reg_w_val(dev, ET_REG75, 0x0f); /* 0x01 */
446 reg_w(dev, ET_REG74, &value, 1);
447 value = 0x0f; /* 0x01 */
448 reg_w(dev, ET_REG75, &value, 1);
449 /**********************************************/ 394 /**********************************************/
450 value = 0x20; 395 reg_w_val(dev, 0x8a, 0x20);
451 reg_w(dev, 0x8a, &value, 1); 396 reg_w_val(dev, 0x8d, 0x0f);
452 value = 0x0f; 397 reg_w_val(dev, 0x8e, 0x08);
453 reg_w(dev, 0x8d, &value, 1);
454 value = 0x08;
455 reg_w(dev, 0x8e, &value, 1);
456 /**************************************/ 398 /**************************************/
457 value = 0x08; 399 reg_w_val(dev, 0x03, 0x08);
458 reg_w(dev, 0x03, &value, 1); 400 reg_w_val(dev, ET_PXL_CLK, 0x03);
459 value = 0x03; 401 reg_w_val(dev, 0x81, 0xff);
460 reg_w(dev, ET_PXL_CLK, &value, 1); 402 reg_w_val(dev, 0x80, 0x00);
461 value = 0xff; 403 reg_w_val(dev, 0x81, 0xff);
462 reg_w(dev, 0x81, &value, 1); 404 reg_w_val(dev, 0x80, 0x20);
463 value = 0x00; 405 reg_w_val(dev, 0x03, 0x01);
464 reg_w(dev, 0x80, &value, 1); 406 reg_w_val(dev, 0x03, 0x00);
465 value = 0xff; 407 reg_w_val(dev, 0x03, 0x08);
466 reg_w(dev, 0x81, &value, 1);
467 value = 0x20;
468 reg_w(dev, 0x80, &value, 1);
469 value = 0x01;
470 reg_w(dev, 0x03, &value, 1);
471 value = 0x00;
472 reg_w(dev, 0x03, &value, 1);
473 value = 0x08;
474 reg_w(dev, 0x03, &value, 1);
475 /********************************************/ 408 /********************************************/
476 409
477 /* reg_r(dev,0x0,ET_I2C_BASE,&received,1); 410/* reg_r(dev, ET_I2C_BASE, &received, 1);
478 always 0x40 as the pas106 ??? */ 411 always 0x40 as the pas106 ??? */
479 /* set the sensor */ 412 /* set the sensor */
480 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) { 413 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode)
481 value = 0x04; /* 320 */ 414 value = 0x04; /* 320 */
482 reg_w(dev, ET_PXL_CLK, &value, 1); 415 else /* 640 */
483 /* now set by fifo the FormatLine setting */ 416 value = 0x1e; /* 0x17 * setting PixelClock
484 reg_w(dev, 0x62, FormLine, 6); 417 * 0x03 mean 24/(3+1) = 6 Mhz
485 } else { /* 640 */ 418 * 0x05 -> 24/(5+1) = 4 Mhz
486 /* setting PixelClock 419 * 0x0b -> 24/(11+1) = 2 Mhz
487 0x03 mean 24/(3+1) = 6 Mhz 420 * 0x17 -> 24/(23+1) = 1 Mhz
488 0x05 -> 24/(5+1) = 4 Mhz 421 */
489 0x0b -> 24/(11+1) = 2 Mhz 422 reg_w_val(dev, ET_PXL_CLK, value);
490 0x17 -> 24/(23+1) = 1 Mhz 423 /* now set by fifo the FormatLine setting */
491 */ 424 reg_w(dev, 0x62, FormLine, 6);
492 value = 0x1e; /* 0x17 */
493 reg_w(dev, ET_PXL_CLK, &value, 1);
494 /* now set by fifo the FormatLine setting */
495 reg_w(dev, 0x62, FormLine, 6);
496 }
497 425
498 /* set exposure times [ 0..0x78] 0->longvalue 0x78->shortvalue */ 426 /* set exposure times [ 0..0x78] 0->longvalue 0x78->shortvalue */
499 value = 0x47; /* 0x47; */ 427 reg_w_val(dev, 0x81, 0x47); /* 0x47; */
500 reg_w(dev, 0x81, &value, 1); 428 reg_w_val(dev, 0x80, 0x40); /* 0x40; */
501 value = 0x40; /* 0x40; */
502 reg_w(dev, 0x80, &value, 1);
503 /* Pedro change */ 429 /* Pedro change */
504 /* Brightness change Brith+ decrease value */ 430 /* Brightness change Brith+ decrease value */
505 /* Brigth- increase value */ 431 /* Brigth- increase value */
506 /* original value = 0x70; */ 432 /* original value = 0x70; */
507 value = 0x30; /* 0x20; */ 433 reg_w_val(dev, 0x81, 0x30); /* 0x20; - set brightness */
508 reg_w(dev, 0x81, &value, 1); /* set brightness */ 434 reg_w_val(dev, 0x80, 0x20); /* 0x20; */
509 value = 0x20; /* 0x20; */
510 reg_w(dev, 0x80, &value, 1);
511} 435}
512 436
513static void setcolors(struct gspca_dev *gspca_dev) 437static void setcolors(struct gspca_dev *gspca_dev)
514{ 438{
515 struct sd *sd = (struct sd *) gspca_dev; 439 struct sd *sd = (struct sd *) gspca_dev;
516 struct usb_device *dev = gspca_dev->dev; 440 struct usb_device *dev = gspca_dev->dev;
517 static __u8 I2cc[] = { 0x05, 0x02, 0x02, 0x05, 0x0d }; 441 __u8 I2cc[] = { 0x05, 0x02, 0x02, 0x05, 0x0d };
518 __u8 i2cflags = 0x01; 442 __u8 i2cflags = 0x01;
519 /* __u8 green = 0; */ 443 /* __u8 green = 0; */
520 __u8 colors = sd->colors; 444 __u8 colors = sd->colors;
@@ -525,7 +449,7 @@ static void setcolors(struct gspca_dev *gspca_dev)
525 /* I2cc[1] = I2cc[2] = green; */ 449 /* I2cc[1] = I2cc[2] = green; */
526 if (sd->sensor == SENSOR_PAS106) { 450 if (sd->sensor == SENSOR_PAS106) {
527 Et_i2cwrite(dev, PAS106_REG13, &i2cflags, 1, 3); 451 Et_i2cwrite(dev, PAS106_REG13, &i2cflags, 1, 3);
528 Et_i2cwrite(dev, PAS106_REG9, I2cc, sizeof(I2cc), 1); 452 Et_i2cwrite(dev, PAS106_REG9, I2cc, sizeof I2cc, 1);
529 } 453 }
530/* PDEBUG(D_CONF , "Etoms red %d blue %d green %d", 454/* PDEBUG(D_CONF , "Etoms red %d blue %d green %d",
531 I2cc[3], I2cc[0], green); */ 455 I2cc[3], I2cc[0], green); */
@@ -534,11 +458,11 @@ static void setcolors(struct gspca_dev *gspca_dev)
534static void getcolors(struct gspca_dev *gspca_dev) 458static void getcolors(struct gspca_dev *gspca_dev)
535{ 459{
536 struct sd *sd = (struct sd *) gspca_dev; 460 struct sd *sd = (struct sd *) gspca_dev;
537 /* __u8 valblue = 0; */ 461/* __u8 valblue; */
538 __u8 valred; 462 __u8 valred;
539 463
540 if (sd->sensor == SENSOR_PAS106) { 464 if (sd->sensor == SENSOR_PAS106) {
541 /* Et_i2cread(gspca_dev->dev,PAS106_REG9,&valblue,1,1); */ 465/* Et_i2cread(gspca_dev->dev, PAS106_REG9, &valblue, 1, 1); */
542 Et_i2cread(gspca_dev->dev, PAS106_REG9 + 3, &valred, 1, 1); 466 Et_i2cread(gspca_dev->dev, PAS106_REG9 + 3, &valred, 1, 1);
543 sd->colors = valred & 0x0f; 467 sd->colors = valred & 0x0f;
544 } 468 }
@@ -547,126 +471,87 @@ static void getcolors(struct gspca_dev *gspca_dev)
547static void Et_init1(struct gspca_dev *gspca_dev) 471static void Et_init1(struct gspca_dev *gspca_dev)
548{ 472{
549 struct usb_device *dev = gspca_dev->dev; 473 struct usb_device *dev = gspca_dev->dev;
550 __u8 value = 0x00; 474 __u8 value;
551 __u8 received = 0x00; 475 __u8 received;
552/* __u8 I2c0 [] ={0x0a,0x12,0x05,0x22,0xac,0x00,0x01,0x00}; */ 476/* __u8 I2c0 [] = {0x0a, 0x12, 0x05, 0x22, 0xac, 0x00, 0x01, 0x00}; */
553 __u8 I2c0[] = { 0x0a, 0x12, 0x05, 0x6d, 0xcd, 0x00, 0x01, 0x00 }; 477 __u8 I2c0[] = { 0x0a, 0x12, 0x05, 0x6d, 0xcd, 0x00, 0x01, 0x00 };
554 /* try 1/120 0x6d 0xcd 0x40 */ 478 /* try 1/120 0x6d 0xcd 0x40 */
555/* __u8 I2c0 [] ={0x0a,0x12,0x05,0xfe,0xfe,0xc0,0x01,0x00}; 479/* __u8 I2c0 [] = {0x0a, 0x12, 0x05, 0xfe, 0xfe, 0xc0, 0x01, 0x00};
556 * 1/60000 hmm ?? */ 480 * 1/60000 hmm ?? */
557 481
558 PDEBUG(D_STREAM, "Open Init1 ET"); 482 PDEBUG(D_STREAM, "Open Init1 ET");
559 value = 7; 483 reg_w_val(dev, ET_GPIO_DIR_CTRL, 7);
560 reg_w(dev, ET_GPIO_DIR_CTRL, &value, 1);
561 reg_r(dev, ET_GPIO_IN, &received, 1); 484 reg_r(dev, ET_GPIO_IN, &received, 1);
562 value = 1; 485 reg_w_val(dev, ET_RESET_ALL, 1);
563 reg_w(dev, ET_RESET_ALL, &value, 1); 486 reg_w_val(dev, ET_RESET_ALL, 0);
564 value = 0; 487 reg_w_val(dev, ET_ClCK, 0x10);
565 reg_w(dev, ET_RESET_ALL, &value, 1); 488 reg_w_val(dev, ET_CTRL, 0x19);
566 value = 0x10;
567 reg_w(dev, ET_ClCK, &value, 1);
568 value = 0x19;
569 reg_w(dev, ET_CTRL, &value, 1);
570 /* compression et subsampling */ 489 /* compression et subsampling */
571 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) 490 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode)
572 value = ET_COMP_VAL1; 491 value = ET_COMP_VAL1;
573 else 492 else
574 value = ET_COMP_VAL0; 493 value = ET_COMP_VAL0;
575
576 PDEBUG(D_STREAM, "Open mode %d Compression %d", 494 PDEBUG(D_STREAM, "Open mode %d Compression %d",
577 gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode, 495 gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode,
578 value); 496 value);
579 reg_w(dev, ET_COMP, &value, 1); 497 reg_w_val(dev, ET_COMP, value);
580 value = 0x1d; 498 reg_w_val(dev, ET_MAXQt, 0x1d);
581 reg_w(dev, ET_MAXQt, &value, 1); 499 reg_w_val(dev, ET_MINQt, 0x02);
582 value = 0x02;
583 reg_w(dev, ET_MINQt, &value, 1);
584 /* undocumented registers */ 500 /* undocumented registers */
585 value = 0xff; 501 reg_w_val(dev, ET_REG1d, 0xff);
586 reg_w(dev, ET_REG1d, &value, 1); 502 reg_w_val(dev, ET_REG1e, 0xff);
587 value = 0xff; 503 reg_w_val(dev, ET_REG1f, 0xff);
588 reg_w(dev, ET_REG1e, &value, 1); 504 reg_w_val(dev, ET_REG20, 0x35);
589 value = 0xff; 505 reg_w_val(dev, ET_REG21, 0x01);
590 reg_w(dev, ET_REG1f, &value, 1); 506 reg_w_val(dev, ET_REG22, 0x00);
591 value = 0x35; 507 reg_w_val(dev, ET_REG23, 0xf7);
592 reg_w(dev, ET_REG20, &value, 1); 508 reg_w_val(dev, ET_REG24, 0xff);
593 value = 0x01; 509 reg_w_val(dev, ET_REG25, 0x07);
594 reg_w(dev, ET_REG21, &value, 1);
595 value = 0x00;
596 reg_w(dev, ET_REG22, &value, 1);
597 value = 0xf7;
598 reg_w(dev, ET_REG23, &value, 1);
599 value = 0xff;
600 reg_w(dev, ET_REG24, &value, 1);
601 value = 0x07;
602 reg_w(dev, ET_REG25, &value, 1);
603 /* colors setting */ 510 /* colors setting */
604 value = 0x80; 511 reg_w_val(dev, ET_G_RED, 0x80);
605 reg_w(dev, ET_G_RED, &value, 1); 512 reg_w_val(dev, ET_G_GREEN1, 0x80);
606 value = 0x80; 513 reg_w_val(dev, ET_G_BLUE, 0x80);
607 reg_w(dev, ET_G_GREEN1, &value, 1); 514 reg_w_val(dev, ET_G_GREEN2, 0x80);
608 value = 0x80; 515 reg_w_val(dev, ET_G_GR_H, 0x00);
609 reg_w(dev, ET_G_BLUE, &value, 1); 516 reg_w_val(dev, ET_G_GB_H, 0x00);
610 value = 0x80;
611 reg_w(dev, ET_G_GREEN2, &value, 1);
612 value = 0x00;
613 reg_w(dev, ET_G_GR_H, &value, 1);
614 value = 0x00;
615 reg_w(dev, ET_G_GB_H, &value, 1);
616 /* Window control registers */ 517 /* Window control registers */
617 value = 0xf0; 518 reg_w_val(dev, ET_SYNCHRO, 0xf0);
618 reg_w(dev, ET_SYNCHRO, &value, 1); 519 reg_w_val(dev, ET_STARTX, 0x56); /* 0x56 */
619 value = 0x56; /* 0x56 */ 520 reg_w_val(dev, ET_STARTY, 0x05); /* 0x04 */
620 reg_w(dev, ET_STARTX, &value, 1); 521 reg_w_val(dev, ET_WIDTH_LOW, 0x60);
621 value = 0x05; /* 0x04 */ 522 reg_w_val(dev, ET_HEIGTH_LOW, 0x20);
622 reg_w(dev, ET_STARTY, &value, 1); 523 reg_w_val(dev, ET_W_H_HEIGTH, 0x50);
623 value = 0x60; 524 reg_w_val(dev, ET_REG6e, 0x86);
624 reg_w(dev, ET_WIDTH_LOW, &value, 1); 525 reg_w_val(dev, ET_REG6f, 0x01);
625 value = 0x20; 526 reg_w_val(dev, ET_REG70, 0x86);
626 reg_w(dev, ET_HEIGTH_LOW, &value, 1); 527 reg_w_val(dev, ET_REG71, 0x14);
627 value = 0x50; 528 reg_w_val(dev, ET_REG72, 0x00);
628 reg_w(dev, ET_W_H_HEIGTH, &value, 1);
629 value = 0x86;
630 reg_w(dev, ET_REG6e, &value, 1);
631 value = 0x01;
632 reg_w(dev, ET_REG6f, &value, 1);
633 value = 0x86;
634 reg_w(dev, ET_REG70, &value, 1);
635 value = 0x14;
636 reg_w(dev, ET_REG71, &value, 1);
637 value = 0x00;
638 reg_w(dev, ET_REG72, &value, 1);
639 /* Clock Pattern registers */ 529 /* Clock Pattern registers */
640 value = 0x00; 530 reg_w_val(dev, ET_REG73, 0x00);
641 reg_w(dev, ET_REG73, &value, 1); 531 reg_w_val(dev, ET_REG74, 0x00);
642 value = 0x00; 532 reg_w_val(dev, ET_REG75, 0x0a);
643 reg_w(dev, ET_REG74, &value, 1); 533 reg_w_val(dev, ET_I2C_CLK, 0x04);
644 value = 0x0a; 534 reg_w_val(dev, ET_PXL_CLK, 0x01);
645 reg_w(dev, ET_REG75, &value, 1);
646 value = 0x04;
647 reg_w(dev, ET_I2C_CLK, &value, 1);
648 value = 0x01;
649 reg_w(dev, ET_PXL_CLK, &value, 1);
650 /* set the sensor */ 535 /* set the sensor */
651 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) { 536 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode) {
652 I2c0[0] = 0x06; 537 I2c0[0] = 0x06;
653 Et_i2cwrite(dev, PAS106_REG2, I2c0, sizeof(I2c0), 1); 538 Et_i2cwrite(dev, PAS106_REG2, I2c0, sizeof I2c0, 1);
654 Et_i2cwrite(dev, PAS106_REG9, I2c2, sizeof(I2c2), 1); 539 Et_i2cwrite(dev, PAS106_REG9, I2c2, sizeof I2c2, 1);
655 value = 0x06; 540 value = 0x06;
656 Et_i2cwrite(dev, PAS106_REG2, &value, 1, 1); 541 Et_i2cwrite(dev, PAS106_REG2, &value, 1, 1);
657 Et_i2cwrite(dev, PAS106_REG3, I2c3, sizeof(I2c3), 1); 542 Et_i2cwrite(dev, PAS106_REG3, I2c3, sizeof I2c3, 1);
658 /* value = 0x1f; */ 543 /* value = 0x1f; */
659 value = 0x04; 544 value = 0x04;
660 Et_i2cwrite(dev, PAS106_REG0e, &value, 1, 1); 545 Et_i2cwrite(dev, PAS106_REG0e, &value, 1, 1);
661 } else { 546 } else {
662 I2c0[0] = 0x0a; 547 I2c0[0] = 0x0a;
663 548
664 Et_i2cwrite(dev, PAS106_REG2, I2c0, sizeof(I2c0), 1); 549 Et_i2cwrite(dev, PAS106_REG2, I2c0, sizeof I2c0, 1);
665 Et_i2cwrite(dev, PAS106_REG9, I2c2, sizeof(I2c2), 1); 550 Et_i2cwrite(dev, PAS106_REG9, I2c2, sizeof I2c2, 1);
666 value = 0x0a; 551 value = 0x0a;
667 552
668 Et_i2cwrite(dev, PAS106_REG2, &value, 1, 1); 553 Et_i2cwrite(dev, PAS106_REG2, &value, 1, 1);
669 Et_i2cwrite(dev, PAS106_REG3, I2c3, sizeof(I2c3), 1); 554 Et_i2cwrite(dev, PAS106_REG3, I2c3, sizeof I2c3, 1);
670 value = 0x04; 555 value = 0x04;
671 /* value = 0x10; */ 556 /* value = 0x10; */
672 Et_i2cwrite(dev, PAS106_REG0e, &value, 1, 1); 557 Et_i2cwrite(dev, PAS106_REG0e, &value, 1, 1);
@@ -720,10 +605,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
720 cam->cam_mode = vga_mode; 605 cam->cam_mode = vga_mode;
721 cam->nmodes = sizeof vga_mode / sizeof vga_mode[0]; 606 cam->nmodes = sizeof vga_mode / sizeof vga_mode[0];
722 } 607 }
723 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 608 sd->brightness = BRIGHTNESS_DEF;
724 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 609 sd->contrast = CONTRAST_DEF;
725 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 610 sd->colors = COLOR_DEF;
726 sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; 611 sd->autogain = AUTOGAIN_DEF;
727 return 0; 612 return 0;
728} 613}
729 614
@@ -732,18 +617,13 @@ static int sd_open(struct gspca_dev *gspca_dev)
732{ 617{
733 struct sd *sd = (struct sd *) gspca_dev; 618 struct sd *sd = (struct sd *) gspca_dev;
734 struct usb_device *dev = gspca_dev->dev; 619 struct usb_device *dev = gspca_dev->dev;
735 int err;
736 __u8 value;
737 620
738 PDEBUG(D_STREAM, "Initialize ET1");
739 if (sd->sensor == SENSOR_PAS106) 621 if (sd->sensor == SENSOR_PAS106)
740 Et_init1(gspca_dev); 622 Et_init1(gspca_dev);
741 else 623 else
742 Et_init2(gspca_dev); 624 Et_init2(gspca_dev);
743 value = 0x08; 625 reg_w_val(dev, ET_RESET_ALL, 0x08);
744 reg_w(dev, ET_RESET_ALL, &value, 1); 626 et_video(dev, 0); /* video off */
745 err = Et_videoOff(dev);
746 PDEBUG(D_STREAM, "Et_Init_VideoOff %d", err);
747 return 0; 627 return 0;
748} 628}
749 629
@@ -752,27 +632,19 @@ static void sd_start(struct gspca_dev *gspca_dev)
752{ 632{
753 struct sd *sd = (struct sd *) gspca_dev; 633 struct sd *sd = (struct sd *) gspca_dev;
754 struct usb_device *dev = gspca_dev->dev; 634 struct usb_device *dev = gspca_dev->dev;
755 int err;
756 __u8 value;
757 635
758 if (sd->sensor == SENSOR_PAS106) 636 if (sd->sensor == SENSOR_PAS106)
759 Et_init1(gspca_dev); 637 Et_init1(gspca_dev);
760 else 638 else
761 Et_init2(gspca_dev); 639 Et_init2(gspca_dev);
762 640
763 value = 0x08; 641 reg_w_val(dev, ET_RESET_ALL, 0x08);
764 reg_w(dev, ET_RESET_ALL, &value, 1); 642 et_video(dev, 1); /* video on */
765 err = Et_videoOn(dev);
766 PDEBUG(D_STREAM, "Et_VideoOn %d", err);
767} 643}
768 644
769static void sd_stopN(struct gspca_dev *gspca_dev) 645static void sd_stopN(struct gspca_dev *gspca_dev)
770{ 646{
771 int err; 647 et_video(gspca_dev->dev, 0); /* video off */
772
773 err = Et_videoOff(gspca_dev->dev);
774 PDEBUG(D_STREAM, "Et_VideoOff %d", err);
775
776} 648}
777 649
778static void sd_stop0(struct gspca_dev *gspca_dev) 650static void sd_stop0(struct gspca_dev *gspca_dev)
@@ -790,7 +662,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
790 __u8 brightness = sd->brightness; 662 __u8 brightness = sd->brightness;
791 663
792 for (i = 0; i < 4; i++) 664 for (i = 0; i < 4; i++)
793 reg_w(gspca_dev->dev, (ET_O_RED + i), &brightness, 1); 665 reg_w_val(gspca_dev->dev, (ET_O_RED + i), brightness);
794} 666}
795 667
796static void getbrightness(struct gspca_dev *gspca_dev) 668static void getbrightness(struct gspca_dev *gspca_dev)
@@ -798,7 +670,7 @@ static void getbrightness(struct gspca_dev *gspca_dev)
798 struct sd *sd = (struct sd *) gspca_dev; 670 struct sd *sd = (struct sd *) gspca_dev;
799 int i; 671 int i;
800 int brightness = 0; 672 int brightness = 0;
801 __u8 value = 0; 673 __u8 value;
802 674
803 for (i = 0; i < 4; i++) { 675 for (i = 0; i < 4; i++) {
804 reg_r(gspca_dev->dev, (ET_O_RED + i), &value, 1); 676 reg_r(gspca_dev->dev, (ET_O_RED + i), &value, 1);
@@ -895,7 +767,7 @@ static void setautogain(struct gspca_dev *gspca_dev)
895 767
896static void sd_pkt_scan(struct gspca_dev *gspca_dev, 768static void sd_pkt_scan(struct gspca_dev *gspca_dev,
897 struct gspca_frame *frame, /* target */ 769 struct gspca_frame *frame, /* target */
898 unsigned char *data, /* isoc packet */ 770 __u8 *data, /* isoc packet */
899 int len) /* iso packet length */ 771 int len) /* iso packet length */
900{ 772{
901 struct sd *sd; 773 struct sd *sd;
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index b36913017d7b..ad4721b06920 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -247,7 +247,7 @@ static void isoc_transfer(struct gspca_dev *gspca_dev)
247struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev, 247struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
248 int packet_type, 248 int packet_type,
249 struct gspca_frame *frame, 249 struct gspca_frame *frame,
250 __u8 *data, 250 const __u8 *data,
251 int len) 251 int len)
252{ 252{
253 int i, j; 253 int i, j;
@@ -1053,7 +1053,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
1053 struct v4l2_control *ctrl) 1053 struct v4l2_control *ctrl)
1054{ 1054{
1055 struct gspca_dev *gspca_dev = priv; 1055 struct gspca_dev *gspca_dev = priv;
1056 struct ctrl *ctrls; 1056 const struct ctrl *ctrls;
1057 int i, ret; 1057 int i, ret;
1058 1058
1059 for (i = 0, ctrls = gspca_dev->sd_desc->ctrls; 1059 for (i = 0, ctrls = gspca_dev->sd_desc->ctrls;
@@ -1079,7 +1079,7 @@ static int vidioc_g_ctrl(struct file *file, void *priv,
1079{ 1079{
1080 struct gspca_dev *gspca_dev = priv; 1080 struct gspca_dev *gspca_dev = priv;
1081 1081
1082 struct ctrl *ctrls; 1082 const struct ctrl *ctrls;
1083 int i, ret; 1083 int i, ret;
1084 1084
1085 for (i = 0, ctrls = gspca_dev->sd_desc->ctrls; 1085 for (i = 0, ctrls = gspca_dev->sd_desc->ctrls;
diff --git a/drivers/media/video/gspca/gspca.h b/drivers/media/video/gspca/gspca.h
index 9c894daf356a..0d23e0a90c77 100644
--- a/drivers/media/video/gspca/gspca.h
+++ b/drivers/media/video/gspca/gspca.h
@@ -9,25 +9,6 @@
9#include <media/v4l2-common.h> 9#include <media/v4l2-common.h>
10#include <linux/mutex.h> 10#include <linux/mutex.h>
11 11
12/* values in 2.6.27 */
13#ifndef V4L2_PIX_FMT_SPCA501
14#define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
15#endif
16#ifndef V4L2_PIX_FMT_SPCA561
17#define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
18#endif
19
20/* values in 2.6.26 */
21#ifndef V4L2_CID_POWER_LINE_FREQUENCY
22#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
23#endif
24#ifndef V4L2_CID_WHITE_BALANCE_TEMPERATURE
25#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26)
26#endif
27#ifndef V4L2_CID_SHARPNESS
28#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
29#endif
30
31#ifdef CONFIG_VIDEO_ADV_DEBUG 12#ifdef CONFIG_VIDEO_ADV_DEBUG
32/* GSPCA our debug messages */ 13/* GSPCA our debug messages */
33extern int gspca_debug; 14extern int gspca_debug;
@@ -76,7 +57,6 @@ struct cam_mode {
76 short width; 57 short width;
77 short height; 58 short height;
78 short mode; /* subdriver value */ 59 short mode; /* subdriver value */
79 short reserved; /* subdriver value */
80}; 60};
81struct cam { 61struct cam {
82 char *dev_name; 62 char *dev_name;
@@ -110,9 +90,9 @@ struct ctrl {
110/* subdriver description */ 90/* subdriver description */
111struct sd_desc { 91struct sd_desc {
112/* information */ 92/* information */
113 char *name; /* sub-driver name */ 93 const char *name; /* sub-driver name */
114/* controls */ 94/* controls */
115 struct ctrl *ctrls; 95 const struct ctrl *ctrls;
116 int nctrls; 96 int nctrls;
117/* operations */ 97/* operations */
118 cam_cf_op config; /* called on probe */ 98 cam_cf_op config; /* called on probe */
@@ -195,6 +175,6 @@ void gspca_disconnect(struct usb_interface *intf);
195struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev, 175struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
196 int packet_type, 176 int packet_type,
197 struct gspca_frame *frame, 177 struct gspca_frame *frame,
198 __u8 *data, 178 const __u8 *data,
199 int len); 179 int len);
200#endif /* GSPCAV2_H */ 180#endif /* GSPCAV2_H */
diff --git a/drivers/media/video/gspca/mars.c b/drivers/media/video/gspca/mars.c
index 6556e0a330fa..c70ccc8fe68b 100644
--- a/drivers/media/video/gspca/mars.c
+++ b/drivers/media/video/gspca/mars.c
@@ -24,8 +24,8 @@
24#include "gspca.h" 24#include "gspca.h"
25#include "jpeg.h" 25#include "jpeg.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/Mars USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/Mars USB Camera Driver");
@@ -140,7 +140,8 @@ static void sd_start(struct gspca_dev *gspca_dev)
140 __u16 MI_buf[242]; 140 __u16 MI_buf[242];
141 int h_size, v_size; 141 int h_size, v_size;
142 int intpipe; 142 int intpipe;
143 /* struct usb_device *dev = pcam->dev; */ 143/* struct usb_device *dev = pcam->dev; */
144
144 memset(data, 0, sizeof data); 145 memset(data, 0, sizeof data);
145 memset(MI_buf, 0, sizeof MI_buf); 146 memset(MI_buf, 0, sizeof MI_buf);
146 147
@@ -351,7 +352,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
351 352
352static void sd_pkt_scan(struct gspca_dev *gspca_dev, 353static void sd_pkt_scan(struct gspca_dev *gspca_dev,
353 struct gspca_frame *frame, /* target */ 354 struct gspca_frame *frame, /* target */
354 unsigned char *data, /* isoc packet */ 355 __u8 *data, /* isoc packet */
355 int len) /* iso packet length */ 356 int len) /* iso packet length */
356{ 357{
357 struct sd *sd = (struct sd *) gspca_dev; 358 struct sd *sd = (struct sd *) gspca_dev;
@@ -389,7 +390,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
389} 390}
390 391
391/* sub-driver description */ 392/* sub-driver description */
392static struct sd_desc sd_desc = { 393static const struct sd_desc sd_desc = {
393 .name = MODULE_NAME, 394 .name = MODULE_NAME,
394 .ctrls = sd_ctrls, 395 .ctrls = sd_ctrls,
395 .nctrls = ARRAY_SIZE(sd_ctrls), 396 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -404,7 +405,7 @@ static struct sd_desc sd_desc = {
404 405
405/* -- module initialisation -- */ 406/* -- module initialisation -- */
406#define DVNM(name) .driver_info = (kernel_ulong_t) name 407#define DVNM(name) .driver_info = (kernel_ulong_t) name
407static __devinitdata struct usb_device_id device_table[] = { 408static const __devinitdata struct usb_device_id device_table[] = {
408 {USB_DEVICE(0x093a, 0x050f), DVNM("Mars-Semi Pc-Camera")}, 409 {USB_DEVICE(0x093a, 0x050f), DVNM("Mars-Semi Pc-Camera")},
409 {} 410 {}
410}; 411};
diff --git a/drivers/media/video/gspca/ov519.c b/drivers/media/video/gspca/ov519.c
index 7d6237f18ba0..d92729ac41f0 100644
--- a/drivers/media/video/gspca/ov519.c
+++ b/drivers/media/video/gspca/ov519.c
@@ -24,8 +24,8 @@
24 24
25#include "gspca.h" 25#include "gspca.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>"); 30MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>");
31MODULE_DESCRIPTION("OV519 USB Camera Driver"); 31MODULE_DESCRIPTION("OV519 USB Camera Driver");
@@ -266,15 +266,15 @@ static unsigned char ov7670_abs_to_sm(unsigned char v)
266static int reg_w(struct sd *sd, __u16 index, __u8 value) 266static int reg_w(struct sd *sd, __u16 index, __u8 value)
267{ 267{
268 int ret; 268 int ret;
269 __u8 buf[4]; 269 __u8 data;
270 270
271 buf[0] = value; 271 data = value;
272 ret = usb_control_msg(sd->gspca_dev.dev, 272 ret = usb_control_msg(sd->gspca_dev.dev,
273 usb_sndctrlpipe(sd->gspca_dev.dev, 0), 273 usb_sndctrlpipe(sd->gspca_dev.dev, 0),
274 1, /* REQ_IO (ov518/519) */ 274 1, /* REQ_IO (ov518/519) */
275 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 275 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
276 0, index, 276 0, index,
277 &buf[0], 1, 500); 277 &data, 1, 500);
278 if (ret < 0) 278 if (ret < 0)
279 PDEBUG(D_ERR, "Write reg [%02x] %02x failed", index, value); 279 PDEBUG(D_ERR, "Write reg [%02x] %02x failed", index, value);
280 return ret; 280 return ret;
@@ -285,16 +285,16 @@ static int reg_w(struct sd *sd, __u16 index, __u8 value)
285static int reg_r(struct sd *sd, __u16 index) 285static int reg_r(struct sd *sd, __u16 index)
286{ 286{
287 int ret; 287 int ret;
288 __u8 buf[4]; 288 __u8 data;
289 289
290 ret = usb_control_msg(sd->gspca_dev.dev, 290 ret = usb_control_msg(sd->gspca_dev.dev,
291 usb_rcvctrlpipe(sd->gspca_dev.dev, 0), 291 usb_rcvctrlpipe(sd->gspca_dev.dev, 0),
292 1, /* REQ_IO */ 292 1, /* REQ_IO */
293 USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 293 USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
294 0, index, &buf[0], 1, 500); 294 0, index, &data, 1, 500);
295 295
296 if (ret >= 0) 296 if (ret >= 0)
297 ret = buf[0]; 297 ret = data;
298 else 298 else
299 PDEBUG(D_ERR, "Read reg [0x%02x] failed", index); 299 PDEBUG(D_ERR, "Read reg [0x%02x] failed", index);
300 return ret; 300 return ret;
@@ -302,7 +302,7 @@ static int reg_r(struct sd *sd, __u16 index)
302 302
303/* Read 8 values from a OV519 register */ 303/* Read 8 values from a OV519 register */
304static int reg_r8(struct sd *sd, 304static int reg_r8(struct sd *sd,
305 __u16 index) 305 __u16 index)
306{ 306{
307 int ret; 307 int ret;
308 __u8 buf[8]; 308 __u8 buf[8];
@@ -528,7 +528,7 @@ struct ov_i2c_regvals {
528}; 528};
529 529
530static int write_regvals(struct sd *sd, 530static int write_regvals(struct sd *sd,
531 struct ov_regvals *regvals, 531 const struct ov_regvals *regvals,
532 int n) 532 int n)
533{ 533{
534 int rc; 534 int rc;
@@ -543,7 +543,7 @@ static int write_regvals(struct sd *sd,
543} 543}
544 544
545static int write_i2c_regvals(struct sd *sd, 545static int write_i2c_regvals(struct sd *sd,
546 struct ov_i2c_regvals *regvals, 546 const struct ov_i2c_regvals *regvals,
547 int n) 547 int n)
548{ 548{
549 int rc; 549 int rc;
@@ -569,7 +569,7 @@ static int write_i2c_regvals(struct sd *sd,
569static int ov8xx0_configure(struct sd *sd) 569static int ov8xx0_configure(struct sd *sd)
570{ 570{
571 int rc; 571 int rc;
572 static struct ov_i2c_regvals norm_8610[] = { 572 static const struct ov_i2c_regvals norm_8610[] = {
573 { 0x12, 0x80 }, 573 { 0x12, 0x80 },
574 { 0x00, 0x00 }, 574 { 0x00, 0x00 },
575 { 0x01, 0x80 }, 575 { 0x01, 0x80 },
@@ -707,7 +707,7 @@ static int ov7xx0_configure(struct sd *sd)
707 * 0x05 (old driver setting): very overexposed, too much 707 * 0x05 (old driver setting): very overexposed, too much
708 * contrast 708 * contrast
709 */ 709 */
710 static struct ov_i2c_regvals norm_7610[] = { 710 static const struct ov_i2c_regvals norm_7610[] = {
711 { 0x10, 0xff }, 711 { 0x10, 0xff },
712 { 0x16, 0x06 }, 712 { 0x16, 0x06 },
713 { 0x28, 0x24 }, 713 { 0x28, 0x24 },
@@ -737,7 +737,7 @@ static int ov7xx0_configure(struct sd *sd)
737 { 0x0d, 0x24 }, 737 { 0x0d, 0x24 },
738 }; 738 };
739 739
740 static struct ov_i2c_regvals norm_7620[] = { 740 static const struct ov_i2c_regvals norm_7620[] = {
741 { 0x00, 0x00 }, /* gain */ 741 { 0x00, 0x00 }, /* gain */
742 { 0x01, 0x80 }, /* blue gain */ 742 { 0x01, 0x80 }, /* blue gain */
743 { 0x02, 0x80 }, /* red gain */ 743 { 0x02, 0x80 }, /* red gain */
@@ -804,14 +804,14 @@ static int ov7xx0_configure(struct sd *sd)
804 }; 804 };
805 805
806 /* 7640 and 7648. The defaults should be OK for most registers. */ 806 /* 7640 and 7648. The defaults should be OK for most registers. */
807 static struct ov_i2c_regvals norm_7640[] = { 807 static const struct ov_i2c_regvals norm_7640[] = {
808 { 0x12, 0x80 }, 808 { 0x12, 0x80 },
809 { 0x12, 0x14 }, 809 { 0x12, 0x14 },
810 }; 810 };
811 811
812 /* 7670. Defaults taken from OmniVision provided data, 812 /* 7670. Defaults taken from OmniVision provided data,
813 * as provided by Jonathan Corbet of OLPC */ 813 * as provided by Jonathan Corbet of OLPC */
814 static struct ov_i2c_regvals norm_7670[] = { 814 static const struct ov_i2c_regvals norm_7670[] = {
815 { OV7670_REG_COM7, OV7670_COM7_RESET }, 815 { OV7670_REG_COM7, OV7670_COM7_RESET },
816 { OV7670_REG_TSLB, 0x04 }, /* OV */ 816 { OV7670_REG_TSLB, 0x04 }, /* OV */
817 { OV7670_REG_COM7, OV7670_COM7_FMT_VGA }, /* VGA */ 817 { OV7670_REG_COM7, OV7670_COM7_FMT_VGA }, /* VGA */
@@ -1075,7 +1075,7 @@ static int ov7xx0_configure(struct sd *sd)
1075static int ov6xx0_configure(struct sd *sd) 1075static int ov6xx0_configure(struct sd *sd)
1076{ 1076{
1077 int rc; 1077 int rc;
1078 static struct ov_i2c_regvals norm_6x20[] = { 1078 static const struct ov_i2c_regvals norm_6x20[] = {
1079 { 0x12, 0x80 }, /* reset */ 1079 { 0x12, 0x80 }, /* reset */
1080 { 0x11, 0x01 }, 1080 { 0x11, 0x01 },
1081 { 0x03, 0x60 }, 1081 { 0x03, 0x60 },
@@ -1118,7 +1118,7 @@ static int ov6xx0_configure(struct sd *sd)
1118/* Toggle 0x12[2] off and on here? */ 1118/* Toggle 0x12[2] off and on here? */
1119 }; 1119 };
1120 1120
1121 static struct ov_i2c_regvals norm_6x30[] = { 1121 static const struct ov_i2c_regvals norm_6x30[] = {
1122 { 0x12, 0x80 }, /* Reset */ 1122 { 0x12, 0x80 }, /* Reset */
1123 { 0x00, 0x1f }, /* Gain */ 1123 { 0x00, 0x1f }, /* Gain */
1124 { 0x01, 0x99 }, /* Blue gain */ 1124 { 0x01, 0x99 }, /* Blue gain */
@@ -1284,7 +1284,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
1284 struct cam *cam; 1284 struct cam *cam;
1285 1285
1286/* (from ov519_configure) */ 1286/* (from ov519_configure) */
1287 static struct ov_regvals init_519[] = { 1287 static const struct ov_regvals init_519[] = {
1288 { 0x5a, 0x6d }, /* EnableSystem */ 1288 { 0x5a, 0x6d }, /* EnableSystem */
1289/* jfm trace usbsnoop3-1.txt */ 1289/* jfm trace usbsnoop3-1.txt */
1290/* jfm 53 = fb */ 1290/* jfm 53 = fb */
@@ -1302,8 +1302,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
1302 /* windows reads 0x55 at this point*/ 1302 /* windows reads 0x55 at this point*/
1303 }; 1303 };
1304 1304
1305 if (write_regvals(sd, init_519, 1305 if (write_regvals(sd, init_519, ARRAY_SIZE(init_519)))
1306 sizeof init_519 / sizeof init_519[0]))
1307 goto error; 1306 goto error;
1308/* jfm: not seen in windows trace */ 1307/* jfm: not seen in windows trace */
1309 if (ov519_init_compression(sd)) 1308 if (ov519_init_compression(sd))
@@ -1389,7 +1388,7 @@ static int sd_open(struct gspca_dev *gspca_dev)
1389static int ov519_mode_init_regs(struct sd *sd, 1388static int ov519_mode_init_regs(struct sd *sd,
1390 int width, int height) 1389 int width, int height)
1391{ 1390{
1392 static struct ov_regvals mode_init_519_ov7670[] = { 1391 static const struct ov_regvals mode_init_519_ov7670[] = {
1393 { 0x5d, 0x03 }, /* Turn off suspend mode */ 1392 { 0x5d, 0x03 }, /* Turn off suspend mode */
1394 { 0x53, 0x9f }, /* was 9b in 1.65-1.08 */ 1393 { 0x53, 0x9f }, /* was 9b in 1.65-1.08 */
1395 { 0x54, 0x0f }, /* bit2 (jpeg enable) */ 1394 { 0x54, 0x0f }, /* bit2 (jpeg enable) */
@@ -1412,7 +1411,7 @@ static int ov519_mode_init_regs(struct sd *sd,
1412 /* windows reads 0x55 at this point, why? */ 1411 /* windows reads 0x55 at this point, why? */
1413 }; 1412 };
1414 1413
1415 static struct ov_regvals mode_init_519[] = { 1414 static const struct ov_regvals mode_init_519[] = {
1416 { 0x5d, 0x03 }, /* Turn off suspend mode */ 1415 { 0x5d, 0x03 }, /* Turn off suspend mode */
1417 { 0x53, 0x9f }, /* was 9b in 1.65-1.08 */ 1416 { 0x53, 0x9f }, /* was 9b in 1.65-1.08 */
1418 { 0x54, 0x0f }, /* bit2 (jpeg enable) */ 1417 { 0x54, 0x0f }, /* bit2 (jpeg enable) */
@@ -1448,12 +1447,11 @@ static int ov519_mode_init_regs(struct sd *sd,
1448 /******** Set the mode ********/ 1447 /******** Set the mode ********/
1449 if (sd->sensor != SEN_OV7670) { 1448 if (sd->sensor != SEN_OV7670) {
1450 if (write_regvals(sd, mode_init_519, 1449 if (write_regvals(sd, mode_init_519,
1451 sizeof mode_init_519 / sizeof mode_init_519[0])) 1450 ARRAY_SIZE(mode_init_519)))
1452 return -EIO; 1451 return -EIO;
1453 } else { 1452 } else {
1454 if (write_regvals(sd, mode_init_519_ov7670, 1453 if (write_regvals(sd, mode_init_519_ov7670,
1455 sizeof mode_init_519_ov7670 1454 ARRAY_SIZE(mode_init_519_ov7670)))
1456 / sizeof mode_init_519_ov7670[0]))
1457 return -EIO; 1455 return -EIO;
1458 } 1456 }
1459 1457
@@ -1883,7 +1881,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
1883 1881
1884static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1882static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1885 struct gspca_frame *frame, /* target */ 1883 struct gspca_frame *frame, /* target */
1886 unsigned char *data, /* isoc packet */ 1884 __u8 *data, /* isoc packet */
1887 int len) /* iso packet length */ 1885 int len) /* iso packet length */
1888{ 1886{
1889 /* Header of ov519 is 16 bytes: 1887 /* Header of ov519 is 16 bytes:
@@ -1982,7 +1980,7 @@ static void setcontrast(struct gspca_dev *gspca_dev)
1982 case SEN_OV6630: 1980 case SEN_OV6630:
1983 i2c_w_mask(sd, OV7610_REG_CNT, val >> 4, 0x0f); 1981 i2c_w_mask(sd, OV7610_REG_CNT, val >> 4, 0x0f);
1984 case SEN_OV8610: { 1982 case SEN_OV8610: {
1985 static __u8 ctab[] = { 1983 static const __u8 ctab[] = {
1986 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f 1984 0x03, 0x09, 0x0b, 0x0f, 0x53, 0x6f, 0x35, 0x7f
1987 }; 1985 };
1988 1986
@@ -1991,7 +1989,7 @@ static void setcontrast(struct gspca_dev *gspca_dev)
1991 break; 1989 break;
1992 } 1990 }
1993 case SEN_OV7620: { 1991 case SEN_OV7620: {
1994 static __u8 ctab[] = { 1992 static const __u8 ctab[] = {
1995 0x01, 0x05, 0x09, 0x11, 0x15, 0x35, 0x37, 0x57, 1993 0x01, 0x05, 0x09, 0x11, 0x15, 0x35, 0x37, 0x57,
1996 0x5b, 0xa5, 0xa7, 0xc7, 0xc9, 0xcf, 0xef, 0xff 1994 0x5b, 0xa5, 0xa7, 0xc7, 0xc9, 0xcf, 0xef, 0xff
1997 }; 1995 };
@@ -2104,7 +2102,7 @@ static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val)
2104} 2102}
2105 2103
2106/* sub-driver description */ 2104/* sub-driver description */
2107static struct sd_desc sd_desc = { 2105static const struct sd_desc sd_desc = {
2108 .name = MODULE_NAME, 2106 .name = MODULE_NAME,
2109 .ctrls = sd_ctrls, 2107 .ctrls = sd_ctrls,
2110 .nctrls = ARRAY_SIZE(sd_ctrls), 2108 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -2119,7 +2117,7 @@ static struct sd_desc sd_desc = {
2119 2117
2120/* -- module initialisation -- */ 2118/* -- module initialisation -- */
2121#define DVNM(name) .driver_info = (kernel_ulong_t) name 2119#define DVNM(name) .driver_info = (kernel_ulong_t) name
2122static __devinitdata struct usb_device_id device_table[] = { 2120static const __devinitdata struct usb_device_id device_table[] = {
2123 {USB_DEVICE(0x041e, 0x4052), DVNM("Creative Live! VISTA IM")}, 2121 {USB_DEVICE(0x041e, 0x4052), DVNM("Creative Live! VISTA IM")},
2124 {USB_DEVICE(0x041e, 0x405f), DVNM("Creative Live! VISTA VF0330")}, 2122 {USB_DEVICE(0x041e, 0x405f), DVNM("Creative Live! VISTA VF0330")},
2125 {USB_DEVICE(0x041e, 0x4060), DVNM("Creative Live! VISTA VF0350")}, 2123 {USB_DEVICE(0x041e, 0x4060), DVNM("Creative Live! VISTA VF0350")},
diff --git a/drivers/media/video/gspca/pac207.c b/drivers/media/video/gspca/pac207.c
index 84986684c4db..7e067456e62b 100644
--- a/drivers/media/video/gspca/pac207.c
+++ b/drivers/media/video/gspca/pac207.c
@@ -27,8 +27,8 @@
27 27
28#include "gspca.h" 28#include "gspca.h"
29 29
30#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 30#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
31static const char version[] = "2.1.0"; 31static const char version[] = "2.1.4";
32 32
33MODULE_AUTHOR("Hans de Goede <j.w.r.degoede@hhs.nl>"); 33MODULE_AUTHOR("Hans de Goede <j.w.r.degoede@hhs.nl>");
34MODULE_DESCRIPTION("Pixart PAC207"); 34MODULE_DESCRIPTION("Pixart PAC207");
@@ -716,7 +716,7 @@ static int pac207_decode_frame_data(struct gspca_dev *gspca_dev,
716 716
717static void sd_pkt_scan(struct gspca_dev *gspca_dev, 717static void sd_pkt_scan(struct gspca_dev *gspca_dev,
718 struct gspca_frame *frame, 718 struct gspca_frame *frame,
719 unsigned char *data, 719 __u8 *data,
720 int len) 720 int len)
721{ 721{
722 unsigned char *sof; 722 unsigned char *sof;
@@ -754,8 +754,8 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
754 754
755 n = pac207_decode_frame_data(gspca_dev, frame, data, len); 755 n = pac207_decode_frame_data(gspca_dev, frame, data, len);
756 if (n) 756 if (n)
757 frame = gspca_frame_add(gspca_dev, LAST_PACKET, 757 gspca_frame_add(gspca_dev, LAST_PACKET,
758 frame, NULL, 0); 758 frame, NULL, 0);
759} 759}
760 760
761static void setbrightness(struct gspca_dev *gspca_dev) 761static void setbrightness(struct gspca_dev *gspca_dev)
@@ -879,7 +879,7 @@ static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
879} 879}
880 880
881/* sub-driver description */ 881/* sub-driver description */
882static struct sd_desc sd_desc = { 882static const struct sd_desc sd_desc = {
883 .name = MODULE_NAME, 883 .name = MODULE_NAME,
884 .ctrls = sd_ctrls, 884 .ctrls = sd_ctrls,
885 .nctrls = ARRAY_SIZE(sd_ctrls), 885 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -895,7 +895,7 @@ static struct sd_desc sd_desc = {
895 895
896/* -- module initialisation -- */ 896/* -- module initialisation -- */
897#define DVNM(name) .driver_info = (kernel_ulong_t) name 897#define DVNM(name) .driver_info = (kernel_ulong_t) name
898static __devinitdata struct usb_device_id device_table[] = { 898static const __devinitdata struct usb_device_id device_table[] = {
899 {USB_DEVICE(0x041e, 0x4028), DVNM("Creative Webcam Vista Plus")}, 899 {USB_DEVICE(0x041e, 0x4028), DVNM("Creative Webcam Vista Plus")},
900 {USB_DEVICE(0x093a, 0x2460), DVNM("Q-Tec Webcam 100")}, 900 {USB_DEVICE(0x093a, 0x2460), DVNM("Q-Tec Webcam 100")},
901 {USB_DEVICE(0x093a, 0x2463), DVNM("Philips spc200nc pac207")}, 901 {USB_DEVICE(0x093a, 0x2463), DVNM("Philips spc200nc pac207")},
diff --git a/drivers/media/video/gspca/pac7311.c b/drivers/media/video/gspca/pac7311.c
index 14cc49a4c2cc..c2d4b6a4dcf4 100644
--- a/drivers/media/video/gspca/pac7311.c
+++ b/drivers/media/video/gspca/pac7311.c
@@ -23,8 +23,8 @@
23 23
24#include "gspca.h" 24#include "gspca.h"
25 25
26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 3) 26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
27static const char version[] = "2.1.3"; 27static const char version[] = "2.1.4";
28 28
29MODULE_AUTHOR("Thomas Kaiser thomas@kaiser-linux.li"); 29MODULE_AUTHOR("Thomas Kaiser thomas@kaiser-linux.li");
30MODULE_DESCRIPTION("Pixart PAC7311"); 30MODULE_DESCRIPTION("Pixart PAC7311");
@@ -37,7 +37,6 @@ struct sd {
37 int avg_lum; 37 int avg_lum;
38 38
39 unsigned char brightness; 39 unsigned char brightness;
40#define BRIGHTNESS_MAX 0x20
41 unsigned char contrast; 40 unsigned char contrast;
42 unsigned char colors; 41 unsigned char colors;
43 unsigned char autogain; 42 unsigned char autogain;
@@ -58,21 +57,21 @@ static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val);
58static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val); 57static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val);
59 58
60static struct ctrl sd_ctrls[] = { 59static struct ctrl sd_ctrls[] = {
61#define SD_BRIGHTNESS 0
62 { 60 {
63 { 61 {
64 .id = V4L2_CID_BRIGHTNESS, 62 .id = V4L2_CID_BRIGHTNESS,
65 .type = V4L2_CTRL_TYPE_INTEGER, 63 .type = V4L2_CTRL_TYPE_INTEGER,
66 .name = "Brightness", 64 .name = "Brightness",
67 .minimum = 0, 65 .minimum = 0,
66#define BRIGHTNESS_MAX 0x20
68 .maximum = BRIGHTNESS_MAX, 67 .maximum = BRIGHTNESS_MAX,
69 .step = 1, 68 .step = 1,
70 .default_value = 0x10, 69#define BRIGHTNESS_DEF 0x10
70 .default_value = BRIGHTNESS_DEF,
71 }, 71 },
72 .set = sd_setbrightness, 72 .set = sd_setbrightness,
73 .get = sd_getbrightness, 73 .get = sd_getbrightness,
74 }, 74 },
75#define SD_CONTRAST 1
76 { 75 {
77 { 76 {
78 .id = V4L2_CID_CONTRAST, 77 .id = V4L2_CID_CONTRAST,
@@ -81,12 +80,12 @@ static struct ctrl sd_ctrls[] = {
81 .minimum = 0, 80 .minimum = 0,
82 .maximum = 255, 81 .maximum = 255,
83 .step = 1, 82 .step = 1,
84 .default_value = 127, 83#define CONTRAST_DEF 127
84 .default_value = CONTRAST_DEF,
85 }, 85 },
86 .set = sd_setcontrast, 86 .set = sd_setcontrast,
87 .get = sd_getcontrast, 87 .get = sd_getcontrast,
88 }, 88 },
89#define SD_COLOR 2
90 { 89 {
91 { 90 {
92 .id = V4L2_CID_SATURATION, 91 .id = V4L2_CID_SATURATION,
@@ -95,12 +94,12 @@ static struct ctrl sd_ctrls[] = {
95 .minimum = 0, 94 .minimum = 0,
96 .maximum = 255, 95 .maximum = 255,
97 .step = 1, 96 .step = 1,
98 .default_value = 127, 97#define COLOR_DEF 127
98 .default_value = COLOR_DEF,
99 }, 99 },
100 .set = sd_setcolors, 100 .set = sd_setcolors,
101 .get = sd_getcolors, 101 .get = sd_getcolors,
102 }, 102 },
103#define SD_AUTOGAIN 3
104 { 103 {
105 { 104 {
106 .id = V4L2_CID_AUTOGAIN, 105 .id = V4L2_CID_AUTOGAIN,
@@ -109,7 +108,8 @@ static struct ctrl sd_ctrls[] = {
109 .minimum = 0, 108 .minimum = 0,
110 .maximum = 1, 109 .maximum = 1,
111 .step = 1, 110 .step = 1,
112 .default_value = 1, 111#define AUTOGAIN_DEF 1
112 .default_value = AUTOGAIN_DEF,
113 }, 113 },
114 .set = sd_setautogain, 114 .set = sd_setautogain,
115 .get = sd_getautogain, 115 .get = sd_getautogain,
@@ -124,7 +124,7 @@ static struct cam_mode vga_mode[] = {
124 124
125#define PAC7311_JPEG_HEADER_SIZE (sizeof pac7311_jpeg_header) /* (594) */ 125#define PAC7311_JPEG_HEADER_SIZE (sizeof pac7311_jpeg_header) /* (594) */
126 126
127const unsigned char pac7311_jpeg_header[] = { 127static const __u8 pac7311_jpeg_header[] = {
128 0xff, 0xd8, 128 0xff, 0xd8,
129 0xff, 0xe0, 0x00, 0x03, 0x20, 129 0xff, 0xe0, 0x00, 0x03, 0x20,
130 0xff, 0xc0, 0x00, 0x11, 0x08, 130 0xff, 0xc0, 0x00, 0x11, 0x08,
@@ -195,8 +195,8 @@ const unsigned char pac7311_jpeg_header[] = {
195}; 195};
196 196
197static void reg_w(struct usb_device *dev, 197static void reg_w(struct usb_device *dev,
198 __u16 index, 198 __u16 index,
199 char *buffer, __u16 len) 199 const char *buffer, __u16 len)
200{ 200{
201 __u8 tmpbuf[8]; 201 __u8 tmpbuf[8];
202 202
@@ -263,10 +263,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
263 cam->cam_mode = vga_mode; 263 cam->cam_mode = vga_mode;
264 cam->nmodes = ARRAY_SIZE(vga_mode); 264 cam->nmodes = ARRAY_SIZE(vga_mode);
265 265
266 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 266 sd->brightness = BRIGHTNESS_DEF;
267 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 267 sd->contrast = CONTRAST_DEF;
268 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 268 sd->colors = COLOR_DEF;
269 sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; 269 sd->autogain = AUTOGAIN_DEF;
270 return 0; 270 return 0;
271} 271}
272 272
@@ -278,7 +278,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
278/*jfm: inverted?*/ 278/*jfm: inverted?*/
279 brightness = BRIGHTNESS_MAX - sd->brightness; 279 brightness = BRIGHTNESS_MAX - sd->brightness;
280 pac7311_reg_write(gspca_dev->dev, 0xff, 0x04); 280 pac7311_reg_write(gspca_dev->dev, 0xff, 0x04);
281 /* pac7311_reg_write(gspca_dev->dev, 0x0e, 0x00); */ 281/* pac7311_reg_write(gspca_dev->dev, 0x0e, 0x00); */
282 pac7311_reg_write(gspca_dev->dev, 0x0f, brightness); 282 pac7311_reg_write(gspca_dev->dev, 0x0f, brightness);
283 /* load registers to sensor (Bit 0, auto clear) */ 283 /* load registers to sensor (Bit 0, auto clear) */
284 pac7311_reg_write(gspca_dev->dev, 0x11, 0x01); 284 pac7311_reg_write(gspca_dev->dev, 0x11, 0x01);
@@ -502,7 +502,7 @@ static void setautogain(struct gspca_dev *gspca_dev, int luma)
502 502
503static void sd_pkt_scan(struct gspca_dev *gspca_dev, 503static void sd_pkt_scan(struct gspca_dev *gspca_dev,
504 struct gspca_frame *frame, /* target */ 504 struct gspca_frame *frame, /* target */
505 unsigned char *data, /* isoc packet */ 505 __u8 *data, /* isoc packet */
506 int len) /* iso packet length */ 506 int len) /* iso packet length */
507{ 507{
508 struct sd *sd = (struct sd *) gspca_dev; 508 struct sd *sd = (struct sd *) gspca_dev;
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c
index 4f23b16c89a8..eb5e1bfd7911 100644
--- a/drivers/media/video/gspca/sonixj.c
+++ b/drivers/media/video/gspca/sonixj.c
@@ -24,8 +24,8 @@
24#include "gspca.h" 24#include "gspca.h"
25#include "jpeg.h" 25#include "jpeg.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 3) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.3"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/SONIX JPEG USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/SONIX JPEG USB Camera Driver");
@@ -74,7 +74,6 @@ static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val);
74static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val); 74static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val);
75 75
76static struct ctrl sd_ctrls[] = { 76static struct ctrl sd_ctrls[] = {
77#define SD_BRIGHTNESS 0
78 { 77 {
79 { 78 {
80 .id = V4L2_CID_BRIGHTNESS, 79 .id = V4L2_CID_BRIGHTNESS,
@@ -83,12 +82,12 @@ static struct ctrl sd_ctrls[] = {
83 .minimum = 0, 82 .minimum = 0,
84 .maximum = 0xffff, 83 .maximum = 0xffff,
85 .step = 1, 84 .step = 1,
86 .default_value = 0x7fff, 85#define BRIGHTNESS_DEF 0x7fff
86 .default_value = BRIGHTNESS_DEF,
87 }, 87 },
88 .set = sd_setbrightness, 88 .set = sd_setbrightness,
89 .get = sd_getbrightness, 89 .get = sd_getbrightness,
90 }, 90 },
91#define SD_CONTRAST 1
92 { 91 {
93 { 92 {
94 .id = V4L2_CID_CONTRAST, 93 .id = V4L2_CID_CONTRAST,
@@ -97,12 +96,12 @@ static struct ctrl sd_ctrls[] = {
97 .minimum = 0, 96 .minimum = 0,
98 .maximum = 127, 97 .maximum = 127,
99 .step = 1, 98 .step = 1,
100 .default_value = 63, 99#define CONTRAST_DEF 63
100 .default_value = CONTRAST_DEF,
101 }, 101 },
102 .set = sd_setcontrast, 102 .set = sd_setcontrast,
103 .get = sd_getcontrast, 103 .get = sd_getcontrast,
104 }, 104 },
105#define SD_COLOR 2
106 { 105 {
107 { 106 {
108 .id = V4L2_CID_SATURATION, 107 .id = V4L2_CID_SATURATION,
@@ -111,12 +110,12 @@ static struct ctrl sd_ctrls[] = {
111 .minimum = 0, 110 .minimum = 0,
112 .maximum = 255, 111 .maximum = 255,
113 .step = 1, 112 .step = 1,
114 .default_value = 127, 113#define COLOR_DEF 127
114 .default_value = COLOR_DEF,
115 }, 115 },
116 .set = sd_setcolors, 116 .set = sd_setcolors,
117 .get = sd_getcolors, 117 .get = sd_getcolors,
118 }, 118 },
119#define SD_AUTOGAIN 3
120 { 119 {
121 { 120 {
122 .id = V4L2_CID_AUTOGAIN, 121 .id = V4L2_CID_AUTOGAIN,
@@ -125,7 +124,8 @@ static struct ctrl sd_ctrls[] = {
125 .minimum = 0, 124 .minimum = 0,
126 .maximum = 1, 125 .maximum = 1,
127 .step = 1, 126 .step = 1,
128 .default_value = 1, 127#define AUTOGAIN_DEF 1
128 .default_value = AUTOGAIN_DEF,
129 }, 129 },
130 .set = sd_setautogain, 130 .set = sd_setautogain,
131 .get = sd_getautogain, 131 .get = sd_getautogain,
@@ -139,7 +139,7 @@ static struct cam_mode vga_mode[] = {
139}; 139};
140 140
141/*Data from sn9c102p+hv71331r */ 141/*Data from sn9c102p+hv71331r */
142static __u8 sn_hv7131[] = { 142static const __u8 sn_hv7131[] = {
143 0x00, 0x03, 0x64, 0x00, 0x1A, 0x20, 0x20, 0x20, 0xA1, 0x11, 143 0x00, 0x03, 0x64, 0x00, 0x1A, 0x20, 0x20, 0x20, 0xA1, 0x11,
144/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 */ 144/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 */
145 0x02, 0x09, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, /* 00 */ 145 0x02, 0x09, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, /* 00 */
@@ -150,7 +150,7 @@ static __u8 sn_hv7131[] = {
150/* reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23 */ 150/* reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23 */
151}; 151};
152 152
153static __u8 sn_mi0360[] = { 153static const __u8 sn_mi0360[] = {
154 0x00, 0x61, 0x44, 0x00, 0x1a, 0x20, 0x20, 0x20, 0xb1, 0x5d, 154 0x00, 0x61, 0x44, 0x00, 0x1a, 0x20, 0x20, 0x20, 0xb1, 0x5d,
155/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 */ 155/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 */
156 0x07, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 156 0x07, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00,
@@ -161,7 +161,7 @@ static __u8 sn_mi0360[] = {
161/* reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23 */ 161/* reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23 */
162}; 162};
163 163
164static __u8 sn_mo4000[] = { 164static const __u8 sn_mo4000[] = {
165 0x12, 0x23, 0x60, 0x00, 0x1A, 0x00, 0x20, 0x18, 0x81, 165 0x12, 0x23, 0x60, 0x00, 0x1A, 0x00, 0x20, 0x18, 0x81,
166/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 */ 166/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 */
167 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 167 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
@@ -174,13 +174,13 @@ static __u8 sn_mo4000[] = {
174 0xd3, 0xdf, 0xea, 0xf5 174 0xd3, 0xdf, 0xea, 0xf5
175}; 175};
176 176
177static __u8 sn_ov7648[] = { 177static const __u8 sn_ov7648[] = {
178 0x00, 0x21, 0x62, 0x00, 0x1a, 0x20, 0x20, 0x20, 0xA1, 0x6E, 0x18, 0x65, 178 0x00, 0x21, 0x62, 0x00, 0x1a, 0x20, 0x20, 0x20, 0xA1, 0x6E, 0x18, 0x65,
179 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x06, 0x06, 0x28, 0x1E, 0x82, 179 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x06, 0x06, 0x28, 0x1E, 0x82,
180 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 180 0x07, 0x00, 0x00, 0x00, 0x00, 0x00
181}; 181};
182 182
183static __u8 sn_ov7660[] = { 183static const __u8 sn_ov7660[] = {
184/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 */ 184/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 */
185 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x81, 185 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x81,
186/* reg9 rega regb regc regd rege regf reg10 reg11*/ 186/* reg9 rega regb regc regd rege regf reg10 reg11*/
@@ -192,7 +192,7 @@ static __u8 sn_ov7660[] = {
192}; 192};
193 193
194/* sequence specific to the sensors - !! index = SENSOR_xxx */ 194/* sequence specific to the sensors - !! index = SENSOR_xxx */
195static __u8 *sn_tb[] = { 195static const __u8 *sn_tb[] = {
196 sn_hv7131, 196 sn_hv7131,
197 sn_mi0360, 197 sn_mi0360,
198 sn_mo4000, 198 sn_mo4000,
@@ -200,28 +200,28 @@ static __u8 *sn_tb[] = {
200 sn_ov7660 200 sn_ov7660
201}; 201};
202 202
203static __u8 regsn20[] = { 203static const __u8 regsn20[] = {
204 0x00, 0x2d, 0x46, 0x5a, 0x6c, 0x7c, 0x8b, 0x99, 204 0x00, 0x2d, 0x46, 0x5a, 0x6c, 0x7c, 0x8b, 0x99,
205 0xa6, 0xb2, 0xbf, 0xca, 0xd5, 0xe0, 0xeb, 0xf5, 0xff 205 0xa6, 0xb2, 0xbf, 0xca, 0xd5, 0xe0, 0xeb, 0xf5, 0xff
206}; 206};
207static __u8 regsn20_sn9c325[] = { 207static const __u8 regsn20_sn9c325[] = {
208 0x0a, 0x3a, 0x56, 0x6c, 0x7e, 0x8d, 0x9a, 0xa4, 208 0x0a, 0x3a, 0x56, 0x6c, 0x7e, 0x8d, 0x9a, 0xa4,
209 0xaf, 0xbb, 0xc5, 0xcd, 0xd5, 0xde, 0xe8, 0xed, 0xf5 209 0xaf, 0xbb, 0xc5, 0xcd, 0xd5, 0xde, 0xe8, 0xed, 0xf5
210}; 210};
211 211
212static __u8 reg84[] = { 212static const __u8 reg84[] = {
213 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xe5, 0x0f, 213 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xe5, 0x0f,
214 0xe4, 0x0f, 0x38, 0x00, 0x3e, 0x00, 0xc3, 0x0f, 214 0xe4, 0x0f, 0x38, 0x00, 0x3e, 0x00, 0xc3, 0x0f,
215/* 0x00, 0x00, 0x00, 0x00, 0x00 */ 215/* 0x00, 0x00, 0x00, 0x00, 0x00 */
216 0xf7, 0x0f, 0x0a, 0x00, 0x00 216 0xf7, 0x0f, 0x0a, 0x00, 0x00
217}; 217};
218static __u8 reg84_sn9c325[] = { 218static const __u8 reg84_sn9c325[] = {
219 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xe4, 0x0f, 219 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xe4, 0x0f,
220 0xd3, 0x0f, 0x4b, 0x00, 0x48, 0x00, 0xc0, 0x0f, 220 0xd3, 0x0f, 0x4b, 0x00, 0x48, 0x00, 0xc0, 0x0f,
221 0xf8, 0x0f, 0x00, 0x00, 0x00 221 0xf8, 0x0f, 0x00, 0x00, 0x00
222}; 222};
223 223
224static __u8 hv7131r_sensor_init[][8] = { 224static const __u8 hv7131r_sensor_init[][8] = {
225 {0xC1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10}, 225 {0xC1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
226 {0xB1, 0x11, 0x34, 0x17, 0x7F, 0x00, 0x00, 0x10}, 226 {0xB1, 0x11, 0x34, 0x17, 0x7F, 0x00, 0x00, 0x10},
227 {0xD1, 0x11, 0x40, 0xFF, 0x7F, 0x7F, 0x7F, 0x10}, 227 {0xD1, 0x11, 0x40, 0xFF, 0x7F, 0x7F, 0x7F, 0x10},
@@ -250,9 +250,9 @@ static __u8 hv7131r_sensor_init[][8] = {
250 {0xA1, 0x11, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x10}, 250 {0xA1, 0x11, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x10},
251 {0xA1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10}, 251 {0xA1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
252 {0xA1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10}, 252 {0xA1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},
253 {0, 0, 0, 0, 0, 0, 0, 0} 253 {}
254}; 254};
255static __u8 mi0360_sensor_init[][8] = { 255static const __u8 mi0360_sensor_init[][8] = {
256 {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, 256 {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
257 {0xB1, 0x5D, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x10}, 257 {0xB1, 0x5D, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x10},
258 {0xB1, 0x5D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x10}, 258 {0xB1, 0x5D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x10},
@@ -304,9 +304,9 @@ static __u8 mi0360_sensor_init[][8] = {
304/* {0xB1, 0x5D, 0x35, 0x00, 0x20, 0x00, 0x00, 0x10}, * gain */ 304/* {0xB1, 0x5D, 0x35, 0x00, 0x20, 0x00, 0x00, 0x10}, * gain */
305 {0xB1, 0x5D, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */ 305 {0xB1, 0x5D, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */
306 {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */ 306 {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
307 {0, 0, 0, 0, 0, 0, 0, 0} 307 {}
308}; 308};
309static __u8 mo4000_sensor_init[][8] = { 309static const __u8 mo4000_sensor_init[][8] = {
310 {0xa1, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00, 0x10}, 310 {0xa1, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00, 0x10},
311 {0xa1, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10}, 311 {0xa1, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10},
312 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10}, 312 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
@@ -327,9 +327,9 @@ static __u8 mo4000_sensor_init[][8] = {
327 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10}, 327 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10},
328 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, 328 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
329 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10}, 329 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
330 {0, 0, 0, 0, 0, 0, 0, 0} 330 {}
331}; 331};
332static __u8 ov7660_sensor_init[][8] = { 332static const __u8 ov7660_sensor_init[][8] = {
333 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */ 333 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */
334 {0xa1, 0x21, 0x12, 0x05, 0x00, 0x00, 0x00, 0x10}, 334 {0xa1, 0x21, 0x12, 0x05, 0x00, 0x00, 0x00, 0x10},
335 /* Outformat ?? rawRGB */ 335 /* Outformat ?? rawRGB */
@@ -420,12 +420,12 @@ static __u8 ov7660_sensor_init[][8] = {
420 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10}, 420 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10},
421 {0xa1, 0x21, 0x2b, 0xc3, 0x00, 0x00, 0x00, 0x10}, 421 {0xa1, 0x21, 0x2b, 0xc3, 0x00, 0x00, 0x00, 0x10},
422/* here may start the isoc exchanges */ 422/* here may start the isoc exchanges */
423 {0, 0, 0, 0, 0, 0, 0, 0} 423 {}
424}; 424};
425/* reg0x04 reg0x07 reg 0x10 */ 425/* reg0x04 reg0x07 reg 0x10 */
426/* expo = (COM1 & 0x02) | (AECHH & 0x2f <<10) [ (AECh << 2) */ 426/* expo = (COM1 & 0x02) | (AECHH & 0x2f <<10) [ (AECh << 2) */
427 427
428static __u8 ov7648_sensor_init[][8] = { 428static const __u8 ov7648_sensor_init[][8] = {
429 {0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00}, 429 {0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
430 {0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, 430 {0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
431 {0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00}, 431 {0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
@@ -478,10 +478,10 @@ static __u8 ov7648_sensor_init[][8] = {
478 {0xA1, 0x6E, 0x07, 0x66, 0x00, 0x00, 0x00, 0x10}, /* B.. */ 478 {0xA1, 0x6E, 0x07, 0x66, 0x00, 0x00, 0x00, 0x10}, /* B.. */
479 {0xC1, 0x6E, 0x1A, 0x03, 0x65, 0x90, 0x00, 0x10}, /* Bright/Witen....*/ 479 {0xC1, 0x6E, 0x1A, 0x03, 0x65, 0x90, 0x00, 0x10}, /* Bright/Witen....*/
480/* {0xC1, 0x6E, 0x16, 0x45, 0x40, 0x60, 0x00, 0x10}, * Bright/Witene */ 480/* {0xC1, 0x6E, 0x16, 0x45, 0x40, 0x60, 0x00, 0x10}, * Bright/Witene */
481 {0, 0, 0, 0, 0, 0, 0, 0} 481 {}
482}; 482};
483 483
484static __u8 qtable4[] = { 484static const __u8 qtable4[] = {
485 0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x08, 0x06, 485 0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x08, 0x06,
486 0x06, 0x08, 0x0A, 0x11, 486 0x06, 0x08, 0x0A, 0x11,
487 0x0A, 0x0A, 0x08, 0x08, 0x0A, 0x15, 0x0F, 0x0F, 0x0C, 0x11, 0x19, 0x15, 487 0x0A, 0x0A, 0x08, 0x08, 0x0A, 0x15, 0x0F, 0x0F, 0x0C, 0x11, 0x19, 0x15,
@@ -518,27 +518,36 @@ static void reg_w(struct usb_device *dev,
518 const __u8 *buffer, 518 const __u8 *buffer,
519 int len) 519 int len)
520{ 520{
521 __u8 tmpbuf[64]; 521 if (len < 16) {
522 522 __u8 tmpbuf[16];
523#ifdef CONFIG_VIDEO_ADV_DEBUG 523
524 if (len > sizeof tmpbuf) { 524 memcpy(tmpbuf, buffer, len);
525 PDEBUG(D_ERR|D_PACK, "reg_w: buffer overflow"); 525 usb_control_msg(dev,
526 return; 526 usb_sndctrlpipe(dev, 0),
527 0x08,
528 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
529 value, 0,
530 tmpbuf, len,
531 500);
532 } else {
533 __u8 *tmpbuf;
534
535 tmpbuf = kmalloc(len, GFP_KERNEL);
536 memcpy(tmpbuf, buffer, len);
537 usb_control_msg(dev,
538 usb_sndctrlpipe(dev, 0),
539 0x08,
540 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
541 value, 0,
542 tmpbuf, len,
543 500);
544 kfree(tmpbuf);
527 } 545 }
528#endif
529 memcpy(tmpbuf, buffer, len);
530 usb_control_msg(dev,
531 usb_sndctrlpipe(dev, 0),
532 0x08,
533 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
534 value, 0,
535 tmpbuf, len,
536 500);
537} 546}
538 547
539/* write 2 bytes */ 548/* write 2 bytes */
540static void i2c_w2(struct gspca_dev *gspca_dev, 549static void i2c_w2(struct gspca_dev *gspca_dev,
541 __u8 *buffer) 550 const __u8 *buffer)
542{ 551{
543 struct sd *sd = (struct sd *) gspca_dev; 552 struct sd *sd = (struct sd *) gspca_dev;
544 struct usb_device *dev = gspca_dev->dev; 553 struct usb_device *dev = gspca_dev->dev;
@@ -557,7 +566,7 @@ static void i2c_w2(struct gspca_dev *gspca_dev,
557} 566}
558 567
559/* write 8 bytes */ 568/* write 8 bytes */
560static void i2c_w8(struct usb_device *dev, __u8 *buffer) 569static void i2c_w8(struct usb_device *dev, const __u8 *buffer)
561{ 570{
562 reg_w(dev, 0x08, buffer, 8); 571 reg_w(dev, 0x08, buffer, 8);
563 msleep(1); 572 msleep(1);
@@ -565,7 +574,7 @@ static void i2c_w8(struct usb_device *dev, __u8 *buffer)
565 574
566/* read 5 bytes */ 575/* read 5 bytes */
567static void i2c_r5(struct gspca_dev *gspca_dev, __u8 reg, 576static void i2c_r5(struct gspca_dev *gspca_dev, __u8 reg,
568 __u8 *buffer) 577 __u8 *buffer)
569{ 578{
570 struct sd *sd = (struct sd *) gspca_dev; 579 struct sd *sd = (struct sd *) gspca_dev;
571 struct usb_device *dev = gspca_dev->dev; 580 struct usb_device *dev = gspca_dev->dev;
@@ -591,7 +600,7 @@ static int probesensor(struct gspca_dev *gspca_dev)
591 struct sd *sd = (struct sd *) gspca_dev; 600 struct sd *sd = (struct sd *) gspca_dev;
592 struct usb_device *dev = gspca_dev->dev; 601 struct usb_device *dev = gspca_dev->dev;
593 __u8 reg02; 602 __u8 reg02;
594 static __u8 datasend[] = { 2, 0 }; 603 static const __u8 datasend[] = { 2, 0 };
595 /* reg val1 val2 val3 val4 */ 604 /* reg val1 val2 val3 val4 */
596 __u8 datarecd[6]; 605 __u8 datarecd[6];
597 606
@@ -618,18 +627,18 @@ static int probesensor(struct gspca_dev *gspca_dev)
618} 627}
619 628
620static int configure_gpio(struct gspca_dev *gspca_dev, 629static int configure_gpio(struct gspca_dev *gspca_dev,
621 __u8 *sn9c1xx) 630 const __u8 *sn9c1xx)
622{ 631{
623 struct sd *sd = (struct sd *) gspca_dev; 632 struct sd *sd = (struct sd *) gspca_dev;
624 struct usb_device *dev = gspca_dev->dev; 633 struct usb_device *dev = gspca_dev->dev;
625 __u8 data; 634 __u8 data;
626 __u8 regF1; 635 __u8 regF1;
627 __u8 *reg9a; 636 const __u8 *reg9a;
628 static __u8 reg9a_def[] = 637 static const __u8 reg9a_def[] =
629 {0x08, 0x40, 0x20, 0x10, 0x00, 0x04}; 638 {0x08, 0x40, 0x20, 0x10, 0x00, 0x04};
630 static __u8 reg9a_sn9c120[] = /* from win trace */ 639 static const __u8 reg9a_sn9c120[] = /* from win trace */
631 {0x00, 0x40, 0x38, 0x30, 0x00, 0x20}; 640 {0x00, 0x40, 0x38, 0x30, 0x00, 0x20};
632 static __u8 reg9a_sn9c325[] = 641 static const __u8 reg9a_sn9c325[] =
633 {0x0a, 0x40, 0x38, 0x30, 0x00, 0x20}; 642 {0x0a, 0x40, 0x38, 0x30, 0x00, 0x20};
634 643
635 644
@@ -697,7 +706,7 @@ static void hv7131R_InitSensor(struct gspca_dev *gspca_dev)
697{ 706{
698 int i = 0; 707 int i = 0;
699 struct usb_device *dev = gspca_dev->dev; 708 struct usb_device *dev = gspca_dev->dev;
700 static __u8 SetSensorClk[] = /* 0x08 Mclk */ 709 static const __u8 SetSensorClk[] = /* 0x08 Mclk */
701 { 0xa1, 0x11, 0x01, 0x18, 0x00, 0x00, 0x00, 0x10 }; 710 { 0xa1, 0x11, 0x01, 0x18, 0x00, 0x00, 0x00, 0x10 };
702 711
703 while (hv7131r_sensor_init[i][0]) { 712 while (hv7131r_sensor_init[i][0]) {
@@ -971,11 +980,12 @@ static int sd_config(struct gspca_dev *gspca_dev,
971 cam->epaddr = 0x01; 980 cam->epaddr = 0x01;
972 cam->cam_mode = vga_mode; 981 cam->cam_mode = vga_mode;
973 cam->nmodes = ARRAY_SIZE(vga_mode); 982 cam->nmodes = ARRAY_SIZE(vga_mode);
983
974 sd->qindex = 4; /* set the quantization table */ 984 sd->qindex = 4; /* set the quantization table */
975 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 985 sd->brightness = BRIGHTNESS_DEF;
976 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 986 sd->contrast = CONTRAST_DEF;
977 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 987 sd->colors = COLOR_DEF;
978 sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; 988 sd->autogain = AUTOGAIN_DEF;
979 return 0; 989 return 0;
980} 990}
981 991
@@ -984,7 +994,7 @@ static int sd_open(struct gspca_dev *gspca_dev)
984{ 994{
985 struct sd *sd = (struct sd *) gspca_dev; 995 struct sd *sd = (struct sd *) gspca_dev;
986 struct usb_device *dev = gspca_dev->dev; 996 struct usb_device *dev = gspca_dev->dev;
987/* __u8 *sn9c1xx; */ 997/* const __u8 *sn9c1xx; */
988 __u8 regF1; 998 __u8 regF1;
989 __u8 regGpio[] = { 0x29, 0x74 }; 999 __u8 regGpio[] = { 0x29, 0x74 };
990 1000
@@ -1036,11 +1046,11 @@ static unsigned int setexposure(struct gspca_dev *gspca_dev,
1036 unsigned int expo) 1046 unsigned int expo)
1037{ 1047{
1038 struct sd *sd = (struct sd *) gspca_dev; 1048 struct sd *sd = (struct sd *) gspca_dev;
1039 static __u8 doit[] = /* update sensor */ 1049 static const __u8 doit[] = /* update sensor */
1040 { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 }; 1050 { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 };
1041 static __u8 sensorgo[] = /* sensor on */ 1051 static const __u8 sensorgo[] = /* sensor on */
1042 { 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 }; 1052 { 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 };
1043 static __u8 gainMo[] = 1053 static const __u8 gainMo[] =
1044 { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d }; 1054 { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d };
1045 1055
1046 switch (sd->sensor) { 1056 switch (sd->sensor) {
@@ -1164,14 +1174,15 @@ static void sd_start(struct gspca_dev *gspca_dev)
1164 __u8 data; 1174 __u8 data;
1165 __u8 reg1; 1175 __u8 reg1;
1166 __u8 reg17; 1176 __u8 reg17;
1167 __u8 *sn9c1xx; 1177 const __u8 *sn9c1xx;
1168 int mode; 1178 int mode;
1169 static __u8 DC29[] = { 0x6a, 0x50, 0x00, 0x00, 0x50, 0x3c }; 1179 static const __u8 DC29[] = { 0x6a, 0x50, 0x00, 0x00, 0x50, 0x3c };
1170 static __u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f }; 1180 static const __u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f };
1171 static __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec }; 1181 static const __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
1172 static __u8 CA_sn9c120[] = { 0x14, 0xec, 0x0a, 0xf6 }; /* SN9C120 */ 1182 static const __u8 CA_sn9c120[] =
1173 static __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */ 1183 { 0x14, 0xec, 0x0a, 0xf6 }; /* SN9C120 */
1174 static __u8 CE_sn9c325[] = 1184 static const __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */
1185 static const __u8 CE_sn9c325[] =
1175 { 0x32, 0xdd, 0x32, 0xdd }; /* OV7648 - SN9C325 */ 1186 { 0x32, 0xdd, 0x32, 0xdd }; /* OV7648 - SN9C325 */
1176 1187
1177 sn9c1xx = sn_tb[(int) sd->sensor]; 1188 sn9c1xx = sn_tb[(int) sd->sensor];
@@ -1311,13 +1322,13 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
1311{ 1322{
1312 struct sd *sd = (struct sd *) gspca_dev; 1323 struct sd *sd = (struct sd *) gspca_dev;
1313 struct usb_device *dev = gspca_dev->dev; 1324 struct usb_device *dev = gspca_dev->dev;
1314 static __u8 stophv7131[] = 1325 static const __u8 stophv7131[] =
1315 { 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 }; 1326 { 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 };
1316 static __u8 stopmi0360[] = 1327 static const __u8 stopmi0360[] =
1317 { 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 }; 1328 { 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 };
1318 __u8 regF1; 1329 __u8 regF1;
1319 __u8 data; 1330 __u8 data;
1320 __u8 *sn9c1xx; 1331 const __u8 *sn9c1xx;
1321 1332
1322 data = 0x0b; 1333 data = 0x0b;
1323 switch (sd->sensor) { 1334 switch (sd->sensor) {
@@ -1392,7 +1403,7 @@ static void setautogain(struct gspca_dev *gspca_dev)
1392 1403
1393static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1404static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1394 struct gspca_frame *frame, /* target */ 1405 struct gspca_frame *frame, /* target */
1395 unsigned char *data, /* isoc packet */ 1406 __u8 *data, /* isoc packet */
1396 int len) /* iso packet length */ 1407 int len) /* iso packet length */
1397{ 1408{
1398 struct sd *sd = (struct sd *) gspca_dev; 1409 struct sd *sd = (struct sd *) gspca_dev;
@@ -1567,7 +1578,7 @@ static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
1567} 1578}
1568 1579
1569/* sub-driver description */ 1580/* sub-driver description */
1570static struct sd_desc sd_desc = { 1581static const struct sd_desc sd_desc = {
1571 .name = MODULE_NAME, 1582 .name = MODULE_NAME,
1572 .ctrls = sd_ctrls, 1583 .ctrls = sd_ctrls,
1573 .nctrls = ARRAY_SIZE(sd_ctrls), 1584 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -1582,7 +1593,7 @@ static struct sd_desc sd_desc = {
1582 1593
1583/* -- module initialisation -- */ 1594/* -- module initialisation -- */
1584#define DVNM(name) .driver_info = (kernel_ulong_t) name 1595#define DVNM(name) .driver_info = (kernel_ulong_t) name
1585static __devinitdata struct usb_device_id device_table[] = { 1596static const __devinitdata struct usb_device_id device_table[] = {
1586 {USB_DEVICE(0x0458, 0x7025), DVNM("Genius Eye 311Q")}, 1597 {USB_DEVICE(0x0458, 0x7025), DVNM("Genius Eye 311Q")},
1587 {USB_DEVICE(0x045e, 0x00f5), DVNM("MicroSoft VX3000")}, 1598 {USB_DEVICE(0x045e, 0x00f5), DVNM("MicroSoft VX3000")},
1588 {USB_DEVICE(0x045e, 0x00f7), DVNM("MicroSoft VX1000")}, 1599 {USB_DEVICE(0x045e, 0x00f7), DVNM("MicroSoft VX1000")},
diff --git a/drivers/media/video/gspca/spca500.c b/drivers/media/video/gspca/spca500.c
index 1db5b33ad85e..3a42506830f8 100644
--- a/drivers/media/video/gspca/spca500.c
+++ b/drivers/media/video/gspca/spca500.c
@@ -24,8 +24,8 @@
24#include "gspca.h" 24#include "gspca.h"
25#include "jpeg.h" 25#include "jpeg.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/SPCA500 USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/SPCA500 USB Camera Driver");
@@ -35,7 +35,7 @@ MODULE_LICENSE("GPL");
35struct sd { 35struct sd {
36 struct gspca_dev gspca_dev; /* !! must be the first item */ 36 struct gspca_dev gspca_dev; /* !! must be the first item */
37 37
38 unsigned char packet[ISO_MAX_SIZE + 128]; 38 __u8 packet[ISO_MAX_SIZE + 128];
39 /* !! no more than 128 ff in an ISO packet */ 39 /* !! no more than 128 ff in an ISO packet */
40 40
41 unsigned char brightness; 41 unsigned char brightness;
@@ -70,44 +70,44 @@ static int sd_setcolors(struct gspca_dev *gspca_dev, __s32 val);
70static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val); 70static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val);
71 71
72static struct ctrl sd_ctrls[] = { 72static struct ctrl sd_ctrls[] = {
73#define SD_BRIGHTNESS 0
74 { 73 {
75 { 74 {
76 .id = V4L2_CID_BRIGHTNESS, 75 .id = V4L2_CID_BRIGHTNESS,
77 .type = V4L2_CTRL_TYPE_INTEGER, 76 .type = V4L2_CTRL_TYPE_INTEGER,
78 .name = "Brightness", 77 .name = "Brightness",
79 .minimum = 0, 78 .minimum = 0,
80 .maximum = 0xff, 79 .maximum = 255,
81 .step = 1, 80 .step = 1,
82 .default_value = 0x7f, 81#define BRIGHTNESS_DEF 127
82 .default_value = BRIGHTNESS_DEF,
83 }, 83 },
84 .set = sd_setbrightness, 84 .set = sd_setbrightness,
85 .get = sd_getbrightness, 85 .get = sd_getbrightness,
86 }, 86 },
87#define SD_CONTRAST 1
88 { 87 {
89 { 88 {
90 .id = V4L2_CID_CONTRAST, 89 .id = V4L2_CID_CONTRAST,
91 .type = V4L2_CTRL_TYPE_INTEGER, 90 .type = V4L2_CTRL_TYPE_INTEGER,
92 .name = "Contrast", 91 .name = "Contrast",
93 .minimum = 0, 92 .minimum = 0,
94 .maximum = 255, 93 .maximum = 63,
95 .step = 1, 94 .step = 1,
96 .default_value = 127, 95#define CONTRAST_DEF 31
96 .default_value = CONTRAST_DEF,
97 }, 97 },
98 .set = sd_setcontrast, 98 .set = sd_setcontrast,
99 .get = sd_getcontrast, 99 .get = sd_getcontrast,
100 }, 100 },
101#define SD_COLOR 2
102 { 101 {
103 { 102 {
104 .id = V4L2_CID_SATURATION, 103 .id = V4L2_CID_SATURATION,
105 .type = V4L2_CTRL_TYPE_INTEGER, 104 .type = V4L2_CTRL_TYPE_INTEGER,
106 .name = "Color", 105 .name = "Color",
107 .minimum = 0, 106 .minimum = 0,
108 .maximum = 255, 107 .maximum = 63,
109 .step = 1, 108 .step = 1,
110 .default_value = 127, 109#define COLOR_DEF 31
110 .default_value = COLOR_DEF,
111 }, 111 },
112 .set = sd_setcolors, 112 .set = sd_setcolors,
113 .get = sd_getcolors, 113 .get = sd_getcolors,
@@ -139,7 +139,7 @@ static struct cam_mode sif_mode[] = {
139#define SPCA500_OFFSET_DATA 16 139#define SPCA500_OFFSET_DATA 16
140 140
141 141
142static __u16 spca500_visual_defaults[][3] = { 142static const __u16 spca500_visual_defaults[][3] = {
143 {0x00, 0x0003, 0x816b}, /* SSI not active sync with vsync, 143 {0x00, 0x0003, 0x816b}, /* SSI not active sync with vsync,
144 * hue (H byte) = 0, 144 * hue (H byte) = 0,
145 * saturation/hue enable, 145 * saturation/hue enable,
@@ -161,10 +161,9 @@ static __u16 spca500_visual_defaults[][3] = {
161 {0x00, 0x0001, 0x8202}, /* clock rate compensation = 1/25 sec/frame */ 161 {0x00, 0x0001, 0x8202}, /* clock rate compensation = 1/25 sec/frame */
162 {0x0c, 0x0004, 0x0000}, 162 {0x0c, 0x0004, 0x0000},
163 /* set interface */ 163 /* set interface */
164 164 {}
165 {0, 0, 0}
166}; 165};
167static __u16 Clicksmart510_defaults[][3] = { 166static const __u16 Clicksmart510_defaults[][3] = {
168 {0x00, 0x00, 0x8211}, 167 {0x00, 0x00, 0x8211},
169 {0x00, 0x01, 0x82c0}, 168 {0x00, 0x01, 0x82c0},
170 {0x00, 0x10, 0x82cb}, 169 {0x00, 0x10, 0x82cb},
@@ -293,7 +292,7 @@ static __u16 Clicksmart510_defaults[][3] = {
293 {} 292 {}
294}; 293};
295 294
296static unsigned char qtable_creative_pccam[2][64] = { 295static const __u8 qtable_creative_pccam[2][64] = {
297 { /* Q-table Y-components */ 296 { /* Q-table Y-components */
298 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12, 297 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12,
299 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11, 298 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11,
@@ -314,7 +313,7 @@ static unsigned char qtable_creative_pccam[2][64] = {
314 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e} 313 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e}
315}; 314};
316 315
317static unsigned char qtable_kodak_ez200[2][64] = { 316static const __u8 qtable_kodak_ez200[2][64] = {
318 { /* Q-table Y-components */ 317 { /* Q-table Y-components */
319 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x05, 0x06, 318 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x05, 0x06,
320 0x01, 0x01, 0x01, 0x02, 0x03, 0x06, 0x06, 0x06, 319 0x01, 0x01, 0x01, 0x02, 0x03, 0x06, 0x06, 0x06,
@@ -335,7 +334,7 @@ static unsigned char qtable_kodak_ez200[2][64] = {
335 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a} 334 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a}
336}; 335};
337 336
338static unsigned char qtable_pocketdv[2][64] = { 337static const __u8 qtable_pocketdv[2][64] = {
339 { /* Q-table Y-components start registers 0x8800 */ 338 { /* Q-table Y-components start registers 0x8800 */
340 0x06, 0x04, 0x04, 0x06, 0x0a, 0x10, 0x14, 0x18, 339 0x06, 0x04, 0x04, 0x06, 0x0a, 0x10, 0x14, 0x18,
341 0x05, 0x05, 0x06, 0x08, 0x0a, 0x17, 0x18, 0x16, 340 0x05, 0x05, 0x06, 0x08, 0x0a, 0x17, 0x18, 0x16,
@@ -357,7 +356,7 @@ static unsigned char qtable_pocketdv[2][64] = {
357 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28} 356 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28}
358}; 357};
359 358
360static void spca5xxRegRead(struct usb_device *dev, 359static void reg_r(struct usb_device *dev,
361 __u16 index, 360 __u16 index,
362 __u8 *buffer, __u16 length) 361 __u8 *buffer, __u16 length)
363{ 362{
@@ -369,25 +368,24 @@ static void spca5xxRegRead(struct usb_device *dev,
369 index, buffer, length, 500); 368 index, buffer, length, 500);
370} 369}
371 370
372static int reg_write(struct usb_device *dev, 371static int reg_w(struct usb_device *dev,
373 __u16 req, __u16 index, __u16 value) 372 __u16 req, __u16 index, __u16 value)
374{ 373{
375 int ret; 374 int ret;
376 375
376 PDEBUG(D_USBO, "reg write: [0x%02x] = 0x%02x", index, value);
377 ret = usb_control_msg(dev, 377 ret = usb_control_msg(dev,
378 usb_sndctrlpipe(dev, 0), 378 usb_sndctrlpipe(dev, 0),
379 req, 379 req,
380 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 380 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
381 value, index, NULL, 0, 500); 381 value, index, NULL, 0, 500);
382 PDEBUG(D_USBO, "reg write: [0x%02x] = 0x%02x, 0x%x",
383 index, value, ret);
384 if (ret < 0) 382 if (ret < 0)
385 PDEBUG(D_ERR, "reg write: error %d", ret); 383 PDEBUG(D_ERR, "reg write: error %d", ret);
386 return ret; 384 return ret;
387} 385}
388 386
389/* returns: negative is error, pos or zero is data */ 387/* returns: negative is error, pos or zero is data */
390static int reg_read(struct usb_device *dev, 388static int reg_r_12(struct usb_device *dev,
391 __u16 req, /* bRequest */ 389 __u16 req, /* bRequest */
392 __u16 index, /* wIndex */ 390 __u16 index, /* wIndex */
393 __u16 length) /* wLength (1 or 2 only) */ 391 __u16 length) /* wLength (1 or 2 only) */
@@ -405,7 +403,7 @@ static int reg_read(struct usb_device *dev,
405 buf, length, 403 buf, length,
406 500); /* timeout */ 404 500); /* timeout */
407 if (ret < 0) { 405 if (ret < 0) {
408 PDEBUG(D_ERR, "reg_read err %d", ret); 406 PDEBUG(D_ERR, "reg_r_12 err %d", ret);
409 return -1; 407 return -1;
410 } 408 }
411 return (buf[1] << 8) + buf[0]; 409 return (buf[1] << 8) + buf[0];
@@ -416,13 +414,13 @@ static int reg_read(struct usb_device *dev,
416 * a reg_read call. 414 * a reg_read call.
417 * Returns: negative is error or timeout, zero is success. 415 * Returns: negative is error or timeout, zero is success.
418 */ 416 */
419static int reg_readwait(struct usb_device *dev, 417static int reg_r_wait(struct usb_device *dev,
420 __u16 reg, __u16 index, __u16 value) 418 __u16 reg, __u16 index, __u16 value)
421{ 419{
422 int ret, cnt = 20; 420 int ret, cnt = 20;
423 421
424 while (--cnt > 0) { 422 while (--cnt > 0) {
425 ret = reg_read(dev, reg, index, 1); 423 ret = reg_r_12(dev, reg, index, 1);
426 if (ret == value) 424 if (ret == value)
427 return 0; 425 return 0;
428 msleep(50); 426 msleep(50);
@@ -431,13 +429,13 @@ static int reg_readwait(struct usb_device *dev,
431} 429}
432 430
433static int write_vector(struct gspca_dev *gspca_dev, 431static int write_vector(struct gspca_dev *gspca_dev,
434 __u16 data[][3]) 432 const __u16 data[][3])
435{ 433{
436 struct usb_device *dev = gspca_dev->dev; 434 struct usb_device *dev = gspca_dev->dev;
437 int ret, i = 0; 435 int ret, i = 0;
438 436
439 while (data[i][0] != 0 || data[i][1] != 0 || data[i][2] != 0) { 437 while (data[i][0] != 0 || data[i][1] != 0 || data[i][2] != 0) {
440 ret = reg_write(dev, data[i][0], data[i][2], data[i][1]); 438 ret = reg_w(dev, data[i][0], data[i][2], data[i][1]);
441 if (ret < 0) 439 if (ret < 0)
442 return ret; 440 return ret;
443 i++; 441 i++;
@@ -449,21 +447,21 @@ static int spca50x_setup_qtable(struct gspca_dev *gspca_dev,
449 unsigned int request, 447 unsigned int request,
450 unsigned int ybase, 448 unsigned int ybase,
451 unsigned int cbase, 449 unsigned int cbase,
452 unsigned char qtable[2][64]) 450 const __u8 qtable[2][64])
453{ 451{
454 struct usb_device *dev = gspca_dev->dev; 452 struct usb_device *dev = gspca_dev->dev;
455 int i, err; 453 int i, err;
456 454
457 /* loop over y components */ 455 /* loop over y components */
458 for (i = 0; i < 64; i++) { 456 for (i = 0; i < 64; i++) {
459 err = reg_write(dev, request, ybase + i, qtable[0][i]); 457 err = reg_w(dev, request, ybase + i, qtable[0][i]);
460 if (err < 0) 458 if (err < 0)
461 return err; 459 return err;
462 } 460 }
463 461
464 /* loop over c components */ 462 /* loop over c components */
465 for (i = 0; i < 64; i++) { 463 for (i = 0; i < 64; i++) {
466 err = reg_write(dev, request, cbase + i, qtable[1][i]); 464 err = reg_w(dev, request, cbase + i, qtable[1][i]);
467 if (err < 0) 465 if (err < 0)
468 return err; 466 return err;
469 } 467 }
@@ -474,8 +472,8 @@ static void spca500_ping310(struct gspca_dev *gspca_dev)
474{ 472{
475 __u8 Data[2]; 473 __u8 Data[2];
476 474
477 spca5xxRegRead(gspca_dev->dev, 0x0d04, Data, 2); 475 reg_r(gspca_dev->dev, 0x0d04, Data, 2);
478 PDEBUG(D_PACK, "ClickSmart310 ping 0x0d04 0x%02x 0x%02x", 476 PDEBUG(D_STREAM, "ClickSmart310 ping 0x0d04 0x%02x 0x%02x",
479 Data[0], Data[1]); 477 Data[0], Data[1]);
480} 478}
481 479
@@ -483,26 +481,26 @@ static void spca500_clksmart310_init(struct gspca_dev *gspca_dev)
483{ 481{
484 __u8 Data[2]; 482 __u8 Data[2];
485 483
486 spca5xxRegRead(gspca_dev->dev, 0x0d05, Data, 2); 484 reg_r(gspca_dev->dev, 0x0d05, Data, 2);
487 PDEBUG(D_PACK, "ClickSmart310 init 0x0d05 0x%02x 0x%02x", Data[0], 485 PDEBUG(D_STREAM, "ClickSmart310 init 0x0d05 0x%02x 0x%02x",
488 Data[1]); 486 Data[0], Data[1]);
489 reg_write(gspca_dev->dev, 0x00, 0x8167, 0x5a); 487 reg_w(gspca_dev->dev, 0x00, 0x8167, 0x5a);
490 spca500_ping310(gspca_dev); 488 spca500_ping310(gspca_dev);
491 489
492 reg_write(gspca_dev->dev, 0x00, 0x8168, 0x22); 490 reg_w(gspca_dev->dev, 0x00, 0x8168, 0x22);
493 reg_write(gspca_dev->dev, 0x00, 0x816a, 0xc0); 491 reg_w(gspca_dev->dev, 0x00, 0x816a, 0xc0);
494 reg_write(gspca_dev->dev, 0x00, 0x816b, 0x0b); 492 reg_w(gspca_dev->dev, 0x00, 0x816b, 0x0b);
495 reg_write(gspca_dev->dev, 0x00, 0x8169, 0x25); 493 reg_w(gspca_dev->dev, 0x00, 0x8169, 0x25);
496 reg_write(gspca_dev->dev, 0x00, 0x8157, 0x5b); 494 reg_w(gspca_dev->dev, 0x00, 0x8157, 0x5b);
497 reg_write(gspca_dev->dev, 0x00, 0x8158, 0x5b); 495 reg_w(gspca_dev->dev, 0x00, 0x8158, 0x5b);
498 reg_write(gspca_dev->dev, 0x00, 0x813f, 0x03); 496 reg_w(gspca_dev->dev, 0x00, 0x813f, 0x03);
499 reg_write(gspca_dev->dev, 0x00, 0x8151, 0x4a); 497 reg_w(gspca_dev->dev, 0x00, 0x8151, 0x4a);
500 reg_write(gspca_dev->dev, 0x00, 0x8153, 0x78); 498 reg_w(gspca_dev->dev, 0x00, 0x8153, 0x78);
501 reg_write(gspca_dev->dev, 0x00, 0x0d01, 0x04); 499 reg_w(gspca_dev->dev, 0x00, 0x0d01, 0x04);
502 /* 00 for adjust shutter */ 500 /* 00 for adjust shutter */
503 reg_write(gspca_dev->dev, 0x00, 0x0d02, 0x01); 501 reg_w(gspca_dev->dev, 0x00, 0x0d02, 0x01);
504 reg_write(gspca_dev->dev, 0x00, 0x8169, 0x25); 502 reg_w(gspca_dev->dev, 0x00, 0x8169, 0x25);
505 reg_write(gspca_dev->dev, 0x00, 0x0d01, 0x02); 503 reg_w(gspca_dev->dev, 0x00, 0x0d01, 0x02);
506} 504}
507 505
508static void spca500_setmode(struct gspca_dev *gspca_dev, 506static void spca500_setmode(struct gspca_dev *gspca_dev,
@@ -511,14 +509,14 @@ static void spca500_setmode(struct gspca_dev *gspca_dev,
511 int mode; 509 int mode;
512 510
513 /* set x multiplier */ 511 /* set x multiplier */
514 reg_write(gspca_dev->dev, 0, 0x8001, xmult); 512 reg_w(gspca_dev->dev, 0, 0x8001, xmult);
515 513
516 /* set y multiplier */ 514 /* set y multiplier */
517 reg_write(gspca_dev->dev, 0, 0x8002, ymult); 515 reg_w(gspca_dev->dev, 0, 0x8002, ymult);
518 516
519 /* use compressed mode, VGA, with mode specific subsample */ 517 /* use compressed mode, VGA, with mode specific subsample */
520 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode; 518 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode;
521 reg_write(gspca_dev->dev, 0, 0x8003, mode << 4); 519 reg_w(gspca_dev->dev, 0, 0x8003, mode << 4);
522} 520}
523 521
524static int spca500_full_reset(struct gspca_dev *gspca_dev) 522static int spca500_full_reset(struct gspca_dev *gspca_dev)
@@ -526,20 +524,20 @@ static int spca500_full_reset(struct gspca_dev *gspca_dev)
526 int err; 524 int err;
527 525
528 /* send the reset command */ 526 /* send the reset command */
529 err = reg_write(gspca_dev->dev, 0xe0, 0x0001, 0x0000); 527 err = reg_w(gspca_dev->dev, 0xe0, 0x0001, 0x0000);
530 if (err < 0) 528 if (err < 0)
531 return err; 529 return err;
532 530
533 /* wait for the reset to complete */ 531 /* wait for the reset to complete */
534 err = reg_readwait(gspca_dev->dev, 0x06, 0x0000, 0x0000); 532 err = reg_r_wait(gspca_dev->dev, 0x06, 0x0000, 0x0000);
535 if (err < 0) 533 if (err < 0)
536 return err; 534 return err;
537 err = reg_write(gspca_dev->dev, 0xe0, 0x0000, 0x0000); 535 err = reg_w(gspca_dev->dev, 0xe0, 0x0000, 0x0000);
538 if (err < 0) 536 if (err < 0)
539 return err; 537 return err;
540 err = reg_readwait(gspca_dev->dev, 0x06, 0, 0); 538 err = reg_r_wait(gspca_dev->dev, 0x06, 0, 0);
541 if (err < 0) { 539 if (err < 0) {
542 PDEBUG(D_ERR, "reg_readwait() failed"); 540 PDEBUG(D_ERR, "reg_r_wait() failed");
543 return err; 541 return err;
544 } 542 }
545 /* all ok */ 543 /* all ok */
@@ -562,7 +560,7 @@ static int spca500_synch310(struct gspca_dev *gspca_dev)
562 } 560 }
563 spca500_ping310(gspca_dev); 561 spca500_ping310(gspca_dev);
564 562
565 spca5xxRegRead(gspca_dev->dev, 0x0d00, &Data, 1); 563 reg_r(gspca_dev->dev, 0x0d00, &Data, 1);
566 564
567 /* need alt setting here */ 565 /* need alt setting here */
568 PDEBUG(D_PACK, "ClickSmart310 sync alt: %d", gspca_dev->alt); 566 PDEBUG(D_PACK, "ClickSmart310 sync alt: %d", gspca_dev->alt);
@@ -586,12 +584,12 @@ static void spca500_reinit(struct gspca_dev *gspca_dev)
586 584
587 /* some unknow command from Aiptek pocket dv and family300 */ 585 /* some unknow command from Aiptek pocket dv and family300 */
588 586
589 reg_write(gspca_dev->dev, 0x00, 0x0d01, 0x01); 587 reg_w(gspca_dev->dev, 0x00, 0x0d01, 0x01);
590 reg_write(gspca_dev->dev, 0x00, 0x0d03, 0x00); 588 reg_w(gspca_dev->dev, 0x00, 0x0d03, 0x00);
591 reg_write(gspca_dev->dev, 0x00, 0x0d02, 0x01); 589 reg_w(gspca_dev->dev, 0x00, 0x0d02, 0x01);
592 590
593 /* enable drop packet */ 591 /* enable drop packet */
594 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 592 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
595 593
596 err = spca50x_setup_qtable(gspca_dev, 0x00, 0x8800, 0x8840, 594 err = spca50x_setup_qtable(gspca_dev, 0x00, 0x8800, 0x8840,
597 qtable_pocketdv); 595 qtable_pocketdv);
@@ -599,22 +597,22 @@ static void spca500_reinit(struct gspca_dev *gspca_dev)
599 PDEBUG(D_ERR|D_STREAM, "spca50x_setup_qtable failed on init"); 597 PDEBUG(D_ERR|D_STREAM, "spca50x_setup_qtable failed on init");
600 598
601 /* set qtable index */ 599 /* set qtable index */
602 reg_write(gspca_dev->dev, 0x00, 0x8880, 2); 600 reg_w(gspca_dev->dev, 0x00, 0x8880, 2);
603 /* family cam Quicksmart stuff */ 601 /* family cam Quicksmart stuff */
604 reg_write(gspca_dev->dev, 0x00, 0x800a, 0x00); 602 reg_w(gspca_dev->dev, 0x00, 0x800a, 0x00);
605 /* Set agc transfer: synced inbetween frames */ 603 /* Set agc transfer: synced inbetween frames */
606 reg_write(gspca_dev->dev, 0x00, 0x820f, 0x01); 604 reg_w(gspca_dev->dev, 0x00, 0x820f, 0x01);
607 /* Init SDRAM - needed for SDRAM access */ 605 /* Init SDRAM - needed for SDRAM access */
608 reg_write(gspca_dev->dev, 0x00, 0x870a, 0x04); 606 reg_w(gspca_dev->dev, 0x00, 0x870a, 0x04);
609 /*Start init sequence or stream */ 607 /*Start init sequence or stream */
610 608
611 reg_write(gspca_dev->dev, 0, 0x8003, 0x00); 609 reg_w(gspca_dev->dev, 0, 0x8003, 0x00);
612 /* switch to video camera mode */ 610 /* switch to video camera mode */
613 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 611 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
614 msleep(2000); 612 msleep(2000);
615 if (reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44) != 0) 613 if (reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44) != 0)
616 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 614 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
617 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 615 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
618} 616}
619 617
620/* this function is called at probe time */ 618/* this function is called at probe time */
@@ -734,9 +732,9 @@ static int sd_config(struct gspca_dev *gspca_dev,
734 cam->nmodes = sizeof sif_mode / sizeof sif_mode[0]; 732 cam->nmodes = sizeof sif_mode / sizeof sif_mode[0];
735 } 733 }
736 sd->qindex = 5; 734 sd->qindex = 5;
737 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 735 sd->brightness = BRIGHTNESS_DEF;
738 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 736 sd->contrast = CONTRAST_DEF;
739 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 737 sd->colors = COLOR_DEF;
740 return 0; 738 return 0;
741} 739}
742 740
@@ -771,7 +769,7 @@ static void sd_start(struct gspca_dev *gspca_dev)
771 } 769 }
772 770
773 /* is there a sensor here ? */ 771 /* is there a sensor here ? */
774 spca5xxRegRead(gspca_dev->dev, 0x8a04, &Data, 1); 772 reg_r(gspca_dev->dev, 0x8a04, &Data, 1);
775 PDEBUG(D_STREAM, "Spca500 Sensor Address 0x%02X", Data); 773 PDEBUG(D_STREAM, "Spca500 Sensor Address 0x%02X", Data);
776 PDEBUG(D_STREAM, "Spca500 curr_mode: %d Xmult: 0x%02X, Ymult: 0x%02X", 774 PDEBUG(D_STREAM, "Spca500 curr_mode: %d Xmult: 0x%02X, Ymult: 0x%02X",
777 gspca_dev->curr_mode, xmult, ymult); 775 gspca_dev->curr_mode, xmult, ymult);
@@ -782,33 +780,33 @@ static void sd_start(struct gspca_dev *gspca_dev)
782 spca500_setmode(gspca_dev, xmult, ymult); 780 spca500_setmode(gspca_dev, xmult, ymult);
783 781
784 /* enable drop packet */ 782 /* enable drop packet */
785 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 783 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
786 reg_write(gspca_dev->dev, 0x00, 0x8880, 3); 784 reg_w(gspca_dev->dev, 0x00, 0x8880, 3);
787 err = spca50x_setup_qtable(gspca_dev, 785 err = spca50x_setup_qtable(gspca_dev,
788 0x00, 0x8800, 0x8840, 786 0x00, 0x8800, 0x8840,
789 qtable_creative_pccam); 787 qtable_creative_pccam);
790 if (err < 0) 788 if (err < 0)
791 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 789 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
792 /* Init SDRAM - needed for SDRAM access */ 790 /* Init SDRAM - needed for SDRAM access */
793 reg_write(gspca_dev->dev, 0x00, 0x870a, 0x04); 791 reg_w(gspca_dev->dev, 0x00, 0x870a, 0x04);
794 792
795 /* switch to video camera mode */ 793 /* switch to video camera mode */
796 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 794 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
797 msleep(500); 795 msleep(500);
798 if (reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44) != 0) 796 if (reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44) != 0)
799 PDEBUG(D_ERR, "reg_readwait() failed"); 797 PDEBUG(D_ERR, "reg_r_wait() failed");
800 798
801 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 799 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
802 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 800 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
803 801
804 spca500_synch310(gspca_dev); 802 spca500_synch310(gspca_dev);
805 803
806 write_vector(gspca_dev, spca500_visual_defaults); 804 write_vector(gspca_dev, spca500_visual_defaults);
807 spca500_setmode(gspca_dev, xmult, ymult); 805 spca500_setmode(gspca_dev, xmult, ymult);
808 /* enable drop packet */ 806 /* enable drop packet */
809 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 807 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
810 PDEBUG(D_ERR, "failed to enable drop packet"); 808 PDEBUG(D_ERR, "failed to enable drop packet");
811 reg_write(gspca_dev->dev, 0x00, 0x8880, 3); 809 reg_w(gspca_dev->dev, 0x00, 0x8880, 3);
812 err = spca50x_setup_qtable(gspca_dev, 810 err = spca50x_setup_qtable(gspca_dev,
813 0x00, 0x8800, 0x8840, 811 0x00, 0x8800, 0x8840,
814 qtable_creative_pccam); 812 qtable_creative_pccam);
@@ -816,16 +814,16 @@ static void sd_start(struct gspca_dev *gspca_dev)
816 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 814 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
817 815
818 /* Init SDRAM - needed for SDRAM access */ 816 /* Init SDRAM - needed for SDRAM access */
819 reg_write(gspca_dev->dev, 0x00, 0x870a, 0x04); 817 reg_w(gspca_dev->dev, 0x00, 0x870a, 0x04);
820 818
821 /* switch to video camera mode */ 819 /* switch to video camera mode */
822 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 820 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
823 821
824 if (reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44) != 0) 822 if (reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44) != 0)
825 PDEBUG(D_ERR, "reg_readwait() failed"); 823 PDEBUG(D_ERR, "reg_r_wait() failed");
826 824
827 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 825 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
828 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 826 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
829 break; 827 break;
830 case CreativePCCam300: /* Creative PC-CAM 300 640x480 CCD */ 828 case CreativePCCam300: /* Creative PC-CAM 300 640x480 CCD */
831 case IntelPocketPCCamera: /* FIXME: Temporary fix for 829 case IntelPocketPCCamera: /* FIXME: Temporary fix for
@@ -838,10 +836,10 @@ static void sd_start(struct gspca_dev *gspca_dev)
838 PDEBUG(D_ERR, "spca500_full_reset failed"); 836 PDEBUG(D_ERR, "spca500_full_reset failed");
839 837
840 /* enable drop packet */ 838 /* enable drop packet */
841 err = reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 839 err = reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
842 if (err < 0) 840 if (err < 0)
843 PDEBUG(D_ERR, "failed to enable drop packet"); 841 PDEBUG(D_ERR, "failed to enable drop packet");
844 reg_write(gspca_dev->dev, 0x00, 0x8880, 3); 842 reg_w(gspca_dev->dev, 0x00, 0x8880, 3);
845 err = spca50x_setup_qtable(gspca_dev, 843 err = spca50x_setup_qtable(gspca_dev,
846 0x00, 0x8800, 0x8840, 844 0x00, 0x8800, 0x8840,
847 qtable_creative_pccam); 845 qtable_creative_pccam);
@@ -849,18 +847,18 @@ static void sd_start(struct gspca_dev *gspca_dev)
849 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 847 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
850 848
851 spca500_setmode(gspca_dev, xmult, ymult); 849 spca500_setmode(gspca_dev, xmult, ymult);
852 reg_write(gspca_dev->dev, 0x20, 0x0001, 0x0004); 850 reg_w(gspca_dev->dev, 0x20, 0x0001, 0x0004);
853 851
854 /* switch to video camera mode */ 852 /* switch to video camera mode */
855 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 853 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
856 854
857 if (reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44) != 0) 855 if (reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44) != 0)
858 PDEBUG(D_ERR, "reg_readwait() failed"); 856 PDEBUG(D_ERR, "reg_r_wait() failed");
859 857
860 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 858 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
861 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 859 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
862 860
863 /* write_vector(gspca_dev, spca500_visual_defaults); */ 861/* write_vector(gspca_dev, spca500_visual_defaults); */
864 break; 862 break;
865 case KodakEZ200: /* Kodak EZ200 */ 863 case KodakEZ200: /* Kodak EZ200 */
866 864
@@ -869,8 +867,8 @@ static void sd_start(struct gspca_dev *gspca_dev)
869 if (err < 0) 867 if (err < 0)
870 PDEBUG(D_ERR, "spca500_full_reset failed"); 868 PDEBUG(D_ERR, "spca500_full_reset failed");
871 /* enable drop packet */ 869 /* enable drop packet */
872 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 870 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
873 reg_write(gspca_dev->dev, 0x00, 0x8880, 0); 871 reg_w(gspca_dev->dev, 0x00, 0x8880, 0);
874 err = spca50x_setup_qtable(gspca_dev, 872 err = spca50x_setup_qtable(gspca_dev,
875 0x00, 0x8800, 0x8840, 873 0x00, 0x8800, 0x8840,
876 qtable_kodak_ez200); 874 qtable_kodak_ez200);
@@ -878,18 +876,18 @@ static void sd_start(struct gspca_dev *gspca_dev)
878 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 876 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
879 spca500_setmode(gspca_dev, xmult, ymult); 877 spca500_setmode(gspca_dev, xmult, ymult);
880 878
881 reg_write(gspca_dev->dev, 0x20, 0x0001, 0x0004); 879 reg_w(gspca_dev->dev, 0x20, 0x0001, 0x0004);
882 880
883 /* switch to video camera mode */ 881 /* switch to video camera mode */
884 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 882 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
885 883
886 if (reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44) != 0) 884 if (reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44) != 0)
887 PDEBUG(D_ERR, "reg_readwait() failed"); 885 PDEBUG(D_ERR, "reg_r_wait() failed");
888 886
889 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 887 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
890 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 888 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
891 889
892 /* write_vector(gspca_dev, spca500_visual_defaults); */ 890/* write_vector(gspca_dev, spca500_visual_defaults); */
893 break; 891 break;
894 892
895 case BenqDC1016: 893 case BenqDC1016:
@@ -902,56 +900,56 @@ static void sd_start(struct gspca_dev *gspca_dev)
902 case ToptroIndus: 900 case ToptroIndus:
903 case AgfaCl20: 901 case AgfaCl20:
904 spca500_reinit(gspca_dev); 902 spca500_reinit(gspca_dev);
905 reg_write(gspca_dev->dev, 0x00, 0x0d01, 0x01); 903 reg_w(gspca_dev->dev, 0x00, 0x0d01, 0x01);
906 /* enable drop packet */ 904 /* enable drop packet */
907 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 905 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
908 906
909 err = spca50x_setup_qtable(gspca_dev, 907 err = spca50x_setup_qtable(gspca_dev,
910 0x00, 0x8800, 0x8840, qtable_pocketdv); 908 0x00, 0x8800, 0x8840, qtable_pocketdv);
911 if (err < 0) 909 if (err < 0)
912 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 910 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
913 reg_write(gspca_dev->dev, 0x00, 0x8880, 2); 911 reg_w(gspca_dev->dev, 0x00, 0x8880, 2);
914 912
915 /* familycam Quicksmart pocketDV stuff */ 913 /* familycam Quicksmart pocketDV stuff */
916 reg_write(gspca_dev->dev, 0x00, 0x800a, 0x00); 914 reg_w(gspca_dev->dev, 0x00, 0x800a, 0x00);
917 /* Set agc transfer: synced inbetween frames */ 915 /* Set agc transfer: synced inbetween frames */
918 reg_write(gspca_dev->dev, 0x00, 0x820f, 0x01); 916 reg_w(gspca_dev->dev, 0x00, 0x820f, 0x01);
919 /* Init SDRAM - needed for SDRAM access */ 917 /* Init SDRAM - needed for SDRAM access */
920 reg_write(gspca_dev->dev, 0x00, 0x870a, 0x04); 918 reg_w(gspca_dev->dev, 0x00, 0x870a, 0x04);
921 919
922 spca500_setmode(gspca_dev, xmult, ymult); 920 spca500_setmode(gspca_dev, xmult, ymult);
923 /* switch to video camera mode */ 921 /* switch to video camera mode */
924 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 922 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
925 923
926 reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44); 924 reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44);
927 925
928 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 926 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
929 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 927 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
930 break; 928 break;
931 case LogitechTraveler: 929 case LogitechTraveler:
932 case LogitechClickSmart510: 930 case LogitechClickSmart510:
933 reg_write(gspca_dev->dev, 0x02, 0x00, 0x00); 931 reg_w(gspca_dev->dev, 0x02, 0x00, 0x00);
934 /* enable drop packet */ 932 /* enable drop packet */
935 reg_write(gspca_dev->dev, 0x00, 0x850a, 0x0001); 933 reg_w(gspca_dev->dev, 0x00, 0x850a, 0x0001);
936 934
937 err = spca50x_setup_qtable(gspca_dev, 935 err = spca50x_setup_qtable(gspca_dev,
938 0x00, 0x8800, 936 0x00, 0x8800,
939 0x8840, qtable_creative_pccam); 937 0x8840, qtable_creative_pccam);
940 if (err < 0) 938 if (err < 0)
941 PDEBUG(D_ERR, "spca50x_setup_qtable failed"); 939 PDEBUG(D_ERR, "spca50x_setup_qtable failed");
942 reg_write(gspca_dev->dev, 0x00, 0x8880, 3); 940 reg_w(gspca_dev->dev, 0x00, 0x8880, 3);
943 reg_write(gspca_dev->dev, 0x00, 0x800a, 0x00); 941 reg_w(gspca_dev->dev, 0x00, 0x800a, 0x00);
944 /* Init SDRAM - needed for SDRAM access */ 942 /* Init SDRAM - needed for SDRAM access */
945 reg_write(gspca_dev->dev, 0x00, 0x870a, 0x04); 943 reg_w(gspca_dev->dev, 0x00, 0x870a, 0x04);
946 944
947 spca500_setmode(gspca_dev, xmult, ymult); 945 spca500_setmode(gspca_dev, xmult, ymult);
948 946
949 /* switch to video camera mode */ 947 /* switch to video camera mode */
950 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 948 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
951 reg_readwait(gspca_dev->dev, 0, 0x8000, 0x44); 949 reg_r_wait(gspca_dev->dev, 0, 0x8000, 0x44);
952 950
953 spca5xxRegRead(gspca_dev->dev, 0x816b, &Data, 1); 951 reg_r(gspca_dev->dev, 0x816b, &Data, 1);
954 reg_write(gspca_dev->dev, 0x00, 0x816b, Data); 952 reg_w(gspca_dev->dev, 0x00, 0x816b, Data);
955 write_vector(gspca_dev, Clicksmart510_defaults); 953 write_vector(gspca_dev, Clicksmart510_defaults);
956 break; 954 break;
957 } 955 }
@@ -959,13 +957,13 @@ static void sd_start(struct gspca_dev *gspca_dev)
959 957
960static void sd_stopN(struct gspca_dev *gspca_dev) 958static void sd_stopN(struct gspca_dev *gspca_dev)
961{ 959{
962 __u8 data = 0; 960 __u8 data;
963 961
964 reg_write(gspca_dev->dev, 0, 0x8003, 0x00); 962 reg_w(gspca_dev->dev, 0, 0x8003, 0x00);
965 963
966 /* switch to video camera mode */ 964 /* switch to video camera mode */
967 reg_write(gspca_dev->dev, 0x00, 0x8000, 0x0004); 965 reg_w(gspca_dev->dev, 0x00, 0x8000, 0x0004);
968 spca5xxRegRead(gspca_dev->dev, 0x8000, &data, 1); 966 reg_r(gspca_dev->dev, 0x8000, &data, 1);
969 PDEBUG(D_STREAM, "stop SPCA500 done reg8000: 0x%2x", data); 967 PDEBUG(D_STREAM, "stop SPCA500 done reg8000: 0x%2x", data);
970} 968}
971 969
@@ -979,13 +977,13 @@ static void sd_close(struct gspca_dev *gspca_dev)
979 977
980static void sd_pkt_scan(struct gspca_dev *gspca_dev, 978static void sd_pkt_scan(struct gspca_dev *gspca_dev,
981 struct gspca_frame *frame, /* target */ 979 struct gspca_frame *frame, /* target */
982 unsigned char *data, /* isoc packet */ 980 __u8 *data, /* isoc packet */
983 int len) /* iso packet length */ 981 int len) /* iso packet length */
984{ 982{
985 struct sd *sd = (struct sd *) gspca_dev; 983 struct sd *sd = (struct sd *) gspca_dev;
986 int i; 984 int i;
987 unsigned char *s, *d; 985 __u8 *s, *d;
988 static unsigned char ffd9[] = {0xff, 0xd9}; 986 static __u8 ffd9[] = {0xff, 0xd9};
989 987
990/* frames are jpeg 4.1.1 without 0xff escape */ 988/* frames are jpeg 4.1.1 without 0xff escape */
991 if (data[0] == 0xff) { 989 if (data[0] == 0xff) {
@@ -997,9 +995,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
997 ffd9, 2); 995 ffd9, 2);
998 996
999 /* put the JPEG header in the new frame */ 997 /* put the JPEG header in the new frame */
1000 jpeg_put_header(gspca_dev, frame, 998 jpeg_put_header(gspca_dev, frame, sd->qindex, 0x22);
1001 ((struct sd *) gspca_dev)->qindex,
1002 0x22);
1003 999
1004 data += SPCA500_OFFSET_DATA; 1000 data += SPCA500_OFFSET_DATA;
1005 len -= SPCA500_OFFSET_DATA; 1001 len -= SPCA500_OFFSET_DATA;
@@ -1031,43 +1027,52 @@ static void setbrightness(struct gspca_dev *gspca_dev)
1031{ 1027{
1032 struct sd *sd = (struct sd *) gspca_dev; 1028 struct sd *sd = (struct sd *) gspca_dev;
1033 1029
1034 reg_write(gspca_dev->dev, 0x00, 0x8167, 1030 reg_w(gspca_dev->dev, 0x00, 0x8167,
1035 (__u8) (sd->brightness - 128)); 1031 (__u8) (sd->brightness - 128));
1036} 1032}
1037 1033
1038static void getbrightness(struct gspca_dev *gspca_dev) 1034static void getbrightness(struct gspca_dev *gspca_dev)
1039{ 1035{
1040 struct sd *sd = (struct sd *) gspca_dev; 1036 struct sd *sd = (struct sd *) gspca_dev;
1037 int ret;
1041 1038
1042 sd->brightness = reg_read(gspca_dev->dev, 0x00, 0x8167, 1) + 128; 1039 ret = reg_r_12(gspca_dev->dev, 0x00, 0x8167, 1);
1040 if (ret >= 0)
1041 sd->brightness = ret + 128;
1043} 1042}
1044 1043
1045static void setcontrast(struct gspca_dev *gspca_dev) 1044static void setcontrast(struct gspca_dev *gspca_dev)
1046{ 1045{
1047 struct sd *sd = (struct sd *) gspca_dev; 1046 struct sd *sd = (struct sd *) gspca_dev;
1048 1047
1049 reg_write(gspca_dev->dev, 0x00, 0x8168, sd->contrast >> 2); 1048 reg_w(gspca_dev->dev, 0x00, 0x8168, sd->contrast);
1050} 1049}
1051 1050
1052static void getcontrast(struct gspca_dev *gspca_dev) 1051static void getcontrast(struct gspca_dev *gspca_dev)
1053{ 1052{
1054 struct sd *sd = (struct sd *) gspca_dev; 1053 struct sd *sd = (struct sd *) gspca_dev;
1054 int ret;
1055 1055
1056 sd->contrast = reg_read(gspca_dev->dev, 0x0, 0x8168, 1) << 2; 1056 ret = reg_r_12(gspca_dev->dev, 0x0, 0x8168, 1);
1057 if (ret >= 0)
1058 sd->contrast = ret;
1057} 1059}
1058 1060
1059static void setcolors(struct gspca_dev *gspca_dev) 1061static void setcolors(struct gspca_dev *gspca_dev)
1060{ 1062{
1061 struct sd *sd = (struct sd *) gspca_dev; 1063 struct sd *sd = (struct sd *) gspca_dev;
1062 1064
1063 reg_write(gspca_dev->dev, 0x00, 0x8169, sd->colors >> 2); 1065 reg_w(gspca_dev->dev, 0x00, 0x8169, sd->colors);
1064} 1066}
1065 1067
1066static void getcolors(struct gspca_dev *gspca_dev) 1068static void getcolors(struct gspca_dev *gspca_dev)
1067{ 1069{
1068 struct sd *sd = (struct sd *) gspca_dev; 1070 struct sd *sd = (struct sd *) gspca_dev;
1071 int ret;
1069 1072
1070 sd->colors = reg_read(gspca_dev->dev, 0x0, 0x8169, 1) << 2; 1073 ret = reg_r_12(gspca_dev->dev, 0x0, 0x8169, 1);
1074 if (ret >= 0)
1075 sd->colors = ret;
1071} 1076}
1072 1077
1073static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val) 1078static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
@@ -1131,7 +1136,7 @@ static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val)
1131static struct sd_desc sd_desc = { 1136static struct sd_desc sd_desc = {
1132 .name = MODULE_NAME, 1137 .name = MODULE_NAME,
1133 .ctrls = sd_ctrls, 1138 .ctrls = sd_ctrls,
1134 .nctrls = sizeof sd_ctrls / sizeof sd_ctrls[0], 1139 .nctrls = ARRAY_SIZE(sd_ctrls),
1135 .config = sd_config, 1140 .config = sd_config,
1136 .open = sd_open, 1141 .open = sd_open,
1137 .start = sd_start, 1142 .start = sd_start,
@@ -1143,7 +1148,7 @@ static struct sd_desc sd_desc = {
1143 1148
1144/* -- module initialisation -- */ 1149/* -- module initialisation -- */
1145#define DVNM(name) .driver_info = (kernel_ulong_t) name 1150#define DVNM(name) .driver_info = (kernel_ulong_t) name
1146static __devinitdata struct usb_device_id device_table[] = { 1151static const __devinitdata struct usb_device_id device_table[] = {
1147 {USB_DEVICE(0x040a, 0x0300), DVNM("Kodak EZ200")}, 1152 {USB_DEVICE(0x040a, 0x0300), DVNM("Kodak EZ200")},
1148 {USB_DEVICE(0x041e, 0x400a), DVNM("Creative PC-CAM 300")}, 1153 {USB_DEVICE(0x041e, 0x400a), DVNM("Creative PC-CAM 300")},
1149 {USB_DEVICE(0x046d, 0x0890), DVNM("Logitech QuickCam traveler")}, 1154 {USB_DEVICE(0x046d, 0x0890), DVNM("Logitech QuickCam traveler")},
diff --git a/drivers/media/video/gspca/spca501.c b/drivers/media/video/gspca/spca501.c
index c6468cf3506a..417fbe2214be 100644
--- a/drivers/media/video/gspca/spca501.c
+++ b/drivers/media/video/gspca/spca501.c
@@ -23,8 +23,8 @@
23 23
24#include "gspca.h" 24#include "gspca.h"
25 25
26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
27static const char version[] = "2.1.0"; 27static const char version[] = "2.1.4";
28 28
29MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 29MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
30MODULE_DESCRIPTION("GSPCA/SPCA501 USB Camera Driver"); 30MODULE_DESCRIPTION("GSPCA/SPCA501 USB Camera Driver");
@@ -151,7 +151,7 @@ static struct cam_mode vga_mode[] = {
151#define SPCA501_A33 0x10 151#define SPCA501_A33 0x10
152 152
153/* Data for video camera initialization before capturing */ 153/* Data for video camera initialization before capturing */
154static __u16 spca501_open_data[][3] = { 154static const __u16 spca501_open_data[][3] = {
155 /* bmRequest,value,index */ 155 /* bmRequest,value,index */
156 156
157 {0x2, 0x50, 0x00}, /* C/S enable soft reset */ 157 {0x2, 0x50, 0x00}, /* C/S enable soft reset */
@@ -257,7 +257,7 @@ static __u16 spca501_open_data[][3] = {
257 */ 257 */
258 258
259/* Data for chip initialization (set default values) */ 259/* Data for chip initialization (set default values) */
260static __u16 spca501_init_data[][3] = { 260static const __u16 spca501_init_data[][3] = {
261 /* Set all the values to powerup defaults */ 261 /* Set all the values to powerup defaults */
262 /* bmRequest,value,index */ 262 /* bmRequest,value,index */
263 {0x0, 0xAA, 0x00}, 263 {0x0, 0xAA, 0x00},
@@ -544,7 +544,7 @@ static __u16 spca501_init_data[][3] = {
544 * Capture and decoding by Colin Peart. 544 * Capture and decoding by Colin Peart.
545 * This is is for the 3com HomeConnect Lite which is spca501a based. 545 * This is is for the 3com HomeConnect Lite which is spca501a based.
546 */ 546 */
547static __u16 spca501_3com_open_data[][3] = { 547static const __u16 spca501_3com_open_data[][3] = {
548 /* bmRequest,value,index */ 548 /* bmRequest,value,index */
549 {0x2, 0x0050, 0x0000}, /* C/S Enable TG soft reset, timing mode=010 */ 549 {0x2, 0x0050, 0x0000}, /* C/S Enable TG soft reset, timing mode=010 */
550 {0x2, 0x0043, 0x0000}, /* C/S Disable TG soft reset, timing mode=010 */ 550 {0x2, 0x0043, 0x0000}, /* C/S Disable TG soft reset, timing mode=010 */
@@ -639,7 +639,7 @@ static __u16 spca501_3com_open_data[][3] = {
639 * 2) Understand why some values seem to appear more than once 639 * 2) Understand why some values seem to appear more than once
640 * 3) Write a small comment for each line of the following arrays. 640 * 3) Write a small comment for each line of the following arrays.
641 */ 641 */
642static __u16 spca501c_arowana_open_data[][3] = { 642static const __u16 spca501c_arowana_open_data[][3] = {
643 /* bmRequest,value,index */ 643 /* bmRequest,value,index */
644 {0x02, 0x0007, 0x0005}, 644 {0x02, 0x0007, 0x0005},
645 {0x02, 0xa048, 0x0000}, 645 {0x02, 0xa048, 0x0000},
@@ -661,7 +661,7 @@ static __u16 spca501c_arowana_open_data[][3] = {
661 {} 661 {}
662}; 662};
663 663
664static __u16 spca501c_arowana_init_data[][3] = { 664static const __u16 spca501c_arowana_init_data[][3] = {
665 /* bmRequest,value,index */ 665 /* bmRequest,value,index */
666 {0x02, 0x0007, 0x0005}, 666 {0x02, 0x0007, 0x0005},
667 {0x02, 0xa048, 0x0000}, 667 {0x02, 0xa048, 0x0000},
@@ -1595,7 +1595,7 @@ static __u16 spca501c_arowana_init_data[][3] = {
1595 1595
1596/* Unknow camera from Ori Usbid 0x0000:0x0000 */ 1596/* Unknow camera from Ori Usbid 0x0000:0x0000 */
1597/* Based on snoops from Ori Cohen */ 1597/* Based on snoops from Ori Cohen */
1598static __u16 spca501c_mysterious_open_data[][3] = { 1598static const __u16 spca501c_mysterious_open_data[][3] = {
1599 {0x02, 0x000f, 0x0005}, 1599 {0x02, 0x000f, 0x0005},
1600 {0x02, 0xa048, 0x0000}, 1600 {0x02, 0xa048, 0x0000},
1601 {0x05, 0x0022, 0x0004}, 1601 {0x05, 0x0022, 0x0004},
@@ -1646,7 +1646,7 @@ static __u16 spca501c_mysterious_open_data[][3] = {
1646}; 1646};
1647 1647
1648/* Based on snoops from Ori Cohen */ 1648/* Based on snoops from Ori Cohen */
1649static __u16 spca501c_mysterious_init_data[][3] = { 1649static const __u16 spca501c_mysterious_init_data[][3] = {
1650/* Part 3 */ 1650/* Part 3 */
1651/* TG registers */ 1651/* TG registers */
1652/* {0x00, 0x0000, 0x0000}, */ 1652/* {0x00, 0x0000, 0x0000}, */
@@ -1839,7 +1839,7 @@ static int reg_read(struct usb_device *dev,
1839} 1839}
1840 1840
1841static int write_vector(struct gspca_dev *gspca_dev, 1841static int write_vector(struct gspca_dev *gspca_dev,
1842 __u16 data[][3]) 1842 const __u16 data[][3])
1843{ 1843{
1844 struct usb_device *dev = gspca_dev->dev; 1844 struct usb_device *dev = gspca_dev->dev;
1845 int ret, i = 0; 1845 int ret, i = 0;
@@ -2001,7 +2001,6 @@ static int sd_open(struct gspca_dev *gspca_dev)
2001{ 2001{
2002 struct sd *sd = (struct sd *) gspca_dev; 2002 struct sd *sd = (struct sd *) gspca_dev;
2003 2003
2004 PDEBUG(D_STREAM, "SPCA501 init");
2005 switch (sd->subtype) { 2004 switch (sd->subtype) {
2006 case ThreeComHomeConnectLite: 2005 case ThreeComHomeConnectLite:
2007 /* Special handling for 3com data */ 2006 /* Special handling for 3com data */
@@ -2050,7 +2049,7 @@ static void sd_start(struct gspca_dev *gspca_dev)
2050 reg_write(dev, SPCA501_REG_CTLRL, 0x01, 0x02); 2049 reg_write(dev, SPCA501_REG_CTLRL, 0x01, 0x02);
2051 2050
2052 /* HDG atleast the Intel CreateAndShare needs to have one of its 2051 /* HDG atleast the Intel CreateAndShare needs to have one of its
2053 * brightness / contrast / color set otherwise it assumes wath seems 2052 * brightness / contrast / color set otherwise it assumes what seems
2054 * max contrast. Note that strange enough setting any of these is 2053 * max contrast. Note that strange enough setting any of these is
2055 * enough to fix the max contrast problem, to be sure we set all 3 */ 2054 * enough to fix the max contrast problem, to be sure we set all 3 */
2056 setbrightness(gspca_dev); 2055 setbrightness(gspca_dev);
@@ -2159,7 +2158,7 @@ static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val)
2159} 2158}
2160 2159
2161/* sub-driver description */ 2160/* sub-driver description */
2162static struct sd_desc sd_desc = { 2161static const struct sd_desc sd_desc = {
2163 .name = MODULE_NAME, 2162 .name = MODULE_NAME,
2164 .ctrls = sd_ctrls, 2163 .ctrls = sd_ctrls,
2165 .nctrls = ARRAY_SIZE(sd_ctrls), 2164 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -2174,7 +2173,7 @@ static struct sd_desc sd_desc = {
2174 2173
2175/* -- module initialisation -- */ 2174/* -- module initialisation -- */
2176#define DVNM(name) .driver_info = (kernel_ulong_t) name 2175#define DVNM(name) .driver_info = (kernel_ulong_t) name
2177static __devinitdata struct usb_device_id device_table[] = { 2176static const __devinitdata struct usb_device_id device_table[] = {
2178 {USB_DEVICE(0x040a, 0x0002), DVNM("Kodak DVC-325")}, 2177 {USB_DEVICE(0x040a, 0x0002), DVNM("Kodak DVC-325")},
2179 {USB_DEVICE(0x0497, 0xc001), DVNM("Smile International")}, 2178 {USB_DEVICE(0x0497, 0xc001), DVNM("Smile International")},
2180 {USB_DEVICE(0x0506, 0x00df), DVNM("3Com HomeConnect Lite")}, 2179 {USB_DEVICE(0x0506, 0x00df), DVNM("3Com HomeConnect Lite")},
diff --git a/drivers/media/video/gspca/spca505.c b/drivers/media/video/gspca/spca505.c
index d8ff121c2c5a..30d174fc4b9c 100644
--- a/drivers/media/video/gspca/spca505.c
+++ b/drivers/media/video/gspca/spca505.c
@@ -23,8 +23,8 @@
23 23
24#include "gspca.h" 24#include "gspca.h"
25 25
26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
27static const char version[] = "2.1.0"; 27static const char version[] = "2.1.4";
28 28
29MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 29MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
30MODULE_DESCRIPTION("GSPCA/SPCA505 USB Camera Driver"); 30MODULE_DESCRIPTION("GSPCA/SPCA505 USB Camera Driver");
@@ -91,7 +91,7 @@ static struct cam_mode vga_mode[] = {
91/* 91/*
92 * Data to initialize a SPCA505. Common to the CCD and external modes 92 * Data to initialize a SPCA505. Common to the CCD and external modes
93 */ 93 */
94static __u16 spca505_init_data[][3] = { 94static const __u16 spca505_init_data[][3] = {
95 /* line bmRequest,value,index */ 95 /* line bmRequest,value,index */
96 /* 1819 */ 96 /* 1819 */
97 {SPCA50X_REG_GLOBAL, SPCA50X_GMISC3_SAA7113RST, SPCA50X_GLOBAL_MISC3}, 97 {SPCA50X_REG_GLOBAL, SPCA50X_GMISC3_SAA7113RST, SPCA50X_GLOBAL_MISC3},
@@ -130,7 +130,7 @@ static __u16 spca505_init_data[][3] = {
130/* 130/*
131 * Data to initialize the camera using the internal CCD 131 * Data to initialize the camera using the internal CCD
132 */ 132 */
133static __u16 spca505_open_data_ccd[][3] = { 133static const __u16 spca505_open_data_ccd[][3] = {
134 /* line bmRequest,value,index */ 134 /* line bmRequest,value,index */
135 /* Internal CCD data set */ 135 /* Internal CCD data set */
136 /* 1891 */ {0x3, 0x04, 0x01}, 136 /* 1891 */ {0x3, 0x04, 0x01},
@@ -319,7 +319,7 @@ static __u16 spca505_open_data_ccd[][3] = {
319/* 319/*
320 * Data to initialize a SPCA505. Common to the CCD and external modes 320 * Data to initialize a SPCA505. Common to the CCD and external modes
321 */ 321 */
322static __u16 spca505b_init_data[][3] = { 322static const __u16 spca505b_init_data[][3] = {
323/* start */ 323/* start */
324 {0x02, 0x00, 0x00}, /* init */ 324 {0x02, 0x00, 0x00}, /* init */
325 {0x02, 0x00, 0x01}, 325 {0x02, 0x00, 0x01},
@@ -383,7 +383,7 @@ static __u16 spca505b_init_data[][3] = {
383/* 383/*
384 * Data to initialize the camera using the internal CCD 384 * Data to initialize the camera using the internal CCD
385 */ 385 */
386static __u16 spca505b_open_data_ccd[][3] = { 386static const __u16 spca505b_open_data_ccd[][3] = {
387 387
388/* {0x02,0x00,0x00}, */ 388/* {0x02,0x00,0x00}, */
389 {0x03, 0x04, 0x01}, /* rst */ 389 {0x03, 0x04, 0x01}, /* rst */
@@ -579,7 +579,7 @@ static int reg_read(struct usb_device *dev,
579 __u16 length) /* wLength (1 or 2 only) */ 579 __u16 length) /* wLength (1 or 2 only) */
580{ 580{
581 int ret; 581 int ret;
582 unsigned char buf[4]; 582 __u8 buf[4];
583 583
584 buf[1] = 0; 584 buf[1] = 0;
585 ret = usb_control_msg(dev, 585 ret = usb_control_msg(dev,
@@ -599,7 +599,7 @@ static int reg_read(struct usb_device *dev,
599} 599}
600 600
601static int write_vector(struct gspca_dev *gspca_dev, 601static int write_vector(struct gspca_dev *gspca_dev,
602 __u16 data[][3]) 602 const __u16 data[][3])
603{ 603{
604 struct usb_device *dev = gspca_dev->dev; 604 struct usb_device *dev = gspca_dev->dev;
605 int ret, i = 0; 605 int ret, i = 0;
@@ -801,7 +801,7 @@ static void yyuv_decode(unsigned char *out,
801 801
802static void sd_pkt_scan(struct gspca_dev *gspca_dev, 802static void sd_pkt_scan(struct gspca_dev *gspca_dev,
803 struct gspca_frame *frame, /* target */ 803 struct gspca_frame *frame, /* target */
804 unsigned char *data, /* isoc packet */ 804 __u8 *data, /* isoc packet */
805 int len) /* iso packet length */ 805 int len) /* iso packet length */
806{ 806{
807 struct sd *sd = (struct sd *) gspca_dev; 807 struct sd *sd = (struct sd *) gspca_dev;
@@ -878,7 +878,7 @@ static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val)
878} 878}
879 879
880/* sub-driver description */ 880/* sub-driver description */
881static struct sd_desc sd_desc = { 881static const struct sd_desc sd_desc = {
882 .name = MODULE_NAME, 882 .name = MODULE_NAME,
883 .ctrls = sd_ctrls, 883 .ctrls = sd_ctrls,
884 .nctrls = ARRAY_SIZE(sd_ctrls), 884 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -893,7 +893,7 @@ static struct sd_desc sd_desc = {
893 893
894/* -- module initialisation -- */ 894/* -- module initialisation -- */
895#define DVNM(name) .driver_info = (kernel_ulong_t) name 895#define DVNM(name) .driver_info = (kernel_ulong_t) name
896static __devinitdata struct usb_device_id device_table[] = { 896static const __devinitdata struct usb_device_id device_table[] = {
897 {USB_DEVICE(0x041e, 0x401d), DVNM("Creative Webcam NX ULTRA")}, 897 {USB_DEVICE(0x041e, 0x401d), DVNM("Creative Webcam NX ULTRA")},
898 {USB_DEVICE(0x0733, 0x0430), DVNM("Intel PC Camera Pro")}, 898 {USB_DEVICE(0x0733, 0x0430), DVNM("Intel PC Camera Pro")},
899 {} 899 {}
diff --git a/drivers/media/video/gspca/spca508.c b/drivers/media/video/gspca/spca508.c
index 2ccd877b998d..3b54f41d21c1 100644
--- a/drivers/media/video/gspca/spca508.c
+++ b/drivers/media/video/gspca/spca508.c
@@ -22,8 +22,8 @@
22 22
23#include "gspca.h" 23#include "gspca.h"
24 24
25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
26static const char version[] = "2.1.0"; 26static const char version[] = "2.1.4";
27 27
28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
29MODULE_DESCRIPTION("GSPCA/SPCA508 USB Camera Driver"); 29MODULE_DESCRIPTION("GSPCA/SPCA508 USB Camera Driver");
@@ -92,7 +92,7 @@ static struct cam_mode sif_mode[] = {
92 * Initialization data: this is the first set-up data written to the 92 * Initialization data: this is the first set-up data written to the
93 * device (before the open data). 93 * device (before the open data).
94 */ 94 */
95static __u16 spca508_init_data[][3] = 95static const __u16 spca508_init_data[][3] =
96#define IGN(x) /* nothing */ 96#define IGN(x) /* nothing */
97{ 97{
98 /* line URB value, index */ 98 /* line URB value, index */
@@ -584,7 +584,7 @@ static __u16 spca508_init_data[][3] =
584/* 584/*
585 * Initialization data for Intel EasyPC Camera CS110 585 * Initialization data for Intel EasyPC Camera CS110
586 */ 586 */
587static __u16 spca508cs110_init_data[][3] = { 587static const __u16 spca508cs110_init_data[][3] = {
588 {0x0000, 0x870b}, /* Reset CTL3 */ 588 {0x0000, 0x870b}, /* Reset CTL3 */
589 {0x0003, 0x8111}, /* Soft Reset compression, memory, TG & CDSP */ 589 {0x0003, 0x8111}, /* Soft Reset compression, memory, TG & CDSP */
590 {0x0000, 0x8111}, /* Normal operation on reset */ 590 {0x0000, 0x8111}, /* Normal operation on reset */
@@ -668,7 +668,7 @@ static __u16 spca508cs110_init_data[][3] = {
668 {} 668 {}
669}; 669};
670 670
671static __u16 spca508_sightcam_init_data[][3] = { 671static const __u16 spca508_sightcam_init_data[][3] = {
672/* This line seems to setup the frame/canvas */ 672/* This line seems to setup the frame/canvas */
673 /*368 */ {0x000f, 0x8402}, 673 /*368 */ {0x000f, 0x8402},
674 674
@@ -752,7 +752,7 @@ static __u16 spca508_sightcam_init_data[][3] = {
752 {0, 0} 752 {0, 0}
753}; 753};
754 754
755static __u16 spca508_sightcam2_init_data[][3] = { 755static const __u16 spca508_sightcam2_init_data[][3] = {
756/* 35 */ {0x0020, 0x8112}, 756/* 35 */ {0x0020, 0x8112},
757 757
758/* 36 */ {0x000f, 0x8402}, 758/* 36 */ {0x000f, 0x8402},
@@ -1099,7 +1099,7 @@ static __u16 spca508_sightcam2_init_data[][3] = {
1099/* 1099/*
1100 * Initialization data for Creative Webcam Vista 1100 * Initialization data for Creative Webcam Vista
1101 */ 1101 */
1102static __u16 spca508_vista_init_data[][3] = { 1102static const __u16 spca508_vista_init_data[][3] = {
1103 {0x0008, 0x8200}, /* Clear register */ 1103 {0x0008, 0x8200}, /* Clear register */
1104 {0x0000, 0x870b}, /* Reset CTL3 */ 1104 {0x0000, 0x870b}, /* Reset CTL3 */
1105 {0x0020, 0x8112}, /* Video Drop packet enable */ 1105 {0x0020, 0x8112}, /* Video Drop packet enable */
@@ -1441,7 +1441,7 @@ static int reg_read(struct usb_device *dev,
1441} 1441}
1442 1442
1443static int write_vector(struct gspca_dev *gspca_dev, 1443static int write_vector(struct gspca_dev *gspca_dev,
1444 __u16 data[][3]) 1444 const __u16 data[][3])
1445{ 1445{
1446 struct usb_device *dev = gspca_dev->dev; 1446 struct usb_device *dev = gspca_dev->dev;
1447 int ret, i = 0; 1447 int ret, i = 0;
@@ -1639,7 +1639,7 @@ static void yuvy_decode(unsigned char *out,
1639 1639
1640static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1640static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1641 struct gspca_frame *frame, /* target */ 1641 struct gspca_frame *frame, /* target */
1642 unsigned char *data, /* isoc packet */ 1642 __u8 *data, /* isoc packet */
1643 int len) /* iso packet length */ 1643 int len) /* iso packet length */
1644{ 1644{
1645 struct sd *sd = (struct sd *) gspca_dev; 1645 struct sd *sd = (struct sd *) gspca_dev;
@@ -1717,7 +1717,7 @@ static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val)
1717} 1717}
1718 1718
1719/* sub-driver description */ 1719/* sub-driver description */
1720static struct sd_desc sd_desc = { 1720static const struct sd_desc sd_desc = {
1721 .name = MODULE_NAME, 1721 .name = MODULE_NAME,
1722 .ctrls = sd_ctrls, 1722 .ctrls = sd_ctrls,
1723 .nctrls = ARRAY_SIZE(sd_ctrls), 1723 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -1732,7 +1732,7 @@ static struct sd_desc sd_desc = {
1732 1732
1733/* -- module initialisation -- */ 1733/* -- module initialisation -- */
1734#define DVNM(name) .driver_info = (kernel_ulong_t) name 1734#define DVNM(name) .driver_info = (kernel_ulong_t) name
1735static __devinitdata struct usb_device_id device_table[] = { 1735static const __devinitdata struct usb_device_id device_table[] = {
1736 {USB_DEVICE(0x041e, 0x4018), DVNM("Creative Webcam Vista (PD1100)")}, 1736 {USB_DEVICE(0x041e, 0x4018), DVNM("Creative Webcam Vista (PD1100)")},
1737 {USB_DEVICE(0x0461, 0x0815), DVNM("Micro Innovation IC200")}, 1737 {USB_DEVICE(0x0461, 0x0815), DVNM("Micro Innovation IC200")},
1738 {USB_DEVICE(0x0733, 0x0110), DVNM("ViewQuest VQ110")}, 1738 {USB_DEVICE(0x0733, 0x0110), DVNM("ViewQuest VQ110")},
diff --git a/drivers/media/video/gspca/spca561.c b/drivers/media/video/gspca/spca561.c
index dbd1648a655f..8e39cbdda2a5 100644
--- a/drivers/media/video/gspca/spca561.c
+++ b/drivers/media/video/gspca/spca561.c
@@ -24,8 +24,8 @@
24 24
25#include "gspca.h" 25#include "gspca.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/SPCA561 USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/SPCA561 USB Camera Driver");
@@ -148,7 +148,8 @@ static void reg_w_val(struct usb_device *dev, __u16 index, __u16 value)
148 PDEBUG(D_ERR, "reg write: error %d", ret); 148 PDEBUG(D_ERR, "reg write: error %d", ret);
149} 149}
150 150
151static void write_vector(struct gspca_dev *gspca_dev, __u16 data[][2]) 151static void write_vector(struct gspca_dev *gspca_dev,
152 const __u16 data[][2])
152{ 153{
153 struct usb_device *dev = gspca_dev->dev; 154 struct usb_device *dev = gspca_dev->dev;
154 int i; 155 int i;
@@ -171,13 +172,16 @@ static void reg_r(struct usb_device *dev,
171} 172}
172 173
173static void reg_w_buf(struct usb_device *dev, 174static void reg_w_buf(struct usb_device *dev,
174 __u16 index, __u8 *buffer, __u16 length) 175 __u16 index, const __u8 *buffer, __u16 len)
175{ 176{
177 __u8 tmpbuf[8];
178
179 memcpy(tmpbuf, buffer, len);
176 usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 180 usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
177 0, /* request */ 181 0, /* request */
178 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 182 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
179 0, /* value */ 183 0, /* value */
180 index, buffer, length, 500); 184 index, tmpbuf, len, 500);
181} 185}
182 186
183static void i2c_init(struct gspca_dev *gspca_dev, __u8 mode) 187static void i2c_init(struct gspca_dev *gspca_dev, __u8 mode)
@@ -227,7 +231,7 @@ static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode)
227 return ((int) value << 8) | vallsb; 231 return ((int) value << 8) | vallsb;
228} 232}
229 233
230static __u16 spca561_init_data[][2] = { 234static const __u16 spca561_init_data[][2] = {
231 {0x0000, 0x8114}, /* Software GPIO output data */ 235 {0x0000, 0x8114}, /* Software GPIO output data */
232 {0x0001, 0x8114}, /* Software GPIO output data */ 236 {0x0001, 0x8114}, /* Software GPIO output data */
233 {0x0000, 0x8112}, /* Some kind of reset */ 237 {0x0000, 0x8112}, /* Some kind of reset */
@@ -437,7 +441,7 @@ static void sensor_reset(struct gspca_dev *gspca_dev)
437} 441}
438 442
439/******************** QC Express etch2 stuff ********************/ 443/******************** QC Express etch2 stuff ********************/
440static __u16 Pb100_1map8300[][2] = { 444static const __u16 Pb100_1map8300[][2] = {
441 /* reg, value */ 445 /* reg, value */
442 {0x8320, 0x3304}, 446 {0x8320, 0x3304},
443 447
@@ -452,14 +456,14 @@ static __u16 Pb100_1map8300[][2] = {
452 {0x8302, 0x000e}, 456 {0x8302, 0x000e},
453 {} 457 {}
454}; 458};
455static __u16 Pb100_2map8300[][2] = { 459static const __u16 Pb100_2map8300[][2] = {
456 /* reg, value */ 460 /* reg, value */
457 {0x8339, 0x0000}, 461 {0x8339, 0x0000},
458 {0x8307, 0x00aa}, 462 {0x8307, 0x00aa},
459 {} 463 {}
460}; 464};
461 465
462static __u16 spca561_161rev12A_data1[][2] = { 466static const __u16 spca561_161rev12A_data1[][2] = {
463 {0x21, 0x8118}, 467 {0x21, 0x8118},
464 {0x01, 0x8114}, 468 {0x01, 0x8114},
465 {0x00, 0x8112}, 469 {0x00, 0x8112},
@@ -467,7 +471,7 @@ static __u16 spca561_161rev12A_data1[][2] = {
467 {0x04, 0x8802}, /* windows uses 08 */ 471 {0x04, 0x8802}, /* windows uses 08 */
468 {} 472 {}
469}; 473};
470static __u16 spca561_161rev12A_data2[][2] = { 474static const __u16 spca561_161rev12A_data2[][2] = {
471 {0x21, 0x8118}, 475 {0x21, 0x8118},
472 {0x10, 0x8500}, 476 {0x10, 0x8500},
473 {0x07, 0x8601}, 477 {0x07, 0x8601},
@@ -513,7 +517,7 @@ static __u16 spca561_161rev12A_data2[][2] = {
513}; 517};
514 518
515static void sensor_mapwrite(struct gspca_dev *gspca_dev, 519static void sensor_mapwrite(struct gspca_dev *gspca_dev,
516 __u16 sensormap[][2]) 520 const __u16 sensormap[][2])
517{ 521{
518 int i = 0; 522 int i = 0;
519 __u8 usbval[2]; 523 __u8 usbval[2];
@@ -956,7 +960,7 @@ static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
956} 960}
957 961
958/* sub-driver description */ 962/* sub-driver description */
959static struct sd_desc sd_desc = { 963static const struct sd_desc sd_desc = {
960 .name = MODULE_NAME, 964 .name = MODULE_NAME,
961 .ctrls = sd_ctrls, 965 .ctrls = sd_ctrls,
962 .nctrls = ARRAY_SIZE(sd_ctrls), 966 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -971,7 +975,7 @@ static struct sd_desc sd_desc = {
971 975
972/* -- module initialisation -- */ 976/* -- module initialisation -- */
973#define DVNM(name) .driver_info = (kernel_ulong_t) name 977#define DVNM(name) .driver_info = (kernel_ulong_t) name
974static __devinitdata struct usb_device_id device_table[] = { 978static const __devinitdata struct usb_device_id device_table[] = {
975 {USB_DEVICE(0x041e, 0x401a), DVNM("Creative Webcam Vista (PD1100)")}, 979 {USB_DEVICE(0x041e, 0x401a), DVNM("Creative Webcam Vista (PD1100)")},
976 {USB_DEVICE(0x041e, 0x403b), DVNM("Creative Webcam Vista (VF0010)")}, 980 {USB_DEVICE(0x041e, 0x403b), DVNM("Creative Webcam Vista (VF0010)")},
977 {USB_DEVICE(0x0458, 0x7004), DVNM("Genius VideoCAM Express V2")}, 981 {USB_DEVICE(0x0458, 0x7004), DVNM("Genius VideoCAM Express V2")},
diff --git a/drivers/media/video/gspca/stk014.c b/drivers/media/video/gspca/stk014.c
index 6832fe0f3403..ad59c5ab5d90 100644
--- a/drivers/media/video/gspca/stk014.c
+++ b/drivers/media/video/gspca/stk014.c
@@ -23,8 +23,8 @@
23#include "gspca.h" 23#include "gspca.h"
24#include "jpeg.h" 24#include "jpeg.h"
25 25
26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 26#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
27static const char version[] = "2.1.0"; 27static const char version[] = "2.1.4";
28 28
29MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>"); 29MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>");
30MODULE_DESCRIPTION("Syntek DV4000 (STK014) USB Camera Driver"); 30MODULE_DESCRIPTION("Syntek DV4000 (STK014) USB Camera Driver");
@@ -54,7 +54,6 @@ static int sd_setfreq(struct gspca_dev *gspca_dev, __s32 val);
54static int sd_getfreq(struct gspca_dev *gspca_dev, __s32 *val); 54static int sd_getfreq(struct gspca_dev *gspca_dev, __s32 *val);
55 55
56static struct ctrl sd_ctrls[] = { 56static struct ctrl sd_ctrls[] = {
57#define SD_BRIGHTNESS 0
58 { 57 {
59 { 58 {
60 .id = V4L2_CID_BRIGHTNESS, 59 .id = V4L2_CID_BRIGHTNESS,
@@ -63,12 +62,12 @@ static struct ctrl sd_ctrls[] = {
63 .minimum = 0, 62 .minimum = 0,
64 .maximum = 255, 63 .maximum = 255,
65 .step = 1, 64 .step = 1,
66 .default_value = 127, 65#define BRIGHTNESS_DEF 127
66 .default_value = BRIGHTNESS_DEF,
67 }, 67 },
68 .set = sd_setbrightness, 68 .set = sd_setbrightness,
69 .get = sd_getbrightness, 69 .get = sd_getbrightness,
70 }, 70 },
71#define SD_CONTRAST 1
72 { 71 {
73 { 72 {
74 .id = V4L2_CID_CONTRAST, 73 .id = V4L2_CID_CONTRAST,
@@ -77,26 +76,26 @@ static struct ctrl sd_ctrls[] = {
77 .minimum = 0, 76 .minimum = 0,
78 .maximum = 255, 77 .maximum = 255,
79 .step = 1, 78 .step = 1,
80 .default_value = 127, 79#define CONTRAST_DEF 127
80 .default_value = CONTRAST_DEF,
81 }, 81 },
82 .set = sd_setcontrast, 82 .set = sd_setcontrast,
83 .get = sd_getcontrast, 83 .get = sd_getcontrast,
84 }, 84 },
85#define SD_COLOR 2
86 { 85 {
87 { 86 {
88 .id = V4L2_CID_SATURATION, 87 .id = V4L2_CID_SATURATION,
89 .type = V4L2_CTRL_TYPE_INTEGER, 88 .type = V4L2_CTRL_TYPE_INTEGER,
90 .name = "Saturation", 89 .name = "Color",
91 .minimum = 0, 90 .minimum = 0,
92 .maximum = 255, 91 .maximum = 255,
93 .step = 1, 92 .step = 1,
94 .default_value = 127, 93#define COLOR_DEF 127
94 .default_value = COLOR_DEF,
95 }, 95 },
96 .set = sd_setcolors, 96 .set = sd_setcolors,
97 .get = sd_getcolors, 97 .get = sd_getcolors,
98 }, 98 },
99#define SD_FREQ 3
100 { 99 {
101 { 100 {
102 .id = V4L2_CID_POWER_LINE_FREQUENCY, 101 .id = V4L2_CID_POWER_LINE_FREQUENCY,
@@ -105,7 +104,8 @@ static struct ctrl sd_ctrls[] = {
105 .minimum = 1, 104 .minimum = 1,
106 .maximum = 2, /* 0: 0, 1: 50Hz, 2:60Hz */ 105 .maximum = 2, /* 0: 0, 1: 50Hz, 2:60Hz */
107 .step = 1, 106 .step = 1,
108 .default_value = 1, 107#define FREQ_DEF 1
108 .default_value = FREQ_DEF,
109 }, 109 },
110 .set = sd_setfreq, 110 .set = sd_setfreq,
111 .get = sd_getfreq, 111 .get = sd_getfreq,
@@ -296,10 +296,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
296 cam->epaddr = 0x02; 296 cam->epaddr = 0x02;
297 gspca_dev->cam.cam_mode = vga_mode; 297 gspca_dev->cam.cam_mode = vga_mode;
298 gspca_dev->cam.nmodes = sizeof vga_mode / sizeof vga_mode[0]; 298 gspca_dev->cam.nmodes = sizeof vga_mode / sizeof vga_mode[0];
299 sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; 299 sd->brightness = BRIGHTNESS_DEF;
300 sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; 300 sd->contrast = CONTRAST_DEF;
301 sd->colors = sd_ctrls[SD_COLOR].qctrl.default_value; 301 sd->colors = COLOR_DEF;
302 sd->lightfreq = sd_ctrls[SD_FREQ].qctrl.default_value; 302 sd->lightfreq = FREQ_DEF;
303 return 0; 303 return 0;
304} 304}
305 305
@@ -408,7 +408,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
408 408
409static void sd_pkt_scan(struct gspca_dev *gspca_dev, 409static void sd_pkt_scan(struct gspca_dev *gspca_dev,
410 struct gspca_frame *frame, /* target */ 410 struct gspca_frame *frame, /* target */
411 unsigned char *data, /* isoc packet */ 411 __u8 *data, /* isoc packet */
412 int len) /* iso packet length */ 412 int len) /* iso packet length */
413{ 413{
414 static unsigned char ffd9[] = {0xff, 0xd9}; 414 static unsigned char ffd9[] = {0xff, 0xd9};
@@ -518,10 +518,10 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
518 case V4L2_CID_POWER_LINE_FREQUENCY: 518 case V4L2_CID_POWER_LINE_FREQUENCY:
519 switch (menu->index) { 519 switch (menu->index) {
520 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */ 520 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */
521 strcpy(menu->name, "50 Hz"); 521 strcpy((char *) menu->name, "50 Hz");
522 return 0; 522 return 0;
523 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */ 523 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */
524 strcpy(menu->name, "60 Hz"); 524 strcpy((char *) menu->name, "60 Hz");
525 return 0; 525 return 0;
526 } 526 }
527 break; 527 break;
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c
index 113c07106924..f2d033508581 100644
--- a/drivers/media/video/gspca/sunplus.c
+++ b/drivers/media/video/gspca/sunplus.c
@@ -24,8 +24,8 @@
24#include "gspca.h" 24#include "gspca.h"
25#include "jpeg.h" 25#include "jpeg.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 1) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.1"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/SPCA5xx USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/SPCA5xx USB Camera Driver");
@@ -35,7 +35,7 @@ MODULE_LICENSE("GPL");
35struct sd { 35struct sd {
36 struct gspca_dev gspca_dev; /* !! must be the first item */ 36 struct gspca_dev gspca_dev; /* !! must be the first item */
37 37
38 unsigned char packet[ISO_MAX_SIZE + 128]; 38 __u8 packet[ISO_MAX_SIZE + 128];
39 /* !! no more than 128 ff in an ISO packet */ 39 /* !! no more than 128 ff in an ISO packet */
40 40
41 unsigned char brightness; 41 unsigned char brightness;
@@ -156,7 +156,7 @@ static struct cam_mode vga_mode2[] = {
156#define SPCA536_OFFSET_FRAMSEQ 1 156#define SPCA536_OFFSET_FRAMSEQ 1
157 157
158/* Initialisation data for the Creative PC-CAM 600 */ 158/* Initialisation data for the Creative PC-CAM 600 */
159static __u16 spca504_pccam600_init_data[][3] = { 159static const __u16 spca504_pccam600_init_data[][3] = {
160/* {0xa0, 0x0000, 0x0503}, * capture mode */ 160/* {0xa0, 0x0000, 0x0503}, * capture mode */
161 {0x00, 0x0000, 0x2000}, 161 {0x00, 0x0000, 0x2000},
162 {0x00, 0x0013, 0x2301}, 162 {0x00, 0x0013, 0x2301},
@@ -186,7 +186,7 @@ static __u16 spca504_pccam600_init_data[][3] = {
186/* Creative PC-CAM 600 specific open data, sent before using the 186/* Creative PC-CAM 600 specific open data, sent before using the
187 * generic initialisation data from spca504_open_data. 187 * generic initialisation data from spca504_open_data.
188 */ 188 */
189static __u16 spca504_pccam600_open_data[][3] = { 189static const __u16 spca504_pccam600_open_data[][3] = {
190 {0x00, 0x0001, 0x2501}, 190 {0x00, 0x0001, 0x2501},
191 {0x20, 0x0500, 0x0001}, /* snapshot mode */ 191 {0x20, 0x0500, 0x0001}, /* snapshot mode */
192 {0x00, 0x0003, 0x2880}, 192 {0x00, 0x0003, 0x2880},
@@ -195,7 +195,7 @@ static __u16 spca504_pccam600_open_data[][3] = {
195}; 195};
196 196
197/* Initialisation data for the logitech clicksmart 420 */ 197/* Initialisation data for the logitech clicksmart 420 */
198static __u16 spca504A_clicksmart420_init_data[][3] = { 198static const __u16 spca504A_clicksmart420_init_data[][3] = {
199/* {0xa0, 0x0000, 0x0503}, * capture mode */ 199/* {0xa0, 0x0000, 0x0503}, * capture mode */
200 {0x00, 0x0000, 0x2000}, 200 {0x00, 0x0000, 0x2000},
201 {0x00, 0x0013, 0x2301}, 201 {0x00, 0x0013, 0x2301},
@@ -226,7 +226,7 @@ static __u16 spca504A_clicksmart420_init_data[][3] = {
226}; 226};
227 227
228/* clicksmart 420 open data ? */ 228/* clicksmart 420 open data ? */
229static __u16 spca504A_clicksmart420_open_data[][3] = { 229static const __u16 spca504A_clicksmart420_open_data[][3] = {
230 {0x00, 0x0001, 0x2501}, 230 {0x00, 0x0001, 0x2501},
231 {0x20, 0x0502, 0x0000}, 231 {0x20, 0x0502, 0x0000},
232 {0x06, 0x0000, 0x0000}, 232 {0x06, 0x0000, 0x0000},
@@ -373,7 +373,7 @@ static __u16 spca504A_clicksmart420_open_data[][3] = {
373 {} 373 {}
374}; 374};
375 375
376static unsigned char qtable_creative_pccam[2][64] = { 376static const __u8 qtable_creative_pccam[2][64] = {
377 { /* Q-table Y-components */ 377 { /* Q-table Y-components */
378 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12, 378 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12,
379 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11, 379 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11,
@@ -398,7 +398,7 @@ static unsigned char qtable_creative_pccam[2][64] = {
398 * except for one byte. Possibly a typo? 398 * except for one byte. Possibly a typo?
399 * NWG: 18/05/2003. 399 * NWG: 18/05/2003.
400 */ 400 */
401static unsigned char qtable_spca504_default[2][64] = { 401static const __u8 qtable_spca504_default[2][64] = {
402 { /* Q-table Y-components */ 402 { /* Q-table Y-components */
403 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12, 403 0x05, 0x03, 0x03, 0x05, 0x07, 0x0c, 0x0f, 0x12,
404 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11, 404 0x04, 0x04, 0x04, 0x06, 0x08, 0x11, 0x12, 0x11,
@@ -512,7 +512,7 @@ static int reg_read(struct usb_device *dev,
512} 512}
513 513
514static int write_vector(struct gspca_dev *gspca_dev, 514static int write_vector(struct gspca_dev *gspca_dev,
515 __u16 data[][3]) 515 const __u16 data[][3])
516{ 516{
517 struct usb_device *dev = gspca_dev->dev; 517 struct usb_device *dev = gspca_dev->dev;
518 int ret, i = 0; 518 int ret, i = 0;
@@ -534,7 +534,7 @@ static int spca50x_setup_qtable(struct gspca_dev *gspca_dev,
534 unsigned int request, 534 unsigned int request,
535 unsigned int ybase, 535 unsigned int ybase,
536 unsigned int cbase, 536 unsigned int cbase,
537 unsigned char qtable[2][64]) 537 const __u8 qtable[2][64])
538{ 538{
539 struct usb_device *dev = gspca_dev->dev; 539 struct usb_device *dev = gspca_dev->dev;
540 int i, err; 540 int i, err;
@@ -1242,7 +1242,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
1242 1242
1243static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1243static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1244 struct gspca_frame *frame, /* target */ 1244 struct gspca_frame *frame, /* target */
1245 unsigned char *data, /* isoc packet */ 1245 __u8 *data, /* isoc packet */
1246 int len) /* iso packet length */ 1246 int len) /* iso packet length */
1247{ 1247{
1248 struct sd *sd = (struct sd *) gspca_dev; 1248 struct sd *sd = (struct sd *) gspca_dev;
@@ -1530,7 +1530,7 @@ static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
1530} 1530}
1531 1531
1532/* sub-driver description */ 1532/* sub-driver description */
1533static struct sd_desc sd_desc = { 1533static const struct sd_desc sd_desc = {
1534 .name = MODULE_NAME, 1534 .name = MODULE_NAME,
1535 .ctrls = sd_ctrls, 1535 .ctrls = sd_ctrls,
1536 .nctrls = ARRAY_SIZE(sd_ctrls), 1536 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -1545,7 +1545,7 @@ static struct sd_desc sd_desc = {
1545 1545
1546/* -- module initialisation -- */ 1546/* -- module initialisation -- */
1547#define DVNM(name) .driver_info = (kernel_ulong_t) name 1547#define DVNM(name) .driver_info = (kernel_ulong_t) name
1548static __devinitdata struct usb_device_id device_table[] = { 1548static const __devinitdata struct usb_device_id device_table[] = {
1549 {USB_DEVICE(0x041e, 0x400b), DVNM("Creative PC-CAM 600")}, 1549 {USB_DEVICE(0x041e, 0x400b), DVNM("Creative PC-CAM 600")},
1550 {USB_DEVICE(0x041e, 0x4012), DVNM("PC-Cam350")}, 1550 {USB_DEVICE(0x041e, 0x4012), DVNM("PC-Cam350")},
1551 {USB_DEVICE(0x041e, 0x4013), DVNM("Creative Pccam750")}, 1551 {USB_DEVICE(0x041e, 0x4013), DVNM("Creative Pccam750")},
diff --git a/drivers/media/video/gspca/t613.c b/drivers/media/video/gspca/t613.c
index de43118dec7a..4e69a8e16357 100644
--- a/drivers/media/video/gspca/t613.c
+++ b/drivers/media/video/gspca/t613.c
@@ -26,13 +26,8 @@
26 26
27#define MODULE_NAME "t613" 27#define MODULE_NAME "t613"
28#include "gspca.h" 28#include "gspca.h"
29#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 3) 29#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
30static const char version[] = "2.1.3"; 30static const char version[] = "2.1.4";
31
32struct control_menu_info {
33 int value;
34 char name[32];
35};
36 31
37#define MAX_GAMMA 0x10 /* 0 to 15 */ 32#define MAX_GAMMA 0x10 /* 0 to 15 */
38 33
@@ -227,19 +222,16 @@ static struct ctrl sd_ctrls[] = {
227 }, 222 },
228}; 223};
229 224
230static struct control_menu_info effects_control[] = { 225static char *effects_control[] = {
231 {0, "Normal"}, 226 "Normal",
232 {1, "Emboss"}, /* disabled */ 227 "Emboss", /* disabled */
233 {2, "Monochrome"}, 228 "Monochrome",
234 {3, "Sepia"}, 229 "Sepia",
235 {4, "Sketch"}, 230 "Sketch",
236 {5, "Sun Effect"}, /* disabled */ 231 "Sun Effect", /* disabled */
237 {6, "Negative"}, 232 "Negative",
238}; 233};
239 234
240#define NUM_EFFECTS_CONTROL \
241 (sizeof(effects_control)/sizeof(effects_control[0]))
242
243static struct cam_mode vga_mode_t16[] = { 235static struct cam_mode vga_mode_t16[] = {
244 {V4L2_PIX_FMT_JPEG, 160, 120, 4}, 236 {V4L2_PIX_FMT_JPEG, 160, 120, 4},
245 {V4L2_PIX_FMT_JPEG, 176, 144, 3}, 237 {V4L2_PIX_FMT_JPEG, 176, 144, 3},
@@ -252,7 +244,7 @@ static struct cam_mode vga_mode_t16[] = {
252#define MAX_EFFECTS 7 244#define MAX_EFFECTS 7
253/* easily done by soft, this table could be removed, 245/* easily done by soft, this table could be removed,
254 * i keep it here just in case */ 246 * i keep it here just in case */
255unsigned char effects_table[MAX_EFFECTS][6] = { 247static const __u8 effects_table[MAX_EFFECTS][6] = {
256 {0xa8, 0xe8, 0xc6, 0xd2, 0xc0, 0x00}, /* Normal */ 248 {0xa8, 0xe8, 0xc6, 0xd2, 0xc0, 0x00}, /* Normal */
257 {0xa8, 0xc8, 0xc6, 0x52, 0xc0, 0x04}, /* Repujar */ 249 {0xa8, 0xc8, 0xc6, 0x52, 0xc0, 0x04}, /* Repujar */
258 {0xa8, 0xe8, 0xc6, 0xd2, 0xc0, 0x20}, /* Monochrome */ 250 {0xa8, 0xe8, 0xc6, 0xd2, 0xc0, 0x20}, /* Monochrome */
@@ -262,7 +254,7 @@ unsigned char effects_table[MAX_EFFECTS][6] = {
262 {0xa8, 0xc8, 0xc6, 0xd2, 0xc0, 0x40}, /* Negative */ 254 {0xa8, 0xc8, 0xc6, 0xd2, 0xc0, 0x40}, /* Negative */
263}; 255};
264 256
265unsigned char gamma_table[MAX_GAMMA][34] = { 257static const __u8 gamma_table[MAX_GAMMA][34] = {
266 {0x90, 0x00, 0x91, 0x3e, 0x92, 0x69, 0x93, 0x85, 258 {0x90, 0x00, 0x91, 0x3e, 0x92, 0x69, 0x93, 0x85,
267 0x94, 0x95, 0x95, 0xa1, 0x96, 0xae, 0x97, 0xb9, 259 0x94, 0x95, 0x95, 0xa1, 0x96, 0xae, 0x97, 0xb9,
268 0x98, 0xc2, 0x99, 0xcb, 0x9a, 0xd4, 0x9b, 0xdb, 260 0x98, 0xc2, 0x99, 0xcb, 0x9a, 0xd4, 0x9b, 0xdb,
@@ -345,7 +337,7 @@ unsigned char gamma_table[MAX_GAMMA][34] = {
345 0xA0, 0xFF} 337 0xA0, 0xFF}
346}; 338};
347 339
348static __u8 tas5130a_sensor_init[][8] = { 340static const __u8 tas5130a_sensor_init[][8] = {
349 {0x62, 0x08, 0x63, 0x70, 0x64, 0x1d, 0x60, 0x09}, 341 {0x62, 0x08, 0x63, 0x70, 0x64, 0x1d, 0x60, 0x09},
350 {0x62, 0x20, 0x63, 0x01, 0x64, 0x02, 0x60, 0x09}, 342 {0x62, 0x20, 0x63, 0x01, 0x64, 0x02, 0x60, 0x09},
351 {0x62, 0x07, 0x63, 0x03, 0x64, 0x00, 0x60, 0x09}, 343 {0x62, 0x07, 0x63, 0x03, 0x64, 0x00, 0x60, 0x09},
@@ -366,22 +358,41 @@ static void t16RegRead(struct usb_device *dev,
366 358
367static void t16RegWrite(struct usb_device *dev, 359static void t16RegWrite(struct usb_device *dev,
368 __u16 value, 360 __u16 value,
369 __u16 index, __u8 *buffer, __u16 len) 361 __u16 index,
362 const __u8 *buffer, __u16 len)
370{ 363{
371 __u8 tmpbuf[70]; 364 if (buffer == NULL) {
372 365 usb_control_msg(dev,
373#ifdef CONFIG_VIDEO_ADV_DEBUG 366 usb_sndctrlpipe(dev, 0),
374 if (len > sizeof tmpbuf) { 367 0,
375 PDEBUG(D_ERR|D_PACK, "reg_w: buffer overflow"); 368 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
369 value, index,
370 NULL, 0, 500);
376 return; 371 return;
377 } 372 }
378#endif 373 if (len < 16) {
379 memcpy(tmpbuf, buffer, len); 374 __u8 tmpbuf[16];
380 usb_control_msg(dev, 375
381 usb_sndctrlpipe(dev, 0), 376 memcpy(tmpbuf, buffer, len);
382 0, /* request */ 377 usb_control_msg(dev,
383 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 378 usb_sndctrlpipe(dev, 0),
384 value, index, tmpbuf, len, 500); 379 0,
380 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
381 value, index,
382 tmpbuf, len, 500);
383 } else {
384 __u8 *tmpbuf;
385
386 tmpbuf = kmalloc(len, GFP_KERNEL);
387 memcpy(tmpbuf, buffer, len);
388 usb_control_msg(dev,
389 usb_sndctrlpipe(dev, 0),
390 0,
391 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
392 value, index,
393 tmpbuf, len, 500);
394 kfree(tmpbuf);
395 }
385} 396}
386 397
387/* this function is called at probe time */ 398/* this function is called at probe time */
@@ -421,18 +432,18 @@ static int init_default_parameters(struct gspca_dev *gspca_dev)
421 int i = 0; 432 int i = 0;
422 __u8 test_byte; 433 __u8 test_byte;
423 434
424 static unsigned char read_indexs[] = 435 static const __u8 read_indexs[] =
425 { 0x06, 0x07, 0x0a, 0x0b, 0x66, 0x80, 0x81, 0x8e, 0x8f, 0xa5, 436 { 0x06, 0x07, 0x0a, 0x0b, 0x66, 0x80, 0x81, 0x8e, 0x8f, 0xa5,
426 0xa6, 0xa8, 0xbb, 0xbc, 0xc6, 0x00, 0x00 }; 437 0xa6, 0xa8, 0xbb, 0xbc, 0xc6, 0x00, 0x00 };
427 static unsigned char n1[6] = 438 static const __u8 n1[6] =
428 {0x08, 0x03, 0x09, 0x03, 0x12, 0x04}; 439 {0x08, 0x03, 0x09, 0x03, 0x12, 0x04};
429 static unsigned char n2[2] = 440 static const __u8 n2[2] =
430 {0x08, 0x00}; 441 {0x08, 0x00};
431 static unsigned char nset[6] = 442 static const __u8 nset[6] =
432 { 0x61, 0x68, 0x62, 0xff, 0x60, 0x07 }; 443 { 0x61, 0x68, 0x62, 0xff, 0x60, 0x07 };
433 static unsigned char n3[6] = 444 static const __u8 n3[6] =
434 {0x61, 0x68, 0x65, 0x0a, 0x60, 0x04}; 445 {0x61, 0x68, 0x65, 0x0a, 0x60, 0x04};
435 static unsigned char n4[0x46] = 446 static const __u8 n4[0x46] =
436 {0x09, 0x01, 0x12, 0x04, 0x66, 0x8a, 0x80, 0x3c, 447 {0x09, 0x01, 0x12, 0x04, 0x66, 0x8a, 0x80, 0x3c,
437 0x81, 0x22, 0x84, 0x50, 0x8a, 0x78, 0x8b, 0x68, 448 0x81, 0x22, 0x84, 0x50, 0x8a, 0x78, 0x8b, 0x68,
438 0x8c, 0x88, 0x8e, 0x33, 0x8f, 0x24, 0xaa, 0xb1, 449 0x8c, 0x88, 0x8e, 0x33, 0x8f, 0x24, 0xaa, 0xb1,
@@ -442,40 +453,40 @@ static int init_default_parameters(struct gspca_dev *gspca_dev)
442 0x65, 0x0a, 0xbb, 0x86, 0xaf, 0x58, 0xb0, 0x68, 453 0x65, 0x0a, 0xbb, 0x86, 0xaf, 0x58, 0xb0, 0x68,
443 0x87, 0x40, 0x89, 0x2b, 0x8d, 0xff, 0x83, 0x40, 454 0x87, 0x40, 0x89, 0x2b, 0x8d, 0xff, 0x83, 0x40,
444 0xac, 0x84, 0xad, 0x86, 0xaf, 0x46}; 455 0xac, 0x84, 0xad, 0x86, 0xaf, 0x46};
445 static unsigned char nset4[18] = { 456 static const __u8 nset4[18] = {
446 0xe0, 0x60, 0xe1, 0xa8, 0xe2, 0xe0, 0xe3, 0x60, 0xe4, 0xa8, 457 0xe0, 0x60, 0xe1, 0xa8, 0xe2, 0xe0, 0xe3, 0x60, 0xe4, 0xa8,
447 0xe5, 0xe0, 0xe6, 0x60, 0xe7, 0xa8, 458 0xe5, 0xe0, 0xe6, 0x60, 0xe7, 0xa8,
448 0xe8, 0xe0 459 0xe8, 0xe0
449 }; 460 };
450 /* ojo puede ser 0xe6 en vez de 0xe9 */ 461 /* ojo puede ser 0xe6 en vez de 0xe9 */
451 static unsigned char nset2[20] = { 462 static const __u8 nset2[20] = {
452 0xd0, 0xbb, 0xd1, 0x28, 0xd2, 0x10, 0xd3, 0x10, 0xd4, 0xbb, 463 0xd0, 0xbb, 0xd1, 0x28, 0xd2, 0x10, 0xd3, 0x10, 0xd4, 0xbb,
453 0xd5, 0x28, 0xd6, 0x1e, 0xd7, 0x27, 464 0xd5, 0x28, 0xd6, 0x1e, 0xd7, 0x27,
454 0xd8, 0xc8, 0xd9, 0xfc 465 0xd8, 0xc8, 0xd9, 0xfc
455 }; 466 };
456 static unsigned char missing[8] = 467 static const __u8 missing[8] =
457 { 0x87, 0x20, 0x88, 0x20, 0x89, 0x20, 0x80, 0x38 }; 468 { 0x87, 0x20, 0x88, 0x20, 0x89, 0x20, 0x80, 0x38 };
458 static unsigned char nset3[18] = { 469 static const __u8 nset3[18] = {
459 0xc7, 0x60, 0xc8, 0xa8, 0xc9, 0xe0, 0xca, 0x60, 0xcb, 0xa8, 470 0xc7, 0x60, 0xc8, 0xa8, 0xc9, 0xe0, 0xca, 0x60, 0xcb, 0xa8,
460 0xcc, 0xe0, 0xcd, 0x60, 0xce, 0xa8, 471 0xcc, 0xe0, 0xcd, 0x60, 0xce, 0xa8,
461 0xcf, 0xe0 472 0xcf, 0xe0
462 }; 473 };
463 static unsigned char nset5[4] = 474 static const __u8 nset5[4] =
464 { 0x8f, 0x24, 0xc3, 0x00 }; /* bright */ 475 { 0x8f, 0x24, 0xc3, 0x00 }; /* bright */
465 static unsigned char nset6[34] = { 476 static const __u8 nset6[34] = {
466 0x90, 0x00, 0x91, 0x1c, 0x92, 0x30, 0x93, 0x43, 0x94, 0x54, 477 0x90, 0x00, 0x91, 0x1c, 0x92, 0x30, 0x93, 0x43, 0x94, 0x54,
467 0x95, 0x65, 0x96, 0x75, 0x97, 0x84, 478 0x95, 0x65, 0x96, 0x75, 0x97, 0x84,
468 0x98, 0x93, 0x99, 0xa1, 0x9a, 0xb0, 0x9b, 0xbd, 0x9c, 0xca, 479 0x98, 0x93, 0x99, 0xa1, 0x9a, 0xb0, 0x9b, 0xbd, 0x9c, 0xca,
469 0x9d, 0xd8, 0x9e, 0xe5, 0x9f, 0xf2, 480 0x9d, 0xd8, 0x9e, 0xe5, 0x9f, 0xf2,
470 0xa0, 0xff 481 0xa0, 0xff
471 }; /* Gamma */ 482 }; /* Gamma */
472 static unsigned char nset7[4] = 483 static const __u8 nset7[4] =
473 { 0x66, 0xca, 0xa8, 0xf8 }; /* 50/60 Hz */ 484 { 0x66, 0xca, 0xa8, 0xf8 }; /* 50/60 Hz */
474 static unsigned char nset9[4] = 485 static const __u8 nset9[4] =
475 { 0x0b, 0x04, 0x0a, 0x78 }; 486 { 0x0b, 0x04, 0x0a, 0x78 };
476 static unsigned char nset8[6] = 487 static const __u8 nset8[6] =
477 { 0xa8, 0xf0, 0xc6, 0x88, 0xc0, 0x00 }; 488 { 0xa8, 0xf0, 0xc6, 0x88, 0xc0, 0x00 };
478 static unsigned char nset10[6] = 489 static const __u8 nset10[6] =
479 { 0x0c, 0x03, 0xab, 0x10, 0x81, 0x20 }; 490 { 0x0c, 0x03, 0xab, 0x10, 0x81, 0x20 };
480 491
481 t16RegWrite(dev, 0x01, 0x0000, n1, 0x06); 492 t16RegWrite(dev, 0x01, 0x0000, n1, 0x06);
@@ -493,31 +504,31 @@ static int init_default_parameters(struct gspca_dev *gspca_dev)
493 t16RegWrite(dev, 0x01, 0x0000, n3, 0x06); 504 t16RegWrite(dev, 0x01, 0x0000, n3, 0x06);
494 t16RegWrite(dev, 0x01, 0x0000, n4, 0x46); 505 t16RegWrite(dev, 0x01, 0x0000, n4, 0x46);
495 t16RegRead(dev, 0x0080, &test_byte, 1); 506 t16RegRead(dev, 0x0080, &test_byte, 1);
496 t16RegWrite(dev, 0x00, 0x2c80, 0x00, 0x0); 507 t16RegWrite(dev, 0x00, 0x2c80, NULL, 0x0);
497 t16RegWrite(dev, 0x01, 0x0000, nset2, 0x14); 508 t16RegWrite(dev, 0x01, 0x0000, nset2, 0x14);
498 t16RegWrite(dev, 0x01, 0x0000, nset3, 0x12); 509 t16RegWrite(dev, 0x01, 0x0000, nset3, 0x12);
499 t16RegWrite(dev, 0x01, 0x0000, nset4, 0x12); 510 t16RegWrite(dev, 0x01, 0x0000, nset4, 0x12);
500 t16RegWrite(dev, 0x00, 0x3880, 0x00, 0x0); 511 t16RegWrite(dev, 0x00, 0x3880, NULL, 0x0);
501 t16RegWrite(dev, 0x00, 0x3880, 0x00, 0x0); 512 t16RegWrite(dev, 0x00, 0x3880, NULL, 0x0);
502 t16RegWrite(dev, 0x00, 0x338e, 0x00, 0x0); 513 t16RegWrite(dev, 0x00, 0x338e, NULL, 0x0);
503 t16RegWrite(dev, 0x01, 0x0000, nset5, 0x04); 514 t16RegWrite(dev, 0x01, 0x0000, nset5, 0x04);
504 t16RegWrite(dev, 0x00, 0x00a9, 0x00, 0x0); 515 t16RegWrite(dev, 0x00, 0x00a9, NULL, 0x0);
505 t16RegWrite(dev, 0x01, 0x0000, nset6, 0x22); 516 t16RegWrite(dev, 0x01, 0x0000, nset6, 0x22);
506 t16RegWrite(dev, 0x00, 0x86bb, 0x00, 0x0); 517 t16RegWrite(dev, 0x00, 0x86bb, NULL, 0x0);
507 t16RegWrite(dev, 0x00, 0x4aa6, 0x00, 0x0); 518 t16RegWrite(dev, 0x00, 0x4aa6, NULL, 0x0);
508 519
509 t16RegWrite(dev, 0x01, 0x0000, missing, 0x08); 520 t16RegWrite(dev, 0x01, 0x0000, missing, 0x08);
510 521
511 t16RegWrite(dev, 0x00, 0x2087, 0x00, 0x0); 522 t16RegWrite(dev, 0x00, 0x2087, NULL, 0x0);
512 t16RegWrite(dev, 0x00, 0x2088, 0x00, 0x0); 523 t16RegWrite(dev, 0x00, 0x2088, NULL, 0x0);
513 t16RegWrite(dev, 0x00, 0x2089, 0x00, 0x0); 524 t16RegWrite(dev, 0x00, 0x2089, NULL, 0x0);
514 525
515 t16RegWrite(dev, 0x01, 0x0000, nset7, 0x04); 526 t16RegWrite(dev, 0x01, 0x0000, nset7, 0x04);
516 t16RegWrite(dev, 0x01, 0x0000, nset10, 0x06); 527 t16RegWrite(dev, 0x01, 0x0000, nset10, 0x06);
517 t16RegWrite(dev, 0x01, 0x0000, nset8, 0x06); 528 t16RegWrite(dev, 0x01, 0x0000, nset8, 0x06);
518 t16RegWrite(dev, 0x01, 0x0000, nset9, 0x04); 529 t16RegWrite(dev, 0x01, 0x0000, nset9, 0x04);
519 530
520 t16RegWrite(dev, 0x00, 0x2880, 0x00, 0x00); 531 t16RegWrite(dev, 0x00, 0x2880, NULL, 0x00);
521 t16RegWrite(dev, 0x01, 0x0000, nset2, 0x14); 532 t16RegWrite(dev, 0x01, 0x0000, nset2, 0x14);
522 t16RegWrite(dev, 0x01, 0x0000, nset3, 0x12); 533 t16RegWrite(dev, 0x01, 0x0000, nset3, 0x12);
523 t16RegWrite(dev, 0x01, 0x0000, nset4, 0x12); 534 t16RegWrite(dev, 0x01, 0x0000, nset4, 0x12);
@@ -530,7 +541,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
530 struct sd *sd = (struct sd *) gspca_dev; 541 struct sd *sd = (struct sd *) gspca_dev;
531 struct usb_device *dev = gspca_dev->dev; 542 struct usb_device *dev = gspca_dev->dev;
532 unsigned int brightness; 543 unsigned int brightness;
533 unsigned char set6[4] = { 0x8f, 0x26, 0xc3, 0x80 }; 544 __u8 set6[4] = { 0x8f, 0x26, 0xc3, 0x80 };
534 brightness = sd->brightness; 545 brightness = sd->brightness;
535 546
536 if (brightness < 7) { 547 if (brightness < 7) {
@@ -548,7 +559,7 @@ static void setflip(struct gspca_dev *gspca_dev)
548 struct sd *sd = (struct sd *) gspca_dev; 559 struct sd *sd = (struct sd *) gspca_dev;
549 struct usb_device *dev = gspca_dev->dev; 560 struct usb_device *dev = gspca_dev->dev;
550 561
551 unsigned char flipcmd[8] = 562 __u8 flipcmd[8] =
552 { 0x62, 0x07, 0x63, 0x03, 0x64, 0x00, 0x60, 0x09 }; 563 { 0x62, 0x07, 0x63, 0x03, 0x64, 0x00, 0x60, 0x09 };
553 564
554 if (sd->mirror == 1) 565 if (sd->mirror == 1)
@@ -570,9 +581,9 @@ static void seteffect(struct gspca_dev *gspca_dev)
570 } 581 }
571 582
572 if (sd->effect == 1 || sd->effect == 4) 583 if (sd->effect == 1 || sd->effect == 4)
573 t16RegWrite(dev, 0x00, 0x4aa6, 0x00, 0x00); 584 t16RegWrite(dev, 0x00, 0x4aa6, NULL, 0x00);
574 else 585 else
575 t16RegWrite(dev, 0x00, 0xfaa6, 0x00, 0x00); 586 t16RegWrite(dev, 0x00, 0xfaa6, NULL, 0x00);
576} 587}
577 588
578static void setwhitebalance(struct gspca_dev *gspca_dev) 589static void setwhitebalance(struct gspca_dev *gspca_dev)
@@ -580,7 +591,7 @@ static void setwhitebalance(struct gspca_dev *gspca_dev)
580 struct sd *sd = (struct sd *) gspca_dev; 591 struct sd *sd = (struct sd *) gspca_dev;
581 struct usb_device *dev = gspca_dev->dev; 592 struct usb_device *dev = gspca_dev->dev;
582 593
583 unsigned char white_balance[8] = 594 __u8 white_balance[8] =
584 { 0x87, 0x20, 0x88, 0x20, 0x89, 0x20, 0x80, 0x38 }; 595 { 0x87, 0x20, 0x88, 0x20, 0x89, 0x20, 0x80, 0x38 };
585 596
586 if (sd->whitebalance == 1) 597 if (sd->whitebalance == 1)
@@ -613,18 +624,17 @@ static void setcontrast(struct gspca_dev *gspca_dev)
613 else 624 else
614 reg_to_write = (0x00a9 + ((contrast - 7) * 0x200)); 625 reg_to_write = (0x00a9 + ((contrast - 7) * 0x200));
615 626
616 t16RegWrite(dev, 0x00, reg_to_write, 0x00, 0); 627 t16RegWrite(dev, 0x00, reg_to_write, NULL, 0);
617
618} 628}
619 629
620static void setcolors(struct gspca_dev *gspca_dev) 630static void setcolors(struct gspca_dev *gspca_dev)
621{ 631{
622 struct sd *sd = (struct sd *) gspca_dev; 632 struct sd *sd = (struct sd *) gspca_dev;
623 struct usb_device *dev = gspca_dev->dev; 633 struct usb_device *dev = gspca_dev->dev;
624 __u16 reg_to_write = 0x00; 634 __u16 reg_to_write;
625 635
626 reg_to_write = 0xc0bb + sd->colors * 0x100; 636 reg_to_write = 0xc0bb + sd->colors * 0x100;
627 t16RegWrite(dev, 0x00, reg_to_write, 0x00, 0); 637 t16RegWrite(dev, 0x00, reg_to_write, NULL, 0);
628} 638}
629 639
630static void setgamma(struct gspca_dev *gspca_dev) 640static void setgamma(struct gspca_dev *gspca_dev)
@@ -635,11 +645,11 @@ static void setsharpness(struct gspca_dev *gspca_dev)
635{ 645{
636 struct sd *sd = (struct sd *) gspca_dev; 646 struct sd *sd = (struct sd *) gspca_dev;
637 struct usb_device *dev = gspca_dev->dev; 647 struct usb_device *dev = gspca_dev->dev;
638 __u16 reg_to_write = 0x00; 648 __u16 reg_to_write;
639 649
640 reg_to_write = 0x0aa6 + 0x1000 * sd->sharpness; 650 reg_to_write = 0x0aa6 + 0x1000 * sd->sharpness;
641 651
642 t16RegWrite(dev, 0x00, reg_to_write, 0x00, 0x00); 652 t16RegWrite(dev, 0x00, reg_to_write, NULL, 0x00);
643} 653}
644 654
645static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val) 655static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
@@ -655,6 +665,7 @@ static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
655static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val) 665static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val)
656{ 666{
657 struct sd *sd = (struct sd *) gspca_dev; 667 struct sd *sd = (struct sd *) gspca_dev;
668
658 *val = sd->brightness; 669 *val = sd->brightness;
659 return *val; 670 return *val;
660} 671}
@@ -677,7 +688,6 @@ static int sd_getwhitebalance(struct gspca_dev *gspca_dev, __s32 *val)
677 return *val; 688 return *val;
678} 689}
679 690
680
681static int sd_setflip(struct gspca_dev *gspca_dev, __s32 val) 691static int sd_setflip(struct gspca_dev *gspca_dev, __s32 val)
682{ 692{
683 struct sd *sd = (struct sd *) gspca_dev; 693 struct sd *sd = (struct sd *) gspca_dev;
@@ -811,9 +821,9 @@ static int sd_setlowlight(struct gspca_dev *gspca_dev, __s32 val)
811 821
812 sd->autogain = val; 822 sd->autogain = val;
813 if (val != 0) 823 if (val != 0)
814 t16RegWrite(dev, 0x00, 0xf48e, 0x00, 0); 824 t16RegWrite(dev, 0x00, 0xf48e, NULL, 0);
815 else 825 else
816 t16RegWrite(dev, 0x00, 0xb48e, 0x00, 0); 826 t16RegWrite(dev, 0x00, 0xb48e, NULL, 0);
817 return 0; 827 return 0;
818} 828}
819 829
@@ -831,12 +841,12 @@ static void sd_start(struct gspca_dev *gspca_dev)
831 int mode; 841 int mode;
832 __u8 test_byte; 842 __u8 test_byte;
833 843
834 static __u8 t1[] = { 0x66, 0x00, 0xa8, 0xe8 }; 844 static const __u8 t1[] = { 0x66, 0x00, 0xa8, 0xe8 };
835 __u8 t2[] = { 0x07, 0x00, 0x0d, 0x60, 0x0e, 0x80 }; 845 __u8 t2[] = { 0x07, 0x00, 0x0d, 0x60, 0x0e, 0x80 };
836 static __u8 t3[] = 846 static const __u8 t3[] =
837 { 0xb3, 0x07, 0xb4, 0x00, 0xb5, 0x88, 0xb6, 0x02, 0xb7, 0x06, 847 { 0xb3, 0x07, 0xb4, 0x00, 0xb5, 0x88, 0xb6, 0x02, 0xb7, 0x06,
838 0xb8, 0x00, 0xb9, 0xe7, 0xba, 0x01 }; 848 0xb8, 0x00, 0xb9, 0xe7, 0xba, 0x01 };
839 static __u8 t4[] = { 0x0b, 0x04, 0x0a, 0x40 }; 849 static const __u8 t4[] = { 0x0b, 0x04, 0x0a, 0x40 };
840 850
841 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode]. mode; 851 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode]. mode;
842 switch (mode) { 852 switch (mode) {
@@ -860,16 +870,16 @@ static void sd_start(struct gspca_dev *gspca_dev)
860 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[1], 0x8); 870 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[1], 0x8);
861 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[2], 0x8); 871 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[2], 0x8);
862 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[3], 0x8); 872 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[3], 0x8);
863 t16RegWrite(dev, 0x00, 0x3c80, 0x00, 0x00); 873 t16RegWrite(dev, 0x00, 0x3c80, NULL, 0x00);
864 /* just in case and to keep sync with logs (for mine) */ 874 /* just in case and to keep sync with logs (for mine) */
865 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[3], 0x8); 875 t16RegWrite(dev, 0x01, 0x0000, tas5130a_sensor_init[3], 0x8);
866 t16RegWrite(dev, 0x00, 0x3c80, 0x00, 0x00); 876 t16RegWrite(dev, 0x00, 0x3c80, NULL, 0x00);
867 /* just in case and to keep sync with logs (for mine) */ 877 /* just in case and to keep sync with logs (for mine) */
868 t16RegWrite(dev, 0x01, 0x0000, t1, 4); 878 t16RegWrite(dev, 0x01, 0x0000, t1, 4);
869 t16RegWrite(dev, 0x01, 0x0000, t2, 6); 879 t16RegWrite(dev, 0x01, 0x0000, t2, 6);
870 t16RegRead(dev, 0x0012, &test_byte, 0x1); 880 t16RegRead(dev, 0x0012, &test_byte, 0x1);
871 t16RegWrite(dev, 0x01, 0x0000, t3, 0x10); 881 t16RegWrite(dev, 0x01, 0x0000, t3, 0x10);
872 t16RegWrite(dev, 0x00, 0x0013, 0x00, 0x00); 882 t16RegWrite(dev, 0x00, 0x0013, NULL, 0x00);
873 t16RegWrite(dev, 0x01, 0x0000, t4, 0x4); 883 t16RegWrite(dev, 0x01, 0x0000, t4, 0x4);
874 /* restart on each start, just in case, sometimes regs goes wrong 884 /* restart on each start, just in case, sometimes regs goes wrong
875 * when using controls from app */ 885 * when using controls from app */
@@ -892,11 +902,11 @@ static void sd_close(struct gspca_dev *gspca_dev)
892 902
893static void sd_pkt_scan(struct gspca_dev *gspca_dev, 903static void sd_pkt_scan(struct gspca_dev *gspca_dev,
894 struct gspca_frame *frame, /* target */ 904 struct gspca_frame *frame, /* target */
895 unsigned char *data, /* isoc packet */ 905 __u8 *data, /* isoc packet */
896 int len) /* iso packet length */ 906 int len) /* iso packet length */
897{ 907{
898 int sof = 0; 908 int sof = 0;
899 static unsigned char ffd9[] = { 0xff, 0xd9 }; 909 static __u8 ffd9[] = { 0xff, 0xd9 };
900 910
901 if (data[0] == 0x5a) { 911 if (data[0] == 0x5a) {
902 /* Control Packet, after this came the header again, 912 /* Control Packet, after this came the header again,
@@ -935,27 +945,26 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
935static int sd_querymenu(struct gspca_dev *gspca_dev, 945static int sd_querymenu(struct gspca_dev *gspca_dev,
936 struct v4l2_querymenu *menu) 946 struct v4l2_querymenu *menu)
937{ 947{
938 memset(menu->name, 0, sizeof menu->name);
939
940 switch (menu->id) { 948 switch (menu->id) {
941 case V4L2_CID_POWER_LINE_FREQUENCY: 949 case V4L2_CID_POWER_LINE_FREQUENCY:
942 switch (menu->index) { 950 switch (menu->index) {
943 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */ 951 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */
944 strcpy(menu->name, "50 Hz"); 952 strcpy((char *) menu->name, "50 Hz");
945 return 0; 953 return 0;
946 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */ 954 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */
947 strcpy(menu->name, "60 Hz"); 955 strcpy((char *) menu->name, "60 Hz");
948 return 0; 956 return 0;
949 } 957 }
950 break; 958 break;
951 case V4L2_CID_EFFECTS: 959 case V4L2_CID_EFFECTS:
952 if (menu->index < 0 || menu->index >= NUM_EFFECTS_CONTROL) 960 if ((unsigned) menu->index < ARRAY_SIZE(effects_control)) {
953 return -EINVAL; 961 strncpy((char *) menu->name,
954 strncpy((char *) menu->name, 962 effects_control[menu->index], 32);
955 effects_control[menu->index].name, 32); 963 return 0;
964 }
956 break; 965 break;
957 } 966 }
958 return 0; 967 return -EINVAL;
959} 968}
960 969
961/* this function is called at open time */ 970/* this function is called at open time */
@@ -966,7 +975,7 @@ static int sd_open(struct gspca_dev *gspca_dev)
966} 975}
967 976
968/* sub-driver description */ 977/* sub-driver description */
969static struct sd_desc sd_desc = { 978static const struct sd_desc sd_desc = {
970 .name = MODULE_NAME, 979 .name = MODULE_NAME,
971 .ctrls = sd_ctrls, 980 .ctrls = sd_ctrls,
972 .nctrls = ARRAY_SIZE(sd_ctrls), 981 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -982,11 +991,10 @@ static struct sd_desc sd_desc = {
982 991
983/* -- module initialisation -- */ 992/* -- module initialisation -- */
984#define DVNM(name) .driver_info = (kernel_ulong_t) name 993#define DVNM(name) .driver_info = (kernel_ulong_t) name
985static __devinitdata struct usb_device_id device_table[] = { 994static const __devinitdata struct usb_device_id device_table[] = {
986 {USB_DEVICE(0x17a1, 0x0128), DVNM("XPX Webcam")}, 995 {USB_DEVICE(0x17a1, 0x0128), DVNM("XPX Webcam")},
987 {} 996 {}
988}; 997};
989
990MODULE_DEVICE_TABLE(usb, device_table); 998MODULE_DEVICE_TABLE(usb, device_table);
991 999
992/* -- device connect -- */ 1000/* -- device connect -- */
diff --git a/drivers/media/video/gspca/tv8532.c b/drivers/media/video/gspca/tv8532.c
index 6da5280b5433..8561234d65e2 100644
--- a/drivers/media/video/gspca/tv8532.c
+++ b/drivers/media/video/gspca/tv8532.c
@@ -22,8 +22,8 @@
22 22
23#include "gspca.h" 23#include "gspca.h"
24 24
25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 25#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
26static const char version[] = "2.1.0"; 26static const char version[] = "2.1.4";
27 27
28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 28MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
29MODULE_DESCRIPTION("TV8532 USB Camera Driver"); 29MODULE_DESCRIPTION("TV8532 USB Camera Driver");
@@ -152,7 +152,7 @@ static struct cam_mode sif_mode[] = {
152#define TV8532_AD_ROWBEGIN_L 0x14 152#define TV8532_AD_ROWBEGIN_L 0x14
153#define TV8532_AD_ROWBEGIN_H 0x15 153#define TV8532_AD_ROWBEGIN_H 0x15
154 154
155static __u32 tv_8532_eeprom_data[] = { 155static const __u32 tv_8532_eeprom_data[] = {
156/* add dataL dataM dataH */ 156/* add dataL dataM dataH */
157 0x00010001, 0x01018011, 0x02050014, 0x0305001c, 157 0x00010001, 0x01018011, 0x02050014, 0x0305001c,
158 0x040d001e, 0x0505001f, 0x06050519, 0x0705011b, 158 0x040d001e, 0x0505001f, 0x06050519, 0x0705011b,
@@ -243,7 +243,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
243static void tv_8532ReadRegisters(struct gspca_dev *gspca_dev) 243static void tv_8532ReadRegisters(struct gspca_dev *gspca_dev)
244{ 244{
245 struct usb_device *dev = gspca_dev->dev; 245 struct usb_device *dev = gspca_dev->dev;
246 __u8 data = 0; 246 __u8 data;
247/* __u16 vid, pid; */ 247/* __u16 vid, pid; */
248 248
249 reg_r(dev, 0x0001, &data); 249 reg_r(dev, 0x0001, &data);
@@ -275,7 +275,7 @@ static void tv_8532ReadRegisters(struct gspca_dev *gspca_dev)
275static void tv_8532_setReg(struct gspca_dev *gspca_dev) 275static void tv_8532_setReg(struct gspca_dev *gspca_dev)
276{ 276{
277 struct usb_device *dev = gspca_dev->dev; 277 struct usb_device *dev = gspca_dev->dev;
278 __u8 data = 0; 278 __u8 data;
279 __u8 value[2] = { 0, 0 }; 279 __u8 value[2] = { 0, 0 };
280 280
281 data = ADCBEGINL; 281 data = ADCBEGINL;
@@ -320,7 +320,7 @@ static void tv_8532_setReg(struct gspca_dev *gspca_dev)
320static void tv_8532_PollReg(struct gspca_dev *gspca_dev) 320static void tv_8532_PollReg(struct gspca_dev *gspca_dev)
321{ 321{
322 struct usb_device *dev = gspca_dev->dev; 322 struct usb_device *dev = gspca_dev->dev;
323 __u8 data = 0; 323 __u8 data;
324 int i; 324 int i;
325 325
326 /* strange polling from tgc */ 326 /* strange polling from tgc */
@@ -338,9 +338,9 @@ static void tv_8532_PollReg(struct gspca_dev *gspca_dev)
338static int sd_open(struct gspca_dev *gspca_dev) 338static int sd_open(struct gspca_dev *gspca_dev)
339{ 339{
340 struct usb_device *dev = gspca_dev->dev; 340 struct usb_device *dev = gspca_dev->dev;
341 __u8 data = 0; 341 __u8 data;
342 __u8 dataStart = 0; 342 __u8 dataStart;
343 __u8 value[2] = { 0, 0 }; 343 __u8 value[2];
344 344
345 data = 0x32; 345 data = 0x32;
346 reg_w(dev, TV8532_AD_SLOPE, &data, 1); 346 reg_w(dev, TV8532_AD_SLOPE, &data, 1);
@@ -646,7 +646,7 @@ static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val)
646} 646}
647 647
648/* sub-driver description */ 648/* sub-driver description */
649static struct sd_desc sd_desc = { 649static const struct sd_desc sd_desc = {
650 .name = MODULE_NAME, 650 .name = MODULE_NAME,
651 .ctrls = sd_ctrls, 651 .ctrls = sd_ctrls,
652 .nctrls = ARRAY_SIZE(sd_ctrls), 652 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -661,7 +661,7 @@ static struct sd_desc sd_desc = {
661 661
662/* -- module initialisation -- */ 662/* -- module initialisation -- */
663#define DVNM(name) .driver_info = (kernel_ulong_t) name 663#define DVNM(name) .driver_info = (kernel_ulong_t) name
664static __devinitdata struct usb_device_id device_table[] = { 664static const __devinitdata struct usb_device_id device_table[] = {
665 {USB_DEVICE(0x046d, 0x0920), DVNM("QC Express")}, 665 {USB_DEVICE(0x046d, 0x0920), DVNM("QC Express")},
666 {USB_DEVICE(0x046d, 0x0921), DVNM("Labtec Webcam")}, 666 {USB_DEVICE(0x046d, 0x0921), DVNM("Labtec Webcam")},
667 {USB_DEVICE(0x0545, 0x808b), DVNM("Veo Stingray")}, 667 {USB_DEVICE(0x0545, 0x808b), DVNM("Veo Stingray")},
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c
index 8b5f6d17d2a5..4144e11c60bb 100644
--- a/drivers/media/video/gspca/vc032x.c
+++ b/drivers/media/video/gspca/vc032x.c
@@ -24,8 +24,8 @@
24 24
25#include "gspca.h" 25#include "gspca.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
31MODULE_DESCRIPTION("GSPCA/VC032X USB Camera Driver"); 31MODULE_DESCRIPTION("GSPCA/VC032X USB Camera Driver");
@@ -97,7 +97,7 @@ static struct cam_mode vc0323_mode[] = {
97 {V4L2_PIX_FMT_JPEG, 640, 480, 0}, 97 {V4L2_PIX_FMT_JPEG, 640, 480, 0},
98}; 98};
99 99
100static __u8 mi1310_socinitVGA_JPG[][4] = { 100static const __u8 mi1310_socinitVGA_JPG[][4] = {
101 {0xb0, 0x03, 0x19, 0xcc}, 101 {0xb0, 0x03, 0x19, 0xcc},
102 {0xb0, 0x04, 0x02, 0xcc}, 102 {0xb0, 0x04, 0x02, 0xcc},
103 {0xb3, 0x00, 0x64, 0xcc}, 103 {0xb3, 0x00, 0x64, 0xcc},
@@ -249,7 +249,7 @@ static __u8 mi1310_socinitVGA_JPG[][4] = {
249 {0x03, 0x03, 0xc0, 0xbb}, 249 {0x03, 0x03, 0xc0, 0xbb},
250 {}, 250 {},
251}; 251};
252static __u8 mi1310_socinitQVGA_JPG[][4] = { 252static const __u8 mi1310_socinitQVGA_JPG[][4] = {
253 {0xb0, 0x03, 0x19, 0xcc}, {0xb0, 0x04, 0x02, 0xcc}, 253 {0xb0, 0x03, 0x19, 0xcc}, {0xb0, 0x04, 0x02, 0xcc},
254 {0xb3, 0x00, 0x64, 0xcc}, {0xb3, 0x00, 0x65, 0xcc}, 254 {0xb3, 0x00, 0x64, 0xcc}, {0xb3, 0x00, 0x65, 0xcc},
255 {0xb3, 0x05, 0x00, 0xcc}, {0xb3, 0x06, 0x00, 0xcc}, 255 {0xb3, 0x05, 0x00, 0xcc}, {0xb3, 0x06, 0x00, 0xcc},
@@ -323,14 +323,14 @@ static __u8 mi1310_socinitQVGA_JPG[][4] = {
323 {}, 323 {},
324}; 324};
325 325
326static __u8 mi1320_gamma[17] = { 326static const __u8 mi1320_gamma[17] = {
327 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, 327 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
328 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff 328 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
329}; 329};
330static __u8 mi1320_matrix[9] = { 330static const __u8 mi1320_matrix[9] = {
331 0x54, 0xda, 0x06, 0xf1, 0x50, 0xf4, 0xf7, 0xea, 0x52 331 0x54, 0xda, 0x06, 0xf1, 0x50, 0xf4, 0xf7, 0xea, 0x52
332}; 332};
333static __u8 mi1320_initVGA_data[][4] = { 333static const __u8 mi1320_initVGA_data[][4] = {
334 {0xb3, 0x01, 0x01, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 334 {0xb3, 0x01, 0x01, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
335 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 335 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
336 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 336 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
@@ -409,7 +409,7 @@ static __u8 mi1320_initVGA_data[][4] = {
409 {0xb3, 0x5c, 0x01, 0xcc}, {0xb3, 0x01, 0x41, 0xcc}, 409 {0xb3, 0x5c, 0x01, 0xcc}, {0xb3, 0x01, 0x41, 0xcc},
410 {} 410 {}
411}; 411};
412static __u8 mi1320_initQVGA_data[][4] = { 412static const __u8 mi1320_initQVGA_data[][4] = {
413 {0xb3, 0x01, 0x01, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 413 {0xb3, 0x01, 0x01, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
414 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 414 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
415 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x33, 0xdd}, 415 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x33, 0xdd},
@@ -478,15 +478,15 @@ static __u8 mi1320_initQVGA_data[][4] = {
478 {} 478 {}
479}; 479};
480 480
481static __u8 po3130_gamma[17] = { 481static const __u8 po3130_gamma[17] = {
482 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, 482 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
483 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff 483 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
484}; 484};
485static __u8 po3130_matrix[9] = { 485static const __u8 po3130_matrix[9] = {
486 0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63 486 0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63
487}; 487};
488 488
489static __u8 po3130_initVGA_data[][4] = { 489static const __u8 po3130_initVGA_data[][4] = {
490 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 490 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
491 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc}, 491 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc},
492 {0xb3, 0x00, 0x04, 0xcc}, {0xb3, 0x00, 0x24, 0xcc}, 492 {0xb3, 0x00, 0x04, 0xcc}, {0xb3, 0x00, 0x24, 0xcc},
@@ -569,7 +569,7 @@ static __u8 po3130_initVGA_data[][4] = {
569 {0xb3, 0x5c, 0x00, 0xcc}, {0xb3, 0x01, 0x41, 0xcc}, 569 {0xb3, 0x5c, 0x00, 0xcc}, {0xb3, 0x01, 0x41, 0xcc},
570 {} 570 {}
571}; 571};
572static __u8 po3130_rundata[][4] = { 572static const __u8 po3130_rundata[][4] = {
573 {0x00, 0x47, 0x45, 0xaa}, {0x00, 0x48, 0x9b, 0xaa}, 573 {0x00, 0x47, 0x45, 0xaa}, {0x00, 0x48, 0x9b, 0xaa},
574 {0x00, 0x49, 0x3a, 0xaa}, {0x00, 0x4a, 0x01, 0xaa}, 574 {0x00, 0x49, 0x3a, 0xaa}, {0x00, 0x4a, 0x01, 0xaa},
575 {0x00, 0x44, 0x40, 0xaa}, 575 {0x00, 0x44, 0x40, 0xaa},
@@ -584,7 +584,7 @@ static __u8 po3130_rundata[][4] = {
584 {} 584 {}
585}; 585};
586 586
587static __u8 po3130_initQVGA_data[][4] = { 587static const __u8 po3130_initQVGA_data[][4] = {
588 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 588 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
589 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x09, 0xcc}, 589 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x09, 0xcc},
590 {0xb3, 0x00, 0x04, 0xcc}, {0xb3, 0x00, 0x24, 0xcc}, 590 {0xb3, 0x00, 0x04, 0xcc}, {0xb3, 0x00, 0x24, 0xcc},
@@ -670,16 +670,16 @@ static __u8 po3130_initQVGA_data[][4] = {
670 {} 670 {}
671}; 671};
672 672
673static __u8 hv7131r_gamma[17] = { 673static const __u8 hv7131r_gamma[17] = {
674/* 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, 674/* 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
675 * 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff */ 675 * 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff */
676 0x04, 0x1a, 0x36, 0x55, 0x6f, 0x87, 0x9d, 0xb0, 0xc1, 676 0x04, 0x1a, 0x36, 0x55, 0x6f, 0x87, 0x9d, 0xb0, 0xc1,
677 0xcf, 0xda, 0xe4, 0xec, 0xf3, 0xf8, 0xfd, 0xff 677 0xcf, 0xda, 0xe4, 0xec, 0xf3, 0xf8, 0xfd, 0xff
678}; 678};
679static __u8 hv7131r_matrix[9] = { 679static const __u8 hv7131r_matrix[9] = {
680 0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63 680 0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63
681}; 681};
682static __u8 hv7131r_initVGA_data[][4] = { 682static const __u8 hv7131r_initVGA_data[][4] = {
683 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 683 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
684 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc}, 684 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc},
685 {0xb3, 0x00, 0x24, 0xcc}, 685 {0xb3, 0x00, 0x24, 0xcc},
@@ -722,7 +722,7 @@ static __u8 hv7131r_initVGA_data[][4] = {
722 {} 722 {}
723}; 723};
724 724
725static __u8 hv7131r_initQVGA_data[][4] = { 725static const __u8 hv7131r_initQVGA_data[][4] = {
726 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 726 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
727 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc}, 727 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc},
728 {0xb3, 0x00, 0x24, 0xcc}, 728 {0xb3, 0x00, 0x24, 0xcc},
@@ -777,14 +777,14 @@ static __u8 hv7131r_initQVGA_data[][4] = {
777 {} 777 {}
778}; 778};
779 779
780static __u8 ov7660_gamma[17] = { 780static const __u8 ov7660_gamma[17] = {
781 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, 781 0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
782 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff 782 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
783}; 783};
784static __u8 ov7660_matrix[9] = { 784static const __u8 ov7660_matrix[9] = {
785 0x5a, 0xf0, 0xf6, 0xf3, 0x57, 0xf6, 0xf3, 0xef, 0x62 785 0x5a, 0xf0, 0xf6, 0xf3, 0x57, 0xf6, 0xf3, 0xef, 0x62
786}; 786};
787static __u8 ov7660_initVGA_data[][4] = { 787static const __u8 ov7660_initVGA_data[][4] = {
788 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 788 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
789 {0x00, 0x00, 0x50, 0xdd}, 789 {0x00, 0x00, 0x50, 0xdd},
790 {0xb0, 0x03, 0x01, 0xcc}, 790 {0xb0, 0x03, 0x01, 0xcc},
@@ -842,7 +842,7 @@ static __u8 ov7660_initVGA_data[][4] = {
842 {0x00, 0x29, 0x3c, 0xaa}, {0xb3, 0x01, 0x45, 0xcc}, 842 {0x00, 0x29, 0x3c, 0xaa}, {0xb3, 0x01, 0x45, 0xcc},
843 {} 843 {}
844}; 844};
845static __u8 ov7660_initQVGA_data[][4] = { 845static const __u8 ov7660_initQVGA_data[][4] = {
846 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc}, 846 {0xb0, 0x4d, 0x00, 0xcc}, {0xb3, 0x01, 0x01, 0xcc},
847 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc}, 847 {0x00, 0x00, 0x50, 0xdd}, {0xb0, 0x03, 0x01, 0xcc},
848 {0xb3, 0x00, 0x21, 0xcc}, {0xb3, 0x00, 0x26, 0xcc}, 848 {0xb3, 0x00, 0x21, 0xcc}, {0xb3, 0x00, 0x26, 0xcc},
@@ -911,26 +911,26 @@ static __u8 ov7660_initQVGA_data[][4] = {
911 {0x00, 0x00, 0x00, 0x00} 911 {0x00, 0x00, 0x00, 0x00}
912}; 912};
913 913
914static __u8 ov7660_50HZ[][4] = { 914static const __u8 ov7660_50HZ[][4] = {
915 {0x00, 0x3b, 0x08, 0xaa}, 915 {0x00, 0x3b, 0x08, 0xaa},
916 {0x00, 0x9d, 0x40, 0xaa}, 916 {0x00, 0x9d, 0x40, 0xaa},
917 {0x00, 0x13, 0xa7, 0xaa}, 917 {0x00, 0x13, 0xa7, 0xaa},
918 {0x00, 0x00, 0x00, 0x00} 918 {0x00, 0x00, 0x00, 0x00}
919}; 919};
920 920
921static __u8 ov7660_60HZ[][4] = { 921static const __u8 ov7660_60HZ[][4] = {
922 {0x00, 0x3b, 0x00, 0xaa}, 922 {0x00, 0x3b, 0x00, 0xaa},
923 {0x00, 0x9e, 0x40, 0xaa}, 923 {0x00, 0x9e, 0x40, 0xaa},
924 {0x00, 0x13, 0xa7, 0xaa}, 924 {0x00, 0x13, 0xa7, 0xaa},
925 {} 925 {}
926}; 926};
927 927
928static __u8 ov7660_NoFliker[][4] = { 928static const __u8 ov7660_NoFliker[][4] = {
929 {0x00, 0x13, 0x87, 0xaa}, 929 {0x00, 0x13, 0x87, 0xaa},
930 {} 930 {}
931}; 931};
932 932
933static __u8 ov7670_initVGA_JPG[][4] = { 933static const __u8 ov7670_initVGA_JPG[][4] = {
934 {0xb3, 0x01, 0x05, 0xcc}, 934 {0xb3, 0x01, 0x05, 0xcc},
935 {0x00, 0x00, 0x30, 0xdd}, {0xb0, 0x03, 0x19, 0xcc}, 935 {0x00, 0x00, 0x30, 0xdd}, {0xb0, 0x03, 0x19, 0xcc},
936 {0x00, 0x00, 0x10, 0xdd}, 936 {0x00, 0x00, 0x10, 0xdd},
@@ -1058,7 +1058,7 @@ static __u8 ov7670_initVGA_JPG[][4] = {
1058 {}, 1058 {},
1059}; 1059};
1060 1060
1061static __u8 ov7670_initQVGA_JPG[][4] = { 1061static const __u8 ov7670_initQVGA_JPG[][4] = {
1062 {0xb3, 0x01, 0x05, 0xcc}, {0x00, 0x00, 0x30, 0xdd}, 1062 {0xb3, 0x01, 0x05, 0xcc}, {0x00, 0x00, 0x30, 0xdd},
1063 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x10, 0xdd}, 1063 {0xb0, 0x03, 0x19, 0xcc}, {0x00, 0x00, 0x10, 0xdd},
1064 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x10, 0xdd}, 1064 {0xb0, 0x04, 0x02, 0xcc}, {0x00, 0x00, 0x10, 0xdd},
@@ -1200,7 +1200,7 @@ struct sensor_info {
1200 __u8 op; 1200 __u8 op;
1201 }; 1201 };
1202 1202
1203static struct sensor_info sensor_info_data[] = { 1203static const struct sensor_info sensor_info_data[] = {
1204/* sensorId, I2cAdd, IdAdd, VpId, m1, m2, op */ 1204/* sensorId, I2cAdd, IdAdd, VpId, m1, m2, op */
1205 {SENSOR_HV7131R, 0x80 | 0x11, 0x00, 0x0209, 0x24, 0x25, 0x01}, 1205 {SENSOR_HV7131R, 0x80 | 0x11, 0x00, 0x0209, 0x24, 0x25, 0x01},
1206 {SENSOR_OV7660, 0x80 | 0x21, 0x0a, 0x7660, 0x26, 0x26, 0x05}, 1206 {SENSOR_OV7660, 0x80 | 0x21, 0x0a, 0x7660, 0x26, 0x26, 0x05},
@@ -1282,7 +1282,7 @@ static int vc032x_probe_sensor(struct gspca_dev *gspca_dev)
1282 int i; 1282 int i;
1283 __u8 data; 1283 __u8 data;
1284 __u16 value; 1284 __u16 value;
1285 struct sensor_info *ptsensor_info; 1285 const struct sensor_info *ptsensor_info;
1286 1286
1287 reg_r(dev, 0xa1, 0xbfcf, &data, 1); 1287 reg_r(dev, 0xa1, 0xbfcf, &data, 1);
1288 PDEBUG(D_PROBE, "check sensor header %d", data); 1288 PDEBUG(D_PROBE, "check sensor header %d", data);
@@ -1309,7 +1309,7 @@ static int vc032x_probe_sensor(struct gspca_dev *gspca_dev)
1309} 1309}
1310 1310
1311static __u8 i2c_write(struct usb_device *dev, 1311static __u8 i2c_write(struct usb_device *dev,
1312 __u8 reg, __u8 *val, __u8 size) 1312 __u8 reg, const __u8 *val, __u8 size)
1313{ 1313{
1314 __u8 retbyte; 1314 __u8 retbyte;
1315 1315
@@ -1341,7 +1341,7 @@ static __u8 i2c_write(struct usb_device *dev,
1341} 1341}
1342 1342
1343static void put_tab_to_reg(struct gspca_dev *gspca_dev, 1343static void put_tab_to_reg(struct gspca_dev *gspca_dev,
1344 __u8 *tab, __u8 tabsize, __u16 addr) 1344 const __u8 *tab, __u8 tabsize, __u16 addr)
1345{ 1345{
1346 int j; 1346 int j;
1347 __u16 ad = addr; 1347 __u16 ad = addr;
@@ -1351,7 +1351,7 @@ static void put_tab_to_reg(struct gspca_dev *gspca_dev,
1351} 1351}
1352 1352
1353static void usb_exchange(struct gspca_dev *gspca_dev, 1353static void usb_exchange(struct gspca_dev *gspca_dev,
1354 __u8 data[][4]) 1354 const __u8 data[][4])
1355{ 1355{
1356 struct usb_device *dev = gspca_dev->dev; 1356 struct usb_device *dev = gspca_dev->dev;
1357 int i = 0; 1357 int i = 0;
@@ -1511,7 +1511,7 @@ static void setautogain(struct gspca_dev *gspca_dev)
1511static void setlightfreq(struct gspca_dev *gspca_dev) 1511static void setlightfreq(struct gspca_dev *gspca_dev)
1512{ 1512{
1513 struct sd *sd = (struct sd *) gspca_dev; 1513 struct sd *sd = (struct sd *) gspca_dev;
1514 static __u8 (*ov7660_freq_tb[3])[4] = 1514 static const __u8 (*ov7660_freq_tb[3])[4] =
1515 {ov7660_NoFliker, ov7660_50HZ, ov7660_60HZ}; 1515 {ov7660_NoFliker, ov7660_50HZ, ov7660_60HZ};
1516 1516
1517 if (sd->sensor != SENSOR_OV7660) 1517 if (sd->sensor != SENSOR_OV7660)
@@ -1523,8 +1523,8 @@ static void sd_start(struct gspca_dev *gspca_dev)
1523{ 1523{
1524 struct sd *sd = (struct sd *) gspca_dev; 1524 struct sd *sd = (struct sd *) gspca_dev;
1525/* __u8 tmp2; */ 1525/* __u8 tmp2; */
1526 __u8 *GammaT = NULL; 1526 const __u8 *GammaT = NULL;
1527 __u8 *MatrixT = NULL; 1527 const __u8 *MatrixT = NULL;
1528 int mode; 1528 int mode;
1529 1529
1530 /* Assume start use the good resolution from gspca_dev->mode */ 1530 /* Assume start use the good resolution from gspca_dev->mode */
@@ -1673,7 +1673,7 @@ static void sd_close(struct gspca_dev *gspca_dev)
1673 1673
1674static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1674static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1675 struct gspca_frame *frame, /* target */ 1675 struct gspca_frame *frame, /* target */
1676 unsigned char *data, /* isoc packet */ 1676 __u8 *data, /* isoc packet */
1677 int len) /* iso pkt length */ 1677 int len) /* iso pkt length */
1678{ 1678{
1679 struct sd *sd = (struct sd *) gspca_dev; 1679 struct sd *sd = (struct sd *) gspca_dev;
@@ -1739,13 +1739,13 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
1739 case V4L2_CID_POWER_LINE_FREQUENCY: 1739 case V4L2_CID_POWER_LINE_FREQUENCY:
1740 switch (menu->index) { 1740 switch (menu->index) {
1741 case 0: /* V4L2_CID_POWER_LINE_FREQUENCY_DISABLED */ 1741 case 0: /* V4L2_CID_POWER_LINE_FREQUENCY_DISABLED */
1742 strcpy(menu->name, "NoFliker"); 1742 strcpy((char *) menu->name, "NoFliker");
1743 return 0; 1743 return 0;
1744 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */ 1744 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */
1745 strcpy(menu->name, "50 Hz"); 1745 strcpy((char *) menu->name, "50 Hz");
1746 return 0; 1746 return 0;
1747 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */ 1747 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */
1748 strcpy(menu->name, "60 Hz"); 1748 strcpy((char *) menu->name, "60 Hz");
1749 return 0; 1749 return 0;
1750 } 1750 }
1751 break; 1751 break;
@@ -1754,7 +1754,7 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
1754} 1754}
1755 1755
1756/* sub-driver description */ 1756/* sub-driver description */
1757static struct sd_desc sd_desc = { 1757static const struct sd_desc sd_desc = {
1758 .name = MODULE_NAME, 1758 .name = MODULE_NAME,
1759 .ctrls = sd_ctrls, 1759 .ctrls = sd_ctrls,
1760 .nctrls = ARRAY_SIZE(sd_ctrls), 1760 .nctrls = ARRAY_SIZE(sd_ctrls),
@@ -1770,7 +1770,7 @@ static struct sd_desc sd_desc = {
1770 1770
1771/* -- module initialisation -- */ 1771/* -- module initialisation -- */
1772#define DVNM(name) .driver_info = (kernel_ulong_t) name 1772#define DVNM(name) .driver_info = (kernel_ulong_t) name
1773static __devinitdata struct usb_device_id device_table[] = { 1773static const __devinitdata struct usb_device_id device_table[] = {
1774 {USB_DEVICE(0x046d, 0x0892), DVNM("Logitech Orbicam")}, 1774 {USB_DEVICE(0x046d, 0x0892), DVNM("Logitech Orbicam")},
1775 {USB_DEVICE(0x046d, 0x0896), DVNM("Logitech Orbicam")}, 1775 {USB_DEVICE(0x046d, 0x0896), DVNM("Logitech Orbicam")},
1776 {USB_DEVICE(0x0ac8, 0x0321), DVNM("Vimicro generic vc0321")}, 1776 {USB_DEVICE(0x0ac8, 0x0321), DVNM("Vimicro generic vc0321")},
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c
index ccd24cb92b3f..878344e4d2ec 100644
--- a/drivers/media/video/gspca/zc3xx.c
+++ b/drivers/media/video/gspca/zc3xx.c
@@ -24,8 +24,8 @@
24 24
25#include "gspca.h" 25#include "gspca.h"
26 26
27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) 27#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 4)
28static const char version[] = "2.1.0"; 28static const char version[] = "2.1.4";
29 29
30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>, " 30MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>, "
31 "Serge A. Suchkov <Serge.A.S@tochka.ru>"); 31 "Serge A. Suchkov <Serge.A.S@tochka.ru>");
@@ -190,7 +190,7 @@ struct usb_action {
190 __u16 idx; 190 __u16 idx;
191}; 191};
192 192
193static struct usb_action cs2102_Initial[] = { 193static const struct usb_action cs2102_Initial[] = {
194 {0xa1, 0x01, 0x0008}, 194 {0xa1, 0x01, 0x0008},
195 {0xa1, 0x01, 0x0008}, 195 {0xa1, 0x01, 0x0008},
196 {0xa0, 0x01, 0x0000}, 196 {0xa0, 0x01, 0x0000},
@@ -320,7 +320,7 @@ static struct usb_action cs2102_Initial[] = {
320 {} 320 {}
321}; 321};
322 322
323static struct usb_action cs2102_InitialScale[] = { 323static const struct usb_action cs2102_InitialScale[] = {
324 {0xa1, 0x01, 0x0008}, 324 {0xa1, 0x01, 0x0008},
325 {0xa1, 0x01, 0x0008}, 325 {0xa1, 0x01, 0x0008},
326 {0xa0, 0x01, 0x0000}, 326 {0xa0, 0x01, 0x0000},
@@ -449,7 +449,7 @@ static struct usb_action cs2102_InitialScale[] = {
449 {0xa0, 0x40, 0x0118}, 449 {0xa0, 0x40, 0x0118},
450 {} 450 {}
451}; 451};
452static struct usb_action cs2102_50HZ[] = { 452static const struct usb_action cs2102_50HZ[] = {
453 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 453 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
454 {0xaa, 0x0f, 0x008c}, /* 00,0f,8c,aa */ 454 {0xaa, 0x0f, 0x008c}, /* 00,0f,8c,aa */
455 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 455 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -474,7 +474,7 @@ static struct usb_action cs2102_50HZ[] = {
474 {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ 474 {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */
475 {} 475 {}
476}; 476};
477static struct usb_action cs2102_50HZScale[] = { 477static const struct usb_action cs2102_50HZScale[] = {
478 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 478 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
479 {0xaa, 0x0f, 0x0093}, /* 00,0f,93,aa */ 479 {0xaa, 0x0f, 0x0093}, /* 00,0f,93,aa */
480 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 480 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -499,7 +499,7 @@ static struct usb_action cs2102_50HZScale[] = {
499 {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ 499 {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */
500 {} 500 {}
501}; 501};
502static struct usb_action cs2102_60HZ[] = { 502static const struct usb_action cs2102_60HZ[] = {
503 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 503 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
504 {0xaa, 0x0f, 0x005d}, /* 00,0f,5d,aa */ 504 {0xaa, 0x0f, 0x005d}, /* 00,0f,5d,aa */
505 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 505 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -524,7 +524,7 @@ static struct usb_action cs2102_60HZ[] = {
524 {0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */ 524 {0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */
525 {} 525 {}
526}; 526};
527static struct usb_action cs2102_60HZScale[] = { 527static const struct usb_action cs2102_60HZScale[] = {
528 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 528 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
529 {0xaa, 0x0f, 0x00b7}, /* 00,0f,b7,aa */ 529 {0xaa, 0x0f, 0x00b7}, /* 00,0f,b7,aa */
530 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 530 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -549,7 +549,7 @@ static struct usb_action cs2102_60HZScale[] = {
549 {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ 549 {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */
550 {} 550 {}
551}; 551};
552static struct usb_action cs2102_NoFliker[] = { 552static const struct usb_action cs2102_NoFliker[] = {
553 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 553 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
554 {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */ 554 {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */
555 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 555 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -574,7 +574,7 @@ static struct usb_action cs2102_NoFliker[] = {
574 {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ 574 {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */
575 {} 575 {}
576}; 576};
577static struct usb_action cs2102_NoFlikerScale[] = { 577static const struct usb_action cs2102_NoFlikerScale[] = {
578 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 578 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
579 {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */ 579 {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */
580 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ 580 {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
@@ -601,7 +601,7 @@ static struct usb_action cs2102_NoFlikerScale[] = {
601}; 601};
602 602
603/* CS2102_KOCOM */ 603/* CS2102_KOCOM */
604static struct usb_action cs2102K_Initial[] = { 604static const struct usb_action cs2102K_Initial[] = {
605 {0xa0, 0x11, 0x0002}, 605 {0xa0, 0x11, 0x0002},
606 {0xa0, 0x03, 0x0008}, 606 {0xa0, 0x03, 0x0008},
607 {0xa0, 0x08, 0x0010}, 607 {0xa0, 0x08, 0x0010},
@@ -860,7 +860,7 @@ static struct usb_action cs2102K_Initial[] = {
860 {} 860 {}
861}; 861};
862 862
863static struct usb_action cs2102K_InitialScale[] = { 863static const struct usb_action cs2102K_InitialScale[] = {
864 {0xa0, 0x11, 0x0002}, 864 {0xa0, 0x11, 0x0002},
865 {0xa0, 0x00, 0x0002}, 865 {0xa0, 0x00, 0x0002},
866 {0xa0, 0x03, 0x0008}, 866 {0xa0, 0x03, 0x0008},
@@ -1437,7 +1437,7 @@ static struct usb_action cs2102K_InitialScale[] = {
1437 {} 1437 {}
1438}; 1438};
1439 1439
1440static struct usb_action gc0305_Initial[] = { /* 640x480 */ 1440static const struct usb_action gc0305_Initial[] = { /* 640x480 */
1441 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 1441 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
1442 {0xa0, 0x03, 0x0008}, /* 00,08,03,cc */ 1442 {0xa0, 0x03, 0x0008}, /* 00,08,03,cc */
1443 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 1443 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -1501,7 +1501,7 @@ static struct usb_action gc0305_Initial[] = { /* 640x480 */
1501 {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ 1501 {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */
1502 {} 1502 {}
1503}; 1503};
1504static struct usb_action gc0305_InitialScale[] = { /* 320x240 */ 1504static const struct usb_action gc0305_InitialScale[] = { /* 320x240 */
1505 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 1505 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
1506 {0xa0, 0x03, 0x0008}, /* 00,08,03,cc */ 1506 {0xa0, 0x03, 0x0008}, /* 00,08,03,cc */
1507 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 1507 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -1564,7 +1564,7 @@ static struct usb_action gc0305_InitialScale[] = { /* 320x240 */
1564 {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ 1564 {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */
1565 {} 1565 {}
1566}; 1566};
1567static struct usb_action gc0305_50HZ[] = { 1567static const struct usb_action gc0305_50HZ[] = {
1568 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 1568 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
1569 {0xaa, 0x83, 0x0002}, /* 00,83,02,aa */ 1569 {0xaa, 0x83, 0x0002}, /* 00,83,02,aa */
1570 {0xaa, 0x84, 0x0038}, /* 00,84,38,aa */ /* win: 00,84,ec */ 1570 {0xaa, 0x84, 0x0038}, /* 00,84,38,aa */ /* win: 00,84,ec */
@@ -1587,7 +1587,7 @@ static struct usb_action gc0305_50HZ[] = {
1587/* {0xa0, 0x85, 0x018d}, * 01,8d,85,cc * * if 640x480 */ 1587/* {0xa0, 0x85, 0x018d}, * 01,8d,85,cc * * if 640x480 */
1588 {} 1588 {}
1589}; 1589};
1590static struct usb_action gc0305_60HZ[] = { 1590static const struct usb_action gc0305_60HZ[] = {
1591 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 1591 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
1592 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */ 1592 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */
1593 {0xaa, 0x84, 0x00ec}, /* 00,84,ec,aa */ 1593 {0xaa, 0x84, 0x00ec}, /* 00,84,ec,aa */
@@ -1611,7 +1611,7 @@ static struct usb_action gc0305_60HZ[] = {
1611 {} 1611 {}
1612}; 1612};
1613 1613
1614static struct usb_action gc0305_NoFliker[] = { 1614static const struct usb_action gc0305_NoFliker[] = {
1615 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc */ 1615 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc */
1616 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 1616 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
1617 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */ 1617 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */
@@ -1635,7 +1635,7 @@ static struct usb_action gc0305_NoFliker[] = {
1635}; 1635};
1636 1636
1637/* play poker with registers at your own risk !! */ 1637/* play poker with registers at your own risk !! */
1638static struct usb_action hdcs2020xx_Initial[] = { 1638static const struct usb_action hdcs2020xx_Initial[] = {
1639 {0xa0, 0x01, 0x0000}, 1639 {0xa0, 0x01, 0x0000},
1640 {0xa0, 0x03, 0x0008}, 1640 {0xa0, 0x03, 0x0008},
1641 {0xa0, 0x0e, 0x0010}, 1641 {0xa0, 0x0e, 0x0010},
@@ -1780,7 +1780,7 @@ static struct usb_action hdcs2020xx_Initial[] = {
1780 {} 1780 {}
1781}; 1781};
1782 1782
1783static struct usb_action hdcs2020xx_InitialScale[] = { 1783static const struct usb_action hdcs2020xx_InitialScale[] = {
1784 {0xa0, 0x01, 0x0000}, 1784 {0xa0, 0x01, 0x0000},
1785 {0xa0, 0x03, 0x0008}, 1785 {0xa0, 0x03, 0x0008},
1786 {0xa0, 0x0e, 0x0010}, 1786 {0xa0, 0x0e, 0x0010},
@@ -1922,7 +1922,7 @@ static struct usb_action hdcs2020xx_InitialScale[] = {
1922/* {0xa0, 0x18, 0x00fe}, */ 1922/* {0xa0, 0x18, 0x00fe}, */
1923 {} 1923 {}
1924}; 1924};
1925static struct usb_action hdcs2020xb_Initial[] = { 1925static const struct usb_action hdcs2020xb_Initial[] = {
1926 {0xa0, 0x01, 0x0000}, 1926 {0xa0, 0x01, 0x0000},
1927 {0xa0, 0x11, 0x0002}, 1927 {0xa0, 0x11, 0x0002},
1928 {0xa0, 0x03, 0x0008}, /* qtable 0x05 */ 1928 {0xa0, 0x03, 0x0008}, /* qtable 0x05 */
@@ -2054,7 +2054,7 @@ static struct usb_action hdcs2020xb_Initial[] = {
2054 {0xa0, 0x40, 0x0118}, 2054 {0xa0, 0x40, 0x0118},
2055 {} 2055 {}
2056}; 2056};
2057static struct usb_action hdcs2020xb_InitialScale[] = { 2057static const struct usb_action hdcs2020xb_InitialScale[] = {
2058 {0xa0, 0x01, 0x0000}, 2058 {0xa0, 0x01, 0x0000},
2059 {0xa0, 0x00, 0x0002}, 2059 {0xa0, 0x00, 0x0002},
2060 {0xa0, 0x03, 0x0008}, 2060 {0xa0, 0x03, 0x0008},
@@ -2182,7 +2182,7 @@ static struct usb_action hdcs2020xb_InitialScale[] = {
2182 {0xa0, 0x40, 0x0118}, 2182 {0xa0, 0x40, 0x0118},
2183 {} 2183 {}
2184}; 2184};
2185static struct usb_action hdcs2020b_50HZ[] = { 2185static const struct usb_action hdcs2020b_50HZ[] = {
2186 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 2186 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
2187 {0xaa, 0x13, 0x0018}, /* 00,13,18,aa */ 2187 {0xaa, 0x13, 0x0018}, /* 00,13,18,aa */
2188 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */ 2188 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */
@@ -2203,7 +2203,7 @@ static struct usb_action hdcs2020b_50HZ[] = {
2203 {0xa0, 0x2f, 0x001f}, /* 00,1f,2f,cc */ 2203 {0xa0, 0x2f, 0x001f}, /* 00,1f,2f,cc */
2204 {} 2204 {}
2205}; 2205};
2206static struct usb_action hdcs2020b_60HZ[] = { 2206static const struct usb_action hdcs2020b_60HZ[] = {
2207 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 2207 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
2208 {0xaa, 0x13, 0x0031}, /* 00,13,31,aa */ 2208 {0xaa, 0x13, 0x0031}, /* 00,13,31,aa */
2209 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */ 2209 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */
@@ -2224,7 +2224,7 @@ static struct usb_action hdcs2020b_60HZ[] = {
2224 {0xa0, 0x2c, 0x001f}, /* 00,1f,2c,cc */ 2224 {0xa0, 0x2c, 0x001f}, /* 00,1f,2c,cc */
2225 {} 2225 {}
2226}; 2226};
2227static struct usb_action hdcs2020b_NoFliker[] = { 2227static const struct usb_action hdcs2020b_NoFliker[] = {
2228 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 2228 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
2229 {0xaa, 0x13, 0x0010}, /* 00,13,10,aa */ 2229 {0xaa, 0x13, 0x0010}, /* 00,13,10,aa */
2230 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */ 2230 {0xaa, 0x14, 0x0001}, /* 00,14,01,aa */
@@ -2246,7 +2246,7 @@ static struct usb_action hdcs2020b_NoFliker[] = {
2246 {} 2246 {}
2247}; 2247};
2248 2248
2249static struct usb_action hv7131bxx_Initial[] = { 2249static const struct usb_action hv7131bxx_Initial[] = {
2250 {0xa0, 0x01, 0x0000}, 2250 {0xa0, 0x01, 0x0000},
2251 {0xa0, 0x10, 0x0002}, 2251 {0xa0, 0x10, 0x0002},
2252 {0xa0, 0x00, 0x0010}, 2252 {0xa0, 0x00, 0x0010},
@@ -2354,7 +2354,7 @@ static struct usb_action hv7131bxx_Initial[] = {
2354 {} 2354 {}
2355}; 2355};
2356 2356
2357static struct usb_action hv7131bxx_InitialScale[] = { 2357static const struct usb_action hv7131bxx_InitialScale[] = {
2358 {0xa0, 0x01, 0x0000}, 2358 {0xa0, 0x01, 0x0000},
2359 {0xa0, 0x00, 0x0002}, 2359 {0xa0, 0x00, 0x0002},
2360 {0xa0, 0x00, 0x0010}, 2360 {0xa0, 0x00, 0x0010},
@@ -2460,7 +2460,7 @@ static struct usb_action hv7131bxx_InitialScale[] = {
2460 {} 2460 {}
2461}; 2461};
2462 2462
2463static struct usb_action hv7131cxx_Initial[] = { 2463static const struct usb_action hv7131cxx_Initial[] = {
2464 {0xa0, 0x01, 0x0000}, 2464 {0xa0, 0x01, 0x0000},
2465 {0xa0, 0x10, 0x0002}, 2465 {0xa0, 0x10, 0x0002},
2466 {0xa0, 0x01, 0x0010}, 2466 {0xa0, 0x01, 0x0010},
@@ -2554,7 +2554,7 @@ static struct usb_action hv7131cxx_Initial[] = {
2554 {} 2554 {}
2555}; 2555};
2556 2556
2557static struct usb_action hv7131cxx_InitialScale[] = { 2557static const struct usb_action hv7131cxx_InitialScale[] = {
2558 {0xa0, 0x01, 0x0000}, 2558 {0xa0, 0x01, 0x0000},
2559 2559
2560 {0xa0, 0x00, 0x0002}, /* diff */ 2560 {0xa0, 0x00, 0x0002}, /* diff */
@@ -2655,7 +2655,7 @@ static struct usb_action hv7131cxx_InitialScale[] = {
2655 {} 2655 {}
2656}; 2656};
2657 2657
2658static struct usb_action icm105axx_Initial[] = { 2658static const struct usb_action icm105axx_Initial[] = {
2659 {0xa0, 0x01, 0x0000}, 2659 {0xa0, 0x01, 0x0000},
2660 {0xa0, 0x10, 0x0002}, 2660 {0xa0, 0x10, 0x0002},
2661 {0xa0, 0x03, 0x0008}, 2661 {0xa0, 0x03, 0x0008},
@@ -2832,7 +2832,7 @@ static struct usb_action icm105axx_Initial[] = {
2832 {} 2832 {}
2833}; 2833};
2834 2834
2835static struct usb_action icm105axx_InitialScale[] = { 2835static const struct usb_action icm105axx_InitialScale[] = {
2836 {0xa0, 0x01, 0x0000}, 2836 {0xa0, 0x01, 0x0000},
2837 {0xa0, 0x00, 0x0002}, 2837 {0xa0, 0x00, 0x0002},
2838 {0xa0, 0x03, 0x0008}, 2838 {0xa0, 0x03, 0x0008},
@@ -3011,7 +3011,7 @@ static struct usb_action icm105axx_InitialScale[] = {
3011 {0xa0, 0x40, 0x0118}, 3011 {0xa0, 0x40, 0x0118},
3012 {} 3012 {}
3013}; 3013};
3014static struct usb_action icm105a_50HZ[] = { 3014static const struct usb_action icm105a_50HZ[] = {
3015 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3015 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3016 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3016 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3017 {0xaa, 0x0c, 0x0020}, /* 00,0c,20,aa */ 3017 {0xaa, 0x0c, 0x0020}, /* 00,0c,20,aa */
@@ -3042,7 +3042,7 @@ static struct usb_action icm105a_50HZ[] = {
3042 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ 3042 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */
3043 {} 3043 {}
3044}; 3044};
3045static struct usb_action icm105a_50HZScale[] = { 3045static const struct usb_action icm105a_50HZScale[] = {
3046 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3046 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3047 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3047 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3048 {0xaa, 0x0c, 0x008c}, /* 00,0c,8c,aa */ 3048 {0xaa, 0x0c, 0x008c}, /* 00,0c,8c,aa */
@@ -3075,7 +3075,7 @@ static struct usb_action icm105a_50HZScale[] = {
3075 {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ 3075 {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */
3076 {} 3076 {}
3077}; 3077};
3078static struct usb_action icm105a_60HZ[] = { 3078static const struct usb_action icm105a_60HZ[] = {
3079 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3079 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3080 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3080 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3081 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ 3081 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */
@@ -3106,7 +3106,7 @@ static struct usb_action icm105a_60HZ[] = {
3106 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ 3106 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */
3107 {} 3107 {}
3108}; 3108};
3109static struct usb_action icm105a_60HZScale[] = { 3109static const struct usb_action icm105a_60HZScale[] = {
3110 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3110 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3111 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3111 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3112 {0xaa, 0x0c, 0x0008}, /* 00,0c,08,aa */ 3112 {0xaa, 0x0c, 0x0008}, /* 00,0c,08,aa */
@@ -3139,7 +3139,7 @@ static struct usb_action icm105a_60HZScale[] = {
3139 {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ 3139 {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */
3140 {} 3140 {}
3141}; 3141};
3142static struct usb_action icm105a_NoFliker[] = { 3142static const struct usb_action icm105a_NoFliker[] = {
3143 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3143 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3144 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3144 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3145 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ 3145 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */
@@ -3170,7 +3170,7 @@ static struct usb_action icm105a_NoFliker[] = {
3170 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ 3170 {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */
3171 {} 3171 {}
3172}; 3172};
3173static struct usb_action icm105a_NoFlikerScale[] = { 3173static const struct usb_action icm105a_NoFlikerScale[] = {
3174 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 3174 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
3175 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ 3175 {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */
3176 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ 3176 {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */
@@ -3204,7 +3204,7 @@ static struct usb_action icm105a_NoFlikerScale[] = {
3204 {} 3204 {}
3205}; 3205};
3206 3206
3207static struct usb_action MC501CB_InitialScale[] = { 3207static const struct usb_action MC501CB_InitialScale[] = {
3208 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 3208 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
3209 {0xa0, 0x00, 0x0002}, /* 00,02,00,cc */ 3209 {0xa0, 0x00, 0x0002}, /* 00,02,00,cc */
3210 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 3210 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -3324,7 +3324,7 @@ static struct usb_action MC501CB_InitialScale[] = {
3324 {} 3324 {}
3325}; 3325};
3326 3326
3327static struct usb_action MC501CB_Initial[] = { /* 320x240 */ 3327static const struct usb_action MC501CB_Initial[] = { /* 320x240 */
3328 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 3328 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
3329 {0xa0, 0x10, 0x0002}, /* 00,02,10,cc */ 3329 {0xa0, 0x10, 0x0002}, /* 00,02,10,cc */
3330 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 3330 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -3443,7 +3443,7 @@ static struct usb_action MC501CB_Initial[] = { /* 320x240 */
3443 {} 3443 {}
3444}; 3444};
3445 3445
3446static struct usb_action MC501CB_50HZ[] = { 3446static const struct usb_action MC501CB_50HZ[] = {
3447 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3447 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3448 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3448 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3449 {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ 3449 {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */
@@ -3460,7 +3460,7 @@ static struct usb_action MC501CB_50HZ[] = {
3460 {} 3460 {}
3461}; 3461};
3462 3462
3463static struct usb_action MC501CB_50HZScale[] = { 3463static const struct usb_action MC501CB_50HZScale[] = {
3464 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3464 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3465 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3465 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3466 {0xaa, 0x36, 0x003a}, /* 00,36,3A,aa */ 3466 {0xaa, 0x36, 0x003a}, /* 00,36,3A,aa */
@@ -3477,7 +3477,7 @@ static struct usb_action MC501CB_50HZScale[] = {
3477 {} 3477 {}
3478}; 3478};
3479 3479
3480static struct usb_action MC501CB_60HZ[] = { 3480static const struct usb_action MC501CB_60HZ[] = {
3481 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3481 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3482 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3482 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3483 {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ 3483 {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */
@@ -3494,7 +3494,7 @@ static struct usb_action MC501CB_60HZ[] = {
3494 {} 3494 {}
3495}; 3495};
3496 3496
3497static struct usb_action MC501CB_60HZScale[] = { 3497static const struct usb_action MC501CB_60HZScale[] = {
3498 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3498 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3499 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3499 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3500 {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ 3500 {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */
@@ -3511,7 +3511,7 @@ static struct usb_action MC501CB_60HZScale[] = {
3511 {} 3511 {}
3512}; 3512};
3513 3513
3514static struct usb_action MC501CB_NoFliker[] = { 3514static const struct usb_action MC501CB_NoFliker[] = {
3515 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3515 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3516 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3516 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3517 {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ 3517 {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */
@@ -3528,7 +3528,7 @@ static struct usb_action MC501CB_NoFliker[] = {
3528 {} 3528 {}
3529}; 3529};
3530 3530
3531static struct usb_action MC501CB_NoFlikerScale[] = { 3531static const struct usb_action MC501CB_NoFlikerScale[] = {
3532 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ 3532 {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */
3533 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ 3533 {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */
3534 {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ 3534 {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */
@@ -3541,7 +3541,7 @@ static struct usb_action MC501CB_NoFlikerScale[] = {
3541}; 3541};
3542 3542
3543/* from zs211.inf - HKR,%OV7620%,Initial - 640x480 */ 3543/* from zs211.inf - HKR,%OV7620%,Initial - 640x480 */
3544static struct usb_action OV7620_mode0[] = { 3544static const struct usb_action OV7620_mode0[] = {
3545 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 3545 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
3546 {0xa0, 0x40, 0x0002}, /* 00,02,40,cc */ 3546 {0xa0, 0x40, 0x0002}, /* 00,02,40,cc */
3547 {0xa0, 0x00, 0x0008}, /* 00,08,00,cc */ 3547 {0xa0, 0x00, 0x0008}, /* 00,08,00,cc */
@@ -3612,7 +3612,7 @@ static struct usb_action OV7620_mode0[] = {
3612}; 3612};
3613 3613
3614/* from zs211.inf - HKR,%OV7620%,InitialScale - 320x240 */ 3614/* from zs211.inf - HKR,%OV7620%,InitialScale - 320x240 */
3615static struct usb_action OV7620_mode1[] = { 3615static const struct usb_action OV7620_mode1[] = {
3616 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 3616 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
3617 {0xa0, 0x50, 0x0002}, /* 00,02,50,cc */ 3617 {0xa0, 0x50, 0x0002}, /* 00,02,50,cc */
3618 {0xa0, 0x03, 0x0008}, /* 00,08,00,cc */ /* mx change? */ 3618 {0xa0, 0x03, 0x0008}, /* 00,08,00,cc */ /* mx change? */
@@ -3683,7 +3683,7 @@ static struct usb_action OV7620_mode1[] = {
3683}; 3683};
3684 3684
3685/* from zs211.inf - HKR,%OV7620%\AE,50HZ */ 3685/* from zs211.inf - HKR,%OV7620%\AE,50HZ */
3686static struct usb_action OV7620_50HZ[] = { 3686static const struct usb_action OV7620_50HZ[] = {
3687 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ 3687 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */
3688 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */ 3688 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */
3689 {0xaa, 0x2b, 0x0096}, /* 00,2b,96,aa */ 3689 {0xaa, 0x2b, 0x0096}, /* 00,2b,96,aa */
@@ -3702,7 +3702,7 @@ static struct usb_action OV7620_50HZ[] = {
3702}; 3702};
3703 3703
3704/* from zs211.inf - HKR,%OV7620%\AE,60HZ */ 3704/* from zs211.inf - HKR,%OV7620%\AE,60HZ */
3705static struct usb_action OV7620_60HZ[] = { 3705static const struct usb_action OV7620_60HZ[] = {
3706 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ /* (bug in zs211.inf) */ 3706 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ /* (bug in zs211.inf) */
3707 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */ 3707 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */
3708 {0xaa, 0x2b, 0x0000}, /* 00,2b,00,aa */ 3708 {0xaa, 0x2b, 0x0000}, /* 00,2b,00,aa */
@@ -3724,7 +3724,7 @@ static struct usb_action OV7620_60HZ[] = {
3724}; 3724};
3725 3725
3726/* from zs211.inf - HKR,%OV7620%\AE,NoFliker */ 3726/* from zs211.inf - HKR,%OV7620%\AE,NoFliker */
3727static struct usb_action OV7620_NoFliker[] = { 3727static const struct usb_action OV7620_NoFliker[] = {
3728 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ /* (bug in zs211.inf) */ 3728 {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ /* (bug in zs211.inf) */
3729 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */ 3729 {0xdd, 0x00, 0x0100}, /* 00,01,00,dd */
3730 {0xaa, 0x2b, 0x0000}, /* 00,2b,00,aa */ 3730 {0xaa, 0x2b, 0x0000}, /* 00,2b,00,aa */
@@ -3743,7 +3743,7 @@ static struct usb_action OV7620_NoFliker[] = {
3743 {} 3743 {}
3744}; 3744};
3745 3745
3746static struct usb_action ov7630c_Initial[] = { 3746static const struct usb_action ov7630c_Initial[] = {
3747 {0xa0, 0x01, 0x0000}, 3747 {0xa0, 0x01, 0x0000},
3748 {0xa0, 0x10, 0x0002}, 3748 {0xa0, 0x10, 0x0002},
3749 {0xa0, 0x01, 0x0000}, 3749 {0xa0, 0x01, 0x0000},
@@ -3900,7 +3900,7 @@ static struct usb_action ov7630c_Initial[] = {
3900 {} 3900 {}
3901}; 3901};
3902 3902
3903static struct usb_action ov7630c_InitialScale[] = { 3903static const struct usb_action ov7630c_InitialScale[] = {
3904 {0xa0, 0x01, 0x0000}, 3904 {0xa0, 0x01, 0x0000},
3905 {0xa0, 0x00, 0x0002}, 3905 {0xa0, 0x00, 0x0002},
3906 {0xa0, 0x03, 0x0008}, 3906 {0xa0, 0x03, 0x0008},
@@ -4057,7 +4057,7 @@ static struct usb_action ov7630c_InitialScale[] = {
4057 {} 4057 {}
4058}; 4058};
4059 4059
4060static struct usb_action pas106b_Initial_com[] = { 4060static const struct usb_action pas106b_Initial_com[] = {
4061/* Sream and Sensor specific */ 4061/* Sream and Sensor specific */
4062 {0xa1, 0x01, 0x0010}, /* CMOSSensorSelect */ 4062 {0xa1, 0x01, 0x0010}, /* CMOSSensorSelect */
4063/* System */ 4063/* System */
@@ -4071,7 +4071,7 @@ static struct usb_action pas106b_Initial_com[] = {
4071 {} 4071 {}
4072}; 4072};
4073 4073
4074static struct usb_action pas106b_Initial[] = { /* 176x144 */ 4074static const struct usb_action pas106b_Initial[] = { /* 176x144 */
4075/* JPEG control */ 4075/* JPEG control */
4076 {0xa0, 0x03, 0x0008}, /* ClockSetting */ 4076 {0xa0, 0x03, 0x0008}, /* ClockSetting */
4077/* Sream and Sensor specific */ 4077/* Sream and Sensor specific */
@@ -4189,7 +4189,7 @@ static struct usb_action pas106b_Initial[] = { /* 176x144 */
4189 {} 4189 {}
4190}; 4190};
4191 4191
4192static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ 4192static const struct usb_action pas106b_InitialScale[] = { /* 352x288 */
4193/* JPEG control */ 4193/* JPEG control */
4194 {0xa0, 0x03, 0x0008}, /* ClockSetting */ 4194 {0xa0, 0x03, 0x0008}, /* ClockSetting */
4195/* Sream and Sensor specific */ 4195/* Sream and Sensor specific */
@@ -4312,7 +4312,7 @@ static struct usb_action pas106b_InitialScale[] = { /* 352x288 */
4312 {0xa0, 0xff, 0x0018}, /* Frame adjust */ 4312 {0xa0, 0xff, 0x0018}, /* Frame adjust */
4313 {} 4313 {}
4314}; 4314};
4315static struct usb_action pas106b_50HZ[] = { 4315static const struct usb_action pas106b_50HZ[] = {
4316 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4316 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4317 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */ 4317 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */
4318 {0xa0, 0x54, 0x0192}, /* 01,92,54,cc */ 4318 {0xa0, 0x54, 0x0192}, /* 01,92,54,cc */
@@ -4328,7 +4328,7 @@ static struct usb_action pas106b_50HZ[] = {
4328 {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ 4328 {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */
4329 {} 4329 {}
4330}; 4330};
4331static struct usb_action pas106b_60HZ[] = { 4331static const struct usb_action pas106b_60HZ[] = {
4332 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4332 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4333 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */ 4333 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */
4334 {0xa0, 0x2e, 0x0192}, /* 01,92,2e,cc */ 4334 {0xa0, 0x2e, 0x0192}, /* 01,92,2e,cc */
@@ -4344,7 +4344,7 @@ static struct usb_action pas106b_60HZ[] = {
4344 {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ 4344 {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */
4345 {} 4345 {}
4346}; 4346};
4347static struct usb_action pas106b_NoFliker[] = { 4347static const struct usb_action pas106b_NoFliker[] = {
4348 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4348 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4349 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */ 4349 {0xa0, 0x06, 0x0191}, /* 01,91,06,cc */
4350 {0xa0, 0x50, 0x0192}, /* 01,92,50,cc */ 4350 {0xa0, 0x50, 0x0192}, /* 01,92,50,cc */
@@ -4361,7 +4361,7 @@ static struct usb_action pas106b_NoFliker[] = {
4361 {} 4361 {}
4362}; 4362};
4363 4363
4364static struct usb_action pb03303x_Initial[] = { 4364static const struct usb_action pb03303x_Initial[] = {
4365 {0xa0, 0x01, 0x0000}, 4365 {0xa0, 0x01, 0x0000},
4366 {0xa0, 0x03, 0x0008}, 4366 {0xa0, 0x03, 0x0008},
4367 {0xa0, 0x0a, 0x0010}, 4367 {0xa0, 0x0a, 0x0010},
@@ -4507,7 +4507,7 @@ static struct usb_action pb03303x_Initial[] = {
4507 {} 4507 {}
4508}; 4508};
4509 4509
4510static struct usb_action pb03303x_InitialScale[] = { 4510static const struct usb_action pb03303x_InitialScale[] = {
4511 {0xa0, 0x01, 0x0000}, 4511 {0xa0, 0x01, 0x0000},
4512 {0xa0, 0x03, 0x0008}, 4512 {0xa0, 0x03, 0x0008},
4513 {0xa0, 0x0a, 0x0010}, 4513 {0xa0, 0x0a, 0x0010},
@@ -4655,7 +4655,7 @@ static struct usb_action pb03303x_InitialScale[] = {
4655 {0xa0, 0x42, 0x0180}, 4655 {0xa0, 0x42, 0x0180},
4656 {} 4656 {}
4657}; 4657};
4658static struct usb_action pb0330xx_Initial[] = { 4658static const struct usb_action pb0330xx_Initial[] = {
4659 {0xa1, 0x01, 0x0008}, 4659 {0xa1, 0x01, 0x0008},
4660 {0xa1, 0x01, 0x0008}, 4660 {0xa1, 0x01, 0x0008},
4661 {0xa0, 0x01, 0x0000}, 4661 {0xa0, 0x01, 0x0000},
@@ -4770,7 +4770,7 @@ static struct usb_action pb0330xx_Initial[] = {
4770 {} 4770 {}
4771}; 4771};
4772 4772
4773static struct usb_action pb0330xx_InitialScale[] = { 4773static const struct usb_action pb0330xx_InitialScale[] = {
4774 {0xa1, 0x01, 0x0008}, 4774 {0xa1, 0x01, 0x0008},
4775 {0xa1, 0x01, 0x0008}, 4775 {0xa1, 0x01, 0x0008},
4776 {0xa0, 0x01, 0x0000}, 4776 {0xa0, 0x01, 0x0000},
@@ -4883,7 +4883,7 @@ static struct usb_action pb0330xx_InitialScale[] = {
4883/* {0xa0, 0x00, 0x0007}, */ 4883/* {0xa0, 0x00, 0x0007}, */
4884 {} 4884 {}
4885}; 4885};
4886static struct usb_action pb0330_50HZ[] = { 4886static const struct usb_action pb0330_50HZ[] = {
4887 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4887 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4888 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4888 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
4889 {0xa0, 0xee, 0x0192}, /* 01,92,ee,cc */ 4889 {0xa0, 0xee, 0x0192}, /* 01,92,ee,cc */
@@ -4899,7 +4899,7 @@ static struct usb_action pb0330_50HZ[] = {
4899 {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ 4899 {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */
4900 {} 4900 {}
4901}; 4901};
4902static struct usb_action pb0330_50HZScale[] = { 4902static const struct usb_action pb0330_50HZScale[] = {
4903 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 4903 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
4904 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4904 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4905 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4905 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
@@ -4916,7 +4916,7 @@ static struct usb_action pb0330_50HZScale[] = {
4916 {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */ 4916 {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */
4917 {} 4917 {}
4918}; 4918};
4919static struct usb_action pb0330_60HZ[] = { 4919static const struct usb_action pb0330_60HZ[] = {
4920 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 4920 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
4921 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4921 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4922 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4922 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
@@ -4933,7 +4933,7 @@ static struct usb_action pb0330_60HZ[] = {
4933 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ 4933 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */
4934 {} 4934 {}
4935}; 4935};
4936static struct usb_action pb0330_60HZScale[] = { 4936static const struct usb_action pb0330_60HZScale[] = {
4937 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 4937 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
4938 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4938 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4939 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4939 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
@@ -4950,7 +4950,7 @@ static struct usb_action pb0330_60HZScale[] = {
4950 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ 4950 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */
4951 {} 4951 {}
4952}; 4952};
4953static struct usb_action pb0330_NoFliker[] = { 4953static const struct usb_action pb0330_NoFliker[] = {
4954 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 4954 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
4955 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4955 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4956 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4956 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
@@ -4967,7 +4967,7 @@ static struct usb_action pb0330_NoFliker[] = {
4967 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ 4967 {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */
4968 {} 4968 {}
4969}; 4969};
4970static struct usb_action pb0330_NoFlikerScale[] = { 4970static const struct usb_action pb0330_NoFlikerScale[] = {
4971 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 4971 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
4972 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ 4972 {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
4973 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */ 4973 {0xa0, 0x07, 0x0191}, /* 01,91,07,cc */
@@ -4986,7 +4986,7 @@ static struct usb_action pb0330_NoFlikerScale[] = {
4986}; 4986};
4987 4987
4988/* from oem9.inf - HKR,%PO2030%,Initial - 640x480 - (close to CS2102) */ 4988/* from oem9.inf - HKR,%PO2030%,Initial - 640x480 - (close to CS2102) */
4989static struct usb_action PO2030_mode0[] = { 4989static const struct usb_action PO2030_mode0[] = {
4990 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 4990 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
4991 {0xa0, 0x04, 0x0002}, /* 00,02,04,cc */ 4991 {0xa0, 0x04, 0x0002}, /* 00,02,04,cc */
4992 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 4992 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -5063,7 +5063,7 @@ static struct usb_action PO2030_mode0[] = {
5063}; 5063};
5064 5064
5065/* from oem9.inf - HKR,%PO2030%,InitialScale - 320x240 */ 5065/* from oem9.inf - HKR,%PO2030%,InitialScale - 320x240 */
5066static struct usb_action PO2030_mode1[] = { 5066static const struct usb_action PO2030_mode1[] = {
5067 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ 5067 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */
5068 {0xa0, 0x10, 0x0002}, /* 00,02,10,cc */ 5068 {0xa0, 0x10, 0x0002}, /* 00,02,10,cc */
5069 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */ 5069 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc */
@@ -5139,7 +5139,7 @@ static struct usb_action PO2030_mode1[] = {
5139 {} 5139 {}
5140}; 5140};
5141 5141
5142static struct usb_action PO2030_50HZ[] = { 5142static const struct usb_action PO2030_50HZ[] = {
5143 {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */ 5143 {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */
5144 {0xaa, 0x1a, 0x0001}, /* 00,1a,01,aa */ 5144 {0xaa, 0x1a, 0x0001}, /* 00,1a,01,aa */
5145 {0xaa, 0x1b, 0x000a}, /* 00,1b,0a,aa */ 5145 {0xaa, 0x1b, 0x000a}, /* 00,1b,0a,aa */
@@ -5161,7 +5161,7 @@ static struct usb_action PO2030_50HZ[] = {
5161 {} 5161 {}
5162}; 5162};
5163 5163
5164static struct usb_action PO2030_60HZ[] = { 5164static const struct usb_action PO2030_60HZ[] = {
5165 {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */ 5165 {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */
5166 {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */ 5166 {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */
5167 {0xaa, 0x1b, 0x00de}, /* 00,1b,de,aa */ 5167 {0xaa, 0x1b, 0x00de}, /* 00,1b,de,aa */
@@ -5183,7 +5183,7 @@ static struct usb_action PO2030_60HZ[] = {
5183 {} 5183 {}
5184}; 5184};
5185 5185
5186static struct usb_action PO2030_NoFliker[] = { 5186static const struct usb_action PO2030_NoFliker[] = {
5187 {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */ 5187 {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */
5188 {0xaa, 0x8d, 0x000d}, /* 00,8d,0d,aa */ 5188 {0xaa, 0x8d, 0x000d}, /* 00,8d,0d,aa */
5189 {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */ 5189 {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */
@@ -5195,7 +5195,7 @@ static struct usb_action PO2030_NoFliker[] = {
5195}; 5195};
5196 5196
5197/* TEST */ 5197/* TEST */
5198static struct usb_action tas5130CK_Initial[] = { 5198static const struct usb_action tas5130CK_Initial[] = {
5199 {0xa0, 0x01, 0x0000}, 5199 {0xa0, 0x01, 0x0000},
5200 {0xa0, 0x01, 0x003b}, 5200 {0xa0, 0x01, 0x003b},
5201 {0xa0, 0x0e, 0x003a}, 5201 {0xa0, 0x0e, 0x003a},
@@ -5398,7 +5398,7 @@ static struct usb_action tas5130CK_Initial[] = {
5398 {} 5398 {}
5399}; 5399};
5400 5400
5401static struct usb_action tas5130CK_InitialScale[] = { 5401static const struct usb_action tas5130CK_InitialScale[] = {
5402 {0xa0, 0x01, 0x0000}, 5402 {0xa0, 0x01, 0x0000},
5403 {0xa0, 0x01, 0x003b}, 5403 {0xa0, 0x01, 0x003b},
5404 {0xa0, 0x0e, 0x003a}, 5404 {0xa0, 0x0e, 0x003a},
@@ -5606,7 +5606,7 @@ static struct usb_action tas5130CK_InitialScale[] = {
5606 {} 5606 {}
5607}; 5607};
5608 5608
5609static struct usb_action tas5130cxx_Initial[] = { 5609static const struct usb_action tas5130cxx_Initial[] = {
5610 {0xa0, 0x01, 0x0000}, 5610 {0xa0, 0x01, 0x0000},
5611 {0xa0, 0x50, 0x0002}, 5611 {0xa0, 0x50, 0x0002},
5612 {0xa0, 0x03, 0x0008}, 5612 {0xa0, 0x03, 0x0008},
@@ -5695,7 +5695,7 @@ static struct usb_action tas5130cxx_Initial[] = {
5695 {0xa0, 0x42, 0x0180}, 5695 {0xa0, 0x42, 0x0180},
5696 {} 5696 {}
5697}; 5697};
5698static struct usb_action tas5130cxx_InitialScale[] = { 5698static const struct usb_action tas5130cxx_InitialScale[] = {
5699 {0xa0, 0x01, 0x0000}, 5699 {0xa0, 0x01, 0x0000},
5700 {0xa0, 0x01, 0x0000}, 5700 {0xa0, 0x01, 0x0000},
5701 {0xa0, 0x40, 0x0002}, 5701 {0xa0, 0x40, 0x0002},
@@ -5785,7 +5785,7 @@ static struct usb_action tas5130cxx_InitialScale[] = {
5785 {0xa0, 0x42, 0x0180}, 5785 {0xa0, 0x42, 0x0180},
5786 {} 5786 {}
5787}; 5787};
5788static struct usb_action tas5130cxx_50HZ[] = { 5788static const struct usb_action tas5130cxx_50HZ[] = {
5789 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5789 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5790 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5790 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5791 {0xaa, 0xa4, 0x0063}, /* 00,a4,63,aa */ 5791 {0xaa, 0xa4, 0x0063}, /* 00,a4,63,aa */
@@ -5808,7 +5808,7 @@ static struct usb_action tas5130cxx_50HZ[] = {
5808 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ 5808 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */
5809 {} 5809 {}
5810}; 5810};
5811static struct usb_action tas5130cxx_50HZScale[] = { 5811static const struct usb_action tas5130cxx_50HZScale[] = {
5812 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5812 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5813 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5813 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5814 {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */ 5814 {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */
@@ -5831,7 +5831,7 @@ static struct usb_action tas5130cxx_50HZScale[] = {
5831 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ 5831 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */
5832 {} 5832 {}
5833}; 5833};
5834static struct usb_action tas5130cxx_60HZ[] = { 5834static const struct usb_action tas5130cxx_60HZ[] = {
5835 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5835 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5836 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5836 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5837 {0xaa, 0xa4, 0x0036}, /* 00,a4,36,aa */ 5837 {0xaa, 0xa4, 0x0036}, /* 00,a4,36,aa */
@@ -5854,7 +5854,7 @@ static struct usb_action tas5130cxx_60HZ[] = {
5854 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ 5854 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */
5855 {} 5855 {}
5856}; 5856};
5857static struct usb_action tas5130cxx_60HZScale[] = { 5857static const struct usb_action tas5130cxx_60HZScale[] = {
5858 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5858 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5859 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5859 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5860 {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */ 5860 {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */
@@ -5877,7 +5877,7 @@ static struct usb_action tas5130cxx_60HZScale[] = {
5877 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ 5877 {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */
5878 {} 5878 {}
5879}; 5879};
5880static struct usb_action tas5130cxx_NoFliker[] = { 5880static const struct usb_action tas5130cxx_NoFliker[] = {
5881 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5881 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5882 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5882 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5883 {0xaa, 0xa4, 0x0040}, /* 00,a4,40,aa */ 5883 {0xaa, 0xa4, 0x0040}, /* 00,a4,40,aa */
@@ -5901,7 +5901,7 @@ static struct usb_action tas5130cxx_NoFliker[] = {
5901 {} 5901 {}
5902}; 5902};
5903 5903
5904static struct usb_action tas5130cxx_NoFlikerScale[] = { 5904static const struct usb_action tas5130cxx_NoFlikerScale[] = {
5905 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ 5905 {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
5906 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ 5906 {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */
5907 {0xaa, 0xa4, 0x0090}, /* 00,a4,90,aa */ 5907 {0xaa, 0xa4, 0x0090}, /* 00,a4,90,aa */
@@ -5925,7 +5925,7 @@ static struct usb_action tas5130cxx_NoFlikerScale[] = {
5925 {} 5925 {}
5926}; 5926};
5927 5927
5928static struct usb_action tas5130c_vf0250_Initial[] = { 5928static const struct usb_action tas5130c_vf0250_Initial[] = {
5929 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc, */ 5929 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc, */
5930 {0xa0, 0x02, 0x0008}, /* 00,08,02,cc, */ 5930 {0xa0, 0x02, 0x0008}, /* 00,08,02,cc, */
5931 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc, */ 5931 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc, */
@@ -5989,7 +5989,7 @@ static struct usb_action tas5130c_vf0250_Initial[] = {
5989 {} 5989 {}
5990}; 5990};
5991 5991
5992static struct usb_action tas5130c_vf0250_InitialScale[] = { 5992static const struct usb_action tas5130c_vf0250_InitialScale[] = {
5993 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc, */ 5993 {0xa0, 0x01, 0x0000}, /* 00,00,01,cc, */
5994 {0xa0, 0x02, 0x0008}, /* 00,08,02,cc, */ 5994 {0xa0, 0x02, 0x0008}, /* 00,08,02,cc, */
5995 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc, */ 5995 {0xa0, 0x01, 0x0010}, /* 00,10,01,cc, */
@@ -6053,7 +6053,7 @@ static struct usb_action tas5130c_vf0250_InitialScale[] = {
6053 {} 6053 {}
6054}; 6054};
6055/* "50HZ" light frequency banding filter */ 6055/* "50HZ" light frequency banding filter */
6056static struct usb_action tas5130c_vf0250_50HZ[] = { 6056static const struct usb_action tas5130c_vf0250_50HZ[] = {
6057 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6057 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6058 {0xaa, 0x83, 0x0001}, /* 00,83,01,aa */ 6058 {0xaa, 0x83, 0x0001}, /* 00,83,01,aa */
6059 {0xaa, 0x84, 0x00aa}, /* 00,84,aa,aa */ 6059 {0xaa, 0x84, 0x00aa}, /* 00,84,aa,aa */
@@ -6078,7 +6078,7 @@ static struct usb_action tas5130c_vf0250_50HZ[] = {
6078}; 6078};
6079 6079
6080/* "50HZScale" light frequency banding filter */ 6080/* "50HZScale" light frequency banding filter */
6081static struct usb_action tas5130c_vf0250_50HZScale[] = { 6081static const struct usb_action tas5130c_vf0250_50HZScale[] = {
6082 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6082 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6083 {0xaa, 0x83, 0x0003}, /* 00,83,03,aa */ 6083 {0xaa, 0x83, 0x0003}, /* 00,83,03,aa */
6084 {0xaa, 0x84, 0x0054}, /* 00,84,54,aa */ 6084 {0xaa, 0x84, 0x0054}, /* 00,84,54,aa */
@@ -6103,7 +6103,7 @@ static struct usb_action tas5130c_vf0250_50HZScale[] = {
6103}; 6103};
6104 6104
6105/* "60HZ" light frequency banding filter */ 6105/* "60HZ" light frequency banding filter */
6106static struct usb_action tas5130c_vf0250_60HZ[] = { 6106static const struct usb_action tas5130c_vf0250_60HZ[] = {
6107 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6107 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6108 {0xaa, 0x83, 0x0001}, /* 00,83,01,aa */ 6108 {0xaa, 0x83, 0x0001}, /* 00,83,01,aa */
6109 {0xaa, 0x84, 0x0062}, /* 00,84,62,aa */ 6109 {0xaa, 0x84, 0x0062}, /* 00,84,62,aa */
@@ -6128,7 +6128,7 @@ static struct usb_action tas5130c_vf0250_60HZ[] = {
6128}; 6128};
6129 6129
6130/* "60HZScale" light frequency banding ilter */ 6130/* "60HZScale" light frequency banding ilter */
6131static struct usb_action tas5130c_vf0250_60HZScale[] = { 6131static const struct usb_action tas5130c_vf0250_60HZScale[] = {
6132 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6132 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6133 {0xaa, 0x83, 0x0002}, /* 00,83,02,aa */ 6133 {0xaa, 0x83, 0x0002}, /* 00,83,02,aa */
6134 {0xaa, 0x84, 0x00c4}, /* 00,84,c4,aa */ 6134 {0xaa, 0x84, 0x00c4}, /* 00,84,c4,aa */
@@ -6153,7 +6153,7 @@ static struct usb_action tas5130c_vf0250_60HZScale[] = {
6153}; 6153};
6154 6154
6155/* "NoFliker" light frequency banding flter */ 6155/* "NoFliker" light frequency banding flter */
6156static struct usb_action tas5130c_vf0250_NoFliker[] = { 6156static const struct usb_action tas5130c_vf0250_NoFliker[] = {
6157 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc, */ 6157 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc, */
6158 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6158 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6159 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */ 6159 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */
@@ -6176,7 +6176,7 @@ static struct usb_action tas5130c_vf0250_NoFliker[] = {
6176}; 6176};
6177 6177
6178/* "NoFlikerScale" light frequency banding filter */ 6178/* "NoFlikerScale" light frequency banding filter */
6179static struct usb_action tas5130c_vf0250_NoFlikerScale[] = { 6179static const struct usb_action tas5130c_vf0250_NoFlikerScale[] = {
6180 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc, */ 6180 {0xa0, 0x0c, 0x0100}, /* 01,00,0c,cc, */
6181 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ 6181 {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */
6182 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */ 6182 {0xaa, 0x83, 0x0000}, /* 00,83,00,aa */
@@ -6272,7 +6272,7 @@ static __u8 i2c_write(struct usb_device *dev,
6272} 6272}
6273 6273
6274static void usb_exchange(struct usb_device *dev, 6274static void usb_exchange(struct usb_device *dev,
6275 struct usb_action *action) 6275 const struct usb_action *action)
6276{ 6276{
6277 __u8 buffread; 6277 __u8 buffread;
6278 6278
@@ -6304,12 +6304,12 @@ static void setmatrix(struct gspca_dev *gspca_dev)
6304{ 6304{
6305 struct sd *sd = (struct sd *) gspca_dev; 6305 struct sd *sd = (struct sd *) gspca_dev;
6306 int i; 6306 int i;
6307 __u8 *matrix; 6307 const __u8 *matrix;
6308 static __u8 gc0305_matrix[9] = 6308 static const __u8 gc0305_matrix[9] =
6309 {0x50, 0xf8, 0xf8, 0xf8, 0x50, 0xf8, 0xf8, 0xf8, 0x50}; 6309 {0x50, 0xf8, 0xf8, 0xf8, 0x50, 0xf8, 0xf8, 0xf8, 0x50};
6310 static __u8 ov7620_matrix[9] = 6310 static const __u8 ov7620_matrix[9] =
6311 {0x58, 0xf4, 0xf4, 0xf4, 0x58, 0xf4, 0xf4, 0xf4, 0x58}; 6311 {0x58, 0xf4, 0xf4, 0xf4, 0x58, 0xf4, 0xf4, 0xf4, 0x58};
6312 static __u8 po2030_matrix[9] = 6312 static const __u8 po2030_matrix[9] =
6313 {0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60}; 6313 {0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60};
6314 6314
6315 switch (sd->sensor) { 6315 switch (sd->sensor) {
@@ -6361,7 +6361,7 @@ static void setsharpness(struct gspca_dev *gspca_dev)
6361 struct usb_device *dev = gspca_dev->dev; 6361 struct usb_device *dev = gspca_dev->dev;
6362 int sharpness; 6362 int sharpness;
6363 __u8 retbyte; 6363 __u8 retbyte;
6364 static __u8 sharpness_tb[][2] = { 6364 static const __u8 sharpness_tb[][2] = {
6365 {0x02, 0x03}, 6365 {0x02, 0x03},
6366 {0x04, 0x07}, 6366 {0x04, 0x07},
6367 {0x08, 0x0f}, 6367 {0x08, 0x0f},
@@ -6380,55 +6380,55 @@ static void setcontrast(struct gspca_dev *gspca_dev)
6380{ 6380{
6381 struct sd *sd = (struct sd *) gspca_dev; 6381 struct sd *sd = (struct sd *) gspca_dev;
6382 struct usb_device *dev = gspca_dev->dev; 6382 struct usb_device *dev = gspca_dev->dev;
6383 __u8 *Tgamma, *Tgradient; 6383 const __u8 *Tgamma, *Tgradient;
6384 int g, i, k; 6384 int g, i, k;
6385 static __u8 kgamma_tb[16] = /* delta for contrast */ 6385 static const __u8 kgamma_tb[16] = /* delta for contrast */
6386 {0x15, 0x0d, 0x0a, 0x09, 0x08, 0x08, 0x08, 0x08, 6386 {0x15, 0x0d, 0x0a, 0x09, 0x08, 0x08, 0x08, 0x08,
6387 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08}; 6387 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08};
6388 static __u8 kgrad_tb[16] = 6388 static const __u8 kgrad_tb[16] =
6389 {0x1b, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 6389 {0x1b, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
6390 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x04}; 6390 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x04};
6391 static __u8 Tgamma_1[16] = 6391 static const __u8 Tgamma_1[16] =
6392 {0x00, 0x00, 0x03, 0x0d, 0x1b, 0x2e, 0x45, 0x5f, 6392 {0x00, 0x00, 0x03, 0x0d, 0x1b, 0x2e, 0x45, 0x5f,
6393 0x79, 0x93, 0xab, 0xc1, 0xd4, 0xe5, 0xf3, 0xff}; 6393 0x79, 0x93, 0xab, 0xc1, 0xd4, 0xe5, 0xf3, 0xff};
6394 static __u8 Tgradient_1[16] = 6394 static const __u8 Tgradient_1[16] =
6395 {0x00, 0x01, 0x05, 0x0b, 0x10, 0x15, 0x18, 0x1a, 6395 {0x00, 0x01, 0x05, 0x0b, 0x10, 0x15, 0x18, 0x1a,
6396 0x1a, 0x18, 0x16, 0x14, 0x12, 0x0f, 0x0d, 0x06}; 6396 0x1a, 0x18, 0x16, 0x14, 0x12, 0x0f, 0x0d, 0x06};
6397 static __u8 Tgamma_2[16] = 6397 static const __u8 Tgamma_2[16] =
6398 {0x01, 0x0c, 0x1f, 0x3a, 0x53, 0x6d, 0x85, 0x9c, 6398 {0x01, 0x0c, 0x1f, 0x3a, 0x53, 0x6d, 0x85, 0x9c,
6399 0xb0, 0xc2, 0xd1, 0xde, 0xe9, 0xf2, 0xf9, 0xff}; 6399 0xb0, 0xc2, 0xd1, 0xde, 0xe9, 0xf2, 0xf9, 0xff};
6400 static __u8 Tgradient_2[16] = 6400 static const __u8 Tgradient_2[16] =
6401 {0x05, 0x0f, 0x16, 0x1a, 0x19, 0x19, 0x17, 0x15, 6401 {0x05, 0x0f, 0x16, 0x1a, 0x19, 0x19, 0x17, 0x15,
6402 0x12, 0x10, 0x0e, 0x0b, 0x09, 0x08, 0x06, 0x03}; 6402 0x12, 0x10, 0x0e, 0x0b, 0x09, 0x08, 0x06, 0x03};
6403 static __u8 Tgamma_3[16] = 6403 static const __u8 Tgamma_3[16] =
6404 {0x04, 0x16, 0x30, 0x4e, 0x68, 0x81, 0x98, 0xac, 6404 {0x04, 0x16, 0x30, 0x4e, 0x68, 0x81, 0x98, 0xac,
6405 0xbe, 0xcd, 0xda, 0xe4, 0xed, 0xf5, 0xfb, 0xff}; 6405 0xbe, 0xcd, 0xda, 0xe4, 0xed, 0xf5, 0xfb, 0xff};
6406 static __u8 Tgradient_3[16] = 6406 static const __u8 Tgradient_3[16] =
6407 {0x0c, 0x16, 0x1b, 0x1c, 0x19, 0x18, 0x15, 0x12, 6407 {0x0c, 0x16, 0x1b, 0x1c, 0x19, 0x18, 0x15, 0x12,
6408 0x10, 0x0d, 0x0b, 0x09, 0x08, 0x06, 0x05, 0x03}; 6408 0x10, 0x0d, 0x0b, 0x09, 0x08, 0x06, 0x05, 0x03};
6409 static __u8 Tgamma_4[16] = 6409 static const __u8 Tgamma_4[16] =
6410 {0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, 6410 {0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
6411 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff}; 6411 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff};
6412 static __u8 Tgradient_4[16] = 6412 static const __u8 Tgradient_4[16] =
6413 {0x26, 0x22, 0x20, 0x1c, 0x16, 0x13, 0x10, 0x0d, 6413 {0x26, 0x22, 0x20, 0x1c, 0x16, 0x13, 0x10, 0x0d,
6414 0x0b, 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02}; 6414 0x0b, 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02};
6415 static __u8 Tgamma_5[16] = 6415 static const __u8 Tgamma_5[16] =
6416 {0x20, 0x4b, 0x6e, 0x8d, 0xa3, 0xb5, 0xc5, 0xd2, 6416 {0x20, 0x4b, 0x6e, 0x8d, 0xa3, 0xb5, 0xc5, 0xd2,
6417 0xdc, 0xe5, 0xec, 0xf2, 0xf6, 0xfa, 0xfd, 0xff}; 6417 0xdc, 0xe5, 0xec, 0xf2, 0xf6, 0xfa, 0xfd, 0xff};
6418 static __u8 Tgradient_5[16] = 6418 static const __u8 Tgradient_5[16] =
6419 {0x37, 0x26, 0x20, 0x1a, 0x14, 0x10, 0x0e, 0x0b, 6419 {0x37, 0x26, 0x20, 0x1a, 0x14, 0x10, 0x0e, 0x0b,
6420 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x02}; 6420 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x02};
6421 static __u8 Tgamma_6[16] = /* ?? was gamma 5 */ 6421 static const __u8 Tgamma_6[16] = /* ?? was gamma 5 */
6422 {0x24, 0x44, 0x64, 0x84, 0x9d, 0xb2, 0xc4, 0xd3, 6422 {0x24, 0x44, 0x64, 0x84, 0x9d, 0xb2, 0xc4, 0xd3,
6423 0xe0, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff}; 6423 0xe0, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff};
6424 static __u8 Tgradient_6[16] = 6424 static const __u8 Tgradient_6[16] =
6425 {0x18, 0x20, 0x20, 0x1c, 0x16, 0x13, 0x10, 0x0e, 6425 {0x18, 0x20, 0x20, 0x1c, 0x16, 0x13, 0x10, 0x0e,
6426 0x0b, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01}; 6426 0x0b, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01};
6427 static __u8 *gamma_tb[] = { 6427 static const __u8 *gamma_tb[] = {
6428 0, Tgamma_1, Tgamma_2, 6428 0, Tgamma_1, Tgamma_2,
6429 Tgamma_3, Tgamma_4, Tgamma_5, Tgamma_6 6429 Tgamma_3, Tgamma_4, Tgamma_5, Tgamma_6
6430 }; 6430 };
6431 static __u8 *gradient_tb[] = { 6431 static const __u8 *gradient_tb[] = {
6432 0, Tgradient_1, Tgradient_2, 6432 0, Tgradient_1, Tgradient_2,
6433 Tgradient_3, Tgradient_4, Tgradient_5, Tgradient_6 6433 Tgradient_3, Tgradient_4, Tgradient_5, Tgradient_6
6434 }; 6434 };
@@ -6529,8 +6529,8 @@ static int setlightfreq(struct gspca_dev *gspca_dev)
6529{ 6529{
6530 struct sd *sd = (struct sd *) gspca_dev; 6530 struct sd *sd = (struct sd *) gspca_dev;
6531 int i, mode; 6531 int i, mode;
6532 struct usb_action *zc3_freq; 6532 const struct usb_action *zc3_freq;
6533 static struct usb_action *freq_tb[SENSOR_MAX][6] = { 6533 static const struct usb_action *freq_tb[SENSOR_MAX][6] = {
6534/* SENSOR_CS2102 0 */ 6534/* SENSOR_CS2102 0 */
6535 {cs2102_NoFliker, cs2102_NoFlikerScale, 6535 {cs2102_NoFliker, cs2102_NoFlikerScale,
6536 cs2102_50HZ, cs2102_50HZScale, 6536 cs2102_50HZ, cs2102_50HZScale,
@@ -6952,7 +6952,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
6952 int sensor; 6952 int sensor;
6953 __u8 bsensor; 6953 __u8 bsensor;
6954 int vga = 1; /* 1: vga, 0: sif */ 6954 int vga = 1; /* 1: vga, 0: sif */
6955 static __u8 gamma[SENSOR_MAX] = { 6955 static const __u8 gamma[SENSOR_MAX] = {
6956 5, /* SENSOR_CS2102 0 */ 6956 5, /* SENSOR_CS2102 0 */
6957 5, /* SENSOR_CS2102K 1 */ 6957 5, /* SENSOR_CS2102K 1 */
6958 4, /* SENSOR_GC0305 2 */ 6958 4, /* SENSOR_GC0305 2 */
@@ -7145,10 +7145,10 @@ static void sd_start(struct gspca_dev *gspca_dev)
7145{ 7145{
7146 struct sd *sd = (struct sd *) gspca_dev; 7146 struct sd *sd = (struct sd *) gspca_dev;
7147 struct usb_device *dev = gspca_dev->dev; 7147 struct usb_device *dev = gspca_dev->dev;
7148 struct usb_action *zc3_init; 7148 const struct usb_action *zc3_init;
7149 int mode; 7149 int mode;
7150 __u8 retbyte; 7150 __u8 retbyte;
7151 static struct usb_action *init_tb[SENSOR_MAX][2] = { 7151 static const struct usb_action *init_tb[SENSOR_MAX][2] = {
7152 {cs2102_InitialScale, cs2102_Initial}, /* 0 */ 7152 {cs2102_InitialScale, cs2102_Initial}, /* 0 */
7153 {cs2102K_InitialScale, cs2102K_Initial}, /* 1 */ 7153 {cs2102K_InitialScale, cs2102K_Initial}, /* 1 */
7154 {gc0305_Initial, gc0305_InitialScale}, /* 2 */ 7154 {gc0305_Initial, gc0305_InitialScale}, /* 2 */
@@ -7451,13 +7451,13 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
7451 case V4L2_CID_POWER_LINE_FREQUENCY: 7451 case V4L2_CID_POWER_LINE_FREQUENCY:
7452 switch (menu->index) { 7452 switch (menu->index) {
7453 case 0: /* V4L2_CID_POWER_LINE_FREQUENCY_DISABLED */ 7453 case 0: /* V4L2_CID_POWER_LINE_FREQUENCY_DISABLED */
7454 strcpy(menu->name, "NoFliker"); 7454 strcpy((char *) menu->name, "NoFliker");
7455 return 0; 7455 return 0;
7456 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */ 7456 case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */
7457 strcpy(menu->name, "50 Hz"); 7457 strcpy((char *) menu->name, "50 Hz");
7458 return 0; 7458 return 0;
7459 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */ 7459 case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */
7460 strcpy(menu->name, "60 Hz"); 7460 strcpy((char *) menu->name, "60 Hz");
7461 return 0; 7461 return 0;
7462 } 7462 }
7463 break; 7463 break;
@@ -7465,7 +7465,7 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
7465 return -EINVAL; 7465 return -EINVAL;
7466} 7466}
7467 7467
7468static struct sd_desc sd_desc = { 7468static const struct sd_desc sd_desc = {
7469 .name = MODULE_NAME, 7469 .name = MODULE_NAME,
7470 .ctrls = sd_ctrls, 7470 .ctrls = sd_ctrls,
7471 .nctrls = sizeof sd_ctrls / sizeof sd_ctrls[0], 7471 .nctrls = sizeof sd_ctrls / sizeof sd_ctrls[0],
@@ -7480,7 +7480,7 @@ static struct sd_desc sd_desc = {
7480}; 7480};
7481 7481
7482#define DVNM(name) .driver_info = (kernel_ulong_t) name 7482#define DVNM(name) .driver_info = (kernel_ulong_t) name
7483static __devinitdata struct usb_device_id device_table[] = { 7483static const __devinitdata struct usb_device_id device_table[] = {
7484 {USB_DEVICE(0x041e, 0x041e), DVNM("Creative WebCam Live!")}, 7484 {USB_DEVICE(0x041e, 0x041e), DVNM("Creative WebCam Live!")},
7485 {USB_DEVICE(0x041e, 0x4017), DVNM("Creative Webcam Mobile PD1090")}, 7485 {USB_DEVICE(0x041e, 0x4017), DVNM("Creative Webcam Mobile PD1090")},
7486 {USB_DEVICE(0x041e, 0x401c), DVNM("Creative NX")}, 7486 {USB_DEVICE(0x041e, 0x401c), DVNM("Creative NX")},