summaryrefslogtreecommitdiff
path: root/chip/ish/power_mgt.c
diff options
context:
space:
mode:
Diffstat (limited to 'chip/ish/power_mgt.c')
-rw-r--r--chip/ish/power_mgt.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/chip/ish/power_mgt.c b/chip/ish/power_mgt.c
index 83ef0fc91b..de9022b55a 100644
--- a/chip/ish/power_mgt.c
+++ b/chip/ish/power_mgt.c
@@ -3,8 +3,6 @@
* found in the LICENSE file.
*/
-#include <stdnoreturn.h>
-
#include "aontaskfw/ish_aon_share.h"
#include "console.h"
#include "hwtimer.h"
@@ -17,6 +15,8 @@
#include "util.h"
#include "watchdog.h"
+#include <stdnoreturn.h>
+
#define CPUTS(outstr) cputs(CC_SYSTEM, outstr)
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ##args)
#define CPRINTF(format, args...) cprintf(CC_SYSTEM, format, ##args)
@@ -612,8 +612,18 @@ void ish_pm_init(void)
/* clear reset history register in CCU */
CCU_RST_HST = CCU_RST_HST;
+#if defined(CHIP_VARIANT_ISH5P4)
+ if (IS_ENABLED(CONFIG_ISH_NEW_PM))
+ PMU_D3_STATUS_1 = 0xffffffff;
+#endif
+
/* disable TCG and disable BCG */
- CCU_TCG_EN = 0;
+ CCU_TCG_ENABLE = 0;
+ CCU_BCG_ENABLE = 0;
+
+ /* Disable power gate of CACHE and ROM */
+ PMU_RF_ROM_PWR_CTRL = 0;
+
reset_bcg();
if (IS_ENABLED(CONFIG_ISH_PM_AONTASK))
@@ -624,8 +634,15 @@ void ish_pm_init(void)
PMU_GPIO_WAKE_MASK1 = 0;
}
- /* unmask all wake up events */
+ /* Unmask all wake up events in event1 */
PMU_MASK_EVENT = ~PMU_MASK_EVENT_BIT_ALL;
+ /* Mask events in event2 */
+ PMU_MASK_EVENT2 = PMU_MASK2_ALL_EVENTS;
+
+#if defined(CHIP_VARIANT_ISH5P4)
+ SBEP_REG_CLK_GATE_ENABLE =
+ (SB_CLK_GATE_EN_LOCAL_CLK_GATE | SB_CLK_GATE_EN_TRUNK_CLK_GATE);
+#endif
if (IS_ENABLED(CONFIG_ISH_NEW_PM)) {
PMU_ISH_FABRIC_CNT = (PMU_ISH_FABRIC_CNT & 0xffff0000) |
@@ -648,6 +665,15 @@ void ish_pm_init(void)
(PMU_D3_STATUS & PMU_BME_BIT_SET))
PMU_D3_STATUS = PMU_D3_STATUS;
+#if defined(CHIP_VARIANT_ISH5P4)
+ if (IS_ENABLED(CONFIG_ISH_NEW_PM)) {
+ /* Mask all function1 */
+ PMU_REG_MASK_D3_RISE = 0x2;
+ PMU_REG_MASK_D3_FALL = 0x2;
+ PMU_REG_MASK_BME_RISE = 0x2;
+ PMU_REG_MASK_BME_FALL = 0x2;
+ }
+#endif
enable_d3bme_irqs();
}
}