Working on AGX ORIN with JP6.0-DP for MIPI camera integration.
# cat /etc/nv_boot_control.conf
TNSPEC 3701-500-0000-L.0-1-1-jetson-agx-orin-devkit-
COMPATIBLE_SPEC 3701-300-0000--1--jetson-agx-orin-devkit-
TEGRA_BOOT_STORAGE mmcblk3
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
# cat /etc/nv_tegra_release
# R36 (release), REVISION: 2.0, GCID: 34956989, BOARD: generic, EABI: aarch64, DATE: Thu Nov 30 19:03:58 UTC 2023
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia
We are working in porting of RealSense D457 MIPI camera from JP5.1.2 to JP6.0.
So far - device can initialize and we have i2c communication.
Unfortunately - video nodes are not created by tegra vi5 driver.
# ls /dev/vid*
ls: cannot access '/dev/vid*': No such file or directory
The device-tree updated accordingly to example templates and all ports are enabled.
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/nvcsi\@15a00000/channel\@0/ports/port\@0/endpoint\@0/status
disabled
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/nvcsi\@15a00000/channel\@0/ports/port\@0/status
disabled
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/nvcsi\@15a00000/channel\@0/ports/status
okay
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/nvcsi\@15a00000/channel\@0/status
disabled
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/nvcsi\@15a00000/status
okay
# cat /sys/firmware/devicetree/base/bus\@0/host1x\@13e00000/status
okay
Looks like endpoints disabled - kernel logs from tegra-capture-vi:
[ 9.926319] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse max9295/max9296
[ 9.926325] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse maxim,gmsl-dser-device
[ 9.926328] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse maxim,gmsl-ser-device
[ 9.926330] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse ports 0000000069b2cd92, num_channels: 2
[ 9.926333] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926334] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926336] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 5
[ 9.926338] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926339] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926341] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 4
[ 9.926343] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926344] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926345] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 0
[ 9.926347] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926348] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926350] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 1
[ 9.926352] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926353] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926355] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 2
[ 9.926357] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse all ports
[ 9.926357] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse port port
[ 9.926359] tegra-camrtc-capture-vi 3.tegra-capture-vi: vi_parse_dt, parse reg 3
[ 9.928674] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.928934] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
[ 9.928937] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.929030] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
[ 9.929033] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.929065] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
[ 9.929066] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.929094] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
[ 9.929096] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.929121] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
[ 9.929123] tegra-camrtc-capture-vi 3.tegra-capture-vi: tegra_vi_graph_init(): of_graph_get_next_endpoint endpoint - endpoint.
[ 9.929150] tegra-camrtc-capture-vi 3.tegra-capture-vi: cannot find remote port parent
Device tree portion:
tegra-capture-vi {
compatible = "nvidia,tegra-camrtc-capture-vi";
nvidia,vi-devices = <0x20a 0x20c>;
nvidia,vi-mapping-size = <0x06>;
nvidia,vi-mapping = <0x00 0x00 0x01 0x00 0x02 0x01 0x03 0x01 0x04 0x00 0x05 0x01>;
nvidia,vi-mapping-names = "csi-stream-id\0vi-unit-id";
nvidia,vi-max-channels = <0x48>;
status = "okay";
num-channels = <0x04>;
reg = <0x00>;
phandle = <0x36b>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x00>;
status = "okay";
port@0 {
reg = <0x00>;
status = "okay";
endpoint {
status = "okay";
port-index = <0x00>;
bus-width = <0x02>;
vc-id = <0x00>;
remote-endpoint = <0x20d>;
phandle = <0x10d>;
};
};
NVCSI poriton:
nvcsi@15a00000 {
compatible = "nvidia,tegra194-nvcsi";
resets = <0x03 0x2b>;
reset-names = "nvcsi";
clocks = <0x03 0x51>;
clock-names = "nvcsi";
status = "okay";
num-channels = <0x04>;
#address-cells = <0x01>;
#size-cells = <0x00>;
phandle = <0x247>;
channel@0 {
reg = <0x00>;
status = "okay";
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
status = "okay";
port@0 {
reg = <0x00>;
status = "okay";
endpoint@0 {
status = "okay";
port-index = <0x00>;
bus-width = <0x02>;
remote-endpoint = <0x10c>;
phandle = <0xe7>;
};
};
port@1 {
reg = <0x01>;
status = "okay";
endpoint@1 {
status = "okay";
remote-endpoint = <0x10d>;
phandle = <0x20d>;
};
};
};
};
Device portion:
d4m@1a {
status = "okay";
def-addr = <0x10>;
reg = <0x1a>;
compatible = "intel,d4xx";
use_sensor_mode_id = "true";
vcc-supply = <0xe3>;
cam-type = "Depth";
maxim,gmsl-ser-device = <0xe6>;
maxim,gmsl-dser-device = <0xe5>;
phandle = <0x219>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
reg = <0x00>;
endpoint {
vc-id = <0x00>;
port-index = <0x00>;
bus-width = <0x02>;
remote-endpoint = <0xe7>;
phandle = <0x10c>;
};
};
};
All of phandles and remote-endpoints are correct pointers but somehow they are disabled.
Attaching dts and kernel log.
tegra234-d4xx.zip (40.5 KB)
dmesg-jp6-d4xx.zip (19.5 KB)
Using tegra234-p3737-0000+p3701-0000-nv.dtb
as reference:
// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
/dts-v1/;
#include "tegra234-p3737-0000+p3701-0000.dts"
#include "tegra234-p3737-0000+p3701-xxxx-nv-common.dtsi"
#include "tegra234-p3701-0000.dtsi"
#include "tegra234-camera-d4xx.dtsi"
Include device specific dts source:
tegra234-camera-d4xx.zip (2.5 KB)
Thanks for assistance.
Dima.