summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Cerqueira <v4l@cerqueira.org>2007-10-17 00:52:08 +0100
committerRicardo Cerqueira <v4l@cerqueira.org>2007-10-17 00:52:08 +0100
commitc085c020a6af7faa8ab0bbf4c010ca9104aa04f0 (patch)
treef816aa86b336800260dac13a7e1fedaf8c908366
parent7bbfb93108980416344e1851b2d045336540c529 (diff)
downloadmediapointer-dvb-s2-c085c020a6af7faa8ab0bbf4c010ca9104aa04f0.tar.gz
mediapointer-dvb-s2-c085c020a6af7faa8ab0bbf4c010ca9104aa04f0.tar.bz2
Don't limit cx88 audio routing to blackbird boards
From: Ricardo Cerqueira <v4l@cerqueira.org> All cx2388 boards need the line-in audio to be routed from an external ADC (refered to as "ADC mode" in the spec sheet), since the chip is uncapable of dealing with baseband audio directly. So... this patch enables normal mode when using the tuner (TV or Radio), and enables ADC mode with any other source. It'll probably only work with boards that have supported ADCs (such as the Wolfson wm9775) Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
-rw-r--r--linux/drivers/media/video/cx88/cx88-video.c46
1 files changed, 31 insertions, 15 deletions
diff --git a/linux/drivers/media/video/cx88/cx88-video.c b/linux/drivers/media/video/cx88/cx88-video.c
index 9feb5c4bb..fe6c66a58 100644
--- a/linux/drivers/media/video/cx88/cx88-video.c
+++ b/linux/drivers/media/video/cx88/cx88-video.c
@@ -408,25 +408,41 @@ int cx88_video_mux(struct cx88_core *core, unsigned int input)
break;
}
- if (core->board.mpeg & CX88_MPEG_BLACKBIRD) {
- /* sets sound input from external adc */
- if (INPUT(input).audioroute) {
- /* The wm8775 module has the "2" route hardwired into
- the initialization. Some boards may use different
- routes for different inputs. HVR-1300 surely does */
- if (core->board.audio_chip &&
- core->board.audio_chip == AUDIO_CHIP_WM8775) {
- struct v4l2_routing route;
-
- route.input = INPUT(input).audioroute;
- cx88_call_i2c_clients(core,
- VIDIOC_INT_S_AUDIO_ROUTING,&route);
- }
+ /* if there are audioroutes defined, we have an external
+ ADC to deal with audio */
+
+ if (INPUT(input).audioroute) {
+
+ /* cx2388's C-ADC is connected to the tuner only.
+ When used with S-Video, that ADC is busy dealing with
+ chroma, so an external must be used for baseband audio */
+ if (INPUT(input).type != CX88_VMUX_TELEVISION &&
+ INPUT(input).type != CX88_RADIO) {
+ /* "ADC mode" */
+ cx_write(AUD_I2SCNTL, 0x1);
cx_set(AUD_CTL, EN_I2SIN_ENABLE);
- } else
+ } else {
+ /* Normal mode */
+ cx_write(AUD_I2SCNTL, 0x0);
cx_clear(AUD_CTL, EN_I2SIN_ENABLE);
+ }
+
+ /* The wm8775 module has the "2" route hardwired into
+ the initialization. Some boards may use different
+ routes for different inputs. HVR-1300 surely does */
+ if (core->board.audio_chip &&
+ core->board.audio_chip == AUDIO_CHIP_WM8775) {
+ struct v4l2_routing route;
+
+ route.input = INPUT(input).audioroute;
+ cx88_call_i2c_clients(core,
+ VIDIOC_INT_S_AUDIO_ROUTING,&route);
+
+ }
+
}
+
return 0;
}
EXPORT_SYMBOL(cx88_video_mux);