# SPDX-License-Identifier: GPL-2.0
#
# Renesas SH and SH Mobile PINCTRL drivers
#

menu "Renesas pinctrl drivers"

config PINCTRL_RENESAS
	bool "Renesas SoC pin control support" if COMPILE_TEST && !(ARCH_RENESAS || SUPERH)
	default y if ARCH_RENESAS || SUPERH
	select PINCTRL_PFC_EMEV2 if ARCH_EMEV2
	select PINCTRL_PFC_R8A73A4 if ARCH_R8A73A4
	select PINCTRL_PFC_R8A7740 if ARCH_R8A7740
	select PINCTRL_PFC_R8A7742 if ARCH_R8A7742
	select PINCTRL_PFC_R8A7743 if ARCH_R8A7743
	select PINCTRL_PFC_R8A7744 if ARCH_R8A7744
	select PINCTRL_PFC_R8A7745 if ARCH_R8A7745
	select PINCTRL_PFC_R8A77470 if ARCH_R8A77470
	select PINCTRL_PFC_R8A774A1 if ARCH_R8A774A1
	select PINCTRL_PFC_R8A774B1 if ARCH_R8A774B1
	select PINCTRL_PFC_R8A774C0 if ARCH_R8A774C0
	select PINCTRL_PFC_R8A774E1 if ARCH_R8A774E1
	select PINCTRL_PFC_R8A7778 if ARCH_R8A7778
	select PINCTRL_PFC_R8A7779 if ARCH_R8A7779
	select PINCTRL_PFC_R8A7790 if ARCH_R8A7790
	select PINCTRL_PFC_R8A7791 if ARCH_R8A7791
	select PINCTRL_PFC_R8A7792 if ARCH_R8A7792
	select PINCTRL_PFC_R8A7793 if ARCH_R8A7793
	select PINCTRL_PFC_R8A7794 if ARCH_R8A7794
	select PINCTRL_PFC_R8A77951 if ARCH_R8A77951
	select PINCTRL_PFC_R8A77960 if ARCH_R8A77960
	select PINCTRL_PFC_R8A77961 if ARCH_R8A77961
	select PINCTRL_PFC_R8A77965 if ARCH_R8A77965
	select PINCTRL_PFC_R8A77970 if ARCH_R8A77970
	select PINCTRL_PFC_R8A77980 if ARCH_R8A77980
	select PINCTRL_PFC_R8A77990 if ARCH_R8A77990
	select PINCTRL_PFC_R8A77995 if ARCH_R8A77995
	select PINCTRL_PFC_R8A779A0 if ARCH_R8A779A0
	select PINCTRL_PFC_R8A779F0 if ARCH_R8A779F0
	select PINCTRL_PFC_R8A779G0 if ARCH_R8A779G0
	select PINCTRL_PFC_R8A779H0 if ARCH_R8A779H0
	select PINCTRL_RZG2L if ARCH_RZG2L
	select PINCTRL_RZV2M if ARCH_R9A09G011
	select PINCTRL_RZG2L if ARCH_R9A09G057
	select PINCTRL_PFC_SH7203 if CPU_SUBTYPE_SH7203
	select PINCTRL_PFC_SH7264 if CPU_SUBTYPE_SH7264
	select PINCTRL_PFC_SH7269 if CPU_SUBTYPE_SH7269
	select PINCTRL_PFC_SH73A0 if ARCH_SH73A0
	select PINCTRL_PFC_SH7720 if CPU_SUBTYPE_SH7720
	select PINCTRL_PFC_SH7722 if CPU_SUBTYPE_SH7722
	select PINCTRL_PFC_SH7723 if CPU_SUBTYPE_SH7723
	select PINCTRL_PFC_SH7724 if CPU_SUBTYPE_SH7724
	select PINCTRL_PFC_SH7734 if CPU_SUBTYPE_SH7734
	select PINCTRL_PFC_SH7757 if CPU_SUBTYPE_SH7757
	select PINCTRL_PFC_SH7785 if CPU_SUBTYPE_SH7785
	select PINCTRL_PFC_SH7786 if CPU_SUBTYPE_SH7786
	select PINCTRL_PFC_SHX3 if CPU_SUBTYPE_SHX3
	help
	  This enables pin control drivers for Renesas SuperH and ARM platforms

config PINCTRL_SH_PFC
	bool
	select GENERIC_PINCONF
	select PINMUX
	select PINCONF
	help
	  This enables common pin control functionality for EMMA Mobile, R-Car,
	  R-Mobile, RZ/G, SH, and SH-Mobile platforms.

config PINCTRL_SH_PFC_GPIO
	bool
	select GPIOLIB
	select PINCTRL_SH_PFC
	help
	  This enables pin control and GPIO drivers for SH/SH Mobile platforms

config PINCTRL_SH_FUNC_GPIO
	bool
	select PINCTRL_SH_PFC_GPIO
	help
	  This enables legacy function GPIOs for SH platforms

config PINCTRL_PFC_EMEV2
	bool "pin control support for Emma Mobile EV2" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77995
	bool "pin control support for R-Car D3" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7794
	bool "pin control support for R-Car E2" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77990
	bool "pin control support for R-Car E3" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7779
	bool "pin control support for R-Car H1" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7790
	bool "pin control support for R-Car H2" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77951
	bool "pin control support for R-Car H3 ES2.0+" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7778
	bool "pin control support for R-Car M1A" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7793
	bool "pin control support for R-Car M2-N" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7791
	bool "pin control support for R-Car M2-W" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77965
	bool "pin control support for R-Car M3-N" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77960
	bool "pin control support for R-Car M3-W" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77961
	bool "pin control support for R-Car M3-W+" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A779F0
	bool "pin control support for R-Car S4-8" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7792
	bool "pin control support for R-Car V2H" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77980
	bool "pin control support for R-Car V3H" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A77970
	bool "pin control support for R-Car V3M" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A779A0
	bool "pin control support for R-Car V3U" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A779G0
	bool "pin control support for R-Car V4H" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A779H0
	bool "pin control support for R-Car V4M" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7740
	bool "pin control support for R-Mobile A1" if COMPILE_TEST
	select PINCTRL_SH_PFC_GPIO

config PINCTRL_PFC_R8A73A4
	bool "pin control support for R-Mobile APE6" if COMPILE_TEST
	select PINCTRL_SH_PFC_GPIO

config PINCTRL_RZA1
	bool "pin control support for RZ/A1"
	depends on OF
	depends on ARCH_R7S72100 || COMPILE_TEST
	select GENERIC_PINCONF
	select GENERIC_PINCTRL_GROUPS
	select GENERIC_PINMUX_FUNCTIONS
	select GPIOLIB
	help
	  This selects pinctrl driver for Renesas RZ/A1 platforms.

config PINCTRL_RZA2
	bool "pin control support for RZ/A2"
	depends on OF
	depends on ARCH_R7S9210 || COMPILE_TEST
	select GENERIC_PINCTRL_GROUPS
	select GENERIC_PINMUX_FUNCTIONS
	select GPIOLIB
	help
	  This selects GPIO and pinctrl driver for Renesas RZ/A2 platforms.

config PINCTRL_RZG2L
	bool "pin control support for RZ/{G2L,G2UL,V2L}" if COMPILE_TEST
	depends on OF
	select GPIOLIB
	select GPIOLIB_IRQCHIP
	select GENERIC_PINCTRL_GROUPS
	select GENERIC_PINMUX_FUNCTIONS
	select GENERIC_PINCONF
	select IRQ_DOMAIN_HIERARCHY
	help
	  This selects GPIO and pinctrl driver for Renesas RZ/{G2L,G2UL,V2L}
	  platforms.

config PINCTRL_PFC_R8A77470
	bool "pin control support for RZ/G1C" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7745
	bool "pin control support for RZ/G1E" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7742
	bool "pin control support for RZ/G1H" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7743
	bool "pin control support for RZ/G1M" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7744
	bool "pin control support for RZ/G1N" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A774C0
	bool "pin control support for RZ/G2E" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A774E1
	bool "pin control support for RZ/G2H" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A774A1
	bool "pin control support for RZ/G2M" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A774B1
	bool "pin control support for RZ/G2N" if COMPILE_TEST
	select PINCTRL_SH_PFC

config PINCTRL_RZN1
	bool "pin control support for RZ/N1"
	depends on OF
	depends on ARCH_RZN1 || COMPILE_TEST
	select GENERIC_PINCONF
	select PINMUX
	help
	  This selects pinctrl driver for Renesas RZ/N1 devices.

config PINCTRL_RZV2M
	bool "pin control support for RZ/V2M"
	depends on OF
	depends on ARCH_R9A09G011 || COMPILE_TEST
	select GPIOLIB
	select GENERIC_PINCTRL_GROUPS
	select GENERIC_PINMUX_FUNCTIONS
	select GENERIC_PINCONF
	help
	  This selects GPIO and pinctrl driver for Renesas RZ/V2M
	  platforms.

config PINCTRL_PFC_SH7203
	bool "pin control support for SH7203" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7264
	bool "pin control support for SH7264" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7269
	bool "pin control support for SH7269" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7720
	bool "pin control support for SH7720" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7722
	bool "pin control support for SH7722" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7734
	bool "pin control support for SH7734" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7757
	bool "pin control support for SH7757" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7785
	bool "pin control support for SH7785" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7786
	bool "pin control support for SH7786" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH73A0
	bool "pin control support for SH-Mobile AG5" if COMPILE_TEST
	select PINCTRL_SH_PFC_GPIO
	select REGULATOR

config PINCTRL_PFC_SH7723
	bool "pin control support for SH-Mobile R2" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SH7724
	bool "pin control support for SH-Mobile R2R" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

config PINCTRL_PFC_SHX3
	bool "pin control support for SH-X3" if COMPILE_TEST
	select PINCTRL_SH_FUNC_GPIO

endmenu
