mirror of https://gitee.com/openkylin/linux.git
sound fixes for 4.11-rc1
A few last-minute fixes for rc1: - ALSA core timer and sequencer fixes for bugs spotted by syzkaller - A couple of trivial HD-audio fixups - Additional PCI / codec IDs for Intel Geminilake - Fixes for CT-XFi DMA mask bugs -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEECxfAB4MH3rD5mfB6bDGAVD0pKaQFAli2mQcOHHRpd2FpQHN1 c2UuZGUACgkQbDGAVD0pKaTboA//fvaaaGlU+IUBvEHV8LlqyfHOUBIIyowYIeJE mQHV4lrdMa9vEfXpIB5bztrqRcB6O9Trw0l4gEZfkC+YgLdZKZXi/haSdVnYsHRi koD8ZM1EtNu8o9FzGhOg8Cefu+bvQCg/dAglt6oitf3av/j6NmpFwC3EZzcAosH/ VE3VRBk8AyQj1DYmlfoc+i27ksO9OceQI9xvJvGwdbbwzBTH/dL+PGXCwfF88T2p CyUvxtCk2HohHMloV6PtbpdD+ldouZxRvQsiV6MRy0Wg+ARAILvjeS9gdn3UT2LE E5J2JLM1X0x5J82Hki3z9vctwvmZbifCj/ewlql+3gFgAAvt0/PiRYZ0W1jcUpK6 5THLRwU8zCOuAhQxsEzhDZh6mQq/gV69mWdVCgp3Er5faZQm6LqPUsHp2+yB/0aK 0mXFRCAIjJa62ddtl40LPkPtJoEX9M00+ILNeASjMhpZSM8KyuBUnqygCoB1Kxhv vOiNhfIzXl8wQl406o/nIiDzbOdK7Ze7GyT6DHNQtNaS/aA9lS5RxYfcxDGce6c4 nm9bnfkvRypNeY+dQwX5KefOd+ilYLHcOevUv1rC395pby7rEuVuMl/j83Qr8Pof cIjdSFefCCCQafH37UZhQ31noBIrxNFwlDBJh2YLWVDj6tU5ikY4GnjZQnMX/uv9 /6XhpiM= =hOYM -----END PGP SIGNATURE----- Merge tag 'sound-fix-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A few last-minute fixes for rc1: - ALSA core timer and sequencer fixes for bugs spotted by syzkaller - a couple of trivial HD-audio fixups - additional PCI / codec IDs for Intel Geminilake - fixes for CT-XFi DMA mask bugs" * tag 'sound-fix-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: seq: Fix link corruption by event error handling ALSA: hda - Add subwoofer support for Dell Inspiron 17 7000 Gaming ALSA: ctxfi: Fallback DMA mask to 32bit ALSA: timer: Reject user params with too small ticks ALSA: hda: Add Geminilake HDMI codec ID ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine ALSA: hda - Add Geminilake PCI ID
This commit is contained in:
commit
044d5dfd62
|
@ -135,6 +135,7 @@ int snd_seq_fifo_event_in(struct snd_seq_fifo *f,
|
|||
f->tail = cell;
|
||||
if (f->head == NULL)
|
||||
f->head = cell;
|
||||
cell->next = NULL;
|
||||
f->cells++;
|
||||
spin_unlock_irqrestore(&f->lock, flags);
|
||||
|
||||
|
@ -214,6 +215,8 @@ void snd_seq_fifo_cell_putback(struct snd_seq_fifo *f,
|
|||
spin_lock_irqsave(&f->lock, flags);
|
||||
cell->next = f->head;
|
||||
f->head = cell;
|
||||
if (!f->tail)
|
||||
f->tail = cell;
|
||||
f->cells++;
|
||||
spin_unlock_irqrestore(&f->lock, flags);
|
||||
}
|
||||
|
|
|
@ -1702,9 +1702,21 @@ static int snd_timer_user_params(struct file *file,
|
|||
return -EBADFD;
|
||||
if (copy_from_user(¶ms, _params, sizeof(params)))
|
||||
return -EFAULT;
|
||||
if (!(t->hw.flags & SNDRV_TIMER_HW_SLAVE) && params.ticks < 1) {
|
||||
err = -EINVAL;
|
||||
goto _end;
|
||||
if (!(t->hw.flags & SNDRV_TIMER_HW_SLAVE)) {
|
||||
u64 resolution;
|
||||
|
||||
if (params.ticks < 1) {
|
||||
err = -EINVAL;
|
||||
goto _end;
|
||||
}
|
||||
|
||||
/* Don't allow resolution less than 1ms */
|
||||
resolution = snd_timer_resolution(tu->timeri);
|
||||
resolution *= params.ticks;
|
||||
if (resolution < 1000000) {
|
||||
err = -EINVAL;
|
||||
goto _end;
|
||||
}
|
||||
}
|
||||
if (params.queue_size > 0 &&
|
||||
(params.queue_size < 32 || params.queue_size > 1024)) {
|
||||
|
|
|
@ -27,12 +27,6 @@
|
|||
#include "cthw20k1.h"
|
||||
#include "ct20k1reg.h"
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
#define CT_XFI_DMA_MASK DMA_BIT_MASK(32) /* 32 bit PTE */
|
||||
#else
|
||||
#define CT_XFI_DMA_MASK DMA_BIT_MASK(64) /* 64 bit PTE */
|
||||
#endif
|
||||
|
||||
struct hw20k1 {
|
||||
struct hw hw;
|
||||
spinlock_t reg_20k1_lock;
|
||||
|
@ -1904,19 +1898,18 @@ static int hw_card_start(struct hw *hw)
|
|||
{
|
||||
int err;
|
||||
struct pci_dev *pci = hw->pci;
|
||||
const unsigned int dma_bits = BITS_PER_LONG;
|
||||
|
||||
err = pci_enable_device(pci);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* Set DMA transfer mask */
|
||||
if (dma_set_mask(&pci->dev, CT_XFI_DMA_MASK) < 0 ||
|
||||
dma_set_coherent_mask(&pci->dev, CT_XFI_DMA_MASK) < 0) {
|
||||
dev_err(hw->card->dev,
|
||||
"architecture does not support PCI busmaster DMA with mask 0x%llx\n",
|
||||
CT_XFI_DMA_MASK);
|
||||
err = -ENXIO;
|
||||
goto error1;
|
||||
if (dma_set_mask(&pci->dev, DMA_BIT_MASK(dma_bits))) {
|
||||
dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(dma_bits));
|
||||
} else {
|
||||
dma_set_mask(&pci->dev, DMA_BIT_MASK(32));
|
||||
dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(32));
|
||||
}
|
||||
|
||||
if (!hw->io_base) {
|
||||
|
|
|
@ -26,12 +26,6 @@
|
|||
#include "cthw20k2.h"
|
||||
#include "ct20k2reg.h"
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
#define CT_XFI_DMA_MASK DMA_BIT_MASK(32) /* 32 bit PTE */
|
||||
#else
|
||||
#define CT_XFI_DMA_MASK DMA_BIT_MASK(64) /* 64 bit PTE */
|
||||
#endif
|
||||
|
||||
struct hw20k2 {
|
||||
struct hw hw;
|
||||
/* for i2c */
|
||||
|
@ -2029,19 +2023,18 @@ static int hw_card_start(struct hw *hw)
|
|||
int err = 0;
|
||||
struct pci_dev *pci = hw->pci;
|
||||
unsigned int gctl;
|
||||
const unsigned int dma_bits = BITS_PER_LONG;
|
||||
|
||||
err = pci_enable_device(pci);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* Set DMA transfer mask */
|
||||
if (dma_set_mask(&pci->dev, CT_XFI_DMA_MASK) < 0 ||
|
||||
dma_set_coherent_mask(&pci->dev, CT_XFI_DMA_MASK) < 0) {
|
||||
dev_err(hw->card->dev,
|
||||
"architecture does not support PCI busmaster DMA with mask 0x%llx\n",
|
||||
CT_XFI_DMA_MASK);
|
||||
err = -ENXIO;
|
||||
goto error1;
|
||||
if (!dma_set_mask(&pci->dev, DMA_BIT_MASK(dma_bits))) {
|
||||
dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(dma_bits));
|
||||
} else {
|
||||
dma_set_mask(&pci->dev, DMA_BIT_MASK(32));
|
||||
dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(32));
|
||||
}
|
||||
|
||||
if (!hw->io_base) {
|
||||
|
|
|
@ -2255,6 +2255,9 @@ static const struct pci_device_id azx_ids[] = {
|
|||
/* Broxton-T */
|
||||
{ PCI_DEVICE(0x8086, 0x1a98),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON },
|
||||
/* Gemini-Lake */
|
||||
{ PCI_DEVICE(0x8086, 0x3198),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON },
|
||||
/* Haswell */
|
||||
{ PCI_DEVICE(0x8086, 0x0a0c),
|
||||
.driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL },
|
||||
|
|
|
@ -3800,6 +3800,7 @@ HDA_CODEC_ENTRY(0x80862808, "Broadwell HDMI", patch_i915_hsw_hdmi),
|
|||
HDA_CODEC_ENTRY(0x80862809, "Skylake HDMI", patch_i915_hsw_hdmi),
|
||||
HDA_CODEC_ENTRY(0x8086280a, "Broxton HDMI", patch_i915_hsw_hdmi),
|
||||
HDA_CODEC_ENTRY(0x8086280b, "Kabylake HDMI", patch_i915_hsw_hdmi),
|
||||
HDA_CODEC_ENTRY(0x8086280d, "Geminilake HDMI", patch_i915_hsw_hdmi),
|
||||
HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi),
|
||||
HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI", patch_i915_byt_hdmi),
|
||||
HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi),
|
||||
|
|
|
@ -5606,6 +5606,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x1028, 0x0725, "Dell Inspiron 3162", ALC255_FIXUP_DELL_SPK_NOISE),
|
||||
SND_PCI_QUIRK(0x1028, 0x075b, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE),
|
||||
SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME),
|
||||
SND_PCI_QUIRK(0x1028, 0x0798, "Dell Inspiron 17 7000 Gaming", ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER),
|
||||
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
|
||||
|
@ -5724,6 +5725,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460),
|
||||
SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
|
||||
SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3112, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP),
|
||||
|
|
Loading…
Reference in New Issue