diff options
author | Rasmus Villemoes <rasmus.villemoes@prevas.dk> | 2022-06-20 11:53:19 +0300 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2022-07-25 16:35:34 +0300 |
commit | 748da8abb0d020bedbfa4dbc7b3cafdaf9bc60f1 (patch) | |
tree | 7c4d901c63072ec40119b90cd99ea90df65e232e /arch/arm/include/asm | |
parent | de20c5d405a39cd4560495c342412e388fa73a52 (diff) | |
download | u-boot-748da8abb0d020bedbfa4dbc7b3cafdaf9bc60f1.tar.xz |
imx8: add rom api wrappers
The ROM API is thoroughly undocumented, but apparently passing the xor
of the real arguments as an extra argument is required [1]. Also, we
need to do the "save gd/restore gd" dance. These are both error-prone,
and lead to a lot of code duplication.
Since both imx8m[np] and imx8ulp SOCs have this, add a separate
translation unit which is included precisely when the new
CONFIG_IMX8_ROMAPI symbol is set, which provide convenience wrappers
that take care of computing the xor value as well as doing the gd
dance, and that thus have a more intuitive API. Subsequent patches
will make use of these to reduce boilerplate.
[1] One wonders, for example, if the check is only applied to the
lower 32 bits, or if we're implicitly relying on all 64-bit pointer
values we're passing effectively have 0 in the upper 32 bits.
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Diffstat (limited to 'arch/arm/include/asm')
-rw-r--r-- | arch/arm/include/asm/mach-imx/sys_proto.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h index 02816197c1..fadb67d04a 100644 --- a/arch/arm/include/asm/mach-imx/sys_proto.h +++ b/arch/arm/include/asm/mach-imx/sys_proto.h @@ -178,6 +178,10 @@ enum boot_dev_type_e { #define ROM_API_OKAY 0xF0 extern struct rom_api *g_rom_api; + +u32 rom_api_download_image(u8 *dest, u32 offset, u32 size); +u32 rom_api_query_boot_infor(u32 info_type, u32 *info); + #endif /* For i.MX ULP */ |