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

config PINCTRL_SH_PFC
	bool "Renesas SoC pin control support" if COMPILE_TEST && !(ARCH_RENESAS || SUPERH)
	default y if ARCH_RENESAS || SUPERH
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select PINCTRL_PFC_EMEV2 if ARCH_EMEV2
	select PINCTRL_PFC_R8A73A4 if ARCH_R8A73A4
	select PINCTRL_PFC_R8A7740 if ARCH_R8A7740
	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_R8A774C0 if ARCH_R8A774C0
	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_R8A7795 if ARCH_R8A7795
	select PINCTRL_PFC_R8A7796 if ARCH_R8A7796
	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_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_GPIO
	select GPIOLIB
	bool
	help
	  This enables pin control and GPIO drivers for SH/SH Mobile platforms

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

config PINCTRL_PFC_EMEV2
	bool "Emma Mobile AV2 pin control support" if COMPILE_TEST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

config PINCTRL_PFC_R8A7795
	bool "R-Car H3 pin control support" if COMPILE_TEST

config PINCTRL_PFC_R8A7796
	bool "R-Car M3-W pin control support" if COMPILE_TEST

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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