From 99578463d88de930611e6e1714ec748d8b2b3ef6 Mon Sep 17 00:00:00 2001 From: Tobias Powalowski Date: Sat, 13 Jun 2009 10:34:59 +0200 Subject: 'more patches added' --- PATCHCFG | 10 ++++++++- patches/kms-2.6.30-2.patch | 54 ++++++++++++++++++++++++++++++++++++++++++++++ patches/kms-2.6.30.patch | 35 ++++++++++++++++++++++++++++++ patches/wmi.patch | 33 ++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 patches/kms-2.6.30-2.patch create mode 100644 patches/kms-2.6.30.patch create mode 100644 patches/wmi.patch diff --git a/PATCHCFG b/PATCHCFG index 70fb4d3..4696cb6 100644 --- a/PATCHCFG +++ b/PATCHCFG @@ -31,12 +31,20 @@ PATCHES=( # fix http://bugs.archlinux.org/task/12180 quirks-h12y.patch%1 + # add kms fixes + kms-2.6.30.patch%1 + kms-2.6.30-2.patch%1 + + # fix wmi stack acer crash + wmi.patch%1 + + # add aufs2 support, in reference to: # http://aufs.sourceforge.net aufs2-20090611.patch%1 ) # Name of the resulting patch (will be bzipped afterwards) -PATCHNAME="patch-2.6.30-2-ARCH" +PATCHNAME="patch-2.6.30-3-ARCH" # Run this before applying patches pre_apply() { diff --git a/patches/kms-2.6.30-2.patch b/patches/kms-2.6.30-2.patch new file mode 100644 index 0000000..2866c4e --- /dev/null +++ b/patches/kms-2.6.30-2.patch @@ -0,0 +1,54 @@ +From: Ma Ling +Date: Sun, 31 May 2009 08:58:32 +0000 (+0800) +Subject: drm/i915: Set correct TV detection voltage level override values +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fanholt%2Fdrm-intel.git;a=commitdiff_plain;h=cb66c692d1ae257f32dc7f6085cf9cb9f2f6bab8 + +drm/i915: Set correct TV detection voltage level override values + +We detect TV connect status by setting DAC voltage level override +values as 0.7 voltage for DAC_A/B/C. The corresponding 2-bits shold be 0x2, +In order correctly to set last bit as 0, at first we must clean it. + +It fixed freedesktop.org bug #21204 + +Signed-off-by: Ma Ling +Signed-off-by: Eric Anholt +--- + +diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h +index 99681cf..79df9e9 100644 +--- a/drivers/gpu/drm/i915/i915_reg.h ++++ b/drivers/gpu/drm/i915/i915_reg.h +@@ -958,15 +958,15 @@ + # define DAC_A_1_3_V (0 << 4) + # define DAC_A_1_1_V (1 << 4) + # define DAC_A_0_7_V (2 << 4) +-# define DAC_A_OFF (3 << 4) ++# define DAC_A_MASK (3 << 4) + # define DAC_B_1_3_V (0 << 2) + # define DAC_B_1_1_V (1 << 2) + # define DAC_B_0_7_V (2 << 2) +-# define DAC_B_OFF (3 << 2) ++# define DAC_B_MASK (3 << 2) + # define DAC_C_1_3_V (0 << 0) + # define DAC_C_1_1_V (1 << 0) + # define DAC_C_0_7_V (2 << 0) +-# define DAC_C_OFF (3 << 0) ++# define DAC_C_MASK (3 << 0) + + /** + * CSC coefficients are stored in a floating point format with 9 bits of +diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c +index d2c3298..c7d9ef0 100644 +--- a/drivers/gpu/drm/i915/intel_tv.c ++++ b/drivers/gpu/drm/i915/intel_tv.c +@@ -1392,6 +1392,9 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) + tv_ctl &= ~TV_TEST_MODE_MASK; + tv_ctl |= TV_TEST_MODE_MONITOR_DETECT; + tv_dac &= ~TVDAC_SENSE_MASK; ++ tv_dac &= ~DAC_A_MASK; ++ tv_dac &= ~DAC_B_MASK; ++ tv_dac &= ~DAC_C_MASK; + tv_dac |= (TVDAC_STATE_CHG_EN | + TVDAC_A_SENSE_CTL | + TVDAC_B_SENSE_CTL | diff --git a/patches/kms-2.6.30.patch b/patches/kms-2.6.30.patch new file mode 100644 index 0000000..168a78c --- /dev/null +++ b/patches/kms-2.6.30.patch @@ -0,0 +1,35 @@ +From: Keith Packard +Date: Sat, 6 Jun 2009 01:19:56 +0000 (-0700) +Subject: drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect) +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fanholt%2Fdrm-intel.git;a=commitdiff_plain;h=03d6069912babc07a3da20e715dd6a5dc8f0f867 + +drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect) + +With the DRM-driven DPMS code, encoders are considered idle unless a +connector is hooked to them, so mode setting is skipped. This makes load +detection fail as none of the hardware is enabled. + +Signed-off-by: Keith Packard +Signed-off-by: Eric Anholt +--- + +diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c +index a87eeff..b32a51f 100644 +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -2136,6 +2136,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, + } + + encoder->crtc = crtc; ++ intel_output->base.encoder = encoder; + intel_output->load_detect_temp = true; + + intel_crtc = to_intel_crtc(crtc); +@@ -2171,6 +2172,7 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_ + + if (intel_output->load_detect_temp) { + encoder->crtc = NULL; ++ intel_output->base.encoder = NULL; + intel_output->load_detect_temp = false; + crtc->enabled = drm_helper_crtc_in_use(crtc); + drm_helper_disable_unused_functions(dev); diff --git a/patches/wmi.patch b/patches/wmi.patch new file mode 100644 index 0000000..a8b98da --- /dev/null +++ b/patches/wmi.patch @@ -0,0 +1,33 @@ +diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c +index 043b208..f215a59 100644 +--- a/drivers/platform/x86/wmi.c ++++ b/drivers/platform/x86/wmi.c +@@ -270,7 +270,7 @@ u32 method_id, const struct acpi_buffer *in, struct acpi_buffer *out) + acpi_status status; + struct acpi_object_list input; + union acpi_object params[3]; +- char method[4] = "WM"; ++ char method[5] = "WM"; + + if (!find_guid(guid_string, &wblock)) + return AE_ERROR; +@@ -328,8 +328,8 @@ struct acpi_buffer *out) + acpi_status status, wc_status = AE_ERROR; + struct acpi_object_list input, wc_input; + union acpi_object wc_params[1], wq_params[1]; +- char method[4]; +- char wc_method[4] = "WC"; ++ char method[5]; ++ char wc_method[5] = "WC"; + + if (!guid_string || !out) + return AE_BAD_PARAMETER; +@@ -410,7 +410,7 @@ const struct acpi_buffer *in) + acpi_handle handle; + struct acpi_object_list input; + union acpi_object params[2]; +- char method[4] = "WS"; ++ char method[5] = "WS"; + + if (!guid_string || !in) + return AE_BAD_DATA; -- cgit v1.2.3