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>
21 #define CAM0_RST_L TEGRA_GPIO(S, 4)
22 #define CAM0_PWDN TEGRA_GPIO(S, 7)
24 /* camera control gpio definitions */
34 e3322_vi_in0: endpoint {
35 remote-endpoint = <&imx219_out0>;
40 e3322_vi_in1: endpoint {
41 remote-endpoint = <&imx219_out1>;
46 e3322_vi_in2: endpoint {
47 remote-endpoint = <&imx219_out2>;
52 e3322_vi_in3: endpoint {
53 remote-endpoint = <&imx219_out3>;
58 e3322_vi_in4: endpoint {
59 remote-endpoint = <&imx219_out4>;
64 e3322_vi_in5: endpoint {
65 remote-endpoint = <&imx219_out5>;
79 compatible = "nvidia,imx219";
85 sensor_model ="imx219";
86 dovdd-supply = <&en_vdd_cam>;
91 /* Defines number of frames to be dropped by driver internally after applying */
92 /* sensor crop settings. Some sensors send corrupt frames after applying */
93 /* crop co-ordinates */
94 post_crop_frame_drop = "0";
96 mode0 { // IMX219_MODE_3280X2464
99 tegra_sinterface = "serial_a";
100 discontinuous_clk = "yes";
101 cil_settletime = "0";
105 pixel_t = "bayer_rggb";
106 readout_orientation = "90";
107 line_length = "3448";
109 mclk_multiplier = "25";
110 pix_clk_hz = "170000000";
112 min_gain_val = "1.0";
113 max_gain_val = "16.0";
115 max_hdr_ratio = "64";
116 min_framerate = "1.462526";
117 max_framerate = "21";
119 max_exp_time = "683709";
122 #address-cells = <1>;
127 imx219_out0: endpoint {
130 remote-endpoint = <&e3322_vi_in0>;
138 compatible = "nvidia,imx219";
141 physical_w = "5.095";
142 physical_h = "4.930";
144 sensor_model ="imx219";
149 /* Defines number of frames to be dropped by driver internally after applying */
150 /* sensor crop settings. Some sensors send corrupt frames after applying */
151 /* crop co-ordinates */
152 post_crop_frame_drop = "0";
154 mode0 { // IMX219_MODE_3280X2464
157 tegra_sinterface = "serial_b";
158 discontinuous_clk = "yes";
159 cil_settletime = "0";
163 pixel_t = "bayer_rggb";
164 readout_orientation = "90";
165 line_length = "3448";
167 mclk_multiplier = "25";
168 pix_clk_hz = "170000000";
170 min_gain_val = "1.0";
171 max_gain_val = "16.0";
173 max_hdr_ratio = "64";
174 min_framerate = "1.462526";
175 max_framerate = "21";
177 max_exp_time = "683709";
180 #address-cells = <1>;
185 imx219_out1: endpoint {
188 remote-endpoint = <&e3322_vi_in1>;
196 compatible = "nvidia,imx219";
199 physical_w = "5.095";
200 physical_h = "4.930";
202 sensor_model ="imx219";
207 /* Defines number of frames to be dropped by driver internally after applying */
208 /* sensor crop settings. Some sensors send corrupt frames after applying */
209 /* crop co-ordinates */
210 post_crop_frame_drop = "0";
212 mode0 { // IMX219_MODE_3280X2464
215 tegra_sinterface = "serial_c";
216 discontinuous_clk = "yes";
217 cil_settletime = "0";
221 pixel_t = "bayer_rggb";
222 readout_orientation = "90";
223 line_length = "3448";
225 mclk_multiplier = "25";
226 pix_clk_hz = "170000000";
228 min_gain_val = "1.0";
229 max_gain_val = "16.0";
231 max_hdr_ratio = "64";
232 min_framerate = "1.462526";
233 max_framerate = "21";
235 max_exp_time = "683709";
238 #address-cells = <1>;
243 imx219_out2: endpoint {
246 remote-endpoint = <&e3322_vi_in2>;
254 compatible = "nvidia,imx219";
257 physical_w = "5.095";
258 physical_h = "4.930";
260 sensor_model ="imx219";
265 /* Defines number of frames to be dropped by driver internally after applying */
266 /* sensor crop settings. Some sensors send corrupt frames after applying */
267 /* crop co-ordinates */
268 post_crop_frame_drop = "0";
270 mode0 { // IMX219_MODE_3280X2464
273 tegra_sinterface = "serial_d";
274 discontinuous_clk = "yes";
275 cil_settletime = "0";
279 pixel_t = "bayer_rggb";
280 readout_orientation = "90";
281 line_length = "3448";
283 mclk_multiplier = "25";
284 pix_clk_hz = "170000000";
286 min_gain_val = "1.0";
287 max_gain_val = "16.0";
289 max_hdr_ratio = "64";
290 min_framerate = "1.462526";
291 max_framerate = "21";
293 max_exp_time = "683709";
296 #address-cells = <1>;
301 imx219_out3: endpoint {
304 remote-endpoint = <&e3322_vi_in3>;
312 compatible = "nvidia,imx219";
315 physical_w = "5.095";
316 physical_h = "4.930";
318 sensor_model ="imx219";
323 /* Defines number of frames to be dropped by driver internally after applying */
324 /* sensor crop settings. Some sensors send corrupt frames after applying */
325 /* crop co-ordinates */
326 post_crop_frame_drop = "0";
328 mode0 { // IMX219_MODE_3280X2464
331 tegra_sinterface = "serial_e";
332 discontinuous_clk = "yes";
333 cil_settletime = "0";
337 pixel_t = "bayer_rggb";
338 readout_orientation = "90";
339 line_length = "3448";
341 mclk_multiplier = "25";
342 pix_clk_hz = "170000000";
344 min_gain_val = "1.0";
345 max_gain_val = "16.0";
347 max_hdr_ratio = "64";
348 min_framerate = "1.462526";
349 max_framerate = "21";
351 max_exp_time = "683709";
354 #address-cells = <1>;
359 imx219_out4: endpoint {
362 remote-endpoint = <&e3322_vi_in4>;
370 compatible = "nvidia,imx219";
373 physical_w = "5.095";
374 physical_h = "4.930";
376 sensor_model ="imx219";
381 /* Defines number of frames to be dropped by driver internally after applying */
382 /* sensor crop settings. Some sensors send corrupt frames after applying */
383 /* crop co-ordinates */
384 post_crop_frame_drop = "0";
386 mode0 { // IMX219_MODE_3280X2464
389 tegra_sinterface = "serial_f";
390 discontinuous_clk = "yes";
391 cil_settletime = "0";
395 pixel_t = "bayer_rggb";
396 readout_orientation = "90";
397 line_length = "3448";
399 mclk_multiplier = "25";
400 pix_clk_hz = "170000000";
402 min_gain_val = "1.0";
403 max_gain_val = "16.0";
405 max_hdr_ratio = "64";
406 min_framerate = "1.462526";
407 max_framerate = "21";
409 max_exp_time = "683709";
412 #address-cells = <1>;
417 imx219_out5: endpoint {
420 remote-endpoint = <&e3322_vi_in5>;
431 /* camera control gpio definitions */
434 tegra-camera-platform {
435 compatible = "nvidia, tegra-camera-platform";
438 * The general guideline for naming badge_info contains 3 parts, and is as follows,
439 * The first part is the camera_board_id for the module; if the module is in a FFD
440 * platform, then use the platform name for this part.
441 * The second part contains the position of the module, ex. “rear” or “front”.
442 * The third part contains the last 6 characters of a part number which is found
443 * in the module's specsheet from the vender.
447 badge = "e3322_bottomleft_A815P2";
448 position = "bottomleft";
451 pcl_id = "v4l2_sensor";
452 devname = "imx219 30-0010";
453 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@0/imx219_a@10";
457 badge = "e3322_centerleft_A815P2";
458 position = "centerleft";
461 pcl_id = "v4l2_sensor";
462 devname = "imx219 31-0010";
463 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@1/imx219_b@10";
467 badge = "e3322_centerleft_A815P2";
468 position = "centerright";
471 pcl_id = "v4l2_sensor";
472 devname = "imx219 32-0010";
473 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@2/imx219_c@10";
477 badge = "e3322_centerleft_A815P2";
478 position = "topleft";
481 pcl_id = "v4l2_sensor";
482 devname = "imx219 33-0010";
483 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@3/imx219_d@10";
487 badge = "e3322_centerleft_A815P2";
488 position = "bottomright";
491 pcl_id = "v4l2_sensor";
492 devname = "imx219 34-0010";
493 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@4/imx219_e@10";
497 badge = "e3322_centerleft_A815P2";
498 position = "topright";
501 pcl_id = "v4l2_sensor";
502 devname = "imx219 35-0010";
503 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@5/imx219_f@10";