--- /usr/src/lirc-0.8.7/drivers/lirc_igorplugusb/lirc_igorplugusb.c.orig 2011-05-03 19:36:51.784715694 +0200 +++ /usr/src/lirc-0.8.7/drivers/lirc_igorplugusb/lirc_igorplugusb.c 2011-05-03 22:07:27.695835966 +0200 @@ -71,7 +71,7 @@ #endif /* module identification */ -#define DRIVER_VERSION "0.2" +#define DRIVER_VERSION "0.2rk" #define DRIVER_AUTHOR \ "Jan M. Hochstein " #define DRIVER_DESC "USB remote driver for LIRC" @@ -105,7 +105,7 @@ #define DEVICE_HEADERLEN 3 /* This is for the gap */ -#define ADDITIONAL_LIRC_BYTES 2 +#define ADDITIONAL_LIRC_CODES 2 /* times to poll per second */ #define SAMPLE_RATE 100 @@ -281,7 +281,7 @@ ir->last_time.tv_usec += code; if (ir->in_space) code |= PULSE_BIT; - lirc_buffer_write_n(buf, (unsigned char *)&code, 1); + lirc_buffer_write(buf, (unsigned char *)&code); /* 1 chunk = CODE_LENGTH bytes */ ir->in_space ^= 1; ++i; @@ -340,8 +340,8 @@ if (ir->buf_in[2] == 0) send_fragment(ir, buf, DEVICE_HEADERLEN, ret); else { - printk(KERN_WARNING DRIVER_NAME - "[%d]: Device buffer overrun.\n", ir->devnum); +// printk(KERN_WARNING DRIVER_NAME +// "[%d]: Device buffer overrun (%d/%d/%d).\n", ir->devnum, ir->buf_in[0], ir->buf_in[1], ir->buf_in[2]); /* HHHNNNNNNNNNNNOOOOOOOO H = header <---[2]---> N = newer <---------ret--------> O = older */ @@ -469,7 +469,7 @@ driver->code_length = CODE_LENGTH * 8; /* in bits */ driver->features = LIRC_CAN_REC_MODE2; driver->data = ir; - driver->buffer_size = DEVICE_BUFLEN + ADDITIONAL_LIRC_BYTES; + driver->buffer_size = CODE_LENGTH * (DEVICE_BUFLEN + ADDITIONAL_LIRC_CODES); driver->set_use_inc = &set_use_inc; driver->set_use_dec = &set_use_dec; driver->sample_rate = sample_rate; /* per second */