OSDN Git Service

clk: qcom: lpasscc: Introduce pm autosuspend for SC7180
authorTaniya Das <tdas@codeaurora.org>
Fri, 20 Nov 2020 16:40:17 +0000 (22:10 +0530)
committerStephen Boyd <sboyd@kernel.org>
Thu, 10 Dec 2020 20:29:21 +0000 (12:29 -0800)
The LPASSCC driver's suspend/resume is invoked multiple number of times
and thus allow the device to autosuspend for 500ms.

Signed-off-by: Taniya Das <tdas@codeaurora.org>
Link: https://lore.kernel.org/r/1605890417-721-1-git-send-email-tdas@codeaurora.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/qcom/lpasscorecc-sc7180.c

index 9081649..2e0ecc3 100644 (file)
@@ -370,7 +370,10 @@ static int lpass_create_pm_clks(struct platform_device *pdev)
 {
        int ret;
 
+       pm_runtime_use_autosuspend(&pdev->dev);
+       pm_runtime_set_autosuspend_delay(&pdev->dev, 500);
        pm_runtime_enable(&pdev->dev);
+
        ret = devm_add_action_or_reset(&pdev->dev, lpass_pm_runtime_disable, &pdev->dev);
        if (ret)
                return ret;
@@ -423,7 +426,12 @@ static int lpass_core_cc_sc7180_probe(struct platform_device *pdev)
        clk_fabia_pll_configure(&lpass_lpaaudio_dig_pll, regmap,
                                &lpass_lpaaudio_dig_pll_config);
 
-       return qcom_cc_really_probe(pdev, &lpass_core_cc_sc7180_desc, regmap);
+       ret = qcom_cc_really_probe(pdev, &lpass_core_cc_sc7180_desc, regmap);
+
+       pm_runtime_mark_last_busy(&pdev->dev);
+       pm_runtime_put_autosuspend(&pdev->dev);
+
+       return ret;
 }
 
 static int lpass_hm_core_probe(struct platform_device *pdev)