Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e69d8942 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 499ebed3
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -1716,27 +1716,28 @@ 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);
		}
	} 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);
	}
	}
	return 0;
}