diff mbox series

media: dt-bindings: Merge OV5695 into OV5693 binding

Message ID 20230707210604.868002-1-robh@kernel.org
State Superseded
Headers show
Series media: dt-bindings: Merge OV5695 into OV5693 binding | expand

Commit Message

Rob Herring (Arm) July 7, 2023, 9:06 p.m. UTC
The OV5695 binding is almost the same as the OV5693 binding. The only
difference is 'clock-names' is defined for OV5695. However, the lack of
clock-names is an omission as the Linux OV5693 driver expects the same
'xvclk' clock name.

'link-frequencies' is required by OV5693, but not OV5695. Just drop it
from being required. Expressing it conditionally would be ugly. It
shouldn't really be required either as the driver only supports 1
frequency anyways.

The rockchip-isp1 binding example is missing required properties, so it
has to be updated as well.

Signed-off-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/media/i2c/ov5695.txt  | 41 -------------------
 .../bindings/media/i2c/ovti,ov5693.yaml       | 19 +++++----
 .../bindings/media/rockchip-isp1.yaml         |  1 +
 3 files changed, 13 insertions(+), 48 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5695.txt

Comments

Conor Dooley July 10, 2023, 5:45 p.m. UTC | #1
On Fri, Jul 07, 2023 at 03:06:04PM -0600, Rob Herring wrote:
> The OV5695 binding is almost the same as the OV5693 binding. The only
> difference is 'clock-names' is defined for OV5695. However, the lack of
> clock-names is an omission as the Linux OV5693 driver expects the same
> 'xvclk' clock name.
> 
> 'link-frequencies' is required by OV5693, but not OV5695. Just drop it
> from being required. Expressing it conditionally would be ugly. It
> shouldn't really be required either as the driver only supports 1
> frequency anyways.

I suppose the intent here is something like "the driver only supports 1
frequency and never bothers to read the property"?

Either way,
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>

Cheers,
Conor.

> 
> The rockchip-isp1 binding example is missing required properties, so it
> has to be updated as well.
> 
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
>  .../devicetree/bindings/media/i2c/ov5695.txt  | 41 -------------------
>  .../bindings/media/i2c/ovti,ov5693.yaml       | 19 +++++----
>  .../bindings/media/rockchip-isp1.yaml         |  1 +
>  3 files changed, 13 insertions(+), 48 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5695.txt
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5695.txt b/Documentation/devicetree/bindings/media/i2c/ov5695.txt
> deleted file mode 100644
> index 640a63717d96..000000000000
> --- a/Documentation/devicetree/bindings/media/i2c/ov5695.txt
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -* Omnivision OV5695 MIPI CSI-2 sensor
> -
> -Required Properties:
> -- compatible: shall be "ovti,ov5695"
> -- 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.2 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 2>".
> -
> -Example:
> -&i2c7 {
> -	ov5695: camera-sensor@36 {
> -		compatible = "ovti,ov5695";
> -		reg = <0x36>;
> -		pinctrl-names = "default";
> -		pinctrl-0 = <&clk_24m_cam>;
> -
> -		clocks = <&cru SCLK_TESTCLKOUT1>;
> -		clock-names = "xvclk";
> -
> -		avdd-supply = <&pp2800_cam>;
> -		dovdd-supply = <&pp1800>;
> -		dvdd-supply = <&pp1250_cam>;
> -		reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
> -
> -		port {
> -			wcam_out: endpoint {
> -				remote-endpoint = <&mipi_in_wcam>;
> -				data-lanes = <1 2>;
> -			};
> -		};
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
> index 359dc08440a8..a3d73a87d797 100644
> --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
> @@ -5,26 +5,29 @@
>  $id: http://devicetree.org/schemas/media/i2c/ovti,ov5693.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
> -title: Omnivision OV5693 CMOS Sensor
> +title: Omnivision OV5693/OV5695 CMOS Sensors
>  
>  maintainers:
>    - Tommaso Merciai <tommaso.merciai@amarulasolutions.com>
>  
>  description: |
> -  The Omnivision OV5693 is a high performance, 1/4-inch, 5 megapixel, CMOS
> -  image sensor that delivers 2592x1944 at 30fps. It provides full-frame,
> +  The Omnivision OV5693/OV5695 are high performance, 1/4-inch, 5 megapixel, CMOS
> +  image sensors that deliver 2592x1944 at 30fps. It provides full-frame,
>    sub-sampled, and windowed 10-bit MIPI images in various formats via the
>    Serial Camera Control Bus (SCCB) interface.
>  
> -  OV5693 is controlled via I2C and two-wire Serial Camera Control Bus (SCCB).
> -  The sensor output is available via CSI-2 serial data output (up to 2-lane).
> +  OV5693/OV5695 are controlled via I2C and two-wire Serial Camera Control Bus
> +  (SCCB). The sensor output is available via CSI-2 serial data output (up to
> +  2-lane).
>  
>  allOf:
>    - $ref: /schemas/media/video-interface-devices.yaml#
>  
>  properties:
>    compatible:
> -    const: ovti,ov5693
> +    enum:
> +      - ovti,ov5693
> +      - ovti,ov5695
>  
>    reg:
>      maxItems: 1
> @@ -34,6 +37,9 @@ properties:
>        System input clock (aka XVCLK). From 6 to 27 MHz.
>      maxItems: 1
>  
> +  clock-names:
> +    const: xvclk
> +
>    dovdd-supply:
>      description:
>        Digital I/O voltage supply, 1.8V.
> @@ -72,7 +78,6 @@ properties:
>  
>          required:
>            - data-lanes
> -          - link-frequencies
>  
>  required:
>    - compatible
> diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
> index 0bad7e640148..e466dff8286d 100644
> --- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
> +++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
> @@ -199,6 +199,7 @@ examples:
>              wcam: camera@36 {
>                  compatible = "ovti,ov5695";
>                  reg = <0x36>;
> +                clocks = <&cru SCLK_TESTCLKOUT1>;
>  
>                  port {
>                      wcam_out: endpoint {
> -- 
> 2.40.1
>
Dan Scally July 10, 2023, 8:07 p.m. UTC | #2
Hello both

On 10/07/2023 18:57, Rob Herring wrote:
> On Mon, Jul 10, 2023 at 11:45 AM Conor Dooley <conor@kernel.org> wrote:
>> On Fri, Jul 07, 2023 at 03:06:04PM -0600, Rob Herring wrote:
>>> The OV5695 binding is almost the same as the OV5693 binding. The only
>>> difference is 'clock-names' is defined for OV5695. However, the lack of
>>> clock-names is an omission as the Linux OV5693 driver expects the same
>>> 'xvclk' clock name.
>>>
>>> 'link-frequencies' is required by OV5693, but not OV5695. Just drop it
>>> from being required. Expressing it conditionally would be ugly. It
>>> shouldn't really be required either as the driver only supports 1
>>> frequency anyways.
>> I suppose the intent here is something like "the driver only supports 1
>> frequency and never bothers to read the property"?
> It does read it and fails if it doesn't match. I don't really think
> the driver should if there is only 1 freq. I don't know if it's that
> the hw only supports 1 frequency or a driver limitation. If the h/w,
> then the property is pointless.


It's a driver limitation. If someone needed to run a different link frequency they could add 
settings to the driver to configure the PLLs differently.

>
>
>> Either way,
>> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
>>
>> Cheers,
>> Conor.
>>
>>> The rockchip-isp1 binding example is missing required properties, so it
>>> has to be updated as well.
>>>
>>> Signed-off-by: Rob Herring <robh@kernel.org>
>>> ---
>>>   .../devicetree/bindings/media/i2c/ov5695.txt  | 41 -------------------
>>>   .../bindings/media/i2c/ovti,ov5693.yaml       | 19 +++++----
>>>   .../bindings/media/rockchip-isp1.yaml         |  1 +
>>>   3 files changed, 13 insertions(+), 48 deletions(-)
>>>   delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5695.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5695.txt b/Documentation/devicetree/bindings/media/i2c/ov5695.txt
>>> deleted file mode 100644
>>> index 640a63717d96..000000000000
>>> --- a/Documentation/devicetree/bindings/media/i2c/ov5695.txt
>>> +++ /dev/null
>>> @@ -1,41 +0,0 @@
>>> -* Omnivision OV5695 MIPI CSI-2 sensor
>>> -
>>> -Required Properties:
>>> -- compatible: shall be "ovti,ov5695"
>>> -- 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.2 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 2>".
>>> -
>>> -Example:
>>> -&i2c7 {
>>> -     ov5695: camera-sensor@36 {
>>> -             compatible = "ovti,ov5695";
>>> -             reg = <0x36>;
>>> -             pinctrl-names = "default";
>>> -             pinctrl-0 = <&clk_24m_cam>;
>>> -
>>> -             clocks = <&cru SCLK_TESTCLKOUT1>;
>>> -             clock-names = "xvclk";
>>> -
>>> -             avdd-supply = <&pp2800_cam>;
>>> -             dovdd-supply = <&pp1800>;
>>> -             dvdd-supply = <&pp1250_cam>;
>>> -             reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
>>> -
>>> -             port {
>>> -                     wcam_out: endpoint {
>>> -                             remote-endpoint = <&mipi_in_wcam>;
>>> -                             data-lanes = <1 2>;
>>> -                     };
>>> -             };
>>> -     };
>>> -};
>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
>>> index 359dc08440a8..a3d73a87d797 100644
>>> --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
>>> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
>>> @@ -5,26 +5,29 @@
>>>   $id: http://devicetree.org/schemas/media/i2c/ovti,ov5693.yaml#
>>>   $schema: http://devicetree.org/meta-schemas/core.yaml#
>>>
>>> -title: Omnivision OV5693 CMOS Sensor
>>> +title: Omnivision OV5693/OV5695 CMOS Sensors
>>>
>>>   maintainers:
>>>     - Tommaso Merciai <tommaso.merciai@amarulasolutions.com>
>>>
>>>   description: |
>>> -  The Omnivision OV5693 is a high performance, 1/4-inch, 5 megapixel, CMOS
>>> -  image sensor that delivers 2592x1944 at 30fps. It provides full-frame,
>>> +  The Omnivision OV5693/OV5695 are high performance, 1/4-inch, 5 megapixel, CMOS
>>> +  image sensors that deliver 2592x1944 at 30fps. It provides full-frame,
>>>     sub-sampled, and windowed 10-bit MIPI images in various formats via the
>>>     Serial Camera Control Bus (SCCB) interface.
>>>
>>> -  OV5693 is controlled via I2C and two-wire Serial Camera Control Bus (SCCB).
>>> -  The sensor output is available via CSI-2 serial data output (up to 2-lane).
>>> +  OV5693/OV5695 are controlled via I2C and two-wire Serial Camera Control Bus
>>> +  (SCCB). The sensor output is available via CSI-2 serial data output (up to
>>> +  2-lane).
>>>
>>>   allOf:
>>>     - $ref: /schemas/media/video-interface-devices.yaml#
>>>
>>>   properties:
>>>     compatible:
>>> -    const: ovti,ov5693
>>> +    enum:
>>> +      - ovti,ov5693
>>> +      - ovti,ov5695
>>>
>>>     reg:
>>>       maxItems: 1
>>> @@ -34,6 +37,9 @@ properties:
>>>         System input clock (aka XVCLK). From 6 to 27 MHz.
>>>       maxItems: 1
>>>
>>> +  clock-names:
>>> +    const: xvclk
>>> +
>>>     dovdd-supply:
>>>       description:
>>>         Digital I/O voltage supply, 1.8V.
>>> @@ -72,7 +78,6 @@ properties:
>>>
>>>           required:
>>>             - data-lanes
>>> -          - link-frequencies
>>>
>>>   required:
>>>     - compatible
>>> diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>> index 0bad7e640148..e466dff8286d 100644
>>> --- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>> +++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
>>> @@ -199,6 +199,7 @@ examples:
>>>               wcam: camera@36 {
>>>                   compatible = "ovti,ov5695";
>>>                   reg = <0x36>;
>>> +                clocks = <&cru SCLK_TESTCLKOUT1>;
>>>
>>>                   port {
>>>                       wcam_out: endpoint {
>>> --
>>> 2.40.1
>>>
Rob Herring (Arm) Aug. 1, 2023, 1:45 p.m. UTC | #3
On Mon, Jul 31, 2023 at 5:21 AM Sakari Ailus <sakari.ailus@iki.fi> wrote:
>
> Hi Rob,
>
> On Fri, Jul 07, 2023 at 03:06:04PM -0600, Rob Herring wrote:
> > The OV5695 binding is almost the same as the OV5693 binding. The only
> > difference is 'clock-names' is defined for OV5695. However, the lack of
> > clock-names is an omission as the Linux OV5693 driver expects the same
> > 'xvclk' clock name.
> >
> > 'link-frequencies' is required by OV5693, but not OV5695. Just drop it
> > from being required. Expressing it conditionally would be ugly. It
> > shouldn't really be required either as the driver only supports 1
> > frequency anyways.
>
> The correct way to address this would appear to be to add link-frequencies
> for both of these devices. I think I've seen one or two sensors of this
> class (raw, CSI-2/parallel, external clock etc.) with link frequencies
> documented as "fixed" --- which is probably a documentation issue more than
> anything else.

link-frequencies is already supported. It's just a question of being
required or not. Adding a property as required is an ABI break (if the
OS starts requiring the property).

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/ov5695.txt b/Documentation/devicetree/bindings/media/i2c/ov5695.txt
deleted file mode 100644
index 640a63717d96..000000000000
--- a/Documentation/devicetree/bindings/media/i2c/ov5695.txt
+++ /dev/null
@@ -1,41 +0,0 @@ 
-* Omnivision OV5695 MIPI CSI-2 sensor
-
-Required Properties:
-- compatible: shall be "ovti,ov5695"
-- 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.2 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 2>".
-
-Example:
-&i2c7 {
-	ov5695: camera-sensor@36 {
-		compatible = "ovti,ov5695";
-		reg = <0x36>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&clk_24m_cam>;
-
-		clocks = <&cru SCLK_TESTCLKOUT1>;
-		clock-names = "xvclk";
-
-		avdd-supply = <&pp2800_cam>;
-		dovdd-supply = <&pp1800>;
-		dvdd-supply = <&pp1250_cam>;
-		reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
-
-		port {
-			wcam_out: endpoint {
-				remote-endpoint = <&mipi_in_wcam>;
-				data-lanes = <1 2>;
-			};
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
index 359dc08440a8..a3d73a87d797 100644
--- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
@@ -5,26 +5,29 @@ 
 $id: http://devicetree.org/schemas/media/i2c/ovti,ov5693.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Omnivision OV5693 CMOS Sensor
+title: Omnivision OV5693/OV5695 CMOS Sensors
 
 maintainers:
   - Tommaso Merciai <tommaso.merciai@amarulasolutions.com>
 
 description: |
-  The Omnivision OV5693 is a high performance, 1/4-inch, 5 megapixel, CMOS
-  image sensor that delivers 2592x1944 at 30fps. It provides full-frame,
+  The Omnivision OV5693/OV5695 are high performance, 1/4-inch, 5 megapixel, CMOS
+  image sensors that deliver 2592x1944 at 30fps. It provides full-frame,
   sub-sampled, and windowed 10-bit MIPI images in various formats via the
   Serial Camera Control Bus (SCCB) interface.
 
-  OV5693 is controlled via I2C and two-wire Serial Camera Control Bus (SCCB).
-  The sensor output is available via CSI-2 serial data output (up to 2-lane).
+  OV5693/OV5695 are controlled via I2C and two-wire Serial Camera Control Bus
+  (SCCB). The sensor output is available via CSI-2 serial data output (up to
+  2-lane).
 
 allOf:
   - $ref: /schemas/media/video-interface-devices.yaml#
 
 properties:
   compatible:
-    const: ovti,ov5693
+    enum:
+      - ovti,ov5693
+      - ovti,ov5695
 
   reg:
     maxItems: 1
@@ -34,6 +37,9 @@  properties:
       System input clock (aka XVCLK). From 6 to 27 MHz.
     maxItems: 1
 
+  clock-names:
+    const: xvclk
+
   dovdd-supply:
     description:
       Digital I/O voltage supply, 1.8V.
@@ -72,7 +78,6 @@  properties:
 
         required:
           - data-lanes
-          - link-frequencies
 
 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
index 0bad7e640148..e466dff8286d 100644
--- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
+++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
@@ -199,6 +199,7 @@  examples:
             wcam: camera@36 {
                 compatible = "ovti,ov5695";
                 reg = <0x36>;
+                clocks = <&cru SCLK_TESTCLKOUT1>;
 
                 port {
                     wcam_out: endpoint {