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