mbox series

[0/2] media: i2c: OV5648 image sensor support

Message ID 20201023174944.504358-1-paul.kocialkowski@bootlin.com
Headers show
Series media: i2c: OV5648 image sensor support | expand

Message

Paul Kocialkowski Oct. 23, 2020, 5:49 p.m. UTC
This series adds support for the OV5648 image sensor,
as a V4L2 subdev driver.

Paul Kocialkowski (2):
  dt-bindings: media: i2c: Add OV5648 bindings documentation
  media: i2c: Add support for the OV5648 image sensor

 .../bindings/media/i2c/ovti,ov5648.yaml       |  115 +
 drivers/media/i2c/Kconfig                     |   14 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/ov5648.c                    | 2680 +++++++++++++++++
 4 files changed, 2810 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
 create mode 100644 drivers/media/i2c/ov5648.c

Comments

Sakari Ailus Oct. 30, 2020, 4:37 p.m. UTC | #1
Hi Paul,

On Fri, Oct 23, 2020 at 07:49:43PM +0200, Paul Kocialkowski wrote:
> This introduces YAML bindings documentation for the OV5648
> image sensor.
> 
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> ---
>  .../bindings/media/i2c/ovti,ov5648.yaml       | 115 ++++++++++++++++++
>  1 file changed, 115 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> new file mode 100644
> index 000000000000..347af925b450
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> @@ -0,0 +1,115 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/ovti,ov5648.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: OmniVision OV5648 Image Sensor Device Tree Bindings
> +
> +maintainers:
> +  - Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> +
> +properties:
> +  compatible:
> +    const: ovti,ov5648
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: XVCLK Clock
> +
> +  clock-names:
> +    items:
> +      - const: xvclk
> +
> +  dvdd-supply:
> +    description: Digital Domain Power Supply
> +
> +  avdd-supply:
> +    description: Analog Domain Power Supply (internal AVDD is used if missing)
> +
> +  dovdd-supply:
> +    description: I/O Domain Power Supply
> +
> +  powerdown-gpios:
> +    maxItems: 1
> +    description: Power Down Pin GPIO Control (active low)
> +
> +  reset-gpios:
> +    maxItems: 1
> +    description: Reset Pin GPIO Control (active low)
> +
> +  port:
> +    type: object
> +    description: Input port, connect to a MIPI CSI-2 receiver

"Input"? I'd describe this as output.

How about e.g. "MIPI CSI-2 transmitter port"?

> +
> +    properties:
> +      endpoint:
> +        type: object
> +
> +        properties:
> +          remote-endpoint: true
> +
> +          bus-type:
> +            const: 4
> +
> +          clock-lanes:
> +            maxItems: 1

You can drop the two as they're always the same.

> +
> +          data-lanes:
> +            minItems: 1
> +            maxItems: 2
> +
> +        required:
> +          - bus-type
> +          - data-lanes
> +          - remote-endpoint
> +
> +        additionalProperties: false
> +
> +    required:
> +      - endpoint
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - dvdd-supply
> +  - dovdd-supply
> +  - port
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/sun8i-v3s-ccu.h>
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c0 {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        ov5648: camera@36 {
> +            compatible = "ovti,ov5648";
> +            reg = <0x36>;
> +
> +            dvdd-supply = <&ov5648_dvdd>;
> +            avdd-supply = <&ov5648_avdd>;
> +            dovdd-supply = <&ov5648_dovdd>;
> +            clocks = <&ov5648_xvclk 0>;
> +            clock-names = "xvclk";
> +
> +            ov5648_out: port {
> +                ov5648_out_mipi_csi2: endpoint {
> +                    bus-type = <4>; /* MIPI CSI-2 D-PHY */
> +                    clock-lanes = <0>;
> +                    data-lanes = <1 2>;
> +
> +                    remote-endpoint = <&mipi_csi2_in_ov5648>;
> +                };
> +            };
> +        };
> +    };
Paul Kocialkowski Nov. 4, 2020, 10:29 a.m. UTC | #2
Hi Sakari,

On Fri 30 Oct 20, 18:37, Sakari Ailus wrote:
> On Fri, Oct 23, 2020 at 07:49:43PM +0200, Paul Kocialkowski wrote:
> > This introduces YAML bindings documentation for the OV5648
> > image sensor.
> > 
> > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > ---
> >  .../bindings/media/i2c/ovti,ov5648.yaml       | 115 ++++++++++++++++++
> >  1 file changed, 115 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> > new file mode 100644
> > index 000000000000..347af925b450
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5648.yaml
> > @@ -0,0 +1,115 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/i2c/ovti,ov5648.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: OmniVision OV5648 Image Sensor Device Tree Bindings
> > +
> > +maintainers:
> > +  - Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > +
> > +properties:
> > +  compatible:
> > +    const: ovti,ov5648
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  clocks:
> > +    items:
> > +      - description: XVCLK Clock
> > +
> > +  clock-names:
> > +    items:
> > +      - const: xvclk
> > +
> > +  dvdd-supply:
> > +    description: Digital Domain Power Supply
> > +
> > +  avdd-supply:
> > +    description: Analog Domain Power Supply (internal AVDD is used if missing)
> > +
> > +  dovdd-supply:
> > +    description: I/O Domain Power Supply
> > +
> > +  powerdown-gpios:
> > +    maxItems: 1
> > +    description: Power Down Pin GPIO Control (active low)
> > +
> > +  reset-gpios:
> > +    maxItems: 1
> > +    description: Reset Pin GPIO Control (active low)
> > +
> > +  port:
> > +    type: object
> > +    description: Input port, connect to a MIPI CSI-2 receiver
> 
> "Input"? I'd describe this as output.
> 
> How about e.g. "MIPI CSI-2 transmitter port"?

Woops, that's definitely a mistake. Your suggestion sounds good, thanks!

> > +
> > +    properties:
> > +      endpoint:
> > +        type: object
> > +
> > +        properties:
> > +          remote-endpoint: true
> > +
> > +          bus-type:
> > +            const: 4
> > +
> > +          clock-lanes:
> > +            maxItems: 1
> 
> You can drop the two as they're always the same.

See my reply to the same comment on the other series.

Cheers,

Paul

> > +
> > +          data-lanes:
> > +            minItems: 1
> > +            maxItems: 2
> > +
> > +        required:
> > +          - bus-type
> > +          - data-lanes
> > +          - remote-endpoint
> > +
> > +        additionalProperties: false
> > +
> > +    required:
> > +      - endpoint
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - clocks
> > +  - clock-names
> > +  - dvdd-supply
> > +  - dovdd-supply
> > +  - port
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    #include <dt-bindings/clock/sun8i-v3s-ccu.h>
> > +    #include <dt-bindings/gpio/gpio.h>
> > +
> > +    i2c0 {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        ov5648: camera@36 {
> > +            compatible = "ovti,ov5648";
> > +            reg = <0x36>;
> > +
> > +            dvdd-supply = <&ov5648_dvdd>;
> > +            avdd-supply = <&ov5648_avdd>;
> > +            dovdd-supply = <&ov5648_dovdd>;
> > +            clocks = <&ov5648_xvclk 0>;
> > +            clock-names = "xvclk";
> > +
> > +            ov5648_out: port {
> > +                ov5648_out_mipi_csi2: endpoint {
> > +                    bus-type = <4>; /* MIPI CSI-2 D-PHY */
> > +                    clock-lanes = <0>;
> > +                    data-lanes = <1 2>;
> > +
> > +                    remote-endpoint = <&mipi_csi2_in_ov5648>;
> > +                };
> > +            };
> > +        };
> > +    };
> 
> -- 
> Sakari Ailus