Loading...
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
27 The driver has limitations when used with PREEMPT_RT:
28 - If the idle states are described with the non-hierarchical layout,
29 all idle states are still available.
30
31 - If the idle states are described with the hierarchical layout,
32 only the idle states defined per CPU are available, but not the ones
33 being shared among a group of CPUs (aka cluster idle states).
34
35config ARM_PSCI_CPUIDLE_DOMAIN
36 bool "PSCI CPU idle Domain"
37 depends on ARM_PSCI_CPUIDLE
38 depends on PM_GENERIC_DOMAINS_OF
39 select DT_IDLE_GENPD
40 default y
41 help
42 Select this to enable the PSCI based CPUidle driver to use PM domains,
43 which is needed to support the hierarchical DT based layout of the
44 idle states.
45
46config ARM_BIG_LITTLE_CPUIDLE
47 bool "Support for ARM big.LITTLE processors"
48 depends on ARCH_VEXPRESS_TC2_PM || ARCH_EXYNOS || COMPILE_TEST
49 depends on MCPM && !ARM64
50 select ARM_CPU_SUSPEND
51 select CPU_IDLE_MULTIPLE_DRIVERS
52 select DT_IDLE_STATES
53 help
54 Select this option to enable CPU idle driver for big.LITTLE based
55 ARM systems. Driver manages CPUs coordination through MCPM and
56 define different C-states for little and big cores through the
57 multiple CPU idle drivers infrastructure.
58
59config ARM_CLPS711X_CPUIDLE
60 bool "CPU Idle Driver for CLPS711X processors"
61 depends on ARCH_CLPS711X && !ARM64 || COMPILE_TEST
62 help
63 Select this to enable cpuidle on Cirrus Logic CLPS711X SOCs.
64
65config ARM_HIGHBANK_CPUIDLE
66 bool "CPU Idle Driver for Calxeda processors"
67 depends on ARM_PSCI && !ARM64
68 select ARM_CPU_SUSPEND
69 help
70 Select this to enable cpuidle on Calxeda processors.
71
72config ARM_KIRKWOOD_CPUIDLE
73 bool "CPU Idle Driver for Marvell Kirkwood SoCs"
74 depends on (MACH_KIRKWOOD || COMPILE_TEST) && !ARM64
75 help
76 This adds the CPU Idle driver for Marvell Kirkwood SoCs.
77
78config ARM_ZYNQ_CPUIDLE
79 bool "CPU Idle Driver for Xilinx Zynq processors"
80 depends on (ARCH_ZYNQ || COMPILE_TEST) && !ARM64
81 help
82 Select this to enable cpuidle on Xilinx Zynq processors.
83
84config ARM_U8500_CPUIDLE
85 bool "Cpu Idle Driver for the ST-E u8500 processors"
86 depends on ARCH_U8500 && !ARM64
87 help
88 Select this to enable cpuidle for ST-E u8500 processors.
89
90config ARM_AT91_CPUIDLE
91 bool "Cpu Idle Driver for the AT91 processors"
92 default y
93 depends on (ARCH_AT91 || COMPILE_TEST) && !ARM64
94 help
95 Select this to enable cpuidle for AT91 processors.
96
97config ARM_EXYNOS_CPUIDLE
98 bool "Cpu Idle Driver for the Exynos processors"
99 depends on (ARCH_EXYNOS || COMPILE_TEST) && !ARM64
100 select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
101 help
102 Select this to enable cpuidle for Exynos processors.
103
104config ARM_MVEBU_V7_CPUIDLE
105 bool "CPU Idle Driver for mvebu v7 family processors"
106 depends on (ARCH_MVEBU || COMPILE_TEST) && !ARM64
107 help
108 Select this to enable cpuidle on Armada 370, 38x and XP processors.
109
110config ARM_TEGRA_CPUIDLE
111 bool "CPU Idle Driver for NVIDIA Tegra SoCs"
112 depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
113 depends on ARCH_SUSPEND_POSSIBLE
114 select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
115 select ARM_CPU_SUSPEND
116 help
117 Select this to enable cpuidle for NVIDIA Tegra20/30/114/124 SoCs.
118
119config ARM_QCOM_SPM_CPUIDLE
120 bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
121 depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
122 depends on ARCH_SUSPEND_POSSIBLE
123 select ARM_CPU_SUSPEND
124 select CPU_IDLE_MULTIPLE_DRIVERS
125 select DT_IDLE_STATES
126 select QCOM_SCM
127 select QCOM_SPM
128 help
129 Select this to enable cpuidle for Qualcomm processors.
130 The Subsystem Power Manager (SPM) controls low power modes for the
131 CPU and L2 cores. It interface with various system drivers to put
132 the cores in low power modes.
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 && !ARM64
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
111 select ARM_CPU_SUSPEND
112 select CPU_IDLE_MULTIPLE_DRIVERS
113 select DT_IDLE_STATES
114 select QCOM_SCM
115 help
116 Select this to enable cpuidle for Qualcomm processors.
117 The Subsystem Power Manager (SPM) controls low power modes for the
118 CPU and L2 cores. It interface with various system drivers to put
119 the cores in low power modes.