diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-30 08:37:08 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-10-30 09:24:41 -0400 |
commit | 762b8df748d83c14070afbf0c6f8c0f4a91a13bf (patch) | |
tree | 47298a6a90cd268e57469b55aec0d8cb8d6ad675 | |
parent | c3e5203bed1999df716e3c7119f6749523eb952f (diff) |
ALSA: ASoC: Fix mono controls after conversion to support full int masks
When ASoC was converted to support full int width masks SOC_SINGLE_VALUE()
omitted the assignment of rshift, causing the control operatins to report
some mono controls as stereo. This happened to work some of the time due
to a confusion between shift and min in snd_soc_info_volsw().
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | include/sound/soc.h | 3 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index a1e0357a84d7..5e0189876afd 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
@@ -28,7 +28,8 @@ | |||
28 | */ | 28 | */ |
29 | #define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) \ | 29 | #define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) \ |
30 | ((unsigned long)&(struct soc_mixer_control) \ | 30 | ((unsigned long)&(struct soc_mixer_control) \ |
31 | {.reg = xreg, .shift = xshift, .max = xmax, .invert = xinvert}) | 31 | {.reg = xreg, .shift = xshift, .rshift = xshift, .max = xmax, \ |
32 | .invert = xinvert}) | ||
32 | #define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \ | 33 | #define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \ |
33 | ((unsigned long)&(struct soc_mixer_control) \ | 34 | ((unsigned long)&(struct soc_mixer_control) \ |
34 | {.reg = xreg, .max = xmax, .invert = xinvert}) | 35 | {.reg = xreg, .max = xmax, .invert = xinvert}) |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 462e635dfc74..a3adbf06b1e5 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -1462,7 +1462,7 @@ int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, | |||
1462 | struct soc_mixer_control *mc = | 1462 | struct soc_mixer_control *mc = |
1463 | (struct soc_mixer_control *)kcontrol->private_value; | 1463 | (struct soc_mixer_control *)kcontrol->private_value; |
1464 | int max = mc->max; | 1464 | int max = mc->max; |
1465 | unsigned int shift = mc->min; | 1465 | unsigned int shift = mc->shift; |
1466 | unsigned int rshift = mc->rshift; | 1466 | unsigned int rshift = mc->rshift; |
1467 | 1467 | ||
1468 | if (max == 1) | 1468 | if (max == 1) |