forked from Minki/linux
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>
This commit is contained in:
parent
c3e5203bed
commit
762b8df748
@ -28,7 +28,8 @@
|
|||||||
*/
|
*/
|
||||||
#define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) \
|
#define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) \
|
||||||
((unsigned long)&(struct soc_mixer_control) \
|
((unsigned long)&(struct soc_mixer_control) \
|
||||||
{.reg = xreg, .shift = xshift, .max = xmax, .invert = xinvert})
|
{.reg = xreg, .shift = xshift, .rshift = xshift, .max = xmax, \
|
||||||
|
.invert = xinvert})
|
||||||
#define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \
|
#define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \
|
||||||
((unsigned long)&(struct soc_mixer_control) \
|
((unsigned long)&(struct soc_mixer_control) \
|
||||||
{.reg = xreg, .max = xmax, .invert = xinvert})
|
{.reg = xreg, .max = xmax, .invert = xinvert})
|
||||||
|
@ -1462,7 +1462,7 @@ int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
|
|||||||
struct soc_mixer_control *mc =
|
struct soc_mixer_control *mc =
|
||||||
(struct soc_mixer_control *)kcontrol->private_value;
|
(struct soc_mixer_control *)kcontrol->private_value;
|
||||||
int max = mc->max;
|
int max = mc->max;
|
||||||
unsigned int shift = mc->min;
|
unsigned int shift = mc->shift;
|
||||||
unsigned int rshift = mc->rshift;
|
unsigned int rshift = mc->rshift;
|
||||||
|
|
||||||
if (max == 1)
|
if (max == 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user