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