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