aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/gspca/ov534.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c
index a574be09bd41..b26faae8d759 100644
--- a/drivers/media/video/gspca/ov534.c
+++ b/drivers/media/video/gspca/ov534.c
@@ -48,7 +48,6 @@ static int frame_rate;
48/* specific webcam descriptor */ 48/* specific webcam descriptor */
49struct sd { 49struct sd {
50 struct gspca_dev gspca_dev; /* !! must be the first item */ 50 struct gspca_dev gspca_dev; /* !! must be the first item */
51 __u8 frame_rate;
52}; 51};
53 52
54/* V4L2 controls supported by the driver */ 53/* V4L2 controls supported by the driver */
@@ -358,45 +357,38 @@ static int sd_config(struct gspca_dev *gspca_dev,
358/* this function is called at probe and resume time */ 357/* this function is called at probe and resume time */
359static int sd_init(struct gspca_dev *gspca_dev) 358static int sd_init(struct gspca_dev *gspca_dev)
360{ 359{
361 struct sd *sd = (struct sd *)gspca_dev; 360 int fr;
362 ov534_setup(gspca_dev->dev);
363 361
364 if (frame_rate > 0) 362 ov534_setup(gspca_dev->dev);
365 sd->frame_rate = frame_rate;
366 363
367 PDEBUG(D_PROBE, "frame_rate = %d", sd->frame_rate); 364 fr = frame_rate;
368 365
369 switch (sd->frame_rate) { 366 switch (fr) {
370 case 50: 367 case 50:
371 sccb_reg_write(gspca_dev->dev, 0x11, 0x01); 368 sccb_reg_write(gspca_dev->dev, 0x11, 0x01);
372 sccb_check_status(gspca_dev->dev);
373 sccb_reg_write(gspca_dev->dev, 0x0d, 0x41); 369 sccb_reg_write(gspca_dev->dev, 0x0d, 0x41);
374 sccb_check_status(gspca_dev->dev);
375 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x02); 370 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x02);
376 break; 371 break;
377 case 40: 372 case 40:
378 sccb_reg_write(gspca_dev->dev, 0x11, 0x02); 373 sccb_reg_write(gspca_dev->dev, 0x11, 0x02);
379 sccb_check_status(gspca_dev->dev);
380 sccb_reg_write(gspca_dev->dev, 0x0d, 0xc1); 374 sccb_reg_write(gspca_dev->dev, 0x0d, 0xc1);
381 sccb_check_status(gspca_dev->dev);
382 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x04); 375 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x04);
383 break; 376 break;
384 case 30: 377/* case 30: */
385 default: 378 default:
379 fr = 30;
386 sccb_reg_write(gspca_dev->dev, 0x11, 0x04); 380 sccb_reg_write(gspca_dev->dev, 0x11, 0x04);
387 sccb_check_status(gspca_dev->dev);
388 sccb_reg_write(gspca_dev->dev, 0x0d, 0x81); 381 sccb_reg_write(gspca_dev->dev, 0x0d, 0x81);
389 sccb_check_status(gspca_dev->dev);
390 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x02); 382 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x02);
391 break; 383 break;
392 case 15: 384 case 15:
393 sccb_reg_write(gspca_dev->dev, 0x11, 0x03); 385 sccb_reg_write(gspca_dev->dev, 0x11, 0x03);
394 sccb_check_status(gspca_dev->dev);
395 sccb_reg_write(gspca_dev->dev, 0x0d, 0x41); 386 sccb_reg_write(gspca_dev->dev, 0x0d, 0x41);
396 sccb_check_status(gspca_dev->dev);
397 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x04); 387 ov534_reg_verify_write(gspca_dev->dev, 0xe5, 0x04);
398 break; 388 break;
399 }; 389 }
390
391 PDEBUG(D_PROBE, "frame_rate: %d", fr);
400 392
401 return 0; 393 return 0;
402} 394}