GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / media / i2c / ovti,ov5640.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/media/i2c/ovti,ov5640.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: OmniVision OV5640 Image Sensor Device Tree Bindings
8
9 maintainers:
10   - Steve Longerbeam <slongerbeam@gmail.com>
11
12 allOf:
13   - $ref: /schemas/media/video-interface-devices.yaml#
14
15 properties:
16   compatible:
17     const: ovti,ov5640
18
19   reg:
20     maxItems: 1
21
22   clocks:
23     description: XCLK Input Clock
24
25   clock-names:
26     const: xclk
27
28   AVDD-supply:
29     description: Analog voltage supply, 2.8 volts
30
31   DVDD-supply:
32     description: Digital core voltage supply, 1.5 volts
33
34   DOVDD-supply:
35     description: Digital I/O voltage supply, 1.8 volts
36
37   powerdown-gpios:
38     maxItems: 1
39     description: >
40       Reference to the GPIO connected to the powerdown pin, if any.
41
42   reset-gpios:
43     maxItems: 1
44     description: >
45       Reference to the GPIO connected to the reset pin, if any.
46
47   rotation:
48     enum:
49       - 0
50       - 180
51
52   port:
53     description: Digital Output Port
54     $ref: /schemas/graph.yaml#/$defs/port-base
55     additionalProperties: false
56
57     properties:
58       endpoint:
59         $ref: /schemas/media/video-interfaces.yaml#
60         unevaluatedProperties: false
61
62         properties:
63           clock-lanes:
64             const: 0
65
66           data-lanes:
67             minItems: 1
68             maxItems: 2
69             items:
70               enum: [1, 2]
71
72           bus-width:
73             enum: [8, 10]
74
75           data-shift:
76             enum: [0, 2]
77
78 required:
79   - compatible
80   - reg
81   - clocks
82   - clock-names
83   - AVDD-supply
84   - DVDD-supply
85   - DOVDD-supply
86   - port
87
88 additionalProperties: false
89
90 examples:
91   - |
92       #include <dt-bindings/clock/imx6qdl-clock.h>
93       #include <dt-bindings/gpio/gpio.h>
94
95       i2c {
96           #address-cells = <1>;
97           #size-cells = <0>;
98
99           camera@3c {
100               compatible = "ovti,ov5640";
101               pinctrl-names = "default";
102               pinctrl-0 = <&pinctrl_ov5640>;
103               reg = <0x3c>;
104               clocks = <&clks IMX6QDL_CLK_CKO>;
105               clock-names = "xclk";
106               DOVDD-supply = <&vgen4_reg>; /* 1.8v */
107               AVDD-supply = <&vgen3_reg>;  /* 2.8v */
108               DVDD-supply = <&vgen2_reg>;  /* 1.5v */
109               powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
110               reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
111               rotation = <180>;
112
113               port {
114                   /* MIPI CSI-2 bus endpoint */
115                   ov5640_to_mipi_csi2: endpoint {
116                       remote-endpoint = <&mipi_csi2_from_ov5640>;
117                       clock-lanes = <0>;
118                       data-lanes = <1 2>;
119                   };
120               };
121           };
122       };
123
124   - |
125       i2c {
126           #address-cells = <1>;
127           #size-cells = <0>;
128
129           camera@3c {
130               compatible = "ovti,ov5640";
131               pinctrl-names = "default";
132               pinctrl-0 = <&pinctrl_ov5640>;
133               reg = <0x3c>;
134               clocks = <&clk_ext_camera>;
135               clock-names = "xclk";
136               DOVDD-supply = <&vgen4_reg>; /* 1.8v */
137               AVDD-supply = <&vgen3_reg>;  /* 2.8v */
138               DVDD-supply = <&vgen2_reg>;  /* 1.5v */
139
140               port {
141                   /* Parallel bus endpoint */
142                   ov5640_to_parallel: endpoint {
143                       remote-endpoint = <&parallel_from_ov5640>;
144                       bus-width = <8>;
145                       data-shift = <2>; /* lines 9:2 are used */
146                       hsync-active = <0>;
147                       vsync-active = <0>;
148                       pclk-sample = <1>;
149                   };
150               };
151           };
152       };
153
154 ...