Hi,
I’m trying to interface Teledyne e2v 5Mpixel snappy sensor to a board
based on an emmc jetson nano module (single sensor instance, for the moment).
v4l2 seems ok:
root@localhost:~# v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=/tmp/frame.raw --stream-count=-1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 33.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 32.83 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 32.78 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 32.75 fps
....
v4l2-compliance says:
v4l2-compliance SHA : not available
Driver Info:
Driver name : tegra-video
Card type : vi-output, e2v 6-0010
Bus info : platform:54080000.vi:2
Driver version: 4.9.140
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Compliance test for device /dev/video0 (not using libv4l2):
Required ioctls:
test VIDIOC_QUERYCAP: OK
Allow for multiple opens:
test second video open: OK
test VIDIOC_QUERYCAP: OK
test VIDIOC_G/S_PRIORITY: OK
test for unlimited opens: OK
Debug ioctls:
test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
test VIDIOC_LOG_STATUS: OK
Input ioctls:
test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
test VIDIOC_ENUMAUDIO: OK (Not Supported)
test VIDIOC_G/S/ENUMINPUT: OK
test VIDIOC_G/S_AUDIO: OK (Not Supported)
Inputs: 1 Audio Inputs: 0 Tuners: 0
Output ioctls:
test VIDIOC_G/S_MODULATOR: OK (Not Supported)
test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
test VIDIOC_ENUMAUDOUT: OK (Not Supported)
test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
test VIDIOC_G/S_AUDOUT: OK (Not Supported)
Outputs: 0 Audio Outputs: 0 Modulators: 0
Input/Output configuration ioctls:
test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
test VIDIOC_G/S_EDID: OK (Not Supported)
Test input 0:
Control ioctls:
test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
test VIDIOC_QUERYCTRL: OK
test VIDIOC_G/S_CTRL: OK
test VIDIOC_G/S/TRY_EXT_CTRLS: OK
test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
Standard Controls: 1 Private Controls: 13
Format ioctls:
test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
fail: v4l2-test-formats.cpp(1184): ret && node->has_frmintervals
[bold]test VIDIOC_G/S_PARM: FAIL[/bold]
test VIDIOC_G_FBUF: OK (Not Supported)
test VIDIOC_G_FMT: OK
test VIDIOC_TRY_FMT: OK
test VIDIOC_S_FMT: OK
test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
test Cropping: OK (Not Supported)
test Composing: OK (Not Supported)
test Scaling: OK (Not Supported)
Codec ioctls:
test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
test VIDIOC_G_ENC_INDEX: OK (Not Supported)
test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
Buffer ioctls:
test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
test VIDIOC_EXPBUF: OK
Test input 0:
Total: 43, Succeeded: 42, Failed: 1, Warnings: 0
As I try to acquire from the sensor:
nvgstcapture-1.0 --camsrc=1 --mode=2 --cap-dev-node=0
nvargus-daemon (logs enabled) says:
=== NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections...=== nvgstcapture-1.0[16697]: Connection established (7F778C81D0)Thread 1 getting next capture
Thread 1 is waiting
Thread 2 getting next capture
Thread 2 is waiting
Thread 3 getting next capture
Thread 3 is waiting
Thread 4 getting next capture
Thread 4 is waiting
Thread 6 getting next capture
Thread 6 is waiting
Thread 5 getting next capture
Thread 5 is waiting
Thread 7 getting next capture
Thread 7 is waiting
Thread 8 getting next capture
Thread 8 is waiting
Thread 9 getting next capture
Thread 9 is waiting
Thread 10 getting next capture
Thread 10 is waiting
Thread 11 getting next capture
Thread 11 is waiting
Thread 12 getting next capture
Thread 12 is waiting
Starting services...
Worker thread IspHw statsComplete start
Worker thread IspHw frameComplete start
Worker thread IspHw statsComplete start
Worker thread IspHw frameComplete start
Worker thread CaptureScheduler checkFramePending start
Worker thread CaptureScheduler frameStart start
Worker thread V4L2CaptureScheduler checkCaptureComplete start
Worker thread V4L2CaptureScheduler issueCaptures start
Worker thread PS handleRequests start
getInstance: s_instance(0x7f707f0c90)
getInstance: s_instance(0x7f707f0c90)
subscribe: SensorType(gyroscope)
subscribe: create SensorType(gyroscope) sensor(0x7f707f3290)
subscribe: SensorType(accelerometer)
subscribe: create SensorType(accelerometer) sensor(0x7f707f8700)
AC plugin not present: dlopen "acplugin.so", acplugin.so: cannot open shared object file: No such file or directory
Services are started
NvPclSetHotplugCallback: ++++++++++++++++++++++
---- Imager: Calibration blob file handling supported in this build ----
NvPclHwGetModuleList: OFParserListModules Succeeded
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: porg_front_e2v
NvPclHwPrintModuleDefinition -- Position: 1
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_lens
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName:
NvPclHwPrintCameraSubModule -- HwCamSubModule[1].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[1].DevName: e2v-5M 6-0010
NvPclHwGetModuleList: OFParserListModules Succeeded
NvPclModuleListInitialize: NvPclModule list[0]: porg_front_e2v position1
NvPclModuleListInitialize: No plugable modules on platform
getHotplugMonitor: Getting hotplug monitor instance
initializeHotplug++
hotPlugfunc ++
addWatch: Watch added wd='1'
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules; No such file or directory
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
setHotplugCallback: Registered new callback client
NvPclSetHotplugCallback: ----------------------
NvPclOpen: ++++++++++++++++++++++
hotPlugfunc: reading from inotify FD, Thread waiting
NvPclStateControllerOpen: Found GUID 1 match at index[0]
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f707382a0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f70780da0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f704e3710
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f707418d0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f7084a850
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f7084a8e0
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/porg_front_e2v.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/porg_front_e2v.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/porg_front_e2v.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/porg_front_e2v.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/porg_front_e2v.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/porg_front_e2v.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/porg_front_e2v.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/porg_front_e2v.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/porg_front_e2v.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_lens)
NvPclCreateDriver: Found a Driver name match (v4l2_lens)
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_lens ++++++++++++++++++
initialize WARNING: No focuser object, allocating for lens
OFDPropertyCopyToLong: could not read property [maxslewrate]
loadLensMetadata: maxslewrate not set in driver
NvPclInitializeDrivers: NvOdmLensStub ------------------
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
(NvCamV4l2) Error ModuleNotPresent: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
(NvOdmDevice) Error ModuleNotPresent: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 106)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f707418d0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f7084a850
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f7084a8e0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f707382a0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f70780da0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f704e3710
NvPclStateControllerOpen: Failed ImagerGUID 1. (error 0xA000E)
NvPclStateControllerClose: Module porg_front_e2v closed
NvPclOpen: PCL Open Failed. Error: 0xf
NvPclClose: ++++++++++++++++++++++
NvPclClose: ----------------------
NvPclOpen: ----------------------
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 582)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 437)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 295)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 458)
Acquiring SCF Camera device source via index 0 has failed. === nvgstcapture-1.0[16697]: CameraProvider initialized (0x7f708470b0)
Here’s the “interesting” part of the devicetree:
/dts-v1/;
/memreserve/ 0x0000000080000000 0x0000000000020000;
/ {
compatible = "nvidia,jetson-nano\0nvidia,tegra210";
interrupt-parent = <0x01>;
#address-cells = <0x02>;
#size-cells = <0x02>;
nvidia,dtbbuildtime = "Feb 3 2020\017:49:31";
nvidia,boardids = "3448";
nvidia,proc-boardid = "3448";
nvidia,pmu-boardid = "3448";
nvidia,fastboot-usb-pid = <0xb442>;
model = "Vigilate A2 5M";
nvidia,dtsfilename = "../arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00-vigilate-a2-5M.dts";
.....
host1x {
compatible = "nvidia,tegra210-host1x\0simple-bus";
power-domains = <0x23>;
wakeup-capable;
reg = <0x00 0x50000000 0x00 0x34000>;
interrupts = <0x00 0x41 0x04 0x00 0x43 0x04>;
iommus = <0x2b 0x06>;
#address-cells = <0x02>;
#size-cells = <0x02>;
status = "okay";
ranges;
clocks = <0x21 0x1f2 0x21 0x77>;
clock-names = "host1x\0actmon";
resets = <0x21 0x1c>;
nvidia,ch-base = <0x00>;
nvidia,nb-channels = <0x0c>;
nvidia,nb-hw-pts = <0xc0>;
nvidia,pts-base = <0x00>;
nvidia,nb-pts = <0xc0>;
assigned-clocks = <0x21 0x7a 0x21 0x92 0x21 0x91 0x21 0x90 0x21 0xd0 0x21 0x166 0x21 0xe4 0x21 0x142 0x21 0x03>;
assigned-clock-parents = <0x21 0xf3 0x21 0xf3 0x21 0xf3 0x21 0xf3 0x21 0xf3 0x21 0x7a 0x21 0xed 0x21 0xed 0x21 0x142>;
assigned-clock-rates = <0x16e3600 0x6146580 0x6146580 0x6146580 0x6146580 0x16e3600 0x18519600 0x18519600 0x00>;
linux,phandle = <0x78>;
phandle = <0x78>;
vi {
compatible = "nvidia,tegra210-vi\0simple-bus";
power-domains = <0x59>;
reg = <0x00 0x54080000 0x00 0x40000>;
interrupts = <0x00 0x45 0x04>;
iommus = <0x2b 0x12>;
status = "okay";
clocks = <0x21 0x210 0x21 0x34 0x21 0x90 0x21 0x91 0x21 0x92 0x21 0xd0 0x21 0x51 0x21 0xfa 0x21 0x133>;
clock-names = "vi\0csi\0cilab\0cilcd\0cile\0vii2c\0i2cslow\0pll_d\0pll_d_dsi_out";
resets = <0x21 0x14>;
reset-names = "vi";
#address-cells = <0x01>;
#size-cells = <0x00>;
avdd_dsi_csi-supply = <0x36>;
num-channels = <0x01>;
linux,phandle = <0xbd>;
phandle = <0xbd>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
linux,phandle = <0xbe>;
phandle = <0xbe>;
endpoint {
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x5a>;
linux,phandle = <0x75>;
phandle = <0x75>;
};
};
port@1 {
reg = <0x01>;
linux,phandle = <0xcd>;
phandle = <0xcd>;
endpoint {
port-index = <0x04>;
bus-width = <0x02>;
remote-endpoint = <0x5b>;
linux,phandle = <0x77>;
phandle = <0x77>;
};
};
};
};
vi-bypass {
compatible = "nvidia,tegra210-vi-bypass";
status = "okay";
};
.....
i2c@546c0000 {
#address-cells = <0x01>;
#size-cells = <0x00>;
compatible = "nvidia,tegra210-vii2c";
reg = <0x00 0x546c0000 0x00 0x34000>;
iommus = <0x2b 0x12>;
interrupts = <0x00 0x11 0x04>;
scl-gpio = <0x56 0x92 0x00>;
sda-gpio = <0x56 0x93 0x00>;
status = "okay";
clocks = <0x21 0xd0 0x21 0x51 0x21 0x1c>;
clock-names = "vii2c\0i2cslow\0host1x";
resets = <0x21 0xd0>;
reset-names = "vii2c";
clock-frequency = <0x61a80>;
bus-pullup-supply = <0x42>;
avdd_dsi_csi-supply = <0x36>;
linux,phandle = <0xa8>;
phandle = <0xa8>;
rbpcv2_imx219_a@10 {
compatible = "nvidia,imx219";
reg = <0x10>;
devnode = "video0";
physical_w = "3.680";
physical_h = "2.760";
sensor_model = "imx219";
use_sensor_mode_id = "true";
status = "disabled";
reset-gpios = <0x56 0x97 0x00>;
linux,phandle = <0xb9>;
phandle = <0xb9>;
mode0 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "3264";
active_h = "2464";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "21000000";
step_framerate = [31 00];
default_framerate = "21000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode1 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "3264";
active_h = "1848";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "28000000";
step_framerate = [31 00];
default_framerate = "28000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode2 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "1920";
active_h = "1080";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "30000000";
step_framerate = [31 00];
default_framerate = "30000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode3 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "1280";
active_h = "720";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "60000000";
step_framerate = [31 00];
default_framerate = "60000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode4 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_a";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "1280";
active_h = "720";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "169600000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "120000000";
step_framerate = [31 00];
default_framerate = "120000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
endpoint {
port-index = <0x00>;
bus-width = <0x02>;
remote-endpoint = <0x73>;
linux,phandle = <0xc2>;
phandle = <0xc2>;
};
};
};
};
ina3221x@40 {
compatible = "ti,ina3221x";
reg = <0x40>;
status = "okay";
ti,trigger-config = <0x7003>;
ti,continuous-config = <0x7607>;
ti,enable-forced-continuous;
#io-channel-cells = <0x01>;
#address-cells = <0x01>;
#size-cells = <0x00>;
linux,phandle = <0xad>;
phandle = <0xad>;
channel@0 {
reg = <0x00>;
ti,rail-name = "POM_5V_GPU";
ti,shunt-resistor-mohm = <0x05>;
};
channel@1 {
reg = <0x01>;
ti,rail-name = "POM_5V_IN";
ti,shunt-resistor-mohm = <0x05>;
};
channel@2 {
reg = <0x02>;
ti,rail-name = "POM_5V_CPU";
ti,shunt-resistor-mohm = <0x05>;
};
};
rbpcv2_e2v_a@10 {
compatible = "teledyne,e2v-5M";
reg = <0x10>;
status = "okay";
devnode = "video0";
physical_w = "7.24";
physical_h = "5.49";
sensor_model = "e2v-5M";
use_sensor_mode_id = "false";
reset-gpios = <0x56 0x97 0x01>;
linux,phandle = <0x116>;
phandle = <0x116>;
mode0 {
mclk_khz = "800000";
num_lanes = [34 00];
tegra_sinterface = "serial_e";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "2560";
active_h = "1936";
pixel_t = "bayer_rggb";
readout_orientation = [30 00];
line_length = "2600";
inherent_gain = [31 00];
mclk_multiplier = "1.00";
pix_clk_hz = "50000000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = [32 00];
max_gain_val = "14";
step_gain_val = [31 00];
default_gain = [38 00];
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = [31 00];
default_framerate = "60000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode1 {
mclk_khz = "800000";
num_lanes = [34 00];
tegra_sinterface = "serial_e";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "2560";
active_h = "1936";
pixel_t = "bayer_rggb";
readout_orientation = [30 00];
line_length = "2600";
inherent_gain = [31 00];
mclk_multiplier = "1.00";
pix_clk_hz = "50000000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = [32 00];
max_gain_val = "14";
step_gain_val = [31 00];
default_gain = [38 00];
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = [31 00];
default_framerate = "60000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode2 {
mclk_khz = "1200000";
num_lanes = [34 00];
tegra_sinterface = "serial_e";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "2560";
active_h = "1936";
pixel_t = "bayer_rggb";
readout_orientation = [30 00];
line_length = "2600";
inherent_gain = [31 00];
mclk_multiplier = [31 00];
pix_clk_hz = "50000000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = [32 00];
max_gain_val = "14";
step_gain_val = [31 00];
default_gain = [38 00];
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "60000000";
max_framerate = "60000000";
step_framerate = [31 00];
default_framerate = "60000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
endpoint {
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x73>;
linux,phandle = <0x74>;
phandle = <0x74>;
};
};
};
};
};
nvcsi {
num-channels = <0x01>;
#address-cells = <0x01>;
#size-cells = <0x00>;
linux,phandle = <0xbf>;
phandle = <0xbf>;
channel@0 {
reg = <0x00>;
linux,phandle = <0xc0>;
phandle = <0xc0>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
linux,phandle = <0xc1>;
phandle = <0xc1>;
endpoint@0 {
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x74>;
linux,phandle = <0x73>;
phandle = <0x73>;
};
};
port@1 {
reg = <0x01>;
linux,phandle = <0xc3>;
phandle = <0xc3>;
endpoint@1 {
remote-endpoint = <0x75>;
linux,phandle = <0x5a>;
phandle = <0x5a>;
};
};
};
};
channel@1 {
reg = <0x01>;
linux,phandle = <0xcf>;
phandle = <0xcf>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@2 {
reg = <0x00>;
linux,phandle = <0xd0>;
phandle = <0xd0>;
endpoint@2 {
port-index = <0x04>;
bus-width = <0x02>;
remote-endpoint = <0x76>;
linux,phandle = <0xa9>;
phandle = <0xa9>;
};
};
port@3 {
reg = <0x01>;
linux,phandle = <0xd1>;
phandle = <0xd1>;
endpoint@3 {
remote-endpoint = <0x77>;
linux,phandle = <0x5b>;
phandle = <0x5b>;
};
};
};
};
};
};
.....
chosen {
nvidia,tegra-porg-sku;
stdout-path = "/serial@70006000";
nvidia,tegra-always-on-personality;
bootargs = "kmemleak=on earlycon=uart8250,mmio32,0x70006000";
nvidia,bootloader-xusb-enable;
nvidia,bootloader-vbus-enable = <0x01>;
nvidia,fastboot_without_usb;
nvidia,gpu-disable-power-saving;
board-has-eeprom;
firmware-blob-partition = "RP4";
verified-boot {
poweroff-on-red-state;
};
};
.....
};
I’ve been stuck on this for some days now, any hints ?
Thanks a lot in advance for your help !
Regards
Davide Ciminaghi