Commit 9ef7dce5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "Just a handful small device-specific fixes including a couple of
  reverts"

* tag 'sound-5.9-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  Revert "ALSA: usb-audio: Disable Lenovo P620 Rear line-in volume control"
  Revert "ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO"
  ALSA: usb-audio: Add delay quirk for H570e USB headsets
  ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation P520
  ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged
  ALSA: asihpi: fix iounmap in error handler
parents be068f29 c413c310
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -343,7 +343,7 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev,
	struct hpi_message hm;
	struct hpi_message hm;
	struct hpi_response hr;
	struct hpi_response hr;
	struct hpi_adapter adapter;
	struct hpi_adapter adapter;
	struct hpi_pci pci;
	struct hpi_pci pci = { 0 };


	memset(&adapter, 0, sizeof(adapter));
	memset(&adapter, 0, sizeof(adapter));


@@ -499,7 +499,7 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev,
	return 0;
	return 0;


err:
err:
	for (idx = 0; idx < HPI_MAX_ADAPTER_MEM_SPACES; idx++) {
	while (--idx >= 0) {
		if (pci.ap_mem_base[idx]) {
		if (pci.ap_mem_base[idx]) {
			iounmap(pci.ap_mem_base[idx]);
			iounmap(pci.ap_mem_base[idx]);
			pci.ap_mem_base[idx] = NULL;
			pci.ap_mem_base[idx] = NULL;
+12 −2
Original line number Original line Diff line number Diff line
@@ -2475,7 +2475,6 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
	SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950),
	SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950),
	SND_PCI_QUIRK(0x1462, 0x1293, "MSI-GP65", ALC1220_FIXUP_CLEVO_P950),
	SND_PCI_QUIRK(0x1462, 0x1293, "MSI-GP65", ALC1220_FIXUP_CLEVO_P950),
	SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD),
	SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD),
	SND_PCI_QUIRK(0x1462, 0x9c37, "MSI X570-A PRO", ALC1220_FIXUP_CLEVO_P950),
	SND_PCI_QUIRK(0x1462, 0xda57, "MSI Z270-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
	SND_PCI_QUIRK(0x1462, 0xda57, "MSI Z270-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
	SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3),
	SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3),
	SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX),
	SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX),
@@ -3428,6 +3427,10 @@ static void alc256_shutup(struct hda_codec *codec)


	/* 3k pull low control for Headset jack. */
	/* 3k pull low control for Headset jack. */
	/* NOTE: call this before clearing the pin, otherwise codec stalls */
	/* NOTE: call this before clearing the pin, otherwise codec stalls */
	/* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
	 * when booting with headset plugged. So skip setting it for the codec alc257
	 */
	if (codec->core.vendor_id != 0x10ec0257)
		alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
		alc_update_coef_idx(codec, 0x46, 0, 3 << 12);


	if (!spec->no_shutup_pins)
	if (!spec->no_shutup_pins)
@@ -6051,6 +6054,7 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
#include "hp_x360_helper.c"
#include "hp_x360_helper.c"


enum {
enum {
	ALC269_FIXUP_GPIO2,
	ALC269_FIXUP_SONY_VAIO,
	ALC269_FIXUP_SONY_VAIO,
	ALC275_FIXUP_SONY_VAIO_GPIO2,
	ALC275_FIXUP_SONY_VAIO_GPIO2,
	ALC269_FIXUP_DELL_M101Z,
	ALC269_FIXUP_DELL_M101Z,
@@ -6232,6 +6236,10 @@ enum {
};
};


static const struct hda_fixup alc269_fixups[] = {
static const struct hda_fixup alc269_fixups[] = {
	[ALC269_FIXUP_GPIO2] = {
		.type = HDA_FIXUP_FUNC,
		.v.func = alc_fixup_gpio2,
	},
	[ALC269_FIXUP_SONY_VAIO] = {
	[ALC269_FIXUP_SONY_VAIO] = {
		.type = HDA_FIXUP_PINCTLS,
		.type = HDA_FIXUP_PINCTLS,
		.v.pins = (const struct hda_pintbl[]) {
		.v.pins = (const struct hda_pintbl[]) {
@@ -7051,6 +7059,8 @@ static const struct hda_fixup alc269_fixups[] = {
	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
		.type = HDA_FIXUP_FUNC,
		.type = HDA_FIXUP_FUNC,
		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
		.chained = true,
		.chain_id = ALC269_FIXUP_GPIO2
	},
	},
	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
		.type = HDA_FIXUP_VERBS,
		.type = HDA_FIXUP_VERBS,
+0 −1
Original line number Original line Diff line number Diff line
@@ -371,7 +371,6 @@ static const struct usbmix_name_map asus_rog_map[] = {
};
};


static const struct usbmix_name_map lenovo_p620_rear_map[] = {
static const struct usbmix_name_map lenovo_p620_rear_map[] = {
	{ 19, NULL, 2 }, /* FU, Volume */
	{ 19, NULL, 12 }, /* FU, Input Gain Pad */
	{ 19, NULL, 12 }, /* FU, Input Gain Pad */
	{}
	{}
};
};
+4 −3
Original line number Original line Diff line number Diff line
@@ -1678,12 +1678,13 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
	    && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
	    && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
		msleep(20);
		msleep(20);


	/* Zoom R16/24, Logitech H650e, Jabra 550a, Kingston HyperX needs a tiny
	/* Zoom R16/24, Logitech H650e/H570e, Jabra 550a, Kingston HyperX
	 * delay here, otherwise requests like get/set frequency return as
	 *  needs a tiny delay here, otherwise requests like get/set
	 * failed despite actually succeeding.
	 *  frequency return as failed despite actually succeeding.
	 */
	 */
	if ((chip->usb_id == USB_ID(0x1686, 0x00dd) ||
	if ((chip->usb_id == USB_ID(0x1686, 0x00dd) ||
	     chip->usb_id == USB_ID(0x046d, 0x0a46) ||
	     chip->usb_id == USB_ID(0x046d, 0x0a46) ||
	     chip->usb_id == USB_ID(0x046d, 0x0a56) ||
	     chip->usb_id == USB_ID(0x0b0e, 0x0349) ||
	     chip->usb_id == USB_ID(0x0b0e, 0x0349) ||
	     chip->usb_id == USB_ID(0x0951, 0x16ad)) &&
	     chip->usb_id == USB_ID(0x0951, 0x16ad)) &&
	    (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
	    (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)