Skip to content

Commit

Permalink
ASoC: dapm: Convert pin switches to use snd_soc_card
Browse files Browse the repository at this point in the history
Since the addition of the non-CODEC control adds card controls like the
DAPM pin switch have been broken as they are expecting the private data
for the control to be the CODEC but it's now the card. Fix that for the
pin switches, an audit of other drivers is required.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
  • Loading branch information
Mark Brown committed Feb 15, 2012
1 parent 64e60f9 commit 48a8c39
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2657,15 +2657,15 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_info_pin_switch);
int snd_soc_dapm_get_pin_switch(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
const char *pin = (const char *)kcontrol->private_value;

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

ucontrol->value.integer.value[0] =
snd_soc_dapm_get_pin_status(&codec->dapm, pin);
snd_soc_dapm_get_pin_status(&card->dapm, pin);

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

return 0;
}
Expand All @@ -2680,19 +2680,19 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_switch);
int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
const char *pin = (const char *)kcontrol->private_value;

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

if (ucontrol->value.integer.value[0])
snd_soc_dapm_enable_pin(&codec->dapm, pin);
snd_soc_dapm_enable_pin(&card->dapm, pin);
else
snd_soc_dapm_disable_pin(&codec->dapm, pin);
snd_soc_dapm_disable_pin(&card->dapm, pin);

snd_soc_dapm_sync(&codec->dapm);
snd_soc_dapm_sync(&card->dapm);

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

return 0;
}
Expand Down

0 comments on commit 48a8c39

Please sign in to comment.