hc
2023-11-06 9df731a176aab8e03b984b681b1bea01ccff6644
u-boot/arch/arm/mach-rockchip/uimage.c
....@@ -12,8 +12,8 @@
1212 #include <asm/arch/resource_img.h>
1313 #include <asm/arch/uimage.h>
1414
15
-static int uimage_load_one(struct blk_desc *dev_desc, disk_partition_t *part,
16
- int pos_off, int size, void *dst)
15
+int uimage_load_one(struct blk_desc *dev_desc, disk_partition_t *part,
16
+ int pos_off, int size, void *dst)
1717 {
1818 u32 blknum, blkoff;
1919 u32 unused;
....@@ -183,31 +183,23 @@
183183 return 0;
184184 }
185185
186
-int uimage_init_resource(void)
187
-{
188
- struct blk_desc *dev_desc;
189
- disk_partition_t part;
190
- image_header_t *hdr;
191
- char *part_name;
192
- ulong data, offset;
193
- ulong size;
194186 #ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE
195
- ulong dst;
196
- int idx = 3;
197
-#endif
198
- int ret;
187
+int uimage_init_resource(struct blk_desc *dev_desc)
188
+{
189
+ disk_partition_t part;
190
+ ulong data, offset, size;
191
+ image_header_t *hdr;
192
+ char *part_name = PART_BOOT;
193
+ int ret, idx = 3;
194
+ void *buf;
199195
200
- dev_desc = rockchip_get_bootdev();
201
- if (!dev_desc) {
202
- printf("No dev_desc!\n");
203
- return ENODEV;
204
- }
196
+ if (!dev_desc)
197
+ return -ENODEV;
205198
199
+#ifndef CONFIG_ANDROID_AB
206200 if (rockchip_get_boot_mode() == BOOT_MODE_RECOVERY)
207201 part_name = PART_RECOVERY;
208
- else
209
- part_name = PART_BOOT;
210
-
202
+#endif
211203 if (part_get_info_by_name(dev_desc, part_name, &part) < 0) {
212204 UIMG_I("No %s partition\n", part_name);
213205 return -ENODEV;
....@@ -215,35 +207,28 @@
215207
216208 hdr = uimage_get_hdr(dev_desc, &part);
217209 if (!hdr)
218
- return -ENODEV;
210
+ return -EAGAIN;
219211
220212 image_multi_getimg(hdr, idx, &data, &size);
221213 offset = data - (ulong)hdr;
222214 free(hdr);
223215
224
-#ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE
225
- ulong fdt_addr;
226
-
227
- /* reserve enough space before fdt */
228
- fdt_addr = env_get_ulong("fdt_addr_r", 16, 0);
229
- dst = (ulong)fdt_addr -
230
- ALIGN(size, dev_desc->blksz) - CONFIG_SYS_FDT_PAD;
231
- ret = uimage_load_one(dev_desc, &part, offset, size, (void *)dst);
232
- if (ret) {
233
- UIMG_I("Failed to load resource file, ret=%d\n", ret);
234
- return ret;
235
- }
236
-
237
- if (!sysmem_alloc_base(MEM_RESOURCE, (phys_addr_t)dst,
238
- ALIGN(size, RK_BLK_SIZE)))
216
+ buf = memalign(ARCH_DMA_MINALIGN, ALIGN(size, dev_desc->blksz));
217
+ if (!buf)
239218 return -ENOMEM;
240219
241
- ret = resource_create_ram_list(dev_desc, (void *)dst);
220
+ printf("RESC: '%s', blk@0x%08lx\n", part.name,
221
+ part.start + (offset / dev_desc->blksz));
222
+ ret = uimage_load_one(dev_desc, &part, offset, size, buf);
223
+ if (ret)
224
+ return ret;
225
+
226
+ ret = resource_setup_ram_list(dev_desc, buf);
242227 if (ret) {
243
- UIMG_I("Failed to create resource list, ret=%d\n", ret);
228
+ UIMG_I("Failed to setup resource ram list, ret=%d\n", ret);
244229 return ret;
245230 }
246
-#endif
247231
248232 return 0;
249233 }
234
+#endif