From afa68b682474d73136481180337c87caf5441089304fe59bb8bdc170a7271dc4 Mon Sep 17 00:00:00 2001 From: Ludwig Nussel Date: Wed, 9 Feb 2011 08:26:24 +0000 Subject: [PATCH] - fix lircd not working with in-kernel drivers (bnc#668427) OBS-URL: https://build.opensuse.org/package/show/vdr/lirc?expand=0&rev=27 --- lirc-0.8.7-lirc_h.diff | 208 +++++++++++++++++++++++++++++++++++++++ lirc-0.8.7-lirc_h_2.diff | 46 +++++++++ lirc.changes | 5 + lirc.spec | 4 + 4 files changed, 263 insertions(+) create mode 100644 lirc-0.8.7-lirc_h.diff create mode 100644 lirc-0.8.7-lirc_h_2.diff diff --git a/lirc-0.8.7-lirc_h.diff b/lirc-0.8.7-lirc_h.diff new file mode 100644 index 0000000..5bdab8d --- /dev/null +++ b/lirc-0.8.7-lirc_h.diff @@ -0,0 +1,208 @@ +From d1672cf6eea5c220d6954cba0e75816e0157e22f Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Tue, 13 Jul 2010 23:03:19 -0400 +Subject: [PATCH] pull in slightly updated upstreamed lirc.h + +Signed-off-by: Jarod Wilson +--- + drivers/lirc.h | 130 ++++++++++++++++++++++++++++---------------------------- + 1 files changed, 65 insertions(+), 65 deletions(-) + +Index: lirc-0.8.7/drivers/lirc.h +=================================================================== +--- lirc-0.8.7.orig/drivers/lirc.h ++++ lirc-0.8.7/drivers/lirc.h +@@ -1,21 +1,16 @@ +-/* $Id: lirc.h,v 5.27 2010/05/13 15:45:48 lirc Exp $ */ ++/* ++ * lirc.h - linux infrared remote control header file ++ * last modified 2010/06/03 by Jarod Wilson ++ */ + + #ifndef _LINUX_LIRC_H + #define _LINUX_LIRC_H + +-#if defined(__linux__) ++#include + #include +-#elif defined(_NetBSD_) +-#include +-#elif defined(_CYGWIN_) +-#define __USE_LINUX_IOCTL_DEFS +-#include +-#endif + +-/* */ + #define PULSE_BIT 0x01000000 + #define PULSE_MASK 0x00FFFFFF +-/* */ + + #define LIRC_MODE2_SPACE 0x00000000 + #define LIRC_MODE2_PULSE 0x01000000 +@@ -38,7 +33,7 @@ + #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY) + #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT) + +-typedef int lirc_t; ++#define lirc_t int + + /*** lirc compatible hardware features ***/ + +@@ -50,17 +45,13 @@ typedef int lirc_t; + #define LIRC_MODE_RAW 0x00000001 + #define LIRC_MODE_PULSE 0x00000002 + #define LIRC_MODE_MODE2 0x00000004 +-/* obsolete: #define LIRC_MODE_CODE 0x00000008 */ + #define LIRC_MODE_LIRCCODE 0x00000010 +-/* obsolete: #define LIRC_MODE_STRING 0x00000020 */ + + + #define LIRC_CAN_SEND_RAW LIRC_MODE2SEND(LIRC_MODE_RAW) + #define LIRC_CAN_SEND_PULSE LIRC_MODE2SEND(LIRC_MODE_PULSE) + #define LIRC_CAN_SEND_MODE2 LIRC_MODE2SEND(LIRC_MODE_MODE2) +-/* obsolete: #define LIRC_CAN_SEND_CODE LIRC_MODE2SEND(LIRC_MODE_CODE) */ + #define LIRC_CAN_SEND_LIRCCODE LIRC_MODE2SEND(LIRC_MODE_LIRCCODE) +-/* obsolete: #define LIRC_CAN_SEND_STRING LIRC_MODE2SEND(LIRC_MODE_STRING) */ + + #define LIRC_CAN_SEND_MASK 0x0000003f + +@@ -71,9 +62,7 @@ typedef int lirc_t; + #define LIRC_CAN_REC_RAW LIRC_MODE2REC(LIRC_MODE_RAW) + #define LIRC_CAN_REC_PULSE LIRC_MODE2REC(LIRC_MODE_PULSE) + #define LIRC_CAN_REC_MODE2 LIRC_MODE2REC(LIRC_MODE_MODE2) +-/* obsolete: #define LIRC_CAN_REC_CODE LIRC_MODE2REC(LIRC_MODE_CODE) */ + #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE) +-/* obsolete: #define LIRC_CAN_REC_STRING LIRC_MODE2REC(LIRC_MODE_STRING) */ + + #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK) + +@@ -95,60 +84,71 @@ typedef int lirc_t; + + /*** IOCTL commands for lirc driver ***/ + +-#define LIRC_GET_FEATURES _IOR('i', 0x00000000, unsigned long) ++#define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32) + +-#define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, unsigned long) +-#define LIRC_GET_REC_MODE _IOR('i', 0x00000002, unsigned long) +-#define LIRC_GET_SEND_CARRIER _IOR('i', 0x00000003, unsigned int) +-#define LIRC_GET_REC_CARRIER _IOR('i', 0x00000004, unsigned int) +-#define LIRC_GET_SEND_DUTY_CYCLE _IOR('i', 0x00000005, unsigned int) +-#define LIRC_GET_REC_DUTY_CYCLE _IOR('i', 0x00000006, unsigned int) +-#define LIRC_GET_REC_RESOLUTION _IOR('i', 0x00000007, unsigned int) +- +-#define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, lirc_t) +-#define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, lirc_t) +- +-#define LIRC_GET_MIN_FILTER_PULSE _IOR('i', 0x0000000a, lirc_t) +-#define LIRC_GET_MAX_FILTER_PULSE _IOR('i', 0x0000000b, lirc_t) +-#define LIRC_GET_MIN_FILTER_SPACE _IOR('i', 0x0000000c, lirc_t) +-#define LIRC_GET_MAX_FILTER_SPACE _IOR('i', 0x0000000d, lirc_t) ++#define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32) ++#define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32) ++#define LIRC_GET_SEND_CARRIER _IOR('i', 0x00000003, __u32) ++#define LIRC_GET_REC_CARRIER _IOR('i', 0x00000004, __u32) ++#define LIRC_GET_SEND_DUTY_CYCLE _IOR('i', 0x00000005, __u32) ++#define LIRC_GET_REC_DUTY_CYCLE _IOR('i', 0x00000006, __u32) ++#define LIRC_GET_REC_RESOLUTION _IOR('i', 0x00000007, __u32) ++ ++#define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, __u32) ++#define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, __u32) ++ ++#if 0 /* these ioctls are not used at the moment */ ++#define LIRC_GET_MIN_FILTER_PULSE _IOR('i', 0x0000000a, __u32) ++#define LIRC_GET_MAX_FILTER_PULSE _IOR('i', 0x0000000b, __u32) ++#define LIRC_GET_MIN_FILTER_SPACE _IOR('i', 0x0000000c, __u32) ++#define LIRC_GET_MAX_FILTER_SPACE _IOR('i', 0x0000000d, __u32) ++#endif + + /* code length in bits, currently only for LIRC_MODE_LIRCCODE */ +-#define LIRC_GET_LENGTH _IOR('i', 0x0000000f, unsigned long) +- +-/* all values set should be reset by the driver when the device is +- reopened */ ++#define LIRC_GET_LENGTH _IOR('i', 0x0000000f, __u32) + +-/* obsolete: drivers only support one mode */ +-#define LIRC_SET_SEND_MODE _IOW('i', 0x00000011, unsigned long) +-/* obsolete: drivers only support one mode */ +-#define LIRC_SET_REC_MODE _IOW('i', 0x00000012, unsigned long) ++#define LIRC_SET_SEND_MODE _IOW('i', 0x00000011, __u32) ++#define LIRC_SET_REC_MODE _IOW('i', 0x00000012, __u32) + /* Note: these can reset the according pulse_width */ +-#define LIRC_SET_SEND_CARRIER _IOW('i', 0x00000013, unsigned int) +-#define LIRC_SET_REC_CARRIER _IOW('i', 0x00000014, unsigned int) +-#define LIRC_SET_SEND_DUTY_CYCLE _IOW('i', 0x00000015, unsigned int) +-#define LIRC_SET_REC_DUTY_CYCLE _IOW('i', 0x00000016, unsigned int) +-#define LIRC_SET_TRANSMITTER_MASK _IOW('i', 0x00000017, unsigned int) +- +-/* a value of 0 disables all hardware timeouts and data should be +- reported as soon as possible */ +-#define LIRC_SET_REC_TIMEOUT _IOW('i', 0x00000018, lirc_t) ++#define LIRC_SET_SEND_CARRIER _IOW('i', 0x00000013, __u32) ++#define LIRC_SET_REC_CARRIER _IOW('i', 0x00000014, __u32) ++#define LIRC_SET_SEND_DUTY_CYCLE _IOW('i', 0x00000015, __u32) ++#define LIRC_SET_REC_DUTY_CYCLE _IOW('i', 0x00000016, __u32) ++#define LIRC_SET_TRANSMITTER_MASK _IOW('i', 0x00000017, __u32) ++ ++/* ++ * when a timeout != 0 is set the driver will send a ++ * LIRC_MODE2_TIMEOUT data packet, otherwise LIRC_MODE2_TIMEOUT is ++ * never sent, timeout is disabled by default ++ */ ++#define LIRC_SET_REC_TIMEOUT _IOW('i', 0x00000018, __u32) ++ ++#if 0 /* these ioctls are not used at the moment */ + /* 1 enables, 0 disables timeout reports in MODE2 */ +-#define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, unsigned int) ++#define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, __u32) + +-/* pulses shorter than this are filtered out by hardware (software +- emulation in lirc_dev/lircd?) */ +-#define LIRC_SET_REC_FILTER_PULSE _IOW('i', 0x0000001a, lirc_t) +-/* spaces shorter than this are filtered out by hardware (software +- emulation in lirc_dev/lircd?) */ +-#define LIRC_SET_REC_FILTER_SPACE _IOW('i', 0x0000001b, lirc_t) +-/* if filter cannot be set independently for pulse/space, this should +- be used */ +-#define LIRC_SET_REC_FILTER _IOW('i', 0x0000001c, lirc_t) +- +-/* if enabled from the next key press on the driver will send +- LIRC_MODE2_FREQUENCY packets */ +-#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, unsigned int) ++/* ++ * pulses shorter than this are filtered out by hardware (software ++ * emulation in lirc_dev?) ++ */ ++#define LIRC_SET_REC_FILTER_PULSE _IOW('i', 0x0000001a, __u32) ++/* ++ * spaces shorter than this are filtered out by hardware (software ++ * emulation in lirc_dev?) ++ */ ++#define LIRC_SET_REC_FILTER_SPACE _IOW('i', 0x0000001b, __u32) ++/* ++ * if filter cannot be set independantly for pulse/space, this should ++ * be used ++ */ ++#define LIRC_SET_REC_FILTER _IOW('i', 0x0000001c, __u32) ++ ++/* ++ * if enabled from the next key press on the driver will send ++ * LIRC_MODE2_FREQUENCY packets ++ */ ++#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32) ++#endif + + /* + * to set a range use +@@ -157,8 +157,8 @@ typedef int lirc_t; + * LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER with the upper bound + */ + +-#define LIRC_SET_REC_DUTY_CYCLE_RANGE _IOW('i', 0x0000001e, unsigned int) +-#define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, unsigned int) ++#define LIRC_SET_REC_DUTY_CYCLE_RANGE _IOW('i', 0x0000001e, __u32) ++#define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, __u32) + + #define LIRC_NOTIFY_DECODE _IO('i', 0x00000020) + diff --git a/lirc-0.8.7-lirc_h_2.diff b/lirc-0.8.7-lirc_h_2.diff new file mode 100644 index 0000000..277cc3a --- /dev/null +++ b/lirc-0.8.7-lirc_h_2.diff @@ -0,0 +1,46 @@ +From 7b8fd7003663aad26c0b5f5f8aa30d0e57b343e3 Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Tue, 13 Jul 2010 23:11:42 -0400 +Subject: [PATCH 2/2] these ioctl defines are needed by lircd + +Signed-off-by: Jarod Wilson +--- + drivers/lirc.h | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +diff --git a/drivers/lirc.h b/drivers/lirc.h +index 9edd0e5..32fcbf3 100644 +--- a/drivers/lirc.h ++++ b/drivers/lirc.h +@@ -97,12 +97,10 @@ + #define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, __u32) + #define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, __u32) + +-#if 0 /* these ioctls are not used at the moment */ + #define LIRC_GET_MIN_FILTER_PULSE _IOR('i', 0x0000000a, __u32) + #define LIRC_GET_MAX_FILTER_PULSE _IOR('i', 0x0000000b, __u32) + #define LIRC_GET_MIN_FILTER_SPACE _IOR('i', 0x0000000c, __u32) + #define LIRC_GET_MAX_FILTER_SPACE _IOR('i', 0x0000000d, __u32) +-#endif + + /* code length in bits, currently only for LIRC_MODE_LIRCCODE */ + #define LIRC_GET_LENGTH _IOR('i', 0x0000000f, __u32) +@@ -123,7 +121,6 @@ + */ + #define LIRC_SET_REC_TIMEOUT _IOW('i', 0x00000018, __u32) + +-#if 0 /* these ioctls are not used at the moment */ + /* 1 enables, 0 disables timeout reports in MODE2 */ + #define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, __u32) + +@@ -148,7 +145,6 @@ + * LIRC_MODE2_FREQUENCY packets + */ + #define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32) +-#endif + + /* + * to set a range use +-- +1.7.1 + diff --git a/lirc.changes b/lirc.changes index 3518daa..eeaa48e 100644 --- a/lirc.changes +++ b/lirc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Feb 9 08:25:53 UTC 2011 - lnussel@suse.de + +- fix lircd not working with in-kernel drivers (bnc#668427) + ------------------------------------------------------------------- Mon Jan 10 08:08:24 UTC 2011 - lnussel@suse.de diff --git a/lirc.spec b/lirc.spec index 0a1cfea..3d65e32 100644 --- a/lirc.spec +++ b/lirc.spec @@ -65,6 +65,8 @@ Source9: 51-lirc.rules #Patch0: lirc-hw.diff #Patch1: lirc-sockets-in-var.diff Patch2: imon2_conf.patch +Patch3: lirc-0.8.7-lirc_h.diff +Patch4: lirc-0.8.7-lirc_h_2.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: udev Suggests: lirc-kmp @@ -126,6 +128,8 @@ the 'lirc' package has to be configured and started. %setup -q -n %{name}-%{version}%{?snapshot:-%snapshot} #%patch0 -p1 -b .hw %patch2 -p1 +%patch3 -p1 +%patch4 -p1 cp %{SOURCE8} . #find . -type d -name CVS -print0 | xargs -0 -- rm -rf #find . -name .cvsignore -print0 | xargs -0 -- rm -rf