blob: cc2feed6464fb3d3f19f7fc188e8a48cac436698 [file] [log] [blame]
Jagan Tekib22da752020-01-10 00:16:21 +05301// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
4 */
5
6#include <config.h>
7
Simon Glass6667c0e2025-04-13 19:59:34 +00008#ifdef CONFIG_ARM64
9#define FIT_ARCH "arm64"
10#else
11#define FIT_ARCH "arm"
12#endif
13
14#if defined(CONFIG_SPL_GZIP)
15#define FIT_UBOOT_COMP "gzip"
16#elif defined(CONFIG_SPL_LZMA)
17#define FIT_UBOOT_COMP "lzma"
18#else
19#define FIT_UBOOT_COMP "none"
20#endif
21
Jonas Karlman6037d042025-04-13 19:59:39 +000022/*
23 * SHA256 should be enabled in SPL when signature validation is involved,
24 * CRC32 should only be used for basic checksum validation of FIT images.
25 */
26#if defined(CONFIG_SPL_FIT_SIGNATURE)
27#if defined(CONFIG_SPL_SHA256)
28#define FIT_HASH_ALGO "sha256"
29#elif defined(CONFIG_SPL_CRC32)
30#define FIT_HASH_ALGO "crc32"
31#endif
32#endif
33
Simon Glass23265882025-04-13 19:59:35 +000034#if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE))
35#define HAS_FIT
36#endif
37
Jagan Tekib22da752020-01-10 00:16:21 +053038/ {
Simon Glass88315f72020-07-19 13:55:57 -060039 binman: binman {
40 multiple-images;
41 };
42};
43
Jagan Tekiffce0ff2023-01-27 12:51:33 +053044#ifdef CONFIG_SPL
Simon Glass88315f72020-07-19 13:55:57 -060045&binman {
Simon Glass23265882025-04-13 19:59:35 +000046#ifdef HAS_FIT
47 fit_template: template-1 {
Simon Glassa5bf4242025-04-13 19:59:36 +000048 type = "fit";
Alex Beec32c9dc2023-07-18 16:57:11 +020049#ifdef CONFIG_ARM64
Simon Glassa5bf4242025-04-13 19:59:36 +000050 description = "FIT image for U-Boot with bl31 (TF-A)";
Alex Beec32c9dc2023-07-18 16:57:11 +020051#else
Simon Glassa5bf4242025-04-13 19:59:36 +000052 description = "FIT image with OP-TEE";
Alex Beec32c9dc2023-07-18 16:57:11 +020053#endif
Simon Glassa5bf4242025-04-13 19:59:36 +000054 #address-cells = <1>;
55 fit,fdt-list = "of-list";
56 fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
57 fit,align = <512>;
58 images {
59 u-boot {
60 description = "U-Boot";
61 type = "standalone";
62 os = "u-boot";
63 arch = FIT_ARCH;
64 compression = FIT_UBOOT_COMP;
65 load = <CONFIG_TEXT_BASE>;
66 entry = <CONFIG_TEXT_BASE>;
67 u-boot-nodtb {
Simon Glass6667c0e2025-04-13 19:59:34 +000068 compress = FIT_UBOOT_COMP;
Simon Glassa5bf4242025-04-13 19:59:36 +000069 };
Jonas Karlman6037d042025-04-13 19:59:39 +000070#ifdef FIT_HASH_ALGO
Simon Glassa5bf4242025-04-13 19:59:36 +000071 hash {
Jonas Karlman6037d042025-04-13 19:59:39 +000072 algo = FIT_HASH_ALGO;
Simon Glass4de36172023-01-07 14:07:18 -070073 };
Simon Glassa5bf4242025-04-13 19:59:36 +000074#endif
75 };
Simon Glass4de36172023-01-07 14:07:18 -070076
Alex Beec32c9dc2023-07-18 16:57:11 +020077#ifdef CONFIG_ARM64
Simon Glassa5bf4242025-04-13 19:59:36 +000078 @atf-SEQ {
79 fit,operation = "split-elf";
80 description = "ARM Trusted Firmware";
81 type = "firmware";
82 arch = FIT_ARCH;
83 os = "arm-trusted-firmware";
84 compression = "none";
85 fit,load;
86 fit,entry;
87 fit,data;
Simon Glass4de36172023-01-07 14:07:18 -070088
Simon Glassa5bf4242025-04-13 19:59:36 +000089 atf-bl31 {
90 };
Jonas Karlman6037d042025-04-13 19:59:39 +000091#ifdef FIT_HASH_ALGO
Simon Glassa5bf4242025-04-13 19:59:36 +000092 hash {
Jonas Karlman6037d042025-04-13 19:59:39 +000093 algo = FIT_HASH_ALGO;
Simon Glass4de36172023-01-07 14:07:18 -070094 };
Simon Glassa5bf4242025-04-13 19:59:36 +000095#endif
96 };
97 @tee-SEQ {
98 fit,operation = "split-elf";
99 description = "TEE";
100 type = "tee";
101 arch = FIT_ARCH;
102 os = "tee";
103 compression = "none";
104 fit,load;
105 fit,entry;
106 fit,data;
Simon Glass4de36172023-01-07 14:07:18 -0700107
Simon Glassa5bf4242025-04-13 19:59:36 +0000108 tee-os {
109 optional;
110 };
Jonas Karlman6037d042025-04-13 19:59:39 +0000111#ifdef FIT_HASH_ALGO
Simon Glassa5bf4242025-04-13 19:59:36 +0000112 hash {
Jonas Karlman6037d042025-04-13 19:59:39 +0000113 algo = FIT_HASH_ALGO;
Simon Glass4de36172023-01-07 14:07:18 -0700114 };
Simon Glassa5bf4242025-04-13 19:59:36 +0000115#endif
116 };
Simon Glass6667c0e2025-04-13 19:59:34 +0000117#else /* !CONFIG_ARM64 */
Simon Glassa5bf4242025-04-13 19:59:36 +0000118 op-tee {
119 description = "OP-TEE";
120 type = "tee";
121 arch = FIT_ARCH;
122 os = "tee";
123 compression = "none";
124 load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
125 entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
Alex Beec32c9dc2023-07-18 16:57:11 +0200126
Simon Glassa5bf4242025-04-13 19:59:36 +0000127 tee-os {
128 };
Jonas Karlman6037d042025-04-13 19:59:39 +0000129#ifdef FIT_HASH_ALGO
Simon Glassa5bf4242025-04-13 19:59:36 +0000130 hash {
Jonas Karlman6037d042025-04-13 19:59:39 +0000131 algo = FIT_HASH_ALGO;
Alex Beec32c9dc2023-07-18 16:57:11 +0200132 };
Simon Glassa5bf4242025-04-13 19:59:36 +0000133#endif
134 };
Simon Glass6667c0e2025-04-13 19:59:34 +0000135#endif /* CONFIG_ARM64 */
Simon Glass4de36172023-01-07 14:07:18 -0700136
Simon Glassa5bf4242025-04-13 19:59:36 +0000137 @fdt-SEQ {
138 description = "fdt-NAME";
139 compression = "none";
140 type = "flat_dt";
Jonas Karlman6037d042025-04-13 19:59:39 +0000141#ifdef FIT_HASH_ALGO
Simon Glassa5bf4242025-04-13 19:59:36 +0000142 hash {
Jonas Karlman6037d042025-04-13 19:59:39 +0000143 algo = FIT_HASH_ALGO;
Simon Glass4de36172023-01-07 14:07:18 -0700144 };
Simon Glassa5bf4242025-04-13 19:59:36 +0000145#endif
Simon Glass4de36172023-01-07 14:07:18 -0700146 };
Simon Glassa5bf4242025-04-13 19:59:36 +0000147 };
Simon Glass4de36172023-01-07 14:07:18 -0700148
Simon Glassa5bf4242025-04-13 19:59:36 +0000149 configurations {
150 default = "@config-DEFAULT-SEQ";
151 @config-SEQ {
152 description = "NAME.dtb";
153 fdt = "fdt-SEQ";
Alex Beec32c9dc2023-07-18 16:57:11 +0200154#ifdef CONFIG_ARM64
Simon Glassa5bf4242025-04-13 19:59:36 +0000155 fit,firmware = "atf-1", "u-boot";
Alex Beec32c9dc2023-07-18 16:57:11 +0200156#else
Simon Glassa5bf4242025-04-13 19:59:36 +0000157 fit,firmware = "op-tee", "u-boot";
Alex Beec32c9dc2023-07-18 16:57:11 +0200158#endif
Simon Glassa5bf4242025-04-13 19:59:36 +0000159 fit,loadables;
Simon Glass36761d82025-04-13 19:59:38 +0000160 fit,compatible;
Simon Glass4de36172023-01-07 14:07:18 -0700161 };
Simon Glassa5bf4242025-04-13 19:59:36 +0000162 };
Simon Glass23265882025-04-13 19:59:35 +0000163 };
164#endif /* HAS_FIT */
165
166 simple-bin {
167 filename = "u-boot-rockchip.bin";
168 pad-byte = <0xff>;
169
170 mkimage {
171 filename = "idbloader.img";
172 args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
173 multiple-data-files;
174
175#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
176 rockchip-tpl {
177 };
178#elif defined(CONFIG_TPL)
179 u-boot-tpl {
180 };
181#endif
182 u-boot-spl {
183 };
Simon Glass4de36172023-01-07 14:07:18 -0700184 };
Simon Glass23265882025-04-13 19:59:35 +0000185
186#ifdef HAS_FIT
187 fit {
188 filename = "u-boot.itb";
189 insert-template = <&fit_template>;
Quentin Schulzd9ffa5e2022-09-02 15:10:52 +0200190#else
Jagan Tekib22da752020-01-10 00:16:21 +0530191 u-boot-img {
Simon Glass23265882025-04-13 19:59:35 +0000192#endif
Jagan Tekib22da752020-01-10 00:16:21 +0530193 offset = <CONFIG_SPL_PAD_TO>;
194 };
195 };
Quentin Schulz9c5217d2022-09-02 15:10:55 +0200196
197#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
198 simple-bin-spi {
199 filename = "u-boot-rockchip-spi.bin";
200 pad-byte = <0xff>;
201
202 mkimage {
203 filename = "idbloader-spi.img";
204 args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
Quentin Schulz9c5217d2022-09-02 15:10:55 +0200205 multiple-data-files;
206
Jonas Karlman38ad6c92023-02-25 19:01:34 +0000207#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
208 rockchip-tpl {
209 };
210#elif defined(CONFIG_TPL)
Quentin Schulz9c5217d2022-09-02 15:10:55 +0200211 u-boot-tpl {
212 };
213#endif
214 u-boot-spl {
215 };
216 };
217
Simon Glass23265882025-04-13 19:59:35 +0000218#ifdef HAS_FIT
Simon Glass4de36172023-01-07 14:07:18 -0700219 fit {
Simon Glass23265882025-04-13 19:59:35 +0000220 insert-template = <&fit_template>;
Quentin Schulz9c5217d2022-09-02 15:10:55 +0200221#else
222 u-boot-img {
223#endif
224 /* Sync with u-boot,spl-payload-offset if present */
225 offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
226 };
227 };
Simon Glass4de36172023-01-07 14:07:18 -0700228#endif /* CONFIG_ROCKCHIP_SPI_IMAGE */
Jagan Tekib22da752020-01-10 00:16:21 +0530229};
Simon Glass4de36172023-01-07 14:07:18 -0700230#endif /* CONFIG_SPL */