Line data Source code
1 0 : /* 2 : * Copyright (c) 2022 Silicon Labs 3 : * SPDX-License-Identifier: Apache-2.0 4 : */ 5 : 6 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ 7 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ 8 : 9 : /* 10 : * The whole GECKO_pin configuration information is encoded in a 32-bit bitfield 11 : * organized as follows: 12 : * 13 : * - 31..24: Pin function. 14 : * - 23..16: Reserved. 15 : * - 15..8: Port for UART_RX/UART_TX functions. 16 : * - 7..0: Pin number for UART_RX/UART_TX functions. 17 : * - 15..8: Reserved for UART_LOC function. 18 : * - 7..0: Loc for UART_LOC function. 19 : */ 20 : 21 : /** 22 : * @name GECKO_pin configuration bit field positions and masks. 23 : * @{ 24 : */ 25 : 26 : /** Position of the function field. */ 27 1 : #define GECKO_FUN_POS 24U 28 : /** Mask for the function field. */ 29 1 : #define GECKO_FUN_MSK 0xFFU 30 : 31 : /** Position of the pin field. */ 32 1 : #define GECKO_PIN_POS 0U 33 : /** Mask for the pin field. */ 34 1 : #define GECKO_PIN_MSK 0xFFU 35 : 36 : /** Position of the port field. */ 37 1 : #define GECKO_PORT_POS 8U 38 : /** Mask for the port field. */ 39 1 : #define GECKO_PORT_MSK 0xFFU 40 : 41 : /** Position of the loc field. */ 42 1 : #define GECKO_LOC_POS 0U 43 : /** Mask for the pin field. */ 44 1 : #define GECKO_LOC_MSK 0xFFU 45 : 46 : /** @} */ 47 : 48 : /** 49 : * @name GECKO_pinctrl pin functions. 50 : * @{ 51 : */ 52 : 53 : /** UART TX */ 54 1 : #define GECKO_FUN_UART_TX 0U 55 : /** UART RX */ 56 1 : #define GECKO_FUN_UART_RX 1U 57 : /** UART RTS */ 58 1 : #define GECKO_FUN_UART_RTS 2U 59 : /** UART CTS */ 60 1 : #define GECKO_FUN_UART_CTS 3U 61 : /** UART LOCATION */ 62 1 : #define GECKO_FUN_UART_LOC 4U 63 : 64 0 : #define GECKO_FUN_SPI_MISO 5U 65 0 : #define GECKO_FUN_SPI_MOSI 6U 66 0 : #define GECKO_FUN_SPI_CSN 7U 67 0 : #define GECKO_FUN_SPI_SCK 8U 68 : 69 0 : #define GECKO_FUN_I2C_SDA 9U 70 0 : #define GECKO_FUN_I2C_SCL 10U 71 0 : #define GECKO_FUN_I2C_SDA_LOC 11U 72 0 : #define GECKO_FUN_I2C_SCL_LOC 12U 73 : 74 : /** @} */ 75 : 76 : /** 77 : * @brief Utility macro to build GECKO psels property entry. 78 : * 79 : * @param fun Pin function configuration (see GECKO_FUNC_{name} macros). 80 : * @param port Port (0 or 1). 81 : * @param pin Pin (0..31). 82 : */ 83 1 : #define GECKO_PSEL(fun, port, pin) \ 84 : (((GECKO_PORT_##port & GECKO_PORT_MSK) << GECKO_PORT_POS) | \ 85 : ((GECKO_PIN(##pin##) & GECKO_PIN_MSK) << GECKO_PIN_POS) | \ 86 : ((GECKO_FUN_##fun & GECKO_FUN_MSK) << GECKO_FUN_POS)) 87 : 88 : /** 89 : * @brief Utility macro to build GECKO_psels property entry. 90 : * 91 : * @param fun Pin function configuration (see GECKO_FUNC_{name} macros). 92 : * @param loc Location. 93 : */ 94 1 : #define GECKO_LOC(fun, loc) \ 95 : (((GECKO_LOCATION(##loc##) & GECKO_LOC_MSK) << GECKO_LOC_POS) | \ 96 : ((GECKO_FUN_##fun##_LOC & GECKO_FUN_MSK) << GECKO_FUN_POS)) 97 : 98 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ */