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 /* camera control gpio definitions */
31 e3333_vi_in0: endpoint {
34 remote-endpoint = <&e3333_ov5693_out0>;
39 e3333_vi_in1: endpoint {
42 remote-endpoint = <&e3333_ov5693_out1>;
47 e3333_vi_in2: endpoint {
50 remote-endpoint = <&e3333_ov5693_out2>;
55 e3333_vi_in3: endpoint {
58 remote-endpoint = <&e3333_ov5693_out3>;
63 e3333_vi_in4: endpoint {
66 remote-endpoint = <&e3333_ov5693_out4>;
71 e3333_vi_in5: endpoint {
74 remote-endpoint = <&e3333_ov5693_out5>;
88 compatible = "nvidia,ov5693";
95 /* Defines number of frames to be dropped by driver internally after applying */
96 /* sensor crop settings. Some sensors send corrupt frames after applying */
97 /* crop co-ordinates */
98 post_crop_frame_drop = "0";
100 mode0 { // OV5693_MODE_2592X1944
103 tegra_sinterface = "serial_a";
104 discontinuous_clk = "no";
105 dpcm_enable = "false";
106 cil_settletime = "0";
109 pixel_t = "bayer_bggr";
110 readout_orientation = "90";
111 line_length = "2688";
113 mclk_multiplier = "17.0";
114 pix_clk_hz = "160000000";
115 min_gain_val = "1.0";
118 max_hdr_ratio = "64";
119 min_framerate = "1.816577";
120 max_framerate = "30";
122 max_exp_time = "550385";
124 mode1 { //OV5693_MODE_2592X1458
127 tegra_sinterface = "serial_a";
128 discontinuous_clk = "no";
129 dpcm_enable = "false";
130 cil_settletime = "0";
133 pixel_t = "bayer_bggr";
134 readout_orientation = "90";
135 line_length = "2688";
137 mclk_multiplier = "17.0";
138 pix_clk_hz = "160000000";
139 min_gain_val = "1.0";
142 max_hdr_ratio = "64";
143 min_framerate = "1.816577";
144 max_framerate = "30";
146 max_exp_time = "550385";
148 mode2 { //OV5693_MODE_1280X720
151 tegra_sinterface = "serial_a";
152 discontinuous_clk = "no";
153 dpcm_enable = "false";
154 cil_settletime = "0";
157 pixel_t = "bayer_bggr";
158 readout_orientation = "90";
159 line_length = "1752";
161 mclk_multiplier = "17.0";
162 pix_clk_hz = "160000000";
163 min_gain_val = "1.0";
166 max_hdr_ratio = "64";
167 min_framerate = "2.787078";
168 max_framerate = "120";
170 max_exp_time = "358733";
173 mode3 { //OV5693_MODE_2592X1944_HDR
176 tegra_sinterface = "serial_a";
177 discontinuous_clk = "no";
178 dpcm_enable = "false";
179 cil_settletime = "0";
182 pixel_t = "hdr_bggr";
183 readout_orientation = "90";
184 line_length = "3696";
186 mclk_multiplier = "19.0";
187 pix_clk_hz = "176000000";
188 min_gain_val = "1.0";
191 max_hdr_ratio = "64";
192 min_framerate = "1.453262";
193 max_framerate = "24";
195 max_exp_time = "687981";
198 #address-cells = <1>;
202 e3333_ov5693_out0: endpoint {
205 remote-endpoint = <&e3333_vi_in0>;
213 compatible = "nvidia,ov5693";
218 physical_w = "3.674";
219 physical_h = "2.738";
220 /* Defines number of frames to be dropped by driver internally after applying */
221 /* sensor crop settings. Some sensors send corrupt frames after applying */
222 /* crop co-ordinates */
223 post_crop_frame_drop = "0";
225 mode0 { // OV5693_MODE_2592X1944
228 tegra_sinterface = "serial_b";
229 discontinuous_clk = "no";
230 dpcm_enable = "false";
231 cil_settletime = "0";
234 pixel_t = "bayer_bggr";
235 readout_orientation = "90";
236 line_length = "2688";
238 mclk_multiplier = "17.0";
239 pix_clk_hz = "160000000";
240 min_gain_val = "1.0";
243 max_hdr_ratio = "64";
244 min_framerate = "1.816577";
245 max_framerate = "30";
247 max_exp_time = "550385";
249 mode1 { //OV5693_MODE_2592X1458
252 tegra_sinterface = "serial_b";
253 discontinuous_clk = "no";
254 dpcm_enable = "false";
255 cil_settletime = "0";
258 pixel_t = "bayer_bggr";
259 readout_orientation = "90";
260 line_length = "2688";
262 mclk_multiplier = "17.0";
263 pix_clk_hz = "160000000";
264 min_gain_val = "1.0";
267 max_hdr_ratio = "64";
268 min_framerate = "1.816577";
269 max_framerate = "30";
271 max_exp_time = "550385";
273 mode2 { //OV5693_MODE_1280X720
276 tegra_sinterface = "serial_b";
277 discontinuous_clk = "no";
278 dpcm_enable = "false";
279 cil_settletime = "0";
282 pixel_t = "bayer_bggr";
283 readout_orientation = "90";
284 line_length = "1752";
286 mclk_multiplier = "17.0";
287 pix_clk_hz = "160000000";
288 min_gain_val = "1.0";
291 max_hdr_ratio = "64";
292 min_framerate = "2.787078";
293 max_framerate = "120";
295 max_exp_time = "358733";
298 mode3 { //OV5693_MODE_2592X1944_HDR
301 tegra_sinterface = "serial_b";
302 discontinuous_clk = "no";
303 dpcm_enable = "false";
304 cil_settletime = "0";
307 pixel_t = "hdr_bggr";
308 readout_orientation = "90";
309 line_length = "3696";
311 mclk_multiplier = "19.0";
312 pix_clk_hz = "176000000";
313 min_gain_val = "1.0";
316 max_hdr_ratio = "64";
317 min_framerate = "1.453262";
318 max_framerate = "24";
320 max_exp_time = "687981";
323 #address-cells = <1>;
327 e3333_ov5693_out1: endpoint {
330 remote-endpoint = <&e3333_vi_in1>;
338 compatible = "nvidia,ov5693";
343 physical_w = "3.674";
344 physical_h = "2.738";
345 /* Defines number of frames to be dropped by driver internally after applying */
346 /* sensor crop settings. Some sensors send corrupt frames after applying */
347 /* crop co-ordinates */
348 post_crop_frame_drop = "0";
350 mode0 { // OV5693_MODE_2592X1944
353 tegra_sinterface = "serial_c";
354 discontinuous_clk = "no";
355 dpcm_enable = "false";
356 cil_settletime = "0";
359 pixel_t = "bayer_bggr";
360 readout_orientation = "90";
361 line_length = "2688";
363 mclk_multiplier = "17.0";
364 pix_clk_hz = "160000000";
365 min_gain_val = "1.0";
368 max_hdr_ratio = "64";
369 min_framerate = "1.816577";
370 max_framerate = "30";
372 max_exp_time = "550385";
374 mode1 { //OV5693_MODE_2592X1458
377 tegra_sinterface = "serial_c";
378 discontinuous_clk = "no";
379 dpcm_enable = "false";
380 cil_settletime = "0";
383 pixel_t = "bayer_bggr";
384 readout_orientation = "90";
385 line_length = "2688";
387 mclk_multiplier = "17.0";
388 pix_clk_hz = "160000000";
389 min_gain_val = "1.0";
392 max_hdr_ratio = "64";
393 min_framerate = "1.816577";
394 max_framerate = "30";
396 max_exp_time = "550385";
398 mode2 { //OV5693_MODE_1280X720
401 tegra_sinterface = "serial_c";
402 discontinuous_clk = "no";
403 dpcm_enable = "false";
404 cil_settletime = "0";
407 pixel_t = "bayer_bggr";
408 readout_orientation = "90";
409 line_length = "1752";
411 mclk_multiplier = "17.0";
412 pix_clk_hz = "160000000";
413 min_gain_val = "1.0";
416 max_hdr_ratio = "64";
417 min_framerate = "2.787078";
418 max_framerate = "120";
420 max_exp_time = "358733";
423 mode3 { //OV5693_MODE_2592X1944_HDR
426 tegra_sinterface = "serial_c";
427 discontinuous_clk = "no";
428 dpcm_enable = "false";
429 cil_settletime = "0";
432 pixel_t = "hdr_bggr";
433 readout_orientation = "90";
434 line_length = "3696";
436 mclk_multiplier = "19.0";
437 pix_clk_hz = "176000000";
438 min_gain_val = "1.0";
441 max_hdr_ratio = "64";
442 min_framerate = "1.453262";
443 max_framerate = "24";
445 max_exp_time = "687981";
448 #address-cells = <1>;
452 e3333_ov5693_out2: endpoint {
455 remote-endpoint = <&e3333_vi_in2>;
463 compatible = "nvidia,ov5693";
468 physical_w = "3.674";
469 physical_h = "2.738";
470 /* Defines number of frames to be dropped by driver internally after applying */
471 /* sensor crop settings. Some sensors send corrupt frames after applying */
472 /* crop co-ordinates */
473 post_crop_frame_drop = "0";
475 mode0 { // OV5693_MODE_2592X1944
478 tegra_sinterface = "serial_d";
479 discontinuous_clk = "no";
480 dpcm_enable = "false";
481 cil_settletime = "0";
484 pixel_t = "bayer_bggr";
485 readout_orientation = "90";
486 line_length = "2688";
488 mclk_multiplier = "17.0";
489 pix_clk_hz = "160000000";
490 min_gain_val = "1.0";
493 max_hdr_ratio = "64";
494 min_framerate = "1.816577";
495 max_framerate = "30";
497 max_exp_time = "550385";
499 mode1 { //OV5693_MODE_2592X1458
502 tegra_sinterface = "serial_d";
503 discontinuous_clk = "no";
504 dpcm_enable = "false";
505 cil_settletime = "0";
508 pixel_t = "bayer_bggr";
509 readout_orientation = "90";
510 line_length = "2688";
512 mclk_multiplier = "17.0";
513 pix_clk_hz = "160000000";
514 min_gain_val = "1.0";
517 max_hdr_ratio = "64";
518 min_framerate = "1.816577";
519 max_framerate = "30";
521 max_exp_time = "550385";
523 mode2 { //OV5693_MODE_1280X720
526 tegra_sinterface = "serial_d";
527 discontinuous_clk = "no";
528 dpcm_enable = "false";
529 cil_settletime = "0";
532 pixel_t = "bayer_bggr";
533 readout_orientation = "90";
534 line_length = "1752";
536 mclk_multiplier = "17.0";
537 pix_clk_hz = "160000000";
538 min_gain_val = "1.0";
541 max_hdr_ratio = "64";
542 min_framerate = "2.787078";
543 max_framerate = "120";
545 max_exp_time = "358733";
548 mode3 { //OV5693_MODE_2592X1944_HDR
551 tegra_sinterface = "serial_d";
552 discontinuous_clk = "no";
553 dpcm_enable = "false";
554 cil_settletime = "0";
557 pixel_t = "hdr_bggr";
558 readout_orientation = "90";
559 line_length = "3696";
561 mclk_multiplier = "19.0";
562 pix_clk_hz = "176000000";
563 min_gain_val = "1.0";
566 max_hdr_ratio = "64";
567 min_framerate = "1.453262";
568 max_framerate = "24";
570 max_exp_time = "687981";
573 #address-cells = <1>;
577 e3333_ov5693_out3: endpoint {
580 remote-endpoint = <&e3333_vi_in3>;
588 compatible = "nvidia,ov5693";
593 physical_w = "3.674";
594 physical_h = "2.738";
595 /* Defines number of frames to be dropped by driver internally after applying */
596 /* sensor crop settings. Some sensors send corrupt frames after applying */
597 /* crop co-ordinates */
598 post_crop_frame_drop = "0";
600 mode0 { // OV5693_MODE_2592X1944
603 tegra_sinterface = "serial_e";
604 discontinuous_clk = "no";
605 dpcm_enable = "false";
606 cil_settletime = "0";
609 pixel_t = "bayer_bggr";
610 readout_orientation = "90";
611 line_length = "2688";
613 mclk_multiplier = "17.0";
614 pix_clk_hz = "160000000";
615 min_gain_val = "1.0";
618 max_hdr_ratio = "64";
619 min_framerate = "1.816577";
620 max_framerate = "30";
622 max_exp_time = "550385";
624 mode1 { //OV5693_MODE_2592X1458
627 tegra_sinterface = "serial_e";
628 discontinuous_clk = "no";
629 dpcm_enable = "false";
630 cil_settletime = "0";
633 pixel_t = "bayer_bggr";
634 readout_orientation = "90";
635 line_length = "2688";
637 mclk_multiplier = "17.0";
638 pix_clk_hz = "160000000";
639 min_gain_val = "1.0";
642 max_hdr_ratio = "64";
643 min_framerate = "1.816577";
644 max_framerate = "30";
646 max_exp_time = "550385";
648 mode2 { //OV5693_MODE_1280X720
651 tegra_sinterface = "serial_e";
652 discontinuous_clk = "no";
653 dpcm_enable = "false";
654 cil_settletime = "0";
657 pixel_t = "bayer_bggr";
658 readout_orientation = "90";
659 line_length = "1752";
661 mclk_multiplier = "17.0";
662 pix_clk_hz = "160000000";
663 min_gain_val = "1.0";
666 max_hdr_ratio = "64";
667 min_framerate = "2.787078";
668 max_framerate = "120";
670 max_exp_time = "358733";
673 mode3 { //OV5693_MODE_2592X1944_HDR
676 tegra_sinterface = "serial_e";
677 discontinuous_clk = "no";
678 dpcm_enable = "false";
679 cil_settletime = "0";
682 pixel_t = "hdr_bggr";
683 readout_orientation = "90";
684 line_length = "3696";
686 mclk_multiplier = "19.0";
687 pix_clk_hz = "176000000";
688 min_gain_val = "1.0";
691 max_hdr_ratio = "64";
692 min_framerate = "1.453262";
693 max_framerate = "24";
695 max_exp_time = "687981";
698 #address-cells = <1>;
702 e3333_ov5693_out4: endpoint {
705 remote-endpoint = <&e3333_vi_in4>;
713 compatible = "nvidia,ov5693";
718 physical_w = "3.674";
719 physical_h = "2.738";
720 /* Defines number of frames to be dropped by driver internally after applying */
721 /* sensor crop settings. Some sensors send corrupt frames after applying */
722 /* crop co-ordinates */
723 post_crop_frame_drop = "0";
725 mode0 { // OV5693_MODE_2592X1944
728 tegra_sinterface = "serial_f";
729 discontinuous_clk = "no";
730 dpcm_enable = "false";
731 cil_settletime = "0";
734 pixel_t = "bayer_bggr";
735 readout_orientation = "90";
736 line_length = "2688";
738 mclk_multiplier = "17.0";
739 pix_clk_hz = "160000000";
740 min_gain_val = "1.0";
743 max_hdr_ratio = "64";
744 min_framerate = "1.816577";
745 max_framerate = "30";
747 max_exp_time = "550385";
749 mode1 { //OV5693_MODE_2592X1458
752 tegra_sinterface = "serial_f";
753 discontinuous_clk = "no";
754 dpcm_enable = "false";
755 cil_settletime = "0";
758 pixel_t = "bayer_bggr";
759 readout_orientation = "90";
760 line_length = "2688";
762 mclk_multiplier = "17.0";
763 pix_clk_hz = "160000000";
764 min_gain_val = "1.0";
767 max_hdr_ratio = "64";
768 min_framerate = "1.816577";
769 max_framerate = "30";
771 max_exp_time = "550385";
773 mode2 { //OV5693_MODE_1280X720
776 tegra_sinterface = "serial_f";
777 discontinuous_clk = "no";
778 dpcm_enable = "false";
779 cil_settletime = "0";
782 pixel_t = "bayer_bggr";
783 readout_orientation = "90";
784 line_length = "1752";
786 mclk_multiplier = "17.0";
787 pix_clk_hz = "160000000";
788 min_gain_val = "1.0";
791 max_hdr_ratio = "64";
792 min_framerate = "2.787078";
793 max_framerate = "120";
795 max_exp_time = "358733";
798 mode3 { //OV5693_MODE_2592X1944_HDR
801 tegra_sinterface = "serial_f";
802 discontinuous_clk = "no";
803 dpcm_enable = "false";
804 cil_settletime = "0";
807 pixel_t = "hdr_bggr";
808 readout_orientation = "90";
809 line_length = "3696";
811 mclk_multiplier = "19.0";
812 pix_clk_hz = "176000000";
813 min_gain_val = "1.0";
816 max_hdr_ratio = "64";
817 min_framerate = "1.453262";
818 max_framerate = "24";
820 max_exp_time = "687981";
823 #address-cells = <1>;
827 e3333_ov5693_out5: endpoint {
830 remote-endpoint = <&e3333_vi_in5>;
841 /* camera control gpio definitions */
844 tegra-camera-platform {
845 compatible = "nvidia, tegra-camera-platform";
848 * The general guideline for naming badge_info contains 3 parts, and is as follows,
849 * The first part is the camera_board_id for the module; if the module is in a FFD
850 * platform, then use the platform name for this part.
851 * The second part contains the position of the module, ex. “rear” or “front”.
852 * The third part contains the last 6 characters of a part number which is found
853 * in the module's specsheet from the vender.
857 badge = "e3333_bottomleft_P5V27C";
858 position = "bottomleft";
861 pcl_id = "v4l2_sensor";
862 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@0/ov5693_a@36";
866 badge = "e3333_centerleft_P5V27C";
867 position = "centerleft";
870 pcl_id = "v4l2_sensor";
871 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@1/ov5693_b@36";
875 badge = "e3333_centerright_P5V27C";
876 position = "centerright";
879 pcl_id = "v4l2_sensor";
880 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@2/ov5693_c@36";
884 badge = "e3333_topleft_P5V27C";
885 position = "topleft";
888 pcl_id = "v4l2_sensor";
889 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@3/ov5693_d@36";
893 badge = "e3333_bottomright_P5V27C";
894 position = "bottomright";
897 pcl_id = "v4l2_sensor";
898 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@4/ov5693_e@36";
902 badge = "e3333_topright_P5V27C";
903 position = "topright";
906 pcl_id = "v4l2_sensor";
907 proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@77/i2c@5/ov5693_f@36";