2023-03-21 18:04:11

by Luca Weiss

[permalink] [raw]
Subject: [PATCH v3 0/3] Improvements for OmniVision OV2685

Convert the bindings to dt-schema. Then make the reset gpio optional in
the driver.

Signed-off-by: Luca Weiss <[email protected]>
---
Changes in v3:
- Drop applied patches
- Fix rockchip bindings example
- Add dt-bindings patch from separate series
- Link to v2: https://lore.kernel.org/r/[email protected]

Changes in v2:
- 3/4: Reserve more space for v4l2 handler for the new controls (Jacopo)
- Pick up tags
- Link to v1: https://lore.kernel.org/r/[email protected]

---
Luca Weiss (3):
media: dt-bindings: media: rkisp1: complete ov2685 example
media: dt-bindings: ov2685: convert to dtschema
media: i2c: ov2685: Make reset gpio optional

.../devicetree/bindings/media/i2c/ov2685.txt | 41 ---------
.../devicetree/bindings/media/i2c/ovti,ov2685.yaml | 101 +++++++++++++++++++++
.../devicetree/bindings/media/rockchip-isp1.yaml | 19 ++--
MAINTAINERS | 1 +
drivers/media/i2c/ov2685.c | 2 +-
5 files changed, 116 insertions(+), 48 deletions(-)
---
base-commit: f3594f0204b756638267242e26d9de611435c3ba
change-id: 20230129-ov2685-improvements-b03bdcf1c290

Best regards,
--
Luca Weiss <[email protected]>



2023-03-21 18:04:14

by Luca Weiss

[permalink] [raw]
Subject: [PATCH v3 3/3] media: i2c: ov2685: Make reset gpio optional

In some setups XSHUTDOWN is connected to DOVDD when it's unused,
therefore treat the reset gpio as optional.

Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Luca Weiss <[email protected]>
---
drivers/media/i2c/ov2685.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c
index fdf3e06133302..f119a93e7c647 100644
--- a/drivers/media/i2c/ov2685.c
+++ b/drivers/media/i2c/ov2685.c
@@ -807,7 +807,7 @@ static int ov2685_probe(struct i2c_client *client)
if (clk_get_rate(ov2685->xvclk) != OV2685_XVCLK_FREQ)
dev_warn(dev, "xvclk mismatched, modes are based on 24MHz\n");

- ov2685->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
+ ov2685->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(ov2685->reset_gpio)) {
dev_err(dev, "Failed to get reset-gpios\n");
return -EINVAL;

--
2.40.0


2023-03-21 18:04:19

by Luca Weiss

[permalink] [raw]
Subject: [PATCH v3 1/3] media: dt-bindings: media: rkisp1: complete ov2685 example

With the upcoming conversion of ov2685 to dt-schema let's complete the
example so validation succeeds. At the same time fix the indentation of
the port node in this example.

Signed-off-by: Luca Weiss <[email protected]>
---
.../devicetree/bindings/media/rockchip-isp1.yaml | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
index b3661d7d43572..0bad7e6401486 100644
--- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
+++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
@@ -212,12 +212,19 @@ examples:
compatible = "ovti,ov2685";
reg = <0x3c>;

- port {
- ucam_out: endpoint {
- remote-endpoint = <&mipi_in_ucam>;
- data-lanes = <1>;
- };
- };
+ clocks = <&cru SCLK_TESTCLKOUT1>;
+ clock-names = "xvclk";
+
+ avdd-supply = <&pp2800_cam>;
+ dovdd-supply = <&pp1800>;
+ dvdd-supply = <&pp1800>;
+
+ port {
+ ucam_out: endpoint {
+ remote-endpoint = <&mipi_in_ucam>;
+ data-lanes = <1>;
+ };
+ };
};
};
};

--
2.40.0


2023-03-21 18:05:06

by Luca Weiss

[permalink] [raw]
Subject: [PATCH v3 2/3] media: dt-bindings: ov2685: convert to dtschema

Convert the text-based dt-bindings to yaml.

Changes from original txt:
* Take wording for various properties from other yaml bindings, this
removes e.g. volt amount from schema since it isn't really relevant
and the datasheet is a better source.
* Don't make reset-gpios a required property since it can be tied to
DOVDD instead.

Signed-off-by: Luca Weiss <[email protected]>
---
.../devicetree/bindings/media/i2c/ov2685.txt | 41 ---------
.../devicetree/bindings/media/i2c/ovti,ov2685.yaml | 101 +++++++++++++++++++++
MAINTAINERS | 1 +
3 files changed, 102 insertions(+), 41 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/i2c/ov2685.txt b/Documentation/devicetree/bindings/media/i2c/ov2685.txt
deleted file mode 100644
index 625c4a8c0d53d..0000000000000
--- a/Documentation/devicetree/bindings/media/i2c/ov2685.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-* Omnivision OV2685 MIPI CSI-2 sensor
-
-Required Properties:
-- compatible: shall be "ovti,ov2685"
-- clocks: reference to the xvclk input clock
-- clock-names: shall be "xvclk"
-- avdd-supply: Analog voltage supply, 2.8 volts
-- dovdd-supply: Digital I/O voltage supply, 1.8 volts
-- dvdd-supply: Digital core voltage supply, 1.8 volts
-- reset-gpios: Low active reset gpio
-
-The device node shall contain one 'port' child node with an
-'endpoint' subnode for its digital output video port,
-in accordance with the video interface bindings defined in
-Documentation/devicetree/bindings/media/video-interfaces.txt.
-The endpoint optional property 'data-lanes' shall be "<1>".
-
-Example:
-&i2c7 {
- ov2685: camera-sensor@3c {
- compatible = "ovti,ov2685";
- reg = <0x3c>;
- pinctrl-names = "default";
- pinctrl-0 = <&clk_24m_cam>;
-
- clocks = <&cru SCLK_TESTCLKOUT1>;
- clock-names = "xvclk";
-
- avdd-supply = <&pp2800_cam>;
- dovdd-supply = <&pp1800>;
- dvdd-supply = <&pp1800>;
- reset-gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
-
- port {
- ucam_out: endpoint {
- remote-endpoint = <&mipi_in_ucam>;
- data-lanes = <1>;
- };
- };
- };
-};
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov2685.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov2685.yaml
new file mode 100644
index 0000000000000..c53bee4a1025e
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov2685.yaml
@@ -0,0 +1,101 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ovti,ov2685.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OmniVision OV2685 Image Sensor
+
+maintainers:
+ - Shunqian Zheng <[email protected]>
+
+properties:
+ compatible:
+ const: ovti,ov2685
+
+ 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
+
+ dovdd-supply:
+ description: I/O Domain Power Supply
+
+ reset-gpios:
+ maxItems: 1
+ description: Reset Pin GPIO Control (active low)
+
+ port:
+ description: MIPI CSI-2 transmitter port
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ additionalProperties: false
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ maxItems: 1
+
+ required:
+ - data-lanes
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - dvdd-supply
+ - avdd-supply
+ - dovdd-supply
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/rk3399-cru.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c7 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ov2685: camera-sensor@3c {
+ compatible = "ovti,ov2685";
+ reg = <0x3c>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&clk_24m_cam>;
+
+ clocks = <&cru SCLK_TESTCLKOUT1>;
+ clock-names = "xvclk";
+
+ avdd-supply = <&pp2800_cam>;
+ dovdd-supply = <&pp1800>;
+ dvdd-supply = <&pp1800>;
+ reset-gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+
+ port {
+ ucam_out: endpoint {
+ remote-endpoint = <&mipi_in_ucam>;
+ data-lanes = <1>;
+ };
+ };
+ };
+ };
+
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 8ea325040f355..5904f47756fe1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15410,6 +15410,7 @@ M: Shunqian Zheng <[email protected]>
L: [email protected]
S: Maintained
T: git git://linuxtv.org/media_tree.git
+F: Documentation/devicetree/bindings/media/i2c/ovti,ov2685.yaml
F: drivers/media/i2c/ov2685.c

OMNIVISION OV2740 SENSOR DRIVER

--
2.40.0


2023-03-22 07:37:20

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 1/3] media: dt-bindings: media: rkisp1: complete ov2685 example

On 21/03/2023 19:03, Luca Weiss wrote:
> With the upcoming conversion of ov2685 to dt-schema let's complete the
> example so validation succeeds. At the same time fix the indentation of
> the port node in this example.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> .../devicetree/bindings/media/rockchip-isp1.yaml | 19 +++++++++++++------


Acked-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

2023-03-22 07:42:32

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 2/3] media: dt-bindings: ov2685: convert to dtschema

On 21/03/2023 19:03, Luca Weiss wrote:
> Convert the text-based dt-bindings to yaml.
>

Thank you for your patch. There is something to discuss/improve.

> + - Shunqian Zheng <[email protected]>
> +
> +properties:
> + compatible:
> + const: ovti,ov2685
> +
> + 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
> +
> + dovdd-supply:
> + description: I/O Domain Power Supply
> +
> + reset-gpios:
> + maxItems: 1
> + description: Reset Pin GPIO Control (active low)
> +
> + port:
> + description: MIPI CSI-2 transmitter port
> + $ref: /schemas/graph.yaml#/$defs/port-base
> + additionalProperties: false
> +
> + properties:
> + endpoint:
> + $ref: /schemas/media/video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + data-lanes:
> + maxItems: 1
> +
> + required:
> + - data-lanes
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - dvdd-supply
> + - avdd-supply
> + - dovdd-supply
> + - port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/rk3399-cru.h>
> + #include <dt-bindings/gpio/gpio.h>
> +
> + i2c7 {

i2c

With above:

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof