xref: /OK3568_Linux_fs/u-boot/include/memblk.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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 #define ALIAS_COUNT_MAX		2
10 #define MEM_RESV_COUNT		10
11 
12 enum memblk_id {
13 	MEM_UNK,
14 
15 	/* Preloader */
16 	MEM_ATF,
17 	MEM_OPTEE,
18 	MEM_SHM,
19 
20 	/* U-Boot self */
21 	MEM_UBOOT,
22 	MEM_STACK,
23 	MEM_FASTBOOT,
24 
25 	/* Image */
26 	MEM_RESOURCE,
27 	MEM_RAMDISK,
28 	MEM_FDT,
29 	MEM_FDT_DTBO,
30 	MEM_KERNEL,
31 	MEM_UNCOMP_KERNEL,
32 	MEM_ANDROID,
33 	MEM_AVB_ANDROID,
34 	MEM_FIT_USER,
35 	MEM_FIT,
36 	MEM_UIMAGE_USER,
37 	MEM_UIMAGE,
38 
39 	/* Other */
40 	MEM_SEARCH,
41 	MEM_BY_NAME,
42 	MEM_KMEM_RESERVED,
43 	MEM_MAX,
44 };
45 
46 struct memblk_attr {
47 	const char *name;
48 	const char *alias[ALIAS_COUNT_MAX];
49 	u32 flags;
50 };
51 
52 struct memblock {
53 	phys_addr_t base;
54 	phys_size_t size;
55 	u64 base_u64; /* 4GB+ */
56 	u64 size_u64;
57 	phys_addr_t orig_base;
58 	struct memblk_attr attr;
59 	struct list_head node;
60 };
61 
62 extern const struct memblk_attr *mem_attr;
63 
64 #define SIZE_MB(len)		((len) >> 20)
65 #define SIZE_KB(len)		(((len) % (1 << 20)) >> 10)
66 
67 #define F_NONE			0
68 
69 /* Over-Flow-Check for region tail */
70 #define F_OFC			(1 << 0)
71 
72 /* Over-Flow-Check for region Head, only for U-Boot stack */
73 #define F_HOFC			(1 << 1)
74 
75 /* Memory can be overlap by fdt reserved memory, deprecated */
76 #define F_OVERLAP		(1 << 2)
77 
78 /* The region start address should be aligned to cacheline size */
79 #define F_CACHELINE_ALIGN	(1 << 3)
80 
81 /* Kernel 'reserved-memory' */
82 #define F_KMEM_RESERVED		(1 << 4)
83 
84 /* The region can be overlap by kernel 'reserved-memory' */
85 #define F_KMEM_CAN_OVERLAP	(1 << 5)
86 
87 /* Ignore invisible region reserved by bidram */
88 #define F_IGNORE_INVISIBLE	(1 << 6)
89 
90 /* Highest memory right under the sp */
91 #define F_HIGHEST_MEM		(1 << 7)
92 
93 /* No sysmem layout dump if failed */
94 #define F_NO_FAIL_DUMP		(1 << 8)
95 
96 #endif /* _MEMBLK_H */
97