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"),
112f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson
113f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(90, "SDC1_CLK"),
114f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(91, "SDC1_CMD"),
115f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(92, "SDC1_DATA"),
116f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(93, "SDC3_CLK"),
117f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(94, "SDC3_CMD"),
118f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	PINCTRL_PIN(95, "SDC3_DATA"),
119e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
120e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
121e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define DECLARE_APQ_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
122e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(0);
123e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(1);
124e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(2);
125e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(3);
126e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(4);
127e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(5);
128e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(6);
129e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(7);
130e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(8);
131e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(9);
132e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(10);
133e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(11);
134e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(12);
135e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(13);
136e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(14);
137e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(15);
138e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(16);
139e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(17);
140e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(18);
141e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(19);
142e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(20);
143e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(21);
144e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(22);
145e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(23);
146e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(24);
147e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(25);
148e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(26);
149e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(27);
150e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(28);
151e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(29);
152e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(30);
153e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(31);
154e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(32);
155e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(33);
156e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(34);
157e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(35);
158e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(36);
159e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(37);
160e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(38);
161e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(39);
162e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(40);
163e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(41);
164e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(42);
165e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(43);
166e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(44);
167e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(45);
168e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(46);
169e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(47);
170e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(48);
171e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(49);
172e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(50);
173e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(51);
174e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(52);
175e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(53);
176e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(54);
177e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(55);
178e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(56);
179e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(57);
180e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(58);
181e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(59);
182e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(60);
183e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(61);
184e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(62);
185e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(63);
186e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(64);
187e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(65);
188e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(66);
189e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(67);
190e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(68);
191e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(69);
192e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(70);
193e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(71);
194e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(72);
195e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(73);
196e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(74);
197e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(75);
198e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(76);
199e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(77);
200e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(78);
201e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(79);
202e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(80);
203e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(81);
204e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(82);
205e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(83);
206e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(84);
207e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(85);
208e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(86);
209e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(87);
210e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(88);
211e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonDECLARE_APQ_GPIO_PINS(89);
212e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
213f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc1_clk_pins[] = { 90 };
214f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc1_cmd_pins[] = { 91 };
215f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc1_data_pins[] = { 92 };
216f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc3_clk_pins[] = { 93 };
217f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc3_cmd_pins[] = { 94 };
218f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Anderssonstatic const unsigned int sdc3_data_pins[] = { 95 };
219f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson
220e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define FUNCTION(fname)					\
221e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	[APQ_MUX_##fname] = {				\
222e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = #fname,				\
223e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.groups = fname##_groups,		\
224e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.ngroups = ARRAY_SIZE(fname##_groups),	\
225e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	}
226e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
227e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) \
228e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{						\
229e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = "gpio" #id,			\
230e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.pins = gpio##id##_pins,		\
231e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.npins = ARRAY_SIZE(gpio##id##_pins),	\
232e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.funcs = (int[]){			\
233144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson			APQ_MUX_gpio,			\
234e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f1,			\
235e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f2,			\
236e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f3,			\
237e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f4,			\
238e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f5,			\
239e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f6,			\
240e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f7,			\
241e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f8,			\
242e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f9,			\
243e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson			APQ_MUX_##f10,			\
244e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		},					\
245e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.nfuncs = 11,				\
246e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.ctl_reg = 0x1000 + 0x10 * id,		\
247e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.io_reg = 0x1004 + 0x10 * id,		\
248e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
249e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_status_reg = 0x100c + 0x10 * id,	\
250e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_target_reg = 0x400 + 0x4 * id,	\
251e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.mux_bit = 2,				\
252e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.pull_bit = 0,				\
253e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.drv_bit = 6,				\
254e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.oe_bit = 9,				\
255e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.in_bit = 0,				\
256e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.out_bit = 1,				\
257e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_enable_bit = 0,			\
258e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_status_bit = 0,			\
259e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_ack_high = 1,			\
260e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_target_bit = 0,			\
261f712c554a7fca8f6308afbce844eacbf5e48787bGeorgi Djakov		.intr_target_kpss_val = 4,		\
262e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_raw_status_bit = 3,		\
263e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_polarity_bit = 1,			\
264e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_detection_bit = 2,		\
265e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.intr_detection_width = 1,		\
266e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	}
267e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
268f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson#define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
269f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	{						\
270f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.name = #pg_name,			\
271f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.pins = pg_name##_pins,			\
272f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.npins = ARRAY_SIZE(pg_name##_pins),	\
273f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.ctl_reg = ctl,				\
274f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.io_reg = 0,				\
275f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_cfg_reg = 0,			\
276f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_status_reg = 0,			\
277f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_target_reg = 0,			\
278f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.mux_bit = -1,				\
279f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.pull_bit = pull,			\
280f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.drv_bit = drv,				\
281f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.oe_bit = -1,				\
282f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.in_bit = -1,				\
283f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.out_bit = -1,				\
284f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_enable_bit = -1,			\
285f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_status_bit = -1,			\
286f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_target_bit = -1,			\
287f712c554a7fca8f6308afbce844eacbf5e48787bGeorgi Djakov		.intr_target_kpss_val = -1,		\
288f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_raw_status_bit = -1,		\
289f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_polarity_bit = -1,		\
290f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_detection_bit = -1,		\
291f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson		.intr_detection_width = -1,		\
292f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	}
293f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson
294e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonenum apq8064_functions {
295e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_cam_mclk,
296e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_codec_mic_i2s,
297e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_codec_spkr_i2s,
298144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	APQ_MUX_gpio,
299e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi1,
300e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi2,
301e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi3,
302e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi4,
303e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi4_cam_i2c,
304e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5,
305e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs1,
306e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs2,
307e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi5_spi_cs3,
308e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6,
309e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs1,
310e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs2,
311e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi6_spi_cs3,
312e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7,
313e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs1,
314e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs2,
315e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi7_spi_cs3,
316e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_gsbi_cam_i2c,
317e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_hdmi,
318e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_mi2s,
319e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_bt,
320e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_fm,
321e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_riva_wlan,
322e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_sdc2,
323e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_sdc4,
324e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_slimbus,
325e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_spkr_i2s,
326e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_tsif1,
327e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_tsif2,
328e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_usb2_hsic,
329327455817a92522e669d2d11367e42af5956a8edPramod Gurav	APQ_MUX_ps_hold,
330e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	APQ_MUX_NA,
331e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
332e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
333e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const cam_mclk_groups[] = {
334e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio4" "gpio5"
335e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
336e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const codec_mic_i2s_groups[] = {
337e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio34", "gpio35", "gpio36", "gpio37", "gpio38"
338e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
339e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const codec_spkr_i2s_groups[] = {
340e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio39", "gpio40", "gpio41", "gpio42"
341e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
342144ef62645a7725a0a442129a8750baf257e88b9Bjorn Anderssonstatic const char * const gpio_groups[] = {
343144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
344144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
345144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
346144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
347144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
348144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
349144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
350144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
351144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
352144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
353144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
354144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
355144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	"gpio85", "gpio86", "gpio87", "gpio88", "gpio89"
356144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson};
357327455817a92522e669d2d11367e42af5956a8edPramod Guravstatic const char * const ps_hold_groups[] = {
358327455817a92522e669d2d11367e42af5956a8edPramod Gurav	"gpio78"
359327455817a92522e669d2d11367e42af5956a8edPramod Gurav};
360e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi1_groups[] = {
361e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio18", "gpio19", "gpio20", "gpio21"
362e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
363e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi2_groups[] = {
364e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio22", "gpio23", "gpio24", "gpio25"
365e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
366e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi3_groups[] = {
367e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio6", "gpio7", "gpio8", "gpio9"
368e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
369e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi4_groups[] = {
370e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
371e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
372e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi4_cam_i2c_groups[] = {
373e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
374e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
375e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_groups[] = {
376e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio51", "gpio52", "gpio53", "gpio54"
377e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
378e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs1_groups[] = {
379e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
380e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
381e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs2_groups[] = {
382e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
383e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
384e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi5_spi_cs3_groups[] = {
385e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
386e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
387e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_groups[] = {
388e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio14", "gpio15", "gpio16", "gpio17"
389e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
390e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs1_groups[] = {
391e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
392e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
393e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs2_groups[] = {
394e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
395e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
396e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi6_spi_cs3_groups[] = {
397e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
398e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
399e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_groups[] = {
400e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio82", "gpio83", "gpio84", "gpio85"
401e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
402e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs1_groups[] = {
403e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47"
404e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
405e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs2_groups[] = {
406e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio31"
407e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
408e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi7_spi_cs3_groups[] = {
409e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio32"
410e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
411e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const gsbi_cam_i2c_groups[] = {
412e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio10", "gpio11", "gpio12", "gpio13"
413e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
414e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const hdmi_groups[] = {
415e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio69", "gpio70", "gpio71", "gpio72"
416e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
417e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const mi2s_groups[] = {
418e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", "gpio33"
419e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
420e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_bt_groups[] = {
421e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio16", "gpio17"
422e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
423e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_fm_groups[] = {
424e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio14", "gpio15"
425e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
426e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const riva_wlan_groups[] = {
427e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68"
428e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
429e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const sdc2_groups[] = {
430e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62"
431e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
432e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const sdc4_groups[] = {
433e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"
434e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
435e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const slimbus_groups[] = {
436e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio40", "gpio41"
437e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
438e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const spkr_i2s_groups[] = {
439e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio47", "gpio48", "gpio49", "gpio50"
440e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
441e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const tsif1_groups[] = {
442e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio55", "gpio56", "gpio57"
443e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
444e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const tsif2_groups[] = {
445e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio58", "gpio59", "gpio60"
446e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
447e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const char * const usb2_hsic_groups[] = {
448e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	"gpio88", "gpio89"
449e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
450e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
451e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_function apq8064_functions[] = {
452e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(cam_mclk),
453e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(codec_mic_i2s),
454e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(codec_spkr_i2s),
455144ef62645a7725a0a442129a8750baf257e88b9Bjorn Andersson	FUNCTION(gpio),
456e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi1),
457e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi2),
458e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi3),
459e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi4),
460e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi4_cam_i2c),
461e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5),
462e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs1),
463e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs2),
464e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi5_spi_cs3),
465e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6),
466e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs1),
467e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs2),
468e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi6_spi_cs3),
469e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7),
470e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs1),
471e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs2),
472e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi7_spi_cs3),
473e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(gsbi_cam_i2c),
474e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(hdmi),
475e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(mi2s),
476e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_bt),
477e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_fm),
478e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(riva_wlan),
479e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(sdc2),
480e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(sdc4),
481e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(slimbus),
482e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(spkr_i2s),
483e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(tsif1),
484e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(tsif2),
485e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	FUNCTION(usb2_hsic),
486327455817a92522e669d2d11367e42af5956a8edPramod Gurav	FUNCTION(ps_hold),
487e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
488e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
489e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_pingroup apq8064_groups[] = {
490e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
491e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
492e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
493e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
494e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(4, NA, NA, cam_mclk, NA, NA, NA, NA, NA, NA, NA),
495e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(5, NA, cam_mclk, NA, NA, NA, NA, NA, NA, NA, NA),
496e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(6, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
497e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(7, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
498e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(8, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
499e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(9, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA),
500e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(10, gsbi4, NA, NA, NA, NA, NA, NA, NA, gsbi4_cam_i2c, NA),
501e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(11, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, gsbi4_cam_i2c),
502e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(12, gsbi4, NA, NA, NA, NA, gsbi4_cam_i2c, NA, NA, NA, NA),
503e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(13, gsbi4, NA, NA, NA, NA, gsbi4_cam_i2c, NA, NA, NA, NA),
504e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(14, riva_fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
505e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(15, riva_fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
506e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(16, riva_bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
507e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(17, riva_bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA),
508e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(18, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
509e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(19, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
510e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(20, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
511e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(21, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
512e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(22, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
513e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(23, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
514e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(24, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
515e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(25, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
516e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(26, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
517e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(27, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
518e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(28, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
519e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(29, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
520e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(30, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
521e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(31, mi2s, NA, gsbi5_spi_cs2, gsbi6_spi_cs2, gsbi7_spi_cs2, NA, NA, NA, NA, NA),
522e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(32, mi2s, NA, NA, NA, NA, gsbi5_spi_cs3, gsbi6_spi_cs3, gsbi7_spi_cs3, NA, NA),
523e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(33, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
524e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(34, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
525e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(35, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
526e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(36, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
527e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(37, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
528e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(38, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
529e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(39, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
530e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(40, slimbus, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA),
531e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(41, slimbus, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA),
532e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(42, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
533e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(43, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
534e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(44, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
535e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(45, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
536e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
537e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(47, spkr_i2s, gsbi5_spi_cs1, gsbi6_spi_cs1, gsbi7_spi_cs1, NA, NA, NA, NA, NA, NA),
538e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(48, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
539e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(49, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
540e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(50, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
541e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(51, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
542e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(52, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
543e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(53, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
544e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(54, NA, gsbi5, NA, NA, NA, NA, NA, NA, NA, NA),
545e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(55, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
546e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(56, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
547e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(57, tsif1, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
548e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(58, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
549e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(59, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
550e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(60, tsif2, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
551e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(61, NA, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
552e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(62, NA, sdc2, NA, NA, NA, NA, NA, NA, NA, NA),
553e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(63, NA, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
554e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(64, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
555e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(65, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
556e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(66, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
557e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(67, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
558e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(68, riva_wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA),
559e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(69, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
560e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(70, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
561e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(71, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
562e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(72, hdmi, NA, NA, NA, NA, NA, NA, NA, NA, NA),
563e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(73, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
564e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(74, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
565e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
566e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(76, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
567e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(77, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
568327455817a92522e669d2d11367e42af5956a8edPramod Gurav	PINGROUP(78, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA),
569e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(79, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
570e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(80, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
571e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(81, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
572e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(82, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA),
573e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(83, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA, NA),
574e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(84, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA),
575e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(85, NA, NA, gsbi7, NA, NA, NA, NA, NA, NA, NA),
576e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(86, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
577e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(87, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
578e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(88, usb2_hsic, NA, NA, NA, NA, NA, NA, NA, NA, NA),
579e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	PINGROUP(89, usb2_hsic, NA, NA, NA, NA, NA, NA, NA, NA, NA),
580f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson
581f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc1_clk, 0x20a0, 13, 6),
582f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc1_cmd, 0x20a0, 11, 3),
583f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc1_data, 0x20a0, 9, 0),
584f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson
585f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc3_clk, 0x20a4, 14, 6),
586f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3),
587f6d8812879a0c9d87e349945742e0b9614bfbe9aBjorn Andersson	SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0),
588e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
589e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
590e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson#define NUM_GPIO_PINGROUPS 90
591e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
592e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct msm_pinctrl_soc_data apq8064_pinctrl = {
593e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.pins = apq8064_pins,
594e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.npins = ARRAY_SIZE(apq8064_pins),
595e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.functions = apq8064_functions,
596e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.nfunctions = ARRAY_SIZE(apq8064_functions),
597e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.groups = apq8064_groups,
598e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.ngroups = ARRAY_SIZE(apq8064_groups),
599e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.ngpios = NUM_GPIO_PINGROUPS,
600e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
601e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
602e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic int apq8064_pinctrl_probe(struct platform_device *pdev)
603e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
604e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	return msm_pinctrl_probe(pdev, &apq8064_pinctrl);
605e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
606e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
607e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic const struct of_device_id apq8064_pinctrl_of_match[] = {
608e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{ .compatible = "qcom,apq8064-pinctrl", },
609e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	{ },
610e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
611e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
612e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic struct platform_driver apq8064_pinctrl_driver = {
613e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.driver = {
614e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.name = "apq8064-pinctrl",
615e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.owner = THIS_MODULE,
616e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson		.of_match_table = apq8064_pinctrl_of_match,
617e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	},
618e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.probe = apq8064_pinctrl_probe,
619e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	.remove = msm_pinctrl_remove,
620e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson};
621e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
622e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic int __init apq8064_pinctrl_init(void)
623e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
624e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	return platform_driver_register(&apq8064_pinctrl_driver);
625e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
626e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonarch_initcall(apq8064_pinctrl_init);
627e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
628e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonstatic void __exit apq8064_pinctrl_exit(void)
629e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson{
630e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson	platform_driver_unregister(&apq8064_pinctrl_driver);
631e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson}
632e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Anderssonmodule_exit(apq8064_pinctrl_exit);
633e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn Andersson
634e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
635e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_DESCRIPTION("Qualcomm APQ8064 pinctrl driver");
636e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_LICENSE("GPL v2");
637e2c802be589bf262fe8f1bd83a79111bd3873972Bjorn AnderssonMODULE_DEVICE_TABLE(of, apq8064_pinctrl_of_match);
638