Date: Wednesday, June 8, 2011 @ 05:51:14 Author: jgc Revision: 126857
Add upstream patches from git, fixes issues with large config files, atiusb and wpc8769 drivers Added: lirc/trunk/lirc_atiusb-kfifo.patch lirc/trunk/lirc_wpc8769l.patch lirc/trunk/lircd-handle-large-config.patch Modified: lirc/trunk/PKGBUILD ---------------------------------+ PKGBUILD | 9 +++ lirc_atiusb-kfifo.patch | 31 +++++++++++++ lirc_wpc8769l.patch | 88 ++++++++++++++++++++++++++++++++++++++ lircd-handle-large-config.patch | 39 ++++++++++++++++ 4 files changed, 167 insertions(+) Modified: PKGBUILD =================================================================== --- PKGBUILD 2011-06-08 05:54:09 UTC (rev 126856) +++ PKGBUILD 2011-06-08 09:51:14 UTC (rev 126857) @@ -13,9 +13,15 @@ makedepends=('help2man' 'kernel26-headers>=2.6.39' 'kernel26-headers<2.6.40' 'alsa-lib' 'libx11' 'libftdi' 'libirman' 'python') options=('!makeflags' '!strip') source=(http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${pkgver}.tar.bz2 + lirc_wpc8769l.patch + lircd-handle-large-config.patch + lirc_atiusb-kfifo.patch kernel-2.6.39.patch lircd lircmd lirc.logrotate lircd.conf irexec.conf irexecd) md5sums=('b232aef26f23fe33ea8305d276637086' + '1cce37e18e3f6f46044abab29016d18f' + 'b70cc9640505205446ec47b7d4779f38' + '1f8b104a2365d9f93404b143f499059b' '087a7d102e1c96bf1179f38db2b0b237' '8d0e238dc0eda95e340fe570605da492' '85f7fdac55e5256967241864049bf5e9' @@ -26,6 +32,9 @@ build() { cd "${srcdir}/lirc-${pkgver}" + patch -Np1 -i "${srcdir}/lirc_wpc8769l.patch" + patch -Np1 -i "${srcdir}/lircd-handle-large-config.patch" + patch -Np1 -i "${srcdir}/lirc_atiusb-kfifo.patch" patch -Np1 -i "${srcdir}/kernel-2.6.39.patch" sed -i '/AC_PATH_XTRA/d' configure.ac Added: lirc_atiusb-kfifo.patch =================================================================== --- lirc_atiusb-kfifo.patch (rev 0) +++ lirc_atiusb-kfifo.patch 2011-06-08 09:51:14 UTC (rev 126857) @@ -0,0 +1,31 @@ +From ec3c5660e67c122e2d5eb9cfa838c9709fccf8e0 Mon Sep 17 00:00:00 2001 +From: Jason Martin <public...@gmail.com> +Date: Fri, 3 Jun 2011 00:12:51 -0400 +Subject: [PATCH] lirc_atiusb: fix buffer alloc to work with new kfifo + +I came across posts with regards to lirc_atiusb and its compatibility +with newer kernels, and their use of kfifo.I spent a little bit of time +this evening, and was able to correct the issues with the driver, and +now have a functioning lirc_atiusb device under the 2.6.38 kernel. + +Signed-off-by: Jarod Wilson <ja...@redhat.com> +--- + drivers/lirc_atiusb/lirc_atiusb.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/lirc_atiusb/lirc_atiusb.c b/drivers/lirc_atiusb/lirc_atiusb.c +index 52080de..bf2b631 100644 +--- a/drivers/lirc_atiusb/lirc_atiusb.c ++++ b/drivers/lirc_atiusb/lirc_atiusb.c +@@ -1048,7 +1048,7 @@ static struct atirf_dev *new_irctl(struct usb_interface *intf) + goto new_irctl_failure_check; + } + +- if (lirc_buffer_init(driver->rbuf, dclen, 1)) { ++ if (lirc_buffer_init(driver->rbuf, dclen, 2)) { + mem_failure = 4; + goto new_irctl_failure_check; + } +-- +1.7.0.1 + Added: lirc_wpc8769l.patch =================================================================== --- lirc_wpc8769l.patch (rev 0) +++ lirc_wpc8769l.patch 2011-06-08 09:51:14 UTC (rev 126857) @@ -0,0 +1,88 @@ +From 413e83bf504fe9a9a177f27742220cfcb184b034 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Juan=20Jes=C3=BAs=20Garc=C3=ADa=20de=20Soria=20Lucena?= <skanda...@gmail.com> +Date: Wed, 30 Mar 2011 16:46:35 -0400 +Subject: [PATCH] Make lirc_wpc8769l functional again + +Signed-off-by: Jarod Wilson <ja...@redhat.com> +--- + drivers/lirc_wpc8769l/lirc_wpc8769l.c | 28 +++++++++++++++++----------- + 1 files changed, 17 insertions(+), 11 deletions(-) + +diff --git a/drivers/lirc_wpc8769l/lirc_wpc8769l.c b/drivers/lirc_wpc8769l/lirc_wpc8769l.c +index f820d11..4d04063 100644 +--- a/drivers/lirc_wpc8769l/lirc_wpc8769l.c ++++ b/drivers/lirc_wpc8769l/lirc_wpc8769l.c +@@ -816,10 +816,6 @@ static int set_use_inc(void *data) + /* Reset last timeout value. */ + lastus = 0; + +- /* Init the read buffer. */ +- if (lirc_buffer_init(&rbuf, sizeof(lirc_t), RBUF_LEN) < 0) +- return -ENOMEM; +- + /* Acquire the IRQ. */ + result = request_irq(irq, irq_handler, + IRQF_DISABLED | IRQF_SHARED, +@@ -863,9 +859,6 @@ static void set_use_dec(void *data) + /* Free the IRQ. */ + free_irq(irq, THIS_MODULE); + dprintk("Freed IRQ %d\n", irq); +- +- /* Free the RX buffer. */ +- lirc_buffer_free(&rbuf); + } + + static struct lirc_driver driver = { +@@ -1065,19 +1058,29 @@ static int __init lirc_wpc8769l_module_init(void) + /* Do load-time checks. */ + wpc8769l_power_up_and_check_if_we_woke_us_up(); + ++ /* Init the read buffer. */ ++ if (lirc_buffer_init(&rbuf, sizeof(lirc_t), RBUF_LEN) < 0) { ++ rc = -ENOMEM; ++ goto exit_platform_exit; ++ } ++ + /* Configure the driver hooks. */ + driver.features = LIRC_CAN_REC_MODE2; ++ driver.dev = &lirc_wpc8769l_platform_dev->dev; + driver.minor = lirc_register_driver(&driver); + if (driver.minor < 0) { + eprintk("lirc_register_driver failed!\n"); + rc = -EIO; +- goto exit_platform_exit; ++ goto exit_release_buffer; + } + + iprintk("Driver loaded.\n"); + + return 0; /* Everything OK. */ + ++exit_release_buffer: ++ lirc_buffer_free(&rbuf); ++ + exit_platform_exit: + lirc_wpc8769l_platform_exit(); + +@@ -1095,12 +1098,15 @@ module_init(lirc_wpc8769l_module_init); + + static void __exit lirc_wpc8769l_module_exit(void) + { +- /* Unregister the platform driver and device. */ +- lirc_wpc8769l_platform_exit(); +- + /* Unregister the LIRC driver. */ + lirc_unregister_driver(driver.minor); + ++ /* Free the buffer. */ ++ lirc_buffer_free(&rbuf); ++ ++ /* Unregister the platform driver and device. */ ++ lirc_wpc8769l_platform_exit(); ++ + /* Release the second range. */ + if (baseport2) + release_region(baseport2, WPC8769L_IO_REGION_2_SIZE); +-- +1.7.0.1 + Added: lircd-handle-large-config.patch =================================================================== --- lircd-handle-large-config.patch (rev 0) +++ lircd-handle-large-config.patch 2011-06-08 09:51:14 UTC (rev 126857) @@ -0,0 +1,39 @@ +From 5efb56bf22a5077db564c766ba7cc37bc269231d Mon Sep 17 00:00:00 2001 +From: Jarod Wilson <ja...@redhat.com> +Date: Wed, 6 Apr 2011 11:04:12 -0400 +Subject: [PATCH] lircd: handle larger config files in write_socket better + +Pointed out by Michael Zanetti on list, irsend LIST has issues with long +config files, which didn't exist in maintainer mode, as we were using a +do while loop to make sure we spit out everything. Just use that loop +all the time. + +Signed-off-by: Jarod Wilson <ja...@redhat.com> +--- + daemons/lircd.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/daemons/lircd.c b/daemons/lircd.c +index 6c21a3a..ddcca05 100644 +--- a/daemons/lircd.c ++++ b/daemons/lircd.c +@@ -231,14 +231,10 @@ inline int write_socket(int fd, const char *buf, int len) + int done, todo = len; + + while (todo) { +-#ifdef SIM_REC + do { + done = write(fd, buf, todo); +- } +- while (done < 0 && errno == EAGAIN); +-#else +- done = write(fd, buf, todo); +-#endif ++ } while (done < 0 && errno == EAGAIN); ++ + if (done <= 0) + return (done); + buf += done; +-- +1.7.0.1 +