DTC failure on /memreserve/ if moved after /include/

Jon Loeliger jdl at jdl.com
Tue May 3 07:06:01 EST 2011


> The following from tegra-harmony.dts compiles fine:
> 
>     /dts-v1/;
> 
>     /memreserve/ 0x1c000000 0x04000000;
>     /include/ "tegra250.dts"
> 
>     / {
> 
> However, if I re-order this as follows:
> 
>     /dts-v1/;
>     /include/ "tegra250.dts"
> 
>     /memreserve/ 0x1c000000 0x04000000;
> 
>     / {
> 
> Then dtc fails:
>
> Is this a dtc bug, or does the DTS syntax actually disallow this?


Correct.  The grammar is explicitly:

    sourcefile:
	      DT_V1 ';' memreserves devicetree
	    ;

    memreserves:
	      /* empty */
	    | memreserve memreserves
	    ;

    memreserve:
	      DT_MEMRESERVE addr addr ';'


and then much later devicetree leads to...:


    propdata:
	      propdataprefix DT_STRING
	    | propdataprefix '<' celllist '>'
	    | propdataprefix '[' bytestring ']'
	    | propdataprefix DT_REF
	    | propdataprefix DT_INCBIN '(' DT_STRING ',' addr ',' addr ')'

where INCBIN is the include mechanism.

jdl


More information about the devicetree-discuss mailing list