blob: 95fe0660ad17948bdb2342ee39ddf3defa2415b0 [file] [log] [blame]
Martin Roth239b5df2022-07-26 22:18:26 -06001/* SPDX-License-Identifier: GPL-2.0-only */
2
Stefan Reinauerde3206a2010-02-22 06:09:43 +00003#ifndef RESET_H
4#define RESET_H
Eric Biederman30e143a2003-09-01 23:45:32 +00005
Nico Huber4f32b642018-10-05 23:40:21 +02006/*
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 */
42void do_board_reset(void);
Julius Werner01f9aa52017-05-18 16:03:26 -070043
Eric Biederman30e143a2003-09-01 23:45:32 +000044#endif