Files
linux/drivers
Bryan O'Donoghue 3143ad282f 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: 7319cdf189 ("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>
2023-09-27 09:39:54 +02:00
..
2023-08-22 15:50:57 +02:00
2023-08-24 16:20:30 -07:00
2023-08-30 18:32:24 -07:00
2023-08-18 10:55:49 +05:30
2023-09-11 15:24:16 -07:00
2023-09-19 13:17:52 +01:00
2023-09-21 10:33:49 +02:00
2023-08-24 16:20:18 -07:00
2023-08-21 13:27:44 +02:00