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