blob: 8181d90ee73407370c72c50e3d66563c98848a44 [file] [log] [blame]
Angel Ponsae593872020-04-04 18:50:57 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Martin Roth5c354b92019-04-22 14:55:16 -06002
3#include <arch/io.h>
Felix Held5d7fa162020-12-09 02:18:00 +01004#include <cf9_reset.h>
Martin Roth5c354b92019-04-22 14:55:16 -06005#include <reset.h>
Martin Roth5c354b92019-04-22 14:55:16 -06006#include <soc/southbridge.h>
7#include <amdblocks/acpimmio.h>
8#include <amdblocks/reset.h>
9
Martin Roth5c354b92019-04-22 14:55:16 -060010void do_cold_reset(void)
11{
Martin Roth5c354b92019-04-22 14:55:16 -060012 /* De-assert and then assert all PwrGood signals on CF9 reset. */
13 pm_write16(PWR_RESET_CFG, pm_read16(PWR_RESET_CFG) |
14 TOGGLE_ALL_PWR_GOOD);
Felix Held5d7fa162020-12-09 02:18:00 +010015 outb(RST_CPU | SYS_RST, RST_CNT);
Martin Roth5c354b92019-04-22 14:55:16 -060016}
17
18void do_warm_reset(void)
19{
Martin Roth5c354b92019-04-22 14:55:16 -060020 /* Assert reset signals only. */
Felix Held5d7fa162020-12-09 02:18:00 +010021 outb(RST_CPU | SYS_RST, RST_CNT);
Martin Roth5c354b92019-04-22 14:55:16 -060022}
23
24void do_board_reset(void)
25{
26 /* TODO: Would a warm_reset() suffice? */
27 do_cold_reset();
28}