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