[kernel] r16518 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Maximilian Attems maks at alioth.debian.org
Sun Oct 31 13:48:16 UTC 2010


Author: maks
Date: Sun Oct 31 13:48:07 2010
New Revision: 16518

Log:
add missing drm intel specific f12 patch

it is said to fix backlight on several Dell laptops details on:
https://bugzilla.kernel.org/show_bug.cgi?id=15054

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-i915-set-DIDL-using-the-ACPI-video-output-device.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/28

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sat Oct 30 15:37:06 2010	(r16517)
+++ dists/sid/linux-2.6/debian/changelog	Sun Oct 31 13:48:07 2010	(r16518)
@@ -1,6 +1,7 @@
 linux-2.6 (2.6.32-28) UNRELEASED; urgency=low
 
   * ipc: initialize structure memory to zero for shmctl.
+  * drm/i915: set DIDL using the ACPI video output device _ADR method return.
 
  -- maximilian attems <maks at debian.org>  Sat, 30 Oct 2010 14:14:37 +0200
 

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-i915-set-DIDL-using-the-ACPI-video-output-device.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-i915-set-DIDL-using-the-ACPI-video-output-device.patch	Sun Oct 31 13:48:07 2010	(r16518)
@@ -0,0 +1,97 @@
+From 3143751ff51a163b77f7efd389043e038f3e008e Mon Sep 17 00:00:00 2001
+From: Zhang Rui <rui.zhang at intel.com>
+Date: Mon, 29 Mar 2010 15:12:16 +0800
+Subject: [PATCH] drm/i915: set DIDL using the ACPI video output device _ADR method return.
+
+we used to set the DIDL in the output device detected order.
+But some BIOSes requires it to be initialized in the ACPI device order.
+e.g. the value of the first field in DIDL stands for the first
+ACPI video output device in ACPI namespace.
+
+Now we initialize the DIDL using the device id, i.e. _ADR return value,
+of each ACPI video device, if it is not 0.
+https://bugzilla.kernel.org/show_bug.cgi?id=15054
+
+Signed-off-by: Zhang Rui <rui.zhang at intel.com>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/i915/i915_opregion.c |   54 +++++++++++++++++++++++++++++++--
+ 1 files changed, 50 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_opregion.c b/drivers/gpu/drm/i915/i915_opregion.c
+index 7cc8410..8fcc75c 100644
+--- a/drivers/gpu/drm/i915/i915_opregion.c
++++ b/drivers/gpu/drm/i915/i915_opregion.c
+@@ -382,8 +382,57 @@ static void intel_didl_outputs(struct drm_device *dev)
+ 	struct drm_i915_private *dev_priv = dev->dev_private;
+ 	struct intel_opregion *opregion = &dev_priv->opregion;
+ 	struct drm_connector *connector;
++	acpi_handle handle;
++	struct acpi_device *acpi_dev, *acpi_cdev, *acpi_video_bus = NULL;
++	unsigned long long device_id;
++	acpi_status status;
+ 	int i = 0;
+ 
++	handle = DEVICE_ACPI_HANDLE(&dev->pdev->dev);
++	if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev)))
++		return;
++
++	if (acpi_is_video_device(acpi_dev))
++		acpi_video_bus = acpi_dev;
++	else {
++		list_for_each_entry(acpi_cdev, &acpi_dev->children, node) {
++			if (acpi_is_video_device(acpi_cdev)) {
++				acpi_video_bus = acpi_cdev;
++				break;
++			}
++		}
++	}
++
++	if (!acpi_video_bus) {
++		printk(KERN_WARNING "No ACPI video bus found\n");
++		return;
++	}
++
++	list_for_each_entry(acpi_cdev, &acpi_video_bus->children, node) {
++		if (i >= 8) {
++			dev_printk (KERN_ERR, &dev->pdev->dev,
++				    "More than 8 outputs detected\n");
++			return;
++		}
++		status =
++			acpi_evaluate_integer(acpi_cdev->handle, "_ADR",
++						NULL, &device_id);
++		if (ACPI_SUCCESS(status)) {
++			if (!device_id)
++				goto blind_set;
++			opregion->acpi->didl[i] = (u32)(device_id & 0x0f0f);
++			i++;
++		}
++	}
++
++end:
++	/* If fewer than 8 outputs, the list must be null terminated */
++	if (i < 8)
++		opregion->acpi->didl[i] = 0;
++	return;
++
++blind_set:
++	i = 0;
+ 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ 		int output_type = ACPI_OTHER_OUTPUT;
+ 		if (i >= 8) {
+@@ -416,10 +465,7 @@ static void intel_didl_outputs(struct drm_device *dev)
+ 		opregion->acpi->didl[i] |= (1<<31) | output_type | i;
+ 		i++;
+ 	}
+-
+-	/* If fewer than 8 outputs, the list must be null terminated */
+-	if (i < 8)
+-		opregion->acpi->didl[i] = 0;
++	goto end;
+ }
+ 
+ int intel_opregion_init(struct drm_device *dev, int resume)
+-- 
+1.7.1
+

Modified: dists/sid/linux-2.6/debian/patches/series/28
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/28	Sat Oct 30 15:37:06 2010	(r16517)
+++ dists/sid/linux-2.6/debian/patches/series/28	Sun Oct 31 13:48:07 2010	(r16518)
@@ -1 +1,2 @@
 + bugfix/all/ipc_initialize_structure_memory_to_zero.patch
++ bugfix/all/drm-i915-set-DIDL-using-the-ACPI-video-output-device.patch



More information about the Kernel-svn-changes mailing list