.ops = &ak5558_dai_ops,
 };
 
-static void ak5558_power_off(struct ak5558_priv *ak5558)
+static void ak5558_reset(struct ak5558_priv *ak5558, bool active)
 {
        if (!ak5558->reset_gpiod)
                return;
 
-       gpiod_set_value_cansleep(ak5558->reset_gpiod, 1);
-       usleep_range(1000, 2000);
-}
-
-static void ak5558_power_on(struct ak5558_priv *ak5558)
-{
-       if (!ak5558->reset_gpiod)
-               return;
-
-       gpiod_set_value_cansleep(ak5558->reset_gpiod, 0);
+       gpiod_set_value_cansleep(ak5558->reset_gpiod, active);
        usleep_range(1000, 2000);
 }
 
 {
        struct ak5558_priv *ak5558 = snd_soc_component_get_drvdata(component);
 
-       ak5558_power_on(ak5558);
+       ak5558_reset(ak5558, false);
        return ak5558_set_mcki(component);
 }
 
 {
        struct ak5558_priv *ak5558 = snd_soc_component_get_drvdata(component);
 
-       ak5558_power_off(ak5558);
+       ak5558_reset(ak5558, true);
 }
 
 static int __maybe_unused ak5558_runtime_suspend(struct device *dev)
        struct ak5558_priv *ak5558 = dev_get_drvdata(dev);
 
        regcache_cache_only(ak5558->regmap, true);
-       ak5558_power_off(ak5558);
+       ak5558_reset(ak5558, true);
 
        regulator_bulk_disable(ARRAY_SIZE(ak5558->supplies),
                               ak5558->supplies);
                return ret;
        }
 
-       ak5558_power_off(ak5558);
-       ak5558_power_on(ak5558);
+       ak5558_reset(ak5558, true);
+       ak5558_reset(ak5558, false);
 
        regcache_cache_only(ak5558->regmap, false);
        regcache_mark_dirty(ak5558->regmap);