diff --git a/overlay/Makefile b/overlay/Makefile index db159ea..c5b0cad 100644 --- a/overlay/Makefile +++ b/overlay/Makefile @@ -49,7 +49,6 @@ dtbo-y += tegra234-p3737-camera-e3333-overlay.dtbo dtbo-y += tegra234-p3737-camera-imx185-overlay.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx219-dual.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx477-dual.dtbo -dtbo-y += tegra234-p3767-camera-p3768-imx477-dual-4lane.dtbo dtbo-y += tegra234-p3767-camera-p3768-imx477-imx219.dtbo dtbo-y += tegra234-p3737-camera-eCAM130A-overlay.dtbo dtbo-y += tegra234-p3737-camera-dual-hawk-ar0234-e3653-overlay.dtbo diff --git a/overlay/tegra234-p3767-camera-p3768-imx477-dual-4lane.dts b/overlay/tegra234-p3767-camera-p3768-imx477-dual-4lane.dts deleted file mode 100644 index 8dd63cb..0000000 --- a/overlay/tegra234-p3767-camera-p3768-imx477-dual-4lane.dts +++ /dev/null @@ -1,456 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - -/dts-v1/; -/plugin/; - -#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6) -#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0) -#define CAM_I2C_MUX TEGRA234_AON_GPIO(CC, 3) - -#include - -/ { - overlay-name = "Camera IMX477 Dual 4 lane"; - jetson-header-name = "Jetson 22pin CSI Connector"; - compatible = JETSON_COMPATIBLE_P3768; - - fragment@0 { - target-path = "/"; - __overlay__ { - tegra-capture-vi { - num-channels = <2>; - ports { - #address-cells = <1>; - #size-cells = <0>; - port@0 { - reg = <0>; - rbpcv3_imx477_vi_in0: endpoint { - port-index = <1>; - bus-width = <4>; - remote-endpoint = <&rbpcv3_imx477_csi_out0>; - }; - }; - port@1 { - reg = <1>; - rbpcv3_imx477_vi_in1: endpoint { - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&rbpcv3_imx477_csi_out1>; - }; - }; - }; - }; - tegra-camera-platform { - compatible = "nvidia, tegra-camera-platform"; - /** - * 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 { - module0 { - badge = "jakku_front_RBPCV3"; - position = "front"; - orientation = "1"; - drivernode0 { - pcl_id = "v4l2_sensor"; - sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/cam_i2cmux/i2c@0/rbpcv3_imx477_a@1a"; - }; - }; - module1 { - badge = "jakku_rear_RBPCV3"; - position = "rear"; - orientation = "1"; - drivernode0 { - pcl_id = "v4l2_sensor"; - sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/cam_i2cmux/i2c@1/rbpcv3_imx477_c@1a"; - }; - }; - }; - }; - bus@0 { - host1x@13e00000 { - nvcsi@15a00000 { - num-channels = <2>; - #address-cells = <1>; - #size-cells = <0>; - channel@0 { - reg = <0>; - ports { - #address-cells = <1>; - #size-cells = <0>; - port@0 { - reg = <0>; - rbpcv3_imx477_csi_in0: endpoint@0 { - port-index = <1>; - bus-width = <4>; - remote-endpoint = <&rbpcv3_imx477_out0>; - }; - }; - port@1 { - reg = <1>; - rbpcv3_imx477_csi_out0: endpoint@1 { - remote-endpoint = <&rbpcv3_imx477_vi_in0>; - }; - }; - }; - }; - channel@1 { - reg = <1>; - ports { - #address-cells = <1>; - #size-cells = <0>; - port@0 { - reg = <0>; - rbpcv3_imx477_csi_in1: endpoint@2 { - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&rbpcv3_imx477_out1>; - }; - }; - port@1 { - reg = <1>; - rbpcv3_imx477_csi_out1: endpoint@3 { - remote-endpoint = <&rbpcv3_imx477_vi_in1>; - }; - }; - }; - }; - }; - }; - cam_i2cmux { - status = "okay"; - compatible = "i2c-mux-gpio"; - #address-cells = <1>; - #size-cells = <0>; - mux-gpios = <&gpio_aon CAM_I2C_MUX GPIO_ACTIVE_HIGH>; - i2c-parent = <&cam_i2c>; - i2c@0 { - status = "okay"; - reg = <0>; - #address-cells = <1>; - #size-cells = <0>; - rbpcv2_imx219_a@10 { - status = "disabled"; - }; - rbpcv3_imx477_a@1a { - reset-gpios = <&gpio CAM0_PWDN GPIO_ACTIVE_HIGH>; - compatible = "ridgerun,imx477"; - /* I2C device address */ - reg = <0x1a>; - /* V4L2 device node location */ - devnode = "video0"; - /* Physical dimensions of sensor */ - physical_w = "3.680"; - physical_h = "2.760"; - sensor_model = "imx477"; - use_sensor_mode_id = "true"; - /** - * ==== 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 - * - * lane_polarity - * Based on the camera connector pin. - * CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1 - * LSB | BIT1 | BIT2 | MSB - * if there is a polarity swap on any lane, the bit corrsponding - * to the lane should be set - * e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001 - * e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110 - * - * == 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 { /* IMX477_MODE_3840x2160 */ - mclk_khz = "24000"; - num_lanes = "4"; - tegra_sinterface = "serial_b"; - phy_mode = "DPHY"; - discontinuous_clk = "no"; - dpcm_enable = "false"; - cil_settletime = "0"; - lane_polarity = "6"; - active_w = "3840"; - active_h = "2160"; - mode_type = "bayer"; - pixel_phase = "rggb"; - csi_pixel_bit_depth = "10"; - readout_orientation = "90"; - line_length = "5832"; - inherent_gain = "1"; - mclk_multiplier = "80"; - pix_clk_hz = "600000000"; - gain_factor = "16"; - framerate_factor = "1000000"; - exposure_factor = "1000000"; - min_gain_val = "16"; /* 1.00x */ - max_gain_val = "356"; /* 22x */ - step_gain_val = "1"; - default_gain = "16"; /* 1.00x */ - min_hdr_ratio = "1"; - max_hdr_ratio = "1"; - min_framerate = "2000000"; /* 2.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 = "2"; - }; - mode1 { /* IMX477_MODE_1920X1080 */ - mclk_khz = "24000"; - num_lanes = "4"; - tegra_sinterface = "serial_b"; - phy_mode = "DPHY"; - discontinuous_clk = "no"; - dpcm_enable = "false"; - cil_settletime = "0"; - lane_polarity = "6"; - active_w = "1920"; - active_h = "1080"; - mode_type = "bayer"; - pixel_phase = "rggb"; - csi_pixel_bit_depth = "10"; - readout_orientation = "90"; - line_length = "3076"; - inherent_gain = "1"; - mclk_multiplier = "80"; - pix_clk_hz = "600000000"; - gain_factor = "16"; - framerate_factor = "1000000"; - exposure_factor = "1000000"; - min_gain_val = "16"; /* 1.00x */ - max_gain_val = "356"; /* 22x */ - step_gain_val = "1"; - default_gain = "16"; /* 1.00x */ - min_hdr_ratio = "1"; - max_hdr_ratio = "1"; - min_framerate = "2000000"; /* 2.0 fps */ - max_framerate = "60000000"; /* 60.0 fps */ - step_framerate = "1"; - default_framerate = "60000000"; /* 60.0 fps */ - min_exp_time = "13"; /* us */ - max_exp_time = "683709"; /* us */ - step_exp_time = "1"; - default_exp_time = "2495"; /* us */ - embedded_metadata_height = "2"; - }; - ports { - #address-cells = <1>; - #size-cells = <0>; - port@0 { - reg = <0>; - rbpcv3_imx477_out0: endpoint { - port-index = <1>; - bus-width = <4>; - remote-endpoint = <&rbpcv3_imx477_csi_in0>; - }; - }; - }; - }; - }; - i2c@1 { - status = "okay"; - reg = <1>; - #address-cells = <1>; - #size-cells = <0>; - rbpcv2_imx219_c@10 { - status = "disabled"; - }; - rbpcv3_imx477_c@1a { - reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>; - compatible = "ridgerun,imx477"; - /* I2C device address */ - reg = <0x1a>; - /* V4L2 device node location */ - devnode = "video1"; - /* Physical dimensions of sensor */ - physical_w = "3.680"; - physical_h = "2.760"; - sensor_model = "imx477"; - use_sensor_mode_id = "true"; - mode0 { /* IMX477_MODE_3840x2160 */ - mclk_khz = "24000"; - num_lanes = "2"; - tegra_sinterface = "serial_c"; - phy_mode = "DPHY"; - discontinuous_clk = "no"; - dpcm_enable = "false"; - cil_settletime = "0"; - lane_polarity = "0"; - active_w = "3840"; - active_h = "2160"; - mode_type = "bayer"; - pixel_phase = "rggb"; - csi_pixel_bit_depth = "10"; - readout_orientation = "90"; - line_length = "11200"; - inherent_gain = "1"; - mclk_multiplier = "80"; - pix_clk_hz = "300000000"; - gain_factor = "16"; - framerate_factor = "1000000"; - exposure_factor = "1000000"; - min_gain_val = "16"; /* 1.00x */ - max_gain_val = "356"; /* 22x */ - step_gain_val = "1"; - default_gain = "16"; /* 1.00x */ - min_hdr_ratio = "1"; - max_hdr_ratio = "1"; - min_framerate = "2000000"; /* 2.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 = "2"; - }; - mode1 { /* IMX477_MODE_1920X1080 */ - mclk_khz = "24000"; - num_lanes = "2"; - tegra_sinterface = "serial_c"; - phy_mode = "DPHY"; - discontinuous_clk = "no"; - dpcm_enable = "false"; - cil_settletime = "0"; - lane_polarity = "0"; - active_w = "1920"; - active_h = "1080"; - mode_type = "bayer"; - pixel_phase = "rggb"; - csi_pixel_bit_depth = "10"; - readout_orientation = "90"; - line_length = "7000"; - inherent_gain = "1"; - mclk_multiplier = "80"; - pix_clk_hz = "300000000"; - gain_factor = "16"; - framerate_factor = "1000000"; - exposure_factor = "1000000"; - min_gain_val = "16"; /* 1.00x */ - max_gain_val = "356"; /* 22x */ - step_gain_val = "1"; - default_gain = "16"; /* 1.00x */ - min_hdr_ratio = "1"; - max_hdr_ratio = "1"; - min_framerate = "2000000"; /* 2.0 fps */ - max_framerate = "60000000"; /* 60.0 fps */ - step_framerate = "1"; - default_framerate = "60000000"; /* 60.0 fps */ - min_exp_time = "13"; /* us */ - max_exp_time = "683709"; /* us */ - step_exp_time = "1"; - default_exp_time = "2495"; /* us */ - embedded_metadata_height = "2"; - }; - ports { - #address-cells = <1>; - #size-cells = <0>; - port@0 { - reg = <0>; - rbpcv3_imx477_out1: endpoint { - status = "okay"; - port-index = <2>; - bus-width = <2>; - remote-endpoint = <&rbpcv3_imx477_csi_in1>; - }; - }; - }; - }; - }; - }; - - gpio@6000d000 { - camera-control-output-low { - gpio-hog; - output-low; - gpios = < CAM1_PWDN 0 CAM0_PWDN 0>; - label = "cam1-pwdn", "cam0-pwdn"; - }; - }; - }; - }; - }; -};