1 2 Devicetree (DT) ABI 3 4I. Regarding stable bindings/ABI, we quote from the 2013 ARM mini-summit 5 summary document: 6 7 "That still leaves the question of, what does a stable binding look 8 like? Certainly a stable binding means that a newer kernel will not 9 break on an older device tree, but that doesn't mean the binding is 10 frozen for all time. Grant said there are ways to change bindings that 11 don't result in breakage. For instance, if a new property is added, 12 then default to the previous behaviour if it is missing. If a binding 13 truly needs an incompatible change, then change the compatible string 14 at the same time. The driver can bind against both the old and the 15 new. These guidelines aren't new, but they desperately need to be 16 documented." 17 18II. General binding rules 19 20 1) Maintainers, don't let perfect be the enemy of good. Don't hold up a 21 binding because it isn't perfect. 22 23 2) Use specific compatible strings so that if we need to add a feature (DMA) 24 in the future, we can create a new compatible string. See I. 25 26 3) Bindings can be augmented, but the driver shouldn't break when given 27 the old binding. ie. add additional properties, but don't change the 28 meaning of an existing property. For drivers, default to the original 29 behaviour when a newly added property is missing. 30 31 4) Don't submit bindings for staging or unstable. That will be decided by 32 the devicetree maintainers *after* discussion on the mailinglist. 33 34III. Notes 35 36 1) This document is intended as a general familiarization with the process as 37 decided at the 2013 Kernel Summit. When in doubt, the current word of the 38 devicetree maintainers overrules this document. In that situation, a patch 39 updating this document would be appreciated. 40