From 651e3dc6dd58a79c90db7513ee2fb28360a4560d Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Mon, 11 May 2009 00:21:14 +0200 Subject: drm: Fix compilation on 2.6.30 This fixes DRM compilation of nouveau.ko on kernel 2.6.30. Signed-off-by: Michael Buesch --- linux-core/drm_os_linux.h | 19 ++++++++++++++++++- linux-core/drm_sysfs.c | 8 ++++++-- 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) { -- cgit v1.2.3