162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Samsung SoC drivers
462306a36Sopenharmony_ci#
562306a36Sopenharmony_cimenuconfig SOC_SAMSUNG
662306a36Sopenharmony_ci	bool "Samsung SoC driver support" if COMPILE_TEST
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciif SOC_SAMSUNG
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci# There is no need to enable these drivers for ARMv8
1162306a36Sopenharmony_ciconfig EXYNOS_ASV_ARM
1262306a36Sopenharmony_ci	bool "Exynos ASV ARMv7-specific driver extensions" if COMPILE_TEST
1362306a36Sopenharmony_ci	depends on EXYNOS_CHIPID
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciconfig EXYNOS_CHIPID
1662306a36Sopenharmony_ci	tristate "Exynos ChipID controller and ASV driver"
1762306a36Sopenharmony_ci	depends on ARCH_EXYNOS || COMPILE_TEST
1862306a36Sopenharmony_ci	default ARCH_EXYNOS
1962306a36Sopenharmony_ci	select EXYNOS_ASV_ARM if ARM && ARCH_EXYNOS
2062306a36Sopenharmony_ci	select MFD_SYSCON
2162306a36Sopenharmony_ci	select SOC_BUS
2262306a36Sopenharmony_ci	help
2362306a36Sopenharmony_ci	  Support for Samsung Exynos SoC ChipID and Adaptive Supply Voltage.
2462306a36Sopenharmony_ci	  This driver can also be built as module (exynos_chipid).
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciconfig EXYNOS_USI
2762306a36Sopenharmony_ci	tristate "Exynos USI (Universal Serial Interface) driver"
2862306a36Sopenharmony_ci	default ARCH_EXYNOS && ARM64
2962306a36Sopenharmony_ci	depends on ARCH_EXYNOS || COMPILE_TEST
3062306a36Sopenharmony_ci	select MFD_SYSCON
3162306a36Sopenharmony_ci	help
3262306a36Sopenharmony_ci	  Enable support for USI block. USI (Universal Serial Interface) is an
3362306a36Sopenharmony_ci	  IP-core found in modern Samsung Exynos SoCs, like Exynos850 and
3462306a36Sopenharmony_ci	  ExynosAutoV9. USI block can be configured to provide one of the
3562306a36Sopenharmony_ci	  following serial protocols: UART, SPI or High Speed I2C.
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	  This driver allows one to configure USI for desired protocol, which
3862306a36Sopenharmony_ci	  is usually done in USI node in Device Tree.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig EXYNOS_PMU
4162306a36Sopenharmony_ci	bool "Exynos PMU controller driver" if COMPILE_TEST
4262306a36Sopenharmony_ci	depends on ARCH_EXYNOS || ((ARM || ARM64) && COMPILE_TEST)
4362306a36Sopenharmony_ci	select EXYNOS_PMU_ARM_DRIVERS if ARM && ARCH_EXYNOS
4462306a36Sopenharmony_ci	select MFD_CORE
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci# There is no need to enable these drivers for ARMv8
4762306a36Sopenharmony_ciconfig EXYNOS_PMU_ARM_DRIVERS
4862306a36Sopenharmony_ci	bool "Exynos PMU ARMv7-specific driver extensions" if COMPILE_TEST
4962306a36Sopenharmony_ci	depends on EXYNOS_PMU
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciconfig EXYNOS_PM_DOMAINS
5262306a36Sopenharmony_ci	bool "Exynos PM domains" if COMPILE_TEST
5362306a36Sopenharmony_ci	depends on (ARCH_EXYNOS && PM_GENERIC_DOMAINS) || COMPILE_TEST
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig SAMSUNG_PM_CHECK
5662306a36Sopenharmony_ci	bool "S3C2410 PM Suspend Memory CRC"
5762306a36Sopenharmony_ci	depends on PM && (ARCH_S3C64XX || ARCH_S5PV210)
5862306a36Sopenharmony_ci	select CRC32
5962306a36Sopenharmony_ci	help
6062306a36Sopenharmony_ci	  Enable the PM code's memory area checksum over sleep. This option
6162306a36Sopenharmony_ci	  will generate CRCs of all blocks of memory, and store them before
6262306a36Sopenharmony_ci	  going to sleep. The blocks are then checked on resume for any
6362306a36Sopenharmony_ci	  errors.
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci	  Note, this can take several seconds depending on memory size
6662306a36Sopenharmony_ci	  and CPU speed.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciconfig SAMSUNG_PM_CHECK_CHUNKSIZE
6962306a36Sopenharmony_ci	int "S3C2410 PM Suspend CRC Chunksize (KiB)"
7062306a36Sopenharmony_ci	depends on PM && SAMSUNG_PM_CHECK
7162306a36Sopenharmony_ci	default 64
7262306a36Sopenharmony_ci	help
7362306a36Sopenharmony_ci	  Set the chunksize in Kilobytes of the CRC for checking memory
7462306a36Sopenharmony_ci	  corruption over suspend and resume. A smaller value will mean that
7562306a36Sopenharmony_ci	  the CRC data block will take more memory, but will identify any
7662306a36Sopenharmony_ci	  faults with better precision.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciconfig EXYNOS_REGULATOR_COUPLER
7962306a36Sopenharmony_ci	bool "Exynos SoC Regulator Coupler" if COMPILE_TEST
8062306a36Sopenharmony_ci	depends on ARCH_EXYNOS || COMPILE_TEST
8162306a36Sopenharmony_ciendif
82