1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const GPIO_PARAM_NUM_ALERTS: u32 = 1;
16pub const GPIO_PARAM_REG_WIDTH: u32 = 32;
18
19register_structs! {
20 pub GpioRegisters {
21 (0x0000 => pub(crate) intr_state: ReadWrite<u32, INTR::Register>),
23 (0x0004 => pub(crate) intr_enable: ReadWrite<u32, INTR::Register>),
25 (0x0008 => pub(crate) intr_test: ReadWrite<u32, INTR::Register>),
27 (0x000c => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
29 (0x0010 => pub(crate) data_in: ReadWrite<u32, DATA_IN::Register>),
31 (0x0014 => pub(crate) direct_out: ReadWrite<u32, DIRECT_OUT::Register>),
33 (0x0018 => pub(crate) masked_out_lower: ReadWrite<u32, MASKED_OUT_LOWER::Register>),
35 (0x001c => pub(crate) masked_out_upper: ReadWrite<u32, MASKED_OUT_UPPER::Register>),
37 (0x0020 => pub(crate) direct_oe: ReadWrite<u32, DIRECT_OE::Register>),
39 (0x0024 => pub(crate) masked_oe_lower: ReadWrite<u32, MASKED_OE_LOWER::Register>),
41 (0x0028 => pub(crate) masked_oe_upper: ReadWrite<u32, MASKED_OE_UPPER::Register>),
43 (0x002c => pub(crate) intr_ctrl_en_rising: ReadWrite<u32, INTR::Register>),
45 (0x0030 => pub(crate) intr_ctrl_en_falling: ReadWrite<u32, INTR::Register>),
47 (0x0034 => pub(crate) intr_ctrl_en_lvlhigh: ReadWrite<u32, INTR::Register>),
49 (0x0038 => pub(crate) intr_ctrl_en_lvllow: ReadWrite<u32, INTR::Register>),
51 (0x003c => pub(crate) ctrl_en_input_filter: ReadWrite<u32, CTRL_EN_INPUT_FILTER::Register>),
53 (0x0040 => @END),
54 }
55}
56
57register_bitfields![u32,
58 pub(crate) INTR [
60 GPIO_0 OFFSET(0) NUMBITS(1) [],
61 GPIO_1 OFFSET(1) NUMBITS(1) [],
62 GPIO_2 OFFSET(2) NUMBITS(1) [],
63 GPIO_3 OFFSET(3) NUMBITS(1) [],
64 GPIO_4 OFFSET(4) NUMBITS(1) [],
65 GPIO_5 OFFSET(5) NUMBITS(1) [],
66 GPIO_6 OFFSET(6) NUMBITS(1) [],
67 GPIO_7 OFFSET(7) NUMBITS(1) [],
68 GPIO_8 OFFSET(8) NUMBITS(1) [],
69 GPIO_9 OFFSET(9) NUMBITS(1) [],
70 GPIO_10 OFFSET(10) NUMBITS(1) [],
71 GPIO_11 OFFSET(11) NUMBITS(1) [],
72 GPIO_12 OFFSET(12) NUMBITS(1) [],
73 GPIO_13 OFFSET(13) NUMBITS(1) [],
74 GPIO_14 OFFSET(14) NUMBITS(1) [],
75 GPIO_15 OFFSET(15) NUMBITS(1) [],
76 GPIO_16 OFFSET(16) NUMBITS(1) [],
77 GPIO_17 OFFSET(17) NUMBITS(1) [],
78 GPIO_18 OFFSET(18) NUMBITS(1) [],
79 GPIO_19 OFFSET(19) NUMBITS(1) [],
80 GPIO_20 OFFSET(20) NUMBITS(1) [],
81 GPIO_21 OFFSET(21) NUMBITS(1) [],
82 GPIO_22 OFFSET(22) NUMBITS(1) [],
83 GPIO_23 OFFSET(23) NUMBITS(1) [],
84 GPIO_24 OFFSET(24) NUMBITS(1) [],
85 GPIO_25 OFFSET(25) NUMBITS(1) [],
86 GPIO_26 OFFSET(26) NUMBITS(1) [],
87 GPIO_27 OFFSET(27) NUMBITS(1) [],
88 GPIO_28 OFFSET(28) NUMBITS(1) [],
89 GPIO_29 OFFSET(29) NUMBITS(1) [],
90 GPIO_30 OFFSET(30) NUMBITS(1) [],
91 GPIO_31 OFFSET(31) NUMBITS(1) [],
92 ],
93 pub(crate) ALERT_TEST [
94 FATAL_FAULT OFFSET(0) NUMBITS(1) [],
95 ],
96 pub(crate) DATA_IN [
97 DATA_IN OFFSET(0) NUMBITS(32) [],
98 ],
99 pub(crate) DIRECT_OUT [
100 DIRECT_OUT OFFSET(0) NUMBITS(32) [],
101 ],
102 pub(crate) MASKED_OUT_LOWER [
103 DATA OFFSET(0) NUMBITS(16) [],
104 MASK OFFSET(16) NUMBITS(16) [],
105 ],
106 pub(crate) MASKED_OUT_UPPER [
107 DATA OFFSET(0) NUMBITS(16) [],
108 MASK OFFSET(16) NUMBITS(16) [],
109 ],
110 pub(crate) DIRECT_OE [
111 DIRECT_OE_0 OFFSET(0) NUMBITS(1) [],
112 DIRECT_OE_1 OFFSET(1) NUMBITS(1) [],
113 DIRECT_OE_2 OFFSET(2) NUMBITS(1) [],
114 DIRECT_OE_3 OFFSET(3) NUMBITS(1) [],
115 DIRECT_OE_4 OFFSET(4) NUMBITS(1) [],
116 DIRECT_OE_5 OFFSET(5) NUMBITS(1) [],
117 DIRECT_OE_6 OFFSET(6) NUMBITS(1) [],
118 DIRECT_OE_7 OFFSET(7) NUMBITS(1) [],
119 DIRECT_OE_8 OFFSET(8) NUMBITS(1) [],
120 DIRECT_OE_9 OFFSET(9) NUMBITS(1) [],
121 DIRECT_OE_10 OFFSET(10) NUMBITS(1) [],
122 DIRECT_OE_11 OFFSET(11) NUMBITS(1) [],
123 DIRECT_OE_12 OFFSET(12) NUMBITS(1) [],
124 DIRECT_OE_13 OFFSET(13) NUMBITS(1) [],
125 DIRECT_OE_14 OFFSET(14) NUMBITS(1) [],
126 DIRECT_OE_15 OFFSET(15) NUMBITS(1) [],
127 DIRECT_OE_16 OFFSET(16) NUMBITS(1) [],
128 DIRECT_OE_17 OFFSET(17) NUMBITS(1) [],
129 DIRECT_OE_18 OFFSET(18) NUMBITS(1) [],
130 DIRECT_OE_19 OFFSET(19) NUMBITS(1) [],
131 DIRECT_OE_20 OFFSET(20) NUMBITS(1) [],
132 DIRECT_OE_21 OFFSET(21) NUMBITS(1) [],
133 DIRECT_OE_22 OFFSET(22) NUMBITS(1) [],
134 DIRECT_OE_23 OFFSET(23) NUMBITS(1) [],
135 DIRECT_OE_24 OFFSET(24) NUMBITS(1) [],
136 DIRECT_OE_25 OFFSET(25) NUMBITS(1) [],
137 DIRECT_OE_26 OFFSET(26) NUMBITS(1) [],
138 DIRECT_OE_27 OFFSET(27) NUMBITS(1) [],
139 DIRECT_OE_28 OFFSET(28) NUMBITS(1) [],
140 DIRECT_OE_29 OFFSET(29) NUMBITS(1) [],
141 DIRECT_OE_30 OFFSET(30) NUMBITS(1) [],
142 DIRECT_OE_31 OFFSET(31) NUMBITS(1) [],
143 ],
144 pub(crate) MASKED_OE_LOWER [
145 DATA OFFSET(0) NUMBITS(16) [],
146 MASK OFFSET(16) NUMBITS(16) [],
147 ],
148 pub(crate) MASKED_OE_UPPER [
149 DATA OFFSET(0) NUMBITS(16) [],
150 MASK OFFSET(16) NUMBITS(16) [],
151 ],
152 pub(crate) CTRL_EN_INPUT_FILTER [
153 CTRL_EN_INPUT_FILTER OFFSET(0) NUMBITS(32) [],
154 ],
155];
156
157