Commit 57e24b62 authored by Andy Walls's avatar Andy Walls Committed by Mauro Carvalho Chehab

V4L/DVB (9936): cx18: Disable locking of Video and Audio PLL for analog captures

Disable AV_LOCK, locking of audio PLL to video PLL in the cx18-av-core for
analog captures.  It seems to have adverse effects on captures from
SVideo and CVBS sources with current clock & crystal settings in the driver.

Many thanks to Jeff Campbell and Mike Bradley for reporting this problem,
and suggesting the solution and performing extensive testing to support their
suggestion.
Reported-by: default avatarJeff Campbell <jac1dlists@gmail.com>
Reported-by: default avatarMike Bradley <mike.bradley@incanetworks.com>
Signed-off-by: default avatarAndy Walls <awalls@radix.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 15029b39
...@@ -57,11 +57,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -57,11 +57,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x11202fff); cx18_av_write4(cx, 0x12c, 0x11202fff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x0d2ef8 = 107999.000 * 8 = * VID_COUNT = 0x0d2ef8 = 107999.000 * 8 =
* ((8 samples/32,000) * (13,500,000 * 8) * 4 - 1) * 8 * ((8 samples/32,000) * (13,500,000 * 8) * 4 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa10d2ef8); cx18_av_write4(cx, 0x128, 0xa00d2ef8);
break; break;
case 44100: case 44100:
...@@ -82,11 +82,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -82,11 +82,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x112092ff); cx18_av_write4(cx, 0x12c, 0x112092ff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x1d4bf8 = 239999.000 * 8 = * VID_COUNT = 0x1d4bf8 = 239999.000 * 8 =
* ((49 samples/44,100) * (13,500,000 * 8) * 2 - 1) * 8 * ((49 samples/44,100) * (13,500,000 * 8) * 2 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa11d4bf8); cx18_av_write4(cx, 0x128, 0xa01d4bf8);
break; break;
case 48000: case 48000:
...@@ -107,11 +107,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -107,11 +107,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x11205fff); cx18_av_write4(cx, 0x12c, 0x11205fff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x1193f8 = 143999.000 * 8 = * VID_COUNT = 0x1193f8 = 143999.000 * 8 =
* ((4 samples/48,000) * (13,500,000 * 8) * 16 - 1) * 8 * ((4 samples/48,000) * (13,500,000 * 8) * 16 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa11193f8); cx18_av_write4(cx, 0x128, 0xa01193f8);
break; break;
} }
} else { } else {
...@@ -141,11 +141,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -141,11 +141,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x11201fff); cx18_av_write4(cx, 0x12c, 0x11201fff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x0d2ef8 = 107999.000 * 8 = * VID_COUNT = 0x0d2ef8 = 107999.000 * 8 =
* ((8 samples/32,000) * (13,500,000 * 8) * 4 - 1) * 8 * ((8 samples/32,000) * (13,500,000 * 8) * 4 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa10d2ef8); cx18_av_write4(cx, 0x128, 0xa00d2ef8);
break; break;
case 44100: case 44100:
...@@ -170,11 +170,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -170,11 +170,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x112061ff); cx18_av_write4(cx, 0x12c, 0x112061ff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x1d4bf8 = 239999.000 * 8 = * VID_COUNT = 0x1d4bf8 = 239999.000 * 8 =
* ((49 samples/44,100) * (13,500,000 * 8) * 2 - 1) * 8 * ((49 samples/44,100) * (13,500,000 * 8) * 2 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa11d4bf8); cx18_av_write4(cx, 0x128, 0xa01d4bf8);
break; break;
case 48000: case 48000:
...@@ -199,11 +199,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq) ...@@ -199,11 +199,11 @@ static int set_audclk_freq(struct cx18 *cx, u32 freq)
cx18_av_write4(cx, 0x12c, 0x11203fff); cx18_av_write4(cx, 0x12c, 0x11203fff);
/* /*
* EN_AV_LOCK = 1 * EN_AV_LOCK = 0
* VID_COUNT = 0x1193f8 = 143999.000 * 8 = * VID_COUNT = 0x1193f8 = 143999.000 * 8 =
* ((4 samples/48,000) * (13,500,000 * 8) * 16 - 1) * 8 * ((4 samples/48,000) * (13,500,000 * 8) * 16 - 1) * 8
*/ */
cx18_av_write4(cx, 0x128, 0xa11193f8); cx18_av_write4(cx, 0x128, 0xa01193f8);
break; break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment