summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/cx88/cx88-tvaudio.c
diff options
context:
space:
mode:
authordarron@kewl.org <darron@kewl.org>2008-10-15 18:18:42 +0100
committerdarron@kewl.org <darron@kewl.org>2008-10-15 18:18:42 +0100
commit2082ad419513b9aa806e180da67b925b514df28d (patch)
tree60cb52c9ffecfbd2093f7d8cfebdf8d15f7545a0 /linux/drivers/media/video/cx88/cx88-tvaudio.c
parentcebcc9b2ede5e03540724cf09e8f9a39aeb99f8c (diff)
downloadmediapointer-dvb-s2-2082ad419513b9aa806e180da67b925b514df28d.tar.gz
mediapointer-dvb-s2-2082ad419513b9aa806e180da67b925b514df28d.tar.bz2
cx88: add I2S-ADC tvaudio method
From: Darron Broad <darron@kewl.org> This adds I2S-ADC tvaudio mode as a formal method of audio delivery. This fixes one bug and adds fm audio via I2S-ADC on cards that support it. The bug occured before when I2S-ADC mode was initiated on composite/s-video open but was then reset within 500ms by the audio thread which used any previous audio tuning details. Priority: normal Signed-off-by: Darron Broad <darron@kewl.org> Signed-off-by: Steven Toth <stoth@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/video/cx88/cx88-tvaudio.c')
-rw-r--r--linux/drivers/media/video/cx88/cx88-tvaudio.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/linux/drivers/media/video/cx88/cx88-tvaudio.c b/linux/drivers/media/video/cx88/cx88-tvaudio.c
index 5eb95dbbe..0039354cf 100644
--- a/linux/drivers/media/video/cx88/cx88-tvaudio.c
+++ b/linux/drivers/media/video/cx88/cx88-tvaudio.c
@@ -771,6 +771,14 @@ void cx88_set_tvaudio(struct cx88_core *core)
case WW_FM:
set_audio_standard_FM(core, radio_deemphasis);
break;
+ case WW_I2SADC:
+ set_audio_start(core, 0x01);
+ /* Slave/Philips/Autobaud */
+ cx_write(AUD_I2SINPUTCNTL, 0);
+ /* Switch to "I2S ADC mode" */
+ cx_write(AUD_I2SCNTL, 0x1);
+ set_audio_finish(core, EN_I2SIN_ENABLE);
+ break;
case WW_NONE:
default:
printk("%s/0: unknown tv audio mode [%d]\n",
@@ -948,6 +956,9 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
break;
}
break;
+ case WW_I2SADC:
+ /* DO NOTHING */
+ break;
}
if (UNSET != ctl) {