xref: /linux/drivers/cpuidle/Kconfig.arm (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2b98e01adSSahara#
3b98e01adSSahara# ARM CPU Idle drivers
4b98e01adSSahara#
50e087044SDaniel Lezcanoconfig ARM_CPUIDLE
651280acaSMichael Walle	bool "Generic ARM CPU idle Driver"
751280acaSMichael Walle	depends on ARM
80e087044SDaniel Lezcano	select DT_IDLE_STATES
9d50a7d8aSDaniel Lezcano	select CPU_IDLE_MULTIPLE_DRIVERS
100e087044SDaniel Lezcano	help
110e087044SDaniel Lezcano	  Select this to enable generic cpuidle driver for ARM.
120e087044SDaniel Lezcano	  It provides a generic idle driver whose idle states are configured
130e087044SDaniel Lezcano	  at run-time through DT nodes. The CPUidle suspend backend is
140e087044SDaniel Lezcano	  initialized by calling the CPU operations init idle hook
150e087044SDaniel Lezcano	  provided by architecture code.
160e087044SDaniel Lezcano
1781d549e0SLorenzo Pieralisiconfig ARM_PSCI_CPUIDLE
1878896146SLorenzo Pieralisi	bool "PSCI CPU idle Driver"
1981d549e0SLorenzo Pieralisi	depends on ARM_PSCI_FW
2081d549e0SLorenzo Pieralisi	select DT_IDLE_STATES
2181d549e0SLorenzo Pieralisi	select CPU_IDLE_MULTIPLE_DRIVERS
2281d549e0SLorenzo Pieralisi	help
2381d549e0SLorenzo Pieralisi	  Select this to enable PSCI firmware based CPUidle driver for ARM.
2481d549e0SLorenzo Pieralisi	  It provides an idle driver that is capable of detecting and
2581d549e0SLorenzo Pieralisi	  managing idle states through the PSCI firmware interface.
2681d549e0SLorenzo Pieralisi
27*f9901f64SKrzysztof Kozlowski	  The driver has limitations when used with PREEMPT_RT:
28*f9901f64SKrzysztof Kozlowski	  - If the idle states are described with the non-hierarchical layout,
29*f9901f64SKrzysztof Kozlowski	    all idle states are still available.
30*f9901f64SKrzysztof Kozlowski
31*f9901f64SKrzysztof Kozlowski	  - If the idle states are described with the hierarchical layout,
32*f9901f64SKrzysztof Kozlowski	    only the idle states defined per CPU are available, but not the ones
33*f9901f64SKrzysztof Kozlowski	    being shared among a group of CPUs (aka cluster idle states).
34*f9901f64SKrzysztof Kozlowski
3503175619SUlf Hanssonconfig ARM_PSCI_CPUIDLE_DOMAIN
3603175619SUlf Hansson	bool "PSCI CPU idle Domain"
3703175619SUlf Hansson	depends on ARM_PSCI_CPUIDLE
3803175619SUlf Hansson	depends on PM_GENERIC_DOMAINS_OF
399d976d67SAnup Patel	select DT_IDLE_GENPD
4003175619SUlf Hansson	default y
4103175619SUlf Hansson	help
4203175619SUlf Hansson	  Select this to enable the PSCI based CPUidle driver to use PM domains,
4303175619SUlf Hansson	  which is needed to support the hierarchical DT based layout of the
4403175619SUlf Hansson	  idle states.
4503175619SUlf Hansson
463880d214SLorenzo Pieralisiconfig ARM_BIG_LITTLE_CPUIDLE
473880d214SLorenzo Pieralisi	bool "Support for ARM big.LITTLE processors"
4853eb82b0SKrzysztof Kozlowski	depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS || COMPILE_TEST
490e087044SDaniel Lezcano	depends on MCPM && !ARM64
503880d214SLorenzo Pieralisi	select ARM_CPU_SUSPEND
513880d214SLorenzo Pieralisi	select CPU_IDLE_MULTIPLE_DRIVERS
52d2e5c871SLorenzo Pieralisi	select DT_IDLE_STATES
533880d214SLorenzo Pieralisi	help
543880d214SLorenzo Pieralisi	  Select this option to enable CPU idle driver for big.LITTLE based
553880d214SLorenzo Pieralisi	  ARM systems. Driver manages CPUs coordination through MCPM and
563880d214SLorenzo Pieralisi	  define different C-states for little and big cores through the
573880d214SLorenzo Pieralisi	  multiple CPU idle drivers infrastructure.
583880d214SLorenzo Pieralisi
597c7f8f7fSAlexander Shiyanconfig ARM_CLPS711X_CPUIDLE
607c7f8f7fSAlexander Shiyan	bool "CPU Idle Driver for CLPS711X processors"
610e087044SDaniel Lezcano	depends on ARCH_CLPS711X && !ARM64 || COMPILE_TEST
627c7f8f7fSAlexander Shiyan	help
637c7f8f7fSAlexander Shiyan	  Select this to enable cpuidle on Cirrus Logic CLPS711X SOCs.
647c7f8f7fSAlexander Shiyan
65b98e01adSSaharaconfig ARM_HIGHBANK_CPUIDLE
66b98e01adSSahara	bool "CPU Idle Driver for Calxeda processors"
670e087044SDaniel Lezcano	depends on ARM_PSCI && !ARM64
68b98e01adSSahara	select ARM_CPU_SUSPEND
69b98e01adSSahara	help
70b98e01adSSahara	  Select this to enable cpuidle on Calxeda processors.
71b98e01adSSahara
72b98e01adSSaharaconfig ARM_KIRKWOOD_CPUIDLE
73b98e01adSSahara	bool "CPU Idle Driver for Marvell Kirkwood SoCs"
7453eb82b0SKrzysztof Kozlowski	depends on (MACH_KIRKWOOD || COMPILE_TEST) && !ARM64
75b98e01adSSahara	help
76b98e01adSSahara	  This adds the CPU Idle driver for Marvell Kirkwood SoCs.
77b98e01adSSahara
78b98e01adSSaharaconfig ARM_ZYNQ_CPUIDLE
79b98e01adSSahara	bool "CPU Idle Driver for Xilinx Zynq processors"
8053eb82b0SKrzysztof Kozlowski	depends on (ARCH_ZYNQ || COMPILE_TEST) && !ARM64
81b98e01adSSahara	help
82d3f2950fSDaniel Lezcano	  Select this to enable cpuidle on Xilinx Zynq processors.
83d3f2950fSDaniel Lezcano
84d3f2950fSDaniel Lezcanoconfig ARM_U8500_CPUIDLE
85d3f2950fSDaniel Lezcano	bool "Cpu Idle Driver for the ST-E u8500 processors"
860e087044SDaniel Lezcano	depends on ARCH_U8500 && !ARM64
87d3f2950fSDaniel Lezcano	help
884d30d4a0SRandy Dunlap	  Select this to enable cpuidle for ST-E u8500 processors.
89d3f2950fSDaniel Lezcano
901ce3c48eSDaniel Lezcanoconfig ARM_AT91_CPUIDLE
911ce3c48eSDaniel Lezcano	bool "Cpu Idle Driver for the AT91 processors"
921ce3c48eSDaniel Lezcano	default y
9353eb82b0SKrzysztof Kozlowski	depends on (ARCH_AT91 || COMPILE_TEST) && !ARM64
94a35c6322SLinus Torvalds	help
954d30d4a0SRandy Dunlap	  Select this to enable cpuidle for AT91 processors.
96ff6a9c03SDaniel Lezcano
97ff6a9c03SDaniel Lezcanoconfig ARM_EXYNOS_CPUIDLE
98ff6a9c03SDaniel Lezcano	bool "Cpu Idle Driver for the Exynos processors"
9953eb82b0SKrzysztof Kozlowski	depends on (ARCH_EXYNOS || COMPILE_TEST) && !ARM64
100712eddf7SBartlomiej Zolnierkiewicz	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
101ff6a9c03SDaniel Lezcano	help
1024d30d4a0SRandy Dunlap	  Select this to enable cpuidle for Exynos processors.
103f50ee824SGregory CLEMENT
104f50ee824SGregory CLEMENTconfig ARM_MVEBU_V7_CPUIDLE
105f50ee824SGregory CLEMENT	bool "CPU Idle Driver for mvebu v7 family processors"
10653eb82b0SKrzysztof Kozlowski	depends on (ARCH_MVEBU || COMPILE_TEST) && !ARM64
107f50ee824SGregory CLEMENT	help
108f50ee824SGregory CLEMENT	  Select this to enable cpuidle on Armada 370, 38x and XP processors.
109860fbde4SDmitry Osipenko
110860fbde4SDmitry Osipenkoconfig ARM_TEGRA_CPUIDLE
111860fbde4SDmitry Osipenko	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
112faae6c9fSDmitry Osipenko	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
1137787943aSArnd Bergmann	depends on ARCH_SUSPEND_POSSIBLE
114860fbde4SDmitry Osipenko	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
115860fbde4SDmitry Osipenko	select ARM_CPU_SUSPEND
116860fbde4SDmitry Osipenko	help
117860fbde4SDmitry Osipenko	  Select this to enable cpuidle for NVIDIA Tegra20/30/114/124 SoCs.
118a871be6bSStephan Gerhold
119a871be6bSStephan Gerholdconfig ARM_QCOM_SPM_CPUIDLE
120a871be6bSStephan Gerhold	bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
121498ba2a8SHe Ying	depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
1227787943aSArnd Bergmann	depends on ARCH_SUSPEND_POSSIBLE
123a871be6bSStephan Gerhold	select ARM_CPU_SUSPEND
124a871be6bSStephan Gerhold	select CPU_IDLE_MULTIPLE_DRIVERS
125a871be6bSStephan Gerhold	select DT_IDLE_STATES
126a871be6bSStephan Gerhold	select QCOM_SCM
12760f3692bSAngeloGioacchino Del Regno	select QCOM_SPM
128a871be6bSStephan Gerhold	help
129a871be6bSStephan Gerhold	  Select this to enable cpuidle for Qualcomm processors.
130a871be6bSStephan Gerhold	  The Subsystem Power Manager (SPM) controls low power modes for the
131a871be6bSStephan Gerhold	  CPU and L2 cores. It interface with various system drivers to put
132a871be6bSStephan Gerhold	  the cores in low power modes.
133