hc
2023-11-06 9df731a176aab8e03b984b681b1bea01ccff6644
u-boot/arch/arm/mach-rockchip/fit.c
....@@ -142,14 +142,14 @@
142142 {
143143 __maybe_unused int conf_noffset;
144144 disk_partition_t part;
145
- char *part_name;
145
+ char *part_name = PART_BOOT;
146146 void *fit, *fdt;
147147 int blk_num;
148148
149
+#ifndef CONFIG_ANDROID_AB
149150 if (rockchip_get_boot_mode() == BOOT_MODE_RECOVERY)
150151 part_name = PART_RECOVERY;
151
- else
152
- part_name = PART_BOOT;
152
+#endif
153153
154154 if (part_get_info_by_name(dev_desc, part_name, &part) < 0) {
155155 FIT_I("No %s partition\n", part_name);
....@@ -201,6 +201,7 @@
201201 printf("%s: ", fdt_get_name(fit, conf_noffset, NULL));
202202 if (fit_config_verify(fit, conf_noffset)) {
203203 puts("\n");
204
+ /* don't remove this failure handle */
204205 run_command("download", 0);
205206 hang();
206207 }
....@@ -246,6 +247,7 @@
246247 {
247248 int ret;
248249
250
+ /* free for fit_image_fixup_alloc(FIT_FDT_PROP) to re-alloc */
249251 if ((gd->flags & GD_FLG_KDTB_READY) && !gd->fdt_blob_kern)
250252 sysmem_free((phys_addr_t)gd->fdt_blob);
251253
....@@ -404,65 +406,45 @@
404406 }
405407
406408 #ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE
407
-static int fit_image_load_resource(const void *fit, struct blk_desc *dev_desc,
408
- disk_partition_t *part, ulong *addr)
409
+ulong fit_image_init_resource(struct blk_desc *dev_desc)
409410 {
410
- int offset, size;
411
- int ret;
412
- void *data;
413
-
414
- ret = fdt_image_get_offset_size(fit, FIT_MULTI_PROP, &offset, &size);
415
- if (ret)
416
- return ret;
417
-
418
- data = malloc(ALIGN(size, dev_desc->blksz));
419
- if (!data)
420
- return -ENOMEM;
421
-
422
- *addr = (ulong)data;
423
-
424
- return fit_image_load_one(fit, dev_desc, part, FIT_MULTI_PROP,
425
- data, IS_ENABLED(CONFIG_FIT_SIGNATURE));
426
-}
427
-
428
-int fit_image_init_resource(void)
429
-{
430
- struct blk_desc *dev_desc;
431411 disk_partition_t part;
412
+ void *fit, *buf;
413
+ int offset, size;
432414 int ret = 0;
433
- void *fit;
434415
435
- dev_desc = rockchip_get_bootdev();
436
- if (!dev_desc) {
437
- FIT_I("No dev_desc!\n");
416
+ if (!dev_desc)
438417 return -ENODEV;
439
- }
440418
441419 fit = fit_get_blob(dev_desc, &part, true);
442420 if (!fit)
421
+ return -EAGAIN;
422
+
423
+ ret = fdt_image_get_offset_size(fit, FIT_MULTI_PROP, &offset, &size);
424
+ if (ret)
443425 return -EINVAL;
444426
445
-#ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE
446
- ulong rsce;
427
+ buf = memalign(ARCH_DMA_MINALIGN, ALIGN(size, dev_desc->blksz));
428
+ if (!buf)
429
+ return -ENOMEM;
447430
448
- ret = fit_image_load_resource(fit, dev_desc, &part, &rsce);
431
+ printf("RESC: '%s', blk@0x%08lx\n", part.name,
432
+ part.start + ((FIT_ALIGN(fdt_totalsize(fit)) + offset) / dev_desc->blksz));
433
+ ret = fit_image_load_one(fit, dev_desc, &part, FIT_MULTI_PROP, buf, 1);
434
+ if (ret)
435
+ return ret;
436
+
437
+ ret = resource_setup_ram_list(dev_desc, buf);
449438 if (ret) {
450
- FIT_I("Failed to load resource\n");
439
+ FIT_I("Failed to setup resource ram list, ret=%d\n", ret);
451440 free(fit);
452441 return ret;
453442 }
454443
455
- ret = resource_create_ram_list(dev_desc, (void *)rsce);
456
- if (ret) {
457
- FIT_I("Failed to create resource list\n");
458
- free(fit);
459
- return ret;
460
- }
461
-#endif
462444 fit_msg(fit);
463445 free(fit);
464446
465
- return ret;
447
+ return 0;
466448 }
467449 #else
468450 int fit_image_read_dtb(void *fdt_addr)