- Fix the C7 state on the tegra114 by setting the L2-no-flush flag

unconditionally (Dmitry Osipenko)
 
 - Remove the do_idle firmware call as it is not supported by the ATF
   on tegra SoC (Dmitry Osipenko)
 
 - Add a missing dependency on CONFIG_MMU to prevent linkage error (He
   Ying)
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEGn3N4YVz0WNVyHskqDIjiipP6E8FAmBvQ3UACgkQqDIjiipP
 6E/qqQgAiZ7vmvPhPLXSGJljOKkMyhp0AMKXJPlpJzOLG1DeKrXbuJB4kEkDiExj
 qN/cOL/hcQ+ErFxwmpoCRvz+Hg3gZEemdUQFLiSk+HXVAPCs9jmSpM36vZO80Vga
 HMQk0NBs/rx0YWfq5XHPyuEf+/Z+gtsXxi88jrzwVqsHYokp/zX/KcrhslStpg1S
 BWyY2Mgs5R+yxzCPgP6ARs11+EYyFxdUv6goRDf87xiCa+YBWcpYLDlqKsviMkRI
 Qcjm68N200b80F5CLyF9tDSVAeSxcSrKcACr1sGJiI1VeGmjnoHFhuPFobyF3O5h
 ubBVYRMZj1cvevbknsL1YBSeL/7ACg==
 =MMFo
 -----END PGP SIGNATURE-----

Merge tag 'cpuidle-v5.13-rc1' of https://git.linaro.org/people/daniel.lezcano/linux

Pull ARM cpuidle updates for v5.13 from Daniel Lezcano:

"- Fix the C7 state on the tegra114 by setting the L2-no-flush flag
   unconditionally (Dmitry Osipenko)

 - Remove the do_idle firmware call as it is not supported by the ATF
   on tegra SoC (Dmitry Osipenko)

 - Add a missing dependency on CONFIG_MMU to prevent linkage error (He
   Ying)"

* tag 'cpuidle-v5.13-rc1' of https://git.linaro.org/people/daniel.lezcano/linux:
  cpuidle: Fix ARM_QCOM_SPM_CPUIDLE configuration
  cpuidle: tegra: Remove do_idle firmware call
  cpuidle: tegra: Fix C7 idling state on Tegra114
This commit is contained in:
Rafael J. Wysocki 2021-04-08 20:04:41 +02:00
commit 31c6ae4762
2 changed files with 5 additions and 16 deletions

View File

@ -107,7 +107,7 @@ config ARM_TEGRA_CPUIDLE
config ARM_QCOM_SPM_CPUIDLE
bool "CPU Idle Driver for Qualcomm Subsystem Power Manager (SPM)"
depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64
depends on (ARCH_QCOM || COMPILE_TEST) && !ARM64 && MMU
select ARM_CPU_SUSPEND
select CPU_IDLE_MULTIPLE_DRIVERS
select DT_IDLE_STATES

View File

@ -48,11 +48,6 @@ enum tegra_state {
static atomic_t tegra_idle_barrier;
static atomic_t tegra_abort_flag;
static inline bool tegra_cpuidle_using_firmware(void)
{
return firmware_ops->prepare_idle && firmware_ops->do_idle;
}
static void tegra_cpuidle_report_cpus_state(void)
{
unsigned long cpu, lcpu, csr;
@ -135,13 +130,9 @@ static int tegra_cpuidle_c7_enter(void)
{
int err;
if (tegra_cpuidle_using_firmware()) {
err = call_firmware_op(prepare_idle, TF_PM_MODE_LP2_NOFLUSH_L2);
if (err)
return err;
return call_firmware_op(do_idle, 0);
}
err = call_firmware_op(prepare_idle, TF_PM_MODE_LP2_NOFLUSH_L2);
if (err && err != -ENOSYS)
return err;
return cpu_suspend(0, tegra30_pm_secondary_cpu_suspend);
}
@ -356,9 +347,7 @@ static int tegra_cpuidle_probe(struct platform_device *pdev)
* is disabled.
*/
if (!IS_ENABLED(CONFIG_PM_SLEEP)) {
if (!tegra_cpuidle_using_firmware())
tegra_cpuidle_disable_state(TEGRA_C7);
tegra_cpuidle_disable_state(TEGRA_C7);
tegra_cpuidle_disable_state(TEGRA_CC6);
}