From 0461a763cb47a26c89aee0aafc81496122468689 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 14 Feb 2011 07:45:39 -0800 Subject: [PATCH] .37 patches --- ...ubwoofer-quirk-for-acer-aspire-8942g.patch | 33 +++++++++++ ...issing-ca-initialization-for-hdmi-dp.patch | 42 +++++++++++++ ...imer-handle-delayed-timer-interrupts.patch | 44 ++++++++++++++ ...d-error-after-multi-component-update.patch | 35 +++++++++++ ...issed-snd_soc_dai_get_drvdata-update.patch | 32 ++++++++++ ...-wm8994-fll-force-a-source-selection.patch | 39 ++++++++++++ ...sleep-takes-milliseconds-not-jiffies.patch | 59 +++++++++++++++++++ queue-2.6.37/series | 8 +++ .../tracing-fix-preempt-count-leak.patch | 53 +++++++++++++++++ 9 files changed, 345 insertions(+) create mode 100644 queue-2.6.37/alsa-hda-add-subwoofer-quirk-for-acer-aspire-8942g.patch create mode 100644 queue-2.6.37/alsa-hda-fix-missing-ca-initialization-for-hdmi-dp.patch create mode 100644 queue-2.6.37/alsa-hrtimer-handle-delayed-timer-interrupts.patch create mode 100644 queue-2.6.37/asoc-blackfin-ac97-fix-build-error-after-multi-component-update.patch create mode 100644 queue-2.6.37/asoc-blackfin-tdm-fix-missed-snd_soc_dai_get_drvdata-update.patch create mode 100644 queue-2.6.37/asoc-when-disabling-wm8994-fll-force-a-source-selection.patch create mode 100644 queue-2.6.37/asoc-wm8990-msleep-takes-milliseconds-not-jiffies.patch create mode 100644 queue-2.6.37/tracing-fix-preempt-count-leak.patch diff --git a/queue-2.6.37/alsa-hda-add-subwoofer-quirk-for-acer-aspire-8942g.patch b/queue-2.6.37/alsa-hda-add-subwoofer-quirk-for-acer-aspire-8942g.patch new file mode 100644 index 00000000000..3a21259d853 --- /dev/null +++ b/queue-2.6.37/alsa-hda-add-subwoofer-quirk-for-acer-aspire-8942g.patch @@ -0,0 +1,33 @@ +From a6c47a85b8e7e4a8c47394607c5e5c43224b0892 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 10 Feb 2011 15:39:19 +0100 +Subject: ALSA: HDA: Add subwoofer quirk for Acer Aspire 8942G + +From: David Henningsson + +commit a6c47a85b8e7e4a8c47394607c5e5c43224b0892 upstream. + +According to the reporter, node 0x15 needs to be muted for subwoofer +to stop sounding. This pin is marked as unused by BIOS, so fix that. + +BugLink: http://bugs.launchpad.net/bugs/715877 + +Reported-by: Hans Peter +Signed-off-by: David Henningsson +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -19380,6 +19380,7 @@ static const struct alc_fixup alc662_fix + }; + + static struct snd_pci_quirk alc662_fixup_tbl[] = { ++ SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), + SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), + SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), + SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), diff --git a/queue-2.6.37/alsa-hda-fix-missing-ca-initialization-for-hdmi-dp.patch b/queue-2.6.37/alsa-hda-fix-missing-ca-initialization-for-hdmi-dp.patch new file mode 100644 index 00000000000..4bf1eed4044 --- /dev/null +++ b/queue-2.6.37/alsa-hda-fix-missing-ca-initialization-for-hdmi-dp.patch @@ -0,0 +1,42 @@ +From 11839aed21881d7edd65dd79f22a8eb18426f672 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 8 Feb 2011 17:25:49 +0100 +Subject: ALSA: hda - Fix missing CA initialization for HDMI/DP + +From: Takashi Iwai + +commit 11839aed21881d7edd65dd79f22a8eb18426f672 upstream. + +The commit 53d7d69d8ffdfa60c5b66cc2e9ee0774aaaef5c0 + ALSA: hdmi - support infoframe for DisplayPort +dropped the initialization of CA field accidentally. +This resulted in only two-channel LPCM mode on Nvidia machines. + +Reference: kernel bug 28592 + https://bugzilla.kernel.org/show_bug.cgi?id=28592 + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_hdmi.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -642,6 +642,7 @@ static void hdmi_setup_audio_infoframe(s + hdmi_ai->ver = 0x01; + hdmi_ai->len = 0x0a; + hdmi_ai->CC02_CT47 = channels - 1; ++ hdmi_ai->CA = ca; + hdmi_checksum_audio_infoframe(hdmi_ai); + } else if (spec->sink_eld[i].conn_type == 1) { /* DisplayPort */ + struct dp_audio_infoframe *dp_ai; +@@ -651,6 +652,7 @@ static void hdmi_setup_audio_infoframe(s + dp_ai->len = 0x1b; + dp_ai->ver = 0x11 << 2; + dp_ai->CC02_CT47 = channels - 1; ++ dp_ai->CA = ca; + } else { + snd_printd("HDMI: unknown connection type at pin %d\n", + pin_nid); diff --git a/queue-2.6.37/alsa-hrtimer-handle-delayed-timer-interrupts.patch b/queue-2.6.37/alsa-hrtimer-handle-delayed-timer-interrupts.patch new file mode 100644 index 00000000000..0571dd01cfc --- /dev/null +++ b/queue-2.6.37/alsa-hrtimer-handle-delayed-timer-interrupts.patch @@ -0,0 +1,44 @@ +From b1d4f7f4bdcf9915c41ff8cfc4425c84dabb1fde Mon Sep 17 00:00:00 2001 +From: Clemens Ladisch +Date: Thu, 10 Feb 2011 16:15:44 +0100 +Subject: ALSA: hrtimer: handle delayed timer interrupts + +From: Clemens Ladisch + +commit b1d4f7f4bdcf9915c41ff8cfc4425c84dabb1fde upstream. + +If a timer interrupt was delayed too much, hrtimer_forward_now() will +forward the timer expiry more than once. When this happens, the +additional number of elapsed ALSA timer ticks must be passed to +snd_timer_interrupt() to prevent the ALSA timer from falling behind. + +This mostly fixes MIDI slowdown problems on highly-loaded systems with +badly behaved interrupt handlers. + +Signed-off-by: Clemens Ladisch +Reported-and-tested-by: Arthur Marsh +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/core/hrtimer.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/sound/core/hrtimer.c ++++ b/sound/core/hrtimer.c +@@ -45,12 +45,13 @@ static enum hrtimer_restart snd_hrtimer_ + { + struct snd_hrtimer *stime = container_of(hrt, struct snd_hrtimer, hrt); + struct snd_timer *t = stime->timer; ++ unsigned long oruns; + + if (!atomic_read(&stime->running)) + return HRTIMER_NORESTART; + +- hrtimer_forward_now(hrt, ns_to_ktime(t->sticks * resolution)); +- snd_timer_interrupt(stime->timer, t->sticks); ++ oruns = hrtimer_forward_now(hrt, ns_to_ktime(t->sticks * resolution)); ++ snd_timer_interrupt(stime->timer, t->sticks * oruns); + + if (!atomic_read(&stime->running)) + return HRTIMER_NORESTART; diff --git a/queue-2.6.37/asoc-blackfin-ac97-fix-build-error-after-multi-component-update.patch b/queue-2.6.37/asoc-blackfin-ac97-fix-build-error-after-multi-component-update.patch new file mode 100644 index 00000000000..9b8cde2af45 --- /dev/null +++ b/queue-2.6.37/asoc-blackfin-ac97-fix-build-error-after-multi-component-update.patch @@ -0,0 +1,35 @@ +From e9c2048915048d605fd76539ddd96f00d593e1eb Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 11 Jan 2011 19:57:33 -0500 +Subject: ASoC: Blackfin AC97: fix build error after multi-component update + +From: Mike Frysinger + +commit e9c2048915048d605fd76539ddd96f00d593e1eb upstream. + +We need to tweak how we query the active capture/playback state after +the recent overhauls of common code. + +Signed-off-by: Mike Frysinger +Acked-by: Liam Girdwood +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/blackfin/bf5xx-ac97.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/soc/blackfin/bf5xx-ac97.c ++++ b/sound/soc/blackfin/bf5xx-ac97.c +@@ -260,9 +260,9 @@ static int bf5xx_ac97_suspend(struct snd + pr_debug("%s : sport %d\n", __func__, dai->id); + if (!dai->active) + return 0; +- if (dai->capture.active) ++ if (dai->capture_active) + sport_rx_stop(sport); +- if (dai->playback.active) ++ if (dai->playback_active) + sport_tx_stop(sport); + return 0; + } diff --git a/queue-2.6.37/asoc-blackfin-tdm-fix-missed-snd_soc_dai_get_drvdata-update.patch b/queue-2.6.37/asoc-blackfin-tdm-fix-missed-snd_soc_dai_get_drvdata-update.patch new file mode 100644 index 00000000000..59d30f98ff7 --- /dev/null +++ b/queue-2.6.37/asoc-blackfin-tdm-fix-missed-snd_soc_dai_get_drvdata-update.patch @@ -0,0 +1,32 @@ +From 15d2e22b820bad62854d6ad99d8af8320adf4a91 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 11 Jan 2011 23:08:19 -0500 +Subject: ASoC: Blackfin TDM: fix missed snd_soc_dai_get_drvdata update + +From: Mike Frysinger + +commit 15d2e22b820bad62854d6ad99d8af8320adf4a91 upstream. + +One spot was missed in this driver when converting from +snd_soc_dai.private_data to snd_soc_dai_get_drvdata. + +Signed-off-by: Mike Frysinger +Acked-by: Liam Girdwood +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/blackfin/bf5xx-tdm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/blackfin/bf5xx-tdm.c ++++ b/sound/soc/blackfin/bf5xx-tdm.c +@@ -210,7 +210,7 @@ static int bf5xx_tdm_set_channel_map(str + #ifdef CONFIG_PM + static int bf5xx_tdm_suspend(struct snd_soc_dai *dai) + { +- struct sport_device *sport = dai->private_data; ++ struct sport_device *sport = snd_soc_dai_get_drvdata(dai); + + if (!dai->active) + return 0; diff --git a/queue-2.6.37/asoc-when-disabling-wm8994-fll-force-a-source-selection.patch b/queue-2.6.37/asoc-when-disabling-wm8994-fll-force-a-source-selection.patch new file mode 100644 index 00000000000..a7e950396da --- /dev/null +++ b/queue-2.6.37/asoc-when-disabling-wm8994-fll-force-a-source-selection.patch @@ -0,0 +1,39 @@ +From 4514e8997fbefd5befd6176ac9785e287b4daed4 Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Fri, 3 Dec 2010 16:02:10 +0000 +Subject: ASoC: When disabling WM8994 FLL force a source selection + +From: Mark Brown + +commit 4514e8997fbefd5befd6176ac9785e287b4daed4 upstream. + +When we disable the WM8994 FLL code path sharing means that we end up +writing out a configuration. Currently this is the currently active +input and output frequency (which causes snd_soc_update_bits() to +suppress actual writes both immediately and in the common case where +we reenable the same configuration later) but we allow machine drivers +to pass through a source of zero. Since the register values written +are one less than the source constants this causes corruption of other +bitfields in the register. + +Fix this by using the most recently configured FLL source when none is +provided. + +Signed-off-by: Mark Brown +Acked-by: Liam Girdwood +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm8994.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/soc/codecs/wm8994.c ++++ b/sound/soc/codecs/wm8994.c +@@ -2930,6 +2930,7 @@ static int _wm8994_set_fll(struct snd_so + /* Allow no source specification when stopping */ + if (freq_out) + return -EINVAL; ++ src = wm8994->fll[id].src; + break; + case WM8994_FLL_SRC_MCLK1: + case WM8994_FLL_SRC_MCLK2: diff --git a/queue-2.6.37/asoc-wm8990-msleep-takes-milliseconds-not-jiffies.patch b/queue-2.6.37/asoc-wm8990-msleep-takes-milliseconds-not-jiffies.patch new file mode 100644 index 00000000000..998e9a2f3a2 --- /dev/null +++ b/queue-2.6.37/asoc-wm8990-msleep-takes-milliseconds-not-jiffies.patch @@ -0,0 +1,59 @@ +From 7ebcf5d6021a696680ee77d9162a2edec2d671dd Mon Sep 17 00:00:00 2001 +From: Dimitris Papastamos +Date: Fri, 14 Jan 2011 15:59:13 +0000 +Subject: ASoC: WM8990: msleep() takes milliseconds not jiffies + +From: Dimitris Papastamos + +commit 7ebcf5d6021a696680ee77d9162a2edec2d671dd upstream. + +Signed-off-by: Dimitris Papastamos +Acked-by: Liam Girdwood +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm8990.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/sound/soc/codecs/wm8990.c ++++ b/sound/soc/codecs/wm8990.c +@@ -1183,7 +1183,7 @@ static int wm8990_set_bias_level(struct + WM8990_VMIDTOG); + + /* Delay to allow output caps to discharge */ +- msleep(msecs_to_jiffies(300)); ++ msleep(300); + + /* Disable VMIDTOG */ + snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST | +@@ -1195,17 +1195,17 @@ static int wm8990_set_bias_level(struct + /* Enable outputs */ + snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1b00); + +- msleep(msecs_to_jiffies(50)); ++ msleep(50); + + /* Enable VMID at 2x50k */ + snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f02); + +- msleep(msecs_to_jiffies(100)); ++ msleep(100); + + /* Enable VREF */ + snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f03); + +- msleep(msecs_to_jiffies(600)); ++ msleep(600); + + /* Enable BUFIOEN */ + snd_soc_write(codec, WM8990_ANTIPOP2, WM8990_SOFTST | +@@ -1250,7 +1250,7 @@ static int wm8990_set_bias_level(struct + /* Disable VMID */ + snd_soc_write(codec, WM8990_POWER_MANAGEMENT_1, 0x1f01); + +- msleep(msecs_to_jiffies(300)); ++ msleep(300); + + /* Enable all output discharge bits */ + snd_soc_write(codec, WM8990_ANTIPOP1, WM8990_DIS_LLINE | diff --git a/queue-2.6.37/series b/queue-2.6.37/series index 45611721dc7..a80e7e623fc 100644 --- a/queue-2.6.37/series +++ b/queue-2.6.37/series @@ -99,3 +99,11 @@ input-i8042-introduce-notimeout-blacklist-for-dell-vostro-v13.patch input-bcm5974-add-support-for-macbookair3.patch input-rc-keymap-return-key_reserved-for-unknown-mappings.patch hwmon-lm63-consider-lm64-temperature-offset.patch +tracing-fix-preempt-count-leak.patch +alsa-hrtimer-handle-delayed-timer-interrupts.patch +alsa-hda-fix-missing-ca-initialization-for-hdmi-dp.patch +alsa-hda-add-subwoofer-quirk-for-acer-aspire-8942g.patch +asoc-when-disabling-wm8994-fll-force-a-source-selection.patch +asoc-wm8990-msleep-takes-milliseconds-not-jiffies.patch +asoc-blackfin-ac97-fix-build-error-after-multi-component-update.patch +asoc-blackfin-tdm-fix-missed-snd_soc_dai_get_drvdata-update.patch diff --git a/queue-2.6.37/tracing-fix-preempt-count-leak.patch b/queue-2.6.37/tracing-fix-preempt-count-leak.patch new file mode 100644 index 00000000000..836039464b0 --- /dev/null +++ b/queue-2.6.37/tracing-fix-preempt-count-leak.patch @@ -0,0 +1,53 @@ +From 1dbd1951f39e13da579ffe879cce19586d0462de Mon Sep 17 00:00:00 2001 +From: Li Zefan +Date: Thu, 9 Dec 2010 15:47:56 +0800 +Subject: tracing: Fix preempt count leak + +From: Li Zefan + +commit 1dbd1951f39e13da579ffe879cce19586d0462de upstream. + +While running my ftrace stress test, this showed up: + +BUG: sleeping function called from invalid context at mm/mmap.c:233 +... +note: cat[3293] exited with preempt_count 1 + +The bug was introduced by commit 91e86e560d0b3ce4c5fc64fd2bbb99f856a30a4e +("tracing: Fix recursive user stack trace") + +Signed-off-by: Li Zefan +LKML-Reference: <4D0089AC.1020802@cn.fujitsu.com> +Signed-off-by: Steven Rostedt +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/trace/trace.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1313,12 +1313,10 @@ ftrace_trace_userstack(struct ring_buffe + + __this_cpu_inc(user_stack_count); + +- +- + event = trace_buffer_lock_reserve(buffer, TRACE_USER_STACK, + sizeof(*entry), flags, pc); + if (!event) +- return; ++ goto out_drop_count; + entry = ring_buffer_event_data(event); + + entry->tgid = current->tgid; +@@ -1333,8 +1331,8 @@ ftrace_trace_userstack(struct ring_buffe + if (!filter_check_discard(call, entry, buffer, event)) + ring_buffer_unlock_commit(buffer, event); + ++ out_drop_count: + __this_cpu_dec(user_stack_count); +- + out: + preempt_enable(); + } -- 2.47.3