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