[alsa-devel] [PATCH] ASoC: rt5677: handle reset_pin logical state correctly
Anatol Pomozov
anatol.pomozov at gmail.com
Fri Jul 17 19:38:56 CEST 2015
According to the datasheet RESET is active low pin, i.e. system goes to reset
state when pin is low.
Handle logic state correctly - set reset_pin to logical 0 at boot time, and
set it to logical 1 when we need to reset the chip.
Signed-off-by: Anatol Pomozov <anatol.pomozov at gmail.com>
---
Documentation/devicetree/bindings/sound/rt5677.txt | 2 +-
sound/soc/codecs/rt5677.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/rt5677.txt b/Documentation/devicetree/bindings/sound/rt5677.txt
index f070789..1b3c13d 100644
--- a/Documentation/devicetree/bindings/sound/rt5677.txt
+++ b/Documentation/devicetree/bindings/sound/rt5677.txt
@@ -18,7 +18,7 @@ Required properties:
Optional properties:
- realtek,pow-ldo2-gpio : The GPIO that controls the CODEC's POW_LDO2 pin.
-- realtek,reset-gpio : The GPIO that controls the CODEC's RESET pin.
+- realtek,reset-gpio : The GPIO that controls the CODEC's RESET pin. Active low.
- realtek,in1-differential
- realtek,in2-differential
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c
index 3b46b35..433652f 100644
--- a/sound/soc/codecs/rt5677.c
+++ b/sound/soc/codecs/rt5677.c
@@ -4766,7 +4766,7 @@ static int rt5677_remove(struct snd_soc_codec *codec)
if (rt5677->pow_ldo2)
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
if (rt5677->reset_pin)
- gpiod_set_value_cansleep(rt5677->reset_pin, 0);
+ gpiod_set_value_cansleep(rt5677->reset_pin, 1);
return 0;
}
@@ -4783,7 +4783,7 @@ static int rt5677_suspend(struct snd_soc_codec *codec)
if (rt5677->pow_ldo2)
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
if (rt5677->reset_pin)
- gpiod_set_value_cansleep(rt5677->reset_pin, 0);
+ gpiod_set_value_cansleep(rt5677->reset_pin, 1);
}
return 0;
@@ -4797,7 +4797,7 @@ static int rt5677_resume(struct snd_soc_codec *codec)
if (rt5677->pow_ldo2)
gpiod_set_value_cansleep(rt5677->pow_ldo2, 1);
if (rt5677->reset_pin)
- gpiod_set_value_cansleep(rt5677->reset_pin, 1);
+ gpiod_set_value_cansleep(rt5677->reset_pin, 0);
if (rt5677->pow_ldo2 || rt5677->reset_pin)
msleep(10);
@@ -5142,7 +5142,7 @@ static int rt5677_i2c_probe(struct i2c_client *i2c,
rt5677->pow_ldo2 = 0;
}
rt5677->reset_pin = devm_gpiod_get_optional(&i2c->dev,
- "realtek,reset", GPIOD_OUT_HIGH);
+ "realtek,reset", GPIOD_OUT_LOW);
if (IS_ERR(rt5677->reset_pin)) {
ret = PTR_ERR(rt5677->reset_pin);
dev_err(&i2c->dev, "Failed to request RESET: %d\n", ret);
--
2.4.3.573.g4eafbef
More information about the Alsa-devel
mailing list