Without using overlays the configuration would be as follows for every case::
- /dts-v1/;
- / {
- images {
- kernel {
- data = /incbin/("./zImage");
- type = "kernel";
- arch = "arm";
- os = "linux";
- load = <0x82000000>;
- entry = <0x82000000>;
- };
- fdt-1 {
- data = /incbin/("./foo-reva.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- fdt-2 {
- data = /incbin/("./foo-revb.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- fdt-3 {
- data = /incbin/("./foo-reva-bar.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- fdt-4 {
- data = /incbin/("./foo-revb-bar.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- fdt-5 {
- data = /incbin/("./foo-revb-baz.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- fdt-6 {
- data = /incbin/("./foo-revb-bar-baz.dtb");
- type = "flat_dt";
- arch = "arm";
- };
- };
-
- configurations {
- default = "foo-reva.dtb;
- foo-reva.dtb {
- kernel = "kernel";
- fdt = "fdt-1";
- };
- foo-revb.dtb {
- kernel = "kernel";
- fdt = "fdt-2";
- };
- foo-reva-bar.dtb {
- kernel = "kernel";
- fdt = "fdt-3";
- };
- foo-revb-bar.dtb {
- kernel = "kernel";
- fdt = "fdt-4";
- };
- foo-revb-baz.dtb {
- kernel = "kernel";
- fdt = "fdt-5";
- };
- foo-revb-bar-baz.dtb {
- kernel = "kernel";
- fdt = "fdt-6";
- };
- };
- };
+ /dts-v1/;
+ / {
+ images {
+ kernel {
+ data = /incbin/("./zImage");
+ type = "kernel";
+ arch = "arm";
+ os = "linux";
+ load = <0x82000000>;
+ entry = <0x82000000>;
+ };
+ fdt-1 {
+ data = /incbin/("./foo-reva.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ fdt-2 {
+ data = /incbin/("./foo-revb.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ fdt-3 {
+ data = /incbin/("./foo-reva-bar.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ fdt-4 {
+ data = /incbin/("./foo-revb-bar.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ fdt-5 {
+ data = /incbin/("./foo-revb-baz.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ fdt-6 {
+ data = /incbin/("./foo-revb-bar-baz.dtb");
+ type = "flat_dt";
+ arch = "arm";
+ };
+ };
+
+ configurations {
+ default = "foo-reva.dtb";
+ foo-reva.dtb {
+ kernel = "kernel";
+ fdt = "fdt-1";
+ };
+ foo-revb.dtb {
+ kernel = "kernel";
+ fdt = "fdt-2";
+ };
+ foo-reva-bar.dtb {
+ kernel = "kernel";
+ fdt = "fdt-3";
+ };
+ foo-revb-bar.dtb {
+ kernel = "kernel";
+ fdt = "fdt-4";
+ };
+ foo-revb-baz.dtb {
+ kernel = "kernel";
+ fdt = "fdt-5";
+ };
+ foo-revb-bar-baz.dtb {
+ kernel = "kernel";
+ fdt = "fdt-6";
+ };
+ };
+ };
Note the blob needs to be compiled for each case and the combinatorial explosion of
configurations. A typical device tree blob is in the low hundreds of kbytes so a