Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 6416245b9da2a3f52de85d70f867f6ef > files > 1

lirc-0.8.3-4.1mdv2009.0.src.rpm

--- drivers/lirc_i2c/lirc_i2c.c	2008/05/04 13:49:53	1.46
+++ drivers/lirc_i2c/lirc_i2c.c	2008/08/12 20:50:39	1.47
@@ -54,7 +54,11 @@
 #include <linux/i2c.h>
 #include <linux/i2c-algo-bit.h>
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)
 #include <asm/semaphore.h>
+#else
+#include <linux/semaphore.h>
+#endif
 
 #include "drivers/kcompat.h"
 #include "drivers/lirc_dev/lirc_dev.h"
--- drivers/lirc_dev/lirc_dev.c	2008/01/13 10:45:02	1.56
+++ drivers/lirc_dev/lirc_dev.c	2008/09/06 07:30:16	1.60
@@ -49,7 +49,11 @@
 #include <linux/uaccess.h>
 #include <linux/errno.h>
 #endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)
 #include <asm/semaphore.h>
+#else
+#include <linux/semaphore.h>
+#endif
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
 #include <linux/wrapper.h>
 #endif
@@ -139,14 +143,6 @@
 {
 	dprintk(LOGHEAD "cleaning up\n", ir->p.name, ir->p.minor);
 
-#ifdef LIRC_HAVE_DEVFS_24
-	devfs_unregister(ir->devfs_handle);
-#endif
-#ifdef LIRC_HAVE_DEVFS_26
-	devfs_remove(DEV_LIRC "/%u", ir->p.minor);
-#endif
-	class_device_destroy(lirc_class, MKDEV(IRCTL_DEV_MAJOR, ir->p.minor));
-
 	if (ir->buf != ir->p.rbuf) {
 		lirc_buffer_free(ir->buf);
 		kfree(ir->buf);
@@ -400,9 +396,9 @@
 			S_IFCHR|S_IRUSR|S_IWUSR,
 			DEV_LIRC "/%u", ir->p.minor);
 #endif
-	(void) lirc_class_device_create(lirc_class, NULL,
-					MKDEV(IRCTL_DEV_MAJOR, ir->p.minor),
-					ir->p.dev, "lirc%u", ir->p.minor);
+	(void) lirc_device_create(lirc_class, ir->p.dev,
+				  MKDEV(IRCTL_DEV_MAJOR, ir->p.minor),
+				  "lirc%u", ir->p.minor);
 
 	if (p->sample_rate || p->get_queue) {
 		/* try to fire up polling thread */
@@ -441,7 +437,8 @@
 	return minor;
 
 out_sysfs:
-	class_device_destroy(lirc_class, MKDEV(IRCTL_DEV_MAJOR, ir->p.minor));
+	lirc_device_destroy(lirc_class,
+			    MKDEV(IRCTL_DEV_MAJOR, ir->p.minor));
 #ifdef LIRC_HAVE_DEVFS_24
 	devfs_unregister(ir->devfs_handle);
 #endif
@@ -520,7 +517,18 @@
 		ir->p.set_use_dec(ir->p.data);
 		module_put(ir->p.owner);
 		up(&ir->buffer_sem);
-	} else
+	}
+
+#ifdef LIRC_HAVE_DEVFS_24
+	devfs_unregister(ir->devfs_handle);
+#endif
+#ifdef LIRC_HAVE_DEVFS_26
+	devfs_remove(DEV_LIRC "/%u", ir->p.minor);
+#endif
+	lirc_device_destroy(lirc_class,
+			    MKDEV(IRCTL_DEV_MAJOR, ir->p.minor));
+
+	if (!ir->open)
 		cleanup(ir);
 	up(&plugin_lock);
 
--- drivers/kcompat.h	2008/01/13 10:26:28	5.34
+++ drivers/kcompat.h	2008/05/14 16:37:49	5.36
@@ -1,4 +1,4 @@
-/*      $Id: kcompat.h,v 5.34 2008/01/13 10:26:28 lirc Exp $      */
+/*      $Id: kcompat.h,v 5.36 2008/05/14 16:37:49 lirc Exp $      */
 
 #ifndef _KCOMPAT_H
 #define _KCOMPAT_H
@@ -36,10 +36,10 @@
 	class_simple_destroy(cls);
 }
 
-#define lirc_class_device_create(cs, parent, dev, device, fmt, args...) \
-	class_simple_device_add(cs, dev, device, fmt, ## args)
+#define lirc_device_create(cs, parent, dev, fmt, args...) \
+	class_simple_device_add(cs, dev, parent, fmt, ## args)
 
-static inline void class_device_destroy(lirc_class_t *cls, dev_t devt)
+static inline void lirc_device_destroy(lirc_class_t *cls, dev_t devt)
 {
 	class_simple_device_remove(devt);
 }
@@ -48,20 +48,40 @@
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 15)
 
-#define lirc_class_device_create(cs, parent, dev, device, fmt, args...) \
-	class_device_create(cs, dev, device, fmt, ## args)
+#define lirc_device_create(cs, parent, dev, fmt, args...) \
+	class_device_create(cs, dev, parent, fmt, ## args)
 
 #else /* >= 2.6.15 */
 
-#define lirc_class_device_create class_device_create
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
+
+#define lirc_device_create(cs, parent, dev, fmt, args...) \
+	class_device_create(cs, NULL, dev, parent, fmt, ## args)
+
+#else /* >= 2.6.26 */
+
+#define lirc_device_create device_create
+
+#endif /* >= 2.6.26 */
+
 #define LIRC_DEVFS_PREFIX
 
-#endif
+#endif /* >= 2.6.15 */
 
 typedef struct class lirc_class_t;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
+
+#define lirc_device_destroy class_device_destroy
+
+#else
+
+#define lirc_device_destroy device_destroy
+
 #endif
 
+#endif /* >= 2.6.13 */
+
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
 #define LIRC_HAVE_DEVFS
 #define LIRC_HAVE_DEVFS_24
@@ -133,8 +153,8 @@
 #ifndef LIRC_HAVE_SYSFS
 #define class_destroy(x) do { } while (0)
 #define class_create(x, y) NULL
-#define class_device_destroy(x, y) do { } while (0)
-#define lirc_class_device_create(x, y, z, xx, yy, zz) 0
+#define lirc_class_destroy(x, y) do { } while (0)
+#define lirc_class_create(x, y, z, xx, yy, zz) 0
 #define IS_ERR(x) 0
 typedef struct class_simple
 {