]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Sep 2014 01:08:51 +0000 (18:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Sep 2014 01:08:51 +0000 (18:08 -0700)
added patches:
acpi-cpuidle-fix-deadlock-between-cpuidle_lock-and-cpu_hotplug.lock.patch
acpi-hotplug-check-scan-handlers-in-acpi_scan_hot_remove.patch
acpi-run-fixed-event-device-notifications-in-process-context.patch
acpi-scan-not-cache-_sun-value-in-struct-acpi_device_pnp.patch
acpica-utilities-fix-memory-leak-in-acpi_ut_copy_iobject_to_iobject.patch
asoc-adau1701-fix-adau1701_reg_read.patch
asoc-axi-fix-adi-axi-spdif-specification.patch
asoc-blackfin-use-samples-to-set-silence.patch
asoc-max98090-fix-missing-free_irq.patch
asoc-pcm-fix-dpcm_path_put-in-dpcm-runtime-update.patch
asoc-pxa-pxa-ssp-small-leak-in-probe.patch
asoc-pxa-ssp-drop-sndrv_pcm_fmtbit_s24_le.patch
asoc-rt5640-do-not-allow-regmap-to-use-bulk-read-write-operations.patch
asoc-samsung-correct-i2s-dai-suspend-resume-ops.patch
asoc-wm8994-prevent-double-lock-of-accdet_lock-mutex-on-wm1811.patch
asoc-wm_adsp-add-missing-module_license.patch
bfa-fix-undefined-bit-shift-on-big-endian-architectures-with-32-bit-dma-address.patch
bq2415x_charger-fix-atomic-sleep-bug.patch
spi-pxa2xx-add-acpi-id-for-intel-braswell.patch

20 files changed:
queue-3.14/acpi-cpuidle-fix-deadlock-between-cpuidle_lock-and-cpu_hotplug.lock.patch [new file with mode: 0644]
queue-3.14/acpi-hotplug-check-scan-handlers-in-acpi_scan_hot_remove.patch [new file with mode: 0644]
queue-3.14/acpi-run-fixed-event-device-notifications-in-process-context.patch [new file with mode: 0644]
queue-3.14/acpi-scan-not-cache-_sun-value-in-struct-acpi_device_pnp.patch [new file with mode: 0644]
queue-3.14/acpica-utilities-fix-memory-leak-in-acpi_ut_copy_iobject_to_iobject.patch [new file with mode: 0644]
queue-3.14/asoc-adau1701-fix-adau1701_reg_read.patch [new file with mode: 0644]
queue-3.14/asoc-axi-fix-adi-axi-spdif-specification.patch [new file with mode: 0644]
queue-3.14/asoc-blackfin-use-samples-to-set-silence.patch [new file with mode: 0644]
queue-3.14/asoc-max98090-fix-missing-free_irq.patch [new file with mode: 0644]
queue-3.14/asoc-pcm-fix-dpcm_path_put-in-dpcm-runtime-update.patch [new file with mode: 0644]
queue-3.14/asoc-pxa-pxa-ssp-small-leak-in-probe.patch [new file with mode: 0644]
queue-3.14/asoc-pxa-ssp-drop-sndrv_pcm_fmtbit_s24_le.patch [new file with mode: 0644]
queue-3.14/asoc-rt5640-do-not-allow-regmap-to-use-bulk-read-write-operations.patch [new file with mode: 0644]
queue-3.14/asoc-samsung-correct-i2s-dai-suspend-resume-ops.patch [new file with mode: 0644]
queue-3.14/asoc-wm8994-prevent-double-lock-of-accdet_lock-mutex-on-wm1811.patch [new file with mode: 0644]
queue-3.14/asoc-wm_adsp-add-missing-module_license.patch [new file with mode: 0644]
queue-3.14/bfa-fix-undefined-bit-shift-on-big-endian-architectures-with-32-bit-dma-address.patch [new file with mode: 0644]
queue-3.14/bq2415x_charger-fix-atomic-sleep-bug.patch [new file with mode: 0644]
queue-3.14/series
queue-3.14/spi-pxa2xx-add-acpi-id-for-intel-braswell.patch [new file with mode: 0644]

diff --git a/queue-3.14/acpi-cpuidle-fix-deadlock-between-cpuidle_lock-and-cpu_hotplug.lock.patch b/queue-3.14/acpi-cpuidle-fix-deadlock-between-cpuidle_lock-and-cpu_hotplug.lock.patch
new file mode 100644 (file)
index 0000000..94f633d
--- /dev/null
@@ -0,0 +1,71 @@
+From 6726655dfdd2dc60c035c690d9f10cb69d7ea075 Mon Sep 17 00:00:00 2001
+From: Jiri Kosina <jkosina@suse.cz>
+Date: Wed, 3 Sep 2014 15:04:28 +0200
+Subject: ACPI / cpuidle: fix deadlock between cpuidle_lock and cpu_hotplug.lock
+
+From: Jiri Kosina <jkosina@suse.cz>
+
+commit 6726655dfdd2dc60c035c690d9f10cb69d7ea075 upstream.
+
+There is a following AB-BA dependency between cpu_hotplug.lock and
+cpuidle_lock:
+
+1) cpu_hotplug.lock -> cpuidle_lock
+enable_nonboot_cpus()
+ _cpu_up()
+  cpu_hotplug_begin()
+   LOCK(cpu_hotplug.lock)
+ cpu_notify()
+  ...
+  acpi_processor_hotplug()
+   cpuidle_pause_and_lock()
+    LOCK(cpuidle_lock)
+
+2) cpuidle_lock -> cpu_hotplug.lock
+acpi_os_execute_deferred() workqueue
+ ...
+ acpi_processor_cst_has_changed()
+  cpuidle_pause_and_lock()
+   LOCK(cpuidle_lock)
+  get_online_cpus()
+   LOCK(cpu_hotplug.lock)
+
+Fix this by reversing the order acpi_processor_cst_has_changed() does
+thigs -- let it first execute the protection against CPU hotplug by
+calling get_online_cpus() and obtain the cpuidle lock only after that (and
+perform the symmentric change when allowing CPUs hotplug again and
+dropping cpuidle lock).
+
+Spotted by lockdep.
+
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/processor_idle.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/acpi/processor_idle.c
++++ b/drivers/acpi/processor_idle.c
+@@ -1071,9 +1071,9 @@ int acpi_processor_cst_has_changed(struc
+       if (pr->id == 0 && cpuidle_get_driver() == &acpi_idle_driver) {
+-              cpuidle_pause_and_lock();
+               /* Protect against cpu-hotplug */
+               get_online_cpus();
++              cpuidle_pause_and_lock();
+               /* Disable all cpuidle devices */
+               for_each_online_cpu(cpu) {
+@@ -1100,8 +1100,8 @@ int acpi_processor_cst_has_changed(struc
+                               cpuidle_enable_device(dev);
+                       }
+               }
+-              put_online_cpus();
+               cpuidle_resume_and_unlock();
++              put_online_cpus();
+       }
+       return 0;
diff --git a/queue-3.14/acpi-hotplug-check-scan-handlers-in-acpi_scan_hot_remove.patch b/queue-3.14/acpi-hotplug-check-scan-handlers-in-acpi_scan_hot_remove.patch
new file mode 100644 (file)
index 0000000..1b854fb
--- /dev/null
@@ -0,0 +1,77 @@
+From dee1592638ab7ea35a32179b73f9284dead49c03 Mon Sep 17 00:00:00 2001
+From: Tang Chen <tangchen@cn.fujitsu.com>
+Date: Fri, 8 Aug 2014 10:30:45 +0800
+Subject: ACPI / hotplug: Check scan handlers in acpi_scan_hot_remove()
+
+From: Tang Chen <tangchen@cn.fujitsu.com>
+
+commit dee1592638ab7ea35a32179b73f9284dead49c03 upstream.
+
+When ACPI_HOTPLUG_MEMORY is not configured, memory_device_handler.attach
+is not set.  In acpi_scan_attach_handler(), the acpi_device->handler will
+not be initialized.
+
+In acpi_scan_hot_remove(), it doesn't check if acpi_device->handler is NULL.
+If we do memory hot-remove without ACPI_HOTPLUG_MEMORY configured, the kernel
+will panic.
+
+ BUG: unable to handle kernel NULL pointer dereference at 0000000000000088
+ IP: [<ffffffff813e318f>] acpi_device_hotplug+0x1d7/0x4c4
+ PGD 0
+ Oops: 0000 [#1] SMP
+ Modules linked in: sd_mod(E) sr_mod(E) cdrom(E) crc_t10dif(E) crct10dif_common(E) ata_piix(E) libata(E)
+ CPU: 0 PID: 41 Comm: kworker/u2:1 Tainted: G            E 3.16.0-rc7--3.16-rc7-tangchen+ #20
+ Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
+ Workqueue: kacpi_hotplug acpi_hotplug_work_fn
+ task: ffff8800182436c0 ti: ffff880018254000 task.ti: ffff880018254000
+ RIP: 0010:[<ffffffff813e318f>]  [<ffffffff813e318f>] acpi_device_hotplug+0x1d7/0x4c4
+ RSP: 0000:ffff880018257da8  EFLAGS: 00000246
+ RAX: 0000000000000000 RBX: ffff88001cd8d800 RCX: 0000000000000000
+ RDX: 0000000000000000 RSI: ffff88001e40e6f8 RDI: 0000000000000246
+ RBP: ffff880018257df0 R08: 0000000000000096 R09: 00000000000011a0
+ R10: 63735f6970636120 R11: 725f746f685f6e61 R12: 0000000000000003
+ R13: ffff88001cc1c400 R14: ffff88001e062028 R15: 0000000000000040
+ FS:  0000000000000000(0000) GS:ffff88001e400000(0000) knlGS:0000000000000000
+ CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
+ CR2: 0000000000000088 CR3: 000000001a9a2000 CR4: 00000000000006f0
+ DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+ DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000
+ Stack:
+  00000000523cab58 ffff88001cd8d9f8 ffff88001852d480 00000000523cab58
+  ffff88001852d480 ffff880018221e40 ffff88001cc1c400 ffff88001cce2d00
+  0000000000000040 ffff880018257e08 ffffffff813dc31d ffff88001852d480
+ Call Trace:
+  [<ffffffff813dc31d>] acpi_hotplug_work_fn+0x1e/0x29
+  [<ffffffff8108eefb>] process_one_work+0x17b/0x460
+  [<ffffffff8108f69d>] worker_thread+0x11d/0x5b0
+  [<ffffffff8108f580>] ? rescuer_thread+0x3a0/0x3a0
+  [<ffffffff81096811>] kthread+0xe1/0x100
+  [<ffffffff81096730>] ? kthread_create_on_node+0x1a0/0x1a0
+  [<ffffffff816cc6bc>] ret_from_fork+0x7c/0xb0
+  [<ffffffff81096730>] ? kthread_create_on_node+0x1a0/0x1a0
+
+This patch fixes this problem by checking if acpi_device->handler is NULL
+in acpi_scan_hot_remove().
+
+Fixes: d22ddcbc4fb7 (ACPI / hotplug: Add demand_offline hotplug profile flag)
+Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
+[rjw: Subject]
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/scan.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/acpi/scan.c
++++ b/drivers/acpi/scan.c
+@@ -329,7 +329,8 @@ static int acpi_scan_hot_remove(struct a
+       unsigned long long sta;
+       acpi_status status;
+-      if (device->handler->hotplug.demand_offline && !acpi_force_hot_remove) {
++      if (device->handler && device->handler->hotplug.demand_offline
++          && !acpi_force_hot_remove) {
+               if (!acpi_scan_is_offline(device, true))
+                       return -EBUSY;
+       } else {
diff --git a/queue-3.14/acpi-run-fixed-event-device-notifications-in-process-context.patch b/queue-3.14/acpi-run-fixed-event-device-notifications-in-process-context.patch
new file mode 100644 (file)
index 0000000..1cd47c5
--- /dev/null
@@ -0,0 +1,85 @@
+From 236105db632c6279a020f78c83e22eaef746006b Mon Sep 17 00:00:00 2001
+From: Lan Tianyu <tianyu.lan@intel.com>
+Date: Tue, 26 Aug 2014 01:29:24 +0200
+Subject: ACPI: Run fixed event device notifications in process context
+
+From: Lan Tianyu <tianyu.lan@intel.com>
+
+commit 236105db632c6279a020f78c83e22eaef746006b upstream.
+
+Currently, notify callbacks for fixed button events are run from
+interrupt context.  That is not necessary and after commit 0bf6368ee8f2
+(ACPI / button: Add ACPI Button event via netlink routine) it causes
+netlink routines to be called from interrupt context which is not
+correct.
+
+Also, that is different from non-fixed device events (including
+non-fixed button events) whose notify callbacks are all executed from
+process context.
+
+For the above reasons, make fixed button device notify callbacks run
+in process context which will avoid the deadlock when using netlink
+to report button events to user space.
+
+Fixes: 0bf6368ee8f2 (ACPI / button: Add ACPI Button event via netlink routine)
+Link: https://lkml.org/lkml/2014/8/21/606
+Reported-by: Benjamin Block <bebl@mageta.org>
+Reported-by: Knut Petersen <Knut_Petersen@t-online.de>
+Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
+[rjw: Function names, subject and changelog.]
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/scan.c |   15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/drivers/acpi/scan.c
++++ b/drivers/acpi/scan.c
+@@ -916,12 +916,17 @@ static void acpi_device_notify(acpi_hand
+       device->driver->ops.notify(device, event);
+ }
+-static acpi_status acpi_device_notify_fixed(void *data)
++static void acpi_device_notify_fixed(void *data)
+ {
+       struct acpi_device *device = data;
+       /* Fixed hardware devices have no handles */
+       acpi_device_notify(NULL, ACPI_FIXED_HARDWARE_EVENT, device);
++}
++
++static acpi_status acpi_device_fixed_event(void *data)
++{
++      acpi_os_execute(OSL_NOTIFY_HANDLER, acpi_device_notify_fixed, data);
+       return AE_OK;
+ }
+@@ -932,12 +937,12 @@ static int acpi_device_install_notify_ha
+       if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON)
+               status =
+                   acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
+-                                                   acpi_device_notify_fixed,
++                                                   acpi_device_fixed_event,
+                                                    device);
+       else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON)
+               status =
+                   acpi_install_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
+-                                                   acpi_device_notify_fixed,
++                                                   acpi_device_fixed_event,
+                                                    device);
+       else
+               status = acpi_install_notify_handler(device->handle,
+@@ -954,10 +959,10 @@ static void acpi_device_remove_notify_ha
+ {
+       if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON)
+               acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
+-                                              acpi_device_notify_fixed);
++                                              acpi_device_fixed_event);
+       else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON)
+               acpi_remove_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
+-                                              acpi_device_notify_fixed);
++                                              acpi_device_fixed_event);
+       else
+               acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
+                                          acpi_device_notify);
diff --git a/queue-3.14/acpi-scan-not-cache-_sun-value-in-struct-acpi_device_pnp.patch b/queue-3.14/acpi-scan-not-cache-_sun-value-in-struct-acpi_device_pnp.patch
new file mode 100644 (file)
index 0000000..fea11e0
--- /dev/null
@@ -0,0 +1,81 @@
+From a383b68d9fe9864c4d3b86f67ad6488f58136435 Mon Sep 17 00:00:00 2001
+From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
+Date: Wed, 3 Sep 2014 13:39:13 +0900
+Subject: ACPI / scan: not cache _SUN value in struct acpi_device_pnp
+
+From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
+
+commit a383b68d9fe9864c4d3b86f67ad6488f58136435 upstream.
+
+The _SUN device indentification object is not guaranteed to return
+the same value every time it is executed, so we should not cache its
+return value, but rather execute it every time as needed.  If it is
+cached, an incorrect stale value may be used in some situations.
+
+This issue was exposed by commit 202317a573b2 (ACPI / scan: Add
+acpi_device objects for all device nodes in the namespace).  Fix it
+by avoiding to cache the return value of _SUN.
+
+Fixes: 202317a573b2 (ACPI / scan: Add acpi_device objects for all device nodes in the namespace)
+Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
+[ rjw: Changelog ]
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/scan.c     |   15 ++++++++-------
+ include/acpi/acpi_bus.h |    1 -
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+--- a/drivers/acpi/scan.c
++++ b/drivers/acpi/scan.c
+@@ -661,8 +661,14 @@ static ssize_t
+ acpi_device_sun_show(struct device *dev, struct device_attribute *attr,
+                    char *buf) {
+       struct acpi_device *acpi_dev = to_acpi_device(dev);
++      acpi_status status;
++      unsigned long long sun;
++
++      status = acpi_evaluate_integer(acpi_dev->handle, "_SUN", NULL, &sun);
++      if (ACPI_FAILURE(status))
++              return -ENODEV;
+-      return sprintf(buf, "%lu\n", acpi_dev->pnp.sun);
++      return sprintf(buf, "%llu\n", sun);
+ }
+ static DEVICE_ATTR(sun, 0444, acpi_device_sun_show, NULL);
+@@ -684,7 +690,6 @@ static int acpi_device_setup_files(struc
+ {
+       struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
+       acpi_status status;
+-      unsigned long long sun;
+       int result = 0;
+       /*
+@@ -725,14 +730,10 @@ static int acpi_device_setup_files(struc
+       if (dev->pnp.unique_id)
+               result = device_create_file(&dev->dev, &dev_attr_uid);
+-      status = acpi_evaluate_integer(dev->handle, "_SUN", NULL, &sun);
+-      if (ACPI_SUCCESS(status)) {
+-              dev->pnp.sun = (unsigned long)sun;
++      if (acpi_has_method(dev->handle, "_SUN")) {
+               result = device_create_file(&dev->dev, &dev_attr_sun);
+               if (result)
+                       goto end;
+-      } else {
+-              dev->pnp.sun = (unsigned long)-1;
+       }
+       if (acpi_has_method(dev->handle, "_STA")) {
+--- a/include/acpi/acpi_bus.h
++++ b/include/acpi/acpi_bus.h
+@@ -228,7 +228,6 @@ struct acpi_device_pnp {
+       acpi_device_name device_name;   /* Driver-determined */
+       acpi_device_class device_class; /*        "          */
+       union acpi_object *str_obj;     /* unicode string for _STR method */
+-      unsigned long sun;              /* _SUN */
+ };
+ #define acpi_device_bid(d)    ((d)->pnp.bus_id)
diff --git a/queue-3.14/acpica-utilities-fix-memory-leak-in-acpi_ut_copy_iobject_to_iobject.patch b/queue-3.14/acpica-utilities-fix-memory-leak-in-acpi_ut_copy_iobject_to_iobject.patch
new file mode 100644 (file)
index 0000000..d09e29f
--- /dev/null
@@ -0,0 +1,42 @@
+From 8aa5e56eeb61a099ea6519eb30ee399e1bc043ce Mon Sep 17 00:00:00 2001
+From: "David E. Box" <david.e.box@linux.intel.com>
+Date: Tue, 8 Jul 2014 10:05:52 +0800
+Subject: ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject
+
+From: "David E. Box" <david.e.box@linux.intel.com>
+
+commit 8aa5e56eeb61a099ea6519eb30ee399e1bc043ce upstream.
+
+Adds return status check on copy routines to delete the allocated destination
+object if either copy fails. Reported by Colin Ian King on bugs.acpica.org,
+Bug 1087.
+The last applicable commit:
+ Commit: 3371c19c294a4cb3649aa4e84606be8a1d999e61
+ Subject: ACPICA: Remove ACPI_GET_OBJECT_TYPE macro
+
+Link: https://bugs.acpica.org/show_bug.cgi?id=1087
+Reported-by: Colin Ian King <colin.king@canonical.com>
+Signed-off-by: David E. Box <david.e.box@linux.intel.com>
+Signed-off-by: Bob Moore <robert.moore@intel.com>
+Signed-off-by: Lv Zheng <lv.zheng@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/acpica/utcopy.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/acpi/acpica/utcopy.c
++++ b/drivers/acpi/acpica/utcopy.c
+@@ -1001,5 +1001,11 @@ acpi_ut_copy_iobject_to_iobject(union ac
+               status = acpi_ut_copy_simple_object(source_desc, *dest_desc);
+       }
++      /* Delete the allocated object if copy failed */
++
++      if (ACPI_FAILURE(status)) {
++              acpi_ut_remove_reference(*dest_desc);
++      }
++
+       return_ACPI_STATUS(status);
+ }
diff --git a/queue-3.14/asoc-adau1701-fix-adau1701_reg_read.patch b/queue-3.14/asoc-adau1701-fix-adau1701_reg_read.patch
new file mode 100644 (file)
index 0000000..d0187d0
--- /dev/null
@@ -0,0 +1,37 @@
+From 3ad80b828b2533f37c221e2df155774efd6ed814 Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Thu, 3 Jul 2014 16:51:36 +0200
+Subject: ASoC: adau1701: fix adau1701_reg_read()
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit 3ad80b828b2533f37c221e2df155774efd6ed814 upstream.
+
+Fix a long standing bug in the read register routing of adau1701.
+The bytes arrive in the buffer in big-endian, so the result has to be
+shifted before and-ing the bytes in the loop.
+
+Signed-off-by: Daniel Mack <zonque@gmail.com>
+Acked-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/adau1701.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/sound/soc/codecs/adau1701.c
++++ b/sound/soc/codecs/adau1701.c
+@@ -230,8 +230,10 @@ static int adau1701_reg_read(void *conte
+       *value = 0;
+-      for (i = 0; i < size; i++)
+-              *value |= recv_buf[i] << (i * 8);
++      for (i = 0; i < size; i++) {
++              *value <<= 8;
++              *value |= recv_buf[i];
++      }
+       return 0;
+ }
diff --git a/queue-3.14/asoc-axi-fix-adi-axi-spdif-specification.patch b/queue-3.14/asoc-axi-fix-adi-axi-spdif-specification.patch
new file mode 100644 (file)
index 0000000..1a37e87
--- /dev/null
@@ -0,0 +1,38 @@
+From d1555c407a65db42126b295425379acb393ba83a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
+Date: Mon, 28 Jul 2014 15:05:03 +0200
+Subject: ASoC: axi: Fix ADI AXI SPDIF specification
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
+
+commit d1555c407a65db42126b295425379acb393ba83a upstream.
+
+The specification requires compatible = "adi,axi-spdif-1.00.a" but
+driver and example and file name indicate "adi,axi-spdif-tx-1.00.a".
+Change the specification to match the implementation.
+
+Acked-by: Lars-Peter Clausen <lars@metafoo.de>
+Reviewed-by: Michal Simek <michal.simek@xilinx.com>
+Fixes: d7b528eff927 ("dt: Add bindings documentation for the ADI AXI-SPDIF audio controller")
+Signed-off-by: Andreas Färber <afaerber@suse.de>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt
++++ b/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt
+@@ -1,7 +1,7 @@
+ ADI AXI-SPDIF controller
+ Required properties:
+- - compatible : Must be "adi,axi-spdif-1.00.a"
++ - compatible : Must be "adi,axi-spdif-tx-1.00.a"
+  - reg : Must contain SPDIF core's registers location and length
+  - clocks : Pairs of phandle and specifier referencing the controller's clocks.
+    The controller expects two clocks, the clock used for the AXI interface and
diff --git a/queue-3.14/asoc-blackfin-use-samples-to-set-silence.patch b/queue-3.14/asoc-blackfin-use-samples-to-set-silence.patch
new file mode 100644 (file)
index 0000000..335f73d
--- /dev/null
@@ -0,0 +1,46 @@
+From 30443408fd7201fd1911b09daccf92fae3cc700d Mon Sep 17 00:00:00 2001
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+Date: Fri, 18 Jul 2014 16:14:57 +0800
+Subject: ASoC: blackfin: use samples to set silence
+
+From: Scott Jiang <scott.jiang.linux@gmail.com>
+
+commit 30443408fd7201fd1911b09daccf92fae3cc700d upstream.
+
+The third parameter for snd_pcm_format_set_silence needs the number
+of samples instead of sample bytes.
+
+Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/blackfin/bf5xx-i2s-pcm.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/sound/soc/blackfin/bf5xx-i2s-pcm.c
++++ b/sound/soc/blackfin/bf5xx-i2s-pcm.c
+@@ -290,19 +290,19 @@ static int bf5xx_pcm_silence(struct snd_
+       unsigned int sample_size = runtime->sample_bits / 8;
+       void *buf = runtime->dma_area;
+       struct bf5xx_i2s_pcm_data *dma_data;
+-      unsigned int offset, size;
++      unsigned int offset, samples;
+       dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
+       if (dma_data->tdm_mode) {
+               offset = pos * 8 * sample_size;
+-              size = count * 8 * sample_size;
++              samples = count * 8;
+       } else {
+               offset = frames_to_bytes(runtime, pos);
+-              size = frames_to_bytes(runtime, count);
++              samples = count * runtime->channels;
+       }
+-      snd_pcm_format_set_silence(runtime->format, buf + offset, size);
++      snd_pcm_format_set_silence(runtime->format, buf + offset, samples);
+       return 0;
+ }
diff --git a/queue-3.14/asoc-max98090-fix-missing-free_irq.patch b/queue-3.14/asoc-max98090-fix-missing-free_irq.patch
new file mode 100644 (file)
index 0000000..405d65e
--- /dev/null
@@ -0,0 +1,34 @@
+From 4adeb0ccf86a5af1825bbfe290dee9e60a5ab870 Mon Sep 17 00:00:00 2001
+From: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Date: Thu, 19 Jun 2014 09:32:05 +0300
+Subject: ASoC: max98090: Fix missing free_irq
+
+From: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+
+commit 4adeb0ccf86a5af1825bbfe290dee9e60a5ab870 upstream.
+
+max98090.c doesn't free the threaded interrupt it requests. This causes
+an oops when doing "cat /proc/interrupts" after snd-soc-max98090.ko is
+unloaded.
+
+Fix this by requesting the interrupt by using devm_request_threaded_irq().
+
+Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/max98090.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/max98090.c
++++ b/sound/soc/codecs/max98090.c
+@@ -2250,7 +2250,7 @@ static int max98090_probe(struct snd_soc
+       /* Register for interrupts */
+       dev_dbg(codec->dev, "irq = %d\n", max98090->irq);
+-      ret = request_threaded_irq(max98090->irq, NULL,
++      ret = devm_request_threaded_irq(codec->dev, max98090->irq, NULL,
+               max98090_interrupt, IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+               "max98090_interrupt", codec);
+       if (ret < 0) {
diff --git a/queue-3.14/asoc-pcm-fix-dpcm_path_put-in-dpcm-runtime-update.patch b/queue-3.14/asoc-pcm-fix-dpcm_path_put-in-dpcm-runtime-update.patch
new file mode 100644 (file)
index 0000000..13f6663
--- /dev/null
@@ -0,0 +1,31 @@
+From 7ed9de76ff342cbd717a9cf897044b99272cb8f8 Mon Sep 17 00:00:00 2001
+From: Qiao Zhou <zhouqiao@marvell.com>
+Date: Wed, 4 Jun 2014 19:42:06 +0800
+Subject: ASoC: pcm: fix dpcm_path_put in dpcm runtime update
+
+From: Qiao Zhou <zhouqiao@marvell.com>
+
+commit 7ed9de76ff342cbd717a9cf897044b99272cb8f8 upstream.
+
+we need to release dapm widget list after dpcm_path_get in
+soc_dpcm_runtime_update. otherwise, there will be potential memory
+leak. add dpcm_path_put to fix it.
+
+Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-pcm.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/soc/soc-pcm.c
++++ b/sound/soc/soc-pcm.c
+@@ -2011,6 +2011,7 @@ int soc_dpcm_runtime_update(struct snd_s
+                       dpcm_be_disconnect(fe, SNDRV_PCM_STREAM_PLAYBACK);
+               }
++              dpcm_path_put(&list);
+ capture:
+               /* skip if FE doesn't have capture capability */
+               if (!fe->cpu_dai->driver->capture.channels_min)
diff --git a/queue-3.14/asoc-pxa-pxa-ssp-small-leak-in-probe.patch b/queue-3.14/asoc-pxa-pxa-ssp-small-leak-in-probe.patch
new file mode 100644 (file)
index 0000000..ffc5cec
--- /dev/null
@@ -0,0 +1,32 @@
+From 4548728981de259d7d37d0ae968a777b09794168 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Thu, 31 Jul 2014 15:57:51 +0300
+Subject: ASoC: pxa: pxa-ssp: small leak in probe()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 4548728981de259d7d37d0ae968a777b09794168 upstream.
+
+There is a small memory leak if probe() fails.
+
+Fixes: 2023c90c3a2c ('ASoC: pxa: pxa-ssp: add DT bindings')
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/pxa/pxa-ssp.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/pxa/pxa-ssp.c
++++ b/sound/soc/pxa/pxa-ssp.c
+@@ -725,7 +725,8 @@ static int pxa_ssp_probe(struct snd_soc_
+               ssp_handle = of_parse_phandle(dev->of_node, "port", 0);
+               if (!ssp_handle) {
+                       dev_err(dev, "unable to get 'port' phandle\n");
+-                      return -ENODEV;
++                      ret = -ENODEV;
++                      goto err_priv;
+               }
+               priv->ssp = pxa_ssp_request_of(ssp_handle, "SoC audio");
diff --git a/queue-3.14/asoc-pxa-ssp-drop-sndrv_pcm_fmtbit_s24_le.patch b/queue-3.14/asoc-pxa-ssp-drop-sndrv_pcm_fmtbit_s24_le.patch
new file mode 100644 (file)
index 0000000..a6aad61
--- /dev/null
@@ -0,0 +1,34 @@
+From 9301503af016eb537ccce76adec0c1bb5c84871e Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Wed, 13 Aug 2014 21:51:06 +0200
+Subject: ASoC: pxa-ssp: drop SNDRV_PCM_FMTBIT_S24_LE
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit 9301503af016eb537ccce76adec0c1bb5c84871e upstream.
+
+This mode is unsupported, as the DMA controller can't do zero-padding
+of samples.
+
+Signed-off-by: Daniel Mack <zonque@gmail.com>
+Reported-by: Johannes Stezenbach <js@sig21.net>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/pxa/pxa-ssp.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/sound/soc/pxa/pxa-ssp.c
++++ b/sound/soc/pxa/pxa-ssp.c
+@@ -767,9 +767,7 @@ static int pxa_ssp_remove(struct snd_soc
+                         SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \
+                         SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
+-#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
+-                          SNDRV_PCM_FMTBIT_S24_LE |   \
+-                          SNDRV_PCM_FMTBIT_S32_LE)
++#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
+ static const struct snd_soc_dai_ops pxa_ssp_dai_ops = {
+       .startup        = pxa_ssp_startup,
diff --git a/queue-3.14/asoc-rt5640-do-not-allow-regmap-to-use-bulk-read-write-operations.patch b/queue-3.14/asoc-rt5640-do-not-allow-regmap-to-use-bulk-read-write-operations.patch
new file mode 100644 (file)
index 0000000..3fdffae
--- /dev/null
@@ -0,0 +1,30 @@
+From f4821e8e8e957fe4c601a49b9a97b7399d5f7ab1 Mon Sep 17 00:00:00 2001
+From: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Date: Tue, 26 Aug 2014 17:03:13 +0300
+Subject: ASoC: rt5640: Do not allow regmap to use bulk read-write operations
+
+From: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+
+commit f4821e8e8e957fe4c601a49b9a97b7399d5f7ab1 upstream.
+
+Debugging showed Realtek RT5642 doesn't support autoincrementing writes so
+driver should set the use_single_rw flag for regmap.
+
+Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/rt5640.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/soc/codecs/rt5640.c
++++ b/sound/soc/codecs/rt5640.c
+@@ -2071,6 +2071,7 @@ static struct snd_soc_codec_driver soc_c
+ static const struct regmap_config rt5640_regmap = {
+       .reg_bits = 8,
+       .val_bits = 16,
++      .use_single_rw = true,
+       .max_register = RT5640_VENDOR_ID2 + 1 + (ARRAY_SIZE(rt5640_ranges) *
+                                              RT5640_PR_SPACING),
diff --git a/queue-3.14/asoc-samsung-correct-i2s-dai-suspend-resume-ops.patch b/queue-3.14/asoc-samsung-correct-i2s-dai-suspend-resume-ops.patch
new file mode 100644 (file)
index 0000000..d58004c
--- /dev/null
@@ -0,0 +1,55 @@
+From d3d4e5247b013008a39e4d5f69ce4c60ed57f997 Mon Sep 17 00:00:00 2001
+From: Sylwester Nawrocki <s.nawrocki@samsung.com>
+Date: Fri, 4 Jul 2014 16:05:45 +0200
+Subject: ASoC: samsung: Correct I2S DAI suspend/resume ops
+
+From: Sylwester Nawrocki <s.nawrocki@samsung.com>
+
+commit d3d4e5247b013008a39e4d5f69ce4c60ed57f997 upstream.
+
+We should save/restore relevant I2S registers regardless of
+the dai->active flag, otherwise some settings are being lost
+after system suspend/resume cycle. E.g. I2S slave mode set only
+during dai initialization is not preserved and the device ends
+up in master mode after system resume.
+
+Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/samsung/i2s.c |   16 ++++++----------
+ 1 file changed, 6 insertions(+), 10 deletions(-)
+
+--- a/sound/soc/samsung/i2s.c
++++ b/sound/soc/samsung/i2s.c
+@@ -915,11 +915,9 @@ static int i2s_suspend(struct snd_soc_da
+ {
+       struct i2s_dai *i2s = to_info(dai);
+-      if (dai->active) {
+-              i2s->suspend_i2smod = readl(i2s->addr + I2SMOD);
+-              i2s->suspend_i2scon = readl(i2s->addr + I2SCON);
+-              i2s->suspend_i2spsr = readl(i2s->addr + I2SPSR);
+-      }
++      i2s->suspend_i2smod = readl(i2s->addr + I2SMOD);
++      i2s->suspend_i2scon = readl(i2s->addr + I2SCON);
++      i2s->suspend_i2spsr = readl(i2s->addr + I2SPSR);
+       return 0;
+ }
+@@ -928,11 +926,9 @@ static int i2s_resume(struct snd_soc_dai
+ {
+       struct i2s_dai *i2s = to_info(dai);
+-      if (dai->active) {
+-              writel(i2s->suspend_i2scon, i2s->addr + I2SCON);
+-              writel(i2s->suspend_i2smod, i2s->addr + I2SMOD);
+-              writel(i2s->suspend_i2spsr, i2s->addr + I2SPSR);
+-      }
++      writel(i2s->suspend_i2scon, i2s->addr + I2SCON);
++      writel(i2s->suspend_i2smod, i2s->addr + I2SMOD);
++      writel(i2s->suspend_i2spsr, i2s->addr + I2SPSR);
+       return 0;
+ }
diff --git a/queue-3.14/asoc-wm8994-prevent-double-lock-of-accdet_lock-mutex-on-wm1811.patch b/queue-3.14/asoc-wm8994-prevent-double-lock-of-accdet_lock-mutex-on-wm1811.patch
new file mode 100644 (file)
index 0000000..64d84e7
--- /dev/null
@@ -0,0 +1,62 @@
+From b38314179c9ccb789e6fe967cff171fa817e8978 Mon Sep 17 00:00:00 2001
+From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
+Date: Mon, 16 Jun 2014 21:24:03 +0100
+Subject: ASoC: wm8994: Prevent double lock of accdet_lock mutex on wm1811
+
+From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
+
+commit b38314179c9ccb789e6fe967cff171fa817e8978 upstream.
+
+wm1811_micd_stop takes the accdet_lock mutex, and is called from two
+places, one of which is already holding the accdet_lock. This obviously
+causes a lock up.
+
+This patch fixes this issue by removing the lock from wm1811_micd_stop
+and ensuring that it is always locked externally.
+
+Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/wm8994.c |    9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/sound/soc/codecs/wm8994.c
++++ b/sound/soc/codecs/wm8994.c
+@@ -3497,6 +3497,7 @@ static irqreturn_t wm8994_mic_irq(int ir
+       return IRQ_HANDLED;
+ }
++/* Should be called with accdet_lock held */
+ static void wm1811_micd_stop(struct snd_soc_codec *codec)
+ {
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
+@@ -3504,14 +3505,10 @@ static void wm1811_micd_stop(struct snd_
+       if (!wm8994->jackdet)
+               return;
+-      mutex_lock(&wm8994->accdet_lock);
+-
+       snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, WM8958_MICD_ENA, 0);
+       wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_JACK);
+-      mutex_unlock(&wm8994->accdet_lock);
+-
+       if (wm8994->wm8994->pdata.jd_ext_cap)
+               snd_soc_dapm_disable_pin(&codec->dapm,
+                                        "MICBIAS2");
+@@ -3552,10 +3549,10 @@ static void wm8958_open_circuit_work(str
+                                                 open_circuit_work.work);
+       struct device *dev = wm8994->wm8994->dev;
+-      wm1811_micd_stop(wm8994->hubs.codec);
+-
+       mutex_lock(&wm8994->accdet_lock);
++      wm1811_micd_stop(wm8994->hubs.codec);
++
+       dev_dbg(dev, "Reporting open circuit\n");
+       wm8994->jack_mic = false;
diff --git a/queue-3.14/asoc-wm_adsp-add-missing-module_license.patch b/queue-3.14/asoc-wm_adsp-add-missing-module_license.patch
new file mode 100644 (file)
index 0000000..afb8ca3
--- /dev/null
@@ -0,0 +1,30 @@
+From 0a37c6efec4a2fdc2563c5a8faa472b814deee80 Mon Sep 17 00:00:00 2001
+From: Praveen Diwakar <praveen.diwakar@intel.com>
+Date: Fri, 4 Jul 2014 11:17:41 +0530
+Subject: ASoC: wm_adsp: Add missing MODULE_LICENSE
+
+From: Praveen Diwakar <praveen.diwakar@intel.com>
+
+commit 0a37c6efec4a2fdc2563c5a8faa472b814deee80 upstream.
+
+Since MODULE_LICENSE is missing the module load fails,
+so add this for module.
+
+Signed-off-by: Praveen Diwakar <praveen.diwakar@intel.com>
+Signed-off-by: Vinod Koul <vinod.koul@intel.com>
+Reviewed-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/wm_adsp.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/soc/codecs/wm_adsp.c
++++ b/sound/soc/codecs/wm_adsp.c
+@@ -1745,3 +1745,5 @@ int wm_adsp2_init(struct wm_adsp *adsp,
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(wm_adsp2_init);
++
++MODULE_LICENSE("GPL v2");
diff --git a/queue-3.14/bfa-fix-undefined-bit-shift-on-big-endian-architectures-with-32-bit-dma-address.patch b/queue-3.14/bfa-fix-undefined-bit-shift-on-big-endian-architectures-with-32-bit-dma-address.patch
new file mode 100644 (file)
index 0000000..c1919e1
--- /dev/null
@@ -0,0 +1,49 @@
+From 03a6c3ff3282ee9fa893089304d951e0be93a144 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 8 Jun 2014 23:33:25 +0100
+Subject: bfa: Fix undefined bit shift on big-endian architectures with 32-bit DMA address
+
+From: Ben Hutchings <ben@decadent.org.uk>
+
+commit 03a6c3ff3282ee9fa893089304d951e0be93a144 upstream.
+
+bfa_swap_words() shifts its argument (assumed to be 64-bit) by 32 bits
+each way.  In two places the argument type is dma_addr_t, which may be
+32-bit, in which case the effect of the bit shift is undefined:
+
+drivers/scsi/bfa/bfa_fcpim.c: In function 'bfa_ioim_send_ioreq':
+drivers/scsi/bfa/bfa_fcpim.c:2497:4: warning: left shift count >= width of type [enabled by default]
+    addr = bfa_sgaddr_le(sg_dma_address(sg));
+    ^
+drivers/scsi/bfa/bfa_fcpim.c:2497:4: warning: right shift count >= width of type [enabled by default]
+drivers/scsi/bfa/bfa_fcpim.c:2509:4: warning: left shift count >= width of type [enabled by default]
+    addr = bfa_sgaddr_le(sg_dma_address(sg));
+    ^
+drivers/scsi/bfa/bfa_fcpim.c:2509:4: warning: right shift count >= width of type [enabled by default]
+
+Avoid this by adding casts to u64 in bfa_swap_words().
+
+Compile-tested only.
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Anil Gurumurthy <anil.gurumurthy@qlogic.com>
+Fixes: f16a17507b09 ('[SCSI] bfa: remove all OS wrappers')
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/bfa/bfa_ioc.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/bfa/bfa_ioc.h
++++ b/drivers/scsi/bfa/bfa_ioc.h
+@@ -72,7 +72,7 @@ struct bfa_sge_s {
+ } while (0)
+ #define bfa_swap_words(_x)  ( \
+-      ((_x) << 32) | ((_x) >> 32))
++      ((u64)(_x) << 32) | ((u64)(_x) >> 32))
+ #ifdef __BIG_ENDIAN
+ #define bfa_sge_to_be(_x)
diff --git a/queue-3.14/bq2415x_charger-fix-atomic-sleep-bug.patch b/queue-3.14/bq2415x_charger-fix-atomic-sleep-bug.patch
new file mode 100644 (file)
index 0000000..6ddee0c
--- /dev/null
@@ -0,0 +1,69 @@
+From 3c0185046c0ee49a6e55c714612ef3bcd5385df3 Mon Sep 17 00:00:00 2001
+From: Sebastian Reichel <sre@kernel.org>
+Date: Mon, 7 Apr 2014 13:14:04 +0200
+Subject: bq2415x_charger: Fix Atomic Sleep Bug
+
+From: Sebastian Reichel <sre@kernel.org>
+
+commit 3c0185046c0ee49a6e55c714612ef3bcd5385df3 upstream.
+
+Move sysfs_notify and i2c_transfer calls from bq2415x_notifier_call
+to bq2415x_timer_work to avoid sleeping in atomic context.
+
+This fixes the following bug:
+
+[ 7.667449] Workqueue: events power_supply_changed_work
+[ 7.673034] [<c0015c28>] (unwind_backtrace+0x0/0xe0) from [<c0011e1c>] (show_stack+0x10/0x14)
+[ 7.682098] [<c0011e1c>] (show_stack+0x10/0x14) from [<c052cdd0>] (dump_stack+0x78/0xac)
+[ 7.690704] [<c052cdd0>] (dump_stack+0x78/0xac) from [<c052a044>] (__schedule_bug+0x48/0x60)
+[ 7.699645] [<c052a044>] (__schedule_bug+0x48/0x60) from [<c053071c>] (__schedule+0x74/0x638)
+[ 7.708618] [<c053071c>] (__schedule+0x74/0x638) from [<c05301fc>] (schedule_timeout+0x1dc/0x24c)
+[ 7.718017] [<c05301fc>] (schedule_timeout+0x1dc/0x24c) from [<c05316ec>] (wait_for_common+0x138/0x17c)
+[ 7.727966] [<c05316ec>] (wait_for_common+0x138/0x17c) from [<c0362a70>] (omap_i2c_xfer+0x340/0x4a0)
+[ 7.737640] [<c0362a70>] (omap_i2c_xfer+0x340/0x4a0) from [<c035d928>] (__i2c_transfer+0x40/0x74)
+[ 7.747039] [<c035d928>] (__i2c_transfer+0x40/0x74) from [<c035e22c>] (i2c_transfer+0x6c/0x90)
+[ 7.756195] [<c035e22c>] (i2c_transfer+0x6c/0x90) from [<c037ad24>] (bq2415x_i2c_write+0x48/0x78)
+[ 7.765563] [<c037ad24>] (bq2415x_i2c_write+0x48/0x78) from [<c037ae60>] (bq2415x_set_weak_battery_voltage+0x4c/0x50)
+[ 7.776824] [<c037ae60>] (bq2415x_set_weak_battery_voltage+0x4c/0x50) from [<c037bce8>] (bq2415x_set_mode+0xdc/0x14c)
+[ 7.788085] [<c037bce8>] (bq2415x_set_mode+0xdc/0x14c) from [<c037bfb8>] (bq2415x_notifier_call+0xa8/0xb4)
+[ 7.798309] [<c037bfb8>] (bq2415x_notifier_call+0xa8/0xb4) from [<c005f228>] (notifier_call_chain+0x38/0x68)
+[ 7.808715] [<c005f228>] (notifier_call_chain+0x38/0x68) from [<c005f284>] (__atomic_notifier_call_chain+0x2c/0x3c)
+[ 7.819732] [<c005f284>] (__atomic_notifier_call_chain+0x2c/0x3c) from [<c005f2a8>] (atomic_notifier_call_chain+0x14/0x18)
+[ 7.831420] [<c005f2a8>] (atomic_notifier_call_chain+0x14/0x18) from [<c0378078>] (power_supply_changed_work+0x6c/0xb8)
+[ 7.842864] [<c0378078>] (power_supply_changed_work+0x6c/0xb8) from [<c00556c0>] (process_one_work+0x248/0x440)
+[ 7.853546] [<c00556c0>] (process_one_work+0x248/0x440) from [<c0055d6c>] (worker_thread+0x208/0x350)
+[ 7.863372] [<c0055d6c>] (worker_thread+0x208/0x350) from [<c005b0ac>] (kthread+0xc8/0xdc)
+[ 7.872131] [<c005b0ac>] (kthread+0xc8/0xdc) from [<c000e138>] (ret_from_fork+0x14/0x3c)
+
+Fixes: 32260308b4ca ("bq2415x_charger: Use power_supply notifier for automode")
+Signed-off-by: Sebastian Reichel <sre@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/power/bq2415x_charger.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/drivers/power/bq2415x_charger.c
++++ b/drivers/power/bq2415x_charger.c
+@@ -840,8 +840,7 @@ static int bq2415x_notifier_call(struct
+       if (bq->automode < 1)
+               return NOTIFY_OK;
+-      sysfs_notify(&bq->charger.dev->kobj, NULL, "reported_mode");
+-      bq2415x_set_mode(bq, bq->reported_mode);
++      schedule_delayed_work(&bq->work, 0);
+       return NOTIFY_OK;
+ }
+@@ -892,6 +891,11 @@ static void bq2415x_timer_work(struct wo
+       int error;
+       int boost;
++      if (bq->automode > 0 && (bq->reported_mode != bq->mode)) {
++              sysfs_notify(&bq->charger.dev->kobj, NULL, "reported_mode");
++              bq2415x_set_mode(bq, bq->reported_mode);
++      }
++
+       if (!bq->autotimer)
+               return;
index f317831d784fc5172292254aace3ca395479b4d0..fceb3534550ea409ae7cde512bbb403482d20d9f 100644 (file)
@@ -48,3 +48,22 @@ mips-tlbex-fix-a-missing-statement-for-hugetlb.patch
 mips-remove-bug_on-is_fpu_owner-in-do_ade.patch
 mips-asm-reg.h-make-32-and-64-bit-definitions-available-at-the-same-time.patch
 mips-octeon-make-get_system_type-thread-safe.patch
+asoc-wm8994-prevent-double-lock-of-accdet_lock-mutex-on-wm1811.patch
+asoc-pcm-fix-dpcm_path_put-in-dpcm-runtime-update.patch
+asoc-wm_adsp-add-missing-module_license.patch
+asoc-blackfin-use-samples-to-set-silence.patch
+asoc-samsung-correct-i2s-dai-suspend-resume-ops.patch
+asoc-adau1701-fix-adau1701_reg_read.patch
+asoc-max98090-fix-missing-free_irq.patch
+asoc-pxa-pxa-ssp-small-leak-in-probe.patch
+asoc-pxa-ssp-drop-sndrv_pcm_fmtbit_s24_le.patch
+asoc-axi-fix-adi-axi-spdif-specification.patch
+asoc-rt5640-do-not-allow-regmap-to-use-bulk-read-write-operations.patch
+bfa-fix-undefined-bit-shift-on-big-endian-architectures-with-32-bit-dma-address.patch
+bq2415x_charger-fix-atomic-sleep-bug.patch
+acpica-utilities-fix-memory-leak-in-acpi_ut_copy_iobject_to_iobject.patch
+acpi-hotplug-check-scan-handlers-in-acpi_scan_hot_remove.patch
+spi-pxa2xx-add-acpi-id-for-intel-braswell.patch
+acpi-run-fixed-event-device-notifications-in-process-context.patch
+acpi-scan-not-cache-_sun-value-in-struct-acpi_device_pnp.patch
+acpi-cpuidle-fix-deadlock-between-cpuidle_lock-and-cpu_hotplug.lock.patch
diff --git a/queue-3.14/spi-pxa2xx-add-acpi-id-for-intel-braswell.patch b/queue-3.14/spi-pxa2xx-add-acpi-id-for-intel-braswell.patch
new file mode 100644 (file)
index 0000000..2aeb2a9
--- /dev/null
@@ -0,0 +1,31 @@
+From aca26364689e00e3b2052072424682231bdae6ae Mon Sep 17 00:00:00 2001
+From: Alan Cox <alan@linux.intel.com>
+Date: Wed, 20 Aug 2014 13:57:26 +0300
+Subject: spi/pxa2xx: Add ACPI ID for Intel Braswell
+
+From: Alan Cox <alan@linux.intel.com>
+
+commit aca26364689e00e3b2052072424682231bdae6ae upstream.
+
+The SPI host controller is the same as used in Baytrail, only the ACPI ID
+is different so add this new ID to the list.
+
+Signed-off-by: Alan Cox <alan@linux.intel.com>
+Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-pxa2xx.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/spi/spi-pxa2xx.c
++++ b/drivers/spi/spi-pxa2xx.c
+@@ -1078,6 +1078,7 @@ static struct acpi_device_id pxa2xx_spi_
+       { "INT3430", 0 },
+       { "INT3431", 0 },
+       { "80860F0E", 0 },
++      { "8086228E", 0 },
+       { },
+ };
+ MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match);