Hi, we are using Jetson Nano with RX(TP2854) to capture the images.
2 Channels will be operated even if we control one channel camera. The situation is that I control only 2nd channel camera, but 1st camera will be operated ON/OFF simultaneously.
Here is the log for your reference. “0044” is 1st camera, and “0045” is the 2nd camera.
Is it normal or some reasons to do this or …?
root@tegra-ubuntu:~#s
[ 1711.436166] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 1711.449584] tp2854 6-0044: tp2854_write_reg: i2c write, 0x6 = b2
[ 1711.456588] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 0
[ 1711.465572] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 1711.477483] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 1711.489548] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 2
[ 1711.498861] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 1711.534351] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 1711.546247] tp2854 6-0045: tp2854_write_reg: i2c write, 0x6 = b2
[ 1711.552920] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 0
[ 1711.560916] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 1711.572779] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 1711.584568] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 2
[ 1711.591368] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)108[ 1711.750890] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
0, framerate=(fraction)30/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive
/G[ 1711.765204] tp2854 6-0045: tp2854_write_reg: i2c write, 0x6 = b2
stPipeline:pipeline0/GstCapsFilter:capsf[ 1711.774424] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 0
ilter0.GstPad:src: caps = video/x-raw, f[ 1711.783933] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
ormat=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive
[ 1711.998705] video4linux video1: frame start syncpt timeout! index:0
[ 1712.206697] video4linux video1: frame start syncpt timeout! index:0
[ 1712.414686] video4linux video1: frame start syncpt timeout! index:0
[ 1712.622677] video4linux video1: frame start syncpt timeout! index:0
[ 1712.830677] video4linux video1: frame start syncpt timeout! index:0
[ 1713.038668] video4linux video1: frame start syncpt timeout! index:0
[ 1713.246670] video4linux video1: frame start syncpt timeout! index:0
[ 1713.454654] video4linux video1: frame start syncpt timeout! index:0
[ 1713.662632] video4linux video1: frame start syncpt timeout! index:0
[ 1713.870644] video4linux video1: frame start syncpt timeout! index:0
[ 1714.078638] video4linux video1: frame start syncpt timeout! index:0
[ 1714.286639] video4linux video1: frame start syncpt timeout! index:0
[ 1714.494628] video4linux video1: frame start syncpt timeout! index:0
[ 1714.702623] video4linux video1: frame start syncpt timeout! index:0
[ 1714.910614] video4linux video1: frame start syncpt timeout! index:0
[ 1715.118609] video4linux video1: frame start syncpt timeout! index:0
[ 1715.326604] video4linux video1: frame start syncpt timeout! index:0
[ 1715.534596] video4linux video1: frame start syncpt timeout! index:0
[ 1715.742590] video4linux video1: frame start syncpt timeout! index:0
[ 1715.950585] video4linux video1: frame start syncpt timeout! index:0
[ 1716.158578] video4linux video1: frame start syncpt timeout! index:0
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:04.436390316
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
^C[ 1716.366569] video4linux video1: frame start syncpt timeout! index:0
[ 1716.374115] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 1716.386010] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 2
[ 1716.393294] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4s
3 dtsi files is for your reference, too.
File:tegra210-porg-tp2854.dtsi
#include "tegra210-camera-tp2854.dtsi"
#define CAM1_PWDN TEGRA_GPIO(S, 7)
#define CAM2_PWDN TEGRA_GPIO(T, 0)
/ {
host1x {
i2c@546c0000 {
nc_tp2854_a@44 {
status = "enabled";
reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
};
nc_tp2854_a@45 {
status = "enabled";
reset-gpios = <&gpio CAM2_PWDN GPIO_ACTIVE_HIGH>;
};
};
};
gpio@6000d000 {
camera-control-output-low {
gpio-hog;
output-low;
gpios = < CAM1_PWDN 0 CAM2_PWDN 0>;
label = "cam1-pwdn", "cam2-pwdn";
};
};
};
File: tegra210-camera-tp2854.dtsi
#include <dt-bindings/media/camera.h>
#include <dt-bindings/platform/t210/t210.h>
/ {
host1x {
vi_base: vi {
num-channels = <2>;
ports {
#address-cells = <1>;
#size-cells = <0>;
vi_port0: port@0 {
reg = <0>;
nc_tp2854_vi_in0: endpoint {
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_out0>;
};
};
vi_port1: port@1 {
reg = <1>;
nc_tp2854_vi_in1: endpoint {
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_out1>;
};
};
};
};
csi_base: nvcsi {
num-channels = <2>;
#address-cells = <1>;
#size-cells = <0>;
csi_chan0: channel@0 {
reg = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
csi_chan0_port0: port@0 {
reg = <0>;
nc_tp2854_csi_in0: endpoint@0 {
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_out0>;
};
};
csi_chan0_port1: port@1 {
reg = <1>;
nc_tp2854_csi_out0: endpoint@1 {
remote-endpoint = <&nc_tp2854_vi_in0>;
};
};
};
};
csi_chan1: channel@1 {
reg = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
csi_chan1_port0: port@2 {
reg = <0>;
nc_tp2854_csi_in1: endpoint@2 {
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_out1>;
};
};
csi_chan1_port1: port@3 {
reg = <1>;
nc_tp2854_csi_out1: endpoint@3 {
remote-endpoint = <&nc_tp2854_vi_in1>;
};
};
};
};
};
i2c@546c0000 {
tp2854_single_cam0: nc_tp2854_a@44 {
compatible = "nc,tp2854_mipi";
/* I2C device address */
reg = <0x44>;
/* V4L2 device node location */
devnode = "video0";
/* Physical dimensions of sensor */
physical_w = "3.680";
physical_h = "2.760";
sensor_model = "tp2854_0";
use_sensor_mode_id = "true";
/* Define any required hw resources needed by driver */
/* ie. clocks, io pins, power sources */
avdd-reg = "vana";
iovdd-reg = "vif";
dvdd-reg = "vdig";
/**
* ==== Modes ====
* A modeX node is required to support v4l2 driver
* implementation with NVIDIA camera software stack
*
* == Signal properties ==
*
* phy_mode = "";
* PHY mode used by the MIPI lanes for this device
*
* tegra_sinterface = "";
* CSI Serial interface connected to tegra
* Incase of virtual HW devices, use virtual
* For SW emulated devices, use host
*
* pix_clk_hz = "";
* Sensor pixel clock used for calculations like exposure and framerate
*
* readout_orientation = "0";
* Based on camera module orientation.
* Only change readout_orientation if you specifically
* Program a different readout order for this mode
*
* == Image format Properties ==
*
* active_w = "";
* Pixel active region width
*
* active_h = "";
* Pixel active region height
*
* pixel_t = "";
* The sensor readout pixel pattern
*
* line_length = "";
* Pixel line length (width) for sensor mode.
*
* == Source Control Settings ==
*
* Gain factor used to convert fixed point integer to float
* Gain range [min_gain/gain_factor, max_gain/gain_factor]
* Gain step [step_gain/gain_factor is the smallest step that can be configured]
* Default gain [Default gain to be initialized for the control.
* use min_gain_val as default for optimal results]
* Framerate factor used to convert fixed point integer to float
* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
* Default Framerate [Default framerate to be initialized for the control.
* use max_framerate to get required performance]
* Exposure factor used to convert fixed point integer to float
* For convenience use 1 sec = 1000000us as conversion factor
* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
* Default Exposure Time [Default exposure to be initialized for the control.
* Set default exposure based on the default_framerate for optimal exposure settings]
*
* gain_factor = ""; (integer factor used for floating to fixed point conversion)
* min_gain_val = ""; (ceil to integer)
* max_gain_val = ""; (ceil to integer)
* step_gain_val = ""; (ceil to integer)
* default_gain = ""; (ceil to integer)
* Gain limits for mode
*
* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
* min_exp_time = ""; (ceil to integer)
* max_exp_time = ""; (ceil to integer)
* step_exp_time = ""; (ceil to integer)
* default_exp_time = ""; (ceil to integer)
* Exposure Time limits for mode (sec)
*
* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
* min_framerate = ""; (ceil to integer)
* max_framerate = ""; (ceil to integer)
* step_framerate = ""; (ceil to integer)
* default_framerate = ""; (ceil to integer)
* 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 { /* TP2854_MODE_1920x1080_30FPS */
mclk_khz = "27000";
num_lanes = "4";
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
active_w = "1920";
active_h = "1080";
pixel_t = "yuv_uyvy16";
readout_orientation = "0";
line_length = "2200";
inherent_gain = "1";
mclk_multiplier = "2.75";
pix_clk_hz = "742500000"; /*pixel clock = mclk * PLL Multipler*/ /*pixel_clk_hz = 2200 * 1125 * 30 = 742500000*/
gain_factor = "16";
framerate_factor = "30000000";
exposure_factor = "1000000";
min_gain_val = "0"; /* 1.00x */
max_gain_val = "170"; /* 10.66x */
step_gain_val = "1";
default_gain = "0"; /* 1.00x */
min_hdr_ratio = "1";
max_hdr_ratio = "1";
min_framerate = "30000000"; /* 30.0 fps */
max_framerate = "30000000"; /* 30.0 fps *//*max_framerate = pix_clk_hz / (line_length * minimum frame length)*/
step_framerate = "1";
default_framerate = "30000000"; /* 30.0 fps */
min_exp_time = "30"; /* us */
max_exp_time = "660000"; /* us *//*max_exp_time = (maximum coarse integration time) * line_length / pix_clk_hz * 1000000*/
step_exp_time = "1";
default_exp_time = "33334"; /* us */
embedded_metadata_height = "0";
};
mode1 { /* TP2854_MODE_1080x720_30FPS */
mclk_khz = "27000";
num_lanes = "4";
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
active_w = "1280";
active_h = "720";
pixel_t = "yuv_yuyv16";
readout_orientation = "0";
line_length = "1650";
inherent_gain = "1";
mclk_multiplier = "2.75";
pix_clk_hz = "742500000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16"; /* 1.00x */
max_gain_val = "170"; /* 10.66x */
step_gain_val = "1";
default_gain = "16"; /* 1.00x */
min_hdr_ratio = "1";
max_hdr_ratio = "1";
min_framerate = "30000000"; /* 30.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 = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
nc_tp2854_out0: endpoint {
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_in0>;
};
};
};
};
tp2854_single_cam1: nc_tp2854_a@45 {
compatible = "nc,tp2854_mipi";
/* I2C device address */
reg = <0x45>;
/* V4L2 device node location */
devnode = "video1";
/* Physical dimensions of sensor */
physical_w = "3.680";
physical_h = "2.760";
sensor_model = "tp2854_1";
use_sensor_mode_id = "true";
/* Define any required hw resources needed by driver */
/* ie. clocks, io pins, power sources */
avdd-reg = "vana";
iovdd-reg = "vif";
dvdd-reg = "vdig";
/**
* ==== Modes ====
* A modeX node is required to support v4l2 driver
* implementation with NVIDIA camera software stack
*
* == Signal properties ==
*
* phy_mode = "";
* PHY mode used by the MIPI lanes for this device
*
* tegra_sinterface = "";
* CSI Serial interface connected to tegra
* Incase of virtual HW devices, use virtual
* For SW emulated devices, use host
*
* pix_clk_hz = "";
* Sensor pixel clock used for calculations like exposure and framerate
*
* readout_orientation = "0";
* Based on camera module orientation.
* Only change readout_orientation if you specifically
* Program a different readout order for this mode
*
* == Image format Properties ==
*
* active_w = "";
* Pixel active region width
*
* active_h = "";
* Pixel active region height
*
* pixel_t = "";
* The sensor readout pixel pattern
*
* line_length = "";
* Pixel line length (width) for sensor mode.
*
* == Source Control Settings ==
*
* Gain factor used to convert fixed point integer to float
* Gain range [min_gain/gain_factor, max_gain/gain_factor]
* Gain step [step_gain/gain_factor is the smallest step that can be configured]
* Default gain [Default gain to be initialized for the control.
* use min_gain_val as default for optimal results]
* Framerate factor used to convert fixed point integer to float
* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
* Default Framerate [Default framerate to be initialized for the control.
* use max_framerate to get required performance]
* Exposure factor used to convert fixed point integer to float
* For convenience use 1 sec = 1000000us as conversion factor
* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
* Default Exposure Time [Default exposure to be initialized for the control.
* Set default exposure based on the default_framerate for optimal exposure settings]
*
* gain_factor = ""; (integer factor used for floating to fixed point conversion)
* min_gain_val = ""; (ceil to integer)
* max_gain_val = ""; (ceil to integer)
* step_gain_val = ""; (ceil to integer)
* default_gain = ""; (ceil to integer)
* Gain limits for mode
*
* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
* min_exp_time = ""; (ceil to integer)
* max_exp_time = ""; (ceil to integer)
* step_exp_time = ""; (ceil to integer)
* default_exp_time = ""; (ceil to integer)
* Exposure Time limits for mode (sec)
*
* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
* min_framerate = ""; (ceil to integer)
* max_framerate = ""; (ceil to integer)
* step_framerate = ""; (ceil to integer)
* default_framerate = ""; (ceil to integer)
* 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 { /* TP2854_MODE_1920x1080_30FPS */
mclk_khz = "27000";
num_lanes = "4";
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
active_w = "1920";
active_h = "1080";
pixel_t = "yuv_uyvy16";
readout_orientation = "0";
line_length = "2200";
inherent_gain = "1";
mclk_multiplier = "2.75";
pix_clk_hz = "742500000"; /*pixel clock = mclk * PLL Multipler*/ /*pixel_clk_hz = 2200 * 1125 * 30 = 742500000*/
gain_factor = "16";
framerate_factor = "30000000";
exposure_factor = "1000000";
min_gain_val = "0"; /* 1.00x */
max_gain_val = "170"; /* 10.66x */
step_gain_val = "1";
default_gain = "0"; /* 1.00x */
min_hdr_ratio = "1";
max_hdr_ratio = "1";
min_framerate = "30000000"; /* 30.0 fps */
max_framerate = "30000000"; /* 30.0 fps *//*max_framerate = pix_clk_hz / (line_length * minimum frame length)*/
step_framerate = "1";
default_framerate = "30000000"; /* 30.0 fps */
min_exp_time = "30"; /* us */
max_exp_time = "660000"; /* us *//*max_exp_time = (maximum coarse integration time) * line_length / pix_clk_hz * 1000000*/
step_exp_time = "1";
default_exp_time = "33334"; /* us */
embedded_metadata_height = "0";
};
mode1 { /* TP2854_MODE_1080x720_30FPS */
mclk_khz = "27000";
num_lanes = "4";
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
active_w = "1280";
active_h = "720";
pixel_t = "yuv_yuyv16";
readout_orientation = "0";
line_length = "1650";
inherent_gain = "1";
mclk_multiplier = "2.75";
pix_clk_hz = "742500000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16"; /* 1.00x */
max_gain_val = "170"; /* 10.66x */
step_gain_val = "1";
default_gain = "16"; /* 1.00x */
min_hdr_ratio = "1";
max_hdr_ratio = "1";
min_framerate = "30000000"; /* 30.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 = "0";
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
nc_tp2854_out1: endpoint {
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_in1>;
};
};
};
};
};
};
lens_tp2854@RBPCV2 {
min_focus_distance = "0.0";
hyper_focal = "0.0";
focal_length = "3.04";
f_number = "2.0";
aperture = "0.0";
};
};
/ {
tcp: 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 = <8>;
max_lane_speed = <3000000>;
min_bits_per_pixel = <8>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <270000>;
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 vendor.
*/
modules {
cam_module0: module0 {
badge = "porg_front_RBPCV2";
position = "front";
orientation = "1";
cam_module0_drivernode0: drivernode0 {
pcl_id = "v4l2_sensor";
devname = "tp2854 0-0044";
proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/nc_tp2854_a@44";
};
cam_module0_drivernode1: drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_tp2854@RBPCV2/";
};
};
cam_module1: module1 {
badge = "porg_rear_RBPCV2";
position = "rear";
orientation = "1";
cam_module1_drivernode0: drivernode0 {
pcl_id = "v4l2_sensor";
devname = "tp2854 1-0045";
proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/nc_tp2854_a@45";
};
cam_module1_drivernode1: drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_tp2854@RBPCV2/";
};
};
};
};
};
File: tegra210-porg-plugin-manager.dtsi
/ {
plugin-manager {
fragement@0 {
ids = ">=3448-0000-100", ">=3448-0002-100";
override@0 {
target = <&ina3221x>;
_overlay_ {
channel@0 {
ti,rail-name = "POM_5V_IN";
};
channel@1 {
ti,rail-name = "POM_5V_GPU";
};
};
};
};
fragment@1 {
ids = ">=3448-0000-101", ">=3448-0002-101";
override@0 {
target = <&max77620_sd0>;
_overlay_ {
regulator-min-microvolt = <600000>;
};
};
};
fragment@2 {
ids = "<3448-0000-200", "<3448-0002-200";
override@0 {
target = <&tegra_i2s4>;
_overlay_ {
regulator-supplies = "vdd-1v8-audio-hv", "vdd-1v8-audio-hv-bias";
vdd-1v8-audio-hv-supply = <&max77620_sd3>;
vdd-1v8-audio-hv-bias-supply = <&max77620_sd3>;
fsync-width = <15>;
status = "okay";
};
};
override@1 {
target = <&tegra_i2s4>;
_overlay_ {
status = "okay";
};
};
override@2 {
target = <&sound_card>;
_overlay_ {
nvidia,dai-link-1 {
cpu-dai = <&tegra_i2s4>;
cpu-dai-name = "I2S4";
};
};
};
};
fragment@3 {
ids = ">=3448-0002-100";
override@0 {
target = <&sdhci3>;
_overlay_ {
status = "okay";
};
};
override@1 {
target = <&sdhci0>;
_overlay_ {
status = "disabled";
};
};
};
fragment@4 {
ids = "3449-0000-000";
override@0 {
target = <&suspend_gpio>;
_overlay_ {
status = "disabled";
};
};
override@1 {
target = <&p3449_vdd_usb_hub_en>;
_overlay_ {
gpio = <&gpio TEGRA_GPIO(A, 6) 0>;
enable-active-low;
gpio-open-drain;
};
};
override@2 {
target = <&{/xusb_padctl@7009f000/ports/usb2-1}>;
_overlay_ {
vbus-supply = <&p3449_vdd_usb_hub_en>;
};
};
};
fragment@5 {
ids = "3449-0000-100", "3449-0000-200";
override@0 {
target = <&suspend_gpio>;
_overlay_ {
status = "disabled";
};
};
override@1 {
target = <&p3449_vdd_usb_hub_en>;
_overlay_ {
gpio = <&gpio TEGRA_GPIO(A, 6) 0>;
enable-active-high;
};
};
override@2 {
target = <&{/xusb_padctl@7009f000/ports/usb2-1}>;
_overlay_ {
vbus-supply = <&p3449_vdd_usb_hub_en>;
};
};
};
fragement@6 {
odm-data = "enable-tegra-wdt";
override@0 {
target = <&tegra_wdt>;
_overlay_ {
status = "okay";
};
};
};
fragement@7 {
odm-data = "enable-pmic-wdt";
override@0 {
target = <&spmic_wdt>;
_overlay_ {
status = "okay";
};
};
};
fragement@8 {
odm-data = "enable-pmic-wdt",
"enable-tegra-wdt";
override@0 {
target = <&soft_wdt>;
_overlay_ {
status = "disabled";
};
};
};
fragement@9 {
ids = ">=3448-0000-300", ">=3448-0002-300";
override@0 {
target = <&max77620_ldo6>;
_overlay_ {
status = "disabled";
};
};
override@1 {
target = <&sdhci2>;
_overlay_ {
keep-power-in-suspend;
non-removable;
};
};
/* tp2854 dual sensor module */
override@2 {
target = <&tp2854_single_cam0>;
_overlay_ {
status = "okay";
};
};
override@3 {
target = <&cam_module0>;
_overlay_ {
status = "okay";
badge = "porg_front_RBPCV2";
position = "front";
orientation = "1";
};
};
override@4 {
target = <&cam_module0_drivernode0>;
_overlay_ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "tp2854 6-0010";
proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tp2854@44/nc_tp2854_a@44";
};
};
override@5 {
target = <&cam_module0_drivernode1>;
_overlay_ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_tp2854@RBPCV2/";
};
};
override@6 {
target = <&tp2854_single_cam1>;
_overlay_ {
status = "okay";
};
};
override@7 {
target = <&cam_module1>;
_overlay_ {
status = "okay";
badge = "porg_front_RBPCV2";
position = "front";
orientation = "1";
};
};
override@8 {
target = <&cam_module1_drivernode0>;
_overlay_ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "tp2854 6-0010";
proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tp2854@45/nc_tp2854_a@45";
};
};
override@9 {
target = <&cam_module1_drivernode1>;
_overlay_ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_tp2854@RBPCV2/";
};
};
/* Enable VI ports */
override@10 {
target = <&vi_base>;
_overlay_ {
num-channels=<2>;
};
};
override@11 {
target = <&vi_port0>;
_overlay_ {
status = "okay";
};
};
override@12 {
target = <&vi_port1>;
_overlay_ {
status = "okay";
};
};
override@13 {
target = <&nc_tp2854_vi_in0>;
_overlay_ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_out0>;
};
};
override@14 {
target = <&nc_tp2854_vi_in1>;
_overlay_ {
status = "okay";
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_csi_out1>;
};
};
/* Enable CSI ports */
override@15 {
target = <&csi_base>;
_overlay_ {
num-channels=<2>;
};
};
override@16 {
target = <&csi_chan0>;
_overlay_ {
status = "okay";
};
};
override@17 {
target = <&csi_chan0_port0>;
_overlay_ {
status = "okay";
};
};
override@18 {
target = <&nc_tp2854_csi_in0>;
_overlay_ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_out0>;
};
};
override@19 {
target = <&csi_chan0_port1>;
_overlay_ {
status = "okay";
};
};
override@20 {
target = <&nc_tp2854_csi_out0>;
_overlay_ {
status = "okay";
remote-endpoint = <&nc_tp2854_vi_in0>;
};
};
override@21 {
target = <&csi_chan1>;
_overlay_ {
status = "okay";
};
};
override@22 {
target = <&csi_chan1_port0>;
_overlay_ {
status = "okay";
};
};
override@23 {
target = <&nc_tp2854_csi_in1>;
_overlay_ {
status = "okay";
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&nc_tp2854_out1>;
};
};
override@24 {
target = <&csi_chan1_port1>;
_overlay_ {
status = "okay";
};
};
override@25 {
target = <&nc_tp2854_csi_out1>;
_overlay_ {
status = "okay";
/*remote-endpoint = <&nc_tp2854_vi_in1>;*/
};
};
/* tegra-camera-platform settings */
override@26 {
target = <&tcp>;
_overlay_ {
num_csi_lanes = <8>;
max_lane_speed = <3000000>;
min_bits_per_pixel = <8>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <270000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
};
};
};
};
};
Thanks a lot.
B.R.
Roland