Skip to content

Commit 2193074

Browse files
BotchedRPRkrzk
authored andcommitted
pinctrl: samsung: Add Exynos 990 SoC pinctrl configuration
Add SoC pinctrl configuration for the Exynos 990. The bank types used are the same as Exynos 850, so we can reuse its macros. Signed-off-by: Igor Belwon <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Krzysztof Kozlowski <[email protected]>
1 parent e690012 commit 2193074

File tree

3 files changed

+143
-0
lines changed

3 files changed

+143
-0
lines changed

drivers/pinctrl/samsung/pinctrl-exynos-arm64.c

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,146 @@ const struct samsung_pinctrl_of_match_data exynos850_of_data __initconst = {
627627
.num_ctrl = ARRAY_SIZE(exynos850_pin_ctrl),
628628
};
629629

630+
/* pin banks of exynos990 pin-controller 0 (ALIVE) */
631+
static struct samsung_pin_bank_data exynos990_pin_banks0[] = {
632+
/* Must start with EINTG banks, ordered by EINT group number. */
633+
EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
634+
EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa1", 0x04),
635+
EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa2", 0x08),
636+
EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa3", 0x0c),
637+
EXYNOS850_PIN_BANK_EINTW(2, 0x080, "gpa4", 0x10),
638+
EXYNOS850_PIN_BANK_EINTN(7, 0x0A0, "gpq0"),
639+
};
640+
641+
/* pin banks of exynos990 pin-controller 1 (CMGP) */
642+
static struct samsung_pin_bank_data exynos990_pin_banks1[] = {
643+
/* Must start with EINTG banks, ordered by EINT group number. */
644+
EXYNOS850_PIN_BANK_EINTN(1, 0x000, "gpm0"),
645+
EXYNOS850_PIN_BANK_EINTN(1, 0x020, "gpm1"),
646+
EXYNOS850_PIN_BANK_EINTN(1, 0x040, "gpm2"),
647+
EXYNOS850_PIN_BANK_EINTN(1, 0x060, "gpm3"),
648+
EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x00),
649+
EXYNOS850_PIN_BANK_EINTW(1, 0x0A0, "gpm5", 0x04),
650+
EXYNOS850_PIN_BANK_EINTW(1, 0x0C0, "gpm6", 0x08),
651+
EXYNOS850_PIN_BANK_EINTW(1, 0x0E0, "gpm7", 0x0c),
652+
EXYNOS850_PIN_BANK_EINTW(1, 0x100, "gpm8", 0x10),
653+
EXYNOS850_PIN_BANK_EINTW(1, 0x120, "gpm9", 0x14),
654+
EXYNOS850_PIN_BANK_EINTW(1, 0x140, "gpm10", 0x18),
655+
EXYNOS850_PIN_BANK_EINTW(1, 0x160, "gpm11", 0x1c),
656+
EXYNOS850_PIN_BANK_EINTW(1, 0x180, "gpm12", 0x20),
657+
EXYNOS850_PIN_BANK_EINTW(1, 0x1A0, "gpm13", 0x24),
658+
EXYNOS850_PIN_BANK_EINTW(1, 0x1C0, "gpm14", 0x28),
659+
EXYNOS850_PIN_BANK_EINTW(1, 0x1E0, "gpm15", 0x2c),
660+
EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm16", 0x30),
661+
EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm17", 0x34),
662+
EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm18", 0x38),
663+
EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm19", 0x3c),
664+
EXYNOS850_PIN_BANK_EINTW(1, 0x280, "gpm20", 0x40),
665+
EXYNOS850_PIN_BANK_EINTW(1, 0x2A0, "gpm21", 0x44),
666+
EXYNOS850_PIN_BANK_EINTW(1, 0x2C0, "gpm22", 0x48),
667+
EXYNOS850_PIN_BANK_EINTW(1, 0x2E0, "gpm23", 0x4c),
668+
EXYNOS850_PIN_BANK_EINTW(1, 0x300, "gpm24", 0x50),
669+
EXYNOS850_PIN_BANK_EINTW(1, 0x320, "gpm25", 0x54),
670+
EXYNOS850_PIN_BANK_EINTW(1, 0x340, "gpm26", 0x58),
671+
EXYNOS850_PIN_BANK_EINTW(1, 0x360, "gpm27", 0x5c),
672+
EXYNOS850_PIN_BANK_EINTW(1, 0x380, "gpm28", 0x60),
673+
EXYNOS850_PIN_BANK_EINTW(1, 0x3A0, "gpm29", 0x64),
674+
EXYNOS850_PIN_BANK_EINTW(1, 0x3C0, "gpm30", 0x68),
675+
EXYNOS850_PIN_BANK_EINTW(1, 0x3E0, "gpm31", 0x6c),
676+
EXYNOS850_PIN_BANK_EINTW(1, 0x400, "gpm32", 0x70),
677+
EXYNOS850_PIN_BANK_EINTW(1, 0x420, "gpm33", 0x74),
678+
679+
};
680+
681+
/* pin banks of exynos990 pin-controller 2 (HSI1) */
682+
static struct samsung_pin_bank_data exynos990_pin_banks2[] = {
683+
/* Must start with EINTG banks, ordered by EINT group number. */
684+
EXYNOS850_PIN_BANK_EINTG(4, 0x000, "gpf0", 0x00),
685+
EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf1", 0x04),
686+
EXYNOS850_PIN_BANK_EINTG(3, 0x040, "gpf2", 0x08),
687+
};
688+
689+
/* pin banks of exynos990 pin-controller 3 (HSI2) */
690+
static struct samsung_pin_bank_data exynos990_pin_banks3[] = {
691+
/* Must start with EINTG banks, ordered by EINT group number. */
692+
EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpf3", 0x00),
693+
};
694+
695+
/* pin banks of exynos990 pin-controller 4 (PERIC0) */
696+
static struct samsung_pin_bank_data exynos990_pin_banks4[] = {
697+
/* Must start with EINTG banks, ordered by EINT group number. */
698+
EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
699+
EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
700+
EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
701+
EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpp3", 0x0C),
702+
EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpp4", 0x10),
703+
EXYNOS850_PIN_BANK_EINTG(2, 0x0A0, "gpg0", 0x14),
704+
};
705+
706+
/* pin banks of exynos990 pin-controller 5 (PERIC1) */
707+
static struct samsung_pin_bank_data exynos990_pin_banks5[] = {
708+
/* Must start with EINTG banks, ordered by EINT group number. */
709+
EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp5", 0x00),
710+
EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp6", 0x04),
711+
EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp7", 0x08),
712+
EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpp8", 0x0C),
713+
EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpp9", 0x10),
714+
EXYNOS850_PIN_BANK_EINTG(6, 0x0A0, "gpc0", 0x14),
715+
EXYNOS850_PIN_BANK_EINTG(4, 0x0C0, "gpg1", 0x18),
716+
EXYNOS850_PIN_BANK_EINTG(8, 0x0E0, "gpb0", 0x1C),
717+
EXYNOS850_PIN_BANK_EINTG(8, 0x100, "gpb1", 0x20),
718+
EXYNOS850_PIN_BANK_EINTG(8, 0x120, "gpb2", 0x24),
719+
};
720+
721+
/* pin banks of exynos990 pin-controller 6 (VTS) */
722+
static struct samsung_pin_bank_data exynos990_pin_banks6[] = {
723+
/* Must start with EINTG banks, ordered by EINT group number. */
724+
EXYNOS850_PIN_BANK_EINTG(7, 0x000, "gpv0", 0x00),
725+
};
726+
727+
static const struct samsung_pin_ctrl exynos990_pin_ctrl[] __initconst = {
728+
{
729+
/* pin-controller instance 0 ALIVE data */
730+
.pin_banks = exynos990_pin_banks0,
731+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks0),
732+
.eint_wkup_init = exynos_eint_wkup_init,
733+
}, {
734+
/* pin-controller instance 1 CMGP data */
735+
.pin_banks = exynos990_pin_banks1,
736+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks1),
737+
.eint_wkup_init = exynos_eint_wkup_init,
738+
}, {
739+
/* pin-controller instance 2 HSI1 data */
740+
.pin_banks = exynos990_pin_banks2,
741+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks2),
742+
.eint_gpio_init = exynos_eint_gpio_init,
743+
}, {
744+
/* pin-controller instance 3 HSI2 data */
745+
.pin_banks = exynos990_pin_banks3,
746+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks3),
747+
.eint_gpio_init = exynos_eint_gpio_init,
748+
}, {
749+
/* pin-controller instance 4 PERIC0 data */
750+
.pin_banks = exynos990_pin_banks4,
751+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks4),
752+
.eint_gpio_init = exynos_eint_gpio_init,
753+
}, {
754+
/* pin-controller instance 5 PERIC1 data */
755+
.pin_banks = exynos990_pin_banks5,
756+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks5),
757+
.eint_gpio_init = exynos_eint_gpio_init,
758+
}, {
759+
/* pin-controller instance 6 VTS data */
760+
.pin_banks = exynos990_pin_banks6,
761+
.nr_banks = ARRAY_SIZE(exynos990_pin_banks6),
762+
},
763+
};
764+
765+
const struct samsung_pinctrl_of_match_data exynos990_of_data __initconst = {
766+
.ctrl = exynos990_pin_ctrl,
767+
.num_ctrl = ARRAY_SIZE(exynos990_pin_ctrl),
768+
};
769+
630770
/* pin banks of exynosautov9 pin-controller 0 (ALIVE) */
631771
static const struct samsung_pin_bank_data exynosautov9_pin_banks0[] __initconst = {
632772
EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),

drivers/pinctrl/samsung/pinctrl-samsung.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,8 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
14791479
.data = &exynos850_of_data },
14801480
{ .compatible = "samsung,exynos8895-pinctrl",
14811481
.data = &exynos8895_of_data },
1482+
{ .compatible = "samsung,exynos990-pinctrl",
1483+
.data = &exynos990_of_data },
14821484
{ .compatible = "samsung,exynosautov9-pinctrl",
14831485
.data = &exynosautov9_of_data },
14841486
{ .compatible = "samsung,exynosautov920-pinctrl",

drivers/pinctrl/samsung/pinctrl-samsung.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ extern const struct samsung_pinctrl_of_match_data exynos7_of_data;
385385
extern const struct samsung_pinctrl_of_match_data exynos7885_of_data;
386386
extern const struct samsung_pinctrl_of_match_data exynos850_of_data;
387387
extern const struct samsung_pinctrl_of_match_data exynos8895_of_data;
388+
extern const struct samsung_pinctrl_of_match_data exynos990_of_data;
388389
extern const struct samsung_pinctrl_of_match_data exynosautov9_of_data;
389390
extern const struct samsung_pinctrl_of_match_data exynosautov920_of_data;
390391
extern const struct samsung_pinctrl_of_match_data fsd_of_data;

0 commit comments

Comments
 (0)