Hi,
I’m currently developing a camera driver on TX2. Before doing this job, I’ve successfully developed this driver for the Jetson TX1 development kit, so I thought it would be a straightforward job.
However, I was stuck at some errors. When I use yavta tools to test stability,but occasionally, some
problems occured as follows:
[ 42.192947] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
[ 43.196973] tegra-vi4 15700000.vi: ATOMP_FE syncpt timeout!
By reading TX1‘s VI driver, I found that there is a error recovery mechanism as follows:
/* Arm capture and wait for notifier or syncpoint */
err = chan->fops->soc_channel_capture_frame(chan, &ts, thresh);
if (err) {
state = VB2_BUF_STATE_ERROR;
/* perform error recovery for timeout */
tegra_channel_ec_recover(chan);
} else if (!chan->vi->pg_mode) {
But this disappear on TX2.
for (i = 0; i < chan->valid_ports; i++) {
err = nvhost_syncpt_wait_timeout_ext(chan->vi->ndev,
chan->syncpt[i][SOF_SYNCPT_IDX], thresh[i],
250, NULL, NULL);
if (unlikely(err))
dev_err(chan->vi->dev,
"PXL_SOF syncpt timeout! err = %d\n", err);
else {
struct vi_capture_status status;
err = vi_notify_get_capture_status(chan->vnc[i],
chan->vnc_id[i],
thresh[i], &status);
if (unlikely(err))
dev_err(chan->vi->dev,
"no capture status! err = %d\n", err);
else
*ts = ns_to_timespec((s64)status.sof_ts);
}
}
So It runs well on TX1, but unstable on TX2.
thanks.