Skip to content
Snippets Groups Projects
Select Git revision
0 results

fdt_overlay.c

Forked from Reform / reform-boundary-uboot
Loading
  • Pantelis Antoniou's avatar
    f00c36a0
    fdt: Allow stacked overlays phandle references · f00c36a0
    Pantelis Antoniou authored
    
    This patch enables an overlay to refer to a previous overlay's
    labels by performing a merge of symbol information at application
    time.
    
    In a nutshell it allows an overlay to refer to a symbol that a previous
    overlay has defined. It requires both the base and all the overlays
    to be compiled with the -@ command line switch so that symbol
    information is included.
    
    base.dts
    --------
    
    	/dts-v1/;
    	/ {
    		foo: foonode {
    			foo-property;
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o base.dtb base.dts
    
    bar.dts
    -------
    
    	/dts-v1/;
    	/plugin/;
    	/ {
    		fragment@1 {
    			target = <&foo>;
    			__overlay__ {
    				overlay-1-property;
    				bar: barnode {
    					bar-property;
    				};
    			};
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o bar.dtb bar.dts
    
    baz.dts
    -------
    
    	/dts-v1/;
    	/plugin/;
    	/ {
    		fragment@1 {
    			target = <&bar>;
    			__overlay__ {
    				overlay-2-property;
    				baz: baznode {
    					baz-property;
    				};
    			};
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o baz.dtb baz.dts
    
    Applying the overlays:
    
    	$ fdtoverlay -i base.dtb -o target.dtb bar.dtb baz.dtb
    
    Dumping:
    
    	$ fdtdump target.dtb
    	/ {
                foonode {
                    overlay-1-property;
                    foo-property;
                    linux,phandle = <0x00000001>;
                    phandle = <0x00000001>;
                    barnode {
                        overlay-2-property;
                        phandle = <0x00000002>;
                        linux,phandle = <0x00000002>;
                        bar-property;
                        baznode {
                            phandle = <0x00000003>;
                            linux,phandle = <0x00000003>;
                            baz-property;
                        };
                    };
                };
                __symbols__ {
                    baz = "/foonode/barnode/baznode";
                    bar = "/foonode/barnode";
                    foo = "/foonode";
                };
    	};
    
    Signed-off-by: default avatarPantelis Antoniou <pantelis.antoniou@konsulko.com>
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Acked-by: default avatarSimon Glass <sjg@chromium.org>
    f00c36a0
    History
    fdt: Allow stacked overlays phandle references
    Pantelis Antoniou authored
    
    This patch enables an overlay to refer to a previous overlay's
    labels by performing a merge of symbol information at application
    time.
    
    In a nutshell it allows an overlay to refer to a symbol that a previous
    overlay has defined. It requires both the base and all the overlays
    to be compiled with the -@ command line switch so that symbol
    information is included.
    
    base.dts
    --------
    
    	/dts-v1/;
    	/ {
    		foo: foonode {
    			foo-property;
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o base.dtb base.dts
    
    bar.dts
    -------
    
    	/dts-v1/;
    	/plugin/;
    	/ {
    		fragment@1 {
    			target = <&foo>;
    			__overlay__ {
    				overlay-1-property;
    				bar: barnode {
    					bar-property;
    				};
    			};
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o bar.dtb bar.dts
    
    baz.dts
    -------
    
    	/dts-v1/;
    	/plugin/;
    	/ {
    		fragment@1 {
    			target = <&bar>;
    			__overlay__ {
    				overlay-2-property;
    				baz: baznode {
    					baz-property;
    				};
    			};
    		};
    	};
    
    	$ dtc -@ -I dts -O dtb -o baz.dtb baz.dts
    
    Applying the overlays:
    
    	$ fdtoverlay -i base.dtb -o target.dtb bar.dtb baz.dtb
    
    Dumping:
    
    	$ fdtdump target.dtb
    	/ {
                foonode {
                    overlay-1-property;
                    foo-property;
                    linux,phandle = <0x00000001>;
                    phandle = <0x00000001>;
                    barnode {
                        overlay-2-property;
                        phandle = <0x00000002>;
                        linux,phandle = <0x00000002>;
                        bar-property;
                        baznode {
                            phandle = <0x00000003>;
                            linux,phandle = <0x00000003>;
                            baz-property;
                        };
                    };
                };
                __symbols__ {
                    baz = "/foonode/barnode/baznode";
                    bar = "/foonode/barnode";
                    foo = "/foonode";
                };
    	};
    
    Signed-off-by: default avatarPantelis Antoniou <pantelis.antoniou@konsulko.com>
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Acked-by: default avatarSimon Glass <sjg@chromium.org>