#ifndef RESET_H #define RESET_H /* Generic reset functions. Call from code that wants to trigger a reset. */ /* Super-hard reset specific to some Intel SoCs. */ __attribute__((noreturn)) void global_reset(void); /* Full board reset. Resets SoC and most/all board components (e.g. DRAM). */ __attribute__((noreturn)) void hard_reset(void); /* Board reset. Resets SoC some board components (e.g. TPM but not DRAM). */ __attribute__((noreturn)) void soft_reset(void); /* Reset implementations. Implement these in SoC or mainboard code. Implement at least hard_reset() if possible, others fall back to it if necessary. */ void do_global_reset(void); void do_hard_reset(void); void do_soft_reset(void); enum reset_type { /* listed in order of softness */ GLOBAL_RESET, HARD_RESET, SOFT_RESET, }; /* Callback that an SoC may override to perform special actions before reset. Take into account that softer resets may fall back to harder resets if not implemented... this will *not* trigger another callback! */ void soc_reset_prepare(enum reset_type reset_type); #endif