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 */
79 /* Defines number of frames to be dropped by driver internally after applying */
80 /* sensor crop settings. Some sensors send corrupt frames after applying */
81 /* crop co-ordinates */
82 post_crop_frame_drop = "0";
85 * A modeX node is required to support v4l2 driver
86 * implementation with NVIDIA camera software stack
89 * Standard MIPI driving clock, typically 24MHz
92 * Number of lane channels sensor is programmed to output
94 * tegra_sinterface = "";
95 * The base tegra serial interface lanes are connected to
97 * discontinuous_clk = "";
98 * The sensor is programmed to use a discontinuous clock on MIPI lanes
100 * dpcm_enable = "true";
101 * The sensor is programmed to use a DPCM modes
103 * cil_settletime = "";
104 * MIPI lane settle time value.
105 * A "0" value attempts to autocalibrate based on mclk_multiplier
111 * Pixel active region width
114 * Pixel active region height
117 * The sensor readout pixel pattern
118 * For eg - 10 bit bayer having 'bggr' pixel pattern has value "bayer_bggr"
119 * 12 bit bayer having 'bggr' pixel pattern has value "bayer_bggr12"
120 * 14 bit bayer having 'bggr' pixel pattern has value "bayer_bggr14"
122 * readout_orientation = "0";
123 * Based on camera module orientation.
124 * Only change readout_orientation if you specifically
125 * Program a different readout order for this mode
128 * Pixel line length (width) for sensor mode.
129 * This is used to calibrate features in our camera stack.
131 * mclk_multiplier = "";
132 * Multiplier to MCLK to help time hardware capture sequence
133 * TODO: Assign to PLL_Multiplier as well until fixed in core
136 * Sensor pixel clock used for calculations like exposure and framerate
141 * inherent_gain = "";
142 * Gain obtained inherently from mode (ie. pixel binning)
144 * min_gain_val = ""; (floor to 6 decimal places)
145 * max_gain_val = ""; (floor to 6 decimal places)
146 * Gain limits for mode
148 * min_exp_time = ""; (ceil to integer)
149 * max_exp_time = ""; (ceil to integer)
150 * Exposure Time limits for mode (us)
153 * min_hdr_ratio = "";
154 * max_hdr_ratio = "";
155 * HDR Ratio limits for mode
157 * min_framerate = "";
158 * max_framerate = "";
159 * Framerate limits for mode (fps)
161 * embedded_metadata_height = "";
162 * Sensor embedded metadata height in units of rows.
163 * If sensor does not support embedded metadata value should be 0.
166 mode0 { // OV23850_MODE_5632X4224
169 tegra_sinterface = "serial_a";
170 discontinuous_clk = "no";
171 dpcm_enable = "false";
172 cil_settletime = "0";
176 pixel_t = "bayer_bggr";
177 readout_orientation = "270";
178 line_length = "7200";
180 mclk_multiplier = "31.25";
181 pix_clk_hz = "750000000";
183 min_gain_val = "1.0";
184 max_gain_val = "15.5";
186 max_hdr_ratio = "64";
187 min_framerate = "3.179011";
188 max_framerate = "21";
190 max_exp_time = "314256";
191 embedded_metadata_height = "0";
194 mode1 { // OV23850_MODE_5632X3168
197 tegra_sinterface = "serial_a";
198 discontinuous_clk = "no";
199 dpcm_enable = "false";
200 cil_settletime = "0";
204 pixel_t = "bayer_bggr";
205 readout_orientation = "270";
206 line_length = "7108";
208 mclk_multiplier = "31.25";
209 pix_clk_hz = "750000000";
211 min_gain_val = "1.0";
212 max_gain_val = "15.5";
214 max_hdr_ratio = "64";
215 min_framerate = "3.220157";
216 max_framerate = "30";
218 max_exp_time = "310241";
219 embedded_metadata_height = "0";
222 #address-cells = <1>;
227 ov23850_out0: endpoint {
230 remote-endpoint = <&e3323_vi_in0>;
236 compatible = "nvidia,lc898212";
239 /* physical camera layer interface tags */
242 * Type specifies the control features supported by
243 * the focuser driver.
244 * default type means only position control setting
245 * supported by the focuser
248 min_focus_distance = "10.0"; /* 1.0f/0.1f */
249 hyper_focal = "0.2"; /* 1.0f/5.0f */
250 focal_length = "4.73";
253 support_mfi = "true";
256 #address-cells = <1>;
260 lc898212_out0: endpoint {
261 remote-endpoint = <&e3323_vi_in2>;
271 compatible = "nvidia,ov23850";
274 /* Physical dimensions of sensor */
275 physical_w = "7.3998";
276 physical_h = "5.5998";
279 sensor_model ="ov23850";
281 /* Define any required hw resources needed by driver */
282 /* ie. clocks, io pins, power sources */
289 /* Defines number of frames to be dropped by driver internally after applying */
290 /* sensor crop settings. Some sensors send corrupt frames after applying */
291 /* crop co-ordinates */
292 post_crop_frame_drop = "0";
294 mode0 { // OV23850_MODE_5632X4224
297 tegra_sinterface = "serial_c";
298 discontinuous_clk = "no";
299 dpcm_enable = "false";
300 cil_settletime = "0";
304 pixel_t = "bayer_bggr";
305 readout_orientation = "270";
306 line_length = "7200";
308 mclk_multiplier = "31.25";
309 pix_clk_hz = "750000000";
311 min_gain_val = "1.0";
312 max_gain_val = "15.5";
314 max_hdr_ratio = "64";
315 min_framerate = "3.179011";
316 max_framerate = "20";
318 max_exp_time = "314256";
319 embedded_metadata_height = "0";
322 mode1 { // OV23850_MODE_5632X3168
325 tegra_sinterface = "serial_c";
326 discontinuous_clk = "no";
327 dpcm_enable = "false";
328 cil_settletime = "0";
332 pixel_t = "bayer_bggr";
333 readout_orientation = "270";
334 line_length = "7108";
336 mclk_multiplier = "31.25";
337 pix_clk_hz = "750000000";
339 min_gain_val = "1.0";
340 max_gain_val = "15.5";
342 max_hdr_ratio = "64";
343 min_framerate = "3.220157";
344 max_framerate = "30";
346 max_exp_time = "310467";
347 embedded_metadata_height = "0";
350 #address-cells = <1>;
355 ov23850_out1: endpoint {
358 remote-endpoint = <&e3323_vi_in1>;
364 compatible = "nvidia,lc898212";
367 /* physical camera layer interface tags */
370 min_focus_distance = "10.0"; /* 1.0f/0.1f */
371 hyper_focal = "0.2"; /* 1.0f/5.0f */
372 focal_length = "4.73";
375 support_mfi = "true";
378 #address-cells = <1>;
382 lc898212_out1: endpoint {
383 remote-endpoint = <&e3323_vi_in3>;
390 tegra-camera-platform {
391 compatible = "nvidia, tegra-camera-platform";
394 * The general guideline for naming badge_info contains 3 parts, and is as follows,
395 * The first part is the camera_board_id for the module; if the module is in a FFD
396 * platform, then use the platform name for this part.
397 * The second part contains the position of the module, ex. “rear” or “front”.
398 * The third part contains the last 6 characters of a part number which is found
399 * in the module's specsheet from the vender.
403 badge = "e3323_bottom_CH06P1";
407 /* Declare PCL support driver (classically known as guid) */
408 pcl_id = "v4l2_sensor";
409 /* Declare the device-tree hierarchy to driver instance */
410 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/ov23850_a@10";
413 /* Declare PCL support driver (classically known as guid) */
414 pcl_id = "v4l2_focuser";
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 /* Declare the device-tree hierarchy to driver instance */
427 proc-device-tree = "/proc/device-tree/i2c@7000c000/ov23850_c@36";
430 /* Declare PCL support driver (classically known as guid) */
431 pcl_id = "v4l2_focuser";
432 /* Declare the device-tree hierarchy to driver instance */
433 proc-device-tree = "/proc/device-tree/i2c@7000c000/lc898212@72";