# SPDX-License-Identifier: GPL-2.0
#
# Samsung Pin control drivers
#
config PINCTRL_SAMSUNG
	bool
	select GPIOLIB
	select PINMUX
	select PINCONF

config PINCTRL_EXYNOS
	bool "Pinctrl common driver part for Samsung Exynos SoCs"
	depends on ARCH_EXYNOS || ARCH_S5PV210 || (COMPILE_TEST && OF)
	select PINCTRL_SAMSUNG
	select PINCTRL_EXYNOS_ARM if ARM && (ARCH_EXYNOS || ARCH_S5PV210)
	select PINCTRL_EXYNOS_ARM64 if ARM64 && ARCH_EXYNOS

config PINCTRL_EXYNOS_ARM
	bool "ARMv7-specific pinctrl driver for Samsung Exynos SoCs" if COMPILE_TEST
	depends on PINCTRL_EXYNOS

config PINCTRL_EXYNOS_ARM64
	bool "ARMv8-specific pinctrl driver for Samsung Exynos SoCs" if COMPILE_TEST
	depends on PINCTRL_EXYNOS

config PINCTRL_S3C24XX
	bool "Samsung S3C24XX SoC pinctrl driver"
	depends on ARCH_S3C24XX || (COMPILE_TEST && OF)
	select PINCTRL_SAMSUNG

config PINCTRL_S3C64XX
	bool "Samsung S3C64XX SoC pinctrl driver"
	depends on ARCH_S3C64XX || (COMPILE_TEST && OF)
	select PINCTRL_SAMSUNG
