Software APIs
pinmux.h
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_PINMUX_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_PINMUX_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 // Note: these definitions rely on constants from top_earlgrey.h
13 // and therefore this library cannot be used with the `ujson_rust`
14 // bazel rule. Instead, these constants are imported into rust
15 // by way of a bindgen rule and recreated as Rust datatypes with
16 // appropriate aliases to be used by other `ujson` libraries.
17 #ifndef RUST_PREPROCESSOR_EMIT
19 #endif
20 // clang-format off
21 
22 #define TOP_EARLGREY_PINMUX_PERIPHERAL_IN(_, value) \
23  value(_, GpioGpio0, kTopEarlgreyPinmuxPeripheralInGpioGpio0) \
24  value(_, GpioGpio1, kTopEarlgreyPinmuxPeripheralInGpioGpio1) \
25  value(_, GpioGpio2, kTopEarlgreyPinmuxPeripheralInGpioGpio2) \
26  value(_, GpioGpio3, kTopEarlgreyPinmuxPeripheralInGpioGpio3) \
27  value(_, GpioGpio4, kTopEarlgreyPinmuxPeripheralInGpioGpio4) \
28  value(_, GpioGpio5, kTopEarlgreyPinmuxPeripheralInGpioGpio5) \
29  value(_, GpioGpio6, kTopEarlgreyPinmuxPeripheralInGpioGpio6) \
30  value(_, GpioGpio7, kTopEarlgreyPinmuxPeripheralInGpioGpio7) \
31  value(_, GpioGpio8, kTopEarlgreyPinmuxPeripheralInGpioGpio8) \
32  value(_, GpioGpio9, kTopEarlgreyPinmuxPeripheralInGpioGpio9) \
33  value(_, GpioGpio10, kTopEarlgreyPinmuxPeripheralInGpioGpio10) \
34  value(_, GpioGpio11, kTopEarlgreyPinmuxPeripheralInGpioGpio11) \
35  value(_, GpioGpio12, kTopEarlgreyPinmuxPeripheralInGpioGpio12) \
36  value(_, GpioGpio13, kTopEarlgreyPinmuxPeripheralInGpioGpio13) \
37  value(_, GpioGpio14, kTopEarlgreyPinmuxPeripheralInGpioGpio14) \
38  value(_, GpioGpio15, kTopEarlgreyPinmuxPeripheralInGpioGpio15) \
39  value(_, GpioGpio16, kTopEarlgreyPinmuxPeripheralInGpioGpio16) \
40  value(_, GpioGpio17, kTopEarlgreyPinmuxPeripheralInGpioGpio17) \
41  value(_, GpioGpio18, kTopEarlgreyPinmuxPeripheralInGpioGpio18) \
42  value(_, GpioGpio19, kTopEarlgreyPinmuxPeripheralInGpioGpio19) \
43  value(_, GpioGpio20, kTopEarlgreyPinmuxPeripheralInGpioGpio20) \
44  value(_, GpioGpio21, kTopEarlgreyPinmuxPeripheralInGpioGpio21) \
45  value(_, GpioGpio22, kTopEarlgreyPinmuxPeripheralInGpioGpio22) \
46  value(_, GpioGpio23, kTopEarlgreyPinmuxPeripheralInGpioGpio23) \
47  value(_, GpioGpio24, kTopEarlgreyPinmuxPeripheralInGpioGpio24) \
48  value(_, GpioGpio25, kTopEarlgreyPinmuxPeripheralInGpioGpio25) \
49  value(_, GpioGpio26, kTopEarlgreyPinmuxPeripheralInGpioGpio26) \
50  value(_, GpioGpio27, kTopEarlgreyPinmuxPeripheralInGpioGpio27) \
51  value(_, GpioGpio28, kTopEarlgreyPinmuxPeripheralInGpioGpio28) \
52  value(_, GpioGpio29, kTopEarlgreyPinmuxPeripheralInGpioGpio29) \
53  value(_, GpioGpio30, kTopEarlgreyPinmuxPeripheralInGpioGpio30) \
54  value(_, GpioGpio31, kTopEarlgreyPinmuxPeripheralInGpioGpio31) \
55  value(_, I2c0Sda, kTopEarlgreyPinmuxPeripheralInI2c0Sda) \
56  value(_, I2c0Scl, kTopEarlgreyPinmuxPeripheralInI2c0Scl) \
57  value(_, I2c1Sda, kTopEarlgreyPinmuxPeripheralInI2c1Sda) \
58  value(_, I2c1Scl, kTopEarlgreyPinmuxPeripheralInI2c1Scl) \
59  value(_, I2c2Sda, kTopEarlgreyPinmuxPeripheralInI2c2Sda) \
60  value(_, I2c2Scl, kTopEarlgreyPinmuxPeripheralInI2c2Scl) \
61  value(_, SpiHost1Sd0, kTopEarlgreyPinmuxPeripheralInSpiHost1Sd0) \
62  value(_, SpiHost1Sd1, kTopEarlgreyPinmuxPeripheralInSpiHost1Sd1) \
63  value(_, SpiHost1Sd2, kTopEarlgreyPinmuxPeripheralInSpiHost1Sd2) \
64  value(_, SpiHost1Sd3, kTopEarlgreyPinmuxPeripheralInSpiHost1Sd3) \
65  value(_, Uart0Rx, kTopEarlgreyPinmuxPeripheralInUart0Rx) \
66  value(_, Uart1Rx, kTopEarlgreyPinmuxPeripheralInUart1Rx) \
67  value(_, Uart2Rx, kTopEarlgreyPinmuxPeripheralInUart2Rx) \
68  value(_, Uart3Rx, kTopEarlgreyPinmuxPeripheralInUart3Rx) \
69  value(_, SpiDeviceTpmCsb, kTopEarlgreyPinmuxPeripheralInSpiDeviceTpmCsb) \
70  value(_, FlashCtrlTck, kTopEarlgreyPinmuxPeripheralInFlashCtrlTck) \
71  value(_, FlashCtrlTms, kTopEarlgreyPinmuxPeripheralInFlashCtrlTms) \
72  value(_, FlashCtrlTdi, kTopEarlgreyPinmuxPeripheralInFlashCtrlTdi) \
73  value(_, SysrstCtrlAonAcPresent, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonAcPresent) \
74  value(_, SysrstCtrlAonKey0In, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonKey0In) \
75  value(_, SysrstCtrlAonKey1In, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonKey1In) \
76  value(_, SysrstCtrlAonKey2In, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonKey2In) \
77  value(_, SysrstCtrlAonPwrbIn, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonPwrbIn) \
78  value(_, SysrstCtrlAonLidOpen, kTopEarlgreyPinmuxPeripheralInSysrstCtrlAonLidOpen) \
79  value(_, UsbdevSense, kTopEarlgreyPinmuxPeripheralInUsbdevSense) \
80  value(_, End, kTopEarlgreyPinmuxPeripheralInLast + 1)
81 C_ONLY(UJSON_SERDE_ENUM(PinmuxPeripheralIn, pinmux_peripheral_in_t, TOP_EARLGREY_PINMUX_PERIPHERAL_IN, WITH_UNKNOWN));
82 
83 #define TOP_EARLGREY_PINMUX_INSEL(_, value) \
84  value(_, ConstantZero, kTopEarlgreyPinmuxInselConstantZero) \
85  value(_, ConstantOne, kTopEarlgreyPinmuxInselConstantOne) \
86  value(_, Ioa0, kTopEarlgreyPinmuxInselIoa0) \
87  value(_, Ioa1, kTopEarlgreyPinmuxInselIoa1) \
88  value(_, Ioa2, kTopEarlgreyPinmuxInselIoa2) \
89  value(_, Ioa3, kTopEarlgreyPinmuxInselIoa3) \
90  value(_, Ioa4, kTopEarlgreyPinmuxInselIoa4) \
91  value(_, Ioa5, kTopEarlgreyPinmuxInselIoa5) \
92  value(_, Ioa6, kTopEarlgreyPinmuxInselIoa6) \
93  value(_, Ioa7, kTopEarlgreyPinmuxInselIoa7) \
94  value(_, Ioa8, kTopEarlgreyPinmuxInselIoa8) \
95  value(_, Iob0, kTopEarlgreyPinmuxInselIob0) \
96  value(_, Iob1, kTopEarlgreyPinmuxInselIob1) \
97  value(_, Iob2, kTopEarlgreyPinmuxInselIob2) \
98  value(_, Iob3, kTopEarlgreyPinmuxInselIob3) \
99  value(_, Iob4, kTopEarlgreyPinmuxInselIob4) \
100  value(_, Iob5, kTopEarlgreyPinmuxInselIob5) \
101  value(_, Iob6, kTopEarlgreyPinmuxInselIob6) \
102  value(_, Iob7, kTopEarlgreyPinmuxInselIob7) \
103  value(_, Iob8, kTopEarlgreyPinmuxInselIob8) \
104  value(_, Iob9, kTopEarlgreyPinmuxInselIob9) \
105  value(_, Iob10, kTopEarlgreyPinmuxInselIob10) \
106  value(_, Iob11, kTopEarlgreyPinmuxInselIob11) \
107  value(_, Iob12, kTopEarlgreyPinmuxInselIob12) \
108  value(_, Ioc0, kTopEarlgreyPinmuxInselIoc0) \
109  value(_, Ioc1, kTopEarlgreyPinmuxInselIoc1) \
110  value(_, Ioc2, kTopEarlgreyPinmuxInselIoc2) \
111  value(_, Ioc3, kTopEarlgreyPinmuxInselIoc3) \
112  value(_, Ioc4, kTopEarlgreyPinmuxInselIoc4) \
113  value(_, Ioc5, kTopEarlgreyPinmuxInselIoc5) \
114  value(_, Ioc6, kTopEarlgreyPinmuxInselIoc6) \
115  value(_, Ioc7, kTopEarlgreyPinmuxInselIoc7) \
116  value(_, Ioc8, kTopEarlgreyPinmuxInselIoc8) \
117  value(_, Ioc9, kTopEarlgreyPinmuxInselIoc9) \
118  value(_, Ioc10, kTopEarlgreyPinmuxInselIoc10) \
119  value(_, Ioc11, kTopEarlgreyPinmuxInselIoc11) \
120  value(_, Ioc12, kTopEarlgreyPinmuxInselIoc12) \
121  value(_, Ior0, kTopEarlgreyPinmuxInselIor0) \
122  value(_, Ior1, kTopEarlgreyPinmuxInselIor1) \
123  value(_, Ior2, kTopEarlgreyPinmuxInselIor2) \
124  value(_, Ior3, kTopEarlgreyPinmuxInselIor3) \
125  value(_, Ior4, kTopEarlgreyPinmuxInselIor4) \
126  value(_, Ior5, kTopEarlgreyPinmuxInselIor5) \
127  value(_, Ior6, kTopEarlgreyPinmuxInselIor6) \
128  value(_, Ior7, kTopEarlgreyPinmuxInselIor7) \
129  value(_, Ior10, kTopEarlgreyPinmuxInselIor10) \
130  value(_, Ior11, kTopEarlgreyPinmuxInselIor11) \
131  value(_, Ior12, kTopEarlgreyPinmuxInselIor12) \
132  value(_, Ior13, kTopEarlgreyPinmuxInselIor13) \
133  value(_, End, kTopEarlgreyPinmuxInselLast + 1)
134 C_ONLY(UJSON_SERDE_ENUM(PinmuxInsel, pinmux_insel_t, TOP_EARLGREY_PINMUX_INSEL, WITH_UNKNOWN));
135 
136 #define TOP_EARLGREY_PINMUX_MIO_OUT(_, value) \
137  value(_, Ioa0, kTopEarlgreyPinmuxMioOutIoa0) \
138  value(_, Ioa1, kTopEarlgreyPinmuxMioOutIoa1) \
139  value(_, Ioa2, kTopEarlgreyPinmuxMioOutIoa2) \
140  value(_, Ioa3, kTopEarlgreyPinmuxMioOutIoa3) \
141  value(_, Ioa4, kTopEarlgreyPinmuxMioOutIoa4) \
142  value(_, Ioa5, kTopEarlgreyPinmuxMioOutIoa5) \
143  value(_, Ioa6, kTopEarlgreyPinmuxMioOutIoa6) \
144  value(_, Ioa7, kTopEarlgreyPinmuxMioOutIoa7) \
145  value(_, Ioa8, kTopEarlgreyPinmuxMioOutIoa8) \
146  value(_, Iob0, kTopEarlgreyPinmuxMioOutIob0) \
147  value(_, Iob1, kTopEarlgreyPinmuxMioOutIob1) \
148  value(_, Iob2, kTopEarlgreyPinmuxMioOutIob2) \
149  value(_, Iob3, kTopEarlgreyPinmuxMioOutIob3) \
150  value(_, Iob4, kTopEarlgreyPinmuxMioOutIob4) \
151  value(_, Iob5, kTopEarlgreyPinmuxMioOutIob5) \
152  value(_, Iob6, kTopEarlgreyPinmuxMioOutIob6) \
153  value(_, Iob7, kTopEarlgreyPinmuxMioOutIob7) \
154  value(_, Iob8, kTopEarlgreyPinmuxMioOutIob8) \
155  value(_, Iob9, kTopEarlgreyPinmuxMioOutIob9) \
156  value(_, Iob10, kTopEarlgreyPinmuxMioOutIob10) \
157  value(_, Iob11, kTopEarlgreyPinmuxMioOutIob11) \
158  value(_, Iob12, kTopEarlgreyPinmuxMioOutIob12) \
159  value(_, Ioc0, kTopEarlgreyPinmuxMioOutIoc0) \
160  value(_, Ioc1, kTopEarlgreyPinmuxMioOutIoc1) \
161  value(_, Ioc2, kTopEarlgreyPinmuxMioOutIoc2) \
162  value(_, Ioc3, kTopEarlgreyPinmuxMioOutIoc3) \
163  value(_, Ioc4, kTopEarlgreyPinmuxMioOutIoc4) \
164  value(_, Ioc5, kTopEarlgreyPinmuxMioOutIoc5) \
165  value(_, Ioc6, kTopEarlgreyPinmuxMioOutIoc6) \
166  value(_, Ioc7, kTopEarlgreyPinmuxMioOutIoc7) \
167  value(_, Ioc8, kTopEarlgreyPinmuxMioOutIoc8) \
168  value(_, Ioc9, kTopEarlgreyPinmuxMioOutIoc9) \
169  value(_, Ioc10, kTopEarlgreyPinmuxMioOutIoc10) \
170  value(_, Ioc11, kTopEarlgreyPinmuxMioOutIoc11) \
171  value(_, Ioc12, kTopEarlgreyPinmuxMioOutIoc12) \
172  value(_, Ior0, kTopEarlgreyPinmuxMioOutIor0) \
173  value(_, Ior1, kTopEarlgreyPinmuxMioOutIor1) \
174  value(_, Ior2, kTopEarlgreyPinmuxMioOutIor2) \
175  value(_, Ior3, kTopEarlgreyPinmuxMioOutIor3) \
176  value(_, Ior4, kTopEarlgreyPinmuxMioOutIor4) \
177  value(_, Ior5, kTopEarlgreyPinmuxMioOutIor5) \
178  value(_, Ior6, kTopEarlgreyPinmuxMioOutIor6) \
179  value(_, Ior7, kTopEarlgreyPinmuxMioOutIor7) \
180  value(_, Ior10, kTopEarlgreyPinmuxMioOutIor10) \
181  value(_, Ior11, kTopEarlgreyPinmuxMioOutIor11) \
182  value(_, Ior12, kTopEarlgreyPinmuxMioOutIor12) \
183  value(_, Ior13, kTopEarlgreyPinmuxMioOutIor13) \
184  value(_, End, kTopEarlgreyPinmuxMioOutLast + 1)
185 C_ONLY(UJSON_SERDE_ENUM(PinmuxMioOut, pinmux_mio_out_t, TOP_EARLGREY_PINMUX_MIO_OUT, WITH_UNKNOWN));
186 
187 #define TOP_EARLGREY_PINMUX_OUTSEL(_, value) \
188  value(_, ConstantZero, kTopEarlgreyPinmuxOutselConstantZero) \
189  value(_, ConstantOne, kTopEarlgreyPinmuxOutselConstantOne) \
190  value(_, ConstantHighZ, kTopEarlgreyPinmuxOutselConstantHighZ) \
191  value(_, GpioGpio0, kTopEarlgreyPinmuxOutselGpioGpio0) \
192  value(_, GpioGpio1, kTopEarlgreyPinmuxOutselGpioGpio1) \
193  value(_, GpioGpio2, kTopEarlgreyPinmuxOutselGpioGpio2) \
194  value(_, GpioGpio3, kTopEarlgreyPinmuxOutselGpioGpio3) \
195  value(_, GpioGpio4, kTopEarlgreyPinmuxOutselGpioGpio4) \
196  value(_, GpioGpio5, kTopEarlgreyPinmuxOutselGpioGpio5) \
197  value(_, GpioGpio6, kTopEarlgreyPinmuxOutselGpioGpio6) \
198  value(_, GpioGpio7, kTopEarlgreyPinmuxOutselGpioGpio7) \
199  value(_, GpioGpio8, kTopEarlgreyPinmuxOutselGpioGpio8) \
200  value(_, GpioGpio9, kTopEarlgreyPinmuxOutselGpioGpio9) \
201  value(_, GpioGpio10, kTopEarlgreyPinmuxOutselGpioGpio10) \
202  value(_, GpioGpio11, kTopEarlgreyPinmuxOutselGpioGpio11) \
203  value(_, GpioGpio12, kTopEarlgreyPinmuxOutselGpioGpio12) \
204  value(_, GpioGpio13, kTopEarlgreyPinmuxOutselGpioGpio13) \
205  value(_, GpioGpio14, kTopEarlgreyPinmuxOutselGpioGpio14) \
206  value(_, GpioGpio15, kTopEarlgreyPinmuxOutselGpioGpio15) \
207  value(_, GpioGpio16, kTopEarlgreyPinmuxOutselGpioGpio16) \
208  value(_, GpioGpio17, kTopEarlgreyPinmuxOutselGpioGpio17) \
209  value(_, GpioGpio18, kTopEarlgreyPinmuxOutselGpioGpio18) \
210  value(_, GpioGpio19, kTopEarlgreyPinmuxOutselGpioGpio19) \
211  value(_, GpioGpio20, kTopEarlgreyPinmuxOutselGpioGpio20) \
212  value(_, GpioGpio21, kTopEarlgreyPinmuxOutselGpioGpio21) \
213  value(_, GpioGpio22, kTopEarlgreyPinmuxOutselGpioGpio22) \
214  value(_, GpioGpio23, kTopEarlgreyPinmuxOutselGpioGpio23) \
215  value(_, GpioGpio24, kTopEarlgreyPinmuxOutselGpioGpio24) \
216  value(_, GpioGpio25, kTopEarlgreyPinmuxOutselGpioGpio25) \
217  value(_, GpioGpio26, kTopEarlgreyPinmuxOutselGpioGpio26) \
218  value(_, GpioGpio27, kTopEarlgreyPinmuxOutselGpioGpio27) \
219  value(_, GpioGpio28, kTopEarlgreyPinmuxOutselGpioGpio28) \
220  value(_, GpioGpio29, kTopEarlgreyPinmuxOutselGpioGpio29) \
221  value(_, GpioGpio30, kTopEarlgreyPinmuxOutselGpioGpio30) \
222  value(_, GpioGpio31, kTopEarlgreyPinmuxOutselGpioGpio31) \
223  value(_, I2c0Sda, kTopEarlgreyPinmuxOutselI2c0Sda) \
224  value(_, I2c0Scl, kTopEarlgreyPinmuxOutselI2c0Scl) \
225  value(_, I2c1Sda, kTopEarlgreyPinmuxOutselI2c1Sda) \
226  value(_, I2c1Scl, kTopEarlgreyPinmuxOutselI2c1Scl) \
227  value(_, I2c2Sda, kTopEarlgreyPinmuxOutselI2c2Sda) \
228  value(_, I2c2Scl, kTopEarlgreyPinmuxOutselI2c2Scl) \
229  value(_, SpiHost1Sd0, kTopEarlgreyPinmuxOutselSpiHost1Sd0) \
230  value(_, SpiHost1Sd1, kTopEarlgreyPinmuxOutselSpiHost1Sd1) \
231  value(_, SpiHost1Sd2, kTopEarlgreyPinmuxOutselSpiHost1Sd2) \
232  value(_, SpiHost1Sd3, kTopEarlgreyPinmuxOutselSpiHost1Sd3) \
233  value(_, Uart0Tx, kTopEarlgreyPinmuxOutselUart0Tx) \
234  value(_, Uart1Tx, kTopEarlgreyPinmuxOutselUart1Tx) \
235  value(_, Uart2Tx, kTopEarlgreyPinmuxOutselUart2Tx) \
236  value(_, Uart3Tx, kTopEarlgreyPinmuxOutselUart3Tx) \
237  value(_, PattgenPda0Tx, kTopEarlgreyPinmuxOutselPattgenPda0Tx) \
238  value(_, PattgenPcl0Tx, kTopEarlgreyPinmuxOutselPattgenPcl0Tx) \
239  value(_, PattgenPda1Tx, kTopEarlgreyPinmuxOutselPattgenPda1Tx) \
240  value(_, PattgenPcl1Tx, kTopEarlgreyPinmuxOutselPattgenPcl1Tx) \
241  value(_, SpiHost1Sck, kTopEarlgreyPinmuxOutselSpiHost1Sck) \
242  value(_, SpiHost1Csb, kTopEarlgreyPinmuxOutselSpiHost1Csb) \
243  value(_, FlashCtrlTdo, kTopEarlgreyPinmuxOutselFlashCtrlTdo) \
244  value(_, SensorCtrlAstDebugOut0, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut0) \
245  value(_, SensorCtrlAstDebugOut1, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut1) \
246  value(_, SensorCtrlAstDebugOut2, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut2) \
247  value(_, SensorCtrlAstDebugOut3, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut3) \
248  value(_, SensorCtrlAstDebugOut4, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut4) \
249  value(_, SensorCtrlAstDebugOut5, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut5) \
250  value(_, SensorCtrlAstDebugOut6, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut6) \
251  value(_, SensorCtrlAstDebugOut7, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut7) \
252  value(_, SensorCtrlAstDebugOut8, kTopEarlgreyPinmuxOutselSensorCtrlAonAstDebugOut8) \
253  value(_, PwmAonPwm0, kTopEarlgreyPinmuxOutselPwmAonPwm0) \
254  value(_, PwmAonPwm1, kTopEarlgreyPinmuxOutselPwmAonPwm1) \
255  value(_, PwmAonPwm2, kTopEarlgreyPinmuxOutselPwmAonPwm2) \
256  value(_, PwmAonPwm3, kTopEarlgreyPinmuxOutselPwmAonPwm3) \
257  value(_, PwmAonPwm4, kTopEarlgreyPinmuxOutselPwmAonPwm4) \
258  value(_, PwmAonPwm5, kTopEarlgreyPinmuxOutselPwmAonPwm5) \
259  value(_, OtpCtrlTest0, kTopEarlgreyPinmuxOutselOtpCtrlTest0) \
260  value(_, SysrstCtrlAonBatDisable, kTopEarlgreyPinmuxOutselSysrstCtrlAonBatDisable) \
261  value(_, SysrstCtrlAonKey0Out, kTopEarlgreyPinmuxOutselSysrstCtrlAonKey0Out) \
262  value(_, SysrstCtrlAonKey1Out, kTopEarlgreyPinmuxOutselSysrstCtrlAonKey1Out) \
263  value(_, SysrstCtrlAonKey2Out, kTopEarlgreyPinmuxOutselSysrstCtrlAonKey2Out) \
264  value(_, SysrstCtrlAonPwrbOut, kTopEarlgreyPinmuxOutselSysrstCtrlAonPwrbOut) \
265  value(_, SysrstCtrlAonZ3Wakeup, kTopEarlgreyPinmuxOutselSysrstCtrlAonZ3Wakeup) \
266  value(_, End, kTopEarlgreyPinmuxOutselLast + 1)
267 C_ONLY(UJSON_SERDE_ENUM(PinmuxOutsel, pinmux_outsel_t, TOP_EARLGREY_PINMUX_OUTSEL, WITH_UNKNOWN));
268 
269 #define TOP_EARLGREY_DIRECT_PADS(_, value) \
270  value(_, UsbdevUsbDp, kTopEarlgreyDirectPadsUsbdevUsbDp) \
271  value(_, UsbdevUsbDn, kTopEarlgreyDirectPadsUsbdevUsbDn) \
272  value(_, SpiHost0Sd0, kTopEarlgreyDirectPadsSpiHost0Sd0) \
273  value(_, SpiHost0Sd1, kTopEarlgreyDirectPadsSpiHost0Sd1) \
274  value(_, SpiHost0Sd2, kTopEarlgreyDirectPadsSpiHost0Sd2) \
275  value(_, SpiHost0Sd3, kTopEarlgreyDirectPadsSpiHost0Sd3) \
276  value(_, SpiDeviceSd0, kTopEarlgreyDirectPadsSpiDeviceSd0) \
277  value(_, SpiDeviceSd1, kTopEarlgreyDirectPadsSpiDeviceSd1) \
278  value(_, SpiDeviceSd2, kTopEarlgreyDirectPadsSpiDeviceSd2) \
279  value(_, SpiDeviceSd3, kTopEarlgreyDirectPadsSpiDeviceSd3) \
280  value(_, SysrstCtrlAonEcRstL, kTopEarlgreyDirectPadsSysrstCtrlAonEcRstL) \
281  value(_, SysrstCtrlAonFlashWpL, kTopEarlgreyDirectPadsSysrstCtrlAonFlashWpL) \
282  value(_, SpiDeviceSck, kTopEarlgreyDirectPadsSpiDeviceSck) \
283  value(_, SpiDeviceCsb, kTopEarlgreyDirectPadsSpiDeviceCsb) \
284  value(_, SpiHost0Sck, kTopEarlgreyDirectPadsSpiHost0Sck) \
285  value(_, SpiHost0Csb, kTopEarlgreyDirectPadsSpiHost0Csb) \
286  value(_, End, kTopEarlgreyDirectPadsLast + 1)
287 C_ONLY(UJSON_SERDE_ENUM(DirectPads, direct_pads_t, TOP_EARLGREY_DIRECT_PADS, WITH_UNKNOWN));
288 
289 #define TOP_EARLGREY_MUXED_PADS(_, value) \
290  value(_, Ioa0, kTopEarlgreyMuxedPadsIoa0) \
291  value(_, Ioa1, kTopEarlgreyMuxedPadsIoa1) \
292  value(_, Ioa2, kTopEarlgreyMuxedPadsIoa2) \
293  value(_, Ioa3, kTopEarlgreyMuxedPadsIoa3) \
294  value(_, Ioa4, kTopEarlgreyMuxedPadsIoa4) \
295  value(_, Ioa5, kTopEarlgreyMuxedPadsIoa5) \
296  value(_, Ioa6, kTopEarlgreyMuxedPadsIoa6) \
297  value(_, Ioa7, kTopEarlgreyMuxedPadsIoa7) \
298  value(_, Ioa8, kTopEarlgreyMuxedPadsIoa8) \
299  value(_, Iob0, kTopEarlgreyMuxedPadsIob0) \
300  value(_, Iob1, kTopEarlgreyMuxedPadsIob1) \
301  value(_, Iob2, kTopEarlgreyMuxedPadsIob2) \
302  value(_, Iob3, kTopEarlgreyMuxedPadsIob3) \
303  value(_, Iob4, kTopEarlgreyMuxedPadsIob4) \
304  value(_, Iob5, kTopEarlgreyMuxedPadsIob5) \
305  value(_, Iob6, kTopEarlgreyMuxedPadsIob6) \
306  value(_, Iob7, kTopEarlgreyMuxedPadsIob7) \
307  value(_, Iob8, kTopEarlgreyMuxedPadsIob8) \
308  value(_, Iob9, kTopEarlgreyMuxedPadsIob9) \
309  value(_, Iob10, kTopEarlgreyMuxedPadsIob10) \
310  value(_, Iob11, kTopEarlgreyMuxedPadsIob11) \
311  value(_, Iob12, kTopEarlgreyMuxedPadsIob12) \
312  value(_, Ioc0, kTopEarlgreyMuxedPadsIoc0) \
313  value(_, Ioc1, kTopEarlgreyMuxedPadsIoc1) \
314  value(_, Ioc2, kTopEarlgreyMuxedPadsIoc2) \
315  value(_, Ioc3, kTopEarlgreyMuxedPadsIoc3) \
316  value(_, Ioc4, kTopEarlgreyMuxedPadsIoc4) \
317  value(_, Ioc5, kTopEarlgreyMuxedPadsIoc5) \
318  value(_, Ioc6, kTopEarlgreyMuxedPadsIoc6) \
319  value(_, Ioc7, kTopEarlgreyMuxedPadsIoc7) \
320  value(_, Ioc8, kTopEarlgreyMuxedPadsIoc8) \
321  value(_, Ioc9, kTopEarlgreyMuxedPadsIoc9) \
322  value(_, Ioc10, kTopEarlgreyMuxedPadsIoc10) \
323  value(_, Ioc11, kTopEarlgreyMuxedPadsIoc11) \
324  value(_, Ioc12, kTopEarlgreyMuxedPadsIoc12) \
325  value(_, Ior0, kTopEarlgreyMuxedPadsIor0) \
326  value(_, Ior1, kTopEarlgreyMuxedPadsIor1) \
327  value(_, Ior2, kTopEarlgreyMuxedPadsIor2) \
328  value(_, Ior3, kTopEarlgreyMuxedPadsIor3) \
329  value(_, Ior4, kTopEarlgreyMuxedPadsIor4) \
330  value(_, Ior5, kTopEarlgreyMuxedPadsIor5) \
331  value(_, Ior6, kTopEarlgreyMuxedPadsIor6) \
332  value(_, Ior7, kTopEarlgreyMuxedPadsIor7) \
333  value(_, Ior10, kTopEarlgreyMuxedPadsIor10) \
334  value(_, Ior11, kTopEarlgreyMuxedPadsIor11) \
335  value(_, Ior12, kTopEarlgreyMuxedPadsIor12) \
336  value(_, Ior13, kTopEarlgreyMuxedPadsIor13) \
337  value(_, End, kTopEarlgreyMuxedPadsLast + 1)
338 C_ONLY(UJSON_SERDE_ENUM(MuxedPads, muxed_pads_t, TOP_EARLGREY_MUXED_PADS, WITH_UNKNOWN));
339 
340 // clang-format on
341 #ifdef __cplusplus
342 }
343 #endif
344 #endif // OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_PINMUX_H_