device: Consider fw_config probing in `is_dev_enabled()`
[coreboot.git] / src / include / reset.h
blob5b5e1d30cce6dad36dc85b5c988ab74cba9ac55d
1 #ifndef RESET_H
2 #define RESET_H
4 /*
5 * Generic board reset function. Call from common code that
6 * wants to trigger a reset.
7 */
8 __noreturn void board_reset(void);
9 /*
10 * SoC or board specific implementation of the board reset.
12 * Implementations shall meet the following criteria:
14 * o For vboot support, the TPM MUST be reset.
16 * o All SoC/chipset blocks SHOULD be reset except for those
17 * that are intentionally meant to survive reset (e.g. tomb-
18 * stone registers and that sort of stuff).
20 * o All external SoC pins SHOULD return to power-on reset values.
22 * o The CPU MUST resume execution from power-on reset vector
23 * (same as cold boot).
25 * o Other board components (e.g. PCI, SDIO and stuff) SHOULD
26 * be reset.
28 * o USB SHOULD be power-cycled.
30 * o Board components that are intended to be fully independent
31 * from SoC (e.g. EC and EC-attached devices, the Cr50 on
32 * Chromebooks) SHOULD NOT be reset.
34 * General recommendations:
36 * o DRAM SHOULD NOT lose power if possible.
38 * o Reset time SHOULD be minimized
40 void do_board_reset(void);
42 #endif