# SPDX-License-Identifier: GPL-2.0-only

config PINCTRL_WPCM450
	tristate "Pinctrl and GPIO driver for Nuvoton WPCM450"
	depends on (ARCH_WPCM450 || COMPILE_TEST) && OF
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select GENERIC_PINCTRL_GROUPS
	select GPIOLIB
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	select MFD_SYSCON
	help
	  Say Y or M here to enable pin controller and GPIO support for
	  the Nuvoton WPCM450 SoC. This is strongly recommended when
	  building a kernel that will run on this chip.

	  If this driver is compiled as a module, it will be named
	  pinctrl-wpcm450.

config PINCTRL_NPCM7XX
	bool "Pinctrl and GPIO driver for Nuvoton NPCM7XX"
	depends on (ARCH_NPCM7XX || COMPILE_TEST) && OF
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select GPIOLIB
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Say Y here to enable pin controller and GPIO support
	  for Nuvoton NPCM750/730/715/705 SoCs.

config PINCTRL_NPCM8XX
	tristate "Pinctrl and GPIO driver for Nuvoton NPCM8XX"
	depends on (ARCH_NPCM || COMPILE_TEST) && OF
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select GPIOLIB
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Say Y or M here to enable pin controller and GPIO support for
	  the Nuvoton NPCM8XX SoC. This is strongly recommended when
	  building a kernel that will run on this chip.
