LCOV - code coverage report
Current view: top level - zephyr/dt-bindings/pinctrl - nrf-pinctrl.h Coverage Total Hit
Test: new.info Lines: 98.9 % 94 93
Test Date: 2025-09-05 16:43:28

            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              : /** EXMIF RWDS */
     170            1 : #define NRF_FUN_EXMIF_RWDS 50U
     171              : /** GRTC fast clock output */
     172            1 : #define NRF_FUN_GRTC_CLKOUT_FAST 55U
     173              : /** GRTC slow clock output */
     174            1 : #define NRF_FUN_GRTC_CLKOUT_32K  56U
     175              : /** TDM SCK in master mode */
     176            1 : #define NRF_FUN_TDM_SCK_M        71U
     177              : /** TDM SCK in slave mode */
     178            1 : #define NRF_FUN_TDM_SCK_S        72U
     179              : /** TDM LRCK in master mode */
     180            1 : #define NRF_FUN_TDM_FSYNC_M      73U
     181              : /** TDM LRCK in slave mode */
     182            1 : #define NRF_FUN_TDM_FSYNC_S      74U
     183              : /** TDM SDIN */
     184            1 : #define NRF_FUN_TDM_SDIN         75U
     185              : /** TDM SDOUT */
     186            1 : #define NRF_FUN_TDM_SDOUT        76U
     187              : /** TDM MCK */
     188            1 : #define NRF_FUN_TDM_MCK          77U
     189              : 
     190              : /** @} */
     191              : 
     192              : /**
     193              :  * @name nRF pinctrl output drive.
     194              :  * @{
     195              :  */
     196              : 
     197              : /** Standard '0', standard '1'. */
     198            1 : #define NRF_DRIVE_S0S1 0U
     199              : /** High drive '0', standard '1'. */
     200            1 : #define NRF_DRIVE_H0S1 1U
     201              : /** Standard '0', high drive '1'. */
     202            1 : #define NRF_DRIVE_S0H1 2U
     203              : /** High drive '0', high drive '1'. */
     204            1 : #define NRF_DRIVE_H0H1 3U
     205              : /** Disconnect '0' standard '1'. */
     206            1 : #define NRF_DRIVE_D0S1 4U
     207              : /** Disconnect '0', high drive '1'. */
     208            1 : #define NRF_DRIVE_D0H1 5U
     209              : /** Standard '0', disconnect '1'. */
     210            1 : #define NRF_DRIVE_S0D1 6U
     211              : /** High drive '0', disconnect '1'. */
     212            1 : #define NRF_DRIVE_H0D1 7U
     213              : /** Extra high drive '0', extra high drive '1'. */
     214            1 : #define NRF_DRIVE_E0E1 8U
     215              : 
     216              : /** @} */
     217              : 
     218              : /**
     219              :  * @name nRF pinctrl pull-up/down.
     220              :  * @note Values match nrf_gpio_pin_pull_t constants.
     221              :  * @{
     222              :  */
     223              : 
     224              : /** Pull-up disabled. */
     225            1 : #define NRF_PULL_NONE 0U
     226              : /** Pull-down enabled. */
     227            1 : #define NRF_PULL_DOWN 1U
     228              : /** Pull-up enabled. */
     229            1 : #define NRF_PULL_UP 3U
     230              : 
     231              : /** @} */
     232              : 
     233              : /**
     234              :  * @name nRF pinctrl low power mode.
     235              :  * @{
     236              :  */
     237              : 
     238              : /** Input. */
     239            1 : #define NRF_LP_DISABLE 0U
     240              : /** Output. */
     241            1 : #define NRF_LP_ENABLE 1U
     242              : 
     243              : /** @} */
     244              : 
     245              : /**
     246              :  * @name nRF pinctrl helpers to indicate disconnected pins.
     247              :  * @{
     248              :  */
     249              : 
     250              : /** Indicates that a pin is disconnected */
     251            1 : #define NRF_PIN_DISCONNECTED NRF_PIN_MSK
     252              : 
     253              : /** @} */
     254              : 
     255              : /**
     256              :  * @brief Utility macro to build nRF psels property entry.
     257              :  *
     258              :  * @param fun Pin function configuration (see NRF_FUNC_{name} macros).
     259              :  * @param port Port (0 or 15).
     260              :  * @param pin Pin (0..31).
     261              :  */
     262            1 : #define NRF_PSEL(fun, port, pin)                                                       \
     263              :         ((((((port) * 32U) + (pin)) & NRF_PIN_MSK) << NRF_PIN_POS) |                 \
     264              :          ((NRF_FUN_ ## fun & NRF_FUN_MSK) << NRF_FUN_POS))
     265              : 
     266              : /**
     267              :  * @brief Utility macro to build nRF psels property entry when a pin is disconnected.
     268              :  *
     269              :  * This can be useful in situations where code running before Zephyr, e.g. a bootloader
     270              :  * configures pins that later needs to be disconnected.
     271              :  *
     272              :  * @param fun Pin function configuration (see NRF_FUN_{name} macros).
     273              :  */
     274            1 : #define NRF_PSEL_DISCONNECTED(fun)                                                     \
     275              :         (NRF_PIN_DISCONNECTED |                                                        \
     276              :          ((NRF_FUN_ ## fun & NRF_FUN_MSK) << NRF_FUN_POS))
     277              : 
     278              : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_ */
        

Generated by: LCOV version 2.0-1