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

Commit ed2c8911 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "Nothing too exciting here, just a few regression and trivial fixes,
  and new quirks for HD-audio and USB-audio.

   - HD-audio mute LED mode enum fix
   - Fix kernel panic of Digidesign Mbox2 usb-audio quirk (which was new
     in 3.8-rc1)
   - Creative BT-D1 usb-audio quirk
   - mute LED fixup for HP Pavillion 17 laptop"

* tag 'sound-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec)
  ALSA: au88x0: fix incorrect left shift
  sound: oss/pas2: Fix possible access out of array
  ALSA: usb-audio: Fix kernel panic of Digidesign Mbox2 quirk
  ALSA: usb-audio: Add support for Creative BT-D1 via usb sound quirks
  ALSA: hda - Switch "On" and "Off" for "Mute-LED Mode" kcontrol
parents 5c33d9b2 6d3cd5d4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -333,6 +333,11 @@ static void __init attach_pas_card(struct address_info *hw_config)
		{
			char            temp[100];

			if (pas_model < 0 ||
			    pas_model >= ARRAY_SIZE(pas_model_names)) {
				printk(KERN_ERR "pas2 unrecognized model.\n");
				return;
			}
			sprintf(temp,
			    "%s rev %d", pas_model_names[(int) pas_model],
				    pas_read(0x2789));
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ static void vortex_wt_setdsout(vortex_t * vortex, u32 wt, int en)
	if (en)
		temp |= (1 << (wt & 0x1f));
	else
		temp &= (1 << ~(wt & 0x1f));
		temp &= ~(1 << (wt & 0x1f));
	hwwrite(vortex->mmio, WT_DSREG((wt >= 0x20) ? 1 : 0), temp);
}

+1 −1
Original line number Diff line number Diff line
@@ -2531,7 +2531,7 @@ static int vmaster_mute_mode_info(struct snd_kcontrol *kcontrol,
				  struct snd_ctl_elem_info *uinfo)
{
	static const char * const texts[] = {
		"Off", "On", "Follow Master"
		"On", "Off", "Follow Master"
	};
	unsigned int index;

+30 −0
Original line number Diff line number Diff line
@@ -5992,6 +5992,30 @@ static void alc269_fixup_quanta_mute(struct hda_codec *codec,
	spec->automute_hook = alc269_quanta_automute;
}

/* update mute-LED according to the speaker mute state via mic1 VREF pin */
static void alc269_fixup_mic1_mute_hook(void *private_data, int enabled)
{
	struct hda_codec *codec = private_data;
	unsigned int pinval = AC_PINCTL_IN_EN + (enabled ?
			      AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80);
	snd_hda_set_pin_ctl_cache(codec, 0x18, pinval);
}

static void alc269_fixup_mic1_mute(struct hda_codec *codec,
				   const struct alc_fixup *fix, int action)
{
	struct alc_spec *spec = codec->spec;
	switch (action) {
	case ALC_FIXUP_ACT_BUILD:
		spec->vmaster_mute.hook = alc269_fixup_mic1_mute_hook;
		snd_hda_add_vmaster_hook(codec, &spec->vmaster_mute, true);
		/* fallthru */
	case ALC_FIXUP_ACT_INIT:
		snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
		break;
	}
}

/* update mute-LED according to the speaker mute state via mic2 VREF pin */
static void alc269_fixup_mic2_mute_hook(void *private_data, int enabled)
{
@@ -6043,6 +6067,7 @@ enum {
	ALC269_FIXUP_DMIC,
	ALC269VB_FIXUP_AMIC,
	ALC269VB_FIXUP_DMIC,
	ALC269_FIXUP_MIC1_MUTE_LED,
	ALC269_FIXUP_MIC2_MUTE_LED,
	ALC269_FIXUP_INV_DMIC,
	ALC269_FIXUP_LENOVO_DOCK,
@@ -6171,6 +6196,10 @@ static const struct alc_fixup alc269_fixups[] = {
			{ }
		},
	},
	[ALC269_FIXUP_MIC1_MUTE_LED] = {
		.type = ALC_FIXUP_FUNC,
		.v.func = alc269_fixup_mic1_mute,
	},
	[ALC269_FIXUP_MIC2_MUTE_LED] = {
		.type = ALC_FIXUP_FUNC,
		.v.func = alc269_fixup_mic2_mute,
@@ -6215,6 +6244,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
	SND_PCI_QUIRK(0x1025, 0x029b, "Acer 1810TZ", ALC269_FIXUP_INV_DMIC),
	SND_PCI_QUIRK(0x1025, 0x0349, "Acer AOD260", ALC269_FIXUP_INV_DMIC),
	SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_MIC2_MUTE_LED),
	SND_PCI_QUIRK(0x103c, 0x1972, "HP Pavilion 17", ALC269_FIXUP_MIC1_MUTE_LED),
	SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_DMIC),
	SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_DMIC),
	SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
+0 −4
Original line number Diff line number Diff line
@@ -2181,10 +2181,6 @@ int snd_usbmidi_create(struct snd_card *card,
		umidi->usb_protocol_ops = &snd_usbmidi_novation_ops;
		err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints);
		break;
	case QUIRK_MIDI_MBOX2:
		umidi->usb_protocol_ops = &snd_usbmidi_midiman_ops;
		err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints);
		break;
	case QUIRK_MIDI_RAW_BYTES:
		umidi->usb_protocol_ops = &snd_usbmidi_raw_ops;
		/*
Loading