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 e3326_vi_in0: endpoint {
33 remote-endpoint = <&e3326_ov5693_out0>;
44 compatible = "nvidia,ov5693";
45 /* I2C device address */
48 /* Physical dimensions of sensor */
53 sensor_model ="ov5693";
55 /* Define any required hw resources needed by driver */
56 /* ie. clocks, io pins, power sources */
60 /* Defines number of frames to be dropped by driver internally after applying */
61 /* sensor crop settings. Some sensors send corrupt frames after applying */
62 /* crop co-ordinates */
63 post_crop_frame_drop = "0";
66 * A modeX node is required to support v4l2 driver
67 * implementation with NVIDIA camera software stack
70 * Standard MIPI driving clock, typically 24MHz
73 * Number of lane channels sensor is programmed to output
75 * tegra_sinterface = "";
76 * The base tegra serial interface lanes are connected to
78 * discontinuous_clk = "";
79 * The sensor is programmed to use a discontinuous clock on MIPI lanes
81 * dpcm_enable = "true";
82 * The sensor is programmed to use a DPCM modes
84 * cil_settletime = "";
85 * MIPI lane settle time value.
86 * A "0" value attempts to autocalibrate based on mclk_multiplier
92 * Pixel active region width
95 * Pixel active region height
98 * The sensor readout pixel pattern
99 * For eg - 10 bit bayer having 'bggr' pixel pattern has value "bayer_bggr"
100 * 12 bit bayer having 'bggr' pixel pattern has value "bayer_bggr12"
101 * 14 bit bayer having 'bggr' pixel pattern has value "bayer_bggr14"
103 * readout_orientation = "0";
104 * Based on camera module orientation.
105 * Only change readout_orientation if you specifically
106 * Program a different readout order for this mode
109 * Pixel line length (width) for sensor mode.
110 * This is used to calibrate features in our camera stack.
112 * mclk_multiplier = "";
113 * Multiplier to MCLK to help time hardware capture sequence
114 * TODO: Assign to PLL_Multiplier as well until fixed in core
117 * Sensor pixel clock used for calculations like exposure and framerate
122 * inherent_gain = "";
123 * Gain obtained inherently from mode (ie. pixel binning)
125 * min_gain_val = ""; (floor to 6 decimal places)
126 * max_gain_val = ""; (floor to 6 decimal places)
127 * Gain limits for mode
129 * min_exp_time = ""; (ceil to integer)
130 * max_exp_time = ""; (ceil to integer)
131 * Exposure Time limits for mode (us)
134 * min_hdr_ratio = "";
135 * max_hdr_ratio = "";
136 * HDR Ratio limits for mode
138 * min_framerate = "";
139 * max_framerate = "";
140 * Framerate limits for mode (fps)
142 * embedded_metadata_height = "";
143 * Sensor embedded metadata height in units of rows.
144 * If sensor does not support embedded metadata value should be 0.
146 mode0 { // OV5693_MODE_2592X1944
149 tegra_sinterface = "serial_c";
150 discontinuous_clk = "no";
151 dpcm_enable = "false";
152 cil_settletime = "0";
156 pixel_t = "bayer_bggr";
157 readout_orientation = "180";
158 line_length = "2688";
160 mclk_multiplier = "17.0";
161 pix_clk_hz = "160000000";
163 min_gain_val = "1.0";
166 max_hdr_ratio = "64";
167 min_framerate = "1.816577";
168 max_framerate = "30";
170 max_exp_time = "550385";
171 embedded_metadata_height = "0";
174 mode1 { //OV5693_MODE_2592X1458
177 tegra_sinterface = "serial_c";
178 discontinuous_clk = "no";
179 dpcm_enable = "false";
180 cil_settletime = "0";
184 pixel_t = "bayer_bggr";
185 readout_orientation = "180";
186 line_length = "2688";
188 mclk_multiplier = "17.0";
189 pix_clk_hz = "160000000";
191 min_gain_val = "1.0";
194 max_hdr_ratio = "64";
195 min_framerate = "1.816577";
196 max_framerate = "30";
198 max_exp_time = "550385";
199 embedded_metadata_height = "0";
202 mode2 { //OV5693_MODE_1280X720
205 tegra_sinterface = "serial_c";
206 discontinuous_clk = "no";
207 dpcm_enable = "false";
208 cil_settletime = "0";
212 pixel_t = "bayer_bggr";
213 readout_orientation = "180";
214 line_length = "1752";
216 mclk_multiplier = "17.0";
217 pix_clk_hz = "160000000";
219 min_gain_val = "1.0";
222 max_hdr_ratio = "64";
223 min_framerate = "2.787078";
224 max_framerate = "120";
226 max_exp_time = "358733";
227 embedded_metadata_height = "0";
231 #address-cells = <1>;
236 e3326_ov5693_out0: endpoint {
239 remote-endpoint = <&e3326_vi_in0>;
248 tegra-camera-platform {
249 compatible = "nvidia, tegra-camera-platform";
252 * The general guideline for naming badge_info contains 3 parts, and is as follows,
253 * The first part is the camera_board_id for the module; if the module is in a FFD
254 * platform, then use the platform name for this part.
255 * The second part contains the position of the module, ex. “rear” or “front”.
256 * The third part contains the last 6 characters of a part number which is found
257 * in the module's specsheet from the vender.
261 badge = "e3326_front_P5V27C";
265 /* Declare PCL support driver (classically known as guid) */
266 pcl_id = "v4l2_sensor";
267 /* Driver's v4l2 device name */
268 devname = "ov5693 6-0036";
269 /* Declare the device-tree hierarchy to driver instance */
270 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/ov5693_c@36";
273 /* Declare PCL support driver (classically known as guid) */
274 pcl_id = "v4l2_focuser_stub";