LCOV - code coverage report
Current view: top level - zephyr/dt-bindings/pinctrl - nxp-s32-pinctrl.h Hit Total Coverage
Test: new.info Lines: 1 26 3.8 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright 2022, 2024 NXP
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NXP_S32_PINCTRL_H_
       8             : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NXP_S32_PINCTRL_H_
       9             : 
      10             : #include <zephyr/dt-bindings/dt-util.h>
      11             : 
      12             : /*
      13             :  * The NXP S32 pinmux configuration is encoded in a 32-bit field value as follows:
      14             :  *
      15             :  * - 0..2:   Output mux Source Signal Selection (MSCR.SSS)
      16             :  * - 3..6:   Input mux Source Signal Selection (IMCR.SSS)
      17             :  * - 7..15:  Input Multiplexed Signal Configuration Register (IMCR) index
      18             :  * - 16..24: Multiplexed Signal Configuration Register (MSCR) index
      19             :  * - 25..27: MSCR SIUL2 instance index (0..7)
      20             :  * - 28..30: IMCR SIUL2 instance index (0..7)
      21             :  * - 31:     Reserved for future use
      22             :  */
      23           0 : #define NXP_S32_MSCR_SSS_SHIFT       0U
      24           0 : #define NXP_S32_MSCR_SSS_MASK        BIT_MASK(3)
      25           0 : #define NXP_S32_IMCR_SSS_SHIFT       3U
      26           0 : #define NXP_S32_IMCR_SSS_MASK        BIT_MASK(4)
      27           0 : #define NXP_S32_IMCR_IDX_SHIFT       7U
      28           0 : #define NXP_S32_IMCR_IDX_MASK        BIT_MASK(9)
      29           0 : #define NXP_S32_MSCR_IDX_SHIFT       16U
      30           0 : #define NXP_S32_MSCR_IDX_MASK        BIT_MASK(9)
      31           0 : #define NXP_S32_MSCR_SIUL2_IDX_SHIFT 25U
      32           0 : #define NXP_S32_MSCR_SIUL2_IDX_MASK  BIT_MASK(3)
      33           0 : #define NXP_S32_IMCR_SIUL2_IDX_SHIFT 28U
      34           0 : #define NXP_S32_IMCR_SIUL2_IDX_MASK  BIT_MASK(3)
      35             : 
      36           0 : #define NXP_S32_PINMUX_MSCR_SSS(cfg)    \
      37             :         (((cfg) & NXP_S32_MSCR_SSS_MASK) << NXP_S32_MSCR_SSS_SHIFT)
      38             : 
      39           0 : #define NXP_S32_PINMUX_IMCR_SSS(cfg)    \
      40             :         (((cfg) & NXP_S32_IMCR_SSS_MASK) << NXP_S32_IMCR_SSS_SHIFT)
      41             : 
      42           0 : #define NXP_S32_PINMUX_IMCR_IDX(cfg)    \
      43             :         (((cfg) & NXP_S32_IMCR_IDX_MASK) << NXP_S32_IMCR_IDX_SHIFT)
      44             : 
      45           0 : #define NXP_S32_PINMUX_MSCR_IDX(cfg)    \
      46             :         (((cfg) & NXP_S32_MSCR_IDX_MASK) << NXP_S32_MSCR_IDX_SHIFT)
      47             : 
      48           0 : #define NXP_S32_PINMUX_MSCR_SIUL2_IDX(cfg)      \
      49             :         (((cfg) & NXP_S32_MSCR_SIUL2_IDX_MASK) << NXP_S32_MSCR_SIUL2_IDX_SHIFT)
      50             : 
      51           0 : #define NXP_S32_PINMUX_IMCR_SIUL2_IDX(cfg)      \
      52             :         (((cfg) & NXP_S32_IMCR_SIUL2_IDX_MASK) << NXP_S32_IMCR_SIUL2_IDX_SHIFT)
      53             : 
      54           0 : #define NXP_S32_PINMUX_GET_MSCR_SSS(cfg)        \
      55             :         (((cfg) >> NXP_S32_MSCR_SSS_SHIFT) & NXP_S32_MSCR_SSS_MASK)
      56             : 
      57           0 : #define NXP_S32_PINMUX_GET_IMCR_SSS(cfg)        \
      58             :         (((cfg) >> NXP_S32_IMCR_SSS_SHIFT) & NXP_S32_IMCR_SSS_MASK)
      59             : 
      60           0 : #define NXP_S32_PINMUX_GET_IMCR_IDX(cfg)        \
      61             :         (((cfg) >> NXP_S32_IMCR_IDX_SHIFT) & NXP_S32_IMCR_IDX_MASK)
      62             : 
      63           0 : #define NXP_S32_PINMUX_GET_MSCR_IDX(cfg)        \
      64             :         (((cfg) >> NXP_S32_MSCR_IDX_SHIFT) & NXP_S32_MSCR_IDX_MASK)
      65             : 
      66           0 : #define NXP_S32_PINMUX_GET_MSCR_SIUL2_IDX(cfg)  \
      67             :         (((cfg) >> NXP_S32_MSCR_SIUL2_IDX_SHIFT) & NXP_S32_MSCR_SIUL2_IDX_MASK)
      68             : 
      69           0 : #define NXP_S32_PINMUX_GET_IMCR_SIUL2_IDX(cfg)  \
      70             :         (((cfg) >> NXP_S32_IMCR_SIUL2_IDX_SHIFT) & NXP_S32_IMCR_SIUL2_IDX_MASK)
      71             : 
      72             : /**
      73             :  * @brief Utility macro to build NXP S32 pinmux property for pinctrl nodes.
      74             :  *
      75             :  * @param mscr_siul2_idx MSCR SIUL2 instance index
      76             :  * @param imcr_siul2_idx IMCR SIUL2 instance index
      77             :  * @param mscr_idx Multiplexed Signal Configuration Register (MSCR) index
      78             :  * @param mscr_sss Output mux Source Signal Selection (MSCR.SSS)
      79             :  * @param imcr_idx Input Multiplexed Signal Configuration Register (IMCR) index
      80             :  * @param imcr_sss Input mux Source Signal Selection (IMCR.SSS)
      81             :  */
      82           1 : #define NXP_S32_PINMUX(mscr_siul2_idx, imcr_siul2_idx, mscr_idx, mscr_sss, imcr_idx, imcr_sss)     \
      83             :         (NXP_S32_PINMUX_MSCR_SIUL2_IDX(mscr_siul2_idx) |                                           \
      84             :          NXP_S32_PINMUX_IMCR_SIUL2_IDX(imcr_siul2_idx) |                                           \
      85             :          NXP_S32_PINMUX_MSCR_IDX(mscr_idx) |                                                       \
      86             :          NXP_S32_PINMUX_MSCR_SSS(mscr_sss) |                                                       \
      87             :          NXP_S32_PINMUX_IMCR_IDX(imcr_idx) |                                                       \
      88             :          NXP_S32_PINMUX_IMCR_SSS(imcr_sss))
      89             : 
      90             : #endif  /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NXP_NXP_S32_PINCTRL_H_ */

Generated by: LCOV version 1.14