From 41e4398ad7af12646c43825cded8b6e6b39c4eda Mon Sep 17 00:00:00 2001 From: Maulik Shah Date: Thu, 13 Aug 2020 15:49:18 +0530 Subject: [PATCH] cpuidle: lpm-levels: Set suspend and s2idle ops later during probe There is a possibility of failing probe after setting suspend and s2idle ops. Register suspend ops later during probe after which there is no failure. While at this, also add missing dma_free_coherent call. Change-Id: I824f5d433623a4d7309875a61c68778f74d139f7 Signed-off-by: Maulik Shah --- drivers/cpuidle/lpm-levels.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/cpuidle/lpm-levels.c b/drivers/cpuidle/lpm-levels.c index 829cfe9aea7c..0e90d79f0972 100644 --- a/drivers/cpuidle/lpm-levels.c +++ b/drivers/cpuidle/lpm-levels.c @@ -1758,8 +1758,6 @@ static int lpm_probe(struct platform_device *pdev) * core. BUG in existing code but no known issues possibly because of * how late lpm_levels gets initialized. */ - suspend_set_ops(&lpm_suspend_ops); - s2idle_set_ops(&lpm_s2idle_ops); for_each_possible_cpu(cpu) { cpu_histtimer = &per_cpu(histtimer, cpu); hrtimer_init(cpu_histtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -1807,11 +1805,15 @@ static int lpm_probe(struct platform_device *pdev) goto failed; } + suspend_set_ops(&lpm_suspend_ops); + s2idle_set_ops(&lpm_s2idle_ops); return 0; failed: free_cluster_node(lpm_root_node); lpm_root_node = NULL; + dma_free_coherent(&pdev->dev, size, lpm_debug, lpm_debug_phys); + return ret; }