[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260112142009.1006236-76-herve.codina@bootlin.com>
Date: Mon, 12 Jan 2026 15:20:05 +0100
From: Herve Codina <herve.codina@...tlin.com>
To: David Gibson <david@...son.dropbear.id.au>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
Cc: Ayush Singh <ayush@...gleboard.org>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
devicetree-compiler@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org,
devicetree-spec@...r.kernel.org,
Hui Pu <hui.pu@...ealthcare.com>,
Ian Ray <ian.ray@...ealthcare.com>,
Luca Ceresoli <luca.ceresoli@...tlin.com>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
Herve Codina <herve.codina@...tlin.com>
Subject: [RFC PATCH 75/77] tests: fdtaddon: Add a test for addons using namespace label references
Namespace label references are labels in the form &foo.bar.baz
Those kind of labels allow to 'jump' from node to node based on
exported symbols defined at each nodes.
Add a test for this feature.
Signed-off-by: Herve Codina <herve.codina@...tlin.com>
---
...ddon_addon_namespace-merged.dtb.dts.expect | 57 +++++++++++++++++++
...fdtaddon_addon_namespace-merged.dtb.expect | 49 ++++++++++++++++
tests/fdtaddon_addon_namespace.dtba.expect | 31 ++++++++++
tests/fdtaddon_addon_namespace.dtsa | 34 +++++++++++
tests/fdtaddon_base_namespace.dtb.expect | 29 ++++++++++
tests/fdtaddon_base_namespace.dts | 33 +++++++++++
tests/run_tests.sh | 14 +++++
7 files changed, 247 insertions(+)
create mode 100644 tests/fdtaddon_addon_namespace-merged.dtb.dts.expect
create mode 100644 tests/fdtaddon_addon_namespace-merged.dtb.expect
create mode 100644 tests/fdtaddon_addon_namespace.dtba.expect
create mode 100644 tests/fdtaddon_addon_namespace.dtsa
create mode 100644 tests/fdtaddon_base_namespace.dtb.expect
create mode 100644 tests/fdtaddon_base_namespace.dts
diff --git a/tests/fdtaddon_addon_namespace-merged.dtb.dts.expect b/tests/fdtaddon_addon_namespace-merged.dtb.dts.expect
new file mode 100644
index 0000000..ff0e5ff
--- /dev/null
+++ b/tests/fdtaddon_addon_namespace-merged.dtb.dts.expect
@@ -0,0 +1,57 @@
+/dts-v1/;
+
+/ {
+
+ other_n1 {
+ prop = <0x00>;
+ phandle = <0x05>;
+
+ /export/ a: &{/other-a};
+ /export/ b: &{/other-b};
+ };
+
+ other-a {
+ prop = <0x00>;
+ phandle = <0x01>;
+
+ addon-node-1a {
+ phandle = <0x06>;
+ prop = <0x1a>;
+ };
+ };
+
+ other-b {
+ prop = <0x00>;
+ phandle = <0x02>;
+
+ /export/ x: &{/other-x};
+ };
+
+ other-x {
+ prop = <0x00>;
+ phandle = <0x03>;
+
+ addon-node-1bx {
+ phandle = <0x07>;
+ prop = <0x1b>;
+ };
+ };
+
+ node {
+ compatible = "abc,aaa";
+ phandle = <0x04>;
+
+ /export/ node: &{/node};
+ /export/ n1: &{/other_n1};
+
+ addon-node2 {
+ ref-addon-n1bx = <&{/other-x/addon-node-1bx}>;
+ ref-n1bx = <&{/other-x}>;
+ };
+
+ addon-node1 {
+ ref-addon-n1a = <&{/other-a/addon-node-1a}>;
+ ref-n1a = <&{/other-a}>;
+ };
+ };
+};
diff --git a/tests/fdtaddon_addon_namespace-merged.dtb.expect b/tests/fdtaddon_addon_namespace-merged.dtb.expect
new file mode 100644
index 0000000..947a088
--- /dev/null
+++ b/tests/fdtaddon_addon_namespace-merged.dtb.expect
@@ -0,0 +1,49 @@
+/dts-v1/;
+
+/ {
+ other_n1 {
+ prop = <0x00000000>;
+ phandle = <0x00000005>;
+ // [FDT_EXPORT_SYM] 'a' -> phandle 0x00000001
+ // [FDT_EXPORT_SYM] 'b' -> phandle 0x00000002
+ };
+ other-a {
+ prop = <0x00000000>;
+ phandle = <0x00000001>;
+ addon-node-1a {
+ phandle = <0x00000006>;
+ prop = <0x0000001a>;
+ };
+ };
+ other-b {
+ prop = <0x00000000>;
+ phandle = <0x00000002>;
+ // [FDT_EXPORT_SYM] 'x' -> phandle 0x00000003
+ };
+ other-x {
+ prop = <0x00000000>;
+ phandle = <0x00000003>;
+ addon-node-1bx {
+ phandle = <0x00000007>;
+ prop = <0x0000001b>;
+ };
+ };
+ node {
+ compatible = "abc,aaa";
+ phandle = <0x00000004>;
+ // [FDT_EXPORT_SYM] 'node' -> phandle 0x00000004
+ // [FDT_EXPORT_SYM] 'n1' -> phandle 0x00000005
+ addon-node2 {
+ ref-addon-n1bx = <0x00000007>;
+ // [FDT_REF_LOCAL] ref-addon-n1bx[0]
+ ref-n1bx = <0x00000003>;
+ // [FDT_REF_LOCAL] ref-n1bx[0]
+ };
+ addon-node1 {
+ ref-addon-n1a = <0x00000006>;
+ // [FDT_REF_LOCAL] ref-addon-n1a[0]
+ ref-n1a = <0x00000001>;
+ // [FDT_REF_LOCAL] ref-n1a[0]
+ };
+ };
+};
diff --git a/tests/fdtaddon_addon_namespace.dtba.expect b/tests/fdtaddon_addon_namespace.dtba.expect
new file mode 100644
index 0000000..426bfe0
--- /dev/null
+++ b/tests/fdtaddon_addon_namespace.dtba.expect
@@ -0,0 +1,31 @@
+/dts-v1/;
+/addon/;
+
+// [FDT_IMPORT_SYM] 'node' (abc,aaa)
+// [FDT_IMPORT_SYM] 'n1' ()
+&node {
+ addon-node1 {
+ ref-n1a = <0xffffffff>;
+ // [FDT_REF_PHANDLE] ref-n1a[0], ref = n1.a
+ ref-addon-n1a = <0x00000001>;
+ // [FDT_REF_LOCAL] ref-addon-n1a[0]
+ };
+ addon-node2 {
+ ref-n1bx = <0xffffffff>;
+ // [FDT_REF_PHANDLE] ref-n1bx[0], ref = n1.b.x
+ ref-addon-n1bx = <0x00000002>;
+ // [FDT_REF_LOCAL] ref-addon-n1bx[0]
+ };
+};
+&n1.a {
+ addon-node-1a {
+ prop = <0x0000001a>;
+ phandle = <0x00000001>;
+ };
+};
+&n1.b.x {
+ addon-node-1bx {
+ prop = <0x0000001b>;
+ phandle = <0x00000002>;
+ };
+};
diff --git a/tests/fdtaddon_addon_namespace.dtsa b/tests/fdtaddon_addon_namespace.dtsa
new file mode 100644
index 0000000..8c25d3d
--- /dev/null
+++ b/tests/fdtaddon_addon_namespace.dtsa
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Copyright (C) 2026 Bootlin
+ */
+
+/dts-v1/;
+/addon/;
+
+/import/ node: "abc,aaa";
+/import/ n1: "";
+
+&node {
+ addon-node1 {
+ ref-n1a = <&n1.a>;
+ ref-addon-n1a = <&addon_n1a>;
+ };
+
+ addon-node2 {
+ ref-n1bx = <&n1.b.x>;
+ ref-addon-n1bx = <&addon_n1bx>;
+ };
+};
+
+&n1.a {
+ addon_n1a: addon-node-1a {
+ prop = <0x1a>;
+ };
+};
+
+&n1.b.x {
+ addon_n1bx: addon-node-1bx {
+ prop = <0x1b>;
+ };
+};
diff --git a/tests/fdtaddon_base_namespace.dtb.expect b/tests/fdtaddon_base_namespace.dtb.expect
new file mode 100644
index 0000000..8383ab0
--- /dev/null
+++ b/tests/fdtaddon_base_namespace.dtb.expect
@@ -0,0 +1,29 @@
+/dts-v1/;
+
+/ {
+ other_n1 {
+ prop = <0x00000000>;
+ phandle = <0x00000005>;
+ // [FDT_EXPORT_SYM] 'a' -> phandle 0x00000001
+ // [FDT_EXPORT_SYM] 'b' -> phandle 0x00000002
+ };
+ other-a {
+ prop = <0x00000000>;
+ phandle = <0x00000001>;
+ };
+ other-b {
+ prop = <0x00000000>;
+ phandle = <0x00000002>;
+ // [FDT_EXPORT_SYM] 'x' -> phandle 0x00000003
+ };
+ other-x {
+ prop = <0x00000000>;
+ phandle = <0x00000003>;
+ };
+ node {
+ compatible = "abc,aaa";
+ phandle = <0x00000004>;
+ // [FDT_EXPORT_SYM] 'node' -> phandle 0x00000004
+ // [FDT_EXPORT_SYM] 'n1' -> phandle 0x00000005
+ };
+};
diff --git a/tests/fdtaddon_base_namespace.dts b/tests/fdtaddon_base_namespace.dts
new file mode 100644
index 0000000..e2bc4f0
--- /dev/null
+++ b/tests/fdtaddon_base_namespace.dts
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Copyright (C) 2026 Bootlin
+ */
+
+/dts-v1/;
+
+/ {
+ n1: other_n1 {
+ prop = <0>;
+ /export/ a: &other_a;
+ /export/ b: &other_b;
+ };
+
+ other_a: other-a {
+ prop = <0>;
+ };
+
+ other_b: other-b {
+ prop = <0>;
+ /export/ x: &other_x;
+ };
+
+ other_x: other-x {
+ prop = <0>;
+ };
+
+ node: node {
+ compatible = "abc,aaa";
+ /export/ node: &node;
+ /export/ n1: &n1;
+ };
+};
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 65b1abe..2cdfd89 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -1207,6 +1207,20 @@ fdtaddon_tests() {
run_dtc_test -I dtb -O dts -o $dt-merged2.dtb.dts $dt-merged2.dtb
check_dts $dt-merged2.dtb.dts
done
+
+ # Test namespace label reference
+ run_dtc_test -I dts -O dtb -o fdtaddon_base_namespace.dtb "$SRCDIR/fdtaddon_base_namespace.dts"
+ check_dtb fdtaddon_base_namespace.dtb
+
+ run_dtc_test -I dts -O dtb -o fdtaddon_addon_namespace.dtba "$SRCDIR/fdtaddon_addon_namespace.dtsa"
+ check_dtb fdtaddon_addon_namespace.dtba
+
+ run_fdtaddon_test -i fdtaddon_base_namespace.dtb -o fdtaddon_addon_namespace-merged.dtb \
+ -t "/node" fdtaddon_addon_namespace.dtba
+ check_dtb fdtaddon_addon_namespace-merged.dtb
+
+ run_dtc_test -I dtb -O dts -o fdtaddon_addon_namespace-merged.dtb.dts fdtaddon_addon_namespace-merged.dtb
+ check_dts fdtaddon_addon_namespace-merged.dtb.dts
}
pylibfdt_tests () {
--
2.52.0
Powered by blists - more mailing lists