The VPL image is immutable and has a single VPL binary plus a devicetree
for each board we need to support.

The devicetree is run through fdtgrep to remove unwanted nodes and
properties and reduce its size.

Signed-off-by: Simon Glass <[email protected]>
---

 arch/arm/dts/rockchip-u-boot.dtsi | 94 ++++++++++++++++++++++++++++++-
 1 file changed, 93 insertions(+), 1 deletion(-)

diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi
index c87d17db00e..0611533a310 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -270,6 +270,97 @@
                        };
                };
 
+#ifdef CONFIG_VPL
+               vpl {
+                       type = "fit";
+                       offset = <(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 
0x200 + 0x8000)>;
+                       description = "FIT image for U-Boot TPL";
+                       #address-cells = <1>;
+                       fit,fdt-list = "of-list";
+                       fit,align = <512>;
+                       fit,external-offset = <0>;
+                       images {
+                               image-vpl {
+                                       description = "U-Boot VPL";
+                                       type = "firmware";
+                                       os = "u-boot";
+                                       arch = ARCH;
+                                       compression = "lz4";
+                                       load = <CONFIG_VPL_TEXT_BASE>;
+                                       entry = <CONFIG_VPL_TEXT_BASE>;
+                                       section {
+                                               compress = "lz4";
+                                               u-boot-vpl-nodtb {
+                                                       symbols-base = <0>;
+                                               };
+                                               u-boot-vpl-bss-pad {
+                                               };
+                                       };
+                               };
+                               @fdt-SEQ {
+                                       description = "fdt-NAME";
+                                       compression = "none";
+                                       type = "flat_dt";
+                                       fit,fdt-phase = "vpl";
+                               };
+                       };
+                       configurations {
+                               default = "@config-DEFAULT-SEQ";
+                               @config-SEQ {
+                                       description = "NAME.dtb";
+                                       fdt = "fdt-SEQ";
+                                       fit,firmware = "image-vpl";
+                                       fit,loadables;
+                                       fit,compatible;
+                               };
+                       };
+               };
+# ifdef CONFIG_BOOTMETH_VBE_ABREC
+               vbe-a {
+                       type = "section";
+                       offset = <(CONFIG_SPL_PAD_TO + 0x8000)>;
+                       spl-a {
+                               insert-template = <&spl_template>;
+                               size = <0x100000>;
+                       };
+
+                       u-boot-a {
+                               insert-template = <&common_part>;
+                       };
+               };
+               vbe-b {
+                       type = "section";
+                       offset = <(0x1000000)>;
+                       spl-b {
+                               insert-template = <&spl_template>;
+                               size = <0x100000>;
+                       };
+
+                       u-boot-b {
+                               insert-template = <&common_part>;
+                       };
+               };
+               vbe-recovery {
+                       type = "section";
+                       offset = <0x1800000>;
+                       spl-recovery {
+                               insert-template = <&spl_template>;
+                               size = <0x100000>;
+                       };
+
+                       u-boot-recovery {
+                               insert-template = <&common_part>;
+                       };
+               };
+# else /* CONFIG_BOOTMETH_VBE_SIMPLE */
+               vbe {
+                       type = "fit";
+                       offset = <(CONFIG_SPL_PAD_TO + 0x8000)>;
+                       insert-template = <&common_part>;
+               };
+# endif /* VBE method */
+#else /* !VPL */
+
 #ifdef HAS_FIT
                fit {
                        offset = <CONFIG_SPL_PAD_TO>;
@@ -279,7 +370,8 @@
                u-boot-img {
                        offset = <CONFIG_SPL_PAD_TO>;
                };
-#endif
+#endif /* HAS_FIT */
+#endif /* VPL */
                fdtmap {
                };
        };
-- 
2.43.0

Reply via email to