Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+20 −34
Original line number Diff line number Diff line
@@ -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
+2 −5
Original line number Diff line number Diff line
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
+2 −2
Original line number Diff line number Diff line
@@ -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);