Line data Source code
1 0 : /* 2 : * Copyright (c) 2021 Nordic Semiconductor ASA 3 : * SPDX-License-Identifier: Apache-2.0 4 : */ 5 : 6 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_ 7 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_ 8 : 9 : /* 10 : * The whole nRF pin configuration information is encoded in a 32-bit bitfield 11 : * organized as follows: 12 : * 13 : * - 31..24: Pin function. 14 : * - 19-23: Reserved. 15 : * - 18: Associated peripheral belongs to GD FAST ACTIVE1 (nRF54H only) 16 : * - 17: Clockpin enable. 17 : * - 16: Pin inversion mode. 18 : * - 15: Pin low power mode. 19 : * - 14..11: Pin output drive configuration. 20 : * - 10..9: Pin pull configuration. 21 : * - 8..0: Pin number (combination of port and pin). 22 : */ 23 : 24 : /** 25 : * @name nRF pin configuration bit field positions and masks. 26 : * @{ 27 : */ 28 : 29 : /** Position of the function field. */ 30 1 : #define NRF_FUN_POS 24U 31 : /** Mask for the function field. */ 32 1 : #define NRF_FUN_MSK 0xFFU 33 : /** Position of the GPD FAST ACTIVE1 */ 34 1 : #define NRF_GPD_FAST_ACTIVE1_POS 18U 35 : /** Mask for the GPD FAST ACTIVE1 */ 36 1 : #define NRF_GPD_FAST_ACTIVE1_MSK 0x1U 37 : /** Position of the clockpin enable field. */ 38 1 : #define NRF_CLOCKPIN_ENABLE_POS 17U 39 : /** Mask for the clockpin enable field. */ 40 1 : #define NRF_CLOCKPIN_ENABLE_MSK 0x1U 41 : /** Position of the invert field. */ 42 1 : #define NRF_INVERT_POS 16U 43 : /** Mask for the invert field. */ 44 1 : #define NRF_INVERT_MSK 0x1U 45 : /** Position of the low power field. */ 46 1 : #define NRF_LP_POS 15U 47 : /** Mask for the low power field. */ 48 1 : #define NRF_LP_MSK 0x1U 49 : /** Position of the drive configuration field. */ 50 1 : #define NRF_DRIVE_POS 11U 51 : /** Mask for the drive configuration field. */ 52 1 : #define NRF_DRIVE_MSK 0xFU 53 : /** Position of the pull configuration field. */ 54 1 : #define NRF_PULL_POS 9U 55 : /** Mask for the pull configuration field. */ 56 1 : #define NRF_PULL_MSK 0x3U 57 : /** Position of the pin field. */ 58 1 : #define NRF_PIN_POS 0U 59 : /** Mask for the pin field. */ 60 1 : #define NRF_PIN_MSK 0x1FFU 61 : 62 : /** @} */ 63 : 64 : /** 65 : * @name nRF pinctrl pin functions. 66 : * @{ 67 : */ 68 : 69 : /** UART TX */ 70 1 : #define NRF_FUN_UART_TX 0U 71 : /** UART RX */ 72 1 : #define NRF_FUN_UART_RX 1U 73 : /** UART RTS */ 74 1 : #define NRF_FUN_UART_RTS 2U 75 : /** UART CTS */ 76 1 : #define NRF_FUN_UART_CTS 3U 77 : /** SPI master SCK */ 78 1 : #define NRF_FUN_SPIM_SCK 4U 79 : /** SPI master MOSI */ 80 1 : #define NRF_FUN_SPIM_MOSI 5U 81 : /** SPI master MISO */ 82 1 : #define NRF_FUN_SPIM_MISO 6U 83 : /** SPI slave SCK */ 84 1 : #define NRF_FUN_SPIS_SCK 7U 85 : /** SPI slave MOSI */ 86 1 : #define NRF_FUN_SPIS_MOSI 8U 87 : /** SPI slave MISO */ 88 1 : #define NRF_FUN_SPIS_MISO 9U 89 : /** SPI slave CSN */ 90 1 : #define NRF_FUN_SPIS_CSN 10U 91 : /** TWI master SCL */ 92 1 : #define NRF_FUN_TWIM_SCL 11U 93 : /** TWI master SDA */ 94 1 : #define NRF_FUN_TWIM_SDA 12U 95 : /** I2S SCK in master mode */ 96 1 : #define NRF_FUN_I2S_SCK_M 13U 97 : /** I2S SCK in slave mode */ 98 1 : #define NRF_FUN_I2S_SCK_S 14U 99 : /** I2S LRCK in master mode */ 100 1 : #define NRF_FUN_I2S_LRCK_M 15U 101 : /** I2S LRCK in slave mode */ 102 1 : #define NRF_FUN_I2S_LRCK_S 16U 103 : /** I2S SDIN */ 104 1 : #define NRF_FUN_I2S_SDIN 17U 105 : /** I2S SDOUT */ 106 1 : #define NRF_FUN_I2S_SDOUT 18U 107 : /** I2S MCK */ 108 1 : #define NRF_FUN_I2S_MCK 19U 109 : /** PDM CLK */ 110 1 : #define NRF_FUN_PDM_CLK 20U 111 : /** PDM DIN */ 112 1 : #define NRF_FUN_PDM_DIN 21U 113 : /** PWM OUT0 */ 114 1 : #define NRF_FUN_PWM_OUT0 22U 115 : /** PWM OUT1 */ 116 1 : #define NRF_FUN_PWM_OUT1 23U 117 : /** PWM OUT2 */ 118 1 : #define NRF_FUN_PWM_OUT2 24U 119 : /** PWM OUT3 */ 120 1 : #define NRF_FUN_PWM_OUT3 25U 121 : /** QDEC A */ 122 1 : #define NRF_FUN_QDEC_A 26U 123 : /** QDEC B */ 124 1 : #define NRF_FUN_QDEC_B 27U 125 : /** QDEC LED */ 126 1 : #define NRF_FUN_QDEC_LED 28U 127 : /** QSPI SCK */ 128 1 : #define NRF_FUN_QSPI_SCK 29U 129 : /** QSPI CSN */ 130 1 : #define NRF_FUN_QSPI_CSN 30U 131 : /** QSPI IO0 */ 132 1 : #define NRF_FUN_QSPI_IO0 31U 133 : /** QSPI IO1 */ 134 1 : #define NRF_FUN_QSPI_IO1 32U 135 : /** QSPI IO2 */ 136 1 : #define NRF_FUN_QSPI_IO2 33U 137 : /** QSPI IO3 */ 138 1 : #define NRF_FUN_QSPI_IO3 34U 139 : /** EXMIF CK */ 140 1 : #define NRF_FUN_EXMIF_CK 35U 141 : /** EXMIF DQ0 */ 142 1 : #define NRF_FUN_EXMIF_DQ0 36U 143 : /** EXMIF DQ1 */ 144 1 : #define NRF_FUN_EXMIF_DQ1 37U 145 : /** EXMIF DQ2 */ 146 1 : #define NRF_FUN_EXMIF_DQ2 38U 147 : /** EXMIF DQ3 */ 148 1 : #define NRF_FUN_EXMIF_DQ3 39U 149 : /** EXMIF DQ4 */ 150 1 : #define NRF_FUN_EXMIF_DQ4 40U 151 : /** EXMIF DQ5 */ 152 1 : #define NRF_FUN_EXMIF_DQ5 41U 153 : /** EXMIF DQ6 */ 154 1 : #define NRF_FUN_EXMIF_DQ6 42U 155 : /** EXMIF DQ7 */ 156 1 : #define NRF_FUN_EXMIF_DQ7 43U 157 : /** EXMIF CS0 */ 158 1 : #define NRF_FUN_EXMIF_CS0 44U 159 : /** EXMIF CS1 */ 160 1 : #define NRF_FUN_EXMIF_CS1 45U 161 : /** CAN TX */ 162 1 : #define NRF_FUN_CAN_TX 46U 163 : /** CAN RX */ 164 1 : #define NRF_FUN_CAN_RX 47U 165 : /** TWIS SCL */ 166 1 : #define NRF_FUN_TWIS_SCL 48U 167 : /** TWIS SDA */ 168 1 : #define NRF_FUN_TWIS_SDA 49U 169 : 170 : /** @} */ 171 : 172 : /** 173 : * @name nRF pinctrl output drive. 174 : * @{ 175 : */ 176 : 177 : /** Standard '0', standard '1'. */ 178 1 : #define NRF_DRIVE_S0S1 0U 179 : /** High drive '0', standard '1'. */ 180 1 : #define NRF_DRIVE_H0S1 1U 181 : /** Standard '0', high drive '1'. */ 182 1 : #define NRF_DRIVE_S0H1 2U 183 : /** High drive '0', high drive '1'. */ 184 1 : #define NRF_DRIVE_H0H1 3U 185 : /** Disconnect '0' standard '1'. */ 186 1 : #define NRF_DRIVE_D0S1 4U 187 : /** Disconnect '0', high drive '1'. */ 188 1 : #define NRF_DRIVE_D0H1 5U 189 : /** Standard '0', disconnect '1'. */ 190 1 : #define NRF_DRIVE_S0D1 6U 191 : /** High drive '0', disconnect '1'. */ 192 1 : #define NRF_DRIVE_H0D1 7U 193 : /** Extra high drive '0', extra high drive '1'. */ 194 1 : #define NRF_DRIVE_E0E1 8U 195 : 196 : /** @} */ 197 : 198 : /** 199 : * @name nRF pinctrl pull-up/down. 200 : * @note Values match nrf_gpio_pin_pull_t constants. 201 : * @{ 202 : */ 203 : 204 : /** Pull-up disabled. */ 205 1 : #define NRF_PULL_NONE 0U 206 : /** Pull-down enabled. */ 207 1 : #define NRF_PULL_DOWN 1U 208 : /** Pull-up enabled. */ 209 1 : #define NRF_PULL_UP 3U 210 : 211 : /** @} */ 212 : 213 : /** 214 : * @name nRF pinctrl low power mode. 215 : * @{ 216 : */ 217 : 218 : /** Input. */ 219 1 : #define NRF_LP_DISABLE 0U 220 : /** Output. */ 221 1 : #define NRF_LP_ENABLE 1U 222 : 223 : /** @} */ 224 : 225 : /** 226 : * @name nRF pinctrl helpers to indicate disconnected pins. 227 : * @{ 228 : */ 229 : 230 : /** Indicates that a pin is disconnected */ 231 1 : #define NRF_PIN_DISCONNECTED NRF_PIN_MSK 232 : 233 : /** @} */ 234 : 235 : /** 236 : * @brief Utility macro to build nRF psels property entry. 237 : * 238 : * @param fun Pin function configuration (see NRF_FUNC_{name} macros). 239 : * @param port Port (0 or 15). 240 : * @param pin Pin (0..31). 241 : */ 242 1 : #define NRF_PSEL(fun, port, pin) \ 243 : ((((((port) * 32U) + (pin)) & NRF_PIN_MSK) << NRF_PIN_POS) | \ 244 : ((NRF_FUN_ ## fun & NRF_FUN_MSK) << NRF_FUN_POS)) 245 : 246 : /** 247 : * @brief Utility macro to build nRF psels property entry when a pin is disconnected. 248 : * 249 : * This can be useful in situations where code running before Zephyr, e.g. a bootloader 250 : * configures pins that later needs to be disconnected. 251 : * 252 : * @param fun Pin function configuration (see NRF_FUN_{name} macros). 253 : */ 254 1 : #define NRF_PSEL_DISCONNECTED(fun) \ 255 : (NRF_PIN_DISCONNECTED | \ 256 : ((NRF_FUN_ ## fun & NRF_FUN_MSK) << NRF_FUN_POS)) 257 : 258 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_ */