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