ASoC: dmic: Allow GPIO operations to sleep
authorMark Brown <broonie@kernel.org>
Wed, 22 Apr 2020 08:35:50 +0000 (09:35 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 22 Apr 2020 12:15:57 +0000 (13:15 +0100)
If there is a power GPIO provided we control it from DAPM context so there
is no problem with a sleeping GPIO, use the _cansleep() version of the API
to allow this.

Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20200422083550.50711-1-broonie@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/dmic.c

index f5560a4..5d079d9 100644 (file)
@@ -59,14 +59,14 @@ static int dmic_aif_event(struct snd_soc_dapm_widget *w,
        switch (event) {
        case SND_SOC_DAPM_POST_PMU:
                if (dmic->gpio_en)
-                       gpiod_set_value(dmic->gpio_en, 1);
+                       gpiod_set_value_cansleep(dmic->gpio_en, 1);
 
                if (dmic->wakeup_delay)
                        msleep(dmic->wakeup_delay);
                break;
        case SND_SOC_DAPM_POST_PMD:
                if (dmic->gpio_en)
-                       gpiod_set_value(dmic->gpio_en, 0);
+                       gpiod_set_value_cansleep(dmic->gpio_en, 0);
                break;
        }