Skip to content

Commit

Permalink
V4L/DVB (6833): Don't limit cx88 audio routing to blackbird boards
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Ricardo Cerqueira authored and Mauro Carvalho Chehab committed Jan 25, 2008
1 parent 6a0bc9a commit 66e6fbd
Showing 1 changed file with 31 additions and 15 deletions.
46 changes: 31 additions & 15 deletions drivers/media/video/cx88/cx88-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,25 +392,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);
Expand Down

0 comments on commit 66e6fbd

Please sign in to comment.