From: Hans Verkuil <hverkuil@xs4all.nl>
Date: Mon, 9 Jan 2006 17:25:43 +0000 (-0200)
Subject: V4L/DVB (3254): Don't reprogram the video standard if it is unchanged.
X-Git-Tag: firefly_0821_release~39399^2~49
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=30b54d50f6e2b8f5a4c8b5ade3d25a02612f8f51;p=firefly-linux-kernel-4.4.55.git

V4L/DVB (3254): Don't reprogram the video standard if it is unchanged.


- Don't reprogram the video standard if the new standard
equals the old standard.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
---

diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c
index 3e4e5584c5d0..5d33d0922e79 100644
--- a/drivers/media/video/saa7115.c
+++ b/drivers/media/video/saa7115.c
@@ -668,6 +668,16 @@ static void saa7115_set_v4lstd(struct i2c_client *client, v4l2_std_id std)
 	struct saa7115_state *state = i2c_get_clientdata(client);
 	int taskb = saa7115_read(client, 0x80) & 0x10;
 
+	/* Prevent unnecessary standard changes. During a standard
+	   change the I-Port is temporarily disabled. Any devices
+	   reading from that port can get confused.
+	   Note that VIDIOC_S_STD is also used to switch from
+	   radio to TV mode, so if a VIDIOC_S_STD is broadcast to
+	   all I2C devices then you do not want to have an unwanted
+	   side-effect here. */
+	if (std == state->std)
+		return;
+
 	// This works for NTSC-M, SECAM-L and the 50Hz PAL variants.
 	if (std & V4L2_STD_525_60) {
 		saa7115_dbg("decoder set standard 60 Hz\n");