# 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_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_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_R8A77950 if ARCH_R8A77950
	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_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_R8A7742
	bool "RZ/G1H pin control support" if COMPILE_TEST

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_R8A774B1
	bool "RZ/G2N 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_R8A77950
	bool "R-Car H3 ES1.x pin control support" if COMPILE_TEST

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

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

config PINCTRL_PFC_R8A77961
	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
