Jetson agx orin csi-g Configuration issues

Hi everyone, we have designed a deserializer board with two MAX96712 chips to carry 8 GMSL cameras. During the debugging process, data from two cameras will flow into CSI-G. Jetson can receive the data, but it always displays:

[   42.770165] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.770179] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.771081] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   42.803541] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.803550] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.804053] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   42.853459] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.853468] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.854343] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   42.903656] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.903665] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.904334] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   42.937049] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.937067] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.938125] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   42.970389] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   42.970402] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   42.971177] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.003752] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.003760] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.004060] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.037135] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.037147] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.038054] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.070520] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.070532] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.071073] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.103884] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.103894] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.105052] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.137252] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.137263] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.138127] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.170628] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.170637] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.171047] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.203998] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.204007] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.205043] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.237375] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.237388] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.238063] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.270916] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.270935] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.272318] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.304122] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.304134] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.305048] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.337486] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.337495] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.338039] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.370864] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.370873] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.372047] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.404242] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.404253] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.405057] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.437603] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.437612] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.438040] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.470982] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.470993] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.472056] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.504353] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.504369] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.505057] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.554299] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.554310] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.555532] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.604476] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.604489] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.605346] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.637842] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.637854] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.639100] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.671214] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.671227] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.672082] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.704601] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.704618] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.705090] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.737962] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.737976] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.739090] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.771459] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.771468] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.772085] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.804823] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.804830] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.805070] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   43.838078] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072, vc: 3
[   43.838091] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   43.839075] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

All other CSI ports are able to parse data normally, but this one isn’t working properly. Is there any additional configuration required for CSI-G?

Here is my device tree file:

// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2024-2029, Orbbec CORPORATION.  All rights reserved.

/dts-v1/;
/plugin/;

/*
CAM_FRSYNC0   L50  TEGRA234_MAIN_GPIO(H, 0) not connected on board
CAM_FRSYNC1    TEGRA234_MAIN_GPIO(R, 0) 
CAM0_I2C_SCL  J52   PN.03
CAM0_I2C_SDA  J53	PN.04

CAM0_GPIO_PWDN 	L49 PH.06   not connected on board
CAM1_GPI1_PWDN  F10 PAC.00  not connected on board
CAM3_GPI2_PWDN 	A58 PA.03
CAM4_GPI3_PWDN  D62 PCC.01

CAM0_GPIO_RST  L5 PQ.06
CAM1_GPIO_RST  F9 PAC.01

CAM0_GPIO_PWR_EN  E61 PCC.00
CAM1_GPI1_PWR_EN A62 PBB.02
*/

#define CAM0_RST_L	TEGRA234_MAIN_GPIO(Q, 6)
#define CAM0_PWDN   TEGRA234_MAIN_GPIO(H, 6)

#define CAM0_VDD    TEGRA234_AON_GPIO(CC, 0)

#define CAM1_RST_L	TEGRA234_MAIN_GPIO(AC, 1)
#define CAM1_PWDN   TEGRA234_MAIN_GPIO(AC, 0)

#define CAM1_VDD    TEGRA234_AON_GPIO(BB, 2)

#define SYNC_OUT	TEGRA234_MAIN_GPIO(R, 0)

#define CAM2_PWDN   TEGRA234_MAIN_GPIO(A, 3)
#define CAM3_PWDN   TEGRA234_AON_GPIO(CC, 1)

#define PPS_TRIGGER	TEGRA234_AON_GPIO(CC, 2) //
#include <dt-bindings/clock/tegra234-clock.h>
#include <dt-bindings/gpio/tegra234-gpio.h>
#include <dt-bindings/tegra234-p3737-0000+p3701-0000.h>

/* camera control gpio definitions */
/ {
	overlay-name = "TEST GMSL2X4 Orbbec Camera G335Lg";
    jetson-header-name = "Jetson AGX CSI Connector";
    compatible = JETSON_COMPATIBLE;
	
	fragment@0 {
		target-path = "/";
		__overlay__ {
			tegra-capture-vi {
				num-channels = <32>;
				ports {
					status = "okay";
					#address-cells = <1>;
					#size-cells = <0>;

					port@0 {
						reg = <0x0>;
						status = "okay";
						g300_vi_in0: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <0>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out0>;
						};
					};
					port@1 {
						reg = <0x1>;
						status = "okay";
						g300_vi_in1: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <0>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out1>;
						};
					};
					port@2 {
						reg = <0x2>;
						status = "okay";
						g300_vi_in2: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <0>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out2>;
						};
					};
					port@3 {
						reg = <0x3>;
						status = "okay";
						g300_vi_in3: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <0>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out3>;
						};
					};

					port@4 {
						reg = <0x4>;
						status = "okay";
						g300_vi_in4: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <0>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out4>;
						};
					};
					port@5 {
						reg = <0x5>;
						status = "okay";
						g300_vi_in5: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <0>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out5>;
						};
					};
					port@6 {
						reg = <0x6>;
						status = "okay";
						g300_vi_in6: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <0>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out6>;
						};
					};
					port@7 {
						reg = <0x7>;
						status = "okay";
						g300_vi_in7: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <0>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out7>;
						};
					};

					port@8 {
						reg = <0x8>;
						status = "okay";
						g300_vi_in8: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <2>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out8>;
						};
					};
					port@9 {
						reg = <0x9>;
						status = "okay";
						g300_vi_in9: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <2>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out9>;
						};
					};
					port@a {
						reg = <0xa>;
						status = "okay";
						g300_vi_in10: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <2>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out10>;
						};
					};
					port@b {
						reg = <0xb>;
						status = "okay";
						g300_vi_in11: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <2>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out11>;
						};
					};

					port@c {
						reg = <0xc>;
						status = "okay";
						g300_vi_in12: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <2>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out12>;
						};
					};

					port@d {
						reg = <0xd>;
						status = "okay";
						g300_vi_in13: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <2>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out13>;
						};
					};
					port@e {
						reg = <0xe>;
						status = "okay";
						g300_vi_in14: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <2>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out14>;
						};
					};
					port@f {
						reg = <0xf>;
						status = "okay";
						g300_vi_in15: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <2>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out15>;
						};
					};
				#if 1
					port@10 {
						reg = <0x10>;
						status = "okay";
						g300_vi_in16: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <4>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out16>;
						};
					};
					port@11 {
						reg = <0x11>;
						status = "okay";
						g300_vi_in17: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <4>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out17>;
						};
					};
					port@12 {
						reg = <0x12>;
						status = "okay";
						g300_vi_in18: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <4>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out18>;
						};
					};
					port@13 {
						reg = <0x13>;
						status = "okay";
						g300_vi_in19: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <4>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out19>;
						};
					};

					port@14 {
						reg = <0x14>;
						status = "okay";
						g300_vi_in20: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <4>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out20>;
						};
					};
					port@15 {
						reg = <0x15>;
						status = "okay";
						g300_vi_in21: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <4>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out21>;
						};
					};
					port@16 {
						reg = <0x16>;
						status = "okay";
						g300_vi_in22: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <4>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out22>;
						};
					};
					port@17 {
						reg = <0x17>;
						status = "okay";
						g300_vi_in23: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <4>; //1
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out23>;
						};
					};

					port@18 {
						reg = <0x18>;
						status = "okay";
						g300_vi_in24: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <5>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out24>;
						};
					};
					port@19 {
						reg = <0x19>;
						status = "okay";
						g300_vi_in25: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <5>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out25>;
						};
					};
					port@1a {
						reg = <0x1a>;
						status = "okay";
						g300_vi_in26: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <5>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out26>;
						};
					};
					port@1b {
						reg = <0x1b>;
						status = "okay";
						g300_vi_in27: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <5>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out27>;
						};
					};

					port@1c {
						reg = <0x1c>;
						status = "okay";
						g300_vi_in28: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <5>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out28>;
						};
					};
					port@1d {
						reg = <0x1d>;
						status = "okay";
						g300_vi_in29: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <5>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out29>;
						};
					};
					port@1e {
						reg = <0x1e>;
						status = "okay";
						g300_vi_in30: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <5>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out30>;
						};
					};
					port@1f {
						reg = <0x1f>;
						status = "okay";
						g300_vi_in31: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <5>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out31>;
						};
					};
				#endif
				};
			};
			tegra-camera-platform {
				compatible = "nvidia, tegra-camera-platform";
				num_csi_lanes = <16>;
				max_lane_speed = <20000000>;
				min_bits_per_pixel = <8>;
				vi_peak_byte_per_pixel = <2>;
				vi_bw_margin_pct = <25>;
				isp_peak_byte_per_pixel = <5>;
				isp_bw_margin_pct = <25>;
				modules {
					status = "okay";
					module0 {
						status = "okay";
						badge = "g300_0";
						position = "bottomleft";
						orientation = "1";

						drivernode0 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m0@66";
						};

						drivernode1 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m1@67";
						};

						drivernode2 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m2@68";
						};

						drivernode3 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m3@69";
						};

						drivernode4 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m0@6A";
						};

						drivernode5 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m1@6B";
						};

						drivernode6 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m2@6C";
						};

						drivernode7 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m3@6D";
						};

						drivernode8 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m0@6E";
						};

						drivernode9 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m1@6F";
						};

						drivernode10 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m2@70";
						};

						drivernode11 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m3@71";
						};

						drivernode12 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m0@72";
						};

						drivernode13 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m1@73";
						};

						drivernode14 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m2@74";
						};

						drivernode15 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3190000/g2m3@75";
						};
					};
					module1 {
						status = "okay";
						badge = "g300_1";
						position = "bottomright";
						orientation = "1";

						drivernode0 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m0@66";
						};

						drivernode1 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m1@67";
						};

						drivernode2 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m2@68";
						};

						drivernode3 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m3@69";
						};

						drivernode4 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m0@6A";
						};

						drivernode5 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m1@6B";
						};

						drivernode6 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m2@6C";
						};

						drivernode7 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m3@6D";
						};

						drivernode8 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m0@6E";
						};

						drivernode9 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m1@6F";
						};

						drivernode10 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m2@70";
						};

						drivernode11 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m3@71";
						};

						drivernode12 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m0@72";
						};

						drivernode13 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m1@73";
						};

						drivernode14 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m2@74";
						};

						drivernode15 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/g2m3@75";
						};
					};
				};
			};
			obc_cam_sync {
				compatible = "orbbec,obc_cam_sync";
				ranges = <0x0 0x0 0xc6a0000 0x10000>;
				reg = <0x0 0xc6a0000 0x0 0x18>;
				#address-cells = <1>;
				#size-cells = <1>;
				status = "okay";
				//sync-in-gpios = <&gpio_aon SYNC_IN GPIO_ACTIVE_HIGH>;
				sync-out-gpios = <&gpio SYNC_OUT GPIO_ACTIVE_HIGH>;  //Use hrtimer to generate trigger signals
				// pwms = <&sync_pwm 0 33333333>; //Use PWM to generate trigger signals, Default PWM mode, if use hrtimer comment out this line
				/* EDGE_OUT #3 */
				generator@500 {
					reg = <0x500 0x80>;
					freq_hz = <30>;
					duty_cycle = <10>;
					offset_ms = <0>;
					status = "disable";
				};
			};

			bus@0 {
				host1x@13e00000 {
					nvcsi@15a00000 {
						#address-cells = <1>;
						#size-cells = <0>;

						num-channels = <32>;

						channel@0 {
							reg = <0x0>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in0: endpoint@0 {
										status = "okay";
										port-index = <0>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out0: endpoint@1 {
										status = "okay";
										remote-endpoint = <&g300_vi_in0>;
									};
								};
							};
						};
						channel@1 {
							reg = <0x1>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in1: endpoint@2 {
										status = "okay";
										port-index = <0>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out1: endpoint@3 {
										status = "okay";
										remote-endpoint = <&g300_vi_in1>;
									};
								};
							};
						};
						channel@2 {
							reg = <0x2>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in2: endpoint@4 {
										status = "okay";
										port-index = <0>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out2: endpoint@5 {
										status = "okay";
										remote-endpoint = <&g300_vi_in2>;
									};
								};
							};
						};
						channel@3 {
							reg = <0x3>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in3: endpoint@6 {
										status = "okay";
										port-index = <0>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out3: endpoint@7 {
										status = "okay";
										remote-endpoint = <&g300_vi_in3>;
									};
								};
							};
						};

						channel@4 {
							reg = <0x4>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in4: endpoint@8 {
										status = "okay";
										port-index = <0>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m1_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out4: endpoint@9 {
										status = "okay";
										remote-endpoint = <&g300_vi_in4>;
									};
								};
							};
						};
						channel@5 {
							reg = <0x5>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in5: endpoint@10 {
										status = "okay";
										port-index = <0>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m1_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out5: endpoint@11 {
										status = "okay";
										remote-endpoint = <&g300_vi_in5>;
									};
								};
							};
						};
						channel@6 {
							reg = <0x6>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in6: endpoint@12 {
										status = "okay";
										port-index = <0>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m1_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out6: endpoint@13 {
										status = "okay";
										remote-endpoint = <&g300_vi_in6>;
									};
								};
							};
						};
						channel@7 {
							reg = <0x7>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in7: endpoint@14 {
										status = "okay";
										port-index = <0>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m1_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out7: endpoint@15 {
										status = "okay";
										remote-endpoint = <&g300_vi_in7>;
									};
								};
							};
						};

						channel@8 {
							reg = <0x8>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in8: endpoint@16 {
										status = "okay";
										port-index = <2>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m2_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out8: endpoint@17 {
										status = "okay";
										remote-endpoint = <&g300_vi_in8>;
									};
								};
							};
						};
						channel@9 {
							reg = <0x9>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in9: endpoint@18 {
										status = "okay";
										port-index = <2>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m2_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out9: endpoint@19 {
										status = "okay";
										remote-endpoint = <&g300_vi_in9>;
									};
								};
							};
						};
						channel@a {
							reg = <0xa>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in10: endpoint@20 {
										status = "okay";
										port-index = <2>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m2_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out10: endpoint@21 {
										status = "okay";
										remote-endpoint = <&g300_vi_in10>;
									};
								};
							};
						};
						channel@b {
							reg = <0xb>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in11: endpoint@22 {
										status = "okay";
										port-index = <2>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m2_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out11: endpoint@23 {
										status = "okay";
										remote-endpoint = <&g300_vi_in11>;
									};
								};
							};
						};

						channel@c {
							reg = <0xc>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in12: endpoint@24 {
										status = "okay";
										port-index = <2>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m3_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out12: endpoint@25 {
										status = "okay";
										remote-endpoint = <&g300_vi_in12>;
									};
								};
							};
						};
						channel@d {
							reg = <0xd>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in13: endpoint@26 {
										status = "okay";
										port-index = <2>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m3_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out13: endpoint@27 {
										status = "okay";
										remote-endpoint = <&g300_vi_in13>;
									};
								};
							};
						};
						channel@e {
							reg = <0xe>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in14: endpoint@28 {
										status = "okay";
										port-index = <2>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m3_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out14: endpoint@29 {
										status = "okay";
										remote-endpoint = <&g300_vi_in14>;
									};
								};
							};
						};
						channel@f {
							reg = <0xf>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in15: endpoint@30 {
										status = "okay";
										port-index = <2>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m3_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out15: endpoint@31 {
										status = "okay";
										remote-endpoint = <&g300_vi_in15>;
									};
								};
							};
						};

					#if 1
						channel@10 {
							reg = <0x10>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in16: endpoint@32 {
										status = "okay";
										port-index = <4>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m4_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out16: endpoint@33 {
										status = "okay";
										remote-endpoint = <&g300_vi_in16>;
									};
								};
							};
						};
						channel@11 {
							reg = <0x11>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in17: endpoint@34 {
										status = "okay";
										port-index = <4>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m4_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out17: endpoint@35 {
										status = "okay";
										remote-endpoint = <&g300_vi_in17>;
									};
								};
							};
						};
						channel@12 {
							reg = <0x12>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in18: endpoint@36 {
										status = "okay";
										port-index = <4>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m4_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out18: endpoint@37 {
										status = "okay";
										remote-endpoint = <&g300_vi_in18>;
									};
								};
							};
						};
						channel@13 {
							reg = <0x13>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in19: endpoint@38 {
										status = "okay";
										port-index = <4>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m4_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out19: endpoint@39 {
										status = "okay";
										remote-endpoint = <&g300_vi_in19>;
									};
								};
							};
						};
					
						channel@14 {
							reg = <0x14>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in20: endpoint@40 {
										status = "okay";
										port-index = <4>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m5_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out20: endpoint@41 {
										status = "okay";
										remote-endpoint = <&g300_vi_in20>;
									};
								};
							};
						};
						channel@15 {
							reg = <0x15>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in21: endpoint@42 {
										status = "okay";
										port-index = <4>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m5_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out21: endpoint@43 {
										status = "okay";
										remote-endpoint = <&g300_vi_in21>;
									};
								};
							};
						};
						channel@16 {
							reg = <0x16>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in22: endpoint@44 {
										status = "okay";
										port-index = <4>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m5_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out22: endpoint@45 {
										status = "okay";
										remote-endpoint = <&g300_vi_in22>;
									};
								};
							};
						};
						channel@17 {
							reg = <0x17>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in23: endpoint@46 {
										status = "okay";
										port-index = <4>; //1
										bus-width = <4>;
										remote-endpoint = <&g2m5_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out23: endpoint@47 {
										status = "okay";
										remote-endpoint = <&g300_vi_in23>;
									};
								};
							};
						};

						channel@18 {
							reg = <0x18>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in24: endpoint@48 {
										status = "okay";
										port-index = <6>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m6_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out24: endpoint@49 {
										status = "okay";
										remote-endpoint = <&g300_vi_in24>;
									};
								};
							};
						};
						channel@19 {
							reg = <0x19>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in25: endpoint@50 {
										status = "okay";
										port-index = <6>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m6_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out25: endpoint@51 {
										status = "okay";
										remote-endpoint = <&g300_vi_in25>;
									};
								};
							};
						};
						channel@1a {
							reg = <0x1a>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in26: endpoint@52 {
										status = "okay";
										port-index = <6>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m6_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out26: endpoint@53 {
										status = "okay";
										remote-endpoint = <&g300_vi_in26>;
									};
								};
							};
						};
						channel@1b {
							reg = <0x1b>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in27: endpoint@54 {
										status = "okay";
										port-index = <6>; //2
										bus-width = <4>;
										remote-endpoint = <&g2m6_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out27: endpoint@55 {
										status = "okay";
										remote-endpoint = <&g300_vi_in27>;
									};
								};
							};
						};

						channel@1c {
							reg = <0x1c>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in28: endpoint@56 {
										status = "okay";
										port-index = <6>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m7_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out28: endpoint@57 {
										status = "okay";
										remote-endpoint = <&g300_vi_in28>;
									};
								};
							};
						};
						channel@1d {
							reg = <0x1d>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in29: endpoint@58 {
										status = "okay";
										port-index = <6>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m7_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out29: endpoint@59 {
										status = "okay";
										remote-endpoint = <&g300_vi_in29>;
									};
								};
							};
						};
						channel@1e {
							reg = <0x1e>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in30: endpoint@60 {
										status = "okay";
										port-index = <6>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m7_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out30: endpoint@61 {
										status = "okay";
										remote-endpoint = <&g300_vi_in30>;
									};
								};
							};
						};
						channel@1f {
							reg = <0x1f>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in31: endpoint@62 {
										status = "okay";
										port-index = <6>; //3
										bus-width = <4>;
										remote-endpoint = <&g2m7_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out31: endpoint@63 {
										status = "okay";
										remote-endpoint = <&g300_vi_in31>;
									};
								};
							};
						};
					#endif
					};
				};

				/* GPIO configuration */
				gpio@2200000 {
					camera-control-output-high1 {
						gpio-hog;
						output-high;
						gpios = <CAM0_RST_L 0 CAM1_RST_L 0 CAM2_PWDN 0>;
						label = "cam0-rst", "cam1-rst", "cam2-pwdn";
					};
				};


				gpio@c2f0000 {
					camera-control-output-high2 {
						gpio-hog;
						output-high;
						gpios = <CAM0_VDD 0 CAM1_VDD 0 CAM3_PWDN 0>;
						label = "cam0-vdd", "cam1-vdd", "cam3-pwdn";
					};
				};

				/* i2c3 */
				i2c@3190000 { //8-6a
					status = "okay";
					clock-frequency = <400000>;

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

					g2m3_3: g2m3@75 {
						status = "okay";
						reg = <0x75>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "b";
						st-vc = <3>;
						vc-id = <0>;
						orbbec_cam_num = <3>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m3_3_out: endpoint {
									vc-id = <0>;
									port-index = <2>; //3
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in15>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "0";
						};
					};
					g2m3_2: g2m2@74 {
						status = "okay";
						reg = <0x74>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "b";
						st-vc = <2>;
						vc-id = <1>;
						orbbec_cam_num = <3>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m3_2_out: endpoint {
									vc-id = <1>;
									port-index = <2>; //3
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in14>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "1";
						};
					};
					g2m3_1: g2m1@73 {
						status = "okay";
						reg = <0x73>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "b";
						st-vc = <1>;
						vc-id = <2>;
						orbbec_cam_num = <3>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m3_1_out: endpoint {
									vc-id = <2>;
									port-index = <2>; //3
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in13>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m3_0: g2m0@72 {
						status = "okay";
						reg = <0x72>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "b";
						st-vc = <0>;
						vc-id = <3>;
						orbbec_cam_num = <3>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m3_0_out: endpoint {
									vc-id = <3>;
									port-index = <2>; //3
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in12>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};

					g2m2_3: g2m3@71 {
						status = "okay";
						reg = <0x71>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "a";
						st-vc = <3>;
						vc-id = <3>;
						orbbec_cam_num = <2>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m2_3_out: endpoint {
									vc-id = <3>;
									port-index = <2>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in11>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};
					g2m2_2: g2m2@70 {
						status = "okay";
						reg = <0x70>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "a";
						st-vc = <2>;
						vc-id = <2>;
						orbbec_cam_num = <2>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m2_2_out: endpoint {
									vc-id = <2>;
									port-index = <2>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in10>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m2_1: g2m1@6F {
						status = "okay";
						reg = <0x6F>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "a";
						st-vc = <1>;
						vc-id = <1>;
						orbbec_cam_num = <2>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m2_1_out: endpoint {
									vc-id = <1>;
									port-index = <2>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in9>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "1";
						};
					};
					g2m2_0: g2m0@6E {
						status = "okay";
						reg = <0x6E>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "a";
						st-vc = <0>;   				/**< Default sensor virtual channel. */
						vc-id = <0>;				/**< Destination virtual channel (user-defined). */
						orbbec_cam_num = <2>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m2_0_out: endpoint {
									vc-id = <0>;
									port-index = <2>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in8>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_c";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "0";
						};
					};

					g2m1_3: g2m3@6D {
						status = "okay";
						reg = <0x6D>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "d";
						st-vc = <3>;
						vc-id = <0>;
						orbbec_cam_num = <1>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m1_3_out: endpoint {
									vc-id = <0>;
									port-index = <0>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in7>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "0";
						};
					};
					g2m1_2: g2m2@6C {
						status = "okay";
						reg = <0x6C>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "d";
						st-vc = <2>;
						vc-id = <1>;
						orbbec_cam_num = <1>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m1_2_out: endpoint {
									vc-id = <1>;
									port-index = <0>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in6>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "1";
						};
					};
					g2m1_1: g2m1@6B {
						status = "okay";
						reg = <0x6B>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "d";
						st-vc = <1>;
						vc-id = <2>;
						orbbec_cam_num = <1>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m1_1_out: endpoint {
									vc-id = <2>;
									port-index = <0>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in5>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m1_0: g2m0@6A {
						status = "okay";
						reg = <0x6A>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "d";
						st-vc = <0>;
						vc-id = <3>;
						orbbec_cam_num = <1>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m1_0_out: endpoint {
									vc-id = <3>;
									port-index = <0>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in4>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};

					g2m0_3: g2m3@69 {
						status = "okay";
						reg = <0x69>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "c";
						st-vc = <3>;
						vc-id = <3>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_3_out: endpoint {
									vc-id = <3>;
									port-index = <0>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in3>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};
					g2m0_2: g2m2@68 {
						status = "okay";
						reg = <0x68>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "c";
						st-vc = <2>;
						vc-id = <2>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_2_out: endpoint {
									vc-id = <2>;
									port-index = <0>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in2>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m0_1: g2m1@67 {
						status = "okay";
						reg = <0x67>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "c";
						st-vc = <1>;
						vc-id = <1>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_1_out: endpoint {
									vc-id = <1>;
									port-index = <0>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in1>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "1";
						};
					};
					g2m0_0: g2m0@66 {
						status = "okay";
						reg = <0x66>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "c";
						st-vc = <0>;   				/**< Default sensor virtual channel. */
						vc-id = <0>;				/**< Destination virtual channel (user-defined). */
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_0_out: endpoint {
									vc-id = <0>;
									port-index = <0>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in0>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_a";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "0";
						};
					};

					dser0: max96712@29 {
						status = "okay";
						reg = <0x29>; //0x52>>1
						compatible = "maxim,obc_max96712";
						index = <0>;
						csi-mode = "2x4"; //2*4lane 
						seri-addr = <0x48>; //serializer start address, LinkA serializer i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						proxy-addr = <0x20>; //camera proxy address, LinkA g300 i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						real-addr = <0x66>; //camera real address
						reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>;
						fsync_mfp_index = <2>;
						pps_mfp_index = <9>;
					};
				};

				i2c@c250000 {
					status = "okay";
					clock-frequency = <400000>;

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

					g2m7_3: g2m3@75 {
						status = "okay";
						reg = <0x75>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "b";
						st-vc = <3>;
						vc-id = <0>;
						orbbec_cam_num = <7>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m7_3_out: endpoint {
									vc-id = <0>;
									port-index = <6>;
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in31>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "0";
						};
					};
					g2m7_2: g2m2@74 {
						status = "okay";
						reg = <0x74>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "b";
						st-vc = <2>;
						vc-id = <1>;
						orbbec_cam_num = <7>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m7_2_out: endpoint {
									vc-id = <1>;
									port-index = <6>;
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in30>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "1";
						};
					};
					g2m7_1: g2m1@73 {
						status = "okay";
						reg = <0x73>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "b";
						st-vc = <1>;
						vc-id = <2>;
						orbbec_cam_num = <7>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m7_1_out: endpoint {
									vc-id = <2>;
									port-index = <6>;
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in29>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m7_0: g2m0@72 {
						status = "okay";
						reg = <0x72>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "b";
						st-vc = <0>;
						vc-id = <3>;
						orbbec_cam_num = <7>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m7_0_out: endpoint {
									vc-id = <3>;
									port-index = <6>;
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in28>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};

					g2m6_3: g2m3@71 {
						status = "okay";
						reg = <0x71>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "a";
						st-vc = <3>;
						vc-id = <3>;
						orbbec_cam_num = <6>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m6_3_out: endpoint {
									vc-id = <3>;
									port-index = <6>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in27>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};
					g2m6_2: g2m2@70 {
						status = "okay";
						reg = <0x70>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "a";
						st-vc = <2>;
						vc-id = <2>;
						orbbec_cam_num = <6>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m6_2_out: endpoint {
									vc-id = <2>;
									port-index = <6>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in26>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m6_1: g2m1@6F {
						status = "okay";
						reg = <0x6F>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "a";
						st-vc = <1>;
						vc-id = <1>;
						orbbec_cam_num = <6>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m6_1_out: endpoint {
									vc-id = <1>;
									port-index = <6>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in25>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "1";
						};
					};
					g2m6_0: g2m0@6E {
						status = "okay";
						reg = <0x6E>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "a";
						st-vc = <0>;   				/**< Default sensor virtual channel. */
						vc-id = <0>;				/**< Destination virtual channel (user-defined). */
						orbbec_cam_num = <6>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m6_0_out: endpoint {
									vc-id = <0>;
									port-index = <6>; //2
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in24>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "0";
						};
					};

					g2m5_3: g2m3@6D {
						status = "okay";
						reg = <0x6D>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "d";
						st-vc = <3>;
						vc-id = <0>;
						orbbec_cam_num = <5>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m5_3_out: endpoint {
									vc-id = <0>;
									port-index = <4>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in23>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "0";
						};
					};
					g2m5_2: g2m2@6C {
						status = "okay";
						reg = <0x6C>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "d";
						st-vc = <2>;
						vc-id = <1>;
						orbbec_cam_num = <5>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m5_2_out: endpoint {
									vc-id = <1>;
									port-index = <4>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in22>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "1";
						};
					};
					g2m5_1: g2m1@6B {
						status = "okay";
						reg = <0x6B>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "d";
						st-vc = <1>;
						vc-id = <2>;
						orbbec_cam_num = <5>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m5_1_out: endpoint {
									vc-id = <2>;
									port-index = <4>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in21>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m5_0: g2m0@6A {
						status = "okay";
						reg = <0x6A>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "d";
						st-vc = <0>;
						vc-id = <3>;
						orbbec_cam_num = <5>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m5_0_out: endpoint {
									vc-id = <3>;
									port-index = <4>; //1
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in20>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};

					g2m4_3: g2m3@69 {
						status = "okay";
						reg = <0x69>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "c";
						st-vc = <3>;
						vc-id = <3>;
						orbbec_cam_num = <4>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m4_3_out: endpoint {
									vc-id = <3>;
									port-index = <4>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in19>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};
					g2m4_2: g2m2@68 {
						status = "okay";
						reg = <0x68>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "c";
						st-vc = <2>;
						vc-id = <2>;
						orbbec_cam_num = <4>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m4_2_out: endpoint {
									vc-id = <2>;
									port-index = <4>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in18>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m4_1: g2m1@67 {
						status = "okay";
						reg = <0x67>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "c";
						st-vc = <1>;
						vc-id = <1>;
						orbbec_cam_num = <4>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m4_1_out: endpoint {
									vc-id = <1>;
									port-index = <4>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in17>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "1";
						};
					};
					g2m4_0: g2m0@66 {
						status = "okay";
						reg = <0x66>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "c";
						st-vc = <0>;   				/**< Default sensor virtual channel. */
						vc-id = <0>;				/**< Destination virtual channel (user-defined). */
						orbbec_cam_num = <4>;
						nvidia,gmsl-dser-device = <&dser1>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m4_0_out: endpoint {
									vc-id = <0>;
									port-index = <4>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in16>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_e";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "0";
						};
					};

					dser1: max96712@29 {
						status = "okay";
						reg = <0x29>; //0x52>>1
						compatible = "maxim,obc_max96712";
						index = <1>;
						csi-mode = "2x4"; //2*4lane
						seri-addr = <0x48>; //serializer start address, LinkA serializer i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						proxy-addr = <0x20>; //camera proxy address, LinkA g300 i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						real-addr = <0x66>; //camera real address
						reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>;
						fsync_mfp_index = <2>;
						pps_mfp_index = <9>;
					};
				};
			};
		};
	};
};

这是cat /sys/kernel/debug/tracing/trace的日志:

# tracer: nop
#
# entries-in-buffer/entries-written: 40987/40987   #P:8
#
#                                _-------=> irqs-off
#                               / _------=> need-resched
#                              | / _-----=> need-resched-lazy
#                              || / _----=> hardirq/softirq
#                              ||| / _---=> preempt-depth
#                              |||| / _--=> preempt-lazy-depth
#                              ||||| / _-=> migrate-disable
#                              |||||| /     delay
#           TASK-PID     CPU#  |||||||  TIMESTAMP  FUNCTION
#              | |         |   |||||||      |         |
    kworker/7:18-1368    [007] .......   135.658010: rtcpu_string: tstamp:4873871792 id:0x04010000 str:"VM0 deactivating."
        v4l2-ctl-2060    [005] .......   144.942978: tegra_channel_open: vi-output, G300 depth 7-0072
        v4l2-ctl-2060    [005] .......   144.957667: tegra_channel_set_power: G300 depth 7-0072 : 0x1
        v4l2-ctl-2060    [005] .......   144.957669: tegra_channel_set_power: 13e00000.host1x:nvcsi@15a00000- : 0x1
        v4l2-ctl-2060    [005] .......   144.957672: csi_s_power: enable : 0x1
        v4l2-ctl-2060    [005] .......   144.959139: tegra_channel_capture_setup: vnc_id 0 W 1280 H 800 fmt 13
    kworker/7:18-1368    [007] .......   144.966075: rtcpu_string: tstamp:5165863095 id:0x04010000 str:"VM0 activating."
 vi-output, G300-2061    [001] .......   144.972977: vi_task_submit: class_id:48 ch:0 syncpt_id:37 syncpt_thresh:77 pid:2061 tid:2061
 vi-output, G300-2061    [001] .......   144.972991: vi_task_submit: class_id:48 ch:0 syncpt_id:37 syncpt_thresh:77 pid:2061 tid:2061
 vi-output, G300-2061    [001] .......   144.972994: vi_task_submit: class_id:48 ch:0 syncpt_id:37 syncpt_thresh:77 pid:2061 tid:2061
 vi-output, G300-2061    [001] .......   144.972996: vi_task_submit: class_id:48 ch:0 syncpt_id:37 syncpt_thresh:77 pid:2061 tid:2061
        v4l2-ctl-2060    [005] .......   144.973418: tegra_channel_set_stream: enable : 0x1
        v4l2-ctl-2060    [005] .......   144.977316: tegra_channel_set_stream: 13e00000.host1x:nvcsi@15a00000- : 0x1
        v4l2-ctl-2060    [005] .......   144.977318: csi_s_stream: enable : 0x1
        v4l2-ctl-2060    [005] .......   144.978276: tegra_channel_set_stream: G300 depth 7-0072 : 0x1
    kworker/7:18-1368    [007] .......   145.021919: rtcpu_vinotify_event: tstamp:5166639275 cch:0 vi:1 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:165316049440 data:0x359e300010000000
    kworker/7:18-1368    [007] .......   145.021922: rtcpu_vinotify_event: tstamp:5166639415 cch:0 vi:1 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:165316091520 data:0x0000000031000001
    kworker/7:18-1368    [007] .......   145.021923: rtcpu_vinotify_event: tstamp:5166639571 cch:0 vi:1 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:165316109664 data:0x359e2d0010000000
    kworker/7:18-1368    [007] .......   145.021924: rtcpu_vinotify_event: tstamp:5166639704 cch:0 vi:1 tag:VIFALC_ACTIONLST channel:0x23 frame:0 vi_tstamp:165316130016 data:0x0000000007020001
    kworker/7:18-1368    [007] .......   145.021925: rtcpu_vinotify_event: tstamp:5166639856 cch:0 vi:1 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:165316172384 data:0x0000000031000002
 vi-output, G300-2062    [001] .......   145.441242: tegra_channel_capture_setup: vnc_id 0 W 1280 H 800 fmt 13
    kworker/7:18-1368    [007] .......   145.469917: rtcpu_nvcsi_intr: tstamp:5180163852 class:GLOBAL type:STREAM_NOVC phy:0 cil:0 st:5 vc:0 status:0x00000001
    kworker/7:18-1368    [007] .......   145.469920: rtcpu_nvcsi_intr: tstamp:5180163852 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000002
    kworker/7:18-1368    [007] .......   145.469920: rtcpu_nvcsi_intr: tstamp:5180163852 class:CORRECTABLE_ERR type:STREAM_NOVC phy:0 cil:0 st:5 vc:0 status:0x00000001
    kworker/7:18-1368    [007] .......   145.469921: rtcpu_nvcsi_intr: tstamp:5180163852 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469922: rtcpu_nvcsi_intr: tstamp:5180164761 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469922: rtcpu_nvcsi_intr: tstamp:5180164761 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469923: rtcpu_nvcsi_intr: tstamp:5180165338 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469924: rtcpu_nvcsi_intr: tstamp:5180165338 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469924: rtcpu_nvcsi_intr: tstamp:5180165909 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469925: rtcpu_nvcsi_intr: tstamp:5180165909 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000002
    kworker/7:18-1368    [007] .......   145.469926: rtcpu_nvcsi_intr: tstamp:5180166478 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469926: rtcpu_nvcsi_intr: tstamp:5180166478 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469927: rtcpu_nvcsi_intr: tstamp:5180167054 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469927: rtcpu_nvcsi_intr: tstamp:5180167054 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469928: rtcpu_nvcsi_intr: tstamp:5180167561 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469928: rtcpu_nvcsi_intr: tstamp:5180167561 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469929: rtcpu_nvcsi_intr: tstamp:5180168938 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469929: rtcpu_nvcsi_intr: tstamp:5180168938 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469930: rtcpu_nvcsi_intr: tstamp:5180169647 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469930: rtcpu_nvcsi_intr: tstamp:5180169647 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469931: rtcpu_nvcsi_intr: tstamp:5180170213 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469931: rtcpu_nvcsi_intr: tstamp:5180170213 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469932: rtcpu_nvcsi_intr: tstamp:5180170870 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469932: rtcpu_nvcsi_intr: tstamp:5180170870 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469933: rtcpu_nvcsi_intr: tstamp:5180171491 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469933: rtcpu_nvcsi_intr: tstamp:5180171491 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469934: rtcpu_nvcsi_intr: tstamp:5180172204 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469934: rtcpu_nvcsi_intr: tstamp:5180172204 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469934: rtcpu_nvcsi_intr: tstamp:5180172829 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469935: rtcpu_nvcsi_intr: tstamp:5180172829 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469936: rtcpu_nvcsi_intr: tstamp:5180173532 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469936: rtcpu_nvcsi_intr: tstamp:5180173532 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469937: rtcpu_nvcsi_intr: tstamp:5180174152 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469937: rtcpu_nvcsi_intr: tstamp:5180174152 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469938: rtcpu_nvcsi_intr: tstamp:5180174869 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469938: rtcpu_nvcsi_intr: tstamp:5180174869 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469938: rtcpu_nvcsi_intr: tstamp:5180175486 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469939: rtcpu_nvcsi_intr: tstamp:5180175486 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469939: rtcpu_nvcsi_intr: tstamp:5180176199 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469940: rtcpu_nvcsi_intr: tstamp:5180176199 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469940: rtcpu_nvcsi_intr: tstamp:5180176815 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469940: rtcpu_nvcsi_intr: tstamp:5180176815 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469941: rtcpu_nvcsi_intr: tstamp:5180177531 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469941: rtcpu_nvcsi_intr: tstamp:5180177531 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469942: rtcpu_nvcsi_intr: tstamp:5180178253 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469942: rtcpu_nvcsi_intr: tstamp:5180178253 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469943: rtcpu_nvcsi_intr: tstamp:5180178858 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469943: rtcpu_nvcsi_intr: tstamp:5180178858 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469943: rtcpu_nvcsi_intr: tstamp:5180179477 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469944: rtcpu_nvcsi_intr: tstamp:5180179477 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469944: rtcpu_nvcsi_intr: tstamp:5180180188 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469945: rtcpu_nvcsi_intr: tstamp:5180180188 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469945: rtcpu_nvcsi_intr: tstamp:5180180809 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469946: rtcpu_nvcsi_intr: tstamp:5180180809 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469946: rtcpu_nvcsi_intr: tstamp:5180181629 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469947: rtcpu_nvcsi_intr: tstamp:5180181629 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469947: rtcpu_nvcsi_intr: tstamp:5180182194 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469947: rtcpu_nvcsi_intr: tstamp:5180182194 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469948: rtcpu_nvcsi_intr: tstamp:5180182851 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469949: rtcpu_nvcsi_intr: tstamp:5180182851 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469949: rtcpu_nvcsi_intr: tstamp:5180183471 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469949: rtcpu_nvcsi_intr: tstamp:5180183471 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469950: rtcpu_nvcsi_intr: tstamp:5180184289 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469950: rtcpu_nvcsi_intr: tstamp:5180184289 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469950: rtcpu_nvcsi_intr: tstamp:5180184865 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469951: rtcpu_nvcsi_intr: tstamp:5180184865 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469951: rtcpu_nvcsi_intr: tstamp:5180185512 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469952: rtcpu_nvcsi_intr: tstamp:5180185512 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469952: rtcpu_nvcsi_intr: tstamp:5180186129 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469952: rtcpu_nvcsi_intr: tstamp:5180186129 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469953: rtcpu_nvcsi_intr: tstamp:5180186950 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469953: rtcpu_nvcsi_intr: tstamp:5180186950 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000004
    kworker/7:18-1368    [007] .......   145.469953: rtcpu_nvcsi_intr: tstamp:5180187513 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469954: rtcpu_nvcsi_intr: tstamp:5180187513 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469954: rtcpu_nvcsi_intr: tstamp:5180188173 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469955: rtcpu_nvcsi_intr: tstamp:5180188173 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469955: rtcpu_nvcsi_intr: tstamp:5180188790 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469955: rtcpu_nvcsi_intr: tstamp:5180188790 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469956: rtcpu_nvcsi_intr: tstamp:5180189503 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469956: rtcpu_nvcsi_intr: tstamp:5180189503 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469956: rtcpu_nvcsi_intr: tstamp:5180190123 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469958: rtcpu_nvcsi_intr: tstamp:5180190123 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469959: rtcpu_nvcsi_intr: tstamp:5180190835 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469959: rtcpu_nvcsi_intr: tstamp:5180190835 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469960: rtcpu_nvcsi_intr: tstamp:5180191452 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469960: rtcpu_nvcsi_intr: tstamp:5180191452 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469961: rtcpu_nvcsi_intr: tstamp:5180192164 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469961: rtcpu_nvcsi_intr: tstamp:5180192164 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469962: rtcpu_nvcsi_intr: tstamp:5180192785 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469962: rtcpu_nvcsi_intr: tstamp:5180192785 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469962: rtcpu_nvcsi_intr: tstamp:5180193497 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469963: rtcpu_nvcsi_intr: tstamp:5180193497 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469963: rtcpu_nvcsi_intr: tstamp:5180194114 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469964: rtcpu_nvcsi_intr: tstamp:5180194114 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469964: rtcpu_nvcsi_intr: tstamp:5180194826 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469964: rtcpu_nvcsi_intr: tstamp:5180194826 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469965: rtcpu_nvcsi_intr: tstamp:5180195446 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469965: rtcpu_nvcsi_intr: tstamp:5180195446 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469966: rtcpu_nvcsi_intr: tstamp:5180196158 class:GLOBAL type:PHY_INTR0 phy:3 cil:0 st:0 vc:0 status:0x10000000
    kworker/7:18-1368    [007] .......   145.469966: rtcpu_nvcsi_intr: tstamp:5180196158 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:0 st:0 vc:0 status:0x00001000
    kworker/7:18-1368    [007] .......   145.469967: rtcpu_nvcsi_intr: tstamp:5180196775 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469967: rtcpu_nvcsi_intr: tstamp:5180196775 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469967: rtcpu_nvcsi_intr: tstamp:5180197487 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469968: rtcpu_nvcsi_intr: tstamp:5180197487 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469968: rtcpu_nvcsi_intr: tstamp:5180198108 class:GLOBAL type:PHY_INTR0 phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469969: rtcpu_nvcsi_intr: tstamp:5180198108 class:CORRECTABLE_ERR type:PHY_INTR phy:3 cil:1 st:0 vc:0 status:0x00000040
    kworker/7:18-1368    [007] .......   145.469969: rtcpu_nvcsi_intr: tstamp:5180198817 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469969: rtcpu_nvcsi_intr: tstamp:5180198817 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469970: rtcpu_nvcsi_intr: tstamp:5180200105 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469970: rtcpu_nvcsi_intr: tstamp:5180200105 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469971: rtcpu_nvcsi_intr: tstamp:5180200765 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469971: rtcpu_nvcsi_intr: tstamp:5180200765 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006
    kworker/7:18-1368    [007] .......   145.469971: rtcpu_nvcsi_intr: tstamp:5180201474 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:5 vc:3 status:0x00000006

hello shuisheng.peng,

I’ve went through your code quickly,
why these two were duplicated for using the same VI brick?


					port@18 {
						reg = <0x18>;
						status = "okay";
						g300_vi_in24: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <5>; //2
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out24>;
						};
					};
					port@1f {
						reg = <0x1f>;
						status = "okay";
						g300_vi_in31: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <5>; //3
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out31>;
						};
					};
				#endif

I am using Orbbec depth cameras, each with 4 sensors. I mapped two cameras to CSI-G ports, so there are 8 vi-ports with port-index = <5>. However, vc-id seems to be limited to the range of 0 to 3, so they look the same.

hello shuisheng.peng,

please refer to CSI Connectivity.
if you’re going to enable 2 aggregator on the same CSI brick, it’s only CSI-A/B and CSI-C/D brick supported.

My deserializer interface board has two MAX96712 chips. Each chip can connect to four cameras, each cameras with four sensors (two infrared sensors, a depth sensor, and an image sensor). One chip’s output is connected to CSI-A/B and CSI-C/D, forming two 4-lane CSIs; the other chip’s output is connected to CSI-E/F and CSI-G/H, forming two 4-lane CSIs. Is this not possible?

hello shuisheng.peng,

please refer to below..

your 4-cameras were corresponding to Aggregator-0 to Aggregator-3. it’s okay for CSI-A/B and CSI-C/D.
however, as you can see.. CSI-E/F and CSI-G/H only capable for single Aggregator.

Hello, I think I am not very clear about some concepts; do you mean deserializer when you say Aggregator?

If Aggregator refers to a deserializer, then my four cameras should correspond to camera0 ~ camera3 in the diagram, right? My deserializer board has two 96712 deserializers, so the total number of cameras I have should correspond to camera0 through camera7, right?

I simplified the device tree and only left the csi-G path. The device tree is:

// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2024-2029, Orbbec CORPORATION.  All rights reserved.

/dts-v1/;
/plugin/;

/*
CAM_FRSYNC0   L50  TEGRA234_MAIN_GPIO(H, 0) not connected on board
CAM_FRSYNC1    TEGRA234_MAIN_GPIO(R, 0) 
CAM0_I2C_SCL  J52   PN.03
CAM0_I2C_SDA  J53	PN.04

CAM0_GPIO_PWDN 	L49 PH.06   not connected on board
CAM1_GPI1_PWDN  F10 PAC.00  not connected on board
CAM3_GPI2_PWDN 	A58 PA.03
CAM4_GPI3_PWDN  D62 PCC.01

CAM0_GPIO_RST  L5 PQ.06
CAM1_GPIO_RST  F9 PAC.01

CAM0_GPIO_PWR_EN  E61 PCC.00
CAM1_GPI1_PWR_EN A62 PBB.02
*/

#define CAM0_RST_L	TEGRA234_MAIN_GPIO(Q, 6)
#define CAM0_PWDN   TEGRA234_MAIN_GPIO(H, 6)

#define CAM0_VDD    TEGRA234_AON_GPIO(CC, 0)

#define CAM1_RST_L	TEGRA234_MAIN_GPIO(AC, 1)
#define CAM1_PWDN   TEGRA234_MAIN_GPIO(AC, 0)

#define CAM1_VDD    TEGRA234_AON_GPIO(BB, 2)

#define SYNC_OUT	TEGRA234_MAIN_GPIO(R, 0)

#define CAM2_PWDN   TEGRA234_MAIN_GPIO(A, 3)
#define CAM3_PWDN   TEGRA234_AON_GPIO(CC, 1)

#define PPS_TRIGGER	TEGRA234_AON_GPIO(CC, 2) //

#include <dt-bindings/clock/tegra234-clock.h>
#include <dt-bindings/gpio/tegra234-gpio.h>
#include <dt-bindings/tegra234-p3737-0000+p3701-0000.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>

/* camera control gpio definitions */
/ {
	overlay-name = "CSI G TEST GMSL2X4 Orbbec Camera G335Lg";
    jetson-header-name = "Jetson AGX CSI Connector";
    compatible = JETSON_COMPATIBLE;
	
	fragment@0 {
		target-path = "/";
		__overlay__ {
			tegra-capture-vi {
				num-channels = <4>;
				ports {
					status = "okay";
					#address-cells = <1>;
					#size-cells = <0>;

					port@0 {
						reg = <0x0>;
						status = "okay";
						g300_vi_in0: endpoint {
							status = "okay";
							vc-id = <0>;
							port-index = <5>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out0>;
						};
					};
					port@1 {
						reg = <0x1>;
						status = "okay";
						g300_vi_in1: endpoint {
							status = "okay";
							vc-id = <1>;
							port-index = <5>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out1>;
						};
					};
					port@2 {
						reg = <0x2>;
						status = "okay";
						g300_vi_in2: endpoint {
							status = "okay";
							vc-id = <2>;
							port-index = <5>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out2>;
						};
					};
					port@3 {
						reg = <0x3>;
						status = "okay";
						g300_vi_in3: endpoint {
							status = "okay";
							vc-id = <3>;
							port-index = <5>; //0
							bus-width = <4>;
							remote-endpoint = <&g300_csi_out3>;
						};
					};
				};
			};
			tegra-camera-platform {
				compatible = "nvidia, tegra-camera-platform";
				num_csi_lanes = <4>;
				max_lane_speed = <20000000>;
				min_bits_per_pixel = <8>;
				vi_peak_byte_per_pixel = <2>;
				vi_bw_margin_pct = <25>;
				isp_peak_byte_per_pixel = <5>;
				isp_bw_margin_pct = <25>;
				modules {
					status = "okay";
					module0 {
						status = "okay";
						badge = "g300_0";
						position = "bottomleft";
						orientation = "1";

						drivernode0 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@c250000/g2m0@66";
						};

						drivernode1 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@c250000/g2m1@67";
						};

						drivernode2 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@c250000/g2m2@68";
						};

						drivernode3 {
							status = "okay";
							/* Declare PCL support driver (classically known as guid)  */
							pcl_id = "v4l2_sensor";
							/* Declare the device-tree hierarchy to driver instance */
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@c250000/g2m3@69";
						};
					};
				};
			};
			obc_cam_sync {
				compatible = "orbbec,obc_cam_sync";
				ranges = <0x0 0x0 0xc6a0000 0x10000>;
				reg = <0x0 0xc6a0000 0x0 0x18>;
				#address-cells = <1>;
				#size-cells = <1>;
				status = "okay";
				//sync-in-gpios = <&gpio_aon SYNC_IN GPIO_ACTIVE_HIGH>;
				sync-out-gpios = <&gpio SYNC_OUT GPIO_ACTIVE_HIGH>;  //Use hrtimer to generate trigger signals
				// pwms = <&sync_pwm 0 33333333>; //Use PWM to generate trigger signals, Default PWM mode, if use hrtimer comment out this line
				/* EDGE_OUT #3 */
				generator@500 {
					reg = <0x500 0x80>;
					freq_hz = <30>;
					duty_cycle = <10>;
					offset_ms = <0>;
					status = "disable";
				};
			};

			bus@0 {
				host1x@13e00000 {
					nvcsi@15a00000 {
						#address-cells = <1>;
						#size-cells = <0>;

						num-channels = <4>;

						channel@0 {
							reg = <0x0>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in0: endpoint@0 {
										status = "okay";
										port-index = <6>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_0_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out0: endpoint@1 {
										status = "okay";
										remote-endpoint = <&g300_vi_in0>;
									};
								};
							};
						};
						channel@1 {
							reg = <0x1>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in1: endpoint@2 {
										status = "okay";
										port-index = <6>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_1_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out1: endpoint@3 {
										status = "okay";
										remote-endpoint = <&g300_vi_in1>;
									};
								};
							};
						};
						channel@2 {
							reg = <0x2>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in2: endpoint@4 {
										status = "okay";
										port-index = <6>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_2_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out2: endpoint@5 {
										status = "okay";
										remote-endpoint = <&g300_vi_in2>;
									};
								};
							};
						};
						channel@3 {
							reg = <0x3>;
							status = "okay";
							ports {
								status = "okay";
								#address-cells = <1>;
								#size-cells = <0>;
								port@0 {
									reg = <0>;
									status = "okay";
									g300_csi_in3: endpoint@6 {
										status = "okay";
										port-index = <6>; //0
										bus-width = <4>;
										remote-endpoint = <&g2m0_3_out>;
									};
								};
								port@1 {
									reg = <1>;
									status = "okay";
									g300_csi_out3: endpoint@7 {
										status = "okay";
										remote-endpoint = <&g300_vi_in3>;
									};
								};
							};
						};
					};
				};

				/* GPIO configuration */
				gpio@2200000 {
					camera-control-output-high1 {
						gpio-hog;
						output-high;
						gpios = <CAM0_RST_L 0 CAM1_RST_L 0 CAM2_PWDN 0>;
						label = "cam0-rst", "cam1-rst", "cam2-pwdn";
					};
				};


				gpio@c2f0000 {
					camera-control-output-high2 {
						gpio-hog;
						output-high;
						gpios = <CAM0_VDD 0 CAM1_VDD 0 CAM3_PWDN 0>;
						label = "cam0-vdd", "cam1-vdd", "cam3-pwdn";
					};
				};


				i2c@c250000 {
					status = "okay";
					clock-frequency = <400000>;

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

					g2m0_3: g2m3@69 {
						status = "okay";
						reg = <0x69>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_R";
						dser-link-port = "a";
						st-vc = <3>;
						vc-id = <3>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_3_out: endpoint {
									vc-id = <3>;
									port-index = <6>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in3>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "3";
						};
					};
					g2m0_2: g2m2@68 {
						status = "okay";
						reg = <0x68>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "IR_L";
						dser-link-port = "a";
						st-vc = <2>;
						vc-id = <2>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_2_out: endpoint {
									vc-id = <2>;
									port-index = <6>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in2>;
								};
							};
						};
						mode0 {
							pixel_t = "grey_y8";
							num_lanes = "4";
							csi_pixel_bit_depth = "8";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							serdes_pix_clk_hz = "750000000";  //4lane:750000000 ,2lane:375000000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1";
							vc_id = "2";
						};
					};
					g2m0_1: g2m1@67 {
						status = "okay";
						reg = <0x67>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "RGB";
						dser-link-port = "a";
						st-vc = <1>;
						vc-id = <1>;
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_1_out: endpoint {
									vc-id = <1>;
									port-index = <6>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in1>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "1";
						};
					};
					g2m0_0: g2m0@66 {
						status = "okay";
						reg = <0x66>;
						compatible = "orbbec,g300";
						use_sensor_mode_id = "true";
						vcc-supply = <&vdd_1v8_ls>;
						cam-type = "Depth";
						dser-link-port = "a";
						st-vc = <0>;   				/**< Default sensor virtual channel. */
						vc-id = <0>;				/**< Destination virtual channel (user-defined). */
						orbbec_cam_num = <0>;
						nvidia,gmsl-dser-device = <&dser0>;
						pps-gpios = <&gpio_aon PPS_TRIGGER GPIO_ACTIVE_LOW>;
						ports {
							#address-cells = <1>;
							#size-cells = <0>;

							port@0 {
								reg = <0>;
								g2m0_0_out: endpoint {
									vc-id = <0>;
									port-index = <6>; //0
									bus-width = <4>;
									remote-endpoint = <&g300_csi_in0>;
								};
							};
						};
						mode0 {
							pixel_t = "yuv_yvyu16";
							num_lanes = "4";
							csi_pixel_bit_depth = "16";
							active_w = "1280";
							active_h = "720";
							tegra_sinterface = "serial_g";
							mclk_khz = "24000";
							pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							serdes_pix_clk_hz = "375000000";  //4lane:375000000,2lane:187500000
							discontinuous_clk = "no";
							dpcm_enable = "false";
							cil_settletime = "0";
							line_length = "1280";
							mclk_multiplier = "15.625";
							embedded_metadata_height = "1"; 
							vc_id = "0";
						};
					};

					dser0: max96712@29 {
						status = "okay";
						reg = <0x29>; //0x52>>1
						compatible = "maxim,obc_max96712";
						index = <0>;
						csi-mode = "2x4"; //2*4lane
						seri-addr = <0x48>; //serializer start address, LinkA serializer i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						proxy-addr = <0x20>; //camera proxy address, LinkA g300 i2c address,LINK B + 1,LINK C + 2,LINK D + 3
						real-addr = <0x66>; //camera real address
						reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_HIGH>;
						fsync_mfp_index = <2>;
						pps_mfp_index = <9>;
					};
				};
			};
		};
	};
};

This configuration also allows the device to receive camera data, but it always displays:

[   32.378292] g300 7-0066: s_stream for stream G300 depth 7-0066, vc:0, on:1, format:16 ,fps:30
[   32.378305] obc_max96712 7-0029: request pipe id, 0
[   32.378308] g300 7-0066: set pipe, port:0, pipe:0, dt1: 0x1e, dt2: 0x12, src_vc: 0, dst_vc: 0
[   32.381615] obc_max96712 7-0029: max96712_set_pipe pipe_id:0, dt1:30, dt2:18, src_vc:0, dst_vc:0
[   32.381621] obc_max96712 7-0029: set pipe start
[   32.385284] obc_max96712 7-0029: set pipe success!
[   32.385288] obc_max96712 7-0029: max96712_link_pipe_bind bind pipe, deser link=0, deser id=0, seri id=0
[   32.385974] obc_max96712 7-0029: max96712_link_pipe_bind bind pipe success
[   32.385976] obc_max96712 7-0029: max96712_link_pipe_bind oneshot reset all link
[   32.704570] obc_max96712 7-0029: check pipe lock: 0x00
[   32.704581] g300 7-0066: orb_setup_pipeline pipe lock: 0x0
[   32.851897] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   32.851914] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   32.853451] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.023589] obc_max96712 7-0029: max96712_reset_oneshot oneshot reset all link.
[   33.152229] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 37748837, vc: 0
[   33.152249] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.153495] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.186067] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.186143] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.187147] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.218559] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.218568] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.219017] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.251929] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.251939] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.253042] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.286164] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 37748837, vc: 0
[   33.286171] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.286988] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.318673] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.318679] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.318964] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.352044] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.352049] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.352948] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.385413] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.385417] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.385947] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.418792] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 37748837, vc: 0
[   33.418802] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.430554] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.452169] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.452178] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.452961] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.485550] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.485559] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.496555] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.518912] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.518920] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.530139] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.552284] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.552292] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.552968] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.585656] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.585663] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.586026] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.619026] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.619031] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.630104] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.652401] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.652406] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.652954] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.685777] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 37748837, vc: 0
[   33.685783] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.686953] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.719146] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.719154] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.730118] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.752518] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.752525] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.752968] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.785898] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.785903] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.786949] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.819263] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.819271] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.830112] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.852637] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.852644] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.852958] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.886015] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.886023] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.886953] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.919376] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 4194405, vc: 0
[   33.919381] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   33.919956] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   33.919968] g300 7-0066: s_stream for stream G300 depth 7-0066, vc:0, on:0, format:16 ,fps:30
[   33.983946] obc_max96712 7-0029: release pipe id, 0x00

hello shuisheng.peng,

please also check To verify the port binding result to examine the port bindings.
you may see-also Topic 318537 for some details to debug into discarding frame messages.

Thank you very much, I solved this problem by reducing the Mipi lane DPLL rate

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