LF-3747-7: ak4458: Fix issue with reset-gpios
authorShengjiu Wang <shengjiu.wang@nxp.com>
Fri, 23 Apr 2021 08:38:04 +0000 (16:38 +0800)
committerShengjiu Wang <shengjiu.wang@nxp.com>
Fri, 23 Apr 2021 09:40:06 +0000 (17:40 +0800)
reset_control_deassert() need to be called before
reset_control_assert()

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
sound/soc/codecs/ak4458.c

index 4733f07..de1accf 100644 (file)
@@ -622,7 +622,10 @@ static void ak4458_reset(struct ak4458_priv *ak4458, bool active)
                gpiod_set_value_cansleep(ak4458->reset_gpiod, active);
                usleep_range(1000, 2000);
        } else if (!IS_ERR_OR_NULL(ak4458->reset)) {
-               reset_control_assert(ak4458->reset);
+               if (active)
+                       reset_control_assert(ak4458->reset);
+               else
+                       reset_control_deassert(ak4458->reset);
                msleep(5);
        }
 }
@@ -659,7 +662,6 @@ static int __maybe_unused ak4458_runtime_resume(struct device *dev)
        if (ak4458->mute_gpiod)
                gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
 
-       ak4458_reset(ak4458, true);
        ak4458_reset(ak4458, false);
 
        regcache_cache_only(ak4458->regmap, false);