/* * Copyright (c) 2023 Nordic Semiconductor ASA * SPDX-License-Identifier: Apache-2.0 */ #define DT_DRV_COMPAT ti_cc32xx_pinctrl #include #include #include #include #define MEM_GPIO_PAD_CONFIG_MSK 0xFFFU /* pin to pad mapping (255 indicates invalid pin) */ static const uint8_t pin2pad[] = { 10U, 11U, 12U, 13U, 14U, 15U, 16U, 17U, 255U, 255U, 18U, 19U, 20U, 21U, 22U, 23U, 24U, 40U, 28U, 29U, 25U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 26U, 27U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 31U, 255U, 255U, 255U, 255U, 0U, 255U, 32U, 30U, 255U, 1U, 255U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, }; static int pinctrl_configure_pin(pinctrl_soc_pin_t pincfg) { uint8_t pin; pin = (pincfg >> TI_CC32XX_PIN_POS) & TI_CC32XX_PIN_MSK; if ((pin >= ARRAY_SIZE(pin2pad)) || (pin2pad[pin] == 255U)) { return -EINVAL; } sys_write32(pincfg & MEM_GPIO_PAD_CONFIG_MSK, DT_INST_REG_ADDR(0) + (pin2pad[pin] << 2U)); return 0; } int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintptr_t reg) { ARG_UNUSED(reg); for (uint8_t i = 0U; i < pin_cnt; i++) { int ret; ret = pinctrl_configure_pin(pins[i]); if (ret < 0) { return ret; } } return 0; }