[Nouveau] [PATCH] drm: Fix compilation on 2.6.30

Michael Buesch mb at bu3sch.de
Sun May 10 15:21:14 PDT 2009


This fixes DRM compilation of nouveau.ko on kernel 2.6.30.

Signed-off-by: Michael Buesch <mb at bu3sch.de>

---
 linux-core/drm_os_linux.h |   19 ++++++++++++++++++-
 linux-core/drm_sysfs.c    |    8 ++++++--
 2 files changed, 24 insertions(+), 3 deletions(-)

--- drm.orig/linux-core/drm_os_linux.h
+++ drm/linux-core/drm_os_linux.h
@@ -32,12 +32,29 @@
 /** IRQ handler arguments and return type and values */
 #define DRM_IRQ_ARGS		int irq, void *arg
 /** backwards compatibility with old irq return values */
-#ifndef IRQ_HANDLED
+#if !defined(IRQ_HANDLED) && LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,29)
 typedef void irqreturn_t;
 #define IRQ_HANDLED		/* nothing */
 #define IRQ_NONE		/* nothing */
 #endif
 
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25)
+static inline const char *dev_name(const struct device *dev)
+{
+	return dev->bus_id;
+}
+static inline int dev_set_name(struct device *dev, const char *name, ...)
+{
+	va_list vargs;
+
+	va_start(vargs, name);
+	vsnprintf(dev->bus_id, sizeof(dev->bus_id), name, vargs);
+	va_end(vargs);
+
+	return 0;
+}
+#endif
+
 /** AGP types */
 #if __OS_HAS_AGP
 #define DRM_AGP_MEM		struct agp_memory
--- drm.orig/linux-core/drm_sysfs.c
+++ drm/linux-core/drm_sysfs.c
@@ -168,8 +168,12 @@ int drm_sysfs_device_add(struct drm_mino
 	minor->kdev.release = drm_sysfs_device_release;
 	minor->kdev.devt = minor->device;
 	minor_str = "card%d";
-	
-	snprintf(minor->kdev.bus_id, BUS_ID_SIZE, minor_str, minor->index);
+
+	err = dev_set_name(&minor->kdev, minor_str, minor->index);
+	if (err) {
+		DRM_ERROR("device set name failed: %d\n", err);
+		goto err_out;
+	}
 
 	err = device_register(&minor->kdev);
 	if (err) {

-- 
Greetings, Michael.


More information about the Nouveau mailing list