From: Greg Kroah-Hartman Date: Tue, 15 Jan 2013 01:18:39 +0000 (-0800) Subject: 3.7-stable patches X-Git-Tag: v3.7.3~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f2ef4fc15a099a8af429db6426b55bad81613c7d;p=thirdparty%2Fkernel%2Fstable-queue.git 3.7-stable patches added patches: alsa-hda-disable-runtime-d3-for-intel-cpt-co.patch alsa-pxa27x-fix-ac97-cold-reset.patch alsa-pxa27x-fix-ac97-warm-reset.patch asoc-pcm-allow-backend-hardware-to-be-freed-in-pause-state.patch asoc-sta529-fix-update-register-bits-in-sta529_set_dai_fmt.patch asoc-wm2000-fix-sense-of-speech-clarity-enable.patch asoc-wm2200-fix-setting-dai-format-in-wm2200_set_fmt.patch asoc-wm2200-remove-dsp-b-and-left-justified-aif-modes.patch asoc-wm5100-remove-dsp-b-and-left-justified-formats.patch revert-alsa-hda-shut-up-pins-at-power-saving-mode-with-conexnat-codecs.patch udldrmfb-fix-edid-not-working-with-monitors-with-edid.patch udldrmfb-udl_get_edid-drop-unneeded-i.patch udldrmfb-udl_get_edid-usb_control_msg-buffer-must-not-be-on-the-stack.patch vfs-add-missing-virtual-cache-flush-after-editing-partial-pages.patch --- diff --git a/queue-3.7/alsa-hda-disable-runtime-d3-for-intel-cpt-co.patch b/queue-3.7/alsa-hda-disable-runtime-d3-for-intel-cpt-co.patch new file mode 100644 index 00000000000..678c86fd607 --- /dev/null +++ b/queue-3.7/alsa-hda-disable-runtime-d3-for-intel-cpt-co.patch @@ -0,0 +1,57 @@ +From d7dab4dbbb2d1b0c903378d6bade2e4ae161804e Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 8 Jan 2013 13:51:30 +0100 +Subject: ALSA: hda - Disable runtime D3 for Intel CPT & co + +From: Takashi Iwai + +commit d7dab4dbbb2d1b0c903378d6bade2e4ae161804e upstream. + +We've got a few bug reports that the runtime D3 results in the dead +HD-audio controller. It seems that the problem is in a deeper level +than the sound driver itself, so as a temporal solution, disable the +feature for these controllers again. + +Reported-and-tested-by: Vincent Blut +Reported-and-tested-by: Maurizio Avogadro +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_intel.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -559,9 +559,12 @@ enum { + #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ + + /* quirks for Intel PCH */ +-#define AZX_DCAPS_INTEL_PCH \ ++#define AZX_DCAPS_INTEL_PCH_NOPM \ + (AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE | \ +- AZX_DCAPS_COUNT_LPIB_DELAY | AZX_DCAPS_PM_RUNTIME) ++ AZX_DCAPS_COUNT_LPIB_DELAY) ++ ++#define AZX_DCAPS_INTEL_PCH \ ++ (AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_PM_RUNTIME) + + /* quirks for ATI SB / AMD Hudson */ + #define AZX_DCAPS_PRESET_ATI_SB \ +@@ -3448,13 +3451,13 @@ static void __devexit azx_remove(struct + static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { + /* CPT */ + { PCI_DEVICE(0x8086, 0x1c20), +- .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, ++ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM }, + /* PBG */ + { PCI_DEVICE(0x8086, 0x1d20), +- .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, ++ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM }, + /* Panther Point */ + { PCI_DEVICE(0x8086, 0x1e20), +- .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, ++ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM }, + /* Lynx Point */ + { PCI_DEVICE(0x8086, 0x8c20), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, diff --git a/queue-3.7/alsa-pxa27x-fix-ac97-cold-reset.patch b/queue-3.7/alsa-pxa27x-fix-ac97-cold-reset.patch new file mode 100644 index 00000000000..e6d0057cae2 --- /dev/null +++ b/queue-3.7/alsa-pxa27x-fix-ac97-cold-reset.patch @@ -0,0 +1,54 @@ +From 41b645c8624df6ace020a8863ad1449d69140f7d Mon Sep 17 00:00:00 2001 +From: Mike Dunn +Date: Mon, 7 Jan 2013 13:55:12 -0800 +Subject: ALSA: pxa27x: fix ac97 cold reset + +From: Mike Dunn + +commit 41b645c8624df6ace020a8863ad1449d69140f7d upstream. + +Cold reset on the pxa27x currently fails and + + pxa2xx_ac97_try_cold_reset: cold reset timeout (GSR=0x44) + +appears in the kernel log. Through trial-and-error (the pxa270 developer's +manual is mostly incoherent on the topic of ac97 reset), I got cold reset to +complete by setting the WARM_RST bit in the GCR register (and later noticed that +pxa3xx does this for cold reset as well). Also, a timeout loop is needed to +wait for the reset to complete. + +Tested on a palm treo 680 machine. + +Signed-off-by: Mike Dunn +Acked-by: Igor Grinberg +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/arm/pxa2xx-ac97-lib.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/sound/arm/pxa2xx-ac97-lib.c ++++ b/sound/arm/pxa2xx-ac97-lib.c +@@ -148,6 +148,8 @@ static inline void pxa_ac97_warm_pxa27x( + + static inline void pxa_ac97_cold_pxa27x(void) + { ++ unsigned int timeout; ++ + GCR &= GCR_COLD_RST; /* clear everything but nCRST */ + GCR &= ~GCR_COLD_RST; /* then assert nCRST */ + +@@ -157,8 +159,10 @@ static inline void pxa_ac97_cold_pxa27x( + clk_enable(ac97conf_clk); + udelay(5); + clk_disable(ac97conf_clk); +- GCR = GCR_COLD_RST; +- udelay(50); ++ GCR = GCR_COLD_RST | GCR_WARM_RST; ++ timeout = 100; /* wait for the codec-ready bit to be set */ ++ while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--) ++ mdelay(1); + } + #endif + diff --git a/queue-3.7/alsa-pxa27x-fix-ac97-warm-reset.patch b/queue-3.7/alsa-pxa27x-fix-ac97-warm-reset.patch new file mode 100644 index 00000000000..8c06d5116d0 --- /dev/null +++ b/queue-3.7/alsa-pxa27x-fix-ac97-warm-reset.patch @@ -0,0 +1,104 @@ +From 3b4bc7bccc7857274705b05cf81a0c72cfd0b0dd Mon Sep 17 00:00:00 2001 +From: Mike Dunn +Date: Mon, 7 Jan 2013 13:55:13 -0800 +Subject: ALSA: pxa27x: fix ac97 warm reset + +From: Mike Dunn + +commit 3b4bc7bccc7857274705b05cf81a0c72cfd0b0dd upstream. + +This patch fixes some code that implements a work-around to a hardware bug in +the ac97 controller on the pxa27x. A bug in the controller's warm reset +functionality requires that the mfp used by the controller as the AC97_nRESET +line be temporarily reconfigured as a generic output gpio (AF0) and manually +held high for the duration of the warm reset cycle. This is what was done in +the original code, but it was broken long ago by commit fb1bf8cd + ([ARM] pxa: introduce processor specific pxa27x_assert_ac97reset()) +which changed the mfp to a GPIO input instead of a high output. + +The fix requires the ac97 controller to obtain the gpio via gpio_request_one(), +with arguments that configure the gpio as an output initially driven high. + +Tested on a palm treo 680 machine. Reportedly, this broken code only prevents a +warm reset on hardware that lacks a pull-up on the line, which appears to be the +case for me. + +Signed-off-by: Mike Dunn +Signed-off-by: Igor Grinberg +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-pxa/include/mach/mfp-pxa27x.h | 3 +++ + arch/arm/mach-pxa/pxa27x.c | 4 ++-- + sound/arm/pxa2xx-ac97-lib.c | 18 +++++++++++++++++- + 3 files changed, 22 insertions(+), 3 deletions(-) + +--- a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h ++++ b/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +@@ -463,6 +463,9 @@ + GPIO76_LCD_PCLK, \ + GPIO77_LCD_BIAS + ++/* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */ ++#define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT) ++#define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT) + + extern int keypad_set_wake(unsigned int on); + #endif /* __ASM_ARCH_MFP_PXA27X_H */ +--- a/arch/arm/mach-pxa/pxa27x.c ++++ b/arch/arm/mach-pxa/pxa27x.c +@@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void) + EXPORT_SYMBOL(pxa27x_clear_otgph); + + static unsigned long ac97_reset_config[] = { +- GPIO113_GPIO, ++ GPIO113_AC97_nRESET_GPIO_HIGH, + GPIO113_AC97_nRESET, +- GPIO95_GPIO, ++ GPIO95_AC97_nRESET_GPIO_HIGH, + GPIO95_AC97_nRESET, + }; + +--- a/sound/arm/pxa2xx-ac97-lib.c ++++ b/sound/arm/pxa2xx-ac97-lib.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -344,8 +345,21 @@ int __devinit pxa2xx_ac97_hw_probe(struc + } + + if (cpu_is_pxa27x()) { +- /* Use GPIO 113 as AC97 Reset on Bulverde */ ++ /* ++ * This gpio is needed for a work-around to a bug in the ac97 ++ * controller during warm reset. The direction and level is set ++ * here so that it is an output driven high when switching from ++ * AC97_nRESET alt function to generic gpio. ++ */ ++ ret = gpio_request_one(reset_gpio, GPIOF_OUT_INIT_HIGH, ++ "pxa27x ac97 reset"); ++ if (ret < 0) { ++ pr_err("%s: gpio_request_one() failed: %d\n", ++ __func__, ret); ++ goto err_conf; ++ } + pxa27x_assert_ac97reset(reset_gpio, 0); ++ + ac97conf_clk = clk_get(&dev->dev, "AC97CONFCLK"); + if (IS_ERR(ac97conf_clk)) { + ret = PTR_ERR(ac97conf_clk); +@@ -388,6 +402,8 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_probe); + + void pxa2xx_ac97_hw_remove(struct platform_device *dev) + { ++ if (cpu_is_pxa27x()) ++ gpio_free(reset_gpio); + GCR |= GCR_ACLINK_OFF; + free_irq(IRQ_AC97, NULL); + if (ac97conf_clk) { diff --git a/queue-3.7/asoc-pcm-allow-backend-hardware-to-be-freed-in-pause-state.patch b/queue-3.7/asoc-pcm-allow-backend-hardware-to-be-freed-in-pause-state.patch new file mode 100644 index 00000000000..eb2b06936be --- /dev/null +++ b/queue-3.7/asoc-pcm-allow-backend-hardware-to-be-freed-in-pause-state.patch @@ -0,0 +1,35 @@ +From 08b27848da620f206a8b6d80f26184485dd7aa40 Mon Sep 17 00:00:00 2001 +From: Patrick Lai +Date: Wed, 19 Dec 2012 19:36:02 -0800 +Subject: ASoC: pcm: allow backend hardware to be freed in pause state + +From: Patrick Lai + +commit 08b27848da620f206a8b6d80f26184485dd7aa40 upstream. + +When front-end PCM session is in paused state, back-end +PCM session will be put in paused state as well if given +front-end PCM session is the only client of given back-end. +Then, application closes front-end PCM session, DPCM +framework will not allow back-end enters HW_FREE state +so back-end will never get shutdown completely. + +Signed-off-by: Patrick Lai +Acked-by: Liam Girdwood +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/soc-pcm.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/soc/soc-pcm.c ++++ b/sound/soc/soc-pcm.c +@@ -1240,6 +1240,7 @@ static int dpcm_be_dai_hw_free(struct sn + if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_PARAMS) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PREPARE) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_FREE) && ++ (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP)) + continue; + diff --git a/queue-3.7/asoc-sta529-fix-update-register-bits-in-sta529_set_dai_fmt.patch b/queue-3.7/asoc-sta529-fix-update-register-bits-in-sta529_set_dai_fmt.patch new file mode 100644 index 00000000000..505128b2a7d --- /dev/null +++ b/queue-3.7/asoc-sta529-fix-update-register-bits-in-sta529_set_dai_fmt.patch @@ -0,0 +1,61 @@ +From ad1937cdd59c412097ec2bb8f38c12a5640f1f9a Mon Sep 17 00:00:00 2001 +From: Axel Lin +Date: Thu, 20 Dec 2012 16:17:25 +0800 +Subject: ASoC: sta529: Fix update register bits in sta529_set_dai_fmt + +From: Axel Lin + +commit ad1937cdd59c412097ec2bb8f38c12a5640f1f9a upstream. + +Both the mask and mode settings are wrong in current code. + +According to the datasheet: + +S2PCFG0 (0x0A) +BIT[3:1] DATA_FORMAT + serial interface protocol format: + 000: left Justified + 001: I2S (default) + 010: right justified + 100: PCM no delay + 101: PCM delay + 111: DSP + +Thus fixes the defines for LEFT_J_DATA_FORMAT, I2S_DATA_FORMAT, and +RIGHT_J_DATA_FORMAT. +Also adds define for DATA_FORMAT_MSK. + +Signed-off-by: Axel Lin +Acked-by: Rajeev Kumar +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/sta529.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/sound/soc/codecs/sta529.c ++++ b/sound/soc/codecs/sta529.c +@@ -74,9 +74,10 @@ + SNDRV_PCM_FMTBIT_S32_LE) + #define S2PC_VALUE 0x98 + #define CLOCK_OUT 0x60 +-#define LEFT_J_DATA_FORMAT 0x10 +-#define I2S_DATA_FORMAT 0x12 +-#define RIGHT_J_DATA_FORMAT 0x14 ++#define DATA_FORMAT_MSK 0x0E ++#define LEFT_J_DATA_FORMAT 0x00 ++#define I2S_DATA_FORMAT 0x02 ++#define RIGHT_J_DATA_FORMAT 0x04 + #define CODEC_MUTE_VAL 0x80 + + #define POWER_CNTLMSAK 0x40 +@@ -289,7 +290,7 @@ static int sta529_set_dai_fmt(struct snd + return -EINVAL; + } + +- snd_soc_update_bits(codec, STA529_S2PCFG0, 0x0D, mode); ++ snd_soc_update_bits(codec, STA529_S2PCFG0, DATA_FORMAT_MSK, mode); + + return 0; + } diff --git a/queue-3.7/asoc-wm2000-fix-sense-of-speech-clarity-enable.patch b/queue-3.7/asoc-wm2000-fix-sense-of-speech-clarity-enable.patch new file mode 100644 index 00000000000..68e25f9c837 --- /dev/null +++ b/queue-3.7/asoc-wm2000-fix-sense-of-speech-clarity-enable.patch @@ -0,0 +1,30 @@ +From 267f8fa2e1eef0612b2007e1f1846bcbc35cc1fa Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Fri, 4 Jan 2013 21:18:12 +0000 +Subject: ASoC: wm2000: Fix sense of speech clarity enable + +From: Mark Brown + +commit 267f8fa2e1eef0612b2007e1f1846bcbc35cc1fa upstream. + +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm2000.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/soc/codecs/wm2000.c ++++ b/sound/soc/codecs/wm2000.c +@@ -209,9 +209,9 @@ static int wm2000_power_up(struct i2c_cl + + ret = wm2000_read(i2c, WM2000_REG_SPEECH_CLARITY); + if (wm2000->speech_clarity) +- ret &= ~WM2000_SPEECH_CLARITY; +- else + ret |= WM2000_SPEECH_CLARITY; ++ else ++ ret &= ~WM2000_SPEECH_CLARITY; + wm2000_write(i2c, WM2000_REG_SPEECH_CLARITY, ret); + + wm2000_write(i2c, WM2000_REG_SYS_START0, 0x33); diff --git a/queue-3.7/asoc-wm2200-fix-setting-dai-format-in-wm2200_set_fmt.patch b/queue-3.7/asoc-wm2200-fix-setting-dai-format-in-wm2200_set_fmt.patch new file mode 100644 index 00000000000..4d2fcca6cc8 --- /dev/null +++ b/queue-3.7/asoc-wm2200-fix-setting-dai-format-in-wm2200_set_fmt.patch @@ -0,0 +1,35 @@ +From 2a5f431592343b78896013b055582f94c12a5049 Mon Sep 17 00:00:00 2001 +From: Axel Lin +Date: Fri, 21 Dec 2012 16:28:37 +0800 +Subject: ASoC: wm2200: Fix setting dai format in wm2200_set_fmt + +From: Axel Lin + +commit 2a5f431592343b78896013b055582f94c12a5049 upstream. + +According to the defines in wm2200.h: +/* + * R1284 (0x504) - Audio IF 1_5 + */ + +We should not left shift 1 bit for fmt_val when setting dai format. + +Signed-off-by: Axel Lin +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm2200.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/codecs/wm2200.c ++++ b/sound/soc/codecs/wm2200.c +@@ -1440,7 +1440,7 @@ static int wm2200_set_fmt(struct snd_soc + WM2200_AIF1TX_LRCLK_MSTR | WM2200_AIF1TX_LRCLK_INV, + lrclk); + snd_soc_update_bits(codec, WM2200_AUDIO_IF_1_5, +- WM2200_AIF1_FMT_MASK << 1, fmt_val << 1); ++ WM2200_AIF1_FMT_MASK, fmt_val); + + return 0; + } diff --git a/queue-3.7/asoc-wm2200-remove-dsp-b-and-left-justified-aif-modes.patch b/queue-3.7/asoc-wm2200-remove-dsp-b-and-left-justified-aif-modes.patch new file mode 100644 index 00000000000..2d79b3e3c92 --- /dev/null +++ b/queue-3.7/asoc-wm2200-remove-dsp-b-and-left-justified-aif-modes.patch @@ -0,0 +1,36 @@ +From 0cc411b934c4317b363d1af993549f391852b980 Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Fri, 4 Jan 2013 10:48:10 +0000 +Subject: ASoC: wm2200: Remove DSP B and left justified AIF modes + +From: Mark Brown + +commit 0cc411b934c4317b363d1af993549f391852b980 upstream. + +These are not supported. + +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm2200.c | 6 ------ + 1 file changed, 6 deletions(-) + +--- a/sound/soc/codecs/wm2200.c ++++ b/sound/soc/codecs/wm2200.c +@@ -1380,15 +1380,9 @@ static int wm2200_set_fmt(struct snd_soc + case SND_SOC_DAIFMT_DSP_A: + fmt_val = 0; + break; +- case SND_SOC_DAIFMT_DSP_B: +- fmt_val = 1; +- break; + case SND_SOC_DAIFMT_I2S: + fmt_val = 2; + break; +- case SND_SOC_DAIFMT_LEFT_J: +- fmt_val = 3; +- break; + default: + dev_err(codec->dev, "Unsupported DAI format %d\n", + fmt & SND_SOC_DAIFMT_FORMAT_MASK); diff --git a/queue-3.7/asoc-wm5100-remove-dsp-b-and-left-justified-formats.patch b/queue-3.7/asoc-wm5100-remove-dsp-b-and-left-justified-formats.patch new file mode 100644 index 00000000000..e6850002659 --- /dev/null +++ b/queue-3.7/asoc-wm5100-remove-dsp-b-and-left-justified-formats.patch @@ -0,0 +1,36 @@ +From 5f960294e2031d12f10c8488c3446fecbf59628d Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Fri, 4 Jan 2013 21:06:08 +0000 +Subject: ASoC: wm5100: Remove DSP B and left justified formats + +From: Mark Brown + +commit 5f960294e2031d12f10c8488c3446fecbf59628d upstream. + +These are not supported + +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm5100.c | 6 ------ + 1 file changed, 6 deletions(-) + +--- a/sound/soc/codecs/wm5100.c ++++ b/sound/soc/codecs/wm5100.c +@@ -1279,15 +1279,9 @@ static int wm5100_set_fmt(struct snd_soc + case SND_SOC_DAIFMT_DSP_A: + mask = 0; + break; +- case SND_SOC_DAIFMT_DSP_B: +- mask = 1; +- break; + case SND_SOC_DAIFMT_I2S: + mask = 2; + break; +- case SND_SOC_DAIFMT_LEFT_J: +- mask = 3; +- break; + default: + dev_err(codec->dev, "Unsupported DAI format %d\n", + fmt & SND_SOC_DAIFMT_FORMAT_MASK); diff --git a/queue-3.7/revert-alsa-hda-shut-up-pins-at-power-saving-mode-with-conexnat-codecs.patch b/queue-3.7/revert-alsa-hda-shut-up-pins-at-power-saving-mode-with-conexnat-codecs.patch new file mode 100644 index 00000000000..5f9f1f2e2c4 --- /dev/null +++ b/queue-3.7/revert-alsa-hda-shut-up-pins-at-power-saving-mode-with-conexnat-codecs.patch @@ -0,0 +1,63 @@ +From 7ed4165e2d01bdbbb4c1086eb73eadf0f64cbbf0 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 19 Dec 2012 09:44:47 +0100 +Subject: Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat codecs" + +From: David Henningsson + +commit 7ed4165e2d01bdbbb4c1086eb73eadf0f64cbbf0 upstream. + +This reverts commit 697c373e34613609cb5450f98b91fefb6e910588. + +The original patch was meant to remove clicking, but in fact caused even +more clicking instead. + +Thanks to c4pp4 for doing most of the work with this bug. + +BugLink: https://bugs.launchpad.net/bugs/886975 +Signed-off-by: David Henningsson +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_conexant.c | 16 ---------------- + 1 file changed, 16 deletions(-) + +--- a/sound/pci/hda/patch_conexant.c ++++ b/sound/pci/hda/patch_conexant.c +@@ -553,24 +553,12 @@ static int conexant_build_controls(struc + return 0; + } + +-#ifdef CONFIG_PM +-static int conexant_suspend(struct hda_codec *codec) +-{ +- snd_hda_shutup_pins(codec); +- return 0; +-} +-#endif +- + static const struct hda_codec_ops conexant_patch_ops = { + .build_controls = conexant_build_controls, + .build_pcms = conexant_build_pcms, + .init = conexant_init, + .free = conexant_free, + .set_power_state = conexant_set_power, +-#ifdef CONFIG_PM +- .suspend = conexant_suspend, +-#endif +- .reboot_notify = snd_hda_shutup_pins, + }; + + #ifdef CONFIG_SND_HDA_INPUT_BEEP +@@ -4393,10 +4381,6 @@ static const struct hda_codec_ops cx_aut + .init = cx_auto_init, + .free = conexant_free, + .unsol_event = snd_hda_jack_unsol_event, +-#ifdef CONFIG_PM +- .suspend = conexant_suspend, +-#endif +- .reboot_notify = snd_hda_shutup_pins, + }; + + /* diff --git a/queue-3.7/series b/queue-3.7/series index ded25ac2ddb..2ac8ad667c9 100644 --- a/queue-3.7/series +++ b/queue-3.7/series @@ -123,3 +123,17 @@ hid-add-quirk-for-freescale-i.mx23-rom-recovery.patch asoc-arizona-correct-fll-source-definitions.patch asoc-arizona-do-proper-shift-for-setting-aif-rate.patch asoc-arizona-remove-dsp-b-and-left-justified-aif-modes.patch +asoc-wm2000-fix-sense-of-speech-clarity-enable.patch +asoc-wm2200-fix-setting-dai-format-in-wm2200_set_fmt.patch +asoc-wm2200-remove-dsp-b-and-left-justified-aif-modes.patch +asoc-sta529-fix-update-register-bits-in-sta529_set_dai_fmt.patch +asoc-pcm-allow-backend-hardware-to-be-freed-in-pause-state.patch +asoc-wm5100-remove-dsp-b-and-left-justified-formats.patch +udldrmfb-fix-edid-not-working-with-monitors-with-edid.patch +udldrmfb-udl_get_edid-usb_control_msg-buffer-must-not-be-on-the-stack.patch +udldrmfb-udl_get_edid-drop-unneeded-i.patch +vfs-add-missing-virtual-cache-flush-after-editing-partial-pages.patch +revert-alsa-hda-shut-up-pins-at-power-saving-mode-with-conexnat-codecs.patch +alsa-hda-disable-runtime-d3-for-intel-cpt-co.patch +alsa-pxa27x-fix-ac97-cold-reset.patch +alsa-pxa27x-fix-ac97-warm-reset.patch diff --git a/queue-3.7/udldrmfb-fix-edid-not-working-with-monitors-with-edid.patch b/queue-3.7/udldrmfb-fix-edid-not-working-with-monitors-with-edid.patch new file mode 100644 index 00000000000..faa97ad2db2 --- /dev/null +++ b/queue-3.7/udldrmfb-fix-edid-not-working-with-monitors-with-edid.patch @@ -0,0 +1,45 @@ +From c930812fe5ebe725760422c9c351d1f6fde1502d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 11 Jan 2013 12:08:56 +0100 +Subject: udldrmfb: Fix EDID not working with monitors with EDID + extension blocks + +From: Hans de Goede + +commit c930812fe5ebe725760422c9c351d1f6fde1502d upstream. + +udldrmfb only reads the main EDID block, and if that advertises extensions +the drm_edid code expects them to be present, and starts reading beyond the +buffer udldrmfb passes it. + +Although it may be possible to read more EDID info with the udl we simpy don't +know how, and even if trial and error gets it working on one device, that is +no guarantee it will work on other revisions. So this patch does a simple fix +in the form of patching the EDID info to report 0 extension blocks, this +fixes udldrmfb only doing 1024x768 on monitors with EDID extension blocks. + +Signed-off-by: Hans de Goede +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/udl/udl_connector.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/gpu/drm/udl/udl_connector.c ++++ b/drivers/gpu/drm/udl/udl_connector.c +@@ -57,6 +57,14 @@ static int udl_get_modes(struct drm_conn + + edid = (struct edid *)udl_get_edid(udl); + ++ /* ++ * We only read the main block, but if the monitor reports extension ++ * blocks then the drm edid code expects them to be present, so patch ++ * the extension count to 0. ++ */ ++ edid->checksum += edid->extensions; ++ edid->extensions = 0; ++ + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + kfree(edid); diff --git a/queue-3.7/udldrmfb-udl_get_edid-drop-unneeded-i.patch b/queue-3.7/udldrmfb-udl_get_edid-drop-unneeded-i.patch new file mode 100644 index 00000000000..0bc98290d1f --- /dev/null +++ b/queue-3.7/udldrmfb-udl_get_edid-drop-unneeded-i.patch @@ -0,0 +1,30 @@ +From 7b4cf994e4c6ba48872bb25253cc393b7fb74c82 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 11 Jan 2013 12:08:58 +0100 +Subject: udldrmfb: udl_get_edid: drop unneeded i-- + +From: Hans de Goede + +commit 7b4cf994e4c6ba48872bb25253cc393b7fb74c82 upstream. + +This is a left-over from when udl_get_edid returned the amount of bytes +successfully read, which it no longer does. + +Signed-off-by: Hans de Goede +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/udl/udl_connector.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/gpu/drm/udl/udl_connector.c ++++ b/drivers/gpu/drm/udl/udl_connector.c +@@ -40,7 +40,6 @@ static u8 *udl_get_edid(struct udl_devic + HZ); + if (ret < 1) { + DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret); +- i--; + goto error; + } + block[i] = rbuf[1]; diff --git a/queue-3.7/udldrmfb-udl_get_edid-usb_control_msg-buffer-must-not-be-on-the-stack.patch b/queue-3.7/udldrmfb-udl_get_edid-usb_control_msg-buffer-must-not-be-on-the-stack.patch new file mode 100644 index 00000000000..1a1577a0d21 --- /dev/null +++ b/queue-3.7/udldrmfb-udl_get_edid-usb_control_msg-buffer-must-not-be-on-the-stack.patch @@ -0,0 +1,55 @@ +From 242187b362555849e8c971dfbbfd55f8bd9fa717 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 11 Jan 2013 12:08:57 +0100 +Subject: udldrmfb: udl_get_edid: usb_control_msg buffer must not be on the stack + +From: Hans de Goede + +commit 242187b362555849e8c971dfbbfd55f8bd9fa717 upstream. + +The buffer passed to usb_control_msg may end up in scatter-gather list, and +may thus not be on the stack. Having it on the stack usually works on x86, but +not on other archs. + +Signed-off-by: Hans de Goede +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/udl/udl_connector.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/udl/udl_connector.c ++++ b/drivers/gpu/drm/udl/udl_connector.c +@@ -22,13 +22,17 @@ + static u8 *udl_get_edid(struct udl_device *udl) + { + u8 *block; +- char rbuf[3]; ++ char *rbuf; + int ret, i; + + block = kmalloc(EDID_LENGTH, GFP_KERNEL); + if (block == NULL) + return NULL; + ++ rbuf = kmalloc(2, GFP_KERNEL); ++ if (rbuf == NULL) ++ goto error; ++ + for (i = 0; i < EDID_LENGTH; i++) { + ret = usb_control_msg(udl->ddev->usbdev, + usb_rcvctrlpipe(udl->ddev->usbdev, 0), (0x02), +@@ -42,10 +46,12 @@ static u8 *udl_get_edid(struct udl_devic + block[i] = rbuf[1]; + } + ++ kfree(rbuf); + return block; + + error: + kfree(block); ++ kfree(rbuf); + return NULL; + } + diff --git a/queue-3.7/vfs-add-missing-virtual-cache-flush-after-editing-partial-pages.patch b/queue-3.7/vfs-add-missing-virtual-cache-flush-after-editing-partial-pages.patch new file mode 100644 index 00000000000..9f929b9973f --- /dev/null +++ b/queue-3.7/vfs-add-missing-virtual-cache-flush-after-editing-partial-pages.patch @@ -0,0 +1,49 @@ +From 6d283dba3721cc43be014b50a1acc2f35860a65a Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Mon, 14 Jan 2013 13:17:50 -0800 +Subject: vfs: add missing virtual cache flush after editing partial pages + +From: Linus Torvalds + +commit 6d283dba3721cc43be014b50a1acc2f35860a65a upstream. + +Andrew Morton pointed this out a month ago, and then I completely forgot +about it. + +If we read a partial last page of a block device, we will zero out the +end of the page, but since that page can then be mapped into user space, +we should also make sure to flush the cache on architectures that have +virtual caches. We have the flush_dcache_page() function for this, so +use it. + +Now, in practice this really never matters, because nobody sane uses +virtual caches to begin with, and they largely exist on old broken RISC +arhitectures. + +And even if you did run on one of those obsolete CPU's, the whole "mmap +and access the last partial page of a block device" behavior probably +doesn't actually exist. The normal IO functions (read/write) will never +see the zeroed-out part of the page that migth not be coherent in the +cache, because they honor the size of the device. + +So I'm marking this for stable (3.7 only), but I'm not sure anybody will +ever care. + +Pointed-out-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/buffer.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -2939,6 +2939,7 @@ static void guard_bh_eod(int rw, struct + void *kaddr = kmap_atomic(bh->b_page); + memset(kaddr + bh_offset(bh) + bytes, 0, bh->b_size - bytes); + kunmap_atomic(kaddr); ++ flush_dcache_page(bh->b_page); + } + } +