--- /dev/null
+Kernel 2.6.26 removes an API previously used by lirc:
+ - http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c3b19ff06e0808555403491d61e8f0cbbb53e933
+
+* add compatibility patch for kernels >= 2.6.26, based on upstream CVS.
+ - http://lirc.cvs.sourceforge.net/lirc/lirc/drivers/kcompat.h?r1=5.34&r2=5.36
+ - http://lirc.cvs.sourceforge.net/lirc/lirc/drivers/lirc_dev/lirc_dev.c?r1=1.57&r2=1.58
+
+Copyright: (C) 2008 Christoph Bartelmus <lirc@bartelmus.de>
+
+--- a/drivers/kcompat.h
++++ b/drivers/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
+ {
+--- a/drivers/lirc_dev/lirc_dev.c
++++ b/drivers/lirc_dev/lirc_dev.c
+@@ -145,7 +145,8 @@
+ #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));
++ lirc_device_destroy(lirc_class,
++ MKDEV(IRCTL_DEV_MAJOR, ir->p.minor));
+
+ if (ir->buf != ir->p.rbuf) {
+ lirc_buffer_free(ir->buf);
+@@ -400,9 +401,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 +442,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