diff options
| author | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2023-08-30 16:16:10 +0100 |
|---|---|---|
| committer | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2023-09-27 09:39:54 +0200 |
| commit | 3143ad282fc08bf995ee73e32a9e40c527bf265d (patch) | |
| tree | d6cbaea4604cc7ad690cbf500f795a3637b81249 /include/linux/platform_data/serial-sccnxp.h | |
| parent | 26bda3da00c3edef727a6acb00ed2eb4b22f8723 (diff) | |
media: qcom: camss: Fix VFE-17x vfe_disable_output()
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.
Fixes: 7319cdf189bb ("media: camss: Add support for VFE hardware version Titan 170")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Diffstat (limited to 'include/linux/platform_data/serial-sccnxp.h')
0 files changed, 0 insertions, 0 deletions
