mirror of https://github.com/OpenIPC/firmware.git
77 lines
1.6 KiB
Diff
77 lines
1.6 KiB
Diff
diff -drupN a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y
|
|
--- a/scripts/dtc/dtc-parser.y 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/scripts/dtc/dtc-parser.y 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -19,6 +19,7 @@
|
|
*/
|
|
%{
|
|
#include <stdio.h>
|
|
+#include <inttypes.h>
|
|
|
|
#include "dtc.h"
|
|
#include "srcpos.h"
|
|
@@ -31,7 +32,7 @@ extern void yyerror(char const *s);
|
|
treesource_error = true; \
|
|
} while (0)
|
|
|
|
-extern struct boot_info *the_boot_info;
|
|
+extern struct dt_info *parser_output;
|
|
extern bool treesource_error;
|
|
%}
|
|
|
|
@@ -52,9 +53,11 @@ extern bool treesource_error;
|
|
struct node *nodelist;
|
|
struct reserve_info *re;
|
|
uint64_t integer;
|
|
+ unsigned int flags;
|
|
}
|
|
|
|
%token DT_V1
|
|
+%token DT_PLUGIN
|
|
%token DT_MEMRESERVE
|
|
%token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR
|
|
%token DT_BITS
|
|
@@ -71,6 +74,8 @@ extern bool treesource_error;
|
|
|
|
%type <data> propdata
|
|
%type <data> propdataprefix
|
|
+%type <flags> header
|
|
+%type <flags> headers
|
|
%type <re> memreserve
|
|
%type <re> memreserves
|
|
%type <array> arrayprefix
|
|
@@ -101,10 +106,31 @@ extern bool treesource_error;
|
|
%%
|
|
|
|
sourcefile:
|
|
- DT_V1 ';' memreserves devicetree
|
|
+ headers memreserves devicetree
|
|
{
|
|
- the_boot_info = build_boot_info($3, $4,
|
|
- guess_boot_cpuid($4));
|
|
+ parser_output = build_dt_info($1, $2, $3,
|
|
+ guess_boot_cpuid($3));
|
|
+ }
|
|
+ ;
|
|
+
|
|
+header:
|
|
+ DT_V1 ';'
|
|
+ {
|
|
+ $$ = DTSF_V1;
|
|
+ }
|
|
+ | DT_V1 ';' DT_PLUGIN ';'
|
|
+ {
|
|
+ $$ = DTSF_V1 | DTSF_PLUGIN;
|
|
+ }
|
|
+ ;
|
|
+
|
|
+headers:
|
|
+ header
|
|
+ | header headers
|
|
+ {
|
|
+ if ($2 != $1)
|
|
+ ERROR(&@2, "Header flags don't match earlier ones");
|
|
+ $$ = $1;
|
|
}
|
|
;
|
|
|