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>;
92 /* Defines number of frames to be dropped by driver internally after applying */
93 /* sensor crop settings. Some sensors send corrupt frames after applying */
94 /* crop co-ordinates */
95 post_crop_frame_drop = "0";
97 mode0 { // IMX219_MODE_3280X2464
100 tegra_sinterface = "serial_a";
101 discontinuous_clk = "yes";
102 cil_settletime = "0";
106 pixel_t = "bayer_rggb";
107 readout_orientation = "90";
108 line_length = "3448";
110 mclk_multiplier = "25";
111 pix_clk_hz = "170000000";
113 min_gain_val = "1.0";
114 max_gain_val = "16.0";
116 max_hdr_ratio = "64";
117 min_framerate = "1.462526";
118 max_framerate = "21";
120 max_exp_time = "683709";
123 #address-cells = <1>;
128 imx219_out0: endpoint {
131 remote-endpoint = <&e3322_vi_in0>;
139 compatible = "nvidia,imx219";
142 physical_w = "5.095";
143 physical_h = "4.930";
145 sensor_model ="imx219";
151 /* Defines number of frames to be dropped by driver internally after applying */
152 /* sensor crop settings. Some sensors send corrupt frames after applying */
153 /* crop co-ordinates */
154 post_crop_frame_drop = "0";
156 mode0 { // IMX219_MODE_3280X2464
159 tegra_sinterface = "serial_b";
160 discontinuous_clk = "yes";
161 cil_settletime = "0";
165 pixel_t = "bayer_rggb";
166 readout_orientation = "90";
167 line_length = "3448";
169 mclk_multiplier = "25";
170 pix_clk_hz = "170000000";
172 min_gain_val = "1.0";
173 max_gain_val = "16.0";
175 max_hdr_ratio = "64";
176 min_framerate = "1.462526";
177 max_framerate = "21";
179 max_exp_time = "683709";
182 #address-cells = <1>;
187 imx219_out1: endpoint {
190 remote-endpoint = <&e3322_vi_in1>;
198 compatible = "nvidia,imx219";
201 physical_w = "5.095";
202 physical_h = "4.930";
204 sensor_model ="imx219";
210 /* Defines number of frames to be dropped by driver internally after applying */
211 /* sensor crop settings. Some sensors send corrupt frames after applying */
212 /* crop co-ordinates */
213 post_crop_frame_drop = "0";
215 mode0 { // IMX219_MODE_3280X2464
218 tegra_sinterface = "serial_c";
219 discontinuous_clk = "yes";
220 cil_settletime = "0";
224 pixel_t = "bayer_rggb";
225 readout_orientation = "90";
226 line_length = "3448";
228 mclk_multiplier = "25";
229 pix_clk_hz = "170000000";
231 min_gain_val = "1.0";
232 max_gain_val = "16.0";
234 max_hdr_ratio = "64";
235 min_framerate = "1.462526";
236 max_framerate = "21";
238 max_exp_time = "683709";
241 #address-cells = <1>;
246 imx219_out2: endpoint {
249 remote-endpoint = <&e3322_vi_in2>;
257 compatible = "nvidia,imx219";
260 physical_w = "5.095";
261 physical_h = "4.930";
263 sensor_model ="imx219";
269 /* Defines number of frames to be dropped by driver internally after applying */
270 /* sensor crop settings. Some sensors send corrupt frames after applying */
271 /* crop co-ordinates */
272 post_crop_frame_drop = "0";
274 mode0 { // IMX219_MODE_3280X2464
277 tegra_sinterface = "serial_d";
278 discontinuous_clk = "yes";
279 cil_settletime = "0";
283 pixel_t = "bayer_rggb";
284 readout_orientation = "90";
285 line_length = "3448";
287 mclk_multiplier = "25";
288 pix_clk_hz = "170000000";
290 min_gain_val = "1.0";
291 max_gain_val = "16.0";
293 max_hdr_ratio = "64";
294 min_framerate = "1.462526";
295 max_framerate = "21";
297 max_exp_time = "683709";
300 #address-cells = <1>;
305 imx219_out3: endpoint {
308 remote-endpoint = <&e3322_vi_in3>;
316 compatible = "nvidia,imx219";
319 physical_w = "5.095";
320 physical_h = "4.930";
322 sensor_model ="imx219";
328 /* Defines number of frames to be dropped by driver internally after applying */
329 /* sensor crop settings. Some sensors send corrupt frames after applying */
330 /* crop co-ordinates */
331 post_crop_frame_drop = "0";
333 mode0 { // IMX219_MODE_3280X2464
336 tegra_sinterface = "serial_e";
337 discontinuous_clk = "yes";
338 cil_settletime = "0";
342 pixel_t = "bayer_rggb";
343 readout_orientation = "90";
344 line_length = "3448";
346 mclk_multiplier = "25";
347 pix_clk_hz = "170000000";
349 min_gain_val = "1.0";
350 max_gain_val = "16.0";
352 max_hdr_ratio = "64";
353 min_framerate = "1.462526";
354 max_framerate = "21";
356 max_exp_time = "683709";
359 #address-cells = <1>;
364 imx219_out4: endpoint {
367 remote-endpoint = <&e3322_vi_in4>;
375 compatible = "nvidia,imx219";
378 physical_w = "5.095";
379 physical_h = "4.930";
381 sensor_model ="imx219";
387 /* Defines number of frames to be dropped by driver internally after applying */
388 /* sensor crop settings. Some sensors send corrupt frames after applying */
389 /* crop co-ordinates */
390 post_crop_frame_drop = "0";
392 mode0 { // IMX219_MODE_3280X2464
395 tegra_sinterface = "serial_f";
396 discontinuous_clk = "yes";
397 cil_settletime = "0";
401 pixel_t = "bayer_rggb";
402 readout_orientation = "90";
403 line_length = "3448";
405 mclk_multiplier = "25";
406 pix_clk_hz = "170000000";
408 min_gain_val = "1.0";
409 max_gain_val = "16.0";
411 max_hdr_ratio = "64";
412 min_framerate = "1.462526";
413 max_framerate = "21";
415 max_exp_time = "683709";
418 #address-cells = <1>;
423 imx219_out5: endpoint {
426 remote-endpoint = <&e3322_vi_in5>;
437 /* camera control gpio definitions */
440 tegra-camera-platform {
441 compatible = "nvidia, tegra-camera-platform";
444 * The general guideline for naming badge_info contains 3 parts, and is as follows,
445 * The first part is the camera_board_id for the module; if the module is in a FFD
446 * platform, then use the platform name for this part.
447 * The second part contains the position of the module, ex. “rear” or “front”.
448 * The third part contains the last 6 characters of a part number which is found
449 * in the module's specsheet from the vender.
453 badge = "e3322_bottomleft_A815P2";
454 position = "bottomleft";
457 pcl_id = "v4l2_sensor";
458 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@0/imx219_a@10";
462 badge = "e3322_centerleft_A815P2";
463 position = "centerleft";
466 pcl_id = "v4l2_sensor";
467 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@1/imx219_b@10";
471 badge = "e3322_centerleft_A815P2";
472 position = "centerright";
475 pcl_id = "v4l2_sensor";
476 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@2/imx219_c@10";
480 badge = "e3322_centerleft_A815P2";
481 position = "topleft";
484 pcl_id = "v4l2_sensor";
485 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@3/imx219_d@10";
489 badge = "e3322_centerleft_A815P2";
490 position = "bottomright";
493 pcl_id = "v4l2_sensor";
494 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@4/imx219_e@10";
498 badge = "e3322_centerleft_A815P2";
499 position = "topright";
502 pcl_id = "v4l2_sensor";
503 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@5/imx219_f@10";