imx8: use ROM API wrappers in spl_imx_romapi.c
authorRasmus Villemoes <rasmus.villemoes@prevas.dk>
Mon, 20 Jun 2022 08:53:20 +0000 (10:53 +0200)
committerStefano Babic <sbabic@denx.de>
Mon, 25 Jul 2022 13:35:34 +0000 (15:35 +0200)
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>
arch/arm/mach-imx/spl_imx_romapi.c

index c47f5a6..cc3c125 100644 (file)
@@ -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");