ADV7280m configuration

Hi alfredosalvarani.It seems you’ve got the same situation as I said before:“I’m facing a similar problem.By changing the mask registers I’ve solved some problem, but remaining an error: csi4_channel_check_status (2) ERROR_STATUS2VI_VC0 = 0x00000004.”
It turned out to be a capture device configuration problem, a missing of EOT(end of transmission) signal.

The early comment to program the ERROR_STATUS2VI_MASK should be mask the crc.
The new trace tell the CHANSEL_FAULT have a check the detail from below link. It tell the PIXEL_RUNAWAY.

Missing CSI packets can cause LONG_LINE and PIXEL_RUNAWAY errors. Missing FE packet + FS packet would cause PIXEL_RUNAWAY. Missing EOL packet + SOL packet would cause LONG_LINE.

https://elinux.org/Jetson_TX2_Camera_BringUp

And you still can try to mask VI_CSIMUX_NOTIFY_MASK_STREAM_0 to try.
STREAM EVENT: Field 19:16 in register
3 STREAM_BADPKT
2 STREAM_LOF
1 STREAM_OVERFLOW
0 STREAM_SPURIOUS

diff --git a/drivers/media/platform/tegra/camera/vi/vi4_fops.c b/drivers/media/platform/tegra/camera/vi/vi4_fops.c
index 6d2d750..bb16ed6 100644
--- a/drivers/media/platform/tegra/camera/vi/vi4_fops.c
+++ b/drivers/media/platform/tegra/camera/vi/vi4_fops.c
@@ -62,6 +62,15 @@ u32 csimux_config_stream[] = {
        CSIMUX_CONFIG_STREAM_5
 };
 
+u32 csimux_notify_mask_stream[] = {
+       CSIMUX_NOTIFY_MASK_STREAM_0,
+       CSIMUX_NOTIFY_MASK_STREAM_1,
+       CSIMUX_NOTIFY_MASK_STREAM_2,
+       CSIMUX_NOTIFY_MASK_STREAM_3,
+       CSIMUX_NOTIFY_MASK_STREAM_4,
+       CSIMUX_NOTIFY_MASK_STREAM_5
+};
+
 static void vi4_write(struct tegra_channel *chan, unsigned int addr, u32 val)
 {
        writel(val, chan->vi->iomem + addr);
@@ -449,6 +458,7 @@ static int tegra_channel_capture_setup(struct tegra_channel *chan,
        vnc_id = chan->vnc_id[index];
 
        vi4_write(chan, csimux_config_stream[csi_port], 0x1);
+       vi4_write(chan, csimux_notify_mask_stream[csi_port], (0x0F << 16));
 
        vi4_channel_write(chan, vnc_id, MATCH,
                        ((stream << STREAM_SHIFT) & STREAM) |
diff --git a/drivers/media/platform/tegra/camera/vi/vi4_registers.h b/drivers/media/platform/tegra/camera/vi/vi4_registers.h
index 588ebb3..6a4205b 100644
--- a/drivers/media/platform/tegra/camera/vi/vi4_registers.h
+++ b/drivers/media/platform/tegra/camera/vi/vi4_registers.h
@@ -50,6 +50,14 @@
 #define CSIMUX_CONFIG_STREAM_3         0x430
 #define CSIMUX_CONFIG_STREAM_4         0x434
 #define CSIMUX_CONFIG_STREAM_5         0x438
+
+#define CSIMUX_NOTIFY_MASK_STREAM_0    0x440
+#define CSIMUX_NOTIFY_MASK_STREAM_1    0x444
+#define CSIMUX_NOTIFY_MASK_STREAM_2    0x448
+#define CSIMUX_NOTIFY_MASK_STREAM_3    0x44c
+#define CSIMUX_NOTIFY_MASK_STREAM_4    0x450
+#define CSIMUX_NOTIFY_MASK_STREAM_5    0x454
+
 #define FRAMEIDGEN                                     (0xf << 26)
 #define STICKYFAULT                                    (0x1 << 25)
 #define VPR                                                    (0x1 << 24)

hello stonest,

I’m porting adv7280m from imx219 on jetson nano but some thing wrong. Can you share me code and dtb for adv7280m

@hoanganhv1svm
Have a check with below link to get the source code.

https://devtalk.nvidia.com/default/topic/1073181

Hi,

I captured image over v4l2, seem many frame droped.
I think tegra cam capture null frame too.
2020-03-13-163807.zip (1.37 MB)

Hello hoanganhv1svm, can you share the motificarions on DT?
Did you put the sub-node “modeX” under

i2c@xxxxxxx {
	adv7280m@21 {

?

Thanks!

Could you check the trace if any clue.

Also did you apply the patch

Hi,

Forums had been config to read -only, so i can’t reply you soon.
No have sub-node on my dtsi:

	i2c@546c0000 {
		imx219_single_cam0: rbpcv2_imx219_a@10 {
			compatible = "adi,adv7280-m";
			/* I2C device address */
			reg = <0x21>;

			/* V4L2 device node location */
			devnode = "video0";

			/* Physical dimensions of sensor */
            physical_w = "4.713";
            physical_h = "3.494";

			sensor_model = "adi,adv7280-m";

			use_sensor_mode_id = "false";
			
			// mode0{
				// mclk_khz = "24000";
				// num_lanes = "1";
				// mclk_multiplier = "2";
				// pix_clk_hz = "74250000";
				// discontinuous_clk = "no";
				// active_w = "720";
				// active_h = "576";
			// };

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					rbpcv2_imx219_out0: endpoint {
                        status = "okay";
						port-index = <0>;
						bus-width = <1>;
						remote-endpoint = <&rbpcv2_imx219_csi_in0>;
					};
				};
			};
		};
	};

And add:
discontinuous_clk = “no”;
to nvcsi

Hi,

I fixed wrong color: because not have sud-node on device tree, csi2_fops.c capture with 2 lane.
I hardcode to 1 lane in function “csi2_start_streaming”.

static int csi2_start_streaming(struct tegra_csi_channel *chan, int port_idx)
{
struct tegra_csi_port *port = &chan->ports[port_idx];
struct tegra_csi_device csi = chan->csi;
int csi_port, csi_lanes;
/
Clocks for the CSI interface /
const unsigned int cil_clk_mhz = TEGRA_CSICIL_CLK_MHZ;
const unsigned int csi_clk_mhz = csi->clk_freq / 1000000;
/
Calculated clock settling times for cil and csi clocks */
unsigned int csi_settletime;
unsigned int cil_settletime = read_settle_time_from_dt(chan);
unsigned int discontinuous_clk = read_discontinuous_clk_from_dt(chan);

csi_port = !chan->pg_mode ? port->csi_port : port->stream_id;
csi_lanes = port->lanes;

csi_lanes = 1;
printk("csi: start streaming");
printk("csi: port: %d, lane: %d", csi_port, csi_lanes);

Now, last error is some frame is null data -> flash image

Hello @hoanganhv1svm,
Whats is the command you’re using to capture video?
I’m using this:
v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1

Hi,
I’m using cheese and opencv to capture and show. All work well.
Do you have any suggest with error image blink?

Just start cheese application and it’s done? Can you give more details?
I think the fix on VI on this post TX2-4GB NVCSI/VI error with JetPack 4.3 fixed the @jiakai1000 problem (He has marked it as a solution)

I’m just fixed “num_lane” to 1 at “csi2_start_streaming” function on “csi2_fops.c”, using device tree in my comment above

I’m using nano, opencv working too.

@hoanganhv1svm the image is pretty good, I figured out that my setup doesn’t use csi2_start_streaming, it’s use csi4_start and lines is getting correct on this (I’m using TX2), I can get video (with some sync fault) on cheese if I unplug the camera (color bars) but it’s crash if I plug the camera. I think it’s because my camera is NTSC and the driver is configured for PAL, I’m trying to change this.

Did you captured, this is my last error:
But i don’t know how to resolve follow solution below:
https://forums.developer.nvidia.com/t/flashing-green-screen-using-custom-carrier/57524

Hi,
More info: I captured with jetson nano, fixed resolution with 720x576 then image frame very well
Not need sub-mode in device tree.

Hello @ hoanganhv1svm

I have a question for you. I would be happy if you could answer.

What is the Jetson Nano revision you are using?

I’m using Jetson Nano B01, but ADV7280 doesn’t work even if I refer to the above thread.

it’s working with A02 and B01 too

Hi All

I have applied all settings and getting video node etc.

but during v4l2 test getting below error.

     kworker/1:1-825   [001] ....   122.998714: rtcpu_vinotify_event: tstamp:4164042835 tag:FS channel:0x00 frame:1 vi_tstamp:4163734624 data:0x00000010
 kworker/1:1-825   [001] ....   122.998715: rtcpu_vinotify_event: tstamp:4164042994 tag:ATOMP_FS channel:0x00 frame:1 vi_tstamp:4163734625 data:0x00000000
 kworker/1:1-825   [001] ....   122.998715: rtcpu_vinotify_event: tstamp:4164043133 tag:CHANSEL_PXL_SOF channel:0x23 frame:1 vi_tstamp:4163734710 data:0x00000001
 kworker/1:1-825   [001] ....   122.998716: rtcpu_vinotify_event: tstamp:4164043291 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:4390493408 data:0x08020002
 kworker/1:1-825   [001] ....   122.998717: rtcpu_vinotify_event: tstamp:4164043429 tag:CHANSEL_FAULT channel:0x23 frame:1 vi_tstamp:4163736173 data:0x00000100
 kworker/1:1-825   [001] ....   122.998718: rtcpu_vinotify_event: tstamp:4164043588 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:4390540640 data:0x01020002
 kworker/1:1-825   [001] ....   122.998719: rtcpu_vinotify_event: tstamp:4164240407 tag:FE channel:0x00 frame:1 vi_tstamp:4164238925 data:0x00000020
 kworker/1:1-825   [001] ....   122.998720: rtcpu_vinotify_event: tstamp:4164240568 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:1 vi_tstamp:4164238925 data:0x01000000
 kworker/1:1-825   [001] ....   122.998721: rtcpu_vinotify_event: tstamp:4164240706 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:4406631168 data:0x01020002
 kworker/1:1-825   [001] ....   122.998745: rtcpu_vinotify_event: tstamp:4164240865 tag:ATOMP_FE channel:0x00 frame:1 vi_tstamp:4164238926 data:0x00000000
 kworker/1:1-825   [001] ....   122.998746: rtcpu_vinotify_event: tstamp:4164241000 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:4406634976 data:0x07020003

thanks