Skip to content
Snippets Groups Projects
  1. Jul 10, 2023
    • Bryan O'Donoghue's avatar
      media: qcom: camss: Fix VFE-480 vfe_disable_output() · 1f9876cc
      Bryan O'Donoghue authored
      
      vfe-480 is copied from vfe-17x and has the same racy idle timeout bug as in
      17x.
      
      Fix the vfe_disable_output() logic to no longer be racy and to conform
      to the 17x way of quiescing and then resetting the VFE.
      
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      1f9876cc
    • Bryan O'Donoghue's avatar
      media: qcom: camss: Fix VFE-17x vfe_disable_output() · ca7c7d00
      Bryan O'Donoghue authored
      
      There are two problems with the current vfe_disable_output() routine.
      
      Firstly we rightly use a spinlock to protect output->gen2.active_num
      everywhere except for in the IDLE timeout path of vfe_disable_output().
      Even if that is not racy "in practice" somehow it is by happenstance not
      by design.
      
      Secondly we do not get consistent behaviour from this routine. On
      sc8280xp 50% of the time I get "VFE idle timeout - resetting". In this
      case the subsequent capture will succeed. The other 50% of the time, we
      don't hit the idle timeout, never do the VFE reset and subsequent
      captures stall indefinitely.
      
      Rewrite the vfe_disable_output() routine to
      
      - Quiesce write masters with vfe_wm_stop()
      - Set active_num = 0
      
      remembering to hold the spinlock when we do so followed by
      
      - Reset the VFE
      
      Testing on sc8280xp and sdm845 shows this to be a valid fix.
      
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      ca7c7d00
  2. Jul 07, 2023
  3. Jul 05, 2023
Loading