Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1583395 > unrolled thread

[PATCH v9 1/2] Add OV5647 device tree documentation

Started byRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
First post2017-02-17 14:20 +0100
Last post2017-02-25 16:40 +0100
Articles 14 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v9 1/2] Add OV5647 device tree documentation Ramiro Oliveira <Ramiro.Oliveira@synopsys.com> - 2017-02-17 14:20 +0100
    Re: [PATCH v9 1/2] Add OV5647 device tree documentation Sakari Ailus <sakari.ailus@iki.fi> - 2017-02-21 13:00 +0100
      Re: [PATCH v9 1/2] Add OV5647 device tree documentation Ramiro Oliveira <Ramiro.Oliveira@synopsys.com> - 2017-02-21 15:40 +0100
        Re: [PATCH v9 1/2] Add OV5647 device tree documentation Sakari Ailus <sakari.ailus@iki.fi> - 2017-02-21 15:50 +0100
    Re: [PATCH v9 1/2] Add OV5647 device tree documentation Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> - 2017-02-21 17:00 +0100
      Re: [PATCH v9 1/2] Add OV5647 device tree documentation Ramiro Oliveira <Ramiro.Oliveira@synopsys.com> - 2017-02-21 21:20 +0100
        Re: [PATCH v9 1/2] Add OV5647 device tree documentation Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> - 2017-02-21 21:50 +0100
          Re: [PATCH v9 1/2] Add OV5647 device tree documentation Sakari Ailus <sakari.ailus@iki.fi> - 2017-02-21 22:50 +0100
            Re: [PATCH v9 1/2] Add OV5647 device tree documentation Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> - 2017-02-21 23:40 +0100
              Re: [PATCH v9 1/2] Add OV5647 device tree documentation Ramiro Oliveira <Ramiro.Oliveira@synopsys.com> - 2017-02-22 12:00 +0100
                Re: [PATCH v9 1/2] Add OV5647 device tree documentation Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> - 2017-02-22 12:50 +0100
                  Re: [PATCH v9 1/2] Add OV5647 device tree documentation Ramiro Oliveira <Ramiro.Oliveira@synopsys.com> - 2017-02-22 15:50 +0100
              Re: [PATCH v9 1/2] Add OV5647 device tree documentation Sakari Ailus <sakari.ailus@iki.fi> - 2017-02-25 16:20 +0100
                Re: [PATCH v9 1/2] Add OV5647 device tree documentation Sakari Ailus <sakari.ailus@iki.fi> - 2017-02-25 16:40 +0100

#1583395 — [PATCH v9 1/2] Add OV5647 device tree documentation

FromRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
Date2017-02-17 14:20 +0100
Subject[PATCH v9 1/2] Add OV5647 device tree documentation
Message-ID<tbQC5-4KS-1@gated-at.bofh.it>
Create device tree bindings documentation.

Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt

diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
new file mode 100644
index 000000000000..31956426d3b9
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
@@ -0,0 +1,35 @@
+Omnivision OV5647 raw image sensor
+---------------------------------
+
+OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
+and CCI (I2C compatible) control bus.
+
+Required properties:
+
+- compatible		: "ovti,ov5647".
+- reg			: I2C slave address of the sensor.
+- clocks		: Reference to the xclk clock.
+- clock-names		: Should be "xclk".
+- clock-frequency	: Frequency of the xclk clock.
+
+The common video interfaces bindings (see video-interfaces.txt) should be
+used to specify link to the image data receiver. The OV5647 device
+node should contain one 'port' child node with an 'endpoint' subnode.
+
+Example:
+
+	i2c@2000 {
+		...
+		ov: camera@36 {
+			compatible = "ovti,ov5647";
+			reg = <0x36>;
+			clocks = <&camera_clk>;
+			clock-names = "xclk";
+			clock-frequency = <25000000>;
+			port {
+				camera_1: endpoint {
+					remote-endpoint = <&csi1_ep1>;
+				};
+			};
+		};
+	};
-- 
2.11.0

[toc] | [next] | [standalone]


#1585253

FromSakari Ailus <sakari.ailus@iki.fi>
Date2017-02-21 13:00 +0100
Message-ID<tdhgS-252-13@gated-at.bofh.it>
In reply to#1583395
Hi Ramiro,

On Fri, Feb 17, 2017 at 01:14:15PM +0000, Ramiro Oliveira wrote:
> Create device tree bindings documentation.
> 
> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> new file mode 100644
> index 000000000000..31956426d3b9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> @@ -0,0 +1,35 @@
> +Omnivision OV5647 raw image sensor
> +---------------------------------
> +
> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
> +and CCI (I2C compatible) control bus.
> +
> +Required properties:
> +
> +- compatible		: "ovti,ov5647".
> +- reg			: I2C slave address of the sensor.
> +- clocks		: Reference to the xclk clock.
> +- clock-names		: Should be "xclk".
> +- clock-frequency	: Frequency of the xclk clock.
> +
> +The common video interfaces bindings (see video-interfaces.txt) should be
> +used to specify link to the image data receiver. The OV5647 device
> +node should contain one 'port' child node with an 'endpoint' subnode.

The remote-endpoint property in endpoint nodes should be mandatory,
shouldn't it? Otherwise the sensor isn't connected to anything and hardly
useful as such. The list of optional endpoint properties is a long one and
it should be documented here which ones are recognised, either as optional
or mandatory.

> +
> +Example:
> +
> +	i2c@2000 {
> +		...
> +		ov: camera@36 {
> +			compatible = "ovti,ov5647";
> +			reg = <0x36>;
> +			clocks = <&camera_clk>;
> +			clock-names = "xclk";
> +			clock-frequency = <25000000>;
> +			port {
> +				camera_1: endpoint {
> +					remote-endpoint = <&csi1_ep1>;
> +				};
> +			};
> +		};
> +	};

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

[toc] | [prev] | [next] | [standalone]


#1585386

FromRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
Date2017-02-21 15:40 +0100
Message-ID<tdjLI-3P2-11@gated-at.bofh.it>
In reply to#1585253
Hi Sakari,

Thank you for your feedback.

On 2/21/2017 11:57 AM, Sakari Ailus wrote:
> Hi Ramiro,
> 
> On Fri, Feb 17, 2017 at 01:14:15PM +0000, Ramiro Oliveira wrote:
>> Create device tree bindings documentation.
>>
>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>> Acked-by: Rob Herring <robh@kernel.org>
>> ---
>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>  1 file changed, 35 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>
>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>> new file mode 100644
>> index 000000000000..31956426d3b9
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>> @@ -0,0 +1,35 @@
>> +Omnivision OV5647 raw image sensor
>> +---------------------------------
>> +
>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>> +and CCI (I2C compatible) control bus.
>> +
>> +Required properties:
>> +
>> +- compatible		: "ovti,ov5647".
>> +- reg			: I2C slave address of the sensor.
>> +- clocks		: Reference to the xclk clock.
>> +- clock-names		: Should be "xclk".
>> +- clock-frequency	: Frequency of the xclk clock.
>> +
>> +The common video interfaces bindings (see video-interfaces.txt) should be
>> +used to specify link to the image data receiver. The OV5647 device
>> +node should contain one 'port' child node with an 'endpoint' subnode.
> 
> The remote-endpoint property in endpoint nodes should be mandatory,
> shouldn't it? Otherwise the sensor isn't connected to anything and hardly
> useful as such. The list of optional endpoint properties is a long one and
> it should be documented here which ones are recognised, either as optional
> or mandatory.
> 

I guess you're right, it should be mandatory, although at the moment I'm not
checking for it's presence in the driver so I'll add it to the driver.

At the moment that's the only property I think it should be mandatory, and I
don't believe I need any optional one.

Do you have a suggestion for any new property I should use?

>> +
>> +Example:
>> +
>> +	i2c@2000 {
>> +		...
>> +		ov: camera@36 {
>> +			compatible = "ovti,ov5647";
>> +			reg = <0x36>;
>> +			clocks = <&camera_clk>;
>> +			clock-names = "xclk";
>> +			clock-frequency = <25000000>;
>> +			port {
>> +				camera_1: endpoint {
>> +					remote-endpoint = <&csi1_ep1>;
>> +				};
>> +			};
>> +		};
>> +	};
> 

-- 
Best Regards

Ramiro Oliveira
Ramiro.Oliveira@synopsys.com

[toc] | [prev] | [next] | [standalone]


#1585391

FromSakari Ailus <sakari.ailus@iki.fi>
Date2017-02-21 15:50 +0100
Message-ID<tdjVn-3Sp-15@gated-at.bofh.it>
In reply to#1585386
Hi Ramiro,

On Tue, Feb 21, 2017 at 02:30:16PM +0000, Ramiro Oliveira wrote:
> Hi Sakari,
> 
> Thank you for your feedback.
> 
> On 2/21/2017 11:57 AM, Sakari Ailus wrote:
> > Hi Ramiro,
> > 
> > On Fri, Feb 17, 2017 at 01:14:15PM +0000, Ramiro Oliveira wrote:
> >> Create device tree bindings documentation.
> >>
> >> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
> >> Acked-by: Rob Herring <robh@kernel.org>
> >> ---
> >>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
> >>  1 file changed, 35 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>
> >> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >> new file mode 100644
> >> index 000000000000..31956426d3b9
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >> @@ -0,0 +1,35 @@
> >> +Omnivision OV5647 raw image sensor
> >> +---------------------------------
> >> +
> >> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
> >> +and CCI (I2C compatible) control bus.
> >> +
> >> +Required properties:
> >> +
> >> +- compatible		: "ovti,ov5647".
> >> +- reg			: I2C slave address of the sensor.
> >> +- clocks		: Reference to the xclk clock.
> >> +- clock-names		: Should be "xclk".
> >> +- clock-frequency	: Frequency of the xclk clock.
> >> +
> >> +The common video interfaces bindings (see video-interfaces.txt) should be
> >> +used to specify link to the image data receiver. The OV5647 device
> >> +node should contain one 'port' child node with an 'endpoint' subnode.
> > 
> > The remote-endpoint property in endpoint nodes should be mandatory,
> > shouldn't it? Otherwise the sensor isn't connected to anything and hardly
> > useful as such. The list of optional endpoint properties is a long one and
> > it should be documented here which ones are recognised, either as optional
> > or mandatory.
> > 
> 
> I guess you're right, it should be mandatory, although at the moment I'm not
> checking for it's presence in the driver so I'll add it to the driver.
> 
> At the moment that's the only property I think it should be mandatory, and I
> don't believe I need any optional one.
> 
> Do you have a suggestion for any new property I should use?

As you don't need any in the driver for the driver to work, you can omit
them.

-- 
Regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

[toc] | [prev] | [next] | [standalone]


#1585460

FromVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Date2017-02-21 17:00 +0100
Message-ID<tdl19-4zS-23@gated-at.bofh.it>
In reply to#1583395
Hi Ramiro,

On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
> Create device tree bindings documentation.
> 
> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> new file mode 100644
> index 000000000000..31956426d3b9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> @@ -0,0 +1,35 @@
> +Omnivision OV5647 raw image sensor
> +---------------------------------
> +
> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
> +and CCI (I2C compatible) control bus.
> +
> +Required properties:
> +
> +- compatible		: "ovti,ov5647".
> +- reg			: I2C slave address of the sensor.
> +- clocks		: Reference to the xclk clock.

Is "xclk" clock a pixel clock or something else?

> +- clock-names		: Should be "xclk".

You can remove this property, because there is only one source clock.

> +- clock-frequency	: Frequency of the xclk clock.

And after the last updates in the driver this property can be removed as well.

> +
> +The common video interfaces bindings (see video-interfaces.txt) should be
> +used to specify link to the image data receiver. The OV5647 device
> +node should contain one 'port' child node with an 'endpoint' subnode.
> +
> +Example:
> +
> +	i2c@2000 {
> +		...
> +		ov: camera@36 {
> +			compatible = "ovti,ov5647";
> +			reg = <0x36>;
> +			clocks = <&camera_clk>;
> +			clock-names = "xclk";
> +			clock-frequency = <25000000>;

When you remove two unused properties, please don't forget to update the
example.

> +			port {
> +				camera_1: endpoint {
> +					remote-endpoint = <&csi1_ep1>;
> +				};
> +			};
> +		};
> +	};
> 

--
With best wishes,
Vladimir

[toc] | [prev] | [next] | [standalone]


#1585711

FromRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
Date2017-02-21 21:20 +0100
Message-ID<tdp4K-7un-15@gated-at.bofh.it>
In reply to#1585460
Hi Vladimir,

Thank you for your feedback

On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
> Hi Ramiro,
> 
> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>> Create device tree bindings documentation.
>>
>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>> Acked-by: Rob Herring <robh@kernel.org>
>> ---
>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>  1 file changed, 35 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>
>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>> new file mode 100644
>> index 000000000000..31956426d3b9
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>> @@ -0,0 +1,35 @@
>> +Omnivision OV5647 raw image sensor
>> +---------------------------------
>> +
>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>> +and CCI (I2C compatible) control bus.
>> +
>> +Required properties:
>> +
>> +- compatible		: "ovti,ov5647".
>> +- reg			: I2C slave address of the sensor.
>> +- clocks		: Reference to the xclk clock.
> 
> Is "xclk" clock a pixel clock or something else?
> 

It's an external oscillator.

>> +- clock-names		: Should be "xclk".
> 
> You can remove this property, because there is only one source clock.
> 

Ok.

>> +- clock-frequency	: Frequency of the xclk clock.
> 
> And after the last updates in the driver this property can be removed as well.
> 

But I'm still using clk_get_rate in the driver, if I remove the frequency here
the probing will fail.

>> +
>> +The common video interfaces bindings (see video-interfaces.txt) should be
>> +used to specify link to the image data receiver. The OV5647 device
>> +node should contain one 'port' child node with an 'endpoint' subnode.
>> +
>> +Example:
>> +
>> +	i2c@2000 {
>> +		...
>> +		ov: camera@36 {
>> +			compatible = "ovti,ov5647";
>> +			reg = <0x36>;
>> +			clocks = <&camera_clk>;
>> +			clock-names = "xclk";
>> +			clock-frequency = <25000000>;
> 
> When you remove two unused properties, please don't forget to update the
> example.
> 

Ok.

>> +			port {
>> +				camera_1: endpoint {
>> +					remote-endpoint = <&csi1_ep1>;
>> +				};
>> +			};
>> +		};
>> +	};
>>
> 
> --
> With best wishes,
> Vladimir
> 

-- 
Best Regards

Ramiro Oliveira
Ramiro.Oliveira@synopsys.com

[toc] | [prev] | [next] | [standalone]


#1585727

FromVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Date2017-02-21 21:50 +0100
Message-ID<tdpxL-7Jl-9@gated-at.bofh.it>
In reply to#1585711
Hi Ramiro,

On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
> Hi Vladimir,
> 
> Thank you for your feedback
> 
> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
>> Hi Ramiro,
>>
>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>>> Create device tree bindings documentation.
>>>
>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>>> Acked-by: Rob Herring <robh@kernel.org>
>>> ---
>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>>  1 file changed, 35 insertions(+)
>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>> new file mode 100644
>>> index 000000000000..31956426d3b9
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>> @@ -0,0 +1,35 @@
>>> +Omnivision OV5647 raw image sensor
>>> +---------------------------------
>>> +
>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>>> +and CCI (I2C compatible) control bus.
>>> +
>>> +Required properties:
>>> +
>>> +- compatible		: "ovti,ov5647".
>>> +- reg			: I2C slave address of the sensor.
>>> +- clocks		: Reference to the xclk clock.
>>
>> Is "xclk" clock a pixel clock or something else?
>>
> 
> It's an external oscillator.

hmm, I suppose a clock of any type could serve as a clock for the sensor.
It can be an external oscillator on a particular board, or it can be
something else on another board.

Can you please describe what for does ov5647 sensor need this clock, what
is its function?

> 
>>> +- clock-names		: Should be "xclk".
>>
>> You can remove this property, because there is only one source clock.
>>
> 
> Ok.
> 
>>> +- clock-frequency	: Frequency of the xclk clock.
>>
>> And after the last updates in the driver this property can be removed as well.
>>
> 
> But I'm still using clk_get_rate in the driver, if I remove the frequency here
> the probing will fail.
> 

I doubt it, there should be no connection between a custom "clock-frequency"
device tree property in a clock consumer device node and clk_get_rate() function
from the CCF, which takes a clock provider as its argument.

>>> +
>>> +The common video interfaces bindings (see video-interfaces.txt) should be
>>> +used to specify link to the image data receiver. The OV5647 device
>>> +node should contain one 'port' child node with an 'endpoint' subnode.
>>> +
>>> +Example:
>>> +
>>> +	i2c@2000 {
>>> +		...
>>> +		ov: camera@36 {
>>> +			compatible = "ovti,ov5647";
>>> +			reg = <0x36>;
>>> +			clocks = <&camera_clk>;
>>> +			clock-names = "xclk";
>>> +			clock-frequency = <25000000>;
>>
>> When you remove two unused properties, please don't forget to update the
>> example.
>>
> 
> Ok.
> 
>>> +			port {
>>> +				camera_1: endpoint {
>>> +					remote-endpoint = <&csi1_ep1>;
>>> +				};
>>> +			};
>>> +		};
>>> +	};
>>>
>>

--
With best wishes,
Vladimir

[toc] | [prev] | [next] | [standalone]


#1585759

FromSakari Ailus <sakari.ailus@iki.fi>
Date2017-02-21 22:50 +0100
Message-ID<tdqtP-8mV-3@gated-at.bofh.it>
In reply to#1585727
Hi, Vladimir!

How do you do? :-)

On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
> Hi Ramiro,
> 
> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
> > Hi Vladimir,
> > 
> > Thank you for your feedback
> > 
> > On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
> >> Hi Ramiro,
> >>
> >> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
> >>> Create device tree bindings documentation.
> >>>
> >>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
> >>> Acked-by: Rob Herring <robh@kernel.org>
> >>> ---
> >>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
> >>>  1 file changed, 35 insertions(+)
> >>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>> new file mode 100644
> >>> index 000000000000..31956426d3b9
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>> @@ -0,0 +1,35 @@
> >>> +Omnivision OV5647 raw image sensor
> >>> +---------------------------------
> >>> +
> >>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
> >>> +and CCI (I2C compatible) control bus.
> >>> +
> >>> +Required properties:
> >>> +
> >>> +- compatible		: "ovti,ov5647".
> >>> +- reg			: I2C slave address of the sensor.
> >>> +- clocks		: Reference to the xclk clock.
> >>
> >> Is "xclk" clock a pixel clock or something else?
> >>
> > 
> > It's an external oscillator.
> 
> hmm, I suppose a clock of any type could serve as a clock for the sensor.
> It can be an external oscillator on a particular board, or it can be
> something else on another board.

Any clock source could be used I presume.

> 
> Can you please describe what for does ov5647 sensor need this clock, what
> is its function?

Camera modules (sensors) quite commonly require an external clock as they do
not have an oscillator on their own. A lot of devices under
Documentation/devicetree/bindings/media/i2c/ have similar properties.

> 
> > 
> >>> +- clock-names		: Should be "xclk".
> >>
> >> You can remove this property, because there is only one source clock.
> >>
> > 
> > Ok.
> > 
> >>> +- clock-frequency	: Frequency of the xclk clock.
> >>
> >> And after the last updates in the driver this property can be removed as well.
> >>
> > 
> > But I'm still using clk_get_rate in the driver, if I remove the frequency here
> > the probing will fail.
> > 
> 
> I doubt it, there should be no connection between a custom "clock-frequency"
> device tree property in a clock consumer device node and clk_get_rate() function
> from the CCF, which takes a clock provider as its argument.

The purpose is to make sure the clock frequency is really usable for the
device, in this particular case the driver can work with one particular
frequency.

That said, the driver does not appear to use the property at the moment. It
should.

It'd be good to verify that the rate matches: clk_set_rate() is not
guaranteed to produce the requested clock rate, and the driver could
conceivably be updated with support for more frequencies. There are
typically a few frequencies that a SoC such a sensor is connected can
support, and 25 MHz is not one of the common frequencies. With this
property, the frequency would be always there explicitly.

> 
> >>> +
> >>> +The common video interfaces bindings (see video-interfaces.txt) should be
> >>> +used to specify link to the image data receiver. The OV5647 device
> >>> +node should contain one 'port' child node with an 'endpoint' subnode.
> >>> +
> >>> +Example:
> >>> +
> >>> +	i2c@2000 {
> >>> +		...
> >>> +		ov: camera@36 {
> >>> +			compatible = "ovti,ov5647";
> >>> +			reg = <0x36>;
> >>> +			clocks = <&camera_clk>;
> >>> +			clock-names = "xclk";
> >>> +			clock-frequency = <25000000>;
> >>
> >> When you remove two unused properties, please don't forget to update the
> >> example.
> >>
> > 
> > Ok.
> > 
> >>> +			port {
> >>> +				camera_1: endpoint {
> >>> +					remote-endpoint = <&csi1_ep1>;
> >>> +				};
> >>> +			};
> >>> +		};
> >>> +	};
> >>>
> >>
> 
> --
    ^
There's a space missing here.

> With best wishes,
> Vladimir

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

[toc] | [prev] | [next] | [standalone]


#1585786

FromVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Date2017-02-21 23:40 +0100
Message-ID<tdrgf-sR-35@gated-at.bofh.it>
In reply to#1585759
Hi Sakari,

On 02/21/2017 11:48 PM, Sakari Ailus wrote:
> Hi, Vladimir!
> 
> How do you do? :-)

deferring execution of boring tasks by doing code review :)

> On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
>> Hi Ramiro,
>>
>> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
>>> Hi Vladimir,
>>>
>>> Thank you for your feedback
>>>
>>> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
>>>> Hi Ramiro,
>>>>
>>>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>>>>> Create device tree bindings documentation.
>>>>>
>>>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>>>>> Acked-by: Rob Herring <robh@kernel.org>
>>>>> ---
>>>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>>>>  1 file changed, 35 insertions(+)
>>>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>> new file mode 100644
>>>>> index 000000000000..31956426d3b9
>>>>> --- /dev/null
>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>> @@ -0,0 +1,35 @@
>>>>> +Omnivision OV5647 raw image sensor
>>>>> +---------------------------------
>>>>> +
>>>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>>>>> +and CCI (I2C compatible) control bus.
>>>>> +
>>>>> +Required properties:
>>>>> +
>>>>> +- compatible		: "ovti,ov5647".
>>>>> +- reg			: I2C slave address of the sensor.
>>>>> +- clocks		: Reference to the xclk clock.
>>>>
>>>> Is "xclk" clock a pixel clock or something else?
>>>>
>>>
>>> It's an external oscillator.
>>
>> hmm, I suppose a clock of any type could serve as a clock for the sensor.
>> It can be an external oscillator on a particular board, or it can be
>> something else on another board.
> 
> Any clock source could be used I presume.
> 

That's exactly my point, and it is a reason to rename "xclk" to something
more generic.

>>
>> Can you please describe what for does ov5647 sensor need this clock, what
>> is its function?
> 
> Camera modules (sensors) quite commonly require an external clock as they do
> not have an oscillator on their own. A lot of devices under
> Documentation/devicetree/bindings/media/i2c/ have similar properties.
> 

So, what should be a better replacement of "xclk" in the description above?

E.g.

- clocks		: Phandle to a device supply clock.

>>
>>>
>>>>> +- clock-names		: Should be "xclk".

We got an agreement that "clock-names" property is removed, nevertheless
if it is added back, is should not be "xclk".

>>>>
>>>> You can remove this property, because there is only one source clock.
>>>>
>>>
>>> Ok.
>>>
>>>>> +- clock-frequency	: Frequency of the xclk clock.
>>>>
>>>> And after the last updates in the driver this property can be removed as well.
>>>>
>>>
>>> But I'm still using clk_get_rate in the driver, if I remove the frequency here
>>> the probing will fail.
>>>
>>
>> I doubt it, there should be no connection between a custom "clock-frequency"
>> device tree property in a clock consumer device node and clk_get_rate() function
>> from the CCF, which takes a clock provider as its argument.
> 
> The purpose is to make sure the clock frequency is really usable for the
> device, in this particular case the driver can work with one particular
> frequency.
> 
> That said, the driver does not appear to use the property at the moment. It
> should.
> 
> It'd be good to verify that the rate matches: clk_set_rate() is not
> guaranteed to produce the requested clock rate, and the driver could
> conceivably be updated with support for more frequencies. There are
> typically a few frequencies that a SoC such a sensor is connected can
> support, and 25 MHz is not one of the common frequencies. With this
> property, the frequency would be always there explicitly.
> 

I can provide my arguments given at v8 review time again, since I don't
see a contradiction with my older comments.

Briefly "clock-frequency" as a device tree property on a consumer side
can be considered as redundant, because there is a mechanism to specify
a wanted clock frequency on a clock provider side right in a board DTB.

So, the clock frequency set up is delegated to CCF, and when any other
than 25 MHz frequencies are got supported, that's only the matter of
driver updates, DTBs won't be touched.

--
With best wishes,
Vladimir

[toc] | [prev] | [next] | [standalone]


#1586061

FromRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
Date2017-02-22 12:00 +0100
Message-ID<tdCOm-tb-21@gated-at.bofh.it>
In reply to#1585786
Hi Vladimir

On 2/21/2017 10:37 PM, Vladimir Zapolskiy wrote:
> Hi Sakari,
> 
> On 02/21/2017 11:48 PM, Sakari Ailus wrote:
>> Hi, Vladimir!
>>
>> How do you do? :-)
> 
> deferring execution of boring tasks by doing code review :)
> 
>> On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
>>> Hi Ramiro,
>>>
>>> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
>>>> Hi Vladimir,
>>>>
>>>> Thank you for your feedback
>>>>
>>>> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
>>>>> Hi Ramiro,
>>>>>
>>>>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>>>>>> Create device tree bindings documentation.
>>>>>>
>>>>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>>>>>> Acked-by: Rob Herring <robh@kernel.org>
>>>>>> ---
>>>>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>>>>>  1 file changed, 35 insertions(+)
>>>>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>
>>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>> new file mode 100644
>>>>>> index 000000000000..31956426d3b9
>>>>>> --- /dev/null
>>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>> @@ -0,0 +1,35 @@
>>>>>> +Omnivision OV5647 raw image sensor
>>>>>> +---------------------------------
>>>>>> +
>>>>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>>>>>> +and CCI (I2C compatible) control bus.
>>>>>> +
>>>>>> +Required properties:
>>>>>> +
>>>>>> +- compatible		: "ovti,ov5647".
>>>>>> +- reg			: I2C slave address of the sensor.
>>>>>> +- clocks		: Reference to the xclk clock.
>>>>>
>>>>> Is "xclk" clock a pixel clock or something else?
>>>>>
>>>>
>>>> It's an external oscillator.
>>>
>>> hmm, I suppose a clock of any type could serve as a clock for the sensor.
>>> It can be an external oscillator on a particular board, or it can be
>>> something else on another board.
>>
>> Any clock source could be used I presume.
>>
> 
> That's exactly my point, and it is a reason to rename "xclk" to something
> more generic.
> 

xclk it's the name being used in the camera datasheet, but I can change it to
something more generic

>>>
>>> Can you please describe what for does ov5647 sensor need this clock, what
>>> is its function?
>>
>> Camera modules (sensors) quite commonly require an external clock as they do
>> not have an oscillator on their own. A lot of devices under
>> Documentation/devicetree/bindings/media/i2c/ have similar properties.
>>
> 
> So, what should be a better replacement of "xclk" in the description above?
> 
> E.g.
> 
> - clocks		: Phandle to a device supply clock.
> 
>>>
>>>>
>>>>>> +- clock-names		: Should be "xclk".
> 
> We got an agreement that "clock-names" property is removed, nevertheless
> if it is added back, is should not be "xclk".
> 
>>>>>
>>>>> You can remove this property, because there is only one source clock.
>>>>>
>>>>
>>>> Ok.
>>>>
>>>>>> +- clock-frequency	: Frequency of the xclk clock.
>>>>>
>>>>> And after the last updates in the driver this property can be removed as well.
>>>>>
>>>>
>>>> But I'm still using clk_get_rate in the driver, if I remove the frequency here
>>>> the probing will fail.
>>>>
>>>
>>> I doubt it, there should be no connection between a custom "clock-frequency"
>>> device tree property in a clock consumer device node and clk_get_rate() function
>>> from the CCF, which takes a clock provider as its argument.
>>
>> The purpose is to make sure the clock frequency is really usable for the
>> device, in this particular case the driver can work with one particular
>> frequency.
>>
>> That said, the driver does not appear to use the property at the moment. It
>> should.
>>
>> It'd be good to verify that the rate matches: clk_set_rate() is not
>> guaranteed to produce the requested clock rate, and the driver could
>> conceivably be updated with support for more frequencies. There are
>> typically a few frequencies that a SoC such a sensor is connected can
>> support, and 25 MHz is not one of the common frequencies. With this
>> property, the frequency would be always there explicitly.
>>
> 
> I can provide my arguments given at v8 review time again, since I don't
> see a contradiction with my older comments.
> 
> Briefly "clock-frequency" as a device tree property on a consumer side
> can be considered as redundant, because there is a mechanism to specify
> a wanted clock frequency on a clock provider side right in a board DTB.
> 
> So, the clock frequency set up is delegated to CCF, and when any other
> than 25 MHz frequencies are got supported, that's only the matter of
> driver updates, DTBs won't be touched.
> 

In the driver, I'm using this piece of code to check that the frequency is 25Mhz

	xclk_freq = clk_get_rate(sensor->xclk);
	if (xclk_freq != 25000000) {
		dev_err(dev, "Unsupported clock frequency: %u\n", xclk_freq);
		return -EINVAL;
	}

So if I don't define it here the probing will fail. Do you have another
suggestion for this?

-- 
Best Regards

Ramiro Oliveira
Ramiro.Oliveira@synopsys.com

[toc] | [prev] | [next] | [standalone]


#1586103

FromVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Date2017-02-22 12:50 +0100
Message-ID<tdDAK-13e-21@gated-at.bofh.it>
In reply to#1586061
Hi Ramiro,

On 02/22/2017 12:57 PM, Ramiro Oliveira wrote:
> Hi Vladimir
> 
> On 2/21/2017 10:37 PM, Vladimir Zapolskiy wrote:
>> Hi Sakari,
>>
>> On 02/21/2017 11:48 PM, Sakari Ailus wrote:
>>> Hi, Vladimir!
>>>
>>> How do you do? :-)
>>
>> deferring execution of boring tasks by doing code review :)
>>
>>> On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
>>>> Hi Ramiro,
>>>>
>>>> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> Thank you for your feedback
>>>>>
>>>>> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
>>>>>> Hi Ramiro,
>>>>>>
>>>>>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>>>>>>> Create device tree bindings documentation.
>>>>>>>
>>>>>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>>>>>>> Acked-by: Rob Herring <robh@kernel.org>
>>>>>>> ---
>>>>>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>>>>>>  1 file changed, 35 insertions(+)
>>>>>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..31956426d3b9
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>> @@ -0,0 +1,35 @@
>>>>>>> +Omnivision OV5647 raw image sensor
>>>>>>> +---------------------------------
>>>>>>> +
>>>>>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>>>>>>> +and CCI (I2C compatible) control bus.
>>>>>>> +
>>>>>>> +Required properties:
>>>>>>> +
>>>>>>> +- compatible		: "ovti,ov5647".
>>>>>>> +- reg			: I2C slave address of the sensor.
>>>>>>> +- clocks		: Reference to the xclk clock.
>>>>>>
>>>>>> Is "xclk" clock a pixel clock or something else?
>>>>>>
>>>>>
>>>>> It's an external oscillator.
>>>>
>>>> hmm, I suppose a clock of any type could serve as a clock for the sensor.
>>>> It can be an external oscillator on a particular board, or it can be
>>>> something else on another board.
>>>
>>> Any clock source could be used I presume.
>>>
>>
>> That's exactly my point, and it is a reason to rename "xclk" to something
>> more generic.
>>
> 
> xclk it's the name being used in the camera datasheet, but I can change it to
> something more generic
> 

Ah, if the name comes from the sensor datasheet, then it should be okay
to keep it.

>>>>
>>>> Can you please describe what for does ov5647 sensor need this clock, what
>>>> is its function?
>>>
>>> Camera modules (sensors) quite commonly require an external clock as they do
>>> not have an oscillator on their own. A lot of devices under
>>> Documentation/devicetree/bindings/media/i2c/ have similar properties.
>>>
>>
>> So, what should be a better replacement of "xclk" in the description above?
>>
>> E.g.
>>
>> - clocks		: Phandle to a device supply clock.
>>
>>>>
>>>>>
>>>>>>> +- clock-names		: Should be "xclk".
>>
>> We got an agreement that "clock-names" property is removed, nevertheless
>> if it is added back, is should not be "xclk".
>>
>>>>>>
>>>>>> You can remove this property, because there is only one source clock.
>>>>>>
>>>>>
>>>>> Ok.
>>>>>
>>>>>>> +- clock-frequency	: Frequency of the xclk clock.
>>>>>>
>>>>>> And after the last updates in the driver this property can be removed as well.
>>>>>>
>>>>>
>>>>> But I'm still using clk_get_rate in the driver, if I remove the frequency here
>>>>> the probing will fail.
>>>>>
>>>>
>>>> I doubt it, there should be no connection between a custom "clock-frequency"
>>>> device tree property in a clock consumer device node and clk_get_rate() function
>>>> from the CCF, which takes a clock provider as its argument.
>>>
>>> The purpose is to make sure the clock frequency is really usable for the
>>> device, in this particular case the driver can work with one particular
>>> frequency.
>>>
>>> That said, the driver does not appear to use the property at the moment. It
>>> should.
>>>
>>> It'd be good to verify that the rate matches: clk_set_rate() is not
>>> guaranteed to produce the requested clock rate, and the driver could
>>> conceivably be updated with support for more frequencies. There are
>>> typically a few frequencies that a SoC such a sensor is connected can
>>> support, and 25 MHz is not one of the common frequencies. With this
>>> property, the frequency would be always there explicitly.
>>>
>>
>> I can provide my arguments given at v8 review time again, since I don't
>> see a contradiction with my older comments.
>>
>> Briefly "clock-frequency" as a device tree property on a consumer side
>> can be considered as redundant, because there is a mechanism to specify
>> a wanted clock frequency on a clock provider side right in a board DTB.
>>
>> So, the clock frequency set up is delegated to CCF, and when any other
>> than 25 MHz frequencies are got supported, that's only the matter of
>> driver updates, DTBs won't be touched.
>>
> 
> In the driver, I'm using this piece of code to check that the frequency is 25Mhz
> 
> 	xclk_freq = clk_get_rate(sensor->xclk);
> 	if (xclk_freq != 25000000) {
> 		dev_err(dev, "Unsupported clock frequency: %u\n", xclk_freq);
> 		return -EINVAL;
> 	}
> 
> So if I don't define it here the probing will fail. Do you have another
> suggestion for this?
> 

I don't completely understand, why does it fail? "clock-frequency" property
is not a standard device node property on a clock consumer side, so, if we're
still talking about v9 version of the driver, adding the property or removing
it should have no effect.

Let's consider the simplest possible situation, when "xclk" is actually
a fixed rate 25MHz oscillator (the clock device node is "fixed-clock"
compatible), for such a clock clk_get_rate() returns 25MHz rate, the assert
has to be passed. In case of a more complex scenario please reference to
clock-bindings.txt documentation, in particular please take a look at
"assigned-clocks" and "assigned-clock-rates" properties.

--
With best wishes,
Vladimir

[toc] | [prev] | [next] | [standalone]


#1586216

FromRamiro Oliveira <Ramiro.Oliveira@synopsys.com>
Date2017-02-22 15:50 +0100
Message-ID<tdGoV-37i-1@gated-at.bofh.it>
In reply to#1586103
Hi Vladimir

On 2/22/2017 11:39 AM, Vladimir Zapolskiy wrote:
> Hi Ramiro,
> 
> On 02/22/2017 12:57 PM, Ramiro Oliveira wrote:
>> Hi Vladimir
>>
>> On 2/21/2017 10:37 PM, Vladimir Zapolskiy wrote:
>>> Hi Sakari,
>>>
>>> On 02/21/2017 11:48 PM, Sakari Ailus wrote:
>>>> Hi, Vladimir!
>>>>
>>>> How do you do? :-)
>>>
>>> deferring execution of boring tasks by doing code review :)
>>>
>>>> On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
>>>>> Hi Ramiro,
>>>>>
>>>>> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
>>>>>> Hi Vladimir,
>>>>>>
>>>>>> Thank you for your feedback
>>>>>>
>>>>>> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
>>>>>>> Hi Ramiro,
>>>>>>>
>>>>>>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
>>>>>>>> Create device tree bindings documentation.
>>>>>>>>
>>>>>>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
>>>>>>>> Acked-by: Rob Herring <robh@kernel.org>
>>>>>>>> ---
>>>>>>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
>>>>>>>>  1 file changed, 35 insertions(+)
>>>>>>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>>>
>>>>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>>> new file mode 100644
>>>>>>>> index 000000000000..31956426d3b9
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
>>>>>>>> @@ -0,0 +1,35 @@
>>>>>>>> +Omnivision OV5647 raw image sensor
>>>>>>>> +---------------------------------
>>>>>>>> +
>>>>>>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
>>>>>>>> +and CCI (I2C compatible) control bus.
>>>>>>>> +
>>>>>>>> +Required properties:
>>>>>>>> +
>>>>>>>> +- compatible		: "ovti,ov5647".
>>>>>>>> +- reg			: I2C slave address of the sensor.
>>>>>>>> +- clocks		: Reference to the xclk clock.
>>>>>>>
>>>>>>> Is "xclk" clock a pixel clock or something else?
>>>>>>>
>>>>>>
>>>>>> It's an external oscillator.
>>>>>
>>>>> hmm, I suppose a clock of any type could serve as a clock for the sensor.
>>>>> It can be an external oscillator on a particular board, or it can be
>>>>> something else on another board.
>>>>
>>>> Any clock source could be used I presume.
>>>>
>>>
>>> That's exactly my point, and it is a reason to rename "xclk" to something
>>> more generic.
>>>
>>
>> xclk it's the name being used in the camera datasheet, but I can change it to
>> something more generic
>>
> 
> Ah, if the name comes from the sensor datasheet, then it should be okay
> to keep it.
> 
>>>>>
>>>>> Can you please describe what for does ov5647 sensor need this clock, what
>>>>> is its function?
>>>>
>>>> Camera modules (sensors) quite commonly require an external clock as they do
>>>> not have an oscillator on their own. A lot of devices under
>>>> Documentation/devicetree/bindings/media/i2c/ have similar properties.
>>>>
>>>
>>> So, what should be a better replacement of "xclk" in the description above?
>>>
>>> E.g.
>>>
>>> - clocks		: Phandle to a device supply clock.
>>>
>>>>>
>>>>>>
>>>>>>>> +- clock-names		: Should be "xclk".
>>>
>>> We got an agreement that "clock-names" property is removed, nevertheless
>>> if it is added back, is should not be "xclk".
>>>
>>>>>>>
>>>>>>> You can remove this property, because there is only one source clock.
>>>>>>>
>>>>>>
>>>>>> Ok.
>>>>>>
>>>>>>>> +- clock-frequency	: Frequency of the xclk clock.
>>>>>>>
>>>>>>> And after the last updates in the driver this property can be removed as well.
>>>>>>>
>>>>>>
>>>>>> But I'm still using clk_get_rate in the driver, if I remove the frequency here
>>>>>> the probing will fail.
>>>>>>
>>>>>
>>>>> I doubt it, there should be no connection between a custom "clock-frequency"
>>>>> device tree property in a clock consumer device node and clk_get_rate() function
>>>>> from the CCF, which takes a clock provider as its argument.
>>>>
>>>> The purpose is to make sure the clock frequency is really usable for the
>>>> device, in this particular case the driver can work with one particular
>>>> frequency.
>>>>
>>>> That said, the driver does not appear to use the property at the moment. It
>>>> should.
>>>>
>>>> It'd be good to verify that the rate matches: clk_set_rate() is not
>>>> guaranteed to produce the requested clock rate, and the driver could
>>>> conceivably be updated with support for more frequencies. There are
>>>> typically a few frequencies that a SoC such a sensor is connected can
>>>> support, and 25 MHz is not one of the common frequencies. With this
>>>> property, the frequency would be always there explicitly.
>>>>
>>>
>>> I can provide my arguments given at v8 review time again, since I don't
>>> see a contradiction with my older comments.
>>>
>>> Briefly "clock-frequency" as a device tree property on a consumer side
>>> can be considered as redundant, because there is a mechanism to specify
>>> a wanted clock frequency on a clock provider side right in a board DTB.
>>>
>>> So, the clock frequency set up is delegated to CCF, and when any other
>>> than 25 MHz frequencies are got supported, that's only the matter of
>>> driver updates, DTBs won't be touched.
>>>
>>
>> In the driver, I'm using this piece of code to check that the frequency is 25Mhz
>>
>> 	xclk_freq = clk_get_rate(sensor->xclk);
>> 	if (xclk_freq != 25000000) {
>> 		dev_err(dev, "Unsupported clock frequency: %u\n", xclk_freq);
>> 		return -EINVAL;
>> 	}
>>
>> So if I don't define it here the probing will fail. Do you have another
>> suggestion for this?
>>
> 
> I don't completely understand, why does it fail? "clock-frequency" property
> is not a standard device node property on a clock consumer side, so, if we're
> still talking about v9 version of the driver, adding the property or removing
> it should have no effect.
> 
> Let's consider the simplest possible situation, when "xclk" is actually
> a fixed rate 25MHz oscillator (the clock device node is "fixed-clock"
> compatible), for such a clock clk_get_rate() returns 25MHz rate, the assert
> has to be passed. In case of a more complex scenario please reference to
> clock-bindings.txt documentation, in particular please take a look at
> "assigned-clocks" and "assigned-clock-rates" properties.
> 

You're right, I was forgetting about the frequency being defined in the fixed
clock declaration. I'll remove clock-frequency from the example.

-- 
Best Regards

Ramiro Oliveira
Ramiro.Oliveira@synopsys.com

[toc] | [prev] | [next] | [standalone]


#1588149

FromSakari Ailus <sakari.ailus@iki.fi>
Date2017-02-25 16:20 +0100
Message-ID<teMiC-1iP-19@gated-at.bofh.it>
In reply to#1585786
Hi Vladimir,

On Wed, Feb 22, 2017 at 12:37:51AM +0200, Vladimir Zapolskiy wrote:
> Hi Sakari,
> 
> On 02/21/2017 11:48 PM, Sakari Ailus wrote:
> > Hi, Vladimir!
> > 
> > How do you do? :-)
> 
> deferring execution of boring tasks by doing code review :)

X-)

> 
> > On Tue, Feb 21, 2017 at 10:48:09PM +0200, Vladimir Zapolskiy wrote:
> >> Hi Ramiro,
> >>
> >> On 02/21/2017 10:13 PM, Ramiro Oliveira wrote:
> >>> Hi Vladimir,
> >>>
> >>> Thank you for your feedback
> >>>
> >>> On 2/21/2017 3:58 PM, Vladimir Zapolskiy wrote:
> >>>> Hi Ramiro,
> >>>>
> >>>> On 02/17/2017 03:14 PM, Ramiro Oliveira wrote:
> >>>>> Create device tree bindings documentation.
> >>>>>
> >>>>> Signed-off-by: Ramiro Oliveira <roliveir@synopsys.com>
> >>>>> Acked-by: Rob Herring <robh@kernel.org>
> >>>>> ---
> >>>>>  .../devicetree/bindings/media/i2c/ov5647.txt       | 35 ++++++++++++++++++++++
> >>>>>  1 file changed, 35 insertions(+)
> >>>>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>>>>
> >>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>>>> new file mode 100644
> >>>>> index 000000000000..31956426d3b9
> >>>>> --- /dev/null
> >>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
> >>>>> @@ -0,0 +1,35 @@
> >>>>> +Omnivision OV5647 raw image sensor
> >>>>> +---------------------------------
> >>>>> +
> >>>>> +OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
> >>>>> +and CCI (I2C compatible) control bus.
> >>>>> +
> >>>>> +Required properties:
> >>>>> +
> >>>>> +- compatible		: "ovti,ov5647".
> >>>>> +- reg			: I2C slave address of the sensor.
> >>>>> +- clocks		: Reference to the xclk clock.
> >>>>
> >>>> Is "xclk" clock a pixel clock or something else?
> >>>>
> >>>
> >>> It's an external oscillator.
> >>
> >> hmm, I suppose a clock of any type could serve as a clock for the sensor.
> >> It can be an external oscillator on a particular board, or it can be
> >> something else on another board.
> > 
> > Any clock source could be used I presume.
> > 
> 
> That's exactly my point, and it is a reason to rename "xclk" to something
> more generic.

That's a sensor specific name, the one in the hardware datasheet should be
used if there's one, shouldn't it?

An alternative is not to use a name, as there's just a single clock.

> 
> >>
> >> Can you please describe what for does ov5647 sensor need this clock, what
> >> is its function?
> > 
> > Camera modules (sensors) quite commonly require an external clock as they do
> > not have an oscillator on their own. A lot of devices under
> > Documentation/devicetree/bindings/media/i2c/ have similar properties.
> > 
> 
> So, what should be a better replacement of "xclk" in the description above?
> 
> E.g.
> 
> - clocks		: Phandle to a device supply clock.
> 
> >>
> >>>
> >>>>> +- clock-names		: Should be "xclk".
> 
> We got an agreement that "clock-names" property is removed, nevertheless
> if it is added back, is should not be "xclk".
> 
> >>>>
> >>>> You can remove this property, because there is only one source clock.
> >>>>
> >>>
> >>> Ok.
> >>>
> >>>>> +- clock-frequency	: Frequency of the xclk clock.
> >>>>
> >>>> And after the last updates in the driver this property can be removed as well.
> >>>>
> >>>
> >>> But I'm still using clk_get_rate in the driver, if I remove the frequency here
> >>> the probing will fail.
> >>>
> >>
> >> I doubt it, there should be no connection between a custom "clock-frequency"
> >> device tree property in a clock consumer device node and clk_get_rate() function
> >> from the CCF, which takes a clock provider as its argument.
> > 
> > The purpose is to make sure the clock frequency is really usable for the
> > device, in this particular case the driver can work with one particular
> > frequency.
> > 
> > That said, the driver does not appear to use the property at the moment. It
> > should.
> > 
> > It'd be good to verify that the rate matches: clk_set_rate() is not
> > guaranteed to produce the requested clock rate, and the driver could
> > conceivably be updated with support for more frequencies. There are
> > typically a few frequencies that a SoC such a sensor is connected can
> > support, and 25 MHz is not one of the common frequencies. With this
> > property, the frequency would be always there explicitly.
> > 
> 
> I can provide my arguments given at v8 review time again, since I don't
> see a contradiction with my older comments.
> 
> Briefly "clock-frequency" as a device tree property on a consumer side
> can be considered as redundant, because there is a mechanism to specify
> a wanted clock frequency on a clock provider side right in a board DTB.

You can, but there's no guarantee that the frequency what you get is going
to be what you asked for.

Although, the driver could try to work on the actual obtained frequency.
This is unlikely to work though, but it won't be very easy to figure out
why the device isn't working. Having the frequency in DT accessible for the
driver to check makes failing early with a clear error message possible.

> 
> So, the clock frequency set up is delegated to CCF, and when any other
> than 25 MHz frequencies are got supported, that's only the matter of
> driver updates, DTBs won't be touched.

Indeed. The new supported frequencies in this case will be additional
single values; there won't be ranges or such. The register lists the
driver contains are more or less dependent on that frequency.

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

[toc] | [prev] | [next] | [standalone]


#1588151

FromSakari Ailus <sakari.ailus@iki.fi>
Date2017-02-25 16:40 +0100
Message-ID<teMBY-1sj-5@gated-at.bofh.it>
In reply to#1588149
On Sat, Feb 25, 2017 at 04:50:53PM +0200, Sakari Ailus wrote:
> Although, the driver could try to work on the actual obtained frequency.
> This is unlikely to work though, but it won't be very easy to figure out
> why the device isn't working. Having the frequency in DT accessible for the
> driver to check makes failing early with a clear error message possible.

The below point actually makes the above matter a non-issue: this driver
will contain a list of supported frequencies. A SMIA driver that I
typically work with, for instance, does not. So I think your suggestion of
having the CCF handle setting the frequency is a good one.

> 
> > 
> > So, the clock frequency set up is delegated to CCF, and when any other
> > than 25 MHz frequencies are got supported, that's only the matter of
> > driver updates, DTBs won't be touched.
> 
> Indeed. The new supported frequencies in this case will be additional
> single values; there won't be ranges or such. The register lists the
> driver contains are more or less dependent on that frequency.

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web