devicetree-compiler.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Frank Rowand
	<frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Grant Likely
	<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
	David Gibson
	<david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>,
	Tom Rini <trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>,
	Franklin S Cooper Jr <fcooper-l0cyMroinI0@public.gmane.org>,
	Matt Porter <mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>,
	Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Phil Elwell
	<philip.j.elwell-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Geert Uytterhoeven
	<geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>,
	Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>,
	Devicetree Compiler
	<devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [RFC] Introducing yamldt, a yaml to dtb compiler
Date: Thu, 27 Jul 2017 21:58:51 +0300	[thread overview]
Message-ID: <1501181931.1055.18.camel@hp800z> (raw)
In-Reply-To: <CAL_Jsq+eFTUsMNQgSHGc5ahE4LE42q=6TR6c3qDvGYAUG=fd=Q@mail.gmail.com>

On Thu, 2017-07-27 at 13:09 -0500, Rob Herring wrote:
> On Thu, Jul 27, 2017 at 11:49 AM, Pantelis Antoniou
> <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org> wrote:
> > Hi all,
> >
> > This is a project I've been working on lately and it's finally in a
> > usuable form.
> >
> > I'm introducing yamldt.
> >
> > A YAML to DT blob generator/compiler, utilizing a YAML schema that is
> > functionaly equivalent to DTS and supports all DTS features.
> 
> What problem are you trying to solve?
> 

I am demonstrating that the DTS source format is not the only way to
describe hardware and generate a DTB that is functionally equivalent.

I feel that the reliance on DTS has been holding progress back in
expressing modern hardware and having a tool that generates DTB as well
will allow me to experiment in ways that things like overlays and
portable overlays can be defined.

> > yamldl parses a device tree description (source) file in YAML format and
> > outputs a (bit-exact if the -C option is used) device tree blob.
> >
> > A DT aware YAML schema is a good fit as a DTS syntax alternative.
> >
> > YAML is a human-readable data serialization language, and is expressive
> > enough to cover all DTS source features.
> >
> > Simple YAML files are just key value pairs that are very easy to parse,
> > even without using a formal YAML parser. For instance YAML in restricted
> > environments may simple be appending a few lines of text in a given YAML
> > file.
> >
> > The parsers of YAML are very mature, as it has been released in 2001. It
> > is in wide-spread use and schema validation tools are available. YAML
> > support is available for every major programming language.
> >
> > Data in YAML can easily be converted to/form other format that a
> > particular tool that we may use in the future understands.
> >
> > More importantly YAML offers (an optional) type information for each
> > data, which is IMHO crucial for thorough validation and checking against
> > device tree bindings (when they will be converted to a machine readable
> > format, preferably YAML).
> 
> We have type information in dts. We can distinguish numbers, strings,
> phandles, etc. The problem is we loose that information in the DTB and
> this does nothing to help that problem.
> 

This is not enough information IMO. We not only need those scalar types
but type information about references (what phandles really are) and
use them to enforce type checking and promotion.

And of course DTS throws away all type information away and has no
way to be extended. In YAML this is a solved problem. 

> >
> > For more take a look here.
> >
> > https://github.com/pantoniou/yamldt
> 
> Looking at the example, I find the syntax harder to follow. Parsing
> what are node names vs labels is one. Relying on indentation for tree
> hierarchy is another.
> 

This is really debatable. You can use curly braces if you don't like the
indentation.

I.e.

foo:
  bar: true

Can be written as
foo: { bar: true }

YAML is a JSON superset which uses the curly braces as a map separator.

And frankly there are about x1000 more people aware of YAML syntax than
DTS syntax.

> Does C preprocessing of the YAML files work? I'm surprised if it does.
> 

I think you should check the code out and see for yourself.

The complete set of C preprocessing of DTS is available, and works
perfectly AFAIKT.

> >
> > I am eagerly awaiting for your comments.
> 
> I could see some uses here to extract data from dts files more easily.
> For example, to extract all compatible strings for some set of dts
> files. I did this by hacking dtc to dump them. Or as a starting point
> to create YAML based DT binding schema. I wonder how Grant is coming
> along with that.
> 
> Rob


--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2017-07-27 18:58 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-27 16:49 [RFC] Introducing yamldt, a yaml to dtb compiler Pantelis Antoniou
2017-07-27 18:09 ` Rob Herring
2017-07-27 18:58   ` Pantelis Antoniou [this message]
2017-07-27 20:22     ` Frank Rowand
     [not found]       ` <597A4B80.7000106-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-27 21:46         ` Pantelis Antoniou
2017-07-27 23:00           ` Rob Herring
     [not found]             ` <CAL_Jsq+NBEXyOmRx3Ar0OTpyaLeT0hEKw45R0PrVEdmOcd9czw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-28  0:51               ` Tom Rini
2017-07-28  2:12                 ` Rob Herring
     [not found]                   ` <CAL_Jsq+eJNG66D22bNButg6=jj9WQ7Nw4PpxLsPBmGxN9KBnaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-28 11:23                     ` Tom Rini
2017-07-28 12:23                     ` Pantelis Antoniou
2017-07-28 15:07                       ` Rob Herring
     [not found]                         ` <CAL_JsqLRDy_uG1eeNsjbhs29L5DF-4z2Oa_npGrYVgoMiR=YpQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-28 16:11                           ` Pantelis Antoniou
2017-07-28 21:16                             ` Rob Herring
2017-07-31 13:11                           ` David Gibson
     [not found]                             ` <20170731131118.GJ2652-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-31 17:15                               ` Rob Herring
     [not found]                                 ` <CAL_Jsq+HjOpaLcVJzS-mskzHLTS+J=WHdqCVmpc_qJ7da2faHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-02 14:30                                   ` David Gibson
     [not found]                                     ` <20170802143025.GD394-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-03 22:53                                       ` Rob Herring
2017-07-31  5:53                     ` David Gibson
     [not found]                       ` <20170731055316.GG2652-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-31  8:38                         ` Oliver
2017-08-02 15:09                 ` David Gibson
     [not found]                   ` <20170802150933.GG394-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-02 22:04                     ` Grant Likely
     [not found]                       ` <CACxGe6um3TC3URKa8NWbbQT-gc=AV5jgTxbQ3pYnSp4Xmu_Mfg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-03  5:49                         ` David Gibson
     [not found]                           ` <20170803054914.GL394-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-10 14:21                             ` Grant Likely
     [not found]                               ` <CACxGe6s3-1rK1NMm0B8fKP+XfxphcHj+pBU7=FxpSexXMWyeFQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-10 22:05                                 ` Pantelis Antoniou
2017-08-11 14:45                                 ` Pantelis Antoniou
2017-08-14 13:41                                 ` David Gibson
     [not found]                                   ` <20170814134150.GL3452-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-10-22 18:48                                     ` Grant Likely
2017-07-28 11:26               ` Pantelis Antoniou
2017-07-31  6:52                 ` David Gibson
2017-07-27 23:13           ` Frank Rowand
2017-08-03  6:13           ` David Gibson
2017-07-28  1:00         ` Tom Rini
2017-07-31  5:40 ` David Gibson
     [not found]   ` <20170731054010.GF2652-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-31 20:36     ` Pantelis Antoniou
2017-08-02 14:53       ` David Gibson
     [not found]         ` <20170802145312.GF394-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-02 15:17           ` Pantelis Antoniou
2017-08-02 16:11             ` David Gibson
     [not found]               ` <20170802161113.GH394-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-02 17:05                 ` Pantelis Antoniou

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=1501181931.1055.18.camel@hp800z \
    --to=pantelis.antoniou-owpks81ov/fwk0htik3j/w@public.gmane.org \
    --cc=david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org \
    --cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=fcooper-l0cyMroinI0@public.gmane.org \
    --cc=frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org \
    --cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
    --cc=marex-ynQEQJNshbs@public.gmane.org \
    --cc=mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org \
    --cc=philip.j.elwell-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.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).