cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-exynos-arm64.c (31288B)


      1// SPDX-License-Identifier: GPL-2.0+
      2//
      3// Exynos ARMv8 specific support for Samsung pinctrl/gpiolib driver
      4// with eint support.
      5//
      6// Copyright (c) 2012 Samsung Electronics Co., Ltd.
      7//		http://www.samsung.com
      8// Copyright (c) 2012 Linaro Ltd
      9//		http://www.linaro.org
     10// Copyright (c) 2017 Krzysztof Kozlowski <krzk@kernel.org>
     11//
     12// This file contains the Samsung Exynos specific information required by the
     13// the Samsung pinctrl/gpiolib driver. It also includes the implementation of
     14// external gpio and wakeup interrupt support.
     15
     16#include <linux/slab.h>
     17#include <linux/soc/samsung/exynos-regs-pmu.h>
     18
     19#include "pinctrl-samsung.h"
     20#include "pinctrl-exynos.h"
     21
     22static const struct samsung_pin_bank_type bank_type_off = {
     23	.fld_width = { 4, 1, 2, 2, 2, 2, },
     24	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
     25};
     26
     27static const struct samsung_pin_bank_type bank_type_alive = {
     28	.fld_width = { 4, 1, 2, 2, },
     29	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
     30};
     31
     32/* Exynos5433 has the 4bit widths for PINCFG_TYPE_DRV bitfields. */
     33static const struct samsung_pin_bank_type exynos5433_bank_type_off = {
     34	.fld_width = { 4, 1, 2, 4, 2, 2, },
     35	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
     36};
     37
     38static const struct samsung_pin_bank_type exynos5433_bank_type_alive = {
     39	.fld_width = { 4, 1, 2, 4, },
     40	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
     41};
     42
     43/*
     44 * Bank type for non-alive type. Bit fields:
     45 * CON: 4, DAT: 1, PUD: 4, DRV: 4, CONPDN: 2, PUDPDN: 4
     46 */
     47static const struct samsung_pin_bank_type exynos850_bank_type_off  = {
     48	.fld_width = { 4, 1, 4, 4, 2, 4, },
     49	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
     50};
     51
     52/*
     53 * Bank type for alive type. Bit fields:
     54 * CON: 4, DAT: 1, PUD: 4, DRV: 4
     55 */
     56static const struct samsung_pin_bank_type exynos850_bank_type_alive = {
     57	.fld_width = { 4, 1, 4, 4, },
     58	.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
     59};
     60
     61/* Pad retention control code for accessing PMU regmap */
     62static atomic_t exynos_shared_retention_refcnt;
     63
     64/* pin banks of exynos5433 pin-controller - ALIVE */
     65static const struct samsung_pin_bank_data exynos5433_pin_banks0[] __initconst = {
     66	/* Must start with EINTG banks, ordered by EINT group number. */
     67	EXYNOS5433_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
     68	EXYNOS5433_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
     69	EXYNOS5433_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
     70	EXYNOS5433_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
     71	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x020, "gpf1", 0x1004, 1),
     72	EXYNOS5433_PIN_BANK_EINTW_EXT(4, 0x040, "gpf2", 0x1008, 1),
     73	EXYNOS5433_PIN_BANK_EINTW_EXT(4, 0x060, "gpf3", 0x100c, 1),
     74	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x080, "gpf4", 0x1010, 1),
     75	EXYNOS5433_PIN_BANK_EINTW_EXT(8, 0x0a0, "gpf5", 0x1014, 1),
     76};
     77
     78/* pin banks of exynos5433 pin-controller - AUD */
     79static const struct samsung_pin_bank_data exynos5433_pin_banks1[] __initconst = {
     80	/* Must start with EINTG banks, ordered by EINT group number. */
     81	EXYNOS5433_PIN_BANK_EINTG(7, 0x000, "gpz0", 0x00),
     82	EXYNOS5433_PIN_BANK_EINTG(4, 0x020, "gpz1", 0x04),
     83};
     84
     85/* pin banks of exynos5433 pin-controller - CPIF */
     86static const struct samsung_pin_bank_data exynos5433_pin_banks2[] __initconst = {
     87	/* Must start with EINTG banks, ordered by EINT group number. */
     88	EXYNOS5433_PIN_BANK_EINTG(2, 0x000, "gpv6", 0x00),
     89};
     90
     91/* pin banks of exynos5433 pin-controller - eSE */
     92static const struct samsung_pin_bank_data exynos5433_pin_banks3[] __initconst = {
     93	/* Must start with EINTG banks, ordered by EINT group number. */
     94	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj2", 0x00),
     95};
     96
     97/* pin banks of exynos5433 pin-controller - FINGER */
     98static const struct samsung_pin_bank_data exynos5433_pin_banks4[] __initconst = {
     99	/* Must start with EINTG banks, ordered by EINT group number. */
    100	EXYNOS5433_PIN_BANK_EINTG(4, 0x000, "gpd5", 0x00),
    101};
    102
    103/* pin banks of exynos5433 pin-controller - FSYS */
    104static const struct samsung_pin_bank_data exynos5433_pin_banks5[] __initconst = {
    105	/* Must start with EINTG banks, ordered by EINT group number. */
    106	EXYNOS5433_PIN_BANK_EINTG(6, 0x000, "gph1", 0x00),
    107	EXYNOS5433_PIN_BANK_EINTG(7, 0x020, "gpr4", 0x04),
    108	EXYNOS5433_PIN_BANK_EINTG(5, 0x040, "gpr0", 0x08),
    109	EXYNOS5433_PIN_BANK_EINTG(8, 0x060, "gpr1", 0x0c),
    110	EXYNOS5433_PIN_BANK_EINTG(2, 0x080, "gpr2", 0x10),
    111	EXYNOS5433_PIN_BANK_EINTG(8, 0x0a0, "gpr3", 0x14),
    112};
    113
    114/* pin banks of exynos5433 pin-controller - IMEM */
    115static const struct samsung_pin_bank_data exynos5433_pin_banks6[] __initconst = {
    116	/* Must start with EINTG banks, ordered by EINT group number. */
    117	EXYNOS5433_PIN_BANK_EINTG(8, 0x000, "gpf0", 0x00),
    118};
    119
    120/* pin banks of exynos5433 pin-controller - NFC */
    121static const struct samsung_pin_bank_data exynos5433_pin_banks7[] __initconst = {
    122	/* Must start with EINTG banks, ordered by EINT group number. */
    123	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj0", 0x00),
    124};
    125
    126/* pin banks of exynos5433 pin-controller - PERIC */
    127static const struct samsung_pin_bank_data exynos5433_pin_banks8[] __initconst = {
    128	/* Must start with EINTG banks, ordered by EINT group number. */
    129	EXYNOS5433_PIN_BANK_EINTG(6, 0x000, "gpv7", 0x00),
    130	EXYNOS5433_PIN_BANK_EINTG(5, 0x020, "gpb0", 0x04),
    131	EXYNOS5433_PIN_BANK_EINTG(8, 0x040, "gpc0", 0x08),
    132	EXYNOS5433_PIN_BANK_EINTG(2, 0x060, "gpc1", 0x0c),
    133	EXYNOS5433_PIN_BANK_EINTG(6, 0x080, "gpc2", 0x10),
    134	EXYNOS5433_PIN_BANK_EINTG(8, 0x0a0, "gpc3", 0x14),
    135	EXYNOS5433_PIN_BANK_EINTG(2, 0x0c0, "gpg0", 0x18),
    136	EXYNOS5433_PIN_BANK_EINTG(4, 0x0e0, "gpd0", 0x1c),
    137	EXYNOS5433_PIN_BANK_EINTG(6, 0x100, "gpd1", 0x20),
    138	EXYNOS5433_PIN_BANK_EINTG(8, 0x120, "gpd2", 0x24),
    139	EXYNOS5433_PIN_BANK_EINTG(5, 0x140, "gpd4", 0x28),
    140	EXYNOS5433_PIN_BANK_EINTG(2, 0x160, "gpd8", 0x2c),
    141	EXYNOS5433_PIN_BANK_EINTG(7, 0x180, "gpd6", 0x30),
    142	EXYNOS5433_PIN_BANK_EINTG(3, 0x1a0, "gpd7", 0x34),
    143	EXYNOS5433_PIN_BANK_EINTG(5, 0x1c0, "gpg1", 0x38),
    144	EXYNOS5433_PIN_BANK_EINTG(2, 0x1e0, "gpg2", 0x3c),
    145	EXYNOS5433_PIN_BANK_EINTG(8, 0x200, "gpg3", 0x40),
    146};
    147
    148/* pin banks of exynos5433 pin-controller - TOUCH */
    149static const struct samsung_pin_bank_data exynos5433_pin_banks9[] __initconst = {
    150	/* Must start with EINTG banks, ordered by EINT group number. */
    151	EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj1", 0x00),
    152};
    153
    154/* PMU pin retention groups registers for Exynos5433 (without audio & fsys) */
    155static const u32 exynos5433_retention_regs[] = {
    156	EXYNOS5433_PAD_RETENTION_TOP_OPTION,
    157	EXYNOS5433_PAD_RETENTION_UART_OPTION,
    158	EXYNOS5433_PAD_RETENTION_EBIA_OPTION,
    159	EXYNOS5433_PAD_RETENTION_EBIB_OPTION,
    160	EXYNOS5433_PAD_RETENTION_SPI_OPTION,
    161	EXYNOS5433_PAD_RETENTION_MIF_OPTION,
    162	EXYNOS5433_PAD_RETENTION_USBXTI_OPTION,
    163	EXYNOS5433_PAD_RETENTION_BOOTLDO_OPTION,
    164	EXYNOS5433_PAD_RETENTION_UFS_OPTION,
    165	EXYNOS5433_PAD_RETENTION_FSYSGENIO_OPTION,
    166};
    167
    168static const struct samsung_retention_data exynos5433_retention_data __initconst = {
    169	.regs	 = exynos5433_retention_regs,
    170	.nr_regs = ARRAY_SIZE(exynos5433_retention_regs),
    171	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
    172	.refcnt	 = &exynos_shared_retention_refcnt,
    173	.init	 = exynos_retention_init,
    174};
    175
    176/* PMU retention control for audio pins can be tied to audio pin bank */
    177static const u32 exynos5433_audio_retention_regs[] = {
    178	EXYNOS5433_PAD_RETENTION_AUD_OPTION,
    179};
    180
    181static const struct samsung_retention_data exynos5433_audio_retention_data __initconst = {
    182	.regs	 = exynos5433_audio_retention_regs,
    183	.nr_regs = ARRAY_SIZE(exynos5433_audio_retention_regs),
    184	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
    185	.init	 = exynos_retention_init,
    186};
    187
    188/* PMU retention control for mmc pins can be tied to fsys pin bank */
    189static const u32 exynos5433_fsys_retention_regs[] = {
    190	EXYNOS5433_PAD_RETENTION_MMC0_OPTION,
    191	EXYNOS5433_PAD_RETENTION_MMC1_OPTION,
    192	EXYNOS5433_PAD_RETENTION_MMC2_OPTION,
    193};
    194
    195static const struct samsung_retention_data exynos5433_fsys_retention_data __initconst = {
    196	.regs	 = exynos5433_fsys_retention_regs,
    197	.nr_regs = ARRAY_SIZE(exynos5433_fsys_retention_regs),
    198	.value	 = EXYNOS_WAKEUP_FROM_LOWPWR,
    199	.init	 = exynos_retention_init,
    200};
    201
    202/*
    203 * Samsung pinctrl driver data for Exynos5433 SoC. Exynos5433 SoC includes
    204 * ten gpio/pin-mux/pinconfig controllers.
    205 */
    206static const struct samsung_pin_ctrl exynos5433_pin_ctrl[] __initconst = {
    207	{
    208		/* pin-controller instance 0 data */
    209		.pin_banks	= exynos5433_pin_banks0,
    210		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks0),
    211		.eint_wkup_init = exynos_eint_wkup_init,
    212		.suspend	= exynos_pinctrl_suspend,
    213		.resume		= exynos_pinctrl_resume,
    214		.nr_ext_resources = 1,
    215		.retention_data	= &exynos5433_retention_data,
    216	}, {
    217		/* pin-controller instance 1 data */
    218		.pin_banks	= exynos5433_pin_banks1,
    219		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks1),
    220		.eint_gpio_init = exynos_eint_gpio_init,
    221		.suspend	= exynos_pinctrl_suspend,
    222		.resume		= exynos_pinctrl_resume,
    223		.retention_data	= &exynos5433_audio_retention_data,
    224	}, {
    225		/* pin-controller instance 2 data */
    226		.pin_banks	= exynos5433_pin_banks2,
    227		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks2),
    228		.eint_gpio_init = exynos_eint_gpio_init,
    229		.suspend	= exynos_pinctrl_suspend,
    230		.resume		= exynos_pinctrl_resume,
    231		.retention_data	= &exynos5433_retention_data,
    232	}, {
    233		/* pin-controller instance 3 data */
    234		.pin_banks	= exynos5433_pin_banks3,
    235		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks3),
    236		.eint_gpio_init = exynos_eint_gpio_init,
    237		.suspend	= exynos_pinctrl_suspend,
    238		.resume		= exynos_pinctrl_resume,
    239		.retention_data	= &exynos5433_retention_data,
    240	}, {
    241		/* pin-controller instance 4 data */
    242		.pin_banks	= exynos5433_pin_banks4,
    243		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks4),
    244		.eint_gpio_init = exynos_eint_gpio_init,
    245		.suspend	= exynos_pinctrl_suspend,
    246		.resume		= exynos_pinctrl_resume,
    247		.retention_data	= &exynos5433_retention_data,
    248	}, {
    249		/* pin-controller instance 5 data */
    250		.pin_banks	= exynos5433_pin_banks5,
    251		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks5),
    252		.eint_gpio_init = exynos_eint_gpio_init,
    253		.suspend	= exynos_pinctrl_suspend,
    254		.resume		= exynos_pinctrl_resume,
    255		.retention_data	= &exynos5433_fsys_retention_data,
    256	}, {
    257		/* pin-controller instance 6 data */
    258		.pin_banks	= exynos5433_pin_banks6,
    259		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks6),
    260		.eint_gpio_init = exynos_eint_gpio_init,
    261		.suspend	= exynos_pinctrl_suspend,
    262		.resume		= exynos_pinctrl_resume,
    263		.retention_data	= &exynos5433_retention_data,
    264	}, {
    265		/* pin-controller instance 7 data */
    266		.pin_banks	= exynos5433_pin_banks7,
    267		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks7),
    268		.eint_gpio_init = exynos_eint_gpio_init,
    269		.suspend	= exynos_pinctrl_suspend,
    270		.resume		= exynos_pinctrl_resume,
    271		.retention_data	= &exynos5433_retention_data,
    272	}, {
    273		/* pin-controller instance 8 data */
    274		.pin_banks	= exynos5433_pin_banks8,
    275		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks8),
    276		.eint_gpio_init = exynos_eint_gpio_init,
    277		.suspend	= exynos_pinctrl_suspend,
    278		.resume		= exynos_pinctrl_resume,
    279		.retention_data	= &exynos5433_retention_data,
    280	}, {
    281		/* pin-controller instance 9 data */
    282		.pin_banks	= exynos5433_pin_banks9,
    283		.nr_banks	= ARRAY_SIZE(exynos5433_pin_banks9),
    284		.eint_gpio_init = exynos_eint_gpio_init,
    285		.suspend	= exynos_pinctrl_suspend,
    286		.resume		= exynos_pinctrl_resume,
    287		.retention_data	= &exynos5433_retention_data,
    288	},
    289};
    290
    291const struct samsung_pinctrl_of_match_data exynos5433_of_data __initconst = {
    292	.ctrl		= exynos5433_pin_ctrl,
    293	.num_ctrl	= ARRAY_SIZE(exynos5433_pin_ctrl),
    294};
    295
    296/* pin banks of exynos7 pin-controller - ALIVE */
    297static const struct samsung_pin_bank_data exynos7_pin_banks0[] __initconst = {
    298	/* Must start with EINTG banks, ordered by EINT group number. */
    299	EXYNOS_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
    300	EXYNOS_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
    301	EXYNOS_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
    302	EXYNOS_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
    303};
    304
    305/* pin banks of exynos7 pin-controller - BUS0 */
    306static const struct samsung_pin_bank_data exynos7_pin_banks1[] __initconst = {
    307	/* Must start with EINTG banks, ordered by EINT group number. */
    308	EXYNOS_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
    309	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpc0", 0x04),
    310	EXYNOS_PIN_BANK_EINTG(2, 0x040, "gpc1", 0x08),
    311	EXYNOS_PIN_BANK_EINTG(6, 0x060, "gpc2", 0x0c),
    312	EXYNOS_PIN_BANK_EINTG(8, 0x080, "gpc3", 0x10),
    313	EXYNOS_PIN_BANK_EINTG(4, 0x0a0, "gpd0", 0x14),
    314	EXYNOS_PIN_BANK_EINTG(6, 0x0c0, "gpd1", 0x18),
    315	EXYNOS_PIN_BANK_EINTG(8, 0x0e0, "gpd2", 0x1c),
    316	EXYNOS_PIN_BANK_EINTG(5, 0x100, "gpd4", 0x20),
    317	EXYNOS_PIN_BANK_EINTG(4, 0x120, "gpd5", 0x24),
    318	EXYNOS_PIN_BANK_EINTG(6, 0x140, "gpd6", 0x28),
    319	EXYNOS_PIN_BANK_EINTG(3, 0x160, "gpd7", 0x2c),
    320	EXYNOS_PIN_BANK_EINTG(2, 0x180, "gpd8", 0x30),
    321	EXYNOS_PIN_BANK_EINTG(2, 0x1a0, "gpg0", 0x34),
    322	EXYNOS_PIN_BANK_EINTG(4, 0x1c0, "gpg3", 0x38),
    323};
    324
    325/* pin banks of exynos7 pin-controller - NFC */
    326static const struct samsung_pin_bank_data exynos7_pin_banks2[] __initconst = {
    327	/* Must start with EINTG banks, ordered by EINT group number. */
    328	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gpj0", 0x00),
    329};
    330
    331/* pin banks of exynos7 pin-controller - TOUCH */
    332static const struct samsung_pin_bank_data exynos7_pin_banks3[] __initconst = {
    333	/* Must start with EINTG banks, ordered by EINT group number. */
    334	EXYNOS_PIN_BANK_EINTG(3, 0x000, "gpj1", 0x00),
    335};
    336
    337/* pin banks of exynos7 pin-controller - FF */
    338static const struct samsung_pin_bank_data exynos7_pin_banks4[] __initconst = {
    339	/* Must start with EINTG banks, ordered by EINT group number. */
    340	EXYNOS_PIN_BANK_EINTG(4, 0x000, "gpg4", 0x00),
    341};
    342
    343/* pin banks of exynos7 pin-controller - ESE */
    344static const struct samsung_pin_bank_data exynos7_pin_banks5[] __initconst = {
    345	/* Must start with EINTG banks, ordered by EINT group number. */
    346	EXYNOS_PIN_BANK_EINTG(5, 0x000, "gpv7", 0x00),
    347};
    348
    349/* pin banks of exynos7 pin-controller - FSYS0 */
    350static const struct samsung_pin_bank_data exynos7_pin_banks6[] __initconst = {
    351	/* Must start with EINTG banks, ordered by EINT group number. */
    352	EXYNOS_PIN_BANK_EINTG(7, 0x000, "gpr4", 0x00),
    353};
    354
    355/* pin banks of exynos7 pin-controller - FSYS1 */
    356static const struct samsung_pin_bank_data exynos7_pin_banks7[] __initconst = {
    357	/* Must start with EINTG banks, ordered by EINT group number. */
    358	EXYNOS_PIN_BANK_EINTG(4, 0x000, "gpr0", 0x00),
    359	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpr1", 0x04),
    360	EXYNOS_PIN_BANK_EINTG(5, 0x040, "gpr2", 0x08),
    361	EXYNOS_PIN_BANK_EINTG(8, 0x060, "gpr3", 0x0c),
    362};
    363
    364/* pin banks of exynos7 pin-controller - BUS1 */
    365static const struct samsung_pin_bank_data exynos7_pin_banks8[] __initconst = {
    366	/* Must start with EINTG banks, ordered by EINT group number. */
    367	EXYNOS_PIN_BANK_EINTG(8, 0x020, "gpf0", 0x00),
    368	EXYNOS_PIN_BANK_EINTG(8, 0x040, "gpf1", 0x04),
    369	EXYNOS_PIN_BANK_EINTG(4, 0x060, "gpf2", 0x08),
    370	EXYNOS_PIN_BANK_EINTG(5, 0x080, "gpf3", 0x0c),
    371	EXYNOS_PIN_BANK_EINTG(8, 0x0a0, "gpf4", 0x10),
    372	EXYNOS_PIN_BANK_EINTG(8, 0x0c0, "gpf5", 0x14),
    373	EXYNOS_PIN_BANK_EINTG(5, 0x0e0, "gpg1", 0x18),
    374	EXYNOS_PIN_BANK_EINTG(5, 0x100, "gpg2", 0x1c),
    375	EXYNOS_PIN_BANK_EINTG(6, 0x120, "gph1", 0x20),
    376	EXYNOS_PIN_BANK_EINTG(3, 0x140, "gpv6", 0x24),
    377};
    378
    379static const struct samsung_pin_bank_data exynos7_pin_banks9[] __initconst = {
    380	/* Must start with EINTG banks, ordered by EINT group number. */
    381	EXYNOS_PIN_BANK_EINTG(7, 0x000, "gpz0", 0x00),
    382	EXYNOS_PIN_BANK_EINTG(4, 0x020, "gpz1", 0x04),
    383};
    384
    385static const struct samsung_pin_ctrl exynos7_pin_ctrl[] __initconst = {
    386	{
    387		/* pin-controller instance 0 Alive data */
    388		.pin_banks	= exynos7_pin_banks0,
    389		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks0),
    390		.eint_wkup_init = exynos_eint_wkup_init,
    391	}, {
    392		/* pin-controller instance 1 BUS0 data */
    393		.pin_banks	= exynos7_pin_banks1,
    394		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks1),
    395		.eint_gpio_init = exynos_eint_gpio_init,
    396	}, {
    397		/* pin-controller instance 2 NFC data */
    398		.pin_banks	= exynos7_pin_banks2,
    399		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks2),
    400		.eint_gpio_init = exynos_eint_gpio_init,
    401	}, {
    402		/* pin-controller instance 3 TOUCH data */
    403		.pin_banks	= exynos7_pin_banks3,
    404		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks3),
    405		.eint_gpio_init = exynos_eint_gpio_init,
    406	}, {
    407		/* pin-controller instance 4 FF data */
    408		.pin_banks	= exynos7_pin_banks4,
    409		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks4),
    410		.eint_gpio_init = exynos_eint_gpio_init,
    411	}, {
    412		/* pin-controller instance 5 ESE data */
    413		.pin_banks	= exynos7_pin_banks5,
    414		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks5),
    415		.eint_gpio_init = exynos_eint_gpio_init,
    416	}, {
    417		/* pin-controller instance 6 FSYS0 data */
    418		.pin_banks	= exynos7_pin_banks6,
    419		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks6),
    420		.eint_gpio_init = exynos_eint_gpio_init,
    421	}, {
    422		/* pin-controller instance 7 FSYS1 data */
    423		.pin_banks	= exynos7_pin_banks7,
    424		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks7),
    425		.eint_gpio_init = exynos_eint_gpio_init,
    426	}, {
    427		/* pin-controller instance 8 BUS1 data */
    428		.pin_banks	= exynos7_pin_banks8,
    429		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks8),
    430		.eint_gpio_init = exynos_eint_gpio_init,
    431	}, {
    432		/* pin-controller instance 9 AUD data */
    433		.pin_banks	= exynos7_pin_banks9,
    434		.nr_banks	= ARRAY_SIZE(exynos7_pin_banks9),
    435		.eint_gpio_init = exynos_eint_gpio_init,
    436	},
    437};
    438
    439const struct samsung_pinctrl_of_match_data exynos7_of_data __initconst = {
    440	.ctrl		= exynos7_pin_ctrl,
    441	.num_ctrl	= ARRAY_SIZE(exynos7_pin_ctrl),
    442};
    443
    444/* pin banks of exynos7885 pin-controller 0 (ALIVE) */
    445static const struct samsung_pin_bank_data exynos7885_pin_banks0[] __initconst = {
    446	EXYNOS_PIN_BANK_EINTN(3, 0x000, "etc0"),
    447	EXYNOS_PIN_BANK_EINTN(3, 0x020, "etc1"),
    448	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa0", 0x00),
    449	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa1", 0x04),
    450	EXYNOS850_PIN_BANK_EINTW(8, 0x080, "gpa2", 0x08),
    451	EXYNOS850_PIN_BANK_EINTW(5, 0x0a0, "gpq0", 0x0c),
    452};
    453
    454/* pin banks of exynos7885 pin-controller 1 (DISPAUD) */
    455static const struct samsung_pin_bank_data exynos7885_pin_banks1[] __initconst = {
    456	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
    457	EXYNOS850_PIN_BANK_EINTG(4, 0x020, "gpb1", 0x04),
    458	EXYNOS850_PIN_BANK_EINTG(5, 0x040, "gpb2", 0x08),
    459};
    460
    461/* pin banks of exynos7885 pin-controller 2 (FSYS) */
    462static const struct samsung_pin_bank_data exynos7885_pin_banks2[] __initconst = {
    463	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
    464	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf2", 0x04),
    465	EXYNOS850_PIN_BANK_EINTG(6, 0x040, "gpf3", 0x08),
    466	EXYNOS850_PIN_BANK_EINTG(6, 0x060, "gpf4", 0x0c),
    467};
    468
    469/* pin banks of exynos7885 pin-controller 3 (TOP) */
    470static const struct samsung_pin_bank_data exynos7885_pin_banks3[] __initconst = {
    471	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpp0", 0x00),
    472	EXYNOS850_PIN_BANK_EINTG(3, 0x020, "gpg0", 0x04),
    473	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp1", 0x08),
    474	EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp2", 0x0c),
    475	EXYNOS850_PIN_BANK_EINTG(3, 0x080, "gpp3", 0x10),
    476	EXYNOS850_PIN_BANK_EINTG(6, 0x0a0, "gpp4", 0x14),
    477	EXYNOS850_PIN_BANK_EINTG(4, 0x0c0, "gpp5", 0x18),
    478	EXYNOS850_PIN_BANK_EINTG(5, 0x0e0, "gpp6", 0x1c),
    479	EXYNOS850_PIN_BANK_EINTG(2, 0x100, "gpp7", 0x20),
    480	EXYNOS850_PIN_BANK_EINTG(2, 0x120, "gpp8", 0x24),
    481	EXYNOS850_PIN_BANK_EINTG(8, 0x140, "gpg1", 0x28),
    482	EXYNOS850_PIN_BANK_EINTG(8, 0x160, "gpg2", 0x2c),
    483	EXYNOS850_PIN_BANK_EINTG(8, 0x180, "gpg3", 0x30),
    484	EXYNOS850_PIN_BANK_EINTG(2, 0x1a0, "gpg4", 0x34),
    485	EXYNOS850_PIN_BANK_EINTG(4, 0x1c0, "gpc0", 0x38),
    486	EXYNOS850_PIN_BANK_EINTG(8, 0x1e0, "gpc1", 0x3c),
    487	EXYNOS850_PIN_BANK_EINTG(8, 0x200, "gpc2", 0x40),
    488};
    489
    490static const struct samsung_pin_ctrl exynos7885_pin_ctrl[] __initconst = {
    491	{
    492		/* pin-controller instance 0 Alive data */
    493		.pin_banks	= exynos7885_pin_banks0,
    494		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks0),
    495		.eint_gpio_init = exynos_eint_gpio_init,
    496		.eint_wkup_init = exynos_eint_wkup_init,
    497		.suspend	= exynos_pinctrl_suspend,
    498		.resume		= exynos_pinctrl_resume,
    499	}, {
    500		/* pin-controller instance 1 DISPAUD data */
    501		.pin_banks	= exynos7885_pin_banks1,
    502		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks1),
    503	}, {
    504		/* pin-controller instance 2 FSYS data */
    505		.pin_banks	= exynos7885_pin_banks2,
    506		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks2),
    507		.eint_gpio_init = exynos_eint_gpio_init,
    508		.suspend	= exynos_pinctrl_suspend,
    509		.resume		= exynos_pinctrl_resume,
    510	}, {
    511		/* pin-controller instance 3 TOP data */
    512		.pin_banks	= exynos7885_pin_banks3,
    513		.nr_banks	= ARRAY_SIZE(exynos7885_pin_banks3),
    514		.eint_gpio_init = exynos_eint_gpio_init,
    515		.suspend	= exynos_pinctrl_suspend,
    516		.resume		= exynos_pinctrl_resume,
    517	},
    518};
    519
    520const struct samsung_pinctrl_of_match_data exynos7885_of_data __initconst = {
    521	.ctrl		= exynos7885_pin_ctrl,
    522	.num_ctrl	= ARRAY_SIZE(exynos7885_pin_ctrl),
    523};
    524
    525/* pin banks of exynos850 pin-controller 0 (ALIVE) */
    526static const struct samsung_pin_bank_data exynos850_pin_banks0[] __initconst = {
    527	/* Must start with EINTG banks, ordered by EINT group number. */
    528	EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
    529	EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
    530	EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
    531	EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
    532	EXYNOS850_PIN_BANK_EINTW(4, 0x080, "gpa4", 0x10),
    533	EXYNOS850_PIN_BANK_EINTN(3, 0x0a0, "gpq0"),
    534};
    535
    536/* pin banks of exynos850 pin-controller 1 (CMGP) */
    537static const struct samsung_pin_bank_data exynos850_pin_banks1[] __initconst = {
    538	/* Must start with EINTG banks, ordered by EINT group number. */
    539	EXYNOS850_PIN_BANK_EINTW(1, 0x000, "gpm0", 0x00),
    540	EXYNOS850_PIN_BANK_EINTW(1, 0x020, "gpm1", 0x04),
    541	EXYNOS850_PIN_BANK_EINTW(1, 0x040, "gpm2", 0x08),
    542	EXYNOS850_PIN_BANK_EINTW(1, 0x060, "gpm3", 0x0c),
    543	EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x10),
    544	EXYNOS850_PIN_BANK_EINTW(1, 0x0a0, "gpm5", 0x14),
    545	EXYNOS850_PIN_BANK_EINTW(1, 0x0c0, "gpm6", 0x18),
    546	EXYNOS850_PIN_BANK_EINTW(1, 0x0e0, "gpm7", 0x1c),
    547};
    548
    549/* pin banks of exynos850 pin-controller 2 (AUD) */
    550static const struct samsung_pin_bank_data exynos850_pin_banks2[] __initconst = {
    551	/* Must start with EINTG banks, ordered by EINT group number. */
    552	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
    553	EXYNOS850_PIN_BANK_EINTG(5, 0x020, "gpb1", 0x04),
    554};
    555
    556/* pin banks of exynos850 pin-controller 3 (HSI) */
    557static const struct samsung_pin_bank_data exynos850_pin_banks3[] __initconst = {
    558	/* Must start with EINTG banks, ordered by EINT group number. */
    559	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf2", 0x00),
    560};
    561
    562/* pin banks of exynos850 pin-controller 4 (CORE) */
    563static const struct samsung_pin_bank_data exynos850_pin_banks4[] __initconst = {
    564	/* Must start with EINTG banks, ordered by EINT group number. */
    565	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
    566	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf1", 0x04),
    567};
    568
    569/* pin banks of exynos850 pin-controller 5 (PERI) */
    570static const struct samsung_pin_bank_data exynos850_pin_banks5[] __initconst = {
    571	/* Must start with EINTG banks, ordered by EINT group number. */
    572	EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpg0", 0x00),
    573	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpp0", 0x04),
    574	EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp1", 0x08),
    575	EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp2", 0x0c),
    576	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg1", 0x10),
    577	EXYNOS850_PIN_BANK_EINTG(8, 0x0a0, "gpg2", 0x14),
    578	EXYNOS850_PIN_BANK_EINTG(1, 0x0c0, "gpg3", 0x18),
    579	EXYNOS850_PIN_BANK_EINTG(3, 0x0e0, "gpc0", 0x1c),
    580	EXYNOS850_PIN_BANK_EINTG(6, 0x100, "gpc1", 0x20),
    581};
    582
    583static const struct samsung_pin_ctrl exynos850_pin_ctrl[] __initconst = {
    584	{
    585		/* pin-controller instance 0 ALIVE data */
    586		.pin_banks	= exynos850_pin_banks0,
    587		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks0),
    588		.eint_wkup_init = exynos_eint_wkup_init,
    589	}, {
    590		/* pin-controller instance 1 CMGP data */
    591		.pin_banks	= exynos850_pin_banks1,
    592		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks1),
    593		.eint_wkup_init = exynos_eint_wkup_init,
    594	}, {
    595		/* pin-controller instance 2 AUD data */
    596		.pin_banks	= exynos850_pin_banks2,
    597		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks2),
    598	}, {
    599		/* pin-controller instance 3 HSI data */
    600		.pin_banks	= exynos850_pin_banks3,
    601		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks3),
    602		.eint_gpio_init = exynos_eint_gpio_init,
    603	}, {
    604		/* pin-controller instance 4 CORE data */
    605		.pin_banks	= exynos850_pin_banks4,
    606		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks4),
    607		.eint_gpio_init = exynos_eint_gpio_init,
    608	}, {
    609		/* pin-controller instance 5 PERI data */
    610		.pin_banks	= exynos850_pin_banks5,
    611		.nr_banks	= ARRAY_SIZE(exynos850_pin_banks5),
    612		.eint_gpio_init = exynos_eint_gpio_init,
    613	},
    614};
    615
    616const struct samsung_pinctrl_of_match_data exynos850_of_data __initconst = {
    617	.ctrl		= exynos850_pin_ctrl,
    618	.num_ctrl	= ARRAY_SIZE(exynos850_pin_ctrl),
    619};
    620
    621/* pin banks of exynosautov9 pin-controller 0 (ALIVE) */
    622static const struct samsung_pin_bank_data exynosautov9_pin_banks0[] __initconst = {
    623	EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
    624	EXYNOS850_PIN_BANK_EINTW(2, 0x020, "gpa1", 0x04),
    625	EXYNOS850_PIN_BANK_EINTN(2, 0x040, "gpq0"),
    626};
    627
    628/* pin banks of exynosautov9 pin-controller 1 (AUD) */
    629static const struct samsung_pin_bank_data exynosautov9_pin_banks1[] __initconst = {
    630	EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
    631	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpb1", 0x04),
    632	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpb2", 0x08),
    633	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpb3", 0x0C),
    634};
    635
    636/* pin banks of exynosautov9 pin-controller 2 (FSYS0) */
    637static const struct samsung_pin_bank_data exynosautov9_pin_banks2[] __initconst = {
    638	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf0", 0x00),
    639	EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf1", 0x04),
    640};
    641
    642/* pin banks of exynosautov9 pin-controller 3 (FSYS1) */
    643static const struct samsung_pin_bank_data exynosautov9_pin_banks3[] __initconst = {
    644	EXYNOS850_PIN_BANK_EINTG(6, 0x000, "gpf8", 0x00),
    645};
    646
    647/* pin banks of exynosautov9 pin-controller 4 (FSYS2) */
    648static const struct samsung_pin_bank_data exynosautov9_pin_banks4[] __initconst = {
    649	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf2", 0x00),
    650	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpf3", 0x04),
    651	EXYNOS850_PIN_BANK_EINTG(7, 0x040, "gpf4", 0x08),
    652	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpf5", 0x0C),
    653	EXYNOS850_PIN_BANK_EINTG(7, 0x080, "gpf6", 0x10),
    654};
    655
    656/* pin banks of exynosautov9 pin-controller 5 (PERIC0) */
    657static const struct samsung_pin_bank_data exynosautov9_pin_banks5[] __initconst = {
    658	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
    659	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
    660	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
    661	EXYNOS850_PIN_BANK_EINTG(5, 0x060, "gpg0", 0x0C),
    662};
    663
    664/* pin banks of exynosautov9 pin-controller 6 (PERIC1) */
    665static const struct samsung_pin_bank_data exynosautov9_pin_banks6[] __initconst = {
    666	EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp3", 0x00),
    667	EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp4", 0x04),
    668	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp5", 0x08),
    669	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpg1", 0x0C),
    670	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg2", 0x10),
    671	EXYNOS850_PIN_BANK_EINTG(4, 0x0A0, "gpg3", 0x14),
    672};
    673
    674static const struct samsung_pin_ctrl exynosautov9_pin_ctrl[] __initconst = {
    675	{
    676		/* pin-controller instance 0 ALIVE data */
    677		.pin_banks      = exynosautov9_pin_banks0,
    678		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks0),
    679		.eint_wkup_init = exynos_eint_wkup_init,
    680		.suspend        = exynos_pinctrl_suspend,
    681		.resume         = exynos_pinctrl_resume,
    682	}, {
    683		/* pin-controller instance 1 AUD data */
    684		.pin_banks      = exynosautov9_pin_banks1,
    685		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks1),
    686	}, {
    687		/* pin-controller instance 2 FSYS0 data */
    688		.pin_banks      = exynosautov9_pin_banks2,
    689		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks2),
    690		.eint_gpio_init = exynos_eint_gpio_init,
    691		.suspend        = exynos_pinctrl_suspend,
    692		.resume         = exynos_pinctrl_resume,
    693	}, {
    694		/* pin-controller instance 3 FSYS1 data */
    695		.pin_banks      = exynosautov9_pin_banks3,
    696		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks3),
    697		.eint_gpio_init = exynos_eint_gpio_init,
    698		.suspend        = exynos_pinctrl_suspend,
    699		.resume         = exynos_pinctrl_resume,
    700	}, {
    701		/* pin-controller instance 4 FSYS2 data */
    702		.pin_banks      = exynosautov9_pin_banks4,
    703		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks4),
    704		.eint_gpio_init = exynos_eint_gpio_init,
    705		.suspend        = exynos_pinctrl_suspend,
    706		.resume         = exynos_pinctrl_resume,
    707	}, {
    708		/* pin-controller instance 5 PERIC0 data */
    709		.pin_banks      = exynosautov9_pin_banks5,
    710		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks5),
    711		.eint_gpio_init = exynos_eint_gpio_init,
    712		.suspend        = exynos_pinctrl_suspend,
    713		.resume         = exynos_pinctrl_resume,
    714	}, {
    715		/* pin-controller instance 6 PERIC1 data */
    716		.pin_banks      = exynosautov9_pin_banks6,
    717		.nr_banks       = ARRAY_SIZE(exynosautov9_pin_banks6),
    718		.eint_gpio_init = exynos_eint_gpio_init,
    719		.suspend        = exynos_pinctrl_suspend,
    720		.resume         = exynos_pinctrl_resume,
    721	},
    722};
    723
    724const struct samsung_pinctrl_of_match_data exynosautov9_of_data __initconst = {
    725	.ctrl		= exynosautov9_pin_ctrl,
    726	.num_ctrl	= ARRAY_SIZE(exynosautov9_pin_ctrl),
    727};
    728
    729/*
    730 * Pinctrl driver data for Tesla FSD SoC. FSD SoC includes three
    731 * gpio/pin-mux/pinconfig controllers.
    732 */
    733
    734/* pin banks of FSD pin-controller 0 (FSYS) */
    735static const struct samsung_pin_bank_data fsd_pin_banks0[] __initconst = {
    736	EXYNOS850_PIN_BANK_EINTG(7, 0x00, "gpf0", 0x00),
    737	EXYNOS850_PIN_BANK_EINTG(8, 0x20, "gpf1", 0x04),
    738	EXYNOS850_PIN_BANK_EINTG(3, 0x40, "gpf6", 0x08),
    739	EXYNOS850_PIN_BANK_EINTG(2, 0x60, "gpf4", 0x0c),
    740	EXYNOS850_PIN_BANK_EINTG(6, 0x80, "gpf5", 0x10),
    741};
    742
    743/* pin banks of FSD pin-controller 1 (PERIC) */
    744static const struct samsung_pin_bank_data fsd_pin_banks1[] __initconst = {
    745	EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpc8", 0x00),
    746	EXYNOS850_PIN_BANK_EINTG(7, 0x020, "gpf2", 0x04),
    747	EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpf3", 0x08),
    748	EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpd0", 0x0c),
    749	EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpb0", 0x10),
    750	EXYNOS850_PIN_BANK_EINTG(8, 0x0a0, "gpb1", 0x14),
    751	EXYNOS850_PIN_BANK_EINTG(8, 0x0c0, "gpb4", 0x18),
    752	EXYNOS850_PIN_BANK_EINTG(4, 0x0e0, "gpb5", 0x1c),
    753	EXYNOS850_PIN_BANK_EINTG(8, 0x100, "gpb6", 0x20),
    754	EXYNOS850_PIN_BANK_EINTG(8, 0x120, "gpb7", 0x24),
    755	EXYNOS850_PIN_BANK_EINTG(5, 0x140, "gpd1", 0x28),
    756	EXYNOS850_PIN_BANK_EINTG(5, 0x160, "gpd2", 0x2c),
    757	EXYNOS850_PIN_BANK_EINTG(7, 0x180, "gpd3", 0x30),
    758	EXYNOS850_PIN_BANK_EINTG(8, 0x1a0, "gpg0", 0x34),
    759	EXYNOS850_PIN_BANK_EINTG(8, 0x1c0, "gpg1", 0x38),
    760	EXYNOS850_PIN_BANK_EINTG(8, 0x1e0, "gpg2", 0x3c),
    761	EXYNOS850_PIN_BANK_EINTG(8, 0x200, "gpg3", 0x40),
    762	EXYNOS850_PIN_BANK_EINTG(8, 0x220, "gpg4", 0x44),
    763	EXYNOS850_PIN_BANK_EINTG(8, 0x240, "gpg5", 0x48),
    764	EXYNOS850_PIN_BANK_EINTG(8, 0x260, "gpg6", 0x4c),
    765	EXYNOS850_PIN_BANK_EINTG(8, 0x280, "gpg7", 0x50),
    766};
    767
    768/* pin banks of FSD pin-controller 2 (PMU) */
    769static const struct samsung_pin_bank_data fsd_pin_banks2[] __initconst = {
    770	EXYNOS850_PIN_BANK_EINTN(3, 0x00, "gpq0"),
    771};
    772
    773static const struct samsung_pin_ctrl fsd_pin_ctrl[] __initconst = {
    774	{
    775		/* pin-controller instance 0 FSYS0 data */
    776		.pin_banks	= fsd_pin_banks0,
    777		.nr_banks	= ARRAY_SIZE(fsd_pin_banks0),
    778		.eint_gpio_init = exynos_eint_gpio_init,
    779		.suspend	= exynos_pinctrl_suspend,
    780		.resume		= exynos_pinctrl_resume,
    781	}, {
    782		/* pin-controller instance 1 PERIC data */
    783		.pin_banks	= fsd_pin_banks1,
    784		.nr_banks	= ARRAY_SIZE(fsd_pin_banks1),
    785		.eint_gpio_init = exynos_eint_gpio_init,
    786		.suspend	= exynos_pinctrl_suspend,
    787		.resume		= exynos_pinctrl_resume,
    788	}, {
    789		/* pin-controller instance 2 PMU data */
    790		.pin_banks	= fsd_pin_banks2,
    791		.nr_banks	= ARRAY_SIZE(fsd_pin_banks2),
    792	},
    793};
    794
    795const struct samsung_pinctrl_of_match_data fsd_of_data __initconst = {
    796	.ctrl		= fsd_pin_ctrl,
    797	.num_ctrl	= ARRAY_SIZE(fsd_pin_ctrl),
    798};