Where to get IMX219 dtsi setting for TX1/TX2 ?

Hi Bros,

I search the dts setting for TX1/2, just found imx274,imx185 dtsi setting, like tegra210-camera-imx185-a00.dtsi.
Can any body paste a dts setting of IMX219 ? Such as tegra186-camera-imx219.dtsi.
Or I must create it by myself ?

Thanks so much.

tegra210-camera-imx185-a00.dts

/*
 * Copyright (c) 2016-2017, NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <dt-bindings/media/camera.h>
#include <dt-bindings/platform/t210/t210.h>

/ {
	host1x {
		vi {
			num-channels = <1>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					liimx185_vi_in0: endpoint {
						csi-port = <0>;
						bus-width = <4>;
						remote-endpoint = <&liimx185_csi_out0>;
					};
				};
			};
		};

		nvcsi {
			num-channels = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx185_csi_in0: endpoint@0 {
							csi-port = <0>;
							bus-width = <4>;
							remote-endpoint = <&liimx185_imx185_out0>;
						};
					};
					port@1 {
						reg = <1>;
						liimx185_csi_out0: endpoint@1 {
							remote-endpoint = <&liimx185_vi_in0>;
						};
					};
				};
			};
		};

		i2c@546c0000 {
			tca9546@70 {
				i2c@0 {
				imx185_a@1a {
					compatible = "nvidia,imx185";
					reg = <0x1a>;

					/* Physical dimensions of sensor */
					physical_w = "15.0";
					physical_h = "12.5";

					sensor_model ="imx185";
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */

					/* Defines number of frames to be dropped by driver internally after applying */
					/* sensor crop settings. Some sensors send corrupt frames after applying */
					/* crop co-ordinates */
					post_crop_frame_drop = "0";

					/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
					use_decibel_gain = "true";

					/* if true, delay gain setting by one frame to be in sync with exposure */
					delayed_gain = "true";

					/* enable CID_SENSOR_MODE_ID for sensor modes selection */
					use_sensor_mode_id = "true";

					/**
					* A modeX node is required to support v4l2 driver
					* implementation with NVIDIA camera software stack
					*
					* mclk_khz = "";
					* Standard MIPI driving clock, typically 24MHz
					*
					* num_lanes = "";
					* Number of lane channels sensor is programmed to output
					*
					* tegra_sinterface = "";
					* The base tegra serial interface lanes are connected to
					*
					* discontinuous_clk = "";
					* The sensor is programmed to use a discontinuous clock on MIPI lanes
					*
					* dpcm_enable = "true";
					* The sensor is programmed to use a DPCM modes
					*
					* cil_settletime = "";
					* MIPI lane settle time value.
					* A "0" value attempts to autocalibrate based on mclk_multiplier
					*
					* active_w = "";
					* Pixel active region width
					*
					* active_h = "";
					* Pixel active region height
					*
					* dynamic_pixel_bit_depth = "";
					* sensor dynamic bit depth for sensor mode
					*
					* csi_pixel_bit_depth = "";
					* sensor output bit depth for sensor mode
					*
					* mode_type="";
					* Sensor mode type, For eg: yuv, Rgb, bayer, bayer_wdr_pwl
					*
					* pixel_phase="";
					* Pixel phase for sensor mode, For eg: rggb, vyuy, rgb888
					*
					* readout_orientation = "0";
					* Based on camera module orientation.
					* Only change readout_orientation if you specifically
					* Program a different readout order for this mode
					*
					* line_length = "";
					* Pixel line length (width) for sensor mode.
					* This is used to calibrate features in our camera stack.
					*
					* mclk_multiplier = "";
					* Multiplier to MCLK to help time hardware capture sequence
					* TODO: Assign to PLL_Multiplier as well until fixed in core
					*
					* pix_clk_hz = "";
					* Sensor pixel clock used for calculations like exposure and framerate
					*
					* inherent_gain = "";
					* Gain obtained inherently from mode (ie. pixel binning)
					*
					* min_gain_val = ""; (floor to 6 decimal places)
					* max_gain_val = ""; (floor to 6 decimal places)
					* Gain limits for mode
					* if use_decibel_gain = "true", please set the gain as decibel
					*
					* min_exp_time = ""; (ceil to integer)
					* max_exp_time = ""; (ceil to integer)
					* Exposure Time limits for mode (us)
					*
					* min_hdr_ratio = "";
					* max_hdr_ratio = "";
					* HDR Ratio limits for mode
					*
					* min_framerate = "";
					* max_framerate = "";
					* Framerate limits for mode (fps)
					*
					* embedded_metadata_height = "";
					* Sensor embedded metadata height in units of rows.
					* If sensor does not support embedded metadata value should be 0.
					*/
					mode0 {/*mode IMX185_MODE_1920X1080_CROP_30FPS*/
						mclk_khz = "37125";
						num_lanes = "4";
						tegra_sinterface = "serial_a";
						discontinuous_clk = "no";
						dpcm_enable = "false";
						cil_settletime = "0";
						dynamic_pixel_bit_depth = "12";
						csi_pixel_bit_depth = "12";
						mode_type = "bayer";
						pixel_phase = "rggb";

						active_w = "1920";
						active_h = "1080";
						readout_orientation = "0";
						line_length = "2200";
						inherent_gain = "1";
						mclk_multiplier = "2";
						pix_clk_hz = "74250000";

						min_gain_val = "0"; /* dB */
						max_gain_val = "48"; /* dB */
						min_hdr_ratio = "1";
						max_hdr_ratio = "1";
						min_framerate = "1.5";
						max_framerate = "30";
						min_exp_time = "30";
						max_exp_time = "660000";
						embedded_metadata_height = "0";
					};
					mode1 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_30FPS*/
						mclk_khz = "37125";
						num_lanes = "4";
						tegra_sinterface = "serial_a";
						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";
						readout_orientation = "0";
						line_length = "2640";
						inherent_gain = "1";
						mclk_multiplier = "2.4";
						pix_clk_hz = "89100000";

						min_gain_val = "0";
						max_gain_val = "48";
						min_hdr_ratio = "1";
						max_hdr_ratio = "1";
						min_framerate = "1.5";
						max_framerate = "30";
						min_exp_time = "30";
						max_exp_time = "660000";
						embedded_metadata_height = "0";
					};
					mode2 {/*mode IMX185_MODE_1920X1080_CROP_60FPS*/
						mclk_khz = "37125";
						num_lanes = "4";
						tegra_sinterface = "serial_a";
						discontinuous_clk = "no";
						dpcm_enable = "false";
						cil_settletime = "0";
						dynamic_pixel_bit_depth = "12";
						csi_pixel_bit_depth = "12";
						mode_type = "bayer";
						pixel_phase = "rggb";

						active_w = "1920";
						active_h = "1080";
						readout_orientation = "0";
						line_length = "2200";
						inherent_gain = "1";
						mclk_multiplier = "4";
						pix_clk_hz = "148500000";

						min_gain_val = "0";
						max_gain_val = "48";
						min_hdr_ratio = "1";
						max_hdr_ratio = "1";
						min_framerate = "1.5";
						max_framerate = "60";
						min_exp_time = "30";
						max_exp_time = "660000";
						embedded_metadata_height = "0";
					};
					mode3 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_60FPS*/
						mclk_khz = "37125";
						num_lanes = "4";
						tegra_sinterface = "serial_a";
						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";
						readout_orientation = "0";
						line_length = "2640";
						inherent_gain = "1";
						mclk_multiplier = "4.8";
						pix_clk_hz = "178200000";

						min_gain_val = "0";
						max_gain_val = "48";
						min_hdr_ratio = "1";
						max_hdr_ratio = "1";
						min_framerate = "1.5";
						max_framerate = "60";
						min_exp_time = "30";
						max_exp_time = "660000";
						embedded_metadata_height = "0";
					};
					mode4 {/*mode IMX185_MODE_1920X1080_CROP_HDR_30FPS*/
						mclk_khz = "37125";
						num_lanes = "4";
						tegra_sinterface = "serial_a";
						discontinuous_clk = "no";
						dpcm_enable = "false";
						cil_settletime = "0";
						dynamic_pixel_bit_depth = "16";
						csi_pixel_bit_depth = "12";
						mode_type = "bayer_wdr_pwl";
						pixel_phase = "rggb";

						active_w = "1920";
						active_h = "1080";
						readout_orientation = "0";
						line_length = "2200";
						inherent_gain = "1";
						mclk_multiplier = "2";
						pix_clk_hz = "74250000";

						min_gain_val = "0";
						max_gain_val = "12";
						min_hdr_ratio = "16";
						max_hdr_ratio = "16";
						min_framerate = "1.5";
						max_framerate = "30";
						min_exp_time = "30";
						max_exp_time = "660000";
						embedded_metadata_height = "0";

						/* WDR related settings */
						num_control_point = "4";
						control_point_x_0 = "0";
						control_point_x_1 = "2048";
						control_point_x_2 = "16384";
						control_point_x_3 = "65536";
						control_point_y_0 = "0";
						control_point_y_1 = "2048";
						control_point_y_2 = "2944";
						control_point_y_3 = "3712";
					};
					ports {
						#address-cells = <1>;
						#size-cells = <0>;
						port@0 {
							reg = <0>;
							liimx185_imx185_out0: endpoint {
								csi-port = <0>;
								bus-width = <4>;
								remote-endpoint = <&liimx185_csi_in0>;
								};
							};
						};
					};
				};
			};
		};
	};
};

/ {

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		/**
		* Physical settings to calculate max ISO BW
		*
		* num_csi_lanes = <>;
		* Total number of CSI lanes when all cameras are active
		*
		* max_lane_speed = <>;
		* Max lane speed in Kbit/s
		*
		* min_bits_per_pixel = <>;
		* Min bits per pixel
		*
		* vi_peak_byte_per_pixel = <>;
		* Max byte per pixel for the VI ISO case
		*
		* vi_bw_margin_pct = <>;
		* Vi bandwidth margin in percentage
		*
		* max_pixel_rate = <>;
		* Max pixel rate in Kpixel/s for the ISP ISO case
		*
		* isp_peak_byte_per_pixel = <>;
		* Max byte per pixel for the ISP ISO case
		*
		* isp_bw_margin_pct = <>;
		* Isp bandwidth margin in percentage
		*/
		num_csi_lanes = <4>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		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 = "imx185_bottom_liimx185";
				position = "bottom";
				orientation = "0";
				drivernode0 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_sensor";
					/* Driver v4l2 device name */
					devname = "imx185 30-001a";
					/* Declare the device-tree hierarchy to driver instance */
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9546@70/i2c@0/imx185_a@1a";
				};
			};
		};
	};
};

hello Dennis_Jiang,

you should be able to access the sources package for camera sensor device tree from Jetson Download Center.
here’s path for IMX219 DTSI settings for your reference,

r28.2_sources/public_release/kernel_src/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-modules/tegra186-camera-e3322-a00.dtsi

moreover, you could also contact our Jetson Preferred Partners to support your IMX219 camera issues,
thanks

Dear Jerry,

Thanks so much for your information, I get it.
If there any question, I will contact them.

Thanks

Hi Luna. Did you solve the problem with the i2c mux and the cameras? Thanks!