1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2018 MediaTek Inc.
4 *
5 * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
6 *
7 */
8
9#include "pinctrl-mtk-mt8183.h"
10#include "pinctrl-paris.h"
11
12/* MT8183 have multiple bases to program pin configuration listed as the below:
13 * iocfg[0]:0x10005000, iocfg[1]:0x11F20000, iocfg[2]:0x11E80000,
14 * iocfg[3]:0x11E70000, iocfg[4]:0x11E90000, iocfg[5]:0x11D30000,
15 * iocfg[6]:0x11D20000, iocfg[7]:0x11C50000, iocfg[8]:0x11F30000.
16 * _i_based could be used to indicate what base the pin should be mapped into.
17 */
18
19#define PIN_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
20 PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
21 _x_bits, 32, 0)
22
23#define PINS_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, _x_bits) \
24 PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit, \
25 _x_bits, 32, 1)
26
27static const struct mtk_pin_field_calc mt8183_pin_mode_range[] = {
28 PIN_FIELD(0, 192, 0x300, 0x10, 0, 4),
29};
30
31static const struct mtk_pin_field_calc mt8183_pin_dir_range[] = {
32 PIN_FIELD(0, 192, 0x0, 0x10, 0, 1),
33};
34
35static const struct mtk_pin_field_calc mt8183_pin_di_range[] = {
36 PIN_FIELD(0, 192, 0x200, 0x10, 0, 1),
37};
38
39static const struct mtk_pin_field_calc mt8183_pin_do_range[] = {
40 PIN_FIELD(0, 192, 0x100, 0x10, 0, 1),
41};
42
43static const struct mtk_pin_field_calc mt8183_pin_ies_range[] = {
44 PINS_FIELD_BASE(0, 3, 6, 0x000, 0x10, 3, 1),
45 PINS_FIELD_BASE(4, 7, 6, 0x000, 0x10, 5, 1),
46 PIN_FIELD_BASE(8, 8, 6, 0x000, 0x10, 0, 1),
47 PINS_FIELD_BASE(9, 10, 6, 0x000, 0x10, 12, 1),
48 PIN_FIELD_BASE(11, 11, 1, 0x000, 0x10, 3, 1),
49 PIN_FIELD_BASE(12, 12, 1, 0x000, 0x10, 7, 1),
50 PINS_FIELD_BASE(13, 16, 2, 0x000, 0x10, 2, 1),
51 PINS_FIELD_BASE(17, 20, 2, 0x000, 0x10, 3, 1),
52 PINS_FIELD_BASE(21, 24, 2, 0x000, 0x10, 4, 1),
53 PINS_FIELD_BASE(25, 28, 2, 0x000, 0x10, 5, 1),
54 PIN_FIELD_BASE(29, 29, 2, 0x000, 0x10, 6, 1),
55 PIN_FIELD_BASE(30, 30, 2, 0x000, 0x10, 7, 1),
56 PINS_FIELD_BASE(31, 31, 2, 0x000, 0x10, 8, 1),
57 PINS_FIELD_BASE(32, 34, 2, 0x000, 0x10, 7, 1),
58 PINS_FIELD_BASE(35, 37, 3, 0x000, 0x10, 0, 1),
59 PINS_FIELD_BASE(38, 40, 3, 0x000, 0x10, 1, 1),
60 PINS_FIELD_BASE(41, 42, 3, 0x000, 0x10, 2, 1),
61 PINS_FIELD_BASE(43, 45, 3, 0x000, 0x10, 3, 1),
62 PINS_FIELD_BASE(46, 47, 3, 0x000, 0x10, 4, 1),
63 PINS_FIELD_BASE(48, 49, 3, 0x000, 0x10, 5, 1),
64 PINS_FIELD_BASE(50, 51, 4, 0x000, 0x10, 0, 1),
65 PINS_FIELD_BASE(52, 57, 4, 0x000, 0x10, 1, 1),
66 PINS_FIELD_BASE(58, 60, 4, 0x000, 0x10, 2, 1),
67 PINS_FIELD_BASE(61, 64, 5, 0x000, 0x10, 0, 1),
68 PINS_FIELD_BASE(65, 66, 5, 0x000, 0x10, 1, 1),
69 PINS_FIELD_BASE(67, 68, 5, 0x000, 0x10, 2, 1),
70 PINS_FIELD_BASE(69, 71, 5, 0x000, 0x10, 3, 1),
71 PINS_FIELD_BASE(72, 76, 5, 0x000, 0x10, 4, 1),
72 PINS_FIELD_BASE(77, 80, 5, 0x000, 0x10, 5, 1),
73 PIN_FIELD_BASE(81, 81, 5, 0x000, 0x10, 6, 1),
74 PINS_FIELD_BASE(82, 83, 5, 0x000, 0x10, 7, 1),
75 PIN_FIELD_BASE(84, 84, 5, 0x000, 0x10, 6, 1),
76 PINS_FIELD_BASE(85, 88, 5, 0x000, 0x10, 8, 1),
77 PIN_FIELD_BASE(89, 89, 6, 0x000, 0x10, 11, 1),
78 PIN_FIELD_BASE(90, 90, 6, 0x000, 0x10, 1, 1),
79 PINS_FIELD_BASE(91, 94, 6, 0x000, 0x10, 2, 1),
80 PINS_FIELD_BASE(95, 96, 6, 0x000, 0x10, 6, 1),
81 PINS_FIELD_BASE(97, 98, 6, 0x000, 0x10, 7, 1),
82 PIN_FIELD_BASE(99, 99, 6, 0x000, 0x10, 8, 1),
83 PIN_FIELD_BASE(100, 100, 6, 0x000, 0x10, 9, 1),
84 PINS_FIELD_BASE(101, 102, 6, 0x000, 0x10, 10, 1),
85 PINS_FIELD_BASE(103, 104, 6, 0x000, 0x10, 13, 1),
86 PINS_FIELD_BASE(105, 106, 6, 0x000, 0x10, 14, 1),
87 PIN_FIELD_BASE(107, 107, 7, 0x000, 0x10, 0, 1),
88 PIN_FIELD_BASE(108, 108, 7, 0x000, 0x10, 1, 1),
89 PIN_FIELD_BASE(109, 109, 7, 0x000, 0x10, 2, 1),
90 PIN_FIELD_BASE(110, 110, 7, 0x000, 0x10, 0, 1),
91 PIN_FIELD_BASE(111, 111, 7, 0x000, 0x10, 3, 1),
92 PIN_FIELD_BASE(112, 112, 7, 0x000, 0x10, 2, 1),
93 PIN_FIELD_BASE(113, 113, 7, 0x000, 0x10, 4, 1),
94 PIN_FIELD_BASE(114, 114, 7, 0x000, 0x10, 5, 1),
95 PIN_FIELD_BASE(115, 115, 7, 0x000, 0x10, 6, 1),
96 PIN_FIELD_BASE(116, 116, 7, 0x000, 0x10, 7, 1),
97 PIN_FIELD_BASE(117, 117, 7, 0x000, 0x10, 8, 1),
98 PIN_FIELD_BASE(118, 118, 7, 0x000, 0x10, 9, 1),
99 PIN_FIELD_BASE(119, 119, 7, 0x000, 0x10, 10, 1),
100 PIN_FIELD_BASE(120, 120, 7, 0x000, 0x10, 11, 1),
101 PIN_FIELD_BASE(121, 121, 7, 0x000, 0x10, 12, 1),
102 PIN_FIELD_BASE(122, 122, 8, 0x000, 0x10, 0, 1),
103 PIN_FIELD_BASE(123, 123, 8, 0x000, 0x10, 1, 1),
104 PIN_FIELD_BASE(124, 124, 8, 0x000, 0x10, 2, 1),
105 PINS_FIELD_BASE(125, 130, 8, 0x000, 0x10, 1, 1),
106 PIN_FIELD_BASE(131, 131, 8, 0x000, 0x10, 3, 1),
107 PIN_FIELD_BASE(132, 132, 8, 0x000, 0x10, 1, 1),
108 PIN_FIELD_BASE(133, 133, 8, 0x000, 0x10, 4, 1),
109 PIN_FIELD_BASE(134, 134, 1, 0x000, 0x10, 0, 1),
110 PIN_FIELD_BASE(135, 135, 1, 0x000, 0x10, 1, 1),
111 PINS_FIELD_BASE(136, 143, 1, 0x000, 0x10, 2, 1),
112 PINS_FIELD_BASE(144, 147, 1, 0x000, 0x10, 4, 1),
113 PIN_FIELD_BASE(148, 148, 1, 0x000, 0x10, 5, 1),
114 PIN_FIELD_BASE(149, 149, 1, 0x000, 0x10, 6, 1),
115 PINS_FIELD_BASE(150, 153, 1, 0x000, 0x10, 8, 1),
116 PIN_FIELD_BASE(154, 154, 1, 0x000, 0x10, 9, 1),
117 PINS_FIELD_BASE(155, 157, 1, 0x000, 0x10, 10, 1),
118 PINS_FIELD_BASE(158, 160, 1, 0x000, 0x10, 8, 1),
119 PINS_FIELD_BASE(161, 164, 2, 0x000, 0x10, 0, 1),
120 PINS_FIELD_BASE(165, 166, 2, 0x000, 0x10, 1, 1),
121 PINS_FIELD_BASE(167, 168, 4, 0x000, 0x10, 2, 1),
122 PIN_FIELD_BASE(169, 169, 4, 0x000, 0x10, 3, 1),
123 PINS_FIELD_BASE(170, 174, 4, 0x000, 0x10, 4, 1),
124 PINS_FIELD_BASE(175, 176, 4, 0x000, 0x10, 3, 1),
125 PINS_FIELD_BASE(177, 179, 6, 0x000, 0x10, 4, 1),
126};
127
128static const struct mtk_pin_field_calc mt8183_pin_smt_range[] = {
129 PINS_FIELD_BASE(0, 3, 6, 0x010, 0x10, 3, 1),
130 PINS_FIELD_BASE(4, 7, 6, 0x010, 0x10, 5, 1),
131 PIN_FIELD_BASE(8, 8, 6, 0x010, 0x10, 0, 1),
132 PINS_FIELD_BASE(9, 10, 6, 0x010, 0x10, 12, 1),
133 PIN_FIELD_BASE(11, 11, 1, 0x010, 0x10, 3, 1),
134 PIN_FIELD_BASE(12, 12, 1, 0x010, 0x10, 7, 1),
135 PINS_FIELD_BASE(13, 16, 2, 0x010, 0x10, 2, 1),
136 PINS_FIELD_BASE(17, 20, 2, 0x010, 0x10, 3, 1),
137 PINS_FIELD_BASE(21, 24, 2, 0x010, 0x10, 4, 1),
138 PINS_FIELD_BASE(25, 28, 2, 0x010, 0x10, 5, 1),
139 PIN_FIELD_BASE(29, 29, 2, 0x010, 0x10, 6, 1),
140 PIN_FIELD_BASE(30, 30, 2, 0x010, 0x10, 7, 1),
141 PINS_FIELD_BASE(31, 31, 2, 0x010, 0x10, 8, 1),
142 PINS_FIELD_BASE(32, 34, 2, 0x010, 0x10, 7, 1),
143 PINS_FIELD_BASE(35, 37, 3, 0x010, 0x10, 0, 1),
144 PINS_FIELD_BASE(38, 40, 3, 0x010, 0x10, 1, 1),
145 PINS_FIELD_BASE(41, 42, 3, 0x010, 0x10, 2, 1),
146 PINS_FIELD_BASE(43, 45, 3, 0x010, 0x10, 3, 1),
147 PINS_FIELD_BASE(46, 47, 3, 0x010, 0x10, 4, 1),
148 PINS_FIELD_BASE(48, 49, 3, 0x010, 0x10, 5, 1),
149 PINS_FIELD_BASE(50, 51, 4, 0x010, 0x10, 0, 1),
150 PINS_FIELD_BASE(52, 57, 4, 0x010, 0x10, 1, 1),
151 PINS_FIELD_BASE(58, 60, 4, 0x010, 0x10, 2, 1),
152 PINS_FIELD_BASE(61, 64, 5, 0x010, 0x10, 0, 1),
153 PINS_FIELD_BASE(65, 66, 5, 0x010, 0x10, 1, 1),
154 PINS_FIELD_BASE(67, 68, 5, 0x010, 0x10, 2, 1),
155 PINS_FIELD_BASE(69, 71, 5, 0x010, 0x10, 3, 1),
156 PINS_FIELD_BASE(72, 76, 5, 0x010, 0x10, 4, 1),
157 PINS_FIELD_BASE(77, 80, 5, 0x010, 0x10, 5, 1),
158 PIN_FIELD_BASE(81, 81, 5, 0x010, 0x10, 6, 1),
159 PINS_FIELD_BASE(82, 83, 5, 0x010, 0x10, 7, 1),
160 PIN_FIELD_BASE(84, 84, 5, 0x010, 0x10, 6, 1),
161 PINS_FIELD_BASE(85, 88, 5, 0x010, 0x10, 8, 1),
162 PIN_FIELD_BASE(89, 89, 6, 0x010, 0x10, 11, 1),
163 PIN_FIELD_BASE(90, 90, 6, 0x010, 0x10, 1, 1),
164 PINS_FIELD_BASE(91, 94, 6, 0x010, 0x10, 2, 1),
165 PINS_FIELD_BASE(95, 96, 6, 0x010, 0x10, 6, 1),
166 PINS_FIELD_BASE(97, 98, 6, 0x010, 0x10, 7, 1),
167 PIN_FIELD_BASE(99, 99, 6, 0x010, 0x10, 8, 1),
168 PIN_FIELD_BASE(100, 100, 6, 0x010, 0x10, 9, 1),
169 PINS_FIELD_BASE(101, 102, 6, 0x010, 0x10, 10, 1),
170 PINS_FIELD_BASE(103, 104, 6, 0x010, 0x10, 13, 1),
171 PINS_FIELD_BASE(105, 106, 6, 0x010, 0x10, 14, 1),
172 PIN_FIELD_BASE(107, 107, 7, 0x010, 0x10, 0, 1),
173 PIN_FIELD_BASE(108, 108, 7, 0x010, 0x10, 1, 1),
174 PIN_FIELD_BASE(109, 109, 7, 0x010, 0x10, 2, 1),
175 PIN_FIELD_BASE(110, 110, 7, 0x010, 0x10, 0, 1),
176 PIN_FIELD_BASE(111, 111, 7, 0x010, 0x10, 3, 1),
177 PIN_FIELD_BASE(112, 112, 7, 0x010, 0x10, 2, 1),
178 PIN_FIELD_BASE(113, 113, 7, 0x010, 0x10, 4, 1),
179 PIN_FIELD_BASE(114, 114, 7, 0x010, 0x10, 5, 1),
180 PIN_FIELD_BASE(115, 115, 7, 0x010, 0x10, 6, 1),
181 PIN_FIELD_BASE(116, 116, 7, 0x010, 0x10, 7, 1),
182 PIN_FIELD_BASE(117, 117, 7, 0x010, 0x10, 8, 1),
183 PIN_FIELD_BASE(118, 118, 7, 0x010, 0x10, 9, 1),
184 PIN_FIELD_BASE(119, 119, 7, 0x010, 0x10, 10, 1),
185 PIN_FIELD_BASE(120, 120, 7, 0x010, 0x10, 11, 1),
186 PIN_FIELD_BASE(121, 121, 7, 0x010, 0x10, 12, 1),
187 PIN_FIELD_BASE(122, 122, 8, 0x010, 0x10, 0, 1),
188 PIN_FIELD_BASE(123, 123, 8, 0x010, 0x10, 1, 1),
189 PIN_FIELD_BASE(124, 124, 8, 0x010, 0x10, 2, 1),
190 PINS_FIELD_BASE(125, 130, 8, 0x010, 0x10, 1, 1),
191 PIN_FIELD_BASE(131, 131, 8, 0x010, 0x10, 3, 1),
192 PIN_FIELD_BASE(132, 132, 8, 0x010, 0x10, 1, 1),
193 PIN_FIELD_BASE(133, 133, 8, 0x010, 0x10, 4, 1),
194 PIN_FIELD_BASE(134, 134, 1, 0x010, 0x10, 0, 1),
195 PIN_FIELD_BASE(135, 135, 1, 0x010, 0x10, 1, 1),
196 PINS_FIELD_BASE(136, 143, 1, 0x010, 0x10, 2, 1),
197 PINS_FIELD_BASE(144, 147, 1, 0x010, 0x10, 4, 1),
198 PIN_FIELD_BASE(148, 148, 1, 0x010, 0x10, 5, 1),
199 PIN_FIELD_BASE(149, 149, 1, 0x010, 0x10, 6, 1),
200 PINS_FIELD_BASE(150, 153, 1, 0x010, 0x10, 8, 1),
201 PIN_FIELD_BASE(154, 154, 1, 0x010, 0x10, 9, 1),
202 PINS_FIELD_BASE(155, 157, 1, 0x010, 0x10, 10, 1),
203 PINS_FIELD_BASE(158, 160, 1, 0x010, 0x10, 8, 1),
204 PINS_FIELD_BASE(161, 164, 2, 0x010, 0x10, 0, 1),
205 PINS_FIELD_BASE(165, 166, 2, 0x010, 0x10, 1, 1),
206 PINS_FIELD_BASE(167, 168, 4, 0x010, 0x10, 2, 1),
207 PIN_FIELD_BASE(169, 169, 4, 0x010, 0x10, 3, 1),
208 PINS_FIELD_BASE(170, 174, 4, 0x010, 0x10, 4, 1),
209 PINS_FIELD_BASE(175, 176, 4, 0x010, 0x10, 3, 1),
210 PINS_FIELD_BASE(177, 179, 6, 0x010, 0x10, 4, 1),
211};
212
213static const struct mtk_pin_field_calc mt8183_pin_pullen_range[] = {
214 PIN_FIELD_BASE(0, 3, 6, 0x060, 0x10, 6, 1),
215 PIN_FIELD_BASE(4, 7, 6, 0x060, 0x10, 11, 1),
216 PIN_FIELD_BASE(8, 8, 6, 0x060, 0x10, 0, 1),
217 PIN_FIELD_BASE(9, 10, 6, 0x060, 0x10, 26, 1),
218 PIN_FIELD_BASE(11, 11, 1, 0x060, 0x10, 10, 1),
219 PIN_FIELD_BASE(12, 12, 1, 0x060, 0x10, 17, 1),
220 PIN_FIELD_BASE(13, 28, 2, 0x060, 0x10, 6, 1),
221 PIN_FIELD_BASE(43, 49, 3, 0x060, 0x10, 8, 1),
222 PIN_FIELD_BASE(50, 60, 4, 0x060, 0x10, 0, 1),
223 PIN_FIELD_BASE(61, 88, 5, 0x060, 0x10, 0, 1),
224 PIN_FIELD_BASE(89, 89, 6, 0x060, 0x10, 24, 1),
225 PIN_FIELD_BASE(90, 90, 6, 0x060, 0x10, 1, 1),
226 PIN_FIELD_BASE(95, 95, 6, 0x060, 0x10, 15, 1),
227 PIN_FIELD_BASE(96, 102, 6, 0x060, 0x10, 17, 1),
228 PIN_FIELD_BASE(103, 106, 6, 0x060, 0x10, 28, 1),
229 PIN_FIELD_BASE(107, 121, 7, 0x060, 0x10, 0, 1),
230 PIN_FIELD_BASE(134, 143, 1, 0x060, 0x10, 0, 1),
231 PIN_FIELD_BASE(144, 149, 1, 0x060, 0x10, 11, 1),
232 PIN_FIELD_BASE(150, 160, 1, 0x060, 0x10, 18, 1),
233 PIN_FIELD_BASE(161, 166, 2, 0x060, 0x10, 0, 1),
234 PIN_FIELD_BASE(167, 176, 4, 0x060, 0x10, 11, 1),
235 PIN_FIELD_BASE(177, 177, 6, 0x060, 0x10, 10, 1),
236 PIN_FIELD_BASE(178, 178, 6, 0x060, 0x10, 16, 1),
237 PIN_FIELD_BASE(179, 179, 6, 0x060, 0x10, 25, 1),
238};
239
240static const struct mtk_pin_field_calc mt8183_pin_pullsel_range[] = {
241 PIN_FIELD_BASE(0, 3, 6, 0x080, 0x10, 6, 1),
242 PIN_FIELD_BASE(4, 7, 6, 0x080, 0x10, 11, 1),
243 PIN_FIELD_BASE(8, 8, 6, 0x080, 0x10, 0, 1),
244 PIN_FIELD_BASE(9, 10, 6, 0x080, 0x10, 26, 1),
245 PIN_FIELD_BASE(11, 11, 1, 0x080, 0x10, 10, 1),
246 PIN_FIELD_BASE(12, 12, 1, 0x080, 0x10, 17, 1),
247 PIN_FIELD_BASE(13, 28, 2, 0x080, 0x10, 6, 1),
248 PIN_FIELD_BASE(43, 49, 3, 0x080, 0x10, 8, 1),
249 PIN_FIELD_BASE(50, 60, 4, 0x080, 0x10, 0, 1),
250 PIN_FIELD_BASE(61, 88, 5, 0x080, 0x10, 0, 1),
251 PIN_FIELD_BASE(89, 89, 6, 0x080, 0x10, 24, 1),
252 PIN_FIELD_BASE(90, 90, 6, 0x080, 0x10, 1, 1),
253 PIN_FIELD_BASE(95, 95, 6, 0x080, 0x10, 15, 1),
254 PIN_FIELD_BASE(96, 102, 6, 0x080, 0x10, 17, 1),
255 PIN_FIELD_BASE(103, 106, 6, 0x080, 0x10, 28, 1),
256 PIN_FIELD_BASE(107, 121, 7, 0x080, 0x10, 0, 1),
257 PIN_FIELD_BASE(134, 143, 1, 0x080, 0x10, 0, 1),
258 PIN_FIELD_BASE(144, 149, 1, 0x080, 0x10, 11, 1),
259 PIN_FIELD_BASE(150, 160, 1, 0x080, 0x10, 18, 1),
260 PIN_FIELD_BASE(161, 166, 2, 0x080, 0x10, 0, 1),
261 PIN_FIELD_BASE(167, 176, 4, 0x080, 0x10, 11, 1),
262 PIN_FIELD_BASE(177, 177, 6, 0x080, 0x10, 10, 1),
263 PIN_FIELD_BASE(178, 178, 6, 0x080, 0x10, 16, 1),
264 PIN_FIELD_BASE(179, 179, 6, 0x080, 0x10, 25, 1),
265};
266
267static const struct mtk_pin_field_calc mt8183_pin_drv_range[] = {
268 PINS_FIELD_BASE(0, 3, 6, 0x0A0, 0x10, 12, 3),
269 PINS_FIELD_BASE(4, 7, 6, 0x0A0, 0x10, 20, 3),
270 PIN_FIELD_BASE(8, 8, 6, 0x0A0, 0x10, 0, 3),
271 PINS_FIELD_BASE(9, 10, 6, 0x0B0, 0x10, 16, 3),
272 PIN_FIELD_BASE(11, 11, 1, 0x0A0, 0x10, 12, 3),
273 PIN_FIELD_BASE(12, 12, 1, 0x0A0, 0x10, 28, 3),
274 PINS_FIELD_BASE(13, 16, 2, 0x0A0, 0x10, 8, 3),
275 PINS_FIELD_BASE(17, 20, 2, 0x0A0, 0x10, 12, 3),
276 PINS_FIELD_BASE(21, 24, 2, 0x0A0, 0x10, 16, 3),
277 PINS_FIELD_BASE(25, 28, 2, 0x0A0, 0x10, 20, 3),
278 PIN_FIELD_BASE(29, 29, 2, 0x0A0, 0x10, 24, 3),
279 PIN_FIELD_BASE(30, 30, 2, 0x0A0, 0x10, 28, 3),
280 PINS_FIELD_BASE(31, 31, 2, 0x0B0, 0x10, 0, 3),
281 PINS_FIELD_BASE(32, 34, 2, 0x0A0, 0x10, 28, 3),
282 PINS_FIELD_BASE(35, 37, 3, 0x0A0, 0x10, 0, 3),
283 PINS_FIELD_BASE(38, 40, 3, 0x0A0, 0x10, 4, 3),
284 PINS_FIELD_BASE(41, 42, 3, 0x0A0, 0x10, 8, 3),
285 PINS_FIELD_BASE(43, 45, 3, 0x0A0, 0x10, 12, 3),
286 PINS_FIELD_BASE(46, 47, 3, 0x0A0, 0x10, 16, 3),
287 PINS_FIELD_BASE(48, 49, 3, 0x0A0, 0x10, 20, 3),
288 PINS_FIELD_BASE(50, 51, 4, 0x0A0, 0x10, 0, 3),
289 PINS_FIELD_BASE(52, 57, 4, 0x0A0, 0x10, 4, 3),
290 PINS_FIELD_BASE(58, 60, 4, 0x0A0, 0x10, 8, 3),
291 PINS_FIELD_BASE(61, 64, 5, 0x0A0, 0x10, 0, 3),
292 PINS_FIELD_BASE(65, 66, 5, 0x0A0, 0x10, 4, 3),
293 PINS_FIELD_BASE(67, 68, 5, 0x0A0, 0x10, 8, 3),
294 PINS_FIELD_BASE(69, 71, 5, 0x0A0, 0x10, 12, 3),
295 PINS_FIELD_BASE(72, 76, 5, 0x0A0, 0x10, 16, 3),
296 PINS_FIELD_BASE(77, 80, 5, 0x0A0, 0x10, 20, 3),
297 PIN_FIELD_BASE(81, 81, 5, 0x0A0, 0x10, 24, 3),
298 PINS_FIELD_BASE(82, 83, 5, 0x0A0, 0x10, 28, 3),
299 PIN_FIELD_BASE(84, 84, 5, 0x0A0, 0x10, 24, 3),
300 PINS_FIELD_BASE(85, 88, 5, 0x0B0, 0x10, 0, 3),
301 PIN_FIELD_BASE(89, 89, 6, 0x0B0, 0x10, 12, 3),
302 PIN_FIELD_BASE(90, 90, 6, 0x0A0, 0x10, 4, 3),
303 PINS_FIELD_BASE(91, 94, 6, 0x0A0, 0x10, 8, 3),
304 PINS_FIELD_BASE(95, 96, 6, 0x0A0, 0x10, 24, 3),
305 PINS_FIELD_BASE(97, 98, 6, 0x0A0, 0x10, 28, 3),
306 PIN_FIELD_BASE(99, 99, 6, 0x0B0, 0x10, 0, 3),
307 PIN_FIELD_BASE(100, 100, 6, 0x0B0, 0x10, 4, 3),
308 PINS_FIELD_BASE(101, 102, 6, 0x0B0, 0x10, 8, 3),
309 PINS_FIELD_BASE(103, 104, 6, 0x0B0, 0x10, 20, 3),
310 PINS_FIELD_BASE(105, 106, 6, 0x0B0, 0x10, 24, 3),
311 PIN_FIELD_BASE(107, 107, 7, 0x0A0, 0x10, 0, 3),
312 PIN_FIELD_BASE(108, 108, 7, 0x0A0, 0x10, 4, 3),
313 PIN_FIELD_BASE(109, 109, 7, 0x0A0, 0x10, 8, 3),
314 PIN_FIELD_BASE(110, 110, 7, 0x0A0, 0x10, 0, 3),
315 PIN_FIELD_BASE(111, 111, 7, 0x0A0, 0x10, 4, 3),
316 PIN_FIELD_BASE(112, 112, 7, 0x0A0, 0x10, 8, 3),
317 PIN_FIELD_BASE(113, 113, 7, 0x0A0, 0x10, 16, 3),
318 PIN_FIELD_BASE(114, 114, 7, 0x0A0, 0x10, 20, 3),
319 PIN_FIELD_BASE(115, 115, 7, 0x0A0, 0x10, 24, 3),
320 PIN_FIELD_BASE(116, 116, 7, 0x0A0, 0x10, 28, 3),
321 PIN_FIELD_BASE(117, 117, 7, 0x0B0, 0x10, 0, 3),
322 PIN_FIELD_BASE(118, 118, 7, 0x0B0, 0x10, 4, 3),
323 PIN_FIELD_BASE(119, 119, 7, 0x0B0, 0x10, 8, 3),
324 PIN_FIELD_BASE(120, 120, 7, 0x0B0, 0x10, 12, 3),
325 PIN_FIELD_BASE(121, 121, 7, 0x0B0, 0x10, 16, 3),
326 PIN_FIELD_BASE(122, 122, 8, 0x0A0, 0x10, 0, 3),
327 PIN_FIELD_BASE(123, 123, 8, 0x0A0, 0x10, 4, 3),
328 PIN_FIELD_BASE(124, 124, 8, 0x0A0, 0x10, 8, 3),
329 PINS_FIELD_BASE(125, 130, 8, 0x0A0, 0x10, 4, 3),
330 PIN_FIELD_BASE(131, 131, 8, 0x0A0, 0x10, 12, 3),
331 PIN_FIELD_BASE(132, 132, 8, 0x0A0, 0x10, 4, 3),
332 PIN_FIELD_BASE(133, 133, 8, 0x0A0, 0x10, 16, 3),
333 PIN_FIELD_BASE(134, 134, 1, 0x0A0, 0x10, 0, 3),
334 PIN_FIELD_BASE(135, 135, 1, 0x0A0, 0x10, 4, 3),
335 PINS_FIELD_BASE(136, 143, 1, 0x0A0, 0x10, 8, 3),
336 PINS_FIELD_BASE(144, 147, 1, 0x0A0, 0x10, 16, 3),
337 PIN_FIELD_BASE(148, 148, 1, 0x0A0, 0x10, 20, 3),
338 PIN_FIELD_BASE(149, 149, 1, 0x0A0, 0x10, 24, 3),
339 PINS_FIELD_BASE(150, 153, 1, 0x0B0, 0x10, 0, 3),
340 PIN_FIELD_BASE(154, 154, 1, 0x0B0, 0x10, 4, 3),
341 PINS_FIELD_BASE(155, 157, 1, 0x0B0, 0x10, 8, 3),
342 PINS_FIELD_BASE(158, 160, 1, 0x0B0, 0x10, 0, 3),
343 PINS_FIELD_BASE(161, 164, 2, 0x0A0, 0x10, 0, 3),
344 PINS_FIELD_BASE(165, 166, 2, 0x0A0, 0x10, 4, 3),
345 PINS_FIELD_BASE(167, 168, 4, 0x0A0, 0x10, 8, 3),
346 PIN_FIELD_BASE(169, 169, 4, 0x0A0, 0x10, 12, 3),
347 PINS_FIELD_BASE(170, 174, 4, 0x0A0, 0x10, 16, 3),
348 PINS_FIELD_BASE(175, 176, 4, 0x0A0, 0x10, 12, 3),
349 PINS_FIELD_BASE(177, 179, 6, 0x0A0, 0x10, 16, 3),
350};
351
352static const struct mtk_pin_field_calc mt8183_pin_pupd_range[] = {
353 PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 2, 1),
354 PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 6, 1),
355 PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 10, 1),
356 PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 14, 1),
357 PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 18, 1),
358 PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 22, 1),
359 PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 2, 1),
360 PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 6, 1),
361 PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 10, 1),
362 PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 14, 1),
363 PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 18, 1),
364 PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 22, 1),
365 PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 26, 1),
366 PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 30, 1),
367 PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 2, 1),
368 PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 6, 1),
369 PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 10, 1),
370 PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 14, 1),
371 PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 2, 1),
372 PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 6, 1),
373 PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 10, 1),
374 PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 14, 1),
375 PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 18, 1),
376 PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 22, 1),
377 PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 26, 1),
378 PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 30, 1),
379 PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 2, 1),
380 PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 6, 1),
381 PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 10, 1),
382 PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 14, 1),
383};
384
385static const struct mtk_pin_field_calc mt8183_pin_r0_range[] = {
386 PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 0, 1),
387 PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 4, 1),
388 PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 8, 1),
389 PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 12, 1),
390 PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 16, 1),
391 PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 20, 1),
392 PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 0, 1),
393 PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 4, 1),
394 PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 8, 1),
395 PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 12, 1),
396 PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 16, 1),
397 PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 20, 1),
398 PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 24, 1),
399 PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 28, 1),
400 PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 18, 1),
401 PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 13, 1),
402 PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 10, 1),
403 PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 5, 1),
404 PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 7, 1),
405 PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 5, 1),
406 PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 15, 1),
407 PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 17, 1),
408 PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 0, 1),
409 PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 4, 1),
410 PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 8, 1),
411 PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 12, 1),
412 PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 20, 1),
413 PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 10, 1),
414 PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 22, 1),
415 PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 12, 1),
416 PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 0, 1),
417 PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 4, 1),
418 PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 8, 1),
419 PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 12, 1),
420 PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 16, 1),
421 PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 20, 1),
422 PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 24, 1),
423 PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 28, 1),
424 PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 0, 1),
425 PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 4, 1),
426 PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 8, 1),
427 PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 12, 1),
428};
429
430static const struct mtk_pin_field_calc mt8183_pin_r1_range[] = {
431 PIN_FIELD_BASE(29, 29, 2, 0x0C0, 0x10, 1, 1),
432 PIN_FIELD_BASE(30, 30, 2, 0x0C0, 0x10, 5, 1),
433 PIN_FIELD_BASE(31, 31, 2, 0x0C0, 0x10, 9, 1),
434 PIN_FIELD_BASE(32, 32, 2, 0x0C0, 0x10, 13, 1),
435 PIN_FIELD_BASE(33, 33, 2, 0x0C0, 0x10, 17, 1),
436 PIN_FIELD_BASE(34, 34, 2, 0x0C0, 0x10, 21, 1),
437 PIN_FIELD_BASE(35, 35, 3, 0x0C0, 0x10, 1, 1),
438 PIN_FIELD_BASE(36, 36, 3, 0x0C0, 0x10, 5, 1),
439 PIN_FIELD_BASE(37, 37, 3, 0x0C0, 0x10, 9, 1),
440 PIN_FIELD_BASE(38, 38, 3, 0x0C0, 0x10, 13, 1),
441 PIN_FIELD_BASE(39, 39, 3, 0x0C0, 0x10, 17, 1),
442 PIN_FIELD_BASE(40, 40, 3, 0x0C0, 0x10, 21, 1),
443 PIN_FIELD_BASE(41, 41, 3, 0x0C0, 0x10, 25, 1),
444 PIN_FIELD_BASE(42, 42, 3, 0x0C0, 0x10, 29, 1),
445 PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 19, 1),
446 PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 14, 1),
447 PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 11, 1),
448 PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 6, 1),
449 PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 8, 1),
450 PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 6, 1),
451 PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 16, 1),
452 PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 18, 1),
453 PIN_FIELD_BASE(91, 91, 6, 0x0C0, 0x10, 1, 1),
454 PIN_FIELD_BASE(92, 92, 6, 0x0C0, 0x10, 5, 1),
455 PIN_FIELD_BASE(93, 93, 6, 0x0C0, 0x10, 9, 1),
456 PIN_FIELD_BASE(94, 94, 6, 0x0C0, 0x10, 13, 1),
457 PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 21, 1),
458 PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 11, 1),
459 PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 23, 1),
460 PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 13, 1),
461 PIN_FIELD_BASE(122, 122, 8, 0x0C0, 0x10, 1, 1),
462 PIN_FIELD_BASE(123, 123, 8, 0x0C0, 0x10, 5, 1),
463 PIN_FIELD_BASE(124, 124, 8, 0x0C0, 0x10, 9, 1),
464 PIN_FIELD_BASE(125, 125, 8, 0x0C0, 0x10, 13, 1),
465 PIN_FIELD_BASE(126, 126, 8, 0x0C0, 0x10, 17, 1),
466 PIN_FIELD_BASE(127, 127, 8, 0x0C0, 0x10, 21, 1),
467 PIN_FIELD_BASE(128, 128, 8, 0x0C0, 0x10, 25, 1),
468 PIN_FIELD_BASE(129, 129, 8, 0x0C0, 0x10, 29, 1),
469 PIN_FIELD_BASE(130, 130, 8, 0x0D0, 0x10, 1, 1),
470 PIN_FIELD_BASE(131, 131, 8, 0x0D0, 0x10, 5, 1),
471 PIN_FIELD_BASE(132, 132, 8, 0x0D0, 0x10, 9, 1),
472 PIN_FIELD_BASE(133, 133, 8, 0x0D0, 0x10, 13, 1),
473};
474
475static const struct mtk_pin_field_calc mt8183_pin_e1e0en_range[] = {
476 PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 20, 1),
477 PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 15, 1),
478 PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 12, 1),
479 PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 7, 1),
480 PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 12, 1),
481 PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 9, 1),
482 PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 19, 1),
483 PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 22, 1),
484 PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 24, 1),
485 PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 14, 1),
486 PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 27, 1),
487 PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 17, 1),
488};
489
490static const struct mtk_pin_field_calc mt8183_pin_e0_range[] = {
491 PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 21, 1),
492 PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 16, 1),
493 PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 13, 1),
494 PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 8, 1),
495 PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 13, 1),
496 PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 10, 1),
497 PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 20, 1),
498 PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 23, 1),
499 PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 25, 1),
500 PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 15, 1),
501 PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 28, 1),
502 PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 18, 1),
503};
504
505static const struct mtk_pin_field_calc mt8183_pin_e1_range[] = {
506 PIN_FIELD_BASE(48, 48, 3, 0x0F0, 0x10, 22, 1),
507 PIN_FIELD_BASE(49, 49, 3, 0x0F0, 0x10, 17, 1),
508 PIN_FIELD_BASE(50, 50, 4, 0x0F0, 0x10, 14, 1),
509 PIN_FIELD_BASE(51, 51, 4, 0x0F0, 0x10, 9, 1),
510 PIN_FIELD_BASE(81, 81, 5, 0x0F0, 0x10, 14, 1),
511 PIN_FIELD_BASE(82, 82, 5, 0x0F0, 0x10, 11, 1),
512 PIN_FIELD_BASE(83, 83, 5, 0x0F0, 0x10, 21, 1),
513 PIN_FIELD_BASE(84, 84, 5, 0x0F0, 0x10, 24, 1),
514 PIN_FIELD_BASE(103, 103, 6, 0x0F0, 0x10, 26, 1),
515 PIN_FIELD_BASE(104, 104, 6, 0x0F0, 0x10, 16, 1),
516 PIN_FIELD_BASE(105, 105, 6, 0x0F0, 0x10, 29, 1),
517 PIN_FIELD_BASE(106, 106, 6, 0x0F0, 0x10, 19, 1),
518};
519
520static const struct mtk_pin_reg_calc mt8183_reg_cals[PINCTRL_PIN_REG_MAX] = {
521 [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8183_pin_mode_range),
522 [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8183_pin_dir_range),
523 [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8183_pin_di_range),
524 [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8183_pin_do_range),
525 [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8183_pin_smt_range),
526 [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8183_pin_ies_range),
527 [PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt8183_pin_pullen_range),
528 [PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt8183_pin_pullsel_range),
529 [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8183_pin_drv_range),
530 [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8183_pin_pupd_range),
531 [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8183_pin_r0_range),
532 [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8183_pin_r1_range),
533 [PINCTRL_PIN_REG_DRV_EN] = MTK_RANGE(mt8183_pin_e1e0en_range),
534 [PINCTRL_PIN_REG_DRV_E0] = MTK_RANGE(mt8183_pin_e0_range),
535 [PINCTRL_PIN_REG_DRV_E1] = MTK_RANGE(mt8183_pin_e1_range),
536};
537
538static const char * const mt8183_pinctrl_register_base_names[] = {
539 "iocfg0", "iocfg1", "iocfg2", "iocfg3", "iocfg4", "iocfg5",
540 "iocfg6", "iocfg7", "iocfg8",
541};
542
543static const struct mtk_eint_hw mt8183_eint_hw = {
544 .port_mask = 7,
545 .ports = 6,
546 .ap_num = 212,
547 .db_cnt = 13,
548 .db_time = debounce_time_mt6765,
549};
550
551static const struct mtk_pin_soc mt8183_data = {
552 .reg_cal = mt8183_reg_cals,
553 .pins = mtk_pins_mt8183,
554 .npins = ARRAY_SIZE(mtk_pins_mt8183),
555 .ngrps = ARRAY_SIZE(mtk_pins_mt8183),
556 .eint_hw = &mt8183_eint_hw,
557 .gpio_m = 0,
558 .base_names = mt8183_pinctrl_register_base_names,
559 .nbase_names = ARRAY_SIZE(mt8183_pinctrl_register_base_names),
560 .bias_set_combo = mtk_pinconf_bias_set_combo,
561 .bias_get_combo = mtk_pinconf_bias_get_combo,
562 .drive_set = mtk_pinconf_drive_set_rev1,
563 .drive_get = mtk_pinconf_drive_get_rev1,
564 .adv_pull_get = mtk_pinconf_adv_pull_get,
565 .adv_pull_set = mtk_pinconf_adv_pull_set,
566 .adv_drive_get = mtk_pinconf_adv_drive_get,
567 .adv_drive_set = mtk_pinconf_adv_drive_set,
568};
569
570static const struct of_device_id mt8183_pinctrl_of_match[] = {
571 { .compatible = "mediatek,mt8183-pinctrl", .data = &mt8183_data },
572 { }
573};
574
575static struct platform_driver mt8183_pinctrl_driver = {
576 .driver = {
577 .name = "mt8183-pinctrl",
578 .of_match_table = mt8183_pinctrl_of_match,
579 .pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops),
580 },
581 .probe = mtk_paris_pinctrl_probe,
582};
583
584static int __init mt8183_pinctrl_init(void)
585{
586 return platform_driver_register(&mt8183_pinctrl_driver);
587}
588arch_initcall(mt8183_pinctrl_init);
589

source code of linux/drivers/pinctrl/mediatek/pinctrl-mt8183.c