From 9df731a176aab8e03b984b681b1bea01ccff6644 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 07:23:06 +0000 Subject: [PATCH] rk3568 rt uboot init --- u-boot/arch/arm/mach-rockchip/uimage.c | 67 +++++++++++++-------------------- 1 files changed, 26 insertions(+), 41 deletions(-) diff --git a/u-boot/arch/arm/mach-rockchip/uimage.c b/u-boot/arch/arm/mach-rockchip/uimage.c index e805b12..e5f8416 100644 --- a/u-boot/arch/arm/mach-rockchip/uimage.c +++ b/u-boot/arch/arm/mach-rockchip/uimage.c @@ -12,8 +12,8 @@ #include <asm/arch/resource_img.h> #include <asm/arch/uimage.h> -static int uimage_load_one(struct blk_desc *dev_desc, disk_partition_t *part, - int pos_off, int size, void *dst) +int uimage_load_one(struct blk_desc *dev_desc, disk_partition_t *part, + int pos_off, int size, void *dst) { u32 blknum, blkoff; u32 unused; @@ -183,31 +183,23 @@ return 0; } -int uimage_init_resource(void) -{ - struct blk_desc *dev_desc; - disk_partition_t part; - image_header_t *hdr; - char *part_name; - ulong data, offset; - ulong size; #ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE - ulong dst; - int idx = 3; -#endif - int ret; +int uimage_init_resource(struct blk_desc *dev_desc) +{ + disk_partition_t part; + ulong data, offset, size; + image_header_t *hdr; + char *part_name = PART_BOOT; + int ret, idx = 3; + void *buf; - dev_desc = rockchip_get_bootdev(); - if (!dev_desc) { - printf("No dev_desc!\n"); - return ENODEV; - } + if (!dev_desc) + return -ENODEV; +#ifndef CONFIG_ANDROID_AB if (rockchip_get_boot_mode() == BOOT_MODE_RECOVERY) part_name = PART_RECOVERY; - else - part_name = PART_BOOT; - +#endif if (part_get_info_by_name(dev_desc, part_name, &part) < 0) { UIMG_I("No %s partition\n", part_name); return -ENODEV; @@ -215,35 +207,28 @@ hdr = uimage_get_hdr(dev_desc, &part); if (!hdr) - return -ENODEV; + return -EAGAIN; image_multi_getimg(hdr, idx, &data, &size); offset = data - (ulong)hdr; free(hdr); -#ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE - ulong fdt_addr; - - /* reserve enough space before fdt */ - fdt_addr = env_get_ulong("fdt_addr_r", 16, 0); - dst = (ulong)fdt_addr - - ALIGN(size, dev_desc->blksz) - CONFIG_SYS_FDT_PAD; - ret = uimage_load_one(dev_desc, &part, offset, size, (void *)dst); - if (ret) { - UIMG_I("Failed to load resource file, ret=%d\n", ret); - return ret; - } - - if (!sysmem_alloc_base(MEM_RESOURCE, (phys_addr_t)dst, - ALIGN(size, RK_BLK_SIZE))) + buf = memalign(ARCH_DMA_MINALIGN, ALIGN(size, dev_desc->blksz)); + if (!buf) return -ENOMEM; - ret = resource_create_ram_list(dev_desc, (void *)dst); + printf("RESC: '%s', blk@0x%08lx\n", part.name, + part.start + (offset / dev_desc->blksz)); + ret = uimage_load_one(dev_desc, &part, offset, size, buf); + if (ret) + return ret; + + ret = resource_setup_ram_list(dev_desc, buf); if (ret) { - UIMG_I("Failed to create resource list, ret=%d\n", ret); + UIMG_I("Failed to setup resource ram list, ret=%d\n", ret); return ret; } -#endif return 0; } +#endif -- Gitblit v1.6.2