aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Andr?n <erik.andren@gmail.com>2009-01-16 01:48:15 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:20:34 -0400
commit9819267009bfec221159373eafd666db37d20c78 (patch)
tree264b6f6fbd765a8ce3b202499cd7b55a884aa512
parent931a1c8dbf71d851d9d4e4dbdedc192bcc9e98c1 (diff)
V4L/DVB (11536): gspca - m5602-po1030: Impove the bridge vsync/hsync configuration
Signed-off-by: Erik Andr?n <erik.andren@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/gspca/m5602/m5602_po1030.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/media/video/gspca/m5602/m5602_po1030.c b/drivers/media/video/gspca/m5602/m5602_po1030.c
index 9e9eed89ea63..5b9113325ecb 100644
--- a/drivers/media/video/gspca/m5602/m5602_po1030.c
+++ b/drivers/media/video/gspca/m5602/m5602_po1030.c
@@ -367,11 +367,6 @@ int po1030_start(struct sd *sd)
367 break; 367 break;
368 368
369 case 640: 369 case 640:
370 data = 0;
371 err = m5602_write_sensor(sd, PO1030_CONTROL3, &data, 1);
372 if (err < 0)
373 return err;
374
375 data = ((width + 7) >> 8) & 0xff; 370 data = ((width + 7) >> 8) & 0xff;
376 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1); 371 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1);
377 if (err < 0) 372 if (err < 0)
@@ -394,6 +389,9 @@ int po1030_start(struct sd *sd)
394 width -= 2; 389 width -= 2;
395 break; 390 break;
396 } 391 }
392 err = m5602_write_bridge(sd, M5602_XB_SENSOR_TYPE, 0x0c);
393 if (err < 0)
394 return err;
397 395
398 err = m5602_write_bridge(sd, M5602_XB_LINE_OF_FRAME_H, 0x81); 396 err = m5602_write_bridge(sd, M5602_XB_LINE_OF_FRAME_H, 0x81);
399 if (err < 0) 397 if (err < 0)
@@ -403,6 +401,10 @@ int po1030_start(struct sd *sd)
403 if (err < 0) 401 if (err < 0)
404 return err; 402 return err;
405 403
404 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0x01);
405 if (err < 0)
406 return err;
407
406 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 408 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA,
407 ((ver_offs >> 8) & 0xff)); 409 ((ver_offs >> 8) & 0xff));
408 if (err < 0) 410 if (err < 0)
@@ -412,7 +414,8 @@ int po1030_start(struct sd *sd)
412 if (err < 0) 414 if (err < 0)
413 return err; 415 return err;
414 416
415 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0); 417 for (i = 0; i < 2 && !err; i++)
418 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0);
416 if (err < 0) 419 if (err < 0)
417 return err; 420 return err;
418 421
@@ -428,6 +431,9 @@ int po1030_start(struct sd *sd)
428 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0); 431 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0);
429 432
430 for (i = 0; i < 2 && !err; i++) 433 for (i = 0; i < 2 && !err; i++)
434 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0);
435
436 for (i = 0; i < 2 && !err; i++)
431 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, 0); 437 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, 0);
432 if (err < 0) 438 if (err < 0)
433 return err; 439 return err;
@@ -437,6 +443,10 @@ int po1030_start(struct sd *sd)
437 return err; 443 return err;
438 444
439 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, (width & 0xff)); 445 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, (width & 0xff));
446 if (err < 0)
447 return err;
448
449 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0);
440 return err; 450 return err;
441} 451}
442 452