xref: /rk3399_rockchip-uboot/arch/arm/mach-rockchip/memblk.c (revision 73b4df6a98d2d973cbf1e2b18947abbdbdb82bc1)
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