2022-09-27 23:11:48

by Mikhail Rudenko

[permalink] [raw]
Subject: [PATCH v3 0/2] Add Omnivision OV4689 image sensor driver

Hi,

this is the third revision of the Omnivision OV4689 driver. Main
changes in this version are (1) mapping physical camera gain to
monotonous and mostly linear logical gain exposed via corresponding
control and (2) reporting consistent pixel rate and hblank. These and
other minor changes are listed below:

changes in v3:
- set 1st patch title to: "media: dt-bindings: i2c: document OV4689"
- schema: drop clock-names
- driver: use dem_clk_get(NULL)
- schema: remove maxItems from powerdown-gpios
- schema: make gpios optional
- driver: use devm_gpiod_get_optional()
- driver: remove __ prefixes from function names
- driver: switch to .probe_new
- driver: remove of_match_ptr
- driver: add and use enum ov4689_mode_id
- driver: make xvclk optional & try to get frequency from ACPI
- driver: drop #if defined(CONFIG_MEDIA_CONTROLLER) in remove
- driver: use ARRAY_SIZE(ov4689_supply_names) instead of define
- driver: remove unused controls from struct ov4689
- driver: use 504000000 instead of OV4689_LINK_FREQ_500MHZ
- driver: compare link frequencies with menu array clock-frequency
- driver: replace |= with ret = ret ?:
- driver: merge power on/off into pm callbacks
- driver: use actual clock rate in ov4689_cal_delay
- driver: set up controls after writing register table in s_stream()
- driver: remap sensor gain to linear and monotonous logical gain
- driver: set pixel_rate to 480000000
- driver: set HTS so that we have 30.00 fps and fix HBLANK reporting

changes in v2:
- bindings: reword descriptions
- bindings: move clock description to clocks property
- bindings: add data-lanes and link-frequencies properties to port
- driver: validate media bus configuration when probing

Mikhail Rudenko (2):
media: dt-bindings: i2c: document OV4689
media: i2c: add support for OV4689

.../bindings/media/i2c/ovti,ov4689.yaml | 134 +++
MAINTAINERS | 8 +
drivers/media/i2c/Kconfig | 14 +
drivers/media/i2c/Makefile | 1 +
drivers/media/i2c/ov4689.c | 1027 +++++++++++++++++
5 files changed, 1184 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
create mode 100644 drivers/media/i2c/ov4689.c

--
2.37.3


2022-09-27 23:13:57

by Mikhail Rudenko

[permalink] [raw]
Subject: [PATCH v3 1/2] media: dt-bindings: i2c: document OV4689

Add device-tree binding documentation for OV4689 image sensor driver,
and the relevant MAINTAINERS entries.

Signed-off-by: Mikhail Rudenko <[email protected]>
---
.../bindings/media/i2c/ovti,ov4689.yaml | 134 ++++++++++++++++++
MAINTAINERS | 7 +
2 files changed, 141 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml

diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
new file mode 100644
index 000000000000..50579c947f3c
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
@@ -0,0 +1,134 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ovti,ov4689.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Omnivision OV4689 CMOS
+
+maintainers:
+ - Mikhail Rudenko <[email protected]>
+
+description: |
+ The Omnivision OV4689 is a high performance, 1/3-inch, 4 megapixel
+ image sensor. Ihis chip supports high frame rate speeds up to 90 fps
+ at 2688x1520 resolution. It is programmable through an I2C
+ interface, and sensor output is sent via 1/2/4 lane MIPI CSI-2
+ connection.
+
+allOf:
+ - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+ compatible:
+ const: ovti,ov4689
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ description:
+ External clock (XVCLK) for the sensor, 6-64 MHz
+ maxItems: 1
+
+ dovdd-supply:
+ description:
+ Digital I/O voltage supply, 1.7-3.0 V
+
+ avdd-supply:
+ description:
+ Analog voltage supply, 2.6-3.0 V
+
+ dvdd-supply:
+ description:
+ Digital core voltage supply, 1.1-1.3 V
+
+ powerdown-gpios:
+ description:
+ GPIO connected to the powerdown pin (active low)
+
+ reset-gpios:
+ maxItems: 1
+ description:
+ GPIO connected to the reset pin (active low)
+
+ orientation: true
+
+ rotation: true
+
+ port:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ additionalProperties: false
+ description:
+ Output port node, single endpoint describing the CSI-2 transmitter
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ oneOf:
+ - items:
+ - const: 1
+ - const: 2
+ - const: 3
+ - const: 4
+ - items:
+ - const: 1
+ - const: 2
+ - items:
+ - const: 1
+ link-frequencies: true
+
+ required:
+ - data-lanes
+ - link-frequencies
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - dovdd-supply
+ - avdd-supply
+ - dvdd-supply
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ov4689: camera@36 {
+ compatible = "ovti,ov4689";
+ reg = <0x36>;
+
+ clocks = <&ov4689_clk>;
+
+ avdd-supply = <&ov4689_avdd>;
+ dovdd-supply = <&ov4689_dovdd>;
+ dvdd-supply = <&ov4689_dvdd>;
+
+ powerdown-gpios = <&pio 107 GPIO_ACTIVE_LOW>;
+ reset-gpios = <&pio 109 GPIO_ACTIVE_LOW>;
+
+ orientation = <2>;
+ rotation = <0>;
+
+ port {
+ wcam_out: endpoint {
+ remote-endpoint = <&mipi_in_wcam>;
+ data-lanes = <1 2 3 4>;
+ link-frequencies = /bits/ 64 <504000000>;
+ };
+ };
+ };
+ };
+
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index a58f1fc6dd47..aed316c5c1ef 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15028,6 +15028,13 @@ S: Maintained
T: git git://linuxtv.org/media_tree.git
F: drivers/media/i2c/ov2740.c

+OMNIVISION OV4689 SENSOR DRIVER
+M: Mikhail Rudenko <[email protected]>
+L: [email protected]
+S: Maintained
+T: git git://linuxtv.org/media_tree.git
+F: Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
+
OMNIVISION OV5640 SENSOR DRIVER
M: Steve Longerbeam <[email protected]>
L: [email protected]
--
2.37.3

2022-09-28 08:16:26

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] media: dt-bindings: i2c: document OV4689

On 28/09/2022 00:21, Mikhail Rudenko wrote:
> Add device-tree binding documentation for OV4689 image sensor driver,
> and the relevant MAINTAINERS entries.
>
> Signed-off-by: Mikhail Rudenko <[email protected]>


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

Best regards,
Krzysztof

2022-10-17 13:30:22

by Mikhail Rudenko

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] Add Omnivision OV4689 image sensor driver


On 2022-09-28 at 01:21 +03, Mikhail Rudenko <[email protected]> wrote:

> Hi,
>
> this is the third revision of the Omnivision OV4689 driver. Main
> changes in this version are (1) mapping physical camera gain to
> monotonous and mostly linear logical gain exposed via corresponding
> control and (2) reporting consistent pixel rate and hblank. These and
> other minor changes are listed below:
>
> changes in v3:
> - set 1st patch title to: "media: dt-bindings: i2c: document OV4689"
> - schema: drop clock-names
> - driver: use dem_clk_get(NULL)
> - schema: remove maxItems from powerdown-gpios
> - schema: make gpios optional
> - driver: use devm_gpiod_get_optional()
> - driver: remove __ prefixes from function names
> - driver: switch to .probe_new
> - driver: remove of_match_ptr
> - driver: add and use enum ov4689_mode_id
> - driver: make xvclk optional & try to get frequency from ACPI
> - driver: drop #if defined(CONFIG_MEDIA_CONTROLLER) in remove
> - driver: use ARRAY_SIZE(ov4689_supply_names) instead of define
> - driver: remove unused controls from struct ov4689
> - driver: use 504000000 instead of OV4689_LINK_FREQ_500MHZ
> - driver: compare link frequencies with menu array clock-frequency
> - driver: replace |= with ret = ret ?:
> - driver: merge power on/off into pm callbacks
> - driver: use actual clock rate in ov4689_cal_delay
> - driver: set up controls after writing register table in s_stream()
> - driver: remap sensor gain to linear and monotonous logical gain
> - driver: set pixel_rate to 480000000
> - driver: set HTS so that we have 30.00 fps and fix HBLANK reporting
>
> changes in v2:
> - bindings: reword descriptions
> - bindings: move clock description to clocks property
> - bindings: add data-lanes and link-frequencies properties to port
> - driver: validate media bus configuration when probing
>
> Mikhail Rudenko (2):
> media: dt-bindings: i2c: document OV4689
> media: i2c: add support for OV4689
>
> .../bindings/media/i2c/ovti,ov4689.yaml | 134 +++
> MAINTAINERS | 8 +
> drivers/media/i2c/Kconfig | 14 +
> drivers/media/i2c/Makefile | 1 +
> drivers/media/i2c/ov4689.c | 1027 +++++++++++++++++
> 5 files changed, 1184 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
> create mode 100644 drivers/media/i2c/ov4689.c

Gentle ping. Anything to do on my side to get [2/2] reviewed?

--
Best regards,
Mikhail Rudenko