you may review your device tree settings, do you have update device tree overlay to enable IMX390?
Yes,I do.But the IMX390 is still not loaded.
Could you help have a look on configuration?
tca9546@70 {
compatible = "nxp,pca9546";
reg = <0x00000070>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
vcc-supply = <0x0000003d>;
vcc-pullup-supply = <0x0000002e>;
skip_mux_detect = "yes";
force_bus_start = <0x0000001e>;
vif-supply = <0x0000003d>;
status = "okay";
phandle = <0x00000315>;
i2c@2 {
reg = <0x00000002>;
i2c-mux,deselect-on-exit;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
imx390_a@1b {
compatible = "sony,imx390";
reg = <0x0000001b>;
physical_w = "15.0";
physical_h = "12.5";
sensor_model = "imx390";
post_crop_frame_drop = "0";
use_decibel_gain = "true";
use_sensor_mode_id = "true";
def-addr = <0x0000001a>;
clocks = <0x00000004 0x00000024 0x00000004 0x00000024>;
clock-names = "extperiph1", "pllp_grtba";
mclk = "extperiph1";
nvidia,gmsl-ser-device = <0x00000041>;
nvidia,gmsl-dser-device = <0x00000042>;
status = "okay";
phandle = <0x0000031b>;
mode0 {
mclk_khz = "24000";
num_lanes = [34 00];
tegra_sinterface = "serial_c";
vc_id = "0";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "12";
csi_pixel_bit_depth = "12";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "1920";
active_h = "1080";
readout_orientation = "0";
line_length = "2200";
inherent_gain = "1";
pix_clk_hz = "74250000";
serdes_pix_clk_hz = "200000000";
gain_factor = "10";
min_gain_val = "0";
max_gain_val = "300";
step_gain_val = "3";
default_gain = "0";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "30000000";
max_framerate = "30000000";
step_framerate = "1";
default_framerate = "30000000";
exposure_factor = "1000000";
min_exp_time = "59";
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";
embedded_metadata_height = "0";
};
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
endpoint {
vc-id = <0x00000000>;
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000040>;
phandle = <0x0000031c>;
};
};
};
gmsl-link {
src-csi-port = "a";
dst-csi-port = "c";
serdes-csi-link = "a";
csi-mode = "1x4";
st-vc = <0x00000000>;
vc-id = <0x00000000>;
num-lanes = <0x00000004>;
streams = "ued-u1", "raw12";
};
};
imx390_b@1c {
compatible = "sony,imx390";
reg = <0x0000001c>;
physical_w = "15.0";
physical_h = "12.5";
sensor_model = "imx390";
post_crop_frame_drop = "0";
use_decibel_gain = "true";
use_sensor_mode_id = "true";
def-addr = <0x0000001a>;
clocks = <0x00000004 0x00000024 0x00000004 0x00000024>;
clock-names = "extperiph1", "pllp_grtba";
mclk = "extperiph1";
nvidia,gmsl-ser-device = <0x00000043>;
nvidia,gmsl-dser-device = <0x00000042>;
status = "okay";
phandle = <0x0000031d>;
mode0 {
mclk_khz = "24000";
num_lanes = [34 00];
tegra_sinterface = "serial_c";
vc_id = "1";
discontinuous_clk = "no";
dpcm_enable = "false";
cil_settletime = "0";
dynamic_pixel_bit_depth = "12";
csi_pixel_bit_depth = "12";
mode_type = "bayer";
pixel_phase = "rggb";
active_w = "1920";
active_h = "1080";
readout_orientation = "0";
line_length = "2200";
inherent_gain = "1";
pix_clk_hz = "74250000";
serdes_pix_clk_hz = "200000000";
gain_factor = "10";
min_gain_val = "0";
max_gain_val = "300";
step_gain_val = "3";
default_gain = "0";
min_hdr_ratio = "1";
max_hdr_ratio = "1";
framerate_factor = "1000000";
min_framerate = "30000000";
max_framerate = "30000000";
step_framerate = "1";
default_framerate = "30000000";
exposure_factor = "1000000";
min_exp_time = "59";
max_exp_time = "33333";
step_exp_time = "1";
default_exp_time = "33333";
embedded_metadata_height = "0";
};
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
endpoint {
vc-id = <0x00000001>;
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000044>;
phandle = <0x0000031e>;
};
};
};
gmsl-link {
src-csi-port = "a";
dst-csi-port = "c";
serdes-csi-link = "b";
csi-mode = "1x4";
st-vc = <0x00000000>;
vc-id = <0x00000001>;
num-lanes = <0x00000004>;
streams = "ued-u1", "raw12";
};
};
max9296@48 {
compatible = "maxim,max9296";
reg = <0x00000048>;
csi-mode = "2x4";
max-src = <0x00000002>;
reset-gpios = <0x00000014 0x0000003b 0x00000000>;
status = "okay";
phandle = <0x00000042>;
};
max9295_prim@62 {
compatible = "maxim,max9295";
reg = <0x00000062>;
is-prim-ser;
status = "okay";
phandle = <0x0000031f>;
};
max9295_a@40 {
compatible = "maxim,max9295";
reg = <0x00000040>;
nvidia,gmsl-dser-device = <0x00000042>;
status = "okay";
phandle = <0x00000041>;
};
max9295_b@60 {
compatible = "maxim,max9295";
reg = <0x00000060>;
nvidia,gmsl-dser-device = <0x00000042>;
status = "okay";
phandle = <0x00000043>;
};
};
};
Module Device Tree - VI
tegra-capture-vi {
compatible = "nvidia,tegra-camrtc-capture-vi";
nvidia,vi-devices = <0x00000248 0x0000024a>;
nvidia,vi-mapping-size = <0x00000006>;
nvidia,vi-mapping = <0x00000000 0x00000000 0x00000001 0x00000000 0x00000002 0x00000001 0x00000003 0x00000001 0x00000004 0x00000000 0x00000005 0x00000001>;
nvidia,vi-mapping-names = "csi-stream-id", "vi-unit-id";
nvidia,vi-max-channels = <0x00000048>;
num-channels = <0x00000006>;
phandle = <0x0000043b>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x0000043c>;
endpoint {
port-index = <0x00000000>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000024b>;
vc-id = <0x00000000>;
status = "okay";
phandle = <0x00000286>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x0000043d>;
endpoint {
port-index = <0x00000000>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000024c>;
vc-id = <0x00000001>;
status = "okay";
phandle = <0x00000288>;
};
};
port@2 {
reg = <0x00000002>;
status = "okay";
phandle = <0x0000043e>;
endpoint {
port-index = <0x00000002>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000024d>;
vc-id = <0x00000000>;
status = "okay";
phandle = <0x0000028a>;
};
};
port@3 {
reg = <0x00000003>;
status = "okay";
phandle = <0x0000043f>;
endpoint {
port-index = <0x00000002>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000024e>;
vc-id = <0x00000001>;
status = "okay";
phandle = <0x0000028c>;
};
};
port@4 {
reg = <0x00000004>;
status = "okay";
phandle = <0x00000440>;
endpoint {
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000024f>;
vc-id = <0x00000000>;
status = "okay";
phandle = <0x0000028e>;
};
};
port@5 {
reg = <0x00000005>;
status = "okay";
phandle = <0x00000441>;
endpoint {
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000250>;
vc-id = <0x00000001>;
status = "okay";
phandle = <0x00000290>;
};
};
};
};
Module Device Tree - NVCSI
nvcsi@15a00000 {
compatible = "nvidia,tegra194-nvcsi";
clocks = <0x00000004 0x00000051>;
clock-names = "nvcsi";
status = "okay";
num-channels = <0x00000006>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
num-tpg-channels = <0x00000024>;
phandle = <0x00000462>;
channel@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x00000463>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x00000464>;
endpoint@0 {
port-index = <0x00000000>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000285>;
status = "okay";
phandle = <0x00000040>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x00000465>;
endpoint@1 {
remote-endpoint = <0x00000286>;
status = "okay";
phandle = <0x0000024b>;
};
};
};
};
channel@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x00000466>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x00000467>;
endpoint@2 {
port-index = <0x00000000>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000287>;
status = "okay";
phandle = <0x00000044>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x00000468>;
endpoint@3 {
remote-endpoint = <0x00000288>;
status = "okay";
phandle = <0x0000024c>;
};
};
};
};
channel@2 {
reg = <0x00000002>;
status = "okay";
phandle = <0x00000469>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x0000046a>;
endpoint@4 {
port-index = <0x00000002>;
bus-width = <0x00000004>;
remote-endpoint = <0x00000289>;
status = "okay";
phandle = <0x00000046>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x0000046b>;
endpoint@5 {
remote-endpoint = <0x0000028a>;
status = "okay";
phandle = <0x0000024d>;
};
};
};
};
channel@3 {
reg = <0x00000003>;
status = "okay";
phandle = <0x0000046c>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x0000046d>;
endpoint@6 {
port-index = <0x00000002>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000028b>;
status = "okay";
phandle = <0x00000047>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x0000046e>;
endpoint@7 {
remote-endpoint = <0x0000028c>;
status = "okay";
phandle = <0x0000024e>;
};
};
};
};
channel@4 {
reg = <0x00000004>;
status = "okay";
phandle = <0x0000046f>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x00000470>;
endpoint@8 {
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000028d>;
status = "okay";
phandle = <0x00000048>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x00000471>;
endpoint@9 {
remote-endpoint = <0x0000028e>;
status = "okay";
phandle = <0x0000024f>;
};
};
};
};
channel@5 {
reg = <0x00000005>;
status = "okay";
phandle = <0x00000472>;
ports {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
port@0 {
reg = <0x00000000>;
status = "okay";
phandle = <0x00000473>;
endpoint@10 {
port-index = <0x00000004>;
bus-width = <0x00000004>;
remote-endpoint = <0x0000028f>;
status = "okay";
phandle = <0x00000049>;
};
};
port@1 {
reg = <0x00000001>;
status = "okay";
phandle = <0x00000474>;
endpoint@11 {
remote-endpoint = <0x00000290>;
status = "okay";
phandle = <0x00000250>;
};
};
};
};
};
tegra-camera-platform node
tegra-camera-platform {
compatible = "nvidia, tegra-camera-platform";
num_csi_lanes = <0x00000010>;
max_lane_speed = <0x0016e360>;
min_bits_per_pixel = <0x0000000a>;
vi_peak_byte_per_pixel = <0x00000002>;
vi_bw_margin_pct = <0x00000019>;
max_pixel_rate = <0x000b71b0>;
isp_peak_byte_per_pixel = <0x00000005>;
isp_bw_margin_pct = <0x00000019>;
tpg_max_iso = <0x003bc400>;
phandle = <0x000004c5>;
modules {
module0 {
badge = "imx390_rear";
position = "rear";
orientation = "1";
status = "okay";
phandle = <0x000004c6>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 30-001b";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx390_a@1b";
status = "okay";
phandle = <0x000004c7>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
status = "disabled";
phandle = <0x000004c8>;
};
};
module1 {
badge = "imx390_front";
position = "front";
orientation = "1";
status = "okay";
phandle = <0x000004c9>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 30-001c";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx390_b@1c";
status = "okay";
phandle = <0x000004ca>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
status = "disabled";
phandle = <0x000004cb>;
};
};
module2 {
badge = "imx390_rear";
position = "rear";
orientation = "1";
status = "okay";
phandle = <0x000004cc>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 32-001b";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/imx390_a@1b";
status = "okay";
phandle = <0x000004cd>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
status = "disabled";
phandle = <0x000004ce>;
};
};
module3 {
badge = "imx390_front";
position = "front";
orientation = "1";
status = "okay";
phandle = <0x000004cf>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 33-001c";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/imx390_b@1c";
status = "okay";
phandle = <0x000004d0>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
status = "disabled";
phandle = <0x000004d1>;
};
};
module4 {
badge = "imx390_rear";
position = "rear";
orientation = "1";
status = "okay";
phandle = <0x000004d2>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 34-001b";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@2/imx390_a@1b";
status = "okay";
phandle = <0x000004d3>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
status = "disabled";
phandle = <0x000004d4>;
};
};
module5 {
badge = "imx390_front";
position = "front";
orientation = "1";
status = "okay";
phandle = <0x000004d5>;
drivernode0 {
pcl_id = "v4l2_sensor";
devname = "imx390 35-001c";
proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@2/imx390_b@1c";
status = "okay";
phandle = <0x000004d6>;
};
drivernode1 {
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
status = "disabled";
phandle = <0x000004d7>;
};
};
};
};
did you simply put the imx390 dtbo under the /boot folder? did you executed Jetson-IO to configure the CSI connector?
Tried that, but it didn’t work.
hello 1415281912,
as mentioned in previous comment #20.
please contact with sensor vendor to figure out the workable Jetpack release version, and any additional changes.
Hi, now I want to convert the drivers of IMX390, MAX9295 and MAX9296 into module drivers, but there is no change in module loading, which seems to be because there is no signature.
The figure shows MAX9295 converted to kernel module and MAX96712 compiled originally.
How can I sign a kernel module when nvbuild.sh is compiled?
kernel has the ability to load unsigned modules by default.
But so far there is no feedback after loading.
Originally, IMX390, MAX9295, and MAX9296 were all ‘y’ in config, and related loading information was displayed during system startup.
In order to facilitate debugging, this part of config was changed to ‘m’, but the module driver generated after compilation could not be loaded, and there was no feedback.
Do you have any suggestions?
hello 1415281912,
it’s already parse IMX390 and report you “board setup failed.”
this failure usually caused by regulator settings, which make the detection failed.
Yes, there may still be a problem with the register configuration, but it is not clear which part. When the driver is loaded directly, the register value cannot be modified, and the feedback is busy device, so I want to change config.
Any suggestions on register configuration?
Or a suggestion that kernel modules don’t load?
Thanks.
hello 1415281912,
why don’t you break down IMX390 probing function to rule out which paragraph return an error?
Hello, now is to see in this way, but after the modification to recompile, directly load the kernel driver each time to reflash the system is more time-consuming, so I want to manually load.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.


