diff mbox

[Lucid] UBUNTU: Update lirc drivers to cvs version 2009.12.07

Message ID alpine.DEB.2.00.0912071903140.3745@hungry
State Rejected
Delegated to: Andy Whitcroft
Headers show

Commit Message

Manoj Iyer Dec. 8, 2009, 1:08 a.m. UTC
Updated the lirc driver version to the latest cvs. I had to change the 
makefiles and modify the source to point to the correct header files. The 
source is set up to build under the lirc main tree, so had to modify few 
things to make it to build under ubuntu/ There was no BOM file for this 
driver so added a new one.

Test kernel is avaiable for latest lucid kernel under:

http://people.canonical.com/~manjo/lucid/lirc/

Git commits can be pulled from:

The following changes since commit 
802ec95236d5f995e04a16a7caa7f18e8360158d:
   Manoj Iyer (1):
         UBUNTU: Update lirc drivers to cvs version 2009.12.07

are available in the git repository at:


ssh://zinc.canonical.com/srv/kernel.ubuntu.com/git/manjo/ubuntu-lucid.git 
lirc


Changes from old version to 2009.12.07 cvs version are as follows:

From 802ec95236d5f995e04a16a7caa7f18e8360158d Mon Sep 17 00:00:00 2001
From: Manoj Iyer <manoj.iyer@canonical.com>
Date: Mon, 7 Dec 2009 18:54:32 -0600
Subject: [PATCH] UBUNTU: Update lirc drivers to cvs version 2009.12.07

ExternalDriver: lirc
Description: drivers to decode and send infra-red signals of
many (but not all) commonly used remote controls.
Url: http://www.lirc.org/cvs.html
Mask:
Version: cvs version 2009.12.07

Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
---
  debian.master/changelog                         |    2 +-
  ubuntu/lirc/BOM                                 |    3 ++
  ubuntu/lirc/kcompat.h                           |    8 +++++-
  ubuntu/lirc/lirc_bt829/lirc_bt829.c             |    4 +-
  ubuntu/lirc/lirc_dev/lirc_dev.c                 |    4 +-
  ubuntu/lirc/lirc_ene0100/lirc_ene0100.c         |    5 ++-
  ubuntu/lirc/lirc_i2c/lirc_i2c.c                 |    1 +
  ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c |    5 +---
  ubuntu/lirc/lirc_imon/lirc_imon.c               |   34 ++++++++++++-----------
  ubuntu/lirc/lirc_ite8709/lirc_ite8709.c         |    3 ++
  ubuntu/lirc/lirc_mceusb/lirc_mceusb.c           |   20 ++++++-------
  ubuntu/lirc/lirc_serial/lirc_serial.c           |    9 ++++++
  ubuntu/lirc/lirc_sir/lirc_sir.c                 |   12 +++++++-
  13 files changed, 70 insertions(+), 40 deletions(-)
  create mode 100644 ubuntu/lirc/BOM

Comments

Mario Limonciello Dec. 8, 2009, 6:41 p.m. UTC | #1
Hi Manoj:

Out of curiosity, what pre-empted this?  Was it not building anymore 
against 2.6.32?

In case you haven't kept up, there is a lot of discussion going on right 
now on LKML about IR and LIRC.  Hopefully by the end of it, some form of 
it lands in staging at least (although the discussion is to move it into 
the kernel itself).

Thanks,

On 12/07/2009 07:08 PM, Manoj Iyer wrote:
> Updated the lirc driver version to the latest cvs. I had to change the
> makefiles and modify the source to point to the correct header files. The
> source is set up to build under the lirc main tree, so had to modify few
> things to make it to build under ubuntu/ There was no BOM file for this
> driver so added a new one.
>
> Test kernel is avaiable for latest lucid kernel under:
>
> http://people.canonical.com/~manjo/lucid/lirc/
>
> Git commits can be pulled from:
>
> The following changes since commit
> 802ec95236d5f995e04a16a7caa7f18e8360158d:
>     Manoj Iyer (1):
>           UBUNTU: Update lirc drivers to cvs version 2009.12.07
>
> are available in the git repository at:
>
>
> ssh://zinc.canonical.com/srv/kernel.ubuntu.com/git/manjo/ubuntu-lucid.git
> lirc
>
>
> Changes from old version to 2009.12.07 cvs version are as follows:
>
>  From 802ec95236d5f995e04a16a7caa7f18e8360158d Mon Sep 17 00:00:00 2001
> From: Manoj Iyer<manoj.iyer@canonical.com>
> Date: Mon, 7 Dec 2009 18:54:32 -0600
> Subject: [PATCH] UBUNTU: Update lirc drivers to cvs version 2009.12.07
>
> ExternalDriver: lirc
> Description: drivers to decode and send infra-red signals of
> many (but not all) commonly used remote controls.
> Url: http://www.lirc.org/cvs.html
> Mask:
> Version: cvs version 2009.12.07
>
> Signed-off-by: Manoj Iyer<manoj.iyer@canonical.com>
> ---
>    debian.master/changelog                         |    2 +-
>    ubuntu/lirc/BOM                                 |    3 ++
>    ubuntu/lirc/kcompat.h                           |    8 +++++-
>    ubuntu/lirc/lirc_bt829/lirc_bt829.c             |    4 +-
>    ubuntu/lirc/lirc_dev/lirc_dev.c                 |    4 +-
>    ubuntu/lirc/lirc_ene0100/lirc_ene0100.c         |    5 ++-
>    ubuntu/lirc/lirc_i2c/lirc_i2c.c                 |    1 +
>    ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c |    5 +---
>    ubuntu/lirc/lirc_imon/lirc_imon.c               |   34 ++++++++++++-----------
>    ubuntu/lirc/lirc_ite8709/lirc_ite8709.c         |    3 ++
>    ubuntu/lirc/lirc_mceusb/lirc_mceusb.c           |   20 ++++++-------
>    ubuntu/lirc/lirc_serial/lirc_serial.c           |    9 ++++++
>    ubuntu/lirc/lirc_sir/lirc_sir.c                 |   12 +++++++-
>    13 files changed, 70 insertions(+), 40 deletions(-)
>    create mode 100644 ubuntu/lirc/BOM
>
> diff --git a/debian.master/changelog b/debian.master/changelog
> index f8d90c2..a43058d 100644
> --- a/debian.master/changelog
> +++ b/debian.master/changelog
> @@ -1,4 +1,4 @@
> -linux (2.6.32-7.10) lucid; urgency=low
> +linux (2.6.32-7.10~lirc1manjo1) lucid; urgency=low
>
>      [ Andy Whitcroft ]
>
> diff --git a/ubuntu/lirc/BOM b/ubuntu/lirc/BOM
> new file mode 100644
> index 0000000..49158e5
> --- /dev/null
> +++ b/ubuntu/lirc/BOM
> @@ -0,0 +1,3 @@
> +Downloaded from: cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
> +Current Version: 2009.12.07
> +Comments:       Fix up makefiles. Fix source code to point to hearder.
> diff --git a/ubuntu/lirc/kcompat.h b/ubuntu/lirc/kcompat.h
> index 1ede942..88f3f95 100644
> --- a/ubuntu/lirc/kcompat.h
> +++ b/ubuntu/lirc/kcompat.h
> @@ -1,4 +1,4 @@
> -/*      $Id: kcompat.h,v 5.44 2009/03/22 08:45:47 lirc Exp $      */
> +/*      $Id: kcompat.h,v 5.45 2009/08/02 11:15:28 lirc Exp $      */
>
>    #ifndef _KCOMPAT_H
>    #define _KCOMPAT_H
> @@ -399,4 +399,10 @@ static inline unsigned iminor(struct inode *inode)
>    }
>    #endif
>
> +/****************************** bitops.h **********************************/
> +#if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 24)
> +#define BIT_MASK(nr)            (1UL<<  ((nr) % BITS_PER_LONG))
> +#define BIT_WORD(nr)            ((nr) / BITS_PER_LONG)
> +#endif
> +
>    #endif /* _KCOMPAT_H */
> diff --git a/ubuntu/lirc/lirc_bt829/lirc_bt829.c b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
> index d16e24c..c1d8630 100644
> --- a/ubuntu/lirc/lirc_bt829/lirc_bt829.c
> +++ b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
> @@ -31,8 +31,8 @@
>    #include<linux/pci.h>
>    #include<linux/delay.h>
>
> -#include "../kcompat.h"
> -#include "../lirc_dev/lirc_dev.h"
> +#include "kcompat.h"
> +#include "lirc_dev/lirc_dev.h"
>
>    static int poll_main(void);
>    static int atir_init_start(void);
> diff --git a/ubuntu/lirc/lirc_dev/lirc_dev.c b/ubuntu/lirc/lirc_dev/lirc_dev.c
> index 7618c0a..e01cbed 100644
> --- a/ubuntu/lirc/lirc_dev/lirc_dev.c
> +++ b/ubuntu/lirc/lirc_dev/lirc_dev.c
> @@ -61,7 +61,7 @@
>    #include<linux/compat.h>
>    #endif
>
> -#include "../kcompat.h"
> +#include "kcompat.h"
>
>    /* SysFS header */
>    #if defined(LIRC_HAVE_SYSFS)
> @@ -69,7 +69,7 @@
>    #endif
>
>    #include "../lirc.h"
> -#include "lirc_dev.h"
> +#include "../lirc_dev/lirc_dev.h"
>
>    static int debug;
>    #define dprintk(fmt, args...)                                 \
> diff --git a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
> index da9519f..719e925 100644
> --- a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
> +++ b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
> @@ -24,6 +24,7 @@
>    #include<linux/pnp.h>
>    #include<linux/io.h>
>    #include<linux/interrupt.h>
> +#include<linux/sched.h>
>    #include "lirc_ene0100.h"
>
>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 16)
> @@ -81,7 +82,7 @@ static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)
>          if (dev->hw_revision<  ENE_HW_C) {
>                  irq_status = ene_hw_read_reg(dev, ENEB_IRQ_STATUS);
>
> -               if (!irq_status&  ENEB_IRQ_STATUS_IR)
> +               if (!(irq_status&  ENEB_IRQ_STATUS_IR))
>                          return 0;
>                  ene_hw_write_reg(dev, ENEB_IRQ_STATUS,
>                                   irq_status&  ~ENEB_IRQ_STATUS_IR);
> @@ -92,7 +93,7 @@ static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)
>
>          irq_status = ene_hw_read_reg(dev, ENEC_IRQ);
>
> -       if (!irq_status&&  ENEC_IRQ_STATUS)
> +       if (!(irq_status&  ENEC_IRQ_STATUS))
>                  return 0;
>
>          /* original driver does that twice - a workaround ? */
> diff --git a/ubuntu/lirc/lirc_i2c/lirc_i2c.c b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
> index dca6b51..247c9c6 100644
> --- a/ubuntu/lirc/lirc_i2c/lirc_i2c.c
> +++ b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
> @@ -399,6 +399,7 @@ static struct i2c_driver driver = {
>                  .name   = "i2c ir driver",
>          },
>    #endif
> +       // .id          = I2C_DRIVERID_EXP3, /* FIXME */
>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 31)
>          .attach_adapter = ir_probe,
>          .detach_client  = ir_remove,
> diff --git a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
> index 6705570..80e9506 100644
> --- a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
> +++ b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
> @@ -363,7 +363,7 @@ static int usb_remote_poll(void *data, struct lirc_buffer *buf)
>                                 "[%d]: SET_INFRABUFFER_EMPTY: error %d\n",
>                                 ir->devnum, ret);
>                  return 0;
> -       } else
> +       } else if (ret<  0)
>                  printk(KERN_WARNING DRIVER_NAME
>                         "[%d]: GET_INFRACODE: error %d\n",
>                          ir->devnum, ret);
> @@ -562,9 +562,6 @@ static void usb_remote_disconnect(struct usb_device *dev, void *ptr)
>                 "[%d]: usb remote disconnected\n", ir->devnum);
>
>          lirc_unregister_driver(ir->d->minor);
> -
> -       lirc_buffer_free(ir->d->rbuf);
> -       kfree(ir->d->rbuf);
>          kfree(ir->d);
>
>
> diff --git a/ubuntu/lirc/lirc_imon/lirc_imon.c b/ubuntu/lirc/lirc_imon/lirc_imon.c
> index fcaa45f..0f45bd7 100644
> --- a/ubuntu/lirc/lirc_imon/lirc_imon.c
> +++ b/ubuntu/lirc/lirc_imon/lirc_imon.c
> @@ -2,7 +2,7 @@
>     *   lirc_imon.c:  LIRC/VFD/LCD driver for SoundGraph iMON IR/VFD/LCD
>     *               including the iMON PAD model
>     *
> - *   $Id: lirc_imon.c,v 1.111 2009/09/11 04:56:18 jarodwilson Exp $
> + *   $Id: lirc_imon.c,v 1.113 2009/10/30 04:00:30 jarodwilson Exp $
>     *
>     *   Copyright(C) 2004  Venky Raju(dev@venky.ws)
>     *
> @@ -565,7 +565,8 @@ static int display_close(struct inode *inode, struct file *file)
>    }
>
>    /**
> - * Sends a packet to the device
> + * Sends a packet to the device -- this function must be called
> + * with context->lock held.
>     */
>    static int send_packet(struct imon_context *context)
>    {
> @@ -743,7 +744,6 @@ static int send_set_imon_clock(struct imon_context *context,
>                  return -ENODEV;
>          }
>
> -
>          for (i = 0; i<  IMON_CLOCK_ENABLE_PACKETS; i++) {
>                  memcpy(context->usb_tx_buf, clock_enable_pkt[i], 8);
>                  retval = send_packet(context);
> @@ -755,7 +755,6 @@ static int send_set_imon_clock(struct imon_context *context,
>          }
>
>          return retval;
> -
>    }
>
>    /**
> @@ -1097,13 +1096,6 @@ static void imon_set_ir_protocol(struct imon_context *context)
>
>          switch (ir_protocol) {
>          case IMON_IR_PROTOCOL_MCE:
> -               /* MCE proto not supported on devices without tx control */
> -               if (!context->tx_control) {
> -                       printk(KERN_INFO "%s: MCE IR protocol not supported on "
> -                              "this device, using iMON protocol\n", __func__);
> -                       context->ir_protocol = IMON_IR_PROTOCOL_IMON;
> -                       return;
> -               }
>                  dprintk("Configuring IR receiver for MCE protocol\n");
>                  ir_proto_packet[0] = 0x01;
>                  context->ir_protocol = IMON_IR_PROTOCOL_MCE;
> @@ -1125,11 +1117,18 @@ static void imon_set_ir_protocol(struct imon_context *context)
>                  context->ir_protocol = IMON_IR_PROTOCOL_IMON;
>                  break;
>          }
> -       memcpy(context->usb_tx_buf,&ir_proto_packet,
> -              sizeof(ir_proto_packet));
> +
> +       memcpy(context->usb_tx_buf,&ir_proto_packet, sizeof(ir_proto_packet));
> +
>          retval = send_packet(context);
> -       if (retval)
> -               printk(KERN_INFO "%s: failed to set remote type\n", __func__);
> +       if (retval) {
> +               printk(KERN_INFO "%s: failed to set IR protocol, falling back "
> +                      "to standard iMON protocol mode\n", __func__);
> +               ir_protocol = IMON_IR_PROTOCOL_IMON;
> +               context->ir_protocol = IMON_IR_PROTOCOL_IMON;
> +       }
> +
> +       return;
>    }
>
>
> @@ -1152,8 +1151,11 @@ static int ir_open(void *data)
>          context->rx.prev_bit = 0;
>
>          /* set new IR protocol if it has changed since init or last open */
> -       if (ir_protocol != context->ir_protocol)
> +       if (ir_protocol != context->ir_protocol) {
> +               mutex_lock(&context->lock);
>                  imon_set_ir_protocol(context);
> +               mutex_unlock(&context->lock);
> +       }
>
>          context->ir_isopen = 1;
>          printk(KERN_INFO MOD_NAME ": IR port opened\n");
> diff --git a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
> index bcbc2ad..4e0f766 100644
> --- a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
> +++ b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
> @@ -21,6 +21,9 @@
>
>    #include<linux/version.h>
>    #include<linux/module.h>
> +#include<linux/interrupt.h>
> +#include<linux/sched.h>
> +#include<linux/delay.h>
>    #include<linux/pnp.h>
>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 19)
>    #include<asm/io.h>
> diff --git a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
> index 0851769..4a0c771 100644
> --- a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
> +++ b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
> @@ -10,14 +10,9 @@
>     * Copyright (c) 2003-2004 Dan Conti<dconti@acm.wwu.edu>
>     *
>     * Original lirc_mceusb driver deprecated in favor of this driver, which
> - * supports the 1st-gen device now too. Transmitting on the 1st-gen device
> - * only functions on port #2 at the moment.
> - *
> - * Support for 1st-gen device added June 2009,
> - * by Jarod Wilson<jarod@wilsonet.com>
> - *
> - * Initial transmission support for 1st-gen device added August 2009,
> - * by Patrick Calhoun<phineas@ou.edu>
> + * supports the 1st-gen device now too. Transmit and receive support for
> + * the 1st-gen device added June-September 2009,
> + * by Jarod Wilson<jarod@wilsonet.com>  and Patrick Calhoun<phineas@ou.edu>
>     *
>     * Derived from ATI USB driver by Paul Miller and the original
>     * MCE USB driver by Dan Conti ((and now including chunks of the latter
> @@ -164,6 +159,8 @@ static struct usb_device_id mceusb_dev_table[] = {
>          { USB_DEVICE(VENDOR_SMK, 0x0322) },
>          /* bundled with Hauppauge PVR-150 */
>          { USB_DEVICE(VENDOR_SMK, 0x0334) },
> +       /* SMK eHome Infrared Transceiver */
> +       { USB_DEVICE(VENDOR_SMK, 0x0338) },
>          /* Tatung eHome Infrared Transceiver */
>          { USB_DEVICE(VENDOR_TATUNG, 0x9150) },
>          /* Shuttle eHome Infrared Transceiver */
> @@ -237,6 +234,7 @@ static struct usb_device_id microsoft_gen1_list[] = {
>    };
>
>    static struct usb_device_id transmitter_mask_list[] = {
> +       { USB_DEVICE(VENDOR_MICROSOFT, 0x006d) },
>          { USB_DEVICE(VENDOR_SMK, 0x031d) },
>          { USB_DEVICE(VENDOR_SMK, 0x0322) },
>          { USB_DEVICE(VENDOR_SMK, 0x0334) },
> @@ -904,20 +902,20 @@ static int mceusb_gen1_init(struct mceusb_dev *ir)
>          dprintk("%s - data[0] = %d, data[1] = %d\n",
>                  __func__, data[0], data[1]);
>
> -       /* set feature */
> +       /* set feature: bit rate 38400 bps */
>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>                                USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
>                                0xc04e, 0x0000, NULL, 0, HZ * 3);
>
>          dprintk("%s - ret = %d\n", __func__, ret);
>
> -       /* strange: bRequest == 4 */
> +       /* bRequest 4: set char length to 8 bits */
>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>                                4, USB_TYPE_VENDOR,
>                                0x0808, 0x0000, NULL, 0, HZ * 3);
>          dprintk("%s - retB = %d\n", __func__, ret);
>
> -       /* strange: bRequest == 2 */
> +       /* bRequest 2: set handshaking to use DTR/DSR */
>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>                                2, USB_TYPE_VENDOR,
>                                0x0000, 0x0100, NULL, 0, HZ * 3);
> diff --git a/ubuntu/lirc/lirc_serial/lirc_serial.c b/ubuntu/lirc/lirc_serial/lirc_serial.c
> index 9b25e38..e506658 100644
> --- a/ubuntu/lirc/lirc_serial/lirc_serial.c
> +++ b/ubuntu/lirc/lirc_serial/lirc_serial.c
> @@ -62,6 +62,15 @@
>
>    #include<linux/autoconf.h>
>
> +#if defined(CONFIG_SERIAL) || defined(CONFIG_SERIAL_8250)
> +#warning "******************************************"
> +#warning " Your serial port driver is compiled into "
> +#warning " the kernel. You will have to release the "
> +#warning " port you want to use for LIRC with:      "
> +#warning "    setserial /dev/ttySx uart none   "
> +#warning "******************************************"
> +#endif
> +
>    #include<linux/module.h>
>    #include<linux/errno.h>
>    #include<linux/signal.h>
> diff --git a/ubuntu/lirc/lirc_sir/lirc_sir.c b/ubuntu/lirc/lirc_sir/lirc_sir.c
> index ac91ec7..becaff7 100644
> --- a/ubuntu/lirc/lirc_sir/lirc_sir.c
> +++ b/ubuntu/lirc/lirc_sir/lirc_sir.c
> @@ -46,6 +46,16 @@
>    #endif
>
>    #include<linux/autoconf.h>
> +#if !defined(CONFIG_SERIAL_MODULE)
> +#if !defined(LIRC_ON_SA1100)
> +#warning "******************************************"
> +#warning " Your serial port driver is compiled into "
> +#warning " the kernel. You will have to release the "
> +#warning " port you want to use for LIRC with:      "
> +#warning "    setserial /dev/ttySx uart none        "
> +#warning "******************************************"
> +#endif
> +#endif
>
>    #include<linux/sched.h>
>    #include<linux/errno.h>
> @@ -423,7 +433,7 @@ static int lirc_ioctl(struct inode *node, struct file *filep, unsigned int cmd,
>          case LIRC_SET_SEND_DUTY_CYCLE:
>                  retval = get_user(ivalue, (unsigned int *) arg);
>                  if (retval)
> -                       return reetval;
> +                       return retval;
>                  if (ivalue<= 0 || ivalue>  100)
>                          return -EINVAL;
>                  /* (ivalue/100)*(1000000/freq) */
> --
> 1.6.3.3
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
Manoj Iyer Dec. 8, 2009, 7 p.m. UTC | #2
Mario,

It is an item tracked on 
https://blueprints.launchpad.net/ubuntu/+spec/kernel-lucid-review-of-ubuntu-delta

The lirc package I co from cvs has drivers/ deamons/ tools/ etc, the 
drivers source points to header files as #include "../drivers/lirc.h" 
in our source tree, lirc is under ubuntu/lirc/ so those #includes had to 
be changed to #include "../lirc.h" etc.

I did check for progress of lirc on lkml & other lists, and got the 
feeling that it will not make 2.6.32. I saw the rfc from Jon Smirl about 
what in-kernel ir should do.

On Tue, 8 Dec 2009, Mario Limonciello wrote:

> Hi Manoj:
>
> Out of curiosity, what pre-empted this?  Was it not building anymore
> against 2.6.32?
>
> In case you haven't kept up, there is a lot of discussion going on right
> now on LKML about IR and LIRC.  Hopefully by the end of it, some form of
> it lands in staging at least (although the discussion is to move it into
> the kernel itself).
>
> Thanks,
>
> On 12/07/2009 07:08 PM, Manoj Iyer wrote:
>> Updated the lirc driver version to the latest cvs. I had to change the
>> makefiles and modify the source to point to the correct header files. The
>> source is set up to build under the lirc main tree, so had to modify few
>> things to make it to build under ubuntu/ There was no BOM file for this
>> driver so added a new one.
>>
>> Test kernel is avaiable for latest lucid kernel under:
>>
>> http://people.canonical.com/~manjo/lucid/lirc/
>>
>> Git commits can be pulled from:
>>
>> The following changes since commit
>> 802ec95236d5f995e04a16a7caa7f18e8360158d:
>>     Manoj Iyer (1):
>>           UBUNTU: Update lirc drivers to cvs version 2009.12.07
>>
>> are available in the git repository at:
>>
>>
>> ssh://zinc.canonical.com/srv/kernel.ubuntu.com/git/manjo/ubuntu-lucid.git
>> lirc
>>
>>
>> Changes from old version to 2009.12.07 cvs version are as follows:
>>
>>  From 802ec95236d5f995e04a16a7caa7f18e8360158d Mon Sep 17 00:00:00 2001
>> From: Manoj Iyer<manoj.iyer@canonical.com>
>> Date: Mon, 7 Dec 2009 18:54:32 -0600
>> Subject: [PATCH] UBUNTU: Update lirc drivers to cvs version 2009.12.07
>>
>> ExternalDriver: lirc
>> Description: drivers to decode and send infra-red signals of
>> many (but not all) commonly used remote controls.
>> Url: http://www.lirc.org/cvs.html
>> Mask:
>> Version: cvs version 2009.12.07
>>
>> Signed-off-by: Manoj Iyer<manoj.iyer@canonical.com>
>> ---
>>    debian.master/changelog                         |    2 +-
>>    ubuntu/lirc/BOM                                 |    3 ++
>>    ubuntu/lirc/kcompat.h                           |    8 +++++-
>>    ubuntu/lirc/lirc_bt829/lirc_bt829.c             |    4 +-
>>    ubuntu/lirc/lirc_dev/lirc_dev.c                 |    4 +-
>>    ubuntu/lirc/lirc_ene0100/lirc_ene0100.c         |    5 ++-
>>    ubuntu/lirc/lirc_i2c/lirc_i2c.c                 |    1 +
>>    ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c |    5 +---
>>    ubuntu/lirc/lirc_imon/lirc_imon.c               |   34 ++++++++++++-----------
>>    ubuntu/lirc/lirc_ite8709/lirc_ite8709.c         |    3 ++
>>    ubuntu/lirc/lirc_mceusb/lirc_mceusb.c           |   20 ++++++-------
>>    ubuntu/lirc/lirc_serial/lirc_serial.c           |    9 ++++++
>>    ubuntu/lirc/lirc_sir/lirc_sir.c                 |   12 +++++++-
>>    13 files changed, 70 insertions(+), 40 deletions(-)
>>    create mode 100644 ubuntu/lirc/BOM
>>
>> diff --git a/debian.master/changelog b/debian.master/changelog
>> index f8d90c2..a43058d 100644
>> --- a/debian.master/changelog
>> +++ b/debian.master/changelog
>> @@ -1,4 +1,4 @@
>> -linux (2.6.32-7.10) lucid; urgency=low
>> +linux (2.6.32-7.10~lirc1manjo1) lucid; urgency=low
>>
>>      [ Andy Whitcroft ]
>>
>> diff --git a/ubuntu/lirc/BOM b/ubuntu/lirc/BOM
>> new file mode 100644
>> index 0000000..49158e5
>> --- /dev/null
>> +++ b/ubuntu/lirc/BOM
>> @@ -0,0 +1,3 @@
>> +Downloaded from: cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
>> +Current Version: 2009.12.07
>> +Comments:       Fix up makefiles. Fix source code to point to hearder.
>> diff --git a/ubuntu/lirc/kcompat.h b/ubuntu/lirc/kcompat.h
>> index 1ede942..88f3f95 100644
>> --- a/ubuntu/lirc/kcompat.h
>> +++ b/ubuntu/lirc/kcompat.h
>> @@ -1,4 +1,4 @@
>> -/*      $Id: kcompat.h,v 5.44 2009/03/22 08:45:47 lirc Exp $      */
>> +/*      $Id: kcompat.h,v 5.45 2009/08/02 11:15:28 lirc Exp $      */
>>
>>    #ifndef _KCOMPAT_H
>>    #define _KCOMPAT_H
>> @@ -399,4 +399,10 @@ static inline unsigned iminor(struct inode *inode)
>>    }
>>    #endif
>>
>> +/****************************** bitops.h **********************************/
>> +#if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 24)
>> +#define BIT_MASK(nr)            (1UL<<  ((nr) % BITS_PER_LONG))
>> +#define BIT_WORD(nr)            ((nr) / BITS_PER_LONG)
>> +#endif
>> +
>>    #endif /* _KCOMPAT_H */
>> diff --git a/ubuntu/lirc/lirc_bt829/lirc_bt829.c b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
>> index d16e24c..c1d8630 100644
>> --- a/ubuntu/lirc/lirc_bt829/lirc_bt829.c
>> +++ b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
>> @@ -31,8 +31,8 @@
>>    #include<linux/pci.h>
>>    #include<linux/delay.h>
>>
>> -#include "../kcompat.h"
>> -#include "../lirc_dev/lirc_dev.h"
>> +#include "kcompat.h"
>> +#include "lirc_dev/lirc_dev.h"
>>
>>    static int poll_main(void);
>>    static int atir_init_start(void);
>> diff --git a/ubuntu/lirc/lirc_dev/lirc_dev.c b/ubuntu/lirc/lirc_dev/lirc_dev.c
>> index 7618c0a..e01cbed 100644
>> --- a/ubuntu/lirc/lirc_dev/lirc_dev.c
>> +++ b/ubuntu/lirc/lirc_dev/lirc_dev.c
>> @@ -61,7 +61,7 @@
>>    #include<linux/compat.h>
>>    #endif
>>
>> -#include "../kcompat.h"
>> +#include "kcompat.h"
>>
>>    /* SysFS header */
>>    #if defined(LIRC_HAVE_SYSFS)
>> @@ -69,7 +69,7 @@
>>    #endif
>>
>>    #include "../lirc.h"
>> -#include "lirc_dev.h"
>> +#include "../lirc_dev/lirc_dev.h"
>>
>>    static int debug;
>>    #define dprintk(fmt, args...)                                 \
>> diff --git a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
>> index da9519f..719e925 100644
>> --- a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
>> +++ b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
>> @@ -24,6 +24,7 @@
>>    #include<linux/pnp.h>
>>    #include<linux/io.h>
>>    #include<linux/interrupt.h>
>> +#include<linux/sched.h>
>>    #include "lirc_ene0100.h"
>>
>>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 16)
>> @@ -81,7 +82,7 @@ static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)
>>          if (dev->hw_revision<  ENE_HW_C) {
>>                  irq_status = ene_hw_read_reg(dev, ENEB_IRQ_STATUS);
>>
>> -               if (!irq_status&  ENEB_IRQ_STATUS_IR)
>> +               if (!(irq_status&  ENEB_IRQ_STATUS_IR))
>>                          return 0;
>>                  ene_hw_write_reg(dev, ENEB_IRQ_STATUS,
>>                                   irq_status&  ~ENEB_IRQ_STATUS_IR);
>> @@ -92,7 +93,7 @@ static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)
>>
>>          irq_status = ene_hw_read_reg(dev, ENEC_IRQ);
>>
>> -       if (!irq_status&&  ENEC_IRQ_STATUS)
>> +       if (!(irq_status&  ENEC_IRQ_STATUS))
>>                  return 0;
>>
>>          /* original driver does that twice - a workaround ? */
>> diff --git a/ubuntu/lirc/lirc_i2c/lirc_i2c.c b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
>> index dca6b51..247c9c6 100644
>> --- a/ubuntu/lirc/lirc_i2c/lirc_i2c.c
>> +++ b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
>> @@ -399,6 +399,7 @@ static struct i2c_driver driver = {
>>                  .name   = "i2c ir driver",
>>          },
>>    #endif
>> +       // .id          = I2C_DRIVERID_EXP3, /* FIXME */
>>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 31)
>>          .attach_adapter = ir_probe,
>>          .detach_client  = ir_remove,
>> diff --git a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
>> index 6705570..80e9506 100644
>> --- a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
>> +++ b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
>> @@ -363,7 +363,7 @@ static int usb_remote_poll(void *data, struct lirc_buffer *buf)
>>                                 "[%d]: SET_INFRABUFFER_EMPTY: error %d\n",
>>                                 ir->devnum, ret);
>>                  return 0;
>> -       } else
>> +       } else if (ret<  0)
>>                  printk(KERN_WARNING DRIVER_NAME
>>                         "[%d]: GET_INFRACODE: error %d\n",
>>                          ir->devnum, ret);
>> @@ -562,9 +562,6 @@ static void usb_remote_disconnect(struct usb_device *dev, void *ptr)
>>                 "[%d]: usb remote disconnected\n", ir->devnum);
>>
>>          lirc_unregister_driver(ir->d->minor);
>> -
>> -       lirc_buffer_free(ir->d->rbuf);
>> -       kfree(ir->d->rbuf);
>>          kfree(ir->d);
>>
>>
>> diff --git a/ubuntu/lirc/lirc_imon/lirc_imon.c b/ubuntu/lirc/lirc_imon/lirc_imon.c
>> index fcaa45f..0f45bd7 100644
>> --- a/ubuntu/lirc/lirc_imon/lirc_imon.c
>> +++ b/ubuntu/lirc/lirc_imon/lirc_imon.c
>> @@ -2,7 +2,7 @@
>>     *   lirc_imon.c:  LIRC/VFD/LCD driver for SoundGraph iMON IR/VFD/LCD
>>     *               including the iMON PAD model
>>     *
>> - *   $Id: lirc_imon.c,v 1.111 2009/09/11 04:56:18 jarodwilson Exp $
>> + *   $Id: lirc_imon.c,v 1.113 2009/10/30 04:00:30 jarodwilson Exp $
>>     *
>>     *   Copyright(C) 2004  Venky Raju(dev@venky.ws)
>>     *
>> @@ -565,7 +565,8 @@ static int display_close(struct inode *inode, struct file *file)
>>    }
>>
>>    /**
>> - * Sends a packet to the device
>> + * Sends a packet to the device -- this function must be called
>> + * with context->lock held.
>>     */
>>    static int send_packet(struct imon_context *context)
>>    {
>> @@ -743,7 +744,6 @@ static int send_set_imon_clock(struct imon_context *context,
>>                  return -ENODEV;
>>          }
>>
>> -
>>          for (i = 0; i<  IMON_CLOCK_ENABLE_PACKETS; i++) {
>>                  memcpy(context->usb_tx_buf, clock_enable_pkt[i], 8);
>>                  retval = send_packet(context);
>> @@ -755,7 +755,6 @@ static int send_set_imon_clock(struct imon_context *context,
>>          }
>>
>>          return retval;
>> -
>>    }
>>
>>    /**
>> @@ -1097,13 +1096,6 @@ static void imon_set_ir_protocol(struct imon_context *context)
>>
>>          switch (ir_protocol) {
>>          case IMON_IR_PROTOCOL_MCE:
>> -               /* MCE proto not supported on devices without tx control */
>> -               if (!context->tx_control) {
>> -                       printk(KERN_INFO "%s: MCE IR protocol not supported on "
>> -                              "this device, using iMON protocol\n", __func__);
>> -                       context->ir_protocol = IMON_IR_PROTOCOL_IMON;
>> -                       return;
>> -               }
>>                  dprintk("Configuring IR receiver for MCE protocol\n");
>>                  ir_proto_packet[0] = 0x01;
>>                  context->ir_protocol = IMON_IR_PROTOCOL_MCE;
>> @@ -1125,11 +1117,18 @@ static void imon_set_ir_protocol(struct imon_context *context)
>>                  context->ir_protocol = IMON_IR_PROTOCOL_IMON;
>>                  break;
>>          }
>> -       memcpy(context->usb_tx_buf,&ir_proto_packet,
>> -              sizeof(ir_proto_packet));
>> +
>> +       memcpy(context->usb_tx_buf,&ir_proto_packet, sizeof(ir_proto_packet));
>> +
>>          retval = send_packet(context);
>> -       if (retval)
>> -               printk(KERN_INFO "%s: failed to set remote type\n", __func__);
>> +       if (retval) {
>> +               printk(KERN_INFO "%s: failed to set IR protocol, falling back "
>> +                      "to standard iMON protocol mode\n", __func__);
>> +               ir_protocol = IMON_IR_PROTOCOL_IMON;
>> +               context->ir_protocol = IMON_IR_PROTOCOL_IMON;
>> +       }
>> +
>> +       return;
>>    }
>>
>>
>> @@ -1152,8 +1151,11 @@ static int ir_open(void *data)
>>          context->rx.prev_bit = 0;
>>
>>          /* set new IR protocol if it has changed since init or last open */
>> -       if (ir_protocol != context->ir_protocol)
>> +       if (ir_protocol != context->ir_protocol) {
>> +               mutex_lock(&context->lock);
>>                  imon_set_ir_protocol(context);
>> +               mutex_unlock(&context->lock);
>> +       }
>>
>>          context->ir_isopen = 1;
>>          printk(KERN_INFO MOD_NAME ": IR port opened\n");
>> diff --git a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
>> index bcbc2ad..4e0f766 100644
>> --- a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
>> +++ b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
>> @@ -21,6 +21,9 @@
>>
>>    #include<linux/version.h>
>>    #include<linux/module.h>
>> +#include<linux/interrupt.h>
>> +#include<linux/sched.h>
>> +#include<linux/delay.h>
>>    #include<linux/pnp.h>
>>    #if LINUX_VERSION_CODE<  KERNEL_VERSION(2, 6, 19)
>>    #include<asm/io.h>
>> diff --git a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
>> index 0851769..4a0c771 100644
>> --- a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
>> +++ b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
>> @@ -10,14 +10,9 @@
>>     * Copyright (c) 2003-2004 Dan Conti<dconti@acm.wwu.edu>
>>     *
>>     * Original lirc_mceusb driver deprecated in favor of this driver, which
>> - * supports the 1st-gen device now too. Transmitting on the 1st-gen device
>> - * only functions on port #2 at the moment.
>> - *
>> - * Support for 1st-gen device added June 2009,
>> - * by Jarod Wilson<jarod@wilsonet.com>
>> - *
>> - * Initial transmission support for 1st-gen device added August 2009,
>> - * by Patrick Calhoun<phineas@ou.edu>
>> + * supports the 1st-gen device now too. Transmit and receive support for
>> + * the 1st-gen device added June-September 2009,
>> + * by Jarod Wilson<jarod@wilsonet.com>  and Patrick Calhoun<phineas@ou.edu>
>>     *
>>     * Derived from ATI USB driver by Paul Miller and the original
>>     * MCE USB driver by Dan Conti ((and now including chunks of the latter
>> @@ -164,6 +159,8 @@ static struct usb_device_id mceusb_dev_table[] = {
>>          { USB_DEVICE(VENDOR_SMK, 0x0322) },
>>          /* bundled with Hauppauge PVR-150 */
>>          { USB_DEVICE(VENDOR_SMK, 0x0334) },
>> +       /* SMK eHome Infrared Transceiver */
>> +       { USB_DEVICE(VENDOR_SMK, 0x0338) },
>>          /* Tatung eHome Infrared Transceiver */
>>          { USB_DEVICE(VENDOR_TATUNG, 0x9150) },
>>          /* Shuttle eHome Infrared Transceiver */
>> @@ -237,6 +234,7 @@ static struct usb_device_id microsoft_gen1_list[] = {
>>    };
>>
>>    static struct usb_device_id transmitter_mask_list[] = {
>> +       { USB_DEVICE(VENDOR_MICROSOFT, 0x006d) },
>>          { USB_DEVICE(VENDOR_SMK, 0x031d) },
>>          { USB_DEVICE(VENDOR_SMK, 0x0322) },
>>          { USB_DEVICE(VENDOR_SMK, 0x0334) },
>> @@ -904,20 +902,20 @@ static int mceusb_gen1_init(struct mceusb_dev *ir)
>>          dprintk("%s - data[0] = %d, data[1] = %d\n",
>>                  __func__, data[0], data[1]);
>>
>> -       /* set feature */
>> +       /* set feature: bit rate 38400 bps */
>>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>>                                USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
>>                                0xc04e, 0x0000, NULL, 0, HZ * 3);
>>
>>          dprintk("%s - ret = %d\n", __func__, ret);
>>
>> -       /* strange: bRequest == 4 */
>> +       /* bRequest 4: set char length to 8 bits */
>>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>>                                4, USB_TYPE_VENDOR,
>>                                0x0808, 0x0000, NULL, 0, HZ * 3);
>>          dprintk("%s - retB = %d\n", __func__, ret);
>>
>> -       /* strange: bRequest == 2 */
>> +       /* bRequest 2: set handshaking to use DTR/DSR */
>>          ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
>>                                2, USB_TYPE_VENDOR,
>>                                0x0000, 0x0100, NULL, 0, HZ * 3);
>> diff --git a/ubuntu/lirc/lirc_serial/lirc_serial.c b/ubuntu/lirc/lirc_serial/lirc_serial.c
>> index 9b25e38..e506658 100644
>> --- a/ubuntu/lirc/lirc_serial/lirc_serial.c
>> +++ b/ubuntu/lirc/lirc_serial/lirc_serial.c
>> @@ -62,6 +62,15 @@
>>
>>    #include<linux/autoconf.h>
>>
>> +#if defined(CONFIG_SERIAL) || defined(CONFIG_SERIAL_8250)
>> +#warning "******************************************"
>> +#warning " Your serial port driver is compiled into "
>> +#warning " the kernel. You will have to release the "
>> +#warning " port you want to use for LIRC with:      "
>> +#warning "    setserial /dev/ttySx uart none   "
>> +#warning "******************************************"
>> +#endif
>> +
>>    #include<linux/module.h>
>>    #include<linux/errno.h>
>>    #include<linux/signal.h>
>> diff --git a/ubuntu/lirc/lirc_sir/lirc_sir.c b/ubuntu/lirc/lirc_sir/lirc_sir.c
>> index ac91ec7..becaff7 100644
>> --- a/ubuntu/lirc/lirc_sir/lirc_sir.c
>> +++ b/ubuntu/lirc/lirc_sir/lirc_sir.c
>> @@ -46,6 +46,16 @@
>>    #endif
>>
>>    #include<linux/autoconf.h>
>> +#if !defined(CONFIG_SERIAL_MODULE)
>> +#if !defined(LIRC_ON_SA1100)
>> +#warning "******************************************"
>> +#warning " Your serial port driver is compiled into "
>> +#warning " the kernel. You will have to release the "
>> +#warning " port you want to use for LIRC with:      "
>> +#warning "    setserial /dev/ttySx uart none        "
>> +#warning "******************************************"
>> +#endif
>> +#endif
>>
>>    #include<linux/sched.h>
>>    #include<linux/errno.h>
>> @@ -423,7 +433,7 @@ static int lirc_ioctl(struct inode *node, struct file *filep, unsigned int cmd,
>>          case LIRC_SET_SEND_DUTY_CYCLE:
>>                  retval = get_user(ivalue, (unsigned int *) arg);
>>                  if (retval)
>> -                       return reetval;
>> +                       return retval;
>>                  if (ivalue<= 0 || ivalue>  100)
>>                          return -EINVAL;
>>                  /* (ivalue/100)*(1000000/freq) */
>> --
>> 1.6.3.3
>>
>>
>> --
>> kernel-team mailing list
>> kernel-team@lists.ubuntu.com
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>>
>
> -- 
> Mario Limonciello
> *Dell | Linux Engineering*
> mario_limonciello@dell.com
>
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
Andy Whitcroft Dec. 9, 2009, 2:35 p.m. UTC | #3
On Mon, Dec 07, 2009 at 07:08:33PM -0600, Manoj Iyer wrote:
> 
> Updated the lirc driver version to the latest cvs. I had to change the 
> makefiles and modify the source to point to the correct header files. The 
> source is set up to build under the lirc main tree, so had to modify few 
> things to make it to build under ubuntu/ There was no BOM file for this 
> driver so added a new one.

Up to now we have been taking LIRC from official release tarballs.  A
quick look at the LIRC web-site seems to tell me that 0.8.6 is still the
current version of LIRC.  I think I am inclined to continue to stick
with those offical releases.

Mario, you are the primary driver behind LIRC being included what is
your feeling?

-apw
Mario Limonciello Dec. 9, 2009, 4:01 p.m. UTC | #4
Hi Andy:

On Wed, Dec 9, 2009 at 08:35, Andy Whitcroft <apw@canonical.com> wrote:

> On Mon, Dec 07, 2009 at 07:08:33PM -0600, Manoj Iyer wrote:
> >
> > Updated the lirc driver version to the latest cvs. I had to change the
> > makefiles and modify the source to point to the correct header files. The
> > source is set up to build under the lirc main tree, so had to modify few
> > things to make it to build under ubuntu/ There was no BOM file for this
> > driver so added a new one.
>
> Up to now we have been taking LIRC from official release tarballs.  A
> quick look at the LIRC web-site seems to tell me that 0.8.6 is still the
> current version of LIRC.  I think I am inclined to continue to stick
> with those offical releases.
>
> Mario, you are the primary driver behind LIRC being included what is
> your feeling?
>
> -apw
>

This is why I was asking if something has broken recently with the new
kernel.  I don't believe there is anything that will "break" currently by
going to CVS, but we don't need to take that chance in upgrading
unnecessarily.  There are a few commits i'd like to cherry pick here and
there for things I know about, but pulling everything out of band from a
release doesn't sound ideal to me.
Andy Whitcroft Dec. 9, 2009, 6:08 p.m. UTC | #5
On Wed, Dec 09, 2009 at 10:01:32AM -0600, Mario Limonciello wrote:
> Hi Andy:
> 
> On Wed, Dec 9, 2009 at 08:35, Andy Whitcroft <apw@canonical.com> wrote:
> 
> > On Mon, Dec 07, 2009 at 07:08:33PM -0600, Manoj Iyer wrote:
> > >
> > > Updated the lirc driver version to the latest cvs. I had to change the
> > > makefiles and modify the source to point to the correct header files. The
> > > source is set up to build under the lirc main tree, so had to modify few
> > > things to make it to build under ubuntu/ There was no BOM file for this
> > > driver so added a new one.
> >
> > Up to now we have been taking LIRC from official release tarballs.  A
> > quick look at the LIRC web-site seems to tell me that 0.8.6 is still the
> > current version of LIRC.  I think I am inclined to continue to stick
> > with those offical releases.
> >
> > Mario, you are the primary driver behind LIRC being included what is
> > your feeling?
> >
> > -apw
> >
> 
> This is why I was asking if something has broken recently with the new
> kernel.  I don't believe there is anything that will "break" currently by
> going to CVS, but we don't need to take that chance in upgrading
> unnecessarily.  There are a few commits i'd like to cherry pick here and
> there for things I know about, but pulling everything out of band from a
> release doesn't sound ideal to me.

Ok, I'll take that as a NAK on the update.  Please do get me the
proposed cherry-picks as soon as you can so we can get as much testing
time on them as possible.

Thanks.

-apw
diff mbox

Patch

diff --git a/debian.master/changelog b/debian.master/changelog
index f8d90c2..a43058d 100644
--- a/debian.master/changelog
+++ b/debian.master/changelog
@@ -1,4 +1,4 @@ 
-linux (2.6.32-7.10) lucid; urgency=low
+linux (2.6.32-7.10~lirc1manjo1) lucid; urgency=low

    [ Andy Whitcroft ]

diff --git a/ubuntu/lirc/BOM b/ubuntu/lirc/BOM
new file mode 100644
index 0000000..49158e5
--- /dev/null
+++ b/ubuntu/lirc/BOM
@@ -0,0 +1,3 @@ 
+Downloaded from: cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
+Current Version: 2009.12.07
+Comments: 	 Fix up makefiles. Fix source code to point to hearder.
diff --git a/ubuntu/lirc/kcompat.h b/ubuntu/lirc/kcompat.h
index 1ede942..88f3f95 100644
--- a/ubuntu/lirc/kcompat.h
+++ b/ubuntu/lirc/kcompat.h
@@ -1,4 +1,4 @@ 
-/*      $Id: kcompat.h,v 5.44 2009/03/22 08:45:47 lirc Exp $      */
+/*      $Id: kcompat.h,v 5.45 2009/08/02 11:15:28 lirc Exp $      */

  #ifndef _KCOMPAT_H
  #define _KCOMPAT_H
@@ -399,4 +399,10 @@  static inline unsigned iminor(struct inode *inode)
  }
  #endif

+/****************************** bitops.h **********************************/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
+#define BIT_MASK(nr)            (1UL << ((nr) % BITS_PER_LONG))
+#define BIT_WORD(nr)            ((nr) / BITS_PER_LONG)
+#endif
+
  #endif /* _KCOMPAT_H */
diff --git a/ubuntu/lirc/lirc_bt829/lirc_bt829.c b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
index d16e24c..c1d8630 100644
--- a/ubuntu/lirc/lirc_bt829/lirc_bt829.c
+++ b/ubuntu/lirc/lirc_bt829/lirc_bt829.c
@@ -31,8 +31,8 @@ 
  #include <linux/pci.h>
  #include <linux/delay.h>

-#include "../kcompat.h"
-#include "../lirc_dev/lirc_dev.h"
+#include "kcompat.h"
+#include "lirc_dev/lirc_dev.h"

  static int poll_main(void);
  static int atir_init_start(void);
diff --git a/ubuntu/lirc/lirc_dev/lirc_dev.c b/ubuntu/lirc/lirc_dev/lirc_dev.c
index 7618c0a..e01cbed 100644
--- a/ubuntu/lirc/lirc_dev/lirc_dev.c
+++ b/ubuntu/lirc/lirc_dev/lirc_dev.c
@@ -61,7 +61,7 @@ 
  #include <linux/compat.h>
  #endif

-#include "../kcompat.h"
+#include "kcompat.h"

  /* SysFS header */
  #if defined(LIRC_HAVE_SYSFS)
@@ -69,7 +69,7 @@ 
  #endif

  #include "../lirc.h"
-#include "lirc_dev.h"
+#include "../lirc_dev/lirc_dev.h"

  static int debug;
  #define dprintk(fmt, args...)					\
diff --git a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
index da9519f..719e925 100644
--- a/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
+++ b/ubuntu/lirc/lirc_ene0100/lirc_ene0100.c
@@ -24,6 +24,7 @@ 
  #include <linux/pnp.h>
  #include <linux/io.h>
  #include <linux/interrupt.h>
+#include <linux/sched.h>
  #include "lirc_ene0100.h"

  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
@@ -81,7 +82,7 @@  static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)
  	if (dev->hw_revision < ENE_HW_C) {
  		irq_status = ene_hw_read_reg(dev, ENEB_IRQ_STATUS);

-		if (!irq_status & ENEB_IRQ_STATUS_IR)
+		if (!(irq_status & ENEB_IRQ_STATUS_IR))
  			return 0;
  		ene_hw_write_reg(dev, ENEB_IRQ_STATUS,
  				 irq_status & ~ENEB_IRQ_STATUS_IR);
@@ -92,7 +93,7 @@  static int ene_hw_irq_status(struct ene_device *dev, int *buffer_pointer)

  	irq_status = ene_hw_read_reg(dev, ENEC_IRQ);

-	if (!irq_status && ENEC_IRQ_STATUS)
+	if (!(irq_status & ENEC_IRQ_STATUS))
  		return 0;

  	/* original driver does that twice - a workaround ? */
diff --git a/ubuntu/lirc/lirc_i2c/lirc_i2c.c b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
index dca6b51..247c9c6 100644
--- a/ubuntu/lirc/lirc_i2c/lirc_i2c.c
+++ b/ubuntu/lirc/lirc_i2c/lirc_i2c.c
@@ -399,6 +399,7 @@  static struct i2c_driver driver = {
  		.name	= "i2c ir driver",
  	},
  #endif
+	// .id		= I2C_DRIVERID_EXP3, /* FIXME */
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
  	.attach_adapter	= ir_probe,
  	.detach_client	= ir_remove,
diff --git a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
index 6705570..80e9506 100644
--- a/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
+++ b/ubuntu/lirc/lirc_igorplugusb/lirc_igorplugusb.c
@@ -363,7 +363,7 @@  static int usb_remote_poll(void *data, struct lirc_buffer *buf)
  			       "[%d]: SET_INFRABUFFER_EMPTY: error %d\n",
  			       ir->devnum, ret);
  		return 0;
-	} else
+	} else if (ret < 0)
  		printk(KERN_WARNING DRIVER_NAME
  		       "[%d]: GET_INFRACODE: error %d\n",
  			ir->devnum, ret);
@@ -562,9 +562,6 @@  static void usb_remote_disconnect(struct usb_device *dev, void *ptr)
  	       "[%d]: usb remote disconnected\n", ir->devnum);

  	lirc_unregister_driver(ir->d->minor);
-
-	lirc_buffer_free(ir->d->rbuf);
-	kfree(ir->d->rbuf);
  	kfree(ir->d);


diff --git a/ubuntu/lirc/lirc_imon/lirc_imon.c b/ubuntu/lirc/lirc_imon/lirc_imon.c
index fcaa45f..0f45bd7 100644
--- a/ubuntu/lirc/lirc_imon/lirc_imon.c
+++ b/ubuntu/lirc/lirc_imon/lirc_imon.c
@@ -2,7 +2,7 @@ 
   *   lirc_imon.c:  LIRC/VFD/LCD driver for SoundGraph iMON IR/VFD/LCD
   *		   including the iMON PAD model
   *
- *   $Id: lirc_imon.c,v 1.111 2009/09/11 04:56:18 jarodwilson Exp $
+ *   $Id: lirc_imon.c,v 1.113 2009/10/30 04:00:30 jarodwilson Exp $
   *
   *   Copyright(C) 2004  Venky Raju(dev@venky.ws)
   *
@@ -565,7 +565,8 @@  static int display_close(struct inode *inode, struct file *file)
  }

  /**
- * Sends a packet to the device
+ * Sends a packet to the device -- this function must be called
+ * with context->lock held.
   */
  static int send_packet(struct imon_context *context)
  {
@@ -743,7 +744,6 @@  static int send_set_imon_clock(struct imon_context *context,
  		return -ENODEV;
  	}

-
  	for (i = 0; i < IMON_CLOCK_ENABLE_PACKETS; i++) {
  		memcpy(context->usb_tx_buf, clock_enable_pkt[i], 8);
  		retval = send_packet(context);
@@ -755,7 +755,6 @@  static int send_set_imon_clock(struct imon_context *context,
  	}

  	return retval;
-
  }

  /**
@@ -1097,13 +1096,6 @@  static void imon_set_ir_protocol(struct imon_context *context)

  	switch (ir_protocol) {
  	case IMON_IR_PROTOCOL_MCE:
-		/* MCE proto not supported on devices without tx control */
-		if (!context->tx_control) {
-			printk(KERN_INFO "%s: MCE IR protocol not supported on "
-			       "this device, using iMON protocol\n", __func__);
-			context->ir_protocol = IMON_IR_PROTOCOL_IMON;
-			return;
-		}
  		dprintk("Configuring IR receiver for MCE protocol\n");
  		ir_proto_packet[0] = 0x01;
  		context->ir_protocol = IMON_IR_PROTOCOL_MCE;
@@ -1125,11 +1117,18 @@  static void imon_set_ir_protocol(struct imon_context *context)
  		context->ir_protocol = IMON_IR_PROTOCOL_IMON;
  		break;
  	}
-	memcpy(context->usb_tx_buf, &ir_proto_packet,
-	       sizeof(ir_proto_packet));
+
+	memcpy(context->usb_tx_buf, &ir_proto_packet, sizeof(ir_proto_packet));
+
  	retval = send_packet(context);
-	if (retval)
-		printk(KERN_INFO "%s: failed to set remote type\n", __func__);
+	if (retval) {
+		printk(KERN_INFO "%s: failed to set IR protocol, falling back "
+		       "to standard iMON protocol mode\n", __func__);
+		ir_protocol = IMON_IR_PROTOCOL_IMON;
+		context->ir_protocol = IMON_IR_PROTOCOL_IMON;
+	}
+
+	return;
  }


@@ -1152,8 +1151,11 @@  static int ir_open(void *data)
  	context->rx.prev_bit = 0;

  	/* set new IR protocol if it has changed since init or last open */
-	if (ir_protocol != context->ir_protocol)
+	if (ir_protocol != context->ir_protocol) {
+		mutex_lock(&context->lock);
  		imon_set_ir_protocol(context);
+		mutex_unlock(&context->lock);
+	}

  	context->ir_isopen = 1;
  	printk(KERN_INFO MOD_NAME ": IR port opened\n");
diff --git a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
index bcbc2ad..4e0f766 100644
--- a/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
+++ b/ubuntu/lirc/lirc_ite8709/lirc_ite8709.c
@@ -21,6 +21,9 @@ 

  #include <linux/version.h>
  #include <linux/module.h>
+#include <linux/interrupt.h>
+#include <linux/sched.h>
+#include <linux/delay.h>
  #include <linux/pnp.h>
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
  #include <asm/io.h>
diff --git a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
index 0851769..4a0c771 100644
--- a/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
+++ b/ubuntu/lirc/lirc_mceusb/lirc_mceusb.c
@@ -10,14 +10,9 @@ 
   * Copyright (c) 2003-2004 Dan Conti <dconti@acm.wwu.edu>
   *
   * Original lirc_mceusb driver deprecated in favor of this driver, which
- * supports the 1st-gen device now too. Transmitting on the 1st-gen device
- * only functions on port #2 at the moment.
- *
- * Support for 1st-gen device added June 2009,
- * by Jarod Wilson <jarod@wilsonet.com>
- *
- * Initial transmission support for 1st-gen device added August 2009,
- * by Patrick Calhoun <phineas@ou.edu>
+ * supports the 1st-gen device now too. Transmit and receive support for
+ * the 1st-gen device added June-September 2009,
+ * by Jarod Wilson <jarod@wilsonet.com> and Patrick Calhoun <phineas@ou.edu>
   *
   * Derived from ATI USB driver by Paul Miller and the original
   * MCE USB driver by Dan Conti ((and now including chunks of the latter
@@ -164,6 +159,8 @@  static struct usb_device_id mceusb_dev_table[] = {
  	{ USB_DEVICE(VENDOR_SMK, 0x0322) },
  	/* bundled with Hauppauge PVR-150 */
  	{ USB_DEVICE(VENDOR_SMK, 0x0334) },
+	/* SMK eHome Infrared Transceiver */
+	{ USB_DEVICE(VENDOR_SMK, 0x0338) },
  	/* Tatung eHome Infrared Transceiver */
  	{ USB_DEVICE(VENDOR_TATUNG, 0x9150) },
  	/* Shuttle eHome Infrared Transceiver */
@@ -237,6 +234,7 @@  static struct usb_device_id microsoft_gen1_list[] = {
  };

  static struct usb_device_id transmitter_mask_list[] = {
+	{ USB_DEVICE(VENDOR_MICROSOFT, 0x006d) },
  	{ USB_DEVICE(VENDOR_SMK, 0x031d) },
  	{ USB_DEVICE(VENDOR_SMK, 0x0322) },
  	{ USB_DEVICE(VENDOR_SMK, 0x0334) },
@@ -904,20 +902,20 @@  static int mceusb_gen1_init(struct mceusb_dev *ir)
  	dprintk("%s - data[0] = %d, data[1] = %d\n",
  		__func__, data[0], data[1]);

-	/* set feature */
+	/* set feature: bit rate 38400 bps */
  	ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
  			      USB_REQ_SET_FEATURE, USB_TYPE_VENDOR,
  			      0xc04e, 0x0000, NULL, 0, HZ * 3);

  	dprintk("%s - ret = %d\n", __func__, ret);

-	/* strange: bRequest == 4 */
+	/* bRequest 4: set char length to 8 bits */
  	ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
  			      4, USB_TYPE_VENDOR,
  			      0x0808, 0x0000, NULL, 0, HZ * 3);
  	dprintk("%s - retB = %d\n", __func__, ret);

-	/* strange: bRequest == 2 */
+	/* bRequest 2: set handshaking to use DTR/DSR */
  	ret = usb_control_msg(ir->usbdev, usb_sndctrlpipe(ir->usbdev, 0),
  			      2, USB_TYPE_VENDOR,
  			      0x0000, 0x0100, NULL, 0, HZ * 3);
diff --git a/ubuntu/lirc/lirc_serial/lirc_serial.c b/ubuntu/lirc/lirc_serial/lirc_serial.c
index 9b25e38..e506658 100644
--- a/ubuntu/lirc/lirc_serial/lirc_serial.c
+++ b/ubuntu/lirc/lirc_serial/lirc_serial.c
@@ -62,6 +62,15 @@ 

  #include <linux/autoconf.h>

+#if defined(CONFIG_SERIAL) || defined(CONFIG_SERIAL_8250)
+#warning "******************************************"
+#warning " Your serial port driver is compiled into "
+#warning " the kernel. You will have to release the "
+#warning " port you want to use for LIRC with:      "
+#warning "    setserial /dev/ttySx uart none	"
+#warning "******************************************"
+#endif
+
  #include <linux/module.h>
  #include <linux/errno.h>
  #include <linux/signal.h>
diff --git a/ubuntu/lirc/lirc_sir/lirc_sir.c b/ubuntu/lirc/lirc_sir/lirc_sir.c
index ac91ec7..becaff7 100644
--- a/ubuntu/lirc/lirc_sir/lirc_sir.c
+++ b/ubuntu/lirc/lirc_sir/lirc_sir.c
@@ -46,6 +46,16 @@ 
  #endif

  #include <linux/autoconf.h>
+#if !defined(CONFIG_SERIAL_MODULE)
+#if !defined(LIRC_ON_SA1100)
+#warning "******************************************"
+#warning " Your serial port driver is compiled into "
+#warning " the kernel. You will have to release the "
+#warning " port you want to use for LIRC with:      "
+#warning "    setserial /dev/ttySx uart none        "
+#warning "******************************************"
+#endif
+#endif

  #include <linux/sched.h>
  #include <linux/errno.h>
@@ -423,7 +433,7 @@  static int lirc_ioctl(struct inode *node, struct file *filep, unsigned int cmd,
  	case LIRC_SET_SEND_DUTY_CYCLE:
  		retval = get_user(ivalue, (unsigned int *) arg);
  		if (retval)
-			return reetval;
+			return retval;
  		if (ivalue <= 0 || ivalue > 100)
  			return -EINVAL;
  		/* (ivalue/100)*(1000000/freq) */