Commit 5b7f00a5 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull sound fixes from Takashi Iwai:
 "This has been a calm week again: one minor lockdep fix for PCM core,
  and the most of the rest are HD-audio quirks and fixups for various
  chips and machines"

* tag 'sound-4.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda - Add headset mic pin quirk for a Dell device
  ALSA: hda - remove one pin from ALC292_STANDARD_PINS
  ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda
  ALSA: hda: add new AMD PCI IDs with proper driver caps
  ALSA: hda - Fix Skylake codec timeout
  ALSA: hda - Add headset mic support for Acer Aspire V5-573G
  ALSA: sparc: Add missing kfree in error path
  ALSA: pcm: Fix lockdep warning with nonatomic PCM ops
parents 874bf9ee cba59972
...@@ -85,7 +85,7 @@ static DECLARE_RWSEM(snd_pcm_link_rwsem); ...@@ -85,7 +85,7 @@ static DECLARE_RWSEM(snd_pcm_link_rwsem);
void snd_pcm_stream_lock(struct snd_pcm_substream *substream) void snd_pcm_stream_lock(struct snd_pcm_substream *substream)
{ {
if (substream->pcm->nonatomic) { if (substream->pcm->nonatomic) {
down_read(&snd_pcm_link_rwsem); down_read_nested(&snd_pcm_link_rwsem, SINGLE_DEPTH_NESTING);
mutex_lock(&substream->self_group.mutex); mutex_lock(&substream->self_group.mutex);
} else { } else {
read_lock(&snd_pcm_link_rwlock); read_lock(&snd_pcm_link_rwlock);
......
...@@ -56,8 +56,11 @@ int snd_hdac_display_power(struct hdac_bus *bus, bool enable) ...@@ -56,8 +56,11 @@ int snd_hdac_display_power(struct hdac_bus *bus, bool enable)
enable ? "enable" : "disable"); enable ? "enable" : "disable");
if (enable) { if (enable) {
if (!bus->i915_power_refcount++) if (!bus->i915_power_refcount++) {
acomp->ops->get_power(acomp->dev); acomp->ops->get_power(acomp->dev);
snd_hdac_set_codec_wakeup(bus, true);
snd_hdac_set_codec_wakeup(bus, false);
}
} else { } else {
WARN_ON(!bus->i915_power_refcount); WARN_ON(!bus->i915_power_refcount);
if (!--bus->i915_power_refcount) if (!--bus->i915_power_refcount)
......
...@@ -979,14 +979,16 @@ static int azx_runtime_resume(struct device *dev) ...@@ -979,14 +979,16 @@ static int azx_runtime_resume(struct device *dev)
if (!azx_has_pm_runtime(chip)) if (!azx_has_pm_runtime(chip))
return 0; return 0;
if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
&& hda->need_i915_power) { bus = azx_bus(chip);
bus = azx_bus(chip); if (hda->need_i915_power) {
snd_hdac_display_power(bus, true); snd_hdac_display_power(bus, true);
haswell_set_bclk(hda); haswell_set_bclk(hda);
/* toggle codec wakeup bit for STATESTS read */ } else {
snd_hdac_set_codec_wakeup(bus, true); /* toggle codec wakeup bit for STATESTS read */
snd_hdac_set_codec_wakeup(bus, false); snd_hdac_set_codec_wakeup(bus, true);
snd_hdac_set_codec_wakeup(bus, false);
}
} }
/* Read STATESTS before controller reset */ /* Read STATESTS before controller reset */
...@@ -2182,6 +2184,8 @@ static const struct pci_device_id azx_ids[] = { ...@@ -2182,6 +2184,8 @@ static const struct pci_device_id azx_ids[] = {
/* ATI HDMI */ /* ATI HDMI */
{ PCI_DEVICE(0x1002, 0x1308), { PCI_DEVICE(0x1002, 0x1308),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0x157a),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0x793b), { PCI_DEVICE(0x1002, 0x793b),
.driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI }, .driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI },
{ PCI_DEVICE(0x1002, 0x7919), { PCI_DEVICE(0x1002, 0x7919),
...@@ -2236,8 +2240,14 @@ static const struct pci_device_id azx_ids[] = { ...@@ -2236,8 +2240,14 @@ static const struct pci_device_id azx_ids[] = {
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0xaab0), { PCI_DEVICE(0x1002, 0xaab0),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0xaac0),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0xaac8), { PCI_DEVICE(0x1002, 0xaac8),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0xaad8),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
{ PCI_DEVICE(0x1002, 0xaae8),
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
/* VIA VT8251/VT8237A */ /* VIA VT8251/VT8237A */
{ PCI_DEVICE(0x1106, 0x3288), { PCI_DEVICE(0x1106, 0x3288),
.driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA }, .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA },
......
...@@ -3512,6 +3512,7 @@ static const struct hda_codec_preset snd_hda_preset_hdmi[] = { ...@@ -3512,6 +3512,7 @@ static const struct hda_codec_preset snd_hda_preset_hdmi[] = {
{ .id = 0x10de0070, .name = "GPU 70 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de0070, .name = "GPU 70 HDMI/DP", .patch = patch_nvhdmi },
{ .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi },
{ .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi },
{ .id = 0x10de007d, .name = "GPU 7d HDMI/DP", .patch = patch_nvhdmi },
{ .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch },
{ .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
{ .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, { .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
...@@ -3576,6 +3577,7 @@ MODULE_ALIAS("snd-hda-codec-id:10de0067"); ...@@ -3576,6 +3577,7 @@ MODULE_ALIAS("snd-hda-codec-id:10de0067");
MODULE_ALIAS("snd-hda-codec-id:10de0070"); MODULE_ALIAS("snd-hda-codec-id:10de0070");
MODULE_ALIAS("snd-hda-codec-id:10de0071"); MODULE_ALIAS("snd-hda-codec-id:10de0071");
MODULE_ALIAS("snd-hda-codec-id:10de0072"); MODULE_ALIAS("snd-hda-codec-id:10de0072");
MODULE_ALIAS("snd-hda-codec-id:10de007d");
MODULE_ALIAS("snd-hda-codec-id:10de8001"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
MODULE_ALIAS("snd-hda-codec-id:11069f80"); MODULE_ALIAS("snd-hda-codec-id:11069f80");
MODULE_ALIAS("snd-hda-codec-id:11069f81"); MODULE_ALIAS("snd-hda-codec-id:11069f81");
......
...@@ -5061,7 +5061,7 @@ static const struct hda_fixup alc269_fixups[] = { ...@@ -5061,7 +5061,7 @@ static const struct hda_fixup alc269_fixups[] = {
{ 0x14, 0x90170110 }, { 0x14, 0x90170110 },
{ 0x17, 0x40000008 }, { 0x17, 0x40000008 },
{ 0x18, 0x411111f0 }, { 0x18, 0x411111f0 },
{ 0x19, 0x411111f0 }, { 0x19, 0x01a1913c },
{ 0x1a, 0x411111f0 }, { 0x1a, 0x411111f0 },
{ 0x1b, 0x411111f0 }, { 0x1b, 0x411111f0 },
{ 0x1d, 0x40f89b2d }, { 0x1d, 0x40f89b2d },
...@@ -5430,8 +5430,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { ...@@ -5430,8 +5430,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
{0x15, 0x0221401f}, \ {0x15, 0x0221401f}, \
{0x1a, 0x411111f0}, \ {0x1a, 0x411111f0}, \
{0x1b, 0x411111f0}, \ {0x1b, 0x411111f0}, \
{0x1d, 0x40700001}, \ {0x1d, 0x40700001}
{0x1e, 0x411111f0}
#define ALC298_STANDARD_PINS \ #define ALC298_STANDARD_PINS \
{0x18, 0x411111f0}, \ {0x18, 0x411111f0}, \
...@@ -5462,6 +5461,17 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { ...@@ -5462,6 +5461,17 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
{0x17, 0x40000000}, {0x17, 0x40000000},
{0x1d, 0x40700001}, {0x1d, 0x40700001},
{0x21, 0x02211030}), {0x21, 0x02211030}),
SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
{0x12, 0x40000000},
{0x14, 0x90170130},
{0x17, 0x411111f0},
{0x18, 0x411111f0},
{0x19, 0x411111f0},
{0x1a, 0x411111f0},
{0x1b, 0x01014020},
{0x1d, 0x4054c029},
{0x1e, 0x411111f0},
{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,
{0x12, 0x90a60160}, {0x12, 0x90a60160},
{0x14, 0x90170120}, {0x14, 0x90170120},
...@@ -5690,35 +5700,48 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { ...@@ -5690,35 +5700,48 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
{0x13, 0x411111f0}, {0x13, 0x411111f0},
{0x16, 0x01014020}, {0x16, 0x01014020},
{0x18, 0x411111f0}, {0x18, 0x411111f0},
{0x19, 0x01a19030}), {0x19, 0x01a19030},
{0x1e, 0x411111f0}),
SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
ALC292_STANDARD_PINS, ALC292_STANDARD_PINS,
{0x12, 0x90a60140}, {0x12, 0x90a60140},
{0x13, 0x411111f0}, {0x13, 0x411111f0},
{0x16, 0x01014020}, {0x16, 0x01014020},
{0x18, 0x02a19031}, {0x18, 0x02a19031},
{0x19, 0x01a1903e}), {0x19, 0x01a1903e},
{0x1e, 0x411111f0}),
SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL3_MIC_NO_PRESENCE, SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
ALC292_STANDARD_PINS, ALC292_STANDARD_PINS,
{0x12, 0x90a60140}, {0x12, 0x90a60140},
{0x13, 0x411111f0}, {0x13, 0x411111f0},
{0x16, 0x411111f0}, {0x16, 0x411111f0},
{0x18, 0x411111f0}, {0x18, 0x411111f0},
{0x19, 0x411111f0}), {0x19, 0x411111f0},
{0x1e, 0x411111f0}),
SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
ALC292_STANDARD_PINS, ALC292_STANDARD_PINS,
{0x12, 0x40000000}, {0x12, 0x40000000},
{0x13, 0x90a60140}, {0x13, 0x90a60140},
{0x16, 0x21014020}, {0x16, 0x21014020},
{0x18, 0x411111f0}, {0x18, 0x411111f0},
{0x19, 0x21a19030}), {0x19, 0x21a19030},
{0x1e, 0x411111f0}),
SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
ALC292_STANDARD_PINS, ALC292_STANDARD_PINS,
{0x12, 0x40000000}, {0x12, 0x40000000},
{0x13, 0x90a60140}, {0x13, 0x90a60140},
{0x16, 0x411111f0}, {0x16, 0x411111f0},
{0x18, 0x411111f0}, {0x18, 0x411111f0},
{0x19, 0x411111f0}), {0x19, 0x411111f0},
{0x1e, 0x411111f0}),
SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
ALC292_STANDARD_PINS,
{0x12, 0x40000000},
{0x13, 0x90a60140},
{0x16, 0x21014020},
{0x18, 0x411111f0},
{0x19, 0x21a19030},
{0x1e, 0x411111ff}),
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,
{0x12, 0x90a60130}, {0x12, 0x90a60130},
......
...@@ -956,6 +956,7 @@ static int snd_amd7930_create(struct snd_card *card, ...@@ -956,6 +956,7 @@ static int snd_amd7930_create(struct snd_card *card,
if (!amd->regs) { if (!amd->regs) {
snd_printk(KERN_ERR snd_printk(KERN_ERR
"amd7930-%d: Unable to map chip registers.\n", dev); "amd7930-%d: Unable to map chip registers.\n", dev);
kfree(amd);
return -EIO; return -EIO;
} }
......
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