pinctrl: sh-pfc: Rework PFC GPIO support
authorMagnus Damm <damm+renesas@opensource.se>
Wed, 17 Feb 2016 08:15:49 +0000 (17:15 +0900)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 18 Feb 2016 08:30:58 +0000 (09:30 +0100)
The sh-pfc pinctrl driver is currently handling SoC-specific
PFC hardware blocks on ARM64, ARM and SH architectures.

For older SoCs using SH cores and some 32-bit ARM SoCs the PFC
hardware also provides GPIO functionality. On the majority of
32-bit ARM SoCs from Renesas and so far all ARM64 SoCs the GPIO
feature is provided by separate hardware blocks.

So far GPIO support in the PFC driver has been compiled-in for
the majority of the SoCs, but with this patch applied the SoCs
with PFC support may select from one of the following:
 - CONFIG_PINCTRL_SH_PFC - Used if PFC lacks GPIO hardware
 - CONFIG_PINCTRL_SH_PFC_GPIO - Used if PFC includes GPIO support

This patch results in the following changes:
 - The GPIO functionality is only compiled-in on relevant SoCs
 - The number of lines of code is reduced

Build tested using the following configurations:
 - r8a7795 -> CONFIG_PINCTRL_SH_PFC_GPIO=n -> OK (ARM64)
 - r8a7790 -> CONFIG_PINCTRL_SH_PFC_GPIO=n -> OK (ARM)
 - r8a7790 + r8a7740 -> CONFIG_PINCTRL_SH_PFC_GPIO=y -> OK (ARM)
 - r8a7740 -> CONFIG_PINCTRL_SH_PFC_GPIO=y -> OK (ARM)
 - sh7751 -> CONFIG_PINCTRL_SH_PFC=n -> OK (SH rts7751r2d1)
 - sh7724 -> CONFIG_PINCTRL_SH_PFC_GPIO=y -> OK (SH ecovec24)

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
[geert: s/def_bool n/bool/]
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/pinctrl/sh-pfc/Kconfig
drivers/pinctrl/sh-pfc/Makefile
drivers/pinctrl/sh-pfc/core.c

index 35d6e95fa21fbbdd6cdf8bb9847bffad13ad88ce..40a60535970e438a568d4730869783a3d19201b0 100644 (file)
@@ -5,7 +5,6 @@
 if ARCH_SHMOBILE || SUPERH
 
 config PINCTRL_SH_PFC
-       select GPIO_SH_PFC if ARCH_REQUIRE_GPIOLIB
        select PINMUX
        select PINCONF
        select GENERIC_PINCONF
@@ -13,12 +12,12 @@ config PINCTRL_SH_PFC
        help
          This enables pin control drivers for SH and SH Mobile platforms
 
-config GPIO_SH_PFC
-       bool "SuperH PFC GPIO support"
-       depends on PINCTRL_SH_PFC && GPIOLIB
+config PINCTRL_SH_PFC_GPIO
+       select GPIOLIB
+       select PINCTRL_SH_PFC
+       bool
        help
-         This enables support for GPIOs within the SoC's pin function
-         controller.
+         This enables pin control and GPIO drivers for SH/SH Mobile platforms
 
 config PINCTRL_PFC_EMEV2
        def_bool y
@@ -28,12 +27,12 @@ config PINCTRL_PFC_EMEV2
 config PINCTRL_PFC_R8A73A4
        def_bool y
        depends on ARCH_R8A73A4
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_R8A7740
        def_bool y
        depends on ARCH_R8A7740
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_R8A7778
        def_bool y
@@ -73,79 +72,66 @@ config PINCTRL_PFC_R8A7795
 config PINCTRL_PFC_SH7203
        def_bool y
        depends on CPU_SUBTYPE_SH7203
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7264
        def_bool y
        depends on CPU_SUBTYPE_SH7264
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7269
        def_bool y
        depends on CPU_SUBTYPE_SH7269
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH73A0
        def_bool y
        depends on ARCH_SH73A0
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
        select REGULATOR
 
 config PINCTRL_PFC_SH7720
        def_bool y
        depends on CPU_SUBTYPE_SH7720
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7722
        def_bool y
        depends on CPU_SUBTYPE_SH7722
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7723
        def_bool y
        depends on CPU_SUBTYPE_SH7723
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7724
        def_bool y
        depends on CPU_SUBTYPE_SH7724
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7734
        def_bool y
        depends on CPU_SUBTYPE_SH7734
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7757
        def_bool y
        depends on CPU_SUBTYPE_SH7757
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7785
        def_bool y
        depends on CPU_SUBTYPE_SH7785
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SH7786
        def_bool y
        depends on CPU_SUBTYPE_SH7786
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
+       select PINCTRL_SH_PFC_GPIO
 
 config PINCTRL_PFC_SHX3
        def_bool y
        depends on CPU_SUBTYPE_SHX3
-       depends on GPIOLIB
-       select PINCTRL_SH_PFC
-
+       select PINCTRL_SH_PFC_GPIO
 endif
index 173305fa3811755a845ae39a81a11f2610ea1552..8a2c8710fc9375e6798bfeab6653a7bdfb0257f4 100644 (file)
@@ -1,8 +1,5 @@
-sh-pfc-objs                    = core.o pinctrl.o
-ifeq ($(CONFIG_GPIO_SH_PFC),y)
-sh-pfc-objs                    += gpio.o
-endif
-obj-$(CONFIG_PINCTRL_SH_PFC)   += sh-pfc.o
+obj-$(CONFIG_PINCTRL_SH_PFC)   += core.o pinctrl.o
+obj-$(CONFIG_PINCTRL_SH_PFC_GPIO)      += gpio.o
 obj-$(CONFIG_PINCTRL_PFC_EMEV2)        += pfc-emev2.o
 obj-$(CONFIG_PINCTRL_PFC_R8A73A4)      += pfc-r8a73a4.o
 obj-$(CONFIG_PINCTRL_PFC_R8A7740)      += pfc-r8a7740.o
index 181ea98a63b7ab02d367581b4027997ea0f6a574..0c2d14c504aa1d6107c7c00a7984b5a03c45baed 100644 (file)
@@ -558,7 +558,7 @@ static int sh_pfc_probe(struct platform_device *pdev)
        if (unlikely(ret != 0))
                return ret;
 
-#ifdef CONFIG_GPIO_SH_PFC
+#ifdef CONFIG_PINCTRL_SH_PFC_GPIO
        /*
         * Then the GPIO chip
         */
@@ -584,7 +584,7 @@ static int sh_pfc_remove(struct platform_device *pdev)
 {
        struct sh_pfc *pfc = platform_get_drvdata(pdev);
 
-#ifdef CONFIG_GPIO_SH_PFC
+#ifdef CONFIG_PINCTRL_SH_PFC_GPIO
        sh_pfc_unregister_gpiochip(pfc);
 #endif
        sh_pfc_unregister_pinctrl(pfc);