Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: wm8985: Fix enum ctl accesses in a wrong type

"Equalizer Function" ctl in wm8985 codec driver is enum, while the
current driver accesses wrongly via value.integer.value[]. They have
to be via value.enumerated.item[] instead.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Takashi Iwai and committed by
Mark Brown
251d6047 92e963f5

+7 -7
+7 -7
sound/soc/codecs/wm8985.c
··· 531 531 532 532 reg = snd_soc_read(codec, WM8985_EQ1_LOW_SHELF); 533 533 if (reg & WM8985_EQ3DMODE) 534 - ucontrol->value.integer.value[0] = 1; 534 + ucontrol->value.enumerated.item[0] = 1; 535 535 else 536 - ucontrol->value.integer.value[0] = 0; 536 + ucontrol->value.enumerated.item[0] = 0; 537 537 538 538 return 0; 539 539 } ··· 545 545 unsigned int regpwr2, regpwr3; 546 546 unsigned int reg_eq; 547 547 548 - if (ucontrol->value.integer.value[0] != 0 549 - && ucontrol->value.integer.value[0] != 1) 548 + if (ucontrol->value.enumerated.item[0] != 0 549 + && ucontrol->value.enumerated.item[0] != 1) 550 550 return -EINVAL; 551 551 552 552 reg_eq = snd_soc_read(codec, WM8985_EQ1_LOW_SHELF); 553 553 switch ((reg_eq & WM8985_EQ3DMODE) >> WM8985_EQ3DMODE_SHIFT) { 554 554 case 0: 555 - if (!ucontrol->value.integer.value[0]) 555 + if (!ucontrol->value.enumerated.item[0]) 556 556 return 0; 557 557 break; 558 558 case 1: 559 - if (ucontrol->value.integer.value[0]) 559 + if (ucontrol->value.enumerated.item[0]) 560 560 return 0; 561 561 break; 562 562 } ··· 573 573 /* set the desired eqmode */ 574 574 snd_soc_update_bits(codec, WM8985_EQ1_LOW_SHELF, 575 575 WM8985_EQ3DMODE_MASK, 576 - ucontrol->value.integer.value[0] 576 + ucontrol->value.enumerated.item[0] 577 577 << WM8985_EQ3DMODE_SHIFT); 578 578 /* restore DAC/ADC configuration */ 579 579 snd_soc_write(codec, WM8985_POWER_MANAGEMENT_2, regpwr2);