From 17dab7023959256224e800dd77cae57d8ecfaec0 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Mon, 2 Jun 2014 15:23:40 +1000 Subject: Alter grammar to allow multiple /dts-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 --- dtc-parser.y | 11 ++++++++--- tests/test_tree1.dts | 44 +++++++++++++++++++++++++++++++++++++++++++- tests/test_tree1_body.dtsi | 43 ------------------------------------------- tests/test_tree1_delete.dts | 2 +- 4 files changed, 52 insertions(+), 48 deletions(-) delete mode 100644 tests/test_tree1_body.dtsi 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>; -- cgit v1.2.1