Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • early-display
  • variant-emmc-nvme-boot
  • 2023-01-25
  • v3
  • variant-emmc-nvme-boot
  • 2020-06-01
7 results

fdt_overlay.c

Blame
  • Forked from Reform / reform-boundary-uboot
    Source project has a limited visibility.
    • 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>