aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/uniphier
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-02 15:30:39 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-02 15:30:39 -0500
commitbc9d8c20ffb47e64a41a4716a06d37cdf88fcc42 (patch)
treec411e0deeac6142b44693f9b6235b7193807c494 /drivers/pinctrl/uniphier
parent9ff3ca58b0f99475f269cd6faf4ab1b194243b3f (diff)
parentd99c8053fc2473115f506782822cb7c33c687513 (diff)
Merge tag 'pinctrl-v4.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij: "This is the big bulk of pin control changes for the v4.4 kernel development cycle. Development pace is high in pin control again this merge window. 28 contributors, 83 patches. It hits a few sites outside the pin control subsystem: - Device tree bindings in Documentation (as usual) - MAINTAINERS - drivers/base/* for the "init" state handling by Doug Anderson. This has been ACKed by Greg. - drivers/usb/renesas_usbhs/rcar2.c, for a dependent Renesas change in the USB subsystem. This has been ACKed by both Greg and Felipe. - arch/arm/boot/dts/sama5d2.dtsi - this should ideally have gone through the ARM SoC tree but ended up here. This time I am using Geert Uytterhoeven as submaintainer for SH PFC since the are three-four people working in parallel with new Renesas ASICs. Summary of changes: Infrastructure: - Doug Anderson wrote a patch adding an "init" state different from the "default" state for pin control state handling in the core framework. This is applied before the driver's probe() call if defined and takes precedence over "default". If both are defined, "init" will be applied *before* probe() and "default" will be applied *after* probe(). Significant subdriver improvements: - SH PFC is switched to getting GPIO ranges from the device tree ranges property on DT platforms. - Got rid of CONFIG_ARCH_SHMOBILE_LEGACY, we are all modernized. - Got rid of SH PFC hardcoded IRQ numbers. - Allwinner sunxi external interrupt through the "r" controller. - Moved the Cygnus driver to use DT-provided GPIO ranges. New drivers: - Atmel PIO4 pin controller for the SAMA4D2 family New subdrivers: - Rockchip RK3036 subdriver - Renesas SH PFC R8A7795 subdriver - Allwinner sunxi A83T PIO subdriver - Freescale i.MX7d iomux lpsr subdriver - Marvell Berlin BG4CT subdriver - SiRF Atlas 7 step B SoC subdriver - Intel Broxton SoC subdriver Apart from this, the usual slew if syntactic and semantic fixes" * tag 'pinctrl-v4.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (81 commits) pinctrl: pinconf: remove needless loop pinctrl: uniphier: guard uniphier directory with CONFIG_PINCTRL_UNIPHIER pinctrl: zynq: fix UTF-8 errors pinctrl: zynq: Initialize early pinctrl: at91: add missing of_node_put pinctrl: tegra-xusb: Correct lane mux options pinctrl: intel: Add Intel Broxton pin controller support pinctrl: intel: Allow requesting pins which are in ACPI mode as GPIOs pinctrl: intel: Add support for multiple GPIO chips sharing the interrupt drivers/pinctrl: Add the concept of an "init" state pinctrl: uniphier: set input-enable before pin-muxing pinctrl: cygnus: Add new compatible string for gpio controller driver pinctrl: cygnus: Remove GPIO to Pinctrl pin mapping from driver pinctrl: cygnus: Optional DT property to support pin mappings pinctrl: sunxi: Add irq pinmuxing to sun6i "r" pincontroller pinctrl: sunxi: Fix irq_of_xlate for the r_pio pinctrl block pinctrl: sh-pfc: Remove obsolete r8a7778 platform_device_id entry pinctrl: sh-pfc: Remove obsolete r8a7779 platform_device_id entry pinctrl: sh-pfc: Stop including <linux/platform_data/gpio-rcar.h> usb: renesas_usbhs: Remove unneeded #include <linux/platform_data/gpio-rcar.h> ...
Diffstat (limited to 'drivers/pinctrl/uniphier')
-rw-r--r--drivers/pinctrl/uniphier/Kconfig14
-rw-r--r--drivers/pinctrl/uniphier/Makefile2
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c5
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c5
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c11
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c5
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c5
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-proxstream2.c5
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-core.c10
9 files changed, 51 insertions, 11 deletions
diff --git a/drivers/pinctrl/uniphier/Kconfig b/drivers/pinctrl/uniphier/Kconfig
index eab23ef9ddbf..ad907072e09f 100644
--- a/drivers/pinctrl/uniphier/Kconfig
+++ b/drivers/pinctrl/uniphier/Kconfig
@@ -1,32 +1,32 @@
1if ARCH_UNIPHIER 1if ARCH_UNIPHIER
2 2
3config PINCTRL_UNIPHIER_CORE 3config PINCTRL_UNIPHIER
4 bool 4 bool
5 select PINMUX 5 select PINMUX
6 select GENERIC_PINCONF 6 select GENERIC_PINCONF
7 7
8config PINCTRL_UNIPHIER_PH1_LD4 8config PINCTRL_UNIPHIER_PH1_LD4
9 tristate "UniPhier PH1-LD4 SoC pinctrl driver" 9 tristate "UniPhier PH1-LD4 SoC pinctrl driver"
10 select PINCTRL_UNIPHIER_CORE 10 select PINCTRL_UNIPHIER
11 11
12config PINCTRL_UNIPHIER_PH1_PRO4 12config PINCTRL_UNIPHIER_PH1_PRO4
13 tristate "UniPhier PH1-Pro4 SoC pinctrl driver" 13 tristate "UniPhier PH1-Pro4 SoC pinctrl driver"
14 select PINCTRL_UNIPHIER_CORE 14 select PINCTRL_UNIPHIER
15 15
16config PINCTRL_UNIPHIER_PH1_SLD8 16config PINCTRL_UNIPHIER_PH1_SLD8
17 tristate "UniPhier PH1-sLD8 SoC pinctrl driver" 17 tristate "UniPhier PH1-sLD8 SoC pinctrl driver"
18 select PINCTRL_UNIPHIER_CORE 18 select PINCTRL_UNIPHIER
19 19
20config PINCTRL_UNIPHIER_PH1_PRO5 20config PINCTRL_UNIPHIER_PH1_PRO5
21 tristate "UniPhier PH1-Pro5 SoC pinctrl driver" 21 tristate "UniPhier PH1-Pro5 SoC pinctrl driver"
22 select PINCTRL_UNIPHIER_CORE 22 select PINCTRL_UNIPHIER
23 23
24config PINCTRL_UNIPHIER_PROXSTREAM2 24config PINCTRL_UNIPHIER_PROXSTREAM2
25 tristate "UniPhier ProXstream2 SoC pinctrl driver" 25 tristate "UniPhier ProXstream2 SoC pinctrl driver"
26 select PINCTRL_UNIPHIER_CORE 26 select PINCTRL_UNIPHIER
27 27
28config PINCTRL_UNIPHIER_PH1_LD6B 28config PINCTRL_UNIPHIER_PH1_LD6B
29 tristate "UniPhier PH1-LD6b SoC pinctrl driver" 29 tristate "UniPhier PH1-LD6b SoC pinctrl driver"
30 select PINCTRL_UNIPHIER_CORE 30 select PINCTRL_UNIPHIER
31 31
32endif 32endif
diff --git a/drivers/pinctrl/uniphier/Makefile b/drivers/pinctrl/uniphier/Makefile
index e215b1097297..e7ce9670306c 100644
--- a/drivers/pinctrl/uniphier/Makefile
+++ b/drivers/pinctrl/uniphier/Makefile
@@ -1,4 +1,4 @@
1obj-$(CONFIG_PINCTRL_UNIPHIER_CORE) += pinctrl-uniphier-core.o 1obj-y += pinctrl-uniphier-core.o
2 2
3obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_LD4) += pinctrl-ph1-ld4.o 3obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_LD4) += pinctrl-ph1-ld4.o
4obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_PRO4) += pinctrl-ph1-pro4.o 4obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_PRO4) += pinctrl-ph1-pro4.o
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c b/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c
index 7beb87e8f499..a7056dccfa53 100644
--- a/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c
+++ b/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c
@@ -537,6 +537,8 @@ static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0}; 537 0, 0};
538static const unsigned nand_cs1_pins[] = {22, 23}; 538static const unsigned nand_cs1_pins[] = {22, 23};
539static const unsigned nand_cs1_muxvals[] = {0, 0}; 539static const unsigned nand_cs1_muxvals[] = {0, 0};
540static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
541static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
540static const unsigned uart0_pins[] = {85, 88}; 542static const unsigned uart0_pins[] = {85, 88};
541static const unsigned uart0_muxvals[] = {1, 1}; 543static const unsigned uart0_muxvals[] = {1, 1};
542static const unsigned uart1_pins[] = {155, 156}; 544static const unsigned uart1_pins[] = {155, 156};
@@ -619,6 +621,7 @@ static const struct uniphier_pinctrl_group ph1_ld4_groups[] = {
619 UNIPHIER_PINCTRL_GROUP(i2c3), 621 UNIPHIER_PINCTRL_GROUP(i2c3),
620 UNIPHIER_PINCTRL_GROUP(nand), 622 UNIPHIER_PINCTRL_GROUP(nand),
621 UNIPHIER_PINCTRL_GROUP(nand_cs1), 623 UNIPHIER_PINCTRL_GROUP(nand_cs1),
624 UNIPHIER_PINCTRL_GROUP(sd),
622 UNIPHIER_PINCTRL_GROUP(uart0), 625 UNIPHIER_PINCTRL_GROUP(uart0),
623 UNIPHIER_PINCTRL_GROUP(uart1), 626 UNIPHIER_PINCTRL_GROUP(uart1),
624 UNIPHIER_PINCTRL_GROUP(uart1b), 627 UNIPHIER_PINCTRL_GROUP(uart1b),
@@ -776,6 +779,7 @@ static const char * const i2c1_groups[] = {"i2c1"};
776static const char * const i2c2_groups[] = {"i2c2"}; 779static const char * const i2c2_groups[] = {"i2c2"};
777static const char * const i2c3_groups[] = {"i2c3"}; 780static const char * const i2c3_groups[] = {"i2c3"};
778static const char * const nand_groups[] = {"nand", "nand_cs1"}; 781static const char * const nand_groups[] = {"nand", "nand_cs1"};
782static const char * const sd_groups[] = {"sd"};
779static const char * const uart0_groups[] = {"uart0"}; 783static const char * const uart0_groups[] = {"uart0"};
780static const char * const uart1_groups[] = {"uart1", "uart1b"}; 784static const char * const uart1_groups[] = {"uart1", "uart1b"};
781static const char * const uart2_groups[] = {"uart2"}; 785static const char * const uart2_groups[] = {"uart2"};
@@ -831,6 +835,7 @@ static const struct uniphier_pinmux_function ph1_ld4_functions[] = {
831 UNIPHIER_PINMUX_FUNCTION(i2c2), 835 UNIPHIER_PINMUX_FUNCTION(i2c2),
832 UNIPHIER_PINMUX_FUNCTION(i2c3), 836 UNIPHIER_PINMUX_FUNCTION(i2c3),
833 UNIPHIER_PINMUX_FUNCTION(nand), 837 UNIPHIER_PINMUX_FUNCTION(nand),
838 UNIPHIER_PINMUX_FUNCTION(sd),
834 UNIPHIER_PINMUX_FUNCTION(uart0), 839 UNIPHIER_PINMUX_FUNCTION(uart0),
835 UNIPHIER_PINMUX_FUNCTION(uart1), 840 UNIPHIER_PINMUX_FUNCTION(uart1),
836 UNIPHIER_PINMUX_FUNCTION(uart2), 841 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c b/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c
index 9720e697fbc1..1824831bb4da 100644
--- a/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c
+++ b/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c
@@ -761,6 +761,8 @@ static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 0, 0}; 761 0, 0};
762static const unsigned nand_cs1_pins[] = {37, 38}; 762static const unsigned nand_cs1_pins[] = {37, 38};
763static const unsigned nand_cs1_muxvals[] = {0, 0}; 763static const unsigned nand_cs1_muxvals[] = {0, 0};
764static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
765static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
764static const unsigned uart0_pins[] = {135, 136}; 766static const unsigned uart0_pins[] = {135, 136};
765static const unsigned uart0_muxvals[] = {3, 3}; 767static const unsigned uart0_muxvals[] = {3, 3};
766static const unsigned uart0b_pins[] = {11, 12}; 768static const unsigned uart0b_pins[] = {11, 12};
@@ -866,6 +868,7 @@ static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = {
866 UNIPHIER_PINCTRL_GROUP(i2c3), 868 UNIPHIER_PINCTRL_GROUP(i2c3),
867 UNIPHIER_PINCTRL_GROUP(nand), 869 UNIPHIER_PINCTRL_GROUP(nand),
868 UNIPHIER_PINCTRL_GROUP(nand_cs1), 870 UNIPHIER_PINCTRL_GROUP(nand_cs1),
871 UNIPHIER_PINCTRL_GROUP(sd),
869 UNIPHIER_PINCTRL_GROUP(uart0), 872 UNIPHIER_PINCTRL_GROUP(uart0),
870 UNIPHIER_PINCTRL_GROUP(uart0b), 873 UNIPHIER_PINCTRL_GROUP(uart0b),
871 UNIPHIER_PINCTRL_GROUP(uart1), 874 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1136,6 +1139,7 @@ static const char * const i2c1_groups[] = {"i2c1"};
1136static const char * const i2c2_groups[] = {"i2c2"}; 1139static const char * const i2c2_groups[] = {"i2c2"};
1137static const char * const i2c3_groups[] = {"i2c3"}; 1140static const char * const i2c3_groups[] = {"i2c3"};
1138static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1141static const char * const nand_groups[] = {"nand", "nand_cs1"};
1142static const char * const sd_groups[] = {"sd"};
1139static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1143static const char * const uart0_groups[] = {"uart0", "uart0b"};
1140static const char * const uart1_groups[] = {"uart1", "uart1b"}; 1144static const char * const uart1_groups[] = {"uart1", "uart1b"};
1141static const char * const uart2_groups[] = {"uart2", "uart2b"}; 1145static const char * const uart2_groups[] = {"uart2", "uart2b"};
@@ -1219,6 +1223,7 @@ static const struct uniphier_pinmux_function ph1_ld6b_functions[] = {
1219 UNIPHIER_PINMUX_FUNCTION(i2c2), 1223 UNIPHIER_PINMUX_FUNCTION(i2c2),
1220 UNIPHIER_PINMUX_FUNCTION(i2c3), 1224 UNIPHIER_PINMUX_FUNCTION(i2c3),
1221 UNIPHIER_PINMUX_FUNCTION(nand), 1225 UNIPHIER_PINMUX_FUNCTION(nand),
1226 UNIPHIER_PINMUX_FUNCTION(sd),
1222 UNIPHIER_PINMUX_FUNCTION(uart0), 1227 UNIPHIER_PINMUX_FUNCTION(uart0),
1223 UNIPHIER_PINMUX_FUNCTION(uart1), 1228 UNIPHIER_PINMUX_FUNCTION(uart1),
1224 UNIPHIER_PINMUX_FUNCTION(uart2), 1229 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c b/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c
index 96921e40da5f..ec8e92dfaf8c 100644
--- a/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c
+++ b/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c
@@ -1031,6 +1031,11 @@ static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1031 0, 0}; 1031 0, 0};
1032static const unsigned nand_cs1_pins[] = {131, 132}; 1032static const unsigned nand_cs1_pins[] = {131, 132};
1033static const unsigned nand_cs1_muxvals[] = {1, 1}; 1033static const unsigned nand_cs1_muxvals[] = {1, 1};
1034static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158};
1035static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
1036static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
1037 327};
1038static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
1034static const unsigned uart0_pins[] = {127, 128}; 1039static const unsigned uart0_pins[] = {127, 128};
1035static const unsigned uart0_muxvals[] = {0, 0}; 1040static const unsigned uart0_muxvals[] = {0, 0};
1036static const unsigned uart1_pins[] = {129, 130}; 1041static const unsigned uart1_pins[] = {129, 130};
@@ -1140,6 +1145,8 @@ static const struct uniphier_pinctrl_group ph1_pro4_groups[] = {
1140 UNIPHIER_PINCTRL_GROUP(i2c6), 1145 UNIPHIER_PINCTRL_GROUP(i2c6),
1141 UNIPHIER_PINCTRL_GROUP(nand), 1146 UNIPHIER_PINCTRL_GROUP(nand),
1142 UNIPHIER_PINCTRL_GROUP(nand_cs1), 1147 UNIPHIER_PINCTRL_GROUP(nand_cs1),
1148 UNIPHIER_PINCTRL_GROUP(sd),
1149 UNIPHIER_PINCTRL_GROUP(sd1),
1143 UNIPHIER_PINCTRL_GROUP(uart0), 1150 UNIPHIER_PINCTRL_GROUP(uart0),
1144 UNIPHIER_PINCTRL_GROUP(uart1), 1151 UNIPHIER_PINCTRL_GROUP(uart1),
1145 UNIPHIER_PINCTRL_GROUP(uart2), 1152 UNIPHIER_PINCTRL_GROUP(uart2),
@@ -1412,6 +1419,8 @@ static const char * const i2c2_groups[] = {"i2c2"};
1412static const char * const i2c3_groups[] = {"i2c3"}; 1419static const char * const i2c3_groups[] = {"i2c3"};
1413static const char * const i2c6_groups[] = {"i2c6"}; 1420static const char * const i2c6_groups[] = {"i2c6"};
1414static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1421static const char * const nand_groups[] = {"nand", "nand_cs1"};
1422static const char * const sd_groups[] = {"sd"};
1423static const char * const sd1_groups[] = {"sd1"};
1415static const char * const uart0_groups[] = {"uart0"}; 1424static const char * const uart0_groups[] = {"uart0"};
1416static const char * const uart1_groups[] = {"uart1"}; 1425static const char * const uart1_groups[] = {"uart1"};
1417static const char * const uart2_groups[] = {"uart2"}; 1426static const char * const uart2_groups[] = {"uart2"};
@@ -1498,6 +1507,8 @@ static const struct uniphier_pinmux_function ph1_pro4_functions[] = {
1498 UNIPHIER_PINMUX_FUNCTION(i2c3), 1507 UNIPHIER_PINMUX_FUNCTION(i2c3),
1499 UNIPHIER_PINMUX_FUNCTION(i2c6), 1508 UNIPHIER_PINMUX_FUNCTION(i2c6),
1500 UNIPHIER_PINMUX_FUNCTION(nand), 1509 UNIPHIER_PINMUX_FUNCTION(nand),
1510 UNIPHIER_PINMUX_FUNCTION(sd),
1511 UNIPHIER_PINMUX_FUNCTION(sd1),
1501 UNIPHIER_PINMUX_FUNCTION(uart0), 1512 UNIPHIER_PINMUX_FUNCTION(uart0),
1502 UNIPHIER_PINMUX_FUNCTION(uart1), 1513 UNIPHIER_PINMUX_FUNCTION(uart1),
1503 UNIPHIER_PINMUX_FUNCTION(uart2), 1514 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c b/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c
index 9af455978058..e3d648eae85a 100644
--- a/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c
+++ b/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c
@@ -818,6 +818,8 @@ static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0}; 818 0, 0};
819static const unsigned nand_cs1_pins[] = {26, 27}; 819static const unsigned nand_cs1_pins[] = {26, 27};
820static const unsigned nand_cs1_muxvals[] = {0, 0}; 820static const unsigned nand_cs1_muxvals[] = {0, 0};
821static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
822static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
821static const unsigned uart0_pins[] = {47, 48}; 823static const unsigned uart0_pins[] = {47, 48};
822static const unsigned uart0_muxvals[] = {0, 0}; 824static const unsigned uart0_muxvals[] = {0, 0};
823static const unsigned uart0b_pins[] = {227, 228}; 825static const unsigned uart0b_pins[] = {227, 228};
@@ -930,6 +932,7 @@ static const struct uniphier_pinctrl_group ph1_pro5_groups[] = {
930 UNIPHIER_PINCTRL_GROUP(i2c5b), 932 UNIPHIER_PINCTRL_GROUP(i2c5b),
931 UNIPHIER_PINCTRL_GROUP(i2c5c), 933 UNIPHIER_PINCTRL_GROUP(i2c5c),
932 UNIPHIER_PINCTRL_GROUP(i2c6), 934 UNIPHIER_PINCTRL_GROUP(i2c6),
935 UNIPHIER_PINCTRL_GROUP(sd),
933 UNIPHIER_PINCTRL_GROUP(uart0), 936 UNIPHIER_PINCTRL_GROUP(uart0),
934 UNIPHIER_PINCTRL_GROUP(uart0b), 937 UNIPHIER_PINCTRL_GROUP(uart0b),
935 UNIPHIER_PINCTRL_GROUP(uart1), 938 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1209,6 +1212,7 @@ static const char * const i2c3_groups[] = {"i2c3"};
1209static const char * const i2c5_groups[] = {"i2c5", "i2c5b", "i2c5c"}; 1212static const char * const i2c5_groups[] = {"i2c5", "i2c5b", "i2c5c"};
1210static const char * const i2c6_groups[] = {"i2c6"}; 1213static const char * const i2c6_groups[] = {"i2c6"};
1211static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1214static const char * const nand_groups[] = {"nand", "nand_cs1"};
1215static const char * const sd_groups[] = {"sd"};
1212static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1216static const char * const uart0_groups[] = {"uart0", "uart0b"};
1213static const char * const uart1_groups[] = {"uart1"}; 1217static const char * const uart1_groups[] = {"uart1"};
1214static const char * const uart2_groups[] = {"uart2"}; 1218static const char * const uart2_groups[] = {"uart2"};
@@ -1296,6 +1300,7 @@ static const struct uniphier_pinmux_function ph1_pro5_functions[] = {
1296 UNIPHIER_PINMUX_FUNCTION(i2c5), 1300 UNIPHIER_PINMUX_FUNCTION(i2c5),
1297 UNIPHIER_PINMUX_FUNCTION(i2c6), 1301 UNIPHIER_PINMUX_FUNCTION(i2c6),
1298 UNIPHIER_PINMUX_FUNCTION(nand), 1302 UNIPHIER_PINMUX_FUNCTION(nand),
1303 UNIPHIER_PINMUX_FUNCTION(sd),
1299 UNIPHIER_PINMUX_FUNCTION(uart0), 1304 UNIPHIER_PINMUX_FUNCTION(uart0),
1300 UNIPHIER_PINMUX_FUNCTION(uart1), 1305 UNIPHIER_PINMUX_FUNCTION(uart1),
1301 UNIPHIER_PINMUX_FUNCTION(uart2), 1306 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c b/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c
index 2df8bbecebfc..c3700a33a5da 100644
--- a/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c
+++ b/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c
@@ -450,6 +450,8 @@ static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
450 0, 0}; 450 0, 0};
451static const unsigned nand_cs1_pins[] = {22, 23}; 451static const unsigned nand_cs1_pins[] = {22, 23};
452static const unsigned nand_cs1_muxvals[] = {0, 0}; 452static const unsigned nand_cs1_muxvals[] = {0, 0};
453static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
454static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
453static const unsigned uart0_pins[] = {70, 71}; 455static const unsigned uart0_pins[] = {70, 71};
454static const unsigned uart0_muxvals[] = {3, 3}; 456static const unsigned uart0_muxvals[] = {3, 3};
455static const unsigned uart1_pins[] = {114, 115}; 457static const unsigned uart1_pins[] = {114, 115};
@@ -536,6 +538,7 @@ static const struct uniphier_pinctrl_group ph1_sld8_groups[] = {
536 UNIPHIER_PINCTRL_GROUP(i2c3), 538 UNIPHIER_PINCTRL_GROUP(i2c3),
537 UNIPHIER_PINCTRL_GROUP(nand), 539 UNIPHIER_PINCTRL_GROUP(nand),
538 UNIPHIER_PINCTRL_GROUP(nand_cs1), 540 UNIPHIER_PINCTRL_GROUP(nand_cs1),
541 UNIPHIER_PINCTRL_GROUP(sd),
539 UNIPHIER_PINCTRL_GROUP(uart0), 542 UNIPHIER_PINCTRL_GROUP(uart0),
540 UNIPHIER_PINCTRL_GROUP(uart1), 543 UNIPHIER_PINCTRL_GROUP(uart1),
541 UNIPHIER_PINCTRL_GROUP(uart2), 544 UNIPHIER_PINCTRL_GROUP(uart2),
@@ -684,6 +687,7 @@ static const char * const i2c1_groups[] = {"i2c1"};
684static const char * const i2c2_groups[] = {"i2c2"}; 687static const char * const i2c2_groups[] = {"i2c2"};
685static const char * const i2c3_groups[] = {"i2c3"}; 688static const char * const i2c3_groups[] = {"i2c3"};
686static const char * const nand_groups[] = {"nand", "nand_cs1"}; 689static const char * const nand_groups[] = {"nand", "nand_cs1"};
690static const char * const sd_groups[] = {"sd"};
687static const char * const uart0_groups[] = {"uart0"}; 691static const char * const uart0_groups[] = {"uart0"};
688static const char * const uart1_groups[] = {"uart1"}; 692static const char * const uart1_groups[] = {"uart1"};
689static const char * const uart2_groups[] = {"uart2"}; 693static const char * const uart2_groups[] = {"uart2"};
@@ -739,6 +743,7 @@ static const struct uniphier_pinmux_function ph1_sld8_functions[] = {
739 UNIPHIER_PINMUX_FUNCTION(i2c2), 743 UNIPHIER_PINMUX_FUNCTION(i2c2),
740 UNIPHIER_PINMUX_FUNCTION(i2c3), 744 UNIPHIER_PINMUX_FUNCTION(i2c3),
741 UNIPHIER_PINMUX_FUNCTION(nand), 745 UNIPHIER_PINMUX_FUNCTION(nand),
746 UNIPHIER_PINMUX_FUNCTION(sd),
742 UNIPHIER_PINMUX_FUNCTION(uart0), 747 UNIPHIER_PINMUX_FUNCTION(uart0),
743 UNIPHIER_PINMUX_FUNCTION(uart1), 748 UNIPHIER_PINMUX_FUNCTION(uart1),
744 UNIPHIER_PINMUX_FUNCTION(uart2), 749 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-proxstream2.c b/drivers/pinctrl/uniphier/pinctrl-proxstream2.c
index 3f036e236ad9..bc00d7591c59 100644
--- a/drivers/pinctrl/uniphier/pinctrl-proxstream2.c
+++ b/drivers/pinctrl/uniphier/pinctrl-proxstream2.c
@@ -751,6 +751,8 @@ static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
751 8, 8}; 751 8, 8};
752static const unsigned nand_cs1_pins[] = {37, 38}; 752static const unsigned nand_cs1_pins[] = {37, 38};
753static const unsigned nand_cs1_muxvals[] = {8, 8}; 753static const unsigned nand_cs1_muxvals[] = {8, 8};
754static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
755static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
754static const unsigned uart0_pins[] = {217, 218}; 756static const unsigned uart0_pins[] = {217, 218};
755static const unsigned uart0_muxvals[] = {8, 8}; 757static const unsigned uart0_muxvals[] = {8, 8};
756static const unsigned uart0b_pins[] = {179, 180}; 758static const unsigned uart0b_pins[] = {179, 180};
@@ -857,6 +859,7 @@ static const struct uniphier_pinctrl_group proxstream2_groups[] = {
857 UNIPHIER_PINCTRL_GROUP(i2c6), 859 UNIPHIER_PINCTRL_GROUP(i2c6),
858 UNIPHIER_PINCTRL_GROUP(nand), 860 UNIPHIER_PINCTRL_GROUP(nand),
859 UNIPHIER_PINCTRL_GROUP(nand_cs1), 861 UNIPHIER_PINCTRL_GROUP(nand_cs1),
862 UNIPHIER_PINCTRL_GROUP(sd),
860 UNIPHIER_PINCTRL_GROUP(uart0), 863 UNIPHIER_PINCTRL_GROUP(uart0),
861 UNIPHIER_PINCTRL_GROUP(uart0b), 864 UNIPHIER_PINCTRL_GROUP(uart0b),
862 UNIPHIER_PINCTRL_GROUP(uart1), 865 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1128,6 +1131,7 @@ static const char * const i2c3_groups[] = {"i2c3"};
1128static const char * const i2c5_groups[] = {"i2c5"}; 1131static const char * const i2c5_groups[] = {"i2c5"};
1129static const char * const i2c6_groups[] = {"i2c6"}; 1132static const char * const i2c6_groups[] = {"i2c6"};
1130static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1133static const char * const nand_groups[] = {"nand", "nand_cs1"};
1134static const char * const sd_groups[] = {"sd"};
1131static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1135static const char * const uart0_groups[] = {"uart0", "uart0b"};
1132static const char * const uart1_groups[] = {"uart1"}; 1136static const char * const uart1_groups[] = {"uart1"};
1133static const char * const uart2_groups[] = {"uart2"}; 1137static const char * const uart2_groups[] = {"uart2"};
@@ -1213,6 +1217,7 @@ static const struct uniphier_pinmux_function proxstream2_functions[] = {
1213 UNIPHIER_PINMUX_FUNCTION(i2c5), 1217 UNIPHIER_PINMUX_FUNCTION(i2c5),
1214 UNIPHIER_PINMUX_FUNCTION(i2c6), 1218 UNIPHIER_PINMUX_FUNCTION(i2c6),
1215 UNIPHIER_PINMUX_FUNCTION(nand), 1219 UNIPHIER_PINMUX_FUNCTION(nand),
1220 UNIPHIER_PINMUX_FUNCTION(sd),
1216 UNIPHIER_PINMUX_FUNCTION(uart0), 1221 UNIPHIER_PINMUX_FUNCTION(uart0),
1217 UNIPHIER_PINMUX_FUNCTION(uart1), 1222 UNIPHIER_PINMUX_FUNCTION(uart1),
1218 UNIPHIER_PINMUX_FUNCTION(uart2), 1223 UNIPHIER_PINMUX_FUNCTION(uart2),
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
index 918f3b643f1b..589872cc8adb 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
@@ -539,6 +539,12 @@ static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin,
539 unsigned reg, reg_end, shift, mask; 539 unsigned reg, reg_end, shift, mask;
540 int ret; 540 int ret;
541 541
542 /* some pins need input-enabling */
543 ret = uniphier_conf_pin_input_enable(pctldev,
544 &pctldev->desc->pins[pin], 1);
545 if (ret)
546 return ret;
547
542 reg = UNIPHIER_PINCTRL_PINMUX_BASE + pin * mux_bits / 32 * reg_stride; 548 reg = UNIPHIER_PINCTRL_PINMUX_BASE + pin * mux_bits / 32 * reg_stride;
543 reg_end = reg + reg_stride; 549 reg_end = reg + reg_stride;
544 shift = pin * mux_bits % 32; 550 shift = pin * mux_bits % 32;
@@ -563,9 +569,7 @@ static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin,
563 return ret; 569 return ret;
564 } 570 }
565 571
566 /* some pins need input-enabling */ 572 return 0;
567 return uniphier_conf_pin_input_enable(pctldev,
568 &pctldev->desc->pins[pin], 1);
569} 573}
570 574
571static int uniphier_pmx_set_mux(struct pinctrl_dev *pctldev, 575static int uniphier_pmx_set_mux(struct pinctrl_dev *pctldev,