LCOV - code coverage report
Current view: top level - zephyr/dt-bindings/pinctrl - gecko-pinctrl.h Hit Total Coverage
Test: new.info Lines: 15 24 62.5 %
Date: 2024-12-22 00:14:23

          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 1.14