mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
vi5: continue captures even after corr errors
even if the channel encounters corr error, continue captures anticipating that channel might recover in future. This also prevents high CPU usage of the dequeue thread in corr error usecase. bug 4310063 Change-Id: I49a30f9f5583badf77ecd5c60b94009f786a0b7a Signed-off-by: Anubhav Rai <arai@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2995411 (cherry picked from commit d8749afd649c213927bb49c1384f063f099dd083) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3007710 Reviewed-by: Ankur Pawar <ankurp@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
0f76fc5e17
commit
5bf029b886
@@ -489,7 +489,8 @@ static void vi5_capture_dequeue(struct tegra_channel *chan,
|
||||
struct tegra_channel_buffer *buf)
|
||||
{
|
||||
int err = 0;
|
||||
unsigned int vi_port = 0;
|
||||
bool frame_err = false;
|
||||
int vi_port = 0;
|
||||
int gang_prev_frame_id = 0;
|
||||
unsigned long flags;
|
||||
struct tegra_mc_vi *vi = chan->vi;
|
||||
@@ -526,8 +527,7 @@ static void vi5_capture_dequeue(struct tegra_channel *chan,
|
||||
"err_data %d\n",
|
||||
descr->status.frame_id, descr->status.flags,
|
||||
descr->status.err_data);
|
||||
buf->vb2_state = VB2_BUF_STATE_ERROR;
|
||||
goto done;
|
||||
frame_err = true;
|
||||
}
|
||||
} else if (!vi_port) {
|
||||
gang_prev_frame_id = descr->status.frame_id;
|
||||
@@ -551,12 +551,14 @@ static void vi5_capture_dequeue(struct tegra_channel *chan,
|
||||
trace_tegra_channel_capture_frame("sof", &ts);
|
||||
vb->vb2_buf.timestamp = descr->status.sof_timestamp;
|
||||
|
||||
buf->vb2_state = VB2_BUF_STATE_DONE;
|
||||
if (frame_err)
|
||||
buf->vb2_state = VB2_BUF_STATE_ERROR;
|
||||
else
|
||||
buf->vb2_state = VB2_BUF_STATE_DONE;
|
||||
/* Read EOF from capture descriptor */
|
||||
ts = ns_to_timespec64((s64)descr->status.eof_timestamp);
|
||||
trace_tegra_channel_capture_frame("eof", &ts);
|
||||
|
||||
done:
|
||||
goto rel_buf;
|
||||
|
||||
uncorr_err:
|
||||
|
||||
Reference in New Issue
Block a user