| From 933c1320847f5ed6b61a7d10f0a948aa98ccd7b0 Mon Sep 17 00:00:00 2001 |
| From: Janusz Krzysztofik <jmkrzyszt@gmail.com> |
| Date: Sun, 24 Mar 2019 20:21:12 -0400 |
| Subject: media: ov6650: Fix sensor possibly not detected on probe |
| |
| From: Janusz Krzysztofik <jmkrzyszt@gmail.com> |
| |
| commit 933c1320847f5ed6b61a7d10f0a948aa98ccd7b0 upstream. |
| |
| After removal of clock_start() from before soc_camera_init_i2c() in |
| soc_camera_probe() by commit 9aea470b399d ("[media] soc-camera: switch |
| I2C subdevice drivers to use v4l2-clk") introduced in v3.11, the ov6650 |
| driver could no longer probe the sensor successfully because its clock |
| was no longer turned on in advance. The issue was initially worked |
| around by adding that missing clock_start() equivalent to OMAP1 camera |
| interface driver - the only user of this sensor - but a propoer fix |
| should be rather implemented in the sensor driver code itself. |
| |
| Fix the issue by inserting a delay between the clock is turned on and |
| the sensor I2C registers are read for the first time. |
| |
| Tested on Amstrad Delta with now out of tree but still locally |
| maintained omap1_camera host driver. |
| |
| Fixes: 9aea470b399d ("[media] soc-camera: switch I2C subdevice drivers to use v4l2-clk") |
| |
| Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/media/i2c/soc_camera/ov6650.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/media/i2c/soc_camera/ov6650.c |
| +++ b/drivers/media/i2c/soc_camera/ov6650.c |
| @@ -844,6 +844,8 @@ static int ov6650_video_probe(struct i2c |
| if (ret < 0) |
| return ret; |
| |
| + msleep(20); |
| + |
| /* |
| * check and show product ID and manufacturer ID |
| */ |