From: Dave.Martin@arm.com (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: Defining schemas for Device Tree
Date: Mon, 29 Jul 2013 17:49:05 +0100 [thread overview]
Message-ID: <20130729164905.GB2280@localhost.localdomain> (raw)
In-Reply-To: <20130729150124.GS29916@titan.lakedaemon.net>
On Mon, Jul 29, 2013 at 11:01:24AM -0400, Jason Cooper wrote:
> On Mon, Jul 29, 2013 at 02:21:52AM +0200, Tomasz Figa wrote:
> > Hi,
> >
> > As promised I am starting a discussion about Device Tree schema. Let's
> > first shortly introduce the problem.
> >
> > Device Tree is a text-based data structure used to describe hardware.
>
> Just a clarifying point here: I think it would be more accurate to say
> "devicetree describes how hardware on a given board is *configured*".
> The driver learns from the compatible property which IP block it is
> dealing with and handles the necessary quirks. How that IP block is
> attached, and interfaced with is DT territory, that it needs an extra
> 10ns delay (outside of spec) is something the driver should know and
> work around.
>
> > Its
> > main point is separation from kernel code, which has a lot of benefits,
> > but, at the moment, also a huge drawback - there is no verification of
> > device tree sources against defined bindings. All the dtc compiler does
> > currently are syntax checks - no semantic analysis is performed (except
> > some really basic things). What this means is that anybody can put
> > anything in their device tree and end up with the dts compiling fine only
> > to find out that something is wrong at boot time.
> >
> > Currently, device tree bindings are described in plain text documentation
> > files, which can not be considered a formal way of binding description.
> > While such documentation provides information for developers/users that
> > need to work with particular bindings, it can not be easily used as input
> > for validation of device tree sources. This means that we need to define a
> > more formal way of binding description, in other words - Device Tree
> > schema.
>
> +1
>
> > To find a solution for this problem, we must first answer several
> > questions to determine a set of requirements we have to meet.
> >
> > a) What is a device tree binding?
> >
> > For our purposes, I will define a binding as internal format of some
> > device tree node, which can be matched using of_find_matching_node(). In
> > other words, key for a binding would be node name and/or value of
> > compatible property and/or node type. Value for a binding would be a list
> > of properties with their formats and/or subnodes with their bindings.
> >
> > b) What information should be specified in schemas? What level of
> > granularity is required?
>
> One item I don't see in this list is node ordering. There's been some
> discussion lately on deferred probing (re boot times). If we were to
> intentionally declare that DT are parsed in the order written, then a
> lot of deferred probes could be avoided by moving eg the pinctrl node to
> near the top of the tree.
>
> This doesn't impact buses as much, since the nodes needing the bus are
> already children. However, anything accessed via phandles: pins,
> clocks, regulators, etc could benefit from declaring and enforcing this.
> Eg having the dtc warn when a phandle is used before it's corresponding
> node is declared.
>
> Not critical though, just a thought.
I don't think that siblings have any defined order in DT. If reading a
device tree, there's no guarantee you get nodes or properties out in the
same order as the original .dts file.
Provided child/parent relationships are maintained and the set of nodes
and values is the same, I think completely rearranging a .dts file does
not change its meaning.
"depends-on" relationships mostly have to come from the semantics of
the bindings themselves: for example, if a device is connected to some
clocks and regulators, the kernel may need to probe those first.
Cheers
---Dave
next prev parent reply other threads:[~2013-07-29 16:49 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-29 0:21 Defining schemas for Device Tree Tomasz Figa
2013-07-29 1:30 ` jonsmirl at gmail.com
2013-07-29 8:27 ` David Woodhouse
2013-07-29 8:40 ` Tomasz Figa
2013-07-29 15:01 ` Jason Cooper
2013-07-29 16:49 ` Dave Martin [this message]
2013-07-29 17:11 ` Jason Gunthorpe
2013-07-29 17:23 ` [Ksummit-2013-discuss] " Jason Cooper
2013-07-29 17:29 ` Jason Gunthorpe
2013-07-29 19:48 ` Mark Brown
2013-07-29 22:29 ` David Gibson
2013-07-29 22:48 ` Jason Cooper
2013-07-29 23:45 ` David Gibson
2013-07-30 12:12 ` Jason Cooper
2013-07-30 0:41 ` David Lang
2013-07-30 0:49 ` jonsmirl at gmail.com
2013-07-30 1:50 ` David Gibson
2013-07-30 12:17 ` Jason Cooper
2013-07-29 18:15 ` Jason Gunthorpe
2013-07-29 22:26 ` Tomasz Figa
2013-07-29 21:47 ` Stephen Warren
2013-07-29 22:20 ` Tomasz Figa
2013-07-30 0:02 ` Stephen Warren
2013-07-29 22:23 ` jonsmirl at gmail.com
2013-07-29 22:45 ` Tomasz Figa
2013-07-30 0:30 ` jonsmirl at gmail.com
2013-07-30 10:25 ` Mark Brown
2013-07-30 13:14 ` jonsmirl at gmail.com
2013-07-30 17:19 ` Stephen Warren
2013-07-30 17:29 ` jonsmirl at gmail.com
2013-07-30 17:34 ` Stephen Warren
2013-07-30 17:45 ` jonsmirl at gmail.com
2013-07-30 17:49 ` Stephen Warren
2013-07-30 18:03 ` jonsmirl at gmail.com
2013-07-30 18:04 ` jonsmirl at gmail.com
2013-07-30 18:25 ` Stephen Warren
2013-07-30 18:28 ` jonsmirl at gmail.com
2013-07-31 7:01 ` Tony Lindgren
2013-08-01 20:04 ` Matt Sealey
2013-07-30 18:26 ` jonsmirl at gmail.com
2013-07-30 20:57 ` Mark Brown
2013-07-30 22:19 ` jonsmirl at gmail.com
2013-07-30 23:03 ` Mark Brown
2013-07-30 23:23 ` jonsmirl at gmail.com
2013-07-31 11:34 ` Mark Brown
2013-07-31 12:01 ` jonsmirl at gmail.com
2013-07-31 12:21 ` Tomasz Figa
2013-07-31 16:29 ` [Ksummit-2013-discuss] " Thomas Petazzoni
2013-07-31 16:41 ` Sascha Hauer
2013-07-31 16:59 ` Dave Martin
2013-07-31 18:59 ` Mark Brown
2013-08-01 14:29 ` Dave Martin
2013-07-31 19:57 ` Stephen Warren
2013-07-31 20:47 ` Stephen Warren
2013-07-31 23:04 ` Tomasz Figa
2013-07-30 22:16 ` Tomasz Figa
2013-07-30 22:26 ` Stephen Warren
2013-07-30 22:27 ` jonsmirl at gmail.com
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=20130729164905.GB2280@localhost.localdomain \
--to=dave.martin@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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).