mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-07 13:53:24 +00:00
ASoC: tas5086: use sleeping variants of gpiod API
The driver does not access reset GPIO in atomic contexts so it is usable with GPIOs that may sleep during access. Switch to using gpiod_set_value_cansleep(). Also the reset GPIO is configured as output at the time it is acquired, there is no need to use gpiod_direction_output() when executing reset sequence. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Link: https://patch.msgid.link/ZsPty8oNMQk4YTl1@google.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e6c1d90682
commit
5f83ee4b1f
@ -463,9 +463,9 @@ static void tas5086_reset(struct tas5086_private *priv)
|
||||
{
|
||||
if (priv->reset) {
|
||||
/* Reset codec - minimum assertion time is 400ns */
|
||||
gpiod_direction_output(priv->reset, 1);
|
||||
gpiod_set_value_cansleep(priv->reset, 1);
|
||||
udelay(1);
|
||||
gpiod_set_value(priv->reset, 0);
|
||||
gpiod_set_value_cansleep(priv->reset, 0);
|
||||
|
||||
/* Codec needs ~15ms to wake up */
|
||||
msleep(15);
|
||||
@ -866,9 +866,10 @@ static void tas5086_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct tas5086_private *priv = snd_soc_component_get_drvdata(component);
|
||||
|
||||
if (priv->reset)
|
||||
if (priv->reset) {
|
||||
/* Set codec to the reset state */
|
||||
gpiod_set_value(priv->reset, 1);
|
||||
gpiod_set_value_cansleep(priv->reset, 1);
|
||||
}
|
||||
|
||||
regulator_bulk_disable(ARRAY_SIZE(priv->supplies), priv->supplies);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user