1 /*
2  * Copyright (c) 2022, Renesas Electronics Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SMARTBOND_PINCTRL_H_
8 #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SMARTBOND_PINCTRL_H_
9 
10 /** Definitions of pin functions */
11 #define SMARTBOND_FUNC_GPIO		0
12 #define SMARTBOND_FUNC_UART_RX		1
13 #define SMARTBOND_FUNC_UART_TX		2
14 #define SMARTBOND_FUNC_UART2_RX		3
15 #define SMARTBOND_FUNC_UART2_TX		4
16 #define SMARTBOND_FUNC_UART2_CTSN	5
17 #define SMARTBOND_FUNC_UART2_RTSN	6
18 #define SMARTBOND_FUNC_UART3_RX		7
19 #define SMARTBOND_FUNC_UART3_TX		8
20 #define SMARTBOND_FUNC_UART3_CTSN	9
21 #define SMARTBOND_FUNC_UART3_RTSN	10
22 #define SMARTBOND_FUNC_ISO_CLK		11
23 #define SMARTBOND_FUNC_ISO_DATA		12
24 #define SMARTBOND_FUNC_SPI_DI		13
25 #define SMARTBOND_FUNC_SPI_DO		14
26 #define SMARTBOND_FUNC_SPI_CLK		15
27 #define SMARTBOND_FUNC_SPI_EN		16
28 #define SMARTBOND_FUNC_SPI2_DI		17
29 #define SMARTBOND_FUNC_SPI2_DO		18
30 #define SMARTBOND_FUNC_SPI2_CLK		19
31 #define SMARTBOND_FUNC_SPI2_EN		20
32 #define SMARTBOND_FUNC_I2C_SCL		21
33 #define SMARTBOND_FUNC_I2C_SDA		22
34 #define SMARTBOND_FUNC_I2C2_SCL		23
35 #define SMARTBOND_FUNC_I2C2_SDA		24
36 #define SMARTBOND_FUNC_USB_SOF		25
37 #define SMARTBOND_FUNC_ADC		26
38 #define SMARTBOND_FUNC_USB		27
39 #define SMARTBOND_FUNC_PCM_DI		28
40 #define SMARTBOND_FUNC_PCM_DO		29
41 #define SMARTBOND_FUNC_PCM_FSC		30
42 #define SMARTBOND_FUNC_PCM_CLK		31
43 #define SMARTBOND_FUNC_PDM_DATA		32
44 #define SMARTBOND_FUNC_PDM_CLK		33
45 #define SMARTBOND_FUNC_COEX_EXT_ACT	34
46 #define SMARTBOND_FUNC_COEX_SMART_ACT	35
47 #define SMARTBOND_FUNC_COEX_SMART_PRI	36
48 #define SMARTBOND_FUNC_PORT0_DCF	37
49 #define SMARTBOND_FUNC_PORT1_DCF	38
50 #define SMARTBOND_FUNC_PORT2_DCF	39
51 #define SMARTBOND_FUNC_PORT3_DCF	40
52 #define SMARTBOND_FUNC_PORT4_DCF	41
53 #define SMARTBOND_FUNC_CLOCK		42
54 #define SMARTBOND_FUNC_PG		43
55 #define SMARTBOND_FUNC_LCD		44
56 #define SMARTBOND_FUNC_LCD_SPI_DC	45
57 #define SMARTBOND_FUNC_LCD_SPI_DO	46
58 #define SMARTBOND_FUNC_LCD_SPI_CLK	47
59 #define SMARTBOND_FUNC_LCD_SPI_EN	48
60 #define SMARTBOND_FUNC_TIM_PWM		49
61 #define SMARTBOND_FUNC_TIM2_PWM		50
62 #define SMARTBOND_FUNC_TIM_1SHOT	51
63 #define SMARTBOND_FUNC_TIM2_1SHOT	52
64 #define SMARTBOND_FUNC_TIM3_PWM		53
65 #define SMARTBOND_FUNC_TIM4_PWM		54
66 
67 /** Definitions of bit positions and bit masks in pinmux */
68 #define SMARTBOND_PINMUX_PIN_POS	0
69 #define SMARTBOND_PINMUX_PIN_MASK	0x1f
70 #define SMARTBOND_PINMUX_PORT_POS	5
71 #define SMARTBOND_PINMUX_PORT_MASK	0x01
72 #define SMARTBOND_PINMUX_FUNC_POS	6
73 #define SMARTBOND_PINMUX_FUNC_MASK	0xff
74 
75 /** Utility macro to create pinmux */
76 #define SMARTBOND_PINMUX(func, port, pin)				\
77 	(((SMARTBOND_FUNC_ ## func) << SMARTBOND_PINMUX_FUNC_POS) |	\
78 	 ((port) << SMARTBOND_PINMUX_PORT_POS) |			\
79 	 (pin) << SMARTBOND_PINMUX_PIN_POS)
80 
81 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SMARTBOND_PINCTRL_H_ */
82