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

            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_ */
        

Generated by: LCOV version 2.0-1