dt-bindings: writing-schema: Explain sub-nodes with additionalProperties:true

Document recently introduced pattern of using additionalProperties: true
for sub-nodes with their own schema.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250331081345.37103-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
Krzysztof Kozlowski
2025-04-07 09:33:58 -05:00
committed by Rob Herring (Arm)
parent 0af2f6be1b
commit af134b1145
2 changed files with 22 additions and 4 deletions
@@ -178,7 +178,9 @@ properties:
description: Child nodes are just another property from a json-schema
perspective.
type: object # DT nodes are json objects
# Child nodes also need additionalProperties or unevaluatedProperties
# Child nodes also need additionalProperties or unevaluatedProperties, where
# 'false' should be used in most cases (see 'child-node-with-own-schema'
# below).
additionalProperties: false
properties:
vendor,a-child-node-property:
@@ -189,6 +191,17 @@ properties:
required:
- vendor,a-child-node-property
child-node-with-own-schema:
description: |
Child node with their own compatible and device schema which ends in
'additionalProperties: false' or 'unevaluatedProperties: false' can
mention only the compatible and use here 'additionalProperties: true'.
type: object
additionalProperties: true
properties:
compatible:
const: vendor,sub-device
# Describe the relationship between different properties
dependencies:
# 'vendor,bool-property' is only allowed when 'vendor,string-array-property'
@@ -117,9 +117,14 @@ additionalProperties / unevaluatedProperties
should be allowed.
* additionalProperties: true
Rare case, used for schemas implementing common set of properties. Such
schemas are supposed to be referenced by other schemas, which then use
'unevaluatedProperties: false'. Typically bus or common-part schemas.
- Top-level part:
Rare case, used for schemas implementing common set of properties. Such
schemas are supposed to be referenced by other schemas, which then use
'unevaluatedProperties: false'. Typically bus or common-part schemas.
- Nested node:
When listing only the expected compatible of the nested node and there
is an another schema matching that compatible which ends with one of
two above cases ('false').
examples
Optional. A list of one or more DTS hunks implementing this binding only.