/* * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include "rk3399_mcu.h" #define M0_SCR 0xe000ed10 /* System Control Register (SCR) */ #define SCR_SLEEPDEEP_SHIFT (1 << 2) void handle_suspend(void) { unsigned int status_value; while (1) { status_value = mmio_read_32(PMU_BASE + PMU_POWER_ST); if (status_value) { mmio_clrbits_32(PMU_BASE + PMU_PWRMODE_CON, 0x01); return; } } /* m0 enter deep sleep mode */ mmio_setbits_32(M0_SCR, SCR_SLEEPDEEP_SHIFT); }