if ARCH_RMOBILE

config PINCTRL_PFC
	bool "Renesas pin control drivers"
	depends on DM && ARCH_RMOBILE
	default n if CPU_RZA1
	help
	  Support pin multiplexing control on Renesas SoCs.

	  These drivers are controlled by a device tree node which contains
	  both the GPIO definitions and pin control functions for each
	  available multiplex function.

config PINCTRL_PFC_R8A7790
	bool "Renesas RCar Gen2 R8A7790 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen2 R8A7790 SoCs.

config PINCTRL_PFC_R8A7791
	bool "Renesas RCar Gen2 R8A7791 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen2 R8A7791 SoCs.

config PINCTRL_PFC_R8A7792
	bool "Renesas RCar Gen2 R8A7792 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen2 R8A7792 SoCs.

config PINCTRL_PFC_R8A7793
	bool "Renesas RCar Gen2 R8A7793 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen2 R8A7793 SoCs.

config PINCTRL_PFC_R8A7794
	bool "Renesas RCar Gen2 R8A7794 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen2 R8A7794 SoCs.

config PINCTRL_PFC_R8A774A1
        bool "Renesas RZ/G2 R8A774A1 pin control driver"
        depends on PINCTRL_PFC
        help
          Support pin multiplexing control on Renesas RZ/G2M R8A774A1 SoCs.

config PINCTRL_PFC_R8A774B1
        bool "Renesas RZ/G2 R8A774B1 pin control driver"
        depends on PINCTRL_PFC
        help
          Support pin multiplexing control on Renesas RZ/G2N R8A774B1 SoCs.

config PINCTRL_PFC_R8A774C0
        bool "Renesas RZ/G2 R8A774C0 pin control driver"
        depends on PINCTRL_PFC
        help
          Support pin multiplexing control on Renesas RZ/G2E R8A774C0 SoCs.

config PINCTRL_PFC_R8A774E1
        bool "Renesas RZ/G2 R8A774E1 pin control driver"
        depends on PINCTRL_PFC
        help
          Support pin multiplexing control on Renesas RZ/G2H R8A774E1 SoCs.

config PINCTRL_PFC_R8A77951
	bool "Renesas RCar Gen3 R8A7795 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A7795 SoCs.

config PINCTRL_PFC_R8A77960
	bool "Renesas RCar Gen3 R8A77960 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77960 SoCs.

config PINCTRL_PFC_R8A77961
	bool "Renesas RCar Gen3 R8A77961 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77961 SoCs.

config PINCTRL_PFC_R8A77965
	bool "Renesas RCar Gen3 R8A77965 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77965 SoCs.

config PINCTRL_PFC_R8A77970
	bool "Renesas RCar Gen3 R8A77970 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77970 SoCs.

config PINCTRL_PFC_R8A77980
	bool "Renesas RCar Gen3 R8A77980 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77980 SoCs.

config PINCTRL_PFC_R8A77990
	bool "Renesas RCar Gen3 R8A77990 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77990 SoCs.

config PINCTRL_PFC_R8A77995
	bool "Renesas RCar Gen3 R8A77995 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A77995 SoCs.

config PINCTRL_PFC_R8A779A0
	bool "Renesas RCar Gen3 R8A779A0 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen3 R8A779A0 SoCs.

config PINCTRL_PFC_R8A779F0
	bool "Renesas RCar Gen4 R8A779F0 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen4 R8A779F0 SoCs.

config PINCTRL_PFC_R8A779G0
	bool "Renesas RCar Gen4 R8A779G0 pin control driver"
	depends on PINCTRL_PFC
	help
	  Support pin multiplexing control on Renesas RCar Gen4 R8A779G0 SoCs.

config PINCTRL_RZA1
	bool "Renesas RZ/A1 R7S72100 pin control driver"
	depends on CPU_RZA1
	default y if CPU_RZA1
	help
	  Support pin multiplexing control on Renesas RZ/A1 R7S72100 SoCs.

config PINCTRL_RZG2L
	bool "Renesas RZ/G2L family pin control driver"
	depends on PINCTRL
	depends on PINCTRL_GENERIC
	depends on PINCONF
	help
	  Support the pinctrl functionality of the pin function controller (PFC)
	  on the Renesas RZ/G2L SoC family.

endif

config PINCTRL_RZN1
	bool "Renesas RZ/N1 R906G032 pin control driver"
	depends on RZN1
	default y if RZN1
	help
	  Support pin multiplexing control on Renesas RZ/N1 R906G032 SoCs.
