--- /dev/null
+From 2ef5692efad330b67a234e2c49edad38538751e7 Mon Sep 17 00:00:00 2001
+From: Mengdong Lin <mengdong.lin@intel.com>
+Date: Thu, 28 Mar 2013 05:20:22 -0400
+Subject: ALSA: hda - bug fix on return value when getting HDMI ELD info
+
+From: Mengdong Lin <mengdong.lin@intel.com>
+
+commit 2ef5692efad330b67a234e2c49edad38538751e7 upstream.
+
+In function snd_hdmi_get_eld(), the variable 'ret' should be initialized to 0.
+Otherwise it will be returned uninitialized as non-zero after ELD info is got
+successfully. Thus hdmi_present_sense() will always assume ELD info is invalid
+by mistake, and /proc file system cannot show the proper ELD info.
+
+Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
+Acked-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/hda_eld.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_eld.c
++++ b/sound/pci/hda/hda_eld.c
+@@ -322,7 +322,7 @@ int snd_hdmi_get_eld(struct hdmi_eld *el
+ struct hda_codec *codec, hda_nid_t nid)
+ {
+ int i;
+- int ret;
++ int ret = 0;
+ int size;
+ unsigned char *buf;
+
--- /dev/null
+From 1d87caa69c04008e09f5ff47b5e6acb6116febc7 Mon Sep 17 00:00:00 2001
+From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+Date: Thu, 4 Apr 2013 08:40:38 +0200
+Subject: ALSA: hda - Enabling Realtek ALC 671 codec
+
+From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+
+commit 1d87caa69c04008e09f5ff47b5e6acb6116febc7 upstream.
+
+* Added the device ID to the modalias list and assinged ALC662 patches
+for it
+* Added 4 port support for the device ID 0671 in alc662_parse_auto_config
+
+Signed-off-by: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -6629,7 +6629,8 @@ static int alc662_parse_auto_config(stru
+ const hda_nid_t *ssids;
+
+ if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 ||
+- codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670)
++ codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 ||
++ codec->vendor_id == 0x10ec0671)
+ ssids = alc663_ssids;
+ else
+ ssids = alc662_ssids;
+@@ -7056,6 +7057,7 @@ static const struct hda_codec_preset snd
+ { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
+ { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
+ { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
++ { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
+ { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
+ { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
+ { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
--- /dev/null
+From aeb3a97222832e5457c4b72d72235098ce4bfe8d Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Thu, 4 Apr 2013 11:47:13 +0200
+Subject: ALSA: hda - fix typo in proc output
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit aeb3a97222832e5457c4b72d72235098ce4bfe8d upstream.
+
+Rename "Digitial In" to "Digital In". This function is only used for
+proc output, so should not cause any problems to change.
+
+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/hda_codec.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -165,7 +165,7 @@ const char *snd_hda_get_jack_type(u32 cf
+ "Line Out", "Speaker", "HP Out", "CD",
+ "SPDIF Out", "Digital Out", "Modem Line", "Modem Hand",
+ "Line In", "Aux", "Mic", "Telephony",
+- "SPDIF In", "Digitial In", "Reserved", "Other"
++ "SPDIF In", "Digital In", "Reserved", "Other"
+ };
+
+ return jack_types[(cfg & AC_DEFCFG_DEVICE)
--- /dev/null
+From 8abac3ba51b5525354e9b2ec0eed1c9e95c905d9 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Wed, 13 Mar 2013 16:38:33 +0100
+Subject: regmap: cache Fix regcache-rbtree sync
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 8abac3ba51b5525354e9b2ec0eed1c9e95c905d9 upstream.
+
+The last register block, which falls into the specified range, is not handled
+correctly. The formula which calculates the number of register which should be
+synced is inverse (and off by one). E.g. if all registers in that block should
+be synced only one is synced, and if only one should be synced all (but one) are
+synced. To calculate the number of registers that need to be synced we need to
+subtract the number of the first register in the block from the max register
+number and add one. This patch updates the code accordingly.
+
+The issue was introduced in commit ac8d91c ("regmap: Supply ranges to the sync
+operations").
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/regmap/regcache-rbtree.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/regmap/regcache-rbtree.c
++++ b/drivers/base/regmap/regcache-rbtree.c
+@@ -392,7 +392,7 @@ static int regcache_rbtree_sync(struct r
+ base = 0;
+
+ if (max < rbnode->base_reg + rbnode->blklen)
+- end = rbnode->base_reg + rbnode->blklen - max;
++ end = max - rbnode->base_reg + 1;
+ else
+ end = rbnode->blklen;
+
--- /dev/null
+From 35e5cbc0af240778e61113286c019837e06aeec6 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Fri, 29 Mar 2013 15:39:16 +0100
+Subject: reiserfs: Fix warning and inode leak when deleting inode with xattrs
+
+From: Jan Kara <jack@suse.cz>
+
+commit 35e5cbc0af240778e61113286c019837e06aeec6 upstream.
+
+After commit 21d8a15a (lookup_one_len: don't accept . and ..) reiserfs
+started failing to delete xattrs from inode. This was due to a buggy
+test for '.' and '..' in fill_with_dentries() which resulted in passing
+'.' and '..' entries to lookup_one_len() in some cases. That returned
+error and so we failed to iterate over all xattrs of and inode.
+
+Fix the test in fill_with_dentries() along the lines of the one in
+lookup_one_len().
+
+Reported-by: Pawel Zawora <pzawora@gmail.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/reiserfs/xattr.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/reiserfs/xattr.c
++++ b/fs/reiserfs/xattr.c
+@@ -187,8 +187,8 @@ fill_with_dentries(void *buf, const char
+ if (dbuf->count == ARRAY_SIZE(dbuf->dentries))
+ return -ENOSPC;
+
+- if (name[0] == '.' && (name[1] == '\0' ||
+- (name[1] == '.' && name[2] == '\0')))
++ if (name[0] == '.' && (namelen < 2 ||
++ (namelen == 2 && name[1] == '.')))
+ return 0;
+
+ dentry = lookup_one_len(name, dbuf->xadir, namelen);
asoc-dma-sh7760-fix-compile-error.patch
+regmap-cache-fix-regcache-rbtree-sync.patch
+spi-s3c64xx-modified-error-interrupt-handling-and-init.patch
+spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch
+ubifs-make-space-fixup-work-in-the-remount-case.patch
+reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch
+alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch
+alsa-hda-enabling-realtek-alc-671-codec.patch
+alsa-hda-fix-typo-in-proc-output.patch
--- /dev/null
+From 1ad849aee5f53353ed88d9cd3d68a51b03a7d44f Mon Sep 17 00:00:00 2001
+From: Anatolij Gustschin <agust@denx.de>
+Date: Wed, 13 Mar 2013 14:57:43 +0100
+Subject: spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts
+
+From: Anatolij Gustschin <agust@denx.de>
+
+commit 1ad849aee5f53353ed88d9cd3d68a51b03a7d44f upstream.
+
+Some SPI slave devices require asserted chip select signal across
+multiple transfer segments of an SPI message. Currently the driver
+always de-asserts the internal SS signal for every single transfer
+segment of the message and ignores the 'cs_change' flag of the
+transfer description. Disable the internal chip select (SS) only
+if this is needed and indicated by the 'cs_change' flag.
+
+Without this change, each partial transfer of a surrounding
+multi-part SPI transaction might erroneously change the SS
+signal, which might prevent slaves from answering the request
+that was sent in a previous transfer segment because the
+transaction could be considered aborted (SS was de-asserted
+before reading the response).
+
+Reported-by: Gerhard Sittig <gerhard.sittig@ifm.com>
+Signed-off-by: Anatolij Gustschin <agust@denx.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-mpc512x-psc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/spi/spi-mpc512x-psc.c
++++ b/drivers/spi/spi-mpc512x-psc.c
+@@ -164,7 +164,7 @@ static int mpc512x_psc_spi_transfer_rxtx
+
+ for (i = count; i > 0; i--) {
+ data = tx_buf ? *tx_buf++ : 0;
+- if (len == EOFBYTE)
++ if (len == EOFBYTE && t->cs_change)
+ setbits32(&fifo->txcmd, MPC512x_PSC_FIFO_EOF);
+ out_8(&fifo->txdata_8, data);
+ len--;
--- /dev/null
+From 375981f2e14868be16cafbffd34a4f16a6ee01c6 Mon Sep 17 00:00:00 2001
+From: Girish K S <girishks2000@gmail.com>
+Date: Wed, 13 Mar 2013 12:13:30 +0530
+Subject: spi/s3c64xx: modified error interrupt handling and init
+
+From: Girish K S <girishks2000@gmail.com>
+
+commit 375981f2e14868be16cafbffd34a4f16a6ee01c6 upstream.
+
+The status of the interrupt is available in the status register,
+so reading the clear pending register and writing back the same
+value will not actually clear the pending interrupts. This patch
+modifies the interrupt handler to read the status register and
+clear the corresponding pending bit in the clear pending register.
+
+Modified the hwInit function to clear all the pending interrupts.
+
+Signed-off-by: Girish K S <ks.giri@samsung.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-s3c64xx.c | 41 +++++++++++++++++++++++++----------------
+ 1 file changed, 25 insertions(+), 16 deletions(-)
+
+--- a/drivers/spi/spi-s3c64xx.c
++++ b/drivers/spi/spi-s3c64xx.c
+@@ -889,25 +889,30 @@ static irqreturn_t s3c64xx_spi_irq(int i
+ {
+ struct s3c64xx_spi_driver_data *sdd = data;
+ struct spi_master *spi = sdd->master;
+- unsigned int val;
+-
+- val = readl(sdd->regs + S3C64XX_SPI_PENDING_CLR);
+-
+- val &= S3C64XX_SPI_PND_RX_OVERRUN_CLR |
+- S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
+- S3C64XX_SPI_PND_TX_OVERRUN_CLR |
+- S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
++ unsigned int val, clr = 0;
+
+- writel(val, sdd->regs + S3C64XX_SPI_PENDING_CLR);
++ val = readl(sdd->regs + S3C64XX_SPI_STATUS);
+
+- if (val & S3C64XX_SPI_PND_RX_OVERRUN_CLR)
++ if (val & S3C64XX_SPI_ST_RX_OVERRUN_ERR) {
++ clr = S3C64XX_SPI_PND_RX_OVERRUN_CLR;
+ dev_err(&spi->dev, "RX overrun\n");
+- if (val & S3C64XX_SPI_PND_RX_UNDERRUN_CLR)
++ }
++ if (val & S3C64XX_SPI_ST_RX_UNDERRUN_ERR) {
++ clr |= S3C64XX_SPI_PND_RX_UNDERRUN_CLR;
+ dev_err(&spi->dev, "RX underrun\n");
+- if (val & S3C64XX_SPI_PND_TX_OVERRUN_CLR)
++ }
++ if (val & S3C64XX_SPI_ST_TX_OVERRUN_ERR) {
++ clr |= S3C64XX_SPI_PND_TX_OVERRUN_CLR;
+ dev_err(&spi->dev, "TX overrun\n");
+- if (val & S3C64XX_SPI_PND_TX_UNDERRUN_CLR)
++ }
++ if (val & S3C64XX_SPI_ST_TX_UNDERRUN_ERR) {
++ clr |= S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
+ dev_err(&spi->dev, "TX underrun\n");
++ }
++
++ /* Clear the pending irq by setting and then clearing it */
++ writel(clr, sdd->regs + S3C64XX_SPI_PENDING_CLR);
++ writel(0, sdd->regs + S3C64XX_SPI_PENDING_CLR);
+
+ return IRQ_HANDLED;
+ }
+@@ -931,9 +936,13 @@ static void s3c64xx_spi_hwinit(struct s3
+ writel(0, regs + S3C64XX_SPI_MODE_CFG);
+ writel(0, regs + S3C64XX_SPI_PACKET_CNT);
+
+- /* Clear any irq pending bits */
+- writel(readl(regs + S3C64XX_SPI_PENDING_CLR),
+- regs + S3C64XX_SPI_PENDING_CLR);
++ /* Clear any irq pending bits, should set and clear the bits */
++ val = S3C64XX_SPI_PND_RX_OVERRUN_CLR |
++ S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
++ S3C64XX_SPI_PND_TX_OVERRUN_CLR |
++ S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
++ writel(val, regs + S3C64XX_SPI_PENDING_CLR);
++ writel(0, regs + S3C64XX_SPI_PENDING_CLR);
+
+ writel(0, regs + S3C64XX_SPI_SWAP_CFG);
+
--- /dev/null
+From 67e753ca41782913d805ff4a8a2b0f60b26b7915 Mon Sep 17 00:00:00 2001
+From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Date: Thu, 14 Mar 2013 10:49:23 +0200
+Subject: UBIFS: make space fixup work in the remount case
+
+From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+
+commit 67e753ca41782913d805ff4a8a2b0f60b26b7915 upstream.
+
+The UBIFS space fixup is a useful feature which allows to fixup the "broken"
+flash space at the time of the first mount. The "broken" space is usually the
+result of using a "dumb" industrial flasher which is not able to skip empty
+NAND pages and just writes all 0xFFs to the empty space, which has grave
+side-effects for UBIFS when UBIFS trise to write useful data to those empty
+pages.
+
+The fix-up feature works roughly like this:
+1. mkfs.ubifs sets the fixup flag in UBIFS superblock when creating the image
+ (see -F option)
+2. when the file-system is mounted for the first time, UBIFS notices the fixup
+ flag and re-writes the entire media atomically, which may take really a lot
+ of time.
+3. UBIFS clears the fixup flag in the superblock.
+
+This works fine when the file system is mounted R/W for the very first time.
+But it did not really work in the case when we first mount the file-system R/O,
+and then re-mount R/W. The reason was that we started the fixup procedure too
+late, which we cannot really do because we have to fixup the space before it
+starts being used.
+
+Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Reported-by: Mark Jackson <mpfj-list@mimc.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ubifs/super.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/fs/ubifs/super.c
++++ b/fs/ubifs/super.c
+@@ -1582,6 +1582,12 @@ static int ubifs_remount_rw(struct ubifs
+ c->remounting_rw = 1;
+ c->ro_mount = 0;
+
++ if (c->space_fixup) {
++ err = ubifs_fixup_free_space(c);
++ if (err)
++ return err;
++ }
++
+ err = check_free_space(c);
+ if (err)
+ goto out;
+@@ -1698,12 +1704,6 @@ static int ubifs_remount_rw(struct ubifs
+ err = dbg_check_space_info(c);
+ }
+
+- if (c->space_fixup) {
+- err = ubifs_fixup_free_space(c);
+- if (err)
+- goto out;
+- }
+-
+ mutex_unlock(&c->umount_mutex);
+ return err;
+