xref: /linux/drivers/pinctrl/mediatek/pinctrl-mt6779.c (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1920e469eSHanks Chen // SPDX-License-Identifier: GPL-2.0
2920e469eSHanks Chen /*
3920e469eSHanks Chen  * Copyright (C) 2019 MediaTek Inc.
4920e469eSHanks Chen  * Author: Andy Teng <andy.teng@mediatek.com>
5920e469eSHanks Chen  *
6920e469eSHanks Chen  */
7920e469eSHanks Chen 
8920e469eSHanks Chen #include <linux/module.h>
9920e469eSHanks Chen #include "pinctrl-mtk-mt6779.h"
10920e469eSHanks Chen #include "pinctrl-paris.h"
11920e469eSHanks Chen 
12920e469eSHanks Chen /* MT6779 have multiple bases to program pin configuration listed as the below:
13920e469eSHanks Chen  * gpio:0x10005000,     iocfg_rm:0x11C20000, iocfg_br:0x11D10000,
14920e469eSHanks Chen  * iocfg_lm:0x11E20000, iocfg_lb:0x11E70000, iocfg_rt:0x11EA0000,
15920e469eSHanks Chen  * iocfg_lt:0x11F20000, iocfg_tl:0x11F30000
16920e469eSHanks Chen  * _i_based could be used to indicate what base the pin should be mapped into.
17920e469eSHanks Chen  */
18920e469eSHanks Chen 
19920e469eSHanks Chen #define PIN_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
20920e469eSHanks Chen 	PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
21920e469eSHanks Chen 		       32, 0)
22920e469eSHanks Chen 
23920e469eSHanks Chen #define PINS_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
24920e469eSHanks Chen 	PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits,  \
25920e469eSHanks Chen 		       32, 1)
26920e469eSHanks Chen 
27920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_mode_range[] = {
28920e469eSHanks Chen 	PIN_FIELD_BASE(0, 7, 0, 0x0300, 0x10, 0, 4),
29920e469eSHanks Chen 	PIN_FIELD_BASE(8, 15, 0, 0x0310, 0x10, 0, 4),
30920e469eSHanks Chen 	PIN_FIELD_BASE(16, 23, 0, 0x0320, 0x10, 0, 4),
31920e469eSHanks Chen 	PIN_FIELD_BASE(24, 31, 0, 0x0330, 0x10, 0, 4),
32920e469eSHanks Chen 	PIN_FIELD_BASE(32, 39, 0, 0x0340, 0x10, 0, 4),
33920e469eSHanks Chen 	PIN_FIELD_BASE(40, 47, 0, 0x0350, 0x10, 0, 4),
34920e469eSHanks Chen 	PIN_FIELD_BASE(48, 55, 0, 0x0360, 0x10, 0, 4),
35920e469eSHanks Chen 	PIN_FIELD_BASE(56, 63, 0, 0x0370, 0x10, 0, 4),
36920e469eSHanks Chen 	PIN_FIELD_BASE(64, 71, 0, 0x0380, 0x10, 0, 4),
37920e469eSHanks Chen 	PIN_FIELD_BASE(72, 79, 0, 0x0390, 0x10, 0, 4),
38920e469eSHanks Chen 	PIN_FIELD_BASE(80, 87, 0, 0x03A0, 0x10, 0, 4),
39920e469eSHanks Chen 	PIN_FIELD_BASE(88, 95, 0, 0x03B0, 0x10, 0, 4),
40920e469eSHanks Chen 	PIN_FIELD_BASE(96, 103, 0, 0x03C0, 0x10, 0, 4),
41920e469eSHanks Chen 	PIN_FIELD_BASE(104, 111, 0, 0x03D0, 0x10, 0, 4),
42920e469eSHanks Chen 	PIN_FIELD_BASE(112, 119, 0, 0x03E0, 0x10, 0, 4),
43920e469eSHanks Chen 	PIN_FIELD_BASE(120, 127, 0, 0x03F0, 0x10, 0, 4),
44920e469eSHanks Chen 	PIN_FIELD_BASE(128, 135, 0, 0x0400, 0x10, 0, 4),
45920e469eSHanks Chen 	PIN_FIELD_BASE(136, 143, 0, 0x0410, 0x10, 0, 4),
46920e469eSHanks Chen 	PIN_FIELD_BASE(144, 151, 0, 0x0420, 0x10, 0, 4),
47920e469eSHanks Chen 	PIN_FIELD_BASE(152, 159, 0, 0x0430, 0x10, 0, 4),
48920e469eSHanks Chen 	PIN_FIELD_BASE(160, 167, 0, 0x0440, 0x10, 0, 4),
49920e469eSHanks Chen 	PIN_FIELD_BASE(168, 175, 0, 0x0450, 0x10, 0, 4),
50920e469eSHanks Chen 	PIN_FIELD_BASE(176, 183, 0, 0x0460, 0x10, 0, 4),
51920e469eSHanks Chen 	PIN_FIELD_BASE(184, 191, 0, 0x0470, 0x10, 0, 4),
52920e469eSHanks Chen 	PIN_FIELD_BASE(192, 199, 0, 0x0480, 0x10, 0, 4),
53920e469eSHanks Chen 	PIN_FIELD_BASE(200, 202, 0, 0x0490, 0x10, 0, 4),
54920e469eSHanks Chen };
55920e469eSHanks Chen 
56920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_dir_range[] = {
57920e469eSHanks Chen 	PIN_FIELD_BASE(0, 31, 0, 0x0000, 0x10, 0, 1),
58920e469eSHanks Chen 	PIN_FIELD_BASE(32, 63, 0, 0x0010, 0x10, 0, 1),
59920e469eSHanks Chen 	PIN_FIELD_BASE(64, 95, 0, 0x0020, 0x10, 0, 1),
60920e469eSHanks Chen 	PIN_FIELD_BASE(96, 127, 0, 0x0030, 0x10, 0, 1),
61920e469eSHanks Chen 	PIN_FIELD_BASE(128, 159, 0, 0x0040, 0x10, 0, 1),
62920e469eSHanks Chen 	PIN_FIELD_BASE(160, 191, 0, 0x0050, 0x10, 0, 1),
63920e469eSHanks Chen 	PIN_FIELD_BASE(192, 202, 0, 0x0060, 0x10, 0, 1),
64920e469eSHanks Chen };
65920e469eSHanks Chen 
66920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_di_range[] = {
67920e469eSHanks Chen 	PIN_FIELD_BASE(0, 31, 0, 0x0200, 0x10, 0, 1),
68920e469eSHanks Chen 	PIN_FIELD_BASE(32, 63, 0, 0x0210, 0x10, 0, 1),
69920e469eSHanks Chen 	PIN_FIELD_BASE(64, 95, 0, 0x0220, 0x10, 0, 1),
70920e469eSHanks Chen 	PIN_FIELD_BASE(96, 127, 0, 0x0230, 0x10, 0, 1),
71920e469eSHanks Chen 	PIN_FIELD_BASE(128, 159, 0, 0x0240, 0x10, 0, 1),
72920e469eSHanks Chen 	PIN_FIELD_BASE(160, 191, 0, 0x0250, 0x10, 0, 1),
73920e469eSHanks Chen 	PIN_FIELD_BASE(192, 202, 0, 0x0260, 0x10, 0, 1),
74920e469eSHanks Chen };
75920e469eSHanks Chen 
76920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_do_range[] = {
77920e469eSHanks Chen 	PIN_FIELD_BASE(0, 31, 0, 0x0100, 0x10, 0, 1),
78920e469eSHanks Chen 	PIN_FIELD_BASE(32, 63, 0, 0x0110, 0x10, 0, 1),
79920e469eSHanks Chen 	PIN_FIELD_BASE(64, 95, 0, 0x0120, 0x10, 0, 1),
80920e469eSHanks Chen 	PIN_FIELD_BASE(96, 127, 0, 0x0130, 0x10, 0, 1),
81920e469eSHanks Chen 	PIN_FIELD_BASE(128, 159, 0, 0x0140, 0x10, 0, 1),
82920e469eSHanks Chen 	PIN_FIELD_BASE(160, 191, 0, 0x0150, 0x10, 0, 1),
83920e469eSHanks Chen 	PIN_FIELD_BASE(192, 202, 0, 0x0160, 0x10, 0, 1),
84920e469eSHanks Chen };
85920e469eSHanks Chen 
86920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_ies_range[] = {
87920e469eSHanks Chen 	PIN_FIELD_BASE(0, 9, 6, 0x0030, 0x10, 3, 1),
88920e469eSHanks Chen 	PIN_FIELD_BASE(10, 16, 3, 0x0050, 0x10, 0, 1),
89920e469eSHanks Chen 	PIN_FIELD_BASE(17, 18, 6, 0x0030, 0x10, 28, 1),
90920e469eSHanks Chen 	PIN_FIELD_BASE(19, 19, 6, 0x0030, 0x10, 27, 1),
91920e469eSHanks Chen 	PIN_FIELD_BASE(20, 20, 6, 0x0030, 0x10, 26, 1),
92920e469eSHanks Chen 	PIN_FIELD_BASE(21, 24, 6, 0x0030, 0x10, 19, 1),
93920e469eSHanks Chen 	PIN_FIELD_BASE(25, 25, 6, 0x0030, 0x10, 30, 1),
94920e469eSHanks Chen 	PIN_FIELD_BASE(26, 26, 6, 0x0030, 0x10, 23, 1),
95920e469eSHanks Chen 	PIN_FIELD_BASE(27, 27, 6, 0x0030, 0x10, 0, 1),
96920e469eSHanks Chen 	PIN_FIELD_BASE(28, 29, 6, 0x0030, 0x10, 24, 1),
97920e469eSHanks Chen 	PIN_FIELD_BASE(30, 30, 6, 0x0030, 0x10, 16, 1),
98920e469eSHanks Chen 	PIN_FIELD_BASE(31, 31, 6, 0x0030, 0x10, 13, 1),
99920e469eSHanks Chen 	PIN_FIELD_BASE(32, 32, 6, 0x0030, 0x10, 15, 1),
100920e469eSHanks Chen 	PIN_FIELD_BASE(33, 33, 6, 0x0030, 0x10, 17, 1),
101920e469eSHanks Chen 	PIN_FIELD_BASE(34, 34, 6, 0x0030, 0x10, 14, 1),
102920e469eSHanks Chen 	PIN_FIELD_BASE(35, 35, 6, 0x0040, 0x10, 4, 1),
103920e469eSHanks Chen 	PIN_FIELD_BASE(36, 36, 6, 0x0030, 0x10, 31, 1),
104920e469eSHanks Chen 	PIN_FIELD_BASE(37, 37, 6, 0x0040, 0x10, 5, 1),
105920e469eSHanks Chen 	PIN_FIELD_BASE(38, 41, 6, 0x0040, 0x10, 0, 1),
106920e469eSHanks Chen 	PIN_FIELD_BASE(42, 43, 6, 0x0030, 0x10, 1, 1),
107920e469eSHanks Chen 	PIN_FIELD_BASE(44, 44, 6, 0x0030, 0x10, 18, 1),
108920e469eSHanks Chen 	PIN_FIELD_BASE(45, 45, 3, 0x0050, 0x10, 14, 1),
109920e469eSHanks Chen 	PIN_FIELD_BASE(46, 46, 3, 0x0050, 0x10, 22, 1),
110920e469eSHanks Chen 	PIN_FIELD_BASE(47, 47, 3, 0x0050, 0x10, 25, 1),
111920e469eSHanks Chen 	PIN_FIELD_BASE(48, 48, 3, 0x0050, 0x10, 24, 1),
112920e469eSHanks Chen 	PIN_FIELD_BASE(49, 49, 3, 0x0050, 0x10, 26, 1),
113920e469eSHanks Chen 	PIN_FIELD_BASE(50, 50, 3, 0x0050, 0x10, 23, 1),
114920e469eSHanks Chen 	PIN_FIELD_BASE(51, 51, 3, 0x0050, 0x10, 11, 1),
115920e469eSHanks Chen 	PIN_FIELD_BASE(52, 52, 3, 0x0050, 0x10, 19, 1),
116920e469eSHanks Chen 	PIN_FIELD_BASE(53, 54, 3, 0x0050, 0x10, 27, 1),
117920e469eSHanks Chen 	PIN_FIELD_BASE(55, 55, 3, 0x0050, 0x10, 13, 1),
118920e469eSHanks Chen 	PIN_FIELD_BASE(56, 56, 3, 0x0050, 0x10, 21, 1),
119920e469eSHanks Chen 	PIN_FIELD_BASE(57, 57, 3, 0x0050, 0x10, 10, 1),
120920e469eSHanks Chen 	PIN_FIELD_BASE(58, 58, 3, 0x0050, 0x10, 9, 1),
121920e469eSHanks Chen 	PIN_FIELD_BASE(59, 60, 3, 0x0050, 0x10, 7, 1),
122920e469eSHanks Chen 	PIN_FIELD_BASE(61, 61, 3, 0x0050, 0x10, 12, 1),
123920e469eSHanks Chen 	PIN_FIELD_BASE(62, 62, 3, 0x0050, 0x10, 20, 1),
124920e469eSHanks Chen 	PIN_FIELD_BASE(63, 63, 3, 0x0050, 0x10, 17, 1),
125920e469eSHanks Chen 	PIN_FIELD_BASE(64, 64, 3, 0x0050, 0x10, 16, 1),
126920e469eSHanks Chen 	PIN_FIELD_BASE(65, 65, 3, 0x0050, 0x10, 18, 1),
127920e469eSHanks Chen 	PIN_FIELD_BASE(66, 66, 3, 0x0050, 0x10, 15, 1),
128920e469eSHanks Chen 	PIN_FIELD_BASE(67, 67, 2, 0x0060, 0x10, 7, 1),
129920e469eSHanks Chen 	PIN_FIELD_BASE(68, 68, 2, 0x0060, 0x10, 6, 1),
130920e469eSHanks Chen 	PIN_FIELD_BASE(69, 69, 2, 0x0060, 0x10, 8, 1),
131920e469eSHanks Chen 	PIN_FIELD_BASE(70, 71, 2, 0x0060, 0x10, 4, 1),
132920e469eSHanks Chen 	PIN_FIELD_BASE(72, 72, 4, 0x0020, 0x10, 3, 1),
133920e469eSHanks Chen 	PIN_FIELD_BASE(73, 73, 4, 0x0020, 0x10, 2, 1),
134920e469eSHanks Chen 	PIN_FIELD_BASE(74, 74, 4, 0x0020, 0x10, 1, 1),
135920e469eSHanks Chen 	PIN_FIELD_BASE(75, 75, 4, 0x0020, 0x10, 4, 1),
136920e469eSHanks Chen 	PIN_FIELD_BASE(76, 76, 4, 0x0020, 0x10, 12, 1),
137920e469eSHanks Chen 	PIN_FIELD_BASE(77, 77, 4, 0x0020, 0x10, 11, 1),
138920e469eSHanks Chen 	PIN_FIELD_BASE(78, 78, 2, 0x0050, 0x10, 18, 1),
139920e469eSHanks Chen 	PIN_FIELD_BASE(79, 79, 2, 0x0050, 0x10, 17, 1),
140920e469eSHanks Chen 	PIN_FIELD_BASE(80, 81, 2, 0x0050, 0x10, 19, 1),
141920e469eSHanks Chen 	PIN_FIELD_BASE(82, 88, 2, 0x0050, 0x10, 1, 1),
142920e469eSHanks Chen 	PIN_FIELD_BASE(89, 89, 2, 0x0050, 0x10, 16, 1),
143920e469eSHanks Chen 	PIN_FIELD_BASE(90, 90, 2, 0x0050, 0x10, 15, 1),
144920e469eSHanks Chen 	PIN_FIELD_BASE(91, 91, 2, 0x0050, 0x10, 14, 1),
145920e469eSHanks Chen 	PIN_FIELD_BASE(92, 92, 2, 0x0050, 0x10, 8, 1),
146920e469eSHanks Chen 	PIN_FIELD_BASE(93, 93, 4, 0x0020, 0x10, 0, 1),
147920e469eSHanks Chen 	PIN_FIELD_BASE(94, 94, 2, 0x0050, 0x10, 0, 1),
148920e469eSHanks Chen 	PIN_FIELD_BASE(95, 95, 4, 0x0020, 0x10, 7, 1),
149920e469eSHanks Chen 	PIN_FIELD_BASE(96, 96, 4, 0x0020, 0x10, 5, 1),
150920e469eSHanks Chen 	PIN_FIELD_BASE(97, 97, 4, 0x0020, 0x10, 8, 1),
151920e469eSHanks Chen 	PIN_FIELD_BASE(98, 98, 4, 0x0020, 0x10, 6, 1),
152920e469eSHanks Chen 	PIN_FIELD_BASE(99, 99, 2, 0x0060, 0x10, 9, 1),
153920e469eSHanks Chen 	PIN_FIELD_BASE(100, 100, 2, 0x0060, 0x10, 12, 1),
154920e469eSHanks Chen 	PIN_FIELD_BASE(101, 101, 2, 0x0060, 0x10, 10, 1),
155920e469eSHanks Chen 	PIN_FIELD_BASE(102, 102, 2, 0x0060, 0x10, 13, 1),
156920e469eSHanks Chen 	PIN_FIELD_BASE(103, 103, 2, 0x0060, 0x10, 11, 1),
157920e469eSHanks Chen 	PIN_FIELD_BASE(104, 104, 2, 0x0060, 0x10, 14, 1),
158920e469eSHanks Chen 	PIN_FIELD_BASE(105, 105, 2, 0x0050, 0x10, 10, 1),
159920e469eSHanks Chen 	PIN_FIELD_BASE(106, 106, 2, 0x0050, 0x10, 9, 1),
160920e469eSHanks Chen 	PIN_FIELD_BASE(107, 108, 2, 0x0050, 0x10, 12, 1),
161920e469eSHanks Chen 	PIN_FIELD_BASE(109, 109, 2, 0x0050, 0x10, 11, 1),
162920e469eSHanks Chen 	PIN_FIELD_BASE(110, 110, 2, 0x0060, 0x10, 16, 1),
163920e469eSHanks Chen 	PIN_FIELD_BASE(111, 111, 2, 0x0060, 0x10, 18, 1),
164920e469eSHanks Chen 	PIN_FIELD_BASE(112, 112, 2, 0x0060, 0x10, 15, 1),
165920e469eSHanks Chen 	PIN_FIELD_BASE(113, 113, 2, 0x0060, 0x10, 17, 1),
166920e469eSHanks Chen 	PIN_FIELD_BASE(114, 115, 2, 0x0050, 0x10, 26, 1),
167920e469eSHanks Chen 	PIN_FIELD_BASE(116, 117, 2, 0x0050, 0x10, 21, 1),
168920e469eSHanks Chen 	PIN_FIELD_BASE(118, 118, 2, 0x0050, 0x10, 31, 1),
169920e469eSHanks Chen 	PIN_FIELD_BASE(119, 119, 2, 0x0060, 0x10, 0, 1),
170920e469eSHanks Chen 	PIN_FIELD_BASE(120, 121, 2, 0x0050, 0x10, 23, 1),
171920e469eSHanks Chen 	PIN_FIELD_BASE(122, 123, 2, 0x0050, 0x10, 28, 1),
172920e469eSHanks Chen 	PIN_FIELD_BASE(124, 125, 2, 0x0060, 0x10, 1, 1),
173920e469eSHanks Chen 	PIN_FIELD_BASE(126, 127, 1, 0x0030, 0x10, 8, 1),
174920e469eSHanks Chen 	PIN_FIELD_BASE(128, 129, 1, 0x0030, 0x10, 17, 1),
175920e469eSHanks Chen 	PIN_FIELD_BASE(130, 130, 1, 0x0030, 0x10, 16, 1),
176920e469eSHanks Chen 	PIN_FIELD_BASE(131, 131, 1, 0x0030, 0x10, 19, 1),
177920e469eSHanks Chen 	PIN_FIELD_BASE(132, 132, 1, 0x0030, 0x10, 21, 1),
178920e469eSHanks Chen 	PIN_FIELD_BASE(133, 133, 1, 0x0030, 0x10, 20, 1),
179920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x0030, 0x10, 2, 1),
180920e469eSHanks Chen 	PIN_FIELD_BASE(136, 136, 1, 0x0030, 0x10, 7, 1),
181920e469eSHanks Chen 	PIN_FIELD_BASE(137, 137, 1, 0x0030, 0x10, 4, 1),
182920e469eSHanks Chen 	PIN_FIELD_BASE(138, 138, 1, 0x0030, 0x10, 6, 1),
183920e469eSHanks Chen 	PIN_FIELD_BASE(139, 139, 1, 0x0030, 0x10, 5, 1),
184920e469eSHanks Chen 	PIN_FIELD_BASE(140, 141, 1, 0x0030, 0x10, 0, 1),
185920e469eSHanks Chen 	PIN_FIELD_BASE(142, 142, 1, 0x0030, 0x10, 15, 1),
186920e469eSHanks Chen 	PIN_FIELD_BASE(143, 143, 5, 0x0020, 0x10, 15, 1),
187920e469eSHanks Chen 	PIN_FIELD_BASE(144, 144, 5, 0x0020, 0x10, 17, 1),
188920e469eSHanks Chen 	PIN_FIELD_BASE(145, 145, 5, 0x0020, 0x10, 16, 1),
189920e469eSHanks Chen 	PIN_FIELD_BASE(146, 146, 5, 0x0020, 0x10, 12, 1),
190920e469eSHanks Chen 	PIN_FIELD_BASE(147, 155, 5, 0x0020, 0x10, 0, 1),
191920e469eSHanks Chen 	PIN_FIELD_BASE(156, 157, 5, 0x0020, 0x10, 22, 1),
192920e469eSHanks Chen 	PIN_FIELD_BASE(158, 158, 5, 0x0020, 0x10, 21, 1),
193920e469eSHanks Chen 	PIN_FIELD_BASE(159, 159, 5, 0x0020, 0x10, 24, 1),
194920e469eSHanks Chen 	PIN_FIELD_BASE(160, 161, 5, 0x0020, 0x10, 19, 1),
195920e469eSHanks Chen 	PIN_FIELD_BASE(162, 166, 5, 0x0020, 0x10, 25, 1),
196920e469eSHanks Chen 	PIN_FIELD_BASE(167, 168, 7, 0x0010, 0x10, 1, 1),
197920e469eSHanks Chen 	PIN_FIELD_BASE(169, 169, 7, 0x0010, 0x10, 4, 1),
198920e469eSHanks Chen 	PIN_FIELD_BASE(170, 170, 7, 0x0010, 0x10, 6, 1),
199920e469eSHanks Chen 	PIN_FIELD_BASE(171, 171, 7, 0x0010, 0x10, 8, 1),
200920e469eSHanks Chen 	PIN_FIELD_BASE(172, 172, 7, 0x0010, 0x10, 3, 1),
201920e469eSHanks Chen 	PIN_FIELD_BASE(173, 173, 7, 0x0010, 0x10, 7, 1),
202920e469eSHanks Chen 	PIN_FIELD_BASE(174, 175, 7, 0x0010, 0x10, 9, 1),
203920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0010, 0x10, 0, 1),
204920e469eSHanks Chen 	PIN_FIELD_BASE(177, 177, 7, 0x0010, 0x10, 5, 1),
205920e469eSHanks Chen 	PIN_FIELD_BASE(178, 178, 7, 0x0010, 0x10, 11, 1),
206920e469eSHanks Chen 	PIN_FIELD_BASE(179, 179, 4, 0x0020, 0x10, 13, 1),
207920e469eSHanks Chen 	PIN_FIELD_BASE(180, 180, 4, 0x0020, 0x10, 10, 1),
208920e469eSHanks Chen 	PIN_FIELD_BASE(181, 183, 1, 0x0030, 0x10, 22, 1),
209920e469eSHanks Chen 	PIN_FIELD_BASE(184, 184, 1, 0x0030, 0x10, 12, 1),
210920e469eSHanks Chen 	PIN_FIELD_BASE(185, 185, 1, 0x0030, 0x10, 11, 1),
211920e469eSHanks Chen 	PIN_FIELD_BASE(186, 186, 1, 0x0030, 0x10, 13, 1),
212920e469eSHanks Chen 	PIN_FIELD_BASE(187, 187, 1, 0x0030, 0x10, 10, 1),
213920e469eSHanks Chen 	PIN_FIELD_BASE(188, 188, 1, 0x0030, 0x10, 14, 1),
214920e469eSHanks Chen 	PIN_FIELD_BASE(189, 189, 5, 0x0020, 0x10, 9, 1),
215920e469eSHanks Chen 	PIN_FIELD_BASE(190, 190, 5, 0x0020, 0x10, 18, 1),
216920e469eSHanks Chen 	PIN_FIELD_BASE(191, 192, 5, 0x0020, 0x10, 13, 1),
217920e469eSHanks Chen 	PIN_FIELD_BASE(193, 194, 5, 0x0020, 0x10, 10, 1),
218920e469eSHanks Chen 	PIN_FIELD_BASE(195, 195, 2, 0x0050, 0x10, 30, 1),
219920e469eSHanks Chen 	PIN_FIELD_BASE(196, 196, 2, 0x0050, 0x10, 25, 1),
220920e469eSHanks Chen 	PIN_FIELD_BASE(197, 197, 2, 0x0060, 0x10, 3, 1),
221920e469eSHanks Chen 	PIN_FIELD_BASE(198, 199, 4, 0x0020, 0x10, 14, 1),
222920e469eSHanks Chen 	PIN_FIELD_BASE(200, 201, 6, 0x0040, 0x10, 6, 1),
223920e469eSHanks Chen 	PIN_FIELD_BASE(202, 202, 4, 0x0020, 0x10, 9, 1),
224920e469eSHanks Chen };
225920e469eSHanks Chen 
226920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_smt_range[] = {
227920e469eSHanks Chen 	PINS_FIELD_BASE(0, 9, 6, 0x00c0, 0x10, 3, 1),
228920e469eSHanks Chen 	PIN_FIELD_BASE(10, 11, 3, 0x00e0, 0x10, 0, 1),
229920e469eSHanks Chen 	PINS_FIELD_BASE(12, 15, 3, 0x00e0, 0x10, 2, 1),
230920e469eSHanks Chen 	PIN_FIELD_BASE(16, 16, 3, 0x00e0, 0x10, 3, 1),
231920e469eSHanks Chen 	PINS_FIELD_BASE(17, 20, 6, 0x00c0, 0x10, 11, 1),
232920e469eSHanks Chen 	PINS_FIELD_BASE(21, 24, 6, 0x00c0, 0x10, 7, 1),
233920e469eSHanks Chen 	PIN_FIELD_BASE(25, 25, 6, 0x00c0, 0x10, 12, 1),
234920e469eSHanks Chen 	PIN_FIELD_BASE(26, 26, 6, 0x00c0, 0x10, 8, 1),
235920e469eSHanks Chen 	PIN_FIELD_BASE(27, 27, 6, 0x00c0, 0x10, 0, 1),
236920e469eSHanks Chen 	PIN_FIELD_BASE(28, 29, 6, 0x00c0, 0x10, 9, 1),
237920e469eSHanks Chen 	PINS_FIELD_BASE(30, 32, 6, 0x00c0, 0x10, 4, 1),
238920e469eSHanks Chen 	PIN_FIELD_BASE(33, 33, 6, 0x00c0, 0x10, 5, 1),
239920e469eSHanks Chen 	PIN_FIELD_BASE(34, 34, 6, 0x00c0, 0x10, 4, 1),
240920e469eSHanks Chen 	PINS_FIELD_BASE(35, 41, 6, 0x00c0, 0x10, 13, 1),
241920e469eSHanks Chen 	PIN_FIELD_BASE(42, 43, 6, 0x00c0, 0x10, 1, 1),
242920e469eSHanks Chen 	PIN_FIELD_BASE(44, 44, 6, 0x00c0, 0x10, 6, 1),
243920e469eSHanks Chen 	PIN_FIELD_BASE(45, 45, 3, 0x00e0, 0x10, 8, 1),
244920e469eSHanks Chen 	PIN_FIELD_BASE(46, 46, 3, 0x00e0, 0x10, 13, 1),
245920e469eSHanks Chen 	PINS_FIELD_BASE(47, 50, 3, 0x00e0, 0x10, 14, 1),
246920e469eSHanks Chen 	PIN_FIELD_BASE(51, 51, 3, 0x00e0, 0x10, 5, 1),
247920e469eSHanks Chen 	PIN_FIELD_BASE(52, 52, 3, 0x00e0, 0x10, 10, 1),
248920e469eSHanks Chen 	PIN_FIELD_BASE(53, 54, 3, 0x00e0, 0x10, 15, 1),
249920e469eSHanks Chen 	PIN_FIELD_BASE(55, 55, 3, 0x00e0, 0x10, 7, 1),
250920e469eSHanks Chen 	PIN_FIELD_BASE(56, 56, 3, 0x00e0, 0x10, 12, 1),
251920e469eSHanks Chen 	PINS_FIELD_BASE(57, 60, 3, 0x00e0, 0x10, 4, 1),
252920e469eSHanks Chen 	PIN_FIELD_BASE(61, 61, 3, 0x00e0, 0x10, 6, 1),
253920e469eSHanks Chen 	PIN_FIELD_BASE(62, 62, 3, 0x00e0, 0x10, 11, 1),
254920e469eSHanks Chen 	PINS_FIELD_BASE(63, 66, 3, 0x00e0, 0x10, 9, 1),
255920e469eSHanks Chen 	PINS_FIELD_BASE(67, 69, 2, 0x00e0, 0x10, 11, 1),
256920e469eSHanks Chen 	PIN_FIELD_BASE(70, 71, 2, 0x00e0, 0x10, 10, 1),
257920e469eSHanks Chen 	PINS_FIELD_BASE(72, 75, 4, 0x0070, 0x10, 1, 1),
258920e469eSHanks Chen 	PINS_FIELD_BASE(76, 77, 4, 0x0070, 0x10, 4, 1),
259920e469eSHanks Chen 	PINS_FIELD_BASE(78, 86, 2, 0x00e0, 0x10, 1, 1),
260920e469eSHanks Chen 	PINS_FIELD_BASE(87, 92, 2, 0x00e0, 0x10, 2, 1),
261920e469eSHanks Chen 	PIN_FIELD_BASE(93, 93, 4, 0x0070, 0x10, 0, 1),
262920e469eSHanks Chen 	PIN_FIELD_BASE(94, 94, 2, 0x00e0, 0x10, 2, 1),
263920e469eSHanks Chen 	PINS_FIELD_BASE(95, 98, 4, 0x0070, 0x10, 2, 1),
264920e469eSHanks Chen 	PINS_FIELD_BASE(99, 104, 2, 0x00e0, 0x10, 12, 1),
265920e469eSHanks Chen 	PINS_FIELD_BASE(105, 109, 2, 0x00e0, 0x10, 0, 1),
266920e469eSHanks Chen 	PIN_FIELD_BASE(110, 110, 2, 0x00e0, 0x10, 14, 1),
267920e469eSHanks Chen 	PIN_FIELD_BASE(111, 111, 2, 0x00e0, 0x10, 16, 1),
268920e469eSHanks Chen 	PIN_FIELD_BASE(112, 112, 2, 0x00e0, 0x10, 13, 1),
269920e469eSHanks Chen 	PIN_FIELD_BASE(113, 113, 2, 0x00e0, 0x10, 15, 1),
270920e469eSHanks Chen 	PINS_FIELD_BASE(114, 115, 2, 0x00e0, 0x10, 4, 1),
271920e469eSHanks Chen 	PIN_FIELD_BASE(116, 117, 2, 0x00e0, 0x10, 5, 1),
272920e469eSHanks Chen 	PINS_FIELD_BASE(118, 119, 2, 0x00e0, 0x10, 4, 1),
273920e469eSHanks Chen 	PIN_FIELD_BASE(120, 121, 2, 0x00e0, 0x10, 7, 1),
274920e469eSHanks Chen 	PINS_FIELD_BASE(122, 125, 2, 0x00e0, 0x10, 3, 1),
275920e469eSHanks Chen 	PINS_FIELD_BASE(126, 127, 1, 0x00c0, 0x10, 5, 1),
276920e469eSHanks Chen 	PINS_FIELD_BASE(128, 130, 1, 0x00c0, 0x10, 9, 1),
277920e469eSHanks Chen 	PINS_FIELD_BASE(131, 133, 1, 0x00c0, 0x10, 10, 1),
278920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x00c0, 0x10, 2, 1),
279920e469eSHanks Chen 	PINS_FIELD_BASE(136, 139, 1, 0x00c0, 0x10, 4, 1),
280920e469eSHanks Chen 	PIN_FIELD_BASE(140, 141, 1, 0x00c0, 0x10, 0, 1),
281920e469eSHanks Chen 	PIN_FIELD_BASE(142, 142, 1, 0x00c0, 0x10, 8, 1),
282920e469eSHanks Chen 	PINS_FIELD_BASE(143, 146, 5, 0x0060, 0x10, 1, 1),
283920e469eSHanks Chen 	PINS_FIELD_BASE(147, 155, 5, 0x0060, 0x10, 0, 1),
284920e469eSHanks Chen 	PIN_FIELD_BASE(156, 157, 5, 0x0060, 0x10, 6, 1),
285920e469eSHanks Chen 	PIN_FIELD_BASE(158, 158, 5, 0x0060, 0x10, 5, 1),
286920e469eSHanks Chen 	PIN_FIELD_BASE(159, 159, 5, 0x0060, 0x10, 8, 1),
287920e469eSHanks Chen 	PIN_FIELD_BASE(160, 161, 5, 0x0060, 0x10, 3, 1),
288920e469eSHanks Chen 	PINS_FIELD_BASE(162, 166, 5, 0x0060, 0x10, 2, 1),
289920e469eSHanks Chen 	PIN_FIELD_BASE(167, 167, 7, 0x0060, 0x10, 1, 1),
290920e469eSHanks Chen 	PINS_FIELD_BASE(168, 174, 7, 0x0060, 0x10, 2, 1),
291920e469eSHanks Chen 	PIN_FIELD_BASE(175, 175, 7, 0x0060, 0x10, 3, 1),
292920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0060, 0x10, 0, 1),
293920e469eSHanks Chen 	PINS_FIELD_BASE(177, 178, 7, 0x0060, 0x10, 2, 1),
294920e469eSHanks Chen 	PINS_FIELD_BASE(179, 180, 4, 0x0070, 0x10, 4, 1),
295920e469eSHanks Chen 	PIN_FIELD_BASE(181, 183, 1, 0x00c0, 0x10, 11, 1),
296920e469eSHanks Chen 	PINS_FIELD_BASE(184, 187, 1, 0x00c0, 0x10, 6, 1),
297920e469eSHanks Chen 	PIN_FIELD_BASE(188, 188, 1, 0x00c0, 0x10, 7, 1),
298920e469eSHanks Chen 	PINS_FIELD_BASE(189, 194, 5, 0x0060, 0x10, 1, 1),
299920e469eSHanks Chen 	PIN_FIELD_BASE(195, 195, 2, 0x00e0, 0x10, 3, 1),
300920e469eSHanks Chen 	PIN_FIELD_BASE(196, 196, 2, 0x00e0, 0x10, 9, 1),
301920e469eSHanks Chen 	PIN_FIELD_BASE(197, 197, 2, 0x00e0, 0x10, 3, 1),
302920e469eSHanks Chen 	PIN_FIELD_BASE(198, 199, 4, 0x0070, 0x10, 5, 1),
303920e469eSHanks Chen 	PIN_FIELD_BASE(200, 201, 6, 0x00c0, 0x10, 14, 1),
304920e469eSHanks Chen 	PIN_FIELD_BASE(202, 202, 4, 0x0070, 0x10, 3, 1),
305920e469eSHanks Chen };
306920e469eSHanks Chen 
307920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_pu_range[] = {
308920e469eSHanks Chen 	PIN_FIELD_BASE(0, 9, 6, 0x0070, 0x10, 3, 1),
309920e469eSHanks Chen 	PIN_FIELD_BASE(16, 16, 3, 0x0080, 0x10, 0, 1),
310920e469eSHanks Chen 	PIN_FIELD_BASE(17, 18, 6, 0x0070, 0x10, 28, 1),
311920e469eSHanks Chen 	PIN_FIELD_BASE(19, 19, 6, 0x0070, 0x10, 27, 1),
312920e469eSHanks Chen 	PIN_FIELD_BASE(20, 20, 6, 0x0070, 0x10, 26, 1),
313920e469eSHanks Chen 	PIN_FIELD_BASE(21, 24, 6, 0x0070, 0x10, 19, 1),
314920e469eSHanks Chen 	PIN_FIELD_BASE(25, 25, 6, 0x0070, 0x10, 30, 1),
315920e469eSHanks Chen 	PIN_FIELD_BASE(26, 26, 6, 0x0070, 0x10, 23, 1),
316920e469eSHanks Chen 	PIN_FIELD_BASE(27, 27, 6, 0x0070, 0x10, 0, 1),
317920e469eSHanks Chen 	PIN_FIELD_BASE(28, 29, 6, 0x0070, 0x10, 24, 1),
318920e469eSHanks Chen 	PIN_FIELD_BASE(30, 30, 6, 0x0070, 0x10, 16, 1),
319920e469eSHanks Chen 	PIN_FIELD_BASE(31, 31, 6, 0x0070, 0x10, 13, 1),
320920e469eSHanks Chen 	PIN_FIELD_BASE(32, 32, 6, 0x0070, 0x10, 15, 1),
321920e469eSHanks Chen 	PIN_FIELD_BASE(33, 33, 6, 0x0070, 0x10, 17, 1),
322920e469eSHanks Chen 	PIN_FIELD_BASE(34, 34, 6, 0x0070, 0x10, 14, 1),
323920e469eSHanks Chen 	PIN_FIELD_BASE(35, 35, 6, 0x0080, 0x10, 5, 1),
324920e469eSHanks Chen 	PIN_FIELD_BASE(36, 36, 6, 0x0080, 0x10, 0, 1),
325920e469eSHanks Chen 	PIN_FIELD_BASE(37, 37, 6, 0x0080, 0x10, 6, 1),
326920e469eSHanks Chen 	PIN_FIELD_BASE(38, 41, 6, 0x0080, 0x10, 1, 1),
327920e469eSHanks Chen 	PIN_FIELD_BASE(42, 43, 6, 0x0070, 0x10, 1, 1),
328920e469eSHanks Chen 	PIN_FIELD_BASE(44, 44, 6, 0x0070, 0x10, 18, 1),
329920e469eSHanks Chen 	PIN_FIELD_BASE(45, 45, 3, 0x0080, 0x10, 4, 1),
330920e469eSHanks Chen 	PIN_FIELD_BASE(46, 46, 3, 0x0080, 0x10, 12, 1),
331920e469eSHanks Chen 	PIN_FIELD_BASE(47, 47, 3, 0x0080, 0x10, 15, 1),
332920e469eSHanks Chen 	PIN_FIELD_BASE(48, 48, 3, 0x0080, 0x10, 14, 1),
333920e469eSHanks Chen 	PIN_FIELD_BASE(49, 49, 3, 0x0080, 0x10, 16, 1),
334920e469eSHanks Chen 	PIN_FIELD_BASE(50, 50, 3, 0x0080, 0x10, 13, 1),
335920e469eSHanks Chen 	PIN_FIELD_BASE(51, 51, 3, 0x0080, 0x10, 1, 1),
336920e469eSHanks Chen 	PIN_FIELD_BASE(52, 52, 3, 0x0080, 0x10, 9, 1),
337920e469eSHanks Chen 	PIN_FIELD_BASE(53, 54, 3, 0x0080, 0x10, 18, 1),
338920e469eSHanks Chen 	PIN_FIELD_BASE(55, 55, 3, 0x0080, 0x10, 3, 1),
339920e469eSHanks Chen 	PIN_FIELD_BASE(56, 56, 3, 0x0080, 0x10, 11, 1),
340920e469eSHanks Chen 	PIN_FIELD_BASE(61, 61, 3, 0x0080, 0x10, 2, 1),
341920e469eSHanks Chen 	PIN_FIELD_BASE(62, 62, 3, 0x0080, 0x10, 10, 1),
342920e469eSHanks Chen 	PIN_FIELD_BASE(63, 63, 3, 0x0080, 0x10, 7, 1),
343920e469eSHanks Chen 	PIN_FIELD_BASE(64, 64, 3, 0x0080, 0x10, 6, 1),
344920e469eSHanks Chen 	PIN_FIELD_BASE(65, 65, 3, 0x0080, 0x10, 8, 1),
345920e469eSHanks Chen 	PIN_FIELD_BASE(66, 66, 3, 0x0080, 0x10, 5, 1),
346920e469eSHanks Chen 	PIN_FIELD_BASE(67, 67, 2, 0x00a0, 0x10, 7, 1),
347920e469eSHanks Chen 	PIN_FIELD_BASE(68, 68, 2, 0x00a0, 0x10, 6, 1),
348920e469eSHanks Chen 	PIN_FIELD_BASE(69, 69, 2, 0x00a0, 0x10, 8, 1),
349920e469eSHanks Chen 	PIN_FIELD_BASE(70, 71, 2, 0x00a0, 0x10, 4, 1),
350920e469eSHanks Chen 	PIN_FIELD_BASE(72, 72, 4, 0x0040, 0x10, 3, 1),
351920e469eSHanks Chen 	PIN_FIELD_BASE(73, 73, 4, 0x0040, 0x10, 2, 1),
352920e469eSHanks Chen 	PIN_FIELD_BASE(74, 74, 4, 0x0040, 0x10, 1, 1),
353920e469eSHanks Chen 	PIN_FIELD_BASE(75, 75, 4, 0x0040, 0x10, 4, 1),
354920e469eSHanks Chen 	PIN_FIELD_BASE(76, 76, 4, 0x0040, 0x10, 12, 1),
355920e469eSHanks Chen 	PIN_FIELD_BASE(77, 77, 4, 0x0040, 0x10, 11, 1),
356920e469eSHanks Chen 	PIN_FIELD_BASE(78, 78, 2, 0x0090, 0x10, 18, 1),
357920e469eSHanks Chen 	PIN_FIELD_BASE(79, 79, 2, 0x0090, 0x10, 17, 1),
358920e469eSHanks Chen 	PIN_FIELD_BASE(80, 81, 2, 0x0090, 0x10, 19, 1),
359920e469eSHanks Chen 	PIN_FIELD_BASE(82, 88, 2, 0x0090, 0x10, 1, 1),
360920e469eSHanks Chen 	PIN_FIELD_BASE(89, 89, 2, 0x0090, 0x10, 16, 1),
361920e469eSHanks Chen 	PIN_FIELD_BASE(90, 90, 2, 0x0090, 0x10, 15, 1),
362920e469eSHanks Chen 	PIN_FIELD_BASE(91, 91, 2, 0x0090, 0x10, 14, 1),
363920e469eSHanks Chen 	PIN_FIELD_BASE(92, 92, 2, 0x0090, 0x10, 8, 1),
364920e469eSHanks Chen 	PIN_FIELD_BASE(93, 93, 4, 0x0040, 0x10, 0, 1),
365920e469eSHanks Chen 	PIN_FIELD_BASE(94, 94, 2, 0x0090, 0x10, 0, 1),
366920e469eSHanks Chen 	PIN_FIELD_BASE(95, 95, 4, 0x0040, 0x10, 7, 1),
367920e469eSHanks Chen 	PIN_FIELD_BASE(96, 96, 4, 0x0040, 0x10, 5, 1),
368920e469eSHanks Chen 	PIN_FIELD_BASE(97, 97, 4, 0x0040, 0x10, 8, 1),
369920e469eSHanks Chen 	PIN_FIELD_BASE(98, 98, 4, 0x0040, 0x10, 6, 1),
370920e469eSHanks Chen 	PIN_FIELD_BASE(99, 99, 2, 0x00a0, 0x10, 9, 1),
371920e469eSHanks Chen 	PIN_FIELD_BASE(100, 100, 2, 0x00a0, 0x10, 12, 1),
372920e469eSHanks Chen 	PIN_FIELD_BASE(101, 101, 2, 0x00a0, 0x10, 10, 1),
373920e469eSHanks Chen 	PIN_FIELD_BASE(102, 102, 2, 0x00a0, 0x10, 13, 1),
374920e469eSHanks Chen 	PIN_FIELD_BASE(103, 103, 2, 0x00a0, 0x10, 11, 1),
375920e469eSHanks Chen 	PIN_FIELD_BASE(104, 104, 2, 0x00a0, 0x10, 14, 1),
376920e469eSHanks Chen 	PIN_FIELD_BASE(105, 105, 2, 0x0090, 0x10, 10, 1),
377920e469eSHanks Chen 	PIN_FIELD_BASE(106, 106, 2, 0x0090, 0x10, 9, 1),
378920e469eSHanks Chen 	PIN_FIELD_BASE(107, 108, 2, 0x0090, 0x10, 12, 1),
379920e469eSHanks Chen 	PIN_FIELD_BASE(109, 109, 2, 0x0090, 0x10, 11, 1),
380920e469eSHanks Chen 	PIN_FIELD_BASE(110, 110, 2, 0x00a0, 0x10, 16, 1),
381920e469eSHanks Chen 	PIN_FIELD_BASE(111, 111, 2, 0x00a0, 0x10, 18, 1),
382920e469eSHanks Chen 	PIN_FIELD_BASE(112, 112, 2, 0x00a0, 0x10, 15, 1),
383920e469eSHanks Chen 	PIN_FIELD_BASE(113, 113, 2, 0x00a0, 0x10, 17, 1),
384920e469eSHanks Chen 	PIN_FIELD_BASE(114, 115, 2, 0x0090, 0x10, 26, 1),
385920e469eSHanks Chen 	PIN_FIELD_BASE(116, 117, 2, 0x0090, 0x10, 21, 1),
386920e469eSHanks Chen 	PIN_FIELD_BASE(118, 118, 2, 0x0090, 0x10, 31, 1),
387920e469eSHanks Chen 	PIN_FIELD_BASE(119, 119, 2, 0x00a0, 0x10, 0, 1),
388920e469eSHanks Chen 	PIN_FIELD_BASE(120, 121, 2, 0x0090, 0x10, 23, 1),
389920e469eSHanks Chen 	PIN_FIELD_BASE(122, 123, 2, 0x0090, 0x10, 28, 1),
390920e469eSHanks Chen 	PIN_FIELD_BASE(124, 125, 2, 0x00a0, 0x10, 1, 1),
391920e469eSHanks Chen 	PIN_FIELD_BASE(126, 127, 1, 0x0070, 0x10, 2, 1),
392920e469eSHanks Chen 	PIN_FIELD_BASE(140, 141, 1, 0x0070, 0x10, 0, 1),
393920e469eSHanks Chen 	PIN_FIELD_BASE(142, 142, 1, 0x0070, 0x10, 9, 1),
394920e469eSHanks Chen 	PIN_FIELD_BASE(143, 143, 5, 0x0040, 0x10, 15, 1),
395920e469eSHanks Chen 	PIN_FIELD_BASE(144, 144, 5, 0x0040, 0x10, 17, 1),
396920e469eSHanks Chen 	PIN_FIELD_BASE(145, 145, 5, 0x0040, 0x10, 16, 1),
397920e469eSHanks Chen 	PIN_FIELD_BASE(146, 146, 5, 0x0040, 0x10, 12, 1),
398920e469eSHanks Chen 	PIN_FIELD_BASE(147, 155, 5, 0x0040, 0x10, 0, 1),
399920e469eSHanks Chen 	PIN_FIELD_BASE(156, 157, 5, 0x0040, 0x10, 22, 1),
400920e469eSHanks Chen 	PIN_FIELD_BASE(158, 158, 5, 0x0040, 0x10, 21, 1),
401920e469eSHanks Chen 	PIN_FIELD_BASE(159, 159, 5, 0x0040, 0x10, 24, 1),
402920e469eSHanks Chen 	PIN_FIELD_BASE(160, 161, 5, 0x0040, 0x10, 19, 1),
403920e469eSHanks Chen 	PIN_FIELD_BASE(162, 166, 5, 0x0040, 0x10, 25, 1),
404920e469eSHanks Chen 	PIN_FIELD_BASE(179, 179, 4, 0x0040, 0x10, 13, 1),
405920e469eSHanks Chen 	PIN_FIELD_BASE(180, 180, 4, 0x0040, 0x10, 10, 1),
406920e469eSHanks Chen 	PIN_FIELD_BASE(181, 183, 1, 0x0070, 0x10, 10, 1),
407920e469eSHanks Chen 	PIN_FIELD_BASE(184, 184, 1, 0x0070, 0x10, 6, 1),
408920e469eSHanks Chen 	PIN_FIELD_BASE(185, 185, 1, 0x0070, 0x10, 5, 1),
409920e469eSHanks Chen 	PIN_FIELD_BASE(186, 186, 1, 0x0070, 0x10, 7, 1),
410920e469eSHanks Chen 	PIN_FIELD_BASE(187, 187, 1, 0x0070, 0x10, 4, 1),
411920e469eSHanks Chen 	PIN_FIELD_BASE(188, 188, 1, 0x0070, 0x10, 8, 1),
412920e469eSHanks Chen 	PIN_FIELD_BASE(189, 189, 5, 0x0040, 0x10, 9, 1),
413920e469eSHanks Chen 	PIN_FIELD_BASE(190, 190, 5, 0x0040, 0x10, 18, 1),
414920e469eSHanks Chen 	PIN_FIELD_BASE(191, 192, 5, 0x0040, 0x10, 13, 1),
415920e469eSHanks Chen 	PIN_FIELD_BASE(193, 194, 5, 0x0040, 0x10, 10, 1),
416920e469eSHanks Chen 	PIN_FIELD_BASE(195, 195, 2, 0x0090, 0x10, 30, 1),
417920e469eSHanks Chen 	PIN_FIELD_BASE(196, 196, 2, 0x0090, 0x10, 25, 1),
418920e469eSHanks Chen 	PIN_FIELD_BASE(197, 197, 2, 0x00a0, 0x10, 3, 1),
419920e469eSHanks Chen 	PIN_FIELD_BASE(198, 199, 4, 0x0040, 0x10, 14, 1),
420920e469eSHanks Chen 	PIN_FIELD_BASE(200, 201, 6, 0x0080, 0x10, 7, 1),
421920e469eSHanks Chen 	PIN_FIELD_BASE(202, 202, 4, 0x0040, 0x10, 9, 1),
422920e469eSHanks Chen };
423920e469eSHanks Chen 
424920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_pd_range[] = {
425920e469eSHanks Chen 	PIN_FIELD_BASE(0, 9, 6, 0x0050, 0x10, 3, 1),
426920e469eSHanks Chen 	PIN_FIELD_BASE(16, 16, 3, 0x0060, 0x10, 0, 1),
427920e469eSHanks Chen 	PIN_FIELD_BASE(17, 18, 6, 0x0050, 0x10, 28, 1),
428920e469eSHanks Chen 	PIN_FIELD_BASE(19, 19, 6, 0x0050, 0x10, 27, 1),
429920e469eSHanks Chen 	PIN_FIELD_BASE(20, 20, 6, 0x0050, 0x10, 26, 1),
430920e469eSHanks Chen 	PIN_FIELD_BASE(21, 24, 6, 0x0050, 0x10, 19, 1),
431920e469eSHanks Chen 	PIN_FIELD_BASE(25, 25, 6, 0x0050, 0x10, 30, 1),
432920e469eSHanks Chen 	PIN_FIELD_BASE(26, 26, 6, 0x0050, 0x10, 23, 1),
433920e469eSHanks Chen 	PIN_FIELD_BASE(27, 27, 6, 0x0050, 0x10, 0, 1),
434920e469eSHanks Chen 	PIN_FIELD_BASE(28, 29, 6, 0x0050, 0x10, 24, 1),
435920e469eSHanks Chen 	PIN_FIELD_BASE(30, 30, 6, 0x0050, 0x10, 16, 1),
436920e469eSHanks Chen 	PIN_FIELD_BASE(31, 31, 6, 0x0050, 0x10, 13, 1),
437920e469eSHanks Chen 	PIN_FIELD_BASE(32, 32, 6, 0x0050, 0x10, 15, 1),
438920e469eSHanks Chen 	PIN_FIELD_BASE(33, 33, 6, 0x0050, 0x10, 17, 1),
439920e469eSHanks Chen 	PIN_FIELD_BASE(34, 34, 6, 0x0050, 0x10, 14, 1),
440920e469eSHanks Chen 	PIN_FIELD_BASE(35, 35, 6, 0x0060, 0x10, 5, 1),
441920e469eSHanks Chen 	PIN_FIELD_BASE(36, 36, 6, 0x0060, 0x10, 0, 1),
442920e469eSHanks Chen 	PIN_FIELD_BASE(37, 37, 6, 0x0060, 0x10, 6, 1),
443920e469eSHanks Chen 	PIN_FIELD_BASE(38, 41, 6, 0x0060, 0x10, 1, 1),
444920e469eSHanks Chen 	PIN_FIELD_BASE(42, 43, 6, 0x0050, 0x10, 1, 1),
445920e469eSHanks Chen 	PIN_FIELD_BASE(44, 44, 6, 0x0050, 0x10, 18, 1),
446920e469eSHanks Chen 	PIN_FIELD_BASE(45, 45, 3, 0x0060, 0x10, 4, 1),
447920e469eSHanks Chen 	PIN_FIELD_BASE(46, 46, 3, 0x0060, 0x10, 12, 1),
448920e469eSHanks Chen 	PIN_FIELD_BASE(47, 47, 3, 0x0060, 0x10, 15, 1),
449920e469eSHanks Chen 	PIN_FIELD_BASE(48, 48, 3, 0x0060, 0x10, 14, 1),
450920e469eSHanks Chen 	PIN_FIELD_BASE(49, 49, 3, 0x0060, 0x10, 16, 1),
451920e469eSHanks Chen 	PIN_FIELD_BASE(50, 50, 3, 0x0060, 0x10, 13, 1),
452920e469eSHanks Chen 	PIN_FIELD_BASE(51, 51, 3, 0x0060, 0x10, 1, 1),
453920e469eSHanks Chen 	PIN_FIELD_BASE(52, 52, 3, 0x0060, 0x10, 9, 1),
454920e469eSHanks Chen 	PIN_FIELD_BASE(53, 54, 3, 0x0060, 0x10, 18, 1),
455920e469eSHanks Chen 	PIN_FIELD_BASE(55, 55, 3, 0x0060, 0x10, 3, 1),
456920e469eSHanks Chen 	PIN_FIELD_BASE(56, 56, 3, 0x0060, 0x10, 11, 1),
457920e469eSHanks Chen 	PIN_FIELD_BASE(61, 61, 3, 0x0060, 0x10, 2, 1),
458920e469eSHanks Chen 	PIN_FIELD_BASE(62, 62, 3, 0x0060, 0x10, 10, 1),
459920e469eSHanks Chen 	PIN_FIELD_BASE(63, 63, 3, 0x0060, 0x10, 7, 1),
460920e469eSHanks Chen 	PIN_FIELD_BASE(64, 64, 3, 0x0060, 0x10, 6, 1),
461920e469eSHanks Chen 	PIN_FIELD_BASE(65, 65, 3, 0x0060, 0x10, 8, 1),
462920e469eSHanks Chen 	PIN_FIELD_BASE(66, 66, 3, 0x0060, 0x10, 5, 1),
463920e469eSHanks Chen 	PIN_FIELD_BASE(67, 67, 2, 0x0080, 0x10, 7, 1),
464920e469eSHanks Chen 	PIN_FIELD_BASE(68, 68, 2, 0x0080, 0x10, 6, 1),
465920e469eSHanks Chen 	PIN_FIELD_BASE(69, 69, 2, 0x0080, 0x10, 8, 1),
466920e469eSHanks Chen 	PIN_FIELD_BASE(70, 71, 2, 0x0080, 0x10, 4, 1),
467920e469eSHanks Chen 	PIN_FIELD_BASE(72, 72, 4, 0x0030, 0x10, 3, 1),
468920e469eSHanks Chen 	PIN_FIELD_BASE(73, 73, 4, 0x0030, 0x10, 2, 1),
469920e469eSHanks Chen 	PIN_FIELD_BASE(74, 74, 4, 0x0030, 0x10, 1, 1),
470920e469eSHanks Chen 	PIN_FIELD_BASE(75, 75, 4, 0x0030, 0x10, 4, 1),
471920e469eSHanks Chen 	PIN_FIELD_BASE(76, 76, 4, 0x0030, 0x10, 12, 1),
472920e469eSHanks Chen 	PIN_FIELD_BASE(77, 77, 4, 0x0030, 0x10, 11, 1),
473920e469eSHanks Chen 	PIN_FIELD_BASE(78, 78, 2, 0x0070, 0x10, 18, 1),
474920e469eSHanks Chen 	PIN_FIELD_BASE(79, 79, 2, 0x0070, 0x10, 17, 1),
475920e469eSHanks Chen 	PIN_FIELD_BASE(80, 81, 2, 0x0070, 0x10, 19, 1),
476920e469eSHanks Chen 	PIN_FIELD_BASE(82, 88, 2, 0x0070, 0x10, 1, 1),
477920e469eSHanks Chen 	PIN_FIELD_BASE(89, 89, 2, 0x0070, 0x10, 16, 1),
478920e469eSHanks Chen 	PIN_FIELD_BASE(90, 90, 2, 0x0070, 0x10, 15, 1),
479920e469eSHanks Chen 	PIN_FIELD_BASE(91, 91, 2, 0x0070, 0x10, 14, 1),
480920e469eSHanks Chen 	PIN_FIELD_BASE(92, 92, 2, 0x0070, 0x10, 8, 1),
481920e469eSHanks Chen 	PIN_FIELD_BASE(93, 93, 4, 0x0030, 0x10, 0, 1),
482920e469eSHanks Chen 	PIN_FIELD_BASE(94, 94, 2, 0x0070, 0x10, 0, 1),
483920e469eSHanks Chen 	PIN_FIELD_BASE(95, 95, 4, 0x0030, 0x10, 7, 1),
484920e469eSHanks Chen 	PIN_FIELD_BASE(96, 96, 4, 0x0030, 0x10, 5, 1),
485920e469eSHanks Chen 	PIN_FIELD_BASE(97, 97, 4, 0x0030, 0x10, 8, 1),
486920e469eSHanks Chen 	PIN_FIELD_BASE(98, 98, 4, 0x0030, 0x10, 6, 1),
487920e469eSHanks Chen 	PIN_FIELD_BASE(99, 99, 2, 0x0080, 0x10, 9, 1),
488920e469eSHanks Chen 	PIN_FIELD_BASE(100, 100, 2, 0x0080, 0x10, 12, 1),
489920e469eSHanks Chen 	PIN_FIELD_BASE(101, 101, 2, 0x0080, 0x10, 10, 1),
490920e469eSHanks Chen 	PIN_FIELD_BASE(102, 102, 2, 0x0080, 0x10, 13, 1),
491920e469eSHanks Chen 	PIN_FIELD_BASE(103, 103, 2, 0x0080, 0x10, 11, 1),
492920e469eSHanks Chen 	PIN_FIELD_BASE(104, 104, 2, 0x0080, 0x10, 14, 1),
493920e469eSHanks Chen 	PIN_FIELD_BASE(105, 105, 2, 0x0070, 0x10, 10, 1),
494920e469eSHanks Chen 	PIN_FIELD_BASE(106, 106, 2, 0x0070, 0x10, 9, 1),
495920e469eSHanks Chen 	PIN_FIELD_BASE(107, 108, 2, 0x0070, 0x10, 12, 1),
496920e469eSHanks Chen 	PIN_FIELD_BASE(109, 109, 2, 0x0070, 0x10, 11, 1),
497920e469eSHanks Chen 	PIN_FIELD_BASE(110, 110, 2, 0x0080, 0x10, 16, 1),
498920e469eSHanks Chen 	PIN_FIELD_BASE(111, 111, 2, 0x0080, 0x10, 18, 1),
499920e469eSHanks Chen 	PIN_FIELD_BASE(112, 112, 2, 0x0080, 0x10, 15, 1),
500920e469eSHanks Chen 	PIN_FIELD_BASE(113, 113, 2, 0x0080, 0x10, 17, 1),
501920e469eSHanks Chen 	PIN_FIELD_BASE(114, 115, 2, 0x0070, 0x10, 26, 1),
502920e469eSHanks Chen 	PIN_FIELD_BASE(116, 117, 2, 0x0070, 0x10, 21, 1),
503920e469eSHanks Chen 	PIN_FIELD_BASE(118, 118, 2, 0x0070, 0x10, 31, 1),
504920e469eSHanks Chen 	PIN_FIELD_BASE(119, 119, 2, 0x0080, 0x10, 0, 1),
505920e469eSHanks Chen 	PIN_FIELD_BASE(120, 121, 2, 0x0070, 0x10, 23, 1),
506920e469eSHanks Chen 	PIN_FIELD_BASE(122, 123, 2, 0x0070, 0x10, 28, 1),
507920e469eSHanks Chen 	PIN_FIELD_BASE(124, 125, 2, 0x0080, 0x10, 1, 1),
508920e469eSHanks Chen 	PIN_FIELD_BASE(126, 127, 1, 0x0050, 0x10, 2, 1),
509920e469eSHanks Chen 	PIN_FIELD_BASE(140, 141, 1, 0x0050, 0x10, 0, 1),
510920e469eSHanks Chen 	PIN_FIELD_BASE(142, 142, 1, 0x0050, 0x10, 9, 1),
511920e469eSHanks Chen 	PIN_FIELD_BASE(143, 143, 5, 0x0030, 0x10, 15, 1),
512920e469eSHanks Chen 	PIN_FIELD_BASE(144, 144, 5, 0x0030, 0x10, 17, 1),
513920e469eSHanks Chen 	PIN_FIELD_BASE(145, 145, 5, 0x0030, 0x10, 16, 1),
514920e469eSHanks Chen 	PIN_FIELD_BASE(146, 146, 5, 0x0030, 0x10, 12, 1),
515920e469eSHanks Chen 	PIN_FIELD_BASE(147, 155, 5, 0x0030, 0x10, 0, 1),
516920e469eSHanks Chen 	PIN_FIELD_BASE(156, 157, 5, 0x0030, 0x10, 22, 1),
517920e469eSHanks Chen 	PIN_FIELD_BASE(158, 158, 5, 0x0030, 0x10, 21, 1),
518920e469eSHanks Chen 	PIN_FIELD_BASE(159, 159, 5, 0x0030, 0x10, 24, 1),
519920e469eSHanks Chen 	PIN_FIELD_BASE(160, 161, 5, 0x0030, 0x10, 19, 1),
520920e469eSHanks Chen 	PIN_FIELD_BASE(162, 166, 5, 0x0030, 0x10, 25, 1),
521920e469eSHanks Chen 	PIN_FIELD_BASE(179, 179, 4, 0x0030, 0x10, 13, 1),
522920e469eSHanks Chen 	PIN_FIELD_BASE(180, 180, 4, 0x0030, 0x10, 10, 1),
523920e469eSHanks Chen 	PIN_FIELD_BASE(181, 183, 1, 0x0050, 0x10, 10, 1),
524920e469eSHanks Chen 	PIN_FIELD_BASE(184, 184, 1, 0x0050, 0x10, 6, 1),
525920e469eSHanks Chen 	PIN_FIELD_BASE(185, 185, 1, 0x0050, 0x10, 5, 1),
526920e469eSHanks Chen 	PIN_FIELD_BASE(186, 186, 1, 0x0050, 0x10, 7, 1),
527920e469eSHanks Chen 	PIN_FIELD_BASE(187, 187, 1, 0x0050, 0x10, 4, 1),
528920e469eSHanks Chen 	PIN_FIELD_BASE(188, 188, 1, 0x0050, 0x10, 8, 1),
529920e469eSHanks Chen 	PIN_FIELD_BASE(189, 189, 5, 0x0030, 0x10, 9, 1),
530920e469eSHanks Chen 	PIN_FIELD_BASE(190, 190, 5, 0x0030, 0x10, 18, 1),
531920e469eSHanks Chen 	PIN_FIELD_BASE(191, 192, 5, 0x0030, 0x10, 13, 1),
532920e469eSHanks Chen 	PIN_FIELD_BASE(193, 194, 5, 0x0030, 0x10, 10, 1),
533920e469eSHanks Chen 	PIN_FIELD_BASE(195, 195, 2, 0x0070, 0x10, 30, 1),
534920e469eSHanks Chen 	PIN_FIELD_BASE(196, 196, 2, 0x0070, 0x10, 25, 1),
535920e469eSHanks Chen 	PIN_FIELD_BASE(197, 197, 2, 0x0080, 0x10, 3, 1),
536920e469eSHanks Chen 	PIN_FIELD_BASE(198, 199, 4, 0x0030, 0x10, 14, 1),
537920e469eSHanks Chen 	PIN_FIELD_BASE(200, 201, 6, 0x0060, 0x10, 7, 1),
538920e469eSHanks Chen 	PIN_FIELD_BASE(202, 202, 4, 0x0030, 0x10, 9, 1),
539920e469eSHanks Chen };
540920e469eSHanks Chen 
541920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_drv_range[] = {
542920e469eSHanks Chen 	PINS_FIELD_BASE(0, 9, 6, 0x0000, 0x10, 9, 3),
543920e469eSHanks Chen 	PIN_FIELD_BASE(10, 16, 3, 0x0000, 0x10, 0, 3),
544920e469eSHanks Chen 	PINS_FIELD_BASE(17, 19, 6, 0x0010, 0x10, 3, 3),
545920e469eSHanks Chen 	PIN_FIELD_BASE(20, 20, 6, 0x0010, 0x10, 6, 3),
546920e469eSHanks Chen 	PINS_FIELD_BASE(21, 24, 6, 0x0000, 0x10, 21, 3),
547920e469eSHanks Chen 	PIN_FIELD_BASE(25, 25, 6, 0x0010, 0x10, 9, 3),
548920e469eSHanks Chen 	PIN_FIELD_BASE(26, 26, 6, 0x0000, 0x10, 24, 3),
549920e469eSHanks Chen 	PIN_FIELD_BASE(27, 27, 6, 0x0000, 0x10, 0, 3),
550920e469eSHanks Chen 	PIN_FIELD_BASE(28, 28, 6, 0x0000, 0x10, 27, 3),
551920e469eSHanks Chen 	PIN_FIELD_BASE(29, 29, 6, 0x0010, 0x10, 0, 3),
552920e469eSHanks Chen 	PINS_FIELD_BASE(30, 32, 6, 0x0000, 0x10, 12, 3),
553920e469eSHanks Chen 	PIN_FIELD_BASE(33, 33, 6, 0x0000, 0x10, 15, 3),
554920e469eSHanks Chen 	PIN_FIELD_BASE(34, 34, 6, 0x0000, 0x10, 12, 3),
555920e469eSHanks Chen 	PINS_FIELD_BASE(35, 41, 6, 0x0010, 0x10, 12, 3),
556920e469eSHanks Chen 	PIN_FIELD_BASE(42, 43, 6, 0x0000, 0x10, 3, 3),
557920e469eSHanks Chen 	PIN_FIELD_BASE(44, 44, 6, 0x0000, 0x10, 18, 3),
558920e469eSHanks Chen 	PIN_FIELD_BASE(45, 45, 3, 0x0010, 0x10, 12, 3),
559920e469eSHanks Chen 	PIN_FIELD_BASE(46, 46, 3, 0x0020, 0x10, 0, 3),
560920e469eSHanks Chen 	PINS_FIELD_BASE(47, 49, 3, 0x0020, 0x10, 3, 3),
561920e469eSHanks Chen 	PIN_FIELD_BASE(50, 50, 3, 0x0020, 0x10, 6, 3),
562920e469eSHanks Chen 	PIN_FIELD_BASE(51, 51, 3, 0x0010, 0x10, 3, 3),
563920e469eSHanks Chen 	PIN_FIELD_BASE(52, 52, 3, 0x0010, 0x10, 21, 3),
564920e469eSHanks Chen 	PINS_FIELD_BASE(53, 54, 3, 0x0020, 0x10, 9, 3),
565920e469eSHanks Chen 	PIN_FIELD_BASE(55, 55, 3, 0x0010, 0x10, 9, 3),
566920e469eSHanks Chen 	PIN_FIELD_BASE(56, 56, 3, 0x0010, 0x10, 27, 3),
567920e469eSHanks Chen 	PIN_FIELD_BASE(57, 57, 3, 0x0010, 0x10, 0, 3),
568920e469eSHanks Chen 	PIN_FIELD_BASE(58, 58, 3, 0x0000, 0x10, 27, 3),
569920e469eSHanks Chen 	PIN_FIELD_BASE(59, 60, 3, 0x0000, 0x10, 21, 3),
570920e469eSHanks Chen 	PIN_FIELD_BASE(61, 61, 3, 0x0010, 0x10, 6, 3),
571920e469eSHanks Chen 	PIN_FIELD_BASE(62, 62, 3, 0x0010, 0x10, 24, 3),
572920e469eSHanks Chen 	PINS_FIELD_BASE(63, 65, 3, 0x0010, 0x10, 15, 3),
573920e469eSHanks Chen 	PIN_FIELD_BASE(66, 66, 3, 0x0010, 0x10, 18, 3),
574920e469eSHanks Chen 	PINS_FIELD_BASE(67, 69, 2, 0x0010, 0x10, 3, 3),
575920e469eSHanks Chen 	PIN_FIELD_BASE(70, 71, 2, 0x0010, 0x10, 0, 3),
576920e469eSHanks Chen 	PINS_FIELD_BASE(72, 75, 4, 0x0000, 0x10, 0, 3),
577920e469eSHanks Chen 	PINS_FIELD_BASE(76, 77, 4, 0x0000, 0x10, 15, 3),
578920e469eSHanks Chen 	PINS_FIELD_BASE(78, 86, 2, 0x0000, 0x10, 3, 3),
579920e469eSHanks Chen 	PINS_FIELD_BASE(87, 92, 2, 0x0000, 0x10, 6, 3),
580920e469eSHanks Chen 	PIN_FIELD_BASE(93, 93, 4, 0x0000, 0x10, 3, 3),
581920e469eSHanks Chen 	PIN_FIELD_BASE(94, 94, 2, 0x0000, 0x10, 6, 3),
582920e469eSHanks Chen 	PINS_FIELD_BASE(95, 96, 4, 0x0000, 0x10, 6, 3),
583920e469eSHanks Chen 	PINS_FIELD_BASE(97, 98, 4, 0x0000, 0x10, 9, 3),
584920e469eSHanks Chen 	PINS_FIELD_BASE(99, 100, 2, 0x0010, 0x10, 6, 3),
585920e469eSHanks Chen 	PINS_FIELD_BASE(101, 102, 2, 0x0010, 0x10, 9, 3),
586920e469eSHanks Chen 	PINS_FIELD_BASE(103, 104, 2, 0x0010, 0x10, 12, 3),
587920e469eSHanks Chen 	PINS_FIELD_BASE(105, 109, 2, 0x0000, 0x10, 0, 3),
588920e469eSHanks Chen 	PIN_FIELD_BASE(110, 110, 2, 0x0010, 0x10, 18, 3),
589920e469eSHanks Chen 	PIN_FIELD_BASE(111, 111, 2, 0x0010, 0x10, 24, 3),
590920e469eSHanks Chen 	PIN_FIELD_BASE(112, 112, 2, 0x0010, 0x10, 15, 3),
591920e469eSHanks Chen 	PIN_FIELD_BASE(113, 113, 2, 0x0010, 0x10, 21, 3),
592920e469eSHanks Chen 	PINS_FIELD_BASE(114, 115, 2, 0x0000, 0x10, 12, 3),
593920e469eSHanks Chen 	PIN_FIELD_BASE(116, 117, 2, 0x0000, 0x10, 15, 3),
594920e469eSHanks Chen 	PINS_FIELD_BASE(118, 119, 2, 0x0000, 0x10, 12, 3),
595920e469eSHanks Chen 	PIN_FIELD_BASE(120, 121, 2, 0x0000, 0x10, 21, 3),
596920e469eSHanks Chen 	PINS_FIELD_BASE(122, 125, 2, 0x0000, 0x10, 9, 3),
597920e469eSHanks Chen 	PINS_FIELD_BASE(126, 127, 1, 0x0000, 0x10, 12, 3),
598920e469eSHanks Chen 	PIN_FIELD_BASE(128, 128, 1, 0x0000, 0x10, 29, 2),
599920e469eSHanks Chen 	PIN_FIELD_BASE(129, 129, 1, 0x0010, 0x10, 0, 2),
600920e469eSHanks Chen 	PIN_FIELD_BASE(130, 130, 1, 0x0000, 0x10, 27, 2),
601920e469eSHanks Chen 	PIN_FIELD_BASE(131, 131, 1, 0x0010, 0x10, 2, 2),
602920e469eSHanks Chen 	PIN_FIELD_BASE(132, 132, 1, 0x0010, 0x10, 6, 2),
603920e469eSHanks Chen 	PIN_FIELD_BASE(133, 133, 1, 0x0010, 0x10, 4, 2),
604920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x0000, 0x10, 3, 3),
605920e469eSHanks Chen 	PINS_FIELD_BASE(136, 139, 1, 0x0000, 0x10, 9, 3),
606920e469eSHanks Chen 	PINS_FIELD_BASE(140, 141, 1, 0x0000, 0x10, 0, 3),
607920e469eSHanks Chen 	PIN_FIELD_BASE(142, 142, 1, 0x0000, 0x10, 24, 3),
608920e469eSHanks Chen 	PINS_FIELD_BASE(143, 146, 5, 0x0000, 0x10, 3, 3),
609920e469eSHanks Chen 	PINS_FIELD_BASE(147, 155, 5, 0x0000, 0x10, 0, 3),
610920e469eSHanks Chen 	PIN_FIELD_BASE(156, 157, 5, 0x0000, 0x10, 21, 3),
611920e469eSHanks Chen 	PIN_FIELD_BASE(158, 158, 5, 0x0000, 0x10, 15, 3),
612920e469eSHanks Chen 	PIN_FIELD_BASE(159, 159, 5, 0x0000, 0x10, 27, 3),
613920e469eSHanks Chen 	PIN_FIELD_BASE(160, 161, 5, 0x0000, 0x10, 9, 3),
614920e469eSHanks Chen 	PINS_FIELD_BASE(162, 166, 5, 0x0000, 0x10, 18, 3),
615920e469eSHanks Chen 	PIN_FIELD_BASE(167, 167, 7, 0x0000, 0x10, 3, 3),
616920e469eSHanks Chen 	PINS_FIELD_BASE(168, 174, 7, 0x0000, 0x10, 6, 3),
617920e469eSHanks Chen 	PIN_FIELD_BASE(175, 175, 7, 0x0000, 0x10, 9, 3),
618920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0000, 0x10, 0, 3),
619920e469eSHanks Chen 	PINS_FIELD_BASE(177, 178, 7, 0x0000, 0x10, 6, 3),
620920e469eSHanks Chen 	PIN_FIELD_BASE(179, 180, 4, 0x0000, 0x10, 15, 3),
621920e469eSHanks Chen 	PIN_FIELD_BASE(181, 183, 1, 0x0010, 0x10, 8, 3),
622920e469eSHanks Chen 	PINS_FIELD_BASE(184, 186, 1, 0x0000, 0x10, 15, 3),
623920e469eSHanks Chen 	PIN_FIELD_BASE(187, 188, 1, 0x0000, 0x10, 18, 3),
624920e469eSHanks Chen 	PIN_FIELD_BASE(189, 189, 5, 0x0000, 0x10, 6, 3),
625920e469eSHanks Chen 	PINS_FIELD_BASE(190, 194, 5, 0x0000, 0x10, 3, 3),
626920e469eSHanks Chen 	PIN_FIELD_BASE(195, 195, 2, 0x0000, 0x10, 9, 3),
627920e469eSHanks Chen 	PIN_FIELD_BASE(196, 196, 2, 0x0000, 0x10, 27, 3),
628920e469eSHanks Chen 	PIN_FIELD_BASE(197, 197, 2, 0x0000, 0x10, 9, 3),
629920e469eSHanks Chen 	PIN_FIELD_BASE(198, 199, 4, 0x0000, 0x10, 21, 3),
630920e469eSHanks Chen 	PINS_FIELD_BASE(200, 201, 6, 0x0010, 0x10, 15, 3),
631920e469eSHanks Chen 	PIN_FIELD_BASE(202, 202, 4, 0x0000, 0x10, 12, 3),
632920e469eSHanks Chen };
633920e469eSHanks Chen 
634920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_pupd_range[] = {
635920e469eSHanks Chen 	PIN_FIELD_BASE(10, 15, 3, 0x0070, 0x10, 0, 1),
636920e469eSHanks Chen 	PIN_FIELD_BASE(57, 57, 3, 0x0070, 0x10, 9, 1),
637920e469eSHanks Chen 	PIN_FIELD_BASE(58, 58, 3, 0x0070, 0x10, 8, 1),
638920e469eSHanks Chen 	PIN_FIELD_BASE(59, 60, 3, 0x0070, 0x10, 6, 1),
639920e469eSHanks Chen 	PIN_FIELD_BASE(128, 129, 1, 0x0060, 0x10, 7, 1),
640920e469eSHanks Chen 	PIN_FIELD_BASE(130, 130, 1, 0x0060, 0x10, 6, 1),
641920e469eSHanks Chen 	PIN_FIELD_BASE(131, 131, 1, 0x0060, 0x10, 9, 1),
642920e469eSHanks Chen 	PIN_FIELD_BASE(132, 132, 1, 0x0060, 0x10, 11, 1),
643920e469eSHanks Chen 	PIN_FIELD_BASE(133, 133, 1, 0x0060, 0x10, 10, 1),
644920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x0060, 0x10, 0, 1),
645920e469eSHanks Chen 	PIN_FIELD_BASE(136, 136, 1, 0x0060, 0x10, 5, 1),
646920e469eSHanks Chen 	PIN_FIELD_BASE(137, 137, 1, 0x0060, 0x10, 2, 1),
647920e469eSHanks Chen 	PIN_FIELD_BASE(138, 138, 1, 0x0060, 0x10, 4, 1),
648920e469eSHanks Chen 	PIN_FIELD_BASE(139, 139, 1, 0x0060, 0x10, 3, 1),
649920e469eSHanks Chen 	PIN_FIELD_BASE(167, 168, 7, 0x0020, 0x10, 1, 1),
650920e469eSHanks Chen 	PIN_FIELD_BASE(169, 169, 7, 0x0020, 0x10, 4, 1),
651920e469eSHanks Chen 	PIN_FIELD_BASE(170, 170, 7, 0x0020, 0x10, 6, 1),
652920e469eSHanks Chen 	PIN_FIELD_BASE(171, 171, 7, 0x0020, 0x10, 8, 1),
653920e469eSHanks Chen 	PIN_FIELD_BASE(172, 172, 7, 0x0020, 0x10, 3, 1),
654920e469eSHanks Chen 	PIN_FIELD_BASE(173, 173, 7, 0x0020, 0x10, 7, 1),
655920e469eSHanks Chen 	PIN_FIELD_BASE(174, 175, 7, 0x0020, 0x10, 9, 1),
656920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0020, 0x10, 0, 1),
657920e469eSHanks Chen 	PIN_FIELD_BASE(177, 177, 7, 0x0020, 0x10, 5, 1),
658920e469eSHanks Chen 	PIN_FIELD_BASE(178, 178, 7, 0x0020, 0x10, 11, 1),
659920e469eSHanks Chen };
660920e469eSHanks Chen 
661920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_r0_range[] = {
662920e469eSHanks Chen 	PIN_FIELD_BASE(10, 15, 3, 0x0090, 0x10, 0, 1),
663920e469eSHanks Chen 	PIN_FIELD_BASE(57, 57, 3, 0x0090, 0x10, 9, 1),
664920e469eSHanks Chen 	PIN_FIELD_BASE(58, 58, 3, 0x0090, 0x10, 8, 1),
665920e469eSHanks Chen 	PIN_FIELD_BASE(59, 60, 3, 0x0090, 0x10, 6, 1),
666920e469eSHanks Chen 	PIN_FIELD_BASE(128, 129, 1, 0x0080, 0x10, 7, 1),
667920e469eSHanks Chen 	PIN_FIELD_BASE(130, 130, 1, 0x0080, 0x10, 6, 1),
668920e469eSHanks Chen 	PIN_FIELD_BASE(131, 131, 1, 0x0080, 0x10, 9, 1),
669920e469eSHanks Chen 	PIN_FIELD_BASE(132, 132, 1, 0x0080, 0x10, 11, 1),
670920e469eSHanks Chen 	PIN_FIELD_BASE(133, 133, 1, 0x0080, 0x10, 10, 1),
671920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x0080, 0x10, 0, 1),
672920e469eSHanks Chen 	PIN_FIELD_BASE(136, 136, 1, 0x0080, 0x10, 5, 1),
673920e469eSHanks Chen 	PIN_FIELD_BASE(137, 137, 1, 0x0080, 0x10, 2, 1),
674920e469eSHanks Chen 	PIN_FIELD_BASE(138, 138, 1, 0x0080, 0x10, 4, 1),
675920e469eSHanks Chen 	PIN_FIELD_BASE(139, 139, 1, 0x0080, 0x10, 3, 1),
676920e469eSHanks Chen 	PIN_FIELD_BASE(167, 168, 7, 0x0030, 0x10, 1, 1),
677920e469eSHanks Chen 	PIN_FIELD_BASE(169, 169, 7, 0x0030, 0x10, 4, 1),
678920e469eSHanks Chen 	PIN_FIELD_BASE(170, 170, 7, 0x0030, 0x10, 6, 1),
679920e469eSHanks Chen 	PIN_FIELD_BASE(171, 171, 7, 0x0030, 0x10, 8, 1),
680920e469eSHanks Chen 	PIN_FIELD_BASE(172, 172, 7, 0x0030, 0x10, 3, 1),
681920e469eSHanks Chen 	PIN_FIELD_BASE(173, 173, 7, 0x0030, 0x10, 7, 1),
682920e469eSHanks Chen 	PIN_FIELD_BASE(174, 175, 7, 0x0030, 0x10, 9, 1),
683920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0030, 0x10, 0, 1),
684920e469eSHanks Chen 	PIN_FIELD_BASE(177, 177, 7, 0x0030, 0x10, 5, 1),
685920e469eSHanks Chen 	PIN_FIELD_BASE(178, 178, 7, 0x0030, 0x10, 11, 1),
686920e469eSHanks Chen };
687920e469eSHanks Chen 
688920e469eSHanks Chen static const struct mtk_pin_field_calc mt6779_pin_r1_range[] = {
689920e469eSHanks Chen 	PIN_FIELD_BASE(10, 15, 3, 0x00a0, 0x10, 0, 1),
690920e469eSHanks Chen 	PIN_FIELD_BASE(57, 57, 3, 0x00a0, 0x10, 9, 1),
691920e469eSHanks Chen 	PIN_FIELD_BASE(58, 58, 3, 0x00a0, 0x10, 8, 1),
692920e469eSHanks Chen 	PIN_FIELD_BASE(59, 60, 3, 0x00a0, 0x10, 6, 1),
693920e469eSHanks Chen 	PIN_FIELD_BASE(128, 129, 1, 0x0090, 0x10, 7, 1),
694920e469eSHanks Chen 	PIN_FIELD_BASE(130, 130, 1, 0x0090, 0x10, 6, 1),
695920e469eSHanks Chen 	PIN_FIELD_BASE(131, 131, 1, 0x0090, 0x10, 9, 1),
696920e469eSHanks Chen 	PIN_FIELD_BASE(132, 132, 1, 0x0090, 0x10, 11, 1),
697920e469eSHanks Chen 	PIN_FIELD_BASE(133, 133, 1, 0x0090, 0x10, 10, 1),
698920e469eSHanks Chen 	PIN_FIELD_BASE(134, 135, 1, 0x0090, 0x10, 0, 1),
699920e469eSHanks Chen 	PIN_FIELD_BASE(136, 136, 1, 0x0090, 0x10, 5, 1),
700920e469eSHanks Chen 	PIN_FIELD_BASE(137, 137, 1, 0x0090, 0x10, 2, 1),
701920e469eSHanks Chen 	PIN_FIELD_BASE(138, 138, 1, 0x0090, 0x10, 4, 1),
702920e469eSHanks Chen 	PIN_FIELD_BASE(139, 139, 1, 0x0090, 0x10, 3, 1),
703920e469eSHanks Chen 	PIN_FIELD_BASE(167, 168, 7, 0x0040, 0x10, 1, 1),
704920e469eSHanks Chen 	PIN_FIELD_BASE(169, 169, 7, 0x0040, 0x10, 4, 1),
705920e469eSHanks Chen 	PIN_FIELD_BASE(170, 170, 7, 0x0040, 0x10, 6, 1),
706920e469eSHanks Chen 	PIN_FIELD_BASE(171, 171, 7, 0x0040, 0x10, 8, 1),
707920e469eSHanks Chen 	PIN_FIELD_BASE(172, 172, 7, 0x0040, 0x10, 3, 1),
708920e469eSHanks Chen 	PIN_FIELD_BASE(173, 173, 7, 0x0040, 0x10, 7, 1),
709920e469eSHanks Chen 	PIN_FIELD_BASE(174, 175, 7, 0x0040, 0x10, 9, 1),
710920e469eSHanks Chen 	PIN_FIELD_BASE(176, 176, 7, 0x0040, 0x10, 0, 1),
711920e469eSHanks Chen 	PIN_FIELD_BASE(177, 177, 7, 0x0040, 0x10, 5, 1),
712920e469eSHanks Chen 	PIN_FIELD_BASE(178, 178, 7, 0x0040, 0x10, 11, 1),
713920e469eSHanks Chen };
714920e469eSHanks Chen 
715920e469eSHanks Chen static const struct mtk_pin_reg_calc mt6779_reg_cals[PINCTRL_PIN_REG_MAX] = {
716920e469eSHanks Chen 	[PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6779_pin_mode_range),
717920e469eSHanks Chen 	[PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6779_pin_dir_range),
718920e469eSHanks Chen 	[PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6779_pin_di_range),
719920e469eSHanks Chen 	[PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6779_pin_do_range),
720920e469eSHanks Chen 	[PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt6779_pin_smt_range),
721920e469eSHanks Chen 	[PINCTRL_PIN_REG_IES] = MTK_RANGE(mt6779_pin_ies_range),
722920e469eSHanks Chen 	[PINCTRL_PIN_REG_PU] = MTK_RANGE(mt6779_pin_pu_range),
723920e469eSHanks Chen 	[PINCTRL_PIN_REG_PD] = MTK_RANGE(mt6779_pin_pd_range),
724920e469eSHanks Chen 	[PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt6779_pin_drv_range),
725920e469eSHanks Chen 	[PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt6779_pin_pupd_range),
726920e469eSHanks Chen 	[PINCTRL_PIN_REG_R0] = MTK_RANGE(mt6779_pin_r0_range),
727920e469eSHanks Chen 	[PINCTRL_PIN_REG_R1] = MTK_RANGE(mt6779_pin_r1_range),
728920e469eSHanks Chen };
729920e469eSHanks Chen 
730920e469eSHanks Chen static const char * const mt6779_pinctrl_register_base_names[] = {
731920e469eSHanks Chen 	"gpio", "iocfg_rm", "iocfg_br", "iocfg_lm", "iocfg_lb",
732920e469eSHanks Chen 	"iocfg_rt", "iocfg_lt", "iocfg_tl",
733920e469eSHanks Chen };
734920e469eSHanks Chen 
735c1282ae8SHanks Chen static const struct mtk_eint_hw mt6779_eint_hw = {
736c1282ae8SHanks Chen 	.port_mask = 7,
737c1282ae8SHanks Chen 	.ports     = 6,
738c1282ae8SHanks Chen 	.ap_num    = 195,
739c1282ae8SHanks Chen 	.db_cnt    = 13,
740c1282ae8SHanks Chen };
741c1282ae8SHanks Chen 
742920e469eSHanks Chen static const struct mtk_pin_soc mt6779_data = {
743920e469eSHanks Chen 	.reg_cal = mt6779_reg_cals,
744920e469eSHanks Chen 	.pins = mtk_pins_mt6779,
745920e469eSHanks Chen 	.npins = ARRAY_SIZE(mtk_pins_mt6779),
746920e469eSHanks Chen 	.ngrps = ARRAY_SIZE(mtk_pins_mt6779),
747c1282ae8SHanks Chen 	.eint_hw = &mt6779_eint_hw,
748920e469eSHanks Chen 	.gpio_m = 0,
749920e469eSHanks Chen 	.ies_present = true,
750920e469eSHanks Chen 	.base_names = mt6779_pinctrl_register_base_names,
751920e469eSHanks Chen 	.nbase_names = ARRAY_SIZE(mt6779_pinctrl_register_base_names),
752920e469eSHanks Chen 	.bias_set_combo = mtk_pinconf_bias_set_combo,
753920e469eSHanks Chen 	.bias_get_combo = mtk_pinconf_bias_get_combo,
754920e469eSHanks Chen 	.drive_set = mtk_pinconf_drive_set_raw,
755920e469eSHanks Chen 	.drive_get = mtk_pinconf_drive_get_raw,
756920e469eSHanks Chen 	.adv_pull_get = mtk_pinconf_adv_pull_get,
757920e469eSHanks Chen 	.adv_pull_set = mtk_pinconf_adv_pull_set,
758920e469eSHanks Chen };
759920e469eSHanks Chen 
760920e469eSHanks Chen static const struct of_device_id mt6779_pinctrl_of_match[] = {
76178df7bbaSAngeloGioacchino Del Regno 	{ .compatible = "mediatek,mt6779-pinctrl", .data = &mt6779_data },
762920e469eSHanks Chen 	{ }
763920e469eSHanks Chen };
764920e469eSHanks Chen 
765920e469eSHanks Chen static struct platform_driver mt6779_pinctrl_driver = {
766920e469eSHanks Chen 	.driver = {
767920e469eSHanks Chen 		.name = "mt6779-pinctrl",
768920e469eSHanks Chen 		.of_match_table = mt6779_pinctrl_of_match,
769920e469eSHanks Chen 	},
77078df7bbaSAngeloGioacchino Del Regno 	.probe = mtk_paris_pinctrl_probe,
771920e469eSHanks Chen };
772920e469eSHanks Chen 
773920e469eSHanks Chen static int __init mt6779_pinctrl_init(void)
774920e469eSHanks Chen {
775920e469eSHanks Chen 	return platform_driver_register(&mt6779_pinctrl_driver);
776920e469eSHanks Chen }
777920e469eSHanks Chen arch_initcall(mt6779_pinctrl_init);
778920e469eSHanks Chen 
779920e469eSHanks Chen MODULE_LICENSE("GPL v2");
780920e469eSHanks Chen MODULE_DESCRIPTION("MediaTek MT6779 Pinctrl Driver");
781