sound fixes for 4.9-rc3
Here contains the usual stuff -- the fixups and quirks for HD-audio and USB-audio, in addition to a bad regression fix in ALSA sequencer timer since 4.8, and a trivial fix for asihpi PCI driver. -----BEGIN PGP SIGNATURE----- iQIrBAABCAAVBQJYEx+3Dhx0aXdhaUBzdXNlLmRlAAoJEGwxgFQ9KSmkLz0QAKl5 lPbtUc3qW8KXqLKifzFX9hds8SH6YJ36SBpUsqteb3PNpm63ZQJmvevDpt7ey3jQ M9i/peAl7qoIiyXLVdSEHgV+erIMKSt6eYlkUf6wZZWw6GxYXE40DNSEgAx7sHDs dVs/q4hC4/xRRmbqdG1fxM6sBAQUiKx62P0QwVQXc2SiGhUOqwILF93UwdL+9ZPm 8R8bOnjVMbLLZolJRK3ll/qkFgmJFLhXYE5NF1d0vcoA7f3qbtcp0xOLZ1QwmTFZ DJHkaO2K6Jg9O8NkmeNIfmdiHXpte69roxDqBQKoWiV4CRPY7Y1OvrGvi0Z37X0Z EickpItM1hCGd7W0WDMuwVrkUIS4osoisQ/ug8hxl4MPECHlrnCjctoRNBLf1+JF l3+j+XC+A8lsys8O09VhcZxK5Ns6ErBLR/e8X8ANQVGatt1XXo0usygdxnP9E8yD ZuuLa2JW2SuucRsuXe/y/LFSBPYnKqAQKhmd5UyqC8ndjfX/0DbWBnkGf5qu99ww sz/zhAmHkSswwbuYdJ/b474NmeHmu+wGR7euKlks4JO4UHKJZZ+5BXNjZbgzDneS /s6WnoPHOh9my8NgLDLPMimsTStCI6Z89khcgtgij7xAvIEiYZJ0vGZ2FeHYbT79 n9GWJikYtTxvczVEQI2X8MuJyi1PjDacmUdQ6hc/ =n80w -----END PGP SIGNATURE----- Merge tag 'sound-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "This contains the usual stuff -- the fixups and quirks for HD-audio and USB-audio, in addition to a bad regression fix in ALSA sequencer timer since 4.8, and a trivial fix for asihpi PCI driver" * tag 'sound-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: usb-audio: Add quirk for Syntek STK1160 ALSA: seq: Fix time account regression ALSA: hda - Fix surround output pins for ASRock B150M mobo ALSA: hda - Fix headset mic detection problem for two Dell laptops ALSA: asihpi: fix kernel memory disclosure ALSA: hda - Adding a new group of pin cfg into ALC295 pin quirk table ALSA: hda - allow 40 bit DMA mask for NVidia devices
This commit is contained in:
commit
2cd0b50a18
|
@ -448,8 +448,8 @@ snd_seq_real_time_t snd_seq_timer_get_cur_time(struct snd_seq_timer *tmr)
|
||||||
|
|
||||||
ktime_get_ts64(&tm);
|
ktime_get_ts64(&tm);
|
||||||
tm = timespec64_sub(tm, tmr->last_update);
|
tm = timespec64_sub(tm, tmr->last_update);
|
||||||
cur_time.tv_nsec = tm.tv_nsec;
|
cur_time.tv_nsec += tm.tv_nsec;
|
||||||
cur_time.tv_sec = tm.tv_sec;
|
cur_time.tv_sec += tm.tv_sec;
|
||||||
snd_seq_sanity_real_time(&cur_time);
|
snd_seq_sanity_real_time(&cur_time);
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&tmr->lock, flags);
|
spin_unlock_irqrestore(&tmr->lock, flags);
|
||||||
|
|
|
@ -111,7 +111,7 @@ long asihpi_hpi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
hm = kmalloc(sizeof(*hm), GFP_KERNEL);
|
hm = kmalloc(sizeof(*hm), GFP_KERNEL);
|
||||||
hr = kmalloc(sizeof(*hr), GFP_KERNEL);
|
hr = kzalloc(sizeof(*hr), GFP_KERNEL);
|
||||||
if (!hm || !hr) {
|
if (!hm || !hr) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
@ -341,8 +341,7 @@ enum {
|
||||||
|
|
||||||
/* quirks for Nvidia */
|
/* quirks for Nvidia */
|
||||||
#define AZX_DCAPS_PRESET_NVIDIA \
|
#define AZX_DCAPS_PRESET_NVIDIA \
|
||||||
(AZX_DCAPS_NO_MSI | /*AZX_DCAPS_ALIGN_BUFSIZE |*/ \
|
(AZX_DCAPS_NO_MSI | AZX_DCAPS_CORBRP_SELF_CLEAR |\
|
||||||
AZX_DCAPS_NO_64BIT | AZX_DCAPS_CORBRP_SELF_CLEAR |\
|
|
||||||
AZX_DCAPS_SNOOP_TYPE(NVIDIA))
|
AZX_DCAPS_SNOOP_TYPE(NVIDIA))
|
||||||
|
|
||||||
#define AZX_DCAPS_PRESET_CTHDA \
|
#define AZX_DCAPS_PRESET_CTHDA \
|
||||||
|
@ -1716,6 +1715,10 @@ static int azx_first_init(struct azx *chip)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* NVidia hardware normally only supports up to 40 bits of DMA */
|
||||||
|
if (chip->pci->vendor == PCI_VENDOR_ID_NVIDIA)
|
||||||
|
dma_bits = 40;
|
||||||
|
|
||||||
/* disable 64bit DMA address on some devices */
|
/* disable 64bit DMA address on some devices */
|
||||||
if (chip->driver_caps & AZX_DCAPS_NO_64BIT) {
|
if (chip->driver_caps & AZX_DCAPS_NO_64BIT) {
|
||||||
dev_dbg(card->dev, "Disabling 64bit DMA\n");
|
dev_dbg(card->dev, "Disabling 64bit DMA\n");
|
||||||
|
|
|
@ -5811,8 +5811,6 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
||||||
#define ALC295_STANDARD_PINS \
|
#define ALC295_STANDARD_PINS \
|
||||||
{0x12, 0xb7a60130}, \
|
{0x12, 0xb7a60130}, \
|
||||||
{0x14, 0x90170110}, \
|
{0x14, 0x90170110}, \
|
||||||
{0x17, 0x21014020}, \
|
|
||||||
{0x18, 0x21a19030}, \
|
|
||||||
{0x21, 0x04211020}
|
{0x21, 0x04211020}
|
||||||
|
|
||||||
#define ALC298_STANDARD_PINS \
|
#define ALC298_STANDARD_PINS \
|
||||||
|
@ -5858,10 +5856,18 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
||||||
{0x14, 0x90170110},
|
{0x14, 0x90170110},
|
||||||
{0x1b, 0x02011020},
|
{0x1b, 0x02011020},
|
||||||
{0x21, 0x0221101f}),
|
{0x21, 0x0221101f}),
|
||||||
|
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
|
{0x14, 0x90170110},
|
||||||
|
{0x1b, 0x01011020},
|
||||||
|
{0x21, 0x0221101f}),
|
||||||
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
{0x14, 0x90170130},
|
{0x14, 0x90170130},
|
||||||
{0x1b, 0x01014020},
|
{0x1b, 0x01014020},
|
||||||
{0x21, 0x0221103f}),
|
{0x21, 0x0221103f}),
|
||||||
|
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
|
{0x14, 0x90170130},
|
||||||
|
{0x1b, 0x01011020},
|
||||||
|
{0x21, 0x0221103f}),
|
||||||
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
{0x14, 0x90170130},
|
{0x14, 0x90170130},
|
||||||
{0x1b, 0x02011020},
|
{0x1b, 0x02011020},
|
||||||
|
@ -6039,7 +6045,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
||||||
ALC292_STANDARD_PINS,
|
ALC292_STANDARD_PINS,
|
||||||
{0x13, 0x90a60140}),
|
{0x13, 0x90a60140}),
|
||||||
SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
|
SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
ALC295_STANDARD_PINS),
|
ALC295_STANDARD_PINS,
|
||||||
|
{0x17, 0x21014020},
|
||||||
|
{0x18, 0x21a19030}),
|
||||||
|
SND_HDA_PIN_QUIRK(0x10ec0295, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
|
ALC295_STANDARD_PINS,
|
||||||
|
{0x17, 0x21014040},
|
||||||
|
{0x18, 0x21a19050}),
|
||||||
SND_HDA_PIN_QUIRK(0x10ec0298, 0x1028, "Dell", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE,
|
SND_HDA_PIN_QUIRK(0x10ec0298, 0x1028, "Dell", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||||
ALC298_STANDARD_PINS,
|
ALC298_STANDARD_PINS,
|
||||||
{0x17, 0x90170110}),
|
{0x17, 0x90170110}),
|
||||||
|
@ -6613,6 +6625,7 @@ enum {
|
||||||
ALC891_FIXUP_HEADSET_MODE,
|
ALC891_FIXUP_HEADSET_MODE,
|
||||||
ALC891_FIXUP_DELL_MIC_NO_PRESENCE,
|
ALC891_FIXUP_DELL_MIC_NO_PRESENCE,
|
||||||
ALC662_FIXUP_ACER_VERITON,
|
ALC662_FIXUP_ACER_VERITON,
|
||||||
|
ALC892_FIXUP_ASROCK_MOBO,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct hda_fixup alc662_fixups[] = {
|
static const struct hda_fixup alc662_fixups[] = {
|
||||||
|
@ -6889,6 +6902,16 @@ static const struct hda_fixup alc662_fixups[] = {
|
||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
[ALC892_FIXUP_ASROCK_MOBO] = {
|
||||||
|
.type = HDA_FIXUP_PINS,
|
||||||
|
.v.pins = (const struct hda_pintbl[]) {
|
||||||
|
{ 0x15, 0x40f000f0 }, /* disabled */
|
||||||
|
{ 0x16, 0x40f000f0 }, /* disabled */
|
||||||
|
{ 0x18, 0x01014011 }, /* LO */
|
||||||
|
{ 0x1a, 0x01014012 }, /* LO */
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_pci_quirk alc662_fixup_tbl[] = {
|
static const struct snd_pci_quirk alc662_fixup_tbl[] = {
|
||||||
|
@ -6926,6 +6949,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
|
SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
|
||||||
SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
|
SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
|
||||||
SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
|
SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
|
||||||
|
SND_PCI_QUIRK(0x1849, 0x5892, "ASRock B150M", ALC892_FIXUP_ASROCK_MOBO),
|
||||||
SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
|
SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
|
||||||
SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
|
SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
|
||||||
SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
|
SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
|
||||||
|
|
|
@ -2907,6 +2907,23 @@ AU0828_DEVICE(0x2040, 0x7260, "Hauppauge", "HVR-950Q"),
|
||||||
AU0828_DEVICE(0x2040, 0x7213, "Hauppauge", "HVR-950Q"),
|
AU0828_DEVICE(0x2040, 0x7213, "Hauppauge", "HVR-950Q"),
|
||||||
AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
|
AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
|
||||||
|
|
||||||
|
/* Syntek STK1160 */
|
||||||
|
{
|
||||||
|
.match_flags = USB_DEVICE_ID_MATCH_DEVICE |
|
||||||
|
USB_DEVICE_ID_MATCH_INT_CLASS |
|
||||||
|
USB_DEVICE_ID_MATCH_INT_SUBCLASS,
|
||||||
|
.idVendor = 0x05e1,
|
||||||
|
.idProduct = 0x0408,
|
||||||
|
.bInterfaceClass = USB_CLASS_AUDIO,
|
||||||
|
.bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
|
||||||
|
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
|
||||||
|
.vendor_name = "Syntek",
|
||||||
|
.product_name = "STK1160",
|
||||||
|
.ifnum = QUIRK_ANY_INTERFACE,
|
||||||
|
.type = QUIRK_AUDIO_ALIGN_TRANSFER
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/* Digidesign Mbox */
|
/* Digidesign Mbox */
|
||||||
{
|
{
|
||||||
/* Thanks to Clemens Ladisch <clemens@ladisch.de> */
|
/* Thanks to Clemens Ladisch <clemens@ladisch.de> */
|
||||||
|
|
Loading…
Reference in New Issue