drm: Apply all changes from 2.6.33

Add nouveau driver.
i915: Restore video overlay support (Closes: #560033).
radeon: Enable KMS support.

svn path=/dists/sid/linux-2.6/; revision=15304
This commit is contained in:
Ben Hutchings 2010-03-02 00:09:46 +00:00
parent 7ee30c2c6c
commit 4e1a5a5116
14 changed files with 84713 additions and 0 deletions

6
debian/changelog vendored
View File

@ -14,6 +14,12 @@ linux-2.6 (2.6.32-10) UNRELEASED; urgency=low
[ Bastian Blank ]
* Add support for Xen dom0 into its featureset.
[ Ben Hutchings ]
* drm: Apply all changes from 2.6.33:
- Add nouveau driver
- i915: Restore video overlay support (Closes: #560033)
- radeon: Enable KMS support
-- maximilian attems <maks@debian.org> Thu, 25 Feb 2010 13:07:47 +0100
linux-2.6 (2.6.32-9) unstable; urgency=high

View File

@ -199,6 +199,14 @@ CONFIG_DRM_RADEON=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hid/usbhid/Kconfig
##

10
debian/config/config vendored
View File

@ -318,11 +318,21 @@ CONFIG_FIREWIRE_NET=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
# CONFIG_DRM_NOUVEAU is not set
##
## file: drivers/gpu/drm/radeon/Kconfig
##
# CONFIG_DRM_RADEON_KMS is not set
##
## file: drivers/gpu/drm/vmwgfx/Kconfig
##
# CONFIG_DRM_VMWGFX is not set
##
## file: drivers/hid/Kconfig
##

View File

@ -135,6 +135,14 @@ CONFIG_DRM_RADEON=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hid/usbhid/Kconfig
##

View File

@ -367,6 +367,14 @@ CONFIG_DRM_I915=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hid/usbhid/Kconfig
##

View File

@ -259,6 +259,14 @@ CONFIG_DRM_MGA=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hwmon/Kconfig
##

View File

@ -251,6 +251,14 @@ CONFIG_DRM_MGA=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hwmon/Kconfig
##

View File

@ -177,6 +177,14 @@ CONFIG_DRM_RADEON=m
CONFIG_DRM_MGA=m
# CONFIG_DRM_SIS is not set
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hid/usbhid/Kconfig
##

View File

@ -56,6 +56,14 @@ CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_MGA=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
# CONFIG_DRM_NOUVEAU_DEBUG is not set
CONFIG_DRM_I2C_CH7006=m
##
## file: drivers/hid/usbhid/Kconfig
##

View File

@ -0,0 +1,140 @@
From: Ben Hutchings <ben@decadent.org.uk>
Subject: [PATCH] drm: Revert "lib: Introduce generic list_sort function"
This reverts commit 2c761270d5520dd84ab0b4e47c24d99ff8503c38
"lib: Introduce generic list_sort function" in drivers/gpu/drm, which
was included in drm-2.6.32.9-2.6.33.patch. We don't want to include
that change from 2.6.33. However, we do declare list_sort() as static.
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1,4 +1,9 @@
/*
+ * The list_sort function is (presumably) licensed under the GPL (see the
+ * top level "COPYING" file for details).
+ *
+ * The remainder of this file is:
+ *
* Copyright © 1997-2003 by The XFree86 Project, Inc.
* Copyright © 2007 Dave Airlie
* Copyright © 2007-2008 Intel Corporation
@@ -31,7 +36,6 @@
*/
#include <linux/list.h>
-#include <linux/list_sort.h>
#include "drmP.h"
#include "drm.h"
#include "drm_crtc.h"
@@ -851,7 +855,6 @@ EXPORT_SYMBOL(drm_mode_prune_invalid);
/**
* drm_mode_compare - compare modes for favorability
- * @priv: unused
* @lh_a: list_head for first mode
* @lh_b: list_head for second mode
*
@@ -865,7 +868,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid);
* Negative if @lh_a is better than @lh_b, zero if they're equivalent, or
* positive if @lh_b is better than @lh_a.
*/
-static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b)
+static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b)
{
struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head);
struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head);
@@ -882,6 +885,85 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head
return diff;
}
+/* FIXME: what we don't have a list sort function? */
+/* list sort from Mark J Roberts (mjr@znex.org) */
+static void list_sort(struct list_head *head,
+ int (*cmp)(struct list_head *a, struct list_head *b))
+{
+ struct list_head *p, *q, *e, *list, *tail, *oldhead;
+ int insize, nmerges, psize, qsize, i;
+
+ list = head->next;
+ list_del(head);
+ insize = 1;
+ for (;;) {
+ p = oldhead = list;
+ list = tail = NULL;
+ nmerges = 0;
+
+ while (p) {
+ nmerges++;
+ q = p;
+ psize = 0;
+ for (i = 0; i < insize; i++) {
+ psize++;
+ q = q->next == oldhead ? NULL : q->next;
+ if (!q)
+ break;
+ }
+
+ qsize = insize;
+ while (psize > 0 || (qsize > 0 && q)) {
+ if (!psize) {
+ e = q;
+ q = q->next;
+ qsize--;
+ if (q == oldhead)
+ q = NULL;
+ } else if (!qsize || !q) {
+ e = p;
+ p = p->next;
+ psize--;
+ if (p == oldhead)
+ p = NULL;
+ } else if (cmp(p, q) <= 0) {
+ e = p;
+ p = p->next;
+ psize--;
+ if (p == oldhead)
+ p = NULL;
+ } else {
+ e = q;
+ q = q->next;
+ qsize--;
+ if (q == oldhead)
+ q = NULL;
+ }
+ if (tail)
+ tail->next = e;
+ else
+ list = e;
+ e->prev = tail;
+ tail = e;
+ }
+ p = q;
+ }
+
+ tail->next = list;
+ list->prev = tail;
+
+ if (nmerges <= 1)
+ break;
+
+ insize *= 2;
+ }
+
+ head->next = list;
+ head->prev = list->prev;
+ list->prev->next = head;
+ list->prev = head;
+}
+
/**
* drm_mode_sort - sort mode list
* @mode_list: list to sort
@@ -893,7 +975,7 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head
*/
void drm_mode_sort(struct list_head *mode_list)
{
- list_sort(NULL, mode_list, drm_mode_compare);
+ list_sort(mode_list, drm_mode_compare);
}
EXPORT_SYMBOL(drm_mode_sort);

View File

@ -0,0 +1,15 @@
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -101,8 +101,10 @@
source "drivers/staging/line6/Kconfig"
-source "drivers/gpu/drm/radeon/Kconfig"
-
+source "drivers/gpu/drm/vmwgfx/Kconfig"
+
+source "drivers/gpu/drm/nouveau/Kconfig"
+
source "drivers/staging/octeon/Kconfig"
source "drivers/staging/serqt_usb2/Kconfig"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -160,9 +160,7 @@
radeon_PCI_IDS
};
-#if defined(CONFIG_DRM_RADEON_KMS)
MODULE_DEVICE_TABLE(pci, pciidlist);
-#endif
static struct drm_driver driver_old = {
.driver_features =

View File

@ -1,2 +1,10 @@
+ bugfix/all/tcp-fix-ICMP-RTO-war.patch
+ bugfix/sparc/stack-alignment.patch
- bugfix/all/radeon_block_ability_userspace_app.patch
- bugfix/all/drm-i915-give-up-on-8xx-lid-status.patch
- bugfix/all/drm-i915-disable-powersave.patch
- features/all/i915-autoload-without-CONFIG_DRM_I915_KMS.patch
+ features/all/drm-2.6.32.9-2.6.33.patch
+ debian/drm-staging-2.6.32.9-2.6.33.patch
+ debian/drm-restore-private-list_sort.patch
+ features/all/radeon-autoload-without-CONFIG_DRM_RADEON_KMS.patch