summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/video/fsl,v4l2-capture.txt
blob: 4da6fd7d34b6ec264d313b00ced767a26602fa4f (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
* Freescale V4L2 Capture for i.MX6DQ/i.MX6SDL

Required board properties for IPUv3 capture:
- clocks: should include the clock provided by i.MX6 to sensor
- clock-names: sensor clock's name should be "ipux_csiy"
  x should be 1 or 2 for i.MX6DQ; should be 1 for i.MX6SDL
  y is 0 or 1 for i.MX6DQ/i.MX6SDL
Note: other detailed information for IPUv3, please refer to
Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt

Required properties for v4l2_capture
- compatible: should be "fsl,imx6q-v4l2-capture"
- ipu_id: ipu id for v4l2 capture device
  should be 0 or 1 for i.MX6DQ; should be 0 for i.MX6SDL
- csi_id: csi id for v4l2 capture device
  should be 0 or 1 for i.MX6DQ/i.MX6SDL
- mclk_source: should be 0 or 1. two mclk sources at most now
- status: should be set to "okay" to enable this device

Required properties for sensor
- compatible:  "fsl,<sensor>"
  please check the supported sensor in the Supported Sensor fields.
- reg: sensor I2C slave address
- pinctrl-names: should be "default" for parallel sensor
- pinctrl-0: should depend on the connection between sensor and i.MX
  connection between sensor and i.MX could be MIPI-CSI2 or legacy parallel
- clocks: should be the clock source provided to sensor.
- clock-names: should be "csi_mclk"
- DOVDD-supply: set according to the board.
- AVDD-supply: set according to the board.
- DVDD-supply: set according to the board.
- pwn-gpios: set according to the board.
- rst-gpios: set according to the board.
- csi_id: csi id for v4l2 capture device
  should be 0 or 1 for i.MX6DQ/i.MX6SDL.
- mclk: should the value of mclk clock send out the sensor. unit is Hz.
- mclk_source: should be 0 or 1 and should be the same as the setting in
  v4l2_capture.
- cvbs: 1 for CVBS input, 0 YPbPr input. This property is only needed for
  adv7180 tv decoder.

Supported Sensor
- ov5640
- ov5642
- ov5640_mipi
- adv7180


Example for IPUv3 including capture settings on imx6q-sabresd.dts:
	ipu1: ipu@02400000 { /* IPU1 */
		compatible = "fsl,imx6q-ipuv3";
		reg = <0x02400000 0x400000>;
		interrupts = <0 5 0x04>, < 0 6 0x04>;
		clocks = <&clks 130>, <&clks 131>, <&clks 132>, <&clks 39>, <&clks 40>, <&clks 169>;
		clock-names = "ipu1", "ipu1_di0", "ipu1_di1", "ipu1_di0_sel", "ipu1_di1_sel", "ipu1_csi0";
		status = "disabled";
	};

Examples for v4l2_capture:
	v4l2_cap {
		compatible = "fsl,imx6q-v4l2-capture";
		ipu_id = <0>;
		csi_id = <0>;
		mclk_source = <0>;
		status = "okay";
	};

Examples for sensors:
	ov5642: ov5642@3c {
		compatible = "fsl,ov5642";
		reg = <0x3c>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ipu1_csi0_1>;
		clocks = <&clks 169>;
		clock-names = "csi_mclk";
		DOVDD-supply = <&vgen4_reg>; /* 1.8v */
		AVDD-supply = <&vgen5_reg>;  /* 2.8v, on rev C board is VGEN3 */
		DVDD-supply = <&vgen2_reg>;  /* 1.5v*/
		pwn-gpios = <&gpio1 16 1>;   /* active low: SD1_DAT0 */
		rst-gpios = <&gpio1 17 0>;   /* active high: SD1_DAT1 */
		csi_id = <0>;
		mclk = <24000000>;
		mclk_source = <0>;
	};

	adv7180: adv7180@21 {
		compatible = "fsl,adv7180";
		reg = <0x21>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ipu1_csi0_2>;
		clocks = <&clks 169>;
		clock-names = "csi_mclk";
		DOVDD-supply = <&reg_3p3v>; /* 3.3v, enabled via 2.8 VGEN6 */
		AVDD-supply = <&reg_3p3v>;  /* 1.8v */
		DVDD-supply = <&reg_3p3v>;  /* 1.8v */
		PVDD-supply = <&reg_3p3v>;  /* 1.8v */
		pwn-gpios = <&max7310_2 2 0>;
		csi_id = <0>;
		mclk = <24000000>;
		mclk_source = <0>;
		cvbs = <1>;
	};