13b824705SMikhail Kshevetskiy // SPDX-License-Identifier: GPL-2.0-only 23b824705SMikhail Kshevetskiy /* 33b824705SMikhail Kshevetskiy * Author: Lorenzo Bianconi <lorenzo@kernel.org> 43b824705SMikhail Kshevetskiy * Author: Benjamin Larsson <benjamin.larsson@genexis.eu> 53b824705SMikhail Kshevetskiy * Author: Markus Gothe <markus.gothe@genexis.eu> 63b824705SMikhail Kshevetskiy * Author: Matheus Sampaio Queiroga <srherobrine20@gmail.com> 73b824705SMikhail Kshevetskiy * Author: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> 83b824705SMikhail Kshevetskiy */ 93b824705SMikhail Kshevetskiy #include "airoha-common.h" 103b824705SMikhail Kshevetskiy 113b824705SMikhail Kshevetskiy /* MUX */ 123b824705SMikhail Kshevetskiy #define REG_GPIO_2ND_I2C_MODE 0x0210 133b824705SMikhail Kshevetskiy #define GPIO_I2S_MODE_MASK BIT(12) 143b824705SMikhail Kshevetskiy #define GPIO_I2C_SLAVE_MODE_MODE BIT(11) 153b824705SMikhail Kshevetskiy #define GPIO_LAN3_LED1_MODE_MASK BIT(10) 163b824705SMikhail Kshevetskiy #define GPIO_LAN3_LED0_MODE_MASK BIT(9) 173b824705SMikhail Kshevetskiy #define GPIO_LAN2_LED1_MODE_MASK BIT(8) 183b824705SMikhail Kshevetskiy #define GPIO_LAN2_LED0_MODE_MASK BIT(7) 193b824705SMikhail Kshevetskiy #define GPIO_LAN1_LED1_MODE_MASK BIT(6) 203b824705SMikhail Kshevetskiy #define GPIO_LAN1_LED0_MODE_MASK BIT(5) 213b824705SMikhail Kshevetskiy #define GPIO_LAN0_LED1_MODE_MASK BIT(4) 223b824705SMikhail Kshevetskiy #define GPIO_LAN0_LED0_MODE_MASK BIT(3) 233b824705SMikhail Kshevetskiy #define PON_TOD_1PPS_MODE_MASK BIT(2) 243b824705SMikhail Kshevetskiy #define GSW_TOD_1PPS_MODE_MASK BIT(1) 253b824705SMikhail Kshevetskiy #define GPIO_2ND_I2C_MODE_MASK BIT(0) 263b824705SMikhail Kshevetskiy 273b824705SMikhail Kshevetskiy #define REG_GPIO_SPI_CS1_MODE 0x0214 283b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS4_MODE_MASK BIT(21) 293b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS3_MODE_MASK BIT(20) 303b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_P156_MASK BIT(19) 313b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS2_MODE_P128_MASK BIT(18) 323b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_CS1_MODE_MASK BIT(17) 333b824705SMikhail Kshevetskiy #define GPIO_PCM_SPI_MODE_MASK BIT(16) 343b824705SMikhail Kshevetskiy #define GPIO_PCM2_MODE_MASK BIT(13) 353b824705SMikhail Kshevetskiy #define GPIO_PCM1_MODE_MASK BIT(12) 363b824705SMikhail Kshevetskiy #define GPIO_PCM_INT_MODE_MASK BIT(9) 373b824705SMikhail Kshevetskiy #define GPIO_PCM_RESET_MODE_MASK BIT(8) 383b824705SMikhail Kshevetskiy #define GPIO_SPI_QUAD_MODE_MASK BIT(4) 393b824705SMikhail Kshevetskiy #define GPIO_SPI_CS1_MODE_MASK BIT(0) 403b824705SMikhail Kshevetskiy 413b824705SMikhail Kshevetskiy #define REG_GPIO_PON_MODE 0x0218 423b824705SMikhail Kshevetskiy #define GPIO_SGMII_MDIO_MODE_MASK BIT(13) 433b824705SMikhail Kshevetskiy #define SIPO_RCLK_MODE_MASK BIT(11) 443b824705SMikhail Kshevetskiy #define GPIO_PCIE_RESET1_MASK BIT(10) 453b824705SMikhail Kshevetskiy #define GPIO_PCIE_RESET0_MASK BIT(9) 463b824705SMikhail Kshevetskiy #define GPIO_UART2_MODE_MASK BIT(3) 473b824705SMikhail Kshevetskiy #define GPIO_SIPO_MODE_MASK BIT(2) 483b824705SMikhail Kshevetskiy #define GPIO_PON_MODE_MASK BIT(0) 493b824705SMikhail Kshevetskiy 503b824705SMikhail Kshevetskiy #define REG_NPU_UART_EN 0x0220 513b824705SMikhail Kshevetskiy #define JTAG_UDI_EN_MASK BIT(4) 523b824705SMikhail Kshevetskiy #define JTAG_DFD_EN_MASK BIT(3) 533b824705SMikhail Kshevetskiy #define NPU_UART_EN_MASK BIT(2) 543b824705SMikhail Kshevetskiy 553b824705SMikhail Kshevetskiy #define REG_FORCE_GPIO_EN 0x0224 563b824705SMikhail Kshevetskiy #define FORCE_GPIO_EN(n) BIT(n) 573b824705SMikhail Kshevetskiy 583b824705SMikhail Kshevetskiy /* LED MAP */ 593b824705SMikhail Kshevetskiy #define REG_LAN_LED0_MAPPING 0x0278 603b824705SMikhail Kshevetskiy #define REG_LAN_LED1_MAPPING 0x027c 613b824705SMikhail Kshevetskiy 623b824705SMikhail Kshevetskiy #define LAN3_LED_MAPPING_MASK GENMASK(14, 12) 633b824705SMikhail Kshevetskiy #define LAN3_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n)) 643b824705SMikhail Kshevetskiy 653b824705SMikhail Kshevetskiy #define LAN2_LED_MAPPING_MASK GENMASK(10, 8) 663b824705SMikhail Kshevetskiy #define LAN2_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n)) 673b824705SMikhail Kshevetskiy 683b824705SMikhail Kshevetskiy #define LAN1_LED_MAPPING_MASK GENMASK(6, 4) 693b824705SMikhail Kshevetskiy #define LAN1_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n)) 703b824705SMikhail Kshevetskiy 713b824705SMikhail Kshevetskiy #define LAN0_LED_MAPPING_MASK GENMASK(2, 0) 723b824705SMikhail Kshevetskiy #define LAN0_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n)) 733b824705SMikhail Kshevetskiy 743b824705SMikhail Kshevetskiy /* CONF */ 753b824705SMikhail Kshevetskiy #define REG_I2C_SDA_E2 0x001c 763b824705SMikhail Kshevetskiy #define SPI_MISO_E2_MASK BIT(13) 773b824705SMikhail Kshevetskiy #define SPI_MOSI_E2_MASK BIT(12) 783b824705SMikhail Kshevetskiy #define SPI_CLK_E2_MASK BIT(11) 793b824705SMikhail Kshevetskiy #define SPI_CS0_E2_MASK BIT(10) 803b824705SMikhail Kshevetskiy #define PCIE1_RESET_E2_MASK BIT(9) 813b824705SMikhail Kshevetskiy #define PCIE0_RESET_E2_MASK BIT(8) 823b824705SMikhail Kshevetskiy #define UART1_RXD_E2_MASK BIT(3) 833b824705SMikhail Kshevetskiy #define UART1_TXD_E2_MASK BIT(2) 843b824705SMikhail Kshevetskiy #define I2C_SCL_E2_MASK BIT(1) 853b824705SMikhail Kshevetskiy #define I2C_SDA_E2_MASK BIT(0) 863b824705SMikhail Kshevetskiy 873b824705SMikhail Kshevetskiy #define REG_I2C_SDA_E4 0x0020 883b824705SMikhail Kshevetskiy #define SPI_MISO_E4_MASK BIT(13) 893b824705SMikhail Kshevetskiy #define SPI_MOSI_E4_MASK BIT(12) 903b824705SMikhail Kshevetskiy #define SPI_CLK_E4_MASK BIT(11) 913b824705SMikhail Kshevetskiy #define SPI_CS0_E4_MASK BIT(10) 923b824705SMikhail Kshevetskiy #define PCIE1_RESET_E4_MASK BIT(9) 933b824705SMikhail Kshevetskiy #define PCIE0_RESET_E4_MASK BIT(8) 943b824705SMikhail Kshevetskiy #define UART1_RXD_E4_MASK BIT(3) 953b824705SMikhail Kshevetskiy #define UART1_TXD_E4_MASK BIT(2) 963b824705SMikhail Kshevetskiy #define I2C_SCL_E4_MASK BIT(1) 973b824705SMikhail Kshevetskiy #define I2C_SDA_E4_MASK BIT(0) 983b824705SMikhail Kshevetskiy 993b824705SMikhail Kshevetskiy #define REG_GPIO_L_E2 0x0024 1003b824705SMikhail Kshevetskiy #define REG_GPIO_L_E4 0x0028 1013b824705SMikhail Kshevetskiy 1023b824705SMikhail Kshevetskiy #define REG_I2C_SDA_PU 0x0044 1033b824705SMikhail Kshevetskiy #define SPI_MISO_PU_MASK BIT(13) 1043b824705SMikhail Kshevetskiy #define SPI_MOSI_PU_MASK BIT(12) 1053b824705SMikhail Kshevetskiy #define SPI_CLK_PU_MASK BIT(11) 1063b824705SMikhail Kshevetskiy #define SPI_CS0_PU_MASK BIT(10) 1073b824705SMikhail Kshevetskiy #define PCIE1_RESET_PU_MASK BIT(9) 1083b824705SMikhail Kshevetskiy #define PCIE0_RESET_PU_MASK BIT(8) 1093b824705SMikhail Kshevetskiy #define UART1_RXD_PU_MASK BIT(3) 1103b824705SMikhail Kshevetskiy #define UART1_TXD_PU_MASK BIT(2) 1113b824705SMikhail Kshevetskiy #define I2C_SCL_PU_MASK BIT(1) 1123b824705SMikhail Kshevetskiy #define I2C_SDA_PU_MASK BIT(0) 1133b824705SMikhail Kshevetskiy 1143b824705SMikhail Kshevetskiy #define REG_I2C_SDA_PD 0x0048 1153b824705SMikhail Kshevetskiy #define SPI_MISO_PD_MASK BIT(13) 1163b824705SMikhail Kshevetskiy #define SPI_MOSI_PD_MASK BIT(12) 1173b824705SMikhail Kshevetskiy #define SPI_CLK_PD_MASK BIT(11) 1183b824705SMikhail Kshevetskiy #define SPI_CS0_PD_MASK BIT(10) 1193b824705SMikhail Kshevetskiy #define PCIE1_RESET_PD_MASK BIT(9) 1203b824705SMikhail Kshevetskiy #define PCIE0_RESET_PD_MASK BIT(8) 1213b824705SMikhail Kshevetskiy #define UART1_RXD_PD_MASK BIT(3) 1223b824705SMikhail Kshevetskiy #define UART1_TXD_PD_MASK BIT(2) 1233b824705SMikhail Kshevetskiy #define I2C_SCL_PD_MASK BIT(1) 1243b824705SMikhail Kshevetskiy #define I2C_SDA_PD_MASK BIT(0) 1253b824705SMikhail Kshevetskiy 1263b824705SMikhail Kshevetskiy #define REG_GPIO_L_PU 0x004c 1273b824705SMikhail Kshevetskiy #define REG_GPIO_L_PD 0x0050 1283b824705SMikhail Kshevetskiy 1293b824705SMikhail Kshevetskiy /* PWM MODE CONF */ 1303b824705SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG 0x0034 1313b824705SMikhail Kshevetskiy #define GPIO15_FLASH_MODE_CFG BIT(15) 1323b824705SMikhail Kshevetskiy #define GPIO14_FLASH_MODE_CFG BIT(14) 1333b824705SMikhail Kshevetskiy #define GPIO13_FLASH_MODE_CFG BIT(13) 1343b824705SMikhail Kshevetskiy #define GPIO12_FLASH_MODE_CFG BIT(12) 1353b824705SMikhail Kshevetskiy #define GPIO11_FLASH_MODE_CFG BIT(11) 1363b824705SMikhail Kshevetskiy #define GPIO10_FLASH_MODE_CFG BIT(10) 1373b824705SMikhail Kshevetskiy #define GPIO9_FLASH_MODE_CFG BIT(9) 1383b824705SMikhail Kshevetskiy #define GPIO8_FLASH_MODE_CFG BIT(8) 1393b824705SMikhail Kshevetskiy #define GPIO7_FLASH_MODE_CFG BIT(7) 1403b824705SMikhail Kshevetskiy #define GPIO6_FLASH_MODE_CFG BIT(6) 1413b824705SMikhail Kshevetskiy #define GPIO5_FLASH_MODE_CFG BIT(5) 1423b824705SMikhail Kshevetskiy #define GPIO4_FLASH_MODE_CFG BIT(4) 1433b824705SMikhail Kshevetskiy #define GPIO3_FLASH_MODE_CFG BIT(3) 1443b824705SMikhail Kshevetskiy #define GPIO2_FLASH_MODE_CFG BIT(2) 1453b824705SMikhail Kshevetskiy #define GPIO1_FLASH_MODE_CFG BIT(1) 1463b824705SMikhail Kshevetskiy #define GPIO0_FLASH_MODE_CFG BIT(0) 1473b824705SMikhail Kshevetskiy 1483b824705SMikhail Kshevetskiy /* PWM MODE CONF EXT */ 1493b824705SMikhail Kshevetskiy #define REG_GPIO_FLASH_MODE_CFG_EXT 0x0068 1503b824705SMikhail Kshevetskiy #define GPIO51_FLASH_MODE_CFG BIT(31) 1513b824705SMikhail Kshevetskiy #define GPIO50_FLASH_MODE_CFG BIT(30) 1523b824705SMikhail Kshevetskiy #define GPIO49_FLASH_MODE_CFG BIT(29) 1533b824705SMikhail Kshevetskiy #define GPIO48_FLASH_MODE_CFG BIT(28) 1543b824705SMikhail Kshevetskiy #define GPIO47_FLASH_MODE_CFG BIT(27) 1553b824705SMikhail Kshevetskiy #define GPIO46_FLASH_MODE_CFG BIT(26) 1563b824705SMikhail Kshevetskiy #define GPIO45_FLASH_MODE_CFG BIT(25) 1573b824705SMikhail Kshevetskiy #define GPIO44_FLASH_MODE_CFG BIT(24) 1583b824705SMikhail Kshevetskiy #define GPIO43_FLASH_MODE_CFG BIT(23) 1593b824705SMikhail Kshevetskiy #define GPIO42_FLASH_MODE_CFG BIT(22) 1603b824705SMikhail Kshevetskiy #define GPIO41_FLASH_MODE_CFG BIT(21) 1613b824705SMikhail Kshevetskiy #define GPIO40_FLASH_MODE_CFG BIT(20) 1623b824705SMikhail Kshevetskiy #define GPIO39_FLASH_MODE_CFG BIT(19) 1633b824705SMikhail Kshevetskiy #define GPIO38_FLASH_MODE_CFG BIT(18) 1643b824705SMikhail Kshevetskiy #define GPIO37_FLASH_MODE_CFG BIT(17) 1653b824705SMikhail Kshevetskiy #define GPIO36_FLASH_MODE_CFG BIT(16) 1663b824705SMikhail Kshevetskiy #define GPIO31_FLASH_MODE_CFG BIT(15) 1673b824705SMikhail Kshevetskiy #define GPIO30_FLASH_MODE_CFG BIT(14) 1683b824705SMikhail Kshevetskiy #define GPIO29_FLASH_MODE_CFG BIT(13) 1693b824705SMikhail Kshevetskiy #define GPIO28_FLASH_MODE_CFG BIT(12) 1703b824705SMikhail Kshevetskiy #define GPIO27_FLASH_MODE_CFG BIT(11) 1713b824705SMikhail Kshevetskiy #define GPIO26_FLASH_MODE_CFG BIT(10) 1723b824705SMikhail Kshevetskiy #define GPIO25_FLASH_MODE_CFG BIT(9) 1733b824705SMikhail Kshevetskiy #define GPIO24_FLASH_MODE_CFG BIT(8) 1743b824705SMikhail Kshevetskiy #define GPIO23_FLASH_MODE_CFG BIT(7) 1753b824705SMikhail Kshevetskiy #define GPIO22_FLASH_MODE_CFG BIT(6) 1763b824705SMikhail Kshevetskiy #define GPIO21_FLASH_MODE_CFG BIT(5) 1773b824705SMikhail Kshevetskiy #define GPIO20_FLASH_MODE_CFG BIT(4) 1783b824705SMikhail Kshevetskiy #define GPIO19_FLASH_MODE_CFG BIT(3) 1793b824705SMikhail Kshevetskiy #define GPIO18_FLASH_MODE_CFG BIT(2) 1803b824705SMikhail Kshevetskiy #define GPIO17_FLASH_MODE_CFG BIT(1) 1813b824705SMikhail Kshevetskiy #define GPIO16_FLASH_MODE_CFG BIT(0) 1823b824705SMikhail Kshevetskiy 1833b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO(gpio, mux_val) \ 1843b824705SMikhail Kshevetskiy { \ 1853b824705SMikhail Kshevetskiy .name = (gpio), \ 1863b824705SMikhail Kshevetskiy .regmap[0] = { \ 1873b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 1883b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 1893b824705SMikhail Kshevetskiy (mux_val), \ 1903b824705SMikhail Kshevetskiy (mux_val) \ 1913b824705SMikhail Kshevetskiy }, \ 1923b824705SMikhail Kshevetskiy .regmap_size = 1, \ 1933b824705SMikhail Kshevetskiy } 1943b824705SMikhail Kshevetskiy 1953b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_GPIO_EXT(gpio, mux_val, smux_val) \ 1963b824705SMikhail Kshevetskiy { \ 1973b824705SMikhail Kshevetskiy .name = (gpio), \ 1983b824705SMikhail Kshevetskiy .regmap[0] = { \ 1993b824705SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 2003b824705SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 2013b824705SMikhail Kshevetskiy (mux_val), \ 2023b824705SMikhail Kshevetskiy 0 \ 2033b824705SMikhail Kshevetskiy }, \ 2043b824705SMikhail Kshevetskiy .regmap[1] = { \ 2053b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2063b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 2073b824705SMikhail Kshevetskiy (smux_val), \ 2083b824705SMikhail Kshevetskiy (smux_val) \ 2093b824705SMikhail Kshevetskiy }, \ 2103b824705SMikhail Kshevetskiy .regmap_size = 2, \ 2113b824705SMikhail Kshevetskiy } 2123b824705SMikhail Kshevetskiy 2133b824705SMikhail Kshevetskiy /* PWM */ 2143b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM(gpio, mux_val) \ 2153b824705SMikhail Kshevetskiy { \ 2163b824705SMikhail Kshevetskiy .name = (gpio), \ 2173b824705SMikhail Kshevetskiy .regmap[0] = { \ 2183b824705SMikhail Kshevetskiy AIROHA_FUNC_PWM_MUX, \ 2193b824705SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG, \ 2203b824705SMikhail Kshevetskiy (mux_val), \ 2213b824705SMikhail Kshevetskiy (mux_val) \ 2223b824705SMikhail Kshevetskiy }, \ 2233b824705SMikhail Kshevetskiy .regmap_size = 1, \ 2243b824705SMikhail Kshevetskiy } 2253b824705SMikhail Kshevetskiy 2263b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT(gpio, mux_val) \ 2273b824705SMikhail Kshevetskiy { \ 2283b824705SMikhail Kshevetskiy .name = (gpio), \ 2293b824705SMikhail Kshevetskiy .regmap[0] = { \ 2303b824705SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 2313b824705SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 2323b824705SMikhail Kshevetskiy (mux_val), \ 2333b824705SMikhail Kshevetskiy (mux_val) \ 2343b824705SMikhail Kshevetskiy }, \ 2353b824705SMikhail Kshevetskiy .regmap_size = 1, \ 2363b824705SMikhail Kshevetskiy } 2373b824705SMikhail Kshevetskiy 2383b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_PWM_EXT_SEC(gpio, mux_val, smux_val) \ 2393b824705SMikhail Kshevetskiy { \ 2403b824705SMikhail Kshevetskiy .name = (gpio), \ 2413b824705SMikhail Kshevetskiy .regmap[0] = { \ 2423b824705SMikhail Kshevetskiy AIROHA_FUNC_PWM_EXT_MUX, \ 2433b824705SMikhail Kshevetskiy REG_GPIO_FLASH_MODE_CFG_EXT, \ 2443b824705SMikhail Kshevetskiy (mux_val), \ 2453b824705SMikhail Kshevetskiy (mux_val) \ 2463b824705SMikhail Kshevetskiy }, \ 2473b824705SMikhail Kshevetskiy .regmap[1] = { \ 2483b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2493b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, \ 2503b824705SMikhail Kshevetskiy (smux_val), \ 2513b824705SMikhail Kshevetskiy (smux_val) \ 2523b824705SMikhail Kshevetskiy }, \ 2533b824705SMikhail Kshevetskiy .regmap_size = 2, \ 2543b824705SMikhail Kshevetskiy } 2553b824705SMikhail Kshevetskiy 2563b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED0(gpio, mux_val, map_mask, map_val) \ 2573b824705SMikhail Kshevetskiy { \ 2583b824705SMikhail Kshevetskiy .name = (gpio), \ 2593b824705SMikhail Kshevetskiy .regmap[0] = { \ 2603b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2613b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, \ 2623b824705SMikhail Kshevetskiy (mux_val), \ 2633b824705SMikhail Kshevetskiy (mux_val), \ 2643b824705SMikhail Kshevetskiy }, \ 2653b824705SMikhail Kshevetskiy .regmap[1] = { \ 2663b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2673b824705SMikhail Kshevetskiy REG_LAN_LED0_MAPPING, \ 2683b824705SMikhail Kshevetskiy (map_mask), \ 2693b824705SMikhail Kshevetskiy (map_val), \ 2703b824705SMikhail Kshevetskiy }, \ 2713b824705SMikhail Kshevetskiy .regmap_size = 2, \ 2723b824705SMikhail Kshevetskiy } 2733b824705SMikhail Kshevetskiy 2743b824705SMikhail Kshevetskiy #define AIROHA_PINCTRL_PHY_LED1(gpio, mux_val, map_mask, map_val) \ 2753b824705SMikhail Kshevetskiy { \ 2763b824705SMikhail Kshevetskiy .name = (gpio), \ 2773b824705SMikhail Kshevetskiy .regmap[0] = { \ 2783b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2793b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, \ 2803b824705SMikhail Kshevetskiy (mux_val), \ 2813b824705SMikhail Kshevetskiy (mux_val), \ 2823b824705SMikhail Kshevetskiy }, \ 2833b824705SMikhail Kshevetskiy .regmap[1] = { \ 2843b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, \ 2853b824705SMikhail Kshevetskiy REG_LAN_LED1_MAPPING, \ 2863b824705SMikhail Kshevetskiy (map_mask), \ 2873b824705SMikhail Kshevetskiy (map_val), \ 2883b824705SMikhail Kshevetskiy }, \ 2893b824705SMikhail Kshevetskiy .regmap_size = 2, \ 2903b824705SMikhail Kshevetskiy } 2913b824705SMikhail Kshevetskiy 2923b824705SMikhail Kshevetskiy static struct pinctrl_pin_desc pinctrl_pins[] = { 2933b824705SMikhail Kshevetskiy PINCTRL_PIN(2, "i2c_sda"), 2943b824705SMikhail Kshevetskiy PINCTRL_PIN(3, "i2c_scl"), 2953b824705SMikhail Kshevetskiy PINCTRL_PIN(4, "spi_cs0"), 2963b824705SMikhail Kshevetskiy PINCTRL_PIN(5, "spi_clk"), 2973b824705SMikhail Kshevetskiy PINCTRL_PIN(6, "spi_mosi"), 2983b824705SMikhail Kshevetskiy PINCTRL_PIN(7, "spi_miso"), 2993b824705SMikhail Kshevetskiy PINCTRL_PIN(8, "uart1_txd"), 3003b824705SMikhail Kshevetskiy PINCTRL_PIN(9, "uart1_rxd"), 3013b824705SMikhail Kshevetskiy PINCTRL_PIN(12, "gpio0"), 3023b824705SMikhail Kshevetskiy PINCTRL_PIN(13, "gpio1"), 3033b824705SMikhail Kshevetskiy PINCTRL_PIN(14, "gpio2"), 3043b824705SMikhail Kshevetskiy PINCTRL_PIN(15, "gpio3"), 3053b824705SMikhail Kshevetskiy PINCTRL_PIN(16, "gpio4"), 3063b824705SMikhail Kshevetskiy PINCTRL_PIN(17, "gpio5"), 3073b824705SMikhail Kshevetskiy PINCTRL_PIN(18, "gpio6"), 3083b824705SMikhail Kshevetskiy PINCTRL_PIN(19, "gpio7"), 3093b824705SMikhail Kshevetskiy PINCTRL_PIN(20, "gpio8"), 3103b824705SMikhail Kshevetskiy PINCTRL_PIN(21, "gpio9"), 3113b824705SMikhail Kshevetskiy PINCTRL_PIN(22, "gpio10"), 3123b824705SMikhail Kshevetskiy PINCTRL_PIN(23, "gpio11"), 3133b824705SMikhail Kshevetskiy PINCTRL_PIN(24, "gpio12"), 3143b824705SMikhail Kshevetskiy PINCTRL_PIN(25, "gpio13"), 3153b824705SMikhail Kshevetskiy PINCTRL_PIN(26, "gpio14"), 3163b824705SMikhail Kshevetskiy PINCTRL_PIN(27, "gpio15"), 3173b824705SMikhail Kshevetskiy PINCTRL_PIN(28, "gpio16"), 3183b824705SMikhail Kshevetskiy PINCTRL_PIN(29, "gpio17"), 3193b824705SMikhail Kshevetskiy PINCTRL_PIN(30, "gpio18"), 3203b824705SMikhail Kshevetskiy PINCTRL_PIN(31, "gpio19"), 3213b824705SMikhail Kshevetskiy PINCTRL_PIN(32, "gpio20"), 3223b824705SMikhail Kshevetskiy PINCTRL_PIN(33, "gpio21"), 3233b824705SMikhail Kshevetskiy PINCTRL_PIN(34, "gpio22"), 3243b824705SMikhail Kshevetskiy PINCTRL_PIN(35, "gpio23"), 3253b824705SMikhail Kshevetskiy PINCTRL_PIN(36, "gpio24"), 3263b824705SMikhail Kshevetskiy PINCTRL_PIN(37, "gpio25"), 3273b824705SMikhail Kshevetskiy PINCTRL_PIN(38, "gpio26"), 3283b824705SMikhail Kshevetskiy PINCTRL_PIN(39, "gpio27"), 3293b824705SMikhail Kshevetskiy PINCTRL_PIN(40, "pcie_reset0"), 3303b824705SMikhail Kshevetskiy PINCTRL_PIN(41, "pcie_reset1"), 3313b824705SMikhail Kshevetskiy }; 3323b824705SMikhail Kshevetskiy 3333b824705SMikhail Kshevetskiy static const int pon_pins[] = { 28, 29, 30, 31, 32, 33 }; 3343b824705SMikhail Kshevetskiy static const int pon_tod_1pps_pins[] = { 21 }; 3353b824705SMikhail Kshevetskiy static const int gsw_tod_1pps_pins[] = { 21 }; 3363b824705SMikhail Kshevetskiy static const int sipo_pins[] = { 13, 38 }; 3373b824705SMikhail Kshevetskiy static const int sipo_rclk_pins[] = { 13, 30, 38 }; 3383b824705SMikhail Kshevetskiy static const int mdio_pins[] = { 20, 21 }; 3393b824705SMikhail Kshevetskiy static const int uart2_pins[] = { 20, 21 }; 3403b824705SMikhail Kshevetskiy static const int npu_uart_pins[] = { 13, 38 }; 3413b824705SMikhail Kshevetskiy static const int i2c0_pins[] = { 2, 3 }; 3423b824705SMikhail Kshevetskiy static const int i2c1_pins[] = { 14, 15 }; 3433b824705SMikhail Kshevetskiy static const int jtag_udi_pins[] = { 34, 35, 36, 37, 38 }; 3443b824705SMikhail Kshevetskiy static const int jtag_dfd_pins[] = { 34, 35, 36, 37, 38 }; 3453b824705SMikhail Kshevetskiy static const int i2s_pins[] = { 16, 17, 18, 19 }; 3463b824705SMikhail Kshevetskiy static const int pcm1_pins[] = { 24, 25, 26, 27 }; 3473b824705SMikhail Kshevetskiy static const int pcm2_pins[] = { 16, 17, 18, 19 }; 3483b824705SMikhail Kshevetskiy static const int spi_pins[] = { 4, 5, 6, 7 }; 3493b824705SMikhail Kshevetskiy static const int spi_quad_pins[] = { 14, 15 }; 3503b824705SMikhail Kshevetskiy static const int spi_cs1_pins[] = { 21 }; 3513b824705SMikhail Kshevetskiy static const int pcm_spi_pins[] = { 16, 17, 18, 19, 24, 25, 26, 27 }; 3523b824705SMikhail Kshevetskiy static const int pcm_spi_int_pins[] = { 15 }; 3533b824705SMikhail Kshevetskiy static const int pcm_spi_rst_pins[] = { 14 }; 3543b824705SMikhail Kshevetskiy static const int pcm_spi_cs1_pins[] = { 22 }; 3553b824705SMikhail Kshevetskiy static const int pcm_spi_cs2_p128_pins[] = { 39 }; 3563b824705SMikhail Kshevetskiy static const int pcm_spi_cs2_p156_pins[] = { 39 }; 3573b824705SMikhail Kshevetskiy static const int pcm_spi_cs3_pins[] = { 20 }; 3583b824705SMikhail Kshevetskiy static const int pcm_spi_cs4_pins[] = { 23 }; 3593b824705SMikhail Kshevetskiy static const int gpio0_pins[] = { 12 }; 3603b824705SMikhail Kshevetskiy static const int gpio1_pins[] = { 13 }; 3613b824705SMikhail Kshevetskiy static const int gpio2_pins[] = { 14 }; 3623b824705SMikhail Kshevetskiy static const int gpio3_pins[] = { 15 }; 3633b824705SMikhail Kshevetskiy static const int gpio4_pins[] = { 16 }; 3643b824705SMikhail Kshevetskiy static const int gpio5_pins[] = { 17 }; 3653b824705SMikhail Kshevetskiy static const int gpio6_pins[] = { 18 }; 3663b824705SMikhail Kshevetskiy static const int gpio7_pins[] = { 19 }; 3673b824705SMikhail Kshevetskiy static const int gpio8_pins[] = { 20 }; 3683b824705SMikhail Kshevetskiy static const int gpio9_pins[] = { 21 }; 3693b824705SMikhail Kshevetskiy static const int gpio10_pins[] = { 22 }; 3703b824705SMikhail Kshevetskiy static const int gpio11_pins[] = { 23 }; 3713b824705SMikhail Kshevetskiy static const int gpio12_pins[] = { 24 }; 3723b824705SMikhail Kshevetskiy static const int gpio13_pins[] = { 25 }; 3733b824705SMikhail Kshevetskiy static const int gpio14_pins[] = { 26 }; 3743b824705SMikhail Kshevetskiy static const int gpio15_pins[] = { 27 }; 3753b824705SMikhail Kshevetskiy static const int gpio16_pins[] = { 28 }; 3763b824705SMikhail Kshevetskiy static const int gpio17_pins[] = { 29 }; 3773b824705SMikhail Kshevetskiy static const int gpio18_pins[] = { 30 }; 3783b824705SMikhail Kshevetskiy static const int gpio19_pins[] = { 31 }; 3793b824705SMikhail Kshevetskiy static const int gpio20_pins[] = { 32 }; 3803b824705SMikhail Kshevetskiy static const int gpio21_pins[] = { 33 }; 3813b824705SMikhail Kshevetskiy static const int gpio22_pins[] = { 34 }; 3823b824705SMikhail Kshevetskiy static const int gpio23_pins[] = { 35 }; 3833b824705SMikhail Kshevetskiy static const int gpio24_pins[] = { 36 }; 3843b824705SMikhail Kshevetskiy static const int gpio25_pins[] = { 37 }; 3853b824705SMikhail Kshevetskiy static const int gpio26_pins[] = { 38 }; 3863b824705SMikhail Kshevetskiy static const int gpio27_pins[] = { 39 }; 3873b824705SMikhail Kshevetskiy static const int gpio28_pins[] = { 40 }; 3883b824705SMikhail Kshevetskiy static const int gpio29_pins[] = { 41 }; 3893b824705SMikhail Kshevetskiy static const int pcie_reset0_pins[] = { 40 }; 3903b824705SMikhail Kshevetskiy static const int pcie_reset1_pins[] = { 41 }; 3913b824705SMikhail Kshevetskiy 3923b824705SMikhail Kshevetskiy static const struct pingroup pinctrl_groups[] = { 3933b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pon", pon), 3943b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pon_tod_1pps", pon_tod_1pps), 3953b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gsw_tod_1pps", gsw_tod_1pps), 3963b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("sipo", sipo), 3973b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("sipo_rclk", sipo_rclk), 3983b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("mdio", mdio), 3993b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("uart2", uart2), 4003b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("npu_uart", npu_uart), 4013b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("i2c0", i2c0), 4023b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("i2c1", i2c1), 4033b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("jtag_udi", jtag_udi), 4043b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("jtag_dfd", jtag_dfd), 4053b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("i2s", i2s), 4063b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm1", pcm1), 4073b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm2", pcm2), 4083b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi", spi), 4093b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi_quad", spi_quad), 4103b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("spi_cs1", spi_cs1), 4113b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi", pcm_spi), 4123b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_int", pcm_spi_int), 4133b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_rst", pcm_spi_rst), 4143b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs1", pcm_spi_cs1), 4153b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs2_p128", pcm_spi_cs2_p128), 4163b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs2_p156", pcm_spi_cs2_p156), 4173b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs3", pcm_spi_cs3), 4183b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcm_spi_cs4", pcm_spi_cs4), 4193b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio0", gpio0), 4203b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio1", gpio1), 4213b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio2", gpio2), 4223b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio3", gpio3), 4233b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio4", gpio4), 4243b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio5", gpio5), 4253b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio6", gpio6), 4263b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio7", gpio7), 4273b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio8", gpio8), 4283b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio9", gpio9), 4293b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio10", gpio10), 4303b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio11", gpio11), 4313b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio12", gpio12), 4323b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio13", gpio13), 4333b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio14", gpio14), 4343b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio15", gpio15), 4353b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio16", gpio16), 4363b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio17", gpio17), 4373b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio18", gpio18), 4383b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio19", gpio19), 4393b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio20", gpio20), 4403b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio21", gpio21), 4413b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio22", gpio22), 4423b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio23", gpio23), 4433b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio24", gpio24), 4443b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio25", gpio25), 4453b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio26", gpio26), 4463b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio27", gpio27), 4473b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio28", gpio28), 4483b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("gpio29", gpio29), 4493b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcie_reset0", pcie_reset0), 4503b824705SMikhail Kshevetskiy PINCTRL_PIN_GROUP("pcie_reset1", pcie_reset1), 4513b824705SMikhail Kshevetskiy }; 4523b824705SMikhail Kshevetskiy 4533b824705SMikhail Kshevetskiy static const char *const pon_groups[] = { "pon" }; 4543b824705SMikhail Kshevetskiy static const char *const tod_1pps_groups[] = { 4553b824705SMikhail Kshevetskiy "pon_tod_1pps", "gsw_tod_1pps" 4563b824705SMikhail Kshevetskiy }; 4573b824705SMikhail Kshevetskiy static const char *const sipo_groups[] = { "sipo", "sipo_rclk" }; 4583b824705SMikhail Kshevetskiy static const char *const mdio_groups[] = { "mdio" }; 4593b824705SMikhail Kshevetskiy static const char *const uart_groups[] = { "uart2", "npu_uart" }; 4603b824705SMikhail Kshevetskiy static const char *const i2c_groups[] = { "i2c1" }; 4613b824705SMikhail Kshevetskiy static const char *const jtag_groups[] = { "jtag_udi", "jtag_dfd" }; 4623b824705SMikhail Kshevetskiy static const char *const pcm_groups[] = { "pcm1", "pcm2" }; 4633b824705SMikhail Kshevetskiy static const char *const spi_groups[] = { "spi_quad", "spi_cs1" }; 4643b824705SMikhail Kshevetskiy static const char *const pcm_spi_groups[] = { 4653b824705SMikhail Kshevetskiy "pcm_spi", "pcm_spi_int", "pcm_spi_rst", "pcm_spi_cs1", 4663b824705SMikhail Kshevetskiy "pcm_spi_cs2_p156", "pcm_spi_cs2_p128", "pcm_spi_cs3", "pcm_spi_cs4" 4673b824705SMikhail Kshevetskiy }; 4683b824705SMikhail Kshevetskiy static const char *const i2s_groups[] = { "i2s" }; 4693b824705SMikhail Kshevetskiy static const char *const gpio_groups[] = { "gpio28", "gpio29" }; 4703b824705SMikhail Kshevetskiy static const char *const pcie_reset_groups[] = { 4713b824705SMikhail Kshevetskiy "pcie_reset0", "pcie_reset1" 4723b824705SMikhail Kshevetskiy }; 4733b824705SMikhail Kshevetskiy static const char *const pwm_groups[] = { 4743b824705SMikhail Kshevetskiy "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", 4753b824705SMikhail Kshevetskiy "gpio6", "gpio7", "gpio8", "gpio9", "gpio10", "gpio11", 4763b824705SMikhail Kshevetskiy "gpio12", "gpio13", "gpio14", "gpio15", "gpio16", "gpio17", 4773b824705SMikhail Kshevetskiy "gpio18", "gpio19", "gpio20", "gpio21", "gpio22", "gpio23", 4783b824705SMikhail Kshevetskiy "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29" 4793b824705SMikhail Kshevetskiy }; 4803b824705SMikhail Kshevetskiy static const char *const phy1_led0_groups[] = { 4813b824705SMikhail Kshevetskiy "gpio22", "gpio23", "gpio24", "gpio25" 4823b824705SMikhail Kshevetskiy }; 4833b824705SMikhail Kshevetskiy static const char *const phy2_led0_groups[] = { 4843b824705SMikhail Kshevetskiy "gpio22", "gpio23", "gpio24", "gpio25" 4853b824705SMikhail Kshevetskiy }; 4863b824705SMikhail Kshevetskiy static const char *const phy3_led0_groups[] = { 4873b824705SMikhail Kshevetskiy "gpio22", "gpio23", "gpio24", "gpio25" 4883b824705SMikhail Kshevetskiy }; 4893b824705SMikhail Kshevetskiy static const char *const phy4_led0_groups[] = { 4903b824705SMikhail Kshevetskiy "gpio22", "gpio23", "gpio24", "gpio25" 4913b824705SMikhail Kshevetskiy }; 4923b824705SMikhail Kshevetskiy static const char *const phy1_led1_groups[] = { 4933b824705SMikhail Kshevetskiy "gpio7", "gpio6", "gpio5", "gpio4" 4943b824705SMikhail Kshevetskiy }; 4953b824705SMikhail Kshevetskiy static const char *const phy2_led1_groups[] = { 4963b824705SMikhail Kshevetskiy "gpio7", "gpio6", "gpio5", "gpio4" 4973b824705SMikhail Kshevetskiy }; 4983b824705SMikhail Kshevetskiy static const char *const phy3_led1_groups[] = { 4993b824705SMikhail Kshevetskiy "gpio7", "gpio6", "gpio5", "gpio4" 5003b824705SMikhail Kshevetskiy }; 5013b824705SMikhail Kshevetskiy static const char *const phy4_led1_groups[] = { 5023b824705SMikhail Kshevetskiy "gpio7", "gpio6", "gpio5", "gpio4" 5033b824705SMikhail Kshevetskiy }; 5043b824705SMikhail Kshevetskiy 5053b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pon_func_group[] = { 5063b824705SMikhail Kshevetskiy { 5073b824705SMikhail Kshevetskiy .name = "pon", 5083b824705SMikhail Kshevetskiy .regmap[0] = { 5093b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5103b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 5113b824705SMikhail Kshevetskiy GPIO_PON_MODE_MASK, 5123b824705SMikhail Kshevetskiy GPIO_PON_MODE_MASK 5133b824705SMikhail Kshevetskiy }, 5143b824705SMikhail Kshevetskiy .regmap_size = 1, 5153b824705SMikhail Kshevetskiy }, 5163b824705SMikhail Kshevetskiy }; 5173b824705SMikhail Kshevetskiy 5183b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group tod_1pps_func_group[] = { 5193b824705SMikhail Kshevetskiy { 5203b824705SMikhail Kshevetskiy .name = "pon_tod_1pps", 5213b824705SMikhail Kshevetskiy .regmap[0] = { 5223b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5233b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, 5243b824705SMikhail Kshevetskiy PON_TOD_1PPS_MODE_MASK, 5253b824705SMikhail Kshevetskiy PON_TOD_1PPS_MODE_MASK 5263b824705SMikhail Kshevetskiy }, 5273b824705SMikhail Kshevetskiy .regmap_size = 1, 5283b824705SMikhail Kshevetskiy }, { 5293b824705SMikhail Kshevetskiy .name = "gsw_tod_1pps", 5303b824705SMikhail Kshevetskiy .regmap[0] = { 5313b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5323b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, 5333b824705SMikhail Kshevetskiy GSW_TOD_1PPS_MODE_MASK, 5343b824705SMikhail Kshevetskiy GSW_TOD_1PPS_MODE_MASK 5353b824705SMikhail Kshevetskiy }, 5363b824705SMikhail Kshevetskiy .regmap_size = 1, 5373b824705SMikhail Kshevetskiy }, 5383b824705SMikhail Kshevetskiy }; 5393b824705SMikhail Kshevetskiy 5403b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group sipo_func_group[] = { 5413b824705SMikhail Kshevetskiy { 5423b824705SMikhail Kshevetskiy .name = "sipo", 5433b824705SMikhail Kshevetskiy .regmap[0] = { 5443b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5453b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 5463b824705SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK, 5473b824705SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK 5483b824705SMikhail Kshevetskiy }, 5493b824705SMikhail Kshevetskiy .regmap_size = 1, 5503b824705SMikhail Kshevetskiy }, { 5513b824705SMikhail Kshevetskiy .name = "sipo_rclk", 5523b824705SMikhail Kshevetskiy .regmap[0] = { 5533b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5543b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 5553b824705SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK, 5563b824705SMikhail Kshevetskiy GPIO_SIPO_MODE_MASK | SIPO_RCLK_MODE_MASK 5573b824705SMikhail Kshevetskiy }, 5583b824705SMikhail Kshevetskiy .regmap_size = 1, 5593b824705SMikhail Kshevetskiy }, 5603b824705SMikhail Kshevetskiy }; 5613b824705SMikhail Kshevetskiy 5623b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group mdio_func_group[] = { 5633b824705SMikhail Kshevetskiy { 5643b824705SMikhail Kshevetskiy .name = "mdio", 5653b824705SMikhail Kshevetskiy .regmap[0] = { 5663b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5673b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 5683b824705SMikhail Kshevetskiy GPIO_SGMII_MDIO_MODE_MASK, 5693b824705SMikhail Kshevetskiy GPIO_SGMII_MDIO_MODE_MASK 5703b824705SMikhail Kshevetskiy }, 5713b824705SMikhail Kshevetskiy .regmap_size = 1, 5723b824705SMikhail Kshevetskiy }, 5733b824705SMikhail Kshevetskiy }; 5743b824705SMikhail Kshevetskiy 5753b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group uart_func_group[] = { 5763b824705SMikhail Kshevetskiy { 5773b824705SMikhail Kshevetskiy .name = "uart2", 5783b824705SMikhail Kshevetskiy .regmap[0] = { 5793b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5803b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 5813b824705SMikhail Kshevetskiy GPIO_UART2_MODE_MASK, 5823b824705SMikhail Kshevetskiy GPIO_UART2_MODE_MASK 5833b824705SMikhail Kshevetskiy }, 5843b824705SMikhail Kshevetskiy .regmap_size = 1, 5853b824705SMikhail Kshevetskiy }, { 5863b824705SMikhail Kshevetskiy .name = "npu_uart", 5873b824705SMikhail Kshevetskiy .regmap[0] = { 5883b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 5893b824705SMikhail Kshevetskiy REG_NPU_UART_EN, 5903b824705SMikhail Kshevetskiy NPU_UART_EN_MASK, 5913b824705SMikhail Kshevetskiy NPU_UART_EN_MASK 5923b824705SMikhail Kshevetskiy }, 5933b824705SMikhail Kshevetskiy .regmap_size = 1, 5943b824705SMikhail Kshevetskiy } 5953b824705SMikhail Kshevetskiy }; 5963b824705SMikhail Kshevetskiy 5973b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group i2c_func_group[] = { 5983b824705SMikhail Kshevetskiy { 5993b824705SMikhail Kshevetskiy .name = "i2c1", 6003b824705SMikhail Kshevetskiy .regmap[0] = { 6013b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6023b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, 6033b824705SMikhail Kshevetskiy GPIO_2ND_I2C_MODE_MASK, 6043b824705SMikhail Kshevetskiy GPIO_2ND_I2C_MODE_MASK 6053b824705SMikhail Kshevetskiy }, 6063b824705SMikhail Kshevetskiy .regmap_size = 1, 6073b824705SMikhail Kshevetskiy }, 6083b824705SMikhail Kshevetskiy }; 6093b824705SMikhail Kshevetskiy 6103b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group jtag_func_group[] = { 6113b824705SMikhail Kshevetskiy { 6123b824705SMikhail Kshevetskiy .name = "jtag_udi", 6133b824705SMikhail Kshevetskiy .regmap[0] = { 6143b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6153b824705SMikhail Kshevetskiy REG_NPU_UART_EN, 6163b824705SMikhail Kshevetskiy JTAG_UDI_EN_MASK, 6173b824705SMikhail Kshevetskiy JTAG_UDI_EN_MASK 6183b824705SMikhail Kshevetskiy }, 6193b824705SMikhail Kshevetskiy .regmap_size = 1, 6203b824705SMikhail Kshevetskiy }, { 6213b824705SMikhail Kshevetskiy .name = "jtag_dfd", 6223b824705SMikhail Kshevetskiy .regmap[0] = { 6233b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6243b824705SMikhail Kshevetskiy REG_NPU_UART_EN, 6253b824705SMikhail Kshevetskiy JTAG_DFD_EN_MASK, 6263b824705SMikhail Kshevetskiy JTAG_DFD_EN_MASK 6273b824705SMikhail Kshevetskiy }, 6283b824705SMikhail Kshevetskiy .regmap_size = 1, 6293b824705SMikhail Kshevetskiy }, 6303b824705SMikhail Kshevetskiy }; 6313b824705SMikhail Kshevetskiy 6323b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_func_group[] = { 6333b824705SMikhail Kshevetskiy { 6343b824705SMikhail Kshevetskiy .name = "pcm1", 6353b824705SMikhail Kshevetskiy .regmap[0] = { 6363b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6373b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6383b824705SMikhail Kshevetskiy GPIO_PCM1_MODE_MASK, 6393b824705SMikhail Kshevetskiy GPIO_PCM1_MODE_MASK 6403b824705SMikhail Kshevetskiy }, 6413b824705SMikhail Kshevetskiy .regmap_size = 1, 6423b824705SMikhail Kshevetskiy }, { 6433b824705SMikhail Kshevetskiy .name = "pcm2", 6443b824705SMikhail Kshevetskiy .regmap[0] = { 6453b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6463b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6473b824705SMikhail Kshevetskiy GPIO_PCM2_MODE_MASK, 6483b824705SMikhail Kshevetskiy GPIO_PCM2_MODE_MASK 6493b824705SMikhail Kshevetskiy }, 6503b824705SMikhail Kshevetskiy .regmap_size = 1, 6513b824705SMikhail Kshevetskiy }, 6523b824705SMikhail Kshevetskiy }; 6533b824705SMikhail Kshevetskiy 6543b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group spi_func_group[] = { 6553b824705SMikhail Kshevetskiy { 6563b824705SMikhail Kshevetskiy .name = "spi_quad", 6573b824705SMikhail Kshevetskiy .regmap[0] = { 6583b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6593b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6603b824705SMikhail Kshevetskiy GPIO_SPI_QUAD_MODE_MASK, 6613b824705SMikhail Kshevetskiy GPIO_SPI_QUAD_MODE_MASK 6623b824705SMikhail Kshevetskiy }, 6633b824705SMikhail Kshevetskiy .regmap_size = 1, 6643b824705SMikhail Kshevetskiy }, { 6653b824705SMikhail Kshevetskiy .name = "spi_cs1", 6663b824705SMikhail Kshevetskiy .regmap[0] = { 6673b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6683b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6693b824705SMikhail Kshevetskiy GPIO_SPI_CS1_MODE_MASK, 6703b824705SMikhail Kshevetskiy GPIO_SPI_CS1_MODE_MASK 6713b824705SMikhail Kshevetskiy }, 6723b824705SMikhail Kshevetskiy .regmap_size = 1, 6733b824705SMikhail Kshevetskiy }, 6743b824705SMikhail Kshevetskiy }; 6753b824705SMikhail Kshevetskiy 6763b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcm_spi_func_group[] = { 6773b824705SMikhail Kshevetskiy { 6783b824705SMikhail Kshevetskiy .name = "pcm_spi", 6793b824705SMikhail Kshevetskiy .regmap[0] = { 6803b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6813b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6823b824705SMikhail Kshevetskiy GPIO_PCM_SPI_MODE_MASK, 6833b824705SMikhail Kshevetskiy GPIO_PCM_SPI_MODE_MASK 6843b824705SMikhail Kshevetskiy }, 6853b824705SMikhail Kshevetskiy .regmap_size = 1, 6863b824705SMikhail Kshevetskiy }, { 6873b824705SMikhail Kshevetskiy .name = "pcm_spi_int", 6883b824705SMikhail Kshevetskiy .regmap[0] = { 6893b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6903b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 6913b824705SMikhail Kshevetskiy GPIO_PCM_INT_MODE_MASK, 6923b824705SMikhail Kshevetskiy GPIO_PCM_INT_MODE_MASK 6933b824705SMikhail Kshevetskiy }, 6943b824705SMikhail Kshevetskiy .regmap_size = 1, 6953b824705SMikhail Kshevetskiy }, { 6963b824705SMikhail Kshevetskiy .name = "pcm_spi_rst", 6973b824705SMikhail Kshevetskiy .regmap[0] = { 6983b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 6993b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7003b824705SMikhail Kshevetskiy GPIO_PCM_RESET_MODE_MASK, 7013b824705SMikhail Kshevetskiy GPIO_PCM_RESET_MODE_MASK 7023b824705SMikhail Kshevetskiy }, 7033b824705SMikhail Kshevetskiy .regmap_size = 1, 7043b824705SMikhail Kshevetskiy }, { 7053b824705SMikhail Kshevetskiy .name = "pcm_spi_cs1", 7063b824705SMikhail Kshevetskiy .regmap[0] = { 7073b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7083b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7093b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS1_MODE_MASK, 7103b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS1_MODE_MASK 7113b824705SMikhail Kshevetskiy }, 7123b824705SMikhail Kshevetskiy .regmap_size = 1, 7133b824705SMikhail Kshevetskiy }, { 7143b824705SMikhail Kshevetskiy .name = "pcm_spi_cs2_p128", 7153b824705SMikhail Kshevetskiy .regmap[0] = { 7163b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7173b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7183b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_P128_MASK, 7193b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_P128_MASK 7203b824705SMikhail Kshevetskiy }, 7213b824705SMikhail Kshevetskiy .regmap_size = 1, 7223b824705SMikhail Kshevetskiy }, { 7233b824705SMikhail Kshevetskiy .name = "pcm_spi_cs2_p156", 7243b824705SMikhail Kshevetskiy .regmap[0] = { 7253b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7263b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7273b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_P156_MASK, 7283b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS2_MODE_P156_MASK 7293b824705SMikhail Kshevetskiy }, 7303b824705SMikhail Kshevetskiy .regmap_size = 1, 7313b824705SMikhail Kshevetskiy }, { 7323b824705SMikhail Kshevetskiy .name = "pcm_spi_cs3", 7333b824705SMikhail Kshevetskiy .regmap[0] = { 7343b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7353b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7363b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS3_MODE_MASK, 7373b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS3_MODE_MASK 7383b824705SMikhail Kshevetskiy }, 7393b824705SMikhail Kshevetskiy .regmap_size = 1, 7403b824705SMikhail Kshevetskiy }, { 7413b824705SMikhail Kshevetskiy .name = "pcm_spi_cs4", 7423b824705SMikhail Kshevetskiy .regmap[0] = { 7433b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7443b824705SMikhail Kshevetskiy REG_GPIO_SPI_CS1_MODE, 7453b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS4_MODE_MASK, 7463b824705SMikhail Kshevetskiy GPIO_PCM_SPI_CS4_MODE_MASK 7473b824705SMikhail Kshevetskiy }, 7483b824705SMikhail Kshevetskiy .regmap_size = 1, 7493b824705SMikhail Kshevetskiy }, 7503b824705SMikhail Kshevetskiy }; 7513b824705SMikhail Kshevetskiy 7523b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group i2s_func_group[] = { 7533b824705SMikhail Kshevetskiy { 7543b824705SMikhail Kshevetskiy .name = "i2s", 7553b824705SMikhail Kshevetskiy .regmap[0] = { 7563b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7573b824705SMikhail Kshevetskiy REG_GPIO_2ND_I2C_MODE, 7583b824705SMikhail Kshevetskiy GPIO_I2S_MODE_MASK, 7593b824705SMikhail Kshevetskiy GPIO_I2S_MODE_MASK 7603b824705SMikhail Kshevetskiy }, 7613b824705SMikhail Kshevetskiy .regmap_size = 1, 7623b824705SMikhail Kshevetskiy }, 7633b824705SMikhail Kshevetskiy }; 7643b824705SMikhail Kshevetskiy 7653b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group gpio_func_group[] = { 7663b824705SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio28", GPIO28_FLASH_MODE_CFG, 7673b824705SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK), 7683b824705SMikhail Kshevetskiy AIROHA_PINCTRL_GPIO_EXT("gpio29", GPIO29_FLASH_MODE_CFG, 7693b824705SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK), 7703b824705SMikhail Kshevetskiy }; 7713b824705SMikhail Kshevetskiy 7723b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = { 7733b824705SMikhail Kshevetskiy { 7743b824705SMikhail Kshevetskiy .name = "pcie_reset0", 7753b824705SMikhail Kshevetskiy .regmap[0] = { 7763b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7773b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 7783b824705SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK, 7793b824705SMikhail Kshevetskiy 0 7803b824705SMikhail Kshevetskiy }, 7813b824705SMikhail Kshevetskiy .regmap_size = 1, 7823b824705SMikhail Kshevetskiy }, { 7833b824705SMikhail Kshevetskiy .name = "pcie_reset1", 7843b824705SMikhail Kshevetskiy .regmap[0] = { 7853b824705SMikhail Kshevetskiy AIROHA_FUNC_MUX, 7863b824705SMikhail Kshevetskiy REG_GPIO_PON_MODE, 7873b824705SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK, 7883b824705SMikhail Kshevetskiy 0 7893b824705SMikhail Kshevetskiy }, 7903b824705SMikhail Kshevetskiy .regmap_size = 1, 7913b824705SMikhail Kshevetskiy }, 7923b824705SMikhail Kshevetskiy }; 7933b824705SMikhail Kshevetskiy 7943b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group pwm_func_group[] = { 7953b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio0", GPIO0_FLASH_MODE_CFG), 7963b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio1", GPIO1_FLASH_MODE_CFG), 7973b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio2", GPIO2_FLASH_MODE_CFG), 7983b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio3", GPIO3_FLASH_MODE_CFG), 7993b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio4", GPIO4_FLASH_MODE_CFG), 8003b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio5", GPIO5_FLASH_MODE_CFG), 8013b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio6", GPIO6_FLASH_MODE_CFG), 8023b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio7", GPIO7_FLASH_MODE_CFG), 8033b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio8", GPIO8_FLASH_MODE_CFG), 8043b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio9", GPIO9_FLASH_MODE_CFG), 8053b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio10", GPIO10_FLASH_MODE_CFG), 8063b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio11", GPIO11_FLASH_MODE_CFG), 8073b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio12", GPIO12_FLASH_MODE_CFG), 8083b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio13", GPIO13_FLASH_MODE_CFG), 8093b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio14", GPIO14_FLASH_MODE_CFG), 8103b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM("gpio15", GPIO15_FLASH_MODE_CFG), 8113b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio16", GPIO16_FLASH_MODE_CFG), 8123b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio17", GPIO17_FLASH_MODE_CFG), 8133b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio18", GPIO18_FLASH_MODE_CFG), 8143b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio19", GPIO19_FLASH_MODE_CFG), 8153b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio20", GPIO20_FLASH_MODE_CFG), 8163b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio21", GPIO21_FLASH_MODE_CFG), 8173b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio22", GPIO22_FLASH_MODE_CFG), 8183b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio23", GPIO23_FLASH_MODE_CFG), 8193b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio24", GPIO24_FLASH_MODE_CFG), 8203b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio25", GPIO25_FLASH_MODE_CFG), 8213b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio26", GPIO26_FLASH_MODE_CFG), 8223b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT("gpio27", GPIO27_FLASH_MODE_CFG), 8233b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio28", GPIO28_FLASH_MODE_CFG, 8243b824705SMikhail Kshevetskiy GPIO_PCIE_RESET0_MASK), 8253b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PWM_EXT_SEC("gpio29", GPIO29_FLASH_MODE_CFG, 8263b824705SMikhail Kshevetskiy GPIO_PCIE_RESET1_MASK), 8273b824705SMikhail Kshevetskiy }; 8283b824705SMikhail Kshevetskiy 8293b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = { 8303b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio22", GPIO_LAN0_LED0_MODE_MASK, 8313b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)), 8323b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio23", GPIO_LAN1_LED0_MODE_MASK, 8333b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)), 8343b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio24", GPIO_LAN2_LED0_MODE_MASK, 8353b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)), 8363b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio25", GPIO_LAN3_LED0_MODE_MASK, 8373b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)), 8383b824705SMikhail Kshevetskiy }; 8393b824705SMikhail Kshevetskiy 8403b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = { 8413b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio22", GPIO_LAN0_LED0_MODE_MASK, 8423b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)), 8433b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio23", GPIO_LAN1_LED0_MODE_MASK, 8443b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)), 8453b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio24", GPIO_LAN2_LED0_MODE_MASK, 8463b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)), 8473b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio25", GPIO_LAN3_LED0_MODE_MASK, 8483b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)), 8493b824705SMikhail Kshevetskiy }; 8503b824705SMikhail Kshevetskiy 8513b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = { 8523b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio22", GPIO_LAN0_LED0_MODE_MASK, 8533b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)), 8543b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio23", GPIO_LAN1_LED0_MODE_MASK, 8553b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)), 8563b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio24", GPIO_LAN2_LED0_MODE_MASK, 8573b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)), 8583b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio25", GPIO_LAN3_LED0_MODE_MASK, 8593b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), 8603b824705SMikhail Kshevetskiy }; 8613b824705SMikhail Kshevetskiy 8623b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = { 8633b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio22", GPIO_LAN0_LED0_MODE_MASK, 8643b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)), 8653b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio23", GPIO_LAN1_LED0_MODE_MASK, 8663b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)), 8673b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio24", GPIO_LAN2_LED0_MODE_MASK, 8683b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)), 8693b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED0("gpio25", GPIO_LAN3_LED0_MODE_MASK, 8703b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)), 8713b824705SMikhail Kshevetskiy }; 8723b824705SMikhail Kshevetskiy 8733b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = { 8743b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK, 8753b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(0)), 8763b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK, 8773b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(0)), 8783b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK, 8793b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(0)), 8803b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK, 8813b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(0)), 8823b824705SMikhail Kshevetskiy }; 8833b824705SMikhail Kshevetskiy 8843b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = { 8853b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK, 8863b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(1)), 8873b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK, 8883b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(1)), 8893b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK, 8903b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(1)), 8913b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK, 8923b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(1)), 8933b824705SMikhail Kshevetskiy }; 8943b824705SMikhail Kshevetskiy 8953b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = { 8963b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK, 8973b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(2)), 8983b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK, 8993b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(2)), 9003b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK, 9013b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(2)), 9023b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK, 9033b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), 9043b824705SMikhail Kshevetskiy }; 9053b824705SMikhail Kshevetskiy 9063b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = { 9073b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio7", GPIO_LAN0_LED1_MODE_MASK, 9083b824705SMikhail Kshevetskiy LAN0_LED_MAPPING_MASK, LAN0_PHY_LED_MAP(3)), 9093b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio6", GPIO_LAN1_LED1_MODE_MASK, 9103b824705SMikhail Kshevetskiy LAN1_LED_MAPPING_MASK, LAN1_PHY_LED_MAP(3)), 9113b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio5", GPIO_LAN2_LED1_MODE_MASK, 9123b824705SMikhail Kshevetskiy LAN2_LED_MAPPING_MASK, LAN2_PHY_LED_MAP(3)), 9133b824705SMikhail Kshevetskiy AIROHA_PINCTRL_PHY_LED1("gpio4", GPIO_LAN3_LED1_MODE_MASK, 9143b824705SMikhail Kshevetskiy LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(3)), 9153b824705SMikhail Kshevetskiy }; 9163b824705SMikhail Kshevetskiy 9173b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_func pinctrl_funcs[] = { 9183b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pon", pon), 9193b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("tod_1pps", tod_1pps), 9203b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("sipo", sipo), 9213b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("mdio", mdio), 9223b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("uart", uart), 9233b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("i2c", i2c), 9243b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("jtag", jtag), 9253b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcm", pcm), 9263b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("spi", spi), 9273b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcm_spi", pcm_spi), 9283b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("i2s", i2s), 9293b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("gpio", gpio), 9303b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pcie_reset", pcie_reset), 9313b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("pwm", pwm), 9323b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy1_led0", phy1_led0), 9333b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy2_led0", phy2_led0), 9343b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy3_led0", phy3_led0), 9353b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy4_led0", phy4_led0), 9363b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy1_led1", phy1_led1), 9373b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy2_led1", phy2_led1), 9383b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy3_led1", phy3_led1), 9393b824705SMikhail Kshevetskiy PINCTRL_FUNC_DESC("phy4_led1", phy4_led1), 9403b824705SMikhail Kshevetskiy }; 9413b824705SMikhail Kshevetskiy 9423b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pullup_conf[] = { 9433b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SDA_PU_MASK), 9443b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_I2C_SDA_PU, I2C_SCL_PU_MASK), 9453b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_I2C_SDA_PU, SPI_CS0_PU_MASK), 9463b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_I2C_SDA_PU, SPI_CLK_PU_MASK), 9473b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_I2C_SDA_PU, SPI_MOSI_PU_MASK), 9483b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_I2C_SDA_PU, SPI_MISO_PU_MASK), 9493b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), 9503b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), 9513b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_PU, BIT(0)), 9523b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_PU, BIT(1)), 9533b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_PU, BIT(2)), 9543b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_PU, BIT(3)), 9553b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_PU, BIT(4)), 9563b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_PU, BIT(5)), 9573b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_PU, BIT(6)), 9583b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_PU, BIT(7)), 9593b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_PU, BIT(8)), 9603b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_PU, BIT(9)), 9613b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_PU, BIT(10)), 9623b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_PU, BIT(11)), 9633b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_PU, BIT(12)), 9643b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_PU, BIT(13)), 9653b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_PU, BIT(14)), 9663b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_PU, BIT(15)), 9673b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_PU, BIT(16)), 9683b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(17)), 9693b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(18)), 9703b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(19)), 9713b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(20)), 9723b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(21)), 9733b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(22)), 9743b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(23)), 9753b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_L_PU, BIT(24)), 9763b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_L_PU, BIT(25)), 9773b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_L_PU, BIT(26)), 9783b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_L_PU, BIT(27)), 9793b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_I2C_SDA_PU, PCIE0_RESET_PU_MASK), 9803b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_PU, PCIE1_RESET_PU_MASK), 9813b824705SMikhail Kshevetskiy }; 9823b824705SMikhail Kshevetskiy 9833b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_pulldown_conf[] = { 9843b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SDA_PD_MASK), 9853b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_I2C_SDA_PD, I2C_SCL_PD_MASK), 9863b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_I2C_SDA_PD, SPI_CS0_PD_MASK), 9873b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_I2C_SDA_PD, SPI_CLK_PD_MASK), 9883b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_I2C_SDA_PD, SPI_MOSI_PD_MASK), 9893b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_I2C_SDA_PD, SPI_MISO_PD_MASK), 9903b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), 9913b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), 9923b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_PD, BIT(0)), 9933b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_PD, BIT(1)), 9943b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_PD, BIT(2)), 9953b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_PD, BIT(3)), 9963b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_PD, BIT(4)), 9973b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_PD, BIT(5)), 9983b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_PD, BIT(6)), 9993b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_PD, BIT(7)), 10003b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_PD, BIT(8)), 10013b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_PD, BIT(9)), 10023b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_PD, BIT(10)), 10033b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_PD, BIT(11)), 10043b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_PD, BIT(12)), 10053b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_PD, BIT(13)), 10063b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_PD, BIT(14)), 10073b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_PD, BIT(15)), 10083b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_PD, BIT(16)), 10093b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(17)), 10103b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(18)), 10113b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(19)), 10123b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(20)), 10133b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(21)), 10143b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(22)), 10153b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(23)), 10163b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_L_PD, BIT(24)), 10173b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_L_PD, BIT(25)), 10183b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_L_PD, BIT(26)), 10193b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_L_PD, BIT(27)), 10203b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_I2C_SDA_PD, PCIE0_RESET_PD_MASK), 10213b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_PD, PCIE1_RESET_PD_MASK), 10223b824705SMikhail Kshevetskiy }; 10233b824705SMikhail Kshevetskiy 10243b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e2_conf[] = { 10253b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SDA_E2_MASK), 10263b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_I2C_SDA_E2, I2C_SCL_E2_MASK), 10273b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_I2C_SDA_E2, SPI_CS0_E2_MASK), 10283b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_I2C_SDA_E2, SPI_CLK_E2_MASK), 10293b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_I2C_SDA_E2, SPI_MOSI_E2_MASK), 10303b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_I2C_SDA_E2, SPI_MISO_E2_MASK), 10313b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), 10323b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), 10333b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_E2, BIT(0)), 10343b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_E2, BIT(1)), 10353b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_E2, BIT(2)), 10363b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_E2, BIT(3)), 10373b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_E2, BIT(4)), 10383b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_E2, BIT(5)), 10393b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_E2, BIT(6)), 10403b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_E2, BIT(7)), 10413b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_E2, BIT(8)), 10423b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_E2, BIT(9)), 10433b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_E2, BIT(10)), 10443b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_E2, BIT(11)), 10453b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_E2, BIT(12)), 10463b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_E2, BIT(13)), 10473b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_E2, BIT(14)), 10483b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_E2, BIT(15)), 10493b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_E2, BIT(16)), 10503b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(17)), 10513b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(18)), 10523b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(19)), 10533b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(20)), 10543b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(21)), 10553b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(22)), 10563b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(23)), 10573b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_L_E2, BIT(24)), 10583b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_L_E2, BIT(25)), 10593b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_L_E2, BIT(26)), 10603b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_L_E2, BIT(27)), 10613b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_I2C_SDA_E2, PCIE0_RESET_E2_MASK), 10623b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_E2, PCIE1_RESET_E2_MASK), 10633b824705SMikhail Kshevetskiy }; 10643b824705SMikhail Kshevetskiy 10653b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_conf pinctrl_drive_e4_conf[] = { 10663b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SDA_E4_MASK), 10673b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(3, REG_I2C_SDA_E4, I2C_SCL_E4_MASK), 10683b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(4, REG_I2C_SDA_E4, SPI_CS0_E4_MASK), 10693b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(5, REG_I2C_SDA_E4, SPI_CLK_E4_MASK), 10703b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(6, REG_I2C_SDA_E4, SPI_MOSI_E4_MASK), 10713b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(7, REG_I2C_SDA_E4, SPI_MISO_E4_MASK), 10723b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(8, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), 10733b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(9, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), 10743b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(12, REG_GPIO_L_E4, BIT(0)), 10753b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(13, REG_GPIO_L_E4, BIT(1)), 10763b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(14, REG_GPIO_L_E4, BIT(2)), 10773b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(15, REG_GPIO_L_E4, BIT(3)), 10783b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(16, REG_GPIO_L_E4, BIT(4)), 10793b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(17, REG_GPIO_L_E4, BIT(5)), 10803b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(18, REG_GPIO_L_E4, BIT(6)), 10813b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(19, REG_GPIO_L_E4, BIT(7)), 10823b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(20, REG_GPIO_L_E4, BIT(8)), 10833b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(21, REG_GPIO_L_E4, BIT(9)), 10843b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(22, REG_GPIO_L_E4, BIT(10)), 10853b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(23, REG_GPIO_L_E4, BIT(11)), 10863b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(24, REG_GPIO_L_E4, BIT(12)), 10873b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(25, REG_GPIO_L_E4, BIT(13)), 10883b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(26, REG_GPIO_L_E4, BIT(14)), 10893b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(27, REG_GPIO_L_E4, BIT(15)), 10903b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(28, REG_GPIO_L_E4, BIT(16)), 10913b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(17)), 10923b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(18)), 10933b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(19)), 10943b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(20)), 10953b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(21)), 10963b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(22)), 10973b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(23)), 10983b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(36, REG_GPIO_L_E4, BIT(24)), 10993b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(37, REG_GPIO_L_E4, BIT(25)), 11003b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(38, REG_GPIO_L_E4, BIT(26)), 11013b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(39, REG_GPIO_L_E4, BIT(27)), 11023b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(40, REG_I2C_SDA_E4, PCIE0_RESET_E4_MASK), 11033b824705SMikhail Kshevetskiy PINCTRL_CONF_DESC(41, REG_I2C_SDA_E4, PCIE1_RESET_E4_MASK), 11043b824705SMikhail Kshevetskiy }; 11053b824705SMikhail Kshevetskiy 11063b824705SMikhail Kshevetskiy static const struct airoha_pinctrl_match_data pinctrl_match_data = { 1107*18c510baSMikhail Kshevetskiy .chip_scu_compatible = "airoha,en7523-chip-scu", 11083b824705SMikhail Kshevetskiy .pinctrl_name = KBUILD_MODNAME, 11093b824705SMikhail Kshevetskiy .pinctrl_owner = THIS_MODULE, 11103b824705SMikhail Kshevetskiy .pins = pinctrl_pins, 11113b824705SMikhail Kshevetskiy .num_pins = ARRAY_SIZE(pinctrl_pins), 11123b824705SMikhail Kshevetskiy .grps = pinctrl_groups, 11133b824705SMikhail Kshevetskiy .num_grps = ARRAY_SIZE(pinctrl_groups), 11143b824705SMikhail Kshevetskiy .funcs = pinctrl_funcs, 11153b824705SMikhail Kshevetskiy .num_funcs = ARRAY_SIZE(pinctrl_funcs), 11163b824705SMikhail Kshevetskiy .confs_info = { 11173b824705SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_PULLUP] = { 11183b824705SMikhail Kshevetskiy .confs = pinctrl_pullup_conf, 11193b824705SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_pullup_conf), 11203b824705SMikhail Kshevetskiy }, 11213b824705SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_PULLDOWN] = { 11223b824705SMikhail Kshevetskiy .confs = pinctrl_pulldown_conf, 11233b824705SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_pulldown_conf), 11243b824705SMikhail Kshevetskiy }, 11253b824705SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_DRIVE_E2] = { 11263b824705SMikhail Kshevetskiy .confs = pinctrl_drive_e2_conf, 11273b824705SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_drive_e2_conf), 11283b824705SMikhail Kshevetskiy }, 11293b824705SMikhail Kshevetskiy [AIROHA_PINCTRL_CONFS_DRIVE_E4] = { 11303b824705SMikhail Kshevetskiy .confs = pinctrl_drive_e4_conf, 11313b824705SMikhail Kshevetskiy .num_confs = ARRAY_SIZE(pinctrl_drive_e4_conf), 11323b824705SMikhail Kshevetskiy }, 11333b824705SMikhail Kshevetskiy }, 11343b824705SMikhail Kshevetskiy }; 11353b824705SMikhail Kshevetskiy 11363b824705SMikhail Kshevetskiy static const struct of_device_id airoha_pinctrl_of_match[] = { 11373b824705SMikhail Kshevetskiy { .compatible = "airoha,en7523-pinctrl", .data = &pinctrl_match_data }, 11383b824705SMikhail Kshevetskiy { /* sentinel */ } 11393b824705SMikhail Kshevetskiy }; 11403b824705SMikhail Kshevetskiy MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match); 11413b824705SMikhail Kshevetskiy 11423b824705SMikhail Kshevetskiy static struct platform_driver airoha_pinctrl_driver = { 11433b824705SMikhail Kshevetskiy .probe = airoha_pinctrl_probe, 11443b824705SMikhail Kshevetskiy .driver = { 11453b824705SMikhail Kshevetskiy .name = "pinctrl-airoha-en7523", 11463b824705SMikhail Kshevetskiy .of_match_table = airoha_pinctrl_of_match, 11473b824705SMikhail Kshevetskiy }, 11483b824705SMikhail Kshevetskiy }; 11493b824705SMikhail Kshevetskiy module_platform_driver(airoha_pinctrl_driver); 11503b824705SMikhail Kshevetskiy 11513b824705SMikhail Kshevetskiy MODULE_LICENSE("GPL"); 11523b824705SMikhail Kshevetskiy MODULE_AUTHOR("Lorenzo Bianconi <lorenzo@kernel.org>"); 11533b824705SMikhail Kshevetskiy MODULE_AUTHOR("Benjamin Larsson <benjamin.larsson@genexis.eu>"); 11543b824705SMikhail Kshevetskiy MODULE_AUTHOR("Markus Gothe <markus.gothe@genexis.eu>"); 11553b824705SMikhail Kshevetskiy MODULE_AUTHOR("Matheus Sampaio Queiroga <srherobrine20@gmail.com>"); 11563b824705SMikhail Kshevetskiy MODULE_AUTHOR("Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>"); 11573b824705SMikhail Kshevetskiy MODULE_DESCRIPTION("Pinctrl driver for Airoha EN7523 SoC"); 1158