summaryrefslogtreecommitdiff
path: root/overlays/apalis-imx6_ov5640_v11a_overlay.dts
blob: 3bb877e17d598ca82b2a67d368afcc6658b00a49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// CSI Camera Module 5MP OV5640 orderable at Toradex.

/dts-v1/;
/plugin/;

#include <dt-bindings/clock/imx6qdl-clock.h>
#include <dt-bindings/gpio/gpio.h>
#include <imx6q-pinfunc.h>

/ {
	compatible = "toradex,apalis_imx6q";

	fragment@0 {
		target-path="/";
		__overlay__ {
			reg_ov5640_1v8_d_o_vdd: regulator-ov5640-1v8-d-o-vdd {
				compatible = "regulator-fixed";
				regulator-name = "DOVDD/DVDD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				vin-supply = <&reg_3v3_sw>;
			};

			reg_ov5640_2v8_a_vdd: regulator-ov5640-2v8-a-vdd {
				compatible = "regulator-fixed";
				regulator-name = "AVDD/AFVDD_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
				vin-supply = <&reg_3v3_sw>;
			};
		};
	};

	fragment@1 {
		target-path = "/soc/aips-bus@2100000/i2c@21a8000";
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			status = "okay";

			ov5640_mipi@3c {
				compatible = "ovti,ov5640";
				reg = <0x3c>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_cam_mclk &pinctrl_apalis_gpio1 &pinctrl_csi_reset>;
				clocks = <&clks IMX6QDL_CLK_CKO2>;
				clock-names = "xclk";
				DOVDD-supply = <&reg_ov5640_1v8_d_o_vdd>;
				AVDD-supply = <&reg_ov5640_2v8_a_vdd>;
				DVDD-supply = <&reg_ov5640_1v8_d_o_vdd>;
				powerdown-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
				reset-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
				status = "okay";

				port {
					/* MIPI CSI bus endpoint */
					ov5640_to_mipi_csi2: endpoint {
						remote-endpoint = <&mipi_csi_from_ov5640>;
						clock-lanes = <0>;
						data-lanes = <1 2>;
					};
				};
			};
		};
	};

	fragment@2 {
		target-path = "/soc/aips-bus@2100000/mipi@21dc000/";
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			status = "okay";

			port@0 {
				reg = <0>;

				mipi_csi_from_ov5640: endpoint {
					remote-endpoint = <&ov5640_to_mipi_csi2>;
					clock-lanes = <0>;
					data-lanes = <1 2>;
				};
			};
		};
	};

	fragment@3 {
		target-path = "/soc/aips-bus@2000000/iomuxc@20e0000/";
		__overlay__ {
			pinctrl-0 = <&pinctrl_apalis_gpio2 &pinctrl_apalis_gpio3
				     &pinctrl_apalis_gpio4 &pinctrl_apalis_gpio5
				     &pinctrl_apalis_gpio6 &pinctrl_apalis_gpio7
				     &pinctrl_apalis_gpio8
				    >;

			pinctrl_cam_mclk: cammclkgrp {
				fsl,pins = <
					/* CAM sys_mclk */
					MX6QDL_PAD_NANDF_CS2__CCM_CLKO2  0x00b0
				>;
			};

			pinctrl_csi_reset: csiresetgrp {
				fsl,pins = <
					MX6QDL_PAD_NANDF_D4__GPIO2_IO04 0x130b0 /* reset */
				>;
			};
		};
	};
};