xref: /linux/drivers/pinctrl/airoha/pinctrl-an7581.c (revision cf9610f9116d55c5a66ef9f1faecacabd93a9322)
1900b49e6SMikhail Kshevetskiy // SPDX-License-Identifier: GPL-2.0-only
2900b49e6SMikhail Kshevetskiy /*
3900b49e6SMikhail Kshevetskiy  * Author: Lorenzo Bianconi <lorenzo@kernel.org>
4900b49e6SMikhail Kshevetskiy  * Author: Benjamin Larsson <benjamin.larsson@genexis.eu>
5900b49e6SMikhail Kshevetskiy  * Author: Markus Gothe <markus.gothe@genexis.eu>
6900b49e6SMikhail Kshevetskiy  */
7900b49e6SMikhail Kshevetskiy 
8900b49e6SMikhail Kshevetskiy #include "airoha-common.h"
9900b49e6SMikhail Kshevetskiy 
10900b49e6SMikhail Kshevetskiy /* MUX */
11900b49e6SMikhail Kshevetskiy #define REG_GPIO_2ND_I2C_MODE			0x0214
12900b49e6SMikhail Kshevetskiy #define GPIO_MDC_IO_MASTER_MODE_MASK		BIT(14)
13900b49e6SMikhail Kshevetskiy #define GPIO_I2C_MASTER_MODE_MODE		BIT(13)
14900b49e6SMikhail Kshevetskiy #define GPIO_I2S_MODE_MASK			BIT(12)
15900b49e6SMikhail Kshevetskiy #define GPIO_I2C_SLAVE_MODE_MODE		BIT(11)
16900b49e6SMikhail Kshevetskiy #define GPIO_LAN3_LED1_MODE_MASK		BIT(10)
17900b49e6SMikhail Kshevetskiy #define GPIO_LAN3_LED0_MODE_MASK		BIT(9)
18900b49e6SMikhail Kshevetskiy #define GPIO_LAN2_LED1_MODE_MASK		BIT(8)
19900b49e6SMikhail Kshevetskiy #define GPIO_LAN2_LED0_MODE_MASK		BIT(7)
20900b49e6SMikhail Kshevetskiy #define GPIO_LAN1_LED1_MODE_MASK		BIT(6)
21900b49e6SMikhail Kshevetskiy #define GPIO_LAN1_LED0_MODE_MASK		BIT(5)
22900b49e6SMikhail Kshevetskiy #define GPIO_LAN0_LED1_MODE_MASK		BIT(4)
23900b49e6SMikhail Kshevetskiy #define GPIO_LAN0_LED0_MODE_MASK		BIT(3)
24900b49e6SMikhail Kshevetskiy #define PON_TOD_1PPS_MODE_MASK			BIT(2)
25900b49e6SMikhail Kshevetskiy #define GSW_TOD_1PPS_MODE_MASK			BIT(1)
26900b49e6SMikhail Kshevetskiy #define GPIO_2ND_I2C_MODE_MASK			BIT(0)
27900b49e6SMikhail Kshevetskiy 
28900b49e6SMikhail Kshevetskiy #define REG_GPIO_SPI_CS1_MODE			0x0218
29900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS4_MODE_MASK		BIT(21)
30900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS3_MODE_MASK		BIT(20)
31900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_P156_MASK		BIT(19)
32900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_P128_MASK		BIT(18)
33900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS1_MODE_MASK		BIT(17)
34900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_MODE_MASK			BIT(16)
35900b49e6SMikhail Kshevetskiy #define GPIO_PCM2_MODE_MASK			BIT(13)
36900b49e6SMikhail Kshevetskiy #define GPIO_PCM1_MODE_MASK			BIT(12)
37900b49e6SMikhail Kshevetskiy #define GPIO_PCM_INT_MODE_MASK			BIT(9)
38900b49e6SMikhail Kshevetskiy #define GPIO_PCM_RESET_MODE_MASK		BIT(8)
39900b49e6SMikhail Kshevetskiy #define GPIO_SPI_QUAD_MODE_MASK			BIT(4)
40900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS4_MODE_MASK			BIT(3)
41900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS3_MODE_MASK			BIT(2)
42900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS2_MODE_MASK			BIT(1)
43900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS1_MODE_MASK			BIT(0)
44900b49e6SMikhail Kshevetskiy 
45900b49e6SMikhail Kshevetskiy #define REG_GPIO_PON_MODE			0x021c
46900b49e6SMikhail Kshevetskiy #define GPIO_PARALLEL_NAND_MODE_MASK		BIT(14)
47900b49e6SMikhail Kshevetskiy #define GPIO_SGMII_MDIO_MODE_MASK		BIT(13)
48900b49e6SMikhail Kshevetskiy #define GPIO_PCIE_RESET2_MASK			BIT(12)
49900b49e6SMikhail Kshevetskiy #define SIPO_RCLK_MODE_MASK			BIT(11)
50900b49e6SMikhail Kshevetskiy #define GPIO_PCIE_RESET1_MASK			BIT(10)
51900b49e6SMikhail Kshevetskiy #define GPIO_PCIE_RESET0_MASK			BIT(9)
52900b49e6SMikhail Kshevetskiy #define GPIO_UART5_MODE_MASK			BIT(8)
53900b49e6SMikhail Kshevetskiy #define GPIO_UART4_MODE_MASK			BIT(7)
54900b49e6SMikhail Kshevetskiy #define GPIO_HSUART_CTS_RTS_MODE_MASK		BIT(6)
55900b49e6SMikhail Kshevetskiy #define GPIO_HSUART_MODE_MASK			BIT(5)
56900b49e6SMikhail Kshevetskiy #define GPIO_UART2_CTS_RTS_MODE_MASK		BIT(4)
57900b49e6SMikhail Kshevetskiy #define GPIO_UART2_MODE_MASK			BIT(3)
58900b49e6SMikhail Kshevetskiy #define GPIO_SIPO_MODE_MASK			BIT(2)
59900b49e6SMikhail Kshevetskiy #define GPIO_EMMC_MODE_MASK			BIT(1)
60900b49e6SMikhail Kshevetskiy #define GPIO_PON_MODE_MASK			BIT(0)
61900b49e6SMikhail Kshevetskiy 
62900b49e6SMikhail Kshevetskiy #define REG_NPU_UART_EN				0x0224
63900b49e6SMikhail Kshevetskiy #define JTAG_UDI_EN_MASK			BIT(4)
64900b49e6SMikhail Kshevetskiy #define JTAG_DFD_EN_MASK			BIT(3)
65900b49e6SMikhail Kshevetskiy 
66900b49e6SMikhail Kshevetskiy #define REG_FORCE_GPIO_EN			0x0228
67900b49e6SMikhail Kshevetskiy #define FORCE_GPIO_EN(n)			BIT(n)
68900b49e6SMikhail Kshevetskiy 
69900b49e6SMikhail Kshevetskiy /* LED MAP */
70900b49e6SMikhail Kshevetskiy #define REG_LAN_LED0_MAPPING			0x027c
71900b49e6SMikhail Kshevetskiy #define REG_LAN_LED1_MAPPING			0x0280
72900b49e6SMikhail Kshevetskiy 
73900b49e6SMikhail Kshevetskiy #define LAN4_LED_MAPPING_MASK			GENMASK(18, 16)
74900b49e6SMikhail Kshevetskiy #define LAN4_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN4_LED_MAPPING_MASK, (_n))
75900b49e6SMikhail Kshevetskiy 
76900b49e6SMikhail Kshevetskiy #define LAN3_LED_MAPPING_MASK			GENMASK(14, 12)
77900b49e6SMikhail Kshevetskiy #define LAN3_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n))
78900b49e6SMikhail Kshevetskiy 
79900b49e6SMikhail Kshevetskiy #define LAN2_LED_MAPPING_MASK			GENMASK(10, 8)
80900b49e6SMikhail Kshevetskiy #define LAN2_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n))
81900b49e6SMikhail Kshevetskiy 
82900b49e6SMikhail Kshevetskiy #define LAN1_LED_MAPPING_MASK			GENMASK(6, 4)
83900b49e6SMikhail Kshevetskiy #define LAN1_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n))
84900b49e6SMikhail Kshevetskiy 
85900b49e6SMikhail Kshevetskiy #define LAN0_LED_MAPPING_MASK			GENMASK(2, 0)
86900b49e6SMikhail Kshevetskiy #define LAN0_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n))
87900b49e6SMikhail Kshevetskiy 
88900b49e6SMikhail Kshevetskiy /* CONF */
89900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_E2				0x001c
90900b49e6SMikhail Kshevetskiy #define SPI_MISO_E2_MASK			BIT(14)
91900b49e6SMikhail Kshevetskiy #define SPI_MOSI_E2_MASK			BIT(13)
92900b49e6SMikhail Kshevetskiy #define SPI_CLK_E2_MASK				BIT(12)
93900b49e6SMikhail Kshevetskiy #define SPI_CS0_E2_MASK				BIT(11)
94900b49e6SMikhail Kshevetskiy #define PCIE2_RESET_E2_MASK			BIT(10)
95900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_E2_MASK			BIT(9)
96900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_E2_MASK			BIT(8)
97900b49e6SMikhail Kshevetskiy #define UART1_RXD_E2_MASK			BIT(3)
98900b49e6SMikhail Kshevetskiy #define UART1_TXD_E2_MASK			BIT(2)
99900b49e6SMikhail Kshevetskiy #define I2C_SCL_E2_MASK				BIT(1)
100900b49e6SMikhail Kshevetskiy #define I2C_SDA_E2_MASK				BIT(0)
101900b49e6SMikhail Kshevetskiy 
102900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_E4				0x0020
103900b49e6SMikhail Kshevetskiy #define SPI_MISO_E4_MASK			BIT(14)
104900b49e6SMikhail Kshevetskiy #define SPI_MOSI_E4_MASK			BIT(13)
105900b49e6SMikhail Kshevetskiy #define SPI_CLK_E4_MASK				BIT(12)
106900b49e6SMikhail Kshevetskiy #define SPI_CS0_E4_MASK				BIT(11)
107900b49e6SMikhail Kshevetskiy #define PCIE2_RESET_E4_MASK			BIT(10)
108900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_E4_MASK			BIT(9)
109900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_E4_MASK			BIT(8)
110900b49e6SMikhail Kshevetskiy #define UART1_RXD_E4_MASK			BIT(3)
111900b49e6SMikhail Kshevetskiy #define UART1_TXD_E4_MASK			BIT(2)
112900b49e6SMikhail Kshevetskiy #define I2C_SCL_E4_MASK				BIT(1)
113900b49e6SMikhail Kshevetskiy #define I2C_SDA_E4_MASK				BIT(0)
114900b49e6SMikhail Kshevetskiy 
115900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_E2				0x0024
116900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_E4				0x0028
117900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_E2				0x002c
118900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_E4				0x0030
119900b49e6SMikhail Kshevetskiy 
120900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_PU				0x0044
121900b49e6SMikhail Kshevetskiy #define SPI_MISO_PU_MASK			BIT(14)
122900b49e6SMikhail Kshevetskiy #define SPI_MOSI_PU_MASK			BIT(13)
123900b49e6SMikhail Kshevetskiy #define SPI_CLK_PU_MASK				BIT(12)
124900b49e6SMikhail Kshevetskiy #define SPI_CS0_PU_MASK				BIT(11)
125900b49e6SMikhail Kshevetskiy #define PCIE2_RESET_PU_MASK			BIT(10)
126900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_PU_MASK			BIT(9)
127900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_PU_MASK			BIT(8)
128900b49e6SMikhail Kshevetskiy #define UART1_RXD_PU_MASK			BIT(3)
129900b49e6SMikhail Kshevetskiy #define UART1_TXD_PU_MASK			BIT(2)
130900b49e6SMikhail Kshevetskiy #define I2C_SCL_PU_MASK				BIT(1)
131900b49e6SMikhail Kshevetskiy #define I2C_SDA_PU_MASK				BIT(0)
132900b49e6SMikhail Kshevetskiy 
133900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_PD				0x0048
134900b49e6SMikhail Kshevetskiy #define SPI_MISO_PD_MASK			BIT(14)
135900b49e6SMikhail Kshevetskiy #define SPI_MOSI_PD_MASK			BIT(13)
136900b49e6SMikhail Kshevetskiy #define SPI_CLK_PD_MASK				BIT(12)
137900b49e6SMikhail Kshevetskiy #define SPI_CS0_PD_MASK				BIT(11)
138900b49e6SMikhail Kshevetskiy #define PCIE2_RESET_PD_MASK			BIT(10)
139900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_PD_MASK			BIT(9)
140900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_PD_MASK			BIT(8)
141900b49e6SMikhail Kshevetskiy #define UART1_RXD_PD_MASK			BIT(3)
142900b49e6SMikhail Kshevetskiy #define UART1_TXD_PD_MASK			BIT(2)
143900b49e6SMikhail Kshevetskiy #define I2C_SCL_PD_MASK				BIT(1)
144900b49e6SMikhail Kshevetskiy #define I2C_SDA_PD_MASK				BIT(0)
145900b49e6SMikhail Kshevetskiy 
146900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_PU				0x004c
147900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_PD				0x0050
148900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_PU				0x0054
149900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_PD				0x0058
150900b49e6SMikhail Kshevetskiy 
151900b49e6SMikhail Kshevetskiy #define REG_PCIE_RESET_OD			0x018c
152900b49e6SMikhail Kshevetskiy #define PCIE2_RESET_OD_MASK			BIT(2)
153900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_OD_MASK			BIT(1)
154900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_OD_MASK			BIT(0)
155900b49e6SMikhail Kshevetskiy 
156900b49e6SMikhail Kshevetskiy /* PWM MODE CONF */
157900b49e6SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG			0x0034
158900b49e6SMikhail Kshevetskiy #define GPIO15_FLASH_MODE_CFG			BIT(15)
159900b49e6SMikhail Kshevetskiy #define GPIO14_FLASH_MODE_CFG			BIT(14)
160900b49e6SMikhail Kshevetskiy #define GPIO13_FLASH_MODE_CFG			BIT(13)
161900b49e6SMikhail Kshevetskiy #define GPIO12_FLASH_MODE_CFG			BIT(12)
162900b49e6SMikhail Kshevetskiy #define GPIO11_FLASH_MODE_CFG			BIT(11)
163900b49e6SMikhail Kshevetskiy #define GPIO10_FLASH_MODE_CFG			BIT(10)
164900b49e6SMikhail Kshevetskiy #define GPIO9_FLASH_MODE_CFG			BIT(9)
165900b49e6SMikhail Kshevetskiy #define GPIO8_FLASH_MODE_CFG			BIT(8)
166900b49e6SMikhail Kshevetskiy #define GPIO7_FLASH_MODE_CFG			BIT(7)
167900b49e6SMikhail Kshevetskiy #define GPIO6_FLASH_MODE_CFG			BIT(6)
168900b49e6SMikhail Kshevetskiy #define GPIO5_FLASH_MODE_CFG			BIT(5)
169900b49e6SMikhail Kshevetskiy #define GPIO4_FLASH_MODE_CFG			BIT(4)
170900b49e6SMikhail Kshevetskiy #define GPIO3_FLASH_MODE_CFG			BIT(3)
171900b49e6SMikhail Kshevetskiy #define GPIO2_FLASH_MODE_CFG			BIT(2)
172900b49e6SMikhail Kshevetskiy #define GPIO1_FLASH_MODE_CFG			BIT(1)
173900b49e6SMikhail Kshevetskiy #define GPIO0_FLASH_MODE_CFG			BIT(0)
174900b49e6SMikhail Kshevetskiy 
175900b49e6SMikhail Kshevetskiy /* PWM MODE CONF EXT */
176900b49e6SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG_EXT		0x0068
177900b49e6SMikhail Kshevetskiy #define GPIO51_FLASH_MODE_CFG			BIT(31)
178900b49e6SMikhail Kshevetskiy #define GPIO50_FLASH_MODE_CFG			BIT(30)
179900b49e6SMikhail Kshevetskiy #define GPIO49_FLASH_MODE_CFG			BIT(29)
180900b49e6SMikhail Kshevetskiy #define GPIO48_FLASH_MODE_CFG			BIT(28)
181900b49e6SMikhail Kshevetskiy #define GPIO47_FLASH_MODE_CFG			BIT(27)
182900b49e6SMikhail Kshevetskiy #define GPIO46_FLASH_MODE_CFG			BIT(26)
183900b49e6SMikhail Kshevetskiy #define GPIO45_FLASH_MODE_CFG			BIT(25)
184900b49e6SMikhail Kshevetskiy #define GPIO44_FLASH_MODE_CFG			BIT(24)
185900b49e6SMikhail Kshevetskiy #define GPIO43_FLASH_MODE_CFG			BIT(23)
186900b49e6SMikhail Kshevetskiy #define GPIO42_FLASH_MODE_CFG			BIT(22)
187900b49e6SMikhail Kshevetskiy #define GPIO41_FLASH_MODE_CFG			BIT(21)
188900b49e6SMikhail Kshevetskiy #define GPIO40_FLASH_MODE_CFG			BIT(20)
189900b49e6SMikhail Kshevetskiy #define GPIO39_FLASH_MODE_CFG			BIT(19)
190900b49e6SMikhail Kshevetskiy #define GPIO38_FLASH_MODE_CFG			BIT(18)
191900b49e6SMikhail Kshevetskiy #define GPIO37_FLASH_MODE_CFG			BIT(17)
192900b49e6SMikhail Kshevetskiy #define GPIO36_FLASH_MODE_CFG			BIT(16)
193900b49e6SMikhail Kshevetskiy #define GPIO31_FLASH_MODE_CFG			BIT(15)
194900b49e6SMikhail Kshevetskiy #define GPIO30_FLASH_MODE_CFG			BIT(14)
195900b49e6SMikhail Kshevetskiy #define GPIO29_FLASH_MODE_CFG			BIT(13)
196900b49e6SMikhail Kshevetskiy #define GPIO28_FLASH_MODE_CFG			BIT(12)
197900b49e6SMikhail Kshevetskiy #define GPIO27_FLASH_MODE_CFG			BIT(11)
198900b49e6SMikhail Kshevetskiy #define GPIO26_FLASH_MODE_CFG			BIT(10)
199900b49e6SMikhail Kshevetskiy #define GPIO25_FLASH_MODE_CFG			BIT(9)
200900b49e6SMikhail Kshevetskiy #define GPIO24_FLASH_MODE_CFG			BIT(8)
201900b49e6SMikhail Kshevetskiy #define GPIO23_FLASH_MODE_CFG			BIT(7)
202900b49e6SMikhail Kshevetskiy #define GPIO22_FLASH_MODE_CFG			BIT(6)
203900b49e6SMikhail Kshevetskiy #define GPIO21_FLASH_MODE_CFG			BIT(5)
204900b49e6SMikhail Kshevetskiy #define GPIO20_FLASH_MODE_CFG			BIT(4)
205900b49e6SMikhail Kshevetskiy #define GPIO19_FLASH_MODE_CFG			BIT(3)
206900b49e6SMikhail Kshevetskiy #define GPIO18_FLASH_MODE_CFG			BIT(2)
207900b49e6SMikhail Kshevetskiy #define GPIO17_FLASH_MODE_CFG			BIT(1)
208900b49e6SMikhail Kshevetskiy #define GPIO16_FLASH_MODE_CFG			BIT(0)
209900b49e6SMikhail Kshevetskiy 
210900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO(gpio, mux_val)			\
211900b49e6SMikhail Kshevetskiy 	{							\
212900b49e6SMikhail Kshevetskiy 		.name = (gpio),					\
213900b49e6SMikhail Kshevetskiy 		.regmap[0] = {					\
214900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
215900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
216900b49e6SMikhail Kshevetskiy 			(mux_val),				\
217900b49e6SMikhail Kshevetskiy 			(mux_val)				\
218900b49e6SMikhail Kshevetskiy 		},						\
219900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,				\
220900b49e6SMikhail Kshevetskiy 	}
221900b49e6SMikhail Kshevetskiy 
222900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO_EXT(gpio, mux_val, smux_val)	\
223900b49e6SMikhail Kshevetskiy 	{							\
224900b49e6SMikhail Kshevetskiy 		.name = (gpio),					\
225900b49e6SMikhail Kshevetskiy 		.regmap[0] = {					\
226900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
227900b49e6SMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
228900b49e6SMikhail Kshevetskiy 			(mux_val),				\
229900b49e6SMikhail Kshevetskiy 			0					\
230900b49e6SMikhail Kshevetskiy 		},						\
231900b49e6SMikhail Kshevetskiy 		.regmap[1] = {					\
232900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
233900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
234900b49e6SMikhail Kshevetskiy 			(smux_val),				\
235900b49e6SMikhail Kshevetskiy 			(smux_val)				\
236900b49e6SMikhail Kshevetskiy 		},						\
237900b49e6SMikhail Kshevetskiy 		.regmap_size = 2,				\
238900b49e6SMikhail Kshevetskiy 	}
239900b49e6SMikhail Kshevetskiy 
240900b49e6SMikhail Kshevetskiy /* PWM */
241900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM(gpio, mux_val)			\
242900b49e6SMikhail Kshevetskiy 	{							\
243900b49e6SMikhail Kshevetskiy 		.name = (gpio),					\
244900b49e6SMikhail Kshevetskiy 		.regmap[0] = {					\
245900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_PWM_MUX,			\
246900b49e6SMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG,		\
247900b49e6SMikhail Kshevetskiy 			(mux_val),				\
248900b49e6SMikhail Kshevetskiy 			(mux_val)				\
249900b49e6SMikhail Kshevetskiy 		},						\
250900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,				\
251900b49e6SMikhail Kshevetskiy 	}
252900b49e6SMikhail Kshevetskiy 
253900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT(gpio, mux_val)			\
254900b49e6SMikhail Kshevetskiy 	{							\
255900b49e6SMikhail Kshevetskiy 		.name = (gpio),					\
256900b49e6SMikhail Kshevetskiy 		.regmap[0] = {					\
257900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
258900b49e6SMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
259900b49e6SMikhail Kshevetskiy 			(mux_val),				\
260900b49e6SMikhail Kshevetskiy 			(mux_val)				\
261900b49e6SMikhail Kshevetskiy 		},						\
262900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,				\
263900b49e6SMikhail Kshevetskiy 	}
264900b49e6SMikhail Kshevetskiy 
265900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT_SEC(gpio, mux_val, smux_val)	\
266900b49e6SMikhail Kshevetskiy 	{							\
267900b49e6SMikhail Kshevetskiy 		.name = (gpio),					\
268900b49e6SMikhail Kshevetskiy 		.regmap[0] = {					\
269900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
270900b49e6SMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
271900b49e6SMikhail Kshevetskiy 			(mux_val),				\
272900b49e6SMikhail Kshevetskiy 			(mux_val)				\
273900b49e6SMikhail Kshevetskiy 		},						\
274900b49e6SMikhail Kshevetskiy 		.regmap[1] = {					\
275900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
276900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
277900b49e6SMikhail Kshevetskiy 			(smux_val),				\
278900b49e6SMikhail Kshevetskiy 			(smux_val)				\
279900b49e6SMikhail Kshevetskiy 		},						\
280900b49e6SMikhail Kshevetskiy 		.regmap_size = 2,				\
281900b49e6SMikhail Kshevetskiy 	}
282900b49e6SMikhail Kshevetskiy 
283900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED0(gpio, mux_val, map_mask, map_val)	\
284900b49e6SMikhail Kshevetskiy 	{								\
285900b49e6SMikhail Kshevetskiy 		.name = (gpio),						\
286900b49e6SMikhail Kshevetskiy 		.regmap[0] = {						\
287900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
288900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,				\
289900b49e6SMikhail Kshevetskiy 			(mux_val),					\
290900b49e6SMikhail Kshevetskiy 			(mux_val),					\
291900b49e6SMikhail Kshevetskiy 		},							\
292900b49e6SMikhail Kshevetskiy 		.regmap[1] = {						\
293900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
294900b49e6SMikhail Kshevetskiy 			REG_LAN_LED0_MAPPING,				\
295900b49e6SMikhail Kshevetskiy 			(map_mask),					\
296900b49e6SMikhail Kshevetskiy 			(map_val),					\
297900b49e6SMikhail Kshevetskiy 		},							\
298900b49e6SMikhail Kshevetskiy 		.regmap_size = 2,					\
299900b49e6SMikhail Kshevetskiy 	}
300900b49e6SMikhail Kshevetskiy 
301900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED1(gpio, mux_val, map_mask, map_val)	\
302900b49e6SMikhail Kshevetskiy 	{								\
303900b49e6SMikhail Kshevetskiy 		.name = (gpio),						\
304900b49e6SMikhail Kshevetskiy 		.regmap[0] = {						\
305900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
306900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,				\
307900b49e6SMikhail Kshevetskiy 			(mux_val),					\
308900b49e6SMikhail Kshevetskiy 			(mux_val),					\
309900b49e6SMikhail Kshevetskiy 		},							\
310900b49e6SMikhail Kshevetskiy 		.regmap[1] = {						\
311900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
312900b49e6SMikhail Kshevetskiy 			REG_LAN_LED1_MAPPING,				\
313900b49e6SMikhail Kshevetskiy 			(map_mask),					\
314900b49e6SMikhail Kshevetskiy 			(map_val),					\
315900b49e6SMikhail Kshevetskiy 		},							\
316900b49e6SMikhail Kshevetskiy 		.regmap_size = 2,					\
317900b49e6SMikhail Kshevetskiy 	}
318900b49e6SMikhail Kshevetskiy 
319cb9b160dSMikhail Kshevetskiy static struct pinctrl_pin_desc pinctrl_pins[] = {
320900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(0, "uart1_txd"),
321900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(1, "uart1_rxd"),
322900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(2, "i2c_scl"),
323900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(3, "i2c_sda"),
324900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(4, "spi_cs0"),
325900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(5, "spi_clk"),
326900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(6, "spi_mosi"),
327900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(7, "spi_miso"),
328900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(13, "gpio0"),
329900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(14, "gpio1"),
330900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(15, "gpio2"),
331900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(16, "gpio3"),
332900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(17, "gpio4"),
333900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(18, "gpio5"),
334900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(19, "gpio6"),
335900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(20, "gpio7"),
336900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(21, "gpio8"),
337900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(22, "gpio9"),
338900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(23, "gpio10"),
339900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(24, "gpio11"),
340900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(25, "gpio12"),
341900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(26, "gpio13"),
342900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(27, "gpio14"),
343900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(28, "gpio15"),
344900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(29, "gpio16"),
345900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(30, "gpio17"),
346900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(31, "gpio18"),
347900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(32, "gpio19"),
348900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(33, "gpio20"),
349900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(34, "gpio21"),
350900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(35, "gpio22"),
351900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(36, "gpio23"),
352900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(37, "gpio24"),
353900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(38, "gpio25"),
354900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(39, "gpio26"),
355900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(40, "gpio27"),
356900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(41, "gpio28"),
357900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(42, "gpio29"),
358900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(43, "gpio30"),
359900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(44, "gpio31"),
360900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(45, "gpio32"),
361900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(46, "gpio33"),
362900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(47, "gpio34"),
363900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(48, "gpio35"),
364900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(49, "gpio36"),
365900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(50, "gpio37"),
366900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(51, "gpio38"),
367900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(52, "gpio39"),
368900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(53, "gpio40"),
369900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(54, "gpio41"),
370900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(55, "gpio42"),
371900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(56, "gpio43"),
372900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(57, "gpio44"),
373900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(58, "gpio45"),
374900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(59, "gpio46"),
375900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(60, "pcie_reset0"),
376900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(61, "pcie_reset1"),
377900b49e6SMikhail Kshevetskiy 	PINCTRL_PIN(62, "pcie_reset2"),
378900b49e6SMikhail Kshevetskiy };
379900b49e6SMikhail Kshevetskiy 
380cb9b160dSMikhail Kshevetskiy static const int pon_pins[] = { 49, 50, 51, 52, 53, 54 };
381cb9b160dSMikhail Kshevetskiy static const int pon_tod_1pps_pins[] = { 46 };
382cb9b160dSMikhail Kshevetskiy static const int gsw_tod_1pps_pins[] = { 46 };
383cb9b160dSMikhail Kshevetskiy static const int sipo_pins[] = { 16, 17 };
384cb9b160dSMikhail Kshevetskiy static const int sipo_rclk_pins[] = { 16, 17, 43 };
385cb9b160dSMikhail Kshevetskiy static const int mdio_pins[] = { 14, 15 };
386cb9b160dSMikhail Kshevetskiy static const int uart2_pins[] = { 48, 55 };
387cb9b160dSMikhail Kshevetskiy static const int uart2_cts_rts_pins[] = { 46, 47 };
388cb9b160dSMikhail Kshevetskiy static const int hsuart_pins[] = { 28, 29 };
389cb9b160dSMikhail Kshevetskiy static const int hsuart_cts_rts_pins[] = { 26, 27 };
390cb9b160dSMikhail Kshevetskiy static const int uart4_pins[] = { 38, 39 };
391cb9b160dSMikhail Kshevetskiy static const int uart5_pins[] = { 18, 19 };
392cb9b160dSMikhail Kshevetskiy static const int i2c0_pins[] = { 2, 3 };
393cb9b160dSMikhail Kshevetskiy static const int i2c1_pins[] = { 14, 15 };
394cb9b160dSMikhail Kshevetskiy static const int jtag_udi_pins[] = { 16, 17, 18, 19, 20 };
395cb9b160dSMikhail Kshevetskiy static const int jtag_dfd_pins[] = { 16, 17, 18, 19, 20 };
396cb9b160dSMikhail Kshevetskiy static const int i2s_pins[] = { 26, 27, 28, 29 };
397cb9b160dSMikhail Kshevetskiy static const int pcm1_pins[] = { 22, 23, 24, 25 };
398cb9b160dSMikhail Kshevetskiy static const int pcm2_pins[] = { 18, 19, 20, 21 };
399cb9b160dSMikhail Kshevetskiy static const int spi_quad_pins[] = { 32, 33 };
400cb9b160dSMikhail Kshevetskiy static const int spi_pins[] = { 4, 5, 6, 7 };
401cb9b160dSMikhail Kshevetskiy static const int spi_cs1_pins[] = { 34 };
402cb9b160dSMikhail Kshevetskiy static const int pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 };
403cb9b160dSMikhail Kshevetskiy static const int pcm_spi_int_pins[] = { 14 };
404cb9b160dSMikhail Kshevetskiy static const int pcm_spi_rst_pins[] = { 15 };
405cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs1_pins[] = { 43 };
406cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs2_pins[] = { 40 };
407cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs2_p128_pins[] = { 40 };
408cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs2_p156_pins[] = { 40 };
409cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs3_pins[] = { 41 };
410cb9b160dSMikhail Kshevetskiy static const int pcm_spi_cs4_pins[] = { 42 };
411cb9b160dSMikhail Kshevetskiy static const int emmc_pins[] = {
412900b49e6SMikhail Kshevetskiy 	4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37
413900b49e6SMikhail Kshevetskiy };
414cb9b160dSMikhail Kshevetskiy static const int pnand_pins[] = {
415900b49e6SMikhail Kshevetskiy 	4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42
416900b49e6SMikhail Kshevetskiy };
417cb9b160dSMikhail Kshevetskiy static const int gpio0_pins[] = { 13 };
418cb9b160dSMikhail Kshevetskiy static const int gpio1_pins[] = { 14 };
419cb9b160dSMikhail Kshevetskiy static const int gpio2_pins[] = { 15 };
420cb9b160dSMikhail Kshevetskiy static const int gpio3_pins[] = { 16 };
421cb9b160dSMikhail Kshevetskiy static const int gpio4_pins[] = { 17 };
422cb9b160dSMikhail Kshevetskiy static const int gpio5_pins[] = { 18 };
423cb9b160dSMikhail Kshevetskiy static const int gpio6_pins[] = { 19 };
424cb9b160dSMikhail Kshevetskiy static const int gpio7_pins[] = { 20 };
425cb9b160dSMikhail Kshevetskiy static const int gpio8_pins[] = { 21 };
426cb9b160dSMikhail Kshevetskiy static const int gpio9_pins[] = { 22 };
427cb9b160dSMikhail Kshevetskiy static const int gpio10_pins[] = { 23 };
428cb9b160dSMikhail Kshevetskiy static const int gpio11_pins[] = { 24 };
429cb9b160dSMikhail Kshevetskiy static const int gpio12_pins[] = { 25 };
430cb9b160dSMikhail Kshevetskiy static const int gpio13_pins[] = { 26 };
431cb9b160dSMikhail Kshevetskiy static const int gpio14_pins[] = { 27 };
432cb9b160dSMikhail Kshevetskiy static const int gpio15_pins[] = { 28 };
433cb9b160dSMikhail Kshevetskiy static const int gpio16_pins[] = { 29 };
434cb9b160dSMikhail Kshevetskiy static const int gpio17_pins[] = { 30 };
435cb9b160dSMikhail Kshevetskiy static const int gpio18_pins[] = { 31 };
436cb9b160dSMikhail Kshevetskiy static const int gpio19_pins[] = { 32 };
437cb9b160dSMikhail Kshevetskiy static const int gpio20_pins[] = { 33 };
438cb9b160dSMikhail Kshevetskiy static const int gpio21_pins[] = { 34 };
439cb9b160dSMikhail Kshevetskiy static const int gpio22_pins[] = { 35 };
440cb9b160dSMikhail Kshevetskiy static const int gpio23_pins[] = { 36 };
441cb9b160dSMikhail Kshevetskiy static const int gpio24_pins[] = { 37 };
442cb9b160dSMikhail Kshevetskiy static const int gpio25_pins[] = { 38 };
443cb9b160dSMikhail Kshevetskiy static const int gpio26_pins[] = { 39 };
444cb9b160dSMikhail Kshevetskiy static const int gpio27_pins[] = { 40 };
445cb9b160dSMikhail Kshevetskiy static const int gpio28_pins[] = { 41 };
446cb9b160dSMikhail Kshevetskiy static const int gpio29_pins[] = { 42 };
447cb9b160dSMikhail Kshevetskiy static const int gpio30_pins[] = { 43 };
448cb9b160dSMikhail Kshevetskiy static const int gpio31_pins[] = { 44 };
449cb9b160dSMikhail Kshevetskiy static const int gpio32_pins[] = { 45 };
450cb9b160dSMikhail Kshevetskiy static const int gpio33_pins[] = { 46 };
451cb9b160dSMikhail Kshevetskiy static const int gpio34_pins[] = { 47 };
452cb9b160dSMikhail Kshevetskiy static const int gpio35_pins[] = { 48 };
453cb9b160dSMikhail Kshevetskiy static const int gpio36_pins[] = { 49 };
454cb9b160dSMikhail Kshevetskiy static const int gpio37_pins[] = { 50 };
455cb9b160dSMikhail Kshevetskiy static const int gpio38_pins[] = { 51 };
456cb9b160dSMikhail Kshevetskiy static const int gpio39_pins[] = { 52 };
457cb9b160dSMikhail Kshevetskiy static const int gpio40_pins[] = { 53 };
458cb9b160dSMikhail Kshevetskiy static const int gpio41_pins[] = { 54 };
459cb9b160dSMikhail Kshevetskiy static const int gpio42_pins[] = { 55 };
460cb9b160dSMikhail Kshevetskiy static const int gpio43_pins[] = { 56 };
461cb9b160dSMikhail Kshevetskiy static const int gpio44_pins[] = { 57 };
462cb9b160dSMikhail Kshevetskiy static const int gpio45_pins[] = { 58 };
463cb9b160dSMikhail Kshevetskiy static const int gpio46_pins[] = { 59 };
464cb9b160dSMikhail Kshevetskiy static const int gpio47_pins[] = { 60 };
465cb9b160dSMikhail Kshevetskiy static const int gpio48_pins[] = { 61 };
466cb9b160dSMikhail Kshevetskiy static const int gpio49_pins[] = { 62 };
467cb9b160dSMikhail Kshevetskiy static const int pcie_reset0_pins[] = { 60 };
468cb9b160dSMikhail Kshevetskiy static const int pcie_reset1_pins[] = { 61 };
469cb9b160dSMikhail Kshevetskiy static const int pcie_reset2_pins[] = { 62 };
470900b49e6SMikhail Kshevetskiy 
471cb9b160dSMikhail Kshevetskiy static const struct pingroup pinctrl_groups[] = {
472cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pon", pon),
473cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pon_tod_1pps", pon_tod_1pps),
474cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gsw_tod_1pps", gsw_tod_1pps),
475cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("sipo", sipo),
476cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("sipo_rclk", sipo_rclk),
477cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("mdio", mdio),
478cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("uart2", uart2),
479cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("uart2_cts_rts", uart2_cts_rts),
480cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("hsuart", hsuart),
481cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("hsuart_cts_rts", hsuart_cts_rts),
482cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("uart4", uart4),
483cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("uart5", uart5),
484cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("i2c0", i2c0),
485cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("i2c1", i2c1),
486cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("jtag_udi", jtag_udi),
487cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("jtag_dfd", jtag_dfd),
488cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("i2s", i2s),
489cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm1", pcm1),
490cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm2", pcm2),
491cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi", spi),
492cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi_quad", spi_quad),
493cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi_cs1", spi_cs1),
494cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi", pcm_spi),
495cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_int", pcm_spi_int),
496cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_rst", pcm_spi_rst),
497cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs1", pcm_spi_cs1),
498cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs2_p128", pcm_spi_cs2_p128),
499cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs2_p156", pcm_spi_cs2_p156),
500cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs2", pcm_spi_cs2),
501cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs3", pcm_spi_cs3),
502cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm_spi_cs4", pcm_spi_cs4),
503cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("emmc", emmc),
504cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pnand", pnand),
505cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio0", gpio0),
506cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio1", gpio1),
507cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio2", gpio2),
508cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio3", gpio3),
509cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio4", gpio4),
510cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio5", gpio5),
511cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio6", gpio6),
512cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio7", gpio7),
513cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio8", gpio8),
514cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio9", gpio9),
515cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio10", gpio10),
516cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio11", gpio11),
517cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio12", gpio12),
518cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio13", gpio13),
519cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio14", gpio14),
520cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio15", gpio15),
521cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio16", gpio16),
522cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio17", gpio17),
523cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio18", gpio18),
524cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio19", gpio19),
525cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio20", gpio20),
526cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio21", gpio21),
527cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio22", gpio22),
528cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio23", gpio23),
529cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio24", gpio24),
530cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio25", gpio25),
531cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio26", gpio26),
532cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio27", gpio27),
533cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio28", gpio28),
534cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio29", gpio29),
535cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio30", gpio30),
536cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio31", gpio31),
537cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio32", gpio32),
538cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio33", gpio33),
539cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio34", gpio34),
540cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio35", gpio35),
541cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio36", gpio36),
542cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio37", gpio37),
543cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio38", gpio38),
544cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio39", gpio39),
545cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio40", gpio40),
546cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio41", gpio41),
547cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio42", gpio42),
548cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio43", gpio43),
549cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio44", gpio44),
550cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio45", gpio45),
551cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio46", gpio46),
552cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio47", gpio47),
553cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio48", gpio48),
554cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio49", gpio49),
555cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcie_reset0", pcie_reset0),
556cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcie_reset1", pcie_reset1),
557cb9b160dSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcie_reset2", pcie_reset2),
558900b49e6SMikhail Kshevetskiy };
559900b49e6SMikhail Kshevetskiy 
560900b49e6SMikhail Kshevetskiy static const char *const pon_groups[] = { "pon" };
561900b49e6SMikhail Kshevetskiy static const char *const tod_1pps_groups[] = {
562900b49e6SMikhail Kshevetskiy 	"pon_tod_1pps", "gsw_tod_1pps"
563900b49e6SMikhail Kshevetskiy };
564900b49e6SMikhail Kshevetskiy static const char *const sipo_groups[] = { "sipo", "sipo_rclk" };
565900b49e6SMikhail Kshevetskiy static const char *const mdio_groups[] = { "mdio" };
566900b49e6SMikhail Kshevetskiy static const char *const uart_groups[] = {
567900b49e6SMikhail Kshevetskiy 	"uart2", "uart2_cts_rts", "hsuart", "hsuart_cts_rts",
568900b49e6SMikhail Kshevetskiy 	"uart4", "uart5"
569900b49e6SMikhail Kshevetskiy };
570900b49e6SMikhail Kshevetskiy static const char *const i2c_groups[] = { "i2c1" };
571900b49e6SMikhail Kshevetskiy static const char *const jtag_groups[] = { "jtag_udi", "jtag_dfd" };
572900b49e6SMikhail Kshevetskiy static const char *const pcm_groups[] = { "pcm1", "pcm2" };
573900b49e6SMikhail Kshevetskiy static const char *const spi_groups[] = { "spi_quad", "spi_cs1" };
574900b49e6SMikhail Kshevetskiy static const char *const pcm_spi_groups[] = {
575900b49e6SMikhail Kshevetskiy 	"pcm_spi", "pcm_spi_int", "pcm_spi_rst", "pcm_spi_cs1",
576900b49e6SMikhail Kshevetskiy 	"pcm_spi_cs2_p156", "pcm_spi_cs2_p128", "pcm_spi_cs3",
577900b49e6SMikhail Kshevetskiy 	"pcm_spi_cs4"
578900b49e6SMikhail Kshevetskiy };
579900b49e6SMikhail Kshevetskiy static const char *const i2s_groups[] = { "i2s" };
580900b49e6SMikhail Kshevetskiy static const char *const emmc_groups[] = { "emmc" };
581900b49e6SMikhail Kshevetskiy static const char *const pnand_groups[] = { "pnand" };
582900b49e6SMikhail Kshevetskiy static const char *const gpio_groups[] = { "gpio47", "gpio48", "gpio49" };
583900b49e6SMikhail Kshevetskiy static const char *const pcie_reset_groups[] = {
584900b49e6SMikhail Kshevetskiy 	"pcie_reset0", "pcie_reset1", "pcie_reset2"
585900b49e6SMikhail Kshevetskiy };
586900b49e6SMikhail Kshevetskiy static const char *const pwm_groups[] = {
587900b49e6SMikhail Kshevetskiy 	"gpio0",  "gpio1",  "gpio2",  "gpio3",  "gpio4",  "gpio5",
588900b49e6SMikhail Kshevetskiy 	"gpio6",  "gpio7",  "gpio8",  "gpio9",  "gpio10", "gpio11",
589900b49e6SMikhail Kshevetskiy 	"gpio12", "gpio13", "gpio14", "gpio15", "gpio16", "gpio17",
590900b49e6SMikhail Kshevetskiy 	"gpio18", "gpio19", "gpio20", "gpio21", "gpio22", "gpio23",
591900b49e6SMikhail Kshevetskiy 	"gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29",
592900b49e6SMikhail Kshevetskiy 	"gpio30", "gpio31", "gpio36", "gpio37", "gpio38", "gpio39",
593900b49e6SMikhail Kshevetskiy 	"gpio40", "gpio41", "gpio42", "gpio43", "gpio44", "gpio45",
594900b49e6SMikhail Kshevetskiy 	"gpio46", "gpio47", "gpio48", "gpio49"
595900b49e6SMikhail Kshevetskiy };
596900b49e6SMikhail Kshevetskiy static const char *const phy1_led0_groups[] = {
597900b49e6SMikhail Kshevetskiy 	"gpio33", "gpio34", "gpio35", "gpio42"
598900b49e6SMikhail Kshevetskiy };
599900b49e6SMikhail Kshevetskiy static const char *const phy2_led0_groups[] = {
600900b49e6SMikhail Kshevetskiy 	"gpio33", "gpio34", "gpio35", "gpio42"
601900b49e6SMikhail Kshevetskiy };
602900b49e6SMikhail Kshevetskiy static const char *const phy3_led0_groups[] = {
603900b49e6SMikhail Kshevetskiy 	"gpio33", "gpio34", "gpio35", "gpio42"
604900b49e6SMikhail Kshevetskiy };
605900b49e6SMikhail Kshevetskiy static const char *const phy4_led0_groups[] = {
606900b49e6SMikhail Kshevetskiy 	"gpio33", "gpio34", "gpio35", "gpio42"
607900b49e6SMikhail Kshevetskiy };
608900b49e6SMikhail Kshevetskiy static const char *const phy1_led1_groups[] = {
609900b49e6SMikhail Kshevetskiy 	"gpio43", "gpio44", "gpio45", "gpio46"
610900b49e6SMikhail Kshevetskiy };
611900b49e6SMikhail Kshevetskiy static const char *const phy2_led1_groups[] = {
612900b49e6SMikhail Kshevetskiy 	"gpio43", "gpio44", "gpio45", "gpio46"
613900b49e6SMikhail Kshevetskiy };
614900b49e6SMikhail Kshevetskiy static const char *const phy3_led1_groups[] = {
615900b49e6SMikhail Kshevetskiy 	"gpio43", "gpio44", "gpio45", "gpio46"
616900b49e6SMikhail Kshevetskiy };
617900b49e6SMikhail Kshevetskiy static const char *const phy4_led1_groups[] = {
618900b49e6SMikhail Kshevetskiy 	"gpio43", "gpio44", "gpio45", "gpio46"
619900b49e6SMikhail Kshevetskiy };
620900b49e6SMikhail Kshevetskiy 
621900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pon_func_group[] = {
622900b49e6SMikhail Kshevetskiy 	{
623900b49e6SMikhail Kshevetskiy 		.name = "pon",
624900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
625900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
626900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
627900b49e6SMikhail Kshevetskiy 			GPIO_PON_MODE_MASK,
628900b49e6SMikhail Kshevetskiy 			GPIO_PON_MODE_MASK
629900b49e6SMikhail Kshevetskiy 		},
630900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
631900b49e6SMikhail Kshevetskiy 	},
632900b49e6SMikhail Kshevetskiy };
633900b49e6SMikhail Kshevetskiy 
634900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group tod_1pps_func_group[] = {
635900b49e6SMikhail Kshevetskiy 	{
636900b49e6SMikhail Kshevetskiy 		.name = "pon_tod_1pps",
637900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
638900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
639900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,
640900b49e6SMikhail Kshevetskiy 			PON_TOD_1PPS_MODE_MASK,
641900b49e6SMikhail Kshevetskiy 			PON_TOD_1PPS_MODE_MASK
642900b49e6SMikhail Kshevetskiy 		},
643900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
644900b49e6SMikhail Kshevetskiy 	}, {
645900b49e6SMikhail Kshevetskiy 		.name = "gsw_tod_1pps",
646900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
647900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
648900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,
649900b49e6SMikhail Kshevetskiy 			GSW_TOD_1PPS_MODE_MASK,
650900b49e6SMikhail Kshevetskiy 			GSW_TOD_1PPS_MODE_MASK
651900b49e6SMikhail Kshevetskiy 		},
652900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
653900b49e6SMikhail Kshevetskiy 	},
654900b49e6SMikhail Kshevetskiy };
655900b49e6SMikhail Kshevetskiy 
656900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group sipo_func_group[] = {
657900b49e6SMikhail Kshevetskiy 	{
658900b49e6SMikhail Kshevetskiy 		.name = "sipo",
659900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
660900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
661900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
662900b49e6SMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,
663900b49e6SMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK
664900b49e6SMikhail Kshevetskiy 		},
665900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
666900b49e6SMikhail Kshevetskiy 	}, {
667900b49e6SMikhail Kshevetskiy 		.name = "sipo_rclk",
668900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
669900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
670900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
671900b49e6SMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,
672900b49e6SMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK
673900b49e6SMikhail Kshevetskiy 		},
674900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
675900b49e6SMikhail Kshevetskiy 	},
676900b49e6SMikhail Kshevetskiy };
677900b49e6SMikhail Kshevetskiy 
678900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group mdio_func_group[] = {
679900b49e6SMikhail Kshevetskiy 	{
680900b49e6SMikhail Kshevetskiy 		.name = "mdio",
681900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
682900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
683900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,
684900b49e6SMikhail Kshevetskiy 			GPIO_MDC_IO_MASTER_MODE_MASK,
685900b49e6SMikhail Kshevetskiy 			GPIO_MDC_IO_MASTER_MODE_MASK
686900b49e6SMikhail Kshevetskiy 		},
687900b49e6SMikhail Kshevetskiy 		.regmap[1] = {
688900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
689900b49e6SMikhail Kshevetskiy 			REG_FORCE_GPIO_EN,
690900b49e6SMikhail Kshevetskiy 			FORCE_GPIO_EN(1) | FORCE_GPIO_EN(2),
691900b49e6SMikhail Kshevetskiy 			FORCE_GPIO_EN(1) | FORCE_GPIO_EN(2)
692900b49e6SMikhail Kshevetskiy 		},
693900b49e6SMikhail Kshevetskiy 		.regmap_size = 2,
694900b49e6SMikhail Kshevetskiy 	},
695900b49e6SMikhail Kshevetskiy };
696900b49e6SMikhail Kshevetskiy 
697900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group uart_func_group[] = {
698900b49e6SMikhail Kshevetskiy 	{
699900b49e6SMikhail Kshevetskiy 		.name = "uart2",
700900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
701900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
702900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
703900b49e6SMikhail Kshevetskiy 			GPIO_UART2_MODE_MASK,
704900b49e6SMikhail Kshevetskiy 			GPIO_UART2_MODE_MASK
705900b49e6SMikhail Kshevetskiy 		},
706900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
707900b49e6SMikhail Kshevetskiy 	}, {
708900b49e6SMikhail Kshevetskiy 		.name = "uart2_cts_rts",
709900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
710900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
711900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
712900b49e6SMikhail Kshevetskiy 			GPIO_UART2_MODE_MASK | GPIO_UART2_CTS_RTS_MODE_MASK,
713900b49e6SMikhail Kshevetskiy 			GPIO_UART2_MODE_MASK | GPIO_UART2_CTS_RTS_MODE_MASK
714900b49e6SMikhail Kshevetskiy 		},
715900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
716900b49e6SMikhail Kshevetskiy 	}, {
717900b49e6SMikhail Kshevetskiy 		.name = "hsuart",
718900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
719900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
720900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
721900b49e6SMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
722900b49e6SMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK
723900b49e6SMikhail Kshevetskiy 		},
724900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
725900b49e6SMikhail Kshevetskiy 	},
726900b49e6SMikhail Kshevetskiy 	{
727900b49e6SMikhail Kshevetskiy 		.name = "hsuart_cts_rts",
728900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
729900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
730900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
731900b49e6SMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
732900b49e6SMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK
733900b49e6SMikhail Kshevetskiy 		},
734900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
735900b49e6SMikhail Kshevetskiy 	}, {
736900b49e6SMikhail Kshevetskiy 		.name = "uart4",
737900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
738900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
739900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
740900b49e6SMikhail Kshevetskiy 			GPIO_UART4_MODE_MASK,
741900b49e6SMikhail Kshevetskiy 			GPIO_UART4_MODE_MASK
742900b49e6SMikhail Kshevetskiy 		},
743900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
744900b49e6SMikhail Kshevetskiy 	}, {
745900b49e6SMikhail Kshevetskiy 		.name = "uart5",
746900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
747900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
748900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
749900b49e6SMikhail Kshevetskiy 			GPIO_UART5_MODE_MASK,
750900b49e6SMikhail Kshevetskiy 			GPIO_UART5_MODE_MASK
751900b49e6SMikhail Kshevetskiy 		},
752900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
753900b49e6SMikhail Kshevetskiy 	},
754900b49e6SMikhail Kshevetskiy };
755900b49e6SMikhail Kshevetskiy 
756900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group i2c_func_group[] = {
757900b49e6SMikhail Kshevetskiy 	{
758900b49e6SMikhail Kshevetskiy 		.name = "i2c1",
759900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
760900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
761900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,
762900b49e6SMikhail Kshevetskiy 			GPIO_2ND_I2C_MODE_MASK | GPIO_I2C_MASTER_MODE_MODE,
763900b49e6SMikhail Kshevetskiy 			GPIO_2ND_I2C_MODE_MASK | GPIO_I2C_MASTER_MODE_MODE
764900b49e6SMikhail Kshevetskiy 		},
765900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
766900b49e6SMikhail Kshevetskiy 	},
767900b49e6SMikhail Kshevetskiy };
768900b49e6SMikhail Kshevetskiy 
769900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group jtag_func_group[] = {
770900b49e6SMikhail Kshevetskiy 	{
771900b49e6SMikhail Kshevetskiy 		.name = "jtag_udi",
772900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
773900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
774900b49e6SMikhail Kshevetskiy 			REG_NPU_UART_EN,
775900b49e6SMikhail Kshevetskiy 			JTAG_UDI_EN_MASK,
776900b49e6SMikhail Kshevetskiy 			JTAG_UDI_EN_MASK
777900b49e6SMikhail Kshevetskiy 		},
778900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
779900b49e6SMikhail Kshevetskiy 	}, {
780900b49e6SMikhail Kshevetskiy 		.name = "jtag_dfd",
781900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
782900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
783900b49e6SMikhail Kshevetskiy 			REG_NPU_UART_EN,
784900b49e6SMikhail Kshevetskiy 			JTAG_DFD_EN_MASK,
785900b49e6SMikhail Kshevetskiy 			JTAG_DFD_EN_MASK
786900b49e6SMikhail Kshevetskiy 		},
787900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
788900b49e6SMikhail Kshevetskiy 	},
789900b49e6SMikhail Kshevetskiy };
790900b49e6SMikhail Kshevetskiy 
791900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_func_group[] = {
792900b49e6SMikhail Kshevetskiy 	{
793900b49e6SMikhail Kshevetskiy 		.name = "pcm1",
794900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
795900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
796900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
797900b49e6SMikhail Kshevetskiy 			GPIO_PCM1_MODE_MASK,
798900b49e6SMikhail Kshevetskiy 			GPIO_PCM1_MODE_MASK
799900b49e6SMikhail Kshevetskiy 		},
800900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
801900b49e6SMikhail Kshevetskiy 	}, {
802900b49e6SMikhail Kshevetskiy 		.name = "pcm2",
803900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
804900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
805900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
806900b49e6SMikhail Kshevetskiy 			GPIO_PCM2_MODE_MASK,
807900b49e6SMikhail Kshevetskiy 			GPIO_PCM2_MODE_MASK
808900b49e6SMikhail Kshevetskiy 		},
809900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
810900b49e6SMikhail Kshevetskiy 	},
811900b49e6SMikhail Kshevetskiy };
812900b49e6SMikhail Kshevetskiy 
813900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group spi_func_group[] = {
814900b49e6SMikhail Kshevetskiy 	{
815900b49e6SMikhail Kshevetskiy 		.name = "spi_quad",
816900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
817900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
818900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
819900b49e6SMikhail Kshevetskiy 			GPIO_SPI_QUAD_MODE_MASK,
820900b49e6SMikhail Kshevetskiy 			GPIO_SPI_QUAD_MODE_MASK
821900b49e6SMikhail Kshevetskiy 		},
822900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
823900b49e6SMikhail Kshevetskiy 	}, {
824900b49e6SMikhail Kshevetskiy 		.name = "spi_cs1",
825900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
826900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
827900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
828900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS1_MODE_MASK,
829900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS1_MODE_MASK
830900b49e6SMikhail Kshevetskiy 		},
831900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
832900b49e6SMikhail Kshevetskiy 	}, {
833900b49e6SMikhail Kshevetskiy 		.name = "spi_cs2",
834900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
835900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
836900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
837900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS2_MODE_MASK,
838900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS2_MODE_MASK
839900b49e6SMikhail Kshevetskiy 		},
840900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
841900b49e6SMikhail Kshevetskiy 	}, {
842900b49e6SMikhail Kshevetskiy 		.name = "spi_cs3",
843900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
844900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
845900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
846900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS3_MODE_MASK,
847900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS3_MODE_MASK
848900b49e6SMikhail Kshevetskiy 		},
849900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
850900b49e6SMikhail Kshevetskiy 	}, {
851900b49e6SMikhail Kshevetskiy 		.name = "spi_cs4",
852900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
853900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
854900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
855900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS4_MODE_MASK,
856900b49e6SMikhail Kshevetskiy 			GPIO_SPI_CS4_MODE_MASK
857900b49e6SMikhail Kshevetskiy 		},
858900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
859900b49e6SMikhail Kshevetskiy 	},
860900b49e6SMikhail Kshevetskiy };
861900b49e6SMikhail Kshevetskiy 
862900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_spi_func_group[] = {
863900b49e6SMikhail Kshevetskiy 	{
864900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi",
865900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
866900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
867900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
868900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_MODE_MASK,
869900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_MODE_MASK
870900b49e6SMikhail Kshevetskiy 		},
871900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
872900b49e6SMikhail Kshevetskiy 	}, {
873900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_int",
874900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
875900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
876900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
877900b49e6SMikhail Kshevetskiy 			GPIO_PCM_INT_MODE_MASK,
878900b49e6SMikhail Kshevetskiy 			GPIO_PCM_INT_MODE_MASK
879900b49e6SMikhail Kshevetskiy 		},
880900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
881900b49e6SMikhail Kshevetskiy 	}, {
882900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_rst",
883900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
884900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
885900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
886900b49e6SMikhail Kshevetskiy 			GPIO_PCM_RESET_MODE_MASK,
887900b49e6SMikhail Kshevetskiy 			GPIO_PCM_RESET_MODE_MASK
888900b49e6SMikhail Kshevetskiy 		},
889900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
890900b49e6SMikhail Kshevetskiy 	}, {
891900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_cs1",
892900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
893900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
894900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
895900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS1_MODE_MASK,
896900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS1_MODE_MASK
897900b49e6SMikhail Kshevetskiy 		},
898900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
899900b49e6SMikhail Kshevetskiy 	}, {
900900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_cs2_p128",
901900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
902900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
903900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
904900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS2_MODE_P128_MASK,
905900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS2_MODE_P128_MASK
906900b49e6SMikhail Kshevetskiy 		},
907900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
908900b49e6SMikhail Kshevetskiy 	}, {
909900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_cs2_p156",
910900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
911900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
912900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
913900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS2_MODE_P156_MASK,
914900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS2_MODE_P156_MASK
915900b49e6SMikhail Kshevetskiy 		},
916900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
917900b49e6SMikhail Kshevetskiy 	}, {
918900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_cs3",
919900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
920900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
921900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
922900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS3_MODE_MASK,
923900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS3_MODE_MASK
924900b49e6SMikhail Kshevetskiy 		},
925900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
926900b49e6SMikhail Kshevetskiy 	}, {
927900b49e6SMikhail Kshevetskiy 		.name = "pcm_spi_cs4",
928900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
929900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
930900b49e6SMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
931900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS4_MODE_MASK,
932900b49e6SMikhail Kshevetskiy 			GPIO_PCM_SPI_CS4_MODE_MASK
933900b49e6SMikhail Kshevetskiy 		},
934900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
935900b49e6SMikhail Kshevetskiy 	},
936900b49e6SMikhail Kshevetskiy };
937900b49e6SMikhail Kshevetskiy 
938900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group i2s_func_group[] = {
939900b49e6SMikhail Kshevetskiy 	{
940900b49e6SMikhail Kshevetskiy 		.name = "i2s",
941900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
942900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
943900b49e6SMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,
944900b49e6SMikhail Kshevetskiy 			GPIO_I2S_MODE_MASK,
945900b49e6SMikhail Kshevetskiy 			GPIO_I2S_MODE_MASK
946900b49e6SMikhail Kshevetskiy 		},
947900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
948900b49e6SMikhail Kshevetskiy 	},
949900b49e6SMikhail Kshevetskiy };
950900b49e6SMikhail Kshevetskiy 
951900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group emmc_func_group[] = {
952900b49e6SMikhail Kshevetskiy 	{
953900b49e6SMikhail Kshevetskiy 		.name = "emmc",
954900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
955900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
956900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
957900b49e6SMikhail Kshevetskiy 			GPIO_EMMC_MODE_MASK,
958900b49e6SMikhail Kshevetskiy 			GPIO_EMMC_MODE_MASK
959900b49e6SMikhail Kshevetskiy 		},
960900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
961900b49e6SMikhail Kshevetskiy 	},
962900b49e6SMikhail Kshevetskiy };
963900b49e6SMikhail Kshevetskiy 
964900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pnand_func_group[] = {
965900b49e6SMikhail Kshevetskiy 	{
966900b49e6SMikhail Kshevetskiy 		.name = "pnand",
967900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
968900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
969900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
970900b49e6SMikhail Kshevetskiy 			GPIO_PARALLEL_NAND_MODE_MASK,
971900b49e6SMikhail Kshevetskiy 			GPIO_PARALLEL_NAND_MODE_MASK
972900b49e6SMikhail Kshevetskiy 		},
973900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
974900b49e6SMikhail Kshevetskiy 	},
975900b49e6SMikhail Kshevetskiy };
976900b49e6SMikhail Kshevetskiy 
977900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group gpio_func_group[] = {
978900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio47", GPIO47_FLASH_MODE_CFG,
979900b49e6SMikhail Kshevetskiy 				GPIO_PCIE_RESET0_MASK),
980900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio48", GPIO48_FLASH_MODE_CFG,
981900b49e6SMikhail Kshevetskiy 				GPIO_PCIE_RESET1_MASK),
982900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio49", GPIO49_FLASH_MODE_CFG,
983900b49e6SMikhail Kshevetskiy 				GPIO_PCIE_RESET2_MASK),
984900b49e6SMikhail Kshevetskiy };
985900b49e6SMikhail Kshevetskiy 
986900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = {
987900b49e6SMikhail Kshevetskiy 	{
988900b49e6SMikhail Kshevetskiy 		.name = "pcie_reset0",
989900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
990900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
991900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
992900b49e6SMikhail Kshevetskiy 			GPIO_PCIE_RESET0_MASK,
993900b49e6SMikhail Kshevetskiy 			0
994900b49e6SMikhail Kshevetskiy 		},
995900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
996900b49e6SMikhail Kshevetskiy 	}, {
997900b49e6SMikhail Kshevetskiy 		.name = "pcie_reset1",
998900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
999900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
1000900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
1001900b49e6SMikhail Kshevetskiy 			GPIO_PCIE_RESET1_MASK,
1002900b49e6SMikhail Kshevetskiy 			0
1003900b49e6SMikhail Kshevetskiy 		},
1004900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
1005900b49e6SMikhail Kshevetskiy 	}, {
1006900b49e6SMikhail Kshevetskiy 		.name = "pcie_reset2",
1007900b49e6SMikhail Kshevetskiy 		.regmap[0] = {
1008900b49e6SMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
1009900b49e6SMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
1010900b49e6SMikhail Kshevetskiy 			GPIO_PCIE_RESET2_MASK,
1011900b49e6SMikhail Kshevetskiy 			0
1012900b49e6SMikhail Kshevetskiy 		},
1013900b49e6SMikhail Kshevetskiy 		.regmap_size = 1,
1014900b49e6SMikhail Kshevetskiy 	},
1015900b49e6SMikhail Kshevetskiy };
1016900b49e6SMikhail Kshevetskiy 
1017900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pwm_func_group[] = {
1018900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio0", GPIO0_FLASH_MODE_CFG),
1019900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio1", GPIO1_FLASH_MODE_CFG),
1020900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio2", GPIO2_FLASH_MODE_CFG),
1021900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio3", GPIO3_FLASH_MODE_CFG),
1022900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio4", GPIO4_FLASH_MODE_CFG),
1023900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio5", GPIO5_FLASH_MODE_CFG),
1024900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio6", GPIO6_FLASH_MODE_CFG),
1025900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio7", GPIO7_FLASH_MODE_CFG),
1026900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio8", GPIO8_FLASH_MODE_CFG),
1027900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio9", GPIO9_FLASH_MODE_CFG),
1028900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio10", GPIO10_FLASH_MODE_CFG),
1029900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio11", GPIO11_FLASH_MODE_CFG),
1030900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio12", GPIO12_FLASH_MODE_CFG),
1031900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio13", GPIO13_FLASH_MODE_CFG),
1032900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio14", GPIO14_FLASH_MODE_CFG),
1033900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio15", GPIO15_FLASH_MODE_CFG),
1034900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio16", GPIO16_FLASH_MODE_CFG),
1035900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio17", GPIO17_FLASH_MODE_CFG),
1036900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio18", GPIO18_FLASH_MODE_CFG),
1037900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio19", GPIO19_FLASH_MODE_CFG),
1038900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio20", GPIO20_FLASH_MODE_CFG),
1039900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio21", GPIO21_FLASH_MODE_CFG),
1040900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio22", GPIO22_FLASH_MODE_CFG),
1041900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio23", GPIO23_FLASH_MODE_CFG),
1042900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio24", GPIO24_FLASH_MODE_CFG),
1043900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio25", GPIO25_FLASH_MODE_CFG),
1044900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio26", GPIO26_FLASH_MODE_CFG),
1045900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio27", GPIO27_FLASH_MODE_CFG),
1046900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio28", GPIO28_FLASH_MODE_CFG),
1047900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio29", GPIO29_FLASH_MODE_CFG),
1048900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio30", GPIO30_FLASH_MODE_CFG),
1049900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio31", GPIO31_FLASH_MODE_CFG),
1050900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio36", GPIO36_FLASH_MODE_CFG),
1051900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio37", GPIO37_FLASH_MODE_CFG),
1052900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio38", GPIO38_FLASH_MODE_CFG),
1053900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio39", GPIO39_FLASH_MODE_CFG),
1054900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio40", GPIO40_FLASH_MODE_CFG),
1055900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio41", GPIO41_FLASH_MODE_CFG),
1056900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio42", GPIO42_FLASH_MODE_CFG),
1057900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio43", GPIO43_FLASH_MODE_CFG),
1058900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio44", GPIO44_FLASH_MODE_CFG),
1059900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio45", GPIO45_FLASH_MODE_CFG),
1060900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio46", GPIO46_FLASH_MODE_CFG),
1061900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio47", GPIO47_FLASH_MODE_CFG,
1062900b49e6SMikhail Kshevetskiy 				   GPIO_PCIE_RESET0_MASK),
1063900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio48", GPIO48_FLASH_MODE_CFG,
1064900b49e6SMikhail Kshevetskiy 				   GPIO_PCIE_RESET1_MASK),
1065900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio49", GPIO49_FLASH_MODE_CFG,
1066900b49e6SMikhail Kshevetskiy 				   GPIO_PCIE_RESET2_MASK),
1067900b49e6SMikhail Kshevetskiy };
1068900b49e6SMikhail Kshevetskiy 
1069900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
1070900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio33", GPIO_LAN0_LED0_MODE_MASK,
1071900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),
1072900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio34", GPIO_LAN1_LED0_MODE_MASK,
1073900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),
1074900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio35", GPIO_LAN2_LED0_MODE_MASK,
1075900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),
1076900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio42", GPIO_LAN3_LED0_MODE_MASK,
1077900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),
1078900b49e6SMikhail Kshevetskiy };
1079900b49e6SMikhail Kshevetskiy 
1080900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
1081900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio33", GPIO_LAN0_LED0_MODE_MASK,
1082900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),
1083900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio34", GPIO_LAN1_LED0_MODE_MASK,
1084900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),
1085900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio35", GPIO_LAN2_LED0_MODE_MASK,
1086900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),
1087900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio42", GPIO_LAN3_LED0_MODE_MASK,
1088900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),
1089900b49e6SMikhail Kshevetskiy };
1090900b49e6SMikhail Kshevetskiy 
1091900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
1092900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio33", GPIO_LAN0_LED0_MODE_MASK,
1093900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),
1094900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio34", GPIO_LAN1_LED0_MODE_MASK,
1095900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),
1096900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio35", GPIO_LAN2_LED0_MODE_MASK,
1097900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),
1098900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio42", GPIO_LAN3_LED0_MODE_MASK,
1099900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),
1100900b49e6SMikhail Kshevetskiy };
1101900b49e6SMikhail Kshevetskiy 
1102900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
1103900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio33", GPIO_LAN0_LED0_MODE_MASK,
1104900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),
1105900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio34", GPIO_LAN1_LED0_MODE_MASK,
1106900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),
1107900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio35", GPIO_LAN2_LED0_MODE_MASK,
1108900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),
1109900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio42", GPIO_LAN3_LED0_MODE_MASK,
1110900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),
1111900b49e6SMikhail Kshevetskiy };
1112900b49e6SMikhail Kshevetskiy 
1113900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
1114900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio43", GPIO_LAN0_LED1_MODE_MASK,
1115900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),
1116900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio44", GPIO_LAN1_LED1_MODE_MASK,
1117900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),
1118900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio45", GPIO_LAN2_LED1_MODE_MASK,
1119900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),
1120900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio46", GPIO_LAN3_LED1_MODE_MASK,
1121900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),
1122900b49e6SMikhail Kshevetskiy };
1123900b49e6SMikhail Kshevetskiy 
1124900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
1125900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio43", GPIO_LAN0_LED1_MODE_MASK,
1126900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),
1127900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio44", GPIO_LAN1_LED1_MODE_MASK,
1128900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),
1129900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio45", GPIO_LAN2_LED1_MODE_MASK,
1130900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),
1131900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio46", GPIO_LAN3_LED1_MODE_MASK,
1132900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),
1133900b49e6SMikhail Kshevetskiy };
1134900b49e6SMikhail Kshevetskiy 
1135900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
1136900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio43", GPIO_LAN0_LED1_MODE_MASK,
1137900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),
1138900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio44", GPIO_LAN1_LED1_MODE_MASK,
1139900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),
1140900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio45", GPIO_LAN2_LED1_MODE_MASK,
1141900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),
1142900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio46", GPIO_LAN3_LED1_MODE_MASK,
1143900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),
1144900b49e6SMikhail Kshevetskiy };
1145900b49e6SMikhail Kshevetskiy 
1146900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
1147900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio43", GPIO_LAN0_LED1_MODE_MASK,
1148900b49e6SMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),
1149900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio44", GPIO_LAN1_LED1_MODE_MASK,
1150900b49e6SMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),
1151900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio45", GPIO_LAN2_LED1_MODE_MASK,
1152900b49e6SMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),
1153900b49e6SMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio46", GPIO_LAN3_LED1_MODE_MASK,
1154900b49e6SMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),
1155900b49e6SMikhail Kshevetskiy };
1156900b49e6SMikhail Kshevetskiy 
1157cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_func pinctrl_funcs[] = {
1158900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pon", pon),
1159900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("tod_1pps", tod_1pps),
1160900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("sipo", sipo),
1161900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("mdio", mdio),
1162900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("uart", uart),
1163900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("i2c", i2c),
1164900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("jtag", jtag),
1165900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pcm", pcm),
1166900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("spi", spi),
1167900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pcm_spi", pcm_spi),
1168900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("i2s", i2s),
1169900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("emmc", emmc),
1170900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pnand", pnand),
1171900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("gpio", gpio),
1172900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pcie_reset", pcie_reset),
1173900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pwm", pwm),
1174900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy1_led0", phy1_led0),
1175900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy2_led0", phy2_led0),
1176900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy3_led0", phy3_led0),
1177900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy4_led0", phy4_led0),
1178900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy1_led1", phy1_led1),
1179900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy2_led1", phy2_led1),
1180900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy3_led1", phy3_led1),
1181900b49e6SMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy4_led1", phy4_led1),
1182900b49e6SMikhail Kshevetskiy };
1183900b49e6SMikhail Kshevetskiy 
1184cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pullup_conf[] = {
1185900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK),
1186900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK),
1187900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SCL_PU_MASK),
1188900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_I2C_SDA_PU, I2C_SDA_PU_MASK),
1189900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_I2C_SDA_PU, SPI_CS0_PU_MASK),
1190900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_I2C_SDA_PU, SPI_CLK_PU_MASK),
1191900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_I2C_SDA_PU, SPI_MOSI_PU_MASK),
1192900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_I2C_SDA_PU, SPI_MISO_PU_MASK),
1193900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_PU, BIT(0)),
1194900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_PU, BIT(1)),
1195900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_PU, BIT(2)),
1196900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_PU, BIT(3)),
1197900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_PU, BIT(4)),
1198900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_PU, BIT(5)),
1199900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_PU, BIT(6)),
1200900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_PU, BIT(7)),
1201900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_PU, BIT(8)),
1202900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_PU, BIT(9)),
1203900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_PU, BIT(10)),
1204900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_PU, BIT(11)),
1205900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_PU, BIT(12)),
1206900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_PU, BIT(13)),
1207900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_PU, BIT(14)),
1208900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_GPIO_L_PU, BIT(15)),
1209900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(16)),
1210900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(17)),
1211900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(18)),
1212900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(19)),
1213900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(20)),
1214900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(21)),
1215900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(22)),
1216900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_GPIO_L_PU, BIT(23)),
1217900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_GPIO_L_PU, BIT(24)),
1218900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(38, REG_GPIO_L_PU, BIT(25)),
1219900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(39, REG_GPIO_L_PU, BIT(26)),
1220900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(40, REG_GPIO_L_PU, BIT(27)),
1221900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(41, REG_GPIO_L_PU, BIT(28)),
1222900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(42, REG_GPIO_L_PU, BIT(29)),
1223900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(43, REG_GPIO_L_PU, BIT(30)),
1224900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(44, REG_GPIO_L_PU, BIT(31)),
1225900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(45, REG_GPIO_H_PU, BIT(0)),
1226900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(46, REG_GPIO_H_PU, BIT(1)),
1227900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(47, REG_GPIO_H_PU, BIT(2)),
1228900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(48, REG_GPIO_H_PU, BIT(3)),
1229900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(49, REG_GPIO_H_PU, BIT(4)),
1230900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(50, REG_GPIO_H_PU, BIT(5)),
1231900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(51, REG_GPIO_H_PU, BIT(6)),
1232900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(52, REG_GPIO_H_PU, BIT(7)),
1233900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(53, REG_GPIO_H_PU, BIT(8)),
1234900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(54, REG_GPIO_H_PU, BIT(9)),
1235900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(55, REG_GPIO_H_PU, BIT(10)),
1236900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(56, REG_GPIO_H_PU, BIT(11)),
1237900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(57, REG_GPIO_H_PU, BIT(12)),
1238900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(58, REG_GPIO_H_PU, BIT(13)),
1239900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(59, REG_GPIO_H_PU, BIT(14)),
1240900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(60, REG_I2C_SDA_PU, PCIE0_RESET_PU_MASK),
1241900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(61, REG_I2C_SDA_PU, PCIE1_RESET_PU_MASK),
1242900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(62, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK),
1243900b49e6SMikhail Kshevetskiy };
1244900b49e6SMikhail Kshevetskiy 
1245cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pulldown_conf[] = {
1246900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK),
1247900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK),
1248900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SCL_PD_MASK),
1249900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_I2C_SDA_PD, I2C_SDA_PD_MASK),
1250900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_I2C_SDA_PD, SPI_CS0_PD_MASK),
1251900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_I2C_SDA_PD, SPI_CLK_PD_MASK),
1252900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_I2C_SDA_PD, SPI_MOSI_PD_MASK),
1253900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_I2C_SDA_PD, SPI_MISO_PD_MASK),
1254900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_PD, BIT(0)),
1255900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_PD, BIT(1)),
1256900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_PD, BIT(2)),
1257900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_PD, BIT(3)),
1258900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_PD, BIT(4)),
1259900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_PD, BIT(5)),
1260900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_PD, BIT(6)),
1261900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_PD, BIT(7)),
1262900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_PD, BIT(8)),
1263900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_PD, BIT(9)),
1264900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_PD, BIT(10)),
1265900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_PD, BIT(11)),
1266900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_PD, BIT(12)),
1267900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_PD, BIT(13)),
1268900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_PD, BIT(14)),
1269900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_GPIO_L_PD, BIT(15)),
1270900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(16)),
1271900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(17)),
1272900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(18)),
1273900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(19)),
1274900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(20)),
1275900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(21)),
1276900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(22)),
1277900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_GPIO_L_PD, BIT(23)),
1278900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_GPIO_L_PD, BIT(24)),
1279900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(38, REG_GPIO_L_PD, BIT(25)),
1280900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(39, REG_GPIO_L_PD, BIT(26)),
1281900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(40, REG_GPIO_L_PD, BIT(27)),
1282900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(41, REG_GPIO_L_PD, BIT(28)),
1283900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(42, REG_GPIO_L_PD, BIT(29)),
1284900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(43, REG_GPIO_L_PD, BIT(30)),
1285900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(44, REG_GPIO_L_PD, BIT(31)),
1286900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(45, REG_GPIO_H_PD, BIT(0)),
1287900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(46, REG_GPIO_H_PD, BIT(1)),
1288900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(47, REG_GPIO_H_PD, BIT(2)),
1289900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(48, REG_GPIO_H_PD, BIT(3)),
1290900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(49, REG_GPIO_H_PD, BIT(4)),
1291900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(50, REG_GPIO_H_PD, BIT(5)),
1292900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(51, REG_GPIO_H_PD, BIT(6)),
1293900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(52, REG_GPIO_H_PD, BIT(7)),
1294900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(53, REG_GPIO_H_PD, BIT(8)),
1295900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(54, REG_GPIO_H_PD, BIT(9)),
1296900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(55, REG_GPIO_H_PD, BIT(10)),
1297900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(56, REG_GPIO_H_PD, BIT(11)),
1298900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(57, REG_GPIO_H_PD, BIT(12)),
1299900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(58, REG_GPIO_H_PD, BIT(13)),
1300900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(59, REG_GPIO_H_PD, BIT(14)),
1301900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(60, REG_I2C_SDA_PD, PCIE0_RESET_PD_MASK),
1302900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(61, REG_I2C_SDA_PD, PCIE1_RESET_PD_MASK),
1303900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(62, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK),
1304900b49e6SMikhail Kshevetskiy };
1305900b49e6SMikhail Kshevetskiy 
1306cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e2_conf[] = {
1307900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK),
1308900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK),
1309900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SCL_E2_MASK),
1310900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_I2C_SDA_E2, I2C_SDA_E2_MASK),
1311900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_I2C_SDA_E2, SPI_CS0_E2_MASK),
1312900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_I2C_SDA_E2, SPI_CLK_E2_MASK),
1313900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_I2C_SDA_E2, SPI_MOSI_E2_MASK),
1314900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_I2C_SDA_E2, SPI_MISO_E2_MASK),
1315900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_E2, BIT(0)),
1316900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_E2, BIT(1)),
1317900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_E2, BIT(2)),
1318900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_E2, BIT(3)),
1319900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_E2, BIT(4)),
1320900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_E2, BIT(5)),
1321900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_E2, BIT(6)),
1322900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_E2, BIT(7)),
1323900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_E2, BIT(8)),
1324900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_E2, BIT(9)),
1325900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_E2, BIT(10)),
1326900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_E2, BIT(11)),
1327900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_E2, BIT(12)),
1328900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_E2, BIT(13)),
1329900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_E2, BIT(14)),
1330900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_GPIO_L_E2, BIT(15)),
1331900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(16)),
1332900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(17)),
1333900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(18)),
1334900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(19)),
1335900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(20)),
1336900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(21)),
1337900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(22)),
1338900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_GPIO_L_E2, BIT(23)),
1339900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_GPIO_L_E2, BIT(24)),
1340900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(38, REG_GPIO_L_E2, BIT(25)),
1341900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(39, REG_GPIO_L_E2, BIT(26)),
1342900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(40, REG_GPIO_L_E2, BIT(27)),
1343900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(41, REG_GPIO_L_E2, BIT(28)),
1344900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(42, REG_GPIO_L_E2, BIT(29)),
1345900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(43, REG_GPIO_L_E2, BIT(30)),
1346900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(44, REG_GPIO_L_E2, BIT(31)),
1347900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(45, REG_GPIO_H_E2, BIT(0)),
1348900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(46, REG_GPIO_H_E2, BIT(1)),
1349900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(47, REG_GPIO_H_E2, BIT(2)),
1350900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(48, REG_GPIO_H_E2, BIT(3)),
1351900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(49, REG_GPIO_H_E2, BIT(4)),
1352900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(50, REG_GPIO_H_E2, BIT(5)),
1353900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(51, REG_GPIO_H_E2, BIT(6)),
1354900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(52, REG_GPIO_H_E2, BIT(7)),
1355900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(53, REG_GPIO_H_E2, BIT(8)),
1356900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(54, REG_GPIO_H_E2, BIT(9)),
1357900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(55, REG_GPIO_H_E2, BIT(10)),
1358900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(56, REG_GPIO_H_E2, BIT(11)),
1359900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(57, REG_GPIO_H_E2, BIT(12)),
1360900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(58, REG_GPIO_H_E2, BIT(13)),
1361900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(59, REG_GPIO_H_E2, BIT(14)),
1362900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(60, REG_I2C_SDA_E2, PCIE0_RESET_E2_MASK),
1363900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(61, REG_I2C_SDA_E2, PCIE1_RESET_E2_MASK),
1364900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(62, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK),
1365900b49e6SMikhail Kshevetskiy };
1366900b49e6SMikhail Kshevetskiy 
1367cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e4_conf[] = {
1368900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK),
1369900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK),
1370900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SCL_E4_MASK),
1371900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_I2C_SDA_E4, I2C_SDA_E4_MASK),
1372900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_I2C_SDA_E4, SPI_CS0_E4_MASK),
1373900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_I2C_SDA_E4, SPI_CLK_E4_MASK),
1374900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_I2C_SDA_E4, SPI_MOSI_E4_MASK),
1375900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_I2C_SDA_E4, SPI_MISO_E4_MASK),
1376900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_E4, BIT(0)),
1377900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_E4, BIT(1)),
1378900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_E4, BIT(2)),
1379900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_E4, BIT(3)),
1380900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_E4, BIT(4)),
1381900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_E4, BIT(5)),
1382900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_E4, BIT(6)),
1383900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_E4, BIT(7)),
1384900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_E4, BIT(8)),
1385900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_E4, BIT(9)),
1386900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_E4, BIT(10)),
1387900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_E4, BIT(11)),
1388900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_E4, BIT(12)),
1389900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_E4, BIT(13)),
1390900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_E4, BIT(14)),
1391900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_GPIO_L_E4, BIT(15)),
1392900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(16)),
1393900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(17)),
1394900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(18)),
1395900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(19)),
1396900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(20)),
1397900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(21)),
1398900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(22)),
1399900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_GPIO_L_E4, BIT(23)),
1400900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_GPIO_L_E4, BIT(24)),
1401900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(38, REG_GPIO_L_E4, BIT(25)),
1402900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(39, REG_GPIO_L_E4, BIT(26)),
1403900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(40, REG_GPIO_L_E4, BIT(27)),
1404900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(41, REG_GPIO_L_E4, BIT(28)),
1405900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(42, REG_GPIO_L_E4, BIT(29)),
1406900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(43, REG_GPIO_L_E4, BIT(30)),
1407900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(44, REG_GPIO_L_E4, BIT(31)),
1408900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(45, REG_GPIO_H_E4, BIT(0)),
1409900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(46, REG_GPIO_H_E4, BIT(1)),
1410900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(47, REG_GPIO_H_E4, BIT(2)),
1411900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(48, REG_GPIO_H_E4, BIT(3)),
1412900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(49, REG_GPIO_H_E4, BIT(4)),
1413900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(50, REG_GPIO_H_E4, BIT(5)),
1414900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(51, REG_GPIO_H_E4, BIT(6)),
1415900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(52, REG_GPIO_H_E4, BIT(7)),
1416900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(53, REG_GPIO_H_E4, BIT(8)),
1417900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(54, REG_GPIO_H_E4, BIT(9)),
1418900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(55, REG_GPIO_H_E4, BIT(10)),
1419900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(56, REG_GPIO_H_E4, BIT(11)),
1420900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(57, REG_GPIO_H_E4, BIT(12)),
1421900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(58, REG_GPIO_H_E4, BIT(13)),
1422900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(59, REG_GPIO_H_E4, BIT(14)),
1423900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(60, REG_I2C_SDA_E4, PCIE0_RESET_E4_MASK),
1424900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(61, REG_I2C_SDA_E4, PCIE1_RESET_E4_MASK),
1425900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(62, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK),
1426900b49e6SMikhail Kshevetskiy };
1427900b49e6SMikhail Kshevetskiy 
1428cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pcie_rst_od_conf[] = {
1429900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(60, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK),
1430900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(61, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK),
1431900b49e6SMikhail Kshevetskiy 	PINCTRL_CONF_DESC(62, REG_PCIE_RESET_OD, PCIE2_RESET_OD_MASK),
1432900b49e6SMikhail Kshevetskiy };
1433900b49e6SMikhail Kshevetskiy 
1434cb9b160dSMikhail Kshevetskiy static const struct airoha_pinctrl_match_data pinctrl_match_data = {
1435*18c510baSMikhail Kshevetskiy 	.chip_scu_compatible = "airoha,en7581-chip-scu",
1436900b49e6SMikhail Kshevetskiy 	.pinctrl_name = KBUILD_MODNAME,
1437900b49e6SMikhail Kshevetskiy 	.pinctrl_owner = THIS_MODULE,
1438cb9b160dSMikhail Kshevetskiy 	.pins = pinctrl_pins,
1439cb9b160dSMikhail Kshevetskiy 	.num_pins = ARRAY_SIZE(pinctrl_pins),
1440cb9b160dSMikhail Kshevetskiy 	.grps = pinctrl_groups,
1441cb9b160dSMikhail Kshevetskiy 	.num_grps = ARRAY_SIZE(pinctrl_groups),
1442cb9b160dSMikhail Kshevetskiy 	.funcs = pinctrl_funcs,
1443cb9b160dSMikhail Kshevetskiy 	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
1444900b49e6SMikhail Kshevetskiy 	.confs_info = {
1445900b49e6SMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PULLUP] = {
1446cb9b160dSMikhail Kshevetskiy 			.confs = pinctrl_pullup_conf,
1447cb9b160dSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pullup_conf),
1448900b49e6SMikhail Kshevetskiy 		},
1449900b49e6SMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PULLDOWN] = {
1450cb9b160dSMikhail Kshevetskiy 			.confs = pinctrl_pulldown_conf,
1451cb9b160dSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pulldown_conf),
1452900b49e6SMikhail Kshevetskiy 		},
1453900b49e6SMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_DRIVE_E2] = {
1454cb9b160dSMikhail Kshevetskiy 			.confs = pinctrl_drive_e2_conf,
1455cb9b160dSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_drive_e2_conf),
1456900b49e6SMikhail Kshevetskiy 		},
1457900b49e6SMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_DRIVE_E4] = {
1458cb9b160dSMikhail Kshevetskiy 			.confs = pinctrl_drive_e4_conf,
1459cb9b160dSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_drive_e4_conf),
1460900b49e6SMikhail Kshevetskiy 		},
1461900b49e6SMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = {
1462cb9b160dSMikhail Kshevetskiy 			.confs = pinctrl_pcie_rst_od_conf,
1463cb9b160dSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pcie_rst_od_conf),
1464900b49e6SMikhail Kshevetskiy 		},
1465900b49e6SMikhail Kshevetskiy 	},
1466900b49e6SMikhail Kshevetskiy };
1467900b49e6SMikhail Kshevetskiy 
1468900b49e6SMikhail Kshevetskiy static const struct of_device_id airoha_pinctrl_of_match[] = {
1469cb9b160dSMikhail Kshevetskiy 	{ .compatible = "airoha,en7581-pinctrl", .data = &pinctrl_match_data },
1470900b49e6SMikhail Kshevetskiy 	{ /* sentinel */ }
1471900b49e6SMikhail Kshevetskiy };
1472900b49e6SMikhail Kshevetskiy MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match);
1473900b49e6SMikhail Kshevetskiy 
1474900b49e6SMikhail Kshevetskiy static struct platform_driver airoha_pinctrl_driver = {
1475900b49e6SMikhail Kshevetskiy 	.probe = airoha_pinctrl_probe,
1476900b49e6SMikhail Kshevetskiy 	.driver = {
1477900b49e6SMikhail Kshevetskiy 		.name = "pinctrl-airoha-an7581",
1478900b49e6SMikhail Kshevetskiy 		.of_match_table = airoha_pinctrl_of_match,
1479900b49e6SMikhail Kshevetskiy 	},
1480900b49e6SMikhail Kshevetskiy };
1481900b49e6SMikhail Kshevetskiy module_platform_driver(airoha_pinctrl_driver);
1482900b49e6SMikhail Kshevetskiy 
1483900b49e6SMikhail Kshevetskiy MODULE_LICENSE("GPL");
1484900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Lorenzo Bianconi <lorenzo@kernel.org>");
1485900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Benjamin Larsson <benjamin.larsson@genexis.eu>");
1486900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Markus Gothe <markus.gothe@genexis.eu>");
1487900b49e6SMikhail Kshevetskiy MODULE_DESCRIPTION("Pinctrl driver for Airoha AN7581 SoC");
1488