Tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 13244, flags: 0, err_data 131072

When connecting a 400w camera on our customized board, the following problems will occur in the process of operation. I want to know what the meaning of different err_data numbers is, is there any relevant documentation? Where can I find it

hello wqr346077095,

may I have more details about this… 400w camera?
for example, is this DPHY or CPHY sensor, had you also check SerDes Pixel Clock section to evaluate clock rate configurations?

moreover,
may I know which Jetpack release version you’re working with,
please moving to the latest JetPack 5.1.3 release version if that’s possible.

Hi, JerryChang,
camera device tree:

phy_mode = "DPHY";
discontinuous_clk = "no";
active_w = "2688";
active_h = "1520";
line_length = "3300";
pix_clk_hz = "239750000";
serdes_pix_clk_hz = "239750000";
mode_type = "yuv";
pixel_phase = "vyuy";
csi_pixel_bit_depth = "16";

Jetpack version 5.1.2, L4T 35.4.1

The error occurs randomly during the device’s runtime, and I would like to know the meaning of these errors to help us troubleshoot the issue.

hello wqr346077095,

it’s discarding frame errors to drop unsuccessfully capture buffers, the error code 131072 is reported by CSI fault.
is it due to intermittently MIPI signaling? you may double check pixel clock settings.

BTW,
you may also have a try with below commands to boost all the clocks for testing.
(note, you may ignore ISP as you’re using YUV sensor)

sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate

Hi JerryChang,
“it’s discarding frame errors to drop unsuccessfully capture buffers”,What does it mean?And why does it discard buffers? Could you explain the underlying principle behind it? thanks !

What do these error codes mean? for example 131072、64、4194400 …

hello wqr346077095,

please refer to the VI-5 code snippet as following,
VI driver checks its capture status, dropping those error buffers.
for instance,

static void vi5_capture_dequeue(struct tegra_channel *chan,
        struct tegra_channel_buffer *buf)
                ...

                /* Dequeue a frame and check its capture status */
                err = vi_capture_status(chan->tegra_vi_channel[vi_port], CAPTURE_TIMEOUT_MS);

                ...
                } else if (descr->status.status != CAPTURE_STATUS_SUCCESS) {

                                dev_warn(vi->dev,
                                        "corr_err: discarding frame %d, flags: %d, "
                                        "err_data %d\n",
                                        descr->status.frame_id, descr->status.flags,
                                        descr->status.err_data);

please see-also error masking configuration for those error codes.
you may refer to CaptureChannelErrMask within below header file.
$public_sources/kernel_src/kernel/nvidia/include/soc/tegra/camrtc-capture.h
for example,
/** VI Frame start error timeout */
#define CAPTURE_CHANNEL_ERROR_VI_FRAME_START_TIMEOUT MK_BIT32(23)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.