1 /* 2 * Copyright (C) 2016-2020 Marvell International Ltd. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * https://spdx.org/licenses 6 */ 7 8 #ifndef A3700_PM_H 9 #define A3700_PM_H 10 11 #include <stdint.h> 12 13 /* supported wake up sources */ 14 enum pm_wake_up_src_type { 15 WAKE_UP_SRC_GPIO, 16 /* FOLLOWING SRC NOT SUPPORTED YET */ 17 WAKE_UP_SRC_TIMER, 18 WAKE_UP_SRC_UART0, 19 WAKE_UP_SRC_UART1, 20 WAKE_UP_SRC_MAX, 21 }; 22 23 struct pm_gpio_data { 24 /* 25 * bank 0: North bridge GPIO 26 * bank 1: South bridge GPIO 27 */ 28 uint32_t bank_num; 29 uint32_t gpio_num; 30 }; 31 32 union pm_wake_up_src_data { 33 struct pm_gpio_data gpio_data; 34 /* delay in seconds */ 35 uint32_t timer_delay; 36 }; 37 38 struct pm_wake_up_src { 39 enum pm_wake_up_src_type wake_up_src_type; 40 41 union pm_wake_up_src_data wake_up_data; 42 }; 43 44 struct pm_wake_up_src_config { 45 uint32_t wake_up_src_num; 46 struct pm_wake_up_src wake_up_src[WAKE_UP_SRC_MAX]; 47 }; 48 49 struct pm_wake_up_src_config *mv_wake_up_src_config_get(void); 50 51 void cm3_system_reset(void); 52 53 #endif /* A3700_PM_H */ 54