From: Chris-QJ Chen <[email protected]>

Add pinctrl driver for mt8188. The driver is based on the kernel driver.

Signed-off-by: Chris-QJ Chen <[email protected]>
Signed-off-by: Jill.Wu <[email protected]>
Signed-off-by: Vitor Sato Eschholz <[email protected]>
Signed-off-by: Julien Stephan <[email protected]>
---
 drivers/pinctrl/mediatek/Kconfig          |    4 +
 drivers/pinctrl/mediatek/Makefile         |    1 +
 drivers/pinctrl/mediatek/pinctrl-mt8188.c | 1344 +++++++++++++++++++++++++++++
 3 files changed, 1349 insertions(+)

diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
index 4a698568a7e..04b5e65badf 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
@@ -32,6 +32,10 @@ config PINCTRL_MT7988
        bool "MT7988 SoC pinctrl driver"
        select PINCTRL_MTK
 
+config PINCTRL_MT8188
+       bool "MT8188 SoC pinctrl driver"
+       select PINCTRL_MTK
+
 config PINCTRL_MT8365
        bool "MT8365 SoC pinctrl driver"
        select PINCTRL_MTK
diff --git a/drivers/pinctrl/mediatek/Makefile 
b/drivers/pinctrl/mediatek/Makefile
index 565279157f9..b9116c073ea 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_PINCTRL_MT7981) += pinctrl-mt7981.o
 obj-$(CONFIG_PINCTRL_MT7986) += pinctrl-mt7986.o
 obj-$(CONFIG_PINCTRL_MT7987) += pinctrl-mt7987.o
 obj-$(CONFIG_PINCTRL_MT7988) += pinctrl-mt7988.o
+obj-$(CONFIG_PINCTRL_MT8188) += pinctrl-mt8188.o
 obj-$(CONFIG_PINCTRL_MT8365) += pinctrl-mt8365.o
 obj-$(CONFIG_PINCTRL_MT8512) += pinctrl-mt8512.o
 obj-$(CONFIG_PINCTRL_MT8516) += pinctrl-mt8516.o
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8188.c 
b/drivers/pinctrl/mediatek/pinctrl-mt8188.c
new file mode 100644
index 00000000000..386d4d4a922
--- /dev/null
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8188.c
@@ -0,0 +1,1344 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * The MT8188 driver based on Linux generic pinctrl binding.
+ *
+ * Copyright (C) 2026 MediaTek Inc.
+ * Author: Chris Chen <[email protected]>
+ *         Vitor Sato Eschholz <[email protected]>
+ */
+
+#include <dm.h>
+#include "pinctrl-mtk-common.h"
+
+/* MT8188 have multiple bases to program pin configuration listed as the below:
+ * iocfg[0]:0x10005000, iocfg[1]:0x11c00000, iocfg[2]:0x11e10000,
+ * iocfg[3]:0x11e20000, iocfg[4]:0x11ea0000
+ * enum base could be used to indicate what base the pin should be mapped into.
+ */
+
+#define PIN_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,     
\
+                      _x_bits)                                                 
\
+       PIN_FIELD_BASE_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, 
\
+                           _x_bits, 32, 0)
+
+#define PINS_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,    
\
+                       _x_bits)                                                
\
+       PIN_FIELD_BASE_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, 
\
+                           _x_bits, 32, 1)
+
+#define MT8188_TYPE0_PIN(_number, _name)        \
+       MTK_TYPED_PIN(_number, _name, DRV_GRP4, IO_TYPE_GRP0)
+
+#define MT8188_TYPE1_PIN(_number, _name)        \
+       MTK_TYPED_PIN(_number, _name, DRV_GRP4, IO_TYPE_GRP1)
+
+enum iocfg_base {
+       IOCFG0 = 0,
+       IOCFG_RM = 1,
+       IOCFG_LT = 2,
+       IOCFG_LM = 3,
+       IOCFG_RT = 4,
+};
+
+static const char * const mt8188_pinctrl_register_base_names[] = {
+       "iocfg0", "iocfg_rm", "iocfg_lt", "iocfg_lm", "iocfg_rt",
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_mode_range[] = {
+       PIN_FIELD_BASE(0, 177, IOCFG0, 0x0300, 0x10, 0, 4),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_dir_range[] = {
+       PIN_FIELD_BASE(0, 177, IOCFG0, 0x0000, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_di_range[] = {
+       PIN_FIELD_BASE(0, 177, IOCFG0, 0x0200, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_do_range[] = {
+       PIN_FIELD_BASE(0, 177, IOCFG0, 0x0100, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_smt_range[] = {
+       PIN_FIELD_BASE(0, 0, IOCFG_RM, 0x0170, 0x10, 8, 1),
+       PIN_FIELD_BASE(1, 1, IOCFG_RM, 0x0170, 0x10, 9, 1),
+       PIN_FIELD_BASE(2, 2, IOCFG_RM, 0x0170, 0x10, 10, 1),
+       PIN_FIELD_BASE(3, 3, IOCFG_RM, 0x0170, 0x10, 11, 1),
+       PIN_FIELD_BASE(4, 4, IOCFG_RM, 0x0170, 0x10, 18, 1),
+       PIN_FIELD_BASE(5, 5, IOCFG_RM, 0x0170, 0x10, 18, 1),
+       PIN_FIELD_BASE(6, 6, IOCFG_RM, 0x0170, 0x10, 18, 1),
+       PIN_FIELD_BASE(7, 7, IOCFG_RM, 0x0170, 0x10, 12, 1),
+       PIN_FIELD_BASE(8, 8, IOCFG_RM, 0x0170, 0x10, 13, 1),
+       PIN_FIELD_BASE(9, 9, IOCFG_RM, 0x0170, 0x10, 14, 1),
+       PIN_FIELD_BASE(10, 10, IOCFG_RM, 0x0170, 0x10, 15, 1),
+       PIN_FIELD_BASE(11, 11, IOCFG_RM, 0x0170, 0x10, 19, 1),
+       PIN_FIELD_BASE(12, 12, IOCFG_LT, 0x0160, 0x10, 12, 1),
+       PIN_FIELD_BASE(13, 13, IOCFG_LT, 0x0160, 0x10, 13, 1),
+       PIN_FIELD_BASE(14, 14, IOCFG_LT, 0x0160, 0x10, 14, 1),
+       PIN_FIELD_BASE(15, 15, IOCFG_LT, 0x0160, 0x10, 15, 1),
+       PIN_FIELD_BASE(16, 16, IOCFG_LM, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(17, 17, IOCFG_LM, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(18, 18, IOCFG_RT, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(19, 19, IOCFG_RT, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(20, 20, IOCFG_RT, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(21, 21, IOCFG_RT, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(22, 22, IOCFG_RT, 0x00e0, 0x10, 0, 1),
+       PIN_FIELD_BASE(23, 23, IOCFG_RT, 0x00e0, 0x10, 1, 1),
+       PIN_FIELD_BASE(24, 24, IOCFG_RT, 0x00e0, 0x10, 2, 1),
+       PIN_FIELD_BASE(25, 25, IOCFG_RM, 0x0170, 0x10, 17, 1),
+       PIN_FIELD_BASE(26, 26, IOCFG_RM, 0x0170, 0x10, 17, 1),
+       PIN_FIELD_BASE(27, 27, IOCFG_RM, 0x0170, 0x10, 17, 1),
+       PIN_FIELD_BASE(28, 28, IOCFG_RM, 0x0170, 0x10, 18, 1),
+       PIN_FIELD_BASE(29, 29, IOCFG_RM, 0x0170, 0x10, 16, 1),
+       PIN_FIELD_BASE(30, 30, IOCFG_RM, 0x0170, 0x10, 17, 1),
+       PIN_FIELD_BASE(31, 31, IOCFG_RM, 0x0170, 0x10, 19, 1),
+       PIN_FIELD_BASE(32, 32, IOCFG_RM, 0x0170, 0x10, 19, 1),
+       PIN_FIELD_BASE(33, 33, IOCFG_RM, 0x0170, 0x10, 20, 1),
+       PIN_FIELD_BASE(34, 34, IOCFG_RM, 0x0170, 0x10, 20, 1),
+       PIN_FIELD_BASE(35, 35, IOCFG_RM, 0x0170, 0x10, 19, 1),
+       PIN_FIELD_BASE(36, 36, IOCFG_RM, 0x0170, 0x10, 20, 1),
+       PIN_FIELD_BASE(37, 37, IOCFG_RM, 0x0170, 0x10, 21, 1),
+       PIN_FIELD_BASE(38, 38, IOCFG_RM, 0x0170, 0x10, 20, 1),
+       PIN_FIELD_BASE(39, 39, IOCFG_RM, 0x0170, 0x10, 21, 1),
+       PIN_FIELD_BASE(40, 40, IOCFG_RM, 0x0170, 0x10, 21, 1),
+       PIN_FIELD_BASE(41, 41, IOCFG_RM, 0x0170, 0x10, 21, 1),
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x0160, 0x10, 21, 1),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x0160, 0x10, 22, 1),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x0160, 0x10, 21, 1),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x0160, 0x10, 22, 1),
+       PIN_FIELD_BASE(46, 46, IOCFG_LM, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(47, 47, IOCFG_RM, 0x0170, 0x10, 16, 1),
+       PIN_FIELD_BASE(48, 48, IOCFG_RM, 0x0170, 0x10, 16, 1),
+       PIN_FIELD_BASE(49, 49, IOCFG_RM, 0x0170, 0x10, 16, 1),
+       PIN_FIELD_BASE(50, 50, IOCFG_LM, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(51, 51, IOCFG_LM, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(52, 52, IOCFG_LM, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(53, 53, IOCFG_LM, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(54, 54, IOCFG_LM, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(55, 55, IOCFG_RM, 0x0170, 0x10, 25, 1),
+       PIN_FIELD_BASE(56, 56, IOCFG_RM, 0x0170, 0x10, 28, 1),
+       PIN_FIELD_BASE(57, 57, IOCFG_LT, 0x0160, 0x10, 29, 1),
+       PIN_FIELD_BASE(58, 58, IOCFG_LT, 0x0160, 0x10, 31, 1),
+       PIN_FIELD_BASE(59, 59, IOCFG_RM, 0x0170, 0x10, 26, 1),
+       PIN_FIELD_BASE(60, 60, IOCFG_RM, 0x0170, 0x10, 29, 1),
+       PIN_FIELD_BASE(61, 61, IOCFG_RM, 0x0170, 0x10, 27, 1),
+       PIN_FIELD_BASE(62, 62, IOCFG_RM, 0x0170, 0x10, 30, 1),
+       PIN_FIELD_BASE(63, 63, IOCFG_LT, 0x0160, 0x10, 30, 1),
+       PIN_FIELD_BASE(64, 64, IOCFG_LT, 0x0170, 0x10, 0, 1),
+       PIN_FIELD_BASE(65, 65, IOCFG_RT, 0x00e0, 0x10, 10, 1),
+       PIN_FIELD_BASE(66, 66, IOCFG_RT, 0x00e0, 0x10, 12, 1),
+       PIN_FIELD_BASE(67, 67, IOCFG_RT, 0x00e0, 0x10, 11, 1),
+       PIN_FIELD_BASE(68, 68, IOCFG_RT, 0x00e0, 0x10, 13, 1),
+       PIN_FIELD_BASE(69, 69, IOCFG_RM, 0x0180, 0x10, 0, 1),
+       PIN_FIELD_BASE(70, 70, IOCFG_RM, 0x0170, 0x10, 31, 1),
+       PIN_FIELD_BASE(71, 71, IOCFG_RM, 0x0180, 0x10, 4, 1),
+       PIN_FIELD_BASE(72, 72, IOCFG_RM, 0x0180, 0x10, 3, 1),
+       PIN_FIELD_BASE(73, 73, IOCFG_RM, 0x0180, 0x10, 1, 1),
+       PIN_FIELD_BASE(74, 74, IOCFG_RM, 0x0180, 0x10, 2, 1),
+       PIN_FIELD_BASE(75, 75, IOCFG_RM, 0x0180, 0x10, 6, 1),
+       PIN_FIELD_BASE(76, 76, IOCFG_RM, 0x0180, 0x10, 5, 1),
+       PIN_FIELD_BASE(77, 77, IOCFG_RM, 0x0180, 0x10, 8, 1),
+       PIN_FIELD_BASE(78, 78, IOCFG_RM, 0x0180, 0x10, 7, 1),
+       PIN_FIELD_BASE(79, 79, IOCFG_RT, 0x00e0, 0x10, 15, 1),
+       PIN_FIELD_BASE(80, 80, IOCFG_RT, 0x00e0, 0x10, 14, 1),
+       PIN_FIELD_BASE(81, 81, IOCFG_RT, 0x00e0, 0x10, 17, 1),
+       PIN_FIELD_BASE(82, 82, IOCFG_RT, 0x00e0, 0x10, 16, 1),
+       PIN_FIELD_BASE(83, 83, IOCFG_LT, 0x0160, 0x10, 26, 1),
+       PIN_FIELD_BASE(84, 84, IOCFG_LT, 0x0160, 0x10, 26, 1),
+       PIN_FIELD_BASE(85, 85, IOCFG_LT, 0x0160, 0x10, 27, 1),
+       PIN_FIELD_BASE(86, 86, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(87, 87, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(88, 88, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(89, 89, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(90, 90, IOCFG_LT, 0x0160, 0x10, 27, 1),
+       PIN_FIELD_BASE(91, 91, IOCFG_LT, 0x0160, 0x10, 27, 1),
+       PIN_FIELD_BASE(92, 92, IOCFG_LT, 0x0160, 0x10, 18, 1),
+       PIN_FIELD_BASE(93, 93, IOCFG_LT, 0x0160, 0x10, 18, 1),
+       PIN_FIELD_BASE(94, 94, IOCFG_LT, 0x0160, 0x10, 18, 1),
+       PIN_FIELD_BASE(95, 95, IOCFG_LT, 0x0160, 0x10, 18, 1),
+       PIN_FIELD_BASE(96, 96, IOCFG_LT, 0x0160, 0x10, 22, 1),
+       PIN_FIELD_BASE(97, 97, IOCFG_LT, 0x0160, 0x10, 23, 1),
+       PIN_FIELD_BASE(98, 98, IOCFG_LT, 0x0160, 0x10, 24, 1),
+       PIN_FIELD_BASE(99, 99, IOCFG_LT, 0x0160, 0x10, 22, 1),
+       PIN_FIELD_BASE(100, 100, IOCFG_LT, 0x0160, 0x10, 16, 1),
+       PIN_FIELD_BASE(101, 101, IOCFG_LT, 0x0160, 0x10, 23, 1),
+       PIN_FIELD_BASE(102, 102, IOCFG_LT, 0x0160, 0x10, 23, 1),
+       PIN_FIELD_BASE(103, 103, IOCFG_LT, 0x0160, 0x10, 23, 1),
+       PIN_FIELD_BASE(104, 104, IOCFG_LT, 0x0160, 0x10, 24, 1),
+       PIN_FIELD_BASE(105, 105, IOCFG_LT, 0x0160, 0x10, 24, 1),
+       PIN_FIELD_BASE(106, 106, IOCFG_LT, 0x0160, 0x10, 24, 1),
+       PIN_FIELD_BASE(107, 107, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(108, 108, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(109, 109, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(110, 110, IOCFG_LT, 0x0160, 0x10, 17, 1),
+       PIN_FIELD_BASE(111, 111, IOCFG_LT, 0x0160, 0x10, 19, 1),
+       PIN_FIELD_BASE(112, 112, IOCFG_LT, 0x0160, 0x10, 19, 1),
+       PIN_FIELD_BASE(113, 113, IOCFG_LT, 0x0160, 0x10, 19, 1),
+       PIN_FIELD_BASE(114, 114, IOCFG_LT, 0x0160, 0x10, 19, 1),
+       PIN_FIELD_BASE(115, 115, IOCFG_LT, 0x0160, 0x10, 20, 1),
+       PIN_FIELD_BASE(116, 116, IOCFG_LT, 0x0160, 0x10, 20, 1),
+       PIN_FIELD_BASE(117, 117, IOCFG_LT, 0x0160, 0x10, 20, 1),
+       PIN_FIELD_BASE(118, 118, IOCFG_LT, 0x0160, 0x10, 20, 1),
+       PIN_FIELD_BASE(119, 119, IOCFG_LT, 0x0160, 0x10, 21, 1),
+       PIN_FIELD_BASE(120, 120, IOCFG_LT, 0x0160, 0x10, 21, 1),
+       PIN_FIELD_BASE(121, 121, IOCFG_LM, 0x00d0, 0x10, 6, 1),
+       PIN_FIELD_BASE(122, 122, IOCFG_LM, 0x00d0, 0x10, 9, 1),
+       PIN_FIELD_BASE(123, 123, IOCFG_LM, 0x00d0, 0x10, 8, 1),
+       PIN_FIELD_BASE(124, 124, IOCFG_LM, 0x00d0, 0x10, 7, 1),
+       PIN_FIELD_BASE(125, 125, IOCFG_LT, 0x0160, 0x10, 25, 1),
+       PIN_FIELD_BASE(126, 126, IOCFG_LT, 0x0160, 0x10, 25, 1),
+       PIN_FIELD_BASE(127, 127, IOCFG_LT, 0x0160, 0x10, 25, 1),
+       PIN_FIELD_BASE(128, 128, IOCFG_LT, 0x0160, 0x10, 25, 1),
+       PIN_FIELD_BASE(129, 129, IOCFG_LT, 0x0160, 0x10, 26, 1),
+       PIN_FIELD_BASE(130, 130, IOCFG_LT, 0x0160, 0x10, 26, 1),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x0170, 0x10, 0, 1),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x0170, 0x10, 1, 1),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x0170, 0x10, 6, 1),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x0170, 0x10, 7, 1),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x0170, 0x10, 22, 1),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x0170, 0x10, 22, 1),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x0170, 0x10, 22, 1),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x0170, 0x10, 22, 1),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x0170, 0x10, 23, 1),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x0170, 0x10, 23, 1),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x0170, 0x10, 23, 1),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x0170, 0x10, 23, 1),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x0170, 0x10, 2, 1),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x0170, 0x10, 3, 1),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x0170, 0x10, 4, 1),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x0170, 0x10, 5, 1),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x0170, 0x10, 24, 1),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x0170, 0x10, 24, 1),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x0170, 0x10, 24, 1),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x0170, 0x10, 24, 1),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x0160, 0x10, 9, 1),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x0160, 0x10, 8, 1),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x0160, 0x10, 7, 1),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x0160, 0x10, 6, 1),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x0160, 0x10, 11, 1),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x0160, 0x10, 1, 1),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x0160, 0x10, 0, 1),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x0160, 0x10, 5, 1),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x0160, 0x10, 4, 1),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x0160, 0x10, 3, 1),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x0160, 0x10, 2, 1),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x0160, 0x10, 10, 1),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x00e0, 0x10, 4, 1),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x00e0, 0x10, 3, 1),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x00e0, 0x10, 5, 1),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x00e0, 0x10, 6, 1),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x00e0, 0x10, 7, 1),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x00e0, 0x10, 8, 1),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x00d0, 0x10, 1, 1),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x00d0, 0x10, 0, 1),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x00d0, 0x10, 2, 1),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x00d0, 0x10, 3, 1),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x00d0, 0x10, 4, 1),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x00d0, 0x10, 5, 1),
+       PIN_FIELD_BASE(175, 175, IOCFG_LT, 0x0160, 0x10, 28, 1),
+       PIN_FIELD_BASE(176, 176, IOCFG_LT, 0x0160, 0x10, 28, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_ies_range[] = {
+       PIN_FIELD_BASE(0, 0, IOCFG_RM, 0x0080, 0x10, 26, 1),
+       PIN_FIELD_BASE(1, 1, IOCFG_RM, 0x0080, 0x10, 27, 1),
+       PIN_FIELD_BASE(2, 2, IOCFG_RM, 0x0080, 0x10, 28, 1),
+       PIN_FIELD_BASE(3, 3, IOCFG_RM, 0x0080, 0x10, 29, 1),
+       PIN_FIELD_BASE(4, 4, IOCFG_RM, 0x0080, 0x10, 30, 1),
+       PIN_FIELD_BASE(5, 5, IOCFG_RM, 0x0080, 0x10, 31, 1),
+       PIN_FIELD_BASE(6, 6, IOCFG_RM, 0x0090, 0x10, 0, 1),
+       PIN_FIELD_BASE(7, 7, IOCFG_RM, 0x0090, 0x10, 1, 1),
+       PIN_FIELD_BASE(8, 8, IOCFG_RM, 0x0090, 0x10, 2, 1),
+       PIN_FIELD_BASE(9, 9, IOCFG_RM, 0x0090, 0x10, 3, 1),
+       PIN_FIELD_BASE(10, 10, IOCFG_RM, 0x0090, 0x10, 4, 1),
+       PIN_FIELD_BASE(11, 11, IOCFG_RM, 0x0090, 0x10, 5, 1),
+       PIN_FIELD_BASE(12, 12, IOCFG_LT, 0x0070, 0x10, 24, 1),
+       PIN_FIELD_BASE(13, 13, IOCFG_LT, 0x0070, 0x10, 25, 1),
+       PIN_FIELD_BASE(14, 14, IOCFG_LT, 0x0070, 0x10, 26, 1),
+       PIN_FIELD_BASE(15, 15, IOCFG_LT, 0x0070, 0x10, 27, 1),
+       PIN_FIELD_BASE(16, 16, IOCFG_LM, 0x0040, 0x10, 1, 1),
+       PIN_FIELD_BASE(17, 17, IOCFG_LM, 0x0040, 0x10, 2, 1),
+       PIN_FIELD_BASE(18, 18, IOCFG_RT, 0x0050, 0x10, 3, 1),
+       PIN_FIELD_BASE(19, 19, IOCFG_RT, 0x0050, 0x10, 5, 1),
+       PIN_FIELD_BASE(20, 20, IOCFG_RT, 0x0050, 0x10, 4, 1),
+       PIN_FIELD_BASE(21, 21, IOCFG_RT, 0x0050, 0x10, 6, 1),
+       PIN_FIELD_BASE(22, 22, IOCFG_RT, 0x0050, 0x10, 0, 1),
+       PIN_FIELD_BASE(23, 23, IOCFG_RT, 0x0050, 0x10, 1, 1),
+       PIN_FIELD_BASE(24, 24, IOCFG_RT, 0x0050, 0x10, 2, 1),
+       PIN_FIELD_BASE(25, 25, IOCFG_RM, 0x0080, 0x10, 23, 1),
+       PIN_FIELD_BASE(26, 26, IOCFG_RM, 0x0080, 0x10, 22, 1),
+       PIN_FIELD_BASE(27, 27, IOCFG_RM, 0x0080, 0x10, 25, 1),
+       PIN_FIELD_BASE(28, 28, IOCFG_RM, 0x0080, 0x10, 24, 1),
+       PIN_FIELD_BASE(29, 29, IOCFG_RM, 0x0080, 0x10, 0, 1),
+       PIN_FIELD_BASE(30, 30, IOCFG_RM, 0x0080, 0x10, 1, 1),
+       PIN_FIELD_BASE(31, 31, IOCFG_RM, 0x0090, 0x10, 31, 1),
+       PIN_FIELD_BASE(32, 32, IOCFG_RM, 0x0090, 0x10, 30, 1),
+       PIN_FIELD_BASE(33, 33, IOCFG_RM, 0x00a0, 0x10, 1, 1),
+       PIN_FIELD_BASE(34, 34, IOCFG_RM, 0x00a0, 0x10, 0, 1),
+       PIN_FIELD_BASE(35, 35, IOCFG_RM, 0x00a0, 0x10, 3, 1),
+       PIN_FIELD_BASE(36, 36, IOCFG_RM, 0x00a0, 0x10, 2, 1),
+       PIN_FIELD_BASE(37, 37, IOCFG_RM, 0x0090, 0x10, 9, 1),
+       PIN_FIELD_BASE(38, 38, IOCFG_RM, 0x0090, 0x10, 6, 1),
+       PIN_FIELD_BASE(39, 39, IOCFG_RM, 0x0090, 0x10, 7, 1),
+       PIN_FIELD_BASE(40, 40, IOCFG_RM, 0x0090, 0x10, 8, 1),
+       PIN_FIELD_BASE(41, 41, IOCFG_RM, 0x0090, 0x10, 10, 1),
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x0080, 0x10, 10, 1),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x0080, 0x10, 11, 1),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x0080, 0x10, 12, 1),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x0080, 0x10, 13, 1),
+       PIN_FIELD_BASE(46, 46, IOCFG_LM, 0x0040, 0x10, 0, 1),
+       PIN_FIELD_BASE(47, 47, IOCFG_RM, 0x0090, 0x10, 13, 1),
+       PIN_FIELD_BASE(48, 48, IOCFG_RM, 0x0090, 0x10, 12, 1),
+       PIN_FIELD_BASE(49, 49, IOCFG_RM, 0x0090, 0x10, 11, 1),
+       PIN_FIELD_BASE(50, 50, IOCFG_LM, 0x0040, 0x10, 5, 1),
+       PIN_FIELD_BASE(51, 51, IOCFG_LM, 0x0040, 0x10, 4, 1),
+       PIN_FIELD_BASE(52, 52, IOCFG_LM, 0x0040, 0x10, 3, 1),
+       PIN_FIELD_BASE(53, 53, IOCFG_LM, 0x0040, 0x10, 6, 1),
+       PIN_FIELD_BASE(54, 54, IOCFG_LM, 0x0040, 0x10, 7, 1),
+       PIN_FIELD_BASE(55, 55, IOCFG_RM, 0x0090, 0x10, 14, 1),
+       PIN_FIELD_BASE(56, 56, IOCFG_RM, 0x0090, 0x10, 17, 1),
+       PIN_FIELD_BASE(57, 57, IOCFG_LT, 0x0080, 0x10, 22, 1),
+       PIN_FIELD_BASE(58, 58, IOCFG_LT, 0x0080, 0x10, 25, 1),
+       PIN_FIELD_BASE(59, 59, IOCFG_RM, 0x0090, 0x10, 15, 1),
+       PIN_FIELD_BASE(60, 60, IOCFG_RM, 0x0090, 0x10, 18, 1),
+       PIN_FIELD_BASE(61, 61, IOCFG_RM, 0x0090, 0x10, 16, 1),
+       PIN_FIELD_BASE(62, 62, IOCFG_RM, 0x0090, 0x10, 19, 1),
+       PIN_FIELD_BASE(63, 63, IOCFG_LT, 0x0080, 0x10, 23, 1),
+       PIN_FIELD_BASE(64, 64, IOCFG_LT, 0x0080, 0x10, 26, 1),
+       PIN_FIELD_BASE(65, 65, IOCFG_RT, 0x0050, 0x10, 13, 1),
+       PIN_FIELD_BASE(66, 66, IOCFG_RT, 0x0050, 0x10, 15, 1),
+       PIN_FIELD_BASE(67, 67, IOCFG_RT, 0x0050, 0x10, 14, 1),
+       PIN_FIELD_BASE(68, 68, IOCFG_RT, 0x0050, 0x10, 16, 1),
+       PIN_FIELD_BASE(69, 69, IOCFG_RM, 0x0090, 0x10, 21, 1),
+       PIN_FIELD_BASE(70, 70, IOCFG_RM, 0x0090, 0x10, 20, 1),
+       PIN_FIELD_BASE(71, 71, IOCFG_RM, 0x0090, 0x10, 25, 1),
+       PIN_FIELD_BASE(72, 72, IOCFG_RM, 0x0090, 0x10, 24, 1),
+       PIN_FIELD_BASE(73, 73, IOCFG_RM, 0x0090, 0x10, 22, 1),
+       PIN_FIELD_BASE(74, 74, IOCFG_RM, 0x0090, 0x10, 23, 1),
+       PIN_FIELD_BASE(75, 75, IOCFG_RM, 0x0090, 0x10, 27, 1),
+       PIN_FIELD_BASE(76, 76, IOCFG_RM, 0x0090, 0x10, 26, 1),
+       PIN_FIELD_BASE(77, 77, IOCFG_RM, 0x0090, 0x10, 29, 1),
+       PIN_FIELD_BASE(78, 78, IOCFG_RM, 0x0090, 0x10, 28, 1),
+       PIN_FIELD_BASE(79, 79, IOCFG_RT, 0x0050, 0x10, 18, 1),
+       PIN_FIELD_BASE(80, 80, IOCFG_RT, 0x0050, 0x10, 17, 1),
+       PIN_FIELD_BASE(81, 81, IOCFG_RT, 0x0050, 0x10, 20, 1),
+       PIN_FIELD_BASE(82, 82, IOCFG_RT, 0x0050, 0x10, 19, 1),
+       PIN_FIELD_BASE(83, 83, IOCFG_LT, 0x0080, 0x10, 30, 1),
+       PIN_FIELD_BASE(84, 84, IOCFG_LT, 0x0080, 0x10, 29, 1),
+       PIN_FIELD_BASE(85, 85, IOCFG_LT, 0x0080, 0x10, 31, 1),
+       PIN_FIELD_BASE(86, 86, IOCFG_LT, 0x0090, 0x10, 1, 1),
+       PIN_FIELD_BASE(87, 87, IOCFG_LT, 0x0090, 0x10, 0, 1),
+       PIN_FIELD_BASE(88, 88, IOCFG_LT, 0x0090, 0x10, 2, 1),
+       PIN_FIELD_BASE(89, 89, IOCFG_LT, 0x0090, 0x10, 4, 1),
+       PIN_FIELD_BASE(90, 90, IOCFG_LT, 0x0090, 0x10, 3, 1),
+       PIN_FIELD_BASE(91, 91, IOCFG_LT, 0x0090, 0x10, 5, 1),
+       PIN_FIELD_BASE(92, 92, IOCFG_LT, 0x0080, 0x10, 19, 1),
+       PIN_FIELD_BASE(93, 93, IOCFG_LT, 0x0080, 0x10, 18, 1),
+       PIN_FIELD_BASE(94, 94, IOCFG_LT, 0x0080, 0x10, 21, 1),
+       PIN_FIELD_BASE(95, 95, IOCFG_LT, 0x0080, 0x10, 20, 1),
+       PIN_FIELD_BASE(96, 96, IOCFG_LT, 0x0080, 0x10, 15, 1),
+       PIN_FIELD_BASE(97, 97, IOCFG_LT, 0x0080, 0x10, 16, 1),
+       PIN_FIELD_BASE(98, 98, IOCFG_LT, 0x0080, 0x10, 24, 1),
+       PIN_FIELD_BASE(99, 99, IOCFG_LT, 0x0080, 0x10, 14, 1),
+       PIN_FIELD_BASE(100, 100, IOCFG_LT, 0x0080, 0x10, 17, 1),
+       PIN_FIELD_BASE(101, 101, IOCFG_LT, 0x0070, 0x10, 0, 1),
+       PIN_FIELD_BASE(102, 102, IOCFG_LT, 0x0070, 0x10, 5, 1),
+       PIN_FIELD_BASE(103, 103, IOCFG_LT, 0x0070, 0x10, 3, 1),
+       PIN_FIELD_BASE(104, 104, IOCFG_LT, 0x0070, 0x10, 4, 1),
+       PIN_FIELD_BASE(105, 105, IOCFG_LT, 0x0070, 0x10, 1, 1),
+       PIN_FIELD_BASE(106, 106, IOCFG_LT, 0x0070, 0x10, 2, 1),
+       PIN_FIELD_BASE(107, 107, IOCFG_LT, 0x0080, 0x10, 1, 1),
+       PIN_FIELD_BASE(108, 108, IOCFG_LT, 0x0070, 0x10, 28, 1),
+       PIN_FIELD_BASE(109, 109, IOCFG_LT, 0x0080, 0x10, 2, 1),
+       PIN_FIELD_BASE(110, 110, IOCFG_LT, 0x0070, 0x10, 29, 1),
+       PIN_FIELD_BASE(111, 111, IOCFG_LT, 0x0070, 0x10, 30, 1),
+       PIN_FIELD_BASE(112, 112, IOCFG_LT, 0x0070, 0x10, 31, 1),
+       PIN_FIELD_BASE(113, 113, IOCFG_LT, 0x0080, 0x10, 0, 1),
+       PIN_FIELD_BASE(114, 114, IOCFG_LT, 0x0080, 0x10, 8, 1),
+       PIN_FIELD_BASE(115, 115, IOCFG_LT, 0x0080, 0x10, 3, 1),
+       PIN_FIELD_BASE(116, 116, IOCFG_LT, 0x0080, 0x10, 9, 1),
+       PIN_FIELD_BASE(117, 117, IOCFG_LT, 0x0080, 0x10, 4, 1),
+       PIN_FIELD_BASE(118, 118, IOCFG_LT, 0x0080, 0x10, 5, 1),
+       PIN_FIELD_BASE(119, 119, IOCFG_LT, 0x0080, 0x10, 6, 1),
+       PIN_FIELD_BASE(120, 120, IOCFG_LT, 0x0080, 0x10, 7, 1),
+       PIN_FIELD_BASE(121, 121, IOCFG_LM, 0x0040, 0x10, 14, 1),
+       PIN_FIELD_BASE(122, 122, IOCFG_LM, 0x0040, 0x10, 17, 1),
+       PIN_FIELD_BASE(123, 123, IOCFG_LM, 0x0040, 0x10, 16, 1),
+       PIN_FIELD_BASE(124, 124, IOCFG_LM, 0x0040, 0x10, 15, 1),
+       PIN_FIELD_BASE(125, 125, IOCFG_LT, 0x0070, 0x10, 6, 1),
+       PIN_FIELD_BASE(126, 126, IOCFG_LT, 0x0070, 0x10, 7, 1),
+       PIN_FIELD_BASE(127, 127, IOCFG_LT, 0x0070, 0x10, 8, 1),
+       PIN_FIELD_BASE(128, 128, IOCFG_LT, 0x0070, 0x10, 9, 1),
+       PIN_FIELD_BASE(129, 129, IOCFG_LT, 0x0070, 0x10, 10, 1),
+       PIN_FIELD_BASE(130, 130, IOCFG_LT, 0x0070, 0x10, 11, 1),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x0080, 0x10, 3, 1),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x0080, 0x10, 4, 1),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x0080, 0x10, 11, 1),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x0080, 0x10, 12, 1),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x0080, 0x10, 13, 1),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x0080, 0x10, 14, 1),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x0080, 0x10, 15, 1),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x0080, 0x10, 16, 1),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x0080, 0x10, 17, 1),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x0080, 0x10, 18, 1),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x0080, 0x10, 5, 1),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x0080, 0x10, 6, 1),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x0080, 0x10, 7, 1),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x0080, 0x10, 8, 1),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x0080, 0x10, 9, 1),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x0080, 0x10, 10, 1),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x0080, 0x10, 20, 1),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x0080, 0x10, 21, 1),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x0080, 0x10, 19, 1),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x0080, 0x10, 2, 1),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x0070, 0x10, 21, 1),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x0070, 0x10, 20, 1),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x0070, 0x10, 19, 1),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x0070, 0x10, 18, 1),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x0070, 0x10, 23, 1),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x0070, 0x10, 13, 1),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x0070, 0x10, 12, 1),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x0070, 0x10, 17, 1),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x0070, 0x10, 16, 1),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x0070, 0x10, 15, 1),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x0070, 0x10, 14, 1),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x0070, 0x10, 22, 1),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x0050, 0x10, 8, 1),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x0050, 0x10, 7, 1),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x0050, 0x10, 9, 1),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x0050, 0x10, 10, 1),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x0050, 0x10, 11, 1),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x0050, 0x10, 12, 1),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x0040, 0x10, 9, 1),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x0040, 0x10, 8, 1),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x0040, 0x10, 10, 1),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x0040, 0x10, 11, 1),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x0040, 0x10, 12, 1),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x0040, 0x10, 13, 1),
+       PIN_FIELD_BASE(175, 175, IOCFG_LT, 0x0080, 0x10, 27, 1),
+       PIN_FIELD_BASE(176, 176, IOCFG_LT, 0x0080, 0x10, 28, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_pupd_range[] = {
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x00c0, 0x10, 12, 1),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x00c0, 0x10, 13, 1),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x00c0, 0x10, 14, 1),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x00c0, 0x10, 15, 1),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x00d0, 0x10, 1, 1),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x00d0, 0x10, 2, 1),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x00d0, 0x10, 9, 1),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x00d0, 0x10, 12, 1),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x00d0, 0x10, 13, 1),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x00d0, 0x10, 14, 1),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x00d0, 0x10, 15, 1),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x00d0, 0x10, 16, 1),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x00d0, 0x10, 3, 1),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x00d0, 0x10, 4, 1),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x00d0, 0x10, 5, 1),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x00d0, 0x10, 6, 1),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x00d0, 0x10, 7, 1),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x00d0, 0x10, 8, 1),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x00d0, 0x10, 18, 1),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x00d0, 0x10, 19, 1),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x00d0, 0x10, 17, 1),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x00d0, 0x10, 0, 1),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x00c0, 0x10, 9, 1),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x00c0, 0x10, 8, 1),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x00c0, 0x10, 7, 1),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x00c0, 0x10, 6, 1),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x00c0, 0x10, 11, 1),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x00c0, 0x10, 1, 1),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x00c0, 0x10, 0, 1),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x00c0, 0x10, 5, 1),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x00c0, 0x10, 4, 1),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x00c0, 0x10, 3, 1),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x00c0, 0x10, 2, 1),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x00c0, 0x10, 10, 1),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x0070, 0x10, 1, 1),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x0070, 0x10, 0, 1),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x0070, 0x10, 2, 1),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x0070, 0x10, 3, 1),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x0070, 0x10, 4, 1),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x0070, 0x10, 5, 1),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x0060, 0x10, 1, 1),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x0060, 0x10, 0, 1),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x0060, 0x10, 2, 1),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x0060, 0x10, 3, 1),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x0060, 0x10, 4, 1),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x0060, 0x10, 5, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_r0_range[] = {
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x00f0, 0x10, 12, 1),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x00f0, 0x10, 13, 1),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x00f0, 0x10, 14, 1),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x00f0, 0x10, 15, 1),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x0100, 0x10, 1, 1),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x0100, 0x10, 2, 1),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x0100, 0x10, 9, 1),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x0100, 0x10, 10, 1),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x0100, 0x10, 11, 1),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x0100, 0x10, 12, 1),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x0100, 0x10, 13, 1),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x0100, 0x10, 14, 1),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x0100, 0x10, 15, 1),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x0100, 0x10, 16, 1),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x0100, 0x10, 3, 1),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x0100, 0x10, 4, 1),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x0100, 0x10, 5, 1),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x0100, 0x10, 6, 1),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x0100, 0x10, 7, 1),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x0100, 0x10, 8, 1),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x0100, 0x10, 18, 1),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x0100, 0x10, 19, 1),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x0100, 0x10, 17, 1),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x0100, 0x10, 0, 1),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x00f0, 0x10, 9, 1),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x00f0, 0x10, 8, 1),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x00f0, 0x10, 7, 1),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x00f0, 0x10, 6, 1),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x00f0, 0x10, 11, 1),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x00f0, 0x10, 1, 1),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x00f0, 0x10, 0, 1),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x00f0, 0x10, 5, 1),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x00f0, 0x10, 4, 1),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x00f0, 0x10, 3, 1),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x00f0, 0x10, 2, 1),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x00f0, 0x10, 10, 1),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x0090, 0x10, 1, 1),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x0090, 0x10, 0, 1),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x0090, 0x10, 2, 1),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x0090, 0x10, 3, 1),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x0090, 0x10, 4, 1),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x0090, 0x10, 5, 1),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x0080, 0x10, 1, 1),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x0080, 0x10, 0, 1),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x0080, 0x10, 2, 1),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x0080, 0x10, 3, 1),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x0080, 0x10, 4, 1),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x0080, 0x10, 5, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_r1_range[] = {
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x0100, 0x10, 12, 1),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x0100, 0x10, 13, 1),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x0100, 0x10, 14, 1),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x0100, 0x10, 15, 1),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x0110, 0x10, 1, 1),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x0110, 0x10, 2, 1),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x0110, 0x10, 9, 1),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x0110, 0x10, 10, 1),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x0110, 0x10, 11, 1),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x0110, 0x10, 12, 1),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x0110, 0x10, 13, 1),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x0110, 0x10, 14, 1),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x0110, 0x10, 15, 1),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x0110, 0x10, 16, 1),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x0110, 0x10, 3, 1),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x0110, 0x10, 4, 1),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x0110, 0x10, 5, 1),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x0110, 0x10, 6, 1),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x0110, 0x10, 7, 1),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x0110, 0x10, 8, 1),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x0110, 0x10, 18, 1),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x0110, 0x10, 19, 1),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x0110, 0x10, 17, 1),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x0110, 0x10, 0, 1),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x0100, 0x10, 9, 1),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x0100, 0x10, 8, 1),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x0100, 0x10, 7, 1),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x0100, 0x10, 6, 1),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x0100, 0x10, 11, 1),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x0100, 0x10, 1, 1),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x0100, 0x10, 0, 1),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x0100, 0x10, 5, 1),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x0100, 0x10, 4, 1),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x0100, 0x10, 3, 1),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x0100, 0x10, 2, 1),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x0100, 0x10, 10, 1),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x00a0, 0x10, 1, 1),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x00a0, 0x10, 0, 1),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x00a0, 0x10, 2, 1),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x00a0, 0x10, 3, 1),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x00a0, 0x10, 4, 1),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x00a0, 0x10, 5, 1),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x0090, 0x10, 1, 1),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x0090, 0x10, 0, 1),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x0090, 0x10, 2, 1),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x0090, 0x10, 3, 1),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x0090, 0x10, 4, 1),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x0090, 0x10, 5, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_pu_range[] = {
+       PIN_FIELD_BASE(0, 0, IOCFG_RM, 0x00e0, 0x10, 6, 1),
+       PIN_FIELD_BASE(1, 1, IOCFG_RM, 0x00e0, 0x10, 7, 1),
+       PIN_FIELD_BASE(2, 2, IOCFG_RM, 0x00e0, 0x10, 8, 1),
+       PIN_FIELD_BASE(3, 3, IOCFG_RM, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(4, 4, IOCFG_RM, 0x00e0, 0x10, 10, 1),
+       PIN_FIELD_BASE(5, 5, IOCFG_RM, 0x00e0, 0x10, 11, 1),
+       PIN_FIELD_BASE(6, 6, IOCFG_RM, 0x00e0, 0x10, 12, 1),
+       PIN_FIELD_BASE(7, 7, IOCFG_RM, 0x00e0, 0x10, 13, 1),
+       PIN_FIELD_BASE(8, 8, IOCFG_RM, 0x00e0, 0x10, 14, 1),
+       PIN_FIELD_BASE(9, 9, IOCFG_RM, 0x00e0, 0x10, 15, 1),
+       PIN_FIELD_BASE(10, 10, IOCFG_RM, 0x00e0, 0x10, 16, 1),
+       PIN_FIELD_BASE(11, 11, IOCFG_RM, 0x00e0, 0x10, 17, 1),
+       PIN_FIELD_BASE(12, 12, IOCFG_LT, 0x00d0, 0x10, 12, 1),
+       PIN_FIELD_BASE(13, 13, IOCFG_LT, 0x00d0, 0x10, 13, 1),
+       PIN_FIELD_BASE(14, 14, IOCFG_LT, 0x00d0, 0x10, 14, 1),
+       PIN_FIELD_BASE(15, 15, IOCFG_LT, 0x00d0, 0x10, 15, 1),
+       PIN_FIELD_BASE(16, 16, IOCFG_LM, 0x0070, 0x10, 1, 1),
+       PIN_FIELD_BASE(17, 17, IOCFG_LM, 0x0070, 0x10, 2, 1),
+       PIN_FIELD_BASE(18, 18, IOCFG_RT, 0x0080, 0x10, 3, 1),
+       PIN_FIELD_BASE(19, 19, IOCFG_RT, 0x0080, 0x10, 5, 1),
+       PIN_FIELD_BASE(20, 20, IOCFG_RT, 0x0080, 0x10, 4, 1),
+       PIN_FIELD_BASE(21, 21, IOCFG_RT, 0x0080, 0x10, 6, 1),
+       PIN_FIELD_BASE(22, 22, IOCFG_RT, 0x0080, 0x10, 0, 1),
+       PIN_FIELD_BASE(23, 23, IOCFG_RT, 0x0080, 0x10, 1, 1),
+       PIN_FIELD_BASE(24, 24, IOCFG_RT, 0x0080, 0x10, 2, 1),
+       PIN_FIELD_BASE(25, 25, IOCFG_RM, 0x00e0, 0x10, 3, 1),
+       PIN_FIELD_BASE(26, 26, IOCFG_RM, 0x00e0, 0x10, 2, 1),
+       PIN_FIELD_BASE(27, 27, IOCFG_RM, 0x00e0, 0x10, 5, 1),
+       PIN_FIELD_BASE(28, 28, IOCFG_RM, 0x00e0, 0x10, 4, 1),
+       PIN_FIELD_BASE(29, 29, IOCFG_RM, 0x00e0, 0x10, 0, 1),
+       PIN_FIELD_BASE(30, 30, IOCFG_RM, 0x00e0, 0x10, 1, 1),
+       PIN_FIELD_BASE(31, 31, IOCFG_RM, 0x00f0, 0x10, 11, 1),
+       PIN_FIELD_BASE(32, 32, IOCFG_RM, 0x00f0, 0x10, 10, 1),
+       PIN_FIELD_BASE(33, 33, IOCFG_RM, 0x00f0, 0x10, 13, 1),
+       PIN_FIELD_BASE(34, 34, IOCFG_RM, 0x00f0, 0x10, 12, 1),
+       PIN_FIELD_BASE(35, 35, IOCFG_RM, 0x00f0, 0x10, 15, 1),
+       PIN_FIELD_BASE(36, 36, IOCFG_RM, 0x00f0, 0x10, 14, 1),
+       PIN_FIELD_BASE(37, 37, IOCFG_RM, 0x00e0, 0x10, 21, 1),
+       PIN_FIELD_BASE(38, 38, IOCFG_RM, 0x00e0, 0x10, 18, 1),
+       PIN_FIELD_BASE(39, 39, IOCFG_RM, 0x00e0, 0x10, 19, 1),
+       PIN_FIELD_BASE(40, 40, IOCFG_RM, 0x00e0, 0x10, 20, 1),
+       PIN_FIELD_BASE(41, 41, IOCFG_RM, 0x00e0, 0x10, 22, 1),
+       PIN_FIELD_BASE(46, 46, IOCFG_LM, 0x0070, 0x10, 0, 1),
+       PIN_FIELD_BASE(47, 47, IOCFG_RM, 0x00e0, 0x10, 25, 1),
+       PIN_FIELD_BASE(48, 48, IOCFG_RM, 0x00e0, 0x10, 24, 1),
+       PIN_FIELD_BASE(49, 49, IOCFG_RM, 0x00e0, 0x10, 23, 1),
+       PIN_FIELD_BASE(50, 50, IOCFG_LM, 0x0070, 0x10, 5, 1),
+       PIN_FIELD_BASE(51, 51, IOCFG_LM, 0x0070, 0x10, 4, 1),
+       PIN_FIELD_BASE(52, 52, IOCFG_LM, 0x0070, 0x10, 3, 1),
+       PIN_FIELD_BASE(53, 53, IOCFG_LM, 0x0070, 0x10, 6, 1),
+       PIN_FIELD_BASE(54, 54, IOCFG_LM, 0x0070, 0x10, 7, 1),
+       PIN_FIELD_BASE(55, 55, IOCFG_RM, 0x00e0, 0x10, 26, 1),
+       PIN_FIELD_BASE(56, 56, IOCFG_RM, 0x00e0, 0x10, 29, 1),
+       PIN_FIELD_BASE(57, 57, IOCFG_LT, 0x00e0, 0x10, 6, 1),
+       PIN_FIELD_BASE(58, 58, IOCFG_LT, 0x00e0, 0x10, 9, 1),
+       PIN_FIELD_BASE(59, 59, IOCFG_RM, 0x00e0, 0x10, 27, 1),
+       PIN_FIELD_BASE(60, 60, IOCFG_RM, 0x00e0, 0x10, 30, 1),
+       PIN_FIELD_BASE(61, 61, IOCFG_RM, 0x00e0, 0x10, 28, 1),
+       PIN_FIELD_BASE(62, 62, IOCFG_RM, 0x00e0, 0x10, 31, 1),
+       PIN_FIELD_BASE(63, 63, IOCFG_LT, 0x00e0, 0x10, 7, 1),
+       PIN_FIELD_BASE(64, 64, IOCFG_LT, 0x00e0, 0x10, 10, 1),
+       PIN_FIELD_BASE(65, 65, IOCFG_RT, 0x0080, 0x10, 7, 1),
+       PIN_FIELD_BASE(66, 66, IOCFG_RT, 0x0080, 0x10, 9, 1),
+       PIN_FIELD_BASE(67, 67, IOCFG_RT, 0x0080, 0x10, 8, 1),
+       PIN_FIELD_BASE(68, 68, IOCFG_RT, 0x0080, 0x10, 10, 1),
+       PIN_FIELD_BASE(69, 69, IOCFG_RM, 0x00f0, 0x10, 1, 1),
+       PIN_FIELD_BASE(70, 70, IOCFG_RM, 0x00f0, 0x10, 0, 1),
+       PIN_FIELD_BASE(71, 71, IOCFG_RM, 0x00f0, 0x10, 5, 1),
+       PIN_FIELD_BASE(72, 72, IOCFG_RM, 0x00f0, 0x10, 4, 1),
+       PIN_FIELD_BASE(73, 73, IOCFG_RM, 0x00f0, 0x10, 2, 1),
+       PIN_FIELD_BASE(74, 74, IOCFG_RM, 0x00f0, 0x10, 3, 1),
+       PIN_FIELD_BASE(75, 75, IOCFG_RM, 0x00f0, 0x10, 7, 1),
+       PIN_FIELD_BASE(76, 76, IOCFG_RM, 0x00f0, 0x10, 6, 1),
+       PIN_FIELD_BASE(77, 77, IOCFG_RM, 0x00f0, 0x10, 9, 1),
+       PIN_FIELD_BASE(78, 78, IOCFG_RM, 0x00f0, 0x10, 8, 1),
+       PIN_FIELD_BASE(79, 79, IOCFG_RT, 0x0080, 0x10, 12, 1),
+       PIN_FIELD_BASE(80, 80, IOCFG_RT, 0x0080, 0x10, 11, 1),
+       PIN_FIELD_BASE(81, 81, IOCFG_RT, 0x0080, 0x10, 14, 1),
+       PIN_FIELD_BASE(82, 82, IOCFG_RT, 0x0080, 0x10, 13, 1),
+       PIN_FIELD_BASE(83, 83, IOCFG_LT, 0x00e0, 0x10, 16, 1),
+       PIN_FIELD_BASE(84, 84, IOCFG_LT, 0x00e0, 0x10, 15, 1),
+       PIN_FIELD_BASE(85, 85, IOCFG_LT, 0x00e0, 0x10, 17, 1),
+       PIN_FIELD_BASE(86, 86, IOCFG_LT, 0x00e0, 0x10, 19, 1),
+       PIN_FIELD_BASE(87, 87, IOCFG_LT, 0x00e0, 0x10, 18, 1),
+       PIN_FIELD_BASE(88, 88, IOCFG_LT, 0x00e0, 0x10, 20, 1),
+       PIN_FIELD_BASE(89, 89, IOCFG_LT, 0x00e0, 0x10, 22, 1),
+       PIN_FIELD_BASE(90, 90, IOCFG_LT, 0x00e0, 0x10, 21, 1),
+       PIN_FIELD_BASE(91, 91, IOCFG_LT, 0x00e0, 0x10, 23, 1),
+       PIN_FIELD_BASE(92, 92, IOCFG_LT, 0x00e0, 0x10, 3, 1),
+       PIN_FIELD_BASE(93, 93, IOCFG_LT, 0x00e0, 0x10, 2, 1),
+       PIN_FIELD_BASE(94, 94, IOCFG_LT, 0x00e0, 0x10, 5, 1),
+       PIN_FIELD_BASE(95, 95, IOCFG_LT, 0x00e0, 0x10, 4, 1),
+       PIN_FIELD_BASE(96, 96, IOCFG_LT, 0x00d0, 0x10, 31, 1),
+       PIN_FIELD_BASE(97, 97, IOCFG_LT, 0x00e0, 0x10, 0, 1),
+       PIN_FIELD_BASE(98, 98, IOCFG_LT, 0x00e0, 0x10, 8, 1),
+       PIN_FIELD_BASE(99, 99, IOCFG_LT, 0x00d0, 0x10, 30, 1),
+       PIN_FIELD_BASE(100, 100, IOCFG_LT, 0x00e0, 0x10, 1, 1),
+       PIN_FIELD_BASE(101, 101, IOCFG_LT, 0x00d0, 0x10, 0, 1),
+       PIN_FIELD_BASE(102, 102, IOCFG_LT, 0x00d0, 0x10, 5, 1),
+       PIN_FIELD_BASE(103, 103, IOCFG_LT, 0x00d0, 0x10, 3, 1),
+       PIN_FIELD_BASE(104, 104, IOCFG_LT, 0x00d0, 0x10, 4, 1),
+       PIN_FIELD_BASE(105, 105, IOCFG_LT, 0x00d0, 0x10, 1, 1),
+       PIN_FIELD_BASE(106, 106, IOCFG_LT, 0x00d0, 0x10, 2, 1),
+       PIN_FIELD_BASE(107, 107, IOCFG_LT, 0x00d0, 0x10, 21, 1),
+       PIN_FIELD_BASE(108, 108, IOCFG_LT, 0x00d0, 0x10, 16, 1),
+       PIN_FIELD_BASE(109, 109, IOCFG_LT, 0x00d0, 0x10, 22, 1),
+       PIN_FIELD_BASE(110, 110, IOCFG_LT, 0x00d0, 0x10, 17, 1),
+       PIN_FIELD_BASE(111, 111, IOCFG_LT, 0x00d0, 0x10, 18, 1),
+       PIN_FIELD_BASE(112, 112, IOCFG_LT, 0x00d0, 0x10, 19, 1),
+       PIN_FIELD_BASE(113, 113, IOCFG_LT, 0x00d0, 0x10, 20, 1),
+       PIN_FIELD_BASE(114, 114, IOCFG_LT, 0x00d0, 0x10, 28, 1),
+       PIN_FIELD_BASE(115, 115, IOCFG_LT, 0x00d0, 0x10, 23, 1),
+       PIN_FIELD_BASE(116, 116, IOCFG_LT, 0x00d0, 0x10, 29, 1),
+       PIN_FIELD_BASE(117, 117, IOCFG_LT, 0x00d0, 0x10, 24, 1),
+       PIN_FIELD_BASE(118, 118, IOCFG_LT, 0x00d0, 0x10, 25, 1),
+       PIN_FIELD_BASE(119, 119, IOCFG_LT, 0x00d0, 0x10, 26, 1),
+       PIN_FIELD_BASE(120, 120, IOCFG_LT, 0x00d0, 0x10, 27, 1),
+       PIN_FIELD_BASE(121, 121, IOCFG_LM, 0x0070, 0x10, 8, 1),
+       PIN_FIELD_BASE(122, 122, IOCFG_LM, 0x0070, 0x10, 11, 1),
+       PIN_FIELD_BASE(123, 123, IOCFG_LM, 0x0070, 0x10, 10, 1),
+       PIN_FIELD_BASE(124, 124, IOCFG_LM, 0x0070, 0x10, 9, 1),
+       PIN_FIELD_BASE(125, 125, IOCFG_LT, 0x00d0, 0x10, 6, 1),
+       PIN_FIELD_BASE(126, 126, IOCFG_LT, 0x00d0, 0x10, 7, 1),
+       PIN_FIELD_BASE(127, 127, IOCFG_LT, 0x00d0, 0x10, 8, 1),
+       PIN_FIELD_BASE(128, 128, IOCFG_LT, 0x00d0, 0x10, 9, 1),
+       PIN_FIELD_BASE(129, 129, IOCFG_LT, 0x00d0, 0x10, 10, 1),
+       PIN_FIELD_BASE(130, 130, IOCFG_LT, 0x00d0, 0x10, 11, 1),
+       PIN_FIELD_BASE(175, 175, IOCFG_LT, 0x00e0, 0x10, 11, 1),
+       PIN_FIELD_BASE(176, 176, IOCFG_LT, 0x00e0, 0x10, 12, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_pd_range[] = {
+       PIN_FIELD_BASE(0, 0, IOCFG_RM, 0x00b0, 0x10, 6, 1),
+       PIN_FIELD_BASE(1, 1, IOCFG_RM, 0x00b0, 0x10, 7, 1),
+       PIN_FIELD_BASE(2, 2, IOCFG_RM, 0x00b0, 0x10, 8, 1),
+       PIN_FIELD_BASE(3, 3, IOCFG_RM, 0x00b0, 0x10, 9, 1),
+       PIN_FIELD_BASE(4, 4, IOCFG_RM, 0x00b0, 0x10, 10, 1),
+       PIN_FIELD_BASE(5, 5, IOCFG_RM, 0x00b0, 0x10, 11, 1),
+       PIN_FIELD_BASE(6, 6, IOCFG_RM, 0x00b0, 0x10, 12, 1),
+       PIN_FIELD_BASE(7, 7, IOCFG_RM, 0x00b0, 0x10, 13, 1),
+       PIN_FIELD_BASE(8, 8, IOCFG_RM, 0x00b0, 0x10, 14, 1),
+       PIN_FIELD_BASE(9, 9, IOCFG_RM, 0x00b0, 0x10, 15, 1),
+       PIN_FIELD_BASE(10, 10, IOCFG_RM, 0x00b0, 0x10, 16, 1),
+       PIN_FIELD_BASE(11, 11, IOCFG_RM, 0x00b0, 0x10, 17, 1),
+       PIN_FIELD_BASE(12, 12, IOCFG_LT, 0x00a0, 0x10, 12, 1),
+       PIN_FIELD_BASE(13, 13, IOCFG_LT, 0x00a0, 0x10, 13, 1),
+       PIN_FIELD_BASE(14, 14, IOCFG_LT, 0x00a0, 0x10, 14, 1),
+       PIN_FIELD_BASE(15, 15, IOCFG_LT, 0x00a0, 0x10, 15, 1),
+       PIN_FIELD_BASE(16, 16, IOCFG_LM, 0x0050, 0x10, 1, 1),
+       PIN_FIELD_BASE(17, 17, IOCFG_LM, 0x0050, 0x10, 2, 1),
+       PIN_FIELD_BASE(18, 18, IOCFG_RT, 0x0060, 0x10, 3, 1),
+       PIN_FIELD_BASE(19, 19, IOCFG_RT, 0x0060, 0x10, 5, 1),
+       PIN_FIELD_BASE(20, 20, IOCFG_RT, 0x0060, 0x10, 4, 1),
+       PIN_FIELD_BASE(21, 21, IOCFG_RT, 0x0060, 0x10, 6, 1),
+       PIN_FIELD_BASE(22, 22, IOCFG_RT, 0x0060, 0x10, 0, 1),
+       PIN_FIELD_BASE(23, 23, IOCFG_RT, 0x0060, 0x10, 1, 1),
+       PIN_FIELD_BASE(24, 24, IOCFG_RT, 0x0060, 0x10, 2, 1),
+       PIN_FIELD_BASE(25, 25, IOCFG_RM, 0x00b0, 0x10, 3, 1),
+       PIN_FIELD_BASE(26, 26, IOCFG_RM, 0x00b0, 0x10, 2, 1),
+       PIN_FIELD_BASE(27, 27, IOCFG_RM, 0x00b0, 0x10, 5, 1),
+       PIN_FIELD_BASE(28, 28, IOCFG_RM, 0x00b0, 0x10, 4, 1),
+       PIN_FIELD_BASE(29, 29, IOCFG_RM, 0x00b0, 0x10, 0, 1),
+       PIN_FIELD_BASE(30, 30, IOCFG_RM, 0x00b0, 0x10, 1, 1),
+       PIN_FIELD_BASE(31, 31, IOCFG_RM, 0x00c0, 0x10, 11, 1),
+       PIN_FIELD_BASE(32, 32, IOCFG_RM, 0x00c0, 0x10, 10, 1),
+       PIN_FIELD_BASE(33, 33, IOCFG_RM, 0x00c0, 0x10, 13, 1),
+       PIN_FIELD_BASE(34, 34, IOCFG_RM, 0x00c0, 0x10, 12, 1),
+       PIN_FIELD_BASE(35, 35, IOCFG_RM, 0x00c0, 0x10, 15, 1),
+       PIN_FIELD_BASE(36, 36, IOCFG_RM, 0x00c0, 0x10, 14, 1),
+       PIN_FIELD_BASE(37, 37, IOCFG_RM, 0x00b0, 0x10, 21, 1),
+       PIN_FIELD_BASE(38, 38, IOCFG_RM, 0x00b0, 0x10, 18, 1),
+       PIN_FIELD_BASE(39, 39, IOCFG_RM, 0x00b0, 0x10, 19, 1),
+       PIN_FIELD_BASE(40, 40, IOCFG_RM, 0x00b0, 0x10, 20, 1),
+       PIN_FIELD_BASE(41, 41, IOCFG_RM, 0x00b0, 0x10, 22, 1),
+       PIN_FIELD_BASE(46, 46, IOCFG_LM, 0x0050, 0x10, 0, 1),
+       PIN_FIELD_BASE(47, 47, IOCFG_RM, 0x00b0, 0x10, 25, 1),
+       PIN_FIELD_BASE(48, 48, IOCFG_RM, 0x00b0, 0x10, 24, 1),
+       PIN_FIELD_BASE(49, 49, IOCFG_RM, 0x00b0, 0x10, 23, 1),
+       PIN_FIELD_BASE(50, 50, IOCFG_LM, 0x0050, 0x10, 5, 1),
+       PIN_FIELD_BASE(51, 51, IOCFG_LM, 0x0050, 0x10, 4, 1),
+       PIN_FIELD_BASE(52, 52, IOCFG_LM, 0x0050, 0x10, 3, 1),
+       PIN_FIELD_BASE(53, 53, IOCFG_LM, 0x0050, 0x10, 6, 1),
+       PIN_FIELD_BASE(54, 54, IOCFG_LM, 0x0050, 0x10, 7, 1),
+       PIN_FIELD_BASE(55, 55, IOCFG_RM, 0x00b0, 0x10, 26, 1),
+       PIN_FIELD_BASE(56, 56, IOCFG_RM, 0x00b0, 0x10, 29, 1),
+       PIN_FIELD_BASE(57, 57, IOCFG_LT, 0x00b0, 0x10, 6, 1),
+       PIN_FIELD_BASE(58, 58, IOCFG_LT, 0x00b0, 0x10, 9, 1),
+       PIN_FIELD_BASE(59, 59, IOCFG_RM, 0x00b0, 0x10, 27, 1),
+       PIN_FIELD_BASE(60, 60, IOCFG_RM, 0x00b0, 0x10, 30, 1),
+       PIN_FIELD_BASE(61, 61, IOCFG_RM, 0x00b0, 0x10, 28, 1),
+       PIN_FIELD_BASE(62, 62, IOCFG_RM, 0x00b0, 0x10, 31, 1),
+       PIN_FIELD_BASE(63, 63, IOCFG_LT, 0x00b0, 0x10, 7, 1),
+       PIN_FIELD_BASE(64, 64, IOCFG_LT, 0x00b0, 0x10, 10, 1),
+       PIN_FIELD_BASE(65, 65, IOCFG_RT, 0x0060, 0x10, 7, 1),
+       PIN_FIELD_BASE(66, 66, IOCFG_RT, 0x0060, 0x10, 9, 1),
+       PIN_FIELD_BASE(67, 67, IOCFG_RT, 0x0060, 0x10, 8, 1),
+       PIN_FIELD_BASE(68, 68, IOCFG_RT, 0x0060, 0x10, 10, 1),
+       PIN_FIELD_BASE(69, 69, IOCFG_RM, 0x00c0, 0x10, 1, 1),
+       PIN_FIELD_BASE(70, 70, IOCFG_RM, 0x00c0, 0x10, 0, 1),
+       PIN_FIELD_BASE(71, 71, IOCFG_RM, 0x00c0, 0x10, 5, 1),
+       PIN_FIELD_BASE(72, 72, IOCFG_RM, 0x00c0, 0x10, 4, 1),
+       PIN_FIELD_BASE(73, 73, IOCFG_RM, 0x00c0, 0x10, 2, 1),
+       PIN_FIELD_BASE(74, 74, IOCFG_RM, 0x00c0, 0x10, 3, 1),
+       PIN_FIELD_BASE(75, 75, IOCFG_RM, 0x00c0, 0x10, 7, 1),
+       PIN_FIELD_BASE(76, 76, IOCFG_RM, 0x00c0, 0x10, 6, 1),
+       PIN_FIELD_BASE(77, 77, IOCFG_RM, 0x00c0, 0x10, 9, 1),
+       PIN_FIELD_BASE(78, 78, IOCFG_RM, 0x00c0, 0x10, 8, 1),
+       PIN_FIELD_BASE(79, 79, IOCFG_RT, 0x0060, 0x10, 12, 1),
+       PIN_FIELD_BASE(80, 80, IOCFG_RT, 0x0060, 0x10, 11, 1),
+       PIN_FIELD_BASE(81, 81, IOCFG_RT, 0x0060, 0x10, 14, 1),
+       PIN_FIELD_BASE(82, 82, IOCFG_RT, 0x0060, 0x10, 13, 1),
+       PIN_FIELD_BASE(83, 83, IOCFG_LT, 0x00b0, 0x10, 16, 1),
+       PIN_FIELD_BASE(84, 84, IOCFG_LT, 0x00b0, 0x10, 15, 1),
+       PIN_FIELD_BASE(85, 85, IOCFG_LT, 0x00b0, 0x10, 17, 1),
+       PIN_FIELD_BASE(86, 86, IOCFG_LT, 0x00b0, 0x10, 19, 1),
+       PIN_FIELD_BASE(87, 87, IOCFG_LT, 0x00b0, 0x10, 18, 1),
+       PIN_FIELD_BASE(88, 88, IOCFG_LT, 0x00b0, 0x10, 20, 1),
+       PIN_FIELD_BASE(89, 89, IOCFG_LT, 0x00b0, 0x10, 22, 1),
+       PIN_FIELD_BASE(90, 90, IOCFG_LT, 0x00b0, 0x10, 21, 1),
+       PIN_FIELD_BASE(91, 91, IOCFG_LT, 0x00b0, 0x10, 23, 1),
+       PIN_FIELD_BASE(92, 92, IOCFG_LT, 0x00b0, 0x10, 3, 1),
+       PIN_FIELD_BASE(93, 93, IOCFG_LT, 0x00b0, 0x10, 2, 1),
+       PIN_FIELD_BASE(94, 94, IOCFG_LT, 0x00b0, 0x10, 5, 1),
+       PIN_FIELD_BASE(95, 95, IOCFG_LT, 0x00b0, 0x10, 4, 1),
+       PIN_FIELD_BASE(96, 96, IOCFG_LT, 0x00a0, 0x10, 31, 1),
+       PIN_FIELD_BASE(97, 97, IOCFG_LT, 0x00b0, 0x10, 0, 1),
+       PIN_FIELD_BASE(98, 98, IOCFG_LT, 0x00b0, 0x10, 8, 1),
+       PIN_FIELD_BASE(99, 99, IOCFG_LT, 0x00a0, 0x10, 30, 1),
+       PIN_FIELD_BASE(100, 100, IOCFG_LT, 0x00b0, 0x10, 1, 1),
+       PIN_FIELD_BASE(101, 101, IOCFG_LT, 0x00a0, 0x10, 0, 1),
+       PIN_FIELD_BASE(102, 102, IOCFG_LT, 0x00a0, 0x10, 5, 1),
+       PIN_FIELD_BASE(103, 103, IOCFG_LT, 0x00a0, 0x10, 3, 1),
+       PIN_FIELD_BASE(104, 104, IOCFG_LT, 0x00a0, 0x10, 4, 1),
+       PIN_FIELD_BASE(105, 105, IOCFG_LT, 0x00a0, 0x10, 1, 1),
+       PIN_FIELD_BASE(106, 106, IOCFG_LT, 0x00a0, 0x10, 2, 1),
+       PIN_FIELD_BASE(107, 107, IOCFG_LT, 0x00a0, 0x10, 21, 1),
+       PIN_FIELD_BASE(108, 108, IOCFG_LT, 0x00a0, 0x10, 16, 1),
+       PIN_FIELD_BASE(109, 109, IOCFG_LT, 0x00a0, 0x10, 22, 1),
+       PIN_FIELD_BASE(110, 110, IOCFG_LT, 0x00a0, 0x10, 17, 1),
+       PIN_FIELD_BASE(111, 111, IOCFG_LT, 0x00a0, 0x10, 18, 1),
+       PIN_FIELD_BASE(112, 112, IOCFG_LT, 0x00a0, 0x10, 19, 1),
+       PIN_FIELD_BASE(113, 113, IOCFG_LT, 0x00a0, 0x10, 20, 1),
+       PIN_FIELD_BASE(114, 114, IOCFG_LT, 0x00a0, 0x10, 28, 1),
+       PIN_FIELD_BASE(115, 115, IOCFG_LT, 0x00a0, 0x10, 23, 1),
+       PIN_FIELD_BASE(116, 116, IOCFG_LT, 0x00a0, 0x10, 29, 1),
+       PIN_FIELD_BASE(117, 117, IOCFG_LT, 0x00a0, 0x10, 24, 1),
+       PIN_FIELD_BASE(118, 118, IOCFG_LT, 0x00a0, 0x10, 25, 1),
+       PIN_FIELD_BASE(119, 119, IOCFG_LT, 0x00a0, 0x10, 26, 1),
+       PIN_FIELD_BASE(120, 120, IOCFG_LT, 0x00a0, 0x10, 27, 1),
+       PIN_FIELD_BASE(121, 121, IOCFG_LM, 0x0050, 0x10, 8, 1),
+       PIN_FIELD_BASE(122, 122, IOCFG_LM, 0x0050, 0x10, 11, 1),
+       PIN_FIELD_BASE(123, 123, IOCFG_LM, 0x0050, 0x10, 10, 1),
+       PIN_FIELD_BASE(124, 124, IOCFG_LM, 0x0050, 0x10, 9, 1),
+       PIN_FIELD_BASE(125, 125, IOCFG_LT, 0x00a0, 0x10, 6, 1),
+       PIN_FIELD_BASE(126, 126, IOCFG_LT, 0x00a0, 0x10, 7, 1),
+       PIN_FIELD_BASE(127, 127, IOCFG_LT, 0x00a0, 0x10, 8, 1),
+       PIN_FIELD_BASE(128, 128, IOCFG_LT, 0x00a0, 0x10, 9, 1),
+       PIN_FIELD_BASE(129, 129, IOCFG_LT, 0x00a0, 0x10, 10, 1),
+       PIN_FIELD_BASE(130, 130, IOCFG_LT, 0x00a0, 0x10, 11, 1),
+       PIN_FIELD_BASE(175, 175, IOCFG_LT, 0x00b0, 0x10, 11, 1),
+       PIN_FIELD_BASE(176, 176, IOCFG_LT, 0x00b0, 0x10, 12, 1),
+};
+
+static const struct mtk_pin_field_calc mt8188_pin_drv_range[] = {
+       PIN_FIELD_BASE(0, 0, IOCFG_RM, 0x0000, 0x10, 24, 3),
+       PIN_FIELD_BASE(1, 1, IOCFG_RM, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(2, 2, IOCFG_RM, 0x0010, 0x10, 0, 3),
+       PIN_FIELD_BASE(3, 3, IOCFG_RM, 0x0010, 0x10, 3, 3),
+       PIN_FIELD_BASE(4, 4, IOCFG_RM, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(5, 5, IOCFG_RM, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(6, 6, IOCFG_RM, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(7, 7, IOCFG_RM, 0x0010, 0x10, 6, 3),
+       PIN_FIELD_BASE(8, 8, IOCFG_RM, 0x0010, 0x10, 9, 3),
+       PIN_FIELD_BASE(9, 9, IOCFG_RM, 0x0010, 0x10, 12, 3),
+       PIN_FIELD_BASE(10, 10, IOCFG_RM, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(11, 11, IOCFG_RM, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(12, 12, IOCFG_LT, 0x0010, 0x10, 24, 3),
+       PIN_FIELD_BASE(13, 13, IOCFG_LT, 0x0010, 0x10, 27, 3),
+       PIN_FIELD_BASE(14, 14, IOCFG_LT, 0x0020, 0x10, 0, 3),
+       PIN_FIELD_BASE(15, 15, IOCFG_LT, 0x0020, 0x10, 3, 3),
+       PIN_FIELD_BASE(16, 16, IOCFG_LM, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(17, 17, IOCFG_LM, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(18, 18, IOCFG_RT, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(19, 19, IOCFG_RT, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(20, 20, IOCFG_RT, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(21, 21, IOCFG_RT, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(22, 22, IOCFG_RT, 0x0000, 0x10, 0, 3),
+       PIN_FIELD_BASE(23, 23, IOCFG_RT, 0x0000, 0x10, 3, 3),
+       PIN_FIELD_BASE(24, 24, IOCFG_RT, 0x0000, 0x10, 6, 3),
+       PIN_FIELD_BASE(25, 25, IOCFG_RM, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(26, 26, IOCFG_RM, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(27, 27, IOCFG_RM, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(28, 28, IOCFG_RM, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(29, 29, IOCFG_RM, 0x0020, 0x10, 3, 3),
+       PIN_FIELD_BASE(30, 30, IOCFG_RM, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(31, 31, IOCFG_RM, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(32, 32, IOCFG_RM, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(33, 33, IOCFG_RM, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(34, 34, IOCFG_RM, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(35, 35, IOCFG_RM, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(36, 36, IOCFG_RM, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(37, 37, IOCFG_RM, 0x0010, 0x10, 27, 3),
+       PIN_FIELD_BASE(38, 38, IOCFG_RM, 0x0010, 0x10, 18, 3),
+       PIN_FIELD_BASE(39, 39, IOCFG_RM, 0x0010, 0x10, 21, 3),
+       PIN_FIELD_BASE(40, 40, IOCFG_RM, 0x0010, 0x10, 24, 3),
+       PIN_FIELD_BASE(41, 41, IOCFG_RM, 0x0020, 0x10, 0, 3),
+       PIN_FIELD_BASE(42, 42, IOCFG_LT, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(43, 43, IOCFG_LT, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(44, 44, IOCFG_LT, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(45, 45, IOCFG_LT, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(46, 46, IOCFG_LM, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(47, 47, IOCFG_RM, 0x0020, 0x10, 3, 3),
+       PIN_FIELD_BASE(48, 48, IOCFG_RM, 0x0020, 0x10, 3, 3),
+       PIN_FIELD_BASE(49, 49, IOCFG_RM, 0x0020, 0x10, 3, 3),
+       PIN_FIELD_BASE(50, 50, IOCFG_LM, 0x0000, 0x10, 6, 3),
+       PIN_FIELD_BASE(51, 51, IOCFG_LM, 0x0000, 0x10, 3, 3),
+       PIN_FIELD_BASE(52, 52, IOCFG_LM, 0x0000, 0x10, 0, 3),
+       PIN_FIELD_BASE(53, 53, IOCFG_LM, 0x0000, 0x10, 9, 3),
+       PIN_FIELD_BASE(54, 54, IOCFG_LM, 0x0000, 0x10, 12, 3),
+       PIN_FIELD_BASE(55, 55, IOCFG_RM, 0x0020, 0x10, 27, 3),
+       PIN_FIELD_BASE(56, 56, IOCFG_RM, 0x0030, 0x10, 6, 3),
+       PIN_FIELD_BASE(57, 57, IOCFG_LT, 0x0030, 0x10, 9, 3),
+       PIN_FIELD_BASE(58, 58, IOCFG_LT, 0x0030, 0x10, 15, 3),
+       PIN_FIELD_BASE(59, 59, IOCFG_RM, 0x0030, 0x10, 0, 3),
+       PIN_FIELD_BASE(60, 60, IOCFG_RM, 0x0030, 0x10, 9, 3),
+       PIN_FIELD_BASE(61, 61, IOCFG_RM, 0x0030, 0x10, 3, 3),
+       PIN_FIELD_BASE(62, 62, IOCFG_RM, 0x0030, 0x10, 12, 3),
+       PIN_FIELD_BASE(63, 63, IOCFG_LT, 0x0030, 0x10, 12, 3),
+       PIN_FIELD_BASE(64, 64, IOCFG_LT, 0x0030, 0x10, 18, 3),
+       PIN_FIELD_BASE(65, 65, IOCFG_RT, 0x0010, 0x10, 0, 3),
+       PIN_FIELD_BASE(66, 66, IOCFG_RT, 0x0010, 0x10, 6, 3),
+       PIN_FIELD_BASE(67, 67, IOCFG_RT, 0x0010, 0x10, 3, 3),
+       PIN_FIELD_BASE(68, 68, IOCFG_RT, 0x0010, 0x10, 9, 3),
+       PIN_FIELD_BASE(69, 69, IOCFG_RM, 0x0030, 0x10, 18, 3),
+       PIN_FIELD_BASE(70, 70, IOCFG_RM, 0x0030, 0x10, 15, 3),
+       PIN_FIELD_BASE(71, 71, IOCFG_RM, 0x0040, 0x10, 0, 3),
+       PIN_FIELD_BASE(72, 72, IOCFG_RM, 0x0030, 0x10, 27, 3),
+       PIN_FIELD_BASE(73, 73, IOCFG_RM, 0x0030, 0x10, 21, 3),
+       PIN_FIELD_BASE(74, 74, IOCFG_RM, 0x0030, 0x10, 24, 3),
+       PIN_FIELD_BASE(75, 75, IOCFG_RM, 0x0040, 0x10, 6, 3),
+       PIN_FIELD_BASE(76, 76, IOCFG_RM, 0x0040, 0x10, 3, 3),
+       PIN_FIELD_BASE(77, 77, IOCFG_RM, 0x0040, 0x10, 12, 3),
+       PIN_FIELD_BASE(78, 78, IOCFG_RM, 0x0040, 0x10, 9, 3),
+       PIN_FIELD_BASE(79, 79, IOCFG_RT, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(80, 80, IOCFG_RT, 0x0010, 0x10, 12, 3),
+       PIN_FIELD_BASE(81, 81, IOCFG_RT, 0x0010, 0x10, 21, 3),
+       PIN_FIELD_BASE(82, 82, IOCFG_RT, 0x0010, 0x10, 18, 3),
+       PIN_FIELD_BASE(83, 83, IOCFG_LT, 0x0030, 0x10, 0, 3),
+       PIN_FIELD_BASE(84, 84, IOCFG_LT, 0x0020, 0x10, 27, 3),
+       PIN_FIELD_BASE(85, 85, IOCFG_LT, 0x0030, 0x10, 0, 3),
+       PIN_FIELD_BASE(86, 86, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(87, 87, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(88, 88, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(89, 89, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(90, 90, IOCFG_LT, 0x0030, 0x10, 0, 3),
+       PIN_FIELD_BASE(91, 91, IOCFG_LT, 0x0030, 0x10, 0, 3),
+       PIN_FIELD_BASE(92, 92, IOCFG_LT, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(93, 93, IOCFG_LT, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(94, 94, IOCFG_LT, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(95, 95, IOCFG_LT, 0x0020, 0x10, 9, 3),
+       PIN_FIELD_BASE(96, 96, IOCFG_LT, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(97, 97, IOCFG_LT, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(98, 98, IOCFG_LT, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(99, 99, IOCFG_LT, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(100, 100, IOCFG_LT, 0x0030, 0x10, 6, 3),
+       PIN_FIELD_BASE(101, 101, IOCFG_LT, 0x0000, 0x10, 0, 3),
+       PIN_FIELD_BASE(102, 102, IOCFG_LT, 0x0000, 0x10, 15, 3),
+       PIN_FIELD_BASE(103, 103, IOCFG_LT, 0x0000, 0x10, 9, 3),
+       PIN_FIELD_BASE(104, 104, IOCFG_LT, 0x0000, 0x10, 12, 3),
+       PIN_FIELD_BASE(105, 105, IOCFG_LT, 0x0000, 0x10, 3, 3),
+       PIN_FIELD_BASE(106, 106, IOCFG_LT, 0x0000, 0x10, 6, 3),
+       PIN_FIELD_BASE(107, 107, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(108, 108, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(109, 109, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(110, 110, IOCFG_LT, 0x0020, 0x10, 6, 3),
+       PIN_FIELD_BASE(111, 111, IOCFG_LT, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(112, 112, IOCFG_LT, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(113, 113, IOCFG_LT, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(114, 114, IOCFG_LT, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(115, 115, IOCFG_LT, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(116, 116, IOCFG_LT, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(117, 117, IOCFG_LT, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(118, 118, IOCFG_LT, 0x0020, 0x10, 12, 3),
+       PIN_FIELD_BASE(119, 119, IOCFG_LT, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(120, 120, IOCFG_LT, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(121, 121, IOCFG_LM, 0x0010, 0x10, 3, 3),
+       PIN_FIELD_BASE(122, 122, IOCFG_LM, 0x0010, 0x10, 12, 3),
+       PIN_FIELD_BASE(123, 123, IOCFG_LM, 0x0010, 0x10, 9, 3),
+       PIN_FIELD_BASE(124, 124, IOCFG_LM, 0x0010, 0x10, 6, 3),
+       PIN_FIELD_BASE(125, 125, IOCFG_LT, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(126, 126, IOCFG_LT, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(127, 127, IOCFG_LT, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(128, 128, IOCFG_LT, 0x0020, 0x10, 27, 3),
+       PIN_FIELD_BASE(129, 129, IOCFG_LT, 0x0020, 0x10, 27, 3),
+       PIN_FIELD_BASE(130, 130, IOCFG_LT, 0x0020, 0x10, 27, 3),
+       PIN_FIELD_BASE(131, 131, IOCFG_RM, 0x0000, 0x10, 0, 3),
+       PIN_FIELD_BASE(132, 132, IOCFG_RM, 0x0000, 0x10, 15, 3),
+       PIN_FIELD_BASE(133, 133, IOCFG_RM, 0x0000, 0x10, 18, 3),
+       PIN_FIELD_BASE(134, 134, IOCFG_RM, 0x0000, 0x10, 21, 3),
+       PIN_FIELD_BASE(135, 135, IOCFG_RM, 0x0020, 0x10, 15, 3),
+       PIN_FIELD_BASE(136, 136, IOCFG_RM, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(137, 137, IOCFG_RM, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(138, 138, IOCFG_RM, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(139, 139, IOCFG_RM, 0x0020, 0x10, 18, 3),
+       PIN_FIELD_BASE(140, 140, IOCFG_RM, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(141, 141, IOCFG_RM, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(142, 142, IOCFG_RM, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(143, 143, IOCFG_RM, 0x0000, 0x10, 3, 3),
+       PIN_FIELD_BASE(144, 144, IOCFG_RM, 0x0000, 0x10, 6, 3),
+       PIN_FIELD_BASE(145, 145, IOCFG_RM, 0x0000, 0x10, 9, 3),
+       PIN_FIELD_BASE(146, 146, IOCFG_RM, 0x0000, 0x10, 12, 3),
+       PIN_FIELD_BASE(147, 147, IOCFG_RM, 0x0020, 0x10, 21, 3),
+       PIN_FIELD_BASE(148, 148, IOCFG_RM, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(149, 149, IOCFG_RM, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(150, 150, IOCFG_RM, 0x0020, 0x10, 24, 3),
+       PIN_FIELD_BASE(151, 151, IOCFG_LT, 0x0010, 0x10, 15, 3),
+       PIN_FIELD_BASE(152, 152, IOCFG_LT, 0x0010, 0x10, 12, 3),
+       PIN_FIELD_BASE(153, 153, IOCFG_LT, 0x0010, 0x10, 9, 3),
+       PIN_FIELD_BASE(154, 154, IOCFG_LT, 0x0010, 0x10, 6, 3),
+       PIN_FIELD_BASE(155, 155, IOCFG_LT, 0x0010, 0x10, 21, 3),
+       PIN_FIELD_BASE(156, 156, IOCFG_LT, 0x0000, 0x10, 21, 3),
+       PIN_FIELD_BASE(157, 157, IOCFG_LT, 0x0000, 0x10, 18, 3),
+       PIN_FIELD_BASE(158, 158, IOCFG_LT, 0x0010, 0x10, 3, 3),
+       PIN_FIELD_BASE(159, 159, IOCFG_LT, 0x0010, 0x10, 0, 3),
+       PIN_FIELD_BASE(160, 160, IOCFG_LT, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(161, 161, IOCFG_LT, 0x0000, 0x10, 24, 3),
+       PIN_FIELD_BASE(162, 162, IOCFG_LT, 0x0010, 0x10, 18, 3),
+       PIN_FIELD_BASE(163, 163, IOCFG_RT, 0x0000, 0x10, 12, 3),
+       PIN_FIELD_BASE(164, 164, IOCFG_RT, 0x0000, 0x10, 9, 3),
+       PIN_FIELD_BASE(165, 165, IOCFG_RT, 0x0000, 0x10, 15, 3),
+       PIN_FIELD_BASE(166, 166, IOCFG_RT, 0x0000, 0x10, 18, 3),
+       PIN_FIELD_BASE(167, 167, IOCFG_RT, 0x0000, 0x10, 21, 3),
+       PIN_FIELD_BASE(168, 168, IOCFG_RT, 0x0000, 0x10, 24, 3),
+       PIN_FIELD_BASE(169, 169, IOCFG_LM, 0x0000, 0x10, 18, 3),
+       PIN_FIELD_BASE(170, 170, IOCFG_LM, 0x0000, 0x10, 15, 3),
+       PIN_FIELD_BASE(171, 171, IOCFG_LM, 0x0000, 0x10, 21, 3),
+       PIN_FIELD_BASE(172, 172, IOCFG_LM, 0x0000, 0x10, 24, 3),
+       PIN_FIELD_BASE(173, 173, IOCFG_LM, 0x0000, 0x10, 27, 3),
+       PIN_FIELD_BASE(174, 174, IOCFG_LM, 0x0010, 0x10, 0, 3),
+       PIN_FIELD_BASE(175, 175, IOCFG_LT, 0x0030, 0x10, 3, 3),
+       PIN_FIELD_BASE(176, 176, IOCFG_LT, 0x0030, 0x10, 3, 3),
+};
+
+static const struct mtk_pin_reg_calc mt8188_reg_cals[PINCTRL_PIN_REG_MAX] = {
+       [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8188_pin_mode_range),
+       [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8188_pin_dir_range),
+       [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8188_pin_di_range),
+       [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8188_pin_do_range),
+       [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8188_pin_smt_range),
+       [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8188_pin_ies_range),
+       [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8188_pin_pupd_range),
+       [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8188_pin_r0_range),
+       [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8188_pin_r1_range),
+       [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt8188_pin_pu_range),
+       [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt8188_pin_pd_range),
+       [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8188_pin_drv_range),
+};
+
+static const struct mtk_pin_desc mt8188_pins[] = {
+       MT8188_TYPE0_PIN(0, "GPIO00"),
+       MT8188_TYPE0_PIN(1, "GPIO01"),
+       MT8188_TYPE0_PIN(2, "GPIO02"),
+       MT8188_TYPE0_PIN(3, "GPIO03"),
+       MT8188_TYPE0_PIN(4, "GPIO04"),
+       MT8188_TYPE0_PIN(5, "GPIO05"),
+       MT8188_TYPE0_PIN(6, "GPIO06"),
+       MT8188_TYPE0_PIN(7, "GPIO07"),
+       MT8188_TYPE0_PIN(8, "GPIO08"),
+       MT8188_TYPE0_PIN(9, "GPIO09"),
+       MT8188_TYPE0_PIN(10, "GPIO10"),
+       MT8188_TYPE0_PIN(11, "GPIO11"),
+       MT8188_TYPE0_PIN(12, "GPIO12"),
+       MT8188_TYPE0_PIN(13, "GPIO13"),
+       MT8188_TYPE0_PIN(14, "GPIO14"),
+       MT8188_TYPE0_PIN(15, "GPIO15"),
+       MT8188_TYPE0_PIN(16, "GPIO16"),
+       MT8188_TYPE0_PIN(17, "GPIO17"),
+       MT8188_TYPE0_PIN(18, "CMMPDN0"),
+       MT8188_TYPE0_PIN(19, "CMMRST0"),
+       MT8188_TYPE0_PIN(20, "CMMPDN1"),
+       MT8188_TYPE0_PIN(21, "CMMRST1"),
+       MT8188_TYPE0_PIN(22, "CMMCLK0"),
+       MT8188_TYPE0_PIN(23, "CMMCLK1"),
+       MT8188_TYPE0_PIN(24, "CMMCLK2"),
+       MT8188_TYPE0_PIN(25, "DSI0_LCM_RST"),
+       MT8188_TYPE0_PIN(26, "DSI0_DSI_TE"),
+       MT8188_TYPE0_PIN(27, "DSI1_LCM_RST"),
+       MT8188_TYPE0_PIN(28, "DSI1_DSI_TE"),
+       MT8188_TYPE0_PIN(29, "DISP_PWM0"),
+       MT8188_TYPE0_PIN(30, "DISP_PWM1"),
+       MT8188_TYPE0_PIN(31, "UART0_TXD"),
+       MT8188_TYPE0_PIN(32, "UART0_RXD"),
+       MT8188_TYPE0_PIN(33, "UART1_TXD"),
+       MT8188_TYPE0_PIN(34, "UART1_RXD"),
+       MT8188_TYPE0_PIN(35, "UART2_TXD"),
+       MT8188_TYPE0_PIN(36, "UART2_RXD"),
+       MT8188_TYPE0_PIN(37, "JTMS"),
+       MT8188_TYPE0_PIN(38, "JTCK"),
+       MT8188_TYPE0_PIN(39, "JTDI"),
+       MT8188_TYPE0_PIN(40, "JTDO"),
+       MT8188_TYPE0_PIN(41, "JTRST"),
+       MT8188_TYPE1_PIN(42, "KPCOL0"),
+       MT8188_TYPE1_PIN(43, "KPCOL1"),
+       MT8188_TYPE1_PIN(44, "KPROW0"),
+       MT8188_TYPE1_PIN(45, "KPROW1"),
+       MT8188_TYPE0_PIN(46, "DPTX_HPD"),
+       MT8188_TYPE0_PIN(47, "PCIE_WAKE_N"),
+       MT8188_TYPE0_PIN(48, "PCIE_PERESET_N"),
+       MT8188_TYPE0_PIN(49, "PCIE_CLKREQ_N"),
+       MT8188_TYPE0_PIN(50, "HDMITX_PWR5V"),
+       MT8188_TYPE0_PIN(51, "HDMITX_HTPLG"),
+       MT8188_TYPE0_PIN(52, "HDMITX_CEC"),
+       MT8188_TYPE0_PIN(53, "HDMITX_SCL"),
+       MT8188_TYPE0_PIN(54, "HDMITX_SDA"),
+       MT8188_TYPE0_PIN(55, "SCL0"),
+       MT8188_TYPE0_PIN(56, "SDA0"),
+       MT8188_TYPE0_PIN(57, "SCL1"),
+       MT8188_TYPE0_PIN(58, "SDA1"),
+       MT8188_TYPE0_PIN(59, "SCL2"),
+       MT8188_TYPE0_PIN(60, "SDA2"),
+       MT8188_TYPE0_PIN(61, "SCL3"),
+       MT8188_TYPE0_PIN(62, "SDA3"),
+       MT8188_TYPE0_PIN(63, "SCL4"),
+       MT8188_TYPE0_PIN(64, "SDA4"),
+       MT8188_TYPE0_PIN(65, "SCL5"),
+       MT8188_TYPE0_PIN(66, "SDA5"),
+       MT8188_TYPE0_PIN(67, "SCL6"),
+       MT8188_TYPE0_PIN(68, "SDA6"),
+       MT8188_TYPE0_PIN(69, "SPIM0_CSB"),
+       MT8188_TYPE0_PIN(70, "SPIM0_CLK"),
+       MT8188_TYPE0_PIN(71, "SPIM0_MOSI"),
+       MT8188_TYPE0_PIN(72, "SPIM0_MISO"),
+       MT8188_TYPE0_PIN(73, "SPIM0_MIO2"),
+       MT8188_TYPE0_PIN(74, "SPIM0_MIO3"),
+       MT8188_TYPE0_PIN(75, "SPIM1_CSB"),
+       MT8188_TYPE0_PIN(76, "SPIM1_CLK"),
+       MT8188_TYPE0_PIN(77, "SPIM1_MOSI"),
+       MT8188_TYPE0_PIN(78, "SPIM1_MISO"),
+       MT8188_TYPE0_PIN(79, "SPIM2_CSB"),
+       MT8188_TYPE0_PIN(80, "SPIM2_CLK"),
+       MT8188_TYPE0_PIN(81, "SPIM2_MOSI"),
+       MT8188_TYPE0_PIN(82, "SPIM2_MISO"),
+       MT8188_TYPE0_PIN(83, "USB0_IDDIG"),
+       MT8188_TYPE0_PIN(84, "USB0_DRV_VBUS"),
+       MT8188_TYPE0_PIN(85, "USB0_VBUS_VALID"),
+       MT8188_TYPE0_PIN(86, "USB1_IDDIG"),
+       MT8188_TYPE0_PIN(87, "USB1_DRV_VBUS"),
+       MT8188_TYPE0_PIN(88, "USB1_VBUS_VALID"),
+       MT8188_TYPE0_PIN(89, "USB2_IDDIG"),
+       MT8188_TYPE0_PIN(90, "USB2_DRV_VBUS"),
+       MT8188_TYPE0_PIN(91, "USB2_VBUS_VALID"),
+       MT8188_TYPE0_PIN(92, "PWRAP_SPI_CSN"),
+       MT8188_TYPE0_PIN(93, "PWRAP_SPI_CK"),
+       MT8188_TYPE0_PIN(94, "PWRAP_SPI_MO"),
+       MT8188_TYPE0_PIN(95, "PWRAP_SPI_MI"),
+       MT8188_TYPE0_PIN(96, "PMIC_SRCLKENA0"),
+       MT8188_TYPE0_PIN(97, "PMIC_SRCLKENA1"),
+       MT8188_TYPE0_PIN(98, "SCP_VREQ_VAO"),
+       MT8188_TYPE0_PIN(99, "PMIC_RTC32K_CK"),
+       MT8188_TYPE0_PIN(100, "PMIC_WATCHDOG"),
+       MT8188_TYPE0_PIN(101, "AUD_CLK_MOSI"),
+       MT8188_TYPE0_PIN(102, "AUD_SYNC_MOSI"),
+       MT8188_TYPE0_PIN(103, "AUD_DAT_MOSI0"),
+       MT8188_TYPE0_PIN(104, "AUD_DAT_MOSI1"),
+       MT8188_TYPE0_PIN(105, "AUD_DAT_MISO0"),
+       MT8188_TYPE0_PIN(106, "AUD_DAT_MISO1"),
+       MT8188_TYPE0_PIN(107, "I2SIN_MCK"),
+       MT8188_TYPE0_PIN(108, "I2SIN_BCK"),
+       MT8188_TYPE0_PIN(109, "I2SIN_WS"),
+       MT8188_TYPE0_PIN(110, "I2SIN_D0"),
+       MT8188_TYPE0_PIN(111, "I2SIN_D1"),
+       MT8188_TYPE0_PIN(112, "I2SIN_D2"),
+       MT8188_TYPE0_PIN(113, "I2SIN_D3"),
+       MT8188_TYPE0_PIN(114, "I2SO2_MCK"),
+       MT8188_TYPE0_PIN(115, "I2SO2_BCK"),
+       MT8188_TYPE0_PIN(116, "I2SO2_WS"),
+       MT8188_TYPE0_PIN(117, "I2SO2_D0"),
+       MT8188_TYPE0_PIN(118, "I2SO2_D1"),
+       MT8188_TYPE0_PIN(119, "I2SO2_D2"),
+       MT8188_TYPE0_PIN(120, "I2SO2_D3"),
+       MT8188_TYPE0_PIN(121, "PCM_CLK"),
+       MT8188_TYPE0_PIN(122, "PCM_SYNC"),
+       MT8188_TYPE0_PIN(123, "PCM_DO"),
+       MT8188_TYPE0_PIN(124, "PCM_DI"),
+       MT8188_TYPE0_PIN(125, "DMIC1_CLK"),
+       MT8188_TYPE0_PIN(126, "DMIC1_DAT"),
+       MT8188_TYPE0_PIN(127, "DMIC1_DAT_R"),
+       MT8188_TYPE0_PIN(128, "DMIC2_CLK"),
+       MT8188_TYPE0_PIN(129, "DMIC2_DAT"),
+       MT8188_TYPE0_PIN(130, "DMIC2_DAT_R"),
+       MT8188_TYPE1_PIN(131, "DPI_D0"),
+       MT8188_TYPE1_PIN(132, "DPI_D1"),
+       MT8188_TYPE1_PIN(133, "DPI_D2"),
+       MT8188_TYPE1_PIN(134, "DPI_D3"),
+       MT8188_TYPE1_PIN(135, "DPI_D4"),
+       MT8188_TYPE1_PIN(136, "DPI_D5"),
+       MT8188_TYPE1_PIN(137, "DPI_D6"),
+       MT8188_TYPE1_PIN(138, "DPI_D7"),
+       MT8188_TYPE1_PIN(139, "DPI_D8"),
+       MT8188_TYPE1_PIN(140, "DPI_D9"),
+       MT8188_TYPE1_PIN(141, "DPI_D10"),
+       MT8188_TYPE1_PIN(142, "DPI_D11"),
+       MT8188_TYPE1_PIN(143, "DPI_D12"),
+       MT8188_TYPE1_PIN(144, "DPI_D13"),
+       MT8188_TYPE1_PIN(145, "DPI_D14"),
+       MT8188_TYPE1_PIN(146, "DPI_D15"),
+       MT8188_TYPE1_PIN(147, "DPI_HSYNC"),
+       MT8188_TYPE1_PIN(148, "DPI_VSYNC"),
+       MT8188_TYPE1_PIN(149, "DPI_DE"),
+       MT8188_TYPE1_PIN(150, "DPI_CK"),
+       MT8188_TYPE1_PIN(151, "EMMC_DAT7"),
+       MT8188_TYPE1_PIN(152, "EMMC_DAT6"),
+       MT8188_TYPE1_PIN(153, "EMMC_DAT5"),
+       MT8188_TYPE1_PIN(154, "EMMC_DAT4"),
+       MT8188_TYPE1_PIN(155, "EMMC_RSTB"),
+       MT8188_TYPE1_PIN(156, "EMMC_CMD"),
+       MT8188_TYPE1_PIN(157, "EMMC_CLK"),
+       MT8188_TYPE1_PIN(158, "EMMC_DAT3"),
+       MT8188_TYPE1_PIN(159, "EMMC_DAT2"),
+       MT8188_TYPE1_PIN(160, "EMMC_DAT1"),
+       MT8188_TYPE1_PIN(161, "EMMC_DAT0"),
+       MT8188_TYPE1_PIN(162, "EMMC_DSL"),
+       MT8188_TYPE1_PIN(163, "MSDC1_CMD"),
+       MT8188_TYPE1_PIN(164, "MSDC1_CLK"),
+       MT8188_TYPE1_PIN(165, "MSDC1_DAT0"),
+       MT8188_TYPE1_PIN(166, "MSDC1_DAT1"),
+       MT8188_TYPE1_PIN(167, "MSDC1_DAT2"),
+       MT8188_TYPE1_PIN(168, "MSDC1_DAT3"),
+       MT8188_TYPE1_PIN(169, "MSDC2_CMD"),
+       MT8188_TYPE1_PIN(170, "MSDC2_CLK"),
+       MT8188_TYPE1_PIN(171, "MSDC2_DAT0"),
+       MT8188_TYPE1_PIN(172, "MSDC2_DAT1"),
+       MT8188_TYPE1_PIN(173, "MSDC2_DAT2"),
+       MT8188_TYPE1_PIN(174, "MSDC2_DAT3"),
+       MT8188_TYPE0_PIN(175, "SPMI_M_SCL"),
+       MT8188_TYPE0_PIN(176, "SPMI_M_SDA"),
+};
+
+// =========================================================================
+
+static const struct mtk_io_type_desc mt8188_io_type_desc[] = {
+       [IO_TYPE_GRP0] = {
+               .name = "mt8188",
+               .bias_set = mtk_pinconf_bias_set_pu_pd,
+               .drive_set = mtk_pinconf_drive_set_v1,
+               .input_enable = mtk_pinconf_input_enable_v1,
+       },
+       [IO_TYPE_GRP1] = {
+               .name = "MSDC",
+               .bias_set = mtk_pinconf_bias_set_pupd_r1_r0,
+               .drive_set = mtk_pinconf_drive_set_v1,
+               .input_enable = mtk_pinconf_input_enable_v1,
+       },
+};
+
+static int mt8188_uart0_pins[] = {32, 31};
+static int mt8188_uart0_funcs[] = {1, 1};
+
+static int mt8188_uart1_pins[] = {34, 33};
+static int mt8188_uart1_funcs[] = {1, 1};
+
+static int mt8188_msdc0_pins[] = {151, 152, 153, 154, 155, 156, 157, 158, 159, 
160, 161, 162};
+static int mt8188_msdc0_funcs[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+
+static int mt8188_i2c0_pins[] = {55, 56};
+static int mt8188_i2c0_funcs[] = {1, 1};
+
+static int mt8188_i2c1_pins[] = {57, 58};
+static int mt8188_i2c1_funcs[] = {1, 1};
+
+static int mt8188_i2c2_pins[] = {59, 60};
+static int mt8188_i2c2_funcs[] = {1, 1};
+
+static int mt8188_i2c3_pins[] = {61, 62};
+static int mt8188_i2c3_funcs[] = {1, 1};
+
+static int mt8188_i2c4_pins[] = {63, 64};
+static int mt8188_i2c4_funcs[] = {1, 1};
+
+static int mt8188_i2c5_pins[] = {65, 66};
+static int mt8188_i2c5_funcs[] = {1, 1};
+
+static int mt8188_i2c6_pins[] = {67, 68};
+static int mt8188_i2c6_funcs[] = {1, 1};
+
+static int mt8188_spi0_pins[] = {69, 70, 71, 72};
+static int mt8188_spi0_funcs[] = {1, 1, 1, 1};
+
+static int mt8188_spi1_pins[] = {75, 76, 77, 78};
+static int mt8188_spi1_funcs[] = {1, 1, 1, 1};
+
+static int mt8188_spi2_pins[] = {79, 80, 81, 82};
+static int mt8188_spi2_funcs[] = {1, 1, 1, 1};
+
+static const struct mtk_group_desc mt8188_groups[] = {
+       PINCTRL_PIN_GROUP("uart0_0_rxd_txd", mt8188_uart0),
+       PINCTRL_PIN_GROUP("uart1_0", mt8188_uart1),
+       PINCTRL_PIN_GROUP("msdc0", mt8188_msdc0),
+       PINCTRL_PIN_GROUP("i2c0", mt8188_i2c0),
+       PINCTRL_PIN_GROUP("i2c1", mt8188_i2c1),
+       PINCTRL_PIN_GROUP("i2c2", mt8188_i2c2),
+       PINCTRL_PIN_GROUP("i2c3", mt8188_i2c3),
+       PINCTRL_PIN_GROUP("i2c4", mt8188_i2c4),
+       PINCTRL_PIN_GROUP("i2c5", mt8188_i2c5),
+       PINCTRL_PIN_GROUP("i2c6", mt8188_i2c6),
+       PINCTRL_PIN_GROUP("spi0", mt8188_spi0),
+       PINCTRL_PIN_GROUP("spi1", mt8188_spi1),
+       PINCTRL_PIN_GROUP("spi2", mt8188_spi2),
+};
+
+static const char *const mt8188_uart_groups[] = {
+       "uart0_0_rxd_txd", "uart1_0",
+};
+
+static const char *const mt8188_msdc_groups[] = {
+       "msdc0",
+};
+
+static const char *const mt8188_i2c_groups[] = {
+       "i2c0", "i2c1", "i2c2", "i2c3", "i2c4", "i2c5", "i2c6"
+};
+
+static const char *const mt8188_spi_groups[] = {
+       "spi0", "spi1", "spi2",
+};
+
+static const struct mtk_function_desc mt8188_functions[] = {
+       {"uart", mt8188_uart_groups, ARRAY_SIZE(mt8188_uart_groups)},
+       {"msdc", mt8188_msdc_groups, ARRAY_SIZE(mt8188_msdc_groups)},
+       {"i2c", mt8188_i2c_groups, ARRAY_SIZE(mt8188_i2c_groups)},
+       {"spi", mt8188_spi_groups, ARRAY_SIZE(mt8188_spi_groups)},
+};
+
+static struct mtk_pinctrl_soc mt8188_data = {
+       .name = "mt8188_pinctrl",
+       .reg_cal = mt8188_reg_cals,
+       .pins = mt8188_pins,
+       .npins = ARRAY_SIZE(mt8188_pins),
+       .grps = mt8188_groups,
+       .ngrps = ARRAY_SIZE(mt8188_groups),
+       .funcs = mt8188_functions,
+       .nfuncs = ARRAY_SIZE(mt8188_functions),
+       .io_type = mt8188_io_type_desc,
+       .ntype = ARRAY_SIZE(mt8188_io_type_desc),
+       .base_names = mt8188_pinctrl_register_base_names,
+       .nbase_names = ARRAY_SIZE(mt8188_pinctrl_register_base_names),
+       .base_calc = 1,
+       .rev = MTK_PINCTRL_V1,
+};
+
+static int mtk_pinctrl_mt8188_probe(struct udevice *dev)
+{
+       return mtk_pinctrl_common_probe(dev, &mt8188_data);
+}
+
+static const struct udevice_id mt8188_pctrl_match[] = {
+       {.compatible = "mediatek,mt8188-pinctrl"},
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(mt8188_pinctrl) = {
+       .name = "mt8188_pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = mt8188_pctrl_match,
+       .ops = &mtk_pinctrl_ops,
+       .probe = mtk_pinctrl_mt8188_probe,
+       .priv_auto = sizeof(struct mtk_pinctrl_priv),
+};

-- 
2.52.0

Reply via email to