a3700_pm.h 952 Bytes
Newer Older
1
2
3
4
5
6
7
/*
 * Copyright (C) 2016 Marvell International Ltd.
 *
 * SPDX-License-Identifier:	BSD-3-Clause
 * https://spdx.org/licenses
 */

8
9
#ifndef A3700_PM_H
#define A3700_PM_H
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

#include <stdint.h>

/* supported wake up sources */
enum pm_wake_up_src_type {
	WAKE_UP_SRC_GPIO,
	/* FOLLOWING SRC NOT SUPPORTED YET */
	WAKE_UP_SRC_TIMER,
	WAKE_UP_SRC_UART0,
	WAKE_UP_SRC_UART1,
	WAKE_UP_SRC_MAX,
};

struct pm_gpio_data {
	/*
	 * bank 0: North bridge GPIO
	 * bank 1: South bridge GPIO
	 */
	uint32_t bank_num;
	uint32_t gpio_num;
};

union pm_wake_up_src_data {
	struct pm_gpio_data gpio_data;
	/* delay in seconds */
	uint32_t timer_delay;
};

struct pm_wake_up_src {
	enum pm_wake_up_src_type wake_up_src_type;

	union pm_wake_up_src_data wake_up_data;
};

struct pm_wake_up_src_config {
	uint32_t	wake_up_src_num;
	struct pm_wake_up_src wake_up_src[WAKE_UP_SRC_MAX];
};

struct pm_wake_up_src_config *mv_wake_up_src_config_get(void);

51
#endif /* A3700_PM_H */