mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 20:53:00 +07:00
81d549e0c8
PSCI firmware is the standard power management control for all ARM64 based platforms and it is also deployed on some ARM 32 bit platforms to date. Idle state entry in PSCI is currently achieved by calling arm_cpuidle_init() and arm_cpuidle_suspend() in a generic idle driver, which in turn relies on ARM/ARM64 CPUidle back-end to relay the call into PSCI firmware if PSCI is the boot method. Given that PSCI is the standard idle entry method on ARM64 systems (which means that no other CPUidle driver are expected on ARM64 platforms - so PSCI is already a generic idle driver), in order to simplify idle entry and code maintenance, it makes sense to have a PSCI specific idle driver so that idle code that it is currently living in drivers/firmware directory can be hoisted out of it and moved where it belongs, into a full-fledged PSCI driver, leaving PSCI code in drivers/firmware as a pure firmware interface, as it should be. Implement a PSCI CPUidle driver. By default it is a silent Kconfig entry which is left unselected, since it selection would clash with the generic ARM CPUidle driver that provides a PSCI based idle driver through the arm/arm64 arches back-ends CPU operations. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> Cc: Ulf Hansson <ulf.hansson@linaro.org> Cc: Sudeep Holla <sudeep.holla@arm.com> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> Signed-off-by: Will Deacon <will@kernel.org>
89 lines
2.8 KiB
Plaintext
89 lines
2.8 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# ARM CPU Idle drivers
|
|
#
|
|
config ARM_CPUIDLE
|
|
bool "Generic ARM/ARM64 CPU idle Driver"
|
|
select DT_IDLE_STATES
|
|
select CPU_IDLE_MULTIPLE_DRIVERS
|
|
help
|
|
Select this to enable generic cpuidle driver for ARM.
|
|
It provides a generic idle driver whose idle states are configured
|
|
at run-time through DT nodes. The CPUidle suspend backend is
|
|
initialized by calling the CPU operations init idle hook
|
|
provided by architecture code.
|
|
|
|
config ARM_PSCI_CPUIDLE
|
|
bool
|
|
depends on ARM_PSCI_FW
|
|
select DT_IDLE_STATES
|
|
select CPU_IDLE_MULTIPLE_DRIVERS
|
|
help
|
|
Select this to enable PSCI firmware based CPUidle driver for ARM.
|
|
It provides an idle driver that is capable of detecting and
|
|
managing idle states through the PSCI firmware interface.
|
|
|
|
config ARM_BIG_LITTLE_CPUIDLE
|
|
bool "Support for ARM big.LITTLE processors"
|
|
depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS
|
|
depends on MCPM && !ARM64
|
|
select ARM_CPU_SUSPEND
|
|
select CPU_IDLE_MULTIPLE_DRIVERS
|
|
select DT_IDLE_STATES
|
|
help
|
|
Select this option to enable CPU idle driver for big.LITTLE based
|
|
ARM systems. Driver manages CPUs coordination through MCPM and
|
|
define different C-states for little and big cores through the
|
|
multiple CPU idle drivers infrastructure.
|
|
|
|
config ARM_CLPS711X_CPUIDLE
|
|
bool "CPU Idle Driver for CLPS711X processors"
|
|
depends on ARCH_CLPS711X && !ARM64 || COMPILE_TEST
|
|
help
|
|
Select this to enable cpuidle on Cirrus Logic CLPS711X SOCs.
|
|
|
|
config ARM_HIGHBANK_CPUIDLE
|
|
bool "CPU Idle Driver for Calxeda processors"
|
|
depends on ARM_PSCI && !ARM64
|
|
select ARM_CPU_SUSPEND
|
|
help
|
|
Select this to enable cpuidle on Calxeda processors.
|
|
|
|
config ARM_KIRKWOOD_CPUIDLE
|
|
bool "CPU Idle Driver for Marvell Kirkwood SoCs"
|
|
depends on MACH_KIRKWOOD && !ARM64
|
|
help
|
|
This adds the CPU Idle driver for Marvell Kirkwood SoCs.
|
|
|
|
config ARM_ZYNQ_CPUIDLE
|
|
bool "CPU Idle Driver for Xilinx Zynq processors"
|
|
depends on ARCH_ZYNQ && !ARM64
|
|
help
|
|
Select this to enable cpuidle on Xilinx Zynq processors.
|
|
|
|
config ARM_U8500_CPUIDLE
|
|
bool "Cpu Idle Driver for the ST-E u8500 processors"
|
|
depends on ARCH_U8500 && !ARM64
|
|
help
|
|
Select this to enable cpuidle for ST-E u8500 processors
|
|
|
|
config ARM_AT91_CPUIDLE
|
|
bool "Cpu Idle Driver for the AT91 processors"
|
|
default y
|
|
depends on ARCH_AT91 && !ARM64
|
|
help
|
|
Select this to enable cpuidle for AT91 processors
|
|
|
|
config ARM_EXYNOS_CPUIDLE
|
|
bool "Cpu Idle Driver for the Exynos processors"
|
|
depends on ARCH_EXYNOS && !ARM64
|
|
select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
|
|
help
|
|
Select this to enable cpuidle for Exynos processors
|
|
|
|
config ARM_MVEBU_V7_CPUIDLE
|
|
bool "CPU Idle Driver for mvebu v7 family processors"
|
|
depends on ARCH_MVEBU && !ARM64
|
|
help
|
|
Select this to enable cpuidle on Armada 370, 38x and XP processors.
|