2 * Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include <dt-bindings/media/camera.h>
19 #include <dt-bindings/platform/t210/t210.h>
30 liimx185_vi_in0: endpoint {
33 remote-endpoint = <&liimx185_out0>;
40 avdd_dsi_csi-supply = <&max77620_gpio7>;
49 compatible = "nvidia,imx185";
53 /* Physical dimensions of sensor */
57 sensor_model ="imx185";
58 /* Define any required hw resources needed by driver */
59 /* ie. clocks, io pins, power sources */
61 /* Defines number of frames to be dropped by driver internally after applying */
62 /* sensor crop settings. Some sensors send corrupt frames after applying */
63 /* crop co-ordinates */
64 post_crop_frame_drop = "0";
66 /* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
67 use_decibel_gain = "true";
69 /* enable CID_SENSOR_MODE_ID for sensor modes selection */
70 use_sensor_mode_id = "true";
72 * A modeX node is required to support v4l2 driver
73 * implementation with NVIDIA camera software stack
76 * Standard MIPI driving clock, typically 24MHz
79 * Number of lane channels sensor is programmed to output
81 * tegra_sinterface = "";
82 * The base tegra serial interface lanes are connected to
84 * discontinuous_clk = "";
85 * The sensor is programmed to use a discontinuous clock on MIPI lanes
87 * dpcm_enable = "true";
88 * The sensor is programmed to use a DPCM modes
90 * cil_settletime = "";
91 * MIPI lane settle time value.
92 * A "0" value attempts to autocalibrate based on mclk_multiplier
95 * Pixel active region width
98 * Pixel active region height
100 * dynamic_pixel_bit_depth = "";
101 * sensor dynamic bit depth for sensor mode
103 * csi_pixel_bit_depth = "";
104 * sensor output bit depth for sensor mode
107 * Sensor mode type, For eg: yuv, Rgb, bayer, bayer_wdr_pwl
110 * Pixel phase for sensor mode, For eg: rggb, vyuy, rgb888
112 * readout_orientation = "0";
113 * Based on camera module orientation.
114 * Only change readout_orientation if you specifically
115 * Program a different readout order for this mode
118 * Pixel line length (width) for sensor mode.
119 * This is used to calibrate features in our camera stack.
121 * mclk_multiplier = "";
122 * Multiplier to MCLK to help time hardware capture sequence
123 * TODO: Assign to PLL_Multiplier as well until fixed in core
126 * Sensor pixel clock used for calculations like exposure and framerate
131 * inherent_gain = "";
132 * Gain obtained inherently from mode (ie. pixel binning)
134 * min_gain_val = ""; (floor to 6 decimal places)
135 * max_gain_val = ""; (floor to 6 decimal places)
136 * Gain limits for mode
137 * if use_decibel_gain = "true", please set the gain as decibel
139 * min_exp_time = ""; (ceil to integer)
140 * max_exp_time = ""; (ceil to integer)
141 * Exposure Time limits for mode (us)
144 * min_hdr_ratio = "";
145 * max_hdr_ratio = "";
146 * HDR Ratio limits for mode
148 * min_framerate = "";
149 * max_framerate = "";
150 * Framerate limits for mode (fps)
152 * embedded_metadata_height = "";
153 * Sensor embedded metadata height in units of rows.
154 * If sensor does not support embedded metadata value should be 0.
157 mode0 {/*mode IMX185_MODE_1920X1080_CROP_30FPS*/
160 tegra_sinterface = "serial_a";
161 discontinuous_clk = "no";
162 dpcm_enable = "false";
163 cil_settletime = "0";
164 dynamic_pixel_bit_depth = "12";
165 csi_pixel_bit_depth = "12";
167 pixel_phase = "rggb";
171 readout_orientation = "0";
172 line_length = "2200";
174 mclk_multiplier = "2";
175 pix_clk_hz = "74250000";
177 min_gain_val = "0"; /* dB */
178 max_gain_val = "48"; /* dB */
181 min_framerate = "1.5";
182 max_framerate = "30";
184 max_exp_time = "680000";
185 embedded_metadata_height = "0";
188 mode1 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_30FPS*/
191 tegra_sinterface = "serial_a";
192 discontinuous_clk = "no";
193 dpcm_enable = "false";
194 cil_settletime = "0";
195 dynamic_pixel_bit_depth = "10";
196 csi_pixel_bit_depth = "10";
198 pixel_phase = "rggb";
202 readout_orientation = "0";
203 line_length = "2200";
205 mclk_multiplier = "2";
206 pix_clk_hz = "74250000";
212 min_framerate = "1.5";
213 max_framerate = "30";
215 max_exp_time = "680000";
216 embedded_metadata_height = "0";
219 mode2 {/*mode IMX185_MODE_1920X1080_CROP_60FPS*/
222 tegra_sinterface = "serial_a";
223 discontinuous_clk = "no";
224 dpcm_enable = "false";
225 cil_settletime = "0";
226 dynamic_pixel_bit_depth = "12";
227 csi_pixel_bit_depth = "12";
229 pixel_phase = "rggb";
233 readout_orientation = "0";
234 line_length = "2200";
236 mclk_multiplier = "4";
237 pix_clk_hz = "148500000";
243 min_framerate = "1.5";
244 max_framerate = "60";
246 max_exp_time = "680000";
247 embedded_metadata_height = "0";
250 mode3 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_60FPS*/
253 tegra_sinterface = "serial_a";
254 discontinuous_clk = "no";
255 dpcm_enable = "false";
256 cil_settletime = "0";
257 dynamic_pixel_bit_depth = "10";
258 csi_pixel_bit_depth = "10";
260 pixel_phase = "rggb";
264 readout_orientation = "0";
265 line_length = "2200";
267 mclk_multiplier = "4";
268 pix_clk_hz = "148500000";
274 min_framerate = "1.5";
275 max_framerate = "60";
277 max_exp_time = "680000";
278 embedded_metadata_height = "0";
281 #address-cells = <1>;
286 liimx185_out0: endpoint {
289 remote-endpoint = <&liimx185_vi_in0>;
302 tegra-camera-platform {
303 compatible = "nvidia, tegra-camera-platform";
306 * The general guideline for naming badge_info contains 3 parts, and is as follows,
307 * The first part is the camera_board_id for the module; if the module is in a FFD
308 * platform, then use the platform name for this part.
309 * The second part contains the position of the module, ex.
\93rear
\94 or
\93front
\94.
310 * The third part contains the last 6 characters of a part number which is found
311 * in the module's specsheet from the vender.
315 badge = "imx185_bottom_liimx185";
320 /* Declare PCL support driver (classically known as guid) */
321 pcl_id = "v4l2_sensor";
322 /* Driver's v4l2 device name */
323 devname = "imx185 6-001a";
324 /* Declare the device-tree hierarchy to driver instance */
325 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9546@70/i2c@0/imx185_a@1a";