Commit abc60d48 authored by Magnus Damm's avatar Magnus Damm Committed by Geert Uytterhoeven

pinctrl: sh-pfc: Rework PFC GPIO support

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: default avatarMagnus Damm <damm+renesas@opensource.se>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
[geert: s/def_bool n/bool/]
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
parent 4ca88cf6
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
if ARCH_SHMOBILE || SUPERH if ARCH_SHMOBILE || SUPERH
config PINCTRL_SH_PFC config PINCTRL_SH_PFC
select GPIO_SH_PFC if ARCH_REQUIRE_GPIOLIB
select PINMUX select PINMUX
select PINCONF select PINCONF
select GENERIC_PINCONF select GENERIC_PINCONF
...@@ -13,12 +12,12 @@ config PINCTRL_SH_PFC ...@@ -13,12 +12,12 @@ config PINCTRL_SH_PFC
help help
This enables pin control drivers for SH and SH Mobile platforms This enables pin control drivers for SH and SH Mobile platforms
config GPIO_SH_PFC config PINCTRL_SH_PFC_GPIO
bool "SuperH PFC GPIO support" select GPIOLIB
depends on PINCTRL_SH_PFC && GPIOLIB select PINCTRL_SH_PFC
bool
help help
This enables support for GPIOs within the SoC's pin function This enables pin control and GPIO drivers for SH/SH Mobile platforms
controller.
config PINCTRL_PFC_EMEV2 config PINCTRL_PFC_EMEV2
def_bool y def_bool y
...@@ -28,12 +27,12 @@ config PINCTRL_PFC_EMEV2 ...@@ -28,12 +27,12 @@ config PINCTRL_PFC_EMEV2
config PINCTRL_PFC_R8A73A4 config PINCTRL_PFC_R8A73A4
def_bool y def_bool y
depends on ARCH_R8A73A4 depends on ARCH_R8A73A4
select PINCTRL_SH_PFC select PINCTRL_SH_PFC_GPIO
config PINCTRL_PFC_R8A7740 config PINCTRL_PFC_R8A7740
def_bool y def_bool y
depends on ARCH_R8A7740 depends on ARCH_R8A7740
select PINCTRL_SH_PFC select PINCTRL_SH_PFC_GPIO
config PINCTRL_PFC_R8A7778 config PINCTRL_PFC_R8A7778
def_bool y def_bool y
...@@ -73,79 +72,66 @@ config PINCTRL_PFC_R8A7795 ...@@ -73,79 +72,66 @@ config PINCTRL_PFC_R8A7795
config PINCTRL_PFC_SH7203 config PINCTRL_PFC_SH7203
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7203 depends on CPU_SUBTYPE_SH7203
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7264 config PINCTRL_PFC_SH7264
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7264 depends on CPU_SUBTYPE_SH7264
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7269 config PINCTRL_PFC_SH7269
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7269 depends on CPU_SUBTYPE_SH7269
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH73A0 config PINCTRL_PFC_SH73A0
def_bool y def_bool y
depends on ARCH_SH73A0 depends on ARCH_SH73A0
select PINCTRL_SH_PFC select PINCTRL_SH_PFC_GPIO
select REGULATOR select REGULATOR
config PINCTRL_PFC_SH7720 config PINCTRL_PFC_SH7720
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7720 depends on CPU_SUBTYPE_SH7720
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7722 config PINCTRL_PFC_SH7722
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7722 depends on CPU_SUBTYPE_SH7722
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7723 config PINCTRL_PFC_SH7723
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7723 depends on CPU_SUBTYPE_SH7723
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7724 config PINCTRL_PFC_SH7724
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7724 depends on CPU_SUBTYPE_SH7724
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7734 config PINCTRL_PFC_SH7734
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7734 depends on CPU_SUBTYPE_SH7734
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7757 config PINCTRL_PFC_SH7757
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7757 depends on CPU_SUBTYPE_SH7757
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7785 config PINCTRL_PFC_SH7785
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7785 depends on CPU_SUBTYPE_SH7785
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SH7786 config PINCTRL_PFC_SH7786
def_bool y def_bool y
depends on CPU_SUBTYPE_SH7786 depends on CPU_SUBTYPE_SH7786
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
config PINCTRL_PFC_SHX3 config PINCTRL_PFC_SHX3
def_bool y def_bool y
depends on CPU_SUBTYPE_SHX3 depends on CPU_SUBTYPE_SHX3
depends on GPIOLIB select PINCTRL_SH_PFC_GPIO
select PINCTRL_SH_PFC
endif endif
sh-pfc-objs = core.o pinctrl.o obj-$(CONFIG_PINCTRL_SH_PFC) += core.o pinctrl.o
ifeq ($(CONFIG_GPIO_SH_PFC),y) obj-$(CONFIG_PINCTRL_SH_PFC_GPIO) += gpio.o
sh-pfc-objs += gpio.o
endif
obj-$(CONFIG_PINCTRL_SH_PFC) += sh-pfc.o
obj-$(CONFIG_PINCTRL_PFC_EMEV2) += pfc-emev2.o obj-$(CONFIG_PINCTRL_PFC_EMEV2) += pfc-emev2.o
obj-$(CONFIG_PINCTRL_PFC_R8A73A4) += pfc-r8a73a4.o obj-$(CONFIG_PINCTRL_PFC_R8A73A4) += pfc-r8a73a4.o
obj-$(CONFIG_PINCTRL_PFC_R8A7740) += pfc-r8a7740.o obj-$(CONFIG_PINCTRL_PFC_R8A7740) += pfc-r8a7740.o
......
...@@ -558,7 +558,7 @@ static int sh_pfc_probe(struct platform_device *pdev) ...@@ -558,7 +558,7 @@ static int sh_pfc_probe(struct platform_device *pdev)
if (unlikely(ret != 0)) if (unlikely(ret != 0))
return ret; return ret;
#ifdef CONFIG_GPIO_SH_PFC #ifdef CONFIG_PINCTRL_SH_PFC_GPIO
/* /*
* Then the GPIO chip * Then the GPIO chip
*/ */
...@@ -584,7 +584,7 @@ static int sh_pfc_remove(struct platform_device *pdev) ...@@ -584,7 +584,7 @@ static int sh_pfc_remove(struct platform_device *pdev)
{ {
struct sh_pfc *pfc = platform_get_drvdata(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); sh_pfc_unregister_gpiochip(pfc);
#endif #endif
sh_pfc_unregister_pinctrl(pfc); sh_pfc_unregister_pinctrl(pfc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment