[V8,1/2] media: dt-bindings: media: i2c: Document OV02A10 bindings
Commit Message
Add DT bindings documentation for Omnivision OV02A10 image sensor.
Signed-off-by: Dongchun Zhu <dongchun.zhu@mediatek.com>
---
.../bindings/media/i2c/ovti,ov02a10.yaml | 184 +++++++++++++++++++++
MAINTAINERS | 7 +
2 files changed, 191 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
Comments
On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
> Add DT bindings documentation for Omnivision OV02A10 image sensor.
>
> Signed-off-by: Dongchun Zhu <dongchun.zhu@mediatek.com>
> ---
> .../bindings/media/i2c/ovti,ov02a10.yaml | 184 +++++++++++++++++++++
> MAINTAINERS | 7 +
> 2 files changed, 191 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> new file mode 100644
> index 0000000..5468d1b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> @@ -0,0 +1,184 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright (c) 2020 MediaTek Inc.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
> +
> +maintainers:
> + - Dongchun Zhu <dongchun.zhu@mediatek.com>
> +
> +description: |-
> + The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
> + image sensor, which is the latest production derived from Omnivision's CMOS
> + image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
> + @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
> + sensor output is available via CSI-2 serial data output.
> +
> +properties:
> + compatible:
> + const: ovti,ov02a10
> +
> + reg:
> + description: I2C device address
Drop this. Nothing specific to this device.
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: top mux camtg clock
> + - description: devider clock
typo
> +
> + clock-names:
> + items:
> + - const: eclk
> + - const: freq_mux
> +
> + clock-frequency:
> + description:
> + Frequency of the eclk clock in Hertz.
> +
> + dovdd-supply:
> + description:
> + Definition of the regulator used as interface power supply.
> +
> + avdd-supply:
> + description:
> + Definition of the regulator used as analog power supply.
> +
> + dvdd-supply:
> + description:
> + Definition of the regulator used as digital power supply.
> +
> + powerdown-gpios:
> + maxItems: 1
> +
> + reset-gpios:
> + maxItems: 1
> +
> + rotation:
> + description:
> + Definition of the sensor's placement, valid values are 0 and 180.
> + allOf:
> + - $ref: "/schemas/types.yaml#/definitions/uint32"
> + - enum:
> + - 0 # Sensor Mounted Upright (default)
> + - 180 # Sensor Mounted Upside Down
> +
> + ovti,mipi-tx-speed:
> + description:
> + Indication of MIPI transmission speed select, which is to control D-PHY
> + timing setting by adjusting MIPI clock voltage to improve the clock
> + driver capability.
> + allOf:
> + - $ref: "/schemas/types.yaml#/definitions/uint32"
> + - enum:
> + - 0 # 20MHz - 30MHz
> + - 1 # 30MHz - 50MHz
> + - 2 # 50MHz - 75MHz
> + - 3 # 75MHz - 100MHz
> + - 4 # 100MHz - 130MHz (suggested)
> + - 5 # Manual
> +
> + # See ../video-interfaces.txt for details
> + port:
> + type: object
> + additionalProperties: false
> + description:
> + A node containing an output port node with an endpoint definition
> + as documented in
> + Documentation/devicetree/bindings/media/video-interfaces.txt
No need for repeating a generic description of a common property.
> +
> + properties:
> + endpoint:
> + type: object
> +
> + properties:
> + data-lanes:
> + description: |-
> + The driver only supports 1-lane operation.
What the driver supports is not relevant.
> + items:
> + - const: 1
> + - const: 2
> + - const: 3
> + - const: 4
> +
> + clock-noncontinuous:
> + type: boolean
> + description: |-
> + MIPI CSI-2 clock is non-continuous if this property is present,
> + otherwise it's continuous.
Assume this has a common definition, so just need:
clock-noncontinuous: true
> +
> + link-frequencies:
> + allOf:
> + - $ref: /schemas/types.yaml#/definitions/uint64-array
> + description:
> + Allowed data bus frequencies. 39000000 Hz is supported by
> + the driver.
This too is a common property.
Though 39000000 looks like a constraint. However, what the driver
supports is not relevant.
> +
> + required:
> + - link-frequencies
> +
> + required:
> + - endpoint
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - clock-frequency
> + - dovdd-supply
> + - avdd-supply
> + - dvdd-supply
> + - powerdown-gpios
> + - reset-gpios
> + - port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> +
> + #include <dt-bindings/clock/mt8183-clk.h>
> + #include <dt-bindings/gpio/gpio.h>
> +
> + i2c {
> + clock-frequency = <400000>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ov02a10: camera-sensor@3d {
> + compatible = "ovti,ov02a10";
> + reg = <0x3d>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&clk_24m_cam>;
> +
> + clocks = <&topckgen CLK_TOP_MUX_CAMTG>,
> + <&topckgen CLK_TOP_UNIVP_192M_D8>;
> + clock-names = "eclk", "freq_mux";
> + clock-frequency = <24000000>;
> +
> + rotation = <180>;
> + ovti,mipi-tx-speed = <3>;
> +
> + dovdd-supply = <&mt6358_vcamio_reg>;
> + avdd-supply = <&mt6358_vcama1_reg>;
> + dvdd-supply = <&mt6358_vcn18_reg>;
> +
> + powerdown-gpios = <&pio 107 GPIO_ACTIVE_LOW>;
> + reset-gpios = <&pio 109 GPIO_ACTIVE_HIGH>;
> +
> + port {
> + wcam_out: endpoint {
> + remote-endpoint = <&mipi_in_wcam>;
> + data-lanes = <1>;
This doesn't match the schema which says this should be 4 entries.
> + clock-noncontinuous;
> + link-frequencies = /bits/ 64 <390000000>;
> + };
> + };
> + };
> + };
> +
> +...
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e64e5db..63a2335 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12389,6 +12389,13 @@ M: Harald Welte <laforge@gnumonks.org>
> S: Maintained
> F: drivers/char/pcmcia/cm4040_cs.*
>
> +OMNIVISION OV02A10 SENSOR DRIVER
> +M: Dongchun Zhu <dongchun.zhu@mediatek.com>
> +L: linux-media@vger.kernel.org
> +S: Maintained
> +T: git git://linuxtv.org/media_tree.git
> +F: Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> +
> OMNIVISION OV13858 SENSOR DRIVER
> M: Sakari Ailus <sakari.ailus@linux.intel.com>
> L: linux-media@vger.kernel.org
> --
> 2.9.2
Hi Rob,
On Mon, May 11, 2020 at 11:02:07AM -0500, Rob Herring wrote:
> On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
...
> > + properties:
> > + endpoint:
> > + type: object
> > +
> > + properties:
> > + data-lanes:
> > + description: |-
> > + The driver only supports 1-lane operation.
>
> What the driver supports is not relevant.
>
> > + items:
> > + - const: 1
> > + - const: 2
> > + - const: 3
> > + - const: 4
> > +
> > + clock-noncontinuous:
> > + type: boolean
> > + description: |-
> > + MIPI CSI-2 clock is non-continuous if this property is present,
> > + otherwise it's continuous.
>
> Assume this has a common definition, so just need:
>
> clock-noncontinuous: true
>
...
> > + data-lanes = <1>;
>
> This doesn't match the schema which says this should be 4 entries.
I believe the intent has been to say there would be 1, 2, 3 or 4 entries
--- i.e. the number of lanes.
Hi Rob,
Thanks for the review.
On Mon, 2020-05-11 at 11:02 -0500, Rob Herring wrote:
> On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
> > Add DT bindings documentation for Omnivision OV02A10 image sensor.
> >
> > Signed-off-by: Dongchun Zhu <dongchun.zhu@mediatek.com>
> > ---
> > .../bindings/media/i2c/ovti,ov02a10.yaml | 184 +++++++++++++++++++++
> > MAINTAINERS | 7 +
> > 2 files changed, 191 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > new file mode 100644
> > index 0000000..5468d1b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > @@ -0,0 +1,184 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright (c) 2020 MediaTek Inc.
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
> > +
> > +maintainers:
> > + - Dongchun Zhu <dongchun.zhu@mediatek.com>
> > +
> > +description: |-
> > + The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
> > + image sensor, which is the latest production derived from Omnivision's CMOS
> > + image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
> > + @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
> > + sensor output is available via CSI-2 serial data output.
> > +
> > +properties:
> > + compatible:
> > + const: ovti,ov02a10
> > +
> > + reg:
> > + description: I2C device address
>
> Drop this. Nothing specific to this device.
>
Okay. I would release this description in next release.
> > + maxItems: 1
> > +
> > + clocks:
> > + items:
> > + - description: top mux camtg clock
> > + - description: devider clock
>
> typo
>
Sorry for the mistake.
devider would be replaced of divider in next release.
> > +
> > + clock-names:
> > + items:
> > + - const: eclk
> > + - const: freq_mux
> > +
> > + clock-frequency:
> > + description:
> > + Frequency of the eclk clock in Hertz.
> > +
> > + dovdd-supply:
> > + description:
> > + Definition of the regulator used as interface power supply.
> > +
> > + avdd-supply:
> > + description:
> > + Definition of the regulator used as analog power supply.
> > +
> > + dvdd-supply:
> > + description:
> > + Definition of the regulator used as digital power supply.
> > +
> > + powerdown-gpios:
> > + maxItems: 1
> > +
> > + reset-gpios:
> > + maxItems: 1
> > +
> > + rotation:
> > + description:
> > + Definition of the sensor's placement, valid values are 0 and 180.
> > + allOf:
> > + - $ref: "/schemas/types.yaml#/definitions/uint32"
> > + - enum:
> > + - 0 # Sensor Mounted Upright (default)
> > + - 180 # Sensor Mounted Upside Down
> > +
> > + ovti,mipi-tx-speed:
> > + description:
> > + Indication of MIPI transmission speed select, which is to control D-PHY
> > + timing setting by adjusting MIPI clock voltage to improve the clock
> > + driver capability.
> > + allOf:
> > + - $ref: "/schemas/types.yaml#/definitions/uint32"
> > + - enum:
> > + - 0 # 20MHz - 30MHz
> > + - 1 # 30MHz - 50MHz
> > + - 2 # 50MHz - 75MHz
> > + - 3 # 75MHz - 100MHz
> > + - 4 # 100MHz - 130MHz (suggested)
> > + - 5 # Manual
> > +
> > + # See ../video-interfaces.txt for details
> > + port:
> > + type: object
> > + additionalProperties: false
> > + description:
> > + A node containing an output port node with an endpoint definition
> > + as documented in
> > + Documentation/devicetree/bindings/media/video-interfaces.txt
>
> No need for repeating a generic description of a common property.
>
Got it.
Description of common property "port" would be removed in next release.
> > +
> > + properties:
> > + endpoint:
> > + type: object
> > +
> > + properties:
> > + data-lanes:
> > + description: |-
> > + The driver only supports 1-lane operation.
>
> What the driver supports is not relevant.
>
Got it.
Remove description in next release by using like this:
data-lanes:
maxItems: 1
> > + items:
> > + - const: 1
> > + - const: 2
> > + - const: 3
> > + - const: 4
> > +
> > + clock-noncontinuous:
> > + type: boolean
> > + description: |-
> > + MIPI CSI-2 clock is non-continuous if this property is present,
> > + otherwise it's continuous.
>
> Assume this has a common definition, so just need:
>
> clock-noncontinuous: true
>
Fixed in next release.
> > +
> > + link-frequencies:
> > + allOf:
> > + - $ref: /schemas/types.yaml#/definitions/uint64-array
> > + description:
> > + Allowed data bus frequencies. 39000000 Hz is supported by
> > + the driver.
>
> This too is a common property.
>
> Though 39000000 looks like a constraint. However, what the driver
> supports is not relevant.
>
Fixed in next release by using:
link-frequencies: true
> > +
> > + required:
> > + - link-frequencies
> > +
> > + required:
> > + - endpoint
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - clocks
> > + - clock-names
> > + - clock-frequency
> > + - dovdd-supply
> > + - avdd-supply
> > + - dvdd-supply
> > + - powerdown-gpios
> > + - reset-gpios
> > + - port
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > +
> > + #include <dt-bindings/clock/mt8183-clk.h>
> > + #include <dt-bindings/gpio/gpio.h>
> > +
> > + i2c {
> > + clock-frequency = <400000>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + ov02a10: camera-sensor@3d {
> > + compatible = "ovti,ov02a10";
> > + reg = <0x3d>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&clk_24m_cam>;
> > +
> > + clocks = <&topckgen CLK_TOP_MUX_CAMTG>,
> > + <&topckgen CLK_TOP_UNIVP_192M_D8>;
> > + clock-names = "eclk", "freq_mux";
> > + clock-frequency = <24000000>;
> > +
> > + rotation = <180>;
> > + ovti,mipi-tx-speed = <3>;
> > +
> > + dovdd-supply = <&mt6358_vcamio_reg>;
> > + avdd-supply = <&mt6358_vcama1_reg>;
> > + dvdd-supply = <&mt6358_vcn18_reg>;
> > +
> > + powerdown-gpios = <&pio 107 GPIO_ACTIVE_LOW>;
> > + reset-gpios = <&pio 109 GPIO_ACTIVE_HIGH>;
> > +
> > + port {
> > + wcam_out: endpoint {
> > + remote-endpoint = <&mipi_in_wcam>;
> > + data-lanes = <1>;
>
> This doesn't match the schema which says this should be 4 entries.
>
Property "data-lanes" shows the number of lanes that sensor supports.
If this property is omitted, four-lane operation is assumed.
For OV02A10, it is one-lane operation, so the property is supposed to be
set to <1>.
> > + clock-noncontinuous;
> > + link-frequencies = /bits/ 64 <390000000>;
> > + };
> > + };
> > + };
> > + };
> > +
> > +...
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index e64e5db..63a2335 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -12389,6 +12389,13 @@ M: Harald Welte <laforge@gnumonks.org>
> > S: Maintained
> > F: drivers/char/pcmcia/cm4040_cs.*
> >
> > +OMNIVISION OV02A10 SENSOR DRIVER
> > +M: Dongchun Zhu <dongchun.zhu@mediatek.com>
> > +L: linux-media@vger.kernel.org
> > +S: Maintained
> > +T: git git://linuxtv.org/media_tree.git
> > +F: Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > +
> > OMNIVISION OV13858 SENSOR DRIVER
> > M: Sakari Ailus <sakari.ailus@linux.intel.com>
> > L: linux-media@vger.kernel.org
> > --
> > 2.9.2
Hi Dongchun, Rob,
On Tue, May 12, 2020 at 4:41 AM Dongchun Zhu <dongchun.zhu@mediatek.com> wrote:
>
> Hi Rob,
>
> Thanks for the review.
>
> On Mon, 2020-05-11 at 11:02 -0500, Rob Herring wrote:
> > On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
[snip]
> > > + port {
> > > + wcam_out: endpoint {
> > > + remote-endpoint = <&mipi_in_wcam>;
> > > + data-lanes = <1>;
> >
> > This doesn't match the schema which says this should be 4 entries.
> >
>
> Property "data-lanes" shows the number of lanes that sensor supports.
> If this property is omitted, four-lane operation is assumed.
> For OV02A10, it is one-lane operation, so the property is supposed to be
> set to <1>.
>
To clarify on this, the ov02a10 sensor supports only 1 lane. It's not
a driver limitation.
Best regards,
Tomasz
Hi Rob,
On Mon, May 11, 2020 at 11:02:07AM -0500, Rob Herring wrote:
> On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
> > Add DT bindings documentation for Omnivision OV02A10 image sensor.
> >
> > Signed-off-by: Dongchun Zhu <dongchun.zhu@mediatek.com>
> > ---
> > .../bindings/media/i2c/ovti,ov02a10.yaml | 184 +++++++++++++++++++++
> > MAINTAINERS | 7 +
> > 2 files changed, 191 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > new file mode 100644
> > index 0000000..5468d1b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > @@ -0,0 +1,184 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright (c) 2020 MediaTek Inc.
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
> > +
> > +maintainers:
> > + - Dongchun Zhu <dongchun.zhu@mediatek.com>
> > +
> > +description: |-
> > + The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
> > + image sensor, which is the latest production derived from Omnivision's CMOS
> > + image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
> > + @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
> > + sensor output is available via CSI-2 serial data output.
> > +
> > +properties:
> > + compatible:
> > + const: ovti,ov02a10
> > +
> > + reg:
> > + description: I2C device address
>
> Drop this. Nothing specific to this device.
>
> > + maxItems: 1
> > +
> > + clocks:
> > + items:
> > + - description: top mux camtg clock
> > + - description: devider clock
>
> typo
>
> > +
> > + clock-names:
> > + items:
> > + - const: eclk
> > + - const: freq_mux
> > +
> > + clock-frequency:
> > + description:
> > + Frequency of the eclk clock in Hertz.
> > +
> > + dovdd-supply:
> > + description:
> > + Definition of the regulator used as interface power supply.
> > +
> > + avdd-supply:
> > + description:
> > + Definition of the regulator used as analog power supply.
> > +
> > + dvdd-supply:
> > + description:
> > + Definition of the regulator used as digital power supply.
> > +
> > + powerdown-gpios:
> > + maxItems: 1
> > +
> > + reset-gpios:
> > + maxItems: 1
I asked a question about defining GPIO polarities some time ago, but I
guess it slipped through.
The chip documentation calls the reset pin as "RST_PAD (low level
reset)". Where should the inversion be handled, in the driver or here,
by having the DT include a necessary flag in the specifier?
Best regards,
Tomasz
Hi Tomasz, Rob,
On Thu, 2020-05-21 at 19:35 +0000, Tomasz Figa wrote:
> Hi Rob,
>
> On Mon, May 11, 2020 at 11:02:07AM -0500, Rob Herring wrote:
> > On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
> > > Add DT bindings documentation for Omnivision OV02A10 image sensor.
> > >
> > > Signed-off-by: Dongchun Zhu <dongchun.zhu@mediatek.com>
> > > ---
> > > .../bindings/media/i2c/ovti,ov02a10.yaml | 184 +++++++++++++++++++++
> > > MAINTAINERS | 7 +
> > > 2 files changed, 191 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > > new file mode 100644
> > > index 0000000..5468d1b
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
> > > @@ -0,0 +1,184 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +# Copyright (c) 2020 MediaTek Inc.
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
> > > +
> > > +maintainers:
> > > + - Dongchun Zhu <dongchun.zhu@mediatek.com>
> > > +
> > > +description: |-
> > > + The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
> > > + image sensor, which is the latest production derived from Omnivision's CMOS
> > > + image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
> > > + @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
> > > + sensor output is available via CSI-2 serial data output.
> > > +
> > > +properties:
> > > + compatible:
> > > + const: ovti,ov02a10
> > > +
> > > + reg:
> > > + description: I2C device address
> >
> > Drop this. Nothing specific to this device.
> >
> > > + maxItems: 1
> > > +
> > > + clocks:
> > > + items:
> > > + - description: top mux camtg clock
> > > + - description: devider clock
> >
> > typo
> >
> > > +
> > > + clock-names:
> > > + items:
> > > + - const: eclk
> > > + - const: freq_mux
> > > +
> > > + clock-frequency:
> > > + description:
> > > + Frequency of the eclk clock in Hertz.
> > > +
> > > + dovdd-supply:
> > > + description:
> > > + Definition of the regulator used as interface power supply.
> > > +
> > > + avdd-supply:
> > > + description:
> > > + Definition of the regulator used as analog power supply.
> > > +
> > > + dvdd-supply:
> > > + description:
> > > + Definition of the regulator used as digital power supply.
> > > +
> > > + powerdown-gpios:
> > > + maxItems: 1
> > > +
> > > + reset-gpios:
> > > + maxItems: 1
>
> I asked a question about defining GPIO polarities some time ago, but I
> guess it slipped through.
>
> The chip documentation calls the reset pin as "RST_PAD (low level
> reset)". Where should the inversion be handled, in the driver or here,
> by having the DT include a necessary flag in the specifier?
>
> Best regards,
> Tomasz
For powerdown-gpios and reset-gpios, I actually defined two totally
different GPIO polarities in DT according to OV02A10 chip documentation.
One is GPIO_ACTIVE_LOW, the other is GPIO_ACTIVE_HIGH (see examples
below).
So I'm wondering if we could add such one polarity-flag that Tomasz
suggested.
On Thu, May 21, 2020 at 08:59:56PM +0200, Tomasz Figa wrote:
> Hi Dongchun, Rob,
>
> On Tue, May 12, 2020 at 4:41 AM Dongchun Zhu <dongchun.zhu@mediatek.com> wrote:
> >
> > Hi Rob,
> >
> > Thanks for the review.
> >
> > On Mon, 2020-05-11 at 11:02 -0500, Rob Herring wrote:
> > > On Sat, May 09, 2020 at 04:06:26PM +0800, Dongchun Zhu wrote:
> [snip]
> > > > + port {
> > > > + wcam_out: endpoint {
> > > > + remote-endpoint = <&mipi_in_wcam>;
> > > > + data-lanes = <1>;
> > >
> > > This doesn't match the schema which says this should be 4 entries.
> > >
> >
> > Property "data-lanes" shows the number of lanes that sensor supports.
> > If this property is omitted, four-lane operation is assumed.
> > For OV02A10, it is one-lane operation, so the property is supposed to be
> > set to <1>.
> >
>
> To clarify on this, the ov02a10 sensor supports only 1 lane. It's not
> a driver limitation.
If there's nothing to configure there, then the property should be omitted.
I understood the sensor supported one to four lanes...
new file mode 100644
@@ -0,0 +1,184 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (c) 2020 MediaTek Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
+
+maintainers:
+ - Dongchun Zhu <dongchun.zhu@mediatek.com>
+
+description: |-
+ The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
+ image sensor, which is the latest production derived from Omnivision's CMOS
+ image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
+ @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
+ sensor output is available via CSI-2 serial data output.
+
+properties:
+ compatible:
+ const: ovti,ov02a10
+
+ reg:
+ description: I2C device address
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: top mux camtg clock
+ - description: devider clock
+
+ clock-names:
+ items:
+ - const: eclk
+ - const: freq_mux
+
+ clock-frequency:
+ description:
+ Frequency of the eclk clock in Hertz.
+
+ dovdd-supply:
+ description:
+ Definition of the regulator used as interface power supply.
+
+ avdd-supply:
+ description:
+ Definition of the regulator used as analog power supply.
+
+ dvdd-supply:
+ description:
+ Definition of the regulator used as digital power supply.
+
+ powerdown-gpios:
+ maxItems: 1
+
+ reset-gpios:
+ maxItems: 1
+
+ rotation:
+ description:
+ Definition of the sensor's placement, valid values are 0 and 180.
+ allOf:
+ - $ref: "/schemas/types.yaml#/definitions/uint32"
+ - enum:
+ - 0 # Sensor Mounted Upright (default)
+ - 180 # Sensor Mounted Upside Down
+
+ ovti,mipi-tx-speed:
+ description:
+ Indication of MIPI transmission speed select, which is to control D-PHY
+ timing setting by adjusting MIPI clock voltage to improve the clock
+ driver capability.
+ allOf:
+ - $ref: "/schemas/types.yaml#/definitions/uint32"
+ - enum:
+ - 0 # 20MHz - 30MHz
+ - 1 # 30MHz - 50MHz
+ - 2 # 50MHz - 75MHz
+ - 3 # 75MHz - 100MHz
+ - 4 # 100MHz - 130MHz (suggested)
+ - 5 # Manual
+
+ # See ../video-interfaces.txt for details
+ port:
+ type: object
+ additionalProperties: false
+ description:
+ A node containing an output port node with an endpoint definition
+ as documented in
+ Documentation/devicetree/bindings/media/video-interfaces.txt
+
+ properties:
+ endpoint:
+ type: object
+
+ properties:
+ data-lanes:
+ description: |-
+ The driver only supports 1-lane operation.
+ items:
+ - const: 1
+ - const: 2
+ - const: 3
+ - const: 4
+
+ clock-noncontinuous:
+ type: boolean
+ description: |-
+ MIPI CSI-2 clock is non-continuous if this property is present,
+ otherwise it's continuous.
+
+ link-frequencies:
+ allOf:
+ - $ref: /schemas/types.yaml#/definitions/uint64-array
+ description:
+ Allowed data bus frequencies. 39000000 Hz is supported by
+ the driver.
+
+ required:
+ - link-frequencies
+
+ required:
+ - endpoint
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - clock-frequency
+ - dovdd-supply
+ - avdd-supply
+ - dvdd-supply
+ - powerdown-gpios
+ - reset-gpios
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+
+ #include <dt-bindings/clock/mt8183-clk.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ clock-frequency = <400000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ov02a10: camera-sensor@3d {
+ compatible = "ovti,ov02a10";
+ reg = <0x3d>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&clk_24m_cam>;
+
+ clocks = <&topckgen CLK_TOP_MUX_CAMTG>,
+ <&topckgen CLK_TOP_UNIVP_192M_D8>;
+ clock-names = "eclk", "freq_mux";
+ clock-frequency = <24000000>;
+
+ rotation = <180>;
+ ovti,mipi-tx-speed = <3>;
+
+ dovdd-supply = <&mt6358_vcamio_reg>;
+ avdd-supply = <&mt6358_vcama1_reg>;
+ dvdd-supply = <&mt6358_vcn18_reg>;
+
+ powerdown-gpios = <&pio 107 GPIO_ACTIVE_LOW>;
+ reset-gpios = <&pio 109 GPIO_ACTIVE_HIGH>;
+
+ port {
+ wcam_out: endpoint {
+ remote-endpoint = <&mipi_in_wcam>;
+ data-lanes = <1>;
+ clock-noncontinuous;
+ link-frequencies = /bits/ 64 <390000000>;
+ };
+ };
+ };
+ };
+
+...
@@ -12389,6 +12389,13 @@ M: Harald Welte <laforge@gnumonks.org>
S: Maintained
F: drivers/char/pcmcia/cm4040_cs.*
+OMNIVISION OV02A10 SENSOR DRIVER
+M: Dongchun Zhu <dongchun.zhu@mediatek.com>
+L: linux-media@vger.kernel.org
+S: Maintained
+T: git git://linuxtv.org/media_tree.git
+F: Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
+
OMNIVISION OV13858 SENSOR DRIVER
M: Sakari Ailus <sakari.ailus@linux.intel.com>
L: linux-media@vger.kernel.org