tag:CSIMUX_FRAME channel:0x00 frame:1 vi_tstamp:3607277994400 data:0x00000000000000a0

Hi @JerryChang,

I did as you suggested :

  1. Adding the patch of Topic 252803
diff --git a/kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c b/kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
index 69ebee6a8..8f0df46e1 100644
--- a/kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
+++ b/kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi5_fops.c
@@ -304,6 +304,9 @@ static int tegra_channel_capture_setup(struct tegra_channel *chan, unsigned int
                setup.csi_port = csi_chan->ports[vi_port].csi_port;
        }

+       if (chan->fmtinfo->fourcc == V4L2_PIX_FMT_NV16)
+               setup.channel_flags |= CAPTURE_CHANNEL_FLAG_SEMI_PLANAR;
+
        err = vi_capture_setup(chan->tegra_vi_channel[vi_port], &setup);
        if (err) {
                dev_err(chan->vi->dev, "vi capture setup failed\n");
@@ -354,6 +357,12 @@ static void vi5_setup_surface(struct tegra_channel *chan,
        desc_memoryinfo->surface[0].size = chan->format.bytesperline * height;
        desc->ch_cfg.atomp.surface_stride[0] = bpl;

+       if (chan->fmtinfo->fourcc == V4L2_PIX_FMT_NV16) {
+               desc_memoryinfo->surface[1].base_address = offset + chan->format.sizeimage / 2;
+               desc_memoryinfo->surface[1].size = chan->format.bytesperline * height;
+               desc->ch_cfg.atomp.surface_stride[1] = bpl;
+       }
+
        if (chan->embedded_data_height > 0) {

  1. Launching v4l2-ctl command for NV16 : same result

trace_v4l2_nv16.txt (795.2 KB)