dtc: Clean up /dts-v1/ and /plugin/ handling in grammar

First remove the non-terminal name 'versioninfo' - /plugin/ doesn't really
indicate a "version" per se, and version could be confused with the dtb
output version.

Second allow the /dts-v1/; /plugin/; sequence to be repeated, for easier
use of include files - but ensure that all copies match, so you can't
include a file declaring /plugin/ in one that doesn't, or vice versa.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
diff --git a/dtc-parser.y b/dtc-parser.y
index 27d358f..761ce8a 100644
--- a/dtc-parser.y
+++ b/dtc-parser.y
@@ -74,8 +74,8 @@
 
 %type <data> propdata
 %type <data> propdataprefix
-%type <flags> versioninfo
-%type <flags> plugindecl
+%type <flags> header
+%type <flags> headers
 %type <re> memreserve
 %type <re> memreserves
 %type <array> arrayprefix
@@ -106,32 +106,31 @@
 %%
 
 sourcefile:
-	  versioninfo plugindecl memreserves devicetree
+	  headers memreserves devicetree
 		{
-			the_boot_info = build_boot_info($1 | $2, $3, $4,
-							guess_boot_cpuid($4));
+			the_boot_info = build_boot_info($1, $2, $3,
+			                                guess_boot_cpuid($3));
 		}
 	;
 
-versioninfo:
-	v1tag
+header:
+	  DT_V1 ';'
 		{
 			$$ = DTSF_V1;
 		}
+	| DT_V1 ';' DT_PLUGIN ';'
+		{
+			$$ = DTSF_V1 | DTSF_PLUGIN;
+		}
 	;
 
-v1tag:
-	  DT_V1 ';'
-	| DT_V1 ';' v1tag
-
-plugindecl:
-	DT_PLUGIN ';'
+headers:
+	  header
+	| header headers
 		{
-			$$ = DTSF_PLUGIN;
-		}
-	| /* empty */
-		{
-			$$ = 0;
+			if ($2 != $1)
+				ERROR(&@2, "Header flags don't match earlier ones");
+			$$ = $1;
 		}
 	;