1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2020 MediaTek Inc.
4 *
5 * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
6 *
7 */
8
9#include "pinctrl-mtk-mt8195.h"
10#include "pinctrl-paris.h"
11
12/* MT8195 have multiple bases to program pin configuration listed as the below:
13 * iocfg[0]:0x10005000, iocfg[1]:0x11d10000, iocfg[2]:0x11d30000,
14 * iocfg[3]:0x11d40000, iocfg[4]:0x11e20000, iocfg[5]:0x11eb0000,
15 * iocfg[6]:0x11f40000.
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, x_bits, \
21		       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, x_bits,  \
25		       32, 1)
26
27static const struct mtk_pin_field_calc mt8195_pin_mode_range[] = {
28	PIN_FIELD(0, 144, 0x300, 0x10, 0, 4),
29};
30
31static const struct mtk_pin_field_calc mt8195_pin_dir_range[] = {
32	PIN_FIELD(0, 144, 0x0, 0x10, 0, 1),
33};
34
35static const struct mtk_pin_field_calc mt8195_pin_di_range[] = {
36	PIN_FIELD(0, 144, 0x200, 0x10, 0, 1),
37};
38
39static const struct mtk_pin_field_calc mt8195_pin_do_range[] = {
40	PIN_FIELD(0, 144, 0x100, 0x10, 0, 1),
41};
42
43static const struct mtk_pin_field_calc mt8195_pin_ies_range[] = {
44	PIN_FIELD_BASE(0, 0, 4, 0x040, 0x10, 0, 1),
45	PIN_FIELD_BASE(1, 1, 4, 0x040, 0x10, 1, 1),
46	PIN_FIELD_BASE(2, 2, 4, 0x040, 0x10, 2, 1),
47	PIN_FIELD_BASE(3, 3, 4, 0x040, 0x10, 3, 1),
48	PIN_FIELD_BASE(4, 4, 4, 0x040, 0x10, 4, 1),
49	PIN_FIELD_BASE(5, 5, 4, 0x040, 0x10, 5, 1),
50	PIN_FIELD_BASE(6, 6, 4, 0x040, 0x10, 6, 1),
51	PIN_FIELD_BASE(7, 7, 4, 0x040, 0x10, 7, 1),
52	PIN_FIELD_BASE(8, 8, 4, 0x040, 0x10, 13, 1),
53	PIN_FIELD_BASE(9, 9, 4, 0x040, 0x10, 8, 1),
54	PIN_FIELD_BASE(10, 10, 4, 0x040, 0x10, 14, 1),
55	PIN_FIELD_BASE(11, 11, 4, 0x040, 0x10, 9, 1),
56	PIN_FIELD_BASE(12, 12, 4, 0x040, 0x10, 15, 1),
57	PIN_FIELD_BASE(13, 13, 4, 0x040, 0x10, 10, 1),
58	PIN_FIELD_BASE(14, 14, 4, 0x040, 0x10, 16, 1),
59	PIN_FIELD_BASE(15, 15, 4, 0x040, 0x10, 11, 1),
60	PIN_FIELD_BASE(16, 16, 4, 0x040, 0x10, 17, 1),
61	PIN_FIELD_BASE(17, 17, 4, 0x040, 0x10, 12, 1),
62	PIN_FIELD_BASE(18, 18, 2, 0x040, 0x10, 5, 1),
63	PIN_FIELD_BASE(19, 19, 2, 0x040, 0x10, 12, 1),
64	PIN_FIELD_BASE(20, 20, 2, 0x040, 0x10, 11, 1),
65	PIN_FIELD_BASE(21, 21, 2, 0x040, 0x10, 10, 1),
66	PIN_FIELD_BASE(22, 22, 2, 0x040, 0x10, 0, 1),
67	PIN_FIELD_BASE(23, 23, 2, 0x040, 0x10, 1, 1),
68	PIN_FIELD_BASE(24, 24, 2, 0x040, 0x10, 2, 1),
69	PIN_FIELD_BASE(25, 25, 2, 0x040, 0x10, 4, 1),
70	PIN_FIELD_BASE(26, 26, 2, 0x040, 0x10, 3, 1),
71	PIN_FIELD_BASE(27, 27, 2, 0x040, 0x10, 6, 1),
72	PIN_FIELD_BASE(28, 28, 2, 0x040, 0x10, 7, 1),
73	PIN_FIELD_BASE(29, 29, 2, 0x040, 0x10, 8, 1),
74	PIN_FIELD_BASE(30, 30, 2, 0x040, 0x10, 9, 1),
75	PIN_FIELD_BASE(31, 31, 1, 0x060, 0x10, 13, 1),
76	PIN_FIELD_BASE(32, 32, 1, 0x060, 0x10, 12, 1),
77	PIN_FIELD_BASE(33, 33, 1, 0x060, 0x10, 11, 1),
78	PIN_FIELD_BASE(34, 34, 1, 0x060, 0x10, 14, 1),
79	PIN_FIELD_BASE(35, 35, 1, 0x060, 0x10, 15, 1),
80	PIN_FIELD_BASE(36, 36, 1, 0x070, 0x10, 3, 1),
81	PIN_FIELD_BASE(37, 37, 1, 0x070, 0x10, 6, 1),
82	PIN_FIELD_BASE(38, 38, 1, 0x070, 0x10, 4, 1),
83	PIN_FIELD_BASE(39, 39, 1, 0x070, 0x10, 5, 1),
84	PIN_FIELD_BASE(40, 40, 1, 0x070, 0x10, 8, 1),
85	PIN_FIELD_BASE(41, 41, 1, 0x070, 0x10, 7, 1),
86	PIN_FIELD_BASE(42, 42, 1, 0x070, 0x10, 10, 1),
87	PIN_FIELD_BASE(43, 43, 1, 0x070, 0x10, 9, 1),
88	PIN_FIELD_BASE(44, 44, 1, 0x070, 0x10, 20, 1),
89	PIN_FIELD_BASE(45, 45, 1, 0x070, 0x10, 21, 1),
90	PIN_FIELD_BASE(46, 46, 1, 0x060, 0x10, 18, 1),
91	PIN_FIELD_BASE(47, 47, 1, 0x060, 0x10, 16, 1),
92	PIN_FIELD_BASE(48, 48, 1, 0x060, 0x10, 19, 1),
93	PIN_FIELD_BASE(49, 49, 1, 0x060, 0x10, 17, 1),
94	PIN_FIELD_BASE(50, 50, 1, 0x060, 0x10, 25, 1),
95	PIN_FIELD_BASE(51, 51, 1, 0x060, 0x10, 20, 1),
96	PIN_FIELD_BASE(52, 52, 1, 0x060, 0x10, 26, 1),
97	PIN_FIELD_BASE(53, 53, 1, 0x060, 0x10, 21, 1),
98	PIN_FIELD_BASE(54, 54, 1, 0x060, 0x10, 22, 1),
99	PIN_FIELD_BASE(55, 55, 1, 0x060, 0x10, 23, 1),
100	PIN_FIELD_BASE(56, 56, 1, 0x060, 0x10, 24, 1),
101	PIN_FIELD_BASE(57, 57, 1, 0x060, 0x10, 29, 1),
102	PIN_FIELD_BASE(58, 58, 1, 0x060, 0x10, 27, 1),
103	PIN_FIELD_BASE(59, 59, 1, 0x060, 0x10, 30, 1),
104	PIN_FIELD_BASE(60, 60, 1, 0x060, 0x10, 28, 1),
105	PIN_FIELD_BASE(61, 61, 1, 0x060, 0x10, 8, 1),
106	PIN_FIELD_BASE(62, 62, 1, 0x060, 0x10, 7, 1),
107	PIN_FIELD_BASE(63, 63, 1, 0x060, 0x10, 10, 1),
108	PIN_FIELD_BASE(64, 64, 1, 0x060, 0x10, 9, 1),
109	PIN_FIELD_BASE(65, 65, 1, 0x070, 0x10, 1, 1),
110	PIN_FIELD_BASE(66, 66, 1, 0x060, 0x10, 31, 1),
111	PIN_FIELD_BASE(67, 67, 1, 0x070, 0x10, 0, 1),
112	PIN_FIELD_BASE(68, 68, 1, 0x070, 0x10, 2, 1),
113	PIN_FIELD_BASE(69, 69, 1, 0x060, 0x10, 0, 1),
114	PIN_FIELD_BASE(70, 70, 1, 0x060, 0x10, 6, 1),
115	PIN_FIELD_BASE(71, 71, 1, 0x060, 0x10, 4, 1),
116	PIN_FIELD_BASE(72, 72, 1, 0x060, 0x10, 5, 1),
117	PIN_FIELD_BASE(73, 73, 1, 0x060, 0x10, 1, 1),
118	PIN_FIELD_BASE(74, 74, 1, 0x060, 0x10, 2, 1),
119	PIN_FIELD_BASE(75, 75, 1, 0x060, 0x10, 3, 1),
120	PIN_FIELD_BASE(76, 76, 1, 0x070, 0x10, 11, 1),
121	PIN_FIELD_BASE(77, 77, 3, 0x030, 0x10, 1, 1),
122	PIN_FIELD_BASE(78, 78, 3, 0x030, 0x10, 2, 1),
123	PIN_FIELD_BASE(79, 79, 3, 0x030, 0x10, 9, 1),
124	PIN_FIELD_BASE(80, 80, 3, 0x030, 0x10, 10, 1),
125	PIN_FIELD_BASE(81, 81, 3, 0x030, 0x10, 11, 1),
126	PIN_FIELD_BASE(82, 82, 3, 0x030, 0x10, 12, 1),
127	PIN_FIELD_BASE(83, 83, 3, 0x030, 0x10, 13, 1),
128	PIN_FIELD_BASE(84, 84, 3, 0x030, 0x10, 14, 1),
129	PIN_FIELD_BASE(85, 85, 3, 0x030, 0x10, 15, 1),
130	PIN_FIELD_BASE(86, 86, 3, 0x030, 0x10, 16, 1),
131	PIN_FIELD_BASE(87, 87, 3, 0x030, 0x10, 3, 1),
132	PIN_FIELD_BASE(88, 88, 3, 0x030, 0x10, 4, 1),
133	PIN_FIELD_BASE(89, 89, 3, 0x030, 0x10, 5, 1),
134	PIN_FIELD_BASE(90, 90, 3, 0x030, 0x10, 6, 1),
135	PIN_FIELD_BASE(91, 91, 3, 0x030, 0x10, 7, 1),
136	PIN_FIELD_BASE(92, 92, 3, 0x030, 0x10, 8, 1),
137	PIN_FIELD_BASE(93, 93, 3, 0x030, 0x10, 18, 1),
138	PIN_FIELD_BASE(94, 94, 3, 0x030, 0x10, 19, 1),
139	PIN_FIELD_BASE(95, 95, 3, 0x030, 0x10, 17, 1),
140	PIN_FIELD_BASE(96, 96, 3, 0x030, 0x10, 0, 1),
141	PIN_FIELD_BASE(97, 97, 3, 0x030, 0x10, 20, 1),
142	PIN_FIELD_BASE(98, 98, 3, 0x030, 0x10, 28, 1),
143	PIN_FIELD_BASE(99, 99, 3, 0x030, 0x10, 27, 1),
144	PIN_FIELD_BASE(100, 100, 3, 0x030, 0x10, 30, 1),
145	PIN_FIELD_BASE(101, 101, 3, 0x030, 0x10, 29, 1),
146	PIN_FIELD_BASE(102, 102, 3, 0x040, 0x10, 0, 1),
147	PIN_FIELD_BASE(103, 103, 3, 0x030, 0x10, 31, 1),
148	PIN_FIELD_BASE(104, 104, 3, 0x030, 0x10, 25, 1),
149	PIN_FIELD_BASE(105, 105, 3, 0x030, 0x10, 26, 1),
150	PIN_FIELD_BASE(106, 106, 3, 0x030, 0x10, 23, 1),
151	PIN_FIELD_BASE(107, 107, 3, 0x030, 0x10, 24, 1),
152	PIN_FIELD_BASE(108, 108, 3, 0x030, 0x10, 22, 1),
153	PIN_FIELD_BASE(109, 109, 3, 0x030, 0x10, 21, 1),
154	PIN_FIELD_BASE(110, 110, 5, 0x010, 0x10, 1, 1),
155	PIN_FIELD_BASE(111, 111, 5, 0x010, 0x10, 0, 1),
156	PIN_FIELD_BASE(112, 112, 5, 0x010, 0x10, 2, 1),
157	PIN_FIELD_BASE(113, 113, 5, 0x010, 0x10, 3, 1),
158	PIN_FIELD_BASE(114, 114, 5, 0x010, 0x10, 4, 1),
159	PIN_FIELD_BASE(115, 115, 5, 0x010, 0x10, 5, 1),
160	PIN_FIELD_BASE(116, 116, 6, 0x030, 0x10, 9, 1),
161	PIN_FIELD_BASE(117, 117, 6, 0x030, 0x10, 8, 1),
162	PIN_FIELD_BASE(118, 118, 6, 0x030, 0x10, 7, 1),
163	PIN_FIELD_BASE(119, 119, 6, 0x030, 0x10, 6, 1),
164	PIN_FIELD_BASE(120, 120, 6, 0x030, 0x10, 11, 1),
165	PIN_FIELD_BASE(121, 121, 6, 0x030, 0x10, 1, 1),
166	PIN_FIELD_BASE(122, 122, 6, 0x030, 0x10, 0, 1),
167	PIN_FIELD_BASE(123, 123, 6, 0x030, 0x10, 5, 1),
168	PIN_FIELD_BASE(124, 124, 6, 0x030, 0x10, 4, 1),
169	PIN_FIELD_BASE(125, 125, 6, 0x030, 0x10, 3, 1),
170	PIN_FIELD_BASE(126, 126, 6, 0x030, 0x10, 2, 1),
171	PIN_FIELD_BASE(127, 127, 6, 0x030, 0x10, 10, 1),
172	PIN_FIELD_BASE(128, 128, 3, 0x040, 0x10, 3, 1),
173	PIN_FIELD_BASE(129, 129, 3, 0x040, 0x10, 1, 1),
174	PIN_FIELD_BASE(130, 130, 3, 0x040, 0x10, 4, 1),
175	PIN_FIELD_BASE(131, 131, 3, 0x040, 0x10, 2, 1),
176	PIN_FIELD_BASE(132, 132, 6, 0x030, 0x10, 13, 1),
177	PIN_FIELD_BASE(133, 133, 6, 0x030, 0x10, 12, 1),
178	PIN_FIELD_BASE(134, 134, 6, 0x030, 0x10, 15, 1),
179	PIN_FIELD_BASE(135, 135, 6, 0x030, 0x10, 14, 1),
180	PIN_FIELD_BASE(136, 136, 1, 0x070, 0x10, 13, 1),
181	PIN_FIELD_BASE(137, 137, 1, 0x070, 0x10, 12, 1),
182	PIN_FIELD_BASE(138, 138, 1, 0x070, 0x10, 15, 1),
183	PIN_FIELD_BASE(139, 139, 1, 0x070, 0x10, 14, 1),
184	PIN_FIELD_BASE(140, 140, 1, 0x070, 0x10, 17, 1),
185	PIN_FIELD_BASE(141, 141, 1, 0x070, 0x10, 16, 1),
186	PIN_FIELD_BASE(142, 142, 1, 0x070, 0x10, 19, 1),
187	PIN_FIELD_BASE(143, 143, 1, 0x070, 0x10, 18, 1),
188};
189
190static const struct mtk_pin_field_calc mt8195_pin_smt_range[] = {
191	PIN_FIELD_BASE(0, 0, 4, 0x0d0, 0x10, 0, 1),
192	PIN_FIELD_BASE(1, 1, 4, 0x0d0, 0x10, 1, 1),
193	PIN_FIELD_BASE(2, 2, 4, 0x0d0, 0x10, 2, 1),
194	PIN_FIELD_BASE(3, 3, 4, 0x0d0, 0x10, 3, 1),
195	PIN_FIELD_BASE(4, 4, 4, 0x0d0, 0x10, 4, 1),
196	PIN_FIELD_BASE(5, 5, 4, 0x0d0, 0x10, 5, 1),
197	PINS_FIELD_BASE(6, 7, 4, 0x0d0, 0x10, 6, 1),
198	PIN_FIELD_BASE(8, 8, 4, 0x0d0, 0x10, 12, 1),
199	PIN_FIELD_BASE(9, 9, 4, 0x0d0, 0x10, 7, 1),
200	PIN_FIELD_BASE(10, 10, 4, 0x0d0, 0x10, 13, 1),
201	PIN_FIELD_BASE(11, 11, 4, 0x0d0, 0x10, 8, 1),
202	PIN_FIELD_BASE(12, 12, 4, 0x0d0, 0x10, 14, 1),
203	PIN_FIELD_BASE(13, 13, 4, 0x0d0, 0x10, 9, 1),
204	PIN_FIELD_BASE(14, 14, 4, 0x0d0, 0x10, 15, 1),
205	PIN_FIELD_BASE(15, 15, 4, 0x0d0, 0x10, 10, 1),
206	PIN_FIELD_BASE(16, 16, 4, 0x0d0, 0x10, 16, 1),
207	PIN_FIELD_BASE(17, 17, 4, 0x0d0, 0x10, 11, 1),
208	PIN_FIELD_BASE(18, 18, 2, 0x090, 0x10, 11, 1),
209	PIN_FIELD_BASE(19, 19, 2, 0x090, 0x10, 10, 1),
210	PIN_FIELD_BASE(20, 20, 2, 0x090, 0x10, 9, 1),
211	PIN_FIELD_BASE(21, 21, 2, 0x090, 0x10, 11, 1),
212	PIN_FIELD_BASE(22, 22, 2, 0x090, 0x10, 0, 1),
213	PIN_FIELD_BASE(23, 23, 2, 0x090, 0x10, 1, 1),
214	PIN_FIELD_BASE(24, 24, 2, 0x090, 0x10, 2, 1),
215	PIN_FIELD_BASE(25, 25, 2, 0x090, 0x10, 4, 1),
216	PIN_FIELD_BASE(26, 26, 2, 0x090, 0x10, 3, 1),
217	PIN_FIELD_BASE(27, 27, 2, 0x090, 0x10, 5, 1),
218	PIN_FIELD_BASE(28, 28, 2, 0x090, 0x10, 6, 1),
219	PIN_FIELD_BASE(29, 29, 2, 0x090, 0x10, 7, 1),
220	PIN_FIELD_BASE(30, 30, 2, 0x090, 0x10, 8, 1),
221	PINS_FIELD_BASE(31, 33, 1, 0x0f0, 0x10, 4, 1),
222	PIN_FIELD_BASE(34, 34, 1, 0x0f0, 0x10, 0, 1),
223	PIN_FIELD_BASE(35, 35, 1, 0x0f0, 0x10, 1, 1),
224	PIN_FIELD_BASE(36, 36, 1, 0x0f0, 0x10, 4, 1),
225	PIN_FIELD_BASE(37, 37, 1, 0x0f0, 0x10, 2, 1),
226	PINS_FIELD_BASE(38, 39, 1, 0x0f0, 0x10, 5, 1),
227	PIN_FIELD_BASE(40, 40, 1, 0x0f0, 0x10, 14, 1),
228	PIN_FIELD_BASE(41, 41, 1, 0x0f0, 0x10, 13, 1),
229	PIN_FIELD_BASE(42, 42, 1, 0x0f0, 0x10, 16, 1),
230	PIN_FIELD_BASE(43, 43, 1, 0x0f0, 0x10, 15, 1),
231	PIN_FIELD_BASE(44, 44, 1, 0x0f0, 0x10, 25, 1),
232	PIN_FIELD_BASE(45, 45, 1, 0x0f0, 0x10, 26, 1),
233	PINS_FIELD_BASE(46, 47, 1, 0x0f0, 0x10, 5, 1),
234	PINS_FIELD_BASE(48, 51, 1, 0x0f0, 0x10, 6, 1),
235	PINS_FIELD_BASE(52, 55, 1, 0x0f0, 0x10, 7, 1),
236	PINS_FIELD_BASE(56, 59, 1, 0x0f0, 0x10, 8, 1),
237	PINS_FIELD_BASE(60, 63, 1, 0x0f0, 0x10, 9, 1),
238	PIN_FIELD_BASE(64, 64, 1, 0x0f0, 0x10, 10, 1),
239	PINS_FIELD_BASE(65, 68, 1, 0x0f0, 0x10, 3, 1),
240	PINS_FIELD_BASE(69, 71, 1, 0x0f0, 0x10, 10, 1),
241	PINS_FIELD_BASE(72, 75, 1, 0x0f0, 0x10, 11, 1),
242	PIN_FIELD_BASE(76, 76, 1, 0x0f0, 0x10, 12, 1),
243	PIN_FIELD_BASE(77, 77, 3, 0x0e0, 0x10, 0, 1),
244	PIN_FIELD_BASE(78, 78, 3, 0x0e0, 0x10, 1, 1),
245	PIN_FIELD_BASE(79, 79, 3, 0x0e0, 0x10, 6, 1),
246	PIN_FIELD_BASE(80, 80, 3, 0x0e0, 0x10, 7, 1),
247	PIN_FIELD_BASE(81, 81, 3, 0x0e0, 0x10, 8, 1),
248	PIN_FIELD_BASE(82, 82, 3, 0x0e0, 0x10, 9, 1),
249	PIN_FIELD_BASE(83, 83, 3, 0x0e0, 0x10, 10, 1),
250	PIN_FIELD_BASE(84, 84, 3, 0x0e0, 0x10, 11, 1),
251	PINS_FIELD_BASE(85, 88, 3, 0x0e0, 0x10, 14, 1),
252	PIN_FIELD_BASE(89, 89, 3, 0x0e0, 0x10, 2, 1),
253	PIN_FIELD_BASE(90, 90, 3, 0x0e0, 0x10, 3, 1),
254	PIN_FIELD_BASE(91, 91, 3, 0x0e0, 0x10, 4, 1),
255	PIN_FIELD_BASE(92, 92, 3, 0x0e0, 0x10, 5, 1),
256	PIN_FIELD_BASE(93, 93, 3, 0x0e0, 0x10, 12, 1),
257	PIN_FIELD_BASE(94, 94, 3, 0x0e0, 0x10, 13, 1),
258	PINS_FIELD_BASE(95, 98, 3, 0x0e0, 0x10, 15, 1),
259	PINS_FIELD_BASE(99, 102, 3, 0x0e0, 0x10, 16, 1),
260	PINS_FIELD_BASE(103, 104, 3, 0x0e0, 0x10, 17, 1),
261	PIN_FIELD_BASE(105, 105, 3, 0x0e0, 0x10, 18, 1),
262	PINS_FIELD_BASE(106, 107, 3, 0x0e0, 0x10, 17, 1),
263	PINS_FIELD_BASE(108, 109, 3, 0x0e0, 0x10, 18, 1),
264	PIN_FIELD_BASE(110, 110, 5, 0x070, 0x10, 1, 1),
265	PIN_FIELD_BASE(111, 111, 5, 0x070, 0x10, 0, 1),
266	PIN_FIELD_BASE(112, 112, 5, 0x070, 0x10, 2, 1),
267	PIN_FIELD_BASE(113, 113, 5, 0x070, 0x10, 3, 1),
268	PIN_FIELD_BASE(114, 114, 5, 0x070, 0x10, 4, 1),
269	PIN_FIELD_BASE(115, 115, 5, 0x070, 0x10, 5, 1),
270	PIN_FIELD_BASE(116, 116, 6, 0x0c0, 0x10, 9, 1),
271	PIN_FIELD_BASE(117, 117, 6, 0x0c0, 0x10, 8, 1),
272	PIN_FIELD_BASE(118, 118, 6, 0x0c0, 0x10, 7, 1),
273	PIN_FIELD_BASE(119, 119, 6, 0x0c0, 0x10, 6, 1),
274	PIN_FIELD_BASE(120, 120, 6, 0x0c0, 0x10, 11, 1),
275	PIN_FIELD_BASE(121, 121, 6, 0x0c0, 0x10, 1, 1),
276	PIN_FIELD_BASE(122, 122, 6, 0x0c0, 0x10, 0, 1),
277	PIN_FIELD_BASE(123, 123, 6, 0x0c0, 0x10, 5, 1),
278	PIN_FIELD_BASE(124, 124, 6, 0x0c0, 0x10, 4, 1),
279	PIN_FIELD_BASE(125, 125, 6, 0x0c0, 0x10, 3, 1),
280	PIN_FIELD_BASE(126, 126, 6, 0x0c0, 0x10, 2, 1),
281	PIN_FIELD_BASE(127, 127, 6, 0x0c0, 0x10, 10, 1),
282	PIN_FIELD_BASE(128, 128, 3, 0x0e0, 0x10, 18, 1),
283	PINS_FIELD_BASE(129, 131, 3, 0x0e0, 0x10, 19, 1),
284	PIN_FIELD_BASE(132, 132, 6, 0x0c0, 0x10, 13, 1),
285	PIN_FIELD_BASE(133, 133, 6, 0x0c0, 0x10, 12, 1),
286	PIN_FIELD_BASE(134, 134, 6, 0x0c0, 0x10, 15, 1),
287	PIN_FIELD_BASE(135, 135, 6, 0x0c0, 0x10, 14, 1),
288	PIN_FIELD_BASE(136, 136, 1, 0x0f0, 0x10, 18, 1),
289	PIN_FIELD_BASE(137, 137, 1, 0x0f0, 0x10, 17, 1),
290	PIN_FIELD_BASE(138, 138, 1, 0x0f0, 0x10, 20, 1),
291	PIN_FIELD_BASE(139, 139, 1, 0x0f0, 0x10, 19, 1),
292	PIN_FIELD_BASE(140, 140, 1, 0x0f0, 0x10, 22, 1),
293	PIN_FIELD_BASE(141, 141, 1, 0x0f0, 0x10, 21, 1),
294	PIN_FIELD_BASE(142, 142, 1, 0x0f0, 0x10, 24, 1),
295	PIN_FIELD_BASE(143, 143, 1, 0x0f0, 0x10, 23, 1),
296};
297
298static const struct mtk_pin_field_calc mt8195_pin_pu_range[] = {
299	PIN_FIELD_BASE(6, 6, 4, 0x0070, 0x10, 0, 1),
300	PIN_FIELD_BASE(7, 7, 4, 0x0070, 0x10, 1, 1),
301	PIN_FIELD_BASE(8, 8, 4, 0x0070, 0x10, 7, 1),
302	PIN_FIELD_BASE(9, 9, 4, 0x0070, 0x10, 2, 1),
303	PIN_FIELD_BASE(10, 10, 4, 0x0070, 0x10, 8, 1),
304	PIN_FIELD_BASE(11, 11, 4, 0x0070, 0x10, 3, 1),
305	PIN_FIELD_BASE(12, 12, 4, 0x0070, 0x10, 9, 1),
306	PIN_FIELD_BASE(13, 13, 4, 0x0070, 0x10, 4, 1),
307	PIN_FIELD_BASE(14, 14, 4, 0x0070, 0x10, 10, 1),
308	PIN_FIELD_BASE(15, 15, 4, 0x0070, 0x10, 5, 1),
309	PIN_FIELD_BASE(16, 16, 4, 0x0070, 0x10, 11, 1),
310	PIN_FIELD_BASE(17, 17, 4, 0x0070, 0x10, 6, 1),
311	PIN_FIELD_BASE(18, 18, 2, 0x0060, 0x10, 5, 1),
312	PIN_FIELD_BASE(19, 19, 2, 0x0060, 0x10, 12, 1),
313	PIN_FIELD_BASE(20, 20, 2, 0x0060, 0x10, 11, 1),
314	PIN_FIELD_BASE(21, 21, 2, 0x0060, 0x10, 10, 1),
315	PIN_FIELD_BASE(22, 22, 2, 0x0060, 0x10, 0, 1),
316	PIN_FIELD_BASE(23, 23, 2, 0x0060, 0x10, 1, 1),
317	PIN_FIELD_BASE(24, 24, 2, 0x0060, 0x10, 2, 1),
318	PIN_FIELD_BASE(25, 25, 2, 0x0060, 0x10, 4, 1),
319	PIN_FIELD_BASE(26, 26, 2, 0x0060, 0x10, 3, 1),
320	PIN_FIELD_BASE(27, 27, 2, 0x0060, 0x10, 6, 1),
321	PIN_FIELD_BASE(28, 28, 2, 0x0060, 0x10, 7, 1),
322	PIN_FIELD_BASE(29, 29, 2, 0x0060, 0x10, 8, 1),
323	PIN_FIELD_BASE(30, 30, 2, 0x0060, 0x10, 9, 1),
324	PIN_FIELD_BASE(31, 31, 1, 0x00a0, 0x10, 13, 1),
325	PIN_FIELD_BASE(32, 32, 1, 0x00a0, 0x10, 12, 1),
326	PIN_FIELD_BASE(33, 33, 1, 0x00a0, 0x10, 11, 1),
327	PIN_FIELD_BASE(34, 34, 1, 0x00a0, 0x10, 14, 1),
328	PIN_FIELD_BASE(35, 35, 1, 0x00a0, 0x10, 15, 1),
329	PIN_FIELD_BASE(36, 36, 1, 0x00b0, 0x10, 3, 1),
330	PIN_FIELD_BASE(37, 37, 1, 0x00b0, 0x10, 6, 1),
331	PIN_FIELD_BASE(38, 38, 1, 0x00b0, 0x10, 4, 1),
332	PIN_FIELD_BASE(39, 39, 1, 0x00b0, 0x10, 5, 1),
333	PIN_FIELD_BASE(40, 40, 1, 0x00b0, 0x10, 8, 1),
334	PIN_FIELD_BASE(41, 41, 1, 0x00b0, 0x10, 7, 1),
335	PIN_FIELD_BASE(42, 42, 1, 0x00b0, 0x10, 10, 1),
336	PIN_FIELD_BASE(43, 43, 1, 0x00b0, 0x10, 9, 1),
337	PIN_FIELD_BASE(44, 44, 1, 0x00b0, 0x10, 21, 1),
338	PIN_FIELD_BASE(45, 45, 1, 0x00b0, 0x10, 22, 1),
339	PIN_FIELD_BASE(46, 46, 1, 0x00a0, 0x10, 18, 1),
340	PIN_FIELD_BASE(47, 47, 1, 0x00a0, 0x10, 16, 1),
341	PIN_FIELD_BASE(48, 48, 1, 0x00a0, 0x10, 19, 1),
342	PIN_FIELD_BASE(49, 49, 1, 0x00a0, 0x10, 17, 1),
343	PIN_FIELD_BASE(50, 50, 1, 0x00a0, 0x10, 25, 1),
344	PIN_FIELD_BASE(51, 51, 1, 0x00a0, 0x10, 20, 1),
345	PIN_FIELD_BASE(52, 52, 1, 0x00a0, 0x10, 26, 1),
346	PIN_FIELD_BASE(53, 53, 1, 0x00a0, 0x10, 21, 1),
347	PIN_FIELD_BASE(54, 54, 1, 0x00a0, 0x10, 22, 1),
348	PIN_FIELD_BASE(55, 55, 1, 0x00a0, 0x10, 23, 1),
349	PIN_FIELD_BASE(56, 56, 1, 0x00a0, 0x10, 24, 1),
350	PIN_FIELD_BASE(57, 57, 1, 0x00a0, 0x10, 29, 1),
351	PIN_FIELD_BASE(58, 58, 1, 0x00a0, 0x10, 27, 1),
352	PIN_FIELD_BASE(59, 59, 1, 0x00a0, 0x10, 30, 1),
353	PIN_FIELD_BASE(60, 60, 1, 0x00a0, 0x10, 28, 1),
354	PIN_FIELD_BASE(61, 61, 1, 0x00a0, 0x10, 8, 1),
355	PIN_FIELD_BASE(62, 62, 1, 0x00a0, 0x10, 7, 1),
356	PIN_FIELD_BASE(63, 63, 1, 0x00a0, 0x10, 10, 1),
357	PIN_FIELD_BASE(64, 64, 1, 0x00a0, 0x10, 9, 1),
358	PIN_FIELD_BASE(65, 65, 1, 0x00b0, 0x10, 1, 1),
359	PIN_FIELD_BASE(66, 66, 1, 0x00a0, 0x10, 31, 1),
360	PIN_FIELD_BASE(67, 67, 1, 0x00b0, 0x10, 0, 1),
361	PIN_FIELD_BASE(68, 68, 1, 0x00b0, 0x10, 2, 1),
362	PIN_FIELD_BASE(69, 69, 1, 0x00a0, 0x10, 0, 1),
363	PIN_FIELD_BASE(70, 70, 1, 0x00a0, 0x10, 6, 1),
364	PIN_FIELD_BASE(71, 71, 1, 0x00a0, 0x10, 4, 1),
365	PIN_FIELD_BASE(72, 72, 1, 0x00a0, 0x10, 5, 1),
366	PIN_FIELD_BASE(73, 73, 1, 0x00a0, 0x10, 1, 1),
367	PIN_FIELD_BASE(74, 74, 1, 0x00a0, 0x10, 2, 1),
368	PIN_FIELD_BASE(75, 75, 1, 0x00a0, 0x10, 3, 1),
369	PIN_FIELD_BASE(76, 76, 1, 0x00b0, 0x10, 11, 1),
370	PIN_FIELD_BASE(97, 97, 3, 0x0070, 0x10, 0, 1),
371	PIN_FIELD_BASE(98, 98, 3, 0x0070, 0x10, 4, 1),
372	PIN_FIELD_BASE(99, 99, 3, 0x0070, 0x10, 3, 1),
373	PIN_FIELD_BASE(100, 100, 3, 0x0070, 0x10, 6, 1),
374	PIN_FIELD_BASE(101, 101, 3, 0x0070, 0x10, 5, 1),
375	PIN_FIELD_BASE(102, 102, 3, 0x0070, 0x10, 8, 1),
376	PIN_FIELD_BASE(103, 103, 3, 0x0070, 0x10, 7, 1),
377	PIN_FIELD_BASE(108, 108, 3, 0x0070, 0x10, 2, 1),
378	PIN_FIELD_BASE(109, 109, 3, 0x0070, 0x10, 1, 1),
379	PIN_FIELD_BASE(128, 128, 3, 0x0070, 0x10, 11, 1),
380	PIN_FIELD_BASE(129, 129, 3, 0x0070, 0x10, 9, 1),
381	PIN_FIELD_BASE(130, 130, 3, 0x0070, 0x10, 12, 1),
382	PIN_FIELD_BASE(131, 131, 3, 0x0070, 0x10, 10, 1),
383	PIN_FIELD_BASE(132, 132, 6, 0x0060, 0x10, 1, 1),
384	PIN_FIELD_BASE(133, 133, 6, 0x0060, 0x10, 0, 1),
385	PIN_FIELD_BASE(134, 134, 6, 0x0060, 0x10, 3, 1),
386	PIN_FIELD_BASE(135, 135, 6, 0x0060, 0x10, 2, 1),
387	PIN_FIELD_BASE(136, 136, 1, 0x00b0, 0x10, 14, 1),
388	PIN_FIELD_BASE(137, 137, 1, 0x00b0, 0x10, 13, 1),
389	PIN_FIELD_BASE(138, 138, 1, 0x00b0, 0x10, 16, 1),
390	PIN_FIELD_BASE(139, 139, 1, 0x00b0, 0x10, 15, 1),
391	PIN_FIELD_BASE(140, 140, 1, 0x00b0, 0x10, 18, 1),
392	PIN_FIELD_BASE(141, 141, 1, 0x00b0, 0x10, 17, 1),
393	PIN_FIELD_BASE(142, 142, 1, 0x00b0, 0x10, 20, 1),
394	PIN_FIELD_BASE(143, 143, 1, 0x00b0, 0x10, 19, 1),
395};
396
397static const struct mtk_pin_field_calc mt8195_pin_pd_range[] = {
398	PIN_FIELD_BASE(6, 6, 4, 0x0050, 0x10, 0, 1),
399	PIN_FIELD_BASE(7, 7, 4, 0x0050, 0x10, 1, 1),
400	PIN_FIELD_BASE(8, 8, 4, 0x0050, 0x10, 7, 1),
401	PIN_FIELD_BASE(9, 9, 4, 0x0050, 0x10, 2, 1),
402	PIN_FIELD_BASE(10, 10, 4, 0x0050, 0x10, 8, 1),
403	PIN_FIELD_BASE(11, 11, 4, 0x0050, 0x10, 3, 1),
404	PIN_FIELD_BASE(12, 12, 4, 0x0050, 0x10, 9, 1),
405	PIN_FIELD_BASE(13, 13, 4, 0x0050, 0x10, 4, 1),
406	PIN_FIELD_BASE(14, 14, 4, 0x0050, 0x10, 10, 1),
407	PIN_FIELD_BASE(15, 15, 4, 0x0050, 0x10, 5, 1),
408	PIN_FIELD_BASE(16, 16, 4, 0x0050, 0x10, 11, 1),
409	PIN_FIELD_BASE(17, 17, 4, 0x0050, 0x10, 6, 1),
410	PIN_FIELD_BASE(18, 18, 2, 0x0050, 0x10, 5, 1),
411	PIN_FIELD_BASE(19, 19, 2, 0x0050, 0x10, 12, 1),
412	PIN_FIELD_BASE(20, 20, 2, 0x0050, 0x10, 11, 1),
413	PIN_FIELD_BASE(21, 21, 2, 0x0050, 0x10, 10, 1),
414	PIN_FIELD_BASE(22, 22, 2, 0x0050, 0x10, 0, 1),
415	PIN_FIELD_BASE(23, 23, 2, 0x0050, 0x10, 1, 1),
416	PIN_FIELD_BASE(24, 24, 2, 0x0050, 0x10, 2, 1),
417	PIN_FIELD_BASE(25, 25, 2, 0x0050, 0x10, 4, 1),
418	PIN_FIELD_BASE(26, 26, 2, 0x0050, 0x10, 3, 1),
419	PIN_FIELD_BASE(27, 27, 2, 0x0050, 0x10, 6, 1),
420	PIN_FIELD_BASE(28, 28, 2, 0x0050, 0x10, 7, 1),
421	PIN_FIELD_BASE(29, 29, 2, 0x0050, 0x10, 8, 1),
422	PIN_FIELD_BASE(30, 30, 2, 0x0050, 0x10, 9, 1),
423	PIN_FIELD_BASE(31, 31, 1, 0x0080, 0x10, 13, 1),
424	PIN_FIELD_BASE(32, 32, 1, 0x0080, 0x10, 12, 1),
425	PIN_FIELD_BASE(33, 33, 1, 0x0080, 0x10, 11, 1),
426	PIN_FIELD_BASE(34, 34, 1, 0x0080, 0x10, 14, 1),
427	PIN_FIELD_BASE(35, 35, 1, 0x0080, 0x10, 15, 1),
428	PIN_FIELD_BASE(36, 36, 1, 0x0090, 0x10, 3, 1),
429	PIN_FIELD_BASE(37, 37, 1, 0x0090, 0x10, 6, 1),
430	PIN_FIELD_BASE(38, 38, 1, 0x0090, 0x10, 4, 1),
431	PIN_FIELD_BASE(39, 39, 1, 0x0090, 0x10, 5, 1),
432	PIN_FIELD_BASE(40, 40, 1, 0x0090, 0x10, 8, 1),
433	PIN_FIELD_BASE(41, 41, 1, 0x0090, 0x10, 7, 1),
434	PIN_FIELD_BASE(42, 42, 1, 0x0090, 0x10, 10, 1),
435	PIN_FIELD_BASE(43, 43, 1, 0x0090, 0x10, 9, 1),
436	PIN_FIELD_BASE(44, 44, 1, 0x0090, 0x10, 21, 1),
437	PIN_FIELD_BASE(45, 45, 1, 0x0090, 0x10, 22, 1),
438	PIN_FIELD_BASE(46, 46, 1, 0x0080, 0x10, 18, 1),
439	PIN_FIELD_BASE(47, 47, 1, 0x0080, 0x10, 16, 1),
440	PIN_FIELD_BASE(48, 48, 1, 0x0080, 0x10, 19, 1),
441	PIN_FIELD_BASE(49, 49, 1, 0x0080, 0x10, 17, 1),
442	PIN_FIELD_BASE(50, 50, 1, 0x0080, 0x10, 25, 1),
443	PIN_FIELD_BASE(51, 51, 1, 0x0080, 0x10, 20, 1),
444	PIN_FIELD_BASE(52, 52, 1, 0x0080, 0x10, 26, 1),
445	PIN_FIELD_BASE(53, 53, 1, 0x0080, 0x10, 21, 1),
446	PIN_FIELD_BASE(54, 54, 1, 0x0080, 0x10, 22, 1),
447	PIN_FIELD_BASE(55, 55, 1, 0x0080, 0x10, 23, 1),
448	PIN_FIELD_BASE(56, 56, 1, 0x0080, 0x10, 24, 1),
449	PIN_FIELD_BASE(57, 57, 1, 0x0080, 0x10, 29, 1),
450	PIN_FIELD_BASE(58, 58, 1, 0x0080, 0x10, 27, 1),
451	PIN_FIELD_BASE(59, 59, 1, 0x0080, 0x10, 30, 1),
452	PIN_FIELD_BASE(60, 60, 1, 0x0080, 0x10, 28, 1),
453	PIN_FIELD_BASE(61, 61, 1, 0x0080, 0x10, 8, 1),
454	PIN_FIELD_BASE(62, 62, 1, 0x0080, 0x10, 7, 1),
455	PIN_FIELD_BASE(63, 63, 1, 0x0080, 0x10, 10, 1),
456	PIN_FIELD_BASE(64, 64, 1, 0x0080, 0x10, 9, 1),
457	PIN_FIELD_BASE(65, 65, 1, 0x0090, 0x10, 1, 1),
458	PIN_FIELD_BASE(66, 66, 1, 0x0080, 0x10, 31, 1),
459	PIN_FIELD_BASE(67, 67, 1, 0x0090, 0x10, 0, 1),
460	PIN_FIELD_BASE(68, 68, 1, 0x0090, 0x10, 2, 1),
461	PIN_FIELD_BASE(69, 69, 1, 0x0080, 0x10, 0, 1),
462	PIN_FIELD_BASE(70, 70, 1, 0x0080, 0x10, 6, 1),
463	PIN_FIELD_BASE(71, 71, 1, 0x0080, 0x10, 4, 1),
464	PIN_FIELD_BASE(72, 72, 1, 0x0080, 0x10, 5, 1),
465	PIN_FIELD_BASE(73, 73, 1, 0x0080, 0x10, 1, 1),
466	PIN_FIELD_BASE(74, 74, 1, 0x0080, 0x10, 2, 1),
467	PIN_FIELD_BASE(75, 75, 1, 0x0080, 0x10, 3, 1),
468	PIN_FIELD_BASE(76, 76, 1, 0x0090, 0x10, 11, 1),
469	PIN_FIELD_BASE(97, 97, 3, 0x0050, 0x10, 0, 1),
470	PIN_FIELD_BASE(98, 98, 3, 0x0050, 0x10, 4, 1),
471	PIN_FIELD_BASE(99, 99, 3, 0x0050, 0x10, 3, 1),
472	PIN_FIELD_BASE(100, 100, 3, 0x0050, 0x10, 6, 1),
473	PIN_FIELD_BASE(101, 101, 3, 0x0050, 0x10, 5, 1),
474	PIN_FIELD_BASE(102, 102, 3, 0x0050, 0x10, 8, 1),
475	PIN_FIELD_BASE(103, 103, 3, 0x0050, 0x10, 7, 1),
476	PIN_FIELD_BASE(108, 108, 3, 0x0050, 0x10, 2, 1),
477	PIN_FIELD_BASE(109, 109, 3, 0x0050, 0x10, 1, 1),
478	PIN_FIELD_BASE(128, 128, 3, 0x0050, 0x10, 11, 1),
479	PIN_FIELD_BASE(129, 129, 3, 0x0050, 0x10, 9, 1),
480	PIN_FIELD_BASE(130, 130, 3, 0x0050, 0x10, 12, 1),
481	PIN_FIELD_BASE(131, 131, 3, 0x0050, 0x10, 10, 1),
482	PIN_FIELD_BASE(132, 132, 6, 0x0040, 0x10, 1, 1),
483	PIN_FIELD_BASE(133, 133, 6, 0x0040, 0x10, 0, 1),
484	PIN_FIELD_BASE(134, 134, 6, 0x0040, 0x10, 3, 1),
485	PIN_FIELD_BASE(135, 135, 6, 0x0040, 0x10, 2, 1),
486	PIN_FIELD_BASE(136, 136, 1, 0x0090, 0x10, 14, 1),
487	PIN_FIELD_BASE(137, 137, 1, 0x0090, 0x10, 13, 1),
488	PIN_FIELD_BASE(138, 138, 1, 0x0090, 0x10, 16, 1),
489	PIN_FIELD_BASE(139, 139, 1, 0x0090, 0x10, 15, 1),
490	PIN_FIELD_BASE(140, 140, 1, 0x0090, 0x10, 18, 1),
491	PIN_FIELD_BASE(141, 141, 1, 0x0090, 0x10, 17, 1),
492	PIN_FIELD_BASE(142, 142, 1, 0x0090, 0x10, 20, 1),
493	PIN_FIELD_BASE(143, 143, 1, 0x0090, 0x10, 19, 1),
494};
495
496static const struct mtk_pin_field_calc mt8195_pin_pupd_range[] = {
497	PIN_FIELD_BASE(0, 0, 4, 0x0060, 0x10, 0, 1),
498	PIN_FIELD_BASE(1, 1, 4, 0x0060, 0x10, 1, 1),
499	PIN_FIELD_BASE(2, 2, 4, 0x0060, 0x10, 2, 1),
500	PIN_FIELD_BASE(3, 3, 4, 0x0060, 0x10, 3, 1),
501	PIN_FIELD_BASE(4, 4, 4, 0x0060, 0x10, 4, 1),
502	PIN_FIELD_BASE(5, 5, 4, 0x0060, 0x10, 5, 1),
503	PIN_FIELD_BASE(77, 77, 3, 0x0060, 0x10, 1, 1),
504	PIN_FIELD_BASE(78, 78, 3, 0x0060, 0x10, 2, 1),
505	PIN_FIELD_BASE(79, 79, 3, 0x0060, 0x10, 9, 1),
506	PIN_FIELD_BASE(80, 80, 3, 0x0060, 0x10, 10, 1),
507	PIN_FIELD_BASE(81, 81, 3, 0x0060, 0x10, 11, 1),
508	PIN_FIELD_BASE(82, 82, 3, 0x0060, 0x10, 12, 1),
509	PIN_FIELD_BASE(83, 83, 3, 0x0060, 0x10, 13, 1),
510	PIN_FIELD_BASE(84, 84, 3, 0x0060, 0x10, 14, 1),
511	PIN_FIELD_BASE(85, 85, 3, 0x0060, 0x10, 15, 1),
512	PIN_FIELD_BASE(86, 86, 3, 0x0060, 0x10, 16, 1),
513	PIN_FIELD_BASE(87, 87, 3, 0x0060, 0x10, 3, 1),
514	PIN_FIELD_BASE(88, 88, 3, 0x0060, 0x10, 4, 1),
515	PIN_FIELD_BASE(89, 89, 3, 0x0060, 0x10, 5, 1),
516	PIN_FIELD_BASE(90, 90, 3, 0x0060, 0x10, 6, 1),
517	PIN_FIELD_BASE(91, 91, 3, 0x0060, 0x10, 7, 1),
518	PIN_FIELD_BASE(92, 92, 3, 0x0060, 0x10, 8, 1),
519	PIN_FIELD_BASE(93, 93, 3, 0x0060, 0x10, 18, 1),
520	PIN_FIELD_BASE(94, 94, 3, 0x0060, 0x10, 19, 1),
521	PIN_FIELD_BASE(95, 95, 3, 0x0060, 0x10, 17, 1),
522	PIN_FIELD_BASE(96, 96, 3, 0x0060, 0x10, 0, 1),
523	PIN_FIELD_BASE(104, 104, 3, 0x0060, 0x10, 22, 1),
524	PIN_FIELD_BASE(105, 105, 3, 0x0060, 0x10, 23, 1),
525	PIN_FIELD_BASE(106, 106, 3, 0x0060, 0x10, 20, 1),
526	PIN_FIELD_BASE(107, 107, 3, 0x0060, 0x10, 21, 1),
527	PIN_FIELD_BASE(110, 110, 5, 0x0020, 0x10, 1, 1),
528	PIN_FIELD_BASE(111, 111, 5, 0x0020, 0x10, 0, 1),
529	PIN_FIELD_BASE(112, 112, 5, 0x0020, 0x10, 2, 1),
530	PIN_FIELD_BASE(113, 113, 5, 0x0020, 0x10, 3, 1),
531	PIN_FIELD_BASE(114, 114, 5, 0x0020, 0x10, 4, 1),
532	PIN_FIELD_BASE(115, 115, 5, 0x0020, 0x10, 5, 1),
533	PIN_FIELD_BASE(116, 116, 6, 0x0050, 0x10, 9, 1),
534	PIN_FIELD_BASE(117, 117, 6, 0x0050, 0x10, 8, 1),
535	PIN_FIELD_BASE(118, 118, 6, 0x0050, 0x10, 7, 1),
536	PIN_FIELD_BASE(119, 119, 6, 0x0050, 0x10, 6, 1),
537	PIN_FIELD_BASE(120, 120, 6, 0x0050, 0x10, 11, 1),
538	PIN_FIELD_BASE(121, 121, 6, 0x0050, 0x10, 1, 1),
539	PIN_FIELD_BASE(122, 122, 6, 0x0050, 0x10, 0, 1),
540	PIN_FIELD_BASE(123, 123, 6, 0x0050, 0x10, 5, 1),
541	PIN_FIELD_BASE(124, 124, 6, 0x0050, 0x10, 4, 1),
542	PIN_FIELD_BASE(125, 125, 6, 0x0050, 0x10, 3, 1),
543	PIN_FIELD_BASE(126, 126, 6, 0x0050, 0x10, 2, 1),
544	PIN_FIELD_BASE(127, 127, 6, 0x0050, 0x10, 10, 1),
545};
546
547static const struct mtk_pin_field_calc mt8195_pin_r0_range[] = {
548	PIN_FIELD_BASE(0, 0, 4, 0x0080, 0x10, 0, 1),
549	PIN_FIELD_BASE(1, 1, 4, 0x0080, 0x10, 1, 1),
550	PIN_FIELD_BASE(2, 2, 4, 0x0080, 0x10, 2, 1),
551	PIN_FIELD_BASE(3, 3, 4, 0x0080, 0x10, 3, 1),
552	PIN_FIELD_BASE(4, 4, 4, 0x0080, 0x10, 4, 1),
553	PIN_FIELD_BASE(5, 5, 4, 0x0080, 0x10, 5, 1),
554	PIN_FIELD_BASE(77, 77, 3, 0x0080, 0x10, 1, 1),
555	PIN_FIELD_BASE(78, 78, 3, 0x0080, 0x10, 2, 1),
556	PIN_FIELD_BASE(79, 79, 3, 0x0080, 0x10, 9, 1),
557	PIN_FIELD_BASE(80, 80, 3, 0x0080, 0x10, 10, 1),
558	PIN_FIELD_BASE(81, 81, 3, 0x0080, 0x10, 11, 1),
559	PIN_FIELD_BASE(82, 82, 3, 0x0080, 0x10, 12, 1),
560	PIN_FIELD_BASE(83, 83, 3, 0x0080, 0x10, 13, 1),
561	PIN_FIELD_BASE(84, 84, 3, 0x0080, 0x10, 14, 1),
562	PIN_FIELD_BASE(85, 85, 3, 0x0080, 0x10, 15, 1),
563	PIN_FIELD_BASE(86, 86, 3, 0x0080, 0x10, 16, 1),
564	PIN_FIELD_BASE(87, 87, 3, 0x0080, 0x10, 3, 1),
565	PIN_FIELD_BASE(88, 88, 3, 0x0080, 0x10, 4, 1),
566	PIN_FIELD_BASE(89, 89, 3, 0x0080, 0x10, 5, 1),
567	PIN_FIELD_BASE(90, 90, 3, 0x0080, 0x10, 6, 1),
568	PIN_FIELD_BASE(91, 91, 3, 0x0080, 0x10, 7, 1),
569	PIN_FIELD_BASE(92, 92, 3, 0x0080, 0x10, 8, 1),
570	PIN_FIELD_BASE(93, 93, 3, 0x0080, 0x10, 18, 1),
571	PIN_FIELD_BASE(94, 94, 3, 0x0080, 0x10, 19, 1),
572	PIN_FIELD_BASE(95, 95, 3, 0x0080, 0x10, 17, 1),
573	PIN_FIELD_BASE(96, 96, 3, 0x0080, 0x10, 0, 1),
574	PIN_FIELD_BASE(104, 104, 3, 0x0080, 0x10, 22, 1),
575	PIN_FIELD_BASE(105, 105, 3, 0x0080, 0x10, 23, 1),
576	PIN_FIELD_BASE(106, 106, 3, 0x0080, 0x10, 20, 1),
577	PIN_FIELD_BASE(107, 107, 3, 0x0080, 0x10, 21, 1),
578	PIN_FIELD_BASE(110, 110, 5, 0x0030, 0x10, 1, 1),
579	PIN_FIELD_BASE(111, 111, 5, 0x0030, 0x10, 0, 1),
580	PIN_FIELD_BASE(112, 112, 5, 0x0030, 0x10, 2, 1),
581	PIN_FIELD_BASE(113, 113, 5, 0x0030, 0x10, 3, 1),
582	PIN_FIELD_BASE(114, 114, 5, 0x0030, 0x10, 4, 1),
583	PIN_FIELD_BASE(115, 115, 5, 0x0030, 0x10, 5, 1),
584	PIN_FIELD_BASE(116, 116, 6, 0x0070, 0x10, 9, 1),
585	PIN_FIELD_BASE(117, 117, 6, 0x0070, 0x10, 8, 1),
586	PIN_FIELD_BASE(118, 118, 6, 0x0070, 0x10, 7, 1),
587	PIN_FIELD_BASE(119, 119, 6, 0x0070, 0x10, 6, 1),
588	PIN_FIELD_BASE(120, 120, 6, 0x0070, 0x10, 11, 1),
589	PIN_FIELD_BASE(121, 121, 6, 0x0070, 0x10, 1, 1),
590	PIN_FIELD_BASE(122, 122, 6, 0x0070, 0x10, 0, 1),
591	PIN_FIELD_BASE(123, 123, 6, 0x0070, 0x10, 5, 1),
592	PIN_FIELD_BASE(124, 124, 6, 0x0070, 0x10, 4, 1),
593	PIN_FIELD_BASE(125, 125, 6, 0x0070, 0x10, 3, 1),
594	PIN_FIELD_BASE(126, 126, 6, 0x0070, 0x10, 2, 1),
595	PIN_FIELD_BASE(127, 127, 6, 0x0070, 0x10, 10, 1),
596};
597
598static const struct mtk_pin_field_calc mt8195_pin_r1_range[] = {
599	PIN_FIELD_BASE(0, 0, 4, 0x0090, 0x10, 0, 1),
600	PIN_FIELD_BASE(1, 1, 4, 0x0090, 0x10, 1, 1),
601	PIN_FIELD_BASE(2, 2, 4, 0x0090, 0x10, 2, 1),
602	PIN_FIELD_BASE(3, 3, 4, 0x0090, 0x10, 3, 1),
603	PIN_FIELD_BASE(4, 4, 4, 0x0090, 0x10, 4, 1),
604	PIN_FIELD_BASE(5, 5, 4, 0x0090, 0x10, 5, 1),
605	PIN_FIELD_BASE(77, 77, 3, 0x0090, 0x10, 1, 1),
606	PIN_FIELD_BASE(78, 78, 3, 0x0090, 0x10, 2, 1),
607	PIN_FIELD_BASE(79, 79, 3, 0x0090, 0x10, 9, 1),
608	PIN_FIELD_BASE(80, 80, 3, 0x0090, 0x10, 10, 1),
609	PIN_FIELD_BASE(81, 81, 3, 0x0090, 0x10, 11, 1),
610	PIN_FIELD_BASE(82, 82, 3, 0x0090, 0x10, 12, 1),
611	PIN_FIELD_BASE(83, 83, 3, 0x0090, 0x10, 13, 1),
612	PIN_FIELD_BASE(84, 84, 3, 0x0090, 0x10, 14, 1),
613	PIN_FIELD_BASE(85, 85, 3, 0x0090, 0x10, 15, 1),
614	PIN_FIELD_BASE(86, 86, 3, 0x0090, 0x10, 16, 1),
615	PIN_FIELD_BASE(87, 87, 3, 0x0090, 0x10, 3, 1),
616	PIN_FIELD_BASE(88, 88, 3, 0x0090, 0x10, 4, 1),
617	PIN_FIELD_BASE(89, 89, 3, 0x0090, 0x10, 5, 1),
618	PIN_FIELD_BASE(90, 90, 3, 0x0090, 0x10, 6, 1),
619	PIN_FIELD_BASE(91, 91, 3, 0x0090, 0x10, 7, 1),
620	PIN_FIELD_BASE(92, 92, 3, 0x0090, 0x10, 8, 1),
621	PIN_FIELD_BASE(93, 93, 3, 0x0090, 0x10, 18, 1),
622	PIN_FIELD_BASE(94, 94, 3, 0x0090, 0x10, 19, 1),
623	PIN_FIELD_BASE(95, 95, 3, 0x0090, 0x10, 17, 1),
624	PIN_FIELD_BASE(96, 96, 3, 0x0090, 0x10, 0, 1),
625	PIN_FIELD_BASE(104, 104, 3, 0x0090, 0x10, 22, 1),
626	PIN_FIELD_BASE(105, 105, 3, 0x0090, 0x10, 23, 1),
627	PIN_FIELD_BASE(106, 106, 3, 0x0090, 0x10, 20, 1),
628	PIN_FIELD_BASE(107, 107, 3, 0x0090, 0x10, 21, 1),
629	PIN_FIELD_BASE(110, 110, 5, 0x0040, 0x10, 1, 1),
630	PIN_FIELD_BASE(111, 111, 5, 0x0040, 0x10, 0, 1),
631	PIN_FIELD_BASE(112, 112, 5, 0x0040, 0x10, 2, 1),
632	PIN_FIELD_BASE(113, 113, 5, 0x0040, 0x10, 3, 1),
633	PIN_FIELD_BASE(114, 114, 5, 0x0040, 0x10, 4, 1),
634	PIN_FIELD_BASE(115, 115, 5, 0x0040, 0x10, 5, 1),
635	PIN_FIELD_BASE(116, 116, 6, 0x0080, 0x10, 9, 1),
636	PIN_FIELD_BASE(117, 117, 6, 0x0080, 0x10, 8, 1),
637	PIN_FIELD_BASE(118, 118, 6, 0x0080, 0x10, 7, 1),
638	PIN_FIELD_BASE(119, 119, 6, 0x0080, 0x10, 6, 1),
639	PIN_FIELD_BASE(120, 120, 6, 0x0080, 0x10, 11, 1),
640	PIN_FIELD_BASE(121, 121, 6, 0x0080, 0x10, 1, 1),
641	PIN_FIELD_BASE(122, 122, 6, 0x0080, 0x10, 0, 1),
642	PIN_FIELD_BASE(123, 123, 6, 0x0080, 0x10, 5, 1),
643	PIN_FIELD_BASE(124, 124, 6, 0x0080, 0x10, 4, 1),
644	PIN_FIELD_BASE(125, 125, 6, 0x0080, 0x10, 3, 1),
645	PIN_FIELD_BASE(126, 126, 6, 0x0080, 0x10, 2, 1),
646	PIN_FIELD_BASE(127, 127, 6, 0x0080, 0x10, 10, 1),
647};
648
649static const struct mtk_pin_field_calc mt8195_pin_drv_range[] = {
650	PIN_FIELD_BASE(0, 0, 4, 0x000, 0x10, 0, 3),
651	PIN_FIELD_BASE(1, 1, 4, 0x000, 0x10, 3, 3),
652	PIN_FIELD_BASE(2, 2, 4, 0x000, 0x10, 6, 3),
653	PIN_FIELD_BASE(3, 3, 4, 0x000, 0x10, 9, 3),
654	PIN_FIELD_BASE(4, 4, 4, 0x000, 0x10, 12, 3),
655	PIN_FIELD_BASE(5, 5, 4, 0x000, 0x10, 15, 3),
656	PINS_FIELD_BASE(6, 7, 4, 0x000, 0x10, 18, 3),
657	PIN_FIELD_BASE(8, 8, 4, 0x010, 0x10, 6, 3),
658	PIN_FIELD_BASE(9, 9, 4, 0x000, 0x10, 21, 3),
659	PIN_FIELD_BASE(10, 10, 4, 0x010, 0x10, 9, 3),
660	PIN_FIELD_BASE(11, 11, 4, 0x000, 0x10, 24, 3),
661	PIN_FIELD_BASE(12, 12, 4, 0x010, 0x10, 12, 3),
662	PIN_FIELD_BASE(13, 13, 4, 0x000, 0x10, 27, 3),
663	PIN_FIELD_BASE(14, 14, 4, 0x010, 0x10, 15, 3),
664	PIN_FIELD_BASE(15, 15, 4, 0x010, 0x10, 0, 3),
665	PIN_FIELD_BASE(16, 16, 4, 0x010, 0x10, 18, 3),
666	PIN_FIELD_BASE(17, 17, 4, 0x010, 0x10, 3, 3),
667	PIN_FIELD_BASE(18, 18, 2, 0x010, 0x10, 6, 3),
668	PIN_FIELD_BASE(19, 19, 2, 0x010, 0x10, 3, 3),
669	PIN_FIELD_BASE(20, 20, 2, 0x010, 0x10, 0, 3),
670	PIN_FIELD_BASE(21, 21, 2, 0x000, 0x10, 27, 3),
671	PIN_FIELD_BASE(22, 22, 2, 0x000, 0x10, 0, 3),
672	PIN_FIELD_BASE(23, 23, 2, 0x000, 0x10, 3, 3),
673	PIN_FIELD_BASE(24, 24, 2, 0x000, 0x10, 6, 3),
674	PIN_FIELD_BASE(25, 25, 2, 0x000, 0x10, 12, 3),
675	PIN_FIELD_BASE(26, 26, 2, 0x000, 0x10, 9, 3),
676	PIN_FIELD_BASE(27, 27, 2, 0x000, 0x10, 15, 3),
677	PIN_FIELD_BASE(28, 28, 2, 0x000, 0x10, 18, 3),
678	PIN_FIELD_BASE(29, 29, 2, 0x000, 0x10, 21, 3),
679	PIN_FIELD_BASE(30, 30, 2, 0x000, 0x10, 24, 3),
680	PINS_FIELD_BASE(31, 33, 1, 0x010, 0x10, 0, 3),
681	PIN_FIELD_BASE(34, 34, 1, 0x000, 0x10, 21, 3),
682	PIN_FIELD_BASE(35, 35, 1, 0x000, 0x10, 24, 3),
683	PIN_FIELD_BASE(36, 36, 1, 0x010, 0x10, 0, 3),
684	PIN_FIELD_BASE(37, 37, 1, 0x010, 0x10, 21, 3),
685	PINS_FIELD_BASE(38, 39, 1, 0x010, 0x10, 3, 3),
686	PIN_FIELD_BASE(40, 40, 1, 0x010, 0x10, 27, 3),
687	PIN_FIELD_BASE(41, 41, 1, 0x010, 0x10, 24, 3),
688	PIN_FIELD_BASE(42, 42, 1, 0x020, 0x10, 3, 3),
689	PIN_FIELD_BASE(43, 43, 1, 0x020, 0x10, 0, 3),
690	PIN_FIELD_BASE(44, 44, 1, 0x030, 0x10, 0, 3),
691	PIN_FIELD_BASE(45, 45, 1, 0x030, 0x10, 3, 3),
692	PINS_FIELD_BASE(46, 47, 1, 0x010, 0x10, 3, 3),
693	PINS_FIELD_BASE(48, 51, 1, 0x010, 0x10, 6, 3),
694	PINS_FIELD_BASE(52, 55, 1, 0x010, 0x10, 9, 3),
695	PINS_FIELD_BASE(56, 59, 1, 0x010, 0x10, 12, 3),
696	PINS_FIELD_BASE(60, 63, 1, 0x010, 0x10, 15, 3),
697	PIN_FIELD_BASE(64, 64, 1, 0x010, 0x10, 18, 3),
698	PINS_FIELD_BASE(65, 68, 1, 0x000, 0x10, 27, 3),
699	PIN_FIELD_BASE(69, 69, 1, 0x000, 0x10, 0, 3),
700	PIN_FIELD_BASE(70, 70, 1, 0x000, 0x10, 18, 3),
701	PIN_FIELD_BASE(71, 71, 1, 0x000, 0x10, 12, 3),
702	PIN_FIELD_BASE(72, 72, 1, 0x000, 0x10, 15, 3),
703	PIN_FIELD_BASE(73, 73, 1, 0x000, 0x10, 3, 3),
704	PIN_FIELD_BASE(74, 74, 1, 0x000, 0x10, 6, 3),
705	PIN_FIELD_BASE(75, 75, 1, 0x000, 0x10, 9, 3),
706	PIN_FIELD_BASE(76, 76, 1, 0x010, 0x10, 18, 3),
707	PIN_FIELD_BASE(77, 77, 3, 0x000, 0x10, 0, 3),
708	PIN_FIELD_BASE(78, 78, 3, 0x000, 0x10, 15, 3),
709	PIN_FIELD_BASE(79, 79, 3, 0x000, 0x10, 18, 3),
710	PIN_FIELD_BASE(80, 80, 3, 0x000, 0x10, 21, 3),
711	PIN_FIELD_BASE(81, 81, 3, 0x000, 0x10, 24, 3),
712	PIN_FIELD_BASE(82, 82, 3, 0x000, 0x10, 27, 3),
713	PIN_FIELD_BASE(83, 83, 3, 0x010, 0x10, 0, 3),
714	PIN_FIELD_BASE(84, 84, 3, 0x010, 0x10, 3, 3),
715	PINS_FIELD_BASE(85, 88, 3, 0x010, 0x10, 15, 3),
716	PIN_FIELD_BASE(89, 89, 3, 0x000, 0x10, 3, 3),
717	PIN_FIELD_BASE(90, 90, 3, 0x000, 0x10, 6, 3),
718	PIN_FIELD_BASE(91, 91, 3, 0x000, 0x10, 9, 3),
719	PIN_FIELD_BASE(92, 92, 3, 0x000, 0x10, 12, 3),
720	PIN_FIELD_BASE(93, 93, 3, 0x010, 0x10, 6, 3),
721	PIN_FIELD_BASE(94, 94, 3, 0x010, 0x10, 9, 3),
722	PINS_FIELD_BASE(95, 98, 3, 0x010, 0x10, 18, 3),
723	PINS_FIELD_BASE(99, 102, 3, 0x010, 0x10, 21, 3),
724	PINS_FIELD_BASE(103, 104, 3, 0x010, 0x10, 24, 3),
725	PIN_FIELD_BASE(105, 105, 3, 0x010, 0x10, 27, 3),
726	PINS_FIELD_BASE(106, 107, 3, 0x010, 0x10, 24, 3),
727	PINS_FIELD_BASE(108, 109, 3, 0x010, 0x10, 27, 3),
728	PIN_FIELD_BASE(110, 110, 5, 0x000, 0x10, 3, 3),
729	PIN_FIELD_BASE(111, 111, 5, 0x000, 0x10, 0, 3),
730	PIN_FIELD_BASE(112, 112, 5, 0x000, 0x10, 6, 3),
731	PIN_FIELD_BASE(113, 113, 5, 0x000, 0x10, 9, 3),
732	PIN_FIELD_BASE(114, 114, 5, 0x000, 0x10, 12, 3),
733	PIN_FIELD_BASE(115, 115, 5, 0x000, 0x10, 15, 3),
734	PIN_FIELD_BASE(116, 116, 6, 0x000, 0x10, 27, 3),
735	PIN_FIELD_BASE(117, 117, 6, 0x000, 0x10, 24, 3),
736	PIN_FIELD_BASE(118, 118, 6, 0x000, 0x10, 21, 3),
737	PIN_FIELD_BASE(119, 119, 6, 0x000, 0x10, 18, 3),
738	PIN_FIELD_BASE(120, 120, 6, 0x010, 0x10, 3, 3),
739	PIN_FIELD_BASE(121, 121, 6, 0x000, 0x10, 3, 3),
740	PIN_FIELD_BASE(122, 122, 6, 0x000, 0x10, 0, 3),
741	PIN_FIELD_BASE(123, 123, 6, 0x000, 0x10, 15, 3),
742	PIN_FIELD_BASE(124, 124, 6, 0x000, 0x10, 12, 3),
743	PIN_FIELD_BASE(125, 125, 6, 0x000, 0x10, 9, 3),
744	PIN_FIELD_BASE(126, 126, 6, 0x000, 0x10, 6, 3),
745	PIN_FIELD_BASE(127, 127, 6, 0x010, 0x10, 0, 3),
746	PIN_FIELD_BASE(128, 128, 3, 0x010, 0x10, 27, 3),
747	PINS_FIELD_BASE(129, 130, 3, 0x020, 0x10, 0, 3),
748	PINS_FIELD_BASE(131, 131, 3, 0x010, 0x10, 12, 3),
749	PIN_FIELD_BASE(132, 132, 6, 0x010, 0x10, 9, 3),
750	PIN_FIELD_BASE(133, 133, 6, 0x010, 0x10, 6, 3),
751	PIN_FIELD_BASE(134, 134, 6, 0x010, 0x10, 15, 3),
752	PIN_FIELD_BASE(135, 135, 6, 0x010, 0x10, 12, 3),
753	PIN_FIELD_BASE(136, 136, 1, 0x020, 0x10, 9, 3),
754	PIN_FIELD_BASE(137, 137, 1, 0x020, 0x10, 6, 3),
755	PIN_FIELD_BASE(138, 138, 1, 0x020, 0x10, 15, 3),
756	PIN_FIELD_BASE(139, 139, 1, 0x020, 0x10, 12, 3),
757	PIN_FIELD_BASE(140, 140, 1, 0x020, 0x10, 21, 3),
758	PIN_FIELD_BASE(141, 141, 1, 0x020, 0x10, 18, 3),
759	PIN_FIELD_BASE(142, 142, 1, 0x020, 0x10, 27, 3),
760	PIN_FIELD_BASE(143, 143, 1, 0x020, 0x10, 24, 3),
761};
762
763static const struct mtk_pin_field_calc mt8195_pin_drv_adv_range[] = {
764	PIN_FIELD_BASE(8, 8, 4, 0x020, 0x10, 15, 3),
765	PIN_FIELD_BASE(9, 9, 4, 0x020, 0x10, 0, 3),
766	PIN_FIELD_BASE(10, 10, 4, 0x020, 0x10, 18, 3),
767	PIN_FIELD_BASE(11, 11, 4, 0x020, 0x10, 3, 3),
768	PIN_FIELD_BASE(12, 12, 4, 0x020, 0x10, 21, 3),
769	PIN_FIELD_BASE(13, 13, 4, 0x020, 0x10, 6, 3),
770	PIN_FIELD_BASE(14, 14, 4, 0x020, 0x10, 24, 3),
771	PIN_FIELD_BASE(15, 15, 4, 0x020, 0x10, 9, 3),
772	PIN_FIELD_BASE(16, 16, 4, 0x020, 0x10, 27, 3),
773	PIN_FIELD_BASE(17, 17, 4, 0x020, 0x10, 12, 3),
774	PIN_FIELD_BASE(29, 29, 2, 0x020, 0x10, 0, 3),
775	PIN_FIELD_BASE(30, 30, 2, 0x020, 0x10, 3, 3),
776	PIN_FIELD_BASE(34, 34, 1, 0x040, 0x10, 0, 3),
777	PIN_FIELD_BASE(35, 35, 1, 0x040, 0x10, 3, 3),
778	PIN_FIELD_BASE(44, 44, 1, 0x040, 0x10, 6, 3),
779	PIN_FIELD_BASE(45, 45, 1, 0x040, 0x10, 9, 3),
780};
781
782static const struct mtk_pin_field_calc mt8195_pin_rsel_range[] = {
783	PIN_FIELD_BASE(8, 8, 4, 0x0c0, 0x10, 15, 3),
784	PIN_FIELD_BASE(9, 9, 4, 0x0c0, 0x10, 0, 3),
785	PIN_FIELD_BASE(10, 10, 4, 0x0c0, 0x10, 18, 3),
786	PIN_FIELD_BASE(11, 11, 4, 0x0c0, 0x10, 3, 3),
787	PIN_FIELD_BASE(12, 12, 4, 0x0c0, 0x10, 21, 3),
788	PIN_FIELD_BASE(13, 13, 4, 0x0c0, 0x10, 6, 3),
789	PIN_FIELD_BASE(14, 14, 4, 0x0c0, 0x10, 24, 3),
790	PIN_FIELD_BASE(15, 15, 4, 0x0c0, 0x10, 9, 3),
791	PIN_FIELD_BASE(16, 16, 4, 0x0c0, 0x10, 27, 3),
792	PIN_FIELD_BASE(17, 17, 4, 0x0c0, 0x10, 12, 3),
793	PIN_FIELD_BASE(29, 29, 2, 0x080, 0x10, 0, 3),
794	PIN_FIELD_BASE(30, 30, 2, 0x080, 0x10, 3, 3),
795	PIN_FIELD_BASE(34, 34, 1, 0x0e0, 0x10, 0, 3),
796	PIN_FIELD_BASE(35, 35, 1, 0x0e0, 0x10, 3, 3),
797	PIN_FIELD_BASE(44, 44, 1, 0x0e0, 0x10, 6, 3),
798	PIN_FIELD_BASE(45, 45, 1, 0x0e0, 0x10, 9, 3),
799};
800
801static const struct mtk_pin_rsel mt8195_pin_rsel_val_range[] = {
802	PIN_RSEL(8, 17, 0x0, 75000, 75000),
803	PIN_RSEL(8, 17, 0x1, 10000, 5000),
804	PIN_RSEL(8, 17, 0x2, 5000, 75000),
805	PIN_RSEL(8, 17, 0x3, 4000, 5000),
806	PIN_RSEL(8, 17, 0x4, 3000, 75000),
807	PIN_RSEL(8, 17, 0x5, 2000, 5000),
808	PIN_RSEL(8, 17, 0x6, 1500, 75000),
809	PIN_RSEL(8, 17, 0x7, 1000, 5000),
810	PIN_RSEL(29, 30, 0x0, 75000, 75000),
811	PIN_RSEL(29, 30, 0x1, 10000, 5000),
812	PIN_RSEL(29, 30, 0x2, 5000, 75000),
813	PIN_RSEL(29, 30, 0x3, 4000, 5000),
814	PIN_RSEL(29, 30, 0x4, 3000, 75000),
815	PIN_RSEL(29, 30, 0x5, 2000, 5000),
816	PIN_RSEL(29, 30, 0x6, 1500, 75000),
817	PIN_RSEL(29, 30, 0x7, 1000, 5000),
818	PIN_RSEL(34, 35, 0x0, 75000, 75000),
819	PIN_RSEL(34, 35, 0x1, 10000, 5000),
820	PIN_RSEL(34, 35, 0x2, 5000, 75000),
821	PIN_RSEL(34, 35, 0x3, 4000, 5000),
822	PIN_RSEL(34, 35, 0x4, 3000, 75000),
823	PIN_RSEL(34, 35, 0x5, 2000, 5000),
824	PIN_RSEL(34, 35, 0x6, 1500, 75000),
825	PIN_RSEL(34, 35, 0x7, 1000, 5000),
826	PIN_RSEL(44, 45, 0x0, 75000, 75000),
827	PIN_RSEL(44, 45, 0x1, 10000, 5000),
828	PIN_RSEL(44, 45, 0x2, 5000, 75000),
829	PIN_RSEL(44, 45, 0x3, 4000, 5000),
830	PIN_RSEL(44, 45, 0x4, 3000, 75000),
831	PIN_RSEL(44, 45, 0x5, 2000, 5000),
832	PIN_RSEL(44, 45, 0x6, 1500, 75000),
833	PIN_RSEL(44, 45, 0x7, 1000, 5000),
834};
835
836static const unsigned int mt8195_pull_type[] = {
837	MTK_PULL_PUPD_R1R0_TYPE /* 0 */, MTK_PULL_PUPD_R1R0_TYPE /* 1 */,
838	MTK_PULL_PUPD_R1R0_TYPE /* 2 */, MTK_PULL_PUPD_R1R0_TYPE /* 3 */,
839	MTK_PULL_PUPD_R1R0_TYPE /* 4 */, MTK_PULL_PUPD_R1R0_TYPE /* 5 */,
840	MTK_PULL_PU_PD_TYPE /* 6 */, MTK_PULL_PU_PD_TYPE /* 7 */,
841	MTK_PULL_PU_PD_RSEL_TYPE /* 8 */, MTK_PULL_PU_PD_RSEL_TYPE /* 9 */,
842	MTK_PULL_PU_PD_RSEL_TYPE /* 10 */, MTK_PULL_PU_PD_RSEL_TYPE /* 11 */,
843	MTK_PULL_PU_PD_RSEL_TYPE /* 12 */, MTK_PULL_PU_PD_RSEL_TYPE /* 13 */,
844	MTK_PULL_PU_PD_RSEL_TYPE /* 14 */, MTK_PULL_PU_PD_RSEL_TYPE /* 15 */,
845	MTK_PULL_PU_PD_RSEL_TYPE /* 16 */, MTK_PULL_PU_PD_RSEL_TYPE /* 17 */,
846	MTK_PULL_PU_PD_TYPE /* 18 */, MTK_PULL_PU_PD_TYPE /* 19 */,
847	MTK_PULL_PU_PD_TYPE /* 20 */, MTK_PULL_PU_PD_TYPE /* 21 */,
848	MTK_PULL_PU_PD_TYPE /* 22 */, MTK_PULL_PU_PD_TYPE /* 23 */,
849	MTK_PULL_PU_PD_TYPE /* 24 */, MTK_PULL_PU_PD_TYPE /* 25 */,
850	MTK_PULL_PU_PD_TYPE /* 26 */, MTK_PULL_PU_PD_TYPE /* 27 */,
851	MTK_PULL_PU_PD_TYPE /* 28 */, MTK_PULL_PU_PD_RSEL_TYPE /* 29 */,
852	MTK_PULL_PU_PD_RSEL_TYPE /* 30 */, MTK_PULL_PU_PD_TYPE /* 31 */,
853	MTK_PULL_PU_PD_TYPE /* 32 */, MTK_PULL_PU_PD_TYPE /* 33 */,
854	MTK_PULL_PU_PD_RSEL_TYPE /* 34 */, MTK_PULL_PU_PD_RSEL_TYPE /* 35 */,
855	MTK_PULL_PU_PD_TYPE /* 36 */, MTK_PULL_PU_PD_TYPE /* 37 */,
856	MTK_PULL_PU_PD_TYPE /* 38 */, MTK_PULL_PU_PD_TYPE /* 39 */,
857	MTK_PULL_PU_PD_TYPE /* 40 */, MTK_PULL_PU_PD_TYPE /* 41 */,
858	MTK_PULL_PU_PD_TYPE /* 42 */, MTK_PULL_PU_PD_TYPE /* 43 */,
859	MTK_PULL_PU_PD_RSEL_TYPE /* 44 */, MTK_PULL_PU_PD_RSEL_TYPE /* 45 */,
860	MTK_PULL_PU_PD_TYPE /* 46 */, MTK_PULL_PU_PD_TYPE /* 47 */,
861	MTK_PULL_PU_PD_TYPE /* 48 */, MTK_PULL_PU_PD_TYPE /* 49 */,
862	MTK_PULL_PU_PD_TYPE /* 50 */, MTK_PULL_PU_PD_TYPE /* 51 */,
863	MTK_PULL_PU_PD_TYPE /* 52 */, MTK_PULL_PU_PD_TYPE /* 53 */,
864	MTK_PULL_PU_PD_TYPE /* 54 */, MTK_PULL_PU_PD_TYPE /* 55 */,
865	MTK_PULL_PU_PD_TYPE /* 56 */, MTK_PULL_PU_PD_TYPE /* 57 */,
866	MTK_PULL_PU_PD_TYPE /* 58 */, MTK_PULL_PU_PD_TYPE /* 59 */,
867	MTK_PULL_PU_PD_TYPE /* 60 */, MTK_PULL_PU_PD_TYPE /* 61 */,
868	MTK_PULL_PU_PD_TYPE /* 62 */, MTK_PULL_PU_PD_TYPE /* 63 */,
869	MTK_PULL_PU_PD_TYPE /* 64 */, MTK_PULL_PU_PD_TYPE /* 65 */,
870	MTK_PULL_PU_PD_TYPE /* 66 */, MTK_PULL_PU_PD_TYPE /* 67 */,
871	MTK_PULL_PU_PD_TYPE /* 68 */, MTK_PULL_PU_PD_TYPE /* 69 */,
872	MTK_PULL_PU_PD_TYPE /* 70 */, MTK_PULL_PU_PD_TYPE /* 71 */,
873	MTK_PULL_PU_PD_TYPE /* 72 */, MTK_PULL_PU_PD_TYPE /* 73 */,
874	MTK_PULL_PU_PD_TYPE /* 74 */, MTK_PULL_PU_PD_TYPE /* 75 */,
875	MTK_PULL_PU_PD_TYPE /* 76 */, MTK_PULL_PUPD_R1R0_TYPE /* 77 */,
876	MTK_PULL_PUPD_R1R0_TYPE /* 78 */, MTK_PULL_PUPD_R1R0_TYPE /* 79 */,
877	MTK_PULL_PUPD_R1R0_TYPE /* 80 */, MTK_PULL_PUPD_R1R0_TYPE /* 81 */,
878	MTK_PULL_PUPD_R1R0_TYPE /* 82 */, MTK_PULL_PUPD_R1R0_TYPE /* 83 */,
879	MTK_PULL_PUPD_R1R0_TYPE /* 84 */, MTK_PULL_PUPD_R1R0_TYPE /* 85 */,
880	MTK_PULL_PUPD_R1R0_TYPE /* 86 */, MTK_PULL_PUPD_R1R0_TYPE /* 87 */,
881	MTK_PULL_PUPD_R1R0_TYPE /* 88 */, MTK_PULL_PUPD_R1R0_TYPE /* 89 */,
882	MTK_PULL_PUPD_R1R0_TYPE /* 90 */, MTK_PULL_PUPD_R1R0_TYPE /* 91 */,
883	MTK_PULL_PUPD_R1R0_TYPE /* 92 */, MTK_PULL_PUPD_R1R0_TYPE /* 93 */,
884	MTK_PULL_PUPD_R1R0_TYPE /* 94 */, MTK_PULL_PUPD_R1R0_TYPE /* 95 */,
885	MTK_PULL_PUPD_R1R0_TYPE /* 96 */, MTK_PULL_PU_PD_TYPE /* 97 */,
886	MTK_PULL_PU_PD_TYPE /* 98 */, MTK_PULL_PU_PD_TYPE /* 99 */,
887	MTK_PULL_PU_PD_TYPE /* 100 */, MTK_PULL_PU_PD_TYPE /* 101 */,
888	MTK_PULL_PU_PD_TYPE /* 102 */, MTK_PULL_PU_PD_TYPE /* 103 */,
889	MTK_PULL_PUPD_R1R0_TYPE /* 104 */, MTK_PULL_PUPD_R1R0_TYPE /* 105 */,
890	MTK_PULL_PUPD_R1R0_TYPE /* 106 */, MTK_PULL_PUPD_R1R0_TYPE /* 107 */,
891	MTK_PULL_PU_PD_TYPE /* 108 */, MTK_PULL_PU_PD_TYPE /* 109 */,
892	MTK_PULL_PUPD_R1R0_TYPE /* 110 */, MTK_PULL_PUPD_R1R0_TYPE /* 111 */,
893	MTK_PULL_PUPD_R1R0_TYPE /* 112 */, MTK_PULL_PUPD_R1R0_TYPE /* 113 */,
894	MTK_PULL_PUPD_R1R0_TYPE /* 114 */, MTK_PULL_PUPD_R1R0_TYPE /* 115 */,
895	MTK_PULL_PUPD_R1R0_TYPE /* 116 */, MTK_PULL_PUPD_R1R0_TYPE /* 117 */,
896	MTK_PULL_PUPD_R1R0_TYPE /* 118 */, MTK_PULL_PUPD_R1R0_TYPE /* 119 */,
897	MTK_PULL_PUPD_R1R0_TYPE /* 120 */, MTK_PULL_PUPD_R1R0_TYPE /* 121 */,
898	MTK_PULL_PUPD_R1R0_TYPE /* 122 */, MTK_PULL_PUPD_R1R0_TYPE /* 123 */,
899	MTK_PULL_PUPD_R1R0_TYPE /* 124 */, MTK_PULL_PUPD_R1R0_TYPE /* 125 */,
900	MTK_PULL_PUPD_R1R0_TYPE /* 126 */, MTK_PULL_PUPD_R1R0_TYPE /* 127 */,
901	MTK_PULL_PU_PD_TYPE /* 128 */, MTK_PULL_PU_PD_TYPE /* 129 */,
902	MTK_PULL_PU_PD_TYPE /* 130 */, MTK_PULL_PU_PD_TYPE /* 131 */,
903	MTK_PULL_PU_PD_TYPE /* 132 */, MTK_PULL_PU_PD_TYPE /* 133 */,
904	MTK_PULL_PU_PD_TYPE /* 134 */, MTK_PULL_PU_PD_TYPE /* 135 */,
905	MTK_PULL_PU_PD_TYPE /* 136 */, MTK_PULL_PU_PD_TYPE /* 137 */,
906	MTK_PULL_PU_PD_TYPE /* 138 */, MTK_PULL_PU_PD_TYPE /* 139 */,
907	MTK_PULL_PU_PD_TYPE /* 140 */, MTK_PULL_PU_PD_TYPE /* 141 */,
908	MTK_PULL_PU_PD_TYPE /* 142 */, MTK_PULL_PU_PD_TYPE /* 143 */,
909};
910
911static const struct mtk_pin_reg_calc mt8195_reg_cals[PINCTRL_PIN_REG_MAX] = {
912	[PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8195_pin_mode_range),
913	[PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8195_pin_dir_range),
914	[PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8195_pin_di_range),
915	[PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8195_pin_do_range),
916	[PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8195_pin_smt_range),
917	[PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8195_pin_ies_range),
918	[PINCTRL_PIN_REG_PU] = MTK_RANGE(mt8195_pin_pu_range),
919	[PINCTRL_PIN_REG_PD] = MTK_RANGE(mt8195_pin_pd_range),
920	[PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8195_pin_drv_range),
921	[PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8195_pin_pupd_range),
922	[PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8195_pin_r0_range),
923	[PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8195_pin_r1_range),
924	[PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt8195_pin_drv_adv_range),
925	[PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt8195_pin_rsel_range),
926};
927
928static const char * const mt8195_pinctrl_register_base_names[] = {
929	"iocfg0", "iocfg_bm", "iocfg_bl", "iocfg_br", "iocfg_lm",
930	"iocfg_rb", "iocfg_tl",
931};
932
933static const struct mtk_eint_hw mt8195_eint_hw = {
934	.port_mask = 0xf,
935	.ports     = 7,
936	.ap_num    = 225,
937	.db_cnt    = 32,
938	.db_time   = debounce_time_mt6765,
939};
940
941static const struct mtk_pin_soc mt8195_data = {
942	.reg_cal = mt8195_reg_cals,
943	.pins = mtk_pins_mt8195,
944	.npins = ARRAY_SIZE(mtk_pins_mt8195),
945	.ngrps = ARRAY_SIZE(mtk_pins_mt8195),
946	.eint_hw = &mt8195_eint_hw,
947	.nfuncs = 8,
948	.gpio_m = 0,
949	.base_names = mt8195_pinctrl_register_base_names,
950	.nbase_names = ARRAY_SIZE(mt8195_pinctrl_register_base_names),
951	.pull_type = mt8195_pull_type,
952	.pin_rsel = mt8195_pin_rsel_val_range,
953	.npin_rsel = ARRAY_SIZE(mt8195_pin_rsel_val_range),
954	.bias_set_combo = mtk_pinconf_bias_set_combo,
955	.bias_get_combo = mtk_pinconf_bias_get_combo,
956	.drive_set = mtk_pinconf_drive_set_rev1,
957	.drive_get = mtk_pinconf_drive_get_rev1,
958	.adv_drive_get = mtk_pinconf_adv_drive_get_raw,
959	.adv_drive_set = mtk_pinconf_adv_drive_set_raw,
960};
961
962static const struct of_device_id mt8195_pinctrl_of_match[] = {
963	{ .compatible = "mediatek,mt8195-pinctrl", .data = &mt8195_data },
964	{ }
965};
966
967static struct platform_driver mt8195_pinctrl_driver = {
968	.driver = {
969		.name = "mt8195-pinctrl",
970		.of_match_table = mt8195_pinctrl_of_match,
971		.pm = &mtk_paris_pinctrl_pm_ops,
972	},
973	.probe = mtk_paris_pinctrl_probe,
974};
975
976static int __init mt8195_pinctrl_init(void)
977{
978	return platform_driver_register(&mt8195_pinctrl_driver);
979}
980arch_initcall(mt8195_pinctrl_init);
981