devicetree-spec.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Matt Porter <mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
Cc: Devicetree List
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Devicetree Spec List
	<devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Grant Likely
	<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Pantelis Antoniou
	<pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>,
	Behan Webster
	<behanw-k/hB3zQhLwledRVtV/plodBPR1lH4CV8@public.gmane.org>
Subject: Re: [RFC PATCH 0/5] DT binding documents using text markup
Date: Sun, 30 Aug 2015 15:04:20 -0700	[thread overview]
Message-ID: <55E37DE4.4090503@gmail.com> (raw)
In-Reply-To: <1440739433-6799-1-git-send-email-mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>

On 8/27/2015 10:23 PM, Matt Porter wrote:
> During the Device Tree microconference at Linux Plumbers 2015, we had
> a short discussion about how to improve DT Binding Documentation. A
> number of issues were raised (again, as these things have been
> discussed in the past) including:
> 
> 	* Inconsistency between binding documents due to prose text
> 	  format.
> 	* Inability to reliably machine read bindings for mass update
>           or search.
>         * Bit rot of bindings as new conventions are agreed upon but
> 	  only new bindings are changed.
> 
> Grant Likely probably summed up the issue best with "...as long as
> bindings are human readable, we'll have issues...". The context
> of that comment was, of course, regarding our current documents
> written in very inconsistent prose style. When the topic of needing
> the bindings in a rigid format was raised, there was general head
> nodding that this was needed. It was noted that this has been
> discussed many times before and nothing has been done.
> 
> My proposed solution to the problem is to convert all DT bindings
> a rigid text markup format. In choosing a text markup language my
> requirements were:
> 
> 	1) Human readable
> 	2) Well documented
> 	3) Easy to translate to other data formats
> 	4) Well supported by tools and libraries

Thanks for taking this on!  The proposal looks like a great start.
The requirements look good.


> After looking at a number of markup options, YAML stood out as the
> one that meets all of these requirements. The YAML syntax is adopted
> in many projects specifically because of the high level of readability.
> A comprehensive spec is at http://www.yaml.org/spec/1.2/spec.html.
> There's a number of tools to convert between YAML and other popular
> data formats such as JSON and XML. XML was cited by Behan Webster
> during the microconference as an important data format as the type
> of developers that may produce comprehensive DTS Binding validation
> tools will want to use XML. Every major scripting language has a
> high level binding to the low level libyaml C library to facilitate
> handling of YAML data files.
> 
> One caveat with YAML is it does not tolerate tabs. Yes, I said it.
> No tabs! This can be managed with proper editor modes and also with
> helper scripts to strip tabs to aid in people passing planned
> checkpatch.pl checks that would run YAML DT Binding specific tag
> validators for new bindings.

I'm just a casual user of some markup languages, nowhere near knowledgeable
or an expert, so will be listening to reasoned opinions on the choice of
YAML.  But a quick look at the spec you referenced and the examples you
provided gives me some confidence that YAML will work.


> The scope of the initial YAML DT Binding format was specifically
> limited to supporting *only* the content we have in bindings today.
> The idea here is to propose and agree on something that will take
> us just a few steps in the right direction. If we move *all* current

Yes, this is a great approach so we can start making reasonable progress.
(Caveat below.)

> binding content to a machine parseable format, additional features
> can be added with more automation and scripting. As it stands today,
> because of the inconsistency of the wording of the files, we can't
> add a lot of new features to the content until we convert what we
> have today into a standard format.
> 
> With that said, it should be noted that some new features such as
> "type" tags to indicate cell types could be added to support
> additional DTS validation beyond what the current content supports.
> Another possibility is adding "range" type information to validate
> the legal values for a cell.

The caveat: I think we should look at some obvious features (such as
"type" that you mention) to make sure that YAML and the chosen
structuring will easily and effectively support the features.

Thinking about how some features might be implemented led to comments
that I will make in replies to the other patches.

I agree that we should not attempt to add the additional information
enabled by the new features if the information is not in the present
bindings.  Adding the new information in a subsequent pass seems to be
a good strategy.

> 
> This series is broken up into three major parts:
> 
> 1) The documentation defining the YAML DT binding format
> 2) A skeleton device binding example illustrating use of this format
> 3) Some real binding conversions (eeprom.txt, phy-bindings.txt, and
>    ti-phy.txt
> 
> As a proof of concept of what can be done with a proper machine
> readable DT binding source file, there's a simple markdown document
> generator at https://github.com/konsulko/dtgendoc. Also, to see
> actual output from the generator, the generated markdown from those
> bindings is viewable at https://github.com/konsulko/dtgendoc/wiki
> 
> There's a lot of other possibilities for validation tools using
> only the data we have today in the bindings. In addition, Frank
> Rowand covered some DT debug techniques that would benefit from
> the binding documentation being 100% reliably searchable.
> 
> I found it useful to see a side-by-side view of a converted doc
> versus the original content, so here's a screenshot of eeprom.txt
> vs. eeprom.yaml:
> https://github.com/konsulko/dtgendoc/wiki#eepromtxt-vs-eepromyaml

This binding is your patch 3, but the side by side example you provide
makes it much easier to follow along, so I'll comment here.

Part of the information about compatible got lost in the conversion.
The part that is lost is:

   If there is no specific driver for <manufacturer>, a generic
   driver based on <type> is selected.

I will discuss this a little more in response to patch 1, where I will
ask whether compatible should be treated differently than other
properties.  So maybe any further discussion of this should be in
reply to that email.


> When we decide on a text markup format that is acceptable, then the
> next step is to convert all the bindings. That process would start
> with the complete set of generic bindings as they will be referenced
> by the actual device bindings.
> 
> If the RFC wasn't explicit enough...comments welcome.
> 
> -Matt
> 
> Matt Porter (5):
>   Documentation: dt-bindings: add documentation on new DT binding format
>   Documentation: dt-bindings: add example DT binding document
>   Documentation: dt-bindings: add YAML eeprom binding
>   Documentation: dt-bindings: phy: add YAML generic PHY binding
>   Documentation: dt-bindings: phy: add YAML TI PHY binding
> 
>  .../devicetree/bindings/dt-binding-format.txt      | 106 +++++++++++++
>  Documentation/devicetree/bindings/eeprom.yaml      |  44 ++++++
>  .../devicetree/bindings/phy/phy-bindings.yaml      |  89 +++++++++++
>  Documentation/devicetree/bindings/phy/ti-phy.yaml  | 166 +++++++++++++++++++++
>  Documentation/devicetree/bindings/skeleton.yaml    |  98 ++++++++++++
>  5 files changed, 503 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/dt-binding-format.txt
>  create mode 100644 Documentation/devicetree/bindings/eeprom.yaml
>  create mode 100644 Documentation/devicetree/bindings/phy/phy-bindings.yaml
>  create mode 100644 Documentation/devicetree/bindings/phy/ti-phy.yaml
>  create mode 100644 Documentation/devicetree/bindings/skeleton.yaml
> 

  parent reply	other threads:[~2015-08-30 22:04 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-28  5:23 [RFC PATCH 0/5] DT binding documents using text markup Matt Porter
     [not found] ` <1440739433-6799-1-git-send-email-mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-08-28  5:23   ` [RFC PATCH 1/5] Documentation: dt-bindings: add documentation on new DT binding format Matt Porter
     [not found]     ` <1440739433-6799-2-git-send-email-mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-08-30 22:04       ` Frank Rowand
     [not found]         ` <55E37DF1.3080102-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-08 17:38           ` Matt Porter
2015-09-01 16:59       ` Tim Bird
     [not found]         ` <CA+bK7J76Z6H4gh-UXxMWqUYrdRx1GYKFkAAtDUszpT_8k=RCQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-08  7:55           ` David Gibson
2015-09-22  4:14           ` Matt Porter
2015-09-08  7:36       ` David Gibson
2015-08-28  5:23   ` [RFC PATCH 2/5] Documentation: dt-bindings: add example DT binding document Matt Porter
     [not found]     ` <1440739433-6799-3-git-send-email-mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-08-28 14:53       ` Rob Herring
     [not found]         ` <CAL_Jsq+FE4MCCfZC5hDhQBmM1gHibY82S9a8PC1GwsnWsPNxkg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-28 14:57           ` Pantelis Antoniou
2015-08-28 17:49           ` Matt Porter
2015-08-28 18:55             ` Rob Herring
     [not found]               ` <CAL_JsqJy21yBGe161MrTEC1kL4UD=h+skH=mPm-vjwZ7yEHoUA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-30 22:18                 ` Frank Rowand
     [not found]                   ` <55E3812B.2090105-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-08 14:56                     ` Matt Porter
2015-09-01 17:30                 ` Matt Porter
2015-09-01 17:35           ` Tim Bird
     [not found]             ` <CA+bK7J4x2vY-tzUFWjM9KFMtvE+qW6jzmz=ZxWU9L8Mpe8Lduw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-02  8:45               ` Nicolas Ferre
     [not found]                 ` <55E6B719.6080203-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2015-09-08 15:06                   ` Matt Porter
2015-09-08 15:01               ` Matt Porter
2015-09-10  7:08           ` David Gibson
2015-09-11  4:46             ` Rob Herring
     [not found]               ` <55F25C95.3010104-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2015-09-14  8:15                 ` David Gibson
2015-09-22  4:06             ` Matt Porter
2015-08-28  5:23   ` [RFC PATCH 3/5] Documentation: dt-bindings: add YAML eeprom binding Matt Porter
2015-08-28  5:23   ` [RFC PATCH 4/5] Documentation: dt-bindings: phy: add YAML generic PHY binding Matt Porter
2015-08-28  5:23   ` [RFC PATCH 5/5] Documentation: dt-bindings: phy: add YAML TI " Matt Porter
     [not found]     ` <1440739433-6799-6-git-send-email-mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-09-01 17:42       ` Tim Bird
     [not found]         ` <CA+bK7J5jz0wxgA-0jY4LFUWWoTk4YzGaGSQZsdF83BnomoBx6w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-08 13:47           ` Matt Porter
2015-08-28 14:26   ` [RFC PATCH 0/5] DT binding documents using text markup Rob Herring
     [not found]     ` <CAL_Jsq+qCJfLYxVfyQ4gAxPWLZ2=WNa0H21+cRcBi7dGVG0PMA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-28 17:13       ` Matt Porter
2015-08-31 14:05         ` Rob Herring
     [not found]           ` <CAL_JsqJ7C4JtjGjFJjLQpLEdzbs2rw0K0TzVNB2VjOz4Sr9Nbw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-08 14:15             ` Matt Porter
2015-09-01 17:14         ` Tim Bird
     [not found]           ` <CA+bK7J4Ha55oFhCYDnUcBu8ZHCP3ReB6B=7Y9Fw7CknxPcaoWQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-01 17:35             ` Frank Rowand
     [not found]               ` <55E5E1E2.6040607-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-01 18:03                 ` Tim Bird
     [not found]                   ` <CA+bK7J6kErnKPHs=r+X9T8KBn45HptPmtMe31CoapunKpuY34Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-01 18:24                     ` Rob Herring
     [not found]                       ` <CAL_Jsq+7NQdZivTpwRDwcGrCzpcQQoV5gvSkjz3NNOWNXdBhMA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-08 14:36                         ` Matt Porter
2015-09-08 19:38                           ` Rob Herring
2015-09-08 14:28                     ` Matt Porter
2015-09-08 14:23                 ` Matt Porter
2015-09-08 14:19             ` Matt Porter
2015-08-30 22:04   ` Frank Rowand [this message]
     [not found]     ` <55E37DE4.4090503-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-01 17:34       ` Matt Porter
2015-09-01 16:14   ` Tim Bird
     [not found]     ` <CA+bK7J5MriF95d2OGAZRT8PyJkK_x5r1J1yPq2Ke=SZkit6xHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-08 13:42       ` Matt Porter

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=55E37DE4.4090503@gmail.com \
    --to=frowand.list-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=behanw-k/hB3zQhLwledRVtV/plodBPR1lH4CV8@public.gmane.org \
    --cc=devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=mporter-OWPKS81ov/FWk0Htik3J/w@public.gmane.org \
    --cc=pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@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).