summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2014-06-02 15:23:40 +1000
committerDavid Gibson <david@gibson.dropbear.id.au>2014-06-02 15:23:40 +1000
commit17dab7023959256224e800dd77cae57d8ecfaec0 (patch)
treed373a8b987116f592b5dcc231a40676a83b3c7a0
parent40f7f576c8e7df395ed25f0f3df61fac85f1adf9 (diff)
downloaddevice-tree-compiler-multi-v1-tags.tar.gz
Alter grammar to allow multiple /dts-v1/ tagsmulti-v1-tags
This patch allows dtc to accept multiple /dts-v1/ tags (provided they're all at the beginning of the input), rather than giving a syntax error. This makes it more convenient to include one .dts file from another without having to be careful that the /dts-v1/ tag is in exactly one of them. We a couple of existing testcases to take advantage of this, which simplifies them slightly. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--dtc-parser.y11
-rw-r--r--tests/test_tree1.dts44
-rw-r--r--tests/test_tree1_body.dtsi43
-rw-r--r--tests/test_tree1_delete.dts2
4 files changed, 52 insertions, 48 deletions
diff --git a/dtc-parser.y b/dtc-parser.y
index ea57e0a..c6921e7 100644
--- a/dtc-parser.y
+++ b/dtc-parser.y
@@ -101,13 +101,18 @@ extern bool treesource_error;
%%
sourcefile:
- DT_V1 ';' memreserves devicetree
+ v1tag memreserves devicetree
{
- the_boot_info = build_boot_info($3, $4,
- guess_boot_cpuid($4));
+ the_boot_info = build_boot_info($2, $3,
+ guess_boot_cpuid($3));
}
;
+v1tag:
+ DT_V1 ';'
+ | DT_V1 ';' v1tag
+ ;
+
memreserves:
/* empty */
{
diff --git a/tests/test_tree1.dts b/tests/test_tree1.dts
index c7b170c..67ecfd0 100644
--- a/tests/test_tree1.dts
+++ b/tests/test_tree1.dts
@@ -1,3 +1,45 @@
/dts-v1/;
-/include/ "test_tree1_body.dtsi"
+/memreserve/ 0xdeadbeef00000000 0x100000;
+/memreserve/ 123456789 010000;
+
+/ {
+ compatible = "test_tree1";
+ prop-int = <0xdeadbeef>;
+ prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
+ prop-str = "hello world";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ subnode@1 {
+ compatible = "subnode1";
+ reg = <1>;
+ prop-int = [deadbeef];
+
+ subsubnode {
+ compatible = "subsubnode1", "subsubnode";
+ prop-int = <0xdeadbeef>;
+ };
+
+ ss1 {
+ };
+ };
+
+ subnode@2 {
+ reg = <2>;
+ linux,phandle = <0x2000>;
+ prop-int = <123456789>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ssn0: subsubnode@0 {
+ reg = <0>;
+ phandle = <0x2001>;
+ compatible = "subsubnode2", "subsubnode";
+ prop-int = <0726746425>;
+ };
+
+ ss2 {
+ };
+ };
+};
diff --git a/tests/test_tree1_body.dtsi b/tests/test_tree1_body.dtsi
deleted file mode 100644
index 24a5e1e..0000000
--- a/tests/test_tree1_body.dtsi
+++ /dev/null
@@ -1,43 +0,0 @@
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
- compatible = "test_tree1";
- prop-int = <0xdeadbeef>;
- prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
- prop-str = "hello world";
- #address-cells = <1>;
- #size-cells = <0>;
-
- subnode@1 {
- compatible = "subnode1";
- reg = <1>;
- prop-int = [deadbeef];
-
- subsubnode {
- compatible = "subsubnode1", "subsubnode";
- prop-int = <0xdeadbeef>;
- };
-
- ss1 {
- };
- };
-
- subnode@2 {
- reg = <2>;
- linux,phandle = <0x2000>;
- prop-int = <123456789>;
- #address-cells = <1>;
- #size-cells = <0>;
-
- ssn0: subsubnode@0 {
- reg = <0>;
- phandle = <0x2001>;
- compatible = "subsubnode2", "subsubnode";
- prop-int = <0726746425>;
- };
-
- ss2 {
- };
- };
-};
diff --git a/tests/test_tree1_delete.dts b/tests/test_tree1_delete.dts
index a2f1bfd..b95ef1e 100644
--- a/tests/test_tree1_delete.dts
+++ b/tests/test_tree1_delete.dts
@@ -1,6 +1,6 @@
/dts-v1/;
-/include/ "test_tree1_body.dtsi"
+/include/ "test_tree1.dts"
/ {
nonexistant-property = <0xdeadbeef>;