129b48dfcea1a9821bbd8afda4cb9f1850cb5d9d
[openwrt/openwrt.git] / target / linux / mediatek / patches-4.19 / 0005-pinctrl-mediatek-sync-with-5.3.patch
1 This patch squashes the following upstream commits:
2
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
55
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"
61
62 config EINT_MTK
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
66 + select GPIOLIB
67 select IRQ_DOMAIN
68
69 config PINCTRL_MTK
70 @@ -15,6 +16,24 @@ config PINCTRL_MTK
71 select EINT_MTK
72 select OF_GPIO
73
74 +config PINCTRL_MTK_MOORE
75 + bool
76 + depends on OF
77 + select GENERIC_PINCONF
78 + select GENERIC_PINCTRL_GROUPS
79 + select GENERIC_PINMUX_FUNCTIONS
80 + select GPIOLIB
81 + select OF_GPIO
82 +
83 +config PINCTRL_MTK_PARIS
84 + bool
85 + depends on OF
86 + select PINMUX
87 + select GENERIC_PINCONF
88 + select GPIOLIB
89 + select EINT_MTK
90 + select OF_GPIO
91 +
92 # For ARMv7 SoCs
93 config PINCTRL_MT2701
94 bool "Mediatek MT2701 pin control"
95 @@ -23,6 +42,20 @@ config PINCTRL_MT2701
96 default MACH_MT2701
97 select PINCTRL_MTK
98
99 +config PINCTRL_MT7623
100 + bool "Mediatek MT7623 pin control with generic binding"
101 + depends on MACH_MT7623 || COMPILE_TEST
102 + depends on OF
103 + default MACH_MT7623
104 + select PINCTRL_MTK_MOORE
105 +
106 +config PINCTRL_MT7629
107 + bool "Mediatek MT7629 pin control"
108 + depends on MACH_MT7629 || COMPILE_TEST
109 + depends on OF
110 + default MACH_MT7629
111 + select PINCTRL_MTK_MOORE
112 +
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
118 select PINCTRL_MTK
119
120 +config PINCTRL_MT6765
121 + bool "Mediatek MT6765 pin control"
122 + depends on OF
123 + depends on ARM64 || COMPILE_TEST
124 + default ARM64 && ARCH_MEDIATEK
125 + select PINCTRL_MTK_PARIS
126 +
127 +config PINCTRL_MT6797
128 + bool "Mediatek MT6797 pin control"
129 + depends on OF
130 + depends on ARM64 || COMPILE_TEST
131 + default ARM64 && ARCH_MEDIATEK
132 + select PINCTRL_MTK_PARIS
133 +
134 config PINCTRL_MT7622
135 bool "MediaTek MT7622 pin control"
136 depends on OF
137 depends on ARM64 || COMPILE_TEST
138 - select GENERIC_PINCONF
139 - select GENERIC_PINCTRL_GROUPS
140 - select GENERIC_PINMUX_FUNCTIONS
141 - select GPIOLIB
142 - select OF_GPIO
143 + default ARM64 && ARCH_MEDIATEK
144 + select PINCTRL_MTK_MOORE
145
146 config PINCTRL_MT8173
147 bool "Mediatek MT8173 pin control"
148 @@ -62,6 +106,20 @@ config PINCTRL_MT8173
149 default ARM64 && ARCH_MEDIATEK
150 select PINCTRL_MTK
151
152 +config PINCTRL_MT8183
153 + bool "Mediatek MT8183 pin control"
154 + depends on OF
155 + depends on ARM64 || COMPILE_TEST
156 + default ARM64 && ARCH_MEDIATEK
157 + select PINCTRL_MTK_PARIS
158 +
159 +config PINCTRL_MT8516
160 + bool "Mediatek MT8516 pin control"
161 + depends on OF
162 + depends on ARM64 || COMPILE_TEST
163 + default ARM64 && ARCH_MEDIATEK
164 + select PINCTRL_MTK
165 +
166 # For PMIC
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
173 @@ -2,12 +2,20 @@
174 # Core
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
179
180 # SoC Drivers
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
198 @@ -11,7 +11,7 @@
199
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)
212 return -EOPNOTSUPP;
213 }
214
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)
218 {
219 return -EOPNOTSUPP;
220 }
221
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)
224 {
225 return -EOPNOTSUPP;
226 }
227 diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.c b/drivers/pinctrl/mediatek/pinctrl-moore.c
228 new file mode 100644
229 index 000000000000..aa1068d2867f
230 --- /dev/null
231 +++ b/drivers/pinctrl/mediatek/pinctrl-moore.c
232 @@ -0,0 +1,690 @@
233 +// SPDX-License-Identifier: GPL-2.0
234 +/*
235 + * MediaTek Pinctrl Moore Driver, which implement the generic dt-binding
236 + * pinctrl-bindings.txt for MediaTek SoC.
237 + *
238 + * Copyright (C) 2017-2018 MediaTek Inc.
239 + * Author: Sean Wang <sean.wang@mediatek.com>
240 + *
241 + */
242 +
243 +#include <linux/gpio/driver.h>
244 +#include "pinctrl-moore.h"
245 +
246 +#define PINCTRL_PINCTRL_DEV KBUILD_MODNAME
247 +
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)
253 +
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},
259 +};
260 +
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),
267 +};
268 +#endif
269 +
270 +static int mtk_pinmux_set_mux(struct pinctrl_dev *pctldev,
271 + unsigned int selector, unsigned int group)
272 +{
273 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
274 + struct function_desc *func;
275 + struct group_desc *grp;
276 + int i;
277 +
278 + func = pinmux_generic_get_function(pctldev, selector);
279 + if (!func)
280 + return -EINVAL;
281 +
282 + grp = pinctrl_generic_get_group(pctldev, group);
283 + if (!grp)
284 + return -EINVAL;
285 +
286 + dev_dbg(pctldev->dev, "enable function %s group %s\n",
287 + func->name, grp->name);
288 +
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];
293 +
294 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
295 +
296 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
297 + pin_modes[i]);
298 + }
299 +
300 + return 0;
301 +}
302 +
303 +static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
304 + struct pinctrl_gpio_range *range,
305 + unsigned int pin)
306 +{
307 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
308 + const struct mtk_pin_desc *desc;
309 +
310 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
311 +
312 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
313 + hw->soc->gpio_m);
314 +}
315 +
316 +static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
317 + struct pinctrl_gpio_range *range,
318 + unsigned int pin, bool input)
319 +{
320 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
321 + const struct mtk_pin_desc *desc;
322 +
323 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
324 +
325 + /* hardware would take 0 as input direction */
326 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, !input);
327 +}
328 +
329 +static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
330 + unsigned int pin, unsigned long *config)
331 +{
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;
336 +
337 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
338 +
339 + switch (param) {
340 + case PIN_CONFIG_BIAS_DISABLE:
341 + if (hw->soc->bias_disable_get) {
342 + err = hw->soc->bias_disable_get(hw, desc, &ret);
343 + if (err)
344 + return err;
345 + } else {
346 + return -ENOTSUPP;
347 + }
348 + break;
349 + case PIN_CONFIG_BIAS_PULL_UP:
350 + if (hw->soc->bias_get) {
351 + err = hw->soc->bias_get(hw, desc, 1, &ret);
352 + if (err)
353 + return err;
354 + } else {
355 + return -ENOTSUPP;
356 + }
357 + break;
358 + case PIN_CONFIG_BIAS_PULL_DOWN:
359 + if (hw->soc->bias_get) {
360 + err = hw->soc->bias_get(hw, desc, 0, &ret);
361 + if (err)
362 + return err;
363 + } else {
364 + return -ENOTSUPP;
365 + }
366 + break;
367 + case PIN_CONFIG_SLEW_RATE:
368 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SR, &val);
369 + if (err)
370 + return err;
371 +
372 + if (!val)
373 + return -EINVAL;
374 +
375 + break;
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);
379 + if (err)
380 + return err;
381 +
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))
385 + return -EINVAL;
386 +
387 + break;
388 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
389 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
390 + if (err)
391 + return err;
392 +
393 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SMT, &val2);
394 + if (err)
395 + return err;
396 +
397 + if (val || !val2)
398 + return -EINVAL;
399 +
400 + break;
401 + case PIN_CONFIG_DRIVE_STRENGTH:
402 + if (hw->soc->drive_get) {
403 + err = hw->soc->drive_get(hw, desc, &ret);
404 + if (err)
405 + return err;
406 + } else {
407 + err = -ENOTSUPP;
408 + }
409 + break;
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;
414 +
415 + err = mtk_hw_get_value(hw, desc, reg, &val);
416 + if (err)
417 + return err;
418 +
419 + ret = val;
420 +
421 + break;
422 + case MTK_PIN_CONFIG_PU_ADV:
423 + case MTK_PIN_CONFIG_PD_ADV:
424 + if (hw->soc->adv_pull_get) {
425 + bool pullup;
426 +
427 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
428 + err = hw->soc->adv_pull_get(hw, desc, pullup, &ret);
429 + if (err)
430 + return err;
431 + } else {
432 + return -ENOTSUPP;
433 + }
434 + break;
435 + default:
436 + return -ENOTSUPP;
437 + }
438 +
439 + *config = pinconf_to_config_packed(param, ret);
440 +
441 + return 0;
442 +}
443 +
444 +static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
445 + unsigned long *configs, unsigned int num_configs)
446 +{
447 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
448 + const struct mtk_pin_desc *desc;
449 + u32 reg, param, arg;
450 + int cfg, err = 0;
451 +
452 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
453 +
454 + for (cfg = 0; cfg < num_configs; cfg++) {
455 + param = pinconf_to_config_param(configs[cfg]);
456 + arg = pinconf_to_config_argument(configs[cfg]);
457 +
458 + switch (param) {
459 + case PIN_CONFIG_BIAS_DISABLE:
460 + if (hw->soc->bias_disable_set) {
461 + err = hw->soc->bias_disable_set(hw, desc);
462 + if (err)
463 + return err;
464 + } else {
465 + return -ENOTSUPP;
466 + }
467 + break;
468 + case PIN_CONFIG_BIAS_PULL_UP:
469 + if (hw->soc->bias_set) {
470 + err = hw->soc->bias_set(hw, desc, 1);
471 + if (err)
472 + return err;
473 + } else {
474 + return -ENOTSUPP;
475 + }
476 + break;
477 + case PIN_CONFIG_BIAS_PULL_DOWN:
478 + if (hw->soc->bias_set) {
479 + err = hw->soc->bias_set(hw, desc, 0);
480 + if (err)
481 + return err;
482 + } else {
483 + return -ENOTSUPP;
484 + }
485 + break;
486 + case PIN_CONFIG_OUTPUT_ENABLE:
487 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
488 + MTK_DISABLE);
489 + if (err)
490 + goto err;
491 +
492 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
493 + MTK_OUTPUT);
494 + if (err)
495 + goto err;
496 + break;
497 + case PIN_CONFIG_INPUT_ENABLE:
498 +
499 + if (hw->soc->ies_present) {
500 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_IES,
501 + MTK_ENABLE);
502 + }
503 +
504 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
505 + MTK_INPUT);
506 + if (err)
507 + goto err;
508 + break;
509 + case PIN_CONFIG_SLEW_RATE:
510 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SR,
511 + arg);
512 + if (err)
513 + goto err;
514 +
515 + break;
516 + case PIN_CONFIG_OUTPUT:
517 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
518 + MTK_OUTPUT);
519 + if (err)
520 + goto err;
521 +
522 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO,
523 + arg);
524 + if (err)
525 + goto err;
526 + break;
527 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
528 + /* arg = 1: Input mode & SMT enable ;
529 + * arg = 0: Output mode & SMT disable
530 + */
531 + arg = arg ? 2 : 1;
532 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
533 + arg & 1);
534 + if (err)
535 + goto err;
536 +
537 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
538 + !!(arg & 2));
539 + if (err)
540 + goto err;
541 + break;
542 + case PIN_CONFIG_DRIVE_STRENGTH:
543 + if (hw->soc->drive_set) {
544 + err = hw->soc->drive_set(hw, desc, arg);
545 + if (err)
546 + return err;
547 + } else {
548 + err = -ENOTSUPP;
549 + }
550 + break;
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;
555 +
556 + err = mtk_hw_set_value(hw, desc, reg, arg);
557 + if (err)
558 + goto err;
559 + break;
560 + case MTK_PIN_CONFIG_PU_ADV:
561 + case MTK_PIN_CONFIG_PD_ADV:
562 + if (hw->soc->adv_pull_set) {
563 + bool pullup;
564 +
565 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
566 + err = hw->soc->adv_pull_set(hw, desc, pullup,
567 + arg);
568 + if (err)
569 + return err;
570 + } else {
571 + return -ENOTSUPP;
572 + }
573 + break;
574 + default:
575 + err = -ENOTSUPP;
576 + }
577 + }
578 +err:
579 + return err;
580 +}
581 +
582 +static int mtk_pinconf_group_get(struct pinctrl_dev *pctldev,
583 + unsigned int group, unsigned long *config)
584 +{
585 + const unsigned int *pins;
586 + unsigned int i, npins, old = 0;
587 + int ret;
588 +
589 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
590 + if (ret)
591 + return ret;
592 +
593 + for (i = 0; i < npins; i++) {
594 + if (mtk_pinconf_get(pctldev, pins[i], config))
595 + return -ENOTSUPP;
596 +
597 + /* configs do not match between two pins */
598 + if (i && old != *config)
599 + return -ENOTSUPP;
600 +
601 + old = *config;
602 + }
603 +
604 + return 0;
605 +}
606 +
607 +static int mtk_pinconf_group_set(struct pinctrl_dev *pctldev,
608 + unsigned int group, unsigned long *configs,
609 + unsigned int num_configs)
610 +{
611 + const unsigned int *pins;
612 + unsigned int i, npins;
613 + int ret;
614 +
615 + ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
616 + if (ret)
617 + return ret;
618 +
619 + for (i = 0; i < npins; i++) {
620 + ret = mtk_pinconf_set(pctldev, pins[i], configs, num_configs);
621 + if (ret)
622 + return ret;
623 + }
624 +
625 + return 0;
626 +}
627 +
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,
634 +};
635 +
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,
643 + .strict = true,
644 +};
645 +
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,
653 +};
654 +
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,
661 +};
662 +
663 +static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
664 +{
665 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
666 + const struct mtk_pin_desc *desc;
667 + int value, err;
668 +
669 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
670 +
671 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
672 + if (err)
673 + return err;
674 +
675 + return !!value;
676 +}
677 +
678 +static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
679 +{
680 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
681 + const struct mtk_pin_desc *desc;
682 +
683 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
684 +
685 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
686 +}
687 +
688 +static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
689 +{
690 + return pinctrl_gpio_direction_input(chip->base + gpio);
691 +}
692 +
693 +static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
694 + int value)
695 +{
696 + mtk_gpio_set(chip, gpio, value);
697 +
698 + return pinctrl_gpio_direction_output(chip->base + gpio);
699 +}
700 +
701 +static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
702 +{
703 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
704 + const struct mtk_pin_desc *desc;
705 +
706 + if (!hw->eint)
707 + return -ENOTSUPP;
708 +
709 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
710 +
711 + if (desc->eint.eint_n == (u16)EINT_NA)
712 + return -ENOTSUPP;
713 +
714 + return mtk_eint_find_irq(hw->eint, desc->eint.eint_n);
715 +}
716 +
717 +static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
718 + unsigned long config)
719 +{
720 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
721 + const struct mtk_pin_desc *desc;
722 + u32 debounce;
723 +
724 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
725 +
726 + if (!hw->eint ||
727 + pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE ||
728 + desc->eint.eint_n == (u16)EINT_NA)
729 + return -ENOTSUPP;
730 +
731 + debounce = pinconf_to_config_argument(config);
732 +
733 + return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce);
734 +}
735 +
736 +static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
737 +{
738 + struct gpio_chip *chip = &hw->chip;
739 + int ret;
740 +
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,
751 + chip->base = -1;
752 + chip->ngpio = hw->soc->npins;
753 + chip->of_node = np;
754 + chip->of_gpio_n_cells = 2;
755 +
756 + ret = gpiochip_add_data(chip, hw);
757 + if (ret < 0)
758 + return ret;
759 +
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.
766 + */
767 + if (!of_find_property(np, "gpio-ranges", NULL)) {
768 + ret = gpiochip_add_pin_range(chip, dev_name(hw->dev), 0, 0,
769 + chip->ngpio);
770 + if (ret < 0) {
771 + gpiochip_remove(chip);
772 + return ret;
773 + }
774 + }
775 +
776 + return 0;
777 +}
778 +
779 +static int mtk_build_groups(struct mtk_pinctrl *hw)
780 +{
781 + int err, i;
782 +
783 + for (i = 0; i < hw->soc->ngrps; i++) {
784 + const struct group_desc *group = hw->soc->grps + i;
785 +
786 + err = pinctrl_generic_add_group(hw->pctrl, group->name,
787 + group->pins, group->num_pins,
788 + group->data);
789 + if (err < 0) {
790 + dev_err(hw->dev, "Failed to register group %s\n",
791 + group->name);
792 + return err;
793 + }
794 + }
795 +
796 + return 0;
797 +}
798 +
799 +static int mtk_build_functions(struct mtk_pinctrl *hw)
800 +{
801 + int i, err;
802 +
803 + for (i = 0; i < hw->soc->nfuncs ; i++) {
804 + const struct function_desc *func = hw->soc->funcs + i;
805 +
806 + err = pinmux_generic_add_function(hw->pctrl, func->name,
807 + func->group_names,
808 + func->num_group_names,
809 + func->data);
810 + if (err < 0) {
811 + dev_err(hw->dev, "Failed to register function %s\n",
812 + func->name);
813 + return err;
814 + }
815 + }
816 +
817 + return 0;
818 +}
819 +
820 +int mtk_moore_pinctrl_probe(struct platform_device *pdev,
821 + const struct mtk_pin_soc *soc)
822 +{
823 + struct pinctrl_pin_desc *pins;
824 + struct resource *res;
825 + struct mtk_pinctrl *hw;
826 + int err, i;
827 +
828 + hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
829 + if (!hw)
830 + return -ENOMEM;
831 +
832 + hw->soc = soc;
833 + hw->dev = &pdev->dev;
834 +
835 + if (!hw->soc->nbase_names) {
836 + dev_err(&pdev->dev,
837 + "SoC should be assigned at least one register base\n");
838 + return -EINVAL;
839 + }
840 +
841 + hw->base = devm_kmalloc_array(&pdev->dev, hw->soc->nbase_names,
842 + sizeof(*hw->base), GFP_KERNEL);
843 + if (!hw->base)
844 + return -ENOMEM;
845 +
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]);
849 + if (!res) {
850 + dev_err(&pdev->dev, "missing IO resource\n");
851 + return -ENXIO;
852 + }
853 +
854 + hw->base[i] = devm_ioremap_resource(&pdev->dev, res);
855 + if (IS_ERR(hw->base[i]))
856 + return PTR_ERR(hw->base[i]);
857 + }
858 +
859 + hw->nbase = hw->soc->nbase_names;
860 +
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),
863 + GFP_KERNEL);
864 + if (!pins)
865 + return -ENOMEM;
866 +
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;
870 + }
871 +
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;
879 +#endif
880 +
881 + err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
882 + &hw->pctrl);
883 + if (err)
884 + return err;
885 +
886 + /* Setup groups descriptions per SoC types */
887 + err = mtk_build_groups(hw);
888 + if (err) {
889 + dev_err(&pdev->dev, "Failed to build groups\n");
890 + return err;
891 + }
892 +
893 + /* Setup functions descriptions per SoC types */
894 + err = mtk_build_functions(hw);
895 + if (err) {
896 + dev_err(&pdev->dev, "Failed to build functions\n");
897 + return err;
898 + }
899 +
900 + /* For able to make pinctrl_claim_hogs, we must not enable pinctrl
901 + * until all groups and functions are being added one.
902 + */
903 + err = pinctrl_enable(hw->pctrl);
904 + if (err)
905 + return err;
906 +
907 + err = mtk_build_eint(hw, pdev);
908 + if (err)
909 + dev_warn(&pdev->dev,
910 + "Failed to add EINT, but pinctrl still can work\n");
911 +
912 + /* Build gpiochip should be after pinctrl_enable is done */
913 + err = mtk_build_gpiochip(hw, pdev->dev.of_node);
914 + if (err) {
915 + dev_err(&pdev->dev, "Failed to add gpio_chip\n");
916 + return err;
917 + }
918 +
919 + platform_set_drvdata(pdev, hw);
920 +
921 + return 0;
922 +}
923 diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.h b/drivers/pinctrl/mediatek/pinctrl-moore.h
924 new file mode 100644
925 index 000000000000..e1b4b82b9d3d
926 --- /dev/null
927 +++ b/drivers/pinctrl/mediatek/pinctrl-moore.h
928 @@ -0,0 +1,51 @@
929 +/* SPDX-License-Identifier: GPL-2.0 */
930 +/*
931 + * Copyright (C) 2017-2018 MediaTek Inc.
932 + *
933 + * Author: Sean Wang <sean.wang@mediatek.com>
934 + *
935 + */
936 +#ifndef __PINCTRL_MOORE_H
937 +#define __PINCTRL_MOORE_H
938 +
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>
948 +
949 +#include "../core.h"
950 +#include "../pinconf.h"
951 +#include "../pinmux.h"
952 +#include "mtk-eint.h"
953 +#include "pinctrl-mtk-common-v2.h"
954 +
955 +#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), }
956 +
957 +#define MTK_PIN(_number, _name, _eint_m, _eint_n, _drv_n) { \
958 + .number = _number, \
959 + .name = _name, \
960 + .eint = { \
961 + .eint_m = _eint_m, \
962 + .eint_n = _eint_n, \
963 + }, \
964 + .drv_n = _drv_n, \
965 + .funcs = NULL, \
966 + }
967 +
968 +#define PINCTRL_PIN_GROUP(name, id) \
969 + { \
970 + name, \
971 + id##_pins, \
972 + ARRAY_SIZE(id##_pins), \
973 + id##_funcs, \
974 + }
975 +
976 +int mtk_moore_pinctrl_probe(struct platform_device *pdev,
977 + const struct mtk_pin_soc *soc);
978 +
979 +#endif /* __PINCTRL_MOORE_H */
980 diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6765.c b/drivers/pinctrl/mediatek/pinctrl-mt6765.c
981 new file mode 100644
982 index 000000000000..32451e8693be
983 --- /dev/null
984 +++ b/drivers/pinctrl/mediatek/pinctrl-mt6765.c
985 @@ -0,0 +1,1108 @@
986 +// SPDX-License-Identifier: GPL-2.0
987 +/*
988 + * Copyright (C) 2018 MediaTek Inc.
989 + *
990 + * Author: ZH Chen <zh.chen@mediatek.com>
991 + *
992 + */
993 +
994 +#include "pinctrl-mtk-mt6765.h"
995 +#include "pinctrl-paris.h"
996 +
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.
1002 + */
1003 +
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, \
1006 + _x_bits, 32, 0)
1007 +
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, \
1010 + _x_bits, 32, 1)
1011 +
1012 +static const struct mtk_pin_field_calc mt6765_pin_mode_range[] = {
1013 + PIN_FIELD(0, 202, 0x300, 0x10, 0, 4),
1014 +};
1015 +
1016 +static const struct mtk_pin_field_calc mt6765_pin_dir_range[] = {
1017 + PIN_FIELD(0, 202, 0x0, 0x10, 0, 1),
1018 +};
1019 +
1020 +static const struct mtk_pin_field_calc mt6765_pin_di_range[] = {
1021 + PIN_FIELD(0, 202, 0x200, 0x10, 0, 1),
1022 +};
1023 +
1024 +static const struct mtk_pin_field_calc mt6765_pin_do_range[] = {
1025 + PIN_FIELD(0, 202, 0x100, 0x10, 0, 1),
1026 +};
1027 +
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),
1133 +};
1134 +
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),
1287 +};
1288 +
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),
1441 +};
1442 +
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),
1537 +};
1538 +
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),
1633 +};
1634 +
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),
1742 +};
1743 +
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),
1774 +};
1775 +
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),
1806 +};
1807 +
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),
1838 +};
1839 +
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),
2020 +};
2021 +
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),
2037 +};
2038 +
2039 +static const char * const mt6765_pinctrl_register_base_names[] = {
2040 + "iocfg0", "iocfg1", "iocfg2", "iocfg3", "iocfg4", "iocfg5",
2041 + "iocfg6", "iocfg7",
2042 +};
2043 +
2044 +static const struct mtk_eint_hw mt6765_eint_hw = {
2045 + .port_mask = 7,
2046 + .ports = 6,
2047 + .ap_num = 160,
2048 + .db_cnt = 13,
2049 +};
2050 +
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,
2057 + .gpio_m = 0,
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,
2069 +};
2070 +
2071 +static const struct of_device_id mt6765_pinctrl_of_match[] = {
2072 + { .compatible = "mediatek,mt6765-pinctrl", },
2073 + { }
2074 +};
2075 +
2076 +static int mt6765_pinctrl_probe(struct platform_device *pdev)
2077 +{
2078 + return mtk_paris_pinctrl_probe(pdev, &mt6765_data);
2079 +}
2080 +
2081 +static struct platform_driver mt6765_pinctrl_driver = {
2082 + .driver = {
2083 + .name = "mt6765-pinctrl",
2084 + .of_match_table = mt6765_pinctrl_of_match,
2085 + },
2086 + .probe = mt6765_pinctrl_probe,
2087 +};
2088 +
2089 +static int __init mt6765_pinctrl_init(void)
2090 +{
2091 + return platform_driver_register(&mt6765_pinctrl_driver);
2092 +}
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
2097 --- /dev/null
2098 +++ b/drivers/pinctrl/mediatek/pinctrl-mt6797.c
2099 @@ -0,0 +1,82 @@
2100 +// SPDX-License-Identifier: GPL-2.0
2101 +/*
2102 + * Based on pinctrl-mt6765.c
2103 + *
2104 + * Copyright (C) 2018 MediaTek Inc.
2105 + *
2106 + * Author: ZH Chen <zh.chen@mediatek.com>
2107 + *
2108 + * Copyright (C) Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2109 + *
2110 + */
2111 +
2112 +#include "pinctrl-mtk-mt6797.h"
2113 +#include "pinctrl-paris.h"
2114 +
2115 +/*
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.
2120 + */
2121 +
2122 +static const struct mtk_pin_field_calc mt6797_pin_mode_range[] = {
2123 + PIN_FIELD(0, 261, 0x300, 0x10, 0, 4),
2124 +};
2125 +
2126 +static const struct mtk_pin_field_calc mt6797_pin_dir_range[] = {
2127 + PIN_FIELD(0, 261, 0x0, 0x10, 0, 1),
2128 +};
2129 +
2130 +static const struct mtk_pin_field_calc mt6797_pin_di_range[] = {
2131 + PIN_FIELD(0, 261, 0x200, 0x10, 0, 1),
2132 +};
2133 +
2134 +static const struct mtk_pin_field_calc mt6797_pin_do_range[] = {
2135 + PIN_FIELD(0, 261, 0x100, 0x10, 0, 1),
2136 +};
2137 +
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),
2143 +};
2144 +
2145 +static const char * const mt6797_pinctrl_register_base_names[] = {
2146 + "gpio", "iocfgl", "iocfgb", "iocfgr", "iocfgt",
2147 +};
2148 +
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),
2154 + .gpio_m = 0,
2155 + .base_names = mt6797_pinctrl_register_base_names,
2156 + .nbase_names = ARRAY_SIZE(mt6797_pinctrl_register_base_names),
2157 +};
2158 +
2159 +static const struct of_device_id mt6797_pinctrl_of_match[] = {
2160 + { .compatible = "mediatek,mt6797-pinctrl", },
2161 + { }
2162 +};
2163 +
2164 +static int mt6797_pinctrl_probe(struct platform_device *pdev)
2165 +{
2166 + return mtk_paris_pinctrl_probe(pdev, &mt6797_data);
2167 +}
2168 +
2169 +static struct platform_driver mt6797_pinctrl_driver = {
2170 + .driver = {
2171 + .name = "mt6797-pinctrl",
2172 + .of_match_table = mt6797_pinctrl_of_match,
2173 + },
2174 + .probe = mt6797_pinctrl_probe,
2175 +};
2176 +
2177 +static int __init mt6797_pinctrl_init(void)
2178 +{
2179 + return platform_driver_register(&mt6797_pinctrl_driver);
2180 +}
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
2186 @@ -1,297 +1,140 @@
2187 +// SPDX-License-Identifier: GPL-2.0
2188 /*
2189 - * MediaTek MT7622 Pinctrl Driver
2190 + * Copyright (C) 2017-2018 MediaTek Inc.
2191 *
2192 - * Copyright (C) 2017 Sean Wang <sean.wang@mediatek.com>
2193 + * Author: Sean Wang <sean.wang@mediatek.com>
2194 *
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.
2198 - *
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.
2203 - */
2204 -
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>
2219 -
2220 -#include "../core.h"
2221 -#include "../pinconf.h"
2222 -#include "../pinmux.h"
2223 -#include "mtk-eint.h"
2224 -
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) \
2228 - { \
2229 - name, \
2230 - id##_pins, \
2231 - ARRAY_SIZE(id##_pins), \
2232 - id##_funcs, \
2233 - }
2234 -
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
2240 -
2241 -/* Custom pinconf parameters */
2242 -#define MTK_PIN_CONFIG_TDSEL (PIN_CONFIG_END + 1)
2243 -#define MTK_PIN_CONFIG_RDSEL (PIN_CONFIG_END + 2)
2244 -
2245 -/* List these attributes which could be modified for the pin */
2246 -enum {
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,
2260 -};
2261 -
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
2268 - next register
2269 */
2270 -struct mtk_pin_field {
2271 - u32 offset;
2272 - u32 mask;
2273 - u8 bitpos;
2274 - u8 next;
2275 -};
2276
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
2286 - * the range
2287 - */
2288 -struct mtk_pin_field_calc {
2289 - u16 s_pin;
2290 - u16 e_pin;
2291 - u32 s_addr;
2292 - u8 x_addrs;
2293 - u8 s_bit;
2294 - u8 x_bits;
2295 -};
2296 +#include "pinctrl-moore.h"
2297
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
2303 - */
2304 -struct mtk_pin_reg_calc {
2305 - const struct mtk_pin_field_calc *range;
2306 - unsigned int nranges;
2307 -};
2308 -
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;
2320 -};
2321 -
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;
2329 -};
2330 +#define MT7622_PIN(_number, _name) \
2331 + MTK_PIN(_number, _name, 1, _number, DRV_GRP0)
2332
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),
2416 };
2417
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),
2421 };
2422
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),
2426 };
2427
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),
2431 };
2432
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),
2448 };
2449
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),
2465 };
2466
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),
2482 };
2483
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),
2499 };
2500
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),
2516 };
2517
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),
2533 };
2534
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),
2550 };
2551
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),
2577 };
2578
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),
2582 };
2583
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"),
2792 };
2793
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)},
2797 };
2798
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},
2802 -};
2803 -
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),
2808 -};
2809 -#endif
2810 -
2811 static const struct mtk_eint_hw mt7622_eint_hw = {
2812 .port_mask = 7,
2813 .ports = 7,
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,
2818 -};
2819 -
2820 -static void mtk_w32(struct mtk_pinctrl *pctl, u32 reg, u32 val)
2821 -{
2822 - writel_relaxed(val, pctl->base + reg);
2823 -}
2824 -
2825 -static u32 mtk_r32(struct mtk_pinctrl *pctl, u32 reg)
2826 -{
2827 - return readl_relaxed(pctl->base + reg);
2828 -}
2829 -
2830 -static void mtk_rmw(struct mtk_pinctrl *pctl, u32 reg, u32 mask, u32 set)
2831 -{
2832 - u32 val;
2833 -
2834 - val = mtk_r32(pctl, reg);
2835 - val &= ~mask;
2836 - val |= set;
2837 - mtk_w32(pctl, reg, val);
2838 -}
2839 -
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)
2843 -{
2844 - const struct mtk_pin_field_calc *c, *e;
2845 - u32 bits;
2846 -
2847 - c = rc->range;
2848 - e = c + rc->nranges;
2849 -
2850 - while (c < e) {
2851 - if (pin >= c->s_pin && pin <= c->e_pin)
2852 - break;
2853 - c++;
2854 - }
2855 -
2856 - if (c >= e) {
2857 - dev_err(hw->dev, "Out of range for pin = %d\n", pin);
2858 - return -EINVAL;
2859 - }
2860 -
2861 - /* Caculated bits as the overall offset the pin is located at */
2862 - bits = c->s_bit + (pin - c->s_pin) * (c->x_bits);
2863 -
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;
2868 -
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.
2872 - */
2873 - pfd->next = pfd->bitpos + c->x_bits - 1 > 31 ? c->x_addrs : 0;
2874 -
2875 - return 0;
2876 -}
2877 -
2878 -static int mtk_hw_pin_field_get(struct mtk_pinctrl *hw, int pin,
2879 - int field, struct mtk_pin_field *pfd)
2880 -{
2881 - const struct mtk_pin_reg_calc *rc;
2882 -
2883 - if (field < 0 || field >= PINCTRL_PIN_REG_MAX) {
2884 - dev_err(hw->dev, "Invalid Field %d\n", field);
2885 - return -EINVAL;
2886 - }
2887 -
2888 - if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) {
2889 - rc = &hw->soc->reg_cal[field];
2890 - } else {
2891 - dev_err(hw->dev, "Undefined range for field %d\n", field);
2892 - return -EINVAL;
2893 - }
2894 -
2895 - return mtk_hw_pin_field_lookup(hw, pin, rc, pfd);
2896 -}
2897 -
2898 -static void mtk_hw_bits_part(struct mtk_pin_field *pf, int *h, int *l)
2899 -{
2900 - *l = 32 - pf->bitpos;
2901 - *h = get_count_order(pf->mask) - *l;
2902 -}
2903 -
2904 -static void mtk_hw_write_cross_field(struct mtk_pinctrl *hw,
2905 - struct mtk_pin_field *pf, int value)
2906 -{
2907 - int nbits_l, nbits_h;
2908 -
2909 - mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
2910 -
2911 - mtk_rmw(hw, pf->offset, pf->mask << pf->bitpos,
2912 - (value & pf->mask) << pf->bitpos);
2913 -
2914 - mtk_rmw(hw, pf->offset + pf->next, BIT(nbits_h) - 1,
2915 - (value & pf->mask) >> nbits_l);
2916 -}
2917 -
2918 -static void mtk_hw_read_cross_field(struct mtk_pinctrl *hw,
2919 - struct mtk_pin_field *pf, int *value)
2920 -{
2921 - int nbits_l, nbits_h, h, l;
2922 -
2923 - mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
2924 -
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);
2927 -
2928 - *value = (h << nbits_l) | l;
2929 -}
2930 -
2931 -static int mtk_hw_set_value(struct mtk_pinctrl *hw, int pin, int field,
2932 - int value)
2933 -{
2934 - struct mtk_pin_field pf;
2935 - int err;
2936 -
2937 - err = mtk_hw_pin_field_get(hw, pin, field, &pf);
2938 - if (err)
2939 - return err;
2940 -
2941 - if (!pf.next)
2942 - mtk_rmw(hw, pf.offset, pf.mask << pf.bitpos,
2943 - (value & pf.mask) << pf.bitpos);
2944 - else
2945 - mtk_hw_write_cross_field(hw, &pf, value);
2946 -
2947 - return 0;
2948 -}
2949 -
2950 -static int mtk_hw_get_value(struct mtk_pinctrl *hw, int pin, int field,
2951 - int *value)
2952 -{
2953 - struct mtk_pin_field pf;
2954 - int err;
2955 -
2956 - err = mtk_hw_pin_field_get(hw, pin, field, &pf);
2957 - if (err)
2958 - return err;
2959 -
2960 - if (!pf.next)
2961 - *value = (mtk_r32(hw, pf.offset) >> pf.bitpos) & pf.mask;
2962 - else
2963 - mtk_hw_read_cross_field(hw, &pf, value);
2964 -
2965 - return 0;
2966 -}
2967 -
2968 -static int mtk_pinmux_set_mux(struct pinctrl_dev *pctldev,
2969 - unsigned int selector, unsigned int group)
2970 -{
2971 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
2972 - struct function_desc *func;
2973 - struct group_desc *grp;
2974 - int i;
2975 -
2976 - func = pinmux_generic_get_function(pctldev, selector);
2977 - if (!func)
2978 - return -EINVAL;
2979 -
2980 - grp = pinctrl_generic_get_group(pctldev, group);
2981 - if (!grp)
2982 - return -EINVAL;
2983 -
2984 - dev_dbg(pctldev->dev, "enable function %s group %s\n",
2985 - func->name, grp->name);
2986 -
2987 - for (i = 0; i < grp->num_pins; i++) {
2988 - int *pin_modes = grp->data;
2989 -
2990 - mtk_hw_set_value(hw, grp->pins[i], PINCTRL_PIN_REG_MODE,
2991 - pin_modes[i]);
2992 - }
2993 -
2994 - return 0;
2995 -}
2996 -
2997 -static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
2998 - struct pinctrl_gpio_range *range,
2999 - unsigned int pin)
3000 -{
3001 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3002 -
3003 - return mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_MODE, MTK_GPIO_MODE);
3004 -}
3005 -
3006 -static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
3007 - struct pinctrl_gpio_range *range,
3008 - unsigned int pin, bool input)
3009 -{
3010 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3011 -
3012 - /* hardware would take 0 as input direction */
3013 - return mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR, !input);
3014 -}
3015 -
3016 -static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
3017 - unsigned int pin, unsigned long *config)
3018 -{
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;
3022 -
3023 - switch (param) {
3024 - case PIN_CONFIG_BIAS_DISABLE:
3025 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_PU, &val);
3026 - if (err)
3027 - return err;
3028 -
3029 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_PD, &val2);
3030 - if (err)
3031 - return err;
3032 -
3033 - if (val || val2)
3034 - return -EINVAL;
3035 -
3036 - break;
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;
3044 -
3045 - err = mtk_hw_get_value(hw, pin, reg, &val);
3046 - if (err)
3047 - return err;
3048 -
3049 - if (!val)
3050 - return -EINVAL;
3051 -
3052 - break;
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);
3056 - if (err)
3057 - return err;
3058 -
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))
3062 - return -EINVAL;
3063 -
3064 - break;
3065 - case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
3066 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_DIR, &val);
3067 - if (err)
3068 - return err;
3069 -
3070 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_SMT, &val2);
3071 - if (err)
3072 - return err;
3073 -
3074 - if (val || !val2)
3075 - return -EINVAL;
3076 -
3077 - break;
3078 - case PIN_CONFIG_DRIVE_STRENGTH:
3079 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_E4, &val);
3080 - if (err)
3081 - return err;
3082 -
3083 - err = mtk_hw_get_value(hw, pin, PINCTRL_PIN_REG_E8, &val2);
3084 - if (err)
3085 - return err;
3086 -
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)
3089 - */
3090 - ret = ((val2 << 1) + val + 1) * 4;
3091 -
3092 - break;
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;
3097 -
3098 - err = mtk_hw_get_value(hw, pin, reg, &val);
3099 - if (err)
3100 - return err;
3101 -
3102 - ret = val;
3103 -
3104 - break;
3105 - default:
3106 - return -ENOTSUPP;
3107 - }
3108 -
3109 - *config = pinconf_to_config_packed(param, ret);
3110 -
3111 - return 0;
3112 -}
3113 -
3114 -static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
3115 - unsigned long *configs, unsigned int num_configs)
3116 -{
3117 - struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
3118 - u32 reg, param, arg;
3119 - int cfg, err = 0;
3120 -
3121 - for (cfg = 0; cfg < num_configs; cfg++) {
3122 - param = pinconf_to_config_param(configs[cfg]);
3123 - arg = pinconf_to_config_argument(configs[cfg]);
3124 -
3125 - switch (param) {
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;
3131 -
3132 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_PU,
3133 - arg & 1);
3134 - if (err)
3135 - goto err;
3136 -
3137 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_PD,
3138 - !!(arg & 2));
3139 - if (err)
3140 - goto err;
3141 - break;
3142 - case PIN_CONFIG_OUTPUT_ENABLE:
3143 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_SMT,
3144 - MTK_DISABLE);
3145 - if (err)
3146 - goto err;
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;
3152 -
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);
3156 - if (err)
3157 - goto err;
3158 -
3159 - break;
3160 - case PIN_CONFIG_OUTPUT:
3161 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR,
3162 - MTK_OUTPUT);
3163 - if (err)
3164 - goto err;
3165 -
3166 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DO,
3167 - arg);
3168 - if (err)
3169 - goto err;
3170 - break;
3171 - case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
3172 - /* arg = 1: Input mode & SMT enable ;
3173 - * arg = 0: Output mode & SMT disable
3174 - */
3175 - arg = arg ? 2 : 1;
3176 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_DIR,
3177 - arg & 1);
3178 - if (err)
3179 - goto err;
3180 -
3181 - err = mtk_hw_set_value(hw, pin, PINCTRL_PIN_REG_SMT,
3182 - !!(arg & 2));
3183 - if (err)
3184 - goto err;
3185 - break;
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)
3191 - */
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,
3196 - arg & 0x1);
3197 - if (err)
3198 - goto err;
3199 -
3200 - err = mtk_hw_set_value(hw, pin,
3201 - PINCTRL_PIN_REG_E8,
3202 - (arg & 0x2) >> 1);
3203 - if (err)
3204 - goto err;
3205 - } else {
3206 - err = -ENOTSUPP;
3207 - }
3208 - break;
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;
3213 -
3214 - err = mtk_hw_set_value(hw, pin, reg, arg);
3215 - if (err)
3216 - goto err;
3217 - break;
3218 - default:
3219 - err = -ENOTSUPP;
3220 - }
3221 - }
3222 -err:
3223 - return err;
3224 -}
3225 -
3226 -static int mtk_pinconf_group_get(struct pinctrl_dev *pctldev,
3227 - unsigned int group, unsigned long *config)
3228 -{
3229 - const unsigned int *pins;
3230 - unsigned int i, npins, old = 0;
3231 - int ret;
3232 -
3233 - ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
3234 - if (ret)
3235 - return ret;
3236 -
3237 - for (i = 0; i < npins; i++) {
3238 - if (mtk_pinconf_get(pctldev, pins[i], config))
3239 - return -ENOTSUPP;
3240 -
3241 - /* configs do not match between two pins */
3242 - if (i && old != *config)
3243 - return -ENOTSUPP;
3244 -
3245 - old = *config;
3246 - }
3247 -
3248 - return 0;
3249 -}
3250 -
3251 -static int mtk_pinconf_group_set(struct pinctrl_dev *pctldev,
3252 - unsigned int group, unsigned long *configs,
3253 - unsigned int num_configs)
3254 -{
3255 - const unsigned int *pins;
3256 - unsigned int i, npins;
3257 - int ret;
3258 -
3259 - ret = pinctrl_generic_get_group_pins(pctldev, group, &pins, &npins);
3260 - if (ret)
3261 - return ret;
3262 -
3263 - for (i = 0; i < npins; i++) {
3264 - ret = mtk_pinconf_set(pctldev, pins[i], configs, num_configs);
3265 - if (ret)
3266 - return ret;
3267 - }
3268 -
3269 - return 0;
3270 -}
3271 -
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,
3278 -};
3279 -
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,
3287 - .strict = true,
3288 -};
3289 -
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,
3297 -};
3298 -
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,
3305 -};
3306 -
3307 -static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
3308 -{
3309 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3310 - int value, err;
3311 -
3312 - err = mtk_hw_get_value(hw, gpio, PINCTRL_PIN_REG_DI, &value);
3313 - if (err)
3314 - return err;
3315 -
3316 - return !!value;
3317 -}
3318 -
3319 -static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
3320 -{
3321 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3322 -
3323 - mtk_hw_set_value(hw, gpio, PINCTRL_PIN_REG_DO, !!value);
3324 -}
3325 -
3326 -static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
3327 -{
3328 - return pinctrl_gpio_direction_input(chip->base + gpio);
3329 -}
3330 -
3331 -static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
3332 - int value)
3333 -{
3334 - mtk_gpio_set(chip, gpio, value);
3335 -
3336 - return pinctrl_gpio_direction_output(chip->base + gpio);
3337 -}
3338 -
3339 -static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
3340 -{
3341 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3342 - unsigned long eint_n;
3343 -
3344 - if (!hw->eint)
3345 - return -ENOTSUPP;
3346 -
3347 - eint_n = offset;
3348 -
3349 - return mtk_eint_find_irq(hw->eint, eint_n);
3350 -}
3351 -
3352 -static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
3353 - unsigned long config)
3354 -{
3355 - struct mtk_pinctrl *hw = gpiochip_get_data(chip);
3356 - unsigned long eint_n;
3357 - u32 debounce;
3358 -
3359 - if (!hw->eint ||
3360 - pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
3361 - return -ENOTSUPP;
3362 -
3363 - debounce = pinconf_to_config_argument(config);
3364 - eint_n = offset;
3365 -
3366 - return mtk_eint_set_debounce(hw->eint, eint_n, debounce);
3367 -}
3368 -
3369 -static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
3370 -{
3371 - struct gpio_chip *chip = &hw->chip;
3372 - int ret;
3373 -
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,
3384 - chip->base = -1;
3385 - chip->ngpio = hw->soc->npins;
3386 - chip->of_node = np;
3387 - chip->of_gpio_n_cells = 2;
3388 -
3389 - ret = gpiochip_add_data(chip, hw);
3390 - if (ret < 0)
3391 - return ret;
3392 -
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.
3399 - */
3400 - if (!of_find_property(np, "gpio-ranges", NULL)) {
3401 - ret = gpiochip_add_pin_range(chip, dev_name(hw->dev), 0, 0,
3402 - chip->ngpio);
3403 - if (ret < 0) {
3404 - gpiochip_remove(chip);
3405 - return ret;
3406 - }
3407 - }
3408 -
3409 - return 0;
3410 -}
3411 -
3412 -static int mtk_build_groups(struct mtk_pinctrl *hw)
3413 -{
3414 - int err, i;
3415 -
3416 - for (i = 0; i < hw->soc->ngrps; i++) {
3417 - const struct group_desc *group = hw->soc->grps + i;
3418 -
3419 - err = pinctrl_generic_add_group(hw->pctrl, group->name,
3420 - group->pins, group->num_pins,
3421 - group->data);
3422 - if (err < 0) {
3423 - dev_err(hw->dev, "Failed to register group %s\n",
3424 - group->name);
3425 - return err;
3426 - }
3427 - }
3428 -
3429 - return 0;
3430 -}
3431 -
3432 -static int mtk_build_functions(struct mtk_pinctrl *hw)
3433 -{
3434 - int i, err;
3435 -
3436 - for (i = 0; i < hw->soc->nfuncs ; i++) {
3437 - const struct function_desc *func = hw->soc->funcs + i;
3438 -
3439 - err = pinmux_generic_add_function(hw->pctrl, func->name,
3440 - func->group_names,
3441 - func->num_group_names,
3442 - func->data);
3443 - if (err < 0) {
3444 - dev_err(hw->dev, "Failed to register function %s\n",
3445 - func->name);
3446 - return err;
3447 - }
3448 - }
3449 -
3450 - return 0;
3451 -}
3452 -
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)
3456 -{
3457 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3458 -
3459 - *gpio_chip = &hw->chip;
3460 - *gpio_n = eint_n;
3461 -
3462 - return 0;
3463 -}
3464 -
3465 -static int mtk_xt_get_gpio_state(void *data, unsigned long eint_n)
3466 -{
3467 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3468 - struct gpio_chip *gpio_chip;
3469 - unsigned int gpio_n;
3470 - int err;
3471 -
3472 - err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
3473 - if (err)
3474 - return err;
3475 -
3476 - return mtk_gpio_get(gpio_chip, gpio_n);
3477 -}
3478 -
3479 -static int mtk_xt_set_gpio_as_eint(void *data, unsigned long eint_n)
3480 -{
3481 - struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
3482 - struct gpio_chip *gpio_chip;
3483 - unsigned int gpio_n;
3484 - int err;
3485 -
3486 - err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
3487 - if (err)
3488 - return err;
3489 -
3490 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_MODE,
3491 - MTK_GPIO_MODE);
3492 - if (err)
3493 - return err;
3494 -
3495 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_DIR, MTK_INPUT);
3496 - if (err)
3497 - return err;
3498 -
3499 - err = mtk_hw_set_value(hw, gpio_n, PINCTRL_PIN_REG_SMT, MTK_ENABLE);
3500 - if (err)
3501 - return err;
3502 -
3503 - return 0;
3504 -}
3505 -
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,
3510 -};
3511 -
3512 -static int
3513 -mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
3514 -{
3515 - struct device_node *np = pdev->dev.of_node;
3516 - struct resource *res;
3517 -
3518 - if (!IS_ENABLED(CONFIG_EINT_MTK))
3519 - return 0;
3520 -
3521 - if (!of_property_read_bool(np, "interrupt-controller"))
3522 - return -ENODEV;
3523 -
3524 - hw->eint = devm_kzalloc(hw->dev, sizeof(*hw->eint), GFP_KERNEL);
3525 - if (!hw->eint)
3526 - return -ENOMEM;
3527 -
3528 - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "eint");
3529 - if (!res) {
3530 - dev_err(&pdev->dev, "Unable to get eint resource\n");
3531 - return -ENODEV;
3532 - }
3533 -
3534 - hw->eint->base = devm_ioremap_resource(&pdev->dev, res);
3535 - if (IS_ERR(hw->eint->base))
3536 - return PTR_ERR(hw->eint->base);
3537 -
3538 - hw->eint->irq = irq_of_parse_and_map(np, 0);
3539 - if (!hw->eint->irq)
3540 - return -EINVAL;
3541 -
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;
3546 -
3547 - return mtk_eint_do_init(hw->eint);
3548 -}
3549 -
3550 -static const struct of_device_id mtk_pinctrl_of_match[] = {
3551 - { .compatible = "mediatek,mt7622-pinctrl", .data = &mt7622_data},
3552 + .gpio_m = 1,
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,
3562 +};
3563 +
3564 +static const struct of_device_id mt7622_pinctrl_of_match[] = {
3565 + { .compatible = "mediatek,mt7622-pinctrl", },
3566 { }
3567 };
3568
3569 -static int mtk_pinctrl_probe(struct platform_device *pdev)
3570 +static int mt7622_pinctrl_probe(struct platform_device *pdev)
3571 {
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);
3576 - int err;
3577 -
3578 - hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
3579 - if (!hw)
3580 - return -ENOMEM;
3581 -
3582 - hw->soc = of_id->data;
3583 -
3584 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
3585 - if (!res) {
3586 - dev_err(&pdev->dev, "missing IO resource\n");
3587 - return -ENXIO;
3588 - }
3589 -
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);
3594 -
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;
3602 -#endif
3603 -
3604 - err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
3605 - &hw->pctrl);
3606 - if (err)
3607 - return err;
3608 -
3609 - /* Setup groups descriptions per SoC types */
3610 - err = mtk_build_groups(hw);
3611 - if (err) {
3612 - dev_err(&pdev->dev, "Failed to build groups\n");
3613 - return err;
3614 - }
3615 -
3616 - /* Setup functions descriptions per SoC types */
3617 - err = mtk_build_functions(hw);
3618 - if (err) {
3619 - dev_err(&pdev->dev, "Failed to build functions\n");
3620 - return err;
3621 - }
3622 -
3623 - /* For able to make pinctrl_claim_hogs, we must not enable pinctrl
3624 - * until all groups and functions are being added one.
3625 - */
3626 - err = pinctrl_enable(hw->pctrl);
3627 - if (err)
3628 - return err;
3629 -
3630 - err = mtk_build_eint(hw, pdev);
3631 - if (err)
3632 - dev_warn(&pdev->dev,
3633 - "Failed to add EINT, but pinctrl still can work\n");
3634 -
3635 - /* Build gpiochip should be after pinctrl_enable is done */
3636 - err = mtk_build_gpiochip(hw, pdev->dev.of_node);
3637 - if (err) {
3638 - dev_err(&pdev->dev, "Failed to add gpio_chip\n");
3639 - return err;
3640 - }
3641 -
3642 - platform_set_drvdata(pdev, hw);
3643 -
3644 - return 0;
3645 + return mtk_moore_pinctrl_probe(pdev, &mt7622_data);
3646 }
3647
3648 -static struct platform_driver mtk_pinctrl_driver = {
3649 +static struct platform_driver mt7622_pinctrl_driver = {
3650 .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,
3655 },
3656 - .probe = mtk_pinctrl_probe,
3657 + .probe = mt7622_pinctrl_probe,
3658 };
3659
3660 -static int __init mtk_pinctrl_init(void)
3661 +static int __init mt7622_pinctrl_init(void)
3662 {
3663 - return platform_driver_register(&mtk_pinctrl_driver);
3664 + return platform_driver_register(&mt7622_pinctrl_driver);
3665 }
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
3671 --- /dev/null
3672 +++ b/drivers/pinctrl/mediatek/pinctrl-mt7623.c
3673 @@ -0,0 +1,1441 @@
3674 +// SPDX-License-Identifier: GPL-2.0
3675 +/*
3676 + * The MT7623 driver based on Linux generic pinctrl binding.
3677 + *
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>
3682 + */
3683 +
3684 +#include "pinctrl-moore.h"
3685 +
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
3692 +
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)
3696 +
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, \
3699 + _x_bits, 16, 0)
3700 +
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, \
3703 + _x_bits, 16, 1)
3704 +
3705 +#define MT7623_PIN(_number, _name, _eint_n, _drv_grp) \
3706 + MTK_PIN(_number, _name, 0, _eint_n, _drv_grp)
3707 +
3708 +static const struct mtk_pin_field_calc mt7623_pin_mode_range[] = {
3709 + PIN_FIELD15(0, 278, 0x760, 0x10, 0, 3),
3710 +};
3711 +
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),
3715 +};
3716 +
3717 +static const struct mtk_pin_field_calc mt7623_pin_di_range[] = {
3718 + PIN_FIELD16(0, 278, 0x630, 0x10, 0, 1),
3719 +};
3720 +
3721 +static const struct mtk_pin_field_calc mt7623_pin_do_range[] = {
3722 + PIN_FIELD16(0, 278, 0x500, 0x10, 0, 1),
3723 +};
3724 +
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),
3790 +};
3791 +
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),
3878 +};
3879 +
3880 +static const struct mtk_pin_field_calc mt7623_pin_pullen_range[] = {
3881 + PIN_FIELD16(0, 278, 0x150, 0x10, 0, 1),
3882 +};
3883 +
3884 +static const struct mtk_pin_field_calc mt7623_pin_pullsel_range[] = {
3885 + PIN_FIELD16(0, 278, 0x280, 0x10, 0, 1),
3886 +};
3887 +
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),
3941 +};
3942 +
3943 +static const struct mtk_pin_field_calc mt7623_pin_tdsel_range[] = {
3944 + PINS_FIELD16(262, 276, 0x4c0, 0x10, 0, 4),
3945 +};
3946 +
3947 +static const struct mtk_pin_field_calc mt7623_pin_pupd_range[] = {
3948 + /* MSDC0 */
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),
3960 + /* MSDC1 */
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),
3967 + /* MSDC1 */
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),
3974 + /* MSDC0E */
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),
3987 +};
3988 +
3989 +static const struct mtk_pin_field_calc mt7623_pin_r1_range[] = {
3990 + /* MSDC0 */
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),
4002 + /* MSDC1 */
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),
4009 + /* MSDC2 */
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),
4016 + /* MSDC0E */
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),
4029 +};
4030 +
4031 +static const struct mtk_pin_field_calc mt7623_pin_r0_range[] = {
4032 + /* MSDC0 */
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),
4044 + /* MSDC1 */
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),
4051 + /* MSDC2 */
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),
4058 + /* MSDC0E */
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),
4071 +};
4072 +
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),
4087 +};
4088 +
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),
4370 +};
4371 +
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.
4375 + */
4376 +
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, };
4382 +
4383 +/* DISP PWM */
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, };
4390 +
4391 +/* ESW */
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, };
4396 +
4397 +/* EPHY */
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, };
4401 +
4402 +/* EXT_SDIO */
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, };
4405 +
4406 +/* HDMI RX */
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 };
4411 +
4412 +/* HDMI TX */
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 };
4419 +
4420 +/* I2C */
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, };
4441 +
4442 +/* I2S */
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, };
4467 +
4468 +/* IR */
4469 +static int mt7623_ir_pins[] = { 46, };
4470 +static int mt7623_ir_funcs[] = { 1, };
4471 +
4472 +/* LCD */
4473 +static int mt7623_mipi_tx_pins[] = { 91, 92, 93, 94, 95, 96, 97, 98,
4474 + 99, 100, };
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, };
4480 +
4481 +/* MDC/MDIO */
4482 +static int mt7623_mdc_mdio_pins[] = { 275, 276, };
4483 +static int mt7623_mdc_mdio_funcs[] = { 1, 1, };
4484 +
4485 +/* MSDC */
4486 +static int mt7623_msdc0_pins[] = { 111, 112, 113, 114, 115, 116, 117, 118,
4487 + 119, 120, 121, };
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, };
4504 +
4505 +/* NAND */
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,
4509 + 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, };
4514 +
4515 +/* RTC */
4516 +static int mt7623_rtc_pins[] = { 10, };
4517 +static int mt7623_rtc_funcs[] = { 1, };
4518 +
4519 +/* OTG */
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, };
4544 +
4545 +/* PCIE */
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, };
4576 +
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, };
4590 +
4591 +/* PCM */
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, };
4648 +
4649 +/* PWM */
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, };
4690 +
4691 +/* PWRAP */
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, };
4694 +
4695 +/* SPDIF */
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, };
4706 +
4707 +/* SPI */
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, };
4714 +
4715 +/* UART */
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, };
4744 +
4745 +/* Watchdog */
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, };
4750 +
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),
4912 +};
4913 +
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.
4916 + */
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",
4920 + "disp_pwm_2", };
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",
4926 + "hdmi_rx_i2c", };
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",
4930 + "i2c2_3", };
4931 +static const char *mt7623_i2s_groups[] = { "i2s0", "i2s1",
4932 + "i2s2_bclk_lrclk_mclk",
4933 + "i2s3_bclk_lrclk_mclk",
4934 + "i2s4", "i2s5",
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",
4943 + "msdc3", };
4944 +static const char *mt7623_nandc_groups[] = { "nandc", "nandc_ceb0",
4945 + "nandc_ceb1", };
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",
4993 + "pwm_ch7_2", };
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",
4999 + "spdif_out", };
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",
5009 + "uart3_txd_rxd",
5010 + "uart0_rts_cts",
5011 + "uart1_rts_cts",
5012 + "uart2_rts_cts",
5013 + "uart3_rts_cts", };
5014 +static const char *mt7623_wdt_groups[] = { "watchdog_0", "watchdog_1", };
5015 +
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)},
5038 +};
5039 +
5040 +static const struct mtk_eint_hw mt7623_eint_hw = {
5041 + .port_mask = 6,
5042 + .ports = 6,
5043 + .ap_num = 169,
5044 + .db_cnt = 20,
5045 +};
5046 +
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,
5056 + .gpio_m = 0,
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,
5068 +};
5069 +
5070 +/*
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.
5074 + */
5075 +static void mt7623_bonding_disable(struct platform_device *pdev)
5076 +{
5077 + struct mtk_pinctrl *hw = platform_get_drvdata(pdev);
5078 +
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);
5082 +}
5083 +
5084 +static const struct of_device_id mt7623_pctrl_match[] = {
5085 + { .compatible = "mediatek,mt7623-moore-pinctrl", },
5086 + {}
5087 +};
5088 +
5089 +static int mt7623_pinctrl_probe(struct platform_device *pdev)
5090 +{
5091 + int err;
5092 +
5093 + err = mtk_moore_pinctrl_probe(pdev, &mt7623_data);
5094 + if (err)
5095 + return err;
5096 +
5097 + mt7623_bonding_disable(pdev);
5098 +
5099 + return 0;
5100 +}
5101 +
5102 +static struct platform_driver mtk_pinctrl_driver = {
5103 + .probe = mt7623_pinctrl_probe,
5104 + .driver = {
5105 + .name = "mt7623-moore-pinctrl",
5106 + .of_match_table = mt7623_pctrl_match,
5107 + },
5108 +};
5109 +
5110 +static int __init mtk_pinctrl_init(void)
5111 +{
5112 + return platform_driver_register(&mtk_pinctrl_driver);
5113 +}
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
5118 --- /dev/null
5119 +++ b/drivers/pinctrl/mediatek/pinctrl-mt7629.c
5120 @@ -0,0 +1,450 @@
5121 +// SPDX-License-Identifier: GPL-2.0
5122 +/*
5123 + * The MT7629 driver based on Linux generic pinctrl binding.
5124 + *
5125 + * Copyright (C) 2018 MediaTek Inc.
5126 + * Author: Ryder Lee <ryder.lee@mediatek.com>
5127 + */
5128 +
5129 +#include "pinctrl-moore.h"
5130 +
5131 +#define MT7629_PIN(_number, _name, _eint_n) \
5132 + MTK_PIN(_number, _name, 0, _eint_n, DRV_GRP1)
5133 +
5134 +static const struct mtk_pin_field_calc mt7629_pin_mode_range[] = {
5135 + PIN_FIELD(0, 78, 0x300, 0x10, 0, 4),
5136 +};
5137 +
5138 +static const struct mtk_pin_field_calc mt7629_pin_dir_range[] = {
5139 + PIN_FIELD(0, 78, 0x0, 0x10, 0, 1),
5140 +};
5141 +
5142 +static const struct mtk_pin_field_calc mt7629_pin_di_range[] = {
5143 + PIN_FIELD(0, 78, 0x200, 0x10, 0, 1),
5144 +};
5145 +
5146 +static const struct mtk_pin_field_calc mt7629_pin_do_range[] = {
5147 + PIN_FIELD(0, 78, 0x100, 0x10, 0, 1),
5148 +};
5149 +
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),
5158 +};
5159 +
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),
5168 +};
5169 +
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),
5178 +};
5179 +
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),
5188 +};
5189 +
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),
5198 +};
5199 +
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),
5208 +};
5209 +
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),
5218 +};
5219 +
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),
5232 +};
5233 +
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),
5314 +};
5315 +
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.
5319 + */
5320 +
5321 +/* LED for EPHY */
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, };
5338 +
5339 +/* Watchdog */
5340 +static int mt7629_watchdog_pins[] = { 11, };
5341 +static int mt7629_watchdog_funcs[] = { 1, };
5342 +
5343 +/* LED for GPHY */
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, };
5360 +
5361 +/* I2C */
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, };
5366 +
5367 +/* SPI */
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, };
5376 +
5377 +/* UART */
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, };
5396 +
5397 +/* MDC/MDIO */
5398 +static int mt7629_mdc_mdio_pins[] = { 49, 50, };
5399 +static int mt7629_mdc_mdio_funcs[] = { 1, 1, };
5400 +
5401 +/* PCIE */
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, };
5408 +
5409 +/* PWM */
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, };
5414 +
5415 +/* WF 2G */
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, };
5418 +
5419 +/* WF 5G */
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, };
5422 +
5423 +/* SNFI */
5424 +static int mt7629_snfi_pins[] = { 62, 63, 64, 65, 66, 67 };
5425 +static int mt7629_snfi_funcs[] = { 2, 2, 2, 2, 2, 2 };
5426 +
5427 +/* SPI NOR */
5428 +static int mt7629_snor_pins[] = { 62, 63, 64, 65, 66, 67 };
5429 +static int mt7629_snor_funcs[] = { 1, 1, 1, 1, 1, 1 };
5430 +
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),
5474 +};
5475 +
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.
5478 + */
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",
5490 + "pcie_clkreq", };
5491 +static const char *mt7629_pwm_groups[] = { "pwm_0", "pwm_1", };
5492 +static const char *mt7629_spi_groups[] = { "spi_0", "spi_1", "spi_wp",
5493 + "spi_hold", };
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" };
5506 +
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)},
5518 +};
5519 +
5520 +static const struct mtk_eint_hw mt7629_eint_hw = {
5521 + .port_mask = 7,
5522 + .ports = 7,
5523 + .ap_num = ARRAY_SIZE(mt7629_pins),
5524 + .db_cnt = 16,
5525 +};
5526 +
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,
5536 + .gpio_m = 0,
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,
5546 +};
5547 +
5548 +static const struct of_device_id mt7629_pinctrl_of_match[] = {
5549 + { .compatible = "mediatek,mt7629-pinctrl", },
5550 + {}
5551 +};
5552 +
5553 +static int mt7629_pinctrl_probe(struct platform_device *pdev)
5554 +{
5555 + return mtk_moore_pinctrl_probe(pdev, &mt7629_data);
5556 +}
5557 +
5558 +static struct platform_driver mt7629_pinctrl_driver = {
5559 + .driver = {
5560 + .name = "mt7629-pinctrl",
5561 + .of_match_table = mt7629_pinctrl_of_match,
5562 + },
5563 + .probe = mt7629_pinctrl_probe,
5564 +};
5565 +
5566 +static int __init mt7629_pinctrl_init(void)
5567 +{
5568 + return platform_driver_register(&mt7629_pinctrl_driver);
5569 +}
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
5574 --- /dev/null
5575 +++ b/drivers/pinctrl/mediatek/pinctrl-mt8183.c
5576 @@ -0,0 +1,595 @@
5577 +// SPDX-License-Identifier: GPL-2.0
5578 +/*
5579 + * Copyright (C) 2018 MediaTek Inc.
5580 + *
5581 + * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
5582 + *
5583 + */
5584 +
5585 +#include "pinctrl-mtk-mt8183.h"
5586 +#include "pinctrl-paris.h"
5587 +
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.
5593 + */
5594 +
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, \
5597 + _x_bits, 32, 0)
5598 +
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, \
5601 + _x_bits, 32, 1)
5602 +
5603 +static const struct mtk_pin_field_calc mt8183_pin_mode_range[] = {
5604 + PIN_FIELD(0, 192, 0x300, 0x10, 0, 4),
5605 +};
5606 +
5607 +static const struct mtk_pin_field_calc mt8183_pin_dir_range[] = {
5608 + PIN_FIELD(0, 192, 0x0, 0x10, 0, 1),
5609 +};
5610 +
5611 +static const struct mtk_pin_field_calc mt8183_pin_di_range[] = {
5612 + PIN_FIELD(0, 192, 0x200, 0x10, 0, 1),
5613 +};
5614 +
5615 +static const struct mtk_pin_field_calc mt8183_pin_do_range[] = {
5616 + PIN_FIELD(0, 192, 0x100, 0x10, 0, 1),
5617 +};
5618 +
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),
5702 +};
5703 +
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),
5787 +};
5788 +
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),
5814 +};
5815 +
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),
5841 +};
5842 +
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),
5926 +};
5927 +
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),
5959 +};
5960 +
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),
6004 +};
6005 +
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),
6049 +};
6050 +
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),
6064 +};
6065 +
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),
6079 +};
6080 +
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),
6094 +};
6095 +
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),
6112 +};
6113 +
6114 +static const char * const mt8183_pinctrl_register_base_names[] = {
6115 + "iocfg0", "iocfg1", "iocfg2", "iocfg3", "iocfg4", "iocfg5",
6116 + "iocfg6", "iocfg7", "iocfg8",
6117 +};
6118 +
6119 +static const struct mtk_eint_hw mt8183_eint_hw = {
6120 + .port_mask = 7,
6121 + .ports = 6,
6122 + .ap_num = 212,
6123 + .db_cnt = 13,
6124 +};
6125 +
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,
6132 + .gpio_m = 0,
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,
6146 +};
6147 +
6148 +static const struct of_device_id mt8183_pinctrl_of_match[] = {
6149 + { .compatible = "mediatek,mt8183-pinctrl", },
6150 + { }
6151 +};
6152 +
6153 +static int mt8183_pinctrl_probe(struct platform_device *pdev)
6154 +{
6155 + return mtk_paris_pinctrl_probe(pdev, &mt8183_data);
6156 +}
6157 +
6158 +static struct platform_driver mt8183_pinctrl_driver = {
6159 + .driver = {
6160 + .name = "mt8183-pinctrl",
6161 + .of_match_table = mt8183_pinctrl_of_match,
6162 + .pm = &mtk_paris_pinctrl_pm_ops,
6163 + },
6164 + .probe = mt8183_pinctrl_probe,
6165 +};
6166 +
6167 +static int __init mt8183_pinctrl_init(void)
6168 +{
6169 + return platform_driver_register(&mt8183_pinctrl_driver);
6170 +}
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
6175 --- /dev/null
6176 +++ b/drivers/pinctrl/mediatek/pinctrl-mt8516.c
6177 @@ -0,0 +1,362 @@
6178 +// SPDX-License-Identifier: GPL-2.0
6179 +/*
6180 + * Copyright (c) 2019 MediaTek Inc.
6181 + * Author: Min.Guo <min.guo@mediatek.com>
6182 + */
6183 +
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>
6191 +
6192 +#include "pinctrl-mtk-common.h"
6193 +#include "pinctrl-mtk-mt8516.h"
6194 +
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)
6202 +};
6203 +
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),
6210 +
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),
6217 +
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),
6221 +
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),
6226 +
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),
6230 +
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),
6234 +
6235 + MTK_PIN_DRV_GRP(24, 0xd00, 8, 0),
6236 + MTK_PIN_DRV_GRP(25, 0xd00, 8, 0),
6237 +
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),
6243 +
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),
6247 +
6248 + MTK_PIN_DRV_GRP(34, 0xd10, 12, 0),
6249 + MTK_PIN_DRV_GRP(35, 0xd10, 12, 0),
6250 +
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),
6255 +
6256 + MTK_PIN_DRV_GRP(40, 0xd20, 4, 1),
6257 +
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),
6261 +
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),
6266 +
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),
6271 +
6272 + MTK_PIN_DRV_GRP(54, 0xd30, 8, 1),
6273 +
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),
6277 +
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),
6284 +
6285 + MTK_PIN_DRV_GRP(68, 0xd40, 12, 2),
6286 +
6287 + MTK_PIN_DRV_GRP(69, 0xd50, 0, 2),
6288 +
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),
6293 +
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),
6298 +
6299 + MTK_PIN_DRV_GRP(104, 0xd50, 12, 2),
6300 +
6301 + MTK_PIN_DRV_GRP(105, 0xd60, 0, 2),
6302 +
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),
6307 +
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),
6312 +
6313 + MTK_PIN_DRV_GRP(114, 0xd70, 4, 2),
6314 +
6315 + MTK_PIN_DRV_GRP(115, 0xd60, 12, 2),
6316 +
6317 + MTK_PIN_DRV_GRP(116, 0xd60, 8, 2),
6318 +
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),
6323 +};
6324 +
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),
6330 +
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),
6334 +
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),
6339 +
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),
6346 +
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),
6364 +};
6365 +
6366 +static int mt8516_spec_pull_set(struct regmap *regmap, unsigned int pin,
6367 + unsigned char align, bool isup, unsigned int r1r0)
6368 +{
6369 + return mtk_pctrl_spec_pull_set_samereg(regmap, mt8516_spec_pupd,
6370 + ARRAY_SIZE(mt8516_spec_pupd), pin, align, isup, r1r0);
6371 +}
6372 +
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),
6420 +};
6421 +
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),
6450 +
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),
6470 +};
6471 +
6472 +static int mt8516_ies_smt_set(struct regmap *regmap, unsigned int pin,
6473 + unsigned char align, int value, enum pin_config_param arg)
6474 +{
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);
6481 + return -EINVAL;
6482 +}
6483 +
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,
6500 + .type1_end = 125,
6501 + .port_shf = 4,
6502 + .port_mask = 0xf,
6503 + .port_align = 4,
6504 + .eint_hw = {
6505 + .port_mask = 7,
6506 + .ports = 6,
6507 + .ap_num = 169,
6508 + .db_cnt = 64,
6509 + },
6510 +};
6511 +
6512 +static int mt8516_pinctrl_probe(struct platform_device *pdev)
6513 +{
6514 + return mtk_pctrl_init(pdev, &mt8516_pinctrl_data, NULL);
6515 +}
6516 +
6517 +static const struct of_device_id mt8516_pctrl_match[] = {
6518 + {
6519 + .compatible = "mediatek,mt8516-pinctrl",
6520 + },
6521 + {}
6522 +};
6523 +
6524 +MODULE_DEVICE_TABLE(of, mt8516_pctrl_match);
6525 +
6526 +static struct platform_driver mtk_pinctrl_driver = {
6527 + .probe = mt8516_pinctrl_probe,
6528 + .driver = {
6529 + .name = "mediatek-mt8516-pinctrl",
6530 + .of_match_table = mt8516_pctrl_match,
6531 + .pm = &mtk_eint_pm_ops,
6532 + },
6533 +};
6534 +
6535 +static int __init mtk_pinctrl_init(void)
6536 +{
6537 + return platform_driver_register(&mtk_pinctrl_driver);
6538 +}
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
6543 --- /dev/null
6544 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
6545 @@ -0,0 +1,725 @@
6546 +// SPDX-License-Identifier: GPL-2.0
6547 +/*
6548 + * Copyright (C) 2018 MediaTek Inc.
6549 + *
6550 + * Author: Sean Wang <sean.wang@mediatek.com>
6551 + *
6552 + */
6553 +
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>
6560 +
6561 +#include "mtk-eint.h"
6562 +#include "pinctrl-mtk-common-v2.h"
6563 +
6564 +/**
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
6571 + *
6572 + * formula: output = ((input) / step - 1) * scal
6573 + */
6574 +struct mtk_drive_desc {
6575 + u8 min;
6576 + u8 max;
6577 + u8 step;
6578 + u8 scal;
6579 +};
6580 +
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 },
6588 +};
6589 +
6590 +static void mtk_w32(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 val)
6591 +{
6592 + writel_relaxed(val, pctl->base[i] + reg);
6593 +}
6594 +
6595 +static u32 mtk_r32(struct mtk_pinctrl *pctl, u8 i, u32 reg)
6596 +{
6597 + return readl_relaxed(pctl->base[i] + reg);
6598 +}
6599 +
6600 +void mtk_rmw(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 mask, u32 set)
6601 +{
6602 + u32 val;
6603 +
6604 + val = mtk_r32(pctl, i, reg);
6605 + val &= ~mask;
6606 + val |= set;
6607 + mtk_w32(pctl, i, reg, val);
6608 +}
6609 +
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)
6613 +{
6614 + const struct mtk_pin_field_calc *c, *e;
6615 + const struct mtk_pin_reg_calc *rc;
6616 + u32 bits;
6617 +
6618 + if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) {
6619 + rc = &hw->soc->reg_cal[field];
6620 + } else {
6621 + dev_dbg(hw->dev,
6622 + "Not support field %d for pin %d (%s)\n",
6623 + field, desc->number, desc->name);
6624 + return -ENOTSUPP;
6625 + }
6626 +
6627 + c = rc->range;
6628 + e = c + rc->nranges;
6629 +
6630 + while (c < e) {
6631 + if (desc->number >= c->s_pin && desc->number <= c->e_pin)
6632 + break;
6633 + c++;
6634 + }
6635 +
6636 + if (c >= e) {
6637 + dev_dbg(hw->dev, "Not support field %d for pin = %d (%s)\n",
6638 + field, desc->number, desc->name);
6639 + return -ENOTSUPP;
6640 + }
6641 +
6642 + if (c->i_base > hw->nbase - 1) {
6643 + dev_err(hw->dev,
6644 + "Invalid base for field %d for pin = %d (%s)\n",
6645 + field, desc->number, desc->name);
6646 + return -EINVAL;
6647 + }
6648 +
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.
6652 + */
6653 + bits = c->fixed ? c->s_bit : c->s_bit +
6654 + (desc->number - c->s_pin) * (c->x_bits);
6655 +
6656 + /* Fill pfd from bits. For example 32-bit register applied is assumed
6657 + * when c->sz_reg is equal to 32.
6658 + */
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;
6663 +
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.
6667 + */
6668 + pfd->next = pfd->bitpos + c->x_bits > c->sz_reg ? c->x_addrs : 0;
6669 +
6670 + return 0;
6671 +}
6672 +
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)
6676 +{
6677 + if (field < 0 || field >= PINCTRL_PIN_REG_MAX) {
6678 + dev_err(hw->dev, "Invalid Field %d\n", field);
6679 + return -EINVAL;
6680 + }
6681 +
6682 + return mtk_hw_pin_field_lookup(hw, desc, field, pfd);
6683 +}
6684 +
6685 +static void mtk_hw_bits_part(struct mtk_pin_field *pf, int *h, int *l)
6686 +{
6687 + *l = 32 - pf->bitpos;
6688 + *h = get_count_order(pf->mask) - *l;
6689 +}
6690 +
6691 +static void mtk_hw_write_cross_field(struct mtk_pinctrl *hw,
6692 + struct mtk_pin_field *pf, int value)
6693 +{
6694 + int nbits_l, nbits_h;
6695 +
6696 + mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
6697 +
6698 + mtk_rmw(hw, pf->index, pf->offset, pf->mask << pf->bitpos,
6699 + (value & pf->mask) << pf->bitpos);
6700 +
6701 + mtk_rmw(hw, pf->index, pf->offset + pf->next, BIT(nbits_h) - 1,
6702 + (value & pf->mask) >> nbits_l);
6703 +}
6704 +
6705 +static void mtk_hw_read_cross_field(struct mtk_pinctrl *hw,
6706 + struct mtk_pin_field *pf, int *value)
6707 +{
6708 + int nbits_l, nbits_h, h, l;
6709 +
6710 + mtk_hw_bits_part(pf, &nbits_h, &nbits_l);
6711 +
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);
6716 +
6717 + *value = (h << nbits_l) | l;
6718 +}
6719 +
6720 +int mtk_hw_set_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
6721 + int field, int value)
6722 +{
6723 + struct mtk_pin_field pf;
6724 + int err;
6725 +
6726 + err = mtk_hw_pin_field_get(hw, desc, field, &pf);
6727 + if (err)
6728 + return err;
6729 +
6730 + if (!pf.next)
6731 + mtk_rmw(hw, pf.index, pf.offset, pf.mask << pf.bitpos,
6732 + (value & pf.mask) << pf.bitpos);
6733 + else
6734 + mtk_hw_write_cross_field(hw, &pf, value);
6735 +
6736 + return 0;
6737 +}
6738 +
6739 +int mtk_hw_get_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc,
6740 + int field, int *value)
6741 +{
6742 + struct mtk_pin_field pf;
6743 + int err;
6744 +
6745 + err = mtk_hw_pin_field_get(hw, desc, field, &pf);
6746 + if (err)
6747 + return err;
6748 +
6749 + if (!pf.next)
6750 + *value = (mtk_r32(hw, pf.index, pf.offset)
6751 + >> pf.bitpos) & pf.mask;
6752 + else
6753 + mtk_hw_read_cross_field(hw, &pf, value);
6754 +
6755 + return 0;
6756 +}
6757 +
6758 +static int mtk_xt_find_eint_num(struct mtk_pinctrl *hw, unsigned long eint_n)
6759 +{
6760 + const struct mtk_pin_desc *desc;
6761 + int i = 0;
6762 +
6763 + desc = (const struct mtk_pin_desc *)hw->soc->pins;
6764 +
6765 + while (i < hw->soc->npins) {
6766 + if (desc[i].eint.eint_n == eint_n)
6767 + return desc[i].number;
6768 + i++;
6769 + }
6770 +
6771 + return EINT_NA;
6772 +}
6773 +
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)
6777 +{
6778 + struct mtk_pinctrl *hw = (struct mtk_pinctrl *)data;
6779 + const struct mtk_pin_desc *desc;
6780 +
6781 + desc = (const struct mtk_pin_desc *)hw->soc->pins;
6782 + *gpio_chip = &hw->chip;
6783 +
6784 + /* Be greedy to guess first gpio_n is equal to eint_n */
6785 + if (desc[eint_n].eint.eint_n == eint_n)
6786 + *gpio_n = eint_n;
6787 + else
6788 + *gpio_n = mtk_xt_find_eint_num(hw, eint_n);
6789 +
6790 + return *gpio_n == EINT_NA ? -EINVAL : 0;
6791 +}
6792 +
6793 +static int mtk_xt_get_gpio_state(void *data, unsigned long eint_n)
6794 +{
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;
6799 + int value, err;
6800 +
6801 + err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
6802 + if (err)
6803 + return err;
6804 +
6805 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];
6806 +
6807 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
6808 + if (err)
6809 + return err;
6810 +
6811 + return !!value;
6812 +}
6813 +
6814 +static int mtk_xt_set_gpio_as_eint(void *data, unsigned long eint_n)
6815 +{
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;
6820 + int err;
6821 +
6822 + err = mtk_xt_get_gpio_n(hw, eint_n, &gpio_n, &gpio_chip);
6823 + if (err)
6824 + return err;
6825 +
6826 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n];
6827 +
6828 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
6829 + desc->eint.eint_m);
6830 + if (err)
6831 + return err;
6832 +
6833 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, MTK_INPUT);
6834 + if (err)
6835 + return err;
6836 +
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.
6843 + */
6844 + if (err && err != -ENOTSUPP)
6845 + return err;
6846 +
6847 + return 0;
6848 +}
6849 +
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,
6854 +};
6855 +
6856 +int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev)
6857 +{
6858 + struct device_node *np = pdev->dev.of_node;
6859 + struct resource *res;
6860 +
6861 + if (!IS_ENABLED(CONFIG_EINT_MTK))
6862 + return 0;
6863 +
6864 + if (!of_property_read_bool(np, "interrupt-controller"))
6865 + return -ENODEV;
6866 +
6867 + hw->eint = devm_kzalloc(hw->dev, sizeof(*hw->eint), GFP_KERNEL);
6868 + if (!hw->eint)
6869 + return -ENOMEM;
6870 +
6871 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "eint");
6872 + if (!res) {
6873 + dev_err(&pdev->dev, "Unable to get eint resource\n");
6874 + return -ENODEV;
6875 + }
6876 +
6877 + hw->eint->base = devm_ioremap_resource(&pdev->dev, res);
6878 + if (IS_ERR(hw->eint->base))
6879 + return PTR_ERR(hw->eint->base);
6880 +
6881 + hw->eint->irq = irq_of_parse_and_map(np, 0);
6882 + if (!hw->eint->irq)
6883 + return -EINVAL;
6884 +
6885 + if (!hw->soc->eint_hw)
6886 + return -ENODEV;
6887 +
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;
6892 +
6893 + return mtk_eint_do_init(hw->eint);
6894 +}
6895 +
6896 +/* Revision 0 */
6897 +int mtk_pinconf_bias_disable_set(struct mtk_pinctrl *hw,
6898 + const struct mtk_pin_desc *desc)
6899 +{
6900 + int err;
6901 +
6902 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PU,
6903 + MTK_DISABLE);
6904 + if (err)
6905 + return err;
6906 +
6907 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PD,
6908 + MTK_DISABLE);
6909 + if (err)
6910 + return err;
6911 +
6912 + return 0;
6913 +}
6914 +
6915 +int mtk_pinconf_bias_disable_get(struct mtk_pinctrl *hw,
6916 + const struct mtk_pin_desc *desc, int *res)
6917 +{
6918 + int v, v2;
6919 + int err;
6920 +
6921 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PU, &v);
6922 + if (err)
6923 + return err;
6924 +
6925 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PD, &v2);
6926 + if (err)
6927 + return err;
6928 +
6929 + if (v == MTK_ENABLE || v2 == MTK_ENABLE)
6930 + return -EINVAL;
6931 +
6932 + *res = 1;
6933 +
6934 + return 0;
6935 +}
6936 +
6937 +int mtk_pinconf_bias_set(struct mtk_pinctrl *hw,
6938 + const struct mtk_pin_desc *desc, bool pullup)
6939 +{
6940 + int err, arg;
6941 +
6942 + arg = pullup ? 1 : 2;
6943 +
6944 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PU, arg & 1);
6945 + if (err)
6946 + return err;
6947 +
6948 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PD,
6949 + !!(arg & 2));
6950 + if (err)
6951 + return err;
6952 +
6953 + return 0;
6954 +}
6955 +
6956 +int mtk_pinconf_bias_get(struct mtk_pinctrl *hw,
6957 + const struct mtk_pin_desc *desc, bool pullup, int *res)
6958 +{
6959 + int reg, err, v;
6960 +
6961 + reg = pullup ? PINCTRL_PIN_REG_PU : PINCTRL_PIN_REG_PD;
6962 +
6963 + err = mtk_hw_get_value(hw, desc, reg, &v);
6964 + if (err)
6965 + return err;
6966 +
6967 + if (!v)
6968 + return -EINVAL;
6969 +
6970 + *res = 1;
6971 +
6972 + return 0;
6973 +}
6974 +
6975 +/* Revision 1 */
6976 +int mtk_pinconf_bias_disable_set_rev1(struct mtk_pinctrl *hw,
6977 + const struct mtk_pin_desc *desc)
6978 +{
6979 + int err;
6980 +
6981 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLEN,
6982 + MTK_DISABLE);
6983 + if (err)
6984 + return err;
6985 +
6986 + return 0;
6987 +}
6988 +
6989 +int mtk_pinconf_bias_disable_get_rev1(struct mtk_pinctrl *hw,
6990 + const struct mtk_pin_desc *desc, int *res)
6991 +{
6992 + int v, err;
6993 +
6994 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLEN, &v);
6995 + if (err)
6996 + return err;
6997 +
6998 + if (v == MTK_ENABLE)
6999 + return -EINVAL;
7000 +
7001 + *res = 1;
7002 +
7003 + return 0;
7004 +}
7005 +
7006 +int mtk_pinconf_bias_set_rev1(struct mtk_pinctrl *hw,
7007 + const struct mtk_pin_desc *desc, bool pullup)
7008 +{
7009 + int err, arg;
7010 +
7011 + arg = pullup ? MTK_PULLUP : MTK_PULLDOWN;
7012 +
7013 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLEN,
7014 + MTK_ENABLE);
7015 + if (err)
7016 + return err;
7017 +
7018 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PULLSEL, arg);
7019 + if (err)
7020 + return err;
7021 +
7022 + return 0;
7023 +}
7024 +
7025 +int mtk_pinconf_bias_get_rev1(struct mtk_pinctrl *hw,
7026 + const struct mtk_pin_desc *desc, bool pullup,
7027 + int *res)
7028 +{
7029 + int err, v;
7030 +
7031 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLEN, &v);
7032 + if (err)
7033 + return err;
7034 +
7035 + if (v == MTK_DISABLE)
7036 + return -EINVAL;
7037 +
7038 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PULLSEL, &v);
7039 + if (err)
7040 + return err;
7041 +
7042 + if (pullup ^ (v == MTK_PULLUP))
7043 + return -EINVAL;
7044 +
7045 + *res = 1;
7046 +
7047 + return 0;
7048 +}
7049 +
7050 +/* Revision 0 */
7051 +int mtk_pinconf_drive_set(struct mtk_pinctrl *hw,
7052 + const struct mtk_pin_desc *desc, u32 arg)
7053 +{
7054 + const struct mtk_drive_desc *tb;
7055 + int err = -ENOTSUPP;
7056 +
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)
7062 + */
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,
7066 + arg & 0x1);
7067 + if (err)
7068 + return err;
7069 +
7070 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_E8,
7071 + (arg & 0x2) >> 1);
7072 + if (err)
7073 + return err;
7074 + }
7075 +
7076 + return err;
7077 +}
7078 +
7079 +int mtk_pinconf_drive_get(struct mtk_pinctrl *hw,
7080 + const struct mtk_pin_desc *desc, int *val)
7081 +{
7082 + const struct mtk_drive_desc *tb;
7083 + int err, val1, val2;
7084 +
7085 + tb = &mtk_drive[desc->drv_n];
7086 +
7087 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_E4, &val1);
7088 + if (err)
7089 + return err;
7090 +
7091 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_E8, &val2);
7092 + if (err)
7093 + return err;
7094 +
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)
7097 + */
7098 + *val = (((val2 << 1) + val1) / tb->scal + 1) * tb->step;
7099 +
7100 + return 0;
7101 +}
7102 +
7103 +/* Revision 1 */
7104 +int mtk_pinconf_drive_set_rev1(struct mtk_pinctrl *hw,
7105 + const struct mtk_pin_desc *desc, u32 arg)
7106 +{
7107 + const struct mtk_drive_desc *tb;
7108 + int err = -ENOTSUPP;
7109 +
7110 + tb = &mtk_drive[desc->drv_n];
7111 +
7112 + if ((arg >= tb->min && arg <= tb->max) && !(arg % tb->step)) {
7113 + arg = (arg / tb->step - 1) * tb->scal;
7114 +
7115 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV,
7116 + arg);
7117 + if (err)
7118 + return err;
7119 + }
7120 +
7121 + return err;
7122 +}
7123 +
7124 +int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw,
7125 + const struct mtk_pin_desc *desc, int *val)
7126 +{
7127 + const struct mtk_drive_desc *tb;
7128 + int err, val1;
7129 +
7130 + tb = &mtk_drive[desc->drv_n];
7131 +
7132 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV, &val1);
7133 + if (err)
7134 + return err;
7135 +
7136 + *val = ((val1 & 0x7) / tb->scal + 1) * tb->step;
7137 +
7138 + return 0;
7139 +}
7140 +
7141 +int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
7142 + const struct mtk_pin_desc *desc, bool pullup,
7143 + u32 arg)
7144 +{
7145 + int err;
7146 +
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)
7151 + */
7152 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_R0, arg & 1);
7153 + if (err)
7154 + return 0;
7155 +
7156 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_R1,
7157 + !!(arg & 2));
7158 + if (err)
7159 + return 0;
7160 +
7161 + arg = pullup ? 0 : 1;
7162 +
7163 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_PUPD, arg);
7164 +
7165 + /* If PUPD register is not supported for that pin, let's fallback to
7166 + * general bias control.
7167 + */
7168 + if (err == -ENOTSUPP) {
7169 + if (hw->soc->bias_set) {
7170 + err = hw->soc->bias_set(hw, desc, pullup);
7171 + if (err)
7172 + return err;
7173 + } else {
7174 + return -ENOTSUPP;
7175 + }
7176 + }
7177 +
7178 + return err;
7179 +}
7180 +
7181 +int mtk_pinconf_adv_pull_get(struct mtk_pinctrl *hw,
7182 + const struct mtk_pin_desc *desc, bool pullup,
7183 + u32 *val)
7184 +{
7185 + u32 t, t2;
7186 + int err;
7187 +
7188 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_PUPD, &t);
7189 +
7190 + /* If PUPD register is not supported for that pin, let's fallback to
7191 + * general bias control.
7192 + */
7193 + if (err == -ENOTSUPP) {
7194 + if (hw->soc->bias_get) {
7195 + err = hw->soc->bias_get(hw, desc, pullup, val);
7196 + if (err)
7197 + return err;
7198 + } else {
7199 + return -ENOTSUPP;
7200 + }
7201 + } else {
7202 + /* t == 0 supposes PULLUP for the customized PULL setup */
7203 + if (err)
7204 + return err;
7205 +
7206 + if (pullup ^ !t)
7207 + return -EINVAL;
7208 + }
7209 +
7210 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_R0, &t);
7211 + if (err)
7212 + return err;
7213 +
7214 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_R1, &t2);
7215 + if (err)
7216 + return err;
7217 +
7218 + *val = (t | t2 << 1) & 0x7;
7219 +
7220 + return 0;
7221 +}
7222 +
7223 +int mtk_pinconf_adv_drive_set(struct mtk_pinctrl *hw,
7224 + const struct mtk_pin_desc *desc, u32 arg)
7225 +{
7226 + int err;
7227 + int en = arg & 1;
7228 + int e0 = !!(arg & 2);
7229 + int e1 = !!(arg & 4);
7230 +
7231 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_EN, en);
7232 + if (err)
7233 + return err;
7234 +
7235 + if (!en)
7236 + return err;
7237 +
7238 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_E0, e0);
7239 + if (err)
7240 + return err;
7241 +
7242 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_E1, e1);
7243 + if (err)
7244 + return err;
7245 +
7246 + return err;
7247 +}
7248 +
7249 +int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw,
7250 + const struct mtk_pin_desc *desc, u32 *val)
7251 +{
7252 + u32 en, e0, e1;
7253 + int err;
7254 +
7255 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_EN, &en);
7256 + if (err)
7257 + return err;
7258 +
7259 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_E0, &e0);
7260 + if (err)
7261 + return err;
7262 +
7263 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_E1, &e1);
7264 + if (err)
7265 + return err;
7266 +
7267 + *val = (en | e0 << 1 | e1 << 2) & 0x7;
7268 +
7269 + return 0;
7270 +}
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
7274 --- /dev/null
7275 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
7276 @@ -0,0 +1,302 @@
7277 +/* SPDX-License-Identifier: GPL-2.0 */
7278 +/*
7279 + * Copyright (C) 2018 MediaTek Inc.
7280 + *
7281 + * Author: Sean Wang <sean.wang@mediatek.com>
7282 + *
7283 + */
7284 +
7285 +#ifndef __PINCTRL_MTK_COMMON_V2_H
7286 +#define __PINCTRL_MTK_COMMON_V2_H
7287 +
7288 +#include <linux/gpio/driver.h>
7289 +
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
7296 +
7297 +#define EINT_NA U16_MAX
7298 +#define NO_EINT_SUPPORT EINT_NA
7299 +
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, \
7311 + }
7312 +
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, \
7315 + _x_bits, 32, 0)
7316 +
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, \
7319 + _x_bits, 32, 1)
7320 +
7321 +/* List these attributes which could be modified for the pin */
7322 +enum {
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,
7346 +};
7347 +
7348 +/* Group the pins by the driving current */
7349 +enum {
7350 + DRV_FIXED,
7351 + DRV_GRP0,
7352 + DRV_GRP1,
7353 + DRV_GRP2,
7354 + DRV_GRP3,
7355 + DRV_GRP4,
7356 + DRV_GRP_MAX,
7357 +};
7358 +
7359 +static const char * const mtk_default_register_base_names[] = {
7360 + "base",
7361 +};
7362 +
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
7370 + next register
7371 + */
7372 +struct mtk_pin_field {
7373 + u8 index;
7374 + u32 offset;
7375 + u32 mask;
7376 + u8 bitpos;
7377 + u8 next;
7378 +};
7379 +
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
7390 + * the range
7391 + * @sz_reg: the size of bits in a register
7392 + * @fixed: the consecutive pins share the same bits with the 1st
7393 + * pin
7394 + */
7395 +struct mtk_pin_field_calc {
7396 + u16 s_pin;
7397 + u16 e_pin;
7398 + u8 i_base;
7399 + u32 s_addr;
7400 + u8 x_addrs;
7401 + u8 s_bit;
7402 + u8 x_bits;
7403 + u8 sz_reg;
7404 + u8 fixed;
7405 +};
7406 +
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
7412 + */
7413 +struct mtk_pin_reg_calc {
7414 + const struct mtk_pin_field_calc *range;
7415 + unsigned int nranges;
7416 +};
7417 +
7418 +/**
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
7423 + */
7424 +struct mtk_func_desc {
7425 + const char *name;
7426 + u8 muxval;
7427 +};
7428 +
7429 +/**
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
7434 + */
7435 +struct mtk_eint_desc {
7436 + u16 eint_m;
7437 + u16 eint_n;
7438 +};
7439 +
7440 +/**
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
7449 + * ones)
7450 + */
7451 +struct mtk_pin_desc {
7452 + unsigned int number;
7453 + const char *name;
7454 + struct mtk_eint_desc eint;
7455 + u8 drv_n;
7456 + struct mtk_func_desc *funcs;
7457 +};
7458 +
7459 +struct mtk_pinctrl_group {
7460 + const char *name;
7461 + unsigned long config;
7462 + unsigned pin;
7463 +};
7464 +
7465 +struct mtk_pinctrl;
7466 +
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;
7478 +
7479 + /* Specific parameters per SoC */
7480 + u8 gpio_m;
7481 + bool ies_present;
7482 + const char * const *base_names;
7483 + unsigned int nbase_names;
7484 +
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);
7494 +
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);
7499 +
7500 + int (*adv_pull_set)(struct mtk_pinctrl *hw,
7501 + const struct mtk_pin_desc *desc, bool pullup,
7502 + u32 arg);
7503 + int (*adv_pull_get)(struct mtk_pinctrl *hw,
7504 + const struct mtk_pin_desc *desc, bool pullup,
7505 + u32 *val);
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);
7510 +
7511 + /* Specific driver data */
7512 + void *driver_data;
7513 +};
7514 +
7515 +struct mtk_pinctrl {
7516 + struct pinctrl_dev *pctrl;
7517 + void __iomem **base;
7518 + u8 nbase;
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;
7525 +};
7526 +
7527 +void mtk_rmw(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 mask, u32 set);
7528 +
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);
7533 +
7534 +int mtk_build_eint(struct mtk_pinctrl *hw, struct platform_device *pdev);
7535 +
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,
7544 + int *res);
7545 +
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,
7550 + int *res);
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,
7555 + int *res);
7556 +
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);
7561 +
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);
7566 +
7567 +int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
7568 + const struct mtk_pin_desc *desc, bool pullup,
7569 + u32 arg);
7570 +int mtk_pinconf_adv_pull_get(struct mtk_pinctrl *hw,
7571 + const struct mtk_pin_desc *desc, bool pullup,
7572 + u32 *val);
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);
7577 +
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,
7584
7585 pins = of_find_property(node, "pinmux", NULL);
7586 if (!pins) {
7587 - dev_err(pctl->dev, "missing pins property in node %s .\n",
7588 - node->name);
7589 + dev_err(pctl->dev, "missing pins property in node %pOFn .\n",
7590 + node);
7591 return -EINVAL;
7592 }
7593
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
7597 --- /dev/null
7598 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6765.h
7599 @@ -0,0 +1,1754 @@
7600 +/* SPDX-License-Identifier: GPL-2.0 */
7601 +/*
7602 + * Copyright (C) 2018 MediaTek Inc.
7603 + *
7604 + * Author: ZH Chen <zh.chen@mediatek.com>
7605 + *
7606 + */
7607 +
7608 +#ifndef __PINCTRL_MTK_MT6765_H
7609 +#define __PINCTRL_MTK_MT6765_H
7610 +
7611 +#include "pinctrl-paris.h"
7612 +
7613 +static struct mtk_pin_desc mtk_pins_mt6765[] = {
7614 + MTK_PIN(
7615 + 0, "GPIO0",
7616 + MTK_EINT_FUNCTION(0, 0),
7617 + DRV_GRP4,
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")
7626 + ),
7627 + MTK_PIN(
7628 + 1, "GPIO1",
7629 + MTK_EINT_FUNCTION(0, 1),
7630 + DRV_GRP4,
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")
7638 + ),
7639 + MTK_PIN(
7640 + 2, "GPIO2",
7641 + MTK_EINT_FUNCTION(0, 2),
7642 + DRV_GRP4,
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")
7651 + ),
7652 + MTK_PIN(
7653 + 3, "GPIO3",
7654 + MTK_EINT_FUNCTION(0, 3),
7655 + DRV_GRP4,
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")
7664 + ),
7665 + MTK_PIN(
7666 + 4, "GPIO4",
7667 + MTK_EINT_FUNCTION(0, 4),
7668 + DRV_GRP4,
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")
7676 + ),
7677 + MTK_PIN(
7678 + 5, "GPIO5",
7679 + MTK_EINT_FUNCTION(0, 5),
7680 + DRV_GRP4,
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")
7688 + ),
7689 + MTK_PIN(
7690 + 6, "GPIO6",
7691 + MTK_EINT_FUNCTION(0, 6),
7692 + DRV_GRP4,
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")
7700 + ),
7701 + MTK_PIN(
7702 + 7, "GPIO7",
7703 + MTK_EINT_FUNCTION(0, 7),
7704 + DRV_GRP4,
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")
7712 + ),
7713 + MTK_PIN(
7714 + 8, "GPIO8",
7715 + MTK_EINT_FUNCTION(0, 8),
7716 + DRV_GRP4,
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")
7725 + ),
7726 + MTK_PIN(
7727 + 9, "GPIO9",
7728 + MTK_EINT_FUNCTION(0, 9),
7729 + DRV_GRP4,
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")
7738 + ),
7739 + MTK_PIN(
7740 + 10, "GPIO10",
7741 + MTK_EINT_FUNCTION(0, 10),
7742 + DRV_GRP4,
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")
7750 + ),
7751 + MTK_PIN(
7752 + 11, "GPIO11",
7753 + MTK_EINT_FUNCTION(0, 11),
7754 + DRV_GRP4,
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")
7763 + ),
7764 + MTK_PIN(
7765 + 12, "GPIO12",
7766 + MTK_EINT_FUNCTION(0, 12),
7767 + DRV_GRP4,
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")
7775 + ),
7776 + MTK_PIN(
7777 + 13, "GPIO13",
7778 + MTK_EINT_FUNCTION(0, 13),
7779 + DRV_GRP4,
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")
7788 + ),
7789 + MTK_PIN(
7790 + 14, "GPIO14",
7791 + MTK_EINT_FUNCTION(0, 14),
7792 + DRV_GRP4,
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")
7801 + ),
7802 + MTK_PIN(
7803 + 15, "GPIO15",
7804 + MTK_EINT_FUNCTION(0, 15),
7805 + DRV_GRP4,
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")
7814 + ),
7815 + MTK_PIN(
7816 + 16, "GPIO16",
7817 + MTK_EINT_FUNCTION(0, 16),
7818 + DRV_GRP4,
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")
7827 + ),
7828 + MTK_PIN(
7829 + 17, "GPIO17",
7830 + MTK_EINT_FUNCTION(0, 17),
7831 + DRV_GRP4,
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")
7840 + ),
7841 + MTK_PIN(
7842 + 18, "GPIO18",
7843 + MTK_EINT_FUNCTION(0, 18),
7844 + DRV_GRP4,
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")
7853 + ),
7854 + MTK_PIN(
7855 + 19, "GPIO19",
7856 + MTK_EINT_FUNCTION(0, 19),
7857 + DRV_GRP4,
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")
7865 + ),
7866 + MTK_PIN(
7867 + 20, "GPIO20",
7868 + MTK_EINT_FUNCTION(0, 20),
7869 + DRV_GRP4,
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")
7878 + ),
7879 + MTK_PIN(
7880 + 21, "GPIO21",
7881 + MTK_EINT_FUNCTION(0, 21),
7882 + DRV_GRP4,
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")
7891 + ),
7892 + MTK_PIN(
7893 + 22, "GPIO22",
7894 + MTK_EINT_FUNCTION(0, 22),
7895 + DRV_GRP4,
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")
7904 + ),
7905 + MTK_PIN(
7906 + 23, "GPIO23",
7907 + MTK_EINT_FUNCTION(0, 23),
7908 + DRV_GRP4,
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")
7917 + ),
7918 + MTK_PIN(
7919 + 24, "GPIO24",
7920 + MTK_EINT_FUNCTION(0, 24),
7921 + DRV_GRP4,
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")
7930 + ),
7931 + MTK_PIN(
7932 + 25, "GPIO25",
7933 + MTK_EINT_FUNCTION(0, 25),
7934 + DRV_GRP4,
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")
7943 + ),
7944 + MTK_PIN(
7945 + 26, "GPIO26",
7946 + MTK_EINT_FUNCTION(0, 26),
7947 + DRV_GRP4,
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")
7956 + ),
7957 + MTK_PIN(
7958 + 27, "GPIO27",
7959 + MTK_EINT_FUNCTION(0, 27),
7960 + DRV_GRP4,
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")
7969 + ),
7970 + MTK_PIN(
7971 + 28, "GPIO28",
7972 + MTK_EINT_FUNCTION(0, 28),
7973 + DRV_GRP4,
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")
7982 + ),
7983 + MTK_PIN(
7984 + 29, "GPIO29",
7985 + MTK_EINT_FUNCTION(0, 29),
7986 + DRV_GRP4,
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")
7995 + ),
7996 + MTK_PIN(
7997 + 30, "GPIO30",
7998 + MTK_EINT_FUNCTION(0, 30),
7999 + DRV_GRP4,
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")
8008 + ),
8009 + MTK_PIN(
8010 + 31, "GPIO31",
8011 + MTK_EINT_FUNCTION(0, 31),
8012 + DRV_GRP4,
8013 + MTK_FUNCTION(0, "GPIO31"),
8014 + MTK_FUNCTION(1, "MSDC1_DAT3")
8015 + ),
8016 + MTK_PIN(
8017 + 32, "GPIO32",
8018 + MTK_EINT_FUNCTION(0, 32),
8019 + DRV_GRP4,
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")
8026 + ),
8027 + MTK_PIN(
8028 + 33, "GPIO33",
8029 + MTK_EINT_FUNCTION(0, 33),
8030 + DRV_GRP4,
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")
8037 + ),
8038 + MTK_PIN(
8039 + 34, "GPIO34",
8040 + MTK_EINT_FUNCTION(0, 34),
8041 + DRV_GRP4,
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")
8048 + ),
8049 + MTK_PIN(
8050 + 35, "GPIO35",
8051 + MTK_EINT_FUNCTION(0, 35),
8052 + DRV_GRP4,
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")
8060 + ),
8061 + MTK_PIN(
8062 + 36, "GPIO36",
8063 + MTK_EINT_FUNCTION(0, 36),
8064 + DRV_GRP0,
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")
8073 + ),
8074 + MTK_PIN(
8075 + 37, "GPIO37",
8076 + MTK_EINT_FUNCTION(0, 37),
8077 + DRV_GRP0,
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")
8085 + ),
8086 + MTK_PIN(
8087 + 38, "GPIO38",
8088 + MTK_EINT_FUNCTION(0, 38),
8089 + DRV_GRP0,
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")
8094 + ),
8095 + MTK_PIN(
8096 + 39, "GPIO39",
8097 + MTK_EINT_FUNCTION(0, 39),
8098 + DRV_GRP0,
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")
8107 + ),
8108 + MTK_PIN(
8109 + 40, "GPIO40",
8110 + MTK_EINT_FUNCTION(0, 40),
8111 + DRV_GRP0,
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")
8119 + ),
8120 + MTK_PIN(
8121 + 41, "GPIO41",
8122 + MTK_EINT_FUNCTION(0, 41),
8123 + DRV_GRP4,
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")
8132 + ),
8133 + MTK_PIN(
8134 + 42, "GPIO42",
8135 + MTK_EINT_FUNCTION(0, 42),
8136 + DRV_GRP4,
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")
8145 + ),
8146 + MTK_PIN(
8147 + 43, "GPIO43",
8148 + MTK_EINT_FUNCTION(0, 43),
8149 + DRV_GRP4,
8150 + MTK_FUNCTION(0, "GPIO43"),
8151 + MTK_FUNCTION(1, "DISP_PWM"),
8152 + MTK_FUNCTION(7, "DBG_MON_A24")
8153 + ),
8154 + MTK_PIN(
8155 + 44, "GPIO44",
8156 + MTK_EINT_FUNCTION(0, 44),
8157 + DRV_GRP4,
8158 + MTK_FUNCTION(0, "GPIO44"),
8159 + MTK_FUNCTION(1, "DSI_TE"),
8160 + MTK_FUNCTION(7, "DBG_MON_A25")
8161 + ),
8162 + MTK_PIN(
8163 + 45, "GPIO45",
8164 + MTK_EINT_FUNCTION(0, 45),
8165 + DRV_GRP4,
8166 + MTK_FUNCTION(0, "GPIO45"),
8167 + MTK_FUNCTION(1, "LCM_RST"),
8168 + MTK_FUNCTION(7, "DBG_MON_A26")
8169 + ),
8170 + MTK_PIN(
8171 + 46, "GPIO46",
8172 + MTK_EINT_FUNCTION(0, 46),
8173 + DRV_GRP4,
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")
8182 + ),
8183 + MTK_PIN(
8184 + 47, "GPIO47",
8185 + MTK_EINT_FUNCTION(0, 47),
8186 + DRV_GRP4,
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")
8195 + ),
8196 + MTK_PIN(
8197 + 48, "GPIO48",
8198 + MTK_EINT_FUNCTION(0, 48),
8199 + DRV_GRP4,
8200 + MTK_FUNCTION(0, "GPIO48"),
8201 + MTK_FUNCTION(1, "SCL5"),
8202 + MTK_FUNCTION(7, "DBG_MON_A29")
8203 + ),
8204 + MTK_PIN(
8205 + 49, "GPIO49",
8206 + MTK_EINT_FUNCTION(0, 49),
8207 + DRV_GRP4,
8208 + MTK_FUNCTION(0, "GPIO49"),
8209 + MTK_FUNCTION(1, "SDA5"),
8210 + MTK_FUNCTION(7, "DBG_MON_A30")
8211 + ),
8212 + MTK_PIN(
8213 + 50, "GPIO50",
8214 + MTK_EINT_FUNCTION(0, 50),
8215 + DRV_GRP4,
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")
8224 + ),
8225 + MTK_PIN(
8226 + 51, "GPIO51",
8227 + MTK_EINT_FUNCTION(0, 51),
8228 + DRV_GRP4,
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")
8237 + ),
8238 + MTK_PIN(
8239 + 52, "GPIO52",
8240 + MTK_EINT_FUNCTION(0, 52),
8241 + DRV_GRP4,
8242 + MTK_FUNCTION(0, "GPIO52"),
8243 + MTK_FUNCTION(1, "BPI_BUS15")
8244 + ),
8245 + MTK_PIN(
8246 + 53, "GPIO53",
8247 + MTK_EINT_FUNCTION(0, 53),
8248 + DRV_GRP4,
8249 + MTK_FUNCTION(0, "GPIO53"),
8250 + MTK_FUNCTION(1, "BPI_BUS13")
8251 + ),
8252 + MTK_PIN(
8253 + 54, "GPIO54",
8254 + MTK_EINT_FUNCTION(0, 54),
8255 + DRV_GRP4,
8256 + MTK_FUNCTION(0, "GPIO54"),
8257 + MTK_FUNCTION(1, "BPI_BUS12")
8258 + ),
8259 + MTK_PIN(
8260 + 55, "GPIO55",
8261 + MTK_EINT_FUNCTION(0, 55),
8262 + DRV_GRP4,
8263 + MTK_FUNCTION(0, "GPIO55"),
8264 + MTK_FUNCTION(1, "BPI_BUS8")
8265 + ),
8266 + MTK_PIN(
8267 + 56, "GPIO56",
8268 + MTK_EINT_FUNCTION(0, 56),
8269 + DRV_GRP4,
8270 + MTK_FUNCTION(0, "GPIO56"),
8271 + MTK_FUNCTION(1, "BPI_BUS9"),
8272 + MTK_FUNCTION(2, "SCL_6306")
8273 + ),
8274 + MTK_PIN(
8275 + 57, "GPIO57",
8276 + MTK_EINT_FUNCTION(0, 57),
8277 + DRV_GRP4,
8278 + MTK_FUNCTION(0, "GPIO57"),
8279 + MTK_FUNCTION(1, "BPI_BUS10"),
8280 + MTK_FUNCTION(2, "SDA_6306")
8281 + ),
8282 + MTK_PIN(
8283 + 58, "GPIO58",
8284 + MTK_EINT_FUNCTION(0, 58),
8285 + DRV_GRP4,
8286 + MTK_FUNCTION(0, "GPIO58"),
8287 + MTK_FUNCTION(1, "RFIC0_BSI_D2")
8288 + ),
8289 + MTK_PIN(
8290 + 59, "GPIO59",
8291 + MTK_EINT_FUNCTION(0, 59),
8292 + DRV_GRP4,
8293 + MTK_FUNCTION(0, "GPIO59"),
8294 + MTK_FUNCTION(1, "RFIC0_BSI_D1")
8295 + ),
8296 + MTK_PIN(
8297 + 60, "GPIO60",
8298 + MTK_EINT_FUNCTION(0, 60),
8299 + DRV_GRP4,
8300 + MTK_FUNCTION(0, "GPIO60"),
8301 + MTK_FUNCTION(1, "RFIC0_BSI_D0")
8302 + ),
8303 + MTK_PIN(
8304 + 61, "GPIO61",
8305 + MTK_EINT_FUNCTION(0, 61),
8306 + DRV_GRP4,
8307 + MTK_FUNCTION(0, "GPIO61"),
8308 + MTK_FUNCTION(1, "MIPI1_SDATA")
8309 + ),
8310 + MTK_PIN(
8311 + 62, "GPIO62",
8312 + MTK_EINT_FUNCTION(0, 62),
8313 + DRV_GRP4,
8314 + MTK_FUNCTION(0, "GPIO62"),
8315 + MTK_FUNCTION(1, "MIPI1_SCLK")
8316 + ),
8317 + MTK_PIN(
8318 + 63, "GPIO63",
8319 + MTK_EINT_FUNCTION(0, 63),
8320 + DRV_GRP4,
8321 + MTK_FUNCTION(0, "GPIO63"),
8322 + MTK_FUNCTION(1, "MIPI0_SDATA")
8323 + ),
8324 + MTK_PIN(
8325 + 64, "GPIO64",
8326 + MTK_EINT_FUNCTION(0, 64),
8327 + DRV_GRP4,
8328 + MTK_FUNCTION(0, "GPIO64"),
8329 + MTK_FUNCTION(1, "MIPI0_SCLK")
8330 + ),
8331 + MTK_PIN(
8332 + 65, "GPIO65",
8333 + MTK_EINT_FUNCTION(0, 65),
8334 + DRV_GRP4,
8335 + MTK_FUNCTION(0, "GPIO65"),
8336 + MTK_FUNCTION(1, "MIPI3_SDATA"),
8337 + MTK_FUNCTION(2, "BPI_BUS16")
8338 + ),
8339 + MTK_PIN(
8340 + 66, "GPIO66",
8341 + MTK_EINT_FUNCTION(0, 66),
8342 + DRV_GRP4,
8343 + MTK_FUNCTION(0, "GPIO66"),
8344 + MTK_FUNCTION(1, "MIPI3_SCLK"),
8345 + MTK_FUNCTION(2, "BPI_BUS17")
8346 + ),
8347 + MTK_PIN(
8348 + 67, "GPIO67",
8349 + MTK_EINT_FUNCTION(0, 67),
8350 + DRV_GRP4,
8351 + MTK_FUNCTION(0, "GPIO67"),
8352 + MTK_FUNCTION(1, "MIPI2_SDATA")
8353 + ),
8354 + MTK_PIN(
8355 + 68, "GPIO68",
8356 + MTK_EINT_FUNCTION(0, 68),
8357 + DRV_GRP4,
8358 + MTK_FUNCTION(0, "GPIO68"),
8359 + MTK_FUNCTION(1, "MIPI2_SCLK")
8360 + ),
8361 + MTK_PIN(
8362 + 69, "GPIO69",
8363 + MTK_EINT_FUNCTION(0, 69),
8364 + DRV_GRP4,
8365 + MTK_FUNCTION(0, "GPIO69"),
8366 + MTK_FUNCTION(1, "BPI_BUS7")
8367 + ),
8368 + MTK_PIN(
8369 + 70, "GPIO70",
8370 + MTK_EINT_FUNCTION(0, 70),
8371 + DRV_GRP4,
8372 + MTK_FUNCTION(0, "GPIO70"),
8373 + MTK_FUNCTION(1, "BPI_BUS6")
8374 + ),
8375 + MTK_PIN(
8376 + 71, "GPIO71",
8377 + MTK_EINT_FUNCTION(0, 71),
8378 + DRV_GRP4,
8379 + MTK_FUNCTION(0, "GPIO71"),
8380 + MTK_FUNCTION(1, "BPI_BUS5")
8381 + ),
8382 + MTK_PIN(
8383 + 72, "GPIO72",
8384 + MTK_EINT_FUNCTION(0, 72),
8385 + DRV_GRP4,
8386 + MTK_FUNCTION(0, "GPIO72"),
8387 + MTK_FUNCTION(1, "BPI_BUS4")
8388 + ),
8389 + MTK_PIN(
8390 + 73, "GPIO73",
8391 + MTK_EINT_FUNCTION(0, 73),
8392 + DRV_GRP4,
8393 + MTK_FUNCTION(0, "GPIO73"),
8394 + MTK_FUNCTION(1, "BPI_BUS3")
8395 + ),
8396 + MTK_PIN(
8397 + 74, "GPIO74",
8398 + MTK_EINT_FUNCTION(0, 74),
8399 + DRV_GRP4,
8400 + MTK_FUNCTION(0, "GPIO74"),
8401 + MTK_FUNCTION(1, "BPI_BUS2")
8402 + ),
8403 + MTK_PIN(
8404 + 75, "GPIO75",
8405 + MTK_EINT_FUNCTION(0, 75),
8406 + DRV_GRP4,
8407 + MTK_FUNCTION(0, "GPIO75"),
8408 + MTK_FUNCTION(1, "BPI_BUS1")
8409 + ),
8410 + MTK_PIN(
8411 + 76, "GPIO76",
8412 + MTK_EINT_FUNCTION(0, 76),
8413 + DRV_GRP4,
8414 + MTK_FUNCTION(0, "GPIO76"),
8415 + MTK_FUNCTION(1, "BPI_BUS0")
8416 + ),
8417 + MTK_PIN(
8418 + 77, "GPIO77",
8419 + MTK_EINT_FUNCTION(0, 77),
8420 + DRV_GRP4,
8421 + MTK_FUNCTION(0, "GPIO77"),
8422 + MTK_FUNCTION(1, "BPI_BUS14")
8423 + ),
8424 + MTK_PIN(
8425 + 78, "GPIO78",
8426 + MTK_EINT_FUNCTION(0, 78),
8427 + DRV_GRP4,
8428 + MTK_FUNCTION(0, "GPIO78"),
8429 + MTK_FUNCTION(1, "BPI_BUS11")
8430 + ),
8431 + MTK_PIN(
8432 + 79, "GPIO79",
8433 + MTK_EINT_FUNCTION(0, 79),
8434 + DRV_GRP4,
8435 + MTK_FUNCTION(0, "GPIO79"),
8436 + MTK_FUNCTION(1, "BPI_PA_VM1"),
8437 + MTK_FUNCTION(2, "MIPI4_SDATA")
8438 + ),
8439 + MTK_PIN(
8440 + 80, "GPIO80",
8441 + MTK_EINT_FUNCTION(0, 80),
8442 + DRV_GRP4,
8443 + MTK_FUNCTION(0, "GPIO80"),
8444 + MTK_FUNCTION(1, "BPI_PA_VM0"),
8445 + MTK_FUNCTION(2, "MIPI4_SCLK")
8446 + ),
8447 + MTK_PIN(
8448 + 81, "GPIO81",
8449 + MTK_EINT_FUNCTION(0, 81),
8450 + DRV_GRP4,
8451 + MTK_FUNCTION(0, "GPIO81"),
8452 + MTK_FUNCTION(1, "SDA1"),
8453 + MTK_FUNCTION(7, "DBG_MON_B0")
8454 + ),
8455 + MTK_PIN(
8456 + 82, "GPIO82",
8457 + MTK_EINT_FUNCTION(0, 82),
8458 + DRV_GRP4,
8459 + MTK_FUNCTION(0, "GPIO82"),
8460 + MTK_FUNCTION(1, "SDA0"),
8461 + MTK_FUNCTION(7, "DBG_MON_B1")
8462 + ),
8463 + MTK_PIN(
8464 + 83, "GPIO83",
8465 + MTK_EINT_FUNCTION(0, 83),
8466 + DRV_GRP4,
8467 + MTK_FUNCTION(0, "GPIO83"),
8468 + MTK_FUNCTION(1, "SCL0"),
8469 + MTK_FUNCTION(7, "DBG_MON_B2")
8470 + ),
8471 + MTK_PIN(
8472 + 84, "GPIO84",
8473 + MTK_EINT_FUNCTION(0, 84),
8474 + DRV_GRP4,
8475 + MTK_FUNCTION(0, "GPIO84"),
8476 + MTK_FUNCTION(1, "SCL1"),
8477 + MTK_FUNCTION(7, "DBG_MON_B3")
8478 + ),
8479 + MTK_PIN(
8480 + 85, "GPIO85",
8481 + MTK_EINT_FUNCTION(0, 85),
8482 + DRV_GRP4,
8483 + MTK_FUNCTION(0, "GPIO85"),
8484 + MTK_FUNCTION(1, "RFIC0_BSI_EN")
8485 + ),
8486 + MTK_PIN(
8487 + 86, "GPIO86",
8488 + MTK_EINT_FUNCTION(0, 86),
8489 + DRV_GRP4,
8490 + MTK_FUNCTION(0, "GPIO86"),
8491 + MTK_FUNCTION(1, "RFIC0_BSI_CK")
8492 + ),
8493 + MTK_PIN(
8494 + 87, "GPIO87",
8495 + MTK_EINT_FUNCTION(0, 87),
8496 + DRV_GRP4,
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")
8503 + ),
8504 + MTK_PIN(
8505 + 88, "GPIO88",
8506 + MTK_EINT_FUNCTION(0, 88),
8507 + DRV_GRP4,
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")
8515 + ),
8516 + MTK_PIN(
8517 + 89, "GPIO89",
8518 + MTK_EINT_FUNCTION(0, 89),
8519 + DRV_GRP4,
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")
8528 + ),
8529 + MTK_PIN(
8530 + 90, "GPIO90",
8531 + MTK_EINT_FUNCTION(0, 90),
8532 + DRV_GRP4,
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")
8541 + ),
8542 + MTK_PIN(
8543 + 91, "GPIO91",
8544 + MTK_EINT_FUNCTION(0, 91),
8545 + DRV_GRP4,
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")
8554 + ),
8555 + MTK_PIN(
8556 + 92, "GPIO92",
8557 + MTK_EINT_FUNCTION(0, 92),
8558 + DRV_GRP4,
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")
8564 + ),
8565 + MTK_PIN(
8566 + 93, "GPIO93",
8567 + MTK_EINT_FUNCTION(0, 93),
8568 + DRV_GRP4,
8569 + MTK_FUNCTION(0, "GPIO93"),
8570 + MTK_FUNCTION(1, "KPCOL0"),
8571 + MTK_FUNCTION(7, "DBG_MON_B7")
8572 + ),
8573 + MTK_PIN(
8574 + 94, "GPIO94",
8575 + MTK_EINT_FUNCTION(0, 94),
8576 + DRV_GRP4,
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")
8582 + ),
8583 + MTK_PIN(
8584 + 95, "GPIO95",
8585 + MTK_EINT_FUNCTION(0, 95),
8586 + DRV_GRP4,
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")
8594 + ),
8595 + MTK_PIN(
8596 + 96, "GPIO96",
8597 + MTK_EINT_FUNCTION(0, 96),
8598 + DRV_GRP4,
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")
8606 + ),
8607 + MTK_PIN(
8608 + 97, "GPIO97",
8609 + MTK_EINT_FUNCTION(0, 97),
8610 + DRV_GRP4,
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")
8619 + ),
8620 + MTK_PIN(
8621 + 98, "GPIO98",
8622 + MTK_EINT_FUNCTION(0, 98),
8623 + DRV_GRP4,
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")
8631 + ),
8632 + MTK_PIN(
8633 + 99, "GPIO99",
8634 + MTK_EINT_FUNCTION(0, 99),
8635 + DRV_GRP4,
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")
8642 + ),
8643 +
8644 + MTK_PIN(
8645 + 100, "GPIO100",
8646 + MTK_EINT_FUNCTION(0, 100),
8647 + DRV_GRP4,
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")
8654 + ),
8655 + MTK_PIN(
8656 + 101, "GPIO101",
8657 + MTK_EINT_FUNCTION(0, 101),
8658 + DRV_GRP4,
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")
8666 + ),
8667 + MTK_PIN(
8668 + 102, "GPIO102",
8669 + MTK_EINT_FUNCTION(0, 102),
8670 + DRV_GRP4,
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")
8679 + ),
8680 + MTK_PIN(
8681 + 103, "GPIO103",
8682 + MTK_EINT_FUNCTION(0, 103),
8683 + DRV_GRP4,
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")
8692 + ),
8693 + MTK_PIN(
8694 + 104, "GPIO104",
8695 + MTK_EINT_FUNCTION(0, 104),
8696 + DRV_GRP4,
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")
8705 + ),
8706 + MTK_PIN(
8707 + 105, "GPIO105",
8708 + MTK_EINT_FUNCTION(0, 105),
8709 + DRV_GRP4,
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")
8717 + ),
8718 + MTK_PIN(
8719 + 106, "GPIO106",
8720 + MTK_EINT_FUNCTION(0, 106),
8721 + DRV_GRP4,
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")
8729 + ),
8730 + MTK_PIN(
8731 + 107, "GPIO107",
8732 + MTK_EINT_FUNCTION(0, 107),
8733 + DRV_GRP4,
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")
8742 + ),
8743 + MTK_PIN(
8744 + 108, "GPIO108",
8745 + MTK_EINT_FUNCTION(0, 108),
8746 + DRV_GRP4,
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")
8754 + ),
8755 + MTK_PIN(
8756 + 109, "GPIO109",
8757 + MTK_EINT_FUNCTION(0, 109),
8758 + DRV_GRP4,
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")
8767 + ),
8768 + MTK_PIN(
8769 + 110, "GPIO110",
8770 + MTK_EINT_FUNCTION(0, 110),
8771 + DRV_GRP4,
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")
8780 + ),
8781 + MTK_PIN(
8782 + 111, "GPIO111",
8783 + MTK_EINT_FUNCTION(0, 111),
8784 + DRV_GRP4,
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")
8793 + ),
8794 + MTK_PIN(
8795 + 112, "GPIO112",
8796 + MTK_EINT_FUNCTION(0, 112),
8797 + DRV_GRP4,
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")
8805 + ),
8806 + MTK_PIN(
8807 + 113, "GPIO113",
8808 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8809 + DRV_GRP4,
8810 + MTK_FUNCTION(0, "GPIO113"),
8811 + MTK_FUNCTION(1, "CONN_TOP_CLK")
8812 + ),
8813 + MTK_PIN(
8814 + 114, "GPIO114",
8815 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8816 + DRV_GRP4,
8817 + MTK_FUNCTION(0, "GPIO114"),
8818 + MTK_FUNCTION(1, "CONN_TOP_DATA")
8819 + ),
8820 + MTK_PIN(
8821 + 115, "GPIO115",
8822 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8823 + DRV_GRP4,
8824 + MTK_FUNCTION(0, "GPIO115"),
8825 + MTK_FUNCTION(1, "CONN_BT_CLK")
8826 + ),
8827 + MTK_PIN(
8828 + 116, "GPIO116",
8829 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8830 + DRV_GRP4,
8831 + MTK_FUNCTION(0, "GPIO116"),
8832 + MTK_FUNCTION(1, "CONN_BT_DATA")
8833 + ),
8834 + MTK_PIN(
8835 + 117, "GPIO117",
8836 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8837 + DRV_GRP4,
8838 + MTK_FUNCTION(0, "GPIO117"),
8839 + MTK_FUNCTION(1, "CONN_WF_CTRL0")
8840 + ),
8841 + MTK_PIN(
8842 + 118, "GPIO118",
8843 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8844 + DRV_GRP4,
8845 + MTK_FUNCTION(0, "GPIO118"),
8846 + MTK_FUNCTION(1, "CONN_WF_CTRL1")
8847 + ),
8848 + MTK_PIN(
8849 + 119, "GPIO119",
8850 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8851 + DRV_GRP4,
8852 + MTK_FUNCTION(0, "GPIO119"),
8853 + MTK_FUNCTION(1, "CONN_WF_CTRL2")
8854 + ),
8855 + MTK_PIN(
8856 + 120, "GPIO120",
8857 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8858 + DRV_GRP4,
8859 + MTK_FUNCTION(0, "GPIO120"),
8860 + MTK_FUNCTION(1, "CONN_WB_PTA")
8861 + ),
8862 + MTK_PIN(
8863 + 121, "GPIO121",
8864 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8865 + DRV_GRP4,
8866 + MTK_FUNCTION(0, "GPIO121"),
8867 + MTK_FUNCTION(1, "CONN_HRST_B")
8868 + ),
8869 + MTK_PIN(
8870 + 122, "GPIO122",
8871 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8872 + DRV_GRP4,
8873 + MTK_FUNCTION(0, "GPIO122"),
8874 + MTK_FUNCTION(1, "MSDC0_CMD"),
8875 + MTK_FUNCTION(2, "MSDC0_CMD")
8876 + ),
8877 + MTK_PIN(
8878 + 123, "GPIO123",
8879 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8880 + DRV_GRP4,
8881 + MTK_FUNCTION(0, "GPIO123"),
8882 + MTK_FUNCTION(1, "MSDC0_DAT0"),
8883 + MTK_FUNCTION(2, "MSDC0_DAT4")
8884 + ),
8885 + MTK_PIN(
8886 + 124, "GPIO124",
8887 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8888 + DRV_GRP4,
8889 + MTK_FUNCTION(0, "GPIO124"),
8890 + MTK_FUNCTION(1, "MSDC0_CLK"),
8891 + MTK_FUNCTION(2, "MSDC0_CLK")
8892 + ),
8893 + MTK_PIN(
8894 + 125, "GPIO125",
8895 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8896 + DRV_GRP4,
8897 + MTK_FUNCTION(0, "GPIO125"),
8898 + MTK_FUNCTION(1, "MSDC0_DAT2"),
8899 + MTK_FUNCTION(2, "MSDC0_DAT5")
8900 + ),
8901 + MTK_PIN(
8902 + 126, "GPIO126",
8903 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8904 + DRV_GRP4,
8905 + MTK_FUNCTION(0, "GPIO126"),
8906 + MTK_FUNCTION(1, "MSDC0_DAT4"),
8907 + MTK_FUNCTION(2, "MSDC0_DAT2")
8908 + ),
8909 + MTK_PIN(
8910 + 127, "GPIO127",
8911 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8912 + DRV_GRP4,
8913 + MTK_FUNCTION(0, "GPIO127"),
8914 + MTK_FUNCTION(1, "MSDC0_DAT6"),
8915 + MTK_FUNCTION(2, "MSDC0_DAT1")
8916 + ),
8917 + MTK_PIN(
8918 + 128, "GPIO128",
8919 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8920 + DRV_GRP4,
8921 + MTK_FUNCTION(0, "GPIO128"),
8922 + MTK_FUNCTION(1, "MSDC0_DAT1"),
8923 + MTK_FUNCTION(2, "MSDC0_DAT6")
8924 + ),
8925 + MTK_PIN(
8926 + 129, "GPIO129",
8927 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8928 + DRV_GRP4,
8929 + MTK_FUNCTION(0, "GPIO129"),
8930 + MTK_FUNCTION(1, "MSDC0_DAT5"),
8931 + MTK_FUNCTION(2, "MSDC0_DAT0")
8932 + ),
8933 + MTK_PIN(
8934 + 130, "GPIO130",
8935 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8936 + DRV_GRP4,
8937 + MTK_FUNCTION(0, "GPIO130"),
8938 + MTK_FUNCTION(1, "MSDC0_DAT7"),
8939 + MTK_FUNCTION(2, "MSDC0_DAT7")
8940 + ),
8941 + MTK_PIN(
8942 + 131, "GPIO131",
8943 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8944 + DRV_GRP4,
8945 + MTK_FUNCTION(0, "GPIO131"),
8946 + MTK_FUNCTION(1, "MSDC0_DSL"),
8947 + MTK_FUNCTION(2, "MSDC0_DSL")
8948 + ),
8949 + MTK_PIN(
8950 + 132, "GPIO132",
8951 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8952 + DRV_GRP4,
8953 + MTK_FUNCTION(0, "GPIO132"),
8954 + MTK_FUNCTION(1, "MSDC0_DAT3"),
8955 + MTK_FUNCTION(2, "MSDC0_DAT3")
8956 + ),
8957 + MTK_PIN(
8958 + 133, "GPIO133",
8959 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8960 + DRV_GRP4,
8961 + MTK_FUNCTION(0, "GPIO133"),
8962 + MTK_FUNCTION(1, "MSDC0_RSTB"),
8963 + MTK_FUNCTION(2, "MSDC0_RSTB")
8964 + ),
8965 + MTK_PIN(
8966 + 134, "GPIO134",
8967 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8968 + DRV_GRP4,
8969 + MTK_FUNCTION(0, "GPIO134"),
8970 + MTK_FUNCTION(1, "RTC32K_CK")
8971 + ),
8972 + MTK_PIN(
8973 + 135, "GPIO135",
8974 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8975 + DRV_GRP4,
8976 + MTK_FUNCTION(0, "GPIO135"),
8977 + MTK_FUNCTION(1, "WATCHDOG")
8978 + ),
8979 + MTK_PIN(
8980 + 136, "GPIO136",
8981 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8982 + DRV_GRP4,
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")
8987 + ),
8988 + MTK_PIN(
8989 + 137, "GPIO137",
8990 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
8991 + DRV_GRP4,
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")
8996 + ),
8997 + MTK_PIN(
8998 + 138, "GPIO138",
8999 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9000 + DRV_GRP4,
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")
9005 + ),
9006 + MTK_PIN(
9007 + 139, "GPIO139",
9008 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9009 + DRV_GRP4,
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")
9014 + ),
9015 + MTK_PIN(
9016 + 140, "GPIO140",
9017 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9018 + DRV_GRP4,
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")
9023 + ),
9024 + MTK_PIN(
9025 + 141, "GPIO141",
9026 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9027 + DRV_GRP4,
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")
9032 + ),
9033 + MTK_PIN(
9034 + 142, "GPIO142",
9035 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9036 + DRV_GRP4,
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")
9041 + ),
9042 + MTK_PIN(
9043 + 143, "GPIO143",
9044 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9045 + DRV_GRP4,
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")
9050 + ),
9051 + MTK_PIN(
9052 + 144, "GPIO144",
9053 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9054 + DRV_GRP4,
9055 + MTK_FUNCTION(0, "GPIO144"),
9056 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
9057 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
9058 + ),
9059 + MTK_PIN(
9060 + 145, "GPIO145",
9061 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9062 + DRV_GRP4,
9063 + MTK_FUNCTION(0, "GPIO145"),
9064 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
9065 + ),
9066 + MTK_PIN(
9067 + 146, "GPIO146",
9068 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9069 + DRV_GRP4,
9070 + MTK_FUNCTION(0, "GPIO146"),
9071 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
9072 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
9073 + ),
9074 + MTK_PIN(
9075 + 147, "GPIO147",
9076 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9077 + DRV_GRP4,
9078 + MTK_FUNCTION(0, "GPIO147"),
9079 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
9080 + ),
9081 + MTK_PIN(
9082 + 148, "GPIO148",
9083 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9084 + DRV_GRP4,
9085 + MTK_FUNCTION(0, "GPIO148"),
9086 + MTK_FUNCTION(1, "SRCLKENA0")
9087 + ),
9088 + MTK_PIN(
9089 + 149, "GPIO149",
9090 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9091 + DRV_GRP4,
9092 + MTK_FUNCTION(0, "GPIO149"),
9093 + MTK_FUNCTION(1, "SRCLKENA1")
9094 + ),
9095 + MTK_PIN(
9096 + 150, "GPIO150",
9097 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9098 + DRV_GRP4,
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")
9105 + ),
9106 + MTK_PIN(
9107 + 151, "GPIO151",
9108 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9109 + DRV_GRP4,
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")
9116 + ),
9117 + MTK_PIN(
9118 + 152, "GPIO152",
9119 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9120 + DRV_GRP4,
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")
9127 + ),
9128 + MTK_PIN(
9129 + 153, "GPIO153",
9130 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9131 + DRV_GRP4,
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")
9138 + ),
9139 + MTK_PIN(
9140 + 154, "GPIO154",
9141 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9142 + DRV_GRP4,
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")
9149 + ),
9150 + MTK_PIN(
9151 + 155, "GPIO155",
9152 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9153 + DRV_GRP4,
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")
9162 + ),
9163 + MTK_PIN(
9164 + 156, "GPIO156",
9165 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9166 + DRV_GRP4,
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")
9175 + ),
9176 + MTK_PIN(
9177 + 157, "GPIO157",
9178 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9179 + DRV_GRP4,
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")
9188 + ),
9189 + MTK_PIN(
9190 + 158, "GPIO158",
9191 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9192 + DRV_GRP4,
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")
9201 + ),
9202 + MTK_PIN(
9203 + 159, "GPIO159",
9204 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9205 + DRV_GRP4,
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")
9212 + ),
9213 + MTK_PIN(
9214 + 160, "GPIO160",
9215 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9216 + DRV_GRP4,
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")
9224 + ),
9225 + MTK_PIN(
9226 + 161, "GPIO161",
9227 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9228 + DRV_GRP4,
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")
9236 + ),
9237 + MTK_PIN(
9238 + 162, "GPIO162",
9239 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9240 + DRV_GRP4,
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")
9248 + ),
9249 + MTK_PIN(
9250 + 163, "GPIO163",
9251 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9252 + DRV_GRP4,
9253 + MTK_FUNCTION(0, "GPIO163")
9254 + ),
9255 + MTK_PIN(
9256 + 164, "GPIO164",
9257 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9258 + DRV_GRP4,
9259 + MTK_FUNCTION(0, "GPIO164")
9260 + ),
9261 + MTK_PIN(
9262 + 165, "GPIO165",
9263 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9264 + DRV_GRP4,
9265 + MTK_FUNCTION(0, "GPIO165")
9266 + ),
9267 + MTK_PIN(
9268 + 166, "GPIO166",
9269 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9270 + DRV_GRP4,
9271 + MTK_FUNCTION(0, "GPIO166")
9272 + ),
9273 + MTK_PIN(
9274 + 167, "GPIO167",
9275 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9276 + DRV_GRP4,
9277 + MTK_FUNCTION(0, "GPIO167")
9278 + ),
9279 + MTK_PIN(
9280 + 168, "GPIO168",
9281 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9282 + DRV_GRP4,
9283 + MTK_FUNCTION(0, "GPIO168")
9284 + ),
9285 + MTK_PIN(
9286 + 169, "GPIO169",
9287 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9288 + DRV_GRP4,
9289 + MTK_FUNCTION(0, "GPIO169")
9290 + ),
9291 + MTK_PIN(
9292 + 170, "GPIO170",
9293 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9294 + DRV_GRP4,
9295 + MTK_FUNCTION(0, "GPIO170")
9296 + ),
9297 + MTK_PIN(
9298 + 171, "GPIO171",
9299 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9300 + DRV_GRP4,
9301 + MTK_FUNCTION(0, "GPIO171")
9302 + ),
9303 + MTK_PIN(
9304 + 172, "GPIO172",
9305 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9306 + DRV_GRP4,
9307 + MTK_FUNCTION(0, "GPIO172")
9308 + ),
9309 + MTK_PIN(
9310 + 173, "GPIO173",
9311 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9312 + DRV_GRP4,
9313 + MTK_FUNCTION(0, "GPIO173")
9314 + ),
9315 + MTK_PIN(
9316 + 174, "GPIO174",
9317 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9318 + DRV_GRP4,
9319 + MTK_FUNCTION(0, "GPIO174")
9320 + ),
9321 + MTK_PIN(
9322 + 175, "GPIO175",
9323 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9324 + DRV_GRP4,
9325 + MTK_FUNCTION(0, "GPIO175")
9326 + ),
9327 + MTK_PIN(
9328 + 176, "GPIO176",
9329 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9330 + DRV_GRP4,
9331 + MTK_FUNCTION(0, "GPIO176")
9332 + ),
9333 + MTK_PIN(
9334 + 177, "GPIO177",
9335 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9336 + DRV_GRP4,
9337 + MTK_FUNCTION(0, "GPIO177")
9338 + ),
9339 + MTK_PIN(
9340 + 178, "GPIO178",
9341 + MTK_EINT_FUNCTION(0, NO_EINT_SUPPORT),
9342 + DRV_GRP4,
9343 + MTK_FUNCTION(0, "GPIO178")
9344 + ),
9345 + MTK_PIN(
9346 + 179, "GPIO179",
9347 + MTK_EINT_FUNCTION(0, 151),
9348 + DRV_GRP4,
9349 + MTK_FUNCTION(0, "GPIO179")
9350 + ),
9351 +};
9352 +
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
9357 --- /dev/null
9358 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6797.h
9359 @@ -0,0 +1,2429 @@
9360 +/* SPDX-License-Identifier: GPL-2.0 */
9361 +/*
9362 + * Based on pinctrl-mtk-mt6765.h
9363 + *
9364 + * Copyright (C) 2018 MediaTek Inc.
9365 + *
9366 + * Author: ZH Chen <zh.chen@mediatek.com>
9367 + *
9368 + * Copyright (c) 2018 Manivannan Sadhasivam
9369 + */
9370 +
9371 +#ifndef __PINCTRL_MTK_MT6797_H
9372 +#define __PINCTRL_MTK_MT6797_H
9373 +
9374 +#include "pinctrl-paris.h"
9375 +
9376 +static const struct mtk_pin_desc mtk_pins_mt6797[] = {
9377 + MTK_PIN(
9378 + 0, "GPIO0",
9379 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9380 + DRV_GRP3,
9381 + MTK_FUNCTION(0, "GPIO0"),
9382 + MTK_FUNCTION(1, "CSI0A_L0P_T0A")
9383 + ),
9384 + MTK_PIN(
9385 + 1, "GPIO1",
9386 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9387 + DRV_GRP3,
9388 + MTK_FUNCTION(0, "GPIO1"),
9389 + MTK_FUNCTION(1, "CSI0A_L0N_T0B")
9390 + ),
9391 + MTK_PIN(
9392 + 2, "GPIO2",
9393 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9394 + DRV_GRP3,
9395 + MTK_FUNCTION(0, "GPIO2"),
9396 + MTK_FUNCTION(1, "CSI0A_L1P_T0C")
9397 + ),
9398 + MTK_PIN(
9399 + 3, "GPIO3",
9400 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9401 + DRV_GRP3,
9402 + MTK_FUNCTION(0, "GPIO3"),
9403 + MTK_FUNCTION(1, "CSI0A_L1N_T1A")
9404 + ),
9405 + MTK_PIN(
9406 + 4, "GPIO4",
9407 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9408 + DRV_GRP3,
9409 + MTK_FUNCTION(0, "GPIO4"),
9410 + MTK_FUNCTION(1, "CSI0A_L2P_T1B")
9411 + ),
9412 + MTK_PIN(
9413 + 5, "GPIO5",
9414 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9415 + DRV_GRP3,
9416 + MTK_FUNCTION(0, "GPIO5"),
9417 + MTK_FUNCTION(1, "CSI0A_L2N_T1C")
9418 + ),
9419 + MTK_PIN(
9420 + 6, "GPIO6",
9421 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9422 + DRV_GRP3,
9423 + MTK_FUNCTION(0, "GPIO6"),
9424 + MTK_FUNCTION(1, "CSI0B_L0P_T0A")
9425 + ),
9426 + MTK_PIN(
9427 + 7, "GPIO7",
9428 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9429 + DRV_GRP3,
9430 + MTK_FUNCTION(0, "GPIO7"),
9431 + MTK_FUNCTION(1, "CSI0B_L0N_T0B")
9432 + ),
9433 + MTK_PIN(
9434 + 8, "GPIO8",
9435 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9436 + DRV_GRP3,
9437 + MTK_FUNCTION(0, "GPIO8"),
9438 + MTK_FUNCTION(1, "CSI0B_L1P_T0C")
9439 + ),
9440 + MTK_PIN(
9441 + 9, "GPIO9",
9442 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9443 + DRV_GRP3,
9444 + MTK_FUNCTION(0, "GPIO9"),
9445 + MTK_FUNCTION(1, "CSI0B_L1N_T1A")
9446 + ),
9447 + MTK_PIN(
9448 + 10, "GPIO10",
9449 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9450 + DRV_GRP3,
9451 + MTK_FUNCTION(0, "GPIO10"),
9452 + MTK_FUNCTION(1, "CSI1A_L0P_T0A")
9453 + ),
9454 + MTK_PIN(
9455 + 11, "GPIO11",
9456 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9457 + DRV_GRP3,
9458 + MTK_FUNCTION(0, "GPIO11"),
9459 + MTK_FUNCTION(1, "CSI1A_L0N_T0B")
9460 + ),
9461 + MTK_PIN(
9462 + 12, "GPIO12",
9463 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9464 + DRV_GRP3,
9465 + MTK_FUNCTION(0, "GPIO12"),
9466 + MTK_FUNCTION(1, "CSI1A_L1P_T0C")
9467 + ),
9468 + MTK_PIN(
9469 + 13, "GPIO13",
9470 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9471 + DRV_GRP3,
9472 + MTK_FUNCTION(0, "GPIO13"),
9473 + MTK_FUNCTION(1, "CSI1A_L1N_T1A")
9474 + ),
9475 + MTK_PIN(
9476 + 14, "GPIO14",
9477 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9478 + DRV_GRP3,
9479 + MTK_FUNCTION(0, "GPIO14"),
9480 + MTK_FUNCTION(1, "CSI1A_L2P_T1B")
9481 + ),
9482 + MTK_PIN(
9483 + 15, "GPIO15",
9484 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9485 + DRV_GRP3,
9486 + MTK_FUNCTION(0, "GPIO15"),
9487 + MTK_FUNCTION(1, "CSI1A_L2N_T1C")
9488 + ),
9489 + MTK_PIN(
9490 + 16, "GPIO16",
9491 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9492 + DRV_GRP3,
9493 + MTK_FUNCTION(0, "GPIO16"),
9494 + MTK_FUNCTION(1, "CSI1B_L0P_T0A")
9495 + ),
9496 + MTK_PIN(
9497 + 17, "GPIO17",
9498 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9499 + DRV_GRP3,
9500 + MTK_FUNCTION(0, "GPIO17"),
9501 + MTK_FUNCTION(1, "CSI1B_L0N_T0B")
9502 + ),
9503 + MTK_PIN(
9504 + 18, "GPIO18",
9505 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9506 + DRV_GRP3,
9507 + MTK_FUNCTION(0, "GPIO18"),
9508 + MTK_FUNCTION(1, "CSI1B_L1P_T0C")
9509 + ),
9510 + MTK_PIN(
9511 + 19, "GPIO19",
9512 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9513 + DRV_GRP3,
9514 + MTK_FUNCTION(0, "GPIO19"),
9515 + MTK_FUNCTION(1, "CSI1B_L1N_T1A")
9516 + ),
9517 + MTK_PIN(
9518 + 20, "GPIO20",
9519 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9520 + DRV_GRP3,
9521 + MTK_FUNCTION(0, "GPIO20"),
9522 + MTK_FUNCTION(1, "CSI1B_L2P_T1B")
9523 + ),
9524 + MTK_PIN(
9525 + 21, "GPIO21",
9526 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9527 + DRV_GRP3,
9528 + MTK_FUNCTION(0, "GPIO21"),
9529 + MTK_FUNCTION(1, "CSI1B_L2N_T1C")
9530 + ),
9531 + MTK_PIN(
9532 + 22, "GPIO22",
9533 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9534 + DRV_GRP3,
9535 + MTK_FUNCTION(0, "GPIO22"),
9536 + MTK_FUNCTION(1, "CSI2_L0P_T0A")
9537 + ),
9538 + MTK_PIN(
9539 + 23, "GPIO23",
9540 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9541 + DRV_GRP3,
9542 + MTK_FUNCTION(0, "GPIO23"),
9543 + MTK_FUNCTION(1, "CSI2_L0N_T0B")
9544 + ),
9545 + MTK_PIN(
9546 + 24, "GPIO24",
9547 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9548 + DRV_GRP3,
9549 + MTK_FUNCTION(0, "GPIO24"),
9550 + MTK_FUNCTION(1, "CSI2_L1P_T0C")
9551 + ),
9552 + MTK_PIN(
9553 + 25, "GPIO25",
9554 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9555 + DRV_GRP3,
9556 + MTK_FUNCTION(0, "GPIO25"),
9557 + MTK_FUNCTION(1, "CSI2_L1N_T1A")
9558 + ),
9559 + MTK_PIN(
9560 + 26, "GPIO26",
9561 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9562 + DRV_GRP3,
9563 + MTK_FUNCTION(0, "GPIO26"),
9564 + MTK_FUNCTION(1, "CSI2_L2P_T1B")
9565 + ),
9566 + MTK_PIN(
9567 + 27, "GPIO27",
9568 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9569 + DRV_GRP3,
9570 + MTK_FUNCTION(0, "GPIO27"),
9571 + MTK_FUNCTION(1, "CSI2_L2N_T1C")
9572 + ),
9573 + MTK_PIN(
9574 + 28, "GPIO28",
9575 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9576 + DRV_GRP3,
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")
9585 + ),
9586 + MTK_PIN(
9587 + 29, "GPIO29",
9588 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9589 + DRV_GRP3,
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")
9598 + ),
9599 + MTK_PIN(
9600 + 30, "GPIO30",
9601 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9602 + DRV_GRP3,
9603 + MTK_FUNCTION(0, "GPIO30"),
9604 + MTK_FUNCTION(1, "CMMCLK0"),
9605 + MTK_FUNCTION(7, "MD_CLKM0")
9606 + ),
9607 + MTK_PIN(
9608 + 31, "GPIO31",
9609 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9610 + DRV_GRP3,
9611 + MTK_FUNCTION(0, "GPIO31"),
9612 + MTK_FUNCTION(1, "CMMCLK1"),
9613 + MTK_FUNCTION(7, "MD_CLKM1")
9614 + ),
9615 + MTK_PIN(
9616 + 32, "GPIO32",
9617 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9618 + DRV_GRP3,
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")
9627 + ),
9628 + MTK_PIN(
9629 + 33, "GPIO33",
9630 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9631 + DRV_GRP3,
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")
9640 + ),
9641 + MTK_PIN(
9642 + 34, "GPIO34",
9643 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9644 + DRV_GRP3,
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")
9653 + ),
9654 + MTK_PIN(
9655 + 35, "GPIO35",
9656 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9657 + DRV_GRP3,
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")
9666 + ),
9667 + MTK_PIN(
9668 + 36, "GPIO36",
9669 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9670 + DRV_GRP3,
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")
9679 + ),
9680 + MTK_PIN(
9681 + 37, "GPIO37",
9682 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9683 + DRV_GRP3,
9684 + MTK_FUNCTION(0, "GPIO37"),
9685 + MTK_FUNCTION(1, "SCL0_0")
9686 + ),
9687 + MTK_PIN(
9688 + 38, "GPIO38",
9689 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9690 + DRV_GRP3,
9691 + MTK_FUNCTION(0, "GPIO38"),
9692 + MTK_FUNCTION(1, "SDA0_0")
9693 + ),
9694 + MTK_PIN(
9695 + 39, "GPIO39",
9696 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9697 + DRV_GRP3,
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")
9706 + ),
9707 + MTK_PIN(
9708 + 40, "GPIO40",
9709 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9710 + DRV_GRP3,
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")
9719 + ),
9720 + MTK_PIN(
9721 + 41, "GPIO41",
9722 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9723 + DRV_GRP3,
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")
9732 + ),
9733 + MTK_PIN(
9734 + 42, "GPIO42",
9735 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9736 + DRV_GRP3,
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")
9745 + ),
9746 + MTK_PIN(
9747 + 43, "GPIO43",
9748 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9749 + DRV_GRP3,
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")
9758 + ),
9759 + MTK_PIN(
9760 + 44, "GPIO44",
9761 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9762 + DRV_GRP3,
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")
9771 + ),
9772 + MTK_PIN(
9773 + 45, "GPIO45",
9774 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9775 + DRV_GRP3,
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")
9783 + ),
9784 + MTK_PIN(
9785 + 46, "GPIO46",
9786 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9787 + DRV_GRP3,
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")
9795 + ),
9796 + MTK_PIN(
9797 + 47, "GPIO47",
9798 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9799 + DRV_GRP3,
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")
9808 + ),
9809 + MTK_PIN(
9810 + 48, "GPIO48",
9811 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9812 + DRV_GRP3,
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")
9821 + ),
9822 + MTK_PIN(
9823 + 49, "GPIO49",
9824 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9825 + DRV_GRP3,
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")
9833 + ),
9834 + MTK_PIN(
9835 + 50, "GPIO50",
9836 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9837 + DRV_GRP3,
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")
9845 + ),
9846 + MTK_PIN(
9847 + 51, "GPIO51",
9848 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9849 + DRV_GRP3,
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")
9857 + ),
9858 + MTK_PIN(
9859 + 52, "GPIO52",
9860 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9861 + DRV_GRP3,
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")
9869 + ),
9870 + MTK_PIN(
9871 + 53, "GPIO53",
9872 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9873 + DRV_GRP3,
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")
9882 + ),
9883 + MTK_PIN(
9884 + 54, "GPIO54",
9885 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9886 + DRV_GRP3,
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")
9895 + ),
9896 + MTK_PIN(
9897 + 55, "GPIO55",
9898 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9899 + DRV_GRP3,
9900 + MTK_FUNCTION(0, "GPIO55"),
9901 + MTK_FUNCTION(1, "SCL1_0")
9902 + ),
9903 + MTK_PIN(
9904 + 56, "GPIO56",
9905 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9906 + DRV_GRP3,
9907 + MTK_FUNCTION(0, "GPIO56"),
9908 + MTK_FUNCTION(1, "SDA1_0")
9909 + ),
9910 + MTK_PIN(
9911 + 57, "GPIO57",
9912 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9913 + DRV_GRP3,
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")
9920 + ),
9921 + MTK_PIN(
9922 + 58, "GPIO58",
9923 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9924 + DRV_GRP3,
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")
9931 + ),
9932 + MTK_PIN(
9933 + 59, "GPIO59",
9934 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9935 + DRV_GRP3,
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")
9942 + ),
9943 + MTK_PIN(
9944 + 60, "GPIO60",
9945 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9946 + DRV_GRP3,
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")
9953 + ),
9954 + MTK_PIN(
9955 + 61, "GPIO61",
9956 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9957 + DRV_GRP3,
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")
9965 + ),
9966 + MTK_PIN(
9967 + 62, "GPIO62",
9968 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9969 + DRV_GRP3,
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")
9977 + ),
9978 + MTK_PIN(
9979 + 63, "GPIO63",
9980 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9981 + DRV_GRP3,
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")
9989 + ),
9990 + MTK_PIN(
9991 + 64, "GPIO64",
9992 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
9993 + DRV_GRP3,
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")
10001 + ),
10002 + MTK_PIN(
10003 + 65, "GPIO65",
10004 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10005 + DRV_GRP3,
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")
10013 + ),
10014 + MTK_PIN(
10015 + 66, "GPIO66",
10016 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10017 + DRV_GRP3,
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")
10025 + ),
10026 + MTK_PIN(
10027 + 67, "GPIO67",
10028 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10029 + DRV_GRP3,
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")
10037 + ),
10038 + MTK_PIN(
10039 + 68, "GPIO68",
10040 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10041 + DRV_GRP3,
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")
10049 + ),
10050 + MTK_PIN(
10051 + 69, "GPIO69",
10052 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10053 + DRV_GRP3,
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")
10060 + ),
10061 + MTK_PIN(
10062 + 70, "GPIO70",
10063 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10064 + DRV_GRP3,
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")
10071 + ),
10072 + MTK_PIN(
10073 + 71, "GPIO71",
10074 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10075 + DRV_GRP3,
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")
10082 + ),
10083 + MTK_PIN(
10084 + 72, "GPIO72",
10085 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10086 + DRV_GRP3,
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")
10093 + ),
10094 + MTK_PIN(
10095 + 73, "GPIO73",
10096 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10097 + DRV_GRP3,
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")
10104 + ),
10105 + MTK_PIN(
10106 + 74, "GPIO74",
10107 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10108 + DRV_GRP3,
10109 + MTK_FUNCTION(0, "GPIO74"),
10110 + MTK_FUNCTION(1, "SCL3_0"),
10111 + MTK_FUNCTION(7, "AUXIF_CLK1")
10112 + ),
10113 + MTK_PIN(
10114 + 75, "GPIO75",
10115 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10116 + DRV_GRP3,
10117 + MTK_FUNCTION(0, "GPIO75"),
10118 + MTK_FUNCTION(1, "SDA3_0"),
10119 + MTK_FUNCTION(7, "AUXIF_ST1")
10120 + ),
10121 + MTK_PIN(
10122 + 76, "GPIO76",
10123 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10124 + DRV_GRP3,
10125 + MTK_FUNCTION(0, "GPIO76"),
10126 + MTK_FUNCTION(1, "CONN_HRST_B"),
10127 + MTK_FUNCTION(7, "C2K_DM_EINT0")
10128 + ),
10129 + MTK_PIN(
10130 + 77, "GPIO77",
10131 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10132 + DRV_GRP3,
10133 + MTK_FUNCTION(0, "GPIO77"),
10134 + MTK_FUNCTION(1, "CONN_TOP_CLK"),
10135 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10136 + ),
10137 + MTK_PIN(
10138 + 78, "GPIO78",
10139 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10140 + DRV_GRP3,
10141 + MTK_FUNCTION(0, "GPIO78"),
10142 + MTK_FUNCTION(1, "CONN_TOP_DATA"),
10143 + MTK_FUNCTION(7, "C2K_DM_EINT2")
10144 + ),
10145 + MTK_PIN(
10146 + 79, "GPIO79",
10147 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10148 + DRV_GRP3,
10149 + MTK_FUNCTION(0, "GPIO79"),
10150 + MTK_FUNCTION(1, "CONN_WB_PTA"),
10151 + MTK_FUNCTION(7, "C2K_DM_EINT3")
10152 + ),
10153 + MTK_PIN(
10154 + 80, "GPIO80",
10155 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10156 + DRV_GRP3,
10157 + MTK_FUNCTION(0, "GPIO80"),
10158 + MTK_FUNCTION(1, "CONN_WF_HB0"),
10159 + MTK_FUNCTION(7, "C2K_EINT0")
10160 + ),
10161 + MTK_PIN(
10162 + 81, "GPIO81",
10163 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10164 + DRV_GRP3,
10165 + MTK_FUNCTION(0, "GPIO81"),
10166 + MTK_FUNCTION(1, "CONN_WF_HB1"),
10167 + MTK_FUNCTION(7, "C2K_EINT1")
10168 + ),
10169 + MTK_PIN(
10170 + 82, "GPIO82",
10171 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10172 + DRV_GRP3,
10173 + MTK_FUNCTION(0, "GPIO82"),
10174 + MTK_FUNCTION(1, "CONN_WF_HB2"),
10175 + MTK_FUNCTION(7, "MD_CLKM0")
10176 + ),
10177 + MTK_PIN(
10178 + 83, "GPIO83",
10179 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10180 + DRV_GRP3,
10181 + MTK_FUNCTION(0, "GPIO83"),
10182 + MTK_FUNCTION(1, "CONN_BT_CLK"),
10183 + MTK_FUNCTION(7, "MD_CLKM1")
10184 + ),
10185 + MTK_PIN(
10186 + 84, "GPIO84",
10187 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10188 + DRV_GRP3,
10189 + MTK_FUNCTION(0, "GPIO84"),
10190 + MTK_FUNCTION(1, "CONN_BT_DATA")
10191 + ),
10192 + MTK_PIN(
10193 + 85, "GPIO85",
10194 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10195 + DRV_GRP3,
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")
10203 + ),
10204 + MTK_PIN(
10205 + 86, "GPIO86",
10206 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10207 + DRV_GRP3,
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")
10215 + ),
10216 + MTK_PIN(
10217 + 87, "GPIO87",
10218 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10219 + DRV_GRP3,
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")
10227 + ),
10228 + MTK_PIN(
10229 + 88, "GPIO88",
10230 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10231 + DRV_GRP3,
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")
10239 + ),
10240 + MTK_PIN(
10241 + 89, "GPIO89",
10242 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10243 + DRV_GRP3,
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")
10251 + ),
10252 + MTK_PIN(
10253 + 90, "GPIO90",
10254 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10255 + DRV_GRP3,
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")
10263 + ),
10264 + MTK_PIN(
10265 + 91, "GPIO91",
10266 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10267 + DRV_GRP3,
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")
10275 + ),
10276 + MTK_PIN(
10277 + 92, "GPIO92",
10278 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10279 + DRV_GRP3,
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")
10286 + ),
10287 + MTK_PIN(
10288 + 93, "GPIO93",
10289 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10290 + DRV_GRP3,
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")
10298 + ),
10299 + MTK_PIN(
10300 + 94, "GPIO94",
10301 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10302 + DRV_GRP3,
10303 + MTK_FUNCTION(0, "GPIO94"),
10304 + MTK_FUNCTION(1, "USB_DRVVBUS"),
10305 + MTK_FUNCTION(2, "PWM_C"),
10306 + MTK_FUNCTION(3, "CLKM5")
10307 + ),
10308 + MTK_PIN(
10309 + 95, "GPIO95",
10310 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10311 + DRV_GRP3,
10312 + MTK_FUNCTION(0, "GPIO95"),
10313 + MTK_FUNCTION(1, "SDA2_0"),
10314 + MTK_FUNCTION(7, "AUXIF_ST0")
10315 + ),
10316 + MTK_PIN(
10317 + 96, "GPIO96",
10318 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10319 + DRV_GRP3,
10320 + MTK_FUNCTION(0, "GPIO96"),
10321 + MTK_FUNCTION(1, "SCL2_0"),
10322 + MTK_FUNCTION(7, "AUXIF_CLK0")
10323 + ),
10324 + MTK_PIN(
10325 + 97, "GPIO97",
10326 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10327 + DRV_GRP3,
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")
10336 + ),
10337 + MTK_PIN(
10338 + 98, "GPIO98",
10339 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10340 + DRV_GRP3,
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")
10349 + ),
10350 + MTK_PIN(
10351 + 99, "GPIO99",
10352 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10353 + DRV_GRP3,
10354 + MTK_FUNCTION(0, "GPIO99"),
10355 + MTK_FUNCTION(1, "RTC32K_CK")
10356 + ),
10357 + MTK_PIN(
10358 + 100, "GPIO100",
10359 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10360 + DRV_GRP3,
10361 + MTK_FUNCTION(0, "GPIO100"),
10362 + MTK_FUNCTION(1, "SRCLKENAI0")
10363 + ),
10364 + MTK_PIN(
10365 + 101, "GPIO101",
10366 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10367 + DRV_GRP3,
10368 + MTK_FUNCTION(0, "GPIO101"),
10369 + MTK_FUNCTION(1, "SRCLKENAI1")
10370 + ),
10371 + MTK_PIN(
10372 + 102, "GPIO102",
10373 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10374 + DRV_GRP3,
10375 + MTK_FUNCTION(0, "GPIO102"),
10376 + MTK_FUNCTION(1, "SRCLKENA0")
10377 + ),
10378 + MTK_PIN(
10379 + 103, "GPIO103",
10380 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10381 + DRV_GRP3,
10382 + MTK_FUNCTION(0, "GPIO103"),
10383 + MTK_FUNCTION(1, "SRCLKENA1")
10384 + ),
10385 + MTK_PIN(
10386 + 104, "GPIO104",
10387 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10388 + DRV_GRP3,
10389 + MTK_FUNCTION(0, "GPIO104"),
10390 + MTK_FUNCTION(1, "SYSRSTB")
10391 + ),
10392 + MTK_PIN(
10393 + 105, "GPIO105",
10394 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10395 + DRV_GRP3,
10396 + MTK_FUNCTION(0, "GPIO105"),
10397 + MTK_FUNCTION(1, "WATCHDOG")
10398 + ),
10399 + MTK_PIN(
10400 + 106, "GPIO106",
10401 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10402 + DRV_GRP3,
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")
10409 + ),
10410 + MTK_PIN(
10411 + 107, "GPIO107",
10412 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10413 + DRV_GRP3,
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")
10421 + ),
10422 + MTK_PIN(
10423 + 108, "GPIO108",
10424 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10425 + DRV_GRP3,
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")
10433 + ),
10434 + MTK_PIN(
10435 + 109, "GPIO109",
10436 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10437 + DRV_GRP3,
10438 + MTK_FUNCTION(0, "GPIO109"),
10439 + MTK_FUNCTION(1, "KPCOL0")
10440 + ),
10441 + MTK_PIN(
10442 + 110, "GPIO110",
10443 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10444 + DRV_GRP3,
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")
10452 + ),
10453 + MTK_PIN(
10454 + 111, "GPIO111",
10455 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10456 + DRV_GRP3,
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")
10464 + ),
10465 + MTK_PIN(
10466 + 112, "GPIO112",
10467 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10468 + DRV_GRP3,
10469 + MTK_FUNCTION(0, "GPIO112"),
10470 + MTK_FUNCTION(1, "MD_INT1_C2K_UIM1_HOT_PLUG_IN"),
10471 + MTK_FUNCTION(7, "C2K_DM_EINT1")
10472 + ),
10473 + MTK_PIN(
10474 + 113, "GPIO113",
10475 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10476 + DRV_GRP3,
10477 + MTK_FUNCTION(0, "GPIO113"),
10478 + MTK_FUNCTION(1, "MD_INT0_C2K_UIM0_HOT_PLUG_IN"),
10479 + MTK_FUNCTION(7, "C2K_DM_EINT0")
10480 + ),
10481 + MTK_PIN(
10482 + 114, "GPIO114",
10483 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10484 + DRV_GRP3,
10485 + MTK_FUNCTION(0, "GPIO114"),
10486 + MTK_FUNCTION(1, "MSDC0_DAT0")
10487 + ),
10488 + MTK_PIN(
10489 + 115, "GPIO115",
10490 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10491 + DRV_GRP3,
10492 + MTK_FUNCTION(0, "GPIO115"),
10493 + MTK_FUNCTION(1, "MSDC0_DAT1")
10494 + ),
10495 + MTK_PIN(
10496 + 116, "GPIO116",
10497 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10498 + DRV_GRP3,
10499 + MTK_FUNCTION(0, "GPIO116"),
10500 + MTK_FUNCTION(1, "MSDC0_DAT2")
10501 + ),
10502 + MTK_PIN(
10503 + 117, "GPIO117",
10504 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10505 + DRV_GRP3,
10506 + MTK_FUNCTION(0, "GPIO117"),
10507 + MTK_FUNCTION(1, "MSDC0_DAT3")
10508 + ),
10509 + MTK_PIN(
10510 + 118, "GPIO118",
10511 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10512 + DRV_GRP3,
10513 + MTK_FUNCTION(0, "GPIO118"),
10514 + MTK_FUNCTION(1, "MSDC0_DAT4")
10515 + ),
10516 + MTK_PIN(
10517 + 119, "GPIO119",
10518 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10519 + DRV_GRP3,
10520 + MTK_FUNCTION(0, "GPIO119"),
10521 + MTK_FUNCTION(1, "MSDC0_DAT5")
10522 + ),
10523 + MTK_PIN(
10524 + 120, "GPIO120",
10525 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10526 + DRV_GRP3,
10527 + MTK_FUNCTION(0, "GPIO120"),
10528 + MTK_FUNCTION(1, "MSDC0_DAT6")
10529 + ),
10530 + MTK_PIN(
10531 + 121, "GPIO121",
10532 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10533 + DRV_GRP3,
10534 + MTK_FUNCTION(0, "GPIO121"),
10535 + MTK_FUNCTION(1, "MSDC0_DAT7")
10536 + ),
10537 + MTK_PIN(
10538 + 122, "GPIO122",
10539 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10540 + DRV_GRP3,
10541 + MTK_FUNCTION(0, "GPIO122"),
10542 + MTK_FUNCTION(1, "MSDC0_CMD")
10543 + ),
10544 + MTK_PIN(
10545 + 123, "GPIO123",
10546 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10547 + DRV_GRP3,
10548 + MTK_FUNCTION(0, "GPIO123"),
10549 + MTK_FUNCTION(1, "MSDC0_CLK")
10550 + ),
10551 + MTK_PIN(
10552 + 124, "GPIO124",
10553 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10554 + DRV_GRP3,
10555 + MTK_FUNCTION(0, "GPIO124"),
10556 + MTK_FUNCTION(1, "MSDC0_DSL")
10557 + ),
10558 + MTK_PIN(
10559 + 125, "GPIO125",
10560 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10561 + DRV_GRP3,
10562 + MTK_FUNCTION(0, "GPIO125"),
10563 + MTK_FUNCTION(1, "MSDC0_RSTB")
10564 + ),
10565 + MTK_PIN(
10566 + 126, "GPIO126",
10567 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10568 + DRV_GRP3,
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")
10574 + ),
10575 + MTK_PIN(
10576 + 127, "GPIO127",
10577 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10578 + DRV_GRP3,
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")
10584 + ),
10585 + MTK_PIN(
10586 + 128, "GPIO128",
10587 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10588 + DRV_GRP3,
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")
10594 + ),
10595 + MTK_PIN(
10596 + 129, "GPIO129",
10597 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10598 + DRV_GRP3,
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")
10605 + ),
10606 + MTK_PIN(
10607 + 130, "GPIO130",
10608 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10609 + DRV_GRP3,
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")
10616 + ),
10617 + MTK_PIN(
10618 + 131, "GPIO131",
10619 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10620 + DRV_GRP3,
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")
10627 + ),
10628 + MTK_PIN(
10629 + 132, "GPIO132",
10630 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10631 + DRV_GRP3,
10632 + MTK_FUNCTION(0, "GPIO132"),
10633 + MTK_FUNCTION(1, "MSDC1_DAT2"),
10634 + MTK_FUNCTION(5, "C2K_RTCK")
10635 + ),
10636 + MTK_PIN(
10637 + 133, "GPIO133",
10638 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10639 + DRV_GRP3,
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")
10646 + ),
10647 + MTK_PIN(
10648 + 134, "GPIO134",
10649 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10650 + DRV_GRP3,
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")
10657 + ),
10658 + MTK_PIN(
10659 + 135, "GPIO135",
10660 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10661 + DRV_GRP3,
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")
10669 + ),
10670 + MTK_PIN(
10671 + 136, "GPIO136",
10672 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10673 + DRV_GRP3,
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")
10681 + ),
10682 + MTK_PIN(
10683 + 137, "GPIO137",
10684 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10685 + DRV_GRP3,
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")
10693 + ),
10694 + MTK_PIN(
10695 + 138, "GPIO138",
10696 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10697 + DRV_GRP3,
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")
10706 + ),
10707 + MTK_PIN(
10708 + 139, "GPIO139",
10709 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10710 + DRV_GRP3,
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")
10719 + ),
10720 + MTK_PIN(
10721 + 140, "GPIO140",
10722 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10723 + DRV_GRP3,
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")
10732 + ),
10733 + MTK_PIN(
10734 + 141, "GPIO141",
10735 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10736 + DRV_GRP3,
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")
10745 + ),
10746 + MTK_PIN(
10747 + 142, "GPIO142",
10748 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10749 + DRV_GRP3,
10750 + MTK_FUNCTION(0, "GPIO142"),
10751 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
10752 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
10753 + ),
10754 + MTK_PIN(
10755 + 143, "GPIO143",
10756 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10757 + DRV_GRP3,
10758 + MTK_FUNCTION(0, "GPIO143"),
10759 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
10760 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
10761 + ),
10762 + MTK_PIN(
10763 + 144, "GPIO144",
10764 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10765 + DRV_GRP3,
10766 + MTK_FUNCTION(0, "GPIO144"),
10767 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
10768 + ),
10769 + MTK_PIN(
10770 + 145, "GPIO145",
10771 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10772 + DRV_GRP3,
10773 + MTK_FUNCTION(0, "GPIO145"),
10774 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
10775 + ),
10776 + MTK_PIN(
10777 + 146, "GPIO146",
10778 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10779 + DRV_GRP3,
10780 + MTK_FUNCTION(0, "GPIO146"),
10781 + MTK_FUNCTION(1, "AUD_CLK_MOSI")
10782 + ),
10783 + MTK_PIN(
10784 + 147, "GPIO147",
10785 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10786 + DRV_GRP3,
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")
10791 + ),
10792 + MTK_PIN(
10793 + 148, "GPIO148",
10794 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10795 + DRV_GRP3,
10796 + MTK_FUNCTION(0, "GPIO148"),
10797 + MTK_FUNCTION(1, "AUD_DAT_MOSI"),
10798 + MTK_FUNCTION(2, "AUD_DAT_MISO")
10799 + ),
10800 + MTK_PIN(
10801 + 149, "GPIO149",
10802 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10803 + DRV_GRP3,
10804 + MTK_FUNCTION(0, "GPIO149"),
10805 + MTK_FUNCTION(1, "VOW_CLK_MISO")
10806 + ),
10807 + MTK_PIN(
10808 + 150, "GPIO150",
10809 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10810 + DRV_GRP3,
10811 + MTK_FUNCTION(0, "GPIO150"),
10812 + MTK_FUNCTION(1, "ANC_DAT_MOSI")
10813 + ),
10814 + MTK_PIN(
10815 + 151, "GPIO151",
10816 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10817 + DRV_GRP3,
10818 + MTK_FUNCTION(0, "GPIO151"),
10819 + MTK_FUNCTION(1, "SCL6_0")
10820 + ),
10821 + MTK_PIN(
10822 + 152, "GPIO152",
10823 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10824 + DRV_GRP3,
10825 + MTK_FUNCTION(0, "GPIO152"),
10826 + MTK_FUNCTION(1, "SDA6_0")
10827 + ),
10828 + MTK_PIN(
10829 + 153, "GPIO153",
10830 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10831 + DRV_GRP3,
10832 + MTK_FUNCTION(0, "GPIO153"),
10833 + MTK_FUNCTION(1, "SCL7_0")
10834 + ),
10835 + MTK_PIN(
10836 + 154, "GPIO154",
10837 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10838 + DRV_GRP3,
10839 + MTK_FUNCTION(0, "GPIO154"),
10840 + MTK_FUNCTION(1, "SDA7_0")
10841 + ),
10842 + MTK_PIN(
10843 + 155, "GPIO155",
10844 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10845 + DRV_GRP3,
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")
10851 + ),
10852 + MTK_PIN(
10853 + 156, "GPIO156",
10854 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10855 + DRV_GRP3,
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")
10861 + ),
10862 + MTK_PIN(
10863 + 157, "GPIO157",
10864 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10865 + DRV_GRP3,
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")
10871 + ),
10872 + MTK_PIN(
10873 + 158, "GPIO158",
10874 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10875 + DRV_GRP3,
10876 + MTK_FUNCTION(0, "GPIO158"),
10877 + MTK_FUNCTION(1, "MIPI_TDP0")
10878 + ),
10879 + MTK_PIN(
10880 + 159, "GPIO159",
10881 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10882 + DRV_GRP3,
10883 + MTK_FUNCTION(0, "GPIO159"),
10884 + MTK_FUNCTION(1, "MIPI_TDN0")
10885 + ),
10886 + MTK_PIN(
10887 + 160, "GPIO160",
10888 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10889 + DRV_GRP3,
10890 + MTK_FUNCTION(0, "GPIO160"),
10891 + MTK_FUNCTION(1, "MIPI_TDP1")
10892 + ),
10893 + MTK_PIN(
10894 + 161, "GPIO161",
10895 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10896 + DRV_GRP3,
10897 + MTK_FUNCTION(0, "GPIO161"),
10898 + MTK_FUNCTION(1, "MIPI_TDN1")
10899 + ),
10900 + MTK_PIN(
10901 + 162, "GPIO162",
10902 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10903 + DRV_GRP3,
10904 + MTK_FUNCTION(0, "GPIO162"),
10905 + MTK_FUNCTION(1, "MIPI_TCP")
10906 + ),
10907 + MTK_PIN(
10908 + 163, "GPIO163",
10909 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10910 + DRV_GRP3,
10911 + MTK_FUNCTION(0, "GPIO163"),
10912 + MTK_FUNCTION(1, "MIPI_TCN")
10913 + ),
10914 + MTK_PIN(
10915 + 164, "GPIO164",
10916 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10917 + DRV_GRP3,
10918 + MTK_FUNCTION(0, "GPIO164"),
10919 + MTK_FUNCTION(1, "MIPI_TDP2")
10920 + ),
10921 + MTK_PIN(
10922 + 165, "GPIO165",
10923 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10924 + DRV_GRP3,
10925 + MTK_FUNCTION(0, "GPIO165"),
10926 + MTK_FUNCTION(1, "MIPI_TDN2")
10927 + ),
10928 + MTK_PIN(
10929 + 166, "GPIO166",
10930 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10931 + DRV_GRP3,
10932 + MTK_FUNCTION(0, "GPIO166"),
10933 + MTK_FUNCTION(1, "MIPI_TDP3")
10934 + ),
10935 + MTK_PIN(
10936 + 167, "GPIO167",
10937 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10938 + DRV_GRP3,
10939 + MTK_FUNCTION(0, "GPIO167"),
10940 + MTK_FUNCTION(1, "MIPI_TDN3")
10941 + ),
10942 + MTK_PIN(
10943 + 168, "GPIO168",
10944 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10945 + DRV_GRP3,
10946 + MTK_FUNCTION(0, "GPIO168"),
10947 + MTK_FUNCTION(1, "MIPI_TDP0_A")
10948 + ),
10949 + MTK_PIN(
10950 + 169, "GPIO169",
10951 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10952 + DRV_GRP3,
10953 + MTK_FUNCTION(0, "GPIO169"),
10954 + MTK_FUNCTION(1, "MIPI_TDN0_A")
10955 + ),
10956 + MTK_PIN(
10957 + 170, "GPIO170",
10958 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10959 + DRV_GRP3,
10960 + MTK_FUNCTION(0, "GPIO170"),
10961 + MTK_FUNCTION(1, "MIPI_TDP1_A")
10962 + ),
10963 + MTK_PIN(
10964 + 171, "GPIO171",
10965 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10966 + DRV_GRP3,
10967 + MTK_FUNCTION(0, "GPIO171"),
10968 + MTK_FUNCTION(1, "MIPI_TDN1_A")
10969 + ),
10970 + MTK_PIN(
10971 + 172, "GPIO172",
10972 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10973 + DRV_GRP3,
10974 + MTK_FUNCTION(0, "GPIO172"),
10975 + MTK_FUNCTION(1, "MIPI_TCP_A")
10976 + ),
10977 + MTK_PIN(
10978 + 173, "GPIO173",
10979 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10980 + DRV_GRP3,
10981 + MTK_FUNCTION(0, "GPIO173"),
10982 + MTK_FUNCTION(1, "MIPI_TCN_A")
10983 + ),
10984 + MTK_PIN(
10985 + 174, "GPIO174",
10986 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10987 + DRV_GRP3,
10988 + MTK_FUNCTION(0, "GPIO174"),
10989 + MTK_FUNCTION(1, "MIPI_TDP2_A")
10990 + ),
10991 + MTK_PIN(
10992 + 175, "GPIO175",
10993 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
10994 + DRV_GRP3,
10995 + MTK_FUNCTION(0, "GPIO175"),
10996 + MTK_FUNCTION(1, "MIPI_TDN2_A")
10997 + ),
10998 + MTK_PIN(
10999 + 176, "GPIO176",
11000 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11001 + DRV_GRP3,
11002 + MTK_FUNCTION(0, "GPIO176"),
11003 + MTK_FUNCTION(1, "MIPI_TDP3_A")
11004 + ),
11005 + MTK_PIN(
11006 + 177, "GPIO177",
11007 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11008 + DRV_GRP3,
11009 + MTK_FUNCTION(0, "GPIO177"),
11010 + MTK_FUNCTION(1, "MIPI_TDN3_A")
11011 + ),
11012 + MTK_PIN(
11013 + 178, "GPIO178",
11014 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11015 + DRV_GRP3,
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")
11021 + ),
11022 + MTK_PIN(
11023 + 179, "GPIO179",
11024 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11025 + DRV_GRP3,
11026 + MTK_FUNCTION(0, "GPIO179"),
11027 + MTK_FUNCTION(1, "DSI_TE0"),
11028 + MTK_FUNCTION(7, "DBG_MON_A20")
11029 + ),
11030 + MTK_PIN(
11031 + 180, "GPIO180",
11032 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11033 + DRV_GRP3,
11034 + MTK_FUNCTION(0, "GPIO180"),
11035 + MTK_FUNCTION(1, "LCM_RST"),
11036 + MTK_FUNCTION(2, "DSI_TE1"),
11037 + MTK_FUNCTION(7, "DBG_MON_A21")
11038 + ),
11039 + MTK_PIN(
11040 + 181, "GPIO181",
11041 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11042 + DRV_GRP3,
11043 + MTK_FUNCTION(0, "GPIO181"),
11044 + MTK_FUNCTION(1, "IDDIG"),
11045 + MTK_FUNCTION(2, "DSI_TE1"),
11046 + MTK_FUNCTION(7, "DBG_MON_A22")
11047 + ),
11048 + MTK_PIN(
11049 + 182, "GPIO182",
11050 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11051 + DRV_GRP3,
11052 + MTK_FUNCTION(0, "GPIO182"),
11053 + MTK_FUNCTION(1, "TESTMODE")
11054 + ),
11055 + MTK_PIN(
11056 + 183, "GPIO183",
11057 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11058 + DRV_GRP3,
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")
11063 + ),
11064 + MTK_PIN(
11065 + 184, "GPIO184",
11066 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11067 + DRV_GRP3,
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")
11072 + ),
11073 + MTK_PIN(
11074 + 185, "GPIO185",
11075 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11076 + DRV_GRP3,
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")
11081 + ),
11082 + MTK_PIN(
11083 + 186, "GPIO186",
11084 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11085 + DRV_GRP3,
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")
11090 + ),
11091 + MTK_PIN(
11092 + 187, "GPIO187",
11093 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11094 + DRV_GRP3,
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")
11099 + ),
11100 + MTK_PIN(
11101 + 188, "GPIO188",
11102 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11103 + DRV_GRP3,
11104 + MTK_FUNCTION(0, "GPIO188"),
11105 + MTK_FUNCTION(1, "MIPI0_SCLK"),
11106 + MTK_FUNCTION(7, "DBG_MON_B32")
11107 + ),
11108 + MTK_PIN(
11109 + 189, "GPIO189",
11110 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11111 + DRV_GRP3,
11112 + MTK_FUNCTION(0, "GPIO189"),
11113 + MTK_FUNCTION(1, "MIPI0_SDATA")
11114 + ),
11115 + MTK_PIN(
11116 + 190, "GPIO190",
11117 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11118 + DRV_GRP3,
11119 + MTK_FUNCTION(0, "GPIO190"),
11120 + MTK_FUNCTION(1, "MIPI1_SCLK")
11121 + ),
11122 + MTK_PIN(
11123 + 191, "GPIO191",
11124 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11125 + DRV_GRP3,
11126 + MTK_FUNCTION(0, "GPIO191"),
11127 + MTK_FUNCTION(1, "MIPI1_SDATA")
11128 + ),
11129 + MTK_PIN(
11130 + 192, "GPIO192",
11131 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11132 + DRV_GRP3,
11133 + MTK_FUNCTION(0, "GPIO192"),
11134 + MTK_FUNCTION(1, "BPI_BUS4")
11135 + ),
11136 + MTK_PIN(
11137 + 193, "GPIO193",
11138 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11139 + DRV_GRP3,
11140 + MTK_FUNCTION(0, "GPIO193"),
11141 + MTK_FUNCTION(1, "BPI_BUS5"),
11142 + MTK_FUNCTION(7, "DBG_MON_B0")
11143 + ),
11144 + MTK_PIN(
11145 + 194, "GPIO194",
11146 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11147 + DRV_GRP3,
11148 + MTK_FUNCTION(0, "GPIO194"),
11149 + MTK_FUNCTION(1, "BPI_BUS6"),
11150 + MTK_FUNCTION(7, "DBG_MON_B1")
11151 + ),
11152 + MTK_PIN(
11153 + 195, "GPIO195",
11154 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11155 + DRV_GRP3,
11156 + MTK_FUNCTION(0, "GPIO195"),
11157 + MTK_FUNCTION(1, "BPI_BUS7"),
11158 + MTK_FUNCTION(7, "DBG_MON_B2")
11159 + ),
11160 + MTK_PIN(
11161 + 196, "GPIO196",
11162 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11163 + DRV_GRP3,
11164 + MTK_FUNCTION(0, "GPIO196"),
11165 + MTK_FUNCTION(1, "BPI_BUS8"),
11166 + MTK_FUNCTION(7, "DBG_MON_B3")
11167 + ),
11168 + MTK_PIN(
11169 + 197, "GPIO197",
11170 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11171 + DRV_GRP3,
11172 + MTK_FUNCTION(0, "GPIO197"),
11173 + MTK_FUNCTION(1, "BPI_BUS9"),
11174 + MTK_FUNCTION(7, "DBG_MON_B4")
11175 + ),
11176 + MTK_PIN(
11177 + 198, "GPIO198",
11178 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11179 + DRV_GRP3,
11180 + MTK_FUNCTION(0, "GPIO198"),
11181 + MTK_FUNCTION(1, "BPI_BUS10"),
11182 + MTK_FUNCTION(7, "DBG_MON_B5")
11183 + ),
11184 + MTK_PIN(
11185 + 199, "GPIO199",
11186 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11187 + DRV_GRP3,
11188 + MTK_FUNCTION(0, "GPIO199"),
11189 + MTK_FUNCTION(1, "BPI_BUS11"),
11190 + MTK_FUNCTION(7, "DBG_MON_B6")
11191 + ),
11192 + MTK_PIN(
11193 + 200, "GPIO200",
11194 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11195 + DRV_GRP3,
11196 + MTK_FUNCTION(0, "GPIO200"),
11197 + MTK_FUNCTION(1, "BPI_BUS12"),
11198 + MTK_FUNCTION(7, "DBG_MON_B7")
11199 + ),
11200 + MTK_PIN(
11201 + 201, "GPIO201",
11202 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11203 + DRV_GRP3,
11204 + MTK_FUNCTION(0, "GPIO201"),
11205 + MTK_FUNCTION(1, "BPI_BUS13"),
11206 + MTK_FUNCTION(7, "DBG_MON_B8")
11207 + ),
11208 + MTK_PIN(
11209 + 202, "GPIO202",
11210 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11211 + DRV_GRP3,
11212 + MTK_FUNCTION(0, "GPIO202"),
11213 + MTK_FUNCTION(1, "BPI_BUS14"),
11214 + MTK_FUNCTION(7, "DBG_MON_B9")
11215 + ),
11216 + MTK_PIN(
11217 + 203, "GPIO203",
11218 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11219 + DRV_GRP3,
11220 + MTK_FUNCTION(0, "GPIO203"),
11221 + MTK_FUNCTION(1, "BPI_BUS15"),
11222 + MTK_FUNCTION(7, "DBG_MON_B10")
11223 + ),
11224 + MTK_PIN(
11225 + 204, "GPIO204",
11226 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11227 + DRV_GRP3,
11228 + MTK_FUNCTION(0, "GPIO204"),
11229 + MTK_FUNCTION(1, "BPI_BUS16"),
11230 + MTK_FUNCTION(2, "PA_VM0"),
11231 + MTK_FUNCTION(7, "DBG_MON_B11")
11232 + ),
11233 + MTK_PIN(
11234 + 205, "GPIO205",
11235 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11236 + DRV_GRP3,
11237 + MTK_FUNCTION(0, "GPIO205"),
11238 + MTK_FUNCTION(1, "BPI_BUS17"),
11239 + MTK_FUNCTION(2, "PA_VM1"),
11240 + MTK_FUNCTION(7, "DBG_MON_B12")
11241 + ),
11242 + MTK_PIN(
11243 + 206, "GPIO206",
11244 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11245 + DRV_GRP3,
11246 + MTK_FUNCTION(0, "GPIO206"),
11247 + MTK_FUNCTION(1, "BPI_BUS18"),
11248 + MTK_FUNCTION(2, "TX_SWAP0"),
11249 + MTK_FUNCTION(7, "DBG_MON_B13")
11250 + ),
11251 + MTK_PIN(
11252 + 207, "GPIO207",
11253 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11254 + DRV_GRP3,
11255 + MTK_FUNCTION(0, "GPIO207"),
11256 + MTK_FUNCTION(1, "BPI_BUS19"),
11257 + MTK_FUNCTION(2, "TX_SWAP1"),
11258 + MTK_FUNCTION(7, "DBG_MON_B14")
11259 + ),
11260 + MTK_PIN(
11261 + 208, "GPIO208",
11262 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11263 + DRV_GRP3,
11264 + MTK_FUNCTION(0, "GPIO208"),
11265 + MTK_FUNCTION(1, "BPI_BUS20"),
11266 + MTK_FUNCTION(2, "TX_SWAP2"),
11267 + MTK_FUNCTION(7, "DBG_MON_B15")
11268 + ),
11269 + MTK_PIN(
11270 + 209, "GPIO209",
11271 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11272 + DRV_GRP3,
11273 + MTK_FUNCTION(0, "GPIO209"),
11274 + MTK_FUNCTION(1, "BPI_BUS21"),
11275 + MTK_FUNCTION(2, "TX_SWAP3"),
11276 + MTK_FUNCTION(7, "DBG_MON_B16")
11277 + ),
11278 + MTK_PIN(
11279 + 210, "GPIO210",
11280 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11281 + DRV_GRP3,
11282 + MTK_FUNCTION(0, "GPIO210"),
11283 + MTK_FUNCTION(1, "BPI_BUS22"),
11284 + MTK_FUNCTION(2, "DET_BPI0"),
11285 + MTK_FUNCTION(7, "DBG_MON_B17")
11286 + ),
11287 + MTK_PIN(
11288 + 211, "GPIO211",
11289 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11290 + DRV_GRP3,
11291 + MTK_FUNCTION(0, "GPIO211"),
11292 + MTK_FUNCTION(1, "BPI_BUS23"),
11293 + MTK_FUNCTION(2, "DET_BPI1"),
11294 + MTK_FUNCTION(7, "DBG_MON_B18")
11295 + ),
11296 + MTK_PIN(
11297 + 212, "GPIO212",
11298 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11299 + DRV_GRP3,
11300 + MTK_FUNCTION(0, "GPIO212"),
11301 + MTK_FUNCTION(1, "BPI_BUS0"),
11302 + MTK_FUNCTION(7, "DBG_MON_B19")
11303 + ),
11304 + MTK_PIN(
11305 + 213, "GPIO213",
11306 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11307 + DRV_GRP3,
11308 + MTK_FUNCTION(0, "GPIO213"),
11309 + MTK_FUNCTION(1, "BPI_BUS1"),
11310 + MTK_FUNCTION(7, "DBG_MON_B20")
11311 + ),
11312 + MTK_PIN(
11313 + 214, "GPIO214",
11314 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11315 + DRV_GRP3,
11316 + MTK_FUNCTION(0, "GPIO214"),
11317 + MTK_FUNCTION(1, "BPI_BUS2"),
11318 + MTK_FUNCTION(7, "DBG_MON_B21")
11319 + ),
11320 + MTK_PIN(
11321 + 215, "GPIO215",
11322 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11323 + DRV_GRP3,
11324 + MTK_FUNCTION(0, "GPIO215"),
11325 + MTK_FUNCTION(1, "BPI_BUS3"),
11326 + MTK_FUNCTION(7, "DBG_MON_B22")
11327 + ),
11328 + MTK_PIN(
11329 + 216, "GPIO216",
11330 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11331 + DRV_GRP3,
11332 + MTK_FUNCTION(0, "GPIO216"),
11333 + MTK_FUNCTION(1, "MIPI2_SCLK"),
11334 + MTK_FUNCTION(7, "DBG_MON_B23")
11335 + ),
11336 + MTK_PIN(
11337 + 217, "GPIO217",
11338 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11339 + DRV_GRP3,
11340 + MTK_FUNCTION(0, "GPIO217"),
11341 + MTK_FUNCTION(1, "MIPI2_SDATA"),
11342 + MTK_FUNCTION(7, "DBG_MON_B24")
11343 + ),
11344 + MTK_PIN(
11345 + 218, "GPIO218",
11346 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11347 + DRV_GRP3,
11348 + MTK_FUNCTION(0, "GPIO218"),
11349 + MTK_FUNCTION(1, "MIPI3_SCLK"),
11350 + MTK_FUNCTION(7, "DBG_MON_B25")
11351 + ),
11352 + MTK_PIN(
11353 + 219, "GPIO219",
11354 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11355 + DRV_GRP3,
11356 + MTK_FUNCTION(0, "GPIO219"),
11357 + MTK_FUNCTION(1, "MIPI3_SDATA"),
11358 + MTK_FUNCTION(7, "DBG_MON_B26")
11359 + ),
11360 + MTK_PIN(
11361 + 220, "GPIO220",
11362 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11363 + DRV_GRP3,
11364 + MTK_FUNCTION(0, "GPIO220"),
11365 + MTK_FUNCTION(1, "CONN_WF_IP")
11366 + ),
11367 + MTK_PIN(
11368 + 221, "GPIO221",
11369 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11370 + DRV_GRP3,
11371 + MTK_FUNCTION(0, "GPIO221"),
11372 + MTK_FUNCTION(1, "CONN_WF_IN")
11373 + ),
11374 + MTK_PIN(
11375 + 222, "GPIO222",
11376 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11377 + DRV_GRP3,
11378 + MTK_FUNCTION(0, "GPIO222"),
11379 + MTK_FUNCTION(1, "CONN_WF_QP")
11380 + ),
11381 + MTK_PIN(
11382 + 223, "GPIO223",
11383 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11384 + DRV_GRP3,
11385 + MTK_FUNCTION(0, "GPIO223"),
11386 + MTK_FUNCTION(1, "CONN_WF_QN")
11387 + ),
11388 + MTK_PIN(
11389 + 224, "GPIO224",
11390 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11391 + DRV_GRP3,
11392 + MTK_FUNCTION(0, "GPIO224"),
11393 + MTK_FUNCTION(1, "CONN_BT_IP")
11394 + ),
11395 + MTK_PIN(
11396 + 225, "GPIO225",
11397 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11398 + DRV_GRP3,
11399 + MTK_FUNCTION(0, "GPIO225"),
11400 + MTK_FUNCTION(1, "CONN_BT_IN")
11401 + ),
11402 + MTK_PIN(
11403 + 226, "GPIO226",
11404 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11405 + DRV_GRP3,
11406 + MTK_FUNCTION(0, "GPIO226"),
11407 + MTK_FUNCTION(1, "CONN_BT_QP")
11408 + ),
11409 + MTK_PIN(
11410 + 227, "GPIO227",
11411 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11412 + DRV_GRP3,
11413 + MTK_FUNCTION(0, "GPIO227"),
11414 + MTK_FUNCTION(1, "CONN_BT_QN")
11415 + ),
11416 + MTK_PIN(
11417 + 228, "GPIO228",
11418 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11419 + DRV_GRP3,
11420 + MTK_FUNCTION(0, "GPIO228"),
11421 + MTK_FUNCTION(1, "CONN_GPS_IP")
11422 + ),
11423 + MTK_PIN(
11424 + 229, "GPIO229",
11425 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11426 + DRV_GRP3,
11427 + MTK_FUNCTION(0, "GPIO229"),
11428 + MTK_FUNCTION(1, "CONN_GPS_IN")
11429 + ),
11430 + MTK_PIN(
11431 + 230, "GPIO230",
11432 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11433 + DRV_GRP3,
11434 + MTK_FUNCTION(0, "GPIO230"),
11435 + MTK_FUNCTION(1, "CONN_GPS_QP")
11436 + ),
11437 + MTK_PIN(
11438 + 231, "GPIO231",
11439 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11440 + DRV_GRP3,
11441 + MTK_FUNCTION(0, "GPIO231"),
11442 + MTK_FUNCTION(1, "CONN_GPS_QN")
11443 + ),
11444 + MTK_PIN(
11445 + 232, "GPIO232",
11446 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11447 + DRV_GRP3,
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")
11456 + ),
11457 + MTK_PIN(
11458 + 233, "GPIO233",
11459 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11460 + DRV_GRP3,
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")
11469 + ),
11470 + MTK_PIN(
11471 + 234, "GPIO234",
11472 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11473 + DRV_GRP3,
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")
11481 + ),
11482 + MTK_PIN(
11483 + 235, "GPIO235",
11484 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11485 + DRV_GRP3,
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")
11493 + ),
11494 + MTK_PIN(
11495 + 236, "GPIO236",
11496 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11497 + DRV_GRP3,
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")
11505 + ),
11506 + MTK_PIN(
11507 + 237, "GPIO237",
11508 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11509 + DRV_GRP3,
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")
11517 + ),
11518 + MTK_PIN(
11519 + 238, "GPIO238",
11520 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11521 + DRV_GRP3,
11522 + MTK_FUNCTION(0, "GPIO238"),
11523 + MTK_FUNCTION(1, "SDA4_0")
11524 + ),
11525 + MTK_PIN(
11526 + 239, "GPIO239",
11527 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11528 + DRV_GRP3,
11529 + MTK_FUNCTION(0, "GPIO239"),
11530 + MTK_FUNCTION(1, "SCL4_0")
11531 + ),
11532 + MTK_PIN(
11533 + 240, "GPIO240",
11534 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11535 + DRV_GRP3,
11536 + MTK_FUNCTION(0, "GPIO240"),
11537 + MTK_FUNCTION(1, "SDA5_0")
11538 + ),
11539 + MTK_PIN(
11540 + 241, "GPIO241",
11541 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11542 + DRV_GRP3,
11543 + MTK_FUNCTION(0, "GPIO241"),
11544 + MTK_FUNCTION(1, "SCL5_0")
11545 + ),
11546 + MTK_PIN(
11547 + 242, "GPIO242",
11548 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11549 + DRV_GRP3,
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")
11558 + ),
11559 + MTK_PIN(
11560 + 243, "GPIO243",
11561 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11562 + DRV_GRP3,
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")
11571 + ),
11572 + MTK_PIN(
11573 + 244, "GPIO244",
11574 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11575 + DRV_GRP3,
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")
11584 + ),
11585 + MTK_PIN(
11586 + 245, "GPIO245",
11587 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11588 + DRV_GRP3,
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")
11597 + ),
11598 + MTK_PIN(
11599 + 246, "GPIO246",
11600 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11601 + DRV_GRP3,
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")
11610 + ),
11611 + MTK_PIN(
11612 + 247, "GPIO247",
11613 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11614 + DRV_GRP3,
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")
11623 + ),
11624 + MTK_PIN(
11625 + 248, "GPIO248",
11626 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11627 + DRV_GRP3,
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")
11635 + ),
11636 + MTK_PIN(
11637 + 249, "GPIO249",
11638 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11639 + DRV_GRP3,
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")
11648 + ),
11649 + MTK_PIN(
11650 + 250, "GPIO250",
11651 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11652 + DRV_GRP3,
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")
11659 + ),
11660 + MTK_PIN(
11661 + 251, "GPIO251",
11662 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11663 + DRV_GRP3,
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")
11670 + ),
11671 + MTK_PIN(
11672 + 252, "GPIO252",
11673 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11674 + DRV_GRP3,
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")
11680 + ),
11681 + MTK_PIN(
11682 + 253, "GPIO253",
11683 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11684 + DRV_GRP3,
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")
11690 + ),
11691 + MTK_PIN(
11692 + 254, "GPIO254",
11693 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11694 + DRV_GRP3,
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")
11702 + ),
11703 + MTK_PIN(
11704 + 255, "GPIO255",
11705 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11706 + DRV_GRP3,
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")
11713 + ),
11714 + MTK_PIN(
11715 + 256, "GPIO256",
11716 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11717 + DRV_GRP3,
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")
11724 + ),
11725 + MTK_PIN(
11726 + 257, "GPIO257",
11727 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11728 + DRV_GRP3,
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")
11737 + ),
11738 + MTK_PIN(
11739 + 258, "GPIO258",
11740 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11741 + DRV_GRP3,
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")
11750 + ),
11751 + MTK_PIN(
11752 + 259, "GPIO259",
11753 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11754 + DRV_GRP3,
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")
11762 + ),
11763 + MTK_PIN(
11764 + 260, "GPIO260",
11765 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11766 + DRV_GRP3,
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")
11774 + ),
11775 + MTK_PIN(
11776 + 261, "GPIO261",
11777 + MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),
11778 + DRV_GRP3,
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")
11785 + ),
11786 +};
11787 +
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
11792 --- /dev/null
11793 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8183.h
11794 @@ -0,0 +1,1916 @@
11795 +/* SPDX-License-Identifier: GPL-2.0 */
11796 +/*
11797 + * Copyright (C) 2018 MediaTek Inc.
11798 + *
11799 + * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
11800 + *
11801 + */
11802 +
11803 +#ifndef __PINCTRL_MTK_MT8183_H
11804 +#define __PINCTRL_MTK_MT8183_H
11805 +
11806 +#include "pinctrl-paris.h"
11807 +
11808 +static struct mtk_pin_desc mtk_pins_mt8183[] = {
11809 + MTK_PIN(
11810 + 0, "GPIO0",
11811 + MTK_EINT_FUNCTION(0, 0),
11812 + DRV_GRP4,
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")
11821 + ),
11822 + MTK_PIN(
11823 + 1, "GPIO1",
11824 + MTK_EINT_FUNCTION(0, 1),
11825 + DRV_GRP4,
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")
11834 + ),
11835 + MTK_PIN(
11836 + 2, "GPIO2",
11837 + MTK_EINT_FUNCTION(0, 2),
11838 + DRV_GRP4,
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")
11847 + ),
11848 + MTK_PIN(
11849 + 3, "GPIO3",
11850 + MTK_EINT_FUNCTION(0, 3),
11851 + DRV_GRP4,
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")
11860 + ),
11861 + MTK_PIN(
11862 + 4, "GPIO4",
11863 + MTK_EINT_FUNCTION(0, 4),
11864 + DRV_GRP4,
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")
11873 + ),
11874 + MTK_PIN(
11875 + 5, "GPIO5",
11876 + MTK_EINT_FUNCTION(0, 5),
11877 + DRV_GRP4,
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")
11886 + ),
11887 + MTK_PIN(
11888 + 6, "GPIO6",
11889 + MTK_EINT_FUNCTION(0, 6),
11890 + DRV_GRP4,
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")
11899 + ),
11900 + MTK_PIN(
11901 + 7, "GPIO7",
11902 + MTK_EINT_FUNCTION(0, 7),
11903 + DRV_GRP4,
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")
11912 + ),
11913 + MTK_PIN(
11914 + 8, "GPIO8",
11915 + MTK_EINT_FUNCTION(0, 8),
11916 + DRV_GRP4,
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")
11925 + ),
11926 + MTK_PIN(
11927 + 9, "GPIO9",
11928 + MTK_EINT_FUNCTION(0, 9),
11929 + DRV_GRP4,
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")
11938 + ),
11939 + MTK_PIN(
11940 + 10, "GPIO10",
11941 + MTK_EINT_FUNCTION(0, 10),
11942 + DRV_GRP4,
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")
11951 + ),
11952 + MTK_PIN(
11953 + 11, "GPIO11",
11954 + MTK_EINT_FUNCTION(0, 11),
11955 + DRV_GRP4,
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")
11964 + ),
11965 + MTK_PIN(
11966 + 12, "GPIO12",
11967 + MTK_EINT_FUNCTION(0, 12),
11968 + DRV_GRP4,
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")
11977 + ),
11978 + MTK_PIN(
11979 + 13, "GPIO13",
11980 + MTK_EINT_FUNCTION(0, 13),
11981 + DRV_GRP4,
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")
11990 + ),
11991 + MTK_PIN(
11992 + 14, "GPIO14",
11993 + MTK_EINT_FUNCTION(0, 14),
11994 + DRV_GRP4,
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")
12003 + ),
12004 + MTK_PIN(
12005 + 15, "GPIO15",
12006 + MTK_EINT_FUNCTION(0, 15),
12007 + DRV_GRP4,
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")
12016 + ),
12017 + MTK_PIN(
12018 + 16, "GPIO16",
12019 + MTK_EINT_FUNCTION(0, 16),
12020 + DRV_GRP4,
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")
12029 + ),
12030 + MTK_PIN(
12031 + 17, "GPIO17",
12032 + MTK_EINT_FUNCTION(0, 17),
12033 + DRV_GRP4,
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")
12042 + ),
12043 + MTK_PIN(
12044 + 18, "GPIO18",
12045 + MTK_EINT_FUNCTION(0, 18),
12046 + DRV_GRP4,
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")
12055 + ),
12056 + MTK_PIN(
12057 + 19, "GPIO19",
12058 + MTK_EINT_FUNCTION(0, 19),
12059 + DRV_GRP4,
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")
12068 + ),
12069 + MTK_PIN(
12070 + 20, "GPIO20",
12071 + MTK_EINT_FUNCTION(0, 20),
12072 + DRV_GRP4,
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")
12081 + ),
12082 + MTK_PIN(
12083 + 21, "GPIO21",
12084 + MTK_EINT_FUNCTION(0, 21),
12085 + DRV_GRP4,
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")
12094 + ),
12095 + MTK_PIN(
12096 + 22, "GPIO22",
12097 + MTK_EINT_FUNCTION(0, 22),
12098 + DRV_GRP4,
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")
12107 + ),
12108 + MTK_PIN(
12109 + 23, "GPIO23",
12110 + MTK_EINT_FUNCTION(0, 23),
12111 + DRV_GRP4,
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")
12120 + ),
12121 + MTK_PIN(
12122 + 24, "GPIO24",
12123 + MTK_EINT_FUNCTION(0, 24),
12124 + DRV_GRP4,
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")
12133 + ),
12134 + MTK_PIN(
12135 + 25, "GPIO25",
12136 + MTK_EINT_FUNCTION(0, 25),
12137 + DRV_GRP4,
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")
12146 + ),
12147 + MTK_PIN(
12148 + 26, "GPIO26",
12149 + MTK_EINT_FUNCTION(0, 26),
12150 + DRV_GRP4,
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")
12159 + ),
12160 + MTK_PIN(
12161 + 27, "GPIO27",
12162 + MTK_EINT_FUNCTION(0, 27),
12163 + DRV_GRP4,
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")
12172 + ),
12173 + MTK_PIN(
12174 + 28, "GPIO28",
12175 + MTK_EINT_FUNCTION(0, 28),
12176 + DRV_GRP4,
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")
12185 + ),
12186 + MTK_PIN(
12187 + 29, "GPIO29",
12188 + MTK_EINT_FUNCTION(0, 29),
12189 + DRV_GRP4,
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")
12198 + ),
12199 + MTK_PIN(
12200 + 30, "GPIO30",
12201 + MTK_EINT_FUNCTION(0, 30),
12202 + DRV_GRP4,
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")
12211 + ),
12212 + MTK_PIN(
12213 + 31, "GPIO31",
12214 + MTK_EINT_FUNCTION(0, 31),
12215 + DRV_GRP4,
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")
12224 + ),
12225 + MTK_PIN(
12226 + 32, "GPIO32",
12227 + MTK_EINT_FUNCTION(0, 32),
12228 + DRV_GRP4,
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")
12237 + ),
12238 + MTK_PIN(
12239 + 33, "GPIO33",
12240 + MTK_EINT_FUNCTION(0, 33),
12241 + DRV_GRP4,
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")
12250 + ),
12251 + MTK_PIN(
12252 + 34, "GPIO34",
12253 + MTK_EINT_FUNCTION(0, 34),
12254 + DRV_GRP4,
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")
12263 + ),
12264 + MTK_PIN(
12265 + 35, "GPIO35",
12266 + MTK_EINT_FUNCTION(0, 35),
12267 + DRV_GRP4,
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")
12275 + ),
12276 + MTK_PIN(
12277 + 36, "GPIO36",
12278 + MTK_EINT_FUNCTION(0, 36),
12279 + DRV_GRP4,
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")
12288 + ),
12289 + MTK_PIN(
12290 + 37, "GPIO37",
12291 + MTK_EINT_FUNCTION(0, 37),
12292 + DRV_GRP4,
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")
12300 + ),
12301 + MTK_PIN(
12302 + 38, "GPIO38",
12303 + MTK_EINT_FUNCTION(0, 38),
12304 + DRV_GRP4,
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")
12310 + ),
12311 + MTK_PIN(
12312 + 39, "GPIO39",
12313 + MTK_EINT_FUNCTION(0, 39),
12314 + DRV_GRP4,
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")
12322 + ),
12323 + MTK_PIN(
12324 + 40, "GPIO40",
12325 + MTK_EINT_FUNCTION(0, 40),
12326 + DRV_GRP4,
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")
12334 + ),
12335 + MTK_PIN(
12336 + 41, "GPIO41",
12337 + MTK_EINT_FUNCTION(0, 41),
12338 + DRV_GRP4,
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")
12346 + ),
12347 + MTK_PIN(
12348 + 42, "GPIO42",
12349 + MTK_EINT_FUNCTION(0, 42),
12350 + DRV_GRP4,
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")
12358 + ),
12359 + MTK_PIN(
12360 + 43, "GPIO43",
12361 + MTK_EINT_FUNCTION(0, 43),
12362 + DRV_GRP4,
12363 + MTK_FUNCTION(0, "GPIO43"),
12364 + MTK_FUNCTION(1, "DISP_PWM")
12365 + ),
12366 + MTK_PIN(
12367 + 44, "GPIO44",
12368 + MTK_EINT_FUNCTION(0, 44),
12369 + DRV_GRP4,
12370 + MTK_FUNCTION(0, "GPIO44"),
12371 + MTK_FUNCTION(1, "DSI_TE")
12372 + ),
12373 + MTK_PIN(
12374 + 45, "GPIO45",
12375 + MTK_EINT_FUNCTION(0, 45),
12376 + DRV_GRP4,
12377 + MTK_FUNCTION(0, "GPIO45"),
12378 + MTK_FUNCTION(1, "LCM_RST")
12379 + ),
12380 + MTK_PIN(
12381 + 46, "GPIO46",
12382 + MTK_EINT_FUNCTION(0, 46),
12383 + DRV_GRP4,
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")
12392 + ),
12393 + MTK_PIN(
12394 + 47, "GPIO47",
12395 + MTK_EINT_FUNCTION(0, 47),
12396 + DRV_GRP4,
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")
12405 + ),
12406 + MTK_PIN(
12407 + 48, "GPIO48",
12408 + MTK_EINT_FUNCTION(0, 48),
12409 + DRV_GRP4,
12410 + MTK_FUNCTION(0, "GPIO48"),
12411 + MTK_FUNCTION(1, "SCL5")
12412 + ),
12413 + MTK_PIN(
12414 + 49, "GPIO49",
12415 + MTK_EINT_FUNCTION(0, 49),
12416 + DRV_GRP4,
12417 + MTK_FUNCTION(0, "GPIO49"),
12418 + MTK_FUNCTION(1, "SDA5")
12419 + ),
12420 + MTK_PIN(
12421 + 50, "GPIO50",
12422 + MTK_EINT_FUNCTION(0, 50),
12423 + DRV_GRP4,
12424 + MTK_FUNCTION(0, "GPIO50"),
12425 + MTK_FUNCTION(1, "SCL3")
12426 + ),
12427 + MTK_PIN(
12428 + 51, "GPIO51",
12429 + MTK_EINT_FUNCTION(0, 51),
12430 + DRV_GRP4,
12431 + MTK_FUNCTION(0, "GPIO51"),
12432 + MTK_FUNCTION(1, "SDA3")
12433 + ),
12434 + MTK_PIN(
12435 + 52, "GPIO52",
12436 + MTK_EINT_FUNCTION(0, 52),
12437 + DRV_GRP4,
12438 + MTK_FUNCTION(0, "GPIO52"),
12439 + MTK_FUNCTION(1, "BPI_ANT2")
12440 + ),
12441 + MTK_PIN(
12442 + 53, "GPIO53",
12443 + MTK_EINT_FUNCTION(0, 53),
12444 + DRV_GRP4,
12445 + MTK_FUNCTION(0, "GPIO53"),
12446 + MTK_FUNCTION(1, "BPI_ANT0")
12447 + ),
12448 + MTK_PIN(
12449 + 54, "GPIO54",
12450 + MTK_EINT_FUNCTION(0, 54),
12451 + DRV_GRP4,
12452 + MTK_FUNCTION(0, "GPIO54"),
12453 + MTK_FUNCTION(1, "BPI_OLAT1")
12454 + ),
12455 + MTK_PIN(
12456 + 55, "GPIO55",
12457 + MTK_EINT_FUNCTION(0, 55),
12458 + DRV_GRP4,
12459 + MTK_FUNCTION(0, "GPIO55"),
12460 + MTK_FUNCTION(1, "BPI_BUS8")
12461 + ),
12462 + MTK_PIN(
12463 + 56, "GPIO56",
12464 + MTK_EINT_FUNCTION(0, 56),
12465 + DRV_GRP4,
12466 + MTK_FUNCTION(0, "GPIO56"),
12467 + MTK_FUNCTION(1, "BPI_BUS9"),
12468 + MTK_FUNCTION(2, "SCL_6306")
12469 + ),
12470 + MTK_PIN(
12471 + 57, "GPIO57",
12472 + MTK_EINT_FUNCTION(0, 57),
12473 + DRV_GRP4,
12474 + MTK_FUNCTION(0, "GPIO57"),
12475 + MTK_FUNCTION(1, "BPI_BUS10"),
12476 + MTK_FUNCTION(2, "SDA_6306")
12477 + ),
12478 + MTK_PIN(
12479 + 58, "GPIO58",
12480 + MTK_EINT_FUNCTION(0, 58),
12481 + DRV_GRP4,
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")
12486 + ),
12487 + MTK_PIN(
12488 + 59, "GPIO59",
12489 + MTK_EINT_FUNCTION(0, 59),
12490 + DRV_GRP4,
12491 + MTK_FUNCTION(0, "GPIO59"),
12492 + MTK_FUNCTION(1, "RFIC0_BSI_D1"),
12493 + MTK_FUNCTION(2, "SPM_BSI_D1")
12494 + ),
12495 + MTK_PIN(
12496 + 60, "GPIO60",
12497 + MTK_EINT_FUNCTION(0, 60),
12498 + DRV_GRP4,
12499 + MTK_FUNCTION(0, "GPIO60"),
12500 + MTK_FUNCTION(1, "RFIC0_BSI_D0"),
12501 + MTK_FUNCTION(2, "SPM_BSI_D0")
12502 + ),
12503 + MTK_PIN(
12504 + 61, "GPIO61",
12505 + MTK_EINT_FUNCTION(0, 61),
12506 + DRV_GRP4,
12507 + MTK_FUNCTION(0, "GPIO61"),
12508 + MTK_FUNCTION(1, "MIPI1_SDATA")
12509 + ),
12510 + MTK_PIN(
12511 + 62, "GPIO62",
12512 + MTK_EINT_FUNCTION(0, 62),
12513 + DRV_GRP4,
12514 + MTK_FUNCTION(0, "GPIO62"),
12515 + MTK_FUNCTION(1, "MIPI1_SCLK")
12516 + ),
12517 + MTK_PIN(
12518 + 63, "GPIO63",
12519 + MTK_EINT_FUNCTION(0, 63),
12520 + DRV_GRP4,
12521 + MTK_FUNCTION(0, "GPIO63"),
12522 + MTK_FUNCTION(1, "MIPI0_SDATA")
12523 + ),
12524 + MTK_PIN(
12525 + 64, "GPIO64",
12526 + MTK_EINT_FUNCTION(0, 64),
12527 + DRV_GRP4,
12528 + MTK_FUNCTION(0, "GPIO64"),
12529 + MTK_FUNCTION(1, "MIPI0_SCLK")
12530 + ),
12531 + MTK_PIN(
12532 + 65, "GPIO65",
12533 + MTK_EINT_FUNCTION(0, 65),
12534 + DRV_GRP4,
12535 + MTK_FUNCTION(0, "GPIO65"),
12536 + MTK_FUNCTION(1, "MIPI3_SDATA"),
12537 + MTK_FUNCTION(2, "BPI_OLAT2")
12538 + ),
12539 + MTK_PIN(
12540 + 66, "GPIO66",
12541 + MTK_EINT_FUNCTION(0, 66),
12542 + DRV_GRP4,
12543 + MTK_FUNCTION(0, "GPIO66"),
12544 + MTK_FUNCTION(1, "MIPI3_SCLK"),
12545 + MTK_FUNCTION(2, "BPI_OLAT3")
12546 + ),
12547 + MTK_PIN(
12548 + 67, "GPIO67",
12549 + MTK_EINT_FUNCTION(0, 67),
12550 + DRV_GRP4,
12551 + MTK_FUNCTION(0, "GPIO67"),
12552 + MTK_FUNCTION(1, "MIPI2_SDATA")
12553 + ),
12554 + MTK_PIN(
12555 + 68, "GPIO68",
12556 + MTK_EINT_FUNCTION(0, 68),
12557 + DRV_GRP4,
12558 + MTK_FUNCTION(0, "GPIO68"),
12559 + MTK_FUNCTION(1, "MIPI2_SCLK")
12560 + ),
12561 + MTK_PIN(
12562 + 69, "GPIO69",
12563 + MTK_EINT_FUNCTION(0, 69),
12564 + DRV_GRP4,
12565 + MTK_FUNCTION(0, "GPIO69"),
12566 + MTK_FUNCTION(1, "BPI_BUS7")
12567 + ),
12568 + MTK_PIN(
12569 + 70, "GPIO70",
12570 + MTK_EINT_FUNCTION(0, 70),
12571 + DRV_GRP4,
12572 + MTK_FUNCTION(0, "GPIO70"),
12573 + MTK_FUNCTION(1, "BPI_BUS6")
12574 + ),
12575 + MTK_PIN(
12576 + 71, "GPIO71",
12577 + MTK_EINT_FUNCTION(0, 71),
12578 + DRV_GRP4,
12579 + MTK_FUNCTION(0, "GPIO71"),
12580 + MTK_FUNCTION(1, "BPI_BUS5")
12581 + ),
12582 + MTK_PIN(
12583 + 72, "GPIO72",
12584 + MTK_EINT_FUNCTION(0, 72),
12585 + DRV_GRP4,
12586 + MTK_FUNCTION(0, "GPIO72"),
12587 + MTK_FUNCTION(1, "BPI_BUS4")
12588 + ),
12589 + MTK_PIN(
12590 + 73, "GPIO73",
12591 + MTK_EINT_FUNCTION(0, 73),
12592 + DRV_GRP4,
12593 + MTK_FUNCTION(0, "GPIO73"),
12594 + MTK_FUNCTION(1, "BPI_BUS3")
12595 + ),
12596 + MTK_PIN(
12597 + 74, "GPIO74",
12598 + MTK_EINT_FUNCTION(0, 74),
12599 + DRV_GRP4,
12600 + MTK_FUNCTION(0, "GPIO74"),
12601 + MTK_FUNCTION(1, "BPI_BUS2")
12602 + ),
12603 + MTK_PIN(
12604 + 75, "GPIO75",
12605 + MTK_EINT_FUNCTION(0, 75),
12606 + DRV_GRP4,
12607 + MTK_FUNCTION(0, "GPIO75"),
12608 + MTK_FUNCTION(1, "BPI_BUS1")
12609 + ),
12610 + MTK_PIN(
12611 + 76, "GPIO76",
12612 + MTK_EINT_FUNCTION(0, 76),
12613 + DRV_GRP4,
12614 + MTK_FUNCTION(0, "GPIO76"),
12615 + MTK_FUNCTION(1, "BPI_BUS0")
12616 + ),
12617 + MTK_PIN(
12618 + 77, "GPIO77",
12619 + MTK_EINT_FUNCTION(0, 77),
12620 + DRV_GRP4,
12621 + MTK_FUNCTION(0, "GPIO77"),
12622 + MTK_FUNCTION(1, "BPI_ANT1")
12623 + ),
12624 + MTK_PIN(
12625 + 78, "GPIO78",
12626 + MTK_EINT_FUNCTION(0, 78),
12627 + DRV_GRP4,
12628 + MTK_FUNCTION(0, "GPIO78"),
12629 + MTK_FUNCTION(1, "BPI_OLAT0")
12630 + ),
12631 + MTK_PIN(
12632 + 79, "GPIO79",
12633 + MTK_EINT_FUNCTION(0, 79),
12634 + DRV_GRP4,
12635 + MTK_FUNCTION(0, "GPIO79"),
12636 + MTK_FUNCTION(1, "BPI_PA_VM1"),
12637 + MTK_FUNCTION(2, "MIPI4_SDATA")
12638 + ),
12639 + MTK_PIN(
12640 + 80, "GPIO80",
12641 + MTK_EINT_FUNCTION(0, 80),
12642 + DRV_GRP4,
12643 + MTK_FUNCTION(0, "GPIO80"),
12644 + MTK_FUNCTION(1, "BPI_PA_VM0"),
12645 + MTK_FUNCTION(2, "MIPI4_SCLK")
12646 + ),
12647 + MTK_PIN(
12648 + 81, "GPIO81",
12649 + MTK_EINT_FUNCTION(0, 81),
12650 + DRV_GRP4,
12651 + MTK_FUNCTION(0, "GPIO81"),
12652 + MTK_FUNCTION(1, "SDA1")
12653 + ),
12654 + MTK_PIN(
12655 + 82, "GPIO82",
12656 + MTK_EINT_FUNCTION(0, 82),
12657 + DRV_GRP4,
12658 + MTK_FUNCTION(0, "GPIO82"),
12659 + MTK_FUNCTION(1, "SDA0")
12660 + ),
12661 + MTK_PIN(
12662 + 83, "GPIO83",
12663 + MTK_EINT_FUNCTION(0, 83),
12664 + DRV_GRP4,
12665 + MTK_FUNCTION(0, "GPIO83"),
12666 + MTK_FUNCTION(1, "SCL0")
12667 + ),
12668 + MTK_PIN(
12669 + 84, "GPIO84",
12670 + MTK_EINT_FUNCTION(0, 84),
12671 + DRV_GRP4,
12672 + MTK_FUNCTION(0, "GPIO84"),
12673 + MTK_FUNCTION(1, "SCL1")
12674 + ),
12675 + MTK_PIN(
12676 + 85, "GPIO85",
12677 + MTK_EINT_FUNCTION(0, 85),
12678 + DRV_GRP4,
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")
12687 + ),
12688 + MTK_PIN(
12689 + 86, "GPIO86",
12690 + MTK_EINT_FUNCTION(0, 86),
12691 + DRV_GRP4,
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")
12700 + ),
12701 + MTK_PIN(
12702 + 87, "GPIO87",
12703 + MTK_EINT_FUNCTION(0, 87),
12704 + DRV_GRP4,
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")
12713 + ),
12714 + MTK_PIN(
12715 + 88, "GPIO88",
12716 + MTK_EINT_FUNCTION(0, 88),
12717 + DRV_GRP4,
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")
12726 + ),
12727 + MTK_PIN(
12728 + 89, "GPIO89",
12729 + MTK_EINT_FUNCTION(0, 89),
12730 + DRV_GRP4,
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")
12739 + ),
12740 + MTK_PIN(
12741 + 90, "GPIO90",
12742 + MTK_EINT_FUNCTION(0, 90),
12743 + DRV_GRP4,
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")
12752 + ),
12753 + MTK_PIN(
12754 + 91, "GPIO91",
12755 + MTK_EINT_FUNCTION(0, 91),
12756 + DRV_GRP4,
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")
12764 + ),
12765 + MTK_PIN(
12766 + 92, "GPIO92",
12767 + MTK_EINT_FUNCTION(0, 92),
12768 + DRV_GRP4,
12769 + MTK_FUNCTION(0, "GPIO92"),
12770 + MTK_FUNCTION(1, "KPROW0")
12771 + ),
12772 + MTK_PIN(
12773 + 93, "GPIO93",
12774 + MTK_EINT_FUNCTION(0, 93),
12775 + DRV_GRP4,
12776 + MTK_FUNCTION(0, "GPIO93"),
12777 + MTK_FUNCTION(1, "KPCOL0"),
12778 + MTK_FUNCTION(7, "DBG_MON_B27")
12779 + ),
12780 + MTK_PIN(
12781 + 94, "GPIO94",
12782 + MTK_EINT_FUNCTION(0, 94),
12783 + DRV_GRP4,
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")
12792 + ),
12793 + MTK_PIN(
12794 + 95, "GPIO95",
12795 + MTK_EINT_FUNCTION(0, 95),
12796 + DRV_GRP4,
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")
12804 + ),
12805 + MTK_PIN(
12806 + 96, "GPIO96",
12807 + MTK_EINT_FUNCTION(0, 96),
12808 + DRV_GRP4,
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")
12817 + ),
12818 + MTK_PIN(
12819 + 97, "GPIO97",
12820 + MTK_EINT_FUNCTION(0, 97),
12821 + DRV_GRP4,
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")
12830 + ),
12831 + MTK_PIN(
12832 + 98, "GPIO98",
12833 + MTK_EINT_FUNCTION(0, 98),
12834 + DRV_GRP4,
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")
12843 + ),
12844 + MTK_PIN(
12845 + 99, "GPIO99",
12846 + MTK_EINT_FUNCTION(0, 99),
12847 + DRV_GRP4,
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")
12852 + ),
12853 + MTK_PIN(
12854 + 100, "GPIO100",
12855 + MTK_EINT_FUNCTION(0, 100),
12856 + DRV_GRP4,
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")
12863 + ),
12864 + MTK_PIN(
12865 + 101, "GPIO101",
12866 + MTK_EINT_FUNCTION(0, 101),
12867 + DRV_GRP4,
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")
12875 + ),
12876 + MTK_PIN(
12877 + 102, "GPIO102",
12878 + MTK_EINT_FUNCTION(0, 102),
12879 + DRV_GRP4,
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")
12888 + ),
12889 + MTK_PIN(
12890 + 103, "GPIO103",
12891 + MTK_EINT_FUNCTION(0, 103),
12892 + DRV_GRP4,
12893 + MTK_FUNCTION(0, "GPIO103"),
12894 + MTK_FUNCTION(1, "SCL2")
12895 + ),
12896 + MTK_PIN(
12897 + 104, "GPIO104",
12898 + MTK_EINT_FUNCTION(0, 104),
12899 + DRV_GRP4,
12900 + MTK_FUNCTION(0, "GPIO104"),
12901 + MTK_FUNCTION(1, "SDA2")
12902 + ),
12903 + MTK_PIN(
12904 + 105, "GPIO105",
12905 + MTK_EINT_FUNCTION(0, 105),
12906 + DRV_GRP4,
12907 + MTK_FUNCTION(0, "GPIO105"),
12908 + MTK_FUNCTION(1, "SCL4")
12909 + ),
12910 + MTK_PIN(
12911 + 106, "GPIO106",
12912 + MTK_EINT_FUNCTION(0, 106),
12913 + DRV_GRP4,
12914 + MTK_FUNCTION(0, "GPIO106"),
12915 + MTK_FUNCTION(1, "SDA4")
12916 + ),
12917 + MTK_PIN(
12918 + 107, "GPIO107",
12919 + MTK_EINT_FUNCTION(0, 107),
12920 + DRV_GRP4,
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")
12929 + ),
12930 + MTK_PIN(
12931 + 108, "GPIO108",
12932 + MTK_EINT_FUNCTION(0, 108),
12933 + DRV_GRP4,
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")
12942 + ),
12943 + MTK_PIN(
12944 + 109, "GPIO109",
12945 + MTK_EINT_FUNCTION(0, 109),
12946 + DRV_GRP4,
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")
12955 + ),
12956 + MTK_PIN(
12957 + 110, "GPIO110",
12958 + MTK_EINT_FUNCTION(0, 110),
12959 + DRV_GRP4,
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")
12968 + ),
12969 + MTK_PIN(
12970 + 111, "GPIO111",
12971 + MTK_EINT_FUNCTION(0, 111),
12972 + DRV_GRP4,
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")
12980 + ),
12981 + MTK_PIN(
12982 + 112, "GPIO112",
12983 + MTK_EINT_FUNCTION(0, 112),
12984 + DRV_GRP4,
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")
12993 + ),
12994 + MTK_PIN(
12995 + 113, "GPIO113",
12996 + MTK_EINT_FUNCTION(0, 113),
12997 + DRV_GRP4,
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")
13003 + ),
13004 + MTK_PIN(
13005 + 114, "GPIO114",
13006 + MTK_EINT_FUNCTION(0, 114),
13007 + DRV_GRP4,
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")
13013 + ),
13014 + MTK_PIN(
13015 + 115, "GPIO115",
13016 + MTK_EINT_FUNCTION(0, 115),
13017 + DRV_GRP4,
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")
13025 + ),
13026 + MTK_PIN(
13027 + 116, "GPIO116",
13028 + MTK_EINT_FUNCTION(0, 116),
13029 + DRV_GRP4,
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")
13037 + ),
13038 + MTK_PIN(
13039 + 117, "GPIO117",
13040 + MTK_EINT_FUNCTION(0, 117),
13041 + DRV_GRP4,
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")
13047 + ),
13048 + MTK_PIN(
13049 + 118, "GPIO118",
13050 + MTK_EINT_FUNCTION(0, 118),
13051 + DRV_GRP4,
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")
13058 + ),
13059 + MTK_PIN(
13060 + 119, "GPIO119",
13061 + MTK_EINT_FUNCTION(0, 119),
13062 + DRV_GRP4,
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")
13068 + ),
13069 + MTK_PIN(
13070 + 120, "GPIO120",
13071 + MTK_EINT_FUNCTION(0, 120),
13072 + DRV_GRP4,
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")
13077 + ),
13078 + MTK_PIN(
13079 + 121, "GPIO121",
13080 + MTK_EINT_FUNCTION(0, 121),
13081 + DRV_GRP4,
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")
13088 + ),
13089 + MTK_PIN(
13090 + 122, "GPIO122",
13091 + MTK_EINT_FUNCTION(0, 122),
13092 + DRV_GRP4,
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")
13098 + ),
13099 + MTK_PIN(
13100 + 123, "GPIO123",
13101 + MTK_EINT_FUNCTION(0, 123),
13102 + DRV_GRP4,
13103 + MTK_FUNCTION(0, "GPIO123"),
13104 + MTK_FUNCTION(1, "MSDC0_DAT0"),
13105 + MTK_FUNCTION(3, "ANT_SEL0"),
13106 + MTK_FUNCTION(7, "DBG_MON_A13")
13107 + ),
13108 + MTK_PIN(
13109 + 124, "GPIO124",
13110 + MTK_EINT_FUNCTION(0, 124),
13111 + DRV_GRP4,
13112 + MTK_FUNCTION(0, "GPIO124"),
13113 + MTK_FUNCTION(1, "MSDC0_CLK"),
13114 + MTK_FUNCTION(7, "DBG_MON_A14")
13115 + ),
13116 + MTK_PIN(
13117 + 125, "GPIO125",
13118 + MTK_EINT_FUNCTION(0, 125),
13119 + DRV_GRP4,
13120 + MTK_FUNCTION(0, "GPIO125"),
13121 + MTK_FUNCTION(1, "MSDC0_DAT2"),
13122 + MTK_FUNCTION(3, "MRG_CLK"),
13123 + MTK_FUNCTION(7, "DBG_MON_A15")
13124 + ),
13125 + MTK_PIN(
13126 + 126, "GPIO126",
13127 + MTK_EINT_FUNCTION(0, 126),
13128 + DRV_GRP4,
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")
13134 + ),
13135 + MTK_PIN(
13136 + 127, "GPIO127",
13137 + MTK_EINT_FUNCTION(0, 127),
13138 + DRV_GRP4,
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")
13144 + ),
13145 + MTK_PIN(
13146 + 128, "GPIO128",
13147 + MTK_EINT_FUNCTION(0, 128),
13148 + DRV_GRP4,
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")
13154 + ),
13155 + MTK_PIN(
13156 + 129, "GPIO129",
13157 + MTK_EINT_FUNCTION(0, 129),
13158 + DRV_GRP4,
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")
13164 + ),
13165 + MTK_PIN(
13166 + 130, "GPIO130",
13167 + MTK_EINT_FUNCTION(0, 130),
13168 + DRV_GRP4,
13169 + MTK_FUNCTION(0, "GPIO130"),
13170 + MTK_FUNCTION(1, "MSDC0_DAT7"),
13171 + MTK_FUNCTION(3, "MRG_DO"),
13172 + MTK_FUNCTION(7, "DBG_MON_A24")
13173 + ),
13174 + MTK_PIN(
13175 + 131, "GPIO131",
13176 + MTK_EINT_FUNCTION(0, 131),
13177 + DRV_GRP4,
13178 + MTK_FUNCTION(0, "GPIO131"),
13179 + MTK_FUNCTION(1, "MSDC0_DSL"),
13180 + MTK_FUNCTION(3, "MRG_SYNC"),
13181 + MTK_FUNCTION(7, "DBG_MON_A25")
13182 + ),
13183 + MTK_PIN(
13184 + 132, "GPIO132",
13185 + MTK_EINT_FUNCTION(0, 132),
13186 + DRV_GRP4,
13187 + MTK_FUNCTION(0, "GPIO132"),
13188 + MTK_FUNCTION(1, "MSDC0_DAT3"),
13189 + MTK_FUNCTION(3, "MRG_DI"),
13190 + MTK_FUNCTION(7, "DBG_MON_A26")
13191 + ),
13192 + MTK_PIN(
13193 + 133, "GPIO133",
13194 + MTK_EINT_FUNCTION(0, 133),
13195 + DRV_GRP4,
13196 + MTK_FUNCTION(0, "GPIO133"),
13197 + MTK_FUNCTION(1, "MSDC0_RSTB"),
13198 + MTK_FUNCTION(3, "AGPS_SYNC"),
13199 + MTK_FUNCTION(7, "DBG_MON_A27")
13200 + ),
13201 + MTK_PIN(
13202 + 134, "GPIO134",
13203 + MTK_EINT_FUNCTION(0, 134),
13204 + DRV_GRP4,
13205 + MTK_FUNCTION(0, "GPIO134"),
13206 + MTK_FUNCTION(1, "RTC32K_CK")
13207 + ),
13208 + MTK_PIN(
13209 + 135, "GPIO135",
13210 + MTK_EINT_FUNCTION(0, 135),
13211 + DRV_GRP4,
13212 + MTK_FUNCTION(0, "GPIO135"),
13213 + MTK_FUNCTION(1, "WATCHDOG")
13214 + ),
13215 + MTK_PIN(
13216 + 136, "GPIO136",
13217 + MTK_EINT_FUNCTION(0, 136),
13218 + DRV_GRP4,
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")
13224 + ),
13225 + MTK_PIN(
13226 + 137, "GPIO137",
13227 + MTK_EINT_FUNCTION(0, 137),
13228 + DRV_GRP4,
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")
13233 + ),
13234 + MTK_PIN(
13235 + 138, "GPIO138",
13236 + MTK_EINT_FUNCTION(0, 138),
13237 + DRV_GRP4,
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")
13243 + ),
13244 + MTK_PIN(
13245 + 139, "GPIO139",
13246 + MTK_EINT_FUNCTION(0, 139),
13247 + DRV_GRP4,
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")
13253 + ),
13254 + MTK_PIN(
13255 + 140, "GPIO140",
13256 + MTK_EINT_FUNCTION(0, 140),
13257 + DRV_GRP4,
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")
13263 + ),
13264 + MTK_PIN(
13265 + 141, "GPIO141",
13266 + MTK_EINT_FUNCTION(0, 141),
13267 + DRV_GRP4,
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")
13272 + ),
13273 + MTK_PIN(
13274 + 142, "GPIO142",
13275 + MTK_EINT_FUNCTION(0, 142),
13276 + DRV_GRP4,
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")
13283 + ),
13284 + MTK_PIN(
13285 + 143, "GPIO143",
13286 + MTK_EINT_FUNCTION(0, 143),
13287 + DRV_GRP4,
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")
13295 + ),
13296 + MTK_PIN(
13297 + 144, "GPIO144",
13298 + MTK_EINT_FUNCTION(0, 144),
13299 + DRV_GRP4,
13300 + MTK_FUNCTION(0, "GPIO144"),
13301 + MTK_FUNCTION(1, "PWRAP_SPI0_MI"),
13302 + MTK_FUNCTION(2, "PWRAP_SPI0_MO")
13303 + ),
13304 + MTK_PIN(
13305 + 145, "GPIO145",
13306 + MTK_EINT_FUNCTION(0, 145),
13307 + DRV_GRP4,
13308 + MTK_FUNCTION(0, "GPIO145"),
13309 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
13310 + ),
13311 + MTK_PIN(
13312 + 146, "GPIO146",
13313 + MTK_EINT_FUNCTION(0, 146),
13314 + DRV_GRP4,
13315 + MTK_FUNCTION(0, "GPIO146"),
13316 + MTK_FUNCTION(1, "PWRAP_SPI0_MO"),
13317 + MTK_FUNCTION(2, "PWRAP_SPI0_MI")
13318 + ),
13319 + MTK_PIN(
13320 + 147, "GPIO147",
13321 + MTK_EINT_FUNCTION(0, 147),
13322 + DRV_GRP4,
13323 + MTK_FUNCTION(0, "GPIO147"),
13324 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
13325 + ),
13326 + MTK_PIN(
13327 + 148, "GPIO148",
13328 + MTK_EINT_FUNCTION(0, 148),
13329 + DRV_GRP4,
13330 + MTK_FUNCTION(0, "GPIO148"),
13331 + MTK_FUNCTION(1, "SRCLKENA0")
13332 + ),
13333 + MTK_PIN(
13334 + 149, "GPIO149",
13335 + MTK_EINT_FUNCTION(0, 149),
13336 + DRV_GRP4,
13337 + MTK_FUNCTION(0, "GPIO149"),
13338 + MTK_FUNCTION(1, "SRCLKENA1")
13339 + ),
13340 + MTK_PIN(
13341 + 150, "GPIO150",
13342 + MTK_EINT_FUNCTION(0, 150),
13343 + DRV_GRP4,
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")
13349 + ),
13350 + MTK_PIN(
13351 + 151, "GPIO151",
13352 + MTK_EINT_FUNCTION(0, 151),
13353 + DRV_GRP4,
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")
13359 + ),
13360 + MTK_PIN(
13361 + 152, "GPIO152",
13362 + MTK_EINT_FUNCTION(0, 152),
13363 + DRV_GRP4,
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")
13369 + ),
13370 + MTK_PIN(
13371 + 153, "GPIO153",
13372 + MTK_EINT_FUNCTION(0, 153),
13373 + DRV_GRP4,
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")
13379 + ),
13380 + MTK_PIN(
13381 + 154, "GPIO154",
13382 + MTK_EINT_FUNCTION(0, 154),
13383 + DRV_GRP4,
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")
13388 + ),
13389 + MTK_PIN(
13390 + 155, "GPIO155",
13391 + MTK_EINT_FUNCTION(0, 155),
13392 + DRV_GRP4,
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")
13398 + ),
13399 + MTK_PIN(
13400 + 156, "GPIO156",
13401 + MTK_EINT_FUNCTION(0, 156),
13402 + DRV_GRP4,
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")
13410 + ),
13411 + MTK_PIN(
13412 + 157, "GPIO157",
13413 + MTK_EINT_FUNCTION(0, 157),
13414 + DRV_GRP4,
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")
13422 + ),
13423 + MTK_PIN(
13424 + 158, "GPIO158",
13425 + MTK_EINT_FUNCTION(0, 158),
13426 + DRV_GRP4,
13427 + MTK_FUNCTION(0, "GPIO158"),
13428 + MTK_FUNCTION(1, "ANT_SEL3")
13429 + ),
13430 + MTK_PIN(
13431 + 159, "GPIO159",
13432 + MTK_EINT_FUNCTION(0, 159),
13433 + DRV_GRP4,
13434 + MTK_FUNCTION(0, "GPIO159"),
13435 + MTK_FUNCTION(1, "ANT_SEL4")
13436 + ),
13437 + MTK_PIN(
13438 + 160, "GPIO160",
13439 + MTK_EINT_FUNCTION(0, 160),
13440 + DRV_GRP4,
13441 + MTK_FUNCTION(0, "GPIO160"),
13442 + MTK_FUNCTION(1, "ANT_SEL5")
13443 + ),
13444 + MTK_PIN(
13445 + 161, "GPIO161",
13446 + MTK_EINT_FUNCTION(0, 161),
13447 + DRV_GRP4,
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")
13456 + ),
13457 + MTK_PIN(
13458 + 162, "GPIO162",
13459 + MTK_EINT_FUNCTION(0, 162),
13460 + DRV_GRP4,
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")
13468 + ),
13469 + MTK_PIN(
13470 + 163, "GPIO163",
13471 + MTK_EINT_FUNCTION(0, 163),
13472 + DRV_GRP4,
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")
13480 + ),
13481 + MTK_PIN(
13482 + 164, "GPIO164",
13483 + MTK_EINT_FUNCTION(0, 164),
13484 + DRV_GRP4,
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")
13492 + ),
13493 + MTK_PIN(
13494 + 165, "GPIO165",
13495 + MTK_EINT_FUNCTION(0, 165),
13496 + DRV_GRP4,
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")
13503 + ),
13504 + MTK_PIN(
13505 + 166, "GPIO166",
13506 + MTK_EINT_FUNCTION(0, 166),
13507 + DRV_GRP4,
13508 + MTK_FUNCTION(0, "GPIO166"),
13509 + MTK_FUNCTION(1, "ANT_SEL6")
13510 + ),
13511 + MTK_PIN(
13512 + 167, "GPIO167",
13513 + MTK_EINT_FUNCTION(0, 167),
13514 + DRV_GRP4,
13515 + MTK_FUNCTION(0, "GPIO167"),
13516 + MTK_FUNCTION(1, "RFIC0_BSI_EN"),
13517 + MTK_FUNCTION(2, "SPM_BSI_EN")
13518 + ),
13519 + MTK_PIN(
13520 + 168, "GPIO168",
13521 + MTK_EINT_FUNCTION(0, 168),
13522 + DRV_GRP4,
13523 + MTK_FUNCTION(0, "GPIO168"),
13524 + MTK_FUNCTION(1, "RFIC0_BSI_CK"),
13525 + MTK_FUNCTION(2, "SPM_BSI_CK")
13526 + ),
13527 + MTK_PIN(
13528 + 169, "GPIO169",
13529 + MTK_EINT_FUNCTION(0, 169),
13530 + DRV_GRP4,
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")
13539 + ),
13540 + MTK_PIN(
13541 + 170, "GPIO170",
13542 + MTK_EINT_FUNCTION(0, 170),
13543 + DRV_GRP4,
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")
13552 + ),
13553 + MTK_PIN(
13554 + 171, "GPIO171",
13555 + MTK_EINT_FUNCTION(0, 184),
13556 + DRV_GRP4,
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")
13565 + ),
13566 + MTK_PIN(
13567 + 172, "GPIO172",
13568 + MTK_EINT_FUNCTION(0, 185),
13569 + DRV_GRP4,
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")
13578 + ),
13579 + MTK_PIN(
13580 + 173, "GPIO173",
13581 + MTK_EINT_FUNCTION(0, 186),
13582 + DRV_GRP4,
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")
13591 + ),
13592 + MTK_PIN(
13593 + 174, "GPIO174",
13594 + MTK_EINT_FUNCTION(0, 187),
13595 + DRV_GRP4,
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")
13604 + ),
13605 + MTK_PIN(
13606 + 175, "GPIO175",
13607 + MTK_EINT_FUNCTION(0, 188),
13608 + DRV_GRP4,
13609 + MTK_FUNCTION(0, "GPIO175"),
13610 + MTK_FUNCTION(1, "ANT_SEL7")
13611 + ),
13612 + MTK_PIN(
13613 + 176, "GPIO176",
13614 + MTK_EINT_FUNCTION(0, 189),
13615 + DRV_GRP4,
13616 + MTK_FUNCTION(0, "GPIO176")
13617 + ),
13618 + MTK_PIN(
13619 + 177, "GPIO177",
13620 + MTK_EINT_FUNCTION(0, 190),
13621 + DRV_GRP4,
13622 + MTK_FUNCTION(0, "GPIO177")
13623 + ),
13624 + MTK_PIN(
13625 + 178, "GPIO178",
13626 + MTK_EINT_FUNCTION(0, 191),
13627 + DRV_GRP4,
13628 + MTK_FUNCTION(0, "GPIO178")
13629 + ),
13630 + MTK_PIN(
13631 + 179, "GPIO179",
13632 + MTK_EINT_FUNCTION(0, 192),
13633 + DRV_GRP4,
13634 + MTK_FUNCTION(0, "GPIO179")
13635 + ),
13636 + MTK_PIN(
13637 + 180, "GPIO180",
13638 + MTK_EINT_FUNCTION(0, 171),
13639 + DRV_GRP4,
13640 + MTK_FUNCTION(0, "GPIO180")
13641 + ),
13642 + MTK_PIN(
13643 + 181, "GPIO181",
13644 + MTK_EINT_FUNCTION(0, 172),
13645 + DRV_GRP4,
13646 + MTK_FUNCTION(0, "GPIO181")
13647 + ),
13648 + MTK_PIN(
13649 + 182, "GPIO182",
13650 + MTK_EINT_FUNCTION(0, 173),
13651 + DRV_GRP4,
13652 + MTK_FUNCTION(0, "GPIO182")
13653 + ),
13654 + MTK_PIN(
13655 + 183, "GPIO183",
13656 + MTK_EINT_FUNCTION(0, 174),
13657 + DRV_GRP4,
13658 + MTK_FUNCTION(0, "GPIO183")
13659 + ),
13660 + MTK_PIN(
13661 + 184, "GPIO184",
13662 + MTK_EINT_FUNCTION(0, 175),
13663 + DRV_GRP4,
13664 + MTK_FUNCTION(0, "GPIO184")
13665 + ),
13666 + MTK_PIN(
13667 + 185, "GPIO185",
13668 + MTK_EINT_FUNCTION(0, 177),
13669 + DRV_GRP4,
13670 + MTK_FUNCTION(0, "GPIO185")
13671 + ),
13672 + MTK_PIN(
13673 + 186, "GPIO186",
13674 + MTK_EINT_FUNCTION(0, 178),
13675 + DRV_GRP4,
13676 + MTK_FUNCTION(0, "GPIO186")
13677 + ),
13678 + MTK_PIN(
13679 + 187, "GPIO187",
13680 + MTK_EINT_FUNCTION(0, 179),
13681 + DRV_GRP4,
13682 + MTK_FUNCTION(0, "GPIO187")
13683 + ),
13684 + MTK_PIN(
13685 + 188, "GPIO188",
13686 + MTK_EINT_FUNCTION(0, 180),
13687 + DRV_GRP4,
13688 + MTK_FUNCTION(0, "GPIO188")
13689 + ),
13690 + MTK_PIN(
13691 + 189, "GPIO189",
13692 + MTK_EINT_FUNCTION(0, 181),
13693 + DRV_GRP4,
13694 + MTK_FUNCTION(0, "GPIO189")
13695 + ),
13696 + MTK_PIN(
13697 + 190, "GPIO190",
13698 + MTK_EINT_FUNCTION(0, 182),
13699 + DRV_GRP4,
13700 + MTK_FUNCTION(0, "GPIO190")
13701 + ),
13702 + MTK_PIN(
13703 + 191, "GPIO191",
13704 + MTK_EINT_FUNCTION(0, 183),
13705 + DRV_GRP4,
13706 + MTK_FUNCTION(0, "GPIO191")
13707 + ),
13708 +};
13709 +
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
13714 --- /dev/null
13715 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8516.h
13716 @@ -0,0 +1,1182 @@
13717 +/* SPDX-License-Identifier: GPL-2.0 */
13718 +/*
13719 + * Copyright (C) 2019 MediaTek Inc.
13720 + */
13721 +#ifndef __PINCTRL_MTK_MT8516_H
13722 +#define __PINCTRL_MTK_MT8516_H
13723 +
13724 +#include <linux/pinctrl/pinctrl.h>
13725 +#include "pinctrl-mtk-common.h"
13726 +
13727 +static const struct mtk_desc_pin mtk_pins_mt8516[] = {
13728 + MTK_PIN(
13729 + PINCTRL_PIN(0, "EINT0"),
13730 + NULL, "mt8516",
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]")
13738 + ),
13739 + MTK_PIN(
13740 + PINCTRL_PIN(1, "EINT1"),
13741 + NULL, "mt8516",
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]")
13750 + ),
13751 + MTK_PIN(
13752 + PINCTRL_PIN(2, "EINT2"),
13753 + NULL, "mt8516",
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]")
13762 + ),
13763 + MTK_PIN(
13764 + PINCTRL_PIN(3, "EINT3"),
13765 + NULL, "mt8516",
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]")
13774 + ),
13775 + MTK_PIN(
13776 + PINCTRL_PIN(4, "EINT4"),
13777 + NULL, "mt8516",
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]")
13786 + ),
13787 + MTK_PIN(
13788 + PINCTRL_PIN(5, "EINT5"),
13789 + NULL, "mt8516",
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]")
13798 + ),
13799 + MTK_PIN(
13800 + PINCTRL_PIN(6, "EINT6"),
13801 + NULL, "mt8516",
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]")
13809 + ),
13810 + MTK_PIN(
13811 + PINCTRL_PIN(7, "EINT7"),
13812 + NULL, "mt8516",
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]")
13821 + ),
13822 + MTK_PIN(
13823 + PINCTRL_PIN(8, "EINT8"),
13824 + NULL, "mt8516",
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]")
13833 + ),
13834 + MTK_PIN(
13835 + PINCTRL_PIN(9, "EINT9"),
13836 + NULL, "mt8516",
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]")
13845 + ),
13846 + MTK_PIN(
13847 + PINCTRL_PIN(10, "EINT10"),
13848 + NULL, "mt8516",
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]")
13857 + ),
13858 + MTK_PIN(
13859 + PINCTRL_PIN(11, "EINT11"),
13860 + NULL, "mt8516",
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]")
13869 + ),
13870 + MTK_PIN(
13871 + PINCTRL_PIN(12, "EINT12"),
13872 + NULL, "mt8516",
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]")
13881 + ),
13882 + MTK_PIN(
13883 + PINCTRL_PIN(13, "EINT13"),
13884 + NULL, "mt8516",
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]")
13891 + ),
13892 + MTK_PIN(
13893 + PINCTRL_PIN(14, "EINT14"),
13894 + NULL, "mt8516",
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]")
13903 + ),
13904 + MTK_PIN(
13905 + PINCTRL_PIN(15, "EINT15"),
13906 + NULL, "mt8516",
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]")
13915 + ),
13916 + MTK_PIN(
13917 + PINCTRL_PIN(16, "EINT16"),
13918 + NULL, "mt8516",
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]")
13927 + ),
13928 + MTK_PIN(
13929 + PINCTRL_PIN(17, "EINT17"),
13930 + NULL, "mt8516",
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]")
13939 + ),
13940 + MTK_PIN(
13941 + PINCTRL_PIN(18, "EINT18"),
13942 + NULL, "mt8516",
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]")
13951 + ),
13952 + MTK_PIN(
13953 + PINCTRL_PIN(19, "EINT19"),
13954 + NULL, "mt8516",
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]")
13964 + ),
13965 + MTK_PIN(
13966 + PINCTRL_PIN(20, "EINT20"),
13967 + NULL, "mt8516",
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]")
13976 + ),
13977 + MTK_PIN(
13978 + PINCTRL_PIN(21, "EINT21"),
13979 + NULL, "mt8516",
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]")
13986 + ),
13987 + MTK_PIN(
13988 + PINCTRL_PIN(22, "EINT22"),
13989 + NULL, "mt8516",
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]")
13998 + ),
13999 + MTK_PIN(
14000 + PINCTRL_PIN(23, "EINT23"),
14001 + NULL, "mt8516",
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]")
14010 + ),
14011 + MTK_PIN(
14012 + PINCTRL_PIN(24, "EINT24"),
14013 + NULL, "mt8516",
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]")
14021 + ),
14022 + MTK_PIN(
14023 + PINCTRL_PIN(25, "EINT25"),
14024 + NULL, "mt8516",
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]")
14032 + ),
14033 + MTK_PIN(
14034 + PINCTRL_PIN(26, "PWRAP_SPI0_MI"),
14035 + NULL, "mt8516",
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")
14040 + ),
14041 + MTK_PIN(
14042 + PINCTRL_PIN(27, "PWRAP_SPI0_MO"),
14043 + NULL, "mt8516",
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")
14048 + ),
14049 + MTK_PIN(
14050 + PINCTRL_PIN(28, "PWRAP_INT"),
14051 + NULL, "mt8516",
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")
14058 + ),
14059 + MTK_PIN(
14060 + PINCTRL_PIN(29, "PWRAP_SPI0_CK"),
14061 + NULL, "mt8516",
14062 + MTK_EINT_FUNCTION(0, 29),
14063 + MTK_FUNCTION(0, "GPIO29"),
14064 + MTK_FUNCTION(1, "PWRAP_SPI0_CK")
14065 + ),
14066 + MTK_PIN(
14067 + PINCTRL_PIN(30, "PWRAP_SPI0_CSN"),
14068 + NULL, "mt8516",
14069 + MTK_EINT_FUNCTION(0, 30),
14070 + MTK_FUNCTION(0, "GPIO30"),
14071 + MTK_FUNCTION(1, "PWRAP_SPI0_CSN")
14072 + ),
14073 + MTK_PIN(
14074 + PINCTRL_PIN(31, "RTC32K_CK"),
14075 + NULL, "mt8516",
14076 + MTK_EINT_FUNCTION(0, 31),
14077 + MTK_FUNCTION(0, "GPIO31"),
14078 + MTK_FUNCTION(1, "RTC32K_CK")
14079 + ),
14080 + MTK_PIN(
14081 + PINCTRL_PIN(32, "WATCHDOG"),
14082 + NULL, "mt8516",
14083 + MTK_EINT_FUNCTION(0, 32),
14084 + MTK_FUNCTION(0, "GPIO32"),
14085 + MTK_FUNCTION(1, "WATCHDOG")
14086 + ),
14087 + MTK_PIN(
14088 + PINCTRL_PIN(33, "SRCLKENA"),
14089 + NULL, "mt8516",
14090 + MTK_EINT_FUNCTION(0, 33),
14091 + MTK_FUNCTION(0, "GPIO33"),
14092 + MTK_FUNCTION(1, "SRCLKENA0")
14093 + ),
14094 + MTK_PIN(
14095 + PINCTRL_PIN(34, "URXD2"),
14096 + NULL, "mt8516",
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]")
14104 + ),
14105 + MTK_PIN(
14106 + PINCTRL_PIN(35, "UTXD2"),
14107 + NULL, "mt8516",
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]")
14115 + ),
14116 + MTK_PIN(
14117 + PINCTRL_PIN(36, "MRG_CLK"),
14118 + NULL, "mt8516",
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]")
14127 + ),
14128 + MTK_PIN(
14129 + PINCTRL_PIN(37, "MRG_SYNC"),
14130 + NULL, "mt8516",
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]")
14139 + ),
14140 + MTK_PIN(
14141 + PINCTRL_PIN(38, "MRG_DI"),
14142 + NULL, "mt8516",
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]")
14151 + ),
14152 + MTK_PIN(
14153 + PINCTRL_PIN(39, "MRG_DO"),
14154 + NULL, "mt8516",
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]")
14163 + ),
14164 + MTK_PIN(
14165 + PINCTRL_PIN(40, "KPROW0"),
14166 + NULL, "mt8516",
14167 + MTK_EINT_FUNCTION(0, 40),
14168 + MTK_FUNCTION(0, "GPIO40"),
14169 + MTK_FUNCTION(1, "KPROW0"),
14170 + MTK_FUNCTION(7, "DBG_MON_B[4]")
14171 + ),
14172 + MTK_PIN(
14173 + PINCTRL_PIN(41, "KPROW1"),
14174 + NULL, "mt8516",
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]")
14181 + ),
14182 + MTK_PIN(
14183 + PINCTRL_PIN(42, "KPCOL0"),
14184 + NULL, "mt8516",
14185 + MTK_EINT_FUNCTION(0, 42),
14186 + MTK_FUNCTION(0, "GPIO42"),
14187 + MTK_FUNCTION(1, "KPCOL0"),
14188 + MTK_FUNCTION(7, "DBG_MON_B[6]")
14189 + ),
14190 + MTK_PIN(
14191 + PINCTRL_PIN(43, "KPCOL1"),
14192 + NULL, "mt8516",
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]")
14200 + ),
14201 + MTK_PIN(
14202 + PINCTRL_PIN(44, "JTMS"),
14203 + NULL, "mt8516",
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")
14209 + ),
14210 + MTK_PIN(
14211 + PINCTRL_PIN(45, "JTCK"),
14212 + NULL, "mt8516",
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")
14218 + ),
14219 + MTK_PIN(
14220 + PINCTRL_PIN(46, "JTDI"),
14221 + NULL, "mt8516",
14222 + MTK_EINT_FUNCTION(0, 46),
14223 + MTK_FUNCTION(0, "GPIO46"),
14224 + MTK_FUNCTION(1, "JTDI"),
14225 + MTK_FUNCTION(2, "CONN_MCU_TDI")
14226 + ),
14227 + MTK_PIN(
14228 + PINCTRL_PIN(47, "JTDO"),
14229 + NULL, "mt8516",
14230 + MTK_EINT_FUNCTION(0, 47),
14231 + MTK_FUNCTION(0, "GPIO47"),
14232 + MTK_FUNCTION(1, "JTDO"),
14233 + MTK_FUNCTION(2, "CONN_MCU_TDO")
14234 + ),
14235 + MTK_PIN(
14236 + PINCTRL_PIN(48, "SPI_CS"),
14237 + NULL, "mt8516",
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]")
14244 + ),
14245 + MTK_PIN(
14246 + PINCTRL_PIN(49, "SPI_CK"),
14247 + NULL, "mt8516",
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]")
14254 + ),
14255 + MTK_PIN(
14256 + PINCTRL_PIN(50, "SPI_MI"),
14257 + NULL, "mt8516",
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]")
14265 + ),
14266 + MTK_PIN(
14267 + PINCTRL_PIN(51, "SPI_MO"),
14268 + NULL, "mt8516",
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]")
14276 + ),
14277 + MTK_PIN(
14278 + PINCTRL_PIN(52, "SDA1"),
14279 + NULL, "mt8516",
14280 + MTK_EINT_FUNCTION(0, 52),
14281 + MTK_FUNCTION(0, "GPIO52"),
14282 + MTK_FUNCTION(1, "SDA1_0")
14283 + ),
14284 + MTK_PIN(
14285 + PINCTRL_PIN(53, "SCL1"),
14286 + NULL, "mt8516",
14287 + MTK_EINT_FUNCTION(0, 53),
14288 + MTK_FUNCTION(0, "GPIO53"),
14289 + MTK_FUNCTION(1, "SCL1_0")
14290 + ),
14291 + MTK_PIN(
14292 + PINCTRL_PIN(54, "GPIO54"),
14293 + NULL, "mt8516",
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]")
14298 + ),
14299 + MTK_PIN(
14300 + PINCTRL_PIN(55, "I2S_DATA_IN"),
14301 + NULL, "mt8516",
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]")
14311 + ),
14312 + MTK_PIN(
14313 + PINCTRL_PIN(56, "I2S_LRCK"),
14314 + NULL, "mt8516",
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]")
14323 + ),
14324 + MTK_PIN(
14325 + PINCTRL_PIN(57, "I2S_BCK"),
14326 + NULL, "mt8516",
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]")
14336 + ),
14337 + MTK_PIN(
14338 + PINCTRL_PIN(58, "SDA0"),
14339 + NULL, "mt8516",
14340 + MTK_EINT_FUNCTION(0, 58),
14341 + MTK_FUNCTION(0, "GPIO58"),
14342 + MTK_FUNCTION(1, "SDA0_0")
14343 + ),
14344 + MTK_PIN(
14345 + PINCTRL_PIN(59, "SCL0"),
14346 + NULL, "mt8516",
14347 + MTK_EINT_FUNCTION(0, 59),
14348 + MTK_FUNCTION(0, "GPIO59"),
14349 + MTK_FUNCTION(1, "SCL0_0")
14350 + ),
14351 + MTK_PIN(
14352 + PINCTRL_PIN(60, "SDA2"),
14353 + NULL, "mt8516",
14354 + MTK_EINT_FUNCTION(0, 60),
14355 + MTK_FUNCTION(0, "GPIO60"),
14356 + MTK_FUNCTION(1, "SDA2_0"),
14357 + MTK_FUNCTION(2, "PWM_B")
14358 + ),
14359 + MTK_PIN(
14360 + PINCTRL_PIN(61, "SCL2"),
14361 + NULL, "mt8516",
14362 + MTK_EINT_FUNCTION(0, 61),
14363 + MTK_FUNCTION(0, "GPIO61"),
14364 + MTK_FUNCTION(1, "SCL2_0"),
14365 + MTK_FUNCTION(2, "PWM_C")
14366 + ),
14367 + MTK_PIN(
14368 + PINCTRL_PIN(62, "URXD0"),
14369 + NULL, "mt8516",
14370 + MTK_EINT_FUNCTION(0, 62),
14371 + MTK_FUNCTION(0, "GPIO62"),
14372 + MTK_FUNCTION(1, "URXD0"),
14373 + MTK_FUNCTION(2, "UTXD0")
14374 + ),
14375 + MTK_PIN(
14376 + PINCTRL_PIN(63, "UTXD0"),
14377 + NULL, "mt8516",
14378 + MTK_EINT_FUNCTION(0, 63),
14379 + MTK_FUNCTION(0, "GPIO63"),
14380 + MTK_FUNCTION(1, "UTXD0"),
14381 + MTK_FUNCTION(2, "URXD0")
14382 + ),
14383 + MTK_PIN(
14384 + PINCTRL_PIN(64, "URXD1"),
14385 + NULL, "mt8516",
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]")
14391 + ),
14392 + MTK_PIN(
14393 + PINCTRL_PIN(65, "UTXD1"),
14394 + NULL, "mt8516",
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]")
14400 + ),
14401 + MTK_PIN(
14402 + PINCTRL_PIN(66, "LCM_RST"),
14403 + NULL, "mt8516",
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]")
14409 + ),
14410 + MTK_PIN(
14411 + PINCTRL_PIN(67, "GPIO67"),
14412 + NULL, "mt8516",
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]")
14417 + ),
14418 + MTK_PIN(
14419 + PINCTRL_PIN(68, "MSDC2_CMD"),
14420 + NULL, "mt8516",
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]")
14429 + ),
14430 + MTK_PIN(
14431 + PINCTRL_PIN(69, "MSDC2_CLK"),
14432 + NULL, "mt8516",
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]")
14441 + ),
14442 + MTK_PIN(
14443 + PINCTRL_PIN(70, "MSDC2_DAT0"),
14444 + NULL, "mt8516",
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]")
14452 + ),
14453 + MTK_PIN(
14454 + PINCTRL_PIN(71, "MSDC2_DAT1"),
14455 + NULL, "mt8516",
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]")
14465 + ),
14466 + MTK_PIN(
14467 + PINCTRL_PIN(72, "MSDC2_DAT2"),
14468 + NULL, "mt8516",
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]")
14477 + ),
14478 + MTK_PIN(
14479 + PINCTRL_PIN(73, "MSDC2_DAT3"),
14480 + NULL, "mt8516",
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]")
14490 + ),
14491 + MTK_PIN(
14492 + PINCTRL_PIN(74, "TDN3"),
14493 + NULL, "mt8516",
14494 + MTK_EINT_FUNCTION(0, 74),
14495 + MTK_FUNCTION(0, "GPIO74"),
14496 + MTK_FUNCTION(1, "TDN3")
14497 + ),
14498 + MTK_PIN(
14499 + PINCTRL_PIN(75, "TDP3"),
14500 + NULL, "mt8516",
14501 + MTK_EINT_FUNCTION(0, 75),
14502 + MTK_FUNCTION(0, "GPIO75"),
14503 + MTK_FUNCTION(1, "TDP3")
14504 + ),
14505 + MTK_PIN(
14506 + PINCTRL_PIN(76, "TDN2"),
14507 + NULL, "mt8516",
14508 + MTK_EINT_FUNCTION(0, 76),
14509 + MTK_FUNCTION(0, "GPIO76"),
14510 + MTK_FUNCTION(1, "TDN2")
14511 + ),
14512 + MTK_PIN(
14513 + PINCTRL_PIN(77, "TDP2"),
14514 + NULL, "mt8516",
14515 + MTK_EINT_FUNCTION(0, 77),
14516 + MTK_FUNCTION(0, "GPIO77"),
14517 + MTK_FUNCTION(1, "TDP2")
14518 + ),
14519 + MTK_PIN(
14520 + PINCTRL_PIN(78, "TCN"),
14521 + NULL, "mt8516",
14522 + MTK_EINT_FUNCTION(0, 78),
14523 + MTK_FUNCTION(0, "GPIO78"),
14524 + MTK_FUNCTION(1, "TCN")
14525 + ),
14526 + MTK_PIN(
14527 + PINCTRL_PIN(79, "TCP"),
14528 + NULL, "mt8516",
14529 + MTK_EINT_FUNCTION(0, 79),
14530 + MTK_FUNCTION(0, "GPIO79"),
14531 + MTK_FUNCTION(1, "TCP")
14532 + ),
14533 + MTK_PIN(
14534 + PINCTRL_PIN(80, "TDN1"),
14535 + NULL, "mt8516",
14536 + MTK_EINT_FUNCTION(0, 80),
14537 + MTK_FUNCTION(0, "GPIO80"),
14538 + MTK_FUNCTION(1, "TDN1")
14539 + ),
14540 + MTK_PIN(
14541 + PINCTRL_PIN(81, "TDP1"),
14542 + NULL, "mt8516",
14543 + MTK_EINT_FUNCTION(0, 81),
14544 + MTK_FUNCTION(0, "GPIO81"),
14545 + MTK_FUNCTION(1, "TDP1")
14546 + ),
14547 + MTK_PIN(
14548 + PINCTRL_PIN(82, "TDN0"),
14549 + NULL, "mt8516",
14550 + MTK_EINT_FUNCTION(0, 82),
14551 + MTK_FUNCTION(0, "GPIO82"),
14552 + MTK_FUNCTION(1, "TDN0")
14553 + ),
14554 + MTK_PIN(
14555 + PINCTRL_PIN(83, "TDP0"),
14556 + NULL, "mt8516",
14557 + MTK_EINT_FUNCTION(0, 83),
14558 + MTK_FUNCTION(0, "GPIO83"),
14559 + MTK_FUNCTION(1, "TDP0")
14560 + ),
14561 + MTK_PIN(
14562 + PINCTRL_PIN(84, "RDN0"),
14563 + NULL, "mt8516",
14564 + MTK_EINT_FUNCTION(0, 84),
14565 + MTK_FUNCTION(0, "GPIO84"),
14566 + MTK_FUNCTION(1, "RDN0")
14567 + ),
14568 + MTK_PIN(
14569 + PINCTRL_PIN(85, "RDP0"),
14570 + NULL, "mt8516",
14571 + MTK_EINT_FUNCTION(0, 85),
14572 + MTK_FUNCTION(0, "GPIO85"),
14573 + MTK_FUNCTION(1, "RDP0")
14574 + ),
14575 + MTK_PIN(
14576 + PINCTRL_PIN(86, "RDN1"),
14577 + NULL, "mt8516",
14578 + MTK_EINT_FUNCTION(0, 86),
14579 + MTK_FUNCTION(0, "GPIO86"),
14580 + MTK_FUNCTION(1, "RDN1")
14581 + ),
14582 + MTK_PIN(
14583 + PINCTRL_PIN(87, "RDP1"),
14584 + NULL, "mt8516",
14585 + MTK_EINT_FUNCTION(0, 87),
14586 + MTK_FUNCTION(0, "GPIO87"),
14587 + MTK_FUNCTION(1, "RDP1")
14588 + ),
14589 + MTK_PIN(
14590 + PINCTRL_PIN(88, "RCN"),
14591 + NULL, "mt8516",
14592 + MTK_EINT_FUNCTION(0, 88),
14593 + MTK_FUNCTION(0, "GPIO88"),
14594 + MTK_FUNCTION(1, "RCN")
14595 + ),
14596 + MTK_PIN(
14597 + PINCTRL_PIN(89, "RCP"),
14598 + NULL, "mt8516",
14599 + MTK_EINT_FUNCTION(0, 89),
14600 + MTK_FUNCTION(0, "GPIO89"),
14601 + MTK_FUNCTION(1, "RCP")
14602 + ),
14603 + MTK_PIN(
14604 + PINCTRL_PIN(90, "RDN2"),
14605 + NULL, "mt8516",
14606 + MTK_EINT_FUNCTION(0, 90),
14607 + MTK_FUNCTION(0, "GPIO90"),
14608 + MTK_FUNCTION(1, "RDN2"),
14609 + MTK_FUNCTION(2, "CMDAT8")
14610 + ),
14611 + MTK_PIN(
14612 + PINCTRL_PIN(91, "RDP2"),
14613 + NULL, "mt8516",
14614 + MTK_EINT_FUNCTION(0, 91),
14615 + MTK_FUNCTION(0, "GPIO91"),
14616 + MTK_FUNCTION(1, "RDP2"),
14617 + MTK_FUNCTION(2, "CMDAT9")
14618 + ),
14619 + MTK_PIN(
14620 + PINCTRL_PIN(92, "RDN3"),
14621 + NULL, "mt8516",
14622 + MTK_EINT_FUNCTION(0, 92),
14623 + MTK_FUNCTION(0, "GPIO92"),
14624 + MTK_FUNCTION(1, "RDN3"),
14625 + MTK_FUNCTION(2, "CMDAT4")
14626 + ),
14627 + MTK_PIN(
14628 + PINCTRL_PIN(93, "RDP3"),
14629 + NULL, "mt8516",
14630 + MTK_EINT_FUNCTION(0, 93),
14631 + MTK_FUNCTION(0, "GPIO93"),
14632 + MTK_FUNCTION(1, "RDP3"),
14633 + MTK_FUNCTION(2, "CMDAT5")
14634 + ),
14635 + MTK_PIN(
14636 + PINCTRL_PIN(94, "RCN_A"),
14637 + NULL, "mt8516",
14638 + MTK_EINT_FUNCTION(0, 94),
14639 + MTK_FUNCTION(0, "GPIO94"),
14640 + MTK_FUNCTION(1, "RCN_A"),
14641 + MTK_FUNCTION(2, "CMDAT6")
14642 + ),
14643 + MTK_PIN(
14644 + PINCTRL_PIN(95, "RCP_A"),
14645 + NULL, "mt8516",
14646 + MTK_EINT_FUNCTION(0, 95),
14647 + MTK_FUNCTION(0, "GPIO95"),
14648 + MTK_FUNCTION(1, "RCP_A"),
14649 + MTK_FUNCTION(2, "CMDAT7")
14650 + ),
14651 + MTK_PIN(
14652 + PINCTRL_PIN(96, "RDN1_A"),
14653 + NULL, "mt8516",
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")
14659 + ),
14660 + MTK_PIN(
14661 + PINCTRL_PIN(97, "RDP1_A"),
14662 + NULL, "mt8516",
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")
14668 + ),
14669 + MTK_PIN(
14670 + PINCTRL_PIN(98, "RDN0_A"),
14671 + NULL, "mt8516",
14672 + MTK_EINT_FUNCTION(0, 98),
14673 + MTK_FUNCTION(0, "GPIO98"),
14674 + MTK_FUNCTION(1, "RDN0_A"),
14675 + MTK_FUNCTION(2, "CMHSYNC")
14676 + ),
14677 + MTK_PIN(
14678 + PINCTRL_PIN(99, "RDP0_A"),
14679 + NULL, "mt8516",
14680 + MTK_EINT_FUNCTION(0, 99),
14681 + MTK_FUNCTION(0, "GPIO99"),
14682 + MTK_FUNCTION(1, "RDP0_A"),
14683 + MTK_FUNCTION(2, "CMVSYNC")
14684 + ),
14685 + MTK_PIN(
14686 + PINCTRL_PIN(100, "CMDAT0"),
14687 + NULL, "mt8516",
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]")
14695 + ),
14696 + MTK_PIN(
14697 + PINCTRL_PIN(101, "CMDAT1"),
14698 + NULL, "mt8516",
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]")
14707 + ),
14708 + MTK_PIN(
14709 + PINCTRL_PIN(102, "CMMCLK"),
14710 + NULL, "mt8516",
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]")
14717 + ),
14718 + MTK_PIN(
14719 + PINCTRL_PIN(103, "CMPCLK"),
14720 + NULL, "mt8516",
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]")
14728 + ),
14729 + MTK_PIN(
14730 + PINCTRL_PIN(104, "MSDC1_CMD"),
14731 + NULL, "mt8516",
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]")
14737 + ),
14738 + MTK_PIN(
14739 + PINCTRL_PIN(105, "MSDC1_CLK"),
14740 + NULL, "mt8516",
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]")
14746 + ),
14747 + MTK_PIN(
14748 + PINCTRL_PIN(106, "MSDC1_DAT0"),
14749 + NULL, "mt8516",
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]")
14755 + ),
14756 + MTK_PIN(
14757 + PINCTRL_PIN(107, "MSDC1_DAT1"),
14758 + NULL, "mt8516",
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]")
14764 + ),
14765 + MTK_PIN(
14766 + PINCTRL_PIN(108, "MSDC1_DAT2"),
14767 + NULL, "mt8516",
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]")
14773 + ),
14774 + MTK_PIN(
14775 + PINCTRL_PIN(109, "MSDC1_DAT3"),
14776 + NULL, "mt8516",
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]")
14782 + ),
14783 + MTK_PIN(
14784 + PINCTRL_PIN(110, "MSDC0_DAT7"),
14785 + NULL, "mt8516",
14786 + MTK_EINT_FUNCTION(0, 110),
14787 + MTK_FUNCTION(0, "GPIO110"),
14788 + MTK_FUNCTION(1, "MSDC0_DAT7"),
14789 + MTK_FUNCTION(4, "NLD7")
14790 + ),
14791 + MTK_PIN(
14792 + PINCTRL_PIN(111, "MSDC0_DAT6"),
14793 + NULL, "mt8516",
14794 + MTK_EINT_FUNCTION(0, 111),
14795 + MTK_FUNCTION(0, "GPIO111"),
14796 + MTK_FUNCTION(1, "MSDC0_DAT6"),
14797 + MTK_FUNCTION(4, "NLD6")
14798 + ),
14799 + MTK_PIN(
14800 + PINCTRL_PIN(112, "MSDC0_DAT5"),
14801 + NULL, "mt8516",
14802 + MTK_EINT_FUNCTION(0, 112),
14803 + MTK_FUNCTION(0, "GPIO112"),
14804 + MTK_FUNCTION(1, "MSDC0_DAT5"),
14805 + MTK_FUNCTION(4, "NLD4")
14806 + ),
14807 + MTK_PIN(
14808 + PINCTRL_PIN(113, "MSDC0_DAT4"),
14809 + NULL, "mt8516",
14810 + MTK_EINT_FUNCTION(0, 113),
14811 + MTK_FUNCTION(0, "GPIO113"),
14812 + MTK_FUNCTION(1, "MSDC0_DAT4"),
14813 + MTK_FUNCTION(4, "NLD3")
14814 + ),
14815 + MTK_PIN(
14816 + PINCTRL_PIN(114, "MSDC0_RSTB"),
14817 + NULL, "mt8516",
14818 + MTK_EINT_FUNCTION(0, 114),
14819 + MTK_FUNCTION(0, "GPIO114"),
14820 + MTK_FUNCTION(1, "MSDC0_RSTB"),
14821 + MTK_FUNCTION(4, "NLD0")
14822 + ),
14823 + MTK_PIN(
14824 + PINCTRL_PIN(115, "MSDC0_CMD"),
14825 + NULL, "mt8516",
14826 + MTK_EINT_FUNCTION(0, 115),
14827 + MTK_FUNCTION(0, "GPIO115"),
14828 + MTK_FUNCTION(1, "MSDC0_CMD"),
14829 + MTK_FUNCTION(4, "NALE")
14830 + ),
14831 + MTK_PIN(
14832 + PINCTRL_PIN(116, "MSDC0_CLK"),
14833 + NULL, "mt8516",
14834 + MTK_EINT_FUNCTION(0, 116),
14835 + MTK_FUNCTION(0, "GPIO116"),
14836 + MTK_FUNCTION(1, "MSDC0_CLK"),
14837 + MTK_FUNCTION(4, "NWEB")
14838 + ),
14839 + MTK_PIN(
14840 + PINCTRL_PIN(117, "MSDC0_DAT3"),
14841 + NULL, "mt8516",
14842 + MTK_EINT_FUNCTION(0, 117),
14843 + MTK_FUNCTION(0, "GPIO117"),
14844 + MTK_FUNCTION(1, "MSDC0_DAT3"),
14845 + MTK_FUNCTION(4, "NLD1")
14846 + ),
14847 + MTK_PIN(
14848 + PINCTRL_PIN(118, "MSDC0_DAT2"),
14849 + NULL, "mt8516",
14850 + MTK_EINT_FUNCTION(0, 118),
14851 + MTK_FUNCTION(0, "GPIO118"),
14852 + MTK_FUNCTION(1, "MSDC0_DAT2"),
14853 + MTK_FUNCTION(4, "NLD5")
14854 + ),
14855 + MTK_PIN(
14856 + PINCTRL_PIN(119, "MSDC0_DAT1"),
14857 + NULL, "mt8516",
14858 + MTK_EINT_FUNCTION(0, 119),
14859 + MTK_FUNCTION(0, "GPIO119"),
14860 + MTK_FUNCTION(1, "MSDC0_DAT1"),
14861 + MTK_FUNCTION(4, "NLD8")
14862 + ),
14863 + MTK_PIN(
14864 + PINCTRL_PIN(120, "MSDC0_DAT0"),
14865 + NULL, "mt8516",
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")
14871 + ),
14872 + MTK_PIN(
14873 + PINCTRL_PIN(121, "GPIO121"),
14874 + NULL, "mt8516",
14875 + MTK_EINT_FUNCTION(0, 121),
14876 + MTK_FUNCTION(0, "GPIO121")
14877 + ),
14878 + MTK_PIN(
14879 + PINCTRL_PIN(122, "GPIO122"),
14880 + NULL, "mt8516",
14881 + MTK_EINT_FUNCTION(0, 122),
14882 + MTK_FUNCTION(0, "GPIO122")
14883 + ),
14884 + MTK_PIN(
14885 + PINCTRL_PIN(123, "GPIO123"),
14886 + NULL, "mt8516",
14887 + MTK_EINT_FUNCTION(0, 123),
14888 + MTK_FUNCTION(0, "GPIO123")
14889 + ),
14890 + MTK_PIN(
14891 + PINCTRL_PIN(124, "GPIO124"),
14892 + NULL, "mt8516",
14893 + MTK_EINT_FUNCTION(0, 124),
14894 + MTK_FUNCTION(0, "GPIO124")
14895 + ),
14896 +};
14897 +
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
14902 --- /dev/null
14903 +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
14904 @@ -0,0 +1,947 @@
14905 +// SPDX-License-Identifier: GPL-2.0
14906 +/*
14907 + * MediaTek Pinctrl Paris Driver, which implement the vendor per-pin
14908 + * bindings for MediaTek SoC.
14909 + *
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>
14914 + */
14915 +
14916 +#include <linux/gpio/driver.h>
14917 +#include <dt-bindings/pinctrl/mt65xx.h>
14918 +#include "pinctrl-paris.h"
14919 +
14920 +#define PINCTRL_PINCTRL_DEV KBUILD_MODNAME
14921 +
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)
14928 +
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},
14935 +};
14936 +
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),
14944 +};
14945 +#endif
14946 +
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",
14952 +};
14953 +
14954 +static int mtk_pinmux_gpio_request_enable(struct pinctrl_dev *pctldev,
14955 + struct pinctrl_gpio_range *range,
14956 + unsigned int pin)
14957 +{
14958 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
14959 + const struct mtk_pin_desc *desc;
14960 +
14961 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14962 +
14963 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE,
14964 + hw->soc->gpio_m);
14965 +}
14966 +
14967 +static int mtk_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev,
14968 + struct pinctrl_gpio_range *range,
14969 + unsigned int pin, bool input)
14970 +{
14971 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
14972 + const struct mtk_pin_desc *desc;
14973 +
14974 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14975 +
14976 + /* hardware would take 0 as input direction */
14977 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR, !input);
14978 +}
14979 +
14980 +static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
14981 + unsigned int pin, unsigned long *config)
14982 +{
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;
14987 +
14988 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
14989 +
14990 + switch (param) {
14991 + case PIN_CONFIG_BIAS_DISABLE:
14992 + if (hw->soc->bias_disable_get) {
14993 + err = hw->soc->bias_disable_get(hw, desc, &ret);
14994 + if (err)
14995 + return err;
14996 + } else {
14997 + return -ENOTSUPP;
14998 + }
14999 + break;
15000 + case PIN_CONFIG_BIAS_PULL_UP:
15001 + if (hw->soc->bias_get) {
15002 + err = hw->soc->bias_get(hw, desc, 1, &ret);
15003 + if (err)
15004 + return err;
15005 + } else {
15006 + return -ENOTSUPP;
15007 + }
15008 + break;
15009 + case PIN_CONFIG_BIAS_PULL_DOWN:
15010 + if (hw->soc->bias_get) {
15011 + err = hw->soc->bias_get(hw, desc, 0, &ret);
15012 + if (err)
15013 + return err;
15014 + } else {
15015 + return -ENOTSUPP;
15016 + }
15017 + break;
15018 + case PIN_CONFIG_SLEW_RATE:
15019 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SR, &val);
15020 + if (err)
15021 + return err;
15022 +
15023 + if (!val)
15024 + return -EINVAL;
15025 +
15026 + break;
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);
15030 + if (err)
15031 + return err;
15032 +
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))
15036 + return -EINVAL;
15037 +
15038 + break;
15039 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
15040 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &val);
15041 + if (err)
15042 + return err;
15043 +
15044 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SMT, &val2);
15045 + if (err)
15046 + return err;
15047 +
15048 + if (val || !val2)
15049 + return -EINVAL;
15050 +
15051 + break;
15052 + case PIN_CONFIG_DRIVE_STRENGTH:
15053 + if (hw->soc->drive_get) {
15054 + err = hw->soc->drive_get(hw, desc, &ret);
15055 + if (err)
15056 + return err;
15057 + } else {
15058 + err = -ENOTSUPP;
15059 + }
15060 + break;
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;
15065 +
15066 + err = mtk_hw_get_value(hw, desc, reg, &val);
15067 + if (err)
15068 + return err;
15069 +
15070 + ret = val;
15071 +
15072 + break;
15073 + case MTK_PIN_CONFIG_PU_ADV:
15074 + case MTK_PIN_CONFIG_PD_ADV:
15075 + if (hw->soc->adv_pull_get) {
15076 + bool pullup;
15077 +
15078 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
15079 + err = hw->soc->adv_pull_get(hw, desc, pullup, &ret);
15080 + if (err)
15081 + return err;
15082 + } else {
15083 + return -ENOTSUPP;
15084 + }
15085 + break;
15086 + case MTK_PIN_CONFIG_DRV_ADV:
15087 + if (hw->soc->adv_drive_get) {
15088 + err = hw->soc->adv_drive_get(hw, desc, &ret);
15089 + if (err)
15090 + return err;
15091 + } else {
15092 + return -ENOTSUPP;
15093 + }
15094 + break;
15095 + default:
15096 + return -ENOTSUPP;
15097 + }
15098 +
15099 + *config = pinconf_to_config_packed(param, ret);
15100 +
15101 + return 0;
15102 +}
15103 +
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)
15107 +{
15108 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15109 + const struct mtk_pin_desc *desc;
15110 + int err = 0;
15111 + u32 reg;
15112 +
15113 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin];
15114 +
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);
15119 + if (err)
15120 + return err;
15121 + } else {
15122 + return -ENOTSUPP;
15123 + }
15124 + break;
15125 + case PIN_CONFIG_BIAS_PULL_UP:
15126 + if (hw->soc->bias_set) {
15127 + err = hw->soc->bias_set(hw, desc, 1);
15128 + if (err)
15129 + return err;
15130 + } else {
15131 + return -ENOTSUPP;
15132 + }
15133 + break;
15134 + case PIN_CONFIG_BIAS_PULL_DOWN:
15135 + if (hw->soc->bias_set) {
15136 + err = hw->soc->bias_set(hw, desc, 0);
15137 + if (err)
15138 + return err;
15139 + } else {
15140 + return -ENOTSUPP;
15141 + }
15142 + break;
15143 + case PIN_CONFIG_OUTPUT_ENABLE:
15144 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
15145 + MTK_DISABLE);
15146 + if (err)
15147 + goto err;
15148 +
15149 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15150 + MTK_OUTPUT);
15151 + if (err)
15152 + goto err;
15153 + break;
15154 + case PIN_CONFIG_INPUT_ENABLE:
15155 + if (hw->soc->ies_present) {
15156 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_IES,
15157 + MTK_ENABLE);
15158 + }
15159 +
15160 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15161 + MTK_INPUT);
15162 + if (err)
15163 + goto err;
15164 + break;
15165 + case PIN_CONFIG_SLEW_RATE:
15166 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SR,
15167 + arg);
15168 + if (err)
15169 + goto err;
15170 +
15171 + break;
15172 + case PIN_CONFIG_OUTPUT:
15173 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15174 + MTK_OUTPUT);
15175 + if (err)
15176 + goto err;
15177 +
15178 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO,
15179 + arg);
15180 + if (err)
15181 + goto err;
15182 + break;
15183 + case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
15184 + /* arg = 1: Input mode & SMT enable ;
15185 + * arg = 0: Output mode & SMT disable
15186 + */
15187 + arg = arg ? 2 : 1;
15188 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
15189 + arg & 1);
15190 + if (err)
15191 + goto err;
15192 +
15193 + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
15194 + !!(arg & 2));
15195 + if (err)
15196 + goto err;
15197 + break;
15198 + case PIN_CONFIG_DRIVE_STRENGTH:
15199 + if (hw->soc->drive_set) {
15200 + err = hw->soc->drive_set(hw, desc, arg);
15201 + if (err)
15202 + return err;
15203 + } else {
15204 + return -ENOTSUPP;
15205 + }
15206 + break;
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;
15211 +
15212 + err = mtk_hw_set_value(hw, desc, reg, arg);
15213 + if (err)
15214 + goto err;
15215 + break;
15216 + case MTK_PIN_CONFIG_PU_ADV:
15217 + case MTK_PIN_CONFIG_PD_ADV:
15218 + if (hw->soc->adv_pull_set) {
15219 + bool pullup;
15220 +
15221 + pullup = param == MTK_PIN_CONFIG_PU_ADV;
15222 + err = hw->soc->adv_pull_set(hw, desc, pullup,
15223 + arg);
15224 + if (err)
15225 + return err;
15226 + } else {
15227 + return -ENOTSUPP;
15228 + }
15229 + break;
15230 + case MTK_PIN_CONFIG_DRV_ADV:
15231 + if (hw->soc->adv_drive_set) {
15232 + err = hw->soc->adv_drive_set(hw, desc, arg);
15233 + if (err)
15234 + return err;
15235 + } else {
15236 + return -ENOTSUPP;
15237 + }
15238 + break;
15239 + default:
15240 + err = -ENOTSUPP;
15241 + }
15242 +
15243 +err:
15244 + return err;
15245 +}
15246 +
15247 +static struct mtk_pinctrl_group *
15248 +mtk_pctrl_find_group_by_pin(struct mtk_pinctrl *hw, u32 pin)
15249 +{
15250 + int i;
15251 +
15252 + for (i = 0; i < hw->soc->ngrps; i++) {
15253 + struct mtk_pinctrl_group *grp = hw->groups + i;
15254 +
15255 + if (grp->pin == pin)
15256 + return grp;
15257 + }
15258 +
15259 + return NULL;
15260 +}
15261 +
15262 +static const struct mtk_func_desc *
15263 +mtk_pctrl_find_function_by_pin(struct mtk_pinctrl *hw, u32 pin_num, u32 fnum)
15264 +{
15265 + const struct mtk_pin_desc *pin = hw->soc->pins + pin_num;
15266 + const struct mtk_func_desc *func = pin->funcs;
15267 +
15268 + while (func && func->name) {
15269 + if (func->muxval == fnum)
15270 + return func;
15271 + func++;
15272 + }
15273 +
15274 + return NULL;
15275 +}
15276 +
15277 +static bool mtk_pctrl_is_function_valid(struct mtk_pinctrl *hw, u32 pin_num,
15278 + u32 fnum)
15279 +{
15280 + int i;
15281 +
15282 + for (i = 0; i < hw->soc->npins; i++) {
15283 + const struct mtk_pin_desc *pin = hw->soc->pins + i;
15284 +
15285 + if (pin->number == pin_num) {
15286 + const struct mtk_func_desc *func = pin->funcs;
15287 +
15288 + while (func && func->name) {
15289 + if (func->muxval == fnum)
15290 + return true;
15291 + func++;
15292 + }
15293 +
15294 + break;
15295 + }
15296 + }
15297 +
15298 + return false;
15299 +}
15300 +
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)
15307 +{
15308 + bool ret;
15309 +
15310 + if (*num_maps == *reserved_maps)
15311 + return -ENOSPC;
15312 +
15313 + (*map)[*num_maps].type = PIN_MAP_TYPE_MUX_GROUP;
15314 + (*map)[*num_maps].data.mux.group = grp->name;
15315 +
15316 + ret = mtk_pctrl_is_function_valid(pctl, pin, fnum);
15317 + if (!ret) {
15318 + dev_err(pctl->dev, "invalid function %d on pin %d .\n",
15319 + fnum, pin);
15320 + return -EINVAL;
15321 + }
15322 +
15323 + (*map)[*num_maps].data.mux.function = mtk_gpio_functions[fnum];
15324 + (*num_maps)++;
15325 +
15326 + return 0;
15327 +}
15328 +
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)
15334 +{
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;
15344 +
15345 + pins = of_find_property(node, "pinmux", NULL);
15346 + if (!pins) {
15347 + dev_err(hw->dev, "missing pins property in node %pOFn .\n",
15348 + node);
15349 + return -EINVAL;
15350 + }
15351 +
15352 + err = pinconf_generic_parse_dt_config(node, pctldev, &configs,
15353 + &num_configs);
15354 + if (err)
15355 + return err;
15356 +
15357 + if (num_configs)
15358 + has_config = true;
15359 +
15360 + num_pins = pins->length / sizeof(u32);
15361 + num_funcs = num_pins;
15362 + maps_per_pin = 0;
15363 + if (num_funcs)
15364 + maps_per_pin++;
15365 + if (has_config && num_pins >= 1)
15366 + maps_per_pin++;
15367 +
15368 + if (!num_pins || !maps_per_pin) {
15369 + err = -EINVAL;
15370 + goto exit;
15371 + }
15372 +
15373 + reserve = num_pins * maps_per_pin;
15374 +
15375 + err = pinctrl_utils_reserve_map(pctldev, map, reserved_maps, num_maps,
15376 + reserve);
15377 + if (err < 0)
15378 + goto exit;
15379 +
15380 + for (i = 0; i < num_pins; i++) {
15381 + err = of_property_read_u32_index(node, "pinmux", i, &pinfunc);
15382 + if (err)
15383 + goto exit;
15384 +
15385 + pin = MTK_GET_PIN_NO(pinfunc);
15386 + func = MTK_GET_PIN_FUNC(pinfunc);
15387 +
15388 + if (pin >= hw->soc->npins ||
15389 + func >= ARRAY_SIZE(mtk_gpio_functions)) {
15390 + dev_err(hw->dev, "invalid pins value.\n");
15391 + err = -EINVAL;
15392 + goto exit;
15393 + }
15394 +
15395 + grp = mtk_pctrl_find_group_by_pin(hw, pin);
15396 + if (!grp) {
15397 + dev_err(hw->dev, "unable to match pin %d to group\n",
15398 + pin);
15399 + err = -EINVAL;
15400 + goto exit;
15401 + }
15402 +
15403 + err = mtk_pctrl_dt_node_to_map_func(hw, pin, func, grp, map,
15404 + reserved_maps, num_maps);
15405 + if (err < 0)
15406 + goto exit;
15407 +
15408 + if (has_config) {
15409 + err = pinctrl_utils_add_map_configs(pctldev, map,
15410 + reserved_maps,
15411 + num_maps,
15412 + grp->name,
15413 + configs,
15414 + num_configs,
15415 + PIN_MAP_TYPE_CONFIGS_GROUP);
15416 + if (err < 0)
15417 + goto exit;
15418 + }
15419 + }
15420 +
15421 + err = 0;
15422 +
15423 +exit:
15424 + kfree(configs);
15425 + return err;
15426 +}
15427 +
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)
15432 +{
15433 + struct device_node *np;
15434 + unsigned reserved_maps;
15435 + int ret;
15436 +
15437 + *map = NULL;
15438 + *num_maps = 0;
15439 + reserved_maps = 0;
15440 +
15441 + for_each_child_of_node(np_config, np) {
15442 + ret = mtk_pctrl_dt_subnode_to_map(pctldev, np, map,
15443 + &reserved_maps,
15444 + num_maps);
15445 + if (ret < 0) {
15446 + pinctrl_utils_free_map(pctldev, *map, *num_maps);
15447 + of_node_put(np);
15448 + return ret;
15449 + }
15450 + }
15451 +
15452 + return 0;
15453 +}
15454 +
15455 +static int mtk_pctrl_get_groups_count(struct pinctrl_dev *pctldev)
15456 +{
15457 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15458 +
15459 + return hw->soc->ngrps;
15460 +}
15461 +
15462 +static const char *mtk_pctrl_get_group_name(struct pinctrl_dev *pctldev,
15463 + unsigned group)
15464 +{
15465 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15466 +
15467 + return hw->groups[group].name;
15468 +}
15469 +
15470 +static int mtk_pctrl_get_group_pins(struct pinctrl_dev *pctldev,
15471 + unsigned group, const unsigned **pins,
15472 + unsigned *num_pins)
15473 +{
15474 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15475 +
15476 + *pins = (unsigned *)&hw->groups[group].pin;
15477 + *num_pins = 1;
15478 +
15479 + return 0;
15480 +}
15481 +
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,
15488 +};
15489 +
15490 +static int mtk_pmx_get_funcs_cnt(struct pinctrl_dev *pctldev)
15491 +{
15492 + return ARRAY_SIZE(mtk_gpio_functions);
15493 +}
15494 +
15495 +static const char *mtk_pmx_get_func_name(struct pinctrl_dev *pctldev,
15496 + unsigned selector)
15497 +{
15498 + return mtk_gpio_functions[selector];
15499 +}
15500 +
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)
15505 +{
15506 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15507 +
15508 + *groups = hw->grp_names;
15509 + *num_groups = hw->soc->ngrps;
15510 +
15511 + return 0;
15512 +}
15513 +
15514 +static int mtk_pmx_set_mux(struct pinctrl_dev *pctldev,
15515 + unsigned function,
15516 + unsigned group)
15517 +{
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;
15522 + bool ret;
15523 +
15524 + ret = mtk_pctrl_is_function_valid(hw, grp->pin, function);
15525 + if (!ret) {
15526 + dev_err(hw->dev, "invalid function %d on group %d .\n",
15527 + function, group);
15528 + return -EINVAL;
15529 + }
15530 +
15531 + desc_func = mtk_pctrl_find_function_by_pin(hw, grp->pin, function);
15532 + if (!desc_func)
15533 + return -EINVAL;
15534 +
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);
15537 +
15538 + return 0;
15539 +}
15540 +
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,
15548 +};
15549 +
15550 +static int mtk_pconf_group_get(struct pinctrl_dev *pctldev, unsigned group,
15551 + unsigned long *config)
15552 +{
15553 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15554 +
15555 + *config = hw->groups[group].config;
15556 +
15557 + return 0;
15558 +}
15559 +
15560 +static int mtk_pconf_group_set(struct pinctrl_dev *pctldev, unsigned group,
15561 + unsigned long *configs, unsigned num_configs)
15562 +{
15563 + struct mtk_pinctrl *hw = pinctrl_dev_get_drvdata(pctldev);
15564 + struct mtk_pinctrl_group *grp = &hw->groups[group];
15565 + int i, ret;
15566 +
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]));
15571 + if (ret < 0)
15572 + return ret;
15573 +
15574 + grp->config = configs[i];
15575 + }
15576 +
15577 + return 0;
15578 +}
15579 +
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,
15584 +};
15585 +
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,
15592 +};
15593 +
15594 +static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
15595 +{
15596 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15597 + const struct mtk_pin_desc *desc;
15598 + int value, err;
15599 +
15600 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15601 +
15602 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &value);
15603 + if (err)
15604 + return err;
15605 +
15606 + return !value;
15607 +}
15608 +
15609 +static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio)
15610 +{
15611 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15612 + const struct mtk_pin_desc *desc;
15613 + int value, err;
15614 +
15615 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15616 +
15617 + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value);
15618 + if (err)
15619 + return err;
15620 +
15621 + return !!value;
15622 +}
15623 +
15624 +static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
15625 +{
15626 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15627 + const struct mtk_pin_desc *desc;
15628 +
15629 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio];
15630 +
15631 + mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value);
15632 +}
15633 +
15634 +static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)
15635 +{
15636 + return pinctrl_gpio_direction_input(chip->base + gpio);
15637 +}
15638 +
15639 +static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
15640 + int value)
15641 +{
15642 + mtk_gpio_set(chip, gpio, value);
15643 +
15644 + return pinctrl_gpio_direction_output(chip->base + gpio);
15645 +}
15646 +
15647 +static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
15648 +{
15649 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15650 + const struct mtk_pin_desc *desc;
15651 +
15652 + if (!hw->eint)
15653 + return -ENOTSUPP;
15654 +
15655 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
15656 +
15657 + if (desc->eint.eint_n == EINT_NA)
15658 + return -ENOTSUPP;
15659 +
15660 + return mtk_eint_find_irq(hw->eint, desc->eint.eint_n);
15661 +}
15662 +
15663 +static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
15664 + unsigned long config)
15665 +{
15666 + struct mtk_pinctrl *hw = gpiochip_get_data(chip);
15667 + const struct mtk_pin_desc *desc;
15668 + u32 debounce;
15669 +
15670 + desc = (const struct mtk_pin_desc *)&hw->soc->pins[offset];
15671 +
15672 + if (!hw->eint ||
15673 + pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE ||
15674 + desc->eint.eint_n == EINT_NA)
15675 + return -ENOTSUPP;
15676 +
15677 + debounce = pinconf_to_config_argument(config);
15678 +
15679 + return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce);
15680 +}
15681 +
15682 +static int mtk_build_gpiochip(struct mtk_pinctrl *hw, struct device_node *np)
15683 +{
15684 + struct gpio_chip *chip = &hw->chip;
15685 + int ret;
15686 +
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,
15698 + chip->base = -1;
15699 + chip->ngpio = hw->soc->npins;
15700 + chip->of_node = np;
15701 + chip->of_gpio_n_cells = 2;
15702 +
15703 + ret = gpiochip_add_data(chip, hw);
15704 + if (ret < 0)
15705 + return ret;
15706 +
15707 + return 0;
15708 +}
15709 +
15710 +static int mtk_pctrl_build_state(struct platform_device *pdev)
15711 +{
15712 + struct mtk_pinctrl *hw = platform_get_drvdata(pdev);
15713 + int i;
15714 +
15715 + /* Allocate groups */
15716 + hw->groups = devm_kmalloc_array(&pdev->dev, hw->soc->ngrps,
15717 + sizeof(*hw->groups), GFP_KERNEL);
15718 + if (!hw->groups)
15719 + return -ENOMEM;
15720 +
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)
15725 + return -ENOMEM;
15726 +
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;
15730 +
15731 + group->name = pin->name;
15732 + group->pin = pin->number;
15733 +
15734 + hw->grp_names[i] = pin->name;
15735 + }
15736 +
15737 + return 0;
15738 +}
15739 +
15740 +int mtk_paris_pinctrl_probe(struct platform_device *pdev,
15741 + const struct mtk_pin_soc *soc)
15742 +{
15743 + struct pinctrl_pin_desc *pins;
15744 + struct mtk_pinctrl *hw;
15745 + struct resource *res;
15746 + int err, i;
15747 +
15748 + hw = devm_kzalloc(&pdev->dev, sizeof(*hw), GFP_KERNEL);
15749 + if (!hw)
15750 + return -ENOMEM;
15751 +
15752 + platform_set_drvdata(pdev, hw);
15753 + hw->soc = soc;
15754 + hw->dev = &pdev->dev;
15755 +
15756 + if (!hw->soc->nbase_names) {
15757 + dev_err(&pdev->dev,
15758 + "SoC should be assigned at least one register base\n");
15759 + return -EINVAL;
15760 + }
15761 +
15762 + hw->base = devm_kmalloc_array(&pdev->dev, hw->soc->nbase_names,
15763 + sizeof(*hw->base), GFP_KERNEL);
15764 + if (!hw->base)
15765 + return -ENOMEM;
15766 +
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]);
15770 + if (!res) {
15771 + dev_err(&pdev->dev, "missing IO resource\n");
15772 + return -ENXIO;
15773 + }
15774 +
15775 + hw->base[i] = devm_ioremap_resource(&pdev->dev, res);
15776 + if (IS_ERR(hw->base[i]))
15777 + return PTR_ERR(hw->base[i]);
15778 + }
15779 +
15780 + hw->nbase = hw->soc->nbase_names;
15781 +
15782 + err = mtk_pctrl_build_state(pdev);
15783 + if (err) {
15784 + dev_err(&pdev->dev, "build state failed: %d\n", err);
15785 + return -EINVAL;
15786 + }
15787 +
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),
15790 + GFP_KERNEL);
15791 + if (!pins)
15792 + return -ENOMEM;
15793 +
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;
15797 + }
15798 +
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;
15806 +#endif
15807 +
15808 + err = devm_pinctrl_register_and_init(&pdev->dev, &mtk_desc, hw,
15809 + &hw->pctrl);
15810 + if (err)
15811 + return err;
15812 +
15813 + err = pinctrl_enable(hw->pctrl);
15814 + if (err)
15815 + return err;
15816 +
15817 + err = mtk_build_eint(hw, pdev);
15818 + if (err)
15819 + dev_warn(&pdev->dev,
15820 + "Failed to add EINT, but pinctrl still can work\n");
15821 +
15822 + /* Build gpiochip should be after pinctrl_enable is done */
15823 + err = mtk_build_gpiochip(hw, pdev->dev.of_node);
15824 + if (err) {
15825 + dev_err(&pdev->dev, "Failed to add gpio_chip\n");
15826 + return err;
15827 + }
15828 +
15829 + platform_set_drvdata(pdev, hw);
15830 +
15831 + return 0;
15832 +}
15833 +
15834 +static int mtk_paris_pinctrl_suspend(struct device *device)
15835 +{
15836 + struct mtk_pinctrl *pctl = dev_get_drvdata(device);
15837 +
15838 + return mtk_eint_do_suspend(pctl->eint);
15839 +}
15840 +
15841 +static int mtk_paris_pinctrl_resume(struct device *device)
15842 +{
15843 + struct mtk_pinctrl *pctl = dev_get_drvdata(device);
15844 +
15845 + return mtk_eint_do_resume(pctl->eint);
15846 +}
15847 +
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,
15851 +};
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
15855 --- /dev/null
15856 +++ b/drivers/pinctrl/mediatek/pinctrl-paris.h
15857 @@ -0,0 +1,65 @@
15858 +/* SPDX-License-Identifier: GPL-2.0 */
15859 +/*
15860 + * Copyright (C) 2018 MediaTek Inc.
15861 + *
15862 + * Author: Sean Wang <sean.wang@mediatek.com>
15863 + * Zhiyong Tao <zhiyong.tao@mediatek.com>
15864 + * Hongzhou.Yang <hongzhou.yang@mediatek.com>
15865 + */
15866 +#ifndef __PINCTRL_PARIS_H
15867 +#define __PINCTRL_PARIS_H
15868 +
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>
15878 +
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"
15885 +
15886 +#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), }
15887 +
15888 +#define MTK_EINT_FUNCTION(_eintmux, _eintnum) \
15889 + { \
15890 + .eint_m = _eintmux, \
15891 + .eint_n = _eintnum, \
15892 + }
15893 +
15894 +#define MTK_FUNCTION(_val, _name) \
15895 + { \
15896 + .muxval = _val, \
15897 + .name = _name, \
15898 + }
15899 +
15900 +#define MTK_PIN(_number, _name, _eint, _drv_n, ...) { \
15901 + .number = _number, \
15902 + .name = _name, \
15903 + .eint = _eint, \
15904 + .drv_n = _drv_n, \
15905 + .funcs = (struct mtk_func_desc[]){ \
15906 + __VA_ARGS__, { } }, \
15907 + }
15908 +
15909 +#define PINCTRL_PIN_GROUP(name, id) \
15910 + { \
15911 + name, \
15912 + id##_pins, \
15913 + ARRAY_SIZE(id##_pins), \
15914 + id##_funcs, \
15915 + }
15916 +
15917 +int mtk_paris_pinctrl_probe(struct platform_device *pdev,
15918 + const struct mtk_pin_soc *soc);
15919 +
15920 +extern const struct dev_pm_ops mtk_paris_pinctrl_pm_ops;
15921 +
15922 +#endif /* __PINCTRL_PARIS_H */