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 e3323_vi_in0: endpoint {
33 remote-endpoint = <&ov23850_out0>;
38 e3323_vi_in1: endpoint {
41 remote-endpoint = <&ov23850_out1>;
46 e3323_vi_in2: endpoint {
47 remote-endpoint = <&lc898212_out0>;
52 e3323_vi_in3: endpoint {
53 remote-endpoint = <&lc898212_out1>;
61 compatible = "nvidia,ov23850";
64 /* Physical dimensions of sensor */
65 physical_w = "7.3998";
66 physical_h = "5.5998";
69 sensor_model ="ov23850";
71 /* Define any required hw resources needed by driver */
72 /* ie. clocks, io pins, power sources */
78 /* Defines number of frames to be dropped by driver internally after applying */
79 /* sensor crop settings. Some sensors send corrupt frames after applying */
80 /* crop co-ordinates */
81 post_crop_frame_drop = "0";
84 * A modeX node is required to support v4l2 driver
85 * implementation with NVIDIA camera software stack
88 * Standard MIPI driving clock, typically 24MHz
91 * Number of lane channels sensor is programmed to output
93 * tegra_sinterface = "";
94 * The base tegra serial interface lanes are connected to
96 * discontinuous_clk = "";
97 * The sensor is programmed to use a discontinuous clock on MIPI lanes
99 * dpcm_enable = "true";
100 * The sensor is programmed to use a DPCM modes
102 * cil_settletime = "";
103 * MIPI lane settle time value.
104 * A "0" value attempts to autocalibrate based on mclk_multiplier
110 * Pixel active region width
113 * Pixel active region height
116 * The sensor readout pixel pattern
117 * For eg - 10 bit bayer having 'bggr' pixel pattern has value "bayer_bggr"
118 * 12 bit bayer having 'bggr' pixel pattern has value "bayer_bggr12"
119 * 14 bit bayer having 'bggr' pixel pattern has value "bayer_bggr14"
121 * readout_orientation = "0";
122 * Based on camera module orientation.
123 * Only change readout_orientation if you specifically
124 * Program a different readout order for this mode
127 * Pixel line length (width) for sensor mode.
128 * This is used to calibrate features in our camera stack.
130 * mclk_multiplier = "";
131 * Multiplier to MCLK to help time hardware capture sequence
132 * TODO: Assign to PLL_Multiplier as well until fixed in core
135 * Sensor pixel clock used for calculations like exposure and framerate
140 * inherent_gain = "";
141 * Gain obtained inherently from mode (ie. pixel binning)
143 * min_gain_val = ""; (floor to 6 decimal places)
144 * max_gain_val = ""; (floor to 6 decimal places)
145 * Gain limits for mode
147 * min_exp_time = ""; (ceil to integer)
148 * max_exp_time = ""; (ceil to integer)
149 * Exposure Time limits for mode (us)
152 * min_hdr_ratio = "";
153 * max_hdr_ratio = "";
154 * HDR Ratio limits for mode
156 * min_framerate = "";
157 * max_framerate = "";
158 * Framerate limits for mode (fps)
160 * embedded_metadata_height = "";
161 * Sensor embedded metadata height in units of rows.
162 * If sensor does not support embedded metadata value should be 0.
165 mode0 { // OV23850_MODE_5632X4224
168 tegra_sinterface = "serial_a";
169 discontinuous_clk = "no";
170 dpcm_enable = "false";
171 cil_settletime = "0";
175 pixel_t = "bayer_bggr";
176 readout_orientation = "270";
177 line_length = "7200";
179 mclk_multiplier = "31.25";
180 pix_clk_hz = "750000000";
182 min_gain_val = "1.0";
183 max_gain_val = "15.5";
185 max_hdr_ratio = "64";
186 min_framerate = "3.179011";
187 max_framerate = "21";
189 max_exp_time = "314256";
190 embedded_metadata_height = "0";
193 mode1 { // OV23850_MODE_5632X3168
196 tegra_sinterface = "serial_a";
197 discontinuous_clk = "no";
198 dpcm_enable = "false";
199 cil_settletime = "0";
203 pixel_t = "bayer_bggr";
204 readout_orientation = "270";
205 line_length = "7108";
207 mclk_multiplier = "31.25";
208 pix_clk_hz = "750000000";
210 min_gain_val = "1.0";
211 max_gain_val = "15.5";
213 max_hdr_ratio = "64";
214 min_framerate = "3.220157";
215 max_framerate = "30";
217 max_exp_time = "310241";
218 embedded_metadata_height = "0";
221 #address-cells = <1>;
226 ov23850_out0: endpoint {
229 remote-endpoint = <&e3323_vi_in0>;
235 compatible = "nvidia,lc898212";
238 /* physical camera layer interface tags */
240 * Type specifies the control features supported by
241 * the focuser driver.
242 * default type means only position control setting
243 * supported by the focuser
246 min_focus_distance = "10.0"; /* 1.0f/0.1f */
247 hyper_focal = "0.2"; /* 1.0f/5.0f */
248 focal_length = "4.73";
251 support_mfi = "true";
254 #address-cells = <1>;
258 lc898212_out0: endpoint {
259 remote-endpoint = <&e3323_vi_in2>;
269 compatible = "nvidia,ov23850";
272 /* Physical dimensions of sensor */
273 physical_w = "7.3998";
274 physical_h = "5.5998";
277 sensor_model ="ov23850";
279 /* Define any required hw resources needed by driver */
280 /* ie. clocks, io pins, power sources */
286 /* Defines number of frames to be dropped by driver internally after applying */
287 /* sensor crop settings. Some sensors send corrupt frames after applying */
288 /* crop co-ordinates */
289 post_crop_frame_drop = "0";
291 mode0 { // OV23850_MODE_5632X4224
294 tegra_sinterface = "serial_c";
295 discontinuous_clk = "no";
296 dpcm_enable = "false";
297 cil_settletime = "0";
301 pixel_t = "bayer_bggr";
302 readout_orientation = "270";
303 line_length = "7200";
305 mclk_multiplier = "31.25";
306 pix_clk_hz = "750000000";
308 min_gain_val = "1.0";
309 max_gain_val = "15.5";
311 max_hdr_ratio = "64";
312 min_framerate = "3.179011";
313 max_framerate = "20";
315 max_exp_time = "314256";
316 embedded_metadata_height = "0";
319 mode1 { // OV23850_MODE_5632X3168
322 tegra_sinterface = "serial_c";
323 discontinuous_clk = "no";
324 dpcm_enable = "false";
325 cil_settletime = "0";
329 pixel_t = "bayer_bggr";
330 readout_orientation = "270";
331 line_length = "7108";
333 mclk_multiplier = "31.25";
334 pix_clk_hz = "750000000";
336 min_gain_val = "1.0";
337 max_gain_val = "15.5";
339 max_hdr_ratio = "64";
340 min_framerate = "3.220157";
341 max_framerate = "30";
343 max_exp_time = "310467";
344 embedded_metadata_height = "0";
347 #address-cells = <1>;
352 ov23850_out1: endpoint {
355 remote-endpoint = <&e3323_vi_in1>;
361 compatible = "nvidia,lc898212";
364 /* physical camera layer interface tags */
366 min_focus_distance = "10.0"; /* 1.0f/0.1f */
367 hyper_focal = "0.2"; /* 1.0f/5.0f */
368 focal_length = "4.73";
371 support_mfi = "true";
374 #address-cells = <1>;
378 lc898212_out1: endpoint {
379 remote-endpoint = <&e3323_vi_in3>;
386 tegra-camera-platform {
387 compatible = "nvidia, tegra-camera-platform";
390 * The general guideline for naming badge_info contains 3 parts, and is as follows,
391 * The first part is the camera_board_id for the module; if the module is in a FFD
392 * platform, then use the platform name for this part.
393 * The second part contains the position of the module, ex. “rear” or “front”.
394 * The third part contains the last 6 characters of a part number which is found
395 * in the module's specsheet from the vender.
399 badge = "e3323_bottom_CH06P1";
403 /* Declare PCL support driver (classically known as guid) */
404 pcl_id = "v4l2_sensor";
405 /* Driver's v4l2 device name */
406 devname = "ov23850 6-0010";
407 /* Declare the device-tree hierarchy to driver instance */
408 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/ov23850_a@10";
411 /* Declare PCL support driver (classically known as guid) */
412 pcl_id = "v4l2_focuser";
413 /* Driver's v4l2 device name */
414 devname = "lc898212 6-0072";
415 /* Declare the device-tree hierarchy to driver instance */
416 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/lc898212@72";
420 badge = "e3323_top_CH06P1";
424 /* Declare PCL support driver (classically known as guid) */
425 pcl_id = "v4l2_sensor";
426 /* Driver's v4l2 device name */
427 devname = "ov23850 0-0036";
428 /* Declare the device-tree hierarchy to driver instance */
429 proc-device-tree = "/proc/device-tree/i2c@7000c000/ov23850_c@36";
432 /* Declare PCL support driver (classically known as guid) */
433 pcl_id = "v4l2_focuser";
434 /* Driver's v4l2 device name */
435 devname = "lc898212 0-0072";
436 /* Declare the device-tree hierarchy to driver instance */
437 proc-device-tree = "/proc/device-tree/i2c@7000c000/lc898212@72";