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 const static struct memblk_attr plat_mem_attr[MEMBLK_ID_MAX] = { 10 [MEMBLK_ID_ATF] = { 11 .name = "ATF", 12 .flags = M_ATTR_NONE, 13 }, 14 [MEMBLK_ID_OPTEE] = { 15 .name = "OP-TEE", 16 .flags = M_ATTR_NONE, 17 }, 18 [MEMBLK_ID_SHM] = { 19 .name = "SHM", 20 .flags = M_ATTR_NONE, 21 .alias[0] = "ramoops", 22 }, 23 [MEMBLK_ID_UBOOT] = { 24 .name = "U-Boot", 25 .flags = M_ATTR_KMEM_CAN_OVERLAP, 26 }, 27 [MEMBLK_ID_FASTBOOT] = { 28 .name = "FASTBOOT", 29 .flags = M_ATTR_KMEM_CAN_OVERLAP, 30 }, 31 [MEMBLK_ID_STACK] = { 32 .name = "STACK", 33 .flags = M_ATTR_HOFC | M_ATTR_KMEM_CAN_OVERLAP, 34 }, 35 [MEMBLK_ID_FDT] = { 36 .name = "FDT", 37 .flags = M_ATTR_OFC, 38 }, 39 [MEMBLK_ID_FDT_DTBO] = { 40 .name = "FDT_DTBO", 41 .flags = M_ATTR_OFC, 42 }, 43 [MEMBLK_ID_FDT_AOSP] = { 44 .name = "FDT_AOSP", 45 .flags = M_ATTR_OFC, 46 }, 47 [MEMBLK_ID_RAMDISK] = { 48 .name = "RAMDISK", 49 .alias[0] = "BOOT", 50 .alias[1] = "RECOVERY", 51 .flags = M_ATTR_OFC, 52 }, 53 [MEMBLK_ID_KERNEL] = { 54 .name = "KERNEL", 55 /* 56 * Here is a workarund: 57 * ATF reserves 0~1MB when kernel is aarch32 mode(follow the ATF for 58 * aarch64 kernel, but it actually occupies 0~192KB, so we allow kernel 59 * to alloc the region within 0~1MB address. 60 */ 61 #if defined(CONFIG_ROCKCHIP_RK3308) && defined(CONFIG_ARM64_BOOT_AARCH32) 62 .flags = M_ATTR_OFC | M_ATTR_IGNORE_INVISIBLE, 63 #else 64 .flags = M_ATTR_OFC, 65 #endif 66 }, 67 [MEMBLK_ID_UNCOMP_KERNEL] = { 68 .name = "UNCOMPRESS-KERNEL", 69 .flags = M_ATTR_IGNORE_INVISIBLE, 70 }, 71 [MEMBLK_ID_ANDROID] = { 72 .name = "ANDROID", 73 .flags = M_ATTR_OFC | M_ATTR_KMEM_CAN_OVERLAP, 74 }, 75 [MEMBLK_ID_AVB_ANDROID] = { 76 .name = "AVB_ANDROID", 77 .flags = M_ATTR_OFC | M_ATTR_CACHELINE_ALIGN | 78 M_ATTR_KMEM_CAN_OVERLAP, 79 }, 80 }; 81 82 const struct memblk_attr *mem_attr = plat_mem_attr; 83