Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30acd906 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "Nothing serious but just a few regression fixes and quirk additions,
  such as emu1010 firmware loading fixes, M-Audio AP192 SPDIF fix, and
  HD-audio HDMI jack detection fix."

* tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: emu10k1: Allow to switch hardware sampe rate on EMU
  ALSA: hda - Enable beep for ASUS EeeBox EBP1501P
  ALSA: emu10k1: Load firmware when it was already cached
  ALSA: ice1724: M-Audio Audiophile192: Fix SPDIF input
  ALSA: bt87x: Make load_all parameter working again
  ALSA: emu10k1: Fix regression in emu1010 firmware loading
  ALSA: hda - hdmi: Make jacks phantom, if they're not detectable
parents 7bf2fbcd d0ec95fe
Loading
Loading
Loading
Loading
+17 −2
Original line number Original line Diff line number Diff line
@@ -836,6 +836,8 @@ static struct {
	{0x7063, 0x2000}, /* pcHDTV HD-2000 TV */
	{0x7063, 0x2000}, /* pcHDTV HD-2000 TV */
};
};


static struct pci_driver driver;

/* return the id of the card, or a negative value if it's blacklisted */
/* return the id of the card, or a negative value if it's blacklisted */
static int snd_bt87x_detect_card(struct pci_dev *pci)
static int snd_bt87x_detect_card(struct pci_dev *pci)
{
{
@@ -962,11 +964,24 @@ static DEFINE_PCI_DEVICE_TABLE(snd_bt87x_default_ids) = {
	{ }
	{ }
};
};


static struct pci_driver bt87x_driver = {
static struct pci_driver driver = {
	.name = KBUILD_MODNAME,
	.name = KBUILD_MODNAME,
	.id_table = snd_bt87x_ids,
	.id_table = snd_bt87x_ids,
	.probe = snd_bt87x_probe,
	.probe = snd_bt87x_probe,
	.remove = snd_bt87x_remove,
	.remove = snd_bt87x_remove,
};
};


module_pci_driver(bt87x_driver);
static int __init alsa_card_bt87x_init(void)
{
	if (load_all)
		driver.id_table = snd_bt87x_default_ids;
	return pci_register_driver(&driver);
}

static void __exit alsa_card_bt87x_exit(void)
{
	pci_unregister_driver(&driver);
}

module_init(alsa_card_bt87x_init)
module_exit(alsa_card_bt87x_exit)
+6 −0
Original line number Original line Diff line number Diff line
@@ -862,6 +862,12 @@ static int snd_emu10k1_emu1010_init(struct snd_emu10k1 *emu)
			   filename, emu->firmware->size);
			   filename, emu->firmware->size);
	}
	}


	err = snd_emu1010_load_firmware(emu);
	if (err != 0) {
		snd_printk(KERN_INFO "emu1010: Loading Firmware failed\n");
		return err;
	}

	/* ID, should read & 0x7f = 0x55 when FPGA programmed. */
	/* ID, should read & 0x7f = 0x55 when FPGA programmed. */
	snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg);
	snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg);
	if ((reg & 0x3f) != 0x15) {
	if ((reg & 0x3f) != 0x15) {
+6 −2
Original line number Original line Diff line number Diff line
@@ -1127,7 +1127,7 @@ static int snd_emu10k1_playback_open(struct snd_pcm_substream *substream)
	struct snd_emu10k1_pcm *epcm;
	struct snd_emu10k1_pcm *epcm;
	struct snd_emu10k1_pcm_mixer *mix;
	struct snd_emu10k1_pcm_mixer *mix;
	struct snd_pcm_runtime *runtime = substream->runtime;
	struct snd_pcm_runtime *runtime = substream->runtime;
	int i, err;
	int i, err, sample_rate;


	epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
	epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
	if (epcm == NULL)
	if (epcm == NULL)
@@ -1146,7 +1146,11 @@ static int snd_emu10k1_playback_open(struct snd_pcm_substream *substream)
		kfree(epcm);
		kfree(epcm);
		return err;
		return err;
	}
	}
	err = snd_pcm_hw_rule_noresample(runtime, 48000);
	if (emu->card_capabilities->emu_model && emu->emu1010.internal_clock == 0)
		sample_rate = 44100;
	else
		sample_rate = 48000;
	err = snd_pcm_hw_rule_noresample(runtime, sample_rate);
	if (err < 0) {
	if (err < 0) {
		kfree(epcm);
		kfree(epcm);
		return err;
		return err;
+3 −0
Original line number Original line Diff line number Diff line
@@ -1640,6 +1640,9 @@ static int generic_hdmi_build_jack(struct hda_codec *codec, int pin_idx)


	if (pcmdev > 0)
	if (pcmdev > 0)
		sprintf(hdmi_str + strlen(hdmi_str), ",pcm=%d", pcmdev);
		sprintf(hdmi_str + strlen(hdmi_str), ",pcm=%d", pcmdev);
	if (!is_jack_detectable(codec, per_pin->pin_nid))
		strncat(hdmi_str, " Phantom",
			sizeof(hdmi_str) - strlen(hdmi_str) - 1);


	return snd_hda_jack_add_kctl(codec, per_pin->pin_nid, hdmi_str, 0);
	return snd_hda_jack_add_kctl(codec, per_pin->pin_nid, hdmi_str, 0);
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -928,6 +928,7 @@ static int alc_codec_rename_from_preset(struct hda_codec *codec)
static const struct snd_pci_quirk beep_white_list[] = {
static const struct snd_pci_quirk beep_white_list[] = {
	SND_PCI_QUIRK(0x1043, 0x103c, "ASUS", 1),
	SND_PCI_QUIRK(0x1043, 0x103c, "ASUS", 1),
	SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1),
	SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1),
	SND_PCI_QUIRK(0x1043, 0x8376, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x831a, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x831a, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x834a, "EeePC", 1),
	SND_PCI_QUIRK(0x1043, 0x834a, "EeePC", 1),
Loading