FSYNC-Group Clarification

The setup is a single Quanta IMX728 camera connected to Port 0 of the Group A deserializer ports on a Drive Orin AGX.

The DTSI at /drive/drive-linux/kernel/source/hardware/nvidia/platform/t23x/automotive/kernel-dts/p3710/common/tegra234-p3710-0010.dtsi has been modified with the following:

 fsync-groups {
	status = "disabled";
	fsync-group@0 {
		id = <0>;
		status = "okay";
		generators = <&gen0>, <&gen2>, <&gen3>;
	};
	fsync-group@1 {
		id = <1>;
		status = "okay";
		generators = <&gen1>;
	};
};

to

 fsync-groups {
	status = "okay";
	fsync-group@0 {
		id = <0>;
		status = "okay";
		generators = <&gen0>;
	};
	fsync-group@1 {
		id = <1>;
		status = "okay";
		generators = <&gen1>;
	};
	fsync-group@2 {
		id = <2>;
		status = "okay";
		generators = <&gen2>;
	};
	fsync-group@3 {
		id = <3>;
		status = "okay";
		generators = <&gen3>;
	};
};

which was necessary to enable fsync-groups and to separate the different generators, a supported configuration as of 6.0.8.1 as per this page.

Using the command

sudo ./nvsipl_camera -c HZKJ_IMX728_ES2_V2_070FOV_CPHY_x4 -m "1 0 0 0" -sR -v 4 -D '4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 2' -F '0 <TSC_TIME>'

I would expect that it would start generator0, but select from MFP4 on Deserializer Group A for all 4 camera ports, which should be FSYNC3. Since I know from other experimentation that FSYNC1 is Generator0, I would expect that this would result in no or asynchronous triggering, however, it operates exactly as it would with Generator0.

Using the command

sudo ./nvsipl_camera -c HZKJ_IMX728_ES2_V2_070FOV_CPHY_x4 -m "1 0 0 0" -sR -v 4 -D '40 a e 4 2 5 2 2 2 2 2 2 2 2 2 2' -F '0 <TSC_TIME>'

just to do a sanity check, the command runs exactly the same way, triggering as though from Generator0 and showing no errors or instances in the outputs of the -D flag being parsed at all, erroneously or not.

Connecting a camera to the Group C Deserializer Group, Port 0, and doing the same thing results in the same result:

sudo ./nvsipl_camera -c HZKJ_IMX728_ES2_V2_070FOV_CPHY_x4 -m "0 0 1 0" -sR -v 4 -D '2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2' -F '0 <TSC_TIME>' -U '0 1 0'

This likewise results in the system running fine, as according to Generator0, but I would expect this to be triggered from FSYNC2, which unless FSYNC1, 2, and 3 are all Generator0, I would not expect to work, and since I have not started any fsync-group but group 0 (generator0), I would expect this to either not trigger or run asynchronously.

Finally, I issue

sudo ./nvsipl_camera -c HZKJ_IMX728_ES2_V2_070FOV_CPHY_x4 -m "0 0 1 0" -sR -v 4 -D '2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2' -F '0 <TSC_TIME>' -U '10 a c'

Which as before runs the same way, triggering as though from generator0 and showing no errors instances int he outputs of the -U flag being parsed at all.

I used the DriveAGX SDK to insert printf’s into the nvsipl_camera code, on line 2034 of main.cpp it appears as though upMaster->GetMAX96712FusaNVCustomInterface(d) returns a nullptr, which silently fails and resumes execution. On a lark, I tried using generic drivers instead of the Quanta ones:

nvsipl_camera -c V1SIM728S3RU4070HC10_CPHY_x4 -m "1 0 0 0" -sR -r 5 --disableSubframe -v4 -D '40 a e 4 2 5 2 2 2 2 2 2 2 2 2 2' -F '0 <TSC_TIME>'

Same issue. The -D flag and -U flags are not being parsed at all. I am not sure what the custom interface is, it is not in any documentation I have seen.