imx8: use ROM API wrappers in spl_imx_romapi.c
Simplify the use of the ROM API by using the wrappers that take care of saving/restoring gd and computing the xor value. This makes the generated code smaller and the C code easier to read. Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
This commit is contained in:
committed by
Stefano Babic
parent
748da8abb0
commit
f8001fdd2c
@@ -18,15 +18,11 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
/* Caller need ensure the offset and size to align with page size */
|
||||
ulong spl_romapi_raw_seekable_read(u32 offset, u32 size, void *buf)
|
||||
{
|
||||
volatile gd_t *pgd = gd;
|
||||
int ret;
|
||||
|
||||
debug("%s 0x%x, size 0x%x\n", __func__, offset, size);
|
||||
|
||||
ret = g_rom_api->download_image(buf, offset, size,
|
||||
((uintptr_t)buf) ^ offset ^ size);
|
||||
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image(buf, offset, size);
|
||||
|
||||
if (ret == ROM_API_OKAY)
|
||||
return size;
|
||||
@@ -73,21 +69,15 @@ static int spl_romapi_load_image_seekable(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev,
|
||||
u32 rom_bt_dev)
|
||||
{
|
||||
volatile gd_t *pgd = gd;
|
||||
int ret;
|
||||
u32 offset;
|
||||
u32 pagesize, size;
|
||||
struct image_header *header;
|
||||
u32 image_offset;
|
||||
|
||||
ret = g_rom_api->query_boot_infor(QUERY_IVT_OFF, &offset,
|
||||
((uintptr_t)&offset) ^ QUERY_IVT_OFF);
|
||||
ret |= g_rom_api->query_boot_infor(QUERY_PAGE_SZ, &pagesize,
|
||||
((uintptr_t)&pagesize) ^ QUERY_PAGE_SZ);
|
||||
ret |= g_rom_api->query_boot_infor(QUERY_IMG_OFF, &image_offset,
|
||||
((uintptr_t)&image_offset) ^ QUERY_IMG_OFF);
|
||||
|
||||
set_gd(pgd);
|
||||
ret = rom_api_query_boot_infor(QUERY_IVT_OFF, &offset);
|
||||
ret |= rom_api_query_boot_infor(QUERY_PAGE_SZ, &pagesize);
|
||||
ret |= rom_api_query_boot_infor(QUERY_IMG_OFF, &image_offset);
|
||||
|
||||
if (ret != ROM_API_OKAY) {
|
||||
puts("ROMAPI: Failure query boot infor pagesize/offset\n");
|
||||
@@ -102,9 +92,7 @@ static int spl_romapi_load_image_seekable(struct spl_image_info *spl_image,
|
||||
offset = spl_romapi_get_uboot_base(image_offset, rom_bt_dev);
|
||||
|
||||
size = ALIGN(sizeof(struct image_header), pagesize);
|
||||
ret = g_rom_api->download_image((u8 *)header, offset, size,
|
||||
((uintptr_t)header) ^ offset ^ size);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image((u8 *)header, offset, size);
|
||||
|
||||
if (ret != ROM_API_OKAY) {
|
||||
printf("ROMAPI: download failure offset 0x%x size 0x%x\n",
|
||||
@@ -251,7 +239,6 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
struct spl_load_info load;
|
||||
volatile gd_t *pgd = gd;
|
||||
u32 pagesize, pg;
|
||||
int ret;
|
||||
int i = 0;
|
||||
@@ -260,9 +247,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
int imagesize;
|
||||
int total;
|
||||
|
||||
ret = g_rom_api->query_boot_infor(QUERY_PAGE_SZ, &pagesize,
|
||||
((uintptr_t)&pagesize) ^ QUERY_PAGE_SZ);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_query_boot_infor(QUERY_PAGE_SZ, &pagesize);
|
||||
|
||||
if (ret != ROM_API_OKAY)
|
||||
puts("failure at query_boot_info\n");
|
||||
@@ -272,9 +257,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
pg = 1024;
|
||||
|
||||
for (i = 0; i < 640; i++) {
|
||||
ret = g_rom_api->download_image(p, 0, pg,
|
||||
((uintptr_t)p) ^ pg);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image(p, 0, pg);
|
||||
|
||||
if (ret != ROM_API_OKAY) {
|
||||
puts("Steam(USB) download failure\n");
|
||||
@@ -294,8 +277,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
}
|
||||
|
||||
if (p - phdr < img_header_size()) {
|
||||
ret = g_rom_api->download_image(p, 0, pg, ((uintptr_t)p) ^ pg);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image(p, 0, pg);
|
||||
|
||||
if (ret != ROM_API_OKAY) {
|
||||
puts("Steam(USB) download failure\n");
|
||||
@@ -317,9 +299,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
|
||||
printf("Need continue download %d\n", imagesize);
|
||||
|
||||
ret = g_rom_api->download_image(p, 0, imagesize,
|
||||
((uintptr_t)p) ^ imagesize);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image(p, 0, imagesize);
|
||||
|
||||
p += imagesize;
|
||||
|
||||
@@ -341,9 +321,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
|
||||
printf("Download %d, Total size %d\n", imagesize, total);
|
||||
|
||||
ret = g_rom_api->download_image(p, 0, imagesize,
|
||||
((uintptr_t)p) ^ imagesize);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_download_image(p, 0, imagesize);
|
||||
if (ret != ROM_API_OKAY)
|
||||
printf("ROM download failure %d\n", imagesize);
|
||||
|
||||
@@ -362,13 +340,10 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
|
||||
int board_return_to_bootrom(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
volatile gd_t *pgd = gd;
|
||||
int ret;
|
||||
u32 boot;
|
||||
|
||||
ret = g_rom_api->query_boot_infor(QUERY_BT_DEV, &boot,
|
||||
((uintptr_t)&boot) ^ QUERY_BT_DEV);
|
||||
set_gd(pgd);
|
||||
ret = rom_api_query_boot_infor(QUERY_BT_DEV, &boot);
|
||||
|
||||
if (ret != ROM_API_OKAY) {
|
||||
puts("ROMAPI: failure at query_boot_info\n");
|
||||
|
||||
Reference in New Issue
Block a user