xref: /linux/drivers/pinctrl/airoha/pinctrl-an7563.c (revision cf9610f9116d55c5a66ef9f1faecacabd93a9322)
1*87b42c8bSMikhail Kshevetskiy // SPDX-License-Identifier: GPL-2.0-only
2*87b42c8bSMikhail Kshevetskiy /*
3*87b42c8bSMikhail Kshevetskiy  * AN7563 SoC pinctrl data for the Airoha pinctrl driver (pinctrl-airoha.c).
4*87b42c8bSMikhail Kshevetskiy  *
5*87b42c8bSMikhail Kshevetskiy  * Sources: AN7563 Programming Guide chapter 2 (CHIP SCU, base 0x1fa20000),
6*87b42c8bSMikhail Kshevetskiy  * chapter 17 (GPIO controller, base 0x1fbf0200) and AN7563PT datasheet
7*87b42c8bSMikhail Kshevetskiy  * chapter 4.3 (pin sharing scheme).
8*87b42c8bSMikhail Kshevetskiy  *
9*87b42c8bSMikhail Kshevetskiy  * Pin numbering follows the GPIO line numbering of the SoC:
10*87b42c8bSMikhail Kshevetskiy  *   pins  0-27 -> GPIO0-GPIO27 (dedicated GPIO pads)
11*87b42c8bSMikhail Kshevetskiy  *   pins 28/29 -> PCIE_RESET0/PCIE_RESET1 pads (GPIO28/GPIO29)
12*87b42c8bSMikhail Kshevetskiy  *   pins 30/31 -> I2C_SCL/I2C_SDA pads (GPIO30/GPIO31)
13*87b42c8bSMikhail Kshevetskiy  *   pins 32-35 -> SPI_CLK/SPI_CS/SPI_MOSI/SPI_MISO pads (GPIO32-GPIO35)
14*87b42c8bSMikhail Kshevetskiy  *   pins 36/37 -> UART_TXD/UART_RXD pads (GPIO36/GPIO37)
15*87b42c8bSMikhail Kshevetskiy  *
16*87b42c8bSMikhail Kshevetskiy  * Definitions marked "shared" are identical to the ones already present in
17*87b42c8bSMikhail Kshevetskiy  * pinctrl-airoha.c (EN7581/AN7583) and must be dropped when this data is
18*87b42c8bSMikhail Kshevetskiy  * merged there.
19*87b42c8bSMikhail Kshevetskiy  */
20*87b42c8bSMikhail Kshevetskiy 
21*87b42c8bSMikhail Kshevetskiy #include "airoha-common.h"
22*87b42c8bSMikhail Kshevetskiy 
23*87b42c8bSMikhail Kshevetskiy /*
24*87b42c8bSMikhail Kshevetskiy  * shared - named RG_SW_TOD_1PPS_MODE on AN7563. Only the LAN LED mode
25*87b42c8bSMikhail Kshevetskiy  * bits and GSW_TOD_1PPS exist on AN7563 (no 2nd I2C, I2S or PON 1PPS).
26*87b42c8bSMikhail Kshevetskiy  */
27*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_2ND_I2C_MODE			0x0214
28*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN3_LED1_MODE_MASK		BIT(10)
29*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN3_LED0_MODE_MASK		BIT(9)
30*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN2_LED1_MODE_MASK		BIT(8)
31*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN2_LED0_MODE_MASK		BIT(7)
32*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN1_LED1_MODE_MASK		BIT(6)
33*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN1_LED0_MODE_MASK		BIT(5)
34*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN0_LED1_MODE_MASK		BIT(4)
35*87b42c8bSMikhail Kshevetskiy #define GPIO_LAN0_LED0_MODE_MASK		BIT(3)
36*87b42c8bSMikhail Kshevetskiy #define GSW_TOD_1PPS_MODE_MASK			BIT(1)
37*87b42c8bSMikhail Kshevetskiy 
38*87b42c8bSMikhail Kshevetskiy /* shared */
39*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_SPI_CS1_MODE			0x0218
40*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_SPI_CS4_MODE_MASK		BIT(21)
41*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_SPI_CS3_MODE_MASK		BIT(20)
42*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_MASK		BIT(18)
43*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_SPI_CS1_MODE_MASK		BIT(17)
44*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_SPI_MODE_MASK			BIT(16)
45*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM2_MODE_MASK			BIT(13)
46*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM1_MODE_MASK			BIT(12)
47*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_INT_MODE_MASK			BIT(9)
48*87b42c8bSMikhail Kshevetskiy #define GPIO_PCM_RESET_MODE_MASK		BIT(8)
49*87b42c8bSMikhail Kshevetskiy #define GPIO_SPI_QUAD_MODE_MASK			BIT(4)
50*87b42c8bSMikhail Kshevetskiy #define GPIO_SPI_CS4_MODE_MASK			BIT(3)
51*87b42c8bSMikhail Kshevetskiy #define GPIO_SPI_CS3_MODE_MASK			BIT(2)
52*87b42c8bSMikhail Kshevetskiy #define GPIO_SPI_CS2_MODE_MASK			BIT(1)
53*87b42c8bSMikhail Kshevetskiy #define GPIO_SPI_CS1_MODE_MASK			BIT(0)
54*87b42c8bSMikhail Kshevetskiy 
55*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_PON_MODE			0x021c
56*87b42c8bSMikhail Kshevetskiy /*
57*87b42c8bSMikhail Kshevetskiy  * AN7563 specific: route the standalone pads to their GPIO function.
58*87b42c8bSMikhail Kshevetskiy  * 0: pad keeps its base function, 1: pad is GPIO<n>.
59*87b42c8bSMikhail Kshevetskiy  */
60*87b42c8bSMikhail Kshevetskiy #define UART_RXD_GPIO_MODE_MASK			BIT(22)	/* GPIO37 */
61*87b42c8bSMikhail Kshevetskiy #define UART_TXD_GPIO_MODE_MASK			BIT(21)	/* GPIO36 */
62*87b42c8bSMikhail Kshevetskiy #define SPI_MISO_GPIO_MODE_MASK			BIT(20)	/* GPIO35 */
63*87b42c8bSMikhail Kshevetskiy #define SPI_MOSI_GPIO_MODE_MASK			BIT(19)	/* GPIO34 */
64*87b42c8bSMikhail Kshevetskiy #define SPI_CS_GPIO_MODE_MASK			BIT(18)	/* GPIO33 */
65*87b42c8bSMikhail Kshevetskiy #define SPI_CLK_GPIO_MODE_MASK			BIT(17)	/* GPIO32 */
66*87b42c8bSMikhail Kshevetskiy #define I2C_SDA_GPIO_MODE_MASK			BIT(16)	/* GPIO31 */
67*87b42c8bSMikhail Kshevetskiy #define I2C_SCL_GPIO_MODE_MASK			BIT(15)	/* GPIO30 */
68*87b42c8bSMikhail Kshevetskiy /* shared */
69*87b42c8bSMikhail Kshevetskiy #define GPIO_PARALLEL_NAND_MODE_MASK		BIT(14)
70*87b42c8bSMikhail Kshevetskiy #define GPIO_SGMII_MDIO_MODE_MASK		BIT(13)
71*87b42c8bSMikhail Kshevetskiy #define SIPO_RCLK_MODE_MASK			BIT(11)
72*87b42c8bSMikhail Kshevetskiy /*
73*87b42c8bSMikhail Kshevetskiy  * Note: on AN7563 GPIO_PCIE_RESET{0,1} select the GPIO function of the
74*87b42c8bSMikhail Kshevetskiy  * PCIE_RESET pads (0: PCIe reset, 1: GPIO28/GPIO29).
75*87b42c8bSMikhail Kshevetskiy  */
76*87b42c8bSMikhail Kshevetskiy #define GPIO_PCIE_RESET1_MASK			BIT(10)	/* GPIO29 */
77*87b42c8bSMikhail Kshevetskiy #define GPIO_PCIE_RESET0_MASK			BIT(9)	/* GPIO28 */
78*87b42c8bSMikhail Kshevetskiy #define GPIO_HSUART_CTS_RTS_MODE_MASK		BIT(6)
79*87b42c8bSMikhail Kshevetskiy #define GPIO_HSUART_MODE_MASK			BIT(5)
80*87b42c8bSMikhail Kshevetskiy #define GPIO_SIPO_MODE_MASK			BIT(2)
81*87b42c8bSMikhail Kshevetskiy #define GPIO_PON_MODE_MASK			BIT(0)
82*87b42c8bSMikhail Kshevetskiy 
83*87b42c8bSMikhail Kshevetskiy /* shared */
84*87b42c8bSMikhail Kshevetskiy #define REG_NPU_UART_EN				0x0224
85*87b42c8bSMikhail Kshevetskiy #define JTAG_UDI_EN_MASK			BIT(4)
86*87b42c8bSMikhail Kshevetskiy #define JTAG_DFD_EN_MASK			BIT(3)
87*87b42c8bSMikhail Kshevetskiy 
88*87b42c8bSMikhail Kshevetskiy /* LED MAP - shared */
89*87b42c8bSMikhail Kshevetskiy #define REG_LAN_LED0_MAPPING			0x027c
90*87b42c8bSMikhail Kshevetskiy #define REG_LAN_LED1_MAPPING			0x0280
91*87b42c8bSMikhail Kshevetskiy 
92*87b42c8bSMikhail Kshevetskiy #define LAN3_LED_MAPPING_MASK			GENMASK(14, 12)
93*87b42c8bSMikhail Kshevetskiy #define LAN3_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n))
94*87b42c8bSMikhail Kshevetskiy 
95*87b42c8bSMikhail Kshevetskiy #define LAN2_LED_MAPPING_MASK			GENMASK(10, 8)
96*87b42c8bSMikhail Kshevetskiy #define LAN2_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n))
97*87b42c8bSMikhail Kshevetskiy 
98*87b42c8bSMikhail Kshevetskiy #define LAN1_LED_MAPPING_MASK			GENMASK(6, 4)
99*87b42c8bSMikhail Kshevetskiy #define LAN1_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n))
100*87b42c8bSMikhail Kshevetskiy 
101*87b42c8bSMikhail Kshevetskiy #define LAN0_LED_MAPPING_MASK			GENMASK(2, 0)
102*87b42c8bSMikhail Kshevetskiy #define LAN0_PHY_LED_MAP(_n)			FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n))
103*87b42c8bSMikhail Kshevetskiy 
104*87b42c8bSMikhail Kshevetskiy /*
105*87b42c8bSMikhail Kshevetskiy  * CONF - shared.
106*87b42c8bSMikhail Kshevetskiy  * The AN7563 standalone IO conf registers use the same bit layout as
107*87b42c8bSMikhail Kshevetskiy  * EN7581 (UART1_TXD/RXD are named UART_TXD/RXD on AN7563).
108*87b42c8bSMikhail Kshevetskiy  */
109*87b42c8bSMikhail Kshevetskiy #define REG_I2C_SDA_E2				0x001c
110*87b42c8bSMikhail Kshevetskiy #define SPI_MISO_E2_MASK			BIT(14)
111*87b42c8bSMikhail Kshevetskiy #define SPI_MOSI_E2_MASK			BIT(13)
112*87b42c8bSMikhail Kshevetskiy #define SPI_CLK_E2_MASK				BIT(12)
113*87b42c8bSMikhail Kshevetskiy #define SPI_CS0_E2_MASK				BIT(11)
114*87b42c8bSMikhail Kshevetskiy #define PCIE1_RESET_E2_MASK			BIT(9)
115*87b42c8bSMikhail Kshevetskiy #define PCIE0_RESET_E2_MASK			BIT(8)
116*87b42c8bSMikhail Kshevetskiy #define UART1_RXD_E2_MASK			BIT(3)
117*87b42c8bSMikhail Kshevetskiy #define UART1_TXD_E2_MASK			BIT(2)
118*87b42c8bSMikhail Kshevetskiy #define I2C_SCL_E2_MASK				BIT(1)
119*87b42c8bSMikhail Kshevetskiy #define I2C_SDA_E2_MASK				BIT(0)
120*87b42c8bSMikhail Kshevetskiy 
121*87b42c8bSMikhail Kshevetskiy #define REG_I2C_SDA_E4				0x0020
122*87b42c8bSMikhail Kshevetskiy #define SPI_MISO_E4_MASK			BIT(14)
123*87b42c8bSMikhail Kshevetskiy #define SPI_MOSI_E4_MASK			BIT(13)
124*87b42c8bSMikhail Kshevetskiy #define SPI_CLK_E4_MASK				BIT(12)
125*87b42c8bSMikhail Kshevetskiy #define SPI_CS0_E4_MASK				BIT(11)
126*87b42c8bSMikhail Kshevetskiy #define PCIE1_RESET_E4_MASK			BIT(9)
127*87b42c8bSMikhail Kshevetskiy #define PCIE0_RESET_E4_MASK			BIT(8)
128*87b42c8bSMikhail Kshevetskiy #define UART1_RXD_E4_MASK			BIT(3)
129*87b42c8bSMikhail Kshevetskiy #define UART1_TXD_E4_MASK			BIT(2)
130*87b42c8bSMikhail Kshevetskiy #define I2C_SCL_E4_MASK				BIT(1)
131*87b42c8bSMikhail Kshevetskiy #define I2C_SDA_E4_MASK				BIT(0)
132*87b42c8bSMikhail Kshevetskiy 
133*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_L_E2				0x0024
134*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_L_E4				0x0028
135*87b42c8bSMikhail Kshevetskiy 
136*87b42c8bSMikhail Kshevetskiy #define REG_I2C_SDA_PU				0x0044
137*87b42c8bSMikhail Kshevetskiy #define SPI_MISO_PU_MASK			BIT(14)
138*87b42c8bSMikhail Kshevetskiy #define SPI_MOSI_PU_MASK			BIT(13)
139*87b42c8bSMikhail Kshevetskiy #define SPI_CLK_PU_MASK				BIT(12)
140*87b42c8bSMikhail Kshevetskiy #define SPI_CS0_PU_MASK				BIT(11)
141*87b42c8bSMikhail Kshevetskiy #define PCIE1_RESET_PU_MASK			BIT(9)
142*87b42c8bSMikhail Kshevetskiy #define PCIE0_RESET_PU_MASK			BIT(8)
143*87b42c8bSMikhail Kshevetskiy #define UART1_RXD_PU_MASK			BIT(3)
144*87b42c8bSMikhail Kshevetskiy #define UART1_TXD_PU_MASK			BIT(2)
145*87b42c8bSMikhail Kshevetskiy #define I2C_SCL_PU_MASK				BIT(1)
146*87b42c8bSMikhail Kshevetskiy #define I2C_SDA_PU_MASK				BIT(0)
147*87b42c8bSMikhail Kshevetskiy 
148*87b42c8bSMikhail Kshevetskiy #define REG_I2C_SDA_PD				0x0048
149*87b42c8bSMikhail Kshevetskiy #define SPI_MISO_PD_MASK			BIT(14)
150*87b42c8bSMikhail Kshevetskiy #define SPI_MOSI_PD_MASK			BIT(13)
151*87b42c8bSMikhail Kshevetskiy #define SPI_CLK_PD_MASK				BIT(12)
152*87b42c8bSMikhail Kshevetskiy #define SPI_CS0_PD_MASK				BIT(11)
153*87b42c8bSMikhail Kshevetskiy #define PCIE1_RESET_PD_MASK			BIT(9)
154*87b42c8bSMikhail Kshevetskiy #define PCIE0_RESET_PD_MASK			BIT(8)
155*87b42c8bSMikhail Kshevetskiy #define UART1_RXD_PD_MASK			BIT(3)
156*87b42c8bSMikhail Kshevetskiy #define UART1_TXD_PD_MASK			BIT(2)
157*87b42c8bSMikhail Kshevetskiy #define I2C_SCL_PD_MASK				BIT(1)
158*87b42c8bSMikhail Kshevetskiy #define I2C_SDA_PD_MASK				BIT(0)
159*87b42c8bSMikhail Kshevetskiy 
160*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_L_PU				0x004c
161*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_L_PD				0x0050
162*87b42c8bSMikhail Kshevetskiy 
163*87b42c8bSMikhail Kshevetskiy #define REG_PCIE_RESET_OD			0x018c
164*87b42c8bSMikhail Kshevetskiy #define PCIE1_RESET_OD_MASK			BIT(1)
165*87b42c8bSMikhail Kshevetskiy #define PCIE0_RESET_OD_MASK			BIT(0)
166*87b42c8bSMikhail Kshevetskiy 
167*87b42c8bSMikhail Kshevetskiy /*
168*87b42c8bSMikhail Kshevetskiy  * PWM MODE CONF - shared.
169*87b42c8bSMikhail Kshevetskiy  * The AN7563 GPIO flash mode registers use the same layout as EN7581:
170*87b42c8bSMikhail Kshevetskiy  * REG_GPIO_FLASH_MODE_CFG covers GPIO0-15, REG_GPIO_FLASH_MODE_CFG_EXT
171*87b42c8bSMikhail Kshevetskiy  * covers GPIO16-31 (bits 0-15) and GPIO36+ (bits 16+). The SPI pads
172*87b42c8bSMikhail Kshevetskiy  * (GPIO32-35) have no flash mode configuration bit.
173*87b42c8bSMikhail Kshevetskiy  */
174*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG			0x0034
175*87b42c8bSMikhail Kshevetskiy #define GPIO15_FLASH_MODE_CFG			BIT(15)
176*87b42c8bSMikhail Kshevetskiy #define GPIO14_FLASH_MODE_CFG			BIT(14)
177*87b42c8bSMikhail Kshevetskiy #define GPIO13_FLASH_MODE_CFG			BIT(13)
178*87b42c8bSMikhail Kshevetskiy #define GPIO12_FLASH_MODE_CFG			BIT(12)
179*87b42c8bSMikhail Kshevetskiy #define GPIO11_FLASH_MODE_CFG			BIT(11)
180*87b42c8bSMikhail Kshevetskiy #define GPIO10_FLASH_MODE_CFG			BIT(10)
181*87b42c8bSMikhail Kshevetskiy #define GPIO9_FLASH_MODE_CFG			BIT(9)
182*87b42c8bSMikhail Kshevetskiy #define GPIO8_FLASH_MODE_CFG			BIT(8)
183*87b42c8bSMikhail Kshevetskiy #define GPIO7_FLASH_MODE_CFG			BIT(7)
184*87b42c8bSMikhail Kshevetskiy #define GPIO6_FLASH_MODE_CFG			BIT(6)
185*87b42c8bSMikhail Kshevetskiy #define GPIO5_FLASH_MODE_CFG			BIT(5)
186*87b42c8bSMikhail Kshevetskiy #define GPIO4_FLASH_MODE_CFG			BIT(4)
187*87b42c8bSMikhail Kshevetskiy #define GPIO3_FLASH_MODE_CFG			BIT(3)
188*87b42c8bSMikhail Kshevetskiy #define GPIO2_FLASH_MODE_CFG			BIT(2)
189*87b42c8bSMikhail Kshevetskiy #define GPIO1_FLASH_MODE_CFG			BIT(1)
190*87b42c8bSMikhail Kshevetskiy #define GPIO0_FLASH_MODE_CFG			BIT(0)
191*87b42c8bSMikhail Kshevetskiy 
192*87b42c8bSMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG_EXT		0x0068
193*87b42c8bSMikhail Kshevetskiy #define GPIO37_FLASH_MODE_CFG			BIT(17)
194*87b42c8bSMikhail Kshevetskiy #define GPIO36_FLASH_MODE_CFG			BIT(16)
195*87b42c8bSMikhail Kshevetskiy #define GPIO31_FLASH_MODE_CFG			BIT(15)
196*87b42c8bSMikhail Kshevetskiy #define GPIO30_FLASH_MODE_CFG			BIT(14)
197*87b42c8bSMikhail Kshevetskiy #define GPIO29_FLASH_MODE_CFG			BIT(13)
198*87b42c8bSMikhail Kshevetskiy #define GPIO28_FLASH_MODE_CFG			BIT(12)
199*87b42c8bSMikhail Kshevetskiy #define GPIO27_FLASH_MODE_CFG			BIT(11)
200*87b42c8bSMikhail Kshevetskiy #define GPIO26_FLASH_MODE_CFG			BIT(10)
201*87b42c8bSMikhail Kshevetskiy #define GPIO25_FLASH_MODE_CFG			BIT(9)
202*87b42c8bSMikhail Kshevetskiy #define GPIO24_FLASH_MODE_CFG			BIT(8)
203*87b42c8bSMikhail Kshevetskiy #define GPIO23_FLASH_MODE_CFG			BIT(7)
204*87b42c8bSMikhail Kshevetskiy #define GPIO22_FLASH_MODE_CFG			BIT(6)
205*87b42c8bSMikhail Kshevetskiy #define GPIO21_FLASH_MODE_CFG			BIT(5)
206*87b42c8bSMikhail Kshevetskiy #define GPIO20_FLASH_MODE_CFG			BIT(4)
207*87b42c8bSMikhail Kshevetskiy #define GPIO19_FLASH_MODE_CFG			BIT(3)
208*87b42c8bSMikhail Kshevetskiy #define GPIO18_FLASH_MODE_CFG			BIT(2)
209*87b42c8bSMikhail Kshevetskiy #define GPIO17_FLASH_MODE_CFG			BIT(1)
210*87b42c8bSMikhail Kshevetskiy #define GPIO16_FLASH_MODE_CFG			BIT(0)
211*87b42c8bSMikhail Kshevetskiy 
212*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO(gpio, mux_val)			\
213*87b42c8bSMikhail Kshevetskiy 	{							\
214*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),					\
215*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {					\
216*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
217*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
218*87b42c8bSMikhail Kshevetskiy 			(mux_val),				\
219*87b42c8bSMikhail Kshevetskiy 			(mux_val)				\
220*87b42c8bSMikhail Kshevetskiy 		},						\
221*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,				\
222*87b42c8bSMikhail Kshevetskiy 	}
223*87b42c8bSMikhail Kshevetskiy 
224*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO_EXT(gpio, mux_val, smux_val)	\
225*87b42c8bSMikhail Kshevetskiy 	{							\
226*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),					\
227*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {					\
228*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
229*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
230*87b42c8bSMikhail Kshevetskiy 			(mux_val),				\
231*87b42c8bSMikhail Kshevetskiy 			0					\
232*87b42c8bSMikhail Kshevetskiy 		},						\
233*87b42c8bSMikhail Kshevetskiy 		.regmap[1] = {					\
234*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
235*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
236*87b42c8bSMikhail Kshevetskiy 			(smux_val),				\
237*87b42c8bSMikhail Kshevetskiy 			(smux_val)				\
238*87b42c8bSMikhail Kshevetskiy 		},						\
239*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 2,				\
240*87b42c8bSMikhail Kshevetskiy 	}
241*87b42c8bSMikhail Kshevetskiy 
242*87b42c8bSMikhail Kshevetskiy /* PWM */
243*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM(gpio, mux_val)			\
244*87b42c8bSMikhail Kshevetskiy 	{							\
245*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),					\
246*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {					\
247*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_PWM_MUX,			\
248*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG,		\
249*87b42c8bSMikhail Kshevetskiy 			(mux_val),				\
250*87b42c8bSMikhail Kshevetskiy 			(mux_val)				\
251*87b42c8bSMikhail Kshevetskiy 		},						\
252*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,				\
253*87b42c8bSMikhail Kshevetskiy 	}
254*87b42c8bSMikhail Kshevetskiy 
255*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT(gpio, mux_val)			\
256*87b42c8bSMikhail Kshevetskiy 	{							\
257*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),					\
258*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {					\
259*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
260*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
261*87b42c8bSMikhail Kshevetskiy 			(mux_val),				\
262*87b42c8bSMikhail Kshevetskiy 			(mux_val)				\
263*87b42c8bSMikhail Kshevetskiy 		},						\
264*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,				\
265*87b42c8bSMikhail Kshevetskiy 	}
266*87b42c8bSMikhail Kshevetskiy 
267*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT_SEC(gpio, mux_val, smux_val)	\
268*87b42c8bSMikhail Kshevetskiy 	{							\
269*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),					\
270*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {					\
271*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_PWM_EXT_MUX,		\
272*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_FLASH_MODE_CFG_EXT,		\
273*87b42c8bSMikhail Kshevetskiy 			(mux_val),				\
274*87b42c8bSMikhail Kshevetskiy 			(mux_val)				\
275*87b42c8bSMikhail Kshevetskiy 		},						\
276*87b42c8bSMikhail Kshevetskiy 		.regmap[1] = {					\
277*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,			\
278*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,			\
279*87b42c8bSMikhail Kshevetskiy 			(smux_val),				\
280*87b42c8bSMikhail Kshevetskiy 			(smux_val)				\
281*87b42c8bSMikhail Kshevetskiy 		},						\
282*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 2,				\
283*87b42c8bSMikhail Kshevetskiy 	}
284*87b42c8bSMikhail Kshevetskiy 
285*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED0(gpio, mux_val, map_mask, map_val)	\
286*87b42c8bSMikhail Kshevetskiy 	{								\
287*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),						\
288*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {						\
289*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
290*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,				\
291*87b42c8bSMikhail Kshevetskiy 			(mux_val),					\
292*87b42c8bSMikhail Kshevetskiy 			(mux_val),					\
293*87b42c8bSMikhail Kshevetskiy 		},							\
294*87b42c8bSMikhail Kshevetskiy 		.regmap[1] = {						\
295*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
296*87b42c8bSMikhail Kshevetskiy 			REG_LAN_LED0_MAPPING,				\
297*87b42c8bSMikhail Kshevetskiy 			(map_mask),					\
298*87b42c8bSMikhail Kshevetskiy 			(map_val),					\
299*87b42c8bSMikhail Kshevetskiy 		},							\
300*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 2,					\
301*87b42c8bSMikhail Kshevetskiy 	}
302*87b42c8bSMikhail Kshevetskiy 
303*87b42c8bSMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED1(gpio, mux_val, map_mask, map_val)	\
304*87b42c8bSMikhail Kshevetskiy 	{								\
305*87b42c8bSMikhail Kshevetskiy 		.name = (gpio),						\
306*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {						\
307*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
308*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_2ND_I2C_MODE,				\
309*87b42c8bSMikhail Kshevetskiy 			(mux_val),					\
310*87b42c8bSMikhail Kshevetskiy 			(mux_val),					\
311*87b42c8bSMikhail Kshevetskiy 		},							\
312*87b42c8bSMikhail Kshevetskiy 		.regmap[1] = {						\
313*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,				\
314*87b42c8bSMikhail Kshevetskiy 			REG_LAN_LED1_MAPPING,				\
315*87b42c8bSMikhail Kshevetskiy 			(map_mask),					\
316*87b42c8bSMikhail Kshevetskiy 			(map_val),					\
317*87b42c8bSMikhail Kshevetskiy 		},							\
318*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 2,					\
319*87b42c8bSMikhail Kshevetskiy 	}
320*87b42c8bSMikhail Kshevetskiy 
321*87b42c8bSMikhail Kshevetskiy static const struct pinctrl_pin_desc pinctrl_pins[] = {
322*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(0, "gpio0"),
323*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(1, "gpio1"),
324*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(2, "gpio2"),
325*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(3, "gpio3"),
326*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(4, "gpio4"),
327*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(5, "gpio5"),
328*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(6, "gpio6"),
329*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(7, "gpio7"),
330*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(8, "gpio8"),
331*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(9, "gpio9"),
332*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(10, "gpio10"),
333*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(11, "gpio11"),
334*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(12, "gpio12"),
335*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(13, "gpio13"),
336*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(14, "gpio14"),
337*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(15, "gpio15"),
338*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(16, "gpio16"),
339*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(17, "gpio17"),
340*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(18, "gpio18"),
341*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(19, "gpio19"),
342*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(20, "gpio20"),
343*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(21, "gpio21"),
344*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(22, "gpio22"),
345*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(23, "gpio23"),
346*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(24, "gpio24"),
347*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(25, "gpio25"),
348*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(26, "gpio26"),
349*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(27, "gpio27"),
350*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(28, "pcie_reset0"),	/* GPIO28 */
351*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(29, "pcie_reset1"),	/* GPIO29 */
352*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(30, "i2c_scl"),	/* GPIO30 */
353*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(31, "i2c_sda"),	/* GPIO31 */
354*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(32, "spi_clk"),	/* GPIO32 */
355*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(33, "spi_cs"),	/* GPIO33 */
356*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(34, "spi_mosi"),	/* GPIO34 */
357*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(35, "spi_miso"),	/* GPIO35 */
358*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(36, "uart_txd"),	/* GPIO36 */
359*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN(37, "uart_rxd"),	/* GPIO37 */
360*87b42c8bSMikhail Kshevetskiy };
361*87b42c8bSMikhail Kshevetskiy 
362*87b42c8bSMikhail Kshevetskiy static const int pon_pins[] = { 14, 15, 16, 17, 18, 19 };
363*87b42c8bSMikhail Kshevetskiy static const int sipo_pins[] = { 20, 21 };
364*87b42c8bSMikhail Kshevetskiy static const int sipo_rclk_pins[] = { 20, 21, 26 };
365*87b42c8bSMikhail Kshevetskiy static const int mdio_pins[] = { 30, 31 };
366*87b42c8bSMikhail Kshevetskiy static const int hsuart_pins[] = { 16, 17 };
367*87b42c8bSMikhail Kshevetskiy static const int hsuart_cts_rts_pins[] = { 14, 15 };
368*87b42c8bSMikhail Kshevetskiy static const int i2c_pins[] = { 30, 31 };
369*87b42c8bSMikhail Kshevetskiy static const int jtag_udi_pins[] = { 7, 8, 9, 10, 11 };
370*87b42c8bSMikhail Kshevetskiy static const int jtag_dfd_pins[] = { 7, 8, 9, 10, 11 };
371*87b42c8bSMikhail Kshevetskiy static const int pcm1_pins[] = { 22, 23, 24, 25 };
372*87b42c8bSMikhail Kshevetskiy static const int pcm2_pins[] = { 1, 2, 3, 4 };
373*87b42c8bSMikhail Kshevetskiy static const int spi_pins[] = { 32, 33, 34, 35 };
374*87b42c8bSMikhail Kshevetskiy static const int spi_quad_pins[] = { 2, 3 };
375*87b42c8bSMikhail Kshevetskiy static const int spi_cs1_pins[] = { 4 };
376*87b42c8bSMikhail Kshevetskiy static const int pnand_pins[] = {
377*87b42c8bSMikhail Kshevetskiy 	1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 27, 32, 33, 34, 35
378*87b42c8bSMikhail Kshevetskiy };
379*87b42c8bSMikhail Kshevetskiy static const int gpio0_pins[] = { 0 };
380*87b42c8bSMikhail Kshevetskiy static const int gpio1_pins[] = { 1 };
381*87b42c8bSMikhail Kshevetskiy static const int gpio2_pins[] = { 2 };
382*87b42c8bSMikhail Kshevetskiy static const int gpio3_pins[] = { 3 };
383*87b42c8bSMikhail Kshevetskiy static const int gpio4_pins[] = { 4 };
384*87b42c8bSMikhail Kshevetskiy static const int gpio5_pins[] = { 5 };
385*87b42c8bSMikhail Kshevetskiy static const int gpio6_pins[] = { 6 };
386*87b42c8bSMikhail Kshevetskiy static const int gpio7_pins[] = { 7 };
387*87b42c8bSMikhail Kshevetskiy static const int gpio8_pins[] = { 8 };
388*87b42c8bSMikhail Kshevetskiy static const int gpio9_pins[] = { 9 };
389*87b42c8bSMikhail Kshevetskiy static const int gpio10_pins[] = { 10 };
390*87b42c8bSMikhail Kshevetskiy static const int gpio11_pins[] = { 11 };
391*87b42c8bSMikhail Kshevetskiy static const int gpio12_pins[] = { 12 };
392*87b42c8bSMikhail Kshevetskiy static const int gpio13_pins[] = { 13 };
393*87b42c8bSMikhail Kshevetskiy static const int gpio14_pins[] = { 14 };
394*87b42c8bSMikhail Kshevetskiy static const int gpio15_pins[] = { 15 };
395*87b42c8bSMikhail Kshevetskiy static const int gpio16_pins[] = { 16 };
396*87b42c8bSMikhail Kshevetskiy static const int gpio17_pins[] = { 17 };
397*87b42c8bSMikhail Kshevetskiy static const int gpio18_pins[] = { 18 };
398*87b42c8bSMikhail Kshevetskiy static const int gpio19_pins[] = { 19 };
399*87b42c8bSMikhail Kshevetskiy static const int gpio20_pins[] = { 20 };
400*87b42c8bSMikhail Kshevetskiy static const int gpio21_pins[] = { 21 };
401*87b42c8bSMikhail Kshevetskiy static const int gpio22_pins[] = { 22 };
402*87b42c8bSMikhail Kshevetskiy static const int gpio23_pins[] = { 23 };
403*87b42c8bSMikhail Kshevetskiy static const int gpio24_pins[] = { 24 };
404*87b42c8bSMikhail Kshevetskiy static const int gpio25_pins[] = { 25 };
405*87b42c8bSMikhail Kshevetskiy static const int gpio26_pins[] = { 26 };
406*87b42c8bSMikhail Kshevetskiy static const int gpio27_pins[] = { 27 };
407*87b42c8bSMikhail Kshevetskiy static const int gpio28_pins[] = { 28 };
408*87b42c8bSMikhail Kshevetskiy static const int gpio29_pins[] = { 29 };
409*87b42c8bSMikhail Kshevetskiy static const int gpio30_pins[] = { 30 };
410*87b42c8bSMikhail Kshevetskiy static const int gpio31_pins[] = { 31 };
411*87b42c8bSMikhail Kshevetskiy static const int gpio32_pins[] = { 32 };
412*87b42c8bSMikhail Kshevetskiy static const int gpio33_pins[] = { 33 };
413*87b42c8bSMikhail Kshevetskiy static const int gpio34_pins[] = { 34 };
414*87b42c8bSMikhail Kshevetskiy static const int gpio35_pins[] = { 35 };
415*87b42c8bSMikhail Kshevetskiy static const int gpio36_pins[] = { 36 };
416*87b42c8bSMikhail Kshevetskiy static const int gpio37_pins[] = { 37 };
417*87b42c8bSMikhail Kshevetskiy static const int pcie_reset0_pins[] = { 28 };
418*87b42c8bSMikhail Kshevetskiy static const int pcie_reset1_pins[] = { 29 };
419*87b42c8bSMikhail Kshevetskiy 
420*87b42c8bSMikhail Kshevetskiy static const struct pingroup pinctrl_groups[] = {
421*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pon", pon),
422*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("sipo", sipo),
423*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("sipo_rclk", sipo_rclk),
424*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("mdio", mdio),
425*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("hsuart", hsuart),
426*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("hsuart_cts_rts", hsuart_cts_rts),
427*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("i2c", i2c),
428*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("jtag_udi", jtag_udi),
429*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("jtag_dfd", jtag_dfd),
430*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm1", pcm1),
431*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcm2", pcm2),
432*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi", spi),
433*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi_quad", spi_quad),
434*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("spi_cs1", spi_cs1),
435*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pnand", pnand),
436*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio0", gpio0),
437*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio1", gpio1),
438*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio2", gpio2),
439*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio3", gpio3),
440*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio4", gpio4),
441*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio5", gpio5),
442*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio6", gpio6),
443*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio7", gpio7),
444*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio8", gpio8),
445*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio9", gpio9),
446*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio10", gpio10),
447*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio11", gpio11),
448*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio12", gpio12),
449*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio13", gpio13),
450*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio14", gpio14),
451*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio15", gpio15),
452*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio16", gpio16),
453*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio17", gpio17),
454*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio18", gpio18),
455*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio19", gpio19),
456*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio20", gpio20),
457*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio21", gpio21),
458*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio22", gpio22),
459*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio23", gpio23),
460*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio24", gpio24),
461*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio25", gpio25),
462*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio26", gpio26),
463*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio27", gpio27),
464*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio28", gpio28),
465*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio29", gpio29),
466*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio30", gpio30),
467*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio31", gpio31),
468*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio32", gpio32),
469*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio33", gpio33),
470*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio34", gpio34),
471*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio35", gpio35),
472*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio36", gpio36),
473*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("gpio37", gpio37),
474*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcie_reset0", pcie_reset0),
475*87b42c8bSMikhail Kshevetskiy 	PINCTRL_PIN_GROUP("pcie_reset1", pcie_reset1),
476*87b42c8bSMikhail Kshevetskiy };
477*87b42c8bSMikhail Kshevetskiy 
478*87b42c8bSMikhail Kshevetskiy /* shared */
479*87b42c8bSMikhail Kshevetskiy static const char *const pon_groups[] = { "pon" };
480*87b42c8bSMikhail Kshevetskiy static const char *const sipo_groups[] = { "sipo", "sipo_rclk" };
481*87b42c8bSMikhail Kshevetskiy static const char *const mdio_groups[] = { "mdio" };
482*87b42c8bSMikhail Kshevetskiy static const char *const uart_groups[] = {
483*87b42c8bSMikhail Kshevetskiy 	"hsuart", "hsuart_cts_rts"
484*87b42c8bSMikhail Kshevetskiy };
485*87b42c8bSMikhail Kshevetskiy static const char *const jtag_groups[] = { "jtag_udi", "jtag_dfd" };
486*87b42c8bSMikhail Kshevetskiy static const char *const pcm_groups[] = { "pcm1", "pcm2" };
487*87b42c8bSMikhail Kshevetskiy static const char *const spi_groups[] = { "spi_quad", "spi_cs1" };
488*87b42c8bSMikhail Kshevetskiy static const char *const pnand_groups[] = { "pnand" };
489*87b42c8bSMikhail Kshevetskiy static const char *const gpio_groups[] = {
490*87b42c8bSMikhail Kshevetskiy 	"gpio28", "gpio29", "gpio30", "gpio31", "gpio32",
491*87b42c8bSMikhail Kshevetskiy 	"gpio33", "gpio34", "gpio35", "gpio36", "gpio37"
492*87b42c8bSMikhail Kshevetskiy };
493*87b42c8bSMikhail Kshevetskiy static const char *const pcie_reset_groups[] = {
494*87b42c8bSMikhail Kshevetskiy 	"pcie_reset0", "pcie_reset1"
495*87b42c8bSMikhail Kshevetskiy };
496*87b42c8bSMikhail Kshevetskiy static const char *const pwm_groups[] = {
497*87b42c8bSMikhail Kshevetskiy 	"gpio0",  "gpio1",  "gpio2",  "gpio3",  "gpio4",  "gpio5",
498*87b42c8bSMikhail Kshevetskiy 	"gpio6",  "gpio7",  "gpio8",  "gpio9",  "gpio10", "gpio11",
499*87b42c8bSMikhail Kshevetskiy 	"gpio12", "gpio13", "gpio14", "gpio15", "gpio16", "gpio17",
500*87b42c8bSMikhail Kshevetskiy 	"gpio18", "gpio19", "gpio20", "gpio21", "gpio22", "gpio23",
501*87b42c8bSMikhail Kshevetskiy 	"gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29",
502*87b42c8bSMikhail Kshevetskiy 	"gpio30", "gpio31", "gpio36", "gpio37"
503*87b42c8bSMikhail Kshevetskiy };
504*87b42c8bSMikhail Kshevetskiy static const char *const phy1_led0_groups[] = {
505*87b42c8bSMikhail Kshevetskiy 	"gpio8", "gpio9", "gpio10", "gpio11"
506*87b42c8bSMikhail Kshevetskiy };
507*87b42c8bSMikhail Kshevetskiy static const char *const phy2_led0_groups[] = {
508*87b42c8bSMikhail Kshevetskiy 	"gpio8", "gpio9", "gpio10", "gpio11"
509*87b42c8bSMikhail Kshevetskiy };
510*87b42c8bSMikhail Kshevetskiy static const char *const phy3_led0_groups[] = {
511*87b42c8bSMikhail Kshevetskiy 	"gpio8", "gpio9", "gpio10", "gpio11"
512*87b42c8bSMikhail Kshevetskiy };
513*87b42c8bSMikhail Kshevetskiy static const char *const phy4_led0_groups[] = {
514*87b42c8bSMikhail Kshevetskiy 	"gpio8", "gpio9", "gpio10", "gpio11"
515*87b42c8bSMikhail Kshevetskiy };
516*87b42c8bSMikhail Kshevetskiy static const char *const phy1_led1_groups[] = {
517*87b42c8bSMikhail Kshevetskiy 	"gpio4", "gpio5", "gpio6", "gpio7"
518*87b42c8bSMikhail Kshevetskiy };
519*87b42c8bSMikhail Kshevetskiy static const char *const phy2_led1_groups[] = {
520*87b42c8bSMikhail Kshevetskiy 	"gpio4", "gpio5", "gpio6", "gpio7"
521*87b42c8bSMikhail Kshevetskiy };
522*87b42c8bSMikhail Kshevetskiy static const char *const phy3_led1_groups[] = {
523*87b42c8bSMikhail Kshevetskiy 	"gpio4", "gpio5", "gpio6", "gpio7"
524*87b42c8bSMikhail Kshevetskiy };
525*87b42c8bSMikhail Kshevetskiy static const char *const phy4_led1_groups[] = {
526*87b42c8bSMikhail Kshevetskiy 	"gpio4", "gpio5", "gpio6", "gpio7"
527*87b42c8bSMikhail Kshevetskiy };
528*87b42c8bSMikhail Kshevetskiy 
529*87b42c8bSMikhail Kshevetskiy /* shared */
530*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pon_func_group[] = {
531*87b42c8bSMikhail Kshevetskiy 	{
532*87b42c8bSMikhail Kshevetskiy 		.name = "pon",
533*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
534*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
535*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
536*87b42c8bSMikhail Kshevetskiy 			GPIO_PON_MODE_MASK,
537*87b42c8bSMikhail Kshevetskiy 			GPIO_PON_MODE_MASK
538*87b42c8bSMikhail Kshevetskiy 		},
539*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
540*87b42c8bSMikhail Kshevetskiy 	},
541*87b42c8bSMikhail Kshevetskiy };
542*87b42c8bSMikhail Kshevetskiy 
543*87b42c8bSMikhail Kshevetskiy /* shared */
544*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group sipo_func_group[] = {
545*87b42c8bSMikhail Kshevetskiy 	{
546*87b42c8bSMikhail Kshevetskiy 		.name = "sipo",
547*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
548*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
549*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
550*87b42c8bSMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,
551*87b42c8bSMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK
552*87b42c8bSMikhail Kshevetskiy 		},
553*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
554*87b42c8bSMikhail Kshevetskiy 	}, {
555*87b42c8bSMikhail Kshevetskiy 		.name = "sipo_rclk",
556*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
557*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
558*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
559*87b42c8bSMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK,
560*87b42c8bSMikhail Kshevetskiy 			GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK
561*87b42c8bSMikhail Kshevetskiy 		},
562*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
563*87b42c8bSMikhail Kshevetskiy 	},
564*87b42c8bSMikhail Kshevetskiy };
565*87b42c8bSMikhail Kshevetskiy 
566*87b42c8bSMikhail Kshevetskiy /*
567*87b42c8bSMikhail Kshevetskiy  * On AN7563 the SMI master (MDC/MDIO) is shared with the I2C_SCL/I2C_SDA
568*87b42c8bSMikhail Kshevetskiy  * pads and selected via the SGMII MDIO mode bit. I2C is the default pad
569*87b42c8bSMikhail Kshevetskiy  * function (no mux bit).
570*87b42c8bSMikhail Kshevetskiy  */
571*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group mdio_func_group[] = {
572*87b42c8bSMikhail Kshevetskiy 	{
573*87b42c8bSMikhail Kshevetskiy 		.name = "mdio",
574*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
575*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
576*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
577*87b42c8bSMikhail Kshevetskiy 			GPIO_SGMII_MDIO_MODE_MASK,
578*87b42c8bSMikhail Kshevetskiy 			GPIO_SGMII_MDIO_MODE_MASK
579*87b42c8bSMikhail Kshevetskiy 		},
580*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
581*87b42c8bSMikhail Kshevetskiy 	},
582*87b42c8bSMikhail Kshevetskiy };
583*87b42c8bSMikhail Kshevetskiy 
584*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group uart_func_group[] = {
585*87b42c8bSMikhail Kshevetskiy 	{
586*87b42c8bSMikhail Kshevetskiy 		.name = "hsuart",
587*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
588*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
589*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
590*87b42c8bSMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
591*87b42c8bSMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK
592*87b42c8bSMikhail Kshevetskiy 		},
593*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
594*87b42c8bSMikhail Kshevetskiy 	},
595*87b42c8bSMikhail Kshevetskiy 	{
596*87b42c8bSMikhail Kshevetskiy 		.name = "hsuart_cts_rts",
597*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
598*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
599*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
600*87b42c8bSMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK,
601*87b42c8bSMikhail Kshevetskiy 			GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK
602*87b42c8bSMikhail Kshevetskiy 		},
603*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
604*87b42c8bSMikhail Kshevetskiy 	},
605*87b42c8bSMikhail Kshevetskiy };
606*87b42c8bSMikhail Kshevetskiy 
607*87b42c8bSMikhail Kshevetskiy /* shared */
608*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group jtag_func_group[] = {
609*87b42c8bSMikhail Kshevetskiy 	{
610*87b42c8bSMikhail Kshevetskiy 		.name = "jtag_udi",
611*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
612*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
613*87b42c8bSMikhail Kshevetskiy 			REG_NPU_UART_EN,
614*87b42c8bSMikhail Kshevetskiy 			JTAG_UDI_EN_MASK,
615*87b42c8bSMikhail Kshevetskiy 			JTAG_UDI_EN_MASK
616*87b42c8bSMikhail Kshevetskiy 		},
617*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
618*87b42c8bSMikhail Kshevetskiy 	}, {
619*87b42c8bSMikhail Kshevetskiy 		.name = "jtag_dfd",
620*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
621*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
622*87b42c8bSMikhail Kshevetskiy 			REG_NPU_UART_EN,
623*87b42c8bSMikhail Kshevetskiy 			JTAG_DFD_EN_MASK,
624*87b42c8bSMikhail Kshevetskiy 			JTAG_DFD_EN_MASK
625*87b42c8bSMikhail Kshevetskiy 		},
626*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
627*87b42c8bSMikhail Kshevetskiy 	},
628*87b42c8bSMikhail Kshevetskiy };
629*87b42c8bSMikhail Kshevetskiy 
630*87b42c8bSMikhail Kshevetskiy /* shared */
631*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_func_group[] = {
632*87b42c8bSMikhail Kshevetskiy 	{
633*87b42c8bSMikhail Kshevetskiy 		.name = "pcm1",
634*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
635*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
636*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
637*87b42c8bSMikhail Kshevetskiy 			GPIO_PCM1_MODE_MASK,
638*87b42c8bSMikhail Kshevetskiy 			GPIO_PCM1_MODE_MASK
639*87b42c8bSMikhail Kshevetskiy 		},
640*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
641*87b42c8bSMikhail Kshevetskiy 	}, {
642*87b42c8bSMikhail Kshevetskiy 		.name = "pcm2",
643*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
644*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
645*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
646*87b42c8bSMikhail Kshevetskiy 			GPIO_PCM2_MODE_MASK,
647*87b42c8bSMikhail Kshevetskiy 			GPIO_PCM2_MODE_MASK
648*87b42c8bSMikhail Kshevetskiy 		},
649*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
650*87b42c8bSMikhail Kshevetskiy 	},
651*87b42c8bSMikhail Kshevetskiy };
652*87b42c8bSMikhail Kshevetskiy 
653*87b42c8bSMikhail Kshevetskiy /* shared */
654*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group spi_func_group[] = {
655*87b42c8bSMikhail Kshevetskiy 	{
656*87b42c8bSMikhail Kshevetskiy 		.name = "spi_quad",
657*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
658*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
659*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
660*87b42c8bSMikhail Kshevetskiy 			GPIO_SPI_QUAD_MODE_MASK,
661*87b42c8bSMikhail Kshevetskiy 			GPIO_SPI_QUAD_MODE_MASK
662*87b42c8bSMikhail Kshevetskiy 		},
663*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
664*87b42c8bSMikhail Kshevetskiy 	}, {
665*87b42c8bSMikhail Kshevetskiy 		.name = "spi_cs1",
666*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
667*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
668*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_SPI_CS1_MODE,
669*87b42c8bSMikhail Kshevetskiy 			GPIO_SPI_CS1_MODE_MASK,
670*87b42c8bSMikhail Kshevetskiy 			GPIO_SPI_CS1_MODE_MASK
671*87b42c8bSMikhail Kshevetskiy 		},
672*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
673*87b42c8bSMikhail Kshevetskiy 	},
674*87b42c8bSMikhail Kshevetskiy };
675*87b42c8bSMikhail Kshevetskiy 
676*87b42c8bSMikhail Kshevetskiy /* shared */
677*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pnand_func_group[] = {
678*87b42c8bSMikhail Kshevetskiy 	{
679*87b42c8bSMikhail Kshevetskiy 		.name = "pnand",
680*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
681*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
682*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
683*87b42c8bSMikhail Kshevetskiy 			GPIO_PARALLEL_NAND_MODE_MASK,
684*87b42c8bSMikhail Kshevetskiy 			GPIO_PARALLEL_NAND_MODE_MASK
685*87b42c8bSMikhail Kshevetskiy 		},
686*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
687*87b42c8bSMikhail Kshevetskiy 	},
688*87b42c8bSMikhail Kshevetskiy };
689*87b42c8bSMikhail Kshevetskiy 
690*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group gpio_func_group[] = {
691*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio28", GPIO28_FLASH_MODE_CFG,
692*87b42c8bSMikhail Kshevetskiy 				GPIO_PCIE_RESET0_MASK),
693*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio29", GPIO29_FLASH_MODE_CFG,
694*87b42c8bSMikhail Kshevetskiy 				GPIO_PCIE_RESET1_MASK),
695*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio30", GPIO30_FLASH_MODE_CFG,
696*87b42c8bSMikhail Kshevetskiy 				I2C_SCL_GPIO_MODE_MASK),
697*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio31", GPIO31_FLASH_MODE_CFG,
698*87b42c8bSMikhail Kshevetskiy 				I2C_SDA_GPIO_MODE_MASK),
699*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO("gpio32", SPI_CLK_GPIO_MODE_MASK),
700*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO("gpio33", SPI_CS_GPIO_MODE_MASK),
701*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO("gpio34", SPI_MOSI_GPIO_MODE_MASK),
702*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO("gpio35", SPI_MISO_GPIO_MODE_MASK),
703*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio36", GPIO36_FLASH_MODE_CFG,
704*87b42c8bSMikhail Kshevetskiy 				UART_TXD_GPIO_MODE_MASK),
705*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_GPIO_EXT("gpio37", GPIO37_FLASH_MODE_CFG,
706*87b42c8bSMikhail Kshevetskiy 				UART_RXD_GPIO_MODE_MASK),
707*87b42c8bSMikhail Kshevetskiy };
708*87b42c8bSMikhail Kshevetskiy 
709*87b42c8bSMikhail Kshevetskiy /*
710*87b42c8bSMikhail Kshevetskiy  * On AN7563 a set GPIO_PCIE_RESET{0,1} bit routes the pad to its GPIO
711*87b42c8bSMikhail Kshevetskiy  * function, so the PCIe reset function must clear it.
712*87b42c8bSMikhail Kshevetskiy  */
713*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = {
714*87b42c8bSMikhail Kshevetskiy 	{
715*87b42c8bSMikhail Kshevetskiy 		.name = "pcie_reset0",
716*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
717*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
718*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
719*87b42c8bSMikhail Kshevetskiy 			GPIO_PCIE_RESET0_MASK,
720*87b42c8bSMikhail Kshevetskiy 			0
721*87b42c8bSMikhail Kshevetskiy 		},
722*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
723*87b42c8bSMikhail Kshevetskiy 	}, {
724*87b42c8bSMikhail Kshevetskiy 		.name = "pcie_reset1",
725*87b42c8bSMikhail Kshevetskiy 		.regmap[0] = {
726*87b42c8bSMikhail Kshevetskiy 			AIROHA_FUNC_MUX,
727*87b42c8bSMikhail Kshevetskiy 			REG_GPIO_PON_MODE,
728*87b42c8bSMikhail Kshevetskiy 			GPIO_PCIE_RESET1_MASK,
729*87b42c8bSMikhail Kshevetskiy 			0
730*87b42c8bSMikhail Kshevetskiy 		},
731*87b42c8bSMikhail Kshevetskiy 		.regmap_size = 1,
732*87b42c8bSMikhail Kshevetskiy 	},
733*87b42c8bSMikhail Kshevetskiy };
734*87b42c8bSMikhail Kshevetskiy 
735*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pwm_func_group[] = {
736*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio0", GPIO0_FLASH_MODE_CFG),
737*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio1", GPIO1_FLASH_MODE_CFG),
738*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio2", GPIO2_FLASH_MODE_CFG),
739*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio3", GPIO3_FLASH_MODE_CFG),
740*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio4", GPIO4_FLASH_MODE_CFG),
741*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio5", GPIO5_FLASH_MODE_CFG),
742*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio6", GPIO6_FLASH_MODE_CFG),
743*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio7", GPIO7_FLASH_MODE_CFG),
744*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio8", GPIO8_FLASH_MODE_CFG),
745*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio9", GPIO9_FLASH_MODE_CFG),
746*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio10", GPIO10_FLASH_MODE_CFG),
747*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio11", GPIO11_FLASH_MODE_CFG),
748*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio12", GPIO12_FLASH_MODE_CFG),
749*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio13", GPIO13_FLASH_MODE_CFG),
750*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio14", GPIO14_FLASH_MODE_CFG),
751*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM("gpio15", GPIO15_FLASH_MODE_CFG),
752*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio16", GPIO16_FLASH_MODE_CFG),
753*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio17", GPIO17_FLASH_MODE_CFG),
754*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio18", GPIO18_FLASH_MODE_CFG),
755*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio19", GPIO19_FLASH_MODE_CFG),
756*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio20", GPIO20_FLASH_MODE_CFG),
757*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio21", GPIO21_FLASH_MODE_CFG),
758*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio22", GPIO22_FLASH_MODE_CFG),
759*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio23", GPIO23_FLASH_MODE_CFG),
760*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio24", GPIO24_FLASH_MODE_CFG),
761*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio25", GPIO25_FLASH_MODE_CFG),
762*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio26", GPIO26_FLASH_MODE_CFG),
763*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT("gpio27", GPIO27_FLASH_MODE_CFG),
764*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio28", GPIO28_FLASH_MODE_CFG,
765*87b42c8bSMikhail Kshevetskiy 				   GPIO_PCIE_RESET0_MASK),
766*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio29", GPIO29_FLASH_MODE_CFG,
767*87b42c8bSMikhail Kshevetskiy 				   GPIO_PCIE_RESET1_MASK),
768*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio30", GPIO30_FLASH_MODE_CFG,
769*87b42c8bSMikhail Kshevetskiy 				   I2C_SCL_GPIO_MODE_MASK),
770*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio31", GPIO31_FLASH_MODE_CFG,
771*87b42c8bSMikhail Kshevetskiy 				   I2C_SDA_GPIO_MODE_MASK),
772*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio36", GPIO36_FLASH_MODE_CFG,
773*87b42c8bSMikhail Kshevetskiy 				   UART_TXD_GPIO_MODE_MASK),
774*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PWM_EXT_SEC("gpio37", GPIO37_FLASH_MODE_CFG,
775*87b42c8bSMikhail Kshevetskiy 				   UART_RXD_GPIO_MODE_MASK),
776*87b42c8bSMikhail Kshevetskiy };
777*87b42c8bSMikhail Kshevetskiy 
778*87b42c8bSMikhail Kshevetskiy /*
779*87b42c8bSMikhail Kshevetskiy  * LED pad mapping (datasheet table 4-9):
780*87b42c8bSMikhail Kshevetskiy  * GPIO8: LAN0_LED0, GPIO9: LAN1_LED0, GPIO10: LAN2_LED0, GPIO11: LAN3_LED0
781*87b42c8bSMikhail Kshevetskiy  * GPIO7: LAN0_LED1, GPIO6: LAN1_LED1, GPIO5: LAN2_LED1, GPIO4: LAN3_LED1
782*87b42c8bSMikhail Kshevetskiy  */
783*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
784*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio8", GPIO_LAN0_LED0_MODE_MASK,
785*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),
786*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio9", GPIO_LAN1_LED0_MODE_MASK,
787*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),
788*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio10", GPIO_LAN2_LED0_MODE_MASK,
789*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),
790*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio11", GPIO_LAN3_LED0_MODE_MASK,
791*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),
792*87b42c8bSMikhail Kshevetskiy };
793*87b42c8bSMikhail Kshevetskiy 
794*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
795*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio8", GPIO_LAN0_LED0_MODE_MASK,
796*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),
797*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio9", GPIO_LAN1_LED0_MODE_MASK,
798*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),
799*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio10", GPIO_LAN2_LED0_MODE_MASK,
800*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),
801*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio11", GPIO_LAN3_LED0_MODE_MASK,
802*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),
803*87b42c8bSMikhail Kshevetskiy };
804*87b42c8bSMikhail Kshevetskiy 
805*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
806*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio8", GPIO_LAN0_LED0_MODE_MASK,
807*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),
808*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio9", GPIO_LAN1_LED0_MODE_MASK,
809*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),
810*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio10", GPIO_LAN2_LED0_MODE_MASK,
811*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),
812*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio11", GPIO_LAN3_LED0_MODE_MASK,
813*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),
814*87b42c8bSMikhail Kshevetskiy };
815*87b42c8bSMikhail Kshevetskiy 
816*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
817*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio8", GPIO_LAN0_LED0_MODE_MASK,
818*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),
819*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio9", GPIO_LAN1_LED0_MODE_MASK,
820*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),
821*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio10", GPIO_LAN2_LED0_MODE_MASK,
822*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),
823*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED0("gpio11", GPIO_LAN3_LED0_MODE_MASK,
824*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),
825*87b42c8bSMikhail Kshevetskiy };
826*87b42c8bSMikhail Kshevetskiy 
827*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
828*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK,
829*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)),
830*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK,
831*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)),
832*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK,
833*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)),
834*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK,
835*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)),
836*87b42c8bSMikhail Kshevetskiy };
837*87b42c8bSMikhail Kshevetskiy 
838*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
839*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK,
840*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)),
841*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK,
842*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)),
843*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK,
844*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)),
845*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK,
846*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)),
847*87b42c8bSMikhail Kshevetskiy };
848*87b42c8bSMikhail Kshevetskiy 
849*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
850*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK,
851*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)),
852*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK,
853*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)),
854*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK,
855*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)),
856*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK,
857*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)),
858*87b42c8bSMikhail Kshevetskiy };
859*87b42c8bSMikhail Kshevetskiy 
860*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
861*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK,
862*87b42c8bSMikhail Kshevetskiy 				LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)),
863*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK,
864*87b42c8bSMikhail Kshevetskiy 				LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)),
865*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK,
866*87b42c8bSMikhail Kshevetskiy 				LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)),
867*87b42c8bSMikhail Kshevetskiy 	AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK,
868*87b42c8bSMikhail Kshevetskiy 				LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)),
869*87b42c8bSMikhail Kshevetskiy };
870*87b42c8bSMikhail Kshevetskiy 
871*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_func pinctrl_funcs[] = {
872*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pon", pon),
873*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("sipo", sipo),
874*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("mdio", mdio),
875*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("uart", uart),
876*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("jtag", jtag),
877*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pcm", pcm),
878*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("spi", spi),
879*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pnand", pnand),
880*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("gpio", gpio),
881*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pcie_reset", pcie_reset),
882*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("pwm", pwm),
883*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy1_led0", phy1_led0),
884*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy2_led0", phy2_led0),
885*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy3_led0", phy3_led0),
886*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy4_led0", phy4_led0),
887*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy1_led1", phy1_led1),
888*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy2_led1", phy2_led1),
889*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy3_led1", phy3_led1),
890*87b42c8bSMikhail Kshevetskiy 	PINCTRL_FUNC_DESC("phy4_led1", phy4_led1),
891*87b42c8bSMikhail Kshevetskiy };
892*87b42c8bSMikhail Kshevetskiy 
893*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pullup_conf[] = {
894*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_GPIO_L_PU, BIT(0)),
895*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_GPIO_L_PU, BIT(1)),
896*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_GPIO_L_PU, BIT(2)),
897*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_GPIO_L_PU, BIT(3)),
898*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_GPIO_L_PU, BIT(4)),
899*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_GPIO_L_PU, BIT(5)),
900*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_GPIO_L_PU, BIT(6)),
901*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_GPIO_L_PU, BIT(7)),
902*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(8, REG_GPIO_L_PU, BIT(8)),
903*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(9, REG_GPIO_L_PU, BIT(9)),
904*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(10, REG_GPIO_L_PU, BIT(10)),
905*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(11, REG_GPIO_L_PU, BIT(11)),
906*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(12, REG_GPIO_L_PU, BIT(12)),
907*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_PU, BIT(13)),
908*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_PU, BIT(14)),
909*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_PU, BIT(15)),
910*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_PU, BIT(16)),
911*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_PU, BIT(17)),
912*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_PU, BIT(18)),
913*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_PU, BIT(19)),
914*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_PU, BIT(20)),
915*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_PU, BIT(21)),
916*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_PU, BIT(22)),
917*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_PU, BIT(23)),
918*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_PU, BIT(24)),
919*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_PU, BIT(25)),
920*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_PU, BIT(26)),
921*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_PU, BIT(27)),
922*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_I2C_SDA_PU, PCIE0_RESET_PU_MASK),
923*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_I2C_SDA_PU, PCIE1_RESET_PU_MASK),
924*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_I2C_SDA_PU, I2C_SCL_PU_MASK),
925*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_I2C_SDA_PU, I2C_SDA_PU_MASK),
926*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_I2C_SDA_PU, SPI_CLK_PU_MASK),
927*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_I2C_SDA_PU, SPI_CS0_PU_MASK),
928*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_I2C_SDA_PU, SPI_MOSI_PU_MASK),
929*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_I2C_SDA_PU, SPI_MISO_PU_MASK),
930*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_I2C_SDA_PU, UART1_TXD_PU_MASK),
931*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_I2C_SDA_PU, UART1_RXD_PU_MASK),
932*87b42c8bSMikhail Kshevetskiy };
933*87b42c8bSMikhail Kshevetskiy 
934*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pulldown_conf[] = {
935*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_GPIO_L_PD, BIT(0)),
936*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_GPIO_L_PD, BIT(1)),
937*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_GPIO_L_PD, BIT(2)),
938*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_GPIO_L_PD, BIT(3)),
939*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_GPIO_L_PD, BIT(4)),
940*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_GPIO_L_PD, BIT(5)),
941*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_GPIO_L_PD, BIT(6)),
942*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_GPIO_L_PD, BIT(7)),
943*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(8, REG_GPIO_L_PD, BIT(8)),
944*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(9, REG_GPIO_L_PD, BIT(9)),
945*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(10, REG_GPIO_L_PD, BIT(10)),
946*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(11, REG_GPIO_L_PD, BIT(11)),
947*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(12, REG_GPIO_L_PD, BIT(12)),
948*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_PD, BIT(13)),
949*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_PD, BIT(14)),
950*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_PD, BIT(15)),
951*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_PD, BIT(16)),
952*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_PD, BIT(17)),
953*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_PD, BIT(18)),
954*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_PD, BIT(19)),
955*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_PD, BIT(20)),
956*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_PD, BIT(21)),
957*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_PD, BIT(22)),
958*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_PD, BIT(23)),
959*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_PD, BIT(24)),
960*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_PD, BIT(25)),
961*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_PD, BIT(26)),
962*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_PD, BIT(27)),
963*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_I2C_SDA_PD, PCIE0_RESET_PD_MASK),
964*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_I2C_SDA_PD, PCIE1_RESET_PD_MASK),
965*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_I2C_SDA_PD, I2C_SCL_PD_MASK),
966*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_I2C_SDA_PD, I2C_SDA_PD_MASK),
967*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_I2C_SDA_PD, SPI_CLK_PD_MASK),
968*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_I2C_SDA_PD, SPI_CS0_PD_MASK),
969*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_I2C_SDA_PD, SPI_MOSI_PD_MASK),
970*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_I2C_SDA_PD, SPI_MISO_PD_MASK),
971*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_I2C_SDA_PD, UART1_TXD_PD_MASK),
972*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_I2C_SDA_PD, UART1_RXD_PD_MASK),
973*87b42c8bSMikhail Kshevetskiy };
974*87b42c8bSMikhail Kshevetskiy 
975*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e2_conf[] = {
976*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_GPIO_L_E2, BIT(0)),
977*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_GPIO_L_E2, BIT(1)),
978*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_GPIO_L_E2, BIT(2)),
979*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_GPIO_L_E2, BIT(3)),
980*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_GPIO_L_E2, BIT(4)),
981*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_GPIO_L_E2, BIT(5)),
982*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_GPIO_L_E2, BIT(6)),
983*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_GPIO_L_E2, BIT(7)),
984*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(8, REG_GPIO_L_E2, BIT(8)),
985*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(9, REG_GPIO_L_E2, BIT(9)),
986*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(10, REG_GPIO_L_E2, BIT(10)),
987*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(11, REG_GPIO_L_E2, BIT(11)),
988*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(12, REG_GPIO_L_E2, BIT(12)),
989*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_E2, BIT(13)),
990*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_E2, BIT(14)),
991*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_E2, BIT(15)),
992*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_E2, BIT(16)),
993*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_E2, BIT(17)),
994*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_E2, BIT(18)),
995*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_E2, BIT(19)),
996*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_E2, BIT(20)),
997*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_E2, BIT(21)),
998*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_E2, BIT(22)),
999*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_E2, BIT(23)),
1000*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_E2, BIT(24)),
1001*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_E2, BIT(25)),
1002*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_E2, BIT(26)),
1003*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_E2, BIT(27)),
1004*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_I2C_SDA_E2, PCIE0_RESET_E2_MASK),
1005*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_I2C_SDA_E2, PCIE1_RESET_E2_MASK),
1006*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_I2C_SDA_E2, I2C_SCL_E2_MASK),
1007*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_I2C_SDA_E2, I2C_SDA_E2_MASK),
1008*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_I2C_SDA_E2, SPI_CLK_E2_MASK),
1009*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_I2C_SDA_E2, SPI_CS0_E2_MASK),
1010*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_I2C_SDA_E2, SPI_MOSI_E2_MASK),
1011*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_I2C_SDA_E2, SPI_MISO_E2_MASK),
1012*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_I2C_SDA_E2, UART1_TXD_E2_MASK),
1013*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_I2C_SDA_E2, UART1_RXD_E2_MASK),
1014*87b42c8bSMikhail Kshevetskiy };
1015*87b42c8bSMikhail Kshevetskiy 
1016*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e4_conf[] = {
1017*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(0, REG_GPIO_L_E4, BIT(0)),
1018*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(1, REG_GPIO_L_E4, BIT(1)),
1019*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(2, REG_GPIO_L_E4, BIT(2)),
1020*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(3, REG_GPIO_L_E4, BIT(3)),
1021*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(4, REG_GPIO_L_E4, BIT(4)),
1022*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(5, REG_GPIO_L_E4, BIT(5)),
1023*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(6, REG_GPIO_L_E4, BIT(6)),
1024*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(7, REG_GPIO_L_E4, BIT(7)),
1025*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(8, REG_GPIO_L_E4, BIT(8)),
1026*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(9, REG_GPIO_L_E4, BIT(9)),
1027*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(10, REG_GPIO_L_E4, BIT(10)),
1028*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(11, REG_GPIO_L_E4, BIT(11)),
1029*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(12, REG_GPIO_L_E4, BIT(12)),
1030*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(13, REG_GPIO_L_E4, BIT(13)),
1031*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(14, REG_GPIO_L_E4, BIT(14)),
1032*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(15, REG_GPIO_L_E4, BIT(15)),
1033*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(16, REG_GPIO_L_E4, BIT(16)),
1034*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(17, REG_GPIO_L_E4, BIT(17)),
1035*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(18, REG_GPIO_L_E4, BIT(18)),
1036*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(19, REG_GPIO_L_E4, BIT(19)),
1037*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(20, REG_GPIO_L_E4, BIT(20)),
1038*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(21, REG_GPIO_L_E4, BIT(21)),
1039*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(22, REG_GPIO_L_E4, BIT(22)),
1040*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(23, REG_GPIO_L_E4, BIT(23)),
1041*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(24, REG_GPIO_L_E4, BIT(24)),
1042*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(25, REG_GPIO_L_E4, BIT(25)),
1043*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(26, REG_GPIO_L_E4, BIT(26)),
1044*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(27, REG_GPIO_L_E4, BIT(27)),
1045*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_I2C_SDA_E4, PCIE0_RESET_E4_MASK),
1046*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_I2C_SDA_E4, PCIE1_RESET_E4_MASK),
1047*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(30, REG_I2C_SDA_E4, I2C_SCL_E4_MASK),
1048*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(31, REG_I2C_SDA_E4, I2C_SDA_E4_MASK),
1049*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(32, REG_I2C_SDA_E4, SPI_CLK_E4_MASK),
1050*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(33, REG_I2C_SDA_E4, SPI_CS0_E4_MASK),
1051*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(34, REG_I2C_SDA_E4, SPI_MOSI_E4_MASK),
1052*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(35, REG_I2C_SDA_E4, SPI_MISO_E4_MASK),
1053*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(36, REG_I2C_SDA_E4, UART1_TXD_E4_MASK),
1054*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(37, REG_I2C_SDA_E4, UART1_RXD_E4_MASK),
1055*87b42c8bSMikhail Kshevetskiy };
1056*87b42c8bSMikhail Kshevetskiy 
1057*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pcie_rst_od_conf[] = {
1058*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(28, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK),
1059*87b42c8bSMikhail Kshevetskiy 	PINCTRL_CONF_DESC(29, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK),
1060*87b42c8bSMikhail Kshevetskiy };
1061*87b42c8bSMikhail Kshevetskiy 
1062*87b42c8bSMikhail Kshevetskiy static const struct airoha_pinctrl_match_data pinctrl_match_data = {
1063*87b42c8bSMikhail Kshevetskiy 	.chip_scu_compatible = "airoha,en7581-chip-scu",
1064*87b42c8bSMikhail Kshevetskiy 	.pinctrl_name = KBUILD_MODNAME,
1065*87b42c8bSMikhail Kshevetskiy 	.pinctrl_owner = THIS_MODULE,
1066*87b42c8bSMikhail Kshevetskiy 	.pins = pinctrl_pins,
1067*87b42c8bSMikhail Kshevetskiy 	.num_pins = ARRAY_SIZE(pinctrl_pins),
1068*87b42c8bSMikhail Kshevetskiy 	.grps = pinctrl_groups,
1069*87b42c8bSMikhail Kshevetskiy 	.num_grps = ARRAY_SIZE(pinctrl_groups),
1070*87b42c8bSMikhail Kshevetskiy 	.funcs = pinctrl_funcs,
1071*87b42c8bSMikhail Kshevetskiy 	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
1072*87b42c8bSMikhail Kshevetskiy 	.confs_info = {
1073*87b42c8bSMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PULLUP] = {
1074*87b42c8bSMikhail Kshevetskiy 			.confs = pinctrl_pullup_conf,
1075*87b42c8bSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pullup_conf),
1076*87b42c8bSMikhail Kshevetskiy 		},
1077*87b42c8bSMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PULLDOWN] = {
1078*87b42c8bSMikhail Kshevetskiy 			.confs = pinctrl_pulldown_conf,
1079*87b42c8bSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pulldown_conf),
1080*87b42c8bSMikhail Kshevetskiy 		},
1081*87b42c8bSMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_DRIVE_E2] = {
1082*87b42c8bSMikhail Kshevetskiy 			.confs = pinctrl_drive_e2_conf,
1083*87b42c8bSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_drive_e2_conf),
1084*87b42c8bSMikhail Kshevetskiy 		},
1085*87b42c8bSMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_DRIVE_E4] = {
1086*87b42c8bSMikhail Kshevetskiy 			.confs = pinctrl_drive_e4_conf,
1087*87b42c8bSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_drive_e4_conf),
1088*87b42c8bSMikhail Kshevetskiy 		},
1089*87b42c8bSMikhail Kshevetskiy 		[AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = {
1090*87b42c8bSMikhail Kshevetskiy 			.confs = pinctrl_pcie_rst_od_conf,
1091*87b42c8bSMikhail Kshevetskiy 			.num_confs = ARRAY_SIZE(pinctrl_pcie_rst_od_conf),
1092*87b42c8bSMikhail Kshevetskiy 		},
1093*87b42c8bSMikhail Kshevetskiy 	},
1094*87b42c8bSMikhail Kshevetskiy };
1095*87b42c8bSMikhail Kshevetskiy 
1096*87b42c8bSMikhail Kshevetskiy static const struct of_device_id airoha_pinctrl_of_match[] = {
1097*87b42c8bSMikhail Kshevetskiy 	{ .compatible = "airoha,an7563-pinctrl", .data = &pinctrl_match_data },
1098*87b42c8bSMikhail Kshevetskiy 	{ /* sentinel */ }
1099*87b42c8bSMikhail Kshevetskiy };
1100*87b42c8bSMikhail Kshevetskiy MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match);
1101*87b42c8bSMikhail Kshevetskiy 
1102*87b42c8bSMikhail Kshevetskiy static struct platform_driver airoha_pinctrl_driver = {
1103*87b42c8bSMikhail Kshevetskiy 	.probe = airoha_pinctrl_probe,
1104*87b42c8bSMikhail Kshevetskiy 	.driver = {
1105*87b42c8bSMikhail Kshevetskiy 		.name = "pinctrl-airoha-an7563",
1106*87b42c8bSMikhail Kshevetskiy 		.of_match_table = airoha_pinctrl_of_match,
1107*87b42c8bSMikhail Kshevetskiy 	},
1108*87b42c8bSMikhail Kshevetskiy };
1109*87b42c8bSMikhail Kshevetskiy module_platform_driver(airoha_pinctrl_driver);
1110*87b42c8bSMikhail Kshevetskiy 
1111*87b42c8bSMikhail Kshevetskiy MODULE_LICENSE("GPL");
1112*87b42c8bSMikhail Kshevetskiy MODULE_AUTHOR("Lorenzo Bianconi <lorenzo@kernel.org>");
1113*87b42c8bSMikhail Kshevetskiy MODULE_AUTHOR("Benjamin Larsson <benjamin.larsson@genexis.eu>");
1114*87b42c8bSMikhail Kshevetskiy MODULE_AUTHOR("Markus Gothe <markus.gothe@genexis.eu>");
1115*87b42c8bSMikhail Kshevetskiy MODULE_DESCRIPTION("Pinctrl driver for Airoha AN7563 SoC");
1116