@@ -58,6 +58,15 @@ static const struct samsung_pin_bank_type exynos850_bank_type_alive = {
58
58
.reg_offset = { 0x00 , 0x04 , 0x08 , 0x0c , },
59
59
};
60
60
61
+ /*
62
+ * Bank type for non-alive type. Bit fields:
63
+ * CON: 4, DAT: 1, PUD: 2, DRV: 3, CONPDN: 2, PUDPDN: 2
64
+ */
65
+ static const struct samsung_pin_bank_type exynos8895_bank_type_off = {
66
+ .fld_width = { 4 , 1 , 2 , 3 , 2 , 2 , },
67
+ .reg_offset = { 0x00 , 0x04 , 0x08 , 0x0c , 0x10 , 0x14 , },
68
+ };
69
+
61
70
/* Pad retention control code for accessing PMU regmap */
62
71
static atomic_t exynos_shared_retention_refcnt ;
63
72
@@ -866,6 +875,134 @@ const struct samsung_pinctrl_of_match_data exynosautov920_of_data __initconst =
866
875
.num_ctrl = ARRAY_SIZE (exynosautov920_pin_ctrl ),
867
876
};
868
877
878
+ /* pin banks of exynos8895 pin-controller 0 (ALIVE) */
879
+ static const struct samsung_pin_bank_data exynos8895_pin_banks0 [] __initconst = {
880
+ EXYNOS_PIN_BANK_EINTW (8 , 0x020 , "gpa0" , 0x00 ),
881
+ EXYNOS_PIN_BANK_EINTW (8 , 0x040 , "gpa1" , 0x04 ),
882
+ EXYNOS_PIN_BANK_EINTW (8 , 0x060 , "gpa2" , 0x08 ),
883
+ EXYNOS_PIN_BANK_EINTW (8 , 0x080 , "gpa3" , 0x0c ),
884
+ EXYNOS_PIN_BANK_EINTW (7 , 0x0a0 , "gpa4" , 0x24 ),
885
+ };
886
+
887
+ /* pin banks of exynos8895 pin-controller 1 (ABOX) */
888
+ static const struct samsung_pin_bank_data exynos8895_pin_banks1 [] __initconst = {
889
+ EXYNOS_PIN_BANK_EINTG (8 , 0x000 , "gph0" , 0x00 ),
890
+ EXYNOS_PIN_BANK_EINTG (7 , 0x020 , "gph1" , 0x04 ),
891
+ EXYNOS_PIN_BANK_EINTG (4 , 0x040 , "gph3" , 0x08 ),
892
+ };
893
+
894
+ /* pin banks of exynos8895 pin-controller 2 (VTS) */
895
+ static const struct samsung_pin_bank_data exynos8895_pin_banks2 [] __initconst = {
896
+ EXYNOS_PIN_BANK_EINTG (3 , 0x000 , "gph2" , 0x00 ),
897
+ };
898
+
899
+ /* pin banks of exynos8895 pin-controller 3 (FSYS0) */
900
+ static const struct samsung_pin_bank_data exynos8895_pin_banks3 [] __initconst = {
901
+ EXYNOS8895_PIN_BANK_EINTG (3 , 0x000 , "gpi0" , 0x00 ),
902
+ EXYNOS8895_PIN_BANK_EINTG (8 , 0x020 , "gpi1" , 0x04 ),
903
+ };
904
+
905
+ /* pin banks of exynos8895 pin-controller 4 (FSYS1) */
906
+ static const struct samsung_pin_bank_data exynos8895_pin_banks4 [] __initconst = {
907
+ EXYNOS_PIN_BANK_EINTG (8 , 0x000 , "gpj1" , 0x00 ),
908
+ EXYNOS_PIN_BANK_EINTG (7 , 0x020 , "gpj0" , 0x04 ),
909
+ };
910
+
911
+ /* pin banks of exynos8895 pin-controller 5 (BUSC) */
912
+ static const struct samsung_pin_bank_data exynos8895_pin_banks5 [] __initconst = {
913
+ EXYNOS_PIN_BANK_EINTG (2 , 0x000 , "gpb2" , 0x00 ),
914
+ };
915
+
916
+ /* pin banks of exynos8895 pin-controller 6 (PERIC0) */
917
+ static const struct samsung_pin_bank_data exynos8895_pin_banks6 [] __initconst = {
918
+ EXYNOS_PIN_BANK_EINTG (8 , 0x000 , "gpd0" , 0x00 ),
919
+ EXYNOS_PIN_BANK_EINTG (8 , 0x020 , "gpd1" , 0x04 ),
920
+ EXYNOS_PIN_BANK_EINTG (4 , 0x040 , "gpd2" , 0x08 ),
921
+ EXYNOS_PIN_BANK_EINTG (5 , 0x060 , "gpd3" , 0x0C ),
922
+ EXYNOS_PIN_BANK_EINTG (4 , 0x080 , "gpb1" , 0x10 ),
923
+ EXYNOS_PIN_BANK_EINTG (8 , 0x0a0 , "gpe7" , 0x14 ),
924
+ EXYNOS_PIN_BANK_EINTG (8 , 0x0c0 , "gpf1" , 0x18 ),
925
+ };
926
+
927
+ /* pin banks of exynos8895 pin-controller 7 (PERIC1) */
928
+ static const struct samsung_pin_bank_data exynos8895_pin_banks7 [] __initconst = {
929
+ EXYNOS_PIN_BANK_EINTG (3 , 0x000 , "gpb0" , 0x00 ),
930
+ EXYNOS_PIN_BANK_EINTG (5 , 0x020 , "gpc0" , 0x04 ),
931
+ EXYNOS_PIN_BANK_EINTG (5 , 0x040 , "gpc1" , 0x08 ),
932
+ EXYNOS_PIN_BANK_EINTG (8 , 0x060 , "gpc2" , 0x0C ),
933
+ EXYNOS_PIN_BANK_EINTG (8 , 0x080 , "gpc3" , 0x10 ),
934
+ EXYNOS_PIN_BANK_EINTG (4 , 0x0a0 , "gpk0" , 0x14 ),
935
+ EXYNOS_PIN_BANK_EINTG (8 , 0x0c0 , "gpe5" , 0x18 ),
936
+ EXYNOS_PIN_BANK_EINTG (8 , 0x0e0 , "gpe6" , 0x1C ),
937
+ EXYNOS_PIN_BANK_EINTG (8 , 0x100 , "gpe2" , 0x20 ),
938
+ EXYNOS_PIN_BANK_EINTG (8 , 0x120 , "gpe3" , 0x24 ),
939
+ EXYNOS_PIN_BANK_EINTG (8 , 0x140 , "gpe4" , 0x28 ),
940
+ EXYNOS_PIN_BANK_EINTG (4 , 0x160 , "gpf0" , 0x2C ),
941
+ EXYNOS_PIN_BANK_EINTG (8 , 0x180 , "gpe1" , 0x30 ),
942
+ EXYNOS_PIN_BANK_EINTG (2 , 0x1a0 , "gpg0" , 0x34 ),
943
+ };
944
+
945
+ static const struct samsung_pin_ctrl exynos8895_pin_ctrl [] __initconst = {
946
+ {
947
+ /* pin-controller instance 0 ALIVE data */
948
+ .pin_banks = exynos8895_pin_banks0 ,
949
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks0 ),
950
+ .eint_gpio_init = exynos_eint_gpio_init ,
951
+ .eint_wkup_init = exynos_eint_wkup_init ,
952
+ .suspend = exynos_pinctrl_suspend ,
953
+ .resume = exynos_pinctrl_resume ,
954
+ }, {
955
+ /* pin-controller instance 1 ABOX data */
956
+ .pin_banks = exynos8895_pin_banks1 ,
957
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks1 ),
958
+ }, {
959
+ /* pin-controller instance 2 VTS data */
960
+ .pin_banks = exynos8895_pin_banks2 ,
961
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks2 ),
962
+ .eint_gpio_init = exynos_eint_gpio_init ,
963
+ }, {
964
+ /* pin-controller instance 3 FSYS0 data */
965
+ .pin_banks = exynos8895_pin_banks3 ,
966
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks3 ),
967
+ .eint_gpio_init = exynos_eint_gpio_init ,
968
+ .suspend = exynos_pinctrl_suspend ,
969
+ .resume = exynos_pinctrl_resume ,
970
+ }, {
971
+ /* pin-controller instance 4 FSYS1 data */
972
+ .pin_banks = exynos8895_pin_banks4 ,
973
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks4 ),
974
+ .eint_gpio_init = exynos_eint_gpio_init ,
975
+ .suspend = exynos_pinctrl_suspend ,
976
+ .resume = exynos_pinctrl_resume ,
977
+ }, {
978
+ /* pin-controller instance 5 BUSC data */
979
+ .pin_banks = exynos8895_pin_banks5 ,
980
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks5 ),
981
+ .eint_gpio_init = exynos_eint_gpio_init ,
982
+ .suspend = exynos_pinctrl_suspend ,
983
+ .resume = exynos_pinctrl_resume ,
984
+ }, {
985
+ /* pin-controller instance 6 PERIC0 data */
986
+ .pin_banks = exynos8895_pin_banks6 ,
987
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks6 ),
988
+ .eint_gpio_init = exynos_eint_gpio_init ,
989
+ .suspend = exynos_pinctrl_suspend ,
990
+ .resume = exynos_pinctrl_resume ,
991
+ }, {
992
+ /* pin-controller instance 7 PERIC1 data */
993
+ .pin_banks = exynos8895_pin_banks7 ,
994
+ .nr_banks = ARRAY_SIZE (exynos8895_pin_banks7 ),
995
+ .eint_gpio_init = exynos_eint_gpio_init ,
996
+ .suspend = exynos_pinctrl_suspend ,
997
+ .resume = exynos_pinctrl_resume ,
998
+ },
999
+ };
1000
+
1001
+ const struct samsung_pinctrl_of_match_data exynos8895_of_data __initconst = {
1002
+ .ctrl = exynos8895_pin_ctrl ,
1003
+ .num_ctrl = ARRAY_SIZE (exynos8895_pin_ctrl ),
1004
+ };
1005
+
869
1006
/*
870
1007
* Pinctrl driver data for Tesla FSD SoC. FSD SoC includes three
871
1008
* gpio/pin-mux/pinconfig controllers.
0 commit comments