ASoC: rt5677: use 'active low' logic for reset pin
authorAnatol Pomozov <anatol.pomozov@gmail.com>
Thu, 29 Oct 2015 22:31:59 +0000 (15:31 -0700)
committerMark Brown <broonie@kernel.org>
Mon, 16 Nov 2015 10:14:32 +0000 (10:14 +0000)
According to the datasheet RESET is active low pin, i.e. system goes to
reset state when pin signal is low.

The previous implementeation was assuming the pin is configured as
'active high' in DTS. Changle the gpio handling code and DTS configuration
to 'active low'.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/devicetree/bindings/sound/rt5677.txt
sound/soc/codecs/rt5677.c

index f07078997f87e0185cb3a2518893d97885ded472..1b3c13d206ffed5150ac78f0beefb159fc44eaba 100644 (file)
@@ -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
index b4cd7e3bf5f89f9ea940528f233f017151788a4b..f73fd125e49cdbaa9db846614cf52803d24ac178 100644 (file)
@@ -4766,7 +4766,7 @@ static int rt5677_remove(struct snd_soc_codec *codec)
 
        regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec);
        gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
-       gpiod_set_value_cansleep(rt5677->reset_pin, 0);
+       gpiod_set_value_cansleep(rt5677->reset_pin, 1);
 
        return 0;
 }
@@ -4781,7 +4781,7 @@ static int rt5677_suspend(struct snd_soc_codec *codec)
                regcache_mark_dirty(rt5677->regmap);
 
                gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
-               gpiod_set_value_cansleep(rt5677->reset_pin, 0);
+               gpiod_set_value_cansleep(rt5677->reset_pin, 1);
        }
 
        return 0;
@@ -4793,7 +4793,7 @@ static int rt5677_resume(struct snd_soc_codec *codec)
 
        if (!rt5677->dsp_vad_en) {
                gpiod_set_value_cansleep(rt5677->pow_ldo2, 1);
-               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);
 
@@ -5138,7 +5138,7 @@ static int rt5677_i2c_probe(struct i2c_client *i2c,
                return ret;
        }
        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);