# SPDX-License-Identifier: GPL-2.0-only
# Recent Exynos platforms should just select COMMON_CLK_SAMSUNG:
config COMMON_CLK_SAMSUNG
	bool "Samsung Exynos clock controller support" if COMPILE_TEST
	select S3C64XX_COMMON_CLK if ARM && ARCH_S3C64XX
	select S5PV210_COMMON_CLK if ARM && ARCH_S5PV210
	select EXYNOS_3250_COMMON_CLK if ARM && SOC_EXYNOS3250
	select EXYNOS_4_COMMON_CLK if ARM && ARCH_EXYNOS4
	select EXYNOS_5250_COMMON_CLK if ARM && SOC_EXYNOS5250
	select EXYNOS_5260_COMMON_CLK if ARM && SOC_EXYNOS5260
	select EXYNOS_5410_COMMON_CLK if ARM && SOC_EXYNOS5410
	select EXYNOS_5420_COMMON_CLK if ARM && SOC_EXYNOS5420
	select EXYNOS_ARM64_COMMON_CLK if ARM64 && ARCH_EXYNOS

config S3C64XX_COMMON_CLK
	bool "Samsung S3C64xx clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung S3C64xx SoCs.
	  Choose Y here only if you build for this SoC.

config S5PV210_COMMON_CLK
	bool "Samsung S5Pv210 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung S5Pv210 SoCs.
	  Choose Y here only if you build for this SoC.

config EXYNOS_3250_COMMON_CLK
	bool "Samsung Exynos3250 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos3250 SoCs. Choose Y here only if you build for this SoC.

config EXYNOS_4_COMMON_CLK
	bool "Samsung Exynos4 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos4212 and Exynos4412 SoCs. Choose Y here only if you build for
	  this SoC.

config EXYNOS_5250_COMMON_CLK
	bool "Samsung Exynos5250 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos5250 SoCs. Choose Y here only if you build for this SoC.

config EXYNOS_5260_COMMON_CLK
	bool "Samsung Exynos5260 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos5260 SoCs. Choose Y here only if you build for this SoC.

config EXYNOS_5410_COMMON_CLK
	bool "Samsung Exynos5410 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos5410 SoCs. Choose Y here only if you build for this SoC.

config EXYNOS_5420_COMMON_CLK
	bool "Samsung Exynos5420 clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG
	help
	  Support for the clock controller present on the Samsung
	  Exynos5420 SoCs. Choose Y here only if you build for this SoC.

config EXYNOS_ARM64_COMMON_CLK
	bool "Samsung Exynos ARMv8-family clock controller support" if COMPILE_TEST
	depends on COMMON_CLK_SAMSUNG

config EXYNOS_AUDSS_CLK_CON
	tristate "Samsung Exynos AUDSS clock controller support"
	depends on COMMON_CLK_SAMSUNG
	default y if ARCH_EXYNOS
	help
	  Support for the Audio Subsystem CLKCON clock controller present
	  on some Exynos SoC variants. Choose M or Y here if you want to
	  use audio devices such as I2S, PCM, etc.

config EXYNOS_CLKOUT
	tristate "Samsung Exynos clock output driver"
	depends on COMMON_CLK_SAMSUNG
	default y if ARCH_EXYNOS
	help
	  Support for the clock output (XCLKOUT) present on some of Exynos SoC
	  variants. Usually the XCLKOUT is used to monitor the status of the
	  certains clocks from SoC, but it could also be tied to other devices
	  as an input clock.

# For S3C24XX platforms, select following symbols:
config S3C2410_COMMON_CLK
	bool "Samsung S3C2410 clock controller support" if COMPILE_TEST
	select COMMON_CLK_SAMSUNG
	help
	  Build the s3c2410 clock driver based on the common clock framework.

config S3C2410_COMMON_DCLK
	bool
	select COMMON_CLK_SAMSUNG
	select REGMAP_MMIO
	help
	  Temporary symbol to build the dclk driver based on the common clock
	  framework.

config S3C2412_COMMON_CLK
	bool "Samsung S3C2412 clock controller support" if COMPILE_TEST
	select COMMON_CLK_SAMSUNG

config S3C2443_COMMON_CLK
	bool "Samsung S3C2443 clock controller support" if COMPILE_TEST
	select COMMON_CLK_SAMSUNG
