diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-08 17:56:39 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-08 17:56:39 -0500 |
| commit | e862f2e4693f287669e84971c778bf071bd0526b (patch) | |
| tree | e26818cbe931482d59d77741bde8ab12a30dc08e | |
| parent | 98e96852480566333f6dacd3223f0be15df34d60 (diff) | |
| parent | 982d411c303a475424c67966990b5803cc536319 (diff) | |
Merge tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
sound fixes #2 for 3.3-rc3
A collection of small fixes, mostly for regressions.
In addition, a few ASoC wm8994 updates are included, too.
* tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: wm8994: Disable line output discharge prior to ramping VMID
ASoC: wm8994: Fix typo in VMID ramp setting
ALSA: oxygen, virtuoso: fix exchanged L/R volumes of aux and CD inputs
ALSA: usb-audio: add Edirol UM-3G support
ALSA: hda - add support for Uniwill ECS M31EI notebook
ALSA: hda - Fix error handling in patch_ca0132.c
ASoC: wm8994: Enabling VMID should take a runtime PM reference
ALSA: hda/realtek - Fix a wrong condition
ALSA: emu8000: Remove duplicate linux/moduleparam.h include from emu8000_patch.c
ALSA: hda/realtek - Add missing Bass and CLFE as vmaster slaves
ASoC: wm_hubs: Correct line input to line output 2 paths
ASoC: cs42l73: Fix Output [X|A|V]SP_SCLK Sourcing Mode setting for master mode
ASoC: wm8962: Fix word length configuration
ASoC: core: Better support for idle_bias_off suspend ignores
ASoC: wm8994: Remove ASoC level register cache sync
ASoC: wm_hubs: Fix routing of input PGAs to line output mixer
| -rw-r--r-- | sound/isa/sb/emu8000_patch.c | 1 | ||||
| -rw-r--r-- | sound/pci/hda/patch_ca0132.c | 33 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 7 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_mixer.c | 25 | ||||
| -rw-r--r-- | sound/soc/codecs/cs42l73.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8962.c | 6 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8994.c | 16 | ||||
| -rw-r--r-- | sound/soc/codecs/wm_hubs.c | 8 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 11 | ||||
| -rw-r--r-- | sound/usb/quirks-table.h | 8 |
10 files changed, 76 insertions, 41 deletions
diff --git a/sound/isa/sb/emu8000_patch.c b/sound/isa/sb/emu8000_patch.c index e09f144177f5..c99c6078be33 100644 --- a/sound/isa/sb/emu8000_patch.c +++ b/sound/isa/sb/emu8000_patch.c | |||
| @@ -22,7 +22,6 @@ | |||
| 22 | #include "emu8000_local.h" | 22 | #include "emu8000_local.h" |
| 23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
| 24 | #include <linux/moduleparam.h> | 24 | #include <linux/moduleparam.h> |
| 25 | #include <linux/moduleparam.h> | ||
| 26 | 25 | ||
| 27 | static int emu8000_reset_addr; | 26 | static int emu8000_reset_addr; |
| 28 | module_param(emu8000_reset_addr, int, 0444); | 27 | module_param(emu8000_reset_addr, int, 0444); |
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index 35abe3c62908..21d91d580da8 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c | |||
| @@ -728,18 +728,19 @@ static int ca0132_hp_switch_put(struct snd_kcontrol *kcontrol, | |||
| 728 | 728 | ||
| 729 | err = chipio_read(codec, REG_CODEC_MUTE, &data); | 729 | err = chipio_read(codec, REG_CODEC_MUTE, &data); |
| 730 | if (err < 0) | 730 | if (err < 0) |
| 731 | return err; | 731 | goto exit; |
| 732 | 732 | ||
| 733 | /* *valp 0 is mute, 1 is unmute */ | 733 | /* *valp 0 is mute, 1 is unmute */ |
| 734 | data = (data & 0x7f) | (*valp ? 0 : 0x80); | 734 | data = (data & 0x7f) | (*valp ? 0 : 0x80); |
| 735 | chipio_write(codec, REG_CODEC_MUTE, data); | 735 | err = chipio_write(codec, REG_CODEC_MUTE, data); |
| 736 | if (err < 0) | 736 | if (err < 0) |
| 737 | return err; | 737 | goto exit; |
| 738 | 738 | ||
| 739 | spec->curr_hp_switch = *valp; | 739 | spec->curr_hp_switch = *valp; |
| 740 | 740 | ||
| 741 | exit: | ||
| 741 | snd_hda_power_down(codec); | 742 | snd_hda_power_down(codec); |
| 742 | return 1; | 743 | return err < 0 ? err : 1; |
| 743 | } | 744 | } |
| 744 | 745 | ||
| 745 | static int ca0132_speaker_switch_get(struct snd_kcontrol *kcontrol, | 746 | static int ca0132_speaker_switch_get(struct snd_kcontrol *kcontrol, |
| @@ -770,18 +771,19 @@ static int ca0132_speaker_switch_put(struct snd_kcontrol *kcontrol, | |||
| 770 | 771 | ||
| 771 | err = chipio_read(codec, REG_CODEC_MUTE, &data); | 772 | err = chipio_read(codec, REG_CODEC_MUTE, &data); |
| 772 | if (err < 0) | 773 | if (err < 0) |
| 773 | return err; | 774 | goto exit; |
| 774 | 775 | ||
| 775 | /* *valp 0 is mute, 1 is unmute */ | 776 | /* *valp 0 is mute, 1 is unmute */ |
| 776 | data = (data & 0xef) | (*valp ? 0 : 0x10); | 777 | data = (data & 0xef) | (*valp ? 0 : 0x10); |
| 777 | chipio_write(codec, REG_CODEC_MUTE, data); | 778 | err = chipio_write(codec, REG_CODEC_MUTE, data); |
| 778 | if (err < 0) | 779 | if (err < 0) |
| 779 | return err; | 780 | goto exit; |
| 780 | 781 | ||
| 781 | spec->curr_speaker_switch = *valp; | 782 | spec->curr_speaker_switch = *valp; |
| 782 | 783 | ||
| 784 | exit: | ||
| 783 | snd_hda_power_down(codec); | 785 | snd_hda_power_down(codec); |
| 784 | return 1; | 786 | return err < 0 ? err : 1; |
| 785 | } | 787 | } |
| 786 | 788 | ||
| 787 | static int ca0132_hp_volume_get(struct snd_kcontrol *kcontrol, | 789 | static int ca0132_hp_volume_get(struct snd_kcontrol *kcontrol, |
| @@ -819,25 +821,26 @@ static int ca0132_hp_volume_put(struct snd_kcontrol *kcontrol, | |||
| 819 | 821 | ||
| 820 | err = chipio_read(codec, REG_CODEC_HP_VOL_L, &data); | 822 | err = chipio_read(codec, REG_CODEC_HP_VOL_L, &data); |
| 821 | if (err < 0) | 823 | if (err < 0) |
| 822 | return err; | 824 | goto exit; |
| 823 | 825 | ||
| 824 | val = 31 - left_vol; | 826 | val = 31 - left_vol; |
| 825 | data = (data & 0xe0) | val; | 827 | data = (data & 0xe0) | val; |
| 826 | chipio_write(codec, REG_CODEC_HP_VOL_L, data); | 828 | err = chipio_write(codec, REG_CODEC_HP_VOL_L, data); |
| 827 | if (err < 0) | 829 | if (err < 0) |
| 828 | return err; | 830 | goto exit; |
| 829 | 831 | ||
| 830 | val = 31 - right_vol; | 832 | val = 31 - right_vol; |
| 831 | data = (data & 0xe0) | val; | 833 | data = (data & 0xe0) | val; |
| 832 | chipio_write(codec, REG_CODEC_HP_VOL_R, data); | 834 | err = chipio_write(codec, REG_CODEC_HP_VOL_R, data); |
| 833 | if (err < 0) | 835 | if (err < 0) |
| 834 | return err; | 836 | goto exit; |
| 835 | 837 | ||
| 836 | spec->curr_hp_volume[0] = left_vol; | 838 | spec->curr_hp_volume[0] = left_vol; |
| 837 | spec->curr_hp_volume[1] = right_vol; | 839 | spec->curr_hp_volume[1] = right_vol; |
| 838 | 840 | ||
| 841 | exit: | ||
| 839 | snd_hda_power_down(codec); | 842 | snd_hda_power_down(codec); |
| 840 | return 1; | 843 | return err < 0 ? err : 1; |
| 841 | } | 844 | } |
| 842 | 845 | ||
| 843 | static int add_hp_switch(struct hda_codec *codec, hda_nid_t nid) | 846 | static int add_hp_switch(struct hda_codec *codec, hda_nid_t nid) |
| @@ -936,6 +939,8 @@ static int ca0132_build_controls(struct hda_codec *codec) | |||
| 936 | if (err < 0) | 939 | if (err < 0) |
| 937 | return err; | 940 | return err; |
| 938 | err = add_in_volume(codec, spec->dig_in, "IEC958"); | 941 | err = add_in_volume(codec, spec->dig_in, "IEC958"); |
| 942 | if (err < 0) | ||
| 943 | return err; | ||
| 939 | } | 944 | } |
| 940 | return 0; | 945 | return 0; |
| 941 | } | 946 | } |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index a8e82be3d2fc..9350f3c3bdf8 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -1855,6 +1855,8 @@ static const char * const alc_slave_vols[] = { | |||
| 1855 | "Speaker Playback Volume", | 1855 | "Speaker Playback Volume", |
| 1856 | "Mono Playback Volume", | 1856 | "Mono Playback Volume", |
| 1857 | "Line-Out Playback Volume", | 1857 | "Line-Out Playback Volume", |
| 1858 | "CLFE Playback Volume", | ||
| 1859 | "Bass Speaker Playback Volume", | ||
| 1858 | "PCM Playback Volume", | 1860 | "PCM Playback Volume", |
| 1859 | NULL, | 1861 | NULL, |
| 1860 | }; | 1862 | }; |
| @@ -1870,6 +1872,8 @@ static const char * const alc_slave_sws[] = { | |||
| 1870 | "Mono Playback Switch", | 1872 | "Mono Playback Switch", |
| 1871 | "IEC958 Playback Switch", | 1873 | "IEC958 Playback Switch", |
| 1872 | "Line-Out Playback Switch", | 1874 | "Line-Out Playback Switch", |
| 1875 | "CLFE Playback Switch", | ||
| 1876 | "Bass Speaker Playback Switch", | ||
| 1873 | "PCM Playback Switch", | 1877 | "PCM Playback Switch", |
| 1874 | NULL, | 1878 | NULL, |
| 1875 | }; | 1879 | }; |
| @@ -2318,7 +2322,7 @@ static int alc_build_pcms(struct hda_codec *codec) | |||
| 2318 | "%s Analog", codec->chip_name); | 2322 | "%s Analog", codec->chip_name); |
| 2319 | info->name = spec->stream_name_analog; | 2323 | info->name = spec->stream_name_analog; |
| 2320 | 2324 | ||
| 2321 | if (spec->multiout.dac_nids > 0) { | 2325 | if (spec->multiout.num_dacs > 0) { |
| 2322 | p = spec->stream_analog_playback; | 2326 | p = spec->stream_analog_playback; |
| 2323 | if (!p) | 2327 | if (!p) |
| 2324 | p = &alc_pcm_analog_playback; | 2328 | p = &alc_pcm_analog_playback; |
| @@ -5623,6 +5627,7 @@ static const struct alc_fixup alc861_fixups[] = { | |||
| 5623 | 5627 | ||
| 5624 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { | 5628 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { |
| 5625 | SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP), | 5629 | SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP), |
| 5630 | SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP), | ||
| 5626 | SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP), | 5631 | SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP), |
| 5627 | SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505), | 5632 | SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505), |
| 5628 | {} | ||
