summaryrefslogtreecommitdiff
path: root/src/soc/amd/sabrina/reset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/amd/sabrina/reset.c')
-rw-r--r--src/soc/amd/sabrina/reset.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/soc/amd/sabrina/reset.c b/src/soc/amd/sabrina/reset.c
new file mode 100644
index 0000000000..90fedda904
--- /dev/null
+++ b/src/soc/amd/sabrina/reset.c
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/* TODO: Check if this is still correct */
+
+#include <arch/io.h>
+#include <cf9_reset.h>
+#include <reset.h>
+#include <soc/southbridge.h>
+#include <amdblocks/acpimmio.h>
+#include <amdblocks/reset.h>
+
+void do_cold_reset(void)
+{
+ /* De-assert and then assert all PwrGood signals on CF9 reset. */
+ pm_write16(PWR_RESET_CFG, pm_read16(PWR_RESET_CFG) |
+ TOGGLE_ALL_PWR_GOOD);
+ outb(RST_CPU | SYS_RST, RST_CNT);
+}
+
+void do_warm_reset(void)
+{
+ /* Warm resets are not supported and must be executed as cold */
+ pm_write16(PWR_RESET_CFG, pm_read16(PWR_RESET_CFG) |
+ TOGGLE_ALL_PWR_GOOD);
+ outb(RST_CPU | SYS_RST, RST_CNT);
+}
+
+void do_board_reset(void)
+{
+ do_cold_reset();
+}