cpuidle: tegra: Check whether PMC is ready
authorDmitry Osipenko <digetx@gmail.com>
Sun, 12 Sep 2021 20:29:07 +0000 (23:29 +0300)
committerThierry Reding <treding@nvidia.com>
Tue, 5 Oct 2021 17:11:40 +0000 (19:11 +0200)
Check whether PMC is ready before proceeding with the cpuidle registration.
This fixes racing with the PMC driver probe order, which results in a
disabled deepest CC6 idling state if cpuidle driver is probed before the
PMC.

Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/cpuidle/cpuidle-tegra.c

index 508bd9f2379294a58c91ba778058268988957cc1..9845629aeb6d404deb4a7b56e4319b3b8e7632ae 100644 (file)
@@ -337,6 +337,9 @@ static void tegra_cpuidle_setup_tegra114_c7_state(void)
 
 static int tegra_cpuidle_probe(struct platform_device *pdev)
 {
+       if (tegra_pmc_get_suspend_mode() == TEGRA_SUSPEND_NOT_READY)
+               return -EPROBE_DEFER;
+
        /* LP2 could be disabled in device-tree */
        if (tegra_pmc_get_suspend_mode() < TEGRA_SUSPEND_LP2)
                tegra_cpuidle_disable_state(TEGRA_CC6);