File Index
Files and directories
Sign in
FILE

pinctrl-mt6893.c

File preview with syntax highlighting.

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