提交 4c3764d1 编写于 作者: S Steven Toth 提交者: Mauro Carvalho Chehab

[media] cx25840 / cx23885: Fixing audio/volume regression

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: NSteven Toth <stoth@kernellabs.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 c81c0060
...@@ -253,9 +253,9 @@ static struct cx23885_ctrl cx23885_ctls[] = { ...@@ -253,9 +253,9 @@ static struct cx23885_ctrl cx23885_ctls[] = {
.id = V4L2_CID_AUDIO_VOLUME, .id = V4L2_CID_AUDIO_VOLUME,
.name = "Volume", .name = "Volume",
.minimum = 0, .minimum = 0,
.maximum = 0x3f, .maximum = 65535,
.step = 1, .step = 65535 / 100,
.default_value = 0x3f, .default_value = 65535,
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
}, },
.reg = PATH1_VOL_CTL, .reg = PATH1_VOL_CTL,
......
...@@ -480,7 +480,6 @@ void cx25840_audio_set_path(struct i2c_client *client) ...@@ -480,7 +480,6 @@ void cx25840_audio_set_path(struct i2c_client *client)
static void set_volume(struct i2c_client *client, int volume) static void set_volume(struct i2c_client *client, int volume)
{ {
struct cx25840_state *state = to_state(i2c_get_clientdata(client));
int vol; int vol;
/* Convert the volume to msp3400 values (0-127) */ /* Convert the volume to msp3400 values (0-127) */
...@@ -496,14 +495,7 @@ static void set_volume(struct i2c_client *client, int volume) ...@@ -496,14 +495,7 @@ static void set_volume(struct i2c_client *client, int volume)
} }
/* PATH1_VOLUME */ /* PATH1_VOLUME */
if (is_cx2388x(state)) { cx25840_write(client, 0x8d4, 228 - (vol * 2));
/* 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) static void set_balance(struct i2c_client *client, int balance)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册