xref: /OK3568_Linux_fs/kernel/drivers/pinctrl/pxa/pinctrl-pxa25x.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Marvell PXA25x family pin control
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2016 Robert Jarzmik
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun #include <linux/module.h>
8*4882a593Smuzhiyun #include <linux/platform_device.h>
9*4882a593Smuzhiyun #include <linux/of.h>
10*4882a593Smuzhiyun #include <linux/of_device.h>
11*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include "pinctrl-pxa2xx.h"
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun static const struct pxa_desc_pin pxa25x_pins[] = {
16*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
17*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(1),
18*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "GP_RST")),
19*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(2)),
20*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(3)),
21*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(4)),
22*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(5)),
23*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(6),
24*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCLK")),
25*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(7),
26*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "48_MHz")),
27*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(8),
28*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCS0")),
29*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
30*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCS1")),
31*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
32*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "RTCCLK")),
33*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
34*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "3_6_MHz")),
35*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
36*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "32_kHz")),
37*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
38*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "MBGNT")),
39*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
40*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "MBREQ")),
41*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(15),
42*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nCS_1")),
43*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
44*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "PWM0")),
45*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
46*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "PWM1")),
47*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
48*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "RDY")),
49*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
50*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "DREQ[1]")),
51*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
52*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "DREQ[0]")),
53*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(21)),
54*4882a593Smuzhiyun 	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(22)),
55*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
56*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "SCLK")),
57*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
58*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "SFRM")),
59*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
60*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "TXD")),
61*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
62*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "RXD")),
63*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
64*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "EXTCLK")),
65*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
66*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "BITCLK"),
67*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 2, "BITCLK"),
68*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "BITCLK")),
69*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
70*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "SDATA_IN0"),
71*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 2, "SDATA_IN")),
72*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
73*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "SDATA_OUT"),
74*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "SDATA_OUT")),
75*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
76*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "SYNC"),
77*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "SYNC")),
78*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
79*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "SDATA_IN1"),
80*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "SYSCLK")),
81*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
82*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nCS[5]")),
83*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
84*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "FFRXD"),
85*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "MMCCS0")),
86*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
87*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "CTS")),
88*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
89*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "DCD")),
90*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
91*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "DSR")),
92*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
93*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "RI")),
94*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
95*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCC1"),
96*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "FFTXD")),
97*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
98*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "DTR")),
99*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
100*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "RTS")),
101*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
102*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "BTRXD"),
103*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 3, "HWRXD")),
104*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
105*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "BTTXD"),
106*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 3, "HWTXD")),
107*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
108*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "BTCTS"),
109*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 3, "HWCTS")),
110*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
111*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "BTRTS"),
112*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 3, "HWRTS")),
113*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
114*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "ICP_RXD"),
115*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 2, "RXD")),
116*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
117*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "TXD"),
118*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "ICP_TXD")),
119*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
120*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "HWTXD"),
121*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPOE")),
122*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
123*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "HWRXD"),
124*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPWE")),
125*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
126*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "HWCTS"),
127*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPIOR")),
128*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
129*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "HWRTS"),
130*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPIOW")),
131*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
132*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPCE[1]")),
133*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
134*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCLK"),
135*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPCE[2]")),
136*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
137*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCLK"),
138*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPSKTSEL")),
139*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
140*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nPREG")),
141*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
142*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "nPWAIT")),
143*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
144*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "nIOIS16")),
145*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
146*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<0>")),
147*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
148*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<1>")),
149*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
150*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<2>")),
151*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
152*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<3>")),
153*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
154*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<4>")),
155*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
156*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<5>")),
157*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
158*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<6>")),
159*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
160*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<7>")),
161*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
162*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "MBREQ"),
163*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<8>")),
164*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
165*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCS0"),
166*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<9>")),
167*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
168*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCS1"),
169*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<10>")),
170*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
171*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MMCCLK"),
172*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<11>")),
173*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
174*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "RTCCLK"),
175*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<12>")),
176*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
177*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "3_6_MHz"),
178*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<13>")),
179*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
180*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "32_kHz"),
181*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<14>")),
182*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
183*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "MBGNT"),
184*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LDD<15>")),
185*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
186*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LCD_FCLK")),
187*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
188*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LCD_LCLK")),
189*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
190*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LCD_PCLK")),
191*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
192*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "LCD_ACBIAS")),
193*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
194*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nCS<2>")),
195*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
196*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nCS<3>")),
197*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
198*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 2, "nCS<4>")),
199*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
200*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "NSSPSCLK"),
201*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "NSSPSCLK")),
202*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
203*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 1, "NSSPSFRM"),
204*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "NSSPSFRM")),
205*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
206*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 2, "NSSPRXD"),
207*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "NSSPTXD")),
208*4882a593Smuzhiyun 	PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
209*4882a593Smuzhiyun 		     PXA_FUNCTION(0, 2, "NSSPRXD"),
210*4882a593Smuzhiyun 		     PXA_FUNCTION(1, 1, "NSSPTXD")),
211*4882a593Smuzhiyun };
212*4882a593Smuzhiyun 
pxa25x_pinctrl_probe(struct platform_device * pdev)213*4882a593Smuzhiyun static int pxa25x_pinctrl_probe(struct platform_device *pdev)
214*4882a593Smuzhiyun {
215*4882a593Smuzhiyun 	int ret, i;
216*4882a593Smuzhiyun 	void __iomem *base_af[8];
217*4882a593Smuzhiyun 	void __iomem *base_dir[4];
218*4882a593Smuzhiyun 	void __iomem *base_sleep[4];
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun 	base_af[0] = devm_platform_ioremap_resource(pdev, 0);
221*4882a593Smuzhiyun 	if (IS_ERR(base_af[0]))
222*4882a593Smuzhiyun 		return PTR_ERR(base_af[0]);
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun 	base_dir[0] = devm_platform_ioremap_resource(pdev, 1);
225*4882a593Smuzhiyun 	if (IS_ERR(base_dir[0]))
226*4882a593Smuzhiyun 		return PTR_ERR(base_dir[0]);
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun 	base_dir[3] = devm_platform_ioremap_resource(pdev, 2);
229*4882a593Smuzhiyun 	if (IS_ERR(base_dir[3]))
230*4882a593Smuzhiyun 		return PTR_ERR(base_dir[3]);
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun 	base_sleep[0] = devm_platform_ioremap_resource(pdev, 3);
233*4882a593Smuzhiyun 	if (IS_ERR(base_sleep[0]))
234*4882a593Smuzhiyun 		return PTR_ERR(base_sleep[0]);
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun 	for (i = 0; i < ARRAY_SIZE(base_af); i++)
237*4882a593Smuzhiyun 		base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
238*4882a593Smuzhiyun 	for (i = 0; i < 3; i++)
239*4882a593Smuzhiyun 		base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
240*4882a593Smuzhiyun 	for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
241*4882a593Smuzhiyun 		base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun 	ret = pxa2xx_pinctrl_init(pdev, pxa25x_pins, ARRAY_SIZE(pxa25x_pins),
244*4882a593Smuzhiyun 				  base_af, base_dir, base_sleep);
245*4882a593Smuzhiyun 	return ret;
246*4882a593Smuzhiyun }
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun static const struct of_device_id pxa25x_pinctrl_match[] = {
249*4882a593Smuzhiyun 	{ .compatible = "marvell,pxa25x-pinctrl", },
250*4882a593Smuzhiyun 	{}
251*4882a593Smuzhiyun };
252*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, pxa25x_pinctrl_match);
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun static struct platform_driver pxa25x_pinctrl_driver = {
255*4882a593Smuzhiyun 	.probe	= pxa25x_pinctrl_probe,
256*4882a593Smuzhiyun 	.driver	= {
257*4882a593Smuzhiyun 		.name		= "pxa25x-pinctrl",
258*4882a593Smuzhiyun 		.of_match_table	= pxa25x_pinctrl_match,
259*4882a593Smuzhiyun 	},
260*4882a593Smuzhiyun };
261*4882a593Smuzhiyun module_platform_driver(pxa25x_pinctrl_driver);
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
264*4882a593Smuzhiyun MODULE_DESCRIPTION("Marvell PXA25x pinctrl driver");
265*4882a593Smuzhiyun MODULE_LICENSE("GPL v2");
266