From: Greg Kroah-Hartman Date: Wed, 16 Dec 2009 23:53:52 +0000 (-0800) Subject: more .31 patches X-Git-Tag: v2.6.27.42~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49704721006a45253a7b0467110b586fa08a04ba;p=thirdparty%2Fkernel%2Fstable-queue.git more .31 patches --- diff --git a/queue-2.6.31/acpi-use-the-arb_disable-for-the-cpu-which-model-id-is-less-than-0x0f.patch b/queue-2.6.31/acpi-use-the-arb_disable-for-the-cpu-which-model-id-is-less-than-0x0f.patch new file mode 100644 index 00000000000..ff72d59fdbf --- /dev/null +++ b/queue-2.6.31/acpi-use-the-arb_disable-for-the-cpu-which-model-id-is-less-than-0x0f.patch @@ -0,0 +1,41 @@ +From 03a05ed1152944000151d57b71000de287a1eb02 Mon Sep 17 00:00:00 2001 +From: Zhao Yakui +Date: Fri, 11 Dec 2009 15:17:20 +0800 +Subject: ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + +From: Zhao Yakui + +commit 03a05ed1152944000151d57b71000de287a1eb02 upstream. + +Currently, ARB_DISABLE is a NOP on all of the recent Intel platforms. +For such platforms, reduce contention on c3_lock by skipping the fake +ARB_DISABLE. + +The cpu model id on one laptop is 14. If we disable ARB_DISABLE on this box, +the box can't be booted correctly. But if we still enable ARB_DISABLE on this +box, the box can be booted correctly. + +So we still use the ARB_DISABLE for the cpu which mode id is less than 0x0f. + +http://bugzilla.kernel.org/show_bug.cgi?id=14700 + +Signed-off-by: Zhao Yakui +Acked-by: Pallipadi, Venkatesh +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/acpi/cstate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/acpi/cstate.c ++++ b/arch/x86/kernel/acpi/cstate.c +@@ -48,7 +48,7 @@ void acpi_processor_power_init_bm_check( + * P4, Core and beyond CPUs + */ + if (c->x86_vendor == X86_VENDOR_INTEL && +- (c->x86 > 0xf || (c->x86 == 6 && c->x86_model >= 14))) ++ (c->x86 > 0xf || (c->x86 == 6 && c->x86_model >= 0x0f))) + flags->bm_control = 0; + } + EXPORT_SYMBOL(acpi_processor_power_init_bm_check); diff --git a/queue-2.6.31/asus-laptop-change-light-sens-default-values.patch b/queue-2.6.31/asus-laptop-change-light-sens-default-values.patch new file mode 100644 index 00000000000..060f272742a --- /dev/null +++ b/queue-2.6.31/asus-laptop-change-light-sens-default-values.patch @@ -0,0 +1,53 @@ +From d951d4cc84e8b5ddb8e0ab81cf6a72cc73fdd668 Mon Sep 17 00:00:00 2001 +From: Corentin Chary +Date: Mon, 7 Dec 2009 22:05:50 +0100 +Subject: asus-laptop: change light sens default values. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Corentin Chary + +commit d951d4cc84e8b5ddb8e0ab81cf6a72cc73fdd668 upstream. + +The light sensor disable brightness key and +/sys/class/backlight/ control. There was a lot of report +from users who didn't understand why they couldn't change their +brightness, including: + +https://bugs.launchpad.net/bugs/222171 +https://bugzilla.novell.com/show_bug.cgi?id=514747 +http://bugzilla.kernel.org/show_bug.cgi?id=13671 +http://bugzilla.kernel.org/show_bug.cgi?id=14432 + +Now the light sensor is disabled, and if the user want to enable +it, the level should be ok. + +The funny thing is that comments where ok, not code. + +Cc: stable@kernel.org +Cc: Thomas Renninger +Cc: Peter Küppers +Cc: Michael Franzl +Cc: Ian Turner +Signed-off-by: Corentin Chary +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/asus-laptop.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/platform/x86/asus-laptop.c ++++ b/drivers/platform/x86/asus-laptop.c +@@ -1172,8 +1172,8 @@ static int asus_hotk_add(struct acpi_dev + hotk->ledd_status = 0xFFF; + + /* Set initial values of light sensor and level */ +- hotk->light_switch = 1; /* Default to light sensor disabled */ +- hotk->light_level = 0; /* level 5 for sensor sensitivity */ ++ hotk->light_switch = 0; /* Default to light sensor disabled */ ++ hotk->light_level = 5; /* level 5 for sensor sensitivity */ + + if (ls_switch_handle) + set_light_sens_switch(hotk->light_switch); diff --git a/queue-2.6.31/backlight-lcd-fix-wrong-sizeof.patch b/queue-2.6.31/backlight-lcd-fix-wrong-sizeof.patch new file mode 100644 index 00000000000..69ae2a5eb15 --- /dev/null +++ b/queue-2.6.31/backlight-lcd-fix-wrong-sizeof.patch @@ -0,0 +1,31 @@ +From 1e0fa6bd8c7468067f2e988c7a416dafd0651c34 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Fri, 2 Oct 2009 11:28:18 +0200 +Subject: backlight: lcd - Fix wrong sizeof + +From: Jean Delvare + +commit 1e0fa6bd8c7468067f2e988c7a416dafd0651c34 upstream. + +Which is why I have always preferred sizeof(struct foo) over +sizeof(var). + +Signed-off-by: Jean Delvare +Signed-off-by: Richard Purdie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/video/backlight/lcd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/video/backlight/lcd.c ++++ b/drivers/video/backlight/lcd.c +@@ -56,7 +56,7 @@ static int fb_notifier_callback(struct n + + static int lcd_register_fb(struct lcd_device *ld) + { +- memset(&ld->fb_notif, 0, sizeof(&ld->fb_notif)); ++ memset(&ld->fb_notif, 0, sizeof(ld->fb_notif)); + ld->fb_notif.notifier_call = fb_notifier_callback; + return fb_register_client(&ld->fb_notif); + } diff --git a/queue-2.6.31/drm-i915-avoid-null-dereference-with-component_only-tv_modes.patch b/queue-2.6.31/drm-i915-avoid-null-dereference-with-component_only-tv_modes.patch new file mode 100644 index 00000000000..ca3938abfbf --- /dev/null +++ b/queue-2.6.31/drm-i915-avoid-null-dereference-with-component_only-tv_modes.patch @@ -0,0 +1,58 @@ +From d271817baecbccb47da0d9f28c285a0dae8a06b7 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Fri, 27 Nov 2009 13:06:56 +0000 +Subject: drm/i915: Avoid NULL dereference with component_only tv_modes + +From: Chris Wilson + +commit d271817baecbccb47da0d9f28c285a0dae8a06b7 upstream. + +In commit d2d9f2324, the guard for a valid video mode was removed. This +caused the regression: + + kernel crash during kms graphic boot on Intel GM4500 platform + https://bugzilla.redhat.com/show_bug.cgi?id=540218 + +This patches changes the logic slightly not to rely on a coupled +variable, but to just check whether the video_modes is valid before +dereferencing. + +Signed-off-by: Chris Wilson +Cc: David Woodhouse +Cc: Zhenyu Wang +[ickle: Actually reference the correct bug report] +Acked-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_tv.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_tv.c ++++ b/drivers/gpu/drm/i915/intel_tv.c +@@ -1212,20 +1212,17 @@ intel_tv_mode_set(struct drm_encoder *en + tv_ctl |= TV_TRILEVEL_SYNC; + if (tv_mode->pal_burst) + tv_ctl |= TV_PAL_BURST; ++ + scctl1 = 0; +- /* dda1 implies valid video levels */ +- if (tv_mode->dda1_inc) { ++ if (tv_mode->dda1_inc) + scctl1 |= TV_SC_DDA1_EN; +- } +- + if (tv_mode->dda2_inc) + scctl1 |= TV_SC_DDA2_EN; +- + if (tv_mode->dda3_inc) + scctl1 |= TV_SC_DDA3_EN; +- + scctl1 |= tv_mode->sc_reset; +- scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; ++ if (video_levels) ++ scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; + scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; + + scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | diff --git a/queue-2.6.31/drm-i915-fix-crt-hotplug-detect-by-checking-really-no-channels-attached.patch b/queue-2.6.31/drm-i915-fix-crt-hotplug-detect-by-checking-really-no-channels-attached.patch new file mode 100644 index 00000000000..b6a8475c14c --- /dev/null +++ b/queue-2.6.31/drm-i915-fix-crt-hotplug-detect-by-checking-really-no-channels-attached.patch @@ -0,0 +1,36 @@ +From 8e9e0eea9955bffbe5e5cd6355157cabddc31f17 Mon Sep 17 00:00:00 2001 +From: Zhenyu Wang +Date: Wed, 11 Nov 2009 02:30:50 +0000 +Subject: drm/i915: Fix CRT hotplug detect by checking really no channels attached + +From: Zhenyu Wang + +commit 8e9e0eea9955bffbe5e5cd6355157cabddc31f17 upstream. + +For CRT hotplug detect status, we have four test results as blue +channel only, green channel only, both blue and green channel, and +no channel attached. Origin code only marks both blue and green channel +case as connected, but ignore other possible connected states. This one +trys to detect CRT by checking no channel attached case instead. + +Signed-off-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_crt.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_crt.c ++++ b/drivers/gpu/drm/i915/intel_crt.c +@@ -234,8 +234,8 @@ static bool intel_crt_detect_hotplug(str + } while (time_after(timeout, jiffies)); + } + +- if ((I915_READ(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) == +- CRT_HOTPLUG_MONITOR_COLOR) ++ if ((I915_READ(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) != ++ CRT_HOTPLUG_MONITOR_NONE) + return true; + + return false; diff --git a/queue-2.6.31/drm-i915-fix-lvds-stability-issue-on-ironlake.patch b/queue-2.6.31/drm-i915-fix-lvds-stability-issue-on-ironlake.patch new file mode 100644 index 00000000000..11a03238d35 --- /dev/null +++ b/queue-2.6.31/drm-i915-fix-lvds-stability-issue-on-ironlake.patch @@ -0,0 +1,146 @@ +From 1b3c7a47f993bf9ab6c4c7cc3bbf5588052b58f4 Mon Sep 17 00:00:00 2001 +From: Zhenyu Wang +Date: Wed, 25 Nov 2009 13:09:38 +0800 +Subject: drm/i915: Fix LVDS stability issue on Ironlake + +From: Zhenyu Wang + +commit 1b3c7a47f993bf9ab6c4c7cc3bbf5588052b58f4 upstream. + +In disable sequence, all output ports on PCH have to be disabled +before PCH transcoder, but LVDS port was left always enabled. This +one fixes that by disable LVDS port properly during pipe disable +process, and resolved stability issue seen on Ironlake. Also move +panel fitting disable time just after pipe disable to align with +the spec. + +Signed-off-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_display.c | 60 +++++++++++++++++++++++------------ + 1 file changed, 41 insertions(+), 19 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -1182,6 +1182,15 @@ static void igdng_crtc_dpms(struct drm_c + case DRM_MODE_DPMS_STANDBY: + case DRM_MODE_DPMS_SUSPEND: + DRM_DEBUG("crtc %d dpms on\n", pipe); ++ ++ if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { ++ temp = I915_READ(PCH_LVDS); ++ if ((temp & LVDS_PORT_EN) == 0) { ++ I915_WRITE(PCH_LVDS, temp | LVDS_PORT_EN); ++ POSTING_READ(PCH_LVDS); ++ } ++ } ++ + if (HAS_eDP) { + /* enable eDP PLL */ + igdng_enable_pll_edp(crtc); +@@ -1366,8 +1375,6 @@ static void igdng_crtc_dpms(struct drm_c + case DRM_MODE_DPMS_OFF: + DRM_DEBUG("crtc %d dpms off\n", pipe); + +- i915_disable_vga(dev); +- + /* Disable display plane */ + temp = I915_READ(dspcntr_reg); + if ((temp & DISPLAY_PLANE_ENABLE) != 0) { +@@ -1377,6 +1384,8 @@ static void igdng_crtc_dpms(struct drm_c + I915_READ(dspbase_reg); + } + ++ i915_disable_vga(dev); ++ + /* disable cpu pipe, disable after all planes disabled */ + temp = I915_READ(pipeconf_reg); + if ((temp & PIPEACONF_ENABLE) != 0) { +@@ -1397,9 +1406,15 @@ static void igdng_crtc_dpms(struct drm_c + } else + DRM_DEBUG("crtc %d is disabled\n", pipe); + +- if (HAS_eDP) { +- igdng_disable_pll_edp(crtc); ++ udelay(100); ++ ++ /* Disable PF */ ++ temp = I915_READ(pf_ctl_reg); ++ if ((temp & PF_ENABLE) != 0) { ++ I915_WRITE(pf_ctl_reg, temp & ~PF_ENABLE); ++ I915_READ(pf_ctl_reg); + } ++ I915_WRITE(pf_win_size, 0); + + /* disable CPU FDI tx and PCH FDI rx */ + temp = I915_READ(fdi_tx_reg); +@@ -1425,6 +1440,13 @@ static void igdng_crtc_dpms(struct drm_c + + udelay(100); + ++ if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { ++ temp = I915_READ(PCH_LVDS); ++ I915_WRITE(PCH_LVDS, temp & ~LVDS_PORT_EN); ++ I915_READ(PCH_LVDS); ++ udelay(100); ++ } ++ + /* disable PCH transcoder */ + temp = I915_READ(transconf_reg); + if ((temp & TRANS_ENABLE) != 0) { +@@ -1444,6 +1466,8 @@ static void igdng_crtc_dpms(struct drm_c + } + } + ++ udelay(100); ++ + /* disable PCH DPLL */ + temp = I915_READ(pch_dpll_reg); + if ((temp & DPLL_VCO_ENABLE) != 0) { +@@ -1451,14 +1475,20 @@ static void igdng_crtc_dpms(struct drm_c + I915_READ(pch_dpll_reg); + } + +- temp = I915_READ(fdi_rx_reg); +- if ((temp & FDI_RX_PLL_ENABLE) != 0) { +- temp &= ~FDI_SEL_PCDCLK; +- temp &= ~FDI_RX_PLL_ENABLE; +- I915_WRITE(fdi_rx_reg, temp); +- I915_READ(fdi_rx_reg); ++ if (HAS_eDP) { ++ igdng_disable_pll_edp(crtc); + } + ++ temp = I915_READ(fdi_rx_reg); ++ temp &= ~FDI_SEL_PCDCLK; ++ I915_WRITE(fdi_rx_reg, temp); ++ I915_READ(fdi_rx_reg); ++ ++ temp = I915_READ(fdi_rx_reg); ++ temp &= ~FDI_RX_PLL_ENABLE; ++ I915_WRITE(fdi_rx_reg, temp); ++ I915_READ(fdi_rx_reg); ++ + /* Disable CPU FDI TX PLL */ + temp = I915_READ(fdi_tx_reg); + if ((temp & FDI_TX_PLL_ENABLE) != 0) { +@@ -1467,16 +1497,8 @@ static void igdng_crtc_dpms(struct drm_c + udelay(100); + } + +- /* Disable PF */ +- temp = I915_READ(pf_ctl_reg); +- if ((temp & PF_ENABLE) != 0) { +- I915_WRITE(pf_ctl_reg, temp & ~PF_ENABLE); +- I915_READ(pf_ctl_reg); +- } +- I915_WRITE(pf_win_size, 0); +- + /* Wait for the clocks to turn off. */ +- udelay(150); ++ udelay(100); + break; + } + } diff --git a/queue-2.6.31/drm-i915-pineview-only-has-lvds-and-crt-ports.patch b/queue-2.6.31/drm-i915-pineview-only-has-lvds-and-crt-ports.patch new file mode 100644 index 00000000000..0bd972badf6 --- /dev/null +++ b/queue-2.6.31/drm-i915-pineview-only-has-lvds-and-crt-ports.patch @@ -0,0 +1,69 @@ +From 103a196f4224dc6872081305cf7f82ebf67aa7bd Mon Sep 17 00:00:00 2001 +From: Zhenyu Wang +Date: Fri, 27 Nov 2009 11:44:36 +0800 +Subject: drm/i915: PineView only has LVDS and CRT ports + +From: Zhenyu Wang + +commit 103a196f4224dc6872081305cf7f82ebf67aa7bd upstream. + +PineView only has 2 ports for LVDS and CRT. Don't enable other +ports for it. + +Cc: Shaohua Li +Signed-off-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_drv.h | 4 ++++ + drivers/gpu/drm/i915/intel_display.c | 6 +++--- + 2 files changed, 7 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/i915/i915_drv.h ++++ b/drivers/gpu/drm/i915/i915_drv.h +@@ -838,6 +838,7 @@ extern int i915_wait_ring(struct drm_dev + #define IS_I85X(dev) ((dev)->pci_device == 0x3582) + #define IS_I855(dev) ((dev)->pci_device == 0x3582) + #define IS_I865G(dev) ((dev)->pci_device == 0x2572) ++#define IS_I8XX(dev) (IS_I830(dev) || IS_845G(dev) || IS_I85X(dev) || IS_I865G(dev)) + + #define IS_I915G(dev) ((dev)->pci_device == 0x2582 || (dev)->pci_device == 0x258a) + #define IS_I915GM(dev) ((dev)->pci_device == 0x2592) +@@ -899,9 +900,12 @@ extern int i915_wait_ring(struct drm_dev + */ + #define HAS_128_BYTE_Y_TILING(dev) (IS_I9XX(dev) && !(IS_I915G(dev) || \ + IS_I915GM(dev))) ++#define SUPPORTS_DIGITAL_OUTPUTS(dev) (IS_I9XX(dev) && !IS_IGD(dev)) + #define SUPPORTS_INTEGRATED_HDMI(dev) (IS_G4X(dev) || IS_IGDNG(dev)) + #define SUPPORTS_INTEGRATED_DP(dev) (IS_G4X(dev) || IS_IGDNG(dev)) + #define SUPPORTS_EDP(dev) (IS_IGDNG_M(dev)) ++#define SUPPORTS_TV(dev) (IS_I9XX(dev) && IS_MOBILE(dev) && \ ++ !IS_IGDNG(dev) && !IS_IGD(dev)) + #define I915_HAS_HOTPLUG(dev) (IS_I945G(dev) || IS_I945GM(dev) || IS_I965G(dev)) + /* dsparb controlled by hw only */ + #define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IGDNG(dev)) +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -3347,7 +3347,7 @@ static void intel_setup_outputs(struct d + if (I915_READ(PCH_DP_D) & DP_DETECTED) + intel_dp_init(dev, PCH_DP_D); + +- } else if (IS_I9XX(dev)) { ++ } else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) { + bool found = false; + + if (I915_READ(SDVOB) & SDVO_DETECTED) { +@@ -3374,10 +3374,10 @@ static void intel_setup_outputs(struct d + + if (SUPPORTS_INTEGRATED_DP(dev) && (I915_READ(DP_D) & DP_DETECTED)) + intel_dp_init(dev, DP_D); +- } else ++ } else if (IS_I8XX(dev)) + intel_dvo_init(dev); + +- if (IS_I9XX(dev) && IS_MOBILE(dev) && !IS_IGDNG(dev)) ++ if (SUPPORTS_TV(dev)) + intel_tv_init(dev); + + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { diff --git a/queue-2.6.31/drm-i915-save-restore-blc-histogram-control-reg-across-suspend-resume.patch b/queue-2.6.31/drm-i915-save-restore-blc-histogram-control-reg-across-suspend-resume.patch new file mode 100644 index 00000000000..4a372221d6f --- /dev/null +++ b/queue-2.6.31/drm-i915-save-restore-blc-histogram-control-reg-across-suspend-resume.patch @@ -0,0 +1,62 @@ +From 0eb96d6ed38430b72897adde58f5477a6b71757a Mon Sep 17 00:00:00 2001 +From: Jesse Barnes +Date: Wed, 14 Oct 2009 12:33:41 -0700 +Subject: drm/i915: save/restore BLC histogram control reg across suspend/resume + +From: Jesse Barnes + +commit 0eb96d6ed38430b72897adde58f5477a6b71757a upstream. + +Turns out some machines, like the ThinkPad X40 don't come back if you +don't save/restore this register. + +Signed-off-by: Jesse Barnes +Signed-off-by: Eric Anholt +Cc: Stefan Bader +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_drv.h | 1 + + drivers/gpu/drm/i915/i915_reg.h | 2 ++ + drivers/gpu/drm/i915/i915_suspend.c | 2 ++ + 3 files changed, 5 insertions(+) + +--- a/drivers/gpu/drm/i915/i915_drv.h ++++ b/drivers/gpu/drm/i915/i915_drv.h +@@ -264,6 +264,7 @@ typedef struct drm_i915_private { + u32 saveDSPASURF; + u32 saveDSPATILEOFF; + u32 savePFIT_PGM_RATIOS; ++ u32 saveBLC_HIST_CTL; + u32 saveBLC_PWM_CTL; + u32 saveBLC_PWM_CTL2; + u32 saveFPB0; +--- a/drivers/gpu/drm/i915/i915_reg.h ++++ b/drivers/gpu/drm/i915/i915_reg.h +@@ -915,6 +915,8 @@ + #define BACKLIGHT_DUTY_CYCLE_SHIFT (0) + #define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) + ++#define BLC_HIST_CTL 0x61260 ++ + /* TV port control */ + #define TV_CTL 0x68000 + /** Enables the TV encoder */ +--- a/drivers/gpu/drm/i915/i915_suspend.c ++++ b/drivers/gpu/drm/i915/i915_suspend.c +@@ -416,6 +416,7 @@ int i915_save_state(struct drm_device *d + dev_priv->savePP_CONTROL = I915_READ(PP_CONTROL); + dev_priv->savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS); + dev_priv->saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL); ++ dev_priv->saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL); + if (IS_I965G(dev)) + dev_priv->saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2); + if (IS_MOBILE(dev) && !IS_I830(dev)) +@@ -560,6 +561,7 @@ int i915_restore_state(struct drm_device + + I915_WRITE(PFIT_PGM_RATIOS, dev_priv->savePFIT_PGM_RATIOS); + I915_WRITE(BLC_PWM_CTL, dev_priv->saveBLC_PWM_CTL); ++ I915_WRITE(BLC_HIST_CTL, dev_priv->saveBLC_HIST_CTL); + I915_WRITE(PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS); + I915_WRITE(PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS); + I915_WRITE(PP_DIVISOR, dev_priv->savePP_DIVISOR); diff --git a/queue-2.6.31/ext3-fix-data-filesystem-corruption-when-write-fails-to-copy-data.patch b/queue-2.6.31/ext3-fix-data-filesystem-corruption-when-write-fails-to-copy-data.patch new file mode 100644 index 00000000000..a1443ae6e4b --- /dev/null +++ b/queue-2.6.31/ext3-fix-data-filesystem-corruption-when-write-fails-to-copy-data.patch @@ -0,0 +1,81 @@ +From 68eb3db08344286733adac48304d9fb7a0e53b27 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Tue, 1 Dec 2009 16:53:06 +0100 +Subject: ext3: Fix data / filesystem corruption when write fails to copy data + +From: Jan Kara + +commit 68eb3db08344286733adac48304d9fb7a0e53b27 upstream. + +When ext3_write_begin fails after allocating some blocks or +generic_perform_write fails to copy data to write, we truncate blocks already +instantiated beyond i_size. Although these blocks were never inside i_size, we +have to truncate pagecache of these blocks so that corresponding buffers get +unmapped. Otherwise subsequent __block_prepare_write (called because we are +retrying the write) will find the buffers mapped, not call ->get_block, and +thus the page will be backed by already freed blocks leading to filesystem and +data corruption. + +Reported-by: James Y Knight +Signed-off-by: Jan Kara +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext3/inode.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +--- a/fs/ext3/inode.c ++++ b/fs/ext3/inode.c +@@ -1137,6 +1137,16 @@ static int do_journal_get_write_access(h + return ext3_journal_get_write_access(handle, bh); + } + ++/* ++ * Truncate blocks that were not used by write. We have to truncate the ++ * pagecache as well so that corresponding buffers get properly unmapped. ++ */ ++static void ext3_truncate_failed_write(struct inode *inode) ++{ ++ truncate_inode_pages(inode->i_mapping, inode->i_size); ++ ext3_truncate(inode); ++} ++ + static int ext3_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +@@ -1195,7 +1205,7 @@ write_begin_failed: + unlock_page(page); + page_cache_release(page); + if (pos + len > inode->i_size) +- ext3_truncate(inode); ++ ext3_truncate_failed_write(inode); + } + if (ret == -ENOSPC && ext3_should_retry_alloc(inode->i_sb, &retries)) + goto retry; +@@ -1290,7 +1300,7 @@ static int ext3_ordered_write_end(struct + page_cache_release(page); + + if (pos + len > inode->i_size) +- ext3_truncate(inode); ++ ext3_truncate_failed_write(inode); + return ret ? ret : copied; + } + +@@ -1316,7 +1326,7 @@ static int ext3_writeback_write_end(stru + page_cache_release(page); + + if (pos + len > inode->i_size) +- ext3_truncate(inode); ++ ext3_truncate_failed_write(inode); + return ret ? ret : copied; + } + +@@ -1369,7 +1379,7 @@ static int ext3_journalled_write_end(str + page_cache_release(page); + + if (pos + len > inode->i_size) +- ext3_truncate(inode); ++ ext3_truncate_failed_write(inode); + return ret ? ret : copied; + } + diff --git a/queue-2.6.31/ipvs-zero-usvc-and-udest.patch b/queue-2.6.31/ipvs-zero-usvc-and-udest.patch new file mode 100644 index 00000000000..d3114c30163 --- /dev/null +++ b/queue-2.6.31/ipvs-zero-usvc-and-udest.patch @@ -0,0 +1,50 @@ +From 258c889362aa95d0ab534b38ce8c15d3009705b1 Mon Sep 17 00:00:00 2001 +From: Simon Horman +Date: Tue, 15 Dec 2009 17:01:25 +0100 +Subject: ipvs: zero usvc and udest + +From: Simon Horman + +commit 258c889362aa95d0ab534b38ce8c15d3009705b1 upstream. + +Make sure that any otherwise uninitialised fields of usvc are zero. + +This has been obvserved to cause a problem whereby the port of +fwmark services may end up as a non-zero value which causes +scheduling of a destination server to fail for persisitent services. + +As observed by Deon van der Merwe . +This fix suggested by Julian Anastasov . + +For good measure also zero udest. + +Cc: Deon van der Merwe +Acked-by: Julian Anastasov +Signed-off-by: Simon Horman +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + net/netfilter/ipvs/ip_vs_ctl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/net/netfilter/ipvs/ip_vs_ctl.c ++++ b/net/netfilter/ipvs/ip_vs_ctl.c +@@ -2713,6 +2713,8 @@ static int ip_vs_genl_parse_service(stru + if (!(nla_af && (nla_fwmark || (nla_port && nla_protocol && nla_addr)))) + return -EINVAL; + ++ memset(usvc, 0, sizeof(*usvc)); ++ + usvc->af = nla_get_u16(nla_af); + #ifdef CONFIG_IP_VS_IPV6 + if (usvc->af != AF_INET && usvc->af != AF_INET6) +@@ -2900,6 +2902,8 @@ static int ip_vs_genl_parse_dest(struct + if (!(nla_addr && nla_port)) + return -EINVAL; + ++ memset(udest, 0, sizeof(*udest)); ++ + nla_memcpy(&udest->addr, nla_addr, sizeof(udest->addr)); + udest->port = nla_get_u16(nla_port); + diff --git a/queue-2.6.31/ipw2100-fix-rebooting-hang-with-driver-loaded.patch b/queue-2.6.31/ipw2100-fix-rebooting-hang-with-driver-loaded.patch new file mode 100644 index 00000000000..164f40847cd --- /dev/null +++ b/queue-2.6.31/ipw2100-fix-rebooting-hang-with-driver-loaded.patch @@ -0,0 +1,51 @@ +From 52ce3e9a7db754b78cf2cbabc87013f921b25b28 Mon Sep 17 00:00:00 2001 +From: Zhu Yi +Date: Wed, 2 Dec 2009 14:24:37 +0800 +Subject: ipw2100: fix rebooting hang with driver loaded + +From: Zhu Yi + +commit 52ce3e9a7db754b78cf2cbabc87013f921b25b28 upstream. + +Add PCI .shutdown method so that we can disable the device during +shutdown or reboot. Without this, the reboot doesn't work well on +some platforms. + +This fixes http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2124 + +Tested-by: pablo +Signed-off-by: Zhu Yi +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ipw2x00/ipw2100.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/drivers/net/wireless/ipw2x00/ipw2100.c ++++ b/drivers/net/wireless/ipw2x00/ipw2100.c +@@ -6487,6 +6487,16 @@ static int ipw2100_resume(struct pci_dev + } + #endif + ++static void ipw2100_shutdown(struct pci_dev *pci_dev) ++{ ++ struct ipw2100_priv *priv = pci_get_drvdata(pci_dev); ++ ++ /* Take down the device; powers it off, etc. */ ++ ipw2100_down(priv); ++ ++ pci_disable_device(pci_dev); ++} ++ + #define IPW2100_DEV_ID(x) { PCI_VENDOR_ID_INTEL, 0x1043, 0x8086, x } + + static struct pci_device_id ipw2100_pci_id_table[] __devinitdata = { +@@ -6550,6 +6560,7 @@ static struct pci_driver ipw2100_pci_dri + .suspend = ipw2100_suspend, + .resume = ipw2100_resume, + #endif ++ .shutdown = ipw2100_shutdown, + }; + + /** diff --git a/queue-2.6.31/jffs2-fix-long-standing-bug-with-symlink-garbage-collection.patch b/queue-2.6.31/jffs2-fix-long-standing-bug-with-symlink-garbage-collection.patch new file mode 100644 index 00000000000..2fc227574d3 --- /dev/null +++ b/queue-2.6.31/jffs2-fix-long-standing-bug-with-symlink-garbage-collection.patch @@ -0,0 +1,33 @@ +From 2e16cfca6e17ae37ae21feca080a6f2eca9087dc Mon Sep 17 00:00:00 2001 +From: David Woodhouse +Date: Wed, 16 Dec 2009 03:27:20 +0000 +Subject: jffs2: Fix long-standing bug with symlink garbage collection. + +From: David Woodhouse + +commit 2e16cfca6e17ae37ae21feca080a6f2eca9087dc upstream. + +Ever since jffs2_garbage_collect_metadata() was first half-written in +February 2001, it's been broken on architectures where 'char' is signed. +When garbage collecting a symlink with target length above 127, the payload +length would end up negative, causing interesting and bad things to happen. + +Signed-off-by: David Woodhouse +Signed-off-by: Greg Kroah-Hartman + +--- + fs/jffs2/gc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/fs/jffs2/gc.c ++++ b/fs/jffs2/gc.c +@@ -700,7 +700,8 @@ static int jffs2_garbage_collect_metadat + struct jffs2_raw_inode ri; + struct jffs2_node_frag *last_frag; + union jffs2_device_node dev; +- char *mdata = NULL, mdatalen = 0; ++ char *mdata = NULL; ++ int mdatalen = 0; + uint32_t alloclen, ilen; + int ret; + diff --git a/queue-2.6.31/matroxfb-fix-problems-with-display-stability.patch b/queue-2.6.31/matroxfb-fix-problems-with-display-stability.patch new file mode 100644 index 00000000000..559af1a6250 --- /dev/null +++ b/queue-2.6.31/matroxfb-fix-problems-with-display-stability.patch @@ -0,0 +1,45 @@ +From 8c651311a3a08c1e4815de6933e00a760e498dae Mon Sep 17 00:00:00 2001 +From: Alan Cox +Date: Tue, 15 Dec 2009 16:46:40 -0800 +Subject: matroxfb: fix problems with display stability + +From: Alan Cox + +commit 8c651311a3a08c1e4815de6933e00a760e498dae upstream. + +Regression caused in 2.6.23 and then despite repeated requests never fixed +or dealt with (Petr promised to sort it in 2008 but seems to have +forgotten). + +Enough is enough - remove the problem line that was added. If it upsets +someone they've had two years to deal with it and at the very least it'll +rattle their cage and wake them up. + +Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9709 + +Signed-off-by: Alan Cox +Reported-by: Damon +Tested-by: Ruud van Melick +Cc: Petr Vandrovec +Cc: Pekka Enberg +Cc: Paul A. Clarke +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/video/matrox/g450_pll.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/video/matrox/g450_pll.c ++++ b/drivers/video/matrox/g450_pll.c +@@ -341,7 +341,8 @@ static int __g450_setclk(WPMINFO unsigne + M1064_XDVICLKCTRL_C1DVICLKEN | + M1064_XDVICLKCTRL_DVILOOPCTL | + M1064_XDVICLKCTRL_P1LOOPBWDTCTL; +- matroxfb_DAC_out(PMINFO M1064_XDVICLKCTRL,tmp); ++ /* Setting this breaks PC systems so don't do it */ ++ /* matroxfb_DAC_out(PMINFO M1064_XDVICLKCTRL,tmp); */ + matroxfb_DAC_out(PMINFO M1064_XPWRCTRL, + xpwrctrl); + diff --git a/queue-2.6.31/net-fix-userspace-rtm_newlink-notifications.patch b/queue-2.6.31/net-fix-userspace-rtm_newlink-notifications.patch new file mode 100644 index 00000000000..2f4d20767be --- /dev/null +++ b/queue-2.6.31/net-fix-userspace-rtm_newlink-notifications.patch @@ -0,0 +1,71 @@ +From ebiederm@xmission.com Wed Dec 16 15:17:26 2009 +From: ebiederm@xmission.com (Eric W. Biederman) +Date: Sun, 13 Dec 2009 22:39:28 -0800 +Subject: net: Fix userspace RTM_NEWLINK notifications. +To: David Miller +Cc: netdev@vger.kernel.org, marcel@holtmann.org, stable@kernel.org +Message-ID: + +commit d90a909e1f3e006a1d57fe11fd417173b6494701 upstream. + +I received some bug reports about userspace programs having problems +because after RTM_NEWLINK was received they could not immeidate +access files under /proc/sys/net/ because they had not been +registered yet. + +The problem was trivailly fixed by moving the userspace +notification from rtnetlink_event to the end of register_netdevice. + +Signed-off-by: Eric W. Biederman +Cc: David Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/core/dev.c | 11 +++++++++++ + net/core/rtnetlink.c | 4 +--- + 2 files changed, 12 insertions(+), 3 deletions(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4808,6 +4808,11 @@ int register_netdevice(struct net_device + rollback_registered(dev); + dev->reg_state = NETREG_UNREGISTERED; + } ++ /* ++ * Prevent userspace races by waiting until the network ++ * device is fully setup before sending notifications. ++ */ ++ rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U); + + out: + return ret; +@@ -5343,6 +5348,12 @@ int dev_change_net_namespace(struct net_ + /* Notify protocols, that a new device appeared. */ + call_netdevice_notifiers(NETDEV_REGISTER, dev); + ++ /* ++ * Prevent userspace races by waiting until the network ++ * device is fully setup before sending notifications. ++ */ ++ rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U); ++ + synchronize_net(); + err = 0; + out: +--- a/net/core/rtnetlink.c ++++ b/net/core/rtnetlink.c +@@ -1347,13 +1347,11 @@ static int rtnetlink_event(struct notifi + case NETDEV_UNREGISTER: + rtmsg_ifinfo(RTM_DELLINK, dev, ~0U); + break; +- case NETDEV_REGISTER: +- rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U); +- break; + case NETDEV_UP: + case NETDEV_DOWN: + rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING); + break; ++ case NETDEV_REGISTER: + case NETDEV_CHANGE: + case NETDEV_GOING_DOWN: + break; diff --git a/queue-2.6.31/series b/queue-2.6.31/series index 71b7730c54d..0f5803bd3d6 100644 --- a/queue-2.6.31/series +++ b/queue-2.6.31/series @@ -70,3 +70,21 @@ x86-mce-set-up-timer-unconditionally.patch b43legacy-avoid-ppc-fault-during-resume.patch p54usb-remove-dma-buffer-from-stack.patch x86-under-bios-control-restore-ap-s-apic_lvtthmr-to-the-bsp-value.patch +acpi-use-the-arb_disable-for-the-cpu-which-model-id-is-less-than-0x0f.patch +asus-laptop-change-light-sens-default-values.patch +backlight-lcd-fix-wrong-sizeof.patch +drm-i915-avoid-null-dereference-with-component_only-tv_modes.patch +drm-i915-fix-crt-hotplug-detect-by-checking-really-no-channels-attached.patch +drm-i915-fix-lvds-stability-issue-on-ironlake.patch +drm-i915-save-restore-blc-histogram-control-reg-across-suspend-resume.patch +drm-i915-pineview-only-has-lvds-and-crt-ports.patch +ext3-fix-data-filesystem-corruption-when-write-fails-to-copy-data.patch +ipvs-zero-usvc-and-udest.patch +ipw2100-fix-rebooting-hang-with-driver-loaded.patch +jffs2-fix-long-standing-bug-with-symlink-garbage-collection.patch +matroxfb-fix-problems-with-display-stability.patch +net-fix-userspace-rtm_newlink-notifications.patch +sysctl_max_map_count-should-be-non-negative.patch +thinkpad-acpi-fix-default-brightness_mode-for-r50e-r51.patch +thinkpad-acpi-preserve-rfkill-state-across-suspend-resume.patch +v4l-dvb-13116-gspca-ov519-webcam-041e-4067-added.patch diff --git a/queue-2.6.31/sysctl_max_map_count-should-be-non-negative.patch b/queue-2.6.31/sysctl_max_map_count-should-be-non-negative.patch new file mode 100644 index 00000000000..a0ee409a955 --- /dev/null +++ b/queue-2.6.31/sysctl_max_map_count-should-be-non-negative.patch @@ -0,0 +1,50 @@ +From 70da2340fbc68e91e701762f785479ab495a0869 Mon Sep 17 00:00:00 2001 +From: Amerigo Wang +Date: Mon, 14 Dec 2009 17:59:52 -0800 +Subject: 'sysctl_max_map_count' should be non-negative + +From: Amerigo Wang + +commit 70da2340fbc68e91e701762f785479ab495a0869 upstream. + +Jan Engelhardt reported we have this problem: + +setting max_map_count to a value large enough results in programs dying at +first try. This is on 2.6.31.6: + +15:59 borg:/proc/sys/vm # echo $[1<<31-1] >max_map_count +15:59 borg:/proc/sys/vm # cat max_map_count +1073741824 +15:59 borg:/proc/sys/vm # echo $[1<<31] >max_map_count +15:59 borg:/proc/sys/vm # cat max_map_count +Killed + +This is because we have a chance to make 'max_map_count' negative. but +it's meaningless. Make it only accept non-negative values. + +Reported-by: Jan Engelhardt +Signed-off-by: WANG Cong +Cc: Ingo Molnar +Cc: Peter Zijlstra +Cc: James Morris +Cc: Alexey Dobriyan +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/sysctl.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -1539,7 +1539,8 @@ static struct ctl_table debug_table[] = + .data = &show_unhandled_signals, + .maxlen = sizeof(int), + .mode = 0644, +- .proc_handler = proc_dointvec ++ .proc_handler = proc_dointvec, ++ .extra1 = &zero, + }, + #endif + { .ctl_name = 0 } diff --git a/queue-2.6.31/thinkpad-acpi-fix-default-brightness_mode-for-r50e-r51.patch b/queue-2.6.31/thinkpad-acpi-fix-default-brightness_mode-for-r50e-r51.patch new file mode 100644 index 00000000000..aef54ec511b --- /dev/null +++ b/queue-2.6.31/thinkpad-acpi-fix-default-brightness_mode-for-r50e-r51.patch @@ -0,0 +1,50 @@ +From a9f8eacca4e9e8693de9b896c1fa7aadaa9402e8 Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Wed, 9 Dec 2009 01:36:21 +0000 +Subject: thinkpad-acpi: fix default brightness_mode for R50e/R51 + +From: Henrique de Moraes Holschuh + +commit a9f8eacca4e9e8693de9b896c1fa7aadaa9402e8 upstream. + +According to a report, the R50e wants EC-based brightness control, +even if it uses an Intel GPU. The current driver default was reported +to not work at all. + +This bug can be worked around by the "brightness_mode=3" module +parameter. + +Change the default of the R50e and R51 2xxx models (which use the same +EC firmware, 1V) to TPACPI_BRGHT_Q_EC, but keep TPACPI_BRGHT_Q_ASK set +for now, as I'd like to get more reports. + +This fixes a regression caused by commit +59fe4fe34d7afdf63208124f313be9056feaa2f4, +"thinkpad-acpi: fix incorrect use of TPACPI_BRGHT_MODE_ECNVRAM" + +Kernel 2.6.31 also needs this fix. + +Reported-by: Ferenc Wagner +Tested-by: Ferenc Wagner +Signed-off-by: Henrique de Moraes Holschuh +Cc: stable@kernel.org +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -5663,8 +5663,8 @@ static const struct tpacpi_quirk brightn + + /* Models with Intel Extreme Graphics 2 */ + TPACPI_Q_IBM('1', 'U', TPACPI_BRGHT_Q_NOEC), +- TPACPI_Q_IBM('1', 'V', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_NOEC), +- TPACPI_Q_IBM('1', 'W', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_NOEC), ++ TPACPI_Q_IBM('1', 'V', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), ++ TPACPI_Q_IBM('1', 'W', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), + + /* Models with Intel GMA900 */ + TPACPI_Q_IBM('7', '0', TPACPI_BRGHT_Q_NOEC), /* T43, R52 */ diff --git a/queue-2.6.31/thinkpad-acpi-preserve-rfkill-state-across-suspend-resume.patch b/queue-2.6.31/thinkpad-acpi-preserve-rfkill-state-across-suspend-resume.patch new file mode 100644 index 00000000000..750ef1e0b5a --- /dev/null +++ b/queue-2.6.31/thinkpad-acpi-preserve-rfkill-state-across-suspend-resume.patch @@ -0,0 +1,114 @@ +From 208b996b6c460285650d39b2330f8ef82c007d10 Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Wed, 9 Dec 2009 01:36:22 +0000 +Subject: thinkpad-acpi: preserve rfkill state across suspend/resume + +From: Henrique de Moraes Holschuh + +commit 208b996b6c460285650d39b2330f8ef82c007d10 upstream. + +Since the rfkill rework in 2.6.31, the driver is always resuming with +the radios disabled. + +Change thinkpad-acpi to ask the firmware to resume with the radios in +the last state. This fixes the Bluetooth and WWAN rfkill switches. + +Note that it means we respect the firmware's oddities. Should the +user toggle the hardware rfkill switch on and off, it might cause the +radios to resume enabled. + +UWB is an unknown quantity since it has nowhere the same level of +firmware support (no control over state storage in NVRAM, for +example), and might need further fixing. Testers welcome. + +This change fixes a regression from 2.6.30. + +Reported-by: Jerone Young +Reported-by: Ian Molton +Signed-off-by: Henrique de Moraes Holschuh +Tested-by: Ian Molton +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 32 +++++--------------------------- + 1 file changed, 5 insertions(+), 27 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -3406,15 +3406,6 @@ enum { + + #define TPACPI_RFK_BLUETOOTH_SW_NAME "tpacpi_bluetooth_sw" + +-static void bluetooth_suspend(pm_message_t state) +-{ +- /* Try to make sure radio will resume powered off */ +- if (!acpi_evalf(NULL, NULL, "\\BLTH", "vd", +- TP_ACPI_BLTH_PWR_OFF_ON_RESUME)) +- vdbg_printk(TPACPI_DBG_RFKILL, +- "bluetooth power down on resume request failed\n"); +-} +- + static int bluetooth_get_status(void) + { + int status; +@@ -3448,10 +3439,9 @@ static int bluetooth_set_status(enum tpa + #endif + + /* We make sure to keep TP_ACPI_BLUETOOTH_RESUMECTRL off */ ++ status = TP_ACPI_BLUETOOTH_RESUMECTRL; + if (state == TPACPI_RFK_RADIO_ON) +- status = TP_ACPI_BLUETOOTH_RADIOSSW; +- else +- status = 0; ++ status |= TP_ACPI_BLUETOOTH_RADIOSSW; + + if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status)) + return -EIO; +@@ -3590,7 +3580,6 @@ static struct ibm_struct bluetooth_drive + .read = bluetooth_read, + .write = bluetooth_write, + .exit = bluetooth_exit, +- .suspend = bluetooth_suspend, + .shutdown = bluetooth_shutdown, + }; + +@@ -3608,15 +3597,6 @@ enum { + + #define TPACPI_RFK_WWAN_SW_NAME "tpacpi_wwan_sw" + +-static void wan_suspend(pm_message_t state) +-{ +- /* Try to make sure radio will resume powered off */ +- if (!acpi_evalf(NULL, NULL, "\\WGSV", "qvd", +- TP_ACPI_WGSV_PWR_OFF_ON_RESUME)) +- vdbg_printk(TPACPI_DBG_RFKILL, +- "WWAN power down on resume request failed\n"); +-} +- + static int wan_get_status(void) + { + int status; +@@ -3649,11 +3629,10 @@ static int wan_set_status(enum tpacpi_rf + } + #endif + +- /* We make sure to keep TP_ACPI_WANCARD_RESUMECTRL off */ ++ /* We make sure to set TP_ACPI_WANCARD_RESUMECTRL */ ++ status = TP_ACPI_WANCARD_RESUMECTRL; + if (state == TPACPI_RFK_RADIO_ON) +- status = TP_ACPI_WANCARD_RADIOSSW; +- else +- status = 0; ++ status |= TP_ACPI_WANCARD_RADIOSSW; + + if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status)) + return -EIO; +@@ -3791,7 +3770,6 @@ static struct ibm_struct wan_driver_data + .read = wan_read, + .write = wan_write, + .exit = wan_exit, +- .suspend = wan_suspend, + .shutdown = wan_shutdown, + }; + diff --git a/queue-2.6.31/v4l-dvb-13116-gspca-ov519-webcam-041e-4067-added.patch b/queue-2.6.31/v4l-dvb-13116-gspca-ov519-webcam-041e-4067-added.patch new file mode 100644 index 00000000000..3a0f6d1ef44 --- /dev/null +++ b/queue-2.6.31/v4l-dvb-13116-gspca-ov519-webcam-041e-4067-added.patch @@ -0,0 +1,40 @@ +From 518c8df77c21b7d1690dd8b96eb0e54c4ec1c9c1 Mon Sep 17 00:00:00 2001 +From: Rafal Milecki +Date: Fri, 2 Oct 2009 03:54:44 -0300 +Subject: V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + +From: Rafal Milecki + +commit 518c8df77c21b7d1690dd8b96eb0e54c4ec1c9c1 upstream. + +Signed-off-by: Rafal Milecki +Signed-off-by: Jean-Francois Moine +Signed-off-by: Mauro Carvalho Chehab +Cc: Surbhi Palande +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/video4linux/gspca.txt | 1 + + drivers/media/video/gspca/ov519.c | 1 + + 2 files changed, 2 insertions(+) + +--- a/Documentation/video4linux/gspca.txt ++++ b/Documentation/video4linux/gspca.txt +@@ -37,6 +37,7 @@ ov519 041e:405f Creative Live! VISTA VF + ov519 041e:4060 Creative Live! VISTA VF0350 + ov519 041e:4061 Creative Live! VISTA VF0400 + ov519 041e:4064 Creative Live! VISTA VF0420 ++ov519 041e:4067 Creative Live! Cam Video IM (VF0350) + ov519 041e:4068 Creative Live! VISTA VF0470 + spca561 0458:7004 Genius VideoCAM Express V2 + sunplus 0458:7006 Genius Dsc 1.3 Smart +--- a/drivers/media/video/gspca/ov519.c ++++ b/drivers/media/video/gspca/ov519.c +@@ -3364,6 +3364,7 @@ static const __devinitdata struct usb_de + {USB_DEVICE(0x041e, 0x4061), .driver_info = BRIDGE_OV519 }, + {USB_DEVICE(0x041e, 0x4064), + .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, ++ {USB_DEVICE(0x041e, 0x4067), .driver_info = BRIDGE_OV519 }, + {USB_DEVICE(0x041e, 0x4068), + .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, + {USB_DEVICE(0x045e, 0x028c), .driver_info = BRIDGE_OV519 },