1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #ifndef RESET_H 4 #define RESET_H 5 6 /* 7 * Generic board reset function. Call from common code that 8 * wants to trigger a reset. 9 */ 10 __noreturn void board_reset(void); 11 /* 12 * SoC or board specific implementation of the board reset. 13 * 14 * Implementations shall meet the following criteria: 15 * 16 * o For vboot support, the TPM MUST be reset. 17 * 18 * o All SoC/chipset blocks SHOULD be reset except for those 19 * that are intentionally meant to survive reset (e.g. tomb- 20 * stone registers and that sort of stuff). 21 * 22 * o All external SoC pins SHOULD return to power-on reset values. 23 * 24 * o The CPU MUST resume execution from power-on reset vector 25 * (same as cold boot). 26 * 27 * o Other board components (e.g. PCI, SDIO and stuff) SHOULD 28 * be reset. 29 * 30 * o USB SHOULD be power-cycled. 31 * 32 * o Board components that are intended to be fully independent 33 * from SoC (e.g. EC and EC-attached devices, the Cr50 on 34 * Chromebooks) SHOULD NOT be reset. 35 * 36 * General recommendations: 37 * 38 * o DRAM SHOULD NOT lose power if possible. 39 * 40 * o Reset time SHOULD be minimized 41 */ 42 void do_board_reset(void); 43 44 #endif 45