# SPDX-License-Identifier: GPL-2.0-only
config ARM_SCMI_PERF_DOMAIN
	tristate "SCMI performance domain driver"
	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
	default y
	select PM_GENERIC_DOMAINS if PM
	help
	  This enables support for the SCMI performance domains which can be
	  enabled or disabled via the SCP firmware.

	  This driver can also be built as a module. If so, the module will be
	  called scmi_perf_domain.

config ARM_SCMI_POWER_DOMAIN
	tristate "SCMI power domain driver"
	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
	default y
	select PM_GENERIC_DOMAINS if PM
	help
	  This enables support for the SCMI power domains which can be
	  enabled or disabled via the SCP firmware

	  This driver can also be built as a module. If so, the module
	  will be called scmi_pm_domain. Note this may needed early in boot
	  before rootfs may be available.

config ARM_SCPI_POWER_DOMAIN
	tristate "SCPI power domain driver"
	depends on ARM_SCPI_PROTOCOL || (COMPILE_TEST && OF)
	default y
	select PM_GENERIC_DOMAINS if PM
	help
	  This enables support for the SCPI power domains which can be
	  enabled or disabled via the SCP firmware

	  This driver can also be built as a module. If so, the module will be
	  called scpi_pm_domain.
