1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd 4 */ 5 6 #include <common.h> 7 #include <memblk.h> 8 9 #define MEM_DEFINE(id, attr) \ 10 [MEM_##id] = { \ 11 .name = #id, \ 12 .flags = attr, \ 13 } 14 15 #define MEM_DEFINE_1(id, attr, alias0) \ 16 [MEM_##id] = { \ 17 .name = #id, \ 18 .flags = attr, \ 19 .alias[0] = alias0, \ 20 } 21 22 #define MEM_DEFINE_2(id, attr, alias0, alias1) \ 23 [MEM_##id] = { \ 24 .name = #id, \ 25 .flags = attr, \ 26 .alias[0] = alias0, \ 27 .alias[1] = alias1, \ 28 } 29 30 const static struct memblk_attr plat_mem_attr[MEM_MAX] = { 31 /* Invisiable */ 32 MEM_DEFINE(ATF, F_NONE), 33 MEM_DEFINE(OPTEE, F_NONE), 34 35 /* U-Boot */ 36 MEM_DEFINE(UBOOT, F_KMEM_CAN_OVERLAP), 37 MEM_DEFINE(FASTBOOT, F_KMEM_CAN_OVERLAP), 38 MEM_DEFINE(STACK, F_HOFC | F_KMEM_CAN_OVERLAP), 39 40 /* Images */ 41 MEM_DEFINE(ANDROID, F_HOFC | F_OFC | F_KMEM_CAN_OVERLAP), 42 MEM_DEFINE(FDT, F_OFC), 43 MEM_DEFINE(FDT_DTBO, F_OFC), 44 MEM_DEFINE_1(SHM, F_NONE, "ramoops"), 45 MEM_DEFINE_2(RAMDISK, F_OFC, "boot", "recovery"), 46 MEM_DEFINE(UNCOMP_KERNEL,F_IGNORE_INVISIBLE), 47 MEM_DEFINE(FIT_USER, F_OFC | F_KMEM_CAN_OVERLAP), 48 MEM_DEFINE(UIMAGE_USER, F_OFC | F_KMEM_CAN_OVERLAP), 49 MEM_DEFINE(AVB_ANDROID, F_OFC | F_CACHELINE_ALIGN | 50 F_KMEM_CAN_OVERLAP | F_HIGHEST_MEM), 51 MEM_DEFINE(FIT, F_OFC | F_CACHELINE_ALIGN | 52 F_KMEM_CAN_OVERLAP | F_HIGHEST_MEM), 53 MEM_DEFINE(UIMAGE, F_OFC | F_CACHELINE_ALIGN | 54 F_KMEM_CAN_OVERLAP | F_HIGHEST_MEM), 55 MEM_DEFINE(RESOURCE, F_OFC), 56 MEM_DEFINE(SEARCH, F_OFC | F_CACHELINE_ALIGN | F_NO_FAIL_DUMP | 57 F_KMEM_CAN_OVERLAP | F_HIGHEST_MEM), 58 /* 59 * Workarund: 60 * 61 * On aarch32 mode, ATF reserve 0~1MB memory that the same as aarch64 62 * mode, but aarch32 mode actually occupies 0~192KB. 63 * So that we allow kernel to alloc memory within 0~1MB. 64 */ 65 #if defined(CONFIG_ROCKCHIP_RK3308) && defined(CONFIG_ARM64_BOOT_AARCH32) 66 MEM_DEFINE(KERNEL, F_OFC | F_IGNORE_INVISIBLE), 67 #else 68 MEM_DEFINE(KERNEL, F_OFC), 69 #endif 70 }; 71 72 const struct memblk_attr *mem_attr = plat_mem_attr; 73