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

Commit 2b256794 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "Here you find quite a few changes for HD-audio and a copule of quirk
  additions for USB-audio.  All reasonably small and/or trivial."

* tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda - Fix power-map regression for HP dv6 & co
  ALSA: hda - Initialize caches at codec reconfiguration
  ALSA: hda - Fix memory leaks at module unload
  ALSA: hda - Fix memory leaks in Realtek & Conexant codec parsers
  ALSA: hda - Add Realtek ALC280 codec support
  ALSA: hda - Remove obsoleted CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS
  ASoC: wm8994: remove duplicate code
  ALSA: usb-audio: add BOSS GT-100 support
  ALSA: HDA: Add inverted internal mic quirk for Lenovo S205
  ALSA: hda - Fix ALC272X codec detection
  ALSA: snd_usb_audio: ignore ctrl errors on QuickCam Pro for Notebooks
  ALSA: snd_usb_audio: ignore ctrl errors on QuickCam E3500
parents 6ebfbe9a 6e1c39c6
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -97,19 +97,6 @@ config SND_HDA_CODEC_REALTEK
	  snd-hda-codec-realtek.
	  This module is automatically loaded at probing.

config SND_HDA_ENABLE_REALTEK_QUIRKS
	bool "Build static quirks for Realtek codecs"
	depends on SND_HDA_CODEC_REALTEK
	default y
	help
	  Say Y here to build the static quirks codes for Realtek codecs.
	  If you need the "model" preset that the default BIOS auto-parser
	  can't handle, turn this option on.

	  If your device works with model=auto option, basically you don't
	  need the quirk code.  By turning this off, you can reduce the
	  module size quite a lot.

config SND_HDA_CODEC_ANALOG
	bool "Build Analog Device HD-audio codec support"
	default y
+0 −1
Original line number Diff line number Diff line
@@ -618,7 +618,6 @@ int snd_hda_gen_add_verbs(struct hda_gen_spec *spec,
			  const struct hda_verb *list)
{
	const struct hda_verb **v;
	snd_array_init(&spec->verbs, sizeof(struct hda_verb *), 8);
	v = snd_array_new(&spec->verbs);
	if (!v)
		return -ENOMEM;
+10 −0
Original line number Diff line number Diff line
@@ -157,4 +157,14 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
			const struct snd_pci_quirk *quirk,
			const struct hda_fixup *fixlist);

static inline void snd_hda_gen_init(struct hda_gen_spec *spec)
{
	snd_array_init(&spec->verbs, sizeof(struct hda_verb *), 8);
}

static inline void snd_hda_gen_free(struct hda_gen_spec *spec)
{
	snd_array_free(&spec->verbs);
}

#endif /* __SOUND_HDA_AUTO_PARSER_H */
+4 −0
Original line number Diff line number Diff line
@@ -1184,6 +1184,7 @@ static void snd_hda_codec_free(struct hda_codec *codec)
{
	if (!codec)
		return;
	snd_hda_jack_tbl_clear(codec);
	restore_init_pincfgs(codec);
#ifdef CONFIG_SND_HDA_POWER_SAVE
	cancel_delayed_work(&codec->power_work);
@@ -1192,6 +1193,7 @@ static void snd_hda_codec_free(struct hda_codec *codec)
	list_del(&codec->list);
	snd_array_free(&codec->mixers);
	snd_array_free(&codec->nids);
	snd_array_free(&codec->cvt_setups);
	snd_array_free(&codec->conn_lists);
	snd_array_free(&codec->spdif_out);
	codec->bus->caddr_tbl[codec->addr] = NULL;
@@ -2333,6 +2335,8 @@ int snd_hda_codec_reset(struct hda_codec *codec)
	/* free only driver_pins so that init_pins + user_pins are restored */
	snd_array_free(&codec->driver_pins);
	restore_pincfgs(codec);
	snd_array_free(&codec->cvt_setups);
	snd_array_free(&codec->spdif_out);
	codec->num_pcms = 0;
	codec->pcm_info = NULL;
	codec->preset = NULL;
+5 −1
Original line number Diff line number Diff line
@@ -445,8 +445,10 @@ static int conexant_init(struct hda_codec *codec)

static void conexant_free(struct hda_codec *codec)
{
	struct conexant_spec *spec = codec->spec;
	snd_hda_gen_free(&spec->gen);
	snd_hda_detach_beep_device(codec);
	kfree(codec->spec);
	kfree(spec);
}

static const struct snd_kcontrol_new cxt_capture_mixers[] = {
@@ -4466,6 +4468,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
	SND_PCI_QUIRK(0x17aa, 0x21ce, "Lenovo T420", CXT_PINCFG_LENOVO_TP410),
	SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520", CXT_PINCFG_LENOVO_TP410),
	SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC),
	SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC),
	{}
};

@@ -4497,6 +4500,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
	if (!spec)
		return -ENOMEM;
	codec->spec = spec;
	snd_hda_gen_init(&spec->gen);

	switch (codec->vendor_id) {
	case 0x14f15045:
Loading