1# SPDX-License-Identifier: GPL-2.0-only
2#
3# ARM CPU Idle drivers
4#
5config ARM_CPUIDLE
6	bool "Generic ARM/ARM64 CPU idle Driver"
7	select DT_IDLE_STATES
8	select CPU_IDLE_MULTIPLE_DRIVERS
9	help
10	  Select this to enable generic cpuidle driver for ARM.
11	  It provides a generic idle driver whose idle states are configured
12	  at run-time through DT nodes. The CPUidle suspend backend is
13	  initialized by calling the CPU operations init idle hook
14	  provided by architecture code.
15
16config ARM_PSCI_CPUIDLE
17	bool "PSCI CPU idle Driver"
18	depends on ARM_PSCI_FW
19	select DT_IDLE_STATES
20	select CPU_IDLE_MULTIPLE_DRIVERS
21	help
22	  Select this to enable PSCI firmware based CPUidle driver for ARM.
23	  It provides an idle driver that is capable of detecting and
24	  managing idle states through the PSCI firmware interface.
25
26config ARM_PSCI_CPUIDLE_DOMAIN
27	bool "PSCI CPU idle Domain"
28	depends on ARM_PSCI_CPUIDLE
29	depends on PM_GENERIC_DOMAINS_OF
30	default y
31	help
32	  Select this to enable the PSCI based CPUidle driver to use PM domains,
33	  which is needed to support the hierarchical DT based layout of the
34	  idle states.
35
36config ARM_BIG_LITTLE_CPUIDLE
37	bool "Support for ARM big.LITTLE processors"
38	depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS || COMPILE_TEST
39	depends on MCPM && !ARM64
40	select ARM_CPU_SUSPEND
41	select CPU_IDLE_MULTIPLE_DRIVERS
42	select DT_IDLE_STATES
43	help
44	  Select this option to enable CPU idle driver for big.LITTLE based
45	  ARM systems. Driver manages CPUs coordination through MCPM and
46	  define different C-states for little and big cores through the
47	  multiple CPU idle drivers infrastructure.
48
49config ARM_CLPS711X_CPUIDLE
50	bool "CPU Idle Driver for CLPS711X processors"
51	depends on ARCH_CLPS711X && !ARM64 || COMPILE_TEST
52	help
53	  Select this to enable cpuidle on Cirrus Logic CLPS711X SOCs.
54
55config ARM_HIGHBANK_CPUIDLE
56	bool "CPU Idle Driver for Calxeda processors"
57	depends on ARM_PSCI && !ARM64
58	select ARM_CPU_SUSPEND
59	help
60	  Select this to enable cpuidle on Calxeda processors.
61
62config ARM_KIRKWOOD_CPUIDLE
63	bool "CPU Idle Driver for Marvell Kirkwood SoCs"
64	depends on (MACH_KIRKWOOD || COMPILE_TEST) && !ARM64
65	help
66	  This adds the CPU Idle driver for Marvell Kirkwood SoCs.
67
68config ARM_ZYNQ_CPUIDLE
69	bool "CPU Idle Driver for Xilinx Zynq processors"
70	depends on (ARCH_ZYNQ || COMPILE_TEST) && !ARM64
71	help
72	  Select this to enable cpuidle on Xilinx Zynq processors.
73
74config ARM_U8500_CPUIDLE
75	bool "Cpu Idle Driver for the ST-E u8500 processors"
76	depends on ARCH_U8500 && !ARM64
77	help
78	  Select this to enable cpuidle for ST-E u8500 processors.
79
80config ARM_AT91_CPUIDLE
81	bool "Cpu Idle Driver for the AT91 processors"
82	default y
83	depends on (ARCH_AT91 || COMPILE_TEST) && !ARM64
84	help
85	  Select this to enable cpuidle for AT91 processors.
86
87config ARM_EXYNOS_CPUIDLE
88	bool "Cpu Idle Driver for the Exynos processors"
89	depends on (ARCH_EXYNOS || COMPILE_TEST) && !ARM64
90	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
91	help
92	  Select this to enable cpuidle for Exynos processors.
93
94config ARM_MVEBU_V7_CPUIDLE
95	bool "CPU Idle Driver for mvebu v7 family processors"
96	depends on (ARCH_MVEBU || COMPILE_TEST) && !ARM64
97	help
98	  Select this to enable cpuidle on Armada 370, 38x and XP processors.
99
100config ARM_TEGRA_CPUIDLE
101	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
102	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
103	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
104	select ARM_CPU_SUSPEND
105	help
106	  Select this to enable cpuidle for NVIDIA Tegra20/30/114/124 SoCs.
107
108config ARM_QCOM_SPM_CPUIDLE
109	bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
110	depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
111	select ARM_CPU_SUSPEND
112	select CPU_IDLE_MULTIPLE_DRIVERS
113	select DT_IDLE_STATES
114	select QCOM_SCM
115	select QCOM_SPM
116	help
117	  Select this to enable cpuidle for Qualcomm processors.
118	  The Subsystem Power Manager (SPM) controls low power modes for the
119	  CPU and L2 cores. It interface with various system drivers to put
120	  the cores in low power modes.
121