# SPDX-License-Identifier: GPL-2.0-only
if ARCH_ROCKCHIP || COMPILE_TEST

#
# Rockchip Soc drivers
#

config ROCKCHIP_GRF
	bool "Rockchip General Register Files support" if COMPILE_TEST
	default y if ARCH_ROCKCHIP
	help
	  The General Register Files are a central component providing
	  special additional settings registers for a lot of soc-components.
	  In a lot of cases there also need to be default settings initialized
	  to make some of them conform to expectations of the kernel.

config ROCKCHIP_IODOMAIN
	tristate "Rockchip IO domain support"
	depends on OF
	help
	  Say y here to enable support io domains on Rockchip SoCs. It is
	  necessary for the io domain setting of the SoC to match the
	  voltage supplied by the regulators.

config ROCKCHIP_PM_DOMAINS
	bool "Rockchip generic power domain"
	depends on PM
	select PM_GENERIC_DOMAINS
	help
	  Say y here to enable power domain support.
	  In order to meet high performance and low power requirements, a power
	  management unit is designed or saving power when RK3288 in low power
	  mode. The RK3288 PMU is dedicated for managing the power of the whole chip.

	  If unsure, say N.

config ROCKCHIP_DTPM
	tristate "Rockchip DTPM hierarchy"
	depends on DTPM && m
	help
	  Describe the hierarchy for the Dynamic Thermal Power Management tree
	  on this platform. That will create all the power capping capable
	  devices.

endif
