Commit 9ef7dce5 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'sound-5.9-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

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
...@@ -343,7 +343,7 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev, ...@@ -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, ...@@ -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;
......
...@@ -2475,7 +2475,6 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { ...@@ -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) ...@@ -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, ...@@ -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 { ...@@ -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[] = { ...@@ -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,
......
...@@ -371,7 +371,6 @@ static const struct usbmix_name_map asus_rog_map[] = { ...@@ -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 */
{} {}
}; };
......
...@@ -1678,12 +1678,13 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe, ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment