]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.5-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Aug 2012 15:34:49 +0000 (08:34 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Aug 2012 15:34:49 +0000 (08:34 -0700)
added patches:
alsa-hda-add-support-for-realtek-alc282.patch
alsa-hda-don-t-power-up-when-not-powered-down.patch
alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch
asoc-dapm-fix-locking-during-codec-shutdown.patch
asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch
asoc-wm8962-redo-early-init-of-the-part-on-resume.patch

queue-3.5/alsa-hda-add-support-for-realtek-alc282.patch [new file with mode: 0644]
queue-3.5/alsa-hda-don-t-power-up-when-not-powered-down.patch [new file with mode: 0644]
queue-3.5/alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch [new file with mode: 0644]
queue-3.5/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch [new file with mode: 0644]
queue-3.5/asoc-dapm-fix-locking-during-codec-shutdown.patch [new file with mode: 0644]
queue-3.5/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch [new file with mode: 0644]
queue-3.5/series

diff --git a/queue-3.5/alsa-hda-add-support-for-realtek-alc282.patch b/queue-3.5/alsa-hda-add-support-for-realtek-alc282.patch
new file mode 100644 (file)
index 0000000..5ea5680
--- /dev/null
@@ -0,0 +1,32 @@
+From 4e01ec636e64707d202a1ca21a47bbc6d53085b7 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Wed, 18 Jul 2012 07:38:46 +0200
+Subject: ALSA: hda - Add support for Realtek ALC282
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit 4e01ec636e64707d202a1ca21a47bbc6d53085b7 upstream.
+
+This codec has a separate dmic path (separate dmic only ADC),
+and thus it looks mostly like ALC275.
+
+BugLink: https://bugs.launchpad.net/bugs/1025377
+Tested-by: Ray Chen <ray.chen@canonical.com>
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -6831,6 +6831,7 @@ static const struct hda_codec_preset snd
+       { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 },
+       { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
+       { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
++      { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
+       { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
+         .patch = patch_alc861 },
+       { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
diff --git a/queue-3.5/alsa-hda-don-t-power-up-when-not-powered-down.patch b/queue-3.5/alsa-hda-don-t-power-up-when-not-powered-down.patch
new file mode 100644 (file)
index 0000000..69eb7b5
--- /dev/null
@@ -0,0 +1,37 @@
+From b43d224767e426cf1a8b6622d1d172f2b2b0e857 Mon Sep 17 00:00:00 2001
+From: Dylan Reid <dgreid@chromium.org>
+Date: Thu, 21 Jun 2012 21:51:22 -0700
+Subject: ALSA: hda - Don't power up when not powered down.
+
+From: Dylan Reid <dgreid@chromium.org>
+
+commit b43d224767e426cf1a8b6622d1d172f2b2b0e857 upstream.
+
+After cancel_delayed_work_sync returns, the power down work either never
+started (power_on == 1) or finished (power_on == 0).  In the former case
+there is no need to power up again.
+
+Signed-off-by: Dylan Reid <dgreid@chromium.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_codec.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -4418,6 +4418,13 @@ static void __snd_hda_power_up(struct hd
+       cancel_delayed_work_sync(&codec->power_work);
+       spin_lock(&codec->power_lock);
++      /* If the power down delayed work was cancelled above before starting,
++       * then there is no need to go through power up here.
++       */
++      if (codec->power_on) {
++              spin_unlock(&codec->power_lock);
++              return;
++      }
+       trace_hda_power_up(codec);
+       snd_hda_update_power_acct(codec);
+       codec->power_on = 1;
diff --git a/queue-3.5/alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch b/queue-3.5/alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch
new file mode 100644 (file)
index 0000000..1396ea8
--- /dev/null
@@ -0,0 +1,63 @@
+From 9e76e6d031482194a5b24d8e9ab88063fbd6b4b5 Mon Sep 17 00:00:00 2001
+From: Dylan Reid <dgreid@chromium.org>
+Date: Thu, 19 Jul 2012 17:52:58 -0700
+Subject: ALSA: hda - Turn on PIN_OUT from hdmi playback prepare.
+
+From: Dylan Reid <dgreid@chromium.org>
+
+commit 9e76e6d031482194a5b24d8e9ab88063fbd6b4b5 upstream.
+
+Turn on the pin widget's PIN_OUT bit from playback prepare. The pin is
+enabled in open, but is disabled in hdmi_init_pin which is called during
+system resume.  This causes a system suspend/resume during playback to
+mute HDMI/DP. Enabling the pin in prepare instead of open allows calling
+snd_pcm_prepare after a system resume to restore audio.
+
+Signed-off-by: Dylan Reid <dgreid@chromium.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -876,7 +876,6 @@ static int hdmi_pcm_open(struct hda_pcm_
+       struct hdmi_spec_per_pin *per_pin;
+       struct hdmi_eld *eld;
+       struct hdmi_spec_per_cvt *per_cvt = NULL;
+-      int pinctl;
+       /* Validate hinfo */
+       pin_idx = hinfo_to_pin_index(spec, hinfo);
+@@ -912,11 +911,6 @@ static int hdmi_pcm_open(struct hda_pcm_
+       snd_hda_codec_write(codec, per_pin->pin_nid, 0,
+                           AC_VERB_SET_CONNECT_SEL,
+                           mux_idx);
+-      pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
+-                                  AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+-      snd_hda_codec_write(codec, per_pin->pin_nid, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL,
+-                          pinctl | PIN_OUT);
+       snd_hda_spdif_ctls_assign(codec, pin_idx, per_cvt->cvt_nid);
+       /* Initially set the converter's capabilities */
+@@ -1153,11 +1147,17 @@ static int generic_hdmi_playback_pcm_pre
+       struct hdmi_spec *spec = codec->spec;
+       int pin_idx = hinfo_to_pin_index(spec, hinfo);
+       hda_nid_t pin_nid = spec->pins[pin_idx].pin_nid;
++      int pinctl;
+       hdmi_set_channel_count(codec, cvt_nid, substream->runtime->channels);
+       hdmi_setup_audio_infoframe(codec, pin_idx, substream);
++      pinctl = snd_hda_codec_read(codec, pin_nid, 0,
++                                  AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
++      snd_hda_codec_write(codec, pin_nid, 0,
++                          AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl | PIN_OUT);
++
+       return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format);
+ }
diff --git a/queue-3.5/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch b/queue-3.5/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch
new file mode 100644 (file)
index 0000000..ba03e3b
--- /dev/null
@@ -0,0 +1,43 @@
+From 0ff97ebf0804d2e519d578fcb4db03f104d2ca8c Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Fri, 20 Jul 2012 17:29:34 +0100
+Subject: ASoC: dapm: Fix _PRE and _POST events for DAPM performance improvements
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit 0ff97ebf0804d2e519d578fcb4db03f104d2ca8c upstream.
+
+Ever since the DAPM performance improvements we've been marking all widgets
+as not dirty after each DAPM run. Since _PRE and _POST events aren't part
+of the DAPM graph this has rendered them non-functional, they will never be
+marked dirty again and thus will never be run again.
+
+Fix this by skipping them when marking widgets as not dirty.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Acked-by: Liam Girdwood <lrg@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-dapm.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/soc-dapm.c
++++ b/sound/soc/soc-dapm.c
+@@ -1570,7 +1570,15 @@ static int dapm_power_widgets(struct snd
+       }
+       list_for_each_entry(w, &card->widgets, list) {
+-              list_del_init(&w->dirty);
++              switch (w->id) {
++              case snd_soc_dapm_pre:
++              case snd_soc_dapm_post:
++                      /* These widgets always need to be powered */
++                      break;
++              default:
++                      list_del_init(&w->dirty);
++                      break;
++              }
+               if (w->power) {
+                       d = w->dapm;
diff --git a/queue-3.5/asoc-dapm-fix-locking-during-codec-shutdown.patch b/queue-3.5/asoc-dapm-fix-locking-during-codec-shutdown.patch
new file mode 100644 (file)
index 0000000..b9b0bef
--- /dev/null
@@ -0,0 +1,47 @@
+From 01005a729a17ab419f61a366e22f3419e7a2c3fe Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <lrg@ti.com>
+Date: Fri, 6 Jul 2012 16:57:05 +0100
+Subject: ASoC: dapm: Fix locking during codec shutdown
+
+From: Liam Girdwood <lrg@ti.com>
+
+commit 01005a729a17ab419f61a366e22f3419e7a2c3fe upstream.
+
+Codec shutdown performs a DAPM power sequence that might cause conflicts
+and/or race conditions if another stream power event is running simultaneously.
+Use card's dapm mutex to protect any potential race condition between them.
+
+Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
+Signed-off-by: Liam Girdwood <lrg@ti.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-dapm.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/sound/soc/soc-dapm.c
++++ b/sound/soc/soc-dapm.c
+@@ -3538,10 +3538,13 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_free);
+ static void soc_dapm_shutdown_codec(struct snd_soc_dapm_context *dapm)
+ {
++      struct snd_soc_card *card = dapm->card;
+       struct snd_soc_dapm_widget *w;
+       LIST_HEAD(down_list);
+       int powerdown = 0;
++      mutex_lock(&card->dapm_mutex);
++
+       list_for_each_entry(w, &dapm->card->widgets, list) {
+               if (w->dapm != dapm)
+                       continue;
+@@ -3564,6 +3567,8 @@ static void soc_dapm_shutdown_codec(stru
+                       snd_soc_dapm_set_bias_level(dapm,
+                                                   SND_SOC_BIAS_STANDBY);
+       }
++
++      mutex_unlock(&card->dapm_mutex);
+ }
+ /*
diff --git a/queue-3.5/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch b/queue-3.5/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch
new file mode 100644 (file)
index 0000000..45fe29c
--- /dev/null
@@ -0,0 +1,32 @@
+From e4dd76788c7e5b27165890d712c8c4f6f0abd645 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Wed, 11 Jul 2012 19:03:48 +0100
+Subject: ASoC: wm8962: Redo early init of the part on resume
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit e4dd76788c7e5b27165890d712c8c4f6f0abd645 upstream.
+
+Ensure robust startup of the part by going through the reset procedure
+prior to resyncing the full register cache, avoiding potential intermittent
+faults in some designs.
+
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/wm8962.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/codecs/wm8962.c
++++ b/sound/soc/codecs/wm8962.c
+@@ -3722,6 +3722,9 @@ static int wm8962_runtime_resume(struct
+       }
+       regcache_cache_only(wm8962->regmap, false);
++
++      wm8962_reset(wm8962);
++
+       regcache_sync(wm8962->regmap);
+       regmap_update_bits(wm8962->regmap, WM8962_ANTI_POP,
index dcaba3852f54d7b75bd9cf16096cdb9d1f7ac1c5..798706560c9e4197263deb9fd893f62039ba8a96 100644 (file)
@@ -18,3 +18,9 @@ rt2800usb-2001-3c17-is-an-rt3370-device.patch
 arm-dt-tegra-trimslice-enable-usb2-port.patch
 arm-omap2-opp-fix-to-ensure-check-of-right-oppdef-after-bad-one.patch
 arm-dt-tegra-trimslice-add-vbus-gpio-property.patch
+asoc-dapm-fix-locking-during-codec-shutdown.patch
+asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch
+asoc-wm8962-redo-early-init-of-the-part-on-resume.patch
+alsa-hda-add-support-for-realtek-alc282.patch
+alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch
+alsa-hda-don-t-power-up-when-not-powered-down.patch