Just tested sending ir with the updated lirc and mceusb...
Juergen Lock
nox at jelal.kn-bremen.de
Sun Feb 20 11:37:25 UTC 2011
..and found a few more lirc ioctls that needed fixing (or at
least for 64 bit hosts), so here is an update to my remote patch
in webcamd svn:
Index: patches/lirc-patches.diff
===================================================================
--- patches/lirc-patches.diff (revision 1750)
+++ patches/lirc-patches.diff (working copy)
@@ -1,3 +1,46 @@
+--- ../v4l-dvb/linux/drivers/media/IR/ir-lirc-codec.c.orig
++++ ../v4l-dvb/linux/drivers/media/IR/ir-lirc-codec.c
+@@ -104,7 +104,7 @@ static int ir_lirc_ioctl(struct inode *n
+ struct ir_input_dev *ir_dev;
+ int ret = 0;
+ void *drv_data;
+- unsigned long val;
++ __u32 val;
+
+ lirc = lirc_get_pdata(filep);
+ if (!lirc)
+@@ -118,7 +118,7 @@ static int ir_lirc_ioctl(struct inode *n
+
+ switch (cmd) {
+ case LIRC_SET_TRANSMITTER_MASK:
+- ret = get_user(val, (unsigned long *)arg);
++ ret = get_user(val, (__u32 *)arg);
+ if (ret)
+ return ret;
+
+@@ -129,7 +129,7 @@ static int ir_lirc_ioctl(struct inode *n
+ break;
+
+ case LIRC_SET_SEND_CARRIER:
+- ret = get_user(val, (unsigned long *)arg);
++ ret = get_user(val, (__u32 *)arg);
+ if (ret)
+ return ret;
+
+@@ -141,11 +141,11 @@ static int ir_lirc_ioctl(struct inode *n
+
+ case LIRC_GET_SEND_MODE:
+ val = LIRC_CAN_SEND_PULSE & LIRC_CAN_SEND_MASK;
+- ret = put_user(val, (unsigned long *)arg);
++ ret = put_user(val, (__u32 *)arg);
+ break;
+
+ case LIRC_SET_SEND_MODE:
+- ret = get_user(val, (unsigned long *)arg);
++ ret = get_user(val, (__u32 *)arg);
+ if (ret)
+ return ret;
+
--- ../v4l-dvb/linux/drivers/media/IR/lirc_dev.c.orig
+++ ../v4l-dvb/linux/drivers/media/IR/lirc_dev.c
@@ -519,7 +519,7 @@ EXPORT_SYMBOL(lirc_dev_fop_poll);
@@ -36,6 +79,33 @@
if (!result && !(LIRC_MODE2REC(mode) & ir->d.features))
result = -EINVAL;
/*
+@@ -563,7 +563,7 @@ int lirc_dev_fop_ioctl(struct inode *ino
+ */
+ break;
+ case LIRC_GET_LENGTH:
+- result = put_user(ir->d.code_length, (unsigned long *)arg);
++ result = put_user(ir->d.code_length, (__u32 *)arg);
+ break;
+ case LIRC_GET_MIN_TIMEOUT:
+ if (!(ir->d.features & LIRC_CAN_SET_REC_TIMEOUT) ||
+@@ -572,7 +572,7 @@ int lirc_dev_fop_ioctl(struct inode *ino
+ break;
+ }
+
+- result = put_user(ir->d.min_timeout, (unsigned long *)arg);
++ result = put_user(ir->d.min_timeout, (__u32 *)arg);
+ break;
+ case LIRC_GET_MAX_TIMEOUT:
+ if (!(ir->d.features & LIRC_CAN_SET_REC_TIMEOUT) ||
+@@ -581,7 +581,7 @@ int lirc_dev_fop_ioctl(struct inode *ino
+ break;
+ }
+
+- result = put_user(ir->d.max_timeout, (unsigned long *)arg);
++ result = put_user(ir->d.max_timeout, (__u32 *)arg);
+ break;
+ default:
+ result = -EINVAL;
--- ../v4l-dvb/linux/drivers/media/IR/lirc_dev.h.orig
+++ ../v4l-dvb/linux/drivers/media/IR/lirc_dev.h
@@ -128,7 +128,7 @@ struct lirc_driver {
More information about the freebsd-multimedia
mailing list