Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: usb - turn off de-emphasis in s/pdif for cm6206 ALSA: asihpi: Use angle brackets for system includes ALSA: fm801: add error handling if auto-detect fails ALSA: hda - Check pin support EAPD in ad198x_power_eapd_write ALSA: hda - Fix HP and Front pins of ad1988/ad1989 in ad198x_power_eapd() ALSA: 6fire: Don't leak firmware in error path ASoC: Fix wm_hubs input PGA ZC bits ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared
This commit is contained in:
commit
0d6925d43b
7 changed files with 30 additions and 17 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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]);
|
||||
|
|
Loading…
Reference in a new issue