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>;
};
};
};
};
};
};
