€•ºcŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ8/translations/zh_CN/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/zh_TW/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/it_IT/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ja_JP/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ko_KR/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/sp_SP/devicetree/bindings/writing-bindings”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒR/var/lib/git/docbuild/linux/Documentation/devicetree/bindings/writing-bindings.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒDOs and DON’Ts for designing and writing Devicetree bindings”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒ paragraph”“”)”}”(hŒ’This is a list of common review feedback items focused on binding design. With every rule, there are exceptions and bindings have many gray areas.”h]”hŒ’This is a list of common review feedback items focused on binding design. With every rule, there are exceptions and bindings have many gray areas.”…””}”(hhËhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhÊ)”}”(hŒ_For guidelines related to patches, see Documentation/devicetree/bindings/submitting-patches.rst”h]”hŒ_For guidelines related to patches, see Documentation/devicetree/bindings/submitting-patches.rst”…””}”(hhÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K hh¶hžhubhµ)”}”(hhh]”(hº)”}”(hŒOverall design”h]”hŒOverall design”…””}”(hhêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhçhžhhŸh³h KubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒÏDO attempt to make bindings complete even if a driver doesn't support some features. For example, if a device has an interrupt, then include the 'interrupts' property even if the driver is only polled mode. ”h]”hÊ)”}”(hŒÎDO attempt to make bindings complete even if a driver doesn't support some features. For example, if a device has an interrupt, then include the 'interrupts' property even if the driver is only polled mode.”h]”hŒÔDO attempt to make bindings complete even if a driver doesn’t support some features. For example, if a device has an interrupt, then include the ‘interrupts’ property even if the driver is only polled mode.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khhÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubhþ)”}”(hŒ•DON'T refer to Linux or "device driver" in bindings. Bindings should be based on what the hardware has, not what an OS and driver currently support. ”h]”hÊ)”}”(hŒ”DON'T refer to Linux or "device driver" in bindings. Bindings should be based on what the hardware has, not what an OS and driver currently support.”h]”hŒšDON’T refer to Linux or “device driver†in bindings. Bindings should be based on what the hardware has, not what an OS and driver currently support.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubhþ)”}”(hŒŒDO use node names matching the class of the device. Many standard names are defined in the DT Spec. If there isn't one, consider adding it. ”h]”hÊ)”}”(hŒ‹DO use node names matching the class of the device. Many standard names are defined in the DT Spec. If there isn't one, consider adding it.”h]”hŒDO use node names matching the class of the device. Many standard names are defined in the DT Spec. If there isn’t one, consider adding it.”…””}”(hj3hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubhþ)”}”(hŒ\DO check that the example matches the documentation especially after making review changes. ”h]”hÊ)”}”(hŒ[DO check that the example matches the documentation especially after making review changes.”h]”hŒ[DO check that the example matches the documentation especially after making review changes.”…””}”(hjKhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubhþ)”}”(hŒàDON'T create nodes just for the sake of instantiating drivers. Multi-function devices only need child nodes when the child nodes have their own DT resources. A single node can be multiple providers (e.g. clocks and resets). ”h]”hÊ)”}”(hŒßDON'T create nodes just for the sake of instantiating drivers. Multi-function devices only need child nodes when the child nodes have their own DT resources. A single node can be multiple providers (e.g. clocks and resets).”h]”hŒáDON’T create nodes just for the sake of instantiating drivers. Multi-function devices only need child nodes when the child nodes have their own DT resources. A single node can be multiple providers (e.g. clocks and resets).”…””}”(hjchžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubhþ)”}”(hŒÉDON'T use 'syscon' alone without a specific compatible string. A 'syscon' hardware block should have a compatible string unique enough to infer the register layout of the entire block (at a minimum). ”h]”hÊ)”}”(hŒÇDON'T use 'syscon' alone without a specific compatible string. A 'syscon' hardware block should have a compatible string unique enough to infer the register layout of the entire block (at a minimum).”h]”hŒÑDON’T use ‘syscon’ alone without a specific compatible string. A ‘syscon’ hardware block should have a compatible string unique enough to infer the register layout of the entire block (at a minimum).”…””}”(hj{hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K"hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúhžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1høhŸh³h Khhçhžhubeh}”(h]”Œoverall-design”ah ]”h"]”Œoverall design”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ Properties”h]”hŒ Properties”…””}”(hj¢hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjŸhžhhŸh³h K(ubhù)”}”(hhh]”(hþ)”}”(hXDO make 'compatible' properties specific. - DON'T use wildcards or device-family names in compatible strings. - DO use fallback compatibles when devices are the same as or a superset of prior implementations. - DO add new compatibles in case there are new features or bugs. - DO use a SoC-specific compatible for all SoC devices, followed by a fallback if appropriate. SoC-specific compatibles are also preferred for the fallbacks. - DON'T use bus suffixes to encode the type of interface device is using. The parent bus node already implies that interface. DON'T add the type of device, if the device cannot be anything else. ”h]”(hÊ)”}”(hŒ)DO make 'compatible' properties specific.”h]”hŒ-DO make ‘compatible’ properties specific.”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K*hj³ubhŒ block_quote”“”)”}”(hXX- DON'T use wildcards or device-family names in compatible strings. - DO use fallback compatibles when devices are the same as or a superset of prior implementations. - DO add new compatibles in case there are new features or bugs. - DO use a SoC-specific compatible for all SoC devices, followed by a fallback if appropriate. SoC-specific compatibles are also preferred for the fallbacks. - DON'T use bus suffixes to encode the type of interface device is using. The parent bus node already implies that interface. DON'T add the type of device, if the device cannot be anything else. ”h]”hù)”}”(hhh]”(hþ)”}”(hŒBDON'T use wildcards or device-family names in compatible strings. ”h]”hÊ)”}”(hŒADON'T use wildcards or device-family names in compatible strings.”h]”hŒCDON’T use wildcards or device-family names in compatible strings.”…””}”(hjÒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K,hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjËubhþ)”}”(hŒaDO use fallback compatibles when devices are the same as or a superset of prior implementations. ”h]”hÊ)”}”(hŒ`DO use fallback compatibles when devices are the same as or a superset of prior implementations.”h]”hŒ`DO use fallback compatibles when devices are the same as or a superset of prior implementations.”…””}”(hjêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K.hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjËubhþ)”}”(hŒ?DO add new compatibles in case there are new features or bugs. ”h]”hÊ)”}”(hŒ>DO add new compatibles in case there are new features or bugs.”h]”hŒ>DO add new compatibles in case there are new features or bugs.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K1hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjËubhþ)”}”(hŒœDO use a SoC-specific compatible for all SoC devices, followed by a fallback if appropriate. SoC-specific compatibles are also preferred for the fallbacks. ”h]”hÊ)”}”(hŒ›DO use a SoC-specific compatible for all SoC devices, followed by a fallback if appropriate. SoC-specific compatibles are also preferred for the fallbacks.”h]”hŒ›DO use a SoC-specific compatible for all SoC devices, followed by a fallback if appropriate. SoC-specific compatibles are also preferred for the fallbacks.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K3hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjËubhþ)”}”(hŒÂDON'T use bus suffixes to encode the type of interface device is using. The parent bus node already implies that interface. DON'T add the type of device, if the device cannot be anything else. ”h]”hÊ)”}”(hŒÁDON'T use bus suffixes to encode the type of interface device is using. The parent bus node already implies that interface. DON'T add the type of device, if the device cannot be anything else.”h]”hŒÅDON’T use bus suffixes to encode the type of interface device is using. The parent bus node already implies that interface. DON’T add the type of device, if the device cannot be anything else.”…””}”(hj2hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K7hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjËubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1høhŸh³h K,hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅhŸh³h K,hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒµDO use a vendor prefix on device-specific property names. Consider if properties could be common among devices of the same class. Check other existing bindings for similar devices. ”h]”hÊ)”}”(hŒ´DO use a vendor prefix on device-specific property names. Consider if properties could be common among devices of the same class. Check other existing bindings for similar devices.”h]”hŒ´DO use a vendor prefix on device-specific property names. Consider if properties could be common among devices of the same class. Check other existing bindings for similar devices.”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K;hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒoDON'T redefine common properties. Just reference the definition and define constraints specific to the device. ”h]”hÊ)”}”(hŒnDON'T redefine common properties. Just reference the definition and define constraints specific to the device.”h]”hŒpDON’T redefine common properties. Just reference the definition and define constraints specific to the device.”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K?hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒ‚DON'T add properties to avoid a specific compatible. DON'T add properties if they are implied by (deducible from) the compatible. ”h]”hÊ)”}”(hŒDON'T add properties to avoid a specific compatible. DON'T add properties if they are implied by (deducible from) the compatible.”h]”hŒ…DON’T add properties to avoid a specific compatible. DON’T add properties if they are implied by (deducible from) the compatible.”…””}”(hjŒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KBhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒÉDO use common property unit suffixes for properties with scientific units. Recommended suffixes are listed at https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml ”h]”hÊ)”}”(hŒÈDO use common property unit suffixes for properties with scientific units. Recommended suffixes are listed at https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml”h]”(hŒnDO use common property unit suffixes for properties with scientific units. Recommended suffixes are listed at ”…””}”(hj¤hžhhŸNh NubhŒ reference”“”)”}”(hŒZhttps://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml”h]”hŒZhttps://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml”…””}”(hj®hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j°uh1j¬hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KEhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒžDO define properties in terms of constraints. How many entries? What are possible values? What is the order? All these constraints represent the ABI as well. ”h]”hÊ)”}”(hŒDO define properties in terms of constraints. How many entries? What are possible values? What is the order? All these constraints represent the ABI as well.”h]”hŒDO define properties in terms of constraints. How many entries? What are possible values? What is the order? All these constraints represent the ABI as well.”…””}”(hjÍhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KIhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubhþ)”}”(hŒêDON'T make changes that break the ABI without explicit and detailed rationale for why the changes have to be made and their impact. ABI impact goes beyond the Linux kernel, because it also covers other open-source upstream projects. ”h]”hÊ)”}”(hŒèDON'T make changes that break the ABI without explicit and detailed rationale for why the changes have to be made and their impact. ABI impact goes beyond the Linux kernel, because it also covers other open-source upstream projects.”h]”hŒêDON’T make changes that break the ABI without explicit and detailed rationale for why the changes have to be made and their impact. ABI impact goes beyond the Linux kernel, because it also covers other open-source upstream projects.”…””}”(hjåhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KMhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj°hžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1høhŸh³h K*hjŸhžhubeh}”(h]”Œ properties”ah ]”h"]”Œ properties”ah$]”h&]”uh1h´hh¶hžhhŸh³h K(ubhµ)”}”(hhh]”(hº)”}”(hŒTypical cases and caveats”h]”hŒTypical cases and caveats”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h KSubhù)”}”(hhh]”(hþ)”}”(hŒûPhandle entries, like clocks/dmas/interrupts/resets, should always be explicitly ordered. Include the {clock,dma,interrupt,reset}-names if there is more than one phandle. When used, both of these fields need the same constraints (e.g. list of items). ”h]”hÊ)”}”(hŒúPhandle entries, like clocks/dmas/interrupts/resets, should always be explicitly ordered. Include the {clock,dma,interrupt,reset}-names if there is more than one phandle. When used, both of these fields need the same constraints (e.g. list of items).”h]”hŒúPhandle entries, like clocks/dmas/interrupts/resets, should always be explicitly ordered. Include the {clock,dma,interrupt,reset}-names if there is more than one phandle. When used, both of these fields need the same constraints (e.g. list of items).”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KUhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒ{For names used in {clock,dma,interrupt,reset}-names, do not add any suffix, e.g.: "tx" instead of "txirq" (for interrupt). ”h]”hÊ)”}”(hŒzFor names used in {clock,dma,interrupt,reset}-names, do not add any suffix, e.g.: "tx" instead of "txirq" (for interrupt).”h]”hŒ‚For names used in {clock,dma,interrupt,reset}-names, do not add any suffix, e.g.: “tx†instead of “txirq†(for interrupt).”…””}”(hj7hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KZhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒ€Properties without schema types (e.g. without standard suffix or not defined by schema) need the type, even if this is an enum. ”h]”hÊ)”}”(hŒProperties without schema types (e.g. without standard suffix or not defined by schema) need the type, even if this is an enum.”h]”hŒProperties without schema types (e.g. without standard suffix or not defined by schema) need the type, even if this is an enum.”…””}”(hjOhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K]hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒ¥If schema includes other schema (e.g. /schemas/i2c/i2c-controller.yaml) use "unevaluatedProperties:false". In other cases, usually use "additionalProperties:false". ”h]”hÊ)”}”(hŒ¤If schema includes other schema (e.g. /schemas/i2c/i2c-controller.yaml) use "unevaluatedProperties:false". In other cases, usually use "additionalProperties:false".”h]”hŒ¬If schema includes other schema (e.g. /schemas/i2c/i2c-controller.yaml) use “unevaluatedProperties:falseâ€. In other cases, usually use “additionalProperties:falseâ€.”…””}”(hjghžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K`hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒîFor sub-blocks/components of bigger device (e.g. SoC blocks) use rather device-based compatible (e.g. SoC-based compatible), instead of custom versioning of that component. For example use "vendor,soc1234-i2c" instead of "vendor,i2c-v2". ”h]”hÊ)”}”(hŒíFor sub-blocks/components of bigger device (e.g. SoC blocks) use rather device-based compatible (e.g. SoC-based compatible), instead of custom versioning of that component. For example use "vendor,soc1234-i2c" instead of "vendor,i2c-v2".”h]”hŒõFor sub-blocks/components of bigger device (e.g. SoC blocks) use rather device-based compatible (e.g. SoC-based compatible), instead of custom versioning of that component. For example use “vendor,soc1234-i2c†instead of “vendor,i2c-v2â€.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kdhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒ]"syscon" is not a generic property. Use vendor and type, e.g. "vendor,power-manager-syscon". ”h]”hÊ)”}”(hŒ\"syscon" is not a generic property. Use vendor and type, e.g. "vendor,power-manager-syscon".”h]”hŒd“syscon†is not a generic property. Use vendor and type, e.g. “vendor,power-manager-sysconâ€.”…””}”(hj—hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kihj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hXDo not add instance index (IDs) properties or custom OF aliases. If the devices have different programming model, they might need different compatibles. If such devices use some other device in a different way, e.g. they program the phy differently, use cell/phandle arguments. ”h]”hÊ)”}”(hXDo not add instance index (IDs) properties or custom OF aliases. If the devices have different programming model, they might need different compatibles. If such devices use some other device in a different way, e.g. they program the phy differently, use cell/phandle arguments.”h]”hXDo not add instance index (IDs) properties or custom OF aliases. If the devices have different programming model, they might need different compatibles. If such devices use some other device in a different way, e.g. they program the phy differently, use cell/phandle arguments.”…””}”(hj¯hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Klhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubhþ)”}”(hŒÊBindings files should be named like compatible: vendor,device.yaml. In case of multiple compatibles in the binding, use one of the fallbacks or a more generic name, yet still matching compatible style. ”h]”hÊ)”}”(hŒÉBindings files should be named like compatible: vendor,device.yaml. In case of multiple compatibles in the binding, use one of the fallbacks or a more generic name, yet still matching compatible style.”h]”hŒÉBindings files should be named like compatible: vendor,device.yaml. In case of multiple compatibles in the binding, use one of the fallbacks or a more generic name, yet still matching compatible style.”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KqhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjhžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1høhŸh³h KUhjhžhubeh}”(h]”Œtypical-cases-and-caveats”ah ]”h"]”Œtypical cases and caveats”ah$]”h&]”uh1h´hh¶hžhhŸh³h KSubhµ)”}”(hhh]”(hº)”}”(hŒBoard/SoC .dts Files”h]”hŒBoard/SoC .dts Files”…””}”(hjìhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjéhžhhŸh³h Kvubhù)”}”(hhh]”(hþ)”}”(hŒCDO put all MMIO devices under a bus node and not at the top-level. ”h]”hÊ)”}”(hŒBDO put all MMIO devices under a bus node and not at the top-level.”h]”hŒBDO put all MMIO devices under a bus node and not at the top-level.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kxhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjúhžhhŸh³h Nubhþ)”}”(hŒŒDO use non-empty 'ranges' to limit the size of child buses/devices. 64-bit platforms don't need all devices to have 64-bit address and size.”h]”hÊ)”}”(hŒŒDO use non-empty 'ranges' to limit the size of child buses/devices. 64-bit platforms don't need all devices to have 64-bit address and size.”h]”hŒ’DO use non-empty ‘ranges’ to limit the size of child buses/devices. 64-bit platforms don’t need all devices to have 64-bit address and size.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjúhžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”j•j–uh1høhŸh³h Kxhjéhžhubeh}”(h]”Œboard-soc-dts-files”ah ]”h"]”Œboard/soc .dts files”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kvubeh}”(h]”Œ