summaryrefslogtreecommitdiff
path: root/libre/lirc-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre/lirc-libre')
-rw-r--r--libre/lirc-libre/PKGBUILD6
-rw-r--r--libre/lirc-libre/irexec.service11
-rw-r--r--libre/lirc-libre/kernel-2.6.39.patch54
-rw-r--r--libre/lirc-libre/linux-3.8.patch80
-rw-r--r--libre/lirc-libre/lirc-utils.install7
-rw-r--r--libre/lirc-libre/lirc.install16
-rw-r--r--libre/lirc-libre/lirc.logrotate5
-rw-r--r--libre/lirc-libre/lirc.service12
-rw-r--r--libre/lirc-libre/lirc.tmpfiles1
-rw-r--r--libre/lirc-libre/lirc_atiusb-kfifo.patch31
-rw-r--r--libre/lirc-libre/lirc_wpc8769l.patch88
-rw-r--r--libre/lirc-libre/lircd-handle-large-config.patch39
-rw-r--r--libre/lirc-libre/lircm.service12
13 files changed, 359 insertions, 3 deletions
diff --git a/libre/lirc-libre/PKGBUILD b/libre/lirc-libre/PKGBUILD
index 277f31c7c..66ca49ac6 100644
--- a/libre/lirc-libre/PKGBUILD
+++ b/libre/lirc-libre/PKGBUILD
@@ -6,7 +6,7 @@ _pkgbase=lirc
pkgbase=lirc-libre
pkgname=('lirc-libre' 'lirc-libre-utils')
pkgver=0.9.0
-pkgrel=69
+pkgrel=69.1
epoch=1
_extramodules=extramodules-3.12-LIBRE
arch=('i686' 'x86_64' 'mips64el')
@@ -84,7 +84,7 @@ build() {
package_lirc-libre() {
pkgdesc="Linux Infrared Remote Control kernel modules for stock kernel (built for the linux-libre kernel package)"
- depends=('lirc-utils-libre' 'linux-libre>=3.12' 'linux-libre<3.13')
+ depends=('lirc-libre-utils' 'linux-libre>=3.12' 'linux-libre<3.13')
replaces=('lirc' 'lirc+pctv')
conflicts=('lirc')
provides=("lirc=$pkgver")
@@ -100,7 +100,7 @@ package_lirc-libre() {
}
package_lirc-libre-utils() {
- pkgdesc="Linux Infrared Remote Control utils"
+ pkgdesc="Linux Infrared Remote Control utils (built for the linux-libre kernel package)"
depends=('alsa-lib' 'libx11' 'libftdi-compat' 'libirman')
optdepends=('python2: pronto2lirc utility')
options=('strip')
diff --git a/libre/lirc-libre/irexec.service b/libre/lirc-libre/irexec.service
new file mode 100644
index 000000000..5d7915b29
--- /dev/null
+++ b/libre/lirc-libre/irexec.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=IR Exec
+After=lirc.service
+Wants=lirc.service
+
+[Service]
+ExecStart=/usr/bin/irexec --daemon
+Type=forking
+
+[Install]
+WantedBy=multi-user.target
diff --git a/libre/lirc-libre/kernel-2.6.39.patch b/libre/lirc-libre/kernel-2.6.39.patch
new file mode 100644
index 000000000..7353d61ca
--- /dev/null
+++ b/libre/lirc-libre/kernel-2.6.39.patch
@@ -0,0 +1,54 @@
+diff -ru lirc-0.9.0/drivers//lirc_atiusb/lirc_atiusb.c lirc-0.9.0.new/drivers//lirc_atiusb/lirc_atiusb.c
+--- lirc-0.9.0/drivers//lirc_atiusb/lirc_atiusb.c 2011-03-25 23:28:18.000000000 +0100
++++ lirc-0.9.0.new/drivers//lirc_atiusb/lirc_atiusb.c 2011-06-07 17:02:20.356580306 +0200
+@@ -48,7 +48,6 @@
+ #include <linux/slab.h>
+ #include <linux/module.h>
+ #include <linux/kmod.h>
+-#include <linux/smp_lock.h>
+ #include <linux/completion.h>
+ #include <linux/uaccess.h>
+ #include <linux/usb.h>
+diff -ru lirc-0.9.0/drivers//lirc_i2c/lirc_i2c.c lirc-0.9.0.new/drivers//lirc_i2c/lirc_i2c.c
+--- lirc-0.9.0/drivers//lirc_i2c/lirc_i2c.c 2011-03-25 23:28:18.000000000 +0100
++++ lirc-0.9.0.new/drivers//lirc_i2c/lirc_i2c.c 2011-06-07 17:04:19.725933627 +0200
+@@ -555,8 +555,8 @@
+ kfree(ir);
+ return -EINVAL;
+ }
+- printk(KERN_INFO "lirc_i2c: chip 0x%x found @ 0x%02x (%s)\n",
+- adap->id, addr, ir->c.name);
++ printk(KERN_INFO "lirc_i2c: chip found @ 0x%02x (%s)\n",
++ addr, ir->c.name);
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
+ /* register device */
+diff -ru lirc-0.9.0/drivers//lirc_wpc8769l/lirc_wpc8769l.c lirc-0.9.0.new/drivers//lirc_wpc8769l/lirc_wpc8769l.c
+--- lirc-0.9.0/drivers//lirc_wpc8769l/lirc_wpc8769l.c 2011-03-25 23:28:18.000000000 +0100
++++ lirc-0.9.0.new/drivers//lirc_wpc8769l/lirc_wpc8769l.c 2011-06-07 17:07:23.984935411 +0200
+@@ -361,14 +361,14 @@
+ size = count << 3;
+
+ ldata = (unsigned long *) data_buf;
+- next_one = generic_find_next_le_bit(ldata, size, 0);
++ next_one = find_next_zero_bit_le(ldata, size, 0);
+
+ if (next_one > 0)
+ put_pulse_bit(next_one
+ * WPC8769L_USECS_PER_BIT);
+
+ while (next_one < size) {
+- next_zero = generic_find_next_zero_le_bit(ldata,
++ next_zero = find_next_zero_bit_le(ldata,
+ size, next_one + 1);
+
+ put_space_bit(
+@@ -376,7 +376,7 @@
+ * WPC8769L_USECS_PER_BIT);
+
+ if (next_zero < size) {
+- next_one = generic_find_next_le_bit(ldata,
++ next_one = find_next_bit_le(ldata,
+ size, next_zero + 1);
+
+ put_pulse_bit(
diff --git a/libre/lirc-libre/linux-3.8.patch b/libre/lirc-libre/linux-3.8.patch
new file mode 100644
index 000000000..7b6378a83
--- /dev/null
+++ b/libre/lirc-libre/linux-3.8.patch
@@ -0,0 +1,80 @@
+diff -upr lirc-0.9.0.orig/drivers/lirc_serial/lirc_serial.c lirc-0.9.0/drivers/lirc_serial/lirc_serial.c
+--- lirc-0.9.0.orig/drivers/lirc_serial/lirc_serial.c 2013-02-21 02:36:25.000000000 +0200
++++ lirc-0.9.0/drivers/lirc_serial/lirc_serial.c 2013-02-21 02:39:55.000000000 +0200
+@@ -1103,12 +1103,12 @@ static struct lirc_driver driver = {
+
+ static struct platform_device *lirc_serial_dev;
+
+-static int __devinit lirc_serial_probe(struct platform_device *dev)
++static int lirc_serial_probe(struct platform_device *dev)
+ {
+ return 0;
+ }
+
+-static int __devexit lirc_serial_remove(struct platform_device *dev)
++static int lirc_serial_remove(struct platform_device *dev)
+ {
+ return 0;
+ }
+@@ -1159,7 +1159,7 @@ static int lirc_serial_resume(struct pla
+
+ static struct platform_driver lirc_serial_driver = {
+ .probe = lirc_serial_probe,
+- .remove = __devexit_p(lirc_serial_remove),
++ .remove = lirc_serial_remove,
+ .suspend = lirc_serial_suspend,
+ .resume = lirc_serial_resume,
+ .driver = {
+diff -upr lirc-0.9.0.orig/drivers/lirc_sir/lirc_sir.c lirc-0.9.0/drivers/lirc_sir/lirc_sir.c
+--- lirc-0.9.0.orig/drivers/lirc_sir/lirc_sir.c 2013-02-21 02:36:25.000000000 +0200
++++ lirc-0.9.0/drivers/lirc_sir/lirc_sir.c 2013-02-21 02:38:24.000000000 +0200
+@@ -1290,19 +1290,19 @@ static int init_lirc_sir(void)
+ return 0;
+ }
+
+-static int __devinit lirc_sir_probe(struct platform_device *dev)
++static int lirc_sir_probe(struct platform_device *dev)
+ {
+ return 0;
+ }
+
+-static int __devexit lirc_sir_remove(struct platform_device *dev)
++static int lirc_sir_remove(struct platform_device *dev)
+ {
+ return 0;
+ }
+
+ static struct platform_driver lirc_sir_driver = {
+ .probe = lirc_sir_probe,
+- .remove = __devexit_p(lirc_sir_remove),
++ .remove = lirc_sir_remove,
+ .driver = {
+ .name = "lirc_sir",
+ .owner = THIS_MODULE,
+diff -upr lirc-0.9.0.orig/drivers/lirc_wpc8769l/lirc_wpc8769l.c lirc-0.9.0/drivers/lirc_wpc8769l/lirc_wpc8769l.c
+--- lirc-0.9.0.orig/drivers/lirc_wpc8769l/lirc_wpc8769l.c 2013-02-21 02:36:25.000000000 +0200
++++ lirc-0.9.0/drivers/lirc_wpc8769l/lirc_wpc8769l.c 2013-02-21 02:39:39.000000000 +0200
+@@ -930,12 +930,12 @@ static int wpc8769l_acpi_detect(void)
+ #ifdef MODULE
+ static struct platform_device *lirc_wpc8769l_platform_dev;
+
+-static int __devinit lirc_wpc8769l_probe(struct platform_device *dev)
++static int lirc_wpc8769l_probe(struct platform_device *dev)
+ {
+ return 0;
+ }
+
+-static int __devexit lirc_wpc8769l_remove(struct platform_device *dev)
++static int lirc_wpc8769l_remove(struct platform_device *dev)
+ {
+ return 0;
+ }
+@@ -963,7 +963,7 @@ static int lirc_wpc8769l_resume(struct p
+
+ static struct platform_driver lirc_wpc8769l_platform_driver = {
+ .probe = lirc_wpc8769l_probe,
+- .remove = __devexit_p(lirc_wpc8769l_remove),
++ .remove = lirc_wpc8769l_remove,
+ .suspend = lirc_wpc8769l_suspend,
+ .resume = lirc_wpc8769l_resume,
+ .driver = {
diff --git a/libre/lirc-libre/lirc-utils.install b/libre/lirc-libre/lirc-utils.install
new file mode 100644
index 000000000..293d1ed7c
--- /dev/null
+++ b/libre/lirc-libre/lirc-utils.install
@@ -0,0 +1,7 @@
+post_install() {
+ systemd-tmpfiles --create lirc.conf
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/libre/lirc-libre/lirc.install b/libre/lirc-libre/lirc.install
new file mode 100644
index 000000000..50e7566f9
--- /dev/null
+++ b/libre/lirc-libre/lirc.install
@@ -0,0 +1,16 @@
+EXTRAMODULES=extramodules-3.12-LIBRE
+
+post_install() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) > /dev/null 2>&1
+}
+
+post_upgrade() {
+ post_install
+}
+
+# arg 1: the old package version
+post_remove() {
+ post_install
+}
diff --git a/libre/lirc-libre/lirc.logrotate b/libre/lirc-libre/lirc.logrotate
new file mode 100644
index 000000000..623c4f328
--- /dev/null
+++ b/libre/lirc-libre/lirc.logrotate
@@ -0,0 +1,5 @@
+/var/log/lircd {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/libre/lirc-libre/lirc.service b/libre/lirc-libre/lirc.service
new file mode 100644
index 000000000..a797d1661
--- /dev/null
+++ b/libre/lirc-libre/lirc.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Linux Infrared Remote Control
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/lirc/lircd.pid
+ExecStart=/usr/sbin/lircd --driver=default --device=/dev/lirc0
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/libre/lirc-libre/lirc.tmpfiles b/libre/lirc-libre/lirc.tmpfiles
new file mode 100644
index 000000000..0b80e2e47
--- /dev/null
+++ b/libre/lirc-libre/lirc.tmpfiles
@@ -0,0 +1 @@
+d /run/lirc 0755 root root -
diff --git a/libre/lirc-libre/lirc_atiusb-kfifo.patch b/libre/lirc-libre/lirc_atiusb-kfifo.patch
new file mode 100644
index 000000000..a64984dce
--- /dev/null
+++ b/libre/lirc-libre/lirc_atiusb-kfifo.patch
@@ -0,0 +1,31 @@
+From ec3c5660e67c122e2d5eb9cfa838c9709fccf8e0 Mon Sep 17 00:00:00 2001
+From: Jason Martin <publicmsu@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 <jarod@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
+
diff --git a/libre/lirc-libre/lirc_wpc8769l.patch b/libre/lirc-libre/lirc_wpc8769l.patch
new file mode 100644
index 000000000..e4e2a049b
--- /dev/null
+++ b/libre/lirc-libre/lirc_wpc8769l.patch
@@ -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?= <skandalfo@gmail.com>
+Date: Wed, 30 Mar 2011 16:46:35 -0400
+Subject: [PATCH] Make lirc_wpc8769l functional again
+
+Signed-off-by: Jarod Wilson <jarod@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
+
diff --git a/libre/lirc-libre/lircd-handle-large-config.patch b/libre/lirc-libre/lircd-handle-large-config.patch
new file mode 100644
index 000000000..85bc20518
--- /dev/null
+++ b/libre/lirc-libre/lircd-handle-large-config.patch
@@ -0,0 +1,39 @@
+From 5efb56bf22a5077db564c766ba7cc37bc269231d Mon Sep 17 00:00:00 2001
+From: Jarod Wilson <jarod@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 <jarod@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
+
diff --git a/libre/lirc-libre/lircm.service b/libre/lirc-libre/lircm.service
new file mode 100644
index 000000000..c0b5e36b7
--- /dev/null
+++ b/libre/lirc-libre/lircm.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=LIRC Mouse
+Requires=lirc.service
+After=network.target lirc.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/lircmd
+
+[Install]
+WantedBy=multi-user.target
+