Log:

 *	* 20010927 (v0.01b) : Device probing, configuration, claiming.
 *      * 20010927 (v0.02b) : Bumped MAXTIGL from 1 to 16.
 *      * 20010929 (v0.03b) : - Added a semaphore to tiglusb_t
 *                            - Added the support for this semaphore
 *      * 20010929 (v0.04b) : After probing the device, we use the remote
 *                            control protocol to display the letter 'A'
 *                            on the screen. This was only a test to confirm
 *                            that we only need to send the raw TI protocol
 *                            to the bulk endpoint 2.
 *      * 20010930 (v0.05b) : Added devfs support.
 *      * 20010930 (v0.06b) : First implementation of the *_fops_* functions.
 *                            Not tested yet. Probably buggy :] Well, it 
 *                            actually kills the kernel :P
 *      * 20010930 (v0.07b) : Does not kill the kernel anymore when reading the
 *                            answer from the calc at probe (for devel. only).
 *                            The crash was due to the change of the interrupt
 *                            callback (used in the tiglusb_fops_open() 
 *                            function, and thus modified), so there's now a
 *                            bulk_tmp_rcv_int_complete() function that is used
 *                            only during the probe (this is for devel only, as
 *                            said earlier).
 *      * 20010930 (v0.08b) : Initialize the interrupt bulk IN before sending
 *                            any data to the calc (already done for the normal
 *                            code via the tiglusb_fops_open() function) in the
 *                            probe function.
 *      * 20011002 (v0.09b) : It works *really* better when the f*cking context
 *                            pointer is actually initialized in the INT_URB
 *                            (in tiglusb_fops_open).
 *      * 20011002 (v0.10b) : Changed down() to down_interruptible() in 
 *                            tiglusb_fops_read().
 *      * 20011002 (v0.10b) : - Do not lock the mutex in tiglusb_fops_read()
 *                            - Added a remove_pending variable to the struct
 *                            - Check for remove_pending in tiglusb_fops_read()
 *                            - Wake up tiglusb_fops_read() in 
 *                            tiglusb_disconnect() after setting 
 *                            remove_pending.
 *                            - tiglusb_fops_write() seems to work as expected.
 *                            - tiglusb_fops_read() could work as expected, 
 *                            but not in NON_BLOCK mode.
 *                            - Maybe add a mutex preventing 
 *                            tiglusb_disconnect() to disconnect the device if
 *                            some operations are not terminated.
 *     * 20011004 (v0.11b) : Rewritten the for() loop in tiglusb_fops_read().
 *                           As a consequence, I can't crash the kernel anymore
 *                           by Ctrl-C'ing a tail -f on /dev/usb/tigl0 and then
 *                           disconnecting the device.
 *                           Unfortunately on disconnect(), the loop 
 *                           continues...
 *                           in other words, there's a bug :P
 *     * 20011004 (v0.12b) : - Some changes to tiglusb_fops_read(), in the way
 *                           we handle 0_NONBLOCK. (namely, changed labels 
 *                           and gotos).
 *                           - Fixed the interrupt callback to actually update
 *                           s->rcv_pos...
 *                           - Added a check in tiglusb_fops_read() to verify 
 *                           that u != s->rcv_pos after wake up. If not, we've
 *                           probably been woken up by the kernel, so abort 
 *                           the read();
 *     * 20011004 (v0.13b) : Do not rely on *ppos in tiglusb_fops_read(), it 
 *                           would become meaningless when a read() is aborted.
 *     * 20011006 (v0.14b) : - Do not use FILL_INT_URB, we don't need that, 
 *                           and it does not work with our device. It only 
 *                           helps crahsing the kernel.
 *                           - Changed FILL_INT_URB to FILL_BULK_URB in 
 *                           tiglusb_fops_open(), renamed rcv_int_urb to 
 *                           rcv_in_urb, s->first_rcv_int_urb becomes
 *                           s->rcv_in_urb.
 *     * 20011006 (v0.15b) : - in write() we must use endpoint 2, not 1.
 *                           - in write() we must use usb_sndbulkpipe(), not
 *                           usb_rcvbulkpipe().
 *                           - in disconnect(), use down_interruptible().
 *                           - renamed bulk_rcv_int_complete() (see below).
 *                           - do not lock the mutex in bulk_rcv_complete().
 *                           - removed unused snd_buf and snd_pos from s.
 *     * 20011007 (v0.16b) : - added s->read_rcv_pos, do not rely on *ppos at
 *                           all in tiglusb_fops_read(). Pisses me off.
 *                           - fixed the case where u == rcv_pos in 
 *                           tiglusb_fops_read()

- 12/10/2001, version 0.17:
	Source code completely rewritten from scratch (previous version 
	placed in old directory)
	Driver works fine.
	Ioctl & lseek entry functions added for getting/setting timeout and 
	resetting device

- 31/12/2001, version 0.18:
	Use IOCTL in libticables for resetting both endpoints -> works fine. 
	The driver can be considered as stable.

- 17/03/2002, version 0.19:
        Clean-up for LKML submit.

- 22/03/2002, version 0.20 -> 1.00:
	Clean-up.
	Trying to add a quirk workaround (currently implemented in libticables
	because common to all platforms)...

- 26/03/2002, version 1.01:
        I received officially allocated device numbers (John Cagle).
	Source code slightly modified since we do not register our module under
	the USB tree (major 180).

- 31/03/2002, version 1.02:
	Changed error codes (USB_ST_TIMEOUT) for 2.5 kernels.

- 02/04/2002, version 1.03:
	Submitted to Greg KH, the Linux USB maintainer. Currently placed in
	the BitKeeper as well as ticable.h. Modified by Greg.