mail archive of the barebox mailing list
 help / color / mirror / Atom feed
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




  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