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