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