[Letux-kernel] dt-bindings: converting .txt to .yaml

H. Nikolaus Schaller hns at goldelico.com
Wed Oct 23 12:07:44 CEST 2019


> Am 22.10.2019 um 21:14 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> After searching a full day I think I have found it deeply buried...
> 
> https://lwn.net/Articles/771621/
> says in "Current status and further plans":
> 
> 	"An additional tool, doc2yaml, exists in Herring's tree, but has not been submitted;
> 	 the script can be used for a preliminary conversion of a device-tree binding file in the current text format to the YAML one."
> 
> That is what I have been searching for.
> 
> THE TOOL IS HERE:
> 
> 	https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git/log/?h=yaml-bindings
> 
> Should be prominently documented somewhere!
> 
> Well, while I agree on all goals of the approach:
>  https://elinux.org/images/6/6b/LPC2018_json-schema_for_Devicetree.pdf
> 
> 	• Define a DT schema language
> 		• ○  Human friendly
> 		• ○  Machine readable
> 		• ○  Include binding documentation
> 	• ●  Better tooling
> 		• ○  Validate DTS files at build time
> 		• ○  Validate DT Schema files are in the correct format
> 		• ○  Useful error and warning messages
> 	• ●  Leverage existing technology
> 		○ Use existing schema validation framework ■ Extended to handle quirks of DT
> 		• ○  Don’t write a lot of code!
> 		• ○  Don’t define an entirely new language!
> 	● Generate Specification Documentation from Schema files
> 
> the first bullet point "Human friendly" is something to doubt.
> Doubtlessly, "YAML" is well "Human readable" - but is it also "Human writable"?
> And, it only needs to be machine readable...
> 
> As a kernel bindings developer I only have to care about writing the yaml schemes.
> 
> Unfortunately, the set of tools to *write* dt-bindings.yaml seems to be almost non-existant.
> 
> Ok, let's stop complaining and better give the doc2yaml tool a try to show what it does.

Well, some prerequisites:
1. needs python 3.7
2. I had to modify the hard-coded /usr/bin link because my python is installed elsewhere
3. needs pip3 to install ruaml.yaml package
4. then it works :)

It does well:
* create template
* translate title, document name, description
* prepare for "properties"
* add a "history" section which contains the original .txt

But it is a good and helpful start.

The next step is to use https://github.com/robherring/dt-schema/blob/master/example-schema.yaml
to go through the properties and example in "history" and manually translate things.

Unfortunately I can't run

make dt_binding_check dtbs_check

The second complains about dt-mk-schema command not found and the second
requires a libyaml development package.

So I have to dig even deeper...

BR,
Nikolaus



More information about the Letux-kernel mailing list