1a1a503a8SSean Wang // SPDX-License-Identifier: GPL-2.0 2d6ed9355SSean Wang /* 3a1a503a8SSean Wang * Copyright (C) 2017-2018 MediaTek Inc. 4d6ed9355SSean Wang * 5a1a503a8SSean Wang * Author: Sean Wang <sean.wang@mediatek.com> 6d6ed9355SSean Wang * 7d6ed9355SSean Wang */ 8d6ed9355SSean Wang 9e78d57b2SSean Wang #include "pinctrl-moore.h" 10d6ed9355SSean Wang 11fb5fa8dcSSean Wang #define MT7622_PIN(_number, _name) \ 12*b7d7f9eeSSean Wang MTK_PIN(_number, _name, 1, _number, DRV_GRP0) 13fb5fa8dcSSean Wang 14d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_mode_range[] = { 15b906faf7SSean Wang PIN_FIELD(0, 0, 0x320, 0x10, 16, 4), 16b906faf7SSean Wang PIN_FIELD(1, 4, 0x3a0, 0x10, 16, 4), 17b906faf7SSean Wang PIN_FIELD(5, 5, 0x320, 0x10, 0, 4), 18b906faf7SSean Wang PINS_FIELD(6, 7, 0x300, 0x10, 4, 4), 19b906faf7SSean Wang PIN_FIELD(8, 9, 0x350, 0x10, 20, 4), 20b906faf7SSean Wang PINS_FIELD(10, 13, 0x300, 0x10, 8, 4), 21b906faf7SSean Wang PIN_FIELD(14, 15, 0x320, 0x10, 4, 4), 22b906faf7SSean Wang PIN_FIELD(16, 17, 0x320, 0x10, 20, 4), 23b906faf7SSean Wang PIN_FIELD(18, 21, 0x310, 0x10, 16, 4), 24b906faf7SSean Wang PIN_FIELD(22, 22, 0x380, 0x10, 16, 4), 25b906faf7SSean Wang PINS_FIELD(23, 24, 0x300, 0x10, 24, 4), 26b906faf7SSean Wang PINS_FIELD(25, 36, 0x300, 0x10, 12, 4), 27b906faf7SSean Wang PINS_FIELD(37, 50, 0x300, 0x10, 20, 4), 28b906faf7SSean Wang PIN_FIELD(51, 70, 0x330, 0x10, 4, 4), 29b906faf7SSean Wang PINS_FIELD(71, 72, 0x300, 0x10, 16, 4), 30b906faf7SSean Wang PIN_FIELD(73, 76, 0x310, 0x10, 0, 4), 31b906faf7SSean Wang PIN_FIELD(77, 77, 0x320, 0x10, 28, 4), 32b906faf7SSean Wang PIN_FIELD(78, 78, 0x320, 0x10, 12, 4), 33b906faf7SSean Wang PIN_FIELD(79, 82, 0x3a0, 0x10, 0, 4), 34b906faf7SSean Wang PIN_FIELD(83, 83, 0x350, 0x10, 28, 4), 35b906faf7SSean Wang PIN_FIELD(84, 84, 0x330, 0x10, 0, 4), 36b906faf7SSean Wang PIN_FIELD(85, 90, 0x360, 0x10, 4, 4), 37b906faf7SSean Wang PIN_FIELD(91, 94, 0x390, 0x10, 16, 4), 38b906faf7SSean Wang PIN_FIELD(95, 97, 0x380, 0x10, 20, 4), 39b906faf7SSean Wang PIN_FIELD(98, 101, 0x390, 0x10, 0, 4), 40b906faf7SSean Wang PIN_FIELD(102, 102, 0x360, 0x10, 0, 4), 41d6ed9355SSean Wang }; 42d6ed9355SSean Wang 43d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_dir_range[] = { 44b906faf7SSean Wang PIN_FIELD(0, 102, 0x0, 0x10, 0, 1), 45d6ed9355SSean Wang }; 46d6ed9355SSean Wang 47d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_di_range[] = { 48b906faf7SSean Wang PIN_FIELD(0, 102, 0x200, 0x10, 0, 1), 49d6ed9355SSean Wang }; 50d6ed9355SSean Wang 51d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_do_range[] = { 52b906faf7SSean Wang PIN_FIELD(0, 102, 0x100, 0x10, 0, 1), 53d6ed9355SSean Wang }; 54d6ed9355SSean Wang 55d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_sr_range[] = { 56b906faf7SSean Wang PIN_FIELD(0, 31, 0x910, 0x10, 0, 1), 57b906faf7SSean Wang PIN_FIELD(32, 50, 0xa10, 0x10, 0, 1), 58b906faf7SSean Wang PIN_FIELD(51, 70, 0x810, 0x10, 0, 1), 59b906faf7SSean Wang PIN_FIELD(71, 72, 0xb10, 0x10, 0, 1), 60b906faf7SSean Wang PIN_FIELD(73, 86, 0xb10, 0x10, 4, 1), 61b906faf7SSean Wang PIN_FIELD(87, 90, 0xc10, 0x10, 0, 1), 62b906faf7SSean Wang PIN_FIELD(91, 102, 0xb10, 0x10, 18, 1), 63d6ed9355SSean Wang }; 64d6ed9355SSean Wang 65d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_smt_range[] = { 66b906faf7SSean Wang PIN_FIELD(0, 31, 0x920, 0x10, 0, 1), 67b906faf7SSean Wang PIN_FIELD(32, 50, 0xa20, 0x10, 0, 1), 68b906faf7SSean Wang PIN_FIELD(51, 70, 0x820, 0x10, 0, 1), 69b906faf7SSean Wang PIN_FIELD(71, 72, 0xb20, 0x10, 0, 1), 70b906faf7SSean Wang PIN_FIELD(73, 86, 0xb20, 0x10, 4, 1), 71b906faf7SSean Wang PIN_FIELD(87, 90, 0xc20, 0x10, 0, 1), 72b906faf7SSean Wang PIN_FIELD(91, 102, 0xb20, 0x10, 18, 1), 73d6ed9355SSean Wang }; 74d6ed9355SSean Wang 75d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_pu_range[] = { 76b906faf7SSean Wang PIN_FIELD(0, 31, 0x930, 0x10, 0, 1), 77b906faf7SSean Wang PIN_FIELD(32, 50, 0xa30, 0x10, 0, 1), 78b906faf7SSean Wang PIN_FIELD(51, 70, 0x830, 0x10, 0, 1), 79b906faf7SSean Wang PIN_FIELD(71, 72, 0xb30, 0x10, 0, 1), 80b906faf7SSean Wang PIN_FIELD(73, 86, 0xb30, 0x10, 4, 1), 81b906faf7SSean Wang PIN_FIELD(87, 90, 0xc30, 0x10, 0, 1), 82b906faf7SSean Wang PIN_FIELD(91, 102, 0xb30, 0x10, 18, 1), 83d6ed9355SSean Wang }; 84d6ed9355SSean Wang 85d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_pd_range[] = { 86b906faf7SSean Wang PIN_FIELD(0, 31, 0x940, 0x10, 0, 1), 87b906faf7SSean Wang PIN_FIELD(32, 50, 0xa40, 0x10, 0, 1), 88b906faf7SSean Wang PIN_FIELD(51, 70, 0x840, 0x10, 0, 1), 89b906faf7SSean Wang PIN_FIELD(71, 72, 0xb40, 0x10, 0, 1), 90b906faf7SSean Wang PIN_FIELD(73, 86, 0xb40, 0x10, 4, 1), 91b906faf7SSean Wang PIN_FIELD(87, 90, 0xc40, 0x10, 0, 1), 92b906faf7SSean Wang PIN_FIELD(91, 102, 0xb40, 0x10, 18, 1), 93d6ed9355SSean Wang }; 94d6ed9355SSean Wang 95d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_e4_range[] = { 96b906faf7SSean Wang PIN_FIELD(0, 31, 0x960, 0x10, 0, 1), 97b906faf7SSean Wang PIN_FIELD(32, 50, 0xa60, 0x10, 0, 1), 98b906faf7SSean Wang PIN_FIELD(51, 70, 0x860, 0x10, 0, 1), 99b906faf7SSean Wang PIN_FIELD(71, 72, 0xb60, 0x10, 0, 1), 100b906faf7SSean Wang PIN_FIELD(73, 86, 0xb60, 0x10, 4, 1), 101b906faf7SSean Wang PIN_FIELD(87, 90, 0xc60, 0x10, 0, 1), 102b906faf7SSean Wang PIN_FIELD(91, 102, 0xb60, 0x10, 18, 1), 103d6ed9355SSean Wang }; 104d6ed9355SSean Wang 105d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_e8_range[] = { 106b906faf7SSean Wang PIN_FIELD(0, 31, 0x970, 0x10, 0, 1), 107b906faf7SSean Wang PIN_FIELD(32, 50, 0xa70, 0x10, 0, 1), 108b906faf7SSean Wang PIN_FIELD(51, 70, 0x870, 0x10, 0, 1), 109b906faf7SSean Wang PIN_FIELD(71, 72, 0xb70, 0x10, 0, 1), 110b906faf7SSean Wang PIN_FIELD(73, 86, 0xb70, 0x10, 4, 1), 111b906faf7SSean Wang PIN_FIELD(87, 90, 0xc70, 0x10, 0, 1), 112b906faf7SSean Wang PIN_FIELD(91, 102, 0xb70, 0x10, 18, 1), 113d6ed9355SSean Wang }; 114d6ed9355SSean Wang 115d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_tdsel_range[] = { 116b906faf7SSean Wang PIN_FIELD(0, 31, 0x980, 0x4, 0, 4), 117b906faf7SSean Wang PIN_FIELD(32, 50, 0xa80, 0x4, 0, 4), 118b906faf7SSean Wang PIN_FIELD(51, 70, 0x880, 0x4, 0, 4), 119b906faf7SSean Wang PIN_FIELD(71, 72, 0xb80, 0x4, 0, 4), 120b906faf7SSean Wang PIN_FIELD(73, 86, 0xb80, 0x4, 16, 4), 121b906faf7SSean Wang PIN_FIELD(87, 90, 0xc80, 0x4, 0, 4), 122b906faf7SSean Wang PIN_FIELD(91, 102, 0xb88, 0x4, 8, 4), 123d6ed9355SSean Wang }; 124d6ed9355SSean Wang 125d6ed9355SSean Wang static const struct mtk_pin_field_calc mt7622_pin_rdsel_range[] = { 126b906faf7SSean Wang PIN_FIELD(0, 31, 0x990, 0x4, 0, 6), 127b906faf7SSean Wang PIN_FIELD(32, 50, 0xa90, 0x4, 0, 6), 128b906faf7SSean Wang PIN_FIELD(51, 58, 0x890, 0x4, 0, 6), 129b906faf7SSean Wang PIN_FIELD(59, 60, 0x894, 0x4, 28, 6), 130b906faf7SSean Wang PIN_FIELD(61, 62, 0x894, 0x4, 16, 6), 131b906faf7SSean Wang PIN_FIELD(63, 66, 0x898, 0x4, 8, 6), 132b906faf7SSean Wang PIN_FIELD(67, 68, 0x89c, 0x4, 12, 6), 133b906faf7SSean Wang PIN_FIELD(69, 70, 0x89c, 0x4, 0, 6), 134b906faf7SSean Wang PIN_FIELD(71, 72, 0xb90, 0x4, 0, 6), 135b906faf7SSean Wang PIN_FIELD(73, 86, 0xb90, 0x4, 24, 6), 136b906faf7SSean Wang PIN_FIELD(87, 90, 0xc90, 0x4, 0, 6), 137b906faf7SSean Wang PIN_FIELD(91, 102, 0xb9c, 0x4, 12, 6), 138d6ed9355SSean Wang }; 139d6ed9355SSean Wang 140d6ed9355SSean Wang static const struct mtk_pin_reg_calc mt7622_reg_cals[PINCTRL_PIN_REG_MAX] = { 141d6ed9355SSean Wang [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt7622_pin_mode_range), 142d6ed9355SSean Wang [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt7622_pin_dir_range), 143d6ed9355SSean Wang [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt7622_pin_di_range), 144d6ed9355SSean Wang [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt7622_pin_do_range), 145d6ed9355SSean Wang [PINCTRL_PIN_REG_SR] = MTK_RANGE(mt7622_pin_sr_range), 146d6ed9355SSean Wang [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt7622_pin_smt_range), 147d6ed9355SSean Wang [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt7622_pin_pu_range), 148d6ed9355SSean Wang [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt7622_pin_pd_range), 149d6ed9355SSean Wang [PINCTRL_PIN_REG_E4] = MTK_RANGE(mt7622_pin_e4_range), 150d6ed9355SSean Wang [PINCTRL_PIN_REG_E8] = MTK_RANGE(mt7622_pin_e8_range), 151d6ed9355SSean Wang [PINCTRL_PIN_REG_TDSEL] = MTK_RANGE(mt7622_pin_tdsel_range), 152d6ed9355SSean Wang [PINCTRL_PIN_REG_RDSEL] = MTK_RANGE(mt7622_pin_rdsel_range), 153d6ed9355SSean Wang }; 154d6ed9355SSean Wang 155fb5fa8dcSSean Wang static const struct mtk_pin_desc mt7622_pins[] = { 156fb5fa8dcSSean Wang MT7622_PIN(0, "GPIO_A"), 157fb5fa8dcSSean Wang MT7622_PIN(1, "I2S1_IN"), 158fb5fa8dcSSean Wang MT7622_PIN(2, "I2S1_OUT"), 159fb5fa8dcSSean Wang MT7622_PIN(3, "I2S_BCLK"), 160fb5fa8dcSSean Wang MT7622_PIN(4, "I2S_WS"), 161fb5fa8dcSSean Wang MT7622_PIN(5, "I2S_MCLK"), 162fb5fa8dcSSean Wang MT7622_PIN(6, "TXD0"), 163fb5fa8dcSSean Wang MT7622_PIN(7, "RXD0"), 164fb5fa8dcSSean Wang MT7622_PIN(8, "SPI_WP"), 165fb5fa8dcSSean Wang MT7622_PIN(9, "SPI_HOLD"), 166fb5fa8dcSSean Wang MT7622_PIN(10, "SPI_CLK"), 167fb5fa8dcSSean Wang MT7622_PIN(11, "SPI_MOSI"), 168fb5fa8dcSSean Wang MT7622_PIN(12, "SPI_MISO"), 169fb5fa8dcSSean Wang MT7622_PIN(13, "SPI_CS"), 170fb5fa8dcSSean Wang MT7622_PIN(14, "I2C_SDA"), 171fb5fa8dcSSean Wang MT7622_PIN(15, "I2C_SCL"), 172fb5fa8dcSSean Wang MT7622_PIN(16, "I2S2_IN"), 173fb5fa8dcSSean Wang MT7622_PIN(17, "I2S3_IN"), 174fb5fa8dcSSean Wang MT7622_PIN(18, "I2S4_IN"), 175fb5fa8dcSSean Wang MT7622_PIN(19, "I2S2_OUT"), 176fb5fa8dcSSean Wang MT7622_PIN(20, "I2S3_OUT"), 177fb5fa8dcSSean Wang MT7622_PIN(21, "I2S4_OUT"), 178fb5fa8dcSSean Wang MT7622_PIN(22, "GPIO_B"), 179fb5fa8dcSSean Wang MT7622_PIN(23, "MDC"), 180fb5fa8dcSSean Wang MT7622_PIN(24, "MDIO"), 181fb5fa8dcSSean Wang MT7622_PIN(25, "G2_TXD0"), 182fb5fa8dcSSean Wang MT7622_PIN(26, "G2_TXD1"), 183fb5fa8dcSSean Wang MT7622_PIN(27, "G2_TXD2"), 184fb5fa8dcSSean Wang MT7622_PIN(28, "G2_TXD3"), 185fb5fa8dcSSean Wang MT7622_PIN(29, "G2_TXEN"), 186fb5fa8dcSSean Wang MT7622_PIN(30, "G2_TXC"), 187fb5fa8dcSSean Wang MT7622_PIN(31, "G2_RXD0"), 188fb5fa8dcSSean Wang MT7622_PIN(32, "G2_RXD1"), 189fb5fa8dcSSean Wang MT7622_PIN(33, "G2_RXD2"), 190fb5fa8dcSSean Wang MT7622_PIN(34, "G2_RXD3"), 191fb5fa8dcSSean Wang MT7622_PIN(35, "G2_RXDV"), 192fb5fa8dcSSean Wang MT7622_PIN(36, "G2_RXC"), 193fb5fa8dcSSean Wang MT7622_PIN(37, "NCEB"), 194fb5fa8dcSSean Wang MT7622_PIN(38, "NWEB"), 195fb5fa8dcSSean Wang MT7622_PIN(39, "NREB"), 196fb5fa8dcSSean Wang MT7622_PIN(40, "NDL4"), 197fb5fa8dcSSean Wang MT7622_PIN(41, "NDL5"), 198fb5fa8dcSSean Wang MT7622_PIN(42, "NDL6"), 199fb5fa8dcSSean Wang MT7622_PIN(43, "NDL7"), 200fb5fa8dcSSean Wang MT7622_PIN(44, "NRB"), 201fb5fa8dcSSean Wang MT7622_PIN(45, "NCLE"), 202fb5fa8dcSSean Wang MT7622_PIN(46, "NALE"), 203fb5fa8dcSSean Wang MT7622_PIN(47, "NDL0"), 204fb5fa8dcSSean Wang MT7622_PIN(48, "NDL1"), 205fb5fa8dcSSean Wang MT7622_PIN(49, "NDL2"), 206fb5fa8dcSSean Wang MT7622_PIN(50, "NDL3"), 207fb5fa8dcSSean Wang MT7622_PIN(51, "MDI_TP_P0"), 208fb5fa8dcSSean Wang MT7622_PIN(52, "MDI_TN_P0"), 209fb5fa8dcSSean Wang MT7622_PIN(53, "MDI_RP_P0"), 210fb5fa8dcSSean Wang MT7622_PIN(54, "MDI_RN_P0"), 211fb5fa8dcSSean Wang MT7622_PIN(55, "MDI_TP_P1"), 212fb5fa8dcSSean Wang MT7622_PIN(56, "MDI_TN_P1"), 213fb5fa8dcSSean Wang MT7622_PIN(57, "MDI_RP_P1"), 214fb5fa8dcSSean Wang MT7622_PIN(58, "MDI_RN_P1"), 215fb5fa8dcSSean Wang MT7622_PIN(59, "MDI_RP_P2"), 216fb5fa8dcSSean Wang MT7622_PIN(60, "MDI_RN_P2"), 217fb5fa8dcSSean Wang MT7622_PIN(61, "MDI_TP_P2"), 218fb5fa8dcSSean Wang MT7622_PIN(62, "MDI_TN_P2"), 219fb5fa8dcSSean Wang MT7622_PIN(63, "MDI_TP_P3"), 220fb5fa8dcSSean Wang MT7622_PIN(64, "MDI_TN_P3"), 221fb5fa8dcSSean Wang MT7622_PIN(65, "MDI_RP_P3"), 222fb5fa8dcSSean Wang MT7622_PIN(66, "MDI_RN_P3"), 223fb5fa8dcSSean Wang MT7622_PIN(67, "MDI_RP_P4"), 224fb5fa8dcSSean Wang MT7622_PIN(68, "MDI_RN_P4"), 225fb5fa8dcSSean Wang MT7622_PIN(69, "MDI_TP_P4"), 226fb5fa8dcSSean Wang MT7622_PIN(70, "MDI_TN_P4"), 227fb5fa8dcSSean Wang MT7622_PIN(71, "PMIC_SCL"), 228fb5fa8dcSSean Wang MT7622_PIN(72, "PMIC_SDA"), 229fb5fa8dcSSean Wang MT7622_PIN(73, "SPIC1_CLK"), 230fb5fa8dcSSean Wang MT7622_PIN(74, "SPIC1_MOSI"), 231fb5fa8dcSSean Wang MT7622_PIN(75, "SPIC1_MISO"), 232fb5fa8dcSSean Wang MT7622_PIN(76, "SPIC1_CS"), 233fb5fa8dcSSean Wang MT7622_PIN(77, "GPIO_D"), 234fb5fa8dcSSean Wang MT7622_PIN(78, "WATCHDOG"), 235fb5fa8dcSSean Wang MT7622_PIN(79, "RTS3_N"), 236fb5fa8dcSSean Wang MT7622_PIN(80, "CTS3_N"), 237fb5fa8dcSSean Wang MT7622_PIN(81, "TXD3"), 238fb5fa8dcSSean Wang MT7622_PIN(82, "RXD3"), 239fb5fa8dcSSean Wang MT7622_PIN(83, "PERST0_N"), 240fb5fa8dcSSean Wang MT7622_PIN(84, "PERST1_N"), 241fb5fa8dcSSean Wang MT7622_PIN(85, "WLED_N"), 242fb5fa8dcSSean Wang MT7622_PIN(86, "EPHY_LED0_N"), 243fb5fa8dcSSean Wang MT7622_PIN(87, "AUXIN0"), 244fb5fa8dcSSean Wang MT7622_PIN(88, "AUXIN1"), 245fb5fa8dcSSean Wang MT7622_PIN(89, "AUXIN2"), 246fb5fa8dcSSean Wang MT7622_PIN(90, "AUXIN3"), 247fb5fa8dcSSean Wang MT7622_PIN(91, "TXD4"), 248fb5fa8dcSSean Wang MT7622_PIN(92, "RXD4"), 249fb5fa8dcSSean Wang MT7622_PIN(93, "RTS4_N"), 250fb5fa8dcSSean Wang MT7622_PIN(94, "CTS4_N"), 251fb5fa8dcSSean Wang MT7622_PIN(95, "PWM1"), 252fb5fa8dcSSean Wang MT7622_PIN(96, "PWM2"), 253fb5fa8dcSSean Wang MT7622_PIN(97, "PWM3"), 254fb5fa8dcSSean Wang MT7622_PIN(98, "PWM4"), 255fb5fa8dcSSean Wang MT7622_PIN(99, "PWM5"), 256fb5fa8dcSSean Wang MT7622_PIN(100, "PWM6"), 257fb5fa8dcSSean Wang MT7622_PIN(101, "PWM7"), 258fb5fa8dcSSean Wang MT7622_PIN(102, "GPIO_E"), 259d6ed9355SSean Wang }; 260d6ed9355SSean Wang 261d6ed9355SSean Wang /* List all groups consisting of these pins dedicated to the enablement of 262d6ed9355SSean Wang * certain hardware block and the corresponding mode for all of the pins. The 263d6ed9355SSean Wang * hardware probably has multiple combinations of these pinouts. 264d6ed9355SSean Wang */ 265d6ed9355SSean Wang 266d6ed9355SSean Wang /* EMMC */ 267d6ed9355SSean Wang static int mt7622_emmc_pins[] = { 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, }; 268d6ed9355SSean Wang static int mt7622_emmc_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; 269d6ed9355SSean Wang 270d6ed9355SSean Wang static int mt7622_emmc_rst_pins[] = { 37, }; 271d6ed9355SSean Wang static int mt7622_emmc_rst_funcs[] = { 1, }; 272d6ed9355SSean Wang 273d6ed9355SSean Wang /* LED for EPHY */ 274d6ed9355SSean Wang static int mt7622_ephy_leds_pins[] = { 86, 91, 92, 93, 94, }; 275d6ed9355SSean Wang static int mt7622_ephy_leds_funcs[] = { 0, 0, 0, 0, 0, }; 276d6ed9355SSean Wang static int mt7622_ephy0_led_pins[] = { 86, }; 277d6ed9355SSean Wang static int mt7622_ephy0_led_funcs[] = { 0, }; 278d6ed9355SSean Wang static int mt7622_ephy1_led_pins[] = { 91, }; 279d6ed9355SSean Wang static int mt7622_ephy1_led_funcs[] = { 2, }; 280d6ed9355SSean Wang static int mt7622_ephy2_led_pins[] = { 92, }; 281d6ed9355SSean Wang static int mt7622_ephy2_led_funcs[] = { 2, }; 282d6ed9355SSean Wang static int mt7622_ephy3_led_pins[] = { 93, }; 283d6ed9355SSean Wang static int mt7622_ephy3_led_funcs[] = { 2, }; 284d6ed9355SSean Wang static int mt7622_ephy4_led_pins[] = { 94, }; 285d6ed9355SSean Wang static int mt7622_ephy4_led_funcs[] = { 2, }; 286d6ed9355SSean Wang 287d6ed9355SSean Wang /* Embedded Switch */ 288d6ed9355SSean Wang static int mt7622_esw_pins[] = { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 289d6ed9355SSean Wang 62, 63, 64, 65, 66, 67, 68, 69, 70, }; 290d6ed9355SSean Wang static int mt7622_esw_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291d6ed9355SSean Wang 0, 0, 0, 0, 0, 0, 0, 0, 0, }; 292d6ed9355SSean Wang static int mt7622_esw_p0_p1_pins[] = { 51, 52, 53, 54, 55, 56, 57, 58, }; 293d6ed9355SSean Wang static int mt7622_esw_p0_p1_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; 294d6ed9355SSean Wang static int mt7622_esw_p2_p3_p4_pins[] = { 59, 60, 61, 62, 63, 64, 65, 66, 67, 295d6ed9355SSean Wang 68, 69, 70, }; 296d6ed9355SSean Wang static int mt7622_esw_p2_p3_p4_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 297d6ed9355SSean Wang 0, 0, 0, }; 298d6ed9355SSean Wang /* RGMII via ESW */ 299d6ed9355SSean Wang static int mt7622_rgmii_via_esw_pins[] = { 59, 60, 61, 62, 63, 64, 65, 66, 300d6ed9355SSean Wang 67, 68, 69, 70, }; 301d6ed9355SSean Wang static int mt7622_rgmii_via_esw_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302d6ed9355SSean Wang 0, }; 303d6ed9355SSean Wang 304d6ed9355SSean Wang /* RGMII via GMAC1 */ 305d6ed9355SSean Wang static int mt7622_rgmii_via_gmac1_pins[] = { 59, 60, 61, 62, 63, 64, 65, 66, 306d6ed9355SSean Wang 67, 68, 69, 70, }; 307d6ed9355SSean Wang static int mt7622_rgmii_via_gmac1_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 308d6ed9355SSean Wang 2, }; 309d6ed9355SSean Wang 310d6ed9355SSean Wang /* RGMII via GMAC2 */ 311d6ed9355SSean Wang static int mt7622_rgmii_via_gmac2_pins[] = { 25, 26, 27, 28, 29, 30, 31, 32, 312d6ed9355SSean Wang 33, 34, 35, 36, }; 313d6ed9355SSean Wang static int mt7622_rgmii_via_gmac2_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 314d6ed9355SSean Wang 0, }; 315d6ed9355SSean Wang 316d6ed9355SSean Wang /* I2C */ 317d6ed9355SSean Wang static int mt7622_i2c0_pins[] = { 14, 15, }; 318d6ed9355SSean Wang static int mt7622_i2c0_funcs[] = { 0, 0, }; 319d6ed9355SSean Wang static int mt7622_i2c1_0_pins[] = { 55, 56, }; 320d6ed9355SSean Wang static int mt7622_i2c1_0_funcs[] = { 0, 0, }; 321d6ed9355SSean Wang static int mt7622_i2c1_1_pins[] = { 73, 74, }; 322d6ed9355SSean Wang static int mt7622_i2c1_1_funcs[] = { 3, 3, }; 323d6ed9355SSean Wang static int mt7622_i2c1_2_pins[] = { 87, 88, }; 324d6ed9355SSean Wang static int mt7622_i2c1_2_funcs[] = { 0, 0, }; 325d6ed9355SSean Wang static int mt7622_i2c2_0_pins[] = { 57, 58, }; 326d6ed9355SSean Wang static int mt7622_i2c2_0_funcs[] = { 0, 0, }; 327d6ed9355SSean Wang static int mt7622_i2c2_1_pins[] = { 75, 76, }; 328d6ed9355SSean Wang static int mt7622_i2c2_1_funcs[] = { 3, 3, }; 329d6ed9355SSean Wang static int mt7622_i2c2_2_pins[] = { 89, 90, }; 330d6ed9355SSean Wang static int mt7622_i2c2_2_funcs[] = { 0, 0, }; 331d6ed9355SSean Wang 332d6ed9355SSean Wang /* I2S */ 333d6ed9355SSean Wang static int mt7622_i2s_in_mclk_bclk_ws_pins[] = { 3, 4, 5, }; 334d6ed9355SSean Wang static int mt7622_i2s_in_mclk_bclk_ws_funcs[] = { 3, 3, 0, }; 335d6ed9355SSean Wang static int mt7622_i2s1_in_data_pins[] = { 1, }; 336d6ed9355SSean Wang static int mt7622_i2s1_in_data_funcs[] = { 0, }; 337d6ed9355SSean Wang static int mt7622_i2s2_in_data_pins[] = { 16, }; 338d6ed9355SSean Wang static int mt7622_i2s2_in_data_funcs[] = { 0, }; 339d6ed9355SSean Wang static int mt7622_i2s3_in_data_pins[] = { 17, }; 340d6ed9355SSean Wang static int mt7622_i2s3_in_data_funcs[] = { 0, }; 341d6ed9355SSean Wang static int mt7622_i2s4_in_data_pins[] = { 18, }; 342d6ed9355SSean Wang static int mt7622_i2s4_in_data_funcs[] = { 0, }; 343d6ed9355SSean Wang static int mt7622_i2s_out_mclk_bclk_ws_pins[] = { 3, 4, 5, }; 344d6ed9355SSean Wang static int mt7622_i2s_out_mclk_bclk_ws_funcs[] = { 0, 0, 0, }; 345d6ed9355SSean Wang static int mt7622_i2s1_out_data_pins[] = { 2, }; 346d6ed9355SSean Wang static int mt7622_i2s1_out_data_funcs[] = { 0, }; 347d6ed9355SSean Wang static int mt7622_i2s2_out_data_pins[] = { 19, }; 348d6ed9355SSean Wang static int mt7622_i2s2_out_data_funcs[] = { 0, }; 349d6ed9355SSean Wang static int mt7622_i2s3_out_data_pins[] = { 20, }; 350d6ed9355SSean Wang static int mt7622_i2s3_out_data_funcs[] = { 0, }; 351d6ed9355SSean Wang static int mt7622_i2s4_out_data_pins[] = { 21, }; 352d6ed9355SSean Wang static int mt7622_i2s4_out_data_funcs[] = { 0, }; 353d6ed9355SSean Wang 354d6ed9355SSean Wang /* IR */ 355d6ed9355SSean Wang static int mt7622_ir_0_tx_pins[] = { 16, }; 356d6ed9355SSean Wang static int mt7622_ir_0_tx_funcs[] = { 4, }; 357d6ed9355SSean Wang static int mt7622_ir_1_tx_pins[] = { 59, }; 358d6ed9355SSean Wang static int mt7622_ir_1_tx_funcs[] = { 5, }; 359d6ed9355SSean Wang static int mt7622_ir_2_tx_pins[] = { 99, }; 360d6ed9355SSean Wang static int mt7622_ir_2_tx_funcs[] = { 3, }; 361d6ed9355SSean Wang static int mt7622_ir_0_rx_pins[] = { 17, }; 362d6ed9355SSean Wang static int mt7622_ir_0_rx_funcs[] = { 4, }; 363d6ed9355SSean Wang static int mt7622_ir_1_rx_pins[] = { 60, }; 364d6ed9355SSean Wang static int mt7622_ir_1_rx_funcs[] = { 5, }; 365d6ed9355SSean Wang static int mt7622_ir_2_rx_pins[] = { 100, }; 366d6ed9355SSean Wang static int mt7622_ir_2_rx_funcs[] = { 3, }; 367d6ed9355SSean Wang 368d6ed9355SSean Wang /* MDIO */ 369d6ed9355SSean Wang static int mt7622_mdc_mdio_pins[] = { 23, 24, }; 370d6ed9355SSean Wang static int mt7622_mdc_mdio_funcs[] = { 0, 0, }; 371d6ed9355SSean Wang 372d6ed9355SSean Wang /* PCIE */ 373d6ed9355SSean Wang static int mt7622_pcie0_0_waken_pins[] = { 14, }; 374d6ed9355SSean Wang static int mt7622_pcie0_0_waken_funcs[] = { 2, }; 375d6ed9355SSean Wang static int mt7622_pcie0_0_clkreq_pins[] = { 15, }; 376d6ed9355SSean Wang static int mt7622_pcie0_0_clkreq_funcs[] = { 2, }; 377d6ed9355SSean Wang static int mt7622_pcie0_1_waken_pins[] = { 79, }; 378d6ed9355SSean Wang static int mt7622_pcie0_1_waken_funcs[] = { 4, }; 379d6ed9355SSean Wang static int mt7622_pcie0_1_clkreq_pins[] = { 80, }; 380d6ed9355SSean Wang static int mt7622_pcie0_1_clkreq_funcs[] = { 4, }; 381d6ed9355SSean Wang static int mt7622_pcie1_0_waken_pins[] = { 14, }; 382d6ed9355SSean Wang static int mt7622_pcie1_0_waken_funcs[] = { 3, }; 383d6ed9355SSean Wang static int mt7622_pcie1_0_clkreq_pins[] = { 15, }; 384d6ed9355SSean Wang static int mt7622_pcie1_0_clkreq_funcs[] = { 3, }; 385d6ed9355SSean Wang 386d6ed9355SSean Wang static int mt7622_pcie0_pad_perst_pins[] = { 83, }; 387d6ed9355SSean Wang static int mt7622_pcie0_pad_perst_funcs[] = { 0, }; 388d6ed9355SSean Wang static int mt7622_pcie1_pad_perst_pins[] = { 84, }; 389d6ed9355SSean Wang static int mt7622_pcie1_pad_perst_funcs[] = { 0, }; 390d6ed9355SSean Wang 391d6ed9355SSean Wang /* PMIC bus */ 392d6ed9355SSean Wang static int mt7622_pmic_bus_pins[] = { 71, 72, }; 393d6ed9355SSean Wang static int mt7622_pmic_bus_funcs[] = { 0, 0, }; 394d6ed9355SSean Wang 395d6ed9355SSean Wang /* Parallel NAND */ 396d6ed9355SSean Wang static int mt7622_pnand_pins[] = { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 397d6ed9355SSean Wang 48, 49, 50, }; 398d6ed9355SSean Wang static int mt7622_pnand_funcs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399d6ed9355SSean Wang 0, }; 400d6ed9355SSean Wang 401d6ed9355SSean Wang /* PWM */ 402d6ed9355SSean Wang static int mt7622_pwm_ch1_0_pins[] = { 51, }; 403d6ed9355SSean Wang static int mt7622_pwm_ch1_0_funcs[] = { 3, }; 404d6ed9355SSean Wang static int mt7622_pwm_ch1_1_pins[] = { 73, }; 405d6ed9355SSean Wang static int mt7622_pwm_ch1_1_funcs[] = { 4, }; 406d6ed9355SSean Wang static int mt7622_pwm_ch1_2_pins[] = { 95, }; 407d6ed9355SSean Wang static int mt7622_pwm_ch1_2_funcs[] = { 0, }; 408d6ed9355SSean Wang static int mt7622_pwm_ch2_0_pins[] = { 52, }; 409d6ed9355SSean Wang static int mt7622_pwm_ch2_0_funcs[] = { 3, }; 410d6ed9355SSean Wang static int mt7622_pwm_ch2_1_pins[] = { 74, }; 411d6ed9355SSean Wang static int mt7622_pwm_ch2_1_funcs[] = { 4, }; 412d6ed9355SSean Wang static int mt7622_pwm_ch2_2_pins[] = { 96, }; 413d6ed9355SSean Wang static int mt7622_pwm_ch2_2_funcs[] = { 0, }; 414d6ed9355SSean Wang static int mt7622_pwm_ch3_0_pins[] = { 53, }; 415d6ed9355SSean Wang static int mt7622_pwm_ch3_0_funcs[] = { 3, }; 416d6ed9355SSean Wang static int mt7622_pwm_ch3_1_pins[] = { 75, }; 417d6ed9355SSean Wang static int mt7622_pwm_ch3_1_funcs[] = { 4, }; 418d6ed9355SSean Wang static int mt7622_pwm_ch3_2_pins[] = { 97, }; 419d6ed9355SSean Wang static int mt7622_pwm_ch3_2_funcs[] = { 0, }; 420d6ed9355SSean Wang static int mt7622_pwm_ch4_0_pins[] = { 54, }; 421d6ed9355SSean Wang static int mt7622_pwm_ch4_0_funcs[] = { 3, }; 422d6ed9355SSean Wang static int mt7622_pwm_ch4_1_pins[] = { 67, }; 423d6ed9355SSean Wang static int mt7622_pwm_ch4_1_funcs[] = { 3, }; 424d6ed9355SSean Wang static int mt7622_pwm_ch4_2_pins[] = { 76, }; 425d6ed9355SSean Wang static int mt7622_pwm_ch4_2_funcs[] = { 4, }; 426d6ed9355SSean Wang static int mt7622_pwm_ch4_3_pins[] = { 98, }; 427d6ed9355SSean Wang static int mt7622_pwm_ch4_3_funcs[] = { 0, }; 428d6ed9355SSean Wang static int mt7622_pwm_ch5_0_pins[] = { 68, }; 429d6ed9355SSean Wang static int mt7622_pwm_ch5_0_funcs[] = { 3, }; 430d6ed9355SSean Wang static int mt7622_pwm_ch5_1_pins[] = { 77, }; 431d6ed9355SSean Wang static int mt7622_pwm_ch5_1_funcs[] = { 4, }; 432d6ed9355SSean Wang static int mt7622_pwm_ch5_2_pins[] = { 99, }; 433d6ed9355SSean Wang static int mt7622_pwm_ch5_2_funcs[] = { 0, }; 434d6ed9355SSean Wang static int mt7622_pwm_ch6_0_pins[] = { 69, }; 435d6ed9355SSean Wang static int mt7622_pwm_ch6_0_funcs[] = { 3, }; 436d6ed9355SSean Wang static int mt7622_pwm_ch6_1_pins[] = { 78, }; 437d6ed9355SSean Wang static int mt7622_pwm_ch6_1_funcs[] = { 4, }; 438d6ed9355SSean Wang static int mt7622_pwm_ch6_2_pins[] = { 81, }; 439d6ed9355SSean Wang static int mt7622_pwm_ch6_2_funcs[] = { 4, }; 440d6ed9355SSean Wang static int mt7622_pwm_ch6_3_pins[] = { 100, }; 441d6ed9355SSean Wang static int mt7622_pwm_ch6_3_funcs[] = { 0, }; 442d6ed9355SSean Wang static int mt7622_pwm_ch7_0_pins[] = { 70, }; 443d6ed9355SSean Wang static int mt7622_pwm_ch7_0_funcs[] = { 3, }; 444d6ed9355SSean Wang static int mt7622_pwm_ch7_1_pins[] = { 82, }; 445d6ed9355SSean Wang static int mt7622_pwm_ch7_1_funcs[] = { 4, }; 446d6ed9355SSean Wang static int mt7622_pwm_ch7_2_pins[] = { 101, }; 447d6ed9355SSean Wang static int mt7622_pwm_ch7_2_funcs[] = { 0, }; 448d6ed9355SSean Wang 449d6ed9355SSean Wang /* SD */ 450d6ed9355SSean Wang static int mt7622_sd_0_pins[] = { 16, 17, 18, 19, 20, 21, }; 451d6ed9355SSean Wang static int mt7622_sd_0_funcs[] = { 2, 2, 2, 2, 2, 2, }; 452d6ed9355SSean Wang static int mt7622_sd_1_pins[] = { 25, 26, 27, 28, 29, 30, }; 453d6ed9355SSean Wang static int mt7622_sd_1_funcs[] = { 2, 2, 2, 2, 2, 2, }; 454d6ed9355SSean Wang 455d6ed9355SSean Wang /* Serial NAND */ 456d6ed9355SSean Wang static int mt7622_snfi_pins[] = { 8, 9, 10, 11, 12, 13, }; 457d6ed9355SSean Wang static int mt7622_snfi_funcs[] = { 2, 2, 2, 2, 2, 2, }; 458d6ed9355SSean Wang 459d6ed9355SSean Wang /* SPI NOR */ 460d6ed9355SSean Wang static int mt7622_spi_pins[] = { 8, 9, 10, 11, 12, 13 }; 461d6ed9355SSean Wang static int mt7622_spi_funcs[] = { 0, 0, 0, 0, 0, 0, }; 462d6ed9355SSean Wang 463d6ed9355SSean Wang /* SPIC */ 464d6ed9355SSean Wang static int mt7622_spic0_0_pins[] = { 63, 64, 65, 66, }; 465d6ed9355SSean Wang static int mt7622_spic0_0_funcs[] = { 4, 4, 4, 4, }; 466d6ed9355SSean Wang static int mt7622_spic0_1_pins[] = { 79, 80, 81, 82, }; 467d6ed9355SSean Wang static int mt7622_spic0_1_funcs[] = { 3, 3, 3, 3, }; 468d6ed9355SSean Wang static int mt7622_spic1_0_pins[] = { 67, 68, 69, 70, }; 469d6ed9355SSean Wang static int mt7622_spic1_0_funcs[] = { 4, 4, 4, 4, }; 470d6ed9355SSean Wang static int mt7622_spic1_1_pins[] = { 73, 74, 75, 76, }; 471d6ed9355SSean Wang static int mt7622_spic1_1_funcs[] = { 0, 0, 0, 0, }; 472d6ed9355SSean Wang static int mt7622_spic2_0_pins[] = { 10, 11, 12, 13, }; 473d6ed9355SSean Wang static int mt7622_spic2_0_funcs[] = { 0, 0, 0, 0, }; 474d6ed9355SSean Wang static int mt7622_spic2_0_wp_hold_pins[] = { 8, 9, }; 475d6ed9355SSean Wang static int mt7622_spic2_0_wp_hold_funcs[] = { 0, 0, }; 476d6ed9355SSean Wang 477d6ed9355SSean Wang /* TDM */ 478d6ed9355SSean Wang static int mt7622_tdm_0_out_mclk_bclk_ws_pins[] = { 8, 9, 10, }; 479d6ed9355SSean Wang static int mt7622_tdm_0_out_mclk_bclk_ws_funcs[] = { 3, 3, 3, }; 480d6ed9355SSean Wang static int mt7622_tdm_0_in_mclk_bclk_ws_pins[] = { 11, 12, 13, }; 481d6ed9355SSean Wang static int mt7622_tdm_0_in_mclk_bclk_ws_funcs[] = { 3, 3, 3, }; 482d6ed9355SSean Wang static int mt7622_tdm_0_out_data_pins[] = { 20, }; 483d6ed9355SSean Wang static int mt7622_tdm_0_out_data_funcs[] = { 3, }; 484d6ed9355SSean Wang static int mt7622_tdm_0_in_data_pins[] = { 21, }; 485d6ed9355SSean Wang static int mt7622_tdm_0_in_data_funcs[] = { 3, }; 486d6ed9355SSean Wang static int mt7622_tdm_1_out_mclk_bclk_ws_pins[] = { 57, 58, 59, }; 487d6ed9355SSean Wang static int mt7622_tdm_1_out_mclk_bclk_ws_funcs[] = { 3, 3, 3, }; 488d6ed9355SSean Wang static int mt7622_tdm_1_in_mclk_bclk_ws_pins[] = { 60, 61, 62, }; 489d6ed9355SSean Wang static int mt7622_tdm_1_in_mclk_bclk_ws_funcs[] = { 3, 3, 3, }; 490d6ed9355SSean Wang static int mt7622_tdm_1_out_data_pins[] = { 55, }; 491d6ed9355SSean Wang static int mt7622_tdm_1_out_data_funcs[] = { 3, }; 492d6ed9355SSean Wang static int mt7622_tdm_1_in_data_pins[] = { 56, }; 493d6ed9355SSean Wang static int mt7622_tdm_1_in_data_funcs[] = { 3, }; 494d6ed9355SSean Wang 495d6ed9355SSean Wang /* UART */ 496d6ed9355SSean Wang static int mt7622_uart0_0_tx_rx_pins[] = { 6, 7, }; 497d6ed9355SSean Wang static int mt7622_uart0_0_tx_rx_funcs[] = { 0, 0, }; 498d6ed9355SSean Wang static int mt7622_uart1_0_tx_rx_pins[] = { 55, 56, }; 499d6ed9355SSean Wang static int mt7622_uart1_0_tx_rx_funcs[] = { 2, 2, }; 500d6ed9355SSean Wang static int mt7622_uart1_0_rts_cts_pins[] = { 57, 58, }; 501d6ed9355SSean Wang static int mt7622_uart1_0_rts_cts_funcs[] = { 2, 2, }; 502d6ed9355SSean Wang static int mt7622_uart1_1_tx_rx_pins[] = { 73, 74, }; 503d6ed9355SSean Wang static int mt7622_uart1_1_tx_rx_funcs[] = { 2, 2, }; 504d6ed9355SSean Wang static int mt7622_uart1_1_rts_cts_pins[] = { 75, 76, }; 505d6ed9355SSean Wang static int mt7622_uart1_1_rts_cts_funcs[] = { 2, 2, }; 506d6ed9355SSean Wang static int mt7622_uart2_0_tx_rx_pins[] = { 3, 4, }; 507d6ed9355SSean Wang static int mt7622_uart2_0_tx_rx_funcs[] = { 2, 2, }; 508d6ed9355SSean Wang static int mt7622_uart2_0_rts_cts_pins[] = { 1, 2, }; 509d6ed9355SSean Wang static int mt7622_uart2_0_rts_cts_funcs[] = { 2, 2, }; 510d6ed9355SSean Wang static int mt7622_uart2_1_tx_rx_pins[] = { 51, 52, }; 511d6ed9355SSean Wang static int mt7622_uart2_1_tx_rx_funcs[] = { 0, 0, }; 512d6ed9355SSean Wang static int mt7622_uart2_1_rts_cts_pins[] = { 53, 54, }; 513d6ed9355SSean Wang static int mt7622_uart2_1_rts_cts_funcs[] = { 0, 0, }; 514d6ed9355SSean Wang static int mt7622_uart2_2_tx_rx_pins[] = { 59, 60, }; 515d6ed9355SSean Wang static int mt7622_uart2_2_tx_rx_funcs[] = { 4, 4, }; 516d6ed9355SSean Wang static int mt7622_uart2_2_rts_cts_pins[] = { 61, 62, }; 517d6ed9355SSean Wang static int mt7622_uart2_2_rts_cts_funcs[] = { 4, 4, }; 518d6ed9355SSean Wang static int mt7622_uart2_3_tx_rx_pins[] = { 95, 96, }; 519d6ed9355SSean Wang static int mt7622_uart2_3_tx_rx_funcs[] = { 3, 3, }; 520d6ed9355SSean Wang static int mt7622_uart3_0_tx_rx_pins[] = { 57, 58, }; 521d6ed9355SSean Wang static int mt7622_uart3_0_tx_rx_funcs[] = { 5, 5, }; 522d6ed9355SSean Wang static int mt7622_uart3_1_tx_rx_pins[] = { 81, 82, }; 523d6ed9355SSean Wang static int mt7622_uart3_1_tx_rx_funcs[] = { 0, 0, }; 524d6ed9355SSean Wang static int mt7622_uart3_1_rts_cts_pins[] = { 79, 80, }; 525d6ed9355SSean Wang static int mt7622_uart3_1_rts_cts_funcs[] = { 0, 0, }; 526d6ed9355SSean Wang static int mt7622_uart4_0_tx_rx_pins[] = { 61, 62, }; 527d6ed9355SSean Wang static int mt7622_uart4_0_tx_rx_funcs[] = { 5, 5, }; 528d6ed9355SSean Wang static int mt7622_uart4_1_tx_rx_pins[] = { 91, 92, }; 529d6ed9355SSean Wang static int mt7622_uart4_1_tx_rx_funcs[] = { 0, 0, }; 530d6ed9355SSean Wang static int mt7622_uart4_1_rts_cts_pins[] = { 93, 94 }; 531d6ed9355SSean Wang static int mt7622_uart4_1_rts_cts_funcs[] = { 0, 0, }; 532d6ed9355SSean Wang static int mt7622_uart4_2_tx_rx_pins[] = { 97, 98, }; 533d6ed9355SSean Wang static int mt7622_uart4_2_tx_rx_funcs[] = { 2, 2, }; 534d6ed9355SSean Wang static int mt7622_uart4_2_rts_cts_pins[] = { 95, 96 }; 535d6ed9355SSean Wang static int mt7622_uart4_2_rts_cts_funcs[] = { 2, 2, }; 536d6ed9355SSean Wang 537d6ed9355SSean Wang /* Watchdog */ 538d6ed9355SSean Wang static int mt7622_watchdog_pins[] = { 78, }; 539d6ed9355SSean Wang static int mt7622_watchdog_funcs[] = { 0, }; 540d6ed9355SSean Wang 541d6ed9355SSean Wang /* WLAN LED */ 542d6ed9355SSean Wang static int mt7622_wled_pins[] = { 85, }; 543d6ed9355SSean Wang static int mt7622_wled_funcs[] = { 0, }; 544d6ed9355SSean Wang 545d6ed9355SSean Wang static const struct group_desc mt7622_groups[] = { 546d6ed9355SSean Wang PINCTRL_PIN_GROUP("emmc", mt7622_emmc), 547d6ed9355SSean Wang PINCTRL_PIN_GROUP("emmc_rst", mt7622_emmc_rst), 548d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy_leds", mt7622_ephy_leds), 549d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy0_led", mt7622_ephy0_led), 550d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy1_led", mt7622_ephy1_led), 551d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy2_led", mt7622_ephy2_led), 552d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy3_led", mt7622_ephy3_led), 553d6ed9355SSean Wang PINCTRL_PIN_GROUP("ephy4_led", mt7622_ephy4_led), 554d6ed9355SSean Wang PINCTRL_PIN_GROUP("esw", mt7622_esw), 555d6ed9355SSean Wang PINCTRL_PIN_GROUP("esw_p0_p1", mt7622_esw_p0_p1), 556d6ed9355SSean Wang PINCTRL_PIN_GROUP("esw_p2_p3_p4", mt7622_esw_p2_p3_p4), 557d6ed9355SSean Wang PINCTRL_PIN_GROUP("rgmii_via_esw", mt7622_rgmii_via_esw), 558d6ed9355SSean Wang PINCTRL_PIN_GROUP("rgmii_via_gmac1", mt7622_rgmii_via_gmac1), 559d6ed9355SSean Wang PINCTRL_PIN_GROUP("rgmii_via_gmac2", mt7622_rgmii_via_gmac2), 560d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c0", mt7622_i2c0), 561d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c1_0", mt7622_i2c1_0), 562d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c1_1", mt7622_i2c1_1), 563d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c1_2", mt7622_i2c1_2), 564d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c2_0", mt7622_i2c2_0), 565d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c2_1", mt7622_i2c2_1), 566d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2c2_2", mt7622_i2c2_2), 567d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s_out_mclk_bclk_ws", mt7622_i2s_out_mclk_bclk_ws), 568d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s_in_mclk_bclk_ws", mt7622_i2s_in_mclk_bclk_ws), 569d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s1_in_data", mt7622_i2s1_in_data), 570d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s2_in_data", mt7622_i2s2_in_data), 571d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s3_in_data", mt7622_i2s3_in_data), 572d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s4_in_data", mt7622_i2s4_in_data), 573d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s1_out_data", mt7622_i2s1_out_data), 574d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s2_out_data", mt7622_i2s2_out_data), 575d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s3_out_data", mt7622_i2s3_out_data), 576d6ed9355SSean Wang PINCTRL_PIN_GROUP("i2s4_out_data", mt7622_i2s4_out_data), 577d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_0_tx", mt7622_ir_0_tx), 578d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_1_tx", mt7622_ir_1_tx), 579d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_2_tx", mt7622_ir_2_tx), 580d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_0_rx", mt7622_ir_0_rx), 581d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_1_rx", mt7622_ir_1_rx), 582d6ed9355SSean Wang PINCTRL_PIN_GROUP("ir_2_rx", mt7622_ir_2_rx), 583d6ed9355SSean Wang PINCTRL_PIN_GROUP("mdc_mdio", mt7622_mdc_mdio), 584d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie0_0_waken", mt7622_pcie0_0_waken), 585d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie0_0_clkreq", mt7622_pcie0_0_clkreq), 586d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie0_1_waken", mt7622_pcie0_1_waken), 587d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie0_1_clkreq", mt7622_pcie0_1_clkreq), 588d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie1_0_waken", mt7622_pcie1_0_waken), 589d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie1_0_clkreq", mt7622_pcie1_0_clkreq), 590d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie0_pad_perst", mt7622_pcie0_pad_perst), 591d6ed9355SSean Wang PINCTRL_PIN_GROUP("pcie1_pad_perst", mt7622_pcie1_pad_perst), 592d6ed9355SSean Wang PINCTRL_PIN_GROUP("par_nand", mt7622_pnand), 593d6ed9355SSean Wang PINCTRL_PIN_GROUP("pmic_bus", mt7622_pmic_bus), 594d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch1_0", mt7622_pwm_ch1_0), 595d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch1_1", mt7622_pwm_ch1_1), 596d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch1_2", mt7622_pwm_ch1_2), 597d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch2_0", mt7622_pwm_ch2_0), 598d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch2_1", mt7622_pwm_ch2_1), 599d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch2_2", mt7622_pwm_ch2_2), 600d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch3_0", mt7622_pwm_ch3_0), 601d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch3_1", mt7622_pwm_ch3_1), 602d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch3_2", mt7622_pwm_ch3_2), 603d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch4_0", mt7622_pwm_ch4_0), 604d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch4_1", mt7622_pwm_ch4_1), 605d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch4_2", mt7622_pwm_ch4_2), 606d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch4_3", mt7622_pwm_ch4_3), 607d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch5_0", mt7622_pwm_ch5_0), 608d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch5_1", mt7622_pwm_ch5_1), 609d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch5_2", mt7622_pwm_ch5_2), 610d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch6_0", mt7622_pwm_ch6_0), 611d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch6_1", mt7622_pwm_ch6_1), 612d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch6_2", mt7622_pwm_ch6_2), 613d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch6_3", mt7622_pwm_ch6_3), 614d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch7_0", mt7622_pwm_ch7_0), 615d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch7_1", mt7622_pwm_ch7_1), 616d6ed9355SSean Wang PINCTRL_PIN_GROUP("pwm_ch7_2", mt7622_pwm_ch7_2), 617d6ed9355SSean Wang PINCTRL_PIN_GROUP("sd_0", mt7622_sd_0), 618d6ed9355SSean Wang PINCTRL_PIN_GROUP("sd_1", mt7622_sd_1), 619d6ed9355SSean Wang PINCTRL_PIN_GROUP("snfi", mt7622_snfi), 620d6ed9355SSean Wang PINCTRL_PIN_GROUP("spi_nor", mt7622_spi), 621d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic0_0", mt7622_spic0_0), 622d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic0_1", mt7622_spic0_1), 623d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic1_0", mt7622_spic1_0), 624d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic1_1", mt7622_spic1_1), 625d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic2_0", mt7622_spic2_0), 626d6ed9355SSean Wang PINCTRL_PIN_GROUP("spic2_0_wp_hold", mt7622_spic2_0_wp_hold), 627d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_0_out_mclk_bclk_ws", 628d6ed9355SSean Wang mt7622_tdm_0_out_mclk_bclk_ws), 629d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_0_in_mclk_bclk_ws", 630d6ed9355SSean Wang mt7622_tdm_0_in_mclk_bclk_ws), 631d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_0_out_data", mt7622_tdm_0_out_data), 632d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_0_in_data", mt7622_tdm_0_in_data), 633d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_1_out_mclk_bclk_ws", 634d6ed9355SSean Wang mt7622_tdm_1_out_mclk_bclk_ws), 635d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_1_in_mclk_bclk_ws", 636d6ed9355SSean Wang mt7622_tdm_1_in_mclk_bclk_ws), 637d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_1_out_data", mt7622_tdm_1_out_data), 638d6ed9355SSean Wang PINCTRL_PIN_GROUP("tdm_1_in_data", mt7622_tdm_1_in_data), 639d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart0_0_tx_rx", mt7622_uart0_0_tx_rx), 640d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart1_0_tx_rx", mt7622_uart1_0_tx_rx), 641d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart1_0_rts_cts", mt7622_uart1_0_rts_cts), 642d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart1_1_tx_rx", mt7622_uart1_1_tx_rx), 643d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart1_1_rts_cts", mt7622_uart1_1_rts_cts), 644d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_0_tx_rx", mt7622_uart2_0_tx_rx), 645d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_0_rts_cts", mt7622_uart2_0_rts_cts), 646d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_1_tx_rx", mt7622_uart2_1_tx_rx), 647d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_1_rts_cts", mt7622_uart2_1_rts_cts), 648d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_2_tx_rx", mt7622_uart2_2_tx_rx), 649d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_2_rts_cts", mt7622_uart2_2_rts_cts), 650d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart2_3_tx_rx", mt7622_uart2_3_tx_rx), 651d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart3_0_tx_rx", mt7622_uart3_0_tx_rx), 652d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart3_1_tx_rx", mt7622_uart3_1_tx_rx), 653d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart3_1_rts_cts", mt7622_uart3_1_rts_cts), 654d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart4_0_tx_rx", mt7622_uart4_0_tx_rx), 655d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart4_1_tx_rx", mt7622_uart4_1_tx_rx), 656d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart4_1_rts_cts", mt7622_uart4_1_rts_cts), 657d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart4_2_tx_rx", mt7622_uart4_2_tx_rx), 658d6ed9355SSean Wang PINCTRL_PIN_GROUP("uart4_2_rts_cts", mt7622_uart4_2_rts_cts), 659d6ed9355SSean Wang PINCTRL_PIN_GROUP("watchdog", mt7622_watchdog), 660d6ed9355SSean Wang PINCTRL_PIN_GROUP("wled", mt7622_wled), 661d6ed9355SSean Wang }; 662d6ed9355SSean Wang 663d6ed9355SSean Wang /* Joint those groups owning the same capability in user point of view which 664d6ed9355SSean Wang * allows that people tend to use through the device tree. 665d6ed9355SSean Wang */ 666d6ed9355SSean Wang static const char *mt7622_emmc_groups[] = { "emmc", "emmc_rst", }; 667d6ed9355SSean Wang static const char *mt7622_ethernet_groups[] = { "esw", "esw_p0_p1", 668d6ed9355SSean Wang "esw_p2_p3_p4", "mdc_mdio", 669d6ed9355SSean Wang "rgmii_via_gmac1", 670d6ed9355SSean Wang "rgmii_via_gmac2", 671d6ed9355SSean Wang "rgmii_via_esw", }; 672d6ed9355SSean Wang static const char *mt7622_i2c_groups[] = { "i2c0", "i2c1_0", "i2c1_1", 673d6ed9355SSean Wang "i2c1_2", "i2c2_0", "i2c2_1", 674d6ed9355SSean Wang "i2c2_2", }; 675d6ed9355SSean Wang static const char *mt7622_i2s_groups[] = { "i2s_out_mclk_bclk_ws", 676d6ed9355SSean Wang "i2s_in_mclk_bclk_ws", 677d6ed9355SSean Wang "i2s1_in_data", "i2s2_in_data", 678d6ed9355SSean Wang "i2s3_in_data", "i2s4_in_data", 679d6ed9355SSean Wang "i2s1_out_data", "i2s2_out_data", 680d6ed9355SSean Wang "i2s3_out_data", "i2s4_out_data", }; 681d6ed9355SSean Wang static const char *mt7622_ir_groups[] = { "ir_0_tx", "ir_1_tx", "ir_2_tx", 682d6ed9355SSean Wang "ir_0_rx", "ir_1_rx", "ir_2_rx"}; 683d6ed9355SSean Wang static const char *mt7622_led_groups[] = { "ephy_leds", "ephy0_led", 684d6ed9355SSean Wang "ephy1_led", "ephy2_led", 685d6ed9355SSean Wang "ephy3_led", "ephy4_led", 686d6ed9355SSean Wang "wled", }; 687d6ed9355SSean Wang static const char *mt7622_flash_groups[] = { "par_nand", "snfi", "spi_nor"}; 688d6ed9355SSean Wang static const char *mt7622_pcie_groups[] = { "pcie0_0_waken", "pcie0_0_clkreq", 689d6ed9355SSean Wang "pcie0_1_waken", "pcie0_1_clkreq", 690d6ed9355SSean Wang "pcie1_0_waken", "pcie1_0_clkreq", 691d6ed9355SSean Wang "pcie0_pad_perst", 692d6ed9355SSean Wang "pcie1_pad_perst", }; 693d6ed9355SSean Wang static const char *mt7622_pmic_bus_groups[] = { "pmic_bus", }; 694d6ed9355SSean Wang static const char *mt7622_pwm_groups[] = { "pwm_ch1_0", "pwm_ch1_1", 695d6ed9355SSean Wang "pwm_ch1_2", "pwm_ch2_0", 696d6ed9355SSean Wang "pwm_ch2_1", "pwm_ch2_2", 697d6ed9355SSean Wang "pwm_ch3_0", "pwm_ch3_1", 698d6ed9355SSean Wang "pwm_ch3_2", "pwm_ch4_0", 699d6ed9355SSean Wang "pwm_ch4_1", "pwm_ch4_2", 700d6ed9355SSean Wang "pwm_ch4_3", "pwm_ch5_0", 701d6ed9355SSean Wang "pwm_ch5_1", "pwm_ch5_2", 702d6ed9355SSean Wang "pwm_ch6_0", "pwm_ch6_1", 703d6ed9355SSean Wang "pwm_ch6_2", "pwm_ch6_3", 704d6ed9355SSean Wang "pwm_ch7_0", "pwm_ch7_1", 705d6ed9355SSean Wang "pwm_ch7_2", }; 706d6ed9355SSean Wang static const char *mt7622_sd_groups[] = { "sd_0", "sd_1", }; 707d6ed9355SSean Wang static const char *mt7622_spic_groups[] = { "spic0_0", "spic0_1", "spic1_0", 708d6ed9355SSean Wang "spic1_1", "spic2_0", 709d6ed9355SSean Wang "spic2_0_wp_hold", }; 710d6ed9355SSean Wang static const char *mt7622_tdm_groups[] = { "tdm_0_out_mclk_bclk_ws", 711d6ed9355SSean Wang "tdm_0_in_mclk_bclk_ws", 712d6ed9355SSean Wang "tdm_0_out_data", 713d6ed9355SSean Wang "tdm_0_in_data", 714d6ed9355SSean Wang "tdm_1_out_mclk_bclk_ws", 715d6ed9355SSean Wang "tdm_1_in_mclk_bclk_ws", 716d6ed9355SSean Wang "tdm_1_out_data", 717d6ed9355SSean Wang "tdm_1_in_data", }; 718d6ed9355SSean Wang 719d6ed9355SSean Wang static const char *mt7622_uart_groups[] = { "uart0_0_tx_rx", 720d6ed9355SSean Wang "uart1_0_tx_rx", "uart1_0_rts_cts", 721d6ed9355SSean Wang "uart1_1_tx_rx", "uart1_1_rts_cts", 722d6ed9355SSean Wang "uart2_0_tx_rx", "uart2_0_rts_cts", 723d6ed9355SSean Wang "uart2_1_tx_rx", "uart2_1_rts_cts", 724d6ed9355SSean Wang "uart2_2_tx_rx", "uart2_2_rts_cts", 725d6ed9355SSean Wang "uart2_3_tx_rx", 726d6ed9355SSean Wang "uart3_0_tx_rx", 727d6ed9355SSean Wang "uart3_1_tx_rx", "uart3_1_rts_cts", 728d6ed9355SSean Wang "uart4_0_tx_rx", 729d6ed9355SSean Wang "uart4_1_tx_rx", "uart4_1_rts_cts", 730d6ed9355SSean Wang "uart4_2_tx_rx", 731d6ed9355SSean Wang "uart4_2_rts_cts",}; 732d6ed9355SSean Wang static const char *mt7622_wdt_groups[] = { "watchdog", }; 733d6ed9355SSean Wang 734d6ed9355SSean Wang static const struct function_desc mt7622_functions[] = { 735d6ed9355SSean Wang {"emmc", mt7622_emmc_groups, ARRAY_SIZE(mt7622_emmc_groups)}, 736d6ed9355SSean Wang {"eth", mt7622_ethernet_groups, ARRAY_SIZE(mt7622_ethernet_groups)}, 737d6ed9355SSean Wang {"i2c", mt7622_i2c_groups, ARRAY_SIZE(mt7622_i2c_groups)}, 738d6ed9355SSean Wang {"i2s", mt7622_i2s_groups, ARRAY_SIZE(mt7622_i2s_groups)}, 739d6ed9355SSean Wang {"ir", mt7622_ir_groups, ARRAY_SIZE(mt7622_ir_groups)}, 740d6ed9355SSean Wang {"led", mt7622_led_groups, ARRAY_SIZE(mt7622_led_groups)}, 741d6ed9355SSean Wang {"flash", mt7622_flash_groups, ARRAY_SIZE(mt7622_flash_groups)}, 742d6ed9355SSean Wang {"pcie", mt7622_pcie_groups, ARRAY_SIZE(mt7622_pcie_groups)}, 743d6ed9355SSean Wang {"pmic", mt7622_pmic_bus_groups, ARRAY_SIZE(mt7622_pmic_bus_groups)}, 744d6ed9355SSean Wang {"pwm", mt7622_pwm_groups, ARRAY_SIZE(mt7622_pwm_groups)}, 745d6ed9355SSean Wang {"sd", mt7622_sd_groups, ARRAY_SIZE(mt7622_sd_groups)}, 746d6ed9355SSean Wang {"spi", mt7622_spic_groups, ARRAY_SIZE(mt7622_spic_groups)}, 747d6ed9355SSean Wang {"tdm", mt7622_tdm_groups, ARRAY_SIZE(mt7622_tdm_groups)}, 748d6ed9355SSean Wang {"uart", mt7622_uart_groups, ARRAY_SIZE(mt7622_uart_groups)}, 749d6ed9355SSean Wang {"watchdog", mt7622_wdt_groups, ARRAY_SIZE(mt7622_wdt_groups)}, 750d6ed9355SSean Wang }; 751d6ed9355SSean Wang 752e6dabd38SSean Wang static const struct mtk_eint_hw mt7622_eint_hw = { 753e6dabd38SSean Wang .port_mask = 7, 754e6dabd38SSean Wang .ports = 7, 755e6dabd38SSean Wang .ap_num = ARRAY_SIZE(mt7622_pins), 756e6dabd38SSean Wang .db_cnt = 20, 757e6dabd38SSean Wang }; 758e6dabd38SSean Wang 759d6ed9355SSean Wang static const struct mtk_pin_soc mt7622_data = { 760d6ed9355SSean Wang .reg_cal = mt7622_reg_cals, 761*b7d7f9eeSSean Wang .pins = mt7622_pins, 762d6ed9355SSean Wang .npins = ARRAY_SIZE(mt7622_pins), 763d6ed9355SSean Wang .grps = mt7622_groups, 764d6ed9355SSean Wang .ngrps = ARRAY_SIZE(mt7622_groups), 765d6ed9355SSean Wang .funcs = mt7622_functions, 766d6ed9355SSean Wang .nfuncs = ARRAY_SIZE(mt7622_functions), 767e6dabd38SSean Wang .eint_hw = &mt7622_eint_hw, 7681dc5e536SSean Wang .gpio_m = 1, 769182c842fSSean Wang .ies_present = false, 7702bc47dfeSSean Wang .base_names = mtk_default_register_base_names, 7712bc47dfeSSean Wang .nbase_names = ARRAY_SIZE(mtk_default_register_base_names), 77285430152SSean Wang .bias_disable_set = mtk_pinconf_bias_disable_set, 77385430152SSean Wang .bias_disable_get = mtk_pinconf_bias_disable_get, 77485430152SSean Wang .bias_set = mtk_pinconf_bias_set, 77585430152SSean Wang .bias_get = mtk_pinconf_bias_get, 776c2832197SSean Wang .drive_set = mtk_pinconf_drive_set, 777c2832197SSean Wang .drive_get = mtk_pinconf_drive_get, 778d6ed9355SSean Wang }; 779d6ed9355SSean Wang 780e78d57b2SSean Wang static const struct of_device_id mt7622_pinctrl_of_match[] = { 781e78d57b2SSean Wang { .compatible = "mediatek,mt7622-pinctrl", }, 782d6ed9355SSean Wang { } 783d6ed9355SSean Wang }; 784d6ed9355SSean Wang 785e78d57b2SSean Wang static int mt7622_pinctrl_probe(struct platform_device *pdev) 786d6ed9355SSean Wang { 787e78d57b2SSean Wang return mtk_moore_pinctrl_probe(pdev, &mt7622_data); 788d6ed9355SSean Wang } 789d6ed9355SSean Wang 790e78d57b2SSean Wang static struct platform_driver mt7622_pinctrl_driver = { 791d6ed9355SSean Wang .driver = { 792e78d57b2SSean Wang .name = "mt7622-pinctrl", 793e78d57b2SSean Wang .of_match_table = mt7622_pinctrl_of_match, 794d6ed9355SSean Wang }, 795e78d57b2SSean Wang .probe = mt7622_pinctrl_probe, 796d6ed9355SSean Wang }; 797d6ed9355SSean Wang 798e78d57b2SSean Wang static int __init mt7622_pinctrl_init(void) 799d6ed9355SSean Wang { 800e78d57b2SSean Wang return platform_driver_register(&mt7622_pinctrl_driver); 801d6ed9355SSean Wang } 802e78d57b2SSean Wang arch_initcall(mt7622_pinctrl_init); 803