xref: /linux/drivers/pinctrl/mediatek/pinctrl-mt6893.c (revision eafd95ea74846eda3e3eac6b2bb7f34619d8a6f8)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (C) 2019 MediaTek Inc.
4  * Copyright (C) 2024 Collabora Ltd.
5  *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
6  */
7 
8 #include <linux/module.h>
9 #include "pinctrl-mtk-mt6893.h"
10 #include "pinctrl-paris.h"
11 
12 #define PIN_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits)  \
13 	PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
14 		32, 0)
15 
16 #define PINS_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
17 	PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
18 		32, 1)
19 
20 static const struct mtk_pin_field_calc mt6893_pin_mode_range[] = {
21 	PIN_FIELD(0, 219, 0x0300, 0x10, 0, 4),
22 };
23 
24 static const struct mtk_pin_field_calc mt6893_pin_dir_range[] = {
25 	PIN_FIELD(0, 219, 0x0000, 0x10, 0, 1),
26 };
27 
28 static const struct mtk_pin_field_calc mt6893_pin_di_range[] = {
29 	PIN_FIELD(0, 219, 0x0200, 0x10, 0, 1),
30 };
31 
32 static const struct mtk_pin_field_calc mt6893_pin_do_range[] = {
33 	PIN_FIELD(0, 219, 0x0100, 0x10, 0, 1),
34 };
35 
36 static const struct mtk_pin_field_calc mt6893_pin_smt_range[] = {
37 	PINS_FIELD_BASE(0, 9, 2, 0x00f0, 0x10, 7, 1),
38 	PINS_FIELD_BASE(10, 15, 1, 0x0090, 0x10, 4, 1),
39 	PIN_FIELD_BASE(16, 17, 5, 0x00c0, 0x10, 8, 1),
40 	PINS_FIELD_BASE(18, 25, 7, 0x00f0, 0x10, 1, 1),
41 	PINS_FIELD_BASE(26, 30, 6, 0x00e0, 0x10, 6, 1),
42 	PINS_FIELD_BASE(31, 35, 6, 0x00e0, 0x10, 2, 1),
43 	PIN_FIELD_BASE(36, 36, 6, 0x00e0, 0x10, 16, 1),
44 	PINS_FIELD_BASE(37, 39, 6, 0x00e0, 0x10, 15, 1),
45 	PIN_FIELD_BASE(40, 41, 6, 0x00e0, 0x10, 0, 1),
46 	PIN_FIELD_BASE(42, 42, 6, 0x00e0, 0x10, 5, 1),
47 	PIN_FIELD_BASE(43, 44, 6, 0x00e0, 0x10, 3, 1),
48 	PIN_FIELD_BASE(45, 45, 6, 0x00e0, 0x10, 12, 1),
49 	PIN_FIELD_BASE(46, 46, 6, 0x00e0, 0x10, 14, 1),
50 	PIN_FIELD_BASE(47, 47, 6, 0x00e0, 0x10, 13, 1),
51 	PIN_FIELD_BASE(48, 49, 6, 0x00e0, 0x10, 10, 1),
52 	PIN_FIELD_BASE(50, 50, 6, 0x00e0, 0x10, 9, 1),
53 	PIN_FIELD_BASE(51, 52, 3, 0x0090, 0x10, 6, 1),
54 	PINS_FIELD_BASE(53, 56, 3, 0x0090, 0x10, 8, 1),
55 	PIN_FIELD_BASE(57, 60, 3, 0x0090, 0x10, 2, 1),
56 	PIN_FIELD_BASE(61, 61, 3, 0x0090, 0x10, 1, 1),
57 	PIN_FIELD_BASE(62, 62, 4, 0x0050, 0x10, 1, 1),
58 	PINS_FIELD_BASE(63, 73, 3, 0x0090, 0x10, 0, 1),
59 	PINS_FIELD_BASE(74, 84, 4, 0x0050, 0x10, 0, 1),
60 	PIN_FIELD_BASE(85, 86, 4, 0x0050, 0x10, 4, 1),
61 	PIN_FIELD_BASE(87, 88, 4, 0x0050, 0x10, 2, 1),
62 	PIN_FIELD_BASE(89, 90, 2, 0x00f0, 0x10, 26, 1),
63 	PIN_FIELD_BASE(91, 91, 2, 0x00f0, 0x10, 0, 1),
64 	PINS_FIELD_BASE(92, 95, 2, 0x0100, 0x10, 0, 1),
65 	PIN_FIELD_BASE(96, 96, 2, 0x00f0, 0x10, 30, 1),
66 	PIN_FIELD_BASE(97, 97, 2, 0x00f0, 0x10, 28, 1),
67 	PIN_FIELD_BASE(98, 98, 2, 0x00f0, 0x10, 31, 1),
68 	PINS_FIELD_BASE(99, 102, 2, 0x00f0, 0x10, 29, 1),
69 	PINS_FIELD_BASE(103, 105, 2, 0x00f0, 0x10, 24, 1),
70 	PIN_FIELD_BASE(106, 106, 2, 0x00f0, 0x10, 25, 1),
71 	PIN_FIELD_BASE(107, 108, 2, 0x00f0, 0x10, 5, 1),
72 	PINS_FIELD_BASE(109, 113, 2, 0x00f0, 0x10, 8, 1),
73 	PINS_FIELD_BASE(114, 116, 2, 0x00f0, 0x10, 16, 1),
74 	PIN_FIELD_BASE(117, 117, 2, 0x00f0, 0x10, 17, 1),
75 	PIN_FIELD_BASE(118, 118, 2, 0x00f0, 0x10, 10, 1),
76 	PIN_FIELD_BASE(119, 119, 2, 0x00f0, 0x10, 18, 1),
77 	PIN_FIELD_BASE(120, 120, 2, 0x00f0, 0x10, 15, 1),
78 	PIN_FIELD_BASE(121, 121, 2, 0x00f0, 0x10, 23, 1),
79 	PIN_FIELD_BASE(122, 122, 2, 0x00f0, 0x10, 14, 1),
80 	PIN_FIELD_BASE(123, 123, 2, 0x00f0, 0x10, 22, 1),
81 	PIN_FIELD_BASE(124, 124, 2, 0x00f0, 0x10, 13, 1),
82 	PIN_FIELD_BASE(125, 125, 2, 0x00f0, 0x10, 21, 1),
83 	PINS_FIELD_BASE(126, 129, 2, 0x00f0, 0x10, 9, 1),
84 	PINS_FIELD_BASE(130, 135, 2, 0x00f0, 0x10, 4, 1),
85 	PIN_FIELD_BASE(136, 138, 2, 0x00f0, 0x10, 1, 1),
86 	PIN_FIELD_BASE(139, 139, 2, 0x00f0, 0x10, 12, 1),
87 	PIN_FIELD_BASE(140, 140, 2, 0x00f0, 0x10, 20, 1),
88 	PIN_FIELD_BASE(141, 141, 2, 0x00f0, 0x10, 11, 1),
89 	PIN_FIELD_BASE(142, 142, 2, 0x00f0, 0x10, 19, 1),
90 	PINS_FIELD_BASE(143, 148, 1, 0x0090, 0x10, 3, 1),
91 	PIN_FIELD_BASE(149, 151, 1, 0x0090, 0x10, 0, 1),
92 	PINS_FIELD_BASE(152, 155, 5, 0x00c0, 0x10, 10, 1),
93 	PIN_FIELD_BASE(156, 156, 5, 0x00c0, 0x10, 14, 1),
94 	PINS_FIELD_BASE(157, 159, 5, 0x00c0, 0x10, 13, 1),
95 	PIN_FIELD_BASE(160, 161, 5, 0x00c0, 0x10, 11, 1),
96 	PINS_FIELD_BASE(162, 171, 5, 0x00c0, 0x10, 0, 1),
97 	PIN_FIELD_BASE(172, 173, 5, 0x00c0, 0x10, 4, 1),
98 	PIN_FIELD_BASE(174, 174, 5, 0x00c0, 0x10, 3, 1),
99 	PIN_FIELD_BASE(175, 175, 5, 0x00c0, 0x10, 6, 1),
100 	PIN_FIELD_BASE(176, 177, 5, 0x00c0, 0x10, 1, 1),
101 	PINS_FIELD_BASE(178, 182, 5, 0x00c0, 0x10, 7, 1),
102 	PIN_FIELD_BASE(183, 183, 7, 0x00f0, 0x10, 3, 1),
103 	PINS_FIELD_BASE(184, 190, 7, 0x00f0, 0x10, 4, 1),
104 	PIN_FIELD_BASE(191, 191, 7, 0x00f0, 0x10, 5, 1),
105 	PIN_FIELD_BASE(192, 192, 7, 0x00f0, 0x10, 2, 1),
106 	PIN_FIELD_BASE(193, 193, 7, 0x00f0, 0x10, 4, 1),
107 	PIN_FIELD_BASE(194, 194, 7, 0x00f0, 0x10, 6, 1),
108 	PIN_FIELD_BASE(195, 195, 7, 0x00f0, 0x10, 12, 1),
109 	PINS_FIELD_BASE(196, 199, 7, 0x00f0, 0x10, 0, 1),
110 	PIN_FIELD_BASE(200, 200, 7, 0x00f0, 0x10, 11, 1),
111 	PIN_FIELD_BASE(201, 201, 7, 0x00f0, 0x10, 14, 1),
112 	PIN_FIELD_BASE(202, 202, 7, 0x00f0, 0x10, 10, 1),
113 	PIN_FIELD_BASE(203, 203, 7, 0x00f0, 0x10, 13, 1),
114 	PIN_FIELD_BASE(204, 205, 6, 0x00e0, 0x10, 7, 1),
115 	PIN_FIELD_BASE(206, 208, 7, 0x00f0, 0x10, 15, 1),
116 	PINS_FIELD_BASE(209, 211, 7, 0x00f0, 0x10, 7, 1),
117 	PIN_FIELD_BASE(212, 213, 7, 0x00f0, 0x10, 8, 1),
118 	PINS_FIELD_BASE(214, 219, 7, 0x00f0, 0x10, 0, 1),
119 };
120 
121 static const struct mtk_pin_field_calc mt6893_pin_ies_range[] = {
122 	PIN_FIELD_BASE(0, 9, 2, 0x0060, 0x10, 12, 1),
123 	PIN_FIELD_BASE(10, 15, 1, 0x0020, 0x10, 9, 1),
124 	PIN_FIELD_BASE(16, 17, 5, 0x0030, 0x10, 21, 1),
125 	PIN_FIELD_BASE(18, 25, 7, 0x0050, 0x10, 10, 1),
126 	PIN_FIELD_BASE(26, 30, 6, 0x0040, 0x10, 10, 1),
127 	PIN_FIELD_BASE(31, 31, 6, 0x0040, 0x10, 6, 1),
128 	PIN_FIELD_BASE(32, 32, 6, 0x0040, 0x10, 3, 1),
129 	PIN_FIELD_BASE(33, 33, 6, 0x0040, 0x10, 5, 1),
130 	PIN_FIELD_BASE(34, 34, 6, 0x0040, 0x10, 2, 1),
131 	PIN_FIELD_BASE(35, 35, 6, 0x0040, 0x10, 4, 1),
132 	PIN_FIELD_BASE(36, 39, 6, 0x0040, 0x10, 23, 1),
133 	PIN_FIELD_BASE(40, 41, 6, 0x0040, 0x10, 0, 1),
134 	PIN_FIELD_BASE(42, 42, 6, 0x0040, 0x10, 9, 1),
135 	PIN_FIELD_BASE(43, 44, 6, 0x0040, 0x10, 7, 1),
136 	PIN_FIELD_BASE(45, 45, 6, 0x0040, 0x10, 20, 1),
137 	PIN_FIELD_BASE(46, 46, 6, 0x0040, 0x10, 22, 1),
138 	PIN_FIELD_BASE(47, 47, 6, 0x0040, 0x10, 21, 1),
139 	PIN_FIELD_BASE(48, 49, 6, 0x0040, 0x10, 18, 1),
140 	PIN_FIELD_BASE(50, 50, 6, 0x0040, 0x10, 17, 1),
141 	PIN_FIELD_BASE(51, 52, 3, 0x0020, 0x10, 16, 1),
142 	PIN_FIELD_BASE(53, 53, 3, 0x0020, 0x10, 21, 1),
143 	PIN_FIELD_BASE(54, 54, 3, 0x0020, 0x10, 18, 1),
144 	PIN_FIELD_BASE(55, 55, 3, 0x0020, 0x10, 20, 1),
145 	PIN_FIELD_BASE(56, 56, 3, 0x0020, 0x10, 19, 1),
146 	PIN_FIELD_BASE(57, 60, 3, 0x0020, 0x10, 12, 1),
147 	PIN_FIELD_BASE(61, 61, 3, 0x0020, 0x10, 11, 1),
148 	PIN_FIELD_BASE(62, 62, 4, 0x0010, 0x10, 11, 1),
149 	PIN_FIELD_BASE(63, 64, 3, 0x0020, 0x10, 0, 1),
150 	PIN_FIELD_BASE(65, 72, 3, 0x0020, 0x10, 3, 1),
151 	PIN_FIELD_BASE(73, 73, 3, 0x0020, 0x10, 2, 1),
152 	PIN_FIELD_BASE(74, 84, 4, 0x0010, 0x10, 0, 1),
153 	PIN_FIELD_BASE(85, 86, 4, 0x0010, 0x10, 14, 1),
154 	PIN_FIELD_BASE(87, 88, 4, 0x0010, 0x10, 12, 1),
155 	PIN_FIELD_BASE(89, 90, 2, 0x0070, 0x10, 19, 1),
156 	PIN_FIELD_BASE(91, 91, 2, 0x0060, 0x10, 0, 1),
157 	PIN_FIELD_BASE(92, 92, 2, 0x0070, 0x10, 28, 1),
158 	PIN_FIELD_BASE(93, 93, 2, 0x0070, 0x10, 30, 1),
159 	PIN_FIELD_BASE(94, 94, 2, 0x0070, 0x10, 29, 1),
160 	PIN_FIELD_BASE(95, 95, 2, 0x0070, 0x10, 31, 1),
161 	PIN_FIELD_BASE(96, 96, 2, 0x0070, 0x10, 26, 1),
162 	PIN_FIELD_BASE(97, 97, 2, 0x0070, 0x10, 21, 1),
163 	PIN_FIELD_BASE(98, 98, 2, 0x0070, 0x10, 27, 1),
164 	PIN_FIELD_BASE(99, 102, 2, 0x0070, 0x10, 22, 1),
165 	PIN_FIELD_BASE(103, 103, 2, 0x0070, 0x10, 17, 1),
166 	PIN_FIELD_BASE(104, 104, 2, 0x0070, 0x10, 16, 1),
167 	PIN_FIELD_BASE(105, 105, 2, 0x0070, 0x10, 18, 1),
168 	PIN_FIELD_BASE(106, 106, 2, 0x0070, 0x10, 15, 1),
169 	PIN_FIELD_BASE(107, 108, 2, 0x0060, 0x10, 10, 1),
170 	PIN_FIELD_BASE(109, 109, 2, 0x0060, 0x10, 25, 1),
171 	PIN_FIELD_BASE(110, 110, 2, 0x0060, 0x10, 22, 1),
172 	PIN_FIELD_BASE(111, 111, 2, 0x0060, 0x10, 24, 1),
173 	PIN_FIELD_BASE(112, 112, 2, 0x0060, 0x10, 26, 1),
174 	PIN_FIELD_BASE(113, 113, 2, 0x0060, 0x10, 23, 1),
175 	PIN_FIELD_BASE(114, 114, 2, 0x0070, 0x10, 7, 1),
176 	PIN_FIELD_BASE(115, 115, 2, 0x0070, 0x10, 6, 1),
177 	PIN_FIELD_BASE(116, 116, 2, 0x0070, 0x10, 8, 1),
178 	PIN_FIELD_BASE(117, 117, 2, 0x0070, 0x10, 5, 1),
179 	PIN_FIELD_BASE(118, 118, 2, 0x0060, 0x10, 31, 1),
180 	PIN_FIELD_BASE(119, 119, 2, 0x0070, 0x10, 9, 1),
181 	PIN_FIELD_BASE(120, 120, 2, 0x0070, 0x10, 4, 1),
182 	PIN_FIELD_BASE(121, 121, 2, 0x0070, 0x10, 14, 1),
183 	PIN_FIELD_BASE(122, 122, 2, 0x0070, 0x10, 3, 1),
184 	PIN_FIELD_BASE(123, 123, 2, 0x0070, 0x10, 13, 1),
185 	PIN_FIELD_BASE(124, 124, 2, 0x0070, 0x10, 2, 1),
186 	PIN_FIELD_BASE(125, 125, 2, 0x0070, 0x10, 12, 1),
187 	PIN_FIELD_BASE(126, 129, 2, 0x0060, 0x10, 27, 1),
188 	PIN_FIELD_BASE(130, 132, 2, 0x0060, 0x10, 7, 1),
189 	PIN_FIELD_BASE(133, 135, 2, 0x0060, 0x10, 4, 1),
190 	PIN_FIELD_BASE(136, 138, 2, 0x0060, 0x10, 1, 1),
191 	PIN_FIELD_BASE(139, 139, 2, 0x0070, 0x10, 1, 1),
192 	PIN_FIELD_BASE(140, 140, 2, 0x0070, 0x10, 11, 1),
193 	PIN_FIELD_BASE(141, 141, 2, 0x0070, 0x10, 0, 1),
194 	PIN_FIELD_BASE(142, 142, 2, 0x0070, 0x10, 10, 1),
195 	PIN_FIELD_BASE(143, 145, 1, 0x0020, 0x10, 6, 1),
196 	PIN_FIELD_BASE(146, 148, 1, 0x0020, 0x10, 3, 1),
197 	PIN_FIELD_BASE(149, 151, 1, 0x0020, 0x10, 0, 1),
198 	PIN_FIELD_BASE(152, 152, 5, 0x0030, 0x10, 26, 1),
199 	PIN_FIELD_BASE(153, 153, 5, 0x0030, 0x10, 25, 1),
200 	PIN_FIELD_BASE(154, 155, 5, 0x0030, 0x10, 23, 1),
201 	PIN_FIELD_BASE(156, 158, 5, 0x0030, 0x10, 29, 1),
202 	PIN_FIELD_BASE(159, 159, 5, 0x0040, 0x10, 0, 1),
203 	PIN_FIELD_BASE(160, 161, 5, 0x0030, 0x10, 27, 1),
204 	PIN_FIELD_BASE(162, 171, 5, 0x0030, 0x10, 0, 1),
205 	PIN_FIELD_BASE(172, 173, 5, 0x0030, 0x10, 13, 1),
206 	PIN_FIELD_BASE(174, 174, 5, 0x0030, 0x10, 12, 1),
207 	PIN_FIELD_BASE(175, 175, 5, 0x0030, 0x10, 15, 1),
208 	PIN_FIELD_BASE(176, 177, 5, 0x0030, 0x10, 10, 1),
209 	PIN_FIELD_BASE(178, 182, 5, 0x0030, 0x10, 16, 1),
210 	PIN_FIELD_BASE(183, 184, 7, 0x0050, 0x10, 19, 1),
211 	PIN_FIELD_BASE(185, 185, 7, 0x0050, 0x10, 22, 1),
212 	PIN_FIELD_BASE(186, 186, 7, 0x0050, 0x10, 24, 1),
213 	PIN_FIELD_BASE(187, 187, 7, 0x0050, 0x10, 26, 1),
214 	PIN_FIELD_BASE(188, 188, 7, 0x0050, 0x10, 21, 1),
215 	PIN_FIELD_BASE(189, 189, 7, 0x0050, 0x10, 25, 1),
216 	PIN_FIELD_BASE(190, 191, 7, 0x0050, 0x10, 27, 1),
217 	PIN_FIELD_BASE(192, 192, 7, 0x0050, 0x10, 18, 1),
218 	PIN_FIELD_BASE(193, 193, 7, 0x0050, 0x10, 23, 1),
219 	PIN_FIELD_BASE(194, 194, 7, 0x0050, 0x10, 29, 1),
220 	PIN_FIELD_BASE(195, 195, 7, 0x0060, 0x10, 5, 1),
221 	PIN_FIELD_BASE(196, 196, 7, 0x0050, 0x10, 6, 1),
222 	PIN_FIELD_BASE(197, 197, 7, 0x0050, 0x10, 8, 1),
223 	PIN_FIELD_BASE(198, 198, 7, 0x0050, 0x10, 7, 1),
224 	PIN_FIELD_BASE(199, 199, 7, 0x0050, 0x10, 3, 1),
225 	PIN_FIELD_BASE(200, 200, 7, 0x0060, 0x10, 4, 1),
226 	PIN_FIELD_BASE(201, 201, 7, 0x0060, 0x10, 7, 1),
227 	PIN_FIELD_BASE(202, 202, 7, 0x0060, 0x10, 3, 1),
228 	PIN_FIELD_BASE(203, 203, 7, 0x0060, 0x10, 6, 1),
229 	PIN_FIELD_BASE(204, 205, 6, 0x0040, 0x10, 15, 1),
230 	PIN_FIELD_BASE(206, 208, 7, 0x0060, 0x10, 8, 1),
231 	PIN_FIELD_BASE(209, 209, 7, 0x0060, 0x10, 0, 1),
232 	PIN_FIELD_BASE(210, 210, 7, 0x0050, 0x10, 31, 1),
233 	PIN_FIELD_BASE(211, 211, 7, 0x0060, 0x10, 1, 1),
234 	PIN_FIELD_BASE(212, 212, 7, 0x0050, 0x10, 30, 1),
235 	PIN_FIELD_BASE(213, 213, 7, 0x0060, 0x10, 2, 1),
236 	PIN_FIELD_BASE(214, 214, 7, 0x0050, 0x10, 0, 1),
237 	PIN_FIELD_BASE(215, 215, 7, 0x0050, 0x10, 9, 1),
238 	PIN_FIELD_BASE(216, 217, 7, 0x0050, 0x10, 4, 1),
239 	PIN_FIELD_BASE(218, 219, 7, 0x0050, 0x10, 1, 1),
240 };
241 
242 static const struct mtk_pin_field_calc mt6893_pin_pu_range[] = {
243 	PIN_FIELD_BASE(0, 9, 2, 0x00a0, 0x10, 12, 1),
244 	PIN_FIELD_BASE(16, 17, 5, 0x0070, 0x10, 21, 1),
245 	PIN_FIELD_BASE(18, 25, 7, 0x0090, 0x10, 10, 1),
246 	PIN_FIELD_BASE(26, 30, 6, 0x0080, 0x10, 10, 1),
247 	PIN_FIELD_BASE(31, 31, 6, 0x0080, 0x10, 6, 1),
248 	PIN_FIELD_BASE(32, 32, 6, 0x0080, 0x10, 3, 1),
249 	PIN_FIELD_BASE(33, 33, 6, 0x0080, 0x10, 5, 1),
250 	PIN_FIELD_BASE(34, 34, 6, 0x0080, 0x10, 2, 1),
251 	PIN_FIELD_BASE(35, 35, 6, 0x0080, 0x10, 4, 1),
252 	PIN_FIELD_BASE(36, 39, 6, 0x0080, 0x10, 17, 1),
253 	PIN_FIELD_BASE(40, 41, 6, 0x0080, 0x10, 0, 1),
254 	PIN_FIELD_BASE(42, 42, 6, 0x0080, 0x10, 9, 1),
255 	PIN_FIELD_BASE(43, 44, 6, 0x0080, 0x10, 7, 1),
256 	PIN_FIELD_BASE(57, 60, 3, 0x0050, 0x10, 12, 1),
257 	PIN_FIELD_BASE(61, 61, 3, 0x0050, 0x10, 11, 1),
258 	PIN_FIELD_BASE(62, 62, 4, 0x0030, 0x10, 11, 1),
259 	PIN_FIELD_BASE(63, 64, 3, 0x0050, 0x10, 0, 1),
260 	PIN_FIELD_BASE(65, 72, 3, 0x0050, 0x10, 3, 1),
261 	PIN_FIELD_BASE(73, 73, 3, 0x0050, 0x10, 2, 1),
262 	PIN_FIELD_BASE(74, 84, 4, 0x0030, 0x10, 0, 1),
263 	PIN_FIELD_BASE(85, 86, 4, 0x0030, 0x10, 14, 1),
264 	PIN_FIELD_BASE(87, 88, 4, 0x0030, 0x10, 12, 1),
265 	PIN_FIELD_BASE(89, 90, 2, 0x00b0, 0x10, 19, 1),
266 	PIN_FIELD_BASE(91, 91, 2, 0x00a0, 0x10, 0, 1),
267 	PIN_FIELD_BASE(92, 92, 2, 0x00b0, 0x10, 28, 1),
268 	PIN_FIELD_BASE(93, 93, 2, 0x00b0, 0x10, 30, 1),
269 	PIN_FIELD_BASE(94, 94, 2, 0x00b0, 0x10, 29, 1),
270 	PIN_FIELD_BASE(95, 95, 2, 0x00b0, 0x10, 31, 1),
271 	PIN_FIELD_BASE(96, 96, 2, 0x00b0, 0x10, 26, 1),
272 	PIN_FIELD_BASE(97, 97, 2, 0x00b0, 0x10, 21, 1),
273 	PIN_FIELD_BASE(98, 98, 2, 0x00b0, 0x10, 27, 1),
274 	PIN_FIELD_BASE(99, 102, 2, 0x00b0, 0x10, 22, 1),
275 	PIN_FIELD_BASE(103, 103, 2, 0x00b0, 0x10, 17, 1),
276 	PIN_FIELD_BASE(104, 104, 2, 0x00b0, 0x10, 16, 1),
277 	PIN_FIELD_BASE(105, 105, 2, 0x00b0, 0x10, 18, 1),
278 	PIN_FIELD_BASE(106, 106, 2, 0x00b0, 0x10, 15, 1),
279 	PIN_FIELD_BASE(107, 108, 2, 0x00a0, 0x10, 10, 1),
280 	PIN_FIELD_BASE(109, 109, 2, 0x00a0, 0x10, 25, 1),
281 	PIN_FIELD_BASE(110, 110, 2, 0x00a0, 0x10, 22, 1),
282 	PIN_FIELD_BASE(111, 111, 2, 0x00a0, 0x10, 24, 1),
283 	PIN_FIELD_BASE(112, 112, 2, 0x00a0, 0x10, 26, 1),
284 	PIN_FIELD_BASE(113, 113, 2, 0x00a0, 0x10, 23, 1),
285 	PIN_FIELD_BASE(114, 114, 2, 0x00b0, 0x10, 7, 1),
286 	PIN_FIELD_BASE(115, 115, 2, 0x00b0, 0x10, 6, 1),
287 	PIN_FIELD_BASE(116, 116, 2, 0x00b0, 0x10, 8, 1),
288 	PIN_FIELD_BASE(117, 117, 2, 0x00b0, 0x10, 5, 1),
289 	PIN_FIELD_BASE(118, 118, 2, 0x00a0, 0x10, 31, 1),
290 	PIN_FIELD_BASE(119, 119, 2, 0x00b0, 0x10, 9, 1),
291 	PIN_FIELD_BASE(120, 120, 2, 0x00b0, 0x10, 4, 1),
292 	PIN_FIELD_BASE(121, 121, 2, 0x00b0, 0x10, 14, 1),
293 	PIN_FIELD_BASE(122, 122, 2, 0x00b0, 0x10, 3, 1),
294 	PIN_FIELD_BASE(123, 123, 2, 0x00b0, 0x10, 13, 1),
295 	PIN_FIELD_BASE(124, 124, 2, 0x00b0, 0x10, 2, 1),
296 	PIN_FIELD_BASE(125, 125, 2, 0x00b0, 0x10, 12, 1),
297 	PIN_FIELD_BASE(126, 129, 2, 0x00a0, 0x10, 27, 1),
298 	PIN_FIELD_BASE(130, 132, 2, 0x00a0, 0x10, 7, 1),
299 	PIN_FIELD_BASE(133, 135, 2, 0x00a0, 0x10, 4, 1),
300 	PIN_FIELD_BASE(136, 138, 2, 0x00a0, 0x10, 1, 1),
301 	PIN_FIELD_BASE(139, 139, 2, 0x00b0, 0x10, 1, 1),
302 	PIN_FIELD_BASE(140, 140, 2, 0x00b0, 0x10, 11, 1),
303 	PIN_FIELD_BASE(141, 141, 2, 0x00b0, 0x10, 0, 1),
304 	PIN_FIELD_BASE(142, 142, 2, 0x00b0, 0x10, 10, 1),
305 	PIN_FIELD_BASE(143, 145, 1, 0x0050, 0x10, 6, 1),
306 	PIN_FIELD_BASE(146, 148, 1, 0x0050, 0x10, 3, 1),
307 	PIN_FIELD_BASE(149, 151, 1, 0x0050, 0x10, 0, 1),
308 	PIN_FIELD_BASE(156, 159, 5, 0x0070, 0x10, 25, 1),
309 	PIN_FIELD_BASE(160, 161, 5, 0x0070, 0x10, 23, 1),
310 	PIN_FIELD_BASE(162, 171, 5, 0x0070, 0x10, 0, 1),
311 	PIN_FIELD_BASE(172, 173, 5, 0x0070, 0x10, 13, 1),
312 	PIN_FIELD_BASE(174, 174, 5, 0x0070, 0x10, 12, 1),
313 	PIN_FIELD_BASE(175, 175, 5, 0x0070, 0x10, 15, 1),
314 	PIN_FIELD_BASE(176, 177, 5, 0x0070, 0x10, 10, 1),
315 	PIN_FIELD_BASE(178, 182, 5, 0x0070, 0x10, 16, 1),
316 	PIN_FIELD_BASE(195, 195, 7, 0x0090, 0x10, 25, 1),
317 	PIN_FIELD_BASE(196, 196, 7, 0x0090, 0x10, 6, 1),
318 	PIN_FIELD_BASE(197, 197, 7, 0x0090, 0x10, 8, 1),
319 	PIN_FIELD_BASE(198, 198, 7, 0x0090, 0x10, 7, 1),
320 	PIN_FIELD_BASE(199, 199, 7, 0x0090, 0x10, 3, 1),
321 	PIN_FIELD_BASE(200, 200, 7, 0x0090, 0x10, 24, 1),
322 	PIN_FIELD_BASE(201, 201, 7, 0x0090, 0x10, 27, 1),
323 	PIN_FIELD_BASE(202, 202, 7, 0x0090, 0x10, 23, 1),
324 	PIN_FIELD_BASE(203, 203, 7, 0x0090, 0x10, 26, 1),
325 	PIN_FIELD_BASE(204, 205, 6, 0x0080, 0x10, 15, 1),
326 	PIN_FIELD_BASE(206, 208, 7, 0x0090, 0x10, 28, 1),
327 	PIN_FIELD_BASE(209, 209, 7, 0x0090, 0x10, 20, 1),
328 	PIN_FIELD_BASE(210, 210, 7, 0x0090, 0x10, 19, 1),
329 	PIN_FIELD_BASE(211, 211, 7, 0x0090, 0x10, 21, 1),
330 	PIN_FIELD_BASE(212, 212, 7, 0x0090, 0x10, 18, 1),
331 	PIN_FIELD_BASE(213, 213, 7, 0x0090, 0x10, 22, 1),
332 	PIN_FIELD_BASE(214, 214, 7, 0x0090, 0x10, 0, 1),
333 	PIN_FIELD_BASE(215, 215, 7, 0x0090, 0x10, 9, 1),
334 	PIN_FIELD_BASE(216, 217, 7, 0x0090, 0x10, 4, 1),
335 	PIN_FIELD_BASE(218, 219, 7, 0x0090, 0x10, 1, 1),
336 };
337 
338 static const struct mtk_pin_field_calc mt6893_pin_pd_range[] = {
339 	PIN_FIELD_BASE(0, 9, 2, 0x0080, 0x10, 12, 1),
340 	PIN_FIELD_BASE(16, 17, 5, 0x0050, 0x10, 21, 1),
341 	PIN_FIELD_BASE(18, 25, 7, 0x0070, 0x10, 10, 1),
342 	PIN_FIELD_BASE(26, 30, 6, 0x0060, 0x10, 10, 1),
343 	PIN_FIELD_BASE(31, 31, 6, 0x0060, 0x10, 6, 1),
344 	PIN_FIELD_BASE(32, 32, 6, 0x0060, 0x10, 3, 1),
345 	PIN_FIELD_BASE(33, 33, 6, 0x0060, 0x10, 5, 1),
346 	PIN_FIELD_BASE(34, 34, 6, 0x0060, 0x10, 2, 1),
347 	PIN_FIELD_BASE(35, 35, 6, 0x0060, 0x10, 4, 1),
348 	PIN_FIELD_BASE(36, 39, 6, 0x0060, 0x10, 17, 1),
349 	PIN_FIELD_BASE(40, 41, 6, 0x0060, 0x10, 0, 1),
350 	PIN_FIELD_BASE(42, 42, 6, 0x0060, 0x10, 9, 1),
351 	PIN_FIELD_BASE(43, 44, 6, 0x0060, 0x10, 7, 1),
352 	PIN_FIELD_BASE(57, 60, 3, 0x0030, 0x10, 12, 1),
353 	PIN_FIELD_BASE(61, 61, 3, 0x0030, 0x10, 11, 1),
354 	PIN_FIELD_BASE(62, 62, 4, 0x0020, 0x10, 11, 1),
355 	PIN_FIELD_BASE(63, 64, 3, 0x0030, 0x10, 0, 1),
356 	PIN_FIELD_BASE(65, 72, 3, 0x0030, 0x10, 3, 1),
357 	PIN_FIELD_BASE(73, 73, 3, 0x0030, 0x10, 2, 1),
358 	PIN_FIELD_BASE(74, 84, 4, 0x0020, 0x10, 0, 1),
359 	PIN_FIELD_BASE(85, 86, 4, 0x0020, 0x10, 14, 1),
360 	PIN_FIELD_BASE(87, 88, 4, 0x0020, 0x10, 12, 1),
361 	PIN_FIELD_BASE(89, 90, 2, 0x0090, 0x10, 19, 1),
362 	PIN_FIELD_BASE(91, 91, 2, 0x0080, 0x10, 0, 1),
363 	PIN_FIELD_BASE(92, 92, 2, 0x0090, 0x10, 28, 1),
364 	PIN_FIELD_BASE(93, 93, 2, 0x0090, 0x10, 30, 1),
365 	PIN_FIELD_BASE(94, 94, 2, 0x0090, 0x10, 29, 1),
366 	PIN_FIELD_BASE(95, 95, 2, 0x0090, 0x10, 31, 1),
367 	PIN_FIELD_BASE(96, 96, 2, 0x0090, 0x10, 26, 1),
368 	PIN_FIELD_BASE(97, 97, 2, 0x0090, 0x10, 21, 1),
369 	PIN_FIELD_BASE(98, 98, 2, 0x0090, 0x10, 27, 1),
370 	PIN_FIELD_BASE(99, 102, 2, 0x0090, 0x10, 22, 1),
371 	PIN_FIELD_BASE(103, 103, 2, 0x0090, 0x10, 17, 1),
372 	PIN_FIELD_BASE(104, 104, 2, 0x0090, 0x10, 16, 1),
373 	PIN_FIELD_BASE(105, 105, 2, 0x0090, 0x10, 18, 1),
374 	PIN_FIELD_BASE(106, 106, 2, 0x0090, 0x10, 15, 1),
375 	PIN_FIELD_BASE(107, 108, 2, 0x0080, 0x10, 10, 1),
376 	PIN_FIELD_BASE(109, 109, 2, 0x0080, 0x10, 25, 1),
377 	PIN_FIELD_BASE(110, 110, 2, 0x0080, 0x10, 22, 1),
378 	PIN_FIELD_BASE(111, 111, 2, 0x0080, 0x10, 24, 1),
379 	PIN_FIELD_BASE(112, 112, 2, 0x0080, 0x10, 26, 1),
380 	PIN_FIELD_BASE(113, 113, 2, 0x0080, 0x10, 23, 1),
381 	PIN_FIELD_BASE(114, 114, 2, 0x0090, 0x10, 7, 1),
382 	PIN_FIELD_BASE(115, 115, 2, 0x0090, 0x10, 6, 1),
383 	PIN_FIELD_BASE(116, 116, 2, 0x0090, 0x10, 8, 1),
384 	PIN_FIELD_BASE(117, 117, 2, 0x0090, 0x10, 5, 1),
385 	PIN_FIELD_BASE(118, 118, 2, 0x0080, 0x10, 31, 1),
386 	PIN_FIELD_BASE(119, 119, 2, 0x0090, 0x10, 9, 1),
387 	PIN_FIELD_BASE(120, 120, 2, 0x0090, 0x10, 4, 1),
388 	PIN_FIELD_BASE(121, 121, 2, 0x0090, 0x10, 14, 1),
389 	PIN_FIELD_BASE(122, 122, 2, 0x0090, 0x10, 3, 1),
390 	PIN_FIELD_BASE(123, 123, 2, 0x0090, 0x10, 13, 1),
391 	PIN_FIELD_BASE(124, 124, 2, 0x0090, 0x10, 2, 1),
392 	PIN_FIELD_BASE(125, 125, 2, 0x0090, 0x10, 12, 1),
393 	PIN_FIELD_BASE(126, 129, 2, 0x0080, 0x10, 27, 1),
394 	PIN_FIELD_BASE(130, 132, 2, 0x0080, 0x10, 7, 1),
395 	PIN_FIELD_BASE(133, 135, 2, 0x0080, 0x10, 4, 1),
396 	PIN_FIELD_BASE(136, 138, 2, 0x0080, 0x10, 1, 1),
397 	PIN_FIELD_BASE(139, 139, 2, 0x0090, 0x10, 1, 1),
398 	PIN_FIELD_BASE(140, 140, 2, 0x0090, 0x10, 11, 1),
399 	PIN_FIELD_BASE(141, 141, 2, 0x0090, 0x10, 0, 1),
400 	PIN_FIELD_BASE(142, 142, 2, 0x0090, 0x10, 10, 1),
401 	PIN_FIELD_BASE(143, 145, 1, 0x0030, 0x10, 6, 1),
402 	PIN_FIELD_BASE(146, 148, 1, 0x0030, 0x10, 3, 1),
403 	PIN_FIELD_BASE(149, 151, 1, 0x0030, 0x10, 0, 1),
404 	PIN_FIELD_BASE(156, 159, 5, 0x0050, 0x10, 25, 1),
405 	PIN_FIELD_BASE(160, 161, 5, 0x0050, 0x10, 23, 1),
406 	PIN_FIELD_BASE(162, 171, 5, 0x0050, 0x10, 0, 1),
407 	PIN_FIELD_BASE(172, 173, 5, 0x0050, 0x10, 13, 1),
408 	PIN_FIELD_BASE(174, 174, 5, 0x0050, 0x10, 12, 1),
409 	PIN_FIELD_BASE(175, 175, 5, 0x0050, 0x10, 15, 1),
410 	PIN_FIELD_BASE(176, 177, 5, 0x0050, 0x10, 10, 1),
411 	PIN_FIELD_BASE(178, 182, 5, 0x0050, 0x10, 16, 1),
412 	PIN_FIELD_BASE(195, 195, 7, 0x0070, 0x10, 25, 1),
413 	PIN_FIELD_BASE(196, 196, 7, 0x0070, 0x10, 6, 1),
414 	PIN_FIELD_BASE(197, 197, 7, 0x0070, 0x10, 8, 1),
415 	PIN_FIELD_BASE(198, 198, 7, 0x0070, 0x10, 7, 1),
416 	PIN_FIELD_BASE(199, 199, 7, 0x0070, 0x10, 3, 1),
417 	PIN_FIELD_BASE(200, 200, 7, 0x0070, 0x10, 24, 1),
418 	PIN_FIELD_BASE(201, 201, 7, 0x0070, 0x10, 27, 1),
419 	PIN_FIELD_BASE(202, 202, 7, 0x0070, 0x10, 23, 1),
420 	PIN_FIELD_BASE(203, 203, 7, 0x0070, 0x10, 26, 1),
421 	PIN_FIELD_BASE(204, 205, 6, 0x0060, 0x10, 15, 1),
422 	PIN_FIELD_BASE(206, 208, 7, 0x0070, 0x10, 28, 1),
423 	PIN_FIELD_BASE(209, 209, 7, 0x0070, 0x10, 20, 1),
424 	PIN_FIELD_BASE(210, 210, 7, 0x0070, 0x10, 19, 1),
425 	PIN_FIELD_BASE(211, 211, 7, 0x0070, 0x10, 21, 1),
426 	PIN_FIELD_BASE(212, 212, 7, 0x0070, 0x10, 18, 1),
427 	PIN_FIELD_BASE(213, 213, 7, 0x0070, 0x10, 22, 1),
428 	PIN_FIELD_BASE(214, 214, 7, 0x0070, 0x10, 0, 1),
429 	PIN_FIELD_BASE(215, 215, 7, 0x0070, 0x10, 9, 1),
430 	PIN_FIELD_BASE(216, 217, 7, 0x0070, 0x10, 4, 1),
431 	PIN_FIELD_BASE(218, 219, 7, 0x0070, 0x10, 1, 1),
432 };
433 
434 static const struct mtk_pin_field_calc mt6893_pin_drv_range[] = {
435 	PINS_FIELD_BASE(0, 9, 2, 0x0000, 0x10, 21, 3),
436 	PINS_FIELD_BASE(10, 15, 1, 0x0000, 0x10, 12, 3),
437 	PIN_FIELD_BASE(16, 17, 5, 0x0000, 0x10, 18, 3),
438 	PINS_FIELD_BASE(18, 25, 7, 0x0000, 0x10, 3, 3),
439 	PINS_FIELD_BASE(26, 30, 6, 0x0000, 0x10, 15, 3),
440 	PINS_FIELD_BASE(31, 35, 6, 0x0000, 0x10, 6, 3),
441 	PIN_FIELD_BASE(36, 36, 6, 0x0010, 0x10, 7, 3),
442 	PINS_FIELD_BASE(37, 39, 6, 0x0010, 0x10, 4, 3),
443 	PIN_FIELD_BASE(40, 41, 6, 0x0000, 0x10, 0, 3),
444 	PIN_FIELD_BASE(42, 42, 6, 0x0000, 0x10, 12, 3),
445 	PINS_FIELD_BASE(43, 44, 6, 0x0000, 0x10, 9, 3),
446 	PIN_FIELD_BASE(45, 45, 6, 0x0000, 0x10, 30, 2),
447 	PIN_FIELD_BASE(46, 46, 6, 0x0010, 0x10, 2, 2),
448 	PIN_FIELD_BASE(47, 47, 6, 0x0010, 0x10, 0, 2),
449 	PIN_FIELD_BASE(48, 49, 6, 0x0000, 0x10, 26, 2),
450 	PIN_FIELD_BASE(50, 50, 6, 0x0000, 0x10, 24, 2),
451 	PIN_FIELD_BASE(51, 52, 3, 0x0000, 0x10, 18, 3),
452 	PINS_FIELD_BASE(53, 56, 3, 0x0000, 0x10, 24, 3),
453 	PIN_FIELD_BASE(57, 60, 3, 0x0000, 0x10, 6, 3),
454 	PIN_FIELD_BASE(61, 61, 3, 0x0000, 0x10, 3, 3),
455 	PIN_FIELD_BASE(62, 62, 4, 0x0000, 0x10, 3, 3),
456 	PINS_FIELD_BASE(63, 73, 3, 0x0000, 0x10, 0, 3),
457 	PINS_FIELD_BASE(74, 84, 4, 0x0000, 0x10, 0, 3),
458 	PIN_FIELD_BASE(85, 86, 4, 0x0000, 0x10, 12, 3),
459 	PIN_FIELD_BASE(87, 88, 4, 0x0000, 0x10, 6, 3),
460 	PIN_FIELD_BASE(89, 90, 2, 0x0020, 0x10, 15, 3),
461 	PIN_FIELD_BASE(91, 91, 2, 0x0000, 0x10, 0, 3),
462 	PINS_FIELD_BASE(92, 95, 2, 0x0030, 0x10, 3, 3),
463 	PIN_FIELD_BASE(96, 96, 2, 0x0020, 0x10, 27, 3),
464 	PIN_FIELD_BASE(97, 97, 2, 0x0020, 0x10, 21, 3),
465 	PIN_FIELD_BASE(98, 98, 2, 0x0030, 0x10, 0, 3),
466 	PINS_FIELD_BASE(99, 102, 2, 0x0020, 0x10, 24, 3),
467 	PINS_FIELD_BASE(103, 105, 2, 0x0020, 0x10, 9, 3),
468 	PIN_FIELD_BASE(106, 106, 2, 0x0020, 0x10, 12, 3),
469 	PIN_FIELD_BASE(107, 108, 2, 0x0000, 0x10, 15, 3),
470 	PINS_FIELD_BASE(109, 113, 2, 0x0000, 0x10, 24, 3),
471 	PINS_FIELD_BASE(114, 117, 2, 0x0010, 0x10, 18, 3),
472 	PIN_FIELD_BASE(118, 118, 2, 0x0010, 0x10, 0, 3),
473 	PIN_FIELD_BASE(119, 119, 2, 0x0010, 0x10, 21, 3),
474 	PIN_FIELD_BASE(120, 120, 2, 0x0010, 0x10, 15, 3),
475 	PIN_FIELD_BASE(121, 121, 2, 0x0020, 0x10, 6, 3),
476 	PIN_FIELD_BASE(122, 122, 2, 0x0010, 0x10, 12, 3),
477 	PIN_FIELD_BASE(123, 123, 2, 0x0020, 0x10, 3, 3),
478 	PIN_FIELD_BASE(124, 124, 2, 0x0010, 0x10, 9, 3),
479 	PIN_FIELD_BASE(125, 125, 2, 0x0020, 0x10, 0, 3),
480 	PINS_FIELD_BASE(126, 129, 2, 0x0000, 0x10, 27, 3),
481 	PINS_FIELD_BASE(130, 135, 2, 0x0000, 0x10, 12, 3),
482 	PIN_FIELD_BASE(136, 138, 2, 0x0000, 0x10, 3, 3),
483 	PIN_FIELD_BASE(139, 139, 2, 0x0010, 0x10, 6, 3),
484 	PIN_FIELD_BASE(140, 140, 2, 0x0010, 0x10, 27, 3),
485 	PIN_FIELD_BASE(141, 141, 2, 0x0010, 0x10, 3, 3),
486 	PIN_FIELD_BASE(142, 142, 2, 0x0010, 0x10, 24, 3),
487 	PINS_FIELD_BASE(143, 148, 1, 0x0000, 0x10, 9, 3),
488 	PIN_FIELD_BASE(149, 151, 1, 0x0000, 0x10, 0, 3),
489 	PINS_FIELD_BASE(152, 155, 5, 0x0000, 0x10, 24, 3),
490 	PIN_FIELD_BASE(156, 156, 5, 0x0010, 0x10, 6, 3),
491 	PINS_FIELD_BASE(157, 159, 5, 0x0010, 0x10, 3, 3),
492 	PIN_FIELD_BASE(160, 160, 5, 0x0000, 0x10, 27, 3),
493 	PIN_FIELD_BASE(161, 161, 5, 0x0010, 0x10, 0, 3),
494 	PINS_FIELD_BASE(162, 171, 5, 0x0000, 0x10, 0, 3),
495 	PIN_FIELD_BASE(172, 172, 5, 0x0000, 0x10, 15, 3),
496 	PIN_FIELD_BASE(173, 173, 5, 0x0000, 0x10, 3, 3),
497 	PIN_FIELD_BASE(174, 174, 5, 0x0000, 0x10, 12, 3),
498 	PIN_FIELD_BASE(175, 177, 5, 0x0000, 0x10, 3, 3),
499 	PINS_FIELD_BASE(178, 182, 5, 0x0000, 0x10, 3, 3),
500 	PIN_FIELD_BASE(183, 183, 7, 0x0000, 0x10, 9, 3),
501 	PINS_FIELD_BASE(184, 190, 7, 0x0000, 0x10, 12, 3),
502 	PIN_FIELD_BASE(191, 191, 7, 0x0000, 0x10, 15, 3),
503 	PIN_FIELD_BASE(192, 192, 7, 0x0000, 0x10, 6, 3),
504 	PIN_FIELD_BASE(193, 193, 7, 0x0000, 0x10, 12, 3),
505 	PIN_FIELD_BASE(194, 194, 7, 0x0000, 0x10, 18, 3),
506 	PIN_FIELD_BASE(195, 195, 7, 0x0010, 0x10, 3, 3),
507 	PINS_FIELD_BASE(196, 199, 7, 0x0000, 0x10, 0, 3),
508 	PIN_FIELD_BASE(200, 200, 7, 0x0010, 0x10, 0, 3),
509 	PIN_FIELD_BASE(201, 201, 7, 0x0010, 0x10, 9, 3),
510 	PIN_FIELD_BASE(202, 202, 7, 0x0000, 0x10, 27, 3),
511 	PIN_FIELD_BASE(203, 203, 7, 0x0010, 0x10, 6, 3),
512 	PIN_FIELD_BASE(204, 205, 6, 0x0000, 0x10, 18, 3),
513 	PIN_FIELD_BASE(206, 208, 7, 0x0010, 0x10, 12, 3),
514 	PINS_FIELD_BASE(209, 212, 7, 0x0000, 0x10, 21, 3),
515 	PIN_FIELD_BASE(213, 213, 7, 0x0000, 0x10, 24, 3),
516 	PINS_FIELD_BASE(214, 219, 7, 0x0000, 0x10, 0, 3),
517 };
518 
519 static const struct mtk_pin_field_calc mt6893_pin_pupd_range[] = {
520 	PIN_FIELD_BASE(10, 15, 1, 0x0040, 0x10, 0, 1),
521 	PIN_FIELD_BASE(45, 45, 6, 0x0070, 0x10, 3, 1),
522 	PIN_FIELD_BASE(46, 46, 6, 0x0070, 0x10, 5, 1),
523 	PIN_FIELD_BASE(47, 47, 6, 0x0070, 0x10, 4, 1),
524 	PIN_FIELD_BASE(48, 49, 6, 0x0070, 0x10, 1, 1),
525 	PIN_FIELD_BASE(50, 50, 6, 0x0070, 0x10, 0, 1),
526 	PIN_FIELD_BASE(51, 52, 3, 0x0040, 0x10, 0, 1),
527 	PIN_FIELD_BASE(53, 53, 3, 0x0040, 0x10, 5, 1),
528 	PIN_FIELD_BASE(54, 54, 3, 0x0040, 0x10, 2, 1),
529 	PIN_FIELD_BASE(55, 55, 3, 0x0040, 0x10, 4, 1),
530 	PIN_FIELD_BASE(56, 56, 3, 0x0040, 0x10, 3, 1),
531 	PIN_FIELD_BASE(152, 152, 5, 0x0060, 0x10, 3, 1),
532 	PIN_FIELD_BASE(153, 153, 5, 0x0060, 0x10, 2, 1),
533 	PIN_FIELD_BASE(154, 155, 5, 0x0060, 0x10, 0, 1),
534 	PIN_FIELD_BASE(183, 184, 7, 0x0080, 0x10, 1, 1),
535 	PIN_FIELD_BASE(185, 185, 7, 0x0080, 0x10, 4, 1),
536 	PIN_FIELD_BASE(186, 186, 7, 0x0080, 0x10, 6, 1),
537 	PIN_FIELD_BASE(187, 187, 7, 0x0080, 0x10, 8, 1),
538 	PIN_FIELD_BASE(188, 188, 7, 0x0080, 0x10, 3, 1),
539 	PIN_FIELD_BASE(189, 189, 7, 0x0080, 0x10, 7, 1),
540 	PIN_FIELD_BASE(190, 191, 7, 0x0080, 0x10, 9, 1),
541 	PIN_FIELD_BASE(192, 192, 7, 0x0080, 0x10, 0, 1),
542 	PIN_FIELD_BASE(193, 193, 7, 0x0080, 0x10, 5, 1),
543 	PIN_FIELD_BASE(194, 194, 7, 0x0080, 0x10, 11, 1),
544 };
545 
546 static const struct mtk_pin_field_calc mt6893_pin_r0_range[] = {
547 	PIN_FIELD_BASE(10, 15, 1, 0x0060, 0x10, 0, 1),
548 	PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 0, 1),
549 	PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 2, 1),
550 	PIN_FIELD_BASE(45, 45, 6, 0x0090, 0x10, 3, 1),
551 	PIN_FIELD_BASE(46, 46, 6, 0x0090, 0x10, 5, 1),
552 	PIN_FIELD_BASE(47, 47, 6, 0x0090, 0x10, 4, 1),
553 	PIN_FIELD_BASE(48, 49, 6, 0x0090, 0x10, 1, 1),
554 	PIN_FIELD_BASE(50, 50, 6, 0x0090, 0x10, 0, 1),
555 	PIN_FIELD_BASE(51, 52, 3, 0x0060, 0x10, 0, 1),
556 	PIN_FIELD_BASE(53, 53, 3, 0x0060, 0x10, 5, 1),
557 	PIN_FIELD_BASE(54, 54, 3, 0x0060, 0x10, 2, 1),
558 	PIN_FIELD_BASE(55, 55, 3, 0x0060, 0x10, 4, 1),
559 	PIN_FIELD_BASE(56, 56, 3, 0x0060, 0x10, 3, 1),
560 	PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 0, 1),
561 	PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 12, 1),
562 	PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 10, 1),
563 	PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 22, 1),
564 	PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 8, 1),
565 	PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 20, 1),
566 	PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 6, 1),
567 	PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 18, 1),
568 	PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 4, 1),
569 	PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 16, 1),
570 	PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 2, 1),
571 	PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 14, 1),
572 	PIN_FIELD_BASE(152, 152, 5, 0x0080, 0x10, 3, 1),
573 	PIN_FIELD_BASE(153, 153, 5, 0x0080, 0x10, 2, 1),
574 	PIN_FIELD_BASE(154, 155, 5, 0x0080, 0x10, 0, 1),
575 	PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 0, 1),
576 	PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 2, 1),
577 	PIN_FIELD_BASE(183, 184, 7, 0x00a0, 0x10, 1, 1),
578 	PIN_FIELD_BASE(185, 185, 7, 0x00a0, 0x10, 4, 1),
579 	PIN_FIELD_BASE(186, 186, 7, 0x00a0, 0x10, 6, 1),
580 	PIN_FIELD_BASE(187, 187, 7, 0x00a0, 0x10, 8, 1),
581 	PIN_FIELD_BASE(188, 188, 7, 0x00a0, 0x10, 3, 1),
582 	PIN_FIELD_BASE(189, 189, 7, 0x00a0, 0x10, 7, 1),
583 	PIN_FIELD_BASE(190, 191, 7, 0x00a0, 0x10, 9, 1),
584 	PIN_FIELD_BASE(192, 192, 7, 0x00a0, 0x10, 0, 1),
585 	PIN_FIELD_BASE(193, 193, 7, 0x00a0, 0x10, 5, 1),
586 	PIN_FIELD_BASE(194, 194, 7, 0x00a0, 0x10, 11, 1),
587 	PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 6, 1),
588 	PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 10, 1),
589 	PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 4, 1),
590 	PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 8, 1),
591 	PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 0, 1),
592 	PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 2, 1),
593 };
594 
595 static const struct mtk_pin_field_calc mt6893_pin_r1_range[] = {
596 	PIN_FIELD_BASE(10, 15, 1, 0x0070, 0x10, 0, 1),
597 	PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 1, 1),
598 	PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 3, 1),
599 	PIN_FIELD_BASE(45, 45, 6, 0x00a0, 0x10, 3, 1),
600 	PIN_FIELD_BASE(46, 46, 6, 0x00a0, 0x10, 5, 1),
601 	PIN_FIELD_BASE(47, 47, 6, 0x00a0, 0x10, 4, 1),
602 	PIN_FIELD_BASE(48, 49, 6, 0x00a0, 0x10, 1, 1),
603 	PIN_FIELD_BASE(50, 50, 6, 0x00a0, 0x10, 0, 1),
604 	PIN_FIELD_BASE(51, 52, 3, 0x0070, 0x10, 0, 1),
605 	PIN_FIELD_BASE(53, 53, 3, 0x0070, 0x10, 5, 1),
606 	PIN_FIELD_BASE(54, 54, 3, 0x0070, 0x10, 2, 1),
607 	PIN_FIELD_BASE(55, 55, 3, 0x0070, 0x10, 4, 1),
608 	PIN_FIELD_BASE(56, 56, 3, 0x0070, 0x10, 3, 1),
609 	PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 1, 1),
610 	PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 13, 1),
611 	PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 11, 1),
612 	PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 23, 1),
613 	PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 9, 1),
614 	PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 21, 1),
615 	PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 7, 1),
616 	PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 19, 1),
617 	PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 5, 1),
618 	PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 17, 1),
619 	PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 3, 1),
620 	PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 15, 1),
621 	PIN_FIELD_BASE(152, 152, 5, 0x0090, 0x10, 3, 1),
622 	PIN_FIELD_BASE(153, 153, 5, 0x0090, 0x10, 2, 1),
623 	PIN_FIELD_BASE(154, 155, 5, 0x0090, 0x10, 0, 1),
624 	PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 1, 1),
625 	PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 3, 1),
626 	PIN_FIELD_BASE(183, 184, 7, 0x00b0, 0x10, 1, 1),
627 	PIN_FIELD_BASE(185, 185, 7, 0x00b0, 0x10, 4, 1),
628 	PIN_FIELD_BASE(186, 186, 7, 0x00b0, 0x10, 6, 1),
629 	PIN_FIELD_BASE(187, 187, 7, 0x00b0, 0x10, 8, 1),
630 	PIN_FIELD_BASE(188, 188, 7, 0x00b0, 0x10, 3, 1),
631 	PIN_FIELD_BASE(189, 189, 7, 0x00b0, 0x10, 7, 1),
632 	PIN_FIELD_BASE(190, 191, 7, 0x00b0, 0x10, 9, 1),
633 	PIN_FIELD_BASE(192, 192, 7, 0x00b0, 0x10, 0, 1),
634 	PIN_FIELD_BASE(193, 193, 7, 0x00b0, 0x10, 5, 1),
635 	PIN_FIELD_BASE(194, 194, 7, 0x00b0, 0x10, 11, 1),
636 	PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 7, 1),
637 	PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 11, 1),
638 	PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 5, 1),
639 	PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 9, 1),
640 	PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 1, 1),
641 	PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 3, 1),
642 };
643 
644 static const struct mtk_pin_field_calc mt6893_pin_drv_adv_range[] = {
645 	PIN_FIELD_BASE(24, 24, 7, 0x0030, 0x10, 0, 3),
646 	PIN_FIELD_BASE(25, 25, 7, 0x0030, 0x10, 3, 3),
647 	PIN_FIELD_BASE(89, 89, 2, 0x0050, 0x10, 6, 5),
648 	PIN_FIELD_BASE(90, 90, 2, 0x0050, 0x10, 11, 5),
649 	PIN_FIELD_BASE(118, 118, 2, 0x0040, 0x10, 0, 3),
650 	PIN_FIELD_BASE(119, 119, 2, 0x0040, 0x10, 18, 3),
651 	PIN_FIELD_BASE(120, 120, 2, 0x0040, 0x10, 15, 3),
652 	PIN_FIELD_BASE(121, 121, 2, 0x0050, 0x10, 3, 3),
653 	PIN_FIELD_BASE(122, 122, 2, 0x0040, 0x10, 12, 3),
654 	PIN_FIELD_BASE(123, 123, 2, 0x0050, 0x10, 0, 3),
655 	PIN_FIELD_BASE(124, 124, 2, 0x0040, 0x10, 9, 3),
656 	PIN_FIELD_BASE(125, 125, 2, 0x0040, 0x10, 27, 3),
657 	PIN_FIELD_BASE(139, 139, 2, 0x0040, 0x10, 6, 3),
658 	PIN_FIELD_BASE(140, 140, 2, 0x0040, 0x10, 24, 3),
659 	PIN_FIELD_BASE(141, 141, 2, 0x0040, 0x10, 3, 3),
660 	PIN_FIELD_BASE(142, 142, 2, 0x0040, 0x10, 21, 3),
661 	PIN_FIELD_BASE(160, 160, 5, 0x0020, 0x10, 0, 3),
662 	PIN_FIELD_BASE(161, 161, 5, 0x0020, 0x10, 3, 3),
663 	PIN_FIELD_BASE(200, 200, 7, 0x0030, 0x10, 9, 3),
664 	PIN_FIELD_BASE(201, 201, 7, 0x0030, 0x10, 15, 3),
665 	PIN_FIELD_BASE(202, 202, 7, 0x0030, 0x10, 6, 3),
666 	PIN_FIELD_BASE(203, 203, 7, 0x0030, 0x10, 12, 3),
667 	PIN_FIELD_BASE(204, 204, 6, 0x0020, 0x10, 0, 3),
668 	PIN_FIELD_BASE(205, 205, 6, 0x0020, 0x10, 3, 3),
669 };
670 
671 static const struct mtk_pin_field_calc mt6893_pin_rsel_range[] = {
672 	PIN_FIELD_BASE(24, 24, 7, 0x00e0, 0x10, 0, 2),
673 	PIN_FIELD_BASE(25, 25, 7, 0x00e0, 0x10, 2, 2),
674 	PIN_FIELD_BASE(118, 118, 2, 0x00e0, 0x10, 0, 2),
675 	PIN_FIELD_BASE(119, 119, 2, 0x00e0, 0x10, 12, 2),
676 	PIN_FIELD_BASE(120, 120, 2, 0x00e0, 0x10, 10, 2),
677 	PIN_FIELD_BASE(121, 121, 2, 0x00e0, 0x10, 22, 2),
678 	PIN_FIELD_BASE(122, 122, 2, 0x00e0, 0x10, 8, 2),
679 	PIN_FIELD_BASE(123, 123, 2, 0x00e0, 0x10, 20, 2),
680 	PIN_FIELD_BASE(124, 124, 2, 0x00e0, 0x10, 6, 2),
681 	PIN_FIELD_BASE(125, 125, 2, 0x00e0, 0x10, 18, 2),
682 	PIN_FIELD_BASE(139, 139, 2, 0x00e0, 0x10, 4, 2),
683 	PIN_FIELD_BASE(140, 140, 2, 0x00e0, 0x10, 16, 2),
684 	PIN_FIELD_BASE(141, 141, 2, 0x00e0, 0x10, 2, 2),
685 	PIN_FIELD_BASE(142, 142, 2, 0x00e0, 0x10, 14, 2),
686 	PIN_FIELD_BASE(160, 160, 5, 0x00b0, 0x10, 0, 2),
687 	PIN_FIELD_BASE(161, 161, 5, 0x00b0, 0x10, 2, 2),
688 	PIN_FIELD_BASE(200, 200, 7, 0x00e0, 0x10, 6, 2),
689 	PIN_FIELD_BASE(201, 201, 7, 0x00e0, 0x10, 10, 2),
690 	PIN_FIELD_BASE(202, 202, 7, 0x00e0, 0x10, 4, 2),
691 	PIN_FIELD_BASE(203, 203, 7, 0x00e0, 0x10, 8, 2),
692 	PIN_FIELD_BASE(204, 204, 6, 0x00d0, 0x10, 0, 2),
693 	PIN_FIELD_BASE(205, 205, 6, 0x00d0, 0x10, 2, 2),
694 };
695 
696 static const unsigned int mt6893_pull_type[] = {
697 	MTK_PULL_PU_PD_TYPE, /* 0 */		MTK_PULL_PU_PD_TYPE, /* 1 */
698 	MTK_PULL_PU_PD_TYPE, /* 2 */		MTK_PULL_PU_PD_TYPE, /* 3 */
699 	MTK_PULL_PU_PD_TYPE, /* 4 */		MTK_PULL_PU_PD_TYPE, /* 5 */
700 	MTK_PULL_PU_PD_TYPE, /* 6 */		MTK_PULL_PU_PD_TYPE, /* 7 */
701 	MTK_PULL_PU_PD_TYPE, /* 8 */		MTK_PULL_PU_PD_TYPE, /* 9 */
702 	MTK_PULL_PUPD_R1R0_TYPE, /* 10 */	MTK_PULL_PUPD_R1R0_TYPE, /* 11 */
703 	MTK_PULL_PUPD_R1R0_TYPE, /* 12 */	MTK_PULL_PUPD_R1R0_TYPE, /* 13 */
704 	MTK_PULL_PUPD_R1R0_TYPE, /* 14 */	MTK_PULL_PUPD_R1R0_TYPE, /* 15 */
705 	MTK_PULL_PU_PD_TYPE, /* 16 */		MTK_PULL_PU_PD_TYPE, /* 17 */
706 	MTK_PULL_PU_PD_TYPE, /* 18 */		MTK_PULL_PU_PD_TYPE, /* 19 */
707 	MTK_PULL_PU_PD_TYPE, /* 20 */		MTK_PULL_PU_PD_TYPE, /* 21 */
708 	MTK_PULL_PU_PD_TYPE, /* 22 */		MTK_PULL_PU_PD_TYPE, /* 23 */
709 	MTK_PULL_PU_PD_RSEL_TYPE, /* 24 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 25 */
710 	MTK_PULL_PU_PD_TYPE, /* 26 */		MTK_PULL_PU_PD_TYPE, /* 27 */
711 	MTK_PULL_PU_PD_TYPE, /* 28 */		MTK_PULL_PU_PD_TYPE, /* 29 */
712 	MTK_PULL_PU_PD_TYPE, /* 30 */		MTK_PULL_PU_PD_TYPE, /* 31 */
713 	MTK_PULL_PU_PD_TYPE, /* 32 */		MTK_PULL_PU_PD_TYPE, /* 33 */
714 	MTK_PULL_PU_PD_TYPE, /* 34 */		MTK_PULL_PU_PD_TYPE, /* 35 */
715 	MTK_PULL_PU_PD_TYPE, /* 36 */		MTK_PULL_PU_PD_TYPE, /* 37 */
716 	MTK_PULL_PU_PD_TYPE, /* 38 */		MTK_PULL_PU_PD_TYPE, /* 39 */
717 	MTK_PULL_PU_PD_TYPE, /* 40 */		MTK_PULL_PU_PD_TYPE, /* 41 */
718 	MTK_PULL_PU_PD_TYPE, /* 42 */		MTK_PULL_PU_PD_TYPE, /* 43 */
719 	MTK_PULL_PU_PD_TYPE, /* 44 */		MTK_PULL_PUPD_R1R0_TYPE, /* 45 */
720 	MTK_PULL_PUPD_R1R0_TYPE, /* 46 */	MTK_PULL_PUPD_R1R0_TYPE, /* 47 */
721 	MTK_PULL_PUPD_R1R0_TYPE, /* 48 */	MTK_PULL_PUPD_R1R0_TYPE, /* 49 */
722 	MTK_PULL_PUPD_R1R0_TYPE, /* 50 */	MTK_PULL_PUPD_R1R0_TYPE, /* 51 */
723 	MTK_PULL_PUPD_R1R0_TYPE, /* 52 */	MTK_PULL_PUPD_R1R0_TYPE, /* 53 */
724 	MTK_PULL_PUPD_R1R0_TYPE, /* 54 */	MTK_PULL_PUPD_R1R0_TYPE, /* 55 */
725 	MTK_PULL_PUPD_R1R0_TYPE, /* 56 */	MTK_PULL_PU_PD_TYPE, /* 57 */
726 	MTK_PULL_PU_PD_TYPE, /* 58 */		MTK_PULL_PU_PD_TYPE, /* 59 */
727 	MTK_PULL_PU_PD_TYPE, /* 60 */		MTK_PULL_PU_PD_TYPE, /* 61 */
728 	MTK_PULL_PU_PD_TYPE, /* 62 */		MTK_PULL_PU_PD_TYPE, /* 63 */
729 	MTK_PULL_PU_PD_TYPE, /* 64 */		MTK_PULL_PU_PD_TYPE, /* 65 */
730 	MTK_PULL_PU_PD_TYPE, /* 66 */		MTK_PULL_PU_PD_TYPE, /* 67 */
731 	MTK_PULL_PU_PD_TYPE, /* 68 */		MTK_PULL_PU_PD_TYPE, /* 69 */
732 	MTK_PULL_PU_PD_TYPE, /* 70 */		MTK_PULL_PU_PD_TYPE, /* 71 */
733 	MTK_PULL_PU_PD_TYPE, /* 72 */		MTK_PULL_PU_PD_TYPE, /* 73 */
734 	MTK_PULL_PU_PD_TYPE, /* 74 */		MTK_PULL_PU_PD_TYPE, /* 75 */
735 	MTK_PULL_PU_PD_TYPE, /* 76 */		MTK_PULL_PU_PD_TYPE, /* 77 */
736 	MTK_PULL_PU_PD_TYPE, /* 78 */		MTK_PULL_PU_PD_TYPE, /* 79 */
737 	MTK_PULL_PU_PD_TYPE, /* 80 */		MTK_PULL_PU_PD_TYPE, /* 81 */
738 	MTK_PULL_PU_PD_TYPE, /* 82 */		MTK_PULL_PU_PD_TYPE, /* 83 */
739 	MTK_PULL_PU_PD_TYPE, /* 84 */		MTK_PULL_PU_PD_TYPE, /* 85 */
740 	MTK_PULL_PU_PD_TYPE, /* 86 */		MTK_PULL_PU_PD_TYPE, /* 87 */
741 	MTK_PULL_PU_PD_TYPE, /* 88 */		MTK_PULL_PU_PD_TYPE, /* 89 */
742 	MTK_PULL_PU_PD_TYPE, /* 90 */		MTK_PULL_PU_PD_TYPE, /* 91 */
743 	MTK_PULL_PU_PD_TYPE, /* 92 */		MTK_PULL_PU_PD_TYPE, /* 93 */
744 	MTK_PULL_PU_PD_TYPE, /* 94 */		MTK_PULL_PU_PD_TYPE, /* 95 */
745 	MTK_PULL_PU_PD_TYPE, /* 96 */		MTK_PULL_PU_PD_TYPE, /* 97 */
746 	MTK_PULL_PU_PD_TYPE, /* 98 */		MTK_PULL_PU_PD_TYPE, /* 99 */
747 	MTK_PULL_PU_PD_TYPE, /* 100 */		MTK_PULL_PU_PD_TYPE, /* 101 */
748 	MTK_PULL_PU_PD_TYPE, /* 102 */		MTK_PULL_PU_PD_TYPE, /* 103 */
749 	MTK_PULL_PU_PD_TYPE, /* 104 */		MTK_PULL_PU_PD_TYPE, /* 105 */
750 	MTK_PULL_PU_PD_TYPE, /* 106 */		MTK_PULL_PU_PD_TYPE, /* 107 */
751 	MTK_PULL_PU_PD_TYPE, /* 108 */		MTK_PULL_PU_PD_TYPE, /* 109 */
752 	MTK_PULL_PU_PD_TYPE, /* 110 */		MTK_PULL_PU_PD_TYPE, /* 111 */
753 	MTK_PULL_PU_PD_TYPE, /* 112 */		MTK_PULL_PU_PD_TYPE, /* 113 */
754 	MTK_PULL_PU_PD_TYPE, /* 114 */		MTK_PULL_PU_PD_TYPE, /* 115 */
755 	MTK_PULL_PU_PD_TYPE, /* 116 */		MTK_PULL_PU_PD_TYPE, /* 117 */
756 	MTK_PULL_PU_PD_RSEL_TYPE, /* 118 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 119 */
757 	MTK_PULL_PU_PD_RSEL_TYPE, /* 120 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 121 */
758 	MTK_PULL_PU_PD_RSEL_TYPE, /* 122 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 123 */
759 	MTK_PULL_PU_PD_RSEL_TYPE, /* 124 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 125 */
760 	MTK_PULL_PU_PD_TYPE, /* 126 */		MTK_PULL_PU_PD_TYPE, /* 127 */
761 	MTK_PULL_PU_PD_TYPE, /* 128 */		MTK_PULL_PU_PD_TYPE, /* 129 */
762 	MTK_PULL_PU_PD_TYPE, /* 130 */		MTK_PULL_PU_PD_TYPE, /* 131 */
763 	MTK_PULL_PU_PD_TYPE, /* 132 */		MTK_PULL_PU_PD_TYPE, /* 133 */
764 	MTK_PULL_PU_PD_TYPE, /* 134 */		MTK_PULL_PU_PD_TYPE, /* 135 */
765 	MTK_PULL_PU_PD_TYPE, /* 136 */		MTK_PULL_PU_PD_TYPE, /* 137 */
766 	MTK_PULL_PU_PD_TYPE, /* 138 */		MTK_PULL_PU_PD_TYPE, /* 139 */
767 	MTK_PULL_PU_PD_RSEL_TYPE, /* 140 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 141 */
768 	MTK_PULL_PU_PD_RSEL_TYPE, /* 142 */	MTK_PULL_PU_PD_TYPE, /* 143 */
769 	MTK_PULL_PU_PD_TYPE, /* 144 */		MTK_PULL_PU_PD_TYPE, /* 145 */
770 	MTK_PULL_PU_PD_TYPE, /* 146 */		MTK_PULL_PU_PD_TYPE, /* 147 */
771 	MTK_PULL_PU_PD_TYPE, /* 148 */		MTK_PULL_PU_PD_TYPE, /* 149 */
772 	MTK_PULL_PU_PD_TYPE, /* 150 */		MTK_PULL_PU_PD_TYPE, /* 151 */
773 	MTK_PULL_PUPD_R1R0_TYPE, /* 152 */	MTK_PULL_PUPD_R1R0_TYPE, /* 153 */
774 	MTK_PULL_PUPD_R1R0_TYPE, /* 154 */	MTK_PULL_PUPD_R1R0_TYPE, /* 155 */
775 	MTK_PULL_PU_PD_TYPE, /* 156 */		MTK_PULL_PU_PD_TYPE, /* 157 */
776 	MTK_PULL_PU_PD_TYPE, /* 158 */		MTK_PULL_PU_PD_TYPE, /* 159 */
777 	MTK_PULL_PU_PD_RSEL_TYPE, /* 160 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 161 */
778 	MTK_PULL_PU_PD_TYPE, /* 162 */		MTK_PULL_PU_PD_TYPE, /* 163 */
779 	MTK_PULL_PU_PD_TYPE, /* 164 */		MTK_PULL_PU_PD_TYPE, /* 165 */
780 	MTK_PULL_PU_PD_TYPE, /* 166 */		MTK_PULL_PU_PD_TYPE, /* 167 */
781 	MTK_PULL_PU_PD_TYPE, /* 168 */		MTK_PULL_PU_PD_TYPE, /* 169 */
782 	MTK_PULL_PU_PD_TYPE, /* 170 */		MTK_PULL_PU_PD_TYPE, /* 171 */
783 	MTK_PULL_PU_PD_TYPE, /* 172 */		MTK_PULL_PU_PD_TYPE, /* 173 */
784 	MTK_PULL_PU_PD_TYPE, /* 174 */		MTK_PULL_PU_PD_TYPE, /* 175 */
785 	MTK_PULL_PU_PD_TYPE, /* 176 */		MTK_PULL_PU_PD_TYPE, /* 177 */
786 	MTK_PULL_PU_PD_TYPE, /* 178 */		MTK_PULL_PU_PD_TYPE, /* 179 */
787 	MTK_PULL_PU_PD_TYPE, /* 180 */		MTK_PULL_PU_PD_TYPE, /* 181 */
788 	MTK_PULL_PU_PD_TYPE, /* 182 */		MTK_PULL_PUPD_R1R0_TYPE, /* 183 */
789 	MTK_PULL_PUPD_R1R0_TYPE, /* 184 */	MTK_PULL_PUPD_R1R0_TYPE, /* 185 */
790 	MTK_PULL_PUPD_R1R0_TYPE, /* 186 */	MTK_PULL_PUPD_R1R0_TYPE, /* 187 */
791 	MTK_PULL_PUPD_R1R0_TYPE, /* 188 */	MTK_PULL_PUPD_R1R0_TYPE, /* 189 */
792 	MTK_PULL_PUPD_R1R0_TYPE, /* 190 */	MTK_PULL_PUPD_R1R0_TYPE, /* 191 */
793 	MTK_PULL_PUPD_R1R0_TYPE, /* 192 */	MTK_PULL_PUPD_R1R0_TYPE, /* 193 */
794 	MTK_PULL_PUPD_R1R0_TYPE, /* 194 */	MTK_PULL_PU_PD_TYPE, /* 195 */
795 	MTK_PULL_PU_PD_TYPE, /* 196 */		MTK_PULL_PU_PD_TYPE, /* 197 */
796 	MTK_PULL_PU_PD_TYPE, /* 198 */		MTK_PULL_PU_PD_TYPE, /* 199 */
797 	MTK_PULL_PU_PD_RSEL_TYPE, /* 200 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 201 */
798 	MTK_PULL_PU_PD_RSEL_TYPE, /* 202 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 203 */
799 	MTK_PULL_PU_PD_RSEL_TYPE, /* 204 */	MTK_PULL_PU_PD_RSEL_TYPE, /* 205 */
800 	MTK_PULL_PU_PD_TYPE, /* 206 */		MTK_PULL_PU_PD_TYPE, /* 207 */
801 	MTK_PULL_PU_PD_TYPE, /* 208 */		MTK_PULL_PU_PD_TYPE, /* 209 */
802 	MTK_PULL_PU_PD_TYPE, /* 210 */		MTK_PULL_PU_PD_TYPE, /* 211 */
803 	MTK_PULL_PU_PD_TYPE, /* 212 */		MTK_PULL_PU_PD_TYPE, /* 213 */
804 	MTK_PULL_PU_PD_TYPE, /* 214 */		MTK_PULL_PU_PD_TYPE, /* 215 */
805 	MTK_PULL_PU_PD_TYPE, /* 216 */		MTK_PULL_PU_PD_TYPE, /* 217 */
806 	MTK_PULL_PU_PD_TYPE, /* 218 */		MTK_PULL_PU_PD_TYPE, /* 219 */
807 };
808 
809 static const char * const mt6893_pinctrl_register_base_name[] = {
810 	"base", "rm", "bm", "bl", "br", "lm", "lb", "rt", "lt", "tl",
811 };
812 
813 static const struct mtk_pin_reg_calc mt6893_reg_cals[PINCTRL_PIN_REG_MAX] = {
814 	[PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6893_pin_mode_range),
815 	[PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6893_pin_dir_range),
816 	[PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6893_pin_di_range),
817 	[PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6893_pin_do_range),
818 	[PINCTRL_PIN_REG_SR] = MTK_RANGE(mt6893_pin_dir_range),
819 	[PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt6893_pin_smt_range),
820 	[PINCTRL_PIN_REG_IES] = MTK_RANGE(mt6893_pin_ies_range),
821 	[PINCTRL_PIN_REG_PU] = MTK_RANGE(mt6893_pin_pu_range),
822 	[PINCTRL_PIN_REG_PD] = MTK_RANGE(mt6893_pin_pd_range),
823 	[PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt6893_pin_drv_range),
824 	[PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt6893_pin_pupd_range),
825 	[PINCTRL_PIN_REG_R0] = MTK_RANGE(mt6893_pin_r0_range),
826 	[PINCTRL_PIN_REG_R1] = MTK_RANGE(mt6893_pin_r1_range),
827 	[PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt6893_pin_drv_adv_range),
828 	[PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt6893_pin_rsel_range),
829 };
830 
831 static const struct mtk_eint_hw mt6893_eint_hw = {
832 	.port_mask = 7,
833 	.ports     = 7,
834 	.ap_num    = 224,
835 	.db_cnt    = 32,
836 	.db_time   = debounce_time_mt6765,
837 };
838 
839 static const struct mtk_pin_soc mt6893_data = {
840 	.reg_cal = mt6893_reg_cals,
841 	.pins = mtk_pins_mt6893,
842 	.npins = ARRAY_SIZE(mtk_pins_mt6893),
843 	.ngrps = ARRAY_SIZE(mtk_pins_mt6893),
844 	.eint_hw = &mt6893_eint_hw,
845 	.nfuncs = 8,
846 	.gpio_m = 0,
847 	.base_names = mt6893_pinctrl_register_base_name,
848 	.nbase_names = ARRAY_SIZE(mt6893_pinctrl_register_base_name),
849 	.pull_type = mt6893_pull_type,
850 	.bias_set_combo = mtk_pinconf_bias_set_combo,
851 	.bias_get_combo = mtk_pinconf_bias_get_combo,
852 	.drive_set = mtk_pinconf_drive_set_rev1,
853 	.drive_get = mtk_pinconf_drive_get_rev1,
854 	.adv_drive_set = mtk_pinconf_adv_drive_set_raw,
855 	.adv_drive_get = mtk_pinconf_adv_drive_get_raw,
856 };
857 
858 static const struct of_device_id mt6893_pinctrl_of_match[] = {
859 	{ .compatible = "mediatek,mt6893-pinctrl", .data = &mt6893_data },
860 	{ /* sentinel */ }
861 };
862 
863 static struct platform_driver mt6893_pinctrl_driver = {
864 	.driver = {
865 		.name = "mt6893-pinctrl",
866 		.of_match_table = mt6893_pinctrl_of_match,
867 		.pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops)
868 	},
869 	.probe = mtk_paris_pinctrl_probe,
870 };
871 
mt6893_pinctrl_init(void)872 static int __init mt6893_pinctrl_init(void)
873 {
874 	return platform_driver_register(&mt6893_pinctrl_driver);
875 }
876 
877 arch_initcall(mt6893_pinctrl_init);
878 
879 MODULE_DESCRIPTION("MediaTek MT6893 Pinctrl Driver");
880