xref: /linux/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c (revision c34e9ab9a612ee8b18273398ef75c207b01f516d)
1221173a3SKrzysztof Kozlowski // SPDX-License-Identifier: GPL-2.0+
2221173a3SKrzysztof Kozlowski //
3221173a3SKrzysztof Kozlowski // Exynos ARMv8 specific support for Samsung pinctrl/gpiolib driver
4221173a3SKrzysztof Kozlowski // with eint support.
5221173a3SKrzysztof Kozlowski //
6221173a3SKrzysztof Kozlowski // Copyright (c) 2012 Samsung Electronics Co., Ltd.
7221173a3SKrzysztof Kozlowski //		http://www.samsung.com
8221173a3SKrzysztof Kozlowski // Copyright (c) 2012 Linaro Ltd
9221173a3SKrzysztof Kozlowski //		http://www.linaro.org
10221173a3SKrzysztof Kozlowski // Copyright (c) 2017 Krzysztof Kozlowski <krzk@kernel.org>
11221173a3SKrzysztof Kozlowski //
12221173a3SKrzysztof Kozlowski // This file contains the Samsung Exynos specific information required by the
13221173a3SKrzysztof Kozlowski // the Samsung pinctrl/gpiolib driver. It also includes the implementation of
14221173a3SKrzysztof Kozlowski // external gpio and wakeup interrupt support.
15cfa76ddfSKrzysztof Kozlowski 
16cfa76ddfSKrzysztof Kozlowski #include <linux/slab.h>
17cfa76ddfSKrzysztof Kozlowski #include <linux/soc/samsung/exynos-regs-pmu.h>
18cfa76ddfSKrzysztof Kozlowski 
19cfa76ddfSKrzysztof Kozlowski #include "pinctrl-samsung.h"
20cfa76ddfSKrzysztof Kozlowski #include "pinctrl-exynos.h"
21cfa76ddfSKrzysztof Kozlowski 
22cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type bank_type_off = {
23cfa76ddfSKrzysztof Kozlowski 	.fld_width = { 4, 1, 2, 2, 2, 2, },
24cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
25cfa76ddfSKrzysztof Kozlowski };
26cfa76ddfSKrzysztof Kozlowski 
27cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type bank_type_alive = {
28cfa76ddfSKrzysztof Kozlowski 	.fld_width = { 4, 1, 2, 2, },
29cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
30cfa76ddfSKrzysztof Kozlowski };
31cfa76ddfSKrzysztof Kozlowski 
32cfa76ddfSKrzysztof Kozlowski /* Exynos5433 has the 4bit widths for PINCFG_TYPE_DRV bitfields. */
33cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type exynos5433_bank_type_off = {
34cfa76ddfSKrzysztof Kozlowski 	.fld_width = { 4, 1, 2, 4, 2, 2, },
35cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
36cfa76ddfSKrzysztof Kozlowski };
37cfa76ddfSKrzysztof Kozlowski 
38cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type exynos5433_bank_type_alive = {
39cfa76ddfSKrzysztof Kozlowski 	.fld_width = { 4, 1, 2, 4, },
40cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
41cfa76ddfSKrzysztof Kozlowski };
42cfa76ddfSKrzysztof Kozlowski 
43cdd3d945SSam Protsenko /*
44cdd3d945SSam Protsenko  * Bank type for alive type. Bit fields:
45cdd3d945SSam Protsenko  * CON: 4, DAT: 1, PUD: 2, DRV: 3
46cdd3d945SSam Protsenko  */
47cdd3d945SSam Protsenko static const struct samsung_pin_bank_type exynos7870_bank_type_alive = {
48cdd3d945SSam Protsenko 	.fld_width = { 4, 1, 2, 3, },
49cdd3d945SSam Protsenko 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
50cdd3d945SSam Protsenko };
51cdd3d945SSam Protsenko 
52cdd3d945SSam Protsenko /*
53cdd3d945SSam Protsenko  * Bank type for non-alive type. Bit fields:
54cdd3d945SSam Protsenko  * CON: 4, DAT: 1, PUD: 4, DRV: 4, CONPDN: 2, PUDPDN: 4
55cdd3d945SSam Protsenko  */
56cdd3d945SSam Protsenko static const struct samsung_pin_bank_type exynos850_bank_type_off  = {
57cdd3d945SSam Protsenko 	.fld_width = { 4, 1, 4, 4, 2, 4, },
58cdd3d945SSam Protsenko 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
59cdd3d945SSam Protsenko };
60cdd3d945SSam Protsenko 
61eed2e792SIvaylo Ivanov /*
62eed2e792SIvaylo Ivanov  * Bank type for alive type. Bit fields:
63eed2e792SIvaylo Ivanov  * CON: 4, DAT: 1, PUD: 4, DRV: 4
64eed2e792SIvaylo Ivanov  */
65eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_type exynos850_bank_type_alive = {
66eed2e792SIvaylo Ivanov 	.fld_width = { 4, 1, 4, 4, },
67eed2e792SIvaylo Ivanov 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
68eed2e792SIvaylo Ivanov };
69eed2e792SIvaylo Ivanov 
70cfa76ddfSKrzysztof Kozlowski /*
71cfa76ddfSKrzysztof Kozlowski  * Bank type for non-alive type. Bit fields:
72cfa76ddfSKrzysztof Kozlowski  * CON: 4, DAT: 1, PUD: 2, DRV: 3, CONPDN: 2, PUDPDN: 2
73cfa76ddfSKrzysztof Kozlowski  */
74cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type exynos8895_bank_type_off  = {
75938a10bbSPaweł Chmiel 	.fld_width = { 4, 1, 2, 3, 2, 2, },
76cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
77cfa76ddfSKrzysztof Kozlowski };
78cfa76ddfSKrzysztof Kozlowski 
79cfa76ddfSKrzysztof Kozlowski /*
80cfa76ddfSKrzysztof Kozlowski  * Bank type for non-alive type. Bit fields:
81cfa76ddfSKrzysztof Kozlowski  * CON: 4, DAT: 1, PUD: 4, DRV: 4
82cfa76ddfSKrzysztof Kozlowski  */
83cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_type artpec_bank_type_off = {
84cfa76ddfSKrzysztof Kozlowski 	.fld_width = { 4, 1, 4, 4, },
85cfa76ddfSKrzysztof Kozlowski 	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
86cfa76ddfSKrzysztof Kozlowski };
87cfa76ddfSKrzysztof Kozlowski 
88cfa76ddfSKrzysztof Kozlowski /* Pad retention control code for accessing PMU regmap */
89938a10bbSPaweł Chmiel static atomic_t exynos_shared_retention_refcnt;
90cfa76ddfSKrzysztof Kozlowski 
91cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - ALIVE */
92cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks0[] __initconst = {
93cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(8, 0x0, "gpa0", 0x00),
94cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(8, 0x20, "gpa1", 0x04),
95cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(8, 0x40, "gpa2", 0x08),
96938a10bbSPaweł Chmiel 	EXYNOS850_PIN_BANK_EINTW(8, 0x60, "gpa3", 0x0c),
97cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x80, "gpa4", 0x10),
98cfa76ddfSKrzysztof Kozlowski 	EXYNOS_PIN_BANK_EINTN(4, 0xa0, "gpq0"),
99cfa76ddfSKrzysztof Kozlowski 	EXYNOS_PIN_BANK_EINTN(2, 0xc0, "gpq1"),
100cfa76ddfSKrzysztof Kozlowski 	EXYNOS_PIN_BANK_EINTN(2, 0xe0, "gpq2"),
101cfa76ddfSKrzysztof Kozlowski };
102938a10bbSPaweł Chmiel 
103cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - CMGP */
104cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks1[] __initconst = {
105cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x0, "gpm0", 0x00),
106cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x20, "gpm1", 0x04),
107cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x40, "gpm2", 0x08),
108938a10bbSPaweł Chmiel 	EXYNOS850_PIN_BANK_EINTW(2, 0x60, "gpm3", 0x0c),
109cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x80, "gpm4", 0x10),
110cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0xa0, "gpm5", 0x14),
111cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0xc0, "gpm6", 0x18),
112cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0xe0, "gpm7", 0x1c),
113cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x100, "gpm8", 0x20),
114938a10bbSPaweł Chmiel 	EXYNOS850_PIN_BANK_EINTW(2, 0x120, "gpm9", 0x24),
115cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x140, "gpm10", 0x28),
116cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x160, "gpm11", 0x2c),
117cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x180, "gpm12", 0x30),
118cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(2, 0x1a0, "gpm13", 0x34),
119cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x1c0, "gpm14", 0x38),
120cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x1e0, "gpm15", 0x3c),
121cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm16", 0x40),
122cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm17", 0x44),
123cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm20", 0x48),
124cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm21", 0x4c),
125938a10bbSPaweł Chmiel 	EXYNOS850_PIN_BANK_EINTW(1, 0x280, "gpm22", 0x50),
126cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x2a0, "gpm23", 0x54),
127cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTW(1, 0x2c0, "gpm24", 0x58),
128cfa76ddfSKrzysztof Kozlowski };
129cfa76ddfSKrzysztof Kozlowski 
130cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - HSI1 */
131938a10bbSPaweł Chmiel static const struct samsung_pin_bank_data exynos2200_pin_banks2[] __initconst = {
132cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x0, "gpf0", 0x00),
133cfa76ddfSKrzysztof Kozlowski };
134cfa76ddfSKrzysztof Kozlowski 
135cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - UFS */
136cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks3[] __initconst = {
137938a10bbSPaweł Chmiel 	EXYNOS850_PIN_BANK_EINTG(7, 0x0, "gpf1", 0x00),
138cfa76ddfSKrzysztof Kozlowski };
139cfa76ddfSKrzysztof Kozlowski 
140cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - HSI1UFS */
141cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks4[] __initconst = {
142cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x0, "gpf2", 0x00),
143cfa76ddfSKrzysztof Kozlowski };
144cfa76ddfSKrzysztof Kozlowski 
145cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - PERIC0 */
146cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks5[] __initconst = {
147cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x0, "gpb0",  0x00),
148cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x20, "gpb1",  0x04),
149cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x40, "gpb2",  0x08),
150cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x60, "gpb3",  0x0c),
151cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x80, "gpp4",  0x10),
152cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0xa0, "gpc0",  0x14),
153cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0xc0, "gpc1",  0x18),
154cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0xe0, "gpc2",  0x1c),
155cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(7, 0x100, "gpg1",  0x20),
156cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x120, "gpg2",  0x24),
157cfa76ddfSKrzysztof Kozlowski };
158cfa76ddfSKrzysztof Kozlowski 
159938a10bbSPaweł Chmiel /* pin banks of exynos2200 pin-controller - PERIC1 */
160cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks6[] __initconst = {
161cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x0,  "gpp7",  0x00),
162cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x20, "gpp8",  0x04),
163cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x40, "gpp9",  0x08),
164cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x60, "gpp10", 0x0c),
165cfa76ddfSKrzysztof Kozlowski };
166cfa76ddfSKrzysztof Kozlowski 
167cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - PERIC2 */
168cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks7[] __initconst = {
169cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x0, "gpp0",  0x00),
170cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x20, "gpp1",  0x04),
171cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x40, "gpp2",  0x08),
172cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x60, "gpp3",  0x0c),
173cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0x80, "gpp5",  0x10),
174cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0xa0, "gpp6",  0x14),
175cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(4, 0xc0, "gpp11", 0x18),
176cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0xe0, "gpc3",  0x1c),
177cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x100, "gpc4",  0x20),
178cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x120, "gpc5",  0x24),
179cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x140, "gpc6",  0x28),
180cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x160, "gpc7",  0x2c),
181cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x180, "gpc8",  0x30),
182cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(2, 0x1a0, "gpc9",  0x34),
183cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(5, 0x1c0, "gpg0",  0x38),
184cfa76ddfSKrzysztof Kozlowski };
185cfa76ddfSKrzysztof Kozlowski 
186cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos2200 pin-controller - VTS */
187cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos2200_pin_banks8[] __initconst = {
188cfa76ddfSKrzysztof Kozlowski 	EXYNOS850_PIN_BANK_EINTG(7, 0x0, "gpv0", 0x00),
189cfa76ddfSKrzysztof Kozlowski };
190cfa76ddfSKrzysztof Kozlowski 
191cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_ctrl exynos2200_pin_ctrl[] = {
192cfa76ddfSKrzysztof Kozlowski 	{
193cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 0 ALIVE data */
194cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks0,
195cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks0),
196cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
197cfa76ddfSKrzysztof Kozlowski 		.eint_wkup_init = exynos_eint_wkup_init,
198cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
199cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
200cfa76ddfSKrzysztof Kozlowski 	}, {
201cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 1 CMGP data */
202cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks1,
203cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks1),
204cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
205cfa76ddfSKrzysztof Kozlowski 		.eint_wkup_init = exynos_eint_wkup_init,
206cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
207cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
208cfa76ddfSKrzysztof Kozlowski 	}, {
209cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 2 HSI1 data */
210cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks2,
211cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks2),
212cfa76ddfSKrzysztof Kozlowski 	}, {
213cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 3 UFS data */
214cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks3,
21593b0beaeSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks3),
216cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
217cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
218cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
219cfa76ddfSKrzysztof Kozlowski 	}, {
220cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 4 HSI1UFS data */
221cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks4,
222cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks4),
223cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
224cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
225cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
226cfa76ddfSKrzysztof Kozlowski 	}, {
227cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 5 PERIC0 data */
228cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks5,
229cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks5),
230cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
231cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
232cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
233cfa76ddfSKrzysztof Kozlowski 	}, {
234cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 6 PERIC1 data */
235cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks6,
236cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks6),
237cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
238cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
239cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
240cfa76ddfSKrzysztof Kozlowski 	}, {
241cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 7 PERIC2 data */
242cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks7,
243cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks7),
244cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
245cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
246cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
247cfa76ddfSKrzysztof Kozlowski 	}, {
248cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 8 VTS data */
249cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos2200_pin_banks8,
250cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos2200_pin_banks8),
251cfa76ddfSKrzysztof Kozlowski 	},
252cfa76ddfSKrzysztof Kozlowski };
253cfa76ddfSKrzysztof Kozlowski 
254cfa76ddfSKrzysztof Kozlowski const struct samsung_pinctrl_of_match_data exynos2200_of_data __initconst = {
255cfa76ddfSKrzysztof Kozlowski 	.ctrl		= exynos2200_pin_ctrl,
256cfa76ddfSKrzysztof Kozlowski 	.num_ctrl	= ARRAY_SIZE(exynos2200_pin_ctrl),
257cfa76ddfSKrzysztof Kozlowski };
258cfa76ddfSKrzysztof Kozlowski 
259cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - ALIVE */
260cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks0[] __initconst = {
261cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
262cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
263cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
264cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
265cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
266cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x020, "gpf1", 0x1004, 1),
267cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW_EXT(4, 0x040, "gpf2", 0x1008, 1),
268cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW_EXT(4, 0x060, "gpf3", 0x100c, 1),
269cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x080, "gpf4", 0x1010, 1),
270cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x0a0, "gpf5", 0x1014, 1),
271cfa76ddfSKrzysztof Kozlowski };
272cfa76ddfSKrzysztof Kozlowski 
273cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - AUD */
274cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks1[] __initconst = {
275cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
276cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(7, 0x000, "gpz0", 0x00),
277cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(4, 0x020, "gpz1", 0x04),
278cfa76ddfSKrzysztof Kozlowski };
279cfa76ddfSKrzysztof Kozlowski 
280cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - CPIF */
281cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks2[] __initconst = {
282cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
283cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x000, "gpv6", 0x00),
284cfa76ddfSKrzysztof Kozlowski };
285cfa76ddfSKrzysztof Kozlowski 
286cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - eSE */
287cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks3[] __initconst = {
288cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
289cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj2", 0x00),
290cfa76ddfSKrzysztof Kozlowski };
291cfa76ddfSKrzysztof Kozlowski 
292cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - FINGER */
293cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks4[] __initconst = {
294cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
295cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(4, 0x000, "gpd5", 0x00),
296cfa76ddfSKrzysztof Kozlowski };
297cfa76ddfSKrzysztof Kozlowski 
298cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - FSYS */
299cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks5[] __initconst = {
30093b0beaeSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
30193b0beaeSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(6, 0x000, "gph1", 0x00),
30293b0beaeSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(7, 0x020, "gpr4", 0x04),
30393b0beaeSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(5, 0x040, "gpr0", 0x08),
30493b0beaeSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x060, "gpr1", 0x0c),
305cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x080, "gpr2", 0x10),
306cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x0a0, "gpr3", 0x14),
307938a10bbSPaweł Chmiel };
308cfa76ddfSKrzysztof Kozlowski 
309cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - IMEM */
310cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks6[] __initconst = {
311cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
312cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x000, "gpf0", 0x00),
313cfa76ddfSKrzysztof Kozlowski };
314cfa76ddfSKrzysztof Kozlowski 
315cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - NFC */
316938a10bbSPaweł Chmiel static const struct samsung_pin_bank_data exynos5433_pin_banks7[] __initconst = {
317cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
318cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj0", 0x00),
319cfa76ddfSKrzysztof Kozlowski };
320cfa76ddfSKrzysztof Kozlowski 
321cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - PERIC */
322cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks8[] __initconst = {
323cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
324cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(6, 0x000, "gpv7", 0x00),
325cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(5, 0x020, "gpb0", 0x04),
326cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x040, "gpc0", 0x08),
327cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x060, "gpc1", 0x0c),
328cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(6, 0x080, "gpc2", 0x10),
329cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x0a0, "gpc3", 0x14),
330cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x0c0, "gpg0", 0x18),
331cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(4, 0x0e0, "gpd0", 0x1c),
332cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(6, 0x100, "gpd1", 0x20),
333cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x120, "gpd2", 0x24),
334cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(5, 0x140, "gpd4", 0x28),
335cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x160, "gpd8", 0x2c),
336938a10bbSPaweł Chmiel 	EXYNOS5433_PIN_BANK_EINTG(7, 0x180, "gpd6", 0x30),
337cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(3, 0x1a0, "gpd7", 0x34),
338cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(5, 0x1c0, "gpg1", 0x38),
339cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(2, 0x1e0, "gpg2", 0x3c),
340cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(8, 0x200, "gpg3", 0x40),
341cfa76ddfSKrzysztof Kozlowski };
342938a10bbSPaweł Chmiel 
343cfa76ddfSKrzysztof Kozlowski /* pin banks of exynos5433 pin-controller - TOUCH */
344cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_bank_data exynos5433_pin_banks9[] __initconst = {
345cfa76ddfSKrzysztof Kozlowski 	/* Must start with EINTG banks, ordered by EINT group number. */
346cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj1", 0x00),
347cfa76ddfSKrzysztof Kozlowski };
348938a10bbSPaweł Chmiel 
349cfa76ddfSKrzysztof Kozlowski /* PMU pin retention groups registers for Exynos5433 (without audio & fsys) */
350cfa76ddfSKrzysztof Kozlowski static const u32 exynos5433_retention_regs[] = {
351cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_TOP_OPTION,
352cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_UART_OPTION,
353cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_EBIA_OPTION,
354938a10bbSPaweł Chmiel 	EXYNOS5433_PAD_RETENTION_EBIB_OPTION,
355cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_SPI_OPTION,
356cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_MIF_OPTION,
357cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_USBXTI_OPTION,
358cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_BOOTLDO_OPTION,
359cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_UFS_OPTION,
360938a10bbSPaweł Chmiel 	EXYNOS5433_PAD_RETENTION_FSYSGENIO_OPTION,
361cfa76ddfSKrzysztof Kozlowski };
362cfa76ddfSKrzysztof Kozlowski 
363cfa76ddfSKrzysztof Kozlowski static const struct samsung_retention_data exynos5433_retention_data __initconst = {
364cfa76ddfSKrzysztof Kozlowski 	.regs	 = exynos5433_retention_regs,
365cfa76ddfSKrzysztof Kozlowski 	.nr_regs = ARRAY_SIZE(exynos5433_retention_regs),
366938a10bbSPaweł Chmiel 	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
367cfa76ddfSKrzysztof Kozlowski 	.refcnt	 = &exynos_shared_retention_refcnt,
368cfa76ddfSKrzysztof Kozlowski 	.init	 = exynos_retention_init,
369cfa76ddfSKrzysztof Kozlowski };
370cfa76ddfSKrzysztof Kozlowski 
371cfa76ddfSKrzysztof Kozlowski /* PMU retention control for audio pins can be tied to audio pin bank */
372cfa76ddfSKrzysztof Kozlowski static const u32 exynos5433_audio_retention_regs[] = {
373cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_AUD_OPTION,
374cfa76ddfSKrzysztof Kozlowski };
375938a10bbSPaweł Chmiel 
376cfa76ddfSKrzysztof Kozlowski static const struct samsung_retention_data exynos5433_audio_retention_data __initconst = {
377cfa76ddfSKrzysztof Kozlowski 	.regs	 = exynos5433_audio_retention_regs,
378cfa76ddfSKrzysztof Kozlowski 	.nr_regs = ARRAY_SIZE(exynos5433_audio_retention_regs),
379cfa76ddfSKrzysztof Kozlowski 	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
380cfa76ddfSKrzysztof Kozlowski 	.init	 = exynos_retention_init,
381cfa76ddfSKrzysztof Kozlowski };
382cfa76ddfSKrzysztof Kozlowski 
383cfa76ddfSKrzysztof Kozlowski /* PMU retention control for mmc pins can be tied to fsys pin bank */
384cfa76ddfSKrzysztof Kozlowski static const u32 exynos5433_fsys_retention_regs[] = {
385cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_MMC0_OPTION,
386cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_MMC1_OPTION,
387cfa76ddfSKrzysztof Kozlowski 	EXYNOS5433_PAD_RETENTION_MMC2_OPTION,
388cfa76ddfSKrzysztof Kozlowski };
389938a10bbSPaweł Chmiel 
390cfa76ddfSKrzysztof Kozlowski static const struct samsung_retention_data exynos5433_fsys_retention_data __initconst = {
391cfa76ddfSKrzysztof Kozlowski 	.regs	 = exynos5433_fsys_retention_regs,
392cfa76ddfSKrzysztof Kozlowski 	.nr_regs = ARRAY_SIZE(exynos5433_fsys_retention_regs),
393cfa76ddfSKrzysztof Kozlowski 	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
39493b0beaeSKrzysztof Kozlowski 	.init	 = exynos_retention_init,
395cfa76ddfSKrzysztof Kozlowski };
396cfa76ddfSKrzysztof Kozlowski 
397cfa76ddfSKrzysztof Kozlowski /*
398cfa76ddfSKrzysztof Kozlowski  * Samsung pinctrl driver data for Exynos5433 SoC. Exynos5433 SoC includes
399cfa76ddfSKrzysztof Kozlowski  * ten gpio/pin-mux/pinconfig controllers.
400cfa76ddfSKrzysztof Kozlowski  */
401cfa76ddfSKrzysztof Kozlowski static const struct samsung_pin_ctrl exynos5433_pin_ctrl[] __initconst = {
402cfa76ddfSKrzysztof Kozlowski 	{
403cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 0 data */
404cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks0,
405cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks0),
406cfa76ddfSKrzysztof Kozlowski 		.eint_wkup_init = exynos_eint_wkup_init,
407cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
408cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
409cfa76ddfSKrzysztof Kozlowski 		.nr_ext_resources = 1,
410cfa76ddfSKrzysztof Kozlowski 		.retention_data	= &exynos5433_retention_data,
411cfa76ddfSKrzysztof Kozlowski 	}, {
412cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 1 data */
413cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks1,
414cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks1),
415cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
416cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
417cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
418cfa76ddfSKrzysztof Kozlowski 		.retention_data	= &exynos5433_audio_retention_data,
419cfa76ddfSKrzysztof Kozlowski 	}, {
420cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 2 data */
421cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks2,
422cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks2),
423cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
424cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
425cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
426cfa76ddfSKrzysztof Kozlowski 		.retention_data	= &exynos5433_retention_data,
427cfa76ddfSKrzysztof Kozlowski 	}, {
428cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 3 data */
429cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks3,
430cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks3),
431cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
432cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
433cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
434cfa76ddfSKrzysztof Kozlowski 		.retention_data	= &exynos5433_retention_data,
435cfa76ddfSKrzysztof Kozlowski 	}, {
436cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 4 data */
437cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks4,
438cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks4),
439cfa76ddfSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
440cfa76ddfSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
441cfa76ddfSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
442cfa76ddfSKrzysztof Kozlowski 		.retention_data	= &exynos5433_retention_data,
443cfa76ddfSKrzysztof Kozlowski 	}, {
444cfa76ddfSKrzysztof Kozlowski 		/* pin-controller instance 5 data */
445cfa76ddfSKrzysztof Kozlowski 		.pin_banks	= exynos5433_pin_banks5,
446cfa76ddfSKrzysztof Kozlowski 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks5),
44793b0beaeSKrzysztof Kozlowski 		.eint_gpio_init = exynos_eint_gpio_init,
44893b0beaeSKrzysztof Kozlowski 		.suspend	= exynos_pinctrl_suspend,
44993b0beaeSKrzysztof Kozlowski 		.resume		= exynos_pinctrl_resume,
45093b0beaeSKrzysztof Kozlowski 		.retention_data	= &exynos5433_fsys_retention_data,
45193b0beaeSKrzysztof Kozlowski 	}, {
452cdd3d945SSam Protsenko 		/* pin-controller instance 6 data */
453b0ef7b1aSDavid Virag 		.pin_banks	= exynos5433_pin_banks6,
454b0ef7b1aSDavid Virag 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks6),
455b0ef7b1aSDavid Virag 		.eint_gpio_init = exynos_eint_gpio_init,
456b0ef7b1aSDavid Virag 		.suspend	= exynos_pinctrl_suspend,
457b0ef7b1aSDavid Virag 		.resume		= exynos_pinctrl_resume,
458b0ef7b1aSDavid Virag 		.retention_data	= &exynos5433_retention_data,
459b0ef7b1aSDavid Virag 	}, {
460b0ef7b1aSDavid Virag 		/* pin-controller instance 7 data */
461b0ef7b1aSDavid Virag 		.pin_banks	= exynos5433_pin_banks7,
462b0ef7b1aSDavid Virag 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks7),
463b0ef7b1aSDavid Virag 		.eint_gpio_init = exynos_eint_gpio_init,
464b0ef7b1aSDavid Virag 		.suspend	= exynos_pinctrl_suspend,
465b0ef7b1aSDavid Virag 		.resume		= exynos_pinctrl_resume,
466b0ef7b1aSDavid Virag 		.retention_data	= &exynos5433_retention_data,
467b0ef7b1aSDavid Virag 	}, {
468b0ef7b1aSDavid Virag 		/* pin-controller instance 8 data */
469b0ef7b1aSDavid Virag 		.pin_banks	= exynos5433_pin_banks8,
470b0ef7b1aSDavid Virag 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks8),
471b0ef7b1aSDavid Virag 		.eint_gpio_init = exynos_eint_gpio_init,
472b0ef7b1aSDavid Virag 		.suspend	= exynos_pinctrl_suspend,
473b0ef7b1aSDavid Virag 		.resume		= exynos_pinctrl_resume,
474b0ef7b1aSDavid Virag 		.retention_data	= &exynos5433_retention_data,
475b0ef7b1aSDavid Virag 	}, {
476b0ef7b1aSDavid Virag 		/* pin-controller instance 9 data */
477b0ef7b1aSDavid Virag 		.pin_banks	= exynos5433_pin_banks9,
478b0ef7b1aSDavid Virag 		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks9),
479b0ef7b1aSDavid Virag 		.eint_gpio_init = exynos_eint_gpio_init,
480b0ef7b1aSDavid Virag 		.suspend	= exynos_pinctrl_suspend,
481b0ef7b1aSDavid Virag 		.resume		= exynos_pinctrl_resume,
482b0ef7b1aSDavid Virag 		.retention_data	= &exynos5433_retention_data,
483b0ef7b1aSDavid Virag 	},
484b0ef7b1aSDavid Virag };
485b0ef7b1aSDavid Virag 
486b0ef7b1aSDavid Virag const struct samsung_pinctrl_of_match_data exynos5433_of_data __initconst = {
487b0ef7b1aSDavid Virag 	.ctrl		= exynos5433_pin_ctrl,
488b0ef7b1aSDavid Virag 	.num_ctrl	= ARRAY_SIZE(exynos5433_pin_ctrl),
489b0ef7b1aSDavid Virag };
490b0ef7b1aSDavid Virag 
491b0ef7b1aSDavid Virag /* pin banks of exynos7 pin-controller - ALIVE */
492b0ef7b1aSDavid Virag static const struct samsung_pin_bank_data exynos7_pin_banks0[] __initconst = {
493b0ef7b1aSDavid Virag 	/* Must start with EINTG banks, ordered by EINT group number. */
494b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
495b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
496b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
497b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
498b0ef7b1aSDavid Virag };
49916dd3bb5SWei Yongjun 
500b0ef7b1aSDavid Virag /* pin banks of exynos7 pin-controller - BUS0 */
501b0ef7b1aSDavid Virag static const struct samsung_pin_bank_data exynos7_pin_banks1[] __initconst = {
502b0ef7b1aSDavid Virag 	/* Must start with EINTG banks, ordered by EINT group number. */
503b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
504b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpc0", 0x04),
505b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(2, 0x040, "gpc1", 0x08),
506b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(6, 0x060, "gpc2", 0x0c),
507b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(8, 0x080, "gpc3", 0x10),
508b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(4, 0x0a0, "gpd0", 0x14),
509b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(6, 0x0c0, "gpd1", 0x18),
510b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(8, 0x0e0, "gpd2", 0x1c),
511b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(5, 0x100, "gpd4", 0x20),
512b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(4, 0x120, "gpd5", 0x24),
513b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(6, 0x140, "gpd6", 0x28),
514b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(3, 0x160, "gpd7", 0x2c),
515b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(2, 0x180, "gpd8", 0x30),
516b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(2, 0x1a0, "gpg0", 0x34),
517b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(4, 0x1c0, "gpg3", 0x38),
518b0ef7b1aSDavid Virag };
519b0ef7b1aSDavid Virag 
520b0ef7b1aSDavid Virag /* pin banks of exynos7 pin-controller - NFC */
521b0ef7b1aSDavid Virag static const struct samsung_pin_bank_data exynos7_pin_banks2[] __initconst = {
522b0ef7b1aSDavid Virag 	/* Must start with EINTG banks, ordered by EINT group number. */
523b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gpj0", 0x00),
524b0ef7b1aSDavid Virag };
525b0ef7b1aSDavid Virag 
526b0ef7b1aSDavid Virag /* pin banks of exynos7 pin-controller - TOUCH */
527b0ef7b1aSDavid Virag static const struct samsung_pin_bank_data exynos7_pin_banks3[] __initconst = {
528b0ef7b1aSDavid Virag 	/* Must start with EINTG banks, ordered by EINT group number. */
529b0ef7b1aSDavid Virag 	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gpj1", 0x00),
530b0ef7b1aSDavid Virag };
531b0ef7b1aSDavid Virag 
532b0ef7b1aSDavid Virag /* pin banks of exynos7 pin-controller - FF */
533b0ef7b1aSDavid Virag static const struct samsung_pin_bank_data exynos7_pin_banks4[] __initconst = {
534cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
535cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(4, 0x000, "gpg4", 0x00),
536cdd3d945SSam Protsenko };
537cdd3d945SSam Protsenko 
538cdd3d945SSam Protsenko /* pin banks of exynos7 pin-controller - ESE */
539cdd3d945SSam Protsenko static const struct samsung_pin_bank_data exynos7_pin_banks5[] __initconst = {
540cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
541cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(5, 0x000, "gpv7", 0x00),
542cdd3d945SSam Protsenko };
543cdd3d945SSam Protsenko 
544cdd3d945SSam Protsenko /* pin banks of exynos7 pin-controller - FSYS0 */
545cdd3d945SSam Protsenko static const struct samsung_pin_bank_data exynos7_pin_banks6[] __initconst = {
546cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
547cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(7, 0x000, "gpr4", 0x00),
548cdd3d945SSam Protsenko };
549cdd3d945SSam Protsenko 
550cdd3d945SSam Protsenko /* pin banks of exynos7 pin-controller - FSYS1 */
551cdd3d945SSam Protsenko static const struct samsung_pin_bank_data exynos7_pin_banks7[] __initconst = {
552cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
553cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(4, 0x000, "gpr0", 0x00),
554cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpr1", 0x04),
555cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(5, 0x040, "gpr2", 0x08),
556cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x060, "gpr3", 0x0c),
557cdd3d945SSam Protsenko };
558cdd3d945SSam Protsenko 
559cdd3d945SSam Protsenko /* pin banks of exynos7 pin-controller - BUS1 */
560cdd3d945SSam Protsenko static const struct samsung_pin_bank_data exynos7_pin_banks8[] __initconst = {
561cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
562cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpf0", 0x00),
563cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x040, "gpf1", 0x04),
564cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(4, 0x060, "gpf2", 0x08),
565cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(5, 0x080, "gpf3", 0x0c),
566cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x0a0, "gpf4", 0x10),
567cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(8, 0x0c0, "gpf5", 0x14),
568cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(5, 0x0e0, "gpg1", 0x18),
569cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(5, 0x100, "gpg2", 0x1c),
570cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(6, 0x120, "gph1", 0x20),
571cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(3, 0x140, "gpv6", 0x24),
572cdd3d945SSam Protsenko };
573cdd3d945SSam Protsenko 
574cdd3d945SSam Protsenko static const struct samsung_pin_bank_data exynos7_pin_banks9[] __initconst = {
575cdd3d945SSam Protsenko 	/* Must start with EINTG banks, ordered by EINT group number. */
576cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(7, 0x000, "gpz0", 0x00),
577cdd3d945SSam Protsenko 	EXYNOS_PIN_BANK_EINTG(4, 0x020, "gpz1", 0x04),
578cdd3d945SSam Protsenko };
579cdd3d945SSam Protsenko 
580cdd3d945SSam Protsenko static const struct samsung_pin_ctrl exynos7_pin_ctrl[] __initconst = {
581cdd3d945SSam Protsenko 	{
582cdd3d945SSam Protsenko 		/* pin-controller instance 0 Alive data */
583cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks0,
584cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks0),
585cdd3d945SSam Protsenko 		.eint_wkup_init = exynos_eint_wkup_init,
586cdd3d945SSam Protsenko 	}, {
587cdd3d945SSam Protsenko 		/* pin-controller instance 1 BUS0 data */
588cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks1,
589cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks1),
590cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
591cdd3d945SSam Protsenko 	}, {
592cdd3d945SSam Protsenko 		/* pin-controller instance 2 NFC data */
593cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks2,
594cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks2),
595cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
596cdd3d945SSam Protsenko 	}, {
597cdd3d945SSam Protsenko 		/* pin-controller instance 3 TOUCH data */
598cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks3,
599cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks3),
600cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
601cdd3d945SSam Protsenko 	}, {
602cdd3d945SSam Protsenko 		/* pin-controller instance 4 FF data */
603cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks4,
604cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks4),
605cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
606cdd3d945SSam Protsenko 	}, {
607cdd3d945SSam Protsenko 		/* pin-controller instance 5 ESE data */
608cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks5,
609cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks5),
610cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
611cdd3d945SSam Protsenko 	}, {
612cdd3d945SSam Protsenko 		/* pin-controller instance 6 FSYS0 data */
613cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks6,
614cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks6),
615cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
616cdd3d945SSam Protsenko 	}, {
617cdd3d945SSam Protsenko 		/* pin-controller instance 7 FSYS1 data */
618cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks7,
619cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks7),
620cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
621cdd3d945SSam Protsenko 	}, {
622cdd3d945SSam Protsenko 		/* pin-controller instance 8 BUS1 data */
623cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks8,
624cdd3d945SSam Protsenko 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks8),
625cdd3d945SSam Protsenko 		.eint_gpio_init = exynos_eint_gpio_init,
626cdd3d945SSam Protsenko 	}, {
627cdd3d945SSam Protsenko 		/* pin-controller instance 9 AUD data */
628cdd3d945SSam Protsenko 		.pin_banks	= exynos7_pin_banks9,
62902725b0cSChanho Park 		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks9),
63021930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
63121930744SIgor Belwon 	},
63221930744SIgor Belwon };
63321930744SIgor Belwon 
63421930744SIgor Belwon const struct samsung_pinctrl_of_match_data exynos7_of_data __initconst = {
63521930744SIgor Belwon 	.ctrl		= exynos7_pin_ctrl,
63621930744SIgor Belwon 	.num_ctrl	= ARRAY_SIZE(exynos7_pin_ctrl),
63721930744SIgor Belwon };
63821930744SIgor Belwon 
63921930744SIgor Belwon /* pin banks of exynos7870 pin-controller 0 (ALIVE) */
64021930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks0[] __initconst = {
64121930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTN(6, 0x000, "etc0"),
64221930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTN(3, 0x020, "etc1"),
64321930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTW(8, 0x040, "gpa0", 0x00),
64421930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTW(8, 0x060, "gpa1", 0x04),
64521930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTW(8, 0x080, "gpa2", 0x08),
64621930744SIgor Belwon 	EXYNOS7870_PIN_BANK_EINTN(2, 0x0c0, "gpq0"),
64721930744SIgor Belwon };
64821930744SIgor Belwon 
64921930744SIgor Belwon /* pin banks of exynos7870 pin-controller 1 (DISPAUD) */
65021930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks1[] __initconst = {
65121930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x000, "gpz0", 0x00),
65221930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(6, 0x020, "gpz1", 0x04),
65321930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x040, "gpz2", 0x08),
65421930744SIgor Belwon };
65521930744SIgor Belwon 
65621930744SIgor Belwon /* pin banks of exynos7870 pin-controller 2 (ESE) */
65721930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks2[] __initconst = {
65821930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(5, 0x000, "gpc7", 0x00),
65921930744SIgor Belwon };
66021930744SIgor Belwon 
66121930744SIgor Belwon /* pin banks of exynos7870 pin-controller 3 (FSYS) */
66221930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks3[] __initconst = {
66321930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(3, 0x000, "gpr0", 0x00),
66421930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(8, 0x020, "gpr1", 0x04),
66521930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x040, "gpr2", 0x08),
66621930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x060, "gpr3", 0x0c),
66721930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(6, 0x080, "gpr4", 0x10),
66821930744SIgor Belwon };
66921930744SIgor Belwon 
67021930744SIgor Belwon /* pin banks of exynos7870 pin-controller 4 (MIF) */
67121930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks4[] __initconst = {
67221930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x000, "gpm0", 0x00),
67321930744SIgor Belwon };
67421930744SIgor Belwon 
67521930744SIgor Belwon /* pin banks of exynos7870 pin-controller 5 (NFC) */
67621930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks5[] __initconst = {
67721930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x000, "gpc2", 0x00),
67821930744SIgor Belwon };
67921930744SIgor Belwon 
68021930744SIgor Belwon /* pin banks of exynos7870 pin-controller 6 (TOP) */
68121930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks6[] __initconst = {
68221930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x000, "gpb0", 0x00),
68321930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(3, 0x020, "gpc0", 0x04),
68421930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x040, "gpc1", 0x08),
68521930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x060, "gpc4", 0x0c),
68621930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x080, "gpc5", 0x10),
68721930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x0a0, "gpc6", 0x14),
68821930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x0c0, "gpc8", 0x18),
68921930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x0e0, "gpc9", 0x1c),
69021930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(7, 0x100, "gpd1", 0x20),
69121930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(6, 0x120, "gpd2", 0x24),
69221930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(8, 0x140, "gpd3", 0x28),
69321930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(7, 0x160, "gpd4", 0x2c),
69421930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(3, 0x1a0, "gpe0", 0x34),
69521930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x1c0, "gpf0", 0x38),
69621930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x1e0, "gpf1", 0x3c),
69721930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(2, 0x200, "gpf2", 0x40),
69821930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(4, 0x220, "gpf3", 0x44),
69921930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(5, 0x240, "gpf4", 0x48),
70021930744SIgor Belwon };
70121930744SIgor Belwon 
70221930744SIgor Belwon /* pin banks of exynos7870 pin-controller 7 (TOUCH) */
70321930744SIgor Belwon static const struct samsung_pin_bank_data exynos7870_pin_banks7[] __initconst = {
70421930744SIgor Belwon 	EXYNOS8895_PIN_BANK_EINTG(3, 0x000, "gpc3", 0x00),
70521930744SIgor Belwon };
70621930744SIgor Belwon 
70721930744SIgor Belwon static const struct samsung_pin_ctrl exynos7870_pin_ctrl[] __initconst = {
70821930744SIgor Belwon 	{
70921930744SIgor Belwon 		/* pin-controller instance 0 Alive data */
71021930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks0,
71121930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks0),
71221930744SIgor Belwon 		.eint_wkup_init = exynos_eint_wkup_init,
71321930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
71421930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
71521930744SIgor Belwon 	}, {
71621930744SIgor Belwon 		/* pin-controller instance 1 DISPAUD data */
71721930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks1,
71821930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks1),
71921930744SIgor Belwon 	}, {
72021930744SIgor Belwon 		/* pin-controller instance 2 ESE data */
72121930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks2,
72221930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks2),
72321930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
72421930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
72521930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
72621930744SIgor Belwon 	}, {
72721930744SIgor Belwon 		/* pin-controller instance 3 FSYS data */
72821930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks3,
72921930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks3),
73021930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
73121930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
73221930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
73321930744SIgor Belwon 	}, {
73421930744SIgor Belwon 		/* pin-controller instance 4 MIF data */
73521930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks4,
73621930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks4),
73721930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
73821930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
73921930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
74021930744SIgor Belwon 	}, {
74121930744SIgor Belwon 		/* pin-controller instance 5 NFC data */
74221930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks5,
74321930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks5),
74421930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
74521930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
74621930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
74721930744SIgor Belwon 	}, {
74821930744SIgor Belwon 		/* pin-controller instance 6 TOP data */
74921930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks6,
75021930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks6),
75121930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
75221930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
75321930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
75421930744SIgor Belwon 	}, {
75521930744SIgor Belwon 		/* pin-controller instance 7 TOUCH data */
75621930744SIgor Belwon 		.pin_banks	= exynos7870_pin_banks7,
75721930744SIgor Belwon 		.nr_banks	= ARRAY_SIZE(exynos7870_pin_banks7),
75821930744SIgor Belwon 		.eint_gpio_init = exynos_eint_gpio_init,
75921930744SIgor Belwon 		.suspend	= exynos_pinctrl_suspend,
76021930744SIgor Belwon 		.resume		= exynos_pinctrl_resume,
76121930744SIgor Belwon 	},
76221930744SIgor Belwon };
76321930744SIgor Belwon 
76421930744SIgor Belwon const struct samsung_pinctrl_of_match_data exynos7870_of_data __initconst = {
76521930744SIgor Belwon 	.ctrl		= exynos7870_pin_ctrl,
76621930744SIgor Belwon 	.num_ctrl	= ARRAY_SIZE(exynos7870_pin_ctrl),
76721930744SIgor Belwon };
76821930744SIgor Belwon 
76921930744SIgor Belwon /* pin banks of exynos7885 pin-controller 0 (ALIVE) */
770*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos7885_pin_banks0[] __initconst = {
771*6d2dbd4cSMarkuss Broks 	EXYNOS_PIN_BANK_EINTN(3, 0x000, "etc0"),
772*6d2dbd4cSMarkuss Broks 	EXYNOS_PIN_BANK_EINTN(3, 0x020, "etc1"),
773*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa0", 0x00),
774*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa1", 0x04),
775*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x080, "gpa2", 0x08),
776*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(5, 0x0a0, "gpq0", 0x0c),
777*6d2dbd4cSMarkuss Broks };
778*6d2dbd4cSMarkuss Broks 
779*6d2dbd4cSMarkuss Broks /* pin banks of exynos7885 pin-controller 1 (DISPAUD) */
780*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos7885_pin_banks1[] __initconst = {
781*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
782*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x020, "gpb1", 0x04),
783*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(5, 0x040, "gpb2", 0x08),
784*6d2dbd4cSMarkuss Broks };
785*6d2dbd4cSMarkuss Broks 
786*6d2dbd4cSMarkuss Broks /* pin banks of exynos7885 pin-controller 2 (FSYS) */
787*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos7885_pin_banks2[] __initconst = {
788*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
789*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf2", 0x04),
790*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x040, "gpf3", 0x08),
791*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x060, "gpf4", 0x0c),
792*6d2dbd4cSMarkuss Broks };
793*6d2dbd4cSMarkuss Broks 
794*6d2dbd4cSMarkuss Broks /* pin banks of exynos7885 pin-controller 3 (TOP) */
795*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos7885_pin_banks3[] __initconst = {
796*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpp0", 0x00),
797*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(3, 0x020, "gpg0", 0x04),
798*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp1", 0x08),
799*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp2", 0x0c),
800*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(3, 0x080, "gpp3", 0x10),
801*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x0a0, "gpp4", 0x14),
802*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x0c0, "gpp5", 0x18),
803*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(5, 0x0e0, "gpp6", 0x1c),
804*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(2, 0x100, "gpp7", 0x20),
805*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(2, 0x120, "gpp8", 0x24),
806*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x140, "gpg1", 0x28),
807*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x160, "gpg2", 0x2c),
808*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x180, "gpg3", 0x30),
809*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(2, 0x1a0, "gpg4", 0x34),
810*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x1c0, "gpc0", 0x38),
811*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x1e0, "gpc1", 0x3c),
812*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x200, "gpc2", 0x40),
813*6d2dbd4cSMarkuss Broks };
814*6d2dbd4cSMarkuss Broks 
815*6d2dbd4cSMarkuss Broks static const struct samsung_pin_ctrl exynos7885_pin_ctrl[] __initconst = {
816*6d2dbd4cSMarkuss Broks 	{
817*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 0 Alive data */
818*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos7885_pin_banks0,
819*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks0),
820*6d2dbd4cSMarkuss Broks 		.eint_gpio_init = exynos_eint_gpio_init,
821*6d2dbd4cSMarkuss Broks 		.eint_wkup_init = exynos_eint_wkup_init,
822*6d2dbd4cSMarkuss Broks 		.suspend	= exynos_pinctrl_suspend,
823*6d2dbd4cSMarkuss Broks 		.resume		= exynos_pinctrl_resume,
824*6d2dbd4cSMarkuss Broks 	}, {
825*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 1 DISPAUD data */
826*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos7885_pin_banks1,
827*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks1),
828*6d2dbd4cSMarkuss Broks 	}, {
829*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 2 FSYS data */
830*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos7885_pin_banks2,
831*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks2),
832*6d2dbd4cSMarkuss Broks 		.eint_gpio_init = exynos_eint_gpio_init,
833*6d2dbd4cSMarkuss Broks 		.suspend	= exynos_pinctrl_suspend,
834*6d2dbd4cSMarkuss Broks 		.resume		= exynos_pinctrl_resume,
835*6d2dbd4cSMarkuss Broks 	}, {
836*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 3 TOP data */
837*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos7885_pin_banks3,
838*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks3),
839*6d2dbd4cSMarkuss Broks 		.eint_gpio_init = exynos_eint_gpio_init,
840*6d2dbd4cSMarkuss Broks 		.suspend	= exynos_pinctrl_suspend,
841*6d2dbd4cSMarkuss Broks 		.resume		= exynos_pinctrl_resume,
842*6d2dbd4cSMarkuss Broks 	},
843*6d2dbd4cSMarkuss Broks };
844*6d2dbd4cSMarkuss Broks 
845*6d2dbd4cSMarkuss Broks const struct samsung_pinctrl_of_match_data exynos7885_of_data __initconst = {
846*6d2dbd4cSMarkuss Broks 	.ctrl		= exynos7885_pin_ctrl,
847*6d2dbd4cSMarkuss Broks 	.num_ctrl	= ARRAY_SIZE(exynos7885_pin_ctrl),
848*6d2dbd4cSMarkuss Broks };
849*6d2dbd4cSMarkuss Broks 
850*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 0 (ALIVE) */
851*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks0[] __initconst = {
852*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
853*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
854*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
855*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
856*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
857*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(4, 0x080, "gpa4", 0x10),
858*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTN(3, 0x0a0, "gpq0"),
859*6d2dbd4cSMarkuss Broks };
860*6d2dbd4cSMarkuss Broks 
861*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 1 (CMGP) */
862*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks1[] __initconst = {
863*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
864*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x000, "gpm0", 0x00),
865*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x020, "gpm1", 0x04),
866*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x040, "gpm2", 0x08),
867*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x060, "gpm3", 0x0c),
868*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x10),
869*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x0a0, "gpm5", 0x14),
870*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x0c0, "gpm6", 0x18),
871*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTW(1, 0x0e0, "gpm7", 0x1c),
872*6d2dbd4cSMarkuss Broks };
873*6d2dbd4cSMarkuss Broks 
874*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 2 (AUD) */
875*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks2[] __initconst = {
876*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
877*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
878*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(5, 0x020, "gpb1", 0x04),
879*6d2dbd4cSMarkuss Broks };
880*6d2dbd4cSMarkuss Broks 
881*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 3 (HSI) */
882*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks3[] __initconst = {
883*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
884*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf2", 0x00),
885*6d2dbd4cSMarkuss Broks };
886*6d2dbd4cSMarkuss Broks 
887*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 4 (CORE) */
888*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks4[] __initconst = {
889*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
890*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
891*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf1", 0x04),
892*6d2dbd4cSMarkuss Broks };
893*6d2dbd4cSMarkuss Broks 
894*6d2dbd4cSMarkuss Broks /* pin banks of exynos850 pin-controller 5 (PERI) */
895*6d2dbd4cSMarkuss Broks static const struct samsung_pin_bank_data exynos850_pin_banks5[] __initconst = {
896*6d2dbd4cSMarkuss Broks 	/* Must start with EINTG banks, ordered by EINT group number. */
897*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpg0", 0x00),
898*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpp0", 0x04),
899*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp1", 0x08),
900*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp2", 0x0c),
901*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg1", 0x10),
902*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(8, 0x0a0, "gpg2", 0x14),
903*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(1, 0x0c0, "gpg3", 0x18),
904*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(3, 0x0e0, "gpc0", 0x1c),
905*6d2dbd4cSMarkuss Broks 	EXYNOS850_PIN_BANK_EINTG(6, 0x100, "gpc1", 0x20),
906*6d2dbd4cSMarkuss Broks };
907*6d2dbd4cSMarkuss Broks 
908*6d2dbd4cSMarkuss Broks static const struct samsung_pin_ctrl exynos850_pin_ctrl[] __initconst = {
909*6d2dbd4cSMarkuss Broks 	{
910*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 0 ALIVE data */
911*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos850_pin_banks0,
912*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks0),
913*6d2dbd4cSMarkuss Broks 		.eint_wkup_init = exynos_eint_wkup_init,
914*6d2dbd4cSMarkuss Broks 	}, {
915*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 1 CMGP data */
916*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos850_pin_banks1,
917*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks1),
918*6d2dbd4cSMarkuss Broks 		.eint_wkup_init = exynos_eint_wkup_init,
919*6d2dbd4cSMarkuss Broks 	}, {
920*6d2dbd4cSMarkuss Broks 		/* pin-controller instance 2 AUD data */
921*6d2dbd4cSMarkuss Broks 		.pin_banks	= exynos850_pin_banks2,
922*6d2dbd4cSMarkuss Broks 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks2),
923*6d2dbd4cSMarkuss Broks 	}, {
92402725b0cSChanho Park 		/* pin-controller instance 3 HSI data */
92502725b0cSChanho Park 		.pin_banks	= exynos850_pin_banks3,
92602725b0cSChanho Park 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks3),
92702725b0cSChanho Park 		.eint_gpio_init = exynos_eint_gpio_init,
92802725b0cSChanho Park 	}, {
92902725b0cSChanho Park 		/* pin-controller instance 4 CORE data */
93002725b0cSChanho Park 		.pin_banks	= exynos850_pin_banks4,
93102725b0cSChanho Park 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks4),
93202725b0cSChanho Park 		.eint_gpio_init = exynos_eint_gpio_init,
93302725b0cSChanho Park 	}, {
93402725b0cSChanho Park 		/* pin-controller instance 5 PERI data */
93502725b0cSChanho Park 		.pin_banks	= exynos850_pin_banks5,
93602725b0cSChanho Park 		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks5),
93702725b0cSChanho Park 		.eint_gpio_init = exynos_eint_gpio_init,
93802725b0cSChanho Park 	},
93902725b0cSChanho Park };
94002725b0cSChanho Park 
94102725b0cSChanho Park const struct samsung_pinctrl_of_match_data exynos850_of_data __initconst = {
94202725b0cSChanho Park 	.ctrl		= exynos850_pin_ctrl,
94302725b0cSChanho Park 	.num_ctrl	= ARRAY_SIZE(exynos850_pin_ctrl),
94402725b0cSChanho Park };
94502725b0cSChanho Park 
94602725b0cSChanho Park /* pin banks of exynos990 pin-controller 0 (ALIVE) */
94702725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks0[] = {
94802725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
94902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
95002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
95102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
95202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
95302725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(2, 0x080, "gpa4", 0x10),
95402725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTN(7, 0x0A0, "gpq0"),
95502725b0cSChanho Park };
95602725b0cSChanho Park 
95702725b0cSChanho Park /* pin banks of exynos990 pin-controller 1 (CMGP) */
95802725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks1[] = {
95902725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
96002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTN(1, 0x000, "gpm0"),
96102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTN(1, 0x020, "gpm1"),
96202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTN(1, 0x040, "gpm2"),
96302725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTN(1, 0x060, "gpm3"),
96402725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x00),
96502725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x0A0, "gpm5", 0x04),
96602725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x0C0, "gpm6", 0x08),
96702725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x0E0, "gpm7", 0x0c),
96802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x100, "gpm8", 0x10),
96902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x120, "gpm9", 0x14),
97002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x140, "gpm10", 0x18),
97102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x160, "gpm11", 0x1c),
97202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x180, "gpm12", 0x20),
97302725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x1A0, "gpm13", 0x24),
97402725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x1C0, "gpm14", 0x28),
97502725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x1E0, "gpm15", 0x2c),
97602725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm16", 0x30),
97702725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm17", 0x34),
97802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm18", 0x38),
97902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm19", 0x3c),
98002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x280, "gpm20", 0x40),
98102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x2A0, "gpm21", 0x44),
98202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x2C0, "gpm22", 0x48),
98302725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x2E0, "gpm23", 0x4c),
98402725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x300, "gpm24", 0x50),
98502725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x320, "gpm25", 0x54),
98602725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x340, "gpm26", 0x58),
98702725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x360, "gpm27", 0x5c),
98802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x380, "gpm28", 0x60),
98902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x3A0, "gpm29", 0x64),
99002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x3C0, "gpm30", 0x68),
99102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x3E0, "gpm31", 0x6c),
99202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x400, "gpm32", 0x70),
99302725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTW(1, 0x420, "gpm33", 0x74),
99402725b0cSChanho Park 
99502725b0cSChanho Park };
99602725b0cSChanho Park 
99702725b0cSChanho Park /* pin banks of exynos990 pin-controller 2 (HSI1) */
99802725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks2[] = {
99902725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
100002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
100102725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf1", 0x04),
100202725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(3, 0x040, "gpf2", 0x08),
100302725b0cSChanho Park };
100402725b0cSChanho Park 
100502725b0cSChanho Park /* pin banks of exynos990 pin-controller 3 (HSI2) */
100602725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks3[] = {
100702725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
100802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpf3", 0x00),
100902725b0cSChanho Park };
101002725b0cSChanho Park 
101102725b0cSChanho Park /* pin banks of exynos990 pin-controller 4 (PERIC0) */
101202725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks4[] = {
101302725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
101402725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
101502725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
101602725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
101702725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpp3", 0x0C),
101802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpp4", 0x10),
101902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(2, 0x0A0, "gpg0", 0x14),
102002725b0cSChanho Park };
102102725b0cSChanho Park 
102202725b0cSChanho Park /* pin banks of exynos990 pin-controller 5 (PERIC1) */
102302725b0cSChanho Park static struct samsung_pin_bank_data exynos990_pin_banks5[] = {
102402725b0cSChanho Park 	/* Must start with EINTG banks, ordered by EINT group number. */
102502725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp5", 0x00),
102602725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp6", 0x04),
102702725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp7", 0x08),
102802725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpp8", 0x0C),
102902725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpp9", 0x10),
103002725b0cSChanho Park 	EXYNOS850_PIN_BANK_EINTG(6, 0x0A0, "gpc0", 0x14),
10310d1b662cSAlim Akhtar 	EXYNOS850_PIN_BANK_EINTG(4, 0x0C0, "gpg1", 0x18),
10326cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x0E0, "gpb0", 0x1C),
10336cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x100, "gpb1", 0x20),
10346cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x120, "gpb2", 0x24),
10356cf96df7SJaewon Kim };
10366cf96df7SJaewon Kim 
10376cf96df7SJaewon Kim /* pin banks of exynos990 pin-controller 6 (VTS) */
10386cf96df7SJaewon Kim static struct samsung_pin_bank_data exynos990_pin_banks6[] = {
10396cf96df7SJaewon Kim 	/* Must start with EINTG banks, ordered by EINT group number. */
10406cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(7, 0x000, "gpv0", 0x00),
10416cf96df7SJaewon Kim };
10426cf96df7SJaewon Kim 
10436cf96df7SJaewon Kim static const struct samsung_pin_ctrl exynos990_pin_ctrl[] __initconst = {
10446cf96df7SJaewon Kim 	{
10456cf96df7SJaewon Kim 		/* pin-controller instance 0 ALIVE data */
10466cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks0,
10476cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks0),
10486cf96df7SJaewon Kim 		.eint_wkup_init = exynos_eint_wkup_init,
10496cf96df7SJaewon Kim 	}, {
10506cf96df7SJaewon Kim 		/* pin-controller instance 1 CMGP data */
10516cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks1,
10526cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks1),
10536cf96df7SJaewon Kim 		.eint_wkup_init = exynos_eint_wkup_init,
10546cf96df7SJaewon Kim 	}, {
10556cf96df7SJaewon Kim 		/* pin-controller instance 2 HSI1 data */
10566cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks2,
10576cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks2),
10586cf96df7SJaewon Kim 		.eint_gpio_init = exynos_eint_gpio_init,
10596cf96df7SJaewon Kim 	}, {
10606cf96df7SJaewon Kim 		/* pin-controller instance 3 HSI2 data */
10616cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks3,
10626cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks3),
10636cf96df7SJaewon Kim 		.eint_gpio_init = exynos_eint_gpio_init,
10646cf96df7SJaewon Kim 	}, {
10656cf96df7SJaewon Kim 		/* pin-controller instance 4 PERIC0 data */
10666cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks4,
10676cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks4),
10686cf96df7SJaewon Kim 		.eint_gpio_init = exynos_eint_gpio_init,
10696cf96df7SJaewon Kim 	}, {
10706cf96df7SJaewon Kim 		/* pin-controller instance 5 PERIC1 data */
10716cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks5,
10726cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks5),
10736cf96df7SJaewon Kim 		.eint_gpio_init = exynos_eint_gpio_init,
10746cf96df7SJaewon Kim 	}, {
10756cf96df7SJaewon Kim 		/* pin-controller instance 6 VTS data */
10766cf96df7SJaewon Kim 		.pin_banks	= exynos990_pin_banks6,
10776cf96df7SJaewon Kim 		.nr_banks	= ARRAY_SIZE(exynos990_pin_banks6),
10786cf96df7SJaewon Kim 	},
10796cf96df7SJaewon Kim };
10806cf96df7SJaewon Kim 
10816cf96df7SJaewon Kim const struct samsung_pinctrl_of_match_data exynos990_of_data __initconst = {
10826cf96df7SJaewon Kim 	.ctrl		= exynos990_pin_ctrl,
10836cf96df7SJaewon Kim 	.num_ctrl	= ARRAY_SIZE(exynos990_pin_ctrl),
10846cf96df7SJaewon Kim };
10856cf96df7SJaewon Kim 
10866cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 0 (ALIVE) */
10876cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks0[] __initconst = {
10886cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTN(6, 0x000, "etc1"),
10896cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa0", 0x00),
10906cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa1", 0x04),
10916cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa2", 0x08),
10926cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(8, 0x080, "gpa3", 0x0c),
10936cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTN(6, 0x0A0, "gpq0"),
10946cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(2, 0x0C0, "gpa4", 0x10),
10956cf96df7SJaewon Kim };
10966cf96df7SJaewon Kim 
10976cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 1 (AUD) */
10986cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks1[] __initconst = {
10996cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
11006cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpb1", 0x04),
11016cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpb2", 0x08),
11026cf96df7SJaewon Kim };
11036cf96df7SJaewon Kim 
11046cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 2 (CHUB) */
11056cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks2[] __initconst = {
11066cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gph0", 0x00),
11076cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(5, 0x020, "gph1", 0x04),
11086cf96df7SJaewon Kim };
11096cf96df7SJaewon Kim 
11106cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 3 (CMGP) */
11116cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks3[] __initconst = {
11126cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x000, "gpm0", 0x00),
11136cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x020, "gpm1", 0x04),
11146cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x040, "gpm2", 0x08),
11156cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x060, "gpm3", 0x0C),
11166cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x10),
11176cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x0A0, "gpm5", 0x14),
11186cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x0C0, "gpm6", 0x18),
11196cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x0E0, "gpm7", 0x1C),
11206cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x100, "gpm10", 0x20),
11216cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x120, "gpm11", 0x24),
11226cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x140, "gpm12", 0x28),
11236cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x160, "gpm13", 0x2C),
11246cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x180, "gpm14", 0x30),
11256cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x1A0, "gpm15", 0x34),
11266cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x1C0, "gpm16", 0x38),
11276cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x1E0, "gpm17", 0x3C),
11286cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm40", 0x40),
11296cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm41", 0x44),
11306cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm42", 0x48),
11316cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm43", 0x4C),
11326cf96df7SJaewon Kim };
11336cf96df7SJaewon Kim 
11346cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 4 (FSYS0) */
11356cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks4[] __initconst = {
11366cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpf0", 0x00),
11376cf96df7SJaewon Kim };
11386cf96df7SJaewon Kim 
11396cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 5 (FSYS1) */
11406cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks5[] __initconst = {
11416cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(7, 0x000, "gpf1", 0x00),
11426cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf2", 0x04),
11436cf96df7SJaewon Kim };
11446cf96df7SJaewon Kim 
11456cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 6 (PERIC0) */
11466cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks6[] __initconst = {
11476cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
11486cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
11496cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
11506cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp3", 0x0C),
11516cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg0", 0x10),
11526cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x0A0, "gpg1", 0x14),
11536cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x0C0, "gpg2", 0x18),
11546cf96df7SJaewon Kim };
11556cf96df7SJaewon Kim 
11566cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 7 (PERIC1) */
11576cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks7[] __initconst = {
11586cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp4", 0x00),
11596cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp5", 0x04),
11606cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp6", 0x08),
11616cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpc0", 0x0C),
11626cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpc1", 0x10),
11636cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(4, 0x0A0, "gpd0", 0x14),
11646cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(7, 0x0C0, "gpg3", 0x18),
11656cf96df7SJaewon Kim };
11666cf96df7SJaewon Kim 
11676cf96df7SJaewon Kim /* pin banks of exynos9810 pin-controller 8 (VTS) */
11686cf96df7SJaewon Kim static const struct samsung_pin_bank_data exynos9810_pin_banks8[] __initconst = {
11696cf96df7SJaewon Kim 	EXYNOS850_PIN_BANK_EINTG(3, 0x000, "gpt0", 0x00),
11706cf96df7SJaewon Kim };
11716cf96df7SJaewon Kim 
1172eed2e792SIvaylo Ivanov static const struct samsung_pin_ctrl exynos9810_pin_ctrl[] __initconst = {
1173eed2e792SIvaylo Ivanov 	{
1174eed2e792SIvaylo Ivanov 		/* pin-controller instance 0 ALIVE data */
1175eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks0,
1176eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks0),
1177eed2e792SIvaylo Ivanov 		.eint_wkup_init = exynos_eint_wkup_init,
1178eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1179eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1180eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1181eed2e792SIvaylo Ivanov 	}, {
1182eed2e792SIvaylo Ivanov 		/* pin-controller instance 1 AUD data */
1183eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks1,
1184eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks1),
1185eed2e792SIvaylo Ivanov 	}, {
1186eed2e792SIvaylo Ivanov 		/* pin-controller instance 2 CHUB data */
1187eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks2,
1188eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks2),
1189eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1190eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1191eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1192eed2e792SIvaylo Ivanov 	}, {
1193eed2e792SIvaylo Ivanov 		/* pin-controller instance 3 CMGP data */
1194eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks3,
1195eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks3),
1196eed2e792SIvaylo Ivanov 		.eint_wkup_init = exynos_eint_wkup_init,
1197eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1198eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1199eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1200eed2e792SIvaylo Ivanov 	}, {
1201eed2e792SIvaylo Ivanov 		/* pin-controller instance 4 FSYS0 data */
1202eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks4,
1203eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks4),
1204eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1205eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1206eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1207eed2e792SIvaylo Ivanov 	}, {
1208eed2e792SIvaylo Ivanov 		/* pin-controller instance 5 FSYS1 data */
1209eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks5,
1210eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks5),
1211eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1212eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1213eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1214eed2e792SIvaylo Ivanov 	}, {
1215eed2e792SIvaylo Ivanov 		/* pin-controller instance 6 PERIC0 data */
1216eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks6,
1217eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks6),
1218eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1219eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1220eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1221eed2e792SIvaylo Ivanov 	}, {
1222eed2e792SIvaylo Ivanov 		/* pin-controller instance 7 PERIC1 data */
1223eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks7,
1224eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks7),
1225eed2e792SIvaylo Ivanov 		.eint_gpio_init = exynos_eint_gpio_init,
1226eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
1227eed2e792SIvaylo Ivanov 		.resume         = exynos_pinctrl_resume,
1228eed2e792SIvaylo Ivanov 	}, {
1229eed2e792SIvaylo Ivanov 		/* pin-controller instance 8 VTS data */
1230eed2e792SIvaylo Ivanov 		.pin_banks      = exynos9810_pin_banks8,
1231eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynos9810_pin_banks8),
1232eed2e792SIvaylo Ivanov 	},
1233eed2e792SIvaylo Ivanov };
1234eed2e792SIvaylo Ivanov 
1235eed2e792SIvaylo Ivanov const struct samsung_pinctrl_of_match_data exynos9810_of_data __initconst = {
1236eed2e792SIvaylo Ivanov 	.ctrl		= exynos9810_pin_ctrl,
1237eed2e792SIvaylo Ivanov 	.num_ctrl	= ARRAY_SIZE(exynos9810_pin_ctrl),
1238eed2e792SIvaylo Ivanov };
1239eed2e792SIvaylo Ivanov 
1240eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 0 (ALIVE) */
1241eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks0[] __initconst = {
1242eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
1243eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTW(2, 0x020, "gpa1", 0x04),
1244eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTN(2, 0x040, "gpq0"),
1245eed2e792SIvaylo Ivanov };
1246eed2e792SIvaylo Ivanov 
1247eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 1 (AUD) */
1248eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks1[] __initconst = {
1249eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
1250eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpb1", 0x04),
1251eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpb2", 0x08),
1252eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpb3", 0x0C),
1253eed2e792SIvaylo Ivanov };
1254eed2e792SIvaylo Ivanov 
1255eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 2 (FSYS0) */
1256eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks2[] __initconst = {
1257eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf0", 0x00),
1258eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf1", 0x04),
1259eed2e792SIvaylo Ivanov };
1260eed2e792SIvaylo Ivanov 
1261eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 3 (FSYS1) */
1262eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks3[] __initconst = {
1263eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf8", 0x00),
1264eed2e792SIvaylo Ivanov };
1265eed2e792SIvaylo Ivanov 
1266eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 4 (FSYS2) */
1267eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks4[] __initconst = {
1268eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf2", 0x00),
1269eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf3", 0x04),
1270eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(7, 0x040, "gpf4", 0x08),
1271eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpf5", 0x0C),
1272eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(7, 0x080, "gpf6", 0x10),
1273eed2e792SIvaylo Ivanov };
1274eed2e792SIvaylo Ivanov 
1275eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 5 (PERIC0) */
1276eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks5[] __initconst = {
1277eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
1278eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
1279eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
1280eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(5, 0x060, "gpg0", 0x0C),
1281eed2e792SIvaylo Ivanov };
1282eed2e792SIvaylo Ivanov 
1283eed2e792SIvaylo Ivanov /* pin banks of exynosautov9 pin-controller 6 (PERIC1) */
1284eed2e792SIvaylo Ivanov static const struct samsung_pin_bank_data exynosautov9_pin_banks6[] __initconst = {
1285eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp3", 0x00),
1286eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp4", 0x04),
1287eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp5", 0x08),
1288eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpg1", 0x0C),
1289eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg2", 0x10),
1290eed2e792SIvaylo Ivanov 	EXYNOS850_PIN_BANK_EINTG(4, 0x0A0, "gpg3", 0x14),
1291eed2e792SIvaylo Ivanov };
1292eed2e792SIvaylo Ivanov 
1293eed2e792SIvaylo Ivanov static const struct samsung_pin_ctrl exynosautov9_pin_ctrl[] __initconst = {
1294eed2e792SIvaylo Ivanov 	{
1295eed2e792SIvaylo Ivanov 		/* pin-controller instance 0 ALIVE data */
1296eed2e792SIvaylo Ivanov 		.pin_banks      = exynosautov9_pin_banks0,
1297eed2e792SIvaylo Ivanov 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks0),
1298eed2e792SIvaylo Ivanov 		.eint_wkup_init = exynos_eint_wkup_init,
1299eed2e792SIvaylo Ivanov 		.suspend        = exynos_pinctrl_suspend,
13000d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13010d1b662cSAlim Akhtar 	}, {
13020d1b662cSAlim Akhtar 		/* pin-controller instance 1 AUD data */
13030d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks1,
13040d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks1),
13050d1b662cSAlim Akhtar 	}, {
13060d1b662cSAlim Akhtar 		/* pin-controller instance 2 FSYS0 data */
13070d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks2,
13080d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks2),
13090d1b662cSAlim Akhtar 		.eint_gpio_init = exynos_eint_gpio_init,
13100d1b662cSAlim Akhtar 		.suspend        = exynos_pinctrl_suspend,
13110d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13120d1b662cSAlim Akhtar 	}, {
13130d1b662cSAlim Akhtar 		/* pin-controller instance 3 FSYS1 data */
13140d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks3,
13150d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks3),
13160d1b662cSAlim Akhtar 		.eint_gpio_init = exynos_eint_gpio_init,
13170d1b662cSAlim Akhtar 		.suspend        = exynos_pinctrl_suspend,
13180d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13190d1b662cSAlim Akhtar 	}, {
13200d1b662cSAlim Akhtar 		/* pin-controller instance 4 FSYS2 data */
13210d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks4,
13220d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks4),
13230d1b662cSAlim Akhtar 		.eint_gpio_init = exynos_eint_gpio_init,
13240d1b662cSAlim Akhtar 		.suspend        = exynos_pinctrl_suspend,
13250d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13260d1b662cSAlim Akhtar 	}, {
13270d1b662cSAlim Akhtar 		/* pin-controller instance 5 PERIC0 data */
13280d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks5,
13290d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks5),
13300d1b662cSAlim Akhtar 		.eint_gpio_init = exynos_eint_gpio_init,
13310d1b662cSAlim Akhtar 		.suspend        = exynos_pinctrl_suspend,
13320d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13330d1b662cSAlim Akhtar 	}, {
13340d1b662cSAlim Akhtar 		/* pin-controller instance 6 PERIC1 data */
13350d1b662cSAlim Akhtar 		.pin_banks      = exynosautov9_pin_banks6,
13360d1b662cSAlim Akhtar 		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks6),
13370d1b662cSAlim Akhtar 		.eint_gpio_init = exynos_eint_gpio_init,
13380d1b662cSAlim Akhtar 		.suspend        = exynos_pinctrl_suspend,
13390d1b662cSAlim Akhtar 		.resume         = exynos_pinctrl_resume,
13400d1b662cSAlim Akhtar 	},
13410d1b662cSAlim Akhtar };
13420d1b662cSAlim Akhtar 
13430d1b662cSAlim Akhtar const struct samsung_pinctrl_of_match_data exynosautov9_of_data __initconst = {
1344abb860acSKrzysztof Kozlowski 	.ctrl		= exynosautov9_pin_ctrl,
13450d1b662cSAlim Akhtar 	.num_ctrl	= ARRAY_SIZE(exynosautov9_pin_ctrl),
13460d1b662cSAlim Akhtar };
13470d1b662cSAlim Akhtar 
13480d1b662cSAlim Akhtar /* pin banks of exynosautov920 pin-controller 0 (ALIVE) */
13490d1b662cSAlim Akhtar static const struct samsung_pin_bank_data exynosautov920_pin_banks0[] = {
13500d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTW(8, 0x0000, "gpa0", 0x18, 0x24, 0x28),
13510d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTW(2, 0x1000, "gpa1", 0x18, 0x20, 0x24),
13520d1b662cSAlim Akhtar 	EXYNOS850_PIN_BANK_EINTN(2, 0x2000, "gpq0"),
13530d1b662cSAlim Akhtar };
13540d1b662cSAlim Akhtar 
13550d1b662cSAlim Akhtar /* pin banks of exynosautov920 pin-controller 1 (AUD) */
13560d1b662cSAlim Akhtar static const struct samsung_pin_bank_data exynosautov920_pin_banks1[] = {
13570d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(7, 0x0000, "gpb0", 0x18, 0x24, 0x28),
13580d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(6, 0x1000, "gpb1", 0x18, 0x24, 0x28),
13590d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(8, 0x2000, "gpb2", 0x18, 0x24, 0x28),
13600d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(8, 0x3000, "gpb3", 0x18, 0x24, 0x28),
13610d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(8, 0x4000, "gpb4", 0x18, 0x24, 0x28),
13620d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(5, 0x5000, "gpb5", 0x18, 0x24, 0x28),
13630d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(5, 0x6000, "gpb6", 0x18, 0x24, 0x28),
13640d1b662cSAlim Akhtar };
13650d1b662cSAlim Akhtar 
13660d1b662cSAlim Akhtar /* pin banks of exynosautov920 pin-controller 2 (HSI0) */
13670d1b662cSAlim Akhtar static const struct samsung_pin_bank_data exynosautov920_pin_banks2[] = {
13680d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(6, 0x0000, "gph0", 0x18, 0x24, 0x28),
13690d1b662cSAlim Akhtar 	EXYNOSV920_PIN_BANK_EINTG(2, 0x1000, "gph1", 0x18, 0x20, 0x24),
13704a8be01aSPeter Griffin };
13714a8be01aSPeter Griffin 
13724a8be01aSPeter Griffin /* pin banks of exynosautov920 pin-controller 3 (HSI1) */
13734a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynosautov920_pin_banks3[] = {
13744a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(7, 0x000, "gph8", 0x18, 0x24, 0x28),
13754a8be01aSPeter Griffin };
13764a8be01aSPeter Griffin 
13774a8be01aSPeter Griffin /* pin banks of exynosautov920 pin-controller 4 (HSI2) */
13784a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynosautov920_pin_banks4[] = {
13794a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x0000, "gph3", 0x18, 0x24, 0x28),
13804a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(7, 0x1000, "gph4", 0x18, 0x24, 0x28),
13814a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x2000, "gph5", 0x18, 0x24, 0x28),
13824a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(7, 0x3000, "gph6", 0x18, 0x24, 0x28),
13834a8be01aSPeter Griffin };
13844a8be01aSPeter Griffin 
13854a8be01aSPeter Griffin /* pin banks of exynosautov920 pin-controller 5 (HSI2UFS) */
13864a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynosautov920_pin_banks5[] = {
13874a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x000, "gph2", 0x18, 0x20, 0x24),
13884a8be01aSPeter Griffin };
13894a8be01aSPeter Griffin 
13904a8be01aSPeter Griffin /* pin banks of exynosautov920 pin-controller 6 (PERIC0) */
13914a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynosautov920_pin_banks6[] = {
13924a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x0000, "gpp0", 0x18, 0x24, 0x28),
13934a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x1000, "gpp1", 0x18, 0x24, 0x28),
13944a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x2000, "gpp2", 0x18, 0x24, 0x28),
13954a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(5, 0x3000, "gpg0", 0x18, 0x24, 0x28),
13964a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x4000, "gpp3", 0x18, 0x24, 0x28),
13974a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x5000, "gpp4", 0x18, 0x20, 0x24),
13984a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x6000, "gpg2", 0x18, 0x20, 0x24),
13994a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x7000, "gpg5", 0x18, 0x20, 0x24),
14004a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(3, 0x8000, "gpg3", 0x18, 0x20, 0x24),
14014a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(5, 0x9000, "gpg4", 0x18, 0x24, 0x28),
14024a8be01aSPeter Griffin };
14034a8be01aSPeter Griffin 
14044a8be01aSPeter Griffin /* pin banks of exynosautov920 pin-controller 7 (PERIC1) */
14054a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynosautov920_pin_banks7[] = {
14064a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x0000, "gpp5",  0x18, 0x24, 0x28),
14074a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(5, 0x1000, "gpp6",  0x18, 0x24, 0x28),
14084a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x2000, "gpp10", 0x18, 0x20, 0x24),
14094a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x3000, "gpp7",  0x18, 0x24, 0x28),
14104a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x4000, "gpp8",  0x18, 0x20, 0x24),
14114a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x5000, "gpp11", 0x18, 0x20, 0x24),
14124a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x6000, "gpp9",  0x18, 0x20, 0x24),
14134a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(4, 0x7000, "gpp12", 0x18, 0x20, 0x24),
14144a8be01aSPeter Griffin 	EXYNOSV920_PIN_BANK_EINTG(8, 0x8000, "gpg1",  0x18, 0x24, 0x28),
14154a8be01aSPeter Griffin };
14164a8be01aSPeter Griffin 
14174a8be01aSPeter Griffin static const struct samsung_retention_data no_retention_data __initconst = {
14184a8be01aSPeter Griffin 	.regs	 = NULL,
14194a8be01aSPeter Griffin 	.nr_regs = 0,
14204a8be01aSPeter Griffin 	.value	 = 0,
14214a8be01aSPeter Griffin 	.refcnt	 = &exynos_shared_retention_refcnt,
14224a8be01aSPeter Griffin 	.init	 = exynos_retention_init,
14234a8be01aSPeter Griffin };
14244a8be01aSPeter Griffin 
14254a8be01aSPeter Griffin static const struct samsung_pin_ctrl exynosautov920_pin_ctrl[] = {
14264a8be01aSPeter Griffin 	{
14274a8be01aSPeter Griffin 		/* pin-controller instance 0 ALIVE data */
14284a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks0,
14294a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks0),
14304a8be01aSPeter Griffin 		.eint_wkup_init	= exynos_eint_wkup_init,
14314a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14324a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14334a8be01aSPeter Griffin 		.retention_data	= &no_retention_data,
14344a8be01aSPeter Griffin 	}, {
14354a8be01aSPeter Griffin 		/* pin-controller instance 1 AUD data */
14364a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks1,
14374a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks1),
14384a8be01aSPeter Griffin 	}, {
14394a8be01aSPeter Griffin 		/* pin-controller instance 2 HSI0 data */
14404a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks2,
14414a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks2),
14424a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14434a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14444a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14454a8be01aSPeter Griffin 	}, {
14464a8be01aSPeter Griffin 		/* pin-controller instance 3 HSI1 data */
14474a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks3,
14484a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks3),
14494a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14504a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14514a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14524a8be01aSPeter Griffin 	}, {
14534a8be01aSPeter Griffin 		/* pin-controller instance 4 HSI2 data */
14544a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks4,
14554a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks4),
14564a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14574a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14584a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14594a8be01aSPeter Griffin 	}, {
14604a8be01aSPeter Griffin 		/* pin-controller instance 5 HSI2UFS data */
14614a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks5,
14624a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks5),
14634a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14644a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14654a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14664a8be01aSPeter Griffin 	}, {
14674a8be01aSPeter Griffin 		/* pin-controller instance 6 PERIC0 data */
14684a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks6,
14694a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks6),
14704a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14714a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14724a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14734a8be01aSPeter Griffin 	}, {
14744a8be01aSPeter Griffin 		/* pin-controller instance 7 PERIC1 data */
14754a8be01aSPeter Griffin 		.pin_banks	= exynosautov920_pin_banks7,
14764a8be01aSPeter Griffin 		.nr_banks	= ARRAY_SIZE(exynosautov920_pin_banks7),
14774a8be01aSPeter Griffin 		.eint_gpio_init	= exynos_eint_gpio_init,
14784a8be01aSPeter Griffin 		.suspend	= exynosautov920_pinctrl_suspend,
14794a8be01aSPeter Griffin 		.resume		= exynosautov920_pinctrl_resume,
14804a8be01aSPeter Griffin 	},
14814a8be01aSPeter Griffin };
14824a8be01aSPeter Griffin 
14834a8be01aSPeter Griffin const struct samsung_pinctrl_of_match_data exynosautov920_of_data __initconst = {
14844a8be01aSPeter Griffin 	.ctrl		= exynosautov920_pin_ctrl,
14854a8be01aSPeter Griffin 	.num_ctrl	= ARRAY_SIZE(exynosautov920_pin_ctrl),
14864a8be01aSPeter Griffin };
14874a8be01aSPeter Griffin 
14884a8be01aSPeter Griffin /* pin banks of exynos8895 pin-controller 0 (ALIVE) */
14894a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynos8895_pin_banks0[] __initconst = {
14904a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTW(8, 0x020, "gpa0", 0x00),
14914a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTW(8, 0x040, "gpa1", 0x04),
14924a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTW(8, 0x060, "gpa2", 0x08),
14934a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTW(8, 0x080, "gpa3", 0x0c),
14944a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTW(7, 0x0a0, "gpa4", 0x24),
14954a8be01aSPeter Griffin };
14964a8be01aSPeter Griffin 
14974a8be01aSPeter Griffin /* pin banks of exynos8895 pin-controller 1 (ABOX) */
14984a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynos8895_pin_banks1[] __initconst = {
14994a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTG(8, 0x000, "gph0", 0x00),
15004a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTG(7, 0x020, "gph1", 0x04),
15014a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTG(4, 0x040, "gph3", 0x08),
15024a8be01aSPeter Griffin };
15034a8be01aSPeter Griffin 
15044a8be01aSPeter Griffin /* pin banks of exynos8895 pin-controller 2 (VTS) */
15054a8be01aSPeter Griffin static const struct samsung_pin_bank_data exynos8895_pin_banks2[] __initconst = {
15064a8be01aSPeter Griffin 	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gph2", 0x00),
15074a8be01aSPeter Griffin };
15084a8be01aSPeter Griffin 
15094a8be01aSPeter Griffin /* pin banks of exynos8895 pin-controller 3 (FSYS0) */
1510 static const struct samsung_pin_bank_data exynos8895_pin_banks3[] __initconst = {
1511 	EXYNOS8895_PIN_BANK_EINTG(3, 0x000, "gpi0", 0x00),
1512 	EXYNOS8895_PIN_BANK_EINTG(8, 0x020, "gpi1", 0x04),
1513 };
1514 
1515 /* pin banks of exynos8895 pin-controller 4 (FSYS1) */
1516 static const struct samsung_pin_bank_data exynos8895_pin_banks4[] __initconst = {
1517 	EXYNOS_PIN_BANK_EINTG(8, 0x000, "gpj1", 0x00),
1518 	EXYNOS_PIN_BANK_EINTG(7, 0x020, "gpj0", 0x04),
1519 };
1520 
1521 /* pin banks of exynos8895 pin-controller 5 (BUSC) */
1522 static const struct samsung_pin_bank_data exynos8895_pin_banks5[] __initconst = {
1523 	EXYNOS_PIN_BANK_EINTG(2, 0x000, "gpb2", 0x00),
1524 };
1525 
1526 /* pin banks of exynos8895 pin-controller 6 (PERIC0) */
1527 static const struct samsung_pin_bank_data exynos8895_pin_banks6[] __initconst = {
1528 	EXYNOS_PIN_BANK_EINTG(8, 0x000, "gpd0", 0x00),
1529 	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpd1", 0x04),
1530 	EXYNOS_PIN_BANK_EINTG(4, 0x040, "gpd2", 0x08),
1531 	EXYNOS_PIN_BANK_EINTG(5, 0x060, "gpd3", 0x0C),
1532 	EXYNOS_PIN_BANK_EINTG(4, 0x080, "gpb1", 0x10),
1533 	EXYNOS_PIN_BANK_EINTG(8, 0x0a0, "gpe7", 0x14),
1534 	EXYNOS_PIN_BANK_EINTG(8, 0x0c0, "gpf1", 0x18),
1535 };
1536 
1537 /* pin banks of exynos8895 pin-controller 7 (PERIC1) */
1538 static const struct samsung_pin_bank_data exynos8895_pin_banks7[] __initconst = {
1539 	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gpb0", 0x00),
1540 	EXYNOS_PIN_BANK_EINTG(5, 0x020, "gpc0", 0x04),
1541 	EXYNOS_PIN_BANK_EINTG(5, 0x040, "gpc1", 0x08),
1542 	EXYNOS_PIN_BANK_EINTG(8, 0x060, "gpc2", 0x0C),
1543 	EXYNOS_PIN_BANK_EINTG(8, 0x080, "gpc3", 0x10),
1544 	EXYNOS_PIN_BANK_EINTG(4, 0x0a0, "gpk0", 0x14),
1545 	EXYNOS_PIN_BANK_EINTG(8, 0x0c0, "gpe5", 0x18),
1546 	EXYNOS_PIN_BANK_EINTG(8, 0x0e0, "gpe6", 0x1C),
1547 	EXYNOS_PIN_BANK_EINTG(8, 0x100, "gpe2", 0x20),
1548 	EXYNOS_PIN_BANK_EINTG(8, 0x120, "gpe3", 0x24),
1549 	EXYNOS_PIN_BANK_EINTG(8, 0x140, "gpe4", 0x28),
1550 	EXYNOS_PIN_BANK_EINTG(4, 0x160, "gpf0", 0x2C),
1551 	EXYNOS_PIN_BANK_EINTG(8, 0x180, "gpe1", 0x30),
1552 	EXYNOS_PIN_BANK_EINTG(2, 0x1a0, "gpg0", 0x34),
1553 };
1554 
1555 static const struct samsung_pin_ctrl exynos8895_pin_ctrl[] __initconst = {
1556 	{
1557 		/* pin-controller instance 0 ALIVE data */
1558 		.pin_banks	= exynos8895_pin_banks0,
1559 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks0),
1560 		.eint_gpio_init = exynos_eint_gpio_init,
1561 		.eint_wkup_init = exynos_eint_wkup_init,
1562 		.suspend	= exynos_pinctrl_suspend,
1563 		.resume		= exynos_pinctrl_resume,
1564 	}, {
1565 		/* pin-controller instance 1 ABOX data */
1566 		.pin_banks	= exynos8895_pin_banks1,
1567 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks1),
1568 	}, {
1569 		/* pin-controller instance 2 VTS data */
1570 		.pin_banks	= exynos8895_pin_banks2,
1571 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks2),
1572 		.eint_gpio_init = exynos_eint_gpio_init,
1573 	}, {
1574 		/* pin-controller instance 3 FSYS0 data */
1575 		.pin_banks	= exynos8895_pin_banks3,
1576 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks3),
1577 		.eint_gpio_init = exynos_eint_gpio_init,
1578 		.suspend	= exynos_pinctrl_suspend,
1579 		.resume		= exynos_pinctrl_resume,
1580 	}, {
1581 		/* pin-controller instance 4 FSYS1 data */
1582 		.pin_banks	= exynos8895_pin_banks4,
1583 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks4),
1584 		.eint_gpio_init = exynos_eint_gpio_init,
1585 		.suspend	= exynos_pinctrl_suspend,
1586 		.resume		= exynos_pinctrl_resume,
1587 	}, {
1588 		/* pin-controller instance 5 BUSC data */
1589 		.pin_banks	= exynos8895_pin_banks5,
1590 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks5),
1591 		.eint_gpio_init = exynos_eint_gpio_init,
1592 		.suspend	= exynos_pinctrl_suspend,
1593 		.resume		= exynos_pinctrl_resume,
1594 	}, {
1595 		/* pin-controller instance 6 PERIC0 data */
1596 		.pin_banks	= exynos8895_pin_banks6,
1597 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks6),
1598 		.eint_gpio_init = exynos_eint_gpio_init,
1599 		.suspend	= exynos_pinctrl_suspend,
1600 		.resume		= exynos_pinctrl_resume,
1601 	}, {
1602 		/* pin-controller instance 7 PERIC1 data */
1603 		.pin_banks	= exynos8895_pin_banks7,
1604 		.nr_banks	= ARRAY_SIZE(exynos8895_pin_banks7),
1605 		.eint_gpio_init = exynos_eint_gpio_init,
1606 		.suspend	= exynos_pinctrl_suspend,
1607 		.resume		= exynos_pinctrl_resume,
1608 	},
1609 };
1610 
1611 const struct samsung_pinctrl_of_match_data exynos8895_of_data __initconst = {
1612 	.ctrl		= exynos8895_pin_ctrl,
1613 	.num_ctrl	= ARRAY_SIZE(exynos8895_pin_ctrl),
1614 };
1615 
1616 /*
1617  * Pinctrl driver data for Tesla FSD SoC. FSD SoC includes three
1618  * gpio/pin-mux/pinconfig controllers.
1619  */
1620 
1621 /* pin banks of FSD pin-controller 0 (FSYS) */
1622 static const struct samsung_pin_bank_data fsd_pin_banks0[] __initconst = {
1623 	EXYNOS850_PIN_BANK_EINTG(7, 0x00, "gpf0", 0x00),
1624 	EXYNOS850_PIN_BANK_EINTG(8, 0x20, "gpf1", 0x04),
1625 	EXYNOS850_PIN_BANK_EINTG(3, 0x40, "gpf6", 0x08),
1626 	EXYNOS850_PIN_BANK_EINTG(2, 0x60, "gpf4", 0x0c),
1627 	EXYNOS850_PIN_BANK_EINTG(6, 0x80, "gpf5", 0x10),
1628 };
1629 
1630 /* pin banks of FSD pin-controller 1 (PERIC) */
1631 static const struct samsung_pin_bank_data fsd_pin_banks1[] __initconst = {
1632 	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpc8", 0x00),
1633 	EXYNOS850_PIN_BANK_EINTG(7, 0x020, "gpf2", 0x04),
1634 	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpf3", 0x08),
1635 	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpd0", 0x0c),
1636 	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpb0", 0x10),
1637 	EXYNOS850_PIN_BANK_EINTG(8, 0x0a0, "gpb1", 0x14),
1638 	EXYNOS850_PIN_BANK_EINTG(8, 0x0c0, "gpb4", 0x18),
1639 	EXYNOS850_PIN_BANK_EINTG(4, 0x0e0, "gpb5", 0x1c),
1640 	EXYNOS850_PIN_BANK_EINTG(8, 0x100, "gpb6", 0x20),
1641 	EXYNOS850_PIN_BANK_EINTG(8, 0x120, "gpb7", 0x24),
1642 	EXYNOS850_PIN_BANK_EINTG(5, 0x140, "gpd1", 0x28),
1643 	EXYNOS850_PIN_BANK_EINTG(5, 0x160, "gpd2", 0x2c),
1644 	EXYNOS850_PIN_BANK_EINTG(7, 0x180, "gpd3", 0x30),
1645 	EXYNOS850_PIN_BANK_EINTG(8, 0x1a0, "gpg0", 0x34),
1646 	EXYNOS850_PIN_BANK_EINTG(8, 0x1c0, "gpg1", 0x38),
1647 	EXYNOS850_PIN_BANK_EINTG(8, 0x1e0, "gpg2", 0x3c),
1648 	EXYNOS850_PIN_BANK_EINTG(8, 0x200, "gpg3", 0x40),
1649 	EXYNOS850_PIN_BANK_EINTG(8, 0x220, "gpg4", 0x44),
1650 	EXYNOS850_PIN_BANK_EINTG(8, 0x240, "gpg5", 0x48),
1651 	EXYNOS850_PIN_BANK_EINTG(8, 0x260, "gpg6", 0x4c),
1652 	EXYNOS850_PIN_BANK_EINTG(8, 0x280, "gpg7", 0x50),
1653 };
1654 
1655 /* pin banks of FSD pin-controller 2 (PMU) */
1656 static const struct samsung_pin_bank_data fsd_pin_banks2[] __initconst = {
1657 	EXYNOS850_PIN_BANK_EINTN(3, 0x00, "gpq0"),
1658 };
1659 
1660 static const struct samsung_pin_ctrl fsd_pin_ctrl[] __initconst = {
1661 	{
1662 		/* pin-controller instance 0 FSYS0 data */
1663 		.pin_banks	= fsd_pin_banks0,
1664 		.nr_banks	= ARRAY_SIZE(fsd_pin_banks0),
1665 		.eint_gpio_init = exynos_eint_gpio_init,
1666 		.suspend	= exynos_pinctrl_suspend,
1667 		.resume		= exynos_pinctrl_resume,
1668 	}, {
1669 		/* pin-controller instance 1 PERIC data */
1670 		.pin_banks	= fsd_pin_banks1,
1671 		.nr_banks	= ARRAY_SIZE(fsd_pin_banks1),
1672 		.eint_gpio_init = exynos_eint_gpio_init,
1673 		.suspend	= exynos_pinctrl_suspend,
1674 		.resume		= exynos_pinctrl_resume,
1675 	}, {
1676 		/* pin-controller instance 2 PMU data */
1677 		.pin_banks	= fsd_pin_banks2,
1678 		.nr_banks	= ARRAY_SIZE(fsd_pin_banks2),
1679 	},
1680 };
1681 
1682 const struct samsung_pinctrl_of_match_data fsd_of_data __initconst = {
1683 	.ctrl		= fsd_pin_ctrl,
1684 	.num_ctrl	= ARRAY_SIZE(fsd_pin_ctrl),
1685 };
1686 
1687 /* pin banks of gs101 pin-controller (ALIVE) */
1688 static const struct samsung_pin_bank_data gs101_pin_alive[] = {
1689 	GS101_PIN_BANK_EINTW(8, 0x0, "gpa0", 0x00, 0x00),
1690 	GS101_PIN_BANK_EINTW(7, 0x20, "gpa1", 0x04, 0x08),
1691 	GS101_PIN_BANK_EINTW(5, 0x40, "gpa2", 0x08, 0x10),
1692 	GS101_PIN_BANK_EINTW(4, 0x60, "gpa3", 0x0c, 0x18),
1693 	GS101_PIN_BANK_EINTW(4, 0x80, "gpa4", 0x10, 0x1c),
1694 	GS101_PIN_BANK_EINTW(7, 0xa0, "gpa5", 0x14, 0x20),
1695 	GS101_PIN_BANK_EINTW(8, 0xc0, "gpa9", 0x18, 0x28),
1696 	GS101_PIN_BANK_EINTW(2, 0xe0, "gpa10", 0x1c, 0x30),
1697 };
1698 
1699 /* pin banks of gs101 pin-controller (FAR_ALIVE) */
1700 static const struct samsung_pin_bank_data gs101_pin_far_alive[] = {
1701 	GS101_PIN_BANK_EINTW(8, 0x0, "gpa6", 0x00, 0x00),
1702 	GS101_PIN_BANK_EINTW(4, 0x20, "gpa7", 0x04, 0x08),
1703 	GS101_PIN_BANK_EINTW(8, 0x40, "gpa8", 0x08, 0x0c),
1704 	GS101_PIN_BANK_EINTW(2, 0x60, "gpa11", 0x0c, 0x14),
1705 };
1706 
1707 /* pin banks of gs101 pin-controller (GSACORE) */
1708 static const struct samsung_pin_bank_data gs101_pin_gsacore[] = {
1709 	GS101_PIN_BANK_EINTG(2, 0x0, "gps0", 0x00, 0x00),
1710 	GS101_PIN_BANK_EINTG(8, 0x20, "gps1", 0x04, 0x04),
1711 	GS101_PIN_BANK_EINTG(3, 0x40, "gps2", 0x08, 0x0c),
1712 };
1713 
1714 /* pin banks of gs101 pin-controller (GSACTRL) */
1715 static const struct samsung_pin_bank_data gs101_pin_gsactrl[] = {
1716 	GS101_PIN_BANK_EINTW(6, 0x0, "gps3", 0x00, 0x00),
1717 };
1718 
1719 /* pin banks of gs101 pin-controller (PERIC0) */
1720 static const struct samsung_pin_bank_data gs101_pin_peric0[] = {
1721 	GS101_PIN_BANK_EINTG(5, 0x0, "gpp0", 0x00, 0x00),
1722 	GS101_PIN_BANK_EINTG(4, 0x20, "gpp1", 0x04, 0x08),
1723 	GS101_PIN_BANK_EINTG(4, 0x40, "gpp2", 0x08, 0x0c),
1724 	GS101_PIN_BANK_EINTG(2, 0x60, "gpp3", 0x0c, 0x10),
1725 	GS101_PIN_BANK_EINTG(4, 0x80, "gpp4", 0x10, 0x14),
1726 	GS101_PIN_BANK_EINTG(2, 0xa0, "gpp5", 0x14, 0x18),
1727 	GS101_PIN_BANK_EINTG(4, 0xc0, "gpp6", 0x18, 0x1c),
1728 	GS101_PIN_BANK_EINTG(2, 0xe0, "gpp7", 0x1c, 0x20),
1729 	GS101_PIN_BANK_EINTG(4, 0x100, "gpp8", 0x20, 0x24),
1730 	GS101_PIN_BANK_EINTG(2, 0x120, "gpp9", 0x24, 0x28),
1731 	GS101_PIN_BANK_EINTG(4, 0x140, "gpp10", 0x28, 0x2c),
1732 	GS101_PIN_BANK_EINTG(2, 0x160, "gpp11", 0x2c, 0x30),
1733 	GS101_PIN_BANK_EINTG(4, 0x180, "gpp12", 0x30, 0x34),
1734 	GS101_PIN_BANK_EINTG(2, 0x1a0, "gpp13", 0x34, 0x38),
1735 	GS101_PIN_BANK_EINTG(4, 0x1c0, "gpp14", 0x38, 0x3c),
1736 	GS101_PIN_BANK_EINTG(2, 0x1e0, "gpp15", 0x3c, 0x40),
1737 	GS101_PIN_BANK_EINTG(4, 0x200, "gpp16", 0x40, 0x44),
1738 	GS101_PIN_BANK_EINTG(2, 0x220, "gpp17", 0x44, 0x48),
1739 	GS101_PIN_BANK_EINTG(4, 0x240, "gpp18", 0x48, 0x4c),
1740 	GS101_PIN_BANK_EINTG(4, 0x260, "gpp19", 0x4c, 0x50),
1741 };
1742 
1743 /* pin banks of gs101 pin-controller (PERIC1) */
1744 static const struct samsung_pin_bank_data gs101_pin_peric1[] = {
1745 	GS101_PIN_BANK_EINTG(8, 0x0, "gpp20", 0x00, 0x00),
1746 	GS101_PIN_BANK_EINTG(4, 0x20, "gpp21", 0x04, 0x08),
1747 	GS101_PIN_BANK_EINTG(2, 0x40, "gpp22", 0x08, 0x0c),
1748 	GS101_PIN_BANK_EINTG(8, 0x60, "gpp23", 0x0c, 0x10),
1749 	GS101_PIN_BANK_EINTG(4, 0x80, "gpp24", 0x10, 0x18),
1750 	GS101_PIN_BANK_EINTG(4, 0xa0, "gpp25", 0x14, 0x1c),
1751 	GS101_PIN_BANK_EINTG(5, 0xc0, "gpp26", 0x18, 0x20),
1752 	GS101_PIN_BANK_EINTG(4, 0xe0, "gpp27", 0x1c, 0x28),
1753 };
1754 
1755 /* pin banks of gs101 pin-controller (HSI1) */
1756 static const struct samsung_pin_bank_data gs101_pin_hsi1[] = {
1757 	GS101_PIN_BANK_EINTG(6, 0x0, "gph0", 0x00, 0x00),
1758 	GS101_PIN_BANK_EINTG(7, 0x20, "gph1", 0x04, 0x08),
1759 };
1760 
1761 /* pin banks of gs101 pin-controller (HSI2) */
1762 static const struct samsung_pin_bank_data gs101_pin_hsi2[] = {
1763 	GS101_PIN_BANK_EINTG(6, 0x0, "gph2", 0x00, 0x00),
1764 	GS101_PIN_BANK_EINTG(2, 0x20, "gph3", 0x04, 0x08),
1765 	GS101_PIN_BANK_EINTG(6, 0x40, "gph4", 0x08, 0x0c),
1766 };
1767 
1768 static const struct samsung_pin_ctrl gs101_pin_ctrl[] __initconst = {
1769 	{
1770 		/* pin banks of gs101 pin-controller (ALIVE) */
1771 		.pin_banks	= gs101_pin_alive,
1772 		.nr_banks	= ARRAY_SIZE(gs101_pin_alive),
1773 		.eint_wkup_init = exynos_eint_wkup_init,
1774 		.suspend	= gs101_pinctrl_suspend,
1775 		.resume		= gs101_pinctrl_resume,
1776 		.retention_data = &no_retention_data,
1777 	}, {
1778 		/* pin banks of gs101 pin-controller (FAR_ALIVE) */
1779 		.pin_banks	= gs101_pin_far_alive,
1780 		.nr_banks	= ARRAY_SIZE(gs101_pin_far_alive),
1781 		.eint_wkup_init = exynos_eint_wkup_init,
1782 		.suspend	= gs101_pinctrl_suspend,
1783 		.resume		= gs101_pinctrl_resume,
1784 		.retention_data = &no_retention_data,
1785 	}, {
1786 		/* pin banks of gs101 pin-controller (GSACORE) */
1787 		.pin_banks	= gs101_pin_gsacore,
1788 		.nr_banks	= ARRAY_SIZE(gs101_pin_gsacore),
1789 	}, {
1790 		/* pin banks of gs101 pin-controller (GSACTRL) */
1791 		.pin_banks	= gs101_pin_gsactrl,
1792 		.nr_banks	= ARRAY_SIZE(gs101_pin_gsactrl),
1793 	}, {
1794 		/* pin banks of gs101 pin-controller (PERIC0) */
1795 		.pin_banks	= gs101_pin_peric0,
1796 		.nr_banks	= ARRAY_SIZE(gs101_pin_peric0),
1797 		.eint_gpio_init = exynos_eint_gpio_init,
1798 		.suspend	= gs101_pinctrl_suspend,
1799 		.resume		= gs101_pinctrl_resume,
1800 	}, {
1801 		/* pin banks of gs101 pin-controller (PERIC1) */
1802 		.pin_banks	= gs101_pin_peric1,
1803 		.nr_banks	= ARRAY_SIZE(gs101_pin_peric1),
1804 		.eint_gpio_init = exynos_eint_gpio_init,
1805 		.suspend	= gs101_pinctrl_suspend,
1806 		.resume		= gs101_pinctrl_resume,
1807 	}, {
1808 		/* pin banks of gs101 pin-controller (HSI1) */
1809 		.pin_banks	= gs101_pin_hsi1,
1810 		.nr_banks	= ARRAY_SIZE(gs101_pin_hsi1),
1811 		.eint_gpio_init = exynos_eint_gpio_init,
1812 		.suspend	= gs101_pinctrl_suspend,
1813 		.resume		= gs101_pinctrl_resume,
1814 	}, {
1815 		/* pin banks of gs101 pin-controller (HSI2) */
1816 		.pin_banks	= gs101_pin_hsi2,
1817 		.nr_banks	= ARRAY_SIZE(gs101_pin_hsi2),
1818 		.eint_gpio_init = exynos_eint_gpio_init,
1819 		.suspend	= gs101_pinctrl_suspend,
1820 		.resume		= gs101_pinctrl_resume,
1821 	},
1822 };
1823 
1824 const struct samsung_pinctrl_of_match_data gs101_of_data __initconst = {
1825 	.ctrl		= gs101_pin_ctrl,
1826 	.num_ctrl	= ARRAY_SIZE(gs101_pin_ctrl),
1827 };
1828 
1829 /* pin banks of artpec8 pin-controller (FSYS0) */
1830 static const struct samsung_pin_bank_data artpec8_pin_banks0[] __initconst = {
1831 	ARTPEC_PIN_BANK_EINTG(5, 0x000, "gpf0", 0x00),
1832 	ARTPEC_PIN_BANK_EINTG(4, 0x020, "gpf1", 0x04),
1833 	ARTPEC_PIN_BANK_EINTG(8, 0x040, "gpf2", 0x08),
1834 	ARTPEC_PIN_BANK_EINTG(4, 0x060, "gpf3", 0x0c),
1835 	ARTPEC_PIN_BANK_EINTG(7, 0x080, "gpf4", 0x10),
1836 	ARTPEC_PIN_BANK_EINTG(8, 0x0a0, "gpe0", 0x14),
1837 	ARTPEC_PIN_BANK_EINTG(8, 0x0c0, "gpe1", 0x18),
1838 	ARTPEC_PIN_BANK_EINTG(6, 0x0e0, "gpe2", 0x1c),
1839 	ARTPEC_PIN_BANK_EINTG(8, 0x100, "gps0", 0x20),
1840 	ARTPEC_PIN_BANK_EINTG(8, 0x120, "gps1", 0x24),
1841 };
1842 
1843 /* pin banks of artpec8 pin-controller (PERIC) */
1844 static const struct samsung_pin_bank_data artpec8_pin_banks1[] __initconst = {
1845 	ARTPEC_PIN_BANK_EINTG(8, 0x000, "gpa0", 0x00),
1846 	ARTPEC_PIN_BANK_EINTG(8, 0x020, "gpa1", 0x04),
1847 	ARTPEC_PIN_BANK_EINTG(8, 0x040, "gpa2", 0x08),
1848 	ARTPEC_PIN_BANK_EINTG(2, 0x060, "gpk0", 0x0c),
1849 };
1850 
1851 static const struct samsung_pin_ctrl artpec8_pin_ctrl[] __initconst = {
1852 	{
1853 		/* pin-controller instance 0 FSYS data */
1854 		.pin_banks	= artpec8_pin_banks0,
1855 		.nr_banks	= ARRAY_SIZE(artpec8_pin_banks0),
1856 		.eint_gpio_init	= exynos_eint_gpio_init,
1857 	}, {
1858 		/* pin-controller instance 1 PERIC data */
1859 		.pin_banks	= artpec8_pin_banks1,
1860 		.nr_banks	= ARRAY_SIZE(artpec8_pin_banks1),
1861 		.eint_gpio_init	= exynos_eint_gpio_init,
1862 	},
1863 };
1864 
1865 const struct samsung_pinctrl_of_match_data artpec8_of_data __initconst = {
1866 	.ctrl		= artpec8_pin_ctrl,
1867 	.num_ctrl	= ARRAY_SIZE(artpec8_pin_ctrl),
1868 };
1869