Browse Source

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>
main
David Gibson 8 years ago
parent
commit
1ef86ad2c2
  1. 35
      dtc-parser.y

35
dtc-parser.y

@ -74,8 +74,8 @@ extern bool treesource_error;


%type <data> propdata %type <data> propdata
%type <data> propdataprefix %type <data> propdataprefix
%type <flags> versioninfo %type <flags> header
%type <flags> plugindecl %type <flags> headers
%type <re> memreserve %type <re> memreserve
%type <re> memreserves %type <re> memreserves
%type <array> arrayprefix %type <array> arrayprefix
@ -106,32 +106,31 @@ extern bool treesource_error;
%% %%


sourcefile: sourcefile:
versioninfo plugindecl memreserves devicetree headers memreserves devicetree
{ {
the_boot_info = build_boot_info($1 | $2, $3, $4, the_boot_info = build_boot_info($1, $2, $3,
guess_boot_cpuid($4)); guess_boot_cpuid($3));
} }
; ;


versioninfo: header:
v1tag DT_V1 ';'
{ {
$$ = DTSF_V1; $$ = DTSF_V1;
} }
; | DT_V1 ';' DT_PLUGIN ';'

v1tag:
DT_V1 ';'
| DT_V1 ';' v1tag

plugindecl:
DT_PLUGIN ';'
{ {
$$ = DTSF_PLUGIN; $$ = DTSF_V1 | DTSF_PLUGIN;
} }
| /* empty */ ;

headers:
header
| header headers
{ {
$$ = 0; if ($2 != $1)
ERROR(&@2, "Header flags don't match earlier ones");
$$ = $1;
} }
; ;



Loading…
Cancel
Save