--- /dev/null
+From b5d724b1add6eabf3aa7276ab3454ea9f45eebd3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 2 Jun 2015 19:57:08 +0200
+Subject: ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit b5d724b1add6eabf3aa7276ab3454ea9f45eebd3 upstream.
+
+Acer Aspire 9420 with ALC883 (1025:0107) needs the fixup for EAPD to
+make the sound working like other Aspire models.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94111
+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
+@@ -2167,6 +2167,7 @@ static const struct hda_fixup alc882_fix
+ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
+ SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_FIXUP_ACER_EAPD),
+ SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
++ SND_PCI_QUIRK(0x1025, 0x0107, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
+ SND_PCI_QUIRK(0x1025, 0x010a, "Acer Ferrari 5000", ALC883_FIXUP_ACER_EAPD),
+ SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
+ SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_FIXUP_ACER_EAPD),
--- /dev/null
+From 044bddb9ca8d49edb91bc22b9940a463b0dbb97f Mon Sep 17 00:00:00 2001
+From: Clemens Ladisch <clemens@ladisch.de>
+Date: Wed, 3 Jun 2015 11:36:42 +0200
+Subject: ALSA: usb-audio: add MAYA44 USB+ mixer control names
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit 044bddb9ca8d49edb91bc22b9940a463b0dbb97f upstream.
+
+Add mixer control names for the ESI Maya44 USB+ (which appears to be
+identical width the AudioTrak Maya44 USB).
+
+Reported-by: nightmixes <nightmixes@gmail.com>
+Signed-off-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/mixer_maps.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/sound/usb/mixer_maps.c
++++ b/sound/usb/mixer_maps.c
+@@ -437,6 +437,11 @@ static struct usbmix_ctl_map usbmix_ctl_
+ .map = ebox44_map,
+ },
+ {
++ /* MAYA44 USB+ */
++ .id = USB_ID(0x2573, 0x0008),
++ .map = maya44_map,
++ },
++ {
+ /* KEF X300A */
+ .id = USB_ID(0x27ac, 0x1000),
+ .map = scms_usb3318_map,
--- /dev/null
+From 1ef9f0583514508bc93427106ceef3215e4eb1a5 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <wsa@the-dreams.de>
+Date: Fri, 29 May 2015 19:50:56 +0900
+Subject: ALSA: usb-audio: Add mic volume fix quirk for Logitech Quickcam Fusion
+
+From: Wolfram Sang <wsa@the-dreams.de>
+
+commit 1ef9f0583514508bc93427106ceef3215e4eb1a5 upstream.
+
+Fix this from the logs:
+
+usb 7-1: New USB device found, idVendor=046d, idProduct=08ca
+...
+usb 7-1: Warning! Unlikely big volume range (=3072), cval->res is probably wrong.
+usb 7-1: [5] FU [Mic Capture Volume] ch = 1, val = 4608/7680/1
+
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/mixer.c
++++ b/sound/usb/mixer.c
+@@ -918,6 +918,7 @@ static void volume_control_quirks(struct
+ case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */
+ case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */
+ case USB_ID(0x046d, 0x0826): /* HD Webcam c525 */
++ case USB_ID(0x046d, 0x08ca): /* Logitech Quickcam Fusion */
+ case USB_ID(0x046d, 0x0991):
+ /* Most audio usb devices lie about volume resolution.
+ * Most Logitech webcams have res = 384.
--- /dev/null
+From 3b7e5c7e36ed4a046bbea6d36c9be9d1d6107ae0 Mon Sep 17 00:00:00 2001
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+Date: Fri, 5 Jun 2015 09:42:49 +0200
+Subject: ALSA: usb-audio: add native DSD support for JLsounds I2SoverUSB
+
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+
+commit 3b7e5c7e36ed4a046bbea6d36c9be9d1d6107ae0 upstream.
+
+This patch adds native DSD support for the XMOS based JLsounds I2SoverUSB board
+
+Signed-off-by: Jurgen Kramer <gtmkramer@xs4all.nl>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1267,8 +1267,9 @@ u64 snd_usb_interface_dsd_format_quirks(
+ if (fp->altsetting == 2)
+ return SNDRV_PCM_FMTBIT_DSD_U32_BE;
+ break;
+- /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
+- case USB_ID(0x20b1, 0x2009):
++
++ case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
++ case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
+ if (fp->altsetting == 3)
+ return SNDRV_PCM_FMTBIT_DSD_U32_BE;
+ break;
--- /dev/null
+From 2f80b2958abe5658000d5ad9b45a36ecf879666e Mon Sep 17 00:00:00 2001
+From: Eric Wong <normalperson@yhbt.net>
+Date: Sat, 30 May 2015 09:15:39 +0000
+Subject: ALSA: usb-audio: don't try to get Outlaw RR2150 sample rate
+
+From: Eric Wong <normalperson@yhbt.net>
+
+commit 2f80b2958abe5658000d5ad9b45a36ecf879666e upstream.
+
+This quirk allows us to avoid the noisy:
+
+ current rate 0 is different from the runtime rate
+
+message every time playback starts. While USB DAC in the RR2150
+supports reading the sample rate, it never returns a sample rate
+other than zero in my observation with common sample rates.
+
+Signed-off-by: Eric Wong <normalperson@yhbt.net>
+Cc: Joe Turner <joe@oampo.co.uk>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1120,6 +1120,7 @@ bool snd_usb_get_sample_rate_quirk(struc
+ case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
+ case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
+ case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
++ case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
+ return true;
+ }
+ return false;
--- /dev/null
+From ea114fc27dc0cb9a550b6add5426720feb66262a Mon Sep 17 00:00:00 2001
+From: Clemens Ladisch <clemens@ladisch.de>
+Date: Wed, 3 Jun 2015 11:36:51 +0200
+Subject: ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+)
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit ea114fc27dc0cb9a550b6add5426720feb66262a upstream.
+
+The driver worked around an error in the MAYA44 USB(+)'s mixer unit
+descriptor by aborting before parsing the missing field. However,
+aborting parsing too early prevented parsing of the other units
+connected to this unit, so the capture mixer controls would be missing.
+
+Fix this by moving the check for this descriptor error after the parsing
+of the unit's input pins.
+
+Reported-by: nightmixes <nightmixes@gmail.com>
+Tested-by: nightmixes <nightmixes@gmail.com>
+Signed-off-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/mixer.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/sound/usb/mixer.c
++++ b/sound/usb/mixer.c
+@@ -1583,12 +1583,6 @@ static int parse_audio_mixer_unit(struct
+ unitid);
+ return -EINVAL;
+ }
+- /* no bmControls field (e.g. Maya44) -> ignore */
+- if (desc->bLength <= 10 + input_pins) {
+- usb_audio_dbg(state->chip, "MU %d has no bmControls field\n",
+- unitid);
+- return 0;
+- }
+
+ num_ins = 0;
+ ich = 0;
+@@ -1596,6 +1590,9 @@ static int parse_audio_mixer_unit(struct
+ err = parse_audio_unit(state, desc->baSourceID[pin]);
+ if (err < 0)
+ continue;
++ /* no bmControls field (e.g. Maya44) -> ignore */
++ if (desc->bLength <= 10 + input_pins)
++ continue;
+ err = check_input_term(state, desc->baSourceID[pin], &iterm);
+ if (err < 0)
+ return err;
--- /dev/null
+From 3370e13aa463adb84488ebf0e599e3dc0024315b Mon Sep 17 00:00:00 2001
+From: Sudeep Holla <sudeep.holla@arm.com>
+Date: Wed, 27 May 2015 11:26:13 +0100
+Subject: drivers/base: cacheinfo: handle absence of caches
+
+From: Sudeep Holla <sudeep.holla@arm.com>
+
+commit 3370e13aa463adb84488ebf0e599e3dc0024315b upstream.
+
+On some simulators like GEM5, caches may not be simulated. In those
+cases, the cache levels and leaves will be zero and will result in
+following exception:
+
+Unable to handle kernel NULL pointer dereference at virtual address 0040
+pgd = ffffffc0008fa000
+[00000040] *pgd=00000009f6807003, *pud=00000009f6807003,
+ *pmd=00000009f6808003, *pte=006000002c010707
+Internal error: Oops: 96000005 [#1] PREEMPT SMP
+Modules linked in:
+CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc5 #198
+task: ffffffc9768a0000 ti: ffffffc9768a8000 task.ti: ffffffc9768a8000
+PC is at detect_cache_attributes+0x98/0x2c8
+LR is at detect_cache_attributes+0x88/0x2c8
+
+kcalloc(0) returns a special value ZERO_SIZE_PTR which is non-NULL value
+but results in fault only on any attempt to dereferencing it. So
+checking for the non-NULL pointer will not suffice.
+
+This patch checks for non-zero cache leaf nodes and returns error if
+there are no cache leaves in detect_cache_attributes.
+
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Reported-by: William Wang <william.wang@arm.com>
+Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/cacheinfo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/cacheinfo.c
++++ b/drivers/base/cacheinfo.c
+@@ -179,7 +179,7 @@ static int detect_cache_attributes(unsig
+ {
+ int ret;
+
+- if (init_cache_level(cpu))
++ if (init_cache_level(cpu) || !cache_leaves(cpu))
+ return -ENOENT;
+
+ per_cpu_cacheinfo(cpu) = kcalloc(cache_leaves(cpu),
--- /dev/null
+From e5d732186270e0881f47d95610316c0614b21c3e Mon Sep 17 00:00:00 2001
+From: Axel Lin <axel.lin@ingics.com>
+Date: Wed, 20 May 2015 08:53:20 +0800
+Subject: iio: adc: twl6030-gpadc: Fix modalias
+
+From: Axel Lin <axel.lin@ingics.com>
+
+commit e5d732186270e0881f47d95610316c0614b21c3e upstream.
+
+Remove extra space between platform prefix and DRIVER_NAME in MODULE_ALIAS.
+
+Signed-off-by: Axel Lin <axel.lin@ingics.com>
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/adc/twl6030-gpadc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/iio/adc/twl6030-gpadc.c
++++ b/drivers/iio/adc/twl6030-gpadc.c
+@@ -1001,7 +1001,7 @@ static struct platform_driver twl6030_gp
+
+ module_platform_driver(twl6030_gpadc_driver);
+
+-MODULE_ALIAS("platform: " DRIVER_NAME);
++MODULE_ALIAS("platform:" DRIVER_NAME);
+ MODULE_AUTHOR("Balaji T K <balajitk@ti.com>");
+ MODULE_AUTHOR("Graeme Gregory <gg@slimlogic.co.uk>");
+ MODULE_AUTHOR("Oleksandr Kozaruk <oleksandr.kozaruk@ti.com");
--- /dev/null
+From c2a8b623a089d52c199e305e7905829907db8ec8 Mon Sep 17 00:00:00 2001
+From: Paul Cercueil <paul.cercueil@analog.com>
+Date: Fri, 15 May 2015 17:18:36 +0200
+Subject: iio: adis16400: Compute the scan mask from channel indices
+
+From: Paul Cercueil <paul.cercueil@analog.com>
+
+commit c2a8b623a089d52c199e305e7905829907db8ec8 upstream.
+
+We unfortunately can't use ~0UL for the scan mask to indicate that the
+only valid scan mask is all channels selected. The IIO core needs the exact
+mask to work correctly and not a super-set of it. So calculate the masked
+based on the channels that are available for a particular device.
+
+Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Fixes: 5eda3550a3cc ("staging:iio:adis16400: Preallocate transfer message")
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/imu/adis16400.h | 1 +
+ drivers/iio/imu/adis16400_core.c | 25 ++++++++++++++++++-------
+ 2 files changed, 19 insertions(+), 7 deletions(-)
+
+--- a/drivers/iio/imu/adis16400.h
++++ b/drivers/iio/imu/adis16400.h
+@@ -165,6 +165,7 @@ struct adis16400_state {
+ int filt_int;
+
+ struct adis adis;
++ unsigned long avail_scan_mask[2];
+ };
+
+ /* At the moment triggers are only used for ring buffer
+--- a/drivers/iio/imu/adis16400_core.c
++++ b/drivers/iio/imu/adis16400_core.c
+@@ -796,11 +796,6 @@ static const struct iio_info adis16400_i
+ .debugfs_reg_access = adis_debugfs_reg_access,
+ };
+
+-static const unsigned long adis16400_burst_scan_mask[] = {
+- ~0UL,
+- 0,
+-};
+-
+ static const char * const adis16400_status_error_msgs[] = {
+ [ADIS16400_DIAG_STAT_ZACCL_FAIL] = "Z-axis accelerometer self-test failure",
+ [ADIS16400_DIAG_STAT_YACCL_FAIL] = "Y-axis accelerometer self-test failure",
+@@ -848,6 +843,20 @@ static const struct adis_data adis16400_
+ BIT(ADIS16400_DIAG_STAT_POWER_LOW),
+ };
+
++static void adis16400_setup_chan_mask(struct adis16400_state *st)
++{
++ const struct adis16400_chip_info *chip_info = st->variant;
++ unsigned i;
++
++ for (i = 0; i < chip_info->num_channels; i++) {
++ const struct iio_chan_spec *ch = &chip_info->channels[i];
++
++ if (ch->scan_index >= 0 &&
++ ch->scan_index != ADIS16400_SCAN_TIMESTAMP)
++ st->avail_scan_mask[0] |= BIT(ch->scan_index);
++ }
++}
++
+ static int adis16400_probe(struct spi_device *spi)
+ {
+ struct adis16400_state *st;
+@@ -871,8 +880,10 @@ static int adis16400_probe(struct spi_de
+ indio_dev->info = &adis16400_info;
+ indio_dev->modes = INDIO_DIRECT_MODE;
+
+- if (!(st->variant->flags & ADIS16400_NO_BURST))
+- indio_dev->available_scan_masks = adis16400_burst_scan_mask;
++ if (!(st->variant->flags & ADIS16400_NO_BURST)) {
++ adis16400_setup_chan_mask(st);
++ indio_dev->available_scan_masks = st->avail_scan_mask;
++ }
+
+ ret = adis_init(&st->adis, indio_dev, spi, &adis16400_data);
+ if (ret)
--- /dev/null
+From 9df560350c90f3d3909fe653399b3584c9a17b61 Mon Sep 17 00:00:00 2001
+From: Paul Cercueil <paul.cercueil@analog.com>
+Date: Fri, 15 May 2015 17:18:37 +0200
+Subject: iio: adis16400: Fix burst mode
+
+From: Paul Cercueil <paul.cercueil@analog.com>
+
+commit 9df560350c90f3d3909fe653399b3584c9a17b61 upstream.
+
+There are a few issues with the burst mode support. For one we don't setup
+the rx buffer, so the buffer will never be filled and all samples will read
+as the zero. Furthermore the tx buffer has the wrong type, which means the
+driver sends the wrong command and not the right data is returned.
+
+The final issue is that in burst mode all channels are transferred. Hence
+the length of the transfer length should be the number of hardware
+channels * 2 bytes. Currently the driver uses indio_dev->scan_bytes for
+this. But if the timestamp channel is enabled the scan_bytes will be larger
+than the burst length. Fix this by just calculating the burst length based
+on the number of hardware channels.
+
+Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Fixes: 5eda3550a3cc ("staging:iio:adis16400: Preallocate transfer message")
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/imu/adis16400_buffer.c | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+--- a/drivers/iio/imu/adis16400_buffer.c
++++ b/drivers/iio/imu/adis16400_buffer.c
+@@ -18,7 +18,8 @@ int adis16400_update_scan_mode(struct ii
+ {
+ struct adis16400_state *st = iio_priv(indio_dev);
+ struct adis *adis = &st->adis;
+- uint16_t *tx;
++ unsigned int burst_length;
++ u8 *tx;
+
+ if (st->variant->flags & ADIS16400_NO_BURST)
+ return adis_update_scan_mode(indio_dev, scan_mask);
+@@ -26,26 +27,27 @@ int adis16400_update_scan_mode(struct ii
+ kfree(adis->xfer);
+ kfree(adis->buffer);
+
++ /* All but the timestamp channel */
++ burst_length = (indio_dev->num_channels - 1) * sizeof(u16);
++
+ adis->xfer = kcalloc(2, sizeof(*adis->xfer), GFP_KERNEL);
+ if (!adis->xfer)
+ return -ENOMEM;
+
+- adis->buffer = kzalloc(indio_dev->scan_bytes + sizeof(u16),
+- GFP_KERNEL);
++ adis->buffer = kzalloc(burst_length + sizeof(u16), GFP_KERNEL);
+ if (!adis->buffer)
+ return -ENOMEM;
+
+- tx = adis->buffer + indio_dev->scan_bytes;
+-
++ tx = adis->buffer + burst_length;
+ tx[0] = ADIS_READ_REG(ADIS16400_GLOB_CMD);
+ tx[1] = 0;
+
+ adis->xfer[0].tx_buf = tx;
+ adis->xfer[0].bits_per_word = 8;
+ adis->xfer[0].len = 2;
+- adis->xfer[1].tx_buf = tx;
++ adis->xfer[1].rx_buf = adis->buffer;
+ adis->xfer[1].bits_per_word = 8;
+- adis->xfer[1].len = indio_dev->scan_bytes;
++ adis->xfer[1].len = burst_length;
+
+ spi_message_init(&adis->msg);
+ spi_message_add_tail(&adis->xfer[0], &adis->msg);
--- /dev/null
+From d046ba268adb87c7780494ecf897cbafbf100d57 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Fri, 15 May 2015 17:18:38 +0200
+Subject: iio: adis16400: Fix burst transfer for adis16448
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit d046ba268adb87c7780494ecf897cbafbf100d57 upstream.
+
+The adis16448, unlike the other chips in this family, in addition to the
+hardware channels also sends out the DIAG_STAT register in burst mode
+before them. Handle that case by skipping over the first 2 bytes before we
+pass the received data to the buffer.
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Fixes: 76ada52f7f5d ("iio:adis16400: Add support for the adis16448")
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/imu/adis16400.h | 1 +
+ drivers/iio/imu/adis16400_buffer.c | 10 +++++++++-
+ drivers/iio/imu/adis16400_core.c | 3 ++-
+ 3 files changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/iio/imu/adis16400.h
++++ b/drivers/iio/imu/adis16400.h
+@@ -139,6 +139,7 @@
+ #define ADIS16400_NO_BURST BIT(1)
+ #define ADIS16400_HAS_SLOW_MODE BIT(2)
+ #define ADIS16400_HAS_SERIAL_NUMBER BIT(3)
++#define ADIS16400_BURST_DIAG_STAT BIT(4)
+
+ struct adis16400_state;
+
+--- a/drivers/iio/imu/adis16400_buffer.c
++++ b/drivers/iio/imu/adis16400_buffer.c
+@@ -29,6 +29,8 @@ int adis16400_update_scan_mode(struct ii
+
+ /* All but the timestamp channel */
+ burst_length = (indio_dev->num_channels - 1) * sizeof(u16);
++ if (st->variant->flags & ADIS16400_BURST_DIAG_STAT)
++ burst_length += sizeof(u16);
+
+ adis->xfer = kcalloc(2, sizeof(*adis->xfer), GFP_KERNEL);
+ if (!adis->xfer)
+@@ -63,6 +65,7 @@ irqreturn_t adis16400_trigger_handler(in
+ struct adis16400_state *st = iio_priv(indio_dev);
+ struct adis *adis = &st->adis;
+ u32 old_speed_hz = st->adis.spi->max_speed_hz;
++ void *buffer;
+ int ret;
+
+ if (!adis->buffer)
+@@ -83,7 +86,12 @@ irqreturn_t adis16400_trigger_handler(in
+ spi_setup(st->adis.spi);
+ }
+
+- iio_push_to_buffers_with_timestamp(indio_dev, adis->buffer,
++ if (st->variant->flags & ADIS16400_BURST_DIAG_STAT)
++ buffer = adis->buffer + sizeof(u16);
++ else
++ buffer = adis->buffer;
++
++ iio_push_to_buffers_with_timestamp(indio_dev, buffer,
+ pf->timestamp);
+
+ iio_trigger_notify_done(indio_dev->trig);
+--- a/drivers/iio/imu/adis16400_core.c
++++ b/drivers/iio/imu/adis16400_core.c
+@@ -778,7 +778,8 @@ static struct adis16400_chip_info adis16
+ .channels = adis16448_channels,
+ .num_channels = ARRAY_SIZE(adis16448_channels),
+ .flags = ADIS16400_HAS_PROD_ID |
+- ADIS16400_HAS_SERIAL_NUMBER,
++ ADIS16400_HAS_SERIAL_NUMBER |
++ ADIS16400_BURST_DIAG_STAT,
+ .gyro_scale_micro = IIO_DEGREE_TO_RAD(10000), /* 0.01 deg/s */
+ .accel_scale_micro = IIO_G_TO_M_S_2(833), /* 1/1200 g */
+ .temp_scale_nano = 73860000, /* 0.07386 C */
--- /dev/null
+From 69ca2d771e4e709c5ae1125858e1246e77ef8b86 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Fri, 15 May 2015 17:18:34 +0200
+Subject: iio: adis16400: Report pressure channel scale
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 69ca2d771e4e709c5ae1125858e1246e77ef8b86 upstream.
+
+Add the scale for the pressure channel, which is currently missing.
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Fixes: 76ada52f7f5d ("iio:adis16400: Add support for the adis16448")
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/imu/adis16400_core.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/iio/imu/adis16400_core.c
++++ b/drivers/iio/imu/adis16400_core.c
+@@ -405,6 +405,11 @@ static int adis16400_read_raw(struct iio
+ *val = st->variant->temp_scale_nano / 1000000;
+ *val2 = (st->variant->temp_scale_nano % 1000000);
+ return IIO_VAL_INT_PLUS_MICRO;
++ case IIO_PRESSURE:
++ /* 20 uBar = 0.002kPascal */
++ *val = 0;
++ *val2 = 2000;
++ return IIO_VAL_INT_PLUS_MICRO;
+ default:
+ return -EINVAL;
+ }
--- /dev/null
+From 7323d59862802ca109451eeda9777024a7625509 Mon Sep 17 00:00:00 2001
+From: Paul Cercueil <paul.cercueil@analog.com>
+Date: Fri, 15 May 2015 17:18:35 +0200
+Subject: iio: adis16400: Use != channel indices for the two voltage channels
+
+From: Paul Cercueil <paul.cercueil@analog.com>
+
+commit 7323d59862802ca109451eeda9777024a7625509 upstream.
+
+Previously, the two voltage channels had the same ID, which didn't cause
+conflicts in sysfs only because one channel is named and the other isn't;
+this is still violating the spec though, two indexed channels should never
+have the same index.
+
+Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/imu/adis16400_core.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/iio/imu/adis16400_core.c
++++ b/drivers/iio/imu/adis16400_core.c
+@@ -459,10 +459,10 @@ static int adis16400_read_raw(struct iio
+ }
+ }
+
+-#define ADIS16400_VOLTAGE_CHAN(addr, bits, name, si) { \
++#define ADIS16400_VOLTAGE_CHAN(addr, bits, name, si, chn) { \
+ .type = IIO_VOLTAGE, \
+ .indexed = 1, \
+- .channel = 0, \
++ .channel = chn, \
+ .extend_name = name, \
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
+ BIT(IIO_CHAN_INFO_SCALE), \
+@@ -479,10 +479,10 @@ static int adis16400_read_raw(struct iio
+ }
+
+ #define ADIS16400_SUPPLY_CHAN(addr, bits) \
+- ADIS16400_VOLTAGE_CHAN(addr, bits, "supply", ADIS16400_SCAN_SUPPLY)
++ ADIS16400_VOLTAGE_CHAN(addr, bits, "supply", ADIS16400_SCAN_SUPPLY, 0)
+
+ #define ADIS16400_AUX_ADC_CHAN(addr, bits) \
+- ADIS16400_VOLTAGE_CHAN(addr, bits, NULL, ADIS16400_SCAN_ADC)
++ ADIS16400_VOLTAGE_CHAN(addr, bits, NULL, ADIS16400_SCAN_ADC, 1)
+
+ #define ADIS16400_GYRO_CHAN(mod, addr, bits) { \
+ .type = IIO_ANGL_VEL, \
--- /dev/null
+From 18436afdc11a00ac881990b454cfb2eae81d6003 Mon Sep 17 00:00:00 2001
+From: David Woodhouse <David.Woodhouse@intel.com>
+Date: Wed, 25 Mar 2015 15:05:47 +0000
+Subject: iommu/vt-d: Allow RMRR on graphics devices too
+
+From: David Woodhouse <David.Woodhouse@intel.com>
+
+commit 18436afdc11a00ac881990b454cfb2eae81d6003 upstream.
+
+Commit c875d2c1 ("iommu/vt-d: Exclude devices using RMRRs from IOMMU API
+domains") prevents certain options for devices with RMRRs. This even
+prevents those devices from getting a 1:1 mapping with 'iommu=pt',
+because we don't have the code to handle *preserving* the RMRR regions
+when moving the device between domains.
+
+There's already an exclusion for USB devices, because we know the only
+reason for RMRRs there is a misguided desire to keep legacy
+keyboard/mouse emulation running in some theoretical OS which doesn't
+have support for USB in its own right... but which *does* enable the
+IOMMU.
+
+Add an exclusion for graphics devices too, so that 'iommu=pt' works
+there. We should be able to successfully assign graphics devices to
+guests too, as long as the initial handling of stolen memory is
+reconfigured appropriately. This has certainly worked in the past.
+
+Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/intel-iommu.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/iommu/intel-iommu.c
++++ b/drivers/iommu/intel-iommu.c
+@@ -50,6 +50,7 @@
+ #define CONTEXT_SIZE VTD_PAGE_SIZE
+
+ #define IS_GFX_DEVICE(pdev) ((pdev->class >> 16) == PCI_BASE_CLASS_DISPLAY)
++#define IS_USB_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_SERIAL_USB)
+ #define IS_ISA_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_BRIDGE_ISA)
+ #define IS_AZALIA(pdev) ((pdev)->vendor == 0x8086 && (pdev)->device == 0x3a3e)
+
+@@ -2554,6 +2555,10 @@ static bool device_has_rmrr(struct devic
+ * In both cases we assume that PCI USB devices with RMRRs have them largely
+ * for historical reasons and that the RMRR space is not actively used post
+ * boot. This exclusion may change if vendors begin to abuse it.
++ *
++ * The same exception is made for graphics devices, with the requirement that
++ * any use of the RMRR regions will be torn down before assigning the device
++ * to a guest.
+ */
+ static bool device_is_rmrr_locked(struct device *dev)
+ {
+@@ -2563,7 +2568,7 @@ static bool device_is_rmrr_locked(struct
+ if (dev_is_pci(dev)) {
+ struct pci_dev *pdev = to_pci_dev(dev);
+
+- if ((pdev->class >> 8) == PCI_CLASS_SERIAL_USB)
++ if (IS_USB_DEVICE(pdev) || IS_GFX_DEVICE(pdev))
+ return false;
+ }
+
--- /dev/null
+From 4ed6a540fab8ea4388c1703b73ecfed68a2009d1 Mon Sep 17 00:00:00 2001
+From: David Woodhouse <David.Woodhouse@intel.com>
+Date: Mon, 11 May 2015 14:59:20 +0100
+Subject: iommu/vt-d: Fix passthrough mode with translation-disabled devices
+
+From: David Woodhouse <David.Woodhouse@intel.com>
+
+commit 4ed6a540fab8ea4388c1703b73ecfed68a2009d1 upstream.
+
+When we use 'intel_iommu=igfx_off' to disable translation for the
+graphics, and when we discover that the BIOS has misconfigured the DMAR
+setup for I/OAT, we use a special DUMMY_DEVICE_DOMAIN_INFO value in
+dev->archdata.iommu to indicate that translation is disabled.
+
+With passthrough mode, we were attempting to dereference that as a
+normal pointer to a struct device_domain_info when setting up an
+identity mapping for the affected device.
+
+This fixes the problem by making device_to_iommu() explicitly check for
+the special value and indicate that no IOMMU was found to handle the
+devices in question.
+
+Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/intel-iommu.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/drivers/iommu/intel-iommu.c
++++ b/drivers/iommu/intel-iommu.c
+@@ -673,6 +673,11 @@ static void domain_update_iommu_cap(stru
+ domain->iommu_superpage = domain_update_iommu_superpage(NULL);
+ }
+
++static int iommu_dummy(struct device *dev)
++{
++ return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO;
++}
++
+ static struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn)
+ {
+ struct dmar_drhd_unit *drhd = NULL;
+@@ -682,6 +687,9 @@ static struct intel_iommu *device_to_iom
+ u16 segment = 0;
+ int i;
+
++ if (iommu_dummy(dev))
++ return NULL;
++
+ if (dev_is_pci(dev)) {
+ pdev = to_pci_dev(dev);
+ segment = pci_domain_nr(pdev->bus);
+@@ -2974,11 +2982,6 @@ static inline struct dmar_domain *get_va
+ return __get_valid_domain_for_dev(dev);
+ }
+
+-static int iommu_dummy(struct device *dev)
+-{
+- return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO;
+-}
+-
+ /* Check if the dev needs to go through non-identity map and unmap process.*/
+ static int iommu_no_mapping(struct device *dev)
+ {
--- /dev/null
+From 72586c6061ab8c23ffd9f301ed19782a44ff5f04 Mon Sep 17 00:00:00 2001
+From: Laura Abbott <labbott@fedoraproject.org>
+Date: Thu, 14 May 2015 11:42:17 -0700
+Subject: n_tty: Fix auditing support for cannonical mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Laura Abbott <labbott@fedoraproject.org>
+
+commit 72586c6061ab8c23ffd9f301ed19782a44ff5f04 upstream.
+
+Commit 32f13521ca68bc624ff6effc77f308a52b038bf0
+("n_tty: Line copy to user buffer in canonical mode")
+changed cannonical mode copying to use copy_to_user
+but missed adding the call to the audit framework.
+Add in the appropriate functions to get audit support.
+
+Fixes: 32f13521ca68 ("n_tty: Line copy to user buffer in canonical mode")
+Reported-by: Miloslav Trmač <mitr@redhat.com>
+Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
+Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/n_tty.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+--- a/drivers/tty/n_tty.c
++++ b/drivers/tty/n_tty.c
+@@ -162,6 +162,17 @@ static inline int tty_put_user(struct tt
+ return put_user(x, ptr);
+ }
+
++static inline int tty_copy_to_user(struct tty_struct *tty,
++ void __user *to,
++ const void *from,
++ unsigned long n)
++{
++ struct n_tty_data *ldata = tty->disc_data;
++
++ tty_audit_add_data(tty, to, n, ldata->icanon);
++ return copy_to_user(to, from, n);
++}
++
+ /**
+ * n_tty_kick_worker - start input worker (if required)
+ * @tty: terminal
+@@ -2084,12 +2095,12 @@ static int canon_copy_from_read_buf(stru
+ __func__, eol, found, n, c, size, more);
+
+ if (n > size) {
+- ret = copy_to_user(*b, read_buf_addr(ldata, tail), size);
++ ret = tty_copy_to_user(tty, *b, read_buf_addr(ldata, tail), size);
+ if (ret)
+ return -EFAULT;
+- ret = copy_to_user(*b + size, ldata->read_buf, n - size);
++ ret = tty_copy_to_user(tty, *b + size, ldata->read_buf, n - size);
+ } else
+- ret = copy_to_user(*b, read_buf_addr(ldata, tail), n);
++ ret = tty_copy_to_user(tty, *b, read_buf_addr(ldata, tail), n);
+
+ if (ret)
+ return -EFAULT;
be2net-replace-dma-pci_alloc_coherent-calls-with-dma_zalloc_coherent.patch
bridge-disable-softirqs-around-br_fdb_update-to-avoid-lockup.patch
netlink-disable-insertions-removals-during-rehash.patch
+iio-adc-twl6030-gpadc-fix-modalias.patch
+iio-adis16400-report-pressure-channel-scale.patch
+iio-adis16400-use-channel-indices-for-the-two-voltage-channels.patch
+iio-adis16400-compute-the-scan-mask-from-channel-indices.patch
+iio-adis16400-fix-burst-mode.patch
+iio-adis16400-fix-burst-transfer-for-adis16448.patch
+drivers-base-cacheinfo-handle-absence-of-caches.patch
+n_tty-fix-auditing-support-for-cannonical-mode.patch
+iommu-vt-d-allow-rmrr-on-graphics-devices-too.patch
+iommu-vt-d-fix-passthrough-mode-with-translation-disabled-devices.patch
+alsa-hda-realtek-add-a-fixup-for-another-acer-aspire-9420.patch
+alsa-usb-audio-add-mic-volume-fix-quirk-for-logitech-quickcam-fusion.patch
+alsa-usb-audio-don-t-try-to-get-outlaw-rr2150-sample-rate.patch
+alsa-usb-audio-add-maya44-usb-mixer-control-names.patch
+alsa-usb-audio-fix-missing-input-volume-controls-in-maya44-usb.patch
+alsa-usb-audio-add-native-dsd-support-for-jlsounds-i2soverusb.patch