summaryrefslogtreecommitdiffstats
path: root/src/soc/mediatek/mt8186/include/soc
diff options
context:
space:
mode:
authorZhiyong Tao <zhiyong.tao@mediatek.com>2022-03-24 18:57:44 +0800
committerFelix Held <felix-coreboot@felixheld.de>2022-03-29 14:22:48 +0000
commita7477706a096af540a5ee0ef04d0fca921fdab45 (patch)
treef3aa2676913254a2da58b7393c7d27b63341473c /src/soc/mediatek/mt8186/include/soc
parent9648106683ab348acaa9cff6d4eb801915081418 (diff)
downloadcoreboot-a7477706a096af540a5ee0ef04d0fca921fdab45.tar.gz
coreboot-a7477706a096af540a5ee0ef04d0fca921fdab45.tar.bz2
coreboot-a7477706a096af540a5ee0ef04d0fca921fdab45.zip
soc/mediatek/mt8186: Fix pmif setting for low power mode
The current pmif register setting for low power mode is incorrect, which is causing suspend failure. The issue of suspend failure is that SRCLKENA0 will not be pulled down. EC will not be informed AP is suspending now becuase of this. Therefore, add pmif_spmi_set_lp_mode() to correct the setting. This implementation is based on chapter 3.7 in MT8186 Functional Specification. BUG=b:215639203 TEST=test of suspend and resume pass. Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com> Change-Id: I2d02198f19f9cb052fba612c02404a6af1a10adb Reviewed-on: https://review.coreboot.org/c/coreboot/+/63089 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com> Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Diffstat (limited to 'src/soc/mediatek/mt8186/include/soc')
-rw-r--r--src/soc/mediatek/mt8186/include/soc/addressmap.h1
-rw-r--r--src/soc/mediatek/mt8186/include/soc/pmif.h16
2 files changed, 17 insertions, 0 deletions
diff --git a/src/soc/mediatek/mt8186/include/soc/addressmap.h b/src/soc/mediatek/mt8186/include/soc/addressmap.h
index c90e0cda79ac..069e31d412ed 100644
--- a/src/soc/mediatek/mt8186/include/soc/addressmap.h
+++ b/src/soc/mediatek/mt8186/include/soc/addressmap.h
@@ -30,6 +30,7 @@ enum {
PWRAP_BASE = IO_PHYS + 0x0000D000,
DEVAPC_AO_INFRA_PERI_BASE = IO_PHYS + 0x0000E000,
DEVAPC_AO_MM_BASE = IO_PHYS + 0x0000F000,
+ PMIF_BASE = IO_PHYS + 0x00015000,
SYSTIMER_BASE = IO_PHYS + 0x00017000,
I2C0_DMA_BASE = IO_PHYS + 0x00200100,
I2C1_DMA_BASE = IO_PHYS + 0x00200200,
diff --git a/src/soc/mediatek/mt8186/include/soc/pmif.h b/src/soc/mediatek/mt8186/include/soc/pmif.h
new file mode 100644
index 000000000000..0e1e1a276d25
--- /dev/null
+++ b/src/soc/mediatek/mt8186/include/soc/pmif.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * This file is created based on MT8186 Functional Specification
+ * Chapter number: 3.7
+ */
+
+#ifndef __SOC_MEDIATEK_MT8186_PMIF_H__
+#define __SOC_MEDIATEK_MT8186_PMIF_H__
+
+#include <soc/addressmap.h>
+#include <types.h>
+
+void pmif_spmi_set_lp_mode(void);
+
+#endif /*__SOC_MEDIATEK_MT8186_PMIF_H__*/