Message ID | 20200715140951.90753-2-jacopo+renesas@jmondi.org (mailing list archive) |
---|---|
State | New |
Delegated to: | Kieran Bingham |
Headers | show |
Series | dt-bindings: media: i2c: Convert to json-schema | expand |
Hi Jacopo, On 7/15/20 7:09 AM, Jacopo Mondi wrote: > Convert the ov5640 bindings document to json-schema and update > the MAINTAINERS file accordingly. > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > Hi Steve, > I've added myself as maintainer in the bindings, with your ack > I would be happy to add myself as maintainer or reviewer for this driver > in MAINTAINERS, as I've recently been looking after this driver, mostly > for the MIPI CSI-2 interface part. Sure that's fine, I have not been involved in this driver at all, except for the initial commit. I don't think I should be listed as a MAINTAINER of this driver or its bindings either, so feel free to remove my name from both. Steve > > Thanks > j > > --- > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > MAINTAINERS | 1 + > 3 files changed, 182 insertions(+), 92 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt > deleted file mode 100644 > index c97c2f2da12d..000000000000 > --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt > +++ /dev/null > @@ -1,92 +0,0 @@ > -* Omnivision OV5640 MIPI CSI-2 / parallel sensor > - > -Required Properties: > -- compatible: should be "ovti,ov5640" > -- clocks: reference to the xclk input clock. > -- clock-names: should be "xclk". > -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts > -- AVDD-supply: Analog voltage supply, 2.8 volts > -- DVDD-supply: Digital core voltage supply, 1.5 volts > - > -Optional Properties: > -- reset-gpios: reference to the GPIO connected to the reset pin, if any. > - This is an active low signal to the OV5640. > -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, > - if any. This is an active high signal to the OV5640. > -- rotation: as defined in > - Documentation/devicetree/bindings/media/video-interfaces.txt, > - valid values are 0 (sensor mounted upright) and 180 (sensor > - mounted upside down). > - > -The device node must contain one 'port' child node for its digital output > -video port, in accordance with the video interface bindings defined in > -Documentation/devicetree/bindings/media/video-interfaces.txt. > - > -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > - > -Endpoint node required properties for CSI-2 connection are: > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) > -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) > - > -Endpoint node required properties for parallel connection are: > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > -- bus-width: shall be set to <8> for 8 bits parallel bus > - or <10> for 10 bits parallel bus > -- data-shift: shall be set to <2> for 8 bits parallel bus > - (lines 9:2 are used) or <0> for 10 bits parallel bus > -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock > - signal. > - > -Examples: > - > -&i2c1 { > - ov5640: camera@3c { > - compatible = "ovti,ov5640"; > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_ov5640>; > - reg = <0x3c>; > - clocks = <&clks IMX6QDL_CLK_CKO>; > - clock-names = "xclk"; > - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > - AVDD-supply = <&vgen3_reg>; /* 2.8v */ > - DVDD-supply = <&vgen2_reg>; /* 1.5v */ > - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > - rotation = <180>; > - > - port { > - /* MIPI CSI-2 bus endpoint */ > - ov5640_to_mipi_csi2: endpoint { > - remote-endpoint = <&mipi_csi2_from_ov5640>; > - clock-lanes = <0>; > - data-lanes = <1 2>; > - }; > - }; > - }; > -}; > - > -&i2c1 { > - ov5640: camera@3c { > - compatible = "ovti,ov5640"; > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_ov5640>; > - reg = <0x3c>; > - clocks = <&clk_ext_camera>; > - clock-names = "xclk"; > - > - port { > - /* Parallel bus endpoint */ > - ov5640_to_parallel: endpoint { > - remote-endpoint = <¶llel_from_ov5640>; > - bus-width = <8>; > - data-shift = <2>; /* lines 9:2 are used */ > - hsync-active = <0>; > - vsync-active = <0>; > - pclk-sample = <1>; > - }; > - }; > - }; > -}; > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > new file mode 100644 > index 000000000000..9c32262a3621 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > @@ -0,0 +1,181 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor > + > +maintainers: > + - Steve Longerbeam <slongerbeam@gmail.com> > + - Jacopo Mondi <jacopo@jmondi.org> > + > +description: -| > + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, > + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data > + interface and an I2C-compatible (CCI) control interface. > + > +properties: > + compatible: > + const: ovti,ov5640 > + > + reg: > + description: I2C device address > + maxItems: 1 > + > + clocks: > + description: Reference to the xclk input clock. > + maxItems: 1 > + > + clock-names: > + description: Should be "xclk". > + maxItems: 1 > + > + DOVDD-supply: > + description: Digital I/O voltage supply, 1.8 volts. > + maxItems: 1 > + > + AVDD-supply: > + description: Analog voltage supply, 2.8 volts. > + maxItems: 1 > + > + DVDD-supply: > + description: Digital core voltage supply. > + maxItems: 1 > + > + reset-gpios: > + description: | > + Reference to the GPIO connected to the reset pin, if any. This is an > + active low signal to the OV5640. > + maxItems: 1 > + > + powerdown-gpios: > + description: | > + Reference tot he GPIO connected to the powerdown pin, if any. This is an > + active high signal to the OV5640. > + maxItems: 1 > + > + rotation: > + description: | > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > + down). > + > + port: > + type: object > + description: | > + The device node must contain one 'port' child node for its digital output > + video port, in accordance with the video interface bindings defined in > + Documentation/devicetree/bindings/media/video-interfaces.txt. > + > + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > + > + properties: > + endpoint: > + type: object > + properties: > + remote-endpoint: > + description: A phandle to the bus receiver's endpoint node. > + > + clock-lanes: > + description: Should be set to 0 (clock lane on hardware lane 0). > + > + data-lanes: > + description: | > + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). > + > + bus-width: > + description: | > + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits > + parallel bus. > + > + data-shift: > + description: | > + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or > + <0> for 10 bits parallel bus. > + > + hsync-active: > + description: | > + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > + > + vsync-active: > + description: | > + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > + > + pclk-sample: > + description: | > + Sample data on rising (1) or falling (0) edge of the pixel clock > + signal. > + > + required: > + - remote-endpoint > + > + additionalProperties: false > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - DOVDD-supply > + - AVDD-supply > + - DVDD-supply > + - port > + > +examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/clock/imx6qdl-clock.h> > + > + i2c0 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + clocks = <&clks IMX6QDL_CLK_CKO>; > + clock-names = "xclk"; > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > + rotation = <180>; > + > + port { > + ov5640_to_mipi_csi2: endpoint { > + remote-endpoint = <&mipi_csi2_from_ov5640>; > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > + }; > + > + i2c1 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + clocks = <&clks IMX6QDL_CLK_CKO>; > + clock-names = "xclk"; > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > + rotation = <180>; > + > + port { > + ov5640_to_parallel: endpoint { > + remote-endpoint = <¶llel_from_ov5640>; > + bus-width = <8>; > + }; > + }; > + }; > + }; > + > +... > diff --git a/MAINTAINERS b/MAINTAINERS > index c74d25c58e1a..0160d7567ed3 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org > S: Maintained > T: git git://linuxtv.org/media_tree.git > F: drivers/media/i2c/ov5640.c > +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > OMNIVISION OV5647 SENSOR DRIVER > M: Jacopo Mondi <jacopo@jmondi.org> > -- > 2.27.0 >
Hi Jacopo, Thank you for the patch. On Wed, Jul 15, 2020 at 04:09:44PM +0200, Jacopo Mondi wrote: > Convert the ov5640 bindings document to json-schema and update > the MAINTAINERS file accordingly. > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > Hi Steve, > I've added myself as maintainer in the bindings, with your ack > I would be happy to add myself as maintainer or reviewer for this driver > in MAINTAINERS, as I've recently been looking after this driver, mostly > for the MIPI CSI-2 interface part. > > Thanks > j > > --- > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > MAINTAINERS | 1 + > 3 files changed, 182 insertions(+), 92 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt > deleted file mode 100644 > index c97c2f2da12d..000000000000 > --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt > +++ /dev/null > @@ -1,92 +0,0 @@ > -* Omnivision OV5640 MIPI CSI-2 / parallel sensor > - > -Required Properties: > -- compatible: should be "ovti,ov5640" > -- clocks: reference to the xclk input clock. > -- clock-names: should be "xclk". > -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts > -- AVDD-supply: Analog voltage supply, 2.8 volts > -- DVDD-supply: Digital core voltage supply, 1.5 volts > - > -Optional Properties: > -- reset-gpios: reference to the GPIO connected to the reset pin, if any. > - This is an active low signal to the OV5640. > -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, > - if any. This is an active high signal to the OV5640. > -- rotation: as defined in > - Documentation/devicetree/bindings/media/video-interfaces.txt, > - valid values are 0 (sensor mounted upright) and 180 (sensor > - mounted upside down). > - > -The device node must contain one 'port' child node for its digital output > -video port, in accordance with the video interface bindings defined in > -Documentation/devicetree/bindings/media/video-interfaces.txt. > - > -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > - > -Endpoint node required properties for CSI-2 connection are: > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) > -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) > - > -Endpoint node required properties for parallel connection are: > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > -- bus-width: shall be set to <8> for 8 bits parallel bus > - or <10> for 10 bits parallel bus > -- data-shift: shall be set to <2> for 8 bits parallel bus > - (lines 9:2 are used) or <0> for 10 bits parallel bus > -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock > - signal. > - > -Examples: > - > -&i2c1 { > - ov5640: camera@3c { > - compatible = "ovti,ov5640"; > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_ov5640>; > - reg = <0x3c>; > - clocks = <&clks IMX6QDL_CLK_CKO>; > - clock-names = "xclk"; > - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > - AVDD-supply = <&vgen3_reg>; /* 2.8v */ > - DVDD-supply = <&vgen2_reg>; /* 1.5v */ > - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > - rotation = <180>; > - > - port { > - /* MIPI CSI-2 bus endpoint */ > - ov5640_to_mipi_csi2: endpoint { > - remote-endpoint = <&mipi_csi2_from_ov5640>; > - clock-lanes = <0>; > - data-lanes = <1 2>; > - }; > - }; > - }; > -}; > - > -&i2c1 { > - ov5640: camera@3c { > - compatible = "ovti,ov5640"; > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_ov5640>; > - reg = <0x3c>; > - clocks = <&clk_ext_camera>; > - clock-names = "xclk"; > - > - port { > - /* Parallel bus endpoint */ > - ov5640_to_parallel: endpoint { > - remote-endpoint = <¶llel_from_ov5640>; > - bus-width = <8>; > - data-shift = <2>; /* lines 9:2 are used */ > - hsync-active = <0>; > - vsync-active = <0>; > - pclk-sample = <1>; > - }; > - }; > - }; > -}; > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > new file mode 100644 > index 000000000000..9c32262a3621 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > @@ -0,0 +1,181 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor > + > +maintainers: > + - Steve Longerbeam <slongerbeam@gmail.com> > + - Jacopo Mondi <jacopo@jmondi.org> > + > +description: -| > + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, s/OV5640/The OV5640/ s/RBG/RGB/ > + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data > + interface and an I2C-compatible (CCI) control interface. > + > +properties: > + compatible: > + const: ovti,ov5640 > + > + reg: > + description: I2C device address > + maxItems: 1 > + > + clocks: > + description: Reference to the xclk input clock. I'd drop this, it's implied by the clock-names > + maxItems: 1 > + > + clock-names: > + description: Should be "xclk". This should be replaced with const: xclk > + maxItems: 1 > + > + DOVDD-supply: > + description: Digital I/O voltage supply, 1.8 volts. > + maxItems: 1 > + > + AVDD-supply: > + description: Analog voltage supply, 2.8 volts. > + maxItems: 1 > + > + DVDD-supply: > + description: Digital core voltage supply. > + maxItems: 1 > + > + reset-gpios: > + description: | > + Reference to the GPIO connected to the reset pin, if any. This is an > + active low signal to the OV5640. > + maxItems: 1 > + > + powerdown-gpios: > + description: | > + Reference tot he GPIO connected to the powerdown pin, if any. This is an > + active high signal to the OV5640. > + maxItems: 1 > + > + rotation: > + description: | > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > + down). The second sentence should be replaced with enum: - 0 - 180 > + > + port: > + type: object > + description: | > + The device node must contain one 'port' child node for its digital output > + video port, in accordance with the video interface bindings defined in > + Documentation/devicetree/bindings/media/video-interfaces.txt. > + > + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > + > + properties: > + endpoint: > + type: object > + properties: > + remote-endpoint: > + description: A phandle to the bus receiver's endpoint node. > + > + clock-lanes: > + description: Should be set to 0 (clock lane on hardware lane 0). The description of most of these properties should also be replaced with yaml schema rules. Ideally there should also be constraints that tell which properties can be specified together. For instance here's the corresponding rules from the MT9M114 DT binding (not upstream yet). # See ../video-interfaces.txt for more details port: type: object properties: endpoint: type: object properties: bus-type: enum: [4, 5, 6] clock-lanes: items: - const: 0 data-lanes: items: - const: 1 bus-width: items: - const: 8 hsync-active: items: - const: 1 vsync-active: items: - const: 1 required: - bus-type allOf: - if: properties: bus-type: const: 4 then: properties: bus-width: false hsync-active: false vsync-active: false - if: properties: bus-type: const: 5 then: properties: clock-lanes: false data-lanes: false - if: properties: bus-type: const: 6 then: properties: clock-lanes: false data-lanes: false hsync-active: false vsync-active: false unevaluatedProperties: false These comments apply to other patches in this series. > + > + data-lanes: > + description: | > + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). > + > + bus-width: > + description: | > + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits > + parallel bus. > + > + data-shift: > + description: | > + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or > + <0> for 10 bits parallel bus. > + > + hsync-active: > + description: | > + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > + > + vsync-active: > + description: | > + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > + > + pclk-sample: > + description: | > + Sample data on rising (1) or falling (0) edge of the pixel clock > + signal. > + > + required: > + - remote-endpoint > + > + additionalProperties: false > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - DOVDD-supply > + - AVDD-supply > + - DVDD-supply > + - port > + > +examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/clock/imx6qdl-clock.h> > + > + i2c0 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + clocks = <&clks IMX6QDL_CLK_CKO>; > + clock-names = "xclk"; > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > + rotation = <180>; > + > + port { > + ov5640_to_mipi_csi2: endpoint { > + remote-endpoint = <&mipi_csi2_from_ov5640>; > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > + }; > + > + i2c1 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + clocks = <&clks IMX6QDL_CLK_CKO>; > + clock-names = "xclk"; > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > + rotation = <180>; > + > + port { > + ov5640_to_parallel: endpoint { > + remote-endpoint = <¶llel_from_ov5640>; > + bus-width = <8>; > + }; > + }; > + }; > + }; > + > +... > diff --git a/MAINTAINERS b/MAINTAINERS > index c74d25c58e1a..0160d7567ed3 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org > S: Maintained > T: git git://linuxtv.org/media_tree.git > F: drivers/media/i2c/ov5640.c > +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > OMNIVISION OV5647 SENSOR DRIVER > M: Jacopo Mondi <jacopo@jmondi.org>
Hi Laurent, On Thu, Jul 16, 2020 at 04:53:23AM +0300, Laurent Pinchart wrote: > Hi Jacopo, > > Thank you for the patch. > > On Wed, Jul 15, 2020 at 04:09:44PM +0200, Jacopo Mondi wrote: > > Convert the ov5640 bindings document to json-schema and update > > the MAINTAINERS file accordingly. > > > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > > --- > > Hi Steve, > > I've added myself as maintainer in the bindings, with your ack > > I would be happy to add myself as maintainer or reviewer for this driver > > in MAINTAINERS, as I've recently been looking after this driver, mostly > > for the MIPI CSI-2 interface part. > > > > Thanks > > j > > > > --- > > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > > MAINTAINERS | 1 + > > 3 files changed, 182 insertions(+), 92 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > deleted file mode 100644 > > index c97c2f2da12d..000000000000 > > --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > +++ /dev/null > > @@ -1,92 +0,0 @@ > > -* Omnivision OV5640 MIPI CSI-2 / parallel sensor > > - > > -Required Properties: > > -- compatible: should be "ovti,ov5640" > > -- clocks: reference to the xclk input clock. > > -- clock-names: should be "xclk". > > -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts > > -- AVDD-supply: Analog voltage supply, 2.8 volts > > -- DVDD-supply: Digital core voltage supply, 1.5 volts > > - > > -Optional Properties: > > -- reset-gpios: reference to the GPIO connected to the reset pin, if any. > > - This is an active low signal to the OV5640. > > -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, > > - if any. This is an active high signal to the OV5640. > > -- rotation: as defined in > > - Documentation/devicetree/bindings/media/video-interfaces.txt, > > - valid values are 0 (sensor mounted upright) and 180 (sensor > > - mounted upside down). > > - > > -The device node must contain one 'port' child node for its digital output > > -video port, in accordance with the video interface bindings defined in > > -Documentation/devicetree/bindings/media/video-interfaces.txt. > > - > > -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > - > > -Endpoint node required properties for CSI-2 connection are: > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) > > -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) > > - > > -Endpoint node required properties for parallel connection are: > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > -- bus-width: shall be set to <8> for 8 bits parallel bus > > - or <10> for 10 bits parallel bus > > -- data-shift: shall be set to <2> for 8 bits parallel bus > > - (lines 9:2 are used) or <0> for 10 bits parallel bus > > -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock > > - signal. > > - > > -Examples: > > - > > -&i2c1 { > > - ov5640: camera@3c { > > - compatible = "ovti,ov5640"; > > - pinctrl-names = "default"; > > - pinctrl-0 = <&pinctrl_ov5640>; > > - reg = <0x3c>; > > - clocks = <&clks IMX6QDL_CLK_CKO>; > > - clock-names = "xclk"; > > - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > - AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > - DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > - rotation = <180>; > > - > > - port { > > - /* MIPI CSI-2 bus endpoint */ > > - ov5640_to_mipi_csi2: endpoint { > > - remote-endpoint = <&mipi_csi2_from_ov5640>; > > - clock-lanes = <0>; > > - data-lanes = <1 2>; > > - }; > > - }; > > - }; > > -}; > > - > > -&i2c1 { > > - ov5640: camera@3c { > > - compatible = "ovti,ov5640"; > > - pinctrl-names = "default"; > > - pinctrl-0 = <&pinctrl_ov5640>; > > - reg = <0x3c>; > > - clocks = <&clk_ext_camera>; > > - clock-names = "xclk"; > > - > > - port { > > - /* Parallel bus endpoint */ > > - ov5640_to_parallel: endpoint { > > - remote-endpoint = <¶llel_from_ov5640>; > > - bus-width = <8>; > > - data-shift = <2>; /* lines 9:2 are used */ > > - hsync-active = <0>; > > - vsync-active = <0>; > > - pclk-sample = <1>; > > - }; > > - }; > > - }; > > -}; > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > new file mode 100644 > > index 000000000000..9c32262a3621 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > @@ -0,0 +1,181 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor > > + > > +maintainers: > > + - Steve Longerbeam <slongerbeam@gmail.com> > > + - Jacopo Mondi <jacopo@jmondi.org> > > + > > +description: -| > > + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, > > s/OV5640/The OV5640/ > s/RBG/RGB/ > Ups, will fix > > + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data > > + interface and an I2C-compatible (CCI) control interface. > > + > > +properties: > > + compatible: > > + const: ovti,ov5640 > > + > > + reg: > > + description: I2C device address > > + maxItems: 1 > > + > > + clocks: > > + description: Reference to the xclk input clock. > > I'd drop this, it's implied by the clock-names > > > + maxItems: 1 > > + > > + clock-names: > > + description: Should be "xclk". > > This should be replaced with > > const: xclk > Ack for both > > + maxItems: 1 > > + > > + DOVDD-supply: > > + description: Digital I/O voltage supply, 1.8 volts. > > + maxItems: 1 > > + > > + AVDD-supply: > > + description: Analog voltage supply, 2.8 volts. > > + maxItems: 1 > > + > > + DVDD-supply: > > + description: Digital core voltage supply. > > + maxItems: 1 > > + > > + reset-gpios: > > + description: | > > + Reference to the GPIO connected to the reset pin, if any. This is an > > + active low signal to the OV5640. > > + maxItems: 1 > > + > > + powerdown-gpios: > > + description: | > > + Reference tot he GPIO connected to the powerdown pin, if any. This is an > > + active high signal to the OV5640. > > + maxItems: 1 > > + > > + rotation: > > + description: | > > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > > + down). > > The second sentence should be replaced with > enum: > - 0 > - 180 > I copied this from the existing bindings, but I was a bit skeptical in first place. Support being limited to 0 and 180 only is a driver implementation constraint, there's nothing that prevents you from mounting the sensor 90deg rotated. Should the supported values be mentioned in the bindings at all for this property ? > > + > > + port: > > + type: object > > + description: | > > + The device node must contain one 'port' child node for its digital output > > + video port, in accordance with the video interface bindings defined in > > + Documentation/devicetree/bindings/media/video-interfaces.txt. > > + > > + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > + > > + properties: > > + endpoint: > > + type: object > > + properties: > > + remote-endpoint: > > + description: A phandle to the bus receiver's endpoint node. > > + > > + clock-lanes: > > + description: Should be set to 0 (clock lane on hardware lane 0). > > The description of most of these properties should also be replaced with > yaml schema rules. Ideally there should also be constraints that tell > which properties can be specified together. For instance here's the > corresponding rules from the MT9M114 DT binding (not upstream yet). > > # See ../video-interfaces.txt for more details > port: > type: object > properties: > endpoint: > type: object > properties: > bus-type: > enum: [4, 5, 6] ^ this Initially I considered switching on the bus type to be able to use an if construct like you shown below. But that would make the property mandatory, something that would break old DTB. Now, I used the word "break" and not "break compatibility" as the driver would still support old DTB, as it does not enforce that property being specified. But it would make old DTS invalid from a dt-schema validation point of view. Do we care about maintaining old DTS valid with new schema ? > > clock-lanes: > items: > - const: 0 > > data-lanes: > items: > - const: 1 > > bus-width: > items: > - const: 8 > > hsync-active: > items: > - const: 1 > > vsync-active: > items: > - const: 1 > > required: > - bus-type > > allOf: > - if: > properties: > bus-type: > const: 4 > then: > properties: > bus-width: false > hsync-active: false > vsync-active: false > > - if: > properties: > bus-type: > const: 5 > then: > properties: > clock-lanes: false > data-lanes: false > > - if: > properties: > bus-type: > const: 6 > then: > properties: > clock-lanes: false > data-lanes: false > hsync-active: false > vsync-active: false > > unevaluatedProperties: false > > These comments apply to other patches in this series. > > > + > > + data-lanes: > > + description: | > > + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). > > + > > + bus-width: > > + description: | > > + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits > > + parallel bus. > > + > > + data-shift: > > + description: | > > + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or > > + <0> for 10 bits parallel bus. All of these 'supported values' should be expressed with a schema, I agree. Thanks j > > + > > + hsync-active: > > + description: | > > + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > + > > + vsync-active: > > + description: | > > + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > + > > + pclk-sample: > > + description: | > > + Sample data on rising (1) or falling (0) edge of the pixel clock > > + signal. > > + > > + required: > > + - remote-endpoint > > + > > + additionalProperties: false > > + > > +required: > > + - compatible > > + - reg > > + - clocks > > + - clock-names > > + - DOVDD-supply > > + - AVDD-supply > > + - DVDD-supply > > + - port > > + > > +examples: > > + - | > > + #include <dt-bindings/gpio/gpio.h> > > + #include <dt-bindings/clock/imx6qdl-clock.h> > > + > > + i2c0 { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera@3c { > > + compatible = "ovti,ov5640"; > > + reg = <0x3c>; > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > + clock-names = "xclk"; > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > + rotation = <180>; > > + > > + port { > > + ov5640_to_mipi_csi2: endpoint { > > + remote-endpoint = <&mipi_csi2_from_ov5640>; > > + clock-lanes = <0>; > > + data-lanes = <1 2>; > > + }; > > + }; > > + }; > > + }; > > + > > + i2c1 { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera@3c { > > + compatible = "ovti,ov5640"; > > + reg = <0x3c>; > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > + clock-names = "xclk"; > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > + rotation = <180>; > > + > > + port { > > + ov5640_to_parallel: endpoint { > > + remote-endpoint = <¶llel_from_ov5640>; > > + bus-width = <8>; > > + }; > > + }; > > + }; > > + }; > > + > > +... > > diff --git a/MAINTAINERS b/MAINTAINERS > > index c74d25c58e1a..0160d7567ed3 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org > > S: Maintained > > T: git git://linuxtv.org/media_tree.git > > F: drivers/media/i2c/ov5640.c > > +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > OMNIVISION OV5647 SENSOR DRIVER > > M: Jacopo Mondi <jacopo@jmondi.org> > > -- > Regards, > > Laurent Pinchart
Hi Steve, On Wed, Jul 15, 2020 at 10:04:04AM -0700, Steve Longerbeam wrote: > Hi Jacopo, > > On 7/15/20 7:09 AM, Jacopo Mondi wrote: > > Convert the ov5640 bindings document to json-schema and update > > the MAINTAINERS file accordingly. > > > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > > --- > > Hi Steve, > > I've added myself as maintainer in the bindings, with your ack > > I would be happy to add myself as maintainer or reviewer for this driver > > in MAINTAINERS, as I've recently been looking after this driver, mostly > > for the MIPI CSI-2 interface part. > > Sure that's fine, I have not been involved in this driver at all, except for > the initial commit. I don't think I should be listed as a MAINTAINER of this > driver or its bindings either, so feel free to remove my name from both. > I was suggesting adding myself to the list of maintainers/reviewer, not replacing you :) Hope that's not what you intended. But in case you don't want to be bothered with this rather old driver anymore, I could drop your name from there. Thanks j > Steve > > > > > Thanks > > j > > > > --- > > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > > MAINTAINERS | 1 + > > 3 files changed, 182 insertions(+), 92 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > deleted file mode 100644 > > index c97c2f2da12d..000000000000 > > --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > +++ /dev/null > > @@ -1,92 +0,0 @@ > > -* Omnivision OV5640 MIPI CSI-2 / parallel sensor > > - > > -Required Properties: > > -- compatible: should be "ovti,ov5640" > > -- clocks: reference to the xclk input clock. > > -- clock-names: should be "xclk". > > -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts > > -- AVDD-supply: Analog voltage supply, 2.8 volts > > -- DVDD-supply: Digital core voltage supply, 1.5 volts > > - > > -Optional Properties: > > -- reset-gpios: reference to the GPIO connected to the reset pin, if any. > > - This is an active low signal to the OV5640. > > -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, > > - if any. This is an active high signal to the OV5640. > > -- rotation: as defined in > > - Documentation/devicetree/bindings/media/video-interfaces.txt, > > - valid values are 0 (sensor mounted upright) and 180 (sensor > > - mounted upside down). > > - > > -The device node must contain one 'port' child node for its digital output > > -video port, in accordance with the video interface bindings defined in > > -Documentation/devicetree/bindings/media/video-interfaces.txt. > > - > > -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > - > > -Endpoint node required properties for CSI-2 connection are: > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) > > -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) > > - > > -Endpoint node required properties for parallel connection are: > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > -- bus-width: shall be set to <8> for 8 bits parallel bus > > - or <10> for 10 bits parallel bus > > -- data-shift: shall be set to <2> for 8 bits parallel bus > > - (lines 9:2 are used) or <0> for 10 bits parallel bus > > -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock > > - signal. > > - > > -Examples: > > - > > -&i2c1 { > > - ov5640: camera@3c { > > - compatible = "ovti,ov5640"; > > - pinctrl-names = "default"; > > - pinctrl-0 = <&pinctrl_ov5640>; > > - reg = <0x3c>; > > - clocks = <&clks IMX6QDL_CLK_CKO>; > > - clock-names = "xclk"; > > - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > - AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > - DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > - rotation = <180>; > > - > > - port { > > - /* MIPI CSI-2 bus endpoint */ > > - ov5640_to_mipi_csi2: endpoint { > > - remote-endpoint = <&mipi_csi2_from_ov5640>; > > - clock-lanes = <0>; > > - data-lanes = <1 2>; > > - }; > > - }; > > - }; > > -}; > > - > > -&i2c1 { > > - ov5640: camera@3c { > > - compatible = "ovti,ov5640"; > > - pinctrl-names = "default"; > > - pinctrl-0 = <&pinctrl_ov5640>; > > - reg = <0x3c>; > > - clocks = <&clk_ext_camera>; > > - clock-names = "xclk"; > > - > > - port { > > - /* Parallel bus endpoint */ > > - ov5640_to_parallel: endpoint { > > - remote-endpoint = <¶llel_from_ov5640>; > > - bus-width = <8>; > > - data-shift = <2>; /* lines 9:2 are used */ > > - hsync-active = <0>; > > - vsync-active = <0>; > > - pclk-sample = <1>; > > - }; > > - }; > > - }; > > -}; > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > new file mode 100644 > > index 000000000000..9c32262a3621 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > @@ -0,0 +1,181 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor > > + > > +maintainers: > > + - Steve Longerbeam <slongerbeam@gmail.com> > > + - Jacopo Mondi <jacopo@jmondi.org> > > + > > +description: -| > > + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, > > + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data > > + interface and an I2C-compatible (CCI) control interface. > > + > > +properties: > > + compatible: > > + const: ovti,ov5640 > > + > > + reg: > > + description: I2C device address > > + maxItems: 1 > > + > > + clocks: > > + description: Reference to the xclk input clock. > > + maxItems: 1 > > + > > + clock-names: > > + description: Should be "xclk". > > + maxItems: 1 > > + > > + DOVDD-supply: > > + description: Digital I/O voltage supply, 1.8 volts. > > + maxItems: 1 > > + > > + AVDD-supply: > > + description: Analog voltage supply, 2.8 volts. > > + maxItems: 1 > > + > > + DVDD-supply: > > + description: Digital core voltage supply. > > + maxItems: 1 > > + > > + reset-gpios: > > + description: | > > + Reference to the GPIO connected to the reset pin, if any. This is an > > + active low signal to the OV5640. > > + maxItems: 1 > > + > > + powerdown-gpios: > > + description: | > > + Reference tot he GPIO connected to the powerdown pin, if any. This is an > > + active high signal to the OV5640. > > + maxItems: 1 > > + > > + rotation: > > + description: | > > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > > + down). > > + > > + port: > > + type: object > > + description: | > > + The device node must contain one 'port' child node for its digital output > > + video port, in accordance with the video interface bindings defined in > > + Documentation/devicetree/bindings/media/video-interfaces.txt. > > + > > + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > + > > + properties: > > + endpoint: > > + type: object > > + properties: > > + remote-endpoint: > > + description: A phandle to the bus receiver's endpoint node. > > + > > + clock-lanes: > > + description: Should be set to 0 (clock lane on hardware lane 0). > > + > > + data-lanes: > > + description: | > > + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). > > + > > + bus-width: > > + description: | > > + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits > > + parallel bus. > > + > > + data-shift: > > + description: | > > + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or > > + <0> for 10 bits parallel bus. > > + > > + hsync-active: > > + description: | > > + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > + > > + vsync-active: > > + description: | > > + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > + > > + pclk-sample: > > + description: | > > + Sample data on rising (1) or falling (0) edge of the pixel clock > > + signal. > > + > > + required: > > + - remote-endpoint > > + > > + additionalProperties: false > > + > > +required: > > + - compatible > > + - reg > > + - clocks > > + - clock-names > > + - DOVDD-supply > > + - AVDD-supply > > + - DVDD-supply > > + - port > > + > > +examples: > > + - | > > + #include <dt-bindings/gpio/gpio.h> > > + #include <dt-bindings/clock/imx6qdl-clock.h> > > + > > + i2c0 { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera@3c { > > + compatible = "ovti,ov5640"; > > + reg = <0x3c>; > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > + clock-names = "xclk"; > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > + rotation = <180>; > > + > > + port { > > + ov5640_to_mipi_csi2: endpoint { > > + remote-endpoint = <&mipi_csi2_from_ov5640>; > > + clock-lanes = <0>; > > + data-lanes = <1 2>; > > + }; > > + }; > > + }; > > + }; > > + > > + i2c1 { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera@3c { > > + compatible = "ovti,ov5640"; > > + reg = <0x3c>; > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > + clock-names = "xclk"; > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > + rotation = <180>; > > + > > + port { > > + ov5640_to_parallel: endpoint { > > + remote-endpoint = <¶llel_from_ov5640>; > > + bus-width = <8>; > > + }; > > + }; > > + }; > > + }; > > + > > +... > > diff --git a/MAINTAINERS b/MAINTAINERS > > index c74d25c58e1a..0160d7567ed3 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org > > S: Maintained > > T: git git://linuxtv.org/media_tree.git > > F: drivers/media/i2c/ov5640.c > > +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > OMNIVISION OV5647 SENSOR DRIVER > > M: Jacopo Mondi <jacopo@jmondi.org> > > -- > > 2.27.0 > > >
On Thu, Jul 16, 2020 at 3:54 AM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > On Wed, Jul 15, 2020 at 04:09:44PM +0200, Jacopo Mondi wrote: > > Convert the ov5640 bindings document to json-schema and update > > + rotation: > > + description: | > > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > > + down). > > The second sentence should be replaced with > enum: > - 0 > - 180 Or (ignoring Jacopo's later comment): enum: [ 0, 180 ] Gr{oetje,eeting}s, Geert
Hi Jacopo, On Thu, Jul 16, 2020 at 09:04:33AM +0200, Jacopo Mondi wrote: > On Thu, Jul 16, 2020 at 04:53:23AM +0300, Laurent Pinchart wrote: > > On Wed, Jul 15, 2020 at 04:09:44PM +0200, Jacopo Mondi wrote: > > > Convert the ov5640 bindings document to json-schema and update > > > the MAINTAINERS file accordingly. > > > > > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > > > --- > > > Hi Steve, > > > I've added myself as maintainer in the bindings, with your ack > > > I would be happy to add myself as maintainer or reviewer for this driver > > > in MAINTAINERS, as I've recently been looking after this driver, mostly > > > for the MIPI CSI-2 interface part. > > > > > > --- > > > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > > > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > > > MAINTAINERS | 1 + > > > 3 files changed, 182 insertions(+), 92 deletions(-) > > > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > > deleted file mode 100644 > > > index c97c2f2da12d..000000000000 > > > --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt > > > +++ /dev/null > > > @@ -1,92 +0,0 @@ > > > -* Omnivision OV5640 MIPI CSI-2 / parallel sensor > > > - > > > -Required Properties: > > > -- compatible: should be "ovti,ov5640" > > > -- clocks: reference to the xclk input clock. > > > -- clock-names: should be "xclk". > > > -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts > > > -- AVDD-supply: Analog voltage supply, 2.8 volts > > > -- DVDD-supply: Digital core voltage supply, 1.5 volts > > > - > > > -Optional Properties: > > > -- reset-gpios: reference to the GPIO connected to the reset pin, if any. > > > - This is an active low signal to the OV5640. > > > -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, > > > - if any. This is an active high signal to the OV5640. > > > -- rotation: as defined in > > > - Documentation/devicetree/bindings/media/video-interfaces.txt, > > > - valid values are 0 (sensor mounted upright) and 180 (sensor > > > - mounted upside down). > > > - > > > -The device node must contain one 'port' child node for its digital output > > > -video port, in accordance with the video interface bindings defined in > > > -Documentation/devicetree/bindings/media/video-interfaces.txt. > > > - > > > -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > > - > > > -Endpoint node required properties for CSI-2 connection are: > > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > > -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) > > > -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) > > > - > > > -Endpoint node required properties for parallel connection are: > > > -- remote-endpoint: a phandle to the bus receiver's endpoint node. > > > -- bus-width: shall be set to <8> for 8 bits parallel bus > > > - or <10> for 10 bits parallel bus > > > -- data-shift: shall be set to <2> for 8 bits parallel bus > > > - (lines 9:2 are used) or <0> for 10 bits parallel bus > > > -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > > -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > > -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock > > > - signal. > > > - > > > -Examples: > > > - > > > -&i2c1 { > > > - ov5640: camera@3c { > > > - compatible = "ovti,ov5640"; > > > - pinctrl-names = "default"; > > > - pinctrl-0 = <&pinctrl_ov5640>; > > > - reg = <0x3c>; > > > - clocks = <&clks IMX6QDL_CLK_CKO>; > > > - clock-names = "xclk"; > > > - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > > - AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > > - DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > > - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > > - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > > - rotation = <180>; > > > - > > > - port { > > > - /* MIPI CSI-2 bus endpoint */ > > > - ov5640_to_mipi_csi2: endpoint { > > > - remote-endpoint = <&mipi_csi2_from_ov5640>; > > > - clock-lanes = <0>; > > > - data-lanes = <1 2>; > > > - }; > > > - }; > > > - }; > > > -}; > > > - > > > -&i2c1 { > > > - ov5640: camera@3c { > > > - compatible = "ovti,ov5640"; > > > - pinctrl-names = "default"; > > > - pinctrl-0 = <&pinctrl_ov5640>; > > > - reg = <0x3c>; > > > - clocks = <&clk_ext_camera>; > > > - clock-names = "xclk"; > > > - > > > - port { > > > - /* Parallel bus endpoint */ > > > - ov5640_to_parallel: endpoint { > > > - remote-endpoint = <¶llel_from_ov5640>; > > > - bus-width = <8>; > > > - data-shift = <2>; /* lines 9:2 are used */ > > > - hsync-active = <0>; > > > - vsync-active = <0>; > > > - pclk-sample = <1>; > > > - }; > > > - }; > > > - }; > > > -}; > > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > new file mode 100644 > > > index 000000000000..9c32262a3621 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > @@ -0,0 +1,181 @@ > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor > > > + > > > +maintainers: > > > + - Steve Longerbeam <slongerbeam@gmail.com> > > > + - Jacopo Mondi <jacopo@jmondi.org> > > > + > > > +description: -| > > > + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, > > > > s/OV5640/The OV5640/ > > s/RBG/RGB/ > > > > Ups, will fix > > > > + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data > > > + interface and an I2C-compatible (CCI) control interface. > > > + > > > +properties: > > > + compatible: > > > + const: ovti,ov5640 > > > + > > > + reg: > > > + description: I2C device address > > > + maxItems: 1 > > > + > > > + clocks: > > > + description: Reference to the xclk input clock. > > > > I'd drop this, it's implied by the clock-names > > > > > + maxItems: 1 > > > + > > > + clock-names: > > > + description: Should be "xclk". > > > > This should be replaced with > > > > const: xclk > > > > Ack for both > > > > + maxItems: 1 > > > + > > > + DOVDD-supply: > > > + description: Digital I/O voltage supply, 1.8 volts. > > > + maxItems: 1 > > > + > > > + AVDD-supply: > > > + description: Analog voltage supply, 2.8 volts. > > > + maxItems: 1 > > > + > > > + DVDD-supply: > > > + description: Digital core voltage supply. > > > + maxItems: 1 > > > + > > > + reset-gpios: > > > + description: | > > > + Reference to the GPIO connected to the reset pin, if any. This is an > > > + active low signal to the OV5640. > > > + maxItems: 1 > > > + > > > + powerdown-gpios: > > > + description: | > > > + Reference tot he GPIO connected to the powerdown pin, if any. This is an > > > + active high signal to the OV5640. > > > + maxItems: 1 > > > + > > > + rotation: > > > + description: | > > > + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, > > > + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside > > > + down). > > > > The second sentence should be replaced with > > enum: > > - 0 > > - 180 > > > > I copied this from the existing bindings, but I was a bit skeptical in > first place. Support being limited to 0 and 180 only is a driver > implementation constraint, there's nothing that prevents you from > mounting the sensor 90deg rotated. Should the supported values be > mentioned in the bindings at all for this property ? You're right, it doesn't belong here. My point was that constraints should be described with rules instead of text. I'd drop the rule in a separate patch, or at least explain it clearly in the commit message. > > > + > > > + port: > > > + type: object > > > + description: | > > > + The device node must contain one 'port' child node for its digital output > > > + video port, in accordance with the video interface bindings defined in > > > + Documentation/devicetree/bindings/media/video-interfaces.txt. > > > + > > > + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. > > > + > > > + properties: > > > + endpoint: > > > + type: object > > > + properties: > > > + remote-endpoint: > > > + description: A phandle to the bus receiver's endpoint node. > > > + > > > + clock-lanes: > > > + description: Should be set to 0 (clock lane on hardware lane 0). > > > > The description of most of these properties should also be replaced with > > yaml schema rules. Ideally there should also be constraints that tell > > which properties can be specified together. For instance here's the > > corresponding rules from the MT9M114 DT binding (not upstream yet). > > > > # See ../video-interfaces.txt for more details > > port: > > type: object > > properties: > > endpoint: > > type: object > > properties: > > bus-type: > > enum: [4, 5, 6] > > ^ this > > Initially I considered switching on the bus type to be able to use an > if construct like you shown below. But that would make the property > mandatory, something that would break old DTB. Now, I used the word > "break" and not "break compatibility" as the driver would still > support old DTB, as it does not enforce that property being specified. > But it would make old DTS invalid from a dt-schema validation point of > view. Do we care about maintaining old DTS valid with new schema ? Not to my knowledge, no. We should of course fix the in-tree device tree sources to add the property, but anything out of tree, especially in binary form, can fail to validate as long as the drivers don't break binary compatibility. > > > > clock-lanes: > > items: > > - const: 0 > > > > data-lanes: > > items: > > - const: 1 > > > > bus-width: > > items: > > - const: 8 > > > > hsync-active: > > items: > > - const: 1 > > > > vsync-active: > > items: > > - const: 1 > > > > required: > > - bus-type > > > > allOf: > > - if: > > properties: > > bus-type: > > const: 4 > > then: > > properties: > > bus-width: false > > hsync-active: false > > vsync-active: false > > > > - if: > > properties: > > bus-type: > > const: 5 > > then: > > properties: > > clock-lanes: false > > data-lanes: false > > > > - if: > > properties: > > bus-type: > > const: 6 > > then: > > properties: > > clock-lanes: false > > data-lanes: false > > hsync-active: false > > vsync-active: false > > > > unevaluatedProperties: false > > > > These comments apply to other patches in this series. > > > > > + > > > + data-lanes: > > > + description: | > > > + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). > > > + > > > + bus-width: > > > + description: | > > > + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits > > > + parallel bus. > > > + > > > + data-shift: > > > + description: | > > > + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or > > > + <0> for 10 bits parallel bus. > > All of these 'supported values' should be expressed with a schema, I agree. > > > > + > > > + hsync-active: > > > + description: | > > > + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. > > > + > > > + vsync-active: > > > + description: | > > > + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. > > > + > > > + pclk-sample: > > > + description: | > > > + Sample data on rising (1) or falling (0) edge of the pixel clock > > > + signal. > > > + > > > + required: > > > + - remote-endpoint > > > + > > > + additionalProperties: false > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - clocks > > > + - clock-names > > > + - DOVDD-supply > > > + - AVDD-supply > > > + - DVDD-supply > > > + - port > > > + > > > +examples: > > > + - | > > > + #include <dt-bindings/gpio/gpio.h> > > > + #include <dt-bindings/clock/imx6qdl-clock.h> > > > + > > > + i2c0 { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + camera@3c { > > > + compatible = "ovti,ov5640"; > > > + reg = <0x3c>; > > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > > + clock-names = "xclk"; > > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > > + rotation = <180>; > > > + > > > + port { > > > + ov5640_to_mipi_csi2: endpoint { > > > + remote-endpoint = <&mipi_csi2_from_ov5640>; > > > + clock-lanes = <0>; > > > + data-lanes = <1 2>; > > > + }; > > > + }; > > > + }; > > > + }; > > > + > > > + i2c1 { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + camera@3c { > > > + compatible = "ovti,ov5640"; > > > + reg = <0x3c>; > > > + clocks = <&clks IMX6QDL_CLK_CKO>; > > > + clock-names = "xclk"; > > > + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ > > > + AVDD-supply = <&vgen3_reg>; /* 2.8v */ > > > + DVDD-supply = <&vgen2_reg>; /* 1.5v */ > > > + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; > > > + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > > > + rotation = <180>; > > > + > > > + port { > > > + ov5640_to_parallel: endpoint { > > > + remote-endpoint = <¶llel_from_ov5640>; > > > + bus-width = <8>; > > > + }; > > > + }; > > > + }; > > > + }; > > > + > > > +... > > > diff --git a/MAINTAINERS b/MAINTAINERS > > > index c74d25c58e1a..0160d7567ed3 100644 > > > --- a/MAINTAINERS > > > +++ b/MAINTAINERS > > > @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org > > > S: Maintained > > > T: git git://linuxtv.org/media_tree.git > > > F: drivers/media/i2c/ov5640.c > > > +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml > > > > > > OMNIVISION OV5647 SENSOR DRIVER > > > M: Jacopo Mondi <jacopo@jmondi.org>
On Wed, 15 Jul 2020 16:09:44 +0200, Jacopo Mondi wrote: > Convert the ov5640 bindings document to json-schema and update > the MAINTAINERS file accordingly. > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > Hi Steve, > I've added myself as maintainer in the bindings, with your ack > I would be happy to add myself as maintainer or reviewer for this driver > in MAINTAINERS, as I've recently been looking after this driver, mostly > for the MIPI CSI-2 interface part. > > Thanks > j > > --- > .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- > .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ > MAINTAINERS | 1 + > 3 files changed, 182 insertions(+), 92 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt > create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml > My bot found errors running 'make dt_binding_check' on your patch: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/media/ti,cal.example.dt.yaml: camera-sensor@3c: 'DOVDD-supply' is a required property /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/media/ti,cal.example.dt.yaml: camera-sensor@3c: 'AVDD-supply' is a required property /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/media/ti,cal.example.dt.yaml: camera-sensor@3c: 'DVDD-supply' is a required property See https://patchwork.ozlabs.org/patch/1329566 If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure dt-schema is up to date: pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade Please check and re-submit.
diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.txt b/Documentation/devicetree/bindings/media/i2c/ov5640.txt deleted file mode 100644 index c97c2f2da12d..000000000000 --- a/Documentation/devicetree/bindings/media/i2c/ov5640.txt +++ /dev/null @@ -1,92 +0,0 @@ -* Omnivision OV5640 MIPI CSI-2 / parallel sensor - -Required Properties: -- compatible: should be "ovti,ov5640" -- clocks: reference to the xclk input clock. -- clock-names: should be "xclk". -- DOVDD-supply: Digital I/O voltage supply, 1.8 volts -- AVDD-supply: Analog voltage supply, 2.8 volts -- DVDD-supply: Digital core voltage supply, 1.5 volts - -Optional Properties: -- reset-gpios: reference to the GPIO connected to the reset pin, if any. - This is an active low signal to the OV5640. -- powerdown-gpios: reference to the GPIO connected to the powerdown pin, - if any. This is an active high signal to the OV5640. -- rotation: as defined in - Documentation/devicetree/bindings/media/video-interfaces.txt, - valid values are 0 (sensor mounted upright) and 180 (sensor - mounted upside down). - -The device node must contain one 'port' child node for its digital output -video port, in accordance with the video interface bindings defined in -Documentation/devicetree/bindings/media/video-interfaces.txt. - -OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. - -Endpoint node required properties for CSI-2 connection are: -- remote-endpoint: a phandle to the bus receiver's endpoint node. -- clock-lanes: should be set to <0> (clock lane on hardware lane 0) -- data-lanes: should be set to <1> or <1 2> (one or two CSI-2 lanes supported) - -Endpoint node required properties for parallel connection are: -- remote-endpoint: a phandle to the bus receiver's endpoint node. -- bus-width: shall be set to <8> for 8 bits parallel bus - or <10> for 10 bits parallel bus -- data-shift: shall be set to <2> for 8 bits parallel bus - (lines 9:2 are used) or <0> for 10 bits parallel bus -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. -- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock - signal. - -Examples: - -&i2c1 { - ov5640: camera@3c { - compatible = "ovti,ov5640"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_ov5640>; - reg = <0x3c>; - clocks = <&clks IMX6QDL_CLK_CKO>; - clock-names = "xclk"; - DOVDD-supply = <&vgen4_reg>; /* 1.8v */ - AVDD-supply = <&vgen3_reg>; /* 2.8v */ - DVDD-supply = <&vgen2_reg>; /* 1.5v */ - powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; - reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; - rotation = <180>; - - port { - /* MIPI CSI-2 bus endpoint */ - ov5640_to_mipi_csi2: endpoint { - remote-endpoint = <&mipi_csi2_from_ov5640>; - clock-lanes = <0>; - data-lanes = <1 2>; - }; - }; - }; -}; - -&i2c1 { - ov5640: camera@3c { - compatible = "ovti,ov5640"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_ov5640>; - reg = <0x3c>; - clocks = <&clk_ext_camera>; - clock-names = "xclk"; - - port { - /* Parallel bus endpoint */ - ov5640_to_parallel: endpoint { - remote-endpoint = <¶llel_from_ov5640>; - bus-width = <8>; - data-shift = <2>; /* lines 9:2 are used */ - hsync-active = <0>; - vsync-active = <0>; - pclk-sample = <1>; - }; - }; - }; -}; diff --git a/Documentation/devicetree/bindings/media/i2c/ov5640.yaml b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml new file mode 100644 index 000000000000..9c32262a3621 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/ov5640.yaml @@ -0,0 +1,181 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/ov5640.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Omnivision OV5640 MIPI CSI-2 / parallel sensor + +maintainers: + - Steve Longerbeam <slongerbeam@gmail.com> + - Jacopo Mondi <jacopo@jmondi.org> + +description: -| + OV5640 is a 5 megapixels image sensor capable of producing images in RBG, RAW, + YUV and compressed formats. It features a MIPI CSI-2 and a parallel data + interface and an I2C-compatible (CCI) control interface. + +properties: + compatible: + const: ovti,ov5640 + + reg: + description: I2C device address + maxItems: 1 + + clocks: + description: Reference to the xclk input clock. + maxItems: 1 + + clock-names: + description: Should be "xclk". + maxItems: 1 + + DOVDD-supply: + description: Digital I/O voltage supply, 1.8 volts. + maxItems: 1 + + AVDD-supply: + description: Analog voltage supply, 2.8 volts. + maxItems: 1 + + DVDD-supply: + description: Digital core voltage supply. + maxItems: 1 + + reset-gpios: + description: | + Reference to the GPIO connected to the reset pin, if any. This is an + active low signal to the OV5640. + maxItems: 1 + + powerdown-gpios: + description: | + Reference tot he GPIO connected to the powerdown pin, if any. This is an + active high signal to the OV5640. + maxItems: 1 + + rotation: + description: | + As defined in Documentation/devicetree/bindings/media/video-interfaces.txt, + valid values are 0 (sensor mounted upright) and 180 (sensor mounted upside + down). + + port: + type: object + description: | + The device node must contain one 'port' child node for its digital output + video port, in accordance with the video interface bindings defined in + Documentation/devicetree/bindings/media/video-interfaces.txt. + + OV5640 can be connected to a MIPI CSI-2 bus or a parallel bus endpoint. + + properties: + endpoint: + type: object + properties: + remote-endpoint: + description: A phandle to the bus receiver's endpoint node. + + clock-lanes: + description: Should be set to 0 (clock lane on hardware lane 0). + + data-lanes: + description: | + Should be set to <1> or <1 2> (one or two CSI-2 lanes supported). + + bus-width: + description: | + Shall be set to <8> for 8 bits parallel bus or <10> for 10 bits + parallel bus. + + data-shift: + description: | + Shall be set to <2> for 8 bits parallel bus (lines 9:2 are used) or + <0> for 10 bits parallel bus. + + hsync-active: + description: | + Active state of the HSYNC signal, 0/1 for LOW/HIGH respectively. + + vsync-active: + description: | + Active state of the VSYNC signal, 0/1 for LOW/HIGH respectively. + + pclk-sample: + description: | + Sample data on rising (1) or falling (0) edge of the pixel clock + signal. + + required: + - remote-endpoint + + additionalProperties: false + +required: + - compatible + - reg + - clocks + - clock-names + - DOVDD-supply + - AVDD-supply + - DVDD-supply + - port + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/clock/imx6qdl-clock.h> + + i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + clocks = <&clks IMX6QDL_CLK_CKO>; + clock-names = "xclk"; + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ + AVDD-supply = <&vgen3_reg>; /* 2.8v */ + DVDD-supply = <&vgen2_reg>; /* 1.5v */ + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; + rotation = <180>; + + port { + ov5640_to_mipi_csi2: endpoint { + remote-endpoint = <&mipi_csi2_from_ov5640>; + clock-lanes = <0>; + data-lanes = <1 2>; + }; + }; + }; + }; + + i2c1 { + #address-cells = <1>; + #size-cells = <0>; + + camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + clocks = <&clks IMX6QDL_CLK_CKO>; + clock-names = "xclk"; + DOVDD-supply = <&vgen4_reg>; /* 1.8v */ + AVDD-supply = <&vgen3_reg>; /* 2.8v */ + DVDD-supply = <&vgen2_reg>; /* 1.5v */ + powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; + rotation = <180>; + + port { + ov5640_to_parallel: endpoint { + remote-endpoint = <¶llel_from_ov5640>; + bus-width = <8>; + }; + }; + }; + }; + +... diff --git a/MAINTAINERS b/MAINTAINERS index c74d25c58e1a..0160d7567ed3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -12605,6 +12605,7 @@ L: linux-media@vger.kernel.org S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov5640.c +F: Documentation/devicetree/bindings/media/i2c/ov5640.yaml OMNIVISION OV5647 SENSOR DRIVER M: Jacopo Mondi <jacopo@jmondi.org>
Convert the ov5640 bindings document to json-schema and update the MAINTAINERS file accordingly. Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> --- Hi Steve, I've added myself as maintainer in the bindings, with your ack I would be happy to add myself as maintainer or reviewer for this driver in MAINTAINERS, as I've recently been looking after this driver, mostly for the MIPI CSI-2 interface part. Thanks j --- .../devicetree/bindings/media/i2c/ov5640.txt | 92 --------- .../devicetree/bindings/media/i2c/ov5640.yaml | 181 ++++++++++++++++++ MAINTAINERS | 1 + 3 files changed, 182 insertions(+), 92 deletions(-) delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.yaml -- 2.27.0