From: Krzysztof Kozlowski <krzk@kernel.org>
To: Herve Codina <herve.codina@bootlin.com>,
David Gibson <david@gibson.dropbear.id.au>,
Andrew Davis <afd@ti.com>, Ayush Singh <ayush@beagleboard.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Saravana Kannan <saravanak@google.com>
Cc: devicetree@vger.kernel.org, devicetree-compiler@vger.kernel.org,
linux-kernel@vger.kernel.org,
Luca Ceresoli <luca.ceresoli@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v2 1/7] dt-bindings: Add support for export-symbols node
Date: Tue, 27 May 2025 20:31:14 +0200 [thread overview]
Message-ID: <0770a47e-fd2f-4b6f-9a9a-b0d539ace30c@kernel.org> (raw)
In-Reply-To: <20250430125154.195498-2-herve.codina@bootlin.com>
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?
>
> - Base device tree board B:
> ...
> front_connector: addon-connector {
> export-symbols {
> connector = <&front_connector>;
> };
> };
<from my other reply in private>
Another problem is that the board DTS should not care about overlays. It
feels like breaking encapsulation and I cannot imagine now adding 1000
export-symbols, because every i2c, spi, mikrobus or PCI slot could have
an overlay applied.
You could argue that only few nodes will be exported like this, so only
real mikrobus connectors. Then I will argue: look at aliases. People
alias everything everywhere, not following the guidelines.
If we assume that such overlays are designed for specific boards, thus
there will be only one or two exported symbols not 1000, then what is
the benefit of export symbols comparing to referencing by full path?
</end from my other reply>
And with above assumption - such overlays designed per board - plus my
first point about duplicated exports:
connector = <&foo_connector>;
connector = <&bar_connector>;
why not exporting the symbol with the same name? E.g.:
foo_connector: connector1 {
export-symbols {
whatever-property-style = <&foo_connector>;
};
};
and overlay:
node {
...
connector = <&foo_connector>;
...
};
Or even annotation?
foo_connector: connector1 __exported_symbol__ {
....
};
node {
...
connector = <&foo_connector>;
...
};
? This also answers my further question about DTS style (see at the bottom)
> ...
>
> - Overlay describing an addon board the can be connected on connectors:
> ...
> node {
> ...
> connector = <&connector>;
> ...
> };
> ...
>
> Thanks to the export-symbols node, the overlay can be applied on
> connector1 or connector2 available on board A but also on
> addon-connector available on board B.
>
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> Tested-by: Ayush Singh <ayush@beagleboard.org>
I would argue you cannot test a binding, because testing here is part of
a process, but what do I know...
> ---
> .../devicetree/bindings/export-symbols.yaml | 43 +++++++++++++++++++
> 1 file changed, 43 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/export-symbols.yaml
>
> diff --git a/Documentation/devicetree/bindings/export-symbols.yaml b/Documentation/devicetree/bindings/export-symbols.yaml
> new file mode 100644
> index 000000000000..0e404eff8937
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/export-symbols.yaml
> @@ -0,0 +1,43 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/export-symbols.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Export symbols
> +
> +maintainers:
> + - Herve Codina <herve.codina@bootlin.com>
> +
> +description: |
> + 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.
> +
> +properties:
> + $nodename:
> + const: export-symbols
> +
> +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.
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + A symbol exported in the form <symbol_name>=<phandle>.
> +
> +additionalProperties: false
> +
Best regards,
Krzysztof
next prev parent reply other threads:[~2025-05-27 18:31 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-30 12:51 [PATCH v2 0/7] of: overlay: Add support for export-symbols node feature Herve Codina
2025-04-30 12:51 ` [PATCH v2 1/7] dt-bindings: Add support for export-symbols node Herve Codina
2025-05-02 14:33 ` Luca Ceresoli
2025-05-27 18:31 ` Krzysztof Kozlowski [this message]
2025-05-28 7:59 ` Ayush Singh
2025-05-28 8:06 ` Krzysztof Kozlowski
2025-05-28 16:57 ` Herve Codina
2025-06-04 18:35 ` Krzysztof Kozlowski
2025-06-18 9:32 ` Herve Codina
2025-06-18 9:54 ` Ayush Singh
2025-07-04 9:10 ` Herve Codina
2025-08-17 7:41 ` Krzysztof Kozlowski
2025-08-17 8:18 ` Ayush Singh
2025-08-17 8:22 ` Krzysztof Kozlowski
2025-08-17 8:42 ` Ayush Singh
2025-08-18 17:05 ` Rob Herring
2025-08-18 17:37 ` Ayush Singh
2025-08-17 7:38 ` Krzysztof Kozlowski
2025-04-30 12:51 ` [PATCH v2 2/7] of: resolver: Introduce get_phandle_from_symbols_node() Herve Codina
2025-04-30 12:51 ` [PATCH v2 3/7] of: resolver: Add export_symbols in of_resolve_phandles() parameters Herve Codina
2025-05-02 14:35 ` Luca Ceresoli
2025-05-05 8:10 ` Herve Codina
2025-04-30 12:51 ` [PATCH v2 4/7] of: resolver: Add support for the export symbols node Herve Codina
2025-04-30 12:51 ` [PATCH v2 5/7] of: overlay: Add export_symbols_name in of_overlay_fdt_apply() parameters Herve Codina
2025-05-02 14:40 ` Ayush Singh
2025-05-05 8:17 ` Herve Codina
2025-04-30 12:51 ` [PATCH v2 6/7] of: overlay: Add support for the export symbols node Herve Codina
2025-04-30 12:51 ` [PATCH v2 7/7] of: unittest: Add tests for export symbols Herve Codina
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0770a47e-fd2f-4b6f-9a9a-b0d539ace30c@kernel.org \
--to=krzk@kernel.org \
--cc=afd@ti.com \
--cc=arnd@arndb.de \
--cc=ayush@beagleboard.org \
--cc=conor+dt@kernel.org \
--cc=david@gibson.dropbear.id.au \
--cc=devicetree-compiler@vger.kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=herve.codina@bootlin.com \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luca.ceresoli@bootlin.com \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).