Skip to content
Snippets Groups Projects
  1. Jul 11, 2024
    • Bryan O'Donoghue's avatar
      media: ov5675: Fix power on/off delay timings · ea875dfd
      Bryan O'Donoghue authored
      
      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.
      853 microseconds on the power-off path is 900 microseconds with grace.
      
      Fixes: 49d9ad71 ("media: ov5675: add device-tree support and support runtime PM")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
  2. Jul 10, 2024
Loading