--- /dev/null
+From cba59972a1191a0c1647a52fe745eed7a4b34b38 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Wed, 22 Jul 2015 10:00:25 +0200
+Subject: ALSA: hda - Add headset mic pin quirk for a Dell device
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit cba59972a1191a0c1647a52fe745eed7a4b34b38 upstream.
+
+Without this patch, the headset mic will not work on this machine.
+
+BugLink: https://bugs.launchpad.net/bugs/1476987
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5382,6 +5382,17 @@ static const struct snd_hda_pin_quirk al
+ {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},
+ {0x17, 0x90170140},
--- /dev/null
+From 0420694dddeb9e269a1ab2129a0119a5cea294a4 Mon Sep 17 00:00:00 2001
+From: Mateusz Sylwestrzak <matisec7@gmail.com>
+Date: Sun, 19 Jul 2015 17:38:56 +0200
+Subject: ALSA: hda - Add headset mic support for Acer Aspire V5-573G
+
+From: Mateusz Sylwestrzak <matisec7@gmail.com>
+
+commit 0420694dddeb9e269a1ab2129a0119a5cea294a4 upstream.
+
+Acer Aspire V5 with the ALC282 codec is given the wrong value for the
+0x19 PIN by the laptop's BIOS. Overriding it with the correct value
+adds support for the headset microphone which would not otherwise be
+visible in the system.
+
+The fix is based on commit 7819717b1134 with a similar quirk for Acer
+Aspire with the ALC269 codec.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=96201
+Signed-off-by: Mateusz Sylwestrzak <matisec7@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5004,7 +5004,7 @@ static const struct hda_fixup alc269_fix
+ { 0x14, 0x90170110 },
+ { 0x17, 0x40000008 },
+ { 0x18, 0x411111f0 },
+- { 0x19, 0x411111f0 },
++ { 0x19, 0x01a1913c },
+ { 0x1a, 0x411111f0 },
+ { 0x1b, 0x411111f0 },
+ { 0x1d, 0x40f89b2d },
--- /dev/null
+From 5022813ddb28b7679e8285812d52aaeb7e1e7657 Mon Sep 17 00:00:00 2001
+From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com>
+Date: Mon, 20 Jul 2015 19:56:18 +0530
+Subject: ALSA: hda: add new AMD PCI IDs with proper driver caps
+
+From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com>
+
+commit 5022813ddb28b7679e8285812d52aaeb7e1e7657 upstream.
+
+Fixes audio problems on newer asics
+
+Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_intel.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2056,6 +2056,8 @@ static const struct pci_device_id azx_id
+ /* 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),
+@@ -2110,8 +2112,14 @@ static const struct pci_device_id azx_id
+ .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 },
--- /dev/null
+From 6c3d91193d829bf58a35a10650415b05a736ca6c Mon Sep 17 00:00:00 2001
+From: Aaron Plattner <aplattner@nvidia.com>
+Date: Mon, 20 Jul 2015 17:14:14 -0700
+Subject: ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda
+
+From: Aaron Plattner <aplattner@nvidia.com>
+
+commit 6c3d91193d829bf58a35a10650415b05a736ca6c upstream.
+
+Vendor ID 0x10de007d is used by a yet-to-be-named GPU chip.
+
+This chip also has the 2-ch audio swapping bug, so patch_nvhdmi is
+appropriate here.
+
+Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -3333,6 +3333,7 @@ static const struct hda_codec_preset snd
+ { .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 },
+@@ -3396,6 +3397,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");
--- /dev/null
+From 3a05d12f46cb95a6a685114819363a56e6170996 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 29 Jul 2015 09:04:52 +0200
+Subject: ALSA: hda - Apply a fixup to Dell Vostro 5480
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 3a05d12f46cb95a6a685114819363a56e6170996 upstream.
+
+Dell Vostro 5480 (1028:069a) needs the very same quirk used for Vostro
+5470 model to make bass speakers properly working.
+
+Reported-and-tested-by: Paulo Roberto de Oliveira Castro <p.oliveira.castro@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5114,6 +5114,7 @@ static const struct snd_pci_quirk alc269
+ SND_PCI_QUIRK(0x1028, 0x064a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x064b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x0665, "Dell XPS 13", ALC288_FIXUP_DELL_XPS_13),
++ SND_PCI_QUIRK(0x1028, 0x069a, "Dell Vostro 5480", ALC290_FIXUP_SUBWOOFER_HSJACK),
+ SND_PCI_QUIRK(0x1028, 0x06c7, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x06d9, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x06da, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
--- /dev/null
+From b9d9c9efc292dd0ffe172780f915ed74eba3556c Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 27 Jul 2015 10:13:37 +0200
+Subject: ALSA: hda - Apply fixup for another Toshiba Satellite S50D
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit b9d9c9efc292dd0ffe172780f915ed74eba3556c upstream.
+
+Toshiba Satellite S50D has another model with a different PCI SSID
+(1179:fa93) while the previous fixup was for 1179:fa91. Adjust the
+fixup entry with SND_PCI_QUIRK_MASK() to match with both devices.
+
+Reported-by: Tim Sample <timsample@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_sigmatel.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -2920,7 +2920,8 @@ static const struct snd_pci_quirk stac92
+ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x148a,
+ "HP Mini", STAC_92HD83XXX_HP_LED),
+ SND_PCI_QUIRK_VENDOR(PCI_VENDOR_ID_HP, "HP", STAC_92HD83XXX_HP),
+- SND_PCI_QUIRK(PCI_VENDOR_ID_TOSHIBA, 0xfa91,
++ /* match both for 0xfa91 and 0xfa93 */
++ SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_TOSHIBA, 0xfffd, 0xfa91,
+ "Toshiba Satellite S50D", STAC_92HD83XXX_GPIO10_EAPD),
+ {} /* terminator */
+ };
--- /dev/null
+From 649ccd08534ee26deb2e5b08509800d0e95167f5 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 30 Jul 2015 22:30:29 +0200
+Subject: ALSA: hda - Fix MacBook Pro 5,2 quirk
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 649ccd08534ee26deb2e5b08509800d0e95167f5 upstream.
+
+MacBook Pro 5,2 with ALC889 codec had already a fixup entry, but this
+seems not working correctly, a fix for pin NID 0x15 is needed in
+addition. It's equivalent with the fixup for MacBook Air 1,1, so use
+this instead.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=102131
+Reported-and-tested-by: Jeffery Miller <jefferym@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -2224,7 +2224,7 @@ static const struct snd_pci_quirk alc882
+ SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF),
+ SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF),
+ SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF),
+- SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF),
++ SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_MBA11_VREF),
+
+ SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD),
+ SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD),
--- /dev/null
+From 4d0e677523a999e1dec28e55cc314c47ba09ca12 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 14 Jul 2015 15:19:37 +0200
+Subject: ALSA: line6: Fix -EBUSY error during active monitoring
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 4d0e677523a999e1dec28e55cc314c47ba09ca12 upstream.
+
+When a monitor stream is active, the next PCM stream access results in
+EBUSY error because of the check in line6_stream_start(). Fix this by
+just skipping the submission of pending URBs when the stream is
+already running instead.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=101431
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/line6/pcm.c | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+--- a/sound/usb/line6/pcm.c
++++ b/sound/usb/line6/pcm.c
+@@ -186,12 +186,8 @@ static int line6_stream_start(struct snd
+ int ret = 0;
+
+ spin_lock_irqsave(&pstr->lock, flags);
+- if (!test_and_set_bit(type, &pstr->running)) {
+- if (pstr->active_urbs || pstr->unlink_urbs) {
+- ret = -EBUSY;
+- goto error;
+- }
+-
++ if (!test_and_set_bit(type, &pstr->running) &&
++ !(pstr->active_urbs || pstr->unlink_urbs)) {
+ pstr->count = 0;
+ /* Submit all currently available URBs */
+ if (direction == SNDRV_PCM_STREAM_PLAYBACK)
+@@ -199,7 +195,6 @@ static int line6_stream_start(struct snd
+ else
+ ret = line6_submit_audio_in_all_urbs(line6pcm);
+ }
+- error:
+ if (ret < 0)
+ clear_bit(type, &pstr->running);
+ spin_unlock_irqrestore(&pstr->lock, flags);
--- /dev/null
+From 67756e3191c90e7c0b94b8b2fb63de255b6cd337 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 17 Jul 2015 15:22:33 +0200
+Subject: ALSA: pcm: Fix lockdep warning with nonatomic PCM ops
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 67756e3191c90e7c0b94b8b2fb63de255b6cd337 upstream.
+
+With the nonatomic PCM ops, the system may spew lockdep warnings like:
+
+ =============================================
+ [ INFO: possible recursive locking detected ]
+ 4.2.0-rc1-jeejaval3 #12 Not tainted
+ ---------------------------------------------
+ aplay/4029 is trying to acquire lock:
+ (snd_pcm_link_rwsem){.+.+.+}, at: [<ffffffff816fd473>] snd_pcm_stream_lock+0x43/0x60
+
+ but task is already holding lock:
+ (snd_pcm_link_rwsem){.+.+.+}, at: [<ffffffff816fcf29>] snd_pcm_action_nonatomic+0x29/0x80
+
+ other info that might help us debug this:
+ Possible unsafe locking scenario:
+
+ CPU0
+ ----
+ lock(snd_pcm_link_rwsem);
+ lock(snd_pcm_link_rwsem);
+
+Although this is false-positive as the rwsem is taken always as
+read-only for these code paths, it's certainly annoying to see this at
+any occasion. A simple fix is to use down_read_nested() in
+snd_pcm_stream_lock() that can be called inside another lock.
+
+Reported-by: Vinod Koul <vinod.koul@intel.com>
+Reported-by: Jeeja Kp <jeeja.kp@intel.com>
+Tested-by: Jeeja Kp <jeeja.kp@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/core/pcm_native.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/core/pcm_native.c
++++ b/sound/core/pcm_native.c
+@@ -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);
--- /dev/null
+From 2d1cb7f658fb9c3ba8f9dab8aca297d4dfdec835 Mon Sep 17 00:00:00 2001
+From: Yao-Wen Mao <yaowen@google.com>
+Date: Wed, 29 Jul 2015 15:13:54 +0800
+Subject: ALSA: usb-audio: add dB range mapping for some devices
+
+From: Yao-Wen Mao <yaowen@google.com>
+
+commit 2d1cb7f658fb9c3ba8f9dab8aca297d4dfdec835 upstream.
+
+Add the correct dB ranges of Bose Companion 5 and Drangonfly DAC 1.2.
+
+Signed-off-by: Yao-Wen Mao <yaowen@google.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer_maps.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+--- a/sound/usb/mixer_maps.c
++++ b/sound/usb/mixer_maps.c
+@@ -341,6 +341,20 @@ static const struct usbmix_name_map scms
+ { 0 }
+ };
+
++/* Bose companion 5, the dB conversion factor is 16 instead of 256 */
++static struct usbmix_dB_map bose_companion5_dB = {-5006, -6};
++static struct usbmix_name_map bose_companion5_map[] = {
++ { 3, NULL, .dB = &bose_companion5_dB },
++ { 0 } /* terminator */
++};
++
++/* Dragonfly DAC 1.2, the dB conversion factor is 1 instead of 256 */
++static struct usbmix_dB_map dragonfly_1_2_dB = {0, 5000};
++static struct usbmix_name_map dragonfly_1_2_map[] = {
++ { 7, NULL, .dB = &dragonfly_1_2_dB },
++ { 0 } /* terminator */
++};
++
+ /*
+ * Control map entries
+ */
+@@ -451,6 +465,16 @@ static struct usbmix_ctl_map usbmix_ctl_
+ .id = USB_ID(0x25c4, 0x0003),
+ .map = scms_usb3318_map,
+ },
++ {
++ /* Bose Companion 5 */
++ .id = USB_ID(0x05a7, 0x1020),
++ .map = bose_companion5_map,
++ },
++ {
++ /* Dragonfly DAC 1.2 */
++ .id = USB_ID(0x21b4, 0x0081),
++ .map = dragonfly_1_2_map,
++ },
+ { 0 } /* terminator */
+ };
+
--- /dev/null
+From 0689a86ae814f39af94a9736a0a5426dd82eb107 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= <dominic.sacre@gmx.de>
+Date: Tue, 30 Jun 2015 17:41:33 +0200
+Subject: ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= <dominic.sacre@gmx.de>
+
+commit 0689a86ae814f39af94a9736a0a5426dd82eb107 upstream.
+
+The Steinberg MI2 and MI4 interfaces are compatible with the USB class
+audio spec, but the MIDI part of the devices is reported as a vendor
+specific interface.
+
+This patch adds entries to quirks-table.h to recognize the MIDI
+endpoints. Audio functionality was already working and is unaffected by
+this change.
+
+Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de>
+Signed-off-by: Albert Huitsing <albert@huitsing.nl>
+Acked-by: Clemens Ladisch <clemens@ladisch.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks-table.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 68 insertions(+)
+
+--- a/sound/usb/quirks-table.h
++++ b/sound/usb/quirks-table.h
+@@ -2512,6 +2512,74 @@ YAMAHA_DEVICE(0x7010, "UB99"),
+ }
+ },
+
++/* Steinberg devices */
++{
++ /* Steinberg MI2 */
++ USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
++ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
++ .ifnum = QUIRK_ANY_INTERFACE,
++ .type = QUIRK_COMPOSITE,
++ .data = & (const struct snd_usb_audio_quirk[]) {
++ {
++ .ifnum = 0,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 1,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 2,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 3,
++ .type = QUIRK_MIDI_FIXED_ENDPOINT,
++ .data = &(const struct snd_usb_midi_endpoint_info) {
++ .out_cables = 0x0001,
++ .in_cables = 0x0001
++ }
++ },
++ {
++ .ifnum = -1
++ }
++ }
++ }
++},
++{
++ /* Steinberg MI4 */
++ USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
++ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
++ .ifnum = QUIRK_ANY_INTERFACE,
++ .type = QUIRK_COMPOSITE,
++ .data = & (const struct snd_usb_audio_quirk[]) {
++ {
++ .ifnum = 0,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 1,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 2,
++ .type = QUIRK_AUDIO_STANDARD_INTERFACE
++ },
++ {
++ .ifnum = 3,
++ .type = QUIRK_MIDI_FIXED_ENDPOINT,
++ .data = &(const struct snd_usb_midi_endpoint_info) {
++ .out_cables = 0x0001,
++ .in_cables = 0x0001
++ }
++ },
++ {
++ .ifnum = -1
++ }
++ }
++ }
++},
++
+ /* TerraTec devices */
+ {
+ USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
--- /dev/null
+From bb8bd38b9a1685334b73e8c62e128cbedb875867 Mon Sep 17 00:00:00 2001
+From: Mike Snitzer <snitzer@redhat.com>
+Date: Wed, 1 Jul 2015 12:57:40 -0400
+Subject: bio integrity: do not assume bio_integrity_pool exists if bioset exists
+
+From: Mike Snitzer <snitzer@redhat.com>
+
+commit bb8bd38b9a1685334b73e8c62e128cbedb875867 upstream.
+
+bio_integrity_alloc() and bio_integrity_free() assume that if a bio was
+allocated from a bioset that that bioset also had its bio_integrity_pool
+allocated using bioset_integrity_create(). This is a very bad
+assumption given that bioset_create() and bioset_integrity_create() are
+completely disjoint. Not all callers of bioset_create() have been
+trained to also call bioset_integrity_create() -- and they may not care
+to be.
+
+Fix this by falling back to kmalloc'ing 'struct bio_integrity_payload'
+rather than force all bioset consumers to (wastefully) preallocate a
+bio_integrity_pool that they very likely won't actually need (given the
+niche nature of the current block integrity support).
+
+Otherwise, a NULL pointer "Kernel BUG" with a trace like the following
+will be observed (as seen on s390x using zfcp storage) because dm-io
+doesn't use bioset_integrity_create() when creating its bioset:
+
+ [ 791.643338] Call Trace:
+ [ 791.643339] ([<00000003df98b848>] 0x3df98b848)
+ [ 791.643341] [<00000000002c5de8>] bio_integrity_alloc+0x48/0xf8
+ [ 791.643348] [<00000000002c6486>] bio_integrity_prep+0xae/0x2f0
+ [ 791.643349] [<0000000000371e38>] blk_queue_bio+0x1c8/0x3d8
+ [ 791.643355] [<000000000036f8d0>] generic_make_request+0xc0/0x100
+ [ 791.643357] [<000000000036f9b2>] submit_bio+0xa2/0x198
+ [ 791.643406] [<000003ff801f9774>] dispatch_io+0x15c/0x3b0 [dm_mod]
+ [ 791.643419] [<000003ff801f9b3e>] dm_io+0x176/0x2f0 [dm_mod]
+ [ 791.643423] [<000003ff8074b28a>] do_reads+0x13a/0x1a8 [dm_mirror]
+ [ 791.643425] [<000003ff8074b43a>] do_mirror+0x142/0x298 [dm_mirror]
+ [ 791.643428] [<0000000000154fca>] process_one_work+0x18a/0x3f8
+ [ 791.643432] [<000000000015598a>] worker_thread+0x132/0x3b0
+ [ 791.643435] [<000000000015d49a>] kthread+0xd2/0xd8
+ [ 791.643438] [<00000000005bc0ca>] kernel_thread_starter+0x6/0xc
+ [ 791.643446] [<00000000005bc0c4>] kernel_thread_starter+0x0/0xc
+
+Signed-off-by: Mike Snitzer <snitzer@redhat.com>
+Signed-off-by: Jens Axboe <axboe@fb.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ block/bio-integrity.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/block/bio-integrity.c
++++ b/block/bio-integrity.c
+@@ -51,7 +51,7 @@ struct bio_integrity_payload *bio_integr
+ unsigned long idx = BIO_POOL_NONE;
+ unsigned inline_vecs;
+
+- if (!bs) {
++ if (!bs || !bs->bio_integrity_pool) {
+ bip = kmalloc(sizeof(struct bio_integrity_payload) +
+ sizeof(struct bio_vec) * nr_vecs, gfp_mask);
+ inline_vecs = nr_vecs;
+@@ -104,7 +104,7 @@ void bio_integrity_free(struct bio *bio)
+ kfree(page_address(bip->bip_vec->bv_page) +
+ bip->bip_vec->bv_offset);
+
+- if (bs) {
++ if (bs && bs->bio_integrity_pool) {
+ if (bip->bip_slab != BIO_POOL_NONE)
+ bvec_free(bs->bvec_integrity_pool, bip->bip_vec,
+ bip->bip_slab);
--- /dev/null
+From c9d120b0b2b5069cb2ae62f8eac0cef31c8544be Mon Sep 17 00:00:00 2001
+From: Haggai Eran <haggaie@mellanox.com>
+Date: Fri, 17 Jul 2015 16:24:06 -0700
+Subject: dma-debug: skip debug_dma_assert_idle() when disabled
+
+From: Haggai Eran <haggaie@mellanox.com>
+
+commit c9d120b0b2b5069cb2ae62f8eac0cef31c8544be upstream.
+
+If dma-debug is disabled due to a memory error, DMA unmaps do not affect
+the dma_active_cacheline radix tree anymore, and debug_dma_assert_idle()
+can print false warnings.
+
+Disable debug_dma_assert_idle() when dma_debug_disabled() is true.
+
+Signed-off-by: Haggai Eran <haggaie@mellanox.com>
+Fixes: 0abdd7a81b7e ("dma-debug: introduce debug_dma_assert_idle()")
+Cc: Dan Williams <dan.j.williams@intel.com>
+Cc: Joerg Roedel <joro@8bytes.org>
+Cc: Vinod Koul <vinod.koul@intel.com>
+Cc: Russell King <rmk+kernel@arm.linux.org.uk>
+Cc: James Bottomley <JBottomley@Parallels.com>
+Cc: Florian Fainelli <f.fainelli@gmail.com>
+Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
+Cc: Jiri Kosina <jkosina@suse.cz>
+Cc: Horia Geanta <horia.geanta@freescale.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ lib/dma-debug.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/lib/dma-debug.c
++++ b/lib/dma-debug.c
+@@ -574,6 +574,9 @@ void debug_dma_assert_idle(struct page *
+ unsigned long flags;
+ phys_addr_t cln;
+
++ if (dma_debug_disabled())
++ return;
++
+ if (!page)
+ return;
+
--- /dev/null
+From 75a06189fc508a2acf470b0b12710362ffb2c4b1 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 16 Jul 2015 14:10:17 +0200
+Subject: genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 75a06189fc508a2acf470b0b12710362ffb2c4b1 upstream.
+
+The resend mechanism happily calls the interrupt handler of interrupts
+which are marked IRQ_NESTED_THREAD from softirq context. This can
+result in crashes because the interrupt handler is not the proper way
+to invoke the device handlers. They must be invoked via
+handle_nested_irq.
+
+Prevent the resend even if the interrupt has no valid parent irq
+set. Its better to have a lost interrupt than a crashing machine.
+
+Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/irq/resend.c | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+--- a/kernel/irq/resend.c
++++ b/kernel/irq/resend.c
+@@ -75,13 +75,21 @@ void check_irq_resend(struct irq_desc *d
+ !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) {
+ #ifdef CONFIG_HARDIRQS_SW_RESEND
+ /*
+- * If the interrupt has a parent irq and runs
+- * in the thread context of the parent irq,
+- * retrigger the parent.
++ * If the interrupt is running in the thread
++ * context of the parent irq we need to be
++ * careful, because we cannot trigger it
++ * directly.
+ */
+- if (desc->parent_irq &&
+- irq_settings_is_nested_thread(desc))
++ if (irq_settings_is_nested_thread(desc)) {
++ /*
++ * If the parent_irq is valid, we
++ * retrigger the parent, otherwise we
++ * do nothing.
++ */
++ if (!desc->parent_irq)
++ return;
+ irq = desc->parent_irq;
++ }
+ /* Set it pending and activate the softirq: */
+ set_bit(irq, irqs_resend);
+ tasklet_schedule(&resend_tasklet);
arc-override-toplevel-default-o2-with-o3.patch
arc-make-sure-instruction_pointer-returns-unsigned-value.patch
kbuild-allow-arch-makefiles-to-override-cpp-ld-c-flags.patch
+bio-integrity-do-not-assume-bio_integrity_pool-exists-if-bioset-exists.patch
+dma-debug-skip-debug_dma_assert_idle-when-disabled.patch
+genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch
+alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch
+alsa-line6-fix-ebusy-error-during-active-monitoring.patch
+alsa-pcm-fix-lockdep-warning-with-nonatomic-pcm-ops.patch
+alsa-hda-add-headset-mic-support-for-acer-aspire-v5-573g.patch
+alsa-hda-add-new-amd-pci-ids-with-proper-driver-caps.patch
+alsa-hda-add-new-gpu-codec-id-0x10de007d-to-snd-hda.patch
+alsa-hda-add-headset-mic-pin-quirk-for-a-dell-device.patch
+alsa-hda-apply-fixup-for-another-toshiba-satellite-s50d.patch
+alsa-hda-apply-a-fixup-to-dell-vostro-5480.patch
+alsa-usb-audio-add-db-range-mapping-for-some-devices.patch
+alsa-hda-fix-macbook-pro-5-2-quirk.patch