From: Stephen Warren <swarren@wwwdotorg.org>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>,
Linux Media Mailing List <linux-media@vger.kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Magnus Damm <magnus.damm@gmail.com>,
devicetree-discuss <devicetree-discuss@lists.ozlabs.org>,
linux-sh@vger.kernel.org,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Hans Verkuil <hverkuil@xs4all.nl>,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [RFC v5] V4L DT bindings
Date: Wed, 05 Sep 2012 23:23:18 +0000 [thread overview]
Message-ID: <5047DEE6.9020607@wwwdotorg.org> (raw)
In-Reply-To: <Pine.LNX.4.64.1209051030230.16676@axis700.grange>
On 09/05/2012 04:57 AM, Guennadi Liakhovetski wrote:
> Hi all
>
> Version 5 of this RFC is a result of a discussion of its version 4, which
> took place during the recent Linux Plumbers conference in San Diego.
> Changes are:
>
> (1) remove bus-width properties from device (bridge and client) top level.
> This has actually already been decided upon during our discussions with
> Sylwester, I just forgot to actually remove them, sorry.
>
> (2) links are now grouped under "ports." This should help better describe
> device connection topology by making clearer, which interfaces links are
> attached to. (help needed: in my notes I see "port" optional if only one
> port is present, but I seem to remember, that the final decision was -
> make ports compulsory for uniformity. Which one is true?)
I'd tend to make the port node compulsory.
A related question: What code is going to parse all the port/link
sub-nodes in a device? And, how does it know which sub-nodes are ports,
and which are something else entirely? Perhaps the algorithm is that all
port nodes must be named "port"?
If there were (optionally) no port node, I think the answer to that
question would be a lot more complex, hence why I advocate for it always
being there.
> (3) "videolink" is renamed to just "link."
>
> (4) "client" is renamed to "remote" and is now used on both sides of
> links.
>
> (5) clock-names in clock consumer nodes (e.g., camera sensors) should
> reflect clock input pin names from respective datasheets
>
> (6) also serial bus description should be placed under respective link
> nodes.
>
> (7) reference remote link DT nodes in "remote" properties, not to the
> parent.
>
> (8) use standard names for "SoC-external" (e.g., i2c) devices on their
> respective busses. "Sensor" has been proposed, maybe "camera" is a better
> match though.
>
> Thanks
> Guennadi
> ---
> Guennadi Liakhovetski, Ph.D.
> Freelance Open-Source Software Developer
> http://www.open-technology.de/
>
> // Describe an imaginary configuration: a CEU serving either a parallel ov7725
> // sensor, or a serial imx074 sensor, connected over a CSI-2 SoC interface
>
> ceu0: ceu@0xfe910000 {
> compatible = "renesas,sh-mobile-ceu";
> reg = <0xfe910000 0xa0>;
> interrupts = <0x880>;
>
> mclk: master_clock {
> compatible = "renesas,ceu-clock";
> #clock-cells = <1>;
> clock-frequency = <50000000>; /* max clock frequency */
> clock-output-names = "mclk";
> };
>
> ...
> port@0 {
Since there's only 1 port node here, you can drop the "@0" here.
> #address-cells = <1>;
> #size-cells = <0>;
>
> ov772x_1_1: link@1 {
This isn't a comment on the binding definition, but on the example
itself. The label names ("ov772x_1_1" here and "csi2_0" below) feel
backwards to me; I'd personally use label names that describe the object
being labelled, rather than the object that's linked to the node being
labelled. In other words, "ceu0_1" here, and "ov772x_1" at the far end
of this link. But, these are just arbitrary names, so you can name/label
everything whatever you want and it'll still work.
> reg = <1>; /* local pad # */
> remote = <&ceu0_1>; /* remote phandle and pad # */
> bus-width = <8>; /* used data lines */
> data-shift = <0>; /* lines 7:0 are used */
>
> /* If [hv]sync-active are missing, embedded bt.605 sync is used */
> hsync-active = <1>; /* active high */
> vsync-active = <1>; /* active high */
> pclk-sample = <1>; /* rising */
> };
>
> csi2_0: link@0 {
> reg = <0>;
> remote = <&ceu0_2>;
> immutable;
> };
> };
> };
>
> i2c0: i2c@0xfff20000 {
> ...
> ov772x_1: camera@0x21 {
> compatible = "omnivision,ov772x";
> reg = <0x21>;
> vddio-supply = <®ulator1>;
> vddcore-supply = <®ulator2>;
>
> clock-frequency = <20000000>;
> clocks = <&mclk 0>;
> clock-names = "xclk";
>
> ...
> port {
> /* With 1 link per port no need in addresses */
> ceu0_1: link@0 {
You can drop "@0" there too.
> bus-width = <8>;
> remote = <&ov772x_1_1>;
> hsync-active = <1>;
> hsync-active = <0>; /* who came up with an inverter here?... */
> pclk-sample = <1>;
> };
> };
> };
>
> imx074: camera@0x1a {
> compatible = "sony,imx074";
> reg = <0x1a>;
> vddio-supply = <®ulator1>;
> vddcore-supply = <®ulator2>;
>
> clock-frequency = <30000000>; /* shared clock with ov772x_1 */
> clocks = <&mclk 0>;
> clock-names = "sysclk"; /* assuming this is the name in the datasheet */
> ...
> port {
> csi2_1: link@0 {
You can drop "@0" there too.
> clock-lanes = <0>;
> data-lanes = <1>, <2>;
> remote = <&imx074_1>;
> };
> };
> };
> ...
> };
>
> csi2: csi2@0xffc90000 {
> compatible = "renesas,sh-mobile-csi2";
> reg = <0xffc90000 0x1000>;
> interrupts = <0x17a0>;
> #address-cells = <1>;
> #size-cells = <0>;
> ...
> port {
> compatible = "renesas,csi2c"; /* one of CSI2I and CSI2C */
> reg = <1>; /* CSI-2 PHY #1 of 2: PHY_S, PHY_M has port address 0, is unused */
>
> imx074_1: link@1 {
You can drop "@1" there too.
> client = <&imx074 0>;
> clock-lanes = <0>;
> data-lanes = <2>, <1>;
> remote = <&csi2_1>;
> };
> };
> port {
There are two nodes named "port" here; I think they should be "port@1"
and "port@2" based on the reg properties.
> reg = <2>; /* port 2: link to the CEU */
> ceu0_2: link@0 {
You can drop "@0" there too.
> immutable;
> remote = <&csi2_0>;
> };
> };
> };
Aside from those minor comments, I think the overall structure of the
bindings looks good.
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren@wwwdotorg.org>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>,
Linux Media Mailing List <linux-media@vger.kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Magnus Damm <magnus.damm@gmail.com>,
devicetree-discuss <devicetree-discuss@lists.ozlabs.org>,
linux-sh@vger.kernel.org,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Hans Verkuil <hverkuil@xs4all.nl>,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [RFC v5] V4L DT bindings
Date: Wed, 05 Sep 2012 17:23:18 -0600 [thread overview]
Message-ID: <5047DEE6.9020607@wwwdotorg.org> (raw)
In-Reply-To: <Pine.LNX.4.64.1209051030230.16676@axis700.grange>
On 09/05/2012 04:57 AM, Guennadi Liakhovetski wrote:
> Hi all
>
> Version 5 of this RFC is a result of a discussion of its version 4, which
> took place during the recent Linux Plumbers conference in San Diego.
> Changes are:
>
> (1) remove bus-width properties from device (bridge and client) top level.
> This has actually already been decided upon during our discussions with
> Sylwester, I just forgot to actually remove them, sorry.
>
> (2) links are now grouped under "ports." This should help better describe
> device connection topology by making clearer, which interfaces links are
> attached to. (help needed: in my notes I see "port" optional if only one
> port is present, but I seem to remember, that the final decision was -
> make ports compulsory for uniformity. Which one is true?)
I'd tend to make the port node compulsory.
A related question: What code is going to parse all the port/link
sub-nodes in a device? And, how does it know which sub-nodes are ports,
and which are something else entirely? Perhaps the algorithm is that all
port nodes must be named "port"?
If there were (optionally) no port node, I think the answer to that
question would be a lot more complex, hence why I advocate for it always
being there.
> (3) "videolink" is renamed to just "link."
>
> (4) "client" is renamed to "remote" and is now used on both sides of
> links.
>
> (5) clock-names in clock consumer nodes (e.g., camera sensors) should
> reflect clock input pin names from respective datasheets
>
> (6) also serial bus description should be placed under respective link
> nodes.
>
> (7) reference remote link DT nodes in "remote" properties, not to the
> parent.
>
> (8) use standard names for "SoC-external" (e.g., i2c) devices on their
> respective busses. "Sensor" has been proposed, maybe "camera" is a better
> match though.
>
> Thanks
> Guennadi
> ---
> Guennadi Liakhovetski, Ph.D.
> Freelance Open-Source Software Developer
> http://www.open-technology.de/
>
> // Describe an imaginary configuration: a CEU serving either a parallel ov7725
> // sensor, or a serial imx074 sensor, connected over a CSI-2 SoC interface
>
> ceu0: ceu@0xfe910000 {
> compatible = "renesas,sh-mobile-ceu";
> reg = <0xfe910000 0xa0>;
> interrupts = <0x880>;
>
> mclk: master_clock {
> compatible = "renesas,ceu-clock";
> #clock-cells = <1>;
> clock-frequency = <50000000>; /* max clock frequency */
> clock-output-names = "mclk";
> };
>
> ...
> port@0 {
Since there's only 1 port node here, you can drop the "@0" here.
> #address-cells = <1>;
> #size-cells = <0>;
>
> ov772x_1_1: link@1 {
This isn't a comment on the binding definition, but on the example
itself. The label names ("ov772x_1_1" here and "csi2_0" below) feel
backwards to me; I'd personally use label names that describe the object
being labelled, rather than the object that's linked to the node being
labelled. In other words, "ceu0_1" here, and "ov772x_1" at the far end
of this link. But, these are just arbitrary names, so you can name/label
everything whatever you want and it'll still work.
> reg = <1>; /* local pad # */
> remote = <&ceu0_1>; /* remote phandle and pad # */
> bus-width = <8>; /* used data lines */
> data-shift = <0>; /* lines 7:0 are used */
>
> /* If [hv]sync-active are missing, embedded bt.605 sync is used */
> hsync-active = <1>; /* active high */
> vsync-active = <1>; /* active high */
> pclk-sample = <1>; /* rising */
> };
>
> csi2_0: link@0 {
> reg = <0>;
> remote = <&ceu0_2>;
> immutable;
> };
> };
> };
>
> i2c0: i2c@0xfff20000 {
> ...
> ov772x_1: camera@0x21 {
> compatible = "omnivision,ov772x";
> reg = <0x21>;
> vddio-supply = <®ulator1>;
> vddcore-supply = <®ulator2>;
>
> clock-frequency = <20000000>;
> clocks = <&mclk 0>;
> clock-names = "xclk";
>
> ...
> port {
> /* With 1 link per port no need in addresses */
> ceu0_1: link@0 {
You can drop "@0" there too.
> bus-width = <8>;
> remote = <&ov772x_1_1>;
> hsync-active = <1>;
> hsync-active = <0>; /* who came up with an inverter here?... */
> pclk-sample = <1>;
> };
> };
> };
>
> imx074: camera@0x1a {
> compatible = "sony,imx074";
> reg = <0x1a>;
> vddio-supply = <®ulator1>;
> vddcore-supply = <®ulator2>;
>
> clock-frequency = <30000000>; /* shared clock with ov772x_1 */
> clocks = <&mclk 0>;
> clock-names = "sysclk"; /* assuming this is the name in the datasheet */
> ...
> port {
> csi2_1: link@0 {
You can drop "@0" there too.
> clock-lanes = <0>;
> data-lanes = <1>, <2>;
> remote = <&imx074_1>;
> };
> };
> };
> ...
> };
>
> csi2: csi2@0xffc90000 {
> compatible = "renesas,sh-mobile-csi2";
> reg = <0xffc90000 0x1000>;
> interrupts = <0x17a0>;
> #address-cells = <1>;
> #size-cells = <0>;
> ...
> port {
> compatible = "renesas,csi2c"; /* one of CSI2I and CSI2C */
> reg = <1>; /* CSI-2 PHY #1 of 2: PHY_S, PHY_M has port address 0, is unused */
>
> imx074_1: link@1 {
You can drop "@1" there too.
> client = <&imx074 0>;
> clock-lanes = <0>;
> data-lanes = <2>, <1>;
> remote = <&csi2_1>;
> };
> };
> port {
There are two nodes named "port" here; I think they should be "port@1"
and "port@2" based on the reg properties.
> reg = <2>; /* port 2: link to the CEU */
> ceu0_2: link@0 {
You can drop "@0" there too.
> immutable;
> remote = <&csi2_0>;
> };
> };
> };
Aside from those minor comments, I think the overall structure of the
bindings looks good.
next prev parent reply other threads:[~2012-09-05 23:23 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-24 23:27 [RFC v4] V4L DT bindings Guennadi Liakhovetski
2012-08-24 23:27 ` Guennadi Liakhovetski
2012-08-30 15:19 ` Nicolas THERY
2012-08-30 15:19 ` Nicolas THERY
2012-08-30 20:21 ` Sylwester Nawrocki
2012-08-30 20:21 ` Sylwester Nawrocki
2012-08-30 20:58 ` V4L DT @ plumbers (was Re: [RFC v4] V4L DT bindings) Guennadi Liakhovetski
2012-08-30 20:58 ` Guennadi Liakhovetski
2012-08-30 22:30 ` Laurent Pinchart
2012-08-30 22:30 ` Laurent Pinchart
2012-08-30 22:39 ` Guennadi Liakhovetski
2012-08-30 22:39 ` Guennadi Liakhovetski
2012-08-30 22:39 ` Guennadi Liakhovetski
2012-08-31 0:59 ` Hans Verkuil
2012-08-31 0:59 ` Hans Verkuil
[not found] ` <le0u47eut2t0gh4pxyuu5vse.1346374764563-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2012-08-31 16:05 ` Guennadi Liakhovetski
2012-08-31 16:05 ` Guennadi Liakhovetski
2012-08-31 16:05 ` Guennadi Liakhovetski
2012-08-31 6:46 ` [RFC v4] V4L DT bindings Nicolas THERY
2012-08-31 6:46 ` Nicolas THERY
2012-08-31 19:38 ` Sylwester Nawrocki
2012-08-31 19:38 ` Sylwester Nawrocki
2012-08-31 9:11 ` Nicolas THERY
2012-08-31 9:11 ` Nicolas THERY
2012-09-05 10:57 ` [RFC v5] " Guennadi Liakhovetski
2012-09-05 10:57 ` Guennadi Liakhovetski
2012-09-05 23:23 ` Stephen Warren [this message]
2012-09-05 23:23 ` Stephen Warren
2012-09-11 14:02 ` Guennadi Liakhovetski
2012-09-11 14:02 ` Guennadi Liakhovetski
2012-09-11 14:02 ` Guennadi Liakhovetski
2012-09-11 15:22 ` Stephen Warren
2012-09-11 15:22 ` Stephen Warren
2012-09-11 15:22 ` Stephen Warren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5047DEE6.9020607@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=g.liakhovetski@gmx.de \
--cc=hverkuil@xs4all.nl \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=magnus.damm@gmail.com \
--cc=s.nawrocki@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.