Hi, we are using Jetson Nano with RX(TP2854) to capture the images. We use TP2854 to connect Camera 1(0,1 port) and Camera 2(2,3 port). Camera 1 works normally, but camera 2 always gets timeout message. Did we miss anything or is there any other method we could try? We compared the MIPI signal waveform channel 0 and channel 1, and they are both similar.
The attachments are waveform images. The Yellow one is Channel 0, and the green one is Channel 1 for your information.
Version: L4T R32.2
Command: (Channel 0 works, but Channel 1 not work)
channel0: gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvoverlaysink
channel1: gst-launch-1.0 -v v4l2src device=/dev/video1 ! 'video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvoverlaysink
Here is dmesg for your reference.
root@tegra-ubuntu:~# dmesg
[ 8.793599] hub 2-0:1.0: 4 ports detected
[ 8.894557] usb usb1: usb_suspend_both: status 0
[ 8.926110] eth0: 0xffffff800a4bd000, 00:04:4b:e5:dd:a3, IRQ 403
[ 8.980738] NFSD: starting 90-second grace period (net ffffff8009fc0140)
[ 12.083334] r8168: eth0: link up
[ 12.959127] tegra-xusb 70090000.xusb: Upgrade port 0 to USB3.0
[ 12.959132] tegra-xusb 70090000.xusb: Upgrade port 1 to USB3.0
[ 13.060312] usb usb2: usb_suspend_both: status 0
[ 14.963018] tegra-xusb 70090000.xusb: entering ELPG
[ 14.964597] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 1, speed 0
[ 14.965284] tegra-pmc: PMC tegra_pmc_utmi_phy_enable_sleepwalk : port 2, speed 0
[ 14.967828] tegra-xusb 70090000.xusb: entering ELPG done
[ 66.126188] random: crng init done
[ 66.130056] random: 7 urandom warning(s) missed due to ratelimiting
[ 136.671852] tp2854 6-0044: tegracam sensor driver:tp2854_v2.0.6
[ 136.695703] vi 54080000.vi: subdev tp2854 6-0044 bound
[ 136.700254] video4linux video0: disable override control
[ 136.702757] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 136.710315] tegra_mipi_cal 700e3000.mipical: tegra_mipi_bias_pad_enable
[ 136.710560] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2 = 0
[ 136.716814] tp2854 6-0044: tp2854_write_reg: i2c write, 0x3 = a
[ 136.723006] tp2854 6-0044: tp2854_write_reg: i2c write, 0x7 = c0
[ 136.729501] tp2854 6-0044: tp2854_write_reg: i2c write, 0xb = c0
[ 136.734778] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 136.739966] tp2854 6-0044: tp2854_write_reg: i2c write, 0x6 = b2
[ 136.740122] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 0
[ 136.740277] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 136.745296] vi 54080000.vi: Calibrate csi port 0
[ 136.745299] vi 54080000.vi: Calibrate csi numlanes 4
[ 136.745585] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 136.750752] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 2
[ 136.750907] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 136.778855] tp2854 6-0044: tp2854_write_reg: i2c write, 0xc = 3
[ 136.785198] tp2854 6-0044: tp2854_write_reg: i2c write, 0xd = 52
[ 136.791569] tp2854 6-0044: tp2854_write_reg: i2c write, 0x15 = 3
[ 136.797817] tp2854 6-0044: tp2854_write_reg: i2c write, 0x16 = d2
[ 136.804281] tp2854 6-0044: tp2854_write_reg: i2c write, 0x17 = 80
[ 136.810600] tp2854 6-0044: tp2854_write_reg: i2c write, 0x18 = 29
[ 136.816910] tp2854 6-0044: tp2854_write_reg: i2c write, 0x19 = 38
[ 136.823327] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1a = 47
[ 136.829634] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1c = 8
[ 136.835849] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1d = 98
[ 136.842270] tp2854 6-0044: tp2854_write_reg: i2c write, 0x20 = 30
[ 136.848634] tp2854 6-0044: tp2854_write_reg: i2c write, 0x21 = 84
[ 136.855048] tp2854 6-0044: tp2854_write_reg: i2c write, 0x22 = 36
[ 136.861456] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 3c
[ 136.867753] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2b = 60
[ 136.874255] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2c = a
[ 136.880479] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2d = 30
[ 136.887052] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2e = 70
[ 136.893357] tp2854 6-0044: tp2854_write_reg: i2c write, 0x30 = 48
[ 136.899663] tp2854 6-0044: tp2854_write_reg: i2c write, 0x31 = bb
[ 136.906083] tp2854 6-0044: tp2854_write_reg: i2c write, 0x32 = 2e
[ 136.912408] tp2854 6-0044: tp2854_write_reg: i2c write, 0x33 = 90
[ 136.918783] tp2854 6-0044: tp2854_write_reg: i2c write, 0x35 = 5
[ 136.926188] tp2854 6-0044: tp2854_write_reg: i2c write, 0x38 = 0
[ 136.932449] tp2854 6-0044: tp2854_write_reg: i2c write, 0x39 = 1c
[ 136.938886] tp2854 6-0044: tp2854_write_reg: i2c write, 0x4e = 0
[ 136.945803] tp2854 6-0044: tp2854_write_reg: i2c write, 0x4f = 0
[ 136.952026] tp2854 6-0044: tp2854_write_reg: i2c write, 0xf5 = f0
[ 136.958934] tp2854 6-0044: tp2854_write_reg: i2c write, 0xfa = 8
[ 136.966754] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 136.974147] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1 = f8
[ 136.981679] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2 = 1
[ 136.988206] tp2854 6-0044: tp2854_write_reg: i2c write, 0x8 = f
[ 136.994811] tp2854 6-0044: tp2854_write_reg: i2c write, 0x13 = 4
[ 137.002700] tp2854 6-0044: tp2854_write_reg: i2c write, 0x14 = 4
[ 137.010821] tp2854 6-0044: tp2854_write_reg: i2c write, 0x15 = 0
[ 137.017335] tp2854 6-0044: tp2854_write_reg: i2c write, 0x20 = 44
[ 137.023997] tp2854 6-0044: tp2854_write_reg: i2c write, 0x34 = 1b
[ 137.031112] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 137.038820] tp2854 6-0044: tp2854_write_reg: i2c write, 0x17 = 80
[ 137.045953] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1a = 47
[ 137.054977] tp2854 6-0044: tp2854_write_reg: i2c write, 0x19 = 38
[ 137.061863] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1c = 8
[ 137.071016] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1d = 98
[ 137.078968] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2 = c0
[ 137.086973] tp2854 6-0044: tp2854_write_reg: i2c write, 0xd = 72
[ 137.095153] tp2854 6-0044: tp2854_write_reg: i2c write, 0x14 = 10
[ 137.103198] tp2854 6-0044: tp2854_write_reg: i2c write, 0xf4 = 20
[ 137.111257] tp2854 6-0044: tp2854_write_reg: i2c write, 0x28 = 0
[ 137.119209] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2c = 4a
[ 137.126654] tp2854 6-0044: tp2854_write_reg: i2c write, 0x6 = 32
[ 137.134842] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 137.142516] tp2854 6-0044: tp2854_write_reg: i2c write, 0x1 = f8
[ 137.149439] tp2854 6-0044: tp2854_write_reg: i2c write, 0x2 = 1
[ 137.156212] tp2854 6-0044: tp2854_write_reg: i2c write, 0x8 = f
[ 137.163316] tp2854 6-0044: tp2854_write_reg: i2c write, 0x13 = 4
[ 137.171109] tp2854 6-0044: tp2854_write_reg: i2c write, 0x14 = 56
[ 137.179604] tp2854 6-0044: tp2854_write_reg: i2c write, 0x15 = a
[ 137.186402] tp2854 6-0044: tp2854_write_reg: i2c write, 0x20 = 14
[ 137.193218] tp2854 6-0044: tp2854_write_reg: i2c write, 0x34 = 1b
[ 137.199772] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 137.207611] tp2854 6-0045: tegracam sensor driver:tp2854_v2.0.6
[ 137.230926] vi 54080000.vi: subdev tp2854 6-0045 bound
[ 137.232006] video4linux video1: disable override control
[ 137.232459] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 137.240080] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2 = 0
[ 137.246631] tp2854 6-0045: tp2854_write_reg: i2c write, 0x3 = a
[ 137.253182] tp2854 6-0045: tp2854_write_reg: i2c write, 0x7 = c0
[ 137.259789] tp2854 6-0045: tp2854_write_reg: i2c write, 0xb = c0
[ 137.266398] tp2854 6-0045: tp2854_write_reg: i2c write, 0xc = 3
[ 137.272988] tp2854 6-0045: tp2854_write_reg: i2c write, 0xd = 52
[ 137.279496] tp2854 6-0045: tp2854_write_reg: i2c write, 0x15 = 3
[ 137.286045] tp2854 6-0045: tp2854_write_reg: i2c write, 0x16 = d2
[ 137.292996] tp2854 6-0045: tp2854_write_reg: i2c write, 0x17 = 80
[ 137.299773] tp2854 6-0045: tp2854_write_reg: i2c write, 0x18 = 29
[ 137.306650] tp2854 6-0045: tp2854_write_reg: i2c write, 0x19 = 38
[ 137.313387] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1a = 47
[ 137.320256] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1c = 8
[ 137.326818] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1d = 98
[ 137.333435] tp2854 6-0045: tp2854_write_reg: i2c write, 0x20 = 30
[ 137.340123] tp2854 6-0045: tp2854_write_reg: i2c write, 0x21 = 84
[ 137.346855] tp2854 6-0045: tp2854_write_reg: i2c write, 0x22 = 36
[ 137.353513] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 3c
[ 137.360161] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2b = 60
[ 137.366745] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2c = a
[ 137.374386] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2d = 30
[ 137.381038] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2e = 70
[ 137.387620] tp2854 6-0045: tp2854_write_reg: i2c write, 0x30 = 48
[ 137.394361] tp2854 6-0045: tp2854_write_reg: i2c write, 0x31 = bb
[ 137.400991] tp2854 6-0045: tp2854_write_reg: i2c write, 0x32 = 2e
[ 137.407677] tp2854 6-0045: tp2854_write_reg: i2c write, 0x33 = 90
[ 137.414243] tp2854 6-0045: tp2854_write_reg: i2c write, 0x35 = 5
[ 137.421847] tp2854 6-0045: tp2854_write_reg: i2c write, 0x38 = 0
[ 137.428376] tp2854 6-0045: tp2854_write_reg: i2c write, 0x39 = 1c
[ 137.435634] tp2854 6-0045: tp2854_write_reg: i2c write, 0x4e = 0
[ 137.442302] tp2854 6-0045: tp2854_write_reg: i2c write, 0x4f = 0
[ 137.449727] tp2854 6-0045: tp2854_write_reg: i2c write, 0xf5 = f0
[ 137.456505] tp2854 6-0045: tp2854_write_reg: i2c write, 0xfa = 8
[ 137.462969] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 137.469647] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1 = f8
[ 137.476227] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2 = 1
[ 137.482749] tp2854 6-0045: tp2854_write_reg: i2c write, 0x8 = f
[ 137.489436] tp2854 6-0045: tp2854_write_reg: i2c write, 0x13 = 4
[ 137.495934] tp2854 6-0045: tp2854_write_reg: i2c write, 0x14 = 4
[ 137.502398] tp2854 6-0045: tp2854_write_reg: i2c write, 0x15 = 0
[ 137.509200] tp2854 6-0045: tp2854_write_reg: i2c write, 0x20 = 44
[ 137.515775] tp2854 6-0045: tp2854_write_reg: i2c write, 0x34 = 1b
[ 137.523233] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 137.530456] tp2854 6-0045: tp2854_write_reg: i2c write, 0x17 = 80
[ 137.537775] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1a = 47
[ 137.544401] tp2854 6-0045: tp2854_write_reg: i2c write, 0x19 = 38
[ 137.551626] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1c = 8
[ 137.559134] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1d = 98
[ 137.565763] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2 = c0
[ 137.572339] tp2854 6-0045: tp2854_write_reg: i2c write, 0xd = 72
[ 137.579458] tp2854 6-0045: tp2854_write_reg: i2c write, 0x14 = 10
[ 137.586329] tp2854 6-0045: tp2854_write_reg: i2c write, 0xf4 = 20
[ 137.593116] tp2854 6-0045: tp2854_write_reg: i2c write, 0x28 = 0
[ 137.599672] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2c = 4a
[ 137.606444] tp2854 6-0045: tp2854_write_reg: i2c write, 0x6 = 32
[ 137.612937] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 137.619409] tp2854 6-0045: tp2854_write_reg: i2c write, 0x1 = f8
[ 137.626138] tp2854 6-0045: tp2854_write_reg: i2c write, 0x2 = 1
[ 137.633916] tp2854 6-0045: tp2854_write_reg: i2c write, 0x8 = f
[ 137.640447] tp2854 6-0045: tp2854_write_reg: i2c write, 0x13 = 4
[ 137.646931] tp2854 6-0045: tp2854_write_reg: i2c write, 0x14 = 56
[ 137.654981] tp2854 6-0045: tp2854_write_reg: i2c write, 0x15 = a
[ 137.662362] tp2854 6-0045: tp2854_write_reg: i2c write, 0x20 = 14
[ 137.669946] tp2854 6-0045: tp2854_write_reg: i2c write, 0x34 = 1b
[ 137.676685] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 137.768343] tegra_mipi_cal 700e3000.mipical: tegra_mipi_bias_pad_disable
[ 166.915891] tegra_mipi_cal 700e3000.mipical: tegra_mipi_bias_pad_enable
[ 166.940343] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 166.953026] tp2854 6-0044: tp2854_write_reg: i2c write, 0x6 = b2
[ 166.960042] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 0
[ 166.967948] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 166.979919] vi 54080000.vi: Calibrate csi port 0
[ 166.979925] vi 54080000.vi: Calibrate csi numlanes 4
[ 166.980290] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 8
[ 166.994352] tp2854 6-0044: tp2854_write_reg: i2c write, 0x23 = 2
[ 167.002654] tp2854 6-0044: tp2854_write_reg: i2c write, 0x40 = 4
[ 167.039541] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 167.053210] tp2854 6-0045: tp2854_write_reg: i2c write, 0x6 = b2
[ 167.062917] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 0
[ 167.070695] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 167.083577] vi 54080000.vi: Calibrate csi port 2
[ 167.083588] vi 54080000.vi: Calibrate csi numlanes 4
[ 167.084519] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 167.098629] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 2
[ 167.106908] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 167.651015] vi 54080000.vi: cil_settingtime was autocalculated
[ 167.651020] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 167.651243] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 167.666077] tp2854 6-0045: tp2854_write_reg: i2c write, 0x6 = b2
[ 167.675290] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 0
[ 167.684754] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 167.900679] video4linux video1: frame start syncpt timeout! index:0
[ 167.907336] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 167.907342] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 167.907346] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 167.907350] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040041
[ 167.907401] vi 54080000.vi: cil_settingtime was autocalculated
[ 167.907405] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 167.907417] video4linux video1: free_ring_buffers: capture init latency is 256 ms
[ 168.108657] video4linux video1: frame start syncpt timeout! index:0
[ 168.115318] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 168.115324] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 168.115328] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 168.115332] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 168.115383] vi 54080000.vi: cil_settingtime was autocalculated
[ 168.115387] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 168.316654] video4linux video1: frame start syncpt timeout! index:0
[ 168.323307] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 168.323312] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 168.323316] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 168.323320] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 168.323371] vi 54080000.vi: cil_settingtime was autocalculated
[ 168.323376] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 168.524623] video4linux video1: frame start syncpt timeout! index:0
[ 168.531276] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 168.531282] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 168.531286] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 168.531290] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 168.531340] vi 54080000.vi: cil_settingtime was autocalculated
[ 168.531345] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 168.732607] video4linux video1: frame start syncpt timeout! index:0
[ 168.739257] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 168.739262] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 168.739266] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 168.739270] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 168.739321] vi 54080000.vi: cil_settingtime was autocalculated
[ 168.739325] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 168.940592] video4linux video1: frame start syncpt timeout! index:0
[ 168.947239] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 168.947244] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 168.947249] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 168.947253] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 168.947303] vi 54080000.vi: cil_settingtime was autocalculated
[ 168.947307] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 169.148570] video4linux video1: frame start syncpt timeout! index:0
[ 169.155217] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 169.155222] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 169.155227] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 169.155231] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 169.155281] vi 54080000.vi: cil_settingtime was autocalculated
[ 169.155285] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 169.356558] video4linux video1: frame start syncpt timeout! index:0
[ 169.363215] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 169.363221] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 169.363225] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 169.363229] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 169.363292] vi 54080000.vi: cil_settingtime was autocalculated
[ 169.363298] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 169.564537] video4linux video1: frame start syncpt timeout! index:0
[ 169.571299] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 169.571306] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 169.571310] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 169.571314] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 169.571367] vi 54080000.vi: cil_settingtime was autocalculated
[ 169.571372] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 169.772469] video4linux video1: frame start syncpt timeout! index:0
[ 169.779114] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 169.779119] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 169.779124] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 169.779128] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 169.779180] vi 54080000.vi: cil_settingtime was autocalculated
[ 169.779184] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 169.980454] video4linux video1: frame start syncpt timeout! index:0
[ 169.987205] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 169.987211] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 169.987215] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 169.987219] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 169.987271] vi 54080000.vi: cil_settingtime was autocalculated
[ 169.987275] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 170.188433] video4linux video1: frame start syncpt timeout! index:0
[ 170.195071] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 170.195076] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 170.195080] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 170.195085] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 170.195136] vi 54080000.vi: cil_settingtime was autocalculated
[ 170.195141] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 170.396485] video4linux video1: frame start syncpt timeout! index:0
[ 170.403209] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 170.403215] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 170.403219] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 170.403223] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 170.403273] vi 54080000.vi: cil_settingtime was autocalculated
[ 170.403277] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 170.604399] video4linux video1: frame start syncpt timeout! index:0
[ 170.611031] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 170.611036] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 170.611040] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 170.611044] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 170.611096] vi 54080000.vi: cil_settingtime was autocalculated
[ 170.611100] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 170.812441] video4linux video1: frame start syncpt timeout! index:0
[ 170.819080] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 170.819085] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 170.819090] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 170.819094] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 170.819147] vi 54080000.vi: cil_settingtime was autocalculated
[ 170.819151] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 171.020371] video4linux video1: frame start syncpt timeout! index:0
[ 171.027004] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 171.027010] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 171.027014] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 171.027018] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 171.027071] vi 54080000.vi: cil_settingtime was autocalculated
[ 171.027075] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 171.228401] video4linux video1: frame start syncpt timeout! index:0
[ 171.235034] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 171.235039] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 171.235043] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 171.235048] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 171.235100] vi 54080000.vi: cil_settingtime was autocalculated
[ 171.235104] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 171.436353] video4linux video1: frame start syncpt timeout! index:0
[ 171.443043] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 171.443049] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 171.443053] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 171.443057] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 171.443108] vi 54080000.vi: cil_settingtime was autocalculated
[ 171.443112] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 171.644360] video4linux video1: frame start syncpt timeout! index:0
[ 171.650987] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 171.650992] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 171.650997] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 171.651001] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 171.651052] vi 54080000.vi: cil_settingtime was autocalculated
[ 171.651056] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 171.852351] video4linux video1: frame start syncpt timeout! index:0
[ 171.859077] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 171.859082] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 171.859086] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 171.859090] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 171.859142] vi 54080000.vi: cil_settingtime was autocalculated
[ 171.859146] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 172.060338] video4linux video1: frame start syncpt timeout! index:0
[ 172.066952] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 172.066957] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 172.066961] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 172.066965] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 172.067016] vi 54080000.vi: cil_settingtime was autocalculated
[ 172.067021] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 172.268321] video4linux video1: frame start syncpt timeout! index:0
[ 172.275040] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 172.275045] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 172.275049] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 172.275053] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 172.275104] vi 54080000.vi: cil_settingtime was autocalculated
[ 172.275108] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 172.476305] video4linux video1: frame start syncpt timeout! index:0
[ 172.482918] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 172.482922] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 172.482926] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 172.482930] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 172.482981] vi 54080000.vi: cil_settingtime was autocalculated
[ 172.482985] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 172.684292] video4linux video1: frame start syncpt timeout! index:0
[ 172.691020] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 172.691025] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 172.691030] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 172.691034] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 172.691087] vi 54080000.vi: cil_settingtime was autocalculated
[ 172.691091] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 172.892278] video4linux video1: frame start syncpt timeout! index:0
[ 172.898889] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 172.898895] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 172.898899] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 172.898903] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 172.898955] vi 54080000.vi: cil_settingtime was autocalculated
[ 172.898959] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 173.100261] video4linux video1: frame start syncpt timeout! index:0
[ 173.106980] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 173.106985] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 173.106989] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 173.106993] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 173.107045] vi 54080000.vi: cil_settingtime was autocalculated
[ 173.107049] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 173.308243] video4linux video1: frame start syncpt timeout! index:0
[ 173.314847] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 173.314852] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 173.314856] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 173.314860] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 173.314911] vi 54080000.vi: cil_settingtime was autocalculated
[ 173.314915] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 173.516186] video4linux video1: frame start syncpt timeout! index:0
[ 173.522901] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 173.522907] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 173.522911] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 173.522915] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 173.522966] vi 54080000.vi: cil_settingtime was autocalculated
[ 173.522970] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 173.724212] video4linux video1: frame start syncpt timeout! index:0
[ 173.730813] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 173.730819] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 173.730823] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 173.730827] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 173.730878] vi 54080000.vi: cil_settingtime was autocalculated
[ 173.730882] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 173.932200] video4linux video1: frame start syncpt timeout! index:0
[ 173.938909] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 173.938914] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 173.938918] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 173.938922] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 173.938974] vi 54080000.vi: cil_settingtime was autocalculated
[ 173.938978] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.140181] video4linux video1: frame start syncpt timeout! index:0
[ 174.146781] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 174.146785] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 174.146790] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 174.146794] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 174.146846] vi 54080000.vi: cil_settingtime was autocalculated
[ 174.146850] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.348134] video4linux video1: frame start syncpt timeout! index:0
[ 174.354838] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 174.354843] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 174.354847] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 174.354851] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 174.354901] vi 54080000.vi: cil_settingtime was autocalculated
[ 174.354905] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.556106] video4linux video1: frame start syncpt timeout! index:0
[ 174.562707] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 174.562712] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 174.562716] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 174.562720] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 174.562772] vi 54080000.vi: cil_settingtime was autocalculateds
[ 174.562776] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.764092] video4linux video1: frame start syncpt timeout! index:0
[ 174.770791] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 174.770796] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 174.770800] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 174.770804] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 174.770856] vi 54080000.vi: cil_settingtime was autocalculated
[ 174.770860] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.972078] video4linux video1: frame start syncpt timeout! index:0
[ 174.978673] video4linux video1: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[ 174.978678] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
[ 174.978682] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000010
[ 174.978687] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00040040
[ 174.978741] vi 54080000.vi: cil_settingtime was autocalculated
[ 174.978745] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
[ 174.979035] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 8
[ 174.990626] tp2854 6-0045: tp2854_write_reg: i2c write, 0x23 = 2
[ 174.997228] tp2854 6-0045: tp2854_write_reg: i2c write, 0x40 = 4
[ 175.524795] tegra_mipi_cal 700e3000.mipical: tegra_mipi_bias_pad_disable
root@tegra-ubuntu:~#
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