ASoC: tpa6130a2: Simplify power state management
authorPeter Ujfalusi <peter.ujfalusi@nokia.com>
Tue, 30 Nov 2010 14:00:00 +0000 (16:00 +0200)
committerLiam Girdwood <lrg@slimlogic.co.uk>
Tue, 30 Nov 2010 15:39:39 +0000 (15:39 +0000)
Use simpler way to avoid setting the same power state
for the amplifier.
Simplifies the check introduced by patch:
ASoC: tpa6130a2: Fix unbalanced regulator disables

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Cc: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
sound/soc/codecs/tpa6130a2.c

index 9d61a1d..199edf0 100644 (file)
@@ -41,7 +41,7 @@ struct tpa6130a2_data {
        unsigned char regs[TPA6130A2_CACHEREGNUM];
        struct regulator *supply;
        int power_gpio;
-       unsigned char power_state;
+       u8 power_state:1;
        enum tpa_model id;
 };
 
@@ -116,7 +116,7 @@ static int tpa6130a2_initialize(void)
        return ret;
 }
 
-static int tpa6130a2_power(int power)
+static int tpa6130a2_power(u8 power)
 {
        struct  tpa6130a2_data *data;
        u8      val;
@@ -126,8 +126,10 @@ static int tpa6130a2_power(int power)
        data = i2c_get_clientdata(tpa6130a2_client);
 
        mutex_lock(&data->mutex);
-       if (power && !data->power_state) {
+       if (power == data->power_state)
+               goto exit;
 
+       if (power) {
                ret = regulator_enable(data->supply);
                if (ret != 0) {
                        dev_err(&tpa6130a2_client->dev,
@@ -154,7 +156,7 @@ static int tpa6130a2_power(int power)
                val = tpa6130a2_read(TPA6130A2_REG_CONTROL);
                val &= ~TPA6130A2_SWS;
                tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val);
-       } else if (!power && data->power_state) {
+       } else {
                /* set SWS */
                val = tpa6130a2_read(TPA6130A2_REG_CONTROL);
                val |= TPA6130A2_SWS;