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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.