Re: [PATCH v2 1/7] dt-bindings: Add support for export-symbols node
Krzysztof Kozlowski <[email protected]>
| Newsgroups | org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 28/05/2025 18:57, Herve Codina wrote: > Hi Krzysztof, > > Thanks a lot for your feedback! > > On Tue, 27 May 2025 20:31:14 +0200 > Krzysztof Kozlowski <[email protected]> wrote: > >> On 30/04/2025 14:51, Herve Codina wrote: >>> An export-symbols node allows to export symbols for symbols resolution >>> performed when applying a device tree overlay. >>> >>> When a device tree overlay is applied on a node having an export-symbols >>> node, symbols listed in the export-symbols node are used to resolve >>> undefined symbols referenced from the overlay. >> >> >> I have impression that this is being discussed in three places >> simultaneously - here, DT spec and DT schema. I don't know how to solve >> the multiplication, but I will keep answering here, because that's my part. >> >>> >>> This allows: >>> - Referencing symbols from an device tree overlay without the need to >>> know the full base board. Only the connector definition is needed. >>> >>> - Using the exact same overlay on several connectors available on a given >>> board. >>> >>> For instance, the following description is supported with the >>> export-symbols node: >>> - Base device tree board A: >>> ... >>> foo_connector: connector1 { >>> export-symbols { >>> connector = <&foo_connector>; >>> }; >>> }; >>> >>> bar_connector: connector2 { >>> export-symbols { >>> connector = <&bar_connector>; >>> }; >>> }; >>> ... >> >> And what would this mean? Which symbol is exported - foo or bar? > > Symbols are exported only when an overlay is applied on the node where the > export-symbols node is available. Those symbols are visible only from the > overlay applied. Symbols exported thanks to export-symbols are not global > to the all device-tree (it is not __symbols__) but local to a node. > > If an overlay is applied at connector1 node, it can use the 'connector' > symbols and thanks to export-symbols, the 'connector' symbol will be > resolved to foo_connector. > > If the overlay is applied at connector2 node, the 'connector' symbol is then > resolved to bar_connector. OK, this explains a lot. Unless I missed it, would be nice to include it in binding description. ... ... >>> +patternProperties: >>> + "^[a-zA-Z_]?[a-zA-Z0-9_]*$": >> >> This messes up with coding style which I would prefer keep intact. >> Basically these properties will be using label style. > > Yes, those properties remap phandles. > > Their names are the name of the label used from the overlay and their > values are the phandle mapped. > > You already have this kind properties using label style in __symbols__, > __fixups__, __local_fixups__ nodes. I have them in DTB, but I don't have these in DTS. The exported-symbols would be in the DTS and that is what coding style is about. Best regards, Krzysztof