pinctrl-apq8064.c revision e2c802be589bf262fe8f1bd83a79111bd3873972
1e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson/*
2e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * Copyright (c) 2014, Sony Mobile Communications AB.
3e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson *
4e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * This program is free software; you can redistribute it and/or modify
5e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * it under the terms of the GNU General Public License version 2 and
6e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * only version 2 as published by the Free Software Foundation.
7e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson *
8e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * This program is distributed in the hope that it will be useful,
9e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * but WITHOUT ANY WARRANTY; without even the implied warranty of
10e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson * GNU General Public License for more details.
12e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson */
13e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
14e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#include <linux/module.h>
15e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#include <linux/of.h>
16e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#include <linux/platform_device.h>
17e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#include <linux/pinctrl/pinctrl.h>
18e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
19e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#include "pinctrl-msm.h"
20e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
21e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct pinctrl_pin_desc apq8064_pins[] = {
22e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(0, "GPIO_0"),
23e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(1, "GPIO_1"),
24e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(2, "GPIO_2"),
25e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(3, "GPIO_3"),
26e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(4, "GPIO_4"),
27e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(5, "GPIO_5"),
28e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(6, "GPIO_6"),
29e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(7, "GPIO_7"),
30e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(8, "GPIO_8"),
31e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(9, "GPIO_9"),
32e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(10, "GPIO_10"),
33e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(11, "GPIO_11"),
34e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(12, "GPIO_12"),
35e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(13, "GPIO_13"),
36e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(14, "GPIO_14"),
37e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(15, "GPIO_15"),
38e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(16, "GPIO_16"),
39e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(17, "GPIO_17"),
40e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(18, "GPIO_18"),
41e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(19, "GPIO_19"),
42e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(20, "GPIO_20"),
43e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(21, "GPIO_21"),
44e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(22, "GPIO_22"),
45e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(23, "GPIO_23"),
46e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(24, "GPIO_24"),
47e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(25, "GPIO_25"),
48e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(26, "GPIO_26"),
49e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(27, "GPIO_27"),
50e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(28, "GPIO_28"),
51e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(29, "GPIO_29"),
52e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(30, "GPIO_30"),
53e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(31, "GPIO_31"),
54e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(32, "GPIO_32"),
55e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(33, "GPIO_33"),
56e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(34, "GPIO_34"),
57e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(35, "GPIO_35"),
58e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(36, "GPIO_36"),
59e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(37, "GPIO_37"),
60e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(38, "GPIO_38"),
61e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(39, "GPIO_39"),
62e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(40, "GPIO_40"),
63e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(41, "GPIO_41"),
64e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(42, "GPIO_42"),
65e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(43, "GPIO_43"),
66e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(44, "GPIO_44"),
67e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(45, "GPIO_45"),
68e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(46, "GPIO_46"),
69e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(47, "GPIO_47"),
70e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(48, "GPIO_48"),
71e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(49, "GPIO_49"),
72e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(50, "GPIO_50"),
73e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(51, "GPIO_51"),
74e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(52, "GPIO_52"),
75e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(53, "GPIO_53"),
76e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(54, "GPIO_54"),
77e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(55, "GPIO_55"),
78e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(56, "GPIO_56"),
79e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(57, "GPIO_57"),
80e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(58, "GPIO_58"),
81e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(59, "GPIO_59"),
82e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(60, "GPIO_60"),
83e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(61, "GPIO_61"),
84e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(62, "GPIO_62"),
85e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(63, "GPIO_63"),
86e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(64, "GPIO_64"),
87e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(65, "GPIO_65"),
88e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(66, "GPIO_66"),
89e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(67, "GPIO_67"),
90e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(68, "GPIO_68"),
91e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(69, "GPIO_69"),
92e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(70, "GPIO_70"),
93e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(71, "GPIO_71"),
94e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(72, "GPIO_72"),
95e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(73, "GPIO_73"),
96e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(74, "GPIO_74"),
97e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(75, "GPIO_75"),
98e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(76, "GPIO_76"),
99e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(77, "GPIO_77"),
100e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(78, "GPIO_78"),
101e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(79, "GPIO_79"),
102e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(80, "GPIO_80"),
103e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(81, "GPIO_81"),
104e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(82, "GPIO_82"),
105e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(83, "GPIO_83"),
106e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(84, "GPIO_84"),
107e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(85, "GPIO_85"),
108e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(86, "GPIO_86"),
109e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(87, "GPIO_87"),
110e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(88, "GPIO_88"),
111e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINCTRL_PIN(89, "GPIO_89"),
112e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
113e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
114e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define DECLARE_APQ_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
115e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(0);
116e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(1);
117e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(2);
118e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(3);
119e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(4);
120e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(5);
121e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(6);
122e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(7);
123e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(8);
124e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(9);
125e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(10);
126e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(11);
127e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(12);
128e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(13);
129e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(14);
130e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(15);
131e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(16);
132e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(17);
133e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(18);
134e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(19);
135e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(20);
136e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(21);
137e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(22);
138e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(23);
139e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(24);
140e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(25);
141e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(26);
142e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(27);
143e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(28);
144e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(29);
145e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(30);
146e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(31);
147e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(32);
148e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(33);
149e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(34);
150e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(35);
151e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(36);
152e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(37);
153e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(38);
154e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(39);
155e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(40);
156e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(41);
157e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(42);
158e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(43);
159e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(44);
160e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(45);
161e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(46);
162e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(47);
163e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(48);
164e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(49);
165e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(50);
166e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(51);
167e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(52);
168e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(53);
169e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(54);
170e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(55);
171e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(56);
172e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(57);
173e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(58);
174e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(59);
175e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(60);
176e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(61);
177e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(62);
178e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(63);
179e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(64);
180e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(65);
181e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(66);
182e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(67);
183e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(68);
184e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(69);
185e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(70);
186e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(71);
187e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(72);
188e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(73);
189e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(74);
190e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(75);
191e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(76);
192e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(77);
193e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(78);
194e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(79);
195e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(80);
196e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(81);
197e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(82);
198e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(83);
199e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(84);
200e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(85);
201e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(86);
202e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(87);
203e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(88);
204e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(89);
205e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
206e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define FUNCTION(fname)					\
207e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	[APQ_MUX_##fname] = {				\
208e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = #fname,				\
209e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.groups = fname##_groups,		\
210e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.ngroups = ARRAY_SIZE(fname##_groups),	\
211e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	}
212e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
213e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) \
214e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{						\
215e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = "gpio" #id,			\
216e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.pins = gpio##id##_pins,		\
217e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.npins = ARRAY_SIZE(gpio##id##_pins),	\
218e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.funcs = (int[]){			\
219e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_NA, /* gpio mode */	\
220e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f1,			\
221e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f2,			\
222e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f3,			\
223e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f4,			\
224e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f5,			\
225e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f6,			\
226e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f7,			\
227e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f8,			\
228e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f9,			\
229e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f10,			\
230e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		},					\
231e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.nfuncs = 11,				\
232e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.ctl_reg = 0x1000 + 0x10 * id,		\
233e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.io_reg = 0x1004 + 0x10 * id,		\
234e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
235e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_status_reg = 0x100c + 0x10 * id,	\
236e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_target_reg = 0x400 + 0x4 * id,	\
237e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.mux_bit = 2,				\
238e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.pull_bit = 0,				\
239e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.drv_bit = 6,				\
240e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.oe_bit = 9,				\
241e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.in_bit = 0,				\
242e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.out_bit = 1,				\
243e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_enable_bit = 0,			\
244e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_status_bit = 0,			\
245e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_ack_high = 1,			\
246e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_target_bit = 0,			\
247e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_raw_status_bit = 3,		\
248e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_polarity_bit = 1,			\
249e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_detection_bit = 2,		\
250e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_detection_width = 1,		\
251e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	}
252e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
253e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonenum apq8064_functions {
254e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_cam_mclk,
255e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_codec_mic_i2s,
256e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_codec_spkr_i2s,
257e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi1,
258e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi2,
259e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi3,
260e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi4,
261e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi4_cam_i2c,
262e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5,
263e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs1,
264e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs2,
265e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs3,
266e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6,
267e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs1,
268e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs2,
269e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs3,
270e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7,
271e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs1,
272e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs2,
273e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs3,
274e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi_cam_i2c,
275e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_hdmi,
276e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_mi2s,
277e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_bt,
278e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_fm,
279e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_wlan,
280e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_sdc2,
281e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_sdc4,
282e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_slimbus,
283e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_spkr_i2s,
284e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_tsif1,
285e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_tsif2,
286e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_usb2_hsic,
287e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_NA,
288e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
289e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
290e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const cam_mclk_groups[] = {
291e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio4" "gpio5"
292e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
293e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const codec_mic_i2s_groups[] = {
294e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio34", "gpio35", "gpio36", "gpio37", "gpio38"
295e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
296e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const codec_spkr_i2s_groups[] = {
297e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio39", "gpio40", "gpio41", "gpio42"
298e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
299e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi1_groups[] = {
300e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio18", "gpio19", "gpio20", "gpio21"
301e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
302e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi2_groups[] = {
303e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio22", "gpio23", "gpio24", "gpio25"
304e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
305e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi3_groups[] = {
306e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio6", "gpio7", "gpio8", "gpio9"
307e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
308e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi4_groups[] = {
309e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
310e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
311e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi4_cam_i2c_groups[] = {
312e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
313e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
314e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_groups[] = {
315e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio51", "gpio52", "gpio53", "gpio54"
316e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
317e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs1_groups[] = {
318e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
319e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
320e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs2_groups[] = {
321e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
322e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
323e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs3_groups[] = {
324e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
325e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
326e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_groups[] = {
327e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio14", "gpio15", "gpio16", "gpio17"
328e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
329e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs1_groups[] = {
330e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
331e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
332e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs2_groups[] = {
333e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
334e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
335e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs3_groups[] = {
336e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
337e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
338e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_groups[] = {
339e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio82", "gpio83", "gpio84", "gpio85"
340e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
341e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs1_groups[] = {
342e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
343e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
344e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs2_groups[] = {
345e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
346e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
347e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs3_groups[] = {
348e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
349e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
350e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi_cam_i2c_groups[] = {
351e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
352e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
353e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const hdmi_groups[] = {
354e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio69", "gpio70", "gpio71", "gpio72"
355e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
356e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const mi2s_groups[] = {
357e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", "gpio33"
358e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
359e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_bt_groups[] = {
360e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio16", "gpio17"
361e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
362e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_fm_groups[] = {
363e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio14", "gpio15"
364e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
365e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_wlan_groups[] = {
366e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68"
367e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
368e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const sdc2_groups[] = {
369e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62"
370e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
371e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const sdc4_groups[] = {
372e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"
373e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
374e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const slimbus_groups[] = {
375e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio40", "gpio41"
376e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
377e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const spkr_i2s_groups[] = {
378e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47", "gpio48", "gpio49", "gpio50"
379e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
380e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const tsif1_groups[] = {
381e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio55", "gpio56", "gpio57"
382e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
383e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const tsif2_groups[] = {
384e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio58", "gpio59", "gpio60"
385e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
386e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const usb2_hsic_groups[] = {
387e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio88", "gpio89"
388e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
389e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
390e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_function apq8064_functions[] = {
391e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(cam_mclk),
392e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(codec_mic_i2s),
393e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(codec_spkr_i2s),
394e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi1),
395e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi2),
396e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi3),
397e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi4),
398e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi4_cam_i2c),
399e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5),
400e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs1),
401e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs2),
402e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs3),
403e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6),
404e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs1),
405e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs2),
406e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs3),
407e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7),
408e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs1),
409e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs2),
410e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs3),
411e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi_cam_i2c),
412e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(hdmi),
413e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(mi2s),
414e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_bt),
415e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_fm),
416e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_wlan),
417e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(sdc2),
418e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(sdc4),
419e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(slimbus),
420e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(spkr_i2s),
421e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(tsif1),
422e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(tsif2),
423e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(usb2_hsic),
424e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
425e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
426e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_pingroup apq8064_groups[] = {
427e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
428e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
429e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
430e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
431e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(4, NA, NA, cam_mclk, NA, NA, NA, NA, NA, NA, NA),
432e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(5, NA, cam_mclk, NA, NA, NA, NA, NA, NA, NA, NA),
433e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(6, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
434e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(7, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
435e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(8, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
436e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(9, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
437e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(10, gsbi4, NA, NA, NA, NA, NA, NA, NA, gsbi4_cam_i2c, NA),
438e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(11, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, gsbi4_cam_i2c),
439e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(12, gsbi4, NA, NA, NA, NA, gsbi4_cam_i2c, NA, NA, NA, NA),
440e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(13, gsbi4, NA, NA, NA, NA, gsbi4_cam_i2c, NA, NA, NA, NA),
441e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(14, riva_fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
442e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(15, riva_fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
443e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(16, riva_bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
444e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(17, riva_bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
445e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(18, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
446e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(19, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
447e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(20, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
448e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(21, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
449e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(22, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
450e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(23, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
451e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(24, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
452e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(25, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
453e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(26, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
454e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(27, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
455e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(28, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
456e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(29, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
457e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(30, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
458e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(31, mi2s, NA, gsbi5_spi_cs2, gsbi6_spi_cs2, gsbi7_spi_cs2, NA, NA, NA, NA, NA),
459e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(32, mi2s, NA, NA, NA, NA, gsbi5_spi_cs3, gsbi6_spi_cs3, gsbi7_spi_cs3, NA, NA),
460e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(33, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
461e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(34, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
462e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(35, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
463e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(36, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
464e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(37, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
465e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(38, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
466e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(39, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
467e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(40, slimbus, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA),
468e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(41, slimbus, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA),
469e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(42, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
470e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(43, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
471e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(44, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
472e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(45, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
473e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
474e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(47, spkr_i2s, gsbi5_spi_cs1, gsbi6_spi_cs1, gsbi7_spi_cs1, NA, NA, NA, NA, NA, NA),
475e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(48, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
476e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(49, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
477e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(50, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
478e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(51, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
479e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(52, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
480e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(53, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
481e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(54, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
482e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(55, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
483e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(56, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
484e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(57, tsif1, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
485e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(58, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
486e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(59, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
487e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(60, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
488e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(61, NA, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
489e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(62, NA, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
490e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(63, NA, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
491e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(64, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
492e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(65, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
493e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(66, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
494e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(67, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
495e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(68, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
496e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(69, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
497e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(70, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
498e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(71, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
499e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(72, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
500e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(73, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
501e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(74, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
502e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
503e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(76, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
504e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(77, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
505e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(78, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
506e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(79, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
507e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(80, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
508e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(81, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
509e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(82, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA),
510e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(83, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA, NA),
511e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(84, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA),
512e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(85, NA, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA),
513e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(86, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
514e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(87, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
515e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(88, usb2_hsic, NA, NA, NA, NA, NA, NA, NA, NA, NA),
516e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(89, usb2_hsic, NA, NA, NA, NA, NA, NA, NA, NA, NA),
517e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
518e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
519e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define NUM_GPIO_PINGROUPS 90
520e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
521e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_pinctrl_soc_data apq8064_pinctrl = {
522e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.pins = apq8064_pins,
523e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.npins = ARRAY_SIZE(apq8064_pins),
524e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.functions = apq8064_functions,
525e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.nfunctions = ARRAY_SIZE(apq8064_functions),
526e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.groups = apq8064_groups,
527e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.ngroups = ARRAY_SIZE(apq8064_groups),
528e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.ngpios = NUM_GPIO_PINGROUPS,
529e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
530e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
531e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic int apq8064_pinctrl_probe(struct platform_device *pdev)
532e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
533e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	return msm_pinctrl_probe(pdev, &apq8064_pinctrl);
534e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
535e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
536e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct of_device_id apq8064_pinctrl_of_match[] = {
537e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{ .compatible = "qcom,apq8064-pinctrl", },
538e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{ },
539e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
540e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
541e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic struct platform_driver apq8064_pinctrl_driver = {
542e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.driver = {
543e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = "apq8064-pinctrl",
544e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.owner = THIS_MODULE,
545e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.of_match_table = apq8064_pinctrl_of_match,
546e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	},
547e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.probe = apq8064_pinctrl_probe,
548e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.remove = msm_pinctrl_remove,
549e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
550e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
551e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic int __init apq8064_pinctrl_init(void)
552e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
553e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	return platform_driver_register(&apq8064_pinctrl_driver);
554e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
555e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonarch_initcall(apq8064_pinctrl_init);
556e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
557e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic void __exit apq8064_pinctrl_exit(void)
558e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
559e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	platform_driver_unregister(&apq8064_pinctrl_driver);
560e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
561e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonmodule_exit(apq8064_pinctrl_exit);
562e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
563e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
564e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_DESCRIPTION("Qualcomm APQ8064 pinctrl driver");
565e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_LICENSE("GPL v2");
566e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_DEVICE_TABLE(of, apq8064_pinctrl_of_match);
567