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)
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
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);
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);