diff options
| author | Anup Patel <[email protected]> | 2018-12-26 18:21:22 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2018-12-27 09:35:09 +0530 |
| commit | 7b59571758a5dec75c89928a60d982b29629cee6 (patch) | |
| tree | 455e803910c993bcd465cee1f2b0b1c80b8ba9a8 /include | |
| parent | cfa3fba14f27f1fabaa8194d1ea1a6a21c2cc83a (diff) | |
lib: Simplify sbi_platform early_init() and final_init() hooks
Instead of having separate early_init() and final_init() hooks
for cold and warm boot, this patch updates struct sbi_platform
to have just one early_init() and one final_init() hook. The
type of boot (cold or warm) is now a boolean flag parameter for
the updated early_init() and final_init() hooks.
Signed-off-by: Anup Patel <[email protected]>
Diffstat (limited to 'include')
| -rw-r--r-- | include/sbi/sbi_platform.h | 36 | ||||
| -rw-r--r-- | include/sbi/sbi_system.h | 10 |
2 files changed, 14 insertions, 32 deletions
diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 00fadde9..e5c18965 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -34,10 +34,8 @@ struct sbi_platform { u32 hart_count; u32 hart_stack_size; u64 disabled_hart_mask; - int (*cold_early_init)(void); - int (*cold_final_init)(void); - int (*warm_early_init)(u32 target_hart); - int (*warm_final_init)(u32 target_hart); + int (*early_init)(u32 hartid, bool cold_boot); + int (*final_init)(u32 hartid, bool cold_boot); u32 (*pmp_region_count)(u32 target_hart); int (*pmp_region_info)(u32 target_hart, u32 index, ulong *prot, ulong *addr, ulong *log2size); @@ -105,33 +103,19 @@ static inline u32 sbi_platform_hart_stack_size(struct sbi_platform *plat) return 0; } -static inline int sbi_platform_cold_early_init(struct sbi_platform *plat) +static inline int sbi_platform_early_init(struct sbi_platform *plat, + u32 hartid, bool cold_boot) { - if (plat && plat->cold_early_init) - return plat->cold_early_init(); + if (plat && plat->early_init) + return plat->early_init(hartid, cold_boot); return 0; } -static inline int sbi_platform_cold_final_init(struct sbi_platform *plat) +static inline int sbi_platform_final_init(struct sbi_platform *plat, + u32 hartid, bool cold_boot) { - if (plat && plat->cold_final_init) - return plat->cold_final_init(); - return 0; -} - -static inline int sbi_platform_warm_early_init(struct sbi_platform *plat, - u32 target_hart) -{ - if (plat && plat->warm_early_init) - return plat->warm_early_init(target_hart); - return 0; -} - -static inline int sbi_platform_warm_final_init(struct sbi_platform *plat, - u32 target_hart) -{ - if (plat && plat->warm_final_init) - return plat->warm_final_init(target_hart); + if (plat && plat->final_init) + return plat->final_init(hartid, cold_boot); return 0; } diff --git a/include/sbi/sbi_system.h b/include/sbi/sbi_system.h index ac1fb361..f37445ee 100644 --- a/include/sbi/sbi_system.h +++ b/include/sbi/sbi_system.h @@ -14,13 +14,11 @@ struct sbi_scratch; -int sbi_system_warm_early_init(struct sbi_scratch *scratch, u32 hartid); +int sbi_system_early_init(struct sbi_scratch *scratch, u32 hartid, + bool cold_boot); -int sbi_system_warm_final_init(struct sbi_scratch *scratch, u32 hartid); - -int sbi_system_cold_early_init(struct sbi_scratch *scratch); - -int sbi_system_cold_final_init(struct sbi_scratch *scratch); +int sbi_system_final_init(struct sbi_scratch *scratch, u32 hartid, + bool cold_boot); void __attribute__((noreturn)) sbi_system_reboot(struct sbi_scratch *scratch, u32 type); |
