]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Aug 2012 15:35:04 +0000 (08:35 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Aug 2012 15:35:04 +0000 (08:35 -0700)
added patches:
alsa-hda-add-support-for-realtek-alc282.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.4/alsa-hda-add-support-for-realtek-alc282.patch [new file with mode: 0644]
queue-3.4/alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch [new file with mode: 0644]
queue-3.4/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch [new file with mode: 0644]
queue-3.4/asoc-dapm-fix-locking-during-codec-shutdown.patch [new file with mode: 0644]
queue-3.4/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/alsa-hda-add-support-for-realtek-alc282.patch b/queue-3.4/alsa-hda-add-support-for-realtek-alc282.patch
new file mode 100644 (file)
index 0000000..4c7021e
--- /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
+@@ -6977,6 +6977,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.4/alsa-hda-turn-on-pin_out-from-hdmi-playback-prepare.patch b/queue-3.4/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.4/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch b/queue-3.4/asoc-dapm-fix-_pre-and-_post-events-for-dapm-performance-improvements.patch
new file mode 100644 (file)
index 0000000..ed97712
--- /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
+@@ -1442,7 +1442,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.4/asoc-dapm-fix-locking-during-codec-shutdown.patch b/queue-3.4/asoc-dapm-fix-locking-during-codec-shutdown.patch
new file mode 100644 (file)
index 0000000..74428b8
--- /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
+@@ -3210,10 +3210,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;
+@@ -3236,6 +3239,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.4/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch b/queue-3.4/asoc-wm8962-redo-early-init-of-the-part-on-resume.patch
new file mode 100644 (file)
index 0000000..b95fe99
--- /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
+@@ -3710,6 +3710,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 53268a1ae2846879aa09361c0ef8a94de5971405..dc3d081da3b6b2e94f9ac34ac7482e834fcd8dbc 100644 (file)
@@ -14,3 +14,8 @@ scsi-fix-device-removal-null-pointer-dereference.patch
 scsi-avoid-dangling-pointer-in-scsi_requeue_command.patch
 rt2800usb-2001-3c17-is-an-rt3370-device.patch
 arm-omap2-opp-fix-to-ensure-check-of-right-oppdef-after-bad-one.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