From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [PATCH v1 03/20] Documentation: devicetree: describe new label-relative-path syntax
Date: Fri, 17 Feb 2023 18:30:40 +0100 [thread overview]
Message-ID: <20230217173057.1839835-4-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20230217173057.1839835-1-a.fatoum@pengutronix.de>
For use in barebox, DTC v1.7.0 now allows constructing labels that are
comprised of a parent label and a relative path. This is a middle ground
for when no suitable label is defined upstream and a full path is too
verbose and more likely to cause breakages that could've been avoided
by restricting the path component. Describe this in the docs.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
Documentation/devicetree/index.rst | 45 ++++++++++++++++++++++++++----
1 file changed, 39 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index 61ac0433fb41..36fa69058d1d 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -37,8 +37,8 @@ environment or boot-time device configuration.
Device Tree probing largely happens via compatible properties with no special
meaning to the node names themselves. It's thus paramount that any device tree
-nodes extended in the barebox device tree are referenced by a phandle, not by
-path, to avoid run-time breakage like this::
+nodes extended in the barebox device tree are referenced by label (e.g.
+``<&phandle>``, not by path, to avoid run-time breakage like this::
# Upstream dts/src/$ARCH/board.dts
/ {
@@ -62,15 +62,48 @@ path, to avoid run-time breakage like this::
In the previous example, a device tree sync with upstream resulted in a regression
as the former override became a new node with a single property without effect.
-Using phandles avoids this. When no phandle mapping the full path is defined
-upstream, the ``&{/path}`` syntax should be used instead, e.g.::
+The preferred way around this is to use labels directly::
+
+ # Upstream dts/src/$ARCH/board.dts
+ / {
+ leds {
+ status_led: red { };
+ };
+ };
+
+ # barebox arch/$ARCH/dts/board.dts
+ #include <$ARCH/board.dts>
+
+ &status_led {
+ barebox,default-trigger = "heartbeat";
+ };
+
+If there's no label defined upstream for the node, but for a parent,
+a new label can be constructed from that label and a relative path::
+
+ # Upstream dts/src/$ARCH/board.dts
+ / {
+ led_controller: leds {
+ red { };
+ };
+ };
+
+ # barebox arch/$ARCH/dts/board.dts
+ #include <$ARCH/board.dts>
+
+ &{led_controller/red} {
+ barebox,default-trigger = "heartbeat";
+ };
+
+As last resort, the full path shall be used::
&{/leds/red} {
barebox,default-trigger = "heartbeat";
};
-This would lead to a compile error should the ``/leds/red`` path be renamed or
-removed. This also applies to uses of ``/delete-node/``.
+Any of these three approaches would lead to a compile error should the
+``/leds/red`` path be renamed or removed. This also applies to uses
+of ``/delete-node/``.
Only exception to this rule are well-known node names that are specified by
the `specification`_ to be parsed by name. These are: ``chosen``, ``aliases``
--
2.30.2
next prev parent reply other threads:[~2023-02-17 17:34 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-17 17:30 [PATCH v1 00/20] dts: avoid DT breakage new fancy DTC v1.7.0 syntax Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 01/20] scripts/dtc: Update to upstream version v1.7.0 Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 02/20] scripts/dtc: update-dts-source.sh: don't fail if libfdt/ exists Ahmad Fatoum
2023-02-17 17:30 ` Ahmad Fatoum [this message]
2023-02-17 17:30 ` [PATCH v1 04/20] ARM: dts: use DT labels instead of paths where possible Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 05/20] MIPS: dts: ath79: ar9331: use path references when extending nodes Ahmad Fatoum
2023-02-22 10:25 ` Sascha Hauer
2023-02-17 17:30 ` [PATCH v1 06/20] ARM: dts: tegra: switch to path and label references Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 07/20] ARM: i.MX51: ccmx51: support newer device trees Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 08/20] ARM: i.MX6: gw54xx: rename watchdog nodes Ahmad Fatoum
2023-02-17 18:08 ` Jules Maselbas
2023-02-17 17:30 ` [PATCH v1 09/20] ARM: i.MX6: karo-tx6x: fix now renamed DT nodes Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 10/20] ARM: dts: zii: use phandle-relative paths for extending nodes Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 11/20] ARM: dts: AT91: use label-relative " Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 12/20] ARM: dts: Layerscape: drop unneeded EEPROM node overriding Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 13/20] ARM: dts: Layerscape: use label-relative paths references Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 14/20] ARM: dts: vf610-zii-cfu1: remove duplicate LED Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 15/20] ARM: dts: i.MX53: ccxmx53: remove unused /memory Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 16/20] ARM: dts: i.MX: use label-relative references Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 17/20] ARM: dts: i.MX: delete now renamed memory nodes as well Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 18/20] ARM: dts: socfpga: cut down on NAND node duplication Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 19/20] ARM: dts: i.MX8MN: evk: use upstream flash node definition Ahmad Fatoum
2023-02-17 17:30 ` [PATCH v1 20/20] ARM: dts: i.MX8MN: evk: reduce duplication in barebox-added nodes Ahmad Fatoum
2023-02-20 8:48 ` [PATCH v1 00/20] dts: avoid DT breakage new fancy DTC v1.7.0 syntax Marco Felsch
2023-02-20 8:51 ` Ahmad Fatoum
2023-02-21 10:25 ` Sascha Hauer
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=20230217173057.1839835-4-a.fatoum@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
/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