Skip to content

Commit

Permalink
[media] cx25840: Enable support for non-tuner LR1/LR2 audio inputs
Browse files Browse the repository at this point in the history
The change effects cx23885 boards only and preserves support for existing
boards. Essentially, if we're using baseband audio into the cx23885 AV
core then we have to patch registers. The cx23885 driver will call
with either CX25840_AUDIO8 to signify tuner audio or AUDIO7 to
signify baseband audio. If/When we become more comfortable with this change
across a series of products then we may decide to relax the cx23885 only
restriction.

[liplianin@netup.ru: fix missing state declaration]

Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Igor M. Liplianin <liplianin@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Steven Toth authored and Mauro Carvalho Chehab committed Oct 14, 2011
1 parent d9368da commit 2ccdd9a
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
10 changes: 9 additions & 1 deletion drivers/media/video/cx25840/cx25840-audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,7 @@ void cx25840_audio_set_path(struct i2c_client *client)

static void set_volume(struct i2c_client *client, int volume)
{
struct cx25840_state *state = to_state(i2c_get_clientdata(client));
int vol;

/* Convert the volume to msp3400 values (0-127) */
Expand All @@ -495,7 +496,14 @@ static void set_volume(struct i2c_client *client, int volume)
}

/* PATH1_VOLUME */
cx25840_write(client, 0x8d4, 228 - (vol * 2));
if (is_cx2388x(state)) {
/* for cx23885 volume doesn't work,
* the calculation always results in
* e4 regardless.
*/
cx25840_write(client, 0x8d4, volume);
} else
cx25840_write(client, 0x8d4, 228 - (vol * 2));
}

static void set_balance(struct i2c_client *client, int balance)
Expand Down
11 changes: 11 additions & 0 deletions drivers/media/video/cx25840/cx25840-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1074,6 +1074,17 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
cx25840_write(client, 0x919, 0x01);
}

if (is_cx2388x(state) && (aud_input == CX25840_AUDIO7)) {
/* Configure audio from LR1 or LR2 input */
cx25840_write4(client, 0x910, 0);
cx25840_write4(client, 0x8d0, 0x63073);
} else
if (is_cx2388x(state) && (aud_input == CX25840_AUDIO8)) {
/* Configure audio from tuner/sif input */
cx25840_write4(client, 0x910, 0x12b000c9);
cx25840_write4(client, 0x8d0, 0x1f063870);
}

return 0;
}

Expand Down

0 comments on commit 2ccdd9a

Please sign in to comment.