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.
next prev parent reply other threads:[~2012-09-05 23:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-24 23:27 [RFC v4] V4L DT bindings Guennadi Liakhovetski
2012-08-30 15:19 ` Nicolas THERY
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 22:30 ` Laurent Pinchart
2012-08-30 22:39 ` Guennadi Liakhovetski
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 6:46 ` [RFC v4] V4L DT bindings Nicolas THERY
2012-08-31 19:38 ` Sylwester Nawrocki
2012-08-31 9:11 ` Nicolas THERY
2012-09-05 10:57 ` [RFC v5] " Guennadi Liakhovetski
2012-09-05 23:23 ` Stephen Warren [this message]
2012-09-11 14:02 ` Guennadi Liakhovetski
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).