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 */ 11c4776d20SMikhail Kshevetskiy #define REG_SW_TOD_1PPS_MODE 0x0214 12900b49e6SMikhail Kshevetskiy #define GPIO_LAN3_LED1_MODE_MASK BIT(10) 13900b49e6SMikhail Kshevetskiy #define GPIO_LAN3_LED0_MODE_MASK BIT(9) 14900b49e6SMikhail Kshevetskiy #define GPIO_LAN2_LED1_MODE_MASK BIT(8) 15900b49e6SMikhail Kshevetskiy #define GPIO_LAN2_LED0_MODE_MASK BIT(7) 16900b49e6SMikhail Kshevetskiy #define GPIO_LAN1_LED1_MODE_MASK BIT(6) 17900b49e6SMikhail Kshevetskiy #define GPIO_LAN1_LED0_MODE_MASK BIT(5) 18900b49e6SMikhail Kshevetskiy #define GPIO_LAN0_LED1_MODE_MASK BIT(4) 19900b49e6SMikhail Kshevetskiy #define GPIO_LAN0_LED0_MODE_MASK BIT(3) 20900b49e6SMikhail Kshevetskiy #define PON_TOD_1PPS_MODE_MASK BIT(2) 21900b49e6SMikhail Kshevetskiy #define GSW_TOD_1PPS_MODE_MASK BIT(1) 22900b49e6SMikhail Kshevetskiy 23900b49e6SMikhail Kshevetskiy #define REG_GPIO_SPI_CS1_MODE 0x0218 24900b49e6SMikhail Kshevetskiy #define GPIO_MDC_IO_MASTER_MODE_MASK BIT(22) 25900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS4_MODE_MASK BIT(21) 26900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS3_MODE_MASK BIT(20) 27bf3cdf90SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_MASK BIT(18) 28900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS1_MODE_MASK BIT(17) 29900b49e6SMikhail Kshevetskiy #define GPIO_PCM_SPI_MODE_MASK BIT(16) 30900b49e6SMikhail Kshevetskiy #define GPIO_PCM2_MODE_MASK BIT(13) 31900b49e6SMikhail Kshevetskiy #define GPIO_PCM1_MODE_MASK BIT(12) 32900b49e6SMikhail Kshevetskiy #define GPIO_PCM_INT_MODE_MASK BIT(9) 33900b49e6SMikhail Kshevetskiy #define GPIO_PCM_RESET_MODE_MASK BIT(8) 34900b49e6SMikhail Kshevetskiy #define GPIO_SPI_QUAD_MODE_MASK BIT(4) 35900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS4_MODE_MASK BIT(3) 36900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS3_MODE_MASK BIT(2) 37900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS2_MODE_MASK BIT(1) 38900b49e6SMikhail Kshevetskiy #define GPIO_SPI_CS1_MODE_MASK BIT(0) 39900b49e6SMikhail Kshevetskiy 40900b49e6SMikhail Kshevetskiy #define REG_GPIO_PON_MODE 0x021c 411594233eSMikhail Kshevetskiy #define GPIO_PON_ALT_MODE_MASK BIT(27) 42bf3cdf90SMikhail Kshevetskiy #define MDIO_0_GPIO_MODE_MASK BIT(26) 43bf3cdf90SMikhail Kshevetskiy #define MDC_0_GPIO_MODE_MASK BIT(25) 44bf3cdf90SMikhail Kshevetskiy #define UART_RXD_GPIO_MODE_MASK BIT(24) 45bf3cdf90SMikhail Kshevetskiy #define UART_TXD_GPIO_MODE_MASK BIT(23) 46bf3cdf90SMikhail Kshevetskiy #define SPI_MISO_GPIO_MODE_MASK BIT(22) 47bf3cdf90SMikhail Kshevetskiy #define SPI_MOSI_GPIO_MODE_MASK BIT(21) 48bf3cdf90SMikhail Kshevetskiy #define SPI_CS_GPIO_MODE_MASK BIT(20) 49bf3cdf90SMikhail Kshevetskiy #define SPI_CLK_GPIO_MODE_MASK BIT(19) 50bf3cdf90SMikhail Kshevetskiy #define I2C1_SDA_GPIO_MODE_MASK BIT(18) 51bf3cdf90SMikhail Kshevetskiy #define I2C1_SCL_GPIO_MODE_MASK BIT(17) 52bf3cdf90SMikhail Kshevetskiy #define I2C0_SDA_GPIO_MODE_MASK BIT(16) 53bf3cdf90SMikhail Kshevetskiy #define I2C0_SCL_GPIO_MODE_MASK BIT(15) 54900b49e6SMikhail Kshevetskiy #define GPIO_PARALLEL_NAND_MODE_MASK BIT(14) 55900b49e6SMikhail Kshevetskiy #define GPIO_SGMII_MDIO_MODE_MASK BIT(13) 5613243f41SMikhail Kshevetskiy #define GPIO_OLT_MODE_MASK BIT(12) 57900b49e6SMikhail Kshevetskiy #define SIPO_RCLK_MODE_MASK BIT(11) 58900b49e6SMikhail Kshevetskiy #define GPIO_PCIE_RESET1_MASK BIT(10) 59900b49e6SMikhail Kshevetskiy #define GPIO_PCIE_RESET0_MASK BIT(9) 60900b49e6SMikhail Kshevetskiy #define GPIO_UART5_MODE_MASK BIT(8) 61900b49e6SMikhail Kshevetskiy #define GPIO_UART4_MODE_MASK BIT(7) 62900b49e6SMikhail Kshevetskiy #define GPIO_HSUART_CTS_RTS_MODE_MASK BIT(6) 63900b49e6SMikhail Kshevetskiy #define GPIO_HSUART_MODE_MASK BIT(5) 64900b49e6SMikhail Kshevetskiy #define GPIO_UART2_CTS_RTS_MODE_MASK BIT(4) 65900b49e6SMikhail Kshevetskiy #define GPIO_UART2_MODE_MASK BIT(3) 66900b49e6SMikhail Kshevetskiy #define GPIO_SIPO_MODE_MASK BIT(2) 67900b49e6SMikhail Kshevetskiy #define GPIO_EMMC_MODE_MASK BIT(1) 68900b49e6SMikhail Kshevetskiy #define GPIO_PON_MODE_MASK BIT(0) 69900b49e6SMikhail Kshevetskiy 70900b49e6SMikhail Kshevetskiy #define REG_NPU_UART_EN 0x0224 71900b49e6SMikhail Kshevetskiy #define JTAG_UDI_EN_MASK BIT(4) 72900b49e6SMikhail Kshevetskiy #define JTAG_DFD_EN_MASK BIT(3) 7324cde06bSMikhail Kshevetskiy #define NPU_UART_EN_MASK BIT(2) 74900b49e6SMikhail Kshevetskiy 75900b49e6SMikhail Kshevetskiy #define REG_FORCE_GPIO_EN 0x0228 76900b49e6SMikhail Kshevetskiy #define FORCE_GPIO_EN(n) BIT(n) 77900b49e6SMikhail Kshevetskiy 78900b49e6SMikhail Kshevetskiy /* LED MAP */ 79900b49e6SMikhail Kshevetskiy #define REG_LAN_LED0_MAPPING 0x027c 80900b49e6SMikhail Kshevetskiy #define REG_LAN_LED1_MAPPING 0x0280 81900b49e6SMikhail Kshevetskiy 82900b49e6SMikhail Kshevetskiy #define LAN4_LED_MAPPING_MASK GENMASK(18, 16) 83900b49e6SMikhail Kshevetskiy #define LAN4_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN4_LED_MAPPING_MASK, (_n)) 84900b49e6SMikhail Kshevetskiy 85900b49e6SMikhail Kshevetskiy #define LAN3_LED_MAPPING_MASK GENMASK(14, 12) 86900b49e6SMikhail Kshevetskiy #define LAN3_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n)) 87900b49e6SMikhail Kshevetskiy 88900b49e6SMikhail Kshevetskiy #define LAN2_LED_MAPPING_MASK GENMASK(10, 8) 89900b49e6SMikhail Kshevetskiy #define LAN2_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n)) 90900b49e6SMikhail Kshevetskiy 91900b49e6SMikhail Kshevetskiy #define LAN1_LED_MAPPING_MASK GENMASK(6, 4) 92900b49e6SMikhail Kshevetskiy #define LAN1_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n)) 93900b49e6SMikhail Kshevetskiy 94900b49e6SMikhail Kshevetskiy #define LAN0_LED_MAPPING_MASK GENMASK(2, 0) 95900b49e6SMikhail Kshevetskiy #define LAN0_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n)) 96900b49e6SMikhail Kshevetskiy 97900b49e6SMikhail Kshevetskiy /* CONF */ 98900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_E2 0x001c 99bf3cdf90SMikhail Kshevetskiy #define I2C1_SCL_E2_MASK BIT(16) 100bf3cdf90SMikhail Kshevetskiy #define I2C1_SDA_E2_MASK BIT(15) 101900b49e6SMikhail Kshevetskiy #define SPI_MISO_E2_MASK BIT(14) 102900b49e6SMikhail Kshevetskiy #define SPI_MOSI_E2_MASK BIT(13) 103900b49e6SMikhail Kshevetskiy #define SPI_CLK_E2_MASK BIT(12) 104900b49e6SMikhail Kshevetskiy #define SPI_CS0_E2_MASK BIT(11) 105900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_E2_MASK BIT(9) 106900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_E2_MASK BIT(8) 107bf3cdf90SMikhail Kshevetskiy #define MDIO_0_E2_MASK BIT(5) 108bf3cdf90SMikhail Kshevetskiy #define MDC_0_E2_MASK BIT(4) 109900b49e6SMikhail Kshevetskiy #define UART1_RXD_E2_MASK BIT(3) 110900b49e6SMikhail Kshevetskiy #define UART1_TXD_E2_MASK BIT(2) 111900b49e6SMikhail Kshevetskiy #define I2C_SCL_E2_MASK BIT(1) 112900b49e6SMikhail Kshevetskiy #define I2C_SDA_E2_MASK BIT(0) 113900b49e6SMikhail Kshevetskiy 114900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_E4 0x0020 115bf3cdf90SMikhail Kshevetskiy #define I2C1_SCL_E4_MASK BIT(16) 116bf3cdf90SMikhail Kshevetskiy #define I2C1_SDA_E4_MASK BIT(15) 117900b49e6SMikhail Kshevetskiy #define SPI_MISO_E4_MASK BIT(14) 118900b49e6SMikhail Kshevetskiy #define SPI_MOSI_E4_MASK BIT(13) 119900b49e6SMikhail Kshevetskiy #define SPI_CLK_E4_MASK BIT(12) 120900b49e6SMikhail Kshevetskiy #define SPI_CS0_E4_MASK BIT(11) 121900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_E4_MASK BIT(9) 122900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_E4_MASK BIT(8) 123bf3cdf90SMikhail Kshevetskiy #define MDIO_0_E4_MASK BIT(5) 124bf3cdf90SMikhail Kshevetskiy #define MDC_0_E4_MASK BIT(4) 125900b49e6SMikhail Kshevetskiy #define UART1_RXD_E4_MASK BIT(3) 126900b49e6SMikhail Kshevetskiy #define UART1_TXD_E4_MASK BIT(2) 127900b49e6SMikhail Kshevetskiy #define I2C_SCL_E4_MASK BIT(1) 128900b49e6SMikhail Kshevetskiy #define I2C_SDA_E4_MASK BIT(0) 129900b49e6SMikhail Kshevetskiy 130900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_E2 0x0024 131900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_E4 0x0028 132900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_E2 0x002c 133900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_E4 0x0030 134900b49e6SMikhail Kshevetskiy 135900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_PU 0x0044 136bf3cdf90SMikhail Kshevetskiy #define I2C1_SCL_PU_MASK BIT(16) 137bf3cdf90SMikhail Kshevetskiy #define I2C1_SDA_PU_MASK BIT(15) 138900b49e6SMikhail Kshevetskiy #define SPI_MISO_PU_MASK BIT(14) 139900b49e6SMikhail Kshevetskiy #define SPI_MOSI_PU_MASK BIT(13) 140900b49e6SMikhail Kshevetskiy #define SPI_CLK_PU_MASK BIT(12) 141900b49e6SMikhail Kshevetskiy #define SPI_CS0_PU_MASK BIT(11) 142900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_PU_MASK BIT(9) 143900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_PU_MASK BIT(8) 144bf3cdf90SMikhail Kshevetskiy #define MDIO_0_PU_MASK BIT(5) 145bf3cdf90SMikhail Kshevetskiy #define MDC_0_PU_MASK BIT(4) 146900b49e6SMikhail Kshevetskiy #define UART1_RXD_PU_MASK BIT(3) 147900b49e6SMikhail Kshevetskiy #define UART1_TXD_PU_MASK BIT(2) 148900b49e6SMikhail Kshevetskiy #define I2C_SCL_PU_MASK BIT(1) 149900b49e6SMikhail Kshevetskiy #define I2C_SDA_PU_MASK BIT(0) 150900b49e6SMikhail Kshevetskiy 151900b49e6SMikhail Kshevetskiy #define REG_I2C_SDA_PD 0x0048 152bf3cdf90SMikhail Kshevetskiy #define I2C1_SCL_PD_MASK BIT(16) 153bf3cdf90SMikhail Kshevetskiy #define I2C1_SDA_PD_MASK BIT(15) 154900b49e6SMikhail Kshevetskiy #define SPI_MISO_PD_MASK BIT(14) 155900b49e6SMikhail Kshevetskiy #define SPI_MOSI_PD_MASK BIT(13) 156900b49e6SMikhail Kshevetskiy #define SPI_CLK_PD_MASK BIT(12) 157900b49e6SMikhail Kshevetskiy #define SPI_CS0_PD_MASK BIT(11) 158900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_PD_MASK BIT(9) 159900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_PD_MASK BIT(8) 160bf3cdf90SMikhail Kshevetskiy #define MDIO_0_PD_MASK BIT(5) 161bf3cdf90SMikhail Kshevetskiy #define MDC_0_PD_MASK BIT(4) 162900b49e6SMikhail Kshevetskiy #define UART1_RXD_PD_MASK BIT(3) 163900b49e6SMikhail Kshevetskiy #define UART1_TXD_PD_MASK BIT(2) 164900b49e6SMikhail Kshevetskiy #define I2C_SCL_PD_MASK BIT(1) 165900b49e6SMikhail Kshevetskiy #define I2C_SDA_PD_MASK BIT(0) 166900b49e6SMikhail Kshevetskiy 167900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_PU 0x004c 168900b49e6SMikhail Kshevetskiy #define REG_GPIO_L_PD 0x0050 169900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_PU 0x0054 170900b49e6SMikhail Kshevetskiy #define REG_GPIO_H_PD 0x0058 171900b49e6SMikhail Kshevetskiy 172900b49e6SMikhail Kshevetskiy #define REG_PCIE_RESET_OD 0x018c 173900b49e6SMikhail Kshevetskiy #define PCIE1_RESET_OD_MASK BIT(1) 174900b49e6SMikhail Kshevetskiy #define PCIE0_RESET_OD_MASK BIT(0) 175900b49e6SMikhail Kshevetskiy 176900b49e6SMikhail Kshevetskiy /* PWM MODE CONF */ 177900b49e6SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG 0x0034 178900b49e6SMikhail Kshevetskiy #define GPIO15_FLASH_MODE_CFG BIT(15) 179900b49e6SMikhail Kshevetskiy #define GPIO14_FLASH_MODE_CFG BIT(14) 180900b49e6SMikhail Kshevetskiy #define GPIO13_FLASH_MODE_CFG BIT(13) 181900b49e6SMikhail Kshevetskiy #define GPIO12_FLASH_MODE_CFG BIT(12) 182900b49e6SMikhail Kshevetskiy #define GPIO11_FLASH_MODE_CFG BIT(11) 183900b49e6SMikhail Kshevetskiy #define GPIO10_FLASH_MODE_CFG BIT(10) 184900b49e6SMikhail Kshevetskiy #define GPIO9_FLASH_MODE_CFG BIT(9) 185900b49e6SMikhail Kshevetskiy #define GPIO8_FLASH_MODE_CFG BIT(8) 186900b49e6SMikhail Kshevetskiy #define GPIO7_FLASH_MODE_CFG BIT(7) 187900b49e6SMikhail Kshevetskiy #define GPIO6_FLASH_MODE_CFG BIT(6) 188900b49e6SMikhail Kshevetskiy #define GPIO5_FLASH_MODE_CFG BIT(5) 189900b49e6SMikhail Kshevetskiy #define GPIO4_FLASH_MODE_CFG BIT(4) 190900b49e6SMikhail Kshevetskiy #define GPIO3_FLASH_MODE_CFG BIT(3) 191900b49e6SMikhail Kshevetskiy #define GPIO2_FLASH_MODE_CFG BIT(2) 192900b49e6SMikhail Kshevetskiy #define GPIO1_FLASH_MODE_CFG BIT(1) 193900b49e6SMikhail Kshevetskiy #define GPIO0_FLASH_MODE_CFG BIT(0) 194900b49e6SMikhail Kshevetskiy 195900b49e6SMikhail Kshevetskiy /* PWM MODE CONF EXT */ 196900b49e6SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG_EXT 0x0068 197900b49e6SMikhail Kshevetskiy #define GPIO51_FLASH_MODE_CFG BIT(31) 198900b49e6SMikhail Kshevetskiy #define GPIO50_FLASH_MODE_CFG BIT(30) 199900b49e6SMikhail Kshevetskiy #define GPIO49_FLASH_MODE_CFG BIT(29) 200900b49e6SMikhail Kshevetskiy #define GPIO48_FLASH_MODE_CFG BIT(28) 201900b49e6SMikhail Kshevetskiy #define GPIO47_FLASH_MODE_CFG BIT(27) 202900b49e6SMikhail Kshevetskiy #define GPIO46_FLASH_MODE_CFG BIT(26) 203900b49e6SMikhail Kshevetskiy #define GPIO45_FLASH_MODE_CFG BIT(25) 204900b49e6SMikhail Kshevetskiy #define GPIO44_FLASH_MODE_CFG BIT(24) 205900b49e6SMikhail Kshevetskiy #define GPIO43_FLASH_MODE_CFG BIT(23) 206900b49e6SMikhail Kshevetskiy #define GPIO42_FLASH_MODE_CFG BIT(22) 207900b49e6SMikhail Kshevetskiy #define GPIO41_FLASH_MODE_CFG BIT(21) 208900b49e6SMikhail Kshevetskiy #define GPIO40_FLASH_MODE_CFG BIT(20) 209900b49e6SMikhail Kshevetskiy #define GPIO39_FLASH_MODE_CFG BIT(19) 210900b49e6SMikhail Kshevetskiy #define GPIO38_FLASH_MODE_CFG BIT(18) 211900b49e6SMikhail Kshevetskiy #define GPIO37_FLASH_MODE_CFG BIT(17) 212900b49e6SMikhail Kshevetskiy #define GPIO36_FLASH_MODE_CFG BIT(16) 213900b49e6SMikhail Kshevetskiy #define GPIO31_FLASH_MODE_CFG BIT(15) 214900b49e6SMikhail Kshevetskiy #define GPIO30_FLASH_MODE_CFG BIT(14) 215900b49e6SMikhail Kshevetskiy #define GPIO29_FLASH_MODE_CFG BIT(13) 216900b49e6SMikhail Kshevetskiy #define GPIO28_FLASH_MODE_CFG BIT(12) 217900b49e6SMikhail Kshevetskiy #define GPIO27_FLASH_MODE_CFG BIT(11) 218900b49e6SMikhail Kshevetskiy #define GPIO26_FLASH_MODE_CFG BIT(10) 219900b49e6SMikhail Kshevetskiy #define GPIO25_FLASH_MODE_CFG BIT(9) 220900b49e6SMikhail Kshevetskiy #define GPIO24_FLASH_MODE_CFG BIT(8) 221900b49e6SMikhail Kshevetskiy #define GPIO23_FLASH_MODE_CFG BIT(7) 222900b49e6SMikhail Kshevetskiy #define GPIO22_FLASH_MODE_CFG BIT(6) 223900b49e6SMikhail Kshevetskiy #define GPIO21_FLASH_MODE_CFG BIT(5) 224900b49e6SMikhail Kshevetskiy #define GPIO20_FLASH_MODE_CFG BIT(4) 225900b49e6SMikhail Kshevetskiy #define GPIO19_FLASH_MODE_CFG BIT(3) 226900b49e6SMikhail Kshevetskiy #define GPIO18_FLASH_MODE_CFG BIT(2) 227900b49e6SMikhail Kshevetskiy #define GPIO17_FLASH_MODE_CFG BIT(1) 228900b49e6SMikhail Kshevetskiy #define GPIO16_FLASH_MODE_CFG BIT(0) 229900b49e6SMikhail Kshevetskiy 230900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO(gpio, mux_val) \ 231900b49e6SMikhail Kshevetskiy { \ 232900b49e6SMikhail Kshevetskiy .name = (gpio), \ 233900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 234900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 235900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 236900b49e6SMikhail Kshevetskiy (mux_val), \ 237900b49e6SMikhail Kshevetskiy (mux_val) \ 238900b49e6SMikhail Kshevetskiy }, \ 239900b49e6SMikhail Kshevetskiy .regmap_size = 1, \ 240900b49e6SMikhail Kshevetskiy } 241900b49e6SMikhail Kshevetskiy 242900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO_EXT(gpio, mux_val, smux_val) \ 243900b49e6SMikhail Kshevetskiy { \ 244900b49e6SMikhail Kshevetskiy .name = (gpio), \ 245900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 246900b49e6SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 247900b49e6SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 248900b49e6SMikhail Kshevetskiy (mux_val), \ 249900b49e6SMikhail Kshevetskiy 0 \ 250900b49e6SMikhail Kshevetskiy }, \ 251900b49e6SMikhail Kshevetskiy .regmap[1] = { \ 252900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 253900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 254900b49e6SMikhail Kshevetskiy (smux_val), \ 255900b49e6SMikhail Kshevetskiy (smux_val) \ 256900b49e6SMikhail Kshevetskiy }, \ 257900b49e6SMikhail Kshevetskiy .regmap_size = 2, \ 258900b49e6SMikhail Kshevetskiy } 259900b49e6SMikhail Kshevetskiy 260900b49e6SMikhail Kshevetskiy /* PWM */ 261900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM(gpio, mux_val) \ 262900b49e6SMikhail Kshevetskiy { \ 263900b49e6SMikhail Kshevetskiy .name = (gpio), \ 264900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 265900b49e6SMikhail Kshevetskiy AIROHA_FUNC_PWM_MUX, \ 266900b49e6SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG, \ 267900b49e6SMikhail Kshevetskiy (mux_val), \ 268900b49e6SMikhail Kshevetskiy (mux_val) \ 269900b49e6SMikhail Kshevetskiy }, \ 270900b49e6SMikhail Kshevetskiy .regmap_size = 1, \ 271900b49e6SMikhail Kshevetskiy } 272900b49e6SMikhail Kshevetskiy 273900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT(gpio, mux_val) \ 274900b49e6SMikhail Kshevetskiy { \ 275900b49e6SMikhail Kshevetskiy .name = (gpio), \ 276900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 277900b49e6SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 278900b49e6SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 279900b49e6SMikhail Kshevetskiy (mux_val), \ 280900b49e6SMikhail Kshevetskiy (mux_val) \ 281900b49e6SMikhail Kshevetskiy }, \ 282900b49e6SMikhail Kshevetskiy .regmap_size = 1, \ 283900b49e6SMikhail Kshevetskiy } 284900b49e6SMikhail Kshevetskiy 285900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT_SEC(gpio, mux_val, smux_val) \ 286900b49e6SMikhail Kshevetskiy { \ 287900b49e6SMikhail Kshevetskiy .name = (gpio), \ 288900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 289900b49e6SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 290900b49e6SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 291900b49e6SMikhail Kshevetskiy (mux_val), \ 292900b49e6SMikhail Kshevetskiy (mux_val) \ 293900b49e6SMikhail Kshevetskiy }, \ 294900b49e6SMikhail Kshevetskiy .regmap[1] = { \ 295900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 296900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 297900b49e6SMikhail Kshevetskiy (smux_val), \ 298900b49e6SMikhail Kshevetskiy (smux_val) \ 299900b49e6SMikhail Kshevetskiy }, \ 300900b49e6SMikhail Kshevetskiy .regmap_size = 2, \ 301900b49e6SMikhail Kshevetskiy } 302900b49e6SMikhail Kshevetskiy 303900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED0(gpio, mux_val, map_mask, map_val) \ 304900b49e6SMikhail Kshevetskiy { \ 305900b49e6SMikhail Kshevetskiy .name = (gpio), \ 306900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 307900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 308c4776d20SMikhail Kshevetskiy REG_SW_TOD_1PPS_MODE, \ 309900b49e6SMikhail Kshevetskiy (mux_val), \ 310900b49e6SMikhail Kshevetskiy (mux_val), \ 311900b49e6SMikhail Kshevetskiy }, \ 312900b49e6SMikhail Kshevetskiy .regmap[1] = { \ 313900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 314900b49e6SMikhail Kshevetskiy REG_LAN_LED0_MAPPING, \ 315900b49e6SMikhail Kshevetskiy (map_mask), \ 316900b49e6SMikhail Kshevetskiy (map_val), \ 317900b49e6SMikhail Kshevetskiy }, \ 318900b49e6SMikhail Kshevetskiy .regmap_size = 2, \ 319900b49e6SMikhail Kshevetskiy } 320900b49e6SMikhail Kshevetskiy 321900b49e6SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED1(gpio, mux_val, map_mask, map_val) \ 322900b49e6SMikhail Kshevetskiy { \ 323900b49e6SMikhail Kshevetskiy .name = (gpio), \ 324900b49e6SMikhail Kshevetskiy .regmap[0] = { \ 325900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 326c4776d20SMikhail Kshevetskiy REG_SW_TOD_1PPS_MODE, \ 327900b49e6SMikhail Kshevetskiy (mux_val), \ 328900b49e6SMikhail Kshevetskiy (mux_val), \ 329900b49e6SMikhail Kshevetskiy }, \ 330900b49e6SMikhail Kshevetskiy .regmap[1] = { \ 331900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 332900b49e6SMikhail Kshevetskiy REG_LAN_LED1_MAPPING, \ 333900b49e6SMikhail Kshevetskiy (map_mask), \ 334900b49e6SMikhail Kshevetskiy (map_val), \ 335900b49e6SMikhail Kshevetskiy }, \ 336900b49e6SMikhail Kshevetskiy .regmap_size = 2, \ 337900b49e6SMikhail Kshevetskiy } 338900b49e6SMikhail Kshevetskiy 339bf3cdf90SMikhail Kshevetskiy static struct pinctrl_pin_desc pinctrl_pins[] = { 340900b49e6SMikhail Kshevetskiy PINCTRL_PIN(2, "gpio0"), 341900b49e6SMikhail Kshevetskiy PINCTRL_PIN(3, "gpio1"), 342900b49e6SMikhail Kshevetskiy PINCTRL_PIN(4, "gpio2"), 343900b49e6SMikhail Kshevetskiy PINCTRL_PIN(5, "gpio3"), 344900b49e6SMikhail Kshevetskiy PINCTRL_PIN(6, "gpio4"), 345900b49e6SMikhail Kshevetskiy PINCTRL_PIN(7, "gpio5"), 346900b49e6SMikhail Kshevetskiy PINCTRL_PIN(8, "gpio6"), 347900b49e6SMikhail Kshevetskiy PINCTRL_PIN(9, "gpio7"), 348900b49e6SMikhail Kshevetskiy PINCTRL_PIN(10, "gpio8"), 349900b49e6SMikhail Kshevetskiy PINCTRL_PIN(11, "gpio9"), 350900b49e6SMikhail Kshevetskiy PINCTRL_PIN(12, "gpio10"), 351900b49e6SMikhail Kshevetskiy PINCTRL_PIN(13, "gpio11"), 352900b49e6SMikhail Kshevetskiy PINCTRL_PIN(14, "gpio12"), 353900b49e6SMikhail Kshevetskiy PINCTRL_PIN(15, "gpio13"), 354900b49e6SMikhail Kshevetskiy PINCTRL_PIN(16, "gpio14"), 355900b49e6SMikhail Kshevetskiy PINCTRL_PIN(17, "gpio15"), 356900b49e6SMikhail Kshevetskiy PINCTRL_PIN(18, "gpio16"), 357900b49e6SMikhail Kshevetskiy PINCTRL_PIN(19, "gpio17"), 358900b49e6SMikhail Kshevetskiy PINCTRL_PIN(20, "gpio18"), 359900b49e6SMikhail Kshevetskiy PINCTRL_PIN(21, "gpio19"), 360900b49e6SMikhail Kshevetskiy PINCTRL_PIN(22, "gpio20"), 361900b49e6SMikhail Kshevetskiy PINCTRL_PIN(23, "gpio21"), 362900b49e6SMikhail Kshevetskiy PINCTRL_PIN(24, "gpio22"), 363900b49e6SMikhail Kshevetskiy PINCTRL_PIN(25, "gpio23"), 364900b49e6SMikhail Kshevetskiy PINCTRL_PIN(26, "gpio24"), 365900b49e6SMikhail Kshevetskiy PINCTRL_PIN(27, "gpio25"), 366900b49e6SMikhail Kshevetskiy PINCTRL_PIN(28, "gpio26"), 367900b49e6SMikhail Kshevetskiy PINCTRL_PIN(29, "gpio27"), 368900b49e6SMikhail Kshevetskiy PINCTRL_PIN(30, "gpio28"), 369900b49e6SMikhail Kshevetskiy PINCTRL_PIN(31, "gpio29"), 370900b49e6SMikhail Kshevetskiy PINCTRL_PIN(32, "gpio30"), 371900b49e6SMikhail Kshevetskiy PINCTRL_PIN(33, "gpio31"), 372900b49e6SMikhail Kshevetskiy PINCTRL_PIN(34, "gpio32"), 373900b49e6SMikhail Kshevetskiy PINCTRL_PIN(35, "gpio33"), 374900b49e6SMikhail Kshevetskiy PINCTRL_PIN(36, "gpio34"), 375900b49e6SMikhail Kshevetskiy PINCTRL_PIN(37, "gpio35"), 376900b49e6SMikhail Kshevetskiy PINCTRL_PIN(38, "gpio36"), 377900b49e6SMikhail Kshevetskiy PINCTRL_PIN(39, "gpio37"), 378900b49e6SMikhail Kshevetskiy PINCTRL_PIN(40, "gpio38"), 379900b49e6SMikhail Kshevetskiy PINCTRL_PIN(41, "i2c0_scl"), 380900b49e6SMikhail Kshevetskiy PINCTRL_PIN(42, "i2c0_sda"), 381900b49e6SMikhail Kshevetskiy PINCTRL_PIN(43, "i2c1_scl"), 382900b49e6SMikhail Kshevetskiy PINCTRL_PIN(44, "i2c1_sda"), 383900b49e6SMikhail Kshevetskiy PINCTRL_PIN(45, "spi_clk"), 384900b49e6SMikhail Kshevetskiy PINCTRL_PIN(46, "spi_cs"), 385900b49e6SMikhail Kshevetskiy PINCTRL_PIN(47, "spi_mosi"), 386900b49e6SMikhail Kshevetskiy PINCTRL_PIN(48, "spi_miso"), 387900b49e6SMikhail Kshevetskiy PINCTRL_PIN(49, "uart_txd"), 388900b49e6SMikhail Kshevetskiy PINCTRL_PIN(50, "uart_rxd"), 389900b49e6SMikhail Kshevetskiy PINCTRL_PIN(51, "pcie_reset0"), 390900b49e6SMikhail Kshevetskiy PINCTRL_PIN(52, "pcie_reset1"), 391900b49e6SMikhail Kshevetskiy PINCTRL_PIN(53, "mdc_0"), 392900b49e6SMikhail Kshevetskiy PINCTRL_PIN(54, "mdio_0"), 393900b49e6SMikhail Kshevetskiy }; 394900b49e6SMikhail Kshevetskiy 395bf3cdf90SMikhail Kshevetskiy static const int pon_pins[] = { 15, 16, 17, 18, 19, 20 }; 3961594233eSMikhail Kshevetskiy static const int pon_alt_pins[] = { 36, 37, 38, 39, 40 }; 39713243f41SMikhail Kshevetskiy static const int olt_pins[] = { 36, 37, 38, 39, 40 }; 398bf3cdf90SMikhail Kshevetskiy static const int pon_tod_1pps_pins[] = { 32 }; 399bf3cdf90SMikhail Kshevetskiy static const int gsw_tod_1pps_pins[] = { 32 }; 400bf3cdf90SMikhail Kshevetskiy static const int sipo_pins[] = { 34, 35 }; 401bf3cdf90SMikhail Kshevetskiy static const int sipo_rclk_pins[] = { 34, 35, 33 }; 402bf3cdf90SMikhail Kshevetskiy static const int mdio_pins[] = { 53, 54 }; 403bf3cdf90SMikhail Kshevetskiy static const int mdio1_pins[] = { 43, 44 }; 404bf3cdf90SMikhail Kshevetskiy static const int uart2_pins[] = { 34, 35 }; 405bf3cdf90SMikhail Kshevetskiy static const int uart2_cts_rts_pins[] = { 32, 33 }; 406bf3cdf90SMikhail Kshevetskiy static const int hsuart_pins[] = { 30, 31 }; 407bf3cdf90SMikhail Kshevetskiy static const int hsuart_cts_rts_pins[] = { 28, 29 }; 408bf3cdf90SMikhail Kshevetskiy static const int npu_uart_pins[] = { 7, 8 }; 409bf3cdf90SMikhail Kshevetskiy static const int uart4_pins[] = { 7, 8 }; 410bf3cdf90SMikhail Kshevetskiy static const int uart5_pins[] = { 23, 24 }; 411bf3cdf90SMikhail Kshevetskiy static const int i2c0_pins[] = { 41, 42 }; 412bf3cdf90SMikhail Kshevetskiy static const int i2c1_pins[] = { 43, 44 }; 413bf3cdf90SMikhail Kshevetskiy static const int jtag_udi_pins[] = { 23, 24, 22, 25, 26 }; 414bf3cdf90SMikhail Kshevetskiy static const int jtag_dfd_pins[] = { 23, 24, 22, 25, 26 }; 415bf3cdf90SMikhail Kshevetskiy static const int pcm1_pins[] = { 10, 11, 12, 13, 14 }; 416bf3cdf90SMikhail Kshevetskiy static const int pcm2_pins[] = { 28, 29, 30, 31, 24 }; 417bf3cdf90SMikhail Kshevetskiy static const int spi_pins[] = { 45, 46, 47, 48 }; 418bf3cdf90SMikhail Kshevetskiy static const int spi_quad_pins[] = { 25, 26 }; 419bf3cdf90SMikhail Kshevetskiy static const int spi_cs1_pins[] = { 27 }; 420bf3cdf90SMikhail Kshevetskiy static const int pcm_spi_pins[] = { 28, 29, 30, 31, 10, 11, 12, 13 }; 421bf3cdf90SMikhail Kshevetskiy static const int pcm_spi_rst_pins[] = { 14 }; 422bf3cdf90SMikhail Kshevetskiy static const int pcm_spi_cs1_pins[] = { 24 }; 423bf3cdf90SMikhail Kshevetskiy static const int emmc_pins[] = { 424900b49e6SMikhail Kshevetskiy 7, 8, 9, 22, 23, 24, 25, 26, 45, 46, 47 425900b49e6SMikhail Kshevetskiy }; 426bf3cdf90SMikhail Kshevetskiy static const int pnand_pins[] = { 427900b49e6SMikhail Kshevetskiy 7, 8, 9, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 45, 46, 47, 48 428900b49e6SMikhail Kshevetskiy }; 429bf3cdf90SMikhail Kshevetskiy static const int gpio0_pins[] = { 2 }; 430bf3cdf90SMikhail Kshevetskiy static const int gpio1_pins[] = { 3 }; 431bf3cdf90SMikhail Kshevetskiy static const int gpio2_pins[] = { 4 }; 432bf3cdf90SMikhail Kshevetskiy static const int gpio3_pins[] = { 5 }; 433bf3cdf90SMikhail Kshevetskiy static const int gpio4_pins[] = { 6 }; 434bf3cdf90SMikhail Kshevetskiy static const int gpio5_pins[] = { 7 }; 435bf3cdf90SMikhail Kshevetskiy static const int gpio6_pins[] = { 8 }; 436bf3cdf90SMikhail Kshevetskiy static const int gpio7_pins[] = { 9 }; 437bf3cdf90SMikhail Kshevetskiy static const int gpio8_pins[] = { 10 }; 438bf3cdf90SMikhail Kshevetskiy static const int gpio9_pins[] = { 11 }; 439bf3cdf90SMikhail Kshevetskiy static const int gpio10_pins[] = { 12 }; 440bf3cdf90SMikhail Kshevetskiy static const int gpio11_pins[] = { 13 }; 441bf3cdf90SMikhail Kshevetskiy static const int gpio12_pins[] = { 14 }; 442bf3cdf90SMikhail Kshevetskiy static const int gpio13_pins[] = { 15 }; 443bf3cdf90SMikhail Kshevetskiy static const int gpio14_pins[] = { 16 }; 444bf3cdf90SMikhail Kshevetskiy static const int gpio15_pins[] = { 17 }; 445bf3cdf90SMikhail Kshevetskiy static const int gpio16_pins[] = { 18 }; 446bf3cdf90SMikhail Kshevetskiy static const int gpio17_pins[] = { 19 }; 447bf3cdf90SMikhail Kshevetskiy static const int gpio18_pins[] = { 20 }; 448bf3cdf90SMikhail Kshevetskiy static const int gpio19_pins[] = { 21 }; 449bf3cdf90SMikhail Kshevetskiy static const int gpio20_pins[] = { 22 }; 450bf3cdf90SMikhail Kshevetskiy static const int gpio21_pins[] = { 23 }; 451bf3cdf90SMikhail Kshevetskiy static const int gpio22_pins[] = { 24 }; 452bf3cdf90SMikhail Kshevetskiy static const int gpio23_pins[] = { 25 }; 453bf3cdf90SMikhail Kshevetskiy static const int gpio24_pins[] = { 26 }; 454bf3cdf90SMikhail Kshevetskiy static const int gpio25_pins[] = { 27 }; 455bf3cdf90SMikhail Kshevetskiy static const int gpio26_pins[] = { 28 }; 456bf3cdf90SMikhail Kshevetskiy static const int gpio27_pins[] = { 29 }; 457bf3cdf90SMikhail Kshevetskiy static const int gpio28_pins[] = { 30 }; 458bf3cdf90SMikhail Kshevetskiy static const int gpio29_pins[] = { 31 }; 459bf3cdf90SMikhail Kshevetskiy static const int gpio30_pins[] = { 32 }; 460bf3cdf90SMikhail Kshevetskiy static const int gpio31_pins[] = { 33 }; 461bf3cdf90SMikhail Kshevetskiy static const int gpio32_pins[] = { 34 }; 462bf3cdf90SMikhail Kshevetskiy static const int gpio33_pins[] = { 35 }; 463bf3cdf90SMikhail Kshevetskiy static const int gpio34_pins[] = { 36 }; 464bf3cdf90SMikhail Kshevetskiy static const int gpio35_pins[] = { 37 }; 465bf3cdf90SMikhail Kshevetskiy static const int gpio36_pins[] = { 38 }; 466bf3cdf90SMikhail Kshevetskiy static const int gpio37_pins[] = { 39 }; 467bf3cdf90SMikhail Kshevetskiy static const int gpio38_pins[] = { 40 }; 468bf3cdf90SMikhail Kshevetskiy static const int gpio39_pins[] = { 41 }; 469bf3cdf90SMikhail Kshevetskiy static const int gpio40_pins[] = { 42 }; 470bf3cdf90SMikhail Kshevetskiy static const int gpio41_pins[] = { 43 }; 471bf3cdf90SMikhail Kshevetskiy static const int gpio42_pins[] = { 44 }; 472bf3cdf90SMikhail Kshevetskiy static const int gpio43_pins[] = { 45 }; 473bf3cdf90SMikhail Kshevetskiy static const int gpio44_pins[] = { 46 }; 474bf3cdf90SMikhail Kshevetskiy static const int gpio45_pins[] = { 47 }; 475bf3cdf90SMikhail Kshevetskiy static const int gpio46_pins[] = { 48 }; 476bf3cdf90SMikhail Kshevetskiy static const int gpio47_pins[] = { 49 }; 477bf3cdf90SMikhail Kshevetskiy static const int gpio48_pins[] = { 50 }; 478bf3cdf90SMikhail Kshevetskiy static const int gpio49_pins[] = { 51 }; 479bf3cdf90SMikhail Kshevetskiy static const int gpio50_pins[] = { 52 }; 480bf3cdf90SMikhail Kshevetskiy static const int gpio51_pins[] = { 53 }; 481bf3cdf90SMikhail Kshevetskiy static const int gpio52_pins[] = { 54 }; 482bf3cdf90SMikhail Kshevetskiy static const int pcie_reset0_pins[] = { 51 }; 483bf3cdf90SMikhail Kshevetskiy static const int pcie_reset1_pins[] = { 52 }; 484900b49e6SMikhail Kshevetskiy 485bf3cdf90SMikhail Kshevetskiy static const struct pingroup pinctrl_groups[] = { 486bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pon", pon), 4871594233eSMikhail Kshevetskiy PINCTRL_PIN_GROUP("pon_alt", pon_alt), 48813243f41SMikhail Kshevetskiy PINCTRL_PIN_GROUP("olt", olt), 489bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pon_tod_1pps", pon_tod_1pps), 490bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gsw_tod_1pps", gsw_tod_1pps), 491bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("sipo", sipo), 492bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("sipo_rclk", sipo_rclk), 493bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("mdio", mdio), 494bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("mdio1", mdio1), 495bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("uart2", uart2), 496bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("uart2_cts_rts", uart2_cts_rts), 497bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("hsuart", hsuart), 498bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("hsuart_cts_rts", hsuart_cts_rts), 499bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("npu_uart", npu_uart), 500bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("uart4", uart4), 501bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("uart5", uart5), 502bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("i2c0", i2c0), 503bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("i2c1", i2c1), 504bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("jtag_udi", jtag_udi), 505bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("jtag_dfd", jtag_dfd), 506bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm1", pcm1), 507bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm2", pcm2), 508bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi", spi), 509bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi_quad", spi_quad), 510bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi_cs1", spi_cs1), 511bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi", pcm_spi), 512bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_rst", pcm_spi_rst), 513bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs1", pcm_spi_cs1), 514bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("emmc", emmc), 515bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pnand", pnand), 516bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio0", gpio0), 517bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio1", gpio1), 518bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio2", gpio2), 519bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio3", gpio3), 520bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio4", gpio4), 521bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio5", gpio5), 522bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio6", gpio6), 523bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio7", gpio7), 524bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio8", gpio8), 525bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio9", gpio9), 526bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio10", gpio10), 527bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio11", gpio11), 528bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio12", gpio12), 529bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio13", gpio13), 530bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio14", gpio14), 531bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio15", gpio15), 532bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio16", gpio16), 533bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio17", gpio17), 534bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio18", gpio18), 535bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio19", gpio19), 536bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio20", gpio20), 537bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio21", gpio21), 538bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio22", gpio22), 539bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio23", gpio23), 540bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio24", gpio24), 541bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio25", gpio25), 542bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio26", gpio26), 543bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio27", gpio27), 544bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio28", gpio28), 545bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio29", gpio29), 546bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio30", gpio30), 547bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio31", gpio31), 548bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio32", gpio32), 549bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio33", gpio33), 550bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio34", gpio34), 551bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio35", gpio35), 552bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio36", gpio36), 553bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio37", gpio37), 554bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio38", gpio38), 555bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio39", gpio39), 556bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio40", gpio40), 557bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio41", gpio41), 558bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio42", gpio42), 559bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio43", gpio43), 560bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio44", gpio44), 561bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio45", gpio45), 562bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio46", gpio46), 563bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio47", gpio47), 564bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio48", gpio48), 565bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio49", gpio49), 566bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio50", gpio50), 567bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio51", gpio51), 568bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio52", gpio52), 569bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcie_reset0", pcie_reset0), 570bf3cdf90SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcie_reset1", pcie_reset1), 571900b49e6SMikhail Kshevetskiy }; 572900b49e6SMikhail Kshevetskiy 5731594233eSMikhail Kshevetskiy static const char *const pon_groups[] = { "pon", "pon_alt" }; 57413243f41SMikhail Kshevetskiy static const char *const olt_groups[] = { "olt" }; 575900b49e6SMikhail Kshevetskiy static const char *const tod_1pps_groups[] = { 576900b49e6SMikhail Kshevetskiy "pon_tod_1pps", "gsw_tod_1pps" 577900b49e6SMikhail Kshevetskiy }; 578900b49e6SMikhail Kshevetskiy static const char *const sipo_groups[] = { "sipo", "sipo_rclk" }; 579bf3cdf90SMikhail Kshevetskiy static const char *const mdio_groups[] = { "mdio" }; 580900b49e6SMikhail Kshevetskiy static const char *const uart_groups[] = { 581900b49e6SMikhail Kshevetskiy "uart2", "uart2_cts_rts", "hsuart", "hsuart_cts_rts", 58224cde06bSMikhail Kshevetskiy "uart4", "uart5", "npu_uart" 583900b49e6SMikhail Kshevetskiy }; 584bf3cdf90SMikhail Kshevetskiy static const char *const i2c_groups[] = { "i2c0", "i2c1" }; 585900b49e6SMikhail Kshevetskiy static const char *const jtag_groups[] = { "jtag_udi", "jtag_dfd" }; 586900b49e6SMikhail Kshevetskiy static const char *const pcm_groups[] = { "pcm1", "pcm2" }; 587900b49e6SMikhail Kshevetskiy static const char *const spi_groups[] = { "spi_quad", "spi_cs1" }; 588bf3cdf90SMikhail Kshevetskiy static const char *const pcm_spi_groups[] = { 589900b49e6SMikhail Kshevetskiy "pcm_spi", "pcm_spi_rst", "pcm_spi_cs1" 590900b49e6SMikhail Kshevetskiy }; 591900b49e6SMikhail Kshevetskiy static const char *const emmc_groups[] = { "emmc" }; 592900b49e6SMikhail Kshevetskiy static const char *const pnand_groups[] = { "pnand" }; 593bf3cdf90SMikhail Kshevetskiy static const char *const gpio_groups[] = { 594900b49e6SMikhail Kshevetskiy "gpio39", "gpio40", "gpio41", "gpio42", "gpio43", 595900b49e6SMikhail Kshevetskiy "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", 596900b49e6SMikhail Kshevetskiy "gpio49", "gpio50", "gpio51", "gpio52" 597900b49e6SMikhail Kshevetskiy }; 598bf3cdf90SMikhail Kshevetskiy static const char *const pcie_reset_groups[] = { 599900b49e6SMikhail Kshevetskiy "pcie_reset0", "pcie_reset1" 600900b49e6SMikhail Kshevetskiy }; 601bf3cdf90SMikhail Kshevetskiy static const char *const pwm_groups[] = { 602900b49e6SMikhail Kshevetskiy "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", 603900b49e6SMikhail Kshevetskiy "gpio6", "gpio7", "gpio8", "gpio9", "gpio10", "gpio11", 604900b49e6SMikhail Kshevetskiy "gpio12", "gpio13", "gpio14", "gpio15", "gpio16", "gpio17", 605900b49e6SMikhail Kshevetskiy "gpio18", "gpio19", "gpio20", "gpio21", "gpio22", "gpio23", 606900b49e6SMikhail Kshevetskiy "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", 607900b49e6SMikhail Kshevetskiy "gpio30", "gpio31", "gpio36", "gpio37", "gpio38", "gpio39", 608900b49e6SMikhail Kshevetskiy "gpio40", "gpio41", "gpio42", "gpio43", "gpio44", "gpio45", 609900b49e6SMikhail Kshevetskiy "gpio46", "gpio47", "gpio48", "gpio49", "gpio50", "gpio51" 610900b49e6SMikhail Kshevetskiy }; 611bf3cdf90SMikhail Kshevetskiy static const char *const phy1_led0_groups[] = { 612900b49e6SMikhail Kshevetskiy "gpio1", "gpio2", "gpio3", "gpio4" 613900b49e6SMikhail Kshevetskiy }; 614bf3cdf90SMikhail Kshevetskiy static const char *const phy2_led0_groups[] = { 615900b49e6SMikhail Kshevetskiy "gpio1", "gpio2", "gpio3", "gpio4" 616900b49e6SMikhail Kshevetskiy }; 617bf3cdf90SMikhail Kshevetskiy static const char *const phy3_led0_groups[] = { 618900b49e6SMikhail Kshevetskiy "gpio1", "gpio2", "gpio3", "gpio4" 619900b49e6SMikhail Kshevetskiy }; 620bf3cdf90SMikhail Kshevetskiy static const char *const phy4_led0_groups[] = { 621900b49e6SMikhail Kshevetskiy "gpio1", "gpio2", "gpio3", "gpio4" 622900b49e6SMikhail Kshevetskiy }; 623bf3cdf90SMikhail Kshevetskiy static const char *const phy1_led1_groups[] = { 624900b49e6SMikhail Kshevetskiy "gpio8", "gpio9", "gpio10", "gpio11" 625900b49e6SMikhail Kshevetskiy }; 626bf3cdf90SMikhail Kshevetskiy static const char *const phy2_led1_groups[] = { 627900b49e6SMikhail Kshevetskiy "gpio8", "gpio9", "gpio10", "gpio11" 628900b49e6SMikhail Kshevetskiy }; 629bf3cdf90SMikhail Kshevetskiy static const char *const phy3_led1_groups[] = { 630900b49e6SMikhail Kshevetskiy "gpio8", "gpio9", "gpio10", "gpio11" 631900b49e6SMikhail Kshevetskiy }; 632bf3cdf90SMikhail Kshevetskiy static const char *const phy4_led1_groups[] = { 633900b49e6SMikhail Kshevetskiy "gpio8", "gpio9", "gpio10", "gpio11" 634900b49e6SMikhail Kshevetskiy }; 635900b49e6SMikhail Kshevetskiy 636900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pon_func_group[] = { 637900b49e6SMikhail Kshevetskiy { 638900b49e6SMikhail Kshevetskiy .name = "pon", 639900b49e6SMikhail Kshevetskiy .regmap[0] = { 640900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 641900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 6421594233eSMikhail Kshevetskiy GPIO_PON_MODE_MASK | GPIO_PON_ALT_MODE_MASK, 643900b49e6SMikhail Kshevetskiy GPIO_PON_MODE_MASK 644900b49e6SMikhail Kshevetskiy }, 645900b49e6SMikhail Kshevetskiy .regmap_size = 1, 6461594233eSMikhail Kshevetskiy }, { 6471594233eSMikhail Kshevetskiy .name = "pon_alt", 6481594233eSMikhail Kshevetskiy .regmap[0] = { 6491594233eSMikhail Kshevetskiy AIROHA_FUNC_MUX, 6501594233eSMikhail Kshevetskiy REG_GPIO_PON_MODE, 6511594233eSMikhail Kshevetskiy GPIO_PON_MODE_MASK | GPIO_PON_ALT_MODE_MASK, 6521594233eSMikhail Kshevetskiy GPIO_PON_ALT_MODE_MASK 6531594233eSMikhail Kshevetskiy }, 6541594233eSMikhail Kshevetskiy .regmap_size = 1, 655900b49e6SMikhail Kshevetskiy }, 656900b49e6SMikhail Kshevetskiy }; 657900b49e6SMikhail Kshevetskiy 65813243f41SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group olt_func_group[] = { 65913243f41SMikhail Kshevetskiy { 66013243f41SMikhail Kshevetskiy .name = "olt", 66113243f41SMikhail Kshevetskiy .regmap[0] = { 66213243f41SMikhail Kshevetskiy AIROHA_FUNC_MUX, 66313243f41SMikhail Kshevetskiy REG_GPIO_PON_MODE, 66413243f41SMikhail Kshevetskiy GPIO_OLT_MODE_MASK, 66513243f41SMikhail Kshevetskiy GPIO_OLT_MODE_MASK 66613243f41SMikhail Kshevetskiy }, 66713243f41SMikhail Kshevetskiy .regmap_size = 1, 66813243f41SMikhail Kshevetskiy }, 66913243f41SMikhail Kshevetskiy }; 67013243f41SMikhail Kshevetskiy 671900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group tod_1pps_func_group[] = { 672900b49e6SMikhail Kshevetskiy { 673900b49e6SMikhail Kshevetskiy .name = "pon_tod_1pps", 674900b49e6SMikhail Kshevetskiy .regmap[0] = { 675900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 676c4776d20SMikhail Kshevetskiy REG_SW_TOD_1PPS_MODE, 677900b49e6SMikhail Kshevetskiy PON_TOD_1PPS_MODE_MASK, 678900b49e6SMikhail Kshevetskiy PON_TOD_1PPS_MODE_MASK 679900b49e6SMikhail Kshevetskiy }, 680900b49e6SMikhail Kshevetskiy .regmap_size = 1, 681900b49e6SMikhail Kshevetskiy }, { 682900b49e6SMikhail Kshevetskiy .name = "gsw_tod_1pps", 683900b49e6SMikhail Kshevetskiy .regmap[0] = { 684900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 685c4776d20SMikhail Kshevetskiy REG_SW_TOD_1PPS_MODE, 686900b49e6SMikhail Kshevetskiy GSW_TOD_1PPS_MODE_MASK, 687900b49e6SMikhail Kshevetskiy GSW_TOD_1PPS_MODE_MASK 688900b49e6SMikhail Kshevetskiy }, 689900b49e6SMikhail Kshevetskiy .regmap_size = 1, 690900b49e6SMikhail Kshevetskiy }, 691900b49e6SMikhail Kshevetskiy }; 692900b49e6SMikhail Kshevetskiy 693900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group sipo_func_group[] = { 694900b49e6SMikhail Kshevetskiy { 695900b49e6SMikhail Kshevetskiy .name = "sipo", 696900b49e6SMikhail Kshevetskiy .regmap[0] = { 697900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 698900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 699900b49e6SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK, 700900b49e6SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK 701900b49e6SMikhail Kshevetskiy }, 702900b49e6SMikhail Kshevetskiy .regmap_size = 1, 703900b49e6SMikhail Kshevetskiy }, { 704900b49e6SMikhail Kshevetskiy .name = "sipo_rclk", 705900b49e6SMikhail Kshevetskiy .regmap[0] = { 706900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 707900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 708900b49e6SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK, 709900b49e6SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK 710900b49e6SMikhail Kshevetskiy }, 711900b49e6SMikhail Kshevetskiy .regmap_size = 1, 712900b49e6SMikhail Kshevetskiy }, 713900b49e6SMikhail Kshevetskiy }; 714900b49e6SMikhail Kshevetskiy 715bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group mdio_func_group[] = { 716900b49e6SMikhail Kshevetskiy { 717900b49e6SMikhail Kshevetskiy .name = "mdio", 718900b49e6SMikhail Kshevetskiy .regmap[0] = { 719900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 720900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 721bf3cdf90SMikhail Kshevetskiy MDC_0_GPIO_MODE_MASK | MDIO_0_GPIO_MODE_MASK, 722900b49e6SMikhail Kshevetskiy 0 723900b49e6SMikhail Kshevetskiy }, 724900b49e6SMikhail Kshevetskiy .regmap_size = 1, 725900b49e6SMikhail Kshevetskiy }, 726900b49e6SMikhail Kshevetskiy }; 727900b49e6SMikhail Kshevetskiy 728900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group uart_func_group[] = { 729900b49e6SMikhail Kshevetskiy { 730900b49e6SMikhail Kshevetskiy .name = "uart2", 731900b49e6SMikhail Kshevetskiy .regmap[0] = { 732900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 733900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 734900b49e6SMikhail Kshevetskiy GPIO_UART2_MODE_MASK, 735900b49e6SMikhail Kshevetskiy GPIO_UART2_MODE_MASK 736900b49e6SMikhail Kshevetskiy }, 737900b49e6SMikhail Kshevetskiy .regmap_size = 1, 738900b49e6SMikhail Kshevetskiy }, { 739900b49e6SMikhail Kshevetskiy .name = "uart2_cts_rts", 740900b49e6SMikhail Kshevetskiy .regmap[0] = { 741900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 742900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 743900b49e6SMikhail Kshevetskiy GPIO_UART2_MODE_MASK | GPIO_UART2_CTS_RTS_MODE_MASK, 744900b49e6SMikhail Kshevetskiy GPIO_UART2_MODE_MASK | GPIO_UART2_CTS_RTS_MODE_MASK 745900b49e6SMikhail Kshevetskiy }, 746900b49e6SMikhail Kshevetskiy .regmap_size = 1, 747900b49e6SMikhail Kshevetskiy }, { 748900b49e6SMikhail Kshevetskiy .name = "hsuart", 749900b49e6SMikhail Kshevetskiy .regmap[0] = { 750900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 751900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 752900b49e6SMikhail Kshevetskiy GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK, 753900b49e6SMikhail Kshevetskiy GPIO_HSUART_MODE_MASK 754900b49e6SMikhail Kshevetskiy }, 755900b49e6SMikhail Kshevetskiy .regmap_size = 1, 756900b49e6SMikhail Kshevetskiy }, 757900b49e6SMikhail Kshevetskiy { 758900b49e6SMikhail Kshevetskiy .name = "hsuart_cts_rts", 759900b49e6SMikhail Kshevetskiy .regmap[0] = { 760900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 761900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 762900b49e6SMikhail Kshevetskiy GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK, 763900b49e6SMikhail Kshevetskiy GPIO_HSUART_MODE_MASK | GPIO_HSUART_CTS_RTS_MODE_MASK 764900b49e6SMikhail Kshevetskiy }, 765900b49e6SMikhail Kshevetskiy .regmap_size = 1, 766900b49e6SMikhail Kshevetskiy }, { 767900b49e6SMikhail Kshevetskiy .name = "uart4", 768900b49e6SMikhail Kshevetskiy .regmap[0] = { 769900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 770900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 771900b49e6SMikhail Kshevetskiy GPIO_UART4_MODE_MASK, 772900b49e6SMikhail Kshevetskiy GPIO_UART4_MODE_MASK 773900b49e6SMikhail Kshevetskiy }, 774900b49e6SMikhail Kshevetskiy .regmap_size = 1, 775900b49e6SMikhail Kshevetskiy }, { 776900b49e6SMikhail Kshevetskiy .name = "uart5", 777900b49e6SMikhail Kshevetskiy .regmap[0] = { 778900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 779900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 780900b49e6SMikhail Kshevetskiy GPIO_UART5_MODE_MASK, 781900b49e6SMikhail Kshevetskiy GPIO_UART5_MODE_MASK 782900b49e6SMikhail Kshevetskiy }, 783900b49e6SMikhail Kshevetskiy .regmap_size = 1, 78424cde06bSMikhail Kshevetskiy }, { 78524cde06bSMikhail Kshevetskiy .name = "npu_uart", 78624cde06bSMikhail Kshevetskiy .regmap[0] = { 78724cde06bSMikhail Kshevetskiy AIROHA_FUNC_MUX, 78824cde06bSMikhail Kshevetskiy REG_NPU_UART_EN, 78924cde06bSMikhail Kshevetskiy NPU_UART_EN_MASK, 79024cde06bSMikhail Kshevetskiy NPU_UART_EN_MASK 79124cde06bSMikhail Kshevetskiy }, 79224cde06bSMikhail Kshevetskiy .regmap_size = 1, 793900b49e6SMikhail Kshevetskiy }, 794900b49e6SMikhail Kshevetskiy }; 795900b49e6SMikhail Kshevetskiy 796bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group i2c_func_group[] = { 797900b49e6SMikhail Kshevetskiy { 798900b49e6SMikhail Kshevetskiy .name = "i2c0", 799900b49e6SMikhail Kshevetskiy .regmap[0] = { 800900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 801900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 802bf3cdf90SMikhail Kshevetskiy I2C0_SCL_GPIO_MODE_MASK | I2C0_SDA_GPIO_MODE_MASK, 803900b49e6SMikhail Kshevetskiy 0 804900b49e6SMikhail Kshevetskiy }, 805900b49e6SMikhail Kshevetskiy .regmap_size = 1, 806900b49e6SMikhail Kshevetskiy }, { 807900b49e6SMikhail Kshevetskiy .name = "i2c1", 808900b49e6SMikhail Kshevetskiy .regmap[0] = { 809900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 810900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 811bf3cdf90SMikhail Kshevetskiy I2C1_SCL_GPIO_MODE_MASK | I2C1_SDA_GPIO_MODE_MASK, 812900b49e6SMikhail Kshevetskiy 0 813900b49e6SMikhail Kshevetskiy }, 814900b49e6SMikhail Kshevetskiy .regmap_size = 1, 815900b49e6SMikhail Kshevetskiy }, 816900b49e6SMikhail Kshevetskiy }; 817900b49e6SMikhail Kshevetskiy 818900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group jtag_func_group[] = { 819900b49e6SMikhail Kshevetskiy { 820900b49e6SMikhail Kshevetskiy .name = "jtag_udi", 821900b49e6SMikhail Kshevetskiy .regmap[0] = { 822900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 823900b49e6SMikhail Kshevetskiy REG_NPU_UART_EN, 824900b49e6SMikhail Kshevetskiy JTAG_UDI_EN_MASK, 825900b49e6SMikhail Kshevetskiy JTAG_UDI_EN_MASK 826900b49e6SMikhail Kshevetskiy }, 827900b49e6SMikhail Kshevetskiy .regmap_size = 1, 828900b49e6SMikhail Kshevetskiy }, { 829900b49e6SMikhail Kshevetskiy .name = "jtag_dfd", 830900b49e6SMikhail Kshevetskiy .regmap[0] = { 831900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 832900b49e6SMikhail Kshevetskiy REG_NPU_UART_EN, 833900b49e6SMikhail Kshevetskiy JTAG_DFD_EN_MASK, 834900b49e6SMikhail Kshevetskiy JTAG_DFD_EN_MASK 835900b49e6SMikhail Kshevetskiy }, 836900b49e6SMikhail Kshevetskiy .regmap_size = 1, 837900b49e6SMikhail Kshevetskiy }, 838900b49e6SMikhail Kshevetskiy }; 839900b49e6SMikhail Kshevetskiy 840900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_func_group[] = { 841900b49e6SMikhail Kshevetskiy { 842900b49e6SMikhail Kshevetskiy .name = "pcm1", 843900b49e6SMikhail Kshevetskiy .regmap[0] = { 844900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 845900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 846900b49e6SMikhail Kshevetskiy GPIO_PCM1_MODE_MASK, 847900b49e6SMikhail Kshevetskiy GPIO_PCM1_MODE_MASK 848900b49e6SMikhail Kshevetskiy }, 849900b49e6SMikhail Kshevetskiy .regmap_size = 1, 850900b49e6SMikhail Kshevetskiy }, { 851900b49e6SMikhail Kshevetskiy .name = "pcm2", 852900b49e6SMikhail Kshevetskiy .regmap[0] = { 853900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 854900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 855900b49e6SMikhail Kshevetskiy GPIO_PCM2_MODE_MASK, 856900b49e6SMikhail Kshevetskiy GPIO_PCM2_MODE_MASK 857900b49e6SMikhail Kshevetskiy }, 858900b49e6SMikhail Kshevetskiy .regmap_size = 1, 859900b49e6SMikhail Kshevetskiy }, 860900b49e6SMikhail Kshevetskiy }; 861900b49e6SMikhail Kshevetskiy 862900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group spi_func_group[] = { 863900b49e6SMikhail Kshevetskiy { 864900b49e6SMikhail Kshevetskiy .name = "spi_quad", 865900b49e6SMikhail Kshevetskiy .regmap[0] = { 866900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 867900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 868900b49e6SMikhail Kshevetskiy GPIO_SPI_QUAD_MODE_MASK, 869900b49e6SMikhail Kshevetskiy GPIO_SPI_QUAD_MODE_MASK 870900b49e6SMikhail Kshevetskiy }, 871900b49e6SMikhail Kshevetskiy .regmap_size = 1, 872900b49e6SMikhail Kshevetskiy }, { 873900b49e6SMikhail Kshevetskiy .name = "spi_cs1", 874900b49e6SMikhail Kshevetskiy .regmap[0] = { 875900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 876900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 877900b49e6SMikhail Kshevetskiy GPIO_SPI_CS1_MODE_MASK, 878900b49e6SMikhail Kshevetskiy GPIO_SPI_CS1_MODE_MASK 879900b49e6SMikhail Kshevetskiy }, 880900b49e6SMikhail Kshevetskiy .regmap_size = 1, 881900b49e6SMikhail Kshevetskiy }, { 882900b49e6SMikhail Kshevetskiy .name = "spi_cs2", 883900b49e6SMikhail Kshevetskiy .regmap[0] = { 884900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 885900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 886900b49e6SMikhail Kshevetskiy GPIO_SPI_CS2_MODE_MASK, 887900b49e6SMikhail Kshevetskiy GPIO_SPI_CS2_MODE_MASK 888900b49e6SMikhail Kshevetskiy }, 889900b49e6SMikhail Kshevetskiy .regmap_size = 1, 890900b49e6SMikhail Kshevetskiy }, { 891900b49e6SMikhail Kshevetskiy .name = "spi_cs3", 892900b49e6SMikhail Kshevetskiy .regmap[0] = { 893900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 894900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 895900b49e6SMikhail Kshevetskiy GPIO_SPI_CS3_MODE_MASK, 896900b49e6SMikhail Kshevetskiy GPIO_SPI_CS3_MODE_MASK 897900b49e6SMikhail Kshevetskiy }, 898900b49e6SMikhail Kshevetskiy .regmap_size = 1, 899900b49e6SMikhail Kshevetskiy }, { 900900b49e6SMikhail Kshevetskiy .name = "spi_cs4", 901900b49e6SMikhail Kshevetskiy .regmap[0] = { 902900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 903900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 904900b49e6SMikhail Kshevetskiy GPIO_SPI_CS4_MODE_MASK, 905900b49e6SMikhail Kshevetskiy GPIO_SPI_CS4_MODE_MASK 906900b49e6SMikhail Kshevetskiy }, 907900b49e6SMikhail Kshevetskiy .regmap_size = 1, 908900b49e6SMikhail Kshevetskiy }, 909900b49e6SMikhail Kshevetskiy }; 910900b49e6SMikhail Kshevetskiy 911bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_spi_func_group[] = { 912900b49e6SMikhail Kshevetskiy { 913900b49e6SMikhail Kshevetskiy .name = "pcm_spi", 914900b49e6SMikhail Kshevetskiy .regmap[0] = { 915900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 916900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 917900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_MODE_MASK, 918900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_MODE_MASK 919900b49e6SMikhail Kshevetskiy }, 920900b49e6SMikhail Kshevetskiy .regmap_size = 1, 921900b49e6SMikhail Kshevetskiy }, { 922900b49e6SMikhail Kshevetskiy .name = "pcm_spi_int", 923900b49e6SMikhail Kshevetskiy .regmap[0] = { 924900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 925900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 926900b49e6SMikhail Kshevetskiy GPIO_PCM_INT_MODE_MASK, 927900b49e6SMikhail Kshevetskiy GPIO_PCM_INT_MODE_MASK 928900b49e6SMikhail Kshevetskiy }, 929900b49e6SMikhail Kshevetskiy .regmap_size = 1, 930900b49e6SMikhail Kshevetskiy }, { 931900b49e6SMikhail Kshevetskiy .name = "pcm_spi_rst", 932900b49e6SMikhail Kshevetskiy .regmap[0] = { 933900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 934900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 935900b49e6SMikhail Kshevetskiy GPIO_PCM_RESET_MODE_MASK, 936900b49e6SMikhail Kshevetskiy GPIO_PCM_RESET_MODE_MASK 937900b49e6SMikhail Kshevetskiy }, 938900b49e6SMikhail Kshevetskiy .regmap_size = 1, 939900b49e6SMikhail Kshevetskiy }, { 940900b49e6SMikhail Kshevetskiy .name = "pcm_spi_cs1", 941900b49e6SMikhail Kshevetskiy .regmap[0] = { 942900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 943900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 944900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS1_MODE_MASK, 945900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS1_MODE_MASK 946900b49e6SMikhail Kshevetskiy }, 947900b49e6SMikhail Kshevetskiy .regmap_size = 1, 948900b49e6SMikhail Kshevetskiy }, { 949900b49e6SMikhail Kshevetskiy .name = "pcm_spi_cs2", 950900b49e6SMikhail Kshevetskiy .regmap[0] = { 951900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 952900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 953bf3cdf90SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_MASK, 954bf3cdf90SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_MASK 955900b49e6SMikhail Kshevetskiy }, 956900b49e6SMikhail Kshevetskiy .regmap_size = 1, 957900b49e6SMikhail Kshevetskiy }, { 958900b49e6SMikhail Kshevetskiy .name = "pcm_spi_cs3", 959900b49e6SMikhail Kshevetskiy .regmap[0] = { 960900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 961900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 962900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS3_MODE_MASK, 963900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS3_MODE_MASK 964900b49e6SMikhail Kshevetskiy }, 965900b49e6SMikhail Kshevetskiy .regmap_size = 1, 966900b49e6SMikhail Kshevetskiy }, { 967900b49e6SMikhail Kshevetskiy .name = "pcm_spi_cs4", 968900b49e6SMikhail Kshevetskiy .regmap[0] = { 969900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 970900b49e6SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 971900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS4_MODE_MASK, 972900b49e6SMikhail Kshevetskiy GPIO_PCM_SPI_CS4_MODE_MASK 973900b49e6SMikhail Kshevetskiy }, 974900b49e6SMikhail Kshevetskiy .regmap_size = 1, 975900b49e6SMikhail Kshevetskiy }, 976900b49e6SMikhail Kshevetskiy }; 977900b49e6SMikhail Kshevetskiy 978900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group emmc_func_group[] = { 979900b49e6SMikhail Kshevetskiy { 980900b49e6SMikhail Kshevetskiy .name = "emmc", 981900b49e6SMikhail Kshevetskiy .regmap[0] = { 982900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 983900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 984900b49e6SMikhail Kshevetskiy GPIO_EMMC_MODE_MASK, 985900b49e6SMikhail Kshevetskiy GPIO_EMMC_MODE_MASK 986900b49e6SMikhail Kshevetskiy }, 987900b49e6SMikhail Kshevetskiy .regmap_size = 1, 988900b49e6SMikhail Kshevetskiy }, 989900b49e6SMikhail Kshevetskiy }; 990900b49e6SMikhail Kshevetskiy 991900b49e6SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pnand_func_group[] = { 992900b49e6SMikhail Kshevetskiy { 993900b49e6SMikhail Kshevetskiy .name = "pnand", 994900b49e6SMikhail Kshevetskiy .regmap[0] = { 995900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 996900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 997900b49e6SMikhail Kshevetskiy GPIO_PARALLEL_NAND_MODE_MASK, 998900b49e6SMikhail Kshevetskiy GPIO_PARALLEL_NAND_MODE_MASK 999900b49e6SMikhail Kshevetskiy }, 1000900b49e6SMikhail Kshevetskiy .regmap_size = 1, 1001900b49e6SMikhail Kshevetskiy }, 1002900b49e6SMikhail Kshevetskiy }; 1003900b49e6SMikhail Kshevetskiy 1004bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group gpio_func_group[] = { 1005900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio39", GPIO39_FLASH_MODE_CFG, 1006bf3cdf90SMikhail Kshevetskiy I2C0_SCL_GPIO_MODE_MASK), 1007900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio40", GPIO40_FLASH_MODE_CFG, 1008bf3cdf90SMikhail Kshevetskiy I2C0_SDA_GPIO_MODE_MASK), 1009900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio41", GPIO41_FLASH_MODE_CFG, 1010bf3cdf90SMikhail Kshevetskiy I2C1_SCL_GPIO_MODE_MASK), 1011900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio42", GPIO42_FLASH_MODE_CFG, 1012bf3cdf90SMikhail Kshevetskiy I2C1_SDA_GPIO_MODE_MASK), 1013900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio43", GPIO43_FLASH_MODE_CFG, 1014bf3cdf90SMikhail Kshevetskiy SPI_CLK_GPIO_MODE_MASK), 1015900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio44", GPIO44_FLASH_MODE_CFG, 1016bf3cdf90SMikhail Kshevetskiy SPI_CS_GPIO_MODE_MASK), 1017900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio45", GPIO45_FLASH_MODE_CFG, 1018bf3cdf90SMikhail Kshevetskiy SPI_MOSI_GPIO_MODE_MASK), 1019900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio46", GPIO46_FLASH_MODE_CFG, 1020bf3cdf90SMikhail Kshevetskiy SPI_MISO_GPIO_MODE_MASK), 1021900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio47", GPIO47_FLASH_MODE_CFG, 1022bf3cdf90SMikhail Kshevetskiy UART_TXD_GPIO_MODE_MASK), 1023900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio48", GPIO48_FLASH_MODE_CFG, 1024bf3cdf90SMikhail Kshevetskiy UART_RXD_GPIO_MODE_MASK), 1025900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio49", GPIO49_FLASH_MODE_CFG, 1026900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK), 1027900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio50", GPIO50_FLASH_MODE_CFG, 1028900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK), 1029900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio51", GPIO51_FLASH_MODE_CFG, 1030bf3cdf90SMikhail Kshevetskiy MDC_0_GPIO_MODE_MASK), 1031bf3cdf90SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO("gpio52", MDIO_0_GPIO_MODE_MASK), 1032900b49e6SMikhail Kshevetskiy }; 1033900b49e6SMikhail Kshevetskiy 1034bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = { 1035900b49e6SMikhail Kshevetskiy { 1036900b49e6SMikhail Kshevetskiy .name = "pcie_reset0", 1037900b49e6SMikhail Kshevetskiy .regmap[0] = { 1038900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 1039900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 1040900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK, 1041900b49e6SMikhail Kshevetskiy 0 1042900b49e6SMikhail Kshevetskiy }, 1043900b49e6SMikhail Kshevetskiy .regmap_size = 1, 1044900b49e6SMikhail Kshevetskiy }, { 1045900b49e6SMikhail Kshevetskiy .name = "pcie_reset1", 1046900b49e6SMikhail Kshevetskiy .regmap[0] = { 1047900b49e6SMikhail Kshevetskiy AIROHA_FUNC_MUX, 1048900b49e6SMikhail Kshevetskiy REG_GPIO_PON_MODE, 1049900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK, 1050900b49e6SMikhail Kshevetskiy 0 1051900b49e6SMikhail Kshevetskiy }, 1052900b49e6SMikhail Kshevetskiy .regmap_size = 1, 1053900b49e6SMikhail Kshevetskiy }, 1054900b49e6SMikhail Kshevetskiy }; 1055900b49e6SMikhail Kshevetskiy 1056bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pwm_func_group[] = { 1057900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio0", GPIO0_FLASH_MODE_CFG), 1058900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio1", GPIO1_FLASH_MODE_CFG), 1059900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio2", GPIO2_FLASH_MODE_CFG), 1060900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio3", GPIO3_FLASH_MODE_CFG), 1061900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio4", GPIO4_FLASH_MODE_CFG), 1062900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio5", GPIO5_FLASH_MODE_CFG), 1063900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio6", GPIO6_FLASH_MODE_CFG), 1064900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio7", GPIO7_FLASH_MODE_CFG), 1065900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio8", GPIO8_FLASH_MODE_CFG), 1066900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio9", GPIO9_FLASH_MODE_CFG), 1067900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio10", GPIO10_FLASH_MODE_CFG), 1068900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio11", GPIO11_FLASH_MODE_CFG), 1069900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio12", GPIO12_FLASH_MODE_CFG), 1070900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio13", GPIO13_FLASH_MODE_CFG), 1071900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio14", GPIO14_FLASH_MODE_CFG), 1072900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio15", GPIO15_FLASH_MODE_CFG), 1073900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio16", GPIO16_FLASH_MODE_CFG), 1074900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio17", GPIO17_FLASH_MODE_CFG), 1075900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio18", GPIO18_FLASH_MODE_CFG), 1076900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio19", GPIO19_FLASH_MODE_CFG), 1077900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio20", GPIO20_FLASH_MODE_CFG), 1078900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio21", GPIO21_FLASH_MODE_CFG), 1079900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio22", GPIO22_FLASH_MODE_CFG), 1080900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio23", GPIO23_FLASH_MODE_CFG), 1081900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio24", GPIO24_FLASH_MODE_CFG), 1082900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio25", GPIO25_FLASH_MODE_CFG), 1083900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio26", GPIO26_FLASH_MODE_CFG), 1084900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio27", GPIO27_FLASH_MODE_CFG), 1085900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio28", GPIO28_FLASH_MODE_CFG), 1086900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio29", GPIO29_FLASH_MODE_CFG), 1087900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio30", GPIO30_FLASH_MODE_CFG), 1088900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio31", GPIO31_FLASH_MODE_CFG), 1089900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio36", GPIO36_FLASH_MODE_CFG), 1090900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio37", GPIO37_FLASH_MODE_CFG), 1091900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio38", GPIO38_FLASH_MODE_CFG), 1092900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio39", GPIO39_FLASH_MODE_CFG, 1093bf3cdf90SMikhail Kshevetskiy I2C0_SCL_GPIO_MODE_MASK), 1094900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio40", GPIO40_FLASH_MODE_CFG, 1095bf3cdf90SMikhail Kshevetskiy I2C0_SDA_GPIO_MODE_MASK), 1096900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio41", GPIO41_FLASH_MODE_CFG, 1097bf3cdf90SMikhail Kshevetskiy I2C1_SCL_GPIO_MODE_MASK), 1098900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio42", GPIO42_FLASH_MODE_CFG, 1099bf3cdf90SMikhail Kshevetskiy I2C1_SDA_GPIO_MODE_MASK), 1100900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio43", GPIO43_FLASH_MODE_CFG, 1101bf3cdf90SMikhail Kshevetskiy SPI_CLK_GPIO_MODE_MASK), 1102900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio44", GPIO44_FLASH_MODE_CFG, 1103bf3cdf90SMikhail Kshevetskiy SPI_CS_GPIO_MODE_MASK), 1104900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio45", GPIO45_FLASH_MODE_CFG, 1105bf3cdf90SMikhail Kshevetskiy SPI_MOSI_GPIO_MODE_MASK), 1106900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio46", GPIO46_FLASH_MODE_CFG, 1107bf3cdf90SMikhail Kshevetskiy SPI_MISO_GPIO_MODE_MASK), 1108900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio47", GPIO47_FLASH_MODE_CFG, 1109bf3cdf90SMikhail Kshevetskiy UART_TXD_GPIO_MODE_MASK), 1110900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio48", GPIO48_FLASH_MODE_CFG, 1111bf3cdf90SMikhail Kshevetskiy UART_RXD_GPIO_MODE_MASK), 1112900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio49", GPIO49_FLASH_MODE_CFG, 1113900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK), 1114900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio50", GPIO50_FLASH_MODE_CFG, 1115900b49e6SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK), 1116900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio51", GPIO51_FLASH_MODE_CFG, 1117bf3cdf90SMikhail Kshevetskiy MDC_0_GPIO_MODE_MASK), 1118900b49e6SMikhail Kshevetskiy }; 1119900b49e6SMikhail Kshevetskiy 1120bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = { 1121900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio1", GPIO_LAN0_LED0_MODE_MASK, 1122900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)), 1123900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio2", GPIO_LAN1_LED0_MODE_MASK, 1124900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)), 1125900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio3", GPIO_LAN2_LED0_MODE_MASK, 1126900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)), 1127900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio4", GPIO_LAN3_LED0_MODE_MASK, 1128900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)), 1129900b49e6SMikhail Kshevetskiy }; 1130900b49e6SMikhail Kshevetskiy 1131bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = { 1132900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio1", GPIO_LAN0_LED0_MODE_MASK, 1133900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)), 1134900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio2", GPIO_LAN1_LED0_MODE_MASK, 1135900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)), 1136900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio3", GPIO_LAN2_LED0_MODE_MASK, 1137900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)), 1138900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio4", GPIO_LAN3_LED0_MODE_MASK, 1139900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)), 1140900b49e6SMikhail Kshevetskiy }; 1141900b49e6SMikhail Kshevetskiy 1142bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = { 1143900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio1", GPIO_LAN0_LED0_MODE_MASK, 1144900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)), 1145900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio2", GPIO_LAN1_LED0_MODE_MASK, 1146900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)), 1147900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio3", GPIO_LAN2_LED0_MODE_MASK, 1148900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)), 1149900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio4", GPIO_LAN3_LED0_MODE_MASK, 1150900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), 1151900b49e6SMikhail Kshevetskiy }; 1152900b49e6SMikhail Kshevetskiy 1153bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = { 1154900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio1", GPIO_LAN0_LED0_MODE_MASK, 1155900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)), 1156900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio2", GPIO_LAN1_LED0_MODE_MASK, 1157900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)), 1158900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio3", GPIO_LAN2_LED0_MODE_MASK, 1159900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)), 1160900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio4", GPIO_LAN3_LED0_MODE_MASK, 1161900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)), 1162900b49e6SMikhail Kshevetskiy }; 1163900b49e6SMikhail Kshevetskiy 1164bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = { 1165900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio8", GPIO_LAN0_LED1_MODE_MASK, 1166900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)), 1167900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio9", GPIO_LAN1_LED1_MODE_MASK, 1168900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)), 1169900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio10", GPIO_LAN2_LED1_MODE_MASK, 1170900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)), 1171900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio11", GPIO_LAN3_LED1_MODE_MASK, 1172900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)), 1173900b49e6SMikhail Kshevetskiy }; 1174900b49e6SMikhail Kshevetskiy 1175bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = { 1176900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio8", GPIO_LAN0_LED1_MODE_MASK, 1177900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)), 1178900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio9", GPIO_LAN1_LED1_MODE_MASK, 1179900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)), 1180900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio10", GPIO_LAN2_LED1_MODE_MASK, 1181900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)), 1182900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio11", GPIO_LAN3_LED1_MODE_MASK, 1183900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)), 1184900b49e6SMikhail Kshevetskiy }; 1185900b49e6SMikhail Kshevetskiy 1186bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = { 1187900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio8", GPIO_LAN0_LED1_MODE_MASK, 1188900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)), 1189900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio9", GPIO_LAN1_LED1_MODE_MASK, 1190900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)), 1191900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio10", GPIO_LAN2_LED1_MODE_MASK, 1192900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)), 1193900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio11", GPIO_LAN3_LED1_MODE_MASK, 1194900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), 1195900b49e6SMikhail Kshevetskiy }; 1196900b49e6SMikhail Kshevetskiy 1197bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = { 1198900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio8", GPIO_LAN0_LED1_MODE_MASK, 1199900b49e6SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)), 1200900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio9", GPIO_LAN1_LED1_MODE_MASK, 1201900b49e6SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)), 1202900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio10", GPIO_LAN2_LED1_MODE_MASK, 1203900b49e6SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)), 1204900b49e6SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio11", GPIO_LAN3_LED1_MODE_MASK, 1205900b49e6SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)), 1206900b49e6SMikhail Kshevetskiy }; 1207900b49e6SMikhail Kshevetskiy 1208bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_func pinctrl_funcs[] = { 1209900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pon", pon), 121013243f41SMikhail Kshevetskiy PINCTRL_FUNC_DESC("olt", olt), 1211900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("tod_1pps", tod_1pps), 1212900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("sipo", sipo), 1213bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("mdio", mdio), 1214900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("uart", uart), 1215bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("i2c", i2c), 1216900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("jtag", jtag), 1217900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcm", pcm), 1218900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("spi", spi), 1219bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcm_spi", pcm_spi), 1220900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("emmc", emmc), 1221900b49e6SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pnand", pnand), 1222bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("gpio", gpio), 1223bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcie_reset", pcie_reset), 1224bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pwm", pwm), 1225bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy1_led0", phy1_led0), 1226bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy2_led0", phy2_led0), 1227bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy3_led0", phy3_led0), 1228bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy4_led0", phy4_led0), 1229bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy1_led1", phy1_led1), 1230bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy2_led1", phy2_led1), 1231bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy3_led1", phy3_led1), 1232bf3cdf90SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy4_led1", phy4_led1), 1233900b49e6SMikhail Kshevetskiy }; 1234900b49e6SMikhail Kshevetskiy 1235bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pullup_conf[] = { 1236900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_GPIO_L_PU, BIT(0)), 1237900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_GPIO_L_PU, BIT(1)), 1238900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_GPIO_L_PU, BIT(2)), 1239900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_GPIO_L_PU, BIT(3)), 1240900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_GPIO_L_PU, BIT(4)), 1241900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_GPIO_L_PU, BIT(5)), 1242900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_GPIO_L_PU, BIT(6)), 1243900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_GPIO_L_PU, BIT(7)), 1244900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(10, REG_GPIO_L_PU, BIT(8)), 1245900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(11, REG_GPIO_L_PU, BIT(9)), 1246900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_PU, BIT(10)), 1247900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_PU, BIT(11)), 1248900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_PU, BIT(12)), 1249900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_PU, BIT(13)), 1250900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_PU, BIT(14)), 1251900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_PU, BIT(15)), 1252900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_PU, BIT(16)), 1253900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_PU, BIT(17)), 1254900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_PU, BIT(18)), 1255900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_PU, BIT(19)), 1256900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_PU, BIT(20)), 1257900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_PU, BIT(21)), 1258900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_PU, BIT(22)), 1259900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_PU, BIT(23)), 1260900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_PU, BIT(24)), 1261900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_PU, BIT(25)), 1262900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_PU, BIT(26)), 1263900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(27)), 1264900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(28)), 1265900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(29)), 1266900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(30)), 1267900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(31)), 1268900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_H_PU, BIT(0)), 1269900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_H_PU, BIT(1)), 1270900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_H_PU, BIT(2)), 1271900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_H_PU, BIT(3)), 1272900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_H_PU, BIT(4)), 1273900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_H_PU, BIT(5)), 1274900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_GPIO_H_PU, BIT(6)), 1275900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_PU, I2C_SCL_PU_MASK), 1276900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(42, REG_I2C_SDA_PU, I2C_SDA_PU_MASK), 1277bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(43, REG_I2C_SDA_PU, I2C1_SCL_PU_MASK), 1278bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(44, REG_I2C_SDA_PU, I2C1_SDA_PU_MASK), 1279900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(45, REG_I2C_SDA_PU, SPI_CLK_PU_MASK), 1280900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(46, REG_I2C_SDA_PU, SPI_CS0_PU_MASK), 1281900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(47, REG_I2C_SDA_PU, SPI_MOSI_PU_MASK), 1282900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(48, REG_I2C_SDA_PU, SPI_MISO_PU_MASK), 1283900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(49, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), 1284900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(50, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), 1285900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(51, REG_I2C_SDA_PU, PCIE0_RESET_PU_MASK), 1286900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(52, REG_I2C_SDA_PU, PCIE1_RESET_PU_MASK), 1287bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(53, REG_I2C_SDA_PU, MDC_0_PU_MASK), 1288bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(54, REG_I2C_SDA_PU, MDIO_0_PU_MASK), 1289900b49e6SMikhail Kshevetskiy }; 1290900b49e6SMikhail Kshevetskiy 1291bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pulldown_conf[] = { 1292900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_GPIO_L_PD, BIT(0)), 1293900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_GPIO_L_PD, BIT(1)), 1294900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_GPIO_L_PD, BIT(2)), 1295900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_GPIO_L_PD, BIT(3)), 1296900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_GPIO_L_PD, BIT(4)), 1297900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_GPIO_L_PD, BIT(5)), 1298900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_GPIO_L_PD, BIT(6)), 1299900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_GPIO_L_PD, BIT(7)), 1300900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(10, REG_GPIO_L_PD, BIT(8)), 1301900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(11, REG_GPIO_L_PD, BIT(9)), 1302900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_PD, BIT(10)), 1303900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_PD, BIT(11)), 1304900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_PD, BIT(12)), 1305900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_PD, BIT(13)), 1306900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_PD, BIT(14)), 1307900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_PD, BIT(15)), 1308900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_PD, BIT(16)), 1309900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_PD, BIT(17)), 1310900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_PD, BIT(18)), 1311900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_PD, BIT(19)), 1312900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_PD, BIT(20)), 1313900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_PD, BIT(21)), 1314900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_PD, BIT(22)), 1315900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_PD, BIT(23)), 1316900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_PD, BIT(24)), 1317900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_PD, BIT(25)), 1318900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_PD, BIT(26)), 1319900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(27)), 1320900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(28)), 1321900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(29)), 1322900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(30)), 1323900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(31)), 1324900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_H_PD, BIT(0)), 1325900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_H_PD, BIT(1)), 1326900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_H_PD, BIT(2)), 1327900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_H_PD, BIT(3)), 1328900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_H_PD, BIT(4)), 1329900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_H_PD, BIT(5)), 1330900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_GPIO_H_PD, BIT(6)), 1331900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_PD, I2C_SCL_PD_MASK), 1332900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(42, REG_I2C_SDA_PD, I2C_SDA_PD_MASK), 1333bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(43, REG_I2C_SDA_PD, I2C1_SCL_PD_MASK), 1334bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(44, REG_I2C_SDA_PD, I2C1_SDA_PD_MASK), 1335900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(45, REG_I2C_SDA_PD, SPI_CLK_PD_MASK), 1336900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(46, REG_I2C_SDA_PD, SPI_CS0_PD_MASK), 1337900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(47, REG_I2C_SDA_PD, SPI_MOSI_PD_MASK), 1338900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(48, REG_I2C_SDA_PD, SPI_MISO_PD_MASK), 1339900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(49, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), 1340900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(50, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), 1341900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(51, REG_I2C_SDA_PD, PCIE0_RESET_PD_MASK), 1342900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(52, REG_I2C_SDA_PD, PCIE1_RESET_PD_MASK), 1343bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(53, REG_I2C_SDA_PD, MDC_0_PD_MASK), 1344bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(54, REG_I2C_SDA_PD, MDIO_0_PD_MASK), 1345900b49e6SMikhail Kshevetskiy }; 1346900b49e6SMikhail Kshevetskiy 1347bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e2_conf[] = { 1348900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_GPIO_L_E2, BIT(0)), 1349900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_GPIO_L_E2, BIT(1)), 1350900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_GPIO_L_E2, BIT(2)), 1351900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_GPIO_L_E2, BIT(3)), 1352900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_GPIO_L_E2, BIT(4)), 1353900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_GPIO_L_E2, BIT(5)), 1354900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_GPIO_L_E2, BIT(6)), 1355900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_GPIO_L_E2, BIT(7)), 1356900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(10, REG_GPIO_L_E2, BIT(8)), 1357900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(11, REG_GPIO_L_E2, BIT(9)), 1358900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_E2, BIT(10)), 1359900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_E2, BIT(11)), 1360900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_E2, BIT(12)), 1361900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_E2, BIT(13)), 1362900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_E2, BIT(14)), 1363900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_E2, BIT(15)), 1364900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_E2, BIT(16)), 1365900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_E2, BIT(17)), 1366900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_E2, BIT(18)), 1367900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_E2, BIT(19)), 1368900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_E2, BIT(20)), 1369900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_E2, BIT(21)), 1370900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_E2, BIT(22)), 1371900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_E2, BIT(23)), 1372900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_E2, BIT(24)), 1373900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_E2, BIT(25)), 1374900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_E2, BIT(26)), 1375900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(27)), 1376900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(28)), 1377900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(29)), 1378900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(30)), 1379900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(31)), 1380900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_H_E2, BIT(0)), 1381900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_H_E2, BIT(1)), 1382900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_H_E2, BIT(2)), 1383900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_H_E2, BIT(3)), 1384900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_H_E2, BIT(4)), 1385900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_H_E2, BIT(5)), 1386900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_GPIO_H_E2, BIT(6)), 1387900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_E2, I2C_SCL_E2_MASK), 1388900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(42, REG_I2C_SDA_E2, I2C_SDA_E2_MASK), 1389bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(43, REG_I2C_SDA_E2, I2C1_SCL_E2_MASK), 1390bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(44, REG_I2C_SDA_E2, I2C1_SDA_E2_MASK), 1391900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(45, REG_I2C_SDA_E2, SPI_CLK_E2_MASK), 1392900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(46, REG_I2C_SDA_E2, SPI_CS0_E2_MASK), 1393900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(47, REG_I2C_SDA_E2, SPI_MOSI_E2_MASK), 1394900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(48, REG_I2C_SDA_E2, SPI_MISO_E2_MASK), 1395900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(49, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), 1396900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(50, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), 1397900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(51, REG_I2C_SDA_E2, PCIE0_RESET_E2_MASK), 1398900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(52, REG_I2C_SDA_E2, PCIE1_RESET_E2_MASK), 1399bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(53, REG_I2C_SDA_E2, MDC_0_E2_MASK), 1400bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(54, REG_I2C_SDA_E2, MDIO_0_E2_MASK), 1401900b49e6SMikhail Kshevetskiy }; 1402900b49e6SMikhail Kshevetskiy 1403bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e4_conf[] = { 1404900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_GPIO_L_E4, BIT(0)), 1405900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_GPIO_L_E4, BIT(1)), 1406900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_GPIO_L_E4, BIT(2)), 1407900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_GPIO_L_E4, BIT(3)), 1408900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_GPIO_L_E4, BIT(4)), 1409900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_GPIO_L_E4, BIT(5)), 1410900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_GPIO_L_E4, BIT(6)), 1411900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_GPIO_L_E4, BIT(7)), 1412900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(10, REG_GPIO_L_E4, BIT(8)), 1413900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(11, REG_GPIO_L_E4, BIT(9)), 1414900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_E4, BIT(10)), 1415900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_E4, BIT(11)), 1416900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_E4, BIT(12)), 1417900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_E4, BIT(13)), 1418900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_E4, BIT(14)), 1419900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_E4, BIT(15)), 1420900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_E4, BIT(16)), 1421900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_E4, BIT(17)), 1422900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_E4, BIT(18)), 1423900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_E4, BIT(19)), 1424900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_E4, BIT(20)), 1425900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_E4, BIT(21)), 1426900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_E4, BIT(22)), 1427900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_E4, BIT(23)), 1428900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_E4, BIT(24)), 1429900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_E4, BIT(25)), 1430900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_E4, BIT(26)), 1431900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(27)), 1432900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(28)), 1433900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(29)), 1434900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(30)), 1435900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(31)), 1436900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_H_E4, BIT(0)), 1437900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_H_E4, BIT(1)), 1438900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_H_E4, BIT(2)), 1439900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_H_E4, BIT(3)), 1440900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_H_E4, BIT(4)), 1441900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_H_E4, BIT(5)), 1442900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_GPIO_H_E4, BIT(6)), 1443900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_E4, I2C_SCL_E4_MASK), 1444900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(42, REG_I2C_SDA_E4, I2C_SDA_E4_MASK), 1445bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(43, REG_I2C_SDA_E4, I2C1_SCL_E4_MASK), 1446bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(44, REG_I2C_SDA_E4, I2C1_SDA_E4_MASK), 1447900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(45, REG_I2C_SDA_E4, SPI_CLK_E4_MASK), 1448900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(46, REG_I2C_SDA_E4, SPI_CS0_E4_MASK), 1449900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(47, REG_I2C_SDA_E4, SPI_MOSI_E4_MASK), 1450900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(48, REG_I2C_SDA_E4, SPI_MISO_E4_MASK), 1451900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(49, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), 1452900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(50, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), 1453900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(51, REG_I2C_SDA_E4, PCIE0_RESET_E4_MASK), 1454900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(52, REG_I2C_SDA_E4, PCIE1_RESET_E4_MASK), 1455bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(53, REG_I2C_SDA_E4, MDC_0_E4_MASK), 1456bf3cdf90SMikhail Kshevetskiy PINCTRL_CONF_DESC(54, REG_I2C_SDA_E4, MDIO_0_E4_MASK), 1457900b49e6SMikhail Kshevetskiy }; 1458900b49e6SMikhail Kshevetskiy 1459bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pcie_rst_od_conf[] = { 1460900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(51, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK), 1461900b49e6SMikhail Kshevetskiy PINCTRL_CONF_DESC(52, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK), 1462900b49e6SMikhail Kshevetskiy }; 1463900b49e6SMikhail Kshevetskiy 1464bf3cdf90SMikhail Kshevetskiy static const struct airoha_pinctrl_match_data pinctrl_match_data = { 1465*18c510baSMikhail Kshevetskiy .chip_scu_compatible = "airoha,en7581-chip-scu", 1466900b49e6SMikhail Kshevetskiy .pinctrl_name = KBUILD_MODNAME, 1467900b49e6SMikhail Kshevetskiy .pinctrl_owner = THIS_MODULE, 1468bf3cdf90SMikhail Kshevetskiy .pins = pinctrl_pins, 1469bf3cdf90SMikhail Kshevetskiy .num_pins = ARRAY_SIZE(pinctrl_pins), 1470bf3cdf90SMikhail Kshevetskiy .grps = pinctrl_groups, 1471bf3cdf90SMikhail Kshevetskiy .num_grps = ARRAY_SIZE(pinctrl_groups), 1472bf3cdf90SMikhail Kshevetskiy .funcs = pinctrl_funcs, 1473bf3cdf90SMikhail Kshevetskiy .num_funcs = ARRAY_SIZE(pinctrl_funcs), 1474900b49e6SMikhail Kshevetskiy .confs_info = { 1475900b49e6SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_PULLUP] = { 1476bf3cdf90SMikhail Kshevetskiy .confs = pinctrl_pullup_conf, 1477bf3cdf90SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_pullup_conf), 1478900b49e6SMikhail Kshevetskiy }, 1479900b49e6SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_PULLDOWN] = { 1480bf3cdf90SMikhail Kshevetskiy .confs = pinctrl_pulldown_conf, 1481bf3cdf90SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_pulldown_conf), 1482900b49e6SMikhail Kshevetskiy }, 1483900b49e6SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_DRIVE_E2] = { 1484bf3cdf90SMikhail Kshevetskiy .confs = pinctrl_drive_e2_conf, 1485bf3cdf90SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_drive_e2_conf), 1486900b49e6SMikhail Kshevetskiy }, 1487900b49e6SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_DRIVE_E4] = { 1488bf3cdf90SMikhail Kshevetskiy .confs = pinctrl_drive_e4_conf, 1489bf3cdf90SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_drive_e4_conf), 1490900b49e6SMikhail Kshevetskiy }, 1491900b49e6SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = { 1492bf3cdf90SMikhail Kshevetskiy .confs = pinctrl_pcie_rst_od_conf, 1493bf3cdf90SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_pcie_rst_od_conf), 1494900b49e6SMikhail Kshevetskiy }, 1495900b49e6SMikhail Kshevetskiy }, 1496900b49e6SMikhail Kshevetskiy }; 1497900b49e6SMikhail Kshevetskiy 1498900b49e6SMikhail Kshevetskiy static const struct of_device_id airoha_pinctrl_of_match[] = { 1499bf3cdf90SMikhail Kshevetskiy { .compatible = "airoha,an7583-pinctrl", .data = &pinctrl_match_data }, 1500900b49e6SMikhail Kshevetskiy { /* sentinel */ } 1501900b49e6SMikhail Kshevetskiy }; 1502900b49e6SMikhail Kshevetskiy MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match); 1503900b49e6SMikhail Kshevetskiy 1504900b49e6SMikhail Kshevetskiy static struct platform_driver airoha_pinctrl_driver = { 1505900b49e6SMikhail Kshevetskiy .probe = airoha_pinctrl_probe, 1506900b49e6SMikhail Kshevetskiy .driver = { 1507900b49e6SMikhail Kshevetskiy .name = "pinctrl-airoha-an7583", 1508900b49e6SMikhail Kshevetskiy .of_match_table = airoha_pinctrl_of_match, 1509900b49e6SMikhail Kshevetskiy }, 1510900b49e6SMikhail Kshevetskiy }; 1511900b49e6SMikhail Kshevetskiy module_platform_driver(airoha_pinctrl_driver); 1512900b49e6SMikhail Kshevetskiy 1513900b49e6SMikhail Kshevetskiy MODULE_LICENSE("GPL"); 1514900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Lorenzo Bianconi <lorenzo@kernel.org>"); 1515900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Benjamin Larsson <benjamin.larsson@genexis.eu>"); 1516900b49e6SMikhail Kshevetskiy MODULE_AUTHOR("Markus Gothe <markus.gothe@genexis.eu>"); 1517900b49e6SMikhail Kshevetskiy MODULE_DESCRIPTION("Pinctrl driver for Airoha AN7583 SoC"); 1518