GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (c) 2022, MediaTek Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef MTK_INIT_H
|
||||
#define MTK_INIT_H
|
||||
|
||||
#include <cdefs.h>
|
||||
#include <lib/mtk_init/mtk_init_def.h>
|
||||
|
||||
#define INIT_CALL_EXPAND_AS_ENUMERATION(_section_enum, _section_name, _level) \
|
||||
_section_enum = _level,
|
||||
|
||||
#define EXPAND_AS_LINK_SECTION(_section_enum, _section_name, _level) \
|
||||
__##_section_enum##_START__ = .; \
|
||||
KEEP(*(_section_name##_level));
|
||||
|
||||
#define EXPAND_AS_EXTERN(_section_enum, _section_name, _level) \
|
||||
extern struct initcall __##_section_enum##_START__[];
|
||||
|
||||
#define EXPAND_AS_SYMBOL_ARR(_section_enum, _section_name, _level) \
|
||||
__##_section_enum##_START__,
|
||||
|
||||
#define DECLARE_MTK_INITCALL(_fn, _level) \
|
||||
const struct initcall _mtk_initcall_##_fn \
|
||||
__used \
|
||||
__aligned(sizeof(void *)) \
|
||||
__section(".mtk_plat_initcall_"#_level) \
|
||||
= { \
|
||||
.name = #_fn, \
|
||||
.fn = _fn \
|
||||
}
|
||||
|
||||
/* initcall helpers */
|
||||
#define MTK_EARLY_PLAT_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 0)
|
||||
#define MTK_ARCH_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 1)
|
||||
#define MTK_PLAT_SETUP_0_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 2)
|
||||
#define MTK_PLAT_SETUP_1_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 3)
|
||||
#define MTK_PLAT_RUNTIME_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 4)
|
||||
#define MTK_PLAT_BL33_DEFER_INIT(_fn) DECLARE_MTK_INITCALL(_fn, 5)
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
struct initcall {
|
||||
const char *name;
|
||||
int (*fn)(void);
|
||||
};
|
||||
|
||||
enum {
|
||||
INIT_CALL_TABLE(INIT_CALL_EXPAND_AS_ENUMERATION)
|
||||
MTK_INIT_LVL_MAX
|
||||
};
|
||||
|
||||
void mtk_init_one_level(unsigned int level);
|
||||
#endif
|
||||
|
||||
#endif /* MTK_INIT_H */
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2022, MediaTek Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef MTK_INIT_DEF_H
|
||||
#define MTK_INIT_DEF_H
|
||||
|
||||
/*
|
||||
* Define init call sections here. _func is for 2nd level expansion, init
|
||||
* section enum, and init section name.
|
||||
*/
|
||||
#define INIT_CALL_TABLE(_func) \
|
||||
_func(MTK_INIT_LVL_EARLY_PLAT, .mtk_plat_initcall_, 0) \
|
||||
_func(MTK_INIT_LVL_ARCH, .mtk_plat_initcall_, 1) \
|
||||
_func(MTK_INIT_LVL_PLAT_SETUP_0, .mtk_plat_initcall_, 2) \
|
||||
_func(MTK_INIT_LVL_PLAT_SETUP_1, .mtk_plat_initcall_, 3) \
|
||||
_func(MTK_INIT_LVL_PLAT_RUNTIME, .mtk_plat_initcall_, 4) \
|
||||
_func(MTK_INIT_LVL_BL33_DEFER, .mtk_plat_initcall_, 5)
|
||||
|
||||
#endif /* MTK_INIT_DEF_H */
|
||||
Reference in New Issue
Block a user