/* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2019 Rockchip Electronics Co., Ltd */ #ifndef _MEMBLK_H #define _MEMBLK_H #define ALIAS_COUNT_MAX 2 #define MEM_RESV_COUNT 10 enum memblk_id { MEM_UNK, /* Preloader */ MEM_ATF, MEM_OPTEE, MEM_SHM, /* U-Boot self */ MEM_UBOOT, MEM_STACK, MEM_FASTBOOT, /* Image */ MEM_RESOURCE, MEM_RAMDISK, MEM_FDT, MEM_FDT_DTBO, MEM_KERNEL, MEM_UNCOMP_KERNEL, MEM_ANDROID, MEM_AVB_ANDROID, MEM_FIT_USER, MEM_FIT, MEM_UIMAGE_USER, MEM_UIMAGE, /* Other */ MEM_SEARCH, MEM_BY_NAME, MEM_KMEM_RESERVED, MEM_MAX, }; struct memblk_attr { const char *name; const char *alias[ALIAS_COUNT_MAX]; u32 flags; }; struct memblock { phys_addr_t base; phys_size_t size; u64 base_u64; /* 4GB+ */ u64 size_u64; phys_addr_t orig_base; struct memblk_attr attr; struct list_head node; }; extern const struct memblk_attr *mem_attr; #define SIZE_MB(len) ((len) >> 20) #define SIZE_KB(len) (((len) % (1 << 20)) >> 10) #define F_NONE 0 /* Over-Flow-Check for region tail */ #define F_OFC (1 << 0) /* Over-Flow-Check for region Head, only for U-Boot stack */ #define F_HOFC (1 << 1) /* Memory can be overlap by fdt reserved memory, deprecated */ #define F_OVERLAP (1 << 2) /* The region start address should be aligned to cacheline size */ #define F_CACHELINE_ALIGN (1 << 3) /* Kernel 'reserved-memory' */ #define F_KMEM_RESERVED (1 << 4) /* The region can be overlap by kernel 'reserved-memory' */ #define F_KMEM_CAN_OVERLAP (1 << 5) /* Ignore invisible region reserved by bidram */ #define F_IGNORE_INVISIBLE (1 << 6) /* Highest memory right under the sp */ #define F_HIGHEST_MEM (1 << 7) /* No sysmem layout dump if failed */ #define F_NO_FAIL_DUMP (1 << 8) #endif /* _MEMBLK_H */