diff options
| author | Anup Patel <[email protected]> | 2021-04-22 11:53:32 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2021-04-28 17:25:00 +0530 |
| commit | 043d088e3964ec64b091f739e2282f53f7d264fb (patch) | |
| tree | e5ec82451c097df3f3416ec077752527d81107a7 /include/sbi | |
| parent | dc39c7b630a607b96c25f8ea50f0bb1af619928a (diff) | |
lib: sbi: Simplify system reset platform operations
Instead of having system_reset_check() and system_reset() callbacks
in platform operations, it will be much simpler for reset driver to
directly register these operations as a device to the sbi_system
implementation.
Signed-off-by: Anup Patel <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Diffstat (limited to 'include/sbi')
| -rw-r--r-- | include/sbi/sbi_platform.h | 40 | ||||
| -rw-r--r-- | include/sbi/sbi_system.h | 16 |
2 files changed, 16 insertions, 40 deletions
diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 2756d73d..921d39c4 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -127,11 +127,6 @@ struct sbi_platform_operations { */ int (*hart_suspend)(u32 suspend_type, ulong raddr); - /* Check whether reset type and reason supported by the platform */ - int (*system_reset_check)(u32 reset_type, u32 reset_reason); - /** Reset the platform */ - void (*system_reset)(u32 reset_type, u32 reset_reason); - /** platform specific SBI extension implementation probe function */ int (*vendor_ext_check)(long extid); /** platform specific SBI extension implementation provider */ @@ -573,41 +568,6 @@ static inline void sbi_platform_timer_exit(const struct sbi_platform *plat) } /** - * Check whether reset type and reason supported by the platform - * - * @param plat pointer to struct sbi_platform - * @param reset_type type of reset - * @param reset_reason reason for reset - * - * @return 0 if reset type and reason not supported and 1 if supported - */ -static inline int sbi_platform_system_reset_check( - const struct sbi_platform *plat, - u32 reset_type, u32 reset_reason) -{ - if (plat && sbi_platform_ops(plat)->system_reset_check) - return sbi_platform_ops(plat)->system_reset_check(reset_type, - reset_reason); - return 0; -} - -/** - * Reset the platform - * - * This function will not return for supported reset type and reset reason - * - * @param plat pointer to struct sbi_platform - * @param reset_type type of reset - * @param reset_reason reason for reset - */ -static inline void sbi_platform_system_reset(const struct sbi_platform *plat, - u32 reset_type, u32 reset_reason) -{ - if (plat && sbi_platform_ops(plat)->system_reset) - sbi_platform_ops(plat)->system_reset(reset_type, reset_reason); -} - -/** * Check if a vendor extension is implemented or not. * * @param plat pointer to struct sbi_platform diff --git a/include/sbi/sbi_system.h b/include/sbi/sbi_system.h index 34ba7669..a9fa5466 100644 --- a/include/sbi/sbi_system.h +++ b/include/sbi/sbi_system.h @@ -12,6 +12,22 @@ #include <sbi/sbi_types.h> +/** System reset hardware device */ +struct sbi_system_reset_device { + /** Name of the system reset device */ + char name[32]; + + /* Check whether reset type and reason supported by the device */ + int (*system_reset_check)(u32 reset_type, u32 reset_reason); + + /** Reset the system */ + void (*system_reset)(u32 reset_type, u32 reset_reason); +}; + +const struct sbi_system_reset_device *sbi_system_reset_get_device(void); + +void sbi_system_reset_set_device(const struct sbi_system_reset_device *dev); + bool sbi_system_reset_supported(u32 reset_type, u32 reset_reason); void __noreturn sbi_system_reset(u32 reset_type, u32 reset_reason); |
