aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-10-16 23:29:25 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-17 11:59:10 -0400
commitde21eb63add932c61e018d20a760dcaed8c3e40c (patch)
treea6b121b5759c12e15e09a0f7235c7386daa8d571 /drivers/media
parent9b3acc21d7677787ef456d17574a084a1c1193ae (diff)
[PATCH] fix black/white-only svideo input in vpx3220 decoder
Fix the fact that the svideo input will only give input in black/white in some circumstances. Reason is that in the PCI controller driver (zr36067), after setting input, we reset norm, which overwrites the input register with the default. This patch makes it always set the correct value for the input when changing norm. Signed-off-by: Ronald S. Bultje <rbultje@ronald.bitfreak.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/vpx3220.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/media/video/vpx3220.c b/drivers/media/video/vpx3220.c
index 2bafca45c084..137b58f2c666 100644
--- a/drivers/media/video/vpx3220.c
+++ b/drivers/media/video/vpx3220.c
@@ -408,6 +408,12 @@ vpx3220_command (struct i2c_client *client,
408 case DECODER_SET_NORM: 408 case DECODER_SET_NORM:
409 { 409 {
410 int *iarg = arg, data; 410 int *iarg = arg, data;
411 int temp_input;
412
413 /* Here we back up the input selection because it gets
414 overwritten when we fill the registers with the
415 choosen video norm */
416 temp_input = vpx3220_fp_read(client, 0xf2);
411 417
412 dprintk(1, KERN_DEBUG "%s: DECODER_SET_NORM %d\n", 418 dprintk(1, KERN_DEBUG "%s: DECODER_SET_NORM %d\n",
413 I2C_NAME(client), *iarg); 419 I2C_NAME(client), *iarg);
@@ -447,6 +453,10 @@ vpx3220_command (struct i2c_client *client,
447 453
448 } 454 }
449 decoder->norm = *iarg; 455 decoder->norm = *iarg;
456
457 /* And here we set the backed up video input again */
458 vpx3220_fp_write(client, 0xf2, temp_input | 0x0010);
459 udelay(10);
450 } 460 }
451 break; 461 break;
452 462