Skip to content

Commit

Permalink
[media] cx25840 / cx23885: Fixing audio/volume regression
Browse files Browse the repository at this point in the history
Since the conversion to subdev in Oct 2010 the audio controls have
not functioned correctly in the cx23885 driver. Passing values of
0-3f did not translate into meaningfull register writes. I've
converted the cx23885 driver to match the cx25840 volume control
definition and now audio is working reliably again.

Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Steven Toth authored and Mauro Carvalho Chehab committed Jan 4, 2012
1 parent c81c006 commit 4c3764d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 12 deletions.
6 changes: 3 additions & 3 deletions drivers/media/video/cx23885/cx23885-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,9 @@ static struct cx23885_ctrl cx23885_ctls[] = {
.id = V4L2_CID_AUDIO_VOLUME,
.name = "Volume",
.minimum = 0,
.maximum = 0x3f,
.step = 1,
.default_value = 0x3f,
.maximum = 65535,
.step = 65535 / 100,
.default_value = 65535,
.type = V4L2_CTRL_TYPE_INTEGER,
},
.reg = PATH1_VOL_CTL,
Expand Down
10 changes: 1 addition & 9 deletions drivers/media/video/cx25840/cx25840-audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,6 @@ 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 @@ -496,14 +495,7 @@ static void set_volume(struct i2c_client *client, int volume)
}

/* PATH1_VOLUME */
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));
cx25840_write(client, 0x8d4, 228 - (vol * 2));
}

static void set_balance(struct i2c_client *client, int balance)
Expand Down

0 comments on commit 4c3764d

Please sign in to comment.