~funderscore blog cgit wiki get in touch
aboutsummaryrefslogtreecommitdiff
blob: d1b085d7f87637db1adfb3f30a28128c783a390b (plain)
1
2
3
4
5
6
7
8
9
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* SPDX-License-Identifier:     GPL-2.0+ */
/*
 * Copyright 2018 NXP
 */

#ifndef SC_PM_API_H
#define SC_PM_API_H

#include <firmware/imx/sci/types.h>
/* Defines for type widths */
#define SC_PM_POWER_MODE_W      2U      /* Width of sc_pm_power_mode_t */
#define SC_PM_CLOCK_MODE_W      3U      /* Width of sc_pm_clock_mode_t */
#define SC_PM_RESET_TYPE_W      2U      /* Width of sc_pm_reset_type_t */
#define SC_PM_RESET_REASON_W    4U      /* Width of sc_pm_reset_reason_t */
/* Defines for ALL parameters */
#define SC_PM_CLK_ALL   ((sc_pm_clk_t)UINT8_MAX)   /* All clocks */
/* Defines for sc_pm_power_mode_t */
#define SC_PM_PW_MODE_OFF	0U /* Power off */
#define SC_PM_PW_MODE_STBY	1U /* Power in standby */
#define SC_PM_PW_MODE_LP	2U /* Power in low-power */
#define SC_PM_PW_MODE_ON	3U /* Power on */

/* Defines for sc_pm_clk_t */
#define SC_PM_CLK_SLV_BUS	0U /* Slave bus clock */
#define SC_PM_CLK_MST_BUS	1U /* Master bus clock */
#define SC_PM_CLK_PER		2U /* Peripheral clock */
#define SC_PM_CLK_PHY		3U /* Phy clock */
#define SC_PM_CLK_MISC		4U /* Misc clock */
#define SC_PM_CLK_MISC0		0U /* Misc 0 clock */
#define SC_PM_CLK_MISC1		1U /* Misc 1 clock */
#define SC_PM_CLK_MISC2		2U /* Misc 2 clock */
#define SC_PM_CLK_MISC3		3U /* Misc 3 clock */
#define SC_PM_CLK_MISC4		4U /* Misc 4 clock */
#define SC_PM_CLK_CPU		2U /* CPU clock */
#define SC_PM_CLK_PLL		4U /* PLL */
#define SC_PM_CLK_BYPASS	4U /* Bypass clock */

/* Defines for sc_pm_clk_mode_t */
#define SC_PM_CLK_MODE_ROM_INIT		0U /* Clock is initialized by ROM. */
#define SC_PM_CLK_MODE_OFF		1U /* Clock is disabled */
#define SC_PM_CLK_MODE_ON		2U /* Clock is enabled. */
#define SC_PM_CLK_MODE_AUTOGATE_SW	3U /* Clock is in SW autogate mode */
#define SC_PM_CLK_MODE_AUTOGATE_HW	4U /* Clock is in HW autogate mode */
#define SC_PM_CLK_MODE_AUTOGATE_SW_HW	5U /* Clock is in SW-HW autogate mode */

/* Defines for sc_pm_clk_parent_t */
#define SC_PM_PARENT_XTAL              0U    /*!< Parent is XTAL. */
#define SC_PM_PARENT_PLL0              1U    /*!< Parent is PLL0 */
#define SC_PM_PARENT_PLL1              2U    /*!< Parent is PLL1 or PLL0/2 */
#define SC_PM_PARENT_PLL2              3U    /*!< Parent in PLL2 or PLL0/4 */
#define SC_PM_PARENT_BYPS              4U    /*!< Parent is a bypass clock. */

/* Defines for sc_pm_reset_type_t */
#define SC_PM_RESET_TYPE_COLD          0U    /* Cold reset */
#define SC_PM_RESET_TYPE_WARM          1U    /* Warm reset */
#define SC_PM_RESET_TYPE_BOARD         2U    /* Board reset */

/* Defines for sc_pm_reset_reason_t */
#define SC_PM_RESET_REASON_POR         0U    /* Power on reset */
#define SC_PM_RESET_REASON_JTAG        1U    /* JTAG reset */
#define SC_PM_RESET_REASON_SW          2U    /* Software reset */
#define SC_PM_RESET_REASON_WDOG        3U    /* Partition watchdog reset */
#define SC_PM_RESET_REASON_LOCKUP      4U    /* SCU lockup reset */
#define SC_PM_RESET_REASON_SNVS        5U    /* SNVS reset */
#define SC_PM_RESET_REASON_TEMP        6U    /* Temp panic reset */
#define SC_PM_RESET_REASON_MSI         7U    /* MSI reset */
#define SC_PM_RESET_REASON_UECC        8U    /* ECC reset */
#define SC_PM_RESET_REASON_SCFW_WDOG   9U    /* SCFW watchdog reset */
#define SC_PM_RESET_REASON_ROM_WDOG    10U   /* SCU ROM watchdog reset */
#define SC_PM_RESET_REASON_SECO        11U   /* SECO reset */
#define SC_PM_RESET_REASON_SCFW_FAULT  12U   /* SCFW fault reset */

/* Defines for sc_pm_sys_if_t */
#define SC_PM_SYS_IF_INTERCONNECT       0U   /* System interconnect */
#define SC_PM_SYS_IF_MU                 1U   /* AP -> SCU message units */
#define SC_PM_SYS_IF_OCMEM              2U   /* On-chip memory (ROM/OCRAM) */
#define SC_PM_SYS_IF_DDR                3U   /* DDR memory */

/* Defines for sc_pm_wake_src_t */
/* No wake source, used for self-kill */
#define SC_PM_WAKE_SRC_NONE             0U
/* Wakeup from SCU to resume CPU (IRQSTEER & GIC powered down) */
#define SC_PM_WAKE_SRC_SCU              1U
/* Wakeup from IRQSTEER to resume CPU (GIC powered down) */
#define SC_PM_WAKE_SRC_IRQSTEER         2U
/* Wakeup from IRQSTEER+GIC to wake CPU (GIC clock gated) */
#define SC_PM_WAKE_SRC_IRQSTEER_GIC     3U
/* Wakeup from GIC to wake CPU */
#define SC_PM_WAKE_SRC_GIC              4U
/* Types */

/*
 * This type is used to declare a power mode. Note resources only use
 * SC_PM_PW_MODE_OFF and SC_PM_PW_MODE_ON. The other modes are used only
 * as system power modes.
 */
typedef u8 sc_pm_power_mode_t;

/*
 * This type is used to declare a clock.
 */
typedef u8 sc_pm_clk_t;

/*
 * This type is used to declare a clock mode.
 */
typedef u8 sc_pm_clk_mode_t;

/*
 * This type is used to declare the clock parent.
 */
typedef u8 sc_pm_clk_parent_t;

/*
 * This type is used to declare clock rates.
 */
typedef u32 sc_pm_clock_rate_t;

/*
 * This type is used to declare a desired reset type.
 */
typedef u8 sc_pm_reset_type_t;

/*
 * This type is used to declare a reason for a reset.
 */
typedef u8 sc_pm_reset_reason_t;

/*
 * This type is used to specify a system-level interface to be power managed.
 */
typedef u8 sc_pm_sys_if_t;

/*
 * This type is used to specify a wake source for CPU resources.
 */
typedef u8 sc_pm_wake_src_t;
#endif /* SC_PM_API_H */