summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2009-05-11 00:21:14 +0200
committerBen Skeggs <bskeggs@redhat.com>2009-05-28 17:26:37 +1000
commit651e3dc6dd58a79c90db7513ee2fb28360a4560d (patch)
tree54847b5fc4bc81ca56acb2af04ab728c1bda401f
parentc65a343ed29c24f812ca919f40dfeee948b6f14a (diff)
drm: Fix compilation on 2.6.30
This fixes DRM compilation of nouveau.ko on kernel 2.6.30. Signed-off-by: Michael Buesch <mb@bu3sch.de>
-rw-r--r--linux-core/drm_os_linux.h19
-rw-r--r--linux-core/drm_sysfs.c8
2 files changed, 24 insertions, 3 deletions
diff --git a/linux-core/drm_os_linux.h b/linux-core/drm_os_linux.h
index f58296b7..be5e0991 100644
--- a/linux-core/drm_os_linux.h
+++ b/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
diff --git a/linux-core/drm_sysfs.c b/linux-core/drm_sysfs.c
index 6de93679..e9e7a316 100644
--- a/linux-core/drm_sysfs.c
+++ b/linux-core/drm_sysfs.c
@@ -168,8 +168,12 @@ int drm_sysfs_device_add(struct drm_minor *minor)
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) {