1 /*
2  * Copyright (c) 2023 Antmicro
3  * Copyright (c) 2024 Silicon Laboratories, Inc.
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_SOC_SILABS_SIWG917_PINCTRL_SOC_H_
8 #define ZEPHYR_SOC_SILABS_SIWG917_PINCTRL_SOC_H_
9 
10 #include <zephyr/types.h>
11 #include <zephyr/dt-bindings/pinctrl/silabs/siwx91x-pinctrl.h>
12 
13 typedef struct pinctrl_soc_pin_t {
14 	uint8_t port;
15 	uint8_t pin;
16 	uint8_t ulppin;
17 	uint8_t mode;
18 	uint8_t ulpmode;
19 	uint8_t pad;
20 } pinctrl_soc_pin_t;
21 
22 #define Z_PINCTRL_STATE_PIN_INIT(node, prop, idx) {                                           \
23 	.port    = FIELD_GET(SIWX91X_PINCTRL_PORT_MASK,    DT_PROP_BY_IDX(node, prop, idx)),  \
24 	.pin     = FIELD_GET(SIWX91X_PINCTRL_PIN_MASK,     DT_PROP_BY_IDX(node, prop, idx)),  \
25 	.ulppin  = FIELD_GET(SIWX91X_PINCTRL_ULPPIN_MASK,  DT_PROP_BY_IDX(node, prop, idx)),  \
26 	.mode    = FIELD_GET(SIWX91X_PINCTRL_MODE_MASK,    DT_PROP_BY_IDX(node, prop, idx)),  \
27 	.ulpmode = FIELD_GET(SIWX91X_PINCTRL_ULPMODE_MASK, DT_PROP_BY_IDX(node, prop, idx)),  \
28 	.pad     = FIELD_GET(SIWX91X_PINCTRL_PAD_MASK,     DT_PROP_BY_IDX(node, prop, idx)),  \
29 },
30 
31 #define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) {                                            \
32 	DT_FOREACH_CHILD_VARGS(DT_PHANDLE(node_id, prop), DT_FOREACH_PROP_ELEM,               \
33 			       pinmux, Z_PINCTRL_STATE_PIN_INIT)                              \
34 }
35 
36 #endif
37