1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const SYSRST_CTRL_PARAM_NUM_COMBO: u32 = 4;
16pub const SYSRST_CTRL_PARAM_TIMER_WIDTH: u32 = 16;
18pub const SYSRST_CTRL_PARAM_DET_TIMER_WIDTH: u32 = 32;
20pub const SYSRST_CTRL_PARAM_NUM_ALERTS: u32 = 1;
22pub const SYSRST_CTRL_PARAM_REG_WIDTH: u32 = 32;
24
25register_structs! {
26 pub SysrstCtrlRegisters {
27 (0x0000 => pub(crate) intr_state: ReadWrite<u32, INTR::Register>),
29 (0x0004 => pub(crate) intr_enable: ReadWrite<u32, INTR::Register>),
31 (0x0008 => pub(crate) intr_test: ReadWrite<u32, INTR::Register>),
33 (0x000c => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
35 (0x0010 => pub(crate) regwen: ReadWrite<u32, REGWEN::Register>),
37 (0x0014 => pub(crate) ec_rst_ctl: ReadWrite<u32, EC_RST_CTL::Register>),
39 (0x0018 => pub(crate) ulp_ac_debounce_ctl: ReadWrite<u32, ULP_AC_DEBOUNCE_CTL::Register>),
41 (0x001c => pub(crate) ulp_lid_debounce_ctl: ReadWrite<u32, ULP_LID_DEBOUNCE_CTL::Register>),
43 (0x0020 => pub(crate) ulp_pwrb_debounce_ctl: ReadWrite<u32, ULP_PWRB_DEBOUNCE_CTL::Register>),
45 (0x0024 => pub(crate) ulp_ctl: ReadWrite<u32, ULP_CTL::Register>),
47 (0x0028 => pub(crate) ulp_status: ReadWrite<u32, ULP_STATUS::Register>),
49 (0x002c => pub(crate) wkup_status: ReadWrite<u32, WKUP_STATUS::Register>),
51 (0x0030 => pub(crate) key_invert_ctl: ReadWrite<u32, KEY_INVERT_CTL::Register>),
53 (0x0034 => pub(crate) pin_allowed_ctl: ReadWrite<u32, PIN_ALLOWED_CTL::Register>),
55 (0x0038 => pub(crate) pin_out_ctl: ReadWrite<u32, PIN_OUT_CTL::Register>),
57 (0x003c => pub(crate) pin_out_value: ReadWrite<u32, PIN_OUT_VALUE::Register>),
59 (0x0040 => pub(crate) pin_in_value: ReadWrite<u32, PIN_IN_VALUE::Register>),
61 (0x0044 => pub(crate) key_intr_ctl: ReadWrite<u32, KEY_INTR_CTL::Register>),
63 (0x0048 => pub(crate) key_intr_debounce_ctl: ReadWrite<u32, KEY_INTR_DEBOUNCE_CTL::Register>),
65 (0x004c => pub(crate) auto_block_debounce_ctl: ReadWrite<u32, AUTO_BLOCK_DEBOUNCE_CTL::Register>),
67 (0x0050 => pub(crate) auto_block_out_ctl: ReadWrite<u32, AUTO_BLOCK_OUT_CTL::Register>),
69 (0x0054 => pub(crate) com_pre_sel_ctl: [ReadWrite<u32, COM_PRE_SEL_CTL::Register>; 4]),
71 (0x0064 => pub(crate) com_pre_det_ctl: [ReadWrite<u32, COM_PRE_DET_CTL::Register>; 4]),
73 (0x0074 => pub(crate) com_sel_ctl: [ReadWrite<u32, COM_SEL_CTL::Register>; 4]),
75 (0x0084 => pub(crate) com_det_ctl: [ReadWrite<u32, COM_DET_CTL::Register>; 4]),
77 (0x0094 => pub(crate) com_out_ctl: [ReadWrite<u32, COM_OUT_CTL::Register>; 4]),
79 (0x00a4 => pub(crate) combo_intr_status: ReadWrite<u32, COMBO_INTR_STATUS::Register>),
81 (0x00a8 => pub(crate) key_intr_status: ReadWrite<u32, KEY_INTR_STATUS::Register>),
83 (0x00ac => @END),
84 }
85}
86
87register_bitfields![u32,
88 pub(crate) INTR [
90 EVENT_DETECTED OFFSET(0) NUMBITS(1) [],
91 ],
92 pub(crate) ALERT_TEST [
93 FATAL_FAULT OFFSET(0) NUMBITS(1) [],
94 ],
95 pub(crate) REGWEN [
96 WRITE_EN OFFSET(0) NUMBITS(1) [],
97 ],
98 pub(crate) EC_RST_CTL [
99 EC_RST_PULSE OFFSET(0) NUMBITS(16) [],
100 ],
101 pub(crate) ULP_AC_DEBOUNCE_CTL [
102 ULP_AC_DEBOUNCE_TIMER OFFSET(0) NUMBITS(16) [],
103 ],
104 pub(crate) ULP_LID_DEBOUNCE_CTL [
105 ULP_LID_DEBOUNCE_TIMER OFFSET(0) NUMBITS(16) [],
106 ],
107 pub(crate) ULP_PWRB_DEBOUNCE_CTL [
108 ULP_PWRB_DEBOUNCE_TIMER OFFSET(0) NUMBITS(16) [],
109 ],
110 pub(crate) ULP_CTL [
111 ULP_ENABLE OFFSET(0) NUMBITS(1) [],
112 ],
113 pub(crate) ULP_STATUS [
114 ULP_WAKEUP OFFSET(0) NUMBITS(1) [],
115 ],
116 pub(crate) WKUP_STATUS [
117 WAKEUP_STS OFFSET(0) NUMBITS(1) [],
118 ],
119 pub(crate) KEY_INVERT_CTL [
120 KEY0_IN OFFSET(0) NUMBITS(1) [],
121 KEY0_OUT OFFSET(1) NUMBITS(1) [],
122 KEY1_IN OFFSET(2) NUMBITS(1) [],
123 KEY1_OUT OFFSET(3) NUMBITS(1) [],
124 KEY2_IN OFFSET(4) NUMBITS(1) [],
125 KEY2_OUT OFFSET(5) NUMBITS(1) [],
126 PWRB_IN OFFSET(6) NUMBITS(1) [],
127 PWRB_OUT OFFSET(7) NUMBITS(1) [],
128 AC_PRESENT OFFSET(8) NUMBITS(1) [],
129 BAT_DISABLE OFFSET(9) NUMBITS(1) [],
130 LID_OPEN OFFSET(10) NUMBITS(1) [],
131 Z3_WAKEUP OFFSET(11) NUMBITS(1) [],
132 ],
133 pub(crate) PIN_ALLOWED_CTL [
134 BAT_DISABLE_0 OFFSET(0) NUMBITS(1) [],
135 EC_RST_L_0 OFFSET(1) NUMBITS(1) [],
136 PWRB_OUT_0 OFFSET(2) NUMBITS(1) [],
137 KEY0_OUT_0 OFFSET(3) NUMBITS(1) [],
138 KEY1_OUT_0 OFFSET(4) NUMBITS(1) [],
139 KEY2_OUT_0 OFFSET(5) NUMBITS(1) [],
140 Z3_WAKEUP_0 OFFSET(6) NUMBITS(1) [],
141 FLASH_WP_L_0 OFFSET(7) NUMBITS(1) [],
142 BAT_DISABLE_1 OFFSET(8) NUMBITS(1) [],
143 EC_RST_L_1 OFFSET(9) NUMBITS(1) [],
144 PWRB_OUT_1 OFFSET(10) NUMBITS(1) [],
145 KEY0_OUT_1 OFFSET(11) NUMBITS(1) [],
146 KEY1_OUT_1 OFFSET(12) NUMBITS(1) [],
147 KEY2_OUT_1 OFFSET(13) NUMBITS(1) [],
148 Z3_WAKEUP_1 OFFSET(14) NUMBITS(1) [],
149 FLASH_WP_L_1 OFFSET(15) NUMBITS(1) [],
150 ],
151 pub(crate) PIN_OUT_CTL [
152 BAT_DISABLE OFFSET(0) NUMBITS(1) [],
153 EC_RST_L OFFSET(1) NUMBITS(1) [],
154 PWRB_OUT OFFSET(2) NUMBITS(1) [],
155 KEY0_OUT OFFSET(3) NUMBITS(1) [],
156 KEY1_OUT OFFSET(4) NUMBITS(1) [],
157 KEY2_OUT OFFSET(5) NUMBITS(1) [],
158 Z3_WAKEUP OFFSET(6) NUMBITS(1) [],
159 FLASH_WP_L OFFSET(7) NUMBITS(1) [],
160 ],
161 pub(crate) PIN_OUT_VALUE [
162 BAT_DISABLE OFFSET(0) NUMBITS(1) [],
163 EC_RST_L OFFSET(1) NUMBITS(1) [],
164 PWRB_OUT OFFSET(2) NUMBITS(1) [],
165 KEY0_OUT OFFSET(3) NUMBITS(1) [],
166 KEY1_OUT OFFSET(4) NUMBITS(1) [],
167 KEY2_OUT OFFSET(5) NUMBITS(1) [],
168 Z3_WAKEUP OFFSET(6) NUMBITS(1) [],
169 FLASH_WP_L OFFSET(7) NUMBITS(1) [],
170 ],
171 pub(crate) PIN_IN_VALUE [
172 PWRB_IN OFFSET(0) NUMBITS(1) [],
173 KEY0_IN OFFSET(1) NUMBITS(1) [],
174 KEY1_IN OFFSET(2) NUMBITS(1) [],
175 KEY2_IN OFFSET(3) NUMBITS(1) [],
176 LID_OPEN OFFSET(4) NUMBITS(1) [],
177 AC_PRESENT OFFSET(5) NUMBITS(1) [],
178 EC_RST_L OFFSET(6) NUMBITS(1) [],
179 FLASH_WP_L OFFSET(7) NUMBITS(1) [],
180 ],
181 pub(crate) KEY_INTR_CTL [
182 PWRB_IN_H2L OFFSET(0) NUMBITS(1) [],
183 KEY0_IN_H2L OFFSET(1) NUMBITS(1) [],
184 KEY1_IN_H2L OFFSET(2) NUMBITS(1) [],
185 KEY2_IN_H2L OFFSET(3) NUMBITS(1) [],
186 AC_PRESENT_H2L OFFSET(4) NUMBITS(1) [],
187 EC_RST_L_H2L OFFSET(5) NUMBITS(1) [],
188 FLASH_WP_L_H2L OFFSET(6) NUMBITS(1) [],
189 PWRB_IN_L2H OFFSET(7) NUMBITS(1) [],
190 KEY0_IN_L2H OFFSET(8) NUMBITS(1) [],
191 KEY1_IN_L2H OFFSET(9) NUMBITS(1) [],
192 KEY2_IN_L2H OFFSET(10) NUMBITS(1) [],
193 AC_PRESENT_L2H OFFSET(11) NUMBITS(1) [],
194 EC_RST_L_L2H OFFSET(12) NUMBITS(1) [],
195 FLASH_WP_L_L2H OFFSET(13) NUMBITS(1) [],
196 ],
197 pub(crate) KEY_INTR_DEBOUNCE_CTL [
198 DEBOUNCE_TIMER OFFSET(0) NUMBITS(16) [],
199 ],
200 pub(crate) AUTO_BLOCK_DEBOUNCE_CTL [
201 DEBOUNCE_TIMER OFFSET(0) NUMBITS(16) [],
202 AUTO_BLOCK_ENABLE OFFSET(16) NUMBITS(1) [],
203 ],
204 pub(crate) AUTO_BLOCK_OUT_CTL [
205 KEY0_OUT_SEL OFFSET(0) NUMBITS(1) [],
206 KEY1_OUT_SEL OFFSET(1) NUMBITS(1) [],
207 KEY2_OUT_SEL OFFSET(2) NUMBITS(1) [],
208 KEY0_OUT_VALUE OFFSET(4) NUMBITS(1) [],
209 KEY1_OUT_VALUE OFFSET(5) NUMBITS(1) [],
210 KEY2_OUT_VALUE OFFSET(6) NUMBITS(1) [],
211 ],
212 pub(crate) COM_PRE_SEL_CTL [
213 KEY0_IN_SEL_0 OFFSET(0) NUMBITS(1) [],
214 KEY1_IN_SEL_0 OFFSET(1) NUMBITS(1) [],
215 KEY2_IN_SEL_0 OFFSET(2) NUMBITS(1) [],
216 PWRB_IN_SEL_0 OFFSET(3) NUMBITS(1) [],
217 AC_PRESENT_SEL_0 OFFSET(4) NUMBITS(1) [],
218 ],
219 pub(crate) COM_PRE_DET_CTL [
220 PRECONDITION_TIMER_0 OFFSET(0) NUMBITS(32) [],
221 ],
222 pub(crate) COM_SEL_CTL [
223 KEY0_IN_SEL_0 OFFSET(0) NUMBITS(1) [],
224 KEY1_IN_SEL_0 OFFSET(1) NUMBITS(1) [],
225 KEY2_IN_SEL_0 OFFSET(2) NUMBITS(1) [],
226 PWRB_IN_SEL_0 OFFSET(3) NUMBITS(1) [],
227 AC_PRESENT_SEL_0 OFFSET(4) NUMBITS(1) [],
228 ],
229 pub(crate) COM_DET_CTL [
230 DETECTION_TIMER_0 OFFSET(0) NUMBITS(32) [],
231 ],
232 pub(crate) COM_OUT_CTL [
233 BAT_DISABLE_0 OFFSET(0) NUMBITS(1) [],
234 INTERRUPT_0 OFFSET(1) NUMBITS(1) [],
235 EC_RST_0 OFFSET(2) NUMBITS(1) [],
236 RST_REQ_0 OFFSET(3) NUMBITS(1) [],
237 ],
238 pub(crate) COMBO_INTR_STATUS [
239 COMBO0_H2L OFFSET(0) NUMBITS(1) [],
240 COMBO1_H2L OFFSET(1) NUMBITS(1) [],
241 COMBO2_H2L OFFSET(2) NUMBITS(1) [],
242 COMBO3_H2L OFFSET(3) NUMBITS(1) [],
243 ],
244 pub(crate) KEY_INTR_STATUS [
245 PWRB_H2L OFFSET(0) NUMBITS(1) [],
246 KEY0_IN_H2L OFFSET(1) NUMBITS(1) [],
247 KEY1_IN_H2L OFFSET(2) NUMBITS(1) [],
248 KEY2_IN_H2L OFFSET(3) NUMBITS(1) [],
249 AC_PRESENT_H2L OFFSET(4) NUMBITS(1) [],
250 EC_RST_L_H2L OFFSET(5) NUMBITS(1) [],
251 FLASH_WP_L_H2L OFFSET(6) NUMBITS(1) [],
252 PWRB_L2H OFFSET(7) NUMBITS(1) [],
253 KEY0_IN_L2H OFFSET(8) NUMBITS(1) [],
254 KEY1_IN_L2H OFFSET(9) NUMBITS(1) [],
255 KEY2_IN_L2H OFFSET(10) NUMBITS(1) [],
256 AC_PRESENT_L2H OFFSET(11) NUMBITS(1) [],
257 EC_RST_L_L2H OFFSET(12) NUMBITS(1) [],
258 FLASH_WP_L_L2H OFFSET(13) NUMBITS(1) [],
259 ],
260];
261
262