summaryrefslogtreecommitdiff
path: root/overlays/apalis-imx6_ov5640_overlay.dts
blob: 277e103703e8c30240f47a0fe2da15e5aabec21a (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
// CSI Camera Module 5MP OV5640 orderable at Toradex.

/dts-v1/;
/plugin/;

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

/ {
	compatible = "toradex,apalis_imx6q";

	clk_ov5640_osc: clk_ov5640_osc_int {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <22000000>;
	};

	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>;
	};
};

&i2c1 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	ov5640_mipi@3c {
		compatible = "ovti,ov5640";
		reg = <0x3c>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_cam_mclk_stash &pinctrl_apalis_gpio1 &pinctrl_csi_reset>;
		clocks = <&clk_ov5640_osc>;
		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>;
			};
		};
	};
};

&mipi_csi {
	#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>;
		};
	};
};

&iomuxc {
	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_stash: cammclkstashgrp {
		fsl,pins = <
			/* CAM sys_mclk */
			MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x0000
		>;
	};

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