1 This patch squashes the following upstream commits:
3 5ca1b1c5cd98 pinctrl: mediatek: mt8183: Add pm_ops
4 5c0904488a20 pinctrl: mediatek: Add pm_ops to pinctrl-paris
5 1802d0beecaf treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174
6 ec8f24b7faaf treewide: Add SPDX license identifier - Makefile/Kconfig
7 264667112ef0 pinctrl: mediatek: Add MT8516 Pinctrl driver
8 5e73de3413c5 pinctrl: add drive for I2C related pins on MT8183
9 e65372124cd7 Merge tag 'v5.0-rc6' into devel
10 2d2d478576d7 pinctrl: mediatek: fix Kconfig build errors for moore core
11 6e737a4e921e pinctrl: mediatek: add EINT support to virtual GPIOs
12 b5af33df50e9 pinctrl: mediatek: improve Kconfig dependencies
13 9ede2a76f66e pinctrl: mediatek: Convert to using %pOFn instead of device_node.name
14 b44677375fee pinctrl: mediatek: add pinctrl support for MT7629 SoC
15 f969b7aac980 pinctrl: mediatek: Add initial pinctrl driver for MT6797 SoC
16 7c68024a82a2 pinctrl: mediatek: Fix dependencies for EINT_MTK
17 78bf386daf8a pinctrl: mediatek: clean up indentation issues, add missing tab
18 28e0603c4df4 pinctrl: mediatek: Make eint_m u16
19 71a9d395aa12 pinctrl: mediatek: select GPIOLIB
20 ad335bee6ced pinctrl: mediatek: mark dummy helpers as 'static inline'
21 7a52127e3cf1 pinctrl: mediatek: fix check on EINT_NA comparison
22 bb8d8466ca25 pinctrl: mediatek: add eint support to MT6765 pinctrl driver
23 477fecee7ca9 pinctrl: mediatek: add MT6765 pinctrl driver
24 ecfcfb498860 pinctrl: mediatek: add no eint function for pin define
25 7f2e29e133ea pinctrl: mediatek: fix static checker warning caused by EINT_NA
26 068cfb9a0fd9 pinctrl: mediatek: moore: fix return value check in mtk_moore_pinctrl_probe()
27 07c6b037c2ba pinctrl: mediatek: make symbol 'mtk_drive' static
28 184744e9a014 pinctrl: mediatek: paris: fix return value check in mtk_paris_pinctrl_probe()
29 22d7fe4984a2 pinctrl: mtk: Fix up GPIO includes
30 55818b90233b Merge branch 'ib-mtk' into devel
31 6561859b067f pinctrl: mediatek: add eint support to MT8183 pinctrl driver
32 89132dd8ffd2 pinctrl: mediatek: extend eint build to pinctrl-mtk-common-v2.c
33 29686f0151df pintcrl: mediatek: add pull tweaks for I2C related pins on MT8183
34 79348f6fb713 pinctrl: mediatek: extend advanced pull support in pinctrl-mtk-common-v2.c
35 750cd15d9081 pinctrl: mediatek: add MT8183 pinctrl driver
36 805250982bb5 pinctrl: mediatek: add pinctrl-paris that implements the vendor dt-bindings
37 b7d7f9eeca55 pinctrl: mediatek: extend struct mtk_pin_desc which per-pin driver depends on
38 9d9b171c6897 pinctrl: mediatek: adjust error code and message when some register not supported is found
39 2bc47dfe4f8b pinctrl: mediatek: add multiple register bases support to pinctrl-mtk-common-v2.c
40 ea051eb38413 pinctrl: mediatek: use pin descriptor all in pinctrl-mtk-common-v2.c
41 e7507f57a93a pinctrl: mediatek: add MT7623 pinctrl driver based on generic pinctrl binding
42 9afc305bfad7 pinctrl: mediatek: add pullen, pullsel register support to pinctrl-mtk-common-v2.c
43 182c842fd5e6 pinctrl: mediatek: add ies register support to pinctrl-mtk-common-v2.c
44 0d7ca772148f pinctrl: mediatek: add advanced pull related support to pinctrl-mtk-common-v2.c
45 85430152ba46 pinctrl: mediatek: add pull related support to pinctrl-mtk-common-v2.c
46 3ad38a14e13c pinctrl: mediatek: add drv register support to pinctrl-mtk-common-v2.c
47 c28321979ba8 pinctrl: mediatek: add driving strength related support to pinctrl-mtk-common-v2.c
48 1dc5e5369159 pinctrl: mediatek: extend struct mtk_pin_soc to pinctrl-mtk-common-v2.c
49 fb5fa8dc151b pinctrl: mediatek: extend struct mtk_pin_desc to pinctrl-mtk-common-v2.c
50 b906faf7b61d pinctrl: mediatek: extend struct mtk_pin_field_calc to pinctrl-mtk-common-v2.c
51 e78d57b2f87c pinctrl: mediatek: add pinctrl-moore that implements the generic pinctrl dt-bindings
52 a1a503a8c332 pinctrl: mediatek: add pinctrl-mtk-common-v2 for all MediaTek pinctrls
53 1c5fb66afa2a pinctrl: Include <linux/gpio/driver.h> nothing else
54 94f4e54cecaf pinctrl: Convert to using %pOFn instead of device_node.name
56 diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
57 index 9905dc672f6b..26ed5dca1460 100644
58 --- a/drivers/pinctrl/mediatek/Kconfig
59 +++ b/drivers/pinctrl/mediatek/Kconfig
60 @@ -3,7 +3,8 @@ menu "MediaTek pinctrl drivers"
63 bool "MediaTek External Interrupt Support"
64 - depends on PINCTRL_MTK || PINCTRL_MT7622 || COMPILE_TEST
65 + depends on PINCTRL_MTK || PINCTRL_MTK_MOORE || PINCTRL_MTK_PARIS || COMPILE_TEST
70 @@ -15,6 +16,24 @@ config PINCTRL_MTK
74 +config PINCTRL_MTK_MOORE
77 + select GENERIC_PINCONF
78 + select GENERIC_PINCTRL_GROUPS
79 + select GENERIC_PINMUX_FUNCTIONS
83 +config PINCTRL_MTK_PARIS
87 + select GENERIC_PINCONF
94 bool "Mediatek MT2701 pin control"
95 @@ -23,6 +42,20 @@ config PINCTRL_MT2701
99 +config PINCTRL_MT7623
100 + bool "Mediatek MT7623 pin control with generic binding"
101 + depends on MACH_MT7623 || COMPILE_TEST
103 + default MACH_MT7623
104 + select PINCTRL_MTK_MOORE
106 +config PINCTRL_MT7629
107 + bool "Mediatek MT7629 pin control"
108 + depends on MACH_MT7629 || COMPILE_TEST
110 + default MACH_MT7629
111 + select PINCTRL_MTK_MOORE
113 config PINCTRL_MT8135
114 bool "Mediatek MT8135 pin control"
115 depends on MACH_MT8135 || COMPILE_TEST
116 @@ -45,15 +78,26 @@ config PINCTRL_MT2712
117 default ARM64 && ARCH_MEDIATEK
120 +config PINCTRL_MT6765
121 + bool "Mediatek MT6765 pin control"
123 + depends on ARM64 || COMPILE_TEST
124 + default ARM64 && ARCH_MEDIATEK
125 + select PINCTRL_MTK_PARIS
127 +config PINCTRL_MT6797
128 + bool "Mediatek MT6797 pin control"
130 + depends on ARM64 || COMPILE_TEST
131 + default ARM64 && ARCH_MEDIATEK
132 + select PINCTRL_MTK_PARIS
134 config PINCTRL_MT7622
135 bool "MediaTek MT7622 pin control"
137 depends on ARM64 || COMPILE_TEST
138 - select GENERIC_PINCONF
139 - select GENERIC_PINCTRL_GROUPS
140 - select GENERIC_PINMUX_FUNCTIONS
143 + default ARM64 && ARCH_MEDIATEK
144 + select PINCTRL_MTK_MOORE
146 config PINCTRL_MT8173
147 bool "Mediatek MT8173 pin control"
148 @@ -62,6 +106,20 @@ config PINCTRL_MT8173
149 default ARM64 && ARCH_MEDIATEK
152 +config PINCTRL_MT8183
153 + bool "Mediatek MT8183 pin control"
155 + depends on ARM64 || COMPILE_TEST
156 + default ARM64 && ARCH_MEDIATEK
157 + select PINCTRL_MTK_PARIS
159 +config PINCTRL_MT8516
160 + bool "Mediatek MT8516 pin control"
162 + depends on ARM64 || COMPILE_TEST
163 + default ARM64 && ARCH_MEDIATEK
167 config PINCTRL_MT6397
168 bool "Mediatek MT6397 pin control"
169 diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
170 index 3de7156df345..a74325abd877 100644
171 --- a/drivers/pinctrl/mediatek/Makefile
172 +++ b/drivers/pinctrl/mediatek/Makefile
175 obj-$(CONFIG_EINT_MTK) += mtk-eint.o
176 obj-$(CONFIG_PINCTRL_MTK) += pinctrl-mtk-common.o
177 +obj-$(CONFIG_PINCTRL_MTK_MOORE) += pinctrl-moore.o pinctrl-mtk-common-v2.o
178 +obj-$(CONFIG_PINCTRL_MTK_PARIS) += pinctrl-paris.o pinctrl-mtk-common-v2.o
181 obj-$(CONFIG_PINCTRL_MT2701) += pinctrl-mt2701.o
182 obj-$(CONFIG_PINCTRL_MT2712) += pinctrl-mt2712.o
183 obj-$(CONFIG_PINCTRL_MT8135) += pinctrl-mt8135.o
184 obj-$(CONFIG_PINCTRL_MT8127) += pinctrl-mt8127.o
185 +obj-$(CONFIG_PINCTRL_MT6765) += pinctrl-mt6765.o
186 +obj-$(CONFIG_PINCTRL_MT6797) += pinctrl-mt6797.o
187 obj-$(CONFIG_PINCTRL_MT7622) += pinctrl-mt7622.o
188 +obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
189 +obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
190 obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
191 +obj-$(CONFIG_PINCTRL_MT8183) += pinctrl-mt8183.o
192 +obj-$(CONFIG_PINCTRL_MT8516) += pinctrl-mt8516.o
193 obj-$(CONFIG_PINCTRL_MT6397) += pinctrl-mt6397.o
194 diff --git a/drivers/pinctrl/mediatek/mtk-eint.c b/drivers/pinctrl/mediatek/mtk-eint.c
195 index a613e546717a..f464f8cd274b 100644
196 --- a/drivers/pinctrl/mediatek/mtk-eint.c
197 +++ b/drivers/pinctrl/mediatek/mtk-eint.c
200 #include <linux/delay.h>
201 #include <linux/err.h>
202 -#include <linux/gpio.h>
203 +#include <linux/gpio/driver.h>
204 #include <linux/io.h>
205 #include <linux/irqchip/chained_irq.h>
206 #include <linux/irqdomain.h>
207 diff --git a/drivers/pinctrl/mediatek/mtk-eint.h b/drivers/pinctrl/mediatek/mtk-eint.h
208 index c286a9b940f2..48468d0fae68 100644
209 --- a/drivers/pinctrl/mediatek/mtk-eint.h
210 +++ b/drivers/pinctrl/mediatek/mtk-eint.h
211 @@ -92,13 +92,13 @@ static inline int mtk_eint_do_resume(struct mtk_eint *eint)
215 -int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
216 +static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
217 unsigned int debounce)
222 -int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
223 +static inline int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
227 diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.c b/drivers/pinctrl/mediatek/pinctrl-moore.c
229 index 000000000000..aa1068d2867f
231 +++ b/drivers/pinctrl/mediatek/pinctrl-moore.c
233 +// SPDX-License-Identifier: GPL-2.0
235 + * MediaTek Pinctrl Moore Driver, which implement the generic dt-binding
236 + * pinctrl-bindings.txt for MediaTek SoC.
238 + * Copyright (C) 2017-2018 MediaTek Inc.
239 + * Author: Sean Wang <sean.wang@mediatek.com>
243 +#include <linux/gpio/driver.h>
244 +#include "pinctrl-moore.h"
246 +#define PINCTRL_PINCTRL_DEV KBUILD_MODNAME
248 +/* Custom pinconf parameters */
249 +#define MTK_PIN_CONFIG_TDSEL (PIN_CONFIG_END + 1)
250 +#define MTK_PIN_CONFIG_RDSEL (PIN_CONFIG_END + 2)
251 +#define MTK_PIN_CONFIG_PU_ADV (PIN_CONFIG_END + 3)
252 +#define MTK_PIN_CONFIG_PD_ADV (PIN_CONFIG_END + 4)
254 +static const struct pinconf_generic_params mtk_custom_bindings[] = {
255 + {"mediatek,tdsel", MTK_PIN_CONFIG_TDSEL, 0},
256 + {"mediatek,rdsel", MTK_PIN_CONFIG_RDSEL, 0},
257 + {"mediatek,pull-up-adv", MTK_PIN_CONFIG_PU_ADV, 1},
258 + {"mediatek,pull-down-adv", MTK_PIN_CONFIG_PD_ADV, 1},
261 +#ifdef CONFIG_DEBUG_FS
262 +static const struct pin_config_item mtk_conf_items[] = {
263 + PCONFDUMP(MTK_PIN_CONFIG_TDSEL, "tdsel", NULL, true),
264 + PCONFDUMP(MTK_PIN_CONFIG_RDSEL, "rdsel", NULL, true),
265 + PCONFDUMP(MTK_PIN_CONFIG_PU_ADV, "pu-adv", NULL, true),
266 + PCONFDUMP(MTK_PIN_CONFIG_PD_ADV, "pd-adv", NULL, true),
270 +static int mtk_pinmux_set_mux(struct pinctrl_dev *pctldev,
271 + unsigned int selector, unsigned int group)
273 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
274 + struct function_desc *func;
275 + struct group_desc *grp;
278 + func = pinmux_generic_get_function(pctldev, selector);
282 + grp = pinctrl_generic_get_group(pctldev, group);
286 + dev_dbg(pctldev->dev, "enable function %s group %s\n",
287 + func->name, grp->name);
289 + for (i = 0; i < grp->num_pins; i++) {
290 + const struct mtk_pin_desc *desc;
291 + int *pin_modes = grp->data;
292 + int pin = grp->pins[i];
294 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
296 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
303 +static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
304 + struct pinctrl_gpio_range *range,
307 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
308 + const struct mtk_pin_desc *desc;
310 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
312 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
316 +static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
317 + struct pinctrl_gpio_range *range,
318 + unsigned int pin, bool input)
320 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
321 + const struct mtk_pin_desc *desc;
323 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
325 + /* hardware would take 0 as input direction */
326 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, !input);
329 +static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
330 + unsigned int pin, unsigned long *config)
332 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
333 + u32 param = pinconf_to_config_param(*config);
334 + int val, val2, err, reg, ret = 1;
335 + const struct mtk_pin_desc *desc;
337 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
340 + case PIN_CONFIG_BIAS_DISABLE:
341 + if (hw->soc->bias_disable_get) {
342 + err = hw->soc->bias_disable_get(hw, desc, &ret);
349 + case PIN_CONFIG_BIAS_PULL_UP:
350 + if (hw->soc->bias_get) {
351 + err = hw->soc->bias_get(hw, desc, 1, &ret);
358 + case PIN_CONFIG_BIAS_PULL_DOWN:
359 + if (hw->soc->bias_get) {
360 + err = hw->soc->bias_get(hw, desc, 0, &ret);
367 + case PIN_CONFIG_SLEW_RATE:
368 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SR, &val);
376 + case PIN_CONFIG_INPUT_ENABLE:
377 + case PIN_CONFIG_OUTPUT_ENABLE:
378 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
382 + /* HW takes input mode as zero; output mode as non-zero */
383 + if ((val && param == PIN_CONFIG_INPUT_ENABLE) ||
384 + (!val && param == PIN_CONFIG_OUTPUT_ENABLE))
388 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
389 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
393 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SMT, &val2);
401 + case PIN_CONFIG_DRIVE_STRENGTH:
402 + if (hw->soc->drive_get) {
403 + err = hw->soc->drive_get(hw, desc, &ret);
410 + case MTK_PIN_CONFIG_TDSEL:
411 + case MTK_PIN_CONFIG_RDSEL:
412 + reg = (param == MTK_PIN_CONFIG_TDSEL) ?
413 + PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
415 + err = mtk_hw_get_value(hw, desc, reg, &val);
422 + case MTK_PIN_CONFIG_PU_ADV:
423 + case MTK_PIN_CONFIG_PD_ADV:
424 + if (hw->soc->adv_pull_get) {
427 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
428 + err = hw->soc->adv_pull_get(hw, desc, pullup, &ret);
439 + *config = pinconf_to_config_packed(param, ret);
444 +static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
445 + unsigned long *configs, unsigned int num_configs)
447 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
448 + const struct mtk_pin_desc *desc;
449 + u32 reg, param, arg;
452 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
454 + for (cfg = 0; cfg < num_configs; cfg++) {
455 + param = pinconf_to_config_param(configs[cfg]);
456 + arg = pinconf_to_config_argument(configs[cfg]);
459 + case PIN_CONFIG_BIAS_DISABLE:
460 + if (hw->soc->bias_disable_set) {
461 + err = hw->soc->bias_disable_set(hw, desc);
468 + case PIN_CONFIG_BIAS_PULL_UP:
469 + if (hw->soc->bias_set) {
470 + err = hw->soc->bias_set(hw, desc, 1);
477 + case PIN_CONFIG_BIAS_PULL_DOWN:
478 + if (hw->soc->bias_set) {
479 + err = hw->soc->bias_set(hw, desc, 0);
486 + case PIN_CONFIG_OUTPUT_ENABLE:
487 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
492 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
497 + case PIN_CONFIG_INPUT_ENABLE:
499 + if (hw->soc->ies_present) {
500 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_IES,
504 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
509 + case PIN_CONFIG_SLEW_RATE:
510 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SR,
516 + case PIN_CONFIG_OUTPUT:
517 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
522 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO,
527 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
528 + /* arg = 1: Input mode & SMT enable ;
529 + * arg = 0: Output mode & SMT disable
532 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
537 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
542 + case PIN_CONFIG_DRIVE_STRENGTH:
543 + if (hw->soc->drive_set) {
544 + err = hw->soc->drive_set(hw, desc, arg);
551 + case MTK_PIN_CONFIG_TDSEL:
552 + case MTK_PIN_CONFIG_RDSEL:
553 + reg = (param == MTK_PIN_CONFIG_TDSEL) ?
554 + PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
556 + err = mtk_hw_set_value(hw, desc, reg, arg);
560 + case MTK_PIN_CONFIG_PU_ADV:
561 + case MTK_PIN_CONFIG_PD_ADV:
562 + if (hw->soc->adv_pull_set) {
565 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
566 + err = hw->soc->adv_pull_set(hw, desc, pullup,
582 +static int mtk_pinconf_group_get(struct pinctrl_dev *pctldev,
583 + unsigned int group, unsigned long *config)
585 + const unsigned int *pins;
586 + unsigned int i, npins, old = 0;
589 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
593 + for (i = 0; i < npins; i++) {
594 + if (mtk_pinconf_get(pctldev, pins[i], config))
597 + /* configs do not match between two pins */
598 + if (i && old != *config)
607 +static int mtk_pinconf_group_set(struct pinctrl_dev *pctldev,
608 + unsigned int group, unsigned long *configs,
609 + unsigned int num_configs)
611 + const unsigned int *pins;
612 + unsigned int i, npins;
615 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
619 + for (i = 0; i < npins; i++) {
620 + ret = mtk_pinconf_set(pctldev, pins[i], configs, num_configs);
628 +static const struct pinctrl_ops mtk_pctlops = {
629 + .get_groups_count = pinctrl_generic_get_group_count,
630 + .get_group_name = pinctrl_generic_get_group_name,
631 + .get_group_pins = pinctrl_generic_get_group_pins,
632 + .dt_node_to_map = pinconf_generic_dt_node_to_map_all,
633 + .dt_free_map = pinconf_generic_dt_free_map,
636 +static const struct pinmux_ops mtk_pmxops = {
637 + .get_functions_count = pinmux_generic_get_function_count,
638 + .get_function_name = pinmux_generic_get_function_name,
639 + .get_function_groups = pinmux_generic_get_function_groups,
640 + .set_mux = mtk_pinmux_set_mux,
641 + .gpio_request_enable = mtk_pinmux_gpio_request_enable,
642 + .gpio_set_direction = mtk_pinmux_gpio_set_direction,
646 +static const struct pinconf_ops mtk_confops = {
647 + .is_generic = true,
648 + .pin_config_get = mtk_pinconf_get,
649 + .pin_config_set = mtk_pinconf_set,
650 + .pin_config_group_get = mtk_pinconf_group_get,
651 + .pin_config_group_set = mtk_pinconf_group_set,
652 + .pin_config_config_dbg_show = pinconf_generic_dump_config,
655 +static struct pinctrl_desc mtk_desc = {
656 + .name = PINCTRL_PINCTRL_DEV,
657 + .pctlops = &mtk_pctlops,
658 + .pmxops = &mtk_pmxops,
659 + .confops = &mtk_confops,
660 + .owner = THIS_MODULE,
663 +static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
665 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
666 + const struct mtk_pin_desc *desc;
669 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
671 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
678 +static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
680 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
681 + const struct mtk_pin_desc *desc;
683 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
685 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
688 +static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
690 + return pinctrl_gpio_direction_input(chip->base + gpio);
693 +static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
696 + mtk_gpio_set(chip, gpio, value);
698 + return pinctrl_gpio_direction_output(chip->base + gpio);
701 +static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
703 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
704 + const struct mtk_pin_desc *desc;
709 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
711 + if (desc->eint.eint_n == (u16)EINT_NA)
714 + return mtk_eint_find_irq(hw->eint, desc->eint.eint_n);
717 +static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
718 + unsigned long config)
720 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
721 + const struct mtk_pin_desc *desc;
724 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
727 + pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE ||
728 + desc->eint.eint_n == (u16)EINT_NA)
731 + debounce = pinconf_to_config_argument(config);
733 + return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce);
736 +static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
738 + struct gpio_chip *chip = &hw->chip;
741 + chip->label = PINCTRL_PINCTRL_DEV;
742 + chip->parent = hw->dev;
743 + chip->request = gpiochip_generic_request;
744 + chip->free = gpiochip_generic_free;
745 + chip->direction_input = mtk_gpio_direction_input;
746 + chip->direction_output = mtk_gpio_direction_output;
747 + chip->get = mtk_gpio_get;
748 + chip->set = mtk_gpio_set;
749 + chip->to_irq = mtk_gpio_to_irq,
750 + chip->set_config = mtk_gpio_set_config,
752 + chip->ngpio = hw->soc->npins;
753 + chip->of_node = np;
754 + chip->of_gpio_n_cells = 2;
756 + ret = gpiochip_add_data(chip, hw);
760 + /* Just for backward compatible for these old pinctrl nodes without
761 + * "gpio-ranges" property. Otherwise, called directly from a
762 + * DeviceTree-supported pinctrl driver is DEPRECATED.
763 + * Please see Section 2.1 of
764 + * Documentation/devicetree/bindings/gpio/gpio.txt on how to
765 + * bind pinctrl and gpio drivers via the "gpio-ranges" property.
767 + if (!of_find_property(np, "gpio-ranges", NULL)) {
768 + ret = gpiochip_add_pin_range(chip, dev_name(hw->dev), 0, 0,
771 + gpiochip_remove(chip);
779 +static int mtk_build_groups(struct mtk_pinctrl *hw)
783 + for (i = 0; i < hw->soc->ngrps; i++) {
784 + const struct group_desc *group = hw->soc->grps + i;
786 + err = pinctrl_generic_add_group(hw->pctrl, group->name,
787 + group->pins, group->num_pins,
790 + dev_err(hw->dev, "Failed to register group %s\n",
799 +static int mtk_build_functions(struct mtk_pinctrl *hw)
803 + for (i = 0; i < hw->soc->nfuncs ; i++) {
804 + const struct function_desc *func = hw->soc->funcs + i;
806 + err = pinmux_generic_add_function(hw->pctrl, func->name,
808 + func->num_group_names,
811 + dev_err(hw->dev, "Failed to register function %s\n",
820 +int mtk_moore_pinctrl_probe(struct platform_device *pdev,
821 + const struct mtk_pin_soc *soc)
823 + struct pinctrl_pin_desc *pins;
824 + struct resource *res;
825 + struct mtk_pinctrl *hw;
828 + hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
833 + hw->dev = &pdev->dev;
835 + if (!hw->soc->nbase_names) {
836 + dev_err(&pdev->dev,
837 + "SoC should be assigned at least one register base\n");
841 + hw->base = devm_kmalloc_array(&pdev->dev, hw->soc->nbase_names,
842 + sizeof(*hw->base), GFP_KERNEL);
846 + for (i = 0; i < hw->soc->nbase_names; i++) {
847 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
848 + hw->soc->base_names[i]);
850 + dev_err(&pdev->dev, "missing IO resource\n");
854 + hw->base[i] = devm_ioremap_resource(&pdev->dev, res);
855 + if (IS_ERR(hw->base[i]))
856 + return PTR_ERR(hw->base[i]);
859 + hw->nbase = hw->soc->nbase_names;
861 + /* Copy from internal struct mtk_pin_desc to register to the core */
862 + pins = devm_kmalloc_array(&pdev->dev, hw->soc->npins, sizeof(*pins),
867 + for (i = 0; i < hw->soc->npins; i++) {
868 + pins[i].number = hw->soc->pins[i].number;
869 + pins[i].name = hw->soc->pins[i].name;
872 + /* Setup pins descriptions per SoC types */
873 + mtk_desc.pins = (const struct pinctrl_pin_desc *)pins;
874 + mtk_desc.npins = hw->soc->npins;
875 + mtk_desc.num_custom_params = ARRAY_SIZE(mtk_custom_bindings);
876 + mtk_desc.custom_params = mtk_custom_bindings;
877 +#ifdef CONFIG_DEBUG_FS
878 + mtk_desc.custom_conf_items = mtk_conf_items;
881 + err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
886 + /* Setup groups descriptions per SoC types */
887 + err = mtk_build_groups(hw);
889 + dev_err(&pdev->dev, "Failed to build groups\n");
893 + /* Setup functions descriptions per SoC types */
894 + err = mtk_build_functions(hw);
896 + dev_err(&pdev->dev, "Failed to build functions\n");
900 + /* For able to make pinctrl_claim_hogs, we must not enable pinctrl
901 + * until all groups and functions are being added one.
903 + err = pinctrl_enable(hw->pctrl);
907 + err = mtk_build_eint(hw, pdev);
909 + dev_warn(&pdev->dev,
910 + "Failed to add EINT, but pinctrl still can work\n");
912 + /* Build gpiochip should be after pinctrl_enable is done */
913 + err = mtk_build_gpiochip(hw, pdev->dev.of_node);
915 + dev_err(&pdev->dev, "Failed to add gpio_chip\n");
919 + platform_set_drvdata(pdev, hw);
923 diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.h b/drivers/pinctrl/mediatek/pinctrl-moore.h
925 index 000000000000..e1b4b82b9d3d
927 +++ b/drivers/pinctrl/mediatek/pinctrl-moore.h
929 +/* SPDX-License-Identifier: GPL-2.0 */
931 + * Copyright (C) 2017-2018 MediaTek Inc.
933 + * Author: Sean Wang <sean.wang@mediatek.com>
936 +#ifndef __PINCTRL_MOORE_H
937 +#define __PINCTRL_MOORE_H
939 +#include <linux/io.h>
940 +#include <linux/init.h>
941 +#include <linux/of.h>
942 +#include <linux/of_platform.h>
943 +#include <linux/platform_device.h>
944 +#include <linux/pinctrl/pinctrl.h>
945 +#include <linux/pinctrl/pinmux.h>
946 +#include <linux/pinctrl/pinconf.h>
947 +#include <linux/pinctrl/pinconf-generic.h>
949 +#include "../core.h"
950 +#include "../pinconf.h"
951 +#include "../pinmux.h"
952 +#include "mtk-eint.h"
953 +#include "pinctrl-mtk-common-v2.h"
955 +#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), }
957 +#define MTK_PIN(_number, _name, _eint_m, _eint_n, _drv_n) { \
958 + .number = _number, \
961 + .eint_m = _eint_m, \
962 + .eint_n = _eint_n, \
968 +#define PINCTRL_PIN_GROUP(name, id) \
972 + ARRAY_SIZE(id##_pins), \
976 +int mtk_moore_pinctrl_probe(struct platform_device *pdev,
977 + const struct mtk_pin_soc *soc);
979 +#endif /* __PINCTRL_MOORE_H */
980 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6765.c b/drivers/pinctrl/mediatek/pinctrl-mt6765.c
982 index 000000000000..32451e8693be
984 +++ b/drivers/pinctrl/mediatek/pinctrl-mt6765.c
986 +// SPDX-License-Identifier: GPL-2.0
988 + * Copyright (C) 2018 MediaTek Inc.
990 + * Author: ZH Chen <zh.chen@mediatek.com>
994 +#include "pinctrl-mtk-mt6765.h"
995 +#include "pinctrl-paris.h"
997 +/* MT6765 have multiple bases to program pin configuration listed as the below:
998 + * iocfg[0]:0x10005000, iocfg[1]:0x10002C00, iocfg[2]:0x10002800,
999 + * iocfg[3]:0x10002A00, iocfg[4]:0x10002000, iocfg[5]:0x10002200,
1000 + * iocfg[6]:0x10002500, iocfg[7]:0x10002600.
1001 + * _i_base could be used to indicate what base the pin should be mapped into.
1004 +#define PIN_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
1005 + PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
1008 +#define PINS_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
1009 + PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
1012 +static const struct mtk_pin_field_calc mt6765_pin_mode_range[] = {
1013 + PIN_FIELD(0, 202, 0x300, 0x10, 0, 4),
1016 +static const struct mtk_pin_field_calc mt6765_pin_dir_range[] = {
1017 + PIN_FIELD(0, 202, 0x0, 0x10, 0, 1),
1020 +static const struct mtk_pin_field_calc mt6765_pin_di_range[] = {
1021 + PIN_FIELD(0, 202, 0x200, 0x10, 0, 1),
1024 +static const struct mtk_pin_field_calc mt6765_pin_do_range[] = {
1025 + PIN_FIELD(0, 202, 0x100, 0x10, 0, 1),
1028 +static const struct mtk_pin_field_calc mt6765_pin_smt_range[] = {
1029 + PINS_FIELD_BASE(0, 3, 2, 0x00b0, 0x10, 4, 1),
1030 + PINS_FIELD_BASE(4, 7, 2, 0x00b0, 0x10, 5, 1),
1031 + PIN_FIELD_BASE(8, 8, 3, 0x0080, 0x10, 3, 1),
1032 + PINS_FIELD_BASE(9, 11, 2, 0x00b0, 0x10, 6, 1),
1033 + PIN_FIELD_BASE(12, 12, 5, 0x0060, 0x10, 9, 1),
1034 + PINS_FIELD_BASE(13, 16, 6, 0x00b0, 0x10, 10, 1),
1035 + PINS_FIELD_BASE(17, 20, 6, 0x00b0, 0x10, 8, 1),
1036 + PINS_FIELD_BASE(21, 24, 6, 0x00b0, 0x10, 9, 1),
1037 + PINS_FIELD_BASE(25, 28, 6, 0x00b0, 0x10, 7, 1),
1038 + PIN_FIELD_BASE(29, 29, 6, 0x00b0, 0x10, 0, 1),
1039 + PIN_FIELD_BASE(30, 30, 6, 0x00b0, 0x10, 1, 1),
1040 + PINS_FIELD_BASE(31, 34, 6, 0x00b0, 0x10, 2, 1),
1041 + PINS_FIELD_BASE(35, 36, 6, 0x00b0, 0x10, 5, 1),
1042 + PIN_FIELD_BASE(37, 37, 6, 0x00b0, 0x10, 6, 1),
1043 + PIN_FIELD_BASE(38, 38, 6, 0x00b0, 0x10, 4, 1),
1044 + PINS_FIELD_BASE(39, 40, 6, 0x00b0, 0x10, 3, 1),
1045 + PINS_FIELD_BASE(41, 42, 7, 0x00c0, 0x10, 6, 1),
1046 + PIN_FIELD_BASE(43, 43, 7, 0x00c0, 0x10, 3, 1),
1047 + PIN_FIELD_BASE(44, 44, 7, 0x00c0, 0x10, 4, 1),
1048 + PIN_FIELD_BASE(45, 45, 7, 0x00c0, 0x10, 8, 1),
1049 + PINS_FIELD_BASE(46, 47, 7, 0x00c0, 0x10, 7, 1),
1050 + PIN_FIELD_BASE(48, 48, 7, 0x00c0, 0x10, 15, 1),
1051 + PIN_FIELD_BASE(49, 49, 7, 0x00c0, 0x10, 17, 1),
1052 + PIN_FIELD_BASE(50, 50, 7, 0x00c0, 0x10, 14, 1),
1053 + PIN_FIELD_BASE(51, 51, 7, 0x00c0, 0x10, 16, 1),
1054 + PINS_FIELD_BASE(52, 57, 7, 0x00c0, 0x10, 0, 1),
1055 + PINS_FIELD_BASE(58, 60, 7, 0x00c0, 0x10, 12, 1),
1056 + PINS_FIELD_BASE(61, 62, 3, 0x0080, 0x10, 5, 1),
1057 + PINS_FIELD_BASE(63, 64, 3, 0x0080, 0x10, 4, 1),
1058 + PINS_FIELD_BASE(65, 66, 3, 0x0080, 0x10, 7, 1),
1059 + PINS_FIELD_BASE(67, 68, 3, 0x0080, 0x10, 6, 1),
1060 + PINS_FIELD_BASE(69, 73, 3, 0x0080, 0x10, 1, 1),
1061 + PINS_FIELD_BASE(74, 78, 3, 0x0080, 0x10, 2, 1),
1062 + PINS_FIELD_BASE(79, 80, 3, 0x0080, 0x10, 0, 1),
1063 + PIN_FIELD_BASE(81, 81, 3, 0x0080, 0x10, 12, 1),
1064 + PIN_FIELD_BASE(82, 82, 3, 0x0080, 0x10, 11, 1),
1065 + PIN_FIELD_BASE(83, 83, 3, 0x0080, 0x10, 9, 1),
1066 + PIN_FIELD_BASE(84, 84, 3, 0x0080, 0x10, 10, 1),
1067 + PIN_FIELD_BASE(85, 85, 7, 0x00c0, 0x10, 12, 1),
1068 + PIN_FIELD_BASE(86, 86, 7, 0x00c0, 0x10, 13, 1),
1069 + PIN_FIELD_BASE(87, 87, 7, 0x00c0, 0x10, 2, 1),
1070 + PIN_FIELD_BASE(88, 88, 7, 0x00c0, 0x10, 1, 1),
1071 + PIN_FIELD_BASE(89, 89, 2, 0x00b0, 0x10, 13, 1),
1072 + PIN_FIELD_BASE(90, 90, 3, 0x0080, 0x10, 8, 1),
1073 + PINS_FIELD_BASE(91, 92, 2, 0x00b0, 0x10, 8, 1),
1074 + PINS_FIELD_BASE(93, 94, 2, 0x00b0, 0x10, 7, 1),
1075 + PINS_FIELD_BASE(95, 96, 2, 0x00b0, 0x10, 14, 1),
1076 + PINS_FIELD_BASE(97, 98, 2, 0x00b0, 0x10, 2, 1),
1077 + PIN_FIELD_BASE(99, 99, 2, 0x00b0, 0x10, 0, 1),
1078 + PIN_FIELD_BASE(100, 100, 2, 0x00b0, 0x10, 1, 1),
1079 + PINS_FIELD_BASE(101, 102, 2, 0x00b0, 0x10, 3, 1),
1080 + PIN_FIELD_BASE(103, 103, 2, 0x00b0, 0x10, 9, 1),
1081 + PIN_FIELD_BASE(104, 104, 2, 0x00b0, 0x10, 11, 1),
1082 + PIN_FIELD_BASE(105, 105, 2, 0x00b0, 0x10, 10, 1),
1083 + PIN_FIELD_BASE(106, 106, 2, 0x00b0, 0x10, 12, 1),
1084 + PIN_FIELD_BASE(107, 107, 1, 0x0080, 0x10, 4, 1),
1085 + PIN_FIELD_BASE(108, 108, 1, 0x0080, 0x10, 3, 1),
1086 + PIN_FIELD_BASE(109, 109, 1, 0x0080, 0x10, 5, 1),
1087 + PIN_FIELD_BASE(110, 110, 1, 0x0080, 0x10, 0, 1),
1088 + PIN_FIELD_BASE(111, 111, 1, 0x0080, 0x10, 1, 1),
1089 + PIN_FIELD_BASE(112, 112, 1, 0x0080, 0x10, 2, 1),
1090 + PIN_FIELD_BASE(113, 113, 1, 0x0080, 0x10, 9, 1),
1091 + PIN_FIELD_BASE(114, 114, 1, 0x0080, 0x10, 10, 1),
1092 + PIN_FIELD_BASE(115, 115, 1, 0x0080, 0x10, 6, 1),
1093 + PIN_FIELD_BASE(116, 116, 1, 0x0080, 0x10, 7, 1),
1094 + PIN_FIELD_BASE(117, 117, 1, 0x0080, 0x10, 12, 1),
1095 + PIN_FIELD_BASE(118, 118, 1, 0x0080, 0x10, 13, 1),
1096 + PIN_FIELD_BASE(119, 119, 1, 0x0080, 0x10, 14, 1),
1097 + PIN_FIELD_BASE(120, 120, 1, 0x0080, 0x10, 11, 1),
1098 + PIN_FIELD_BASE(121, 121, 1, 0x0080, 0x10, 8, 1),
1099 + PIN_FIELD_BASE(122, 122, 4, 0x0080, 0x10, 2, 1),
1100 + PIN_FIELD_BASE(123, 123, 4, 0x0080, 0x10, 3, 1),
1101 + PIN_FIELD_BASE(124, 124, 4, 0x0080, 0x10, 1, 1),
1102 + PIN_FIELD_BASE(125, 125, 4, 0x0080, 0x10, 5, 1),
1103 + PIN_FIELD_BASE(126, 126, 4, 0x0080, 0x10, 7, 1),
1104 + PIN_FIELD_BASE(127, 127, 4, 0x0080, 0x10, 9, 1),
1105 + PIN_FIELD_BASE(128, 128, 4, 0x0080, 0x10, 4, 1),
1106 + PIN_FIELD_BASE(129, 129, 4, 0x0080, 0x10, 8, 1),
1107 + PIN_FIELD_BASE(130, 130, 4, 0x0080, 0x10, 10, 1),
1108 + PIN_FIELD_BASE(131, 131, 4, 0x0080, 0x10, 11, 1),
1109 + PIN_FIELD_BASE(132, 132, 4, 0x0080, 0x10, 6, 1),
1110 + PIN_FIELD_BASE(133, 133, 4, 0x0080, 0x10, 12, 1),
1111 + PIN_FIELD_BASE(134, 134, 5, 0x0060, 0x10, 11, 1),
1112 + PIN_FIELD_BASE(135, 135, 5, 0x0060, 0x10, 13, 1),
1113 + PIN_FIELD_BASE(136, 136, 5, 0x0060, 0x10, 1, 1),
1114 + PIN_FIELD_BASE(137, 137, 5, 0x0060, 0x10, 7, 1),
1115 + PIN_FIELD_BASE(138, 138, 5, 0x0060, 0x10, 4, 1),
1116 + PIN_FIELD_BASE(139, 139, 5, 0x0060, 0x10, 5, 1),
1117 + PIN_FIELD_BASE(140, 140, 5, 0x0060, 0x10, 0, 1),
1118 + PIN_FIELD_BASE(141, 141, 5, 0x0060, 0x10, 6, 1),
1119 + PIN_FIELD_BASE(142, 142, 5, 0x0060, 0x10, 2, 1),
1120 + PIN_FIELD_BASE(143, 143, 5, 0x0060, 0x10, 3, 1),
1121 + PINS_FIELD_BASE(144, 147, 5, 0x0060, 0x10, 10, 1),
1122 + PINS_FIELD_BASE(148, 149, 5, 0x0060, 0x10, 12, 1),
1123 + PINS_FIELD_BASE(150, 151, 7, 0x00c0, 0x10, 9, 1),
1124 + PINS_FIELD_BASE(152, 153, 7, 0x00c0, 0x10, 10, 1),
1125 + PIN_FIELD_BASE(154, 154, 7, 0x00c0, 0x10, 11, 1),
1126 + PINS_FIELD_BASE(155, 158, 3, 0x0080, 0x10, 13, 1),
1127 + PIN_FIELD_BASE(159, 159, 7, 0x00c0, 0x10, 11, 1),
1128 + PIN_FIELD_BASE(160, 160, 5, 0x0060, 0x10, 8, 1),
1129 + PIN_FIELD_BASE(161, 161, 1, 0x0080, 0x10, 15, 1),
1130 + PIN_FIELD_BASE(162, 162, 1, 0x0080, 0x10, 16, 1),
1131 + PINS_FIELD_BASE(163, 170, 4, 0x0080, 0x10, 0, 1),
1132 + PINS_FIELD_BASE(171, 179, 7, 0x00c0, 0x10, 5, 1),
1135 +static const struct mtk_pin_field_calc mt6765_pin_pd_range[] = {
1136 + PIN_FIELD_BASE(0, 0, 2, 0x0040, 0x10, 6, 1),
1137 + PIN_FIELD_BASE(1, 1, 2, 0x0040, 0x10, 7, 1),
1138 + PIN_FIELD_BASE(2, 2, 2, 0x0040, 0x10, 10, 1),
1139 + PIN_FIELD_BASE(3, 3, 2, 0x0040, 0x10, 11, 1),
1140 + PIN_FIELD_BASE(4, 4, 2, 0x0040, 0x10, 12, 1),
1141 + PIN_FIELD_BASE(5, 5, 2, 0x0040, 0x10, 13, 1),
1142 + PIN_FIELD_BASE(6, 6, 2, 0x0040, 0x10, 14, 1),
1143 + PIN_FIELD_BASE(7, 7, 2, 0x0040, 0x10, 15, 1),
1144 + PIN_FIELD_BASE(8, 8, 3, 0x0040, 0x10, 12, 1),
1145 + PIN_FIELD_BASE(9, 9, 2, 0x0040, 0x10, 16, 1),
1146 + PIN_FIELD_BASE(10, 10, 2, 0x0040, 0x10, 8, 1),
1147 + PIN_FIELD_BASE(11, 11, 2, 0x0040, 0x10, 9, 1),
1148 + PIN_FIELD_BASE(12, 12, 5, 0x0030, 0x10, 9, 1),
1149 + PIN_FIELD_BASE(13, 13, 6, 0x0040, 0x10, 14, 1),
1150 + PIN_FIELD_BASE(14, 14, 6, 0x0040, 0x10, 13, 1),
1151 + PIN_FIELD_BASE(15, 15, 6, 0x0040, 0x10, 15, 1),
1152 + PIN_FIELD_BASE(16, 16, 6, 0x0040, 0x10, 12, 1),
1153 + PIN_FIELD_BASE(17, 17, 6, 0x0040, 0x10, 7, 1),
1154 + PIN_FIELD_BASE(18, 18, 6, 0x0040, 0x10, 4, 1),
1155 + PIN_FIELD_BASE(19, 19, 6, 0x0040, 0x10, 6, 1),
1156 + PIN_FIELD_BASE(20, 20, 6, 0x0040, 0x10, 5, 1),
1157 + PIN_FIELD_BASE(21, 21, 6, 0x0040, 0x10, 10, 1),
1158 + PIN_FIELD_BASE(22, 22, 6, 0x0040, 0x10, 9, 1),
1159 + PIN_FIELD_BASE(23, 23, 6, 0x0040, 0x10, 11, 1),
1160 + PIN_FIELD_BASE(24, 24, 6, 0x0040, 0x10, 8, 1),
1161 + PIN_FIELD_BASE(25, 25, 6, 0x0040, 0x10, 2, 1),
1162 + PIN_FIELD_BASE(26, 26, 6, 0x0040, 0x10, 1, 1),
1163 + PIN_FIELD_BASE(27, 27, 6, 0x0040, 0x10, 3, 1),
1164 + PINS_FIELD_BASE(28, 40, 6, 0x0040, 0x10, 0, 1),
1165 + PIN_FIELD_BASE(41, 41, 7, 0x0060, 0x10, 19, 1),
1166 + PIN_FIELD_BASE(42, 42, 7, 0x0060, 0x10, 9, 1),
1167 + PIN_FIELD_BASE(43, 43, 7, 0x0060, 0x10, 8, 1),
1168 + PIN_FIELD_BASE(44, 44, 7, 0x0060, 0x10, 10, 1),
1169 + PIN_FIELD_BASE(45, 45, 7, 0x0060, 0x10, 22, 1),
1170 + PIN_FIELD_BASE(46, 46, 7, 0x0060, 0x10, 21, 1),
1171 + PIN_FIELD_BASE(47, 47, 7, 0x0060, 0x10, 20, 1),
1172 + PIN_FIELD_BASE(48, 48, 7, 0x0070, 0x10, 3, 1),
1173 + PIN_FIELD_BASE(49, 49, 7, 0x0070, 0x10, 5, 1),
1174 + PIN_FIELD_BASE(50, 50, 7, 0x0070, 0x10, 2, 1),
1175 + PIN_FIELD_BASE(51, 51, 7, 0x0070, 0x10, 4, 1),
1176 + PIN_FIELD_BASE(52, 52, 7, 0x0060, 0x10, 1, 1),
1177 + PIN_FIELD_BASE(53, 53, 7, 0x0060, 0x10, 0, 1),
1178 + PIN_FIELD_BASE(54, 54, 7, 0x0060, 0x10, 5, 1),
1179 + PIN_FIELD_BASE(55, 55, 7, 0x0060, 0x10, 3, 1),
1180 + PIN_FIELD_BASE(56, 56, 7, 0x0060, 0x10, 4, 1),
1181 + PIN_FIELD_BASE(57, 57, 7, 0x0060, 0x10, 2, 1),
1182 + PIN_FIELD_BASE(58, 58, 7, 0x0070, 0x10, 0, 1),
1183 + PIN_FIELD_BASE(59, 59, 7, 0x0060, 0x10, 31, 1),
1184 + PIN_FIELD_BASE(60, 60, 7, 0x0060, 0x10, 30, 1),
1185 + PIN_FIELD_BASE(61, 61, 3, 0x0040, 0x10, 18, 1),
1186 + PIN_FIELD_BASE(62, 62, 3, 0x0040, 0x10, 14, 1),
1187 + PIN_FIELD_BASE(63, 63, 3, 0x0040, 0x10, 17, 1),
1188 + PIN_FIELD_BASE(64, 64, 3, 0x0040, 0x10, 13, 1),
1189 + PIN_FIELD_BASE(65, 65, 3, 0x0040, 0x10, 20, 1),
1190 + PIN_FIELD_BASE(66, 66, 3, 0x0040, 0x10, 16, 1),
1191 + PIN_FIELD_BASE(67, 67, 3, 0x0040, 0x10, 19, 1),
1192 + PIN_FIELD_BASE(68, 68, 3, 0x0040, 0x10, 15, 1),
1193 + PIN_FIELD_BASE(69, 69, 3, 0x0040, 0x10, 8, 1),
1194 + PIN_FIELD_BASE(70, 70, 3, 0x0040, 0x10, 7, 1),
1195 + PIN_FIELD_BASE(71, 71, 3, 0x0040, 0x10, 6, 1),
1196 + PIN_FIELD_BASE(72, 72, 3, 0x0040, 0x10, 5, 1),
1197 + PIN_FIELD_BASE(73, 73, 3, 0x0040, 0x10, 4, 1),
1198 + PIN_FIELD_BASE(74, 74, 3, 0x0040, 0x10, 3, 1),
1199 + PIN_FIELD_BASE(75, 75, 3, 0x0040, 0x10, 2, 1),
1200 + PIN_FIELD_BASE(76, 76, 3, 0x0040, 0x10, 1, 1),
1201 + PIN_FIELD_BASE(77, 77, 3, 0x0040, 0x10, 0, 1),
1202 + PIN_FIELD_BASE(78, 78, 3, 0x0040, 0x10, 9, 1),
1203 + PIN_FIELD_BASE(79, 79, 3, 0x0040, 0x10, 11, 1),
1204 + PIN_FIELD_BASE(80, 80, 3, 0x0040, 0x10, 10, 1),
1205 + PIN_FIELD_BASE(81, 81, 3, 0x0040, 0x10, 25, 1),
1206 + PIN_FIELD_BASE(82, 82, 3, 0x0040, 0x10, 24, 1),
1207 + PIN_FIELD_BASE(83, 83, 3, 0x0040, 0x10, 22, 1),
1208 + PIN_FIELD_BASE(84, 84, 3, 0x0040, 0x10, 23, 1),
1209 + PIN_FIELD_BASE(85, 85, 7, 0x0070, 0x10, 1, 1),
1210 + PIN_FIELD_BASE(86, 86, 7, 0x0060, 0x10, 29, 1),
1211 + PIN_FIELD_BASE(87, 87, 7, 0x0060, 0x10, 7, 1),
1212 + PIN_FIELD_BASE(88, 88, 7, 0x0060, 0x10, 6, 1),
1213 + PIN_FIELD_BASE(89, 89, 2, 0x0040, 0x10, 21, 1),
1214 + PINS_FIELD_BASE(90, 94, 3, 0x0040, 0x10, 21, 1),
1215 + PIN_FIELD_BASE(95, 95, 2, 0x0040, 0x10, 22, 1),
1216 + PIN_FIELD_BASE(96, 96, 2, 0x0040, 0x10, 23, 1),
1217 + PIN_FIELD_BASE(97, 97, 2, 0x0040, 0x10, 2, 1),
1218 + PIN_FIELD_BASE(98, 98, 2, 0x0040, 0x10, 3, 1),
1219 + PIN_FIELD_BASE(99, 99, 2, 0x0040, 0x10, 0, 1),
1220 + PIN_FIELD_BASE(100, 100, 2, 0x0040, 0x10, 1, 1),
1221 + PIN_FIELD_BASE(101, 101, 2, 0x0040, 0x10, 4, 1),
1222 + PIN_FIELD_BASE(102, 102, 2, 0x0040, 0x10, 5, 1),
1223 + PIN_FIELD_BASE(103, 103, 2, 0x0040, 0x10, 17, 1),
1224 + PIN_FIELD_BASE(104, 104, 2, 0x0040, 0x10, 19, 1),
1225 + PIN_FIELD_BASE(105, 105, 2, 0x0040, 0x10, 18, 1),
1226 + PIN_FIELD_BASE(106, 106, 2, 0x0040, 0x10, 20, 1),
1227 + PIN_FIELD_BASE(107, 107, 1, 0x0040, 0x10, 4, 1),
1228 + PIN_FIELD_BASE(108, 108, 1, 0x0040, 0x10, 3, 1),
1229 + PIN_FIELD_BASE(109, 109, 1, 0x0040, 0x10, 5, 1),
1230 + PIN_FIELD_BASE(110, 110, 1, 0x0040, 0x10, 0, 1),
1231 + PIN_FIELD_BASE(111, 111, 1, 0x0040, 0x10, 1, 1),
1232 + PIN_FIELD_BASE(112, 112, 1, 0x0040, 0x10, 2, 1),
1233 + PIN_FIELD_BASE(113, 113, 1, 0x0040, 0x10, 9, 1),
1234 + PIN_FIELD_BASE(114, 114, 1, 0x0040, 0x10, 10, 1),
1235 + PIN_FIELD_BASE(115, 115, 1, 0x0040, 0x10, 6, 1),
1236 + PIN_FIELD_BASE(116, 116, 1, 0x0040, 0x10, 7, 1),
1237 + PIN_FIELD_BASE(117, 117, 1, 0x0040, 0x10, 12, 1),
1238 + PIN_FIELD_BASE(118, 118, 1, 0x0040, 0x10, 13, 1),
1239 + PIN_FIELD_BASE(119, 119, 1, 0x0040, 0x10, 14, 1),
1240 + PIN_FIELD_BASE(120, 120, 1, 0x0040, 0x10, 11, 1),
1241 + PINS_FIELD_BASE(121, 133, 1, 0x0040, 0x10, 8, 1),
1242 + PIN_FIELD_BASE(134, 134, 5, 0x0030, 0x10, 14, 1),
1243 + PIN_FIELD_BASE(135, 135, 5, 0x0030, 0x10, 19, 1),
1244 + PIN_FIELD_BASE(136, 136, 5, 0x0030, 0x10, 1, 1),
1245 + PIN_FIELD_BASE(137, 137, 5, 0x0030, 0x10, 7, 1),
1246 + PIN_FIELD_BASE(138, 138, 5, 0x0030, 0x10, 4, 1),
1247 + PIN_FIELD_BASE(139, 139, 5, 0x0030, 0x10, 5, 1),
1248 + PIN_FIELD_BASE(140, 140, 5, 0x0030, 0x10, 0, 1),
1249 + PIN_FIELD_BASE(141, 141, 5, 0x0030, 0x10, 6, 1),
1250 + PIN_FIELD_BASE(142, 142, 5, 0x0030, 0x10, 2, 1),
1251 + PIN_FIELD_BASE(143, 143, 5, 0x0030, 0x10, 3, 1),
1252 + PIN_FIELD_BASE(144, 144, 5, 0x0030, 0x10, 12, 1),
1253 + PIN_FIELD_BASE(145, 145, 5, 0x0030, 0x10, 11, 1),
1254 + PIN_FIELD_BASE(146, 146, 5, 0x0030, 0x10, 13, 1),
1255 + PIN_FIELD_BASE(147, 147, 5, 0x0030, 0x10, 10, 1),
1256 + PIN_FIELD_BASE(148, 148, 5, 0x0030, 0x10, 15, 1),
1257 + PIN_FIELD_BASE(149, 149, 5, 0x0030, 0x10, 16, 1),
1258 + PIN_FIELD_BASE(150, 150, 7, 0x0060, 0x10, 23, 1),
1259 + PIN_FIELD_BASE(151, 151, 7, 0x0060, 0x10, 24, 1),
1260 + PIN_FIELD_BASE(152, 152, 7, 0x0060, 0x10, 25, 1),
1261 + PIN_FIELD_BASE(153, 153, 7, 0x0060, 0x10, 26, 1),
1262 + PIN_FIELD_BASE(154, 154, 7, 0x0060, 0x10, 28, 1),
1263 + PIN_FIELD_BASE(155, 155, 3, 0x0040, 0x10, 28, 1),
1264 + PIN_FIELD_BASE(156, 156, 3, 0x0040, 0x10, 27, 1),
1265 + PIN_FIELD_BASE(157, 157, 3, 0x0040, 0x10, 29, 1),
1266 + PIN_FIELD_BASE(158, 158, 3, 0x0040, 0x10, 26, 1),
1267 + PIN_FIELD_BASE(159, 159, 7, 0x0060, 0x10, 27, 1),
1268 + PIN_FIELD_BASE(160, 160, 5, 0x0030, 0x10, 8, 1),
1269 + PIN_FIELD_BASE(161, 161, 1, 0x0040, 0x10, 15, 1),
1270 + PIN_FIELD_BASE(162, 162, 1, 0x0040, 0x10, 16, 1),
1271 + PIN_FIELD_BASE(163, 163, 4, 0x0020, 0x10, 0, 1),
1272 + PIN_FIELD_BASE(164, 164, 4, 0x0020, 0x10, 1, 1),
1273 + PIN_FIELD_BASE(165, 165, 4, 0x0020, 0x10, 2, 1),
1274 + PIN_FIELD_BASE(166, 166, 4, 0x0020, 0x10, 3, 1),
1275 + PIN_FIELD_BASE(167, 167, 4, 0x0020, 0x10, 4, 1),
1276 + PIN_FIELD_BASE(168, 168, 4, 0x0020, 0x10, 5, 1),
1277 + PIN_FIELD_BASE(169, 169, 4, 0x0020, 0x10, 6, 1),
1278 + PIN_FIELD_BASE(170, 170, 4, 0x0020, 0x10, 7, 1),
1279 + PIN_FIELD_BASE(171, 171, 7, 0x0060, 0x10, 17, 1),
1280 + PIN_FIELD_BASE(172, 172, 7, 0x0060, 0x10, 18, 1),
1281 + PIN_FIELD_BASE(173, 173, 7, 0x0060, 0x10, 11, 1),
1282 + PIN_FIELD_BASE(174, 174, 7, 0x0060, 0x10, 12, 1),
1283 + PIN_FIELD_BASE(175, 175, 7, 0x0060, 0x10, 13, 1),
1284 + PIN_FIELD_BASE(176, 176, 7, 0x0060, 0x10, 14, 1),
1285 + PIN_FIELD_BASE(177, 177, 7, 0x0060, 0x10, 15, 1),
1286 + PINS_FIELD_BASE(178, 179, 7, 0x0060, 0x10, 16, 1),
1289 +static const struct mtk_pin_field_calc mt6765_pin_pu_range[] = {
1290 + PIN_FIELD_BASE(0, 0, 2, 0x0060, 0x10, 6, 1),
1291 + PIN_FIELD_BASE(1, 1, 2, 0x0060, 0x10, 7, 1),
1292 + PIN_FIELD_BASE(2, 2, 2, 0x0060, 0x10, 10, 1),
1293 + PIN_FIELD_BASE(3, 3, 2, 0x0060, 0x10, 11, 1),
1294 + PIN_FIELD_BASE(4, 4, 2, 0x0060, 0x10, 12, 1),
1295 + PIN_FIELD_BASE(5, 5, 2, 0x0060, 0x10, 13, 1),
1296 + PIN_FIELD_BASE(6, 6, 2, 0x0060, 0x10, 14, 1),
1297 + PIN_FIELD_BASE(7, 7, 2, 0x0060, 0x10, 15, 1),
1298 + PIN_FIELD_BASE(8, 8, 3, 0x0050, 0x10, 12, 1),
1299 + PIN_FIELD_BASE(9, 9, 2, 0x0060, 0x10, 16, 1),
1300 + PIN_FIELD_BASE(10, 10, 2, 0x0060, 0x10, 8, 1),
1301 + PIN_FIELD_BASE(11, 11, 2, 0x0060, 0x10, 9, 1),
1302 + PIN_FIELD_BASE(12, 12, 5, 0x0040, 0x10, 9, 1),
1303 + PIN_FIELD_BASE(13, 13, 6, 0x0060, 0x10, 14, 1),
1304 + PIN_FIELD_BASE(14, 14, 6, 0x0060, 0x10, 13, 1),
1305 + PIN_FIELD_BASE(15, 15, 6, 0x0060, 0x10, 15, 1),
1306 + PIN_FIELD_BASE(16, 16, 6, 0x0060, 0x10, 12, 1),
1307 + PIN_FIELD_BASE(17, 17, 6, 0x0060, 0x10, 7, 1),
1308 + PIN_FIELD_BASE(18, 18, 6, 0x0060, 0x10, 4, 1),
1309 + PIN_FIELD_BASE(19, 19, 6, 0x0060, 0x10, 6, 1),
1310 + PIN_FIELD_BASE(20, 20, 6, 0x0060, 0x10, 5, 1),
1311 + PIN_FIELD_BASE(21, 21, 6, 0x0060, 0x10, 10, 1),
1312 + PIN_FIELD_BASE(22, 22, 6, 0x0060, 0x10, 9, 1),
1313 + PIN_FIELD_BASE(23, 23, 6, 0x0060, 0x10, 11, 1),
1314 + PIN_FIELD_BASE(24, 24, 6, 0x0060, 0x10, 8, 1),
1315 + PIN_FIELD_BASE(25, 25, 6, 0x0060, 0x10, 2, 1),
1316 + PIN_FIELD_BASE(26, 26, 6, 0x0060, 0x10, 1, 1),
1317 + PIN_FIELD_BASE(27, 27, 6, 0x0060, 0x10, 3, 1),
1318 + PINS_FIELD_BASE(28, 40, 6, 0x0060, 0x10, 0, 1),
1319 + PIN_FIELD_BASE(41, 41, 7, 0x0080, 0x10, 19, 1),
1320 + PIN_FIELD_BASE(42, 42, 7, 0x0080, 0x10, 9, 1),
1321 + PIN_FIELD_BASE(43, 43, 7, 0x0080, 0x10, 8, 1),
1322 + PIN_FIELD_BASE(44, 44, 7, 0x0080, 0x10, 10, 1),
1323 + PIN_FIELD_BASE(45, 45, 7, 0x0080, 0x10, 22, 1),
1324 + PIN_FIELD_BASE(46, 46, 7, 0x0080, 0x10, 21, 1),
1325 + PIN_FIELD_BASE(47, 47, 7, 0x0080, 0x10, 20, 1),
1326 + PIN_FIELD_BASE(48, 48, 7, 0x0090, 0x10, 3, 1),
1327 + PIN_FIELD_BASE(49, 49, 7, 0x0090, 0x10, 5, 1),
1328 + PIN_FIELD_BASE(50, 50, 7, 0x0090, 0x10, 2, 1),
1329 + PIN_FIELD_BASE(51, 51, 7, 0x0090, 0x10, 4, 1),
1330 + PIN_FIELD_BASE(52, 52, 7, 0x0080, 0x10, 1, 1),
1331 + PIN_FIELD_BASE(53, 53, 7, 0x0080, 0x10, 0, 1),
1332 + PIN_FIELD_BASE(54, 54, 7, 0x0080, 0x10, 5, 1),
1333 + PIN_FIELD_BASE(55, 55, 7, 0x0080, 0x10, 3, 1),
1334 + PIN_FIELD_BASE(56, 56, 7, 0x0080, 0x10, 4, 1),
1335 + PIN_FIELD_BASE(57, 57, 7, 0x0080, 0x10, 2, 1),
1336 + PIN_FIELD_BASE(58, 58, 7, 0x0090, 0x10, 0, 1),
1337 + PIN_FIELD_BASE(59, 59, 7, 0x0080, 0x10, 31, 1),
1338 + PIN_FIELD_BASE(60, 60, 7, 0x0080, 0x10, 30, 1),
1339 + PIN_FIELD_BASE(61, 61, 3, 0x0050, 0x10, 18, 1),
1340 + PIN_FIELD_BASE(62, 62, 3, 0x0050, 0x10, 14, 1),
1341 + PIN_FIELD_BASE(63, 63, 3, 0x0050, 0x10, 17, 1),
1342 + PIN_FIELD_BASE(64, 64, 3, 0x0050, 0x10, 13, 1),
1343 + PIN_FIELD_BASE(65, 65, 3, 0x0050, 0x10, 20, 1),
1344 + PIN_FIELD_BASE(66, 66, 3, 0x0050, 0x10, 16, 1),
1345 + PIN_FIELD_BASE(67, 67, 3, 0x0050, 0x10, 19, 1),
1346 + PIN_FIELD_BASE(68, 68, 3, 0x0050, 0x10, 15, 1),
1347 + PIN_FIELD_BASE(69, 69, 3, 0x0050, 0x10, 8, 1),
1348 + PIN_FIELD_BASE(70, 70, 3, 0x0050, 0x10, 7, 1),
1349 + PIN_FIELD_BASE(71, 71, 3, 0x0050, 0x10, 6, 1),
1350 + PIN_FIELD_BASE(72, 72, 3, 0x0050, 0x10, 5, 1),
1351 + PIN_FIELD_BASE(73, 73, 3, 0x0050, 0x10, 4, 1),
1352 + PIN_FIELD_BASE(74, 74, 3, 0x0050, 0x10, 3, 1),
1353 + PIN_FIELD_BASE(75, 75, 3, 0x0050, 0x10, 2, 1),
1354 + PIN_FIELD_BASE(76, 76, 3, 0x0050, 0x10, 1, 1),
1355 + PIN_FIELD_BASE(77, 77, 3, 0x0050, 0x10, 0, 1),
1356 + PIN_FIELD_BASE(78, 78, 3, 0x0050, 0x10, 9, 1),
1357 + PIN_FIELD_BASE(79, 79, 3, 0x0050, 0x10, 11, 1),
1358 + PIN_FIELD_BASE(80, 80, 3, 0x0050, 0x10, 10, 1),
1359 + PIN_FIELD_BASE(81, 81, 3, 0x0050, 0x10, 25, 1),
1360 + PIN_FIELD_BASE(82, 82, 3, 0x0050, 0x10, 24, 1),
1361 + PIN_FIELD_BASE(83, 83, 3, 0x0050, 0x10, 22, 1),
1362 + PIN_FIELD_BASE(84, 84, 3, 0x0050, 0x10, 23, 1),
1363 + PIN_FIELD_BASE(85, 85, 7, 0x0090, 0x10, 1, 1),
1364 + PIN_FIELD_BASE(86, 86, 7, 0x0080, 0x10, 29, 1),
1365 + PIN_FIELD_BASE(87, 87, 7, 0x0080, 0x10, 7, 1),
1366 + PIN_FIELD_BASE(88, 88, 7, 0x0080, 0x10, 6, 1),
1367 + PIN_FIELD_BASE(89, 89, 2, 0x0060, 0x10, 21, 1),
1368 + PINS_FIELD_BASE(90, 94, 3, 0x0050, 0x10, 21, 1),
1369 + PIN_FIELD_BASE(95, 95, 2, 0x0060, 0x10, 22, 1),
1370 + PIN_FIELD_BASE(96, 96, 2, 0x0060, 0x10, 23, 1),
1371 + PIN_FIELD_BASE(97, 97, 2, 0x0060, 0x10, 2, 1),
1372 + PIN_FIELD_BASE(98, 98, 2, 0x0060, 0x10, 3, 1),
1373 + PIN_FIELD_BASE(99, 99, 2, 0x0060, 0x10, 0, 1),
1374 + PIN_FIELD_BASE(100, 100, 2, 0x0060, 0x10, 1, 1),
1375 + PIN_FIELD_BASE(101, 101, 2, 0x0060, 0x10, 4, 1),
1376 + PIN_FIELD_BASE(102, 102, 2, 0x0060, 0x10, 5, 1),
1377 + PIN_FIELD_BASE(103, 103, 2, 0x0060, 0x10, 17, 1),
1378 + PIN_FIELD_BASE(104, 104, 2, 0x0060, 0x10, 19, 1),
1379 + PIN_FIELD_BASE(105, 105, 2, 0x0060, 0x10, 18, 1),
1380 + PIN_FIELD_BASE(106, 106, 2, 0x0060, 0x10, 20, 1),
1381 + PIN_FIELD_BASE(107, 107, 1, 0x0050, 0x10, 4, 1),
1382 + PIN_FIELD_BASE(108, 108, 1, 0x0050, 0x10, 3, 1),
1383 + PIN_FIELD_BASE(109, 109, 1, 0x0050, 0x10, 5, 1),
1384 + PIN_FIELD_BASE(110, 110, 1, 0x0050, 0x10, 0, 1),
1385 + PIN_FIELD_BASE(111, 111, 1, 0x0050, 0x10, 1, 1),
1386 + PIN_FIELD_BASE(112, 112, 1, 0x0050, 0x10, 2, 1),
1387 + PIN_FIELD_BASE(113, 113, 1, 0x0050, 0x10, 9, 1),
1388 + PIN_FIELD_BASE(114, 114, 1, 0x0050, 0x10, 10, 1),
1389 + PIN_FIELD_BASE(115, 115, 1, 0x0050, 0x10, 6, 1),
1390 + PIN_FIELD_BASE(116, 116, 1, 0x0050, 0x10, 7, 1),
1391 + PIN_FIELD_BASE(117, 117, 1, 0x0050, 0x10, 12, 1),
1392 + PIN_FIELD_BASE(118, 118, 1, 0x0050, 0x10, 13, 1),
1393 + PIN_FIELD_BASE(119, 119, 1, 0x0050, 0x10, 14, 1),
1394 + PIN_FIELD_BASE(120, 120, 1, 0x0050, 0x10, 11, 1),
1395 + PINS_FIELD_BASE(121, 133, 1, 0x0050, 0x10, 8, 1),
1396 + PIN_FIELD_BASE(134, 134, 5, 0x0040, 0x10, 14, 1),
1397 + PIN_FIELD_BASE(135, 135, 5, 0x0040, 0x10, 19, 1),
1398 + PIN_FIELD_BASE(136, 136, 5, 0x0040, 0x10, 1, 1),
1399 + PIN_FIELD_BASE(137, 137, 5, 0x0040, 0x10, 7, 1),
1400 + PIN_FIELD_BASE(138, 138, 5, 0x0040, 0x10, 4, 1),
1401 + PIN_FIELD_BASE(139, 139, 5, 0x0040, 0x10, 5, 1),
1402 + PIN_FIELD_BASE(140, 140, 5, 0x0040, 0x10, 0, 1),
1403 + PIN_FIELD_BASE(141, 141, 5, 0x0040, 0x10, 6, 1),
1404 + PIN_FIELD_BASE(142, 142, 5, 0x0040, 0x10, 2, 1),
1405 + PIN_FIELD_BASE(143, 143, 5, 0x0040, 0x10, 3, 1),
1406 + PIN_FIELD_BASE(144, 144, 5, 0x0040, 0x10, 12, 1),
1407 + PIN_FIELD_BASE(145, 145, 5, 0x0040, 0x10, 11, 1),
1408 + PIN_FIELD_BASE(146, 146, 5, 0x0040, 0x10, 13, 1),
1409 + PIN_FIELD_BASE(147, 147, 5, 0x0040, 0x10, 10, 1),
1410 + PIN_FIELD_BASE(148, 148, 5, 0x0040, 0x10, 15, 1),
1411 + PIN_FIELD_BASE(149, 149, 5, 0x0040, 0x10, 16, 1),
1412 + PIN_FIELD_BASE(150, 150, 7, 0x0080, 0x10, 23, 1),
1413 + PIN_FIELD_BASE(151, 151, 7, 0x0080, 0x10, 24, 1),
1414 + PIN_FIELD_BASE(152, 152, 7, 0x0080, 0x10, 25, 1),
1415 + PIN_FIELD_BASE(153, 153, 7, 0x0080, 0x10, 26, 1),
1416 + PIN_FIELD_BASE(154, 154, 7, 0x0080, 0x10, 28, 1),
1417 + PIN_FIELD_BASE(155, 155, 3, 0x0050, 0x10, 28, 1),
1418 + PIN_FIELD_BASE(156, 156, 3, 0x0050, 0x10, 27, 1),
1419 + PIN_FIELD_BASE(157, 157, 3, 0x0050, 0x10, 29, 1),
1420 + PIN_FIELD_BASE(158, 158, 3, 0x0050, 0x10, 26, 1),
1421 + PIN_FIELD_BASE(159, 159, 7, 0x0080, 0x10, 27, 1),
1422 + PIN_FIELD_BASE(160, 160, 5, 0x0040, 0x10, 8, 1),
1423 + PIN_FIELD_BASE(161, 161, 1, 0x0050, 0x10, 15, 1),
1424 + PIN_FIELD_BASE(162, 162, 1, 0x0050, 0x10, 16, 1),
1425 + PIN_FIELD_BASE(163, 163, 4, 0x0040, 0x10, 0, 1),
1426 + PIN_FIELD_BASE(164, 164, 4, 0x0040, 0x10, 1, 1),
1427 + PIN_FIELD_BASE(165, 165, 4, 0x0040, 0x10, 2, 1),
1428 + PIN_FIELD_BASE(166, 166, 4, 0x0040, 0x10, 3, 1),
1429 + PIN_FIELD_BASE(167, 167, 4, 0x0040, 0x10, 4, 1),
1430 + PIN_FIELD_BASE(168, 168, 4, 0x0040, 0x10, 5, 1),
1431 + PIN_FIELD_BASE(169, 169, 4, 0x0040, 0x10, 6, 1),
1432 + PIN_FIELD_BASE(170, 170, 4, 0x0040, 0x10, 7, 1),
1433 + PIN_FIELD_BASE(171, 171, 7, 0x0080, 0x10, 17, 1),
1434 + PIN_FIELD_BASE(172, 172, 7, 0x0080, 0x10, 18, 1),
1435 + PIN_FIELD_BASE(173, 173, 7, 0x0080, 0x10, 11, 1),
1436 + PIN_FIELD_BASE(174, 174, 7, 0x0080, 0x10, 12, 1),
1437 + PIN_FIELD_BASE(175, 175, 7, 0x0080, 0x10, 13, 1),
1438 + PIN_FIELD_BASE(176, 176, 7, 0x0080, 0x10, 14, 1),
1439 + PIN_FIELD_BASE(177, 177, 7, 0x0080, 0x10, 15, 1),
1440 + PINS_FIELD_BASE(178, 179, 7, 0x0080, 0x10, 16, 1),
1443 +static const struct mtk_pin_field_calc mt6765_pin_tdsel_range[] = {
1444 + PINS_FIELD_BASE(0, 3, 2, 0x00c0, 0x10, 16, 4),
1445 + PINS_FIELD_BASE(4, 7, 2, 0x00c0, 0x10, 20, 4),
1446 + PIN_FIELD_BASE(8, 8, 3, 0x0090, 0x10, 12, 4),
1447 + PINS_FIELD_BASE(9, 11, 2, 0x00c0, 0x10, 24, 4),
1448 + PIN_FIELD_BASE(12, 12, 5, 0x0080, 0x10, 4, 4),
1449 + PINS_FIELD_BASE(13, 16, 6, 0x00e0, 0x10, 8, 4),
1450 + PINS_FIELD_BASE(17, 20, 6, 0x00e0, 0x10, 0, 4),
1451 + PINS_FIELD_BASE(21, 24, 6, 0x00e0, 0x10, 4, 4),
1452 + PINS_FIELD_BASE(25, 28, 6, 0x00d0, 0x10, 28, 4),
1453 + PIN_FIELD_BASE(29, 29, 6, 0x00d0, 0x10, 0, 4),
1454 + PIN_FIELD_BASE(30, 30, 6, 0x00d0, 0x10, 4, 4),
1455 + PINS_FIELD_BASE(31, 34, 6, 0x00d0, 0x10, 8, 4),
1456 + PINS_FIELD_BASE(35, 36, 6, 0x00d0, 0x10, 20, 4),
1457 + PIN_FIELD_BASE(37, 37, 6, 0x00d0, 0x10, 24, 4),
1458 + PIN_FIELD_BASE(38, 38, 6, 0x00d0, 0x10, 16, 4),
1459 + PINS_FIELD_BASE(39, 40, 6, 0x00d0, 0x10, 12, 4),
1460 + PINS_FIELD_BASE(41, 42, 7, 0x00d0, 0x10, 24, 4),
1461 + PIN_FIELD_BASE(43, 43, 7, 0x00d0, 0x10, 12, 4),
1462 + PIN_FIELD_BASE(44, 44, 7, 0x00d0, 0x10, 16, 4),
1463 + PIN_FIELD_BASE(45, 45, 7, 0x00e0, 0x10, 0, 4),
1464 + PINS_FIELD_BASE(46, 47, 7, 0x00d0, 0x10, 28, 4),
1465 + PINS_FIELD_BASE(48, 49, 7, 0x00e0, 0x10, 28, 4),
1466 + PINS_FIELD_BASE(50, 51, 7, 0x00e0, 0x10, 24, 4),
1467 + PINS_FIELD_BASE(52, 57, 7, 0x00d0, 0x10, 0, 4),
1468 + PINS_FIELD_BASE(58, 60, 7, 0x00e0, 0x10, 16, 4),
1469 + PINS_FIELD_BASE(61, 62, 3, 0x0090, 0x10, 20, 4),
1470 + PINS_FIELD_BASE(63, 64, 3, 0x0090, 0x10, 16, 4),
1471 + PINS_FIELD_BASE(65, 66, 3, 0x0090, 0x10, 28, 4),
1472 + PINS_FIELD_BASE(67, 68, 3, 0x0090, 0x10, 24, 4),
1473 + PINS_FIELD_BASE(69, 73, 3, 0x0090, 0x10, 4, 4),
1474 + PINS_FIELD_BASE(74, 78, 3, 0x0090, 0x10, 8, 4),
1475 + PINS_FIELD_BASE(79, 80, 3, 0x0090, 0x10, 0, 4),
1476 + PIN_FIELD_BASE(81, 81, 3, 0x00a0, 0x10, 8, 4),
1477 + PINS_FIELD_BASE(82, 83, 3, 0x00a0, 0x10, 4, 4),
1478 + PIN_FIELD_BASE(84, 84, 3, 0x00a0, 0x10, 8, 4),
1479 + PIN_FIELD_BASE(85, 85, 7, 0x00e0, 0x10, 16, 4),
1480 + PIN_FIELD_BASE(86, 86, 7, 0x00e0, 0x10, 20, 4),
1481 + PIN_FIELD_BASE(87, 87, 7, 0x00d0, 0x10, 8, 4),
1482 + PIN_FIELD_BASE(88, 88, 7, 0x00d0, 0x10, 4, 4),
1483 + PIN_FIELD_BASE(89, 89, 2, 0x00d0, 0x10, 12, 4),
1484 + PIN_FIELD_BASE(90, 90, 3, 0x00a0, 0x10, 0, 4),
1485 + PINS_FIELD_BASE(91, 92, 2, 0x00d0, 0x10, 0, 4),
1486 + PINS_FIELD_BASE(93, 94, 2, 0x00c0, 0x10, 28, 4),
1487 + PINS_FIELD_BASE(95, 96, 2, 0x00d0, 0x10, 16, 4),
1488 + PINS_FIELD_BASE(97, 98, 2, 0x00c0, 0x10, 8, 4),
1489 + PIN_FIELD_BASE(99, 99, 2, 0x00c0, 0x10, 0, 4),
1490 + PIN_FIELD_BASE(100, 100, 2, 0x00c0, 0x10, 4, 4),
1491 + PINS_FIELD_BASE(101, 102, 2, 0x00c0, 0x10, 12, 4),
1492 + PINS_FIELD_BASE(103, 104, 2, 0x00d0, 0x10, 4, 4),
1493 + PINS_FIELD_BASE(105, 106, 2, 0x00d0, 0x10, 8, 4),
1494 + PIN_FIELD_BASE(107, 107, 1, 0x0090, 0x10, 16, 4),
1495 + PIN_FIELD_BASE(108, 108, 1, 0x0090, 0x10, 12, 4),
1496 + PIN_FIELD_BASE(109, 109, 1, 0x0090, 0x10, 20, 4),
1497 + PIN_FIELD_BASE(110, 110, 1, 0x0090, 0x10, 0, 4),
1498 + PIN_FIELD_BASE(111, 111, 1, 0x0090, 0x10, 4, 4),
1499 + PIN_FIELD_BASE(112, 112, 1, 0x0090, 0x10, 8, 4),
1500 + PIN_FIELD_BASE(113, 113, 1, 0x00a0, 0x10, 4, 4),
1501 + PIN_FIELD_BASE(114, 114, 1, 0x00a0, 0x10, 8, 4),
1502 + PIN_FIELD_BASE(115, 115, 1, 0x0090, 0x10, 24, 4),
1503 + PIN_FIELD_BASE(116, 116, 1, 0x0090, 0x10, 28, 4),
1504 + PIN_FIELD_BASE(117, 117, 1, 0x00a0, 0x10, 16, 4),
1505 + PIN_FIELD_BASE(118, 118, 1, 0x00a0, 0x10, 20, 4),
1506 + PIN_FIELD_BASE(119, 119, 1, 0x00a0, 0x10, 24, 4),
1507 + PIN_FIELD_BASE(120, 120, 1, 0x00a0, 0x10, 12, 4),
1508 + PIN_FIELD_BASE(121, 121, 1, 0x00a0, 0x10, 0, 4),
1509 + PIN_FIELD_BASE(122, 122, 4, 0x0090, 0x10, 8, 4),
1510 + PIN_FIELD_BASE(123, 123, 4, 0x0090, 0x10, 12, 4),
1511 + PIN_FIELD_BASE(124, 124, 4, 0x0090, 0x10, 4, 4),
1512 + PINS_FIELD_BASE(125, 130, 4, 0x0090, 0x10, 12, 4),
1513 + PIN_FIELD_BASE(131, 131, 4, 0x0090, 0x10, 16, 4),
1514 + PIN_FIELD_BASE(132, 132, 4, 0x0090, 0x10, 12, 4),
1515 + PIN_FIELD_BASE(133, 133, 4, 0x0090, 0x10, 20, 4),
1516 + PIN_FIELD_BASE(134, 134, 5, 0x0080, 0x10, 12, 4),
1517 + PIN_FIELD_BASE(135, 135, 5, 0x0080, 0x10, 20, 4),
1518 + PIN_FIELD_BASE(136, 136, 5, 0x0070, 0x10, 4, 4),
1519 + PIN_FIELD_BASE(137, 137, 5, 0x0070, 0x10, 28, 4),
1520 + PIN_FIELD_BASE(138, 138, 5, 0x0070, 0x10, 16, 4),
1521 + PIN_FIELD_BASE(139, 139, 5, 0x0070, 0x10, 20, 4),
1522 + PIN_FIELD_BASE(140, 140, 5, 0x0070, 0x10, 0, 4),
1523 + PIN_FIELD_BASE(141, 141, 5, 0x0070, 0x10, 24, 4),
1524 + PIN_FIELD_BASE(142, 142, 5, 0x0070, 0x10, 8, 4),
1525 + PIN_FIELD_BASE(143, 143, 5, 0x0070, 0x10, 12, 4),
1526 + PINS_FIELD_BASE(144, 147, 5, 0x0080, 0x10, 8, 4),
1527 + PINS_FIELD_BASE(148, 149, 5, 0x0080, 0x10, 16, 4),
1528 + PINS_FIELD_BASE(150, 151, 7, 0x00e0, 0x10, 4, 4),
1529 + PINS_FIELD_BASE(152, 153, 7, 0x00e0, 0x10, 8, 4),
1530 + PIN_FIELD_BASE(154, 154, 7, 0x00e0, 0x10, 12, 4),
1531 + PINS_FIELD_BASE(155, 158, 3, 0x00a0, 0x10, 12, 4),
1532 + PIN_FIELD_BASE(159, 159, 7, 0x00e0, 0x10, 12, 4),
1533 + PIN_FIELD_BASE(160, 160, 5, 0x0080, 0x10, 0, 4),
1534 + PINS_FIELD_BASE(161, 162, 1, 0x00a0, 0x10, 28, 4),
1535 + PINS_FIELD_BASE(163, 170, 4, 0x0090, 0x10, 0, 4),
1536 + PINS_FIELD_BASE(171, 179, 7, 0x00d0, 0x10, 20, 4),
1539 +static const struct mtk_pin_field_calc mt6765_pin_rdsel_range[] = {
1540 + PINS_FIELD_BASE(0, 3, 2, 0x0090, 0x10, 8, 2),
1541 + PINS_FIELD_BASE(4, 7, 2, 0x0090, 0x10, 10, 2),
1542 + PIN_FIELD_BASE(8, 8, 3, 0x0060, 0x10, 6, 2),
1543 + PINS_FIELD_BASE(9, 11, 2, 0x0090, 0x10, 12, 2),
1544 + PIN_FIELD_BASE(12, 12, 5, 0x0050, 0x10, 18, 2),
1545 + PINS_FIELD_BASE(13, 16, 6, 0x00a0, 0x10, 18, 2),
1546 + PINS_FIELD_BASE(17, 20, 6, 0x00a0, 0x10, 14, 2),
1547 + PINS_FIELD_BASE(21, 24, 6, 0x00a0, 0x10, 16, 2),
1548 + PINS_FIELD_BASE(25, 28, 6, 0x00a0, 0x10, 12, 2),
1549 + PIN_FIELD_BASE(29, 29, 6, 0x0090, 0x10, 0, 6),
1550 + PIN_FIELD_BASE(30, 30, 6, 0x0090, 0x10, 6, 6),
1551 + PINS_FIELD_BASE(31, 34, 6, 0x0090, 0x10, 12, 6),
1552 + PINS_FIELD_BASE(35, 36, 6, 0x00a0, 0x10, 0, 6),
1553 + PIN_FIELD_BASE(37, 37, 6, 0x00a0, 0x10, 6, 6),
1554 + PIN_FIELD_BASE(38, 38, 6, 0x0090, 0x10, 24, 6),
1555 + PINS_FIELD_BASE(39, 40, 6, 0x0090, 0x10, 18, 6),
1556 + PINS_FIELD_BASE(41, 42, 7, 0x00a0, 0x10, 12, 2),
1557 + PIN_FIELD_BASE(43, 43, 7, 0x00a0, 0x10, 6, 2),
1558 + PIN_FIELD_BASE(44, 44, 7, 0x00a0, 0x10, 8, 2),
1559 + PIN_FIELD_BASE(45, 45, 7, 0x00a0, 0x10, 16, 2),
1560 + PINS_FIELD_BASE(46, 47, 7, 0x00a0, 0x10, 14, 2),
1561 + PINS_FIELD_BASE(48, 49, 7, 0x00a0, 0x10, 30, 2),
1562 + PINS_FIELD_BASE(50, 51, 7, 0x00a0, 0x10, 28, 2),
1563 + PINS_FIELD_BASE(52, 57, 7, 0x00a0, 0x10, 0, 2),
1564 + PINS_FIELD_BASE(58, 60, 7, 0x00a0, 0x10, 24, 2),
1565 + PINS_FIELD_BASE(61, 62, 3, 0x0060, 0x10, 10, 2),
1566 + PINS_FIELD_BASE(63, 64, 3, 0x0060, 0x10, 8, 2),
1567 + PINS_FIELD_BASE(65, 66, 3, 0x0060, 0x10, 14, 2),
1568 + PINS_FIELD_BASE(67, 68, 3, 0x0060, 0x10, 12, 2),
1569 + PINS_FIELD_BASE(69, 73, 3, 0x0060, 0x10, 2, 2),
1570 + PINS_FIELD_BASE(74, 78, 3, 0x0060, 0x10, 4, 2),
1571 + PINS_FIELD_BASE(79, 80, 3, 0x0060, 0x10, 0, 2),
1572 + PIN_FIELD_BASE(81, 81, 3, 0x0060, 0x10, 20, 2),
1573 + PINS_FIELD_BASE(82, 83, 3, 0x0060, 0x10, 18, 2),
1574 + PIN_FIELD_BASE(84, 84, 3, 0x0060, 0x10, 20, 2),
1575 + PIN_FIELD_BASE(85, 85, 7, 0x00a0, 0x10, 24, 2),
1576 + PIN_FIELD_BASE(86, 86, 7, 0x00a0, 0x10, 26, 2),
1577 + PIN_FIELD_BASE(87, 87, 7, 0x00a0, 0x10, 4, 2),
1578 + PIN_FIELD_BASE(88, 88, 7, 0x00a0, 0x10, 2, 2),
1579 + PIN_FIELD_BASE(89, 89, 2, 0x0090, 0x10, 22, 2),
1580 + PIN_FIELD_BASE(90, 90, 3, 0x0060, 0x10, 16, 2),
1581 + PINS_FIELD_BASE(91, 92, 2, 0x0090, 0x10, 16, 2),
1582 + PINS_FIELD_BASE(93, 94, 2, 0x0090, 0x10, 14, 2),
1583 + PINS_FIELD_BASE(95, 96, 2, 0x0090, 0x10, 24, 2),
1584 + PINS_FIELD_BASE(97, 98, 2, 0x0090, 0x10, 4, 2),
1585 + PIN_FIELD_BASE(99, 99, 2, 0x0090, 0x10, 0, 2),
1586 + PIN_FIELD_BASE(100, 100, 2, 0x0090, 0x10, 2, 2),
1587 + PINS_FIELD_BASE(101, 102, 2, 0x0090, 0x10, 6, 2),
1588 + PINS_FIELD_BASE(103, 104, 2, 0x0090, 0x10, 18, 2),
1589 + PINS_FIELD_BASE(105, 106, 2, 0x0090, 0x10, 20, 2),
1590 + PIN_FIELD_BASE(107, 107, 1, 0x0060, 0x10, 8, 2),
1591 + PIN_FIELD_BASE(108, 108, 1, 0x0060, 0x10, 6, 2),
1592 + PIN_FIELD_BASE(109, 109, 1, 0x0060, 0x10, 10, 2),
1593 + PIN_FIELD_BASE(110, 110, 1, 0x0060, 0x10, 0, 2),
1594 + PIN_FIELD_BASE(111, 111, 1, 0x0060, 0x10, 2, 2),
1595 + PIN_FIELD_BASE(112, 112, 1, 0x0060, 0x10, 4, 2),
1596 + PIN_FIELD_BASE(113, 113, 1, 0x0060, 0x10, 18, 2),
1597 + PIN_FIELD_BASE(114, 114, 1, 0x0060, 0x10, 20, 2),
1598 + PIN_FIELD_BASE(115, 115, 1, 0x0060, 0x10, 12, 2),
1599 + PIN_FIELD_BASE(116, 116, 1, 0x0060, 0x10, 14, 2),
1600 + PIN_FIELD_BASE(117, 117, 1, 0x0060, 0x10, 24, 2),
1601 + PIN_FIELD_BASE(118, 118, 1, 0x0060, 0x10, 26, 2),
1602 + PIN_FIELD_BASE(119, 119, 1, 0x0060, 0x10, 28, 2),
1603 + PIN_FIELD_BASE(120, 120, 1, 0x0060, 0x10, 22, 2),
1604 + PIN_FIELD_BASE(121, 121, 1, 0x0060, 0x10, 16, 2),
1605 + PIN_FIELD_BASE(122, 122, 4, 0x0070, 0x10, 8, 6),
1606 + PIN_FIELD_BASE(123, 123, 4, 0x0070, 0x10, 14, 6),
1607 + PIN_FIELD_BASE(124, 124, 4, 0x0070, 0x10, 2, 6),
1608 + PINS_FIELD_BASE(125, 130, 4, 0x0070, 0x10, 14, 6),
1609 + PIN_FIELD_BASE(131, 131, 4, 0x0070, 0x10, 20, 6),
1610 + PIN_FIELD_BASE(132, 132, 4, 0x0070, 0x10, 14, 6),
1611 + PIN_FIELD_BASE(133, 133, 4, 0x0070, 0x10, 26, 6),
1612 + PIN_FIELD_BASE(134, 134, 5, 0x0050, 0x10, 22, 2),
1613 + PIN_FIELD_BASE(135, 135, 5, 0x0050, 0x10, 30, 2),
1614 + PIN_FIELD_BASE(136, 136, 5, 0x0050, 0x10, 2, 2),
1615 + PIN_FIELD_BASE(137, 137, 5, 0x0050, 0x10, 14, 2),
1616 + PIN_FIELD_BASE(138, 138, 5, 0x0050, 0x10, 8, 2),
1617 + PIN_FIELD_BASE(139, 139, 5, 0x0050, 0x10, 10, 2),
1618 + PIN_FIELD_BASE(140, 140, 5, 0x0050, 0x10, 0, 2),
1619 + PIN_FIELD_BASE(141, 141, 5, 0x0050, 0x10, 12, 2),
1620 + PIN_FIELD_BASE(142, 142, 5, 0x0050, 0x10, 4, 2),
1621 + PIN_FIELD_BASE(143, 143, 5, 0x0050, 0x10, 6, 2),
1622 + PINS_FIELD_BASE(144, 147, 5, 0x0050, 0x10, 20, 2),
1623 + PINS_FIELD_BASE(148, 149, 5, 0x0050, 0x10, 24, 2),
1624 + PINS_FIELD_BASE(150, 151, 7, 0x00a0, 0x10, 18, 2),
1625 + PINS_FIELD_BASE(152, 153, 7, 0x00a0, 0x10, 20, 2),
1626 + PIN_FIELD_BASE(154, 154, 7, 0x00a0, 0x10, 22, 2),
1627 + PINS_FIELD_BASE(155, 158, 3, 0x0060, 0x10, 22, 2),
1628 + PIN_FIELD_BASE(159, 159, 7, 0x00a0, 0x10, 22, 2),
1629 + PIN_FIELD_BASE(160, 160, 5, 0x0050, 0x10, 16, 2),
1630 + PINS_FIELD_BASE(161, 162, 1, 0x0060, 0x10, 30, 2),
1631 + PINS_FIELD_BASE(163, 170, 4, 0x0070, 0x10, 0, 2),
1632 + PINS_FIELD_BASE(171, 179, 7, 0x00a0, 0x10, 10, 2),
1635 +static const struct mtk_pin_field_calc mt6765_pin_drv_range[] = {
1636 + PINS_FIELD_BASE(0, 2, 2, 0x0000, 0x10, 12, 3),
1637 + PIN_FIELD_BASE(3, 3, 2, 0x0000, 0x10, 15, 3),
1638 + PINS_FIELD_BASE(4, 6, 2, 0x0000, 0x10, 18, 3),
1639 + PIN_FIELD_BASE(7, 7, 2, 0x0000, 0x10, 21, 3),
1640 + PIN_FIELD_BASE(8, 8, 3, 0x0000, 0x10, 9, 3),
1641 + PINS_FIELD_BASE(9, 11, 2, 0x0000, 0x10, 24, 3),
1642 + PIN_FIELD_BASE(12, 12, 5, 0x0000, 0x10, 27, 3),
1643 + PINS_FIELD_BASE(13, 15, 6, 0x0010, 0x10, 3, 3),
1644 + PIN_FIELD_BASE(16, 16, 6, 0x0010, 0x10, 6, 3),
1645 + PIN_FIELD_BASE(17, 17, 6, 0x0000, 0x10, 23, 3),
1646 + PIN_FIELD_BASE(18, 18, 6, 0x0000, 0x10, 26, 3),
1647 + PINS_FIELD_BASE(19, 20, 6, 0x0000, 0x10, 23, 3),
1648 + PINS_FIELD_BASE(21, 23, 6, 0x0000, 0x10, 29, 3),
1649 + PIN_FIELD_BASE(24, 24, 6, 0x0010, 0x10, 0, 3),
1650 + PINS_FIELD_BASE(25, 27, 6, 0x0000, 0x10, 17, 3),
1651 + PIN_FIELD_BASE(28, 28, 6, 0x0000, 0x10, 20, 3),
1652 + PIN_FIELD_BASE(29, 29, 6, 0x0000, 0x10, 0, 3),
1653 + PIN_FIELD_BASE(30, 30, 6, 0x0000, 0x10, 3, 3),
1654 + PINS_FIELD_BASE(31, 34, 6, 0x0000, 0x10, 6, 3),
1655 + PINS_FIELD_BASE(35, 36, 6, 0x0000, 0x10, 13, 2),
1656 + PIN_FIELD_BASE(37, 37, 6, 0x0000, 0x10, 15, 2),
1657 + PIN_FIELD_BASE(38, 38, 6, 0x0000, 0x10, 11, 2),
1658 + PINS_FIELD_BASE(39, 40, 6, 0x0000, 0x10, 9, 2),
1659 + PINS_FIELD_BASE(41, 42, 7, 0x0000, 0x10, 21, 3),
1660 + PIN_FIELD_BASE(43, 43, 7, 0x0000, 0x10, 9, 3),
1661 + PIN_FIELD_BASE(44, 44, 7, 0x0000, 0x10, 12, 3),
1662 + PIN_FIELD_BASE(45, 45, 7, 0x0000, 0x10, 27, 3),
1663 + PINS_FIELD_BASE(46, 47, 7, 0x0000, 0x10, 24, 3),
1664 + PINS_FIELD_BASE(48, 49, 7, 0x0010, 0x10, 18, 3),
1665 + PINS_FIELD_BASE(50, 51, 7, 0x0010, 0x10, 15, 3),
1666 + PINS_FIELD_BASE(52, 57, 7, 0x0000, 0x10, 0, 3),
1667 + PINS_FIELD_BASE(58, 60, 7, 0x0010, 0x10, 9, 3),
1668 + PINS_FIELD_BASE(61, 62, 3, 0x0000, 0x10, 15, 3),
1669 + PINS_FIELD_BASE(63, 64, 3, 0x0000, 0x10, 12, 3),
1670 + PINS_FIELD_BASE(65, 66, 3, 0x0000, 0x10, 21, 3),
1671 + PINS_FIELD_BASE(67, 68, 3, 0x0000, 0x10, 18, 3),
1672 + PINS_FIELD_BASE(69, 73, 3, 0x0000, 0x10, 3, 3),
1673 + PINS_FIELD_BASE(74, 78, 3, 0x0000, 0x10, 6, 3),
1674 + PINS_FIELD_BASE(79, 80, 3, 0x0000, 0x10, 0, 3),
1675 + PIN_FIELD_BASE(81, 81, 3, 0x0010, 0x10, 0, 3),
1676 + PINS_FIELD_BASE(82, 83, 3, 0x0000, 0x10, 27, 3),
1677 + PIN_FIELD_BASE(84, 84, 3, 0x0010, 0x10, 0, 3),
1678 + PIN_FIELD_BASE(85, 85, 7, 0x0010, 0x10, 9, 3),
1679 + PIN_FIELD_BASE(86, 86, 7, 0x0010, 0x10, 12, 3),
1680 + PIN_FIELD_BASE(87, 87, 7, 0x0000, 0x10, 6, 3),
1681 + PIN_FIELD_BASE(88, 88, 7, 0x0000, 0x10, 3, 3),
1682 + PIN_FIELD_BASE(89, 89, 2, 0x0010, 0x10, 15, 3),
1683 + PIN_FIELD_BASE(90, 90, 3, 0x0000, 0x10, 24, 3),
1684 + PIN_FIELD_BASE(91, 91, 2, 0x0010, 0x10, 6, 3),
1685 + PIN_FIELD_BASE(92, 92, 2, 0x0010, 0x10, 3, 3),
1686 + PIN_FIELD_BASE(93, 93, 2, 0x0000, 0x10, 27, 3),
1687 + PIN_FIELD_BASE(94, 94, 2, 0x0010, 0x10, 0, 3),
1688 + PINS_FIELD_BASE(95, 96, 2, 0x0010, 0x10, 18, 3),
1689 + PINS_FIELD_BASE(97, 98, 2, 0x0000, 0x10, 6, 3),
1690 + PIN_FIELD_BASE(99, 99, 2, 0x0000, 0x10, 0, 3),
1691 + PIN_FIELD_BASE(100, 100, 2, 0x0000, 0x10, 3, 3),
1692 + PINS_FIELD_BASE(101, 102, 2, 0x0000, 0x10, 9, 3),
1693 + PINS_FIELD_BASE(103, 104, 2, 0x0010, 0x10, 9, 3),
1694 + PINS_FIELD_BASE(105, 106, 2, 0x0010, 0x10, 12, 3),
1695 + PIN_FIELD_BASE(107, 107, 1, 0x0000, 0x10, 12, 3),
1696 + PIN_FIELD_BASE(108, 108, 1, 0x0000, 0x10, 9, 3),
1697 + PIN_FIELD_BASE(109, 109, 1, 0x0000, 0x10, 15, 3),
1698 + PIN_FIELD_BASE(110, 110, 1, 0x0000, 0x10, 0, 3),
1699 + PIN_FIELD_BASE(111, 111, 1, 0x0000, 0x10, 3, 3),
1700 + PIN_FIELD_BASE(112, 112, 1, 0x0000, 0x10, 6, 3),
1701 + PIN_FIELD_BASE(113, 113, 1, 0x0000, 0x10, 27, 3),
1702 + PIN_FIELD_BASE(114, 114, 1, 0x0010, 0x10, 0, 3),
1703 + PIN_FIELD_BASE(115, 115, 1, 0x0000, 0x10, 18, 3),
1704 + PIN_FIELD_BASE(116, 116, 1, 0x0000, 0x10, 21, 3),
1705 + PIN_FIELD_BASE(117, 117, 1, 0x0010, 0x10, 6, 3),
1706 + PIN_FIELD_BASE(118, 118, 1, 0x0010, 0x10, 9, 3),
1707 + PIN_FIELD_BASE(119, 119, 1, 0x0010, 0x10, 12, 3),
1708 + PIN_FIELD_BASE(120, 120, 1, 0x0010, 0x10, 3, 3),
1709 + PIN_FIELD_BASE(121, 121, 1, 0x0000, 0x10, 24, 3),
1710 + PIN_FIELD_BASE(122, 122, 4, 0x0000, 0x10, 9, 3),
1711 + PIN_FIELD_BASE(123, 123, 4, 0x0000, 0x10, 12, 3),
1712 + PIN_FIELD_BASE(124, 124, 4, 0x0000, 0x10, 6, 3),
1713 + PINS_FIELD_BASE(125, 130, 4, 0x0000, 0x10, 12, 3),
1714 + PIN_FIELD_BASE(131, 131, 4, 0x0000, 0x10, 15, 3),
1715 + PIN_FIELD_BASE(132, 132, 4, 0x0000, 0x10, 12, 3),
1716 + PIN_FIELD_BASE(133, 133, 4, 0x0000, 0x10, 18, 3),
1717 + PIN_FIELD_BASE(134, 134, 5, 0x0010, 0x10, 6, 3),
1718 + PIN_FIELD_BASE(135, 135, 5, 0x0010, 0x10, 12, 3),
1719 + PIN_FIELD_BASE(136, 136, 5, 0x0000, 0x10, 3, 3),
1720 + PIN_FIELD_BASE(137, 137, 5, 0x0000, 0x10, 21, 3),
1721 + PIN_FIELD_BASE(138, 138, 5, 0x0000, 0x10, 12, 3),
1722 + PIN_FIELD_BASE(139, 139, 5, 0x0000, 0x10, 15, 3),
1723 + PIN_FIELD_BASE(140, 140, 5, 0x0000, 0x10, 0, 3),
1724 + PIN_FIELD_BASE(141, 141, 5, 0x0000, 0x10, 18, 3),
1725 + PIN_FIELD_BASE(142, 142, 5, 0x0000, 0x10, 6, 3),
1726 + PIN_FIELD_BASE(143, 143, 5, 0x0000, 0x10, 9, 3),
1727 + PINS_FIELD_BASE(144, 146, 5, 0x0010, 0x10, 0, 3),
1728 + PIN_FIELD_BASE(147, 147, 5, 0x0010, 0x10, 3, 3),
1729 + PINS_FIELD_BASE(148, 149, 5, 0x0010, 0x10, 9, 3),
1730 + PINS_FIELD_BASE(150, 151, 7, 0x0010, 0x10, 0, 3),
1731 + PINS_FIELD_BASE(152, 153, 7, 0x0010, 0x10, 3, 3),
1732 + PIN_FIELD_BASE(154, 154, 7, 0x0010, 0x10, 6, 3),
1733 + PINS_FIELD_BASE(155, 157, 3, 0x0010, 0x10, 3, 3),
1734 + PIN_FIELD_BASE(158, 158, 3, 0x0010, 0x10, 6, 3),
1735 + PIN_FIELD_BASE(159, 159, 7, 0x0010, 0x10, 6, 3),
1736 + PIN_FIELD_BASE(160, 160, 5, 0x0000, 0x10, 24, 3),
1737 + PINS_FIELD_BASE(161, 162, 1, 0x0010, 0x10, 15, 3),
1738 + PINS_FIELD_BASE(163, 166, 4, 0x0000, 0x10, 0, 3),
1739 + PINS_FIELD_BASE(167, 170, 4, 0x0000, 0x10, 3, 3),
1740 + PINS_FIELD_BASE(171, 174, 7, 0x0000, 0x10, 18, 3),
1741 + PINS_FIELD_BASE(175, 179, 7, 0x0000, 0x10, 15, 3),
1744 +static const struct mtk_pin_field_calc mt6765_pin_pupd_range[] = {
1745 + PINS_FIELD_BASE(0, 28, 0, 0x0050, 0x10, 18, 1),
1746 + PIN_FIELD_BASE(29, 29, 6, 0x0050, 0x10, 0, 1),
1747 + PIN_FIELD_BASE(30, 30, 6, 0x0050, 0x10, 1, 1),
1748 + PIN_FIELD_BASE(31, 31, 6, 0x0050, 0x10, 5, 1),
1749 + PIN_FIELD_BASE(32, 32, 6, 0x0050, 0x10, 2, 1),
1750 + PIN_FIELD_BASE(33, 33, 6, 0x0050, 0x10, 4, 1),
1751 + PIN_FIELD_BASE(34, 34, 6, 0x0050, 0x10, 3, 1),
1752 + PIN_FIELD_BASE(35, 35, 6, 0x0050, 0x10, 10, 1),
1753 + PIN_FIELD_BASE(36, 36, 6, 0x0050, 0x10, 11, 1),
1754 + PIN_FIELD_BASE(37, 37, 6, 0x0050, 0x10, 9, 1),
1755 + PIN_FIELD_BASE(38, 38, 6, 0x0050, 0x10, 6, 1),
1756 + PIN_FIELD_BASE(39, 39, 6, 0x0050, 0x10, 8, 1),
1757 + PINS_FIELD_BASE(40, 90, 6, 0x0050, 0x10, 7, 1),
1758 + PIN_FIELD_BASE(91, 91, 2, 0x0050, 0x10, 3, 1),
1759 + PIN_FIELD_BASE(92, 92, 2, 0x0050, 0x10, 2, 1),
1760 + PIN_FIELD_BASE(93, 93, 2, 0x0050, 0x10, 0, 1),
1761 + PINS_FIELD_BASE(94, 121, 2, 0x0050, 0x10, 1, 1),
1762 + PIN_FIELD_BASE(122, 122, 4, 0x0030, 0x10, 1, 1),
1763 + PIN_FIELD_BASE(123, 123, 4, 0x0030, 0x10, 2, 1),
1764 + PIN_FIELD_BASE(124, 124, 4, 0x0030, 0x10, 0, 1),
1765 + PIN_FIELD_BASE(125, 125, 4, 0x0030, 0x10, 4, 1),
1766 + PIN_FIELD_BASE(126, 126, 4, 0x0030, 0x10, 6, 1),
1767 + PIN_FIELD_BASE(127, 127, 4, 0x0030, 0x10, 8, 1),
1768 + PIN_FIELD_BASE(128, 128, 4, 0x0030, 0x10, 3, 1),
1769 + PIN_FIELD_BASE(129, 129, 4, 0x0030, 0x10, 7, 1),
1770 + PIN_FIELD_BASE(130, 130, 4, 0x0030, 0x10, 9, 1),
1771 + PIN_FIELD_BASE(131, 131, 4, 0x0030, 0x10, 10, 1),
1772 + PIN_FIELD_BASE(132, 132, 4, 0x0030, 0x10, 5, 1),
1773 + PINS_FIELD_BASE(133, 179, 4, 0x0030, 0x10, 11, 1),
1776 +static const struct mtk_pin_field_calc mt6765_pin_r0_range[] = {
1777 + PINS_FIELD_BASE(0, 28, 4, 0x0030, 0x10, 11, 1),
1778 + PIN_FIELD_BASE(29, 29, 6, 0x0070, 0x10, 0, 1),
1779 + PIN_FIELD_BASE(30, 30, 6, 0x0070, 0x10, 1, 1),
1780 + PIN_FIELD_BASE(31, 31, 6, 0x0070, 0x10, 5, 1),
1781 + PIN_FIELD_BASE(32, 32, 6, 0x0070, 0x10, 2, 1),
1782 + PIN_FIELD_BASE(33, 33, 6, 0x0070, 0x10, 4, 1),
1783 + PIN_FIELD_BASE(34, 34, 6, 0x0070, 0x10, 3, 1),
1784 + PIN_FIELD_BASE(35, 35, 6, 0x0070, 0x10, 10, 1),
1785 + PIN_FIELD_BASE(36, 36, 6, 0x0070, 0x10, 11, 1),
1786 + PIN_FIELD_BASE(37, 37, 6, 0x0070, 0x10, 9, 1),
1787 + PIN_FIELD_BASE(38, 38, 6, 0x0070, 0x10, 6, 1),
1788 + PIN_FIELD_BASE(39, 39, 6, 0x0070, 0x10, 8, 1),
1789 + PINS_FIELD_BASE(40, 90, 6, 0x0070, 0x10, 7, 1),
1790 + PIN_FIELD_BASE(91, 91, 2, 0x0070, 0x10, 3, 1),
1791 + PIN_FIELD_BASE(92, 92, 2, 0x0070, 0x10, 2, 1),
1792 + PIN_FIELD_BASE(93, 93, 2, 0x0070, 0x10, 0, 1),
1793 + PINS_FIELD_BASE(94, 121, 2, 0x0070, 0x10, 1, 1),
1794 + PIN_FIELD_BASE(122, 122, 4, 0x0050, 0x10, 1, 1),
1795 + PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 2, 1),
1796 + PIN_FIELD_BASE(124, 124, 4, 0x0050, 0x10, 0, 1),
1797 + PIN_FIELD_BASE(125, 125, 4, 0x0050, 0x10, 4, 1),
1798 + PIN_FIELD_BASE(126, 126, 4, 0x0050, 0x10, 6, 1),
1799 + PIN_FIELD_BASE(127, 127, 4, 0x0050, 0x10, 8, 1),
1800 + PIN_FIELD_BASE(128, 128, 4, 0x0050, 0x10, 3, 1),
1801 + PIN_FIELD_BASE(129, 129, 4, 0x0050, 0x10, 7, 1),
1802 + PIN_FIELD_BASE(130, 130, 4, 0x0050, 0x10, 9, 1),
1803 + PIN_FIELD_BASE(131, 131, 4, 0x0050, 0x10, 10, 1),
1804 + PIN_FIELD_BASE(132, 132, 4, 0x0050, 0x10, 5, 1),
1805 + PINS_FIELD_BASE(133, 179, 4, 0x0050, 0x10, 11, 1),
1808 +static const struct mtk_pin_field_calc mt6765_pin_r1_range[] = {
1809 + PINS_FIELD_BASE(0, 28, 4, 0x0050, 0x10, 11, 1),
1810 + PIN_FIELD_BASE(29, 29, 6, 0x0080, 0x10, 0, 1),
1811 + PIN_FIELD_BASE(30, 30, 6, 0x0080, 0x10, 1, 1),
1812 + PIN_FIELD_BASE(31, 31, 6, 0x0080, 0x10, 5, 1),
1813 + PIN_FIELD_BASE(32, 32, 6, 0x0080, 0x10, 2, 1),
1814 + PIN_FIELD_BASE(33, 33, 6, 0x0080, 0x10, 4, 1),
1815 + PIN_FIELD_BASE(34, 34, 6, 0x0080, 0x10, 3, 1),
1816 + PIN_FIELD_BASE(35, 35, 6, 0x0080, 0x10, 10, 1),
1817 + PIN_FIELD_BASE(36, 36, 6, 0x0080, 0x10, 11, 1),
1818 + PIN_FIELD_BASE(37, 37, 6, 0x0080, 0x10, 9, 1),
1819 + PIN_FIELD_BASE(38, 38, 6, 0x0080, 0x10, 6, 1),
1820 + PIN_FIELD_BASE(39, 39, 6, 0x0080, 0x10, 8, 1),
1821 + PINS_FIELD_BASE(40, 90, 6, 0x0080, 0x10, 7, 1),
1822 + PIN_FIELD_BASE(91, 91, 2, 0x0080, 0x10, 3, 1),
1823 + PIN_FIELD_BASE(92, 92, 2, 0x0080, 0x10, 2, 1),
1824 + PIN_FIELD_BASE(93, 93, 2, 0x0080, 0x10, 0, 1),
1825 + PINS_FIELD_BASE(94, 121, 2, 0x0080, 0x10, 1, 1),
1826 + PIN_FIELD_BASE(122, 122, 4, 0x0060, 0x10, 1, 1),
1827 + PIN_FIELD_BASE(123, 123, 4, 0x0060, 0x10, 2, 1),
1828 + PIN_FIELD_BASE(124, 124, 4, 0x0060, 0x10, 0, 1),
1829 + PIN_FIELD_BASE(125, 125, 4, 0x0060, 0x10, 4, 1),
1830 + PIN_FIELD_BASE(126, 126, 4, 0x0060, 0x10, 6, 1),
1831 + PIN_FIELD_BASE(127, 127, 4, 0x0060, 0x10, 8, 1),
1832 + PIN_FIELD_BASE(128, 128, 4, 0x0060, 0x10, 3, 1),
1833 + PIN_FIELD_BASE(129, 129, 4, 0x0060, 0x10, 7, 1),
1834 + PIN_FIELD_BASE(130, 130, 4, 0x0060, 0x10, 9, 1),
1835 + PIN_FIELD_BASE(131, 131, 4, 0x0060, 0x10, 10, 1),
1836 + PIN_FIELD_BASE(132, 132, 4, 0x0060, 0x10, 5, 1),
1837 + PINS_FIELD_BASE(133, 179, 4, 0x0060, 0x10, 11, 1),
1840 +static const struct mtk_pin_field_calc mt6765_pin_ies_range[] = {
1841 + PIN_FIELD_BASE(0, 0, 2, 0x0030, 0x10, 6, 1),
1842 + PIN_FIELD_BASE(1, 1, 2, 0x0030, 0x10, 7, 1),
1843 + PIN_FIELD_BASE(2, 2, 2, 0x0030, 0x10, 10, 1),
1844 + PIN_FIELD_BASE(3, 3, 2, 0x0030, 0x10, 11, 1),
1845 + PIN_FIELD_BASE(4, 4, 2, 0x0030, 0x10, 12, 1),
1846 + PIN_FIELD_BASE(5, 5, 2, 0x0030, 0x10, 13, 1),
1847 + PIN_FIELD_BASE(6, 6, 2, 0x0030, 0x10, 14, 1),
1848 + PIN_FIELD_BASE(7, 7, 2, 0x0030, 0x10, 15, 1),
1849 + PIN_FIELD_BASE(8, 8, 3, 0x0030, 0x10, 12, 1),
1850 + PIN_FIELD_BASE(9, 9, 2, 0x0030, 0x10, 16, 1),
1851 + PIN_FIELD_BASE(10, 10, 2, 0x0030, 0x10, 8, 1),
1852 + PIN_FIELD_BASE(11, 11, 2, 0x0030, 0x10, 9, 1),
1853 + PIN_FIELD_BASE(12, 12, 5, 0x0020, 0x10, 9, 1),
1854 + PIN_FIELD_BASE(13, 13, 6, 0x0020, 0x10, 26, 1),
1855 + PIN_FIELD_BASE(14, 14, 6, 0x0020, 0x10, 25, 1),
1856 + PIN_FIELD_BASE(15, 15, 6, 0x0020, 0x10, 27, 1),
1857 + PIN_FIELD_BASE(16, 16, 6, 0x0020, 0x10, 24, 1),
1858 + PIN_FIELD_BASE(17, 17, 6, 0x0020, 0x10, 19, 1),
1859 + PIN_FIELD_BASE(18, 18, 6, 0x0020, 0x10, 16, 1),
1860 + PIN_FIELD_BASE(19, 19, 6, 0x0020, 0x10, 18, 1),
1861 + PIN_FIELD_BASE(20, 20, 6, 0x0020, 0x10, 17, 1),
1862 + PIN_FIELD_BASE(21, 21, 6, 0x0020, 0x10, 22, 1),
1863 + PIN_FIELD_BASE(22, 22, 6, 0x0020, 0x10, 21, 1),
1864 + PIN_FIELD_BASE(23, 23, 6, 0x0020, 0x10, 23, 1),
1865 + PIN_FIELD_BASE(24, 24, 6, 0x0020, 0x10, 20, 1),
1866 + PIN_FIELD_BASE(25, 25, 6, 0x0020, 0x10, 14, 1),
1867 + PIN_FIELD_BASE(26, 26, 6, 0x0020, 0x10, 13, 1),
1868 + PIN_FIELD_BASE(27, 27, 6, 0x0020, 0x10, 15, 1),
1869 + PIN_FIELD_BASE(28, 28, 6, 0x0020, 0x10, 12, 1),
1870 + PIN_FIELD_BASE(29, 29, 6, 0x0020, 0x10, 0, 1),
1871 + PIN_FIELD_BASE(30, 30, 6, 0x0020, 0x10, 1, 1),
1872 + PIN_FIELD_BASE(31, 31, 6, 0x0020, 0x10, 5, 1),
1873 + PIN_FIELD_BASE(32, 32, 6, 0x0020, 0x10, 2, 1),
1874 + PIN_FIELD_BASE(33, 33, 6, 0x0020, 0x10, 4, 1),
1875 + PIN_FIELD_BASE(34, 34, 6, 0x0020, 0x10, 3, 1),
1876 + PIN_FIELD_BASE(35, 35, 6, 0x0020, 0x10, 10, 1),
1877 + PIN_FIELD_BASE(36, 36, 6, 0x0020, 0x10, 11, 1),
1878 + PIN_FIELD_BASE(37, 37, 6, 0x0020, 0x10, 9, 1),
1879 + PIN_FIELD_BASE(38, 38, 6, 0x0020, 0x10, 6, 1),
1880 + PIN_FIELD_BASE(39, 39, 6, 0x0020, 0x10, 8, 1),
1881 + PIN_FIELD_BASE(40, 40, 6, 0x0020, 0x10, 7, 1),
1882 + PIN_FIELD_BASE(41, 41, 7, 0x0040, 0x10, 19, 1),
1883 + PIN_FIELD_BASE(42, 42, 7, 0x0040, 0x10, 9, 1),
1884 + PIN_FIELD_BASE(43, 43, 7, 0x0040, 0x10, 8, 1),
1885 + PIN_FIELD_BASE(44, 44, 7, 0x0040, 0x10, 10, 1),
1886 + PIN_FIELD_BASE(45, 45, 7, 0x0040, 0x10, 22, 1),
1887 + PIN_FIELD_BASE(46, 46, 7, 0x0040, 0x10, 21, 1),
1888 + PIN_FIELD_BASE(47, 47, 7, 0x0040, 0x10, 20, 1),
1889 + PIN_FIELD_BASE(48, 48, 7, 0x0050, 0x10, 3, 1),
1890 + PIN_FIELD_BASE(49, 49, 7, 0x0050, 0x10, 5, 1),
1891 + PIN_FIELD_BASE(50, 50, 7, 0x0050, 0x10, 2, 1),
1892 + PIN_FIELD_BASE(51, 51, 7, 0x0050, 0x10, 4, 1),
1893 + PIN_FIELD_BASE(52, 52, 7, 0x0040, 0x10, 1, 1),
1894 + PIN_FIELD_BASE(53, 53, 7, 0x0040, 0x10, 0, 1),
1895 + PIN_FIELD_BASE(54, 54, 7, 0x0040, 0x10, 5, 1),
1896 + PIN_FIELD_BASE(55, 55, 7, 0x0040, 0x10, 3, 1),
1897 + PIN_FIELD_BASE(56, 56, 7, 0x0040, 0x10, 4, 1),
1898 + PIN_FIELD_BASE(57, 57, 7, 0x0040, 0x10, 2, 1),
1899 + PIN_FIELD_BASE(58, 58, 7, 0x0050, 0x10, 0, 1),
1900 + PIN_FIELD_BASE(59, 59, 7, 0x0040, 0x10, 31, 1),
1901 + PIN_FIELD_BASE(60, 60, 7, 0x0040, 0x10, 30, 1),
1902 + PIN_FIELD_BASE(61, 61, 3, 0x0030, 0x10, 18, 1),
1903 + PIN_FIELD_BASE(62, 62, 3, 0x0030, 0x10, 14, 1),
1904 + PIN_FIELD_BASE(63, 63, 3, 0x0030, 0x10, 17, 1),
1905 + PIN_FIELD_BASE(64, 64, 3, 0x0030, 0x10, 13, 1),
1906 + PIN_FIELD_BASE(65, 65, 3, 0x0030, 0x10, 20, 1),
1907 + PIN_FIELD_BASE(66, 66, 3, 0x0030, 0x10, 16, 1),
1908 + PIN_FIELD_BASE(67, 67, 3, 0x0030, 0x10, 19, 1),
1909 + PIN_FIELD_BASE(68, 68, 3, 0x0030, 0x10, 15, 1),
1910 + PIN_FIELD_BASE(69, 69, 3, 0x0030, 0x10, 8, 1),
1911 + PIN_FIELD_BASE(70, 70, 3, 0x0030, 0x10, 7, 1),
1912 + PIN_FIELD_BASE(71, 71, 3, 0x0030, 0x10, 6, 1),
1913 + PIN_FIELD_BASE(72, 72, 3, 0x0030, 0x10, 5, 1),
1914 + PIN_FIELD_BASE(73, 73, 3, 0x0030, 0x10, 4, 1),
1915 + PIN_FIELD_BASE(74, 74, 3, 0x0030, 0x10, 3, 1),
1916 + PIN_FIELD_BASE(75, 75, 3, 0x0030, 0x10, 2, 1),
1917 + PIN_FIELD_BASE(76, 76, 3, 0x0030, 0x10, 1, 1),
1918 + PIN_FIELD_BASE(77, 77, 3, 0x0030, 0x10, 0, 1),
1919 + PIN_FIELD_BASE(78, 78, 3, 0x0030, 0x10, 9, 1),
1920 + PIN_FIELD_BASE(79, 79, 3, 0x0030, 0x10, 11, 1),
1921 + PIN_FIELD_BASE(80, 80, 3, 0x0030, 0x10, 10, 1),
1922 + PIN_FIELD_BASE(81, 81, 3, 0x0030, 0x10, 25, 1),
1923 + PIN_FIELD_BASE(82, 82, 3, 0x0030, 0x10, 24, 1),
1924 + PIN_FIELD_BASE(83, 83, 3, 0x0030, 0x10, 22, 1),
1925 + PIN_FIELD_BASE(84, 84, 3, 0x0030, 0x10, 23, 1),
1926 + PIN_FIELD_BASE(85, 85, 7, 0x0050, 0x10, 1, 1),
1927 + PIN_FIELD_BASE(86, 86, 7, 0x0040, 0x10, 29, 1),
1928 + PIN_FIELD_BASE(87, 87, 7, 0x0040, 0x10, 7, 1),
1929 + PIN_FIELD_BASE(88, 88, 7, 0x0040, 0x10, 6, 1),
1930 + PIN_FIELD_BASE(89, 89, 2, 0x0030, 0x10, 25, 1),
1931 + PIN_FIELD_BASE(90, 90, 3, 0x0030, 0x10, 21, 1),
1932 + PIN_FIELD_BASE(91, 91, 2, 0x0030, 0x10, 20, 1),
1933 + PIN_FIELD_BASE(92, 92, 2, 0x0030, 0x10, 19, 1),
1934 + PIN_FIELD_BASE(93, 93, 2, 0x0030, 0x10, 17, 1),
1935 + PIN_FIELD_BASE(94, 94, 2, 0x0030, 0x10, 18, 1),
1936 + PIN_FIELD_BASE(95, 95, 2, 0x0030, 0x10, 26, 1),
1937 + PIN_FIELD_BASE(96, 96, 2, 0x0030, 0x10, 27, 1),
1938 + PIN_FIELD_BASE(97, 97, 2, 0x0030, 0x10, 2, 1),
1939 + PIN_FIELD_BASE(98, 98, 2, 0x0030, 0x10, 3, 1),
1940 + PIN_FIELD_BASE(99, 99, 2, 0x0030, 0x10, 0, 1),
1941 + PIN_FIELD_BASE(100, 100, 2, 0x0030, 0x10, 1, 1),
1942 + PIN_FIELD_BASE(101, 101, 2, 0x0030, 0x10, 4, 1),
1943 + PIN_FIELD_BASE(102, 102, 2, 0x0030, 0x10, 5, 1),
1944 + PIN_FIELD_BASE(103, 103, 2, 0x0030, 0x10, 21, 1),
1945 + PIN_FIELD_BASE(104, 104, 2, 0x0030, 0x10, 23, 1),
1946 + PIN_FIELD_BASE(105, 105, 2, 0x0030, 0x10, 22, 1),
1947 + PIN_FIELD_BASE(106, 106, 2, 0x0030, 0x10, 24, 1),
1948 + PIN_FIELD_BASE(107, 107, 1, 0x0030, 0x10, 4, 1),
1949 + PIN_FIELD_BASE(108, 108, 1, 0x0030, 0x10, 3, 1),
1950 + PIN_FIELD_BASE(109, 109, 1, 0x0030, 0x10, 5, 1),
1951 + PIN_FIELD_BASE(110, 110, 1, 0x0030, 0x10, 0, 1),
1952 + PIN_FIELD_BASE(111, 111, 1, 0x0030, 0x10, 1, 1),
1953 + PIN_FIELD_BASE(112, 112, 1, 0x0030, 0x10, 2, 1),
1954 + PIN_FIELD_BASE(113, 113, 1, 0x0030, 0x10, 9, 1),
1955 + PIN_FIELD_BASE(114, 114, 1, 0x0030, 0x10, 10, 1),
1956 + PIN_FIELD_BASE(115, 115, 1, 0x0030, 0x10, 6, 1),
1957 + PIN_FIELD_BASE(116, 116, 1, 0x0030, 0x10, 7, 1),
1958 + PIN_FIELD_BASE(117, 117, 1, 0x0030, 0x10, 12, 1),
1959 + PIN_FIELD_BASE(118, 118, 1, 0x0030, 0x10, 13, 1),
1960 + PIN_FIELD_BASE(119, 119, 1, 0x0030, 0x10, 14, 1),
1961 + PIN_FIELD_BASE(120, 120, 1, 0x0030, 0x10, 11, 1),
1962 + PIN_FIELD_BASE(121, 121, 1, 0x0030, 0x10, 8, 1),
1963 + PIN_FIELD_BASE(122, 122, 4, 0x0010, 0x10, 9, 1),
1964 + PIN_FIELD_BASE(123, 123, 4, 0x0010, 0x10, 10, 1),
1965 + PIN_FIELD_BASE(124, 124, 4, 0x0010, 0x10, 8, 1),
1966 + PIN_FIELD_BASE(125, 125, 4, 0x0010, 0x10, 12, 1),
1967 + PIN_FIELD_BASE(126, 126, 4, 0x0010, 0x10, 14, 1),
1968 + PIN_FIELD_BASE(127, 127, 4, 0x0010, 0x10, 16, 1),
1969 + PIN_FIELD_BASE(128, 128, 4, 0x0010, 0x10, 11, 1),
1970 + PIN_FIELD_BASE(129, 129, 4, 0x0010, 0x10, 15, 1),
1971 + PIN_FIELD_BASE(130, 130, 4, 0x0010, 0x10, 17, 1),
1972 + PIN_FIELD_BASE(131, 131, 4, 0x0010, 0x10, 18, 1),
1973 + PIN_FIELD_BASE(132, 132, 4, 0x0010, 0x10, 13, 1),
1974 + PIN_FIELD_BASE(133, 133, 4, 0x0010, 0x10, 19, 1),
1975 + PIN_FIELD_BASE(134, 134, 5, 0x0020, 0x10, 14, 1),
1976 + PIN_FIELD_BASE(135, 135, 5, 0x0020, 0x10, 17, 1),
1977 + PIN_FIELD_BASE(136, 136, 5, 0x0020, 0x10, 1, 1),
1978 + PIN_FIELD_BASE(137, 137, 5, 0x0020, 0x10, 7, 1),
1979 + PIN_FIELD_BASE(138, 138, 5, 0x0020, 0x10, 4, 1),
1980 + PIN_FIELD_BASE(139, 139, 5, 0x0020, 0x10, 5, 1),
1981 + PIN_FIELD_BASE(140, 140, 5, 0x0020, 0x10, 0, 1),
1982 + PIN_FIELD_BASE(141, 141, 5, 0x0020, 0x10, 6, 1),
1983 + PIN_FIELD_BASE(142, 142, 5, 0x0020, 0x10, 2, 1),
1984 + PIN_FIELD_BASE(143, 143, 5, 0x0020, 0x10, 3, 1),
1985 + PIN_FIELD_BASE(144, 144, 5, 0x0020, 0x10, 12, 1),
1986 + PIN_FIELD_BASE(145, 145, 5, 0x0020, 0x10, 11, 1),
1987 + PIN_FIELD_BASE(146, 146, 5, 0x0020, 0x10, 13, 1),
1988 + PIN_FIELD_BASE(147, 147, 5, 0x0020, 0x10, 10, 1),
1989 + PIN_FIELD_BASE(148, 148, 5, 0x0020, 0x10, 15, 1),
1990 + PIN_FIELD_BASE(149, 149, 5, 0x0020, 0x10, 16, 1),
1991 + PIN_FIELD_BASE(150, 150, 7, 0x0040, 0x10, 23, 1),
1992 + PIN_FIELD_BASE(151, 151, 7, 0x0040, 0x10, 24, 1),
1993 + PIN_FIELD_BASE(152, 152, 7, 0x0040, 0x10, 25, 1),
1994 + PIN_FIELD_BASE(153, 153, 7, 0x0040, 0x10, 26, 1),
1995 + PIN_FIELD_BASE(154, 154, 7, 0x0040, 0x10, 28, 1),
1996 + PIN_FIELD_BASE(155, 155, 3, 0x0030, 0x10, 28, 1),
1997 + PIN_FIELD_BASE(156, 156, 3, 0x0030, 0x10, 27, 1),
1998 + PIN_FIELD_BASE(157, 157, 3, 0x0030, 0x10, 29, 1),
1999 + PIN_FIELD_BASE(158, 158, 3, 0x0030, 0x10, 26, 1),
2000 + PIN_FIELD_BASE(159, 159, 7, 0x0040, 0x10, 27, 1),
2001 + PIN_FIELD_BASE(160, 160, 5, 0x0020, 0x10, 8, 1),
2002 + PIN_FIELD_BASE(161, 161, 1, 0x0030, 0x10, 15, 1),
2003 + PIN_FIELD_BASE(162, 162, 1, 0x0030, 0x10, 16, 1),
2004 + PIN_FIELD_BASE(163, 163, 4, 0x0010, 0x10, 0, 1),
2005 + PIN_FIELD_BASE(164, 164, 4, 0x0010, 0x10, 1, 1),
2006 + PIN_FIELD_BASE(165, 165, 4, 0x0010, 0x10, 2, 1),
2007 + PIN_FIELD_BASE(166, 166, 4, 0x0010, 0x10, 3, 1),
2008 + PIN_FIELD_BASE(167, 167, 4, 0x0010, 0x10, 4, 1),
2009 + PIN_FIELD_BASE(168, 168, 4, 0x0010, 0x10, 5, 1),
2010 + PIN_FIELD_BASE(169, 169, 4, 0x0010, 0x10, 6, 1),
2011 + PIN_FIELD_BASE(170, 170, 4, 0x0010, 0x10, 7, 1),
2012 + PIN_FIELD_BASE(171, 171, 7, 0x0040, 0x10, 17, 1),
2013 + PIN_FIELD_BASE(172, 172, 7, 0x0040, 0x10, 18, 1),
2014 + PIN_FIELD_BASE(173, 173, 7, 0x0040, 0x10, 11, 1),
2015 + PIN_FIELD_BASE(174, 174, 7, 0x0040, 0x10, 12, 1),
2016 + PIN_FIELD_BASE(175, 175, 7, 0x0040, 0x10, 13, 1),
2017 + PIN_FIELD_BASE(176, 176, 7, 0x0040, 0x10, 14, 1),
2018 + PIN_FIELD_BASE(177, 177, 7, 0x0040, 0x10, 15, 1),
2019 + PINS_FIELD_BASE(178, 179, 7, 0x0040, 0x10, 16, 1),
2022 +static const struct mtk_pin_reg_calc mt6765_reg_cals[PINCTRL_PIN_REG_MAX] = {
2023 + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6765_pin_mode_range),
2024 + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6765_pin_dir_range),
2025 + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6765_pin_di_range),
2026 + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6765_pin_do_range),
2027 + [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt6765_pin_smt_range),
2028 + [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt6765_pin_pd_range),
2029 + [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt6765_pin_pu_range),
2030 + [PINCTRL_PIN_REG_TDSEL] = MTK_RANGE(mt6765_pin_tdsel_range),
2031 + [PINCTRL_PIN_REG_RDSEL] = MTK_RANGE(mt6765_pin_rdsel_range),
2032 + [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt6765_pin_drv_range),
2033 + [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt6765_pin_pupd_range),
2034 + [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt6765_pin_r0_range),
2035 + [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt6765_pin_r1_range),
2036 + [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt6765_pin_ies_range),
2039 +static const char * const mt6765_pinctrl_register_base_names[] = {
2040 + "iocfg0", "iocfg1", "iocfg2", "iocfg3", "iocfg4", "iocfg5",
2041 + "iocfg6", "iocfg7",
2044 +static const struct mtk_eint_hw mt6765_eint_hw = {
2051 +static const struct mtk_pin_soc mt6765_data = {
2052 + .reg_cal = mt6765_reg_cals,
2053 + .pins = mtk_pins_mt6765,
2054 + .npins = ARRAY_SIZE(mtk_pins_mt6765),
2055 + .ngrps = ARRAY_SIZE(mtk_pins_mt6765),
2056 + .eint_hw = &mt6765_eint_hw,
2058 + .ies_present = true,
2059 + .base_names = mt6765_pinctrl_register_base_names,
2060 + .nbase_names = ARRAY_SIZE(mt6765_pinctrl_register_base_names),
2061 + .bias_disable_set = mtk_pinconf_bias_disable_set,
2062 + .bias_disable_get = mtk_pinconf_bias_disable_get,
2063 + .bias_set = mtk_pinconf_bias_set,
2064 + .bias_get = mtk_pinconf_bias_get,
2065 + .drive_set = mtk_pinconf_drive_set_rev1,
2066 + .drive_get = mtk_pinconf_drive_get_rev1,
2067 + .adv_pull_get = mtk_pinconf_adv_pull_get,
2068 + .adv_pull_set = mtk_pinconf_adv_pull_set,
2071 +static const struct of_device_id mt6765_pinctrl_of_match[] = {
2072 + { .compatible = "mediatek,mt6765-pinctrl", },
2076 +static int mt6765_pinctrl_probe(struct platform_device *pdev)
2078 + return mtk_paris_pinctrl_probe(pdev, &mt6765_data);
2081 +static struct platform_driver mt6765_pinctrl_driver = {
2083 + .name = "mt6765-pinctrl",
2084 + .of_match_table = mt6765_pinctrl_of_match,
2086 + .probe = mt6765_pinctrl_probe,
2089 +static int __init mt6765_pinctrl_init(void)
2091 + return platform_driver_register(&mt6765_pinctrl_driver);
2093 +arch_initcall(mt6765_pinctrl_init);
2094 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6797.c b/drivers/pinctrl/mediatek/pinctrl-mt6797.c
2095 new file mode 100644
2096 index 000000000000..adebe4333ed9
2098 +++ b/drivers/pinctrl/mediatek/pinctrl-mt6797.c
2100 +// SPDX-License-Identifier: GPL-2.0
2102 + * Based on pinctrl-mt6765.c
2104 + * Copyright (C) 2018 MediaTek Inc.
2106 + * Author: ZH Chen <zh.chen@mediatek.com>
2108 + * Copyright (C) Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2112 +#include "pinctrl-mtk-mt6797.h"
2113 +#include "pinctrl-paris.h"
2116 + * MT6797 have multiple bases to program pin configuration listed as the below:
2117 + * gpio:0x10005000, iocfg[l]:0x10002000, iocfg[b]:0x10002400,
2118 + * iocfg[r]:0x10002800, iocfg[t]:0x10002C00.
2119 + * _i_base could be used to indicate what base the pin should be mapped into.
2122 +static const struct mtk_pin_field_calc mt6797_pin_mode_range[] = {
2123 + PIN_FIELD(0, 261, 0x300, 0x10, 0, 4),
2126 +static const struct mtk_pin_field_calc mt6797_pin_dir_range[] = {
2127 + PIN_FIELD(0, 261, 0x0, 0x10, 0, 1),
2130 +static const struct mtk_pin_field_calc mt6797_pin_di_range[] = {
2131 + PIN_FIELD(0, 261, 0x200, 0x10, 0, 1),
2134 +static const struct mtk_pin_field_calc mt6797_pin_do_range[] = {
2135 + PIN_FIELD(0, 261, 0x100, 0x10, 0, 1),
2138 +static const struct mtk_pin_reg_calc mt6797_reg_cals[PINCTRL_PIN_REG_MAX] = {
2139 + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6797_pin_mode_range),
2140 + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6797_pin_dir_range),
2141 + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6797_pin_di_range),
2142 + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6797_pin_do_range),
2145 +static const char * const mt6797_pinctrl_register_base_names[] = {
2146 + "gpio", "iocfgl", "iocfgb", "iocfgr", "iocfgt",
2149 +static const struct mtk_pin_soc mt6797_data = {
2150 + .reg_cal = mt6797_reg_cals,
2151 + .pins = mtk_pins_mt6797,
2152 + .npins = ARRAY_SIZE(mtk_pins_mt6797),
2153 + .ngrps = ARRAY_SIZE(mtk_pins_mt6797),
2155 + .base_names = mt6797_pinctrl_register_base_names,
2156 + .nbase_names = ARRAY_SIZE(mt6797_pinctrl_register_base_names),
2159 +static const struct of_device_id mt6797_pinctrl_of_match[] = {
2160 + { .compatible = "mediatek,mt6797-pinctrl", },
2164 +static int mt6797_pinctrl_probe(struct platform_device *pdev)
2166 + return mtk_paris_pinctrl_probe(pdev, &mt6797_data);
2169 +static struct platform_driver mt6797_pinctrl_driver = {
2171 + .name = "mt6797-pinctrl",
2172 + .of_match_table = mt6797_pinctrl_of_match,
2174 + .probe = mt6797_pinctrl_probe,
2177 +static int __init mt6797_pinctrl_init(void)
2179 + return platform_driver_register(&mt6797_pinctrl_driver);
2181 +arch_initcall(mt6797_pinctrl_init);
2182 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt7622.c b/drivers/pinctrl/mediatek/pinctrl-mt7622.c
2183 index 6f931b85701b..ce4a8a0cc19c 100644
2184 --- a/drivers/pinctrl/mediatek/pinctrl-mt7622.c
2185 +++ b/drivers/pinctrl/mediatek/pinctrl-mt7622.c
2187 +// SPDX-License-Identifier: GPL-2.0
2189 - * MediaTek MT7622 Pinctrl Driver
2190 + * Copyright (C) 2017-2018 MediaTek Inc.
2192 - * Copyright (C) 2017 Sean Wang <sean.wang@mediatek.com>
2193 + * Author: Sean Wang <sean.wang@mediatek.com>
2195 - * This program is free software; you can redistribute it and/or modify
2196 - * it under the terms of the GNU General Public License version 2 as
2197 - * published by the Free Software Foundation.
2199 - * This program is distributed in the hope that it will be useful,
2200 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
2201 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2202 - * GNU General Public License for more details.
2205 -#include <linux/gpio.h>
2206 -#include <linux/gpio/driver.h>
2207 -#include <linux/io.h>
2208 -#include <linux/init.h>
2209 -#include <linux/mfd/syscon.h>
2210 -#include <linux/of.h>
2211 -#include <linux/of_irq.h>
2212 -#include <linux/of_platform.h>
2213 -#include <linux/platform_device.h>
2214 -#include <linux/pinctrl/pinctrl.h>
2215 -#include <linux/pinctrl/pinmux.h>
2216 -#include <linux/pinctrl/pinconf.h>
2217 -#include <linux/pinctrl/pinconf-generic.h>
2218 -#include <linux/regmap.h>
2220 -#include "../core.h"
2221 -#include "../pinconf.h"
2222 -#include "../pinmux.h"
2223 -#include "mtk-eint.h"
2225 -#define PINCTRL_PINCTRL_DEV KBUILD_MODNAME
2226 -#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), }
2227 -#define PINCTRL_PIN_GROUP(name, id) \
2231 - ARRAY_SIZE(id##_pins), \
2235 -#define MTK_GPIO_MODE 1
2236 -#define MTK_INPUT 0
2237 -#define MTK_OUTPUT 1
2238 -#define MTK_DISABLE 0
2239 -#define MTK_ENABLE 1
2241 -/* Custom pinconf parameters */
2242 -#define MTK_PIN_CONFIG_TDSEL (PIN_CONFIG_END + 1)
2243 -#define MTK_PIN_CONFIG_RDSEL (PIN_CONFIG_END + 2)
2245 -/* List these attributes which could be modified for the pin */
2247 - PINCTRL_PIN_REG_MODE,
2248 - PINCTRL_PIN_REG_DIR,
2249 - PINCTRL_PIN_REG_DI,
2250 - PINCTRL_PIN_REG_DO,
2251 - PINCTRL_PIN_REG_SR,
2252 - PINCTRL_PIN_REG_SMT,
2253 - PINCTRL_PIN_REG_PD,
2254 - PINCTRL_PIN_REG_PU,
2255 - PINCTRL_PIN_REG_E4,
2256 - PINCTRL_PIN_REG_E8,
2257 - PINCTRL_PIN_REG_TDSEL,
2258 - PINCTRL_PIN_REG_RDSEL,
2259 - PINCTRL_PIN_REG_MAX,
2262 -/* struct mtk_pin_field - the structure that holds the information of the field
2263 - * used to describe the attribute for the pin
2264 - * @offset: the register offset relative to the base address
2265 - * @mask: the mask used to filter out the field from the register
2266 - * @bitpos: the start bit relative to the register
2267 - * @next: the indication that the field would be extended to the
2270 -struct mtk_pin_field {
2277 -/* struct mtk_pin_field_calc - the structure that holds the range providing
2278 - * the guide used to look up the relevant field
2279 - * @s_pin: the start pin within the range
2280 - * @e_pin: the end pin within the range
2281 - * @s_addr: the start address for the range
2282 - * @x_addrs: the address distance between two consecutive registers
2283 - * within the range
2284 - * @s_bit: the start bit for the first register within the range
2285 - * @x_bits: the bit distance between two consecutive pins within
2288 -struct mtk_pin_field_calc {
2296 +#include "pinctrl-moore.h"
2298 -/* struct mtk_pin_reg_calc - the structure that holds all ranges used to
2299 - * determine which register the pin would make use of
2300 - * for certain pin attribute.
2301 - * @range: the start address for the range
2302 - * @nranges: the number of items in the range
2304 -struct mtk_pin_reg_calc {
2305 - const struct mtk_pin_field_calc *range;
2306 - unsigned int nranges;
2309 -/* struct mtk_pin_soc - the structure that holds SoC-specific data */
2310 -struct mtk_pin_soc {
2311 - const struct mtk_pin_reg_calc *reg_cal;
2312 - const struct pinctrl_pin_desc *pins;
2313 - unsigned int npins;
2314 - const struct group_desc *grps;
2315 - unsigned int ngrps;
2316 - const struct function_desc *funcs;
2317 - unsigned int nfuncs;
2318 - const struct mtk_eint_regs *eint_regs;
2319 - const struct mtk_eint_hw *eint_hw;
2322 -struct mtk_pinctrl {
2323 - struct pinctrl_dev *pctrl;
2324 - void __iomem *base;
2325 - struct device *dev;
2326 - struct gpio_chip chip;
2327 - const struct mtk_pin_soc *soc;
2328 - struct mtk_eint *eint;
2330 +#define MT7622_PIN(_number, _name) \
2331 + MTK_PIN(_number, _name, 1, _number, DRV_GRP0)
2333 static const struct mtk_pin_field_calc mt7622_pin_mode_range[] = {
2334 - {0, 0, 0x320, 0x10, 16, 4},
2335 - {1, 4, 0x3a0, 0x10, 16, 4},
2336 - {5, 5, 0x320, 0x10, 0, 4},
2337 - {6, 6, 0x300, 0x10, 4, 4},
2338 - {7, 7, 0x300, 0x10, 4, 4},
2339 - {8, 9, 0x350, 0x10, 20, 4},
2340 - {10, 10, 0x300, 0x10, 8, 4},
2341 - {11, 11, 0x300, 0x10, 8, 4},
2342 - {12, 12, 0x300, 0x10, 8, 4},
2343 - {13, 13, 0x300, 0x10, 8, 4},
2344 - {14, 15, 0x320, 0x10, 4, 4},
2345 - {16, 17, 0x320, 0x10, 20, 4},
2346 - {18, 21, 0x310, 0x10, 16, 4},
2347 - {22, 22, 0x380, 0x10, 16, 4},
2348 - {23, 23, 0x300, 0x10, 24, 4},
2349 - {24, 24, 0x300, 0x10, 24, 4},
2350 - {25, 25, 0x300, 0x10, 12, 4},
2351 - {25, 25, 0x300, 0x10, 12, 4},
2352 - {26, 26, 0x300, 0x10, 12, 4},
2353 - {27, 27, 0x300, 0x10, 12, 4},
2354 - {28, 28, 0x300, 0x10, 12, 4},
2355 - {29, 29, 0x300, 0x10, 12, 4},
2356 - {30, 30, 0x300, 0x10, 12, 4},
2357 - {31, 31, 0x300, 0x10, 12, 4},
2358 - {32, 32, 0x300, 0x10, 12, 4},
2359 - {33, 33, 0x300, 0x10, 12, 4},
2360 - {34, 34, 0x300, 0x10, 12, 4},
2361 - {35, 35, 0x300, 0x10, 12, 4},
2362 - {36, 36, 0x300, 0x10, 12, 4},
2363 - {37, 37, 0x300, 0x10, 20, 4},
2364 - {38, 38, 0x300, 0x10, 20, 4},
2365 - {39, 39, 0x300, 0x10, 20, 4},
2366 - {40, 40, 0x300, 0x10, 20, 4},
2367 - {41, 41, 0x300, 0x10, 20, 4},
2368 - {42, 42, 0x300, 0x10, 20, 4},
2369 - {43, 43, 0x300, 0x10, 20, 4},
2370 - {44, 44, 0x300, 0x10, 20, 4},
2371 - {45, 46, 0x300, 0x10, 20, 4},
2372 - {47, 47, 0x300, 0x10, 20, 4},
2373 - {48, 48, 0x300, 0x10, 20, 4},
2374 - {49, 49, 0x300, 0x10, 20, 4},
2375 - {50, 50, 0x300, 0x10, 20, 4},
2376 - {51, 70, 0x330, 0x10, 4, 4},
2377 - {71, 71, 0x300, 0x10, 16, 4},
2378 - {72, 72, 0x300, 0x10, 16, 4},
2379 - {73, 76, 0x310, 0x10, 0, 4},
2380 - {77, 77, 0x320, 0x10, 28, 4},
2381 - {78, 78, 0x320, 0x10, 12, 4},
2382 - {79, 82, 0x3a0, 0x10, 0, 4},
2383 - {83, 83, 0x350, 0x10, 28, 4},
2384 - {84, 84, 0x330, 0x10, 0, 4},
2385 - {85, 90, 0x360, 0x10, 4, 4},
2386 - {91, 94, 0x390, 0x10, 16, 4},
2387 - {95, 97, 0x380, 0x10, 20, 4},
2388 - {98, 101, 0x390, 0x10, 0, 4},
2389 - {102, 102, 0x360, 0x10, 0, 4},
2390 + PIN_FIELD(0, 0, 0x320, 0x10, 16, 4),
2391 + PIN_FIELD(1, 4, 0x3a0, 0x10, 16, 4),
2392 + PIN_FIELD(5, 5, 0x320, 0x10, 0, 4),
2393 + PINS_FIELD(6, 7, 0x300, 0x10, 4, 4),
2394 + PIN_FIELD(8, 9, 0x350, 0x10, 20, 4),
2395 + PINS_FIELD(10, 13, 0x300, 0x10, 8, 4),
2396 + PIN_FIELD(14, 15, 0x320, 0x10, 4, 4),
2397 + PIN_FIELD(16, 17, 0x320, 0x10, 20, 4),
2398 + PIN_FIELD(18, 21, 0x310, 0x10, 16, 4),
2399 + PIN_FIELD(22, 22, 0x380, 0x10, 16, 4),
2400 + PINS_FIELD(23, 24, 0x300, 0x10, 24, 4),
2401 + PINS_FIELD(25, 36, 0x300, 0x10, 12, 4),
2402 + PINS_FIELD(37, 50, 0x300, 0x10, 20, 4),
2403 + PIN_FIELD(51, 70, 0x330, 0x10, 4, 4),
2404 + PINS_FIELD(71, 72, 0x300, 0x10, 16, 4),
2405 + PIN_FIELD(73, 76, 0x310, 0x10, 0, 4),
2406 + PIN_FIELD(77, 77, 0x320, 0x10, 28, 4),
2407 + PIN_FIELD(78, 78, 0x320, 0x10, 12, 4),
2408 + PIN_FIELD(79, 82, 0x3a0, 0x10, 0, 4),
2409 + PIN_FIELD(83, 83, 0x350, 0x10, 28, 4),
2410 + PIN_FIELD(84, 84, 0x330, 0x10, 0, 4),
2411 + PIN_FIELD(85, 90, 0x360, 0x10, 4, 4),
2412 + PIN_FIELD(91, 94, 0x390, 0x10, 16, 4),
2413 + PIN_FIELD(95, 97, 0x380, 0x10, 20, 4),
2414 + PIN_FIELD(98, 101, 0x390, 0x10, 0, 4),
2415 + PIN_FIELD(102, 102, 0x360, 0x10, 0, 4),
2418 static const struct mtk_pin_field_calc mt7622_pin_dir_range[] = {
2419 - {0, 102, 0x0, 0x10, 0, 1},
2420 + PIN_FIELD(0, 102, 0x0, 0x10, 0, 1),
2423 static const struct mtk_pin_field_calc mt7622_pin_di_range[] = {
2424 - {0, 102, 0x200, 0x10, 0, 1},
2425 + PIN_FIELD(0, 102, 0x200, 0x10, 0, 1),
2428 static const struct mtk_pin_field_calc mt7622_pin_do_range[] = {
2429 - {0, 102, 0x100, 0x10, 0, 1},
2430 + PIN_FIELD(0, 102, 0x100, 0x10, 0, 1),
2433 static const struct mtk_pin_field_calc mt7622_pin_sr_range[] = {
2434 - {0, 31, 0x910, 0x10, 0, 1},
2435 - {32, 50, 0xa10, 0x10, 0, 1},
2436 - {51, 70, 0x810, 0x10, 0, 1},
2437 - {71, 72, 0xb10, 0x10, 0, 1},
2438 - {73, 86, 0xb10, 0x10, 4, 1},
2439 - {87, 90, 0xc10, 0x10, 0, 1},
2440 - {91, 102, 0xb10, 0x10, 18, 1},
2441 + PIN_FIELD(0, 31, 0x910, 0x10, 0, 1),
2442 + PIN_FIELD(32, 50, 0xa10, 0x10, 0, 1),
2443 + PIN_FIELD(51, 70, 0x810, 0x10, 0, 1),
2444 + PIN_FIELD(71, 72, 0xb10, 0x10, 0, 1),
2445 + PIN_FIELD(73, 86, 0xb10, 0x10, 4, 1),
2446 + PIN_FIELD(87, 90, 0xc10, 0x10, 0, 1),
2447 + PIN_FIELD(91, 102, 0xb10, 0x10, 18, 1),
2450 static const struct mtk_pin_field_calc mt7622_pin_smt_range[] = {
2451 - {0, 31, 0x920, 0x10, 0, 1},
2452 - {32, 50, 0xa20, 0x10, 0, 1},
2453 - {51, 70, 0x820, 0x10, 0, 1},
2454 - {71, 72, 0xb20, 0x10, 0, 1},
2455 - {73, 86, 0xb20, 0x10, 4, 1},
2456 - {87, 90, 0xc20, 0x10, 0, 1},
2457 - {91, 102, 0xb20, 0x10, 18, 1},
2458 + PIN_FIELD(0, 31, 0x920, 0x10, 0, 1),
2459 + PIN_FIELD(32, 50, 0xa20, 0x10, 0, 1),
2460 + PIN_FIELD(51, 70, 0x820, 0x10, 0, 1),
2461 + PIN_FIELD(71, 72, 0xb20, 0x10, 0, 1),
2462 + PIN_FIELD(73, 86, 0xb20, 0x10, 4, 1),
2463 + PIN_FIELD(87, 90, 0xc20, 0x10, 0, 1),
2464 + PIN_FIELD(91, 102, 0xb20, 0x10, 18, 1),
2467 static const struct mtk_pin_field_calc mt7622_pin_pu_range[] = {
2468 - {0, 31, 0x930, 0x10, 0, 1},
2469 - {32, 50, 0xa30, 0x10, 0, 1},
2470 - {51, 70, 0x830, 0x10, 0, 1},
2471 - {71, 72, 0xb30, 0x10, 0, 1},
2472 - {73, 86, 0xb30, 0x10, 4, 1},
2473 - {87, 90, 0xc30, 0x10, 0, 1},
2474 - {91, 102, 0xb30, 0x10, 18, 1},
2475 + PIN_FIELD(0, 31, 0x930, 0x10, 0, 1),
2476 + PIN_FIELD(32, 50, 0xa30, 0x10, 0, 1),
2477 + PIN_FIELD(51, 70, 0x830, 0x10, 0, 1),
2478 + PIN_FIELD(71, 72, 0xb30, 0x10, 0, 1),
2479 + PIN_FIELD(73, 86, 0xb30, 0x10, 4, 1),
2480 + PIN_FIELD(87, 90, 0xc30, 0x10, 0, 1),
2481 + PIN_FIELD(91, 102, 0xb30, 0x10, 18, 1),
2484 static const struct mtk_pin_field_calc mt7622_pin_pd_range[] = {
2485 - {0, 31, 0x940, 0x10, 0, 1},
2486 - {32, 50, 0xa40, 0x10, 0, 1},
2487 - {51, 70, 0x840, 0x10, 0, 1},
2488 - {71, 72, 0xb40, 0x10, 0, 1},
2489 - {73, 86, 0xb40, 0x10, 4, 1},
2490 - {87, 90, 0xc40, 0x10, 0, 1},
2491 - {91, 102, 0xb40, 0x10, 18, 1},
2492 + PIN_FIELD(0, 31, 0x940, 0x10, 0, 1),
2493 + PIN_FIELD(32, 50, 0xa40, 0x10, 0, 1),
2494 + PIN_FIELD(51, 70, 0x840, 0x10, 0, 1),
2495 + PIN_FIELD(71, 72, 0xb40, 0x10, 0, 1),
2496 + PIN_FIELD(73, 86, 0xb40, 0x10, 4, 1),
2497 + PIN_FIELD(87, 90, 0xc40, 0x10, 0, 1),
2498 + PIN_FIELD(91, 102, 0xb40, 0x10, 18, 1),
2501 static const struct mtk_pin_field_calc mt7622_pin_e4_range[] = {
2502 - {0, 31, 0x960, 0x10, 0, 1},
2503 - {32, 50, 0xa60, 0x10, 0, 1},
2504 - {51, 70, 0x860, 0x10, 0, 1},
2505 - {71, 72, 0xb60, 0x10, 0, 1},
2506 - {73, 86, 0xb60, 0x10, 4, 1},
2507 - {87, 90, 0xc60, 0x10, 0, 1},
2508 - {91, 102, 0xb60, 0x10, 18, 1},
2509 + PIN_FIELD(0, 31, 0x960, 0x10, 0, 1),
2510 + PIN_FIELD(32, 50, 0xa60, 0x10, 0, 1),
2511 + PIN_FIELD(51, 70, 0x860, 0x10, 0, 1),
2512 + PIN_FIELD(71, 72, 0xb60, 0x10, 0, 1),
2513 + PIN_FIELD(73, 86, 0xb60, 0x10, 4, 1),
2514 + PIN_FIELD(87, 90, 0xc60, 0x10, 0, 1),
2515 + PIN_FIELD(91, 102, 0xb60, 0x10, 18, 1),
2518 static const struct mtk_pin_field_calc mt7622_pin_e8_range[] = {
2519 - {0, 31, 0x970, 0x10, 0, 1},
2520 - {32, 50, 0xa70, 0x10, 0, 1},
2521 - {51, 70, 0x870, 0x10, 0, 1},
2522 - {71, 72, 0xb70, 0x10, 0, 1},
2523 - {73, 86, 0xb70, 0x10, 4, 1},
2524 - {87, 90, 0xc70, 0x10, 0, 1},
2525 - {91, 102, 0xb70, 0x10, 18, 1},
2526 + PIN_FIELD(0, 31, 0x970, 0x10, 0, 1),
2527 + PIN_FIELD(32, 50, 0xa70, 0x10, 0, 1),
2528 + PIN_FIELD(51, 70, 0x870, 0x10, 0, 1),
2529 + PIN_FIELD(71, 72, 0xb70, 0x10, 0, 1),
2530 + PIN_FIELD(73, 86, 0xb70, 0x10, 4, 1),
2531 + PIN_FIELD(87, 90, 0xc70, 0x10, 0, 1),
2532 + PIN_FIELD(91, 102, 0xb70, 0x10, 18, 1),
2535 static const struct mtk_pin_field_calc mt7622_pin_tdsel_range[] = {
2536 - {0, 31, 0x980, 0x4, 0, 4},
2537 - {32, 50, 0xa80, 0x4, 0, 4},
2538 - {51, 70, 0x880, 0x4, 0, 4},
2539 - {71, 72, 0xb80, 0x4, 0, 4},
2540 - {73, 86, 0xb80, 0x4, 16, 4},
2541 - {87, 90, 0xc80, 0x4, 0, 4},
2542 - {91, 102, 0xb88, 0x4, 8, 4},
2543 + PIN_FIELD(0, 31, 0x980, 0x4, 0, 4),
2544 + PIN_FIELD(32, 50, 0xa80, 0x4, 0, 4),
2545 + PIN_FIELD(51, 70, 0x880, 0x4, 0, 4),
2546 + PIN_FIELD(71, 72, 0xb80, 0x4, 0, 4),
2547 + PIN_FIELD(73, 86, 0xb80, 0x4, 16, 4),
2548 + PIN_FIELD(87, 90, 0xc80, 0x4, 0, 4),
2549 + PIN_FIELD(91, 102, 0xb88, 0x4, 8, 4),
2552 static const struct mtk_pin_field_calc mt7622_pin_rdsel_range[] = {
2553 - {0, 31, 0x990, 0x4, 0, 6},
2554 - {32, 50, 0xa90, 0x4, 0, 6},
2555 - {51, 58, 0x890, 0x4, 0, 6},
2556 - {59, 60, 0x894, 0x4, 28, 6},
2557 - {61, 62, 0x894, 0x4, 16, 6},
2558 - {63, 66, 0x898, 0x4, 8, 6},
2559 - {67, 68, 0x89c, 0x4, 12, 6},
2560 - {69, 70, 0x89c, 0x4, 0, 6},
2561 - {71, 72, 0xb90, 0x4, 0, 6},
2562 - {73, 86, 0xb90, 0x4, 24, 6},
2563 - {87, 90, 0xc90, 0x4, 0, 6},
2564 - {91, 102, 0xb9c, 0x4, 12, 6},
2565 + PIN_FIELD(0, 31, 0x990, 0x4, 0, 6),
2566 + PIN_FIELD(32, 50, 0xa90, 0x4, 0, 6),
2567 + PIN_FIELD(51, 58, 0x890, 0x4, 0, 6),
2568 + PIN_FIELD(59, 60, 0x894, 0x4, 28, 6),
2569 + PIN_FIELD(61, 62, 0x894, 0x4, 16, 6),
2570 + PIN_FIELD(63, 66, 0x898, 0x4, 8, 6),
2571 + PIN_FIELD(67, 68, 0x89c, 0x4, 12, 6),
2572 + PIN_FIELD(69, 70, 0x89c, 0x4, 0, 6),
2573 + PIN_FIELD(71, 72, 0xb90, 0x4, 0, 6),
2574 + PIN_FIELD(73, 86, 0xb90, 0x4, 24, 6),
2575 + PIN_FIELD(87, 90, 0xc90, 0x4, 0, 6),
2576 + PIN_FIELD(91, 102, 0xb9c, 0x4, 12, 6),
2579 static const struct mtk_pin_reg_calc mt7622_reg_cals[PINCTRL_PIN_REG_MAX] = {
2580 @@ -309,110 +152,110 @@ static const struct mtk_pin_reg_calc mt7622_reg_cals[PINCTRL_PIN_REG_MAX] = {
2581 [PINCTRL_PIN_REG_RDSEL] = MTK_RANGE(mt7622_pin_rdsel_range),
2584 -static const struct pinctrl_pin_desc mt7622_pins[] = {
2585 - PINCTRL_PIN(0, "GPIO_A"),
2586 - PINCTRL_PIN(1, "I2S1_IN"),
2587 - PINCTRL_PIN(2, "I2S1_OUT"),
2588 - PINCTRL_PIN(3, "I2S_BCLK"),
2589 - PINCTRL_PIN(4, "I2S_WS"),
2590 - PINCTRL_PIN(5, "I2S_MCLK"),
2591 - PINCTRL_PIN(6, "TXD0"),
2592 - PINCTRL_PIN(7, "RXD0"),
2593 - PINCTRL_PIN(8, "SPI_WP"),
2594 - PINCTRL_PIN(9, "SPI_HOLD"),
2595 - PINCTRL_PIN(10, "SPI_CLK"),
2596 - PINCTRL_PIN(11, "SPI_MOSI"),
2597 - PINCTRL_PIN(12, "SPI_MISO"),
2598 - PINCTRL_PIN(13, "SPI_CS"),
2599 - PINCTRL_PIN(14, "I2C_SDA"),
2600 - PINCTRL_PIN(15, "I2C_SCL"),
2601 - PINCTRL_PIN(16, "I2S2_IN"),
2602 - PINCTRL_PIN(17, "I2S3_IN"),
2603 - PINCTRL_PIN(18, "I2S4_IN"),
2604 - PINCTRL_PIN(19, "I2S2_OUT"),
2605 - PINCTRL_PIN(20, "I2S3_OUT"),
2606 - PINCTRL_PIN(21, "I2S4_OUT"),
2607 - PINCTRL_PIN(22, "GPIO_B"),
2608 - PINCTRL_PIN(23, "MDC"),
2609 - PINCTRL_PIN(24, "MDIO"),
2610 - PINCTRL_PIN(25, "G2_TXD0"),
2611 - PINCTRL_PIN(26, "G2_TXD1"),
2612 - PINCTRL_PIN(27, "G2_TXD2"),
2613 - PINCTRL_PIN(28, "G2_TXD3"),
2614 - PINCTRL_PIN(29, "G2_TXEN"),
2615 - PINCTRL_PIN(30, "G2_TXC"),
2616 - PINCTRL_PIN(31, "G2_RXD0"),
2617 - PINCTRL_PIN(32, "G2_RXD1"),
2618 - PINCTRL_PIN(33, "G2_RXD2"),
2619 - PINCTRL_PIN(34, "G2_RXD3"),
2620 - PINCTRL_PIN(35, "G2_RXDV"),
2621 - PINCTRL_PIN(36, "G2_RXC"),
2622 - PINCTRL_PIN(37, "NCEB"),
2623 - PINCTRL_PIN(38, "NWEB"),
2624 - PINCTRL_PIN(39, "NREB"),
2625 - PINCTRL_PIN(40, "NDL4"),
2626 - PINCTRL_PIN(41, "NDL5"),
2627 - PINCTRL_PIN(42, "NDL6"),
2628 - PINCTRL_PIN(43, "NDL7"),
2629 - PINCTRL_PIN(44, "NRB"),
2630 - PINCTRL_PIN(45, "NCLE"),
2631 - PINCTRL_PIN(46, "NALE"),
2632 - PINCTRL_PIN(47, "NDL0"),
2633 - PINCTRL_PIN(48, "NDL1"),
2634 - PINCTRL_PIN(49, "NDL2"),
2635 - PINCTRL_PIN(50, "NDL3"),
2636 - PINCTRL_PIN(51, "MDI_TP_P0"),
2637 - PINCTRL_PIN(52, "MDI_TN_P0"),
2638 - PINCTRL_PIN(53, "MDI_RP_P0"),
2639 - PINCTRL_PIN(54, "MDI_RN_P0"),
2640 - PINCTRL_PIN(55, "MDI_TP_P1"),
2641 - PINCTRL_PIN(56, "MDI_TN_P1"),
2642 - PINCTRL_PIN(57, "MDI_RP_P1"),
2643 - PINCTRL_PIN(58, "MDI_RN_P1"),
2644 - PINCTRL_PIN(59, "MDI_RP_P2"),
2645 - PINCTRL_PIN(60, "MDI_RN_P2"),
2646 - PINCTRL_PIN(61, "MDI_TP_P2"),
2647 - PINCTRL_PIN(62, "MDI_TN_P2"),
2648 - PINCTRL_PIN(63, "MDI_TP_P3"),
2649 - PINCTRL_PIN(64, "MDI_TN_P3"),
2650 - PINCTRL_PIN(65, "MDI_RP_P3"),
2651 - PINCTRL_PIN(66, "MDI_RN_P3"),
2652 - PINCTRL_PIN(67, "MDI_RP_P4"),
2653 - PINCTRL_PIN(68, "MDI_RN_P4"),
2654 - PINCTRL_PIN(69, "MDI_TP_P4"),
2655 - PINCTRL_PIN(70, "MDI_TN_P4"),
2656 - PINCTRL_PIN(71, "PMIC_SCL"),
2657 - PINCTRL_PIN(72, "PMIC_SDA"),
2658 - PINCTRL_PIN(73, "SPIC1_CLK"),
2659 - PINCTRL_PIN(74, "SPIC1_MOSI"),
2660 - PINCTRL_PIN(75, "SPIC1_MISO"),
2661 - PINCTRL_PIN(76, "SPIC1_CS"),
2662 - PINCTRL_PIN(77, "GPIO_D"),
2663 - PINCTRL_PIN(78, "WATCHDOG"),
2664 - PINCTRL_PIN(79, "RTS3_N"),
2665 - PINCTRL_PIN(80, "CTS3_N"),
2666 - PINCTRL_PIN(81, "TXD3"),
2667 - PINCTRL_PIN(82, "RXD3"),
2668 - PINCTRL_PIN(83, "PERST0_N"),
2669 - PINCTRL_PIN(84, "PERST1_N"),
2670 - PINCTRL_PIN(85, "WLED_N"),
2671 - PINCTRL_PIN(86, "EPHY_LED0_N"),
2672 - PINCTRL_PIN(87, "AUXIN0"),
2673 - PINCTRL_PIN(88, "AUXIN1"),
2674 - PINCTRL_PIN(89, "AUXIN2"),
2675 - PINCTRL_PIN(90, "AUXIN3"),
2676 - PINCTRL_PIN(91, "TXD4"),
2677 - PINCTRL_PIN(92, "RXD4"),
2678 - PINCTRL_PIN(93, "RTS4_N"),
2679 - PINCTRL_PIN(94, "CTS4_N"),
2680 - PINCTRL_PIN(95, "PWM1"),
2681 - PINCTRL_PIN(96, "PWM2"),
2682 - PINCTRL_PIN(97, "PWM3"),
2683 - PINCTRL_PIN(98, "PWM4"),
2684 - PINCTRL_PIN(99, "PWM5"),
2685 - PINCTRL_PIN(100, "PWM6"),
2686 - PINCTRL_PIN(101, "PWM7"),
2687 - PINCTRL_PIN(102, "GPIO_E"),
2688 +static const struct mtk_pin_desc mt7622_pins[] = {
2689 + MT7622_PIN(0, "GPIO_A"),
2690 + MT7622_PIN(1, "I2S1_IN"),
2691 + MT7622_PIN(2, "I2S1_OUT"),
2692 + MT7622_PIN(3, "I2S_BCLK"),
2693 + MT7622_PIN(4, "I2S_WS"),
2694 + MT7622_PIN(5, "I2S_MCLK"),
2695 + MT7622_PIN(6, "TXD0"),
2696 + MT7622_PIN(7, "RXD0"),
2697 + MT7622_PIN(8, "SPI_WP"),
2698 + MT7622_PIN(9, "SPI_HOLD"),
2699 + MT7622_PIN(10, "SPI_CLK"),
2700 + MT7622_PIN(11, "SPI_MOSI"),
2701 + MT7622_PIN(12, "SPI_MISO"),
2702 + MT7622_PIN(13, "SPI_CS"),
2703 + MT7622_PIN(14, "I2C_SDA"),
2704 + MT7622_PIN(15, "I2C_SCL"),
2705 + MT7622_PIN(16, "I2S2_IN"),
2706 + MT7622_PIN(17, "I2S3_IN"),
2707 + MT7622_PIN(18, "I2S4_IN"),
2708 + MT7622_PIN(19, "I2S2_OUT"),
2709 + MT7622_PIN(20, "I2S3_OUT"),
2710 + MT7622_PIN(21, "I2S4_OUT"),
2711 + MT7622_PIN(22, "GPIO_B"),
2712 + MT7622_PIN(23, "MDC"),
2713 + MT7622_PIN(24, "MDIO"),
2714 + MT7622_PIN(25, "G2_TXD0"),
2715 + MT7622_PIN(26, "G2_TXD1"),
2716 + MT7622_PIN(27, "G2_TXD2"),
2717 + MT7622_PIN(28, "G2_TXD3"),
2718 + MT7622_PIN(29, "G2_TXEN"),
2719 + MT7622_PIN(30, "G2_TXC"),
2720 + MT7622_PIN(31, "G2_RXD0"),
2721 + MT7622_PIN(32, "G2_RXD1"),
2722 + MT7622_PIN(33, "G2_RXD2"),
2723 + MT7622_PIN(34, "G2_RXD3"),
2724 + MT7622_PIN(35, "G2_RXDV"),
2725 + MT7622_PIN(36, "G2_RXC"),
2726 + MT7622_PIN(37, "NCEB"),
2727 + MT7622_PIN(38, "NWEB"),
2728 + MT7622_PIN(39, "NREB"),
2729 + MT7622_PIN(40, "NDL4"),
2730 + MT7622_PIN(41, "NDL5"),
2731 + MT7622_PIN(42, "NDL6"),
2732 + MT7622_PIN(43, "NDL7"),
2733 + MT7622_PIN(44, "NRB"),
2734 + MT7622_PIN(45, "NCLE"),
2735 + MT7622_PIN(46, "NALE"),
2736 + MT7622_PIN(47, "NDL0"),
2737 + MT7622_PIN(48, "NDL1"),
2738 + MT7622_PIN(49, "NDL2"),
2739 + MT7622_PIN(50, "NDL3"),
2740 + MT7622_PIN(51, "MDI_TP_P0"),
2741 + MT7622_PIN(52, "MDI_TN_P0"),
2742 + MT7622_PIN(53, "MDI_RP_P0"),
2743 + MT7622_PIN(54, "MDI_RN_P0"),
2744 + MT7622_PIN(55, "MDI_TP_P1"),
2745 + MT7622_PIN(56, "MDI_TN_P1"),
2746 + MT7622_PIN(57, "MDI_RP_P1"),
2747 + MT7622_PIN(58, "MDI_RN_P1"),
2748 + MT7622_PIN(59, "MDI_RP_P2"),
2749 + MT7622_PIN(60, "MDI_RN_P2"),
2750 + MT7622_PIN(61, "MDI_TP_P2"),
2751 + MT7622_PIN(62, "MDI_TN_P2"),
2752 + MT7622_PIN(63, "MDI_TP_P3"),
2753 + MT7622_PIN(64, "MDI_TN_P3"),
2754 + MT7622_PIN(65, "MDI_RP_P3"),
2755 + MT7622_PIN(66, "MDI_RN_P3"),
2756 + MT7622_PIN(67, "MDI_RP_P4"),
2757 + MT7622_PIN(68, "MDI_RN_P4"),
2758 + MT7622_PIN(69, "MDI_TP_P4"),
2759 + MT7622_PIN(70, "MDI_TN_P4"),
2760 + MT7622_PIN(71, "PMIC_SCL"),
2761 + MT7622_PIN(72, "PMIC_SDA"),
2762 + MT7622_PIN(73, "SPIC1_CLK"),
2763 + MT7622_PIN(74, "SPIC1_MOSI"),
2764 + MT7622_PIN(75, "SPIC1_MISO"),
2765 + MT7622_PIN(76, "SPIC1_CS"),
2766 + MT7622_PIN(77, "GPIO_D"),
2767 + MT7622_PIN(78, "WATCHDOG"),
2768 + MT7622_PIN(79, "RTS3_N"),
2769 + MT7622_PIN(80, "CTS3_N"),
2770 + MT7622_PIN(81, "TXD3"),
2771 + MT7622_PIN(82, "RXD3"),
2772 + MT7622_PIN(83, "PERST0_N"),
2773 + MT7622_PIN(84, "PERST1_N"),
2774 + MT7622_PIN(85, "WLED_N"),
2775 + MT7622_PIN(86, "EPHY_LED0_N"),
2776 + MT7622_PIN(87, "AUXIN0"),
2777 + MT7622_PIN(88, "AUXIN1"),
2778 + MT7622_PIN(89, "AUXIN2"),
2779 + MT7622_PIN(90, "AUXIN3"),
2780 + MT7622_PIN(91, "TXD4"),
2781 + MT7622_PIN(92, "RXD4"),
2782 + MT7622_PIN(93, "RTS4_N"),
2783 + MT7622_PIN(94, "CTS4_N"),
2784 + MT7622_PIN(95, "PWM1"),
2785 + MT7622_PIN(96, "PWM2"),
2786 + MT7622_PIN(97, "PWM3"),
2787 + MT7622_PIN(98, "PWM4"),
2788 + MT7622_PIN(99, "PWM5"),
2789 + MT7622_PIN(100, "PWM6"),
2790 + MT7622_PIN(101, "PWM7"),
2791 + MT7622_PIN(102, "GPIO_E"),
2794 /* List all groups consisting of these pins dedicated to the enablement of
2795 @@ -906,18 +749,6 @@ static const struct function_desc mt7622_functions[] = {
2796 {"watchdog", mt7622_wdt_groups, ARRAY_SIZE(mt7622_wdt_groups)},
2799 -static const struct pinconf_generic_params mtk_custom_bindings[] = {
2800 - {"mediatek,tdsel", MTK_PIN_CONFIG_TDSEL, 0},
2801 - {"mediatek,rdsel", MTK_PIN_CONFIG_RDSEL, 0},
2804 -#ifdef CONFIG_DEBUG_FS
2805 -static const struct pin_config_item mtk_conf_items[] = {
2806 - PCONFDUMP(MTK_PIN_CONFIG_TDSEL, "tdsel", NULL, true),
2807 - PCONFDUMP(MTK_PIN_CONFIG_RDSEL, "rdsel", NULL, true),
2811 static const struct mtk_eint_hw mt7622_eint_hw = {
2814 @@ -934,830 +765,38 @@ static const struct mtk_pin_soc mt7622_data = {
2815 .funcs = mt7622_functions,
2816 .nfuncs = ARRAY_SIZE(mt7622_functions),
2817 .eint_hw = &mt7622_eint_hw,
2820 -static void mtk_w32(struct mtk_pinctrl *pctl, u32 reg, u32 val)
2822 - writel_relaxed(val, pctl->base + reg);
2825 -static u32 mtk_r32(struct mtk_pinctrl *pctl, u32 reg)
2827 - return readl_relaxed(pctl->base + reg);
2830 -static void mtk_rmw(struct mtk_pinctrl *pctl, u32 reg, u32 mask, u32 set)
2834 - val = mtk_r32(pctl, reg);
2837 - mtk_w32(pctl, reg, val);
2840 -static int mtk_hw_pin_field_lookup(struct mtk_pinctrl *hw, int pin,
2841 - const struct mtk_pin_reg_calc *rc,
2842 - struct mtk_pin_field *pfd)
2844 - const struct mtk_pin_field_calc *c, *e;
2848 - e = c + rc->nranges;
2851 - if (pin >= c->s_pin && pin <= c->e_pin)
2857 - dev_err(hw->dev, "Out of range for pin = %d\n", pin);
2861 - /* Caculated bits as the overall offset the pin is located at */
2862 - bits = c->s_bit + (pin - c->s_pin) * (c->x_bits);
2864 - /* Fill pfd from bits and 32-bit register applied is assumed */
2865 - pfd->offset = c->s_addr + c->x_addrs * (bits / 32);
2866 - pfd->bitpos = bits % 32;
2867 - pfd->mask = (1 << c->x_bits) - 1;
2869 - /* pfd->next is used for indicating that bit wrapping-around happens
2870 - * which requires the manipulation for bit 0 starting in the next
2871 - * register to form the complete field read/write.
2873 - pfd->next = pfd->bitpos + c->x_bits - 1 > 31 ? c->x_addrs : 0;
2878 -static int mtk_hw_pin_field_get(struct mtk_pinctrl *hw, int pin,
2879 - int field, struct mtk_pin_field *pfd)
2881 - const struct mtk_pin_reg_calc *rc;
2883 - if (field < 0 || field >= PINCTRL_PIN_REG_MAX) {
2884 - dev_err(hw->dev, "Invalid Field %d\n", field);
2888 - if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) {
2889 - rc = &hw->soc->reg_cal[field];
2891 - dev_err(hw->dev, "Undefined range for field %d\n", field);
2895 - return mtk_hw_pin_field_lookup(hw, pin, rc, pfd);
2898 -static void mtk_hw_bits_part(struct mtk_pin_field *pf, int *h, int *l)
2900 - *l = 32 - pf->bitpos;
2901 - *h = get_count_order(pf->mask) - *l;
2904 -static void mtk_hw_write_cross_field(struct mtk_pinctrl *hw,
2905 - struct mtk_pin_field *pf, int value)
2907 - int nbits_l, nbits_h;
2909 - mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
2911 - mtk_rmw(hw, pf->offset, pf->mask << pf->bitpos,
2912 - (value & pf->mask) << pf->bitpos);
2914 - mtk_rmw(hw, pf->offset + pf->next, BIT(nbits_h) - 1,
2915 - (value & pf->mask) >> nbits_l);
2918 -static void mtk_hw_read_cross_field(struct mtk_pinctrl *hw,
2919 - struct mtk_pin_field *pf, int *value)
2921 - int nbits_l, nbits_h, h, l;
2923 - mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
2925 - l = (mtk_r32(hw, pf->offset) >> pf->bitpos) & (BIT(nbits_l) - 1);
2926 - h = (mtk_r32(hw, pf->offset + pf->next)) & (BIT(nbits_h) - 1);
2928 - *value = (h << nbits_l) | l;
2931 -static int mtk_hw_set_value(struct mtk_pinctrl *hw, int pin, int field,
2934 - struct mtk_pin_field pf;
2937 - err = mtk_hw_pin_field_get(hw, pin, field, &pf);
2942 - mtk_rmw(hw, pf.offset, pf.mask << pf.bitpos,
2943 - (value & pf.mask) << pf.bitpos);
2945 - mtk_hw_write_cross_field(hw, &pf, value);
2950 -static int mtk_hw_get_value(struct mtk_pinctrl *hw, int pin, int field,
2953 - struct mtk_pin_field pf;
2956 - err = mtk_hw_pin_field_get(hw, pin, field, &pf);
2961 - *value = (mtk_r32(hw, pf.offset) >> pf.bitpos) & pf.mask;
2963 - mtk_hw_read_cross_field(hw, &pf, value);
2968 -static int mtk_pinmux_set_mux(struct pinctrl_dev *pctldev,
2969 - unsigned int selector, unsigned int group)
2971 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
2972 - struct function_desc *func;
2973 - struct group_desc *grp;
2976 - func = pinmux_generic_get_function(pctldev, selector);
2980 - grp = pinctrl_generic_get_group(pctldev, group);
2984 - dev_dbg(pctldev->dev, "enable function %s group %s\n",
2985 - func->name, grp->name);
2987 - for (i = 0; i < grp->num_pins; i++) {
2988 - int *pin_modes = grp->data;
2990 - mtk_hw_set_value(hw, grp->pins[i], PINCTRL_PIN_REG_MODE,
2997 -static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
2998 - struct pinctrl_gpio_range *range,
3001 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3003 - return mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_MODE, MTK_GPIO_MODE);
3006 -static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
3007 - struct pinctrl_gpio_range *range,
3008 - unsigned int pin, bool input)
3010 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3012 - /* hardware would take 0 as input direction */
3013 - return mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR, !input);
3016 -static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
3017 - unsigned int pin, unsigned long *config)
3019 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3020 - u32 param = pinconf_to_config_param(*config);
3021 - int val, val2, err, reg, ret = 1;
3024 - case PIN_CONFIG_BIAS_DISABLE:
3025 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_PU, &val);
3029 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_PD, &val2);
3037 - case PIN_CONFIG_BIAS_PULL_UP:
3038 - case PIN_CONFIG_BIAS_PULL_DOWN:
3039 - case PIN_CONFIG_SLEW_RATE:
3040 - reg = (param == PIN_CONFIG_BIAS_PULL_UP) ?
3041 - PINCTRL_PIN_REG_PU :
3042 - (param == PIN_CONFIG_BIAS_PULL_DOWN) ?
3043 - PINCTRL_PIN_REG_PD : PINCTRL_PIN_REG_SR;
3045 - err = mtk_hw_get_value(hw, pin, reg, &val);
3053 - case PIN_CONFIG_INPUT_ENABLE:
3054 - case PIN_CONFIG_OUTPUT_ENABLE:
3055 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_DIR, &val);
3059 - /* HW takes input mode as zero; output mode as non-zero */
3060 - if ((val && param == PIN_CONFIG_INPUT_ENABLE) ||
3061 - (!val && param == PIN_CONFIG_OUTPUT_ENABLE))
3065 - case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
3066 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_DIR, &val);
3070 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_SMT, &val2);
3078 - case PIN_CONFIG_DRIVE_STRENGTH:
3079 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_E4, &val);
3083 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_E8, &val2);
3087 - /* 4mA when (e8, e4) = (0, 0); 8mA when (e8, e4) = (0, 1)
3088 - * 12mA when (e8, e4) = (1, 0); 16mA when (e8, e4) = (1, 1)
3090 - ret = ((val2 << 1) + val + 1) * 4;
3093 - case MTK_PIN_CONFIG_TDSEL:
3094 - case MTK_PIN_CONFIG_RDSEL:
3095 - reg = (param == MTK_PIN_CONFIG_TDSEL) ?
3096 - PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
3098 - err = mtk_hw_get_value(hw, pin, reg, &val);
3109 - *config = pinconf_to_config_packed(param, ret);
3114 -static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
3115 - unsigned long *configs, unsigned int num_configs)
3117 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3118 - u32 reg, param, arg;
3121 - for (cfg = 0; cfg < num_configs; cfg++) {
3122 - param = pinconf_to_config_param(configs[cfg]);
3123 - arg = pinconf_to_config_argument(configs[cfg]);
3126 - case PIN_CONFIG_BIAS_DISABLE:
3127 - case PIN_CONFIG_BIAS_PULL_UP:
3128 - case PIN_CONFIG_BIAS_PULL_DOWN:
3129 - arg = (param == PIN_CONFIG_BIAS_DISABLE) ? 0 :
3130 - (param == PIN_CONFIG_BIAS_PULL_UP) ? 1 : 2;
3132 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_PU,
3137 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_PD,
3142 - case PIN_CONFIG_OUTPUT_ENABLE:
3143 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_SMT,
3147 - /* else: fall through */
3148 - case PIN_CONFIG_INPUT_ENABLE:
3149 - case PIN_CONFIG_SLEW_RATE:
3150 - reg = (param == PIN_CONFIG_SLEW_RATE) ?
3151 - PINCTRL_PIN_REG_SR : PINCTRL_PIN_REG_DIR;
3153 - arg = (param == PIN_CONFIG_INPUT_ENABLE) ? 0 :
3154 - (param == PIN_CONFIG_OUTPUT_ENABLE) ? 1 : arg;
3155 - err = mtk_hw_set_value(hw, pin, reg, arg);
3160 - case PIN_CONFIG_OUTPUT:
3161 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR,
3166 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DO,
3171 - case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
3172 - /* arg = 1: Input mode & SMT enable ;
3173 - * arg = 0: Output mode & SMT disable
3175 - arg = arg ? 2 : 1;
3176 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR,
3181 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_SMT,
3186 - case PIN_CONFIG_DRIVE_STRENGTH:
3187 - /* 4mA when (e8, e4) = (0, 0);
3188 - * 8mA when (e8, e4) = (0, 1);
3189 - * 12mA when (e8, e4) = (1, 0);
3190 - * 16mA when (e8, e4) = (1, 1)
3192 - if (!(arg % 4) && (arg >= 4 && arg <= 16)) {
3193 - arg = arg / 4 - 1;
3194 - err = mtk_hw_set_value(hw, pin,
3195 - PINCTRL_PIN_REG_E4,
3200 - err = mtk_hw_set_value(hw, pin,
3201 - PINCTRL_PIN_REG_E8,
3202 - (arg & 0x2) >> 1);
3209 - case MTK_PIN_CONFIG_TDSEL:
3210 - case MTK_PIN_CONFIG_RDSEL:
3211 - reg = (param == MTK_PIN_CONFIG_TDSEL) ?
3212 - PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
3214 - err = mtk_hw_set_value(hw, pin, reg, arg);
3226 -static int mtk_pinconf_group_get(struct pinctrl_dev *pctldev,
3227 - unsigned int group, unsigned long *config)
3229 - const unsigned int *pins;
3230 - unsigned int i, npins, old = 0;
3233 - ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
3237 - for (i = 0; i < npins; i++) {
3238 - if (mtk_pinconf_get(pctldev, pins[i], config))
3241 - /* configs do not match between two pins */
3242 - if (i && old != *config)
3251 -static int mtk_pinconf_group_set(struct pinctrl_dev *pctldev,
3252 - unsigned int group, unsigned long *configs,
3253 - unsigned int num_configs)
3255 - const unsigned int *pins;
3256 - unsigned int i, npins;
3259 - ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
3263 - for (i = 0; i < npins; i++) {
3264 - ret = mtk_pinconf_set(pctldev, pins[i], configs, num_configs);
3272 -static const struct pinctrl_ops mtk_pctlops = {
3273 - .get_groups_count = pinctrl_generic_get_group_count,
3274 - .get_group_name = pinctrl_generic_get_group_name,
3275 - .get_group_pins = pinctrl_generic_get_group_pins,
3276 - .dt_node_to_map = pinconf_generic_dt_node_to_map_all,
3277 - .dt_free_map = pinconf_generic_dt_free_map,
3280 -static const struct pinmux_ops mtk_pmxops = {
3281 - .get_functions_count = pinmux_generic_get_function_count,
3282 - .get_function_name = pinmux_generic_get_function_name,
3283 - .get_function_groups = pinmux_generic_get_function_groups,
3284 - .set_mux = mtk_pinmux_set_mux,
3285 - .gpio_request_enable = mtk_pinmux_gpio_request_enable,
3286 - .gpio_set_direction = mtk_pinmux_gpio_set_direction,
3290 -static const struct pinconf_ops mtk_confops = {
3291 - .is_generic = true,
3292 - .pin_config_get = mtk_pinconf_get,
3293 - .pin_config_set = mtk_pinconf_set,
3294 - .pin_config_group_get = mtk_pinconf_group_get,
3295 - .pin_config_group_set = mtk_pinconf_group_set,
3296 - .pin_config_config_dbg_show = pinconf_generic_dump_config,
3299 -static struct pinctrl_desc mtk_desc = {
3300 - .name = PINCTRL_PINCTRL_DEV,
3301 - .pctlops = &mtk_pctlops,
3302 - .pmxops = &mtk_pmxops,
3303 - .confops = &mtk_confops,
3304 - .owner = THIS_MODULE,
3307 -static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
3309 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3312 - err = mtk_hw_get_value(hw, gpio, PINCTRL_PIN_REG_DI, &value);
3319 -static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
3321 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3323 - mtk_hw_set_value(hw, gpio, PINCTRL_PIN_REG_DO, !!value);
3326 -static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
3328 - return pinctrl_gpio_direction_input(chip->base + gpio);
3331 -static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
3334 - mtk_gpio_set(chip, gpio, value);
3336 - return pinctrl_gpio_direction_output(chip->base + gpio);
3339 -static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
3341 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3342 - unsigned long eint_n;
3349 - return mtk_eint_find_irq(hw->eint, eint_n);
3352 -static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
3353 - unsigned long config)
3355 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3356 - unsigned long eint_n;
3360 - pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
3363 - debounce = pinconf_to_config_argument(config);
3366 - return mtk_eint_set_debounce(hw->eint, eint_n, debounce);
3369 -static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
3371 - struct gpio_chip *chip = &hw->chip;
3374 - chip->label = PINCTRL_PINCTRL_DEV;
3375 - chip->parent = hw->dev;
3376 - chip->request = gpiochip_generic_request;
3377 - chip->free = gpiochip_generic_free;
3378 - chip->direction_input = mtk_gpio_direction_input;
3379 - chip->direction_output = mtk_gpio_direction_output;
3380 - chip->get = mtk_gpio_get;
3381 - chip->set = mtk_gpio_set;
3382 - chip->to_irq = mtk_gpio_to_irq,
3383 - chip->set_config = mtk_gpio_set_config,
3385 - chip->ngpio = hw->soc->npins;
3386 - chip->of_node = np;
3387 - chip->of_gpio_n_cells = 2;
3389 - ret = gpiochip_add_data(chip, hw);
3393 - /* Just for backward compatible for these old pinctrl nodes without
3394 - * "gpio-ranges" property. Otherwise, called directly from a
3395 - * DeviceTree-supported pinctrl driver is DEPRECATED.
3396 - * Please see Section 2.1 of
3397 - * Documentation/devicetree/bindings/gpio/gpio.txt on how to
3398 - * bind pinctrl and gpio drivers via the "gpio-ranges" property.
3400 - if (!of_find_property(np, "gpio-ranges", NULL)) {
3401 - ret = gpiochip_add_pin_range(chip, dev_name(hw->dev), 0, 0,
3404 - gpiochip_remove(chip);
3412 -static int mtk_build_groups(struct mtk_pinctrl *hw)
3416 - for (i = 0; i < hw->soc->ngrps; i++) {
3417 - const struct group_desc *group = hw->soc->grps + i;
3419 - err = pinctrl_generic_add_group(hw->pctrl, group->name,
3420 - group->pins, group->num_pins,
3423 - dev_err(hw->dev, "Failed to register group %s\n",
3432 -static int mtk_build_functions(struct mtk_pinctrl *hw)
3436 - for (i = 0; i < hw->soc->nfuncs ; i++) {
3437 - const struct function_desc *func = hw->soc->funcs + i;
3439 - err = pinmux_generic_add_function(hw->pctrl, func->name,
3440 - func->group_names,
3441 - func->num_group_names,
3444 - dev_err(hw->dev, "Failed to register function %s\n",
3453 -static int mtk_xt_get_gpio_n(void *data, unsigned long eint_n,
3454 - unsigned int *gpio_n,
3455 - struct gpio_chip **gpio_chip)
3457 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3459 - *gpio_chip = &hw->chip;
3465 -static int mtk_xt_get_gpio_state(void *data, unsigned long eint_n)
3467 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3468 - struct gpio_chip *gpio_chip;
3469 - unsigned int gpio_n;
3472 - err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
3476 - return mtk_gpio_get(gpio_chip, gpio_n);
3479 -static int mtk_xt_set_gpio_as_eint(void *data, unsigned long eint_n)
3481 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3482 - struct gpio_chip *gpio_chip;
3483 - unsigned int gpio_n;
3486 - err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
3490 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_MODE,
3495 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_DIR, MTK_INPUT);
3499 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_SMT, MTK_ENABLE);
3506 -static const struct mtk_eint_xt mtk_eint_xt = {
3507 - .get_gpio_n = mtk_xt_get_gpio_n,
3508 - .get_gpio_state = mtk_xt_get_gpio_state,
3509 - .set_gpio_as_eint = mtk_xt_set_gpio_as_eint,
3513 -mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
3515 - struct device_node *np = pdev->dev.of_node;
3516 - struct resource *res;
3518 - if (!IS_ENABLED(CONFIG_EINT_MTK))
3521 - if (!of_property_read_bool(np, "interrupt-controller"))
3524 - hw->eint = devm_kzalloc(hw->dev, sizeof(*hw->eint), GFP_KERNEL);
3528 - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "eint");
3530 - dev_err(&pdev->dev, "Unable to get eint resource\n");
3534 - hw->eint->base = devm_ioremap_resource(&pdev->dev, res);
3535 - if (IS_ERR(hw->eint->base))
3536 - return PTR_ERR(hw->eint->base);
3538 - hw->eint->irq = irq_of_parse_and_map(np, 0);
3539 - if (!hw->eint->irq)
3542 - hw->eint->dev = &pdev->dev;
3543 - hw->eint->hw = hw->soc->eint_hw;
3544 - hw->eint->pctl = hw;
3545 - hw->eint->gpio_xlate = &mtk_eint_xt;
3547 - return mtk_eint_do_init(hw->eint);
3550 -static const struct of_device_id mtk_pinctrl_of_match[] = {
3551 - { .compatible = "mediatek,mt7622-pinctrl", .data = &mt7622_data},
3553 + .ies_present = false,
3554 + .base_names = mtk_default_register_base_names,
3555 + .nbase_names = ARRAY_SIZE(mtk_default_register_base_names),
3556 + .bias_disable_set = mtk_pinconf_bias_disable_set,
3557 + .bias_disable_get = mtk_pinconf_bias_disable_get,
3558 + .bias_set = mtk_pinconf_bias_set,
3559 + .bias_get = mtk_pinconf_bias_get,
3560 + .drive_set = mtk_pinconf_drive_set,
3561 + .drive_get = mtk_pinconf_drive_get,
3564 +static const struct of_device_id mt7622_pinctrl_of_match[] = {
3565 + { .compatible = "mediatek,mt7622-pinctrl", },
3569 -static int mtk_pinctrl_probe(struct platform_device *pdev)
3570 +static int mt7622_pinctrl_probe(struct platform_device *pdev)
3572 - struct resource *res;
3573 - struct mtk_pinctrl *hw;
3574 - const struct of_device_id *of_id =
3575 - of_match_device(mtk_pinctrl_of_match, &pdev->dev);
3578 - hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
3582 - hw->soc = of_id->data;
3584 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
3586 - dev_err(&pdev->dev, "missing IO resource\n");
3590 - hw->dev = &pdev->dev;
3591 - hw->base = devm_ioremap_resource(&pdev->dev, res);
3592 - if (IS_ERR(hw->base))
3593 - return PTR_ERR(hw->base);
3595 - /* Setup pins descriptions per SoC types */
3596 - mtk_desc.pins = hw->soc->pins;
3597 - mtk_desc.npins = hw->soc->npins;
3598 - mtk_desc.num_custom_params = ARRAY_SIZE(mtk_custom_bindings);
3599 - mtk_desc.custom_params = mtk_custom_bindings;
3600 -#ifdef CONFIG_DEBUG_FS
3601 - mtk_desc.custom_conf_items = mtk_conf_items;
3604 - err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
3609 - /* Setup groups descriptions per SoC types */
3610 - err = mtk_build_groups(hw);
3612 - dev_err(&pdev->dev, "Failed to build groups\n");
3616 - /* Setup functions descriptions per SoC types */
3617 - err = mtk_build_functions(hw);
3619 - dev_err(&pdev->dev, "Failed to build functions\n");
3623 - /* For able to make pinctrl_claim_hogs, we must not enable pinctrl
3624 - * until all groups and functions are being added one.
3626 - err = pinctrl_enable(hw->pctrl);
3630 - err = mtk_build_eint(hw, pdev);
3632 - dev_warn(&pdev->dev,
3633 - "Failed to add EINT, but pinctrl still can work\n");
3635 - /* Build gpiochip should be after pinctrl_enable is done */
3636 - err = mtk_build_gpiochip(hw, pdev->dev.of_node);
3638 - dev_err(&pdev->dev, "Failed to add gpio_chip\n");
3642 - platform_set_drvdata(pdev, hw);
3645 + return mtk_moore_pinctrl_probe(pdev, &mt7622_data);
3648 -static struct platform_driver mtk_pinctrl_driver = {
3649 +static struct platform_driver mt7622_pinctrl_driver = {
3651 - .name = "mtk-pinctrl",
3652 - .of_match_table = mtk_pinctrl_of_match,
3653 + .name = "mt7622-pinctrl",
3654 + .of_match_table = mt7622_pinctrl_of_match,
3656 - .probe = mtk_pinctrl_probe,
3657 + .probe = mt7622_pinctrl_probe,
3660 -static int __init mtk_pinctrl_init(void)
3661 +static int __init mt7622_pinctrl_init(void)
3663 - return platform_driver_register(&mtk_pinctrl_driver);
3664 + return platform_driver_register(&mt7622_pinctrl_driver);
3666 -arch_initcall(mtk_pinctrl_init);
3667 +arch_initcall(mt7622_pinctrl_init);
3668 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt7623.c b/drivers/pinctrl/mediatek/pinctrl-mt7623.c
3669 new file mode 100644
3670 index 000000000000..b8d9d31db74f
3672 +++ b/drivers/pinctrl/mediatek/pinctrl-mt7623.c
3674 +// SPDX-License-Identifier: GPL-2.0
3676 + * The MT7623 driver based on Linux generic pinctrl binding.
3678 + * Copyright (C) 2015 - 2018 MediaTek Inc.
3679 + * Author: Biao Huang <biao.huang@mediatek.com>
3680 + * Ryder Lee <ryder.lee@mediatek.com>
3681 + * Sean Wang <sean.wang@mediatek.com>
3684 +#include "pinctrl-moore.h"
3686 +#define PIN_BOND_REG0 0xb10
3687 +#define PIN_BOND_REG1 0xf20
3688 +#define PIN_BOND_REG2 0xef0
3689 +#define BOND_PCIE_CLR (0x77 << 3)
3690 +#define BOND_I2S_CLR 0x3
3691 +#define BOND_MSDC0E_CLR 0x1
3693 +#define PIN_FIELD15(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
3694 + PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
3695 + _x_bits, 15, false)
3697 +#define PIN_FIELD16(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
3698 + PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
3701 +#define PINS_FIELD16(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
3702 + PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
3705 +#define MT7623_PIN(_number, _name, _eint_n, _drv_grp) \
3706 + MTK_PIN(_number, _name, 0, _eint_n, _drv_grp)
3708 +static const struct mtk_pin_field_calc mt7623_pin_mode_range[] = {
3709 + PIN_FIELD15(0, 278, 0x760, 0x10, 0, 3),
3712 +static const struct mtk_pin_field_calc mt7623_pin_dir_range[] = {
3713 + PIN_FIELD16(0, 175, 0x0, 0x10, 0, 1),
3714 + PIN_FIELD16(176, 278, 0xc0, 0x10, 0, 1),
3717 +static const struct mtk_pin_field_calc mt7623_pin_di_range[] = {
3718 + PIN_FIELD16(0, 278, 0x630, 0x10, 0, 1),
3721 +static const struct mtk_pin_field_calc mt7623_pin_do_range[] = {
3722 + PIN_FIELD16(0, 278, 0x500, 0x10, 0, 1),
3725 +static const struct mtk_pin_field_calc mt7623_pin_ies_range[] = {
3726 + PINS_FIELD16(0, 6, 0xb20, 0x10, 0, 1),
3727 + PINS_FIELD16(7, 9, 0xb20, 0x10, 1, 1),
3728 + PINS_FIELD16(10, 13, 0xb30, 0x10, 3, 1),
3729 + PINS_FIELD16(14, 15, 0xb30, 0x10, 13, 1),
3730 + PINS_FIELD16(16, 17, 0xb40, 0x10, 7, 1),
3731 + PINS_FIELD16(18, 29, 0xb40, 0x10, 13, 1),
3732 + PINS_FIELD16(30, 32, 0xb40, 0x10, 7, 1),
3733 + PINS_FIELD16(33, 37, 0xb40, 0x10, 13, 1),
3734 + PIN_FIELD16(38, 38, 0xb20, 0x10, 13, 1),
3735 + PINS_FIELD16(39, 42, 0xb40, 0x10, 13, 1),
3736 + PINS_FIELD16(43, 45, 0xb20, 0x10, 10, 1),
3737 + PINS_FIELD16(47, 48, 0xb20, 0x10, 11, 1),
3738 + PIN_FIELD16(49, 49, 0xb20, 0x10, 12, 1),
3739 + PINS_FIELD16(50, 52, 0xb20, 0x10, 13, 1),
3740 + PINS_FIELD16(53, 56, 0xb20, 0x10, 14, 1),
3741 + PINS_FIELD16(57, 58, 0xb20, 0x10, 15, 1),
3742 + PIN_FIELD16(59, 59, 0xb30, 0x10, 10, 1),
3743 + PINS_FIELD16(60, 62, 0xb30, 0x10, 0, 1),
3744 + PINS_FIELD16(63, 65, 0xb30, 0x10, 1, 1),
3745 + PINS_FIELD16(66, 71, 0xb30, 0x10, 2, 1),
3746 + PINS_FIELD16(72, 74, 0xb20, 0x10, 12, 1),
3747 + PINS_FIELD16(75, 76, 0xb30, 0x10, 3, 1),
3748 + PINS_FIELD16(77, 78, 0xb30, 0x10, 4, 1),
3749 + PINS_FIELD16(79, 82, 0xb30, 0x10, 5, 1),
3750 + PINS_FIELD16(83, 84, 0xb30, 0x10, 2, 1),
3751 + PIN_FIELD16(85, 85, 0xda0, 0x10, 4, 1),
3752 + PIN_FIELD16(86, 86, 0xd90, 0x10, 4, 1),
3753 + PINS_FIELD16(87, 90, 0xdb0, 0x10, 4, 1),
3754 + PINS_FIELD16(101, 104, 0xb30, 0x10, 6, 1),
3755 + PIN_FIELD16(105, 105, 0xd40, 0x10, 4, 1),
3756 + PIN_FIELD16(106, 106, 0xd30, 0x10, 4, 1),
3757 + PINS_FIELD16(107, 110, 0xd50, 0x10, 4, 1),
3758 + PINS_FIELD16(111, 115, 0xce0, 0x10, 4, 1),
3759 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 4, 1),
3760 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 4, 1),
3761 + PINS_FIELD16(118, 121, 0xce0, 0x10, 4, 1),
3762 + PINS_FIELD16(122, 125, 0xb30, 0x10, 7, 1),
3763 + PIN_FIELD16(126, 126, 0xb20, 0x10, 12, 1),
3764 + PINS_FIELD16(127, 142, 0xb30, 0x10, 9, 1),
3765 + PINS_FIELD16(143, 160, 0xb30, 0x10, 10, 1),
3766 + PINS_FIELD16(161, 168, 0xb30, 0x10, 12, 1),
3767 + PINS_FIELD16(169, 183, 0xb30, 0x10, 10, 1),
3768 + PINS_FIELD16(184, 186, 0xb30, 0x10, 9, 1),
3769 + PIN_FIELD16(187, 187, 0xb30, 0x10, 14, 1),
3770 + PIN_FIELD16(188, 188, 0xb20, 0x10, 13, 1),
3771 + PINS_FIELD16(189, 193, 0xb30, 0x10, 15, 1),
3772 + PINS_FIELD16(194, 198, 0xb40, 0x10, 0, 1),
3773 + PIN_FIELD16(199, 199, 0xb20, 0x10, 1, 1),
3774 + PINS_FIELD16(200, 202, 0xb40, 0x10, 1, 1),
3775 + PINS_FIELD16(203, 207, 0xb40, 0x10, 2, 1),
3776 + PINS_FIELD16(208, 209, 0xb40, 0x10, 3, 1),
3777 + PIN_FIELD16(210, 210, 0xb40, 0x10, 4, 1),
3778 + PINS_FIELD16(211, 235, 0xb40, 0x10, 5, 1),
3779 + PINS_FIELD16(236, 241, 0xb40, 0x10, 6, 1),
3780 + PINS_FIELD16(242, 243, 0xb40, 0x10, 7, 1),
3781 + PINS_FIELD16(244, 247, 0xb40, 0x10, 8, 1),
3782 + PIN_FIELD16(248, 248, 0xb40, 0x10, 9, 1),
3783 + PINS_FIELD16(249, 257, 0xfc0, 0x10, 4, 1),
3784 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 4, 1),
3785 + PIN_FIELD16(259, 259, 0xc90, 0x10, 4, 1),
3786 + PIN_FIELD16(260, 260, 0x3a0, 0x10, 4, 1),
3787 + PIN_FIELD16(261, 261, 0xd50, 0x10, 4, 1),
3788 + PINS_FIELD16(262, 277, 0xb40, 0x10, 12, 1),
3789 + PIN_FIELD16(278, 278, 0xb40, 0x10, 13, 1),
3792 +static const struct mtk_pin_field_calc mt7623_pin_smt_range[] = {
3793 + PINS_FIELD16(0, 6, 0xb50, 0x10, 0, 1),
3794 + PINS_FIELD16(7, 9, 0xb50, 0x10, 1, 1),
3795 + PINS_FIELD16(10, 13, 0xb60, 0x10, 3, 1),
3796 + PINS_FIELD16(14, 15, 0xb60, 0x10, 13, 1),
3797 + PINS_FIELD16(16, 17, 0xb70, 0x10, 7, 1),
3798 + PINS_FIELD16(18, 29, 0xb70, 0x10, 13, 1),
3799 + PINS_FIELD16(30, 32, 0xb70, 0x10, 7, 1),
3800 + PINS_FIELD16(33, 37, 0xb70, 0x10, 13, 1),
3801 + PIN_FIELD16(38, 38, 0xb50, 0x10, 13, 1),
3802 + PINS_FIELD16(39, 42, 0xb70, 0x10, 13, 1),
3803 + PINS_FIELD16(43, 45, 0xb50, 0x10, 10, 1),
3804 + PINS_FIELD16(47, 48, 0xb50, 0x10, 11, 1),
3805 + PIN_FIELD16(49, 49, 0xb50, 0x10, 12, 1),
3806 + PINS_FIELD16(50, 52, 0xb50, 0x10, 13, 1),
3807 + PINS_FIELD16(53, 56, 0xb50, 0x10, 14, 1),
3808 + PINS_FIELD16(57, 58, 0xb50, 0x10, 15, 1),
3809 + PIN_FIELD16(59, 59, 0xb60, 0x10, 10, 1),
3810 + PINS_FIELD16(60, 62, 0xb60, 0x10, 0, 1),
3811 + PINS_FIELD16(63, 65, 0xb60, 0x10, 1, 1),
3812 + PINS_FIELD16(66, 71, 0xb60, 0x10, 2, 1),
3813 + PINS_FIELD16(72, 74, 0xb50, 0x10, 12, 1),
3814 + PINS_FIELD16(75, 76, 0xb60, 0x10, 3, 1),
3815 + PINS_FIELD16(77, 78, 0xb60, 0x10, 4, 1),
3816 + PINS_FIELD16(79, 82, 0xb60, 0x10, 5, 1),
3817 + PINS_FIELD16(83, 84, 0xb60, 0x10, 2, 1),
3818 + PIN_FIELD16(85, 85, 0xda0, 0x10, 11, 1),
3819 + PIN_FIELD16(86, 86, 0xd90, 0x10, 11, 1),
3820 + PIN_FIELD16(87, 87, 0xdc0, 0x10, 3, 1),
3821 + PIN_FIELD16(88, 88, 0xdc0, 0x10, 7, 1),
3822 + PIN_FIELD16(89, 89, 0xdc0, 0x10, 11, 1),
3823 + PIN_FIELD16(90, 90, 0xdc0, 0x10, 15, 1),
3824 + PINS_FIELD16(101, 104, 0xb60, 0x10, 6, 1),
3825 + PIN_FIELD16(105, 105, 0xd40, 0x10, 11, 1),
3826 + PIN_FIELD16(106, 106, 0xd30, 0x10, 11, 1),
3827 + PIN_FIELD16(107, 107, 0xd60, 0x10, 3, 1),
3828 + PIN_FIELD16(108, 108, 0xd60, 0x10, 7, 1),
3829 + PIN_FIELD16(109, 109, 0xd60, 0x10, 11, 1),
3830 + PIN_FIELD16(110, 110, 0xd60, 0x10, 15, 1),
3831 + PIN_FIELD16(111, 111, 0xd00, 0x10, 15, 1),
3832 + PIN_FIELD16(112, 112, 0xd00, 0x10, 11, 1),
3833 + PIN_FIELD16(113, 113, 0xd00, 0x10, 7, 1),
3834 + PIN_FIELD16(114, 114, 0xd00, 0x10, 3, 1),
3835 + PIN_FIELD16(115, 115, 0xd10, 0x10, 3, 1),
3836 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 11, 1),
3837 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 11, 1),
3838 + PIN_FIELD16(118, 118, 0xcf0, 0x10, 15, 1),
3839 + PIN_FIELD16(119, 119, 0xcf0, 0x10, 7, 1),
3840 + PIN_FIELD16(120, 120, 0xcf0, 0x10, 3, 1),
3841 + PIN_FIELD16(121, 121, 0xcf0, 0x10, 7, 1),
3842 + PINS_FIELD16(122, 125, 0xb60, 0x10, 7, 1),
3843 + PIN_FIELD16(126, 126, 0xb50, 0x10, 12, 1),
3844 + PINS_FIELD16(127, 142, 0xb60, 0x10, 9, 1),
3845 + PINS_FIELD16(143, 160, 0xb60, 0x10, 10, 1),
3846 + PINS_FIELD16(161, 168, 0xb60, 0x10, 12, 1),
3847 + PINS_FIELD16(169, 183, 0xb60, 0x10, 10, 1),
3848 + PINS_FIELD16(184, 186, 0xb60, 0x10, 9, 1),
3849 + PIN_FIELD16(187, 187, 0xb60, 0x10, 14, 1),
3850 + PIN_FIELD16(188, 188, 0xb50, 0x10, 13, 1),
3851 + PINS_FIELD16(189, 193, 0xb60, 0x10, 15, 1),
3852 + PINS_FIELD16(194, 198, 0xb70, 0x10, 0, 1),
3853 + PIN_FIELD16(199, 199, 0xb50, 0x10, 1, 1),
3854 + PINS_FIELD16(200, 202, 0xb70, 0x10, 1, 1),
3855 + PINS_FIELD16(203, 207, 0xb70, 0x10, 2, 1),
3856 + PINS_FIELD16(208, 209, 0xb70, 0x10, 3, 1),
3857 + PIN_FIELD16(210, 210, 0xb70, 0x10, 4, 1),
3858 + PINS_FIELD16(211, 235, 0xb70, 0x10, 5, 1),
3859 + PINS_FIELD16(236, 241, 0xb70, 0x10, 6, 1),
3860 + PINS_FIELD16(242, 243, 0xb70, 0x10, 7, 1),
3861 + PINS_FIELD16(244, 247, 0xb70, 0x10, 8, 1),
3862 + PIN_FIELD16(248, 248, 0xb70, 0x10, 9, 10),
3863 + PIN_FIELD16(249, 249, 0x140, 0x10, 3, 1),
3864 + PIN_FIELD16(250, 250, 0x130, 0x10, 15, 1),
3865 + PIN_FIELD16(251, 251, 0x130, 0x10, 11, 1),
3866 + PIN_FIELD16(252, 252, 0x130, 0x10, 7, 1),
3867 + PIN_FIELD16(253, 253, 0x130, 0x10, 3, 1),
3868 + PIN_FIELD16(254, 254, 0xf40, 0x10, 15, 1),
3869 + PIN_FIELD16(255, 255, 0xf40, 0x10, 11, 1),
3870 + PIN_FIELD16(256, 256, 0xf40, 0x10, 7, 1),
3871 + PIN_FIELD16(257, 257, 0xf40, 0x10, 3, 1),
3872 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 11, 1),
3873 + PIN_FIELD16(259, 259, 0xc90, 0x10, 11, 1),
3874 + PIN_FIELD16(260, 260, 0x3a0, 0x10, 11, 1),
3875 + PIN_FIELD16(261, 261, 0x0b0, 0x10, 3, 1),
3876 + PINS_FIELD16(262, 277, 0xb70, 0x10, 12, 1),
3877 + PIN_FIELD16(278, 278, 0xb70, 0x10, 13, 1),
3880 +static const struct mtk_pin_field_calc mt7623_pin_pullen_range[] = {
3881 + PIN_FIELD16(0, 278, 0x150, 0x10, 0, 1),
3884 +static const struct mtk_pin_field_calc mt7623_pin_pullsel_range[] = {
3885 + PIN_FIELD16(0, 278, 0x280, 0x10, 0, 1),
3888 +static const struct mtk_pin_field_calc mt7623_pin_drv_range[] = {
3889 + PINS_FIELD16(0, 6, 0xf50, 0x10, 0, 4),
3890 + PINS_FIELD16(7, 9, 0xf50, 0x10, 4, 4),
3891 + PINS_FIELD16(10, 13, 0xf50, 0x10, 4, 4),
3892 + PINS_FIELD16(14, 15, 0xf50, 0x10, 12, 4),
3893 + PINS_FIELD16(16, 17, 0xf60, 0x10, 0, 4),
3894 + PINS_FIELD16(18, 21, 0xf60, 0x10, 0, 4),
3895 + PINS_FIELD16(22, 26, 0xf60, 0x10, 8, 4),
3896 + PINS_FIELD16(27, 29, 0xf60, 0x10, 12, 4),
3897 + PINS_FIELD16(30, 32, 0xf60, 0x10, 0, 4),
3898 + PINS_FIELD16(33, 37, 0xf70, 0x10, 0, 4),
3899 + PIN_FIELD16(38, 38, 0xf70, 0x10, 4, 4),
3900 + PINS_FIELD16(39, 42, 0xf70, 0x10, 8, 4),
3901 + PINS_FIELD16(43, 45, 0xf70, 0x10, 12, 4),
3902 + PINS_FIELD16(47, 48, 0xf80, 0x10, 0, 4),
3903 + PIN_FIELD16(49, 49, 0xf80, 0x10, 4, 4),
3904 + PINS_FIELD16(50, 52, 0xf70, 0x10, 4, 4),
3905 + PINS_FIELD16(53, 56, 0xf80, 0x10, 12, 4),
3906 + PINS_FIELD16(60, 62, 0xf90, 0x10, 8, 4),
3907 + PINS_FIELD16(63, 65, 0xf90, 0x10, 12, 4),
3908 + PINS_FIELD16(66, 71, 0xfa0, 0x10, 0, 4),
3909 + PINS_FIELD16(72, 74, 0xf80, 0x10, 4, 4),
3910 + PIN_FIELD16(85, 85, 0xda0, 0x10, 0, 4),
3911 + PIN_FIELD16(86, 86, 0xd90, 0x10, 0, 4),
3912 + PINS_FIELD16(87, 90, 0xdb0, 0x10, 0, 4),
3913 + PIN_FIELD16(105, 105, 0xd40, 0x10, 0, 4),
3914 + PIN_FIELD16(106, 106, 0xd30, 0x10, 0, 4),
3915 + PINS_FIELD16(107, 110, 0xd50, 0x10, 0, 4),
3916 + PINS_FIELD16(111, 115, 0xce0, 0x10, 0, 4),
3917 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 0, 4),
3918 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 0, 4),
3919 + PINS_FIELD16(118, 121, 0xce0, 0x10, 0, 4),
3920 + PIN_FIELD16(126, 126, 0xf80, 0x10, 4, 4),
3921 + PIN_FIELD16(188, 188, 0xf70, 0x10, 4, 4),
3922 + PINS_FIELD16(189, 193, 0xfe0, 0x10, 8, 4),
3923 + PINS_FIELD16(194, 198, 0xfe0, 0x10, 12, 4),
3924 + PIN_FIELD16(199, 199, 0xf50, 0x10, 4, 4),
3925 + PINS_FIELD16(200, 202, 0xfd0, 0x10, 0, 4),
3926 + PINS_FIELD16(203, 207, 0xfd0, 0x10, 4, 4),
3927 + PINS_FIELD16(208, 209, 0xfd0, 0x10, 8, 4),
3928 + PIN_FIELD16(210, 210, 0xfd0, 0x10, 12, 4),
3929 + PINS_FIELD16(211, 235, 0xff0, 0x10, 0, 4),
3930 + PINS_FIELD16(236, 241, 0xff0, 0x10, 4, 4),
3931 + PINS_FIELD16(242, 243, 0xff0, 0x10, 8, 4),
3932 + PIN_FIELD16(248, 248, 0xf00, 0x10, 0, 4),
3933 + PINS_FIELD16(249, 256, 0xfc0, 0x10, 0, 4),
3934 + PIN_FIELD16(257, 257, 0xce0, 0x10, 0, 4),
3935 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 0, 4),
3936 + PIN_FIELD16(259, 259, 0xc90, 0x10, 0, 4),
3937 + PIN_FIELD16(260, 260, 0x3a0, 0x10, 0, 4),
3938 + PIN_FIELD16(261, 261, 0xd50, 0x10, 0, 4),
3939 + PINS_FIELD16(262, 277, 0xf00, 0x10, 8, 4),
3940 + PIN_FIELD16(278, 278, 0xf70, 0x10, 8, 4),
3943 +static const struct mtk_pin_field_calc mt7623_pin_tdsel_range[] = {
3944 + PINS_FIELD16(262, 276, 0x4c0, 0x10, 0, 4),
3947 +static const struct mtk_pin_field_calc mt7623_pin_pupd_range[] = {
3949 + PIN_FIELD16(111, 111, 0xd00, 0x10, 12, 1),
3950 + PIN_FIELD16(112, 112, 0xd00, 0x10, 8, 1),
3951 + PIN_FIELD16(113, 113, 0xd00, 0x10, 4, 1),
3952 + PIN_FIELD16(114, 114, 0xd00, 0x10, 0, 1),
3953 + PIN_FIELD16(115, 115, 0xd10, 0x10, 0, 1),
3954 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 8, 1),
3955 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 8, 1),
3956 + PIN_FIELD16(118, 118, 0xcf0, 0x10, 12, 1),
3957 + PIN_FIELD16(119, 119, 0xcf0, 0x10, 8, 1),
3958 + PIN_FIELD16(120, 120, 0xcf0, 0x10, 4, 1),
3959 + PIN_FIELD16(121, 121, 0xcf0, 0x10, 0, 1),
3961 + PIN_FIELD16(105, 105, 0xd40, 0x10, 8, 1),
3962 + PIN_FIELD16(106, 106, 0xd30, 0x10, 8, 1),
3963 + PIN_FIELD16(107, 107, 0xd60, 0x10, 0, 1),
3964 + PIN_FIELD16(108, 108, 0xd60, 0x10, 10, 1),
3965 + PIN_FIELD16(109, 109, 0xd60, 0x10, 4, 1),
3966 + PIN_FIELD16(110, 110, 0xc60, 0x10, 12, 1),
3968 + PIN_FIELD16(85, 85, 0xda0, 0x10, 8, 1),
3969 + PIN_FIELD16(86, 86, 0xd90, 0x10, 8, 1),
3970 + PIN_FIELD16(87, 87, 0xdc0, 0x10, 0, 1),
3971 + PIN_FIELD16(88, 88, 0xdc0, 0x10, 10, 1),
3972 + PIN_FIELD16(89, 89, 0xdc0, 0x10, 4, 1),
3973 + PIN_FIELD16(90, 90, 0xdc0, 0x10, 12, 1),
3975 + PIN_FIELD16(249, 249, 0x140, 0x10, 0, 1),
3976 + PIN_FIELD16(250, 250, 0x130, 0x10, 12, 1),
3977 + PIN_FIELD16(251, 251, 0x130, 0x10, 8, 1),
3978 + PIN_FIELD16(252, 252, 0x130, 0x10, 4, 1),
3979 + PIN_FIELD16(253, 253, 0x130, 0x10, 0, 1),
3980 + PIN_FIELD16(254, 254, 0xf40, 0x10, 12, 1),
3981 + PIN_FIELD16(255, 255, 0xf40, 0x10, 8, 1),
3982 + PIN_FIELD16(256, 256, 0xf40, 0x10, 4, 1),
3983 + PIN_FIELD16(257, 257, 0xf40, 0x10, 0, 1),
3984 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 8, 1),
3985 + PIN_FIELD16(259, 259, 0xc90, 0x10, 8, 1),
3986 + PIN_FIELD16(261, 261, 0x140, 0x10, 8, 1),
3989 +static const struct mtk_pin_field_calc mt7623_pin_r1_range[] = {
3991 + PIN_FIELD16(111, 111, 0xd00, 0x10, 13, 1),
3992 + PIN_FIELD16(112, 112, 0xd00, 0x10, 9, 1),
3993 + PIN_FIELD16(113, 113, 0xd00, 0x10, 5, 1),
3994 + PIN_FIELD16(114, 114, 0xd00, 0x10, 1, 1),
3995 + PIN_FIELD16(115, 115, 0xd10, 0x10, 1, 1),
3996 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 9, 1),
3997 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 9, 1),
3998 + PIN_FIELD16(118, 118, 0xcf0, 0x10, 13, 1),
3999 + PIN_FIELD16(119, 119, 0xcf0, 0x10, 9, 1),
4000 + PIN_FIELD16(120, 120, 0xcf0, 0x10, 5, 1),
4001 + PIN_FIELD16(121, 121, 0xcf0, 0x10, 1, 1),
4003 + PIN_FIELD16(105, 105, 0xd40, 0x10, 9, 1),
4004 + PIN_FIELD16(106, 106, 0xd30, 0x10, 9, 1),
4005 + PIN_FIELD16(107, 107, 0xd60, 0x10, 1, 1),
4006 + PIN_FIELD16(108, 108, 0xd60, 0x10, 9, 1),
4007 + PIN_FIELD16(109, 109, 0xd60, 0x10, 5, 1),
4008 + PIN_FIELD16(110, 110, 0xc60, 0x10, 13, 1),
4010 + PIN_FIELD16(85, 85, 0xda0, 0x10, 9, 1),
4011 + PIN_FIELD16(86, 86, 0xd90, 0x10, 9, 1),
4012 + PIN_FIELD16(87, 87, 0xdc0, 0x10, 1, 1),
4013 + PIN_FIELD16(88, 88, 0xdc0, 0x10, 9, 1),
4014 + PIN_FIELD16(89, 89, 0xdc0, 0x10, 5, 1),
4015 + PIN_FIELD16(90, 90, 0xdc0, 0x10, 13, 1),
4017 + PIN_FIELD16(249, 249, 0x140, 0x10, 1, 1),
4018 + PIN_FIELD16(250, 250, 0x130, 0x10, 13, 1),
4019 + PIN_FIELD16(251, 251, 0x130, 0x10, 9, 1),
4020 + PIN_FIELD16(252, 252, 0x130, 0x10, 5, 1),
4021 + PIN_FIELD16(253, 253, 0x130, 0x10, 1, 1),
4022 + PIN_FIELD16(254, 254, 0xf40, 0x10, 13, 1),
4023 + PIN_FIELD16(255, 255, 0xf40, 0x10, 9, 1),
4024 + PIN_FIELD16(256, 256, 0xf40, 0x10, 5, 1),
4025 + PIN_FIELD16(257, 257, 0xf40, 0x10, 1, 1),
4026 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 9, 1),
4027 + PIN_FIELD16(259, 259, 0xc90, 0x10, 9, 1),
4028 + PIN_FIELD16(261, 261, 0x140, 0x10, 9, 1),
4031 +static const struct mtk_pin_field_calc mt7623_pin_r0_range[] = {
4033 + PIN_FIELD16(111, 111, 0xd00, 0x10, 14, 1),
4034 + PIN_FIELD16(112, 112, 0xd00, 0x10, 10, 1),
4035 + PIN_FIELD16(113, 113, 0xd00, 0x10, 6, 1),
4036 + PIN_FIELD16(114, 114, 0xd00, 0x10, 2, 1),
4037 + PIN_FIELD16(115, 115, 0xd10, 0x10, 2, 1),
4038 + PIN_FIELD16(116, 116, 0xcd0, 0x10, 10, 1),
4039 + PIN_FIELD16(117, 117, 0xcc0, 0x10, 10, 1),
4040 + PIN_FIELD16(118, 118, 0xcf0, 0x10, 14, 1),
4041 + PIN_FIELD16(119, 119, 0xcf0, 0x10, 10, 1),
4042 + PIN_FIELD16(120, 120, 0xcf0, 0x10, 6, 1),
4043 + PIN_FIELD16(121, 121, 0xcf0, 0x10, 2, 1),
4045 + PIN_FIELD16(105, 105, 0xd40, 0x10, 10, 1),
4046 + PIN_FIELD16(106, 106, 0xd30, 0x10, 10, 1),
4047 + PIN_FIELD16(107, 107, 0xd60, 0x10, 2, 1),
4048 + PIN_FIELD16(108, 108, 0xd60, 0x10, 8, 1),
4049 + PIN_FIELD16(109, 109, 0xd60, 0x10, 6, 1),
4050 + PIN_FIELD16(110, 110, 0xc60, 0x10, 14, 1),
4052 + PIN_FIELD16(85, 85, 0xda0, 0x10, 10, 1),
4053 + PIN_FIELD16(86, 86, 0xd90, 0x10, 10, 1),
4054 + PIN_FIELD16(87, 87, 0xdc0, 0x10, 2, 1),
4055 + PIN_FIELD16(88, 88, 0xdc0, 0x10, 8, 1),
4056 + PIN_FIELD16(89, 89, 0xdc0, 0x10, 6, 1),
4057 + PIN_FIELD16(90, 90, 0xdc0, 0x10, 14, 1),
4059 + PIN_FIELD16(249, 249, 0x140, 0x10, 2, 1),
4060 + PIN_FIELD16(250, 250, 0x130, 0x10, 14, 1),
4061 + PIN_FIELD16(251, 251, 0x130, 0x10, 10, 1),
4062 + PIN_FIELD16(252, 252, 0x130, 0x10, 6, 1),
4063 + PIN_FIELD16(253, 253, 0x130, 0x10, 2, 1),
4064 + PIN_FIELD16(254, 254, 0xf40, 0x10, 14, 1),
4065 + PIN_FIELD16(255, 255, 0xf40, 0x10, 10, 1),
4066 + PIN_FIELD16(256, 256, 0xf40, 0x10, 6, 1),
4067 + PIN_FIELD16(257, 257, 0xf40, 0x10, 5, 1),
4068 + PIN_FIELD16(258, 258, 0xcb0, 0x10, 10, 1),
4069 + PIN_FIELD16(259, 259, 0xc90, 0x10, 10, 1),
4070 + PIN_FIELD16(261, 261, 0x140, 0x10, 10, 1),
4073 +static const struct mtk_pin_reg_calc mt7623_reg_cals[] = {
4074 + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt7623_pin_mode_range),
4075 + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt7623_pin_dir_range),
4076 + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt7623_pin_di_range),
4077 + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt7623_pin_do_range),
4078 + [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt7623_pin_smt_range),
4079 + [PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt7623_pin_pullsel_range),
4080 + [PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt7623_pin_pullen_range),
4081 + [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt7623_pin_drv_range),
4082 + [PINCTRL_PIN_REG_TDSEL] = MTK_RANGE(mt7623_pin_tdsel_range),
4083 + [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt7623_pin_ies_range),
4084 + [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt7623_pin_pupd_range),
4085 + [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt7623_pin_r0_range),
4086 + [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt7623_pin_r1_range),
4089 +static const struct mtk_pin_desc mt7623_pins[] = {
4090 + MT7623_PIN(0, "PWRAP_SPI0_MI", 148, DRV_GRP3),
4091 + MT7623_PIN(1, "PWRAP_SPI0_MO", 149, DRV_GRP3),
4092 + MT7623_PIN(2, "PWRAP_INT", 150, DRV_GRP3),
4093 + MT7623_PIN(3, "PWRAP_SPI0_CK", 151, DRV_GRP3),
4094 + MT7623_PIN(4, "PWRAP_SPI0_CSN", 152, DRV_GRP3),
4095 + MT7623_PIN(5, "PWRAP_SPI0_CK2", 153, DRV_GRP3),
4096 + MT7623_PIN(6, "PWRAP_SPI0_CSN2", 154, DRV_GRP3),
4097 + MT7623_PIN(7, "SPI1_CSN", 155, DRV_GRP3),
4098 + MT7623_PIN(8, "SPI1_MI", 156, DRV_GRP3),
4099 + MT7623_PIN(9, "SPI1_MO", 157, DRV_GRP3),
4100 + MT7623_PIN(10, "RTC32K_CK", 158, DRV_GRP3),
4101 + MT7623_PIN(11, "WATCHDOG", 159, DRV_GRP3),
4102 + MT7623_PIN(12, "SRCLKENA", 160, DRV_GRP3),
4103 + MT7623_PIN(13, "SRCLKENAI", 161, DRV_GRP3),
4104 + MT7623_PIN(14, "URXD2", 162, DRV_GRP1),
4105 + MT7623_PIN(15, "UTXD2", 163, DRV_GRP1),
4106 + MT7623_PIN(16, "I2S5_DATA_IN", 164, DRV_GRP1),
4107 + MT7623_PIN(17, "I2S5_BCK", 165, DRV_GRP1),
4108 + MT7623_PIN(18, "PCM_CLK", 166, DRV_GRP1),
4109 + MT7623_PIN(19, "PCM_SYNC", 167, DRV_GRP1),
4110 + MT7623_PIN(20, "PCM_RX", EINT_NA, DRV_GRP1),
4111 + MT7623_PIN(21, "PCM_TX", EINT_NA, DRV_GRP1),
4112 + MT7623_PIN(22, "EINT0", 0, DRV_GRP1),
4113 + MT7623_PIN(23, "EINT1", 1, DRV_GRP1),
4114 + MT7623_PIN(24, "EINT2", 2, DRV_GRP1),
4115 + MT7623_PIN(25, "EINT3", 3, DRV_GRP1),
4116 + MT7623_PIN(26, "EINT4", 4, DRV_GRP1),
4117 + MT7623_PIN(27, "EINT5", 5, DRV_GRP1),
4118 + MT7623_PIN(28, "EINT6", 6, DRV_GRP1),
4119 + MT7623_PIN(29, "EINT7", 7, DRV_GRP1),
4120 + MT7623_PIN(30, "I2S5_LRCK", 12, DRV_GRP1),
4121 + MT7623_PIN(31, "I2S5_MCLK", 13, DRV_GRP1),
4122 + MT7623_PIN(32, "I2S5_DATA", 14, DRV_GRP1),
4123 + MT7623_PIN(33, "I2S1_DATA", 15, DRV_GRP1),
4124 + MT7623_PIN(34, "I2S1_DATA_IN", 16, DRV_GRP1),
4125 + MT7623_PIN(35, "I2S1_BCK", 17, DRV_GRP1),
4126 + MT7623_PIN(36, "I2S1_LRCK", 18, DRV_GRP1),
4127 + MT7623_PIN(37, "I2S1_MCLK", 19, DRV_GRP1),
4128 + MT7623_PIN(38, "I2S2_DATA", 20, DRV_GRP1),
4129 + MT7623_PIN(39, "JTMS", 21, DRV_GRP3),
4130 + MT7623_PIN(40, "JTCK", 22, DRV_GRP3),
4131 + MT7623_PIN(41, "JTDI", 23, DRV_GRP3),
4132 + MT7623_PIN(42, "JTDO", 24, DRV_GRP3),
4133 + MT7623_PIN(43, "NCLE", 25, DRV_GRP1),
4134 + MT7623_PIN(44, "NCEB1", 26, DRV_GRP1),
4135 + MT7623_PIN(45, "NCEB0", 27, DRV_GRP1),
4136 + MT7623_PIN(46, "IR", 28, DRV_FIXED),
4137 + MT7623_PIN(47, "NREB", 29, DRV_GRP1),
4138 + MT7623_PIN(48, "NRNB", 30, DRV_GRP1),
4139 + MT7623_PIN(49, "I2S0_DATA", 31, DRV_GRP1),
4140 + MT7623_PIN(50, "I2S2_BCK", 32, DRV_GRP1),
4141 + MT7623_PIN(51, "I2S2_DATA_IN", 33, DRV_GRP1),
4142 + MT7623_PIN(52, "I2S2_LRCK", 34, DRV_GRP1),
4143 + MT7623_PIN(53, "SPI0_CSN", 35, DRV_GRP1),
4144 + MT7623_PIN(54, "SPI0_CK", 36, DRV_GRP1),
4145 + MT7623_PIN(55, "SPI0_MI", 37, DRV_GRP1),
4146 + MT7623_PIN(56, "SPI0_MO", 38, DRV_GRP1),
4147 + MT7623_PIN(57, "SDA1", 39, DRV_FIXED),
4148 + MT7623_PIN(58, "SCL1", 40, DRV_FIXED),
4149 + MT7623_PIN(59, "RAMBUF_I_CLK", EINT_NA, DRV_FIXED),
4150 + MT7623_PIN(60, "WB_RSTB", 41, DRV_GRP3),
4151 + MT7623_PIN(61, "F2W_DATA", 42, DRV_GRP3),
4152 + MT7623_PIN(62, "F2W_CLK", 43, DRV_GRP3),
4153 + MT7623_PIN(63, "WB_SCLK", 44, DRV_GRP3),
4154 + MT7623_PIN(64, "WB_SDATA", 45, DRV_GRP3),
4155 + MT7623_PIN(65, "WB_SEN", 46, DRV_GRP3),
4156 + MT7623_PIN(66, "WB_CRTL0", 47, DRV_GRP3),
4157 + MT7623_PIN(67, "WB_CRTL1", 48, DRV_GRP3),
4158 + MT7623_PIN(68, "WB_CRTL2", 49, DRV_GRP3),
4159 + MT7623_PIN(69, "WB_CRTL3", 50, DRV_GRP3),
4160 + MT7623_PIN(70, "WB_CRTL4", 51, DRV_GRP3),
4161 + MT7623_PIN(71, "WB_CRTL5", 52, DRV_GRP3),
4162 + MT7623_PIN(72, "I2S0_DATA_IN", 53, DRV_GRP1),
4163 + MT7623_PIN(73, "I2S0_LRCK", 54, DRV_GRP1),
4164 + MT7623_PIN(74, "I2S0_BCK", 55, DRV_GRP1),
4165 + MT7623_PIN(75, "SDA0", 56, DRV_FIXED),
4166 + MT7623_PIN(76, "SCL0", 57, DRV_FIXED),
4167 + MT7623_PIN(77, "SDA2", 58, DRV_FIXED),
4168 + MT7623_PIN(78, "SCL2", 59, DRV_FIXED),
4169 + MT7623_PIN(79, "URXD0", 60, DRV_FIXED),
4170 + MT7623_PIN(80, "UTXD0", 61, DRV_FIXED),
4171 + MT7623_PIN(81, "URXD1", 62, DRV_FIXED),
4172 + MT7623_PIN(82, "UTXD1", 63, DRV_FIXED),
4173 + MT7623_PIN(83, "LCM_RST", 64, DRV_FIXED),
4174 + MT7623_PIN(84, "DSI_TE", 65, DRV_FIXED),
4175 + MT7623_PIN(85, "MSDC2_CMD", 66, DRV_GRP4),
4176 + MT7623_PIN(86, "MSDC2_CLK", 67, DRV_GRP4),
4177 + MT7623_PIN(87, "MSDC2_DAT0", 68, DRV_GRP4),
4178 + MT7623_PIN(88, "MSDC2_DAT1", 69, DRV_GRP4),
4179 + MT7623_PIN(89, "MSDC2_DAT2", 70, DRV_GRP4),
4180 + MT7623_PIN(90, "MSDC2_DAT3", 71, DRV_GRP4),
4181 + MT7623_PIN(91, "TDN3", EINT_NA, DRV_FIXED),
4182 + MT7623_PIN(92, "TDP3", EINT_NA, DRV_FIXED),
4183 + MT7623_PIN(93, "TDN2", EINT_NA, DRV_FIXED),
4184 + MT7623_PIN(94, "TDP2", EINT_NA, DRV_FIXED),
4185 + MT7623_PIN(95, "TCN", EINT_NA, DRV_FIXED),
4186 + MT7623_PIN(96, "TCP", EINT_NA, DRV_FIXED),
4187 + MT7623_PIN(97, "TDN1", EINT_NA, DRV_FIXED),
4188 + MT7623_PIN(98, "TDP1", EINT_NA, DRV_FIXED),
4189 + MT7623_PIN(99, "TDN0", EINT_NA, DRV_FIXED),
4190 + MT7623_PIN(100, "TDP0", EINT_NA, DRV_FIXED),
4191 + MT7623_PIN(101, "SPI2_CSN", 74, DRV_FIXED),
4192 + MT7623_PIN(102, "SPI2_MI", 75, DRV_FIXED),
4193 + MT7623_PIN(103, "SPI2_MO", 76, DRV_FIXED),
4194 + MT7623_PIN(104, "SPI2_CLK", 77, DRV_FIXED),
4195 + MT7623_PIN(105, "MSDC1_CMD", 78, DRV_GRP4),
4196 + MT7623_PIN(106, "MSDC1_CLK", 79, DRV_GRP4),
4197 + MT7623_PIN(107, "MSDC1_DAT0", 80, DRV_GRP4),
4198 + MT7623_PIN(108, "MSDC1_DAT1", 81, DRV_GRP4),
4199 + MT7623_PIN(109, "MSDC1_DAT2", 82, DRV_GRP4),
4200 + MT7623_PIN(110, "MSDC1_DAT3", 83, DRV_GRP4),
4201 + MT7623_PIN(111, "MSDC0_DAT7", 84, DRV_GRP4),
4202 + MT7623_PIN(112, "MSDC0_DAT6", 85, DRV_GRP4),
4203 + MT7623_PIN(113, "MSDC0_DAT5", 86, DRV_GRP4),
4204 + MT7623_PIN(114, "MSDC0_DAT4", 87, DRV_GRP4),
4205 + MT7623_PIN(115, "MSDC0_RSTB", 88, DRV_GRP4),
4206 + MT7623_PIN(116, "MSDC0_CMD", 89, DRV_GRP4),
4207 + MT7623_PIN(117, "MSDC0_CLK", 90, DRV_GRP4),
4208 + MT7623_PIN(118, "MSDC0_DAT3", 91, DRV_GRP4),
4209 + MT7623_PIN(119, "MSDC0_DAT2", 92, DRV_GRP4),
4210 + MT7623_PIN(120, "MSDC0_DAT1", 93, DRV_GRP4),
4211 + MT7623_PIN(121, "MSDC0_DAT0", 94, DRV_GRP4),
4212 + MT7623_PIN(122, "CEC", 95, DRV_FIXED),
4213 + MT7623_PIN(123, "HTPLG", 96, DRV_FIXED),
4214 + MT7623_PIN(124, "HDMISCK", 97, DRV_FIXED),
4215 + MT7623_PIN(125, "HDMISD", 98, DRV_FIXED),
4216 + MT7623_PIN(126, "I2S0_MCLK", 99, DRV_GRP1),
4217 + MT7623_PIN(127, "RAMBUF_IDATA0", EINT_NA, DRV_FIXED),
4218 + MT7623_PIN(128, "RAMBUF_IDATA1", EINT_NA, DRV_FIXED),
4219 + MT7623_PIN(129, "RAMBUF_IDATA2", EINT_NA, DRV_FIXED),
4220 + MT7623_PIN(130, "RAMBUF_IDATA3", EINT_NA, DRV_FIXED),
4221 + MT7623_PIN(131, "RAMBUF_IDATA4", EINT_NA, DRV_FIXED),
4222 + MT7623_PIN(132, "RAMBUF_IDATA5", EINT_NA, DRV_FIXED),
4223 + MT7623_PIN(133, "RAMBUF_IDATA6", EINT_NA, DRV_FIXED),
4224 + MT7623_PIN(134, "RAMBUF_IDATA7", EINT_NA, DRV_FIXED),
4225 + MT7623_PIN(135, "RAMBUF_IDATA8", EINT_NA, DRV_FIXED),
4226 + MT7623_PIN(136, "RAMBUF_IDATA9", EINT_NA, DRV_FIXED),
4227 + MT7623_PIN(137, "RAMBUF_IDATA10", EINT_NA, DRV_FIXED),
4228 + MT7623_PIN(138, "RAMBUF_IDATA11", EINT_NA, DRV_FIXED),
4229 + MT7623_PIN(139, "RAMBUF_IDATA12", EINT_NA, DRV_FIXED),
4230 + MT7623_PIN(140, "RAMBUF_IDATA13", EINT_NA, DRV_FIXED),
4231 + MT7623_PIN(141, "RAMBUF_IDATA14", EINT_NA, DRV_FIXED),
4232 + MT7623_PIN(142, "RAMBUF_IDATA15", EINT_NA, DRV_FIXED),
4233 + MT7623_PIN(143, "RAMBUF_ODATA0", EINT_NA, DRV_FIXED),
4234 + MT7623_PIN(144, "RAMBUF_ODATA1", EINT_NA, DRV_FIXED),
4235 + MT7623_PIN(145, "RAMBUF_ODATA2", EINT_NA, DRV_FIXED),
4236 + MT7623_PIN(146, "RAMBUF_ODATA3", EINT_NA, DRV_FIXED),
4237 + MT7623_PIN(147, "RAMBUF_ODATA4", EINT_NA, DRV_FIXED),
4238 + MT7623_PIN(148, "RAMBUF_ODATA5", EINT_NA, DRV_FIXED),
4239 + MT7623_PIN(149, "RAMBUF_ODATA6", EINT_NA, DRV_FIXED),
4240 + MT7623_PIN(150, "RAMBUF_ODATA7", EINT_NA, DRV_FIXED),
4241 + MT7623_PIN(151, "RAMBUF_ODATA8", EINT_NA, DRV_FIXED),
4242 + MT7623_PIN(152, "RAMBUF_ODATA9", EINT_NA, DRV_FIXED),
4243 + MT7623_PIN(153, "RAMBUF_ODATA10", EINT_NA, DRV_FIXED),
4244 + MT7623_PIN(154, "RAMBUF_ODATA11", EINT_NA, DRV_FIXED),
4245 + MT7623_PIN(155, "RAMBUF_ODATA12", EINT_NA, DRV_FIXED),
4246 + MT7623_PIN(156, "RAMBUF_ODATA13", EINT_NA, DRV_FIXED),
4247 + MT7623_PIN(157, "RAMBUF_ODATA14", EINT_NA, DRV_FIXED),
4248 + MT7623_PIN(158, "RAMBUF_ODATA15", EINT_NA, DRV_FIXED),
4249 + MT7623_PIN(159, "RAMBUF_BE0", EINT_NA, DRV_FIXED),
4250 + MT7623_PIN(160, "RAMBUF_BE1", EINT_NA, DRV_FIXED),
4251 + MT7623_PIN(161, "AP2PT_INT", EINT_NA, DRV_FIXED),
4252 + MT7623_PIN(162, "AP2PT_INT_CLR", EINT_NA, DRV_FIXED),
4253 + MT7623_PIN(163, "PT2AP_INT", EINT_NA, DRV_FIXED),
4254 + MT7623_PIN(164, "PT2AP_INT_CLR", EINT_NA, DRV_FIXED),
4255 + MT7623_PIN(165, "AP2UP_INT", EINT_NA, DRV_FIXED),
4256 + MT7623_PIN(166, "AP2UP_INT_CLR", EINT_NA, DRV_FIXED),
4257 + MT7623_PIN(167, "UP2AP_INT", EINT_NA, DRV_FIXED),
4258 + MT7623_PIN(168, "UP2AP_INT_CLR", EINT_NA, DRV_FIXED),
4259 + MT7623_PIN(169, "RAMBUF_ADDR0", EINT_NA, DRV_FIXED),
4260 + MT7623_PIN(170, "RAMBUF_ADDR1", EINT_NA, DRV_FIXED),
4261 + MT7623_PIN(171, "RAMBUF_ADDR2", EINT_NA, DRV_FIXED),
4262 + MT7623_PIN(172, "RAMBUF_ADDR3", EINT_NA, DRV_FIXED),
4263 + MT7623_PIN(173, "RAMBUF_ADDR4", EINT_NA, DRV_FIXED),
4264 + MT7623_PIN(174, "RAMBUF_ADDR5", EINT_NA, DRV_FIXED),
4265 + MT7623_PIN(175, "RAMBUF_ADDR6", EINT_NA, DRV_FIXED),
4266 + MT7623_PIN(176, "RAMBUF_ADDR7", EINT_NA, DRV_FIXED),
4267 + MT7623_PIN(177, "RAMBUF_ADDR8", EINT_NA, DRV_FIXED),
4268 + MT7623_PIN(178, "RAMBUF_ADDR9", EINT_NA, DRV_FIXED),
4269 + MT7623_PIN(179, "RAMBUF_ADDR10", EINT_NA, DRV_FIXED),
4270 + MT7623_PIN(180, "RAMBUF_RW", EINT_NA, DRV_FIXED),
4271 + MT7623_PIN(181, "RAMBUF_LAST", EINT_NA, DRV_FIXED),
4272 + MT7623_PIN(182, "RAMBUF_HP", EINT_NA, DRV_FIXED),
4273 + MT7623_PIN(183, "RAMBUF_REQ", EINT_NA, DRV_FIXED),
4274 + MT7623_PIN(184, "RAMBUF_ALE", EINT_NA, DRV_FIXED),
4275 + MT7623_PIN(185, "RAMBUF_DLE", EINT_NA, DRV_FIXED),
4276 + MT7623_PIN(186, "RAMBUF_WDLE", EINT_NA, DRV_FIXED),
4277 + MT7623_PIN(187, "RAMBUF_O_CLK", EINT_NA, DRV_FIXED),
4278 + MT7623_PIN(188, "I2S2_MCLK", 100, DRV_GRP1),
4279 + MT7623_PIN(189, "I2S3_DATA", 101, DRV_GRP1),
4280 + MT7623_PIN(190, "I2S3_DATA_IN", 102, DRV_GRP1),
4281 + MT7623_PIN(191, "I2S3_BCK", 103, DRV_GRP1),
4282 + MT7623_PIN(192, "I2S3_LRCK", 104, DRV_GRP1),
4283 + MT7623_PIN(193, "I2S3_MCLK", 105, DRV_GRP1),
4284 + MT7623_PIN(194, "I2S4_DATA", 106, DRV_GRP1),
4285 + MT7623_PIN(195, "I2S4_DATA_IN", 107, DRV_GRP1),
4286 + MT7623_PIN(196, "I2S4_BCK", 108, DRV_GRP1),
4287 + MT7623_PIN(197, "I2S4_LRCK", 109, DRV_GRP1),
4288 + MT7623_PIN(198, "I2S4_MCLK", 110, DRV_GRP1),
4289 + MT7623_PIN(199, "SPI1_CLK", 111, DRV_GRP3),
4290 + MT7623_PIN(200, "SPDIF_OUT", 112, DRV_GRP1),
4291 + MT7623_PIN(201, "SPDIF_IN0", 113, DRV_GRP1),
4292 + MT7623_PIN(202, "SPDIF_IN1", 114, DRV_GRP1),
4293 + MT7623_PIN(203, "PWM0", 115, DRV_GRP1),
4294 + MT7623_PIN(204, "PWM1", 116, DRV_GRP1),
4295 + MT7623_PIN(205, "PWM2", 117, DRV_GRP1),
4296 + MT7623_PIN(206, "PWM3", 118, DRV_GRP1),
4297 + MT7623_PIN(207, "PWM4", 119, DRV_GRP1),
4298 + MT7623_PIN(208, "AUD_EXT_CK1", 120, DRV_GRP1),
4299 + MT7623_PIN(209, "AUD_EXT_CK2", 121, DRV_GRP1),
4300 + MT7623_PIN(210, "AUD_CLOCK", EINT_NA, DRV_GRP3),
4301 + MT7623_PIN(211, "DVP_RESET", EINT_NA, DRV_GRP3),
4302 + MT7623_PIN(212, "DVP_CLOCK", EINT_NA, DRV_GRP3),
4303 + MT7623_PIN(213, "DVP_CS", EINT_NA, DRV_GRP3),
4304 + MT7623_PIN(214, "DVP_CK", EINT_NA, DRV_GRP3),
4305 + MT7623_PIN(215, "DVP_DI", EINT_NA, DRV_GRP3),
4306 + MT7623_PIN(216, "DVP_DO", EINT_NA, DRV_GRP3),
4307 + MT7623_PIN(217, "AP_CS", EINT_NA, DRV_GRP3),
4308 + MT7623_PIN(218, "AP_CK", EINT_NA, DRV_GRP3),
4309 + MT7623_PIN(219, "AP_DI", EINT_NA, DRV_GRP3),
4310 + MT7623_PIN(220, "AP_DO", EINT_NA, DRV_GRP3),
4311 + MT7623_PIN(221, "DVD_BCLK", EINT_NA, DRV_GRP3),
4312 + MT7623_PIN(222, "T8032_CLK", EINT_NA, DRV_GRP3),
4313 + MT7623_PIN(223, "AP_BCLK", EINT_NA, DRV_GRP3),
4314 + MT7623_PIN(224, "HOST_CS", EINT_NA, DRV_GRP3),
4315 + MT7623_PIN(225, "HOST_CK", EINT_NA, DRV_GRP3),
4316 + MT7623_PIN(226, "HOST_DO0", EINT_NA, DRV_GRP3),
4317 + MT7623_PIN(227, "HOST_DO1", EINT_NA, DRV_GRP3),
4318 + MT7623_PIN(228, "SLV_CS", EINT_NA, DRV_GRP3),
4319 + MT7623_PIN(229, "SLV_CK", EINT_NA, DRV_GRP3),
4320 + MT7623_PIN(230, "SLV_DI0", EINT_NA, DRV_GRP3),
4321 + MT7623_PIN(231, "SLV_DI1", EINT_NA, DRV_GRP3),
4322 + MT7623_PIN(232, "AP2DSP_INT", EINT_NA, DRV_GRP3),
4323 + MT7623_PIN(233, "AP2DSP_INT_CLR", EINT_NA, DRV_GRP3),
4324 + MT7623_PIN(234, "DSP2AP_INT", EINT_NA, DRV_GRP3),
4325 + MT7623_PIN(235, "DSP2AP_INT_CLR", EINT_NA, DRV_GRP3),
4326 + MT7623_PIN(236, "EXT_SDIO3", 122, DRV_GRP1),
4327 + MT7623_PIN(237, "EXT_SDIO2", 123, DRV_GRP1),
4328 + MT7623_PIN(238, "EXT_SDIO1", 124, DRV_GRP1),
4329 + MT7623_PIN(239, "EXT_SDIO0", 125, DRV_GRP1),
4330 + MT7623_PIN(240, "EXT_XCS", 126, DRV_GRP1),
4331 + MT7623_PIN(241, "EXT_SCK", 127, DRV_GRP1),
4332 + MT7623_PIN(242, "URTS2", 128, DRV_GRP1),
4333 + MT7623_PIN(243, "UCTS2", 129, DRV_GRP1),
4334 + MT7623_PIN(244, "HDMI_SDA_RX", 130, DRV_FIXED),
4335 + MT7623_PIN(245, "HDMI_SCL_RX", 131, DRV_FIXED),
4336 + MT7623_PIN(246, "MHL_SENCE", 132, DRV_FIXED),
4337 + MT7623_PIN(247, "HDMI_HPD_CBUS_RX", 69, DRV_FIXED),
4338 + MT7623_PIN(248, "HDMI_TESTOUTP_RX", 133, DRV_GRP1),
4339 + MT7623_PIN(249, "MSDC0E_RSTB", 134, DRV_GRP4),
4340 + MT7623_PIN(250, "MSDC0E_DAT7", 135, DRV_GRP4),
4341 + MT7623_PIN(251, "MSDC0E_DAT6", 136, DRV_GRP4),
4342 + MT7623_PIN(252, "MSDC0E_DAT5", 137, DRV_GRP4),
4343 + MT7623_PIN(253, "MSDC0E_DAT4", 138, DRV_GRP4),
4344 + MT7623_PIN(254, "MSDC0E_DAT3", 139, DRV_GRP4),
4345 + MT7623_PIN(255, "MSDC0E_DAT2", 140, DRV_GRP4),
4346 + MT7623_PIN(256, "MSDC0E_DAT1", 141, DRV_GRP4),
4347 + MT7623_PIN(257, "MSDC0E_DAT0", 142, DRV_GRP4),
4348 + MT7623_PIN(258, "MSDC0E_CMD", 143, DRV_GRP4),
4349 + MT7623_PIN(259, "MSDC0E_CLK", 144, DRV_GRP4),
4350 + MT7623_PIN(260, "MSDC0E_DSL", 145, DRV_GRP4),
4351 + MT7623_PIN(261, "MSDC1_INS", 146, DRV_GRP4),
4352 + MT7623_PIN(262, "G2_TXEN", 8, DRV_GRP1),
4353 + MT7623_PIN(263, "G2_TXD3", 9, DRV_GRP1),
4354 + MT7623_PIN(264, "G2_TXD2", 10, DRV_GRP1),
4355 + MT7623_PIN(265, "G2_TXD1", 11, DRV_GRP1),
4356 + MT7623_PIN(266, "G2_TXD0", EINT_NA, DRV_GRP1),
4357 + MT7623_PIN(267, "G2_TXC", EINT_NA, DRV_GRP1),
4358 + MT7623_PIN(268, "G2_RXC", EINT_NA, DRV_GRP1),
4359 + MT7623_PIN(269, "G2_RXD0", EINT_NA, DRV_GRP1),
4360 + MT7623_PIN(270, "G2_RXD1", EINT_NA, DRV_GRP1),
4361 + MT7623_PIN(271, "G2_RXD2", EINT_NA, DRV_GRP1),
4362 + MT7623_PIN(272, "G2_RXD3", EINT_NA, DRV_GRP1),
4363 + MT7623_PIN(273, "ESW_INT", 168, DRV_GRP1),
4364 + MT7623_PIN(274, "G2_RXDV", EINT_NA, DRV_GRP1),
4365 + MT7623_PIN(275, "MDC", EINT_NA, DRV_GRP1),
4366 + MT7623_PIN(276, "MDIO", EINT_NA, DRV_GRP1),
4367 + MT7623_PIN(277, "ESW_RST", EINT_NA, DRV_GRP1),
4368 + MT7623_PIN(278, "JTAG_RESET", 147, DRV_GRP3),
4369 + MT7623_PIN(279, "USB3_RES_BOND", EINT_NA, DRV_GRP1),
4372 +/* List all groups consisting of these pins dedicated to the enablement of
4373 + * certain hardware block and the corresponding mode for all of the pins.
4374 + * The hardware probably has multiple combinations of these pinouts.
4377 +/* AUDIO EXT CLK */
4378 +static int mt7623_aud_ext_clk0_pins[] = { 208, };
4379 +static int mt7623_aud_ext_clk0_funcs[] = { 1, };
4380 +static int mt7623_aud_ext_clk1_pins[] = { 209, };
4381 +static int mt7623_aud_ext_clk1_funcs[] = { 1, };
4384 +static int mt7623_disp_pwm_0_pins[] = { 72, };
4385 +static int mt7623_disp_pwm_0_funcs[] = { 5, };
4386 +static int mt7623_disp_pwm_1_pins[] = { 203, };
4387 +static int mt7623_disp_pwm_1_funcs[] = { 2, };
4388 +static int mt7623_disp_pwm_2_pins[] = { 208, };
4389 +static int mt7623_disp_pwm_2_funcs[] = { 5, };
4392 +static int mt7623_esw_int_pins[] = { 273, };
4393 +static int mt7623_esw_int_funcs[] = { 1, };
4394 +static int mt7623_esw_rst_pins[] = { 277, };
4395 +static int mt7623_esw_rst_funcs[] = { 1, };
4398 +static int mt7623_ephy_pins[] = { 262, 263, 264, 265, 266, 267, 268,
4399 + 269, 270, 271, 272, 274, };
4400 +static int mt7623_ephy_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
4403 +static int mt7623_ext_sdio_pins[] = { 236, 237, 238, 239, 240, 241, };
4404 +static int mt7623_ext_sdio_funcs[] = { 1, 1, 1, 1, 1, 1, };
4407 +static int mt7623_hdmi_rx_pins[] = { 247, 248, };
4408 +static int mt7623_hdmi_rx_funcs[] = { 1, 1 };
4409 +static int mt7623_hdmi_rx_i2c_pins[] = { 244, 245, };
4410 +static int mt7623_hdmi_rx_i2c_funcs[] = { 1, 1 };
4413 +static int mt7623_hdmi_cec_pins[] = { 122, };
4414 +static int mt7623_hdmi_cec_funcs[] = { 1, };
4415 +static int mt7623_hdmi_htplg_pins[] = { 123, };
4416 +static int mt7623_hdmi_htplg_funcs[] = { 1, };
4417 +static int mt7623_hdmi_i2c_pins[] = { 124, 125, };
4418 +static int mt7623_hdmi_i2c_funcs[] = { 1, 1 };
4421 +static int mt7623_i2c0_pins[] = { 75, 76, };
4422 +static int mt7623_i2c0_funcs[] = { 1, 1, };
4423 +static int mt7623_i2c1_0_pins[] = { 57, 58, };
4424 +static int mt7623_i2c1_0_funcs[] = { 1, 1, };
4425 +static int mt7623_i2c1_1_pins[] = { 242, 243, };
4426 +static int mt7623_i2c1_1_funcs[] = { 4, 4, };
4427 +static int mt7623_i2c1_2_pins[] = { 85, 86, };
4428 +static int mt7623_i2c1_2_funcs[] = { 3, 3, };
4429 +static int mt7623_i2c1_3_pins[] = { 105, 106, };
4430 +static int mt7623_i2c1_3_funcs[] = { 3, 3, };
4431 +static int mt7623_i2c1_4_pins[] = { 124, 125, };
4432 +static int mt7623_i2c1_4_funcs[] = { 4, 4, };
4433 +static int mt7623_i2c2_0_pins[] = { 77, 78, };
4434 +static int mt7623_i2c2_0_funcs[] = { 1, 1, };
4435 +static int mt7623_i2c2_1_pins[] = { 89, 90, };
4436 +static int mt7623_i2c2_1_funcs[] = { 3, 3, };
4437 +static int mt7623_i2c2_2_pins[] = { 109, 110, };
4438 +static int mt7623_i2c2_2_funcs[] = { 3, 3, };
4439 +static int mt7623_i2c2_3_pins[] = { 122, 123, };
4440 +static int mt7623_i2c2_3_funcs[] = { 4, 4, };
4443 +static int mt7623_i2s0_pins[] = { 49, 72, 73, 74, 126, };
4444 +static int mt7623_i2s0_funcs[] = { 1, 1, 1, 1, 1, };
4445 +static int mt7623_i2s1_pins[] = { 33, 34, 35, 36, 37, };
4446 +static int mt7623_i2s1_funcs[] = { 1, 1, 1, 1, 1, };
4447 +static int mt7623_i2s2_bclk_lrclk_mclk_pins[] = { 50, 52, 188, };
4448 +static int mt7623_i2s2_bclk_lrclk_mclk_funcs[] = { 1, 1, 1, };
4449 +static int mt7623_i2s2_data_in_pins[] = { 51, };
4450 +static int mt7623_i2s2_data_in_funcs[] = { 1, };
4451 +static int mt7623_i2s2_data_0_pins[] = { 203, };
4452 +static int mt7623_i2s2_data_0_funcs[] = { 9, };
4453 +static int mt7623_i2s2_data_1_pins[] = { 38, };
4454 +static int mt7623_i2s2_data_1_funcs[] = { 4, };
4455 +static int mt7623_i2s3_bclk_lrclk_mclk_pins[] = { 191, 192, 193, };
4456 +static int mt7623_i2s3_bclk_lrclk_mclk_funcs[] = { 1, 1, 1, };
4457 +static int mt7623_i2s3_data_in_pins[] = { 190, };
4458 +static int mt7623_i2s3_data_in_funcs[] = { 1, };
4459 +static int mt7623_i2s3_data_0_pins[] = { 204, };
4460 +static int mt7623_i2s3_data_0_funcs[] = { 9, };
4461 +static int mt7623_i2s3_data_1_pins[] = { 2, };
4462 +static int mt7623_i2s3_data_1_funcs[] = { 0, };
4463 +static int mt7623_i2s4_pins[] = { 194, 195, 196, 197, 198, };
4464 +static int mt7623_i2s4_funcs[] = { 1, 1, 1, 1, 1, };
4465 +static int mt7623_i2s5_pins[] = { 16, 17, 30, 31, 32, };
4466 +static int mt7623_i2s5_funcs[] = { 1, 1, 1, 1, 1, };
4469 +static int mt7623_ir_pins[] = { 46, };
4470 +static int mt7623_ir_funcs[] = { 1, };
4473 +static int mt7623_mipi_tx_pins[] = { 91, 92, 93, 94, 95, 96, 97, 98,
4475 +static int mt7623_mipi_tx_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
4476 +static int mt7623_dsi_te_pins[] = { 84, };
4477 +static int mt7623_dsi_te_funcs[] = { 1, };
4478 +static int mt7623_lcm_rst_pins[] = { 83, };
4479 +static int mt7623_lcm_rst_funcs[] = { 1, };
4482 +static int mt7623_mdc_mdio_pins[] = { 275, 276, };
4483 +static int mt7623_mdc_mdio_funcs[] = { 1, 1, };
4486 +static int mt7623_msdc0_pins[] = { 111, 112, 113, 114, 115, 116, 117, 118,
4488 +static int mt7623_msdc0_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
4489 +static int mt7623_msdc1_pins[] = { 105, 106, 107, 108, 109, 110, };
4490 +static int mt7623_msdc1_funcs[] = { 1, 1, 1, 1, 1, 1, };
4491 +static int mt7623_msdc1_ins_pins[] = { 261, };
4492 +static int mt7623_msdc1_ins_funcs[] = { 1, };
4493 +static int mt7623_msdc1_wp_0_pins[] = { 29, };
4494 +static int mt7623_msdc1_wp_0_funcs[] = { 1, };
4495 +static int mt7623_msdc1_wp_1_pins[] = { 55, };
4496 +static int mt7623_msdc1_wp_1_funcs[] = { 3, };
4497 +static int mt7623_msdc1_wp_2_pins[] = { 209, };
4498 +static int mt7623_msdc1_wp_2_funcs[] = { 2, };
4499 +static int mt7623_msdc2_pins[] = { 85, 86, 87, 88, 89, 90, };
4500 +static int mt7623_msdc2_funcs[] = { 1, 1, 1, 1, 1, 1, };
4501 +static int mt7623_msdc3_pins[] = { 249, 250, 251, 252, 253, 254, 255, 256,
4502 + 257, 258, 259, 260, };
4503 +static int mt7623_msdc3_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
4506 +static int mt7623_nandc_pins[] = { 43, 47, 48, 111, 112, 113, 114, 115,
4507 + 116, 117, 118, 119, 120, 121, };
4508 +static int mt7623_nandc_funcs[] = { 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4510 +static int mt7623_nandc_ceb0_pins[] = { 45, };
4511 +static int mt7623_nandc_ceb0_funcs[] = { 1, };
4512 +static int mt7623_nandc_ceb1_pins[] = { 44, };
4513 +static int mt7623_nandc_ceb1_funcs[] = { 1, };
4516 +static int mt7623_rtc_pins[] = { 10, };
4517 +static int mt7623_rtc_funcs[] = { 1, };
4520 +static int mt7623_otg_iddig0_0_pins[] = { 29, };
4521 +static int mt7623_otg_iddig0_0_funcs[] = { 1, };
4522 +static int mt7623_otg_iddig0_1_pins[] = { 44, };
4523 +static int mt7623_otg_iddig0_1_funcs[] = { 2, };
4524 +static int mt7623_otg_iddig0_2_pins[] = { 236, };
4525 +static int mt7623_otg_iddig0_2_funcs[] = { 2, };
4526 +static int mt7623_otg_iddig1_0_pins[] = { 27, };
4527 +static int mt7623_otg_iddig1_0_funcs[] = { 2, };
4528 +static int mt7623_otg_iddig1_1_pins[] = { 47, };
4529 +static int mt7623_otg_iddig1_1_funcs[] = { 2, };
4530 +static int mt7623_otg_iddig1_2_pins[] = { 238, };
4531 +static int mt7623_otg_iddig1_2_funcs[] = { 2, };
4532 +static int mt7623_otg_drv_vbus0_0_pins[] = { 28, };
4533 +static int mt7623_otg_drv_vbus0_0_funcs[] = { 1, };
4534 +static int mt7623_otg_drv_vbus0_1_pins[] = { 45, };
4535 +static int mt7623_otg_drv_vbus0_1_funcs[] = { 2, };
4536 +static int mt7623_otg_drv_vbus0_2_pins[] = { 237, };
4537 +static int mt7623_otg_drv_vbus0_2_funcs[] = { 2, };
4538 +static int mt7623_otg_drv_vbus1_0_pins[] = { 26, };
4539 +static int mt7623_otg_drv_vbus1_0_funcs[] = { 2, };
4540 +static int mt7623_otg_drv_vbus1_1_pins[] = { 48, };
4541 +static int mt7623_otg_drv_vbus1_1_funcs[] = { 2, };
4542 +static int mt7623_otg_drv_vbus1_2_pins[] = { 239, };
4543 +static int mt7623_otg_drv_vbus1_2_funcs[] = { 2, };
4546 +static int mt7623_pcie0_0_perst_pins[] = { 208, };
4547 +static int mt7623_pcie0_0_perst_funcs[] = { 3, };
4548 +static int mt7623_pcie0_1_perst_pins[] = { 22, };
4549 +static int mt7623_pcie0_1_perst_funcs[] = { 2, };
4550 +static int mt7623_pcie1_0_perst_pins[] = { 209, };
4551 +static int mt7623_pcie1_0_perst_funcs[] = { 3, };
4552 +static int mt7623_pcie1_1_perst_pins[] = { 23, };
4553 +static int mt7623_pcie1_1_perst_funcs[] = { 2, };
4554 +static int mt7623_pcie2_0_perst_pins[] = { 24, };
4555 +static int mt7623_pcie2_0_perst_funcs[] = { 2, };
4556 +static int mt7623_pcie2_1_perst_pins[] = { 29, };
4557 +static int mt7623_pcie2_1_perst_funcs[] = { 6, };
4558 +static int mt7623_pcie0_0_wake_pins[] = { 28, };
4559 +static int mt7623_pcie0_0_wake_funcs[] = { 6, };
4560 +static int mt7623_pcie0_1_wake_pins[] = { 251, };
4561 +static int mt7623_pcie0_1_wake_funcs[] = { 6, };
4562 +static int mt7623_pcie1_0_wake_pins[] = { 27, };
4563 +static int mt7623_pcie1_0_wake_funcs[] = { 6, };
4564 +static int mt7623_pcie1_1_wake_pins[] = { 253, };
4565 +static int mt7623_pcie1_1_wake_funcs[] = { 6, };
4566 +static int mt7623_pcie2_0_wake_pins[] = { 26, };
4567 +static int mt7623_pcie2_0_wake_funcs[] = { 6, };
4568 +static int mt7623_pcie2_1_wake_pins[] = { 255, };
4569 +static int mt7623_pcie2_1_wake_funcs[] = { 6, };
4570 +static int mt7623_pcie0_clkreq_pins[] = { 250, };
4571 +static int mt7623_pcie0_clkreq_funcs[] = { 6, };
4572 +static int mt7623_pcie1_clkreq_pins[] = { 252, };
4573 +static int mt7623_pcie1_clkreq_funcs[] = { 6, };
4574 +static int mt7623_pcie2_clkreq_pins[] = { 254, };
4575 +static int mt7623_pcie2_clkreq_funcs[] = { 6, };
4577 +/* the pcie_*_rev are only used for MT7623 */
4578 +static int mt7623_pcie0_0_rev_perst_pins[] = { 208, };
4579 +static int mt7623_pcie0_0_rev_perst_funcs[] = { 11, };
4580 +static int mt7623_pcie0_1_rev_perst_pins[] = { 22, };
4581 +static int mt7623_pcie0_1_rev_perst_funcs[] = { 10, };
4582 +static int mt7623_pcie1_0_rev_perst_pins[] = { 209, };
4583 +static int mt7623_pcie1_0_rev_perst_funcs[] = { 11, };
4584 +static int mt7623_pcie1_1_rev_perst_pins[] = { 23, };
4585 +static int mt7623_pcie1_1_rev_perst_funcs[] = { 10, };
4586 +static int mt7623_pcie2_0_rev_perst_pins[] = { 24, };
4587 +static int mt7623_pcie2_0_rev_perst_funcs[] = { 11, };
4588 +static int mt7623_pcie2_1_rev_perst_pins[] = { 29, };
4589 +static int mt7623_pcie2_1_rev_perst_funcs[] = { 14, };
4592 +static int mt7623_pcm_clk_0_pins[] = { 18, };
4593 +static int mt7623_pcm_clk_0_funcs[] = { 1, };
4594 +static int mt7623_pcm_clk_1_pins[] = { 17, };
4595 +static int mt7623_pcm_clk_1_funcs[] = { 3, };
4596 +static int mt7623_pcm_clk_2_pins[] = { 35, };
4597 +static int mt7623_pcm_clk_2_funcs[] = { 3, };
4598 +static int mt7623_pcm_clk_3_pins[] = { 50, };
4599 +static int mt7623_pcm_clk_3_funcs[] = { 3, };
4600 +static int mt7623_pcm_clk_4_pins[] = { 74, };
4601 +static int mt7623_pcm_clk_4_funcs[] = { 3, };
4602 +static int mt7623_pcm_clk_5_pins[] = { 191, };
4603 +static int mt7623_pcm_clk_5_funcs[] = { 3, };
4604 +static int mt7623_pcm_clk_6_pins[] = { 196, };
4605 +static int mt7623_pcm_clk_6_funcs[] = { 3, };
4606 +static int mt7623_pcm_sync_0_pins[] = { 19, };
4607 +static int mt7623_pcm_sync_0_funcs[] = { 1, };
4608 +static int mt7623_pcm_sync_1_pins[] = { 30, };
4609 +static int mt7623_pcm_sync_1_funcs[] = { 3, };
4610 +static int mt7623_pcm_sync_2_pins[] = { 36, };
4611 +static int mt7623_pcm_sync_2_funcs[] = { 3, };
4612 +static int mt7623_pcm_sync_3_pins[] = { 52, };
4613 +static int mt7623_pcm_sync_3_funcs[] = { 31, };
4614 +static int mt7623_pcm_sync_4_pins[] = { 73, };
4615 +static int mt7623_pcm_sync_4_funcs[] = { 3, };
4616 +static int mt7623_pcm_sync_5_pins[] = { 192, };
4617 +static int mt7623_pcm_sync_5_funcs[] = { 3, };
4618 +static int mt7623_pcm_sync_6_pins[] = { 197, };
4619 +static int mt7623_pcm_sync_6_funcs[] = { 3, };
4620 +static int mt7623_pcm_rx_0_pins[] = { 20, };
4621 +static int mt7623_pcm_rx_0_funcs[] = { 1, };
4622 +static int mt7623_pcm_rx_1_pins[] = { 16, };
4623 +static int mt7623_pcm_rx_1_funcs[] = { 3, };
4624 +static int mt7623_pcm_rx_2_pins[] = { 34, };
4625 +static int mt7623_pcm_rx_2_funcs[] = { 3, };
4626 +static int mt7623_pcm_rx_3_pins[] = { 51, };
4627 +static int mt7623_pcm_rx_3_funcs[] = { 3, };
4628 +static int mt7623_pcm_rx_4_pins[] = { 72, };
4629 +static int mt7623_pcm_rx_4_funcs[] = { 3, };
4630 +static int mt7623_pcm_rx_5_pins[] = { 190, };
4631 +static int mt7623_pcm_rx_5_funcs[] = { 3, };
4632 +static int mt7623_pcm_rx_6_pins[] = { 195, };
4633 +static int mt7623_pcm_rx_6_funcs[] = { 3, };
4634 +static int mt7623_pcm_tx_0_pins[] = { 21, };
4635 +static int mt7623_pcm_tx_0_funcs[] = { 1, };
4636 +static int mt7623_pcm_tx_1_pins[] = { 32, };
4637 +static int mt7623_pcm_tx_1_funcs[] = { 3, };
4638 +static int mt7623_pcm_tx_2_pins[] = { 33, };
4639 +static int mt7623_pcm_tx_2_funcs[] = { 3, };
4640 +static int mt7623_pcm_tx_3_pins[] = { 38, };
4641 +static int mt7623_pcm_tx_3_funcs[] = { 3, };
4642 +static int mt7623_pcm_tx_4_pins[] = { 49, };
4643 +static int mt7623_pcm_tx_4_funcs[] = { 3, };
4644 +static int mt7623_pcm_tx_5_pins[] = { 189, };
4645 +static int mt7623_pcm_tx_5_funcs[] = { 3, };
4646 +static int mt7623_pcm_tx_6_pins[] = { 194, };
4647 +static int mt7623_pcm_tx_6_funcs[] = { 3, };
4650 +static int mt7623_pwm_ch1_0_pins[] = { 203, };
4651 +static int mt7623_pwm_ch1_0_funcs[] = { 1, };
4652 +static int mt7623_pwm_ch1_1_pins[] = { 208, };
4653 +static int mt7623_pwm_ch1_1_funcs[] = { 2, };
4654 +static int mt7623_pwm_ch1_2_pins[] = { 72, };
4655 +static int mt7623_pwm_ch1_2_funcs[] = { 4, };
4656 +static int mt7623_pwm_ch1_3_pins[] = { 88, };
4657 +static int mt7623_pwm_ch1_3_funcs[] = { 3, };
4658 +static int mt7623_pwm_ch1_4_pins[] = { 108, };
4659 +static int mt7623_pwm_ch1_4_funcs[] = { 3, };
4660 +static int mt7623_pwm_ch2_0_pins[] = { 204, };
4661 +static int mt7623_pwm_ch2_0_funcs[] = { 1, };
4662 +static int mt7623_pwm_ch2_1_pins[] = { 53, };
4663 +static int mt7623_pwm_ch2_1_funcs[] = { 5, };
4664 +static int mt7623_pwm_ch2_2_pins[] = { 88, };
4665 +static int mt7623_pwm_ch2_2_funcs[] = { 6, };
4666 +static int mt7623_pwm_ch2_3_pins[] = { 108, };
4667 +static int mt7623_pwm_ch2_3_funcs[] = { 6, };
4668 +static int mt7623_pwm_ch2_4_pins[] = { 209, };
4669 +static int mt7623_pwm_ch2_4_funcs[] = { 5, };
4670 +static int mt7623_pwm_ch3_0_pins[] = { 205, };
4671 +static int mt7623_pwm_ch3_0_funcs[] = { 1, };
4672 +static int mt7623_pwm_ch3_1_pins[] = { 55, };
4673 +static int mt7623_pwm_ch3_1_funcs[] = { 5, };
4674 +static int mt7623_pwm_ch3_2_pins[] = { 89, };
4675 +static int mt7623_pwm_ch3_2_funcs[] = { 6, };
4676 +static int mt7623_pwm_ch3_3_pins[] = { 109, };
4677 +static int mt7623_pwm_ch3_3_funcs[] = { 6, };
4678 +static int mt7623_pwm_ch4_0_pins[] = { 206, };
4679 +static int mt7623_pwm_ch4_0_funcs[] = { 1, };
4680 +static int mt7623_pwm_ch4_1_pins[] = { 90, };
4681 +static int mt7623_pwm_ch4_1_funcs[] = { 6, };
4682 +static int mt7623_pwm_ch4_2_pins[] = { 110, };
4683 +static int mt7623_pwm_ch4_2_funcs[] = { 6, };
4684 +static int mt7623_pwm_ch4_3_pins[] = { 124, };
4685 +static int mt7623_pwm_ch4_3_funcs[] = { 5, };
4686 +static int mt7623_pwm_ch5_0_pins[] = { 207, };
4687 +static int mt7623_pwm_ch5_0_funcs[] = { 1, };
4688 +static int mt7623_pwm_ch5_1_pins[] = { 125, };
4689 +static int mt7623_pwm_ch5_1_funcs[] = { 5, };
4692 +static int mt7623_pwrap_pins[] = { 0, 1, 2, 3, 4, 5, 6, };
4693 +static int mt7623_pwrap_funcs[] = { 1, 1, 1, 1, 1, 1, 1, };
4696 +static int mt7623_spdif_in0_0_pins[] = { 56, };
4697 +static int mt7623_spdif_in0_0_funcs[] = { 3, };
4698 +static int mt7623_spdif_in0_1_pins[] = { 201, };
4699 +static int mt7623_spdif_in0_1_funcs[] = { 1, };
4700 +static int mt7623_spdif_in1_0_pins[] = { 54, };
4701 +static int mt7623_spdif_in1_0_funcs[] = { 3, };
4702 +static int mt7623_spdif_in1_1_pins[] = { 202, };
4703 +static int mt7623_spdif_in1_1_funcs[] = { 1, };
4704 +static int mt7623_spdif_out_pins[] = { 202, };
4705 +static int mt7623_spdif_out_funcs[] = { 1, };
4708 +static int mt7623_spi0_pins[] = { 53, 54, 55, 56, };
4709 +static int mt7623_spi0_funcs[] = { 1, 1, 1, 1, };
4710 +static int mt7623_spi1_pins[] = { 7, 199, 8, 9, };
4711 +static int mt7623_spi1_funcs[] = { 1, 1, 1, 1, };
4712 +static int mt7623_spi2_pins[] = { 101, 104, 102, 103, };
4713 +static int mt7623_spi2_funcs[] = { 1, 1, 1, 1, };
4716 +static int mt7623_uart0_0_txd_rxd_pins[] = { 79, 80, };
4717 +static int mt7623_uart0_0_txd_rxd_funcs[] = { 1, 1, };
4718 +static int mt7623_uart0_1_txd_rxd_pins[] = { 87, 88, };
4719 +static int mt7623_uart0_1_txd_rxd_funcs[] = { 5, 5, };
4720 +static int mt7623_uart0_2_txd_rxd_pins[] = { 107, 108, };
4721 +static int mt7623_uart0_2_txd_rxd_funcs[] = { 5, 5, };
4722 +static int mt7623_uart0_3_txd_rxd_pins[] = { 123, 122, };
4723 +static int mt7623_uart0_3_txd_rxd_funcs[] = { 5, 5, };
4724 +static int mt7623_uart0_rts_cts_pins[] = { 22, 23, };
4725 +static int mt7623_uart0_rts_cts_funcs[] = { 1, 1, };
4726 +static int mt7623_uart1_0_txd_rxd_pins[] = { 81, 82, };
4727 +static int mt7623_uart1_0_txd_rxd_funcs[] = { 1, 1, };
4728 +static int mt7623_uart1_1_txd_rxd_pins[] = { 89, 90, };
4729 +static int mt7623_uart1_1_txd_rxd_funcs[] = { 5, 5, };
4730 +static int mt7623_uart1_2_txd_rxd_pins[] = { 109, 110, };
4731 +static int mt7623_uart1_2_txd_rxd_funcs[] = { 5, 5, };
4732 +static int mt7623_uart1_rts_cts_pins[] = { 24, 25, };
4733 +static int mt7623_uart1_rts_cts_funcs[] = { 1, 1, };
4734 +static int mt7623_uart2_0_txd_rxd_pins[] = { 14, 15, };
4735 +static int mt7623_uart2_0_txd_rxd_funcs[] = { 1, 1, };
4736 +static int mt7623_uart2_1_txd_rxd_pins[] = { 200, 201, };
4737 +static int mt7623_uart2_1_txd_rxd_funcs[] = { 6, 6, };
4738 +static int mt7623_uart2_rts_cts_pins[] = { 242, 243, };
4739 +static int mt7623_uart2_rts_cts_funcs[] = { 1, 1, };
4740 +static int mt7623_uart3_txd_rxd_pins[] = { 242, 243, };
4741 +static int mt7623_uart3_txd_rxd_funcs[] = { 2, 2, };
4742 +static int mt7623_uart3_rts_cts_pins[] = { 26, 27, };
4743 +static int mt7623_uart3_rts_cts_funcs[] = { 1, 1, };
4746 +static int mt7623_watchdog_0_pins[] = { 11, };
4747 +static int mt7623_watchdog_0_funcs[] = { 1, };
4748 +static int mt7623_watchdog_1_pins[] = { 121, };
4749 +static int mt7623_watchdog_1_funcs[] = { 5, };
4751 +static const struct group_desc mt7623_groups[] = {
4752 + PINCTRL_PIN_GROUP("aud_ext_clk0", mt7623_aud_ext_clk0),
4753 + PINCTRL_PIN_GROUP("aud_ext_clk1", mt7623_aud_ext_clk1),
4754 + PINCTRL_PIN_GROUP("dsi_te", mt7623_dsi_te),
4755 + PINCTRL_PIN_GROUP("disp_pwm_0", mt7623_disp_pwm_0),
4756 + PINCTRL_PIN_GROUP("disp_pwm_1", mt7623_disp_pwm_1),
4757 + PINCTRL_PIN_GROUP("disp_pwm_2", mt7623_disp_pwm_2),
4758 + PINCTRL_PIN_GROUP("ephy", mt7623_ephy),
4759 + PINCTRL_PIN_GROUP("esw_int", mt7623_esw_int),
4760 + PINCTRL_PIN_GROUP("esw_rst", mt7623_esw_rst),
4761 + PINCTRL_PIN_GROUP("ext_sdio", mt7623_ext_sdio),
4762 + PINCTRL_PIN_GROUP("hdmi_cec", mt7623_hdmi_cec),
4763 + PINCTRL_PIN_GROUP("hdmi_htplg", mt7623_hdmi_htplg),
4764 + PINCTRL_PIN_GROUP("hdmi_i2c", mt7623_hdmi_i2c),
4765 + PINCTRL_PIN_GROUP("hdmi_rx", mt7623_hdmi_rx),
4766 + PINCTRL_PIN_GROUP("hdmi_rx_i2c", mt7623_hdmi_rx_i2c),
4767 + PINCTRL_PIN_GROUP("i2c0", mt7623_i2c0),
4768 + PINCTRL_PIN_GROUP("i2c1_0", mt7623_i2c1_0),
4769 + PINCTRL_PIN_GROUP("i2c1_1", mt7623_i2c1_1),
4770 + PINCTRL_PIN_GROUP("i2c1_2", mt7623_i2c1_2),
4771 + PINCTRL_PIN_GROUP("i2c1_3", mt7623_i2c1_3),
4772 + PINCTRL_PIN_GROUP("i2c1_4", mt7623_i2c1_4),
4773 + PINCTRL_PIN_GROUP("i2c2_0", mt7623_i2c2_0),
4774 + PINCTRL_PIN_GROUP("i2c2_1", mt7623_i2c2_1),
4775 + PINCTRL_PIN_GROUP("i2c2_2", mt7623_i2c2_2),
4776 + PINCTRL_PIN_GROUP("i2c2_3", mt7623_i2c2_3),
4777 + PINCTRL_PIN_GROUP("i2s0", mt7623_i2s0),
4778 + PINCTRL_PIN_GROUP("i2s1", mt7623_i2s1),
4779 + PINCTRL_PIN_GROUP("i2s4", mt7623_i2s4),
4780 + PINCTRL_PIN_GROUP("i2s5", mt7623_i2s5),
4781 + PINCTRL_PIN_GROUP("i2s2_bclk_lrclk_mclk", mt7623_i2s2_bclk_lrclk_mclk),
4782 + PINCTRL_PIN_GROUP("i2s3_bclk_lrclk_mclk", mt7623_i2s3_bclk_lrclk_mclk),
4783 + PINCTRL_PIN_GROUP("i2s2_data_in", mt7623_i2s2_data_in),
4784 + PINCTRL_PIN_GROUP("i2s3_data_in", mt7623_i2s3_data_in),
4785 + PINCTRL_PIN_GROUP("i2s2_data_0", mt7623_i2s2_data_0),
4786 + PINCTRL_PIN_GROUP("i2s2_data_1", mt7623_i2s2_data_1),
4787 + PINCTRL_PIN_GROUP("i2s3_data_0", mt7623_i2s3_data_0),
4788 + PINCTRL_PIN_GROUP("i2s3_data_1", mt7623_i2s3_data_1),
4789 + PINCTRL_PIN_GROUP("ir", mt7623_ir),
4790 + PINCTRL_PIN_GROUP("lcm_rst", mt7623_lcm_rst),
4791 + PINCTRL_PIN_GROUP("mdc_mdio", mt7623_mdc_mdio),
4792 + PINCTRL_PIN_GROUP("mipi_tx", mt7623_mipi_tx),
4793 + PINCTRL_PIN_GROUP("msdc0", mt7623_msdc0),
4794 + PINCTRL_PIN_GROUP("msdc1", mt7623_msdc1),
4795 + PINCTRL_PIN_GROUP("msdc1_ins", mt7623_msdc1_ins),
4796 + PINCTRL_PIN_GROUP("msdc1_wp_0", mt7623_msdc1_wp_0),
4797 + PINCTRL_PIN_GROUP("msdc1_wp_1", mt7623_msdc1_wp_1),
4798 + PINCTRL_PIN_GROUP("msdc1_wp_2", mt7623_msdc1_wp_2),
4799 + PINCTRL_PIN_GROUP("msdc2", mt7623_msdc2),
4800 + PINCTRL_PIN_GROUP("msdc3", mt7623_msdc3),
4801 + PINCTRL_PIN_GROUP("nandc", mt7623_nandc),
4802 + PINCTRL_PIN_GROUP("nandc_ceb0", mt7623_nandc_ceb0),
4803 + PINCTRL_PIN_GROUP("nandc_ceb1", mt7623_nandc_ceb1),
4804 + PINCTRL_PIN_GROUP("otg_iddig0_0", mt7623_otg_iddig0_0),
4805 + PINCTRL_PIN_GROUP("otg_iddig0_1", mt7623_otg_iddig0_1),
4806 + PINCTRL_PIN_GROUP("otg_iddig0_2", mt7623_otg_iddig0_2),
4807 + PINCTRL_PIN_GROUP("otg_iddig1_0", mt7623_otg_iddig1_0),
4808 + PINCTRL_PIN_GROUP("otg_iddig1_1", mt7623_otg_iddig1_1),
4809 + PINCTRL_PIN_GROUP("otg_iddig1_2", mt7623_otg_iddig1_2),
4810 + PINCTRL_PIN_GROUP("otg_drv_vbus0_0", mt7623_otg_drv_vbus0_0),
4811 + PINCTRL_PIN_GROUP("otg_drv_vbus0_1", mt7623_otg_drv_vbus0_1),
4812 + PINCTRL_PIN_GROUP("otg_drv_vbus0_2", mt7623_otg_drv_vbus0_2),
4813 + PINCTRL_PIN_GROUP("otg_drv_vbus1_0", mt7623_otg_drv_vbus1_0),
4814 + PINCTRL_PIN_GROUP("otg_drv_vbus1_1", mt7623_otg_drv_vbus1_1),
4815 + PINCTRL_PIN_GROUP("otg_drv_vbus1_2", mt7623_otg_drv_vbus1_2),
4816 + PINCTRL_PIN_GROUP("pcie0_0_perst", mt7623_pcie0_0_perst),
4817 + PINCTRL_PIN_GROUP("pcie0_1_perst", mt7623_pcie0_1_perst),
4818 + PINCTRL_PIN_GROUP("pcie1_0_perst", mt7623_pcie1_0_perst),
4819 + PINCTRL_PIN_GROUP("pcie1_1_perst", mt7623_pcie1_1_perst),
4820 + PINCTRL_PIN_GROUP("pcie1_1_perst", mt7623_pcie1_1_perst),
4821 + PINCTRL_PIN_GROUP("pcie0_0_rev_perst", mt7623_pcie0_0_rev_perst),
4822 + PINCTRL_PIN_GROUP("pcie0_1_rev_perst", mt7623_pcie0_1_rev_perst),
4823 + PINCTRL_PIN_GROUP("pcie1_0_rev_perst", mt7623_pcie1_0_rev_perst),
4824 + PINCTRL_PIN_GROUP("pcie1_1_rev_perst", mt7623_pcie1_1_rev_perst),
4825 + PINCTRL_PIN_GROUP("pcie2_0_rev_perst", mt7623_pcie2_0_rev_perst),
4826 + PINCTRL_PIN_GROUP("pcie2_1_rev_perst", mt7623_pcie2_1_rev_perst),
4827 + PINCTRL_PIN_GROUP("pcie2_0_perst", mt7623_pcie2_0_perst),
4828 + PINCTRL_PIN_GROUP("pcie2_1_perst", mt7623_pcie2_1_perst),
4829 + PINCTRL_PIN_GROUP("pcie0_0_wake", mt7623_pcie0_0_wake),
4830 + PINCTRL_PIN_GROUP("pcie0_1_wake", mt7623_pcie0_1_wake),
4831 + PINCTRL_PIN_GROUP("pcie1_0_wake", mt7623_pcie1_0_wake),
4832 + PINCTRL_PIN_GROUP("pcie1_1_wake", mt7623_pcie1_1_wake),
4833 + PINCTRL_PIN_GROUP("pcie2_0_wake", mt7623_pcie2_0_wake),
4834 + PINCTRL_PIN_GROUP("pcie2_1_wake", mt7623_pcie2_1_wake),
4835 + PINCTRL_PIN_GROUP("pcie0_clkreq", mt7623_pcie0_clkreq),
4836 + PINCTRL_PIN_GROUP("pcie1_clkreq", mt7623_pcie1_clkreq),
4837 + PINCTRL_PIN_GROUP("pcie2_clkreq", mt7623_pcie2_clkreq),
4838 + PINCTRL_PIN_GROUP("pcm_clk_0", mt7623_pcm_clk_0),
4839 + PINCTRL_PIN_GROUP("pcm_clk_1", mt7623_pcm_clk_1),
4840 + PINCTRL_PIN_GROUP("pcm_clk_2", mt7623_pcm_clk_2),
4841 + PINCTRL_PIN_GROUP("pcm_clk_3", mt7623_pcm_clk_3),
4842 + PINCTRL_PIN_GROUP("pcm_clk_4", mt7623_pcm_clk_4),
4843 + PINCTRL_PIN_GROUP("pcm_clk_5", mt7623_pcm_clk_5),
4844 + PINCTRL_PIN_GROUP("pcm_clk_6", mt7623_pcm_clk_6),
4845 + PINCTRL_PIN_GROUP("pcm_sync_0", mt7623_pcm_sync_0),
4846 + PINCTRL_PIN_GROUP("pcm_sync_1", mt7623_pcm_sync_1),
4847 + PINCTRL_PIN_GROUP("pcm_sync_2", mt7623_pcm_sync_2),
4848 + PINCTRL_PIN_GROUP("pcm_sync_3", mt7623_pcm_sync_3),
4849 + PINCTRL_PIN_GROUP("pcm_sync_4", mt7623_pcm_sync_4),
4850 + PINCTRL_PIN_GROUP("pcm_sync_5", mt7623_pcm_sync_5),
4851 + PINCTRL_PIN_GROUP("pcm_sync_6", mt7623_pcm_sync_6),
4852 + PINCTRL_PIN_GROUP("pcm_rx_0", mt7623_pcm_rx_0),
4853 + PINCTRL_PIN_GROUP("pcm_rx_1", mt7623_pcm_rx_1),
4854 + PINCTRL_PIN_GROUP("pcm_rx_2", mt7623_pcm_rx_2),
4855 + PINCTRL_PIN_GROUP("pcm_rx_3", mt7623_pcm_rx_3),
4856 + PINCTRL_PIN_GROUP("pcm_rx_4", mt7623_pcm_rx_4),
4857 + PINCTRL_PIN_GROUP("pcm_rx_5", mt7623_pcm_rx_5),
4858 + PINCTRL_PIN_GROUP("pcm_rx_6", mt7623_pcm_rx_6),
4859 + PINCTRL_PIN_GROUP("pcm_tx_0", mt7623_pcm_tx_0),
4860 + PINCTRL_PIN_GROUP("pcm_tx_1", mt7623_pcm_tx_1),
4861 + PINCTRL_PIN_GROUP("pcm_tx_2", mt7623_pcm_tx_2),
4862 + PINCTRL_PIN_GROUP("pcm_tx_3", mt7623_pcm_tx_3),
4863 + PINCTRL_PIN_GROUP("pcm_tx_4", mt7623_pcm_tx_4),
4864 + PINCTRL_PIN_GROUP("pcm_tx_5", mt7623_pcm_tx_5),
4865 + PINCTRL_PIN_GROUP("pcm_tx_6", mt7623_pcm_tx_6),
4866 + PINCTRL_PIN_GROUP("pwm_ch1_0", mt7623_pwm_ch1_0),
4867 + PINCTRL_PIN_GROUP("pwm_ch1_1", mt7623_pwm_ch1_1),
4868 + PINCTRL_PIN_GROUP("pwm_ch1_2", mt7623_pwm_ch1_2),
4869 + PINCTRL_PIN_GROUP("pwm_ch1_3", mt7623_pwm_ch1_3),
4870 + PINCTRL_PIN_GROUP("pwm_ch1_4", mt7623_pwm_ch1_4),
4871 + PINCTRL_PIN_GROUP("pwm_ch2_0", mt7623_pwm_ch2_0),
4872 + PINCTRL_PIN_GROUP("pwm_ch2_1", mt7623_pwm_ch2_1),
4873 + PINCTRL_PIN_GROUP("pwm_ch2_2", mt7623_pwm_ch2_2),
4874 + PINCTRL_PIN_GROUP("pwm_ch2_3", mt7623_pwm_ch2_3),
4875 + PINCTRL_PIN_GROUP("pwm_ch2_4", mt7623_pwm_ch2_4),
4876 + PINCTRL_PIN_GROUP("pwm_ch3_0", mt7623_pwm_ch3_0),
4877 + PINCTRL_PIN_GROUP("pwm_ch3_1", mt7623_pwm_ch3_1),
4878 + PINCTRL_PIN_GROUP("pwm_ch3_2", mt7623_pwm_ch3_2),
4879 + PINCTRL_PIN_GROUP("pwm_ch3_3", mt7623_pwm_ch3_3),
4880 + PINCTRL_PIN_GROUP("pwm_ch4_0", mt7623_pwm_ch4_0),
4881 + PINCTRL_PIN_GROUP("pwm_ch4_1", mt7623_pwm_ch4_1),
4882 + PINCTRL_PIN_GROUP("pwm_ch4_2", mt7623_pwm_ch4_2),
4883 + PINCTRL_PIN_GROUP("pwm_ch4_3", mt7623_pwm_ch4_3),
4884 + PINCTRL_PIN_GROUP("pwm_ch5_0", mt7623_pwm_ch5_0),
4885 + PINCTRL_PIN_GROUP("pwm_ch5_1", mt7623_pwm_ch5_1),
4886 + PINCTRL_PIN_GROUP("pwrap", mt7623_pwrap),
4887 + PINCTRL_PIN_GROUP("rtc", mt7623_rtc),
4888 + PINCTRL_PIN_GROUP("spdif_in0_0", mt7623_spdif_in0_0),
4889 + PINCTRL_PIN_GROUP("spdif_in0_1", mt7623_spdif_in0_1),
4890 + PINCTRL_PIN_GROUP("spdif_in1_0", mt7623_spdif_in1_0),
4891 + PINCTRL_PIN_GROUP("spdif_in1_1", mt7623_spdif_in1_1),
4892 + PINCTRL_PIN_GROUP("spdif_out", mt7623_spdif_out),
4893 + PINCTRL_PIN_GROUP("spi0", mt7623_spi0),
4894 + PINCTRL_PIN_GROUP("spi1", mt7623_spi1),
4895 + PINCTRL_PIN_GROUP("spi2", mt7623_spi2),
4896 + PINCTRL_PIN_GROUP("uart0_0_txd_rxd", mt7623_uart0_0_txd_rxd),
4897 + PINCTRL_PIN_GROUP("uart0_1_txd_rxd", mt7623_uart0_1_txd_rxd),
4898 + PINCTRL_PIN_GROUP("uart0_2_txd_rxd", mt7623_uart0_2_txd_rxd),
4899 + PINCTRL_PIN_GROUP("uart0_3_txd_rxd", mt7623_uart0_3_txd_rxd),
4900 + PINCTRL_PIN_GROUP("uart1_0_txd_rxd", mt7623_uart1_0_txd_rxd),
4901 + PINCTRL_PIN_GROUP("uart1_1_txd_rxd", mt7623_uart1_1_txd_rxd),
4902 + PINCTRL_PIN_GROUP("uart1_2_txd_rxd", mt7623_uart1_2_txd_rxd),
4903 + PINCTRL_PIN_GROUP("uart2_0_txd_rxd", mt7623_uart2_0_txd_rxd),
4904 + PINCTRL_PIN_GROUP("uart2_1_txd_rxd", mt7623_uart2_1_txd_rxd),
4905 + PINCTRL_PIN_GROUP("uart3_txd_rxd", mt7623_uart3_txd_rxd),
4906 + PINCTRL_PIN_GROUP("uart0_rts_cts", mt7623_uart0_rts_cts),
4907 + PINCTRL_PIN_GROUP("uart1_rts_cts", mt7623_uart1_rts_cts),
4908 + PINCTRL_PIN_GROUP("uart2_rts_cts", mt7623_uart2_rts_cts),
4909 + PINCTRL_PIN_GROUP("uart3_rts_cts", mt7623_uart3_rts_cts),
4910 + PINCTRL_PIN_GROUP("watchdog_0", mt7623_watchdog_0),
4911 + PINCTRL_PIN_GROUP("watchdog_1", mt7623_watchdog_1),
4914 +/* Joint those groups owning the same capability in user point of view which
4915 + * allows that people tend to use through the device tree.
4917 +static const char *mt7623_aud_clk_groups[] = { "aud_ext_clk0",
4918 + "aud_ext_clk1", };
4919 +static const char *mt7623_disp_pwm_groups[] = { "disp_pwm_0", "disp_pwm_1",
4921 +static const char *mt7623_ethernet_groups[] = { "esw_int", "esw_rst",
4922 + "ephy", "mdc_mdio", };
4923 +static const char *mt7623_ext_sdio_groups[] = { "ext_sdio", };
4924 +static const char *mt7623_hdmi_groups[] = { "hdmi_cec", "hdmi_htplg",
4925 + "hdmi_i2c", "hdmi_rx",
4927 +static const char *mt7623_i2c_groups[] = { "i2c0", "i2c1_0", "i2c1_1",
4928 + "i2c1_2", "i2c1_3", "i2c1_4",
4929 + "i2c2_0", "i2c2_1", "i2c2_2",
4931 +static const char *mt7623_i2s_groups[] = { "i2s0", "i2s1",
4932 + "i2s2_bclk_lrclk_mclk",
4933 + "i2s3_bclk_lrclk_mclk",
4935 + "i2s2_data_in", "i2s3_data_in",
4936 + "i2s2_data_0", "i2s2_data_1",
4937 + "i2s3_data_0", "i2s3_data_1", };
4938 +static const char *mt7623_ir_groups[] = { "ir", };
4939 +static const char *mt7623_lcd_groups[] = { "dsi_te", "lcm_rst", "mipi_tx", };
4940 +static const char *mt7623_msdc_groups[] = { "msdc0", "msdc1", "msdc1_ins",
4941 + "msdc1_wp_0", "msdc1_wp_1",
4942 + "msdc1_wp_2", "msdc2",
4944 +static const char *mt7623_nandc_groups[] = { "nandc", "nandc_ceb0",
4946 +static const char *mt7623_otg_groups[] = { "otg_iddig0_0", "otg_iddig0_1",
4947 + "otg_iddig0_2", "otg_iddig1_0",
4948 + "otg_iddig1_1", "otg_iddig1_2",
4949 + "otg_drv_vbus0_0",
4950 + "otg_drv_vbus0_1",
4951 + "otg_drv_vbus0_2",
4952 + "otg_drv_vbus1_0",
4953 + "otg_drv_vbus1_1",
4954 + "otg_drv_vbus1_2", };
4955 +static const char *mt7623_pcie_groups[] = { "pcie0_0_perst", "pcie0_1_perst",
4956 + "pcie1_0_perst", "pcie1_1_perst",
4957 + "pcie2_0_perst", "pcie2_1_perst",
4958 + "pcie0_0_rev_perst",
4959 + "pcie0_1_rev_perst",
4960 + "pcie1_0_rev_perst",
4961 + "pcie1_1_rev_perst",
4962 + "pcie2_0_rev_perst",
4963 + "pcie2_1_rev_perst",
4964 + "pcie0_0_wake", "pcie0_1_wake",
4965 + "pcie2_0_wake", "pcie2_1_wake",
4966 + "pcie0_clkreq", "pcie1_clkreq",
4967 + "pcie2_clkreq", };
4968 +static const char *mt7623_pcm_groups[] = { "pcm_clk_0", "pcm_clk_1",
4969 + "pcm_clk_2", "pcm_clk_3",
4970 + "pcm_clk_4", "pcm_clk_5",
4971 + "pcm_clk_6", "pcm_sync_0",
4972 + "pcm_sync_1", "pcm_sync_2",
4973 + "pcm_sync_3", "pcm_sync_4",
4974 + "pcm_sync_5", "pcm_sync_6",
4975 + "pcm_rx_0", "pcm_rx_1",
4976 + "pcm_rx_2", "pcm_rx_3",
4977 + "pcm_rx_4", "pcm_rx_5",
4978 + "pcm_rx_6", "pcm_tx_0",
4979 + "pcm_tx_1", "pcm_tx_2",
4980 + "pcm_tx_3", "pcm_tx_4",
4981 + "pcm_tx_5", "pcm_tx_6", };
4982 +static const char *mt7623_pwm_groups[] = { "pwm_ch1_0", "pwm_ch1_1",
4983 + "pwm_ch1_2", "pwm_ch2_0",
4984 + "pwm_ch2_1", "pwm_ch2_2",
4985 + "pwm_ch3_0", "pwm_ch3_1",
4986 + "pwm_ch3_2", "pwm_ch4_0",
4987 + "pwm_ch4_1", "pwm_ch4_2",
4988 + "pwm_ch4_3", "pwm_ch5_0",
4989 + "pwm_ch5_1", "pwm_ch5_2",
4990 + "pwm_ch6_0", "pwm_ch6_1",
4991 + "pwm_ch6_2", "pwm_ch6_3",
4992 + "pwm_ch7_0", "pwm_ch7_1",
4994 +static const char *mt7623_pwrap_groups[] = { "pwrap", };
4995 +static const char *mt7623_rtc_groups[] = { "rtc", };
4996 +static const char *mt7623_spi_groups[] = { "spi0", "spi2", "spi2", };
4997 +static const char *mt7623_spdif_groups[] = { "spdif_in0_0", "spdif_in0_1",
4998 + "spdif_in1_0", "spdif_in1_1",
5000 +static const char *mt7623_uart_groups[] = { "uart0_0_txd_rxd",
5001 + "uart0_1_txd_rxd",
5002 + "uart0_2_txd_rxd",
5003 + "uart0_3_txd_rxd",
5004 + "uart1_0_txd_rxd",
5005 + "uart1_1_txd_rxd",
5006 + "uart1_2_txd_rxd",
5007 + "uart2_0_txd_rxd",
5008 + "uart2_1_txd_rxd",
5013 + "uart3_rts_cts", };
5014 +static const char *mt7623_wdt_groups[] = { "watchdog_0", "watchdog_1", };
5016 +static const struct function_desc mt7623_functions[] = {
5017 + {"audck", mt7623_aud_clk_groups, ARRAY_SIZE(mt7623_aud_clk_groups)},
5018 + {"disp", mt7623_disp_pwm_groups, ARRAY_SIZE(mt7623_disp_pwm_groups)},
5019 + {"eth", mt7623_ethernet_groups, ARRAY_SIZE(mt7623_ethernet_groups)},
5020 + {"sdio", mt7623_ext_sdio_groups, ARRAY_SIZE(mt7623_ext_sdio_groups)},
5021 + {"hdmi", mt7623_hdmi_groups, ARRAY_SIZE(mt7623_hdmi_groups)},
5022 + {"i2c", mt7623_i2c_groups, ARRAY_SIZE(mt7623_i2c_groups)},
5023 + {"i2s", mt7623_i2s_groups, ARRAY_SIZE(mt7623_i2s_groups)},
5024 + {"ir", mt7623_ir_groups, ARRAY_SIZE(mt7623_ir_groups)},
5025 + {"lcd", mt7623_lcd_groups, ARRAY_SIZE(mt7623_lcd_groups)},
5026 + {"msdc", mt7623_msdc_groups, ARRAY_SIZE(mt7623_msdc_groups)},
5027 + {"nand", mt7623_nandc_groups, ARRAY_SIZE(mt7623_nandc_groups)},
5028 + {"otg", mt7623_otg_groups, ARRAY_SIZE(mt7623_otg_groups)},
5029 + {"pcie", mt7623_pcie_groups, ARRAY_SIZE(mt7623_pcie_groups)},
5030 + {"pcm", mt7623_pcm_groups, ARRAY_SIZE(mt7623_pcm_groups)},
5031 + {"pwm", mt7623_pwm_groups, ARRAY_SIZE(mt7623_pwm_groups)},
5032 + {"pwrap", mt7623_pwrap_groups, ARRAY_SIZE(mt7623_pwrap_groups)},
5033 + {"rtc", mt7623_rtc_groups, ARRAY_SIZE(mt7623_rtc_groups)},
5034 + {"spi", mt7623_spi_groups, ARRAY_SIZE(mt7623_spi_groups)},
5035 + {"spdif", mt7623_spdif_groups, ARRAY_SIZE(mt7623_spdif_groups)},
5036 + {"uart", mt7623_uart_groups, ARRAY_SIZE(mt7623_uart_groups)},
5037 + {"watchdog", mt7623_wdt_groups, ARRAY_SIZE(mt7623_wdt_groups)},
5040 +static const struct mtk_eint_hw mt7623_eint_hw = {
5047 +static struct mtk_pin_soc mt7623_data = {
5048 + .reg_cal = mt7623_reg_cals,
5049 + .pins = mt7623_pins,
5050 + .npins = ARRAY_SIZE(mt7623_pins),
5051 + .grps = mt7623_groups,
5052 + .ngrps = ARRAY_SIZE(mt7623_groups),
5053 + .funcs = mt7623_functions,
5054 + .nfuncs = ARRAY_SIZE(mt7623_functions),
5055 + .eint_hw = &mt7623_eint_hw,
5057 + .ies_present = true,
5058 + .base_names = mtk_default_register_base_names,
5059 + .nbase_names = ARRAY_SIZE(mtk_default_register_base_names),
5060 + .bias_disable_set = mtk_pinconf_bias_disable_set_rev1,
5061 + .bias_disable_get = mtk_pinconf_bias_disable_get_rev1,
5062 + .bias_set = mtk_pinconf_bias_set_rev1,
5063 + .bias_get = mtk_pinconf_bias_get_rev1,
5064 + .drive_set = mtk_pinconf_drive_set_rev1,
5065 + .drive_get = mtk_pinconf_drive_get_rev1,
5066 + .adv_pull_get = mtk_pinconf_adv_pull_get,
5067 + .adv_pull_set = mtk_pinconf_adv_pull_set,
5071 + * There are some specific pins have mux functions greater than 8,
5072 + * and if we want to switch thees high modes we need to disable
5073 + * bonding constraints firstly.
5075 +static void mt7623_bonding_disable(struct platform_device *pdev)
5077 + struct mtk_pinctrl *hw = platform_get_drvdata(pdev);
5079 + mtk_rmw(hw, 0, PIN_BOND_REG0, BOND_PCIE_CLR, BOND_PCIE_CLR);
5080 + mtk_rmw(hw, 0, PIN_BOND_REG1, BOND_I2S_CLR, BOND_I2S_CLR);
5081 + mtk_rmw(hw, 0, PIN_BOND_REG2, BOND_MSDC0E_CLR, BOND_MSDC0E_CLR);
5084 +static const struct of_device_id mt7623_pctrl_match[] = {
5085 + { .compatible = "mediatek,mt7623-moore-pinctrl", },
5089 +static int mt7623_pinctrl_probe(struct platform_device *pdev)
5093 + err = mtk_moore_pinctrl_probe(pdev, &mt7623_data);
5097 + mt7623_bonding_disable(pdev);
5102 +static struct platform_driver mtk_pinctrl_driver = {
5103 + .probe = mt7623_pinctrl_probe,
5105 + .name = "mt7623-moore-pinctrl",
5106 + .of_match_table = mt7623_pctrl_match,
5110 +static int __init mtk_pinctrl_init(void)
5112 + return platform_driver_register(&mtk_pinctrl_driver);
5114 +arch_initcall(mtk_pinctrl_init);
5115 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt7629.c b/drivers/pinctrl/mediatek/pinctrl-mt7629.c
5116 new file mode 100644
5117 index 000000000000..b5f0fa43245f
5119 +++ b/drivers/pinctrl/mediatek/pinctrl-mt7629.c
5121 +// SPDX-License-Identifier: GPL-2.0
5123 + * The MT7629 driver based on Linux generic pinctrl binding.
5125 + * Copyright (C) 2018 MediaTek Inc.
5126 + * Author: Ryder Lee <ryder.lee@mediatek.com>
5129 +#include "pinctrl-moore.h"
5131 +#define MT7629_PIN(_number, _name, _eint_n) \
5132 + MTK_PIN(_number, _name, 0, _eint_n, DRV_GRP1)
5134 +static const struct mtk_pin_field_calc mt7629_pin_mode_range[] = {
5135 + PIN_FIELD(0, 78, 0x300, 0x10, 0, 4),
5138 +static const struct mtk_pin_field_calc mt7629_pin_dir_range[] = {
5139 + PIN_FIELD(0, 78, 0x0, 0x10, 0, 1),
5142 +static const struct mtk_pin_field_calc mt7629_pin_di_range[] = {
5143 + PIN_FIELD(0, 78, 0x200, 0x10, 0, 1),
5146 +static const struct mtk_pin_field_calc mt7629_pin_do_range[] = {
5147 + PIN_FIELD(0, 78, 0x100, 0x10, 0, 1),
5150 +static const struct mtk_pin_field_calc mt7629_pin_ies_range[] = {
5151 + PIN_FIELD(0, 10, 0x1000, 0x10, 0, 1),
5152 + PIN_FIELD(11, 18, 0x2000, 0x10, 0, 1),
5153 + PIN_FIELD(19, 32, 0x3000, 0x10, 0, 1),
5154 + PIN_FIELD(33, 48, 0x4000, 0x10, 0, 1),
5155 + PIN_FIELD(49, 50, 0x5000, 0x10, 0, 1),
5156 + PIN_FIELD(51, 69, 0x6000, 0x10, 0, 1),
5157 + PIN_FIELD(70, 78, 0x7000, 0x10, 0, 1),
5160 +static const struct mtk_pin_field_calc mt7629_pin_smt_range[] = {
5161 + PIN_FIELD(0, 10, 0x1100, 0x10, 0, 1),
5162 + PIN_FIELD(11, 18, 0x2100, 0x10, 0, 1),
5163 + PIN_FIELD(19, 32, 0x3100, 0x10, 0, 1),
5164 + PIN_FIELD(33, 48, 0x4100, 0x10, 0, 1),
5165 + PIN_FIELD(49, 50, 0x5100, 0x10, 0, 1),
5166 + PIN_FIELD(51, 69, 0x6100, 0x10, 0, 1),
5167 + PIN_FIELD(70, 78, 0x7100, 0x10, 0, 1),
5170 +static const struct mtk_pin_field_calc mt7629_pin_pullen_range[] = {
5171 + PIN_FIELD(0, 10, 0x1400, 0x10, 0, 1),
5172 + PIN_FIELD(11, 18, 0x2400, 0x10, 0, 1),
5173 + PIN_FIELD(19, 32, 0x3400, 0x10, 0, 1),
5174 + PIN_FIELD(33, 48, 0x4400, 0x10, 0, 1),
5175 + PIN_FIELD(49, 50, 0x5400, 0x10, 0, 1),
5176 + PIN_FIELD(51, 69, 0x6400, 0x10, 0, 1),
5177 + PIN_FIELD(70, 78, 0x7400, 0x10, 0, 1),
5180 +static const struct mtk_pin_field_calc mt7629_pin_pullsel_range[] = {
5181 + PIN_FIELD(0, 10, 0x1500, 0x10, 0, 1),
5182 + PIN_FIELD(11, 18, 0x2500, 0x10, 0, 1),
5183 + PIN_FIELD(19, 32, 0x3500, 0x10, 0, 1),
5184 + PIN_FIELD(33, 48, 0x4500, 0x10, 0, 1),
5185 + PIN_FIELD(49, 50, 0x5500, 0x10, 0, 1),
5186 + PIN_FIELD(51, 69, 0x6500, 0x10, 0, 1),
5187 + PIN_FIELD(70, 78, 0x7500, 0x10, 0, 1),
5190 +static const struct mtk_pin_field_calc mt7629_pin_drv_range[] = {
5191 + PIN_FIELD(0, 10, 0x1600, 0x10, 0, 4),
5192 + PIN_FIELD(11, 18, 0x2600, 0x10, 0, 4),
5193 + PIN_FIELD(19, 32, 0x3600, 0x10, 0, 4),
5194 + PIN_FIELD(33, 48, 0x4600, 0x10, 0, 4),
5195 + PIN_FIELD(49, 50, 0x5600, 0x10, 0, 4),
5196 + PIN_FIELD(51, 69, 0x6600, 0x10, 0, 4),
5197 + PIN_FIELD(70, 78, 0x7600, 0x10, 0, 4),
5200 +static const struct mtk_pin_field_calc mt7629_pin_tdsel_range[] = {
5201 + PIN_FIELD(0, 10, 0x1200, 0x10, 0, 4),
5202 + PIN_FIELD(11, 18, 0x2200, 0x10, 0, 4),
5203 + PIN_FIELD(19, 32, 0x3200, 0x10, 0, 4),
5204 + PIN_FIELD(33, 48, 0x4200, 0x10, 0, 4),
5205 + PIN_FIELD(49, 50, 0x5200, 0x10, 0, 4),
5206 + PIN_FIELD(51, 69, 0x6200, 0x10, 0, 4),
5207 + PIN_FIELD(70, 78, 0x7200, 0x10, 0, 4),
5210 +static const struct mtk_pin_field_calc mt7629_pin_rdsel_range[] = {
5211 + PIN_FIELD(0, 10, 0x1300, 0x10, 0, 4),
5212 + PIN_FIELD(11, 18, 0x2300, 0x10, 0, 4),
5213 + PIN_FIELD(19, 32, 0x3300, 0x10, 0, 4),
5214 + PIN_FIELD(33, 48, 0x4300, 0x10, 0, 4),
5215 + PIN_FIELD(49, 50, 0x5300, 0x10, 0, 4),
5216 + PIN_FIELD(51, 69, 0x6300, 0x10, 0, 4),
5217 + PIN_FIELD(70, 78, 0x7300, 0x10, 0, 4),
5220 +static const struct mtk_pin_reg_calc mt7629_reg_cals[] = {
5221 + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt7629_pin_mode_range),
5222 + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt7629_pin_dir_range),
5223 + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt7629_pin_di_range),
5224 + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt7629_pin_do_range),
5225 + [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt7629_pin_ies_range),
5226 + [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt7629_pin_smt_range),
5227 + [PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt7629_pin_pullsel_range),
5228 + [PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt7629_pin_pullen_range),
5229 + [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt7629_pin_drv_range),
5230 + [PINCTRL_PIN_REG_TDSEL] = MTK_RANGE(mt7629_pin_tdsel_range),
5231 + [PINCTRL_PIN_REG_RDSEL] = MTK_RANGE(mt7629_pin_rdsel_range),
5234 +static const struct mtk_pin_desc mt7629_pins[] = {
5235 + MT7629_PIN(0, "TOP_5G_CLK", 53),
5236 + MT7629_PIN(1, "TOP_5G_DATA", 54),
5237 + MT7629_PIN(2, "WF0_5G_HB0", 55),
5238 + MT7629_PIN(3, "WF0_5G_HB1", 56),
5239 + MT7629_PIN(4, "WF0_5G_HB2", 57),
5240 + MT7629_PIN(5, "WF0_5G_HB3", 58),
5241 + MT7629_PIN(6, "WF0_5G_HB4", 59),
5242 + MT7629_PIN(7, "WF0_5G_HB5", 60),
5243 + MT7629_PIN(8, "WF0_5G_HB6", 61),
5244 + MT7629_PIN(9, "XO_REQ", 9),
5245 + MT7629_PIN(10, "TOP_RST_N", 10),
5246 + MT7629_PIN(11, "SYS_WATCHDOG", 11),
5247 + MT7629_PIN(12, "EPHY_LED0_N_JTDO", 12),
5248 + MT7629_PIN(13, "EPHY_LED1_N_JTDI", 13),
5249 + MT7629_PIN(14, "EPHY_LED2_N_JTMS", 14),
5250 + MT7629_PIN(15, "EPHY_LED3_N_JTCLK", 15),
5251 + MT7629_PIN(16, "EPHY_LED4_N_JTRST_N", 16),
5252 + MT7629_PIN(17, "WF2G_LED_N", 17),
5253 + MT7629_PIN(18, "WF5G_LED_N", 18),
5254 + MT7629_PIN(19, "I2C_SDA", 19),
5255 + MT7629_PIN(20, "I2C_SCL", 20),
5256 + MT7629_PIN(21, "GPIO_9", 21),
5257 + MT7629_PIN(22, "GPIO_10", 22),
5258 + MT7629_PIN(23, "GPIO_11", 23),
5259 + MT7629_PIN(24, "GPIO_12", 24),
5260 + MT7629_PIN(25, "UART1_TXD", 25),
5261 + MT7629_PIN(26, "UART1_RXD", 26),
5262 + MT7629_PIN(27, "UART1_CTS", 27),
5263 + MT7629_PIN(28, "UART1_RTS", 28),
5264 + MT7629_PIN(29, "UART2_TXD", 29),
5265 + MT7629_PIN(30, "UART2_RXD", 30),
5266 + MT7629_PIN(31, "UART2_CTS", 31),
5267 + MT7629_PIN(32, "UART2_RTS", 32),
5268 + MT7629_PIN(33, "MDI_TP_P1", 33),
5269 + MT7629_PIN(34, "MDI_TN_P1", 34),
5270 + MT7629_PIN(35, "MDI_RP_P1", 35),
5271 + MT7629_PIN(36, "MDI_RN_P1", 36),
5272 + MT7629_PIN(37, "MDI_RP_P2", 37),
5273 + MT7629_PIN(38, "MDI_RN_P2", 38),
5274 + MT7629_PIN(39, "MDI_TP_P2", 39),
5275 + MT7629_PIN(40, "MDI_TN_P2", 40),
5276 + MT7629_PIN(41, "MDI_TP_P3", 41),
5277 + MT7629_PIN(42, "MDI_TN_P3", 42),
5278 + MT7629_PIN(43, "MDI_RP_P3", 43),
5279 + MT7629_PIN(44, "MDI_RN_P3", 44),
5280 + MT7629_PIN(45, "MDI_RP_P4", 45),
5281 + MT7629_PIN(46, "MDI_RN_P4", 46),
5282 + MT7629_PIN(47, "MDI_TP_P4", 47),
5283 + MT7629_PIN(48, "MDI_TN_P4", 48),
5284 + MT7629_PIN(49, "SMI_MDC", 49),
5285 + MT7629_PIN(50, "SMI_MDIO", 50),
5286 + MT7629_PIN(51, "PCIE_PERESET_N", 51),
5287 + MT7629_PIN(52, "PWM_0", 52),
5288 + MT7629_PIN(53, "GPIO_0", 0),
5289 + MT7629_PIN(54, "GPIO_1", 1),
5290 + MT7629_PIN(55, "GPIO_2", 2),
5291 + MT7629_PIN(56, "GPIO_3", 3),
5292 + MT7629_PIN(57, "GPIO_4", 4),
5293 + MT7629_PIN(58, "GPIO_5", 5),
5294 + MT7629_PIN(59, "GPIO_6", 6),
5295 + MT7629_PIN(60, "GPIO_7", 7),
5296 + MT7629_PIN(61, "GPIO_8", 8),
5297 + MT7629_PIN(62, "SPI_CLK", 62),
5298 + MT7629_PIN(63, "SPI_CS", 63),
5299 + MT7629_PIN(64, "SPI_MOSI", 64),
5300 + MT7629_PIN(65, "SPI_MISO", 65),
5301 + MT7629_PIN(66, "SPI_WP", 66),
5302 + MT7629_PIN(67, "SPI_HOLD", 67),
5303 + MT7629_PIN(68, "UART0_TXD", 68),
5304 + MT7629_PIN(69, "UART0_RXD", 69),
5305 + MT7629_PIN(70, "TOP_2G_CLK", 70),
5306 + MT7629_PIN(71, "TOP_2G_DATA", 71),
5307 + MT7629_PIN(72, "WF0_2G_HB0", 72),
5308 + MT7629_PIN(73, "WF0_2G_HB1", 73),
5309 + MT7629_PIN(74, "WF0_2G_HB2", 74),
5310 + MT7629_PIN(75, "WF0_2G_HB3", 75),
5311 + MT7629_PIN(76, "WF0_2G_HB4", 76),
5312 + MT7629_PIN(77, "WF0_2G_HB5", 77),
5313 + MT7629_PIN(78, "WF0_2G_HB6", 78),
5316 +/* List all groups consisting of these pins dedicated to the enablement of
5317 + * certain hardware block and the corresponding mode for all of the pins.
5318 + * The hardware probably has multiple combinations of these pinouts.
5322 +static int mt7629_ephy_leds_pins[] = { 12, 13, 14, 15, 16, 17, 18, };
5323 +static int mt7629_ephy_leds_funcs[] = { 1, 1, 1, 1, 1, 1, 1, };
5324 +static int mt7629_ephy_led0_pins[] = { 12, };
5325 +static int mt7629_ephy_led0_funcs[] = { 1, };
5326 +static int mt7629_ephy_led1_pins[] = { 13, };
5327 +static int mt7629_ephy_led1_funcs[] = { 1, };
5328 +static int mt7629_ephy_led2_pins[] = { 14, };
5329 +static int mt7629_ephy_led2_funcs[] = { 1, };
5330 +static int mt7629_ephy_led3_pins[] = { 15, };
5331 +static int mt7629_ephy_led3_funcs[] = { 1, };
5332 +static int mt7629_ephy_led4_pins[] = { 16, };
5333 +static int mt7629_ephy_led4_funcs[] = { 1, };
5334 +static int mt7629_wf2g_led_pins[] = { 17, };
5335 +static int mt7629_wf2g_led_funcs[] = { 1, };
5336 +static int mt7629_wf5g_led_pins[] = { 18, };
5337 +static int mt7629_wf5g_led_funcs[] = { 1, };
5340 +static int mt7629_watchdog_pins[] = { 11, };
5341 +static int mt7629_watchdog_funcs[] = { 1, };
5344 +static int mt7629_gphy_leds_0_pins[] = { 21, 22, 23, };
5345 +static int mt7629_gphy_leds_0_funcs[] = { 2, 2, 2, };
5346 +static int mt7629_gphy_led1_0_pins[] = { 21, };
5347 +static int mt7629_gphy_led1_0_funcs[] = { 2, };
5348 +static int mt7629_gphy_led2_0_pins[] = { 22, };
5349 +static int mt7629_gphy_led2_0_funcs[] = { 2, };
5350 +static int mt7629_gphy_led3_0_pins[] = { 23, };
5351 +static int mt7629_gphy_led3_0_funcs[] = { 2, };
5352 +static int mt7629_gphy_leds_1_pins[] = { 57, 58, 59, };
5353 +static int mt7629_gphy_leds_1_funcs[] = { 1, 1, 1, };
5354 +static int mt7629_gphy_led1_1_pins[] = { 57, };
5355 +static int mt7629_gphy_led1_1_funcs[] = { 1, };
5356 +static int mt7629_gphy_led2_1_pins[] = { 58, };
5357 +static int mt7629_gphy_led2_1_funcs[] = { 1, };
5358 +static int mt7629_gphy_led3_1_pins[] = { 59, };
5359 +static int mt7629_gphy_led3_1_funcs[] = { 1, };
5362 +static int mt7629_i2c_0_pins[] = { 19, 20, };
5363 +static int mt7629_i2c_0_funcs[] = { 1, 1, };
5364 +static int mt7629_i2c_1_pins[] = { 53, 54, };
5365 +static int mt7629_i2c_1_funcs[] = { 1, 1, };
5368 +static int mt7629_spi_0_pins[] = { 21, 22, 23, 24, };
5369 +static int mt7629_spi_0_funcs[] = { 1, 1, 1, 1, };
5370 +static int mt7629_spi_1_pins[] = { 62, 63, 64, 65, };
5371 +static int mt7629_spi_1_funcs[] = { 1, 1, 1, 1, };
5372 +static int mt7629_spi_wp_pins[] = { 66, };
5373 +static int mt7629_spi_wp_funcs[] = { 1, };
5374 +static int mt7629_spi_hold_pins[] = { 67, };
5375 +static int mt7629_spi_hold_funcs[] = { 1, };
5378 +static int mt7629_uart1_0_txd_rxd_pins[] = { 25, 26, };
5379 +static int mt7629_uart1_0_txd_rxd_funcs[] = { 1, 1, };
5380 +static int mt7629_uart1_1_txd_rxd_pins[] = { 53, 54, };
5381 +static int mt7629_uart1_1_txd_rxd_funcs[] = { 2, 2, };
5382 +static int mt7629_uart2_0_txd_rxd_pins[] = { 29, 30, };
5383 +static int mt7629_uart2_0_txd_rxd_funcs[] = { 1, 1, };
5384 +static int mt7629_uart2_1_txd_rxd_pins[] = { 57, 58, };
5385 +static int mt7629_uart2_1_txd_rxd_funcs[] = { 2, 2, };
5386 +static int mt7629_uart1_0_cts_rts_pins[] = { 27, 28, };
5387 +static int mt7629_uart1_0_cts_rts_funcs[] = { 1, 1, };
5388 +static int mt7629_uart1_1_cts_rts_pins[] = { 55, 56, };
5389 +static int mt7629_uart1_1_cts_rts_funcs[] = { 2, 2, };
5390 +static int mt7629_uart2_0_cts_rts_pins[] = { 31, 32, };
5391 +static int mt7629_uart2_0_cts_rts_funcs[] = { 1, 1, };
5392 +static int mt7629_uart2_1_cts_rts_pins[] = { 59, 60, };
5393 +static int mt7629_uart2_1_cts_rts_funcs[] = { 2, 2, };
5394 +static int mt7629_uart0_txd_rxd_pins[] = { 68, 69, };
5395 +static int mt7629_uart0_txd_rxd_funcs[] = { 1, 1, };
5398 +static int mt7629_mdc_mdio_pins[] = { 49, 50, };
5399 +static int mt7629_mdc_mdio_funcs[] = { 1, 1, };
5402 +static int mt7629_pcie_pereset_pins[] = { 51, };
5403 +static int mt7629_pcie_pereset_funcs[] = { 1, };
5404 +static int mt7629_pcie_wake_pins[] = { 55, };
5405 +static int mt7629_pcie_wake_funcs[] = { 1, };
5406 +static int mt7629_pcie_clkreq_pins[] = { 56, };
5407 +static int mt7629_pcie_clkreq_funcs[] = { 1, };
5410 +static int mt7629_pwm_0_pins[] = { 52, };
5411 +static int mt7629_pwm_0_funcs[] = { 1, };
5412 +static int mt7629_pwm_1_pins[] = { 61, };
5413 +static int mt7629_pwm_1_funcs[] = { 2, };
5416 +static int mt7629_wf0_2g_pins[] = { 70, 71, 72, 73, 74, 75, 76, 77, 78, };
5417 +static int mt7629_wf0_2g_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, };
5420 +static int mt7629_wf0_5g_pins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, };
5421 +static int mt7629_wf0_5g_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
5424 +static int mt7629_snfi_pins[] = { 62, 63, 64, 65, 66, 67 };
5425 +static int mt7629_snfi_funcs[] = { 2, 2, 2, 2, 2, 2 };
5428 +static int mt7629_snor_pins[] = { 62, 63, 64, 65, 66, 67 };
5429 +static int mt7629_snor_funcs[] = { 1, 1, 1, 1, 1, 1 };
5431 +static const struct group_desc mt7629_groups[] = {
5432 + PINCTRL_PIN_GROUP("ephy_leds", mt7629_ephy_leds),
5433 + PINCTRL_PIN_GROUP("ephy_led0", mt7629_ephy_led0),
5434 + PINCTRL_PIN_GROUP("ephy_led1", mt7629_ephy_led1),
5435 + PINCTRL_PIN_GROUP("ephy_led2", mt7629_ephy_led2),
5436 + PINCTRL_PIN_GROUP("ephy_led3", mt7629_ephy_led3),
5437 + PINCTRL_PIN_GROUP("ephy_led4", mt7629_ephy_led4),
5438 + PINCTRL_PIN_GROUP("wf2g_led", mt7629_wf2g_led),
5439 + PINCTRL_PIN_GROUP("wf5g_led", mt7629_wf5g_led),
5440 + PINCTRL_PIN_GROUP("watchdog", mt7629_watchdog),
5441 + PINCTRL_PIN_GROUP("gphy_leds_0", mt7629_gphy_leds_0),
5442 + PINCTRL_PIN_GROUP("gphy_led1_0", mt7629_gphy_led1_0),
5443 + PINCTRL_PIN_GROUP("gphy_led2_0", mt7629_gphy_led2_0),
5444 + PINCTRL_PIN_GROUP("gphy_led3_0", mt7629_gphy_led3_0),
5445 + PINCTRL_PIN_GROUP("gphy_leds_1", mt7629_gphy_leds_1),
5446 + PINCTRL_PIN_GROUP("gphy_led1_1", mt7629_gphy_led1_1),
5447 + PINCTRL_PIN_GROUP("gphy_led2_1", mt7629_gphy_led2_1),
5448 + PINCTRL_PIN_GROUP("gphy_led3_1", mt7629_gphy_led3_1),
5449 + PINCTRL_PIN_GROUP("i2c_0", mt7629_i2c_0),
5450 + PINCTRL_PIN_GROUP("i2c_1", mt7629_i2c_1),
5451 + PINCTRL_PIN_GROUP("spi_0", mt7629_spi_0),
5452 + PINCTRL_PIN_GROUP("spi_1", mt7629_spi_1),
5453 + PINCTRL_PIN_GROUP("spi_wp", mt7629_spi_wp),
5454 + PINCTRL_PIN_GROUP("spi_hold", mt7629_spi_hold),
5455 + PINCTRL_PIN_GROUP("uart1_0_txd_rxd", mt7629_uart1_0_txd_rxd),
5456 + PINCTRL_PIN_GROUP("uart1_1_txd_rxd", mt7629_uart1_1_txd_rxd),
5457 + PINCTRL_PIN_GROUP("uart2_0_txd_rxd", mt7629_uart2_0_txd_rxd),
5458 + PINCTRL_PIN_GROUP("uart2_1_txd_rxd", mt7629_uart2_1_txd_rxd),
5459 + PINCTRL_PIN_GROUP("uart1_0_cts_rts", mt7629_uart1_0_cts_rts),
5460 + PINCTRL_PIN_GROUP("uart1_1_cts_rts", mt7629_uart1_1_cts_rts),
5461 + PINCTRL_PIN_GROUP("uart2_0_cts_rts", mt7629_uart2_0_cts_rts),
5462 + PINCTRL_PIN_GROUP("uart2_1_cts_rts", mt7629_uart2_1_cts_rts),
5463 + PINCTRL_PIN_GROUP("uart0_txd_rxd", mt7629_uart0_txd_rxd),
5464 + PINCTRL_PIN_GROUP("mdc_mdio", mt7629_mdc_mdio),
5465 + PINCTRL_PIN_GROUP("pcie_pereset", mt7629_pcie_pereset),
5466 + PINCTRL_PIN_GROUP("pcie_wake", mt7629_pcie_wake),
5467 + PINCTRL_PIN_GROUP("pcie_clkreq", mt7629_pcie_clkreq),
5468 + PINCTRL_PIN_GROUP("pwm_0", mt7629_pwm_0),
5469 + PINCTRL_PIN_GROUP("pwm_1", mt7629_pwm_1),
5470 + PINCTRL_PIN_GROUP("wf0_5g", mt7629_wf0_5g),
5471 + PINCTRL_PIN_GROUP("wf0_2g", mt7629_wf0_2g),
5472 + PINCTRL_PIN_GROUP("snfi", mt7629_snfi),
5473 + PINCTRL_PIN_GROUP("spi_nor", mt7629_snor),
5476 +/* Joint those groups owning the same capability in user point of view which
5477 + * allows that people tend to use through the device tree.
5479 +static const char *mt7629_ethernet_groups[] = { "mdc_mdio", };
5480 +static const char *mt7629_i2c_groups[] = { "i2c_0", "i2c_1", };
5481 +static const char *mt7629_led_groups[] = { "ephy_leds", "ephy_led0",
5482 + "ephy_led1", "ephy_led2",
5483 + "ephy_led3", "ephy_led4",
5484 + "wf2g_led", "wf5g_led",
5485 + "gphy_leds_0", "gphy_led1_0",
5486 + "gphy_led2_0", "gphy_led3_0",
5487 + "gphy_leds_1", "gphy_led1_1",
5488 + "gphy_led2_1", "gphy_led3_1",};
5489 +static const char *mt7629_pcie_groups[] = { "pcie_pereset", "pcie_wake",
5491 +static const char *mt7629_pwm_groups[] = { "pwm_0", "pwm_1", };
5492 +static const char *mt7629_spi_groups[] = { "spi_0", "spi_1", "spi_wp",
5494 +static const char *mt7629_uart_groups[] = { "uart1_0_txd_rxd",
5495 + "uart1_1_txd_rxd",
5496 + "uart2_0_txd_rxd",
5497 + "uart2_1_txd_rxd",
5498 + "uart1_0_cts_rts",
5499 + "uart1_1_cts_rts",
5500 + "uart2_0_cts_rts",
5501 + "uart2_1_cts_rts",
5502 + "uart0_txd_rxd", };
5503 +static const char *mt7629_wdt_groups[] = { "watchdog", };
5504 +static const char *mt7629_wifi_groups[] = { "wf0_5g", "wf0_2g", };
5505 +static const char *mt7629_flash_groups[] = { "snfi", "spi_nor" };
5507 +static const struct function_desc mt7629_functions[] = {
5508 + {"eth", mt7629_ethernet_groups, ARRAY_SIZE(mt7629_ethernet_groups)},
5509 + {"i2c", mt7629_i2c_groups, ARRAY_SIZE(mt7629_i2c_groups)},
5510 + {"led", mt7629_led_groups, ARRAY_SIZE(mt7629_led_groups)},
5511 + {"pcie", mt7629_pcie_groups, ARRAY_SIZE(mt7629_pcie_groups)},
5512 + {"pwm", mt7629_pwm_groups, ARRAY_SIZE(mt7629_pwm_groups)},
5513 + {"spi", mt7629_spi_groups, ARRAY_SIZE(mt7629_spi_groups)},
5514 + {"uart", mt7629_uart_groups, ARRAY_SIZE(mt7629_uart_groups)},
5515 + {"watchdog", mt7629_wdt_groups, ARRAY_SIZE(mt7629_wdt_groups)},
5516 + {"wifi", mt7629_wifi_groups, ARRAY_SIZE(mt7629_wifi_groups)},
5517 + {"flash", mt7629_flash_groups, ARRAY_SIZE(mt7629_flash_groups)},
5520 +static const struct mtk_eint_hw mt7629_eint_hw = {
5523 + .ap_num = ARRAY_SIZE(mt7629_pins),
5527 +static struct mtk_pin_soc mt7629_data = {
5528 + .reg_cal = mt7629_reg_cals,
5529 + .pins = mt7629_pins,
5530 + .npins = ARRAY_SIZE(mt7629_pins),
5531 + .grps = mt7629_groups,
5532 + .ngrps = ARRAY_SIZE(mt7629_groups),
5533 + .funcs = mt7629_functions,
5534 + .nfuncs = ARRAY_SIZE(mt7629_functions),
5535 + .eint_hw = &mt7629_eint_hw,
5537 + .ies_present = true,
5538 + .base_names = mtk_default_register_base_names,
5539 + .nbase_names = ARRAY_SIZE(mtk_default_register_base_names),
5540 + .bias_disable_set = mtk_pinconf_bias_disable_set_rev1,
5541 + .bias_disable_get = mtk_pinconf_bias_disable_get_rev1,
5542 + .bias_set = mtk_pinconf_bias_set_rev1,
5543 + .bias_get = mtk_pinconf_bias_get_rev1,
5544 + .drive_set = mtk_pinconf_drive_set_rev1,
5545 + .drive_get = mtk_pinconf_drive_get_rev1,
5548 +static const struct of_device_id mt7629_pinctrl_of_match[] = {
5549 + { .compatible = "mediatek,mt7629-pinctrl", },
5553 +static int mt7629_pinctrl_probe(struct platform_device *pdev)
5555 + return mtk_moore_pinctrl_probe(pdev, &mt7629_data);
5558 +static struct platform_driver mt7629_pinctrl_driver = {
5560 + .name = "mt7629-pinctrl",
5561 + .of_match_table = mt7629_pinctrl_of_match,
5563 + .probe = mt7629_pinctrl_probe,
5566 +static int __init mt7629_pinctrl_init(void)
5568 + return platform_driver_register(&mt7629_pinctrl_driver);
5570 +arch_initcall(mt7629_pinctrl_init);
5571 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8183.c b/drivers/pinctrl/mediatek/pinctrl-mt8183.c
5572 new file mode 100644
5573 index 000000000000..9a74d5025be6
5575 +++ b/drivers/pinctrl/mediatek/pinctrl-mt8183.c
5577 +// SPDX-License-Identifier: GPL-2.0
5579 + * Copyright (C) 2018 MediaTek Inc.
5581 + * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
5585 +#include "pinctrl-mtk-mt8183.h"
5586 +#include "pinctrl-paris.h"
5588 +/* MT8183 have multiple bases to program pin configuration listed as the below:
5589 + * iocfg[0]:0x10005000, iocfg[1]:0x11F20000, iocfg[2]:0x11E80000,
5590 + * iocfg[3]:0x11E70000, iocfg[4]:0x11E90000, iocfg[5]:0x11D30000,
5591 + * iocfg[6]:0x11D20000, iocfg[7]:0x11C50000, iocfg[8]:0x11F30000.
5592 + * _i_based could be used to indicate what base the pin should be mapped into.
5595 +#define PIN_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
5596 + PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
5599 +#define PINS_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
5600 + PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
5603 +static const struct mtk_pin_field_calc mt8183_pin_mode_range[] = {
5604 + PIN_FIELD(0, 192, 0x300, 0x10, 0, 4),
5607 +static const struct mtk_pin_field_calc mt8183_pin_dir_range[] = {
5608 + PIN_FIELD(0, 192, 0x0, 0x10, 0, 1),
5611 +static const struct mtk_pin_field_calc mt8183_pin_di_range[] = {
5612 + PIN_FIELD(0, 192, 0x200, 0x10, 0, 1),
5615 +static const struct mtk_pin_field_calc mt8183_pin_do_range[] = {
5616 + PIN_FIELD(0, 192, 0x100, 0x10, 0, 1),
5619 +static const struct mtk_pin_field_calc mt8183_pin_ies_range[] = {
5620 + PINS_FIELD_BASE(0, 3, 6, 0x000, 0x10, 3, 1),
5621 + PINS_FIELD_BASE(4, 7, 6, 0x000, 0x10, 5, 1),
5622 + PIN_FIELD_BASE(8, 8, 6, 0x000, 0x10, 0, 1),
5623 + PINS_FIELD_BASE(9, 10, 6, 0x000, 0x10, 12, 1),
5624 + PIN_FIELD_BASE(11, 11, 1, 0x000, 0x10, 3, 1),
5625 + PIN_FIELD_BASE(12, 12, 1, 0x000, 0x10, 7, 1),
5626 + PINS_FIELD_BASE(13, 16, 2, 0x000, 0x10, 2, 1),
5627 + PINS_FIELD_BASE(17, 20, 2, 0x000, 0x10, 3, 1),
5628 + PINS_FIELD_BASE(21, 24, 2, 0x000, 0x10, 4, 1),
5629 + PINS_FIELD_BASE(25, 28, 2, 0x000, 0x10, 5, 1),
5630 + PIN_FIELD_BASE(29, 29, 2, 0x000, 0x10, 6, 1),
5631 + PIN_FIELD_BASE(30, 30, 2, 0x000, 0x10, 7, 1),
5632 + PINS_FIELD_BASE(31, 31, 2, 0x000, 0x10, 8, 1),
5633 + PINS_FIELD_BASE(32, 34, 2, 0x000, 0x10, 7, 1),
5634 + PINS_FIELD_BASE(35, 37, 3, 0x000, 0x10, 0, 1),
5635 + PINS_FIELD_BASE(38, 40, 3, 0x000, 0x10, 1, 1),
5636 + PINS_FIELD_BASE(41, 42, 3, 0x000, 0x10, 2, 1),
5637 + PINS_FIELD_BASE(43, 45, 3, 0x000, 0x10, 3, 1),
5638 + PINS_FIELD_BASE(46, 47, 3, 0x000, 0x10, 4, 1),
5639 + PINS_FIELD_BASE(48, 49, 3, 0x000, 0x10, 5, 1),
5640 + PINS_FIELD_BASE(50, 51, 4, 0x000, 0x10, 0, 1),
5641 + PINS_FIELD_BASE(52, 57, 4, 0x000, 0x10, 1, 1),
5642 + PINS_FIELD_BASE(58, 60, 4, 0x000, 0x10, 2, 1),
5643 + PINS_FIELD_BASE(61, 64, 5, 0x000, 0x10, 0, 1),
5644 + PINS_FIELD_BASE(65, 66, 5, 0x000, 0x10, 1, 1),
5645 + PINS_FIELD_BASE(67, 68, 5, 0x000, 0x10, 2, 1),
5646 + PINS_FIELD_BASE(69, 71, 5, 0x000, 0x10, 3, 1),
5647 + PINS_FIELD_BASE(72, 76, 5, 0x000, 0x10, 4, 1),
5648 + PINS_FIELD_BASE(77, 80, 5, 0x000, 0x10, 5, 1),
5649 + PIN_FIELD_BASE(81, 81, 5, 0x000, 0x10, 6, 1),
5650 + PINS_FIELD_BASE(82, 83, 5, 0x000, 0x10, 7, 1),
5651 + PIN_FIELD_BASE(84, 84, 5, 0x000, 0x10, 6, 1),
5652 + PINS_FIELD_BASE(85, 88, 5, 0x000, 0x10, 8, 1),
5653 + PIN_FIELD_BASE(89, 89, 6, 0x000, 0x10, 11, 1),
5654 + PIN_FIELD_BASE(90, 90, 6, 0x000, 0x10, 1, 1),
5655 + PINS_FIELD_BASE(91, 94, 6, 0x000, 0x10, 2, 1),
5656 + PINS_FIELD_BASE(95, 96, 6, 0x000, 0x10, 6, 1),
5657 + PINS_FIELD_BASE(97, 98, 6, 0x000, 0x10, 7, 1),
5658 + PIN_FIELD_BASE(99, 99, 6, 0x000, 0x10, 8, 1),
5659 + PIN_FIELD_BASE(100, 100, 6, 0x000, 0x10, 9, 1),
5660 + PINS_FIELD_BASE(101, 102, 6, 0x000, 0x10, 10, 1),
5661 + PINS_FIELD_BASE(103, 104, 6, 0x000, 0x10, 13, 1),
5662 + PINS_FIELD_BASE(105, 106, 6, 0x000, 0x10, 14, 1),
5663 + PIN_FIELD_BASE(107, 107, 7, 0x000, 0x10, 0, 1),
5664 + PIN_FIELD_BASE(108, 108, 7, 0x000, 0x10, 1, 1),
5665 + PIN_FIELD_BASE(109, 109, 7, 0x000, 0x10, 2, 1),
5666 + PIN_FIELD_BASE(110, 110, 7, 0x000, 0x10, 0, 1),
5667 + PIN_FIELD_BASE(111, 111, 7, 0x000, 0x10, 3, 1),
5668 + PIN_FIELD_BASE(112, 112, 7, 0x000, 0x10, 2, 1),
5669 + PIN_FIELD_BASE(113, 113, 7, 0x000, 0x10, 4, 1),
5670 + PIN_FIELD_BASE(114, 114, 7, 0x000, 0x10, 5, 1),
5671 + PIN_FIELD_BASE(115, 115, 7, 0x000, 0x10, 6, 1),
5672 + PIN_FIELD_BASE(116, 116, 7, 0x000, 0x10, 7, 1),
5673 + PIN_FIELD_BASE(117, 117, 7, 0x000, 0x10, 8, 1),
5674 + PIN_FIELD_BASE(118, 118, 7, 0x000, 0x10, 9, 1),
5675 + PIN_FIELD_BASE(119, 119, 7, 0x000, 0x10, 10, 1),
5676 + PIN_FIELD_BASE(120, 120, 7, 0x000, 0x10, 11, 1),
5677 + PIN_FIELD_BASE(121, 121, 7, 0x000, 0x10, 12, 1),
5678 + PIN_FIELD_BASE(122, 122, 8, 0x000, 0x10, 0, 1),
5679 + PIN_FIELD_BASE(123, 123, 8, 0x000, 0x10, 1, 1),
5680 + PIN_FIELD_BASE(124, 124, 8, 0x000, 0x10, 2, 1),
5681 + PINS_FIELD_BASE(125, 130, 8, 0x000, 0x10, 1, 1),
5682 + PIN_FIELD_BASE(131, 131, 8, 0x000, 0x10, 3, 1),
5683 + PIN_FIELD_BASE(132, 132, 8, 0x000, 0x10, 1, 1),
5684 + PIN_FIELD_BASE(133, 133, 8, 0x000, 0x10, 4, 1),
5685 + PIN_FIELD_BASE(134, 134, 1, 0x000, 0x10, 0, 1),
5686 + PIN_FIELD_BASE(135, 135, 1, 0x000, 0x10, 1, 1),
5687 + PINS_FIELD_BASE(136, 143, 1, 0x000, 0x10, 2, 1),
5688 + PINS_FIELD_BASE(144, 147, 1, 0x000, 0x10, 4, 1),
5689 + PIN_FIELD_BASE(148, 148, 1, 0x000, 0x10, 5, 1),
5690 + PIN_FIELD_BASE(149, 149, 1, 0x000, 0x10, 6, 1),
5691 + PINS_FIELD_BASE(150, 153, 1, 0x000, 0x10, 8, 1),
5692 + PIN_FIELD_BASE(154, 154, 1, 0x000, 0x10, 9, 1),
5693 + PINS_FIELD_BASE(155, 157, 1, 0x000, 0x10, 10, 1),
5694 + PINS_FIELD_BASE(158, 160, 1, 0x000, 0x10, 8, 1),
5695 + PINS_FIELD_BASE(161, 164, 2, 0x000, 0x10, 0, 1),
5696 + PINS_FIELD_BASE(165, 166, 2, 0x000, 0x10, 1, 1),
5697 + PINS_FIELD_BASE(167, 168, 4, 0x000, 0x10, 2, 1),
5698 + PIN_FIELD_BASE(169, 169, 4, 0x000, 0x10, 3, 1),
5699 + PINS_FIELD_BASE(170, 174, 4, 0x000, 0x10, 4, 1),
5700 + PINS_FIELD_BASE(175, 176, 4, 0x000, 0x10, 3, 1),
5701 + PINS_FIELD_BASE(177, 179, 6, 0x000, 0x10, 4, 1),
5704 +static const struct mtk_pin_field_calc mt8183_pin_smt_range[] = {
5705 + PINS_FIELD_BASE(0, 3, 6, 0x010, 0x10, 3, 1),
5706 + PINS_FIELD_BASE(4, 7, 6, 0x010, 0x10, 5, 1),
5707 + PIN_FIELD_BASE(8, 8, 6, 0x010, 0x10, 0, 1),
5708 + PINS_FIELD_BASE(9, 10, 6, 0x010, 0x10, 12, 1),
5709 + PIN_FIELD_BASE(11, 11, 1, 0x010, 0x10, 3, 1),
5710 + PIN_FIELD_BASE(12, 12, 1, 0x010, 0x10, 7, 1),
5711 + PINS_FIELD_BASE(13, 16, 2, 0x010, 0x10, 2, 1),
5712 + PINS_FIELD_BASE(17, 20, 2, 0x010, 0x10, 3, 1),
5713 + PINS_FIELD_BASE(21, 24, 2, 0x010, 0x10, 4, 1),
5714 + PINS_FIELD_BASE(25, 28, 2, 0x010, 0x10, 5, 1),
5715 + PIN_FIELD_BASE(29, 29, 2, 0x010, 0x10, 6, 1),
5716 + PIN_FIELD_BASE(30, 30, 2, 0x010, 0x10, 7, 1),
5717 + PINS_FIELD_BASE(31, 31, 2, 0x010, 0x10, 8, 1),
5718 + PINS_FIELD_BASE(32, 34, 2, 0x010, 0x10, 7, 1),
5719 + PINS_FIELD_BASE(35, 37, 3, 0x010, 0x10, 0, 1),
5720 + PINS_FIELD_BASE(38, 40, 3, 0x010, 0x10, 1, 1),
5721 + PINS_FIELD_BASE(41, 42, 3, 0x010, 0x10, 2, 1),
5722 + PINS_FIELD_BASE(43, 45, 3, 0x010, 0x10, 3, 1),
5723 + PINS_FIELD_BASE(46, 47, 3, 0x010, 0x10, 4, 1),
5724 + PINS_FIELD_BASE(48, 49, 3, 0x010, 0x10, 5, 1),
5725 + PINS_FIELD_BASE(50, 51, 4, 0x010, 0x10, 0, 1),
5726 + PINS_FIELD_BASE(52, 57, 4, 0x010, 0x10, 1, 1),
5727 + PINS_FIELD_BASE(58, 60, 4, 0x010, 0x10, 2, 1),
5728 + PINS_FIELD_BASE(61, 64, 5, 0x010, 0x10, 0, 1),
5729 + PINS_FIELD_BASE(65, 66, 5, 0x010, 0x10, 1, 1),
5730 + PINS_FIELD_BASE(67, 68, 5, 0x010, 0x10, 2, 1),
5731 + PINS_FIELD_BASE(69, 71, 5, 0x010, 0x10, 3, 1),
5732 + PINS_FIELD_BASE(72, 76, 5, 0x010, 0x10, 4, 1),
5733 + PINS_FIELD_BASE(77, 80, 5, 0x010, 0x10, 5, 1),
5734 + PIN_FIELD_BASE(81, 81, 5, 0x010, 0x10, 6, 1),
5735 + PINS_FIELD_BASE(82, 83, 5, 0x010, 0x10, 7, 1),
5736 + PIN_FIELD_BASE(84, 84, 5, 0x010, 0x10, 6, 1),
5737 + PINS_FIELD_BASE(85, 88, 5, 0x010, 0x10, 8, 1),
5738 + PIN_FIELD_BASE(89, 89, 6, 0x010, 0x10, 11, 1),
5739 + PIN_FIELD_BASE(90, 90, 6, 0x010, 0x10, 1, 1),
5740 + PINS_FIELD_BASE(91, 94, 6, 0x010, 0x10, 2, 1),
5741 + PINS_FIELD_BASE(95, 96, 6, 0x010, 0x10, 6, 1),
5742 + PINS_FIELD_BASE(97, 98, 6, 0x010, 0x10, 7, 1),
5743 + PIN_FIELD_BASE(99, 99, 6, 0x010, 0x10, 8, 1),
5744 + PIN_FIELD_BASE(100, 100, 6, 0x010, 0x10, 9, 1),
5745 + PINS_FIELD_BASE(101, 102, 6, 0x010, 0x10, 10, 1),
5746 + PINS_FIELD_BASE(103, 104, 6, 0x010, 0x10, 13, 1),
5747 + PINS_FIELD_BASE(105, 106, 6, 0x010, 0x10, 14, 1),
5748 + PIN_FIELD_BASE(107, 107, 7, 0x010, 0x10, 0, 1),
5749 + PIN_FIELD_BASE(108, 108, 7, 0x010, 0x10, 1, 1),
5750 + PIN_FIELD_BASE(109, 109, 7, 0x010, 0x10, 2, 1),
5751 + PIN_FIELD_BASE(110, 110, 7, 0x010, 0x10, 0, 1),
5752 + PIN_FIELD_BASE(111, 111, 7, 0x010, 0x10, 3, 1),
5753 + PIN_FIELD_BASE(112, 112, 7, 0x010, 0x10, 2, 1),
5754 + PIN_FIELD_BASE(113, 113, 7, 0x010, 0x10, 4, 1),
5755 + PIN_FIELD_BASE(114, 114, 7, 0x010, 0x10, 5, 1),
5756 + PIN_FIELD_BASE(115, 115, 7, 0x010, 0x10, 6, 1),
5757 + PIN_FIELD_BASE(116, 116, 7, 0x010, 0x10, 7, 1),
5758 + PIN_FIELD_BASE(117, 117, 7, 0x010, 0x10, 8, 1),
5759 + PIN_FIELD_BASE(118, 118, 7, 0x010, 0x10, 9, 1),
5760 + PIN_FIELD_BASE(119, 119, 7, 0x010, 0x10, 10, 1),
5761 + PIN_FIELD_BASE(120, 120, 7, 0x010, 0x10, 11, 1),
5762 + PIN_FIELD_BASE(121, 121, 7, 0x010, 0x10, 12, 1),
5763 + PIN_FIELD_BASE(122, 122, 8, 0x010, 0x10, 0, 1),
5764 + PIN_FIELD_BASE(123, 123, 8, 0x010, 0x10, 1, 1),
5765 + PIN_FIELD_BASE(124, 124, 8, 0x010, 0x10, 2, 1),
5766 + PINS_FIELD_BASE(125, 130, 8, 0x010, 0x10, 1, 1),
5767 + PIN_FIELD_BASE(131, 131, 8, 0x010, 0x10, 3, 1),
5768 + PIN_FIELD_BASE(132, 132, 8, 0x010, 0x10, 1, 1),
5769 + PIN_FIELD_BASE(133, 133, 8, 0x010, 0x10, 4, 1),
5770 + PIN_FIELD_BASE(134, 134, 1, 0x010, 0x10, 0, 1),
5771 + PIN_FIELD_BASE(135, 135, 1, 0x010, 0x10, 1, 1),
5772 + PINS_FIELD_BASE(136, 143, 1, 0x010, 0x10, 2, 1),
5773 + PINS_FIELD_BASE(144, 147, 1, 0x010, 0x10, 4, 1),
5774 + PIN_FIELD_BASE(148, 148, 1, 0x010, 0x10, 5, 1),
5775 + PIN_FIELD_BASE(149, 149, 1, 0x010, 0x10, 6, 1),
5776 + PINS_FIELD_BASE(150, 153, 1, 0x010, 0x10, 8, 1),
5777 + PIN_FIELD_BASE(154, 154, 1, 0x010, 0x10, 9, 1),
5778 + PINS_FIELD_BASE(155, 157, 1, 0x010, 0x10, 10, 1),
5779 + PINS_FIELD_BASE(158, 160, 1, 0x010, 0x10, 8, 1),
5780 + PINS_FIELD_BASE(161, 164, 2, 0x010, 0x10, 0, 1),
5781 + PINS_FIELD_BASE(165, 166, 2, 0x010, 0x10, 1, 1),
5782 + PINS_FIELD_BASE(167, 168, 4, 0x010, 0x10, 2, 1),
5783 + PIN_FIELD_BASE(169, 169, 4, 0x010, 0x10, 3, 1),
5784 + PINS_FIELD_BASE(170, 174, 4, 0x010, 0x10, 4, 1),
5785 + PINS_FIELD_BASE(175, 176, 4, 0x010, 0x10, 3, 1),
5786 + PINS_FIELD_BASE(177, 179, 6, 0x010, 0x10, 4, 1),
5789 +static const struct mtk_pin_field_calc mt8183_pin_pullen_range[] = {
5790 + PIN_FIELD_BASE(0, 3, 6, 0x060, 0x10, 6, 1),
5791 + PIN_FIELD_BASE(4, 7, 6, 0x060, 0x10, 11, 1),
5792 + PIN_FIELD_BASE(8, 8, 6, 0x060, 0x10, 0, 1),
5793 + PIN_FIELD_BASE(9, 10, 6, 0x060, 0x10, 26, 1),
5794 + PIN_FIELD_BASE(11, 11, 1, 0x060, 0x10, 10, 1),
5795 + PIN_FIELD_BASE(12, 12, 1, 0x060, 0x10, 17, 1),
5796 + PIN_FIELD_BASE(13, 28, 2, 0x060, 0x10, 6, 1),
5797 + PIN_FIELD_BASE(43, 49, 3, 0x060, 0x10, 8, 1),
5798 + PIN_FIELD_BASE(50, 60, 4, 0x060, 0x10, 0, 1),
5799 + PIN_FIELD_BASE(61, 88, 5, 0x060, 0x10, 0, 1),
5800 + PIN_FIELD_BASE(89, 89, 6, 0x060, 0x10, 24, 1),
5801 + PIN_FIELD_BASE(90, 90, 6, 0x060, 0x10, 1, 1),
5802 + PIN_FIELD_BASE(95, 95, 6, 0x060, 0x10, 15, 1),
5803 + PIN_FIELD_BASE(96, 102, 6, 0x060, 0x10, 17, 1),
5804 + PIN_FIELD_BASE(103, 106, 6, 0x060, 0x10, 28, 1),
5805 + PIN_FIELD_BASE(107, 121, 7, 0x060, 0x10, 0, 1),
5806 + PIN_FIELD_BASE(134, 143, 1, 0x060, 0x10, 0, 1),
5807 + PIN_FIELD_BASE(144, 149, 1, 0x060, 0x10, 11, 1),
5808 + PIN_FIELD_BASE(150, 160, 1, 0x060, 0x10, 18, 1),
5809 + PIN_FIELD_BASE(161, 166, 2, 0x060, 0x10, 0, 1),
5810 + PIN_FIELD_BASE(167, 176, 4, 0x060, 0x10, 11, 1),
5811 + PIN_FIELD_BASE(177, 177, 6, 0x060, 0x10, 10, 1),
5812 + PIN_FIELD_BASE(178, 178, 6, 0x060, 0x10, 16, 1),
5813 + PIN_FIELD_BASE(179, 179, 6, 0x060, 0x10, 25, 1),
5816 +static const struct mtk_pin_field_calc mt8183_pin_pullsel_range[] = {
5817 + PIN_FIELD_BASE(0, 3, 6, 0x080, 0x10, 6, 1),
5818 + PIN_FIELD_BASE(4, 7, 6, 0x080, 0x10, 11, 1),
5819 + PIN_FIELD_BASE(8, 8, 6, 0x080, 0x10, 0, 1),
5820 + PIN_FIELD_BASE(9, 10, 6, 0x080, 0x10, 26, 1),
5821 + PIN_FIELD_BASE(11, 11, 1, 0x080, 0x10, 10, 1),
5822 + PIN_FIELD_BASE(12, 12, 1, 0x080, 0x10, 17, 1),
5823 + PIN_FIELD_BASE(13, 28, 2, 0x080, 0x10, 6, 1),
5824 + PIN_FIELD_BASE(43, 49, 3, 0x080, 0x10, 8, 1),
5825 + PIN_FIELD_BASE(50, 60, 4, 0x080, 0x10, 0, 1),
5826 + PIN_FIELD_BASE(61, 88, 5, 0x080, 0x10, 0, 1),
5827 + PIN_FIELD_BASE(89, 89, 6, 0x080, 0x10, 24, 1),
5828 + PIN_FIELD_BASE(90, 90, 6, 0x080, 0x10, 1, 1),
5829 + PIN_FIELD_BASE(95, 95, 6, 0x080, 0x10, 15, 1),
5830 + PIN_FIELD_BASE(96, 102, 6, 0x080, 0x10, 17, 1),
5831 + PIN_FIELD_BASE(103, 106, 6, 0x080, 0x10, 28, 1),
5832 + PIN_FIELD_BASE(107, 121, 7, 0x080, 0x10, 0, 1),
5833 + PIN_FIELD_BASE(134, 143, 1, 0x080, 0x10, 0, 1),
5834 + PIN_FIELD_BASE(144, 149, 1, 0x080, 0x10, 11, 1),
5835 + PIN_FIELD_BASE(150, 160, 1, 0x080, 0x10, 18, 1),
5836 + PIN_FIELD_BASE(161, 166, 2, 0x080, 0x10, 0, 1),
5837 + PIN_FIELD_BASE(167, 176, 4, 0x080, 0x10, 11, 1),
5838 + PIN_FIELD_BASE(177, 177, 6, 0x080, 0x10, 10, 1),
5839 + PIN_FIELD_BASE(178, 178, 6, 0x080, 0x10, 16, 1),
5840 + PIN_FIELD_BASE(179, 179, 6, 0x080, 0x10, 25, 1),
5843 +static const struct mtk_pin_field_calc mt8183_pin_drv_range[] = {
5844 + PINS_FIELD_BASE(0, 3, 6, 0x0A0, 0x10, 12, 3),
5845 + PINS_FIELD_BASE(4, 7, 6, 0x0A0, 0x10, 20, 3),
5846 + PIN_FIELD_BASE(8, 8, 6, 0x0A0, 0x10, 0, 3),
5847 + PINS_FIELD_BASE(9, 10, 6, 0x0B0, 0x10, 16, 3),
5848 + PIN_FIELD_BASE(11, 11, 1, 0x0A0, 0x10, 12, 3),
5849 + PIN_FIELD_BASE(12, 12, 1, 0x0A0, 0x10, 28, 3),
5850 + PINS_FIELD_BASE(13, 16, 2, 0x0A0, 0x10, 8, 3),
5851 + PINS_FIELD_BASE(17, 20, 2, 0x0A0, 0x10, 12, 3),
5852 + PINS_FIELD_BASE(21, 24, 2, 0x0A0, 0x10, 16, 3),
5853 + PINS_FIELD_BASE(25, 28, 2, 0x0A0, 0x10, 20, 3),
5854 + PIN_FIELD_BASE(29, 29, 2, 0x0A0, 0x10, 24, 3),
5855 + PIN_FIELD_BASE(30, 30, 2, 0x0A0, 0x10, 28, 3),
5856 + PINS_FIELD_BASE(31, 31, 2, 0x0B0, 0x10, 0, 3),
5857 + PINS_FIELD_BASE(32, 34, 2, 0x0A0, 0x10, 28, 3),
5858 + PINS_FIELD_BASE(35, 37, 3, 0x0A0, 0x10, 0, 3),
5859 + PINS_FIELD_BASE(38, 40, 3, 0x0A0, 0x10, 4, 3),
5860 + PINS_FIELD_BASE(41, 42, 3, 0x0A0, 0x10, 8, 3),
5861 + PINS_FIELD_BASE(43, 45, 3, 0x0A0, 0x10, 12, 3),
5862 + PINS_FIELD_BASE(46, 47, 3, 0x0A0, 0x10, 16, 3),
5863 + PINS_FIELD_BASE(48, 49, 3, 0x0A0, 0x10, 20, 3),
5864 + PINS_FIELD_BASE(50, 51, 4, 0x0A0, 0x10, 0, 3),
5865 + PINS_FIELD_BASE(52, 57, 4, 0x0A0, 0x10, 4, 3),
5866 + PINS_FIELD_BASE(58, 60, 4, 0x0A0, 0x10, 8, 3),
5867 + PINS_FIELD_BASE(61, 64, 5, 0x0A0, 0x10, 0, 3),
5868 + PINS_FIELD_BASE(65, 66, 5, 0x0A0, 0x10, 4, 3),
5869 + PINS_FIELD_BASE(67, 68, 5, 0x0A0, 0x10, 8, 3),
5870 + PINS_FIELD_BASE(69, 71, 5, 0x0A0, 0x10, 12, 3),
5871 + PINS_FIELD_BASE(72, 76, 5, 0x0A0, 0x10, 16, 3),
5872 + PINS_FIELD_BASE(77, 80, 5, 0x0A0, 0x10, 20, 3),
5873 + PIN_FIELD_BASE(81, 81, 5, 0x0A0, 0x10, 24, 3),
5874 + PINS_FIELD_BASE(82, 83, 5, 0x0A0, 0x10, 28, 3),
5875 + PIN_FIELD_BASE(84, 84, 5, 0x0A0, 0x10, 24, 3),
5876 + PINS_FIELD_BASE(85, 88, 5, 0x0B0, 0x10, 0, 3),
5877 + PIN_FIELD_BASE(89, 89, 6, 0x0B0, 0x10, 12, 3),
5878 + PIN_FIELD_BASE(90, 90, 6, 0x0A0, 0x10, 4, 3),
5879 + PINS_FIELD_BASE(91, 94, 6, 0x0A0, 0x10, 8, 3),
5880 + PINS_FIELD_BASE(95, 96, 6, 0x0A0, 0x10, 24, 3),
5881 + PINS_FIELD_BASE(97, 98, 6, 0x0A0, 0x10, 28, 3),
5882 + PIN_FIELD_BASE(99, 99, 6, 0x0B0, 0x10, 0, 3),
5883 + PIN_FIELD_BASE(100, 100, 6, 0x0B0, 0x10, 4, 3),
5884 + PINS_FIELD_BASE(101, 102, 6, 0x0B0, 0x10, 8, 3),
5885 + PINS_FIELD_BASE(103, 104, 6, 0x0B0, 0x10, 20, 3),
5886 + PINS_FIELD_BASE(105, 106, 6, 0x0B0, 0x10, 24, 3),
5887 + PIN_FIELD_BASE(107, 107, 7, 0x0A0, 0x10, 0, 3),
5888 + PIN_FIELD_BASE(108, 108, 7, 0x0A0, 0x10, 4, 3),
5889 + PIN_FIELD_BASE(109, 109, 7, 0x0A0, 0x10, 8, 3),
5890 + PIN_FIELD_BASE(110, 110, 7, 0x0A0, 0x10, 0, 3),
5891 + PIN_FIELD_BASE(111, 111, 7, 0x0A0, 0x10, 4, 3),
5892 + PIN_FIELD_BASE(112, 112, 7, 0x0A0, 0x10, 8, 3),
5893 + PIN_FIELD_BASE(113, 113, 7, 0x0A0, 0x10, 16, 3),
5894 + PIN_FIELD_BASE(114, 114, 7, 0x0A0, 0x10, 20, 3),
5895 + PIN_FIELD_BASE(115, 115, 7, 0x0A0, 0x10, 24, 3),
5896 + PIN_FIELD_BASE(116, 116, 7, 0x0A0, 0x10, 28, 3),
5897 + PIN_FIELD_BASE(117, 117, 7, 0x0B0, 0x10, 0, 3),
5898 + PIN_FIELD_BASE(118, 118, 7, 0x0B0, 0x10, 4, 3),
5899 + PIN_FIELD_BASE(119, 119, 7, 0x0B0, 0x10, 8, 3),
5900 + PIN_FIELD_BASE(120, 120, 7, 0x0B0, 0x10, 12, 3),
5901 + PIN_FIELD_BASE(121, 121, 7, 0x0B0, 0x10, 16, 3),
5902 + PIN_FIELD_BASE(122, 122, 8, 0x0A0, 0x10, 0, 3),
5903 + PIN_FIELD_BASE(123, 123, 8, 0x0A0, 0x10, 4, 3),
5904 + PIN_FIELD_BASE(124, 124, 8, 0x0A0, 0x10, 8, 3),
5905 + PINS_FIELD_BASE(125, 130, 8, 0x0A0, 0x10, 4, 3),
5906 + PIN_FIELD_BASE(131, 131, 8, 0x0A0, 0x10, 12, 3),
5907 + PIN_FIELD_BASE(132, 132, 8, 0x0A0, 0x10, 4, 3),
5908 + PIN_FIELD_BASE(133, 133, 8, 0x0A0, 0x10, 16, 3),
5909 + PIN_FIELD_BASE(134, 134, 1, 0x0A0, 0x10, 0, 3),
5910 + PIN_FIELD_BASE(135, 135, 1, 0x0A0, 0x10, 4, 3),
5911 + PINS_FIELD_BASE(136, 143, 1, 0x0A0, 0x10, 8, 3),
5912 + PINS_FIELD_BASE(144, 147, 1, 0x0A0, 0x10, 16, 3),
5913 + PIN_FIELD_BASE(148, 148, 1, 0x0A0, 0x10, 20, 3),
5914 + PIN_FIELD_BASE(149, 149, 1, 0x0A0, 0x10, 24, 3),
5915 + PINS_FIELD_BASE(150, 153, 1, 0x0B0, 0x10, 0, 3),
5916 + PIN_FIELD_BASE(154, 154, 1, 0x0B0, 0x10, 4, 3),
5917 + PINS_FIELD_BASE(155, 157, 1, 0x0B0, 0x10, 8, 3),
5918 + PINS_FIELD_BASE(158, 160, 1, 0x0B0, 0x10, 0, 3),
5919 + PINS_FIELD_BASE(161, 164, 2, 0x0A0, 0x10, 0, 3),
5920 + PINS_FIELD_BASE(165, 166, 2, 0x0A0, 0x10, 4, 3),
5921 + PINS_FIELD_BASE(167, 168, 4, 0x0A0, 0x10, 8, 3),
5922 + PIN_FIELD_BASE(169, 169, 4, 0x0A0, 0x10, 12, 3),
5923 + PINS_FIELD_BASE(170, 174, 4, 0x0A0, 0x10, 16, 3),
5924 + PINS_FIELD_BASE(175, 176, 4, 0x0A0, 0x10, 12, 3),
5925 + PINS_FIELD_BASE(177, 179, 6, 0x0A0, 0x10, 16, 3),
5928 +static const struct mtk_pin_field_calc mt8183_pin_pupd_range[] = {
5929 + PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 2, 1),
5930 + PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 6, 1),
5931 + PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 10, 1),
5932 + PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 14, 1),
5933 + PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 18, 1),
5934 + PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 22, 1),
5935 + PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 2, 1),
5936 + PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 6, 1),
5937 + PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 10, 1),
5938 + PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 14, 1),
5939 + PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 18, 1),
5940 + PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 22, 1),
5941 + PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 26, 1),
5942 + PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 30, 1),
5943 + PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 2, 1),
5944 + PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 6, 1),
5945 + PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 10, 1),
5946 + PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 14, 1),
5947 + PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 2, 1),
5948 + PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 6, 1),
5949 + PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 10, 1),
5950 + PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 14, 1),
5951 + PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 18, 1),
5952 + PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 22, 1),
5953 + PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 26, 1),
5954 + PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 30, 1),
5955 + PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 2, 1),
5956 + PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 6, 1),
5957 + PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 10, 1),
5958 + PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 14, 1),
5961 +static const struct mtk_pin_field_calc mt8183_pin_r0_range[] = {
5962 + PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 0, 1),
5963 + PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 4, 1),
5964 + PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 8, 1),
5965 + PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 12, 1),
5966 + PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 16, 1),
5967 + PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 20, 1),
5968 + PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 0, 1),
5969 + PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 4, 1),
5970 + PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 8, 1),
5971 + PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 12, 1),
5972 + PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 16, 1),
5973 + PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 20, 1),
5974 + PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 24, 1),
5975 + PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 28, 1),
5976 + PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 18, 1),
5977 + PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 13, 1),
5978 + PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 10, 1),
5979 + PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 5, 1),
5980 + PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 7, 1),
5981 + PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 5, 1),
5982 + PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 15, 1),
5983 + PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 17, 1),
5984 + PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 0, 1),
5985 + PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 4, 1),
5986 + PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 8, 1),
5987 + PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 12, 1),
5988 + PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 20, 1),
5989 + PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 10, 1),
5990 + PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 22, 1),
5991 + PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 12, 1),
5992 + PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 0, 1),
5993 + PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 4, 1),
5994 + PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 8, 1),
5995 + PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 12, 1),
5996 + PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 16, 1),
5997 + PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 20, 1),
5998 + PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 24, 1),
5999 + PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 28, 1),
6000 + PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 0, 1),
6001 + PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 4, 1),
6002 + PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 8, 1),
6003 + PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 12, 1),
6006 +static const struct mtk_pin_field_calc mt8183_pin_r1_range[] = {
6007 + PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 1, 1),
6008 + PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 5, 1),
6009 + PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 9, 1),
6010 + PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 13, 1),
6011 + PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 17, 1),
6012 + PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 21, 1),
6013 + PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 1, 1),
6014 + PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 5, 1),
6015 + PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 9, 1),
6016 + PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 13, 1),
6017 + PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 17, 1),
6018 + PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 21, 1),
6019 + PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 25, 1),
6020 + PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 29, 1),
6021 + PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 19, 1),
6022 + PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 14, 1),
6023 + PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 11, 1),
6024 + PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 6, 1),
6025 + PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 8, 1),
6026 + PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 6, 1),
6027 + PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 16, 1),
6028 + PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 18, 1),
6029 + PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 1, 1),
6030 + PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 5, 1),
6031 + PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 9, 1),
6032 + PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 13, 1),
6033 + PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 21, 1),
6034 + PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 11, 1),
6035 + PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 23, 1),
6036 + PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 13, 1),
6037 + PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 1, 1),
6038 + PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 5, 1),
6039 + PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 9, 1),
6040 + PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 13, 1),
6041 + PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 17, 1),
6042 + PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 21, 1),
6043 + PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 25, 1),
6044 + PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 29, 1),
6045 + PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 1, 1),
6046 + PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 5, 1),
6047 + PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 9, 1),
6048 + PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 13, 1),
6051 +static const struct mtk_pin_field_calc mt8183_pin_e1e0en_range[] = {
6052 + PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 20, 1),
6053 + PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 15, 1),
6054 + PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 12, 1),
6055 + PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 7, 1),
6056 + PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 12, 1),
6057 + PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 9, 1),
6058 + PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 19, 1),
6059 + PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 22, 1),
6060 + PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 24, 1),
6061 + PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 14, 1),
6062 + PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 27, 1),
6063 + PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 17, 1),
6066 +static const struct mtk_pin_field_calc mt8183_pin_e0_range[] = {
6067 + PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 21, 1),
6068 + PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 16, 1),
6069 + PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 13, 1),
6070 + PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 8, 1),
6071 + PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 13, 1),
6072 + PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 10, 1),
6073 + PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 20, 1),
6074 + PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 23, 1),
6075 + PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 25, 1),
6076 + PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 15, 1),
6077 + PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 28, 1),
6078 + PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 18, 1),
6081 +static const struct mtk_pin_field_calc mt8183_pin_e1_range[] = {
6082 + PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 22, 1),
6083 + PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 17, 1),
6084 + PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 14, 1),
6085 + PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 9, 1),
6086 + PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 14, 1),
6087 + PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 11, 1),
6088 + PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 21, 1),
6089 + PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 24, 1),
6090 + PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 26, 1),
6091 + PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 16, 1),
6092 + PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 29, 1),
6093 + PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 19, 1),
6096 +static const struct mtk_pin_reg_calc mt8183_reg_cals[PINCTRL_PIN_REG_MAX] = {
6097 + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8183_pin_mode_range),
6098 + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8183_pin_dir_range),
6099 + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8183_pin_di_range),
6100 + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8183_pin_do_range),
6101 + [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8183_pin_smt_range),
6102 + [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8183_pin_ies_range),
6103 + [PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt8183_pin_pullen_range),
6104 + [PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt8183_pin_pullsel_range),
6105 + [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8183_pin_drv_range),
6106 + [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8183_pin_pupd_range),
6107 + [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8183_pin_r0_range),
6108 + [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8183_pin_r1_range),
6109 + [PINCTRL_PIN_REG_DRV_EN] = MTK_RANGE(mt8183_pin_e1e0en_range),
6110 + [PINCTRL_PIN_REG_DRV_E0] = MTK_RANGE(mt8183_pin_e0_range),
6111 + [PINCTRL_PIN_REG_DRV_E1] = MTK_RANGE(mt8183_pin_e1_range),
6114 +static const char * const mt8183_pinctrl_register_base_names[] = {
6115 + "iocfg0", "iocfg1", "iocfg2", "iocfg3", "iocfg4", "iocfg5",
6116 + "iocfg6", "iocfg7", "iocfg8",
6119 +static const struct mtk_eint_hw mt8183_eint_hw = {
6126 +static const struct mtk_pin_soc mt8183_data = {
6127 + .reg_cal = mt8183_reg_cals,
6128 + .pins = mtk_pins_mt8183,
6129 + .npins = ARRAY_SIZE(mtk_pins_mt8183),
6130 + .ngrps = ARRAY_SIZE(mtk_pins_mt8183),
6131 + .eint_hw = &mt8183_eint_hw,
6133 + .ies_present = true,
6134 + .base_names = mt8183_pinctrl_register_base_names,
6135 + .nbase_names = ARRAY_SIZE(mt8183_pinctrl_register_base_names),
6136 + .bias_disable_set = mtk_pinconf_bias_disable_set_rev1,
6137 + .bias_disable_get = mtk_pinconf_bias_disable_get_rev1,
6138 + .bias_set = mtk_pinconf_bias_set_rev1,
6139 + .bias_get = mtk_pinconf_bias_get_rev1,
6140 + .drive_set = mtk_pinconf_drive_set_rev1,
6141 + .drive_get = mtk_pinconf_drive_get_rev1,
6142 + .adv_pull_get = mtk_pinconf_adv_pull_get,
6143 + .adv_pull_set = mtk_pinconf_adv_pull_set,
6144 + .adv_drive_get = mtk_pinconf_adv_drive_get,
6145 + .adv_drive_set = mtk_pinconf_adv_drive_set,
6148 +static const struct of_device_id mt8183_pinctrl_of_match[] = {
6149 + { .compatible = "mediatek,mt8183-pinctrl", },
6153 +static int mt8183_pinctrl_probe(struct platform_device *pdev)
6155 + return mtk_paris_pinctrl_probe(pdev, &mt8183_data);
6158 +static struct platform_driver mt8183_pinctrl_driver = {
6160 + .name = "mt8183-pinctrl",
6161 + .of_match_table = mt8183_pinctrl_of_match,
6162 + .pm = &mtk_paris_pinctrl_pm_ops,
6164 + .probe = mt8183_pinctrl_probe,
6167 +static int __init mt8183_pinctrl_init(void)
6169 + return platform_driver_register(&mt8183_pinctrl_driver);
6171 +arch_initcall(mt8183_pinctrl_init);
6172 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8516.c b/drivers/pinctrl/mediatek/pinctrl-mt8516.c
6173 new file mode 100644
6174 index 000000000000..b375426aa61e
6176 +++ b/drivers/pinctrl/mediatek/pinctrl-mt8516.c
6178 +// SPDX-License-Identifier: GPL-2.0
6180 + * Copyright (c) 2019 MediaTek Inc.
6181 + * Author: Min.Guo <min.guo@mediatek.com>
6184 +#include <dt-bindings/pinctrl/mt65xx.h>
6185 +#include <linux/of.h>
6186 +#include <linux/of_device.h>
6187 +#include <linux/module.h>
6188 +#include <linux/pinctrl/pinctrl.h>
6189 +#include <linux/platform_device.h>
6190 +#include <linux/regmap.h>
6192 +#include "pinctrl-mtk-common.h"
6193 +#include "pinctrl-mtk-mt8516.h"
6195 +static const struct mtk_drv_group_desc mt8516_drv_grp[] = {
6196 + /* 0E4E8SR 4/8/12/16 */
6197 + MTK_DRV_GRP(4, 16, 1, 2, 4),
6198 + /* 0E2E4SR 2/4/6/8 */
6199 + MTK_DRV_GRP(2, 8, 1, 2, 2),
6200 + /* E8E4E2 2/4/6/8/10/12/14/16 */
6201 + MTK_DRV_GRP(2, 16, 0, 2, 2)
6204 +static const struct mtk_pin_drv_grp mt8516_pin_drv[] = {
6205 + MTK_PIN_DRV_GRP(0, 0xd00, 0, 0),
6206 + MTK_PIN_DRV_GRP(1, 0xd00, 0, 0),
6207 + MTK_PIN_DRV_GRP(2, 0xd00, 0, 0),
6208 + MTK_PIN_DRV_GRP(3, 0xd00, 0, 0),
6209 + MTK_PIN_DRV_GRP(4, 0xd00, 0, 0),
6211 + MTK_PIN_DRV_GRP(5, 0xd00, 4, 0),
6212 + MTK_PIN_DRV_GRP(6, 0xd00, 4, 0),
6213 + MTK_PIN_DRV_GRP(7, 0xd00, 4, 0),
6214 + MTK_PIN_DRV_GRP(8, 0xd00, 4, 0),
6215 + MTK_PIN_DRV_GRP(9, 0xd00, 4, 0),
6216 + MTK_PIN_DRV_GRP(10, 0xd00, 4, 0),
6218 + MTK_PIN_DRV_GRP(11, 0xd00, 8, 0),
6219 + MTK_PIN_DRV_GRP(12, 0xd00, 8, 0),
6220 + MTK_PIN_DRV_GRP(13, 0xd00, 8, 0),
6222 + MTK_PIN_DRV_GRP(14, 0xd00, 12, 2),
6223 + MTK_PIN_DRV_GRP(15, 0xd00, 12, 2),
6224 + MTK_PIN_DRV_GRP(16, 0xd00, 12, 2),
6225 + MTK_PIN_DRV_GRP(17, 0xd00, 12, 2),
6227 + MTK_PIN_DRV_GRP(18, 0xd10, 0, 0),
6228 + MTK_PIN_DRV_GRP(19, 0xd10, 0, 0),
6229 + MTK_PIN_DRV_GRP(20, 0xd10, 0, 0),
6231 + MTK_PIN_DRV_GRP(21, 0xd00, 12, 2),
6232 + MTK_PIN_DRV_GRP(22, 0xd00, 12, 2),
6233 + MTK_PIN_DRV_GRP(23, 0xd00, 12, 2),
6235 + MTK_PIN_DRV_GRP(24, 0xd00, 8, 0),
6236 + MTK_PIN_DRV_GRP(25, 0xd00, 8, 0),
6238 + MTK_PIN_DRV_GRP(26, 0xd10, 4, 1),
6239 + MTK_PIN_DRV_GRP(27, 0xd10, 4, 1),
6240 + MTK_PIN_DRV_GRP(28, 0xd10, 4, 1),
6241 + MTK_PIN_DRV_GRP(29, 0xd10, 4, 1),
6242 + MTK_PIN_DRV_GRP(30, 0xd10, 4, 1),
6244 + MTK_PIN_DRV_GRP(31, 0xd10, 8, 1),
6245 + MTK_PIN_DRV_GRP(32, 0xd10, 8, 1),
6246 + MTK_PIN_DRV_GRP(33, 0xd10, 8, 1),
6248 + MTK_PIN_DRV_GRP(34, 0xd10, 12, 0),
6249 + MTK_PIN_DRV_GRP(35, 0xd10, 12, 0),
6251 + MTK_PIN_DRV_GRP(36, 0xd20, 0, 0),
6252 + MTK_PIN_DRV_GRP(37, 0xd20, 0, 0),
6253 + MTK_PIN_DRV_GRP(38, 0xd20, 0, 0),
6254 + MTK_PIN_DRV_GRP(39, 0xd20, 0, 0),
6256 + MTK_PIN_DRV_GRP(40, 0xd20, 4, 1),
6258 + MTK_PIN_DRV_GRP(41, 0xd20, 8, 1),
6259 + MTK_PIN_DRV_GRP(42, 0xd20, 8, 1),
6260 + MTK_PIN_DRV_GRP(43, 0xd20, 8, 1),
6262 + MTK_PIN_DRV_GRP(44, 0xd20, 12, 1),
6263 + MTK_PIN_DRV_GRP(45, 0xd20, 12, 1),
6264 + MTK_PIN_DRV_GRP(46, 0xd20, 12, 1),
6265 + MTK_PIN_DRV_GRP(47, 0xd20, 12, 1),
6267 + MTK_PIN_DRV_GRP(48, 0xd30, 0, 1),
6268 + MTK_PIN_DRV_GRP(49, 0xd30, 0, 1),
6269 + MTK_PIN_DRV_GRP(50, 0xd30, 0, 1),
6270 + MTK_PIN_DRV_GRP(51, 0xd30, 0, 1),
6272 + MTK_PIN_DRV_GRP(54, 0xd30, 8, 1),
6274 + MTK_PIN_DRV_GRP(55, 0xd30, 12, 1),
6275 + MTK_PIN_DRV_GRP(56, 0xd30, 12, 1),
6276 + MTK_PIN_DRV_GRP(57, 0xd30, 12, 1),
6278 + MTK_PIN_DRV_GRP(62, 0xd40, 8, 1),
6279 + MTK_PIN_DRV_GRP(63, 0xd40, 8, 1),
6280 + MTK_PIN_DRV_GRP(64, 0xd40, 8, 1),
6281 + MTK_PIN_DRV_GRP(65, 0xd40, 8, 1),
6282 + MTK_PIN_DRV_GRP(66, 0xd40, 8, 1),
6283 + MTK_PIN_DRV_GRP(67, 0xd40, 8, 1),
6285 + MTK_PIN_DRV_GRP(68, 0xd40, 12, 2),
6287 + MTK_PIN_DRV_GRP(69, 0xd50, 0, 2),
6289 + MTK_PIN_DRV_GRP(70, 0xd50, 4, 2),
6290 + MTK_PIN_DRV_GRP(71, 0xd50, 4, 2),
6291 + MTK_PIN_DRV_GRP(72, 0xd50, 4, 2),
6292 + MTK_PIN_DRV_GRP(73, 0xd50, 4, 2),
6294 + MTK_PIN_DRV_GRP(100, 0xd50, 8, 1),
6295 + MTK_PIN_DRV_GRP(101, 0xd50, 8, 1),
6296 + MTK_PIN_DRV_GRP(102, 0xd50, 8, 1),
6297 + MTK_PIN_DRV_GRP(103, 0xd50, 8, 1),
6299 + MTK_PIN_DRV_GRP(104, 0xd50, 12, 2),
6301 + MTK_PIN_DRV_GRP(105, 0xd60, 0, 2),
6303 + MTK_PIN_DRV_GRP(106, 0xd60, 4, 2),
6304 + MTK_PIN_DRV_GRP(107, 0xd60, 4, 2),
6305 + MTK_PIN_DRV_GRP(108, 0xd60, 4, 2),
6306 + MTK_PIN_DRV_GRP(109, 0xd60, 4, 2),
6308 + MTK_PIN_DRV_GRP(110, 0xd70, 0, 2),
6309 + MTK_PIN_DRV_GRP(111, 0xd70, 0, 2),
6310 + MTK_PIN_DRV_GRP(112, 0xd70, 0, 2),
6311 + MTK_PIN_DRV_GRP(113, 0xd70, 0, 2),
6313 + MTK_PIN_DRV_GRP(114, 0xd70, 4, 2),
6315 + MTK_PIN_DRV_GRP(115, 0xd60, 12, 2),
6317 + MTK_PIN_DRV_GRP(116, 0xd60, 8, 2),
6319 + MTK_PIN_DRV_GRP(117, 0xd70, 0, 2),
6320 + MTK_PIN_DRV_GRP(118, 0xd70, 0, 2),
6321 + MTK_PIN_DRV_GRP(119, 0xd70, 0, 2),
6322 + MTK_PIN_DRV_GRP(120, 0xd70, 0, 2),
6325 +static const struct mtk_pin_spec_pupd_set_samereg mt8516_spec_pupd[] = {
6326 + MTK_PIN_PUPD_SPEC_SR(14, 0xe50, 14, 13, 12),
6327 + MTK_PIN_PUPD_SPEC_SR(15, 0xe60, 2, 1, 0),
6328 + MTK_PIN_PUPD_SPEC_SR(16, 0xe60, 6, 5, 4),
6329 + MTK_PIN_PUPD_SPEC_SR(17, 0xe60, 10, 9, 8),
6331 + MTK_PIN_PUPD_SPEC_SR(21, 0xe60, 14, 13, 12),
6332 + MTK_PIN_PUPD_SPEC_SR(22, 0xe70, 2, 1, 0),
6333 + MTK_PIN_PUPD_SPEC_SR(23, 0xe70, 6, 5, 4),
6335 + MTK_PIN_PUPD_SPEC_SR(40, 0xe80, 2, 1, 0),
6336 + MTK_PIN_PUPD_SPEC_SR(41, 0xe80, 6, 5, 4),
6337 + MTK_PIN_PUPD_SPEC_SR(42, 0xe90, 2, 1, 0),
6338 + MTK_PIN_PUPD_SPEC_SR(43, 0xe90, 6, 5, 4),
6340 + MTK_PIN_PUPD_SPEC_SR(68, 0xe50, 10, 9, 8),
6341 + MTK_PIN_PUPD_SPEC_SR(69, 0xe50, 6, 5, 4),
6342 + MTK_PIN_PUPD_SPEC_SR(70, 0xe40, 6, 5, 4),
6343 + MTK_PIN_PUPD_SPEC_SR(71, 0xe40, 10, 9, 8),
6344 + MTK_PIN_PUPD_SPEC_SR(72, 0xe40, 14, 13, 12),
6345 + MTK_PIN_PUPD_SPEC_SR(73, 0xe50, 2, 1, 0),
6347 + MTK_PIN_PUPD_SPEC_SR(104, 0xe40, 2, 1, 0),
6348 + MTK_PIN_PUPD_SPEC_SR(105, 0xe30, 14, 13, 12),
6349 + MTK_PIN_PUPD_SPEC_SR(106, 0xe20, 14, 13, 12),
6350 + MTK_PIN_PUPD_SPEC_SR(107, 0xe30, 2, 1, 0),
6351 + MTK_PIN_PUPD_SPEC_SR(108, 0xe30, 6, 5, 4),
6352 + MTK_PIN_PUPD_SPEC_SR(109, 0xe30, 10, 9, 8),
6353 + MTK_PIN_PUPD_SPEC_SR(110, 0xe10, 14, 13, 12),
6354 + MTK_PIN_PUPD_SPEC_SR(111, 0xe10, 10, 9, 8),
6355 + MTK_PIN_PUPD_SPEC_SR(112, 0xe10, 6, 5, 4),
6356 + MTK_PIN_PUPD_SPEC_SR(113, 0xe10, 2, 1, 0),
6357 + MTK_PIN_PUPD_SPEC_SR(114, 0xe20, 10, 9, 8),
6358 + MTK_PIN_PUPD_SPEC_SR(115, 0xe20, 2, 1, 0),
6359 + MTK_PIN_PUPD_SPEC_SR(116, 0xe20, 6, 5, 4),
6360 + MTK_PIN_PUPD_SPEC_SR(117, 0xe00, 14, 13, 12),
6361 + MTK_PIN_PUPD_SPEC_SR(118, 0xe00, 10, 9, 8),
6362 + MTK_PIN_PUPD_SPEC_SR(119, 0xe00, 6, 5, 4),
6363 + MTK_PIN_PUPD_SPEC_SR(120, 0xe00, 2, 1, 0),
6366 +static int mt8516_spec_pull_set(struct regmap *regmap, unsigned int pin,
6367 + unsigned char align, bool isup, unsigned int r1r0)
6369 + return mtk_pctrl_spec_pull_set_samereg(regmap, mt8516_spec_pupd,
6370 + ARRAY_SIZE(mt8516_spec_pupd), pin, align, isup, r1r0);
6373 +static const struct mtk_pin_ies_smt_set mt8516_ies_set[] = {
6374 + MTK_PIN_IES_SMT_SPEC(0, 6, 0x900, 2),
6375 + MTK_PIN_IES_SMT_SPEC(7, 10, 0x900, 3),
6376 + MTK_PIN_IES_SMT_SPEC(11, 13, 0x900, 12),
6377 + MTK_PIN_IES_SMT_SPEC(14, 17, 0x900, 13),
6378 + MTK_PIN_IES_SMT_SPEC(18, 20, 0x910, 10),
6379 + MTK_PIN_IES_SMT_SPEC(21, 23, 0x900, 13),
6380 + MTK_PIN_IES_SMT_SPEC(24, 25, 0x900, 12),
6381 + MTK_PIN_IES_SMT_SPEC(26, 30, 0x900, 0),
6382 + MTK_PIN_IES_SMT_SPEC(31, 33, 0x900, 1),
6383 + MTK_PIN_IES_SMT_SPEC(34, 39, 0x900, 2),
6384 + MTK_PIN_IES_SMT_SPEC(40, 40, 0x910, 11),
6385 + MTK_PIN_IES_SMT_SPEC(41, 43, 0x900, 10),
6386 + MTK_PIN_IES_SMT_SPEC(44, 47, 0x900, 11),
6387 + MTK_PIN_IES_SMT_SPEC(48, 51, 0x900, 14),
6388 + MTK_PIN_IES_SMT_SPEC(52, 53, 0x910, 0),
6389 + MTK_PIN_IES_SMT_SPEC(54, 54, 0x910, 2),
6390 + MTK_PIN_IES_SMT_SPEC(55, 57, 0x910, 4),
6391 + MTK_PIN_IES_SMT_SPEC(58, 59, 0x900, 15),
6392 + MTK_PIN_IES_SMT_SPEC(60, 61, 0x910, 1),
6393 + MTK_PIN_IES_SMT_SPEC(62, 65, 0x910, 5),
6394 + MTK_PIN_IES_SMT_SPEC(66, 67, 0x910, 6),
6395 + MTK_PIN_IES_SMT_SPEC(68, 68, 0x930, 2),
6396 + MTK_PIN_IES_SMT_SPEC(69, 69, 0x930, 1),
6397 + MTK_PIN_IES_SMT_SPEC(70, 70, 0x930, 6),
6398 + MTK_PIN_IES_SMT_SPEC(71, 71, 0x930, 5),
6399 + MTK_PIN_IES_SMT_SPEC(72, 72, 0x930, 4),
6400 + MTK_PIN_IES_SMT_SPEC(73, 73, 0x930, 3),
6401 + MTK_PIN_IES_SMT_SPEC(100, 103, 0x910, 7),
6402 + MTK_PIN_IES_SMT_SPEC(104, 104, 0x920, 12),
6403 + MTK_PIN_IES_SMT_SPEC(105, 105, 0x920, 11),
6404 + MTK_PIN_IES_SMT_SPEC(106, 106, 0x930, 0),
6405 + MTK_PIN_IES_SMT_SPEC(107, 107, 0x920, 15),
6406 + MTK_PIN_IES_SMT_SPEC(108, 108, 0x920, 14),
6407 + MTK_PIN_IES_SMT_SPEC(109, 109, 0x920, 13),
6408 + MTK_PIN_IES_SMT_SPEC(110, 110, 0x920, 9),
6409 + MTK_PIN_IES_SMT_SPEC(111, 111, 0x920, 8),
6410 + MTK_PIN_IES_SMT_SPEC(112, 112, 0x920, 7),
6411 + MTK_PIN_IES_SMT_SPEC(113, 113, 0x920, 6),
6412 + MTK_PIN_IES_SMT_SPEC(114, 114, 0x920, 10),
6413 + MTK_PIN_IES_SMT_SPEC(115, 115, 0x920, 1),
6414 + MTK_PIN_IES_SMT_SPEC(116, 116, 0x920, 0),
6415 + MTK_PIN_IES_SMT_SPEC(117, 117, 0x920, 5),
6416 + MTK_PIN_IES_SMT_SPEC(118, 118, 0x920, 4),
6417 + MTK_PIN_IES_SMT_SPEC(119, 119, 0x920, 3),
6418 + MTK_PIN_IES_SMT_SPEC(120, 120, 0x920, 2),
6419 + MTK_PIN_IES_SMT_SPEC(121, 124, 0x910, 9),
6422 +static const struct mtk_pin_ies_smt_set mt8516_smt_set[] = {
6423 + MTK_PIN_IES_SMT_SPEC(0, 6, 0xA00, 2),
6424 + MTK_PIN_IES_SMT_SPEC(7, 10, 0xA00, 3),
6425 + MTK_PIN_IES_SMT_SPEC(11, 13, 0xA00, 12),
6426 + MTK_PIN_IES_SMT_SPEC(14, 17, 0xA00, 13),
6427 + MTK_PIN_IES_SMT_SPEC(18, 20, 0xA10, 10),
6428 + MTK_PIN_IES_SMT_SPEC(21, 23, 0xA00, 13),
6429 + MTK_PIN_IES_SMT_SPEC(24, 25, 0xA00, 12),
6430 + MTK_PIN_IES_SMT_SPEC(26, 30, 0xA00, 0),
6431 + MTK_PIN_IES_SMT_SPEC(31, 33, 0xA00, 1),
6432 + MTK_PIN_IES_SMT_SPEC(34, 39, 0xA900, 2),
6433 + MTK_PIN_IES_SMT_SPEC(40, 40, 0xA10, 11),
6434 + MTK_PIN_IES_SMT_SPEC(41, 43, 0xA00, 10),
6435 + MTK_PIN_IES_SMT_SPEC(44, 47, 0xA00, 11),
6436 + MTK_PIN_IES_SMT_SPEC(48, 51, 0xA00, 14),
6437 + MTK_PIN_IES_SMT_SPEC(52, 53, 0xA10, 0),
6438 + MTK_PIN_IES_SMT_SPEC(54, 54, 0xA10, 2),
6439 + MTK_PIN_IES_SMT_SPEC(55, 57, 0xA10, 4),
6440 + MTK_PIN_IES_SMT_SPEC(58, 59, 0xA00, 15),
6441 + MTK_PIN_IES_SMT_SPEC(60, 61, 0xA10, 1),
6442 + MTK_PIN_IES_SMT_SPEC(62, 65, 0xA10, 5),
6443 + MTK_PIN_IES_SMT_SPEC(66, 67, 0xA10, 6),
6444 + MTK_PIN_IES_SMT_SPEC(68, 68, 0xA30, 2),
6445 + MTK_PIN_IES_SMT_SPEC(69, 69, 0xA30, 1),
6446 + MTK_PIN_IES_SMT_SPEC(70, 70, 0xA30, 3),
6447 + MTK_PIN_IES_SMT_SPEC(71, 71, 0xA30, 4),
6448 + MTK_PIN_IES_SMT_SPEC(72, 72, 0xA30, 5),
6449 + MTK_PIN_IES_SMT_SPEC(73, 73, 0xA30, 6),
6451 + MTK_PIN_IES_SMT_SPEC(100, 103, 0xA10, 7),
6452 + MTK_PIN_IES_SMT_SPEC(104, 104, 0xA20, 12),
6453 + MTK_PIN_IES_SMT_SPEC(105, 105, 0xA20, 11),
6454 + MTK_PIN_IES_SMT_SPEC(106, 106, 0xA30, 13),
6455 + MTK_PIN_IES_SMT_SPEC(107, 107, 0xA20, 14),
6456 + MTK_PIN_IES_SMT_SPEC(108, 108, 0xA20, 15),
6457 + MTK_PIN_IES_SMT_SPEC(109, 109, 0xA30, 0),
6458 + MTK_PIN_IES_SMT_SPEC(110, 110, 0xA20, 9),
6459 + MTK_PIN_IES_SMT_SPEC(111, 111, 0xA20, 8),
6460 + MTK_PIN_IES_SMT_SPEC(112, 112, 0xA20, 7),
6461 + MTK_PIN_IES_SMT_SPEC(113, 113, 0xA20, 6),
6462 + MTK_PIN_IES_SMT_SPEC(114, 114, 0xA20, 10),
6463 + MTK_PIN_IES_SMT_SPEC(115, 115, 0xA20, 1),
6464 + MTK_PIN_IES_SMT_SPEC(116, 116, 0xA20, 0),
6465 + MTK_PIN_IES_SMT_SPEC(117, 117, 0xA20, 5),
6466 + MTK_PIN_IES_SMT_SPEC(118, 118, 0xA20, 4),
6467 + MTK_PIN_IES_SMT_SPEC(119, 119, 0xA20, 3),
6468 + MTK_PIN_IES_SMT_SPEC(120, 120, 0xA20, 2),
6469 + MTK_PIN_IES_SMT_SPEC(121, 124, 0xA10, 9),
6472 +static int mt8516_ies_smt_set(struct regmap *regmap, unsigned int pin,
6473 + unsigned char align, int value, enum pin_config_param arg)
6475 + if (arg == PIN_CONFIG_INPUT_ENABLE)
6476 + return mtk_pconf_spec_set_ies_smt_range(regmap, mt8516_ies_set,
6477 + ARRAY_SIZE(mt8516_ies_set), pin, align, value);
6478 + else if (arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE)
6479 + return mtk_pconf_spec_set_ies_smt_range(regmap, mt8516_smt_set,
6480 + ARRAY_SIZE(mt8516_smt_set), pin, align, value);
6484 +static const struct mtk_pinctrl_devdata mt8516_pinctrl_data = {
6485 + .pins = mtk_pins_mt8516,
6486 + .npins = ARRAY_SIZE(mtk_pins_mt8516),
6487 + .grp_desc = mt8516_drv_grp,
6488 + .n_grp_cls = ARRAY_SIZE(mt8516_drv_grp),
6489 + .pin_drv_grp = mt8516_pin_drv,
6490 + .n_pin_drv_grps = ARRAY_SIZE(mt8516_pin_drv),
6491 + .spec_pull_set = mt8516_spec_pull_set,
6492 + .spec_ies_smt_set = mt8516_ies_smt_set,
6493 + .dir_offset = 0x0000,
6494 + .pullen_offset = 0x0500,
6495 + .pullsel_offset = 0x0600,
6496 + .dout_offset = 0x0100,
6497 + .din_offset = 0x0200,
6498 + .pinmux_offset = 0x0300,
6499 + .type1_start = 125,
6512 +static int mt8516_pinctrl_probe(struct platform_device *pdev)
6514 + return mtk_pctrl_init(pdev, &mt8516_pinctrl_data, NULL);
6517 +static const struct of_device_id mt8516_pctrl_match[] = {
6519 + .compatible = "mediatek,mt8516-pinctrl",
6524 +MODULE_DEVICE_TABLE(of, mt8516_pctrl_match);
6526 +static struct platform_driver mtk_pinctrl_driver = {
6527 + .probe = mt8516_pinctrl_probe,
6529 + .name = "mediatek-mt8516-pinctrl",
6530 + .of_match_table = mt8516_pctrl_match,
6531 + .pm = &mtk_eint_pm_ops,
6535 +static int __init mtk_pinctrl_init(void)
6537 + return platform_driver_register(&mtk_pinctrl_driver);
6539 +arch_initcall(mtk_pinctrl_init);
6540 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
6541 new file mode 100644
6542 index 000000000000..20e1c890e73b
6544 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
6546 +// SPDX-License-Identifier: GPL-2.0
6548 + * Copyright (C) 2018 MediaTek Inc.
6550 + * Author: Sean Wang <sean.wang@mediatek.com>
6554 +#include <linux/device.h>
6555 +#include <linux/err.h>
6556 +#include <linux/gpio/driver.h>
6557 +#include <linux/platform_device.h>
6558 +#include <linux/io.h>
6559 +#include <linux/of_irq.h>
6561 +#include "mtk-eint.h"
6562 +#include "pinctrl-mtk-common-v2.h"
6565 + * struct mtk_drive_desc - the structure that holds the information
6566 + * of the driving current
6567 + * @min: the minimum current of this group
6568 + * @max: the maximum current of this group
6569 + * @step: the step current of this group
6570 + * @scal: the weight factor
6572 + * formula: output = ((input) / step - 1) * scal
6574 +struct mtk_drive_desc {
6581 +/* The groups of drive strength */
6582 +static const struct mtk_drive_desc mtk_drive[] = {
6583 + [DRV_GRP0] = { 4, 16, 4, 1 },
6584 + [DRV_GRP1] = { 4, 16, 4, 2 },
6585 + [DRV_GRP2] = { 2, 8, 2, 1 },
6586 + [DRV_GRP3] = { 2, 8, 2, 2 },
6587 + [DRV_GRP4] = { 2, 16, 2, 1 },
6590 +static void mtk_w32(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 val)
6592 + writel_relaxed(val, pctl->base[i] + reg);
6595 +static u32 mtk_r32(struct mtk_pinctrl *pctl, u8 i, u32 reg)
6597 + return readl_relaxed(pctl->base[i] + reg);
6600 +void mtk_rmw(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 mask, u32 set)
6604 + val = mtk_r32(pctl, i, reg);
6607 + mtk_w32(pctl, i, reg, val);
6610 +static int mtk_hw_pin_field_lookup(struct mtk_pinctrl *hw,
6611 + const struct mtk_pin_desc *desc,
6612 + int field, struct mtk_pin_field *pfd)
6614 + const struct mtk_pin_field_calc *c, *e;
6615 + const struct mtk_pin_reg_calc *rc;
6618 + if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) {
6619 + rc = &hw->soc->reg_cal[field];
6622 + "Not support field %d for pin %d (%s)\n",
6623 + field, desc->number, desc->name);
6628 + e = c + rc->nranges;
6631 + if (desc->number >= c->s_pin && desc->number <= c->e_pin)
6637 + dev_dbg(hw->dev, "Not support field %d for pin = %d (%s)\n",
6638 + field, desc->number, desc->name);
6642 + if (c->i_base > hw->nbase - 1) {
6644 + "Invalid base for field %d for pin = %d (%s)\n",
6645 + field, desc->number, desc->name);
6649 + /* Calculated bits as the overall offset the pin is located at,
6650 + * if c->fixed is held, that determines the all the pins in the
6651 + * range use the same field with the s_pin.
6653 + bits = c->fixed ? c->s_bit : c->s_bit +
6654 + (desc->number - c->s_pin) * (c->x_bits);
6656 + /* Fill pfd from bits. For example 32-bit register applied is assumed
6657 + * when c->sz_reg is equal to 32.
6659 + pfd->index = c->i_base;
6660 + pfd->offset = c->s_addr + c->x_addrs * (bits / c->sz_reg);
6661 + pfd->bitpos = bits % c->sz_reg;
6662 + pfd->mask = (1 << c->x_bits) - 1;
6664 + /* pfd->next is used for indicating that bit wrapping-around happens
6665 + * which requires the manipulation for bit 0 starting in the next
6666 + * register to form the complete field read/write.
6668 + pfd->next = pfd->bitpos + c->x_bits > c->sz_reg ? c->x_addrs : 0;
6673 +static int mtk_hw_pin_field_get(struct mtk_pinctrl *hw,
6674 + const struct mtk_pin_desc *desc,
6675 + int field, struct mtk_pin_field *pfd)
6677 + if (field < 0 || field >= PINCTRL_PIN_REG_MAX) {
6678 + dev_err(hw->dev, "Invalid Field %d\n", field);
6682 + return mtk_hw_pin_field_lookup(hw, desc, field, pfd);
6685 +static void mtk_hw_bits_part(struct mtk_pin_field *pf, int *h, int *l)
6687 + *l = 32 - pf->bitpos;
6688 + *h = get_count_order(pf->mask) - *l;
6691 +static void mtk_hw_write_cross_field(struct mtk_pinctrl *hw,
6692 + struct mtk_pin_field *pf, int value)
6694 + int nbits_l, nbits_h;
6696 + mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
6698 + mtk_rmw(hw, pf->index, pf->offset, pf->mask << pf->bitpos,
6699 + (value & pf->mask) << pf->bitpos);
6701 + mtk_rmw(hw, pf->index, pf->offset + pf->next, BIT(nbits_h) - 1,
6702 + (value & pf->mask) >> nbits_l);
6705 +static void mtk_hw_read_cross_field(struct mtk_pinctrl *hw,
6706 + struct mtk_pin_field *pf, int *value)
6708 + int nbits_l, nbits_h, h, l;
6710 + mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
6712 + l = (mtk_r32(hw, pf->index, pf->offset)
6713 + >> pf->bitpos) & (BIT(nbits_l) - 1);
6714 + h = (mtk_r32(hw, pf->index, pf->offset + pf->next))
6715 + & (BIT(nbits_h) - 1);
6717 + *value = (h << nbits_l) | l;
6720 +int mtk_hw_set_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
6721 + int field, int value)
6723 + struct mtk_pin_field pf;
6726 + err = mtk_hw_pin_field_get(hw, desc, field, &pf);
6731 + mtk_rmw(hw, pf.index, pf.offset, pf.mask << pf.bitpos,
6732 + (value & pf.mask) << pf.bitpos);
6734 + mtk_hw_write_cross_field(hw, &pf, value);
6739 +int mtk_hw_get_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
6740 + int field, int *value)
6742 + struct mtk_pin_field pf;
6745 + err = mtk_hw_pin_field_get(hw, desc, field, &pf);
6750 + *value = (mtk_r32(hw, pf.index, pf.offset)
6751 + >> pf.bitpos) & pf.mask;
6753 + mtk_hw_read_cross_field(hw, &pf, value);
6758 +static int mtk_xt_find_eint_num(struct mtk_pinctrl *hw, unsigned long eint_n)
6760 + const struct mtk_pin_desc *desc;
6763 + desc = (const struct mtk_pin_desc *)hw->soc->pins;
6765 + while (i < hw->soc->npins) {
6766 + if (desc[i].eint.eint_n == eint_n)
6767 + return desc[i].number;
6774 +static int mtk_xt_get_gpio_n(void *data, unsigned long eint_n,
6775 + unsigned int *gpio_n,
6776 + struct gpio_chip **gpio_chip)
6778 + struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
6779 + const struct mtk_pin_desc *desc;
6781 + desc = (const struct mtk_pin_desc *)hw->soc->pins;
6782 + *gpio_chip = &hw->chip;
6784 + /* Be greedy to guess first gpio_n is equal to eint_n */
6785 + if (desc[eint_n].eint.eint_n == eint_n)
6788 + *gpio_n = mtk_xt_find_eint_num(hw, eint_n);
6790 + return *gpio_n == EINT_NA ? -EINVAL : 0;
6793 +static int mtk_xt_get_gpio_state(void *data, unsigned long eint_n)
6795 + struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
6796 + const struct mtk_pin_desc *desc;
6797 + struct gpio_chip *gpio_chip;
6798 + unsigned int gpio_n;
6801 + err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
6805 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];
6807 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
6814 +static int mtk_xt_set_gpio_as_eint(void *data, unsigned long eint_n)
6816 + struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
6817 + const struct mtk_pin_desc *desc;
6818 + struct gpio_chip *gpio_chip;
6819 + unsigned int gpio_n;
6822 + err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
6826 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];
6828 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
6829 + desc->eint.eint_m);
6833 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, MTK_INPUT);
6837 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT, MTK_ENABLE);
6838 + /* SMT is supposed to be supported by every real GPIO and doesn't
6839 + * support virtual GPIOs, so the extra condition err != -ENOTSUPP
6840 + * is just for adding EINT support to these virtual GPIOs. It should
6841 + * add an extra flag in the pin descriptor when more pins with
6842 + * distinctive characteristic come out.
6844 + if (err && err != -ENOTSUPP)
6850 +static const struct mtk_eint_xt mtk_eint_xt = {
6851 + .get_gpio_n = mtk_xt_get_gpio_n,
6852 + .get_gpio_state = mtk_xt_get_gpio_state,
6853 + .set_gpio_as_eint = mtk_xt_set_gpio_as_eint,
6856 +int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
6858 + struct device_node *np = pdev->dev.of_node;
6859 + struct resource *res;
6861 + if (!IS_ENABLED(CONFIG_EINT_MTK))
6864 + if (!of_property_read_bool(np, "interrupt-controller"))
6867 + hw->eint = devm_kzalloc(hw->dev, sizeof(*hw->eint), GFP_KERNEL);
6871 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "eint");
6873 + dev_err(&pdev->dev, "Unable to get eint resource\n");
6877 + hw->eint->base = devm_ioremap_resource(&pdev->dev, res);
6878 + if (IS_ERR(hw->eint->base))
6879 + return PTR_ERR(hw->eint->base);
6881 + hw->eint->irq = irq_of_parse_and_map(np, 0);
6882 + if (!hw->eint->irq)
6885 + if (!hw->soc->eint_hw)
6888 + hw->eint->dev = &pdev->dev;
6889 + hw->eint->hw = hw->soc->eint_hw;
6890 + hw->eint->pctl = hw;
6891 + hw->eint->gpio_xlate = &mtk_eint_xt;
6893 + return mtk_eint_do_init(hw->eint);
6897 +int mtk_pinconf_bias_disable_set(struct mtk_pinctrl *hw,
6898 + const struct mtk_pin_desc *desc)
6902 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PU,
6907 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PD,
6915 +int mtk_pinconf_bias_disable_get(struct mtk_pinctrl *hw,
6916 + const struct mtk_pin_desc *desc, int *res)
6921 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PU, &v);
6925 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PD, &v2);
6929 + if (v == MTK_ENABLE || v2 == MTK_ENABLE)
6937 +int mtk_pinconf_bias_set(struct mtk_pinctrl *hw,
6938 + const struct mtk_pin_desc *desc, bool pullup)
6942 + arg = pullup ? 1 : 2;
6944 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PU, arg & 1);
6948 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PD,
6956 +int mtk_pinconf_bias_get(struct mtk_pinctrl *hw,
6957 + const struct mtk_pin_desc *desc, bool pullup, int *res)
6961 + reg = pullup ? PINCTRL_PIN_REG_PU : PINCTRL_PIN_REG_PD;
6963 + err = mtk_hw_get_value(hw, desc, reg, &v);
6976 +int mtk_pinconf_bias_disable_set_rev1(struct mtk_pinctrl *hw,
6977 + const struct mtk_pin_desc *desc)
6981 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLEN,
6989 +int mtk_pinconf_bias_disable_get_rev1(struct mtk_pinctrl *hw,
6990 + const struct mtk_pin_desc *desc, int *res)
6994 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLEN, &v);
6998 + if (v == MTK_ENABLE)
7006 +int mtk_pinconf_bias_set_rev1(struct mtk_pinctrl *hw,
7007 + const struct mtk_pin_desc *desc, bool pullup)
7011 + arg = pullup ? MTK_PULLUP : MTK_PULLDOWN;
7013 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLEN,
7018 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLSEL, arg);
7025 +int mtk_pinconf_bias_get_rev1(struct mtk_pinctrl *hw,
7026 + const struct mtk_pin_desc *desc, bool pullup,
7031 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLEN, &v);
7035 + if (v == MTK_DISABLE)
7038 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLSEL, &v);
7042 + if (pullup ^ (v == MTK_PULLUP))
7051 +int mtk_pinconf_drive_set(struct mtk_pinctrl *hw,
7052 + const struct mtk_pin_desc *desc, u32 arg)
7054 + const struct mtk_drive_desc *tb;
7055 + int err = -ENOTSUPP;
7057 + tb = &mtk_drive[desc->drv_n];
7058 + /* 4mA when (e8, e4) = (0, 0)
7059 + * 8mA when (e8, e4) = (0, 1)
7060 + * 12mA when (e8, e4) = (1, 0)
7061 + * 16mA when (e8, e4) = (1, 1)
7063 + if ((arg >= tb->min && arg <= tb->max) && !(arg % tb->step)) {
7064 + arg = (arg / tb->step - 1) * tb->scal;
7065 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_E4,
7070 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_E8,
7071 + (arg & 0x2) >> 1);
7079 +int mtk_pinconf_drive_get(struct mtk_pinctrl *hw,
7080 + const struct mtk_pin_desc *desc, int *val)
7082 + const struct mtk_drive_desc *tb;
7083 + int err, val1, val2;
7085 + tb = &mtk_drive[desc->drv_n];
7087 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_E4, &val1);
7091 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_E8, &val2);
7095 + /* 4mA when (e8, e4) = (0, 0); 8mA when (e8, e4) = (0, 1)
7096 + * 12mA when (e8, e4) = (1, 0); 16mA when (e8, e4) = (1, 1)
7098 + *val = (((val2 << 1) + val1) / tb->scal + 1) * tb->step;
7104 +int mtk_pinconf_drive_set_rev1(struct mtk_pinctrl *hw,
7105 + const struct mtk_pin_desc *desc, u32 arg)
7107 + const struct mtk_drive_desc *tb;
7108 + int err = -ENOTSUPP;
7110 + tb = &mtk_drive[desc->drv_n];
7112 + if ((arg >= tb->min && arg <= tb->max) && !(arg % tb->step)) {
7113 + arg = (arg / tb->step - 1) * tb->scal;
7115 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV,
7124 +int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw,
7125 + const struct mtk_pin_desc *desc, int *val)
7127 + const struct mtk_drive_desc *tb;
7130 + tb = &mtk_drive[desc->drv_n];
7132 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV, &val1);
7136 + *val = ((val1 & 0x7) / tb->scal + 1) * tb->step;
7141 +int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
7142 + const struct mtk_pin_desc *desc, bool pullup,
7147 + /* 10K off & 50K (75K) off, when (R0, R1) = (0, 0);
7148 + * 10K off & 50K (75K) on, when (R0, R1) = (0, 1);
7149 + * 10K on & 50K (75K) off, when (R0, R1) = (1, 0);
7150 + * 10K on & 50K (75K) on, when (R0, R1) = (1, 1)
7152 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_R0, arg & 1);
7156 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_R1,
7161 + arg = pullup ? 0 : 1;
7163 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PUPD, arg);
7165 + /* If PUPD register is not supported for that pin, let's fallback to
7166 + * general bias control.
7168 + if (err == -ENOTSUPP) {
7169 + if (hw->soc->bias_set) {
7170 + err = hw->soc->bias_set(hw, desc, pullup);
7181 +int mtk_pinconf_adv_pull_get(struct mtk_pinctrl *hw,
7182 + const struct mtk_pin_desc *desc, bool pullup,
7188 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PUPD, &t);
7190 + /* If PUPD register is not supported for that pin, let's fallback to
7191 + * general bias control.
7193 + if (err == -ENOTSUPP) {
7194 + if (hw->soc->bias_get) {
7195 + err = hw->soc->bias_get(hw, desc, pullup, val);
7202 + /* t == 0 supposes PULLUP for the customized PULL setup */
7210 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_R0, &t);
7214 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_R1, &t2);
7218 + *val = (t | t2 << 1) & 0x7;
7223 +int mtk_pinconf_adv_drive_set(struct mtk_pinctrl *hw,
7224 + const struct mtk_pin_desc *desc, u32 arg)
7228 + int e0 = !!(arg & 2);
7229 + int e1 = !!(arg & 4);
7231 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_EN, en);
7238 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_E0, e0);
7242 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_E1, e1);
7249 +int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw,
7250 + const struct mtk_pin_desc *desc, u32 *val)
7255 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_EN, &en);
7259 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_E0, &e0);
7263 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_E1, &e1);
7267 + *val = (en | e0 << 1 | e1 << 2) & 0x7;
7271 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
7272 new file mode 100644
7273 index 000000000000..1b7da42aa1d5
7275 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
7277 +/* SPDX-License-Identifier: GPL-2.0 */
7279 + * Copyright (C) 2018 MediaTek Inc.
7281 + * Author: Sean Wang <sean.wang@mediatek.com>
7285 +#ifndef __PINCTRL_MTK_COMMON_V2_H
7286 +#define __PINCTRL_MTK_COMMON_V2_H
7288 +#include <linux/gpio/driver.h>
7290 +#define MTK_INPUT 0
7291 +#define MTK_OUTPUT 1
7292 +#define MTK_DISABLE 0
7293 +#define MTK_ENABLE 1
7294 +#define MTK_PULLDOWN 0
7295 +#define MTK_PULLUP 1
7297 +#define EINT_NA U16_MAX
7298 +#define NO_EINT_SUPPORT EINT_NA
7300 +#define PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, \
7301 + _s_bit, _x_bits, _sz_reg, _fixed) { \
7302 + .s_pin = _s_pin, \
7303 + .e_pin = _e_pin, \
7304 + .i_base = _i_base, \
7305 + .s_addr = _s_addr, \
7306 + .x_addrs = _x_addrs, \
7307 + .s_bit = _s_bit, \
7308 + .x_bits = _x_bits, \
7309 + .sz_reg = _sz_reg, \
7310 + .fixed = _fixed, \
7313 +#define PIN_FIELD(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
7314 + PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
7317 +#define PINS_FIELD(_s_pin, _e_pin, _s_addr, _x_addrs, _s_bit, _x_bits) \
7318 + PIN_FIELD_CALC(_s_pin, _e_pin, 0, _s_addr, _x_addrs, _s_bit, \
7321 +/* List these attributes which could be modified for the pin */
7323 + PINCTRL_PIN_REG_MODE,
7324 + PINCTRL_PIN_REG_DIR,
7325 + PINCTRL_PIN_REG_DI,
7326 + PINCTRL_PIN_REG_DO,
7327 + PINCTRL_PIN_REG_SR,
7328 + PINCTRL_PIN_REG_SMT,
7329 + PINCTRL_PIN_REG_PD,
7330 + PINCTRL_PIN_REG_PU,
7331 + PINCTRL_PIN_REG_E4,
7332 + PINCTRL_PIN_REG_E8,
7333 + PINCTRL_PIN_REG_TDSEL,
7334 + PINCTRL_PIN_REG_RDSEL,
7335 + PINCTRL_PIN_REG_DRV,
7336 + PINCTRL_PIN_REG_PUPD,
7337 + PINCTRL_PIN_REG_R0,
7338 + PINCTRL_PIN_REG_R1,
7339 + PINCTRL_PIN_REG_IES,
7340 + PINCTRL_PIN_REG_PULLEN,
7341 + PINCTRL_PIN_REG_PULLSEL,
7342 + PINCTRL_PIN_REG_DRV_EN,
7343 + PINCTRL_PIN_REG_DRV_E0,
7344 + PINCTRL_PIN_REG_DRV_E1,
7345 + PINCTRL_PIN_REG_MAX,
7348 +/* Group the pins by the driving current */
7359 +static const char * const mtk_default_register_base_names[] = {
7363 +/* struct mtk_pin_field - the structure that holds the information of the field
7364 + * used to describe the attribute for the pin
7365 + * @base: the index pointing to the entry in base address list
7366 + * @offset: the register offset relative to the base address
7367 + * @mask: the mask used to filter out the field from the register
7368 + * @bitpos: the start bit relative to the register
7369 + * @next: the indication that the field would be extended to the
7372 +struct mtk_pin_field {
7380 +/* struct mtk_pin_field_calc - the structure that holds the range providing
7381 + * the guide used to look up the relevant field
7382 + * @s_pin: the start pin within the range
7383 + * @e_pin: the end pin within the range
7384 + * @i_base: the index pointing to the entry in base address list
7385 + * @s_addr: the start address for the range
7386 + * @x_addrs: the address distance between two consecutive registers
7387 + * within the range
7388 + * @s_bit: the start bit for the first register within the range
7389 + * @x_bits: the bit distance between two consecutive pins within
7391 + * @sz_reg: the size of bits in a register
7392 + * @fixed: the consecutive pins share the same bits with the 1st
7395 +struct mtk_pin_field_calc {
7407 +/* struct mtk_pin_reg_calc - the structure that holds all ranges used to
7408 + * determine which register the pin would make use of
7409 + * for certain pin attribute.
7410 + * @range: the start address for the range
7411 + * @nranges: the number of items in the range
7413 +struct mtk_pin_reg_calc {
7414 + const struct mtk_pin_field_calc *range;
7415 + unsigned int nranges;
7419 + * struct mtk_func_desc - the structure that providing information
7420 + * all the funcs for this pin
7421 + * @name: the name of function
7422 + * @muxval: the mux to the function
7424 +struct mtk_func_desc {
7430 + * struct mtk_eint_desc - the structure that providing information
7431 + * for eint data per pin
7432 + * @eint_m: the eint mux for this pin
7433 + * @eitn_n: the eint number for this pin
7435 +struct mtk_eint_desc {
7441 + * struct mtk_pin_desc - the structure that providing information
7442 + * for each pin of chips
7443 + * @number: unique pin number from the global pin number space
7444 + * @name: name for this pin
7445 + * @eint: the eint data for this pin
7446 + * @drv_n: the index with the driving group
7447 + * @funcs: all available functions for this pins (only used in
7448 + * those drivers compatible to pinctrl-mtk-common.c-like
7451 +struct mtk_pin_desc {
7452 + unsigned int number;
7454 + struct mtk_eint_desc eint;
7456 + struct mtk_func_desc *funcs;
7459 +struct mtk_pinctrl_group {
7461 + unsigned long config;
7465 +struct mtk_pinctrl;
7467 +/* struct mtk_pin_soc - the structure that holds SoC-specific data */
7468 +struct mtk_pin_soc {
7469 + const struct mtk_pin_reg_calc *reg_cal;
7470 + const struct mtk_pin_desc *pins;
7471 + unsigned int npins;
7472 + const struct group_desc *grps;
7473 + unsigned int ngrps;
7474 + const struct function_desc *funcs;
7475 + unsigned int nfuncs;
7476 + const struct mtk_eint_regs *eint_regs;
7477 + const struct mtk_eint_hw *eint_hw;
7479 + /* Specific parameters per SoC */
7482 + const char * const *base_names;
7483 + unsigned int nbase_names;
7485 + /* Specific pinconfig operations */
7486 + int (*bias_disable_set)(struct mtk_pinctrl *hw,
7487 + const struct mtk_pin_desc *desc);
7488 + int (*bias_disable_get)(struct mtk_pinctrl *hw,
7489 + const struct mtk_pin_desc *desc, int *res);
7490 + int (*bias_set)(struct mtk_pinctrl *hw,
7491 + const struct mtk_pin_desc *desc, bool pullup);
7492 + int (*bias_get)(struct mtk_pinctrl *hw,
7493 + const struct mtk_pin_desc *desc, bool pullup, int *res);
7495 + int (*drive_set)(struct mtk_pinctrl *hw,
7496 + const struct mtk_pin_desc *desc, u32 arg);
7497 + int (*drive_get)(struct mtk_pinctrl *hw,
7498 + const struct mtk_pin_desc *desc, int *val);
7500 + int (*adv_pull_set)(struct mtk_pinctrl *hw,
7501 + const struct mtk_pin_desc *desc, bool pullup,
7503 + int (*adv_pull_get)(struct mtk_pinctrl *hw,
7504 + const struct mtk_pin_desc *desc, bool pullup,
7506 + int (*adv_drive_set)(struct mtk_pinctrl *hw,
7507 + const struct mtk_pin_desc *desc, u32 arg);
7508 + int (*adv_drive_get)(struct mtk_pinctrl *hw,
7509 + const struct mtk_pin_desc *desc, u32 *val);
7511 + /* Specific driver data */
7512 + void *driver_data;
7515 +struct mtk_pinctrl {
7516 + struct pinctrl_dev *pctrl;
7517 + void __iomem **base;
7519 + struct device *dev;
7520 + struct gpio_chip chip;
7521 + const struct mtk_pin_soc *soc;
7522 + struct mtk_eint *eint;
7523 + struct mtk_pinctrl_group *groups;
7524 + const char **grp_names;
7527 +void mtk_rmw(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 mask, u32 set);
7529 +int mtk_hw_set_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
7530 + int field, int value);
7531 +int mtk_hw_get_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
7532 + int field, int *value);
7534 +int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev);
7536 +int mtk_pinconf_bias_disable_set(struct mtk_pinctrl *hw,
7537 + const struct mtk_pin_desc *desc);
7538 +int mtk_pinconf_bias_disable_get(struct mtk_pinctrl *hw,
7539 + const struct mtk_pin_desc *desc, int *res);
7540 +int mtk_pinconf_bias_set(struct mtk_pinctrl *hw,
7541 + const struct mtk_pin_desc *desc, bool pullup);
7542 +int mtk_pinconf_bias_get(struct mtk_pinctrl *hw,
7543 + const struct mtk_pin_desc *desc, bool pullup,
7546 +int mtk_pinconf_bias_disable_set_rev1(struct mtk_pinctrl *hw,
7547 + const struct mtk_pin_desc *desc);
7548 +int mtk_pinconf_bias_disable_get_rev1(struct mtk_pinctrl *hw,
7549 + const struct mtk_pin_desc *desc,
7551 +int mtk_pinconf_bias_set_rev1(struct mtk_pinctrl *hw,
7552 + const struct mtk_pin_desc *desc, bool pullup);
7553 +int mtk_pinconf_bias_get_rev1(struct mtk_pinctrl *hw,
7554 + const struct mtk_pin_desc *desc, bool pullup,
7557 +int mtk_pinconf_drive_set(struct mtk_pinctrl *hw,
7558 + const struct mtk_pin_desc *desc, u32 arg);
7559 +int mtk_pinconf_drive_get(struct mtk_pinctrl *hw,
7560 + const struct mtk_pin_desc *desc, int *val);
7562 +int mtk_pinconf_drive_set_rev1(struct mtk_pinctrl *hw,
7563 + const struct mtk_pin_desc *desc, u32 arg);
7564 +int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw,
7565 + const struct mtk_pin_desc *desc, int *val);
7567 +int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
7568 + const struct mtk_pin_desc *desc, bool pullup,
7570 +int mtk_pinconf_adv_pull_get(struct mtk_pinctrl *hw,
7571 + const struct mtk_pin_desc *desc, bool pullup,
7573 +int mtk_pinconf_adv_drive_set(struct mtk_pinctrl *hw,
7574 + const struct mtk_pin_desc *desc, u32 arg);
7575 +int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw,
7576 + const struct mtk_pin_desc *desc, u32 *val);
7578 +#endif /* __PINCTRL_MTK_COMMON_V2_H */
7579 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
7580 index 16ff56f93501..071623873ca5 100644
7581 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
7582 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
7583 @@ -514,8 +514,8 @@ static int mtk_pctrl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
7585 pins = of_find_property(node, "pinmux", NULL);
7587 - dev_err(pctl->dev, "missing pins property in node %s .\n",
7589 + dev_err(pctl->dev, "missing pins property in node %pOFn .\n",
7594 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6765.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6765.h
7595 new file mode 100644
7596 index 000000000000..772563720461
7598 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6765.h
7600 +/* SPDX-License-Identifier: GPL-2.0 */
7602 + * Copyright (C) 2018 MediaTek Inc.
7604 + * Author: ZH Chen <zh.chen@mediatek.com>
7608 +#ifndef __PINCTRL_MTK_MT6765_H
7609 +#define __PINCTRL_MTK_MT6765_H
7611 +#include "pinctrl-paris.h"
7613 +static struct mtk_pin_desc mtk_pins_mt6765[] = {
7616 + MTK_EINT_FUNCTION(0, 0),
7618 + MTK_FUNCTION(0, "GPIO0"),
7619 + MTK_FUNCTION(1, "UTXD1"),
7620 + MTK_FUNCTION(2, "CLKM0"),
7621 + MTK_FUNCTION(3, "MD_INT0"),
7622 + MTK_FUNCTION(4, "I2S0_MCK"),
7623 + MTK_FUNCTION(5, "MD_UTXD1"),
7624 + MTK_FUNCTION(6, "TP_GPIO0_AO"),
7625 + MTK_FUNCTION(7, "DBG_MON_B9")
7629 + MTK_EINT_FUNCTION(0, 1),
7631 + MTK_FUNCTION(0, "GPIO1"),
7632 + MTK_FUNCTION(1, "URXD1"),
7633 + MTK_FUNCTION(2, "CLKM1"),
7634 + MTK_FUNCTION(4, "I2S0_BCK"),
7635 + MTK_FUNCTION(5, "MD_URXD1"),
7636 + MTK_FUNCTION(6, "TP_GPIO1_AO"),
7637 + MTK_FUNCTION(7, "DBG_MON_B10")
7641 + MTK_EINT_FUNCTION(0, 2),
7643 + MTK_FUNCTION(0, "GPIO2"),
7644 + MTK_FUNCTION(1, "UCTS0"),
7645 + MTK_FUNCTION(2, "CLKM2"),
7646 + MTK_FUNCTION(3, "UTXD1"),
7647 + MTK_FUNCTION(4, "I2S0_LRCK"),
7648 + MTK_FUNCTION(5, "ANT_SEL6"),
7649 + MTK_FUNCTION(6, "TP_GPIO2_AO"),
7650 + MTK_FUNCTION(7, "DBG_MON_B11")
7654 + MTK_EINT_FUNCTION(0, 3),
7656 + MTK_FUNCTION(0, "GPIO3"),
7657 + MTK_FUNCTION(1, "URTS0"),
7658 + MTK_FUNCTION(2, "CLKM3"),
7659 + MTK_FUNCTION(3, "URXD1"),
7660 + MTK_FUNCTION(4, "I2S0_DI"),
7661 + MTK_FUNCTION(5, "ANT_SEL7"),
7662 + MTK_FUNCTION(6, "TP_GPIO3_AO"),
7663 + MTK_FUNCTION(7, "DBG_MON_B12")
7667 + MTK_EINT_FUNCTION(0, 4),
7669 + MTK_FUNCTION(0, "GPIO4"),
7670 + MTK_FUNCTION(1, "SPI1_B_MI"),
7671 + MTK_FUNCTION(2, "SCP_SPI1_MI"),
7672 + MTK_FUNCTION(3, "UCTS0"),
7673 + MTK_FUNCTION(4, "I2S3_MCK"),
7674 + MTK_FUNCTION(5, "SSPM_URXD_AO"),
7675 + MTK_FUNCTION(6, "TP_GPIO4_AO")
7679 + MTK_EINT_FUNCTION(0, 5),
7681 + MTK_FUNCTION(0, "GPIO5"),
7682 + MTK_FUNCTION(1, "SPI1_B_CSB"),
7683 + MTK_FUNCTION(2, "SCP_SPI1_CS"),
7684 + MTK_FUNCTION(3, "URTS0"),
7685 + MTK_FUNCTION(4, "I2S3_BCK"),
7686 + MTK_FUNCTION(5, "SSPM_UTXD_AO"),
7687 + MTK_FUNCTION(6, "TP_GPIO5_AO")
7691 + MTK_EINT_FUNCTION(0, 6),
7693 + MTK_FUNCTION(0, "GPIO6"),
7694 + MTK_FUNCTION(1, "SPI1_B_MO"),
7695 + MTK_FUNCTION(2, "SCP_SPI1_MO"),
7696 + MTK_FUNCTION(3, "PWM0"),
7697 + MTK_FUNCTION(4, "I2S3_LRCK"),
7698 + MTK_FUNCTION(5, "MD_UTXD0"),
7699 + MTK_FUNCTION(6, "TP_GPIO6_AO")
7703 + MTK_EINT_FUNCTION(0, 7),
7705 + MTK_FUNCTION(0, "GPIO7"),
7706 + MTK_FUNCTION(1, "SPI1_B_CLK"),
7707 + MTK_FUNCTION(2, "SCP_SPI1_CK"),
7708 + MTK_FUNCTION(3, "PWM1"),
7709 + MTK_FUNCTION(4, "I2S3_DO"),
7710 + MTK_FUNCTION(5, "MD_URXD0"),
7711 + MTK_FUNCTION(6, "TP_GPIO7_AO")
7715 + MTK_EINT_FUNCTION(0, 8),
7717 + MTK_FUNCTION(0, "GPIO8"),
7718 + MTK_FUNCTION(1, "UTXD1"),
7719 + MTK_FUNCTION(2, "SRCLKENAI0"),
7720 + MTK_FUNCTION(3, "MD_INT1_C2K_UIM0_HOT_PLUG"),
7721 + MTK_FUNCTION(4, "ANT_SEL3"),
7722 + MTK_FUNCTION(5, "MFG_JTAG_TRSTN"),
7723 + MTK_FUNCTION(6, "I2S2_MCK"),
7724 + MTK_FUNCTION(7, "JTRSTN_SEL1")
7728 + MTK_EINT_FUNCTION(0, 9),
7730 + MTK_FUNCTION(0, "GPIO9"),
7731 + MTK_FUNCTION(1, "MD_INT0"),
7732 + MTK_FUNCTION(2, "CMMCLK2"),
7733 + MTK_FUNCTION(3, "CONN_MCU_TRST_B"),
7734 + MTK_FUNCTION(4, "IDDIG"),
7735 + MTK_FUNCTION(5, "SDA_6306"),
7736 + MTK_FUNCTION(6, "MCUPM_JTAG_TRSTN"),
7737 + MTK_FUNCTION(7, "DBG_MON_B22")
7741 + MTK_EINT_FUNCTION(0, 10),
7743 + MTK_FUNCTION(0, "GPIO10"),
7744 + MTK_FUNCTION(1, "MD_INT1_C2K_UIM0_HOT_PLUG"),
7745 + MTK_FUNCTION(3, "CONN_MCU_DBGI_N"),
7746 + MTK_FUNCTION(4, "SRCLKENAI1"),
7747 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
7748 + MTK_FUNCTION(6, "CMVREF1"),
7749 + MTK_FUNCTION(7, "DBG_MON_B23")
7753 + MTK_EINT_FUNCTION(0, 11),
7755 + MTK_FUNCTION(0, "GPIO11"),
7756 + MTK_FUNCTION(1, "MD_INT2_C2K_UIM1_HOT_PLUG"),
7757 + MTK_FUNCTION(2, "CLKM3"),
7758 + MTK_FUNCTION(3, "ANT_SEL6"),
7759 + MTK_FUNCTION(4, "SRCLKENAI0"),
7760 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
7761 + MTK_FUNCTION(6, "UCTS1"),
7762 + MTK_FUNCTION(7, "DBG_MON_B24")
7766 + MTK_EINT_FUNCTION(0, 12),
7768 + MTK_FUNCTION(0, "GPIO12"),
7769 + MTK_FUNCTION(1, "PWM0"),
7770 + MTK_FUNCTION(2, "SRCLKENAI1"),
7771 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
7772 + MTK_FUNCTION(4, "MD_INT0"),
7773 + MTK_FUNCTION(5, "DVFSRC_EXT_REQ"),
7774 + MTK_FUNCTION(6, "URTS1")
7778 + MTK_EINT_FUNCTION(0, 13),
7780 + MTK_FUNCTION(0, "GPIO13"),
7781 + MTK_FUNCTION(1, "ANT_SEL0"),
7782 + MTK_FUNCTION(2, "SPI4_MI"),
7783 + MTK_FUNCTION(3, "SCP_SPI0_MI"),
7784 + MTK_FUNCTION(4, "MD_URXD0"),
7785 + MTK_FUNCTION(5, "CLKM0"),
7786 + MTK_FUNCTION(6, "I2S0_MCK"),
7787 + MTK_FUNCTION(7, "DBG_MON_A0")
7791 + MTK_EINT_FUNCTION(0, 14),
7793 + MTK_FUNCTION(0, "GPIO14"),
7794 + MTK_FUNCTION(1, "ANT_SEL1"),
7795 + MTK_FUNCTION(2, "SPI4_CSB"),
7796 + MTK_FUNCTION(3, "SCP_SPI0_CS"),
7797 + MTK_FUNCTION(4, "MD_UTXD0"),
7798 + MTK_FUNCTION(5, "CLKM1"),
7799 + MTK_FUNCTION(6, "I2S0_BCK"),
7800 + MTK_FUNCTION(7, "DBG_MON_A1")
7804 + MTK_EINT_FUNCTION(0, 15),
7806 + MTK_FUNCTION(0, "GPIO15"),
7807 + MTK_FUNCTION(1, "ANT_SEL2"),
7808 + MTK_FUNCTION(2, "SPI4_MO"),
7809 + MTK_FUNCTION(3, "SCP_SPI0_MO"),
7810 + MTK_FUNCTION(4, "MD_URXD1"),
7811 + MTK_FUNCTION(5, "CLKM2"),
7812 + MTK_FUNCTION(6, "I2S0_LRCK"),
7813 + MTK_FUNCTION(7, "DBG_MON_A2")
7817 + MTK_EINT_FUNCTION(0, 16),
7819 + MTK_FUNCTION(0, "GPIO16"),
7820 + MTK_FUNCTION(1, "ANT_SEL3"),
7821 + MTK_FUNCTION(2, "SPI4_CLK"),
7822 + MTK_FUNCTION(3, "SCP_SPI0_CK"),
7823 + MTK_FUNCTION(4, "MD_UTXD1"),
7824 + MTK_FUNCTION(5, "CLKM3"),
7825 + MTK_FUNCTION(6, "I2S3_MCK"),
7826 + MTK_FUNCTION(7, "DBG_MON_A3")
7830 + MTK_EINT_FUNCTION(0, 17),
7832 + MTK_FUNCTION(0, "GPIO17"),
7833 + MTK_FUNCTION(1, "ANT_SEL4"),
7834 + MTK_FUNCTION(2, "SPI2_MO"),
7835 + MTK_FUNCTION(3, "SCP_SPI0_MO"),
7836 + MTK_FUNCTION(4, "PWM1"),
7837 + MTK_FUNCTION(5, "IDDIG"),
7838 + MTK_FUNCTION(6, "I2S0_DI"),
7839 + MTK_FUNCTION(7, "DBG_MON_A4")
7843 + MTK_EINT_FUNCTION(0, 18),
7845 + MTK_FUNCTION(0, "GPIO18"),
7846 + MTK_FUNCTION(1, "ANT_SEL5"),
7847 + MTK_FUNCTION(2, "SPI2_CLK"),
7848 + MTK_FUNCTION(3, "SCP_SPI0_CK"),
7849 + MTK_FUNCTION(4, "MD_INT0"),
7850 + MTK_FUNCTION(5, "USB_DRVVBUS"),
7851 + MTK_FUNCTION(6, "I2S3_BCK"),
7852 + MTK_FUNCTION(7, "DBG_MON_A5")
7856 + MTK_EINT_FUNCTION(0, 19),
7858 + MTK_FUNCTION(0, "GPIO19"),
7859 + MTK_FUNCTION(1, "ANT_SEL6"),
7860 + MTK_FUNCTION(2, "SPI2_MI"),
7861 + MTK_FUNCTION(3, "SCP_SPI0_MI"),
7862 + MTK_FUNCTION(4, "MD_INT2_C2K_UIM1_HOT_PLUG"),
7863 + MTK_FUNCTION(6, "I2S3_LRCK"),
7864 + MTK_FUNCTION(7, "DBG_MON_A6")
7868 + MTK_EINT_FUNCTION(0, 20),
7870 + MTK_FUNCTION(0, "GPIO20"),
7871 + MTK_FUNCTION(1, "ANT_SEL7"),
7872 + MTK_FUNCTION(2, "SPI2_CSB"),
7873 + MTK_FUNCTION(3, "SCP_SPI0_CS"),
7874 + MTK_FUNCTION(4, "MD_INT1_C2K_UIM0_HOT_PLUG"),
7875 + MTK_FUNCTION(5, "CMMCLK3"),
7876 + MTK_FUNCTION(6, "I2S3_DO"),
7877 + MTK_FUNCTION(7, "DBG_MON_A7")
7881 + MTK_EINT_FUNCTION(0, 21),
7883 + MTK_FUNCTION(0, "GPIO21"),
7884 + MTK_FUNCTION(1, "SPI3_MI"),
7885 + MTK_FUNCTION(2, "SRCLKENAI1"),
7886 + MTK_FUNCTION(3, "DAP_MD32_SWD"),
7887 + MTK_FUNCTION(4, "CMVREF0"),
7888 + MTK_FUNCTION(5, "SCP_SPI0_MI"),
7889 + MTK_FUNCTION(6, "I2S2_MCK"),
7890 + MTK_FUNCTION(7, "DBG_MON_A8")
7894 + MTK_EINT_FUNCTION(0, 22),
7896 + MTK_FUNCTION(0, "GPIO22"),
7897 + MTK_FUNCTION(1, "SPI3_CSB"),
7898 + MTK_FUNCTION(2, "SRCLKENAI0"),
7899 + MTK_FUNCTION(3, "DAP_MD32_SWCK"),
7900 + MTK_FUNCTION(4, "CMVREF1"),
7901 + MTK_FUNCTION(5, "SCP_SPI0_CS"),
7902 + MTK_FUNCTION(6, "I2S2_BCK"),
7903 + MTK_FUNCTION(7, "DBG_MON_A9")
7907 + MTK_EINT_FUNCTION(0, 23),
7909 + MTK_FUNCTION(0, "GPIO23"),
7910 + MTK_FUNCTION(1, "SPI3_MO"),
7911 + MTK_FUNCTION(2, "PWM0"),
7912 + MTK_FUNCTION(3, "KPROW7"),
7913 + MTK_FUNCTION(4, "ANT_SEL3"),
7914 + MTK_FUNCTION(5, "SCP_SPI0_MO"),
7915 + MTK_FUNCTION(6, "I2S2_LRCK"),
7916 + MTK_FUNCTION(7, "DBG_MON_A10")
7920 + MTK_EINT_FUNCTION(0, 24),
7922 + MTK_FUNCTION(0, "GPIO24"),
7923 + MTK_FUNCTION(1, "SPI3_CLK"),
7924 + MTK_FUNCTION(2, "UDI_TCK"),
7925 + MTK_FUNCTION(3, "IO_JTAG_TCK"),
7926 + MTK_FUNCTION(4, "SSPM_JTAG_TCK"),
7927 + MTK_FUNCTION(5, "SCP_SPI0_CK"),
7928 + MTK_FUNCTION(6, "I2S2_DI"),
7929 + MTK_FUNCTION(7, "DBG_MON_A11")
7933 + MTK_EINT_FUNCTION(0, 25),
7935 + MTK_FUNCTION(0, "GPIO25"),
7936 + MTK_FUNCTION(1, "SPI1_A_MI"),
7937 + MTK_FUNCTION(2, "UDI_TMS"),
7938 + MTK_FUNCTION(3, "IO_JTAG_TMS"),
7939 + MTK_FUNCTION(4, "SSPM_JTAG_TMS"),
7940 + MTK_FUNCTION(5, "KPROW3"),
7941 + MTK_FUNCTION(6, "I2S1_MCK"),
7942 + MTK_FUNCTION(7, "DBG_MON_A12")
7946 + MTK_EINT_FUNCTION(0, 26),
7948 + MTK_FUNCTION(0, "GPIO26"),
7949 + MTK_FUNCTION(1, "SPI1_A_CSB"),
7950 + MTK_FUNCTION(2, "UDI_TDI"),
7951 + MTK_FUNCTION(3, "IO_JTAG_TDI"),
7952 + MTK_FUNCTION(4, "SSPM_JTAG_TDI"),
7953 + MTK_FUNCTION(5, "KPROW4"),
7954 + MTK_FUNCTION(6, "I2S1_BCK"),
7955 + MTK_FUNCTION(7, "DBG_MON_A13")
7959 + MTK_EINT_FUNCTION(0, 27),
7961 + MTK_FUNCTION(0, "GPIO27"),
7962 + MTK_FUNCTION(1, "SPI1_A_MO"),
7963 + MTK_FUNCTION(2, "UDI_TDO"),
7964 + MTK_FUNCTION(3, "IO_JTAG_TDO"),
7965 + MTK_FUNCTION(4, "SSPM_JTAG_TDO"),
7966 + MTK_FUNCTION(5, "KPROW5"),
7967 + MTK_FUNCTION(6, "I2S1_LRCK"),
7968 + MTK_FUNCTION(7, "DBG_MON_A14")
7972 + MTK_EINT_FUNCTION(0, 28),
7974 + MTK_FUNCTION(0, "GPIO28"),
7975 + MTK_FUNCTION(1, "SPI1_A_CLK"),
7976 + MTK_FUNCTION(2, "UDI_NTRST"),
7977 + MTK_FUNCTION(3, "IO_JTAG_TRSTN"),
7978 + MTK_FUNCTION(4, "SSPM_JTAG_TRSTN"),
7979 + MTK_FUNCTION(5, "KPROW6"),
7980 + MTK_FUNCTION(6, "I2S1_DO"),
7981 + MTK_FUNCTION(7, "DBG_MON_A15")
7985 + MTK_EINT_FUNCTION(0, 29),
7987 + MTK_FUNCTION(0, "GPIO29"),
7988 + MTK_FUNCTION(1, "MSDC1_CLK"),
7989 + MTK_FUNCTION(2, "IO_JTAG_TCK"),
7990 + MTK_FUNCTION(3, "UDI_TCK"),
7991 + MTK_FUNCTION(4, "CONN_DSP_JCK"),
7992 + MTK_FUNCTION(5, "SSPM_JTAG_TCK"),
7993 + MTK_FUNCTION(6, "CONN_MCU_AICE_TCKC"),
7994 + MTK_FUNCTION(7, "DAP_MD32_SWCK")
7998 + MTK_EINT_FUNCTION(0, 30),
8000 + MTK_FUNCTION(0, "GPIO30"),
8001 + MTK_FUNCTION(1, "MSDC1_CMD"),
8002 + MTK_FUNCTION(2, "IO_JTAG_TMS"),
8003 + MTK_FUNCTION(3, "UDI_TMS"),
8004 + MTK_FUNCTION(4, "CONN_DSP_JMS"),
8005 + MTK_FUNCTION(5, "SSPM_JTAG_TMS"),
8006 + MTK_FUNCTION(6, "CONN_MCU_AICE_TMSC"),
8007 + MTK_FUNCTION(7, "DAP_MD32_SWD")
8011 + MTK_EINT_FUNCTION(0, 31),
8013 + MTK_FUNCTION(0, "GPIO31"),
8014 + MTK_FUNCTION(1, "MSDC1_DAT3")
8018 + MTK_EINT_FUNCTION(0, 32),
8020 + MTK_FUNCTION(0, "GPIO32"),
8021 + MTK_FUNCTION(1, "MSDC1_DAT0"),
8022 + MTK_FUNCTION(2, "IO_JTAG_TDI"),
8023 + MTK_FUNCTION(3, "UDI_TDI"),
8024 + MTK_FUNCTION(4, "CONN_DSP_JDI"),
8025 + MTK_FUNCTION(5, "SSPM_JTAG_TDI")
8029 + MTK_EINT_FUNCTION(0, 33),
8031 + MTK_FUNCTION(0, "GPIO33"),
8032 + MTK_FUNCTION(1, "MSDC1_DAT2"),
8033 + MTK_FUNCTION(2, "IO_JTAG_TRSTN"),
8034 + MTK_FUNCTION(3, "UDI_NTRST"),
8035 + MTK_FUNCTION(4, "CONN_DSP_JINTP"),
8036 + MTK_FUNCTION(5, "SSPM_JTAG_TRSTN")
8040 + MTK_EINT_FUNCTION(0, 34),
8042 + MTK_FUNCTION(0, "GPIO34"),
8043 + MTK_FUNCTION(1, "MSDC1_DAT1"),
8044 + MTK_FUNCTION(2, "IO_JTAG_TDO"),
8045 + MTK_FUNCTION(3, "UDI_TDO"),
8046 + MTK_FUNCTION(4, "CONN_DSP_JDO"),
8047 + MTK_FUNCTION(5, "SSPM_JTAG_TDO")
8051 + MTK_EINT_FUNCTION(0, 35),
8053 + MTK_FUNCTION(0, "GPIO35"),
8054 + MTK_FUNCTION(1, "MD1_SIM2_SIO"),
8055 + MTK_FUNCTION(2, "CCU_JTAG_TDO"),
8056 + MTK_FUNCTION(3, "MD1_SIM1_SIO"),
8057 + MTK_FUNCTION(5, "SCP_JTAG_TDO"),
8058 + MTK_FUNCTION(6, "CONN_DSP_JDO"),
8059 + MTK_FUNCTION(7, "DBG_MON_A16")
8063 + MTK_EINT_FUNCTION(0, 36),
8065 + MTK_FUNCTION(0, "GPIO36"),
8066 + MTK_FUNCTION(1, "MD1_SIM2_SRST"),
8067 + MTK_FUNCTION(2, "CCU_JTAG_TMS"),
8068 + MTK_FUNCTION(3, "MD1_SIM1_SRST"),
8069 + MTK_FUNCTION(4, "CONN_MCU_AICE_TMSC"),
8070 + MTK_FUNCTION(5, "SCP_JTAG_TMS"),
8071 + MTK_FUNCTION(6, "CONN_DSP_JMS"),
8072 + MTK_FUNCTION(7, "DBG_MON_A17")
8076 + MTK_EINT_FUNCTION(0, 37),
8078 + MTK_FUNCTION(0, "GPIO37"),
8079 + MTK_FUNCTION(1, "MD1_SIM2_SCLK"),
8080 + MTK_FUNCTION(2, "CCU_JTAG_TDI"),
8081 + MTK_FUNCTION(3, "MD1_SIM1_SCLK"),
8082 + MTK_FUNCTION(5, "SCP_JTAG_TDI"),
8083 + MTK_FUNCTION(6, "CONN_DSP_JDI"),
8084 + MTK_FUNCTION(7, "DBG_MON_A18")
8088 + MTK_EINT_FUNCTION(0, 38),
8090 + MTK_FUNCTION(0, "GPIO38"),
8091 + MTK_FUNCTION(1, "MD1_SIM1_SCLK"),
8092 + MTK_FUNCTION(3, "MD1_SIM2_SCLK"),
8093 + MTK_FUNCTION(7, "DBG_MON_A19")
8097 + MTK_EINT_FUNCTION(0, 39),
8099 + MTK_FUNCTION(0, "GPIO39"),
8100 + MTK_FUNCTION(1, "MD1_SIM1_SRST"),
8101 + MTK_FUNCTION(2, "CCU_JTAG_TCK"),
8102 + MTK_FUNCTION(3, "MD1_SIM2_SRST"),
8103 + MTK_FUNCTION(4, "CONN_MCU_AICE_TCKC"),
8104 + MTK_FUNCTION(5, "SCP_JTAG_TCK"),
8105 + MTK_FUNCTION(6, "CONN_DSP_JCK"),
8106 + MTK_FUNCTION(7, "DBG_MON_A20")
8110 + MTK_EINT_FUNCTION(0, 40),
8112 + MTK_FUNCTION(0, "GPIO40"),
8113 + MTK_FUNCTION(1, "MD1_SIM1_SIO"),
8114 + MTK_FUNCTION(2, "CCU_JTAG_TRST"),
8115 + MTK_FUNCTION(3, "MD1_SIM2_SIO"),
8116 + MTK_FUNCTION(5, "SCP_JTAG_TRSTN"),
8117 + MTK_FUNCTION(6, "CONN_DSP_JINTP"),
8118 + MTK_FUNCTION(7, "DBG_MON_A21")
8122 + MTK_EINT_FUNCTION(0, 41),
8124 + MTK_FUNCTION(0, "GPIO41"),
8125 + MTK_FUNCTION(1, "IDDIG"),
8126 + MTK_FUNCTION(2, "URXD1"),
8127 + MTK_FUNCTION(3, "UCTS0"),
8128 + MTK_FUNCTION(4, "KPCOL2"),
8129 + MTK_FUNCTION(5, "SSPM_UTXD_AO"),
8130 + MTK_FUNCTION(6, "MD_INT0"),
8131 + MTK_FUNCTION(7, "DBG_MON_A22")
8135 + MTK_EINT_FUNCTION(0, 42),
8137 + MTK_FUNCTION(0, "GPIO42"),
8138 + MTK_FUNCTION(1, "USB_DRVVBUS"),
8139 + MTK_FUNCTION(2, "UTXD1"),
8140 + MTK_FUNCTION(3, "URTS0"),
8141 + MTK_FUNCTION(4, "KPROW2"),
8142 + MTK_FUNCTION(5, "SSPM_URXD_AO"),
8143 + MTK_FUNCTION(6, "MD_INT1_C2K_UIM0_HOT_PLUG"),
8144 + MTK_FUNCTION(7, "DBG_MON_A23")
8148 + MTK_EINT_FUNCTION(0, 43),
8150 + MTK_FUNCTION(0, "GPIO43"),
8151 + MTK_FUNCTION(1, "DISP_PWM"),
8152 + MTK_FUNCTION(7, "DBG_MON_A24")
8156 + MTK_EINT_FUNCTION(0, 44),
8158 + MTK_FUNCTION(0, "GPIO44"),
8159 + MTK_FUNCTION(1, "DSI_TE"),
8160 + MTK_FUNCTION(7, "DBG_MON_A25")
8164 + MTK_EINT_FUNCTION(0, 45),
8166 + MTK_FUNCTION(0, "GPIO45"),
8167 + MTK_FUNCTION(1, "LCM_RST"),
8168 + MTK_FUNCTION(7, "DBG_MON_A26")
8172 + MTK_EINT_FUNCTION(0, 46),
8174 + MTK_FUNCTION(0, "GPIO46"),
8175 + MTK_FUNCTION(1, "MD_INT2_C2K_UIM1_HOT_PLUG"),
8176 + MTK_FUNCTION(2, "UCTS0"),
8177 + MTK_FUNCTION(3, "UCTS1"),
8178 + MTK_FUNCTION(4, "IDDIG"),
8179 + MTK_FUNCTION(5, "SCL_6306"),
8180 + MTK_FUNCTION(6, "TP_UCTS1_AO"),
8181 + MTK_FUNCTION(7, "DBG_MON_A27")
8185 + MTK_EINT_FUNCTION(0, 47),
8187 + MTK_FUNCTION(0, "GPIO47"),
8188 + MTK_FUNCTION(1, "MD_INT1_C2K_UIM0_HOT_PLUG"),
8189 + MTK_FUNCTION(2, "URTS0"),
8190 + MTK_FUNCTION(3, "URTS1"),
8191 + MTK_FUNCTION(4, "USB_DRVVBUS"),
8192 + MTK_FUNCTION(5, "SDA_6306"),
8193 + MTK_FUNCTION(6, "TP_URTS1_AO"),
8194 + MTK_FUNCTION(7, "DBG_MON_A28")
8198 + MTK_EINT_FUNCTION(0, 48),
8200 + MTK_FUNCTION(0, "GPIO48"),
8201 + MTK_FUNCTION(1, "SCL5"),
8202 + MTK_FUNCTION(7, "DBG_MON_A29")
8206 + MTK_EINT_FUNCTION(0, 49),
8208 + MTK_FUNCTION(0, "GPIO49"),
8209 + MTK_FUNCTION(1, "SDA5"),
8210 + MTK_FUNCTION(7, "DBG_MON_A30")
8214 + MTK_EINT_FUNCTION(0, 50),
8216 + MTK_FUNCTION(0, "GPIO50"),
8217 + MTK_FUNCTION(1, "SCL3"),
8218 + MTK_FUNCTION(2, "URXD1"),
8219 + MTK_FUNCTION(3, "MD_URXD1"),
8220 + MTK_FUNCTION(4, "SSPM_URXD_AO"),
8221 + MTK_FUNCTION(5, "IDDIG"),
8222 + MTK_FUNCTION(6, "TP_URXD1_AO"),
8223 + MTK_FUNCTION(7, "DBG_MON_A31")
8227 + MTK_EINT_FUNCTION(0, 51),
8229 + MTK_FUNCTION(0, "GPIO51"),
8230 + MTK_FUNCTION(1, "SDA3"),
8231 + MTK_FUNCTION(2, "UTXD1"),
8232 + MTK_FUNCTION(3, "MD_UTXD1"),
8233 + MTK_FUNCTION(4, "SSPM_UTXD_AO"),
8234 + MTK_FUNCTION(5, "USB_DRVVBUS"),
8235 + MTK_FUNCTION(6, "TP_UTXD1_AO"),
8236 + MTK_FUNCTION(7, "DBG_MON_A32")
8240 + MTK_EINT_FUNCTION(0, 52),
8242 + MTK_FUNCTION(0, "GPIO52"),
8243 + MTK_FUNCTION(1, "BPI_BUS15")
8247 + MTK_EINT_FUNCTION(0, 53),
8249 + MTK_FUNCTION(0, "GPIO53"),
8250 + MTK_FUNCTION(1, "BPI_BUS13")
8254 + MTK_EINT_FUNCTION(0, 54),
8256 + MTK_FUNCTION(0, "GPIO54"),
8257 + MTK_FUNCTION(1, "BPI_BUS12")
8261 + MTK_EINT_FUNCTION(0, 55),
8263 + MTK_FUNCTION(0, "GPIO55"),
8264 + MTK_FUNCTION(1, "BPI_BUS8")
8268 + MTK_EINT_FUNCTION(0, 56),
8270 + MTK_FUNCTION(0, "GPIO56"),
8271 + MTK_FUNCTION(1, "BPI_BUS9"),
8272 + MTK_FUNCTION(2, "SCL_6306")
8276 + MTK_EINT_FUNCTION(0, 57),
8278 + MTK_FUNCTION(0, "GPIO57"),
8279 + MTK_FUNCTION(1, "BPI_BUS10"),
8280 + MTK_FUNCTION(2, "SDA_6306")
8284 + MTK_EINT_FUNCTION(0, 58),
8286 + MTK_FUNCTION(0, "GPIO58"),
8287 + MTK_FUNCTION(1, "RFIC0_BSI_D2")
8291 + MTK_EINT_FUNCTION(0, 59),
8293 + MTK_FUNCTION(0, "GPIO59"),
8294 + MTK_FUNCTION(1, "RFIC0_BSI_D1")
8298 + MTK_EINT_FUNCTION(0, 60),
8300 + MTK_FUNCTION(0, "GPIO60"),
8301 + MTK_FUNCTION(1, "RFIC0_BSI_D0")
8305 + MTK_EINT_FUNCTION(0, 61),
8307 + MTK_FUNCTION(0, "GPIO61"),
8308 + MTK_FUNCTION(1, "MIPI1_SDATA")
8312 + MTK_EINT_FUNCTION(0, 62),
8314 + MTK_FUNCTION(0, "GPIO62"),
8315 + MTK_FUNCTION(1, "MIPI1_SCLK")
8319 + MTK_EINT_FUNCTION(0, 63),
8321 + MTK_FUNCTION(0, "GPIO63"),
8322 + MTK_FUNCTION(1, "MIPI0_SDATA")
8326 + MTK_EINT_FUNCTION(0, 64),
8328 + MTK_FUNCTION(0, "GPIO64"),
8329 + MTK_FUNCTION(1, "MIPI0_SCLK")
8333 + MTK_EINT_FUNCTION(0, 65),
8335 + MTK_FUNCTION(0, "GPIO65"),
8336 + MTK_FUNCTION(1, "MIPI3_SDATA"),
8337 + MTK_FUNCTION(2, "BPI_BUS16")
8341 + MTK_EINT_FUNCTION(0, 66),
8343 + MTK_FUNCTION(0, "GPIO66"),
8344 + MTK_FUNCTION(1, "MIPI3_SCLK"),
8345 + MTK_FUNCTION(2, "BPI_BUS17")
8349 + MTK_EINT_FUNCTION(0, 67),
8351 + MTK_FUNCTION(0, "GPIO67"),
8352 + MTK_FUNCTION(1, "MIPI2_SDATA")
8356 + MTK_EINT_FUNCTION(0, 68),
8358 + MTK_FUNCTION(0, "GPIO68"),
8359 + MTK_FUNCTION(1, "MIPI2_SCLK")
8363 + MTK_EINT_FUNCTION(0, 69),
8365 + MTK_FUNCTION(0, "GPIO69"),
8366 + MTK_FUNCTION(1, "BPI_BUS7")
8370 + MTK_EINT_FUNCTION(0, 70),
8372 + MTK_FUNCTION(0, "GPIO70"),
8373 + MTK_FUNCTION(1, "BPI_BUS6")
8377 + MTK_EINT_FUNCTION(0, 71),
8379 + MTK_FUNCTION(0, "GPIO71"),
8380 + MTK_FUNCTION(1, "BPI_BUS5")
8384 + MTK_EINT_FUNCTION(0, 72),
8386 + MTK_FUNCTION(0, "GPIO72"),
8387 + MTK_FUNCTION(1, "BPI_BUS4")
8391 + MTK_EINT_FUNCTION(0, 73),
8393 + MTK_FUNCTION(0, "GPIO73"),
8394 + MTK_FUNCTION(1, "BPI_BUS3")
8398 + MTK_EINT_FUNCTION(0, 74),
8400 + MTK_FUNCTION(0, "GPIO74"),
8401 + MTK_FUNCTION(1, "BPI_BUS2")
8405 + MTK_EINT_FUNCTION(0, 75),
8407 + MTK_FUNCTION(0, "GPIO75"),
8408 + MTK_FUNCTION(1, "BPI_BUS1")
8412 + MTK_EINT_FUNCTION(0, 76),
8414 + MTK_FUNCTION(0, "GPIO76"),
8415 + MTK_FUNCTION(1, "BPI_BUS0")
8419 + MTK_EINT_FUNCTION(0, 77),
8421 + MTK_FUNCTION(0, "GPIO77"),
8422 + MTK_FUNCTION(1, "BPI_BUS14")
8426 + MTK_EINT_FUNCTION(0, 78),
8428 + MTK_FUNCTION(0, "GPIO78"),
8429 + MTK_FUNCTION(1, "BPI_BUS11")
8433 + MTK_EINT_FUNCTION(0, 79),
8435 + MTK_FUNCTION(0, "GPIO79"),
8436 + MTK_FUNCTION(1, "BPI_PA_VM1"),
8437 + MTK_FUNCTION(2, "MIPI4_SDATA")
8441 + MTK_EINT_FUNCTION(0, 80),
8443 + MTK_FUNCTION(0, "GPIO80"),
8444 + MTK_FUNCTION(1, "BPI_PA_VM0"),
8445 + MTK_FUNCTION(2, "MIPI4_SCLK")
8449 + MTK_EINT_FUNCTION(0, 81),
8451 + MTK_FUNCTION(0, "GPIO81"),
8452 + MTK_FUNCTION(1, "SDA1"),
8453 + MTK_FUNCTION(7, "DBG_MON_B0")
8457 + MTK_EINT_FUNCTION(0, 82),
8459 + MTK_FUNCTION(0, "GPIO82"),
8460 + MTK_FUNCTION(1, "SDA0"),
8461 + MTK_FUNCTION(7, "DBG_MON_B1")
8465 + MTK_EINT_FUNCTION(0, 83),
8467 + MTK_FUNCTION(0, "GPIO83"),
8468 + MTK_FUNCTION(1, "SCL0"),
8469 + MTK_FUNCTION(7, "DBG_MON_B2")
8473 + MTK_EINT_FUNCTION(0, 84),
8475 + MTK_FUNCTION(0, "GPIO84"),
8476 + MTK_FUNCTION(1, "SCL1"),
8477 + MTK_FUNCTION(7, "DBG_MON_B3")
8481 + MTK_EINT_FUNCTION(0, 85),
8483 + MTK_FUNCTION(0, "GPIO85"),
8484 + MTK_FUNCTION(1, "RFIC0_BSI_EN")
8488 + MTK_EINT_FUNCTION(0, 86),
8490 + MTK_FUNCTION(0, "GPIO86"),
8491 + MTK_FUNCTION(1, "RFIC0_BSI_CK")
8495 + MTK_EINT_FUNCTION(0, 87),
8497 + MTK_FUNCTION(0, "GPIO87"),
8498 + MTK_FUNCTION(2, "MD_INT1_C2K_UIM0_HOT_PLUG"),
8499 + MTK_FUNCTION(3, "CMVREF0"),
8500 + MTK_FUNCTION(4, "MD_URXD0"),
8501 + MTK_FUNCTION(5, "AGPS_SYNC"),
8502 + MTK_FUNCTION(6, "EXT_FRAME_SYNC")
8506 + MTK_EINT_FUNCTION(0, 88),
8508 + MTK_FUNCTION(0, "GPIO88"),
8509 + MTK_FUNCTION(1, "CMMCLK3"),
8510 + MTK_FUNCTION(2, "MD_INT2_C2K_UIM1_HOT_PLUG"),
8511 + MTK_FUNCTION(3, "CMVREF1"),
8512 + MTK_FUNCTION(4, "MD_UTXD0"),
8513 + MTK_FUNCTION(5, "AGPS_SYNC"),
8514 + MTK_FUNCTION(6, "DVFSRC_EXT_REQ")
8518 + MTK_EINT_FUNCTION(0, 89),
8520 + MTK_FUNCTION(0, "GPIO89"),
8521 + MTK_FUNCTION(1, "SRCLKENAI0"),
8522 + MTK_FUNCTION(2, "PWM2"),
8523 + MTK_FUNCTION(3, "MD_INT0"),
8524 + MTK_FUNCTION(4, "USB_DRVVBUS"),
8525 + MTK_FUNCTION(5, "SCL_6306"),
8526 + MTK_FUNCTION(6, "TP_GPIO4_AO"),
8527 + MTK_FUNCTION(7, "DBG_MON_B21")
8531 + MTK_EINT_FUNCTION(0, 90),
8533 + MTK_FUNCTION(0, "GPIO90"),
8534 + MTK_FUNCTION(1, "URXD1"),
8535 + MTK_FUNCTION(2, "PWM0"),
8536 + MTK_FUNCTION(3, "MD_INT2_C2K_UIM1_HOT_PLUG"),
8537 + MTK_FUNCTION(4, "ANT_SEL4"),
8538 + MTK_FUNCTION(5, "USB_DRVVBUS"),
8539 + MTK_FUNCTION(6, "I2S2_BCK"),
8540 + MTK_FUNCTION(7, "DBG_MON_B4")
8544 + MTK_EINT_FUNCTION(0, 91),
8546 + MTK_FUNCTION(0, "GPIO91"),
8547 + MTK_FUNCTION(1, "KPROW1"),
8548 + MTK_FUNCTION(2, "PWM2"),
8549 + MTK_FUNCTION(3, "MD_INT0"),
8550 + MTK_FUNCTION(4, "ANT_SEL5"),
8551 + MTK_FUNCTION(5, "IDDIG"),
8552 + MTK_FUNCTION(6, "I2S2_LRCK"),
8553 + MTK_FUNCTION(7, "DBG_MON_B5")
8557 + MTK_EINT_FUNCTION(0, 92),
8559 + MTK_FUNCTION(0, "GPIO92"),
8560 + MTK_FUNCTION(1, "KPROW0"),
8561 + MTK_FUNCTION(5, "DVFSRC_EXT_REQ"),
8562 + MTK_FUNCTION(6, "I2S2_DI"),
8563 + MTK_FUNCTION(7, "DBG_MON_B6")
8567 + MTK_EINT_FUNCTION(0, 93),
8569 + MTK_FUNCTION(0, "GPIO93"),
8570 + MTK_FUNCTION(1, "KPCOL0"),
8571 + MTK_FUNCTION(7, "DBG_MON_B7")
8575 + MTK_EINT_FUNCTION(0, 94),
8577 + MTK_FUNCTION(0, "GPIO94"),
8578 + MTK_FUNCTION(1, "KPCOL1"),
8579 + MTK_FUNCTION(5, "CMFLASH"),
8580 + MTK_FUNCTION(6, "CMVREF0"),
8581 + MTK_FUNCTION(7, "DBG_MON_B8")
8585 + MTK_EINT_FUNCTION(0, 95),
8587 + MTK_FUNCTION(0, "GPIO95"),
8588 + MTK_FUNCTION(1, "URXD0"),
8589 + MTK_FUNCTION(2, "UTXD0"),
8590 + MTK_FUNCTION(3, "MD_URXD0"),
8591 + MTK_FUNCTION(4, "PTA_RXD"),
8592 + MTK_FUNCTION(5, "SSPM_URXD_AO"),
8593 + MTK_FUNCTION(6, "WIFI_RXD")
8597 + MTK_EINT_FUNCTION(0, 96),
8599 + MTK_FUNCTION(0, "GPIO96"),
8600 + MTK_FUNCTION(1, "UTXD0"),
8601 + MTK_FUNCTION(2, "URXD0"),
8602 + MTK_FUNCTION(3, "MD_UTXD0"),
8603 + MTK_FUNCTION(4, "PTA_TXD"),
8604 + MTK_FUNCTION(5, "SSPM_UTXD_AO"),
8605 + MTK_FUNCTION(6, "WIFI_TXD")
8609 + MTK_EINT_FUNCTION(0, 97),
8611 + MTK_FUNCTION(0, "GPIO97"),
8612 + MTK_FUNCTION(1, "UCTS0"),
8613 + MTK_FUNCTION(2, "I2S1_MCK"),
8614 + MTK_FUNCTION(3, "CONN_MCU_TDO"),
8615 + MTK_FUNCTION(4, "SPI5_MI"),
8616 + MTK_FUNCTION(5, "SCL_6306"),
8617 + MTK_FUNCTION(6, "MCUPM_JTAG_TDO"),
8618 + MTK_FUNCTION(7, "DBG_MON_B15")
8622 + MTK_EINT_FUNCTION(0, 98),
8624 + MTK_FUNCTION(0, "GPIO98"),
8625 + MTK_FUNCTION(1, "URTS0"),
8626 + MTK_FUNCTION(2, "I2S1_BCK"),
8627 + MTK_FUNCTION(3, "CONN_MCU_TMS"),
8628 + MTK_FUNCTION(4, "SPI5_CSB"),
8629 + MTK_FUNCTION(6, "MCUPM_JTAG_TMS"),
8630 + MTK_FUNCTION(7, "DBG_MON_B16")
8634 + MTK_EINT_FUNCTION(0, 99),
8636 + MTK_FUNCTION(0, "GPIO99"),
8637 + MTK_FUNCTION(1, "CMMCLK0"),
8638 + MTK_FUNCTION(4, "AUXIF_CLK"),
8639 + MTK_FUNCTION(5, "PTA_RXD"),
8640 + MTK_FUNCTION(6, "CONN_UART0_RXD"),
8641 + MTK_FUNCTION(7, "DBG_MON_B17")
8646 + MTK_EINT_FUNCTION(0, 100),
8648 + MTK_FUNCTION(0, "GPIO100"),
8649 + MTK_FUNCTION(1, "CMMCLK1"),
8650 + MTK_FUNCTION(4, "AUXIF_ST"),
8651 + MTK_FUNCTION(5, "PTA_TXD"),
8652 + MTK_FUNCTION(6, "CONN_UART0_TXD"),
8653 + MTK_FUNCTION(7, "DBG_MON_B18")
8657 + MTK_EINT_FUNCTION(0, 101),
8659 + MTK_FUNCTION(0, "GPIO101"),
8660 + MTK_FUNCTION(1, "CMFLASH"),
8661 + MTK_FUNCTION(2, "I2S1_LRCK"),
8662 + MTK_FUNCTION(3, "CONN_MCU_TCK"),
8663 + MTK_FUNCTION(4, "SPI5_MO"),
8664 + MTK_FUNCTION(6, "MCUPM_JTAG_TCK"),
8665 + MTK_FUNCTION(7, "DBG_MON_B19")
8669 + MTK_EINT_FUNCTION(0, 102),
8671 + MTK_FUNCTION(0, "GPIO102"),
8672 + MTK_FUNCTION(1, "CMVREF0"),
8673 + MTK_FUNCTION(2, "I2S1_DO"),
8674 + MTK_FUNCTION(3, "CONN_MCU_TDI"),
8675 + MTK_FUNCTION(4, "SPI5_CLK"),
8676 + MTK_FUNCTION(5, "AGPS_SYNC"),
8677 + MTK_FUNCTION(6, "MCUPM_JTAG_TDI"),
8678 + MTK_FUNCTION(7, "DBG_MON_B20")
8682 + MTK_EINT_FUNCTION(0, 103),
8684 + MTK_FUNCTION(0, "GPIO103"),
8685 + MTK_FUNCTION(1, "SCL2"),
8686 + MTK_FUNCTION(2, "TP_UTXD1_AO"),
8687 + MTK_FUNCTION(3, "MD_UTXD0"),
8688 + MTK_FUNCTION(4, "MD_UTXD1"),
8689 + MTK_FUNCTION(5, "TP_URTS2_AO"),
8690 + MTK_FUNCTION(6, "WIFI_TXD"),
8691 + MTK_FUNCTION(7, "DBG_MON_B25")
8695 + MTK_EINT_FUNCTION(0, 104),
8697 + MTK_FUNCTION(0, "GPIO104"),
8698 + MTK_FUNCTION(1, "SDA2"),
8699 + MTK_FUNCTION(2, "TP_URXD1_AO"),
8700 + MTK_FUNCTION(3, "MD_URXD0"),
8701 + MTK_FUNCTION(4, "MD_URXD1"),
8702 + MTK_FUNCTION(5, "TP_UCTS2_AO"),
8703 + MTK_FUNCTION(6, "WIFI_RXD"),
8704 + MTK_FUNCTION(7, "DBG_MON_B26")
8708 + MTK_EINT_FUNCTION(0, 105),
8710 + MTK_FUNCTION(0, "GPIO105"),
8711 + MTK_FUNCTION(1, "SCL4"),
8712 + MTK_FUNCTION(3, "MD_UTXD1"),
8713 + MTK_FUNCTION(4, "MD_UTXD0"),
8714 + MTK_FUNCTION(5, "TP_UTXD2_AO"),
8715 + MTK_FUNCTION(6, "PTA_TXD"),
8716 + MTK_FUNCTION(7, "DBG_MON_B27")
8720 + MTK_EINT_FUNCTION(0, 106),
8722 + MTK_FUNCTION(0, "GPIO106"),
8723 + MTK_FUNCTION(1, "SDA4"),
8724 + MTK_FUNCTION(3, "MD_URXD1"),
8725 + MTK_FUNCTION(4, "MD_URXD0"),
8726 + MTK_FUNCTION(5, "TP_URXD2_AO"),
8727 + MTK_FUNCTION(6, "PTA_RXD"),
8728 + MTK_FUNCTION(7, "DBG_MON_B28")
8732 + MTK_EINT_FUNCTION(0, 107),
8734 + MTK_FUNCTION(0, "GPIO107"),
8735 + MTK_FUNCTION(1, "UTXD1"),
8736 + MTK_FUNCTION(2, "MD_UTXD0"),
8737 + MTK_FUNCTION(3, "SDA_6306"),
8738 + MTK_FUNCTION(4, "KPCOL3"),
8739 + MTK_FUNCTION(5, "CMVREF0"),
8740 + MTK_FUNCTION(6, "URTS0"),
8741 + MTK_FUNCTION(7, "DBG_MON_B29")
8745 + MTK_EINT_FUNCTION(0, 108),
8747 + MTK_FUNCTION(0, "GPIO108"),
8748 + MTK_FUNCTION(1, "CMMCLK2"),
8749 + MTK_FUNCTION(2, "MD_INT0"),
8750 + MTK_FUNCTION(3, "CONN_MCU_DBGACK_N"),
8751 + MTK_FUNCTION(4, "KPCOL4"),
8752 + MTK_FUNCTION(6, "I2S3_MCK"),
8753 + MTK_FUNCTION(7, "DBG_MON_B30")
8757 + MTK_EINT_FUNCTION(0, 109),
8759 + MTK_FUNCTION(0, "GPIO109"),
8760 + MTK_FUNCTION(1, "URXD1"),
8761 + MTK_FUNCTION(2, "MD_URXD0"),
8762 + MTK_FUNCTION(3, "ANT_SEL7"),
8763 + MTK_FUNCTION(4, "KPCOL5"),
8764 + MTK_FUNCTION(5, "CMVREF1"),
8765 + MTK_FUNCTION(6, "UCTS0"),
8766 + MTK_FUNCTION(7, "DBG_MON_B31")
8770 + MTK_EINT_FUNCTION(0, 110),
8772 + MTK_FUNCTION(0, "GPIO110"),
8773 + MTK_FUNCTION(1, "ANT_SEL0"),
8774 + MTK_FUNCTION(2, "CLKM0"),
8775 + MTK_FUNCTION(3, "PWM3"),
8776 + MTK_FUNCTION(4, "MD_INT0"),
8777 + MTK_FUNCTION(5, "IDDIG"),
8778 + MTK_FUNCTION(6, "I2S3_BCK"),
8779 + MTK_FUNCTION(7, "DBG_MON_B13")
8783 + MTK_EINT_FUNCTION(0, 111),
8785 + MTK_FUNCTION(0, "GPIO111"),
8786 + MTK_FUNCTION(1, "ANT_SEL1"),
8787 + MTK_FUNCTION(2, "CLKM1"),
8788 + MTK_FUNCTION(3, "PWM4"),
8789 + MTK_FUNCTION(4, "PTA_RXD"),
8790 + MTK_FUNCTION(5, "CMVREF0"),
8791 + MTK_FUNCTION(6, "I2S3_LRCK"),
8792 + MTK_FUNCTION(7, "DBG_MON_B14")
8796 + MTK_EINT_FUNCTION(0, 112),
8798 + MTK_FUNCTION(0, "GPIO112"),
8799 + MTK_FUNCTION(1, "ANT_SEL2"),
8800 + MTK_FUNCTION(2, "CLKM2"),
8801 + MTK_FUNCTION(3, "PWM5"),
8802 + MTK_FUNCTION(4, "PTA_TXD"),
8803 + MTK_FUNCTION(5, "CMVREF1"),
8804 + MTK_FUNCTION(6, "I2S3_DO")
8808 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8810 + MTK_FUNCTION(0, "GPIO113"),
8811 + MTK_FUNCTION(1, "CONN_TOP_CLK")
8815 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8817 + MTK_FUNCTION(0, "GPIO114"),
8818 + MTK_FUNCTION(1, "CONN_TOP_DATA")
8822 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8824 + MTK_FUNCTION(0, "GPIO115"),
8825 + MTK_FUNCTION(1, "CONN_BT_CLK")
8829 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8831 + MTK_FUNCTION(0, "GPIO116"),
8832 + MTK_FUNCTION(1, "CONN_BT_DATA")
8836 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8838 + MTK_FUNCTION(0, "GPIO117"),
8839 + MTK_FUNCTION(1, "CONN_WF_CTRL0")
8843 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8845 + MTK_FUNCTION(0, "GPIO118"),
8846 + MTK_FUNCTION(1, "CONN_WF_CTRL1")
8850 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8852 + MTK_FUNCTION(0, "GPIO119"),
8853 + MTK_FUNCTION(1, "CONN_WF_CTRL2")
8857 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8859 + MTK_FUNCTION(0, "GPIO120"),
8860 + MTK_FUNCTION(1, "CONN_WB_PTA")
8864 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8866 + MTK_FUNCTION(0, "GPIO121"),
8867 + MTK_FUNCTION(1, "CONN_HRST_B")
8871 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8873 + MTK_FUNCTION(0, "GPIO122"),
8874 + MTK_FUNCTION(1, "MSDC0_CMD"),
8875 + MTK_FUNCTION(2, "MSDC0_CMD")
8879 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8881 + MTK_FUNCTION(0, "GPIO123"),
8882 + MTK_FUNCTION(1, "MSDC0_DAT0"),
8883 + MTK_FUNCTION(2, "MSDC0_DAT4")
8887 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8889 + MTK_FUNCTION(0, "GPIO124"),
8890 + MTK_FUNCTION(1, "MSDC0_CLK"),
8891 + MTK_FUNCTION(2, "MSDC0_CLK")
8895 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8897 + MTK_FUNCTION(0, "GPIO125"),
8898 + MTK_FUNCTION(1, "MSDC0_DAT2"),
8899 + MTK_FUNCTION(2, "MSDC0_DAT5")
8903 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8905 + MTK_FUNCTION(0, "GPIO126"),
8906 + MTK_FUNCTION(1, "MSDC0_DAT4"),
8907 + MTK_FUNCTION(2, "MSDC0_DAT2")
8911 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8913 + MTK_FUNCTION(0, "GPIO127"),
8914 + MTK_FUNCTION(1, "MSDC0_DAT6"),
8915 + MTK_FUNCTION(2, "MSDC0_DAT1")
8919 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8921 + MTK_FUNCTION(0, "GPIO128"),
8922 + MTK_FUNCTION(1, "MSDC0_DAT1"),
8923 + MTK_FUNCTION(2, "MSDC0_DAT6")
8927 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8929 + MTK_FUNCTION(0, "GPIO129"),
8930 + MTK_FUNCTION(1, "MSDC0_DAT5"),
8931 + MTK_FUNCTION(2, "MSDC0_DAT0")
8935 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8937 + MTK_FUNCTION(0, "GPIO130"),
8938 + MTK_FUNCTION(1, "MSDC0_DAT7"),
8939 + MTK_FUNCTION(2, "MSDC0_DAT7")
8943 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8945 + MTK_FUNCTION(0, "GPIO131"),
8946 + MTK_FUNCTION(1, "MSDC0_DSL"),
8947 + MTK_FUNCTION(2, "MSDC0_DSL")
8951 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8953 + MTK_FUNCTION(0, "GPIO132"),
8954 + MTK_FUNCTION(1, "MSDC0_DAT3"),
8955 + MTK_FUNCTION(2, "MSDC0_DAT3")
8959 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8961 + MTK_FUNCTION(0, "GPIO133"),
8962 + MTK_FUNCTION(1, "MSDC0_RSTB"),
8963 + MTK_FUNCTION(2, "MSDC0_RSTB")
8967 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8969 + MTK_FUNCTION(0, "GPIO134"),
8970 + MTK_FUNCTION(1, "RTC32K_CK")
8974 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8976 + MTK_FUNCTION(0, "GPIO135"),
8977 + MTK_FUNCTION(1, "WATCHDOG")
8981 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8983 + MTK_FUNCTION(0, "GPIO136"),
8984 + MTK_FUNCTION(1, "AUD_CLK_MOSI"),
8985 + MTK_FUNCTION(2, "AUD_CLK_MISO"),
8986 + MTK_FUNCTION(3, "I2S1_MCK")
8990 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8992 + MTK_FUNCTION(0, "GPIO137"),
8993 + MTK_FUNCTION(1, "AUD_SYNC_MOSI"),
8994 + MTK_FUNCTION(2, "AUD_SYNC_MISO"),
8995 + MTK_FUNCTION(3, "I2S1_BCK")
8999 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9001 + MTK_FUNCTION(0, "GPIO138"),
9002 + MTK_FUNCTION(1, "AUD_DAT_MOSI0"),
9003 + MTK_FUNCTION(2, "AUD_DAT_MISO0"),
9004 + MTK_FUNCTION(3, "I2S1_LRCK")
9008 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9010 + MTK_FUNCTION(0, "GPIO139"),
9011 + MTK_FUNCTION(1, "AUD_DAT_MOSI1"),
9012 + MTK_FUNCTION(2, "AUD_DAT_MISO1"),
9013 + MTK_FUNCTION(3, "I2S1_DO")
9017 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9019 + MTK_FUNCTION(0, "GPIO140"),
9020 + MTK_FUNCTION(1, "AUD_CLK_MISO"),
9021 + MTK_FUNCTION(2, "AUD_CLK_MOSI"),
9022 + MTK_FUNCTION(3, "I2S2_MCK")
9026 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9028 + MTK_FUNCTION(0, "GPIO141"),
9029 + MTK_FUNCTION(1, "AUD_SYNC_MISO"),
9030 + MTK_FUNCTION(2, "AUD_SYNC_MOSI"),
9031 + MTK_FUNCTION(3, "I2S2_BCK")
9035 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9037 + MTK_FUNCTION(0, "GPIO142"),
9038 + MTK_FUNCTION(1, "AUD_DAT_MISO0"),
9039 + MTK_FUNCTION(2, "AUD_DAT_MOSI0"),
9040 + MTK_FUNCTION(3, "I2S2_LRCK")
9044 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9046 + MTK_FUNCTION(0, "GPIO143"),
9047 + MTK_FUNCTION(1, "AUD_DAT_MISO1"),
9048 + MTK_FUNCTION(2, "AUD_DAT_MOSI1"),
9049 + MTK_FUNCTION(3, "I2S2_DI")
9053 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9055 + MTK_FUNCTION(0, "GPIO144"),
9056 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
9057 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
9061 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9063 + MTK_FUNCTION(0, "GPIO145"),
9064 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
9068 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9070 + MTK_FUNCTION(0, "GPIO146"),
9071 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
9072 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
9076 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9078 + MTK_FUNCTION(0, "GPIO147"),
9079 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
9083 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9085 + MTK_FUNCTION(0, "GPIO148"),
9086 + MTK_FUNCTION(1, "SRCLKENA0")
9090 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9092 + MTK_FUNCTION(0, "GPIO149"),
9093 + MTK_FUNCTION(1, "SRCLKENA1")
9097 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9099 + MTK_FUNCTION(0, "GPIO150"),
9100 + MTK_FUNCTION(1, "PWM0"),
9101 + MTK_FUNCTION(2, "CMFLASH"),
9102 + MTK_FUNCTION(3, "ANT_SEL3"),
9103 + MTK_FUNCTION(5, "MD_URXD0"),
9104 + MTK_FUNCTION(6, "TP_URXD2_AO")
9108 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9110 + MTK_FUNCTION(0, "GPIO151"),
9111 + MTK_FUNCTION(1, "PWM1"),
9112 + MTK_FUNCTION(2, "CMVREF0"),
9113 + MTK_FUNCTION(3, "ANT_SEL4"),
9114 + MTK_FUNCTION(5, "MD_UTXD0"),
9115 + MTK_FUNCTION(6, "TP_UTXD2_AO")
9119 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9121 + MTK_FUNCTION(0, "GPIO152"),
9122 + MTK_FUNCTION(1, "PWM2"),
9123 + MTK_FUNCTION(2, "CMVREF1"),
9124 + MTK_FUNCTION(3, "ANT_SEL5"),
9125 + MTK_FUNCTION(5, "MD_URXD1"),
9126 + MTK_FUNCTION(6, "TP_UCTS1_AO")
9130 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9132 + MTK_FUNCTION(0, "GPIO153"),
9133 + MTK_FUNCTION(1, "PWM3"),
9134 + MTK_FUNCTION(2, "CLKM0"),
9135 + MTK_FUNCTION(3, "ANT_SEL6"),
9136 + MTK_FUNCTION(5, "MD_UTXD1"),
9137 + MTK_FUNCTION(6, "TP_URTS1_AO")
9141 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9143 + MTK_FUNCTION(0, "GPIO154"),
9144 + MTK_FUNCTION(1, "PWM5"),
9145 + MTK_FUNCTION(2, "CLKM2"),
9146 + MTK_FUNCTION(3, "USB_DRVVBUS"),
9147 + MTK_FUNCTION(5, "PTA_TXD"),
9148 + MTK_FUNCTION(6, "CONN_UART0_TXD")
9152 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9154 + MTK_FUNCTION(0, "GPIO155"),
9155 + MTK_FUNCTION(1, "SPI0_MI"),
9156 + MTK_FUNCTION(2, "IDDIG"),
9157 + MTK_FUNCTION(3, "AGPS_SYNC"),
9158 + MTK_FUNCTION(4, "TP_GPIO0_AO"),
9159 + MTK_FUNCTION(5, "MFG_JTAG_TDO"),
9160 + MTK_FUNCTION(6, "DFD_TDO"),
9161 + MTK_FUNCTION(7, "JTDO_SEL1")
9165 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9167 + MTK_FUNCTION(0, "GPIO156"),
9168 + MTK_FUNCTION(1, "SPI0_CSB"),
9169 + MTK_FUNCTION(2, "USB_DRVVBUS"),
9170 + MTK_FUNCTION(3, "DVFSRC_EXT_REQ"),
9171 + MTK_FUNCTION(4, "TP_GPIO1_AO"),
9172 + MTK_FUNCTION(5, "MFG_JTAG_TMS"),
9173 + MTK_FUNCTION(6, "DFD_TMS"),
9174 + MTK_FUNCTION(7, "JTMS_SEL1")
9178 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9180 + MTK_FUNCTION(0, "GPIO157"),
9181 + MTK_FUNCTION(1, "SPI0_MO"),
9182 + MTK_FUNCTION(2, "MD_INT1_C2K_UIM0_HOT_PLUG"),
9183 + MTK_FUNCTION(3, "CLKM0"),
9184 + MTK_FUNCTION(4, "TP_GPIO2_AO"),
9185 + MTK_FUNCTION(5, "MFG_JTAG_TDI"),
9186 + MTK_FUNCTION(6, "DFD_TDI"),
9187 + MTK_FUNCTION(7, "JTDI_SEL1")
9191 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9193 + MTK_FUNCTION(0, "GPIO158"),
9194 + MTK_FUNCTION(1, "SPI0_CLK"),
9195 + MTK_FUNCTION(2, "MD_INT2_C2K_UIM1_HOT_PLUG"),
9196 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
9197 + MTK_FUNCTION(4, "TP_GPIO3_AO"),
9198 + MTK_FUNCTION(5, "MFG_JTAG_TCK"),
9199 + MTK_FUNCTION(6, "DFD_TCK_XI"),
9200 + MTK_FUNCTION(7, "JTCK_SEL1")
9204 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9206 + MTK_FUNCTION(0, "GPIO159"),
9207 + MTK_FUNCTION(1, "PWM4"),
9208 + MTK_FUNCTION(2, "CLKM1"),
9209 + MTK_FUNCTION(3, "ANT_SEL7"),
9210 + MTK_FUNCTION(5, "PTA_RXD"),
9211 + MTK_FUNCTION(6, "CONN_UART0_RXD")
9215 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9217 + MTK_FUNCTION(0, "GPIO160"),
9218 + MTK_FUNCTION(1, "CLKM0"),
9219 + MTK_FUNCTION(2, "PWM2"),
9220 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
9221 + MTK_FUNCTION(4, "TP_GPIO5_AO"),
9222 + MTK_FUNCTION(5, "AGPS_SYNC"),
9223 + MTK_FUNCTION(6, "DVFSRC_EXT_REQ")
9227 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9229 + MTK_FUNCTION(0, "GPIO161"),
9230 + MTK_FUNCTION(1, "SCL6"),
9231 + MTK_FUNCTION(2, "SCL_6306"),
9232 + MTK_FUNCTION(3, "TP_GPIO6_AO"),
9233 + MTK_FUNCTION(4, "KPCOL6"),
9234 + MTK_FUNCTION(5, "PTA_RXD"),
9235 + MTK_FUNCTION(6, "CONN_UART0_RXD")
9239 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9241 + MTK_FUNCTION(0, "GPIO162"),
9242 + MTK_FUNCTION(1, "SDA6"),
9243 + MTK_FUNCTION(2, "SDA_6306"),
9244 + MTK_FUNCTION(3, "TP_GPIO7_AO"),
9245 + MTK_FUNCTION(4, "KPCOL7"),
9246 + MTK_FUNCTION(5, "PTA_TXD"),
9247 + MTK_FUNCTION(6, "CONN_UART0_TXD")
9251 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9253 + MTK_FUNCTION(0, "GPIO163")
9257 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9259 + MTK_FUNCTION(0, "GPIO164")
9263 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9265 + MTK_FUNCTION(0, "GPIO165")
9269 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9271 + MTK_FUNCTION(0, "GPIO166")
9275 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9277 + MTK_FUNCTION(0, "GPIO167")
9281 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9283 + MTK_FUNCTION(0, "GPIO168")
9287 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9289 + MTK_FUNCTION(0, "GPIO169")
9293 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9295 + MTK_FUNCTION(0, "GPIO170")
9299 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9301 + MTK_FUNCTION(0, "GPIO171")
9305 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9307 + MTK_FUNCTION(0, "GPIO172")
9311 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9313 + MTK_FUNCTION(0, "GPIO173")
9317 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9319 + MTK_FUNCTION(0, "GPIO174")
9323 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9325 + MTK_FUNCTION(0, "GPIO175")
9329 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9331 + MTK_FUNCTION(0, "GPIO176")
9335 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9337 + MTK_FUNCTION(0, "GPIO177")
9341 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9343 + MTK_FUNCTION(0, "GPIO178")
9347 + MTK_EINT_FUNCTION(0, 151),
9349 + MTK_FUNCTION(0, "GPIO179")
9353 +#endif /* __PINCTRL_MTK_MT6765_H */
9354 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6797.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6797.h
9355 new file mode 100644
9356 index 000000000000..86ab78e80326
9358 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6797.h
9360 +/* SPDX-License-Identifier: GPL-2.0 */
9362 + * Based on pinctrl-mtk-mt6765.h
9364 + * Copyright (C) 2018 MediaTek Inc.
9366 + * Author: ZH Chen <zh.chen@mediatek.com>
9368 + * Copyright (c) 2018 Manivannan Sadhasivam
9371 +#ifndef __PINCTRL_MTK_MT6797_H
9372 +#define __PINCTRL_MTK_MT6797_H
9374 +#include "pinctrl-paris.h"
9376 +static const struct mtk_pin_desc mtk_pins_mt6797[] = {
9379 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9381 + MTK_FUNCTION(0, "GPIO0"),
9382 + MTK_FUNCTION(1, "CSI0A_L0P_T0A")
9386 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9388 + MTK_FUNCTION(0, "GPIO1"),
9389 + MTK_FUNCTION(1, "CSI0A_L0N_T0B")
9393 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9395 + MTK_FUNCTION(0, "GPIO2"),
9396 + MTK_FUNCTION(1, "CSI0A_L1P_T0C")
9400 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9402 + MTK_FUNCTION(0, "GPIO3"),
9403 + MTK_FUNCTION(1, "CSI0A_L1N_T1A")
9407 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9409 + MTK_FUNCTION(0, "GPIO4"),
9410 + MTK_FUNCTION(1, "CSI0A_L2P_T1B")
9414 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9416 + MTK_FUNCTION(0, "GPIO5"),
9417 + MTK_FUNCTION(1, "CSI0A_L2N_T1C")
9421 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9423 + MTK_FUNCTION(0, "GPIO6"),
9424 + MTK_FUNCTION(1, "CSI0B_L0P_T0A")
9428 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9430 + MTK_FUNCTION(0, "GPIO7"),
9431 + MTK_FUNCTION(1, "CSI0B_L0N_T0B")
9435 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9437 + MTK_FUNCTION(0, "GPIO8"),
9438 + MTK_FUNCTION(1, "CSI0B_L1P_T0C")
9442 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9444 + MTK_FUNCTION(0, "GPIO9"),
9445 + MTK_FUNCTION(1, "CSI0B_L1N_T1A")
9449 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9451 + MTK_FUNCTION(0, "GPIO10"),
9452 + MTK_FUNCTION(1, "CSI1A_L0P_T0A")
9456 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9458 + MTK_FUNCTION(0, "GPIO11"),
9459 + MTK_FUNCTION(1, "CSI1A_L0N_T0B")
9463 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9465 + MTK_FUNCTION(0, "GPIO12"),
9466 + MTK_FUNCTION(1, "CSI1A_L1P_T0C")
9470 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9472 + MTK_FUNCTION(0, "GPIO13"),
9473 + MTK_FUNCTION(1, "CSI1A_L1N_T1A")
9477 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9479 + MTK_FUNCTION(0, "GPIO14"),
9480 + MTK_FUNCTION(1, "CSI1A_L2P_T1B")
9484 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9486 + MTK_FUNCTION(0, "GPIO15"),
9487 + MTK_FUNCTION(1, "CSI1A_L2N_T1C")
9491 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9493 + MTK_FUNCTION(0, "GPIO16"),
9494 + MTK_FUNCTION(1, "CSI1B_L0P_T0A")
9498 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9500 + MTK_FUNCTION(0, "GPIO17"),
9501 + MTK_FUNCTION(1, "CSI1B_L0N_T0B")
9505 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9507 + MTK_FUNCTION(0, "GPIO18"),
9508 + MTK_FUNCTION(1, "CSI1B_L1P_T0C")
9512 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9514 + MTK_FUNCTION(0, "GPIO19"),
9515 + MTK_FUNCTION(1, "CSI1B_L1N_T1A")
9519 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9521 + MTK_FUNCTION(0, "GPIO20"),
9522 + MTK_FUNCTION(1, "CSI1B_L2P_T1B")
9526 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9528 + MTK_FUNCTION(0, "GPIO21"),
9529 + MTK_FUNCTION(1, "CSI1B_L2N_T1C")
9533 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9535 + MTK_FUNCTION(0, "GPIO22"),
9536 + MTK_FUNCTION(1, "CSI2_L0P_T0A")
9540 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9542 + MTK_FUNCTION(0, "GPIO23"),
9543 + MTK_FUNCTION(1, "CSI2_L0N_T0B")
9547 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9549 + MTK_FUNCTION(0, "GPIO24"),
9550 + MTK_FUNCTION(1, "CSI2_L1P_T0C")
9554 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9556 + MTK_FUNCTION(0, "GPIO25"),
9557 + MTK_FUNCTION(1, "CSI2_L1N_T1A")
9561 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9563 + MTK_FUNCTION(0, "GPIO26"),
9564 + MTK_FUNCTION(1, "CSI2_L2P_T1B")
9568 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9570 + MTK_FUNCTION(0, "GPIO27"),
9571 + MTK_FUNCTION(1, "CSI2_L2N_T1C")
9575 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9577 + MTK_FUNCTION(0, "GPIO28"),
9578 + MTK_FUNCTION(1, "SPI5_CLK_A"),
9579 + MTK_FUNCTION(2, "IRTX_OUT"),
9580 + MTK_FUNCTION(3, "UDI_TDO"),
9581 + MTK_FUNCTION(4, "SCP_JTAG_TDO"),
9582 + MTK_FUNCTION(5, "CONN_MCU_TDO"),
9583 + MTK_FUNCTION(6, "PWM_A"),
9584 + MTK_FUNCTION(7, "C2K_DM_OTDO")
9588 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9590 + MTK_FUNCTION(0, "GPIO29"),
9591 + MTK_FUNCTION(1, "SPI5_MI_A"),
9592 + MTK_FUNCTION(2, "DAP_SIB1_SWD"),
9593 + MTK_FUNCTION(3, "UDI_TMS"),
9594 + MTK_FUNCTION(4, "SCP_JTAG_TMS"),
9595 + MTK_FUNCTION(5, "CONN_MCU_TMS"),
9596 + MTK_FUNCTION(6, "CONN_MCU_AICE_TMSC"),
9597 + MTK_FUNCTION(7, "C2K_DM_OTMS")
9601 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9603 + MTK_FUNCTION(0, "GPIO30"),
9604 + MTK_FUNCTION(1, "CMMCLK0"),
9605 + MTK_FUNCTION(7, "MD_CLKM0")
9609 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9611 + MTK_FUNCTION(0, "GPIO31"),
9612 + MTK_FUNCTION(1, "CMMCLK1"),
9613 + MTK_FUNCTION(7, "MD_CLKM1")
9617 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9619 + MTK_FUNCTION(0, "GPIO32"),
9620 + MTK_FUNCTION(1, "SPI5_CS_A"),
9621 + MTK_FUNCTION(2, "DAP_SIB1_SWCK"),
9622 + MTK_FUNCTION(3, "UDI_TCK_XI"),
9623 + MTK_FUNCTION(4, "SCP_JTAG_TCK"),
9624 + MTK_FUNCTION(5, "CONN_MCU_TCK"),
9625 + MTK_FUNCTION(6, "CONN_MCU_AICE_TCKC"),
9626 + MTK_FUNCTION(7, "C2K_DM_OTCK")
9630 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9632 + MTK_FUNCTION(0, "GPIO33"),
9633 + MTK_FUNCTION(1, "SPI5_MO_A"),
9634 + MTK_FUNCTION(2, "CMFLASH"),
9635 + MTK_FUNCTION(3, "UDI_TDI"),
9636 + MTK_FUNCTION(4, "SCP_JTAG_TDI"),
9637 + MTK_FUNCTION(5, "CONN_MCU_TDI"),
9638 + MTK_FUNCTION(6, "MD_URXD0"),
9639 + MTK_FUNCTION(7, "C2K_DM_OTDI")
9643 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9645 + MTK_FUNCTION(0, "GPIO34"),
9646 + MTK_FUNCTION(1, "CMFLASH"),
9647 + MTK_FUNCTION(2, "CLKM0"),
9648 + MTK_FUNCTION(3, "UDI_NTRST"),
9649 + MTK_FUNCTION(4, "SCP_JTAG_TRSTN"),
9650 + MTK_FUNCTION(5, "CONN_MCU_TRST_B"),
9651 + MTK_FUNCTION(6, "MD_UTXD0"),
9652 + MTK_FUNCTION(7, "C2K_DM_JTINTP")
9656 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9658 + MTK_FUNCTION(0, "GPIO35"),
9659 + MTK_FUNCTION(1, "CMMCLK3"),
9660 + MTK_FUNCTION(2, "CLKM1"),
9661 + MTK_FUNCTION(3, "MD_URXD1"),
9662 + MTK_FUNCTION(4, "PTA_RXD"),
9663 + MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"),
9664 + MTK_FUNCTION(6, "PWM_B"),
9665 + MTK_FUNCTION(7, "PCC_PPC_IO")
9669 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9671 + MTK_FUNCTION(0, "GPIO36"),
9672 + MTK_FUNCTION(1, "CMMCLK2"),
9673 + MTK_FUNCTION(2, "CLKM2"),
9674 + MTK_FUNCTION(3, "MD_UTXD1"),
9675 + MTK_FUNCTION(4, "PTA_TXD"),
9676 + MTK_FUNCTION(5, "CONN_MCU_DBGI_N"),
9677 + MTK_FUNCTION(6, "PWM_C"),
9678 + MTK_FUNCTION(7, "EXT_FRAME_SYNC")
9682 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9684 + MTK_FUNCTION(0, "GPIO37"),
9685 + MTK_FUNCTION(1, "SCL0_0")
9689 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9691 + MTK_FUNCTION(0, "GPIO38"),
9692 + MTK_FUNCTION(1, "SDA0_0")
9696 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9698 + MTK_FUNCTION(0, "GPIO39"),
9699 + MTK_FUNCTION(1, "DPI_D0"),
9700 + MTK_FUNCTION(2, "SPI1_CLK_A"),
9701 + MTK_FUNCTION(3, "PCM0_SYNC"),
9702 + MTK_FUNCTION(4, "I2S0_LRCK"),
9703 + MTK_FUNCTION(5, "CONN_MCU_TRST_B"),
9704 + MTK_FUNCTION(6, "URXD3"),
9705 + MTK_FUNCTION(7, "C2K_NTRST")
9709 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9711 + MTK_FUNCTION(0, "GPIO40"),
9712 + MTK_FUNCTION(1, "DPI_D1"),
9713 + MTK_FUNCTION(2, "SPI1_MI_A"),
9714 + MTK_FUNCTION(3, "PCM0_CLK"),
9715 + MTK_FUNCTION(4, "I2S0_BCK"),
9716 + MTK_FUNCTION(5, "CONN_MCU_TDO"),
9717 + MTK_FUNCTION(6, "UTXD3"),
9718 + MTK_FUNCTION(7, "C2K_TCK")
9722 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9724 + MTK_FUNCTION(0, "GPIO41"),
9725 + MTK_FUNCTION(1, "DPI_D2"),
9726 + MTK_FUNCTION(2, "SPI1_CS_A"),
9727 + MTK_FUNCTION(3, "PCM0_DO"),
9728 + MTK_FUNCTION(4, "I2S3_DO"),
9729 + MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"),
9730 + MTK_FUNCTION(6, "URTS3"),
9731 + MTK_FUNCTION(7, "C2K_TDI")
9735 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9737 + MTK_FUNCTION(0, "GPIO42"),
9738 + MTK_FUNCTION(1, "DPI_D3"),
9739 + MTK_FUNCTION(2, "SPI1_MO_A"),
9740 + MTK_FUNCTION(3, "PCM0_DI"),
9741 + MTK_FUNCTION(4, "I2S0_DI"),
9742 + MTK_FUNCTION(5, "CONN_MCU_TDI"),
9743 + MTK_FUNCTION(6, "UCTS3"),
9744 + MTK_FUNCTION(7, "C2K_TMS")
9748 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9750 + MTK_FUNCTION(0, "GPIO43"),
9751 + MTK_FUNCTION(1, "DPI_D4"),
9752 + MTK_FUNCTION(2, "SPI2_CLK_A"),
9753 + MTK_FUNCTION(3, "PCM1_SYNC"),
9754 + MTK_FUNCTION(4, "I2S2_LRCK"),
9755 + MTK_FUNCTION(5, "CONN_MCU_TMS"),
9756 + MTK_FUNCTION(6, "CONN_MCU_AICE_TMSC"),
9757 + MTK_FUNCTION(7, "C2K_TDO")
9761 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9763 + MTK_FUNCTION(0, "GPIO44"),
9764 + MTK_FUNCTION(1, "DPI_D5"),
9765 + MTK_FUNCTION(2, "SPI2_MI_A"),
9766 + MTK_FUNCTION(3, "PCM1_CLK"),
9767 + MTK_FUNCTION(4, "I2S2_BCK"),
9768 + MTK_FUNCTION(5, "CONN_MCU_TCK"),
9769 + MTK_FUNCTION(6, "CONN_MCU_AICE_TCKC"),
9770 + MTK_FUNCTION(7, "C2K_RTCK")
9774 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9776 + MTK_FUNCTION(0, "GPIO45"),
9777 + MTK_FUNCTION(1, "DPI_D6"),
9778 + MTK_FUNCTION(2, "SPI2_CS_A"),
9779 + MTK_FUNCTION(3, "PCM1_DI"),
9780 + MTK_FUNCTION(4, "I2S2_DI"),
9781 + MTK_FUNCTION(5, "CONN_MCU_DBGI_N"),
9782 + MTK_FUNCTION(6, "MD_URXD0")
9786 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9788 + MTK_FUNCTION(0, "GPIO46"),
9789 + MTK_FUNCTION(1, "DPI_D7"),
9790 + MTK_FUNCTION(2, "SPI2_MO_A"),
9791 + MTK_FUNCTION(3, "PCM1_DO0"),
9792 + MTK_FUNCTION(4, "I2S1_DO"),
9793 + MTK_FUNCTION(5, "ANT_SEL0"),
9794 + MTK_FUNCTION(6, "MD_UTXD0")
9798 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9800 + MTK_FUNCTION(0, "GPIO47"),
9801 + MTK_FUNCTION(1, "DPI_D8"),
9802 + MTK_FUNCTION(2, "CLKM0"),
9803 + MTK_FUNCTION(3, "PCM1_DO1"),
9804 + MTK_FUNCTION(4, "I2S0_MCK"),
9805 + MTK_FUNCTION(5, "ANT_SEL1"),
9806 + MTK_FUNCTION(6, "PTA_RXD"),
9807 + MTK_FUNCTION(7, "C2K_URXD0")
9811 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9813 + MTK_FUNCTION(0, "GPIO48"),
9814 + MTK_FUNCTION(1, "DPI_D9"),
9815 + MTK_FUNCTION(2, "CLKM1"),
9816 + MTK_FUNCTION(3, "CMFLASH"),
9817 + MTK_FUNCTION(4, "I2S2_MCK"),
9818 + MTK_FUNCTION(5, "ANT_SEL2"),
9819 + MTK_FUNCTION(6, "PTA_TXD"),
9820 + MTK_FUNCTION(7, "C2K_UTXD0")
9824 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9826 + MTK_FUNCTION(0, "GPIO49"),
9827 + MTK_FUNCTION(1, "DPI_D10"),
9828 + MTK_FUNCTION(2, "MD_INT1_C2K_UIM1_HOT_PLUG_IN"),
9829 + MTK_FUNCTION(3, "PWM_C"),
9830 + MTK_FUNCTION(4, "IRTX_OUT"),
9831 + MTK_FUNCTION(5, "ANT_SEL3"),
9832 + MTK_FUNCTION(6, "MD_URXD1")
9836 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9838 + MTK_FUNCTION(0, "GPIO50"),
9839 + MTK_FUNCTION(1, "DPI_D11"),
9840 + MTK_FUNCTION(2, "MD_INT2"),
9841 + MTK_FUNCTION(3, "PWM_D"),
9842 + MTK_FUNCTION(4, "CLKM2"),
9843 + MTK_FUNCTION(5, "ANT_SEL4"),
9844 + MTK_FUNCTION(6, "MD_UTXD1")
9848 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9850 + MTK_FUNCTION(0, "GPIO51"),
9851 + MTK_FUNCTION(1, "DPI_DE"),
9852 + MTK_FUNCTION(2, "SPI4_CLK_A"),
9853 + MTK_FUNCTION(3, "IRTX_OUT"),
9854 + MTK_FUNCTION(4, "SCL0_1"),
9855 + MTK_FUNCTION(5, "ANT_SEL5"),
9856 + MTK_FUNCTION(7, "C2K_UTXD1")
9860 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9862 + MTK_FUNCTION(0, "GPIO52"),
9863 + MTK_FUNCTION(1, "DPI_CK"),
9864 + MTK_FUNCTION(2, "SPI4_MI_A"),
9865 + MTK_FUNCTION(3, "SPI4_MO_A"),
9866 + MTK_FUNCTION(4, "SDA0_1"),
9867 + MTK_FUNCTION(5, "ANT_SEL6"),
9868 + MTK_FUNCTION(7, "C2K_URXD1")
9872 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9874 + MTK_FUNCTION(0, "GPIO53"),
9875 + MTK_FUNCTION(1, "DPI_HSYNC"),
9876 + MTK_FUNCTION(2, "SPI4_CS_A"),
9877 + MTK_FUNCTION(3, "CMFLASH"),
9878 + MTK_FUNCTION(4, "SCL1_1"),
9879 + MTK_FUNCTION(5, "ANT_SEL7"),
9880 + MTK_FUNCTION(6, "MD_URXD2"),
9881 + MTK_FUNCTION(7, "PCC_PPC_IO")
9885 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9887 + MTK_FUNCTION(0, "GPIO54"),
9888 + MTK_FUNCTION(1, "DPI_VSYNC"),
9889 + MTK_FUNCTION(2, "SPI4_MO_A"),
9890 + MTK_FUNCTION(3, "SPI4_MI_A"),
9891 + MTK_FUNCTION(4, "SDA1_1"),
9892 + MTK_FUNCTION(5, "PWM_A"),
9893 + MTK_FUNCTION(6, "MD_UTXD2"),
9894 + MTK_FUNCTION(7, "EXT_FRAME_SYNC")
9898 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9900 + MTK_FUNCTION(0, "GPIO55"),
9901 + MTK_FUNCTION(1, "SCL1_0")
9905 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9907 + MTK_FUNCTION(0, "GPIO56"),
9908 + MTK_FUNCTION(1, "SDA1_0")
9912 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9914 + MTK_FUNCTION(0, "GPIO57"),
9915 + MTK_FUNCTION(1, "SPI0_CLK"),
9916 + MTK_FUNCTION(2, "SCL0_2"),
9917 + MTK_FUNCTION(3, "PWM_B"),
9918 + MTK_FUNCTION(4, "UTXD3"),
9919 + MTK_FUNCTION(5, "PCM0_SYNC")
9923 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9925 + MTK_FUNCTION(0, "GPIO58"),
9926 + MTK_FUNCTION(1, "SPI0_MI"),
9927 + MTK_FUNCTION(2, "SPI0_MO"),
9928 + MTK_FUNCTION(3, "SDA1_2"),
9929 + MTK_FUNCTION(4, "URXD3"),
9930 + MTK_FUNCTION(5, "PCM0_CLK")
9934 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9936 + MTK_FUNCTION(0, "GPIO59"),
9937 + MTK_FUNCTION(1, "SPI0_MO"),
9938 + MTK_FUNCTION(2, "SPI0_MI"),
9939 + MTK_FUNCTION(3, "PWM_C"),
9940 + MTK_FUNCTION(4, "URTS3"),
9941 + MTK_FUNCTION(5, "PCM0_DO")
9945 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9947 + MTK_FUNCTION(0, "GPIO60"),
9948 + MTK_FUNCTION(1, "SPI0_CS"),
9949 + MTK_FUNCTION(2, "SDA0_2"),
9950 + MTK_FUNCTION(3, "SCL1_2"),
9951 + MTK_FUNCTION(4, "UCTS3"),
9952 + MTK_FUNCTION(5, "PCM0_DI")
9956 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9958 + MTK_FUNCTION(0, "GPIO61"),
9959 + MTK_FUNCTION(1, "EINT0"),
9960 + MTK_FUNCTION(2, "IDDIG"),
9961 + MTK_FUNCTION(3, "SPI4_CLK_B"),
9962 + MTK_FUNCTION(4, "I2S0_LRCK"),
9963 + MTK_FUNCTION(5, "PCM0_SYNC"),
9964 + MTK_FUNCTION(7, "C2K_EINT0")
9968 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9970 + MTK_FUNCTION(0, "GPIO62"),
9971 + MTK_FUNCTION(1, "EINT1"),
9972 + MTK_FUNCTION(2, "USB_DRVVBUS"),
9973 + MTK_FUNCTION(3, "SPI4_MI_B"),
9974 + MTK_FUNCTION(4, "I2S0_BCK"),
9975 + MTK_FUNCTION(5, "PCM0_CLK"),
9976 + MTK_FUNCTION(7, "C2K_EINT1")
9980 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9982 + MTK_FUNCTION(0, "GPIO63"),
9983 + MTK_FUNCTION(1, "EINT2"),
9984 + MTK_FUNCTION(2, "IRTX_OUT"),
9985 + MTK_FUNCTION(3, "SPI4_MO_B"),
9986 + MTK_FUNCTION(4, "I2S0_MCK"),
9987 + MTK_FUNCTION(5, "PCM0_DI"),
9988 + MTK_FUNCTION(7, "C2K_DM_EINT0")
9992 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9994 + MTK_FUNCTION(0, "GPIO64"),
9995 + MTK_FUNCTION(1, "EINT3"),
9996 + MTK_FUNCTION(2, "CMFLASH"),
9997 + MTK_FUNCTION(3, "SPI4_CS_B"),
9998 + MTK_FUNCTION(4, "I2S0_DI"),
9999 + MTK_FUNCTION(5, "PCM0_DO"),
10000 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10004 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10006 + MTK_FUNCTION(0, "GPIO65"),
10007 + MTK_FUNCTION(1, "EINT4"),
10008 + MTK_FUNCTION(2, "CLKM0"),
10009 + MTK_FUNCTION(3, "SPI5_CLK_B"),
10010 + MTK_FUNCTION(4, "I2S1_LRCK"),
10011 + MTK_FUNCTION(5, "PWM_A"),
10012 + MTK_FUNCTION(7, "C2K_DM_EINT2")
10016 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10018 + MTK_FUNCTION(0, "GPIO66"),
10019 + MTK_FUNCTION(1, "EINT5"),
10020 + MTK_FUNCTION(2, "CLKM1"),
10021 + MTK_FUNCTION(3, "SPI5_MI_B"),
10022 + MTK_FUNCTION(4, "I2S1_BCK"),
10023 + MTK_FUNCTION(5, "PWM_B"),
10024 + MTK_FUNCTION(7, "C2K_DM_EINT3")
10028 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10030 + MTK_FUNCTION(0, "GPIO67"),
10031 + MTK_FUNCTION(1, "EINT6"),
10032 + MTK_FUNCTION(2, "CLKM2"),
10033 + MTK_FUNCTION(3, "SPI5_MO_B"),
10034 + MTK_FUNCTION(4, "I2S1_MCK"),
10035 + MTK_FUNCTION(5, "PWM_C"),
10036 + MTK_FUNCTION(7, "DBG_MON_A0")
10040 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10042 + MTK_FUNCTION(0, "GPIO68"),
10043 + MTK_FUNCTION(1, "EINT7"),
10044 + MTK_FUNCTION(2, "CLKM3"),
10045 + MTK_FUNCTION(3, "SPI5_CS_B"),
10046 + MTK_FUNCTION(4, "I2S1_DO"),
10047 + MTK_FUNCTION(5, "PWM_D"),
10048 + MTK_FUNCTION(7, "DBG_MON_A1")
10052 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10054 + MTK_FUNCTION(0, "GPIO69"),
10055 + MTK_FUNCTION(1, "I2S0_LRCK"),
10056 + MTK_FUNCTION(2, "I2S3_LRCK"),
10057 + MTK_FUNCTION(3, "I2S1_LRCK"),
10058 + MTK_FUNCTION(4, "I2S2_LRCK"),
10059 + MTK_FUNCTION(7, "DBG_MON_A2")
10063 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10065 + MTK_FUNCTION(0, "GPIO70"),
10066 + MTK_FUNCTION(1, "I2S0_BCK"),
10067 + MTK_FUNCTION(2, "I2S3_BCK"),
10068 + MTK_FUNCTION(3, "I2S1_BCK"),
10069 + MTK_FUNCTION(4, "I2S2_BCK"),
10070 + MTK_FUNCTION(7, "DBG_MON_A3")
10074 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10076 + MTK_FUNCTION(0, "GPIO71"),
10077 + MTK_FUNCTION(1, "I2S0_MCK"),
10078 + MTK_FUNCTION(2, "I2S3_MCK"),
10079 + MTK_FUNCTION(3, "I2S1_MCK"),
10080 + MTK_FUNCTION(4, "I2S2_MCK"),
10081 + MTK_FUNCTION(7, "DBG_MON_A4")
10085 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10087 + MTK_FUNCTION(0, "GPIO72"),
10088 + MTK_FUNCTION(1, "I2S0_DI"),
10089 + MTK_FUNCTION(2, "I2S0_DI"),
10090 + MTK_FUNCTION(3, "I2S2_DI"),
10091 + MTK_FUNCTION(4, "I2S2_DI"),
10092 + MTK_FUNCTION(7, "DBG_MON_A5")
10096 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10098 + MTK_FUNCTION(0, "GPIO73"),
10099 + MTK_FUNCTION(1, "I2S3_DO"),
10100 + MTK_FUNCTION(2, "I2S3_DO"),
10101 + MTK_FUNCTION(3, "I2S1_DO"),
10102 + MTK_FUNCTION(4, "I2S1_DO"),
10103 + MTK_FUNCTION(7, "DBG_MON_A6")
10107 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10109 + MTK_FUNCTION(0, "GPIO74"),
10110 + MTK_FUNCTION(1, "SCL3_0"),
10111 + MTK_FUNCTION(7, "AUXIF_CLK1")
10115 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10117 + MTK_FUNCTION(0, "GPIO75"),
10118 + MTK_FUNCTION(1, "SDA3_0"),
10119 + MTK_FUNCTION(7, "AUXIF_ST1")
10123 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10125 + MTK_FUNCTION(0, "GPIO76"),
10126 + MTK_FUNCTION(1, "CONN_HRST_B"),
10127 + MTK_FUNCTION(7, "C2K_DM_EINT0")
10131 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10133 + MTK_FUNCTION(0, "GPIO77"),
10134 + MTK_FUNCTION(1, "CONN_TOP_CLK"),
10135 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10139 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10141 + MTK_FUNCTION(0, "GPIO78"),
10142 + MTK_FUNCTION(1, "CONN_TOP_DATA"),
10143 + MTK_FUNCTION(7, "C2K_DM_EINT2")
10147 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10149 + MTK_FUNCTION(0, "GPIO79"),
10150 + MTK_FUNCTION(1, "CONN_WB_PTA"),
10151 + MTK_FUNCTION(7, "C2K_DM_EINT3")
10155 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10157 + MTK_FUNCTION(0, "GPIO80"),
10158 + MTK_FUNCTION(1, "CONN_WF_HB0"),
10159 + MTK_FUNCTION(7, "C2K_EINT0")
10163 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10165 + MTK_FUNCTION(0, "GPIO81"),
10166 + MTK_FUNCTION(1, "CONN_WF_HB1"),
10167 + MTK_FUNCTION(7, "C2K_EINT1")
10171 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10173 + MTK_FUNCTION(0, "GPIO82"),
10174 + MTK_FUNCTION(1, "CONN_WF_HB2"),
10175 + MTK_FUNCTION(7, "MD_CLKM0")
10179 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10181 + MTK_FUNCTION(0, "GPIO83"),
10182 + MTK_FUNCTION(1, "CONN_BT_CLK"),
10183 + MTK_FUNCTION(7, "MD_CLKM1")
10187 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10189 + MTK_FUNCTION(0, "GPIO84"),
10190 + MTK_FUNCTION(1, "CONN_BT_DATA")
10194 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10196 + MTK_FUNCTION(0, "GPIO85"),
10197 + MTK_FUNCTION(1, "EINT8"),
10198 + MTK_FUNCTION(2, "I2S1_LRCK"),
10199 + MTK_FUNCTION(3, "I2S2_LRCK"),
10200 + MTK_FUNCTION(4, "URXD1"),
10201 + MTK_FUNCTION(5, "MD_URXD0"),
10202 + MTK_FUNCTION(7, "DBG_MON_A7")
10206 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10208 + MTK_FUNCTION(0, "GPIO86"),
10209 + MTK_FUNCTION(1, "EINT9"),
10210 + MTK_FUNCTION(2, "I2S1_BCK"),
10211 + MTK_FUNCTION(3, "I2S2_BCK"),
10212 + MTK_FUNCTION(4, "UTXD1"),
10213 + MTK_FUNCTION(5, "MD_UTXD0"),
10214 + MTK_FUNCTION(7, "DBG_MON_A8")
10218 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10220 + MTK_FUNCTION(0, "GPIO87"),
10221 + MTK_FUNCTION(1, "EINT10"),
10222 + MTK_FUNCTION(2, "I2S1_MCK"),
10223 + MTK_FUNCTION(3, "I2S2_MCK"),
10224 + MTK_FUNCTION(4, "URTS1"),
10225 + MTK_FUNCTION(5, "MD_URXD1"),
10226 + MTK_FUNCTION(7, "DBG_MON_A9")
10230 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10232 + MTK_FUNCTION(0, "GPIO88"),
10233 + MTK_FUNCTION(1, "EINT11"),
10234 + MTK_FUNCTION(2, "I2S1_DO"),
10235 + MTK_FUNCTION(3, "I2S2_DI"),
10236 + MTK_FUNCTION(4, "UCTS1"),
10237 + MTK_FUNCTION(5, "MD_UTXD1"),
10238 + MTK_FUNCTION(7, "DBG_MON_A10")
10242 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10244 + MTK_FUNCTION(0, "GPIO89"),
10245 + MTK_FUNCTION(1, "EINT12"),
10246 + MTK_FUNCTION(2, "IRTX_OUT"),
10247 + MTK_FUNCTION(3, "CLKM0"),
10248 + MTK_FUNCTION(4, "PCM1_SYNC"),
10249 + MTK_FUNCTION(5, "URTS0"),
10250 + MTK_FUNCTION(7, "DBG_MON_A11")
10254 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10256 + MTK_FUNCTION(0, "GPIO90"),
10257 + MTK_FUNCTION(1, "EINT13"),
10258 + MTK_FUNCTION(2, "CMFLASH"),
10259 + MTK_FUNCTION(3, "CLKM1"),
10260 + MTK_FUNCTION(4, "PCM1_CLK"),
10261 + MTK_FUNCTION(5, "UCTS0"),
10262 + MTK_FUNCTION(7, "C2K_DM_EINT0")
10266 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10268 + MTK_FUNCTION(0, "GPIO91"),
10269 + MTK_FUNCTION(1, "EINT14"),
10270 + MTK_FUNCTION(2, "PWM_A"),
10271 + MTK_FUNCTION(3, "CLKM2"),
10272 + MTK_FUNCTION(4, "PCM1_DI"),
10273 + MTK_FUNCTION(5, "SDA0_3"),
10274 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10278 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10280 + MTK_FUNCTION(0, "GPIO92"),
10281 + MTK_FUNCTION(1, "EINT15"),
10282 + MTK_FUNCTION(2, "PWM_B"),
10283 + MTK_FUNCTION(3, "CLKM3"),
10284 + MTK_FUNCTION(4, "PCM1_DO0"),
10285 + MTK_FUNCTION(5, "SCL0_3")
10289 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10291 + MTK_FUNCTION(0, "GPIO93"),
10292 + MTK_FUNCTION(1, "EINT16"),
10293 + MTK_FUNCTION(2, "IDDIG"),
10294 + MTK_FUNCTION(3, "CLKM4"),
10295 + MTK_FUNCTION(4, "PCM1_DO1"),
10296 + MTK_FUNCTION(5, "MD_INT2"),
10297 + MTK_FUNCTION(7, "DROP_ZONE")
10301 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10303 + MTK_FUNCTION(0, "GPIO94"),
10304 + MTK_FUNCTION(1, "USB_DRVVBUS"),
10305 + MTK_FUNCTION(2, "PWM_C"),
10306 + MTK_FUNCTION(3, "CLKM5")
10310 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10312 + MTK_FUNCTION(0, "GPIO95"),
10313 + MTK_FUNCTION(1, "SDA2_0"),
10314 + MTK_FUNCTION(7, "AUXIF_ST0")
10318 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10320 + MTK_FUNCTION(0, "GPIO96"),
10321 + MTK_FUNCTION(1, "SCL2_0"),
10322 + MTK_FUNCTION(7, "AUXIF_CLK0")
10326 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10328 + MTK_FUNCTION(0, "GPIO97"),
10329 + MTK_FUNCTION(1, "URXD0"),
10330 + MTK_FUNCTION(2, "UTXD0"),
10331 + MTK_FUNCTION(3, "MD_URXD0"),
10332 + MTK_FUNCTION(4, "MD_URXD1"),
10333 + MTK_FUNCTION(5, "MD_URXD2"),
10334 + MTK_FUNCTION(6, "C2K_URXD0"),
10335 + MTK_FUNCTION(7, "C2K_URXD1")
10339 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10341 + MTK_FUNCTION(0, "GPIO98"),
10342 + MTK_FUNCTION(1, "UTXD0"),
10343 + MTK_FUNCTION(2, "URXD0"),
10344 + MTK_FUNCTION(3, "MD_UTXD0"),
10345 + MTK_FUNCTION(4, "MD_UTXD1"),
10346 + MTK_FUNCTION(5, "MD_UTXD2"),
10347 + MTK_FUNCTION(6, "C2K_UTXD0"),
10348 + MTK_FUNCTION(7, "C2K_UTXD1")
10352 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10354 + MTK_FUNCTION(0, "GPIO99"),
10355 + MTK_FUNCTION(1, "RTC32K_CK")
10359 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10361 + MTK_FUNCTION(0, "GPIO100"),
10362 + MTK_FUNCTION(1, "SRCLKENAI0")
10366 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10368 + MTK_FUNCTION(0, "GPIO101"),
10369 + MTK_FUNCTION(1, "SRCLKENAI1")
10373 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10375 + MTK_FUNCTION(0, "GPIO102"),
10376 + MTK_FUNCTION(1, "SRCLKENA0")
10380 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10382 + MTK_FUNCTION(0, "GPIO103"),
10383 + MTK_FUNCTION(1, "SRCLKENA1")
10387 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10389 + MTK_FUNCTION(0, "GPIO104"),
10390 + MTK_FUNCTION(1, "SYSRSTB")
10394 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10396 + MTK_FUNCTION(0, "GPIO105"),
10397 + MTK_FUNCTION(1, "WATCHDOG")
10401 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10403 + MTK_FUNCTION(0, "GPIO106"),
10404 + MTK_FUNCTION(1, "KPROW0"),
10405 + MTK_FUNCTION(2, "CMFLASH"),
10406 + MTK_FUNCTION(3, "CLKM4"),
10407 + MTK_FUNCTION(4, "TP_GPIO0_AO"),
10408 + MTK_FUNCTION(5, "IRTX_OUT")
10412 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10414 + MTK_FUNCTION(0, "GPIO107"),
10415 + MTK_FUNCTION(1, "KPROW1"),
10416 + MTK_FUNCTION(2, "IDDIG"),
10417 + MTK_FUNCTION(3, "CLKM5"),
10418 + MTK_FUNCTION(4, "TP_GPIO1_AO"),
10419 + MTK_FUNCTION(5, "I2S1_BCK"),
10420 + MTK_FUNCTION(7, "DAP_SIB1_SWD")
10424 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10426 + MTK_FUNCTION(0, "GPIO108"),
10427 + MTK_FUNCTION(1, "KPROW2"),
10428 + MTK_FUNCTION(2, "USB_DRVVBUS"),
10429 + MTK_FUNCTION(3, "PWM_A"),
10430 + MTK_FUNCTION(4, "CMFLASH"),
10431 + MTK_FUNCTION(5, "I2S1_LRCK"),
10432 + MTK_FUNCTION(7, "DAP_SIB1_SWCK")
10436 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10438 + MTK_FUNCTION(0, "GPIO109"),
10439 + MTK_FUNCTION(1, "KPCOL0")
10443 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10445 + MTK_FUNCTION(0, "GPIO110"),
10446 + MTK_FUNCTION(1, "KPCOL1"),
10447 + MTK_FUNCTION(2, "SDA1_3"),
10448 + MTK_FUNCTION(3, "PWM_B"),
10449 + MTK_FUNCTION(4, "CLKM0"),
10450 + MTK_FUNCTION(5, "I2S1_DO"),
10451 + MTK_FUNCTION(7, "C2K_DM_EINT3")
10455 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10457 + MTK_FUNCTION(0, "GPIO111"),
10458 + MTK_FUNCTION(1, "KPCOL2"),
10459 + MTK_FUNCTION(2, "SCL1_3"),
10460 + MTK_FUNCTION(3, "PWM_C"),
10461 + MTK_FUNCTION(4, "DISP_PWM"),
10462 + MTK_FUNCTION(5, "I2S1_MCK"),
10463 + MTK_FUNCTION(7, "C2K_DM_EINT2")
10467 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10469 + MTK_FUNCTION(0, "GPIO112"),
10470 + MTK_FUNCTION(1, "MD_INT1_C2K_UIM1_HOT_PLUG_IN"),
10471 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10475 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10477 + MTK_FUNCTION(0, "GPIO113"),
10478 + MTK_FUNCTION(1, "MD_INT0_C2K_UIM0_HOT_PLUG_IN"),
10479 + MTK_FUNCTION(7, "C2K_DM_EINT0")
10483 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10485 + MTK_FUNCTION(0, "GPIO114"),
10486 + MTK_FUNCTION(1, "MSDC0_DAT0")
10490 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10492 + MTK_FUNCTION(0, "GPIO115"),
10493 + MTK_FUNCTION(1, "MSDC0_DAT1")
10497 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10499 + MTK_FUNCTION(0, "GPIO116"),
10500 + MTK_FUNCTION(1, "MSDC0_DAT2")
10504 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10506 + MTK_FUNCTION(0, "GPIO117"),
10507 + MTK_FUNCTION(1, "MSDC0_DAT3")
10511 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10513 + MTK_FUNCTION(0, "GPIO118"),
10514 + MTK_FUNCTION(1, "MSDC0_DAT4")
10518 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10520 + MTK_FUNCTION(0, "GPIO119"),
10521 + MTK_FUNCTION(1, "MSDC0_DAT5")
10525 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10527 + MTK_FUNCTION(0, "GPIO120"),
10528 + MTK_FUNCTION(1, "MSDC0_DAT6")
10532 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10534 + MTK_FUNCTION(0, "GPIO121"),
10535 + MTK_FUNCTION(1, "MSDC0_DAT7")
10539 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10541 + MTK_FUNCTION(0, "GPIO122"),
10542 + MTK_FUNCTION(1, "MSDC0_CMD")
10546 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10548 + MTK_FUNCTION(0, "GPIO123"),
10549 + MTK_FUNCTION(1, "MSDC0_CLK")
10553 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10555 + MTK_FUNCTION(0, "GPIO124"),
10556 + MTK_FUNCTION(1, "MSDC0_DSL")
10560 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10562 + MTK_FUNCTION(0, "GPIO125"),
10563 + MTK_FUNCTION(1, "MSDC0_RSTB")
10567 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10569 + MTK_FUNCTION(0, "GPIO126"),
10570 + MTK_FUNCTION(1, "MD1_SIM1_SCLK"),
10571 + MTK_FUNCTION(2, "MD1_SIM2_SCLK"),
10572 + MTK_FUNCTION(3, "C2K_UIM0_CLK"),
10573 + MTK_FUNCTION(4, "C2K_UIM1_CLK")
10577 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10579 + MTK_FUNCTION(0, "GPIO127"),
10580 + MTK_FUNCTION(1, "MD1_SIM1_SRST"),
10581 + MTK_FUNCTION(2, "MD1_SIM2_SRST"),
10582 + MTK_FUNCTION(3, "C2K_UIM0_RST"),
10583 + MTK_FUNCTION(4, "C2K_UIM1_RST")
10587 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10589 + MTK_FUNCTION(0, "GPIO128"),
10590 + MTK_FUNCTION(1, "MD1_SIM1_SIO"),
10591 + MTK_FUNCTION(2, "MD1_SIM2_SIO"),
10592 + MTK_FUNCTION(3, "C2K_UIM0_IO"),
10593 + MTK_FUNCTION(4, "C2K_UIM1_IO")
10597 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10599 + MTK_FUNCTION(0, "GPIO129"),
10600 + MTK_FUNCTION(1, "MSDC1_CMD"),
10601 + MTK_FUNCTION(2, "CONN_DSP_JMS"),
10602 + MTK_FUNCTION(3, "LTE_JTAG_TMS"),
10603 + MTK_FUNCTION(4, "UDI_TMS"),
10604 + MTK_FUNCTION(5, "C2K_TMS")
10608 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10610 + MTK_FUNCTION(0, "GPIO130"),
10611 + MTK_FUNCTION(1, "MSDC1_DAT0"),
10612 + MTK_FUNCTION(2, "CONN_DSP_JDI"),
10613 + MTK_FUNCTION(3, "LTE_JTAG_TDI"),
10614 + MTK_FUNCTION(4, "UDI_TDI"),
10615 + MTK_FUNCTION(5, "C2K_TDI")
10619 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10621 + MTK_FUNCTION(0, "GPIO131"),
10622 + MTK_FUNCTION(1, "MSDC1_DAT1"),
10623 + MTK_FUNCTION(2, "CONN_DSP_JDO"),
10624 + MTK_FUNCTION(3, "LTE_JTAG_TDO"),
10625 + MTK_FUNCTION(4, "UDI_TDO"),
10626 + MTK_FUNCTION(5, "C2K_TDO")
10630 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10632 + MTK_FUNCTION(0, "GPIO132"),
10633 + MTK_FUNCTION(1, "MSDC1_DAT2"),
10634 + MTK_FUNCTION(5, "C2K_RTCK")
10638 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10640 + MTK_FUNCTION(0, "GPIO133"),
10641 + MTK_FUNCTION(1, "MSDC1_DAT3"),
10642 + MTK_FUNCTION(2, "CONN_DSP_JINTP"),
10643 + MTK_FUNCTION(3, "LTE_JTAG_TRSTN"),
10644 + MTK_FUNCTION(4, "UDI_NTRST"),
10645 + MTK_FUNCTION(5, "C2K_NTRST")
10649 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10651 + MTK_FUNCTION(0, "GPIO134"),
10652 + MTK_FUNCTION(1, "MSDC1_CLK"),
10653 + MTK_FUNCTION(2, "CONN_DSP_JCK"),
10654 + MTK_FUNCTION(3, "LTE_JTAG_TCK"),
10655 + MTK_FUNCTION(4, "UDI_TCK_XI"),
10656 + MTK_FUNCTION(5, "C2K_TCK")
10660 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10662 + MTK_FUNCTION(0, "GPIO135"),
10663 + MTK_FUNCTION(1, "TDM_LRCK"),
10664 + MTK_FUNCTION(2, "I2S0_LRCK"),
10665 + MTK_FUNCTION(3, "CLKM0"),
10666 + MTK_FUNCTION(4, "PCM1_SYNC"),
10667 + MTK_FUNCTION(5, "PWM_A"),
10668 + MTK_FUNCTION(7, "DBG_MON_A12")
10672 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10674 + MTK_FUNCTION(0, "GPIO136"),
10675 + MTK_FUNCTION(1, "TDM_BCK"),
10676 + MTK_FUNCTION(2, "I2S0_BCK"),
10677 + MTK_FUNCTION(3, "CLKM1"),
10678 + MTK_FUNCTION(4, "PCM1_CLK"),
10679 + MTK_FUNCTION(5, "PWM_B"),
10680 + MTK_FUNCTION(7, "DBG_MON_A13")
10684 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10686 + MTK_FUNCTION(0, "GPIO137"),
10687 + MTK_FUNCTION(1, "TDM_MCK"),
10688 + MTK_FUNCTION(2, "I2S0_MCK"),
10689 + MTK_FUNCTION(3, "CLKM2"),
10690 + MTK_FUNCTION(4, "PCM1_DI"),
10691 + MTK_FUNCTION(5, "IRTX_OUT"),
10692 + MTK_FUNCTION(7, "DBG_MON_A14")
10696 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10698 + MTK_FUNCTION(0, "GPIO138"),
10699 + MTK_FUNCTION(1, "TDM_DATA0"),
10700 + MTK_FUNCTION(2, "I2S0_DI"),
10701 + MTK_FUNCTION(3, "CLKM3"),
10702 + MTK_FUNCTION(4, "PCM1_DO0"),
10703 + MTK_FUNCTION(5, "PWM_C"),
10704 + MTK_FUNCTION(6, "SDA3_1"),
10705 + MTK_FUNCTION(7, "DBG_MON_A15")
10709 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10711 + MTK_FUNCTION(0, "GPIO139"),
10712 + MTK_FUNCTION(1, "TDM_DATA1"),
10713 + MTK_FUNCTION(2, "I2S3_DO"),
10714 + MTK_FUNCTION(3, "CLKM4"),
10715 + MTK_FUNCTION(4, "PCM1_DO1"),
10716 + MTK_FUNCTION(5, "ANT_SEL2"),
10717 + MTK_FUNCTION(6, "SCL3_1"),
10718 + MTK_FUNCTION(7, "DBG_MON_A16")
10722 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10724 + MTK_FUNCTION(0, "GPIO140"),
10725 + MTK_FUNCTION(1, "TDM_DATA2"),
10726 + MTK_FUNCTION(2, "DISP_PWM"),
10727 + MTK_FUNCTION(3, "CLKM5"),
10728 + MTK_FUNCTION(4, "SDA1_4"),
10729 + MTK_FUNCTION(5, "ANT_SEL1"),
10730 + MTK_FUNCTION(6, "URXD3"),
10731 + MTK_FUNCTION(7, "DBG_MON_A17")
10735 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10737 + MTK_FUNCTION(0, "GPIO141"),
10738 + MTK_FUNCTION(1, "TDM_DATA3"),
10739 + MTK_FUNCTION(2, "CMFLASH"),
10740 + MTK_FUNCTION(3, "IRTX_OUT"),
10741 + MTK_FUNCTION(4, "SCL1_4"),
10742 + MTK_FUNCTION(5, "ANT_SEL0"),
10743 + MTK_FUNCTION(6, "UTXD3"),
10744 + MTK_FUNCTION(7, "DBG_MON_A18")
10748 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10750 + MTK_FUNCTION(0, "GPIO142"),
10751 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
10752 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
10756 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10758 + MTK_FUNCTION(0, "GPIO143"),
10759 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
10760 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
10764 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10766 + MTK_FUNCTION(0, "GPIO144"),
10767 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
10771 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10773 + MTK_FUNCTION(0, "GPIO145"),
10774 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
10778 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10780 + MTK_FUNCTION(0, "GPIO146"),
10781 + MTK_FUNCTION(1, "AUD_CLK_MOSI")
10785 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10787 + MTK_FUNCTION(0, "GPIO147"),
10788 + MTK_FUNCTION(1, "AUD_DAT_MISO"),
10789 + MTK_FUNCTION(2, "AUD_DAT_MOSI"),
10790 + MTK_FUNCTION(3, "VOW_DAT_MISO")
10794 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10796 + MTK_FUNCTION(0, "GPIO148"),
10797 + MTK_FUNCTION(1, "AUD_DAT_MOSI"),
10798 + MTK_FUNCTION(2, "AUD_DAT_MISO")
10802 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10804 + MTK_FUNCTION(0, "GPIO149"),
10805 + MTK_FUNCTION(1, "VOW_CLK_MISO")
10809 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10811 + MTK_FUNCTION(0, "GPIO150"),
10812 + MTK_FUNCTION(1, "ANC_DAT_MOSI")
10816 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10818 + MTK_FUNCTION(0, "GPIO151"),
10819 + MTK_FUNCTION(1, "SCL6_0")
10823 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10825 + MTK_FUNCTION(0, "GPIO152"),
10826 + MTK_FUNCTION(1, "SDA6_0")
10830 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10832 + MTK_FUNCTION(0, "GPIO153"),
10833 + MTK_FUNCTION(1, "SCL7_0")
10837 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10839 + MTK_FUNCTION(0, "GPIO154"),
10840 + MTK_FUNCTION(1, "SDA7_0")
10844 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10846 + MTK_FUNCTION(0, "GPIO155"),
10847 + MTK_FUNCTION(1, "MD1_SIM2_SCLK"),
10848 + MTK_FUNCTION(2, "MD1_SIM1_SCLK"),
10849 + MTK_FUNCTION(3, "C2K_UIM0_CLK"),
10850 + MTK_FUNCTION(4, "C2K_UIM1_CLK")
10854 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10856 + MTK_FUNCTION(0, "GPIO156"),
10857 + MTK_FUNCTION(1, "MD1_SIM2_SRST"),
10858 + MTK_FUNCTION(2, "MD1_SIM1_SRST"),
10859 + MTK_FUNCTION(3, "C2K_UIM0_RST"),
10860 + MTK_FUNCTION(4, "C2K_UIM1_RST")
10864 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10866 + MTK_FUNCTION(0, "GPIO157"),
10867 + MTK_FUNCTION(1, "MD1_SIM2_SIO"),
10868 + MTK_FUNCTION(2, "MD1_SIM1_SIO"),
10869 + MTK_FUNCTION(3, "C2K_UIM0_IO"),
10870 + MTK_FUNCTION(4, "C2K_UIM1_IO")
10874 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10876 + MTK_FUNCTION(0, "GPIO158"),
10877 + MTK_FUNCTION(1, "MIPI_TDP0")
10881 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10883 + MTK_FUNCTION(0, "GPIO159"),
10884 + MTK_FUNCTION(1, "MIPI_TDN0")
10888 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10890 + MTK_FUNCTION(0, "GPIO160"),
10891 + MTK_FUNCTION(1, "MIPI_TDP1")
10895 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10897 + MTK_FUNCTION(0, "GPIO161"),
10898 + MTK_FUNCTION(1, "MIPI_TDN1")
10902 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10904 + MTK_FUNCTION(0, "GPIO162"),
10905 + MTK_FUNCTION(1, "MIPI_TCP")
10909 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10911 + MTK_FUNCTION(0, "GPIO163"),
10912 + MTK_FUNCTION(1, "MIPI_TCN")
10916 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10918 + MTK_FUNCTION(0, "GPIO164"),
10919 + MTK_FUNCTION(1, "MIPI_TDP2")
10923 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10925 + MTK_FUNCTION(0, "GPIO165"),
10926 + MTK_FUNCTION(1, "MIPI_TDN2")
10930 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10932 + MTK_FUNCTION(0, "GPIO166"),
10933 + MTK_FUNCTION(1, "MIPI_TDP3")
10937 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10939 + MTK_FUNCTION(0, "GPIO167"),
10940 + MTK_FUNCTION(1, "MIPI_TDN3")
10944 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10946 + MTK_FUNCTION(0, "GPIO168"),
10947 + MTK_FUNCTION(1, "MIPI_TDP0_A")
10951 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10953 + MTK_FUNCTION(0, "GPIO169"),
10954 + MTK_FUNCTION(1, "MIPI_TDN0_A")
10958 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10960 + MTK_FUNCTION(0, "GPIO170"),
10961 + MTK_FUNCTION(1, "MIPI_TDP1_A")
10965 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10967 + MTK_FUNCTION(0, "GPIO171"),
10968 + MTK_FUNCTION(1, "MIPI_TDN1_A")
10972 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10974 + MTK_FUNCTION(0, "GPIO172"),
10975 + MTK_FUNCTION(1, "MIPI_TCP_A")
10979 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10981 + MTK_FUNCTION(0, "GPIO173"),
10982 + MTK_FUNCTION(1, "MIPI_TCN_A")
10986 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10988 + MTK_FUNCTION(0, "GPIO174"),
10989 + MTK_FUNCTION(1, "MIPI_TDP2_A")
10993 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10995 + MTK_FUNCTION(0, "GPIO175"),
10996 + MTK_FUNCTION(1, "MIPI_TDN2_A")
11000 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11002 + MTK_FUNCTION(0, "GPIO176"),
11003 + MTK_FUNCTION(1, "MIPI_TDP3_A")
11007 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11009 + MTK_FUNCTION(0, "GPIO177"),
11010 + MTK_FUNCTION(1, "MIPI_TDN3_A")
11014 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11016 + MTK_FUNCTION(0, "GPIO178"),
11017 + MTK_FUNCTION(1, "DISP_PWM"),
11018 + MTK_FUNCTION(2, "PWM_D"),
11019 + MTK_FUNCTION(3, "CLKM5"),
11020 + MTK_FUNCTION(7, "DBG_MON_A19")
11024 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11026 + MTK_FUNCTION(0, "GPIO179"),
11027 + MTK_FUNCTION(1, "DSI_TE0"),
11028 + MTK_FUNCTION(7, "DBG_MON_A20")
11032 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11034 + MTK_FUNCTION(0, "GPIO180"),
11035 + MTK_FUNCTION(1, "LCM_RST"),
11036 + MTK_FUNCTION(2, "DSI_TE1"),
11037 + MTK_FUNCTION(7, "DBG_MON_A21")
11041 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11043 + MTK_FUNCTION(0, "GPIO181"),
11044 + MTK_FUNCTION(1, "IDDIG"),
11045 + MTK_FUNCTION(2, "DSI_TE1"),
11046 + MTK_FUNCTION(7, "DBG_MON_A22")
11050 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11052 + MTK_FUNCTION(0, "GPIO182"),
11053 + MTK_FUNCTION(1, "TESTMODE")
11057 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11059 + MTK_FUNCTION(0, "GPIO183"),
11060 + MTK_FUNCTION(1, "RFIC0_BSI_CK"),
11061 + MTK_FUNCTION(2, "SPM_BSI_CK"),
11062 + MTK_FUNCTION(7, "DBG_MON_B27")
11066 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11068 + MTK_FUNCTION(0, "GPIO184"),
11069 + MTK_FUNCTION(1, "RFIC0_BSI_EN"),
11070 + MTK_FUNCTION(2, "SPM_BSI_EN"),
11071 + MTK_FUNCTION(7, "DBG_MON_B28")
11075 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11077 + MTK_FUNCTION(0, "GPIO185"),
11078 + MTK_FUNCTION(1, "RFIC0_BSI_D0"),
11079 + MTK_FUNCTION(2, "SPM_BSI_D0"),
11080 + MTK_FUNCTION(7, "DBG_MON_B29")
11084 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11086 + MTK_FUNCTION(0, "GPIO186"),
11087 + MTK_FUNCTION(1, "RFIC0_BSI_D1"),
11088 + MTK_FUNCTION(2, "SPM_BSI_D1"),
11089 + MTK_FUNCTION(7, "DBG_MON_B30")
11093 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11095 + MTK_FUNCTION(0, "GPIO187"),
11096 + MTK_FUNCTION(1, "RFIC0_BSI_D2"),
11097 + MTK_FUNCTION(2, "SPM_BSI_D2"),
11098 + MTK_FUNCTION(7, "DBG_MON_B31")
11102 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11104 + MTK_FUNCTION(0, "GPIO188"),
11105 + MTK_FUNCTION(1, "MIPI0_SCLK"),
11106 + MTK_FUNCTION(7, "DBG_MON_B32")
11110 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11112 + MTK_FUNCTION(0, "GPIO189"),
11113 + MTK_FUNCTION(1, "MIPI0_SDATA")
11117 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11119 + MTK_FUNCTION(0, "GPIO190"),
11120 + MTK_FUNCTION(1, "MIPI1_SCLK")
11124 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11126 + MTK_FUNCTION(0, "GPIO191"),
11127 + MTK_FUNCTION(1, "MIPI1_SDATA")
11131 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11133 + MTK_FUNCTION(0, "GPIO192"),
11134 + MTK_FUNCTION(1, "BPI_BUS4")
11138 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11140 + MTK_FUNCTION(0, "GPIO193"),
11141 + MTK_FUNCTION(1, "BPI_BUS5"),
11142 + MTK_FUNCTION(7, "DBG_MON_B0")
11146 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11148 + MTK_FUNCTION(0, "GPIO194"),
11149 + MTK_FUNCTION(1, "BPI_BUS6"),
11150 + MTK_FUNCTION(7, "DBG_MON_B1")
11154 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11156 + MTK_FUNCTION(0, "GPIO195"),
11157 + MTK_FUNCTION(1, "BPI_BUS7"),
11158 + MTK_FUNCTION(7, "DBG_MON_B2")
11162 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11164 + MTK_FUNCTION(0, "GPIO196"),
11165 + MTK_FUNCTION(1, "BPI_BUS8"),
11166 + MTK_FUNCTION(7, "DBG_MON_B3")
11170 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11172 + MTK_FUNCTION(0, "GPIO197"),
11173 + MTK_FUNCTION(1, "BPI_BUS9"),
11174 + MTK_FUNCTION(7, "DBG_MON_B4")
11178 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11180 + MTK_FUNCTION(0, "GPIO198"),
11181 + MTK_FUNCTION(1, "BPI_BUS10"),
11182 + MTK_FUNCTION(7, "DBG_MON_B5")
11186 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11188 + MTK_FUNCTION(0, "GPIO199"),
11189 + MTK_FUNCTION(1, "BPI_BUS11"),
11190 + MTK_FUNCTION(7, "DBG_MON_B6")
11194 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11196 + MTK_FUNCTION(0, "GPIO200"),
11197 + MTK_FUNCTION(1, "BPI_BUS12"),
11198 + MTK_FUNCTION(7, "DBG_MON_B7")
11202 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11204 + MTK_FUNCTION(0, "GPIO201"),
11205 + MTK_FUNCTION(1, "BPI_BUS13"),
11206 + MTK_FUNCTION(7, "DBG_MON_B8")
11210 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11212 + MTK_FUNCTION(0, "GPIO202"),
11213 + MTK_FUNCTION(1, "BPI_BUS14"),
11214 + MTK_FUNCTION(7, "DBG_MON_B9")
11218 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11220 + MTK_FUNCTION(0, "GPIO203"),
11221 + MTK_FUNCTION(1, "BPI_BUS15"),
11222 + MTK_FUNCTION(7, "DBG_MON_B10")
11226 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11228 + MTK_FUNCTION(0, "GPIO204"),
11229 + MTK_FUNCTION(1, "BPI_BUS16"),
11230 + MTK_FUNCTION(2, "PA_VM0"),
11231 + MTK_FUNCTION(7, "DBG_MON_B11")
11235 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11237 + MTK_FUNCTION(0, "GPIO205"),
11238 + MTK_FUNCTION(1, "BPI_BUS17"),
11239 + MTK_FUNCTION(2, "PA_VM1"),
11240 + MTK_FUNCTION(7, "DBG_MON_B12")
11244 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11246 + MTK_FUNCTION(0, "GPIO206"),
11247 + MTK_FUNCTION(1, "BPI_BUS18"),
11248 + MTK_FUNCTION(2, "TX_SWAP0"),
11249 + MTK_FUNCTION(7, "DBG_MON_B13")
11253 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11255 + MTK_FUNCTION(0, "GPIO207"),
11256 + MTK_FUNCTION(1, "BPI_BUS19"),
11257 + MTK_FUNCTION(2, "TX_SWAP1"),
11258 + MTK_FUNCTION(7, "DBG_MON_B14")
11262 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11264 + MTK_FUNCTION(0, "GPIO208"),
11265 + MTK_FUNCTION(1, "BPI_BUS20"),
11266 + MTK_FUNCTION(2, "TX_SWAP2"),
11267 + MTK_FUNCTION(7, "DBG_MON_B15")
11271 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11273 + MTK_FUNCTION(0, "GPIO209"),
11274 + MTK_FUNCTION(1, "BPI_BUS21"),
11275 + MTK_FUNCTION(2, "TX_SWAP3"),
11276 + MTK_FUNCTION(7, "DBG_MON_B16")
11280 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11282 + MTK_FUNCTION(0, "GPIO210"),
11283 + MTK_FUNCTION(1, "BPI_BUS22"),
11284 + MTK_FUNCTION(2, "DET_BPI0"),
11285 + MTK_FUNCTION(7, "DBG_MON_B17")
11289 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11291 + MTK_FUNCTION(0, "GPIO211"),
11292 + MTK_FUNCTION(1, "BPI_BUS23"),
11293 + MTK_FUNCTION(2, "DET_BPI1"),
11294 + MTK_FUNCTION(7, "DBG_MON_B18")
11298 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11300 + MTK_FUNCTION(0, "GPIO212"),
11301 + MTK_FUNCTION(1, "BPI_BUS0"),
11302 + MTK_FUNCTION(7, "DBG_MON_B19")
11306 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11308 + MTK_FUNCTION(0, "GPIO213"),
11309 + MTK_FUNCTION(1, "BPI_BUS1"),
11310 + MTK_FUNCTION(7, "DBG_MON_B20")
11314 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11316 + MTK_FUNCTION(0, "GPIO214"),
11317 + MTK_FUNCTION(1, "BPI_BUS2"),
11318 + MTK_FUNCTION(7, "DBG_MON_B21")
11322 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11324 + MTK_FUNCTION(0, "GPIO215"),
11325 + MTK_FUNCTION(1, "BPI_BUS3"),
11326 + MTK_FUNCTION(7, "DBG_MON_B22")
11330 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11332 + MTK_FUNCTION(0, "GPIO216"),
11333 + MTK_FUNCTION(1, "MIPI2_SCLK"),
11334 + MTK_FUNCTION(7, "DBG_MON_B23")
11338 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11340 + MTK_FUNCTION(0, "GPIO217"),
11341 + MTK_FUNCTION(1, "MIPI2_SDATA"),
11342 + MTK_FUNCTION(7, "DBG_MON_B24")
11346 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11348 + MTK_FUNCTION(0, "GPIO218"),
11349 + MTK_FUNCTION(1, "MIPI3_SCLK"),
11350 + MTK_FUNCTION(7, "DBG_MON_B25")
11354 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11356 + MTK_FUNCTION(0, "GPIO219"),
11357 + MTK_FUNCTION(1, "MIPI3_SDATA"),
11358 + MTK_FUNCTION(7, "DBG_MON_B26")
11362 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11364 + MTK_FUNCTION(0, "GPIO220"),
11365 + MTK_FUNCTION(1, "CONN_WF_IP")
11369 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11371 + MTK_FUNCTION(0, "GPIO221"),
11372 + MTK_FUNCTION(1, "CONN_WF_IN")
11376 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11378 + MTK_FUNCTION(0, "GPIO222"),
11379 + MTK_FUNCTION(1, "CONN_WF_QP")
11383 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11385 + MTK_FUNCTION(0, "GPIO223"),
11386 + MTK_FUNCTION(1, "CONN_WF_QN")
11390 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11392 + MTK_FUNCTION(0, "GPIO224"),
11393 + MTK_FUNCTION(1, "CONN_BT_IP")
11397 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11399 + MTK_FUNCTION(0, "GPIO225"),
11400 + MTK_FUNCTION(1, "CONN_BT_IN")
11404 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11406 + MTK_FUNCTION(0, "GPIO226"),
11407 + MTK_FUNCTION(1, "CONN_BT_QP")
11411 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11413 + MTK_FUNCTION(0, "GPIO227"),
11414 + MTK_FUNCTION(1, "CONN_BT_QN")
11418 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11420 + MTK_FUNCTION(0, "GPIO228"),
11421 + MTK_FUNCTION(1, "CONN_GPS_IP")
11425 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11427 + MTK_FUNCTION(0, "GPIO229"),
11428 + MTK_FUNCTION(1, "CONN_GPS_IN")
11432 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11434 + MTK_FUNCTION(0, "GPIO230"),
11435 + MTK_FUNCTION(1, "CONN_GPS_QP")
11439 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11441 + MTK_FUNCTION(0, "GPIO231"),
11442 + MTK_FUNCTION(1, "CONN_GPS_QN")
11446 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11448 + MTK_FUNCTION(0, "GPIO232"),
11449 + MTK_FUNCTION(1, "URXD1"),
11450 + MTK_FUNCTION(2, "UTXD1"),
11451 + MTK_FUNCTION(3, "MD_URXD0"),
11452 + MTK_FUNCTION(4, "MD_URXD1"),
11453 + MTK_FUNCTION(5, "MD_URXD2"),
11454 + MTK_FUNCTION(6, "C2K_URXD0"),
11455 + MTK_FUNCTION(7, "C2K_URXD1")
11459 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11461 + MTK_FUNCTION(0, "GPIO233"),
11462 + MTK_FUNCTION(1, "UTXD1"),
11463 + MTK_FUNCTION(2, "URXD1"),
11464 + MTK_FUNCTION(3, "MD_UTXD0"),
11465 + MTK_FUNCTION(4, "MD_UTXD1"),
11466 + MTK_FUNCTION(5, "MD_UTXD2"),
11467 + MTK_FUNCTION(6, "C2K_UTXD0"),
11468 + MTK_FUNCTION(7, "C2K_UTXD1")
11472 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11474 + MTK_FUNCTION(0, "GPIO234"),
11475 + MTK_FUNCTION(1, "SPI1_CLK_B"),
11476 + MTK_FUNCTION(2, "TP_UTXD1_AO"),
11477 + MTK_FUNCTION(3, "SCL4_1"),
11478 + MTK_FUNCTION(4, "UTXD0"),
11479 + MTK_FUNCTION(6, "PWM_A"),
11480 + MTK_FUNCTION(7, "DBG_MON_A23")
11484 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11486 + MTK_FUNCTION(0, "GPIO235"),
11487 + MTK_FUNCTION(1, "SPI1_MI_B"),
11488 + MTK_FUNCTION(2, "SPI1_MO_B"),
11489 + MTK_FUNCTION(3, "SDA4_1"),
11490 + MTK_FUNCTION(4, "URXD0"),
11491 + MTK_FUNCTION(6, "CLKM0"),
11492 + MTK_FUNCTION(7, "DBG_MON_A24")
11496 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11498 + MTK_FUNCTION(0, "GPIO236"),
11499 + MTK_FUNCTION(1, "SPI1_MO_B"),
11500 + MTK_FUNCTION(2, "SPI1_MI_B"),
11501 + MTK_FUNCTION(3, "SCL5_1"),
11502 + MTK_FUNCTION(4, "URTS0"),
11503 + MTK_FUNCTION(6, "PWM_B"),
11504 + MTK_FUNCTION(7, "DBG_MON_A25")
11508 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11510 + MTK_FUNCTION(0, "GPIO237"),
11511 + MTK_FUNCTION(1, "SPI1_CS_B"),
11512 + MTK_FUNCTION(2, "TP_URXD1_AO"),
11513 + MTK_FUNCTION(3, "SDA5_1"),
11514 + MTK_FUNCTION(4, "UCTS0"),
11515 + MTK_FUNCTION(6, "CLKM1"),
11516 + MTK_FUNCTION(7, "DBG_MON_A26")
11520 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11522 + MTK_FUNCTION(0, "GPIO238"),
11523 + MTK_FUNCTION(1, "SDA4_0")
11527 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11529 + MTK_FUNCTION(0, "GPIO239"),
11530 + MTK_FUNCTION(1, "SCL4_0")
11534 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11536 + MTK_FUNCTION(0, "GPIO240"),
11537 + MTK_FUNCTION(1, "SDA5_0")
11541 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11543 + MTK_FUNCTION(0, "GPIO241"),
11544 + MTK_FUNCTION(1, "SCL5_0")
11548 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11550 + MTK_FUNCTION(0, "GPIO242"),
11551 + MTK_FUNCTION(1, "SPI2_CLK_B"),
11552 + MTK_FUNCTION(2, "TP_UTXD2_AO"),
11553 + MTK_FUNCTION(3, "SCL4_2"),
11554 + MTK_FUNCTION(4, "UTXD1"),
11555 + MTK_FUNCTION(5, "URTS3"),
11556 + MTK_FUNCTION(6, "PWM_C"),
11557 + MTK_FUNCTION(7, "DBG_MON_A27")
11561 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11563 + MTK_FUNCTION(0, "GPIO243"),
11564 + MTK_FUNCTION(1, "SPI2_MI_B"),
11565 + MTK_FUNCTION(2, "SPI2_MO_B"),
11566 + MTK_FUNCTION(3, "SDA4_2"),
11567 + MTK_FUNCTION(4, "URXD1"),
11568 + MTK_FUNCTION(5, "UCTS3"),
11569 + MTK_FUNCTION(6, "CLKM2"),
11570 + MTK_FUNCTION(7, "DBG_MON_A28")
11574 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11576 + MTK_FUNCTION(0, "GPIO244"),
11577 + MTK_FUNCTION(1, "SPI2_MO_B"),
11578 + MTK_FUNCTION(2, "SPI2_MI_B"),
11579 + MTK_FUNCTION(3, "SCL5_2"),
11580 + MTK_FUNCTION(4, "URTS1"),
11581 + MTK_FUNCTION(5, "UTXD3"),
11582 + MTK_FUNCTION(6, "PWM_D"),
11583 + MTK_FUNCTION(7, "DBG_MON_A29")
11587 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11589 + MTK_FUNCTION(0, "GPIO245"),
11590 + MTK_FUNCTION(1, "SPI2_CS_B"),
11591 + MTK_FUNCTION(2, "TP_URXD2_AO"),
11592 + MTK_FUNCTION(3, "SDA5_2"),
11593 + MTK_FUNCTION(4, "UCTS1"),
11594 + MTK_FUNCTION(5, "URXD3"),
11595 + MTK_FUNCTION(6, "CLKM3"),
11596 + MTK_FUNCTION(7, "DBG_MON_A30")
11600 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11602 + MTK_FUNCTION(0, "GPIO246"),
11603 + MTK_FUNCTION(1, "I2S1_LRCK"),
11604 + MTK_FUNCTION(2, "I2S2_LRCK"),
11605 + MTK_FUNCTION(3, "I2S0_LRCK"),
11606 + MTK_FUNCTION(4, "I2S3_LRCK"),
11607 + MTK_FUNCTION(5, "PCM0_SYNC"),
11608 + MTK_FUNCTION(6, "SPI5_CLK_C"),
11609 + MTK_FUNCTION(7, "DBG_MON_A31")
11613 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11615 + MTK_FUNCTION(0, "GPIO247"),
11616 + MTK_FUNCTION(1, "I2S1_BCK"),
11617 + MTK_FUNCTION(2, "I2S2_BCK"),
11618 + MTK_FUNCTION(3, "I2S0_BCK"),
11619 + MTK_FUNCTION(4, "I2S3_BCK"),
11620 + MTK_FUNCTION(5, "PCM0_CLK"),
11621 + MTK_FUNCTION(6, "SPI5_MI_C"),
11622 + MTK_FUNCTION(7, "DBG_MON_A32")
11626 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11628 + MTK_FUNCTION(0, "GPIO248"),
11629 + MTK_FUNCTION(1, "I2S2_DI"),
11630 + MTK_FUNCTION(2, "I2S2_DI"),
11631 + MTK_FUNCTION(3, "I2S0_DI"),
11632 + MTK_FUNCTION(4, "I2S0_DI"),
11633 + MTK_FUNCTION(5, "PCM0_DI"),
11634 + MTK_FUNCTION(6, "SPI5_CS_C")
11638 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11640 + MTK_FUNCTION(0, "GPIO249"),
11641 + MTK_FUNCTION(1, "I2S1_DO"),
11642 + MTK_FUNCTION(2, "I2S1_DO"),
11643 + MTK_FUNCTION(3, "I2S3_DO"),
11644 + MTK_FUNCTION(4, "I2S3_DO"),
11645 + MTK_FUNCTION(5, "PCM0_DO"),
11646 + MTK_FUNCTION(6, "SPI5_MO_C"),
11647 + MTK_FUNCTION(7, "TRAP_SRAM_PWR_BYPASS")
11651 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11653 + MTK_FUNCTION(0, "GPIO250"),
11654 + MTK_FUNCTION(1, "SPI3_MI"),
11655 + MTK_FUNCTION(2, "SPI3_MO"),
11656 + MTK_FUNCTION(3, "IRTX_OUT"),
11657 + MTK_FUNCTION(6, "TP_URXD1_AO"),
11658 + MTK_FUNCTION(7, "DROP_ZONE")
11662 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11664 + MTK_FUNCTION(0, "GPIO251"),
11665 + MTK_FUNCTION(1, "SPI3_MO"),
11666 + MTK_FUNCTION(2, "SPI3_MI"),
11667 + MTK_FUNCTION(3, "CMFLASH"),
11668 + MTK_FUNCTION(6, "TP_UTXD1_AO"),
11669 + MTK_FUNCTION(7, "C2K_RTCK")
11673 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11675 + MTK_FUNCTION(0, "GPIO252"),
11676 + MTK_FUNCTION(1, "SPI3_CLK"),
11677 + MTK_FUNCTION(2, "SCL0_4"),
11678 + MTK_FUNCTION(3, "PWM_D"),
11679 + MTK_FUNCTION(7, "C2K_TMS")
11683 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11685 + MTK_FUNCTION(0, "GPIO253"),
11686 + MTK_FUNCTION(1, "SPI3_CS"),
11687 + MTK_FUNCTION(2, "SDA0_4"),
11688 + MTK_FUNCTION(3, "PWM_A"),
11689 + MTK_FUNCTION(7, "C2K_TCK")
11693 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11695 + MTK_FUNCTION(0, "GPIO254"),
11696 + MTK_FUNCTION(1, "I2S1_MCK"),
11697 + MTK_FUNCTION(2, "I2S2_MCK"),
11698 + MTK_FUNCTION(3, "I2S0_MCK"),
11699 + MTK_FUNCTION(4, "I2S3_MCK"),
11700 + MTK_FUNCTION(5, "CLKM0"),
11701 + MTK_FUNCTION(7, "C2K_TDI")
11705 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11707 + MTK_FUNCTION(0, "GPIO255"),
11708 + MTK_FUNCTION(1, "CLKM1"),
11709 + MTK_FUNCTION(2, "DISP_PWM"),
11710 + MTK_FUNCTION(3, "PWM_B"),
11711 + MTK_FUNCTION(6, "TP_GPIO1_AO"),
11712 + MTK_FUNCTION(7, "C2K_TDO")
11716 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11718 + MTK_FUNCTION(0, "GPIO256"),
11719 + MTK_FUNCTION(1, "CLKM2"),
11720 + MTK_FUNCTION(2, "IRTX_OUT"),
11721 + MTK_FUNCTION(3, "PWM_C"),
11722 + MTK_FUNCTION(6, "TP_GPIO0_AO"),
11723 + MTK_FUNCTION(7, "C2K_NTRST")
11727 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11729 + MTK_FUNCTION(0, "GPIO257"),
11730 + MTK_FUNCTION(1, "IO_JTAG_TMS"),
11731 + MTK_FUNCTION(2, "LTE_JTAG_TMS"),
11732 + MTK_FUNCTION(3, "DFD_TMS"),
11733 + MTK_FUNCTION(4, "DAP_SIB1_SWD"),
11734 + MTK_FUNCTION(5, "ANC_JTAG_TMS"),
11735 + MTK_FUNCTION(6, "SCP_JTAG_TMS"),
11736 + MTK_FUNCTION(7, "C2K_DM_OTMS")
11740 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11742 + MTK_FUNCTION(0, "GPIO258"),
11743 + MTK_FUNCTION(1, "IO_JTAG_TCK"),
11744 + MTK_FUNCTION(2, "LTE_JTAG_TCK"),
11745 + MTK_FUNCTION(3, "DFD_TCK_XI"),
11746 + MTK_FUNCTION(4, "DAP_SIB1_SWCK"),
11747 + MTK_FUNCTION(5, "ANC_JTAG_TCK"),
11748 + MTK_FUNCTION(6, "SCP_JTAG_TCK"),
11749 + MTK_FUNCTION(7, "C2K_DM_OTCK")
11753 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11755 + MTK_FUNCTION(0, "GPIO259"),
11756 + MTK_FUNCTION(1, "IO_JTAG_TDI"),
11757 + MTK_FUNCTION(2, "LTE_JTAG_TDI"),
11758 + MTK_FUNCTION(3, "DFD_TDI"),
11759 + MTK_FUNCTION(5, "ANC_JTAG_TDI"),
11760 + MTK_FUNCTION(6, "SCP_JTAG_TDI"),
11761 + MTK_FUNCTION(7, "C2K_DM_OTDI")
11765 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11767 + MTK_FUNCTION(0, "GPIO260"),
11768 + MTK_FUNCTION(1, "IO_JTAG_TDO"),
11769 + MTK_FUNCTION(2, "LTE_JTAG_TDO"),
11770 + MTK_FUNCTION(3, "DFD_TDO"),
11771 + MTK_FUNCTION(5, "ANC_JTAG_TDO"),
11772 + MTK_FUNCTION(6, "SCP_JTAG_TDO"),
11773 + MTK_FUNCTION(7, "C2K_DM_OTDO")
11777 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11779 + MTK_FUNCTION(0, "GPIO261"),
11780 + MTK_FUNCTION(2, "LTE_JTAG_TRSTN"),
11781 + MTK_FUNCTION(3, "DFD_NTRST"),
11782 + MTK_FUNCTION(5, "ANC_JTAG_TRSTN"),
11783 + MTK_FUNCTION(6, "SCP_JTAG_TRSTN"),
11784 + MTK_FUNCTION(7, "C2K_DM_JTINTP")
11788 +#endif /* __PINCTRL_MTK_MT6797_H */
11789 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8183.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8183.h
11790 new file mode 100644
11791 index 000000000000..79adf5b8a186
11793 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8183.h
11795 +/* SPDX-License-Identifier: GPL-2.0 */
11797 + * Copyright (C) 2018 MediaTek Inc.
11799 + * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
11803 +#ifndef __PINCTRL_MTK_MT8183_H
11804 +#define __PINCTRL_MTK_MT8183_H
11806 +#include "pinctrl-paris.h"
11808 +static struct mtk_pin_desc mtk_pins_mt8183[] = {
11811 + MTK_EINT_FUNCTION(0, 0),
11813 + MTK_FUNCTION(0, "GPIO0"),
11814 + MTK_FUNCTION(1, "MRG_SYNC"),
11815 + MTK_FUNCTION(2, "PCM0_SYNC"),
11816 + MTK_FUNCTION(3, "TP_GPIO0_AO"),
11817 + MTK_FUNCTION(4, "SRCLKENAI0"),
11818 + MTK_FUNCTION(5, "SCP_SPI2_CS"),
11819 + MTK_FUNCTION(6, "I2S3_MCK"),
11820 + MTK_FUNCTION(7, "SPI2_CSB")
11824 + MTK_EINT_FUNCTION(0, 1),
11826 + MTK_FUNCTION(0, "GPIO1"),
11827 + MTK_FUNCTION(1, "MRG_CLK"),
11828 + MTK_FUNCTION(2, "PCM0_CLK"),
11829 + MTK_FUNCTION(3, "TP_GPIO1_AO"),
11830 + MTK_FUNCTION(4, "CLKM3"),
11831 + MTK_FUNCTION(5, "SCP_SPI2_MO"),
11832 + MTK_FUNCTION(6, "I2S3_BCK"),
11833 + MTK_FUNCTION(7, "SPI2_MO")
11837 + MTK_EINT_FUNCTION(0, 2),
11839 + MTK_FUNCTION(0, "GPIO2"),
11840 + MTK_FUNCTION(1, "MRG_DO"),
11841 + MTK_FUNCTION(2, "PCM0_DO"),
11842 + MTK_FUNCTION(3, "TP_GPIO2_AO"),
11843 + MTK_FUNCTION(4, "SCL6"),
11844 + MTK_FUNCTION(5, "SCP_SPI2_CK"),
11845 + MTK_FUNCTION(6, "I2S3_LRCK"),
11846 + MTK_FUNCTION(7, "SPI2_CLK")
11850 + MTK_EINT_FUNCTION(0, 3),
11852 + MTK_FUNCTION(0, "GPIO3"),
11853 + MTK_FUNCTION(1, "MRG_DI"),
11854 + MTK_FUNCTION(2, "PCM0_DI"),
11855 + MTK_FUNCTION(3, "TP_GPIO3_AO"),
11856 + MTK_FUNCTION(4, "SDA6"),
11857 + MTK_FUNCTION(5, "TDM_MCK"),
11858 + MTK_FUNCTION(6, "I2S3_DO"),
11859 + MTK_FUNCTION(7, "SCP_VREQ_VAO")
11863 + MTK_EINT_FUNCTION(0, 4),
11865 + MTK_FUNCTION(0, "GPIO4"),
11866 + MTK_FUNCTION(1, "PWM_B"),
11867 + MTK_FUNCTION(2, "I2S0_MCK"),
11868 + MTK_FUNCTION(3, "SSPM_UTXD_AO"),
11869 + MTK_FUNCTION(4, "MD_URXD1"),
11870 + MTK_FUNCTION(5, "TDM_BCK"),
11871 + MTK_FUNCTION(6, "TP_GPIO4_AO"),
11872 + MTK_FUNCTION(7, "DAP_MD32_SWD")
11876 + MTK_EINT_FUNCTION(0, 5),
11878 + MTK_FUNCTION(0, "GPIO5"),
11879 + MTK_FUNCTION(1, "PWM_C"),
11880 + MTK_FUNCTION(2, "I2S0_BCK"),
11881 + MTK_FUNCTION(3, "SSPM_URXD_AO"),
11882 + MTK_FUNCTION(4, "MD_UTXD1"),
11883 + MTK_FUNCTION(5, "TDM_LRCK"),
11884 + MTK_FUNCTION(6, "TP_GPIO5_AO"),
11885 + MTK_FUNCTION(7, "DAP_MD32_SWCK")
11889 + MTK_EINT_FUNCTION(0, 6),
11891 + MTK_FUNCTION(0, "GPIO6"),
11892 + MTK_FUNCTION(1, "PWM_A"),
11893 + MTK_FUNCTION(2, "I2S0_LRCK"),
11894 + MTK_FUNCTION(3, "IDDIG"),
11895 + MTK_FUNCTION(4, "MD_URXD0"),
11896 + MTK_FUNCTION(5, "TDM_DATA0"),
11897 + MTK_FUNCTION(6, "TP_GPIO6_AO"),
11898 + MTK_FUNCTION(7, "CMFLASH")
11902 + MTK_EINT_FUNCTION(0, 7),
11904 + MTK_FUNCTION(0, "GPIO7"),
11905 + MTK_FUNCTION(1, "SPI1_B_MI"),
11906 + MTK_FUNCTION(2, "I2S0_DI"),
11907 + MTK_FUNCTION(3, "USB_DRVVBUS"),
11908 + MTK_FUNCTION(4, "MD_UTXD0"),
11909 + MTK_FUNCTION(5, "TDM_DATA1"),
11910 + MTK_FUNCTION(6, "TP_GPIO7_AO"),
11911 + MTK_FUNCTION(7, "DVFSRC_EXT_REQ")
11915 + MTK_EINT_FUNCTION(0, 8),
11917 + MTK_FUNCTION(0, "GPIO8"),
11918 + MTK_FUNCTION(1, "SPI1_B_CSB"),
11919 + MTK_FUNCTION(2, "ANT_SEL3"),
11920 + MTK_FUNCTION(3, "SCL7"),
11921 + MTK_FUNCTION(4, "CONN_MCU_TRST_B"),
11922 + MTK_FUNCTION(5, "TDM_DATA2"),
11923 + MTK_FUNCTION(6, "MD_INT0"),
11924 + MTK_FUNCTION(7, "JTRSTN_SEL1")
11928 + MTK_EINT_FUNCTION(0, 9),
11930 + MTK_FUNCTION(0, "GPIO9"),
11931 + MTK_FUNCTION(1, "SPI1_B_MO"),
11932 + MTK_FUNCTION(2, "ANT_SEL4"),
11933 + MTK_FUNCTION(3, "CMMCLK2"),
11934 + MTK_FUNCTION(4, "CONN_MCU_DBGACK_N"),
11935 + MTK_FUNCTION(5, "SSPM_JTAG_TRSTN"),
11936 + MTK_FUNCTION(6, "IO_JTAG_TRSTN"),
11937 + MTK_FUNCTION(7, "DBG_MON_B10")
11941 + MTK_EINT_FUNCTION(0, 10),
11943 + MTK_FUNCTION(0, "GPIO10"),
11944 + MTK_FUNCTION(1, "SPI1_B_CLK"),
11945 + MTK_FUNCTION(2, "ANT_SEL5"),
11946 + MTK_FUNCTION(3, "CMMCLK3"),
11947 + MTK_FUNCTION(4, "CONN_MCU_DBGI_N"),
11948 + MTK_FUNCTION(5, "TDM_DATA3"),
11949 + MTK_FUNCTION(6, "EXT_FRAME_SYNC"),
11950 + MTK_FUNCTION(7, "DBG_MON_B11")
11954 + MTK_EINT_FUNCTION(0, 11),
11956 + MTK_FUNCTION(0, "GPIO11"),
11957 + MTK_FUNCTION(1, "TP_URXD1_AO"),
11958 + MTK_FUNCTION(2, "IDDIG"),
11959 + MTK_FUNCTION(3, "SCL6"),
11960 + MTK_FUNCTION(4, "UCTS1"),
11961 + MTK_FUNCTION(5, "UCTS0"),
11962 + MTK_FUNCTION(6, "SRCLKENAI1"),
11963 + MTK_FUNCTION(7, "I2S5_MCK")
11967 + MTK_EINT_FUNCTION(0, 12),
11969 + MTK_FUNCTION(0, "GPIO12"),
11970 + MTK_FUNCTION(1, "TP_UTXD1_AO"),
11971 + MTK_FUNCTION(2, "USB_DRVVBUS"),
11972 + MTK_FUNCTION(3, "SDA6"),
11973 + MTK_FUNCTION(4, "URTS1"),
11974 + MTK_FUNCTION(5, "URTS0"),
11975 + MTK_FUNCTION(6, "I2S2_DI2"),
11976 + MTK_FUNCTION(7, "I2S5_BCK")
11980 + MTK_EINT_FUNCTION(0, 13),
11982 + MTK_FUNCTION(0, "GPIO13"),
11983 + MTK_FUNCTION(1, "DBPI_D0"),
11984 + MTK_FUNCTION(2, "SPI5_MI"),
11985 + MTK_FUNCTION(3, "PCM0_SYNC"),
11986 + MTK_FUNCTION(4, "MD_URXD0"),
11987 + MTK_FUNCTION(5, "ANT_SEL3"),
11988 + MTK_FUNCTION(6, "I2S0_MCK"),
11989 + MTK_FUNCTION(7, "DBG_MON_B15")
11993 + MTK_EINT_FUNCTION(0, 14),
11995 + MTK_FUNCTION(0, "GPIO14"),
11996 + MTK_FUNCTION(1, "DBPI_D1"),
11997 + MTK_FUNCTION(2, "SPI5_CSB"),
11998 + MTK_FUNCTION(3, "PCM0_CLK"),
11999 + MTK_FUNCTION(4, "MD_UTXD0"),
12000 + MTK_FUNCTION(5, "ANT_SEL4"),
12001 + MTK_FUNCTION(6, "I2S0_BCK"),
12002 + MTK_FUNCTION(7, "DBG_MON_B16")
12006 + MTK_EINT_FUNCTION(0, 15),
12008 + MTK_FUNCTION(0, "GPIO15"),
12009 + MTK_FUNCTION(1, "DBPI_D2"),
12010 + MTK_FUNCTION(2, "SPI5_MO"),
12011 + MTK_FUNCTION(3, "PCM0_DO"),
12012 + MTK_FUNCTION(4, "MD_URXD1"),
12013 + MTK_FUNCTION(5, "ANT_SEL5"),
12014 + MTK_FUNCTION(6, "I2S0_LRCK"),
12015 + MTK_FUNCTION(7, "DBG_MON_B17")
12019 + MTK_EINT_FUNCTION(0, 16),
12021 + MTK_FUNCTION(0, "GPIO16"),
12022 + MTK_FUNCTION(1, "DBPI_D3"),
12023 + MTK_FUNCTION(2, "SPI5_CLK"),
12024 + MTK_FUNCTION(3, "PCM0_DI"),
12025 + MTK_FUNCTION(4, "MD_UTXD1"),
12026 + MTK_FUNCTION(5, "ANT_SEL6"),
12027 + MTK_FUNCTION(6, "I2S0_DI"),
12028 + MTK_FUNCTION(7, "DBG_MON_B23")
12032 + MTK_EINT_FUNCTION(0, 17),
12034 + MTK_FUNCTION(0, "GPIO17"),
12035 + MTK_FUNCTION(1, "DBPI_D4"),
12036 + MTK_FUNCTION(2, "SPI4_MI"),
12037 + MTK_FUNCTION(3, "CONN_MCU_TRST_B"),
12038 + MTK_FUNCTION(4, "MD_INT0"),
12039 + MTK_FUNCTION(5, "ANT_SEL7"),
12040 + MTK_FUNCTION(6, "I2S3_MCK"),
12041 + MTK_FUNCTION(7, "DBG_MON_A1")
12045 + MTK_EINT_FUNCTION(0, 18),
12047 + MTK_FUNCTION(0, "GPIO18"),
12048 + MTK_FUNCTION(1, "DBPI_D5"),
12049 + MTK_FUNCTION(2, "SPI4_CSB"),
12050 + MTK_FUNCTION(3, "CONN_MCU_DBGI_N"),
12051 + MTK_FUNCTION(4, "MD_INT0"),
12052 + MTK_FUNCTION(5, "SCP_VREQ_VAO"),
12053 + MTK_FUNCTION(6, "I2S3_BCK"),
12054 + MTK_FUNCTION(7, "DBG_MON_A2")
12058 + MTK_EINT_FUNCTION(0, 19),
12060 + MTK_FUNCTION(0, "GPIO19"),
12061 + MTK_FUNCTION(1, "DBPI_D6"),
12062 + MTK_FUNCTION(2, "SPI4_MO"),
12063 + MTK_FUNCTION(3, "CONN_MCU_TDO"),
12064 + MTK_FUNCTION(4, "MD_INT2_C2K_UIM1_HOT_PLUG"),
12065 + MTK_FUNCTION(5, "URXD1"),
12066 + MTK_FUNCTION(6, "I2S3_LRCK"),
12067 + MTK_FUNCTION(7, "DBG_MON_A3")
12071 + MTK_EINT_FUNCTION(0, 20),
12073 + MTK_FUNCTION(0, "GPIO20"),
12074 + MTK_FUNCTION(1, "DBPI_D7"),
12075 + MTK_FUNCTION(2, "SPI4_CLK"),
12076 + MTK_FUNCTION(3, "CONN_MCU_DBGACK_N"),
12077 + MTK_FUNCTION(4, "MD_INT1_C2K_UIM0_HOT_PLUG"),
12078 + MTK_FUNCTION(5, "UTXD1"),
12079 + MTK_FUNCTION(6, "I2S3_DO"),
12080 + MTK_FUNCTION(7, "DBG_MON_A19")
12084 + MTK_EINT_FUNCTION(0, 21),
12086 + MTK_FUNCTION(0, "GPIO21"),
12087 + MTK_FUNCTION(1, "DBPI_D8"),
12088 + MTK_FUNCTION(2, "SPI3_MI"),
12089 + MTK_FUNCTION(3, "CONN_MCU_TMS"),
12090 + MTK_FUNCTION(4, "DAP_MD32_SWD"),
12091 + MTK_FUNCTION(5, "CONN_MCU_AICE_TMSC"),
12092 + MTK_FUNCTION(6, "I2S2_MCK"),
12093 + MTK_FUNCTION(7, "DBG_MON_B5")
12097 + MTK_EINT_FUNCTION(0, 22),
12099 + MTK_FUNCTION(0, "GPIO22"),
12100 + MTK_FUNCTION(1, "DBPI_D9"),
12101 + MTK_FUNCTION(2, "SPI3_CSB"),
12102 + MTK_FUNCTION(3, "CONN_MCU_TCK"),
12103 + MTK_FUNCTION(4, "DAP_MD32_SWCK"),
12104 + MTK_FUNCTION(5, "CONN_MCU_AICE_TCKC"),
12105 + MTK_FUNCTION(6, "I2S2_BCK"),
12106 + MTK_FUNCTION(7, "DBG_MON_B6")
12110 + MTK_EINT_FUNCTION(0, 23),
12112 + MTK_FUNCTION(0, "GPIO23"),
12113 + MTK_FUNCTION(1, "DBPI_D10"),
12114 + MTK_FUNCTION(2, "SPI3_MO"),
12115 + MTK_FUNCTION(3, "CONN_MCU_TDI"),
12116 + MTK_FUNCTION(4, "UCTS1"),
12117 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
12118 + MTK_FUNCTION(6, "I2S2_LRCK"),
12119 + MTK_FUNCTION(7, "DBG_MON_B7")
12123 + MTK_EINT_FUNCTION(0, 24),
12125 + MTK_FUNCTION(0, "GPIO24"),
12126 + MTK_FUNCTION(1, "DBPI_D11"),
12127 + MTK_FUNCTION(2, "SPI3_CLK"),
12128 + MTK_FUNCTION(3, "SRCLKENAI0"),
12129 + MTK_FUNCTION(4, "URTS1"),
12130 + MTK_FUNCTION(5, "IO_JTAG_TCK"),
12131 + MTK_FUNCTION(6, "I2S2_DI"),
12132 + MTK_FUNCTION(7, "DBG_MON_B31")
12136 + MTK_EINT_FUNCTION(0, 25),
12138 + MTK_FUNCTION(0, "GPIO25"),
12139 + MTK_FUNCTION(1, "DBPI_HSYNC"),
12140 + MTK_FUNCTION(2, "ANT_SEL0"),
12141 + MTK_FUNCTION(3, "SCL6"),
12142 + MTK_FUNCTION(4, "KPCOL2"),
12143 + MTK_FUNCTION(5, "IO_JTAG_TMS"),
12144 + MTK_FUNCTION(6, "I2S1_MCK"),
12145 + MTK_FUNCTION(7, "DBG_MON_B0")
12149 + MTK_EINT_FUNCTION(0, 26),
12151 + MTK_FUNCTION(0, "GPIO26"),
12152 + MTK_FUNCTION(1, "DBPI_VSYNC"),
12153 + MTK_FUNCTION(2, "ANT_SEL1"),
12154 + MTK_FUNCTION(3, "SDA6"),
12155 + MTK_FUNCTION(4, "KPROW2"),
12156 + MTK_FUNCTION(5, "IO_JTAG_TDI"),
12157 + MTK_FUNCTION(6, "I2S1_BCK"),
12158 + MTK_FUNCTION(7, "DBG_MON_B1")
12162 + MTK_EINT_FUNCTION(0, 27),
12164 + MTK_FUNCTION(0, "GPIO27"),
12165 + MTK_FUNCTION(1, "DBPI_DE"),
12166 + MTK_FUNCTION(2, "ANT_SEL2"),
12167 + MTK_FUNCTION(3, "SCL7"),
12168 + MTK_FUNCTION(4, "DMIC_CLK"),
12169 + MTK_FUNCTION(5, "IO_JTAG_TDO"),
12170 + MTK_FUNCTION(6, "I2S1_LRCK"),
12171 + MTK_FUNCTION(7, "DBG_MON_B9")
12175 + MTK_EINT_FUNCTION(0, 28),
12177 + MTK_FUNCTION(0, "GPIO28"),
12178 + MTK_FUNCTION(1, "DBPI_CK"),
12179 + MTK_FUNCTION(2, "DVFSRC_EXT_REQ"),
12180 + MTK_FUNCTION(3, "SDA7"),
12181 + MTK_FUNCTION(4, "DMIC_DAT"),
12182 + MTK_FUNCTION(5, "IO_JTAG_TRSTN"),
12183 + MTK_FUNCTION(6, "I2S1_DO"),
12184 + MTK_FUNCTION(7, "DBG_MON_B32")
12188 + MTK_EINT_FUNCTION(0, 29),
12190 + MTK_FUNCTION(0, "GPIO29"),
12191 + MTK_FUNCTION(1, "MSDC1_CLK"),
12192 + MTK_FUNCTION(2, "IO_JTAG_TCK"),
12193 + MTK_FUNCTION(3, "UDI_TCK"),
12194 + MTK_FUNCTION(4, "CONN_DSP_JCK"),
12195 + MTK_FUNCTION(5, "SSPM_JTAG_TCK"),
12196 + MTK_FUNCTION(6, "PCM1_CLK"),
12197 + MTK_FUNCTION(7, "DBG_MON_A6")
12201 + MTK_EINT_FUNCTION(0, 30),
12203 + MTK_FUNCTION(0, "GPIO30"),
12204 + MTK_FUNCTION(1, "MSDC1_DAT3"),
12205 + MTK_FUNCTION(2, "DAP_MD32_SWD"),
12206 + MTK_FUNCTION(3, "CONN_MCU_AICE_TMSC"),
12207 + MTK_FUNCTION(4, "CONN_DSP_JINTP"),
12208 + MTK_FUNCTION(5, "SSPM_JTAG_TRSTN"),
12209 + MTK_FUNCTION(6, "PCM1_DI"),
12210 + MTK_FUNCTION(7, "DBG_MON_A7")
12214 + MTK_EINT_FUNCTION(0, 31),
12216 + MTK_FUNCTION(0, "GPIO31"),
12217 + MTK_FUNCTION(1, "MSDC1_CMD"),
12218 + MTK_FUNCTION(2, "IO_JTAG_TMS"),
12219 + MTK_FUNCTION(3, "UDI_TMS"),
12220 + MTK_FUNCTION(4, "CONN_DSP_JMS"),
12221 + MTK_FUNCTION(5, "SSPM_JTAG_TMS"),
12222 + MTK_FUNCTION(6, "PCM1_SYNC"),
12223 + MTK_FUNCTION(7, "DBG_MON_A8")
12227 + MTK_EINT_FUNCTION(0, 32),
12229 + MTK_FUNCTION(0, "GPIO32"),
12230 + MTK_FUNCTION(1, "MSDC1_DAT0"),
12231 + MTK_FUNCTION(2, "IO_JTAG_TDI"),
12232 + MTK_FUNCTION(3, "UDI_TDI"),
12233 + MTK_FUNCTION(4, "CONN_DSP_JDI"),
12234 + MTK_FUNCTION(5, "SSPM_JTAG_TDI"),
12235 + MTK_FUNCTION(6, "PCM1_DO0"),
12236 + MTK_FUNCTION(7, "DBG_MON_A9")
12240 + MTK_EINT_FUNCTION(0, 33),
12242 + MTK_FUNCTION(0, "GPIO33"),
12243 + MTK_FUNCTION(1, "MSDC1_DAT2"),
12244 + MTK_FUNCTION(2, "IO_JTAG_TRSTN"),
12245 + MTK_FUNCTION(3, "UDI_NTRST"),
12246 + MTK_FUNCTION(4, "DAP_MD32_SWCK"),
12247 + MTK_FUNCTION(5, "CONN_MCU_AICE_TCKC"),
12248 + MTK_FUNCTION(6, "PCM1_DO2"),
12249 + MTK_FUNCTION(7, "DBG_MON_A10")
12253 + MTK_EINT_FUNCTION(0, 34),
12255 + MTK_FUNCTION(0, "GPIO34"),
12256 + MTK_FUNCTION(1, "MSDC1_DAT1"),
12257 + MTK_FUNCTION(2, "IO_JTAG_TDO"),
12258 + MTK_FUNCTION(3, "UDI_TDO"),
12259 + MTK_FUNCTION(4, "CONN_DSP_JDO"),
12260 + MTK_FUNCTION(5, "SSPM_JTAG_TDO"),
12261 + MTK_FUNCTION(6, "PCM1_DO1"),
12262 + MTK_FUNCTION(7, "DBG_MON_A11")
12266 + MTK_EINT_FUNCTION(0, 35),
12268 + MTK_FUNCTION(0, "GPIO35"),
12269 + MTK_FUNCTION(1, "MD1_SIM2_SIO"),
12270 + MTK_FUNCTION(2, "CCU_JTAG_TDO"),
12271 + MTK_FUNCTION(3, "MD1_SIM1_SIO"),
12272 + MTK_FUNCTION(5, "SCP_JTAG_TDO"),
12273 + MTK_FUNCTION(6, "CONN_DSP_JMS"),
12274 + MTK_FUNCTION(7, "DBG_MON_A28")
12278 + MTK_EINT_FUNCTION(0, 36),
12280 + MTK_FUNCTION(0, "GPIO36"),
12281 + MTK_FUNCTION(1, "MD1_SIM2_SRST"),
12282 + MTK_FUNCTION(2, "CCU_JTAG_TMS"),
12283 + MTK_FUNCTION(3, "MD1_SIM1_SRST"),
12284 + MTK_FUNCTION(4, "CONN_MCU_AICE_TMSC"),
12285 + MTK_FUNCTION(5, "SCP_JTAG_TMS"),
12286 + MTK_FUNCTION(6, "CONN_DSP_JINTP"),
12287 + MTK_FUNCTION(7, "DBG_MON_A29")
12291 + MTK_EINT_FUNCTION(0, 37),
12293 + MTK_FUNCTION(0, "GPIO37"),
12294 + MTK_FUNCTION(1, "MD1_SIM2_SCLK"),
12295 + MTK_FUNCTION(2, "CCU_JTAG_TDI"),
12296 + MTK_FUNCTION(3, "MD1_SIM1_SCLK"),
12297 + MTK_FUNCTION(5, "SCP_JTAG_TDI"),
12298 + MTK_FUNCTION(6, "CONN_DSP_JDO"),
12299 + MTK_FUNCTION(7, "DBG_MON_A30")
12303 + MTK_EINT_FUNCTION(0, 38),
12305 + MTK_FUNCTION(0, "GPIO38"),
12306 + MTK_FUNCTION(1, "MD1_SIM1_SCLK"),
12307 + MTK_FUNCTION(3, "MD1_SIM2_SCLK"),
12308 + MTK_FUNCTION(4, "CONN_MCU_AICE_TCKC"),
12309 + MTK_FUNCTION(7, "DBG_MON_A20")
12313 + MTK_EINT_FUNCTION(0, 39),
12315 + MTK_FUNCTION(0, "GPIO39"),
12316 + MTK_FUNCTION(1, "MD1_SIM1_SRST"),
12317 + MTK_FUNCTION(2, "CCU_JTAG_TCK"),
12318 + MTK_FUNCTION(3, "MD1_SIM2_SRST"),
12319 + MTK_FUNCTION(5, "SCP_JTAG_TCK"),
12320 + MTK_FUNCTION(6, "CONN_DSP_JCK"),
12321 + MTK_FUNCTION(7, "DBG_MON_A31")
12325 + MTK_EINT_FUNCTION(0, 40),
12327 + MTK_FUNCTION(0, "GPIO40"),
12328 + MTK_FUNCTION(1, "MD1_SIM1_SIO"),
12329 + MTK_FUNCTION(2, "CCU_JTAG_TRST"),
12330 + MTK_FUNCTION(3, "MD1_SIM2_SIO"),
12331 + MTK_FUNCTION(5, "SCP_JTAG_TRSTN"),
12332 + MTK_FUNCTION(6, "CONN_DSP_JDI"),
12333 + MTK_FUNCTION(7, "DBG_MON_A32")
12337 + MTK_EINT_FUNCTION(0, 41),
12339 + MTK_FUNCTION(0, "GPIO41"),
12340 + MTK_FUNCTION(1, "IDDIG"),
12341 + MTK_FUNCTION(2, "URXD1"),
12342 + MTK_FUNCTION(3, "UCTS0"),
12343 + MTK_FUNCTION(4, "SSPM_UTXD_AO"),
12344 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
12345 + MTK_FUNCTION(6, "DMIC_CLK")
12349 + MTK_EINT_FUNCTION(0, 42),
12351 + MTK_FUNCTION(0, "GPIO42"),
12352 + MTK_FUNCTION(1, "USB_DRVVBUS"),
12353 + MTK_FUNCTION(2, "UTXD1"),
12354 + MTK_FUNCTION(3, "URTS0"),
12355 + MTK_FUNCTION(4, "SSPM_URXD_AO"),
12356 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
12357 + MTK_FUNCTION(6, "DMIC_DAT")
12361 + MTK_EINT_FUNCTION(0, 43),
12363 + MTK_FUNCTION(0, "GPIO43"),
12364 + MTK_FUNCTION(1, "DISP_PWM")
12368 + MTK_EINT_FUNCTION(0, 44),
12370 + MTK_FUNCTION(0, "GPIO44"),
12371 + MTK_FUNCTION(1, "DSI_TE")
12375 + MTK_EINT_FUNCTION(0, 45),
12377 + MTK_FUNCTION(0, "GPIO45"),
12378 + MTK_FUNCTION(1, "LCM_RST")
12382 + MTK_EINT_FUNCTION(0, 46),
12384 + MTK_FUNCTION(0, "GPIO46"),
12385 + MTK_FUNCTION(1, "MD_INT2_C2K_UIM1_HOT_PLUG"),
12386 + MTK_FUNCTION(2, "URXD1"),
12387 + MTK_FUNCTION(3, "UCTS1"),
12388 + MTK_FUNCTION(4, "CCU_UTXD_AO"),
12389 + MTK_FUNCTION(5, "TP_UCTS1_AO"),
12390 + MTK_FUNCTION(6, "IDDIG"),
12391 + MTK_FUNCTION(7, "I2S5_LRCK")
12395 + MTK_EINT_FUNCTION(0, 47),
12397 + MTK_FUNCTION(0, "GPIO47"),
12398 + MTK_FUNCTION(1, "MD_INT1_C2K_UIM0_HOT_PLUG"),
12399 + MTK_FUNCTION(2, "UTXD1"),
12400 + MTK_FUNCTION(3, "URTS1"),
12401 + MTK_FUNCTION(4, "CCU_URXD_AO"),
12402 + MTK_FUNCTION(5, "TP_URTS1_AO"),
12403 + MTK_FUNCTION(6, "USB_DRVVBUS"),
12404 + MTK_FUNCTION(7, "I2S5_DO")
12408 + MTK_EINT_FUNCTION(0, 48),
12410 + MTK_FUNCTION(0, "GPIO48"),
12411 + MTK_FUNCTION(1, "SCL5")
12415 + MTK_EINT_FUNCTION(0, 49),
12417 + MTK_FUNCTION(0, "GPIO49"),
12418 + MTK_FUNCTION(1, "SDA5")
12422 + MTK_EINT_FUNCTION(0, 50),
12424 + MTK_FUNCTION(0, "GPIO50"),
12425 + MTK_FUNCTION(1, "SCL3")
12429 + MTK_EINT_FUNCTION(0, 51),
12431 + MTK_FUNCTION(0, "GPIO51"),
12432 + MTK_FUNCTION(1, "SDA3")
12436 + MTK_EINT_FUNCTION(0, 52),
12438 + MTK_FUNCTION(0, "GPIO52"),
12439 + MTK_FUNCTION(1, "BPI_ANT2")
12443 + MTK_EINT_FUNCTION(0, 53),
12445 + MTK_FUNCTION(0, "GPIO53"),
12446 + MTK_FUNCTION(1, "BPI_ANT0")
12450 + MTK_EINT_FUNCTION(0, 54),
12452 + MTK_FUNCTION(0, "GPIO54"),
12453 + MTK_FUNCTION(1, "BPI_OLAT1")
12457 + MTK_EINT_FUNCTION(0, 55),
12459 + MTK_FUNCTION(0, "GPIO55"),
12460 + MTK_FUNCTION(1, "BPI_BUS8")
12464 + MTK_EINT_FUNCTION(0, 56),
12466 + MTK_FUNCTION(0, "GPIO56"),
12467 + MTK_FUNCTION(1, "BPI_BUS9"),
12468 + MTK_FUNCTION(2, "SCL_6306")
12472 + MTK_EINT_FUNCTION(0, 57),
12474 + MTK_FUNCTION(0, "GPIO57"),
12475 + MTK_FUNCTION(1, "BPI_BUS10"),
12476 + MTK_FUNCTION(2, "SDA_6306")
12480 + MTK_EINT_FUNCTION(0, 58),
12482 + MTK_FUNCTION(0, "GPIO58"),
12483 + MTK_FUNCTION(1, "RFIC0_BSI_D2"),
12484 + MTK_FUNCTION(2, "SPM_BSI_D2"),
12485 + MTK_FUNCTION(3, "PWM_B")
12489 + MTK_EINT_FUNCTION(0, 59),
12491 + MTK_FUNCTION(0, "GPIO59"),
12492 + MTK_FUNCTION(1, "RFIC0_BSI_D1"),
12493 + MTK_FUNCTION(2, "SPM_BSI_D1")
12497 + MTK_EINT_FUNCTION(0, 60),
12499 + MTK_FUNCTION(0, "GPIO60"),
12500 + MTK_FUNCTION(1, "RFIC0_BSI_D0"),
12501 + MTK_FUNCTION(2, "SPM_BSI_D0")
12505 + MTK_EINT_FUNCTION(0, 61),
12507 + MTK_FUNCTION(0, "GPIO61"),
12508 + MTK_FUNCTION(1, "MIPI1_SDATA")
12512 + MTK_EINT_FUNCTION(0, 62),
12514 + MTK_FUNCTION(0, "GPIO62"),
12515 + MTK_FUNCTION(1, "MIPI1_SCLK")
12519 + MTK_EINT_FUNCTION(0, 63),
12521 + MTK_FUNCTION(0, "GPIO63"),
12522 + MTK_FUNCTION(1, "MIPI0_SDATA")
12526 + MTK_EINT_FUNCTION(0, 64),
12528 + MTK_FUNCTION(0, "GPIO64"),
12529 + MTK_FUNCTION(1, "MIPI0_SCLK")
12533 + MTK_EINT_FUNCTION(0, 65),
12535 + MTK_FUNCTION(0, "GPIO65"),
12536 + MTK_FUNCTION(1, "MIPI3_SDATA"),
12537 + MTK_FUNCTION(2, "BPI_OLAT2")
12541 + MTK_EINT_FUNCTION(0, 66),
12543 + MTK_FUNCTION(0, "GPIO66"),
12544 + MTK_FUNCTION(1, "MIPI3_SCLK"),
12545 + MTK_FUNCTION(2, "BPI_OLAT3")
12549 + MTK_EINT_FUNCTION(0, 67),
12551 + MTK_FUNCTION(0, "GPIO67"),
12552 + MTK_FUNCTION(1, "MIPI2_SDATA")
12556 + MTK_EINT_FUNCTION(0, 68),
12558 + MTK_FUNCTION(0, "GPIO68"),
12559 + MTK_FUNCTION(1, "MIPI2_SCLK")
12563 + MTK_EINT_FUNCTION(0, 69),
12565 + MTK_FUNCTION(0, "GPIO69"),
12566 + MTK_FUNCTION(1, "BPI_BUS7")
12570 + MTK_EINT_FUNCTION(0, 70),
12572 + MTK_FUNCTION(0, "GPIO70"),
12573 + MTK_FUNCTION(1, "BPI_BUS6")
12577 + MTK_EINT_FUNCTION(0, 71),
12579 + MTK_FUNCTION(0, "GPIO71"),
12580 + MTK_FUNCTION(1, "BPI_BUS5")
12584 + MTK_EINT_FUNCTION(0, 72),
12586 + MTK_FUNCTION(0, "GPIO72"),
12587 + MTK_FUNCTION(1, "BPI_BUS4")
12591 + MTK_EINT_FUNCTION(0, 73),
12593 + MTK_FUNCTION(0, "GPIO73"),
12594 + MTK_FUNCTION(1, "BPI_BUS3")
12598 + MTK_EINT_FUNCTION(0, 74),
12600 + MTK_FUNCTION(0, "GPIO74"),
12601 + MTK_FUNCTION(1, "BPI_BUS2")
12605 + MTK_EINT_FUNCTION(0, 75),
12607 + MTK_FUNCTION(0, "GPIO75"),
12608 + MTK_FUNCTION(1, "BPI_BUS1")
12612 + MTK_EINT_FUNCTION(0, 76),
12614 + MTK_FUNCTION(0, "GPIO76"),
12615 + MTK_FUNCTION(1, "BPI_BUS0")
12619 + MTK_EINT_FUNCTION(0, 77),
12621 + MTK_FUNCTION(0, "GPIO77"),
12622 + MTK_FUNCTION(1, "BPI_ANT1")
12626 + MTK_EINT_FUNCTION(0, 78),
12628 + MTK_FUNCTION(0, "GPIO78"),
12629 + MTK_FUNCTION(1, "BPI_OLAT0")
12633 + MTK_EINT_FUNCTION(0, 79),
12635 + MTK_FUNCTION(0, "GPIO79"),
12636 + MTK_FUNCTION(1, "BPI_PA_VM1"),
12637 + MTK_FUNCTION(2, "MIPI4_SDATA")
12641 + MTK_EINT_FUNCTION(0, 80),
12643 + MTK_FUNCTION(0, "GPIO80"),
12644 + MTK_FUNCTION(1, "BPI_PA_VM0"),
12645 + MTK_FUNCTION(2, "MIPI4_SCLK")
12649 + MTK_EINT_FUNCTION(0, 81),
12651 + MTK_FUNCTION(0, "GPIO81"),
12652 + MTK_FUNCTION(1, "SDA1")
12656 + MTK_EINT_FUNCTION(0, 82),
12658 + MTK_FUNCTION(0, "GPIO82"),
12659 + MTK_FUNCTION(1, "SDA0")
12663 + MTK_EINT_FUNCTION(0, 83),
12665 + MTK_FUNCTION(0, "GPIO83"),
12666 + MTK_FUNCTION(1, "SCL0")
12670 + MTK_EINT_FUNCTION(0, 84),
12672 + MTK_FUNCTION(0, "GPIO84"),
12673 + MTK_FUNCTION(1, "SCL1")
12677 + MTK_EINT_FUNCTION(0, 85),
12679 + MTK_FUNCTION(0, "GPIO85"),
12680 + MTK_FUNCTION(1, "SPI0_MI"),
12681 + MTK_FUNCTION(2, "SCP_SPI0_MI"),
12682 + MTK_FUNCTION(3, "CLKM3"),
12683 + MTK_FUNCTION(4, "I2S1_BCK"),
12684 + MTK_FUNCTION(5, "MFG_DFD_JTAG_TDO"),
12685 + MTK_FUNCTION(6, "DFD_TDO"),
12686 + MTK_FUNCTION(7, "JTDO_SEL1")
12690 + MTK_EINT_FUNCTION(0, 86),
12692 + MTK_FUNCTION(0, "GPIO86"),
12693 + MTK_FUNCTION(1, "SPI0_CSB"),
12694 + MTK_FUNCTION(2, "SCP_SPI0_CS"),
12695 + MTK_FUNCTION(3, "CLKM0"),
12696 + MTK_FUNCTION(4, "I2S1_LRCK"),
12697 + MTK_FUNCTION(5, "MFG_DFD_JTAG_TMS"),
12698 + MTK_FUNCTION(6, "DFD_TMS"),
12699 + MTK_FUNCTION(7, "JTMS_SEL1")
12703 + MTK_EINT_FUNCTION(0, 87),
12705 + MTK_FUNCTION(0, "GPIO87"),
12706 + MTK_FUNCTION(1, "SPI0_MO"),
12707 + MTK_FUNCTION(2, "SCP_SPI0_MO"),
12708 + MTK_FUNCTION(3, "SDA1"),
12709 + MTK_FUNCTION(4, "I2S1_DO"),
12710 + MTK_FUNCTION(5, "MFG_DFD_JTAG_TDI"),
12711 + MTK_FUNCTION(6, "DFD_TDI"),
12712 + MTK_FUNCTION(7, "JTDI_SEL1")
12716 + MTK_EINT_FUNCTION(0, 88),
12718 + MTK_FUNCTION(0, "GPIO88"),
12719 + MTK_FUNCTION(1, "SPI0_CLK"),
12720 + MTK_FUNCTION(2, "SCP_SPI0_CK"),
12721 + MTK_FUNCTION(3, "SCL1"),
12722 + MTK_FUNCTION(4, "I2S1_MCK"),
12723 + MTK_FUNCTION(5, "MFG_DFD_JTAG_TCK"),
12724 + MTK_FUNCTION(6, "DFD_TCK_XI"),
12725 + MTK_FUNCTION(7, "JTCK_SEL1")
12729 + MTK_EINT_FUNCTION(0, 89),
12731 + MTK_FUNCTION(0, "GPIO89"),
12732 + MTK_FUNCTION(1, "SRCLKENAI0"),
12733 + MTK_FUNCTION(2, "PWM_C"),
12734 + MTK_FUNCTION(3, "I2S5_BCK"),
12735 + MTK_FUNCTION(4, "ANT_SEL6"),
12736 + MTK_FUNCTION(5, "SDA8"),
12737 + MTK_FUNCTION(6, "CMVREF0"),
12738 + MTK_FUNCTION(7, "DBG_MON_A21")
12742 + MTK_EINT_FUNCTION(0, 90),
12744 + MTK_FUNCTION(0, "GPIO90"),
12745 + MTK_FUNCTION(1, "PWM_A"),
12746 + MTK_FUNCTION(2, "CMMCLK2"),
12747 + MTK_FUNCTION(3, "I2S5_LRCK"),
12748 + MTK_FUNCTION(4, "SCP_VREQ_VAO"),
12749 + MTK_FUNCTION(5, "SCL8"),
12750 + MTK_FUNCTION(6, "PTA_RXD"),
12751 + MTK_FUNCTION(7, "DBG_MON_A22")
12755 + MTK_EINT_FUNCTION(0, 91),
12757 + MTK_FUNCTION(0, "GPIO91"),
12758 + MTK_FUNCTION(1, "KPROW1"),
12759 + MTK_FUNCTION(2, "PWM_B"),
12760 + MTK_FUNCTION(3, "I2S5_DO"),
12761 + MTK_FUNCTION(4, "ANT_SEL7"),
12762 + MTK_FUNCTION(5, "CMMCLK3"),
12763 + MTK_FUNCTION(6, "PTA_TXD")
12767 + MTK_EINT_FUNCTION(0, 92),
12769 + MTK_FUNCTION(0, "GPIO92"),
12770 + MTK_FUNCTION(1, "KPROW0")
12774 + MTK_EINT_FUNCTION(0, 93),
12776 + MTK_FUNCTION(0, "GPIO93"),
12777 + MTK_FUNCTION(1, "KPCOL0"),
12778 + MTK_FUNCTION(7, "DBG_MON_B27")
12782 + MTK_EINT_FUNCTION(0, 94),
12784 + MTK_FUNCTION(0, "GPIO94"),
12785 + MTK_FUNCTION(1, "KPCOL1"),
12786 + MTK_FUNCTION(2, "I2S2_DI2"),
12787 + MTK_FUNCTION(3, "I2S5_MCK"),
12788 + MTK_FUNCTION(4, "CMMCLK2"),
12789 + MTK_FUNCTION(5, "SCP_SPI2_MI"),
12790 + MTK_FUNCTION(6, "SRCLKENAI1"),
12791 + MTK_FUNCTION(7, "SPI2_MI")
12795 + MTK_EINT_FUNCTION(0, 95),
12797 + MTK_FUNCTION(0, "GPIO95"),
12798 + MTK_FUNCTION(1, "URXD0"),
12799 + MTK_FUNCTION(2, "UTXD0"),
12800 + MTK_FUNCTION(3, "MD_URXD0"),
12801 + MTK_FUNCTION(4, "MD_URXD1"),
12802 + MTK_FUNCTION(5, "SSPM_URXD_AO"),
12803 + MTK_FUNCTION(6, "CCU_URXD_AO")
12807 + MTK_EINT_FUNCTION(0, 96),
12809 + MTK_FUNCTION(0, "GPIO96"),
12810 + MTK_FUNCTION(1, "UTXD0"),
12811 + MTK_FUNCTION(2, "URXD0"),
12812 + MTK_FUNCTION(3, "MD_UTXD0"),
12813 + MTK_FUNCTION(4, "MD_UTXD1"),
12814 + MTK_FUNCTION(5, "SSPM_UTXD_AO"),
12815 + MTK_FUNCTION(6, "CCU_UTXD_AO"),
12816 + MTK_FUNCTION(7, "DBG_MON_B2")
12820 + MTK_EINT_FUNCTION(0, 97),
12822 + MTK_FUNCTION(0, "GPIO97"),
12823 + MTK_FUNCTION(1, "UCTS0"),
12824 + MTK_FUNCTION(2, "I2S2_MCK"),
12825 + MTK_FUNCTION(3, "IDDIG"),
12826 + MTK_FUNCTION(4, "CONN_MCU_TDO"),
12827 + MTK_FUNCTION(5, "SSPM_JTAG_TDO"),
12828 + MTK_FUNCTION(6, "IO_JTAG_TDO"),
12829 + MTK_FUNCTION(7, "DBG_MON_B3")
12833 + MTK_EINT_FUNCTION(0, 98),
12835 + MTK_FUNCTION(0, "GPIO98"),
12836 + MTK_FUNCTION(1, "URTS0"),
12837 + MTK_FUNCTION(2, "I2S2_BCK"),
12838 + MTK_FUNCTION(3, "USB_DRVVBUS"),
12839 + MTK_FUNCTION(4, "CONN_MCU_TMS"),
12840 + MTK_FUNCTION(5, "SSPM_JTAG_TMS"),
12841 + MTK_FUNCTION(6, "IO_JTAG_TMS"),
12842 + MTK_FUNCTION(7, "DBG_MON_B4")
12846 + MTK_EINT_FUNCTION(0, 99),
12848 + MTK_FUNCTION(0, "GPIO99"),
12849 + MTK_FUNCTION(1, "CMMCLK0"),
12850 + MTK_FUNCTION(4, "CONN_MCU_AICE_TMSC"),
12851 + MTK_FUNCTION(7, "DBG_MON_B28")
12855 + MTK_EINT_FUNCTION(0, 100),
12857 + MTK_FUNCTION(0, "GPIO100"),
12858 + MTK_FUNCTION(1, "CMMCLK1"),
12859 + MTK_FUNCTION(2, "PWM_C"),
12860 + MTK_FUNCTION(3, "MD_INT1_C2K_UIM0_HOT_PLUG"),
12861 + MTK_FUNCTION(4, "CONN_MCU_AICE_TCKC"),
12862 + MTK_FUNCTION(7, "DBG_MON_B29")
12866 + MTK_EINT_FUNCTION(0, 101),
12868 + MTK_FUNCTION(0, "GPIO101"),
12869 + MTK_FUNCTION(1, "CLKM2"),
12870 + MTK_FUNCTION(2, "I2S2_LRCK"),
12871 + MTK_FUNCTION(3, "CMVREF1"),
12872 + MTK_FUNCTION(4, "CONN_MCU_TCK"),
12873 + MTK_FUNCTION(5, "SSPM_JTAG_TCK"),
12874 + MTK_FUNCTION(6, "IO_JTAG_TCK")
12878 + MTK_EINT_FUNCTION(0, 102),
12880 + MTK_FUNCTION(0, "GPIO102"),
12881 + MTK_FUNCTION(1, "CLKM1"),
12882 + MTK_FUNCTION(2, "I2S2_DI"),
12883 + MTK_FUNCTION(3, "DVFSRC_EXT_REQ"),
12884 + MTK_FUNCTION(4, "CONN_MCU_TDI"),
12885 + MTK_FUNCTION(5, "SSPM_JTAG_TDI"),
12886 + MTK_FUNCTION(6, "IO_JTAG_TDI"),
12887 + MTK_FUNCTION(7, "DBG_MON_B8")
12891 + MTK_EINT_FUNCTION(0, 103),
12893 + MTK_FUNCTION(0, "GPIO103"),
12894 + MTK_FUNCTION(1, "SCL2")
12898 + MTK_EINT_FUNCTION(0, 104),
12900 + MTK_FUNCTION(0, "GPIO104"),
12901 + MTK_FUNCTION(1, "SDA2")
12905 + MTK_EINT_FUNCTION(0, 105),
12907 + MTK_FUNCTION(0, "GPIO105"),
12908 + MTK_FUNCTION(1, "SCL4")
12912 + MTK_EINT_FUNCTION(0, 106),
12914 + MTK_FUNCTION(0, "GPIO106"),
12915 + MTK_FUNCTION(1, "SDA4")
12919 + MTK_EINT_FUNCTION(0, 107),
12921 + MTK_FUNCTION(0, "GPIO107"),
12922 + MTK_FUNCTION(1, "DMIC_CLK"),
12923 + MTK_FUNCTION(2, "ANT_SEL0"),
12924 + MTK_FUNCTION(3, "CLKM0"),
12925 + MTK_FUNCTION(4, "SDA7"),
12926 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
12927 + MTK_FUNCTION(6, "PWM_A"),
12928 + MTK_FUNCTION(7, "DBG_MON_B12")
12932 + MTK_EINT_FUNCTION(0, 108),
12934 + MTK_FUNCTION(0, "GPIO108"),
12935 + MTK_FUNCTION(1, "CMMCLK2"),
12936 + MTK_FUNCTION(2, "ANT_SEL1"),
12937 + MTK_FUNCTION(3, "CLKM1"),
12938 + MTK_FUNCTION(4, "SCL8"),
12939 + MTK_FUNCTION(5, "DAP_MD32_SWD"),
12940 + MTK_FUNCTION(6, "PWM_B"),
12941 + MTK_FUNCTION(7, "DBG_MON_B13")
12945 + MTK_EINT_FUNCTION(0, 109),
12947 + MTK_FUNCTION(0, "GPIO109"),
12948 + MTK_FUNCTION(1, "DMIC_DAT"),
12949 + MTK_FUNCTION(2, "ANT_SEL2"),
12950 + MTK_FUNCTION(3, "CLKM2"),
12951 + MTK_FUNCTION(4, "SDA8"),
12952 + MTK_FUNCTION(5, "DAP_MD32_SWCK"),
12953 + MTK_FUNCTION(6, "PWM_C"),
12954 + MTK_FUNCTION(7, "DBG_MON_B14")
12958 + MTK_EINT_FUNCTION(0, 110),
12960 + MTK_FUNCTION(0, "GPIO110"),
12961 + MTK_FUNCTION(1, "SCL7"),
12962 + MTK_FUNCTION(2, "ANT_SEL0"),
12963 + MTK_FUNCTION(3, "TP_URXD1_AO"),
12964 + MTK_FUNCTION(4, "USB_DRVVBUS"),
12965 + MTK_FUNCTION(5, "SRCLKENAI1"),
12966 + MTK_FUNCTION(6, "KPCOL2"),
12967 + MTK_FUNCTION(7, "URXD1")
12971 + MTK_EINT_FUNCTION(0, 111),
12973 + MTK_FUNCTION(0, "GPIO111"),
12974 + MTK_FUNCTION(1, "CMMCLK3"),
12975 + MTK_FUNCTION(2, "ANT_SEL1"),
12976 + MTK_FUNCTION(3, "SRCLKENAI0"),
12977 + MTK_FUNCTION(4, "SCP_VREQ_VAO"),
12978 + MTK_FUNCTION(5, "MD_INT2_C2K_UIM1_HOT_PLUG"),
12979 + MTK_FUNCTION(7, "DVFSRC_EXT_REQ")
12983 + MTK_EINT_FUNCTION(0, 112),
12985 + MTK_FUNCTION(0, "GPIO112"),
12986 + MTK_FUNCTION(1, "SDA7"),
12987 + MTK_FUNCTION(2, "ANT_SEL2"),
12988 + MTK_FUNCTION(3, "TP_UTXD1_AO"),
12989 + MTK_FUNCTION(4, "IDDIG"),
12990 + MTK_FUNCTION(5, "AGPS_SYNC"),
12991 + MTK_FUNCTION(6, "KPROW2"),
12992 + MTK_FUNCTION(7, "UTXD1")
12996 + MTK_EINT_FUNCTION(0, 113),
12998 + MTK_FUNCTION(0, "GPIO113"),
12999 + MTK_FUNCTION(1, "CONN_TOP_CLK"),
13000 + MTK_FUNCTION(3, "SCL6"),
13001 + MTK_FUNCTION(4, "AUXIF_CLK0"),
13002 + MTK_FUNCTION(6, "TP_UCTS1_AO")
13006 + MTK_EINT_FUNCTION(0, 114),
13008 + MTK_FUNCTION(0, "GPIO114"),
13009 + MTK_FUNCTION(1, "CONN_TOP_DATA"),
13010 + MTK_FUNCTION(3, "SDA6"),
13011 + MTK_FUNCTION(4, "AUXIF_ST0"),
13012 + MTK_FUNCTION(6, "TP_URTS1_AO")
13016 + MTK_EINT_FUNCTION(0, 115),
13018 + MTK_FUNCTION(0, "GPIO115"),
13019 + MTK_FUNCTION(1, "CONN_BT_CLK"),
13020 + MTK_FUNCTION(2, "UTXD1"),
13021 + MTK_FUNCTION(3, "PTA_TXD"),
13022 + MTK_FUNCTION(4, "AUXIF_CLK1"),
13023 + MTK_FUNCTION(5, "DAP_MD32_SWD"),
13024 + MTK_FUNCTION(6, "TP_UTXD1_AO")
13028 + MTK_EINT_FUNCTION(0, 116),
13030 + MTK_FUNCTION(0, "GPIO116"),
13031 + MTK_FUNCTION(1, "CONN_BT_DATA"),
13032 + MTK_FUNCTION(2, "IPU_JTAG_TRST"),
13033 + MTK_FUNCTION(4, "AUXIF_ST1"),
13034 + MTK_FUNCTION(5, "DAP_MD32_SWCK"),
13035 + MTK_FUNCTION(6, "TP_URXD2_AO"),
13036 + MTK_FUNCTION(7, "DBG_MON_A0")
13040 + MTK_EINT_FUNCTION(0, 117),
13042 + MTK_FUNCTION(0, "GPIO117"),
13043 + MTK_FUNCTION(1, "CONN_WF_HB0"),
13044 + MTK_FUNCTION(2, "IPU_JTAG_TDO"),
13045 + MTK_FUNCTION(6, "TP_UTXD2_AO"),
13046 + MTK_FUNCTION(7, "DBG_MON_A4")
13050 + MTK_EINT_FUNCTION(0, 118),
13052 + MTK_FUNCTION(0, "GPIO118"),
13053 + MTK_FUNCTION(1, "CONN_WF_HB1"),
13054 + MTK_FUNCTION(2, "IPU_JTAG_TDI"),
13055 + MTK_FUNCTION(5, "SSPM_URXD_AO"),
13056 + MTK_FUNCTION(6, "TP_UCTS2_AO"),
13057 + MTK_FUNCTION(7, "DBG_MON_A5")
13061 + MTK_EINT_FUNCTION(0, 119),
13063 + MTK_FUNCTION(0, "GPIO119"),
13064 + MTK_FUNCTION(1, "CONN_WF_HB2"),
13065 + MTK_FUNCTION(2, "IPU_JTAG_TCK"),
13066 + MTK_FUNCTION(5, "SSPM_UTXD_AO"),
13067 + MTK_FUNCTION(6, "TP_URTS2_AO")
13071 + MTK_EINT_FUNCTION(0, 120),
13073 + MTK_FUNCTION(0, "GPIO120"),
13074 + MTK_FUNCTION(1, "CONN_WB_PTA"),
13075 + MTK_FUNCTION(2, "IPU_JTAG_TMS"),
13076 + MTK_FUNCTION(5, "CCU_URXD_AO")
13080 + MTK_EINT_FUNCTION(0, 121),
13082 + MTK_FUNCTION(0, "GPIO121"),
13083 + MTK_FUNCTION(1, "CONN_HRST_B"),
13084 + MTK_FUNCTION(2, "URXD1"),
13085 + MTK_FUNCTION(3, "PTA_RXD"),
13086 + MTK_FUNCTION(5, "CCU_UTXD_AO"),
13087 + MTK_FUNCTION(6, "TP_URXD1_AO")
13091 + MTK_EINT_FUNCTION(0, 122),
13093 + MTK_FUNCTION(0, "GPIO122"),
13094 + MTK_FUNCTION(1, "MSDC0_CMD"),
13095 + MTK_FUNCTION(2, "SSPM_URXD2_AO"),
13096 + MTK_FUNCTION(3, "ANT_SEL1"),
13097 + MTK_FUNCTION(7, "DBG_MON_A12")
13101 + MTK_EINT_FUNCTION(0, 123),
13103 + MTK_FUNCTION(0, "GPIO123"),
13104 + MTK_FUNCTION(1, "MSDC0_DAT0"),
13105 + MTK_FUNCTION(3, "ANT_SEL0"),
13106 + MTK_FUNCTION(7, "DBG_MON_A13")
13110 + MTK_EINT_FUNCTION(0, 124),
13112 + MTK_FUNCTION(0, "GPIO124"),
13113 + MTK_FUNCTION(1, "MSDC0_CLK"),
13114 + MTK_FUNCTION(7, "DBG_MON_A14")
13118 + MTK_EINT_FUNCTION(0, 125),
13120 + MTK_FUNCTION(0, "GPIO125"),
13121 + MTK_FUNCTION(1, "MSDC0_DAT2"),
13122 + MTK_FUNCTION(3, "MRG_CLK"),
13123 + MTK_FUNCTION(7, "DBG_MON_A15")
13127 + MTK_EINT_FUNCTION(0, 126),
13129 + MTK_FUNCTION(0, "GPIO126"),
13130 + MTK_FUNCTION(1, "MSDC0_DAT4"),
13131 + MTK_FUNCTION(3, "ANT_SEL5"),
13132 + MTK_FUNCTION(6, "UFS_MPHY_SCL"),
13133 + MTK_FUNCTION(7, "DBG_MON_A16")
13137 + MTK_EINT_FUNCTION(0, 127),
13139 + MTK_FUNCTION(0, "GPIO127"),
13140 + MTK_FUNCTION(1, "MSDC0_DAT6"),
13141 + MTK_FUNCTION(3, "ANT_SEL4"),
13142 + MTK_FUNCTION(6, "UFS_MPHY_SDA"),
13143 + MTK_FUNCTION(7, "DBG_MON_A17")
13147 + MTK_EINT_FUNCTION(0, 128),
13149 + MTK_FUNCTION(0, "GPIO128"),
13150 + MTK_FUNCTION(1, "MSDC0_DAT1"),
13151 + MTK_FUNCTION(3, "ANT_SEL2"),
13152 + MTK_FUNCTION(6, "UFS_UNIPRO_SDA"),
13153 + MTK_FUNCTION(7, "DBG_MON_A18")
13157 + MTK_EINT_FUNCTION(0, 129),
13159 + MTK_FUNCTION(0, "GPIO129"),
13160 + MTK_FUNCTION(1, "MSDC0_DAT5"),
13161 + MTK_FUNCTION(3, "ANT_SEL3"),
13162 + MTK_FUNCTION(6, "UFS_UNIPRO_SCL"),
13163 + MTK_FUNCTION(7, "DBG_MON_A23")
13167 + MTK_EINT_FUNCTION(0, 130),
13169 + MTK_FUNCTION(0, "GPIO130"),
13170 + MTK_FUNCTION(1, "MSDC0_DAT7"),
13171 + MTK_FUNCTION(3, "MRG_DO"),
13172 + MTK_FUNCTION(7, "DBG_MON_A24")
13176 + MTK_EINT_FUNCTION(0, 131),
13178 + MTK_FUNCTION(0, "GPIO131"),
13179 + MTK_FUNCTION(1, "MSDC0_DSL"),
13180 + MTK_FUNCTION(3, "MRG_SYNC"),
13181 + MTK_FUNCTION(7, "DBG_MON_A25")
13185 + MTK_EINT_FUNCTION(0, 132),
13187 + MTK_FUNCTION(0, "GPIO132"),
13188 + MTK_FUNCTION(1, "MSDC0_DAT3"),
13189 + MTK_FUNCTION(3, "MRG_DI"),
13190 + MTK_FUNCTION(7, "DBG_MON_A26")
13194 + MTK_EINT_FUNCTION(0, 133),
13196 + MTK_FUNCTION(0, "GPIO133"),
13197 + MTK_FUNCTION(1, "MSDC0_RSTB"),
13198 + MTK_FUNCTION(3, "AGPS_SYNC"),
13199 + MTK_FUNCTION(7, "DBG_MON_A27")
13203 + MTK_EINT_FUNCTION(0, 134),
13205 + MTK_FUNCTION(0, "GPIO134"),
13206 + MTK_FUNCTION(1, "RTC32K_CK")
13210 + MTK_EINT_FUNCTION(0, 135),
13212 + MTK_FUNCTION(0, "GPIO135"),
13213 + MTK_FUNCTION(1, "WATCHDOG")
13217 + MTK_EINT_FUNCTION(0, 136),
13219 + MTK_FUNCTION(0, "GPIO136"),
13220 + MTK_FUNCTION(1, "AUD_CLK_MOSI"),
13221 + MTK_FUNCTION(2, "AUD_CLK_MISO"),
13222 + MTK_FUNCTION(3, "I2S1_MCK"),
13223 + MTK_FUNCTION(6, "UFS_UNIPRO_SCL")
13227 + MTK_EINT_FUNCTION(0, 137),
13229 + MTK_FUNCTION(0, "GPIO137"),
13230 + MTK_FUNCTION(1, "AUD_SYNC_MOSI"),
13231 + MTK_FUNCTION(2, "AUD_SYNC_MISO"),
13232 + MTK_FUNCTION(3, "I2S1_BCK")
13236 + MTK_EINT_FUNCTION(0, 138),
13238 + MTK_FUNCTION(0, "GPIO138"),
13239 + MTK_FUNCTION(1, "AUD_DAT_MOSI0"),
13240 + MTK_FUNCTION(2, "AUD_DAT_MISO0"),
13241 + MTK_FUNCTION(3, "I2S1_LRCK"),
13242 + MTK_FUNCTION(7, "DBG_MON_B24")
13246 + MTK_EINT_FUNCTION(0, 139),
13248 + MTK_FUNCTION(0, "GPIO139"),
13249 + MTK_FUNCTION(1, "AUD_DAT_MOSI1"),
13250 + MTK_FUNCTION(2, "AUD_DAT_MISO1"),
13251 + MTK_FUNCTION(3, "I2S1_DO"),
13252 + MTK_FUNCTION(6, "UFS_MPHY_SDA")
13256 + MTK_EINT_FUNCTION(0, 140),
13258 + MTK_FUNCTION(0, "GPIO140"),
13259 + MTK_FUNCTION(1, "AUD_CLK_MISO"),
13260 + MTK_FUNCTION(2, "AUD_CLK_MOSI"),
13261 + MTK_FUNCTION(3, "I2S0_MCK"),
13262 + MTK_FUNCTION(6, "UFS_UNIPRO_SDA")
13266 + MTK_EINT_FUNCTION(0, 141),
13268 + MTK_FUNCTION(0, "GPIO141"),
13269 + MTK_FUNCTION(1, "AUD_SYNC_MISO"),
13270 + MTK_FUNCTION(2, "AUD_SYNC_MOSI"),
13271 + MTK_FUNCTION(3, "I2S0_BCK")
13275 + MTK_EINT_FUNCTION(0, 142),
13277 + MTK_FUNCTION(0, "GPIO142"),
13278 + MTK_FUNCTION(1, "AUD_DAT_MISO0"),
13279 + MTK_FUNCTION(2, "AUD_DAT_MOSI0"),
13280 + MTK_FUNCTION(3, "I2S0_LRCK"),
13281 + MTK_FUNCTION(4, "VOW_DAT_MISO"),
13282 + MTK_FUNCTION(7, "DBG_MON_B25")
13286 + MTK_EINT_FUNCTION(0, 143),
13288 + MTK_FUNCTION(0, "GPIO143"),
13289 + MTK_FUNCTION(1, "AUD_DAT_MISO1"),
13290 + MTK_FUNCTION(2, "AUD_DAT_MOSI1"),
13291 + MTK_FUNCTION(3, "I2S0_DI"),
13292 + MTK_FUNCTION(4, "VOW_CLK_MISO"),
13293 + MTK_FUNCTION(6, "UFS_MPHY_SCL"),
13294 + MTK_FUNCTION(7, "DBG_MON_B26")
13298 + MTK_EINT_FUNCTION(0, 144),
13300 + MTK_FUNCTION(0, "GPIO144"),
13301 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
13302 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
13306 + MTK_EINT_FUNCTION(0, 145),
13308 + MTK_FUNCTION(0, "GPIO145"),
13309 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
13313 + MTK_EINT_FUNCTION(0, 146),
13315 + MTK_FUNCTION(0, "GPIO146"),
13316 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
13317 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
13321 + MTK_EINT_FUNCTION(0, 147),
13323 + MTK_FUNCTION(0, "GPIO147"),
13324 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
13328 + MTK_EINT_FUNCTION(0, 148),
13330 + MTK_FUNCTION(0, "GPIO148"),
13331 + MTK_FUNCTION(1, "SRCLKENA0")
13335 + MTK_EINT_FUNCTION(0, 149),
13337 + MTK_FUNCTION(0, "GPIO149"),
13338 + MTK_FUNCTION(1, "SRCLKENA1")
13342 + MTK_EINT_FUNCTION(0, 150),
13344 + MTK_FUNCTION(0, "GPIO150"),
13345 + MTK_FUNCTION(1, "PWM_A"),
13346 + MTK_FUNCTION(2, "CMFLASH"),
13347 + MTK_FUNCTION(3, "CLKM0"),
13348 + MTK_FUNCTION(7, "DBG_MON_B30")
13352 + MTK_EINT_FUNCTION(0, 151),
13354 + MTK_FUNCTION(0, "GPIO151"),
13355 + MTK_FUNCTION(1, "PWM_B"),
13356 + MTK_FUNCTION(2, "CMVREF0"),
13357 + MTK_FUNCTION(3, "CLKM1"),
13358 + MTK_FUNCTION(7, "DBG_MON_B20")
13362 + MTK_EINT_FUNCTION(0, 152),
13364 + MTK_FUNCTION(0, "GPIO152"),
13365 + MTK_FUNCTION(1, "PWM_C"),
13366 + MTK_FUNCTION(2, "CMFLASH"),
13367 + MTK_FUNCTION(3, "CLKM2"),
13368 + MTK_FUNCTION(7, "DBG_MON_B21")
13372 + MTK_EINT_FUNCTION(0, 153),
13374 + MTK_FUNCTION(0, "GPIO153"),
13375 + MTK_FUNCTION(1, "PWM_A"),
13376 + MTK_FUNCTION(2, "CMVREF0"),
13377 + MTK_FUNCTION(3, "CLKM3"),
13378 + MTK_FUNCTION(7, "DBG_MON_B22")
13382 + MTK_EINT_FUNCTION(0, 154),
13384 + MTK_FUNCTION(0, "GPIO154"),
13385 + MTK_FUNCTION(1, "SCP_VREQ_VAO"),
13386 + MTK_FUNCTION(2, "DVFSRC_EXT_REQ"),
13387 + MTK_FUNCTION(7, "DBG_MON_B18")
13391 + MTK_EINT_FUNCTION(0, 155),
13393 + MTK_FUNCTION(0, "GPIO155"),
13394 + MTK_FUNCTION(1, "ANT_SEL0"),
13395 + MTK_FUNCTION(2, "DVFSRC_EXT_REQ"),
13396 + MTK_FUNCTION(3, "CMVREF1"),
13397 + MTK_FUNCTION(7, "SCP_JTAG_TDI")
13401 + MTK_EINT_FUNCTION(0, 156),
13403 + MTK_FUNCTION(0, "GPIO156"),
13404 + MTK_FUNCTION(1, "ANT_SEL1"),
13405 + MTK_FUNCTION(2, "SRCLKENAI0"),
13406 + MTK_FUNCTION(3, "SCL6"),
13407 + MTK_FUNCTION(4, "KPCOL2"),
13408 + MTK_FUNCTION(5, "IDDIG"),
13409 + MTK_FUNCTION(7, "SCP_JTAG_TCK")
13413 + MTK_EINT_FUNCTION(0, 157),
13415 + MTK_FUNCTION(0, "GPIO157"),
13416 + MTK_FUNCTION(1, "ANT_SEL2"),
13417 + MTK_FUNCTION(2, "SRCLKENAI1"),
13418 + MTK_FUNCTION(3, "SDA6"),
13419 + MTK_FUNCTION(4, "KPROW2"),
13420 + MTK_FUNCTION(5, "USB_DRVVBUS"),
13421 + MTK_FUNCTION(7, "SCP_JTAG_TRSTN")
13425 + MTK_EINT_FUNCTION(0, 158),
13427 + MTK_FUNCTION(0, "GPIO158"),
13428 + MTK_FUNCTION(1, "ANT_SEL3")
13432 + MTK_EINT_FUNCTION(0, 159),
13434 + MTK_FUNCTION(0, "GPIO159"),
13435 + MTK_FUNCTION(1, "ANT_SEL4")
13439 + MTK_EINT_FUNCTION(0, 160),
13441 + MTK_FUNCTION(0, "GPIO160"),
13442 + MTK_FUNCTION(1, "ANT_SEL5")
13446 + MTK_EINT_FUNCTION(0, 161),
13448 + MTK_FUNCTION(0, "GPIO161"),
13449 + MTK_FUNCTION(1, "SPI1_A_MI"),
13450 + MTK_FUNCTION(2, "SCP_SPI1_MI"),
13451 + MTK_FUNCTION(3, "IDDIG"),
13452 + MTK_FUNCTION(4, "ANT_SEL6"),
13453 + MTK_FUNCTION(5, "KPCOL2"),
13454 + MTK_FUNCTION(6, "PTA_RXD"),
13455 + MTK_FUNCTION(7, "DBG_MON_B19")
13459 + MTK_EINT_FUNCTION(0, 162),
13461 + MTK_FUNCTION(0, "GPIO162"),
13462 + MTK_FUNCTION(1, "SPI1_A_CSB"),
13463 + MTK_FUNCTION(2, "SCP_SPI1_CS"),
13464 + MTK_FUNCTION(3, "USB_DRVVBUS"),
13465 + MTK_FUNCTION(4, "ANT_SEL5"),
13466 + MTK_FUNCTION(5, "KPROW2"),
13467 + MTK_FUNCTION(6, "PTA_TXD")
13471 + MTK_EINT_FUNCTION(0, 163),
13473 + MTK_FUNCTION(0, "GPIO163"),
13474 + MTK_FUNCTION(1, "SPI1_A_MO"),
13475 + MTK_FUNCTION(2, "SCP_SPI1_MO"),
13476 + MTK_FUNCTION(3, "SDA1"),
13477 + MTK_FUNCTION(4, "ANT_SEL4"),
13478 + MTK_FUNCTION(5, "CMMCLK2"),
13479 + MTK_FUNCTION(6, "DMIC_CLK")
13483 + MTK_EINT_FUNCTION(0, 164),
13485 + MTK_FUNCTION(0, "GPIO164"),
13486 + MTK_FUNCTION(1, "SPI1_A_CLK"),
13487 + MTK_FUNCTION(2, "SCP_SPI1_CK"),
13488 + MTK_FUNCTION(3, "SCL1"),
13489 + MTK_FUNCTION(4, "ANT_SEL3"),
13490 + MTK_FUNCTION(5, "CMMCLK3"),
13491 + MTK_FUNCTION(6, "DMIC_DAT")
13495 + MTK_EINT_FUNCTION(0, 165),
13497 + MTK_FUNCTION(0, "GPIO165"),
13498 + MTK_FUNCTION(1, "PWM_B"),
13499 + MTK_FUNCTION(2, "CMMCLK2"),
13500 + MTK_FUNCTION(3, "SCP_VREQ_VAO"),
13501 + MTK_FUNCTION(6, "TDM_MCK_2ND"),
13502 + MTK_FUNCTION(7, "SCP_JTAG_TDO")
13506 + MTK_EINT_FUNCTION(0, 166),
13508 + MTK_FUNCTION(0, "GPIO166"),
13509 + MTK_FUNCTION(1, "ANT_SEL6")
13513 + MTK_EINT_FUNCTION(0, 167),
13515 + MTK_FUNCTION(0, "GPIO167"),
13516 + MTK_FUNCTION(1, "RFIC0_BSI_EN"),
13517 + MTK_FUNCTION(2, "SPM_BSI_EN")
13521 + MTK_EINT_FUNCTION(0, 168),
13523 + MTK_FUNCTION(0, "GPIO168"),
13524 + MTK_FUNCTION(1, "RFIC0_BSI_CK"),
13525 + MTK_FUNCTION(2, "SPM_BSI_CK")
13529 + MTK_EINT_FUNCTION(0, 169),
13531 + MTK_FUNCTION(0, "GPIO169"),
13532 + MTK_FUNCTION(1, "PWM_C"),
13533 + MTK_FUNCTION(2, "CMMCLK3"),
13534 + MTK_FUNCTION(3, "CMVREF1"),
13535 + MTK_FUNCTION(4, "ANT_SEL7"),
13536 + MTK_FUNCTION(5, "AGPS_SYNC"),
13537 + MTK_FUNCTION(6, "TDM_BCK_2ND"),
13538 + MTK_FUNCTION(7, "SCP_JTAG_TMS")
13542 + MTK_EINT_FUNCTION(0, 170),
13544 + MTK_FUNCTION(0, "GPIO170"),
13545 + MTK_FUNCTION(1, "I2S1_BCK"),
13546 + MTK_FUNCTION(2, "I2S3_BCK"),
13547 + MTK_FUNCTION(3, "SCL7"),
13548 + MTK_FUNCTION(4, "I2S5_BCK"),
13549 + MTK_FUNCTION(5, "EXT_FRAME_SYNC"),
13550 + MTK_FUNCTION(6, "TDM_LRCK_2ND"),
13551 + MTK_FUNCTION(7, "ANT_SEL3")
13555 + MTK_EINT_FUNCTION(0, 184),
13557 + MTK_FUNCTION(0, "GPIO171"),
13558 + MTK_FUNCTION(1, "I2S1_LRCK"),
13559 + MTK_FUNCTION(2, "I2S3_LRCK"),
13560 + MTK_FUNCTION(3, "SDA7"),
13561 + MTK_FUNCTION(4, "I2S5_LRCK"),
13562 + MTK_FUNCTION(5, "URXD1"),
13563 + MTK_FUNCTION(6, "TDM_DATA0_2ND"),
13564 + MTK_FUNCTION(7, "ANT_SEL4")
13568 + MTK_EINT_FUNCTION(0, 185),
13570 + MTK_FUNCTION(0, "GPIO172"),
13571 + MTK_FUNCTION(1, "I2S1_DO"),
13572 + MTK_FUNCTION(2, "I2S3_DO"),
13573 + MTK_FUNCTION(3, "SCL8"),
13574 + MTK_FUNCTION(4, "I2S5_DO"),
13575 + MTK_FUNCTION(5, "UTXD1"),
13576 + MTK_FUNCTION(6, "TDM_DATA1_2ND"),
13577 + MTK_FUNCTION(7, "ANT_SEL5")
13581 + MTK_EINT_FUNCTION(0, 186),
13583 + MTK_FUNCTION(0, "GPIO173"),
13584 + MTK_FUNCTION(1, "I2S1_MCK"),
13585 + MTK_FUNCTION(2, "I2S3_MCK"),
13586 + MTK_FUNCTION(3, "SDA8"),
13587 + MTK_FUNCTION(4, "I2S5_MCK"),
13588 + MTK_FUNCTION(5, "UCTS0"),
13589 + MTK_FUNCTION(6, "TDM_DATA2_2ND"),
13590 + MTK_FUNCTION(7, "ANT_SEL6")
13594 + MTK_EINT_FUNCTION(0, 187),
13596 + MTK_FUNCTION(0, "GPIO174"),
13597 + MTK_FUNCTION(1, "I2S2_DI"),
13598 + MTK_FUNCTION(2, "I2S0_DI"),
13599 + MTK_FUNCTION(3, "DVFSRC_EXT_REQ"),
13600 + MTK_FUNCTION(4, "I2S2_DI2"),
13601 + MTK_FUNCTION(5, "URTS0"),
13602 + MTK_FUNCTION(6, "TDM_DATA3_2ND"),
13603 + MTK_FUNCTION(7, "ANT_SEL7")
13607 + MTK_EINT_FUNCTION(0, 188),
13609 + MTK_FUNCTION(0, "GPIO175"),
13610 + MTK_FUNCTION(1, "ANT_SEL7")
13614 + MTK_EINT_FUNCTION(0, 189),
13616 + MTK_FUNCTION(0, "GPIO176")
13620 + MTK_EINT_FUNCTION(0, 190),
13622 + MTK_FUNCTION(0, "GPIO177")
13626 + MTK_EINT_FUNCTION(0, 191),
13628 + MTK_FUNCTION(0, "GPIO178")
13632 + MTK_EINT_FUNCTION(0, 192),
13634 + MTK_FUNCTION(0, "GPIO179")
13638 + MTK_EINT_FUNCTION(0, 171),
13640 + MTK_FUNCTION(0, "GPIO180")
13644 + MTK_EINT_FUNCTION(0, 172),
13646 + MTK_FUNCTION(0, "GPIO181")
13650 + MTK_EINT_FUNCTION(0, 173),
13652 + MTK_FUNCTION(0, "GPIO182")
13656 + MTK_EINT_FUNCTION(0, 174),
13658 + MTK_FUNCTION(0, "GPIO183")
13662 + MTK_EINT_FUNCTION(0, 175),
13664 + MTK_FUNCTION(0, "GPIO184")
13668 + MTK_EINT_FUNCTION(0, 177),
13670 + MTK_FUNCTION(0, "GPIO185")
13674 + MTK_EINT_FUNCTION(0, 178),
13676 + MTK_FUNCTION(0, "GPIO186")
13680 + MTK_EINT_FUNCTION(0, 179),
13682 + MTK_FUNCTION(0, "GPIO187")
13686 + MTK_EINT_FUNCTION(0, 180),
13688 + MTK_FUNCTION(0, "GPIO188")
13692 + MTK_EINT_FUNCTION(0, 181),
13694 + MTK_FUNCTION(0, "GPIO189")
13698 + MTK_EINT_FUNCTION(0, 182),
13700 + MTK_FUNCTION(0, "GPIO190")
13704 + MTK_EINT_FUNCTION(0, 183),
13706 + MTK_FUNCTION(0, "GPIO191")
13710 +#endif /* __PINCTRL_MTK_MT8183_H */
13711 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8516.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8516.h
13712 new file mode 100644
13713 index 000000000000..f7a4c6e4a026
13715 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8516.h
13717 +/* SPDX-License-Identifier: GPL-2.0 */
13719 + * Copyright (C) 2019 MediaTek Inc.
13721 +#ifndef __PINCTRL_MTK_MT8516_H
13722 +#define __PINCTRL_MTK_MT8516_H
13724 +#include <linux/pinctrl/pinctrl.h>
13725 +#include "pinctrl-mtk-common.h"
13727 +static const struct mtk_desc_pin mtk_pins_mt8516[] = {
13729 + PINCTRL_PIN(0, "EINT0"),
13731 + MTK_EINT_FUNCTION(0, 0),
13732 + MTK_FUNCTION(0, "GPIO0"),
13733 + MTK_FUNCTION(1, "PWM_B"),
13734 + MTK_FUNCTION(3, "I2S2_BCK"),
13735 + MTK_FUNCTION(4, "EXT_TXD0"),
13736 + MTK_FUNCTION(6, "SQICS"),
13737 + MTK_FUNCTION(7, "DBG_MON_A[6]")
13740 + PINCTRL_PIN(1, "EINT1"),
13742 + MTK_EINT_FUNCTION(0, 1),
13743 + MTK_FUNCTION(0, "GPIO1"),
13744 + MTK_FUNCTION(1, "PWM_C"),
13745 + MTK_FUNCTION(3, "I2S2_DI"),
13746 + MTK_FUNCTION(4, "EXT_TXD1"),
13747 + MTK_FUNCTION(5, "CONN_MCU_TDO"),
13748 + MTK_FUNCTION(6, "SQISO"),
13749 + MTK_FUNCTION(7, "DBG_MON_A[7]")
13752 + PINCTRL_PIN(2, "EINT2"),
13754 + MTK_EINT_FUNCTION(0, 2),
13755 + MTK_FUNCTION(0, "GPIO2"),
13756 + MTK_FUNCTION(1, "CLKM0"),
13757 + MTK_FUNCTION(3, "I2S2_LRCK"),
13758 + MTK_FUNCTION(4, "EXT_TXD2"),
13759 + MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"),
13760 + MTK_FUNCTION(6, "SQISI"),
13761 + MTK_FUNCTION(7, "DBG_MON_A[8]")
13764 + PINCTRL_PIN(3, "EINT3"),
13766 + MTK_EINT_FUNCTION(0, 3),
13767 + MTK_FUNCTION(0, "GPIO3"),
13768 + MTK_FUNCTION(1, "CLKM1"),
13769 + MTK_FUNCTION(3, "SPI_MI"),
13770 + MTK_FUNCTION(4, "EXT_TXD3"),
13771 + MTK_FUNCTION(5, "CONN_MCU_DBGI_N"),
13772 + MTK_FUNCTION(6, "SQIWP"),
13773 + MTK_FUNCTION(7, "DBG_MON_A[9]")
13776 + PINCTRL_PIN(4, "EINT4"),
13778 + MTK_EINT_FUNCTION(0, 4),
13779 + MTK_FUNCTION(0, "GPIO4"),
13780 + MTK_FUNCTION(1, "CLKM2"),
13781 + MTK_FUNCTION(3, "SPI_MO"),
13782 + MTK_FUNCTION(4, "EXT_TXC"),
13783 + MTK_FUNCTION(5, "CONN_MCU_TCK"),
13784 + MTK_FUNCTION(6, "CONN_MCU_AICE_JCKC"),
13785 + MTK_FUNCTION(7, "DBG_MON_A[10]")
13788 + PINCTRL_PIN(5, "EINT5"),
13790 + MTK_EINT_FUNCTION(0, 5),
13791 + MTK_FUNCTION(0, "GPIO5"),
13792 + MTK_FUNCTION(1, "UCTS2"),
13793 + MTK_FUNCTION(3, "SPI_CSB"),
13794 + MTK_FUNCTION(4, "EXT_RXER"),
13795 + MTK_FUNCTION(5, "CONN_MCU_TDI"),
13796 + MTK_FUNCTION(6, "CONN_TEST_CK"),
13797 + MTK_FUNCTION(7, "DBG_MON_A[11]")
13800 + PINCTRL_PIN(6, "EINT6"),
13802 + MTK_EINT_FUNCTION(0, 6),
13803 + MTK_FUNCTION(0, "GPIO6"),
13804 + MTK_FUNCTION(1, "URTS2"),
13805 + MTK_FUNCTION(3, "SPI_CLK"),
13806 + MTK_FUNCTION(4, "EXT_RXC"),
13807 + MTK_FUNCTION(5, "CONN_MCU_TRST_B"),
13808 + MTK_FUNCTION(7, "DBG_MON_A[12]")
13811 + PINCTRL_PIN(7, "EINT7"),
13813 + MTK_EINT_FUNCTION(0, 7),
13814 + MTK_FUNCTION(0, "GPIO7"),
13815 + MTK_FUNCTION(1, "SQIRST"),
13816 + MTK_FUNCTION(3, "SDA1_0"),
13817 + MTK_FUNCTION(4, "EXT_RXDV"),
13818 + MTK_FUNCTION(5, "CONN_MCU_TMS"),
13819 + MTK_FUNCTION(6, "CONN_MCU_AICE_JMSC"),
13820 + MTK_FUNCTION(7, "DBG_MON_A[13]")
13823 + PINCTRL_PIN(8, "EINT8"),
13825 + MTK_EINT_FUNCTION(0, 8),
13826 + MTK_FUNCTION(0, "GPIO8"),
13827 + MTK_FUNCTION(1, "SQICK"),
13828 + MTK_FUNCTION(2, "CLKM3"),
13829 + MTK_FUNCTION(3, "SCL1_0"),
13830 + MTK_FUNCTION(4, "EXT_RXD0"),
13831 + MTK_FUNCTION(5, "ANT_SEL0"),
13832 + MTK_FUNCTION(7, "DBG_MON_A[14]")
13835 + PINCTRL_PIN(9, "EINT9"),
13837 + MTK_EINT_FUNCTION(0, 9),
13838 + MTK_FUNCTION(0, "GPIO9"),
13839 + MTK_FUNCTION(1, "CLKM4"),
13840 + MTK_FUNCTION(2, "SDA2_0"),
13841 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
13842 + MTK_FUNCTION(4, "EXT_RXD1"),
13843 + MTK_FUNCTION(5, "ANT_SEL1"),
13844 + MTK_FUNCTION(7, "DBG_MON_A[15]")
13847 + PINCTRL_PIN(10, "EINT10"),
13849 + MTK_EINT_FUNCTION(0, 10),
13850 + MTK_FUNCTION(0, "GPIO10"),
13851 + MTK_FUNCTION(1, "CLKM5"),
13852 + MTK_FUNCTION(2, "SCL2_0"),
13853 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
13854 + MTK_FUNCTION(4, "EXT_RXD2"),
13855 + MTK_FUNCTION(5, "ANT_SEL2"),
13856 + MTK_FUNCTION(7, "DBG_MON_A[16]")
13859 + PINCTRL_PIN(11, "EINT11"),
13861 + MTK_EINT_FUNCTION(0, 11),
13862 + MTK_FUNCTION(0, "GPIO11"),
13863 + MTK_FUNCTION(1, "CLKM4"),
13864 + MTK_FUNCTION(2, "PWM_C"),
13865 + MTK_FUNCTION(3, "CONN_TEST_CK"),
13866 + MTK_FUNCTION(4, "ANT_SEL3"),
13867 + MTK_FUNCTION(6, "EXT_RXD3"),
13868 + MTK_FUNCTION(7, "DBG_MON_A[17]")
13871 + PINCTRL_PIN(12, "EINT12"),
13873 + MTK_EINT_FUNCTION(0, 12),
13874 + MTK_FUNCTION(0, "GPIO12"),
13875 + MTK_FUNCTION(1, "CLKM5"),
13876 + MTK_FUNCTION(2, "PWM_A"),
13877 + MTK_FUNCTION(3, "SPDIF_OUT"),
13878 + MTK_FUNCTION(4, "ANT_SEL4"),
13879 + MTK_FUNCTION(6, "EXT_TXEN"),
13880 + MTK_FUNCTION(7, "DBG_MON_A[18]")
13883 + PINCTRL_PIN(13, "EINT13"),
13885 + MTK_EINT_FUNCTION(0, 13),
13886 + MTK_FUNCTION(0, "GPIO13"),
13887 + MTK_FUNCTION(3, "TSF_IN"),
13888 + MTK_FUNCTION(4, "ANT_SEL5"),
13889 + MTK_FUNCTION(6, "SPDIF_IN"),
13890 + MTK_FUNCTION(7, "DBG_MON_A[19]")
13893 + PINCTRL_PIN(14, "EINT14"),
13895 + MTK_EINT_FUNCTION(0, 14),
13896 + MTK_FUNCTION(0, "GPIO14"),
13897 + MTK_FUNCTION(2, "I2S_8CH_DO1"),
13898 + MTK_FUNCTION(3, "TDM_RX_MCK"),
13899 + MTK_FUNCTION(4, "ANT_SEL1"),
13900 + MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"),
13901 + MTK_FUNCTION(6, "NCLE"),
13902 + MTK_FUNCTION(7, "DBG_MON_B[8]")
13905 + PINCTRL_PIN(15, "EINT15"),
13907 + MTK_EINT_FUNCTION(0, 15),
13908 + MTK_FUNCTION(0, "GPIO15"),
13909 + MTK_FUNCTION(2, "I2S_8CH_LRCK"),
13910 + MTK_FUNCTION(3, "TDM_RX_BCK"),
13911 + MTK_FUNCTION(4, "ANT_SEL2"),
13912 + MTK_FUNCTION(5, "CONN_MCU_DBGI_N"),
13913 + MTK_FUNCTION(6, "NCEB1"),
13914 + MTK_FUNCTION(7, "DBG_MON_B[9]")
13917 + PINCTRL_PIN(16, "EINT16"),
13919 + MTK_EINT_FUNCTION(0, 16),
13920 + MTK_FUNCTION(0, "GPIO16"),
13921 + MTK_FUNCTION(2, "I2S_8CH_BCK"),
13922 + MTK_FUNCTION(3, "TDM_RX_LRCK"),
13923 + MTK_FUNCTION(4, "ANT_SEL3"),
13924 + MTK_FUNCTION(5, "CONN_MCU_TRST_B"),
13925 + MTK_FUNCTION(6, "NCEB0"),
13926 + MTK_FUNCTION(7, "DBG_MON_B[10]")
13929 + PINCTRL_PIN(17, "EINT17"),
13931 + MTK_EINT_FUNCTION(0, 17),
13932 + MTK_FUNCTION(0, "GPIO17"),
13933 + MTK_FUNCTION(2, "I2S_8CH_MCK"),
13934 + MTK_FUNCTION(3, "TDM_RX_DI"),
13935 + MTK_FUNCTION(4, "IDDIG"),
13936 + MTK_FUNCTION(5, "ANT_SEL4"),
13937 + MTK_FUNCTION(6, "NREB"),
13938 + MTK_FUNCTION(7, "DBG_MON_B[11]")
13941 + PINCTRL_PIN(18, "EINT18"),
13943 + MTK_EINT_FUNCTION(0, 18),
13944 + MTK_FUNCTION(0, "GPIO18"),
13945 + MTK_FUNCTION(2, "USB_DRVVBUS"),
13946 + MTK_FUNCTION(3, "I2S3_LRCK"),
13947 + MTK_FUNCTION(4, "CLKM1"),
13948 + MTK_FUNCTION(5, "ANT_SEL3"),
13949 + MTK_FUNCTION(6, "I2S2_BCK"),
13950 + MTK_FUNCTION(7, "DBG_MON_A[20]")
13953 + PINCTRL_PIN(19, "EINT19"),
13955 + MTK_EINT_FUNCTION(0, 19),
13956 + MTK_FUNCTION(0, "GPIO19"),
13957 + MTK_FUNCTION(1, "UCTS1"),
13958 + MTK_FUNCTION(2, "IDDIG"),
13959 + MTK_FUNCTION(3, "I2S3_BCK"),
13960 + MTK_FUNCTION(4, "CLKM2"),
13961 + MTK_FUNCTION(5, "ANT_SEL4"),
13962 + MTK_FUNCTION(6, "I2S2_DI"),
13963 + MTK_FUNCTION(7, "DBG_MON_A[21]")
13966 + PINCTRL_PIN(20, "EINT20"),
13968 + MTK_EINT_FUNCTION(0, 20),
13969 + MTK_FUNCTION(0, "GPIO20"),
13970 + MTK_FUNCTION(1, "URTS1"),
13971 + MTK_FUNCTION(3, "I2S3_DO"),
13972 + MTK_FUNCTION(4, "CLKM3"),
13973 + MTK_FUNCTION(5, "ANT_SEL5"),
13974 + MTK_FUNCTION(6, "I2S2_LRCK"),
13975 + MTK_FUNCTION(7, "DBG_MON_A[22]")
13978 + PINCTRL_PIN(21, "EINT21"),
13980 + MTK_EINT_FUNCTION(0, 21),
13981 + MTK_FUNCTION(0, "GPIO21"),
13982 + MTK_FUNCTION(1, "NRNB"),
13983 + MTK_FUNCTION(2, "ANT_SEL0"),
13984 + MTK_FUNCTION(3, "I2S_8CH_DO4"),
13985 + MTK_FUNCTION(7, "DBG_MON_B[31]")
13988 + PINCTRL_PIN(22, "EINT22"),
13990 + MTK_EINT_FUNCTION(0, 22),
13991 + MTK_FUNCTION(0, "GPIO22"),
13992 + MTK_FUNCTION(2, "I2S_8CH_DO2"),
13993 + MTK_FUNCTION(3, "TSF_IN"),
13994 + MTK_FUNCTION(4, "USB_DRVVBUS"),
13995 + MTK_FUNCTION(5, "SPDIF_OUT"),
13996 + MTK_FUNCTION(6, "NRE_C"),
13997 + MTK_FUNCTION(7, "DBG_MON_B[12]")
14000 + PINCTRL_PIN(23, "EINT23"),
14002 + MTK_EINT_FUNCTION(0, 23),
14003 + MTK_FUNCTION(0, "GPIO23"),
14004 + MTK_FUNCTION(2, "I2S_8CH_DO3"),
14005 + MTK_FUNCTION(3, "CLKM0"),
14006 + MTK_FUNCTION(4, "IR"),
14007 + MTK_FUNCTION(5, "SPDIF_IN"),
14008 + MTK_FUNCTION(6, "NDQS_C"),
14009 + MTK_FUNCTION(7, "DBG_MON_B[13]")
14012 + PINCTRL_PIN(24, "EINT24"),
14014 + MTK_EINT_FUNCTION(0, 24),
14015 + MTK_FUNCTION(0, "GPIO24"),
14016 + MTK_FUNCTION(3, "ANT_SEL1"),
14017 + MTK_FUNCTION(4, "UCTS2"),
14018 + MTK_FUNCTION(5, "PWM_A"),
14019 + MTK_FUNCTION(6, "I2S0_MCK"),
14020 + MTK_FUNCTION(7, "DBG_MON_A[0]")
14023 + PINCTRL_PIN(25, "EINT25"),
14025 + MTK_EINT_FUNCTION(0, 25),
14026 + MTK_FUNCTION(0, "GPIO25"),
14027 + MTK_FUNCTION(3, "ANT_SEL0"),
14028 + MTK_FUNCTION(4, "URTS2"),
14029 + MTK_FUNCTION(5, "PWM_B"),
14030 + MTK_FUNCTION(6, "I2S_8CH_MCK"),
14031 + MTK_FUNCTION(7, "DBG_MON_A[1]")
14034 + PINCTRL_PIN(26, "PWRAP_SPI0_MI"),
14036 + MTK_EINT_FUNCTION(0, 26),
14037 + MTK_FUNCTION(0, "GPIO26"),
14038 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
14039 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
14042 + PINCTRL_PIN(27, "PWRAP_SPI0_MO"),
14044 + MTK_EINT_FUNCTION(0, 27),
14045 + MTK_FUNCTION(0, "GPIO27"),
14046 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
14047 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
14050 + PINCTRL_PIN(28, "PWRAP_INT"),
14052 + MTK_EINT_FUNCTION(0, 28),
14053 + MTK_FUNCTION(0, "GPIO28"),
14054 + MTK_FUNCTION(1, "I2S0_MCK"),
14055 + MTK_FUNCTION(4, "I2S_8CH_MCK"),
14056 + MTK_FUNCTION(5, "I2S2_MCK"),
14057 + MTK_FUNCTION(6, "I2S3_MCK")
14060 + PINCTRL_PIN(29, "PWRAP_SPI0_CK"),
14062 + MTK_EINT_FUNCTION(0, 29),
14063 + MTK_FUNCTION(0, "GPIO29"),
14064 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
14067 + PINCTRL_PIN(30, "PWRAP_SPI0_CSN"),
14069 + MTK_EINT_FUNCTION(0, 30),
14070 + MTK_FUNCTION(0, "GPIO30"),
14071 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
14074 + PINCTRL_PIN(31, "RTC32K_CK"),
14076 + MTK_EINT_FUNCTION(0, 31),
14077 + MTK_FUNCTION(0, "GPIO31"),
14078 + MTK_FUNCTION(1, "RTC32K_CK")
14081 + PINCTRL_PIN(32, "WATCHDOG"),
14083 + MTK_EINT_FUNCTION(0, 32),
14084 + MTK_FUNCTION(0, "GPIO32"),
14085 + MTK_FUNCTION(1, "WATCHDOG")
14088 + PINCTRL_PIN(33, "SRCLKENA"),
14090 + MTK_EINT_FUNCTION(0, 33),
14091 + MTK_FUNCTION(0, "GPIO33"),
14092 + MTK_FUNCTION(1, "SRCLKENA0")
14095 + PINCTRL_PIN(34, "URXD2"),
14097 + MTK_EINT_FUNCTION(0, 34),
14098 + MTK_FUNCTION(0, "GPIO34"),
14099 + MTK_FUNCTION(1, "URXD2"),
14100 + MTK_FUNCTION(3, "UTXD2"),
14101 + MTK_FUNCTION(4, "DBG_SCL"),
14102 + MTK_FUNCTION(6, "I2S2_MCK"),
14103 + MTK_FUNCTION(7, "DBG_MON_B[0]")
14106 + PINCTRL_PIN(35, "UTXD2"),
14108 + MTK_EINT_FUNCTION(0, 35),
14109 + MTK_FUNCTION(0, "GPIO35"),
14110 + MTK_FUNCTION(1, "UTXD2"),
14111 + MTK_FUNCTION(3, "URXD2"),
14112 + MTK_FUNCTION(4, "DBG_SDA"),
14113 + MTK_FUNCTION(6, "I2S3_MCK"),
14114 + MTK_FUNCTION(7, "DBG_MON_B[1]")
14117 + PINCTRL_PIN(36, "MRG_CLK"),
14119 + MTK_EINT_FUNCTION(0, 36),
14120 + MTK_FUNCTION(0, "GPIO36"),
14121 + MTK_FUNCTION(1, "MRG_CLK"),
14122 + MTK_FUNCTION(3, "I2S0_BCK"),
14123 + MTK_FUNCTION(4, "I2S3_BCK"),
14124 + MTK_FUNCTION(5, "PCM0_CLK"),
14125 + MTK_FUNCTION(6, "IR"),
14126 + MTK_FUNCTION(7, "DBG_MON_A[2]")
14129 + PINCTRL_PIN(37, "MRG_SYNC"),
14131 + MTK_EINT_FUNCTION(0, 37),
14132 + MTK_FUNCTION(0, "GPIO37"),
14133 + MTK_FUNCTION(1, "MRG_SYNC"),
14134 + MTK_FUNCTION(3, "I2S0_LRCK"),
14135 + MTK_FUNCTION(4, "I2S3_LRCK"),
14136 + MTK_FUNCTION(5, "PCM0_SYNC"),
14137 + MTK_FUNCTION(6, "EXT_COL"),
14138 + MTK_FUNCTION(7, "DBG_MON_A[3]")
14141 + PINCTRL_PIN(38, "MRG_DI"),
14143 + MTK_EINT_FUNCTION(0, 38),
14144 + MTK_FUNCTION(0, "GPIO38"),
14145 + MTK_FUNCTION(1, "MRG_DI"),
14146 + MTK_FUNCTION(3, "I2S0_DI"),
14147 + MTK_FUNCTION(4, "I2S3_DO"),
14148 + MTK_FUNCTION(5, "PCM0_DI"),
14149 + MTK_FUNCTION(6, "EXT_MDIO"),
14150 + MTK_FUNCTION(7, "DBG_MON_A[4]")
14153 + PINCTRL_PIN(39, "MRG_DO"),
14155 + MTK_EINT_FUNCTION(0, 39),
14156 + MTK_FUNCTION(0, "GPIO39"),
14157 + MTK_FUNCTION(1, "MRG_DO"),
14158 + MTK_FUNCTION(3, "I2S0_MCK"),
14159 + MTK_FUNCTION(4, "I2S3_MCK"),
14160 + MTK_FUNCTION(5, "PCM0_DO"),
14161 + MTK_FUNCTION(6, "EXT_MDC"),
14162 + MTK_FUNCTION(7, "DBG_MON_A[5]")
14165 + PINCTRL_PIN(40, "KPROW0"),
14167 + MTK_EINT_FUNCTION(0, 40),
14168 + MTK_FUNCTION(0, "GPIO40"),
14169 + MTK_FUNCTION(1, "KPROW0"),
14170 + MTK_FUNCTION(7, "DBG_MON_B[4]")
14173 + PINCTRL_PIN(41, "KPROW1"),
14175 + MTK_EINT_FUNCTION(0, 41),
14176 + MTK_FUNCTION(0, "GPIO41"),
14177 + MTK_FUNCTION(1, "KPROW1"),
14178 + MTK_FUNCTION(2, "IDDIG"),
14179 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
14180 + MTK_FUNCTION(7, "DBG_MON_B[5]")
14183 + PINCTRL_PIN(42, "KPCOL0"),
14185 + MTK_EINT_FUNCTION(0, 42),
14186 + MTK_FUNCTION(0, "GPIO42"),
14187 + MTK_FUNCTION(1, "KPCOL0"),
14188 + MTK_FUNCTION(7, "DBG_MON_B[6]")
14191 + PINCTRL_PIN(43, "KPCOL1"),
14193 + MTK_EINT_FUNCTION(0, 43),
14194 + MTK_FUNCTION(0, "GPIO43"),
14195 + MTK_FUNCTION(1, "KPCOL1"),
14196 + MTK_FUNCTION(2, "USB_DRVVBUS"),
14197 + MTK_FUNCTION(3, "EXT_FRAME_SYNC"),
14198 + MTK_FUNCTION(4, "TSF_IN"),
14199 + MTK_FUNCTION(7, "DBG_MON_B[7]")
14202 + PINCTRL_PIN(44, "JTMS"),
14204 + MTK_EINT_FUNCTION(0, 44),
14205 + MTK_FUNCTION(0, "GPIO44"),
14206 + MTK_FUNCTION(1, "JTMS"),
14207 + MTK_FUNCTION(2, "CONN_MCU_TMS"),
14208 + MTK_FUNCTION(3, "CONN_MCU_AICE_JMSC")
14211 + PINCTRL_PIN(45, "JTCK"),
14213 + MTK_EINT_FUNCTION(0, 45),
14214 + MTK_FUNCTION(0, "GPIO45"),
14215 + MTK_FUNCTION(1, "JTCK"),
14216 + MTK_FUNCTION(2, "CONN_MCU_TCK"),
14217 + MTK_FUNCTION(3, "CONN_MCU_AICE_JCKC")
14220 + PINCTRL_PIN(46, "JTDI"),
14222 + MTK_EINT_FUNCTION(0, 46),
14223 + MTK_FUNCTION(0, "GPIO46"),
14224 + MTK_FUNCTION(1, "JTDI"),
14225 + MTK_FUNCTION(2, "CONN_MCU_TDI")
14228 + PINCTRL_PIN(47, "JTDO"),
14230 + MTK_EINT_FUNCTION(0, 47),
14231 + MTK_FUNCTION(0, "GPIO47"),
14232 + MTK_FUNCTION(1, "JTDO"),
14233 + MTK_FUNCTION(2, "CONN_MCU_TDO")
14236 + PINCTRL_PIN(48, "SPI_CS"),
14238 + MTK_EINT_FUNCTION(0, 48),
14239 + MTK_FUNCTION(0, "GPIO48"),
14240 + MTK_FUNCTION(1, "SPI_CSB"),
14241 + MTK_FUNCTION(3, "I2S0_DI"),
14242 + MTK_FUNCTION(4, "I2S2_BCK"),
14243 + MTK_FUNCTION(7, "DBG_MON_A[23]")
14246 + PINCTRL_PIN(49, "SPI_CK"),
14248 + MTK_EINT_FUNCTION(0, 49),
14249 + MTK_FUNCTION(0, "GPIO49"),
14250 + MTK_FUNCTION(1, "SPI_CLK"),
14251 + MTK_FUNCTION(3, "I2S0_LRCK"),
14252 + MTK_FUNCTION(4, "I2S2_DI"),
14253 + MTK_FUNCTION(7, "DBG_MON_A[24]")
14256 + PINCTRL_PIN(50, "SPI_MI"),
14258 + MTK_EINT_FUNCTION(0, 50),
14259 + MTK_FUNCTION(0, "GPIO50"),
14260 + MTK_FUNCTION(1, "SPI_MI"),
14261 + MTK_FUNCTION(2, "SPI_MO"),
14262 + MTK_FUNCTION(3, "I2S0_BCK"),
14263 + MTK_FUNCTION(4, "I2S2_LRCK"),
14264 + MTK_FUNCTION(7, "DBG_MON_A[25]")
14267 + PINCTRL_PIN(51, "SPI_MO"),
14269 + MTK_EINT_FUNCTION(0, 51),
14270 + MTK_FUNCTION(0, "GPIO51"),
14271 + MTK_FUNCTION(1, "SPI_MO"),
14272 + MTK_FUNCTION(2, "SPI_MI"),
14273 + MTK_FUNCTION(3, "I2S0_MCK"),
14274 + MTK_FUNCTION(4, "I2S2_MCK"),
14275 + MTK_FUNCTION(7, "DBG_MON_A[26]")
14278 + PINCTRL_PIN(52, "SDA1"),
14280 + MTK_EINT_FUNCTION(0, 52),
14281 + MTK_FUNCTION(0, "GPIO52"),
14282 + MTK_FUNCTION(1, "SDA1_0")
14285 + PINCTRL_PIN(53, "SCL1"),
14287 + MTK_EINT_FUNCTION(0, 53),
14288 + MTK_FUNCTION(0, "GPIO53"),
14289 + MTK_FUNCTION(1, "SCL1_0")
14292 + PINCTRL_PIN(54, "GPIO54"),
14294 + MTK_EINT_FUNCTION(0, 54),
14295 + MTK_FUNCTION(0, "GPIO54"),
14296 + MTK_FUNCTION(2, "PWM_B"),
14297 + MTK_FUNCTION(7, "DBG_MON_B[2]")
14300 + PINCTRL_PIN(55, "I2S_DATA_IN"),
14302 + MTK_EINT_FUNCTION(0, 55),
14303 + MTK_FUNCTION(0, "GPIO55"),
14304 + MTK_FUNCTION(1, "I2S0_DI"),
14305 + MTK_FUNCTION(2, "UCTS0"),
14306 + MTK_FUNCTION(3, "I2S3_DO"),
14307 + MTK_FUNCTION(4, "I2S_8CH_DO1"),
14308 + MTK_FUNCTION(5, "PWM_A"),
14309 + MTK_FUNCTION(6, "I2S2_BCK"),
14310 + MTK_FUNCTION(7, "DBG_MON_A[28]")
14313 + PINCTRL_PIN(56, "I2S_LRCK"),
14315 + MTK_EINT_FUNCTION(0, 56),
14316 + MTK_FUNCTION(0, "GPIO56"),
14317 + MTK_FUNCTION(1, "I2S0_LRCK"),
14318 + MTK_FUNCTION(3, "I2S3_LRCK"),
14319 + MTK_FUNCTION(4, "I2S_8CH_LRCK"),
14320 + MTK_FUNCTION(5, "PWM_B"),
14321 + MTK_FUNCTION(6, "I2S2_DI"),
14322 + MTK_FUNCTION(7, "DBG_MON_A[29]")
14325 + PINCTRL_PIN(57, "I2S_BCK"),
14327 + MTK_EINT_FUNCTION(0, 57),
14328 + MTK_FUNCTION(0, "GPIO57"),
14329 + MTK_FUNCTION(1, "I2S0_BCK"),
14330 + MTK_FUNCTION(2, "URTS0"),
14331 + MTK_FUNCTION(3, "I2S3_BCK"),
14332 + MTK_FUNCTION(4, "I2S_8CH_BCK"),
14333 + MTK_FUNCTION(5, "PWM_C"),
14334 + MTK_FUNCTION(6, "I2S2_LRCK"),
14335 + MTK_FUNCTION(7, "DBG_MON_A[30]")
14338 + PINCTRL_PIN(58, "SDA0"),
14340 + MTK_EINT_FUNCTION(0, 58),
14341 + MTK_FUNCTION(0, "GPIO58"),
14342 + MTK_FUNCTION(1, "SDA0_0")
14345 + PINCTRL_PIN(59, "SCL0"),
14347 + MTK_EINT_FUNCTION(0, 59),
14348 + MTK_FUNCTION(0, "GPIO59"),
14349 + MTK_FUNCTION(1, "SCL0_0")
14352 + PINCTRL_PIN(60, "SDA2"),
14354 + MTK_EINT_FUNCTION(0, 60),
14355 + MTK_FUNCTION(0, "GPIO60"),
14356 + MTK_FUNCTION(1, "SDA2_0"),
14357 + MTK_FUNCTION(2, "PWM_B")
14360 + PINCTRL_PIN(61, "SCL2"),
14362 + MTK_EINT_FUNCTION(0, 61),
14363 + MTK_FUNCTION(0, "GPIO61"),
14364 + MTK_FUNCTION(1, "SCL2_0"),
14365 + MTK_FUNCTION(2, "PWM_C")
14368 + PINCTRL_PIN(62, "URXD0"),
14370 + MTK_EINT_FUNCTION(0, 62),
14371 + MTK_FUNCTION(0, "GPIO62"),
14372 + MTK_FUNCTION(1, "URXD0"),
14373 + MTK_FUNCTION(2, "UTXD0")
14376 + PINCTRL_PIN(63, "UTXD0"),
14378 + MTK_EINT_FUNCTION(0, 63),
14379 + MTK_FUNCTION(0, "GPIO63"),
14380 + MTK_FUNCTION(1, "UTXD0"),
14381 + MTK_FUNCTION(2, "URXD0")
14384 + PINCTRL_PIN(64, "URXD1"),
14386 + MTK_EINT_FUNCTION(0, 64),
14387 + MTK_FUNCTION(0, "GPIO64"),
14388 + MTK_FUNCTION(1, "URXD1"),
14389 + MTK_FUNCTION(2, "UTXD1"),
14390 + MTK_FUNCTION(7, "DBG_MON_A[27]")
14393 + PINCTRL_PIN(65, "UTXD1"),
14395 + MTK_EINT_FUNCTION(0, 65),
14396 + MTK_FUNCTION(0, "GPIO65"),
14397 + MTK_FUNCTION(1, "UTXD1"),
14398 + MTK_FUNCTION(2, "URXD1"),
14399 + MTK_FUNCTION(7, "DBG_MON_A[31]")
14402 + PINCTRL_PIN(66, "LCM_RST"),
14404 + MTK_EINT_FUNCTION(0, 66),
14405 + MTK_FUNCTION(0, "GPIO66"),
14406 + MTK_FUNCTION(1, "LCM_RST"),
14407 + MTK_FUNCTION(3, "I2S0_MCK"),
14408 + MTK_FUNCTION(7, "DBG_MON_B[3]")
14411 + PINCTRL_PIN(67, "GPIO67"),
14413 + MTK_EINT_FUNCTION(0, 67),
14414 + MTK_FUNCTION(0, "GPIO67"),
14415 + MTK_FUNCTION(3, "I2S_8CH_MCK"),
14416 + MTK_FUNCTION(7, "DBG_MON_B[14]")
14419 + PINCTRL_PIN(68, "MSDC2_CMD"),
14421 + MTK_EINT_FUNCTION(0, 68),
14422 + MTK_FUNCTION(0, "GPIO68"),
14423 + MTK_FUNCTION(1, "MSDC2_CMD"),
14424 + MTK_FUNCTION(2, "I2S_8CH_DO4"),
14425 + MTK_FUNCTION(3, "SDA1_0"),
14426 + MTK_FUNCTION(5, "USB_SDA"),
14427 + MTK_FUNCTION(6, "I2S3_BCK"),
14428 + MTK_FUNCTION(7, "DBG_MON_B[15]")
14431 + PINCTRL_PIN(69, "MSDC2_CLK"),
14433 + MTK_EINT_FUNCTION(0, 69),
14434 + MTK_FUNCTION(0, "GPIO69"),
14435 + MTK_FUNCTION(1, "MSDC2_CLK"),
14436 + MTK_FUNCTION(2, "I2S_8CH_DO3"),
14437 + MTK_FUNCTION(3, "SCL1_0"),
14438 + MTK_FUNCTION(5, "USB_SCL"),
14439 + MTK_FUNCTION(6, "I2S3_LRCK"),
14440 + MTK_FUNCTION(7, "DBG_MON_B[16]")
14443 + PINCTRL_PIN(70, "MSDC2_DAT0"),
14445 + MTK_EINT_FUNCTION(0, 70),
14446 + MTK_FUNCTION(0, "GPIO70"),
14447 + MTK_FUNCTION(1, "MSDC2_DAT0"),
14448 + MTK_FUNCTION(2, "I2S_8CH_DO2"),
14449 + MTK_FUNCTION(5, "UTXD0"),
14450 + MTK_FUNCTION(6, "I2S3_DO"),
14451 + MTK_FUNCTION(7, "DBG_MON_B[17]")
14454 + PINCTRL_PIN(71, "MSDC2_DAT1"),
14456 + MTK_EINT_FUNCTION(0, 71),
14457 + MTK_FUNCTION(0, "GPIO71"),
14458 + MTK_FUNCTION(1, "MSDC2_DAT1"),
14459 + MTK_FUNCTION(2, "I2S_8CH_DO1"),
14460 + MTK_FUNCTION(3, "PWM_A"),
14461 + MTK_FUNCTION(4, "I2S3_MCK"),
14462 + MTK_FUNCTION(5, "URXD0"),
14463 + MTK_FUNCTION(6, "PWM_B"),
14464 + MTK_FUNCTION(7, "DBG_MON_B[18]")
14467 + PINCTRL_PIN(72, "MSDC2_DAT2"),
14469 + MTK_EINT_FUNCTION(0, 72),
14470 + MTK_FUNCTION(0, "GPIO72"),
14471 + MTK_FUNCTION(1, "MSDC2_DAT2"),
14472 + MTK_FUNCTION(2, "I2S_8CH_LRCK"),
14473 + MTK_FUNCTION(3, "SDA2_0"),
14474 + MTK_FUNCTION(5, "UTXD1"),
14475 + MTK_FUNCTION(6, "PWM_C"),
14476 + MTK_FUNCTION(7, "DBG_MON_B[19]")
14479 + PINCTRL_PIN(73, "MSDC2_DAT3"),
14481 + MTK_EINT_FUNCTION(0, 73),
14482 + MTK_FUNCTION(0, "GPIO73"),
14483 + MTK_FUNCTION(1, "MSDC2_DAT3"),
14484 + MTK_FUNCTION(2, "I2S_8CH_BCK"),
14485 + MTK_FUNCTION(3, "SCL2_0"),
14486 + MTK_FUNCTION(4, "EXT_FRAME_SYNC"),
14487 + MTK_FUNCTION(5, "URXD1"),
14488 + MTK_FUNCTION(6, "PWM_A"),
14489 + MTK_FUNCTION(7, "DBG_MON_B[20]")
14492 + PINCTRL_PIN(74, "TDN3"),
14494 + MTK_EINT_FUNCTION(0, 74),
14495 + MTK_FUNCTION(0, "GPIO74"),
14496 + MTK_FUNCTION(1, "TDN3")
14499 + PINCTRL_PIN(75, "TDP3"),
14501 + MTK_EINT_FUNCTION(0, 75),
14502 + MTK_FUNCTION(0, "GPIO75"),
14503 + MTK_FUNCTION(1, "TDP3")
14506 + PINCTRL_PIN(76, "TDN2"),
14508 + MTK_EINT_FUNCTION(0, 76),
14509 + MTK_FUNCTION(0, "GPIO76"),
14510 + MTK_FUNCTION(1, "TDN2")
14513 + PINCTRL_PIN(77, "TDP2"),
14515 + MTK_EINT_FUNCTION(0, 77),
14516 + MTK_FUNCTION(0, "GPIO77"),
14517 + MTK_FUNCTION(1, "TDP2")
14520 + PINCTRL_PIN(78, "TCN"),
14522 + MTK_EINT_FUNCTION(0, 78),
14523 + MTK_FUNCTION(0, "GPIO78"),
14524 + MTK_FUNCTION(1, "TCN")
14527 + PINCTRL_PIN(79, "TCP"),
14529 + MTK_EINT_FUNCTION(0, 79),
14530 + MTK_FUNCTION(0, "GPIO79"),
14531 + MTK_FUNCTION(1, "TCP")
14534 + PINCTRL_PIN(80, "TDN1"),
14536 + MTK_EINT_FUNCTION(0, 80),
14537 + MTK_FUNCTION(0, "GPIO80"),
14538 + MTK_FUNCTION(1, "TDN1")
14541 + PINCTRL_PIN(81, "TDP1"),
14543 + MTK_EINT_FUNCTION(0, 81),
14544 + MTK_FUNCTION(0, "GPIO81"),
14545 + MTK_FUNCTION(1, "TDP1")
14548 + PINCTRL_PIN(82, "TDN0"),
14550 + MTK_EINT_FUNCTION(0, 82),
14551 + MTK_FUNCTION(0, "GPIO82"),
14552 + MTK_FUNCTION(1, "TDN0")
14555 + PINCTRL_PIN(83, "TDP0"),
14557 + MTK_EINT_FUNCTION(0, 83),
14558 + MTK_FUNCTION(0, "GPIO83"),
14559 + MTK_FUNCTION(1, "TDP0")
14562 + PINCTRL_PIN(84, "RDN0"),
14564 + MTK_EINT_FUNCTION(0, 84),
14565 + MTK_FUNCTION(0, "GPIO84"),
14566 + MTK_FUNCTION(1, "RDN0")
14569 + PINCTRL_PIN(85, "RDP0"),
14571 + MTK_EINT_FUNCTION(0, 85),
14572 + MTK_FUNCTION(0, "GPIO85"),
14573 + MTK_FUNCTION(1, "RDP0")
14576 + PINCTRL_PIN(86, "RDN1"),
14578 + MTK_EINT_FUNCTION(0, 86),
14579 + MTK_FUNCTION(0, "GPIO86"),
14580 + MTK_FUNCTION(1, "RDN1")
14583 + PINCTRL_PIN(87, "RDP1"),
14585 + MTK_EINT_FUNCTION(0, 87),
14586 + MTK_FUNCTION(0, "GPIO87"),
14587 + MTK_FUNCTION(1, "RDP1")
14590 + PINCTRL_PIN(88, "RCN"),
14592 + MTK_EINT_FUNCTION(0, 88),
14593 + MTK_FUNCTION(0, "GPIO88"),
14594 + MTK_FUNCTION(1, "RCN")
14597 + PINCTRL_PIN(89, "RCP"),
14599 + MTK_EINT_FUNCTION(0, 89),
14600 + MTK_FUNCTION(0, "GPIO89"),
14601 + MTK_FUNCTION(1, "RCP")
14604 + PINCTRL_PIN(90, "RDN2"),
14606 + MTK_EINT_FUNCTION(0, 90),
14607 + MTK_FUNCTION(0, "GPIO90"),
14608 + MTK_FUNCTION(1, "RDN2"),
14609 + MTK_FUNCTION(2, "CMDAT8")
14612 + PINCTRL_PIN(91, "RDP2"),
14614 + MTK_EINT_FUNCTION(0, 91),
14615 + MTK_FUNCTION(0, "GPIO91"),
14616 + MTK_FUNCTION(1, "RDP2"),
14617 + MTK_FUNCTION(2, "CMDAT9")
14620 + PINCTRL_PIN(92, "RDN3"),
14622 + MTK_EINT_FUNCTION(0, 92),
14623 + MTK_FUNCTION(0, "GPIO92"),
14624 + MTK_FUNCTION(1, "RDN3"),
14625 + MTK_FUNCTION(2, "CMDAT4")
14628 + PINCTRL_PIN(93, "RDP3"),
14630 + MTK_EINT_FUNCTION(0, 93),
14631 + MTK_FUNCTION(0, "GPIO93"),
14632 + MTK_FUNCTION(1, "RDP3"),
14633 + MTK_FUNCTION(2, "CMDAT5")
14636 + PINCTRL_PIN(94, "RCN_A"),
14638 + MTK_EINT_FUNCTION(0, 94),
14639 + MTK_FUNCTION(0, "GPIO94"),
14640 + MTK_FUNCTION(1, "RCN_A"),
14641 + MTK_FUNCTION(2, "CMDAT6")
14644 + PINCTRL_PIN(95, "RCP_A"),
14646 + MTK_EINT_FUNCTION(0, 95),
14647 + MTK_FUNCTION(0, "GPIO95"),
14648 + MTK_FUNCTION(1, "RCP_A"),
14649 + MTK_FUNCTION(2, "CMDAT7")
14652 + PINCTRL_PIN(96, "RDN1_A"),
14654 + MTK_EINT_FUNCTION(0, 96),
14655 + MTK_FUNCTION(0, "GPIO96"),
14656 + MTK_FUNCTION(1, "RDN1_A"),
14657 + MTK_FUNCTION(2, "CMDAT2"),
14658 + MTK_FUNCTION(3, "CMCSD2")
14661 + PINCTRL_PIN(97, "RDP1_A"),
14663 + MTK_EINT_FUNCTION(0, 97),
14664 + MTK_FUNCTION(0, "GPIO97"),
14665 + MTK_FUNCTION(1, "RDP1_A"),
14666 + MTK_FUNCTION(2, "CMDAT3"),
14667 + MTK_FUNCTION(3, "CMCSD3")
14670 + PINCTRL_PIN(98, "RDN0_A"),
14672 + MTK_EINT_FUNCTION(0, 98),
14673 + MTK_FUNCTION(0, "GPIO98"),
14674 + MTK_FUNCTION(1, "RDN0_A"),
14675 + MTK_FUNCTION(2, "CMHSYNC")
14678 + PINCTRL_PIN(99, "RDP0_A"),
14680 + MTK_EINT_FUNCTION(0, 99),
14681 + MTK_FUNCTION(0, "GPIO99"),
14682 + MTK_FUNCTION(1, "RDP0_A"),
14683 + MTK_FUNCTION(2, "CMVSYNC")
14686 + PINCTRL_PIN(100, "CMDAT0"),
14688 + MTK_EINT_FUNCTION(0, 100),
14689 + MTK_FUNCTION(0, "GPIO100"),
14690 + MTK_FUNCTION(1, "CMDAT0"),
14691 + MTK_FUNCTION(2, "CMCSD0"),
14692 + MTK_FUNCTION(3, "ANT_SEL2"),
14693 + MTK_FUNCTION(5, "TDM_RX_MCK"),
14694 + MTK_FUNCTION(7, "DBG_MON_B[21]")
14697 + PINCTRL_PIN(101, "CMDAT1"),
14699 + MTK_EINT_FUNCTION(0, 101),
14700 + MTK_FUNCTION(0, "GPIO101"),
14701 + MTK_FUNCTION(1, "CMDAT1"),
14702 + MTK_FUNCTION(2, "CMCSD1"),
14703 + MTK_FUNCTION(3, "ANT_SEL3"),
14704 + MTK_FUNCTION(4, "CMFLASH"),
14705 + MTK_FUNCTION(5, "TDM_RX_BCK"),
14706 + MTK_FUNCTION(7, "DBG_MON_B[22]")
14709 + PINCTRL_PIN(102, "CMMCLK"),
14711 + MTK_EINT_FUNCTION(0, 102),
14712 + MTK_FUNCTION(0, "GPIO102"),
14713 + MTK_FUNCTION(1, "CMMCLK"),
14714 + MTK_FUNCTION(3, "ANT_SEL4"),
14715 + MTK_FUNCTION(5, "TDM_RX_LRCK"),
14716 + MTK_FUNCTION(7, "DBG_MON_B[23]")
14719 + PINCTRL_PIN(103, "CMPCLK"),
14721 + MTK_EINT_FUNCTION(0, 103),
14722 + MTK_FUNCTION(0, "GPIO103"),
14723 + MTK_FUNCTION(1, "CMPCLK"),
14724 + MTK_FUNCTION(2, "CMCSK"),
14725 + MTK_FUNCTION(3, "ANT_SEL5"),
14726 + MTK_FUNCTION(5, " TDM_RX_DI"),
14727 + MTK_FUNCTION(7, "DBG_MON_B[24]")
14730 + PINCTRL_PIN(104, "MSDC1_CMD"),
14732 + MTK_EINT_FUNCTION(0, 104),
14733 + MTK_FUNCTION(0, "GPIO104"),
14734 + MTK_FUNCTION(1, "MSDC1_CMD"),
14735 + MTK_FUNCTION(4, "SQICS"),
14736 + MTK_FUNCTION(7, "DBG_MON_B[25]")
14739 + PINCTRL_PIN(105, "MSDC1_CLK"),
14741 + MTK_EINT_FUNCTION(0, 105),
14742 + MTK_FUNCTION(0, "GPIO105"),
14743 + MTK_FUNCTION(1, "MSDC1_CLK"),
14744 + MTK_FUNCTION(4, "SQISO"),
14745 + MTK_FUNCTION(7, "DBG_MON_B[26]")
14748 + PINCTRL_PIN(106, "MSDC1_DAT0"),
14750 + MTK_EINT_FUNCTION(0, 106),
14751 + MTK_FUNCTION(0, "GPIO106"),
14752 + MTK_FUNCTION(1, "MSDC1_DAT0"),
14753 + MTK_FUNCTION(4, "SQISI"),
14754 + MTK_FUNCTION(7, "DBG_MON_B[27]")
14757 + PINCTRL_PIN(107, "MSDC1_DAT1"),
14759 + MTK_EINT_FUNCTION(0, 107),
14760 + MTK_FUNCTION(0, "GPIO107"),
14761 + MTK_FUNCTION(1, "MSDC1_DAT1"),
14762 + MTK_FUNCTION(4, "SQIWP"),
14763 + MTK_FUNCTION(7, "DBG_MON_B[28]")
14766 + PINCTRL_PIN(108, "MSDC1_DAT2"),
14768 + MTK_EINT_FUNCTION(0, 108),
14769 + MTK_FUNCTION(0, "GPIO108"),
14770 + MTK_FUNCTION(1, "MSDC1_DAT2"),
14771 + MTK_FUNCTION(4, "SQIRST"),
14772 + MTK_FUNCTION(7, "DBG_MON_B[29]")
14775 + PINCTRL_PIN(109, "MSDC1_DAT3"),
14777 + MTK_EINT_FUNCTION(0, 109),
14778 + MTK_FUNCTION(0, "GPIO109"),
14779 + MTK_FUNCTION(1, "MSDC1_DAT3"),
14780 + MTK_FUNCTION(4, "SQICK"), /* WIP */
14781 + MTK_FUNCTION(7, "DBG_MON_B[30]")
14784 + PINCTRL_PIN(110, "MSDC0_DAT7"),
14786 + MTK_EINT_FUNCTION(0, 110),
14787 + MTK_FUNCTION(0, "GPIO110"),
14788 + MTK_FUNCTION(1, "MSDC0_DAT7"),
14789 + MTK_FUNCTION(4, "NLD7")
14792 + PINCTRL_PIN(111, "MSDC0_DAT6"),
14794 + MTK_EINT_FUNCTION(0, 111),
14795 + MTK_FUNCTION(0, "GPIO111"),
14796 + MTK_FUNCTION(1, "MSDC0_DAT6"),
14797 + MTK_FUNCTION(4, "NLD6")
14800 + PINCTRL_PIN(112, "MSDC0_DAT5"),
14802 + MTK_EINT_FUNCTION(0, 112),
14803 + MTK_FUNCTION(0, "GPIO112"),
14804 + MTK_FUNCTION(1, "MSDC0_DAT5"),
14805 + MTK_FUNCTION(4, "NLD4")
14808 + PINCTRL_PIN(113, "MSDC0_DAT4"),
14810 + MTK_EINT_FUNCTION(0, 113),
14811 + MTK_FUNCTION(0, "GPIO113"),
14812 + MTK_FUNCTION(1, "MSDC0_DAT4"),
14813 + MTK_FUNCTION(4, "NLD3")
14816 + PINCTRL_PIN(114, "MSDC0_RSTB"),
14818 + MTK_EINT_FUNCTION(0, 114),
14819 + MTK_FUNCTION(0, "GPIO114"),
14820 + MTK_FUNCTION(1, "MSDC0_RSTB"),
14821 + MTK_FUNCTION(4, "NLD0")
14824 + PINCTRL_PIN(115, "MSDC0_CMD"),
14826 + MTK_EINT_FUNCTION(0, 115),
14827 + MTK_FUNCTION(0, "GPIO115"),
14828 + MTK_FUNCTION(1, "MSDC0_CMD"),
14829 + MTK_FUNCTION(4, "NALE")
14832 + PINCTRL_PIN(116, "MSDC0_CLK"),
14834 + MTK_EINT_FUNCTION(0, 116),
14835 + MTK_FUNCTION(0, "GPIO116"),
14836 + MTK_FUNCTION(1, "MSDC0_CLK"),
14837 + MTK_FUNCTION(4, "NWEB")
14840 + PINCTRL_PIN(117, "MSDC0_DAT3"),
14842 + MTK_EINT_FUNCTION(0, 117),
14843 + MTK_FUNCTION(0, "GPIO117"),
14844 + MTK_FUNCTION(1, "MSDC0_DAT3"),
14845 + MTK_FUNCTION(4, "NLD1")
14848 + PINCTRL_PIN(118, "MSDC0_DAT2"),
14850 + MTK_EINT_FUNCTION(0, 118),
14851 + MTK_FUNCTION(0, "GPIO118"),
14852 + MTK_FUNCTION(1, "MSDC0_DAT2"),
14853 + MTK_FUNCTION(4, "NLD5")
14856 + PINCTRL_PIN(119, "MSDC0_DAT1"),
14858 + MTK_EINT_FUNCTION(0, 119),
14859 + MTK_FUNCTION(0, "GPIO119"),
14860 + MTK_FUNCTION(1, "MSDC0_DAT1"),
14861 + MTK_FUNCTION(4, "NLD8")
14864 + PINCTRL_PIN(120, "MSDC0_DAT0"),
14866 + MTK_EINT_FUNCTION(0, 120),
14867 + MTK_FUNCTION(0, "GPIO120"),
14868 + MTK_FUNCTION(1, "MSDC0_DAT0"),
14869 + MTK_FUNCTION(4, "WATCHDOG"),
14870 + MTK_FUNCTION(5, "NLD2")
14873 + PINCTRL_PIN(121, "GPIO121"),
14875 + MTK_EINT_FUNCTION(0, 121),
14876 + MTK_FUNCTION(0, "GPIO121")
14879 + PINCTRL_PIN(122, "GPIO122"),
14881 + MTK_EINT_FUNCTION(0, 122),
14882 + MTK_FUNCTION(0, "GPIO122")
14885 + PINCTRL_PIN(123, "GPIO123"),
14887 + MTK_EINT_FUNCTION(0, 123),
14888 + MTK_FUNCTION(0, "GPIO123")
14891 + PINCTRL_PIN(124, "GPIO124"),
14893 + MTK_EINT_FUNCTION(0, 124),
14894 + MTK_FUNCTION(0, "GPIO124")
14898 +#endif /* __PINCTRL_MTK_MT8516_H */
14899 diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
14900 new file mode 100644
14901 index 000000000000..923264d0e9ef
14903 +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
14905 +// SPDX-License-Identifier: GPL-2.0
14907 + * MediaTek Pinctrl Paris Driver, which implement the vendor per-pin
14908 + * bindings for MediaTek SoC.
14910 + * Copyright (C) 2018 MediaTek Inc.
14911 + * Author: Sean Wang <sean.wang@mediatek.com>
14912 + * Zhiyong Tao <zhiyong.tao@mediatek.com>
14913 + * Hongzhou.Yang <hongzhou.yang@mediatek.com>
14916 +#include <linux/gpio/driver.h>
14917 +#include <dt-bindings/pinctrl/mt65xx.h>
14918 +#include "pinctrl-paris.h"
14920 +#define PINCTRL_PINCTRL_DEV KBUILD_MODNAME
14922 +/* Custom pinconf parameters */
14923 +#define MTK_PIN_CONFIG_TDSEL (PIN_CONFIG_END + 1)
14924 +#define MTK_PIN_CONFIG_RDSEL (PIN_CONFIG_END + 2)
14925 +#define MTK_PIN_CONFIG_PU_ADV (PIN_CONFIG_END + 3)
14926 +#define MTK_PIN_CONFIG_PD_ADV (PIN_CONFIG_END + 4)
14927 +#define MTK_PIN_CONFIG_DRV_ADV (PIN_CONFIG_END + 5)
14929 +static const struct pinconf_generic_params mtk_custom_bindings[] = {
14930 + {"mediatek,tdsel", MTK_PIN_CONFIG_TDSEL, 0},
14931 + {"mediatek,rdsel", MTK_PIN_CONFIG_RDSEL, 0},
14932 + {"mediatek,pull-up-adv", MTK_PIN_CONFIG_PU_ADV, 1},
14933 + {"mediatek,pull-down-adv", MTK_PIN_CONFIG_PD_ADV, 1},
14934 + {"mediatek,drive-strength-adv", MTK_PIN_CONFIG_DRV_ADV, 2},
14937 +#ifdef CONFIG_DEBUG_FS
14938 +static const struct pin_config_item mtk_conf_items[] = {
14939 + PCONFDUMP(MTK_PIN_CONFIG_TDSEL, "tdsel", NULL, true),
14940 + PCONFDUMP(MTK_PIN_CONFIG_RDSEL, "rdsel", NULL, true),
14941 + PCONFDUMP(MTK_PIN_CONFIG_PU_ADV, "pu-adv", NULL, true),
14942 + PCONFDUMP(MTK_PIN_CONFIG_PD_ADV, "pd-adv", NULL, true),
14943 + PCONFDUMP(MTK_PIN_CONFIG_DRV_ADV, "drive-strength-adv", NULL, true),
14947 +static const char * const mtk_gpio_functions[] = {
14948 + "func0", "func1", "func2", "func3",
14949 + "func4", "func5", "func6", "func7",
14950 + "func8", "func9", "func10", "func11",
14951 + "func12", "func13", "func14", "func15",
14954 +static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
14955 + struct pinctrl_gpio_range *range,
14956 + unsigned int pin)
14958 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
14959 + const struct mtk_pin_desc *desc;
14961 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14963 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
14964 + hw->soc->gpio_m);
14967 +static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
14968 + struct pinctrl_gpio_range *range,
14969 + unsigned int pin, bool input)
14971 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
14972 + const struct mtk_pin_desc *desc;
14974 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14976 + /* hardware would take 0 as input direction */
14977 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, !input);
14980 +static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
14981 + unsigned int pin, unsigned long *config)
14983 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
14984 + u32 param = pinconf_to_config_param(*config);
14985 + int val, val2, err, reg, ret = 1;
14986 + const struct mtk_pin_desc *desc;
14988 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14991 + case PIN_CONFIG_BIAS_DISABLE:
14992 + if (hw->soc->bias_disable_get) {
14993 + err = hw->soc->bias_disable_get(hw, desc, &ret);
14997 + return -ENOTSUPP;
15000 + case PIN_CONFIG_BIAS_PULL_UP:
15001 + if (hw->soc->bias_get) {
15002 + err = hw->soc->bias_get(hw, desc, 1, &ret);
15006 + return -ENOTSUPP;
15009 + case PIN_CONFIG_BIAS_PULL_DOWN:
15010 + if (hw->soc->bias_get) {
15011 + err = hw->soc->bias_get(hw, desc, 0, &ret);
15015 + return -ENOTSUPP;
15018 + case PIN_CONFIG_SLEW_RATE:
15019 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SR, &val);
15027 + case PIN_CONFIG_INPUT_ENABLE:
15028 + case PIN_CONFIG_OUTPUT_ENABLE:
15029 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
15033 + /* HW takes input mode as zero; output mode as non-zero */
15034 + if ((val && param == PIN_CONFIG_INPUT_ENABLE) ||
15035 + (!val && param == PIN_CONFIG_OUTPUT_ENABLE))
15039 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
15040 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
15044 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SMT, &val2);
15048 + if (val || !val2)
15052 + case PIN_CONFIG_DRIVE_STRENGTH:
15053 + if (hw->soc->drive_get) {
15054 + err = hw->soc->drive_get(hw, desc, &ret);
15061 + case MTK_PIN_CONFIG_TDSEL:
15062 + case MTK_PIN_CONFIG_RDSEL:
15063 + reg = (param == MTK_PIN_CONFIG_TDSEL) ?
15064 + PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
15066 + err = mtk_hw_get_value(hw, desc, reg, &val);
15073 + case MTK_PIN_CONFIG_PU_ADV:
15074 + case MTK_PIN_CONFIG_PD_ADV:
15075 + if (hw->soc->adv_pull_get) {
15078 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
15079 + err = hw->soc->adv_pull_get(hw, desc, pullup, &ret);
15083 + return -ENOTSUPP;
15086 + case MTK_PIN_CONFIG_DRV_ADV:
15087 + if (hw->soc->adv_drive_get) {
15088 + err = hw->soc->adv_drive_get(hw, desc, &ret);
15092 + return -ENOTSUPP;
15096 + return -ENOTSUPP;
15099 + *config = pinconf_to_config_packed(param, ret);
15104 +static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
15105 + enum pin_config_param param,
15106 + enum pin_config_param arg)
15108 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15109 + const struct mtk_pin_desc *desc;
15113 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
15115 + switch ((u32)param) {
15116 + case PIN_CONFIG_BIAS_DISABLE:
15117 + if (hw->soc->bias_disable_set) {
15118 + err = hw->soc->bias_disable_set(hw, desc);
15122 + return -ENOTSUPP;
15125 + case PIN_CONFIG_BIAS_PULL_UP:
15126 + if (hw->soc->bias_set) {
15127 + err = hw->soc->bias_set(hw, desc, 1);
15131 + return -ENOTSUPP;
15134 + case PIN_CONFIG_BIAS_PULL_DOWN:
15135 + if (hw->soc->bias_set) {
15136 + err = hw->soc->bias_set(hw, desc, 0);
15140 + return -ENOTSUPP;
15143 + case PIN_CONFIG_OUTPUT_ENABLE:
15144 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
15149 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15154 + case PIN_CONFIG_INPUT_ENABLE:
15155 + if (hw->soc->ies_present) {
15156 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_IES,
15160 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15165 + case PIN_CONFIG_SLEW_RATE:
15166 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SR,
15172 + case PIN_CONFIG_OUTPUT:
15173 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15178 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO,
15183 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
15184 + /* arg = 1: Input mode & SMT enable ;
15185 + * arg = 0: Output mode & SMT disable
15187 + arg = arg ? 2 : 1;
15188 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15193 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
15198 + case PIN_CONFIG_DRIVE_STRENGTH:
15199 + if (hw->soc->drive_set) {
15200 + err = hw->soc->drive_set(hw, desc, arg);
15204 + return -ENOTSUPP;
15207 + case MTK_PIN_CONFIG_TDSEL:
15208 + case MTK_PIN_CONFIG_RDSEL:
15209 + reg = (param == MTK_PIN_CONFIG_TDSEL) ?
15210 + PINCTRL_PIN_REG_TDSEL : PINCTRL_PIN_REG_RDSEL;
15212 + err = mtk_hw_set_value(hw, desc, reg, arg);
15216 + case MTK_PIN_CONFIG_PU_ADV:
15217 + case MTK_PIN_CONFIG_PD_ADV:
15218 + if (hw->soc->adv_pull_set) {
15221 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
15222 + err = hw->soc->adv_pull_set(hw, desc, pullup,
15227 + return -ENOTSUPP;
15230 + case MTK_PIN_CONFIG_DRV_ADV:
15231 + if (hw->soc->adv_drive_set) {
15232 + err = hw->soc->adv_drive_set(hw, desc, arg);
15236 + return -ENOTSUPP;
15247 +static struct mtk_pinctrl_group *
15248 +mtk_pctrl_find_group_by_pin(struct mtk_pinctrl *hw, u32 pin)
15252 + for (i = 0; i < hw->soc->ngrps; i++) {
15253 + struct mtk_pinctrl_group *grp = hw->groups + i;
15255 + if (grp->pin == pin)
15262 +static const struct mtk_func_desc *
15263 +mtk_pctrl_find_function_by_pin(struct mtk_pinctrl *hw, u32 pin_num, u32 fnum)
15265 + const struct mtk_pin_desc *pin = hw->soc->pins + pin_num;
15266 + const struct mtk_func_desc *func = pin->funcs;
15268 + while (func && func->name) {
15269 + if (func->muxval == fnum)
15277 +static bool mtk_pctrl_is_function_valid(struct mtk_pinctrl *hw, u32 pin_num,
15282 + for (i = 0; i < hw->soc->npins; i++) {
15283 + const struct mtk_pin_desc *pin = hw->soc->pins + i;
15285 + if (pin->number == pin_num) {
15286 + const struct mtk_func_desc *func = pin->funcs;
15288 + while (func && func->name) {
15289 + if (func->muxval == fnum)
15301 +static int mtk_pctrl_dt_node_to_map_func(struct mtk_pinctrl *pctl,
15302 + u32 pin, u32 fnum,
15303 + struct mtk_pinctrl_group *grp,
15304 + struct pinctrl_map **map,
15305 + unsigned *reserved_maps,
15306 + unsigned *num_maps)
15310 + if (*num_maps == *reserved_maps)
15313 + (*map)[*num_maps].type = PIN_MAP_TYPE_MUX_GROUP;
15314 + (*map)[*num_maps].data.mux.group = grp->name;
15316 + ret = mtk_pctrl_is_function_valid(pctl, pin, fnum);
15318 + dev_err(pctl->dev, "invalid function %d on pin %d .\n",
15323 + (*map)[*num_maps].data.mux.function = mtk_gpio_functions[fnum];
15329 +static int mtk_pctrl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
15330 + struct device_node *node,
15331 + struct pinctrl_map **map,
15332 + unsigned *reserved_maps,
15333 + unsigned *num_maps)
15335 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15336 + int num_pins, num_funcs, maps_per_pin, i, err;
15337 + struct mtk_pinctrl_group *grp;
15338 + unsigned int num_configs;
15339 + bool has_config = false;
15340 + unsigned long *configs;
15341 + u32 pinfunc, pin, func;
15342 + struct property *pins;
15343 + unsigned reserve = 0;
15345 + pins = of_find_property(node, "pinmux", NULL);
15347 + dev_err(hw->dev, "missing pins property in node %pOFn .\n",
15352 + err = pinconf_generic_parse_dt_config(node, pctldev, &configs,
15358 + has_config = true;
15360 + num_pins = pins->length / sizeof(u32);
15361 + num_funcs = num_pins;
15362 + maps_per_pin = 0;
15365 + if (has_config && num_pins >= 1)
15368 + if (!num_pins || !maps_per_pin) {
15373 + reserve = num_pins * maps_per_pin;
15375 + err = pinctrl_utils_reserve_map(pctldev, map, reserved_maps, num_maps,
15380 + for (i = 0; i < num_pins; i++) {
15381 + err = of_property_read_u32_index(node, "pinmux", i, &pinfunc);
15385 + pin = MTK_GET_PIN_NO(pinfunc);
15386 + func = MTK_GET_PIN_FUNC(pinfunc);
15388 + if (pin >= hw->soc->npins ||
15389 + func >= ARRAY_SIZE(mtk_gpio_functions)) {
15390 + dev_err(hw->dev, "invalid pins value.\n");
15395 + grp = mtk_pctrl_find_group_by_pin(hw, pin);
15397 + dev_err(hw->dev, "unable to match pin %d to group\n",
15403 + err = mtk_pctrl_dt_node_to_map_func(hw, pin, func, grp, map,
15404 + reserved_maps, num_maps);
15408 + if (has_config) {
15409 + err = pinctrl_utils_add_map_configs(pctldev, map,
15415 + PIN_MAP_TYPE_CONFIGS_GROUP);
15428 +static int mtk_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
15429 + struct device_node *np_config,
15430 + struct pinctrl_map **map,
15431 + unsigned *num_maps)
15433 + struct device_node *np;
15434 + unsigned reserved_maps;
15439 + reserved_maps = 0;
15441 + for_each_child_of_node(np_config, np) {
15442 + ret = mtk_pctrl_dt_subnode_to_map(pctldev, np, map,
15446 + pinctrl_utils_free_map(pctldev, *map, *num_maps);
15455 +static int mtk_pctrl_get_groups_count(struct pinctrl_dev *pctldev)
15457 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15459 + return hw->soc->ngrps;
15462 +static const char *mtk_pctrl_get_group_name(struct pinctrl_dev *pctldev,
15465 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15467 + return hw->groups[group].name;
15470 +static int mtk_pctrl_get_group_pins(struct pinctrl_dev *pctldev,
15471 + unsigned group, const unsigned **pins,
15472 + unsigned *num_pins)
15474 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15476 + *pins = (unsigned *)&hw->groups[group].pin;
15482 +static const struct pinctrl_ops mtk_pctlops = {
15483 + .dt_node_to_map = mtk_pctrl_dt_node_to_map,
15484 + .dt_free_map = pinctrl_utils_free_map,
15485 + .get_groups_count = mtk_pctrl_get_groups_count,
15486 + .get_group_name = mtk_pctrl_get_group_name,
15487 + .get_group_pins = mtk_pctrl_get_group_pins,
15490 +static int mtk_pmx_get_funcs_cnt(struct pinctrl_dev *pctldev)
15492 + return ARRAY_SIZE(mtk_gpio_functions);
15495 +static const char *mtk_pmx_get_func_name(struct pinctrl_dev *pctldev,
15496 + unsigned selector)
15498 + return mtk_gpio_functions[selector];
15501 +static int mtk_pmx_get_func_groups(struct pinctrl_dev *pctldev,
15502 + unsigned function,
15503 + const char * const **groups,
15504 + unsigned * const num_groups)
15506 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15508 + *groups = hw->grp_names;
15509 + *num_groups = hw->soc->ngrps;
15514 +static int mtk_pmx_set_mux(struct pinctrl_dev *pctldev,
15515 + unsigned function,
15518 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15519 + struct mtk_pinctrl_group *grp = hw->groups + group;
15520 + const struct mtk_func_desc *desc_func;
15521 + const struct mtk_pin_desc *desc;
15524 + ret = mtk_pctrl_is_function_valid(hw, grp->pin, function);
15526 + dev_err(hw->dev, "invalid function %d on group %d .\n",
15527 + function, group);
15531 + desc_func = mtk_pctrl_find_function_by_pin(hw, grp->pin, function);
15535 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[grp->pin];
15536 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE, desc_func->muxval);
15541 +static const struct pinmux_ops mtk_pmxops = {
15542 + .get_functions_count = mtk_pmx_get_funcs_cnt,
15543 + .get_function_name = mtk_pmx_get_func_name,
15544 + .get_function_groups = mtk_pmx_get_func_groups,
15545 + .set_mux = mtk_pmx_set_mux,
15546 + .gpio_set_direction = mtk_pinmux_gpio_set_direction,
15547 + .gpio_request_enable = mtk_pinmux_gpio_request_enable,
15550 +static int mtk_pconf_group_get(struct pinctrl_dev *pctldev, unsigned group,
15551 + unsigned long *config)
15553 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15555 + *config = hw->groups[group].config;
15560 +static int mtk_pconf_group_set(struct pinctrl_dev *pctldev, unsigned group,
15561 + unsigned long *configs, unsigned num_configs)
15563 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15564 + struct mtk_pinctrl_group *grp = &hw->groups[group];
15567 + for (i = 0; i < num_configs; i++) {
15568 + ret = mtk_pinconf_set(pctldev, grp->pin,
15569 + pinconf_to_config_param(configs[i]),
15570 + pinconf_to_config_argument(configs[i]));
15574 + grp->config = configs[i];
15580 +static const struct pinconf_ops mtk_confops = {
15581 + .pin_config_get = mtk_pinconf_get,
15582 + .pin_config_group_get = mtk_pconf_group_get,
15583 + .pin_config_group_set = mtk_pconf_group_set,
15586 +static struct pinctrl_desc mtk_desc = {
15587 + .name = PINCTRL_PINCTRL_DEV,
15588 + .pctlops = &mtk_pctlops,
15589 + .pmxops = &mtk_pmxops,
15590 + .confops = &mtk_confops,
15591 + .owner = THIS_MODULE,
15594 +static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
15596 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15597 + const struct mtk_pin_desc *desc;
15600 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15602 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &value);
15609 +static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
15611 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15612 + const struct mtk_pin_desc *desc;
15615 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15617 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
15624 +static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
15626 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15627 + const struct mtk_pin_desc *desc;
15629 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15631 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
15634 +static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
15636 + return pinctrl_gpio_direction_input(chip->base + gpio);
15639 +static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
15642 + mtk_gpio_set(chip, gpio, value);
15644 + return pinctrl_gpio_direction_output(chip->base + gpio);
15647 +static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
15649 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15650 + const struct mtk_pin_desc *desc;
15653 + return -ENOTSUPP;
15655 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
15657 + if (desc->eint.eint_n == EINT_NA)
15658 + return -ENOTSUPP;
15660 + return mtk_eint_find_irq(hw->eint, desc->eint.eint_n);
15663 +static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
15664 + unsigned long config)
15666 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15667 + const struct mtk_pin_desc *desc;
15670 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
15673 + pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE ||
15674 + desc->eint.eint_n == EINT_NA)
15675 + return -ENOTSUPP;
15677 + debounce = pinconf_to_config_argument(config);
15679 + return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce);
15682 +static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
15684 + struct gpio_chip *chip = &hw->chip;
15687 + chip->label = PINCTRL_PINCTRL_DEV;
15688 + chip->parent = hw->dev;
15689 + chip->request = gpiochip_generic_request;
15690 + chip->free = gpiochip_generic_free;
15691 + chip->get_direction = mtk_gpio_get_direction;
15692 + chip->direction_input = mtk_gpio_direction_input;
15693 + chip->direction_output = mtk_gpio_direction_output;
15694 + chip->get = mtk_gpio_get;
15695 + chip->set = mtk_gpio_set;
15696 + chip->to_irq = mtk_gpio_to_irq,
15697 + chip->set_config = mtk_gpio_set_config,
15699 + chip->ngpio = hw->soc->npins;
15700 + chip->of_node = np;
15701 + chip->of_gpio_n_cells = 2;
15703 + ret = gpiochip_add_data(chip, hw);
15710 +static int mtk_pctrl_build_state(struct platform_device *pdev)
15712 + struct mtk_pinctrl *hw = platform_get_drvdata(pdev);
15715 + /* Allocate groups */
15716 + hw->groups = devm_kmalloc_array(&pdev->dev, hw->soc->ngrps,
15717 + sizeof(*hw->groups), GFP_KERNEL);
15721 + /* We assume that one pin is one group, use pin name as group name. */
15722 + hw->grp_names = devm_kmalloc_array(&pdev->dev, hw->soc->ngrps,
15723 + sizeof(*hw->grp_names), GFP_KERNEL);
15724 + if (!hw->grp_names)
15727 + for (i = 0; i < hw->soc->npins; i++) {
15728 + const struct mtk_pin_desc *pin = hw->soc->pins + i;
15729 + struct mtk_pinctrl_group *group = hw->groups + i;
15731 + group->name = pin->name;
15732 + group->pin = pin->number;
15734 + hw->grp_names[i] = pin->name;
15740 +int mtk_paris_pinctrl_probe(struct platform_device *pdev,
15741 + const struct mtk_pin_soc *soc)
15743 + struct pinctrl_pin_desc *pins;
15744 + struct mtk_pinctrl *hw;
15745 + struct resource *res;
15748 + hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
15752 + platform_set_drvdata(pdev, hw);
15754 + hw->dev = &pdev->dev;
15756 + if (!hw->soc->nbase_names) {
15757 + dev_err(&pdev->dev,
15758 + "SoC should be assigned at least one register base\n");
15762 + hw->base = devm_kmalloc_array(&pdev->dev, hw->soc->nbase_names,
15763 + sizeof(*hw->base), GFP_KERNEL);
15767 + for (i = 0; i < hw->soc->nbase_names; i++) {
15768 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
15769 + hw->soc->base_names[i]);
15771 + dev_err(&pdev->dev, "missing IO resource\n");
15775 + hw->base[i] = devm_ioremap_resource(&pdev->dev, res);
15776 + if (IS_ERR(hw->base[i]))
15777 + return PTR_ERR(hw->base[i]);
15780 + hw->nbase = hw->soc->nbase_names;
15782 + err = mtk_pctrl_build_state(pdev);
15784 + dev_err(&pdev->dev, "build state failed: %d\n", err);
15788 + /* Copy from internal struct mtk_pin_desc to register to the core */
15789 + pins = devm_kmalloc_array(&pdev->dev, hw->soc->npins, sizeof(*pins),
15794 + for (i = 0; i < hw->soc->npins; i++) {
15795 + pins[i].number = hw->soc->pins[i].number;
15796 + pins[i].name = hw->soc->pins[i].name;
15799 + /* Setup pins descriptions per SoC types */
15800 + mtk_desc.pins = (const struct pinctrl_pin_desc *)pins;
15801 + mtk_desc.npins = hw->soc->npins;
15802 + mtk_desc.num_custom_params = ARRAY_SIZE(mtk_custom_bindings);
15803 + mtk_desc.custom_params = mtk_custom_bindings;
15804 +#ifdef CONFIG_DEBUG_FS
15805 + mtk_desc.custom_conf_items = mtk_conf_items;
15808 + err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
15813 + err = pinctrl_enable(hw->pctrl);
15817 + err = mtk_build_eint(hw, pdev);
15819 + dev_warn(&pdev->dev,
15820 + "Failed to add EINT, but pinctrl still can work\n");
15822 + /* Build gpiochip should be after pinctrl_enable is done */
15823 + err = mtk_build_gpiochip(hw, pdev->dev.of_node);
15825 + dev_err(&pdev->dev, "Failed to add gpio_chip\n");
15829 + platform_set_drvdata(pdev, hw);
15834 +static int mtk_paris_pinctrl_suspend(struct device *device)
15836 + struct mtk_pinctrl *pctl = dev_get_drvdata(device);
15838 + return mtk_eint_do_suspend(pctl->eint);
15841 +static int mtk_paris_pinctrl_resume(struct device *device)
15843 + struct mtk_pinctrl *pctl = dev_get_drvdata(device);
15845 + return mtk_eint_do_resume(pctl->eint);
15848 +const struct dev_pm_ops mtk_paris_pinctrl_pm_ops = {
15849 + .suspend_noirq = mtk_paris_pinctrl_suspend,
15850 + .resume_noirq = mtk_paris_pinctrl_resume,
15852 diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.h b/drivers/pinctrl/mediatek/pinctrl-paris.h
15853 new file mode 100644
15854 index 000000000000..3d43771074e6
15856 +++ b/drivers/pinctrl/mediatek/pinctrl-paris.h
15858 +/* SPDX-License-Identifier: GPL-2.0 */
15860 + * Copyright (C) 2018 MediaTek Inc.
15862 + * Author: Sean Wang <sean.wang@mediatek.com>
15863 + * Zhiyong Tao <zhiyong.tao@mediatek.com>
15864 + * Hongzhou.Yang <hongzhou.yang@mediatek.com>
15866 +#ifndef __PINCTRL_PARIS_H
15867 +#define __PINCTRL_PARIS_H
15869 +#include <linux/io.h>
15870 +#include <linux/init.h>
15871 +#include <linux/of.h>
15872 +#include <linux/of_platform.h>
15873 +#include <linux/platform_device.h>
15874 +#include <linux/pinctrl/pinctrl.h>
15875 +#include <linux/pinctrl/pinmux.h>
15876 +#include <linux/pinctrl/pinconf.h>
15877 +#include <linux/pinctrl/pinconf-generic.h>
15879 +#include "../core.h"
15880 +#include "../pinconf.h"
15881 +#include "../pinctrl-utils.h"
15882 +#include "../pinmux.h"
15883 +#include "mtk-eint.h"
15884 +#include "pinctrl-mtk-common-v2.h"
15886 +#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), }
15888 +#define MTK_EINT_FUNCTION(_eintmux, _eintnum) \
15890 + .eint_m = _eintmux, \
15891 + .eint_n = _eintnum, \
15894 +#define MTK_FUNCTION(_val, _name) \
15896 + .muxval = _val, \
15900 +#define MTK_PIN(_number, _name, _eint, _drv_n, ...) { \
15901 + .number = _number, \
15904 + .drv_n = _drv_n, \
15905 + .funcs = (struct mtk_func_desc[]){ \
15906 + __VA_ARGS__, { } }, \
15909 +#define PINCTRL_PIN_GROUP(name, id) \
15913 + ARRAY_SIZE(id##_pins), \
15917 +int mtk_paris_pinctrl_probe(struct platform_device *pdev,
15918 + const struct mtk_pin_soc *soc);
15920 +extern const struct dev_pm_ops mtk_paris_pinctrl_pm_ops;
15922 +#endif /* __PINCTRL_PARIS_H */