mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
[media] cx25840: fix cx25840_s_stream for cx2388x and cx231xx
For those two devices the code wrote to addresses 0x115/6, but on those devices those addresses have nothing to do with power controls. So clearly this never worked. Rather than writing to bogus addresses, just do nothing for the cx2388x and cx231xx. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
499ebed3ec
commit
e69d89420e
1 changed files with 19 additions and 18 deletions
|
@ -1716,26 +1716,27 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
|
|||
|
||||
v4l_dbg(1, cx25840_debug, client, "%s video output\n",
|
||||
enable ? "enable" : "disable");
|
||||
|
||||
/*
|
||||
* It's not clear what should be done for these devices.
|
||||
* The original code used the same addresses as for the cx25840, but
|
||||
* those addresses do something else entirely on the cx2388x and
|
||||
* cx231xx. Since it never did anything in the first place, just do
|
||||
* nothing.
|
||||
*/
|
||||
if (is_cx2388x(state) || is_cx231xx(state))
|
||||
return 0;
|
||||
|
||||
if (enable) {
|
||||
if (is_cx2388x(state) || is_cx231xx(state)) {
|
||||
v = cx25840_read(client, 0x421) | 0x0b;
|
||||
cx25840_write(client, 0x421, v);
|
||||
} else {
|
||||
v = cx25840_read(client, 0x115) | 0x0c;
|
||||
cx25840_write(client, 0x115, v);
|
||||
v = cx25840_read(client, 0x116) | 0x04;
|
||||
cx25840_write(client, 0x116, v);
|
||||
}
|
||||
v = cx25840_read(client, 0x115) | 0x0c;
|
||||
cx25840_write(client, 0x115, v);
|
||||
v = cx25840_read(client, 0x116) | 0x04;
|
||||
cx25840_write(client, 0x116, v);
|
||||
} else {
|
||||
if (is_cx2388x(state) || is_cx231xx(state)) {
|
||||
v = cx25840_read(client, 0x421) & ~(0x0b);
|
||||
cx25840_write(client, 0x421, v);
|
||||
} else {
|
||||
v = cx25840_read(client, 0x115) & ~(0x0c);
|
||||
cx25840_write(client, 0x115, v);
|
||||
v = cx25840_read(client, 0x116) & ~(0x04);
|
||||
cx25840_write(client, 0x116, v);
|
||||
}
|
||||
v = cx25840_read(client, 0x115) & ~(0x0c);
|
||||
cx25840_write(client, 0x115, v);
|
||||
v = cx25840_read(client, 0x116) & ~(0x04);
|
||||
cx25840_write(client, 0x116, v);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue