Messages in this thread Patch in this message | | | Subject | [PATCH] 3/3: 2.6.8 zr36067 driver - correct subfrequency carrier | From | Ronald Bultje <> | Date | Sun, 29 Aug 2004 21:29:23 +0200 |
| |
Hi,
attached patch changes the subfrequency carrier value in the adv7175 video output driver which is part of the zr36067 driver package. The practical consequence is that the picture will be more stable on non-passthrough video mode in NTSC. It does not affect PAL/SECAM. Patch originally submitted by Douglas Fraser <ds-fraser@comcast.net> (8/21).
Ronald
Signed-off-by: Ronald Bultje <rbultje@ronald.bitfreak.net> Signed-off-by: Douglas Fraser <ds-fraser@comcast.net>
-- Ronald Bultje <rbultje@ronald.bitfreak.net> Index: linux/drivers/media/video/adv7175.c --- linux~zoran-adv7175-scf/drivers/media/video/adv7175.c 2004-08-14 12:56:22.000000000 +0200 +++ linux/drivers/media/video/adv7175.c 2004-08-29 18:33:18.392719048 +0200 @@ -156,6 +156,22 @@ return ret; } +static void +set_subcarrier_freq (struct i2c_client *client, + int pass_through) +{ + /* for some reason pass_through NTSC needs + * a different sub-carrier freq to remain stable. */ + if(pass_through) + adv7175_write(client, 0x02, 0x00); + else + adv7175_write(client, 0x02, 0x55); + + adv7175_write(client, 0x03, 0x55); + adv7175_write(client, 0x04, 0x55); + adv7175_write(client, 0x05, 0x25); +} + #ifdef ENCODER_DUMP static void dump (struct i2c_client *client) @@ -322,6 +338,10 @@ case 0: adv7175_write(client, 0x01, 0x00); + + if (encoder->norm == VIDEO_MODE_NTSC) + set_subcarrier_freq(client, 1); + adv7175_write(client, 0x0c, TR1CAPT); /* TR1 */ if (encoder->norm == VIDEO_MODE_SECAM) adv7175_write(client, 0x0d, 0x49); // Disable genlock @@ -334,6 +354,10 @@ case 1: adv7175_write(client, 0x01, 0x00); + + if (encoder->norm == VIDEO_MODE_NTSC) + set_subcarrier_freq(client, 0); + adv7175_write(client, 0x0c, TR1PLAY); /* TR1 */ adv7175_write(client, 0x0d, 0x49); adv7175_write(client, 0x07, TR0MODE | TR0RST); @@ -343,6 +367,10 @@ case 2: adv7175_write(client, 0x01, 0x80); + + if (encoder->norm == VIDEO_MODE_NTSC) + set_subcarrier_freq(client, 0); + adv7175_write(client, 0x0d, 0x49); adv7175_write(client, 0x07, TR0MODE | TR0RST); adv7175_write(client, 0x07, TR0MODE); | |