--- /dev/null
+From a29878553a9a7b4c06f93c7e383527cf014d4ceb Mon Sep 17 00:00:00 2001
+From: Tim Blechmann <tim@klingt.org>
+Date: Tue, 22 Nov 2011 11:15:45 +0100
+Subject: ALSA: lx6464es - fix device communication via command bus
+
+From: Tim Blechmann <tim@klingt.org>
+
+commit a29878553a9a7b4c06f93c7e383527cf014d4ceb upstream.
+
+commit 6175ddf06b6172046a329e3abfd9c901a43efd2e optimized the mem*io
+functions that have been used to send commands to the device. these
+optimizations somehow corrupted the communication with the lx6464es,
+that resulted the device to be unusable with kernels after 2.6.33.
+
+this patch emulates the memcpy_*_io functions via a loop to avoid these
+problems.
+
+Signed-off-by: Tim Blechmann <tim@klingt.org>
+LKML-Reference: <4ECB5257.4040600@ladisch.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/lx6464es/lx_core.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- a/sound/pci/lx6464es/lx_core.c
++++ b/sound/pci/lx6464es/lx_core.c
+@@ -80,8 +80,12 @@ unsigned long lx_dsp_reg_read(struct lx6
+
+ void lx_dsp_reg_readbuf(struct lx6464es *chip, int port, u32 *data, u32 len)
+ {
+- void __iomem *address = lx_dsp_register(chip, port);
+- memcpy_fromio(data, address, len*sizeof(u32));
++ u32 __iomem *address = lx_dsp_register(chip, port);
++ int i;
++
++ /* we cannot use memcpy_fromio */
++ for (i = 0; i != len; ++i)
++ data[i] = ioread32(address + i);
+ }
+
+
+@@ -94,8 +98,12 @@ void lx_dsp_reg_write(struct lx6464es *c
+ void lx_dsp_reg_writebuf(struct lx6464es *chip, int port, const u32 *data,
+ u32 len)
+ {
+- void __iomem *address = lx_dsp_register(chip, port);
+- memcpy_toio(address, data, len*sizeof(u32));
++ u32 __iomem *address = lx_dsp_register(chip, port);
++ int i;
++
++ /* we cannot use memcpy_to */
++ for (i = 0; i != len; ++i)
++ iowrite32(data[i], address + i);
+ }
+
+
--- /dev/null
+From 11ed0ba1754841316d4095478944300acf19acc3 Mon Sep 17 00:00:00 2001
+From: Will Deacon <will.deacon@arm.com>
+Date: Mon, 14 Nov 2011 17:24:58 +0100
+Subject: ARM: 7161/1: errata: no automatic store buffer drain
+
+From: Will Deacon <will.deacon@arm.com>
+
+commit 11ed0ba1754841316d4095478944300acf19acc3 upstream.
+
+This patch implements a workaround for PL310 erratum 769419. On
+revisions of the PL310 prior to r3p2, the Store Buffer does not
+automatically drain. This can cause normal, non-cacheable writes to be
+retained when the memory system is idle, leading to suboptimal I/O
+performance for drivers using coherent DMA.
+
+This patch adds an optional wmb() call to the cpu_idle loop. On systems
+with an outer cache, this causes an explicit flush of the store buffer.
+
+Acked-by: Catalin Marinas <catalin.marinas@arm.com>
+Tested-by: Marc Zyngier <marc.zyngier@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/Kconfig | 12 ++++++++++++
+ arch/arm/kernel/process.c | 3 +++
+ 2 files changed, 15 insertions(+)
+
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1312,6 +1312,18 @@ config ARM_ERRATA_764369
+ relevant cache maintenance functions and sets a specific bit
+ in the diagnostic control register of the SCU.
+
++config PL310_ERRATA_769419
++ bool "PL310 errata: no automatic Store Buffer drain"
++ depends on CACHE_L2X0
++ help
++ On revisions of the PL310 prior to r3p2, the Store Buffer does
++ not automatically drain. This can cause normal, non-cacheable
++ writes to be retained when the memory system is idle, leading
++ to suboptimal I/O performance for drivers using coherent DMA.
++ This option adds a write barrier to the cpu_idle loop so that,
++ on systems with an outer cache, the store buffer is drained
++ explicitly.
++
+ endmenu
+
+ menu "Kernel Features"
+--- a/arch/arm/kernel/process.c
++++ b/arch/arm/kernel/process.c
+@@ -191,6 +191,9 @@ void cpu_idle(void)
+ #endif
+
+ local_irq_disable();
++#ifdef CONFIG_PL310_ERRATA_769419
++ wmb();
++#endif
+ if (hlt_counter) {
+ local_irq_enable();
+ cpu_relax();
--- /dev/null
+From c2735391fbc68feae10d6d14e60956c8106e725f Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <w.sang@pengutronix.de>
+Date: Sat, 10 Sep 2011 12:26:07 +0200
+Subject: arm: mx28: fix bit operation in clock setting
+
+From: Wolfram Sang <w.sang@pengutronix.de>
+
+commit c2735391fbc68feae10d6d14e60956c8106e725f upstream.
+
+reg | (1 << clk->enable_shift) always evaluates to true. Switch it
+to & which makes much more sense. Same fix as 13be9f00 (ARM i.MX28: fix
+bit operation) at a different location.
+
+Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
+Cc: Sascha Hauer <s.hauer@pengutronix.de>
+Cc: Shawn Guo <shawn.guo@freescale.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/mach-mxs/clock-mx28.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm/mach-mxs/clock-mx28.c
++++ b/arch/arm/mach-mxs/clock-mx28.c
+@@ -404,7 +404,7 @@ static int name##_set_rate(struct clk *c
+ reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_##dr); \
+ reg &= ~BM_CLKCTRL_##dr##_DIV; \
+ reg |= div << BP_CLKCTRL_##dr##_DIV; \
+- if (reg | (1 << clk->enable_shift)) { \
++ if (reg & (1 << clk->enable_shift)) { \
+ pr_err("%s: clock is gated\n", __func__); \
+ return -EINVAL; \
+ } \
--- /dev/null
+From 5a4f1844c2ba21f804d7729306d9b16eaeb724a8 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Wed, 23 Nov 2011 14:43:37 -0800
+Subject: ARM: OMAP: smartreflex: fix IRQ handling bug
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 5a4f1844c2ba21f804d7729306d9b16eaeb724a8 upstream.
+
+Fix a bug which has been on this driver since
+it was added by the original commit 984aa6db
+which would never clear IRQSTATUS bits.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Kevin Hilman <khilman@ti.com>
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/mach-omap2/smartreflex.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm/mach-omap2/smartreflex.c
++++ b/arch/arm/mach-omap2/smartreflex.c
+@@ -137,7 +137,7 @@ static irqreturn_t sr_interrupt(int irq,
+ sr_write_reg(sr_info, ERRCONFIG_V1, status);
+ } else if (sr_info->ip_type == SR_TYPE_V2) {
+ /* Read the status bits */
+- sr_read_reg(sr_info, IRQSTATUS);
++ status = sr_read_reg(sr_info, IRQSTATUS);
+
+ /* Clear them by writing back */
+ sr_write_reg(sr_info, IRQSTATUS, status);
--- /dev/null
+From a8a6565c7615cab3608d75af95b5c8a3522cd7c4 Mon Sep 17 00:00:00 2001
+From: Ming Lei <tom.leiming@gmail.com>
+Date: Wed, 23 Nov 2011 14:44:50 -0800
+Subject: ARM: OMAP2: select ARM_AMBA if OMAP3_EMU is defined
+
+From: Ming Lei <tom.leiming@gmail.com>
+
+commit a8a6565c7615cab3608d75af95b5c8a3522cd7c4 upstream.
+
+This patch selects ARM_AMBA if OMAP3_EMU is defined because
+OC_ETM depends on ARM_AMBA, so fix the link failure[1].
+
+[1],
+arch/arm/kernel/built-in.o: In function `etm_remove':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:609: undefined
+reference to `amba_release_regions'
+arch/arm/kernel/built-in.o: In function `etb_remove':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:409: undefined
+reference to `amba_release_regions'
+arch/arm/kernel/built-in.o: In function `etm_init':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:640: undefined
+reference to `amba_driver_register'
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:646: undefined
+reference to `amba_driver_register'
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:648: undefined
+reference to `amba_driver_unregister'
+arch/arm/kernel/built-in.o: In function `etm_probe':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:545: undefined
+reference to `amba_request_regions'
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:595: undefined
+reference to `amba_release_regions'
+arch/arm/kernel/built-in.o: In function `etb_probe':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:347: undefined
+reference to `amba_request_regions'
+/home/tom/git/omap/linux-2.6-omap/arch/arm/kernel/etm.c:392: undefined
+reference to `amba_release_regions'
+arch/arm/mach-omap2/built-in.o: In function `emu_init':
+/home/tom/git/omap/linux-2.6-omap/arch/arm/mach-omap2/emu.c:62:
+undefined reference to `amba_device_register'
+/home/tom/git/omap/linux-2.6-omap/arch/arm/mach-omap2/emu.c:63:
+undefined reference to `amba_device_register'
+make: *** [.tmp_vmlinux1] Error 1
+making modules
+
+Signed-off-by: Ming Lei <tom.leiming@gmail.com>
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/mach-omap2/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm/mach-omap2/Kconfig
++++ b/arch/arm/mach-omap2/Kconfig
+@@ -326,6 +326,7 @@ config MACH_OMAP4_PANDA
+ config OMAP3_EMU
+ bool "OMAP3 debugging peripherals"
+ depends on ARCH_OMAP3
++ select ARM_AMBA
+ select OC_ETM
+ help
+ Say Y here to enable debugging hardware of omap3
--- /dev/null
+From c0a39151a4055332897cba615623d3de2f3896df Mon Sep 17 00:00:00 2001
+From: Haojian Zhuang <haojian.zhuang@marvell.com>
+Date: Thu, 10 Nov 2011 07:13:07 +0800
+Subject: ARM: pxa: fix inconsistent CONFIG_USB_PXA27X
+
+From: Haojian Zhuang <haojian.zhuang@marvell.com>
+
+commit c0a39151a4055332897cba615623d3de2f3896df upstream.
+
+Since CONFIG_USB_GADGET_PXA27X and other macros are renamed to
+CONFIG_USB_PXA27X. Update them in arch/arm/mach-pxa and arch/arm/configs
+to keep consistent.
+
+Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
+Acked-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/configs/ezx_defconfig | 2 +-
+ arch/arm/configs/imote2_defconfig | 2 +-
+ arch/arm/configs/magician_defconfig | 2 +-
+ arch/arm/configs/zeus_defconfig | 2 +-
+ arch/arm/mach-pxa/balloon3.c | 2 +-
+ arch/arm/mach-pxa/colibri-pxa320.c | 2 +-
+ arch/arm/mach-pxa/gumstix.c | 2 +-
+ arch/arm/mach-pxa/include/mach/palm27x.h | 4 ++--
+ arch/arm/mach-pxa/palm27x.c | 4 ++--
+ arch/arm/mach-pxa/palmtc.c | 2 +-
+ arch/arm/mach-pxa/vpac270.c | 2 +-
+ 11 files changed, 13 insertions(+), 13 deletions(-)
+
+--- a/arch/arm/configs/ezx_defconfig
++++ b/arch/arm/configs/ezx_defconfig
+@@ -287,7 +287,7 @@ CONFIG_USB=y
+ # CONFIG_USB_DEVICE_CLASS is not set
+ CONFIG_USB_OHCI_HCD=y
+ CONFIG_USB_GADGET=y
+-CONFIG_USB_GADGET_PXA27X=y
++CONFIG_USB_PXA27X=y
+ CONFIG_USB_ETH=m
+ # CONFIG_USB_ETH_RNDIS is not set
+ CONFIG_MMC=y
+--- a/arch/arm/configs/imote2_defconfig
++++ b/arch/arm/configs/imote2_defconfig
+@@ -263,7 +263,7 @@ CONFIG_USB=y
+ # CONFIG_USB_DEVICE_CLASS is not set
+ CONFIG_USB_OHCI_HCD=y
+ CONFIG_USB_GADGET=y
+-CONFIG_USB_GADGET_PXA27X=y
++CONFIG_USB_PXA27X=y
+ CONFIG_USB_ETH=m
+ # CONFIG_USB_ETH_RNDIS is not set
+ CONFIG_MMC=y
+--- a/arch/arm/configs/magician_defconfig
++++ b/arch/arm/configs/magician_defconfig
+@@ -132,7 +132,7 @@ CONFIG_USB_MON=m
+ CONFIG_USB_OHCI_HCD=y
+ CONFIG_USB_GADGET=y
+ CONFIG_USB_GADGET_VBUS_DRAW=500
+-CONFIG_USB_GADGET_PXA27X=y
++CONFIG_USB_PXA27X=y
+ CONFIG_USB_ETH=m
+ # CONFIG_USB_ETH_RNDIS is not set
+ CONFIG_USB_GADGETFS=m
+--- a/arch/arm/configs/zeus_defconfig
++++ b/arch/arm/configs/zeus_defconfig
+@@ -140,7 +140,7 @@ CONFIG_USB_SERIAL=m
+ CONFIG_USB_SERIAL_GENERIC=y
+ CONFIG_USB_SERIAL_MCT_U232=m
+ CONFIG_USB_GADGET=m
+-CONFIG_USB_GADGET_PXA27X=y
++CONFIG_USB_PXA27X=y
+ CONFIG_USB_ETH=m
+ CONFIG_USB_GADGETFS=m
+ CONFIG_USB_FILE_STORAGE=m
+--- a/arch/arm/mach-pxa/balloon3.c
++++ b/arch/arm/mach-pxa/balloon3.c
+@@ -307,7 +307,7 @@ static inline void balloon3_mmc_init(voi
+ /******************************************************************************
+ * USB Gadget
+ ******************************************************************************/
+-#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
++#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
+ static void balloon3_udc_command(int cmd)
+ {
+ if (cmd == PXA2XX_UDC_CMD_CONNECT)
+--- a/arch/arm/mach-pxa/colibri-pxa320.c
++++ b/arch/arm/mach-pxa/colibri-pxa320.c
+@@ -147,7 +147,7 @@ static void __init colibri_pxa320_init_e
+ static inline void __init colibri_pxa320_init_eth(void) {}
+ #endif /* CONFIG_AX88796 */
+
+-#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
++#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
+ static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = {
+ .gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96),
+ .gpio_pullup = -1,
+--- a/arch/arm/mach-pxa/gumstix.c
++++ b/arch/arm/mach-pxa/gumstix.c
+@@ -106,7 +106,7 @@ static void __init gumstix_mmc_init(void
+ }
+ #endif
+
+-#ifdef CONFIG_USB_GADGET_PXA25X
++#ifdef CONFIG_USB_PXA25X
+ static struct gpio_vbus_mach_info gumstix_udc_info = {
+ .gpio_vbus = GPIO_GUMSTIX_USB_GPIOn,
+ .gpio_pullup = GPIO_GUMSTIX_USB_GPIOx,
+--- a/arch/arm/mach-pxa/include/mach/palm27x.h
++++ b/arch/arm/mach-pxa/include/mach/palm27x.h
+@@ -37,8 +37,8 @@ extern void __init palm27x_lcd_init(int
+ static inline void palm27x_lcd_init(int power, struct pxafb_mode_info *mode) {}
+ #endif
+
+-#if defined(CONFIG_USB_GADGET_PXA27X) || \
+- defined(CONFIG_USB_GADGET_PXA27X_MODULE)
++#if defined(CONFIG_USB_PXA27X) || \
++ defined(CONFIG_USB_PXA27X_MODULE)
+ extern void __init palm27x_udc_init(int vbus, int pullup,
+ int vbus_inverted);
+ #else
+--- a/arch/arm/mach-pxa/palm27x.c
++++ b/arch/arm/mach-pxa/palm27x.c
+@@ -164,8 +164,8 @@ void __init palm27x_lcd_init(int power,
+ /******************************************************************************
+ * USB Gadget
+ ******************************************************************************/
+-#if defined(CONFIG_USB_GADGET_PXA27X) || \
+- defined(CONFIG_USB_GADGET_PXA27X_MODULE)
++#if defined(CONFIG_USB_PXA27X) || \
++ defined(CONFIG_USB_PXA27X_MODULE)
+ static struct gpio_vbus_mach_info palm27x_udc_info = {
+ .gpio_vbus_inverted = 1,
+ };
+--- a/arch/arm/mach-pxa/palmtc.c
++++ b/arch/arm/mach-pxa/palmtc.c
+@@ -339,7 +339,7 @@ static inline void palmtc_mkp_init(void)
+ /******************************************************************************
+ * UDC
+ ******************************************************************************/
+-#if defined(CONFIG_USB_GADGET_PXA25X)||defined(CONFIG_USB_GADGET_PXA25X_MODULE)
++#if defined(CONFIG_USB_PXA25X)||defined(CONFIG_USB_PXA25X_MODULE)
+ static struct gpio_vbus_mach_info palmtc_udc_info = {
+ .gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N,
+ .gpio_vbus_inverted = 1,
+--- a/arch/arm/mach-pxa/vpac270.c
++++ b/arch/arm/mach-pxa/vpac270.c
+@@ -343,7 +343,7 @@ static inline void vpac270_uhc_init(void
+ /******************************************************************************
+ * USB Gadget
+ ******************************************************************************/
+-#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
++#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
+ static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = {
+ .gpio_vbus = GPIO41_VPAC270_UDC_DETECT,
+ .gpio_pullup = -1,
--- /dev/null
+From ed3e80c4c991a52f9fce3421536a78e331ae0949 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Mon, 21 Nov 2011 11:55:41 +0000
+Subject: ASoC: Ensure WM8731 register cache is synced when resuming from disabled
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit ed3e80c4c991a52f9fce3421536a78e331ae0949 upstream.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/codecs/wm8731.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/soc/codecs/wm8731.c
++++ b/sound/soc/codecs/wm8731.c
+@@ -463,6 +463,7 @@ static int wm8731_set_bias_level(struct
+ snd_soc_write(codec, WM8731_PWR, 0xffff);
+ regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies),
+ wm8731->supplies);
++ codec->cache_sync = 1;
+ break;
+ }
+ codec->dapm.bias_level = level;
--- /dev/null
+From 0f768a7235d3dfb6f4833030a95a06419df089cb Mon Sep 17 00:00:00 2001
+From: Timur Tabi <timur@freescale.com>
+Date: Mon, 14 Nov 2011 16:35:26 -0600
+Subject: ASoC: fsl_ssi: properly initialize the sysfs attribute object
+
+From: Timur Tabi <timur@freescale.com>
+
+commit 0f768a7235d3dfb6f4833030a95a06419df089cb upstream.
+
+Commit 6992f533 ("sysfs: Use one lockdep class per sysfs attribute")
+requires 'struct attribute' objects to be initialized with sysfs_attr_init().
+
+Signed-off-by: Timur Tabi <timur@freescale.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/fsl/fsl_ssi.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/soc/fsl/fsl_ssi.c
++++ b/sound/soc/fsl/fsl_ssi.c
+@@ -698,6 +698,7 @@ static int __devinit fsl_ssi_probe(struc
+
+ /* Initialize the the device_attribute structure */
+ dev_attr = &ssi_private->dev_attr;
++ sysfs_attr_init(&dev_attr->attr);
+ dev_attr->attr.name = "statistics";
+ dev_attr->attr.mode = S_IRUGO;
+ dev_attr->show = fsl_sysfs_ssi_show;
--- /dev/null
+From 2391a0e06789a3f1718dee30b282562f7ed28c87 Mon Sep 17 00:00:00 2001
+From: Timo Juhani Lindfors <timo.lindfors@iki.fi>
+Date: Thu, 17 Nov 2011 02:52:50 +0200
+Subject: ASoC: wm8753: Skip noop reconfiguration of DAI mode
+
+From: Timo Juhani Lindfors <timo.lindfors@iki.fi>
+
+commit 2391a0e06789a3f1718dee30b282562f7ed28c87 upstream.
+
+This patch makes it possible to set DAI mode to its currently applied
+value even if codec is active. This is necessary to allow
+
+aplay -t raw -r 44100 -f S16_LE -c 2 < /dev/urandom &
+alsactl store -f backup.state
+alsactl restore -f backup.state
+
+to work without returning errors. This patch is based on a patch sent
+by Klaus Kurzmann <mok@fluxnetz.de>.
+
+Signed-off-by: Timo Juhani Lindfors <timo.lindfors@iki.fi>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/codecs/wm8753.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/codecs/wm8753.c
++++ b/sound/soc/codecs/wm8753.c
+@@ -189,6 +189,9 @@ static int wm8753_set_dai(struct snd_kco
+ struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
+ u16 ioctl;
+
++ if (wm8753->dai_func == ucontrol->value.integer.value[0])
++ return 0;
++
+ if (codec->active)
+ return -EBUSY;
+
pci-hotplug-shpchp-don-t-blindly-claim-non-amd-0x7450-device-ids.patch
drm-radeon-kms-fix-up-gpio-i2c-mask-bits-for-r4xx.patch
viafb-correct-sync-polarity-for-olpc-dcon.patch
+arm-pxa-fix-inconsistent-config_usb_pxa27x.patch
+arm-mx28-fix-bit-operation-in-clock-setting.patch
+arm-omap-smartreflex-fix-irq-handling-bug.patch
+arm-omap2-select-arm_amba-if-omap3_emu-is-defined.patch
+arm-7161-1-errata-no-automatic-store-buffer-drain.patch
+alsa-lx6464es-fix-device-communication-via-command-bus.patch
+asoc-fsl_ssi-properly-initialize-the-sysfs-attribute-object.patch
+asoc-wm8753-skip-noop-reconfiguration-of-dai-mode.patch
+asoc-ensure-wm8731-register-cache-is-synced-when-resuming-from-disabled.patch