sound fixes for 3.0-rc2
Subsystems (3)
Linus,
please pull sound fixes for v3.0-rc2 from:
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git for-linus
All small and trivial fixes.
Thanks!
Takashi
===
Dan Carpenter (1):
ALSA: fm801: add error handling if auto-detect fails
Eric Lammerts (1):
ALSA: usb - turn off de-emphasis in s/pdif for cm6206
Jesper Juhl (1):
ALSA: 6fire: Don't leak firmware in error path
Joe Perches (1):
ALSA: asihpi: Use angle brackets for system includes
Mark Brown (1):
ASoC: Fix wm_hubs input PGA ZC bits
Raymond Yau (1):
ALSA: hda - Check pin support EAPD in ad198x_power_eapd_write
Stephen Warren (1):
ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared
Takashi Iwai (1):
ALSA: hda - Fix HP and Front pins of ad1988/ad1989 in ad198x_power_eapd()
--- sound/pci/asihpi/hpidspcd.c | 2 +- sound/pci/fm801.c | 13 +++++++++++-- sound/pci/hda/patch_analog.c | 16 ++++++++-------- sound/soc/codecs/wm_hubs.c | 8 ++++---- sound/soc/soc-dapm.c | 5 ++++- sound/usb/6fire/firmware.c | 1 + sound/usb/quirks.c | 2 +- 7 files changed, 30 insertions(+), 17 deletions(-)
sound/pci/asihpi/hpidspcd.c +1 -1
@@ -60,7 +60,7 @@ struct code_header { HPI_VER_MINOR(HPI_VER) * 100 + HPI_VER_RELEASE(HPI_VER)))/***********************************************************************/ -#include "linux/pci.h" +#include <linux/pci.h> /*-------------------------------------------------------------------*/ short hpi_dsp_code_open (u32 adapter,struct dsp_code *ps_dsp_code,u32 *pos_error_code)
sound/pci/fm801.c +11 -2
@@ -1234,9 +1234,12 @@ static int __devinit snd_fm801_create(struct snd_card *card,sprintf (chip->tea.bus_info,"PCI:%s" ,pci_name (pci));if ((tea575x_tuner &TUNER_TYPE_MASK ) >0 && (tea575x_tuner &TUNER_TYPE_MASK ) <4 ) { -if (snd_tea575x_init (&chip->tea)) +if (snd_tea575x_init (&chip->tea)) {snd_printk (KERN_ERR "TEA575x radio not found\n" ); - }else if ((tea575x_tuner &TUNER_TYPE_MASK ) ==0 ) +snd_fm801_free (chip); +return -ENODEV ; + } + }else if ((tea575x_tuner &TUNER_TYPE_MASK ) ==0 ) {/* autodetect tuner connection */ for (tea575x_tuner =1 ; tea575x_tuner <=3 ; tea575x_tuner++) { chip->tea575x_tuner = tea575x_tuner;
@@ -1246,6 +1249,12 @@ static int __devinit snd_fm801_create(struct snd_card *card, break; } } +if (tea575x_tuner ==4 ) { +snd_printk (KERN_ERR "TEA575x radio not found\n" ); +snd_fm801_free (chip); +return -ENODEV ; + } + }strlcpy (chip->tea.card, snd_fm801_tea575x_gpios[(tea575x_tuner &TUNER_TYPE_MASK ) -1 ].name,sizeof (chip->tea.card));#endif
sound/pci/hda/patch_analog.c +8 -8
@@ -506,9 +506,11 @@ static void ad198x_power_eapd_write(struct hda_codec *codec, hda_nid_t front, hda_nid_t hp) {struct ad198x_spec *spec = codec->spec; -snd_hda_codec_write (codec, front,0 ,AC_VERB_SET_EAPD_BTLENABLE , +if (snd_hda_query_pin_caps (codec, front) &AC_PINCAP_EAPD ) +snd_hda_codec_write (codec, front,0 ,AC_VERB_SET_EAPD_BTLENABLE , !spec->inv_eapd ?0x00 :0x02 ); -snd_hda_codec_write (codec, hp,0 ,AC_VERB_SET_EAPD_BTLENABLE , +if (snd_hda_query_pin_caps (codec, hp) &AC_PINCAP_EAPD ) +snd_hda_codec_write (codec, hp,0 ,AC_VERB_SET_EAPD_BTLENABLE , !spec->inv_eapd ?0x00 :0x02 ); }
@@ -524,6 +526,10 @@ static void ad198x_power_eapd(struct hda_codec *codec)case 0x11d4184a :case 0x11d4194a :case 0x11d4194b : +case 0x11d41988 : +case 0x11d4198b : +case 0x11d4989a : +case 0x11d4989b :ad198x_power_eapd_write (codec,0x12 ,0x11 );break ;case 0x11d41981 :
@@ -533,12 +539,6 @@ static void ad198x_power_eapd(struct hda_codec *codec)case 0x11d41986 :ad198x_power_eapd_write (codec,0x1b ,0x1a );break ; -case 0x11d41988 : -case 0x11d4198b : -case 0x11d4989a : -case 0x11d4989b : -ad198x_power_eapd_write (codec,0x29 ,0x22 ); -break ; } }
sound/soc/codecs/wm_hubs.c +4 -4
@@ -215,23 +215,23 @@ static const struct snd_kcontrol_new analogue_snd_controls[] = {SOC_SINGLE_TLV ("IN1L Volume" ,WM8993_LEFT_LINE_INPUT_1_2_VOLUME ,0 ,31 ,0 , inpga_tlv),SOC_SINGLE ("IN1L Switch" ,WM8993_LEFT_LINE_INPUT_1_2_VOLUME ,7 ,1 ,1 ), -SOC_SINGLE ("IN1L ZC Switch" ,WM8993_LEFT_LINE_INPUT_1_2_VOLUME ,7 ,1 ,0 ), +SOC_SINGLE ("IN1L ZC Switch" ,WM8993_LEFT_LINE_INPUT_1_2_VOLUME ,6 ,1 ,0 ),SOC_SINGLE_TLV ("IN1R Volume" ,WM8993_RIGHT_LINE_INPUT_1_2_VOLUME ,0 ,31 ,0 , inpga_tlv),SOC_SINGLE ("IN1R Switch" ,WM8993_RIGHT_LINE_INPUT_1_2_VOLUME ,7 ,1 ,1 ), -SOC_SINGLE ("IN1R ZC Switch" ,WM8993_RIGHT_LINE_INPUT_1_2_VOLUME ,7 ,1 ,0 ), +SOC_SINGLE ("IN1R ZC Switch" ,WM8993_RIGHT_LINE_INPUT_1_2_VOLUME ,6 ,1 ,0 ),SOC_SINGLE_TLV ("IN2L Volume" ,WM8993_LEFT_LINE_INPUT_3_4_VOLUME ,0 ,31 ,0 , inpga_tlv),SOC_SINGLE ("IN2L Switch" ,WM8993_LEFT_LINE_INPUT_3_4_VOLUME ,7 ,1 ,1 ), -SOC_SINGLE ("IN2L ZC Switch" ,WM8993_LEFT_LINE_INPUT_3_4_VOLUME ,7 ,1 ,0 ), +SOC_SINGLE ("IN2L ZC Switch" ,WM8993_LEFT_LINE_INPUT_3_4_VOLUME ,6 ,1 ,0 ),SOC_SINGLE_TLV ("IN2R Volume" ,WM8993_RIGHT_LINE_INPUT_3_4_VOLUME ,0 ,31 ,0 , inpga_tlv),SOC_SINGLE ("IN2R Switch" ,WM8993_RIGHT_LINE_INPUT_3_4_VOLUME ,7 ,1 ,1 ), -SOC_SINGLE ("IN2R ZC Switch" ,WM8993_RIGHT_LINE_INPUT_3_4_VOLUME ,7 ,1 ,0 ), +SOC_SINGLE ("IN2R ZC Switch" ,WM8993_RIGHT_LINE_INPUT_3_4_VOLUME ,6 ,1 ,0 ),SOC_SINGLE_TLV ("MIXINL IN2L Volume" ,WM8993_INPUT_MIXER3 ,7 ,1 ,0 , inmix_sw_tlv),
sound/soc/soc-dapm.c +4 -1
@@ -325,6 +325,7 @@ static int dapm_connect_mixer(struct snd_soc_dapm_context *dapm, }static int dapm_is_shared_kcontrol (struct snd_soc_dapm_context *dapm, +struct snd_soc_dapm_widget *kcontrolw,const struct snd_kcontrol_new *kcontrol_new,struct snd_kcontrol **kcontrol) {
@@ -334,6 +335,8 @@ static int dapm_is_shared_kcontrol(struct snd_soc_dapm_context *dapm, *kcontrol =NULL ;list_for_each_entry (w, &dapm->card->widgets, list) { +if (w == kcontrolw || w->dapm != kcontrolw->dapm) +continue ;for (i =0 ; i < w->num_kcontrols; i++) {if (&w->kcontrol_news[i] == kcontrol_new) {if (w->kcontrols)
@@ -468,7 +471,7 @@ static int dapm_new_mux(struct snd_soc_dapm_context *dapm,return -EINVAL ; } - shared =dapm_is_shared_kcontrol (dapm, &w->kcontrol_news[0 ], + shared =dapm_is_shared_kcontrol (dapm, w, &w->kcontrol_news[0 ], &kcontrol);if (kcontrol) { wlist = kcontrol->private_data;
sound/usb/6fire/firmware.c +1 -0
@@ -227,6 +227,7 @@ static int usb6fire_fw_ezusb_upload( ret =usb6fire_fw_ihex_init (fw, rec);if (ret <0 ) {kfree (rec); +release_firmware (fw); snd_printk(KERN_ERR PREFIX "error validating ezusb " "firmware %s.\n", fwname);return ret;
sound/usb/quirks.c +1 -1
@@ -403,7 +403,7 @@ static int snd_usb_cm106_boot_quirk(struct usb_device *dev)static int snd_usb_cm6206_boot_quirk (struct usb_device *dev) {int err, reg; -int val[] = {0x200c ,0x3000 ,0xf800 ,0x143f ,0x0000 ,0x3000 }; +int val[] = {0x2004 ,0x3000 ,0xf800 ,0x143f ,0x0000 ,0x3000 };for (reg =0 ; reg <ARRAY_SIZE (val); reg++) { err =snd_usb_cm106_write_int_reg (dev, reg, val[reg]);