Katsuya MATSUBARA wrote:
Hi Vladimir,
From: Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx>
Date: Fri, 21 Jun 2013 13:39:50 +0400
(snip)
I have not seen such i2c errors during capturing and booting.
But I have seen that querystd() in the ml86v7667 driver often
returns V4L2_STD_UNKNOWN, although the corresponding function
could you try Hans's fix:
https://patchwork.kernel.org/patch/2640701/
The fix has been already applied in my environment.
I've found that after some iteration of submission we disabled the input
signal in autodetection in ml86v7667_init(). per recommendations.
That could be the case why the input signal is not locked.
On adv7180 it still has optional autodetection but Hans recommended to
get rid from runtime autodetection.
So I've added input signal detection only during boot time.
Could you please try the attached patch?
Regards,
Vladimir
From: Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx>
Subject: V4L2: decoder: ml86v7667: fix querystd
Input signal autodetection is disabled, hence the cached V4L2_STD must be used
Signed-off-by: Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx>
---
drivers/media/i2c/ml86v7667.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
Index: build/drivers/media/i2c/ml86v7667.c
===================================================================
--- build.orig/drivers/media/i2c/ml86v7667.c 2013-06-21 13:24:13.000000000 +0300
+++ build/drivers/media/i2c/ml86v7667.c 2013-06-21 13:26:07.308872980 +0300
@@ -162,17 +162,9 @@
static int ml86v7667_querystd(struct v4l2_subdev *sd, v4l2_std_id *std)
{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int status;
+ struct ml86v7667_priv *priv = to_ml86v7667(sd);
- status = i2c_smbus_read_byte_data(client, STATUS_REG);
- if (status < 0)
- return status;
-
- if (status & STATUS_HLOCK_DETECT)
- *std &= status & STATUS_NTSCPAL ? V4L2_STD_625_50 : V4L2_STD_525_60;
- else
- *std = V4L2_STD_UNKNOWN;
+ *std = priv->std;
return 0;
}