diff mbox

[v6,1/2] media: i2c/ov5645: add the device tree binding document

Message ID 1473326035-25228-2-git-send-email-todor.tomov@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Todor Tomov Sept. 8, 2016, 9:13 a.m. UTC
Add the document for ov5645 device tree binding.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
---
 .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5645.txt

Comments

Laurent Pinchart Sept. 8, 2016, 12:22 p.m. UTC | #1
Hi Todor,

Thank you for the patch.

On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
> Add the document for ov5645 device tree binding.
> 
> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
> ---
>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 +++++++++++++++++++
>  1 file changed, 52 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5645.txt
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
> 100644
> index 0000000..bcf6dba
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> @@ -0,0 +1,52 @@
> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
> +
> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image sensor
> with +an active array size of 2592H x 1944V. It is programmable through a
> serial I2C +interface.
> +
> +Required Properties:
> +- compatible: Value should be "ovti,ov5645".
> +- clocks: Reference to the xclk clock.
> +- clock-names: Should be "xclk".
> +- clock-frequency: Frequency of the xclk clock.
> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
> +- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.

Shouldn't the enable and reset GPIOs be optional ?

> +- vdddo-supply: Chip digital IO regulator.
> +- vdda-supply: Chip analog regulator.
> +- vddd-supply: Chip digital core regulator.
> +
> +The device node must contain one 'port' child node for its digital output
> +video port, in accordance with the video interface bindings defined in
> +Documentation/devicetree/bindings/media/video-interfaces.txt.
> +
> +Example:
> +
> +	&i2c1 {
> +		...
> +
> +		ov5645: ov5645@78 {
> +			compatible = "ovti,ov5645";
> +			reg = <0x78>;
> +
> +			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> +			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&camera_rear_default>;
> +
> +			clocks = <&clks 200>;
> +			clock-names = "xclk";
> +			clock-frequency = <23880000>;
> +
> +			vdddo-supply = <&camera_dovdd_1v8>;
> +			vdda-supply = <&camera_avdd_2v8>;
> +			vddd-supply = <&camera_dvdd_1v2>;
> +
> +			port {
> +				ov5645_ep: endpoint {
> +					clock-lanes = <1>;
> +					data-lanes = <0 2>;
> +					remote-endpoint = <&csi0_ep>;
> +				};
> +			};
> +		};
> +	};
Todor Tomov Oct. 14, 2016, 12:01 p.m. UTC | #2
Hi Laurent,

Thank you for the review.

On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
> Hi Todor,
> 
> Thank you for the patch.
> 
> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
>> Add the document for ov5645 device tree binding.
>>
>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
>> ---
>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 +++++++++++++++++++
>>  1 file changed, 52 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>
>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
>> 100644
>> index 0000000..bcf6dba
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>> @@ -0,0 +1,52 @@
>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
>> +
>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image sensor
>> with +an active array size of 2592H x 1944V. It is programmable through a
>> serial I2C +interface.
>> +
>> +Required Properties:
>> +- compatible: Value should be "ovti,ov5645".
>> +- clocks: Reference to the xclk clock.
>> +- clock-names: Should be "xclk".
>> +- clock-frequency: Frequency of the xclk clock.
>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
>> +- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.
> 
> Shouldn't the enable and reset GPIOs be optional ?
I don't think so. The operations on the GPIOs are part of the power up sequence
of the sensor so we must have control over them to execute the exact sequence.

> 
>> +- vdddo-supply: Chip digital IO regulator.
>> +- vdda-supply: Chip analog regulator.
>> +- vddd-supply: Chip digital core regulator.
>> +
>> +The device node must contain one 'port' child node for its digital output
>> +video port, in accordance with the video interface bindings defined in
>> +Documentation/devicetree/bindings/media/video-interfaces.txt.
>> +
>> +Example:
>> +
>> +	&i2c1 {
>> +		...
>> +
>> +		ov5645: ov5645@78 {
>> +			compatible = "ovti,ov5645";
>> +			reg = <0x78>;
>> +
>> +			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
>> +			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
>> +			pinctrl-names = "default";
>> +			pinctrl-0 = <&camera_rear_default>;
>> +
>> +			clocks = <&clks 200>;
>> +			clock-names = "xclk";
>> +			clock-frequency = <23880000>;
>> +
>> +			vdddo-supply = <&camera_dovdd_1v8>;
>> +			vdda-supply = <&camera_avdd_2v8>;
>> +			vddd-supply = <&camera_dvdd_1v2>;
>> +
>> +			port {
>> +				ov5645_ep: endpoint {
>> +					clock-lanes = <1>;
>> +					data-lanes = <0 2>;
>> +					remote-endpoint = <&csi0_ep>;
>> +				};
>> +			};
>> +		};
>> +	};
>
Laurent Pinchart Oct. 19, 2016, 8:49 a.m. UTC | #3
Hi Todor,

On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
> > On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
> >> Add the document for ov5645 device tree binding.
> >> 
> >> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
> >> ---
> >> 
> >>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++++
> >>  1 file changed, 52 insertions(+)
> >>  create mode 100644
> >>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >> 
> >> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
> >> 100644
> >> index 0000000..bcf6dba
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >> @@ -0,0 +1,52 @@
> >> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
> >> +
> >> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
> >> sensor with
> >> +an active array size of 2592H x 1944V. It is programmable through a
> >> serial I2C
> >> +interface.
> >> +
> >> +Required Properties:
> >> +- compatible: Value should be "ovti,ov5645".
> >> +- clocks: Reference to the xclk clock.
> >> +- clock-names: Should be "xclk".
> >> +- clock-frequency: Frequency of the xclk clock.
> >> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.

By the way, isn't the pin called pwdnb and isn't it active low ?

> >> +- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.
> > 
> > Shouldn't the enable and reset GPIOs be optional ?
> 
> I don't think so. The operations on the GPIOs are part of the power up
> sequence of the sensor so we must have control over them to execute the
> exact sequence.

Right, let's keep them mandatory. If we later have to make them optional for a 
board that pulls one of those signals up (assuming this can work at all) we'll 
revisit the bindings.

> >> +- vdddo-supply: Chip digital IO regulator.
> >> +- vdda-supply: Chip analog regulator.
> >> +- vddd-supply: Chip digital core regulator.
> >> +
> >> +The device node must contain one 'port' child node for its digital
> >> output
> >> +video port, in accordance with the video interface bindings defined in
> >> +Documentation/devicetree/bindings/media/video-interfaces.txt.
> >> +
> >> +Example:
> >> +
> >> +	&i2c1 {
> >> +		...
> >> +
> >> +		ov5645: ov5645@78 {
> >> +			compatible = "ovti,ov5645";
> >> +			reg = <0x78>;
> >> +
> >> +			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> >> +			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
> >> +			pinctrl-names = "default";
> >> +			pinctrl-0 = <&camera_rear_default>;
> >> +
> >> +			clocks = <&clks 200>;
> >> +			clock-names = "xclk";
> >> +			clock-frequency = <23880000>;
> >> +
> >> +			vdddo-supply = <&camera_dovdd_1v8>;
> >> +			vdda-supply = <&camera_avdd_2v8>;
> >> +			vddd-supply = <&camera_dvdd_1v2>;
> >> +
> >> +			port {
> >> +				ov5645_ep: endpoint {
> >> +					clock-lanes = <1>;
> >> +					data-lanes = <0 2>;
> >> +					remote-endpoint = <&csi0_ep>;
> >> +				};
> >> +			};
> >> +		};
> >> +	};
Todor Tomov Oct. 19, 2016, 9:14 a.m. UTC | #4
Hi Laurent,

Thank you for the review.

On 10/19/2016 11:49 AM, Laurent Pinchart wrote:
> Hi Todor,
> 
> On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
>> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
>>> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
>>>> Add the document for ov5645 device tree binding.
>>>>
>>>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
>>>> ---
>>>>
>>>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++++
>>>>  1 file changed, 52 insertions(+)
>>>>  create mode 100644
>>>>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
>>>> 100644
>>>> index 0000000..bcf6dba
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>> @@ -0,0 +1,52 @@
>>>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
>>>> +
>>>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
>>>> sensor with
>>>> +an active array size of 2592H x 1944V. It is programmable through a
>>>> serial I2C
>>>> +interface.
>>>> +
>>>> +Required Properties:
>>>> +- compatible: Value should be "ovti,ov5645".
>>>> +- clocks: Reference to the xclk clock.
>>>> +- clock-names: Should be "xclk".
>>>> +- clock-frequency: Frequency of the xclk clock.
>>>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
> 
> By the way, isn't the pin called pwdnb and isn't it active low ?

Yes, the pin is called "pwdnb" and is active low (must be up for power to be up).
I have changed the name to "enable" as it is more generally used - this change
was suggested by Rob Herring. As the logic switches with this change of the name
I have stated it is active high which ends up in the same condition (enable
must be up for the power to be up). I think this is correct, isn't it?

> 
>>>> +- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.
>>>
>>> Shouldn't the enable and reset GPIOs be optional ?
>>
>> I don't think so. The operations on the GPIOs are part of the power up
>> sequence of the sensor so we must have control over them to execute the
>> exact sequence.
> 
> Right, let's keep them mandatory. If we later have to make them optional for a 
> board that pulls one of those signals up (assuming this can work at all) we'll 
> revisit the bindings.

Ok.

> 
>>>> +- vdddo-supply: Chip digital IO regulator.
>>>> +- vdda-supply: Chip analog regulator.
>>>> +- vddd-supply: Chip digital core regulator.
>>>> +
>>>> +The device node must contain one 'port' child node for its digital
>>>> output
>>>> +video port, in accordance with the video interface bindings defined in
>>>> +Documentation/devicetree/bindings/media/video-interfaces.txt.
>>>> +
>>>> +Example:
>>>> +
>>>> +	&i2c1 {
>>>> +		...
>>>> +
>>>> +		ov5645: ov5645@78 {
>>>> +			compatible = "ovti,ov5645";
>>>> +			reg = <0x78>;
>>>> +
>>>> +			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
>>>> +			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
>>>> +			pinctrl-names = "default";
>>>> +			pinctrl-0 = <&camera_rear_default>;
>>>> +
>>>> +			clocks = <&clks 200>;
>>>> +			clock-names = "xclk";
>>>> +			clock-frequency = <23880000>;
>>>> +
>>>> +			vdddo-supply = <&camera_dovdd_1v8>;
>>>> +			vdda-supply = <&camera_avdd_2v8>;
>>>> +			vddd-supply = <&camera_dvdd_1v2>;
>>>> +
>>>> +			port {
>>>> +				ov5645_ep: endpoint {
>>>> +					clock-lanes = <1>;
>>>> +					data-lanes = <0 2>;
>>>> +					remote-endpoint = <&csi0_ep>;
>>>> +				};
>>>> +			};
>>>> +		};
>>>> +	};
>
Laurent Pinchart Oct. 19, 2016, 9:21 a.m. UTC | #5
Hi Todor,

On Wednesday 19 Oct 2016 12:14:55 Todor Tomov wrote:
> On 10/19/2016 11:49 AM, Laurent Pinchart wrote:
> > On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
> >> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
> >>> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
> >>>> Add the document for ov5645 device tree binding.
> >>>> 
> >>>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
> >>>> ---
> >>>> 
> >>>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++
> >>>>  1 file changed, 52 insertions(+)
> >>>>  create mode 100644
> >>>>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>> 
> >>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
> >>>> 100644
> >>>> index 0000000..bcf6dba
> >>>> --- /dev/null
> >>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>> @@ -0,0 +1,52 @@
> >>>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
> >>>> +
> >>>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
> >>>> sensor with
> >>>> +an active array size of 2592H x 1944V. It is programmable through a
> >>>> serial I2C
> >>>> +interface.
> >>>> +
> >>>> +Required Properties:
> >>>> +- compatible: Value should be "ovti,ov5645".
> >>>> +- clocks: Reference to the xclk clock.
> >>>> +- clock-names: Should be "xclk".
> >>>> +- clock-frequency: Frequency of the xclk clock.
> >>>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
> > 
> > By the way, isn't the pin called pwdnb and isn't it active low ?
> 
> Yes, the pin is called "pwdnb" and is active low (must be up for power to be
> up). I have changed the name to "enable" as it is more generally used -
> this change was suggested by Rob Herring. As the logic switches with this
> change of the name I have stated it is active high which ends up in the
> same condition (enable must be up for the power to be up). I think this is
> correct, isn't it?

I thought that the rule was to name the GPIO properties based on the name of 
the pin. I could be wrong though. Rob, what's your opinion ?

> >>>> +- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.
> >>> 
> >>> Shouldn't the enable and reset GPIOs be optional ?
> >> 
> >> I don't think so. The operations on the GPIOs are part of the power up
> >> sequence of the sensor so we must have control over them to execute the
> >> exact sequence.
> > 
> > Right, let's keep them mandatory. If we later have to make them optional
> > for a board that pulls one of those signals up (assuming this can work at
> > all) we'll revisit the bindings.
> 
> Ok.
> 
> >>>> +- vdddo-supply: Chip digital IO regulator.
> >>>> +- vdda-supply: Chip analog regulator.
> >>>> +- vddd-supply: Chip digital core regulator.
> >>>> +
> >>>> +The device node must contain one 'port' child node for its digital
> >>>> output
> >>>> +video port, in accordance with the video interface bindings defined in
> >>>> +Documentation/devicetree/bindings/media/video-interfaces.txt.
> >>>> +
> >>>> +Example:
> >>>> +
> >>>> +	&i2c1 {
> >>>> +		...
> >>>> +
> >>>> +		ov5645: ov5645@78 {
> >>>> +			compatible = "ovti,ov5645";
> >>>> +			reg = <0x78>;
> >>>> +
> >>>> +			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> >>>> +			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
> >>>> +			pinctrl-names = "default";
> >>>> +			pinctrl-0 = <&camera_rear_default>;
> >>>> +
> >>>> +			clocks = <&clks 200>;
> >>>> +			clock-names = "xclk";
> >>>> +			clock-frequency = <23880000>;
> >>>> +
> >>>> +			vdddo-supply = <&camera_dovdd_1v8>;
> >>>> +			vdda-supply = <&camera_avdd_2v8>;
> >>>> +			vddd-supply = <&camera_dvdd_1v2>;
> >>>> +
> >>>> +			port {
> >>>> +				ov5645_ep: endpoint {
> >>>> +					clock-lanes = <1>;
> >>>> +					data-lanes = <0 2>;
> >>>> +					remote-endpoint = <&csi0_ep>;
> >>>> +				};
> >>>> +			};
> >>>> +		};
> >>>> +	};
Rob Herring Oct. 26, 2016, 6:53 p.m. UTC | #6
On Wed, Oct 19, 2016 at 4:21 AM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Todor,
>
> On Wednesday 19 Oct 2016 12:14:55 Todor Tomov wrote:
>> On 10/19/2016 11:49 AM, Laurent Pinchart wrote:
>> > On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
>> >> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
>> >>> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
>> >>>> Add the document for ov5645 device tree binding.
>> >>>>
>> >>>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
>> >>>> ---
>> >>>>
>> >>>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++
>> >>>>  1 file changed, 52 insertions(+)
>> >>>>  create mode 100644
>> >>>>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
>> >>>>
>> >>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>> >>>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
>> >>>> 100644
>> >>>> index 0000000..bcf6dba
>> >>>> --- /dev/null
>> >>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>> >>>> @@ -0,0 +1,52 @@
>> >>>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
>> >>>> +
>> >>>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
>> >>>> sensor with
>> >>>> +an active array size of 2592H x 1944V. It is programmable through a
>> >>>> serial I2C
>> >>>> +interface.
>> >>>> +
>> >>>> +Required Properties:
>> >>>> +- compatible: Value should be "ovti,ov5645".
>> >>>> +- clocks: Reference to the xclk clock.
>> >>>> +- clock-names: Should be "xclk".
>> >>>> +- clock-frequency: Frequency of the xclk clock.
>> >>>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
>> >
>> > By the way, isn't the pin called pwdnb and isn't it active low ?
>>
>> Yes, the pin is called "pwdnb" and is active low (must be up for power to be
>> up). I have changed the name to "enable" as it is more generally used -
>> this change was suggested by Rob Herring. As the logic switches with this
>> change of the name I have stated it is active high which ends up in the
>> same condition (enable must be up for the power to be up). I think this is
>> correct, isn't it?
>
> I thought that the rule was to name the GPIO properties based on the name of
> the pin. I could be wrong though. Rob, what's your opinion ?

Generally, yes that is the rule. However, an enable (or powerdown
being the inverse) pin is so common that I think it makes sense to use
a common name. Then generic power sequencing code can power up devices
(in the simple cases at least).

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Todor Tomov Nov. 1, 2016, 8:24 a.m. UTC | #7
On 10/26/2016 09:53 PM, Rob Herring wrote:
> On Wed, Oct 19, 2016 at 4:21 AM, Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
>> Hi Todor,
>>
>> On Wednesday 19 Oct 2016 12:14:55 Todor Tomov wrote:
>>> On 10/19/2016 11:49 AM, Laurent Pinchart wrote:
>>>> On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
>>>>> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
>>>>>> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
>>>>>>> Add the document for ov5645 device tree binding.
>>>>>>>
>>>>>>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
>>>>>>> ---
>>>>>>>
>>>>>>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 ++++++++++++++
>>>>>>>  1 file changed, 52 insertions(+)
>>>>>>>  create mode 100644
>>>>>>>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>>>>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file mode
>>>>>>> 100644
>>>>>>> index 0000000..bcf6dba
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
>>>>>>> @@ -0,0 +1,52 @@
>>>>>>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
>>>>>>> +
>>>>>>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
>>>>>>> sensor with
>>>>>>> +an active array size of 2592H x 1944V. It is programmable through a
>>>>>>> serial I2C
>>>>>>> +interface.
>>>>>>> +
>>>>>>> +Required Properties:
>>>>>>> +- compatible: Value should be "ovti,ov5645".
>>>>>>> +- clocks: Reference to the xclk clock.
>>>>>>> +- clock-names: Should be "xclk".
>>>>>>> +- clock-frequency: Frequency of the xclk clock.
>>>>>>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
>>>>
>>>> By the way, isn't the pin called pwdnb and isn't it active low ?
>>>
>>> Yes, the pin is called "pwdnb" and is active low (must be up for power to be
>>> up). I have changed the name to "enable" as it is more generally used -
>>> this change was suggested by Rob Herring. As the logic switches with this
>>> change of the name I have stated it is active high which ends up in the
>>> same condition (enable must be up for the power to be up). I think this is
>>> correct, isn't it?
>>
>> I thought that the rule was to name the GPIO properties based on the name of
>> the pin. I could be wrong though. Rob, what's your opinion ?
> 
> Generally, yes that is the rule. However, an enable (or powerdown
> being the inverse) pin is so common that I think it makes sense to use
> a common name. Then generic power sequencing code can power up devices
> (in the simple cases at least).

Ok, so what can we decide about this case? I personally have a slight preference
for the name same as documentation. But I think most important is to follow the
rule if we have such a rule. If we don't have a single rule to follow every time
then it is not really important which one we will choose.

> 
> Rob
>
Laurent Pinchart Nov. 3, 2016, 12:06 a.m. UTC | #8
Hi Todor,

On Tuesday 01 Nov 2016 10:24:26 Todor Tomov wrote:
> On 10/26/2016 09:53 PM, Rob Herring wrote:
> > On Wed, Oct 19, 2016 at 4:21 AM, Laurent Pinchart wrote:
> >> On Wednesday 19 Oct 2016 12:14:55 Todor Tomov wrote:
> >>> On 10/19/2016 11:49 AM, Laurent Pinchart wrote:
> >>>> On Friday 14 Oct 2016 15:01:08 Todor Tomov wrote:
> >>>>> On 09/08/2016 03:22 PM, Laurent Pinchart wrote:
> >>>>>> On Thursday 08 Sep 2016 12:13:54 Todor Tomov wrote:
> >>>>>>> Add the document for ov5645 device tree binding.
> >>>>>>> 
> >>>>>>> Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
> >>>>>>> ---
> >>>>>>> 
> >>>>>>>  .../devicetree/bindings/media/i2c/ov5645.txt       | 52 +++++++++++
> >>>>>>>  1 file changed, 52 insertions(+)
> >>>>>>>  create mode 100644
> >>>>>>>  Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>>>>> 
> >>>>>>> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>>>>> b/Documentation/devicetree/bindings/media/i2c/ov5645.txt new file
> >>>>>>> mode
> >>>>>>> 100644
> >>>>>>> index 0000000..bcf6dba
> >>>>>>> --- /dev/null
> >>>>>>> +++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
> >>>>>>> @@ -0,0 +1,52 @@
> >>>>>>> +* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
> >>>>>>> +
> >>>>>>> +The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image
> >>>>>>> sensor with
> >>>>>>> +an active array size of 2592H x 1944V. It is programmable through a
> >>>>>>> serial I2C
> >>>>>>> +interface.
> >>>>>>> +
> >>>>>>> +Required Properties:
> >>>>>>> +- compatible: Value should be "ovti,ov5645".
> >>>>>>> +- clocks: Reference to the xclk clock.
> >>>>>>> +- clock-names: Should be "xclk".
> >>>>>>> +- clock-frequency: Frequency of the xclk clock.
> >>>>>>> +- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
> >>>> 
> >>>> By the way, isn't the pin called pwdnb and isn't it active low ?
> >>> 
> >>> Yes, the pin is called "pwdnb" and is active low (must be up for power
> >>> to be up). I have changed the name to "enable" as it is more generally
> >>> used - this change was suggested by Rob Herring. As the logic switches
> >>> with this change of the name I have stated it is active high which ends
> >>> up in the same condition (enable must be up for the power to be up). I
> >>> think this is correct, isn't it?
> >> 
> >> I thought that the rule was to name the GPIO properties based on the name
> >> of the pin. I could be wrong though. Rob, what's your opinion ?
> > 
> > Generally, yes that is the rule. However, an enable (or powerdown
> > being the inverse) pin is so common that I think it makes sense to use
> > a common name. Then generic power sequencing code can power up devices
> > (in the simple cases at least).
> 
> Ok, so what can we decide about this case? I personally have a slight
> preference for the name same as documentation. But I think most important
> is to follow the rule if we have such a rule. If we don't have a single
> rule to follow every time then it is not really important which one we will
> choose.

I'm fine with both solutions (and also have a slight preference for using the 
chip's pin name). If we decide to use "enable-gpios", the DT binding document 
should mention that the property corresponds to the chip's PWDNB pin.
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/ov5645.txt b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
new file mode 100644
index 0000000..bcf6dba
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ov5645.txt
@@ -0,0 +1,52 @@ 
+* Omnivision 1/4-Inch 5Mp CMOS Digital Image Sensor
+
+The Omnivision OV5645 is a 1/4-Inch CMOS active pixel digital image sensor with
+an active array size of 2592H x 1944V. It is programmable through a serial I2C
+interface.
+
+Required Properties:
+- compatible: Value should be "ovti,ov5645".
+- clocks: Reference to the xclk clock.
+- clock-names: Should be "xclk".
+- clock-frequency: Frequency of the xclk clock.
+- enable-gpios: Chip enable GPIO. Polarity is GPIO_ACTIVE_HIGH.
+- reset-gpios: Chip reset GPIO. Polarity is GPIO_ACTIVE_LOW.
+- vdddo-supply: Chip digital IO regulator.
+- vdda-supply: Chip analog regulator.
+- vddd-supply: Chip digital core regulator.
+
+The device node must contain one 'port' child node for its digital output
+video port, in accordance with the video interface bindings defined in
+Documentation/devicetree/bindings/media/video-interfaces.txt.
+
+Example:
+
+	&i2c1 {
+		...
+
+		ov5645: ov5645@78 {
+			compatible = "ovti,ov5645";
+			reg = <0x78>;
+
+			enable-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+			reset-gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&camera_rear_default>;
+
+			clocks = <&clks 200>;
+			clock-names = "xclk";
+			clock-frequency = <23880000>;
+
+			vdddo-supply = <&camera_dovdd_1v8>;
+			vdda-supply = <&camera_avdd_2v8>;
+			vddd-supply = <&camera_dvdd_1v2>;
+
+			port {
+				ov5645_ep: endpoint {
+					clock-lanes = <1>;
+					data-lanes = <0 2>;
+					remote-endpoint = <&csi0_ep>;
+				};
+			};
+		};
+	};