1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const PWRMGR_PARAM_NUM_WKUPS: u32 = 6;
16pub const PWRMGR_PARAM_SYSRST_CTRL_AON_WKUP_REQ_IDX: u32 = 0;
18pub const PWRMGR_PARAM_ADC_CTRL_AON_WKUP_REQ_IDX: u32 = 1;
20pub const PWRMGR_PARAM_PINMUX_AON_PIN_WKUP_REQ_IDX: u32 = 2;
22pub const PWRMGR_PARAM_PINMUX_AON_USB_WKUP_REQ_IDX: u32 = 3;
24pub const PWRMGR_PARAM_AON_TIMER_AON_WKUP_REQ_IDX: u32 = 4;
26pub const PWRMGR_PARAM_SENSOR_CTRL_WKUP_REQ_IDX: u32 = 5;
28pub const PWRMGR_PARAM_NUM_RST_REQS: u32 = 2;
30pub const PWRMGR_PARAM_NUM_INT_RST_REQS: u32 = 2;
32pub const PWRMGR_PARAM_NUM_DEBUG_RST_REQS: u32 = 1;
34pub const PWRMGR_PARAM_RESET_MAIN_PWR_IDX: u32 = 2;
36pub const PWRMGR_PARAM_RESET_ESC_IDX: u32 = 3;
38pub const PWRMGR_PARAM_RESET_NDM_IDX: u32 = 4;
40pub const PWRMGR_PARAM_NUM_ALERTS: u32 = 1;
42pub const PWRMGR_PARAM_REG_WIDTH: u32 = 32;
44
45register_structs! {
46 pub PwrmgrRegisters {
47 (0x0000 => pub(crate) intr_state: ReadWrite<u32, INTR::Register>),
49 (0x0004 => pub(crate) intr_enable: ReadWrite<u32, INTR::Register>),
51 (0x0008 => pub(crate) intr_test: ReadWrite<u32, INTR::Register>),
53 (0x000c => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
55 (0x0010 => pub(crate) ctrl_cfg_regwen: ReadWrite<u32, CTRL_CFG_REGWEN::Register>),
57 (0x0014 => pub(crate) control: ReadWrite<u32, CONTROL::Register>),
59 (0x0018 => pub(crate) cfg_cdc_sync: ReadWrite<u32, CFG_CDC_SYNC::Register>),
61 (0x001c => pub(crate) wakeup_en_regwen: ReadWrite<u32, WAKEUP_EN_REGWEN::Register>),
63 (0x0020 => pub(crate) wakeup_en: [ReadWrite<u32, WAKEUP_EN::Register>; 1]),
65 (0x0024 => pub(crate) wake_status: [ReadWrite<u32, WAKE_STATUS::Register>; 1]),
67 (0x0028 => pub(crate) reset_en_regwen: ReadWrite<u32, RESET_EN_REGWEN::Register>),
69 (0x002c => pub(crate) reset_en: [ReadWrite<u32, RESET_EN::Register>; 1]),
71 (0x0030 => pub(crate) reset_status: [ReadWrite<u32, RESET_STATUS::Register>; 1]),
73 (0x0034 => pub(crate) escalate_reset_status: ReadWrite<u32, ESCALATE_RESET_STATUS::Register>),
75 (0x0038 => pub(crate) wake_info_capture_dis: ReadWrite<u32, WAKE_INFO_CAPTURE_DIS::Register>),
77 (0x003c => pub(crate) wake_info: ReadWrite<u32, WAKE_INFO::Register>),
79 (0x0040 => pub(crate) fault_status: ReadWrite<u32, FAULT_STATUS::Register>),
81 (0x0044 => @END),
82 }
83}
84
85register_bitfields![u32,
86 pub(crate) INTR [
88 WAKEUP OFFSET(0) NUMBITS(1) [],
89 ],
90 pub(crate) ALERT_TEST [
91 FATAL_FAULT OFFSET(0) NUMBITS(1) [],
92 ],
93 pub(crate) CTRL_CFG_REGWEN [
94 EN OFFSET(0) NUMBITS(1) [],
95 ],
96 pub(crate) CONTROL [
97 LOW_POWER_HINT OFFSET(0) NUMBITS(1) [
98 NONE = 0,
99 LOW_POWER = 1,
100 ],
101 CORE_CLK_EN OFFSET(4) NUMBITS(1) [
102 DISABLED = 0,
103 ENABLED = 1,
104 ],
105 IO_CLK_EN OFFSET(5) NUMBITS(1) [
106 DISABLED = 0,
107 ENABLED = 1,
108 ],
109 USB_CLK_EN_LP OFFSET(6) NUMBITS(1) [
110 DISABLED = 0,
111 ENABLED = 1,
112 ],
113 USB_CLK_EN_ACTIVE OFFSET(7) NUMBITS(1) [
114 DISABLED = 0,
115 ENABLED = 1,
116 ],
117 MAIN_PD_N OFFSET(8) NUMBITS(1) [
118 POWER_DOWN = 0,
119 POWER_UP = 1,
120 ],
121 ],
122 pub(crate) CFG_CDC_SYNC [
123 SYNC OFFSET(0) NUMBITS(1) [],
124 ],
125 pub(crate) WAKEUP_EN_REGWEN [
126 EN OFFSET(0) NUMBITS(1) [],
127 ],
128 pub(crate) WAKEUP_EN [
129 EN_0 OFFSET(0) NUMBITS(1) [],
130 EN_1 OFFSET(1) NUMBITS(1) [],
131 EN_2 OFFSET(2) NUMBITS(1) [],
132 EN_3 OFFSET(3) NUMBITS(1) [],
133 EN_4 OFFSET(4) NUMBITS(1) [],
134 EN_5 OFFSET(5) NUMBITS(1) [],
135 ],
136 pub(crate) WAKE_STATUS [
137 VAL_0 OFFSET(0) NUMBITS(1) [],
138 VAL_1 OFFSET(1) NUMBITS(1) [],
139 VAL_2 OFFSET(2) NUMBITS(1) [],
140 VAL_3 OFFSET(3) NUMBITS(1) [],
141 VAL_4 OFFSET(4) NUMBITS(1) [],
142 VAL_5 OFFSET(5) NUMBITS(1) [],
143 ],
144 pub(crate) RESET_EN_REGWEN [
145 EN OFFSET(0) NUMBITS(1) [],
146 ],
147 pub(crate) RESET_EN [
148 EN_0 OFFSET(0) NUMBITS(1) [],
149 EN_1 OFFSET(1) NUMBITS(1) [],
150 ],
151 pub(crate) RESET_STATUS [
152 VAL_0 OFFSET(0) NUMBITS(1) [],
153 VAL_1 OFFSET(1) NUMBITS(1) [],
154 ],
155 pub(crate) ESCALATE_RESET_STATUS [
156 VAL OFFSET(0) NUMBITS(1) [],
157 ],
158 pub(crate) WAKE_INFO_CAPTURE_DIS [
159 VAL OFFSET(0) NUMBITS(1) [],
160 ],
161 pub(crate) WAKE_INFO [
162 REASONS OFFSET(0) NUMBITS(6) [],
163 FALL_THROUGH OFFSET(6) NUMBITS(1) [],
164 ABORT OFFSET(7) NUMBITS(1) [],
165 ],
166 pub(crate) FAULT_STATUS [
167 REG_INTG_ERR OFFSET(0) NUMBITS(1) [],
168 ESC_TIMEOUT OFFSET(1) NUMBITS(1) [],
169 MAIN_PD_GLITCH OFFSET(2) NUMBITS(1) [],
170 ],
171];
172
173