Skip to content

Commit

Permalink
ASoC: tlv320aic3x: Use snd_soc_dapm_mixer_update_power
Browse files Browse the repository at this point in the history
Use snd_soc_dapm_mixer_update_power() instead of reimplementing its
functionality.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Lars-Peter Clausen authored and Mark Brown committed Jul 24, 2013
1 parent 6b3fc03 commit 5d99d77
Showing 1 changed file with 16 additions and 33 deletions.
49 changes: 16 additions & 33 deletions sound/soc/codecs/tlv320aic3x.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,53 +147,36 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
int max = mc->max;
unsigned int mask = (1 << fls(max)) - 1;
unsigned int invert = mc->invert;
unsigned short val, val_mask;
int ret;
struct snd_soc_dapm_path *path;
int found = 0;
unsigned short val;
struct snd_soc_dapm_update update;
int connect, change;

val = (ucontrol->value.integer.value[0] & mask);

mask = 0xf;
if (val)
val = mask;

connect = !!val;

if (invert)
val = mask - val;
val_mask = mask << shift;
val = val << shift;

mutex_lock(&widget->codec->mutex);

if (snd_soc_test_bits(widget->codec, reg, val_mask, val)) {
/* find dapm widget path assoc with kcontrol */
list_for_each_entry(path, &widget->dapm->card->paths, list) {
if (path->kcontrol != kcontrol)
continue;
mask <<= shift;
val <<= shift;

/* found, now check type */
found = 1;
if (val)
/* new connection */
path->connect = invert ? 0 : 1;
else
/* old connection must be powered down */
path->connect = invert ? 1 : 0;
change = snd_soc_test_bits(widget->codec, val, mask, reg);
if (change) {
update.kcontrol = kcontrol;
update.reg = reg;
update.mask = mask;
update.val = val;

dapm_mark_dirty(path->source, "tlv320aic3x source");
dapm_mark_dirty(path->sink, "tlv320aic3x sink");

break;
}
snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, connect,
&update);
}

mutex_unlock(&widget->codec->mutex);

if (found)
snd_soc_dapm_sync(widget->dapm);

ret = snd_soc_update_bits_locked(widget->codec, reg, val_mask, val);
return ret;
return change;
}

/*
Expand Down

0 comments on commit 5d99d77

Please sign in to comment.