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