sound fixes for 4.2-rc4
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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJVslIDAAoJEGwxgFQ9KSmkUo4QAKguV54PoJ4w/eslP5vrk1wG xfptGRkHIhCbEukCzJqWUe/39xscgbHMvACwEjxW3NAg5ttj9FTLvLnPACW+0vnI unnCRmkVutHY+WEaonTGBolzi66j/crkPq48tU8GMtBt+x5G5FvLWmQcyY/0JgOq cM2GPg/lcAxGuLdb+yhZvU4NTIvV36egY13webacIMyDhLzEYhCTrIfFCG6wwe9k 4IWEp0jJWM/hPh/5ZQbqKYFaqmJC5wqdWRGqWEZFCSt8b7QQy4BdZsIhnQybB60z 4Hhl2j1ylC4sUaV8fNBMRnkICRcWOZzddLHPNH2ExjHKIE3AfX5vOVnPffJn21N2 5Zri5AtE8++95YqHILSkFRau3pPOHi76s454IpUHzFSd3MyVz17FSevmjOa0h4yc i0qga7Lv4fhvkj/RWisUJ3ekaHv+dKsbwARzkAq9q6hbsncZtOr9Fm1q7n83WC24 watL6XAPLadSR+mOKtR2W8eurilKXn87efRmHwEu+emKipTLRnW7d3BgVCASKD9b CKtK5ORpFlfMRnnrvUPypoeWCwyo9RZIlskwZDcUY52hD1MhB740otQ19pT997YW 7KZVpCZPanOsIU/YBmPferr1CcjREJsBcsRGYDGRTRR8NS4Wl/UAMs4g2pVmOXv+ VJVF3w3nZD90UL8OO/nX =4TLL -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
5b7f00a596
|
@ -85,7 +85,7 @@ static DECLARE_RWSEM(snd_pcm_link_rwsem);
|
|||
void snd_pcm_stream_lock(struct snd_pcm_substream *substream)
|
||||
{
|
||||
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);
|
||||
} else {
|
||||
read_lock(&snd_pcm_link_rwlock);
|
||||
|
|
|
@ -56,8 +56,11 @@ int snd_hdac_display_power(struct hdac_bus *bus, bool enable)
|
|||
enable ? "enable" : "disable");
|
||||
|
||||
if (enable) {
|
||||
if (!bus->i915_power_refcount++)
|
||||
if (!bus->i915_power_refcount++) {
|
||||
acomp->ops->get_power(acomp->dev);
|
||||
snd_hdac_set_codec_wakeup(bus, true);
|
||||
snd_hdac_set_codec_wakeup(bus, false);
|
||||
}
|
||||
} else {
|
||||
WARN_ON(!bus->i915_power_refcount);
|
||||
if (!--bus->i915_power_refcount)
|
||||
|
|
|
@ -979,14 +979,16 @@ static int azx_runtime_resume(struct device *dev)
|
|||
if (!azx_has_pm_runtime(chip))
|
||||
return 0;
|
||||
|
||||
if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL
|
||||
&& hda->need_i915_power) {
|
||||
bus = azx_bus(chip);
|
||||
snd_hdac_display_power(bus, true);
|
||||
haswell_set_bclk(hda);
|
||||
/* toggle codec wakeup bit for STATESTS read */
|
||||
snd_hdac_set_codec_wakeup(bus, true);
|
||||
snd_hdac_set_codec_wakeup(bus, false);
|
||||
if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
|
||||
bus = azx_bus(chip);
|
||||
if (hda->need_i915_power) {
|
||||
snd_hdac_display_power(bus, true);
|
||||
haswell_set_bclk(hda);
|
||||
} else {
|
||||
/* toggle codec wakeup bit for STATESTS read */
|
||||
snd_hdac_set_codec_wakeup(bus, true);
|
||||
snd_hdac_set_codec_wakeup(bus, false);
|
||||
}
|
||||
}
|
||||
|
||||
/* Read STATESTS before controller reset */
|
||||
|
@ -2182,6 +2184,8 @@ static const struct pci_device_id azx_ids[] = {
|
|||
/* ATI HDMI */
|
||||
{ PCI_DEVICE(0x1002, 0x1308),
|
||||
.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),
|
||||
.driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI },
|
||||
{ PCI_DEVICE(0x1002, 0x7919),
|
||||
|
@ -2236,8 +2240,14 @@ static const struct pci_device_id azx_ids[] = {
|
|||
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
|
||||
{ PCI_DEVICE(0x1002, 0xaab0),
|
||||
.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),
|
||||
.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 */
|
||||
{ PCI_DEVICE(0x1106, 0x3288),
|
||||
.driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA },
|
||||
|
|
|
@ -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 = 0x10de0071, .name = "GPU 71 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 = 0x11069f80, .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");
|
|||
MODULE_ALIAS("snd-hda-codec-id:10de0070");
|
||||
MODULE_ALIAS("snd-hda-codec-id:10de0071");
|
||||
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:11069f80");
|
||||
MODULE_ALIAS("snd-hda-codec-id:11069f81");
|
||||
|
|
|
@ -5061,7 +5061,7 @@ static const struct hda_fixup alc269_fixups[] = {
|
|||
{ 0x14, 0x90170110 },
|
||||
{ 0x17, 0x40000008 },
|
||||
{ 0x18, 0x411111f0 },
|
||||
{ 0x19, 0x411111f0 },
|
||||
{ 0x19, 0x01a1913c },
|
||||
{ 0x1a, 0x411111f0 },
|
||||
{ 0x1b, 0x411111f0 },
|
||||
{ 0x1d, 0x40f89b2d },
|
||||
|
@ -5430,8 +5430,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
|||
{0x15, 0x0221401f}, \
|
||||
{0x1a, 0x411111f0}, \
|
||||
{0x1b, 0x411111f0}, \
|
||||
{0x1d, 0x40700001}, \
|
||||
{0x1e, 0x411111f0}
|
||||
{0x1d, 0x40700001}
|
||||
|
||||
#define ALC298_STANDARD_PINS \
|
||||
{0x18, 0x411111f0}, \
|
||||
|
@ -5462,6 +5461,17 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
|||
{0x17, 0x40000000},
|
||||
{0x1d, 0x40700001},
|
||||
{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,
|
||||
{0x12, 0x90a60160},
|
||||
{0x14, 0x90170120},
|
||||
|
@ -5690,35 +5700,48 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
|||
{0x13, 0x411111f0},
|
||||
{0x16, 0x01014020},
|
||||
{0x18, 0x411111f0},
|
||||
{0x19, 0x01a19030}),
|
||||
{0x19, 0x01a19030},
|
||||
{0x1e, 0x411111f0}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
|
||||
ALC292_STANDARD_PINS,
|
||||
{0x12, 0x90a60140},
|
||||
{0x13, 0x411111f0},
|
||||
{0x16, 0x01014020},
|
||||
{0x18, 0x02a19031},
|
||||
{0x19, 0x01a1903e}),
|
||||
{0x19, 0x01a1903e},
|
||||
{0x1e, 0x411111f0}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
|
||||
ALC292_STANDARD_PINS,
|
||||
{0x12, 0x90a60140},
|
||||
{0x13, 0x411111f0},
|
||||
{0x16, 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}),
|
||||
{0x19, 0x21a19030},
|
||||
{0x1e, 0x411111f0}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||
ALC292_STANDARD_PINS,
|
||||
{0x12, 0x40000000},
|
||||
{0x13, 0x90a60140},
|
||||
{0x16, 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,
|
||||
ALC298_STANDARD_PINS,
|
||||
{0x12, 0x90a60130},
|
||||
|
|
|
@ -956,6 +956,7 @@ static int snd_amd7930_create(struct snd_card *card,
|
|||
if (!amd->regs) {
|
||||
snd_printk(KERN_ERR
|
||||
"amd7930-%d: Unable to map chip registers.\n", dev);
|
||||
kfree(amd);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue