On Orin NX R36.3 I can't configure imx477 image capture from two virtual channels FPD Link ds90ub954 - ds90ub953

Hi.

nitial data:
Linux build R36.3
Driver GitHub - InES-HPMM/FPD-LinkIII_ds90ub95x: FDP Link III driver for ds90ub954/ds90ub953

The ds90ub954 deserializer is connected to MIPI-2 2 lines are used.
Two serializers ds90ub953 with imx477 cameras are connected to ds90ub954.

I am trying to connect imx477 camera to orin NX Linux R36.3.

At this stage I am not able to connect media devices.

My dts:

//#include <dt-bindings/media/camera.h>
//#include <dt-bindings/platform/t210/t210.h>
#include <dt-bindings/tegra234-p3767-0000-common.h>
#include <dt-bindings/gpio/gpio.h>

//#define CAM1_PWDN		TEGRA194_MAIN_GPIO(S,7)
//#define CAM2_PWDN		TEGRA194_MAIN_GPIO(T,0)
//#define CAM3_PWDN   	TEGRA194_MAIN_GPIO(T,5)
//#define CAM4_PWDN		TEGRA194_MAIN_GPIO(T,6)
//#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)

#define CAM3_PWDN		TEGRA234_MAIN_GPIO(AC,0)
#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)
#define CAM1_PWDN	TEGRA234_MAIN_GPIO(H, 6)
#define CAM2_PWDN	TEGRA234_MAIN_GPIO(Q, 6)
#define CAM4_PWDN	TEGRA234_MAIN_GPIO(Q, 5)

/ {

	gpio@6000d000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
//			gpios = <CAM1_PWDN 0  CAM2_PWDN 0>;
//            gpios = < TEGRA234_MAIN_GPIO(S,7) 0 TEGRA234_MAIN_GPIO(T,0) 0>;

			label = "cam1-pwdn", "cam2-pwdn";
		};
	};

    tegra-capture-vi  {
        status = "okay";
        num-channels = <2>;
        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@0{
                status = "okay";
                reg = <0>;
                ds_imx477_vi_vc0_in0: endpoint {
                    status = "okay";
                    // IMX477
 					vc-id = <0>;
                    port-index = <2>;  // MIPI0 -> CSI-A-B
                    bus-width = <2>;   // Use CSI-A and CSI-B
                    remote-endpoint = <&ds_imx477_csi_vc0_out0>;
                };
            };
            port@1{
                status = "okay";
                reg = <1>;
                ds_imx477_vi_vc1_in0: endpoint {
                    status = "okay";
                    // IMX477
                    vc-id = <1>;
                    port-index = <2>;  // MIPI0 -> CSI-A-B
                    bus-width = <2>;   // Use CSI-A and CSI-B
                    remote-endpoint = <&ds_imx477_csi_vc1_out0>;
                };
            };
        };//end ports
    };//end vi

bus@0 {
	host1x@13e00000 {
		nvcsi@15a00000 {
        //status = "okay";
        num-channels = <2>;
        #address-cells = <1>;
        #size-cells = <0>;

        channel@0 {
            //status = "okay";
            reg = <0>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                    status = "okay";
                    reg = <0>;
                    ds_imx477_i2c_csi_vc0_in0: endpoint@0 {
                        status = "okay";
                        port-index = <2>; // MIPI4 -> CSI-C
                        bus-width = <2>;  // Use CSI-C and CSI-D
                        remote-endpoint = <&imx477_i2c_vc0_out0>;
                    };
                };
                port@1 {
                    //status = "okay";
                    reg = <1>;
                    ds_imx477_csi_vc0_out0: endpoint@1 {
                        //status = "okay";
                        remote-endpoint = <&ds_imx477_vi_vc0_in0>;
                    };
                };
            };
        };//end chanel@0

        channel@1 {
            //status = "okay";
            reg = <1>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                    //status = "okay";
                    reg = <0>;
                    ds_imx477_i2c_csi_vc1_in0: endpoint@0 {
                        status = "okay";
                        port-index = <2>; // MIPI4 -> CSI-C
                        bus-width = <2>;  // Use CSI-C and CSI-D
                        remote-endpoint = <&imx477_i2c_vc1_out0>;
                    };
                };
                port@1 {
                    //status = "okay";
                    reg = <1>;
                    ds_imx477_csi_vc1_out0: endpoint@1 {
                        //status = "okay";
                        remote-endpoint = <&ds_imx477_vi_vc1_in0>;
                    };
                };
            };
        };//end chanel@0
    };//end nvcsi

};//end host1x

i2c@3160000 {
    fpdlink: ds90ub954@30 {
                       status = "okay";
                       compatible = "ti,ds90ub954";
                       reg = <0x30>;
                       csi-lane-count = <0x02>;
                       csi-lane-speed = <1600>;
                       continuous-clock;

                       //test-pattern;

           //pdb-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(E, 0) 0>;
           //pass-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(S, 7) 0>;
           //lock-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(T, 0) 0>;

                       i2c_address_s0: num-alias-pairs0 {list-cells = <1>;};
                       i2c_address_s1: num-alias-pairs1 {list-cells = <1>;};

                       serializers {
                           status = "okay";
                           num-channels = <0x02>;
                           #address-cells = <1>;
                           #size-cells = <0>;

                           serializer@0 {
                               status = "okay";
                               rx-channel=<0>;
                               i2c-address=<0x18>;
                                csi-lane-count = <2>;
                               continuous-clock;
                               //i2c-pass-through-all;

                               virtual-channel-map = <0x0>;
//                               virtual-channel-map = <0x4>;
                               
                              // test-pattern;
                               
                               gpio0-output-enable = <1>;
                               gpio0-control = <0x9>;

                               
                               i2c-slave = <&i2c_address_s0 0x1a>;// 0x11>;
                               slave-alias = <&i2c_address_s0 0x10>;// 0x21>;
                           };
                           serializer@1 {
                               status = "okay";
                               rx-channel=<1>;
                               i2c-address=<0x19>;
                                csi-lane-count = <2>;
                               continuous-clock;
                               //i2c-pass-through-all;

                               //virtual-channel-map = <0x55>;
                               virtual-channel-map = <0x4>;
                               
                              // test-pattern;
                               
                               gpio0-output-enable = <1>;
                               gpio0-control = <0x9>;

                               
                               i2c-slave = <&i2c_address_s1 0x1a>;// 0x11>;
                               slave-alias = <&i2c_address_s1 0x1c>;// 0x21>;
                           };
                       };
    };
                        imx477_a@10 {
                            status = "okay";
                            compatible = "ridgerun,imx477";
                            // I2C device address
                            reg = <0x10>;
        
                            // V4L2 device node location
                            //devnode = "video0";
        
                            // Physical dimensions of sensor
                            physical_w = "3.680";
                            physical_h = "2.760";
        
                            sensor_model = "imx477";
sync_sensor_index = <1>;        
				post_crop_frame_drop = "0";
				use_decibel_gain = "true";
                            use_sensor_mode_id = "true";
                delayed_gain = "true";

                            reset-gpios = <&gpio CAM4_PWDN GPIO_ACTIVE_HIGH>;

                            clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>;
                            clock-names = "extperiph1", "pllp_grtba";
                            mclk = "extperiph1";

                            clock-frequency = <24000000>;

                           // clock-names = "cam_mclk1";
                            //mclk = "cam_mclk1";

                            mode0 { /* IMX477_MODE_3264x2464_21FPS */
                                mclk_khz = "24000";
                                num_lanes = "2";
                                tegra_sinterface = "serial_c";//"serial_c";
                                phy_mode = "DPHY";
                                discontinuous_clk = "no";
                                dpcm_enable = "false";
                                cil_settletime = "0";
                                dynamic_pixel_bit_depth = "10";
                                csi_pixel_bit_depth = "10";
                                mode_type = "bayer";
                                pixel_phase = "rggb";
                                active_w = "4056";
                                active_h = "3040";
                                pixel_t = "bayer_rggb";
                                readout_orientation = "90";
                                line_length = "13048";

set_mode_delay_ms = "1000";
mclk_multiplier = "35";
serdes_pix_clk_hz = "1600000000";
pix_clk_hz = "840000000";


                                inherent_gain = "1";
                                vc_id = "0";
    
                                gain_factor = "10";				
                                min_gain_val = "10"; /* 1.00x */
                                max_gain_val = "3510"; /* 10.66x */
                                step_gain_val = "1";
                                default_gain = "10"; /* 1.00x */
                        
                                min_hdr_ratio = "1";
                                max_hdr_ratio = "1";
                        
                                framerate_factor = "1000000";
                                min_framerate = "1500000"; 	/* 1.5 fps */
                                max_framerate = "15000000"; /* 15 fps */
                                step_framerate = "1";
                                default_framerate = "15000000"; /* 15.0 fps */
                        
                                exposure_factor = "1000000";
                                min_exp_time = "16"; /* us */
                                max_exp_time = "710227"; /* us */
                                step_exp_time = "1";
                                default_exp_time = "710227"; /* us */
    
//                                embedded_metadata_height = "0";
                                embedded_metadata_height = "2";

                            };
                            mode1 { /* IMX477_MODE_1920X1080 */
                                mclk_khz = "24000";
                                num_lanes = "2";
                                tegra_sinterface = "serial_c";//"serial_a";
                                phy_mode = "DPHY";
                                discontinuous_clk = "no";
                                dpcm_enable = "false";
                                cil_settletime = "0";
                                dynamic_pixel_bit_depth = "10";
                                csi_pixel_bit_depth = "10";
                                mode_type = "bayer";
                                pixel_phase = "rggb";
                                active_w = "1920";
                                active_h = "1080";
                                pixel_t = "bayer_rggb";
                                readout_orientation = "90";
//                                line_length = "9024";
                                line_length = "7000";

set_mode_delay_ms = "1000";
mclk_multiplier = "80";
serdes_pix_clk_hz = "1600000000";
pix_clk_hz = "840000000";

                                inherent_gain = "1";
//                                vc-id = "0";
                                vc_id = "0";
    
                                gain_factor = "10";
                                min_gain_val = "10"; /* 1.00x */
                                max_gain_val = "3510"; /* 17x */
                                step_gain_val = "1";
                                default_gain = "10"; /* 1.00x */
                                min_hdr_ratio = "1";
                                max_hdr_ratio = "1";
                        
                                framerate_factor = "1000000";
                                min_framerate = "3000000"; /* 2.0 fps */
                                max_framerate = "60000000"; /* 60.0 fps */
                                step_framerate = "1";
                                default_framerate = "60000000"; /* 60.0 fps */
                            
                                exposure_factor = "1000000";
                                min_exp_time = "6"; /* us */
                                max_exp_time = "16667"; /* us */
                                step_exp_time = "1";
                                default_exp_time = "16667"; /* us */
    
                                embedded_metadata_height = "2";
                                //embedded_metadata_height = "0";
                            };
    
                            ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                port@0 {
                                    reg = <0>;
                                    imx477_i2c_vc0_out0: endpoint {
            							vc-id = <0>;
                                        port-index = <2>;
                                        bus-width = <2>;
                                        
                                        remote-endpoint = <&ds_imx477_i2c_csi_vc0_in0>;
                                    };
                                };
                            };
                        };

                        imx477_c@1c {
                            status = "okay";
                            compatible = "ridgerun,imx477";
                            //compatible = "sony,imx412";
//                            //compatible = "nvidia,imx477";
                            // I2C device address
                            reg = <0x1c>;
        
                            // V4L2 device node location
//                            devnode = "video1";
        
                            // Physical dimensions of sensor
                            physical_w = "3.680";
                            physical_h = "2.760";
        
                            sensor_model = "imx477";
sync_sensor_index = <1>;
        
				post_crop_frame_drop = "0";
				use_decibel_gain = "true";
                delayed_gain = "true";
                            use_sensor_mode_id = "true";

                            reset-gpios = <&gpio CAM3_PWDN GPIO_ACTIVE_HIGH>;
//            clocks = <&imx412_clk>;

//            assigned-clocks = <&imx412_clk>;
//            assigned-clock-parents = <&imx412_clk_parent>;
//            assigned-clock-rates = <24000000>;

                            clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>;
                            clock-names = "extperiph1", "pllp_grtba";
                            mclk = "extperiph1";
                            clock-frequency = <24000000>;

                           // clock-names = "cam_mclk1";
                            //mclk = "cam_mclk1";

                            mode0 { /* IMX477_MODE_3264x2464_21FPS */
                                mclk_khz = "24000";
                                num_lanes = "2";
                                tegra_sinterface = "serial_c";//"serial_c";
                                phy_mode = "DPHY";
                                discontinuous_clk = "no";
                                dpcm_enable = "false";
                                cil_settletime = "0";
                                dynamic_pixel_bit_depth = "10";
                                csi_pixel_bit_depth = "10";
                                mode_type = "bayer";
                                pixel_phase = "rggb";
                                active_w = "4056";
                                active_h = "3040";
                                pixel_t = "bayer_rggb";
                                readout_orientation = "90";
                                line_length = "13048";

set_mode_delay_ms = "1000";
mclk_multiplier = "35";
//pix_clk_hz = "775960320";
//pix_clk_hz = "320000000";

serdes_pix_clk_hz = "1600000000";
//serdes_pix_clk_hz = "640000000";
//pix_clk_hz = "74250000";
//serdes_pix_clk_hz = "833333333";
pix_clk_hz = "840000000";


                                inherent_gain = "1";
//                                vc-id = "1";
                                vc_id = "1";
                                              
    
                                gain_factor = "10";				
                                min_gain_val = "10"; /* 1.00x */
                                max_gain_val = "3510"; /* 10.66x */
                                step_gain_val = "1";
                                default_gain = "10"; /* 1.00x */
                        
                                min_hdr_ratio = "1";
                                max_hdr_ratio = "1";
                        
                                framerate_factor = "1000000";
                                min_framerate = "1500000"; 	/* 1.5 fps */
                                max_framerate = "15000000"; /* 15 fps */
                                step_framerate = "1";
                                default_framerate = "15000000"; /* 15.0 fps */
                        
                                exposure_factor = "1000000";
                                min_exp_time = "16"; /* us */
                                max_exp_time = "710227"; /* us */
                                step_exp_time = "1";
                                default_exp_time = "710227"; /* us */
    
                                embedded_metadata_height = "2";
                                //embedded_metadata_height = "0";
                            };
                            mode1 { /* IMX477_MODE_1920X1080 */
                                mclk_khz = "24000";
                                num_lanes = "2";
                                tegra_sinterface = "serial_c";//"serial_a";
                                phy_mode = "DPHY";
                                discontinuous_clk = "no";
                                dpcm_enable = "false";
                                cil_settletime = "0";
                                dynamic_pixel_bit_depth = "10";
                                csi_pixel_bit_depth = "10";
                                mode_type = "bayer";
                                pixel_phase = "rggb";
                                active_w = "1920";
                                active_h = "1080";
                                pixel_t = "bayer_rggb";
                                readout_orientation = "90";
//                                line_length = "9024";
                                line_length = "7000";

set_mode_delay_ms = "1000";
mclk_multiplier = "80";
//pix_clk_hz = "775960320";
//pix_clk_hz = "320000000";

serdes_pix_clk_hz = "1600000000";
//serdes_pix_clk_hz = "640000000";
//pix_clk_hz = "74250000";
//serdes_pix_clk_hz = "833333333";
pix_clk_hz = "840000000";



                                inherent_gain = "1";
//                                vc-id = "1";
                                vc_id = "1";
    
                                gain_factor = "10";
                                min_gain_val = "10"; /* 1.00x */
                                max_gain_val = "3510"; /* 17x */
                                step_gain_val = "1";
                                default_gain = "10"; /* 1.00x */
                                min_hdr_ratio = "1";
                                max_hdr_ratio = "1";
                        
                                framerate_factor = "1000000";
                                min_framerate = "3000000"; /* 2.0 fps */
                                max_framerate = "60000000"; /* 60.0 fps */
                                step_framerate = "1";
                                default_framerate = "60000000"; /* 60.0 fps */
                            
                                exposure_factor = "1000000";
                                min_exp_time = "6"; /* us */
                                max_exp_time = "16667"; /* us */
                                step_exp_time = "1";
                                default_exp_time = "16667"; /* us */
    
                                embedded_metadata_height = "2";
//                                embedded_metadata_height = "0";
                            };
    
                            ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                port@0 {
                                    reg = <0>;
                                    imx477_i2c_vc1_out0: endpoint {
                        vc-id = <1>;
                                        port-index = <2>;
                                        bus-width = <2>;
//data-lanes = <1 2>;
//link-frequencies = /bits/ 64 <600000000>;

                                        remote-endpoint = <&ds_imx477_i2c_csi_vc1_in0>;
                                    };
                                };
                            };
                        };
                   // };
        
  };
};

	tegra-camera-platform {
        compatible = "nvidia, tegra-camera-platform";
        num_csi_lanes = <2>;  // Changed 2 -> 4
		max_lane_speed = <15000000>; //<4000000>;//<4500000>;
		min_bits_per_pixel = <10>;  
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
        max_pixel_rate = <240000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

        /*
		* The general guideline for naming badge_info contains 3 parts, and is as follows,
		* The first part is the camera_board_id for the module; if the module is in a FFD
		* platform, then use the platform name for this part.
        * The second part contains the position of the module, ex. rear or front.
		* The third part contains the last 6 characters of a part number which is found
		* in the module's specsheet from the vender.
		*/
		modules {
            module0 {
//                status = "okay";
//                badge = "porg_bottom_RBPCV2";
//                position = "bottomleft";
//                orientation = "1";

   				badge = "fpd_rear_imx412";
				position = "rear";
				orientation = "0";

                drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
                    devname = "imx477 0-0010";
                    //proc-device-tree = "/proc/device-tree/i2c@3160000/imx477_c@10";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/imx477_a@10";
                };
            };
            module1 {
//                status = "okay";
//                badge = "porg_ht_RBPCV2";
//                position = "bottomrear";
//                orientation = "1";

   				badge = "fpd_front_imx477";
				position = "front";
				orientation = "1";

                drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
                    devname = "imx477 0-001c";
//                    proc-device-tree = "/proc/device-tree/i2c@3160000/imx477_c@1c";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/imx477_c@1c";
                };
            };

		};
	};
};

When requesting configuration, I see that the configuration of media devices is not created.

 orinnx@orinnx-desktop:~$ media-ctl -p -d /dev/media0
Media controller API version 5.15.136

Media device information
------------------------
driver          tegra-camrtc-ca
model           NVIDIA Tegra Video Input Device
serial
bus info
hw revision     0x3
driver version  5.15.136

Device topology
- entity 1: 13e00000.host1x:nvcsi@15a00000- (2 pads, 0 link)
            type V4L2 subdev subtype Unknown flags 0
        pad0: Sink
        pad1: Source

dmeg log:
dmesg-log.txt (73.9 KB)

In the log I see the following line

23.080319] debugfs: Directory 'imx477_c' with parent '/' already present!

Could you please tell me what this could be related to?

Please check my dts.
I’m asking for help.

Could you dump the device tree to confirm.

sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree

ShaneCCC
Thanks for the reply.
My uploaded device tree dump is below
extracted_proc.txt (333.4 KB)

Looks like some port-index was override to 1 from the dump file.

ShaneCCC
Thank you!!!
It turns out as follows.
I’m building my tegra234-p3768-0000+p3767-0001-nv.dtb from source

In /boot/extlinux/extlinux.conf I specify where to load the device tree from.

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 
      FDT /boot/dtb/tegra234-p3768-0000+p3767-0001-nv.dtb

In tegra234-p3768-0000+p3767-0001-nv.dtb there is no mention of imx219, and no other port-index references other than those defined when compiling dtb.
I checked this by decompiling tegra234-p3768-0000+p3767-0001-nv.dtb.

But after loading, references to imx219 appear in the system.
This can be seen from.

sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree

How to remove the definitions for imx219 from the boot?

You can remove all others camera include dts file to build new dtb just only include your camera dts.

That’s how it’s done.
Here is my dtb that should be loaded on startup
tegra234-p3768-0000+p3767-0001-nv.zip (39.3 KB)

As I wrote above in /boot/extlinux/extlinux.conf it is specified for loading

FDT /boot/dtb/tegra234-p3768-0000+p3767-0001-nv.dtb

If we decompile it
dtc -I dtb -O dts -o tegra234-p3768-0000+p3767-0001-nv.dts tegra234-p3768-0000+p3767-0001-nv.dtb
then we get
tegra234-p3768-0000+p3767-0001-nv.dts.txt (321.1 KB)

There is no mention of imx219 here.

After booting the system and if you do
sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
extracted_proc.txt (333.4 KB)

We get a decompiled dst that contains references to imx219

At what point there is an extra camera which is not in the device tree tegra234-p3768-0000+p3767-0001-nv.dtb

Do you have the OVERLAYS in the extlinux.conf like below?

LABEL JetsonIO
        MENU LABEL Custom Header Config: <CSI Camera IMX477 Dual>
        LINUX /boot/Image
        FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb
        INITRD /boot/initrd
        APPEND ${cbootargs} root=PARTUUID=dabca03b-6258-49ba-bf9c-1384b8fbf195 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0
        OVERLAYS /boot/tegra234-p3767-camera-p3768-imx477-dual.dtbo

No here is my full extlinux.conf

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 
      FDT /boot/dtb/tegra234-p3768-0000+p3767-0001-nv.dtb

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

LABEL backup
    MENU LABEL backup kernel
    LINUX /boot/Image.backup
    INITRD /boot/initrd
    APPEND ${cbootargs}
    FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0001-nv.dtb

Maybe have some strings modification to confirm system loading correct dtb.

I apologize.
But how and where to do it?

Add below to your dts like JP5 and confirm by cat /proc/device-tree/nvidia,dtsfilename to confirm it.

/ {
 	nvidia,dtsfilename = __FILE__;
 	nvidia,dtbbuildtime = __DATE__, __TIME__;

ShapeSSC, thank you very much for your reply.

I did it differently, but also added your advice to the dts.
It’s a bit complicated but it works.

In R36 somewhere inside the initrd there is a tree of imx219 camera devices and it prevents to configure imx477.
This causes a conflict and consequently media devices are not registered in the system.

To remove the definitions for imx219 did the following:

In the file: (package with Linux distribution from which we install the system)

Linux_for_Tegra/jetson-orin-nano-devkit.conf

There is a line in which pluggable overlays are defined

OVERLAY_DTB_FILE+=",tegra234-p3768-0000+p3767-0000-dynamic.dtbo";

If you look in the Linux source package in the file:

/hardware/nvidia/t23x/nv-public/overlay/tegra234-p3768-0000+p3767-0000-dynamic.dts

// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

/dts-v1/;
/plugin/;

#include "tegra234-p3768-camera-rbpcv2-imx219.dtsi"

/ {
	overlay-name = "Tegra234 p3768-0000+p3767-xxxx Dynamic Overlay";
};

/*
 * Include this file last in the device tree.  It manages run-time
 * pruning of peripherals that are not available across the various
 * SKUs of p3767.  For example PVA can be enabled in the device tree
 * and it will automatically be disabled for SKUs without PVA support.
 */
#include "tegra234-p3767-sku-handling.dtsi"

There is an inclusion
include “tegra234-p3768-camera-rbpcv2-imx219.dtsi”

  1. In the source code for Orin NX find the file
    hardware\nvidia\t23x\nv-public\overlay\tegra234-p3768-0000+p3767-0000-dynamic.dts
    You need to comment out the lines
    //include “tegra234-p3768-camera-rbpcv2-imx219.dtsi” and
    //include “tegra234-p3767-sku-handling.dtsi”
  2. Build the device tree make dtbs
    How to do it on the link below
    Kernel Customization — NVIDIA Jetson Linux Developer Guide 1 documentation
  3. find compiled tegra234-p3768-0000+p3767-0000-dynamic.dtbo.
    I have it here
    nvidia-oot/device-tree/platform/gtntric-dts/dtbs/ tegra234-p3768-0000+p3767-0000-dynamic.dtbo
  4. Replace this file in the Linux distribution
    Linux_for_Tegra/kernel/dtb
  5. Re-flash the module

After that imx219 definition disappeared from the device tree and media devices appeared

Maybe you can in Linux_for_Tegra/jetson-orin-nano-devkit.conf

Remove edit
OVERLAY_DTB_FILE+=“,tegra234-p3768-0000+p3767-0000-dynamic.dtbo”;
Do something like
OVERLAY_DTB_FILE+=“””;
But I haven’t tried it

I have a number of other questions, some of them off-topic, so I’d like to ask them here.
It’s easier not to force the creation of new topics.

  1. Where in the Linux sources (dts files) are defined correspondences of CSI ports and their physical addresses, as well as pins of the Orin NX module.
    For example, in the device tree there is a property port-index=0, how does the system understand that it is CSI0 - CSIA?
    In which *.h file or dts file this correspondence is written.
    I know about the file Jetson_Orin_Orin_NX_and_Orin_Nano_series_Pinmux_Config_Template.xlsm in which the correspondence is given.

  2. Why no gstreamer plugins for nvidia (nvarguscamerasrc etc) in R36?
    Tegra_Linux_Sample-Root-Filesystem_R36.3.0_aarch64.tbz2 does not have libgst****.so libraries.
    How to install them correctly in the system?

  1. You can check the map from the kernel driver like(csi5_fops.c/vi5_fops.c)
  2. Should include it for each release. Try using sdkmanager to install the image to confirm.

ShaneCCC, thanks for the reply.

We managed to capture video from two virtual channels.
But the video is displayed with artifacts.
If the image is still, there are no artifacts on the screen.
If you rotate the camera, the image is squared.

The video is applied.

The command to capture one channel:

 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)1920,height=(int)1080,framerate=60/1' ! nvvidconv flip-method=0 ! 'video/x-raw, format=(string)I420' ! ! xvimagesink -e --verbose

There are no errors in the logs.
Could you please tell me what this could be related to?

Good afternoon.
I am very keen to get some advice.
We have already spent a lot of time trying to make video capture from cameras via virtual channels work.
At the moment we have the following.
In the FPD link DS90UB954<-DS90UB953<-imx477

  1. one channel works well on jetson nano R32.7.4
  2. Works one channel Orin NX R36.3
  3. Two channels on Orin NX R36.3 work with problems as in the video above.

If the picture is static, the picture does not twitch.
If you move the camera, the picture jerks.

We thought that the problem is related to clock frequencies, but changing the
pix_clk_hz and serdes_pix_clk_hz does not give any result.

Could you please tell us what direction to look for?

Could you boost the clocks to try.

sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee  /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate

Thanks for the reply.
But it doesn’t help.
I am attaching how the video works.

How to determine at what stage the image is broken.
What affects it.

  1. Driver imx477
  2. Driver ds90ub95x
  3. Drivers v4l

Below is my dts
It has //phy_mode = “DPHY” disabled;
I found such a variant in the example.
But it doesn’t affect anything, because with the line phy_mode = “DPHY”; enabled, everything works just as badly.

//#include <dt-bindings/media/camera.h>
//#include <dt-bindings/platform/t210/t210.h>
#include <dt-bindings/tegra234-p3767-0000-common.h>
#include <dt-bindings/gpio/gpio.h>

//#define CAM1_PWDN		TEGRA194_MAIN_GPIO(S,7)
//#define CAM2_PWDN		TEGRA194_MAIN_GPIO(T,0)
//#define CAM3_PWDN   	TEGRA194_MAIN_GPIO(T,5)
//#define CAM4_PWDN		TEGRA194_MAIN_GPIO(T,6)
//#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)

#define CAM3_PWDN		TEGRA234_MAIN_GPIO(AC,0)
#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)
#define CAM1_PWDN	TEGRA234_MAIN_GPIO(H, 6)
#define CAM2_PWDN	TEGRA234_MAIN_GPIO(Q, 6)
#define CAM4_PWDN	TEGRA234_MAIN_GPIO(Q, 5)

/ {

	gpio@6000d000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
//			gpios = <CAM1_PWDN 0  CAM2_PWDN 0>;
//            gpios = < TEGRA234_MAIN_GPIO(S,7) 0 TEGRA234_MAIN_GPIO(T,0) 0>;

			label = "cam1-pwdn", "cam2-pwdn";
		};
	};

    tegra-capture-vi  {
        status = "okay";
        num-channels = <2>;
        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@0{
                status = "okay";
                reg = <0>;
                ds_imx477_vi_vc0_in0: endpoint {
                    status = "okay";
                    // IMX477
 					vc-id = <0>;
                    port-index = <2>;  // MIPI0 -> CSI-A-B
                    bus-width = <2>;   // Use CSI-A and CSI-B
                    remote-endpoint = <&ds_imx477_csi_vc0_out0>;
                };
            };
            port@1{
                status = "okay";
                reg = <1>;
                ds_imx477_vi_vc1_in0: endpoint {
                    status = "okay";
                    // IMX477
                    vc-id = <1>;
                    port-index = <2>;  // MIPI0 -> CSI-A-B
                    bus-width = <2>;   // Use CSI-A and CSI-B
                    remote-endpoint = <&ds_imx477_csi_vc1_out0>;
                };
            };
        };//end ports
    };//end vi

bus@0 {
	host1x@13e00000 {
		nvcsi@15a00000 {
        //status = "okay";
        num-channels = <2>;
        #address-cells = <1>;
        #size-cells = <0>;

        channel@0 {
            //status = "okay";
            reg = <0>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                    status = "okay";
                    reg = <0>;
                    ds_imx477_i2c_csi_vc0_in0: endpoint@0 {
                        status = "okay";
                        port-index = <2>; // MIPI4 -> CSI-C
                        bus-width = <2>;  // Use CSI-C and CSI-D
                        remote-endpoint = <&imx477_i2c_vc0_out0>;
                    };
                };
                port@1 {
                    //status = "okay";
                    reg = <1>;
                    ds_imx477_csi_vc0_out0: endpoint@1 {
                        //status = "okay";
                        remote-endpoint = <&ds_imx477_vi_vc0_in0>;
                    };
                };
            };
        };//end chanel@0

        channel@1 {
            //status = "okay";
            reg = <1>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
                port@0 {
                    //status = "okay";
                    reg = <0>;
                    ds_imx477_i2c_csi_vc1_in0: endpoint@0 {
                        status = "okay";
                        port-index = <2>; // MIPI4 -> CSI-C
                        bus-width = <2>;  // Use CSI-C and CSI-D
                        remote-endpoint = <&imx477_i2c_vc1_out0>;
                    };
                };
                port@1 {
                    //status = "okay";
                    reg = <1>;
                    ds_imx477_csi_vc1_out0: endpoint@1 {
                        //status = "okay";
                        remote-endpoint = <&ds_imx477_vi_vc1_in0>;
                    };
                };
            };
        };//end chanel@0
    };//end nvcsi

};//end host1x

i2c@3160000 {
    fpdlink: ds90ub954@30 {
                       status = "okay";
                       compatible = "ti,ds90ub954";
                       reg = <0x30>;
                       csi-lane-count = <0x02>;
                       csi-lane-speed = <1600>;
                       continuous-clock;

                       //test-pattern;

           //pdb-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(E, 0) 0>;
           //pass-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(S, 7) 0>;
           //lock-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(T, 0) 0>;

                       i2c_address_s0: num-alias-pairs0 {list-cells = <1>;};
                       i2c_address_s1: num-alias-pairs1 {list-cells = <1>;};

                       serializers {
                           status = "okay";
                           num-channels = <0x02>;
                           #address-cells = <1>;
                           #size-cells = <0>;

                           serializer@0 {
                               status = "okay";
                               rx-channel=<0>;
                               i2c-address=<0x18>;
                                csi-lane-count = <2>;
                               continuous-clock;
                               //i2c-pass-through-all;

                               virtual-channel-map = <0x0>;
//                               virtual-channel-map = <0x4>;
                               
                               //test-pattern;
                               
                               gpio0-output-enable = <1>;
                               gpio0-control = <0x9>;

                               
                               i2c-slave = <&i2c_address_s0 0x1a>;// 0x11>;
                               slave-alias = <&i2c_address_s0 0x10>;// 0x21>;
                           };
                           serializer@1 {
                               status = "okay";
                               rx-channel=<1>;
                               i2c-address=<0x19>;
                                csi-lane-count = <2>;
                               continuous-clock;
                               //i2c-pass-through-all;

                               virtual-channel-map = <0x55>;
                               //virtual-channel-map = <0x4>;
                               
                               //test-pattern;
                               
                               gpio0-output-enable = <1>;
                               gpio0-control = <0x9>;

                               
                               i2c-slave = <&i2c_address_s1 0x1a>;// 0x11>;
                               slave-alias = <&i2c_address_s1 0x1c>;// 0x21>;
                           };
                       };
    };
                        imx477_a@10 {
                            status = "okay";
                            compatible = "ridgerun,imx477";
                            // I2C device address
                            reg = <0x10>;
        
                            // V4L2 device node location
                            //devnode = "video0";
        
                            // Physical dimensions of sensor
                            physical_w = "3.680";
                            physical_h = "2.760";
        
                            sensor_model = "imx477";
//sync_sensor_index = <1>;        
//				post_crop_frame_drop = "0";
//				use_decibel_gain = "true";
                            use_sensor_mode_id = "true";
                //delayed_gain = "true";

                            reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;

clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>;
clock-names = "extperiph1", "pllp_grtba";
mclk = "extperiph1";
//clocks = <&bpmp TEGRA234_CLK_EXTPERIPH2>, <&bpmp TEGRA234_CLK_EXTPERIPH2>;
//clock-names = "extperiph2", "pllp_grtba";
//mclk = "extperiph2";

                            clock-frequency = <24000000>;

                           // clock-names = "cam_mclk1";
                            //mclk = "cam_mclk1";

							mode0 { /* IMX477_MODE_3840x2160 */
								mclk_khz = "24000";
								num_lanes = "2";
                                vc_id="0";
								tegra_sinterface = "serial_c";
								//phy_mode = "DPHY";
								discontinuous_clk = "no";
								dpcm_enable = "false";
								cil_settletime = "0";
								lane_polarity = "0";
								active_w = "3840";
								active_h = "2160";
								mode_type = "bayer";
								pixel_phase = "rggb";
								csi_pixel_bit_depth = "10";
								readout_orientation = "90";
								line_length = "11200";
								inherent_gain = "1";
								mclk_multiplier = "80";
//								pix_clk_hz = "300000000";
//                                pix_clk_hz = "600000000";
pix_clk_hz = "74250000";
serdes_pix_clk_hz = "200000000";
                                

//serdes_pix_clk_hz =   "600000000";//"160000000";
//set_mode_delay_ms = "1000";

								gain_factor = "16";
								framerate_factor = "1000000";
								exposure_factor = "1000000";
								min_gain_val = "16"; /* 1.00x */
								max_gain_val = "356"; /* 22x */
								step_gain_val = "1";
								default_gain = "16"; /* 1.00x */
								min_hdr_ratio = "1";
								max_hdr_ratio = "1";
								min_framerate = "2000000"; /* 2.0 fps */
								max_framerate = "30000000"; /* 30.0 fps */
								step_framerate = "1";
								default_framerate = "30000000"; /* 30.0 fps */
								min_exp_time = "13"; /* us */
								max_exp_time = "683709"; /* us */
								step_exp_time = "1";
								default_exp_time = "2495"; /* us */
								embedded_metadata_height = "2";
//								embedded_metadata_height = "0";
							};
							mode1 { /* IMX477_MODE_1920X1080 */
								mclk_khz = "24000";
								num_lanes = "2";
                                vc_id="0";
								tegra_sinterface = "serial_c";
//phy_mode = "DPHY";
								discontinuous_clk = "no";
								dpcm_enable = "false";
								cil_settletime = "0";
								lane_polarity = "0";
								active_w = "1920";
								active_h = "1080";
								mode_type = "bayer";
								pixel_phase = "rggb";
								csi_pixel_bit_depth = "10";
								readout_orientation = "90";
//line_length = "7000";
line_length = "2200";        
//line_length = "3076";                        

								inherent_gain = "1";
//								mclk_multiplier = "80";
								//pix_clk_hz = "300000000";
//                                pix_clk_hz = "600000000";
//pix_clk_hz = "74250000";
pix_clk_hz = "72000000";
//pix_clk_hz = "288000000";
serdes_pix_clk_hz = "200000000";
mclk_multiplier = "3";

//serdes_pix_clk_hz =   "600000000";//"160000000";
//set_mode_delay_ms = "1000";

								gain_factor = "16";
								framerate_factor = "1000000";
								exposure_factor = "1000000";
								min_gain_val = "16"; /* 1.00x */
								max_gain_val = "356"; /* 22x */
								step_gain_val = "1";
								default_gain = "16"; /* 1.00x */
								min_hdr_ratio = "1";
								max_hdr_ratio = "1";
								min_framerate = "2000000"; /* 2.0 fps */
								max_framerate = "60000000"; /* 60.0 fps */
								step_framerate = "1";
								default_framerate = "60000000"; /* 60.0 fps */
								min_exp_time = "13"; /* us */
								max_exp_time = "683709"; /* us */
								step_exp_time = "1";
								default_exp_time = "2495"; /* us */
								embedded_metadata_height = "2";
//						embedded_metadata_height = "0";
							};

    
                            ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                port@0 {
                                    reg = <0>;
                                    imx477_i2c_vc0_out0: endpoint {
            							vc-id = <0>;
                                        port-index = <2>;
                                        bus-width = <2>;
                                        
                                        remote-endpoint = <&ds_imx477_i2c_csi_vc0_in0>;
                                    };
                                };
                            };
                        };

                        imx477_c@1c {
                            status = "okay";
                            compatible = "ridgerun,imx477";
                            //compatible = "sony,imx412";
//                            //compatible = "nvidia,imx477";
                            // I2C device address
                            reg = <0x1c>;
        
                            // V4L2 device node location
//                            devnode = "video1";
        
                            // Physical dimensions of sensor
                            physical_w = "3.680";
                            physical_h = "2.760";
        
                            sensor_model = "imx477";
//sync_sensor_index = <1>;
        
//				post_crop_frame_drop = "0";
//				use_decibel_gain = "true";
//                delayed_gain = "true";
                            use_sensor_mode_id = "true";

                            reset-gpios = <&gpio CAM4_PWDN GPIO_ACTIVE_HIGH>;
//            clocks = <&imx412_clk>;

//            assigned-clocks = <&imx412_clk>;
//            assigned-clock-parents = <&imx412_clk_parent>;
//            assigned-clock-rates = <24000000>;

clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>;
clock-names = "extperiph1", "pllp_grtba";
mclk = "extperiph1";
//clocks = <&bpmp TEGRA234_CLK_EXTPERIPH2>, <&bpmp TEGRA234_CLK_EXTPERIPH2>;
//clock-names = "extperiph2", "pllp_grtba";
//mclk = "extperiph2";

                            clock-frequency = <24000000>;


							mode0 { /* IMX477_MODE_3840x2160 */
								mclk_khz = "24000";
								num_lanes = "2";
                                vc_id="1";
								tegra_sinterface = "serial_c";
								//phy_mode = "DPHY";
								discontinuous_clk = "no";
								dpcm_enable = "false";
								cil_settletime = "0";
								lane_polarity = "0";
								active_w = "3840";
								active_h = "2160";
								mode_type = "bayer";
								pixel_phase = "rggb";
								csi_pixel_bit_depth = "10";
								readout_orientation = "90";
								line_length = "11200";
								inherent_gain = "1";
								mclk_multiplier = "80";
//								pix_clk_hz = "300000000";
//                              pix_clk_hz = "600000000";
pix_clk_hz = "74250000";
serdes_pix_clk_hz = "200000000";

//serdes_pix_clk_hz =   "600000000";//"160000000";
//set_mode_delay_ms = "1000";

								gain_factor = "16";
								framerate_factor = "1000000";
								exposure_factor = "1000000";
								min_gain_val = "16"; /* 1.00x */
								max_gain_val = "356"; /* 22x */
								step_gain_val = "1";
								default_gain = "16"; /* 1.00x */
								min_hdr_ratio = "1";
								max_hdr_ratio = "1";
								min_framerate = "2000000"; /* 2.0 fps */
								max_framerate = "30000000"; /* 30.0 fps */
								step_framerate = "1";
								default_framerate = "30000000"; /* 30.0 fps */
								min_exp_time = "13"; /* us */
								max_exp_time = "683709"; /* us */
								step_exp_time = "1";
								default_exp_time = "2495"; /* us */
								embedded_metadata_height = "2";
//								embedded_metadata_height = "0";

							};
							mode1 { /* IMX477_MODE_1920X1080 */
								mclk_khz = "24000";
								num_lanes = "2";
                                vc_id="1";
								tegra_sinterface = "serial_c";
//phy_mode = "DPHY";
								discontinuous_clk = "no";
								dpcm_enable = "false";
								cil_settletime = "0";
								lane_polarity = "0";
								active_w = "1920";
								active_h = "1080";
								mode_type = "bayer";
								pixel_phase = "rggb";
								csi_pixel_bit_depth = "10";
								readout_orientation = "90";
//line_length = "7000";
line_length = "2200";             
//line_length = "3076";
								inherent_gain = "1";
//								mclk_multiplier = "80";
//								mclk_multiplier = "3";
//								pix_clk_hz = "300000000";
//                                pix_clk_hz = "600000000";
//pix_clk_hz = "74250000";
pix_clk_hz = "72000000";
serdes_pix_clk_hz = "200000000";
//pix_clk_hz = "288000000";
//serdes_pix_clk_hz = "300000000";
mclk_multiplier = "3";

//set_mode_delay_ms = "1000";
                                
								gain_factor = "16";
								framerate_factor = "1000000";
								exposure_factor = "1000000";
								min_gain_val = "16"; /* 1.00x */
								max_gain_val = "356"; /* 22x */
								step_gain_val = "1";
								default_gain = "16"; /* 1.00x */
								min_hdr_ratio = "1";
								max_hdr_ratio = "1";
								min_framerate = "2000000"; /* 2.0 fps */
								max_framerate = "60000000"; /* 60.0 fps */
								step_framerate = "1";
								default_framerate = "60000000"; /* 60.0 fps */
								min_exp_time = "13"; /* us */
								max_exp_time = "683709"; /* us */
								step_exp_time = "1";
								default_exp_time = "2495"; /* us */
								embedded_metadata_height = "2";
//								embedded_metadata_height = "0";
							};

                            ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                port@0 {
                                    reg = <0>;
                                    imx477_i2c_vc1_out0: endpoint {
                        vc-id = <1>;
                                        port-index = <2>;
                                        bus-width = <2>;
//data-lanes = <1 2>;
//link-frequencies = /bits/ 64 <600000000>;

                                        remote-endpoint = <&ds_imx477_i2c_csi_vc1_in0>;
                                    };
                                };
                            };
                        };
                   // };
        
  };
};

	tegra-camera-platform {
        compatible = "nvidia, tegra-camera-platform";
        num_csi_lanes = <2>;  // Changed 2 -> 4
		max_lane_speed = <15000000>; //<4000000>;//<4500000>;
		min_bits_per_pixel = <10>;  
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
        max_pixel_rate = <240000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

        /*
		* The general guideline for naming badge_info contains 3 parts, and is as follows,
		* The first part is the camera_board_id for the module; if the module is in a FFD
		* platform, then use the platform name for this part.
        * The second part contains the position of the module, ex. rear or front.
		* The third part contains the last 6 characters of a part number which is found
		* in the module's specsheet from the vender.
		*/
		modules {
            module0 {
   				badge = "fpd_rear_imx412";
				position = "rear";
				orientation = "0";

                drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
//                    devname = "imx477 0-0010";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/imx477_a@10";
                };
            };
            module1 {

   				badge = "fpd_front_imx477";
				position = "front";
				orientation = "1";

                drivernode0 {
                    status = "okay";
                    pcl_id = "v4l2_sensor";
//                    devname = "imx477 0-001c";
                    sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/imx477_c@1c";
                };
            };

		};
	};
};

Could you dump raw file by v4l2-ctl to confirm.
Maybe dump 300 frames to check.

Thanks

Thank you ShaneCCC.
I really need your help.

The dump was done with the command

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=300 --stream-to=video-01.raw

The dump was done by command.
The file turned out to be large, so I am posting it to file storage.