xref: /OK3568_Linux_fs/kernel/drivers/pinctrl/intel/pinctrl-cedarfork.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Intel Cedar Fork PCH pinctrl/GPIO driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2017, Intel Corporation
6*4882a593Smuzhiyun  * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <linux/mod_devicetable.h>
10*4882a593Smuzhiyun #include <linux/module.h>
11*4882a593Smuzhiyun #include <linux/platform_device.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #include "pinctrl-intel.h"
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #define CDF_PAD_OWN	0x020
18*4882a593Smuzhiyun #define CDF_PADCFGLOCK	0x0c0
19*4882a593Smuzhiyun #define CDF_HOSTSW_OWN	0x120
20*4882a593Smuzhiyun #define CDF_GPI_IS	0x200
21*4882a593Smuzhiyun #define CDF_GPI_IE	0x230
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define CDF_GPP(r, s, e)				\
24*4882a593Smuzhiyun 	{						\
25*4882a593Smuzhiyun 		.reg_num = (r),				\
26*4882a593Smuzhiyun 		.base = (s),				\
27*4882a593Smuzhiyun 		.size = ((e) - (s) + 1),		\
28*4882a593Smuzhiyun 	}
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define CDF_COMMUNITY(b, s, e, g)			\
31*4882a593Smuzhiyun 	{						\
32*4882a593Smuzhiyun 		.barno = (b),				\
33*4882a593Smuzhiyun 		.padown_offset = CDF_PAD_OWN,		\
34*4882a593Smuzhiyun 		.padcfglock_offset = CDF_PADCFGLOCK,	\
35*4882a593Smuzhiyun 		.hostown_offset = CDF_HOSTSW_OWN,	\
36*4882a593Smuzhiyun 		.is_offset = CDF_GPI_IS,		\
37*4882a593Smuzhiyun 		.ie_offset = CDF_GPI_IE,		\
38*4882a593Smuzhiyun 		.pin_base = (s),			\
39*4882a593Smuzhiyun 		.npins = ((e) - (s) + 1),		\
40*4882a593Smuzhiyun 		.gpps = (g),				\
41*4882a593Smuzhiyun 		.ngpps = ARRAY_SIZE(g),			\
42*4882a593Smuzhiyun 	}
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun /* Cedar Fork PCH */
45*4882a593Smuzhiyun static const struct pinctrl_pin_desc cdf_pins[] = {
46*4882a593Smuzhiyun 	/* WEST2 */
47*4882a593Smuzhiyun 	PINCTRL_PIN(0, "GBE_SDP_TIMESYNC0_S2N"),
48*4882a593Smuzhiyun 	PINCTRL_PIN(1, "GBE_SDP_TIMESYNC1_S2N"),
49*4882a593Smuzhiyun 	PINCTRL_PIN(2, "GBE_SDP_TIMESYNC2_S2N"),
50*4882a593Smuzhiyun 	PINCTRL_PIN(3, "GBE_SDP_TIMESYNC3_S2N"),
51*4882a593Smuzhiyun 	PINCTRL_PIN(4, "GBE0_I2C_CLK"),
52*4882a593Smuzhiyun 	PINCTRL_PIN(5, "GBE0_I2C_DATA"),
53*4882a593Smuzhiyun 	PINCTRL_PIN(6, "GBE1_I2C_CLK"),
54*4882a593Smuzhiyun 	PINCTRL_PIN(7, "GBE1_I2C_DATA"),
55*4882a593Smuzhiyun 	PINCTRL_PIN(8, "GBE2_I2C_CLK"),
56*4882a593Smuzhiyun 	PINCTRL_PIN(9, "GBE2_I2C_DATA"),
57*4882a593Smuzhiyun 	PINCTRL_PIN(10, "GBE3_I2C_CLK"),
58*4882a593Smuzhiyun 	PINCTRL_PIN(11, "GBE3_I2C_DATA"),
59*4882a593Smuzhiyun 	PINCTRL_PIN(12, "GBE0_LED0"),
60*4882a593Smuzhiyun 	PINCTRL_PIN(13, "GBE0_LED1"),
61*4882a593Smuzhiyun 	PINCTRL_PIN(14, "GBE0_LED2"),
62*4882a593Smuzhiyun 	PINCTRL_PIN(15, "GBE1_LED0"),
63*4882a593Smuzhiyun 	PINCTRL_PIN(16, "GBE1_LED1"),
64*4882a593Smuzhiyun 	PINCTRL_PIN(17, "GBE1_LED2"),
65*4882a593Smuzhiyun 	PINCTRL_PIN(18, "GBE2_LED0"),
66*4882a593Smuzhiyun 	PINCTRL_PIN(19, "GBE2_LED1"),
67*4882a593Smuzhiyun 	PINCTRL_PIN(20, "GBE2_LED2"),
68*4882a593Smuzhiyun 	PINCTRL_PIN(21, "GBE3_LED0"),
69*4882a593Smuzhiyun 	PINCTRL_PIN(22, "GBE3_LED1"),
70*4882a593Smuzhiyun 	PINCTRL_PIN(23, "GBE3_LED2"),
71*4882a593Smuzhiyun 	/* WEST3 */
72*4882a593Smuzhiyun 	PINCTRL_PIN(24, "NCSI_RXD0"),
73*4882a593Smuzhiyun 	PINCTRL_PIN(25, "NCSI_CLK_IN"),
74*4882a593Smuzhiyun 	PINCTRL_PIN(26, "NCSI_RXD1"),
75*4882a593Smuzhiyun 	PINCTRL_PIN(27, "NCSI_CRS_DV"),
76*4882a593Smuzhiyun 	PINCTRL_PIN(28, "NCSI_ARB_IN"),
77*4882a593Smuzhiyun 	PINCTRL_PIN(29, "NCSI_TX_EN"),
78*4882a593Smuzhiyun 	PINCTRL_PIN(30, "NCSI_TXD0"),
79*4882a593Smuzhiyun 	PINCTRL_PIN(31, "NCSI_TXD1"),
80*4882a593Smuzhiyun 	PINCTRL_PIN(32, "NCSI_ARB_OUT"),
81*4882a593Smuzhiyun 	PINCTRL_PIN(33, "GBE_SMB_CLK"),
82*4882a593Smuzhiyun 	PINCTRL_PIN(34, "GBE_SMB_DATA"),
83*4882a593Smuzhiyun 	PINCTRL_PIN(35, "GBE_SMB_ALRT_N"),
84*4882a593Smuzhiyun 	PINCTRL_PIN(36, "THERMTRIP_N"),
85*4882a593Smuzhiyun 	PINCTRL_PIN(37, "PCHHOT_N"),
86*4882a593Smuzhiyun 	PINCTRL_PIN(38, "ERROR0_N"),
87*4882a593Smuzhiyun 	PINCTRL_PIN(39, "ERROR1_N"),
88*4882a593Smuzhiyun 	PINCTRL_PIN(40, "ERROR2_N"),
89*4882a593Smuzhiyun 	PINCTRL_PIN(41, "MSMI_N"),
90*4882a593Smuzhiyun 	PINCTRL_PIN(42, "CATERR_N"),
91*4882a593Smuzhiyun 	PINCTRL_PIN(43, "MEMTRIP_N"),
92*4882a593Smuzhiyun 	PINCTRL_PIN(44, "UART0_RXD"),
93*4882a593Smuzhiyun 	PINCTRL_PIN(45, "UART0_TXD"),
94*4882a593Smuzhiyun 	PINCTRL_PIN(46, "GBE_UART_RXD"),
95*4882a593Smuzhiyun 	PINCTRL_PIN(47, "GBE_UART_TXD"),
96*4882a593Smuzhiyun 	/* WEST01 */
97*4882a593Smuzhiyun 	PINCTRL_PIN(48, "GBE_GPIO13"),
98*4882a593Smuzhiyun 	PINCTRL_PIN(49, "AUX_PWR"),
99*4882a593Smuzhiyun 	PINCTRL_PIN(50, "UART0_RTS"),
100*4882a593Smuzhiyun 	PINCTRL_PIN(51, "UART0_CTS"),
101*4882a593Smuzhiyun 	PINCTRL_PIN(52, "FAN_PWM_0"),
102*4882a593Smuzhiyun 	PINCTRL_PIN(53, "FAN_PWM_1"),
103*4882a593Smuzhiyun 	PINCTRL_PIN(54, "FAN_PWM_2"),
104*4882a593Smuzhiyun 	PINCTRL_PIN(55, "FAN_PWM_3"),
105*4882a593Smuzhiyun 	PINCTRL_PIN(56, "FAN_TACH_0"),
106*4882a593Smuzhiyun 	PINCTRL_PIN(57, "FAN_TACH_1"),
107*4882a593Smuzhiyun 	PINCTRL_PIN(58, "FAN_TACH_2"),
108*4882a593Smuzhiyun 	PINCTRL_PIN(59, "FAN_TACH_3"),
109*4882a593Smuzhiyun 	PINCTRL_PIN(60, "ME_SMB0_CLK"),
110*4882a593Smuzhiyun 	PINCTRL_PIN(61, "ME_SMB0_DATA"),
111*4882a593Smuzhiyun 	PINCTRL_PIN(62, "ME_SMB0_ALRT_N"),
112*4882a593Smuzhiyun 	PINCTRL_PIN(63, "ME_SMB1_CLK"),
113*4882a593Smuzhiyun 	PINCTRL_PIN(64, "ME_SMB1_DATA"),
114*4882a593Smuzhiyun 	PINCTRL_PIN(65, "ME_SMB1_ALRT_N"),
115*4882a593Smuzhiyun 	PINCTRL_PIN(66, "ME_SMB2_CLK"),
116*4882a593Smuzhiyun 	PINCTRL_PIN(67, "ME_SMB2_DATA"),
117*4882a593Smuzhiyun 	PINCTRL_PIN(68, "ME_SMB2_ALRT_N"),
118*4882a593Smuzhiyun 	PINCTRL_PIN(69, "GBE_MNG_I2C_CLK"),
119*4882a593Smuzhiyun 	PINCTRL_PIN(70, "GBE_MNG_I2C_DATA"),
120*4882a593Smuzhiyun 	/* WEST5 */
121*4882a593Smuzhiyun 	PINCTRL_PIN(71, "IE_UART_RXD"),
122*4882a593Smuzhiyun 	PINCTRL_PIN(72, "IE_UART_TXD"),
123*4882a593Smuzhiyun 	PINCTRL_PIN(73, "VPP_SMB_CLK"),
124*4882a593Smuzhiyun 	PINCTRL_PIN(74, "VPP_SMB_DATA"),
125*4882a593Smuzhiyun 	PINCTRL_PIN(75, "VPP_SMB_ALRT_N"),
126*4882a593Smuzhiyun 	PINCTRL_PIN(76, "PCIE_CLKREQ0_N"),
127*4882a593Smuzhiyun 	PINCTRL_PIN(77, "PCIE_CLKREQ1_N"),
128*4882a593Smuzhiyun 	PINCTRL_PIN(78, "PCIE_CLKREQ2_N"),
129*4882a593Smuzhiyun 	PINCTRL_PIN(79, "PCIE_CLKREQ3_N"),
130*4882a593Smuzhiyun 	PINCTRL_PIN(80, "PCIE_CLKREQ4_N"),
131*4882a593Smuzhiyun 	PINCTRL_PIN(81, "PCIE_CLKREQ5_N"),
132*4882a593Smuzhiyun 	PINCTRL_PIN(82, "PCIE_CLKREQ6_N"),
133*4882a593Smuzhiyun 	PINCTRL_PIN(83, "PCIE_CLKREQ7_N"),
134*4882a593Smuzhiyun 	PINCTRL_PIN(84, "PCIE_CLKREQ8_N"),
135*4882a593Smuzhiyun 	PINCTRL_PIN(85, "PCIE_CLKREQ9_N"),
136*4882a593Smuzhiyun 	PINCTRL_PIN(86, "FLEX_CLK_SE0"),
137*4882a593Smuzhiyun 	PINCTRL_PIN(87, "FLEX_CLK_SE1"),
138*4882a593Smuzhiyun 	PINCTRL_PIN(88, "FLEX_CLK1_50"),
139*4882a593Smuzhiyun 	PINCTRL_PIN(89, "FLEX_CLK2_50"),
140*4882a593Smuzhiyun 	PINCTRL_PIN(90, "FLEX_CLK_125"),
141*4882a593Smuzhiyun 	/* WESTC */
142*4882a593Smuzhiyun 	PINCTRL_PIN(91, "TCK_PCH"),
143*4882a593Smuzhiyun 	PINCTRL_PIN(92, "JTAGX_PCH"),
144*4882a593Smuzhiyun 	PINCTRL_PIN(93, "TRST_N_PCH"),
145*4882a593Smuzhiyun 	PINCTRL_PIN(94, "TMS_PCH"),
146*4882a593Smuzhiyun 	PINCTRL_PIN(95, "TDI_PCH"),
147*4882a593Smuzhiyun 	PINCTRL_PIN(96, "TDO_PCH"),
148*4882a593Smuzhiyun 	/* WESTC_DFX */
149*4882a593Smuzhiyun 	PINCTRL_PIN(97, "CX_PRDY_N"),
150*4882a593Smuzhiyun 	PINCTRL_PIN(98, "CX_PREQ_N"),
151*4882a593Smuzhiyun 	PINCTRL_PIN(99, "CPU_FBREAK_OUT_N"),
152*4882a593Smuzhiyun 	PINCTRL_PIN(100, "TRIGGER0_N"),
153*4882a593Smuzhiyun 	PINCTRL_PIN(101, "TRIGGER1_N"),
154*4882a593Smuzhiyun 	/* WESTA */
155*4882a593Smuzhiyun 	PINCTRL_PIN(102, "DBG_PTI_CLK0"),
156*4882a593Smuzhiyun 	PINCTRL_PIN(103, "DBG_PTI_CLK3"),
157*4882a593Smuzhiyun 	PINCTRL_PIN(104, "DBG_PTI_DATA0"),
158*4882a593Smuzhiyun 	PINCTRL_PIN(105, "DBG_PTI_DATA1"),
159*4882a593Smuzhiyun 	PINCTRL_PIN(106, "DBG_PTI_DATA2"),
160*4882a593Smuzhiyun 	PINCTRL_PIN(107, "DBG_PTI_DATA3"),
161*4882a593Smuzhiyun 	PINCTRL_PIN(108, "DBG_PTI_DATA4"),
162*4882a593Smuzhiyun 	PINCTRL_PIN(109, "DBG_PTI_DATA5"),
163*4882a593Smuzhiyun 	PINCTRL_PIN(110, "DBG_PTI_DATA6"),
164*4882a593Smuzhiyun 	PINCTRL_PIN(111, "DBG_PTI_DATA7"),
165*4882a593Smuzhiyun 	/* WESTB */
166*4882a593Smuzhiyun 	PINCTRL_PIN(112, "DBG_PTI_DATA8"),
167*4882a593Smuzhiyun 	PINCTRL_PIN(113, "DBG_PTI_DATA9"),
168*4882a593Smuzhiyun 	PINCTRL_PIN(114, "DBG_PTI_DATA10"),
169*4882a593Smuzhiyun 	PINCTRL_PIN(115, "DBG_PTI_DATA11"),
170*4882a593Smuzhiyun 	PINCTRL_PIN(116, "DBG_PTI_DATA12"),
171*4882a593Smuzhiyun 	PINCTRL_PIN(117, "DBG_PTI_DATA13"),
172*4882a593Smuzhiyun 	PINCTRL_PIN(118, "DBG_PTI_DATA14"),
173*4882a593Smuzhiyun 	PINCTRL_PIN(119, "DBG_PTI_DATA15"),
174*4882a593Smuzhiyun 	PINCTRL_PIN(120, "DBG_SPARE0"),
175*4882a593Smuzhiyun 	PINCTRL_PIN(121, "DBG_SPARE1"),
176*4882a593Smuzhiyun 	PINCTRL_PIN(122, "DBG_SPARE2"),
177*4882a593Smuzhiyun 	PINCTRL_PIN(123, "DBG_SPARE3"),
178*4882a593Smuzhiyun 	/* WESTD */
179*4882a593Smuzhiyun 	PINCTRL_PIN(124, "CPU_PWR_GOOD"),
180*4882a593Smuzhiyun 	PINCTRL_PIN(125, "PLTRST_CPU_N"),
181*4882a593Smuzhiyun 	PINCTRL_PIN(126, "NAC_RESET_NAC_N"),
182*4882a593Smuzhiyun 	PINCTRL_PIN(127, "PCH_SBLINK_RX"),
183*4882a593Smuzhiyun 	PINCTRL_PIN(128, "PCH_SBLINK_TX"),
184*4882a593Smuzhiyun 	PINCTRL_PIN(129, "PMSYNC_CLK"),
185*4882a593Smuzhiyun 	PINCTRL_PIN(130, "CPU_ERR0_N"),
186*4882a593Smuzhiyun 	PINCTRL_PIN(131, "CPU_ERR1_N"),
187*4882a593Smuzhiyun 	PINCTRL_PIN(132, "CPU_ERR2_N"),
188*4882a593Smuzhiyun 	PINCTRL_PIN(133, "CPU_THERMTRIP_N"),
189*4882a593Smuzhiyun 	PINCTRL_PIN(134, "CPU_MSMI_N"),
190*4882a593Smuzhiyun 	PINCTRL_PIN(135, "CPU_CATERR_N"),
191*4882a593Smuzhiyun 	PINCTRL_PIN(136, "CPU_MEMTRIP_N"),
192*4882a593Smuzhiyun 	PINCTRL_PIN(137, "NAC_GR_N"),
193*4882a593Smuzhiyun 	PINCTRL_PIN(138, "NAC_XTAL_VALID"),
194*4882a593Smuzhiyun 	PINCTRL_PIN(139, "NAC_WAKE_N"),
195*4882a593Smuzhiyun 	PINCTRL_PIN(140, "NAC_SBLINK_CLK_S2N"),
196*4882a593Smuzhiyun 	PINCTRL_PIN(141, "NAC_SBLINK_N2S"),
197*4882a593Smuzhiyun 	PINCTRL_PIN(142, "NAC_SBLINK_S2N"),
198*4882a593Smuzhiyun 	PINCTRL_PIN(143, "NAC_SBLINK_CLK_N2S"),
199*4882a593Smuzhiyun 	/* WESTD_PECI */
200*4882a593Smuzhiyun 	PINCTRL_PIN(144, "ME_PECI"),
201*4882a593Smuzhiyun 	/* WESTF */
202*4882a593Smuzhiyun 	PINCTRL_PIN(145, "NAC_RMII_CLK"),
203*4882a593Smuzhiyun 	PINCTRL_PIN(146, "NAC_RGMII_CLK"),
204*4882a593Smuzhiyun 	PINCTRL_PIN(147, "NAC_GBE_SMB_CLK_TX_N2S"),
205*4882a593Smuzhiyun 	PINCTRL_PIN(148, "NAC_GBE_SMB_DATA_TX_N2S"),
206*4882a593Smuzhiyun 	PINCTRL_PIN(149, "NAC_SPARE2"),
207*4882a593Smuzhiyun 	PINCTRL_PIN(150, "NAC_INIT_SX_WAKE_N"),
208*4882a593Smuzhiyun 	PINCTRL_PIN(151, "NAC_GBE_GPIO0_S2N"),
209*4882a593Smuzhiyun 	PINCTRL_PIN(152, "NAC_GBE_GPIO1_S2N"),
210*4882a593Smuzhiyun 	PINCTRL_PIN(153, "NAC_GBE_GPIO2_S2N"),
211*4882a593Smuzhiyun 	PINCTRL_PIN(154, "NAC_GBE_GPIO3_S2N"),
212*4882a593Smuzhiyun 	PINCTRL_PIN(155, "NAC_NCSI_RXD0"),
213*4882a593Smuzhiyun 	PINCTRL_PIN(156, "NAC_NCSI_CLK_IN"),
214*4882a593Smuzhiyun 	PINCTRL_PIN(157, "NAC_NCSI_RXD1"),
215*4882a593Smuzhiyun 	PINCTRL_PIN(158, "NAC_NCSI_CRS_DV"),
216*4882a593Smuzhiyun 	PINCTRL_PIN(159, "NAC_NCSI_ARB_IN"),
217*4882a593Smuzhiyun 	PINCTRL_PIN(160, "NAC_NCSI_TX_EN"),
218*4882a593Smuzhiyun 	PINCTRL_PIN(161, "NAC_NCSI_TXD0"),
219*4882a593Smuzhiyun 	PINCTRL_PIN(162, "NAC_NCSI_TXD1"),
220*4882a593Smuzhiyun 	PINCTRL_PIN(163, "NAC_NCSI_ARB_OUT"),
221*4882a593Smuzhiyun 	PINCTRL_PIN(164, "NAC_NCSI_OE_N"),
222*4882a593Smuzhiyun 	PINCTRL_PIN(165, "NAC_GBE_SMB_CLK_RX_S2N"),
223*4882a593Smuzhiyun 	PINCTRL_PIN(166, "NAC_GBE_SMB_DATA_RX_S2N"),
224*4882a593Smuzhiyun 	PINCTRL_PIN(167, "NAC_GBE_SMB_ALRT_N"),
225*4882a593Smuzhiyun 	/* EAST2 */
226*4882a593Smuzhiyun 	PINCTRL_PIN(168, "USB_OC0_N"),
227*4882a593Smuzhiyun 	PINCTRL_PIN(169, "GBE_GPIO0"),
228*4882a593Smuzhiyun 	PINCTRL_PIN(170, "GBE_GPIO1"),
229*4882a593Smuzhiyun 	PINCTRL_PIN(171, "GBE_GPIO2"),
230*4882a593Smuzhiyun 	PINCTRL_PIN(172, "GBE_GPIO3"),
231*4882a593Smuzhiyun 	PINCTRL_PIN(173, "GBE_GPIO4"),
232*4882a593Smuzhiyun 	PINCTRL_PIN(174, "GBE_GPIO5"),
233*4882a593Smuzhiyun 	PINCTRL_PIN(175, "GBE_GPIO6"),
234*4882a593Smuzhiyun 	PINCTRL_PIN(176, "GBE_GPIO7"),
235*4882a593Smuzhiyun 	PINCTRL_PIN(177, "SPI_TPM_CS_N"),
236*4882a593Smuzhiyun 	PINCTRL_PIN(178, "GBE_GPIO9"),
237*4882a593Smuzhiyun 	PINCTRL_PIN(179, "GBE_GPIO10"),
238*4882a593Smuzhiyun 	PINCTRL_PIN(180, "GBE_GPIO11"),
239*4882a593Smuzhiyun 	PINCTRL_PIN(181, "GBE_GPIO12"),
240*4882a593Smuzhiyun 	PINCTRL_PIN(182, "PECI_SMB_DATA"),
241*4882a593Smuzhiyun 	PINCTRL_PIN(183, "SATA0_LED_N"),
242*4882a593Smuzhiyun 	PINCTRL_PIN(184, "SATA1_LED_N"),
243*4882a593Smuzhiyun 	PINCTRL_PIN(185, "SATA_PDETECT0"),
244*4882a593Smuzhiyun 	PINCTRL_PIN(186, "SATA_PDETECT1"),
245*4882a593Smuzhiyun 	PINCTRL_PIN(187, "SATA0_SDOUT"),
246*4882a593Smuzhiyun 	PINCTRL_PIN(188, "SATA1_SDOUT"),
247*4882a593Smuzhiyun 	PINCTRL_PIN(189, "SATA2_LED_N"),
248*4882a593Smuzhiyun 	PINCTRL_PIN(190, "SATA_PDETECT2"),
249*4882a593Smuzhiyun 	PINCTRL_PIN(191, "SATA2_SDOUT"),
250*4882a593Smuzhiyun 	/* EAST3 */
251*4882a593Smuzhiyun 	PINCTRL_PIN(192, "ESPI_IO0"),
252*4882a593Smuzhiyun 	PINCTRL_PIN(193, "ESPI_IO1"),
253*4882a593Smuzhiyun 	PINCTRL_PIN(194, "ESPI_IO2"),
254*4882a593Smuzhiyun 	PINCTRL_PIN(195, "ESPI_IO3"),
255*4882a593Smuzhiyun 	PINCTRL_PIN(196, "ESPI_CLK"),
256*4882a593Smuzhiyun 	PINCTRL_PIN(197, "ESPI_RST_N"),
257*4882a593Smuzhiyun 	PINCTRL_PIN(198, "ESPI_CS0_N"),
258*4882a593Smuzhiyun 	PINCTRL_PIN(199, "ESPI_ALRT0_N"),
259*4882a593Smuzhiyun 	PINCTRL_PIN(200, "ESPI_CS1_N"),
260*4882a593Smuzhiyun 	PINCTRL_PIN(201, "ESPI_ALRT1_N"),
261*4882a593Smuzhiyun 	PINCTRL_PIN(202, "ESPI_CLK_LOOPBK"),
262*4882a593Smuzhiyun 	/* EAST0 */
263*4882a593Smuzhiyun 	PINCTRL_PIN(203, "SPI_CS0_N"),
264*4882a593Smuzhiyun 	PINCTRL_PIN(204, "SPI_CS1_N"),
265*4882a593Smuzhiyun 	PINCTRL_PIN(205, "SPI_MOSI_IO0"),
266*4882a593Smuzhiyun 	PINCTRL_PIN(206, "SPI_MISO_IO1"),
267*4882a593Smuzhiyun 	PINCTRL_PIN(207, "SPI_IO2"),
268*4882a593Smuzhiyun 	PINCTRL_PIN(208, "SPI_IO3"),
269*4882a593Smuzhiyun 	PINCTRL_PIN(209, "SPI_CLK"),
270*4882a593Smuzhiyun 	PINCTRL_PIN(210, "SPI_CLK_LOOPBK"),
271*4882a593Smuzhiyun 	PINCTRL_PIN(211, "SUSPWRDNACK"),
272*4882a593Smuzhiyun 	PINCTRL_PIN(212, "PMU_SUSCLK"),
273*4882a593Smuzhiyun 	PINCTRL_PIN(213, "ADR_COMPLETE"),
274*4882a593Smuzhiyun 	PINCTRL_PIN(214, "ADR_TRIGGER_N"),
275*4882a593Smuzhiyun 	PINCTRL_PIN(215, "PMU_SLP_S45_N"),
276*4882a593Smuzhiyun 	PINCTRL_PIN(216, "PMU_SLP_S3_N"),
277*4882a593Smuzhiyun 	PINCTRL_PIN(217, "PMU_WAKE_N"),
278*4882a593Smuzhiyun 	PINCTRL_PIN(218, "PMU_PWRBTN_N"),
279*4882a593Smuzhiyun 	PINCTRL_PIN(219, "PMU_RESETBUTTON_N"),
280*4882a593Smuzhiyun 	PINCTRL_PIN(220, "PMU_PLTRST_N"),
281*4882a593Smuzhiyun 	PINCTRL_PIN(221, "SUS_STAT_N"),
282*4882a593Smuzhiyun 	PINCTRL_PIN(222, "PMU_I2C_CLK"),
283*4882a593Smuzhiyun 	PINCTRL_PIN(223, "PMU_I2C_DATA"),
284*4882a593Smuzhiyun 	PINCTRL_PIN(224, "PECI_SMB_CLK"),
285*4882a593Smuzhiyun 	PINCTRL_PIN(225, "PECI_SMB_ALRT_N"),
286*4882a593Smuzhiyun 	/* EMMC */
287*4882a593Smuzhiyun 	PINCTRL_PIN(226, "EMMC_CMD"),
288*4882a593Smuzhiyun 	PINCTRL_PIN(227, "EMMC_STROBE"),
289*4882a593Smuzhiyun 	PINCTRL_PIN(228, "EMMC_CLK"),
290*4882a593Smuzhiyun 	PINCTRL_PIN(229, "EMMC_D0"),
291*4882a593Smuzhiyun 	PINCTRL_PIN(230, "EMMC_D1"),
292*4882a593Smuzhiyun 	PINCTRL_PIN(231, "EMMC_D2"),
293*4882a593Smuzhiyun 	PINCTRL_PIN(232, "EMMC_D3"),
294*4882a593Smuzhiyun 	PINCTRL_PIN(233, "EMMC_D4"),
295*4882a593Smuzhiyun 	PINCTRL_PIN(234, "EMMC_D5"),
296*4882a593Smuzhiyun 	PINCTRL_PIN(235, "EMMC_D6"),
297*4882a593Smuzhiyun 	PINCTRL_PIN(236, "EMMC_D7"),
298*4882a593Smuzhiyun };
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun static const struct intel_padgroup cdf_community0_gpps[] = {
301*4882a593Smuzhiyun 	CDF_GPP(0, 0, 23),	/* WEST2 */
302*4882a593Smuzhiyun 	CDF_GPP(1, 24, 47),	/* WEST3 */
303*4882a593Smuzhiyun 	CDF_GPP(2, 48, 70),	/* WEST01 */
304*4882a593Smuzhiyun 	CDF_GPP(3, 71, 90),	/* WEST5 */
305*4882a593Smuzhiyun 	CDF_GPP(4, 91, 96),	/* WESTC */
306*4882a593Smuzhiyun 	CDF_GPP(5, 97, 101),	/* WESTC_DFX */
307*4882a593Smuzhiyun 	CDF_GPP(6, 102, 111),	/* WESTA */
308*4882a593Smuzhiyun 	CDF_GPP(7, 112, 123),	/* WESTB */
309*4882a593Smuzhiyun 	CDF_GPP(8, 124, 143),	/* WESTD */
310*4882a593Smuzhiyun 	CDF_GPP(9, 144, 144),	/* WESTD_PECI */
311*4882a593Smuzhiyun 	CDF_GPP(10, 145, 167),	/* WESTF */
312*4882a593Smuzhiyun };
313*4882a593Smuzhiyun 
314*4882a593Smuzhiyun static const struct intel_padgroup cdf_community1_gpps[] = {
315*4882a593Smuzhiyun 	CDF_GPP(0, 168, 191),	/* EAST2 */
316*4882a593Smuzhiyun 	CDF_GPP(1, 192, 202),	/* EAST3 */
317*4882a593Smuzhiyun 	CDF_GPP(2, 203, 225),	/* EAST0 */
318*4882a593Smuzhiyun 	CDF_GPP(3, 226, 236),	/* EMMC */
319*4882a593Smuzhiyun };
320*4882a593Smuzhiyun 
321*4882a593Smuzhiyun static const struct intel_community cdf_communities[] = {
322*4882a593Smuzhiyun 	CDF_COMMUNITY(0, 0, 167, cdf_community0_gpps),		/* West */
323*4882a593Smuzhiyun 	CDF_COMMUNITY(1, 168, 236, cdf_community1_gpps),	/* East */
324*4882a593Smuzhiyun };
325*4882a593Smuzhiyun 
326*4882a593Smuzhiyun static const struct intel_pinctrl_soc_data cdf_soc_data = {
327*4882a593Smuzhiyun 	.pins = cdf_pins,
328*4882a593Smuzhiyun 	.npins = ARRAY_SIZE(cdf_pins),
329*4882a593Smuzhiyun 	.communities = cdf_communities,
330*4882a593Smuzhiyun 	.ncommunities = ARRAY_SIZE(cdf_communities),
331*4882a593Smuzhiyun };
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun static INTEL_PINCTRL_PM_OPS(cdf_pinctrl_pm_ops);
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun static const struct acpi_device_id cdf_pinctrl_acpi_match[] = {
336*4882a593Smuzhiyun 	{ "INTC3001", (kernel_ulong_t)&cdf_soc_data },
337*4882a593Smuzhiyun 	{ }
338*4882a593Smuzhiyun };
339*4882a593Smuzhiyun MODULE_DEVICE_TABLE(acpi, cdf_pinctrl_acpi_match);
340*4882a593Smuzhiyun 
341*4882a593Smuzhiyun static struct platform_driver cdf_pinctrl_driver = {
342*4882a593Smuzhiyun 	.probe = intel_pinctrl_probe_by_hid,
343*4882a593Smuzhiyun 	.driver = {
344*4882a593Smuzhiyun 		.name = "cedarfork-pinctrl",
345*4882a593Smuzhiyun 		.acpi_match_table = cdf_pinctrl_acpi_match,
346*4882a593Smuzhiyun 		.pm = &cdf_pinctrl_pm_ops,
347*4882a593Smuzhiyun 	},
348*4882a593Smuzhiyun };
349*4882a593Smuzhiyun 
cdf_pinctrl_init(void)350*4882a593Smuzhiyun static int __init cdf_pinctrl_init(void)
351*4882a593Smuzhiyun {
352*4882a593Smuzhiyun 	return platform_driver_register(&cdf_pinctrl_driver);
353*4882a593Smuzhiyun }
354*4882a593Smuzhiyun subsys_initcall(cdf_pinctrl_init);
355*4882a593Smuzhiyun 
cdf_pinctrl_exit(void)356*4882a593Smuzhiyun static void __exit cdf_pinctrl_exit(void)
357*4882a593Smuzhiyun {
358*4882a593Smuzhiyun 	platform_driver_unregister(&cdf_pinctrl_driver);
359*4882a593Smuzhiyun }
360*4882a593Smuzhiyun module_exit(cdf_pinctrl_exit);
361*4882a593Smuzhiyun 
362*4882a593Smuzhiyun MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
363*4882a593Smuzhiyun MODULE_DESCRIPTION("Intel Cedar Fork PCH pinctrl/GPIO driver");
364*4882a593Smuzhiyun MODULE_LICENSE("GPL v2");
365