#
# PINCTRL infrastructure and drivers
#

config PINCTRL
	bool

if PINCTRL

menu "Pin controllers"
	depends on PINCTRL

config PINMUX
	bool "Support pin multiplexing controllers"

config PINCONF
	bool "Support pin configuration controllers"

config GENERIC_PINCONF
	bool
	select PINCONF

config DEBUG_PINCTRL
	bool "Debug PINCTRL calls"
	depends on DEBUG_KERNEL
	help
	  Say Y here to add some extra checks and diagnostics to PINCTRL calls.

config PINCTRL_ABX500
	bool "ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions"
	depends on AB8500_CORE
	select GENERIC_PINCONF
	help
	  Select this to enable the ABx500 family IC GPIO driver

config PINCTRL_AB8500
	bool "AB8500 pin controller driver"
	depends on PINCTRL_ABX500 && ARCH_U8500

config PINCTRL_AB8540
	bool "AB8540 pin controller driver"
	depends on PINCTRL_ABX500 && ARCH_U8500

config PINCTRL_AB9540
	bool "AB9540 pin controller driver"
	depends on PINCTRL_ABX500 && ARCH_U8500

config PINCTRL_AB8505
	bool "AB8505 pin controller driver"
	depends on PINCTRL_ABX500 && ARCH_U8500

config PINCTRL_AT91
	bool "AT91 pinctrl driver"
	depends on OF
	depends on ARCH_AT91
	select PINMUX
	select PINCONF
	help
	  Say Y here to enable the at91 pinctrl driver

config PINCTRL_BCM2835
	bool
	select PINMUX
	select PINCONF

config PINCTRL_IMX
	bool
	select PINMUX
	select PINCONF

config PINCTRL_IMX35
	bool "IMX35 pinctrl driver"
	depends on OF
	depends on SOC_IMX35
	select PINCTRL_IMX
	help
	  Say Y here to enable the imx35 pinctrl driver

config PINCTRL_IMX51
	bool "IMX51 pinctrl driver"
	depends on OF
	depends on SOC_IMX51
	select PINCTRL_IMX
	help
	  Say Y here to enable the imx51 pinctrl driver

config PINCTRL_IMX53
	bool "IMX53 pinctrl driver"
	depends on OF
	depends on SOC_IMX53
	select PINCTRL_IMX
	help
	  Say Y here to enable the imx53 pinctrl driver

config PINCTRL_IMX6Q
	bool "IMX6Q/DL pinctrl driver"
	depends on OF
	depends on SOC_IMX6Q
	select PINCTRL_IMX
	help
	  Say Y here to enable the imx6q/dl pinctrl driver

config PINCTRL_IMX6SL
	bool "IMX6SL pinctrl driver"
	depends on OF
	depends on SOC_IMX6SL
	select PINCTRL_IMX
	help
	  Say Y here to enable the imx6sl pinctrl driver

config PINCTRL_LANTIQ
	bool
	depends on LANTIQ
	select PINMUX
	select PINCONF

config PINCTRL_FALCON
	bool
	depends on SOC_FALCON
	depends on PINCTRL_LANTIQ

config PINCTRL_MXS
	bool
	select PINMUX
	select PINCONF

config PINCTRL_IMX23
	bool
	select PINCTRL_MXS

config PINCTRL_IMX28
	bool
	select PINCTRL_MXS

config PINCTRL_NOMADIK
	bool "Nomadik pin controller driver"
	depends on ARCH_U8500 || ARCH_NOMADIK
	select PINMUX
	select PINCONF

config PINCTRL_STN8815
	bool "STN8815 pin controller driver"
	depends on PINCTRL_NOMADIK && ARCH_NOMADIK

config PINCTRL_DB8500
	bool "DB8500 pin controller driver"
	depends on PINCTRL_NOMADIK && ARCH_U8500

config PINCTRL_DB8540
	bool "DB8540 pin controller driver"
	depends on PINCTRL_NOMADIK && ARCH_U8500

config PINCTRL_SINGLE
	tristate "One-register-per-pin type device tree based pinctrl driver"
	depends on OF
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	help
	  This selects the device tree based generic pinctrl driver.

config PINCTRL_SIRF
	bool "CSR SiRFprimaII/SiRFmarco pin controller driver"
	depends on ARCH_SIRF
	select PINMUX

config PINCTRL_SUNXI
	bool
	select PINMUX
	select GENERIC_PINCONF

config PINCTRL_TEGRA
	bool
	select PINMUX
	select PINCONF

config PINCTRL_TEGRA20
	bool
	select PINCTRL_TEGRA

config PINCTRL_TEGRA30
	bool
	select PINCTRL_TEGRA

config PINCTRL_TEGRA114
	bool
	select PINCTRL_TEGRA

config PINCTRL_U300
	bool "U300 pin controller driver"
	depends on ARCH_U300
	select PINMUX
	select GENERIC_PINCONF

config PINCTRL_COH901
	bool "ST-Ericsson U300 COH 901 335/571 GPIO"
	depends on GPIOLIB && ARCH_U300 && PINCTRL_U300
	help
	  Say yes here to support GPIO interface on ST-Ericsson U300.
	  The names of the two IP block variants supported are
	  COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
	  ports of 8 GPIO pins each.

config PINCTRL_SAMSUNG
	bool
	select PINMUX
	select PINCONF

config PINCTRL_EXYNOS
	bool "Pinctrl driver data for Samsung EXYNOS SoCs other than 5440"
	depends on OF && GPIOLIB && ARCH_EXYNOS
	select PINCTRL_SAMSUNG

config PINCTRL_EXYNOS5440
	bool "Samsung EXYNOS5440 SoC pinctrl driver"
	depends on SOC_EXYNOS5440
	select PINMUX
	select PINCONF

config PINCTRL_S3C24XX
	bool "Samsung S3C24XX SoC pinctrl driver"
	depends on ARCH_S3C24XX
	select PINCTRL_SAMSUNG

config PINCTRL_S3C64XX
	bool "Samsung S3C64XX SoC pinctrl driver"
	depends on ARCH_S3C64XX
	select PINCTRL_SAMSUNG

source "drivers/pinctrl/mvebu/Kconfig"
source "drivers/pinctrl/sh-pfc/Kconfig"
source "drivers/pinctrl/spear/Kconfig"
source "drivers/pinctrl/vt8500/Kconfig"

config PINCTRL_XWAY
	bool
	depends on SOC_TYPE_XWAY
	depends on PINCTRL_LANTIQ

endmenu

endif
