162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Generic power capping sysfs interface configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenuconfig POWERCAP
762306a36Sopenharmony_ci	bool "Generic powercap sysfs driver"
862306a36Sopenharmony_ci	help
962306a36Sopenharmony_ci	  The power capping sysfs interface allows kernel subsystems to expose power
1062306a36Sopenharmony_ci	  capping settings to user space in a consistent way.  Usually, it consists
1162306a36Sopenharmony_ci	  of multiple control types that determine which settings may be exposed and
1262306a36Sopenharmony_ci	  power zones representing parts of the system that can be subject to power
1362306a36Sopenharmony_ci	  capping.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	  If you want this code to be compiled in, say Y here.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciif POWERCAP
1862306a36Sopenharmony_ci# Client driver configurations go here.
1962306a36Sopenharmony_ciconfig INTEL_RAPL_CORE
2062306a36Sopenharmony_ci	tristate
2162306a36Sopenharmony_ci	depends on PCI
2262306a36Sopenharmony_ci	select IOSF_MBI
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciconfig INTEL_RAPL
2562306a36Sopenharmony_ci	tristate "Intel RAPL Support via MSR Interface"
2662306a36Sopenharmony_ci	depends on X86 && PCI
2762306a36Sopenharmony_ci	select INTEL_RAPL_CORE
2862306a36Sopenharmony_ci	help
2962306a36Sopenharmony_ci	  This enables support for the Intel Running Average Power Limit (RAPL)
3062306a36Sopenharmony_ci	  technology via MSR interface, which allows power limits to be enforced
3162306a36Sopenharmony_ci	  and monitored on modern Intel processors (Sandy Bridge and later).
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  In RAPL, the platform level settings are divided into domains for
3462306a36Sopenharmony_ci	  fine grained control. These domains include processor package, DRAM
3562306a36Sopenharmony_ci	  controller, CPU core (Power Plane 0), graphics uncore (Power Plane
3662306a36Sopenharmony_ci	  1), etc.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciconfig INTEL_RAPL_TPMI
3962306a36Sopenharmony_ci	tristate "Intel RAPL Support via TPMI Interface"
4062306a36Sopenharmony_ci	depends on X86
4162306a36Sopenharmony_ci	depends on INTEL_TPMI
4262306a36Sopenharmony_ci	select INTEL_RAPL_CORE
4362306a36Sopenharmony_ci	help
4462306a36Sopenharmony_ci	  This enables support for the Intel Running Average Power Limit (RAPL)
4562306a36Sopenharmony_ci	  technology via TPMI interface, which allows power limits to be enforced
4662306a36Sopenharmony_ci	  and monitored.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	  In RAPL, the platform level settings are divided into domains for
4962306a36Sopenharmony_ci	  fine grained control. These domains include processor package, DRAM
5062306a36Sopenharmony_ci	  controller, platform, etc.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciconfig IDLE_INJECT
5362306a36Sopenharmony_ci	bool "Idle injection framework"
5462306a36Sopenharmony_ci	depends on CPU_IDLE
5562306a36Sopenharmony_ci	default n
5662306a36Sopenharmony_ci	help
5762306a36Sopenharmony_ci	  This enables support for the idle injection framework. It
5862306a36Sopenharmony_ci	  provides a way to force idle periods on a set of specified
5962306a36Sopenharmony_ci	  CPUs for power capping. Idle period can be injected
6062306a36Sopenharmony_ci	  synchronously on a set of specified CPUs or alternatively
6162306a36Sopenharmony_ci	  on a per CPU basis.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciconfig ARM_SCMI_POWERCAP
6462306a36Sopenharmony_ci	tristate "ARM SCMI Powercap driver"
6562306a36Sopenharmony_ci	depends on ARM_SCMI_PROTOCOL
6662306a36Sopenharmony_ci	help
6762306a36Sopenharmony_ci	  This enables support for the ARM Powercap based on ARM SCMI
6862306a36Sopenharmony_ci	  Powercap protocol.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci	  ARM SCMI Powercap protocol allows power limits to be enforced
7162306a36Sopenharmony_ci	  and monitored against the SCMI Powercap domains advertised as
7262306a36Sopenharmony_ci	  available by the SCMI platform firmware.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci	  When compiled as module it will be called arm_scmi_powercap.ko.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciconfig DTPM
7762306a36Sopenharmony_ci	bool "Power capping for Dynamic Thermal Power Management (EXPERIMENTAL)"
7862306a36Sopenharmony_ci	depends on OF
7962306a36Sopenharmony_ci	help
8062306a36Sopenharmony_ci	  This enables support for the power capping for the dynamic
8162306a36Sopenharmony_ci	  thermal power management userspace engine.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciconfig DTPM_CPU
8462306a36Sopenharmony_ci	bool "Add CPU power capping based on the energy model"
8562306a36Sopenharmony_ci	depends on DTPM && ENERGY_MODEL
8662306a36Sopenharmony_ci	help
8762306a36Sopenharmony_ci	  This enables support for CPU power limitation based on
8862306a36Sopenharmony_ci	  energy model.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciconfig DTPM_DEVFREQ
9162306a36Sopenharmony_ci	bool "Add device power capping based on the energy model"
9262306a36Sopenharmony_ci	depends on DTPM && ENERGY_MODEL
9362306a36Sopenharmony_ci	help
9462306a36Sopenharmony_ci	  This enables support for device power limitation based on
9562306a36Sopenharmony_ci	  energy model.
9662306a36Sopenharmony_ciendif
97