]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: tas2552: Allow audio enable GPIO to sleep
authorMarek Vasut <marex@nabladev.com>
Fri, 20 Feb 2026 20:22:19 +0000 (21:22 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 23 Feb 2026 14:52:21 +0000 (14:52 +0000)
The audio enable GPIO is not toggled in any critical section where it
could not sleep, allow the audio enable GPIO to sleep. This allows the
driver to operate the audio enable GPIO connected to I2C GPIO expander.

Signed-off-by: Marek Vasut <marex@nabladev.com>
Link: https://patch.msgid.link/20260220202332.241035-1-marex@nabladev.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tas2552.c

index 43449d7c25843016b0b18a7f9e9c1e61b77ee839..80206c2e09462af904b0da985477ccf8722c6182 100644 (file)
@@ -487,7 +487,7 @@ static int tas2552_runtime_suspend(struct device *dev)
        regcache_cache_only(tas2552->regmap, true);
        regcache_mark_dirty(tas2552->regmap);
 
-       gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value_cansleep(tas2552->enable_gpio, 0);
 
        return 0;
 }
@@ -496,7 +496,7 @@ static int tas2552_runtime_resume(struct device *dev)
 {
        struct tas2552_data *tas2552 = dev_get_drvdata(dev);
 
-       gpiod_set_value(tas2552->enable_gpio, 1);
+       gpiod_set_value_cansleep(tas2552->enable_gpio, 1);
 
        tas2552_sw_shutdown(tas2552, 0);
 
@@ -583,7 +583,7 @@ static int tas2552_component_probe(struct snd_soc_component *component)
                return ret;
        }
 
-       gpiod_set_value(tas2552->enable_gpio, 1);
+       gpiod_set_value_cansleep(tas2552->enable_gpio, 1);
 
        ret = pm_runtime_resume_and_get(component->dev);
        if (ret < 0) {
@@ -608,7 +608,7 @@ static int tas2552_component_probe(struct snd_soc_component *component)
 
 probe_fail:
        pm_runtime_put_noidle(component->dev);
-       gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value_cansleep(tas2552->enable_gpio, 0);
 
        regulator_bulk_disable(ARRAY_SIZE(tas2552->supplies),
                                        tas2552->supplies);
@@ -621,7 +621,7 @@ static void tas2552_component_remove(struct snd_soc_component *component)
 
        pm_runtime_put(component->dev);
 
-       gpiod_set_value(tas2552->enable_gpio, 0);
+       gpiod_set_value_cansleep(tas2552->enable_gpio, 0);
 };
 
 #ifdef CONFIG_PM