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