forked from Minki/linux
81d549e0c8
PSCI firmware is the standard power management control for all ARM64 based platforms and it is also deployed on some ARM 32 bit platforms to date. Idle state entry in PSCI is currently achieved by calling arm_cpuidle_init() and arm_cpuidle_suspend() in a generic idle driver, which in turn relies on ARM/ARM64 CPUidle back-end to relay the call into PSCI firmware if PSCI is the boot method. Given that PSCI is the standard idle entry method on ARM64 systems (which means that no other CPUidle driver are expected on ARM64 platforms - so PSCI is already a generic idle driver), in order to simplify idle entry and code maintenance, it makes sense to have a PSCI specific idle driver so that idle code that it is currently living in drivers/firmware directory can be hoisted out of it and moved where it belongs, into a full-fledged PSCI driver, leaving PSCI code in drivers/firmware as a pure firmware interface, as it should be. Implement a PSCI CPUidle driver. By default it is a silent Kconfig entry which is left unselected, since it selection would clash with the generic ARM CPUidle driver that provides a PSCI based idle driver through the arm/arm64 arches back-ends CPU operations. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> Cc: Ulf Hansson <ulf.hansson@linaro.org> Cc: Sudeep Holla <sudeep.holla@arm.com> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> Signed-off-by: Will Deacon <will@kernel.org>
33 lines
1.3 KiB
Makefile
33 lines
1.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for cpuidle.
|
|
#
|
|
|
|
obj-y += cpuidle.o driver.o governor.o sysfs.o governors/
|
|
obj-$(CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED) += coupled.o
|
|
obj-$(CONFIG_DT_IDLE_STATES) += dt_idle_states.o
|
|
obj-$(CONFIG_ARCH_HAS_CPU_RELAX) += poll_state.o
|
|
|
|
##################################################################################
|
|
# ARM SoC drivers
|
|
obj-$(CONFIG_ARM_MVEBU_V7_CPUIDLE) += cpuidle-mvebu-v7.o
|
|
obj-$(CONFIG_ARM_BIG_LITTLE_CPUIDLE) += cpuidle-big_little.o
|
|
obj-$(CONFIG_ARM_CLPS711X_CPUIDLE) += cpuidle-clps711x.o
|
|
obj-$(CONFIG_ARM_HIGHBANK_CPUIDLE) += cpuidle-calxeda.o
|
|
obj-$(CONFIG_ARM_KIRKWOOD_CPUIDLE) += cpuidle-kirkwood.o
|
|
obj-$(CONFIG_ARM_ZYNQ_CPUIDLE) += cpuidle-zynq.o
|
|
obj-$(CONFIG_ARM_U8500_CPUIDLE) += cpuidle-ux500.o
|
|
obj-$(CONFIG_ARM_AT91_CPUIDLE) += cpuidle-at91.o
|
|
obj-$(CONFIG_ARM_EXYNOS_CPUIDLE) += cpuidle-exynos.o
|
|
obj-$(CONFIG_ARM_CPUIDLE) += cpuidle-arm.o
|
|
obj-$(CONFIG_ARM_PSCI_CPUIDLE) += cpuidle-psci.o
|
|
|
|
###############################################################################
|
|
# MIPS drivers
|
|
obj-$(CONFIG_MIPS_CPS_CPUIDLE) += cpuidle-cps.o
|
|
|
|
###############################################################################
|
|
# POWERPC drivers
|
|
obj-$(CONFIG_PSERIES_CPUIDLE) += cpuidle-pseries.o
|
|
obj-$(CONFIG_POWERNV_CPUIDLE) += cpuidle-powernv.o
|