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