diff options
author | Erik Andr?n <erik.andren@gmail.com> | 2009-01-16 01:48:15 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:34 -0400 |
commit | 9819267009bfec221159373eafd666db37d20c78 (patch) | |
tree | 264b6f6fbd765a8ce3b202499cd7b55a884aa512 | |
parent | 931a1c8dbf71d851d9d4e4dbdedc192bcc9e98c1 (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.c | 22 |
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 | ||