Skip to content

Commit

Permalink
ASoC: wm0010: Allow slow GPIO for reset
Browse files Browse the repository at this point in the history
We never set the GPIO from atomic context so there's no reason why we
can't support a GPIO that needs to sleep when configuring.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Mark Brown committed Sep 26, 2012
1 parent 76dbd2a commit fff00cb
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions sound/soc/codecs/wm0010.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ static void wm0010_halt(struct snd_soc_codec *codec)
case WM0010_STAGE2:
case WM0010_FIRMWARE:
/* Remember to put chip back into reset */
gpio_set_value(wm0010->gpio_reset, wm0010->gpio_reset_value);
gpio_set_value_cansleep(wm0010->gpio_reset,
wm0010->gpio_reset_value);
/* Disable the regulators */
regulator_disable(wm0010->dbvdd);
regulator_bulk_disable(ARRAY_SIZE(wm0010->core_supplies),
Expand Down Expand Up @@ -387,7 +388,7 @@ static int wm0010_boot(struct snd_soc_codec *codec)
}

/* Release reset */
gpio_set_value(wm0010->gpio_reset, !wm0010->gpio_reset_value);
gpio_set_value_cansleep(wm0010->gpio_reset, !wm0010->gpio_reset_value);
spin_lock_irqsave(&wm0010->irq_lock, flags);
wm0010->state = WM0010_OUT_OF_RESET;
spin_unlock_irqrestore(&wm0010->irq_lock, flags);
Expand Down Expand Up @@ -918,7 +919,8 @@ static int __devexit wm0010_spi_remove(struct spi_device *spi)

if (wm0010->gpio_reset) {
/* Remember to put chip back into reset */
gpio_set_value(wm0010->gpio_reset, wm0010->gpio_reset_value);
gpio_set_value_cansleep(wm0010->gpio_reset,
wm0010->gpio_reset_value);
}

if (wm0010->irq)
Expand Down

0 comments on commit fff00cb

Please sign in to comment.