diff mbox series

[v2,1/2] media: dt-bindings: media: i2c: Add MT9M114 camera sensor binding

Message ID 20220207012055.15158-2-laurent.pinchart@ideasonboard.com
State Not Applicable, archived
Headers show
Series media: Add onsemi MT9M114 camera sensor driver | expand

Checks

Context Check Description
robh/patch-applied success
robh/checkpatch success
robh/dtbs-check success
robh/dt-meta-schema success

Commit Message

Laurent Pinchart Feb. 7, 2022, 1:20 a.m. UTC
Add device tree binding for the onsemi MT9M114 CMOS camera sensor.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
Changes since v1:

- Use graph schema
- Drop unneeded properties
- Rename ON Semiconductor to onsemi
---
 .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
 MAINTAINERS                                   |   7 ++
 2 files changed, 117 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml

Comments

Sakari Ailus Feb. 8, 2022, 4:51 p.m. UTC | #1
Hi Laurent,

On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> Changes since v1:
> 
> - Use graph schema
> - Drop unneeded properties
> - Rename ON Semiconductor to onsemi
> ---
>  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
>  MAINTAINERS                                   |   7 ++
>  2 files changed, 117 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> new file mode 100644
> index 000000000000..55b67833f9a1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> @@ -0,0 +1,110 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> +
> +maintainers:
> +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> +
> +description: |-
> +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> +  with an active pixel-array size of 1296H x 976V. It is programmable through
> +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> +  CSI-2 connection.
> +
> +properties:
> +  compatible:
> +    const: onnn,mt9m114
> +
> +  reg:
> +    description: I2C device address
> +    enum:
> +      - 0x48
> +      - 0x5d
> +
> +  clocks:
> +    description: EXTCLK clock signal
> +    maxItems: 1
> +
> +  vdd-supply:
> +    description:
> +      Core digital voltage supply, 1.8V
> +
> +  vddio-supply:
> +    description:
> +      I/O digital voltage supply, 1.8V or 2.8V
> +
> +  vaa-supply:
> +    description:
> +      Analog voltage supply, 2.8V
> +
> +  reset-gpios:
> +    description: |-
> +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> +      low).
> +
> +  port:
> +    $ref: /schemas/graph.yaml#/$defs/port-base
> +    additionalProperties: false
> +
> +    properties:
> +      endpoint:
> +        $ref: /schemas/media/video-interfaces.yaml#
> +        additionalProperties: false
> +
> +        properties:
> +          bus-type:
> +            enum: [4, 5, 6]

With bus-type 5, shouldn't you have the parallel interface sync signal
polarity properties? Possibly also others if the hardware supports them.

> +
> +          remote-endpoint: true
> +
> +          # The number and mapping of lanes (for CSI-2), and the bus width and
> +          # signal polarities (for parallel and BT.656) are fixed and must not
> +          # be specified.
> +
> +        required:
> +          - bus-type
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - vdd-supply
> +  - vddio-supply
> +  - vaa-supply
> +  - port
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c0 {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        sensor@48 {
> +            compatible = "onnn,mt9m114";
> +            reg = <0x48>;
> +
> +            clocks = <&clk24m 0>;
> +
> +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> +
> +            vddio-supply = <&reg_cam_1v8>;
> +            vdd-supply = <&reg_cam_1v8>;
> +            vaa-supply = <&reg_2p8v>;
> +
> +            port {
> +                endpoint {
> +                    bus-type = <4>;
> +                    remote-endpoint = <&mipi_csi_in>;
> +                };
> +            };
> +        };
> +    };
> +...
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f41088418aae..e9919a359c12 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
>  F:	drivers/media/i2c/mt9m032.c
>  F:	include/media/i2c/mt9m032.h
>  
> +MT9M114 ONSEMI SENSOR DRIVER
> +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> +L:	linux-media@vger.kernel.org
> +S:	Maintained
> +T:	git git://linuxtv.org/media_tree.git
> +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> +
>  MT9P031 APTINA CAMERA SENSOR
>  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>  L:	linux-media@vger.kernel.org
Laurent Pinchart Feb. 8, 2022, 6:47 p.m. UTC | #2
Hi Sakari,

On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> > Changes since v1:
> > 
> > - Use graph schema
> > - Drop unneeded properties
> > - Rename ON Semiconductor to onsemi
> > ---
> >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> >  MAINTAINERS                                   |   7 ++
> >  2 files changed, 117 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > new file mode 100644
> > index 000000000000..55b67833f9a1
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > @@ -0,0 +1,110 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > +
> > +maintainers:
> > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > +
> > +description: |-
> > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > +  CSI-2 connection.
> > +
> > +properties:
> > +  compatible:
> > +    const: onnn,mt9m114
> > +
> > +  reg:
> > +    description: I2C device address
> > +    enum:
> > +      - 0x48
> > +      - 0x5d
> > +
> > +  clocks:
> > +    description: EXTCLK clock signal
> > +    maxItems: 1
> > +
> > +  vdd-supply:
> > +    description:
> > +      Core digital voltage supply, 1.8V
> > +
> > +  vddio-supply:
> > +    description:
> > +      I/O digital voltage supply, 1.8V or 2.8V
> > +
> > +  vaa-supply:
> > +    description:
> > +      Analog voltage supply, 2.8V
> > +
> > +  reset-gpios:
> > +    description: |-
> > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > +      low).
> > +
> > +  port:
> > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > +    additionalProperties: false
> > +
> > +    properties:
> > +      endpoint:
> > +        $ref: /schemas/media/video-interfaces.yaml#
> > +        additionalProperties: false
> > +
> > +        properties:
> > +          bus-type:
> > +            enum: [4, 5, 6]
> 
> With bus-type 5, shouldn't you have the parallel interface sync signal
> polarity properties? Possibly also others if the hardware supports them.

As far as I can tell, the hardware has fixed polarities for all signals.
Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
high.

> > +
> > +          remote-endpoint: true
> > +
> > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > +          # be specified.
> > +
> > +        required:
> > +          - bus-type
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - clocks
> > +  - vdd-supply
> > +  - vddio-supply
> > +  - vaa-supply
> > +  - port
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    #include <dt-bindings/gpio/gpio.h>
> > +
> > +    i2c0 {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        sensor@48 {
> > +            compatible = "onnn,mt9m114";
> > +            reg = <0x48>;
> > +
> > +            clocks = <&clk24m 0>;
> > +
> > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > +
> > +            vddio-supply = <&reg_cam_1v8>;
> > +            vdd-supply = <&reg_cam_1v8>;
> > +            vaa-supply = <&reg_2p8v>;
> > +
> > +            port {
> > +                endpoint {
> > +                    bus-type = <4>;
> > +                    remote-endpoint = <&mipi_csi_in>;
> > +                };
> > +            };
> > +        };
> > +    };
> > +...
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index f41088418aae..e9919a359c12 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> >  F:	drivers/media/i2c/mt9m032.c
> >  F:	include/media/i2c/mt9m032.h
> >  
> > +MT9M114 ONSEMI SENSOR DRIVER
> > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > +L:	linux-media@vger.kernel.org
> > +S:	Maintained
> > +T:	git git://linuxtv.org/media_tree.git
> > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > +
> >  MT9P031 APTINA CAMERA SENSOR
> >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >  L:	linux-media@vger.kernel.org
Rob Herring Feb. 11, 2022, 4:08 p.m. UTC | #3
On Mon, 07 Feb 2022 03:20:54 +0200, Laurent Pinchart wrote:
> Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> Changes since v1:
> 
> - Use graph schema
> - Drop unneeded properties
> - Rename ON Semiconductor to onsemi
> ---
>  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
>  MAINTAINERS                                   |   7 ++
>  2 files changed, 117 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>
Sakari Ailus Feb. 12, 2022, 8:33 p.m. UTC | #4
Hi Laurent,

On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> Hi Sakari,
> 
> On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > > 
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > > Changes since v1:
> > > 
> > > - Use graph schema
> > > - Drop unneeded properties
> > > - Rename ON Semiconductor to onsemi
> > > ---
> > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > >  MAINTAINERS                                   |   7 ++
> > >  2 files changed, 117 insertions(+)
> > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > 
> > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > new file mode 100644
> > > index 000000000000..55b67833f9a1
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > @@ -0,0 +1,110 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > +
> > > +maintainers:
> > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > +
> > > +description: |-
> > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > +  CSI-2 connection.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: onnn,mt9m114
> > > +
> > > +  reg:
> > > +    description: I2C device address
> > > +    enum:
> > > +      - 0x48
> > > +      - 0x5d
> > > +
> > > +  clocks:
> > > +    description: EXTCLK clock signal
> > > +    maxItems: 1
> > > +
> > > +  vdd-supply:
> > > +    description:
> > > +      Core digital voltage supply, 1.8V
> > > +
> > > +  vddio-supply:
> > > +    description:
> > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > +
> > > +  vaa-supply:
> > > +    description:
> > > +      Analog voltage supply, 2.8V
> > > +
> > > +  reset-gpios:
> > > +    description: |-
> > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > +      low).
> > > +
> > > +  port:
> > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > +    additionalProperties: false
> > > +
> > > +    properties:
> > > +      endpoint:
> > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > +        additionalProperties: false
> > > +
> > > +        properties:
> > > +          bus-type:
> > > +            enum: [4, 5, 6]
> > 
> > With bus-type 5, shouldn't you have the parallel interface sync signal
> > polarity properties? Possibly also others if the hardware supports them.
> 
> As far as I can tell, the hardware has fixed polarities for all signals.
> Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> high.

Right, then you won't need these.

What about the link-frequencies property?

> 
> > > +
> > > +          remote-endpoint: true
> > > +
> > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > +          # be specified.
> > > +
> > > +        required:
> > > +          - bus-type
> > > +
> > > +required:
> > > +  - compatible
> > > +  - reg
> > > +  - clocks
> > > +  - vdd-supply
> > > +  - vddio-supply
> > > +  - vaa-supply
> > > +  - port
> > > +
> > > +additionalProperties: false
> > > +
> > > +examples:
> > > +  - |
> > > +    #include <dt-bindings/gpio/gpio.h>
> > > +
> > > +    i2c0 {
> > > +        #address-cells = <1>;
> > > +        #size-cells = <0>;
> > > +
> > > +        sensor@48 {
> > > +            compatible = "onnn,mt9m114";
> > > +            reg = <0x48>;
> > > +
> > > +            clocks = <&clk24m 0>;
> > > +
> > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > +
> > > +            vddio-supply = <&reg_cam_1v8>;
> > > +            vdd-supply = <&reg_cam_1v8>;
> > > +            vaa-supply = <&reg_2p8v>;
> > > +
> > > +            port {
> > > +                endpoint {
> > > +                    bus-type = <4>;
> > > +                    remote-endpoint = <&mipi_csi_in>;
> > > +                };
> > > +            };
> > > +        };
> > > +    };
> > > +...
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index f41088418aae..e9919a359c12 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > >  F:	drivers/media/i2c/mt9m032.c
> > >  F:	include/media/i2c/mt9m032.h
> > >  
> > > +MT9M114 ONSEMI SENSOR DRIVER
> > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > +L:	linux-media@vger.kernel.org
> > > +S:	Maintained
> > > +T:	git git://linuxtv.org/media_tree.git
> > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > +
> > >  MT9P031 APTINA CAMERA SENSOR
> > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > >  L:	linux-media@vger.kernel.org
> 
> -- 
> Regards,
> 
> Laurent Pinchart
Laurent Pinchart Feb. 12, 2022, 10:12 p.m. UTC | #5
Hi Sakari,

On Sat, Feb 12, 2022 at 10:33:44PM +0200, Sakari Ailus wrote:
> On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> > On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > > > 
> > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > ---
> > > > Changes since v1:
> > > > 
> > > > - Use graph schema
> > > > - Drop unneeded properties
> > > > - Rename ON Semiconductor to onsemi
> > > > ---
> > > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > > >  MAINTAINERS                                   |   7 ++
> > > >  2 files changed, 117 insertions(+)
> > > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > new file mode 100644
> > > > index 000000000000..55b67833f9a1
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > @@ -0,0 +1,110 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > > +
> > > > +maintainers:
> > > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > +
> > > > +description: |-
> > > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > > +  CSI-2 connection.
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    const: onnn,mt9m114
> > > > +
> > > > +  reg:
> > > > +    description: I2C device address
> > > > +    enum:
> > > > +      - 0x48
> > > > +      - 0x5d
> > > > +
> > > > +  clocks:
> > > > +    description: EXTCLK clock signal
> > > > +    maxItems: 1
> > > > +
> > > > +  vdd-supply:
> > > > +    description:
> > > > +      Core digital voltage supply, 1.8V
> > > > +
> > > > +  vddio-supply:
> > > > +    description:
> > > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > > +
> > > > +  vaa-supply:
> > > > +    description:
> > > > +      Analog voltage supply, 2.8V
> > > > +
> > > > +  reset-gpios:
> > > > +    description: |-
> > > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > > +      low).
> > > > +
> > > > +  port:
> > > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > > +    additionalProperties: false
> > > > +
> > > > +    properties:
> > > > +      endpoint:
> > > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > > +        additionalProperties: false
> > > > +
> > > > +        properties:
> > > > +          bus-type:
> > > > +            enum: [4, 5, 6]
> > > 
> > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > polarity properties? Possibly also others if the hardware supports them.
> > 
> > As far as I can tell, the hardware has fixed polarities for all signals.
> > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > high.
> 
> Right, then you won't need these.
> 
> What about the link-frequencies property?

That's something I've meant to ask, should the link-frequencies property
be specified for parallel buses too, or only CSI-2 ?

We also need to document how a DT writer should select the link
frequencies. The process is complicated, saying that the property is
required without explaining how the values can be computed (EMC
constraints aside, just from a functional point of view) isn't nice. If
you explain this to me, I can put it in a patch :-)

> > > > +
> > > > +          remote-endpoint: true
> > > > +
> > > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > > +          # be specified.
> > > > +
> > > > +        required:
> > > > +          - bus-type
> > > > +
> > > > +required:
> > > > +  - compatible
> > > > +  - reg
> > > > +  - clocks
> > > > +  - vdd-supply
> > > > +  - vddio-supply
> > > > +  - vaa-supply
> > > > +  - port
> > > > +
> > > > +additionalProperties: false
> > > > +
> > > > +examples:
> > > > +  - |
> > > > +    #include <dt-bindings/gpio/gpio.h>
> > > > +
> > > > +    i2c0 {
> > > > +        #address-cells = <1>;
> > > > +        #size-cells = <0>;
> > > > +
> > > > +        sensor@48 {
> > > > +            compatible = "onnn,mt9m114";
> > > > +            reg = <0x48>;
> > > > +
> > > > +            clocks = <&clk24m 0>;
> > > > +
> > > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > > +
> > > > +            vddio-supply = <&reg_cam_1v8>;
> > > > +            vdd-supply = <&reg_cam_1v8>;
> > > > +            vaa-supply = <&reg_2p8v>;
> > > > +
> > > > +            port {
> > > > +                endpoint {
> > > > +                    bus-type = <4>;
> > > > +                    remote-endpoint = <&mipi_csi_in>;
> > > > +                };
> > > > +            };
> > > > +        };
> > > > +    };
> > > > +...
> > > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > > index f41088418aae..e9919a359c12 100644
> > > > --- a/MAINTAINERS
> > > > +++ b/MAINTAINERS
> > > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > > >  F:	drivers/media/i2c/mt9m032.c
> > > >  F:	include/media/i2c/mt9m032.h
> > > >  
> > > > +MT9M114 ONSEMI SENSOR DRIVER
> > > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > +L:	linux-media@vger.kernel.org
> > > > +S:	Maintained
> > > > +T:	git git://linuxtv.org/media_tree.git
> > > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > > +
> > > >  MT9P031 APTINA CAMERA SENSOR
> > > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > >  L:	linux-media@vger.kernel.org
Jacopo Mondi May 13, 2022, 10:33 a.m. UTC | #6
Hi Laurent

On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> Hi Sakari,
>
> On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > >
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > > Changes since v1:
> > >
> > > - Use graph schema
> > > - Drop unneeded properties
> > > - Rename ON Semiconductor to onsemi
> > > ---
> > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > >  MAINTAINERS                                   |   7 ++
> > >  2 files changed, 117 insertions(+)
> > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > new file mode 100644
> > > index 000000000000..55b67833f9a1
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > @@ -0,0 +1,110 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > +
> > > +maintainers:
> > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > +
> > > +description: |-
> > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > +  CSI-2 connection.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: onnn,mt9m114
> > > +
> > > +  reg:
> > > +    description: I2C device address
> > > +    enum:
> > > +      - 0x48
> > > +      - 0x5d
> > > +
> > > +  clocks:
> > > +    description: EXTCLK clock signal
> > > +    maxItems: 1
> > > +
> > > +  vdd-supply:
> > > +    description:
> > > +      Core digital voltage supply, 1.8V
> > > +
> > > +  vddio-supply:
> > > +    description:
> > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > +
> > > +  vaa-supply:
> > > +    description:
> > > +      Analog voltage supply, 2.8V
> > > +
> > > +  reset-gpios:
> > > +    description: |-
> > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > +      low).
> > > +
> > > +  port:
> > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > +    additionalProperties: false
> > > +
> > > +    properties:
> > > +      endpoint:
> > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > +        additionalProperties: false
> > > +
> > > +        properties:
> > > +          bus-type:
> > > +            enum: [4, 5, 6]
> >
> > With bus-type 5, shouldn't you have the parallel interface sync signal
> > polarity properties? Possibly also others if the hardware supports them.
>
> As far as I can tell, the hardware has fixed polarities for all signals.
> Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> high.
>

Although it seems the pixel clock polarity can be controlled ?

> > > +
> > > +          remote-endpoint: true
> > > +
> > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > +          # be specified.
> > > +
> > > +        required:
> > > +          - bus-type
> > > +
> > > +required:
> > > +  - compatible
> > > +  - reg
> > > +  - clocks
> > > +  - vdd-supply
> > > +  - vddio-supply
> > > +  - vaa-supply
> > > +  - port
> > > +
> > > +additionalProperties: false
> > > +
> > > +examples:
> > > +  - |
> > > +    #include <dt-bindings/gpio/gpio.h>
> > > +
> > > +    i2c0 {
> > > +        #address-cells = <1>;
> > > +        #size-cells = <0>;
> > > +
> > > +        sensor@48 {
> > > +            compatible = "onnn,mt9m114";
> > > +            reg = <0x48>;
> > > +
> > > +            clocks = <&clk24m 0>;
> > > +
> > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > +
> > > +            vddio-supply = <&reg_cam_1v8>;
> > > +            vdd-supply = <&reg_cam_1v8>;
> > > +            vaa-supply = <&reg_2p8v>;
> > > +
> > > +            port {
> > > +                endpoint {
> > > +                    bus-type = <4>;
> > > +                    remote-endpoint = <&mipi_csi_in>;
> > > +                };
> > > +            };
> > > +        };
> > > +    };
> > > +...
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index f41088418aae..e9919a359c12 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > >  F:	drivers/media/i2c/mt9m032.c
> > >  F:	include/media/i2c/mt9m032.h
> > >
> > > +MT9M114 ONSEMI SENSOR DRIVER
> > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > +L:	linux-media@vger.kernel.org
> > > +S:	Maintained
> > > +T:	git git://linuxtv.org/media_tree.git
> > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > +
> > >  MT9P031 APTINA CAMERA SENSOR
> > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > >  L:	linux-media@vger.kernel.org
>
> --
> Regards,
>
> Laurent Pinchart
Laurent Pinchart Feb. 20, 2023, 11:46 p.m. UTC | #7
Hi Jacopo,

On Fri, May 13, 2022 at 12:33:01PM +0200, Jacopo Mondi wrote:
> On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> > On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > > >
> > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > ---
> > > > Changes since v1:
> > > >
> > > > - Use graph schema
> > > > - Drop unneeded properties
> > > > - Rename ON Semiconductor to onsemi
> > > > ---
> > > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > > >  MAINTAINERS                                   |   7 ++
> > > >  2 files changed, 117 insertions(+)
> > > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > new file mode 100644
> > > > index 000000000000..55b67833f9a1
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > @@ -0,0 +1,110 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > > +
> > > > +maintainers:
> > > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > +
> > > > +description: |-
> > > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > > +  CSI-2 connection.
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    const: onnn,mt9m114
> > > > +
> > > > +  reg:
> > > > +    description: I2C device address
> > > > +    enum:
> > > > +      - 0x48
> > > > +      - 0x5d
> > > > +
> > > > +  clocks:
> > > > +    description: EXTCLK clock signal
> > > > +    maxItems: 1
> > > > +
> > > > +  vdd-supply:
> > > > +    description:
> > > > +      Core digital voltage supply, 1.8V
> > > > +
> > > > +  vddio-supply:
> > > > +    description:
> > > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > > +
> > > > +  vaa-supply:
> > > > +    description:
> > > > +      Analog voltage supply, 2.8V
> > > > +
> > > > +  reset-gpios:
> > > > +    description: |-
> > > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > > +      low).
> > > > +
> > > > +  port:
> > > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > > +    additionalProperties: false
> > > > +
> > > > +    properties:
> > > > +      endpoint:
> > > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > > +        additionalProperties: false
> > > > +
> > > > +        properties:
> > > > +          bus-type:
> > > > +            enum: [4, 5, 6]
> > >
> > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > polarity properties? Possibly also others if the hardware supports them.
> >
> > As far as I can tell, the hardware has fixed polarities for all signals.
> > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > high.
> 
> Although it seems the pixel clock polarity can be controlled ?

Do you mean through register 0x0016 ? That indeed seems to be the case.
I can't easily test that though, as the development board I'm using at
the moment uses CSI-2, but I can add the property to the bindings.

> > > > +
> > > > +          remote-endpoint: true
> > > > +
> > > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > > +          # be specified.
> > > > +
> > > > +        required:
> > > > +          - bus-type
> > > > +
> > > > +required:
> > > > +  - compatible
> > > > +  - reg
> > > > +  - clocks
> > > > +  - vdd-supply
> > > > +  - vddio-supply
> > > > +  - vaa-supply
> > > > +  - port
> > > > +
> > > > +additionalProperties: false
> > > > +
> > > > +examples:
> > > > +  - |
> > > > +    #include <dt-bindings/gpio/gpio.h>
> > > > +
> > > > +    i2c0 {
> > > > +        #address-cells = <1>;
> > > > +        #size-cells = <0>;
> > > > +
> > > > +        sensor@48 {
> > > > +            compatible = "onnn,mt9m114";
> > > > +            reg = <0x48>;
> > > > +
> > > > +            clocks = <&clk24m 0>;
> > > > +
> > > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > > +
> > > > +            vddio-supply = <&reg_cam_1v8>;
> > > > +            vdd-supply = <&reg_cam_1v8>;
> > > > +            vaa-supply = <&reg_2p8v>;
> > > > +
> > > > +            port {
> > > > +                endpoint {
> > > > +                    bus-type = <4>;
> > > > +                    remote-endpoint = <&mipi_csi_in>;
> > > > +                };
> > > > +            };
> > > > +        };
> > > > +    };
> > > > +...
> > > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > > index f41088418aae..e9919a359c12 100644
> > > > --- a/MAINTAINERS
> > > > +++ b/MAINTAINERS
> > > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > > >  F:	drivers/media/i2c/mt9m032.c
> > > >  F:	include/media/i2c/mt9m032.h
> > > >
> > > > +MT9M114 ONSEMI SENSOR DRIVER
> > > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > +L:	linux-media@vger.kernel.org
> > > > +S:	Maintained
> > > > +T:	git git://linuxtv.org/media_tree.git
> > > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > > +
> > > >  MT9P031 APTINA CAMERA SENSOR
> > > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > >  L:	linux-media@vger.kernel.org
Laurent Pinchart Feb. 20, 2023, 11:52 p.m. UTC | #8
Hi Sakari,

On Sun, Feb 13, 2022 at 12:12:10AM +0200, Laurent Pinchart wrote:
> On Sat, Feb 12, 2022 at 10:33:44PM +0200, Sakari Ailus wrote:
> > On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> > > On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > > > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > > > > 
> > > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > ---
> > > > > Changes since v1:
> > > > > 
> > > > > - Use graph schema
> > > > > - Drop unneeded properties
> > > > > - Rename ON Semiconductor to onsemi
> > > > > ---
> > > > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > > > >  MAINTAINERS                                   |   7 ++
> > > > >  2 files changed, 117 insertions(+)
> > > > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > > 
> > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > > new file mode 100644
> > > > > index 000000000000..55b67833f9a1
> > > > > --- /dev/null
> > > > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > > @@ -0,0 +1,110 @@
> > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > > +%YAML 1.2
> > > > > +---
> > > > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > +
> > > > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > > > +
> > > > > +maintainers:
> > > > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > +
> > > > > +description: |-
> > > > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > > > +  CSI-2 connection.
> > > > > +
> > > > > +properties:
> > > > > +  compatible:
> > > > > +    const: onnn,mt9m114
> > > > > +
> > > > > +  reg:
> > > > > +    description: I2C device address
> > > > > +    enum:
> > > > > +      - 0x48
> > > > > +      - 0x5d
> > > > > +
> > > > > +  clocks:
> > > > > +    description: EXTCLK clock signal
> > > > > +    maxItems: 1
> > > > > +
> > > > > +  vdd-supply:
> > > > > +    description:
> > > > > +      Core digital voltage supply, 1.8V
> > > > > +
> > > > > +  vddio-supply:
> > > > > +    description:
> > > > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > > > +
> > > > > +  vaa-supply:
> > > > > +    description:
> > > > > +      Analog voltage supply, 2.8V
> > > > > +
> > > > > +  reset-gpios:
> > > > > +    description: |-
> > > > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > > > +      low).
> > > > > +
> > > > > +  port:
> > > > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > > > +    additionalProperties: false
> > > > > +
> > > > > +    properties:
> > > > > +      endpoint:
> > > > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > > > +        additionalProperties: false
> > > > > +
> > > > > +        properties:
> > > > > +          bus-type:
> > > > > +            enum: [4, 5, 6]
> > > > 
> > > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > > polarity properties? Possibly also others if the hardware supports them.
> > > 
> > > As far as I can tell, the hardware has fixed polarities for all signals.
> > > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > > high.
> > 
> > Right, then you won't need these.
> > 
> > What about the link-frequencies property?
> 
> That's something I've meant to ask, should the link-frequencies property
> be specified for parallel buses too, or only CSI-2 ?

Any feedback on this ?

> We also need to document how a DT writer should select the link
> frequencies. The process is complicated, saying that the property is
> required without explaining how the values can be computed (EMC
> constraints aside, just from a functional point of view) isn't nice. If
> you explain this to me, I can put it in a patch :-)

Or on this ? :-)

> > > > > +
> > > > > +          remote-endpoint: true
> > > > > +
> > > > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > > > +          # be specified.
> > > > > +
> > > > > +        required:
> > > > > +          - bus-type
> > > > > +
> > > > > +required:
> > > > > +  - compatible
> > > > > +  - reg
> > > > > +  - clocks
> > > > > +  - vdd-supply
> > > > > +  - vddio-supply
> > > > > +  - vaa-supply
> > > > > +  - port
> > > > > +
> > > > > +additionalProperties: false
> > > > > +
> > > > > +examples:
> > > > > +  - |
> > > > > +    #include <dt-bindings/gpio/gpio.h>
> > > > > +
> > > > > +    i2c0 {
> > > > > +        #address-cells = <1>;
> > > > > +        #size-cells = <0>;
> > > > > +
> > > > > +        sensor@48 {
> > > > > +            compatible = "onnn,mt9m114";
> > > > > +            reg = <0x48>;
> > > > > +
> > > > > +            clocks = <&clk24m 0>;
> > > > > +
> > > > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > > > +
> > > > > +            vddio-supply = <&reg_cam_1v8>;
> > > > > +            vdd-supply = <&reg_cam_1v8>;
> > > > > +            vaa-supply = <&reg_2p8v>;
> > > > > +
> > > > > +            port {
> > > > > +                endpoint {
> > > > > +                    bus-type = <4>;
> > > > > +                    remote-endpoint = <&mipi_csi_in>;
> > > > > +                };
> > > > > +            };
> > > > > +        };
> > > > > +    };
> > > > > +...
> > > > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > > > index f41088418aae..e9919a359c12 100644
> > > > > --- a/MAINTAINERS
> > > > > +++ b/MAINTAINERS
> > > > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > > > >  F:	drivers/media/i2c/mt9m032.c
> > > > >  F:	include/media/i2c/mt9m032.h
> > > > >  
> > > > > +MT9M114 ONSEMI SENSOR DRIVER
> > > > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > +L:	linux-media@vger.kernel.org
> > > > > +S:	Maintained
> > > > > +T:	git git://linuxtv.org/media_tree.git
> > > > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > > > +
> > > > >  MT9P031 APTINA CAMERA SENSOR
> > > > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > >  L:	linux-media@vger.kernel.org
Laurent Pinchart Feb. 21, 2023, 12:25 a.m. UTC | #9
On Tue, Feb 21, 2023 at 01:46:06AM +0200, Laurent Pinchart wrote:
> On Fri, May 13, 2022 at 12:33:01PM +0200, Jacopo Mondi wrote:
> > On Tue, Feb 08, 2022 at 08:47:32PM +0200, Laurent Pinchart wrote:
> > > On Tue, Feb 08, 2022 at 06:51:01PM +0200, Sakari Ailus wrote:
> > > > On Mon, Feb 07, 2022 at 03:20:54AM +0200, Laurent Pinchart wrote:
> > > > > Add device tree binding for the onsemi MT9M114 CMOS camera sensor.
> > > > >
> > > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > ---
> > > > > Changes since v1:
> > > > >
> > > > > - Use graph schema
> > > > > - Drop unneeded properties
> > > > > - Rename ON Semiconductor to onsemi
> > > > > ---
> > > > >  .../bindings/media/i2c/onnn,mt9m114.yaml      | 110 ++++++++++++++++++
> > > > >  MAINTAINERS                                   |   7 ++
> > > > >  2 files changed, 117 insertions(+)
> > > > >  create mode 100644 Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > > new file mode 100644
> > > > > index 000000000000..55b67833f9a1
> > > > > --- /dev/null
> > > > > +++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
> > > > > @@ -0,0 +1,110 @@
> > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > > +%YAML 1.2
> > > > > +---
> > > > > +$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > +
> > > > > +title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
> > > > > +
> > > > > +maintainers:
> > > > > +  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > +
> > > > > +description: |-
> > > > > +  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
> > > > > +  with an active pixel-array size of 1296H x 976V. It is programmable through
> > > > > +  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
> > > > > +  CSI-2 connection.
> > > > > +
> > > > > +properties:
> > > > > +  compatible:
> > > > > +    const: onnn,mt9m114
> > > > > +
> > > > > +  reg:
> > > > > +    description: I2C device address
> > > > > +    enum:
> > > > > +      - 0x48
> > > > > +      - 0x5d
> > > > > +
> > > > > +  clocks:
> > > > > +    description: EXTCLK clock signal
> > > > > +    maxItems: 1
> > > > > +
> > > > > +  vdd-supply:
> > > > > +    description:
> > > > > +      Core digital voltage supply, 1.8V
> > > > > +
> > > > > +  vddio-supply:
> > > > > +    description:
> > > > > +      I/O digital voltage supply, 1.8V or 2.8V
> > > > > +
> > > > > +  vaa-supply:
> > > > > +    description:
> > > > > +      Analog voltage supply, 2.8V
> > > > > +
> > > > > +  reset-gpios:
> > > > > +    description: |-
> > > > > +      Reference to the GPIO connected to the RESET_BAR pin, if any (active
> > > > > +      low).
> > > > > +
> > > > > +  port:
> > > > > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > > > > +    additionalProperties: false
> > > > > +
> > > > > +    properties:
> > > > > +      endpoint:
> > > > > +        $ref: /schemas/media/video-interfaces.yaml#
> > > > > +        additionalProperties: false
> > > > > +
> > > > > +        properties:
> > > > > +          bus-type:
> > > > > +            enum: [4, 5, 6]
> > > >
> > > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > > polarity properties? Possibly also others if the hardware supports them.
> > >
> > > As far as I can tell, the hardware has fixed polarities for all signals.
> > > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > > high.
> > 
> > Although it seems the pixel clock polarity can be controlled ?
> 
> Do you mean through register 0x0016 ? That indeed seems to be the case.
> I can't easily test that though, as the development board I'm using at
> the moment uses CSI-2, but I can add the property to the bindings.

This being said, I realized that the only property we have to specify
the pixel clock polarity is pclk-sample, which is defined as

      Sample data on falling (0), rising (1) or both (2) edges of the pixel
      clock signal.

This is quite ill-defined for transmitters, and should be fixed. I'd
rather not make that a dependency for this driver though. We can always
add a new property later, with a default value for backward
compatibility.

> > > > > +
> > > > > +          remote-endpoint: true
> > > > > +
> > > > > +          # The number and mapping of lanes (for CSI-2), and the bus width and
> > > > > +          # signal polarities (for parallel and BT.656) are fixed and must not
> > > > > +          # be specified.
> > > > > +
> > > > > +        required:
> > > > > +          - bus-type
> > > > > +
> > > > > +required:
> > > > > +  - compatible
> > > > > +  - reg
> > > > > +  - clocks
> > > > > +  - vdd-supply
> > > > > +  - vddio-supply
> > > > > +  - vaa-supply
> > > > > +  - port
> > > > > +
> > > > > +additionalProperties: false
> > > > > +
> > > > > +examples:
> > > > > +  - |
> > > > > +    #include <dt-bindings/gpio/gpio.h>
> > > > > +
> > > > > +    i2c0 {
> > > > > +        #address-cells = <1>;
> > > > > +        #size-cells = <0>;
> > > > > +
> > > > > +        sensor@48 {
> > > > > +            compatible = "onnn,mt9m114";
> > > > > +            reg = <0x48>;
> > > > > +
> > > > > +            clocks = <&clk24m 0>;
> > > > > +
> > > > > +            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
> > > > > +
> > > > > +            vddio-supply = <&reg_cam_1v8>;
> > > > > +            vdd-supply = <&reg_cam_1v8>;
> > > > > +            vaa-supply = <&reg_2p8v>;
> > > > > +
> > > > > +            port {
> > > > > +                endpoint {
> > > > > +                    bus-type = <4>;
> > > > > +                    remote-endpoint = <&mipi_csi_in>;
> > > > > +                };
> > > > > +            };
> > > > > +        };
> > > > > +    };
> > > > > +...
> > > > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > > > index f41088418aae..e9919a359c12 100644
> > > > > --- a/MAINTAINERS
> > > > > +++ b/MAINTAINERS
> > > > > @@ -13096,6 +13096,13 @@ T:	git git://linuxtv.org/media_tree.git
> > > > >  F:	drivers/media/i2c/mt9m032.c
> > > > >  F:	include/media/i2c/mt9m032.h
> > > > >
> > > > > +MT9M114 ONSEMI SENSOR DRIVER
> > > > > +M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > > +L:	linux-media@vger.kernel.org
> > > > > +S:	Maintained
> > > > > +T:	git git://linuxtv.org/media_tree.git
> > > > > +F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
> > > > > +
> > > > >  MT9P031 APTINA CAMERA SENSOR
> > > > >  M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > >  L:	linux-media@vger.kernel.org
Sakari Ailus Feb. 21, 2023, 12:42 p.m. UTC | #10
Hi Laurent,

On Tue, Feb 21, 2023 at 01:52:46AM +0200, Laurent Pinchart wrote:
> > > > > > +        properties:
> > > > > > +          bus-type:
> > > > > > +            enum: [4, 5, 6]
> > > > > 
> > > > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > > > polarity properties? Possibly also others if the hardware supports them.
> > > > 
> > > > As far as I can tell, the hardware has fixed polarities for all signals.
> > > > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > > > high.
> > > 
> > > Right, then you won't need these.
> > > 
> > > What about the link-frequencies property?
> > 
> > That's something I've meant to ask, should the link-frequencies property
> > be specified for parallel buses too, or only CSI-2 ?
> 
> Any feedback on this ?

Yes.

It very likely matters there as well but probably less so than on CSI-2.

link-frequencies isn't specific to CSI-2 either.

> 
> > We also need to document how a DT writer should select the link
> > frequencies. The process is complicated, saying that the property is
> > required without explaining how the values can be computed (EMC
> > constraints aside, just from a functional point of view) isn't nice. If
> > you explain this to me, I can put it in a patch :-)
> 
> Or on this ? :-)

Generally the hardware people will tell you this when it matters. :-) But
on a development board you can probably have anything the hardware
supports.

I guess we could add a few words on this to e.g.
Documentation/driver-api/media/camera-sensor.rst .

Most drivers will support a few frequencies only and sometimes the vendor,
due to someone needing it, provides another configuration with a different
frequency. Many sensors also have datasheets that are precise enough to
calculate this yourself.
Laurent Pinchart Feb. 21, 2023, 12:48 p.m. UTC | #11
Hi Sakari,

On Tue, Feb 21, 2023 at 02:42:31PM +0200, Sakari Ailus wrote:
> On Tue, Feb 21, 2023 at 01:52:46AM +0200, Laurent Pinchart wrote:
> > > > > > > +        properties:
> > > > > > > +          bus-type:
> > > > > > > +            enum: [4, 5, 6]
> > > > > > 
> > > > > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > > > > polarity properties? Possibly also others if the hardware supports them.
> > > > > 
> > > > > As far as I can tell, the hardware has fixed polarities for all signals.
> > > > > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > > > > high.
> > > > 
> > > > Right, then you won't need these.
> > > > 
> > > > What about the link-frequencies property?
> > > 
> > > That's something I've meant to ask, should the link-frequencies property
> > > be specified for parallel buses too, or only CSI-2 ?
> > 
> > Any feedback on this ?
> 
> Yes.
> 
> It very likely matters there as well but probably less so than on CSI-2.
> 
> link-frequencies isn't specific to CSI-2 either.
> 
> > > We also need to document how a DT writer should select the link
> > > frequencies. The process is complicated, saying that the property is
> > > required without explaining how the values can be computed (EMC
> > > constraints aside, just from a functional point of view) isn't nice. If
> > > you explain this to me, I can put it in a patch :-)
> > 
> > Or on this ? :-)
> 
> Generally the hardware people will tell you this when it matters. :-) But
> on a development board you can probably have anything the hardware
> supports.
> 
> I guess we could add a few words on this to e.g.
> Documentation/driver-api/media/camera-sensor.rst .

Please :-) When the sensor driver supports multiple link frequencies,
and in particular a continuous range of frequencies, I want a document I
can point people to precisely answer the "I have no idea about those
stuff, what value do I put in my device tree?" question. It should
include a clear procedure to calculate a value, not just a generic
statement along the lines of "pick a value that is suitable for you".

> Most drivers will support a few frequencies only and sometimes the vendor,
> due to someone needing it, provides another configuration with a different
> frequency. Many sensors also have datasheets that are precise enough to
> calculate this yourself.
Laurent Pinchart Sept. 16, 2023, 10:57 p.m. UTC | #12
Hi Sakari,

On Tue, Feb 21, 2023 at 02:48:19PM +0200, Laurent Pinchart wrote:
> On Tue, Feb 21, 2023 at 02:42:31PM +0200, Sakari Ailus wrote:
> > On Tue, Feb 21, 2023 at 01:52:46AM +0200, Laurent Pinchart wrote:
> > > > > > > > +        properties:
> > > > > > > > +          bus-type:
> > > > > > > > +            enum: [4, 5, 6]
> > > > > > > 
> > > > > > > With bus-type 5, shouldn't you have the parallel interface sync signal
> > > > > > > polarity properties? Possibly also others if the hardware supports them.
> > > > > > 
> > > > > > As far as I can tell, the hardware has fixed polarities for all signals.
> > > > > > Both hsync and vsync (called LINE_VALID and FRAME_VALID here) are active
> > > > > > high.
> > > > > 
> > > > > Right, then you won't need these.
> > > > > 
> > > > > What about the link-frequencies property?
> > > > 
> > > > That's something I've meant to ask, should the link-frequencies property
> > > > be specified for parallel buses too, or only CSI-2 ?
> > > 
> > > Any feedback on this ?
> > 
> > Yes.
> > 
> > It very likely matters there as well but probably less so than on CSI-2.
> > 
> > link-frequencies isn't specific to CSI-2 either.
> > 
> > > > We also need to document how a DT writer should select the link
> > > > frequencies. The process is complicated, saying that the property is
> > > > required without explaining how the values can be computed (EMC
> > > > constraints aside, just from a functional point of view) isn't nice. If
> > > > you explain this to me, I can put it in a patch :-)
> > > 
> > > Or on this ? :-)
> > 
> > Generally the hardware people will tell you this when it matters. :-) But
> > on a development board you can probably have anything the hardware
> > supports.
> > 
> > I guess we could add a few words on this to e.g.
> > Documentation/driver-api/media/camera-sensor.rst .
> 
> Please :-) When the sensor driver supports multiple link frequencies,
> and in particular a continuous range of frequencies, I want a document I
> can point people to precisely answer the "I have no idea about those
> stuff, what value do I put in my device tree?" question. It should
> include a clear procedure to calculate a value, not just a generic
> statement along the lines of "pick a value that is suitable for you".

Could you help me with this ? :-)

> > Most drivers will support a few frequencies only and sometimes the vendor,
> > due to someone needing it, provides another configuration with a different
> > frequency. Many sensors also have datasheets that are precise enough to
> > calculate this yourself.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
new file mode 100644
index 000000000000..55b67833f9a1
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/onnn,mt9m114.yaml
@@ -0,0 +1,110 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/onnn,mt9m114.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: onsemi 1/6-inch 720p CMOS Digital Image Sensor
+
+maintainers:
+  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+
+description: |-
+  The onsemi MT9M114 is a 1/6-inch 720p (1.26 Mp) CMOS digital image sensor
+  with an active pixel-array size of 1296H x 976V. It is programmable through
+  an I2C interface and outputs image data over a 8-bit parallel or 1-lane MIPI
+  CSI-2 connection.
+
+properties:
+  compatible:
+    const: onnn,mt9m114
+
+  reg:
+    description: I2C device address
+    enum:
+      - 0x48
+      - 0x5d
+
+  clocks:
+    description: EXTCLK clock signal
+    maxItems: 1
+
+  vdd-supply:
+    description:
+      Core digital voltage supply, 1.8V
+
+  vddio-supply:
+    description:
+      I/O digital voltage supply, 1.8V or 2.8V
+
+  vaa-supply:
+    description:
+      Analog voltage supply, 2.8V
+
+  reset-gpios:
+    description: |-
+      Reference to the GPIO connected to the RESET_BAR pin, if any (active
+      low).
+
+  port:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
+    properties:
+      endpoint:
+        $ref: /schemas/media/video-interfaces.yaml#
+        additionalProperties: false
+
+        properties:
+          bus-type:
+            enum: [4, 5, 6]
+
+          remote-endpoint: true
+
+          # The number and mapping of lanes (for CSI-2), and the bus width and
+          # signal polarities (for parallel and BT.656) are fixed and must not
+          # be specified.
+
+        required:
+          - bus-type
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - vdd-supply
+  - vddio-supply
+  - vaa-supply
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c0 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        sensor@48 {
+            compatible = "onnn,mt9m114";
+            reg = <0x48>;
+
+            clocks = <&clk24m 0>;
+
+            reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
+
+            vddio-supply = <&reg_cam_1v8>;
+            vdd-supply = <&reg_cam_1v8>;
+            vaa-supply = <&reg_2p8v>;
+
+            port {
+                endpoint {
+                    bus-type = <4>;
+                    remote-endpoint = <&mipi_csi_in>;
+                };
+            };
+        };
+    };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index f41088418aae..e9919a359c12 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13096,6 +13096,13 @@  T:	git git://linuxtv.org/media_tree.git
 F:	drivers/media/i2c/mt9m032.c
 F:	include/media/i2c/mt9m032.h
 
+MT9M114 ONSEMI SENSOR DRIVER
+M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+L:	linux-media@vger.kernel.org
+S:	Maintained
+T:	git git://linuxtv.org/media_tree.git
+F:	Documentation/devicetree/bindings/media/i2c.onnn,mt9m114.yaml
+
 MT9P031 APTINA CAMERA SENSOR
 M:	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 L:	linux-media@vger.kernel.org