Devicetree (DT) ABIÂķ
Regarding stable bindings/ABI, we quote from the 2013 ARM mini-summit summary document:
âThat still leaves the question of, what does a stable binding look like? Certainly a stable binding means that a newer kernel will not break on an older device tree, but that doesnât mean the binding is frozen for all time. Grant said there are ways to change bindings that donât result in breakage. For instance, if a new property is added, then default to the previous behaviour if it is missing. If a binding truly needs an incompatible change, then change the compatible string at the same time. The driver can bind against both the old and the new. These guidelines arenât new, but they desperately need to be documented.â
General binding rules
Maintainers, donât let perfect be the enemy of good. Donât hold up a binding because it isnât perfect.
Use specific compatible strings so that if we need to add a feature (DMA) in the future, we can create a new compatible string. See I.
Bindings can be augmented, but the driver shouldnât break when given the old binding. ie. add additional properties, but donât change the meaning of an existing property. For drivers, default to the original behaviour when a newly added property is missing.
Donât submit bindings for staging or unstable. That will be decided by the devicetree maintainers after discussion on the mailinglist.
Notes
This document is intended as a general familiarization with the process as decided at the 2013 Kernel Summit. When in doubt, the current word of the devicetree maintainers overrules this document. In that situation, a patch updating this document would be appreciated.