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};
549
550static const struct mtk_pin_soc mt8183_data = {
551	.reg_cal = mt8183_reg_cals,
552	.pins = mtk_pins_mt8183,
553	.npins = ARRAY_SIZE(mtk_pins_mt8183),
554	.ngrps = ARRAY_SIZE(mtk_pins_mt8183),
555	.eint_hw = &mt8183_eint_hw,
556	.gpio_m = 0,
557	.base_names = mt8183_pinctrl_register_base_names,
558	.nbase_names = ARRAY_SIZE(mt8183_pinctrl_register_base_names),
559	.bias_set_combo = mtk_pinconf_bias_set_combo,
560	.bias_get_combo = mtk_pinconf_bias_get_combo,
561	.drive_set = mtk_pinconf_drive_set_rev1,
562	.drive_get = mtk_pinconf_drive_get_rev1,
563	.adv_pull_get = mtk_pinconf_adv_pull_get,
564	.adv_pull_set = mtk_pinconf_adv_pull_set,
565	.adv_drive_get = mtk_pinconf_adv_drive_get,
566	.adv_drive_set = mtk_pinconf_adv_drive_set,
567};
568
569static const struct of_device_id mt8183_pinctrl_of_match[] = {
570	{ .compatible = "mediatek,mt8183-pinctrl", },
571	{ }
572};
573
574static int mt8183_pinctrl_probe(struct platform_device *pdev)
575{
576	return mtk_paris_pinctrl_probe(pdev, &mt8183_data);
577}
578
579static struct platform_driver mt8183_pinctrl_driver = {
580	.driver = {
581		.name = "mt8183-pinctrl",
582		.of_match_table = mt8183_pinctrl_of_match,
583		.pm = &mtk_paris_pinctrl_pm_ops,
584	},
585	.probe = mt8183_pinctrl_probe,
586};
587
588static int __init mt8183_pinctrl_init(void)
589{
590	return platform_driver_register(&mt8183_pinctrl_driver);
591}
592arch_initcall(mt8183_pinctrl_init);
593