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

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2023-2024 Analog Devices, Inc.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_
       8             : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_
       9             : 
      10             : /**
      11             :  * @brief Pin modes
      12             :  */
      13           1 : #define MAX32_MODE_GPIO 0x00
      14           0 : #define MAX32_MODE_AF1  0x01
      15           0 : #define MAX32_MODE_AF2  0x02
      16           0 : #define MAX32_MODE_AF3  0x03
      17           0 : #define MAX32_MODE_AF4  0x04
      18           0 : #define MAX32_MODE_AF5  0x05
      19             : 
      20             : /**
      21             :  * @brief Mode, port, pin shift number
      22             :  */
      23           1 : #define MAX32_MODE_SHIFT 0U
      24           0 : #define MAX32_MODE_MASK  0x0FU
      25           0 : #define MAX32_PORT_SHIFT 4U
      26           0 : #define MAX32_PORT_MASK  0x0FU
      27           0 : #define MAX32_PIN_SHIFT  8U
      28           0 : #define MAX32_PIN_MASK   0xFFU
      29             : 
      30             : /**
      31             :  * @brief Pin configuration bit field.
      32             :  *
      33             :  * Fields:
      34             :  *
      35             :  * - mode [ 0 : 3 ]
      36             :  * - port [ 4 : 7 ]
      37             :  * - pin [ 8 : 15 ]
      38             :  *
      39             :  * @param port Port (0 .. 15)
      40             :  * @param pin Pin (0..31)
      41             :  * @param mode Mode (GPIO, AF1, AF2...).
      42             :  */
      43           1 : #define MAX32_PINMUX(port, pin, mode)                                                              \
      44             :         ((((port)&MAX32_PORT_MASK) << MAX32_PORT_SHIFT) |                                          \
      45             :          (((pin)&MAX32_PIN_MASK) << MAX32_PIN_SHIFT) |                                             \
      46             :          (((MAX32_MODE_##mode) & MAX32_MODE_MASK) << MAX32_MODE_SHIFT))
      47             : 
      48           0 : #define MAX32_PINMUX_PORT(pinmux) (((pinmux) >> MAX32_PORT_SHIFT) & MAX32_PORT_MASK)
      49           0 : #define MAX32_PINMUX_PIN(pinmux)  (((pinmux) >> MAX32_PIN_SHIFT) & MAX32_PIN_MASK)
      50           0 : #define MAX32_PINMUX_MODE(pinmux) (((pinmux) >> MAX32_MODE_SHIFT) & MAX32_MODE_MASK)
      51             : 
      52             : /* Selects the voltage rail used for the pin */
      53           0 : #define MAX32_VSEL_VDDIO  0
      54           0 : #define MAX32_VSEL_VDDIOH 1
      55             : 
      56             : /**
      57             :  * @brief Pin configuration
      58             :  */
      59           1 : #define MAX32_INPUT_ENABLE_SHIFT   0x00
      60           0 : #define MAX32_BIAS_PULL_UP_SHIFT   0x01
      61           0 : #define MAX32_BIAS_PULL_DOWN_SHIFT 0x02
      62           0 : #define MAX32_OUTPUT_ENABLE_SHIFT  0x03
      63           0 : #define MAX32_POWER_SOURCE_SHIFT   0x04
      64           0 : #define MAX32_OUTPUT_HIGH_SHIFT    0x05
      65           0 : #define MAX32_DRV_STRENGTH_SHIFT   0x06 /* 2 bits */
      66           0 : #define MAX32_DRV_STRENGTH_MASK    0x03
      67             : 
      68             : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_ */

Generated by: LCOV version 1.14