summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAnup Patel <[email protected]>2018-12-26 18:21:22 +0530
committerAnup Patel <[email protected]>2018-12-27 09:35:09 +0530
commit7b59571758a5dec75c89928a60d982b29629cee6 (patch)
tree455e803910c993bcd465cee1f2b0b1c80b8ba9a8 /include
parentcfa3fba14f27f1fabaa8194d1ea1a6a21c2cc83a (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.h36
-rw-r--r--include/sbi/sbi_system.h10
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);