Re: [PATCH v3] media: ov5675: Fix power on/off delay timings
From: Johan Hovold
Date: Mon Jul 15 2024 - 03:47:45 EST
On Sat, Jul 13, 2024 at 11:33:29PM +0100, Bryan O'Donoghue wrote:
> The ov5675 specification says that the gap between XSHUTDN deassert and the
> first I2C transaction should be a minimum of 8192 XVCLK cycles.
>
> Right now we use a usleep_rage() that gives a sleep time of between about
> 430 and 860 microseconds.
>
> On the Lenovo X13s we have observed that in about 1/20 cases the current
> timing is too tight and we start transacting before the ov5675's reset
> cycle completes, leading to I2C bus transaction failures.
>
> The reset racing is sometimes triggered at initial chip probe but, more
> usually on a subsequent power-off/power-on cycle e.g.
>
> [ 71.451662] ov5675 24-0010: failed to write reg 0x0103. error = -5
> [ 71.451686] ov5675 24-0010: failed to set plls
>
> The current quiescence period we have is too tight. Instead of expressing
> the post reset delay in terms of the current XVCLK this patch converts the
> power-on and power-off delays to the maximum theoretical delay @ 6 MHz with
> an additional buffer.
>
> 1.365 milliseconds on the power-on path is 1.5 milliseconds with grace.
> 85.3 microseconds on the power-off path is 90 microseconds with grace.
>
> Fixes: 49d9ad719e89 ("media: ov5675: add device-tree support and support runtime PM")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
I haven't hit this issue, but the camera on the Lenovo ThinkPad X13s
still works with this patch so:
Tested-by: Johan Hovold <johan+linaro@xxxxxxxxxx>
Johan