Stefan Reinauer | de3206a | 2010-02-22 06:09:43 +0000 | [diff] [blame] | 1 | #ifndef RESET_H |
| 2 | #define RESET_H |
Eric Biederman | 30e143a | 2003-09-01 23:45:32 +0000 | [diff] [blame] | 3 | |
Nico Huber | 4f32b64 | 2018-10-05 23:40:21 +0200 | [diff] [blame] | 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. |
| 11 | * |
| 12 | * Implementations shall meet the following criteria: |
| 13 | * |
| 14 | * o For vboot support, the TPM MUST be reset. |
| 15 | * |
| 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). |
| 19 | * |
| 20 | * o All external SoC pins SHOULD return to power-on reset values. |
| 21 | * |
| 22 | * o The CPU MUST resume execution from power-on reset vector |
| 23 | * (same as cold boot). |
| 24 | * |
| 25 | * o Other board components (e.g. PCI, SDIO and stuff) SHOULD |
| 26 | * be reset. |
| 27 | * |
| 28 | * o USB SHOULD be power-cycled. |
| 29 | * |
| 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. |
| 33 | * |
| 34 | * General recommendations: |
| 35 | * |
| 36 | * o DRAM SHOULD NOT lose power if possible. |
| 37 | * |
| 38 | * o Reset time SHOULD be minimized |
| 39 | */ |
| 40 | void do_board_reset(void); |
Julius Werner | 01f9aa5 | 2017-05-18 16:03:26 -0700 | [diff] [blame] | 41 | |
Eric Biederman | 30e143a | 2003-09-01 23:45:32 +0000 | [diff] [blame] | 42 | #endif |