1 /*
2  * Copyright (c) 2022 SEAL AG
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NUMICRO_PINCTRL_H_
8 #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NUMICRO_PINCTRL_H_
9 
10 #define NUMICRO_MFP_SHIFT 0U
11 #define NUMICRO_MFP_MASK  0xFU
12 #define NUMICRO_PIN_SHIFT 4U
13 #define NUMICRO_PIN_MASK  0xFU
14 #define NUMICRO_PORT_SHIFT 8U
15 #define NUMICRO_PORT_MASK  0xFU
16 
17 /**
18  * @brief Pin configuration configuration bit field.
19  *
20  * Fields:
21  *
22  * - mfp [ 0 : 3 ]
23  * - pin [ 4 : 7 ]
24  * - port [ 8 : 11 ]
25  *
26  * @param port Port ('A'..'H')
27  * @param pin  Pin (0..15)
28  * @param mfp  Multi-function value (0..15)
29  */
30 #define NUMICRO_PINMUX(port, pin, mfp)					\
31 	(((((port) - 'A') & NUMICRO_PORT_MASK) << NUMICRO_PORT_SHIFT) |	\
32 	(((pin) & NUMICRO_PIN_MASK) << NUMICRO_PIN_SHIFT) |		\
33 	(((mfp) & NUMICRO_MFP_MASK) << NUMICRO_MFP_SHIFT))
34 
35 #define NUMICRO_PORT(pinmux) \
36 	(((pinmux) >> NUMICRO_PORT_SHIFT) & NUMICRO_PORT_MASK)
37 #define NUMICRO_PIN(pinmux) \
38 	(((pinmux) >> NUMICRO_PIN_SHIFT) & NUMICRO_PIN_MASK)
39 #define NUMICRO_MFP(pinmux) \
40 	(((pinmux) >> NUMICRO_MFP_SHIFT) & NUMICRO_MFP_MASK)
41 
42 #endif	/* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NUMICRO_PINCTRL_H_ */
43