From: Sapthagiri Baratam <sapthagiri.bara...@cirrus.com>

Don't call runtime_put_sync when clk32k_ref is ARIZONA_32KZ_MCLK2
as there is no corresponding runtime_get_sync call.

MCLK1 is not in the AoD power domain so if it is used as 32kHz clock
source we need to hold a runtime PM reference to keep the device from
going into low power mode.

fixes: cdd8da8cc66b ("mfd: arizona: Add gating of external MCLKn clocks")
Signed-off-by: Sapthagiri Baratam <sapthagiri.bara...@cirrus.com>
---
Changes in v2:
- changed signed-off in commit message to full name

 drivers/mfd/arizona-core.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index c7c3d72..190f9a4 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -53,8 +53,10 @@ int arizona_clk32k_enable(struct arizona *arizona)
                        if (ret != 0)
                                goto err_ref;
                        ret = clk_prepare_enable(arizona->mclk[ARIZONA_MCLK1]);
-                       if (ret != 0)
-                               goto err_pm;
+                       if (ret != 0) {
+                               pm_runtime_put_sync(arizona->dev);
+                               goto err_ref;
+                       }
                        break;
                case ARIZONA_32KZ_MCLK2:
                        ret = clk_prepare_enable(arizona->mclk[ARIZONA_MCLK2]);
@@ -68,8 +70,6 @@ int arizona_clk32k_enable(struct arizona *arizona)
                                         ARIZONA_CLK_32K_ENA);
        }
 
-err_pm:
-       pm_runtime_put_sync(arizona->dev);
 err_ref:
        if (ret != 0)
                arizona->clk32k_ref--;
-- 
1.9.1

Reply via email to