mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
ASoC: adau1701: Use gpio_set_value_cansleep()
The GPIO manipulation done by this driver is never in atomic context so we can use gpio_set_value_cansleep() and support GPIOs that can't be set from atomic context. Signed-off-by: Mark Brown <broonie@linaro.org> Acked-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
ba51cbb820
commit
9190aeb4ec
1 changed files with 10 additions and 10 deletions
|
@ -247,21 +247,21 @@ static int adau1701_reset(struct snd_soc_codec *codec, unsigned int clkdiv)
|
||||||
gpio_is_valid(adau1701->gpio_pll_mode[1])) {
|
gpio_is_valid(adau1701->gpio_pll_mode[1])) {
|
||||||
switch (clkdiv) {
|
switch (clkdiv) {
|
||||||
case 64:
|
case 64:
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[0], 0);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[0], 0);
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[1], 0);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[1], 0);
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256:
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[0], 0);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[0], 0);
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[1], 1);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[1], 1);
|
||||||
break;
|
break;
|
||||||
case 384:
|
case 384:
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[0], 1);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[0], 1);
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[1], 0);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[1], 0);
|
||||||
break;
|
break;
|
||||||
case 0: /* fallback */
|
case 0: /* fallback */
|
||||||
case 512:
|
case 512:
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[0], 1);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[0], 1);
|
||||||
gpio_set_value(adau1701->gpio_pll_mode[1], 1);
|
gpio_set_value_cansleep(adau1701->gpio_pll_mode[1], 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,10 +269,10 @@ static int adau1701_reset(struct snd_soc_codec *codec, unsigned int clkdiv)
|
||||||
adau1701->pll_clkdiv = clkdiv;
|
adau1701->pll_clkdiv = clkdiv;
|
||||||
|
|
||||||
if (gpio_is_valid(adau1701->gpio_nreset)) {
|
if (gpio_is_valid(adau1701->gpio_nreset)) {
|
||||||
gpio_set_value(adau1701->gpio_nreset, 0);
|
gpio_set_value_cansleep(adau1701->gpio_nreset, 0);
|
||||||
/* minimum reset time is 20ns */
|
/* minimum reset time is 20ns */
|
||||||
udelay(1);
|
udelay(1);
|
||||||
gpio_set_value(adau1701->gpio_nreset, 1);
|
gpio_set_value_cansleep(adau1701->gpio_nreset, 1);
|
||||||
/* power-up time may be as long as 85ms */
|
/* power-up time may be as long as 85ms */
|
||||||
mdelay(85);
|
mdelay(85);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue