xref: /rk3399_rockchip-uboot/include/memblk.h (revision 2ba7147f8008e675b31a0a5c13b8366431ea09ae)
1 /* SPDX-License-Identifier:     GPL-2.0+ */
2 /*
3  * (C) Copyright 2019 Rockchip Electronics Co., Ltd
4  */
5 
6 #ifndef _MEMBLK_H
7 #define _MEMBLK_H
8 
9 enum memblk_id {
10 	MEMBLK_ID_UNK,
11 
12 	/* Preloader */
13 	MEMBLK_ID_ATF,
14 	MEMBLK_ID_OPTEE,
15 	MEMBLK_ID_SHM,
16 
17 	/* U-Boot self */
18 	MEMBLK_ID_UBOOT,
19 	MEMBLK_ID_STACK,
20 	MEMBLK_ID_FASTBOOT,
21 
22 	/* Image */
23 	MEMBLK_ID_RAMDISK,
24 	MEMBLK_ID_FDT,
25 	MEMBLK_ID_FDT_DTBO,
26 	MEMBLK_ID_FDT_AOSP,
27 	MEMBLK_ID_KERNEL,
28 	MEMBLK_ID_UNCOMP_KERNEL,
29 	MEMBLK_ID_ANDROID,
30 	MEMBLK_ID_AVB_ANDROID,
31 
32 	/* Other */
33 	MEMBLK_ID_BY_NAME,
34 	MEMBLK_ID_FDT_RESV,
35 	MEMBLK_ID_DEMO,
36 	MEMBLK_ID_MAX,
37 };
38 
39 struct memblk_attr {
40 	const char *name;
41 	const char *alias[2];
42 	u32 flags;
43 };
44 
45 struct memblock {
46 	phys_addr_t base;
47 	phys_size_t size;
48 	struct memblk_attr attr;
49 	struct list_head node;
50 };
51 
52 extern const struct memblk_attr *mem_attr;
53 
54 #define SIZE_MB(len)		((len) >> 20)
55 #define SIZE_KB(len)		(((len) % (1 << 20)) >> 10)
56 
57 #define M_ATTR_NONE		0
58 /* Over-Flow-Check for region tail */
59 #define M_ATTR_OFC		(1 << 0)
60 /* Over-Flow-Check for region Head, only for U-Boot stack */
61 #define M_ATTR_HOFC		(1 << 1)
62 /* Memory can be overlap by fdt reserved memory */
63 #define M_ATTR_OVERLAP		(1 << 2)
64 /* Just peek, always return success */
65 #define M_ATTR_PEEK		(1 << 3)
66 
67 #endif /* _MEMBLK_H */
68